Name: series-workflowpp4h6 Phase: Succeeded StartedAt: 2026-08-13 16:13:04 +0000 UTC FinishedAt: 2026-08-13 21:06:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpp4h6[0] Phase: Succeeded StartedAt: 2026-08-13 16:13:04 +0000 UTC FinishedAt: 2026-08-13 17:16:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpp4h6[0].run-triage Phase: Succeeded StartedAt: 2026-08-13 16:13:04 +0000 UTC FinishedAt: 2026-08-13 17:16:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "a275b5bfc9ee29b7eeef4ee6a635ac5461290df4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "a275b5bfc9ee29b7eeef4ee6a635ac5461290df4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK" ], "series_id": "a91035ca-5eba-44f1-bfcd-abd8a73206ed" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE3OjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBudWxsX2JsayBkcml2ZXIgYnkgdGFraW5nIGEgZ2xvYmFsIG11dGV4IHdoZW4gdXBkYXRpbmcgZGV2aWNlIGF0dHJpYnV0ZXMgdmlhIGNvbmZpZ2ZzLiBJdCBhbHNvIGNoYW5nZXMgdGhlIG11dGV4IGluaXRpYWxpemF0aW9uIHRvIHVzZSBERUZJTkVfTVVURVguIFRoZXNlIGNoYW5nZXMgYWRkcmVzcyBjb25jdXJyZW5jeSBpc3N1ZXMgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBBbnkgbG9ja2luZyBpc3N1ZXMgb3IgcmFjZSBjb25kaXRpb25zIHdvdWxkIGJlIGNhdWdodCBieSBMT0NLREVQIG9yIEtDU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBudWxsX2JsayBkcml2ZXImIzM5O3MgY29uZmlnZnMgaW50ZXJmYWNlIGJ5IGFkZGluZyBsb2NraW5nIHRvIGRldmljZSBhdHRyaWJ1dGUgbW9kaWZpY2F0aW9ucy4gVGhpcyBwcmV2ZW50cyBhdHRyaWJ1dGVzIGZyb20gYmVpbmcgY2hhbmdlZCBjb25jdXJyZW50bHkgd2l0aCBkZXZpY2UgYWRkaXRpb24vcmVtb3ZhbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNzoxNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ2ODRmZDgyYmY0MTJjNDI5NWQ0MDk4YjQ3ZDA1YTJhMTg5OWJjYWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAxNzoxNDo1MCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5pbmRleCBmOGMwZmQ1N2UwNDFhLi4yZThmOTk4NzM5NTY4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5AQCAtNjYsNyAmIzQzOzY2LDcgQEAgc3RydWN0IG51bGxiX3BhZ2Uge1xuICNkZWZpbmUgTlVMTEJfUEFHRV9GUkVFIChNQVBfU1ogLSAyKVxuIFxuIHN0YXRpYyBMSVNUX0hFQUQobnVsbGJfbGlzdCk7XG4tc3RhdGljIHN0cnVjdCBtdXRleCBsb2NrO1xuJiM0MztzdGF0aWMgREVGSU5FX01VVEVYKGxvY2spO1xuIHN0YXRpYyBpbnQgbnVsbF9tYWpvcjtcbiBzdGF0aWMgREVGSU5FX0lEQShudWxsYl9pbmRleGVzKTtcbiBzdGF0aWMgc3RydWN0IGJsa19tcV90YWdfc2V0IHRhZ19zZXQ7XG5AQCAtMzQwLDcgJiM0MzszNDAsMTUgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsXG4gXHRyZXR1cm4gY291bnQ7XG4gfVxuIFxuLS8qIFRoZSBmb2xsb3dpbmcgbWFjcm8gc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoIFRZUEUgPSB7dWludCwgdWxvbmcsIGJvb2x9LiAqL1xuJiM0MzsvKlxuJiM0MzsgKiBUaGUgZm9sbG93aW5nIG1hY3JvIHNob3VsZCBvbmx5IGJlIHVzZWQgd2l0aCBUWVBFID0ge3VpbnQsIHVsb25nLCBib29sfS5cbiYjNDM7ICpcbiYjNDM7ICogVGhlIGRldmljZSBjb25maWd1cmF0aW9uIGlzIG1vZGlmaWVkIHVuZGVyIHRoZSBnbG9iYWwgbG9jayB0byBzZXJpYWxpemVcbiYjNDM7ICogYXR0cmlidXRlIGNoYW5nZXMgYWdhaW5zdCBudWxsX2FkZF9kZXYoKSBhbmQgbnVsbF9kZWxfZGV2KCk6IHdpdGhvdXQgdGhpcyxcbiYjNDM7ICogYW4gYXR0cmlidXRlIGNvdWxkIGJlIGNoYW5nZWQgd2hpbGUgbnVsbF9hZGRfZGV2KCkgaXMgcnVubmluZywgdGhhdCBpcyxcbiYjNDM7ICogYmVmb3JlIE5VTExCX0RFVl9GTF9DT05GSUdVUkVEIGlzIHNldCwgd2hpY2ggd291bGQgbGV0IG51bGxfYWRkX2RldigpXG4mIzQzOyAqIG9ic2VydmUgaW5jb25zaXN0ZW50IHZhbHVlcyBmb3IgdGhlIGRldmljZSBjb25maWd1cmF0aW9uLlxuJiM0MzsgKi9cbiAjZGVmaW5lIE5VTExCX0RFVklDRV9BVFRSKE5BTUUsIFRZUEUsIEFQUExZKVx0XHRcdFx0XFxcbiBzdGF0aWMgc3NpemVfdFx0XHRcdFx0XHRcdFx0XHRcXFxuIG51bGxiX2RldmljZV8jI05BTUUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcdFxcXG5AQCAtMzYwLDEzICYjNDM7MzY4LDE2IEBAIG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNvbnN0IGNoYXIgKnBhZ2UsXHRcXFxuIFx0cmV0ID0gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc3RvcmUoXHUwMDI2bmV3X3ZhbHVlLCBwYWdlLCBjb3VudCk7XFxcbiBcdGlmIChyZXQgXHUwMDNjIDApXHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRyZXR1cm4gcmV0O1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcdFx0XHRcdFx0XHRcXFxuIFx0aWYgKGFwcGx5X2ZuKVx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0cmV0ID0gYXBwbHlfZm4oZGV2LCBuZXdfdmFsdWUpO1x0XHRcdFx0XFxcbiBcdGVsc2UgaWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpKSBcdFxcXG4gXHRcdHJldCA9IC1FQlVTWTtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGlmIChyZXQgXHUwMDNlPSAwKVx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdGRldi1cdTAwM2VOQU1FID0gbmV3X3ZhbHVlO1x0XHRcdFx0XHRcXFxuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcdFx0XHRcdFx0XHRcXFxuIFx0aWYgKHJldCBcdTAwM2MgMClcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdHJldHVybiByZXQ7XHRcdFx0XHRcdFx0XFxcbi1cdGRldi1cdTAwM2VOQU1FID0gbmV3X3ZhbHVlO1x0XHRcdFx0XHRcdFxcXG4gXHRyZXR1cm4gY291bnQ7XHRcdFx0XHRcdFx0XHRcXFxuIH1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuIENPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgTkFNRSk7XG5AQCAtMzc5LDYgJiM0MzszOTAsOCBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0c3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQ7XG4gXHRpbnQgcmV0LCBucl9od19xdWV1ZXM7XG4gXG4mIzQzO1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZsb2NrKTtcbiYjNDM7XG4gXHRpZiAoIWRldi1cdTAwM2VudWxsYilcbiBcdFx0cmV0dXJuIDA7XG4gXG5AQCAtNDIxLDI1ICYjNDM7NDM0LDEzIEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4gc3RhdGljIGludCBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgICAgdW5zaWduZWQgaW50IHN1Ym1pdF9xdWV1ZXMpXG4ge1xuLVx0aW50IHJldDtcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4tXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LVx1MDAzZXBvbGxfcXVldWVzKTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbi1cbi1cdHJldHVybiByZXQ7XG4mIzQzO1x0cmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtXHUwMDNlcG9sbF9xdWV1ZXMpO1xuIH1cbiBcbiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3BvbGxfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgIHVuc2lnbmVkIGludCBwb2xsX3F1ZXVlcylcbiB7XG4tXHRpbnQgcmV0O1xuLVxuLVx0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbi1cdHJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuLVxuLVx0cmV0dXJuIHJldDtcbiYjNDM7XHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi1cdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XG4gfVxuIFxuIE5VTExCX0RFVklDRV9BVFRSKHNpemUsIHVsb25nLCBOVUxMKTtcbkBAIC0yMTY2LDggJiM0MzsyMTY3LDYgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0bXV0ZXhfaW5pdChcdTAwMjZsb2NrKTtcbi1cbiBcdG51bGxfbWFqb3IgPSByZWdpc3Rlcl9ibGtkZXYoMCwgXCYjMzQ7bnVsbGJcJiMzNDspO1xuIFx0aWYgKG51bGxfbWFqb3IgXHUwMDNjIDApIHtcbiBcdFx0cmV0ID0gbnVsbF9tYWpvcjtcbkBAIC0yMjExLDggJiM0MzsyMjEwLDYgQEAgc3RhdGljIHZvaWQgX19leGl0IG51bGxfZXhpdCh2b2lkKVxuIFxuIFx0aWYgKHRhZ19zZXQub3BzKVxuIFx0XHRibGtfbXFfZnJlZV90YWdfc2V0KFx1MDAyNnRhZ19zZXQpO1xuLVxuLVx0bXV0ZXhfZGVzdHJveShcdTAwMjZsb2NrKTtcbiB9XG4gXG4gbW9kdWxlX2luaXQobnVsbF9pbml0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNzoxNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9OVUxMX0JMSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBudWxsX2JsayBkcml2ZXImIzM5O3MgY29uZmlnZnMgaW50ZXJmYWNlIGJ5IGFkZGluZyBsb2NraW5nIHRvIGRldmljZSBhdHRyaWJ1dGUgbW9kaWZpY2F0aW9ucy4gVGhpcyBwcmV2ZW50cyBhdHRyaWJ1dGVzIGZyb20gYmVpbmcgY2hhbmdlZCBjb25jdXJyZW50bHkgd2l0aCBkZXZpY2UgYWRkaXRpb24vcmVtb3ZhbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDQ2ODRmZDgyYmY0MTJjNDI5NWQ0MDk4YjQ3ZDA1YTJhMTg5OWJjYWQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAxMyAxNzoxNDo1MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKaW5kZXggZjhjMGZkNTdlMDQxYS4uMmU4Zjk5ODczOTU2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKQEAgLTY2LDcgJiM0Mzs2Niw3IEBAIHN0cnVjdCBudWxsYl9wYWdlIHsKICNkZWZpbmUgTlVMTEJfUEFHRV9GUkVFIChNQVBfU1ogLSAyKQogCiBzdGF0aWMgTElTVF9IRUFEKG51bGxiX2xpc3QpOwotc3RhdGljIHN0cnVjdCBtdXRleCBsb2NrOwomIzQzO3N0YXRpYyBERUZJTkVfTVVURVgobG9jayk7CiBzdGF0aWMgaW50IG51bGxfbWFqb3I7CiBzdGF0aWMgREVGSU5FX0lEQShudWxsYl9pbmRleGVzKTsKIHN0YXRpYyBzdHJ1Y3QgYmxrX21xX3RhZ19zZXQgdGFnX3NldDsKQEAgLTM0MCw3ICYjNDM7MzQwLDE1IEBAIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9ib29sX2F0dHJfc3RvcmUoYm9vbCAqdmFsLCBjb25zdCBjaGFyICpwYWdlLAogCXJldHVybiBjb3VudDsKIH0KIAotLyogVGhlIGZvbGxvd2luZyBtYWNybyBzaG91bGQgb25seSBiZSB1c2VkIHdpdGggVFlQRSA9IHt1aW50LCB1bG9uZywgYm9vbH0uICovCiYjNDM7LyoKJiM0MzsgKiBUaGUgZm9sbG93aW5nIG1hY3JvIHNob3VsZCBvbmx5IGJlIHVzZWQgd2l0aCBUWVBFID0ge3VpbnQsIHVsb25nLCBib29sfS4KJiM0MzsgKgomIzQzOyAqIFRoZSBkZXZpY2UgY29uZmlndXJhdGlvbiBpcyBtb2RpZmllZCB1bmRlciB0aGUgZ2xvYmFsIGxvY2sgdG8gc2VyaWFsaXplCiYjNDM7ICogYXR0cmlidXRlIGNoYW5nZXMgYWdhaW5zdCBudWxsX2FkZF9kZXYoKSBhbmQgbnVsbF9kZWxfZGV2KCk6IHdpdGhvdXQgdGhpcywKJiM0MzsgKiBhbiBhdHRyaWJ1dGUgY291bGQgYmUgY2hhbmdlZCB3aGlsZSBudWxsX2FkZF9kZXYoKSBpcyBydW5uaW5nLCB0aGF0IGlzLAomIzQzOyAqIGJlZm9yZSBOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCBpcyBzZXQsIHdoaWNoIHdvdWxkIGxldCBudWxsX2FkZF9kZXYoKQomIzQzOyAqIG9ic2VydmUgaW5jb25zaXN0ZW50IHZhbHVlcyBmb3IgdGhlIGRldmljZSBjb25maWd1cmF0aW9uLgomIzQzOyAqLwogI2RlZmluZSBOVUxMQl9ERVZJQ0VfQVRUUihOQU1FLCBUWVBFLCBBUFBMWSkJCQkJXAogc3RhdGljIHNzaXplX3QJCQkJCQkJCVwKIG51bGxiX2RldmljZV8jI05BTUUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSkJXApAQCAtMzYwLDEzICYjNDM7MzY4LDE2IEBAIG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNvbnN0IGNoYXIgKnBhZ2UsCVwKIAlyZXQgPSBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zdG9yZSgmYW1wO25ld192YWx1ZSwgcGFnZSwgY291bnQpO1wKIAlpZiAocmV0ICZsdDsgMCkJCQkJCQkJXAogCQlyZXR1cm4gcmV0OwkJCQkJCVwKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2xvY2spOwkJCQkJCVwKIAlpZiAoYXBwbHlfZm4pCQkJCQkJCVwKIAkJcmV0ID0gYXBwbHlfZm4oZGV2LCBuZXdfdmFsdWUpOwkJCQlcCiAJZWxzZSBpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsICZhbXA7ZGV2LSZndDtmbGFncykpIAlcCiAJCXJldCA9IC1FQlVTWTsJCQkJCQlcCiYjNDM7CWlmIChyZXQgJmd0Oz0gMCkJCQkJCQkJXAomIzQzOwkJZGV2LSZndDtOQU1FID0gbmV3X3ZhbHVlOwkJCQkJXAomIzQzOwltdXRleF91bmxvY2soJmFtcDtsb2NrKTsJCQkJCQlcCiAJaWYgKHJldCAmbHQ7IDApCQkJCQkJCVwKIAkJcmV0dXJuIHJldDsJCQkJCQlcCi0JZGV2LSZndDtOQU1FID0gbmV3X3ZhbHVlOwkJCQkJCVwKIAlyZXR1cm4gY291bnQ7CQkJCQkJCVwKIH0JCQkJCQkJCQlcCiBDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIE5BTUUpOwpAQCAtMzc5LDYgJiM0MzszOTAsOCBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LAogCXN0cnVjdCBibGtfbXFfdGFnX3NldCAqc2V0OwogCWludCByZXQsIG5yX2h3X3F1ZXVlczsKIAomIzQzOwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZhbXA7bG9jayk7CiYjNDM7CiAJaWYgKCFkZXYtJmd0O251bGxiKQogCQlyZXR1cm4gMDsKIApAQCAtNDIxLDI1ICYjNDM7NDM0LDEzIEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsCiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LAogCQkJCSAgICAgdW5zaWduZWQgaW50IHN1Ym1pdF9xdWV1ZXMpCiB7Ci0JaW50IHJldDsKLQotCW11dGV4X2xvY2soJmFtcDtsb2NrKTsKLQlyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LSZndDtwb2xsX3F1ZXVlcyk7Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7bG9jayk7Ci0KLQlyZXR1cm4gcmV0OwomIzQzOwlyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi0mZ3Q7cG9sbF9xdWV1ZXMpOwogfQogCiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3BvbGxfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiwKIAkJCQkgICB1bnNpZ25lZCBpbnQgcG9sbF9xdWV1ZXMpCiB7Ci0JaW50IHJldDsKLQotCW11dGV4X2xvY2soJmFtcDtsb2NrKTsKLQlyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LSZndDtzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7bG9jayk7Ci0KLQlyZXR1cm4gcmV0OwomIzQzOwlyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi0mZ3Q7c3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpOwogfQogCiBOVUxMQl9ERVZJQ0VfQVRUUihzaXplLCB1bG9uZywgTlVMTCk7CkBAIC0yMTY2LDggJiM0MzsyMTY3LDYgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCW11dGV4X2luaXQoJmFtcDtsb2NrKTsKLQogCW51bGxfbWFqb3IgPSByZWdpc3Rlcl9ibGtkZXYoMCwgJiMzNDtudWxsYiYjMzQ7KTsKIAlpZiAobnVsbF9tYWpvciAmbHQ7IDApIHsKIAkJcmV0ID0gbnVsbF9tYWpvcjsKQEAgLTIyMTEsOCAmIzQzOzIyMTAsNiBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbnVsbF9leGl0KHZvaWQpCiAKIAlpZiAodGFnX3NldC5vcHMpCiAJCWJsa19tcV9mcmVlX3RhZ19zZXQoJmFtcDt0YWdfc2V0KTsKLQotCW11dGV4X2Rlc3Ryb3koJmFtcDtsb2NrKTsKIH0KIAogbW9kdWxlX2luaXQobnVsbF9pbml0KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTc6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA3NgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE51bGwgQmxvY2sgRGV2aWNlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNgLiBJdCYjMzk7cyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgY2hhbmdlLCBidXQgaW1wb3J0YW50IGZvciBjb3JyZWN0bmVzcywgSSYjMzk7ZCBzYXkuIFRoZXkmIzM5O3ZlIHJlcGxhY2VkIHRoZSBtYW51YWwgbXV0ZXggaW5pdGlhbGl6YXRpb24gKGBtdXRleF9pbml0YCwgYG11dGV4X2Rlc3Ryb3lgKSBhbmQgbG9ja2luZyB3aXRoIHRoZSBgREVGSU5FX01VVEVYYCBtYWNybyBhbmQgdGhlIG1vcmUgY29uY2lzZSBsb2NraW5nIHdpdGhpbiB0aGUgYE5VTExCX0RFVklDRV9BVFRSYCBtYWNyby4gVGhleSYjMzk7dmUgYWxzbyBjbGVhbmVkIHVwIHNvbWUgbG9jayBjYWxscyBpbiB0aGUgYG51bGxiX2FwcGx5XypfcXVldWVzYCBmdW5jdGlvbnMuIFBsdXMsIHRoYXQgYGxvY2tkZXBfYXNzZXJ0X2hlbGRgIGNhbGwgaW4gYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgIGlzIGEgZ29vZCBwcmFjdGljZSB0byBlbnN1cmUgdGhlIGxvY2sgaXMgaGVsZCB3aGVyZSBpdCBzaG91bGQgYmUuCgpUaGUgbmV0IGVmZmVjdCBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEVuY2Fwc3VsYXRpbmcgdGhlIGxvY2tpbmcgd2l0aGluIGBOVUxMQl9ERVZJQ0VfQVRUUmAgbWVhbnMgdGhhdCBhbnkgYXR0cmlidXRlIGRlZmluZWQgdXNpbmcgdGhhdCBtYWNybyB3aWxsIG5vdyBiZSBwcm90ZWN0ZWQgYnkgdGhpcyBgbG9ja2AgbXV0ZXguIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIG11c3QgYmUgZml4aW5nIGEgcmFjZSBjb25kaXRpb24sIGFuZCBpdCBkb2VzISBBcHBhcmVudGx5IHRoZXJlJiMzOTtzIGEgcHJvYmxlbSB3aGVyZSBhbiBhdHRyaWJ1dGUgY291bGQgYmUgY2hhbmdlZCBjb25jdXJyZW50bHkgd2l0aCBgbnVsbF9hZGRfZGV2KClgIHJ1bm5pbmcuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGlzc3VlIGluIGJsb2NrIGRyaXZlcnMsIGFuZCBpdCYjMzk7cyBnb29kIHRoZXkmIzM5O3JlIGFkZHJlc3NpbmcgaXQuCgpOb3csIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGFmZmVjdHMuIGBOVUxMQl9ERVZJQ0VfQVRUUmAgZGVmaW5lcyBjb25maWdmcyBhdHRyaWJ1dGVzIGZvciB0aGUgbnVsbCBibG9jayBkZXZpY2VzLiBUaGF0JiMzOTtzIHJpZ2h0LCB0aG9zZSBhcmUgdGhlIGF0dHJpYnV0ZXMgdGhhdCBsZXQgeW91IGNvbmZpZ3VyZSB0aGUgZGV2aWNlIHRocm91Z2ggdGhlIGNvbmZpZ2ZzIGludGVyZmFjZS4gQW5kIG51bGxfYmxrLi4uIHllYWgsIHRoYXQmIzM5O3MganVzdCBhIHNvZnR3YXJlIGJsb2NrIGRldmljZS4gSXQmIzM5O3Mgb2Z0ZW4gdXNlZCBmb3IgdGVzdGluZywgYnV0IEkga25vdyBpdCYjMzk7cyAqZGVmaW5pdGVseSogdXNlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFNvLCB0aGlzIGNoYW5nZSBjb3VsZCBwb3RlbnRpYWxseSBpbXBhY3QgYW55b25lIHVzaW5nIG51bGxfYmxrIGluIHRoYXQgY29udGV4dC4KCk9rYXksIG5vdyBsZXQmIzM5O3MgZ28gZmluZCB0aGUgc3BlY2lmaWMgY29uZmlnIG9wdGlvbnMgZm9yIG51bGxfYmxrIHRvIHNlZSBpZiBpdCYjMzk7cyBlbmFibGVkIGJ5IGRlZmF1bHQuIEdvdHRhIHVuZGVyc3RhbmQgdGhlIGltcGFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfREVWX05VTExfQkxLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODE3CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgbnVsbCBibG9jayBkZXZpY2UgKGBudWxsX2Jsa2ApIGxpdmVzLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRvIGxvb2sgaW4gdGhlIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgc3RhbmRhcmQgbG9jYXRpb24gZm9yIGRyaXZlciBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEhvd2V2ZXIsIEkgbWlnaHQganVzdCBiZSBvdmVydGhpbmtpbmcgdGhpcy4gVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBhIHF1aWNrIGBncmVwYCBmb3IgdGhlIGBCTEtfREVWX05VTExfQkxLYCBzeW1ib2wgYWNyb3NzIHRoZSBrZXJuZWwgc291cmNlIHdvdWxkIHF1aWNrbHkgY29uZmlybSBpZiBpdCYjMzk7cyB0aGVyZSBhbmQgcG9zc2libHkgcmV2ZWFsIGRlcGVuZGVuY2llcyBvciBvdGhlciByZWxldmFudCBLY29uZmlnIGVudHJpZXMsIGp1c3QgaW4gY2FzZSBzb21ldGhpbmcmIzM5O3MgYmVlbiBtb3ZlZCBhcm91bmQgb3IgZGlmZmVyZW50bHkgbmFtZWQuIEdvdHRhIGJlIGVmZmljaWVudCBoZXJlLiBJJiMzOTtsbCBzdGFydCB3aXRoIHRoZSBvYnZpb3VzIGxvY2F0aW9uIGFuZCB0aGVuIGV4cGFuZCBteSBzZWFyY2ggaWYgbmVlZGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE3OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfREVWX05VTExfQkxLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy01LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjY6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TnVsbCB0ZXN0IGJsb2NrIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy05LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjEwOmNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTExLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZhdWx0IGluamVjdGlvbiBmb3IgTnVsbCB0ZXN0IGJsb2NrIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE3OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxOTUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgQkxLX0RFVl9OVUxMX0JMS2AuIFRoYXQmIzM5O3MgdGhlIGNvbmZpZyBpbiBwbGF5IGhlcmUuIE15IHByaW1hcnkgZ29hbCBpcyB0byBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyBmb3IgZnV6emluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBudWxsIGJsb2NrIGRldmljZSBjb25maWd1cmF0aW9uIGFjdHVhbGx5IG9wZXJhdGVzLgoKVGhlIG1hY3JvIGBOVUxMQl9ERVZJQ0VfQVRUUmAgaXMgdGhlIGtleS4gSSByZWNvZ25pemUgaXQgZ2VuZXJhdGVzIGZ1bmN0aW9ucy4gVGhleSBoYXZlIGEgcHJlZGljdGFibGUgcGF0dGVybjogYG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZWAuIFRoaXMgc2VlbXMgbGlrZSB0aGUgZ2F0ZXdheSB0byBtYW5pcHVsYXRpbmcgYW5kIGludGVyYWN0aW5nIHdpdGggdGhlIGRldmljZS4gQW5kLCBpbXBvcnRhbnRseSwgdGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgdGhyb3VnaCBjb25maWdmcy4gVGhpcyBpcyB0aGUgZW50cnlwb2ludCB0byBiZSBjb25jZXJuZWQgd2l0aC4KClRoZXJlZm9yZSwgbXkgbmV4dCBzdGVwIGlzIGNsZWFyLiBJIG5lZWQgdG8gbWV0aWN1bG91c2x5IGV4YW1pbmUgaG93IGBOVUxMQl9ERVZJQ0VfQVRUUmAgaXMgdXNlZC4gSSYjMzk7bGwgc2VhcmNoIGZvciBldmVyeSBpbnN0YW5jZSBvZiB0aGlzIG1hY3JvIGFuZCBkb2N1bWVudCBhbGwgdGhlIGZ1bmN0aW9ucyBpdCBkZWZpbmVzLiBUaGUgb2JqZWN0aXZlIGlzIHRvIG1hcCB0aGUgZW50cnkgcG9pbnRzLiBVbmRlcnN0YW5kaW5nIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGFsbG93IG1lIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgcGFydHMgb2YgdGhlIGNvZGUgbW9zdCBsaWtlbHkgdG8gcmV2ZWFsIHZ1bG5lcmFiaWxpdGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtOVUxMQl9ERVZJQ0VfQVRUUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTMyOT1zdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3N0b3JlKGJvb2wgKnZhbCwgY29uc3QgY2hhciAqcGFnZSxcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zNTEtICovXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozNTI6I2RlZmluZSBOVUxMQl9ERVZJQ0VfQVRUUihOQU1FLCBUWVBFLCBBUFBMWSlcdFx0XHRcdFxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zNTMtc3RhdGljIHNzaXplX3RcdFx0XHRcdFx0XHRcdFx0XFxcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00NDA9c3RhdGljIGludCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDQ1LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQ2Ok5VTExCX0RFVklDRV9BVFRSKHNpemUsIHVsb25nLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0NzpOVUxMQl9ERVZJQ0VfQVRUUihjb21wbGV0aW9uX25zZWMsIHVsb25nLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0ODpOVUxMQl9ERVZJQ0VfQVRUUihzdWJtaXRfcXVldWVzLCB1aW50LCBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0OTpOVUxMQl9ERVZJQ0VfQVRUUihwb2xsX3F1ZXVlcywgdWludCwgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDUwOk5VTExCX0RFVklDRV9BVFRSKGhvbWVfbm9kZSwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTE6TlVMTEJfREVWSUNFX0FUVFIocXVldWVfbW9kZSwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTI6TlVMTEJfREVWSUNFX0FUVFIoYmxvY2tzaXplLCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1MzpOVUxMQl9ERVZJQ0VfQVRUUihtYXhfc2VjdG9ycywgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTQ6TlVMTEJfREVWSUNFX0FUVFIoaXJxbW9kZSwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTU6TlVMTEJfREVWSUNFX0FUVFIoaHdfcXVldWVfZGVwdGgsIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDU2Ok5VTExCX0RFVklDRV9BVFRSKGluZGV4LCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1NzpOVUxMQl9ERVZJQ0VfQVRUUihibG9ja2luZywgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTg6TlVMTEJfREVWSUNFX0FUVFIodXNlX3Blcl9ub2RlX2hjdHgsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDU5Ok5VTExCX0RFVklDRV9BVFRSKG1lbW9yeV9iYWNrZWQsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDYwOk5VTExCX0RFVklDRV9BVFRSKGRpc2NhcmQsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDYxOk5VTExCX0RFVklDRV9BVFRSKG1icHMsIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDYyOk5VTExCX0RFVklDRV9BVFRSKGNhY2hlX3NpemUsIHVsb25nLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2MzpOVUxMQl9ERVZJQ0VfQVRUUih6b25lZCwgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjQ6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9zaXplLCB1bG9uZywgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjU6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9jYXBhY2l0eSwgdWxvbmcsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY2Ok5VTExCX0RFVklDRV9BVFRSKHpvbmVfbnJfY29udiwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Njc6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9tYXhfb3BlbiwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Njg6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9tYXhfYWN0aXZlLCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2OTpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX2FwcGVuZF9tYXhfc2VjdG9ycywgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzA6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9mdWxsLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3MTpOVUxMQl9ERVZJQ0VfQVRUUih2aXJ0X2JvdW5kYXJ5LCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3MjpOVUxMQl9ERVZJQ0VfQVRUUihub19zY2hlZCwgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzM6TlVMTEJfREVWSUNFX0FUVFIoc2hhcmVkX3RhZ3MsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc0Ok5VTExCX0RFVklDRV9BVFRSKHNoYXJlZF90YWdfYml0bWFwLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3NTpOVUxMQl9ERVZJQ0VfQVRUUihmdWEsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc2Ok5VTExCX0RFVklDRV9BVFRSKHJvdGF0aW9uYWwsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc3Ok5VTExCX0RFVklDRV9BVFRSKGJhZGJsb2Nrc19vbmNlLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3ODpOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3NfcGFydGlhbF9pbywgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00NzktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgxOQoJCQkJCQkJb3V0cHV0OiA3NAoJCQkJCQkJdGhvdWdodHM6IDIxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE51bGwgQmxvY2sgRGV2aWNlIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIG51bGwgYmxvY2sgZGV2aWNlIGRyaXZlci4gVGhlIG1hY3JvLCB0aGUgYG51bGxiX2RldmljZV9zaXplX3N0b3JlYCwgYW5kIGBudWxsYl9kZXZpY2Vfc3VibWl0X3F1ZXVlc19zdG9yZWAgZnVuY3Rpb25zIGl0IGdlbmVyYXRlcyBhcmUgc3RhdGljLiBUaGF0JiMzOTtzIGEgcGF0dGVybiwgaXNuJiMzOTt0IGl0PyBBbmQgdGhlbiBJIHNlZSBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AgYW5kIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AsIGFsc28gc3RhdGljLiBFdmVuIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCBpcyBzdGF0aWMuIEhtbSwgaXMgYW55dGhpbmcgKm5vdCogc3RhdGljIGJlaW5nIG1vZGlmaWVkIGhlcmU/CgpMZXQgbWUgcmV2aWV3LCB0aGUgcGF0Y2ggZG9lcyB0b3VjaCBgbnVsbF9pbml0YCBhbmQgYG51bGxfZXhpdGAsIGJ1dCB0aG9zZSBsb29rIGxpa2Ugc3RhbmRhcmQgaW5pdGlhbGl6YXRpb24gYW5kIGNsZWFudXAgcm91dGluZXMsIGFuZCB0aGUgY2hhbmdlcyBhcmUgc2ltcGxlIChtdXRleCBpbml0L2Rlc3Ryb3kgcmVtb3ZlZCwgbm8gYmlnIGRlYWwpLiBBbmQgaXQgdG91Y2hlcyB0aGUgbWFjcm8gYE5VTExCX0RFVklDRV9BVFRSYCwgd2hpY2ggKmdlbmVyYXRlcyogc3RhdGljIGZ1bmN0aW9ucy4gVGhlIGZvY3VzIHJlYWxseSBzZWVtcyB0byBiZSBvbiB0aG9zZSBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uczogYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgLCBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AsIGFuZCBgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNgLgoKUmlnaHQuIExldCYjMzk7cyBkaWcgZGVlcGVyIGludG8gdGhlIGFjdHVhbCBjb2RlIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY2AgdGhhdCBhcmUgc29tZWhvdyByZWxhdGVkIHRvIHRoZXNlIGZ1bmN0aW9ucyBhbmQgaGF2ZSBiZWVuIG1vZGlmaWVkIGluZGlyZWN0bHksIG9yIHdob3NlIGJlaGF2aW91ciBtaWdodCBiZSBpbXBhY3RlZCBieSB0aGUgY2hhbmdlcyBpbiB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGZlZWwgZm9yIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTc6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XihbYS16QS1aX11bYS16QS1aMC05X10qXFxzJiM0MzspJiM0MztcXCo/W2EtekEtWl9dW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIyLSNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIzOnN0YXRpYyBERUNMQVJFX0ZBVUxUX0FUVFIobnVsbF90aW1lb3V0X2F0dHIpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjQ6c3RhdGljIERFQ0xBUkVfRkFVTFRfQVRUUihudWxsX3JlcXVldWVfYXR0cik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyNTpzdGF0aWMgREVDTEFSRV9GQVVMVF9BVFRSKG51bGxfaW5pdF9oY3R4X2F0dHIpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjYtI2VuZGlmXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yNy1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjI4OnN0YXRpYyBpbmxpbmUgdTY0IG1iX3Blcl90aWNrKGludCBtYnBzKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjkte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTYxPXN0cnVjdCBudWxsYl9wYWdlIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy02Ny1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjY4OnN0YXRpYyBMSVNUX0hFQUQobnVsbGJfbGlzdCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo2OTpzdGF0aWMgREVGSU5FX01VVEVYKGxvY2spO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzAtc3RhdGljIGludCBudWxsX21ham9yO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NzE6c3RhdGljIERFRklORV9JREEobnVsbGJfaW5kZXhlcyk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03Mi1zdGF0aWMgc3RydWN0IGJsa19tcV90YWdfc2V0IHRhZ19zZXQ7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTMwPXN0YXRpYyBpbnQgZ19xdWV1ZV9tb2RlID0gTlVMTF9RX01RO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTMxLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTMyOnN0YXRpYyBpbnQgbnVsbF9wYXJhbV9zdG9yZV92YWwoY29uc3QgY2hhciAqc3RyLCBpbnQgKnZhbCwgaW50IG1pbiwgaW50IG1heClcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEzMy17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTQ2LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTQ3OnN0YXRpYyBpbnQgbnVsbF9zZXRfcXVldWVfbW9kZShjb25zdCBjaGFyICpzdHIsIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTQ4LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xODg9c3RhdGljIGludCBnX2lycW1vZGUgPSBOVUxMX0lSUV9TT0ZUSVJRO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTg5LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTkwOnN0YXRpYyBpbnQgbnVsbF9zZXRfaXJxbW9kZShjb25zdCBjaGFyICpzdHIsIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTkxLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yNzE9TU9EVUxFX1BBUk1fREVTQyhyb3RhdGlvbmFsLCBcJiMzNDtTZXQgdGhlIHJvdGF0aW9uYWwgZmVhdHVyZSBmb3IgdGhlIGRldmljZS4gRGVmYXVsdDogZmFsc2VcJiMzNDspO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjcyLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjczOnN0YXRpYyBzdHJ1Y3QgbnVsbGJfZGV2aWNlICpudWxsX2FsbG9jX2Rldih2b2lkKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjI3NDpzdGF0aWMgdm9pZCBudWxsX2ZyZWVfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyNzU6c3RhdGljIHZvaWQgbnVsbF9kZWxfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mjc2OnN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyNzc6c3RhdGljIHN0cnVjdCBudWxsYiAqbnVsbF9maW5kX2Rldl9ieV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mjc4OnN0YXRpYyB2b2lkIG51bGxfZnJlZV9kZXZpY2Vfc3RvcmFnZShzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsIGJvb2wgaXNfY2FjaGUpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjc5LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjgwOnN0YXRpYyBpbmxpbmUgc3RydWN0IG51bGxiX2RldmljZSAqdG9fbnVsbGJfZGV2aWNlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSlcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTI4MS17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjg0LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mjg1OnN0YXRpYyBpbmxpbmUgc3NpemVfdCBudWxsYl9kZXZpY2VfdWludF9hdHRyX3Nob3codW5zaWduZWQgaW50IHZhbCwgY2hhciAqcGFnZSlcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTI4Ni17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjg5LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjkwOnN0YXRpYyBpbmxpbmUgc3NpemVfdCBudWxsYl9kZXZpY2VfdWxvbmdfYXR0cl9zaG93KHVuc2lnbmVkIGxvbmcgdmFsLFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjkxLVx0Y2hhciAqcGFnZSlcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yOTUtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyOTY6c3RhdGljIGlubGluZSBzc2l6ZV90IG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyhib29sIHZhbCwgY2hhciAqcGFnZSlcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTI5Ny17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzAwLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MzAxOnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV91aW50X2F0dHJfc3RvcmUodW5zaWduZWQgaW50ICp2YWwsXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zMDItXHRjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzE0LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MzE1OnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV91bG9uZ19hdHRyX3N0b3JlKHVuc2lnbmVkIGxvbmcgKnZhbCxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTMxNi1cdGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zMjgtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozMjk6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zMzAtXHRzaXplX3QgY291bnQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MzgzPUNPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgTkFNRSk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zODQtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozODU6c3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTM4Ni1cdFx0XHRcdCAgICAgdW5zaWduZWQgaW50IHN1Ym1pdF9xdWV1ZXMsXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDMzLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDM0OnN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00MzUtXHRcdFx0XHQgICAgIHVuc2lnbmVkIGludCBzdWJtaXRfcXVldWVzKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQzOS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0MDpzdGF0aWMgaW50IG51bGxiX2FwcGx5X3BvbGxfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ0MS1cdFx0XHRcdCAgIHVuc2lnbmVkIGludCBwb2xsX3F1ZXVlcylcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00Nzg9TlVMTEJfREVWSUNFX0FUVFIoYmFkYmxvY2tzX3BhcnRpYWxfaW8sIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDc5LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDgwOnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ4MS17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDg0LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDg1OnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00ODYtXHRcdFx0XHQgICAgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz01MjQ9Q09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBwb3dlcik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MjUtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1MjY6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2JhZGJsb2Nrc19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTUyNy17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTMyLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NTMzOnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9iYWRibG9ja3Nfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTM0LVx0XHRcdFx0ICAgICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NTc3PUNPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgYmFkYmxvY2tzKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTU3OC1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjU3OTpzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01ODAtXHRcdFx0XHRcdFx0Y29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGNvdW50KVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTU4Nj1DT05GSUdGU19BVFRSX1dPKG51bGxiX2RldmljZV8sIHpvbmVfcmVhZG9ubHkpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTg3LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NTg4OnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV96b25lX29mZmxpbmVfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTg5LVx0XHRcdFx0XHQgICAgICAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGNvdW50KVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTU5Nz1zdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX2F0dHJpYnV0ZSAqbnVsbGJfZGV2aWNlX2F0dHJzW10gPSB7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNjM3LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NjM4OnN0YXRpYyB2b2lkIG51bGxiX2RldmljZV9yZWxlYXNlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSlcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTYzOS17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NjUwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgY29uZmlnX2l0ZW1fdHlwZSBudWxsYl9kZXZpY2VfdHlwZSA9IHtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy02NTctXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo2NTg6c3RhdGljIHZvaWQgbnVsbGJfYWRkX2ZhdWx0X2NvbmZpZyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy02NTkte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTY2OC1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjY2OTpzdGF0aWMgdm9pZCBudWxsYl9kZWxfZmF1bHRfY29uZmlnKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTY3MC17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNjc3LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Njc4OnN0YXRpYyB2b2lkIG51bGxiX2FkZF9mYXVsdF9jb25maWcoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNjc5LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy02ODEtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo2ODI6c3RhdGljIHZvaWQgbnVsbGJfZGVsX2ZhdWx0X2NvbmZpZyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy02ODMte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTY4Nz1zdGF0aWMgc3RydWN0XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo2ODg6Y29uZmlnX2dyb3VwICpudWxsYl9ncm91cF9tYWtlX2dyb3VwKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBjb25zdCBjaGFyICpuYW1lKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNjg5LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz03MDY9bnVsbGJfZ3JvdXBfZHJvcF9pdGVtKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0pXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzE5LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NzIwOnN0YXRpYyBzc2l6ZV90IG1lbWJfZ3JvdXBfZmVhdHVyZXNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNoYXIgKnBhZ2UpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03MjEte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTc2ND1zdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX3N1YnN5c3RlbSBudWxsYl9zdWJzeXMgPSB7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzcyLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NzczOnN0YXRpYyBpbmxpbmUgaW50IG51bGxfY2FjaGVfYWN0aXZlKHN0cnVjdCBudWxsYiAqbnVsbGIpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03NzQte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTc3Ny1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjc3ODpzdGF0aWMgc3RydWN0IG51bGxiX2RldmljZSAqbnVsbF9hbGxvY19kZXYodm9pZClcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTc3OS17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtODM0LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6ODM1OnN0YXRpYyB2b2lkIG51bGxfZnJlZV9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtODM2LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy04NDQtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo4NDU6c3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IG51bGxfY21kX3RpbWVyX2V4cGlyZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtODQ2LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy04NTItXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo4NTM6c3RhdGljIHZvaWQgbnVsbF9jbWRfZW5kX3RpbWVyKHN0cnVjdCBudWxsYl9jbWQgKmNtZClcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTg1NC17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtODU5LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6ODYwOnN0YXRpYyB2b2lkIG51bGxfY29tcGxldGVfcnEoc3RydWN0IHJlcXVlc3QgKnJxKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtODYxLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy04NjYtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo4Njc6c3RhdGljIHN0cnVjdCBudWxsYl9wYWdlICpudWxsX2FsbG9jX3BhZ2Uodm9pZClcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTg2OC17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtODg0LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6ODg1OnN0YXRpYyB2b2lkIG51bGxfZnJlZV9wYWdlKHN0cnVjdCBudWxsYl9wYWdlICp0X3BhZ2UpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy04ODYte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTg5My1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjg5NDpzdGF0aWMgYm9vbCBudWxsX3BhZ2VfZW1wdHkoc3RydWN0IG51bGxiX3BhZ2UgKnBhZ2UpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy04OTUte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTkwMC1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjkwMTpzdGF0aWMgdm9pZCBudWxsX2ZyZWVfc2VjdG9yKHN0cnVjdCBudWxsYiAqbnVsbGIsIHNlY3Rvcl90IHNlY3RvcixcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTkwMi1cdGJvb2wgaXNfY2FjaGUpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTI2LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6OTI3OnN0YXRpYyBzdHJ1Y3QgbnVsbGJfcGFnZSAqbnVsbF9yYWRpeF90cmVlX2luc2VydChzdHJ1Y3QgbnVsbGIgKm51bGxiLCB1NjQgaWR4LFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTI4LVx0c3RydWN0IG51bGxiX3BhZ2UgKnRfcGFnZSwgYm9vbCBpc19jYWNoZSlcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy05NDMtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo5NDQ6c3RhdGljIHZvaWQgbnVsbF9mcmVlX2RldmljZV9zdG9yYWdlKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiwgYm9vbCBpc19jYWNoZSlcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTk0NS17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTcyLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6OTczOnN0YXRpYyBzdHJ1Y3QgbnVsbGJfcGFnZSAqX19udWxsX2xvb2t1cF9wYWdlKHN0cnVjdCBudWxsYiAqbnVsbGIsXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy05NzQtXHRzZWN0b3JfdCBzZWN0b3IsIGJvb2wgZm9yX3dyaXRlLCBib29sIGlzX2NhY2hlKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTk5My1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjk5NDpzdGF0aWMgc3RydWN0IG51bGxiX3BhZ2UgKm51bGxfbG9va3VwX3BhZ2Uoc3RydWN0IG51bGxiICpudWxsYixcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTk5NS1cdHNlY3Rvcl90IHNlY3RvciwgYm9vbCBmb3Jfd3JpdGUsIGJvb2wgaWdub3JlX2NhY2hlKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEwMDUtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxMDA2OnN0YXRpYyBzdHJ1Y3QgbnVsbGJfcGFnZSAqbnVsbF9pbnNlcnRfcGFnZShzdHJ1Y3QgbnVsbGIgKm51bGxiLFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTAwNy1cdFx0XHRcdFx0ICAgc2VjdG9yX3Qgc2VjdG9yLCBib29sIGlnbm9yZV9jYWNoZSlcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMDQwLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTA0MTpzdGF0aWMgaW50IG51bGxfZmx1c2hfY2FjaGVfcGFnZShzdHJ1Y3QgbnVsbGIgKm51bGxiLCBzdHJ1Y3QgbnVsbGJfcGFnZSAqY19wYWdlKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTA0Mi17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTA4OS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjEwOTA6c3RhdGljIGludCBudWxsX21ha2VfY2FjaGVfc3BhY2Uoc3RydWN0IG51bGxiICpudWxsYiwgdW5zaWduZWQgbG9uZyBuKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTA5MS17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTE0Mi1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjExNDM6c3RhdGljIGJsa19zdGF0dXNfdCBjb3B5X3RvX251bGxiKHN0cnVjdCBudWxsYiAqbnVsbGIsIHZvaWQgKnNvdXJjZSxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTExNDQtXHRcdFx0XHQgIGxvZmZfdCBwb3MsIHNpemVfdCBuLCBib29sIGlzX2Z1YSlcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMTc2LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTE3NzpzdGF0aWMgdm9pZCBjb3B5X2Zyb21fbnVsbGIoc3RydWN0IG51bGxiICpudWxsYiwgdm9pZCAqZGVzdCwgbG9mZl90IHBvcyxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTExNzgtXHRcdFx0ICAgIHNpemVfdCBuKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEyMDEtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxMjAyOmJsa19zdGF0dXNfdCBudWxsX2hhbmRsZV9kaXNjYXJkKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEyMDMtXHRcdFx0XHQgc2VjdG9yX3Qgc2VjdG9yLCBzZWN0b3JfdCBucl9zZWN0b3JzKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEyMjItXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxMjIzOnN0YXRpYyBibGtfc3RhdHVzX3QgbnVsbF9oYW5kbGVfZmx1c2goc3RydWN0IG51bGxiICpudWxsYilcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEyMjQte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEyNDItXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxMjQzOnN0YXRpYyBibGtfc3RhdHVzX3QgbnVsbF90cmFuc2ZlcihzdHJ1Y3QgbnVsbGIgKm51bGxiLCBzdHJ1Y3QgcGFnZSAqcGFnZSxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEyNDQtXHR1bnNpZ25lZCBpbnQgbGVuLCB1bnNpZ25lZCBpbnQgb2ZmLCBib29sIGlzX3dyaXRlLCBsb2ZmX3QgcG9zLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEyODItICovXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxMjgzOnN0YXRpYyBibGtfc3RhdHVzX3QgbnVsbF9oYW5kbGVfZGF0YV90cmFuc2ZlcihzdHJ1Y3QgbnVsbGJfY21kICpjbWQsXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMjg0LVx0XHRcdFx0XHQgICAgICBzZWN0b3JfdCBucl9zZWN0b3JzKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEzMTUtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxMzE2OnN0YXRpYyBpbmxpbmUgYmxrX3N0YXR1c190IG51bGxfaGFuZGxlX3Rocm90dGxlZChzdHJ1Y3QgbnVsbGJfY21kICpjbWQpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMzE3LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMzQ2LSAqL1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTM0NzpibGtfc3RhdHVzX3QgbnVsbF9oYW5kbGVfYmFkYmxvY2tzKHN0cnVjdCBudWxsYl9jbWQgKmNtZCwgc2VjdG9yX3Qgc2VjdG9yLFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTM0OC1cdFx0XHRcdCAgIHVuc2lnbmVkIGludCAqbnJfc2VjdG9ycylcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMzcyLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTM3MzpibGtfc3RhdHVzX3QgbnVsbF9oYW5kbGVfbWVtb3J5X2JhY2tlZChzdHJ1Y3QgbnVsbGJfY21kICpjbWQsIGVudW0gcmVxX29wIG9wLFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTM3NC1cdFx0XHRcdCAgICAgICBzZWN0b3JfdCBzZWN0b3IsIHNlY3Rvcl90IG5yX3NlY3RvcnMpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTM4My1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjEzODQ6c3RhdGljIHZvaWQgbnVsbGJfemVyb19yZWFkX2NtZF9idWZmZXIoc3RydWN0IG51bGxiX2NtZCAqY21kKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTM4NS17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTM5NS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjEzOTY6c3RhdGljIGlubGluZSB2b2lkIG51bGxiX2NvbXBsZXRlX2NtZChzdHJ1Y3QgbnVsbGJfY21kICpjbWQpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMzk3LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNDIzLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTQyNDpibGtfc3RhdHVzX3QgbnVsbF9wcm9jZXNzX2NtZChzdHJ1Y3QgbnVsbGJfY21kICpjbWQsIGVudW0gcmVxX29wIG9wLFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTQyNS1cdFx0XHQgICAgICBzZWN0b3JfdCBzZWN0b3IsIHVuc2lnbmVkIGludCBucl9zZWN0b3JzKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE0NDItXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNDQzOnN0YXRpYyB2b2lkIG51bGxfaGFuZGxlX2NtZChzdHJ1Y3QgbnVsbGJfY21kICpjbWQsIHNlY3Rvcl90IHNlY3RvcixcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE0NDQtXHRcdFx0ICAgIHNlY3Rvcl90IG5yX3NlY3RvcnMsIGVudW0gcmVxX29wIG9wKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE0NjctXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNDY4OnN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBudWxsYl9id3RpbWVyX2ZuKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE0Njkte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE0ODQtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNDg1OnN0YXRpYyB2b2lkIG51bGxiX3NldHVwX2J3dGltZXIoc3RydWN0IG51bGxiICpudWxsYilcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE0ODYte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE0OTUtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNDk2OnN0YXRpYyBib29sIHNob3VsZF90aW1lb3V0X3JlcXVlc3Qoc3RydWN0IHJlcXVlc3QgKnJxKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTQ5Ny17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTUwMy1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE1MDQ6c3RhdGljIGJvb2wgc2hvdWxkX3JlcXVldWVfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdCAqcnEpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTA1LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTExLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTUxMjpzdGF0aWMgYm9vbCBzaG91bGRfaW5pdF9oY3R4X2ZhaWwoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTUxMy17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTUxOC1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE1MTk6c3RhdGljIGJvb2wgc2hvdWxkX3RpbWVvdXRfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdCAqcnEpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTIwLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTIzLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTUyNDpzdGF0aWMgYm9vbCBzaG91bGRfcmVxdWV1ZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0ICpycSlcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE1MjUte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE1MjgtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNTI5OnN0YXRpYyBib29sIHNob3VsZF9pbml0X2hjdHhfZmFpbChzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTMwLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTM1LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTUzNjpzdGF0aWMgdm9pZCBudWxsX21hcF9xdWV1ZXMoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTM3LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTg4LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTU4OTpzdGF0aWMgaW50IG51bGxfcG9sbChzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCwgc3RydWN0IGlvX2NvbXBfYmF0Y2ggKmlvYilcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE1OTAte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE2MTktXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNjIwOnN0YXRpYyBlbnVtIGJsa19laF90aW1lcl9yZXR1cm4gbnVsbF90aW1lb3V0X3JxKHN0cnVjdCByZXF1ZXN0ICpycSlcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE2MjEte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE2NTItXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNjUzOnN0YXRpYyBibGtfc3RhdHVzX3QgbnVsbF9xdWV1ZV9ycShzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE2NTQtXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBibGtfbXFfcXVldWVfZGF0YSAqYmQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTcwNy1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE3MDg6c3RhdGljIHZvaWQgbnVsbF9xdWV1ZV9ycXMoc3RydWN0IHJxX2xpc3QgKnJxbGlzdClcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE3MDkte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE3MjUtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNzI2OnN0YXRpYyB2b2lkIG51bGxfaW5pdF9xdWV1ZShzdHJ1Y3QgbnVsbGIgKm51bGxiLCBzdHJ1Y3QgbnVsbGJfcXVldWUgKm5xKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTcyNy17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTczMi1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE3MzM6c3RhdGljIGludCBudWxsX2luaXRfaGN0eChzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCwgdm9pZCAqZHJpdmVyX2RhdGEsXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNzM0LVx0XHRcdCAgdW5zaWduZWQgaW50IGhjdHhfaWR4KVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE3NDk9c3RhdGljIGNvbnN0IHN0cnVjdCBibGtfbXFfb3BzIG51bGxfbXFfb3BzID0ge1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE3NTgtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNzU5OnN0YXRpYyB2b2lkIG51bGxfZGVsX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTc2MC17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTc4OS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE3OTA6c3RhdGljIHZvaWQgbnVsbF9jb25maWdfZGlzY2FyZChzdHJ1Y3QgbnVsbGIgKm51bGxiLCBzdHJ1Y3QgcXVldWVfbGltaXRzICpsaW0pXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNzkxLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xODEwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgbnVsbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTgxNC1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE4MTU6c3RhdGljIGludCBzZXR1cF9xdWV1ZXMoc3RydWN0IG51bGxiICpudWxsYilcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE4MTYte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE4MjgtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxODI5OnN0YXRpYyBpbnQgbnVsbF9pbml0X3RhZ19zZXQoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQsIGludCBwb2xsX3F1ZXVlcylcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE4MzAte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE4NDEtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxODQyOnN0YXRpYyBpbnQgbnVsbF9pbml0X2dsb2JhbF90YWdfc2V0KHZvaWQpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xODQzLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xODY0LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTg2NTpzdGF0aWMgaW50IG51bGxfc2V0dXBfdGFnc2V0KHN0cnVjdCBudWxsYiAqbnVsbGIpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xODY2LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xODg1LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTg4NjpzdGF0aWMgaW50IG51bGxfdmFsaWRhdGVfY29uZihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xODg3LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTI5LSNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE5MzA6c3RhdGljIGJvb2wgX19udWxsX3NldHVwX2ZhdWx0KHN0cnVjdCBmYXVsdF9hdHRyICphdHRyLCBjaGFyICpzdHIpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTMxLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTQyLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTk0MzpzdGF0aWMgYm9vbCBudWxsX3NldHVwX2ZhdWx0KHZvaWQpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTQ0LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTU1LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTk1NjpzdGF0aWMgaW50IG51bGxfYWRkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTU3LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDgwLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjA4MTpzdGF0aWMgc3RydWN0IG51bGxiICpudWxsX2ZpbmRfZGV2X2J5X25hbWUoY29uc3QgY2hhciAqbmFtZSlcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwODIte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwOTYtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMDk3OnN0YXRpYyBpbnQgbnVsbF9jcmVhdGVfZGV2KHZvaWQpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDk4LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTE2LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjExNzpzdGF0aWMgdm9pZCBudWxsX2Rlc3Ryb3lfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTE4LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTI1LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjEyNjpzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxMjcte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxOTUtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMTk2OnN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZClcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxOTcte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDI2MQoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDI3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgTnVsbCBCbG9jayBEcml2ZXIgUmFjZSBDb25kaXRpb24gRml4KioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIHJhY2UgY29uZGl0aW9uLCBzcGVjaWZpY2FsbHkgYmV0d2VlbiBtb2RpZnlpbmcgYSBjb25maWdmcyBhdHRyaWJ1dGUgYW5kIHRoZSBgbnVsbF9hZGRfZGV2KClgIGZ1bmN0aW9uLiBUaGF0IG1ha2VzIHNlbnNlOyB0aGVzZSB0eXBlcyBvZiBpbnRlcmFjdGlvbnMgYXJlIGFsd2F5cyBhIHBvdGVudGlhbCBzb3VyY2Ugb2YgdHJvdWJsZS4gTGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gVGhlIGF0dHJpYnV0ZSBtb2RpZmljYXRpb24gZnVuY3Rpb25zIGFyZSBjcmVhdGVkIHVzaW5nIGBOVUxMQl9ERVZJQ0VfQVRUUmAsIGFuZCB0aGV5JiMzOTtyZSBnaXZlbiB0aGUgbmFtZXMgYG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZWAuIEFuZCBJIHNlZSB0aGV5JiMzOTtyZSBzdGF0aWMgZnVuY3Rpb25zLiBJbnRlcmVzdGluZy4gVGhhdCBzZWVtcyByZWxldmFudC4gQW5kIGBudWxsX2FkZF9kZXZgIGlzICphbHNvKiBzdGF0aWMuIEhtbS4gSXMgdGhlcmUgKmFueSogbm9uLXN0YXRpYyBmdW5jdGlvbiBpbnZvbHZlZCBpbiB0aGlzIGNyaXRpY2FsIHBhdGg/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbiBzY29wZSBmb3IgdGhlc2Ugb3BlcmF0aW9ucyB0byBuYXJyb3cgZG93biB3aGVyZSB0byBmb2N1cyBteSBhbmFseXNpcy4KCkxldCYjMzk7cyBzZWUuLi4gbG9va2luZyBhdCB0aGUgY29kZSwgSSBzZWUgYG51bGxfaW5pdGAgYW5kIGBudWxsX2V4aXRgLCB3aGljaCBhcmUsIG9mIGNvdXJzZSwgdGhlIGluaXQgYW5kIGV4aXQgZnVuY3Rpb25zLiBCdXQgdGhvc2UgYXJlbiYjMzk7dCBkaXJlY3RseSBpbnZvbHZlZCBpbiB0aGlzIHBhcnRpY3VsYXIgcmFjZSwgYW5kIHRoZSByZWxldmFudCBmdW5jdGlvbnMgYXJlIHN0YXRpYy4KCkFscmlnaHQsIHNvIHRoZSBjb25maWdmcyBvcGVyYXRpb25zIGFyZSByZWdpc3RlcmVkIHRocm91Z2ggYG51bGxiX2RldmljZV90eXBlYCBhbmQgYG51bGxiX3N1YnN5c2AuIFRoZSBlbnRyeSBwb2ludHMgZm9yIHRoZSBjb25maWdmcyBpbnRlcmFjdGlvbnMgYXJlIHRoZSBzdG9yZS9zaG93IGZ1bmN0aW9ucy4gQW5kIHRoZXkmIzM5O3JlIHN0YXRpYy4gVGhhdCBtZWFucyBJIGNhbiYjMzk7dCBkaXJlY3RseSBzcGVjaWZ5IHRoZW0gaW4gYSB0b29sIGxpa2UgYEZvY3VzU3ltYm9sc2AuIFRoYXQmIzM5O3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyLiBCdXQgd2FpdCwgd2hhdCBhYm91dCBgbnVsbF9hZGRfZGV2YD8gSXQmIzM5O3Mgc3RhdGljIHRvby4gU28gSSBjYW4mIzM5O3QgZm9jdXMgdGhlcmUgZWl0aGVyLgoKTGV0IG1lIHRha2UgYSBzdGVwIGJhY2sgYW5kIHNlZSB3aGF0IG90aGVyIGNvZGUgbWlnaHQgYmUgaW52b2x2ZWQuIFNpbmNlIHRoZSBmdW5jdGlvbnMgaW4gYG1haW4uY2AgYXJlIHN0YXRpYywgYXJlIHRoZXJlIGFueSBvdGhlciBmaWxlcyBpbiBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9gIHRoYXQgY291bGQgYmUgcmVsZXZhbnQ/IEkgbmVlZCB0byBicm9hZGVuIG15IHNjb3BlIGEgYml0IGFuZCBzZWUgaWYgdGhlcmUgYXJlIG90aGVyLCBwb3NzaWJseSBub24tc3RhdGljIGZ1bmN0aW9ucywgdGhhdCBjb3VsZCBwbGF5IGEgcm9sZSBpbiB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O21haW4uYyYjMzQ7LAogICAgJiMzNDtudWxsX2Jsay5oJiMzNDssCiAgICAmIzM0O3RyYWNlLmMmIzM0OywKICAgICYjMzQ7dHJhY2UuaCYjMzQ7LAogICAgJiMzNDt6b25lZC5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUwMDcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBSYWNlIENvbmRpdGlvbnMgaW4gdGhlIE51bGwgQmxvY2sgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIHBpbnBvaW50IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgaW4gdGhlIG51bGwgYmxvY2sgZHJpdmVyIChgbWFpbi5jYCBzcGVjaWZpY2FsbHkpLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY2hlY2sgaWYgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiBgbWFpbi5jYCBhcmUgY2FsbGVkIGZyb20gb3V0c2lkZSB0aGUgbW9kdWxlLiBUaGF0IHdvdWxkIGJlIGEgbGlrZWx5IGVudHJ5IHBvaW50IGZvciBjb25jdXJyZW5jeSBpc3N1ZXMuIEhvd2V2ZXIsIHNpbmNlIHRoaXMgaXMgYSBtb2R1bGUsIEkmIzM5O20gYWxyZWFkeSBhd2FyZSB0aGF0IHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyBhcmUgbW9kdWxlIGluaXRpYWxpemF0aW9uL2V4aXQgcm91dGluZXMgYW5kIHRoZSBjYWxsYmFja3MgYXNzb2NpYXRlZCB3aXRoIGNvbmZpZ2ZzL3N5c2ZzLgoKVGhlIGNvbmZpZ2ZzIGNhbGxiYWNrcyBhcmUgZGVmaW5pdGVseSBjYWxsZWQgdGhyb3VnaCB0aGUgVmlydHVhbCBGaWxlIFN5c3RlbSAoVkZTKSBsYXllci4gU28sIEkgY2FuJiMzOTt0IGp1c3QgdHJhY2sgdGhpbmdzIGZyb20gYG1haW4uY2AuIE5vdywgSSBuZWVkIHRvIGZvY3VzIG9uIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiBhIHBvdGVudGlhbCBzdG9yZSBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmVgLCBhbmQgYG51bGxfYWRkX2RldmAuIFRoZXNlIHNlZW0gbGlrZSB0aGUgdHdvIGZ1bmN0aW9ucyBsaWtlbHkgdG8gaGF2ZSBvdmVybGFwIGlzc3Vlcy4KCmBudWxsX2FkZF9kZXZgIGlzLCBhcyBJIHJlY2FsbCwgY2FsbGVkIGZyb20gYG51bGxfY3JlYXRlX2RldmAsIHdoaWNoIGl0c2VsZiBpcyBwYXJ0IG9mIG1vZHVsZSBpbml0aWFsaXphdGlvbi4gUmlnaHQuIEJ1dCB3YWl0Li4uIGlzIGl0IGFsc28gY2FsbGVkIHZpYSB0aGUgY29uZmlnZnMgcGF0aCB0aHJvdWdoIGBudWxsYl9ncm91cF9tYWtlX2dyb3VwYD8gTm8sIHRoYXQgZG9lc24mIzM5O3QgZmVlbCByaWdodC4gTGV0IG1lIGp1c3QgY29uZmlybSB0aGF0LiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHdoZXJlIHRoYXQgZnVuY3Rpb24gaXMgYWN0dWFsbHkgaW52b2tlZCBmcm9tLiBJIG5lZWQgdG8gdHJhY2UgYmFjayAqaG93KiBgbnVsbF9hZGRfZGV2YCBpcyBjYWxsZWQuIExldCYjMzk7cyBkaWcgaW4gYW5kIHRyYWNrIHRoZSBjYWxsIHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE3OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O251bGxfYWRkX2RldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTI3NT1zdGF0aWMgdm9pZCBudWxsX2RlbF9kZXYoc3RydWN0IG51bGxiICpudWxsYik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyNzY6c3RhdGljIGludCBudWxsX2FkZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTI3Ny1zdGF0aWMgc3RydWN0IG51bGxiICpudWxsX2ZpbmRfZGV2X2J5X25hbWUoY29uc3QgY2hhciAqbmFtZSk7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MzI5PXN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9ib29sX2F0dHJfc3RvcmUoYm9vbCAqdmFsLCBjb25zdCBjaGFyICpwYWdlLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTM0Ni0gKiBUaGUgZGV2aWNlIGNvbmZpZ3VyYXRpb24gaXMgbW9kaWZpZWQgdW5kZXIgdGhlIGdsb2JhbCBsb2NrIHRvIHNlcmlhbGl6ZVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MzQ3OiAqIGF0dHJpYnV0ZSBjaGFuZ2VzIGFnYWluc3QgbnVsbF9hZGRfZGV2KCkgYW5kIG51bGxfZGVsX2RldigpOiB3aXRob3V0IHRoaXMsXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozNDg6ICogYW4gYXR0cmlidXRlIGNvdWxkIGJlIGNoYW5nZWQgd2hpbGUgbnVsbF9hZGRfZGV2KCkgaXMgcnVubmluZywgdGhhdCBpcyxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjM0OTogKiBiZWZvcmUgTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQgaXMgc2V0LCB3aGljaCB3b3VsZCBsZXQgbnVsbF9hZGRfZGV2KClcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTM1MC0gKiBvYnNlcnZlIGluY29uc2lzdGVudCB2YWx1ZXMgZm9yIHRoZSBkZXZpY2UgY29uZmlndXJhdGlvbi5cbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00ODU9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MDEtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1MDI6XHRcdHJldCA9IG51bGxfYWRkX2RldihkZXYpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTAzLVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTk0Mz1zdGF0aWMgYm9vbCBudWxsX3NldHVwX2ZhdWx0KHZvaWQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTk1NS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE5NTY6c3RhdGljIGludCBudWxsX2FkZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTk1Ny17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MjA5Nz1zdGF0aWMgaW50IG51bGxfY3JlYXRlX2Rldih2b2lkKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxMDYtXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjEwNzpcdHJldCA9IG51bGxfYWRkX2RldihkZXYpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjEwOC1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYxNDEKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA0OTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLZXJuZWwgTW9kdWxlJiMzOTtzIFN5bWJvbCBGb2N1cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBrZXJuZWwgbW9kdWxlIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCB3aGljaCBmdW5jdGlvbnMgYXJlIHRoZSBrZXkgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gYEZvY3VzU3ltYm9sc2AuIGBudWxsX2FkZF9kZXZgIGlzIGNhbGxlZCBmcm9tIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIGFuZCBgbnVsbF9jcmVhdGVfZGV2YC4gYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgaXMgYSBjb25maWdmcyBzdG9yZSBjYWxsYmFjayB3aGljaCBtZWFucyBpdCYjMzk7cyBsaWtlbHkgbm90IGlubGluZWQgYmVjYXVzZSBpdHMgYWRkcmVzcyBpcyB0YWtlbi4gVGhlIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiwgdGhlbiwgaXMgYmV0d2VlbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCAod2hpY2ggY2FsbHMgYG51bGxfYWRkX2RldmApIGFuZCBvdGhlciBzaW1pbGFyIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmVgIGZ1bmN0aW9ucy4gU2luY2UgdGhvc2UgYXJlIGFsbCBzdGF0aWMsIHRoZXkgbWlnaHQgYmUgaW5saW5lZC4gQnV0IHdhaXQsIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgICppcyogc3RhdGljLCBidXQgaXRzIGFkZHJlc3MgaXMgdGFrZW4gd2l0aGluIGBDT05GSUdGU19BVFRSYC4KClRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeSBwb2ludHMuIFNvLCB0aGUgaWRlYWwgc2l0dWF0aW9uIHdvdWxkIGJlIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiwgYnV0IHRoZXJlIGRvZXNuJiMzOTt0IHNlZW0gdG8gYmUgb25lLiBUaGVyZWZvcmUgSSBuZWVkIHRvIGRlY2lkZSBpZiBJIGNhbiB1c2Ugc3RhdGljIG9uZXMuIFRoZSBpbnN0cnVjdGlvbnMgdGVsbCBtZSB0byBhdm9pZCBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucywgc28gSSBzaG91bGQgYmUgc2VsZWN0aXZlLgoKVGhpbmtpbmcgYWJvdXQgYG51bGxfYWRkX2RldmAsIGl0JiMzOTtzIG5vdCBpbmxpbmVkIGR1ZSB0byBpdHMgc2l6ZSwgZXZlbiB0aG91Z2ggaXQgKmlzKiBzdGF0aWMuIFRoZSBtYWluIHF1ZXN0aW9uIGlzIGNhbiBJIGxlYXZlIGBGb2N1c1N5bWJvbHNgIGVtcHR5PyBJdCAqc2VlbXMqIGxpa2UgSSBjYW4sIGFzIHRoZXJlIGFyZSBubyBub24tc3RhdGljIGZ1bmN0aW9ucyBtb2RpZmllZC4gVGhlIGluc3RydWN0aW9ucyBhbGxvdyBmb3IgbGVhdmluZyBpdCBlbXB0eS4gSG93ZXZlciwgSSBjb3VsZCBpbmNsdWRlIGBudWxsX2FkZF9kZXZgIGFuZCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCwgYnV0IHRoZSBpbnN0cnVjdGlvbnMgcHJlZmVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zLCB3aGljaCBzdWdnZXN0cyBsZWF2aW5nIHRoZSBsaXN0IGVtcHR5IGlzIGZpbmUgd2hlbiB0aGVyZSBhcmUgbm8gbm9uLXN0YXRpYyBmdW5jdGlvbnMuCgpTbywgaXQmIzM5O3Mgc2FmZXIgdG8gbGVhdmUgYEZvY3VzU3ltYm9sc2AgZW1wdHksIHNpbmNlIHRoZSBpbnN0cnVjdGlvbnMgcHJpb3JpdGl6ZSBub24tc3RhdGljIGVudHJ5IHBvaW50cywgYnV0IGlmIHRoZXJlIGFyZSBubyBub24tc3RhdGljLCBgbnVsbF9hZGRfZGV2YCBtYXkgYmUgYWRkZWQuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBudWxsX2FkZF9kZXZgIGlzIGFjdHVhbGx5IGluIGBrYWxsc3ltc2AuIEl0IHVzdWFsbHkgaXMgYmVjYXVzZSBvZiBpdHMgc2l6ZS4gTGVhdmluZyBpdCBlbXB0eSBpcyBhbHNvIGEgdmFsaWQgYXBwcm9hY2guCgpOb3csIGxldCBtZSBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMuIGBCTEtfREVWX05VTExfQkxLYCBzZWVtcyBsaWtlIHRoZSBwcmltYXJ5IG9uZS4gSSBzaG91bGQgY2hlY2sgYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZ2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBOdWxsIGJsb2NrIGRldmljZSBkcml2ZXIgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgQkxLX0RFVl9OVUxMX0JMS1xuICAgNzpcdFx0dHJpc3RhdGUgXCYjMzQ7TnVsbCB0ZXN0IGJsb2NrIGRyaXZlclwmIzM0O1xuICAgODpcdFx0c2VsZWN0IENPTkZJR0ZTX0ZTXG4gICA5Olx0XG4gIDEwOlx0Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXG4gIDExOlx0XHRib29sIFwmIzM0O1N1cHBvcnQgZmF1bHQgaW5qZWN0aW9uIGZvciBOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXCYjMzQ7XG4gIDEyOlx0XHRkZXBlbmRzIG9uIEJMS19ERVZfTlVMTF9CTEsgXHUwMDI2XHUwMDI2IEZBVUxUX0lOSkVDVElPTl9DT05GSUdGU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzM1MAoJCQkJCQkJb3V0cHV0OiA3OAoJCQkJCQkJdGhvdWdodHM6IDI2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgTnVsbCBCbG9jayBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBgQkxLX0RFVl9OVUxMX0JMS2AgcHVsbHMgaW4gYENPTkZJR0ZTX0ZTYC4gTm90aGluZyB1bmV4cGVjdGVkIHRoZXJlLCBubyBkZXBlbmRlbmNpZXMgdG8gd29ycnkgYWJvdXQuIFNvLCBgRW5hYmxlQ29uZmlnc2Agc2hvdWxkIGFic29sdXRlbHkgaW5jbHVkZSBgQkxLX0RFVl9OVUxMX0JMS2AuIFRoZSBwYXRjaCBkb2VzIHRvdWNoIGNvbmZpZ2ZzIGF0dHJpYnV0ZXMsIHdoaWNoIG1ha2VzIGBDT05GSUdGU19GU2AgcmVsZXZhbnQsIGJ1dCBsaWtlIEkgc2FpZCwgYEJMS19ERVZfTlVMTF9CTEtgIHNlbGVjdHMgaXQsIHNvIHRoYXQmIzM5O3MgaGFuZGxlZC4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIHN3ZWVwIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW52b2x2ZWQuIEhtbSwgaXQgbG9va3MgbGlrZSB0aGlzIHBhdGNoIGlzIGNoYW5naW5nIGBOVUxMQl9ERVZJQ0VfQVRUUmAsIHdoaWNoIGFwcGxpZXMgdG8gYWxsIGF0dHJpYnV0ZXMsIHJpZ2h0PyBSaWdodCwgYW5kIHRoZSByYWNlIGNvbmRpdGlvbiBpcyBiZXR3ZWVuIGBudWxsX2FkZF9kZXZgIGFuZCBhdHRyaWJ1dGUgc3RvcmUgb3BlcmF0aW9ucy4gR2l2ZW4gdGhhdCwgdGhpcyBpcyAqZGVmaW5pdGVseSogd29ydGggZnV6emluZy4KCkFscmlnaHQsIGxldCYjMzk7cyBwdXQgdG9nZXRoZXIgdGhlIHJlc3VsdHMgb2YgdGhpcyBhbmFseXNpcy4KCiogICBgV29ydGhGdXp6aW5nYDogVHJ1ZS4gUmFjZSBjb25kaXRpb25zIGFyZSBmdXp6YWJsZS4KKiAgIGBGb2N1c1N5bWJvbHNgOiBFbXB0eS4gSSBjaGVja2VkIGFuZCBgbnVsbF9hZGRfZGV2YCBpcywgaW4gZmFjdCwgc3RhdGljLiBgbnVsbF9pbml0YCBpcyBhbHNvIGBfX2luaXRgLCBzbyBpdCYjMzk7cyBub3QgYSBmdXp6aW5nIHRhcmdldC4KKiAgIGBFbmFibGVDb25maWdzYDogYFsmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0O11gCiogICBgUmVhc29uaW5nYDogVGhlIHBhdGNoIHRhY2tsZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyJiMzOTtzIGNvbmZpZ2ZzIGludGVyZmFjZS4gTG9ja2luZyBpcyBiZWluZyBhZGRlZCB0byBkZXZpY2UgYXR0cmlidXRlIG1vZGlmaWNhdGlvbnMsIHdoaWNoIHByZXZlbnRzIGNvbmN1cnJlbnQgY2hhbmdlcyB0byBhdHRyaWJ1dGVzIHdoZW4gYSBkZXZpY2UgaXMgYWRkZWQgb3IgcmVtb3ZlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTc6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyJiMzOTtzIGNvbmZpZ2ZzIGludGVyZmFjZSBieSBhZGRpbmcgbG9ja2luZyB0byBkZXZpY2UgYXR0cmlidXRlIG1vZGlmaWNhdGlvbnMuIFRoaXMgcHJldmVudHMgYXR0cmlidXRlcyBmcm9tIGJlaW5nIGNoYW5nZWQgY29uY3VycmVudGx5IHdpdGggZGV2aWNlIGFkZGl0aW9uL3JlbW92YWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyJiMzOTtzIGNvbmZpZ2ZzIGludGVyZmFjZSBieSBhZGRpbmcgbG9ja2luZyB0byBkZXZpY2UgYXR0cmlidXRlIG1vZGlmaWNhdGlvbnMuIFRoaXMgcHJldmVudHMgYXR0cmlidXRlcyBmcm9tIGJlaW5nIGNoYW5nZWQgY29uY3VycmVudGx5IHdpdGggZGV2aWNlIGFkZGl0aW9uL3JlbW92YWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE3OjE1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTc6MTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyIGJ5IHRha2luZyBhIGdsb2JhbCBtdXRleCB3aGVuIHVwZGF0aW5nIGRldmljZSBhdHRyaWJ1dGVzIHZpYSBjb25maWdmcy4gSXQgYWxzbyBjaGFuZ2VzIHRoZSBtdXRleCBpbml0aWFsaXphdGlvbiB0byB1c2UgREVGSU5FX01VVEVYLiBUaGVzZSBjaGFuZ2VzIGFkZHJlc3MgY29uY3VycmVuY3kgaXNzdWVzIGFuZCBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4gQW55IGxvY2tpbmcgaXNzdWVzIG9yIHJhY2UgY29uZGl0aW9ucyB3b3VsZCBiZSBjYXVnaHQgYnkgTE9DS0RFUCBvciBLQ1NBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDY4NGZkODJiZjQxMmM0Mjk1ZDQwOThiNDdkMDVhMmExODk5YmNhZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDEzIDE3OjE0OjUwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYwppbmRleCBmOGMwZmQ1N2UwNDFhLi4yZThmOTk4NzM5NTY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYwpAQCAtNjYsNyAmIzQzOzY2LDcgQEAgc3RydWN0IG51bGxiX3BhZ2UgewogI2RlZmluZSBOVUxMQl9QQUdFX0ZSRUUgKE1BUF9TWiAtIDIpCiAKIHN0YXRpYyBMSVNUX0hFQUQobnVsbGJfbGlzdCk7Ci1zdGF0aWMgc3RydWN0IG11dGV4IGxvY2s7CiYjNDM7c3RhdGljIERFRklORV9NVVRFWChsb2NrKTsKIHN0YXRpYyBpbnQgbnVsbF9tYWpvcjsKIHN0YXRpYyBERUZJTkVfSURBKG51bGxiX2luZGV4ZXMpOwogc3RhdGljIHN0cnVjdCBibGtfbXFfdGFnX3NldCB0YWdfc2V0OwpAQCAtMzQwLDcgJiM0MzszNDAsMTUgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsCiAJcmV0dXJuIGNvdW50OwogfQogCi0vKiBUaGUgZm9sbG93aW5nIG1hY3JvIHNob3VsZCBvbmx5IGJlIHVzZWQgd2l0aCBUWVBFID0ge3VpbnQsIHVsb25nLCBib29sfS4gKi8KJiM0MzsvKgomIzQzOyAqIFRoZSBmb2xsb3dpbmcgbWFjcm8gc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoIFRZUEUgPSB7dWludCwgdWxvbmcsIGJvb2x9LgomIzQzOyAqCiYjNDM7ICogVGhlIGRldmljZSBjb25maWd1cmF0aW9uIGlzIG1vZGlmaWVkIHVuZGVyIHRoZSBnbG9iYWwgbG9jayB0byBzZXJpYWxpemUKJiM0MzsgKiBhdHRyaWJ1dGUgY2hhbmdlcyBhZ2FpbnN0IG51bGxfYWRkX2RldigpIGFuZCBudWxsX2RlbF9kZXYoKTogd2l0aG91dCB0aGlzLAomIzQzOyAqIGFuIGF0dHJpYnV0ZSBjb3VsZCBiZSBjaGFuZ2VkIHdoaWxlIG51bGxfYWRkX2RldigpIGlzIHJ1bm5pbmcsIHRoYXQgaXMsCiYjNDM7ICogYmVmb3JlIE5VTExCX0RFVl9GTF9DT05GSUdVUkVEIGlzIHNldCwgd2hpY2ggd291bGQgbGV0IG51bGxfYWRkX2RldigpCiYjNDM7ICogb2JzZXJ2ZSBpbmNvbnNpc3RlbnQgdmFsdWVzIGZvciB0aGUgZGV2aWNlIGNvbmZpZ3VyYXRpb24uCiYjNDM7ICovCiAjZGVmaW5lIE5VTExCX0RFVklDRV9BVFRSKE5BTUUsIFRZUEUsIEFQUExZKQkJCQlcCiBzdGF0aWMgc3NpemVfdAkJCQkJCQkJXAogbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKQlcCkBAIC0zNjAsMTMgJiM0MzszNjgsMTYgQEAgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSwJXAogCXJldCA9IG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3N0b3JlKCZhbXA7bmV3X3ZhbHVlLCBwYWdlLCBjb3VudCk7XAogCWlmIChyZXQgJmx0OyAwKQkJCQkJCQlcCiAJCXJldHVybiByZXQ7CQkJCQkJXAomIzQzOwltdXRleF9sb2NrKCZhbXA7bG9jayk7CQkJCQkJXAogCWlmIChhcHBseV9mbikJCQkJCQkJXAogCQlyZXQgPSBhcHBseV9mbihkZXYsIG5ld192YWx1ZSk7CQkJCVwKIAllbHNlIGlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgJmFtcDtkZXYtJmd0O2ZsYWdzKSkgCVwKIAkJcmV0ID0gLUVCVVNZOwkJCQkJCVwKJiM0MzsJaWYgKHJldCAmZ3Q7PSAwKQkJCQkJCQlcCiYjNDM7CQlkZXYtJmd0O05BTUUgPSBuZXdfdmFsdWU7CQkJCQlcCiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2xvY2spOwkJCQkJCVwKIAlpZiAocmV0ICZsdDsgMCkJCQkJCQkJXAogCQlyZXR1cm4gcmV0OwkJCQkJCVwKLQlkZXYtJmd0O05BTUUgPSBuZXdfdmFsdWU7CQkJCQkJXAogCXJldHVybiBjb3VudDsJCQkJCQkJXAogfQkJCQkJCQkJCVwKIENPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgTkFNRSk7CkBAIC0zNzksNiAmIzQzOzM5MCw4IEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsCiAJc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQ7CiAJaW50IHJldCwgbnJfaHdfcXVldWVzOwogCiYjNDM7CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmFtcDtsb2NrKTsKJiM0MzsKIAlpZiAoIWRldi0mZ3Q7bnVsbGIpCiAJCXJldHVybiAwOwogCkBAIC00MjEsMjUgJiM0Mzs0MzQsMTMgQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiwKIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsCiAJCQkJICAgICB1bnNpZ25lZCBpbnQgc3VibWl0X3F1ZXVlcykKIHsKLQlpbnQgcmV0OwotCi0JbXV0ZXhfbG9jaygmYW1wO2xvY2spOwotCXJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtJmd0O3BvbGxfcXVldWVzKTsKLQltdXRleF91bmxvY2soJmFtcDtsb2NrKTsKLQotCXJldHVybiByZXQ7CiYjNDM7CXJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LSZndDtwb2xsX3F1ZXVlcyk7CiB9CiAKIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LAogCQkJCSAgIHVuc2lnbmVkIGludCBwb2xsX3F1ZXVlcykKIHsKLQlpbnQgcmV0OwotCi0JbXV0ZXhfbG9jaygmYW1wO2xvY2spOwotCXJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTsKLQltdXRleF91bmxvY2soJmFtcDtsb2NrKTsKLQotCXJldHVybiByZXQ7CiYjNDM7CXJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LSZndDtzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7CiB9CiAKIE5VTExCX0RFVklDRV9BVFRSKHNpemUsIHVsb25nLCBOVUxMKTsKQEAgLTIxNjYsOCAmIzQzOzIxNjcsNiBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZCkKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JbXV0ZXhfaW5pdCgmYW1wO2xvY2spOwotCiAJbnVsbF9tYWpvciA9IHJlZ2lzdGVyX2Jsa2RldigwLCAmIzM0O251bGxiJiMzNDspOwogCWlmIChudWxsX21ham9yICZsdDsgMCkgewogCQlyZXQgPSBudWxsX21ham9yOwpAQCAtMjIxMSw4ICYjNDM7MjIxMCw2IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZCkKIAogCWlmICh0YWdfc2V0Lm9wcykKIAkJYmxrX21xX2ZyZWVfdGFnX3NldCgmYW1wO3RhZ19zZXQpOwotCi0JbXV0ZXhfZGVzdHJveSgmYW1wO2xvY2spOwogfQogCiBtb2R1bGVfaW5pdChudWxsX2luaXQpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA3MwoJCQkJCQkJb3V0cHV0OiAxMjUKCQkJCQkJCXRob3VnaHRzOiAyNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTnVsbCBCbG9jayBEZXZpY2UgRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgZm9jdXNlZCBvbiB0aGUgYG51bGxfYmxrYCBkcml2ZXIsIHNwZWNpZmljYWxseSBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNgLiBJdCYjMzk7cyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgbG9ja2luZyBjb3JyZWN0aW9uLCB3aGljaCBJIGFwcHJlY2lhdGUuIFRoZSBwcmltYXJ5IGNoYW5nZSBpcyB0aGUgcmVwbGFjZW1lbnQgb2YgdGhlIG1hbnVhbCBtdXRleCBpbml0aWFsaXphdGlvbiAoYHN0YXRpYyBzdHJ1Y3QgbXV0ZXggbG9jaztgIGZvbGxvd2VkIGJ5IGBtdXRleF9pbml0KCZhbXA7bG9jayk7YCBhbmQgYG11dGV4X2Rlc3Ryb3koJmFtcDtsb2NrKTtgKSB3aXRoIGBzdGF0aWMgREVGSU5FX01VVEVYKGxvY2spO2AuIFRoYXQmIzM5O3MgY2xlYW5lciwgYW5kIHVzaW5nIGBERUZJTkVfTVVURVhgIGlzIGdlbmVyYWxseSB0aGUgcHJlZmVycmVkIGFwcHJvYWNoIGZvciBzdGF0aWNhbGx5LWRlZmluZWQgbXV0ZXhlcyBpbiB0aGUga2VybmVsLiBUaGlzIGFsc28gcmVtb3ZlcyB0aGUgY2FsbHMgdG8gZXhwbGljaXRseSBpbml0aWFsaXplIGFuZCBkZXN0cm95IHRoZSBtdXRleC4KCkNydWNpYWxseSwgdGhlIGBOVUxMQl9ERVZJQ0VfQVRUUmAgbWFjcm8gaXMgYmVpbmcgdXBkYXRlZCB0byBub3cgKmFjcXVpcmUqIHRoZSBgbG9ja2AgbXV0ZXggd2hlbiBpdCYjMzk7cyB1c2VkIHRvIHVwZGF0ZSBkZXZpY2UgYXR0cmlidXRlcy4gVGhpcyBpcyB0aGUgaGVhcnQgb2YgdGhlIGZpeC4gRnVydGhlcm1vcmUsIHRoZSBjYWxscyB0byBgbXV0ZXhfbG9jaygmYW1wO2xvY2spYCBhcmUgYmVpbmcgcmVtb3ZlZCBmcm9tIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCBhbmQgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYCBiZWNhdXNlIHRoZSBjYWxscyBhcmUgcmVkdW5kYW50OyBub3cgdGhlIG1hY3JvIHdpbGwgaG9sZCB0aGUgbG9jayBkdXJpbmcgdGhlaXIgZXhlY3V0aW9uLiBNYWtlcyBwZXJmZWN0IHNlbnNlLCBlbGltaW5hdGluZyB1bm5lY2Vzc2FyeSBsb2NraW5nIGFuZCBpbXByb3ZpbmcgZWZmaWNpZW5jeS4KClRoZSBhZGRpdGlvbiBvZiBgbG9ja2RlcF9hc3NlcnRfaGVsZCgmYW1wO2xvY2spO2AgaW4gYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgIGlzIGEgbmljZSB0b3VjaC4gSXQgc2VydmVzIGFzIGEgZ29vZCBhc3NlcnRpb24gdG8gZW5zdXJlIHRoYXQgdGhlIGxvY2sgaXMsIGluIGZhY3QsIGhlbGQgd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCwgaGVscGluZyB0byBjYXRjaCBhbnkgZnV0dXJlIHJlZ3Jlc3Npb25zLgoKVGhlIG92ZXJhbGwgZ29hbCBpcyBjbGVhcjogcHJldmVudCByYWNlIGNvbmRpdGlvbnMsIHBhcnRpY3VsYXJseSBhcm91bmQgY29uY3VycmVudCBtb2RpZmljYXRpb25zIHRvIGRldmljZSBhdHRyaWJ1dGVzLCBlc3BlY2lhbGx5IHdoaWxlIGBudWxsX2FkZF9kZXYoKWAgaXMgcnVubmluZy4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgYW5kIGNydWNpYWwga2VybmVsIGJ1ZyBzY2VuYXJpbywgc28gdGhpcyBpcyBhIGdvb2QgZml4LiBJIGRvbiYjMzk7dCBzZWUgYW55IHJpc2tzIGluIHRlcm1zIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGluZm9ybWF0aW9uIGxlYWthZ2UsIHdoaWNoIGlzIGdvb2QuCgpHaXZlbiB0aGF0IHRoaXMgcGF0Y2ggcHJpbWFyaWx5IGFkZHJlc3NlcyByYWNlIGNvbmRpdGlvbnMsIGl0JiMzOTtzIHRoZSBraW5kIG9mIGJ1ZyB0aGF0IEtDU0FOIG9yIGV2ZW4gc3RhbmRhcmQgdGVzdGluZyBhcmUgbGlrZWx5IHRvIGNhdGNoLiBLTVNBTiBpc24mIzM5O3QgdGhlIGFwcHJvcHJpYXRlIHRvb2wgZm9yIHRoaXMgY2xhc3Mgb2YgaXNzdWUsIHNvIEkmIzM5O20gY29tZm9ydGFibGUgc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAuIFRoaXMgbG9va3MgbGlrZSBhIHNvbGlkIGFuZCB0YXJnZXRlZCBsb2NraW5nIGZpeC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTc6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyIGJ5IHRha2luZyBhIGdsb2JhbCBtdXRleCB3aGVuIHVwZGF0aW5nIGRldmljZSBhdHRyaWJ1dGVzIHZpYSBjb25maWdmcy4gSXQgYWxzbyBjaGFuZ2VzIHRoZSBtdXRleCBpbml0aWFsaXphdGlvbiB0byB1c2UgREVGSU5FX01VVEVYLiBUaGVzZSBjaGFuZ2VzIGFkZHJlc3MgY29uY3VycmVuY3kgaXNzdWVzIGFuZCBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4gQW55IGxvY2tpbmcgaXNzdWVzIG9yIHJhY2UgY29uZGl0aW9ucyB3b3VsZCBiZSBjYXVnaHQgYnkgTE9DS0RFUCBvciBLQ1NBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIG51bGxfYmxrIGRyaXZlciBieSB0YWtpbmcgYSBnbG9iYWwgbXV0ZXggd2hlbiB1cGRhdGluZyBkZXZpY2UgYXR0cmlidXRlcyB2aWEgY29uZmlnZnMuIEl0IGFsc28gY2hhbmdlcyB0aGUgbXV0ZXggaW5pdGlhbGl6YXRpb24gdG8gdXNlIERFRklORV9NVVRFWC4gVGhlc2UgY2hhbmdlcyBhZGRyZXNzIGNvbmN1cnJlbmN5IGlzc3VlcyBhbmQgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uIEFueSBsb2NraW5nIGlzc3VlcyBvciByYWNlIGNvbmRpdGlvbnMgd291bGQgYmUgY2F1Z2h0IGJ5IExPQ0tERVAgb3IgS0NTQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE3OjE0OjUyLjM1ODM5MDE4NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxNDQwMjkyMTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfTlVMTF9CTEtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBudWxsX2JsayBkcml2ZXIgYnkgdGFraW5nIGEgZ2xvYmFsIG11dGV4IHdoZW4gdXBkYXRpbmcgZGV2aWNlIGF0dHJpYnV0ZXMgdmlhIGNvbmZpZ2ZzLiBJdCBhbHNvIGNoYW5nZXMgdGhlIG11dGV4IGluaXRpYWxpemF0aW9uIHRvIHVzZSBERUZJTkVfTVVURVguIFRoZXNlIGNoYW5nZXMgYWRkcmVzcyBjb25jdXJyZW5jeSBpc3N1ZXMgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBBbnkgbG9ja2luZyBpc3N1ZXMgb3IgcmFjZSBjb25kaXRpb25zIHdvdWxkIGJlIGNhdWdodCBieSBMT0NLREVQIG9yIEtDU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIG51bGxfYmxrIGRyaXZlcidzIGNvbmZpZ2ZzIGludGVyZmFjZSBieSBhZGRpbmcgbG9ja2luZyB0byBkZXZpY2UgYXR0cmlidXRlIG1vZGlmaWNhdGlvbnMuIFRoaXMgcHJldmVudHMgYXR0cmlidXRlcyBmcm9tIGJlaW5nIGNoYW5nZWQgY29uY3VycmVudGx5IHdpdGggZGV2aWNlIGFkZGl0aW9uL3JlbW92YWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE3OjE0OjUyLjM1ODM5NjcwNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4Mjg3NzU2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDQ2ODRmZDgyYmY0MTJjNDI5NWQ0MDk4YjQ3ZDA1YTJhMTg5OWJjYWRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgMTMgMTc6MTQ6NTAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xcbmluZGV4IGY4YzBmZDU3ZTA0MWEuLjJlOGY5OTg3Mzk1NjggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xcbkBAIC02Niw3ICs2Niw3IEBAIHN0cnVjdCBudWxsYl9wYWdlIHtcXG4gI2RlZmluZSBOVUxMQl9QQUdFX0ZSRUUgKE1BUF9TWiAtIDIpXFxuIFxcbiBzdGF0aWMgTElTVF9IRUFEKG51bGxiX2xpc3QpO1xcbi1zdGF0aWMgc3RydWN0IG11dGV4IGxvY2s7XFxuK3N0YXRpYyBERUZJTkVfTVVURVgobG9jayk7XFxuIHN0YXRpYyBpbnQgbnVsbF9tYWpvcjtcXG4gc3RhdGljIERFRklORV9JREEobnVsbGJfaW5kZXhlcyk7XFxuIHN0YXRpYyBzdHJ1Y3QgYmxrX21xX3RhZ19zZXQgdGFnX3NldDtcXG5AQCAtMzQwLDcgKzM0MCwxNSBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3N0b3JlKGJvb2wgKnZhbCwgY29uc3QgY2hhciAqcGFnZSxcXG4gXFx0cmV0dXJuIGNvdW50O1xcbiB9XFxuIFxcbi0vKiBUaGUgZm9sbG93aW5nIG1hY3JvIHNob3VsZCBvbmx5IGJlIHVzZWQgd2l0aCBUWVBFID0ge3VpbnQsIHVsb25nLCBib29sfS4gKi9cXG4rLypcXG4rICogVGhlIGZvbGxvd2luZyBtYWNybyBzaG91bGQgb25seSBiZSB1c2VkIHdpdGggVFlQRSA9IHt1aW50LCB1bG9uZywgYm9vbH0uXFxuKyAqXFxuKyAqIFRoZSBkZXZpY2UgY29uZmlndXJhdGlvbiBpcyBtb2RpZmllZCB1bmRlciB0aGUgZ2xvYmFsIGxvY2sgdG8gc2VyaWFsaXplXFxuKyAqIGF0dHJpYnV0ZSBjaGFuZ2VzIGFnYWluc3QgbnVsbF9hZGRfZGV2KCkgYW5kIG51bGxfZGVsX2RldigpOiB3aXRob3V0IHRoaXMsXFxuKyAqIGFuIGF0dHJpYnV0ZSBjb3VsZCBiZSBjaGFuZ2VkIHdoaWxlIG51bGxfYWRkX2RldigpIGlzIHJ1bm5pbmcsIHRoYXQgaXMsXFxuKyAqIGJlZm9yZSBOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCBpcyBzZXQsIHdoaWNoIHdvdWxkIGxldCBudWxsX2FkZF9kZXYoKVxcbisgKiBvYnNlcnZlIGluY29uc2lzdGVudCB2YWx1ZXMgZm9yIHRoZSBkZXZpY2UgY29uZmlndXJhdGlvbi5cXG4rICovXFxuICNkZWZpbmUgTlVMTEJfREVWSUNFX0FUVFIoTkFNRSwgVFlQRSwgQVBQTFkpXFx0XFx0XFx0XFx0XFxcXFxcbiBzdGF0aWMgc3NpemVfdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxcdFxcXFxcXG5AQCAtMzYwLDEzICszNjgsMTYgQEAgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcXHRcXFxcXFxuIFxcdHJldCA9IG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3N0b3JlKFxcdTAwMjZuZXdfdmFsdWUsIHBhZ2UsIGNvdW50KTtcXFxcXFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0cmV0dXJuIHJldDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0aWYgKGFwcGx5X2ZuKVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0cmV0ID0gYXBwbHlfZm4oZGV2LCBuZXdfdmFsdWUpO1xcdFxcdFxcdFxcdFxcXFxcXG4gXFx0ZWxzZSBpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsIFxcdTAwMjZkZXYtXFx1MDAzZWZsYWdzKSkgXFx0XFxcXFxcbiBcXHRcXHRyZXQgPSAtRUJVU1k7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRpZiAocmV0IFxcdTAwM2U9IDApXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRkZXYtXFx1MDAzZU5BTUUgPSBuZXdfdmFsdWU7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmxvY2spO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ZGV2LVxcdTAwM2VOQU1FID0gbmV3X3ZhbHVlO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0cmV0dXJuIGNvdW50O1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gfVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gQ09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBOQU1FKTtcXG5AQCAtMzc5LDYgKzM5MCw4IEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuIFxcdHN0cnVjdCBibGtfbXFfdGFnX3NldCAqc2V0O1xcbiBcXHRpbnQgcmV0LCBucl9od19xdWV1ZXM7XFxuIFxcbitcXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZsb2NrKTtcXG4rXFxuIFxcdGlmICghZGV2LVxcdTAwM2VudWxsYilcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbkBAIC00MjEsMjUgKzQzNCwxMyBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxcbiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBzdWJtaXRfcXVldWVzKVxcbiB7XFxuLVxcdGludCByZXQ7XFxuLVxcbi1cXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXG4tXFx0cmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi1cXHUwMDNlcG9sbF9xdWV1ZXMpO1xcbi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmxvY2spO1xcbi1cXG4tXFx0cmV0dXJuIHJldDtcXG4rXFx0cmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtXFx1MDAzZXBvbGxfcXVldWVzKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBwb2xsX3F1ZXVlcylcXG4ge1xcbi1cXHRpbnQgcmV0O1xcbi1cXG4tXFx0bXV0ZXhfbG9jayhcXHUwMDI2bG9jayk7XFxuLVxcdHJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtXFx1MDAzZXN1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTtcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZsb2NrKTtcXG4tXFxuLVxcdHJldHVybiByZXQ7XFxuK1xcdHJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LVxcdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XFxuIH1cXG4gXFxuIE5VTExCX0RFVklDRV9BVFRSKHNpemUsIHVsb25nLCBOVUxMKTtcXG5AQCAtMjE2Niw4ICsyMTY3LDYgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbi1cXHRtdXRleF9pbml0KFxcdTAwMjZsb2NrKTtcXG4tXFxuIFxcdG51bGxfbWFqb3IgPSByZWdpc3Rlcl9ibGtkZXYoMCwgXFxcIm51bGxiXFxcIik7XFxuIFxcdGlmIChudWxsX21ham9yIFxcdTAwM2MgMCkge1xcbiBcXHRcXHRyZXQgPSBudWxsX21ham9yO1xcbkBAIC0yMjExLDggKzIyMTAsNiBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbnVsbF9leGl0KHZvaWQpXFxuIFxcbiBcXHRpZiAodGFnX3NldC5vcHMpXFxuIFxcdFxcdGJsa19tcV9mcmVlX3RhZ19zZXQoXFx1MDAyNnRhZ19zZXQpO1xcbi1cXG4tXFx0bXV0ZXhfZGVzdHJveShcXHUwMDI2bG9jayk7XFxuIH1cXG4gXFxuIG1vZHVsZV9pbml0KG51bGxfaW5pdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE3OjE0OjUzLjg0MjExNDkyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTE5MTYxNjMyNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OVUxMX0JMS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBudWxsX2JsayBkcml2ZXIncyBjb25maWdmcyBpbnRlcmZhY2UgYnkgYWRkaW5nIGxvY2tpbmcgdG8gZGV2aWNlIGF0dHJpYnV0ZSBtb2RpZmljYXRpb25zLiBUaGlzIHByZXZlbnRzIGF0dHJpYnV0ZXMgZnJvbSBiZWluZyBjaGFuZ2VkIGNvbmN1cnJlbnRseSB3aXRoIGRldmljZSBhZGRpdGlvbi9yZW1vdmFsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0Njg0ZmQ4MmJmNDEyYzQyOTVkNDA5OGI0N2QwNWEyYTE4OTliY2FkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMTc6MTQ6NTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5pbmRleCBmOGMwZmQ1N2UwNDFhLi4yZThmOTk4NzM5NTY4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbisrKyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5AQCAtNjYsNyArNjYsNyBAQCBzdHJ1Y3QgbnVsbGJfcGFnZSB7XG4gI2RlZmluZSBOVUxMQl9QQUdFX0ZSRUUgKE1BUF9TWiAtIDIpXG4gXG4gc3RhdGljIExJU1RfSEVBRChudWxsYl9saXN0KTtcbi1zdGF0aWMgc3RydWN0IG11dGV4IGxvY2s7XG4rc3RhdGljIERFRklORV9NVVRFWChsb2NrKTtcbiBzdGF0aWMgaW50IG51bGxfbWFqb3I7XG4gc3RhdGljIERFRklORV9JREEobnVsbGJfaW5kZXhlcyk7XG4gc3RhdGljIHN0cnVjdCBibGtfbXFfdGFnX3NldCB0YWdfc2V0O1xuQEAgLTM0MCw3ICszNDAsMTUgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsXG4gXHRyZXR1cm4gY291bnQ7XG4gfVxuIFxuLS8qIFRoZSBmb2xsb3dpbmcgbWFjcm8gc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoIFRZUEUgPSB7dWludCwgdWxvbmcsIGJvb2x9LiAqL1xuKy8qXG4rICogVGhlIGZvbGxvd2luZyBtYWNybyBzaG91bGQgb25seSBiZSB1c2VkIHdpdGggVFlQRSA9IHt1aW50LCB1bG9uZywgYm9vbH0uXG4rICpcbisgKiBUaGUgZGV2aWNlIGNvbmZpZ3VyYXRpb24gaXMgbW9kaWZpZWQgdW5kZXIgdGhlIGdsb2JhbCBsb2NrIHRvIHNlcmlhbGl6ZVxuKyAqIGF0dHJpYnV0ZSBjaGFuZ2VzIGFnYWluc3QgbnVsbF9hZGRfZGV2KCkgYW5kIG51bGxfZGVsX2RldigpOiB3aXRob3V0IHRoaXMsXG4rICogYW4gYXR0cmlidXRlIGNvdWxkIGJlIGNoYW5nZWQgd2hpbGUgbnVsbF9hZGRfZGV2KCkgaXMgcnVubmluZywgdGhhdCBpcyxcbisgKiBiZWZvcmUgTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQgaXMgc2V0LCB3aGljaCB3b3VsZCBsZXQgbnVsbF9hZGRfZGV2KClcbisgKiBvYnNlcnZlIGluY29uc2lzdGVudCB2YWx1ZXMgZm9yIHRoZSBkZXZpY2UgY29uZmlndXJhdGlvbi5cbisgKi9cbiAjZGVmaW5lIE5VTExCX0RFVklDRV9BVFRSKE5BTUUsIFRZUEUsIEFQUExZKVx0XHRcdFx0XFxcbiBzdGF0aWMgc3NpemVfdFx0XHRcdFx0XHRcdFx0XHRcXFxuIG51bGxiX2RldmljZV8jI05BTUUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcdFxcXG5AQCAtMzYwLDEzICszNjgsMTYgQEAgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcdFxcXG4gXHRyZXQgPSBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zdG9yZShcdTAwMjZuZXdfdmFsdWUsIHBhZ2UsIGNvdW50KTtcXFxuIFx0aWYgKHJldCBcdTAwM2MgMClcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdHJldHVybiByZXQ7XHRcdFx0XHRcdFx0XFxcbitcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XHRcdFx0XHRcdFx0XFxcbiBcdGlmIChhcHBseV9mbilcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdHJldCA9IGFwcGx5X2ZuKGRldiwgbmV3X3ZhbHVlKTtcdFx0XHRcdFxcXG4gXHRlbHNlIGlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSkgXHRcXFxuIFx0XHRyZXQgPSAtRUJVU1k7XHRcdFx0XHRcdFx0XFxcbitcdGlmIChyZXQgXHUwMDNlPSAwKVx0XHRcdFx0XHRcdFx0XFxcbitcdFx0ZGV2LVx1MDAzZU5BTUUgPSBuZXdfdmFsdWU7XHRcdFx0XHRcdFxcXG4rXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XHRcdFx0XHRcdFx0XFxcbiBcdGlmIChyZXQgXHUwMDNjIDApXHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRyZXR1cm4gcmV0O1x0XHRcdFx0XHRcdFxcXG4tXHRkZXYtXHUwMDNlTkFNRSA9IG5ld192YWx1ZTtcdFx0XHRcdFx0XHRcXFxuIFx0cmV0dXJuIGNvdW50O1x0XHRcdFx0XHRcdFx0XFxcbiB9XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIE5BTUUpO1xuQEAgLTM3OSw2ICszOTAsOCBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0c3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQ7XG4gXHRpbnQgcmV0LCBucl9od19xdWV1ZXM7XG4gXG4rXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNmxvY2spO1xuK1xuIFx0aWYgKCFkZXYtXHUwMDNlbnVsbGIpXG4gXHRcdHJldHVybiAwO1xuIFxuQEAgLTQyMSwyNSArNDM0LDEzIEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4gc3RhdGljIGludCBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgICAgdW5zaWduZWQgaW50IHN1Ym1pdF9xdWV1ZXMpXG4ge1xuLVx0aW50IHJldDtcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4tXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LVx1MDAzZXBvbGxfcXVldWVzKTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbi1cbi1cdHJldHVybiByZXQ7XG4rXHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi1cdTAwM2Vwb2xsX3F1ZXVlcyk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICAgdW5zaWduZWQgaW50IHBvbGxfcXVldWVzKVxuIHtcbi1cdGludCByZXQ7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuLVx0cmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi1cdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4tXG4tXHRyZXR1cm4gcmV0O1xuK1x0cmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpO1xuIH1cbiBcbiBOVUxMQl9ERVZJQ0VfQVRUUihzaXplLCB1bG9uZywgTlVMTCk7XG5AQCAtMjE2Niw4ICsyMTY3LDYgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0bXV0ZXhfaW5pdChcdTAwMjZsb2NrKTtcbi1cbiBcdG51bGxfbWFqb3IgPSByZWdpc3Rlcl9ibGtkZXYoMCwgXCJudWxsYlwiKTtcbiBcdGlmIChudWxsX21ham9yIFx1MDAzYyAwKSB7XG4gXHRcdHJldCA9IG51bGxfbWFqb3I7XG5AQCAtMjIxMSw4ICsyMjEwLDYgQEAgc3RhdGljIHZvaWQgX19leGl0IG51bGxfZXhpdCh2b2lkKVxuIFxuIFx0aWYgKHRhZ19zZXQub3BzKVxuIFx0XHRibGtfbXFfZnJlZV90YWdfc2V0KFx1MDAyNnRhZ19zZXQpO1xuLVxuLVx0bXV0ZXhfZGVzdHJveShcdTAwMjZsb2NrKTtcbiB9XG4gXG4gbW9kdWxlX2luaXQobnVsbF9pbml0KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE3OjE0OjUzLjg0MjExNjIyOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwODE5MDU4NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY2AuIEl0J3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGNoYW5nZSwgYnV0IGltcG9ydGFudCBmb3IgY29ycmVjdG5lc3MsIEknZCBzYXkuIFRoZXkndmUgcmVwbGFjZWQgdGhlIG1hbnVhbCBtdXRleCBpbml0aWFsaXphdGlvbiAoYG11dGV4X2luaXRgLCBgbXV0ZXhfZGVzdHJveWApIGFuZCBsb2NraW5nIHdpdGggdGhlIGBERUZJTkVfTVVURVhgIG1hY3JvIGFuZCB0aGUgbW9yZSBjb25jaXNlIGxvY2tpbmcgd2l0aGluIHRoZSBgTlVMTEJfREVWSUNFX0FUVFJgIG1hY3JvLiBUaGV5J3ZlIGFsc28gY2xlYW5lZCB1cCBzb21lIGxvY2sgY2FsbHMgaW4gdGhlIGBudWxsYl9hcHBseV8qX3F1ZXVlc2AgZnVuY3Rpb25zLiBQbHVzLCB0aGF0IGBsb2NrZGVwX2Fzc2VydF9oZWxkYCBjYWxsIGluIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCBpcyBhIGdvb2QgcHJhY3RpY2UgdG8gZW5zdXJlIHRoZSBsb2NrIGlzIGhlbGQgd2hlcmUgaXQgc2hvdWxkIGJlLlxuXG5UaGUgbmV0IGVmZmVjdCBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEVuY2Fwc3VsYXRpbmcgdGhlIGxvY2tpbmcgd2l0aGluIGBOVUxMQl9ERVZJQ0VfQVRUUmAgbWVhbnMgdGhhdCBhbnkgYXR0cmlidXRlIGRlZmluZWQgdXNpbmcgdGhhdCBtYWNybyB3aWxsIG5vdyBiZSBwcm90ZWN0ZWQgYnkgdGhpcyBgbG9ja2AgbXV0ZXguIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIG11c3QgYmUgZml4aW5nIGEgcmFjZSBjb25kaXRpb24sIGFuZCBpdCBkb2VzISBBcHBhcmVudGx5IHRoZXJlJ3MgYSBwcm9ibGVtIHdoZXJlIGFuIGF0dHJpYnV0ZSBjb3VsZCBiZSBjaGFuZ2VkIGNvbmN1cnJlbnRseSB3aXRoIGBudWxsX2FkZF9kZXYoKWAgcnVubmluZy4gVGhhdCdzIGEgY2xhc3NpYyBpc3N1ZSBpbiBibG9jayBkcml2ZXJzLCBhbmQgaXQncyBnb29kIHRoZXkncmUgYWRkcmVzc2luZyBpdC5cblxuTm93LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGFmZmVjdHMuIGBOVUxMQl9ERVZJQ0VfQVRUUmAgZGVmaW5lcyBjb25maWdmcyBhdHRyaWJ1dGVzIGZvciB0aGUgbnVsbCBibG9jayBkZXZpY2VzLiBUaGF0J3MgcmlnaHQsIHRob3NlIGFyZSB0aGUgYXR0cmlidXRlcyB0aGF0IGxldCB5b3UgY29uZmlndXJlIHRoZSBkZXZpY2UgdGhyb3VnaCB0aGUgY29uZmlnZnMgaW50ZXJmYWNlLiBBbmQgbnVsbF9ibGsuLi4geWVhaCwgdGhhdCdzIGp1c3QgYSBzb2Z0d2FyZSBibG9jayBkZXZpY2UuIEl0J3Mgb2Z0ZW4gdXNlZCBmb3IgdGVzdGluZywgYnV0IEkga25vdyBpdCdzICpkZWZpbml0ZWx5KiB1c2VkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gU28sIHRoaXMgY2hhbmdlIGNvdWxkIHBvdGVudGlhbGx5IGltcGFjdCBhbnlvbmUgdXNpbmcgbnVsbF9ibGsgaW4gdGhhdCBjb250ZXh0LlxuXG5Pa2F5LCBub3cgbGV0J3MgZ28gZmluZCB0aGUgc3BlY2lmaWMgY29uZmlnIG9wdGlvbnMgZm9yIG51bGxfYmxrIHRvIHNlZSBpZiBpdCdzIGVuYWJsZWQgYnkgZGVmYXVsdC4gR290dGEgdW5kZXJzdGFuZCB0aGUgaW1wYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDc2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTc6MTU6MDAuOTI0MDI2MjA4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NjgxOTMwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9OVUxMX0JMS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE3OjE1OjAwLjk3MTczMjcxOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NDUzNTA3NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTnVsbCBCbG9jayBEZXZpY2UgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgbnVsbCBibG9jayBkZXZpY2UgKGBudWxsX2Jsa2ApIGxpdmVzLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRvIGxvb2sgaW4gdGhlIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWdgIGZpbGUuIFRoYXQncyB1c3VhbGx5IHRoZSBzdGFuZGFyZCBsb2NhdGlvbiBmb3IgZHJpdmVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSG93ZXZlciwgSSBtaWdodCBqdXN0IGJlIG92ZXJ0aGlua2luZyB0aGlzLiBUbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIGEgcXVpY2sgYGdyZXBgIGZvciB0aGUgYEJMS19ERVZfTlVMTF9CTEtgIHN5bWJvbCBhY3Jvc3MgdGhlIGtlcm5lbCBzb3VyY2Ugd291bGQgcXVpY2tseSBjb25maXJtIGlmIGl0J3MgdGhlcmUgYW5kIHBvc3NpYmx5IHJldmVhbCBkZXBlbmRlbmNpZXMgb3Igb3RoZXIgcmVsZXZhbnQgS2NvbmZpZyBlbnRyaWVzLCBqdXN0IGluIGNhc2Ugc29tZXRoaW5nJ3MgYmVlbiBtb3ZlZCBhcm91bmQgb3IgZGlmZmVyZW50bHkgbmFtZWQuIEdvdHRhIGJlIGVmZmljaWVudCBoZXJlLiBJJ2xsIHN0YXJ0IHdpdGggdGhlIG9idmlvdXMgbG9jYXRpb24gYW5kIHRoZW4gZXhwYW5kIG15IHNlYXJjaCBpZiBuZWVkZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MTcsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNzoxNTowNC40MTcwODU5MTNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk2MTM3MTk0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9OVUxMX0JMS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTUtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjY6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiTnVsbCB0ZXN0IGJsb2NrIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy05LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzoxMDpjb25maWcgQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctMTEtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmYXVsdCBpbmplY3Rpb24gZm9yIE51bGwgdGVzdCBibG9jayBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE3OjE1OjA2LjM3ODQ2MzQ0M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NjEwNTY0MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgTnVsbCBCbG9jayBEZXZpY2UgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBCTEtfREVWX05VTExfQkxLYC4gVGhhdCdzIHRoZSBjb25maWcgaW4gcGxheSBoZXJlLiBNeSBwcmltYXJ5IGdvYWwgaXMgdG8gaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgZm9yIGZ1enppbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbnVsbCBibG9jayBkZXZpY2UgY29uZmlndXJhdGlvbiBhY3R1YWxseSBvcGVyYXRlcy5cblxuVGhlIG1hY3JvIGBOVUxMQl9ERVZJQ0VfQVRUUmAgaXMgdGhlIGtleS4gSSByZWNvZ25pemUgaXQgZ2VuZXJhdGVzIGZ1bmN0aW9ucy4gVGhleSBoYXZlIGEgcHJlZGljdGFibGUgcGF0dGVybjogYG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZWAuIFRoaXMgc2VlbXMgbGlrZSB0aGUgZ2F0ZXdheSB0byBtYW5pcHVsYXRpbmcgYW5kIGludGVyYWN0aW5nIHdpdGggdGhlIGRldmljZS4gQW5kLCBpbXBvcnRhbnRseSwgdGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgdGhyb3VnaCBjb25maWdmcy4gVGhpcyBpcyB0aGUgZW50cnlwb2ludCB0byBiZSBjb25jZXJuZWQgd2l0aC5cblxuVGhlcmVmb3JlLCBteSBuZXh0IHN0ZXAgaXMgY2xlYXIuIEkgbmVlZCB0byBtZXRpY3Vsb3VzbHkgZXhhbWluZSBob3cgYE5VTExCX0RFVklDRV9BVFRSYCBpcyB1c2VkLiBJJ2xsIHNlYXJjaCBmb3IgZXZlcnkgaW5zdGFuY2Ugb2YgdGhpcyBtYWNybyBhbmQgZG9jdW1lbnQgYWxsIHRoZSBmdW5jdGlvbnMgaXQgZGVmaW5lcy4gVGhlIG9iamVjdGl2ZSBpcyB0byBtYXAgdGhlIGVudHJ5IHBvaW50cy4gVW5kZXJzdGFuZGluZyB0aGVzZSBmdW5jdGlvbnMgd2lsbCBhbGxvdyBtZSB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24gdGhlIHBhcnRzIG9mIHRoZSBjb2RlIG1vc3QgbGlrZWx5IHRvIHJldmVhbCB2dWxuZXJhYmlsaXRpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxOTUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNzoxNToxMS4wMzk1MjI4MjdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyNjcwNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTlVMTEJfREVWSUNFX0FUVFJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MzI5PXN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9ib29sX2F0dHJfc3RvcmUoYm9vbCAqdmFsLCBjb25zdCBjaGFyICpwYWdlLFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzUxLSAqL1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjM1MjojZGVmaW5lIE5VTExCX0RFVklDRV9BVFRSKE5BTUUsIFRZUEUsIEFQUExZKVxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zNTMtc3RhdGljIHNzaXplX3RcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00NDA9c3RhdGljIGludCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00NDUtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQ2Ok5VTExCX0RFVklDRV9BVFRSKHNpemUsIHVsb25nLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NDc6TlVMTEJfREVWSUNFX0FUVFIoY29tcGxldGlvbl9uc2VjLCB1bG9uZywgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQ4Ok5VTExCX0RFVklDRV9BVFRSKHN1Ym1pdF9xdWV1ZXMsIHVpbnQsIG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0OTpOVUxMQl9ERVZJQ0VfQVRUUihwb2xsX3F1ZXVlcywgdWludCwgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1MDpOVUxMQl9ERVZJQ0VfQVRUUihob21lX25vZGUsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1MTpOVUxMQl9ERVZJQ0VfQVRUUihxdWV1ZV9tb2RlLCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTI6TlVMTEJfREVWSUNFX0FUVFIoYmxvY2tzaXplLCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTM6TlVMTEJfREVWSUNFX0FUVFIobWF4X3NlY3RvcnMsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1NDpOVUxMQl9ERVZJQ0VfQVRUUihpcnFtb2RlLCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTU6TlVMTEJfREVWSUNFX0FUVFIoaHdfcXVldWVfZGVwdGgsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1NjpOVUxMQl9ERVZJQ0VfQVRUUihpbmRleCwgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDU3Ok5VTExCX0RFVklDRV9BVFRSKGJsb2NraW5nLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTg6TlVMTEJfREVWSUNFX0FUVFIodXNlX3Blcl9ub2RlX2hjdHgsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1OTpOVUxMQl9ERVZJQ0VfQVRUUihtZW1vcnlfYmFja2VkLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjA6TlVMTEJfREVWSUNFX0FUVFIoZGlzY2FyZCwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDYxOk5VTExCX0RFVklDRV9BVFRSKG1icHMsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2MjpOVUxMQl9ERVZJQ0VfQVRUUihjYWNoZV9zaXplLCB1bG9uZywgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDYzOk5VTExCX0RFVklDRV9BVFRSKHpvbmVkLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjQ6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9zaXplLCB1bG9uZywgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY1Ok5VTExCX0RFVklDRV9BVFRSKHpvbmVfY2FwYWNpdHksIHVsb25nLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjY6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9ucl9jb252LCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Njc6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9tYXhfb3BlbiwgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY4Ok5VTExCX0RFVklDRV9BVFRSKHpvbmVfbWF4X2FjdGl2ZSwgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY5Ok5VTExCX0RFVklDRV9BVFRSKHpvbmVfYXBwZW5kX21heF9zZWN0b3JzLCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzA6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9mdWxsLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzE6TlVMTEJfREVWSUNFX0FUVFIodmlydF9ib3VuZGFyeSwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDcyOk5VTExCX0RFVklDRV9BVFRSKG5vX3NjaGVkLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzM6TlVMTEJfREVWSUNFX0FUVFIoc2hhcmVkX3RhZ3MsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3NDpOVUxMQl9ERVZJQ0VfQVRUUihzaGFyZWRfdGFnX2JpdG1hcCwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc1Ok5VTExCX0RFVklDRV9BVFRSKGZ1YSwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc2Ok5VTExCX0RFVklDRV9BVFRSKHJvdGF0aW9uYWwsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3NzpOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3Nfb25jZSwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc4Ok5VTExCX0RFVklDRV9BVFRSKGJhZGJsb2Nrc19wYXJ0aWFsX2lvLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00NzktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE3OjE1OjExLjA4NDc5NDI0NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1MzkxMTA1NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgbnVsbCBibG9jayBkZXZpY2UgZHJpdmVyLiBUaGUgbWFjcm8sIHRoZSBgbnVsbGJfZGV2aWNlX3NpemVfc3RvcmVgLCBhbmQgYG51bGxiX2RldmljZV9zdWJtaXRfcXVldWVzX3N0b3JlYCBmdW5jdGlvbnMgaXQgZ2VuZXJhdGVzIGFyZSBzdGF0aWMuIFRoYXQncyBhIHBhdHRlcm4sIGlzbid0IGl0PyBBbmQgdGhlbiBJIHNlZSBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AgYW5kIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AsIGFsc28gc3RhdGljLiBFdmVuIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCBpcyBzdGF0aWMuIEhtbSwgaXMgYW55dGhpbmcgKm5vdCogc3RhdGljIGJlaW5nIG1vZGlmaWVkIGhlcmU/XG5cbkxldCBtZSByZXZpZXcsIHRoZSBwYXRjaCBkb2VzIHRvdWNoIGBudWxsX2luaXRgIGFuZCBgbnVsbF9leGl0YCwgYnV0IHRob3NlIGxvb2sgbGlrZSBzdGFuZGFyZCBpbml0aWFsaXphdGlvbiBhbmQgY2xlYW51cCByb3V0aW5lcywgYW5kIHRoZSBjaGFuZ2VzIGFyZSBzaW1wbGUgKG11dGV4IGluaXQvZGVzdHJveSByZW1vdmVkLCBubyBiaWcgZGVhbCkuIEFuZCBpdCB0b3VjaGVzIHRoZSBtYWNybyBgTlVMTEJfREVWSUNFX0FUVFJgLCB3aGljaCAqZ2VuZXJhdGVzKiBzdGF0aWMgZnVuY3Rpb25zLiBUaGUgZm9jdXMgcmVhbGx5IHNlZW1zIHRvIGJlIG9uIHRob3NlIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zOiBgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc2AsIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCwgYW5kIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AuXG5cblJpZ2h0LiBMZXQncyBkaWcgZGVlcGVyIGludG8gdGhlIGFjdHVhbCBjb2RlIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY2AgdGhhdCBhcmUgc29tZWhvdyByZWxhdGVkIHRvIHRoZXNlIGZ1bmN0aW9ucyBhbmQgaGF2ZSBiZWVuIG1vZGlmaWVkIGluZGlyZWN0bHksIG9yIHdob3NlIGJlaGF2aW91ciBtaWdodCBiZSBpbXBhY3RlZCBieSB0aGUgY2hhbmdlcyBpbiB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGZlZWwgZm9yIHRoZSBiaWdnZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTgxOSwiT3V0cHV0VG9rZW5zIjo3NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNzoxNToxNi42MjM5MDc0NTFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NDU5ODcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4oW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcXFxzKykrXFxcXCo/W2EtekEtWl9dW2EtekEtWjAtOV9dKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIyLSNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMzpzdGF0aWMgREVDTEFSRV9GQVVMVF9BVFRSKG51bGxfdGltZW91dF9hdHRyKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyNDpzdGF0aWMgREVDTEFSRV9GQVVMVF9BVFRSKG51bGxfcmVxdWV1ZV9hdHRyKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyNTpzdGF0aWMgREVDTEFSRV9GQVVMVF9BVFRSKG51bGxfaW5pdF9oY3R4X2F0dHIpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTI2LSNlbmRpZlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTI3LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjI4OnN0YXRpYyBpbmxpbmUgdTY0IG1iX3Blcl90aWNrKGludCBtYnBzKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTI5LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTYxPXN0cnVjdCBudWxsYl9wYWdlIHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTY3LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjY4OnN0YXRpYyBMSVNUX0hFQUQobnVsbGJfbGlzdCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Njk6c3RhdGljIERFRklORV9NVVRFWChsb2NrKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03MC1zdGF0aWMgaW50IG51bGxfbWFqb3I7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NzE6c3RhdGljIERFRklORV9JREEobnVsbGJfaW5kZXhlcyk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzItc3RhdGljIHN0cnVjdCBibGtfbXFfdGFnX3NldCB0YWdfc2V0O1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTMwPXN0YXRpYyBpbnQgZ19xdWV1ZV9tb2RlID0gTlVMTF9RX01RO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEzMS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxMzI6c3RhdGljIGludCBudWxsX3BhcmFtX3N0b3JlX3ZhbChjb25zdCBjaGFyICpzdHIsIGludCAqdmFsLCBpbnQgbWluLCBpbnQgbWF4KVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEzMy17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNDYtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTQ3OnN0YXRpYyBpbnQgbnVsbF9zZXRfcXVldWVfbW9kZShjb25zdCBjaGFyICpzdHIsIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE0OC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xODg9c3RhdGljIGludCBnX2lycW1vZGUgPSBOVUxMX0lSUV9TT0ZUSVJRO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE4OS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxOTA6c3RhdGljIGludCBudWxsX3NldF9pcnFtb2RlKGNvbnN0IGNoYXIgKnN0ciwgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTkxLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTI3MT1NT0RVTEVfUEFSTV9ERVNDKHJvdGF0aW9uYWwsIFxcXCJTZXQgdGhlIHJvdGF0aW9uYWwgZmVhdHVyZSBmb3IgdGhlIGRldmljZS4gRGVmYXVsdDogZmFsc2VcXFwiKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yNzItXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjczOnN0YXRpYyBzdHJ1Y3QgbnVsbGJfZGV2aWNlICpudWxsX2FsbG9jX2Rldih2b2lkKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyNzQ6c3RhdGljIHZvaWQgbnVsbF9mcmVlX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjI3NTpzdGF0aWMgdm9pZCBudWxsX2RlbF9kZXYoc3RydWN0IG51bGxiICpudWxsYik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mjc2OnN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mjc3OnN0YXRpYyBzdHJ1Y3QgbnVsbGIgKm51bGxfZmluZF9kZXZfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyNzg6c3RhdGljIHZvaWQgbnVsbF9mcmVlX2RldmljZV9zdG9yYWdlKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiwgYm9vbCBpc19jYWNoZSk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjc5LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjI4MDpzdGF0aWMgaW5saW5lIHN0cnVjdCBudWxsYl9kZXZpY2UgKnRvX251bGxiX2RldmljZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0pXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjgxLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTI4NC1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyODU6c3RhdGljIGlubGluZSBzc2l6ZV90IG51bGxiX2RldmljZV91aW50X2F0dHJfc2hvdyh1bnNpZ25lZCBpbnQgdmFsLCBjaGFyICpwYWdlKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTI4Ni17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yODktXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjkwOnN0YXRpYyBpbmxpbmUgc3NpemVfdCBudWxsYl9kZXZpY2VfdWxvbmdfYXR0cl9zaG93KHVuc2lnbmVkIGxvbmcgdmFsLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTI5MS1cXHRjaGFyICpwYWdlKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjk1LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjI5NjpzdGF0aWMgaW5saW5lIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zaG93KGJvb2wgdmFsLCBjaGFyICpwYWdlKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTI5Ny17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zMDAtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MzAxOnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV91aW50X2F0dHJfc3RvcmUodW5zaWduZWQgaW50ICp2YWwsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzAyLVxcdGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTMxNC1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozMTU6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Vsb25nX2F0dHJfc3RvcmUodW5zaWduZWQgbG9uZyAqdmFsLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTMxNi1cXHRjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zMjgtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MzI5OnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9ib29sX2F0dHJfc3RvcmUoYm9vbCAqdmFsLCBjb25zdCBjaGFyICpwYWdlLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTMzMC1cXHRzaXplX3QgY291bnQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0zODM9Q09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBOQU1FKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zODQtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mzg1OnN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzg2LVxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IHN1Ym1pdF9xdWV1ZXMsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00MzMtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDM0OnN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDM1LVxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IHN1Ym1pdF9xdWV1ZXMpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00MzktXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQwOnN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ0MS1cXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBpbnQgcG9sbF9xdWV1ZXMpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00Nzg9TlVMTEJfREVWSUNFX0FUVFIoYmFkYmxvY2tzX3BhcnRpYWxfaW8sIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ3OS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0ODA6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ4MS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00ODQtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDg1OnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDg2LVxcdFxcdFxcdFxcdCAgICAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGNvdW50KVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NTI0PUNPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgcG93ZXIpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTUyNS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1MjY6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2JhZGJsb2Nrc19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01Mjcte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTMyLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjUzMzpzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfYmFkYmxvY2tzX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MzQtXFx0XFx0XFx0XFx0ICAgICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz01Nzc9Q09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBiYWRibG9ja3MpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTU3OC1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1Nzk6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTU4MC1cXHRcXHRcXHRcXHRcXHRcXHRjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz01ODY9Q09ORklHRlNfQVRUUl9XTyhudWxsYl9kZXZpY2VfLCB6b25lX3JlYWRvbmx5KTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01ODctXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NTg4OnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV96b25lX29mZmxpbmVfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTU4OS1cXHRcXHRcXHRcXHRcXHQgICAgICAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGNvdW50KVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NTk3PXN0YXRpYyBzdHJ1Y3QgY29uZmlnZnNfYXR0cmlidXRlICpudWxsYl9kZXZpY2VfYXR0cnNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTYzNy1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo2Mzg6c3RhdGljIHZvaWQgbnVsbGJfZGV2aWNlX3JlbGVhc2Uoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTYzOS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz02NTA9c3RhdGljIGNvbnN0IHN0cnVjdCBjb25maWdfaXRlbV90eXBlIG51bGxiX2RldmljZV90eXBlID0ge1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNjU3LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjY1ODpzdGF0aWMgdm9pZCBudWxsYl9hZGRfZmF1bHRfY29uZmlnKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy02NTkte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNjY4LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjY2OTpzdGF0aWMgdm9pZCBudWxsYl9kZWxfZmF1bHRfY29uZmlnKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy02NzAte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNjc3LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjY3ODpzdGF0aWMgdm9pZCBudWxsYl9hZGRfZmF1bHRfY29uZmlnKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy02Nzkte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNjgxLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjY4MjpzdGF0aWMgdm9pZCBudWxsYl9kZWxfZmF1bHRfY29uZmlnKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy02ODMte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9Njg3PXN0YXRpYyBzdHJ1Y3RcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo2ODg6Y29uZmlnX2dyb3VwICpudWxsYl9ncm91cF9tYWtlX2dyb3VwKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBjb25zdCBjaGFyICpuYW1lKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTY4OS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz03MDY9bnVsbGJfZ3JvdXBfZHJvcF9pdGVtKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0pXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03MTktXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NzIwOnN0YXRpYyBzc2l6ZV90IG1lbWJfZ3JvdXBfZmVhdHVyZXNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNoYXIgKnBhZ2UpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzIxLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTc2ND1zdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX3N1YnN5c3RlbSBudWxsYl9zdWJzeXMgPSB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03NzItXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NzczOnN0YXRpYyBpbmxpbmUgaW50IG51bGxfY2FjaGVfYWN0aXZlKHN0cnVjdCBudWxsYiAqbnVsbGIpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzc0LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTc3Ny1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo3Nzg6c3RhdGljIHN0cnVjdCBudWxsYl9kZXZpY2UgKm51bGxfYWxsb2NfZGV2KHZvaWQpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzc5LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTgzNC1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo4MzU6c3RhdGljIHZvaWQgbnVsbF9mcmVlX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtODM2LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTg0NC1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo4NDU6c3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IG51bGxfY21kX3RpbWVyX2V4cGlyZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTg0Ni17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy04NTItXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6ODUzOnN0YXRpYyB2b2lkIG51bGxfY21kX2VuZF90aW1lcihzdHJ1Y3QgbnVsbGJfY21kICpjbWQpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtODU0LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTg1OS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo4NjA6c3RhdGljIHZvaWQgbnVsbF9jb21wbGV0ZV9ycShzdHJ1Y3QgcmVxdWVzdCAqcnEpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtODYxLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTg2Ni1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo4Njc6c3RhdGljIHN0cnVjdCBudWxsYl9wYWdlICpudWxsX2FsbG9jX3BhZ2Uodm9pZClcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy04Njgte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtODg0LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjg4NTpzdGF0aWMgdm9pZCBudWxsX2ZyZWVfcGFnZShzdHJ1Y3QgbnVsbGJfcGFnZSAqdF9wYWdlKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTg4Ni17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy04OTMtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6ODk0OnN0YXRpYyBib29sIG51bGxfcGFnZV9lbXB0eShzdHJ1Y3QgbnVsbGJfcGFnZSAqcGFnZSlcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy04OTUte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTAwLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjkwMTpzdGF0aWMgdm9pZCBudWxsX2ZyZWVfc2VjdG9yKHN0cnVjdCBudWxsYiAqbnVsbGIsIHNlY3Rvcl90IHNlY3RvcixcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy05MDItXFx0Ym9vbCBpc19jYWNoZSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTkyNi1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo5Mjc6c3RhdGljIHN0cnVjdCBudWxsYl9wYWdlICpudWxsX3JhZGl4X3RyZWVfaW5zZXJ0KHN0cnVjdCBudWxsYiAqbnVsbGIsIHU2NCBpZHgsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTI4LVxcdHN0cnVjdCBudWxsYl9wYWdlICp0X3BhZ2UsIGJvb2wgaXNfY2FjaGUpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy05NDMtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6OTQ0OnN0YXRpYyB2b2lkIG51bGxfZnJlZV9kZXZpY2Vfc3RvcmFnZShzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsIGJvb2wgaXNfY2FjaGUpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTQ1LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTk3Mi1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo5NzM6c3RhdGljIHN0cnVjdCBudWxsYl9wYWdlICpfX251bGxfbG9va3VwX3BhZ2Uoc3RydWN0IG51bGxiICpudWxsYixcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy05NzQtXFx0c2VjdG9yX3Qgc2VjdG9yLCBib29sIGZvcl93cml0ZSwgYm9vbCBpc19jYWNoZSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTk5My1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo5OTQ6c3RhdGljIHN0cnVjdCBudWxsYl9wYWdlICpudWxsX2xvb2t1cF9wYWdlKHN0cnVjdCBudWxsYiAqbnVsbGIsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTk1LVxcdHNlY3Rvcl90IHNlY3RvciwgYm9vbCBmb3Jfd3JpdGUsIGJvb2wgaWdub3JlX2NhY2hlKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTAwNS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxMDA2OnN0YXRpYyBzdHJ1Y3QgbnVsbGJfcGFnZSAqbnVsbF9pbnNlcnRfcGFnZShzdHJ1Y3QgbnVsbGIgKm51bGxiLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEwMDctXFx0XFx0XFx0XFx0XFx0ICAgc2VjdG9yX3Qgc2VjdG9yLCBib29sIGlnbm9yZV9jYWNoZSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEwNDAtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTA0MTpzdGF0aWMgaW50IG51bGxfZmx1c2hfY2FjaGVfcGFnZShzdHJ1Y3QgbnVsbGIgKm51bGxiLCBzdHJ1Y3QgbnVsbGJfcGFnZSAqY19wYWdlKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEwNDIte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTA4OS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxMDkwOnN0YXRpYyBpbnQgbnVsbF9tYWtlX2NhY2hlX3NwYWNlKHN0cnVjdCBudWxsYiAqbnVsbGIsIHVuc2lnbmVkIGxvbmcgbilcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMDkxLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTExNDItXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTE0MzpzdGF0aWMgYmxrX3N0YXR1c190IGNvcHlfdG9fbnVsbGIoc3RydWN0IG51bGxiICpudWxsYiwgdm9pZCAqc291cmNlLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTExNDQtXFx0XFx0XFx0XFx0ICBsb2ZmX3QgcG9zLCBzaXplX3QgbiwgYm9vbCBpc19mdWEpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMTc2LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjExNzc6c3RhdGljIHZvaWQgY29weV9mcm9tX251bGxiKHN0cnVjdCBudWxsYiAqbnVsbGIsIHZvaWQgKmRlc3QsIGxvZmZfdCBwb3MsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTE3OC1cXHRcXHRcXHQgICAgc2l6ZV90IG4pXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMjAxLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjEyMDI6YmxrX3N0YXR1c190IG51bGxfaGFuZGxlX2Rpc2NhcmQoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEyMDMtXFx0XFx0XFx0XFx0IHNlY3Rvcl90IHNlY3Rvciwgc2VjdG9yX3QgbnJfc2VjdG9ycylcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEyMjItXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTIyMzpzdGF0aWMgYmxrX3N0YXR1c190IG51bGxfaGFuZGxlX2ZsdXNoKHN0cnVjdCBudWxsYiAqbnVsbGIpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTIyNC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMjQyLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjEyNDM6c3RhdGljIGJsa19zdGF0dXNfdCBudWxsX3RyYW5zZmVyKHN0cnVjdCBudWxsYiAqbnVsbGIsIHN0cnVjdCBwYWdlICpwYWdlLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEyNDQtXFx0dW5zaWduZWQgaW50IGxlbiwgdW5zaWduZWQgaW50IG9mZiwgYm9vbCBpc193cml0ZSwgbG9mZl90IHBvcyxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEyODItICovXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTI4MzpzdGF0aWMgYmxrX3N0YXR1c190IG51bGxfaGFuZGxlX2RhdGFfdHJhbnNmZXIoc3RydWN0IG51bGxiX2NtZCAqY21kLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEyODQtXFx0XFx0XFx0XFx0XFx0ICAgICAgc2VjdG9yX3QgbnJfc2VjdG9ycylcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEzMTUtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTMxNjpzdGF0aWMgaW5saW5lIGJsa19zdGF0dXNfdCBudWxsX2hhbmRsZV90aHJvdHRsZWQoc3RydWN0IG51bGxiX2NtZCAqY21kKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEzMTcte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTM0Ni0gKi9cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxMzQ3OmJsa19zdGF0dXNfdCBudWxsX2hhbmRsZV9iYWRibG9ja3Moc3RydWN0IG51bGxiX2NtZCAqY21kLCBzZWN0b3JfdCBzZWN0b3IsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTM0OC1cXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBpbnQgKm5yX3NlY3RvcnMpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMzcyLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjEzNzM6YmxrX3N0YXR1c190IG51bGxfaGFuZGxlX21lbW9yeV9iYWNrZWQoc3RydWN0IG51bGxiX2NtZCAqY21kLCBlbnVtIHJlcV9vcCBvcCxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMzc0LVxcdFxcdFxcdFxcdCAgICAgICBzZWN0b3JfdCBzZWN0b3IsIHNlY3Rvcl90IG5yX3NlY3RvcnMpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMzgzLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjEzODQ6c3RhdGljIHZvaWQgbnVsbGJfemVyb19yZWFkX2NtZF9idWZmZXIoc3RydWN0IG51bGxiX2NtZCAqY21kKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEzODUte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTM5NS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxMzk2OnN0YXRpYyBpbmxpbmUgdm9pZCBudWxsYl9jb21wbGV0ZV9jbWQoc3RydWN0IG51bGxiX2NtZCAqY21kKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEzOTcte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTQyMy1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNDI0OmJsa19zdGF0dXNfdCBudWxsX3Byb2Nlc3NfY21kKHN0cnVjdCBudWxsYl9jbWQgKmNtZCwgZW51bSByZXFfb3Agb3AsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTQyNS1cXHRcXHRcXHQgICAgICBzZWN0b3JfdCBzZWN0b3IsIHVuc2lnbmVkIGludCBucl9zZWN0b3JzKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTQ0Mi1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNDQzOnN0YXRpYyB2b2lkIG51bGxfaGFuZGxlX2NtZChzdHJ1Y3QgbnVsbGJfY21kICpjbWQsIHNlY3Rvcl90IHNlY3RvcixcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNDQ0LVxcdFxcdFxcdCAgICBzZWN0b3JfdCBucl9zZWN0b3JzLCBlbnVtIHJlcV9vcCBvcClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE0NjctXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTQ2ODpzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgbnVsbGJfYnd0aW1lcl9mbihzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTQ2OS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNDg0LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE0ODU6c3RhdGljIHZvaWQgbnVsbGJfc2V0dXBfYnd0aW1lcihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE0ODYte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTQ5NS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNDk2OnN0YXRpYyBib29sIHNob3VsZF90aW1lb3V0X3JlcXVlc3Qoc3RydWN0IHJlcXVlc3QgKnJxKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE0OTcte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTUwMy1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNTA0OnN0YXRpYyBib29sIHNob3VsZF9yZXF1ZXVlX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3QgKnJxKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE1MDUte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTUxMS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNTEyOnN0YXRpYyBib29sIHNob3VsZF9pbml0X2hjdHhfZmFpbChzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTUxMy17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTE4LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE1MTk6c3RhdGljIGJvb2wgc2hvdWxkX3RpbWVvdXRfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdCAqcnEpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTUyMC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTIzLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE1MjQ6c3RhdGljIGJvb2wgc2hvdWxkX3JlcXVldWVfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdCAqcnEpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTUyNS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTI4LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE1Mjk6c3RhdGljIGJvb2wgc2hvdWxkX2luaXRfaGN0eF9mYWlsKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTMwLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE1MzUtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTUzNjpzdGF0aWMgdm9pZCBudWxsX21hcF9xdWV1ZXMoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTUzNy17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTg4LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE1ODk6c3RhdGljIGludCBudWxsX3BvbGwoc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgsIHN0cnVjdCBpb19jb21wX2JhdGNoICppb2IpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTU5MC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNjE5LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE2MjA6c3RhdGljIGVudW0gYmxrX2VoX3RpbWVyX3JldHVybiBudWxsX3RpbWVvdXRfcnEoc3RydWN0IHJlcXVlc3QgKnJxKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE2MjEte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTY1Mi1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNjUzOnN0YXRpYyBibGtfc3RhdHVzX3QgbnVsbF9xdWV1ZV9ycShzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNjU0LVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IGJsa19tcV9xdWV1ZV9kYXRhICpiZClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE3MDctXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTcwODpzdGF0aWMgdm9pZCBudWxsX3F1ZXVlX3JxcyhzdHJ1Y3QgcnFfbGlzdCAqcnFsaXN0KVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE3MDkte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTcyNS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNzI2OnN0YXRpYyB2b2lkIG51bGxfaW5pdF9xdWV1ZShzdHJ1Y3QgbnVsbGIgKm51bGxiLCBzdHJ1Y3QgbnVsbGJfcXVldWUgKm5xKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE3Mjcte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTczMi1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNzMzOnN0YXRpYyBpbnQgbnVsbF9pbml0X2hjdHgoc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgsIHZvaWQgKmRyaXZlcl9kYXRhLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE3MzQtXFx0XFx0XFx0ICB1bnNpZ25lZCBpbnQgaGN0eF9pZHgpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xNzQ5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmxrX21xX29wcyBudWxsX21xX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE3NTgtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTc1OTpzdGF0aWMgdm9pZCBudWxsX2RlbF9kZXYoc3RydWN0IG51bGxiICpudWxsYilcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNzYwLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE3ODktXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTc5MDpzdGF0aWMgdm9pZCBudWxsX2NvbmZpZ19kaXNjYXJkKHN0cnVjdCBudWxsYiAqbnVsbGIsIHN0cnVjdCBxdWV1ZV9saW1pdHMgKmxpbSlcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNzkxLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE4MTA9c3RhdGljIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyBudWxsX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE4MTQtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTgxNTpzdGF0aWMgaW50IHNldHVwX3F1ZXVlcyhzdHJ1Y3QgbnVsbGIgKm51bGxiKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE4MTYte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTgyOC1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxODI5OnN0YXRpYyBpbnQgbnVsbF9pbml0X3RhZ19zZXQoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQsIGludCBwb2xsX3F1ZXVlcylcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xODMwLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE4NDEtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTg0MjpzdGF0aWMgaW50IG51bGxfaW5pdF9nbG9iYWxfdGFnX3NldCh2b2lkKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE4NDMte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTg2NC1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxODY1OnN0YXRpYyBpbnQgbnVsbF9zZXR1cF90YWdzZXQoc3RydWN0IG51bGxiICpudWxsYilcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xODY2LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE4ODUtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTg4NjpzdGF0aWMgaW50IG51bGxfdmFsaWRhdGVfY29uZihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTg4Ny17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTI5LSNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxOTMwOnN0YXRpYyBib29sIF9fbnVsbF9zZXR1cF9mYXVsdChzdHJ1Y3QgZmF1bHRfYXR0ciAqYXR0ciwgY2hhciAqc3RyKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE5MzEte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTk0Mi1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxOTQzOnN0YXRpYyBib29sIG51bGxfc2V0dXBfZmF1bHQodm9pZClcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTQ0LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE5NTUtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTk1NjpzdGF0aWMgaW50IG51bGxfYWRkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTk1Ny17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDgwLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIwODE6c3RhdGljIHN0cnVjdCBudWxsYiAqbnVsbF9maW5kX2Rldl9ieV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA4Mi17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDk2LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIwOTc6c3RhdGljIGludCBudWxsX2NyZWF0ZV9kZXYodm9pZClcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDk4LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxMTYtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjExNzpzdGF0aWMgdm9pZCBudWxsX2Rlc3Ryb3lfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjExOC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTI1LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIxMjY6c3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjEyNy17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTk1LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIxOTY6c3RhdGljIHZvaWQgX19leGl0IG51bGxfZXhpdCh2b2lkKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxOTcte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNzoxNToxNi42NzEzNzMyOVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTI2MTA5ODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBOdWxsIEJsb2NrIERyaXZlciBSYWNlIENvbmRpdGlvbiBGaXgqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSByYWNlIGNvbmRpdGlvbiwgc3BlY2lmaWNhbGx5IGJldHdlZW4gbW9kaWZ5aW5nIGEgY29uZmlnZnMgYXR0cmlidXRlIGFuZCB0aGUgYG51bGxfYWRkX2RldigpYCBmdW5jdGlvbi4gVGhhdCBtYWtlcyBzZW5zZTsgdGhlc2UgdHlwZXMgb2YgaW50ZXJhY3Rpb25zIGFyZSBhbHdheXMgYSBwb3RlbnRpYWwgc291cmNlIG9mIHRyb3VibGUuIExldCBtZSBicmVhayB0aGlzIGRvd24uIFRoZSBhdHRyaWJ1dGUgbW9kaWZpY2F0aW9uIGZ1bmN0aW9ucyBhcmUgY3JlYXRlZCB1c2luZyBgTlVMTEJfREVWSUNFX0FUVFJgLCBhbmQgdGhleSdyZSBnaXZlbiB0aGUgbmFtZXMgYG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZWAuIEFuZCBJIHNlZSB0aGV5J3JlIHN0YXRpYyBmdW5jdGlvbnMuIEludGVyZXN0aW5nLiBUaGF0IHNlZW1zIHJlbGV2YW50LiBBbmQgYG51bGxfYWRkX2RldmAgaXMgKmFsc28qIHN0YXRpYy4gSG1tLiBJcyB0aGVyZSAqYW55KiBub24tc3RhdGljIGZ1bmN0aW9uIGludm9sdmVkIGluIHRoaXMgY3JpdGljYWwgcGF0aD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uIHNjb3BlIGZvciB0aGVzZSBvcGVyYXRpb25zIHRvIG5hcnJvdyBkb3duIHdoZXJlIHRvIGZvY3VzIG15IGFuYWx5c2lzLlxuXG5MZXQncyBzZWUuLi4gbG9va2luZyBhdCB0aGUgY29kZSwgSSBzZWUgYG51bGxfaW5pdGAgYW5kIGBudWxsX2V4aXRgLCB3aGljaCBhcmUsIG9mIGNvdXJzZSwgdGhlIGluaXQgYW5kIGV4aXQgZnVuY3Rpb25zLiBCdXQgdGhvc2UgYXJlbid0IGRpcmVjdGx5IGludm9sdmVkIGluIHRoaXMgcGFydGljdWxhciByYWNlLCBhbmQgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyBhcmUgc3RhdGljLlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29uZmlnZnMgb3BlcmF0aW9ucyBhcmUgcmVnaXN0ZXJlZCB0aHJvdWdoIGBudWxsYl9kZXZpY2VfdHlwZWAgYW5kIGBudWxsYl9zdWJzeXNgLiBUaGUgZW50cnkgcG9pbnRzIGZvciB0aGUgY29uZmlnZnMgaW50ZXJhY3Rpb25zIGFyZSB0aGUgc3RvcmUvc2hvdyBmdW5jdGlvbnMuIEFuZCB0aGV5J3JlIHN0YXRpYy4gVGhhdCBtZWFucyBJIGNhbid0IGRpcmVjdGx5IHNwZWNpZnkgdGhlbSBpbiBhIHRvb2wgbGlrZSBgRm9jdXNTeW1ib2xzYC4gVGhhdCdzIGltcG9ydGFudCB0byByZW1lbWJlci4gQnV0IHdhaXQsIHdoYXQgYWJvdXQgYG51bGxfYWRkX2RldmA/IEl0J3Mgc3RhdGljIHRvby4gU28gSSBjYW4ndCBmb2N1cyB0aGVyZSBlaXRoZXIuXG5cbkxldCBtZSB0YWtlIGEgc3RlcCBiYWNrIGFuZCBzZWUgd2hhdCBvdGhlciBjb2RlIG1pZ2h0IGJlIGludm9sdmVkLiBTaW5jZSB0aGUgZnVuY3Rpb25zIGluIGBtYWluLmNgIGFyZSBzdGF0aWMsIGFyZSB0aGVyZSBhbnkgb3RoZXIgZmlsZXMgaW4gYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvYCB0aGF0IGNvdWxkIGJlIHJlbGV2YW50PyBJIG5lZWQgdG8gYnJvYWRlbiBteSBzY29wZSBhIGJpdCBhbmQgc2VlIGlmIHRoZXJlIGFyZSBvdGhlciwgcG9zc2libHkgbm9uLXN0YXRpYyBmdW5jdGlvbnMsIHRoYXQgY291bGQgcGxheSBhIHJvbGUgaW4gdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQyNjEsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTc6MTU6MjMuNTk3NDkwNjJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjQxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcIm1haW4uY1wiLFxuICAgIFwibnVsbF9ibGsuaFwiLFxuICAgIFwidHJhY2UuY1wiLFxuICAgIFwidHJhY2UuaFwiLFxuICAgIFwiem9uZWQuY1wiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBudWxsXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNzoxNToyMy41OTc1NTQzMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzE0NTY5NDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgUmFjZSBDb25kaXRpb25zIGluIHRoZSBOdWxsIEJsb2NrIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gcGlucG9pbnQgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBpbiB0aGUgbnVsbCBibG9jayBkcml2ZXIgKGBtYWluLmNgIHNwZWNpZmljYWxseSkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjaGVjayBpZiBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIGBtYWluLmNgIGFyZSBjYWxsZWQgZnJvbSBvdXRzaWRlIHRoZSBtb2R1bGUuIFRoYXQgd291bGQgYmUgYSBsaWtlbHkgZW50cnkgcG9pbnQgZm9yIGNvbmN1cnJlbmN5IGlzc3Vlcy4gSG93ZXZlciwgc2luY2UgdGhpcyBpcyBhIG1vZHVsZSwgSSdtIGFscmVhZHkgYXdhcmUgdGhhdCB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludHMgYXJlIG1vZHVsZSBpbml0aWFsaXphdGlvbi9leGl0IHJvdXRpbmVzIGFuZCB0aGUgY2FsbGJhY2tzIGFzc29jaWF0ZWQgd2l0aCBjb25maWdmcy9zeXNmcy5cblxuVGhlIGNvbmZpZ2ZzIGNhbGxiYWNrcyBhcmUgZGVmaW5pdGVseSBjYWxsZWQgdGhyb3VnaCB0aGUgVmlydHVhbCBGaWxlIFN5c3RlbSAoVkZTKSBsYXllci4gU28sIEkgY2FuJ3QganVzdCB0cmFjayB0aGluZ3MgZnJvbSBgbWFpbi5jYC4gTm93LCBJIG5lZWQgdG8gZm9jdXMgb24gdGhlIGludGVycGxheSBiZXR3ZWVuIGEgcG90ZW50aWFsIHN0b3JlIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgYG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZWAsIGFuZCBgbnVsbF9hZGRfZGV2YC4gVGhlc2Ugc2VlbSBsaWtlIHRoZSB0d28gZnVuY3Rpb25zIGxpa2VseSB0byBoYXZlIG92ZXJsYXAgaXNzdWVzLlxuXG5gbnVsbF9hZGRfZGV2YCBpcywgYXMgSSByZWNhbGwsIGNhbGxlZCBmcm9tIGBudWxsX2NyZWF0ZV9kZXZgLCB3aGljaCBpdHNlbGYgaXMgcGFydCBvZiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uIFJpZ2h0LiBCdXQgd2FpdC4uLiBpcyBpdCBhbHNvIGNhbGxlZCB2aWEgdGhlIGNvbmZpZ2ZzIHBhdGggdGhyb3VnaCBgbnVsbGJfZ3JvdXBfbWFrZV9ncm91cGA/IE5vLCB0aGF0IGRvZXNuJ3QgZmVlbCByaWdodC4gTGV0IG1lIGp1c3QgY29uZmlybSB0aGF0LiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHdoZXJlIHRoYXQgZnVuY3Rpb24gaXMgYWN0dWFsbHkgaW52b2tlZCBmcm9tLiBJIG5lZWQgdG8gdHJhY2UgYmFjayAqaG93KiBgbnVsbF9hZGRfZGV2YCBpcyBjYWxsZWQuIExldCdzIGRpZyBpbiBhbmQgdHJhY2sgdGhlIGNhbGwgcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUwMDcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDQsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE3OjE1OjI4LjkxMjEyNzY3N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY1MTQ1ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnVsbF9hZGRfZGV2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTI3NT1zdGF0aWMgdm9pZCBudWxsX2RlbF9kZXYoc3RydWN0IG51bGxiICpudWxsYik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mjc2OnN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjc3LXN0YXRpYyBzdHJ1Y3QgbnVsbGIgKm51bGxfZmluZF9kZXZfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTMyOT1zdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3N0b3JlKGJvb2wgKnZhbCwgY29uc3QgY2hhciAqcGFnZSxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTM0Ni0gKiBUaGUgZGV2aWNlIGNvbmZpZ3VyYXRpb24gaXMgbW9kaWZpZWQgdW5kZXIgdGhlIGdsb2JhbCBsb2NrIHRvIHNlcmlhbGl6ZVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjM0NzogKiBhdHRyaWJ1dGUgY2hhbmdlcyBhZ2FpbnN0IG51bGxfYWRkX2RldigpIGFuZCBudWxsX2RlbF9kZXYoKTogd2l0aG91dCB0aGlzLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjM0ODogKiBhbiBhdHRyaWJ1dGUgY291bGQgYmUgY2hhbmdlZCB3aGlsZSBudWxsX2FkZF9kZXYoKSBpcyBydW5uaW5nLCB0aGF0IGlzLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjM0OTogKiBiZWZvcmUgTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQgaXMgc2V0LCB3aGljaCB3b3VsZCBsZXQgbnVsbF9hZGRfZGV2KClcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zNTAtICogb2JzZXJ2ZSBpbmNvbnNpc3RlbnQgdmFsdWVzIGZvciB0aGUgZGV2aWNlIGNvbmZpZ3VyYXRpb24uXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00ODU9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTUwMS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1MDI6XFx0XFx0cmV0ID0gbnVsbF9hZGRfZGV2KGRldik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTAzLVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE5NDM9c3RhdGljIGJvb2wgbnVsbF9zZXR1cF9mYXVsdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTk1NS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxOTU2OnN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTU3LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTIwOTc9c3RhdGljIGludCBudWxsX2NyZWF0ZV9kZXYodm9pZClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxMDYtXFx0bXV0ZXhfbG9jayhcXHUwMDI2bG9jayk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjEwNzpcXHRyZXQgPSBudWxsX2FkZF9kZXYoZGV2KTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTA4LVxcdG11dGV4X3VubG9jayhcXHUwMDI2bG9jayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE3OjE1OjI4Ljk1ODY0Nzg2NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTA0OTU3NzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS2VybmVsIE1vZHVsZSdzIFN5bWJvbCBGb2N1cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMga2VybmVsIG1vZHVsZSBhbmQgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZnVuY3Rpb25zIGFyZSB0aGUga2V5IGVudHJ5IHBvaW50cyBmb3IgZnV6emluZywgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGBGb2N1c1N5bWJvbHNgLiBgbnVsbF9hZGRfZGV2YCBpcyBjYWxsZWQgZnJvbSBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBhbmQgYG51bGxfY3JlYXRlX2RldmAuIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIGlzIGEgY29uZmlnZnMgc3RvcmUgY2FsbGJhY2sgd2hpY2ggbWVhbnMgaXQncyBsaWtlbHkgbm90IGlubGluZWQgYmVjYXVzZSBpdHMgYWRkcmVzcyBpcyB0YWtlbi4gVGhlIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiwgdGhlbiwgaXMgYmV0d2VlbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCAod2hpY2ggY2FsbHMgYG51bGxfYWRkX2RldmApIGFuZCBvdGhlciBzaW1pbGFyIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmVgIGZ1bmN0aW9ucy4gU2luY2UgdGhvc2UgYXJlIGFsbCBzdGF0aWMsIHRoZXkgbWlnaHQgYmUgaW5saW5lZC4gQnV0IHdhaXQsIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgICppcyogc3RhdGljLCBidXQgaXRzIGFkZHJlc3MgaXMgdGFrZW4gd2l0aGluIGBDT05GSUdGU19BVFRSYC5cblxuVGhlIGluc3RydWN0aW9ucyBzYXkgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gU28sIHRoZSBpZGVhbCBzaXR1YXRpb24gd291bGQgYmUgYSBub24tc3RhdGljIGZ1bmN0aW9uLCBidXQgdGhlcmUgZG9lc24ndCBzZWVtIHRvIGJlIG9uZS4gVGhlcmVmb3JlIEkgbmVlZCB0byBkZWNpZGUgaWYgSSBjYW4gdXNlIHN0YXRpYyBvbmVzLiBUaGUgaW5zdHJ1Y3Rpb25zIHRlbGwgbWUgdG8gYXZvaWQgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMsIHNvIEkgc2hvdWxkIGJlIHNlbGVjdGl2ZS5cblxuVGhpbmtpbmcgYWJvdXQgYG51bGxfYWRkX2RldmAsIGl0J3Mgbm90IGlubGluZWQgZHVlIHRvIGl0cyBzaXplLCBldmVuIHRob3VnaCBpdCAqaXMqIHN0YXRpYy4gVGhlIG1haW4gcXVlc3Rpb24gaXMgY2FuIEkgbGVhdmUgYEZvY3VzU3ltYm9sc2AgZW1wdHk/IEl0ICpzZWVtcyogbGlrZSBJIGNhbiwgYXMgdGhlcmUgYXJlIG5vIG5vbi1zdGF0aWMgZnVuY3Rpb25zIG1vZGlmaWVkLiBUaGUgaW5zdHJ1Y3Rpb25zIGFsbG93IGZvciBsZWF2aW5nIGl0IGVtcHR5LiBIb3dldmVyLCBJIGNvdWxkIGluY2x1ZGUgYG51bGxfYWRkX2RldmAgYW5kIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLCBidXQgdGhlIGluc3RydWN0aW9ucyBwcmVmZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMsIHdoaWNoIHN1Z2dlc3RzIGxlYXZpbmcgdGhlIGxpc3QgZW1wdHkgaXMgZmluZSB3aGVuIHRoZXJlIGFyZSBubyBub24tc3RhdGljIGZ1bmN0aW9ucy5cblxuU28sIGl0J3Mgc2FmZXIgdG8gbGVhdmUgYEZvY3VzU3ltYm9sc2AgZW1wdHksIHNpbmNlIHRoZSBpbnN0cnVjdGlvbnMgcHJpb3JpdGl6ZSBub24tc3RhdGljIGVudHJ5IHBvaW50cywgYnV0IGlmIHRoZXJlIGFyZSBubyBub24tc3RhdGljLCBgbnVsbF9hZGRfZGV2YCBtYXkgYmUgYWRkZWQuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBudWxsX2FkZF9kZXZgIGlzIGFjdHVhbGx5IGluIGBrYWxsc3ltc2AuIEl0IHVzdWFsbHkgaXMgYmVjYXVzZSBvZiBpdHMgc2l6ZS4gTGVhdmluZyBpdCBlbXB0eSBpcyBhbHNvIGEgdmFsaWQgYXBwcm9hY2guXG5cbk5vdywgbGV0IG1lIGNoZWNrIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9ucy4gYEJMS19ERVZfTlVMTF9CTEtgIHNlZW1zIGxpa2UgdGhlIHByaW1hcnkgb25lLiBJIHNob3VsZCBjaGVjayBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MTQxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE3OjE1OjM3Ljg2MzYwOTcwN1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE51bGwgYmxvY2sgZGV2aWNlIGRyaXZlciBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBCTEtfREVWX05VTExfQkxLXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiTnVsbCB0ZXN0IGJsb2NrIGRyaXZlclxcXCJcXG4gICA4OlxcdFxcdHNlbGVjdCBDT05GSUdGU19GU1xcbiAgIDk6XFx0XFxuICAxMDpcXHRjb25maWcgQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cXG4gIDExOlxcdFxcdGJvb2wgXFxcIlN1cHBvcnQgZmF1bHQgaW5qZWN0aW9uIGZvciBOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcbiAgMTI6XFx0XFx0ZGVwZW5kcyBvbiBCTEtfREVWX05VTExfQkxLIFxcdTAwMjZcXHUwMDI2IEZBVUxUX0lOSkVDVElPTl9DT05GSUdGU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNzoxNTozNy44NjM2OTcwNTdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzgxODM0NTY5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgTnVsbCBCbG9jayBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIGBCTEtfREVWX05VTExfQkxLYCBwdWxscyBpbiBgQ09ORklHRlNfRlNgLiBOb3RoaW5nIHVuZXhwZWN0ZWQgdGhlcmUsIG5vIGRlcGVuZGVuY2llcyB0byB3b3JyeSBhYm91dC4gU28sIGBFbmFibGVDb25maWdzYCBzaG91bGQgYWJzb2x1dGVseSBpbmNsdWRlIGBCTEtfREVWX05VTExfQkxLYC4gVGhlIHBhdGNoIGRvZXMgdG91Y2ggY29uZmlnZnMgYXR0cmlidXRlcywgd2hpY2ggbWFrZXMgYENPTkZJR0ZTX0ZTYCByZWxldmFudCwgYnV0IGxpa2UgSSBzYWlkLCBgQkxLX0RFVl9OVUxMX0JMS2Agc2VsZWN0cyBpdCwgc28gdGhhdCdzIGhhbmRsZWQuXG5cbkxldCdzIGRvIGEgcXVpY2sgc3dlZXAgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIGludm9sdmVkLiBIbW0sIGl0IGxvb2tzIGxpa2UgdGhpcyBwYXRjaCBpcyBjaGFuZ2luZyBgTlVMTEJfREVWSUNFX0FUVFJgLCB3aGljaCBhcHBsaWVzIHRvIGFsbCBhdHRyaWJ1dGVzLCByaWdodD8gUmlnaHQsIGFuZCB0aGUgcmFjZSBjb25kaXRpb24gaXMgYmV0d2VlbiBgbnVsbF9hZGRfZGV2YCBhbmQgYXR0cmlidXRlIHN0b3JlIG9wZXJhdGlvbnMuIEdpdmVuIHRoYXQsIHRoaXMgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcuXG5cbkFscmlnaHQsIGxldCdzIHB1dCB0b2dldGhlciB0aGUgcmVzdWx0cyBvZiB0aGlzIGFuYWx5c2lzLlxuXG4qICAgYFdvcnRoRnV6emluZ2A6IFRydWUuIFJhY2UgY29uZGl0aW9ucyBhcmUgZnV6emFibGUuXG4qICAgYEZvY3VzU3ltYm9sc2A6IEVtcHR5LiBJIGNoZWNrZWQgYW5kIGBudWxsX2FkZF9kZXZgIGlzLCBpbiBmYWN0LCBzdGF0aWMuIGBudWxsX2luaXRgIGlzIGFsc28gYF9faW5pdGAsIHNvIGl0J3Mgbm90IGEgZnV6emluZyB0YXJnZXQuXG4qICAgYEVuYWJsZUNvbmZpZ3NgOiBgW1wiQkxLX0RFVl9OVUxMX0JMS1wiXWBcbiogICBgUmVhc29uaW5nYDogVGhlIHBhdGNoIHRhY2tsZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyJ3MgY29uZmlnZnMgaW50ZXJmYWNlLiBMb2NraW5nIGlzIGJlaW5nIGFkZGVkIHRvIGRldmljZSBhdHRyaWJ1dGUgbW9kaWZpY2F0aW9ucywgd2hpY2ggcHJldmVudHMgY29uY3VycmVudCBjaGFuZ2VzIHRvIGF0dHJpYnV0ZXMgd2hlbiBhIGRldmljZSBpcyBhZGRlZCBvciByZW1vdmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzM1MCwiT3V0cHV0VG9rZW5zIjo3OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE3OjE1OjQ1LjY4MjA0NTkzOFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2MjIzOTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIG51bGxfYmxrIGRyaXZlcidzIGNvbmZpZ2ZzIGludGVyZmFjZSBieSBhZGRpbmcgbG9ja2luZyB0byBkZXZpY2UgYXR0cmlidXRlIG1vZGlmaWNhdGlvbnMuIFRoaXMgcHJldmVudHMgYXR0cmlidXRlcyBmcm9tIGJlaW5nIGNoYW5nZWQgY29uY3VycmVudGx5IHdpdGggZGV2aWNlIGFkZGl0aW9uL3JlbW92YWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OVUxMX0JMS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBudWxsX2JsayBkcml2ZXIncyBjb25maWdmcyBpbnRlcmZhY2UgYnkgYWRkaW5nIGxvY2tpbmcgdG8gZGV2aWNlIGF0dHJpYnV0ZSBtb2RpZmljYXRpb25zLiBUaGlzIHByZXZlbnRzIGF0dHJpYnV0ZXMgZnJvbSBiZWluZyBjaGFuZ2VkIGNvbmN1cnJlbnRseSB3aXRoIGRldmljZSBhZGRpdGlvbi9yZW1vdmFsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNzoxNTo0NS43NTgyODE5NDdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwNDAzODcyNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNzoxNTo0NS43NTg3OTQ0NTdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODAzOTg3MDQ5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyIGJ5IHRha2luZyBhIGdsb2JhbCBtdXRleCB3aGVuIHVwZGF0aW5nIGRldmljZSBhdHRyaWJ1dGVzIHZpYSBjb25maWdmcy4gSXQgYWxzbyBjaGFuZ2VzIHRoZSBtdXRleCBpbml0aWFsaXphdGlvbiB0byB1c2UgREVGSU5FX01VVEVYLiBUaGVzZSBjaGFuZ2VzIGFkZHJlc3MgY29uY3VycmVuY3kgaXNzdWVzIGFuZCBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4gQW55IGxvY2tpbmcgaXNzdWVzIG9yIHJhY2UgY29uZGl0aW9ucyB3b3VsZCBiZSBjYXVnaHQgYnkgTE9DS0RFUCBvciBLQ1NBTi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0Njg0ZmQ4MmJmNDEyYzQyOTVkNDA5OGI0N2QwNWEyYTE4OTliY2FkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMTc6MTQ6NTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5pbmRleCBmOGMwZmQ1N2UwNDFhLi4yZThmOTk4NzM5NTY4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbisrKyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5AQCAtNjYsNyArNjYsNyBAQCBzdHJ1Y3QgbnVsbGJfcGFnZSB7XG4gI2RlZmluZSBOVUxMQl9QQUdFX0ZSRUUgKE1BUF9TWiAtIDIpXG4gXG4gc3RhdGljIExJU1RfSEVBRChudWxsYl9saXN0KTtcbi1zdGF0aWMgc3RydWN0IG11dGV4IGxvY2s7XG4rc3RhdGljIERFRklORV9NVVRFWChsb2NrKTtcbiBzdGF0aWMgaW50IG51bGxfbWFqb3I7XG4gc3RhdGljIERFRklORV9JREEobnVsbGJfaW5kZXhlcyk7XG4gc3RhdGljIHN0cnVjdCBibGtfbXFfdGFnX3NldCB0YWdfc2V0O1xuQEAgLTM0MCw3ICszNDAsMTUgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsXG4gXHRyZXR1cm4gY291bnQ7XG4gfVxuIFxuLS8qIFRoZSBmb2xsb3dpbmcgbWFjcm8gc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoIFRZUEUgPSB7dWludCwgdWxvbmcsIGJvb2x9LiAqL1xuKy8qXG4rICogVGhlIGZvbGxvd2luZyBtYWNybyBzaG91bGQgb25seSBiZSB1c2VkIHdpdGggVFlQRSA9IHt1aW50LCB1bG9uZywgYm9vbH0uXG4rICpcbisgKiBUaGUgZGV2aWNlIGNvbmZpZ3VyYXRpb24gaXMgbW9kaWZpZWQgdW5kZXIgdGhlIGdsb2JhbCBsb2NrIHRvIHNlcmlhbGl6ZVxuKyAqIGF0dHJpYnV0ZSBjaGFuZ2VzIGFnYWluc3QgbnVsbF9hZGRfZGV2KCkgYW5kIG51bGxfZGVsX2RldigpOiB3aXRob3V0IHRoaXMsXG4rICogYW4gYXR0cmlidXRlIGNvdWxkIGJlIGNoYW5nZWQgd2hpbGUgbnVsbF9hZGRfZGV2KCkgaXMgcnVubmluZywgdGhhdCBpcyxcbisgKiBiZWZvcmUgTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQgaXMgc2V0LCB3aGljaCB3b3VsZCBsZXQgbnVsbF9hZGRfZGV2KClcbisgKiBvYnNlcnZlIGluY29uc2lzdGVudCB2YWx1ZXMgZm9yIHRoZSBkZXZpY2UgY29uZmlndXJhdGlvbi5cbisgKi9cbiAjZGVmaW5lIE5VTExCX0RFVklDRV9BVFRSKE5BTUUsIFRZUEUsIEFQUExZKVx0XHRcdFx0XFxcbiBzdGF0aWMgc3NpemVfdFx0XHRcdFx0XHRcdFx0XHRcXFxuIG51bGxiX2RldmljZV8jI05BTUUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcdFxcXG5AQCAtMzYwLDEzICszNjgsMTYgQEAgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcdFxcXG4gXHRyZXQgPSBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zdG9yZShcdTAwMjZuZXdfdmFsdWUsIHBhZ2UsIGNvdW50KTtcXFxuIFx0aWYgKHJldCBcdTAwM2MgMClcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdHJldHVybiByZXQ7XHRcdFx0XHRcdFx0XFxcbitcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XHRcdFx0XHRcdFx0XFxcbiBcdGlmIChhcHBseV9mbilcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdHJldCA9IGFwcGx5X2ZuKGRldiwgbmV3X3ZhbHVlKTtcdFx0XHRcdFxcXG4gXHRlbHNlIGlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSkgXHRcXFxuIFx0XHRyZXQgPSAtRUJVU1k7XHRcdFx0XHRcdFx0XFxcbitcdGlmIChyZXQgXHUwMDNlPSAwKVx0XHRcdFx0XHRcdFx0XFxcbitcdFx0ZGV2LVx1MDAzZU5BTUUgPSBuZXdfdmFsdWU7XHRcdFx0XHRcdFxcXG4rXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XHRcdFx0XHRcdFx0XFxcbiBcdGlmIChyZXQgXHUwMDNjIDApXHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRyZXR1cm4gcmV0O1x0XHRcdFx0XHRcdFxcXG4tXHRkZXYtXHUwMDNlTkFNRSA9IG5ld192YWx1ZTtcdFx0XHRcdFx0XHRcXFxuIFx0cmV0dXJuIGNvdW50O1x0XHRcdFx0XHRcdFx0XFxcbiB9XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIE5BTUUpO1xuQEAgLTM3OSw2ICszOTAsOCBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0c3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQ7XG4gXHRpbnQgcmV0LCBucl9od19xdWV1ZXM7XG4gXG4rXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNmxvY2spO1xuK1xuIFx0aWYgKCFkZXYtXHUwMDNlbnVsbGIpXG4gXHRcdHJldHVybiAwO1xuIFxuQEAgLTQyMSwyNSArNDM0LDEzIEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4gc3RhdGljIGludCBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgICAgdW5zaWduZWQgaW50IHN1Ym1pdF9xdWV1ZXMpXG4ge1xuLVx0aW50IHJldDtcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4tXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LVx1MDAzZXBvbGxfcXVldWVzKTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbi1cbi1cdHJldHVybiByZXQ7XG4rXHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi1cdTAwM2Vwb2xsX3F1ZXVlcyk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICAgdW5zaWduZWQgaW50IHBvbGxfcXVldWVzKVxuIHtcbi1cdGludCByZXQ7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuLVx0cmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi1cdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4tXG4tXHRyZXR1cm4gcmV0O1xuK1x0cmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpO1xuIH1cbiBcbiBOVUxMQl9ERVZJQ0VfQVRUUihzaXplLCB1bG9uZywgTlVMTCk7XG5AQCAtMjE2Niw4ICsyMTY3LDYgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0bXV0ZXhfaW5pdChcdTAwMjZsb2NrKTtcbi1cbiBcdG51bGxfbWFqb3IgPSByZWdpc3Rlcl9ibGtkZXYoMCwgXCJudWxsYlwiKTtcbiBcdGlmIChudWxsX21ham9yIFx1MDAzYyAwKSB7XG4gXHRcdHJldCA9IG51bGxfbWFqb3I7XG5AQCAtMjIxMSw4ICsyMjEwLDYgQEAgc3RhdGljIHZvaWQgX19leGl0IG51bGxfZXhpdCh2b2lkKVxuIFxuIFx0aWYgKHRhZ19zZXQub3BzKVxuIFx0XHRibGtfbXFfZnJlZV90YWdfc2V0KFx1MDAyNnRhZ19zZXQpO1xuLVxuLVx0bXV0ZXhfZGVzdHJveShcdTAwMjZsb2NrKTtcbiB9XG4gXG4gbW9kdWxlX2luaXQobnVsbF9pbml0KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE3OjE1OjQ1Ljc1ODc5NTM2N1oiLCJTZXEiOjIxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MDM5ODQ3Mzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIE51bGwgQmxvY2sgRGV2aWNlIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBmb2N1c2VkIG9uIHRoZSBgbnVsbF9ibGtgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY2AuIEl0J3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGxvY2tpbmcgY29ycmVjdGlvbiwgd2hpY2ggSSBhcHByZWNpYXRlLiBUaGUgcHJpbWFyeSBjaGFuZ2UgaXMgdGhlIHJlcGxhY2VtZW50IG9mIHRoZSBtYW51YWwgbXV0ZXggaW5pdGlhbGl6YXRpb24gKGBzdGF0aWMgc3RydWN0IG11dGV4IGxvY2s7YCBmb2xsb3dlZCBieSBgbXV0ZXhfaW5pdChcdTAwMjZsb2NrKTtgIGFuZCBgbXV0ZXhfZGVzdHJveShcdTAwMjZsb2NrKTtgKSB3aXRoIGBzdGF0aWMgREVGSU5FX01VVEVYKGxvY2spO2AuIFRoYXQncyBjbGVhbmVyLCBhbmQgdXNpbmcgYERFRklORV9NVVRFWGAgaXMgZ2VuZXJhbGx5IHRoZSBwcmVmZXJyZWQgYXBwcm9hY2ggZm9yIHN0YXRpY2FsbHktZGVmaW5lZCBtdXRleGVzIGluIHRoZSBrZXJuZWwuIFRoaXMgYWxzbyByZW1vdmVzIHRoZSBjYWxscyB0byBleHBsaWNpdGx5IGluaXRpYWxpemUgYW5kIGRlc3Ryb3kgdGhlIG11dGV4LlxuXG5DcnVjaWFsbHksIHRoZSBgTlVMTEJfREVWSUNFX0FUVFJgIG1hY3JvIGlzIGJlaW5nIHVwZGF0ZWQgdG8gbm93ICphY3F1aXJlKiB0aGUgYGxvY2tgIG11dGV4IHdoZW4gaXQncyB1c2VkIHRvIHVwZGF0ZSBkZXZpY2UgYXR0cmlidXRlcy4gVGhpcyBpcyB0aGUgaGVhcnQgb2YgdGhlIGZpeC4gRnVydGhlcm1vcmUsIHRoZSBjYWxscyB0byBgbXV0ZXhfbG9jayhcdTAwMjZsb2NrKWAgYXJlIGJlaW5nIHJlbW92ZWQgZnJvbSBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AgYW5kIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AgYmVjYXVzZSB0aGUgY2FsbHMgYXJlIHJlZHVuZGFudDsgbm93IHRoZSBtYWNybyB3aWxsIGhvbGQgdGhlIGxvY2sgZHVyaW5nIHRoZWlyIGV4ZWN1dGlvbi4gTWFrZXMgcGVyZmVjdCBzZW5zZSwgZWxpbWluYXRpbmcgdW5uZWNlc3NhcnkgbG9ja2luZyBhbmQgaW1wcm92aW5nIGVmZmljaWVuY3kuXG5cblRoZSBhZGRpdGlvbiBvZiBgbG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZsb2NrKTtgIGluIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCBpcyBhIG5pY2UgdG91Y2guIEl0IHNlcnZlcyBhcyBhIGdvb2QgYXNzZXJ0aW9uIHRvIGVuc3VyZSB0aGF0IHRoZSBsb2NrIGlzLCBpbiBmYWN0LCBoZWxkIHdoZW4gdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQsIGhlbHBpbmcgdG8gY2F0Y2ggYW55IGZ1dHVyZSByZWdyZXNzaW9ucy5cblxuVGhlIG92ZXJhbGwgZ29hbCBpcyBjbGVhcjogcHJldmVudCByYWNlIGNvbmRpdGlvbnMsIHBhcnRpY3VsYXJseSBhcm91bmQgY29uY3VycmVudCBtb2RpZmljYXRpb25zIHRvIGRldmljZSBhdHRyaWJ1dGVzLCBlc3BlY2lhbGx5IHdoaWxlIGBudWxsX2FkZF9kZXYoKWAgaXMgcnVubmluZy4gVGhhdCdzIGEgY2xhc3NpYyBhbmQgY3J1Y2lhbCBrZXJuZWwgYnVnIHNjZW5hcmlvLCBzbyB0aGlzIGlzIGEgZ29vZCBmaXguIEkgZG9uJ3Qgc2VlIGFueSByaXNrcyBpbiB0ZXJtcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBvciBpbmZvcm1hdGlvbiBsZWFrYWdlLCB3aGljaCBpcyBnb29kLlxuXG5HaXZlbiB0aGF0IHRoaXMgcGF0Y2ggcHJpbWFyaWx5IGFkZHJlc3NlcyByYWNlIGNvbmRpdGlvbnMsIGl0J3MgdGhlIGtpbmQgb2YgYnVnIHRoYXQgS0NTQU4gb3IgZXZlbiBzdGFuZGFyZCB0ZXN0aW5nIGFyZSBsaWtlbHkgdG8gY2F0Y2guIEtNU0FOIGlzbid0IHRoZSBhcHByb3ByaWF0ZSB0b29sIGZvciB0aGlzIGNsYXNzIG9mIGlzc3VlLCBzbyBJJ20gY29tZm9ydGFibGUgc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAuIFRoaXMgbG9va3MgbGlrZSBhIHNvbGlkIGFuZCB0YXJnZXRlZCBsb2NraW5nIGZpeC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA3MywiT3V0cHV0VG9rZW5zIjoxMjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNzoxNTo1My43OTg2NDUyNTdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODA3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIG51bGxfYmxrIGRyaXZlciBieSB0YWtpbmcgYSBnbG9iYWwgbXV0ZXggd2hlbiB1cGRhdGluZyBkZXZpY2UgYXR0cmlidXRlcyB2aWEgY29uZmlnZnMuIEl0IGFsc28gY2hhbmdlcyB0aGUgbXV0ZXggaW5pdGlhbGl6YXRpb24gdG8gdXNlIERFRklORV9NVVRFWC4gVGhlc2UgY2hhbmdlcyBhZGRyZXNzIGNvbmN1cnJlbmN5IGlzc3VlcyBhbmQgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uIEFueSBsb2NraW5nIGlzc3VlcyBvciByYWNlIGNvbmRpdGlvbnMgd291bGQgYmUgY2F1Z2h0IGJ5IExPQ0tERVAgb3IgS0NTQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyIGJ5IHRha2luZyBhIGdsb2JhbCBtdXRleCB3aGVuIHVwZGF0aW5nIGRldmljZSBhdHRyaWJ1dGVzIHZpYSBjb25maWdmcy4gSXQgYWxzbyBjaGFuZ2VzIHRoZSBtdXRleCBpbml0aWFsaXphdGlvbiB0byB1c2UgREVGSU5FX01VVEVYLiBUaGVzZSBjaGFuZ2VzIGFkZHJlc3MgY29uY3VycmVuY3kgaXNzdWVzIGFuZCBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4gQW55IGxvY2tpbmcgaXNzdWVzIG9yIHJhY2UgY29uZGl0aW9ucyB3b3VsZCBiZSBjYXVnaHQgYnkgTE9DS0RFUCBvciBLQ1NBTi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpp4h6[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-13 16:13:04 +0000 UTC FinishedAt: 2026-08-13 17:15:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "a275b5bfc9ee29b7eeef4ee6a635ac5461290df4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "a275b5bfc9ee29b7eeef4ee6a635ac5461290df4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK" ], "series_id": "a91035ca-5eba-44f1-bfcd-abd8a73206ed" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE3OjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBudWxsX2JsayBkcml2ZXIgYnkgdGFraW5nIGEgZ2xvYmFsIG11dGV4IHdoZW4gdXBkYXRpbmcgZGV2aWNlIGF0dHJpYnV0ZXMgdmlhIGNvbmZpZ2ZzLiBJdCBhbHNvIGNoYW5nZXMgdGhlIG11dGV4IGluaXRpYWxpemF0aW9uIHRvIHVzZSBERUZJTkVfTVVURVguIFRoZXNlIGNoYW5nZXMgYWRkcmVzcyBjb25jdXJyZW5jeSBpc3N1ZXMgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBBbnkgbG9ja2luZyBpc3N1ZXMgb3IgcmFjZSBjb25kaXRpb25zIHdvdWxkIGJlIGNhdWdodCBieSBMT0NLREVQIG9yIEtDU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBudWxsX2JsayBkcml2ZXImIzM5O3MgY29uZmlnZnMgaW50ZXJmYWNlIGJ5IGFkZGluZyBsb2NraW5nIHRvIGRldmljZSBhdHRyaWJ1dGUgbW9kaWZpY2F0aW9ucy4gVGhpcyBwcmV2ZW50cyBhdHRyaWJ1dGVzIGZyb20gYmVpbmcgY2hhbmdlZCBjb25jdXJyZW50bHkgd2l0aCBkZXZpY2UgYWRkaXRpb24vcmVtb3ZhbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNzoxNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ2ODRmZDgyYmY0MTJjNDI5NWQ0MDk4YjQ3ZDA1YTJhMTg5OWJjYWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAxMyAxNzoxNDo1MCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5pbmRleCBmOGMwZmQ1N2UwNDFhLi4yZThmOTk4NzM5NTY4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5AQCAtNjYsNyAmIzQzOzY2LDcgQEAgc3RydWN0IG51bGxiX3BhZ2Uge1xuICNkZWZpbmUgTlVMTEJfUEFHRV9GUkVFIChNQVBfU1ogLSAyKVxuIFxuIHN0YXRpYyBMSVNUX0hFQUQobnVsbGJfbGlzdCk7XG4tc3RhdGljIHN0cnVjdCBtdXRleCBsb2NrO1xuJiM0MztzdGF0aWMgREVGSU5FX01VVEVYKGxvY2spO1xuIHN0YXRpYyBpbnQgbnVsbF9tYWpvcjtcbiBzdGF0aWMgREVGSU5FX0lEQShudWxsYl9pbmRleGVzKTtcbiBzdGF0aWMgc3RydWN0IGJsa19tcV90YWdfc2V0IHRhZ19zZXQ7XG5AQCAtMzQwLDcgJiM0MzszNDAsMTUgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsXG4gXHRyZXR1cm4gY291bnQ7XG4gfVxuIFxuLS8qIFRoZSBmb2xsb3dpbmcgbWFjcm8gc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoIFRZUEUgPSB7dWludCwgdWxvbmcsIGJvb2x9LiAqL1xuJiM0MzsvKlxuJiM0MzsgKiBUaGUgZm9sbG93aW5nIG1hY3JvIHNob3VsZCBvbmx5IGJlIHVzZWQgd2l0aCBUWVBFID0ge3VpbnQsIHVsb25nLCBib29sfS5cbiYjNDM7ICpcbiYjNDM7ICogVGhlIGRldmljZSBjb25maWd1cmF0aW9uIGlzIG1vZGlmaWVkIHVuZGVyIHRoZSBnbG9iYWwgbG9jayB0byBzZXJpYWxpemVcbiYjNDM7ICogYXR0cmlidXRlIGNoYW5nZXMgYWdhaW5zdCBudWxsX2FkZF9kZXYoKSBhbmQgbnVsbF9kZWxfZGV2KCk6IHdpdGhvdXQgdGhpcyxcbiYjNDM7ICogYW4gYXR0cmlidXRlIGNvdWxkIGJlIGNoYW5nZWQgd2hpbGUgbnVsbF9hZGRfZGV2KCkgaXMgcnVubmluZywgdGhhdCBpcyxcbiYjNDM7ICogYmVmb3JlIE5VTExCX0RFVl9GTF9DT05GSUdVUkVEIGlzIHNldCwgd2hpY2ggd291bGQgbGV0IG51bGxfYWRkX2RldigpXG4mIzQzOyAqIG9ic2VydmUgaW5jb25zaXN0ZW50IHZhbHVlcyBmb3IgdGhlIGRldmljZSBjb25maWd1cmF0aW9uLlxuJiM0MzsgKi9cbiAjZGVmaW5lIE5VTExCX0RFVklDRV9BVFRSKE5BTUUsIFRZUEUsIEFQUExZKVx0XHRcdFx0XFxcbiBzdGF0aWMgc3NpemVfdFx0XHRcdFx0XHRcdFx0XHRcXFxuIG51bGxiX2RldmljZV8jI05BTUUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcdFxcXG5AQCAtMzYwLDEzICYjNDM7MzY4LDE2IEBAIG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNvbnN0IGNoYXIgKnBhZ2UsXHRcXFxuIFx0cmV0ID0gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc3RvcmUoXHUwMDI2bmV3X3ZhbHVlLCBwYWdlLCBjb3VudCk7XFxcbiBcdGlmIChyZXQgXHUwMDNjIDApXHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRyZXR1cm4gcmV0O1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcdFx0XHRcdFx0XHRcXFxuIFx0aWYgKGFwcGx5X2ZuKVx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0cmV0ID0gYXBwbHlfZm4oZGV2LCBuZXdfdmFsdWUpO1x0XHRcdFx0XFxcbiBcdGVsc2UgaWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpKSBcdFxcXG4gXHRcdHJldCA9IC1FQlVTWTtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGlmIChyZXQgXHUwMDNlPSAwKVx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdGRldi1cdTAwM2VOQU1FID0gbmV3X3ZhbHVlO1x0XHRcdFx0XHRcXFxuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcdFx0XHRcdFx0XHRcXFxuIFx0aWYgKHJldCBcdTAwM2MgMClcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdHJldHVybiByZXQ7XHRcdFx0XHRcdFx0XFxcbi1cdGRldi1cdTAwM2VOQU1FID0gbmV3X3ZhbHVlO1x0XHRcdFx0XHRcdFxcXG4gXHRyZXR1cm4gY291bnQ7XHRcdFx0XHRcdFx0XHRcXFxuIH1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuIENPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgTkFNRSk7XG5AQCAtMzc5LDYgJiM0MzszOTAsOCBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0c3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQ7XG4gXHRpbnQgcmV0LCBucl9od19xdWV1ZXM7XG4gXG4mIzQzO1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZsb2NrKTtcbiYjNDM7XG4gXHRpZiAoIWRldi1cdTAwM2VudWxsYilcbiBcdFx0cmV0dXJuIDA7XG4gXG5AQCAtNDIxLDI1ICYjNDM7NDM0LDEzIEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4gc3RhdGljIGludCBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgICAgdW5zaWduZWQgaW50IHN1Ym1pdF9xdWV1ZXMpXG4ge1xuLVx0aW50IHJldDtcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4tXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LVx1MDAzZXBvbGxfcXVldWVzKTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbi1cbi1cdHJldHVybiByZXQ7XG4mIzQzO1x0cmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtXHUwMDNlcG9sbF9xdWV1ZXMpO1xuIH1cbiBcbiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3BvbGxfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgIHVuc2lnbmVkIGludCBwb2xsX3F1ZXVlcylcbiB7XG4tXHRpbnQgcmV0O1xuLVxuLVx0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbi1cdHJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuLVxuLVx0cmV0dXJuIHJldDtcbiYjNDM7XHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi1cdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XG4gfVxuIFxuIE5VTExCX0RFVklDRV9BVFRSKHNpemUsIHVsb25nLCBOVUxMKTtcbkBAIC0yMTY2LDggJiM0MzsyMTY3LDYgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0bXV0ZXhfaW5pdChcdTAwMjZsb2NrKTtcbi1cbiBcdG51bGxfbWFqb3IgPSByZWdpc3Rlcl9ibGtkZXYoMCwgXCYjMzQ7bnVsbGJcJiMzNDspO1xuIFx0aWYgKG51bGxfbWFqb3IgXHUwMDNjIDApIHtcbiBcdFx0cmV0ID0gbnVsbF9tYWpvcjtcbkBAIC0yMjExLDggJiM0MzsyMjEwLDYgQEAgc3RhdGljIHZvaWQgX19leGl0IG51bGxfZXhpdCh2b2lkKVxuIFxuIFx0aWYgKHRhZ19zZXQub3BzKVxuIFx0XHRibGtfbXFfZnJlZV90YWdfc2V0KFx1MDAyNnRhZ19zZXQpO1xuLVxuLVx0bXV0ZXhfZGVzdHJveShcdTAwMjZsb2NrKTtcbiB9XG4gXG4gbW9kdWxlX2luaXQobnVsbF9pbml0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNzoxNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9OVUxMX0JMSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBudWxsX2JsayBkcml2ZXImIzM5O3MgY29uZmlnZnMgaW50ZXJmYWNlIGJ5IGFkZGluZyBsb2NraW5nIHRvIGRldmljZSBhdHRyaWJ1dGUgbW9kaWZpY2F0aW9ucy4gVGhpcyBwcmV2ZW50cyBhdHRyaWJ1dGVzIGZyb20gYmVpbmcgY2hhbmdlZCBjb25jdXJyZW50bHkgd2l0aCBkZXZpY2UgYWRkaXRpb24vcmVtb3ZhbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDQ2ODRmZDgyYmY0MTJjNDI5NWQ0MDk4YjQ3ZDA1YTJhMTg5OWJjYWQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAxMyAxNzoxNDo1MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKaW5kZXggZjhjMGZkNTdlMDQxYS4uMmU4Zjk5ODczOTU2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKQEAgLTY2LDcgJiM0Mzs2Niw3IEBAIHN0cnVjdCBudWxsYl9wYWdlIHsKICNkZWZpbmUgTlVMTEJfUEFHRV9GUkVFIChNQVBfU1ogLSAyKQogCiBzdGF0aWMgTElTVF9IRUFEKG51bGxiX2xpc3QpOwotc3RhdGljIHN0cnVjdCBtdXRleCBsb2NrOwomIzQzO3N0YXRpYyBERUZJTkVfTVVURVgobG9jayk7CiBzdGF0aWMgaW50IG51bGxfbWFqb3I7CiBzdGF0aWMgREVGSU5FX0lEQShudWxsYl9pbmRleGVzKTsKIHN0YXRpYyBzdHJ1Y3QgYmxrX21xX3RhZ19zZXQgdGFnX3NldDsKQEAgLTM0MCw3ICYjNDM7MzQwLDE1IEBAIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9ib29sX2F0dHJfc3RvcmUoYm9vbCAqdmFsLCBjb25zdCBjaGFyICpwYWdlLAogCXJldHVybiBjb3VudDsKIH0KIAotLyogVGhlIGZvbGxvd2luZyBtYWNybyBzaG91bGQgb25seSBiZSB1c2VkIHdpdGggVFlQRSA9IHt1aW50LCB1bG9uZywgYm9vbH0uICovCiYjNDM7LyoKJiM0MzsgKiBUaGUgZm9sbG93aW5nIG1hY3JvIHNob3VsZCBvbmx5IGJlIHVzZWQgd2l0aCBUWVBFID0ge3VpbnQsIHVsb25nLCBib29sfS4KJiM0MzsgKgomIzQzOyAqIFRoZSBkZXZpY2UgY29uZmlndXJhdGlvbiBpcyBtb2RpZmllZCB1bmRlciB0aGUgZ2xvYmFsIGxvY2sgdG8gc2VyaWFsaXplCiYjNDM7ICogYXR0cmlidXRlIGNoYW5nZXMgYWdhaW5zdCBudWxsX2FkZF9kZXYoKSBhbmQgbnVsbF9kZWxfZGV2KCk6IHdpdGhvdXQgdGhpcywKJiM0MzsgKiBhbiBhdHRyaWJ1dGUgY291bGQgYmUgY2hhbmdlZCB3aGlsZSBudWxsX2FkZF9kZXYoKSBpcyBydW5uaW5nLCB0aGF0IGlzLAomIzQzOyAqIGJlZm9yZSBOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCBpcyBzZXQsIHdoaWNoIHdvdWxkIGxldCBudWxsX2FkZF9kZXYoKQomIzQzOyAqIG9ic2VydmUgaW5jb25zaXN0ZW50IHZhbHVlcyBmb3IgdGhlIGRldmljZSBjb25maWd1cmF0aW9uLgomIzQzOyAqLwogI2RlZmluZSBOVUxMQl9ERVZJQ0VfQVRUUihOQU1FLCBUWVBFLCBBUFBMWSkJCQkJXAogc3RhdGljIHNzaXplX3QJCQkJCQkJCVwKIG51bGxiX2RldmljZV8jI05BTUUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSkJXApAQCAtMzYwLDEzICYjNDM7MzY4LDE2IEBAIG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNvbnN0IGNoYXIgKnBhZ2UsCVwKIAlyZXQgPSBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zdG9yZSgmYW1wO25ld192YWx1ZSwgcGFnZSwgY291bnQpO1wKIAlpZiAocmV0ICZsdDsgMCkJCQkJCQkJXAogCQlyZXR1cm4gcmV0OwkJCQkJCVwKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2xvY2spOwkJCQkJCVwKIAlpZiAoYXBwbHlfZm4pCQkJCQkJCVwKIAkJcmV0ID0gYXBwbHlfZm4oZGV2LCBuZXdfdmFsdWUpOwkJCQlcCiAJZWxzZSBpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsICZhbXA7ZGV2LSZndDtmbGFncykpIAlcCiAJCXJldCA9IC1FQlVTWTsJCQkJCQlcCiYjNDM7CWlmIChyZXQgJmd0Oz0gMCkJCQkJCQkJXAomIzQzOwkJZGV2LSZndDtOQU1FID0gbmV3X3ZhbHVlOwkJCQkJXAomIzQzOwltdXRleF91bmxvY2soJmFtcDtsb2NrKTsJCQkJCQlcCiAJaWYgKHJldCAmbHQ7IDApCQkJCQkJCVwKIAkJcmV0dXJuIHJldDsJCQkJCQlcCi0JZGV2LSZndDtOQU1FID0gbmV3X3ZhbHVlOwkJCQkJCVwKIAlyZXR1cm4gY291bnQ7CQkJCQkJCVwKIH0JCQkJCQkJCQlcCiBDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIE5BTUUpOwpAQCAtMzc5LDYgJiM0MzszOTAsOCBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LAogCXN0cnVjdCBibGtfbXFfdGFnX3NldCAqc2V0OwogCWludCByZXQsIG5yX2h3X3F1ZXVlczsKIAomIzQzOwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZhbXA7bG9jayk7CiYjNDM7CiAJaWYgKCFkZXYtJmd0O251bGxiKQogCQlyZXR1cm4gMDsKIApAQCAtNDIxLDI1ICYjNDM7NDM0LDEzIEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsCiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LAogCQkJCSAgICAgdW5zaWduZWQgaW50IHN1Ym1pdF9xdWV1ZXMpCiB7Ci0JaW50IHJldDsKLQotCW11dGV4X2xvY2soJmFtcDtsb2NrKTsKLQlyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LSZndDtwb2xsX3F1ZXVlcyk7Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7bG9jayk7Ci0KLQlyZXR1cm4gcmV0OwomIzQzOwlyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi0mZ3Q7cG9sbF9xdWV1ZXMpOwogfQogCiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3BvbGxfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiwKIAkJCQkgICB1bnNpZ25lZCBpbnQgcG9sbF9xdWV1ZXMpCiB7Ci0JaW50IHJldDsKLQotCW11dGV4X2xvY2soJmFtcDtsb2NrKTsKLQlyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LSZndDtzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7bG9jayk7Ci0KLQlyZXR1cm4gcmV0OwomIzQzOwlyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi0mZ3Q7c3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpOwogfQogCiBOVUxMQl9ERVZJQ0VfQVRUUihzaXplLCB1bG9uZywgTlVMTCk7CkBAIC0yMTY2LDggJiM0MzsyMTY3LDYgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCW11dGV4X2luaXQoJmFtcDtsb2NrKTsKLQogCW51bGxfbWFqb3IgPSByZWdpc3Rlcl9ibGtkZXYoMCwgJiMzNDtudWxsYiYjMzQ7KTsKIAlpZiAobnVsbF9tYWpvciAmbHQ7IDApIHsKIAkJcmV0ID0gbnVsbF9tYWpvcjsKQEAgLTIyMTEsOCAmIzQzOzIyMTAsNiBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbnVsbF9leGl0KHZvaWQpCiAKIAlpZiAodGFnX3NldC5vcHMpCiAJCWJsa19tcV9mcmVlX3RhZ19zZXQoJmFtcDt0YWdfc2V0KTsKLQotCW11dGV4X2Rlc3Ryb3koJmFtcDtsb2NrKTsKIH0KIAogbW9kdWxlX2luaXQobnVsbF9pbml0KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTc6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA3NgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE51bGwgQmxvY2sgRGV2aWNlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNgLiBJdCYjMzk7cyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgY2hhbmdlLCBidXQgaW1wb3J0YW50IGZvciBjb3JyZWN0bmVzcywgSSYjMzk7ZCBzYXkuIFRoZXkmIzM5O3ZlIHJlcGxhY2VkIHRoZSBtYW51YWwgbXV0ZXggaW5pdGlhbGl6YXRpb24gKGBtdXRleF9pbml0YCwgYG11dGV4X2Rlc3Ryb3lgKSBhbmQgbG9ja2luZyB3aXRoIHRoZSBgREVGSU5FX01VVEVYYCBtYWNybyBhbmQgdGhlIG1vcmUgY29uY2lzZSBsb2NraW5nIHdpdGhpbiB0aGUgYE5VTExCX0RFVklDRV9BVFRSYCBtYWNyby4gVGhleSYjMzk7dmUgYWxzbyBjbGVhbmVkIHVwIHNvbWUgbG9jayBjYWxscyBpbiB0aGUgYG51bGxiX2FwcGx5XypfcXVldWVzYCBmdW5jdGlvbnMuIFBsdXMsIHRoYXQgYGxvY2tkZXBfYXNzZXJ0X2hlbGRgIGNhbGwgaW4gYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgIGlzIGEgZ29vZCBwcmFjdGljZSB0byBlbnN1cmUgdGhlIGxvY2sgaXMgaGVsZCB3aGVyZSBpdCBzaG91bGQgYmUuCgpUaGUgbmV0IGVmZmVjdCBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEVuY2Fwc3VsYXRpbmcgdGhlIGxvY2tpbmcgd2l0aGluIGBOVUxMQl9ERVZJQ0VfQVRUUmAgbWVhbnMgdGhhdCBhbnkgYXR0cmlidXRlIGRlZmluZWQgdXNpbmcgdGhhdCBtYWNybyB3aWxsIG5vdyBiZSBwcm90ZWN0ZWQgYnkgdGhpcyBgbG9ja2AgbXV0ZXguIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIG11c3QgYmUgZml4aW5nIGEgcmFjZSBjb25kaXRpb24sIGFuZCBpdCBkb2VzISBBcHBhcmVudGx5IHRoZXJlJiMzOTtzIGEgcHJvYmxlbSB3aGVyZSBhbiBhdHRyaWJ1dGUgY291bGQgYmUgY2hhbmdlZCBjb25jdXJyZW50bHkgd2l0aCBgbnVsbF9hZGRfZGV2KClgIHJ1bm5pbmcuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGlzc3VlIGluIGJsb2NrIGRyaXZlcnMsIGFuZCBpdCYjMzk7cyBnb29kIHRoZXkmIzM5O3JlIGFkZHJlc3NpbmcgaXQuCgpOb3csIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGFmZmVjdHMuIGBOVUxMQl9ERVZJQ0VfQVRUUmAgZGVmaW5lcyBjb25maWdmcyBhdHRyaWJ1dGVzIGZvciB0aGUgbnVsbCBibG9jayBkZXZpY2VzLiBUaGF0JiMzOTtzIHJpZ2h0LCB0aG9zZSBhcmUgdGhlIGF0dHJpYnV0ZXMgdGhhdCBsZXQgeW91IGNvbmZpZ3VyZSB0aGUgZGV2aWNlIHRocm91Z2ggdGhlIGNvbmZpZ2ZzIGludGVyZmFjZS4gQW5kIG51bGxfYmxrLi4uIHllYWgsIHRoYXQmIzM5O3MganVzdCBhIHNvZnR3YXJlIGJsb2NrIGRldmljZS4gSXQmIzM5O3Mgb2Z0ZW4gdXNlZCBmb3IgdGVzdGluZywgYnV0IEkga25vdyBpdCYjMzk7cyAqZGVmaW5pdGVseSogdXNlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFNvLCB0aGlzIGNoYW5nZSBjb3VsZCBwb3RlbnRpYWxseSBpbXBhY3QgYW55b25lIHVzaW5nIG51bGxfYmxrIGluIHRoYXQgY29udGV4dC4KCk9rYXksIG5vdyBsZXQmIzM5O3MgZ28gZmluZCB0aGUgc3BlY2lmaWMgY29uZmlnIG9wdGlvbnMgZm9yIG51bGxfYmxrIHRvIHNlZSBpZiBpdCYjMzk7cyBlbmFibGVkIGJ5IGRlZmF1bHQuIEdvdHRhIHVuZGVyc3RhbmQgdGhlIGltcGFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfREVWX05VTExfQkxLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODE3CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgbnVsbCBibG9jayBkZXZpY2UgKGBudWxsX2Jsa2ApIGxpdmVzLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRvIGxvb2sgaW4gdGhlIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUgc3RhbmRhcmQgbG9jYXRpb24gZm9yIGRyaXZlciBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEhvd2V2ZXIsIEkgbWlnaHQganVzdCBiZSBvdmVydGhpbmtpbmcgdGhpcy4gVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBhIHF1aWNrIGBncmVwYCBmb3IgdGhlIGBCTEtfREVWX05VTExfQkxLYCBzeW1ib2wgYWNyb3NzIHRoZSBrZXJuZWwgc291cmNlIHdvdWxkIHF1aWNrbHkgY29uZmlybSBpZiBpdCYjMzk7cyB0aGVyZSBhbmQgcG9zc2libHkgcmV2ZWFsIGRlcGVuZGVuY2llcyBvciBvdGhlciByZWxldmFudCBLY29uZmlnIGVudHJpZXMsIGp1c3QgaW4gY2FzZSBzb21ldGhpbmcmIzM5O3MgYmVlbiBtb3ZlZCBhcm91bmQgb3IgZGlmZmVyZW50bHkgbmFtZWQuIEdvdHRhIGJlIGVmZmljaWVudCBoZXJlLiBJJiMzOTtsbCBzdGFydCB3aXRoIHRoZSBvYnZpb3VzIGxvY2F0aW9uIGFuZCB0aGVuIGV4cGFuZCBteSBzZWFyY2ggaWYgbmVlZGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE3OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfREVWX05VTExfQkxLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy01LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjY6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TnVsbCB0ZXN0IGJsb2NrIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy05LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjEwOmNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTExLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZhdWx0IGluamVjdGlvbiBmb3IgTnVsbCB0ZXN0IGJsb2NrIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE3OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxOTUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgQkxLX0RFVl9OVUxMX0JMS2AuIFRoYXQmIzM5O3MgdGhlIGNvbmZpZyBpbiBwbGF5IGhlcmUuIE15IHByaW1hcnkgZ29hbCBpcyB0byBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyBmb3IgZnV6emluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBudWxsIGJsb2NrIGRldmljZSBjb25maWd1cmF0aW9uIGFjdHVhbGx5IG9wZXJhdGVzLgoKVGhlIG1hY3JvIGBOVUxMQl9ERVZJQ0VfQVRUUmAgaXMgdGhlIGtleS4gSSByZWNvZ25pemUgaXQgZ2VuZXJhdGVzIGZ1bmN0aW9ucy4gVGhleSBoYXZlIGEgcHJlZGljdGFibGUgcGF0dGVybjogYG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZWAuIFRoaXMgc2VlbXMgbGlrZSB0aGUgZ2F0ZXdheSB0byBtYW5pcHVsYXRpbmcgYW5kIGludGVyYWN0aW5nIHdpdGggdGhlIGRldmljZS4gQW5kLCBpbXBvcnRhbnRseSwgdGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgdGhyb3VnaCBjb25maWdmcy4gVGhpcyBpcyB0aGUgZW50cnlwb2ludCB0byBiZSBjb25jZXJuZWQgd2l0aC4KClRoZXJlZm9yZSwgbXkgbmV4dCBzdGVwIGlzIGNsZWFyLiBJIG5lZWQgdG8gbWV0aWN1bG91c2x5IGV4YW1pbmUgaG93IGBOVUxMQl9ERVZJQ0VfQVRUUmAgaXMgdXNlZC4gSSYjMzk7bGwgc2VhcmNoIGZvciBldmVyeSBpbnN0YW5jZSBvZiB0aGlzIG1hY3JvIGFuZCBkb2N1bWVudCBhbGwgdGhlIGZ1bmN0aW9ucyBpdCBkZWZpbmVzLiBUaGUgb2JqZWN0aXZlIGlzIHRvIG1hcCB0aGUgZW50cnkgcG9pbnRzLiBVbmRlcnN0YW5kaW5nIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGFsbG93IG1lIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgcGFydHMgb2YgdGhlIGNvZGUgbW9zdCBsaWtlbHkgdG8gcmV2ZWFsIHZ1bG5lcmFiaWxpdGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtOVUxMQl9ERVZJQ0VfQVRUUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTMyOT1zdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3N0b3JlKGJvb2wgKnZhbCwgY29uc3QgY2hhciAqcGFnZSxcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zNTEtICovXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozNTI6I2RlZmluZSBOVUxMQl9ERVZJQ0VfQVRUUihOQU1FLCBUWVBFLCBBUFBMWSlcdFx0XHRcdFxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zNTMtc3RhdGljIHNzaXplX3RcdFx0XHRcdFx0XHRcdFx0XFxcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00NDA9c3RhdGljIGludCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDQ1LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQ2Ok5VTExCX0RFVklDRV9BVFRSKHNpemUsIHVsb25nLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0NzpOVUxMQl9ERVZJQ0VfQVRUUihjb21wbGV0aW9uX25zZWMsIHVsb25nLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0ODpOVUxMQl9ERVZJQ0VfQVRUUihzdWJtaXRfcXVldWVzLCB1aW50LCBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0OTpOVUxMQl9ERVZJQ0VfQVRUUihwb2xsX3F1ZXVlcywgdWludCwgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDUwOk5VTExCX0RFVklDRV9BVFRSKGhvbWVfbm9kZSwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTE6TlVMTEJfREVWSUNFX0FUVFIocXVldWVfbW9kZSwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTI6TlVMTEJfREVWSUNFX0FUVFIoYmxvY2tzaXplLCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1MzpOVUxMQl9ERVZJQ0VfQVRUUihtYXhfc2VjdG9ycywgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTQ6TlVMTEJfREVWSUNFX0FUVFIoaXJxbW9kZSwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTU6TlVMTEJfREVWSUNFX0FUVFIoaHdfcXVldWVfZGVwdGgsIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDU2Ok5VTExCX0RFVklDRV9BVFRSKGluZGV4LCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1NzpOVUxMQl9ERVZJQ0VfQVRUUihibG9ja2luZywgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTg6TlVMTEJfREVWSUNFX0FUVFIodXNlX3Blcl9ub2RlX2hjdHgsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDU5Ok5VTExCX0RFVklDRV9BVFRSKG1lbW9yeV9iYWNrZWQsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDYwOk5VTExCX0RFVklDRV9BVFRSKGRpc2NhcmQsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDYxOk5VTExCX0RFVklDRV9BVFRSKG1icHMsIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDYyOk5VTExCX0RFVklDRV9BVFRSKGNhY2hlX3NpemUsIHVsb25nLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2MzpOVUxMQl9ERVZJQ0VfQVRUUih6b25lZCwgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjQ6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9zaXplLCB1bG9uZywgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjU6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9jYXBhY2l0eSwgdWxvbmcsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY2Ok5VTExCX0RFVklDRV9BVFRSKHpvbmVfbnJfY29udiwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Njc6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9tYXhfb3BlbiwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Njg6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9tYXhfYWN0aXZlLCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2OTpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX2FwcGVuZF9tYXhfc2VjdG9ycywgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzA6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9mdWxsLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3MTpOVUxMQl9ERVZJQ0VfQVRUUih2aXJ0X2JvdW5kYXJ5LCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3MjpOVUxMQl9ERVZJQ0VfQVRUUihub19zY2hlZCwgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzM6TlVMTEJfREVWSUNFX0FUVFIoc2hhcmVkX3RhZ3MsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc0Ok5VTExCX0RFVklDRV9BVFRSKHNoYXJlZF90YWdfYml0bWFwLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3NTpOVUxMQl9ERVZJQ0VfQVRUUihmdWEsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc2Ok5VTExCX0RFVklDRV9BVFRSKHJvdGF0aW9uYWwsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc3Ok5VTExCX0RFVklDRV9BVFRSKGJhZGJsb2Nrc19vbmNlLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3ODpOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3NfcGFydGlhbF9pbywgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00NzktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgxOQoJCQkJCQkJb3V0cHV0OiA3NAoJCQkJCQkJdGhvdWdodHM6IDIxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE51bGwgQmxvY2sgRGV2aWNlIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIG51bGwgYmxvY2sgZGV2aWNlIGRyaXZlci4gVGhlIG1hY3JvLCB0aGUgYG51bGxiX2RldmljZV9zaXplX3N0b3JlYCwgYW5kIGBudWxsYl9kZXZpY2Vfc3VibWl0X3F1ZXVlc19zdG9yZWAgZnVuY3Rpb25zIGl0IGdlbmVyYXRlcyBhcmUgc3RhdGljLiBUaGF0JiMzOTtzIGEgcGF0dGVybiwgaXNuJiMzOTt0IGl0PyBBbmQgdGhlbiBJIHNlZSBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AgYW5kIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AsIGFsc28gc3RhdGljLiBFdmVuIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCBpcyBzdGF0aWMuIEhtbSwgaXMgYW55dGhpbmcgKm5vdCogc3RhdGljIGJlaW5nIG1vZGlmaWVkIGhlcmU/CgpMZXQgbWUgcmV2aWV3LCB0aGUgcGF0Y2ggZG9lcyB0b3VjaCBgbnVsbF9pbml0YCBhbmQgYG51bGxfZXhpdGAsIGJ1dCB0aG9zZSBsb29rIGxpa2Ugc3RhbmRhcmQgaW5pdGlhbGl6YXRpb24gYW5kIGNsZWFudXAgcm91dGluZXMsIGFuZCB0aGUgY2hhbmdlcyBhcmUgc2ltcGxlIChtdXRleCBpbml0L2Rlc3Ryb3kgcmVtb3ZlZCwgbm8gYmlnIGRlYWwpLiBBbmQgaXQgdG91Y2hlcyB0aGUgbWFjcm8gYE5VTExCX0RFVklDRV9BVFRSYCwgd2hpY2ggKmdlbmVyYXRlcyogc3RhdGljIGZ1bmN0aW9ucy4gVGhlIGZvY3VzIHJlYWxseSBzZWVtcyB0byBiZSBvbiB0aG9zZSBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uczogYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgLCBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AsIGFuZCBgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNgLgoKUmlnaHQuIExldCYjMzk7cyBkaWcgZGVlcGVyIGludG8gdGhlIGFjdHVhbCBjb2RlIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY2AgdGhhdCBhcmUgc29tZWhvdyByZWxhdGVkIHRvIHRoZXNlIGZ1bmN0aW9ucyBhbmQgaGF2ZSBiZWVuIG1vZGlmaWVkIGluZGlyZWN0bHksIG9yIHdob3NlIGJlaGF2aW91ciBtaWdodCBiZSBpbXBhY3RlZCBieSB0aGUgY2hhbmdlcyBpbiB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGZlZWwgZm9yIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTc6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XihbYS16QS1aX11bYS16QS1aMC05X10qXFxzJiM0MzspJiM0MztcXCo/W2EtekEtWl9dW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIyLSNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIzOnN0YXRpYyBERUNMQVJFX0ZBVUxUX0FUVFIobnVsbF90aW1lb3V0X2F0dHIpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjQ6c3RhdGljIERFQ0xBUkVfRkFVTFRfQVRUUihudWxsX3JlcXVldWVfYXR0cik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyNTpzdGF0aWMgREVDTEFSRV9GQVVMVF9BVFRSKG51bGxfaW5pdF9oY3R4X2F0dHIpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjYtI2VuZGlmXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yNy1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjI4OnN0YXRpYyBpbmxpbmUgdTY0IG1iX3Blcl90aWNrKGludCBtYnBzKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjkte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTYxPXN0cnVjdCBudWxsYl9wYWdlIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy02Ny1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjY4OnN0YXRpYyBMSVNUX0hFQUQobnVsbGJfbGlzdCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo2OTpzdGF0aWMgREVGSU5FX01VVEVYKGxvY2spO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzAtc3RhdGljIGludCBudWxsX21ham9yO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NzE6c3RhdGljIERFRklORV9JREEobnVsbGJfaW5kZXhlcyk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03Mi1zdGF0aWMgc3RydWN0IGJsa19tcV90YWdfc2V0IHRhZ19zZXQ7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTMwPXN0YXRpYyBpbnQgZ19xdWV1ZV9tb2RlID0gTlVMTF9RX01RO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTMxLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTMyOnN0YXRpYyBpbnQgbnVsbF9wYXJhbV9zdG9yZV92YWwoY29uc3QgY2hhciAqc3RyLCBpbnQgKnZhbCwgaW50IG1pbiwgaW50IG1heClcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEzMy17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTQ2LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTQ3OnN0YXRpYyBpbnQgbnVsbF9zZXRfcXVldWVfbW9kZShjb25zdCBjaGFyICpzdHIsIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTQ4LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xODg9c3RhdGljIGludCBnX2lycW1vZGUgPSBOVUxMX0lSUV9TT0ZUSVJRO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTg5LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTkwOnN0YXRpYyBpbnQgbnVsbF9zZXRfaXJxbW9kZShjb25zdCBjaGFyICpzdHIsIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTkxLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yNzE9TU9EVUxFX1BBUk1fREVTQyhyb3RhdGlvbmFsLCBcJiMzNDtTZXQgdGhlIHJvdGF0aW9uYWwgZmVhdHVyZSBmb3IgdGhlIGRldmljZS4gRGVmYXVsdDogZmFsc2VcJiMzNDspO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjcyLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjczOnN0YXRpYyBzdHJ1Y3QgbnVsbGJfZGV2aWNlICpudWxsX2FsbG9jX2Rldih2b2lkKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjI3NDpzdGF0aWMgdm9pZCBudWxsX2ZyZWVfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyNzU6c3RhdGljIHZvaWQgbnVsbF9kZWxfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mjc2OnN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyNzc6c3RhdGljIHN0cnVjdCBudWxsYiAqbnVsbF9maW5kX2Rldl9ieV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mjc4OnN0YXRpYyB2b2lkIG51bGxfZnJlZV9kZXZpY2Vfc3RvcmFnZShzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsIGJvb2wgaXNfY2FjaGUpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjc5LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjgwOnN0YXRpYyBpbmxpbmUgc3RydWN0IG51bGxiX2RldmljZSAqdG9fbnVsbGJfZGV2aWNlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSlcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTI4MS17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjg0LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mjg1OnN0YXRpYyBpbmxpbmUgc3NpemVfdCBudWxsYl9kZXZpY2VfdWludF9hdHRyX3Nob3codW5zaWduZWQgaW50IHZhbCwgY2hhciAqcGFnZSlcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTI4Ni17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjg5LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjkwOnN0YXRpYyBpbmxpbmUgc3NpemVfdCBudWxsYl9kZXZpY2VfdWxvbmdfYXR0cl9zaG93KHVuc2lnbmVkIGxvbmcgdmFsLFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjkxLVx0Y2hhciAqcGFnZSlcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yOTUtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyOTY6c3RhdGljIGlubGluZSBzc2l6ZV90IG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyhib29sIHZhbCwgY2hhciAqcGFnZSlcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTI5Ny17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzAwLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MzAxOnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV91aW50X2F0dHJfc3RvcmUodW5zaWduZWQgaW50ICp2YWwsXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zMDItXHRjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzE0LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MzE1OnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV91bG9uZ19hdHRyX3N0b3JlKHVuc2lnbmVkIGxvbmcgKnZhbCxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTMxNi1cdGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zMjgtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozMjk6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zMzAtXHRzaXplX3QgY291bnQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MzgzPUNPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgTkFNRSk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zODQtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozODU6c3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTM4Ni1cdFx0XHRcdCAgICAgdW5zaWduZWQgaW50IHN1Ym1pdF9xdWV1ZXMsXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDMzLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDM0OnN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00MzUtXHRcdFx0XHQgICAgIHVuc2lnbmVkIGludCBzdWJtaXRfcXVldWVzKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQzOS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0MDpzdGF0aWMgaW50IG51bGxiX2FwcGx5X3BvbGxfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ0MS1cdFx0XHRcdCAgIHVuc2lnbmVkIGludCBwb2xsX3F1ZXVlcylcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00Nzg9TlVMTEJfREVWSUNFX0FUVFIoYmFkYmxvY2tzX3BhcnRpYWxfaW8sIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDc5LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDgwOnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ4MS17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDg0LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDg1OnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00ODYtXHRcdFx0XHQgICAgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz01MjQ9Q09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBwb3dlcik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MjUtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1MjY6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2JhZGJsb2Nrc19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTUyNy17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTMyLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NTMzOnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9iYWRibG9ja3Nfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTM0LVx0XHRcdFx0ICAgICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NTc3PUNPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgYmFkYmxvY2tzKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTU3OC1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjU3OTpzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01ODAtXHRcdFx0XHRcdFx0Y29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGNvdW50KVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTU4Nj1DT05GSUdGU19BVFRSX1dPKG51bGxiX2RldmljZV8sIHpvbmVfcmVhZG9ubHkpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTg3LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NTg4OnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV96b25lX29mZmxpbmVfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTg5LVx0XHRcdFx0XHQgICAgICAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGNvdW50KVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTU5Nz1zdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX2F0dHJpYnV0ZSAqbnVsbGJfZGV2aWNlX2F0dHJzW10gPSB7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNjM3LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NjM4OnN0YXRpYyB2b2lkIG51bGxiX2RldmljZV9yZWxlYXNlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSlcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTYzOS17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NjUwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgY29uZmlnX2l0ZW1fdHlwZSBudWxsYl9kZXZpY2VfdHlwZSA9IHtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy02NTctXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo2NTg6c3RhdGljIHZvaWQgbnVsbGJfYWRkX2ZhdWx0X2NvbmZpZyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy02NTkte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTY2OC1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjY2OTpzdGF0aWMgdm9pZCBudWxsYl9kZWxfZmF1bHRfY29uZmlnKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTY3MC17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNjc3LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Njc4OnN0YXRpYyB2b2lkIG51bGxiX2FkZF9mYXVsdF9jb25maWcoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNjc5LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy02ODEtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo2ODI6c3RhdGljIHZvaWQgbnVsbGJfZGVsX2ZhdWx0X2NvbmZpZyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy02ODMte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTY4Nz1zdGF0aWMgc3RydWN0XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo2ODg6Y29uZmlnX2dyb3VwICpudWxsYl9ncm91cF9tYWtlX2dyb3VwKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBjb25zdCBjaGFyICpuYW1lKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNjg5LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz03MDY9bnVsbGJfZ3JvdXBfZHJvcF9pdGVtKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0pXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzE5LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NzIwOnN0YXRpYyBzc2l6ZV90IG1lbWJfZ3JvdXBfZmVhdHVyZXNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNoYXIgKnBhZ2UpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03MjEte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTc2ND1zdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX3N1YnN5c3RlbSBudWxsYl9zdWJzeXMgPSB7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzcyLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NzczOnN0YXRpYyBpbmxpbmUgaW50IG51bGxfY2FjaGVfYWN0aXZlKHN0cnVjdCBudWxsYiAqbnVsbGIpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03NzQte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTc3Ny1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjc3ODpzdGF0aWMgc3RydWN0IG51bGxiX2RldmljZSAqbnVsbF9hbGxvY19kZXYodm9pZClcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTc3OS17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtODM0LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6ODM1OnN0YXRpYyB2b2lkIG51bGxfZnJlZV9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtODM2LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy04NDQtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo4NDU6c3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IG51bGxfY21kX3RpbWVyX2V4cGlyZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtODQ2LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy04NTItXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo4NTM6c3RhdGljIHZvaWQgbnVsbF9jbWRfZW5kX3RpbWVyKHN0cnVjdCBudWxsYl9jbWQgKmNtZClcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTg1NC17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtODU5LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6ODYwOnN0YXRpYyB2b2lkIG51bGxfY29tcGxldGVfcnEoc3RydWN0IHJlcXVlc3QgKnJxKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtODYxLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy04NjYtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo4Njc6c3RhdGljIHN0cnVjdCBudWxsYl9wYWdlICpudWxsX2FsbG9jX3BhZ2Uodm9pZClcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTg2OC17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtODg0LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6ODg1OnN0YXRpYyB2b2lkIG51bGxfZnJlZV9wYWdlKHN0cnVjdCBudWxsYl9wYWdlICp0X3BhZ2UpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy04ODYte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTg5My1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjg5NDpzdGF0aWMgYm9vbCBudWxsX3BhZ2VfZW1wdHkoc3RydWN0IG51bGxiX3BhZ2UgKnBhZ2UpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy04OTUte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTkwMC1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjkwMTpzdGF0aWMgdm9pZCBudWxsX2ZyZWVfc2VjdG9yKHN0cnVjdCBudWxsYiAqbnVsbGIsIHNlY3Rvcl90IHNlY3RvcixcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTkwMi1cdGJvb2wgaXNfY2FjaGUpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTI2LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6OTI3OnN0YXRpYyBzdHJ1Y3QgbnVsbGJfcGFnZSAqbnVsbF9yYWRpeF90cmVlX2luc2VydChzdHJ1Y3QgbnVsbGIgKm51bGxiLCB1NjQgaWR4LFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTI4LVx0c3RydWN0IG51bGxiX3BhZ2UgKnRfcGFnZSwgYm9vbCBpc19jYWNoZSlcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy05NDMtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo5NDQ6c3RhdGljIHZvaWQgbnVsbF9mcmVlX2RldmljZV9zdG9yYWdlKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiwgYm9vbCBpc19jYWNoZSlcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTk0NS17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTcyLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6OTczOnN0YXRpYyBzdHJ1Y3QgbnVsbGJfcGFnZSAqX19udWxsX2xvb2t1cF9wYWdlKHN0cnVjdCBudWxsYiAqbnVsbGIsXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy05NzQtXHRzZWN0b3JfdCBzZWN0b3IsIGJvb2wgZm9yX3dyaXRlLCBib29sIGlzX2NhY2hlKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTk5My1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjk5NDpzdGF0aWMgc3RydWN0IG51bGxiX3BhZ2UgKm51bGxfbG9va3VwX3BhZ2Uoc3RydWN0IG51bGxiICpudWxsYixcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTk5NS1cdHNlY3Rvcl90IHNlY3RvciwgYm9vbCBmb3Jfd3JpdGUsIGJvb2wgaWdub3JlX2NhY2hlKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEwMDUtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxMDA2OnN0YXRpYyBzdHJ1Y3QgbnVsbGJfcGFnZSAqbnVsbF9pbnNlcnRfcGFnZShzdHJ1Y3QgbnVsbGIgKm51bGxiLFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTAwNy1cdFx0XHRcdFx0ICAgc2VjdG9yX3Qgc2VjdG9yLCBib29sIGlnbm9yZV9jYWNoZSlcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMDQwLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTA0MTpzdGF0aWMgaW50IG51bGxfZmx1c2hfY2FjaGVfcGFnZShzdHJ1Y3QgbnVsbGIgKm51bGxiLCBzdHJ1Y3QgbnVsbGJfcGFnZSAqY19wYWdlKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTA0Mi17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTA4OS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjEwOTA6c3RhdGljIGludCBudWxsX21ha2VfY2FjaGVfc3BhY2Uoc3RydWN0IG51bGxiICpudWxsYiwgdW5zaWduZWQgbG9uZyBuKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTA5MS17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTE0Mi1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjExNDM6c3RhdGljIGJsa19zdGF0dXNfdCBjb3B5X3RvX251bGxiKHN0cnVjdCBudWxsYiAqbnVsbGIsIHZvaWQgKnNvdXJjZSxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTExNDQtXHRcdFx0XHQgIGxvZmZfdCBwb3MsIHNpemVfdCBuLCBib29sIGlzX2Z1YSlcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMTc2LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTE3NzpzdGF0aWMgdm9pZCBjb3B5X2Zyb21fbnVsbGIoc3RydWN0IG51bGxiICpudWxsYiwgdm9pZCAqZGVzdCwgbG9mZl90IHBvcyxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTExNzgtXHRcdFx0ICAgIHNpemVfdCBuKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEyMDEtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxMjAyOmJsa19zdGF0dXNfdCBudWxsX2hhbmRsZV9kaXNjYXJkKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEyMDMtXHRcdFx0XHQgc2VjdG9yX3Qgc2VjdG9yLCBzZWN0b3JfdCBucl9zZWN0b3JzKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEyMjItXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxMjIzOnN0YXRpYyBibGtfc3RhdHVzX3QgbnVsbF9oYW5kbGVfZmx1c2goc3RydWN0IG51bGxiICpudWxsYilcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEyMjQte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEyNDItXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxMjQzOnN0YXRpYyBibGtfc3RhdHVzX3QgbnVsbF90cmFuc2ZlcihzdHJ1Y3QgbnVsbGIgKm51bGxiLCBzdHJ1Y3QgcGFnZSAqcGFnZSxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEyNDQtXHR1bnNpZ25lZCBpbnQgbGVuLCB1bnNpZ25lZCBpbnQgb2ZmLCBib29sIGlzX3dyaXRlLCBsb2ZmX3QgcG9zLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEyODItICovXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxMjgzOnN0YXRpYyBibGtfc3RhdHVzX3QgbnVsbF9oYW5kbGVfZGF0YV90cmFuc2ZlcihzdHJ1Y3QgbnVsbGJfY21kICpjbWQsXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMjg0LVx0XHRcdFx0XHQgICAgICBzZWN0b3JfdCBucl9zZWN0b3JzKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEzMTUtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxMzE2OnN0YXRpYyBpbmxpbmUgYmxrX3N0YXR1c190IG51bGxfaGFuZGxlX3Rocm90dGxlZChzdHJ1Y3QgbnVsbGJfY21kICpjbWQpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMzE3LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMzQ2LSAqL1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTM0NzpibGtfc3RhdHVzX3QgbnVsbF9oYW5kbGVfYmFkYmxvY2tzKHN0cnVjdCBudWxsYl9jbWQgKmNtZCwgc2VjdG9yX3Qgc2VjdG9yLFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTM0OC1cdFx0XHRcdCAgIHVuc2lnbmVkIGludCAqbnJfc2VjdG9ycylcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMzcyLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTM3MzpibGtfc3RhdHVzX3QgbnVsbF9oYW5kbGVfbWVtb3J5X2JhY2tlZChzdHJ1Y3QgbnVsbGJfY21kICpjbWQsIGVudW0gcmVxX29wIG9wLFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTM3NC1cdFx0XHRcdCAgICAgICBzZWN0b3JfdCBzZWN0b3IsIHNlY3Rvcl90IG5yX3NlY3RvcnMpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTM4My1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjEzODQ6c3RhdGljIHZvaWQgbnVsbGJfemVyb19yZWFkX2NtZF9idWZmZXIoc3RydWN0IG51bGxiX2NtZCAqY21kKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTM4NS17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTM5NS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjEzOTY6c3RhdGljIGlubGluZSB2b2lkIG51bGxiX2NvbXBsZXRlX2NtZChzdHJ1Y3QgbnVsbGJfY21kICpjbWQpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMzk3LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNDIzLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTQyNDpibGtfc3RhdHVzX3QgbnVsbF9wcm9jZXNzX2NtZChzdHJ1Y3QgbnVsbGJfY21kICpjbWQsIGVudW0gcmVxX29wIG9wLFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTQyNS1cdFx0XHQgICAgICBzZWN0b3JfdCBzZWN0b3IsIHVuc2lnbmVkIGludCBucl9zZWN0b3JzKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE0NDItXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNDQzOnN0YXRpYyB2b2lkIG51bGxfaGFuZGxlX2NtZChzdHJ1Y3QgbnVsbGJfY21kICpjbWQsIHNlY3Rvcl90IHNlY3RvcixcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE0NDQtXHRcdFx0ICAgIHNlY3Rvcl90IG5yX3NlY3RvcnMsIGVudW0gcmVxX29wIG9wKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE0NjctXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNDY4OnN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBudWxsYl9id3RpbWVyX2ZuKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE0Njkte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE0ODQtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNDg1OnN0YXRpYyB2b2lkIG51bGxiX3NldHVwX2J3dGltZXIoc3RydWN0IG51bGxiICpudWxsYilcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE0ODYte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE0OTUtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNDk2OnN0YXRpYyBib29sIHNob3VsZF90aW1lb3V0X3JlcXVlc3Qoc3RydWN0IHJlcXVlc3QgKnJxKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTQ5Ny17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTUwMy1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE1MDQ6c3RhdGljIGJvb2wgc2hvdWxkX3JlcXVldWVfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdCAqcnEpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTA1LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTExLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTUxMjpzdGF0aWMgYm9vbCBzaG91bGRfaW5pdF9oY3R4X2ZhaWwoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTUxMy17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTUxOC1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE1MTk6c3RhdGljIGJvb2wgc2hvdWxkX3RpbWVvdXRfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdCAqcnEpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTIwLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTIzLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTUyNDpzdGF0aWMgYm9vbCBzaG91bGRfcmVxdWV1ZV9yZXF1ZXN0KHN0cnVjdCByZXF1ZXN0ICpycSlcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE1MjUte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE1MjgtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNTI5OnN0YXRpYyBib29sIHNob3VsZF9pbml0X2hjdHhfZmFpbChzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTMwLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTM1LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTUzNjpzdGF0aWMgdm9pZCBudWxsX21hcF9xdWV1ZXMoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTM3LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTg4LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTU4OTpzdGF0aWMgaW50IG51bGxfcG9sbChzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCwgc3RydWN0IGlvX2NvbXBfYmF0Y2ggKmlvYilcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE1OTAte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE2MTktXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNjIwOnN0YXRpYyBlbnVtIGJsa19laF90aW1lcl9yZXR1cm4gbnVsbF90aW1lb3V0X3JxKHN0cnVjdCByZXF1ZXN0ICpycSlcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE2MjEte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE2NTItXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNjUzOnN0YXRpYyBibGtfc3RhdHVzX3QgbnVsbF9xdWV1ZV9ycShzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE2NTQtXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBibGtfbXFfcXVldWVfZGF0YSAqYmQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTcwNy1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE3MDg6c3RhdGljIHZvaWQgbnVsbF9xdWV1ZV9ycXMoc3RydWN0IHJxX2xpc3QgKnJxbGlzdClcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE3MDkte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE3MjUtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNzI2OnN0YXRpYyB2b2lkIG51bGxfaW5pdF9xdWV1ZShzdHJ1Y3QgbnVsbGIgKm51bGxiLCBzdHJ1Y3QgbnVsbGJfcXVldWUgKm5xKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTcyNy17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTczMi1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE3MzM6c3RhdGljIGludCBudWxsX2luaXRfaGN0eChzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCwgdm9pZCAqZHJpdmVyX2RhdGEsXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNzM0LVx0XHRcdCAgdW5zaWduZWQgaW50IGhjdHhfaWR4KVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE3NDk9c3RhdGljIGNvbnN0IHN0cnVjdCBibGtfbXFfb3BzIG51bGxfbXFfb3BzID0ge1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE3NTgtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNzU5OnN0YXRpYyB2b2lkIG51bGxfZGVsX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTc2MC17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTc4OS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE3OTA6c3RhdGljIHZvaWQgbnVsbF9jb25maWdfZGlzY2FyZChzdHJ1Y3QgbnVsbGIgKm51bGxiLCBzdHJ1Y3QgcXVldWVfbGltaXRzICpsaW0pXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNzkxLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xODEwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgbnVsbF9vcHMgPSB7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTgxNC1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE4MTU6c3RhdGljIGludCBzZXR1cF9xdWV1ZXMoc3RydWN0IG51bGxiICpudWxsYilcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE4MTYte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE4MjgtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxODI5OnN0YXRpYyBpbnQgbnVsbF9pbml0X3RhZ19zZXQoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQsIGludCBwb2xsX3F1ZXVlcylcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE4MzAte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE4NDEtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxODQyOnN0YXRpYyBpbnQgbnVsbF9pbml0X2dsb2JhbF90YWdfc2V0KHZvaWQpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xODQzLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xODY0LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTg2NTpzdGF0aWMgaW50IG51bGxfc2V0dXBfdGFnc2V0KHN0cnVjdCBudWxsYiAqbnVsbGIpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xODY2LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xODg1LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTg4NjpzdGF0aWMgaW50IG51bGxfdmFsaWRhdGVfY29uZihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xODg3LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTI5LSNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE5MzA6c3RhdGljIGJvb2wgX19udWxsX3NldHVwX2ZhdWx0KHN0cnVjdCBmYXVsdF9hdHRyICphdHRyLCBjaGFyICpzdHIpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTMxLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTQyLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTk0MzpzdGF0aWMgYm9vbCBudWxsX3NldHVwX2ZhdWx0KHZvaWQpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTQ0LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTU1LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTk1NjpzdGF0aWMgaW50IG51bGxfYWRkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTU3LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDgwLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjA4MTpzdGF0aWMgc3RydWN0IG51bGxiICpudWxsX2ZpbmRfZGV2X2J5X25hbWUoY29uc3QgY2hhciAqbmFtZSlcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwODIte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwOTYtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMDk3OnN0YXRpYyBpbnQgbnVsbF9jcmVhdGVfZGV2KHZvaWQpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDk4LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTE2LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjExNzpzdGF0aWMgdm9pZCBudWxsX2Rlc3Ryb3lfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTE4LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTI1LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjEyNjpzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxMjcte1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxOTUtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMTk2OnN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZClcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxOTcte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDI2MQoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDI3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgTnVsbCBCbG9jayBEcml2ZXIgUmFjZSBDb25kaXRpb24gRml4KioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIHJhY2UgY29uZGl0aW9uLCBzcGVjaWZpY2FsbHkgYmV0d2VlbiBtb2RpZnlpbmcgYSBjb25maWdmcyBhdHRyaWJ1dGUgYW5kIHRoZSBgbnVsbF9hZGRfZGV2KClgIGZ1bmN0aW9uLiBUaGF0IG1ha2VzIHNlbnNlOyB0aGVzZSB0eXBlcyBvZiBpbnRlcmFjdGlvbnMgYXJlIGFsd2F5cyBhIHBvdGVudGlhbCBzb3VyY2Ugb2YgdHJvdWJsZS4gTGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gVGhlIGF0dHJpYnV0ZSBtb2RpZmljYXRpb24gZnVuY3Rpb25zIGFyZSBjcmVhdGVkIHVzaW5nIGBOVUxMQl9ERVZJQ0VfQVRUUmAsIGFuZCB0aGV5JiMzOTtyZSBnaXZlbiB0aGUgbmFtZXMgYG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZWAuIEFuZCBJIHNlZSB0aGV5JiMzOTtyZSBzdGF0aWMgZnVuY3Rpb25zLiBJbnRlcmVzdGluZy4gVGhhdCBzZWVtcyByZWxldmFudC4gQW5kIGBudWxsX2FkZF9kZXZgIGlzICphbHNvKiBzdGF0aWMuIEhtbS4gSXMgdGhlcmUgKmFueSogbm9uLXN0YXRpYyBmdW5jdGlvbiBpbnZvbHZlZCBpbiB0aGlzIGNyaXRpY2FsIHBhdGg/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbiBzY29wZSBmb3IgdGhlc2Ugb3BlcmF0aW9ucyB0byBuYXJyb3cgZG93biB3aGVyZSB0byBmb2N1cyBteSBhbmFseXNpcy4KCkxldCYjMzk7cyBzZWUuLi4gbG9va2luZyBhdCB0aGUgY29kZSwgSSBzZWUgYG51bGxfaW5pdGAgYW5kIGBudWxsX2V4aXRgLCB3aGljaCBhcmUsIG9mIGNvdXJzZSwgdGhlIGluaXQgYW5kIGV4aXQgZnVuY3Rpb25zLiBCdXQgdGhvc2UgYXJlbiYjMzk7dCBkaXJlY3RseSBpbnZvbHZlZCBpbiB0aGlzIHBhcnRpY3VsYXIgcmFjZSwgYW5kIHRoZSByZWxldmFudCBmdW5jdGlvbnMgYXJlIHN0YXRpYy4KCkFscmlnaHQsIHNvIHRoZSBjb25maWdmcyBvcGVyYXRpb25zIGFyZSByZWdpc3RlcmVkIHRocm91Z2ggYG51bGxiX2RldmljZV90eXBlYCBhbmQgYG51bGxiX3N1YnN5c2AuIFRoZSBlbnRyeSBwb2ludHMgZm9yIHRoZSBjb25maWdmcyBpbnRlcmFjdGlvbnMgYXJlIHRoZSBzdG9yZS9zaG93IGZ1bmN0aW9ucy4gQW5kIHRoZXkmIzM5O3JlIHN0YXRpYy4gVGhhdCBtZWFucyBJIGNhbiYjMzk7dCBkaXJlY3RseSBzcGVjaWZ5IHRoZW0gaW4gYSB0b29sIGxpa2UgYEZvY3VzU3ltYm9sc2AuIFRoYXQmIzM5O3MgaW1wb3J0YW50IHRvIHJlbWVtYmVyLiBCdXQgd2FpdCwgd2hhdCBhYm91dCBgbnVsbF9hZGRfZGV2YD8gSXQmIzM5O3Mgc3RhdGljIHRvby4gU28gSSBjYW4mIzM5O3QgZm9jdXMgdGhlcmUgZWl0aGVyLgoKTGV0IG1lIHRha2UgYSBzdGVwIGJhY2sgYW5kIHNlZSB3aGF0IG90aGVyIGNvZGUgbWlnaHQgYmUgaW52b2x2ZWQuIFNpbmNlIHRoZSBmdW5jdGlvbnMgaW4gYG1haW4uY2AgYXJlIHN0YXRpYywgYXJlIHRoZXJlIGFueSBvdGhlciBmaWxlcyBpbiBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9gIHRoYXQgY291bGQgYmUgcmVsZXZhbnQ/IEkgbmVlZCB0byBicm9hZGVuIG15IHNjb3BlIGEgYml0IGFuZCBzZWUgaWYgdGhlcmUgYXJlIG90aGVyLCBwb3NzaWJseSBub24tc3RhdGljIGZ1bmN0aW9ucywgdGhhdCBjb3VsZCBwbGF5IGEgcm9sZSBpbiB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O21haW4uYyYjMzQ7LAogICAgJiMzNDtudWxsX2Jsay5oJiMzNDssCiAgICAmIzM0O3RyYWNlLmMmIzM0OywKICAgICYjMzQ7dHJhY2UuaCYjMzQ7LAogICAgJiMzNDt6b25lZC5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUwMDcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBSYWNlIENvbmRpdGlvbnMgaW4gdGhlIE51bGwgQmxvY2sgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIHBpbnBvaW50IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgaW4gdGhlIG51bGwgYmxvY2sgZHJpdmVyIChgbWFpbi5jYCBzcGVjaWZpY2FsbHkpLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY2hlY2sgaWYgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHdpdGhpbiBgbWFpbi5jYCBhcmUgY2FsbGVkIGZyb20gb3V0c2lkZSB0aGUgbW9kdWxlLiBUaGF0IHdvdWxkIGJlIGEgbGlrZWx5IGVudHJ5IHBvaW50IGZvciBjb25jdXJyZW5jeSBpc3N1ZXMuIEhvd2V2ZXIsIHNpbmNlIHRoaXMgaXMgYSBtb2R1bGUsIEkmIzM5O20gYWxyZWFkeSBhd2FyZSB0aGF0IHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyBhcmUgbW9kdWxlIGluaXRpYWxpemF0aW9uL2V4aXQgcm91dGluZXMgYW5kIHRoZSBjYWxsYmFja3MgYXNzb2NpYXRlZCB3aXRoIGNvbmZpZ2ZzL3N5c2ZzLgoKVGhlIGNvbmZpZ2ZzIGNhbGxiYWNrcyBhcmUgZGVmaW5pdGVseSBjYWxsZWQgdGhyb3VnaCB0aGUgVmlydHVhbCBGaWxlIFN5c3RlbSAoVkZTKSBsYXllci4gU28sIEkgY2FuJiMzOTt0IGp1c3QgdHJhY2sgdGhpbmdzIGZyb20gYG1haW4uY2AuIE5vdywgSSBuZWVkIHRvIGZvY3VzIG9uIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiBhIHBvdGVudGlhbCBzdG9yZSBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmVgLCBhbmQgYG51bGxfYWRkX2RldmAuIFRoZXNlIHNlZW0gbGlrZSB0aGUgdHdvIGZ1bmN0aW9ucyBsaWtlbHkgdG8gaGF2ZSBvdmVybGFwIGlzc3Vlcy4KCmBudWxsX2FkZF9kZXZgIGlzLCBhcyBJIHJlY2FsbCwgY2FsbGVkIGZyb20gYG51bGxfY3JlYXRlX2RldmAsIHdoaWNoIGl0c2VsZiBpcyBwYXJ0IG9mIG1vZHVsZSBpbml0aWFsaXphdGlvbi4gUmlnaHQuIEJ1dCB3YWl0Li4uIGlzIGl0IGFsc28gY2FsbGVkIHZpYSB0aGUgY29uZmlnZnMgcGF0aCB0aHJvdWdoIGBudWxsYl9ncm91cF9tYWtlX2dyb3VwYD8gTm8sIHRoYXQgZG9lc24mIzM5O3QgZmVlbCByaWdodC4gTGV0IG1lIGp1c3QgY29uZmlybSB0aGF0LiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHdoZXJlIHRoYXQgZnVuY3Rpb24gaXMgYWN0dWFsbHkgaW52b2tlZCBmcm9tLiBJIG5lZWQgdG8gdHJhY2UgYmFjayAqaG93KiBgbnVsbF9hZGRfZGV2YCBpcyBjYWxsZWQuIExldCYjMzk7cyBkaWcgaW4gYW5kIHRyYWNrIHRoZSBjYWxsIHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE3OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O251bGxfYWRkX2RldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTI3NT1zdGF0aWMgdm9pZCBudWxsX2RlbF9kZXYoc3RydWN0IG51bGxiICpudWxsYik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyNzY6c3RhdGljIGludCBudWxsX2FkZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTI3Ny1zdGF0aWMgc3RydWN0IG51bGxiICpudWxsX2ZpbmRfZGV2X2J5X25hbWUoY29uc3QgY2hhciAqbmFtZSk7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MzI5PXN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9ib29sX2F0dHJfc3RvcmUoYm9vbCAqdmFsLCBjb25zdCBjaGFyICpwYWdlLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTM0Ni0gKiBUaGUgZGV2aWNlIGNvbmZpZ3VyYXRpb24gaXMgbW9kaWZpZWQgdW5kZXIgdGhlIGdsb2JhbCBsb2NrIHRvIHNlcmlhbGl6ZVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MzQ3OiAqIGF0dHJpYnV0ZSBjaGFuZ2VzIGFnYWluc3QgbnVsbF9hZGRfZGV2KCkgYW5kIG51bGxfZGVsX2RldigpOiB3aXRob3V0IHRoaXMsXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozNDg6ICogYW4gYXR0cmlidXRlIGNvdWxkIGJlIGNoYW5nZWQgd2hpbGUgbnVsbF9hZGRfZGV2KCkgaXMgcnVubmluZywgdGhhdCBpcyxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjM0OTogKiBiZWZvcmUgTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQgaXMgc2V0LCB3aGljaCB3b3VsZCBsZXQgbnVsbF9hZGRfZGV2KClcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTM1MC0gKiBvYnNlcnZlIGluY29uc2lzdGVudCB2YWx1ZXMgZm9yIHRoZSBkZXZpY2UgY29uZmlndXJhdGlvbi5cbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00ODU9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MDEtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1MDI6XHRcdHJldCA9IG51bGxfYWRkX2RldihkZXYpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTAzLVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTk0Mz1zdGF0aWMgYm9vbCBudWxsX3NldHVwX2ZhdWx0KHZvaWQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTk1NS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE5NTY6c3RhdGljIGludCBudWxsX2FkZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTk1Ny17XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MjA5Nz1zdGF0aWMgaW50IG51bGxfY3JlYXRlX2Rldih2b2lkKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxMDYtXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjEwNzpcdHJldCA9IG51bGxfYWRkX2RldihkZXYpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjEwOC1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYxNDEKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA0OTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLZXJuZWwgTW9kdWxlJiMzOTtzIFN5bWJvbCBGb2N1cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBrZXJuZWwgbW9kdWxlIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCB3aGljaCBmdW5jdGlvbnMgYXJlIHRoZSBrZXkgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gYEZvY3VzU3ltYm9sc2AuIGBudWxsX2FkZF9kZXZgIGlzIGNhbGxlZCBmcm9tIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIGFuZCBgbnVsbF9jcmVhdGVfZGV2YC4gYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgaXMgYSBjb25maWdmcyBzdG9yZSBjYWxsYmFjayB3aGljaCBtZWFucyBpdCYjMzk7cyBsaWtlbHkgbm90IGlubGluZWQgYmVjYXVzZSBpdHMgYWRkcmVzcyBpcyB0YWtlbi4gVGhlIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiwgdGhlbiwgaXMgYmV0d2VlbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCAod2hpY2ggY2FsbHMgYG51bGxfYWRkX2RldmApIGFuZCBvdGhlciBzaW1pbGFyIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmVgIGZ1bmN0aW9ucy4gU2luY2UgdGhvc2UgYXJlIGFsbCBzdGF0aWMsIHRoZXkgbWlnaHQgYmUgaW5saW5lZC4gQnV0IHdhaXQsIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgICppcyogc3RhdGljLCBidXQgaXRzIGFkZHJlc3MgaXMgdGFrZW4gd2l0aGluIGBDT05GSUdGU19BVFRSYC4KClRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeSBwb2ludHMuIFNvLCB0aGUgaWRlYWwgc2l0dWF0aW9uIHdvdWxkIGJlIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiwgYnV0IHRoZXJlIGRvZXNuJiMzOTt0IHNlZW0gdG8gYmUgb25lLiBUaGVyZWZvcmUgSSBuZWVkIHRvIGRlY2lkZSBpZiBJIGNhbiB1c2Ugc3RhdGljIG9uZXMuIFRoZSBpbnN0cnVjdGlvbnMgdGVsbCBtZSB0byBhdm9pZCBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucywgc28gSSBzaG91bGQgYmUgc2VsZWN0aXZlLgoKVGhpbmtpbmcgYWJvdXQgYG51bGxfYWRkX2RldmAsIGl0JiMzOTtzIG5vdCBpbmxpbmVkIGR1ZSB0byBpdHMgc2l6ZSwgZXZlbiB0aG91Z2ggaXQgKmlzKiBzdGF0aWMuIFRoZSBtYWluIHF1ZXN0aW9uIGlzIGNhbiBJIGxlYXZlIGBGb2N1c1N5bWJvbHNgIGVtcHR5PyBJdCAqc2VlbXMqIGxpa2UgSSBjYW4sIGFzIHRoZXJlIGFyZSBubyBub24tc3RhdGljIGZ1bmN0aW9ucyBtb2RpZmllZC4gVGhlIGluc3RydWN0aW9ucyBhbGxvdyBmb3IgbGVhdmluZyBpdCBlbXB0eS4gSG93ZXZlciwgSSBjb3VsZCBpbmNsdWRlIGBudWxsX2FkZF9kZXZgIGFuZCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCwgYnV0IHRoZSBpbnN0cnVjdGlvbnMgcHJlZmVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zLCB3aGljaCBzdWdnZXN0cyBsZWF2aW5nIHRoZSBsaXN0IGVtcHR5IGlzIGZpbmUgd2hlbiB0aGVyZSBhcmUgbm8gbm9uLXN0YXRpYyBmdW5jdGlvbnMuCgpTbywgaXQmIzM5O3Mgc2FmZXIgdG8gbGVhdmUgYEZvY3VzU3ltYm9sc2AgZW1wdHksIHNpbmNlIHRoZSBpbnN0cnVjdGlvbnMgcHJpb3JpdGl6ZSBub24tc3RhdGljIGVudHJ5IHBvaW50cywgYnV0IGlmIHRoZXJlIGFyZSBubyBub24tc3RhdGljLCBgbnVsbF9hZGRfZGV2YCBtYXkgYmUgYWRkZWQuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBudWxsX2FkZF9kZXZgIGlzIGFjdHVhbGx5IGluIGBrYWxsc3ltc2AuIEl0IHVzdWFsbHkgaXMgYmVjYXVzZSBvZiBpdHMgc2l6ZS4gTGVhdmluZyBpdCBlbXB0eSBpcyBhbHNvIGEgdmFsaWQgYXBwcm9hY2guCgpOb3csIGxldCBtZSBjaGVjayB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbnMuIGBCTEtfREVWX05VTExfQkxLYCBzZWVtcyBsaWtlIHRoZSBwcmltYXJ5IG9uZS4gSSBzaG91bGQgY2hlY2sgYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZ2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBOdWxsIGJsb2NrIGRldmljZSBkcml2ZXIgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgQkxLX0RFVl9OVUxMX0JMS1xuICAgNzpcdFx0dHJpc3RhdGUgXCYjMzQ7TnVsbCB0ZXN0IGJsb2NrIGRyaXZlclwmIzM0O1xuICAgODpcdFx0c2VsZWN0IENPTkZJR0ZTX0ZTXG4gICA5Olx0XG4gIDEwOlx0Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXG4gIDExOlx0XHRib29sIFwmIzM0O1N1cHBvcnQgZmF1bHQgaW5qZWN0aW9uIGZvciBOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXCYjMzQ7XG4gIDEyOlx0XHRkZXBlbmRzIG9uIEJMS19ERVZfTlVMTF9CTEsgXHUwMDI2XHUwMDI2IEZBVUxUX0lOSkVDVElPTl9DT05GSUdGU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMyAxNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzM1MAoJCQkJCQkJb3V0cHV0OiA3OAoJCQkJCQkJdGhvdWdodHM6IDI2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgTnVsbCBCbG9jayBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBgQkxLX0RFVl9OVUxMX0JMS2AgcHVsbHMgaW4gYENPTkZJR0ZTX0ZTYC4gTm90aGluZyB1bmV4cGVjdGVkIHRoZXJlLCBubyBkZXBlbmRlbmNpZXMgdG8gd29ycnkgYWJvdXQuIFNvLCBgRW5hYmxlQ29uZmlnc2Agc2hvdWxkIGFic29sdXRlbHkgaW5jbHVkZSBgQkxLX0RFVl9OVUxMX0JMS2AuIFRoZSBwYXRjaCBkb2VzIHRvdWNoIGNvbmZpZ2ZzIGF0dHJpYnV0ZXMsIHdoaWNoIG1ha2VzIGBDT05GSUdGU19GU2AgcmVsZXZhbnQsIGJ1dCBsaWtlIEkgc2FpZCwgYEJMS19ERVZfTlVMTF9CTEtgIHNlbGVjdHMgaXQsIHNvIHRoYXQmIzM5O3MgaGFuZGxlZC4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIHN3ZWVwIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW52b2x2ZWQuIEhtbSwgaXQgbG9va3MgbGlrZSB0aGlzIHBhdGNoIGlzIGNoYW5naW5nIGBOVUxMQl9ERVZJQ0VfQVRUUmAsIHdoaWNoIGFwcGxpZXMgdG8gYWxsIGF0dHJpYnV0ZXMsIHJpZ2h0PyBSaWdodCwgYW5kIHRoZSByYWNlIGNvbmRpdGlvbiBpcyBiZXR3ZWVuIGBudWxsX2FkZF9kZXZgIGFuZCBhdHRyaWJ1dGUgc3RvcmUgb3BlcmF0aW9ucy4gR2l2ZW4gdGhhdCwgdGhpcyBpcyAqZGVmaW5pdGVseSogd29ydGggZnV6emluZy4KCkFscmlnaHQsIGxldCYjMzk7cyBwdXQgdG9nZXRoZXIgdGhlIHJlc3VsdHMgb2YgdGhpcyBhbmFseXNpcy4KCiogICBgV29ydGhGdXp6aW5nYDogVHJ1ZS4gUmFjZSBjb25kaXRpb25zIGFyZSBmdXp6YWJsZS4KKiAgIGBGb2N1c1N5bWJvbHNgOiBFbXB0eS4gSSBjaGVja2VkIGFuZCBgbnVsbF9hZGRfZGV2YCBpcywgaW4gZmFjdCwgc3RhdGljLiBgbnVsbF9pbml0YCBpcyBhbHNvIGBfX2luaXRgLCBzbyBpdCYjMzk7cyBub3QgYSBmdXp6aW5nIHRhcmdldC4KKiAgIGBFbmFibGVDb25maWdzYDogYFsmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0O11gCiogICBgUmVhc29uaW5nYDogVGhlIHBhdGNoIHRhY2tsZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyJiMzOTtzIGNvbmZpZ2ZzIGludGVyZmFjZS4gTG9ja2luZyBpcyBiZWluZyBhZGRlZCB0byBkZXZpY2UgYXR0cmlidXRlIG1vZGlmaWNhdGlvbnMsIHdoaWNoIHByZXZlbnRzIGNvbmN1cnJlbnQgY2hhbmdlcyB0byBhdHRyaWJ1dGVzIHdoZW4gYSBkZXZpY2UgaXMgYWRkZWQgb3IgcmVtb3ZlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTc6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyJiMzOTtzIGNvbmZpZ2ZzIGludGVyZmFjZSBieSBhZGRpbmcgbG9ja2luZyB0byBkZXZpY2UgYXR0cmlidXRlIG1vZGlmaWNhdGlvbnMuIFRoaXMgcHJldmVudHMgYXR0cmlidXRlcyBmcm9tIGJlaW5nIGNoYW5nZWQgY29uY3VycmVudGx5IHdpdGggZGV2aWNlIGFkZGl0aW9uL3JlbW92YWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyJiMzOTtzIGNvbmZpZ2ZzIGludGVyZmFjZSBieSBhZGRpbmcgbG9ja2luZyB0byBkZXZpY2UgYXR0cmlidXRlIG1vZGlmaWNhdGlvbnMuIFRoaXMgcHJldmVudHMgYXR0cmlidXRlcyBmcm9tIGJlaW5nIGNoYW5nZWQgY29uY3VycmVudGx5IHdpdGggZGV2aWNlIGFkZGl0aW9uL3JlbW92YWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEzIDE3OjE1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTc6MTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyIGJ5IHRha2luZyBhIGdsb2JhbCBtdXRleCB3aGVuIHVwZGF0aW5nIGRldmljZSBhdHRyaWJ1dGVzIHZpYSBjb25maWdmcy4gSXQgYWxzbyBjaGFuZ2VzIHRoZSBtdXRleCBpbml0aWFsaXphdGlvbiB0byB1c2UgREVGSU5FX01VVEVYLiBUaGVzZSBjaGFuZ2VzIGFkZHJlc3MgY29uY3VycmVuY3kgaXNzdWVzIGFuZCBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4gQW55IGxvY2tpbmcgaXNzdWVzIG9yIHJhY2UgY29uZGl0aW9ucyB3b3VsZCBiZSBjYXVnaHQgYnkgTE9DS0RFUCBvciBLQ1NBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDY4NGZkODJiZjQxMmM0Mjk1ZDQwOThiNDdkMDVhMmExODk5YmNhZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDEzIDE3OjE0OjUwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYwppbmRleCBmOGMwZmQ1N2UwNDFhLi4yZThmOTk4NzM5NTY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYwpAQCAtNjYsNyAmIzQzOzY2LDcgQEAgc3RydWN0IG51bGxiX3BhZ2UgewogI2RlZmluZSBOVUxMQl9QQUdFX0ZSRUUgKE1BUF9TWiAtIDIpCiAKIHN0YXRpYyBMSVNUX0hFQUQobnVsbGJfbGlzdCk7Ci1zdGF0aWMgc3RydWN0IG11dGV4IGxvY2s7CiYjNDM7c3RhdGljIERFRklORV9NVVRFWChsb2NrKTsKIHN0YXRpYyBpbnQgbnVsbF9tYWpvcjsKIHN0YXRpYyBERUZJTkVfSURBKG51bGxiX2luZGV4ZXMpOwogc3RhdGljIHN0cnVjdCBibGtfbXFfdGFnX3NldCB0YWdfc2V0OwpAQCAtMzQwLDcgJiM0MzszNDAsMTUgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsCiAJcmV0dXJuIGNvdW50OwogfQogCi0vKiBUaGUgZm9sbG93aW5nIG1hY3JvIHNob3VsZCBvbmx5IGJlIHVzZWQgd2l0aCBUWVBFID0ge3VpbnQsIHVsb25nLCBib29sfS4gKi8KJiM0MzsvKgomIzQzOyAqIFRoZSBmb2xsb3dpbmcgbWFjcm8gc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoIFRZUEUgPSB7dWludCwgdWxvbmcsIGJvb2x9LgomIzQzOyAqCiYjNDM7ICogVGhlIGRldmljZSBjb25maWd1cmF0aW9uIGlzIG1vZGlmaWVkIHVuZGVyIHRoZSBnbG9iYWwgbG9jayB0byBzZXJpYWxpemUKJiM0MzsgKiBhdHRyaWJ1dGUgY2hhbmdlcyBhZ2FpbnN0IG51bGxfYWRkX2RldigpIGFuZCBudWxsX2RlbF9kZXYoKTogd2l0aG91dCB0aGlzLAomIzQzOyAqIGFuIGF0dHJpYnV0ZSBjb3VsZCBiZSBjaGFuZ2VkIHdoaWxlIG51bGxfYWRkX2RldigpIGlzIHJ1bm5pbmcsIHRoYXQgaXMsCiYjNDM7ICogYmVmb3JlIE5VTExCX0RFVl9GTF9DT05GSUdVUkVEIGlzIHNldCwgd2hpY2ggd291bGQgbGV0IG51bGxfYWRkX2RldigpCiYjNDM7ICogb2JzZXJ2ZSBpbmNvbnNpc3RlbnQgdmFsdWVzIGZvciB0aGUgZGV2aWNlIGNvbmZpZ3VyYXRpb24uCiYjNDM7ICovCiAjZGVmaW5lIE5VTExCX0RFVklDRV9BVFRSKE5BTUUsIFRZUEUsIEFQUExZKQkJCQlcCiBzdGF0aWMgc3NpemVfdAkJCQkJCQkJXAogbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKQlcCkBAIC0zNjAsMTMgJiM0MzszNjgsMTYgQEAgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSwJXAogCXJldCA9IG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3N0b3JlKCZhbXA7bmV3X3ZhbHVlLCBwYWdlLCBjb3VudCk7XAogCWlmIChyZXQgJmx0OyAwKQkJCQkJCQlcCiAJCXJldHVybiByZXQ7CQkJCQkJXAomIzQzOwltdXRleF9sb2NrKCZhbXA7bG9jayk7CQkJCQkJXAogCWlmIChhcHBseV9mbikJCQkJCQkJXAogCQlyZXQgPSBhcHBseV9mbihkZXYsIG5ld192YWx1ZSk7CQkJCVwKIAllbHNlIGlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgJmFtcDtkZXYtJmd0O2ZsYWdzKSkgCVwKIAkJcmV0ID0gLUVCVVNZOwkJCQkJCVwKJiM0MzsJaWYgKHJldCAmZ3Q7PSAwKQkJCQkJCQlcCiYjNDM7CQlkZXYtJmd0O05BTUUgPSBuZXdfdmFsdWU7CQkJCQlcCiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2xvY2spOwkJCQkJCVwKIAlpZiAocmV0ICZsdDsgMCkJCQkJCQkJXAogCQlyZXR1cm4gcmV0OwkJCQkJCVwKLQlkZXYtJmd0O05BTUUgPSBuZXdfdmFsdWU7CQkJCQkJXAogCXJldHVybiBjb3VudDsJCQkJCQkJXAogfQkJCQkJCQkJCVwKIENPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgTkFNRSk7CkBAIC0zNzksNiAmIzQzOzM5MCw4IEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsCiAJc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQ7CiAJaW50IHJldCwgbnJfaHdfcXVldWVzOwogCiYjNDM7CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmFtcDtsb2NrKTsKJiM0MzsKIAlpZiAoIWRldi0mZ3Q7bnVsbGIpCiAJCXJldHVybiAwOwogCkBAIC00MjEsMjUgJiM0Mzs0MzQsMTMgQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiwKIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsCiAJCQkJICAgICB1bnNpZ25lZCBpbnQgc3VibWl0X3F1ZXVlcykKIHsKLQlpbnQgcmV0OwotCi0JbXV0ZXhfbG9jaygmYW1wO2xvY2spOwotCXJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtJmd0O3BvbGxfcXVldWVzKTsKLQltdXRleF91bmxvY2soJmFtcDtsb2NrKTsKLQotCXJldHVybiByZXQ7CiYjNDM7CXJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LSZndDtwb2xsX3F1ZXVlcyk7CiB9CiAKIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LAogCQkJCSAgIHVuc2lnbmVkIGludCBwb2xsX3F1ZXVlcykKIHsKLQlpbnQgcmV0OwotCi0JbXV0ZXhfbG9jaygmYW1wO2xvY2spOwotCXJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTsKLQltdXRleF91bmxvY2soJmFtcDtsb2NrKTsKLQotCXJldHVybiByZXQ7CiYjNDM7CXJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LSZndDtzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7CiB9CiAKIE5VTExCX0RFVklDRV9BVFRSKHNpemUsIHVsb25nLCBOVUxMKTsKQEAgLTIxNjYsOCAmIzQzOzIxNjcsNiBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZCkKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JbXV0ZXhfaW5pdCgmYW1wO2xvY2spOwotCiAJbnVsbF9tYWpvciA9IHJlZ2lzdGVyX2Jsa2RldigwLCAmIzM0O251bGxiJiMzNDspOwogCWlmIChudWxsX21ham9yICZsdDsgMCkgewogCQlyZXQgPSBudWxsX21ham9yOwpAQCAtMjIxMSw4ICYjNDM7MjIxMCw2IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZCkKIAogCWlmICh0YWdfc2V0Lm9wcykKIAkJYmxrX21xX2ZyZWVfdGFnX3NldCgmYW1wO3RhZ19zZXQpOwotCi0JbXV0ZXhfZGVzdHJveSgmYW1wO2xvY2spOwogfQogCiBtb2R1bGVfaW5pdChudWxsX2luaXQpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTc6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA3MwoJCQkJCQkJb3V0cHV0OiAxMjUKCQkJCQkJCXRob3VnaHRzOiAyNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTnVsbCBCbG9jayBEZXZpY2UgRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgZm9jdXNlZCBvbiB0aGUgYG51bGxfYmxrYCBkcml2ZXIsIHNwZWNpZmljYWxseSBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNgLiBJdCYjMzk7cyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgbG9ja2luZyBjb3JyZWN0aW9uLCB3aGljaCBJIGFwcHJlY2lhdGUuIFRoZSBwcmltYXJ5IGNoYW5nZSBpcyB0aGUgcmVwbGFjZW1lbnQgb2YgdGhlIG1hbnVhbCBtdXRleCBpbml0aWFsaXphdGlvbiAoYHN0YXRpYyBzdHJ1Y3QgbXV0ZXggbG9jaztgIGZvbGxvd2VkIGJ5IGBtdXRleF9pbml0KCZhbXA7bG9jayk7YCBhbmQgYG11dGV4X2Rlc3Ryb3koJmFtcDtsb2NrKTtgKSB3aXRoIGBzdGF0aWMgREVGSU5FX01VVEVYKGxvY2spO2AuIFRoYXQmIzM5O3MgY2xlYW5lciwgYW5kIHVzaW5nIGBERUZJTkVfTVVURVhgIGlzIGdlbmVyYWxseSB0aGUgcHJlZmVycmVkIGFwcHJvYWNoIGZvciBzdGF0aWNhbGx5LWRlZmluZWQgbXV0ZXhlcyBpbiB0aGUga2VybmVsLiBUaGlzIGFsc28gcmVtb3ZlcyB0aGUgY2FsbHMgdG8gZXhwbGljaXRseSBpbml0aWFsaXplIGFuZCBkZXN0cm95IHRoZSBtdXRleC4KCkNydWNpYWxseSwgdGhlIGBOVUxMQl9ERVZJQ0VfQVRUUmAgbWFjcm8gaXMgYmVpbmcgdXBkYXRlZCB0byBub3cgKmFjcXVpcmUqIHRoZSBgbG9ja2AgbXV0ZXggd2hlbiBpdCYjMzk7cyB1c2VkIHRvIHVwZGF0ZSBkZXZpY2UgYXR0cmlidXRlcy4gVGhpcyBpcyB0aGUgaGVhcnQgb2YgdGhlIGZpeC4gRnVydGhlcm1vcmUsIHRoZSBjYWxscyB0byBgbXV0ZXhfbG9jaygmYW1wO2xvY2spYCBhcmUgYmVpbmcgcmVtb3ZlZCBmcm9tIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCBhbmQgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYCBiZWNhdXNlIHRoZSBjYWxscyBhcmUgcmVkdW5kYW50OyBub3cgdGhlIG1hY3JvIHdpbGwgaG9sZCB0aGUgbG9jayBkdXJpbmcgdGhlaXIgZXhlY3V0aW9uLiBNYWtlcyBwZXJmZWN0IHNlbnNlLCBlbGltaW5hdGluZyB1bm5lY2Vzc2FyeSBsb2NraW5nIGFuZCBpbXByb3ZpbmcgZWZmaWNpZW5jeS4KClRoZSBhZGRpdGlvbiBvZiBgbG9ja2RlcF9hc3NlcnRfaGVsZCgmYW1wO2xvY2spO2AgaW4gYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgIGlzIGEgbmljZSB0b3VjaC4gSXQgc2VydmVzIGFzIGEgZ29vZCBhc3NlcnRpb24gdG8gZW5zdXJlIHRoYXQgdGhlIGxvY2sgaXMsIGluIGZhY3QsIGhlbGQgd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCwgaGVscGluZyB0byBjYXRjaCBhbnkgZnV0dXJlIHJlZ3Jlc3Npb25zLgoKVGhlIG92ZXJhbGwgZ29hbCBpcyBjbGVhcjogcHJldmVudCByYWNlIGNvbmRpdGlvbnMsIHBhcnRpY3VsYXJseSBhcm91bmQgY29uY3VycmVudCBtb2RpZmljYXRpb25zIHRvIGRldmljZSBhdHRyaWJ1dGVzLCBlc3BlY2lhbGx5IHdoaWxlIGBudWxsX2FkZF9kZXYoKWAgaXMgcnVubmluZy4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgYW5kIGNydWNpYWwga2VybmVsIGJ1ZyBzY2VuYXJpbywgc28gdGhpcyBpcyBhIGdvb2QgZml4LiBJIGRvbiYjMzk7dCBzZWUgYW55IHJpc2tzIGluIHRlcm1zIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGluZm9ybWF0aW9uIGxlYWthZ2UsIHdoaWNoIGlzIGdvb2QuCgpHaXZlbiB0aGF0IHRoaXMgcGF0Y2ggcHJpbWFyaWx5IGFkZHJlc3NlcyByYWNlIGNvbmRpdGlvbnMsIGl0JiMzOTtzIHRoZSBraW5kIG9mIGJ1ZyB0aGF0IEtDU0FOIG9yIGV2ZW4gc3RhbmRhcmQgdGVzdGluZyBhcmUgbGlrZWx5IHRvIGNhdGNoLiBLTVNBTiBpc24mIzM5O3QgdGhlIGFwcHJvcHJpYXRlIHRvb2wgZm9yIHRoaXMgY2xhc3Mgb2YgaXNzdWUsIHNvIEkmIzM5O20gY29tZm9ydGFibGUgc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAuIFRoaXMgbG9va3MgbGlrZSBhIHNvbGlkIGFuZCB0YXJnZXRlZCBsb2NraW5nIGZpeC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTMgMTc6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyIGJ5IHRha2luZyBhIGdsb2JhbCBtdXRleCB3aGVuIHVwZGF0aW5nIGRldmljZSBhdHRyaWJ1dGVzIHZpYSBjb25maWdmcy4gSXQgYWxzbyBjaGFuZ2VzIHRoZSBtdXRleCBpbml0aWFsaXphdGlvbiB0byB1c2UgREVGSU5FX01VVEVYLiBUaGVzZSBjaGFuZ2VzIGFkZHJlc3MgY29uY3VycmVuY3kgaXNzdWVzIGFuZCBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4gQW55IGxvY2tpbmcgaXNzdWVzIG9yIHJhY2UgY29uZGl0aW9ucyB3b3VsZCBiZSBjYXVnaHQgYnkgTE9DS0RFUCBvciBLQ1NBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIG51bGxfYmxrIGRyaXZlciBieSB0YWtpbmcgYSBnbG9iYWwgbXV0ZXggd2hlbiB1cGRhdGluZyBkZXZpY2UgYXR0cmlidXRlcyB2aWEgY29uZmlnZnMuIEl0IGFsc28gY2hhbmdlcyB0aGUgbXV0ZXggaW5pdGlhbGl6YXRpb24gdG8gdXNlIERFRklORV9NVVRFWC4gVGhlc2UgY2hhbmdlcyBhZGRyZXNzIGNvbmN1cnJlbmN5IGlzc3VlcyBhbmQgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uIEFueSBsb2NraW5nIGlzc3VlcyBvciByYWNlIGNvbmRpdGlvbnMgd291bGQgYmUgY2F1Z2h0IGJ5IExPQ0tERVAgb3IgS0NTQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE3OjE0OjUyLjM1ODM5MDE4NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxNDQwMjkyMTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfTlVMTF9CTEtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBudWxsX2JsayBkcml2ZXIgYnkgdGFraW5nIGEgZ2xvYmFsIG11dGV4IHdoZW4gdXBkYXRpbmcgZGV2aWNlIGF0dHJpYnV0ZXMgdmlhIGNvbmZpZ2ZzLiBJdCBhbHNvIGNoYW5nZXMgdGhlIG11dGV4IGluaXRpYWxpemF0aW9uIHRvIHVzZSBERUZJTkVfTVVURVguIFRoZXNlIGNoYW5nZXMgYWRkcmVzcyBjb25jdXJyZW5jeSBpc3N1ZXMgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgaW5mby1sZWFrcyB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBBbnkgbG9ja2luZyBpc3N1ZXMgb3IgcmFjZSBjb25kaXRpb25zIHdvdWxkIGJlIGNhdWdodCBieSBMT0NLREVQIG9yIEtDU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIG51bGxfYmxrIGRyaXZlcidzIGNvbmZpZ2ZzIGludGVyZmFjZSBieSBhZGRpbmcgbG9ja2luZyB0byBkZXZpY2UgYXR0cmlidXRlIG1vZGlmaWNhdGlvbnMuIFRoaXMgcHJldmVudHMgYXR0cmlidXRlcyBmcm9tIGJlaW5nIGNoYW5nZWQgY29uY3VycmVudGx5IHdpdGggZGV2aWNlIGFkZGl0aW9uL3JlbW92YWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE3OjE0OjUyLjM1ODM5NjcwNFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4Mjg3NzU2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDQ2ODRmZDgyYmY0MTJjNDI5NWQ0MDk4YjQ3ZDA1YTJhMTg5OWJjYWRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgMTMgMTc6MTQ6NTAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xcbmluZGV4IGY4YzBmZDU3ZTA0MWEuLjJlOGY5OTg3Mzk1NjggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xcbkBAIC02Niw3ICs2Niw3IEBAIHN0cnVjdCBudWxsYl9wYWdlIHtcXG4gI2RlZmluZSBOVUxMQl9QQUdFX0ZSRUUgKE1BUF9TWiAtIDIpXFxuIFxcbiBzdGF0aWMgTElTVF9IRUFEKG51bGxiX2xpc3QpO1xcbi1zdGF0aWMgc3RydWN0IG11dGV4IGxvY2s7XFxuK3N0YXRpYyBERUZJTkVfTVVURVgobG9jayk7XFxuIHN0YXRpYyBpbnQgbnVsbF9tYWpvcjtcXG4gc3RhdGljIERFRklORV9JREEobnVsbGJfaW5kZXhlcyk7XFxuIHN0YXRpYyBzdHJ1Y3QgYmxrX21xX3RhZ19zZXQgdGFnX3NldDtcXG5AQCAtMzQwLDcgKzM0MCwxNSBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3N0b3JlKGJvb2wgKnZhbCwgY29uc3QgY2hhciAqcGFnZSxcXG4gXFx0cmV0dXJuIGNvdW50O1xcbiB9XFxuIFxcbi0vKiBUaGUgZm9sbG93aW5nIG1hY3JvIHNob3VsZCBvbmx5IGJlIHVzZWQgd2l0aCBUWVBFID0ge3VpbnQsIHVsb25nLCBib29sfS4gKi9cXG4rLypcXG4rICogVGhlIGZvbGxvd2luZyBtYWNybyBzaG91bGQgb25seSBiZSB1c2VkIHdpdGggVFlQRSA9IHt1aW50LCB1bG9uZywgYm9vbH0uXFxuKyAqXFxuKyAqIFRoZSBkZXZpY2UgY29uZmlndXJhdGlvbiBpcyBtb2RpZmllZCB1bmRlciB0aGUgZ2xvYmFsIGxvY2sgdG8gc2VyaWFsaXplXFxuKyAqIGF0dHJpYnV0ZSBjaGFuZ2VzIGFnYWluc3QgbnVsbF9hZGRfZGV2KCkgYW5kIG51bGxfZGVsX2RldigpOiB3aXRob3V0IHRoaXMsXFxuKyAqIGFuIGF0dHJpYnV0ZSBjb3VsZCBiZSBjaGFuZ2VkIHdoaWxlIG51bGxfYWRkX2RldigpIGlzIHJ1bm5pbmcsIHRoYXQgaXMsXFxuKyAqIGJlZm9yZSBOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCBpcyBzZXQsIHdoaWNoIHdvdWxkIGxldCBudWxsX2FkZF9kZXYoKVxcbisgKiBvYnNlcnZlIGluY29uc2lzdGVudCB2YWx1ZXMgZm9yIHRoZSBkZXZpY2UgY29uZmlndXJhdGlvbi5cXG4rICovXFxuICNkZWZpbmUgTlVMTEJfREVWSUNFX0FUVFIoTkFNRSwgVFlQRSwgQVBQTFkpXFx0XFx0XFx0XFx0XFxcXFxcbiBzdGF0aWMgc3NpemVfdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxcdFxcXFxcXG5AQCAtMzYwLDEzICszNjgsMTYgQEAgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcXHRcXFxcXFxuIFxcdHJldCA9IG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3N0b3JlKFxcdTAwMjZuZXdfdmFsdWUsIHBhZ2UsIGNvdW50KTtcXFxcXFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0cmV0dXJuIHJldDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0aWYgKGFwcGx5X2ZuKVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0cmV0ID0gYXBwbHlfZm4oZGV2LCBuZXdfdmFsdWUpO1xcdFxcdFxcdFxcdFxcXFxcXG4gXFx0ZWxzZSBpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsIFxcdTAwMjZkZXYtXFx1MDAzZWZsYWdzKSkgXFx0XFxcXFxcbiBcXHRcXHRyZXQgPSAtRUJVU1k7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRpZiAocmV0IFxcdTAwM2U9IDApXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRkZXYtXFx1MDAzZU5BTUUgPSBuZXdfdmFsdWU7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmxvY2spO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ZGV2LVxcdTAwM2VOQU1FID0gbmV3X3ZhbHVlO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0cmV0dXJuIGNvdW50O1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gfVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gQ09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBOQU1FKTtcXG5AQCAtMzc5LDYgKzM5MCw4IEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuIFxcdHN0cnVjdCBibGtfbXFfdGFnX3NldCAqc2V0O1xcbiBcXHRpbnQgcmV0LCBucl9od19xdWV1ZXM7XFxuIFxcbitcXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZsb2NrKTtcXG4rXFxuIFxcdGlmICghZGV2LVxcdTAwM2VudWxsYilcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbkBAIC00MjEsMjUgKzQzNCwxMyBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxcbiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBzdWJtaXRfcXVldWVzKVxcbiB7XFxuLVxcdGludCByZXQ7XFxuLVxcbi1cXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXG4tXFx0cmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi1cXHUwMDNlcG9sbF9xdWV1ZXMpO1xcbi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmxvY2spO1xcbi1cXG4tXFx0cmV0dXJuIHJldDtcXG4rXFx0cmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtXFx1MDAzZXBvbGxfcXVldWVzKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBwb2xsX3F1ZXVlcylcXG4ge1xcbi1cXHRpbnQgcmV0O1xcbi1cXG4tXFx0bXV0ZXhfbG9jayhcXHUwMDI2bG9jayk7XFxuLVxcdHJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtXFx1MDAzZXN1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTtcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZsb2NrKTtcXG4tXFxuLVxcdHJldHVybiByZXQ7XFxuK1xcdHJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LVxcdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XFxuIH1cXG4gXFxuIE5VTExCX0RFVklDRV9BVFRSKHNpemUsIHVsb25nLCBOVUxMKTtcXG5AQCAtMjE2Niw4ICsyMTY3LDYgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbi1cXHRtdXRleF9pbml0KFxcdTAwMjZsb2NrKTtcXG4tXFxuIFxcdG51bGxfbWFqb3IgPSByZWdpc3Rlcl9ibGtkZXYoMCwgXFxcIm51bGxiXFxcIik7XFxuIFxcdGlmIChudWxsX21ham9yIFxcdTAwM2MgMCkge1xcbiBcXHRcXHRyZXQgPSBudWxsX21ham9yO1xcbkBAIC0yMjExLDggKzIyMTAsNiBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbnVsbF9leGl0KHZvaWQpXFxuIFxcbiBcXHRpZiAodGFnX3NldC5vcHMpXFxuIFxcdFxcdGJsa19tcV9mcmVlX3RhZ19zZXQoXFx1MDAyNnRhZ19zZXQpO1xcbi1cXG4tXFx0bXV0ZXhfZGVzdHJveShcXHUwMDI2bG9jayk7XFxuIH1cXG4gXFxuIG1vZHVsZV9pbml0KG51bGxfaW5pdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE3OjE0OjUzLjg0MjExNDkyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTE5MTYxNjMyNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OVUxMX0JMS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBudWxsX2JsayBkcml2ZXIncyBjb25maWdmcyBpbnRlcmZhY2UgYnkgYWRkaW5nIGxvY2tpbmcgdG8gZGV2aWNlIGF0dHJpYnV0ZSBtb2RpZmljYXRpb25zLiBUaGlzIHByZXZlbnRzIGF0dHJpYnV0ZXMgZnJvbSBiZWluZyBjaGFuZ2VkIGNvbmN1cnJlbnRseSB3aXRoIGRldmljZSBhZGRpdGlvbi9yZW1vdmFsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0Njg0ZmQ4MmJmNDEyYzQyOTVkNDA5OGI0N2QwNWEyYTE4OTliY2FkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMTc6MTQ6NTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5pbmRleCBmOGMwZmQ1N2UwNDFhLi4yZThmOTk4NzM5NTY4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbisrKyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5AQCAtNjYsNyArNjYsNyBAQCBzdHJ1Y3QgbnVsbGJfcGFnZSB7XG4gI2RlZmluZSBOVUxMQl9QQUdFX0ZSRUUgKE1BUF9TWiAtIDIpXG4gXG4gc3RhdGljIExJU1RfSEVBRChudWxsYl9saXN0KTtcbi1zdGF0aWMgc3RydWN0IG11dGV4IGxvY2s7XG4rc3RhdGljIERFRklORV9NVVRFWChsb2NrKTtcbiBzdGF0aWMgaW50IG51bGxfbWFqb3I7XG4gc3RhdGljIERFRklORV9JREEobnVsbGJfaW5kZXhlcyk7XG4gc3RhdGljIHN0cnVjdCBibGtfbXFfdGFnX3NldCB0YWdfc2V0O1xuQEAgLTM0MCw3ICszNDAsMTUgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsXG4gXHRyZXR1cm4gY291bnQ7XG4gfVxuIFxuLS8qIFRoZSBmb2xsb3dpbmcgbWFjcm8gc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoIFRZUEUgPSB7dWludCwgdWxvbmcsIGJvb2x9LiAqL1xuKy8qXG4rICogVGhlIGZvbGxvd2luZyBtYWNybyBzaG91bGQgb25seSBiZSB1c2VkIHdpdGggVFlQRSA9IHt1aW50LCB1bG9uZywgYm9vbH0uXG4rICpcbisgKiBUaGUgZGV2aWNlIGNvbmZpZ3VyYXRpb24gaXMgbW9kaWZpZWQgdW5kZXIgdGhlIGdsb2JhbCBsb2NrIHRvIHNlcmlhbGl6ZVxuKyAqIGF0dHJpYnV0ZSBjaGFuZ2VzIGFnYWluc3QgbnVsbF9hZGRfZGV2KCkgYW5kIG51bGxfZGVsX2RldigpOiB3aXRob3V0IHRoaXMsXG4rICogYW4gYXR0cmlidXRlIGNvdWxkIGJlIGNoYW5nZWQgd2hpbGUgbnVsbF9hZGRfZGV2KCkgaXMgcnVubmluZywgdGhhdCBpcyxcbisgKiBiZWZvcmUgTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQgaXMgc2V0LCB3aGljaCB3b3VsZCBsZXQgbnVsbF9hZGRfZGV2KClcbisgKiBvYnNlcnZlIGluY29uc2lzdGVudCB2YWx1ZXMgZm9yIHRoZSBkZXZpY2UgY29uZmlndXJhdGlvbi5cbisgKi9cbiAjZGVmaW5lIE5VTExCX0RFVklDRV9BVFRSKE5BTUUsIFRZUEUsIEFQUExZKVx0XHRcdFx0XFxcbiBzdGF0aWMgc3NpemVfdFx0XHRcdFx0XHRcdFx0XHRcXFxuIG51bGxiX2RldmljZV8jI05BTUUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcdFxcXG5AQCAtMzYwLDEzICszNjgsMTYgQEAgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcdFxcXG4gXHRyZXQgPSBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zdG9yZShcdTAwMjZuZXdfdmFsdWUsIHBhZ2UsIGNvdW50KTtcXFxuIFx0aWYgKHJldCBcdTAwM2MgMClcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdHJldHVybiByZXQ7XHRcdFx0XHRcdFx0XFxcbitcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XHRcdFx0XHRcdFx0XFxcbiBcdGlmIChhcHBseV9mbilcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdHJldCA9IGFwcGx5X2ZuKGRldiwgbmV3X3ZhbHVlKTtcdFx0XHRcdFxcXG4gXHRlbHNlIGlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSkgXHRcXFxuIFx0XHRyZXQgPSAtRUJVU1k7XHRcdFx0XHRcdFx0XFxcbitcdGlmIChyZXQgXHUwMDNlPSAwKVx0XHRcdFx0XHRcdFx0XFxcbitcdFx0ZGV2LVx1MDAzZU5BTUUgPSBuZXdfdmFsdWU7XHRcdFx0XHRcdFxcXG4rXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XHRcdFx0XHRcdFx0XFxcbiBcdGlmIChyZXQgXHUwMDNjIDApXHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRyZXR1cm4gcmV0O1x0XHRcdFx0XHRcdFxcXG4tXHRkZXYtXHUwMDNlTkFNRSA9IG5ld192YWx1ZTtcdFx0XHRcdFx0XHRcXFxuIFx0cmV0dXJuIGNvdW50O1x0XHRcdFx0XHRcdFx0XFxcbiB9XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIE5BTUUpO1xuQEAgLTM3OSw2ICszOTAsOCBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0c3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQ7XG4gXHRpbnQgcmV0LCBucl9od19xdWV1ZXM7XG4gXG4rXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNmxvY2spO1xuK1xuIFx0aWYgKCFkZXYtXHUwMDNlbnVsbGIpXG4gXHRcdHJldHVybiAwO1xuIFxuQEAgLTQyMSwyNSArNDM0LDEzIEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4gc3RhdGljIGludCBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgICAgdW5zaWduZWQgaW50IHN1Ym1pdF9xdWV1ZXMpXG4ge1xuLVx0aW50IHJldDtcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4tXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LVx1MDAzZXBvbGxfcXVldWVzKTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbi1cbi1cdHJldHVybiByZXQ7XG4rXHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi1cdTAwM2Vwb2xsX3F1ZXVlcyk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICAgdW5zaWduZWQgaW50IHBvbGxfcXVldWVzKVxuIHtcbi1cdGludCByZXQ7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuLVx0cmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi1cdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4tXG4tXHRyZXR1cm4gcmV0O1xuK1x0cmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpO1xuIH1cbiBcbiBOVUxMQl9ERVZJQ0VfQVRUUihzaXplLCB1bG9uZywgTlVMTCk7XG5AQCAtMjE2Niw4ICsyMTY3LDYgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0bXV0ZXhfaW5pdChcdTAwMjZsb2NrKTtcbi1cbiBcdG51bGxfbWFqb3IgPSByZWdpc3Rlcl9ibGtkZXYoMCwgXCJudWxsYlwiKTtcbiBcdGlmIChudWxsX21ham9yIFx1MDAzYyAwKSB7XG4gXHRcdHJldCA9IG51bGxfbWFqb3I7XG5AQCAtMjIxMSw4ICsyMjEwLDYgQEAgc3RhdGljIHZvaWQgX19leGl0IG51bGxfZXhpdCh2b2lkKVxuIFxuIFx0aWYgKHRhZ19zZXQub3BzKVxuIFx0XHRibGtfbXFfZnJlZV90YWdfc2V0KFx1MDAyNnRhZ19zZXQpO1xuLVxuLVx0bXV0ZXhfZGVzdHJveShcdTAwMjZsb2NrKTtcbiB9XG4gXG4gbW9kdWxlX2luaXQobnVsbF9pbml0KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE3OjE0OjUzLjg0MjExNjIyOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwODE5MDU4NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY2AuIEl0J3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGNoYW5nZSwgYnV0IGltcG9ydGFudCBmb3IgY29ycmVjdG5lc3MsIEknZCBzYXkuIFRoZXkndmUgcmVwbGFjZWQgdGhlIG1hbnVhbCBtdXRleCBpbml0aWFsaXphdGlvbiAoYG11dGV4X2luaXRgLCBgbXV0ZXhfZGVzdHJveWApIGFuZCBsb2NraW5nIHdpdGggdGhlIGBERUZJTkVfTVVURVhgIG1hY3JvIGFuZCB0aGUgbW9yZSBjb25jaXNlIGxvY2tpbmcgd2l0aGluIHRoZSBgTlVMTEJfREVWSUNFX0FUVFJgIG1hY3JvLiBUaGV5J3ZlIGFsc28gY2xlYW5lZCB1cCBzb21lIGxvY2sgY2FsbHMgaW4gdGhlIGBudWxsYl9hcHBseV8qX3F1ZXVlc2AgZnVuY3Rpb25zLiBQbHVzLCB0aGF0IGBsb2NrZGVwX2Fzc2VydF9oZWxkYCBjYWxsIGluIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCBpcyBhIGdvb2QgcHJhY3RpY2UgdG8gZW5zdXJlIHRoZSBsb2NrIGlzIGhlbGQgd2hlcmUgaXQgc2hvdWxkIGJlLlxuXG5UaGUgbmV0IGVmZmVjdCBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEVuY2Fwc3VsYXRpbmcgdGhlIGxvY2tpbmcgd2l0aGluIGBOVUxMQl9ERVZJQ0VfQVRUUmAgbWVhbnMgdGhhdCBhbnkgYXR0cmlidXRlIGRlZmluZWQgdXNpbmcgdGhhdCBtYWNybyB3aWxsIG5vdyBiZSBwcm90ZWN0ZWQgYnkgdGhpcyBgbG9ja2AgbXV0ZXguIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIG11c3QgYmUgZml4aW5nIGEgcmFjZSBjb25kaXRpb24sIGFuZCBpdCBkb2VzISBBcHBhcmVudGx5IHRoZXJlJ3MgYSBwcm9ibGVtIHdoZXJlIGFuIGF0dHJpYnV0ZSBjb3VsZCBiZSBjaGFuZ2VkIGNvbmN1cnJlbnRseSB3aXRoIGBudWxsX2FkZF9kZXYoKWAgcnVubmluZy4gVGhhdCdzIGEgY2xhc3NpYyBpc3N1ZSBpbiBibG9jayBkcml2ZXJzLCBhbmQgaXQncyBnb29kIHRoZXkncmUgYWRkcmVzc2luZyBpdC5cblxuTm93LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGFmZmVjdHMuIGBOVUxMQl9ERVZJQ0VfQVRUUmAgZGVmaW5lcyBjb25maWdmcyBhdHRyaWJ1dGVzIGZvciB0aGUgbnVsbCBibG9jayBkZXZpY2VzLiBUaGF0J3MgcmlnaHQsIHRob3NlIGFyZSB0aGUgYXR0cmlidXRlcyB0aGF0IGxldCB5b3UgY29uZmlndXJlIHRoZSBkZXZpY2UgdGhyb3VnaCB0aGUgY29uZmlnZnMgaW50ZXJmYWNlLiBBbmQgbnVsbF9ibGsuLi4geWVhaCwgdGhhdCdzIGp1c3QgYSBzb2Z0d2FyZSBibG9jayBkZXZpY2UuIEl0J3Mgb2Z0ZW4gdXNlZCBmb3IgdGVzdGluZywgYnV0IEkga25vdyBpdCdzICpkZWZpbml0ZWx5KiB1c2VkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gU28sIHRoaXMgY2hhbmdlIGNvdWxkIHBvdGVudGlhbGx5IGltcGFjdCBhbnlvbmUgdXNpbmcgbnVsbF9ibGsgaW4gdGhhdCBjb250ZXh0LlxuXG5Pa2F5LCBub3cgbGV0J3MgZ28gZmluZCB0aGUgc3BlY2lmaWMgY29uZmlnIG9wdGlvbnMgZm9yIG51bGxfYmxrIHRvIHNlZSBpZiBpdCdzIGVuYWJsZWQgYnkgZGVmYXVsdC4gR290dGEgdW5kZXJzdGFuZCB0aGUgaW1wYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDc2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTc6MTU6MDAuOTI0MDI2MjA4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NjgxOTMwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9OVUxMX0JMS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE3OjE1OjAwLjk3MTczMjcxOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NDUzNTA3NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTnVsbCBCbG9jayBEZXZpY2UgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgbnVsbCBibG9jayBkZXZpY2UgKGBudWxsX2Jsa2ApIGxpdmVzLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRvIGxvb2sgaW4gdGhlIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWdgIGZpbGUuIFRoYXQncyB1c3VhbGx5IHRoZSBzdGFuZGFyZCBsb2NhdGlvbiBmb3IgZHJpdmVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSG93ZXZlciwgSSBtaWdodCBqdXN0IGJlIG92ZXJ0aGlua2luZyB0aGlzLiBUbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIGEgcXVpY2sgYGdyZXBgIGZvciB0aGUgYEJMS19ERVZfTlVMTF9CTEtgIHN5bWJvbCBhY3Jvc3MgdGhlIGtlcm5lbCBzb3VyY2Ugd291bGQgcXVpY2tseSBjb25maXJtIGlmIGl0J3MgdGhlcmUgYW5kIHBvc3NpYmx5IHJldmVhbCBkZXBlbmRlbmNpZXMgb3Igb3RoZXIgcmVsZXZhbnQgS2NvbmZpZyBlbnRyaWVzLCBqdXN0IGluIGNhc2Ugc29tZXRoaW5nJ3MgYmVlbiBtb3ZlZCBhcm91bmQgb3IgZGlmZmVyZW50bHkgbmFtZWQuIEdvdHRhIGJlIGVmZmljaWVudCBoZXJlLiBJJ2xsIHN0YXJ0IHdpdGggdGhlIG9idmlvdXMgbG9jYXRpb24gYW5kIHRoZW4gZXhwYW5kIG15IHNlYXJjaCBpZiBuZWVkZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MTcsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNzoxNTowNC40MTcwODU5MTNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk2MTM3MTk0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQkxLX0RFVl9OVUxMX0JMS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTUtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjY6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiTnVsbCB0ZXN0IGJsb2NrIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy05LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzoxMDpjb25maWcgQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctMTEtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmYXVsdCBpbmplY3Rpb24gZm9yIE51bGwgdGVzdCBibG9jayBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE3OjE1OjA2LjM3ODQ2MzQ0M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NjEwNTY0MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgTnVsbCBCbG9jayBEZXZpY2UgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBCTEtfREVWX05VTExfQkxLYC4gVGhhdCdzIHRoZSBjb25maWcgaW4gcGxheSBoZXJlLiBNeSBwcmltYXJ5IGdvYWwgaXMgdG8gaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgZm9yIGZ1enppbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbnVsbCBibG9jayBkZXZpY2UgY29uZmlndXJhdGlvbiBhY3R1YWxseSBvcGVyYXRlcy5cblxuVGhlIG1hY3JvIGBOVUxMQl9ERVZJQ0VfQVRUUmAgaXMgdGhlIGtleS4gSSByZWNvZ25pemUgaXQgZ2VuZXJhdGVzIGZ1bmN0aW9ucy4gVGhleSBoYXZlIGEgcHJlZGljdGFibGUgcGF0dGVybjogYG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZWAuIFRoaXMgc2VlbXMgbGlrZSB0aGUgZ2F0ZXdheSB0byBtYW5pcHVsYXRpbmcgYW5kIGludGVyYWN0aW5nIHdpdGggdGhlIGRldmljZS4gQW5kLCBpbXBvcnRhbnRseSwgdGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgdGhyb3VnaCBjb25maWdmcy4gVGhpcyBpcyB0aGUgZW50cnlwb2ludCB0byBiZSBjb25jZXJuZWQgd2l0aC5cblxuVGhlcmVmb3JlLCBteSBuZXh0IHN0ZXAgaXMgY2xlYXIuIEkgbmVlZCB0byBtZXRpY3Vsb3VzbHkgZXhhbWluZSBob3cgYE5VTExCX0RFVklDRV9BVFRSYCBpcyB1c2VkLiBJJ2xsIHNlYXJjaCBmb3IgZXZlcnkgaW5zdGFuY2Ugb2YgdGhpcyBtYWNybyBhbmQgZG9jdW1lbnQgYWxsIHRoZSBmdW5jdGlvbnMgaXQgZGVmaW5lcy4gVGhlIG9iamVjdGl2ZSBpcyB0byBtYXAgdGhlIGVudHJ5IHBvaW50cy4gVW5kZXJzdGFuZGluZyB0aGVzZSBmdW5jdGlvbnMgd2lsbCBhbGxvdyBtZSB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24gdGhlIHBhcnRzIG9mIHRoZSBjb2RlIG1vc3QgbGlrZWx5IHRvIHJldmVhbCB2dWxuZXJhYmlsaXRpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxOTUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNzoxNToxMS4wMzk1MjI4MjdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyNjcwNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTlVMTEJfREVWSUNFX0FUVFJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MzI5PXN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9ib29sX2F0dHJfc3RvcmUoYm9vbCAqdmFsLCBjb25zdCBjaGFyICpwYWdlLFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzUxLSAqL1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjM1MjojZGVmaW5lIE5VTExCX0RFVklDRV9BVFRSKE5BTUUsIFRZUEUsIEFQUExZKVxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zNTMtc3RhdGljIHNzaXplX3RcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00NDA9c3RhdGljIGludCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00NDUtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQ2Ok5VTExCX0RFVklDRV9BVFRSKHNpemUsIHVsb25nLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NDc6TlVMTEJfREVWSUNFX0FUVFIoY29tcGxldGlvbl9uc2VjLCB1bG9uZywgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQ4Ok5VTExCX0RFVklDRV9BVFRSKHN1Ym1pdF9xdWV1ZXMsIHVpbnQsIG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0OTpOVUxMQl9ERVZJQ0VfQVRUUihwb2xsX3F1ZXVlcywgdWludCwgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1MDpOVUxMQl9ERVZJQ0VfQVRUUihob21lX25vZGUsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1MTpOVUxMQl9ERVZJQ0VfQVRUUihxdWV1ZV9tb2RlLCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTI6TlVMTEJfREVWSUNFX0FUVFIoYmxvY2tzaXplLCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTM6TlVMTEJfREVWSUNFX0FUVFIobWF4X3NlY3RvcnMsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1NDpOVUxMQl9ERVZJQ0VfQVRUUihpcnFtb2RlLCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTU6TlVMTEJfREVWSUNFX0FUVFIoaHdfcXVldWVfZGVwdGgsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1NjpOVUxMQl9ERVZJQ0VfQVRUUihpbmRleCwgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDU3Ok5VTExCX0RFVklDRV9BVFRSKGJsb2NraW5nLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTg6TlVMTEJfREVWSUNFX0FUVFIodXNlX3Blcl9ub2RlX2hjdHgsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1OTpOVUxMQl9ERVZJQ0VfQVRUUihtZW1vcnlfYmFja2VkLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjA6TlVMTEJfREVWSUNFX0FUVFIoZGlzY2FyZCwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDYxOk5VTExCX0RFVklDRV9BVFRSKG1icHMsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2MjpOVUxMQl9ERVZJQ0VfQVRUUihjYWNoZV9zaXplLCB1bG9uZywgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDYzOk5VTExCX0RFVklDRV9BVFRSKHpvbmVkLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjQ6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9zaXplLCB1bG9uZywgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY1Ok5VTExCX0RFVklDRV9BVFRSKHpvbmVfY2FwYWNpdHksIHVsb25nLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjY6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9ucl9jb252LCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Njc6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9tYXhfb3BlbiwgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY4Ok5VTExCX0RFVklDRV9BVFRSKHpvbmVfbWF4X2FjdGl2ZSwgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY5Ok5VTExCX0RFVklDRV9BVFRSKHpvbmVfYXBwZW5kX21heF9zZWN0b3JzLCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzA6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9mdWxsLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzE6TlVMTEJfREVWSUNFX0FUVFIodmlydF9ib3VuZGFyeSwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDcyOk5VTExCX0RFVklDRV9BVFRSKG5vX3NjaGVkLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzM6TlVMTEJfREVWSUNFX0FUVFIoc2hhcmVkX3RhZ3MsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3NDpOVUxMQl9ERVZJQ0VfQVRUUihzaGFyZWRfdGFnX2JpdG1hcCwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc1Ok5VTExCX0RFVklDRV9BVFRSKGZ1YSwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc2Ok5VTExCX0RFVklDRV9BVFRSKHJvdGF0aW9uYWwsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3NzpOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3Nfb25jZSwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc4Ok5VTExCX0RFVklDRV9BVFRSKGJhZGJsb2Nrc19wYXJ0aWFsX2lvLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00NzktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE3OjE1OjExLjA4NDc5NDI0NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1MzkxMTA1NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgbnVsbCBibG9jayBkZXZpY2UgZHJpdmVyLiBUaGUgbWFjcm8sIHRoZSBgbnVsbGJfZGV2aWNlX3NpemVfc3RvcmVgLCBhbmQgYG51bGxiX2RldmljZV9zdWJtaXRfcXVldWVzX3N0b3JlYCBmdW5jdGlvbnMgaXQgZ2VuZXJhdGVzIGFyZSBzdGF0aWMuIFRoYXQncyBhIHBhdHRlcm4sIGlzbid0IGl0PyBBbmQgdGhlbiBJIHNlZSBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AgYW5kIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AsIGFsc28gc3RhdGljLiBFdmVuIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCBpcyBzdGF0aWMuIEhtbSwgaXMgYW55dGhpbmcgKm5vdCogc3RhdGljIGJlaW5nIG1vZGlmaWVkIGhlcmU/XG5cbkxldCBtZSByZXZpZXcsIHRoZSBwYXRjaCBkb2VzIHRvdWNoIGBudWxsX2luaXRgIGFuZCBgbnVsbF9leGl0YCwgYnV0IHRob3NlIGxvb2sgbGlrZSBzdGFuZGFyZCBpbml0aWFsaXphdGlvbiBhbmQgY2xlYW51cCByb3V0aW5lcywgYW5kIHRoZSBjaGFuZ2VzIGFyZSBzaW1wbGUgKG11dGV4IGluaXQvZGVzdHJveSByZW1vdmVkLCBubyBiaWcgZGVhbCkuIEFuZCBpdCB0b3VjaGVzIHRoZSBtYWNybyBgTlVMTEJfREVWSUNFX0FUVFJgLCB3aGljaCAqZ2VuZXJhdGVzKiBzdGF0aWMgZnVuY3Rpb25zLiBUaGUgZm9jdXMgcmVhbGx5IHNlZW1zIHRvIGJlIG9uIHRob3NlIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zOiBgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc2AsIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCwgYW5kIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AuXG5cblJpZ2h0LiBMZXQncyBkaWcgZGVlcGVyIGludG8gdGhlIGFjdHVhbCBjb2RlIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY2AgdGhhdCBhcmUgc29tZWhvdyByZWxhdGVkIHRvIHRoZXNlIGZ1bmN0aW9ucyBhbmQgaGF2ZSBiZWVuIG1vZGlmaWVkIGluZGlyZWN0bHksIG9yIHdob3NlIGJlaGF2aW91ciBtaWdodCBiZSBpbXBhY3RlZCBieSB0aGUgY2hhbmdlcyBpbiB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zLiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGZlZWwgZm9yIHRoZSBiaWdnZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTgxOSwiT3V0cHV0VG9rZW5zIjo3NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNzoxNToxNi42MjM5MDc0NTFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NDU5ODcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4oW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcXFxzKykrXFxcXCo/W2EtekEtWl9dW2EtekEtWjAtOV9dKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIyLSNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMzpzdGF0aWMgREVDTEFSRV9GQVVMVF9BVFRSKG51bGxfdGltZW91dF9hdHRyKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyNDpzdGF0aWMgREVDTEFSRV9GQVVMVF9BVFRSKG51bGxfcmVxdWV1ZV9hdHRyKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyNTpzdGF0aWMgREVDTEFSRV9GQVVMVF9BVFRSKG51bGxfaW5pdF9oY3R4X2F0dHIpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTI2LSNlbmRpZlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTI3LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjI4OnN0YXRpYyBpbmxpbmUgdTY0IG1iX3Blcl90aWNrKGludCBtYnBzKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTI5LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTYxPXN0cnVjdCBudWxsYl9wYWdlIHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTY3LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjY4OnN0YXRpYyBMSVNUX0hFQUQobnVsbGJfbGlzdCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Njk6c3RhdGljIERFRklORV9NVVRFWChsb2NrKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03MC1zdGF0aWMgaW50IG51bGxfbWFqb3I7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NzE6c3RhdGljIERFRklORV9JREEobnVsbGJfaW5kZXhlcyk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzItc3RhdGljIHN0cnVjdCBibGtfbXFfdGFnX3NldCB0YWdfc2V0O1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTMwPXN0YXRpYyBpbnQgZ19xdWV1ZV9tb2RlID0gTlVMTF9RX01RO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEzMS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxMzI6c3RhdGljIGludCBudWxsX3BhcmFtX3N0b3JlX3ZhbChjb25zdCBjaGFyICpzdHIsIGludCAqdmFsLCBpbnQgbWluLCBpbnQgbWF4KVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEzMy17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNDYtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTQ3OnN0YXRpYyBpbnQgbnVsbF9zZXRfcXVldWVfbW9kZShjb25zdCBjaGFyICpzdHIsIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW0gKmtwKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE0OC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xODg9c3RhdGljIGludCBnX2lycW1vZGUgPSBOVUxMX0lSUV9TT0ZUSVJRO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE4OS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxOTA6c3RhdGljIGludCBudWxsX3NldF9pcnFtb2RlKGNvbnN0IGNoYXIgKnN0ciwgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbSAqa3ApXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTkxLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTI3MT1NT0RVTEVfUEFSTV9ERVNDKHJvdGF0aW9uYWwsIFxcXCJTZXQgdGhlIHJvdGF0aW9uYWwgZmVhdHVyZSBmb3IgdGhlIGRldmljZS4gRGVmYXVsdDogZmFsc2VcXFwiKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yNzItXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjczOnN0YXRpYyBzdHJ1Y3QgbnVsbGJfZGV2aWNlICpudWxsX2FsbG9jX2Rldih2b2lkKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyNzQ6c3RhdGljIHZvaWQgbnVsbF9mcmVlX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjI3NTpzdGF0aWMgdm9pZCBudWxsX2RlbF9kZXYoc3RydWN0IG51bGxiICpudWxsYik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mjc2OnN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mjc3OnN0YXRpYyBzdHJ1Y3QgbnVsbGIgKm51bGxfZmluZF9kZXZfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyNzg6c3RhdGljIHZvaWQgbnVsbF9mcmVlX2RldmljZV9zdG9yYWdlKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiwgYm9vbCBpc19jYWNoZSk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjc5LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjI4MDpzdGF0aWMgaW5saW5lIHN0cnVjdCBudWxsYl9kZXZpY2UgKnRvX251bGxiX2RldmljZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0pXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjgxLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTI4NC1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyODU6c3RhdGljIGlubGluZSBzc2l6ZV90IG51bGxiX2RldmljZV91aW50X2F0dHJfc2hvdyh1bnNpZ25lZCBpbnQgdmFsLCBjaGFyICpwYWdlKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTI4Ni17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yODktXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjkwOnN0YXRpYyBpbmxpbmUgc3NpemVfdCBudWxsYl9kZXZpY2VfdWxvbmdfYXR0cl9zaG93KHVuc2lnbmVkIGxvbmcgdmFsLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTI5MS1cXHRjaGFyICpwYWdlKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjk1LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjI5NjpzdGF0aWMgaW5saW5lIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zaG93KGJvb2wgdmFsLCBjaGFyICpwYWdlKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTI5Ny17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zMDAtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MzAxOnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV91aW50X2F0dHJfc3RvcmUodW5zaWduZWQgaW50ICp2YWwsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzAyLVxcdGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTMxNC1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozMTU6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Vsb25nX2F0dHJfc3RvcmUodW5zaWduZWQgbG9uZyAqdmFsLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTMxNi1cXHRjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zMjgtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MzI5OnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9ib29sX2F0dHJfc3RvcmUoYm9vbCAqdmFsLCBjb25zdCBjaGFyICpwYWdlLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTMzMC1cXHRzaXplX3QgY291bnQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0zODM9Q09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBOQU1FKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zODQtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mzg1OnN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzg2LVxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IHN1Ym1pdF9xdWV1ZXMsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00MzMtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDM0OnN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDM1LVxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IHN1Ym1pdF9xdWV1ZXMpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00MzktXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQwOnN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ0MS1cXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBpbnQgcG9sbF9xdWV1ZXMpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00Nzg9TlVMTEJfREVWSUNFX0FUVFIoYmFkYmxvY2tzX3BhcnRpYWxfaW8sIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ3OS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0ODA6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ4MS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00ODQtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDg1OnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDg2LVxcdFxcdFxcdFxcdCAgICAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGNvdW50KVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NTI0PUNPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgcG93ZXIpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTUyNS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1MjY6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2JhZGJsb2Nrc19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01Mjcte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTMyLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjUzMzpzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfYmFkYmxvY2tzX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MzQtXFx0XFx0XFx0XFx0ICAgICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz01Nzc9Q09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBiYWRibG9ja3MpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTU3OC1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1Nzk6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTU4MC1cXHRcXHRcXHRcXHRcXHRcXHRjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz01ODY9Q09ORklHRlNfQVRUUl9XTyhudWxsYl9kZXZpY2VfLCB6b25lX3JlYWRvbmx5KTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01ODctXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NTg4OnN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV96b25lX29mZmxpbmVfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTU4OS1cXHRcXHRcXHRcXHRcXHQgICAgICAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGNvdW50KVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NTk3PXN0YXRpYyBzdHJ1Y3QgY29uZmlnZnNfYXR0cmlidXRlICpudWxsYl9kZXZpY2VfYXR0cnNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTYzNy1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo2Mzg6c3RhdGljIHZvaWQgbnVsbGJfZGV2aWNlX3JlbGVhc2Uoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTYzOS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz02NTA9c3RhdGljIGNvbnN0IHN0cnVjdCBjb25maWdfaXRlbV90eXBlIG51bGxiX2RldmljZV90eXBlID0ge1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNjU3LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjY1ODpzdGF0aWMgdm9pZCBudWxsYl9hZGRfZmF1bHRfY29uZmlnKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy02NTkte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNjY4LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjY2OTpzdGF0aWMgdm9pZCBudWxsYl9kZWxfZmF1bHRfY29uZmlnKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy02NzAte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNjc3LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjY3ODpzdGF0aWMgdm9pZCBudWxsYl9hZGRfZmF1bHRfY29uZmlnKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy02Nzkte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNjgxLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjY4MjpzdGF0aWMgdm9pZCBudWxsYl9kZWxfZmF1bHRfY29uZmlnKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy02ODMte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9Njg3PXN0YXRpYyBzdHJ1Y3RcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo2ODg6Y29uZmlnX2dyb3VwICpudWxsYl9ncm91cF9tYWtlX2dyb3VwKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBjb25zdCBjaGFyICpuYW1lKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTY4OS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz03MDY9bnVsbGJfZ3JvdXBfZHJvcF9pdGVtKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLCBzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0pXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03MTktXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NzIwOnN0YXRpYyBzc2l6ZV90IG1lbWJfZ3JvdXBfZmVhdHVyZXNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNoYXIgKnBhZ2UpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzIxLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTc2ND1zdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX3N1YnN5c3RlbSBudWxsYl9zdWJzeXMgPSB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy03NzItXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NzczOnN0YXRpYyBpbmxpbmUgaW50IG51bGxfY2FjaGVfYWN0aXZlKHN0cnVjdCBudWxsYiAqbnVsbGIpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzc0LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTc3Ny1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo3Nzg6c3RhdGljIHN0cnVjdCBudWxsYl9kZXZpY2UgKm51bGxfYWxsb2NfZGV2KHZvaWQpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzc5LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTgzNC1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo4MzU6c3RhdGljIHZvaWQgbnVsbF9mcmVlX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtODM2LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTg0NC1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo4NDU6c3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IG51bGxfY21kX3RpbWVyX2V4cGlyZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTg0Ni17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy04NTItXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6ODUzOnN0YXRpYyB2b2lkIG51bGxfY21kX2VuZF90aW1lcihzdHJ1Y3QgbnVsbGJfY21kICpjbWQpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtODU0LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTg1OS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo4NjA6c3RhdGljIHZvaWQgbnVsbF9jb21wbGV0ZV9ycShzdHJ1Y3QgcmVxdWVzdCAqcnEpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtODYxLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTg2Ni1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo4Njc6c3RhdGljIHN0cnVjdCBudWxsYl9wYWdlICpudWxsX2FsbG9jX3BhZ2Uodm9pZClcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy04Njgte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtODg0LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjg4NTpzdGF0aWMgdm9pZCBudWxsX2ZyZWVfcGFnZShzdHJ1Y3QgbnVsbGJfcGFnZSAqdF9wYWdlKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTg4Ni17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy04OTMtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6ODk0OnN0YXRpYyBib29sIG51bGxfcGFnZV9lbXB0eShzdHJ1Y3QgbnVsbGJfcGFnZSAqcGFnZSlcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy04OTUte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTAwLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjkwMTpzdGF0aWMgdm9pZCBudWxsX2ZyZWVfc2VjdG9yKHN0cnVjdCBudWxsYiAqbnVsbGIsIHNlY3Rvcl90IHNlY3RvcixcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy05MDItXFx0Ym9vbCBpc19jYWNoZSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTkyNi1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo5Mjc6c3RhdGljIHN0cnVjdCBudWxsYl9wYWdlICpudWxsX3JhZGl4X3RyZWVfaW5zZXJ0KHN0cnVjdCBudWxsYiAqbnVsbGIsIHU2NCBpZHgsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTI4LVxcdHN0cnVjdCBudWxsYl9wYWdlICp0X3BhZ2UsIGJvb2wgaXNfY2FjaGUpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy05NDMtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6OTQ0OnN0YXRpYyB2b2lkIG51bGxfZnJlZV9kZXZpY2Vfc3RvcmFnZShzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsIGJvb2wgaXNfY2FjaGUpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTQ1LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTk3Mi1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo5NzM6c3RhdGljIHN0cnVjdCBudWxsYl9wYWdlICpfX251bGxfbG9va3VwX3BhZ2Uoc3RydWN0IG51bGxiICpudWxsYixcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy05NzQtXFx0c2VjdG9yX3Qgc2VjdG9yLCBib29sIGZvcl93cml0ZSwgYm9vbCBpc19jYWNoZSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTk5My1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo5OTQ6c3RhdGljIHN0cnVjdCBudWxsYl9wYWdlICpudWxsX2xvb2t1cF9wYWdlKHN0cnVjdCBudWxsYiAqbnVsbGIsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtOTk1LVxcdHNlY3Rvcl90IHNlY3RvciwgYm9vbCBmb3Jfd3JpdGUsIGJvb2wgaWdub3JlX2NhY2hlKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTAwNS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxMDA2OnN0YXRpYyBzdHJ1Y3QgbnVsbGJfcGFnZSAqbnVsbF9pbnNlcnRfcGFnZShzdHJ1Y3QgbnVsbGIgKm51bGxiLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEwMDctXFx0XFx0XFx0XFx0XFx0ICAgc2VjdG9yX3Qgc2VjdG9yLCBib29sIGlnbm9yZV9jYWNoZSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEwNDAtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTA0MTpzdGF0aWMgaW50IG51bGxfZmx1c2hfY2FjaGVfcGFnZShzdHJ1Y3QgbnVsbGIgKm51bGxiLCBzdHJ1Y3QgbnVsbGJfcGFnZSAqY19wYWdlKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEwNDIte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTA4OS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxMDkwOnN0YXRpYyBpbnQgbnVsbF9tYWtlX2NhY2hlX3NwYWNlKHN0cnVjdCBudWxsYiAqbnVsbGIsIHVuc2lnbmVkIGxvbmcgbilcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMDkxLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTExNDItXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTE0MzpzdGF0aWMgYmxrX3N0YXR1c190IGNvcHlfdG9fbnVsbGIoc3RydWN0IG51bGxiICpudWxsYiwgdm9pZCAqc291cmNlLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTExNDQtXFx0XFx0XFx0XFx0ICBsb2ZmX3QgcG9zLCBzaXplX3QgbiwgYm9vbCBpc19mdWEpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMTc2LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjExNzc6c3RhdGljIHZvaWQgY29weV9mcm9tX251bGxiKHN0cnVjdCBudWxsYiAqbnVsbGIsIHZvaWQgKmRlc3QsIGxvZmZfdCBwb3MsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTE3OC1cXHRcXHRcXHQgICAgc2l6ZV90IG4pXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMjAxLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjEyMDI6YmxrX3N0YXR1c190IG51bGxfaGFuZGxlX2Rpc2NhcmQoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEyMDMtXFx0XFx0XFx0XFx0IHNlY3Rvcl90IHNlY3Rvciwgc2VjdG9yX3QgbnJfc2VjdG9ycylcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEyMjItXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTIyMzpzdGF0aWMgYmxrX3N0YXR1c190IG51bGxfaGFuZGxlX2ZsdXNoKHN0cnVjdCBudWxsYiAqbnVsbGIpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTIyNC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMjQyLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjEyNDM6c3RhdGljIGJsa19zdGF0dXNfdCBudWxsX3RyYW5zZmVyKHN0cnVjdCBudWxsYiAqbnVsbGIsIHN0cnVjdCBwYWdlICpwYWdlLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEyNDQtXFx0dW5zaWduZWQgaW50IGxlbiwgdW5zaWduZWQgaW50IG9mZiwgYm9vbCBpc193cml0ZSwgbG9mZl90IHBvcyxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEyODItICovXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTI4MzpzdGF0aWMgYmxrX3N0YXR1c190IG51bGxfaGFuZGxlX2RhdGFfdHJhbnNmZXIoc3RydWN0IG51bGxiX2NtZCAqY21kLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEyODQtXFx0XFx0XFx0XFx0XFx0ICAgICAgc2VjdG9yX3QgbnJfc2VjdG9ycylcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEzMTUtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTMxNjpzdGF0aWMgaW5saW5lIGJsa19zdGF0dXNfdCBudWxsX2hhbmRsZV90aHJvdHRsZWQoc3RydWN0IG51bGxiX2NtZCAqY21kKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEzMTcte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTM0Ni0gKi9cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxMzQ3OmJsa19zdGF0dXNfdCBudWxsX2hhbmRsZV9iYWRibG9ja3Moc3RydWN0IG51bGxiX2NtZCAqY21kLCBzZWN0b3JfdCBzZWN0b3IsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTM0OC1cXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBpbnQgKm5yX3NlY3RvcnMpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMzcyLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjEzNzM6YmxrX3N0YXR1c190IG51bGxfaGFuZGxlX21lbW9yeV9iYWNrZWQoc3RydWN0IG51bGxiX2NtZCAqY21kLCBlbnVtIHJlcV9vcCBvcCxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMzc0LVxcdFxcdFxcdFxcdCAgICAgICBzZWN0b3JfdCBzZWN0b3IsIHNlY3Rvcl90IG5yX3NlY3RvcnMpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xMzgzLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjEzODQ6c3RhdGljIHZvaWQgbnVsbGJfemVyb19yZWFkX2NtZF9idWZmZXIoc3RydWN0IG51bGxiX2NtZCAqY21kKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEzODUte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTM5NS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxMzk2OnN0YXRpYyBpbmxpbmUgdm9pZCBudWxsYl9jb21wbGV0ZV9jbWQoc3RydWN0IG51bGxiX2NtZCAqY21kKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEzOTcte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTQyMy1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNDI0OmJsa19zdGF0dXNfdCBudWxsX3Byb2Nlc3NfY21kKHN0cnVjdCBudWxsYl9jbWQgKmNtZCwgZW51bSByZXFfb3Agb3AsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTQyNS1cXHRcXHRcXHQgICAgICBzZWN0b3JfdCBzZWN0b3IsIHVuc2lnbmVkIGludCBucl9zZWN0b3JzKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTQ0Mi1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNDQzOnN0YXRpYyB2b2lkIG51bGxfaGFuZGxlX2NtZChzdHJ1Y3QgbnVsbGJfY21kICpjbWQsIHNlY3Rvcl90IHNlY3RvcixcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNDQ0LVxcdFxcdFxcdCAgICBzZWN0b3JfdCBucl9zZWN0b3JzLCBlbnVtIHJlcV9vcCBvcClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE0NjctXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTQ2ODpzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgbnVsbGJfYnd0aW1lcl9mbihzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTQ2OS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNDg0LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE0ODU6c3RhdGljIHZvaWQgbnVsbGJfc2V0dXBfYnd0aW1lcihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE0ODYte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTQ5NS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNDk2OnN0YXRpYyBib29sIHNob3VsZF90aW1lb3V0X3JlcXVlc3Qoc3RydWN0IHJlcXVlc3QgKnJxKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE0OTcte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTUwMy1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNTA0OnN0YXRpYyBib29sIHNob3VsZF9yZXF1ZXVlX3JlcXVlc3Qoc3RydWN0IHJlcXVlc3QgKnJxKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE1MDUte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTUxMS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNTEyOnN0YXRpYyBib29sIHNob3VsZF9pbml0X2hjdHhfZmFpbChzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTUxMy17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTE4LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE1MTk6c3RhdGljIGJvb2wgc2hvdWxkX3RpbWVvdXRfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdCAqcnEpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTUyMC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTIzLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE1MjQ6c3RhdGljIGJvb2wgc2hvdWxkX3JlcXVldWVfcmVxdWVzdChzdHJ1Y3QgcmVxdWVzdCAqcnEpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTUyNS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTI4LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE1Mjk6c3RhdGljIGJvb2wgc2hvdWxkX2luaXRfaGN0eF9mYWlsKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTMwLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE1MzUtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTUzNjpzdGF0aWMgdm9pZCBudWxsX21hcF9xdWV1ZXMoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTUzNy17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTg4LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE1ODk6c3RhdGljIGludCBudWxsX3BvbGwoc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgsIHN0cnVjdCBpb19jb21wX2JhdGNoICppb2IpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTU5MC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNjE5LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE2MjA6c3RhdGljIGVudW0gYmxrX2VoX3RpbWVyX3JldHVybiBudWxsX3RpbWVvdXRfcnEoc3RydWN0IHJlcXVlc3QgKnJxKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE2MjEte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTY1Mi1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNjUzOnN0YXRpYyBibGtfc3RhdHVzX3QgbnVsbF9xdWV1ZV9ycShzdHJ1Y3QgYmxrX21xX2h3X2N0eCAqaGN0eCxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNjU0LVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IGJsa19tcV9xdWV1ZV9kYXRhICpiZClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE3MDctXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTcwODpzdGF0aWMgdm9pZCBudWxsX3F1ZXVlX3JxcyhzdHJ1Y3QgcnFfbGlzdCAqcnFsaXN0KVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE3MDkte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTcyNS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNzI2OnN0YXRpYyB2b2lkIG51bGxfaW5pdF9xdWV1ZShzdHJ1Y3QgbnVsbGIgKm51bGxiLCBzdHJ1Y3QgbnVsbGJfcXVldWUgKm5xKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE3Mjcte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTczMi1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNzMzOnN0YXRpYyBpbnQgbnVsbF9pbml0X2hjdHgoc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgsIHZvaWQgKmRyaXZlcl9kYXRhLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE3MzQtXFx0XFx0XFx0ICB1bnNpZ25lZCBpbnQgaGN0eF9pZHgpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xNzQ5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYmxrX21xX29wcyBudWxsX21xX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE3NTgtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTc1OTpzdGF0aWMgdm9pZCBudWxsX2RlbF9kZXYoc3RydWN0IG51bGxiICpudWxsYilcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNzYwLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE3ODktXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTc5MDpzdGF0aWMgdm9pZCBudWxsX2NvbmZpZ19kaXNjYXJkKHN0cnVjdCBudWxsYiAqbnVsbGIsIHN0cnVjdCBxdWV1ZV9saW1pdHMgKmxpbSlcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNzkxLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE4MTA9c3RhdGljIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyBudWxsX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE4MTQtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTgxNTpzdGF0aWMgaW50IHNldHVwX3F1ZXVlcyhzdHJ1Y3QgbnVsbGIgKm51bGxiKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE4MTYte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTgyOC1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxODI5OnN0YXRpYyBpbnQgbnVsbF9pbml0X3RhZ19zZXQoc3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQsIGludCBwb2xsX3F1ZXVlcylcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xODMwLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE4NDEtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTg0MjpzdGF0aWMgaW50IG51bGxfaW5pdF9nbG9iYWxfdGFnX3NldCh2b2lkKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE4NDMte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTg2NC1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxODY1OnN0YXRpYyBpbnQgbnVsbF9zZXR1cF90YWdzZXQoc3RydWN0IG51bGxiICpudWxsYilcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xODY2LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE4ODUtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTg4NjpzdGF0aWMgaW50IG51bGxfdmFsaWRhdGVfY29uZihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTg4Ny17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTI5LSNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxOTMwOnN0YXRpYyBib29sIF9fbnVsbF9zZXR1cF9mYXVsdChzdHJ1Y3QgZmF1bHRfYXR0ciAqYXR0ciwgY2hhciAqc3RyKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE5MzEte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTk0Mi1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxOTQzOnN0YXRpYyBib29sIG51bGxfc2V0dXBfZmF1bHQodm9pZClcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTQ0LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE5NTUtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTk1NjpzdGF0aWMgaW50IG51bGxfYWRkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTk1Ny17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDgwLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIwODE6c3RhdGljIHN0cnVjdCBudWxsYiAqbnVsbF9maW5kX2Rldl9ieV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA4Mi17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDk2LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIwOTc6c3RhdGljIGludCBudWxsX2NyZWF0ZV9kZXYodm9pZClcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDk4LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxMTYtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjExNzpzdGF0aWMgdm9pZCBudWxsX2Rlc3Ryb3lfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjExOC17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTI1LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIxMjY6c3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjEyNy17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTk1LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIxOTY6c3RhdGljIHZvaWQgX19leGl0IG51bGxfZXhpdCh2b2lkKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxOTcte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNzoxNToxNi42NzEzNzMyOVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2OTI2MTA5ODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBOdWxsIEJsb2NrIERyaXZlciBSYWNlIENvbmRpdGlvbiBGaXgqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSByYWNlIGNvbmRpdGlvbiwgc3BlY2lmaWNhbGx5IGJldHdlZW4gbW9kaWZ5aW5nIGEgY29uZmlnZnMgYXR0cmlidXRlIGFuZCB0aGUgYG51bGxfYWRkX2RldigpYCBmdW5jdGlvbi4gVGhhdCBtYWtlcyBzZW5zZTsgdGhlc2UgdHlwZXMgb2YgaW50ZXJhY3Rpb25zIGFyZSBhbHdheXMgYSBwb3RlbnRpYWwgc291cmNlIG9mIHRyb3VibGUuIExldCBtZSBicmVhayB0aGlzIGRvd24uIFRoZSBhdHRyaWJ1dGUgbW9kaWZpY2F0aW9uIGZ1bmN0aW9ucyBhcmUgY3JlYXRlZCB1c2luZyBgTlVMTEJfREVWSUNFX0FUVFJgLCBhbmQgdGhleSdyZSBnaXZlbiB0aGUgbmFtZXMgYG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZWAuIEFuZCBJIHNlZSB0aGV5J3JlIHN0YXRpYyBmdW5jdGlvbnMuIEludGVyZXN0aW5nLiBUaGF0IHNlZW1zIHJlbGV2YW50LiBBbmQgYG51bGxfYWRkX2RldmAgaXMgKmFsc28qIHN0YXRpYy4gSG1tLiBJcyB0aGVyZSAqYW55KiBub24tc3RhdGljIGZ1bmN0aW9uIGludm9sdmVkIGluIHRoaXMgY3JpdGljYWwgcGF0aD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uIHNjb3BlIGZvciB0aGVzZSBvcGVyYXRpb25zIHRvIG5hcnJvdyBkb3duIHdoZXJlIHRvIGZvY3VzIG15IGFuYWx5c2lzLlxuXG5MZXQncyBzZWUuLi4gbG9va2luZyBhdCB0aGUgY29kZSwgSSBzZWUgYG51bGxfaW5pdGAgYW5kIGBudWxsX2V4aXRgLCB3aGljaCBhcmUsIG9mIGNvdXJzZSwgdGhlIGluaXQgYW5kIGV4aXQgZnVuY3Rpb25zLiBCdXQgdGhvc2UgYXJlbid0IGRpcmVjdGx5IGludm9sdmVkIGluIHRoaXMgcGFydGljdWxhciByYWNlLCBhbmQgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyBhcmUgc3RhdGljLlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29uZmlnZnMgb3BlcmF0aW9ucyBhcmUgcmVnaXN0ZXJlZCB0aHJvdWdoIGBudWxsYl9kZXZpY2VfdHlwZWAgYW5kIGBudWxsYl9zdWJzeXNgLiBUaGUgZW50cnkgcG9pbnRzIGZvciB0aGUgY29uZmlnZnMgaW50ZXJhY3Rpb25zIGFyZSB0aGUgc3RvcmUvc2hvdyBmdW5jdGlvbnMuIEFuZCB0aGV5J3JlIHN0YXRpYy4gVGhhdCBtZWFucyBJIGNhbid0IGRpcmVjdGx5IHNwZWNpZnkgdGhlbSBpbiBhIHRvb2wgbGlrZSBgRm9jdXNTeW1ib2xzYC4gVGhhdCdzIGltcG9ydGFudCB0byByZW1lbWJlci4gQnV0IHdhaXQsIHdoYXQgYWJvdXQgYG51bGxfYWRkX2RldmA/IEl0J3Mgc3RhdGljIHRvby4gU28gSSBjYW4ndCBmb2N1cyB0aGVyZSBlaXRoZXIuXG5cbkxldCBtZSB0YWtlIGEgc3RlcCBiYWNrIGFuZCBzZWUgd2hhdCBvdGhlciBjb2RlIG1pZ2h0IGJlIGludm9sdmVkLiBTaW5jZSB0aGUgZnVuY3Rpb25zIGluIGBtYWluLmNgIGFyZSBzdGF0aWMsIGFyZSB0aGVyZSBhbnkgb3RoZXIgZmlsZXMgaW4gYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvYCB0aGF0IGNvdWxkIGJlIHJlbGV2YW50PyBJIG5lZWQgdG8gYnJvYWRlbiBteSBzY29wZSBhIGJpdCBhbmQgc2VlIGlmIHRoZXJlIGFyZSBvdGhlciwgcG9zc2libHkgbm9uLXN0YXRpYyBmdW5jdGlvbnMsIHRoYXQgY291bGQgcGxheSBhIHJvbGUgaW4gdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQyNjEsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTNUMTc6MTU6MjMuNTk3NDkwNjJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjQxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcIm1haW4uY1wiLFxuICAgIFwibnVsbF9ibGsuaFwiLFxuICAgIFwidHJhY2UuY1wiLFxuICAgIFwidHJhY2UuaFwiLFxuICAgIFwiem9uZWQuY1wiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBudWxsXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNzoxNToyMy41OTc1NTQzMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzE0NTY5NDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgUmFjZSBDb25kaXRpb25zIGluIHRoZSBOdWxsIEJsb2NrIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gcGlucG9pbnQgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyBpbiB0aGUgbnVsbCBibG9jayBkcml2ZXIgKGBtYWluLmNgIHNwZWNpZmljYWxseSkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjaGVjayBpZiBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIGBtYWluLmNgIGFyZSBjYWxsZWQgZnJvbSBvdXRzaWRlIHRoZSBtb2R1bGUuIFRoYXQgd291bGQgYmUgYSBsaWtlbHkgZW50cnkgcG9pbnQgZm9yIGNvbmN1cnJlbmN5IGlzc3Vlcy4gSG93ZXZlciwgc2luY2UgdGhpcyBpcyBhIG1vZHVsZSwgSSdtIGFscmVhZHkgYXdhcmUgdGhhdCB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludHMgYXJlIG1vZHVsZSBpbml0aWFsaXphdGlvbi9leGl0IHJvdXRpbmVzIGFuZCB0aGUgY2FsbGJhY2tzIGFzc29jaWF0ZWQgd2l0aCBjb25maWdmcy9zeXNmcy5cblxuVGhlIGNvbmZpZ2ZzIGNhbGxiYWNrcyBhcmUgZGVmaW5pdGVseSBjYWxsZWQgdGhyb3VnaCB0aGUgVmlydHVhbCBGaWxlIFN5c3RlbSAoVkZTKSBsYXllci4gU28sIEkgY2FuJ3QganVzdCB0cmFjayB0aGluZ3MgZnJvbSBgbWFpbi5jYC4gTm93LCBJIG5lZWQgdG8gZm9jdXMgb24gdGhlIGludGVycGxheSBiZXR3ZWVuIGEgcG90ZW50aWFsIHN0b3JlIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgYG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZWAsIGFuZCBgbnVsbF9hZGRfZGV2YC4gVGhlc2Ugc2VlbSBsaWtlIHRoZSB0d28gZnVuY3Rpb25zIGxpa2VseSB0byBoYXZlIG92ZXJsYXAgaXNzdWVzLlxuXG5gbnVsbF9hZGRfZGV2YCBpcywgYXMgSSByZWNhbGwsIGNhbGxlZCBmcm9tIGBudWxsX2NyZWF0ZV9kZXZgLCB3aGljaCBpdHNlbGYgaXMgcGFydCBvZiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uIFJpZ2h0LiBCdXQgd2FpdC4uLiBpcyBpdCBhbHNvIGNhbGxlZCB2aWEgdGhlIGNvbmZpZ2ZzIHBhdGggdGhyb3VnaCBgbnVsbGJfZ3JvdXBfbWFrZV9ncm91cGA/IE5vLCB0aGF0IGRvZXNuJ3QgZmVlbCByaWdodC4gTGV0IG1lIGp1c3QgY29uZmlybSB0aGF0LiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHdoZXJlIHRoYXQgZnVuY3Rpb24gaXMgYWN0dWFsbHkgaW52b2tlZCBmcm9tLiBJIG5lZWQgdG8gdHJhY2UgYmFjayAqaG93KiBgbnVsbF9hZGRfZGV2YCBpcyBjYWxsZWQuIExldCdzIGRpZyBpbiBhbmQgdHJhY2sgdGhlIGNhbGwgcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUwMDcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDQsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE3OjE1OjI4LjkxMjEyNzY3N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY1MTQ1ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnVsbF9hZGRfZGV2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTI3NT1zdGF0aWMgdm9pZCBudWxsX2RlbF9kZXYoc3RydWN0IG51bGxiICpudWxsYik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mjc2OnN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjc3LXN0YXRpYyBzdHJ1Y3QgbnVsbGIgKm51bGxfZmluZF9kZXZfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTMyOT1zdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3N0b3JlKGJvb2wgKnZhbCwgY29uc3QgY2hhciAqcGFnZSxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTM0Ni0gKiBUaGUgZGV2aWNlIGNvbmZpZ3VyYXRpb24gaXMgbW9kaWZpZWQgdW5kZXIgdGhlIGdsb2JhbCBsb2NrIHRvIHNlcmlhbGl6ZVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjM0NzogKiBhdHRyaWJ1dGUgY2hhbmdlcyBhZ2FpbnN0IG51bGxfYWRkX2RldigpIGFuZCBudWxsX2RlbF9kZXYoKTogd2l0aG91dCB0aGlzLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjM0ODogKiBhbiBhdHRyaWJ1dGUgY291bGQgYmUgY2hhbmdlZCB3aGlsZSBudWxsX2FkZF9kZXYoKSBpcyBydW5uaW5nLCB0aGF0IGlzLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjM0OTogKiBiZWZvcmUgTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQgaXMgc2V0LCB3aGljaCB3b3VsZCBsZXQgbnVsbF9hZGRfZGV2KClcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zNTAtICogb2JzZXJ2ZSBpbmNvbnNpc3RlbnQgdmFsdWVzIGZvciB0aGUgZGV2aWNlIGNvbmZpZ3VyYXRpb24uXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00ODU9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTUwMS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1MDI6XFx0XFx0cmV0ID0gbnVsbF9hZGRfZGV2KGRldik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTAzLVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE5NDM9c3RhdGljIGJvb2wgbnVsbF9zZXR1cF9mYXVsdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTk1NS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxOTU2OnN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTU3LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTIwOTc9c3RhdGljIGludCBudWxsX2NyZWF0ZV9kZXYodm9pZClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxMDYtXFx0bXV0ZXhfbG9jayhcXHUwMDI2bG9jayk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjEwNzpcXHRyZXQgPSBudWxsX2FkZF9kZXYoZGV2KTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTA4LVxcdG11dGV4X3VubG9jayhcXHUwMDI2bG9jayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE3OjE1OjI4Ljk1ODY0Nzg2NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTA0OTU3NzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS2VybmVsIE1vZHVsZSdzIFN5bWJvbCBGb2N1cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMga2VybmVsIG1vZHVsZSBhbmQgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZnVuY3Rpb25zIGFyZSB0aGUga2V5IGVudHJ5IHBvaW50cyBmb3IgZnV6emluZywgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGBGb2N1c1N5bWJvbHNgLiBgbnVsbF9hZGRfZGV2YCBpcyBjYWxsZWQgZnJvbSBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBhbmQgYG51bGxfY3JlYXRlX2RldmAuIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIGlzIGEgY29uZmlnZnMgc3RvcmUgY2FsbGJhY2sgd2hpY2ggbWVhbnMgaXQncyBsaWtlbHkgbm90IGlubGluZWQgYmVjYXVzZSBpdHMgYWRkcmVzcyBpcyB0YWtlbi4gVGhlIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiwgdGhlbiwgaXMgYmV0d2VlbiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCAod2hpY2ggY2FsbHMgYG51bGxfYWRkX2RldmApIGFuZCBvdGhlciBzaW1pbGFyIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmVgIGZ1bmN0aW9ucy4gU2luY2UgdGhvc2UgYXJlIGFsbCBzdGF0aWMsIHRoZXkgbWlnaHQgYmUgaW5saW5lZC4gQnV0IHdhaXQsIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgICppcyogc3RhdGljLCBidXQgaXRzIGFkZHJlc3MgaXMgdGFrZW4gd2l0aGluIGBDT05GSUdGU19BVFRSYC5cblxuVGhlIGluc3RydWN0aW9ucyBzYXkgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50cy4gU28sIHRoZSBpZGVhbCBzaXR1YXRpb24gd291bGQgYmUgYSBub24tc3RhdGljIGZ1bmN0aW9uLCBidXQgdGhlcmUgZG9lc24ndCBzZWVtIHRvIGJlIG9uZS4gVGhlcmVmb3JlIEkgbmVlZCB0byBkZWNpZGUgaWYgSSBjYW4gdXNlIHN0YXRpYyBvbmVzLiBUaGUgaW5zdHJ1Y3Rpb25zIHRlbGwgbWUgdG8gYXZvaWQgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMsIHNvIEkgc2hvdWxkIGJlIHNlbGVjdGl2ZS5cblxuVGhpbmtpbmcgYWJvdXQgYG51bGxfYWRkX2RldmAsIGl0J3Mgbm90IGlubGluZWQgZHVlIHRvIGl0cyBzaXplLCBldmVuIHRob3VnaCBpdCAqaXMqIHN0YXRpYy4gVGhlIG1haW4gcXVlc3Rpb24gaXMgY2FuIEkgbGVhdmUgYEZvY3VzU3ltYm9sc2AgZW1wdHk/IEl0ICpzZWVtcyogbGlrZSBJIGNhbiwgYXMgdGhlcmUgYXJlIG5vIG5vbi1zdGF0aWMgZnVuY3Rpb25zIG1vZGlmaWVkLiBUaGUgaW5zdHJ1Y3Rpb25zIGFsbG93IGZvciBsZWF2aW5nIGl0IGVtcHR5LiBIb3dldmVyLCBJIGNvdWxkIGluY2x1ZGUgYG51bGxfYWRkX2RldmAgYW5kIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLCBidXQgdGhlIGluc3RydWN0aW9ucyBwcmVmZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMsIHdoaWNoIHN1Z2dlc3RzIGxlYXZpbmcgdGhlIGxpc3QgZW1wdHkgaXMgZmluZSB3aGVuIHRoZXJlIGFyZSBubyBub24tc3RhdGljIGZ1bmN0aW9ucy5cblxuU28sIGl0J3Mgc2FmZXIgdG8gbGVhdmUgYEZvY3VzU3ltYm9sc2AgZW1wdHksIHNpbmNlIHRoZSBpbnN0cnVjdGlvbnMgcHJpb3JpdGl6ZSBub24tc3RhdGljIGVudHJ5IHBvaW50cywgYnV0IGlmIHRoZXJlIGFyZSBubyBub24tc3RhdGljLCBgbnVsbF9hZGRfZGV2YCBtYXkgYmUgYWRkZWQuIExldCBtZSBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBudWxsX2FkZF9kZXZgIGlzIGFjdHVhbGx5IGluIGBrYWxsc3ltc2AuIEl0IHVzdWFsbHkgaXMgYmVjYXVzZSBvZiBpdHMgc2l6ZS4gTGVhdmluZyBpdCBlbXB0eSBpcyBhbHNvIGEgdmFsaWQgYXBwcm9hY2guXG5cbk5vdywgbGV0IG1lIGNoZWNrIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9ucy4gYEJMS19ERVZfTlVMTF9CTEtgIHNlZW1zIGxpa2UgdGhlIHByaW1hcnkgb25lLiBJIHNob3VsZCBjaGVjayBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MTQxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE3OjE1OjM3Ljg2MzYwOTcwN1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE51bGwgYmxvY2sgZGV2aWNlIGRyaXZlciBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBCTEtfREVWX05VTExfQkxLXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiTnVsbCB0ZXN0IGJsb2NrIGRyaXZlclxcXCJcXG4gICA4OlxcdFxcdHNlbGVjdCBDT05GSUdGU19GU1xcbiAgIDk6XFx0XFxuICAxMDpcXHRjb25maWcgQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cXG4gIDExOlxcdFxcdGJvb2wgXFxcIlN1cHBvcnQgZmF1bHQgaW5qZWN0aW9uIGZvciBOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcbiAgMTI6XFx0XFx0ZGVwZW5kcyBvbiBCTEtfREVWX05VTExfQkxLIFxcdTAwMjZcXHUwMDI2IEZBVUxUX0lOSkVDVElPTl9DT05GSUdGU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNzoxNTozNy44NjM2OTcwNTdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzgxODM0NTY5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgTnVsbCBCbG9jayBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIGBCTEtfREVWX05VTExfQkxLYCBwdWxscyBpbiBgQ09ORklHRlNfRlNgLiBOb3RoaW5nIHVuZXhwZWN0ZWQgdGhlcmUsIG5vIGRlcGVuZGVuY2llcyB0byB3b3JyeSBhYm91dC4gU28sIGBFbmFibGVDb25maWdzYCBzaG91bGQgYWJzb2x1dGVseSBpbmNsdWRlIGBCTEtfREVWX05VTExfQkxLYC4gVGhlIHBhdGNoIGRvZXMgdG91Y2ggY29uZmlnZnMgYXR0cmlidXRlcywgd2hpY2ggbWFrZXMgYENPTkZJR0ZTX0ZTYCByZWxldmFudCwgYnV0IGxpa2UgSSBzYWlkLCBgQkxLX0RFVl9OVUxMX0JMS2Agc2VsZWN0cyBpdCwgc28gdGhhdCdzIGhhbmRsZWQuXG5cbkxldCdzIGRvIGEgcXVpY2sgc3dlZXAgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIGludm9sdmVkLiBIbW0sIGl0IGxvb2tzIGxpa2UgdGhpcyBwYXRjaCBpcyBjaGFuZ2luZyBgTlVMTEJfREVWSUNFX0FUVFJgLCB3aGljaCBhcHBsaWVzIHRvIGFsbCBhdHRyaWJ1dGVzLCByaWdodD8gUmlnaHQsIGFuZCB0aGUgcmFjZSBjb25kaXRpb24gaXMgYmV0d2VlbiBgbnVsbF9hZGRfZGV2YCBhbmQgYXR0cmlidXRlIHN0b3JlIG9wZXJhdGlvbnMuIEdpdmVuIHRoYXQsIHRoaXMgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcuXG5cbkFscmlnaHQsIGxldCdzIHB1dCB0b2dldGhlciB0aGUgcmVzdWx0cyBvZiB0aGlzIGFuYWx5c2lzLlxuXG4qICAgYFdvcnRoRnV6emluZ2A6IFRydWUuIFJhY2UgY29uZGl0aW9ucyBhcmUgZnV6emFibGUuXG4qICAgYEZvY3VzU3ltYm9sc2A6IEVtcHR5LiBJIGNoZWNrZWQgYW5kIGBudWxsX2FkZF9kZXZgIGlzLCBpbiBmYWN0LCBzdGF0aWMuIGBudWxsX2luaXRgIGlzIGFsc28gYF9faW5pdGAsIHNvIGl0J3Mgbm90IGEgZnV6emluZyB0YXJnZXQuXG4qICAgYEVuYWJsZUNvbmZpZ3NgOiBgW1wiQkxLX0RFVl9OVUxMX0JMS1wiXWBcbiogICBgUmVhc29uaW5nYDogVGhlIHBhdGNoIHRhY2tsZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyJ3MgY29uZmlnZnMgaW50ZXJmYWNlLiBMb2NraW5nIGlzIGJlaW5nIGFkZGVkIHRvIGRldmljZSBhdHRyaWJ1dGUgbW9kaWZpY2F0aW9ucywgd2hpY2ggcHJldmVudHMgY29uY3VycmVudCBjaGFuZ2VzIHRvIGF0dHJpYnV0ZXMgd2hlbiBhIGRldmljZSBpcyBhZGRlZCBvciByZW1vdmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzM1MCwiT3V0cHV0VG9rZW5zIjo3OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE3OjE1OjQ1LjY4MjA0NTkzOFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2MjIzOTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIG51bGxfYmxrIGRyaXZlcidzIGNvbmZpZ2ZzIGludGVyZmFjZSBieSBhZGRpbmcgbG9ja2luZyB0byBkZXZpY2UgYXR0cmlidXRlIG1vZGlmaWNhdGlvbnMuIFRoaXMgcHJldmVudHMgYXR0cmlidXRlcyBmcm9tIGJlaW5nIGNoYW5nZWQgY29uY3VycmVudGx5IHdpdGggZGV2aWNlIGFkZGl0aW9uL3JlbW92YWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OVUxMX0JMS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBudWxsX2JsayBkcml2ZXIncyBjb25maWdmcyBpbnRlcmZhY2UgYnkgYWRkaW5nIGxvY2tpbmcgdG8gZGV2aWNlIGF0dHJpYnV0ZSBtb2RpZmljYXRpb25zLiBUaGlzIHByZXZlbnRzIGF0dHJpYnV0ZXMgZnJvbSBiZWluZyBjaGFuZ2VkIGNvbmN1cnJlbnRseSB3aXRoIGRldmljZSBhZGRpdGlvbi9yZW1vdmFsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNzoxNTo0NS43NTgyODE5NDdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwNDAzODcyNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNzoxNTo0NS43NTg3OTQ0NTdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODAzOTg3MDQ5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyIGJ5IHRha2luZyBhIGdsb2JhbCBtdXRleCB3aGVuIHVwZGF0aW5nIGRldmljZSBhdHRyaWJ1dGVzIHZpYSBjb25maWdmcy4gSXQgYWxzbyBjaGFuZ2VzIHRoZSBtdXRleCBpbml0aWFsaXphdGlvbiB0byB1c2UgREVGSU5FX01VVEVYLiBUaGVzZSBjaGFuZ2VzIGFkZHJlc3MgY29uY3VycmVuY3kgaXNzdWVzIGFuZCBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4gQW55IGxvY2tpbmcgaXNzdWVzIG9yIHJhY2UgY29uZGl0aW9ucyB3b3VsZCBiZSBjYXVnaHQgYnkgTE9DS0RFUCBvciBLQ1NBTi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0Njg0ZmQ4MmJmNDEyYzQyOTVkNDA5OGI0N2QwNWEyYTE4OTliY2FkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMTMgMTc6MTQ6NTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5pbmRleCBmOGMwZmQ1N2UwNDFhLi4yZThmOTk4NzM5NTY4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbisrKyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5AQCAtNjYsNyArNjYsNyBAQCBzdHJ1Y3QgbnVsbGJfcGFnZSB7XG4gI2RlZmluZSBOVUxMQl9QQUdFX0ZSRUUgKE1BUF9TWiAtIDIpXG4gXG4gc3RhdGljIExJU1RfSEVBRChudWxsYl9saXN0KTtcbi1zdGF0aWMgc3RydWN0IG11dGV4IGxvY2s7XG4rc3RhdGljIERFRklORV9NVVRFWChsb2NrKTtcbiBzdGF0aWMgaW50IG51bGxfbWFqb3I7XG4gc3RhdGljIERFRklORV9JREEobnVsbGJfaW5kZXhlcyk7XG4gc3RhdGljIHN0cnVjdCBibGtfbXFfdGFnX3NldCB0YWdfc2V0O1xuQEAgLTM0MCw3ICszNDAsMTUgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsXG4gXHRyZXR1cm4gY291bnQ7XG4gfVxuIFxuLS8qIFRoZSBmb2xsb3dpbmcgbWFjcm8gc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoIFRZUEUgPSB7dWludCwgdWxvbmcsIGJvb2x9LiAqL1xuKy8qXG4rICogVGhlIGZvbGxvd2luZyBtYWNybyBzaG91bGQgb25seSBiZSB1c2VkIHdpdGggVFlQRSA9IHt1aW50LCB1bG9uZywgYm9vbH0uXG4rICpcbisgKiBUaGUgZGV2aWNlIGNvbmZpZ3VyYXRpb24gaXMgbW9kaWZpZWQgdW5kZXIgdGhlIGdsb2JhbCBsb2NrIHRvIHNlcmlhbGl6ZVxuKyAqIGF0dHJpYnV0ZSBjaGFuZ2VzIGFnYWluc3QgbnVsbF9hZGRfZGV2KCkgYW5kIG51bGxfZGVsX2RldigpOiB3aXRob3V0IHRoaXMsXG4rICogYW4gYXR0cmlidXRlIGNvdWxkIGJlIGNoYW5nZWQgd2hpbGUgbnVsbF9hZGRfZGV2KCkgaXMgcnVubmluZywgdGhhdCBpcyxcbisgKiBiZWZvcmUgTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQgaXMgc2V0LCB3aGljaCB3b3VsZCBsZXQgbnVsbF9hZGRfZGV2KClcbisgKiBvYnNlcnZlIGluY29uc2lzdGVudCB2YWx1ZXMgZm9yIHRoZSBkZXZpY2UgY29uZmlndXJhdGlvbi5cbisgKi9cbiAjZGVmaW5lIE5VTExCX0RFVklDRV9BVFRSKE5BTUUsIFRZUEUsIEFQUExZKVx0XHRcdFx0XFxcbiBzdGF0aWMgc3NpemVfdFx0XHRcdFx0XHRcdFx0XHRcXFxuIG51bGxiX2RldmljZV8jI05BTUUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcdFxcXG5AQCAtMzYwLDEzICszNjgsMTYgQEAgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcdFxcXG4gXHRyZXQgPSBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zdG9yZShcdTAwMjZuZXdfdmFsdWUsIHBhZ2UsIGNvdW50KTtcXFxuIFx0aWYgKHJldCBcdTAwM2MgMClcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdHJldHVybiByZXQ7XHRcdFx0XHRcdFx0XFxcbitcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XHRcdFx0XHRcdFx0XFxcbiBcdGlmIChhcHBseV9mbilcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdHJldCA9IGFwcGx5X2ZuKGRldiwgbmV3X3ZhbHVlKTtcdFx0XHRcdFxcXG4gXHRlbHNlIGlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSkgXHRcXFxuIFx0XHRyZXQgPSAtRUJVU1k7XHRcdFx0XHRcdFx0XFxcbitcdGlmIChyZXQgXHUwMDNlPSAwKVx0XHRcdFx0XHRcdFx0XFxcbitcdFx0ZGV2LVx1MDAzZU5BTUUgPSBuZXdfdmFsdWU7XHRcdFx0XHRcdFxcXG4rXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XHRcdFx0XHRcdFx0XFxcbiBcdGlmIChyZXQgXHUwMDNjIDApXHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRyZXR1cm4gcmV0O1x0XHRcdFx0XHRcdFxcXG4tXHRkZXYtXHUwMDNlTkFNRSA9IG5ld192YWx1ZTtcdFx0XHRcdFx0XHRcXFxuIFx0cmV0dXJuIGNvdW50O1x0XHRcdFx0XHRcdFx0XFxcbiB9XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIE5BTUUpO1xuQEAgLTM3OSw2ICszOTAsOCBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0c3RydWN0IGJsa19tcV90YWdfc2V0ICpzZXQ7XG4gXHRpbnQgcmV0LCBucl9od19xdWV1ZXM7XG4gXG4rXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNmxvY2spO1xuK1xuIFx0aWYgKCFkZXYtXHUwMDNlbnVsbGIpXG4gXHRcdHJldHVybiAwO1xuIFxuQEAgLTQyMSwyNSArNDM0LDEzIEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4gc3RhdGljIGludCBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgICAgdW5zaWduZWQgaW50IHN1Ym1pdF9xdWV1ZXMpXG4ge1xuLVx0aW50IHJldDtcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4tXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LVx1MDAzZXBvbGxfcXVldWVzKTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbi1cbi1cdHJldHVybiByZXQ7XG4rXHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi1cdTAwM2Vwb2xsX3F1ZXVlcyk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICAgdW5zaWduZWQgaW50IHBvbGxfcXVldWVzKVxuIHtcbi1cdGludCByZXQ7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuLVx0cmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi1cdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4tXG4tXHRyZXR1cm4gcmV0O1xuK1x0cmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpO1xuIH1cbiBcbiBOVUxMQl9ERVZJQ0VfQVRUUihzaXplLCB1bG9uZywgTlVMTCk7XG5AQCAtMjE2Niw4ICsyMTY3LDYgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIFxuLVx0bXV0ZXhfaW5pdChcdTAwMjZsb2NrKTtcbi1cbiBcdG51bGxfbWFqb3IgPSByZWdpc3Rlcl9ibGtkZXYoMCwgXCJudWxsYlwiKTtcbiBcdGlmIChudWxsX21ham9yIFx1MDAzYyAwKSB7XG4gXHRcdHJldCA9IG51bGxfbWFqb3I7XG5AQCAtMjIxMSw4ICsyMjEwLDYgQEAgc3RhdGljIHZvaWQgX19leGl0IG51bGxfZXhpdCh2b2lkKVxuIFxuIFx0aWYgKHRhZ19zZXQub3BzKVxuIFx0XHRibGtfbXFfZnJlZV90YWdfc2V0KFx1MDAyNnRhZ19zZXQpO1xuLVxuLVx0bXV0ZXhfZGVzdHJveShcdTAwMjZsb2NrKTtcbiB9XG4gXG4gbW9kdWxlX2luaXQobnVsbF9pbml0KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEzVDE3OjE1OjQ1Ljc1ODc5NTM2N1oiLCJTZXEiOjIxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MDM5ODQ3Mzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIE51bGwgQmxvY2sgRGV2aWNlIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBmb2N1c2VkIG9uIHRoZSBgbnVsbF9ibGtgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY2AuIEl0J3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGxvY2tpbmcgY29ycmVjdGlvbiwgd2hpY2ggSSBhcHByZWNpYXRlLiBUaGUgcHJpbWFyeSBjaGFuZ2UgaXMgdGhlIHJlcGxhY2VtZW50IG9mIHRoZSBtYW51YWwgbXV0ZXggaW5pdGlhbGl6YXRpb24gKGBzdGF0aWMgc3RydWN0IG11dGV4IGxvY2s7YCBmb2xsb3dlZCBieSBgbXV0ZXhfaW5pdChcdTAwMjZsb2NrKTtgIGFuZCBgbXV0ZXhfZGVzdHJveShcdTAwMjZsb2NrKTtgKSB3aXRoIGBzdGF0aWMgREVGSU5FX01VVEVYKGxvY2spO2AuIFRoYXQncyBjbGVhbmVyLCBhbmQgdXNpbmcgYERFRklORV9NVVRFWGAgaXMgZ2VuZXJhbGx5IHRoZSBwcmVmZXJyZWQgYXBwcm9hY2ggZm9yIHN0YXRpY2FsbHktZGVmaW5lZCBtdXRleGVzIGluIHRoZSBrZXJuZWwuIFRoaXMgYWxzbyByZW1vdmVzIHRoZSBjYWxscyB0byBleHBsaWNpdGx5IGluaXRpYWxpemUgYW5kIGRlc3Ryb3kgdGhlIG11dGV4LlxuXG5DcnVjaWFsbHksIHRoZSBgTlVMTEJfREVWSUNFX0FUVFJgIG1hY3JvIGlzIGJlaW5nIHVwZGF0ZWQgdG8gbm93ICphY3F1aXJlKiB0aGUgYGxvY2tgIG11dGV4IHdoZW4gaXQncyB1c2VkIHRvIHVwZGF0ZSBkZXZpY2UgYXR0cmlidXRlcy4gVGhpcyBpcyB0aGUgaGVhcnQgb2YgdGhlIGZpeC4gRnVydGhlcm1vcmUsIHRoZSBjYWxscyB0byBgbXV0ZXhfbG9jayhcdTAwMjZsb2NrKWAgYXJlIGJlaW5nIHJlbW92ZWQgZnJvbSBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AgYW5kIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AgYmVjYXVzZSB0aGUgY2FsbHMgYXJlIHJlZHVuZGFudDsgbm93IHRoZSBtYWNybyB3aWxsIGhvbGQgdGhlIGxvY2sgZHVyaW5nIHRoZWlyIGV4ZWN1dGlvbi4gTWFrZXMgcGVyZmVjdCBzZW5zZSwgZWxpbWluYXRpbmcgdW5uZWNlc3NhcnkgbG9ja2luZyBhbmQgaW1wcm92aW5nIGVmZmljaWVuY3kuXG5cblRoZSBhZGRpdGlvbiBvZiBgbG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZsb2NrKTtgIGluIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCBpcyBhIG5pY2UgdG91Y2guIEl0IHNlcnZlcyBhcyBhIGdvb2QgYXNzZXJ0aW9uIHRvIGVuc3VyZSB0aGF0IHRoZSBsb2NrIGlzLCBpbiBmYWN0LCBoZWxkIHdoZW4gdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQsIGhlbHBpbmcgdG8gY2F0Y2ggYW55IGZ1dHVyZSByZWdyZXNzaW9ucy5cblxuVGhlIG92ZXJhbGwgZ29hbCBpcyBjbGVhcjogcHJldmVudCByYWNlIGNvbmRpdGlvbnMsIHBhcnRpY3VsYXJseSBhcm91bmQgY29uY3VycmVudCBtb2RpZmljYXRpb25zIHRvIGRldmljZSBhdHRyaWJ1dGVzLCBlc3BlY2lhbGx5IHdoaWxlIGBudWxsX2FkZF9kZXYoKWAgaXMgcnVubmluZy4gVGhhdCdzIGEgY2xhc3NpYyBhbmQgY3J1Y2lhbCBrZXJuZWwgYnVnIHNjZW5hcmlvLCBzbyB0aGlzIGlzIGEgZ29vZCBmaXguIEkgZG9uJ3Qgc2VlIGFueSByaXNrcyBpbiB0ZXJtcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBvciBpbmZvcm1hdGlvbiBsZWFrYWdlLCB3aGljaCBpcyBnb29kLlxuXG5HaXZlbiB0aGF0IHRoaXMgcGF0Y2ggcHJpbWFyaWx5IGFkZHJlc3NlcyByYWNlIGNvbmRpdGlvbnMsIGl0J3MgdGhlIGtpbmQgb2YgYnVnIHRoYXQgS0NTQU4gb3IgZXZlbiBzdGFuZGFyZCB0ZXN0aW5nIGFyZSBsaWtlbHkgdG8gY2F0Y2guIEtNU0FOIGlzbid0IHRoZSBhcHByb3ByaWF0ZSB0b29sIGZvciB0aGlzIGNsYXNzIG9mIGlzc3VlLCBzbyBJJ20gY29tZm9ydGFibGUgc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAuIFRoaXMgbG9va3MgbGlrZSBhIHNvbGlkIGFuZCB0YXJnZXRlZCBsb2NraW5nIGZpeC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA3MywiT3V0cHV0VG9rZW5zIjoxMjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xM1QxNzoxNTo1My43OTg2NDUyNTdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODA3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIG51bGxfYmxrIGRyaXZlciBieSB0YWtpbmcgYSBnbG9iYWwgbXV0ZXggd2hlbiB1cGRhdGluZyBkZXZpY2UgYXR0cmlidXRlcyB2aWEgY29uZmlnZnMuIEl0IGFsc28gY2hhbmdlcyB0aGUgbXV0ZXggaW5pdGlhbGl6YXRpb24gdG8gdXNlIERFRklORV9NVVRFWC4gVGhlc2UgY2hhbmdlcyBhZGRyZXNzIGNvbmN1cnJlbmN5IGlzc3VlcyBhbmQgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciBpbmZvLWxlYWtzIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uIEFueSBsb2NraW5nIGlzc3VlcyBvciByYWNlIGNvbmRpdGlvbnMgd291bGQgYmUgY2F1Z2h0IGJ5IExPQ0tERVAgb3IgS0NTQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyIGJ5IHRha2luZyBhIGdsb2JhbCBtdXRleCB3aGVuIHVwZGF0aW5nIGRldmljZSBhdHRyaWJ1dGVzIHZpYSBjb25maWdmcy4gSXQgYWxzbyBjaGFuZ2VzIHRoZSBtdXRleCBpbml0aWFsaXphdGlvbiB0byB1c2UgREVGSU5FX01VVEVYLiBUaGVzZSBjaGFuZ2VzIGFkZHJlc3MgY29uY3VycmVuY3kgaXNzdWVzIGFuZCBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGluZm8tbGVha3MgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4gQW55IGxvY2tpbmcgaXNzdWVzIG9yIHJhY2UgY29uZGl0aW9ucyB3b3VsZCBiZSBjYXVnaHQgYnkgTE9DS0RFUCBvciBLQ1NBTi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowpp4h6[1] Phase: Succeeded StartedAt: 2026-08-13 17:16:05 +0000 UTC FinishedAt: 2026-08-13 17:16:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpp4h6[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-13 17:16:05 +0000 UTC FinishedAt: 2026-08-13 17:16:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpp4h6[2] Phase: Succeeded StartedAt: 2026-08-13 17:16:05 +0000 UTC FinishedAt: 2026-08-13 21:06:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-13 17:16:05 +0000 UTC FinishedAt: 2026-08-13 21:06:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-13 17:16:05 +0000 UTC FinishedAt: 2026-08-13 17:16:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-13 17:16:05 +0000 UTC FinishedAt: 2026-08-13 17:16:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowpp4h6/series-workflowpp4h6-convert-artifact-489226055/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-13 17:16:15 +0000 UTC FinishedAt: 2026-08-13 17:36:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-13 17:16:15 +0000 UTC FinishedAt: 2026-08-13 17:36:49 +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:*2e1a82a6-03f1-432a-98d5-b76a16d17be9,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-workflowpp4h6/series-workflowpp4h6-convert-artifact-489226055/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": "61bbc60f-85ce-4d96-aa61-92bb11a51447", "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-workflowpp4h6/series-workflowpp4h6-build-action-3973318621/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-13 17:16:15 +0000 UTC FinishedAt: 2026-08-13 17:36:25 +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:*2e1a82a6-03f1-432a-98d5-b76a16d17be9,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-workflowpp4h6/series-workflowpp4h6-convert-artifact-489226055/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": "61bbc60f-85ce-4d96-aa61-92bb11a51447", "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-workflowpp4h6/series-workflowpp4h6-build-action-3973318621/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-13 17:36:49 +0000 UTC FinishedAt: 2026-08-13 17:36:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-13 17:36:49 +0000 UTC FinishedAt: 2026-08-13 17:36:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-13 17:36:49 +0000 UTC FinishedAt: 2026-08-13 17:37:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-13 17:36:49 +0000 UTC FinishedAt: 2026-08-13 17:37:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowpp4h6/series-workflowpp4h6-convert-artifact-4232759158/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-13 17:37:10 +0000 UTC FinishedAt: 2026-08-13 17:39:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-13 17:37:10 +0000 UTC FinishedAt: 2026-08-13 17:39:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*61bbc60f-85ce-4d96-aa61-92bb11a51447,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-workflowpp4h6/series-workflowpp4h6-build-action-3973318621/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-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-13 17:39:14 +0000 UTC FinishedAt: 2026-08-13 17:39:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-13 17:39:14 +0000 UTC FinishedAt: 2026-08-13 17:39:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-13 17:39:14 +0000 UTC FinishedAt: 2026-08-13 18:02:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-13 17:39:14 +0000 UTC FinishedAt: 2026-08-13 18:02:13 +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:*2e1a82a6-03f1-432a-98d5-b76a16d17be9,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-workflowpp4h6/series-workflowpp4h6-convert-artifact-4232759158/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": "0b1582f3-04c4-46ce-abdd-c678cfd8bab1", "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-workflowpp4h6/series-workflowpp4h6-build-action-1423699578/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-13 17:39:14 +0000 UTC FinishedAt: 2026-08-13 18:01: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:*2e1a82a6-03f1-432a-98d5-b76a16d17be9,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-workflowpp4h6/series-workflowpp4h6-convert-artifact-4232759158/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": "0b1582f3-04c4-46ce-abdd-c678cfd8bab1", "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-workflowpp4h6/series-workflowpp4h6-build-action-1423699578/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-13 18:02:13 +0000 UTC FinishedAt: 2026-08-13 18:02:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-13 18:02:13 +0000 UTC FinishedAt: 2026-08-13 18:02:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-13 18:02:13 +0000 UTC FinishedAt: 2026-08-13 18:04:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-13 18:02:13 +0000 UTC FinishedAt: 2026-08-13 18:04:17 +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:*0b1582f3-04c4-46ce-abdd-c678cfd8bab1,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-workflowpp4h6/series-workflowpp4h6-build-action-1423699578/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-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-13 18:04:27 +0000 UTC FinishedAt: 2026-08-13 21:06:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-13 18:04:27 +0000 UTC FinishedAt: 2026-08-13 21:06:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"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:*61bbc60f-85ce-4d96-aa61-92bb11a51447,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0b1582f3-04c4-46ce-abdd-c678cfd8bab1,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-workflowpp4h6/series-workflowpp4h6-build-action-3973318621/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-workflowpp4h6/series-workflowpp4h6-build-action-1423699578/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-13 18:04:27 +0000 UTC FinishedAt: 2026-08-13 18:04:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-13 18:04:27 +0000 UTC FinishedAt: 2026-08-13 18:04:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"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-workflowpp4h6/series-workflowpp4h6-convert-artifact-4137416091/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-13 18:04:27 +0000 UTC FinishedAt: 2026-08-13 18:04:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-13 18:04:27 +0000 UTC FinishedAt: 2026-08-13 18:04:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-13 18:04:27 +0000 UTC FinishedAt: 2026-08-13 18:04:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-13 18:04:37 +0000 UTC FinishedAt: 2026-08-13 21:06:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpp4h6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":[],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a275b5bfc9ee29b7eeef4ee6a635ac5461290df4","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"a91035ca-5eba-44f1-bfcd-abd8a73206ed","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-13 18:04:37 +0000 UTC FinishedAt: 2026-08-13 21:06:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*61bbc60f-85ce-4d96-aa61-92bb11a51447,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0b1582f3-04c4-46ce-abdd-c678cfd8bab1,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-workflowpp4h6/series-workflowpp4h6-build-action-3973318621/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-workflowpp4h6/series-workflowpp4h6-build-action-1423699578/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-workflowpp4h6/series-workflowpp4h6-convert-artifact-4137416091/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,}