Name: series-workflowrkxvz Phase: Succeeded StartedAt: 2026-07-14 08:48:11 +0000 UTC FinishedAt: 2026-07-14 13:47:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrkxvz[0] Phase: Succeeded StartedAt: 2026-07-14 08:48:11 +0000 UTC FinishedAt: 2026-07-14 09:25:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrkxvz[0].run-triage Phase: Succeeded StartedAt: 2026-07-14 08:48:11 +0000 UTC FinishedAt: 2026-07-14 09:25:00 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3b029c035b34bbc693405ddf759f0e9b920c27f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK", "BLK_DEV_ZONED" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3b029c035b34bbc693405ddf759f0e9b920c27f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK", "BLK_DEV_ZONED" ], "series_id": "72c8c07d-af71-4448-8dce-ed89eec4aa63" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "nullb_update_nr_hw_queues", "nullb_apply_submit_queues", "nullb_apply_poll_queues", "nullb_device_power_show", "nullb_device_power_store", "nullb_device_zone_readonly_store", "nullb_device_zone_offline_store", "null_del_dev", "null_free_dev" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE0IDA5OjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OywKICAgICYjMzQ7QkxLX0RFVl9aT05FRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc2hvdyYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsX2RlbF9kZXYmIzM0OywKICAgICYjMzQ7bnVsbF9mcmVlX2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnVsbF9ibGsgZHJpdmVyIHRvIHJlamVjdCByZXNpemluZyBoYXJkd2FyZSBxdWV1ZXMgd2hlbiBzaGFyZWRfdGFncyBpcyBlbmFibGVkLCBhZGRzIGxvY2tpbmcgdG8gY29uZmlnZnMgYXR0cmlidXRlIGFjY2Vzc29ycywgYW5kIGZpeGVzIHRoZSBpbml0aWFsaXphdGlvbi9jbGVhbnVwIG9yZGVyIG9mIHpvbmVkIGRldmljZXMgYW5kIHRoZSBtb2R1bGUgaXRzZWxmLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBibG9jayBkcml2ZXIgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwOToyMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGEzZmM0NzNmNDJhYTA2OGE1MjRjMjYyODA2MTQ1YWY4YjBmNmQ3ZGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAwOToyMzo0NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5pbmRleCBmOGMwZmQ1N2UwNDFhOC4uYzg0ODdhNjMwZTFhMDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbkBAIC02Niw3ICYjNDM7NjYsNyBAQCBzdHJ1Y3QgbnVsbGJfcGFnZSB7XG4gI2RlZmluZSBOVUxMQl9QQUdFX0ZSRUUgKE1BUF9TWiAtIDIpXG4gXG4gc3RhdGljIExJU1RfSEVBRChudWxsYl9saXN0KTtcbi1zdGF0aWMgc3RydWN0IG11dGV4IGxvY2s7XG4mIzQzO3N0YXRpYyBERUZJTkVfTVVURVgobG9jayk7XG4gc3RhdGljIGludCBudWxsX21ham9yO1xuIHN0YXRpYyBERUZJTkVfSURBKG51bGxiX2luZGV4ZXMpO1xuIHN0YXRpYyBzdHJ1Y3QgYmxrX21xX3RhZ19zZXQgdGFnX3NldDtcbkBAIC0zNDUsOCAmIzQzOzM0NSwxNCBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3N0b3JlKGJvb2wgKnZhbCwgY29uc3QgY2hhciAqcGFnZSxcbiBzdGF0aWMgc3NpemVfdFx0XHRcdFx0XHRcdFx0XHRcXFxuIG51bGxiX2RldmljZV8jI05BTUUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcdFxcXG4ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRyZXR1cm4gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc2hvdyhcdFx0XHRcdFxcXG4mIzQzO1x0c3NpemVfdCByZXQ7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRyZXQgPSBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zaG93KFx0XHRcdFx0XFxcbiBcdFx0XHRcdHRvX251bGxiX2RldmljZShpdGVtKS1cdTAwM2VOQU1FLCBwYWdlKTtcdFxcXG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0cmV0dXJuIHJldDtcdFx0XHRcdFx0XHRcdFxcXG4gfVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gc3RhdGljIHNzaXplX3RcdFx0XHRcdFx0XHRcdFx0XFxcbiBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjb25zdCBjaGFyICpwYWdlLFx0XFxcbkBAIC0zNjAsMTMgJiM0MzszNjYsMTcgQEAgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcdFxcXG4gXHRyZXQgPSBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zdG9yZShcdTAwMjZuZXdfdmFsdWUsIHBhZ2UsIGNvdW50KTtcXFxuIFx0aWYgKHJldCBcdTAwM2MgMClcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdHJldHVybiByZXQ7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRyZXQgPSAwO1x0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1x0XHRcdFx0XHRcdFxcXG4gXHRpZiAoYXBwbHlfZm4pXHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRyZXQgPSBhcHBseV9mbihkZXYsIG5ld192YWx1ZSk7XHRcdFx0XHRcXFxuIFx0ZWxzZSBpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncykpIFx0XFxcbiBcdFx0cmV0ID0gLUVCVVNZO1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0aWYgKCFyZXQpXHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0ZGV2LVx1MDAzZU5BTUUgPSBuZXdfdmFsdWU7XHRcdFx0XHRcdFxcXG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1x0XHRcdFx0XHRcdFxcXG4gXHRpZiAocmV0IFx1MDAzYyAwKVx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0cmV0dXJuIHJldDtcdFx0XHRcdFx0XHRcXFxuLVx0ZGV2LVx1MDAzZU5BTUUgPSBuZXdfdmFsdWU7XHRcdFx0XHRcdFx0XFxcbiBcdHJldHVybiBjb3VudDtcdFx0XHRcdFx0XHRcdFxcXG4gfVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gQ09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBOQU1FKTtcbkBAIC0zODIsNiAmIzQzOzM5MiwxNSBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0aWYgKCFkZXYtXHUwMDNlbnVsbGIpXG4gXHRcdHJldHVybiAwO1xuIFxuJiM0MztcdC8qXG4mIzQzO1x0ICogQSBzaGFyZWQgdGFnX3NldCBpcyBtYXBwZWQgdmlhIHRoZSBtb2R1bGUtd2lkZSBxdWV1ZSBjb3VudHMsIHNvIGFcbiYjNDM7XHQgKiBwZXItZGV2aWNlIHJlc2l6ZSBpcyBtZWFuaW5nbGVzcy4gT24gc2hyaW5rIGl0IHdvdWxkIGFsc28gbGVhdmVcbiYjNDM7XHQgKiBtcV9tYXBbXSBwb2ludGluZyBhdCBOVUxMZWQgaGN0eCBzbG90cywgY2F1c2luZyBhIE5VTEwgZGVyZWYgaW5cbiYjNDM7XHQgKiBibGtfbXFfbWFwX3N3cXVldWUoKS4gUmVqZWN0IGl0LlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChkZXYtXHUwMDNlc2hhcmVkX3RhZ3MpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4gXHQvKlxuIFx0ICogTWFrZSBzdXJlIGF0IGxlYXN0IG9uZSBzdWJtaXQgcXVldWUgZXhpc3RzLlxuIFx0ICovXG5AQCAtNDIxLDI1ICYjNDM7NDQwLDEzIEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4gc3RhdGljIGludCBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgICAgdW5zaWduZWQgaW50IHN1Ym1pdF9xdWV1ZXMpXG4ge1xuLVx0aW50IHJldDtcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4tXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LVx1MDAzZXBvbGxfcXVldWVzKTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbi1cbi1cdHJldHVybiByZXQ7XG4mIzQzO1x0cmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtXHUwMDNlcG9sbF9xdWV1ZXMpO1xuIH1cbiBcbiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3BvbGxfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgIHVuc2lnbmVkIGludCBwb2xsX3F1ZXVlcylcbiB7XG4tXHRpbnQgcmV0O1xuLVxuLVx0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbi1cdHJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuLVxuLVx0cmV0dXJuIHJldDtcbiYjNDM7XHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi1cdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XG4gfVxuIFxuIE5VTExCX0RFVklDRV9BVFRSKHNpemUsIHVsb25nLCBOVUxMKTtcbkBAIC00NzgsNyAmIzQzOzQ4NSwxMyBAQCBOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3NfcGFydGlhbF9pbywgYm9vbCwgTlVMTCk7XG4gXG4gc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxuIHtcbi1cdHJldHVybiBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3Nob3codG9fbnVsbGJfZGV2aWNlKGl0ZW0pLVx1MDAzZXBvd2VyLCBwYWdlKTtcbiYjNDM7XHRzc2l6ZV90IHJldDtcbiYjNDM7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbiYjNDM7XHRyZXQgPSBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3Nob3codG9fbnVsbGJfZGV2aWNlKGl0ZW0pLVx1MDAzZXBvd2VyLCBwYWdlKTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZXQ7XG4gfVxuIFxuIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG5AQCAtNTc5LDggJiM0Mzs1OTIsMTMgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuIFx0XHRcdFx0XHRcdGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcbiB7XG4gXHRzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYgPSB0b19udWxsYl9kZXZpY2UoaXRlbSk7XG4mIzQzO1x0c3NpemVfdCByZXQ7XG4mIzQzO1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4mIzQzO1x0cmV0ID0gem9uZV9jb25kX3N0b3JlKGRldiwgcGFnZSwgY291bnQsIEJMS19aT05FX0NPTkRfUkVBRE9OTFkpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbiBcbi1cdHJldHVybiB6b25lX2NvbmRfc3RvcmUoZGV2LCBwYWdlLCBjb3VudCwgQkxLX1pPTkVfQ09ORF9SRUFET05MWSk7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiB9XG4gQ09ORklHRlNfQVRUUl9XTyhudWxsYl9kZXZpY2VfLCB6b25lX3JlYWRvbmx5KTtcbiBcbkBAIC01ODgsOCAmIzQzOzYwNiwxMyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbiBcdFx0XHRcdFx0ICAgICAgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcbiB7XG4gXHRzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYgPSB0b19udWxsYl9kZXZpY2UoaXRlbSk7XG4mIzQzO1x0c3NpemVfdCByZXQ7XG4mIzQzO1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4mIzQzO1x0cmV0ID0gem9uZV9jb25kX3N0b3JlKGRldiwgcGFnZSwgY291bnQsIEJMS19aT05FX0NPTkRfT0ZGTElORSk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuIFxuLVx0cmV0dXJuIHpvbmVfY29uZF9zdG9yZShkZXYsIHBhZ2UsIGNvdW50LCBCTEtfWk9ORV9DT05EX09GRkxJTkUpO1xuJiM0MztcdHJldHVybiByZXQ7XG4gfVxuIENPTkZJR0ZTX0FUVFJfV08obnVsbGJfZGV2aWNlXywgem9uZV9vZmZsaW5lKTtcbiBcbkBAIC04MzYsNyAmIzQzOzg1OSw2IEBAIHN0YXRpYyB2b2lkIG51bGxfZnJlZV9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxuIFx0aWYgKCFkZXYpXG4gXHRcdHJldHVybjtcbiBcbi1cdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcbiBcdGJhZGJsb2Nrc19leGl0KFx1MDAyNmRldi1cdTAwM2ViYWRibG9ja3MpO1xuIFx0a2ZyZWUoZGV2KTtcbiB9XG5AQCAtMTc3MCwxOCAmIzQzOzE3OTIsMTkgQEAgc3RhdGljIHZvaWQgbnVsbF9kZWxfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXG4gXG4gXHRkZWxfZ2VuZGlzayhudWxsYi1cdTAwM2VkaXNrKTtcbiBcbi1cdGlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfVEhST1RUTEVELCBcdTAwMjZudWxsYi1cdTAwM2VkZXYtXHUwMDNlZmxhZ3MpKSB7XG4mIzQzO1x0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncykpIHtcbiBcdFx0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2bnVsbGItXHUwMDNlYndfdGltZXIpO1xuIFx0XHRhdG9taWNfbG9uZ19zZXQoXHUwMDI2bnVsbGItXHUwMDNlY3VyX2J5dGVzLCBMT05HX01BWCk7XG4gXHRcdGJsa19tcV9zdGFydF9zdG9wcGVkX2h3X3F1ZXVlcyhudWxsYi1cdTAwM2VxLCB0cnVlKTtcbiBcdH1cbiBcbiBcdHB1dF9kaXNrKG51bGxiLVx1MDAzZWRpc2spO1xuJiM0MztcdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcbiBcdGlmIChudWxsYi1cdTAwM2V0YWdfc2V0ID09IFx1MDAyNm51bGxiLVx1MDAzZV9fdGFnX3NldClcbiBcdFx0YmxrX21xX2ZyZWVfdGFnX3NldChudWxsYi1cdTAwM2V0YWdfc2V0KTtcbiBcdGtmcmVlKG51bGxiLVx1MDAzZXF1ZXVlcyk7XG4gXHRpZiAobnVsbF9jYWNoZV9hY3RpdmUobnVsbGIpKVxuLVx0XHRudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2UobnVsbGItXHUwMDNlZGV2LCB0cnVlKTtcbiYjNDM7XHRcdG51bGxfZnJlZV9kZXZpY2Vfc3RvcmFnZShkZXYsIHRydWUpO1xuIFx0a2ZyZWUobnVsbGIpO1xuIFx0ZGV2LVx1MDAzZW51bGxiID0gTlVMTDtcbiB9XG5AQCAtMjE2MiwxNyAmIzQzOzIxODUsOSBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcbiBcdGNvbmZpZ19ncm91cF9pbml0KFx1MDAyNm51bGxiX3N1YnN5cy5zdV9ncm91cCk7XG4gXHRtdXRleF9pbml0KFx1MDAyNm51bGxiX3N1YnN5cy5zdV9tdXRleCk7XG4gXG4tXHRyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2bnVsbGJfc3Vic3lzKTtcbi1cdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4tXG4tXHRtdXRleF9pbml0KFx1MDAyNmxvY2spO1xuLVxuIFx0bnVsbF9tYWpvciA9IHJlZ2lzdGVyX2Jsa2RldigwLCBcJiMzNDtudWxsYlwmIzM0Oyk7XG4tXHRpZiAobnVsbF9tYWpvciBcdTAwM2MgMCkge1xuLVx0XHRyZXQgPSBudWxsX21ham9yO1xuLVx0XHRnb3RvIGVycl9jb25mO1xuLVx0fVxuJiM0MztcdGlmIChudWxsX21ham9yIFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIG51bGxfbWFqb3I7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9kZXZpY2VzOyBpJiM0MzsmIzQzOykge1xuIFx0XHRyZXQgPSBudWxsX2NyZWF0ZV9kZXYoKTtcbkBAIC0yMTgwLDYgJiM0MzsyMTk1LDEwIEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxuIFx0XHRcdGdvdG8gZXJyX2RldjtcbiBcdH1cbiBcbiYjNDM7XHRyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2bnVsbGJfc3Vic3lzKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0Z290byBlcnJfZGV2O1xuJiM0MztcbiBcdHByX2luZm8oXCYjMzQ7bW9kdWxlIGxvYWRlZFxcblwmIzM0Oyk7XG4gXHRyZXR1cm4gMDtcbiBcbkBAIC0yMTg5LDggJiM0MzsyMjA4LDggQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXG4gXHRcdG51bGxfZGVzdHJveV9kZXYobnVsbGIpO1xuIFx0fVxuIFx0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXCYjMzQ7bnVsbGJcJiMzNDspO1xuLWVycl9jb25mOlxuLVx0Y29uZmlnZnNfdW5yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2bnVsbGJfc3Vic3lzKTtcbiYjNDM7XHRpZiAodGFnX3NldC5vcHMpXG4mIzQzO1x0XHRibGtfbXFfZnJlZV90YWdfc2V0KFx1MDAyNnRhZ19zZXQpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG5AQCAtMjIwMCw4ICYjNDM7MjIxOSw2IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZClcbiBcbiBcdGNvbmZpZ2ZzX3VucmVnaXN0ZXJfc3Vic3lzdGVtKFx1MDAyNm51bGxiX3N1YnN5cyk7XG4gXG4tXHR1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCBcJiMzNDtudWxsYlwmIzM0Oyk7XG4tXG4gXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuIFx0d2hpbGUgKCFsaXN0X2VtcHR5KFx1MDAyNm51bGxiX2xpc3QpKSB7XG4gXHRcdG51bGxiID0gbGlzdF9lbnRyeShudWxsYl9saXN0Lm5leHQsIHN0cnVjdCBudWxsYiwgbGlzdCk7XG5AQCAtMjIwOSw2ICYjNDM7MjIyNiw4IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZClcbiBcdH1cbiBcdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbiBcbiYjNDM7XHR1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCBcJiMzNDtudWxsYlwmIzM0Oyk7XG4mIzQzO1xuIFx0aWYgKHRhZ19zZXQub3BzKVxuIFx0XHRibGtfbXFfZnJlZV90YWdfc2V0KFx1MDAyNnRhZ19zZXQpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA5OjIzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OywKICAgICYjMzQ7QkxLX0RFVl9aT05FRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc2hvdyYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsX2RlbF9kZXYmIzM0OywKICAgICYjMzQ7bnVsbF9mcmVlX2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnVsbF9ibGsgZHJpdmVyIHRvIHJlamVjdCByZXNpemluZyBoYXJkd2FyZSBxdWV1ZXMgd2hlbiBzaGFyZWRfdGFncyBpcyBlbmFibGVkLCBhZGRzIGxvY2tpbmcgdG8gY29uZmlnZnMgYXR0cmlidXRlIGFjY2Vzc29ycywgYW5kIGZpeGVzIHRoZSBpbml0aWFsaXphdGlvbi9jbGVhbnVwIG9yZGVyIG9mIHpvbmVkIGRldmljZXMgYW5kIHRoZSBtb2R1bGUgaXRzZWxmLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBibG9jayBkcml2ZXIgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTNmYzQ3M2Y0MmFhMDY4YTUyNGMyNjI4MDYxNDVhZjhiMGY2ZDdkZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDE0IDA5OjIzOjQ0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYwppbmRleCBmOGMwZmQ1N2UwNDFhOC4uYzg0ODdhNjMwZTFhMDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jCkBAIC02Niw3ICYjNDM7NjYsNyBAQCBzdHJ1Y3QgbnVsbGJfcGFnZSB7CiAjZGVmaW5lIE5VTExCX1BBR0VfRlJFRSAoTUFQX1NaIC0gMikKIAogc3RhdGljIExJU1RfSEVBRChudWxsYl9saXN0KTsKLXN0YXRpYyBzdHJ1Y3QgbXV0ZXggbG9jazsKJiM0MztzdGF0aWMgREVGSU5FX01VVEVYKGxvY2spOwogc3RhdGljIGludCBudWxsX21ham9yOwogc3RhdGljIERFRklORV9JREEobnVsbGJfaW5kZXhlcyk7CiBzdGF0aWMgc3RydWN0IGJsa19tcV90YWdfc2V0IHRhZ19zZXQ7CkBAIC0zNDUsOCAmIzQzOzM0NSwxNCBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3N0b3JlKGJvb2wgKnZhbCwgY29uc3QgY2hhciAqcGFnZSwKIHN0YXRpYyBzc2l6ZV90CQkJCQkJCQlcCiBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNoYXIgKnBhZ2UpCVwKIHsJCQkJCQkJCQlcCi0JcmV0dXJuIG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3Nob3coCQkJCVwKJiM0MzsJc3NpemVfdCByZXQ7CQkJCQkJCVwKJiM0MzsJCQkJCQkJCQlcCiYjNDM7CW11dGV4X2xvY2soJmFtcDtsb2NrKTsJCQkJCQlcCiYjNDM7CXJldCA9IG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3Nob3coCQkJCVwKIAkJCQl0b19udWxsYl9kZXZpY2UoaXRlbSktJmd0O05BTUUsIHBhZ2UpOwlcCiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2xvY2spOwkJCQkJCVwKJiM0MzsJCQkJCQkJCQlcCiYjNDM7CXJldHVybiByZXQ7CQkJCQkJCVwKIH0JCQkJCQkJCQlcCiBzdGF0aWMgc3NpemVfdAkJCQkJCQkJXAogbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSwJXApAQCAtMzYwLDEzICYjNDM7MzY2LDE3IEBAIG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNvbnN0IGNoYXIgKnBhZ2UsCVwKIAlyZXQgPSBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zdG9yZSgmYW1wO25ld192YWx1ZSwgcGFnZSwgY291bnQpO1wKIAlpZiAocmV0ICZsdDsgMCkJCQkJCQkJXAogCQlyZXR1cm4gcmV0OwkJCQkJCVwKJiM0MzsJcmV0ID0gMDsJCQkJCQkJXAomIzQzOwltdXRleF9sb2NrKCZhbXA7bG9jayk7CQkJCQkJXAogCWlmIChhcHBseV9mbikJCQkJCQkJXAogCQlyZXQgPSBhcHBseV9mbihkZXYsIG5ld192YWx1ZSk7CQkJCVwKIAllbHNlIGlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgJmFtcDtkZXYtJmd0O2ZsYWdzKSkgCVwKIAkJcmV0ID0gLUVCVVNZOwkJCQkJCVwKJiM0MzsJaWYgKCFyZXQpCQkJCQkJCVwKJiM0MzsJCWRldi0mZ3Q7TkFNRSA9IG5ld192YWx1ZTsJCQkJCVwKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7bG9jayk7CQkJCQkJXAogCWlmIChyZXQgJmx0OyAwKQkJCQkJCQlcCiAJCXJldHVybiByZXQ7CQkJCQkJXAotCWRldi0mZ3Q7TkFNRSA9IG5ld192YWx1ZTsJCQkJCQlcCiAJcmV0dXJuIGNvdW50OwkJCQkJCQlcCiB9CQkJCQkJCQkJXAogQ09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBOQU1FKTsKQEAgLTM4Miw2ICYjNDM7MzkyLDE1IEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsCiAJaWYgKCFkZXYtJmd0O251bGxiKQogCQlyZXR1cm4gMDsKIAomIzQzOwkvKgomIzQzOwkgKiBBIHNoYXJlZCB0YWdfc2V0IGlzIG1hcHBlZCB2aWEgdGhlIG1vZHVsZS13aWRlIHF1ZXVlIGNvdW50cywgc28gYQomIzQzOwkgKiBwZXItZGV2aWNlIHJlc2l6ZSBpcyBtZWFuaW5nbGVzcy4gT24gc2hyaW5rIGl0IHdvdWxkIGFsc28gbGVhdmUKJiM0MzsJICogbXFfbWFwW10gcG9pbnRpbmcgYXQgTlVMTGVkIGhjdHggc2xvdHMsIGNhdXNpbmcgYSBOVUxMIGRlcmVmIGluCiYjNDM7CSAqIGJsa19tcV9tYXBfc3dxdWV1ZSgpLiBSZWplY3QgaXQuCiYjNDM7CSAqLwomIzQzOwlpZiAoZGV2LSZndDtzaGFyZWRfdGFncykKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwogCS8qCiAJICogTWFrZSBzdXJlIGF0IGxlYXN0IG9uZSBzdWJtaXQgcXVldWUgZXhpc3RzLgogCSAqLwpAQCAtNDIxLDI1ICYjNDM7NDQwLDEzIEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsCiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LAogCQkJCSAgICAgdW5zaWduZWQgaW50IHN1Ym1pdF9xdWV1ZXMpCiB7Ci0JaW50IHJldDsKLQotCW11dGV4X2xvY2soJmFtcDtsb2NrKTsKLQlyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LSZndDtwb2xsX3F1ZXVlcyk7Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7bG9jayk7Ci0KLQlyZXR1cm4gcmV0OwomIzQzOwlyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi0mZ3Q7cG9sbF9xdWV1ZXMpOwogfQogCiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3BvbGxfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiwKIAkJCQkgICB1bnNpZ25lZCBpbnQgcG9sbF9xdWV1ZXMpCiB7Ci0JaW50IHJldDsKLQotCW11dGV4X2xvY2soJmFtcDtsb2NrKTsKLQlyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LSZndDtzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7bG9jayk7Ci0KLQlyZXR1cm4gcmV0OwomIzQzOwlyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi0mZ3Q7c3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpOwogfQogCiBOVUxMQl9ERVZJQ0VfQVRUUihzaXplLCB1bG9uZywgTlVMTCk7CkBAIC00NzgsNyAmIzQzOzQ4NSwxMyBAQCBOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3NfcGFydGlhbF9pbywgYm9vbCwgTlVMTCk7CiAKIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSkKIHsKLQlyZXR1cm4gbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zaG93KHRvX251bGxiX2RldmljZShpdGVtKS0mZ3Q7cG93ZXIsIHBhZ2UpOwomIzQzOwlzc2l6ZV90IHJldDsKJiM0MzsKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2xvY2spOwomIzQzOwlyZXQgPSBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3Nob3codG9fbnVsbGJfZGV2aWNlKGl0ZW0pLSZndDtwb3dlciwgcGFnZSk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2xvY2spOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLApAQCAtNTc5LDggJiM0Mzs1OTIsMTMgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLAogCQkJCQkJY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGNvdW50KQogewogCXN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiA9IHRvX251bGxiX2RldmljZShpdGVtKTsKJiM0MzsJc3NpemVfdCByZXQ7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtsb2NrKTsKJiM0MzsJcmV0ID0gem9uZV9jb25kX3N0b3JlKGRldiwgcGFnZSwgY291bnQsIEJMS19aT05FX0NPTkRfUkVBRE9OTFkpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtsb2NrKTsKIAotCXJldHVybiB6b25lX2NvbmRfc3RvcmUoZGV2LCBwYWdlLCBjb3VudCwgQkxLX1pPTkVfQ09ORF9SRUFET05MWSk7CiYjNDM7CXJldHVybiByZXQ7CiB9CiBDT05GSUdGU19BVFRSX1dPKG51bGxiX2RldmljZV8sIHpvbmVfcmVhZG9ubHkpOwogCkBAIC01ODgsOCAmIzQzOzYwNiwxMyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwKIAkJCQkJICAgICAgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudCkKIHsKIAlzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYgPSB0b19udWxsYl9kZXZpY2UoaXRlbSk7CiYjNDM7CXNzaXplX3QgcmV0OwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7bG9jayk7CiYjNDM7CXJldCA9IHpvbmVfY29uZF9zdG9yZShkZXYsIHBhZ2UsIGNvdW50LCBCTEtfWk9ORV9DT05EX09GRkxJTkUpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtsb2NrKTsKIAotCXJldHVybiB6b25lX2NvbmRfc3RvcmUoZGV2LCBwYWdlLCBjb3VudCwgQkxLX1pPTkVfQ09ORF9PRkZMSU5FKTsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIENPTkZJR0ZTX0FUVFJfV08obnVsbGJfZGV2aWNlXywgem9uZV9vZmZsaW5lKTsKIApAQCAtODM2LDcgJiM0Mzs4NTksNiBAQCBzdGF0aWMgdm9pZCBudWxsX2ZyZWVfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldikKIAlpZiAoIWRldikKIAkJcmV0dXJuOwogCi0JbnVsbF9mcmVlX3pvbmVkX2RldihkZXYpOwogCWJhZGJsb2Nrc19leGl0KCZhbXA7ZGV2LSZndDtiYWRibG9ja3MpOwogCWtmcmVlKGRldik7CiB9CkBAIC0xNzcwLDE4ICYjNDM7MTc5MiwxOSBAQCBzdGF0aWMgdm9pZCBudWxsX2RlbF9kZXYoc3RydWN0IG51bGxiICpudWxsYikKIAogCWRlbF9nZW5kaXNrKG51bGxiLSZndDtkaXNrKTsKIAotCWlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfVEhST1RUTEVELCAmYW1wO251bGxiLSZndDtkZXYtJmd0O2ZsYWdzKSkgewomIzQzOwlpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX1RIUk9UVExFRCwgJmFtcDtkZXYtJmd0O2ZsYWdzKSkgewogCQlocnRpbWVyX2NhbmNlbCgmYW1wO251bGxiLSZndDtid190aW1lcik7CiAJCWF0b21pY19sb25nX3NldCgmYW1wO251bGxiLSZndDtjdXJfYnl0ZXMsIExPTkdfTUFYKTsKIAkJYmxrX21xX3N0YXJ0X3N0b3BwZWRfaHdfcXVldWVzKG51bGxiLSZndDtxLCB0cnVlKTsKIAl9CiAKIAlwdXRfZGlzayhudWxsYi0mZ3Q7ZGlzayk7CiYjNDM7CW51bGxfZnJlZV96b25lZF9kZXYoZGV2KTsKIAlpZiAobnVsbGItJmd0O3RhZ19zZXQgPT0gJmFtcDtudWxsYi0mZ3Q7X190YWdfc2V0KQogCQlibGtfbXFfZnJlZV90YWdfc2V0KG51bGxiLSZndDt0YWdfc2V0KTsKIAlrZnJlZShudWxsYi0mZ3Q7cXVldWVzKTsKIAlpZiAobnVsbF9jYWNoZV9hY3RpdmUobnVsbGIpKQotCQludWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2UobnVsbGItJmd0O2RldiwgdHJ1ZSk7CiYjNDM7CQludWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2UoZGV2LCB0cnVlKTsKIAlrZnJlZShudWxsYik7CiAJZGV2LSZndDtudWxsYiA9IE5VTEw7CiB9CkBAIC0yMTYyLDE3ICYjNDM7MjE4NSw5IEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKQogCWNvbmZpZ19ncm91cF9pbml0KCZhbXA7bnVsbGJfc3Vic3lzLnN1X2dyb3VwKTsKIAltdXRleF9pbml0KCZhbXA7bnVsbGJfc3Vic3lzLnN1X211dGV4KTsKIAotCXJldCA9IGNvbmZpZ2ZzX3JlZ2lzdGVyX3N1YnN5c3RlbSgmYW1wO251bGxiX3N1YnN5cyk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCW11dGV4X2luaXQoJmFtcDtsb2NrKTsKLQogCW51bGxfbWFqb3IgPSByZWdpc3Rlcl9ibGtkZXYoMCwgJiMzNDtudWxsYiYjMzQ7KTsKLQlpZiAobnVsbF9tYWpvciAmbHQ7IDApIHsKLQkJcmV0ID0gbnVsbF9tYWpvcjsKLQkJZ290byBlcnJfY29uZjsKLQl9CiYjNDM7CWlmIChudWxsX21ham9yICZsdDsgMCkKJiM0MzsJCXJldHVybiBudWxsX21ham9yOwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IG5yX2RldmljZXM7IGkmIzQzOyYjNDM7KSB7CiAJCXJldCA9IG51bGxfY3JlYXRlX2RldigpOwpAQCAtMjE4MCw2ICYjNDM7MjE5NSwxMCBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZCkKIAkJCWdvdG8gZXJyX2RldjsKIAl9CiAKJiM0MzsJcmV0ID0gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKCZhbXA7bnVsbGJfc3Vic3lzKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCWdvdG8gZXJyX2RldjsKJiM0MzsKIAlwcl9pbmZvKCYjMzQ7bW9kdWxlIGxvYWRlZFxuJiMzNDspOwogCXJldHVybiAwOwogCkBAIC0yMTg5LDggJiM0MzsyMjA4LDggQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpCiAJCW51bGxfZGVzdHJveV9kZXYobnVsbGIpOwogCX0KIAl1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCAmIzM0O251bGxiJiMzNDspOwotZXJyX2NvbmY6Ci0JY29uZmlnZnNfdW5yZWdpc3Rlcl9zdWJzeXN0ZW0oJmFtcDtudWxsYl9zdWJzeXMpOwomIzQzOwlpZiAodGFnX3NldC5vcHMpCiYjNDM7CQlibGtfbXFfZnJlZV90YWdfc2V0KCZhbXA7dGFnX3NldCk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMjIwMCw4ICYjNDM7MjIxOSw2IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZCkKIAogCWNvbmZpZ2ZzX3VucmVnaXN0ZXJfc3Vic3lzdGVtKCZhbXA7bnVsbGJfc3Vic3lzKTsKIAotCXVucmVnaXN0ZXJfYmxrZGV2KG51bGxfbWFqb3IsICYjMzQ7bnVsbGImIzM0Oyk7Ci0KIAltdXRleF9sb2NrKCZhbXA7bG9jayk7CiAJd2hpbGUgKCFsaXN0X2VtcHR5KCZhbXA7bnVsbGJfbGlzdCkpIHsKIAkJbnVsbGIgPSBsaXN0X2VudHJ5KG51bGxiX2xpc3QubmV4dCwgc3RydWN0IG51bGxiLCBsaXN0KTsKQEAgLTIyMDksNiAmIzQzOzIyMjYsOCBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbnVsbF9leGl0KHZvaWQpCiAJfQogCW11dGV4X3VubG9jaygmYW1wO2xvY2spOwogCiYjNDM7CXVucmVnaXN0ZXJfYmxrZGV2KG51bGxfbWFqb3IsICYjMzQ7bnVsbGImIzM0Oyk7CiYjNDM7CiAJaWYgKHRhZ19zZXQub3BzKQogCQlibGtfbXFfZnJlZV90YWdfc2V0KCZhbXA7dGFnX3NldCk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDk6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM5OAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDI5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCB0byB0aGUgYG51bGxfYmxrYCBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgYmVlbiBhcHBsaWVkIHRvIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY2AuIEl0JiMzOTtzIGRlZmluaXRlbHkgbWFraW5nIHNvbWUgZnVuY3Rpb25hbCBjaGFuZ2VzLiBJIHNlZSB0aGV5JiMzOTt2ZSBhZGRlZCBhIGNoZWNrIGluIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCB3aGljaCBzZWVtcyB0byByZWplY3QgcmVzaXppbmcgaWYgYGRldi0mZ3Q7c2hhcmVkX3RhZ3NgIGlzIHRydWUuIEludGVyZXN0aW5nLiBUaGVyZSBhcmUgYWxzbyBjaGFuZ2VzIHRvIHRoZSBsb2NraW5nIHdpdGhpbiB0aGUgc3lzZnMgYW5kIGNvbmZpZ2ZzIHN0b3JlL3Nob3cgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gZGV2aWNlIG1hbmFnZW1lbnQuIExvb2tzIGxpa2UgdGhleSYjMzk7dmUgbW92ZWQgYG51bGxfZnJlZV96b25lZF9kZXYoZGV2KWAgYW5kIG1vZGlmaWVkIGluaXRpYWxpemF0aW9uIGFuZCBleGl0IG9yZGVyIGluIGBudWxsX2luaXRgIGFuZCBgbnVsbF9leGl0YC4KCkZ1bmN0aW9uYWxseSwgdGhlc2UgYXJlIGFsbCBjaGFuZ2VzIHRvIHRoZSBgbnVsbF9ibGtgIGRyaXZlciB3aXRoaW4gdGhlIGJsb2NrIHN1YnN5c3RlbS4gVGhpcyBkcml2ZXIgaXMsIGFzIEkgcmVjYWxsLCBhIHNvZnR3YXJlIGJsb2NrIGRldmljZSB1c2VkIHByaW1hcmlseSBmb3IgdGVzdGluZyBhbmQgYmVuY2htYXJraW5nLCBhbmQgSSBrbm93IGl0JiMzOTtzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHdoaWNoIG1ha2VzIGl0IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEdpdmVuIHRoZSBmdW5jdGlvbmFsIGNoYW5nZXMgYW5kIHRoZSBkcml2ZXImIzM5O3MgbmF0dXJlLCBJJiMzOTttIGNvbmZpZGVudCBpbiB0YWdnaW5nIHRoaXMgd2l0aCBgV29ydGhGdXp6aW5nPXRydWVgLgoKTm93LCB0aGUgbmV4dCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBuZWVkZWQgdG8gZW5hYmxlIHRoaXMgZHJpdmVyLiBJJiMzOTtsbCB1c2UgYGdyZXBwZXJgIG9yIGEgc2ltaWxhciB0b29sIHRvIHF1aWNrbHkgc2VhcmNoIHRoZSBgZHJpdmVycy9ibG9jay9LY29uZmlnYCBmaWxlIG9yIG90aGVyIHJlbGV2YW50IEtjb25maWcgZmlsZXMgZm9yICYjMzQ7bnVsbF9ibGsmIzM0Oy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY29uZmlndXJhdGlvbiBzeW1ib2wocykgSSBuZWVkIHRvIHJlcHJvZHVjZSBhbmQgdGVzdCB0aGlzIHdpdGggbXkgZnV6emluZyBzZXR1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwOToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudWxsX2JsayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWc9MTc9aWYgQkxLX0RFVlxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE4LVxuZHJpdmVycy9ibG9jay9LY29uZmlnOjE5OnNvdXJjZSBcJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yMC1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9ibG9jay9ybnVsbC9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDk6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTEzNAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIG9mIHRoZSB0aG91Z2h0IHByb2Nlc3MgZGVzY3JpYmVkOgoKKipFeGFtaW5pbmcgdGhlIE51bGwgQmxvY2sgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIG51bGwgYmxvY2sgZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSByaWdodCBpbnRvIHRoZSBoZWFydCBvZiB0aGluZ3M6IGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIGFsbCB0aGUgYGNvbmZpZ2Agb3B0aW9ucyBzaG91bGQgcmVzaWRlLCBkZWZpbmluZyB3aGF0IGZlYXR1cmVzIG9mIHRoaXMgZHJpdmVyIGFyZSBlbmFibGVkLCBkaXNhYmxlZCwgb3IgY29uZmlndXJhYmxlIGJ5IHRoZSB1c2VyIGF0IGJ1aWxkIHRpbWUuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIHN0YW5kYXJkIHN0dWZmIGhlcmU6IHRoaW5ncyBsaWtlIHRoZSBudW1iZXIgb2YgZGV2aWNlcyBpdCBjYW4gZW11bGF0ZSwgYW55IHNwZWNpZmljIGVtdWxhdGlvbiBjaGFyYWN0ZXJpc3RpY3MsIG1heWJlIGV2ZW4gb3B0aW9ucyByZWxhdGVkIHRvIGVycm9yIGluamVjdGlvbiBvciB0ZXN0aW5nIGNhcGFiaWxpdGllcywgaWYgaXQgaGFzIGFueS4gTGV0JiMzOTtzIGdldCByaWdodCB0byBpdC4gSSB3YW50IHRvIHNlZSBob3cgZ3JhbnVsYXIgdGhlIGNvbnRyb2wgaXMuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCBzaW5jZSB0aGlzIGlzIGEgJiMzNDtudWxsJiMzNDsgZHJpdmVyLCBtb3N0IG9mIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2lsbCBiZSBzdHJhaWdodGZvcndhcmQsIGJ1dCB5b3UgbmV2ZXIga25vdy4gSXQgY291bGQgaGF2ZSBzdXJwcmlzaW5nIGVkZ2UgY2FzZXMgb3IgY29tcGxleGl0aWVzIHRoYXQgYXJlIG9ubHkgZXZpZGVudCB3aGVuIGxvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb24gY2hvaWNlcyB0aGVtc2VsdmVzLiBUaGUgS2NvbmZpZyBmaWxlIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBsYXkgb2YgdGhlIGxhbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDk6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIE51bGwgYmxvY2sgZGV2aWNlIGRyaXZlciBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBCTEtfREVWX05VTExfQkxLXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXCYjMzQ7XG4gICA4Olx0XHRzZWxlY3QgQ09ORklHRlNfRlNcbiAgIDk6XHRcbiAgMTA6XHRjb25maWcgQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbiAgMTE6XHRcdGJvb2wgXCYjMzQ7U3VwcG9ydCBmYXVsdCBpbmplY3Rpb24gZm9yIE51bGwgdGVzdCBibG9jayBkcml2ZXJcJiMzNDtcbiAgMTI6XHRcdGRlcGVuZHMgb24gQkxLX0RFVl9OVUxMX0JMSyBcdTAwMjZcdTAwMjYgRkFVTFRfSU5KRUNUSU9OX0NPTkZJR0ZTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDk6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU3OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBab25lZCBEZXZpY2UgSW50ZXJhY3Rpb25zIHdpdGggYEJMS19ERVZfTlVMTF9CTEtgKioKClJpZ2h0LCBzbyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUgaXMgYEJMS19ERVZfTlVMTF9CTEtgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyB0aWVzIGluIHdpdGggdGhlIGJyb2FkZXIgc3lzdGVtLiBJIHNlZSB0aGF0IHRoZSBwYXRjaCBzZWVtcyB0byBiZSByZWFjaGluZyBpbnRvIHpvbmVkIGRldmljZSBmdW5jdGlvbmFsaXRpZXMsIHNwZWNpZmljYWxseSBgem9uZV9jb25kX3N0b3JlYCBhbmQgYG51bGxfZnJlZV96b25lZF9kZXZgLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGF0IHJhaXNlcyBhIGZsYWcuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBibG9jayBkZXZpY2UsIGFuZCB6b25lZCBkZXZpY2VzIGhhdmUgdGhlaXIgdW5pcXVlIGNoYXJhY3RlcmlzdGljcy4gSXTigJlzIGltcG9ydGFudCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IHNwZWNpYWxpemVkIGNvbmZpZ3VyYXRpb24gdGhhdCBpbnRlcmFjdHMgd2l0aCB0aGUgem9uZWQgYXNwZWN0cyB3aXRoaW4gdGhlIG51bGwgYmxvY2sgZGV2aWNlIGNvbnRleHQuIE15IG5leHQgc3RlcCBpcyB0byBkZXRlcm1pbmUgaWYgYW55IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgc3BlY2lmaWMgdG8gdGhpcyBpbnRlcnNlY3Rpb24gb2YgYSBudWxsIGJsb2NrIGRldmljZSBhbmQgYSB6b25lZCBjb25maWd1cmF0aW9uLiBJcyB0aGVyZSBhbnkgd2F5IHRoYXQgbnVsbCBibG9jayBkZXZpY2UgZmVhdHVyZXMgY2FuIGludGVyYWN0IHdpdGggem9uZWQgY29uZmlndXJhdGlvbnM/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDk6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnVsbF9mcmVlX3pvbmVkX2RldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTc4MD1zdGF0aWMgdm9pZCBudWxsX2RlbF9kZXYoc3RydWN0IG51bGxiICpudWxsYilcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xODAxLVx0cHV0X2Rpc2sobnVsbGItXHUwMDNlZGlzayk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxODAyOlx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTgwMy1cdGlmIChudWxsYi1cdTAwM2V0YWdfc2V0ID09IFx1MDAyNm51bGxiLVx1MDAzZV9fdGFnX3NldClcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xOTc4PXN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDg5LW91dF9jbGVhbnVwX3pvbmU6XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMDkwOlx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA5MS1vdXRfY2xlYW51cF90YWdzOlxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaD0xNDM9aW50IG51bGxfcmVnaXN0ZXJfem9uZWRfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oOjE0NDp2b2lkIG51bGxfZnJlZV96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC0xNDUtaW50IG51bGxfcmVwb3J0X3pvbmVzKHN0cnVjdCBnZW5kaXNrICpkaXNrLCBzZWN0b3JfdCBzZWN0b3IsXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oPTE2MT1zdGF0aWMgaW5saW5lIGludCBudWxsX3JlZ2lzdGVyX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC0xNjQtfVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oOjE2NTpzdGF0aWMgaW5saW5lIHZvaWQgbnVsbF9mcmVlX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpIHt9XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmgtMTY2LXN0YXRpYyBpbmxpbmUgYmxrX3N0YXR1c190IG51bGxfcHJvY2Vzc196b25lZF9jbWQoc3RydWN0IG51bGxiX2NtZCAqY21kLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYz0xNzU9aW50IG51bGxfcmVnaXN0ZXJfem9uZWRfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jLTE4Ni1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYzoxODc6dm9pZCBudWxsX2ZyZWVfem9uZWRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYy0xODgte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA5OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0NjYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgQnVpbGQgUHJvY2VzcyBmb3IgWm9uZWQgQmxvY2sgRGV2aWNlcyoqCgpBbHJpZ2h0LCBJJiMzOTttIHRoaW5raW5nIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgem9uZWQuY2Agd2l0aGluIHRoZSBudWxsIGJsb2NrIGRyaXZlciBpcyBnZXR0aW5nIGNvbXBpbGVkLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gd29uZGVyaW5nIGFib3V0IHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGFuZCBkZXBlbmRlbmNpZXMuIE15IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvTWFrZWZpbGVgLiBUaGF0JiMzOTtzIGFsbW9zdCBhbHdheXMgdGhlIGZpcnN0IHBsYWNlIHRvIGxvb2sgd2hlbiB0cnlpbmcgdG8gdW50YW5nbGUgYnVpbGQgcHJvY2Vzc2VzIHdpdGhpbiB0aGUga2VybmVsLiBUaGUgTWFrZWZpbGUgc2hvdWxkIHNoZWQgbGlnaHQgb24gYW55IHNwZWNpZmljIGZsYWdzLCBpbmNsdWRlIGRpcmVjdG9yaWVzLCBvciBsaWJyYXJ5IGRlcGVuZGVuY2llcyB0aGF0IGFyZSBiZWluZyB1c2VkIGR1cmluZyB0aGUgY29tcGlsYXRpb24gb2YgYHpvbmVkLmNgLiBJJiMzOTttIGhvcGluZyBpdCYjMzk7bGwgcmV2ZWFsIGhvdyB0aGUgem9uZWQgYmxvY2sgZnVuY3Rpb25hbGl0eSBpcyBpbnRlZ3JhdGVkLCB3aGV0aGVyIGl0JiMzOTtzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgb3IgcGFydCBvZiB0aGUgc3RhbmRhcmQgbnVsbCBibG9jayBkcml2ZXIgYnVpbGQsIGFuZCBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgcmVxdWlyZWQgZm9yIGVuYWJsaW5nIHpvbmVkIG1vZGUuIFRoZSBNYWtlZmlsZSBzaG91bGQgYWxzbyBvdXRsaW5lIHRoZSBvYmplY3QgZmlsZXMgYW5kIGxpYnJhcnkgbGlua2FnZXMsIGdpdmluZyBtZSB0aGUgY3J1Y2lhbCBjb21waWxlIGFuZCBsaW5rIGZsYWdzIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA5OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHRcbiAgIDM6XHQjIG5lZWRlZCBmb3IgdHJhY2UgZXZlbnRzXG4gICA0Olx0Y2NmbGFncy15XHRcdFx0JiM0Mzs9IC1JJChzcmMpXG4gICA1Olx0XG4gICA2Olx0b2JqLSQoQ09ORklHX0JMS19ERVZfTlVMTF9CTEspXHQmIzQzOz0gbnVsbF9ibGsub1xuICAgNzpcdG51bGxfYmxrLW9ianNcdFx0XHQ6PSBtYWluLm9cbiAgIDg6XHRpZmVxICgkKENPTkZJR19CTEtfREVWX1pPTkVEKSwgeSlcbiAgIDk6XHRudWxsX2Jsay0kKENPTkZJR19UUkFDSU5HKSBcdCYjNDM7PSB0cmFjZS5vXG4gIDEwOlx0ZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDk6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg5MwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRob3NlIGxpbmVzOgoKKipBbmFseXppbmcgdGhlIE1ha2VmaWxlIGZvciBudWxsX2JsayoqCgpPa2F5LCBob2xkIG9uLiBCZWZvcmUgSSBqdW1wIHRvIGNvbmNsdXNpb25zIG9yIHN0YXJ0IG1vZGlmeWluZyBhbnl0aGluZywgSSBuZWVkIHRvIGdldCBhIGJldHRlciBncmFzcCBvZiB0aGUgYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvTWFrZWZpbGVgLiBJIGNhbiYjMzk7dCBqdXN0IGFzc3VtZSBJIHVuZGVyc3RhbmQgdGhlIGJ1aWxkIHByb2Nlc3MgZnJvbSB0aGUgdG9wIGxldmVsOyBJIG5lZWQgdG8gbG9vayBhdCB0aGUgc3BlY2lmaWNzIG9mICp0aGlzKiBwYXJ0aWN1bGFyIG1vZHVsZS4gV2hhdCBhcmUgdGhlIGRlcGVuZGVuY2llcz8gQXJlIHRoZXJlIGFueSBwZWN1bGlhciBidWlsZCBmbGFncyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gQXJlIHRoZXJlIGNvbmRpdGlvbmFsIGluY2x1c2lvbnMgYmFzZWQgb24ga2VybmVsIGNvbmZpZ3VyYXRpb24/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIG1vZHVsZSBmaXRzIGludG8gdGhlIGxhcmdlciBibG9jayBkZXZpY2UgZWNvc3lzdGVtIGJlZm9yZSBJIGV2ZW4gdGhpbmsgYWJvdXQgbWFraW5nIGNoYW5nZXMgb3IgYWRkaXRpb25zLiBBIGN1cnNvcnkgZ2xhbmNlIHdvbiYjMzk7dCBjdXQgaXQuIFRpbWUgdG8gZGlnIGludG8gdGhlIGRldGFpbHMgYW5kIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIGFueSBjcml0aWNhbCBjb250ZXh0LiBHb3R0YSBleGFtaW5lIHRob3NlIGxpbmVzIHRob3JvdWdobHkgdG8gdW5kZXJzdGFuZCB0aGUgbnVhbmNlcyBvZiBpdHMgY29tcGlsYXRpb24gYW5kIGxpbmtpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA5OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHRcbiAgIDM6XHQjIG5lZWRlZCBmb3IgdHJhY2UgZXZlbnRzXG4gICA0Olx0Y2NmbGFncy15XHRcdFx0JiM0Mzs9IC1JJChzcmMpXG4gICA1Olx0XG4gICA2Olx0b2JqLSQoQ09ORklHX0JMS19ERVZfTlVMTF9CTEspXHQmIzQzOz0gbnVsbF9ibGsub1xuICAgNzpcdG51bGxfYmxrLW9ianNcdFx0XHQ6PSBtYWluLm9cbiAgIDg6XHRpZmVxICgkKENPTkZJR19CTEtfREVWX1pPTkVEKSwgeSlcbiAgIDk6XHRudWxsX2Jsay0kKENPTkZJR19UUkFDSU5HKSBcdCYjNDM7PSB0cmFjZS5vXG4gIDEwOlx0ZW5kaWZcbiAgMTE6XHRudWxsX2Jsay0kKENPTkZJR19CTEtfREVWX1pPTkVEKSAmIzQzOz0gem9uZWQub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwOToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzExCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgWm9uZWQgQmxvY2sgRGV2aWNlIFN1cHBvcnQgUGF0Y2gqKgoKT2theSwgc28gSSBzZWUgdGhpcyBwYXRjaCBpcyByZWxhdGVkIHRvIHpvbmVkIGJsb2NrIGRldmljZSBzdXBwb3J0LCBhbmQgdGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gbm90aW5nIGlzIHRoYXQgYENPTkZJR19CTEtfREVWX1pPTkVEYCBpcyBhIHByZXJlcXVpc2l0ZSwgd2hpY2ggaXMgZXhwZWN0ZWQuIE5vdywgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY2hhbmdlcy4KCkkmIzM5O3ZlIGdvdCBhIGxpc3Qgb2YgdGhlIHVwZGF0ZWQgZnVuY3Rpb25zIGhlcmUuIExvb2tzIGxpa2UgdGhlcmUgYXJlIHNvbWUgbWFjcm8tZ2VuZXJhdGVkIGZ1bmN0aW9ucywgbGlrZSBgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZWAsIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc2hvd2AsIGFuZCBgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlYC4gVGhvc2UgbWFjcm8tZ2VuZXJhdGVkIG9uZXMgY291bGQgYmUgaW50ZXJlc3RpbmcsIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGBOQU1FYCByZXByZXNlbnRzIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBhY3R1YWxseSBiZWluZyBtb2RpZmllZC4gQmVzaWRlcyB0aGUgbWFjcm9zLCB0aGVyZSBhcmUgZnVuY3Rpb25zIHRoYXQgbG9vayBsaWtlIHRoZXkgaGFuZGxlIHF1ZXVlIG1hbmFnZW1lbnQ6IGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCwgYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgLCBhbmQgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYC4gSSBzaG91bGQgZ2l2ZSB0aGVzZSBmdW5jdGlvbnMgY2xvc2VyIGNvbnNpZGVyYXRpb24uIFRoZXJlIGFyZSBhbHNvIHNvbWUgcG93ZXIgYW5kIHpvbmUgY29udHJvbCBmdW5jdGlvbnM6IGBudWxsYl9kZXZpY2VfcG93ZXJfc2hvd2AsIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLCBgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmVgLCBhbmQgYG51bGxiX2RldmljZV96b25lX29mZmxpbmVfc3RvcmVgLiBGaW5hbGx5LCB0aGVyZSBhcmUgYSBmZXcgZGV2aWNlIGxpZmVjeWNsZSBmdW5jdGlvbnM6IGBudWxsX2ZyZWVfZGV2YCwgYG51bGxfZGVsX2RldmAsIGBudWxsX2luaXRgLCBhbmQgYG51bGxfZXhpdGAuCgpJJiMzOTttIG1ha2luZyBhIG1lbnRhbCBub3RlIHRoYXQgYG51bGxfaW5pdGAgYW5kIGBudWxsX2V4aXRgIGFyZSBtb2R1bGUgaW5pdC9leGl0IGZ1bmN0aW9ucy4gV2hpbGUgdGhleSYjMzk7cmUgbW9kaWZpZWQsIHRoZXkmIzM5O3JlIG5vdCBuZWNlc3NhcmlseSB0aGUgYmVzdCBjYW5kaWRhdGVzIGZvciBmb2N1c2luZyBmdXp6aW5nIGVmZm9ydHMsIGJ1dCB0aGV5JiMzOTtyZSBzdGlsbCB3b3J0aCBrbm93aW5nIGFib3V0LiBMZXQmIzM5O3Mgc2VlLCB3aGF0IGlzIGBOQU1FYCBiZWluZyB1c2VkIGZvciBpbiB0aGUgbWFjcm8tZ2VuZXJhdGVkIGZ1bmN0aW9ucz8gS25vd2luZyB0aGlzIHdpbGwgaGVscCBnaXZlIG1lIGEgY2xlYXJlciBwaWN0dXJlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwOToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdGU19BVFRSXFwobnVsbGJfZGV2aWNlXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTM1OD1udWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjb25zdCBjaGFyICpwYWdlLFx0XFxcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zODEtfVx0XHRcdFx0XHRcdFx0XHRcdFxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozODI6Q09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBOQU1FKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTM4My1cbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00OTc9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MzUtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1MzY6Q09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBwb3dlcik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MzctXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NTQ1PXN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9iYWRibG9ja3Nfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTU4OC19XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1ODk6Q09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBiYWRibG9ja3MpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTkwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwOToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTE3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipDb25maWdmcyBBdHRyaWJ1dGUgR2VuZXJhdGlvbjogQSBGYW1pbGlhciBQYXR0ZXJuKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEkmIzM5O20gc2VlaW5nIGEgbG90IG9mIHRoZXNlIGNvbmZpZ2ZzIGF0dHJpYnV0ZXMgcG9wcGluZyB1cC4gSXQmIzM5O3MgYWxtb3N0Li4uIHByZWRpY3RhYmxlLiBJbW1lZGlhdGVseSwgbXkgbWluZCBqdW1wcyB0byB0aGUgbWVjaGFuaWNzIG9mIHRoZWlyIGNyZWF0aW9uLiBBbmQgc3VyZSBlbm91Z2gsIHRoYXQgbWFjcm8gYE5VTExCX0RFVklDRV9BVFRSYCBpcyB0aGUga2V5LiBJdCYjMzk7cyBhIGNsYXNzaWM6IGEgY29kZSBnZW5lcmF0aW9uIHRvb2wuIEkgY2FuIHByYWN0aWNhbGx5ICpzZWUqIHRoZSBwYXR0ZXJuIGl0IGVzdGFibGlzaGVzIOKAkyBhIHN0cnVjdHVyZWQgd2F5IHRvIGRlZmluZSBhbmQgaW5qZWN0IHRoZSBkZXNpcmVkIGF0dHJpYnV0ZXMgaW50byB0aGUgY29uZmlnZnMgc3lzdGVtLiBLbm93aW5nIHRoZSBtYWNybyBpcyBrZXksIGJlY2F1c2UgaXQgZ2l2ZXMgdGhlIGhhbmRsZSBieSB3aGljaCBJIGNhbiB1bmRlcnN0YW5kIHRoZSBuYXR1cmUgb2YgdGhlIGF0dHJpYnV0ZXMgYW5kIHRoZWlyIGZ1bmN0aW9uYWxpdHkuIFRoaXMgbGlrZWx5IHRyYW5zbGF0ZXMgdG8gYSBtb3JlIHN0cmVhbWxpbmVkIGFuZCBtYWludGFpbmFibGUgYXBwcm9hY2ggZm9yIGV4cG9zaW5nIGRldmljZS1zcGVjaWZpYyBwYXJhbWV0ZXJzIGFuZCBjb250cm9scyB0aHJvdWdoIHRoZSBjb25maWdmcyBpbnRlcmZhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA5OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05VTExCX0RFVklDRV9BVFRSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MzI5PXN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9ib29sX2F0dHJfc3RvcmUoYm9vbCAqdmFsLCBjb25zdCBjaGFyICpwYWdlLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTM0My0vKiBUaGUgZm9sbG93aW5nIG1hY3JvIHNob3VsZCBvbmx5IGJlIHVzZWQgd2l0aCBUWVBFID0ge3VpbnQsIHVsb25nLCBib29sfS4gKi9cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjM0NDojZGVmaW5lIE5VTExCX0RFVklDRV9BVFRSKE5BTUUsIFRZUEUsIEFQUExZKVx0XHRcdFx0XFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTM0NS1zdGF0aWMgc3NpemVfdFx0XHRcdFx0XHRcdFx0XHRcXFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTQ0Nj1zdGF0aWMgaW50IG51bGxiX2FwcGx5X3BvbGxfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00NTEtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTI6TlVMTEJfREVWSUNFX0FUVFIoc2l6ZSwgdWxvbmcsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDUzOk5VTExCX0RFVklDRV9BVFRSKGNvbXBsZXRpb25fbnNlYywgdWxvbmcsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDU0Ok5VTExCX0RFVklDRV9BVFRSKHN1Ym1pdF9xdWV1ZXMsIHVpbnQsIG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDU1Ok5VTExCX0RFVklDRV9BVFRSKHBvbGxfcXVldWVzLCB1aW50LCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTY6TlVMTEJfREVWSUNFX0FUVFIoaG9tZV9ub2RlLCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1NzpOVUxMQl9ERVZJQ0VfQVRUUihxdWV1ZV9tb2RlLCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1ODpOVUxMQl9ERVZJQ0VfQVRUUihibG9ja3NpemUsIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDU5Ok5VTExCX0RFVklDRV9BVFRSKG1heF9zZWN0b3JzLCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2MDpOVUxMQl9ERVZJQ0VfQVRUUihpcnFtb2RlLCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2MTpOVUxMQl9ERVZJQ0VfQVRUUihod19xdWV1ZV9kZXB0aCwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjI6TlVMTEJfREVWSUNFX0FUVFIoaW5kZXgsIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDYzOk5VTExCX0RFVklDRV9BVFRSKGJsb2NraW5nLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2NDpOVUxMQl9ERVZJQ0VfQVRUUih1c2VfcGVyX25vZGVfaGN0eCwgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjU6TlVMTEJfREVWSUNFX0FUVFIobWVtb3J5X2JhY2tlZCwgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjY6TlVMTEJfREVWSUNFX0FUVFIoZGlzY2FyZCwgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Njc6TlVMTEJfREVWSUNFX0FUVFIobWJwcywgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Njg6TlVMTEJfREVWSUNFX0FUVFIoY2FjaGVfc2l6ZSwgdWxvbmcsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY5Ok5VTExCX0RFVklDRV9BVFRSKHpvbmVkLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3MDpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX3NpemUsIHVsb25nLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3MTpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX2NhcGFjaXR5LCB1bG9uZywgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzI6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9ucl9jb252LCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3MzpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX21heF9vcGVuLCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3NDpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX21heF9hY3RpdmUsIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc1Ok5VTExCX0RFVklDRV9BVFRSKHpvbmVfYXBwZW5kX21heF9zZWN0b3JzLCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3NjpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX2Z1bGwsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc3Ok5VTExCX0RFVklDRV9BVFRSKHZpcnRfYm91bmRhcnksIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc4Ok5VTExCX0RFVklDRV9BVFRSKG5vX3NjaGVkLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3OTpOVUxMQl9ERVZJQ0VfQVRUUihzaGFyZWRfdGFncywgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0ODA6TlVMTEJfREVWSUNFX0FUVFIoc2hhcmVkX3RhZ19iaXRtYXAsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDgxOk5VTExCX0RFVklDRV9BVFRSKGZ1YSwgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0ODI6TlVMTEJfREVWSUNFX0FUVFIocm90YXRpb25hbCwgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0ODM6TlVMTEJfREVWSUNFX0FUVFIoYmFkYmxvY2tzX29uY2UsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDg0Ok5VTExCX0RFVklDRV9BVFRSKGJhZGJsb2Nrc19wYXJ0aWFsX2lvLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ4NS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDk6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAwNjcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSBDaGFuZ2VzKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYSBmZXcga2V5IGFyZWFzIG9mIHRoZSBudWxsIGJsb2NrIGRldmljZSBkcml2ZXIuIEl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgb2YgdGhlIG1vZGlmaWNhdGlvbiByZXZvbHZlcyBhcm91bmQgaG93IGRldmljZSBhdHRyaWJ1dGVzIGFyZSBoYW5kbGVkLCBzcGVjaWZpY2FsbHkgdGhlIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc2hvd2AgYW5kIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmVgIGZ1bmN0aW9ucywgd2hpY2ggYXJlIGNyZWF0ZWQgdXNpbmcgdGhlIGBOVUxMQl9ERVZJQ0VfQVRUUmAgbWFjcm8uIEkgbmVlZCB0byBrZWVwIGFuIGV5ZSBvbiBob3cgdGhhdCBtYWNybyBpcyBiZWluZyB1c2VkIGFuZCBtb2RpZmllZCwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIHNpbWlsYXIgZHJpdmVyIGZyYW1ld29ya3MuCgpCZXlvbmQgdGhvc2UsIGl0JiMzOTtzIGFsc28gbWFraW5nIGNoYW5nZXMgdG8gYSBoYW5kZnVsIG9mIG90aGVyIGF0dHJpYnV0ZS1yZWxhdGVkIGZ1bmN0aW9uczogYG51bGxiX2RldmljZV9wb3dlcl9zaG93YCwgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAsIGBudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZWAsIGFuZCBgbnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZWAuIFRoZXNlIGFyZSBjbGVhcmx5IHJlbGF0ZWQgdG8gcG93ZXIgbWFuYWdlbWVudCBhbmQsIGludGVyZXN0aW5nbHksIHpvbmVkIGJsb2NrIGRldmljZSBmdW5jdGlvbmFsaXR5LgoKTGV0IG1lIG1ha2UgYSBtZW50YWwgbm90ZSBvZiBhbGwgdGhlIHN5bWJvbHMgdGhhdCBzZWVtIHRvIGJlIGtleSB0byB1bmRlcnN0YW5kOiBgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc2AsIHRoZSBwb3dlci1yZWxhdGVkIGF0dHJpYnV0ZSBoYW5kbGVycywgdGhlIHpvbmVkLXJlbGF0ZWQgYXR0cmlidXRlIGhhbmRsZXJzLCBgbnVsbF9kZWxfZGV2YCwgYW5kIGBudWxsX2ZyZWVfZGV2YC4gSSBuZWVkIHRvIHRyYWNrIHRob3NlIGRvd24uCgpJdCBhbHNvIGxvb2tzIGxpa2UgdGhpcyBwYXRjaCBpcyBpbmZsdWVuY2VkIGJ5IHR3byBjb25maWcgb3B0aW9uczogYEJMS19ERVZfTlVMTF9CTEtgIGFuZCBgQkxLX0RFVl9aT05FRGAuIFRoZSBzZWNvbmQgb25lLCBgQkxLX0RFVl9aT05FRGAsIGlzIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy4gWm9uZWQgYmxvY2sgZGV2aWNlcyBhcmUgYSBtb3JlIHJlY2VudCBhZGRpdGlvbiB0byB0aGUgYmxvY2sgbGF5ZXIsIGFuZCBJIGtub3cgdGhleSByZXF1aXJlIHNwZWNpZmljIGhhbmRsaW5nLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgYEJMS19ERVZfWk9ORURgIGluIHRoZSBibG9jayBkcml2ZXIgZGlyZWN0b3J5LiBUaGF0IHdvdWxkIHRlbGwgbWUgd2hhdCYjMzk7cyBkZXBlbmRlbnQgb24gdGhhdCBzZXR0aW5nLiBUaGlzIHBhdGNoIHZlcnkgbGlrZWx5IGRlYWxzIHdpdGggYWRkaW5nIHpvbmVkIHN1cHBvcnQgYW5kIGl0cyBpbXBsaWNhdGlvbnMgb24gdGhlIG51bGwgYmxvY2sgZGV2aWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwOToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQkxLX0RFVl9aT05FRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2Jsb2NrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svS2NvbmZpZz03Nz1jb25maWcgQkxLX0RFVl9XUklURV9NT1VOVEVEXG4tLVxuYmxvY2svS2NvbmZpZy05Ni1cbmJsb2NrL0tjb25maWc6OTc6Y29uZmlnIEJMS19ERVZfWk9ORURcbmJsb2NrL0tjb25maWctOTgtXHRib29sIFwmIzM0O1pvbmVkIGJsb2NrIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA5OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODMwCgkJCQkJCQlvdXRwdXQ6IDIwNQoJCQkJCQkJdGhvdWdodHM6IDExODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIG51bGxfYmxrIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSB0YWtlbiBhIGxvb2sgYXQgdGhpcyBwYXRjaCBhbmQgaGVyZSYjMzk7cyBteSBicmVha2Rvd24uIEZpcnN0LCB5ZXMsIGBCTEtfREVWX1pPTkVEYCBpcyBhIHZhbGlkIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIGRyaXZlci4gVGhlIHBhdGNoIG1vZGlmaWVzIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCBhbmQgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYCwgc28gSSYjMzk7bGwgYWRkIHRob3NlIHRvIHRoZSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMuCgpJJiMzOTttIGFsc28gcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byB0aGUgbWFjcm9zIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc2hvd2AgYW5kIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmVgLCB3aGljaCBnZW5lcmF0ZSBhIHNlcmllcyBvZiBzaW1pbGFyIGZ1bmN0aW9ucy4gU2luY2UgSSBjYW4mIzM5O3QgZXhwbGljaXRseSBsaXN0ICpldmVyeSogaW5zdGFuY2UsIEkmIzM5O2xsIGZvY3VzIG9uIHRoZSBmdW5jdGlvbnMgdGhhdCBoYXZlIGV4cGxpY2l0IGRlY2xhcmF0aW9uczogYG51bGxiX2RldmljZV9wb3dlcl9zaG93YCwgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAsIGBudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZWAsIGFuZCBgbnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZWAuIFBsdXMgSSBrbm93IGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCBhbmQgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYCBhcmUgZXhwbGljaXRseSBkZWZpbmVkLiBUaGUgcmVzdCBzaG91bGQgYmUgY292ZXJlZC4KCkkgbmVlZCB0byBtYWtlIHN1cmUgd2UmIzM5O3JlIG5vdCBtaXNzaW5nIGFueSBkZXBlbmRlbmNpZXMuIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBDT05GSUdGU19GU2AgaXMgYWxyZWFkeSBpbXBsaWNpdGx5IHNlbGVjdGVkIGJ5IGBCTEtfREVWX05VTExfQkxLYCwgc28gd2UmIzM5O3JlIGdvb2QgdGhlcmUuICBJJiMzOTt2ZSBhbHNvIHZlcmlmaWVkIHRoYXQgYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgIGlzIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBjb25maWdmcyBhdHRyaWJ1dGVzIGBzdWJtaXRfcXVldWVzYCBhbmQgYHBvbGxfcXVldWVzYC4KCkFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zPyBOb3QgcmVsYXRlZCB0byBmYXVsdCBpbmplY3Rpb24sIHNvIEkgZG9uJiMzOTt0IHNlZSBhbnl0aGluZy4KCk5vdywgbGV0JiMzOTtzIGFuYWx5emUgdGhlIHBhdGNoJiMzOTtzIGZ1bmN0aW9uYWwgY2hhbmdlcy4gVGhlIGNvZGUgbm93IHByZXZlbnRzIHJlc2l6aW5nIGhhcmR3YXJlIHF1ZXVlcyBpZiBgc2hhcmVkX3RhZ3NgIGlzIGVuYWJsZWQsIHdoaWNoIGhhcyBzb21lIGZ1bmN0aW9uYWwgaW1wbGljYXRpb25zLiBBbHNvLCB0aGUgcGF0Y2ggYWxzbyBjaGFuZ2VzIHRoZSBkZWxldGlvbiBzZXF1ZW5jZSB0byBwcm9wZXJseSBmcmVlIHRoZSB6b25lZCBkZXZpY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4KCkJhc2VkIG9uIHRoaXMgYW5hbHlzaXMsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYFdvcnRoRnV6emluZz10cnVlYC4KCkhlcmUgYXJlIHRoZSBjb25maXJtZWQgY29uZmlndXJhdGlvbnM6CgoqICAgYEJMS19ERVZfTlVMTF9CTEtgCiogICBgQkxLX0RFVl9aT05FRGAKCkFuZCB0aGUga2V5IHN5bWJvbHMgdG8gZm9jdXMgb246CgoqICAgYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgCiogICBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AKKiAgIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AKKiAgIGBudWxsYl9kZXZpY2VfcG93ZXJfc2hvd2AKKiAgIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgCiogICBgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmVgCiogICBgbnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZWAKKiAgIGBudWxsX2RlbF9kZXZgCiogICBgbnVsbF9mcmVlX2RldmAKCkkmIzM5O20gZ29pbmcgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggdGhpcyBpbmZvcm1hdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDk6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OywKICAgICYjMzQ7QkxLX0RFVl9aT05FRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc2hvdyYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsX2RlbF9kZXYmIzM0OywKICAgICYjMzQ7bnVsbF9mcmVlX2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnVsbF9ibGsgZHJpdmVyIHRvIHJlamVjdCByZXNpemluZyBoYXJkd2FyZSBxdWV1ZXMgd2hlbiBzaGFyZWRfdGFncyBpcyBlbmFibGVkLCBhZGRzIGxvY2tpbmcgdG8gY29uZmlnZnMgYXR0cmlidXRlIGFjY2Vzc29ycywgYW5kIGZpeGVzIHRoZSBpbml0aWFsaXphdGlvbi9jbGVhbnVwIG9yZGVyIG9mIHpvbmVkIGRldmljZXMgYW5kIHRoZSBtb2R1bGUgaXRzZWxmLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBibG9jayBkcml2ZXIgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9OVUxMX0JMSyYjMzQ7LAogICAgJiMzNDtCTEtfREVWX1pPTkVEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxiX2FwcGx5X3BvbGxfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxiX2RldmljZV9wb3dlcl9zaG93JiMzNDssCiAgICAmIzM0O251bGxiX2RldmljZV9wb3dlcl9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlJiMzNDssCiAgICAmIzM0O251bGxfZGVsX2RldiYjMzQ7LAogICAgJiMzNDtudWxsX2ZyZWVfZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBudWxsX2JsayBkcml2ZXIgdG8gcmVqZWN0IHJlc2l6aW5nIGhhcmR3YXJlIHF1ZXVlcyB3aGVuIHNoYXJlZF90YWdzIGlzIGVuYWJsZWQsIGFkZHMgbG9ja2luZyB0byBjb25maWdmcyBhdHRyaWJ1dGUgYWNjZXNzb3JzLCBhbmQgZml4ZXMgdGhlIGluaXRpYWxpemF0aW9uL2NsZWFudXAgb3JkZXIgb2Ygem9uZWQgZGV2aWNlcyBhbmQgdGhlIG1vZHVsZSBpdHNlbGYuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGJsb2NrIGRyaXZlciBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTRUMDk6MjM6NDYuMDMzMjYyMjk0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE2NjY2NDkxNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OVUxMX0JMS1wiLFxuICAgIFwiQkxLX0RFVl9aT05FRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNcIixcbiAgICBcIm51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNcIixcbiAgICBcIm51bGxiX2FwcGx5X3BvbGxfcXVldWVzXCIsXG4gICAgXCJudWxsYl9kZXZpY2VfcG93ZXJfc2hvd1wiLFxuICAgIFwibnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlXCIsXG4gICAgXCJudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZVwiLFxuICAgIFwibnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZVwiLFxuICAgIFwibnVsbF9kZWxfZGV2XCIsXG4gICAgXCJudWxsX2ZyZWVfZGV2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG51bGxfYmxrIGRyaXZlciB0byByZWplY3QgcmVzaXppbmcgaGFyZHdhcmUgcXVldWVzIHdoZW4gc2hhcmVkX3RhZ3MgaXMgZW5hYmxlZCwgYWRkcyBsb2NraW5nIHRvIGNvbmZpZ2ZzIGF0dHJpYnV0ZSBhY2Nlc3NvcnMsIGFuZCBmaXhlcyB0aGUgaW5pdGlhbGl6YXRpb24vY2xlYW51cCBvcmRlciBvZiB6b25lZCBkZXZpY2VzIGFuZCB0aGUgbW9kdWxlIGl0c2VsZi4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgYmxvY2sgZHJpdmVyIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA5OjIzOjQ2LjAzMzI2NzI0NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzcyMTgwMjUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTNmYzQ3M2Y0MmFhMDY4YTUyNGMyNjI4MDYxNDVhZjhiMGY2ZDdkZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAxNCAwOToyMzo0NCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXFxuaW5kZXggZjhjMGZkNTdlMDQxYTguLmM4NDg3YTYzMGUxYTAxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXFxuKysrIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcXG5AQCAtNjYsNyArNjYsNyBAQCBzdHJ1Y3QgbnVsbGJfcGFnZSB7XFxuICNkZWZpbmUgTlVMTEJfUEFHRV9GUkVFIChNQVBfU1ogLSAyKVxcbiBcXG4gc3RhdGljIExJU1RfSEVBRChudWxsYl9saXN0KTtcXG4tc3RhdGljIHN0cnVjdCBtdXRleCBsb2NrO1xcbitzdGF0aWMgREVGSU5FX01VVEVYKGxvY2spO1xcbiBzdGF0aWMgaW50IG51bGxfbWFqb3I7XFxuIHN0YXRpYyBERUZJTkVfSURBKG51bGxiX2luZGV4ZXMpO1xcbiBzdGF0aWMgc3RydWN0IGJsa19tcV90YWdfc2V0IHRhZ19zZXQ7XFxuQEAgLTM0NSw4ICszNDUsMTQgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsXFxuIHN0YXRpYyBzc2l6ZV90XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNoYXIgKnBhZ2UpXFx0XFxcXFxcbiB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRyZXR1cm4gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc2hvdyhcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHNzaXplX3QgcmV0O1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHJldCA9IG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3Nob3coXFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRcXHRcXHR0b19udWxsYl9kZXZpY2UoaXRlbSktXFx1MDAzZU5BTUUsIHBhZ2UpO1xcdFxcXFxcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZsb2NrKTtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0cmV0dXJuIHJldDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIH1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIHN0YXRpYyBzc2l6ZV90XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjb25zdCBjaGFyICpwYWdlLFxcdFxcXFxcXG5AQCAtMzYwLDEzICszNjYsMTcgQEAgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcXHRcXFxcXFxuIFxcdHJldCA9IG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3N0b3JlKFxcdTAwMjZuZXdfdmFsdWUsIHBhZ2UsIGNvdW50KTtcXFxcXFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0cmV0dXJuIHJldDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHJldCA9IDA7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGlmIChhcHBseV9mbilcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdHJldCA9IGFwcGx5X2ZuKGRldiwgbmV3X3ZhbHVlKTtcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGVsc2UgaWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCBcXHUwMDI2ZGV2LVxcdTAwM2VmbGFncykpIFxcdFxcXFxcXG4gXFx0XFx0cmV0ID0gLUVCVVNZO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0aWYgKCFyZXQpXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRkZXYtXFx1MDAzZU5BTUUgPSBuZXdfdmFsdWU7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmxvY2spO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ZGV2LVxcdTAwM2VOQU1FID0gbmV3X3ZhbHVlO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0cmV0dXJuIGNvdW50O1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gfVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gQ09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBOQU1FKTtcXG5AQCAtMzgyLDYgKzM5MiwxNSBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxcbiBcXHRpZiAoIWRldi1cXHUwMDNlbnVsbGIpXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXG4rXFx0LypcXG4rXFx0ICogQSBzaGFyZWQgdGFnX3NldCBpcyBtYXBwZWQgdmlhIHRoZSBtb2R1bGUtd2lkZSBxdWV1ZSBjb3VudHMsIHNvIGFcXG4rXFx0ICogcGVyLWRldmljZSByZXNpemUgaXMgbWVhbmluZ2xlc3MuIE9uIHNocmluayBpdCB3b3VsZCBhbHNvIGxlYXZlXFxuK1xcdCAqIG1xX21hcFtdIHBvaW50aW5nIGF0IE5VTExlZCBoY3R4IHNsb3RzLCBjYXVzaW5nIGEgTlVMTCBkZXJlZiBpblxcbitcXHQgKiBibGtfbXFfbWFwX3N3cXVldWUoKS4gUmVqZWN0IGl0LlxcbitcXHQgKi9cXG4rXFx0aWYgKGRldi1cXHUwMDNlc2hhcmVkX3RhZ3MpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4gXFx0LypcXG4gXFx0ICogTWFrZSBzdXJlIGF0IGxlYXN0IG9uZSBzdWJtaXQgcXVldWUgZXhpc3RzLlxcbiBcXHQgKi9cXG5AQCAtNDIxLDI1ICs0NDAsMTMgQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcXG4gc3RhdGljIGludCBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgc3VibWl0X3F1ZXVlcylcXG4ge1xcbi1cXHRpbnQgcmV0O1xcbi1cXG4tXFx0bXV0ZXhfbG9jayhcXHUwMDI2bG9jayk7XFxuLVxcdHJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtXFx1MDAzZXBvbGxfcXVldWVzKTtcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZsb2NrKTtcXG4tXFxuLVxcdHJldHVybiByZXQ7XFxuK1xcdHJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LVxcdTAwM2Vwb2xsX3F1ZXVlcyk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBpbnQgcG9sbF9xdWV1ZXMpXFxuIHtcXG4tXFx0aW50IHJldDtcXG4tXFxuLVxcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcbi1cXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LVxcdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2bG9jayk7XFxuLVxcbi1cXHRyZXR1cm4gcmV0O1xcbitcXHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi1cXHUwMDNlc3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpO1xcbiB9XFxuIFxcbiBOVUxMQl9ERVZJQ0VfQVRUUihzaXplLCB1bG9uZywgTlVMTCk7XFxuQEAgLTQ3OCw3ICs0ODUsMTMgQEAgTlVMTEJfREVWSUNFX0FUVFIoYmFkYmxvY2tzX3BhcnRpYWxfaW8sIGJvb2wsIE5VTEwpO1xcbiBcXG4gc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxcbiB7XFxuLVxcdHJldHVybiBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3Nob3codG9fbnVsbGJfZGV2aWNlKGl0ZW0pLVxcdTAwM2Vwb3dlciwgcGFnZSk7XFxuK1xcdHNzaXplX3QgcmV0O1xcbitcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2bG9jayk7XFxuK1xcdHJldCA9IG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyh0b19udWxsYl9kZXZpY2UoaXRlbSktXFx1MDAzZXBvd2VyLCBwYWdlKTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZsb2NrKTtcXG4rXFxuK1xcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFxuQEAgLTU3OSw4ICs1OTIsMTMgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXFxuIHtcXG4gXFx0c3RydWN0IG51bGxiX2RldmljZSAqZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pO1xcbitcXHRzc2l6ZV90IHJldDtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcbitcXHRyZXQgPSB6b25lX2NvbmRfc3RvcmUoZGV2LCBwYWdlLCBjb3VudCwgQkxLX1pPTkVfQ09ORF9SRUFET05MWSk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2bG9jayk7XFxuIFxcbi1cXHRyZXR1cm4gem9uZV9jb25kX3N0b3JlKGRldiwgcGFnZSwgY291bnQsIEJMS19aT05FX0NPTkRfUkVBRE9OTFkpO1xcbitcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIENPTkZJR0ZTX0FUVFJfV08obnVsbGJfZGV2aWNlXywgem9uZV9yZWFkb25seSk7XFxuIFxcbkBAIC01ODgsOCArNjA2LDEzIEBAIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV96b25lX29mZmxpbmVfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGNvdW50KVxcbiB7XFxuIFxcdHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiA9IHRvX251bGxiX2RldmljZShpdGVtKTtcXG4rXFx0c3NpemVfdCByZXQ7XFxuK1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXG4rXFx0cmV0ID0gem9uZV9jb25kX3N0b3JlKGRldiwgcGFnZSwgY291bnQsIEJMS19aT05FX0NPTkRfT0ZGTElORSk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2bG9jayk7XFxuIFxcbi1cXHRyZXR1cm4gem9uZV9jb25kX3N0b3JlKGRldiwgcGFnZSwgY291bnQsIEJMS19aT05FX0NPTkRfT0ZGTElORSk7XFxuK1xcdHJldHVybiByZXQ7XFxuIH1cXG4gQ09ORklHRlNfQVRUUl9XTyhudWxsYl9kZXZpY2VfLCB6b25lX29mZmxpbmUpO1xcbiBcXG5AQCAtODM2LDcgKzg1OSw2IEBAIHN0YXRpYyB2b2lkIG51bGxfZnJlZV9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxcbiBcXHRpZiAoIWRldilcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4tXFx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xcbiBcXHRiYWRibG9ja3NfZXhpdChcXHUwMDI2ZGV2LVxcdTAwM2ViYWRibG9ja3MpO1xcbiBcXHRrZnJlZShkZXYpO1xcbiB9XFxuQEAgLTE3NzAsMTggKzE3OTIsMTkgQEAgc3RhdGljIHZvaWQgbnVsbF9kZWxfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXFxuIFxcbiBcXHRkZWxfZ2VuZGlzayhudWxsYi1cXHUwMDNlZGlzayk7XFxuIFxcbi1cXHRpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX1RIUk9UVExFRCwgXFx1MDAyNm51bGxiLVxcdTAwM2VkZXYtXFx1MDAzZWZsYWdzKSkge1xcbitcXHRpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX1RIUk9UVExFRCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpKSB7XFxuIFxcdFxcdGhydGltZXJfY2FuY2VsKFxcdTAwMjZudWxsYi1cXHUwMDNlYndfdGltZXIpO1xcbiBcXHRcXHRhdG9taWNfbG9uZ19zZXQoXFx1MDAyNm51bGxiLVxcdTAwM2VjdXJfYnl0ZXMsIExPTkdfTUFYKTtcXG4gXFx0XFx0YmxrX21xX3N0YXJ0X3N0b3BwZWRfaHdfcXVldWVzKG51bGxiLVxcdTAwM2VxLCB0cnVlKTtcXG4gXFx0fVxcbiBcXG4gXFx0cHV0X2Rpc2sobnVsbGItXFx1MDAzZWRpc2spO1xcbitcXHRudWxsX2ZyZWVfem9uZWRfZGV2KGRldik7XFxuIFxcdGlmIChudWxsYi1cXHUwMDNldGFnX3NldCA9PSBcXHUwMDI2bnVsbGItXFx1MDAzZV9fdGFnX3NldClcXG4gXFx0XFx0YmxrX21xX2ZyZWVfdGFnX3NldChudWxsYi1cXHUwMDNldGFnX3NldCk7XFxuIFxcdGtmcmVlKG51bGxiLVxcdTAwM2VxdWV1ZXMpO1xcbiBcXHRpZiAobnVsbF9jYWNoZV9hY3RpdmUobnVsbGIpKVxcbi1cXHRcXHRudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2UobnVsbGItXFx1MDAzZWRldiwgdHJ1ZSk7XFxuK1xcdFxcdG51bGxfZnJlZV9kZXZpY2Vfc3RvcmFnZShkZXYsIHRydWUpO1xcbiBcXHRrZnJlZShudWxsYik7XFxuIFxcdGRldi1cXHUwMDNlbnVsbGIgPSBOVUxMO1xcbiB9XFxuQEAgLTIxNjIsMTcgKzIxODUsOSBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcXG4gXFx0Y29uZmlnX2dyb3VwX2luaXQoXFx1MDAyNm51bGxiX3N1YnN5cy5zdV9ncm91cCk7XFxuIFxcdG11dGV4X2luaXQoXFx1MDAyNm51bGxiX3N1YnN5cy5zdV9tdXRleCk7XFxuIFxcbi1cXHRyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oXFx1MDAyNm51bGxiX3N1YnN5cyk7XFxuLVxcdGlmIChyZXQpXFxuLVxcdFxcdHJldHVybiByZXQ7XFxuLVxcbi1cXHRtdXRleF9pbml0KFxcdTAwMjZsb2NrKTtcXG4tXFxuIFxcdG51bGxfbWFqb3IgPSByZWdpc3Rlcl9ibGtkZXYoMCwgXFxcIm51bGxiXFxcIik7XFxuLVxcdGlmIChudWxsX21ham9yIFxcdTAwM2MgMCkge1xcbi1cXHRcXHRyZXQgPSBudWxsX21ham9yO1xcbi1cXHRcXHRnb3RvIGVycl9jb25mO1xcbi1cXHR9XFxuK1xcdGlmIChudWxsX21ham9yIFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIG51bGxfbWFqb3I7XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnJfZGV2aWNlczsgaSsrKSB7XFxuIFxcdFxcdHJldCA9IG51bGxfY3JlYXRlX2RldigpO1xcbkBAIC0yMTgwLDYgKzIxOTUsMTAgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXFxuIFxcdFxcdFxcdGdvdG8gZXJyX2RldjtcXG4gXFx0fVxcbiBcXG4rXFx0cmV0ID0gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKFxcdTAwMjZudWxsYl9zdWJzeXMpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRnb3RvIGVycl9kZXY7XFxuK1xcbiBcXHRwcl9pbmZvKFxcXCJtb2R1bGUgbG9hZGVkXFxcXG5cXFwiKTtcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbkBAIC0yMTg5LDggKzIyMDgsOCBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcXG4gXFx0XFx0bnVsbF9kZXN0cm95X2RldihudWxsYik7XFxuIFxcdH1cXG4gXFx0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXFxcIm51bGxiXFxcIik7XFxuLWVycl9jb25mOlxcbi1cXHRjb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbShcXHUwMDI2bnVsbGJfc3Vic3lzKTtcXG4rXFx0aWYgKHRhZ19zZXQub3BzKVxcbitcXHRcXHRibGtfbXFfZnJlZV90YWdfc2V0KFxcdTAwMjZ0YWdfc2V0KTtcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG5AQCAtMjIwMCw4ICsyMjE5LDYgQEAgc3RhdGljIHZvaWQgX19leGl0IG51bGxfZXhpdCh2b2lkKVxcbiBcXG4gXFx0Y29uZmlnZnNfdW5yZWdpc3Rlcl9zdWJzeXN0ZW0oXFx1MDAyNm51bGxiX3N1YnN5cyk7XFxuIFxcbi1cXHR1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCBcXFwibnVsbGJcXFwiKTtcXG4tXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcbiBcXHR3aGlsZSAoIWxpc3RfZW1wdHkoXFx1MDAyNm51bGxiX2xpc3QpKSB7XFxuIFxcdFxcdG51bGxiID0gbGlzdF9lbnRyeShudWxsYl9saXN0Lm5leHQsIHN0cnVjdCBudWxsYiwgbGlzdCk7XFxuQEAgLTIyMDksNiArMjIyNiw4IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZClcXG4gXFx0fVxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNmxvY2spO1xcbiBcXG4rXFx0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXFxcIm51bGxiXFxcIik7XFxuK1xcbiBcXHRpZiAodGFnX3NldC5vcHMpXFxuIFxcdFxcdGJsa19tcV9mcmVlX3RhZ19zZXQoXFx1MDAyNnRhZ19zZXQpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDk6MjM6NDYuNDA2MDM5NDc2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTI5Mzg2MjgxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCIsXG4gICAgXCJCTEtfREVWX1pPTkVEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc1wiLFxuICAgIFwibnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc1wiLFxuICAgIFwibnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNcIixcbiAgICBcIm51bGxiX2RldmljZV9wb3dlcl9zaG93XCIsXG4gICAgXCJudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVcIixcbiAgICBcIm51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlXCIsXG4gICAgXCJudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlXCIsXG4gICAgXCJudWxsX2RlbF9kZXZcIixcbiAgICBcIm51bGxfZnJlZV9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnVsbF9ibGsgZHJpdmVyIHRvIHJlamVjdCByZXNpemluZyBoYXJkd2FyZSBxdWV1ZXMgd2hlbiBzaGFyZWRfdGFncyBpcyBlbmFibGVkLCBhZGRzIGxvY2tpbmcgdG8gY29uZmlnZnMgYXR0cmlidXRlIGFjY2Vzc29ycywgYW5kIGZpeGVzIHRoZSBpbml0aWFsaXphdGlvbi9jbGVhbnVwIG9yZGVyIG9mIHpvbmVkIGRldmljZXMgYW5kIHRoZSBtb2R1bGUgaXRzZWxmLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBibG9jayBkcml2ZXIgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhM2ZjNDczZjQyYWEwNjhhNTI0YzI2MjgwNjE0NWFmOGIwZjZkN2RkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMDk6MjM6NDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5pbmRleCBmOGMwZmQ1N2UwNDFhOC4uYzg0ODdhNjMwZTFhMDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuKysrIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbkBAIC02Niw3ICs2Niw3IEBAIHN0cnVjdCBudWxsYl9wYWdlIHtcbiAjZGVmaW5lIE5VTExCX1BBR0VfRlJFRSAoTUFQX1NaIC0gMilcbiBcbiBzdGF0aWMgTElTVF9IRUFEKG51bGxiX2xpc3QpO1xuLXN0YXRpYyBzdHJ1Y3QgbXV0ZXggbG9jaztcbitzdGF0aWMgREVGSU5FX01VVEVYKGxvY2spO1xuIHN0YXRpYyBpbnQgbnVsbF9tYWpvcjtcbiBzdGF0aWMgREVGSU5FX0lEQShudWxsYl9pbmRleGVzKTtcbiBzdGF0aWMgc3RydWN0IGJsa19tcV90YWdfc2V0IHRhZ19zZXQ7XG5AQCAtMzQ1LDggKzM0NSwxNCBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3N0b3JlKGJvb2wgKnZhbCwgY29uc3QgY2hhciAqcGFnZSxcbiBzdGF0aWMgc3NpemVfdFx0XHRcdFx0XHRcdFx0XHRcXFxuIG51bGxiX2RldmljZV8jI05BTUUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcdFxcXG4ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRyZXR1cm4gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc2hvdyhcdFx0XHRcdFxcXG4rXHRzc2l6ZV90IHJldDtcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XHRcdFx0XHRcdFx0XFxcbitcdHJldCA9IG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3Nob3coXHRcdFx0XHRcXFxuIFx0XHRcdFx0dG9fbnVsbGJfZGV2aWNlKGl0ZW0pLVx1MDAzZU5BTUUsIHBhZ2UpO1x0XFxcbitcdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcdFx0XHRcdFx0XHRcXFxuK1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRyZXR1cm4gcmV0O1x0XHRcdFx0XHRcdFx0XFxcbiB9XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBzdGF0aWMgc3NpemVfdFx0XHRcdFx0XHRcdFx0XHRcXFxuIG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNvbnN0IGNoYXIgKnBhZ2UsXHRcXFxuQEAgLTM2MCwxMyArMzY2LDE3IEBAIG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNvbnN0IGNoYXIgKnBhZ2UsXHRcXFxuIFx0cmV0ID0gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc3RvcmUoXHUwMDI2bmV3X3ZhbHVlLCBwYWdlLCBjb3VudCk7XFxcbiBcdGlmIChyZXQgXHUwMDNjIDApXHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRyZXR1cm4gcmV0O1x0XHRcdFx0XHRcdFxcXG4rXHRyZXQgPSAwO1x0XHRcdFx0XHRcdFx0XFxcbitcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XHRcdFx0XHRcdFx0XFxcbiBcdGlmIChhcHBseV9mbilcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdHJldCA9IGFwcGx5X2ZuKGRldiwgbmV3X3ZhbHVlKTtcdFx0XHRcdFxcXG4gXHRlbHNlIGlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSkgXHRcXFxuIFx0XHRyZXQgPSAtRUJVU1k7XHRcdFx0XHRcdFx0XFxcbitcdGlmICghcmV0KVx0XHRcdFx0XHRcdFx0XFxcbitcdFx0ZGV2LVx1MDAzZU5BTUUgPSBuZXdfdmFsdWU7XHRcdFx0XHRcdFxcXG4rXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XHRcdFx0XHRcdFx0XFxcbiBcdGlmIChyZXQgXHUwMDNjIDApXHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRyZXR1cm4gcmV0O1x0XHRcdFx0XHRcdFxcXG4tXHRkZXYtXHUwMDNlTkFNRSA9IG5ld192YWx1ZTtcdFx0XHRcdFx0XHRcXFxuIFx0cmV0dXJuIGNvdW50O1x0XHRcdFx0XHRcdFx0XFxcbiB9XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIE5BTUUpO1xuQEAgLTM4Miw2ICszOTIsMTUgQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcdGlmICghZGV2LVx1MDAzZW51bGxiKVxuIFx0XHRyZXR1cm4gMDtcbiBcbitcdC8qXG4rXHQgKiBBIHNoYXJlZCB0YWdfc2V0IGlzIG1hcHBlZCB2aWEgdGhlIG1vZHVsZS13aWRlIHF1ZXVlIGNvdW50cywgc28gYVxuK1x0ICogcGVyLWRldmljZSByZXNpemUgaXMgbWVhbmluZ2xlc3MuIE9uIHNocmluayBpdCB3b3VsZCBhbHNvIGxlYXZlXG4rXHQgKiBtcV9tYXBbXSBwb2ludGluZyBhdCBOVUxMZWQgaGN0eCBzbG90cywgY2F1c2luZyBhIE5VTEwgZGVyZWYgaW5cbitcdCAqIGJsa19tcV9tYXBfc3dxdWV1ZSgpLiBSZWplY3QgaXQuXG4rXHQgKi9cbitcdGlmIChkZXYtXHUwMDNlc2hhcmVkX3RhZ3MpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuIFx0LypcbiBcdCAqIE1ha2Ugc3VyZSBhdCBsZWFzdCBvbmUgc3VibWl0IHF1ZXVlIGV4aXN0cy5cbiBcdCAqL1xuQEAgLTQyMSwyNSArNDQwLDEzIEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4gc3RhdGljIGludCBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgICAgdW5zaWduZWQgaW50IHN1Ym1pdF9xdWV1ZXMpXG4ge1xuLVx0aW50IHJldDtcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4tXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LVx1MDAzZXBvbGxfcXVldWVzKTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbi1cbi1cdHJldHVybiByZXQ7XG4rXHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi1cdTAwM2Vwb2xsX3F1ZXVlcyk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICAgdW5zaWduZWQgaW50IHBvbGxfcXVldWVzKVxuIHtcbi1cdGludCByZXQ7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuLVx0cmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi1cdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4tXG4tXHRyZXR1cm4gcmV0O1xuK1x0cmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpO1xuIH1cbiBcbiBOVUxMQl9ERVZJQ0VfQVRUUihzaXplLCB1bG9uZywgTlVMTCk7XG5AQCAtNDc4LDcgKzQ4NSwxMyBAQCBOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3NfcGFydGlhbF9pbywgYm9vbCwgTlVMTCk7XG4gXG4gc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxuIHtcbi1cdHJldHVybiBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3Nob3codG9fbnVsbGJfZGV2aWNlKGl0ZW0pLVx1MDAzZXBvd2VyLCBwYWdlKTtcbitcdHNzaXplX3QgcmV0O1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbitcdHJldCA9IG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyh0b19udWxsYl9kZXZpY2UoaXRlbSktXHUwMDNlcG93ZXIsIHBhZ2UpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuK1xuK1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbkBAIC01NzksOCArNTkyLDEzIEBAIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbiBcdFx0XHRcdFx0XHRjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXG4ge1xuIFx0c3RydWN0IG51bGxiX2RldmljZSAqZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pO1xuK1x0c3NpemVfdCByZXQ7XG4rXG4rXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuK1x0cmV0ID0gem9uZV9jb25kX3N0b3JlKGRldiwgcGFnZSwgY291bnQsIEJMS19aT05FX0NPTkRfUkVBRE9OTFkpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuIFxuLVx0cmV0dXJuIHpvbmVfY29uZF9zdG9yZShkZXYsIHBhZ2UsIGNvdW50LCBCTEtfWk9ORV9DT05EX1JFQURPTkxZKTtcbitcdHJldHVybiByZXQ7XG4gfVxuIENPTkZJR0ZTX0FUVFJfV08obnVsbGJfZGV2aWNlXywgem9uZV9yZWFkb25seSk7XG4gXG5AQCAtNTg4LDggKzYwNiwxMyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbiBcdFx0XHRcdFx0ICAgICAgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcbiB7XG4gXHRzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYgPSB0b19udWxsYl9kZXZpY2UoaXRlbSk7XG4rXHRzc2l6ZV90IHJldDtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4rXHRyZXQgPSB6b25lX2NvbmRfc3RvcmUoZGV2LCBwYWdlLCBjb3VudCwgQkxLX1pPTkVfQ09ORF9PRkZMSU5FKTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbiBcbi1cdHJldHVybiB6b25lX2NvbmRfc3RvcmUoZGV2LCBwYWdlLCBjb3VudCwgQkxLX1pPTkVfQ09ORF9PRkZMSU5FKTtcbitcdHJldHVybiByZXQ7XG4gfVxuIENPTkZJR0ZTX0FUVFJfV08obnVsbGJfZGV2aWNlXywgem9uZV9vZmZsaW5lKTtcbiBcbkBAIC04MzYsNyArODU5LDYgQEAgc3RhdGljIHZvaWQgbnVsbF9mcmVlX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXG4gXHRpZiAoIWRldilcbiBcdFx0cmV0dXJuO1xuIFxuLVx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xuIFx0YmFkYmxvY2tzX2V4aXQoXHUwMDI2ZGV2LVx1MDAzZWJhZGJsb2Nrcyk7XG4gXHRrZnJlZShkZXYpO1xuIH1cbkBAIC0xNzcwLDE4ICsxNzkyLDE5IEBAIHN0YXRpYyB2b2lkIG51bGxfZGVsX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxuIFxuIFx0ZGVsX2dlbmRpc2sobnVsbGItXHUwMDNlZGlzayk7XG4gXG4tXHRpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX1RIUk9UVExFRCwgXHUwMDI2bnVsbGItXHUwMDNlZGV2LVx1MDAzZWZsYWdzKSkge1xuK1x0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncykpIHtcbiBcdFx0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2bnVsbGItXHUwMDNlYndfdGltZXIpO1xuIFx0XHRhdG9taWNfbG9uZ19zZXQoXHUwMDI2bnVsbGItXHUwMDNlY3VyX2J5dGVzLCBMT05HX01BWCk7XG4gXHRcdGJsa19tcV9zdGFydF9zdG9wcGVkX2h3X3F1ZXVlcyhudWxsYi1cdTAwM2VxLCB0cnVlKTtcbiBcdH1cbiBcbiBcdHB1dF9kaXNrKG51bGxiLVx1MDAzZWRpc2spO1xuK1x0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xuIFx0aWYgKG51bGxiLVx1MDAzZXRhZ19zZXQgPT0gXHUwMDI2bnVsbGItXHUwMDNlX190YWdfc2V0KVxuIFx0XHRibGtfbXFfZnJlZV90YWdfc2V0KG51bGxiLVx1MDAzZXRhZ19zZXQpO1xuIFx0a2ZyZWUobnVsbGItXHUwMDNlcXVldWVzKTtcbiBcdGlmIChudWxsX2NhY2hlX2FjdGl2ZShudWxsYikpXG4tXHRcdG51bGxfZnJlZV9kZXZpY2Vfc3RvcmFnZShudWxsYi1cdTAwM2VkZXYsIHRydWUpO1xuK1x0XHRudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2UoZGV2LCB0cnVlKTtcbiBcdGtmcmVlKG51bGxiKTtcbiBcdGRldi1cdTAwM2VudWxsYiA9IE5VTEw7XG4gfVxuQEAgLTIxNjIsMTcgKzIxODUsOSBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcbiBcdGNvbmZpZ19ncm91cF9pbml0KFx1MDAyNm51bGxiX3N1YnN5cy5zdV9ncm91cCk7XG4gXHRtdXRleF9pbml0KFx1MDAyNm51bGxiX3N1YnN5cy5zdV9tdXRleCk7XG4gXG4tXHRyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2bnVsbGJfc3Vic3lzKTtcbi1cdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4tXG4tXHRtdXRleF9pbml0KFx1MDAyNmxvY2spO1xuLVxuIFx0bnVsbF9tYWpvciA9IHJlZ2lzdGVyX2Jsa2RldigwLCBcIm51bGxiXCIpO1xuLVx0aWYgKG51bGxfbWFqb3IgXHUwMDNjIDApIHtcbi1cdFx0cmV0ID0gbnVsbF9tYWpvcjtcbi1cdFx0Z290byBlcnJfY29uZjtcbi1cdH1cbitcdGlmIChudWxsX21ham9yIFx1MDAzYyAwKVxuK1x0XHRyZXR1cm4gbnVsbF9tYWpvcjtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX2RldmljZXM7IGkrKykge1xuIFx0XHRyZXQgPSBudWxsX2NyZWF0ZV9kZXYoKTtcbkBAIC0yMTgwLDYgKzIxOTUsMTAgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXG4gXHRcdFx0Z290byBlcnJfZGV2O1xuIFx0fVxuIFxuK1x0cmV0ID0gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKFx1MDAyNm51bGxiX3N1YnN5cyk7XG4rXHRpZiAocmV0KVxuK1x0XHRnb3RvIGVycl9kZXY7XG4rXG4gXHRwcl9pbmZvKFwibW9kdWxlIGxvYWRlZFxcblwiKTtcbiBcdHJldHVybiAwO1xuIFxuQEAgLTIxODksOCArMjIwOCw4IEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxuIFx0XHRudWxsX2Rlc3Ryb3lfZGV2KG51bGxiKTtcbiBcdH1cbiBcdHVucmVnaXN0ZXJfYmxrZGV2KG51bGxfbWFqb3IsIFwibnVsbGJcIik7XG4tZXJyX2NvbmY6XG4tXHRjb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbShcdTAwMjZudWxsYl9zdWJzeXMpO1xuK1x0aWYgKHRhZ19zZXQub3BzKVxuK1x0XHRibGtfbXFfZnJlZV90YWdfc2V0KFx1MDAyNnRhZ19zZXQpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG5AQCAtMjIwMCw4ICsyMjE5LDYgQEAgc3RhdGljIHZvaWQgX19leGl0IG51bGxfZXhpdCh2b2lkKVxuIFxuIFx0Y29uZmlnZnNfdW5yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2bnVsbGJfc3Vic3lzKTtcbiBcbi1cdHVucmVnaXN0ZXJfYmxrZGV2KG51bGxfbWFqb3IsIFwibnVsbGJcIik7XG4tXG4gXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuIFx0d2hpbGUgKCFsaXN0X2VtcHR5KFx1MDAyNm51bGxiX2xpc3QpKSB7XG4gXHRcdG51bGxiID0gbGlzdF9lbnRyeShudWxsYl9saXN0Lm5leHQsIHN0cnVjdCBudWxsYiwgbGlzdCk7XG5AQCAtMjIwOSw2ICsyMjI2LDggQEAgc3RhdGljIHZvaWQgX19leGl0IG51bGxfZXhpdCh2b2lkKVxuIFx0fVxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuIFxuK1x0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXCJudWxsYlwiKTtcbitcbiBcdGlmICh0YWdfc2V0Lm9wcylcbiBcdFx0YmxrX21xX2ZyZWVfdGFnX3NldChcdTAwMjZ0YWdfc2V0KTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA5OjIzOjQ2LjQwNjA0MTAwNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4MDI0MDQ0MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gdGhlIGBudWxsX2Jsa2AgRHJpdmVyIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIGJlZW4gYXBwbGllZCB0byBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNgLiBJdCdzIGRlZmluaXRlbHkgbWFraW5nIHNvbWUgZnVuY3Rpb25hbCBjaGFuZ2VzLiBJIHNlZSB0aGV5J3ZlIGFkZGVkIGEgY2hlY2sgaW4gYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgIHdoaWNoIHNlZW1zIHRvIHJlamVjdCByZXNpemluZyBpZiBgZGV2LVx1MDAzZXNoYXJlZF90YWdzYCBpcyB0cnVlLiBJbnRlcmVzdGluZy4gVGhlcmUgYXJlIGFsc28gY2hhbmdlcyB0byB0aGUgbG9ja2luZyB3aXRoaW4gdGhlIHN5c2ZzIGFuZCBjb25maWdmcyBzdG9yZS9zaG93IGZ1bmN0aW9ucyByZWxhdGVkIHRvIGRldmljZSBtYW5hZ2VtZW50LiBMb29rcyBsaWtlIHRoZXkndmUgbW92ZWQgYG51bGxfZnJlZV96b25lZF9kZXYoZGV2KWAgYW5kIG1vZGlmaWVkIGluaXRpYWxpemF0aW9uIGFuZCBleGl0IG9yZGVyIGluIGBudWxsX2luaXRgIGFuZCBgbnVsbF9leGl0YC5cblxuRnVuY3Rpb25hbGx5LCB0aGVzZSBhcmUgYWxsIGNoYW5nZXMgdG8gdGhlIGBudWxsX2Jsa2AgZHJpdmVyIHdpdGhpbiB0aGUgYmxvY2sgc3Vic3lzdGVtLiBUaGlzIGRyaXZlciBpcywgYXMgSSByZWNhbGwsIGEgc29mdHdhcmUgYmxvY2sgZGV2aWNlIHVzZWQgcHJpbWFyaWx5IGZvciB0ZXN0aW5nIGFuZCBiZW5jaG1hcmtpbmcsIGFuZCBJIGtub3cgaXQncyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB3aGljaCBtYWtlcyBpdCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBHaXZlbiB0aGUgZnVuY3Rpb25hbCBjaGFuZ2VzIGFuZCB0aGUgZHJpdmVyJ3MgbmF0dXJlLCBJJ20gY29uZmlkZW50IGluIHRhZ2dpbmcgdGhpcyB3aXRoIGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbk5vdywgdGhlIG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgbmVlZGVkIHRvIGVuYWJsZSB0aGlzIGRyaXZlci4gSSdsbCB1c2UgYGdyZXBwZXJgIG9yIGEgc2ltaWxhciB0b29sIHRvIHF1aWNrbHkgc2VhcmNoIHRoZSBgZHJpdmVycy9ibG9jay9LY29uZmlnYCBmaWxlIG9yIG90aGVyIHJlbGV2YW50IEtjb25maWcgZmlsZXMgZm9yIFwibnVsbF9ibGtcIi4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY29uZmlndXJhdGlvbiBzeW1ib2wocykgSSBuZWVkIHRvIHJlcHJvZHVjZSBhbmQgdGVzdCB0aGlzIHdpdGggbXkgZnV6emluZyBzZXR1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM5OCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA5OjIzOjUyLjIwODQ0NzI4OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODU5NjkyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudWxsX2Jsa1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9LY29uZmlnPTE3PWlmIEJMS19ERVZcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTgtXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjE5OnNvdXJjZSBcXFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnXFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yMC1zb3VyY2UgXFxcImRyaXZlcnMvYmxvY2svcm51bGwvS2NvbmZpZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDk6MjM6NTIuMjY3MDQ5MjU1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYyOTE2MzQzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIG9mIHRoZSB0aG91Z2h0IHByb2Nlc3MgZGVzY3JpYmVkOlxuXG4qKkV4YW1pbmluZyB0aGUgTnVsbCBCbG9jayBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBudWxsIGJsb2NrIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgaGVhcnQgb2YgdGhpbmdzOiBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSBhbGwgdGhlIGBjb25maWdgIG9wdGlvbnMgc2hvdWxkIHJlc2lkZSwgZGVmaW5pbmcgd2hhdCBmZWF0dXJlcyBvZiB0aGlzIGRyaXZlciBhcmUgZW5hYmxlZCwgZGlzYWJsZWQsIG9yIGNvbmZpZ3VyYWJsZSBieSB0aGUgdXNlciBhdCBidWlsZCB0aW1lLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIHN0YW5kYXJkIHN0dWZmIGhlcmU6IHRoaW5ncyBsaWtlIHRoZSBudW1iZXIgb2YgZGV2aWNlcyBpdCBjYW4gZW11bGF0ZSwgYW55IHNwZWNpZmljIGVtdWxhdGlvbiBjaGFyYWN0ZXJpc3RpY3MsIG1heWJlIGV2ZW4gb3B0aW9ucyByZWxhdGVkIHRvIGVycm9yIGluamVjdGlvbiBvciB0ZXN0aW5nIGNhcGFiaWxpdGllcywgaWYgaXQgaGFzIGFueS4gTGV0J3MgZ2V0IHJpZ2h0IHRvIGl0LiBJIHdhbnQgdG8gc2VlIGhvdyBncmFudWxhciB0aGUgY29udHJvbCBpcy4gSSdtIGFzc3VtaW5nIHRoYXQgc2luY2UgdGhpcyBpcyBhIFwibnVsbFwiIGRyaXZlciwgbW9zdCBvZiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgYmUgc3RyYWlnaHRmb3J3YXJkLCBidXQgeW91IG5ldmVyIGtub3cuIEl0IGNvdWxkIGhhdmUgc3VycHJpc2luZyBlZGdlIGNhc2VzIG9yIGNvbXBsZXhpdGllcyB0aGF0IGFyZSBvbmx5IGV2aWRlbnQgd2hlbiBsb29raW5nIGF0IHRoZSBjb25maWd1cmF0aW9uIGNob2ljZXMgdGhlbXNlbHZlcy4gVGhlIEtjb25maWcgZmlsZSBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgbGF5IG9mIHRoZSBsYW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTM0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDk6MjM6NTYuODk2MjE0MjU2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ0MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTnVsbCBibG9jayBkZXZpY2UgZHJpdmVyIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcbiAgIDg6XFx0XFx0c2VsZWN0IENPTkZJR0ZTX0ZTXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbiAgMTE6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBmYXVsdCBpbmplY3Rpb24gZm9yIE51bGwgdGVzdCBibG9jayBkcml2ZXJcXFwiXFxuICAxMjpcXHRcXHRkZXBlbmRzIG9uIEJMS19ERVZfTlVMTF9CTEsgXFx1MDAyNlxcdTAwMjYgRkFVTFRfSU5KRUNUSU9OX0NPTkZJR0ZTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA5OjIzOjU2Ljg5NjI3MDM0NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MjkzNTAxNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBab25lZCBEZXZpY2UgSW50ZXJhY3Rpb25zIHdpdGggYEJMS19ERVZfTlVMTF9CTEtgKipcblxuUmlnaHQsIHNvIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gaGVyZSBpcyBgQkxLX0RFVl9OVUxMX0JMS2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIHRpZXMgaW4gd2l0aCB0aGUgYnJvYWRlciBzeXN0ZW0uIEkgc2VlIHRoYXQgdGhlIHBhdGNoIHNlZW1zIHRvIGJlIHJlYWNoaW5nIGludG8gem9uZWQgZGV2aWNlIGZ1bmN0aW9uYWxpdGllcywgc3BlY2lmaWNhbGx5IGB6b25lX2NvbmRfc3RvcmVgIGFuZCBgbnVsbF9mcmVlX3pvbmVkX2RldmAuIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoYXQgcmFpc2VzIGEgZmxhZy4gV2UncmUgZGVhbGluZyB3aXRoIGEgYmxvY2sgZGV2aWNlLCBhbmQgem9uZWQgZGV2aWNlcyBoYXZlIHRoZWlyIHVuaXF1ZSBjaGFyYWN0ZXJpc3RpY3MuIEl04oCZcyBpbXBvcnRhbnQgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IHNwZWNpYWxpemVkIGNvbmZpZ3VyYXRpb24gdGhhdCBpbnRlcmFjdHMgd2l0aCB0aGUgem9uZWQgYXNwZWN0cyB3aXRoaW4gdGhlIG51bGwgYmxvY2sgZGV2aWNlIGNvbnRleHQuIE15IG5leHQgc3RlcCBpcyB0byBkZXRlcm1pbmUgaWYgYW55IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgc3BlY2lmaWMgdG8gdGhpcyBpbnRlcnNlY3Rpb24gb2YgYSBudWxsIGJsb2NrIGRldmljZSBhbmQgYSB6b25lZCBjb25maWd1cmF0aW9uLiBJcyB0aGVyZSBhbnkgd2F5IHRoYXQgbnVsbCBibG9jayBkZXZpY2UgZmVhdHVyZXMgY2FuIGludGVyYWN0IHdpdGggem9uZWQgY29uZmlndXJhdGlvbnM/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NzgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA5OjI0OjAwLjUyNTYyMzA5M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTMxMTA4ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnVsbF9mcmVlX3pvbmVkX2RldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE3ODA9c3RhdGljIHZvaWQgbnVsbF9kZWxfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xODAxLVxcdHB1dF9kaXNrKG51bGxiLVxcdTAwM2VkaXNrKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxODAyOlxcdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xODAzLVxcdGlmIChudWxsYi1cXHUwMDNldGFnX3NldCA9PSBcXHUwMDI2bnVsbGItXFx1MDAzZV9fdGFnX3NldClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE5Nzg9c3RhdGljIGludCBudWxsX2FkZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA4OS1vdXRfY2xlYW51cF96b25lOlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIwOTA6XFx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwOTEtb3V0X2NsZWFudXBfdGFnczpcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaD0xNDM9aW50IG51bGxfcmVnaXN0ZXJfem9uZWRfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaDoxNDQ6dm9pZCBudWxsX2ZyZWVfem9uZWRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTE0NS1pbnQgbnVsbF9yZXBvcnRfem9uZXMoc3RydWN0IGdlbmRpc2sgKmRpc2ssIHNlY3Rvcl90IHNlY3RvcixcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaD0xNjE9c3RhdGljIGlubGluZSBpbnQgbnVsbF9yZWdpc3Rlcl96b25lZF9kZXYoc3RydWN0IG51bGxiICpudWxsYilcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC0xNjQtfVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaDoxNjU6c3RhdGljIGlubGluZSB2b2lkIG51bGxfZnJlZV96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KSB7fVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC0xNjYtc3RhdGljIGlubGluZSBibGtfc3RhdHVzX3QgbnVsbF9wcm9jZXNzX3pvbmVkX2NtZChzdHJ1Y3QgbnVsbGJfY21kICpjbWQsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmM9MTc1PWludCBudWxsX3JlZ2lzdGVyX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jLTE4Ni1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmM6MTg3OnZvaWQgbnVsbF9mcmVlX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jLTE4OC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA5OjI0OjAwLjgxODczODA5MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxODc4MDk4OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBCdWlsZCBQcm9jZXNzIGZvciBab25lZCBCbG9jayBEZXZpY2VzKipcblxuQWxyaWdodCwgSSdtIHRoaW5raW5nIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgem9uZWQuY2Agd2l0aGluIHRoZSBudWxsIGJsb2NrIGRyaXZlciBpcyBnZXR0aW5nIGNvbXBpbGVkLiBTcGVjaWZpY2FsbHksIEknbSB3b25kZXJpbmcgYWJvdXQgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gYW5kIGRlcGVuZGVuY2llcy4gTXkgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9NYWtlZmlsZWAuIFRoYXQncyBhbG1vc3QgYWx3YXlzIHRoZSBmaXJzdCBwbGFjZSB0byBsb29rIHdoZW4gdHJ5aW5nIHRvIHVudGFuZ2xlIGJ1aWxkIHByb2Nlc3NlcyB3aXRoaW4gdGhlIGtlcm5lbC4gVGhlIE1ha2VmaWxlIHNob3VsZCBzaGVkIGxpZ2h0IG9uIGFueSBzcGVjaWZpYyBmbGFncywgaW5jbHVkZSBkaXJlY3Rvcmllcywgb3IgbGlicmFyeSBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgYmVpbmcgdXNlZCBkdXJpbmcgdGhlIGNvbXBpbGF0aW9uIG9mIGB6b25lZC5jYC4gSSdtIGhvcGluZyBpdCdsbCByZXZlYWwgaG93IHRoZSB6b25lZCBibG9jayBmdW5jdGlvbmFsaXR5IGlzIGludGVncmF0ZWQsIHdoZXRoZXIgaXQncyBjb25kaXRpb25hbGx5IGNvbXBpbGVkIG9yIHBhcnQgb2YgdGhlIHN0YW5kYXJkIG51bGwgYmxvY2sgZHJpdmVyIGJ1aWxkLCBhbmQgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIHJlcXVpcmVkIGZvciBlbmFibGluZyB6b25lZCBtb2RlLiBUaGUgTWFrZWZpbGUgc2hvdWxkIGFsc28gb3V0bGluZSB0aGUgb2JqZWN0IGZpbGVzIGFuZCBsaWJyYXJ5IGxpbmthZ2VzLCBnaXZpbmcgbWUgdGhlIGNydWNpYWwgY29tcGlsZSBhbmQgbGluayBmbGFncyB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDY2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDk6MjQ6MDQuMDA2NTQ5NTcxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRcXG4gICAzOlxcdCMgbmVlZGVkIGZvciB0cmFjZSBldmVudHNcXG4gICA0OlxcdGNjZmxhZ3MteVxcdFxcdFxcdCs9IC1JJChzcmMpXFxuICAgNTpcXHRcXG4gICA2OlxcdG9iai0kKENPTkZJR19CTEtfREVWX05VTExfQkxLKVxcdCs9IG51bGxfYmxrLm9cXG4gICA3OlxcdG51bGxfYmxrLW9ianNcXHRcXHRcXHQ6PSBtYWluLm9cXG4gICA4OlxcdGlmZXEgKCQoQ09ORklHX0JMS19ERVZfWk9ORUQpLCB5KVxcbiAgIDk6XFx0bnVsbF9ibGstJChDT05GSUdfVFJBQ0lORykgXFx0Kz0gdHJhY2Uub1xcbiAgMTA6XFx0ZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDk6MjQ6MDQuMDA2NjA0NjkxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwODQ0MDgwOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aG9zZSBsaW5lczpcblxuKipBbmFseXppbmcgdGhlIE1ha2VmaWxlIGZvciBudWxsX2JsayoqXG5cbk9rYXksIGhvbGQgb24uIEJlZm9yZSBJIGp1bXAgdG8gY29uY2x1c2lvbnMgb3Igc3RhcnQgbW9kaWZ5aW5nIGFueXRoaW5nLCBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGdyYXNwIG9mIHRoZSBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9NYWtlZmlsZWAuIEkgY2FuJ3QganVzdCBhc3N1bWUgSSB1bmRlcnN0YW5kIHRoZSBidWlsZCBwcm9jZXNzIGZyb20gdGhlIHRvcCBsZXZlbDsgSSBuZWVkIHRvIGxvb2sgYXQgdGhlIHNwZWNpZmljcyBvZiAqdGhpcyogcGFydGljdWxhciBtb2R1bGUuIFdoYXQgYXJlIHRoZSBkZXBlbmRlbmNpZXM/IEFyZSB0aGVyZSBhbnkgcGVjdWxpYXIgYnVpbGQgZmxhZ3MgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBjb25kaXRpb25hbCBpbmNsdXNpb25zIGJhc2VkIG9uIGtlcm5lbCBjb25maWd1cmF0aW9uPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBtb2R1bGUgZml0cyBpbnRvIHRoZSBsYXJnZXIgYmxvY2sgZGV2aWNlIGVjb3N5c3RlbSBiZWZvcmUgSSBldmVuIHRoaW5rIGFib3V0IG1ha2luZyBjaGFuZ2VzIG9yIGFkZGl0aW9ucy4gQSBjdXJzb3J5IGdsYW5jZSB3b24ndCBjdXQgaXQuIFRpbWUgdG8gZGlnIGludG8gdGhlIGRldGFpbHMgYW5kIG1ha2Ugc3VyZSBJIGRvbid0IG1pc3MgYW55IGNyaXRpY2FsIGNvbnRleHQuIEdvdHRhIGV4YW1pbmUgdGhvc2UgbGluZXMgdGhvcm91Z2hseSB0byB1bmRlcnN0YW5kIHRoZSBudWFuY2VzIG9mIGl0cyBjb21waWxhdGlvbiBhbmQgbGlua2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Njg5MywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDk6MjQ6MDcuMDkxMDE0OTY5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRcXG4gICAzOlxcdCMgbmVlZGVkIGZvciB0cmFjZSBldmVudHNcXG4gICA0OlxcdGNjZmxhZ3MteVxcdFxcdFxcdCs9IC1JJChzcmMpXFxuICAgNTpcXHRcXG4gICA2OlxcdG9iai0kKENPTkZJR19CTEtfREVWX05VTExfQkxLKVxcdCs9IG51bGxfYmxrLm9cXG4gICA3OlxcdG51bGxfYmxrLW9ianNcXHRcXHRcXHQ6PSBtYWluLm9cXG4gICA4OlxcdGlmZXEgKCQoQ09ORklHX0JMS19ERVZfWk9ORUQpLCB5KVxcbiAgIDk6XFx0bnVsbF9ibGstJChDT05GSUdfVFJBQ0lORykgXFx0Kz0gdHJhY2Uub1xcbiAgMTA6XFx0ZW5kaWZcXG4gIDExOlxcdG51bGxfYmxrLSQoQ09ORklHX0JMS19ERVZfWk9ORUQpICs9IHpvbmVkLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDk6MjQ6MDcuMDkxMDc5NzM5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkyMDYzMTIxNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBab25lZCBCbG9jayBEZXZpY2UgU3VwcG9ydCBQYXRjaCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgcmVsYXRlZCB0byB6b25lZCBibG9jayBkZXZpY2Ugc3VwcG9ydCwgYW5kIHRoZSBmaXJzdCB0aGluZyBJJ20gbm90aW5nIGlzIHRoYXQgYENPTkZJR19CTEtfREVWX1pPTkVEYCBpcyBhIHByZXJlcXVpc2l0ZSwgd2hpY2ggaXMgZXhwZWN0ZWQuIE5vdywgbGV0J3MgZGl2ZSBpbnRvIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjaGFuZ2VzLlxuXG5JJ3ZlIGdvdCBhIGxpc3Qgb2YgdGhlIHVwZGF0ZWQgZnVuY3Rpb25zIGhlcmUuIExvb2tzIGxpa2UgdGhlcmUgYXJlIHNvbWUgbWFjcm8tZ2VuZXJhdGVkIGZ1bmN0aW9ucywgbGlrZSBgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZWAsIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc2hvd2AsIGFuZCBgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlYC4gVGhvc2UgbWFjcm8tZ2VuZXJhdGVkIG9uZXMgY291bGQgYmUgaW50ZXJlc3RpbmcsIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgYE5BTUVgIHJlcHJlc2VudHMgdG8gdW5kZXJzdGFuZCB3aGF0J3MgYWN0dWFsbHkgYmVpbmcgbW9kaWZpZWQuIEJlc2lkZXMgdGhlIG1hY3JvcywgdGhlcmUgYXJlIGZ1bmN0aW9ucyB0aGF0IGxvb2sgbGlrZSB0aGV5IGhhbmRsZSBxdWV1ZSBtYW5hZ2VtZW50OiBgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc2AsIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCwgYW5kIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AuIEkgc2hvdWxkIGdpdmUgdGhlc2UgZnVuY3Rpb25zIGNsb3NlciBjb25zaWRlcmF0aW9uLiBUaGVyZSBhcmUgYWxzbyBzb21lIHBvd2VyIGFuZCB6b25lIGNvbnRyb2wgZnVuY3Rpb25zOiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3dgLCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCwgYG51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlYCwgYW5kIGBudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlYC4gRmluYWxseSwgdGhlcmUgYXJlIGEgZmV3IGRldmljZSBsaWZlY3ljbGUgZnVuY3Rpb25zOiBgbnVsbF9mcmVlX2RldmAsIGBudWxsX2RlbF9kZXZgLCBgbnVsbF9pbml0YCwgYW5kIGBudWxsX2V4aXRgLlxuXG5JJ20gbWFraW5nIGEgbWVudGFsIG5vdGUgdGhhdCBgbnVsbF9pbml0YCBhbmQgYG51bGxfZXhpdGAgYXJlIG1vZHVsZSBpbml0L2V4aXQgZnVuY3Rpb25zLiBXaGlsZSB0aGV5J3JlIG1vZGlmaWVkLCB0aGV5J3JlIG5vdCBuZWNlc3NhcmlseSB0aGUgYmVzdCBjYW5kaWRhdGVzIGZvciBmb2N1c2luZyBmdXp6aW5nIGVmZm9ydHMsIGJ1dCB0aGV5J3JlIHN0aWxsIHdvcnRoIGtub3dpbmcgYWJvdXQuIExldCdzIHNlZSwgd2hhdCBpcyBgTkFNRWAgYmVpbmcgdXNlZCBmb3IgaW4gdGhlIG1hY3JvLWdlbmVyYXRlZCBmdW5jdGlvbnM/IEtub3dpbmcgdGhpcyB3aWxsIGhlbHAgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzExLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDI1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDk6MjQ6MTYuMjk3MzkzNjc1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjU3Nzg0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdGU19BVFRSXFxcXChudWxsYl9kZXZpY2VfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTM1OD1udWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjb25zdCBjaGFyICpwYWdlLFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTM4MS19XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjM4MjpDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIE5BTUUpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTM4My1cXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTQ5Nz1zdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTM1LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjUzNjpDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIHBvd2VyKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MzctXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz01NDU9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2JhZGJsb2Nrc19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01ODgtfVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjU4OTpDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIGJhZGJsb2Nrcyk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTkwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwOToyNDoxNi4zNTk5NzY1NTFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA5Mzg0NTY4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipDb25maWdmcyBBdHRyaWJ1dGUgR2VuZXJhdGlvbjogQSBGYW1pbGlhciBQYXR0ZXJuKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJJ20gc2VlaW5nIGEgbG90IG9mIHRoZXNlIGNvbmZpZ2ZzIGF0dHJpYnV0ZXMgcG9wcGluZyB1cC4gSXQncyBhbG1vc3QuLi4gcHJlZGljdGFibGUuIEltbWVkaWF0ZWx5LCBteSBtaW5kIGp1bXBzIHRvIHRoZSBtZWNoYW5pY3Mgb2YgdGhlaXIgY3JlYXRpb24uIEFuZCBzdXJlIGVub3VnaCwgdGhhdCBtYWNybyBgTlVMTEJfREVWSUNFX0FUVFJgIGlzIHRoZSBrZXkuIEl0J3MgYSBjbGFzc2ljOiBhIGNvZGUgZ2VuZXJhdGlvbiB0b29sLiBJIGNhbiBwcmFjdGljYWxseSAqc2VlKiB0aGUgcGF0dGVybiBpdCBlc3RhYmxpc2hlcyDigJMgYSBzdHJ1Y3R1cmVkIHdheSB0byBkZWZpbmUgYW5kIGluamVjdCB0aGUgZGVzaXJlZCBhdHRyaWJ1dGVzIGludG8gdGhlIGNvbmZpZ2ZzIHN5c3RlbS4gS25vd2luZyB0aGUgbWFjcm8gaXMga2V5LCBiZWNhdXNlIGl0IGdpdmVzIHRoZSBoYW5kbGUgYnkgd2hpY2ggSSBjYW4gdW5kZXJzdGFuZCB0aGUgbmF0dXJlIG9mIHRoZSBhdHRyaWJ1dGVzIGFuZCB0aGVpciBmdW5jdGlvbmFsaXR5LiBUaGlzIGxpa2VseSB0cmFuc2xhdGVzIHRvIGEgbW9yZSBzdHJlYW1saW5lZCBhbmQgbWFpbnRhaW5hYmxlIGFwcHJvYWNoIGZvciBleHBvc2luZyBkZXZpY2Utc3BlY2lmaWMgcGFyYW1ldGVycyBhbmQgY29udHJvbHMgdGhyb3VnaCB0aGUgY29uZmlnZnMgaW50ZXJmYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTE3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDk6MjQ6MTkuNDUzODI0MjI4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Nzk4OTYzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJOVUxMQl9ERVZJQ0VfQVRUUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0zMjk9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zNDMtLyogVGhlIGZvbGxvd2luZyBtYWNybyBzaG91bGQgb25seSBiZSB1c2VkIHdpdGggVFlQRSA9IHt1aW50LCB1bG9uZywgYm9vbH0uICovXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MzQ0OiNkZWZpbmUgTlVMTEJfREVWSUNFX0FUVFIoTkFNRSwgVFlQRSwgQVBQTFkpXFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTM0NS1zdGF0aWMgc3NpemVfdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTQ0Nj1zdGF0aWMgaW50IG51bGxiX2FwcGx5X3BvbGxfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ1MS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTI6TlVMTEJfREVWSUNFX0FUVFIoc2l6ZSwgdWxvbmcsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1MzpOVUxMQl9ERVZJQ0VfQVRUUihjb21wbGV0aW9uX25zZWMsIHVsb25nLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTQ6TlVMTEJfREVWSUNFX0FUVFIoc3VibWl0X3F1ZXVlcywgdWludCwgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDU1Ok5VTExCX0RFVklDRV9BVFRSKHBvbGxfcXVldWVzLCB1aW50LCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDU2Ok5VTExCX0RFVklDRV9BVFRSKGhvbWVfbm9kZSwgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDU3Ok5VTExCX0RFVklDRV9BVFRSKHF1ZXVlX21vZGUsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1ODpOVUxMQl9ERVZJQ0VfQVRUUihibG9ja3NpemUsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1OTpOVUxMQl9ERVZJQ0VfQVRUUihtYXhfc2VjdG9ycywgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDYwOk5VTExCX0RFVklDRV9BVFRSKGlycW1vZGUsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2MTpOVUxMQl9ERVZJQ0VfQVRUUihod19xdWV1ZV9kZXB0aCwgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDYyOk5VTExCX0RFVklDRV9BVFRSKGluZGV4LCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjM6TlVMTEJfREVWSUNFX0FUVFIoYmxvY2tpbmcsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2NDpOVUxMQl9ERVZJQ0VfQVRUUih1c2VfcGVyX25vZGVfaGN0eCwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY1Ok5VTExCX0RFVklDRV9BVFRSKG1lbW9yeV9iYWNrZWQsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2NjpOVUxMQl9ERVZJQ0VfQVRUUihkaXNjYXJkLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Njc6TlVMTEJfREVWSUNFX0FUVFIobWJwcywgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY4Ok5VTExCX0RFVklDRV9BVFRSKGNhY2hlX3NpemUsIHVsb25nLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Njk6TlVMTEJfREVWSUNFX0FUVFIoem9uZWQsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3MDpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX3NpemUsIHVsb25nLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzE6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9jYXBhY2l0eSwgdWxvbmcsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3MjpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX25yX2NvbnYsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3MzpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX21heF9vcGVuLCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzQ6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9tYXhfYWN0aXZlLCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzU6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9hcHBlbmRfbWF4X3NlY3RvcnMsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3NjpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX2Z1bGwsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3NzpOVUxMQl9ERVZJQ0VfQVRUUih2aXJ0X2JvdW5kYXJ5LCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Nzg6TlVMTEJfREVWSUNFX0FUVFIobm9fc2NoZWQsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3OTpOVUxMQl9ERVZJQ0VfQVRUUihzaGFyZWRfdGFncywgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDgwOk5VTExCX0RFVklDRV9BVFRSKHNoYXJlZF90YWdfYml0bWFwLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0ODE6TlVMTEJfREVWSUNFX0FUVFIoZnVhLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0ODI6TlVMTEJfREVWSUNFX0FUVFIocm90YXRpb25hbCwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDgzOk5VTExCX0RFVklDRV9BVFRSKGJhZGJsb2Nrc19vbmNlLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0ODQ6TlVMTEJfREVWSUNFX0FUVFIoYmFkYmxvY2tzX3BhcnRpYWxfaW8sIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ4NS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDk6MjQ6MTkuNTExODE4MTkzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNjQ0MjQ2NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSBDaGFuZ2VzKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBhIGZldyBrZXkgYXJlYXMgb2YgdGhlIG51bGwgYmxvY2sgZGV2aWNlIGRyaXZlci4gSXQgc2VlbXMgbGlrZSB0aGUgY29yZSBvZiB0aGUgbW9kaWZpY2F0aW9uIHJldm9sdmVzIGFyb3VuZCBob3cgZGV2aWNlIGF0dHJpYnV0ZXMgYXJlIGhhbmRsZWQsIHNwZWNpZmljYWxseSB0aGUgYG51bGxiX2RldmljZV8jI05BTUUjI19zaG93YCBhbmQgYG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZWAgZnVuY3Rpb25zLCB3aGljaCBhcmUgY3JlYXRlZCB1c2luZyB0aGUgYE5VTExCX0RFVklDRV9BVFRSYCBtYWNyby4gSSBuZWVkIHRvIGtlZXAgYW4gZXllIG9uIGhvdyB0aGF0IG1hY3JvIGlzIGJlaW5nIHVzZWQgYW5kIG1vZGlmaWVkLCBnaXZlbiBteSBleHBlcmllbmNlIHdpdGggc2ltaWxhciBkcml2ZXIgZnJhbWV3b3Jrcy5cblxuQmV5b25kIHRob3NlLCBpdCdzIGFsc28gbWFraW5nIGNoYW5nZXMgdG8gYSBoYW5kZnVsIG9mIG90aGVyIGF0dHJpYnV0ZS1yZWxhdGVkIGZ1bmN0aW9uczogYG51bGxiX2RldmljZV9wb3dlcl9zaG93YCwgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAsIGBudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZWAsIGFuZCBgbnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZWAuIFRoZXNlIGFyZSBjbGVhcmx5IHJlbGF0ZWQgdG8gcG93ZXIgbWFuYWdlbWVudCBhbmQsIGludGVyZXN0aW5nbHksIHpvbmVkIGJsb2NrIGRldmljZSBmdW5jdGlvbmFsaXR5LlxuXG5MZXQgbWUgbWFrZSBhIG1lbnRhbCBub3RlIG9mIGFsbCB0aGUgc3ltYm9scyB0aGF0IHNlZW0gdG8gYmUga2V5IHRvIHVuZGVyc3RhbmQ6IGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCwgdGhlIHBvd2VyLXJlbGF0ZWQgYXR0cmlidXRlIGhhbmRsZXJzLCB0aGUgem9uZWQtcmVsYXRlZCBhdHRyaWJ1dGUgaGFuZGxlcnMsIGBudWxsX2RlbF9kZXZgLCBhbmQgYG51bGxfZnJlZV9kZXZgLiBJIG5lZWQgdG8gdHJhY2sgdGhvc2UgZG93bi5cblxuSXQgYWxzbyBsb29rcyBsaWtlIHRoaXMgcGF0Y2ggaXMgaW5mbHVlbmNlZCBieSB0d28gY29uZmlnIG9wdGlvbnM6IGBCTEtfREVWX05VTExfQkxLYCBhbmQgYEJMS19ERVZfWk9ORURgLiBUaGUgc2Vjb25kIG9uZSwgYEJMS19ERVZfWk9ORURgLCBpcyBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcuIFpvbmVkIGJsb2NrIGRldmljZXMgYXJlIGEgbW9yZSByZWNlbnQgYWRkaXRpb24gdG8gdGhlIGJsb2NrIGxheWVyLCBhbmQgSSBrbm93IHRoZXkgcmVxdWlyZSBzcGVjaWZpYyBoYW5kbGluZy4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBCTEtfREVWX1pPTkVEYCBpbiB0aGUgYmxvY2sgZHJpdmVyIGRpcmVjdG9yeS4gVGhhdCB3b3VsZCB0ZWxsIG1lIHdoYXQncyBkZXBlbmRlbnQgb24gdGhhdCBzZXR0aW5nLiBUaGlzIHBhdGNoIHZlcnkgbGlrZWx5IGRlYWxzIHdpdGggYWRkaW5nIHpvbmVkIHN1cHBvcnQgYW5kIGl0cyBpbXBsaWNhdGlvbnMgb24gdGhlIG51bGwgYmxvY2sgZGV2aWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDA2NywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwOToyNDoyNC41NzYyNDQ5MjJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNjUyODE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCTEtfREVWX1pPTkVEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svS2NvbmZpZz03Nz1jb25maWcgQkxLX0RFVl9XUklURV9NT1VOVEVEXFxuLS1cXG5ibG9jay9LY29uZmlnLTk2LVxcbmJsb2NrL0tjb25maWc6OTc6Y29uZmlnIEJMS19ERVZfWk9ORURcXG5ibG9jay9LY29uZmlnLTk4LVxcdGJvb2wgXFxcIlpvbmVkIGJsb2NrIGRldmljZSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwOToyNDoyNC42MzY5MDIyNjhaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI5NDUxMjQwNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIG51bGxfYmxrIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEkndmUgdGFrZW4gYSBsb29rIGF0IHRoaXMgcGF0Y2ggYW5kIGhlcmUncyBteSBicmVha2Rvd24uIEZpcnN0LCB5ZXMsIGBCTEtfREVWX1pPTkVEYCBpcyBhIHZhbGlkIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIGRyaXZlci4gVGhlIHBhdGNoIG1vZGlmaWVzIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCBhbmQgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYCwgc28gSSdsbCBhZGQgdGhvc2UgdG8gdGhlIGxpc3Qgb2YgZm9jdXMgc3ltYm9scy5cblxuSSdtIGFsc28gcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byB0aGUgbWFjcm9zIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc2hvd2AgYW5kIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmVgLCB3aGljaCBnZW5lcmF0ZSBhIHNlcmllcyBvZiBzaW1pbGFyIGZ1bmN0aW9ucy4gU2luY2UgSSBjYW4ndCBleHBsaWNpdGx5IGxpc3QgKmV2ZXJ5KiBpbnN0YW5jZSwgSSdsbCBmb2N1cyBvbiB0aGUgZnVuY3Rpb25zIHRoYXQgaGF2ZSBleHBsaWNpdCBkZWNsYXJhdGlvbnM6IGBudWxsYl9kZXZpY2VfcG93ZXJfc2hvd2AsIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLCBgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmVgLCBhbmQgYG51bGxiX2RldmljZV96b25lX29mZmxpbmVfc3RvcmVgLiBQbHVzIEkga25vdyBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AgYW5kIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AgYXJlIGV4cGxpY2l0bHkgZGVmaW5lZC4gVGhlIHJlc3Qgc2hvdWxkIGJlIGNvdmVyZWQuXG5cbkkgbmVlZCB0byBtYWtlIHN1cmUgd2UncmUgbm90IG1pc3NpbmcgYW55IGRlcGVuZGVuY2llcy4gSSd2ZSBjb25maXJtZWQgdGhhdCBgQ09ORklHRlNfRlNgIGlzIGFscmVhZHkgaW1wbGljaXRseSBzZWxlY3RlZCBieSBgQkxLX0RFVl9OVUxMX0JMS2AsIHNvIHdlJ3JlIGdvb2QgdGhlcmUuICBJJ3ZlIGFsc28gdmVyaWZpZWQgdGhhdCBgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc2AgaXMgcmVhY2hhYmxlIHRocm91Z2ggdGhlIGNvbmZpZ2ZzIGF0dHJpYnV0ZXMgYHN1Ym1pdF9xdWV1ZXNgIGFuZCBgcG9sbF9xdWV1ZXNgLlxuXG5BcmUgdGhlcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8gTm90IHJlbGF0ZWQgdG8gZmF1bHQgaW5qZWN0aW9uLCBzbyBJIGRvbid0IHNlZSBhbnl0aGluZy5cblxuTm93LCBsZXQncyBhbmFseXplIHRoZSBwYXRjaCdzIGZ1bmN0aW9uYWwgY2hhbmdlcy4gVGhlIGNvZGUgbm93IHByZXZlbnRzIHJlc2l6aW5nIGhhcmR3YXJlIHF1ZXVlcyBpZiBgc2hhcmVkX3RhZ3NgIGlzIGVuYWJsZWQsIHdoaWNoIGhhcyBzb21lIGZ1bmN0aW9uYWwgaW1wbGljYXRpb25zLiBBbHNvLCB0aGUgcGF0Y2ggYWxzbyBjaGFuZ2VzIHRoZSBkZWxldGlvbiBzZXF1ZW5jZSB0byBwcm9wZXJseSBmcmVlIHRoZSB6b25lZCBkZXZpY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS5cblxuQmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbkhlcmUgYXJlIHRoZSBjb25maXJtZWQgY29uZmlndXJhdGlvbnM6XG5cbiogICBgQkxLX0RFVl9OVUxMX0JMS2BcbiogICBgQkxLX0RFVl9aT05FRGBcblxuQW5kIHRoZSBrZXkgc3ltYm9scyB0byBmb2N1cyBvbjpcblxuKiAgIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYFxuKiAgIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYFxuKiAgIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2BcbiogICBgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3dgXG4qICAgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWBcbiogICBgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmVgXG4qICAgYG51bGxiX2RldmljZV96b25lX29mZmxpbmVfc3RvcmVgXG4qICAgYG51bGxfZGVsX2RldmBcbiogICBgbnVsbF9mcmVlX2RldmBcblxuSSdtIGdvaW5nIHRvIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoaXMgaW5mb3JtYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwODMwLCJPdXRwdXRUb2tlbnMiOjIwNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDk6MjQ6MzcuNTgyMDI4MTkzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE3ODcwMzExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCIsXG4gICAgXCJCTEtfREVWX1pPTkVEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc1wiLFxuICAgIFwibnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc1wiLFxuICAgIFwibnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNcIixcbiAgICBcIm51bGxiX2RldmljZV9wb3dlcl9zaG93XCIsXG4gICAgXCJudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVcIixcbiAgICBcIm51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlXCIsXG4gICAgXCJudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlXCIsXG4gICAgXCJudWxsX2RlbF9kZXZcIixcbiAgICBcIm51bGxfZnJlZV9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnVsbF9ibGsgZHJpdmVyIHRvIHJlamVjdCByZXNpemluZyBoYXJkd2FyZSBxdWV1ZXMgd2hlbiBzaGFyZWRfdGFncyBpcyBlbmFibGVkLCBhZGRzIGxvY2tpbmcgdG8gY29uZmlnZnMgYXR0cmlidXRlIGFjY2Vzc29ycywgYW5kIGZpeGVzIHRoZSBpbml0aWFsaXphdGlvbi9jbGVhbnVwIG9yZGVyIG9mIHpvbmVkIGRldmljZXMgYW5kIHRoZSBtb2R1bGUgaXRzZWxmLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBibG9jayBkcml2ZXIgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCIsXG4gICAgXCJCTEtfREVWX1pPTkVEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc1wiLFxuICAgIFwibnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc1wiLFxuICAgIFwibnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNcIixcbiAgICBcIm51bGxiX2RldmljZV9wb3dlcl9zaG93XCIsXG4gICAgXCJudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVcIixcbiAgICBcIm51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlXCIsXG4gICAgXCJudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlXCIsXG4gICAgXCJudWxsX2RlbF9kZXZcIixcbiAgICBcIm51bGxfZnJlZV9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnVsbF9ibGsgZHJpdmVyIHRvIHJlamVjdCByZXNpemluZyBoYXJkd2FyZSBxdWV1ZXMgd2hlbiBzaGFyZWRfdGFncyBpcyBlbmFibGVkLCBhZGRzIGxvY2tpbmcgdG8gY29uZmlnZnMgYXR0cmlidXRlIGFjY2Vzc29ycywgYW5kIGZpeGVzIHRoZSBpbml0aWFsaXphdGlvbi9jbGVhbnVwIG9yZGVyIG9mIHpvbmVkIGRldmljZXMgYW5kIHRoZSBtb2R1bGUgaXRzZWxmLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBibG9jayBkcml2ZXIgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrkxvz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-14 08:48:11 +0000 UTC FinishedAt: 2026-07-14 09:24:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3b029c035b34bbc693405ddf759f0e9b920c27f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK", "BLK_DEV_ZONED" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3b029c035b34bbc693405ddf759f0e9b920c27f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK", "BLK_DEV_ZONED" ], "series_id": "72c8c07d-af71-4448-8dce-ed89eec4aa63" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "nullb_update_nr_hw_queues", "nullb_apply_submit_queues", "nullb_apply_poll_queues", "nullb_device_power_show", "nullb_device_power_store", "nullb_device_zone_readonly_store", "nullb_device_zone_offline_store", "null_del_dev", "null_free_dev" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE0IDA5OjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OywKICAgICYjMzQ7QkxLX0RFVl9aT05FRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc2hvdyYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsX2RlbF9kZXYmIzM0OywKICAgICYjMzQ7bnVsbF9mcmVlX2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnVsbF9ibGsgZHJpdmVyIHRvIHJlamVjdCByZXNpemluZyBoYXJkd2FyZSBxdWV1ZXMgd2hlbiBzaGFyZWRfdGFncyBpcyBlbmFibGVkLCBhZGRzIGxvY2tpbmcgdG8gY29uZmlnZnMgYXR0cmlidXRlIGFjY2Vzc29ycywgYW5kIGZpeGVzIHRoZSBpbml0aWFsaXphdGlvbi9jbGVhbnVwIG9yZGVyIG9mIHpvbmVkIGRldmljZXMgYW5kIHRoZSBtb2R1bGUgaXRzZWxmLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBibG9jayBkcml2ZXIgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwOToyMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGEzZmM0NzNmNDJhYTA2OGE1MjRjMjYyODA2MTQ1YWY4YjBmNmQ3ZGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAwOToyMzo0NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5pbmRleCBmOGMwZmQ1N2UwNDFhOC4uYzg0ODdhNjMwZTFhMDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbkBAIC02Niw3ICYjNDM7NjYsNyBAQCBzdHJ1Y3QgbnVsbGJfcGFnZSB7XG4gI2RlZmluZSBOVUxMQl9QQUdFX0ZSRUUgKE1BUF9TWiAtIDIpXG4gXG4gc3RhdGljIExJU1RfSEVBRChudWxsYl9saXN0KTtcbi1zdGF0aWMgc3RydWN0IG11dGV4IGxvY2s7XG4mIzQzO3N0YXRpYyBERUZJTkVfTVVURVgobG9jayk7XG4gc3RhdGljIGludCBudWxsX21ham9yO1xuIHN0YXRpYyBERUZJTkVfSURBKG51bGxiX2luZGV4ZXMpO1xuIHN0YXRpYyBzdHJ1Y3QgYmxrX21xX3RhZ19zZXQgdGFnX3NldDtcbkBAIC0zNDUsOCAmIzQzOzM0NSwxNCBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3N0b3JlKGJvb2wgKnZhbCwgY29uc3QgY2hhciAqcGFnZSxcbiBzdGF0aWMgc3NpemVfdFx0XHRcdFx0XHRcdFx0XHRcXFxuIG51bGxiX2RldmljZV8jI05BTUUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcdFxcXG4ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRyZXR1cm4gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc2hvdyhcdFx0XHRcdFxcXG4mIzQzO1x0c3NpemVfdCByZXQ7XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRyZXQgPSBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zaG93KFx0XHRcdFx0XFxcbiBcdFx0XHRcdHRvX251bGxiX2RldmljZShpdGVtKS1cdTAwM2VOQU1FLCBwYWdlKTtcdFxcXG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0cmV0dXJuIHJldDtcdFx0XHRcdFx0XHRcdFxcXG4gfVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gc3RhdGljIHNzaXplX3RcdFx0XHRcdFx0XHRcdFx0XFxcbiBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjb25zdCBjaGFyICpwYWdlLFx0XFxcbkBAIC0zNjAsMTMgJiM0MzszNjYsMTcgQEAgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcdFxcXG4gXHRyZXQgPSBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zdG9yZShcdTAwMjZuZXdfdmFsdWUsIHBhZ2UsIGNvdW50KTtcXFxuIFx0aWYgKHJldCBcdTAwM2MgMClcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdHJldHVybiByZXQ7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRyZXQgPSAwO1x0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1x0XHRcdFx0XHRcdFxcXG4gXHRpZiAoYXBwbHlfZm4pXHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRyZXQgPSBhcHBseV9mbihkZXYsIG5ld192YWx1ZSk7XHRcdFx0XHRcXFxuIFx0ZWxzZSBpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncykpIFx0XFxcbiBcdFx0cmV0ID0gLUVCVVNZO1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0aWYgKCFyZXQpXHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0ZGV2LVx1MDAzZU5BTUUgPSBuZXdfdmFsdWU7XHRcdFx0XHRcdFxcXG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1x0XHRcdFx0XHRcdFxcXG4gXHRpZiAocmV0IFx1MDAzYyAwKVx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0cmV0dXJuIHJldDtcdFx0XHRcdFx0XHRcXFxuLVx0ZGV2LVx1MDAzZU5BTUUgPSBuZXdfdmFsdWU7XHRcdFx0XHRcdFx0XFxcbiBcdHJldHVybiBjb3VudDtcdFx0XHRcdFx0XHRcdFxcXG4gfVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gQ09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBOQU1FKTtcbkBAIC0zODIsNiAmIzQzOzM5MiwxNSBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0aWYgKCFkZXYtXHUwMDNlbnVsbGIpXG4gXHRcdHJldHVybiAwO1xuIFxuJiM0MztcdC8qXG4mIzQzO1x0ICogQSBzaGFyZWQgdGFnX3NldCBpcyBtYXBwZWQgdmlhIHRoZSBtb2R1bGUtd2lkZSBxdWV1ZSBjb3VudHMsIHNvIGFcbiYjNDM7XHQgKiBwZXItZGV2aWNlIHJlc2l6ZSBpcyBtZWFuaW5nbGVzcy4gT24gc2hyaW5rIGl0IHdvdWxkIGFsc28gbGVhdmVcbiYjNDM7XHQgKiBtcV9tYXBbXSBwb2ludGluZyBhdCBOVUxMZWQgaGN0eCBzbG90cywgY2F1c2luZyBhIE5VTEwgZGVyZWYgaW5cbiYjNDM7XHQgKiBibGtfbXFfbWFwX3N3cXVldWUoKS4gUmVqZWN0IGl0LlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChkZXYtXHUwMDNlc2hhcmVkX3RhZ3MpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4gXHQvKlxuIFx0ICogTWFrZSBzdXJlIGF0IGxlYXN0IG9uZSBzdWJtaXQgcXVldWUgZXhpc3RzLlxuIFx0ICovXG5AQCAtNDIxLDI1ICYjNDM7NDQwLDEzIEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4gc3RhdGljIGludCBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgICAgdW5zaWduZWQgaW50IHN1Ym1pdF9xdWV1ZXMpXG4ge1xuLVx0aW50IHJldDtcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4tXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LVx1MDAzZXBvbGxfcXVldWVzKTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbi1cbi1cdHJldHVybiByZXQ7XG4mIzQzO1x0cmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtXHUwMDNlcG9sbF9xdWV1ZXMpO1xuIH1cbiBcbiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3BvbGxfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgIHVuc2lnbmVkIGludCBwb2xsX3F1ZXVlcylcbiB7XG4tXHRpbnQgcmV0O1xuLVxuLVx0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbi1cdHJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuLVxuLVx0cmV0dXJuIHJldDtcbiYjNDM7XHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi1cdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XG4gfVxuIFxuIE5VTExCX0RFVklDRV9BVFRSKHNpemUsIHVsb25nLCBOVUxMKTtcbkBAIC00NzgsNyAmIzQzOzQ4NSwxMyBAQCBOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3NfcGFydGlhbF9pbywgYm9vbCwgTlVMTCk7XG4gXG4gc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxuIHtcbi1cdHJldHVybiBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3Nob3codG9fbnVsbGJfZGV2aWNlKGl0ZW0pLVx1MDAzZXBvd2VyLCBwYWdlKTtcbiYjNDM7XHRzc2l6ZV90IHJldDtcbiYjNDM7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbiYjNDM7XHRyZXQgPSBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3Nob3codG9fbnVsbGJfZGV2aWNlKGl0ZW0pLVx1MDAzZXBvd2VyLCBwYWdlKTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4mIzQzO1xuJiM0MztcdHJldHVybiByZXQ7XG4gfVxuIFxuIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG5AQCAtNTc5LDggJiM0Mzs1OTIsMTMgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuIFx0XHRcdFx0XHRcdGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcbiB7XG4gXHRzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYgPSB0b19udWxsYl9kZXZpY2UoaXRlbSk7XG4mIzQzO1x0c3NpemVfdCByZXQ7XG4mIzQzO1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4mIzQzO1x0cmV0ID0gem9uZV9jb25kX3N0b3JlKGRldiwgcGFnZSwgY291bnQsIEJMS19aT05FX0NPTkRfUkVBRE9OTFkpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbiBcbi1cdHJldHVybiB6b25lX2NvbmRfc3RvcmUoZGV2LCBwYWdlLCBjb3VudCwgQkxLX1pPTkVfQ09ORF9SRUFET05MWSk7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiB9XG4gQ09ORklHRlNfQVRUUl9XTyhudWxsYl9kZXZpY2VfLCB6b25lX3JlYWRvbmx5KTtcbiBcbkBAIC01ODgsOCAmIzQzOzYwNiwxMyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbiBcdFx0XHRcdFx0ICAgICAgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcbiB7XG4gXHRzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYgPSB0b19udWxsYl9kZXZpY2UoaXRlbSk7XG4mIzQzO1x0c3NpemVfdCByZXQ7XG4mIzQzO1xuJiM0MztcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4mIzQzO1x0cmV0ID0gem9uZV9jb25kX3N0b3JlKGRldiwgcGFnZSwgY291bnQsIEJMS19aT05FX0NPTkRfT0ZGTElORSk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuIFxuLVx0cmV0dXJuIHpvbmVfY29uZF9zdG9yZShkZXYsIHBhZ2UsIGNvdW50LCBCTEtfWk9ORV9DT05EX09GRkxJTkUpO1xuJiM0MztcdHJldHVybiByZXQ7XG4gfVxuIENPTkZJR0ZTX0FUVFJfV08obnVsbGJfZGV2aWNlXywgem9uZV9vZmZsaW5lKTtcbiBcbkBAIC04MzYsNyAmIzQzOzg1OSw2IEBAIHN0YXRpYyB2b2lkIG51bGxfZnJlZV9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxuIFx0aWYgKCFkZXYpXG4gXHRcdHJldHVybjtcbiBcbi1cdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcbiBcdGJhZGJsb2Nrc19leGl0KFx1MDAyNmRldi1cdTAwM2ViYWRibG9ja3MpO1xuIFx0a2ZyZWUoZGV2KTtcbiB9XG5AQCAtMTc3MCwxOCAmIzQzOzE3OTIsMTkgQEAgc3RhdGljIHZvaWQgbnVsbF9kZWxfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXG4gXG4gXHRkZWxfZ2VuZGlzayhudWxsYi1cdTAwM2VkaXNrKTtcbiBcbi1cdGlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfVEhST1RUTEVELCBcdTAwMjZudWxsYi1cdTAwM2VkZXYtXHUwMDNlZmxhZ3MpKSB7XG4mIzQzO1x0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncykpIHtcbiBcdFx0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2bnVsbGItXHUwMDNlYndfdGltZXIpO1xuIFx0XHRhdG9taWNfbG9uZ19zZXQoXHUwMDI2bnVsbGItXHUwMDNlY3VyX2J5dGVzLCBMT05HX01BWCk7XG4gXHRcdGJsa19tcV9zdGFydF9zdG9wcGVkX2h3X3F1ZXVlcyhudWxsYi1cdTAwM2VxLCB0cnVlKTtcbiBcdH1cbiBcbiBcdHB1dF9kaXNrKG51bGxiLVx1MDAzZWRpc2spO1xuJiM0MztcdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcbiBcdGlmIChudWxsYi1cdTAwM2V0YWdfc2V0ID09IFx1MDAyNm51bGxiLVx1MDAzZV9fdGFnX3NldClcbiBcdFx0YmxrX21xX2ZyZWVfdGFnX3NldChudWxsYi1cdTAwM2V0YWdfc2V0KTtcbiBcdGtmcmVlKG51bGxiLVx1MDAzZXF1ZXVlcyk7XG4gXHRpZiAobnVsbF9jYWNoZV9hY3RpdmUobnVsbGIpKVxuLVx0XHRudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2UobnVsbGItXHUwMDNlZGV2LCB0cnVlKTtcbiYjNDM7XHRcdG51bGxfZnJlZV9kZXZpY2Vfc3RvcmFnZShkZXYsIHRydWUpO1xuIFx0a2ZyZWUobnVsbGIpO1xuIFx0ZGV2LVx1MDAzZW51bGxiID0gTlVMTDtcbiB9XG5AQCAtMjE2MiwxNyAmIzQzOzIxODUsOSBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcbiBcdGNvbmZpZ19ncm91cF9pbml0KFx1MDAyNm51bGxiX3N1YnN5cy5zdV9ncm91cCk7XG4gXHRtdXRleF9pbml0KFx1MDAyNm51bGxiX3N1YnN5cy5zdV9tdXRleCk7XG4gXG4tXHRyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2bnVsbGJfc3Vic3lzKTtcbi1cdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4tXG4tXHRtdXRleF9pbml0KFx1MDAyNmxvY2spO1xuLVxuIFx0bnVsbF9tYWpvciA9IHJlZ2lzdGVyX2Jsa2RldigwLCBcJiMzNDtudWxsYlwmIzM0Oyk7XG4tXHRpZiAobnVsbF9tYWpvciBcdTAwM2MgMCkge1xuLVx0XHRyZXQgPSBudWxsX21ham9yO1xuLVx0XHRnb3RvIGVycl9jb25mO1xuLVx0fVxuJiM0MztcdGlmIChudWxsX21ham9yIFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIG51bGxfbWFqb3I7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9kZXZpY2VzOyBpJiM0MzsmIzQzOykge1xuIFx0XHRyZXQgPSBudWxsX2NyZWF0ZV9kZXYoKTtcbkBAIC0yMTgwLDYgJiM0MzsyMTk1LDEwIEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxuIFx0XHRcdGdvdG8gZXJyX2RldjtcbiBcdH1cbiBcbiYjNDM7XHRyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2bnVsbGJfc3Vic3lzKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0Z290byBlcnJfZGV2O1xuJiM0MztcbiBcdHByX2luZm8oXCYjMzQ7bW9kdWxlIGxvYWRlZFxcblwmIzM0Oyk7XG4gXHRyZXR1cm4gMDtcbiBcbkBAIC0yMTg5LDggJiM0MzsyMjA4LDggQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXG4gXHRcdG51bGxfZGVzdHJveV9kZXYobnVsbGIpO1xuIFx0fVxuIFx0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXCYjMzQ7bnVsbGJcJiMzNDspO1xuLWVycl9jb25mOlxuLVx0Y29uZmlnZnNfdW5yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2bnVsbGJfc3Vic3lzKTtcbiYjNDM7XHRpZiAodGFnX3NldC5vcHMpXG4mIzQzO1x0XHRibGtfbXFfZnJlZV90YWdfc2V0KFx1MDAyNnRhZ19zZXQpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG5AQCAtMjIwMCw4ICYjNDM7MjIxOSw2IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZClcbiBcbiBcdGNvbmZpZ2ZzX3VucmVnaXN0ZXJfc3Vic3lzdGVtKFx1MDAyNm51bGxiX3N1YnN5cyk7XG4gXG4tXHR1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCBcJiMzNDtudWxsYlwmIzM0Oyk7XG4tXG4gXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuIFx0d2hpbGUgKCFsaXN0X2VtcHR5KFx1MDAyNm51bGxiX2xpc3QpKSB7XG4gXHRcdG51bGxiID0gbGlzdF9lbnRyeShudWxsYl9saXN0Lm5leHQsIHN0cnVjdCBudWxsYiwgbGlzdCk7XG5AQCAtMjIwOSw2ICYjNDM7MjIyNiw4IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZClcbiBcdH1cbiBcdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbiBcbiYjNDM7XHR1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCBcJiMzNDtudWxsYlwmIzM0Oyk7XG4mIzQzO1xuIFx0aWYgKHRhZ19zZXQub3BzKVxuIFx0XHRibGtfbXFfZnJlZV90YWdfc2V0KFx1MDAyNnRhZ19zZXQpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA5OjIzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OywKICAgICYjMzQ7QkxLX0RFVl9aT05FRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc2hvdyYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsX2RlbF9kZXYmIzM0OywKICAgICYjMzQ7bnVsbF9mcmVlX2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnVsbF9ibGsgZHJpdmVyIHRvIHJlamVjdCByZXNpemluZyBoYXJkd2FyZSBxdWV1ZXMgd2hlbiBzaGFyZWRfdGFncyBpcyBlbmFibGVkLCBhZGRzIGxvY2tpbmcgdG8gY29uZmlnZnMgYXR0cmlidXRlIGFjY2Vzc29ycywgYW5kIGZpeGVzIHRoZSBpbml0aWFsaXphdGlvbi9jbGVhbnVwIG9yZGVyIG9mIHpvbmVkIGRldmljZXMgYW5kIHRoZSBtb2R1bGUgaXRzZWxmLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBibG9jayBkcml2ZXIgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTNmYzQ3M2Y0MmFhMDY4YTUyNGMyNjI4MDYxNDVhZjhiMGY2ZDdkZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDE0IDA5OjIzOjQ0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYwppbmRleCBmOGMwZmQ1N2UwNDFhOC4uYzg0ODdhNjMwZTFhMDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jCkBAIC02Niw3ICYjNDM7NjYsNyBAQCBzdHJ1Y3QgbnVsbGJfcGFnZSB7CiAjZGVmaW5lIE5VTExCX1BBR0VfRlJFRSAoTUFQX1NaIC0gMikKIAogc3RhdGljIExJU1RfSEVBRChudWxsYl9saXN0KTsKLXN0YXRpYyBzdHJ1Y3QgbXV0ZXggbG9jazsKJiM0MztzdGF0aWMgREVGSU5FX01VVEVYKGxvY2spOwogc3RhdGljIGludCBudWxsX21ham9yOwogc3RhdGljIERFRklORV9JREEobnVsbGJfaW5kZXhlcyk7CiBzdGF0aWMgc3RydWN0IGJsa19tcV90YWdfc2V0IHRhZ19zZXQ7CkBAIC0zNDUsOCAmIzQzOzM0NSwxNCBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3N0b3JlKGJvb2wgKnZhbCwgY29uc3QgY2hhciAqcGFnZSwKIHN0YXRpYyBzc2l6ZV90CQkJCQkJCQlcCiBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNoYXIgKnBhZ2UpCVwKIHsJCQkJCQkJCQlcCi0JcmV0dXJuIG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3Nob3coCQkJCVwKJiM0MzsJc3NpemVfdCByZXQ7CQkJCQkJCVwKJiM0MzsJCQkJCQkJCQlcCiYjNDM7CW11dGV4X2xvY2soJmFtcDtsb2NrKTsJCQkJCQlcCiYjNDM7CXJldCA9IG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3Nob3coCQkJCVwKIAkJCQl0b19udWxsYl9kZXZpY2UoaXRlbSktJmd0O05BTUUsIHBhZ2UpOwlcCiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2xvY2spOwkJCQkJCVwKJiM0MzsJCQkJCQkJCQlcCiYjNDM7CXJldHVybiByZXQ7CQkJCQkJCVwKIH0JCQkJCQkJCQlcCiBzdGF0aWMgc3NpemVfdAkJCQkJCQkJXAogbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSwJXApAQCAtMzYwLDEzICYjNDM7MzY2LDE3IEBAIG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNvbnN0IGNoYXIgKnBhZ2UsCVwKIAlyZXQgPSBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zdG9yZSgmYW1wO25ld192YWx1ZSwgcGFnZSwgY291bnQpO1wKIAlpZiAocmV0ICZsdDsgMCkJCQkJCQkJXAogCQlyZXR1cm4gcmV0OwkJCQkJCVwKJiM0MzsJcmV0ID0gMDsJCQkJCQkJXAomIzQzOwltdXRleF9sb2NrKCZhbXA7bG9jayk7CQkJCQkJXAogCWlmIChhcHBseV9mbikJCQkJCQkJXAogCQlyZXQgPSBhcHBseV9mbihkZXYsIG5ld192YWx1ZSk7CQkJCVwKIAllbHNlIGlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgJmFtcDtkZXYtJmd0O2ZsYWdzKSkgCVwKIAkJcmV0ID0gLUVCVVNZOwkJCQkJCVwKJiM0MzsJaWYgKCFyZXQpCQkJCQkJCVwKJiM0MzsJCWRldi0mZ3Q7TkFNRSA9IG5ld192YWx1ZTsJCQkJCVwKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7bG9jayk7CQkJCQkJXAogCWlmIChyZXQgJmx0OyAwKQkJCQkJCQlcCiAJCXJldHVybiByZXQ7CQkJCQkJXAotCWRldi0mZ3Q7TkFNRSA9IG5ld192YWx1ZTsJCQkJCQlcCiAJcmV0dXJuIGNvdW50OwkJCQkJCQlcCiB9CQkJCQkJCQkJXAogQ09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBOQU1FKTsKQEAgLTM4Miw2ICYjNDM7MzkyLDE1IEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsCiAJaWYgKCFkZXYtJmd0O251bGxiKQogCQlyZXR1cm4gMDsKIAomIzQzOwkvKgomIzQzOwkgKiBBIHNoYXJlZCB0YWdfc2V0IGlzIG1hcHBlZCB2aWEgdGhlIG1vZHVsZS13aWRlIHF1ZXVlIGNvdW50cywgc28gYQomIzQzOwkgKiBwZXItZGV2aWNlIHJlc2l6ZSBpcyBtZWFuaW5nbGVzcy4gT24gc2hyaW5rIGl0IHdvdWxkIGFsc28gbGVhdmUKJiM0MzsJICogbXFfbWFwW10gcG9pbnRpbmcgYXQgTlVMTGVkIGhjdHggc2xvdHMsIGNhdXNpbmcgYSBOVUxMIGRlcmVmIGluCiYjNDM7CSAqIGJsa19tcV9tYXBfc3dxdWV1ZSgpLiBSZWplY3QgaXQuCiYjNDM7CSAqLwomIzQzOwlpZiAoZGV2LSZndDtzaGFyZWRfdGFncykKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwogCS8qCiAJICogTWFrZSBzdXJlIGF0IGxlYXN0IG9uZSBzdWJtaXQgcXVldWUgZXhpc3RzLgogCSAqLwpAQCAtNDIxLDI1ICYjNDM7NDQwLDEzIEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsCiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LAogCQkJCSAgICAgdW5zaWduZWQgaW50IHN1Ym1pdF9xdWV1ZXMpCiB7Ci0JaW50IHJldDsKLQotCW11dGV4X2xvY2soJmFtcDtsb2NrKTsKLQlyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LSZndDtwb2xsX3F1ZXVlcyk7Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7bG9jayk7Ci0KLQlyZXR1cm4gcmV0OwomIzQzOwlyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi0mZ3Q7cG9sbF9xdWV1ZXMpOwogfQogCiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3BvbGxfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiwKIAkJCQkgICB1bnNpZ25lZCBpbnQgcG9sbF9xdWV1ZXMpCiB7Ci0JaW50IHJldDsKLQotCW11dGV4X2xvY2soJmFtcDtsb2NrKTsKLQlyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LSZndDtzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7Ci0JbXV0ZXhfdW5sb2NrKCZhbXA7bG9jayk7Ci0KLQlyZXR1cm4gcmV0OwomIzQzOwlyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi0mZ3Q7c3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpOwogfQogCiBOVUxMQl9ERVZJQ0VfQVRUUihzaXplLCB1bG9uZywgTlVMTCk7CkBAIC00NzgsNyAmIzQzOzQ4NSwxMyBAQCBOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3NfcGFydGlhbF9pbywgYm9vbCwgTlVMTCk7CiAKIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSkKIHsKLQlyZXR1cm4gbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zaG93KHRvX251bGxiX2RldmljZShpdGVtKS0mZ3Q7cG93ZXIsIHBhZ2UpOwomIzQzOwlzc2l6ZV90IHJldDsKJiM0MzsKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2xvY2spOwomIzQzOwlyZXQgPSBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3Nob3codG9fbnVsbGJfZGV2aWNlKGl0ZW0pLSZndDtwb3dlciwgcGFnZSk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2xvY2spOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLApAQCAtNTc5LDggJiM0Mzs1OTIsMTMgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLAogCQkJCQkJY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGNvdW50KQogewogCXN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiA9IHRvX251bGxiX2RldmljZShpdGVtKTsKJiM0MzsJc3NpemVfdCByZXQ7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtsb2NrKTsKJiM0MzsJcmV0ID0gem9uZV9jb25kX3N0b3JlKGRldiwgcGFnZSwgY291bnQsIEJMS19aT05FX0NPTkRfUkVBRE9OTFkpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtsb2NrKTsKIAotCXJldHVybiB6b25lX2NvbmRfc3RvcmUoZGV2LCBwYWdlLCBjb3VudCwgQkxLX1pPTkVfQ09ORF9SRUFET05MWSk7CiYjNDM7CXJldHVybiByZXQ7CiB9CiBDT05GSUdGU19BVFRSX1dPKG51bGxiX2RldmljZV8sIHpvbmVfcmVhZG9ubHkpOwogCkBAIC01ODgsOCAmIzQzOzYwNiwxMyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwKIAkJCQkJICAgICAgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudCkKIHsKIAlzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYgPSB0b19udWxsYl9kZXZpY2UoaXRlbSk7CiYjNDM7CXNzaXplX3QgcmV0OwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7bG9jayk7CiYjNDM7CXJldCA9IHpvbmVfY29uZF9zdG9yZShkZXYsIHBhZ2UsIGNvdW50LCBCTEtfWk9ORV9DT05EX09GRkxJTkUpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtsb2NrKTsKIAotCXJldHVybiB6b25lX2NvbmRfc3RvcmUoZGV2LCBwYWdlLCBjb3VudCwgQkxLX1pPTkVfQ09ORF9PRkZMSU5FKTsKJiM0MzsJcmV0dXJuIHJldDsKIH0KIENPTkZJR0ZTX0FUVFJfV08obnVsbGJfZGV2aWNlXywgem9uZV9vZmZsaW5lKTsKIApAQCAtODM2LDcgJiM0Mzs4NTksNiBAQCBzdGF0aWMgdm9pZCBudWxsX2ZyZWVfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldikKIAlpZiAoIWRldikKIAkJcmV0dXJuOwogCi0JbnVsbF9mcmVlX3pvbmVkX2RldihkZXYpOwogCWJhZGJsb2Nrc19leGl0KCZhbXA7ZGV2LSZndDtiYWRibG9ja3MpOwogCWtmcmVlKGRldik7CiB9CkBAIC0xNzcwLDE4ICYjNDM7MTc5MiwxOSBAQCBzdGF0aWMgdm9pZCBudWxsX2RlbF9kZXYoc3RydWN0IG51bGxiICpudWxsYikKIAogCWRlbF9nZW5kaXNrKG51bGxiLSZndDtkaXNrKTsKIAotCWlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfVEhST1RUTEVELCAmYW1wO251bGxiLSZndDtkZXYtJmd0O2ZsYWdzKSkgewomIzQzOwlpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX1RIUk9UVExFRCwgJmFtcDtkZXYtJmd0O2ZsYWdzKSkgewogCQlocnRpbWVyX2NhbmNlbCgmYW1wO251bGxiLSZndDtid190aW1lcik7CiAJCWF0b21pY19sb25nX3NldCgmYW1wO251bGxiLSZndDtjdXJfYnl0ZXMsIExPTkdfTUFYKTsKIAkJYmxrX21xX3N0YXJ0X3N0b3BwZWRfaHdfcXVldWVzKG51bGxiLSZndDtxLCB0cnVlKTsKIAl9CiAKIAlwdXRfZGlzayhudWxsYi0mZ3Q7ZGlzayk7CiYjNDM7CW51bGxfZnJlZV96b25lZF9kZXYoZGV2KTsKIAlpZiAobnVsbGItJmd0O3RhZ19zZXQgPT0gJmFtcDtudWxsYi0mZ3Q7X190YWdfc2V0KQogCQlibGtfbXFfZnJlZV90YWdfc2V0KG51bGxiLSZndDt0YWdfc2V0KTsKIAlrZnJlZShudWxsYi0mZ3Q7cXVldWVzKTsKIAlpZiAobnVsbF9jYWNoZV9hY3RpdmUobnVsbGIpKQotCQludWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2UobnVsbGItJmd0O2RldiwgdHJ1ZSk7CiYjNDM7CQludWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2UoZGV2LCB0cnVlKTsKIAlrZnJlZShudWxsYik7CiAJZGV2LSZndDtudWxsYiA9IE5VTEw7CiB9CkBAIC0yMTYyLDE3ICYjNDM7MjE4NSw5IEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKQogCWNvbmZpZ19ncm91cF9pbml0KCZhbXA7bnVsbGJfc3Vic3lzLnN1X2dyb3VwKTsKIAltdXRleF9pbml0KCZhbXA7bnVsbGJfc3Vic3lzLnN1X211dGV4KTsKIAotCXJldCA9IGNvbmZpZ2ZzX3JlZ2lzdGVyX3N1YnN5c3RlbSgmYW1wO251bGxiX3N1YnN5cyk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCW11dGV4X2luaXQoJmFtcDtsb2NrKTsKLQogCW51bGxfbWFqb3IgPSByZWdpc3Rlcl9ibGtkZXYoMCwgJiMzNDtudWxsYiYjMzQ7KTsKLQlpZiAobnVsbF9tYWpvciAmbHQ7IDApIHsKLQkJcmV0ID0gbnVsbF9tYWpvcjsKLQkJZ290byBlcnJfY29uZjsKLQl9CiYjNDM7CWlmIChudWxsX21ham9yICZsdDsgMCkKJiM0MzsJCXJldHVybiBudWxsX21ham9yOwogCiAJZm9yIChpID0gMDsgaSAmbHQ7IG5yX2RldmljZXM7IGkmIzQzOyYjNDM7KSB7CiAJCXJldCA9IG51bGxfY3JlYXRlX2RldigpOwpAQCAtMjE4MCw2ICYjNDM7MjE5NSwxMCBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZCkKIAkJCWdvdG8gZXJyX2RldjsKIAl9CiAKJiM0MzsJcmV0ID0gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKCZhbXA7bnVsbGJfc3Vic3lzKTsKJiM0MzsJaWYgKHJldCkKJiM0MzsJCWdvdG8gZXJyX2RldjsKJiM0MzsKIAlwcl9pbmZvKCYjMzQ7bW9kdWxlIGxvYWRlZFxuJiMzNDspOwogCXJldHVybiAwOwogCkBAIC0yMTg5LDggJiM0MzsyMjA4LDggQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpCiAJCW51bGxfZGVzdHJveV9kZXYobnVsbGIpOwogCX0KIAl1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCAmIzM0O251bGxiJiMzNDspOwotZXJyX2NvbmY6Ci0JY29uZmlnZnNfdW5yZWdpc3Rlcl9zdWJzeXN0ZW0oJmFtcDtudWxsYl9zdWJzeXMpOwomIzQzOwlpZiAodGFnX3NldC5vcHMpCiYjNDM7CQlibGtfbXFfZnJlZV90YWdfc2V0KCZhbXA7dGFnX3NldCk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMjIwMCw4ICYjNDM7MjIxOSw2IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZCkKIAogCWNvbmZpZ2ZzX3VucmVnaXN0ZXJfc3Vic3lzdGVtKCZhbXA7bnVsbGJfc3Vic3lzKTsKIAotCXVucmVnaXN0ZXJfYmxrZGV2KG51bGxfbWFqb3IsICYjMzQ7bnVsbGImIzM0Oyk7Ci0KIAltdXRleF9sb2NrKCZhbXA7bG9jayk7CiAJd2hpbGUgKCFsaXN0X2VtcHR5KCZhbXA7bnVsbGJfbGlzdCkpIHsKIAkJbnVsbGIgPSBsaXN0X2VudHJ5KG51bGxiX2xpc3QubmV4dCwgc3RydWN0IG51bGxiLCBsaXN0KTsKQEAgLTIyMDksNiAmIzQzOzIyMjYsOCBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbnVsbF9leGl0KHZvaWQpCiAJfQogCW11dGV4X3VubG9jaygmYW1wO2xvY2spOwogCiYjNDM7CXVucmVnaXN0ZXJfYmxrZGV2KG51bGxfbWFqb3IsICYjMzQ7bnVsbGImIzM0Oyk7CiYjNDM7CiAJaWYgKHRhZ19zZXQub3BzKQogCQlibGtfbXFfZnJlZV90YWdfc2V0KCZhbXA7dGFnX3NldCk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDk6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM5OAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDI5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCB0byB0aGUgYG51bGxfYmxrYCBEcml2ZXIgZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgYmVlbiBhcHBsaWVkIHRvIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY2AuIEl0JiMzOTtzIGRlZmluaXRlbHkgbWFraW5nIHNvbWUgZnVuY3Rpb25hbCBjaGFuZ2VzLiBJIHNlZSB0aGV5JiMzOTt2ZSBhZGRlZCBhIGNoZWNrIGluIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCB3aGljaCBzZWVtcyB0byByZWplY3QgcmVzaXppbmcgaWYgYGRldi0mZ3Q7c2hhcmVkX3RhZ3NgIGlzIHRydWUuIEludGVyZXN0aW5nLiBUaGVyZSBhcmUgYWxzbyBjaGFuZ2VzIHRvIHRoZSBsb2NraW5nIHdpdGhpbiB0aGUgc3lzZnMgYW5kIGNvbmZpZ2ZzIHN0b3JlL3Nob3cgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gZGV2aWNlIG1hbmFnZW1lbnQuIExvb2tzIGxpa2UgdGhleSYjMzk7dmUgbW92ZWQgYG51bGxfZnJlZV96b25lZF9kZXYoZGV2KWAgYW5kIG1vZGlmaWVkIGluaXRpYWxpemF0aW9uIGFuZCBleGl0IG9yZGVyIGluIGBudWxsX2luaXRgIGFuZCBgbnVsbF9leGl0YC4KCkZ1bmN0aW9uYWxseSwgdGhlc2UgYXJlIGFsbCBjaGFuZ2VzIHRvIHRoZSBgbnVsbF9ibGtgIGRyaXZlciB3aXRoaW4gdGhlIGJsb2NrIHN1YnN5c3RlbS4gVGhpcyBkcml2ZXIgaXMsIGFzIEkgcmVjYWxsLCBhIHNvZnR3YXJlIGJsb2NrIGRldmljZSB1c2VkIHByaW1hcmlseSBmb3IgdGVzdGluZyBhbmQgYmVuY2htYXJraW5nLCBhbmQgSSBrbm93IGl0JiMzOTtzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHdoaWNoIG1ha2VzIGl0IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEdpdmVuIHRoZSBmdW5jdGlvbmFsIGNoYW5nZXMgYW5kIHRoZSBkcml2ZXImIzM5O3MgbmF0dXJlLCBJJiMzOTttIGNvbmZpZGVudCBpbiB0YWdnaW5nIHRoaXMgd2l0aCBgV29ydGhGdXp6aW5nPXRydWVgLgoKTm93LCB0aGUgbmV4dCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBuZWVkZWQgdG8gZW5hYmxlIHRoaXMgZHJpdmVyLiBJJiMzOTtsbCB1c2UgYGdyZXBwZXJgIG9yIGEgc2ltaWxhciB0b29sIHRvIHF1aWNrbHkgc2VhcmNoIHRoZSBgZHJpdmVycy9ibG9jay9LY29uZmlnYCBmaWxlIG9yIG90aGVyIHJlbGV2YW50IEtjb25maWcgZmlsZXMgZm9yICYjMzQ7bnVsbF9ibGsmIzM0Oy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY29uZmlndXJhdGlvbiBzeW1ib2wocykgSSBuZWVkIHRvIHJlcHJvZHVjZSBhbmQgdGVzdCB0aGlzIHdpdGggbXkgZnV6emluZyBzZXR1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwOToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudWxsX2JsayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWc9MTc9aWYgQkxLX0RFVlxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE4LVxuZHJpdmVycy9ibG9jay9LY29uZmlnOjE5OnNvdXJjZSBcJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yMC1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9ibG9jay9ybnVsbC9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDk6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTEzNAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIG9mIHRoZSB0aG91Z2h0IHByb2Nlc3MgZGVzY3JpYmVkOgoKKipFeGFtaW5pbmcgdGhlIE51bGwgQmxvY2sgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIG51bGwgYmxvY2sgZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSByaWdodCBpbnRvIHRoZSBoZWFydCBvZiB0aGluZ3M6IGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIGFsbCB0aGUgYGNvbmZpZ2Agb3B0aW9ucyBzaG91bGQgcmVzaWRlLCBkZWZpbmluZyB3aGF0IGZlYXR1cmVzIG9mIHRoaXMgZHJpdmVyIGFyZSBlbmFibGVkLCBkaXNhYmxlZCwgb3IgY29uZmlndXJhYmxlIGJ5IHRoZSB1c2VyIGF0IGJ1aWxkIHRpbWUuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIHN0YW5kYXJkIHN0dWZmIGhlcmU6IHRoaW5ncyBsaWtlIHRoZSBudW1iZXIgb2YgZGV2aWNlcyBpdCBjYW4gZW11bGF0ZSwgYW55IHNwZWNpZmljIGVtdWxhdGlvbiBjaGFyYWN0ZXJpc3RpY3MsIG1heWJlIGV2ZW4gb3B0aW9ucyByZWxhdGVkIHRvIGVycm9yIGluamVjdGlvbiBvciB0ZXN0aW5nIGNhcGFiaWxpdGllcywgaWYgaXQgaGFzIGFueS4gTGV0JiMzOTtzIGdldCByaWdodCB0byBpdC4gSSB3YW50IHRvIHNlZSBob3cgZ3JhbnVsYXIgdGhlIGNvbnRyb2wgaXMuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCBzaW5jZSB0aGlzIGlzIGEgJiMzNDtudWxsJiMzNDsgZHJpdmVyLCBtb3N0IG9mIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2lsbCBiZSBzdHJhaWdodGZvcndhcmQsIGJ1dCB5b3UgbmV2ZXIga25vdy4gSXQgY291bGQgaGF2ZSBzdXJwcmlzaW5nIGVkZ2UgY2FzZXMgb3IgY29tcGxleGl0aWVzIHRoYXQgYXJlIG9ubHkgZXZpZGVudCB3aGVuIGxvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb24gY2hvaWNlcyB0aGVtc2VsdmVzLiBUaGUgS2NvbmZpZyBmaWxlIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBsYXkgb2YgdGhlIGxhbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDk6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIE51bGwgYmxvY2sgZGV2aWNlIGRyaXZlciBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBCTEtfREVWX05VTExfQkxLXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXCYjMzQ7XG4gICA4Olx0XHRzZWxlY3QgQ09ORklHRlNfRlNcbiAgIDk6XHRcbiAgMTA6XHRjb25maWcgQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbiAgMTE6XHRcdGJvb2wgXCYjMzQ7U3VwcG9ydCBmYXVsdCBpbmplY3Rpb24gZm9yIE51bGwgdGVzdCBibG9jayBkcml2ZXJcJiMzNDtcbiAgMTI6XHRcdGRlcGVuZHMgb24gQkxLX0RFVl9OVUxMX0JMSyBcdTAwMjZcdTAwMjYgRkFVTFRfSU5KRUNUSU9OX0NPTkZJR0ZTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDk6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU3OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBab25lZCBEZXZpY2UgSW50ZXJhY3Rpb25zIHdpdGggYEJMS19ERVZfTlVMTF9CTEtgKioKClJpZ2h0LCBzbyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUgaXMgYEJMS19ERVZfTlVMTF9CTEtgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyB0aWVzIGluIHdpdGggdGhlIGJyb2FkZXIgc3lzdGVtLiBJIHNlZSB0aGF0IHRoZSBwYXRjaCBzZWVtcyB0byBiZSByZWFjaGluZyBpbnRvIHpvbmVkIGRldmljZSBmdW5jdGlvbmFsaXRpZXMsIHNwZWNpZmljYWxseSBgem9uZV9jb25kX3N0b3JlYCBhbmQgYG51bGxfZnJlZV96b25lZF9kZXZgLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGF0IHJhaXNlcyBhIGZsYWcuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBibG9jayBkZXZpY2UsIGFuZCB6b25lZCBkZXZpY2VzIGhhdmUgdGhlaXIgdW5pcXVlIGNoYXJhY3RlcmlzdGljcy4gSXTigJlzIGltcG9ydGFudCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IHNwZWNpYWxpemVkIGNvbmZpZ3VyYXRpb24gdGhhdCBpbnRlcmFjdHMgd2l0aCB0aGUgem9uZWQgYXNwZWN0cyB3aXRoaW4gdGhlIG51bGwgYmxvY2sgZGV2aWNlIGNvbnRleHQuIE15IG5leHQgc3RlcCBpcyB0byBkZXRlcm1pbmUgaWYgYW55IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgc3BlY2lmaWMgdG8gdGhpcyBpbnRlcnNlY3Rpb24gb2YgYSBudWxsIGJsb2NrIGRldmljZSBhbmQgYSB6b25lZCBjb25maWd1cmF0aW9uLiBJcyB0aGVyZSBhbnkgd2F5IHRoYXQgbnVsbCBibG9jayBkZXZpY2UgZmVhdHVyZXMgY2FuIGludGVyYWN0IHdpdGggem9uZWQgY29uZmlndXJhdGlvbnM/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDk6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnVsbF9mcmVlX3pvbmVkX2RldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTc4MD1zdGF0aWMgdm9pZCBudWxsX2RlbF9kZXYoc3RydWN0IG51bGxiICpudWxsYilcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xODAxLVx0cHV0X2Rpc2sobnVsbGItXHUwMDNlZGlzayk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxODAyOlx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTgwMy1cdGlmIChudWxsYi1cdTAwM2V0YWdfc2V0ID09IFx1MDAyNm51bGxiLVx1MDAzZV9fdGFnX3NldClcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xOTc4PXN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDg5LW91dF9jbGVhbnVwX3pvbmU6XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMDkwOlx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA5MS1vdXRfY2xlYW51cF90YWdzOlxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaD0xNDM9aW50IG51bGxfcmVnaXN0ZXJfem9uZWRfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oOjE0NDp2b2lkIG51bGxfZnJlZV96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC0xNDUtaW50IG51bGxfcmVwb3J0X3pvbmVzKHN0cnVjdCBnZW5kaXNrICpkaXNrLCBzZWN0b3JfdCBzZWN0b3IsXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oPTE2MT1zdGF0aWMgaW5saW5lIGludCBudWxsX3JlZ2lzdGVyX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC0xNjQtfVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oOjE2NTpzdGF0aWMgaW5saW5lIHZvaWQgbnVsbF9mcmVlX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpIHt9XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmgtMTY2LXN0YXRpYyBpbmxpbmUgYmxrX3N0YXR1c190IG51bGxfcHJvY2Vzc196b25lZF9jbWQoc3RydWN0IG51bGxiX2NtZCAqY21kLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYz0xNzU9aW50IG51bGxfcmVnaXN0ZXJfem9uZWRfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jLTE4Ni1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYzoxODc6dm9pZCBudWxsX2ZyZWVfem9uZWRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvem9uZWQuYy0xODgte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA5OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0NjYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgQnVpbGQgUHJvY2VzcyBmb3IgWm9uZWQgQmxvY2sgRGV2aWNlcyoqCgpBbHJpZ2h0LCBJJiMzOTttIHRoaW5raW5nIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgem9uZWQuY2Agd2l0aGluIHRoZSBudWxsIGJsb2NrIGRyaXZlciBpcyBnZXR0aW5nIGNvbXBpbGVkLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gd29uZGVyaW5nIGFib3V0IHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGFuZCBkZXBlbmRlbmNpZXMuIE15IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvTWFrZWZpbGVgLiBUaGF0JiMzOTtzIGFsbW9zdCBhbHdheXMgdGhlIGZpcnN0IHBsYWNlIHRvIGxvb2sgd2hlbiB0cnlpbmcgdG8gdW50YW5nbGUgYnVpbGQgcHJvY2Vzc2VzIHdpdGhpbiB0aGUga2VybmVsLiBUaGUgTWFrZWZpbGUgc2hvdWxkIHNoZWQgbGlnaHQgb24gYW55IHNwZWNpZmljIGZsYWdzLCBpbmNsdWRlIGRpcmVjdG9yaWVzLCBvciBsaWJyYXJ5IGRlcGVuZGVuY2llcyB0aGF0IGFyZSBiZWluZyB1c2VkIGR1cmluZyB0aGUgY29tcGlsYXRpb24gb2YgYHpvbmVkLmNgLiBJJiMzOTttIGhvcGluZyBpdCYjMzk7bGwgcmV2ZWFsIGhvdyB0aGUgem9uZWQgYmxvY2sgZnVuY3Rpb25hbGl0eSBpcyBpbnRlZ3JhdGVkLCB3aGV0aGVyIGl0JiMzOTtzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgb3IgcGFydCBvZiB0aGUgc3RhbmRhcmQgbnVsbCBibG9jayBkcml2ZXIgYnVpbGQsIGFuZCBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgcmVxdWlyZWQgZm9yIGVuYWJsaW5nIHpvbmVkIG1vZGUuIFRoZSBNYWtlZmlsZSBzaG91bGQgYWxzbyBvdXRsaW5lIHRoZSBvYmplY3QgZmlsZXMgYW5kIGxpYnJhcnkgbGlua2FnZXMsIGdpdmluZyBtZSB0aGUgY3J1Y2lhbCBjb21waWxlIGFuZCBsaW5rIGZsYWdzIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA5OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHRcbiAgIDM6XHQjIG5lZWRlZCBmb3IgdHJhY2UgZXZlbnRzXG4gICA0Olx0Y2NmbGFncy15XHRcdFx0JiM0Mzs9IC1JJChzcmMpXG4gICA1Olx0XG4gICA2Olx0b2JqLSQoQ09ORklHX0JMS19ERVZfTlVMTF9CTEspXHQmIzQzOz0gbnVsbF9ibGsub1xuICAgNzpcdG51bGxfYmxrLW9ianNcdFx0XHQ6PSBtYWluLm9cbiAgIDg6XHRpZmVxICgkKENPTkZJR19CTEtfREVWX1pPTkVEKSwgeSlcbiAgIDk6XHRudWxsX2Jsay0kKENPTkZJR19UUkFDSU5HKSBcdCYjNDM7PSB0cmFjZS5vXG4gIDEwOlx0ZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDk6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg5MwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRob3NlIGxpbmVzOgoKKipBbmFseXppbmcgdGhlIE1ha2VmaWxlIGZvciBudWxsX2JsayoqCgpPa2F5LCBob2xkIG9uLiBCZWZvcmUgSSBqdW1wIHRvIGNvbmNsdXNpb25zIG9yIHN0YXJ0IG1vZGlmeWluZyBhbnl0aGluZywgSSBuZWVkIHRvIGdldCBhIGJldHRlciBncmFzcCBvZiB0aGUgYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvTWFrZWZpbGVgLiBJIGNhbiYjMzk7dCBqdXN0IGFzc3VtZSBJIHVuZGVyc3RhbmQgdGhlIGJ1aWxkIHByb2Nlc3MgZnJvbSB0aGUgdG9wIGxldmVsOyBJIG5lZWQgdG8gbG9vayBhdCB0aGUgc3BlY2lmaWNzIG9mICp0aGlzKiBwYXJ0aWN1bGFyIG1vZHVsZS4gV2hhdCBhcmUgdGhlIGRlcGVuZGVuY2llcz8gQXJlIHRoZXJlIGFueSBwZWN1bGlhciBidWlsZCBmbGFncyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gQXJlIHRoZXJlIGNvbmRpdGlvbmFsIGluY2x1c2lvbnMgYmFzZWQgb24ga2VybmVsIGNvbmZpZ3VyYXRpb24/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIG1vZHVsZSBmaXRzIGludG8gdGhlIGxhcmdlciBibG9jayBkZXZpY2UgZWNvc3lzdGVtIGJlZm9yZSBJIGV2ZW4gdGhpbmsgYWJvdXQgbWFraW5nIGNoYW5nZXMgb3IgYWRkaXRpb25zLiBBIGN1cnNvcnkgZ2xhbmNlIHdvbiYjMzk7dCBjdXQgaXQuIFRpbWUgdG8gZGlnIGludG8gdGhlIGRldGFpbHMgYW5kIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIGFueSBjcml0aWNhbCBjb250ZXh0LiBHb3R0YSBleGFtaW5lIHRob3NlIGxpbmVzIHRob3JvdWdobHkgdG8gdW5kZXJzdGFuZCB0aGUgbnVhbmNlcyBvZiBpdHMgY29tcGlsYXRpb24gYW5kIGxpbmtpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA5OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHRcbiAgIDM6XHQjIG5lZWRlZCBmb3IgdHJhY2UgZXZlbnRzXG4gICA0Olx0Y2NmbGFncy15XHRcdFx0JiM0Mzs9IC1JJChzcmMpXG4gICA1Olx0XG4gICA2Olx0b2JqLSQoQ09ORklHX0JMS19ERVZfTlVMTF9CTEspXHQmIzQzOz0gbnVsbF9ibGsub1xuICAgNzpcdG51bGxfYmxrLW9ianNcdFx0XHQ6PSBtYWluLm9cbiAgIDg6XHRpZmVxICgkKENPTkZJR19CTEtfREVWX1pPTkVEKSwgeSlcbiAgIDk6XHRudWxsX2Jsay0kKENPTkZJR19UUkFDSU5HKSBcdCYjNDM7PSB0cmFjZS5vXG4gIDEwOlx0ZW5kaWZcbiAgMTE6XHRudWxsX2Jsay0kKENPTkZJR19CTEtfREVWX1pPTkVEKSAmIzQzOz0gem9uZWQub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwOToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzExCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgWm9uZWQgQmxvY2sgRGV2aWNlIFN1cHBvcnQgUGF0Y2gqKgoKT2theSwgc28gSSBzZWUgdGhpcyBwYXRjaCBpcyByZWxhdGVkIHRvIHpvbmVkIGJsb2NrIGRldmljZSBzdXBwb3J0LCBhbmQgdGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gbm90aW5nIGlzIHRoYXQgYENPTkZJR19CTEtfREVWX1pPTkVEYCBpcyBhIHByZXJlcXVpc2l0ZSwgd2hpY2ggaXMgZXhwZWN0ZWQuIE5vdywgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY2hhbmdlcy4KCkkmIzM5O3ZlIGdvdCBhIGxpc3Qgb2YgdGhlIHVwZGF0ZWQgZnVuY3Rpb25zIGhlcmUuIExvb2tzIGxpa2UgdGhlcmUgYXJlIHNvbWUgbWFjcm8tZ2VuZXJhdGVkIGZ1bmN0aW9ucywgbGlrZSBgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZWAsIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc2hvd2AsIGFuZCBgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlYC4gVGhvc2UgbWFjcm8tZ2VuZXJhdGVkIG9uZXMgY291bGQgYmUgaW50ZXJlc3RpbmcsIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGBOQU1FYCByZXByZXNlbnRzIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBhY3R1YWxseSBiZWluZyBtb2RpZmllZC4gQmVzaWRlcyB0aGUgbWFjcm9zLCB0aGVyZSBhcmUgZnVuY3Rpb25zIHRoYXQgbG9vayBsaWtlIHRoZXkgaGFuZGxlIHF1ZXVlIG1hbmFnZW1lbnQ6IGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCwgYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgLCBhbmQgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYC4gSSBzaG91bGQgZ2l2ZSB0aGVzZSBmdW5jdGlvbnMgY2xvc2VyIGNvbnNpZGVyYXRpb24uIFRoZXJlIGFyZSBhbHNvIHNvbWUgcG93ZXIgYW5kIHpvbmUgY29udHJvbCBmdW5jdGlvbnM6IGBudWxsYl9kZXZpY2VfcG93ZXJfc2hvd2AsIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLCBgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmVgLCBhbmQgYG51bGxiX2RldmljZV96b25lX29mZmxpbmVfc3RvcmVgLiBGaW5hbGx5LCB0aGVyZSBhcmUgYSBmZXcgZGV2aWNlIGxpZmVjeWNsZSBmdW5jdGlvbnM6IGBudWxsX2ZyZWVfZGV2YCwgYG51bGxfZGVsX2RldmAsIGBudWxsX2luaXRgLCBhbmQgYG51bGxfZXhpdGAuCgpJJiMzOTttIG1ha2luZyBhIG1lbnRhbCBub3RlIHRoYXQgYG51bGxfaW5pdGAgYW5kIGBudWxsX2V4aXRgIGFyZSBtb2R1bGUgaW5pdC9leGl0IGZ1bmN0aW9ucy4gV2hpbGUgdGhleSYjMzk7cmUgbW9kaWZpZWQsIHRoZXkmIzM5O3JlIG5vdCBuZWNlc3NhcmlseSB0aGUgYmVzdCBjYW5kaWRhdGVzIGZvciBmb2N1c2luZyBmdXp6aW5nIGVmZm9ydHMsIGJ1dCB0aGV5JiMzOTtyZSBzdGlsbCB3b3J0aCBrbm93aW5nIGFib3V0LiBMZXQmIzM5O3Mgc2VlLCB3aGF0IGlzIGBOQU1FYCBiZWluZyB1c2VkIGZvciBpbiB0aGUgbWFjcm8tZ2VuZXJhdGVkIGZ1bmN0aW9ucz8gS25vd2luZyB0aGlzIHdpbGwgaGVscCBnaXZlIG1lIGEgY2xlYXJlciBwaWN0dXJlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwOToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdGU19BVFRSXFwobnVsbGJfZGV2aWNlXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTM1OD1udWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjb25zdCBjaGFyICpwYWdlLFx0XFxcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zODEtfVx0XHRcdFx0XHRcdFx0XHRcdFxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzozODI6Q09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBOQU1FKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTM4My1cbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00OTc9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MzUtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1MzY6Q09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBwb3dlcik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MzctXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NTQ1PXN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9iYWRibG9ja3Nfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTU4OC19XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo1ODk6Q09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBiYWRibG9ja3MpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTkwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwOToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTE3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipDb25maWdmcyBBdHRyaWJ1dGUgR2VuZXJhdGlvbjogQSBGYW1pbGlhciBQYXR0ZXJuKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEkmIzM5O20gc2VlaW5nIGEgbG90IG9mIHRoZXNlIGNvbmZpZ2ZzIGF0dHJpYnV0ZXMgcG9wcGluZyB1cC4gSXQmIzM5O3MgYWxtb3N0Li4uIHByZWRpY3RhYmxlLiBJbW1lZGlhdGVseSwgbXkgbWluZCBqdW1wcyB0byB0aGUgbWVjaGFuaWNzIG9mIHRoZWlyIGNyZWF0aW9uLiBBbmQgc3VyZSBlbm91Z2gsIHRoYXQgbWFjcm8gYE5VTExCX0RFVklDRV9BVFRSYCBpcyB0aGUga2V5LiBJdCYjMzk7cyBhIGNsYXNzaWM6IGEgY29kZSBnZW5lcmF0aW9uIHRvb2wuIEkgY2FuIHByYWN0aWNhbGx5ICpzZWUqIHRoZSBwYXR0ZXJuIGl0IGVzdGFibGlzaGVzIOKAkyBhIHN0cnVjdHVyZWQgd2F5IHRvIGRlZmluZSBhbmQgaW5qZWN0IHRoZSBkZXNpcmVkIGF0dHJpYnV0ZXMgaW50byB0aGUgY29uZmlnZnMgc3lzdGVtLiBLbm93aW5nIHRoZSBtYWNybyBpcyBrZXksIGJlY2F1c2UgaXQgZ2l2ZXMgdGhlIGhhbmRsZSBieSB3aGljaCBJIGNhbiB1bmRlcnN0YW5kIHRoZSBuYXR1cmUgb2YgdGhlIGF0dHJpYnV0ZXMgYW5kIHRoZWlyIGZ1bmN0aW9uYWxpdHkuIFRoaXMgbGlrZWx5IHRyYW5zbGF0ZXMgdG8gYSBtb3JlIHN0cmVhbWxpbmVkIGFuZCBtYWludGFpbmFibGUgYXBwcm9hY2ggZm9yIGV4cG9zaW5nIGRldmljZS1zcGVjaWZpYyBwYXJhbWV0ZXJzIGFuZCBjb250cm9scyB0aHJvdWdoIHRoZSBjb25maWdmcyBpbnRlcmZhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA5OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05VTExCX0RFVklDRV9BVFRSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MzI5PXN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9ib29sX2F0dHJfc3RvcmUoYm9vbCAqdmFsLCBjb25zdCBjaGFyICpwYWdlLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTM0My0vKiBUaGUgZm9sbG93aW5nIG1hY3JvIHNob3VsZCBvbmx5IGJlIHVzZWQgd2l0aCBUWVBFID0ge3VpbnQsIHVsb25nLCBib29sfS4gKi9cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjM0NDojZGVmaW5lIE5VTExCX0RFVklDRV9BVFRSKE5BTUUsIFRZUEUsIEFQUExZKVx0XHRcdFx0XFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTM0NS1zdGF0aWMgc3NpemVfdFx0XHRcdFx0XHRcdFx0XHRcXFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTQ0Nj1zdGF0aWMgaW50IG51bGxiX2FwcGx5X3BvbGxfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00NTEtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTI6TlVMTEJfREVWSUNFX0FUVFIoc2l6ZSwgdWxvbmcsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDUzOk5VTExCX0RFVklDRV9BVFRSKGNvbXBsZXRpb25fbnNlYywgdWxvbmcsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDU0Ok5VTExCX0RFVklDRV9BVFRSKHN1Ym1pdF9xdWV1ZXMsIHVpbnQsIG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDU1Ok5VTExCX0RFVklDRV9BVFRSKHBvbGxfcXVldWVzLCB1aW50LCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTY6TlVMTEJfREVWSUNFX0FUVFIoaG9tZV9ub2RlLCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1NzpOVUxMQl9ERVZJQ0VfQVRUUihxdWV1ZV9tb2RlLCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1ODpOVUxMQl9ERVZJQ0VfQVRUUihibG9ja3NpemUsIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDU5Ok5VTExCX0RFVklDRV9BVFRSKG1heF9zZWN0b3JzLCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2MDpOVUxMQl9ERVZJQ0VfQVRUUihpcnFtb2RlLCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2MTpOVUxMQl9ERVZJQ0VfQVRUUihod19xdWV1ZV9kZXB0aCwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjI6TlVMTEJfREVWSUNFX0FUVFIoaW5kZXgsIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDYzOk5VTExCX0RFVklDRV9BVFRSKGJsb2NraW5nLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2NDpOVUxMQl9ERVZJQ0VfQVRUUih1c2VfcGVyX25vZGVfaGN0eCwgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjU6TlVMTEJfREVWSUNFX0FUVFIobWVtb3J5X2JhY2tlZCwgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjY6TlVMTEJfREVWSUNFX0FUVFIoZGlzY2FyZCwgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Njc6TlVMTEJfREVWSUNFX0FUVFIobWJwcywgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Njg6TlVMTEJfREVWSUNFX0FUVFIoY2FjaGVfc2l6ZSwgdWxvbmcsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY5Ok5VTExCX0RFVklDRV9BVFRSKHpvbmVkLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3MDpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX3NpemUsIHVsb25nLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3MTpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX2NhcGFjaXR5LCB1bG9uZywgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzI6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9ucl9jb252LCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3MzpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX21heF9vcGVuLCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3NDpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX21heF9hY3RpdmUsIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc1Ok5VTExCX0RFVklDRV9BVFRSKHpvbmVfYXBwZW5kX21heF9zZWN0b3JzLCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3NjpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX2Z1bGwsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc3Ok5VTExCX0RFVklDRV9BVFRSKHZpcnRfYm91bmRhcnksIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc4Ok5VTExCX0RFVklDRV9BVFRSKG5vX3NjaGVkLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3OTpOVUxMQl9ERVZJQ0VfQVRUUihzaGFyZWRfdGFncywgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0ODA6TlVMTEJfREVWSUNFX0FUVFIoc2hhcmVkX3RhZ19iaXRtYXAsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDgxOk5VTExCX0RFVklDRV9BVFRSKGZ1YSwgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0ODI6TlVMTEJfREVWSUNFX0FUVFIocm90YXRpb25hbCwgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0ODM6TlVMTEJfREVWSUNFX0FUVFIoYmFkYmxvY2tzX29uY2UsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDg0Ok5VTExCX0RFVklDRV9BVFRSKGJhZGJsb2Nrc19wYXJ0aWFsX2lvLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ4NS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDk6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAwNjcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSBDaGFuZ2VzKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYSBmZXcga2V5IGFyZWFzIG9mIHRoZSBudWxsIGJsb2NrIGRldmljZSBkcml2ZXIuIEl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgb2YgdGhlIG1vZGlmaWNhdGlvbiByZXZvbHZlcyBhcm91bmQgaG93IGRldmljZSBhdHRyaWJ1dGVzIGFyZSBoYW5kbGVkLCBzcGVjaWZpY2FsbHkgdGhlIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc2hvd2AgYW5kIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmVgIGZ1bmN0aW9ucywgd2hpY2ggYXJlIGNyZWF0ZWQgdXNpbmcgdGhlIGBOVUxMQl9ERVZJQ0VfQVRUUmAgbWFjcm8uIEkgbmVlZCB0byBrZWVwIGFuIGV5ZSBvbiBob3cgdGhhdCBtYWNybyBpcyBiZWluZyB1c2VkIGFuZCBtb2RpZmllZCwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIHNpbWlsYXIgZHJpdmVyIGZyYW1ld29ya3MuCgpCZXlvbmQgdGhvc2UsIGl0JiMzOTtzIGFsc28gbWFraW5nIGNoYW5nZXMgdG8gYSBoYW5kZnVsIG9mIG90aGVyIGF0dHJpYnV0ZS1yZWxhdGVkIGZ1bmN0aW9uczogYG51bGxiX2RldmljZV9wb3dlcl9zaG93YCwgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAsIGBudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZWAsIGFuZCBgbnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZWAuIFRoZXNlIGFyZSBjbGVhcmx5IHJlbGF0ZWQgdG8gcG93ZXIgbWFuYWdlbWVudCBhbmQsIGludGVyZXN0aW5nbHksIHpvbmVkIGJsb2NrIGRldmljZSBmdW5jdGlvbmFsaXR5LgoKTGV0IG1lIG1ha2UgYSBtZW50YWwgbm90ZSBvZiBhbGwgdGhlIHN5bWJvbHMgdGhhdCBzZWVtIHRvIGJlIGtleSB0byB1bmRlcnN0YW5kOiBgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc2AsIHRoZSBwb3dlci1yZWxhdGVkIGF0dHJpYnV0ZSBoYW5kbGVycywgdGhlIHpvbmVkLXJlbGF0ZWQgYXR0cmlidXRlIGhhbmRsZXJzLCBgbnVsbF9kZWxfZGV2YCwgYW5kIGBudWxsX2ZyZWVfZGV2YC4gSSBuZWVkIHRvIHRyYWNrIHRob3NlIGRvd24uCgpJdCBhbHNvIGxvb2tzIGxpa2UgdGhpcyBwYXRjaCBpcyBpbmZsdWVuY2VkIGJ5IHR3byBjb25maWcgb3B0aW9uczogYEJMS19ERVZfTlVMTF9CTEtgIGFuZCBgQkxLX0RFVl9aT05FRGAuIFRoZSBzZWNvbmQgb25lLCBgQkxLX0RFVl9aT05FRGAsIGlzIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZy4gWm9uZWQgYmxvY2sgZGV2aWNlcyBhcmUgYSBtb3JlIHJlY2VudCBhZGRpdGlvbiB0byB0aGUgYmxvY2sgbGF5ZXIsIGFuZCBJIGtub3cgdGhleSByZXF1aXJlIHNwZWNpZmljIGhhbmRsaW5nLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgYEJMS19ERVZfWk9ORURgIGluIHRoZSBibG9jayBkcml2ZXIgZGlyZWN0b3J5LiBUaGF0IHdvdWxkIHRlbGwgbWUgd2hhdCYjMzk7cyBkZXBlbmRlbnQgb24gdGhhdCBzZXR0aW5nLiBUaGlzIHBhdGNoIHZlcnkgbGlrZWx5IGRlYWxzIHdpdGggYWRkaW5nIHpvbmVkIHN1cHBvcnQgYW5kIGl0cyBpbXBsaWNhdGlvbnMgb24gdGhlIG51bGwgYmxvY2sgZGV2aWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAwOToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQkxLX0RFVl9aT05FRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2Jsb2NrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YmxvY2svS2NvbmZpZz03Nz1jb25maWcgQkxLX0RFVl9XUklURV9NT1VOVEVEXG4tLVxuYmxvY2svS2NvbmZpZy05Ni1cbmJsb2NrL0tjb25maWc6OTc6Y29uZmlnIEJMS19ERVZfWk9ORURcbmJsb2NrL0tjb25maWctOTgtXHRib29sIFwmIzM0O1pvbmVkIGJsb2NrIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDA5OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODMwCgkJCQkJCQlvdXRwdXQ6IDIwNQoJCQkJCQkJdGhvdWdodHM6IDExODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIG51bGxfYmxrIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSB0YWtlbiBhIGxvb2sgYXQgdGhpcyBwYXRjaCBhbmQgaGVyZSYjMzk7cyBteSBicmVha2Rvd24uIEZpcnN0LCB5ZXMsIGBCTEtfREVWX1pPTkVEYCBpcyBhIHZhbGlkIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIGRyaXZlci4gVGhlIHBhdGNoIG1vZGlmaWVzIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCBhbmQgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYCwgc28gSSYjMzk7bGwgYWRkIHRob3NlIHRvIHRoZSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMuCgpJJiMzOTttIGFsc28gcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byB0aGUgbWFjcm9zIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc2hvd2AgYW5kIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmVgLCB3aGljaCBnZW5lcmF0ZSBhIHNlcmllcyBvZiBzaW1pbGFyIGZ1bmN0aW9ucy4gU2luY2UgSSBjYW4mIzM5O3QgZXhwbGljaXRseSBsaXN0ICpldmVyeSogaW5zdGFuY2UsIEkmIzM5O2xsIGZvY3VzIG9uIHRoZSBmdW5jdGlvbnMgdGhhdCBoYXZlIGV4cGxpY2l0IGRlY2xhcmF0aW9uczogYG51bGxiX2RldmljZV9wb3dlcl9zaG93YCwgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAsIGBudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZWAsIGFuZCBgbnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZWAuIFBsdXMgSSBrbm93IGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCBhbmQgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYCBhcmUgZXhwbGljaXRseSBkZWZpbmVkLiBUaGUgcmVzdCBzaG91bGQgYmUgY292ZXJlZC4KCkkgbmVlZCB0byBtYWtlIHN1cmUgd2UmIzM5O3JlIG5vdCBtaXNzaW5nIGFueSBkZXBlbmRlbmNpZXMuIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBDT05GSUdGU19GU2AgaXMgYWxyZWFkeSBpbXBsaWNpdGx5IHNlbGVjdGVkIGJ5IGBCTEtfREVWX05VTExfQkxLYCwgc28gd2UmIzM5O3JlIGdvb2QgdGhlcmUuICBJJiMzOTt2ZSBhbHNvIHZlcmlmaWVkIHRoYXQgYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgIGlzIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBjb25maWdmcyBhdHRyaWJ1dGVzIGBzdWJtaXRfcXVldWVzYCBhbmQgYHBvbGxfcXVldWVzYC4KCkFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zPyBOb3QgcmVsYXRlZCB0byBmYXVsdCBpbmplY3Rpb24sIHNvIEkgZG9uJiMzOTt0IHNlZSBhbnl0aGluZy4KCk5vdywgbGV0JiMzOTtzIGFuYWx5emUgdGhlIHBhdGNoJiMzOTtzIGZ1bmN0aW9uYWwgY2hhbmdlcy4gVGhlIGNvZGUgbm93IHByZXZlbnRzIHJlc2l6aW5nIGhhcmR3YXJlIHF1ZXVlcyBpZiBgc2hhcmVkX3RhZ3NgIGlzIGVuYWJsZWQsIHdoaWNoIGhhcyBzb21lIGZ1bmN0aW9uYWwgaW1wbGljYXRpb25zLiBBbHNvLCB0aGUgcGF0Y2ggYWxzbyBjaGFuZ2VzIHRoZSBkZWxldGlvbiBzZXF1ZW5jZSB0byBwcm9wZXJseSBmcmVlIHRoZSB6b25lZCBkZXZpY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4KCkJhc2VkIG9uIHRoaXMgYW5hbHlzaXMsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYFdvcnRoRnV6emluZz10cnVlYC4KCkhlcmUgYXJlIHRoZSBjb25maXJtZWQgY29uZmlndXJhdGlvbnM6CgoqICAgYEJMS19ERVZfTlVMTF9CTEtgCiogICBgQkxLX0RFVl9aT05FRGAKCkFuZCB0aGUga2V5IHN5bWJvbHMgdG8gZm9jdXMgb246CgoqICAgYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgCiogICBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AKKiAgIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AKKiAgIGBudWxsYl9kZXZpY2VfcG93ZXJfc2hvd2AKKiAgIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgCiogICBgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmVgCiogICBgbnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZWAKKiAgIGBudWxsX2RlbF9kZXZgCiogICBgbnVsbF9mcmVlX2RldmAKCkkmIzM5O20gZ29pbmcgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIHdpdGggdGhpcyBpbmZvcm1hdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMDk6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OywKICAgICYjMzQ7QkxLX0RFVl9aT05FRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc2hvdyYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsX2RlbF9kZXYmIzM0OywKICAgICYjMzQ7bnVsbF9mcmVlX2RldiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnVsbF9ibGsgZHJpdmVyIHRvIHJlamVjdCByZXNpemluZyBoYXJkd2FyZSBxdWV1ZXMgd2hlbiBzaGFyZWRfdGFncyBpcyBlbmFibGVkLCBhZGRzIGxvY2tpbmcgdG8gY29uZmlnZnMgYXR0cmlidXRlIGFjY2Vzc29ycywgYW5kIGZpeGVzIHRoZSBpbml0aWFsaXphdGlvbi9jbGVhbnVwIG9yZGVyIG9mIHpvbmVkIGRldmljZXMgYW5kIHRoZSBtb2R1bGUgaXRzZWxmLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBibG9jayBkcml2ZXIgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9OVUxMX0JMSyYjMzQ7LAogICAgJiMzNDtCTEtfREVWX1pPTkVEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxiX2FwcGx5X3BvbGxfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxiX2RldmljZV9wb3dlcl9zaG93JiMzNDssCiAgICAmIzM0O251bGxiX2RldmljZV9wb3dlcl9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlJiMzNDssCiAgICAmIzM0O251bGxfZGVsX2RldiYjMzQ7LAogICAgJiMzNDtudWxsX2ZyZWVfZGV2JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBudWxsX2JsayBkcml2ZXIgdG8gcmVqZWN0IHJlc2l6aW5nIGhhcmR3YXJlIHF1ZXVlcyB3aGVuIHNoYXJlZF90YWdzIGlzIGVuYWJsZWQsIGFkZHMgbG9ja2luZyB0byBjb25maWdmcyBhdHRyaWJ1dGUgYWNjZXNzb3JzLCBhbmQgZml4ZXMgdGhlIGluaXRpYWxpemF0aW9uL2NsZWFudXAgb3JkZXIgb2Ygem9uZWQgZGV2aWNlcyBhbmQgdGhlIG1vZHVsZSBpdHNlbGYuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gcmVhY2hhYmxlIGJsb2NrIGRyaXZlciBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTRUMDk6MjM6NDYuMDMzMjYyMjk0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE2NjY2NDkxNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OVUxMX0JMS1wiLFxuICAgIFwiQkxLX0RFVl9aT05FRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNcIixcbiAgICBcIm51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNcIixcbiAgICBcIm51bGxiX2FwcGx5X3BvbGxfcXVldWVzXCIsXG4gICAgXCJudWxsYl9kZXZpY2VfcG93ZXJfc2hvd1wiLFxuICAgIFwibnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlXCIsXG4gICAgXCJudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZVwiLFxuICAgIFwibnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZVwiLFxuICAgIFwibnVsbF9kZWxfZGV2XCIsXG4gICAgXCJudWxsX2ZyZWVfZGV2XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG51bGxfYmxrIGRyaXZlciB0byByZWplY3QgcmVzaXppbmcgaGFyZHdhcmUgcXVldWVzIHdoZW4gc2hhcmVkX3RhZ3MgaXMgZW5hYmxlZCwgYWRkcyBsb2NraW5nIHRvIGNvbmZpZ2ZzIGF0dHJpYnV0ZSBhY2Nlc3NvcnMsIGFuZCBmaXhlcyB0aGUgaW5pdGlhbGl6YXRpb24vY2xlYW51cCBvcmRlciBvZiB6b25lZCBkZXZpY2VzIGFuZCB0aGUgbW9kdWxlIGl0c2VsZi4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byByZWFjaGFibGUgYmxvY2sgZHJpdmVyIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA5OjIzOjQ2LjAzMzI2NzI0NFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzcyMTgwMjUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTNmYzQ3M2Y0MmFhMDY4YTUyNGMyNjI4MDYxNDVhZjhiMGY2ZDdkZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAxNCAwOToyMzo0NCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXFxuaW5kZXggZjhjMGZkNTdlMDQxYTguLmM4NDg3YTYzMGUxYTAxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXFxuKysrIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcXG5AQCAtNjYsNyArNjYsNyBAQCBzdHJ1Y3QgbnVsbGJfcGFnZSB7XFxuICNkZWZpbmUgTlVMTEJfUEFHRV9GUkVFIChNQVBfU1ogLSAyKVxcbiBcXG4gc3RhdGljIExJU1RfSEVBRChudWxsYl9saXN0KTtcXG4tc3RhdGljIHN0cnVjdCBtdXRleCBsb2NrO1xcbitzdGF0aWMgREVGSU5FX01VVEVYKGxvY2spO1xcbiBzdGF0aWMgaW50IG51bGxfbWFqb3I7XFxuIHN0YXRpYyBERUZJTkVfSURBKG51bGxiX2luZGV4ZXMpO1xcbiBzdGF0aWMgc3RydWN0IGJsa19tcV90YWdfc2V0IHRhZ19zZXQ7XFxuQEAgLTM0NSw4ICszNDUsMTQgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsXFxuIHN0YXRpYyBzc2l6ZV90XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNoYXIgKnBhZ2UpXFx0XFxcXFxcbiB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRyZXR1cm4gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc2hvdyhcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHNzaXplX3QgcmV0O1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHJldCA9IG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3Nob3coXFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRcXHRcXHR0b19udWxsYl9kZXZpY2UoaXRlbSktXFx1MDAzZU5BTUUsIHBhZ2UpO1xcdFxcXFxcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZsb2NrKTtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0cmV0dXJuIHJldDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIH1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIHN0YXRpYyBzc2l6ZV90XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjb25zdCBjaGFyICpwYWdlLFxcdFxcXFxcXG5AQCAtMzYwLDEzICszNjYsMTcgQEAgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcXHRcXFxcXFxuIFxcdHJldCA9IG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3N0b3JlKFxcdTAwMjZuZXdfdmFsdWUsIHBhZ2UsIGNvdW50KTtcXFxcXFxuIFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0cmV0dXJuIHJldDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHJldCA9IDA7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGlmIChhcHBseV9mbilcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdHJldCA9IGFwcGx5X2ZuKGRldiwgbmV3X3ZhbHVlKTtcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGVsc2UgaWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCBcXHUwMDI2ZGV2LVxcdTAwM2VmbGFncykpIFxcdFxcXFxcXG4gXFx0XFx0cmV0ID0gLUVCVVNZO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0aWYgKCFyZXQpXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRkZXYtXFx1MDAzZU5BTUUgPSBuZXdfdmFsdWU7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmxvY2spO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tXFx0ZGV2LVxcdTAwM2VOQU1FID0gbmV3X3ZhbHVlO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0cmV0dXJuIGNvdW50O1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gfVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gQ09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBOQU1FKTtcXG5AQCAtMzgyLDYgKzM5MiwxNSBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxcbiBcXHRpZiAoIWRldi1cXHUwMDNlbnVsbGIpXFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXG4rXFx0LypcXG4rXFx0ICogQSBzaGFyZWQgdGFnX3NldCBpcyBtYXBwZWQgdmlhIHRoZSBtb2R1bGUtd2lkZSBxdWV1ZSBjb3VudHMsIHNvIGFcXG4rXFx0ICogcGVyLWRldmljZSByZXNpemUgaXMgbWVhbmluZ2xlc3MuIE9uIHNocmluayBpdCB3b3VsZCBhbHNvIGxlYXZlXFxuK1xcdCAqIG1xX21hcFtdIHBvaW50aW5nIGF0IE5VTExlZCBoY3R4IHNsb3RzLCBjYXVzaW5nIGEgTlVMTCBkZXJlZiBpblxcbitcXHQgKiBibGtfbXFfbWFwX3N3cXVldWUoKS4gUmVqZWN0IGl0LlxcbitcXHQgKi9cXG4rXFx0aWYgKGRldi1cXHUwMDNlc2hhcmVkX3RhZ3MpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4gXFx0LypcXG4gXFx0ICogTWFrZSBzdXJlIGF0IGxlYXN0IG9uZSBzdWJtaXQgcXVldWUgZXhpc3RzLlxcbiBcXHQgKi9cXG5AQCAtNDIxLDI1ICs0NDAsMTMgQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcXG4gc3RhdGljIGludCBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgc3VibWl0X3F1ZXVlcylcXG4ge1xcbi1cXHRpbnQgcmV0O1xcbi1cXG4tXFx0bXV0ZXhfbG9jayhcXHUwMDI2bG9jayk7XFxuLVxcdHJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtXFx1MDAzZXBvbGxfcXVldWVzKTtcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZsb2NrKTtcXG4tXFxuLVxcdHJldHVybiByZXQ7XFxuK1xcdHJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LVxcdTAwM2Vwb2xsX3F1ZXVlcyk7XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBpbnQgcG9sbF9xdWV1ZXMpXFxuIHtcXG4tXFx0aW50IHJldDtcXG4tXFxuLVxcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcbi1cXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LVxcdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XFxuLVxcdG11dGV4X3VubG9jayhcXHUwMDI2bG9jayk7XFxuLVxcbi1cXHRyZXR1cm4gcmV0O1xcbitcXHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi1cXHUwMDNlc3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpO1xcbiB9XFxuIFxcbiBOVUxMQl9ERVZJQ0VfQVRUUihzaXplLCB1bG9uZywgTlVMTCk7XFxuQEAgLTQ3OCw3ICs0ODUsMTMgQEAgTlVMTEJfREVWSUNFX0FUVFIoYmFkYmxvY2tzX3BhcnRpYWxfaW8sIGJvb2wsIE5VTEwpO1xcbiBcXG4gc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxcbiB7XFxuLVxcdHJldHVybiBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3Nob3codG9fbnVsbGJfZGV2aWNlKGl0ZW0pLVxcdTAwM2Vwb3dlciwgcGFnZSk7XFxuK1xcdHNzaXplX3QgcmV0O1xcbitcXG4rXFx0bXV0ZXhfbG9jayhcXHUwMDI2bG9jayk7XFxuK1xcdHJldCA9IG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyh0b19udWxsYl9kZXZpY2UoaXRlbSktXFx1MDAzZXBvd2VyLCBwYWdlKTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZsb2NrKTtcXG4rXFxuK1xcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFxuQEAgLTU3OSw4ICs1OTIsMTMgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXFxuIHtcXG4gXFx0c3RydWN0IG51bGxiX2RldmljZSAqZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pO1xcbitcXHRzc2l6ZV90IHJldDtcXG4rXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcbitcXHRyZXQgPSB6b25lX2NvbmRfc3RvcmUoZGV2LCBwYWdlLCBjb3VudCwgQkxLX1pPTkVfQ09ORF9SRUFET05MWSk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2bG9jayk7XFxuIFxcbi1cXHRyZXR1cm4gem9uZV9jb25kX3N0b3JlKGRldiwgcGFnZSwgY291bnQsIEJMS19aT05FX0NPTkRfUkVBRE9OTFkpO1xcbitcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIENPTkZJR0ZTX0FUVFJfV08obnVsbGJfZGV2aWNlXywgem9uZV9yZWFkb25seSk7XFxuIFxcbkBAIC01ODgsOCArNjA2LDEzIEBAIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV96b25lX29mZmxpbmVfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGNvdW50KVxcbiB7XFxuIFxcdHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiA9IHRvX251bGxiX2RldmljZShpdGVtKTtcXG4rXFx0c3NpemVfdCByZXQ7XFxuK1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXG4rXFx0cmV0ID0gem9uZV9jb25kX3N0b3JlKGRldiwgcGFnZSwgY291bnQsIEJMS19aT05FX0NPTkRfT0ZGTElORSk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2bG9jayk7XFxuIFxcbi1cXHRyZXR1cm4gem9uZV9jb25kX3N0b3JlKGRldiwgcGFnZSwgY291bnQsIEJMS19aT05FX0NPTkRfT0ZGTElORSk7XFxuK1xcdHJldHVybiByZXQ7XFxuIH1cXG4gQ09ORklHRlNfQVRUUl9XTyhudWxsYl9kZXZpY2VfLCB6b25lX29mZmxpbmUpO1xcbiBcXG5AQCAtODM2LDcgKzg1OSw2IEBAIHN0YXRpYyB2b2lkIG51bGxfZnJlZV9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxcbiBcXHRpZiAoIWRldilcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4tXFx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xcbiBcXHRiYWRibG9ja3NfZXhpdChcXHUwMDI2ZGV2LVxcdTAwM2ViYWRibG9ja3MpO1xcbiBcXHRrZnJlZShkZXYpO1xcbiB9XFxuQEAgLTE3NzAsMTggKzE3OTIsMTkgQEAgc3RhdGljIHZvaWQgbnVsbF9kZWxfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXFxuIFxcbiBcXHRkZWxfZ2VuZGlzayhudWxsYi1cXHUwMDNlZGlzayk7XFxuIFxcbi1cXHRpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX1RIUk9UVExFRCwgXFx1MDAyNm51bGxiLVxcdTAwM2VkZXYtXFx1MDAzZWZsYWdzKSkge1xcbitcXHRpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX1RIUk9UVExFRCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpKSB7XFxuIFxcdFxcdGhydGltZXJfY2FuY2VsKFxcdTAwMjZudWxsYi1cXHUwMDNlYndfdGltZXIpO1xcbiBcXHRcXHRhdG9taWNfbG9uZ19zZXQoXFx1MDAyNm51bGxiLVxcdTAwM2VjdXJfYnl0ZXMsIExPTkdfTUFYKTtcXG4gXFx0XFx0YmxrX21xX3N0YXJ0X3N0b3BwZWRfaHdfcXVldWVzKG51bGxiLVxcdTAwM2VxLCB0cnVlKTtcXG4gXFx0fVxcbiBcXG4gXFx0cHV0X2Rpc2sobnVsbGItXFx1MDAzZWRpc2spO1xcbitcXHRudWxsX2ZyZWVfem9uZWRfZGV2KGRldik7XFxuIFxcdGlmIChudWxsYi1cXHUwMDNldGFnX3NldCA9PSBcXHUwMDI2bnVsbGItXFx1MDAzZV9fdGFnX3NldClcXG4gXFx0XFx0YmxrX21xX2ZyZWVfdGFnX3NldChudWxsYi1cXHUwMDNldGFnX3NldCk7XFxuIFxcdGtmcmVlKG51bGxiLVxcdTAwM2VxdWV1ZXMpO1xcbiBcXHRpZiAobnVsbF9jYWNoZV9hY3RpdmUobnVsbGIpKVxcbi1cXHRcXHRudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2UobnVsbGItXFx1MDAzZWRldiwgdHJ1ZSk7XFxuK1xcdFxcdG51bGxfZnJlZV9kZXZpY2Vfc3RvcmFnZShkZXYsIHRydWUpO1xcbiBcXHRrZnJlZShudWxsYik7XFxuIFxcdGRldi1cXHUwMDNlbnVsbGIgPSBOVUxMO1xcbiB9XFxuQEAgLTIxNjIsMTcgKzIxODUsOSBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcXG4gXFx0Y29uZmlnX2dyb3VwX2luaXQoXFx1MDAyNm51bGxiX3N1YnN5cy5zdV9ncm91cCk7XFxuIFxcdG11dGV4X2luaXQoXFx1MDAyNm51bGxiX3N1YnN5cy5zdV9tdXRleCk7XFxuIFxcbi1cXHRyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oXFx1MDAyNm51bGxiX3N1YnN5cyk7XFxuLVxcdGlmIChyZXQpXFxuLVxcdFxcdHJldHVybiByZXQ7XFxuLVxcbi1cXHRtdXRleF9pbml0KFxcdTAwMjZsb2NrKTtcXG4tXFxuIFxcdG51bGxfbWFqb3IgPSByZWdpc3Rlcl9ibGtkZXYoMCwgXFxcIm51bGxiXFxcIik7XFxuLVxcdGlmIChudWxsX21ham9yIFxcdTAwM2MgMCkge1xcbi1cXHRcXHRyZXQgPSBudWxsX21ham9yO1xcbi1cXHRcXHRnb3RvIGVycl9jb25mO1xcbi1cXHR9XFxuK1xcdGlmIChudWxsX21ham9yIFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIG51bGxfbWFqb3I7XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnJfZGV2aWNlczsgaSsrKSB7XFxuIFxcdFxcdHJldCA9IG51bGxfY3JlYXRlX2RldigpO1xcbkBAIC0yMTgwLDYgKzIxOTUsMTAgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXFxuIFxcdFxcdFxcdGdvdG8gZXJyX2RldjtcXG4gXFx0fVxcbiBcXG4rXFx0cmV0ID0gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKFxcdTAwMjZudWxsYl9zdWJzeXMpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRnb3RvIGVycl9kZXY7XFxuK1xcbiBcXHRwcl9pbmZvKFxcXCJtb2R1bGUgbG9hZGVkXFxcXG5cXFwiKTtcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbkBAIC0yMTg5LDggKzIyMDgsOCBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcXG4gXFx0XFx0bnVsbF9kZXN0cm95X2RldihudWxsYik7XFxuIFxcdH1cXG4gXFx0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXFxcIm51bGxiXFxcIik7XFxuLWVycl9jb25mOlxcbi1cXHRjb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbShcXHUwMDI2bnVsbGJfc3Vic3lzKTtcXG4rXFx0aWYgKHRhZ19zZXQub3BzKVxcbitcXHRcXHRibGtfbXFfZnJlZV90YWdfc2V0KFxcdTAwMjZ0YWdfc2V0KTtcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG5AQCAtMjIwMCw4ICsyMjE5LDYgQEAgc3RhdGljIHZvaWQgX19leGl0IG51bGxfZXhpdCh2b2lkKVxcbiBcXG4gXFx0Y29uZmlnZnNfdW5yZWdpc3Rlcl9zdWJzeXN0ZW0oXFx1MDAyNm51bGxiX3N1YnN5cyk7XFxuIFxcbi1cXHR1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCBcXFwibnVsbGJcXFwiKTtcXG4tXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcbiBcXHR3aGlsZSAoIWxpc3RfZW1wdHkoXFx1MDAyNm51bGxiX2xpc3QpKSB7XFxuIFxcdFxcdG51bGxiID0gbGlzdF9lbnRyeShudWxsYl9saXN0Lm5leHQsIHN0cnVjdCBudWxsYiwgbGlzdCk7XFxuQEAgLTIyMDksNiArMjIyNiw4IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZClcXG4gXFx0fVxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNmxvY2spO1xcbiBcXG4rXFx0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXFxcIm51bGxiXFxcIik7XFxuK1xcbiBcXHRpZiAodGFnX3NldC5vcHMpXFxuIFxcdFxcdGJsa19tcV9mcmVlX3RhZ19zZXQoXFx1MDAyNnRhZ19zZXQpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDk6MjM6NDYuNDA2MDM5NDc2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTI5Mzg2MjgxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCIsXG4gICAgXCJCTEtfREVWX1pPTkVEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc1wiLFxuICAgIFwibnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc1wiLFxuICAgIFwibnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNcIixcbiAgICBcIm51bGxiX2RldmljZV9wb3dlcl9zaG93XCIsXG4gICAgXCJudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVcIixcbiAgICBcIm51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlXCIsXG4gICAgXCJudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlXCIsXG4gICAgXCJudWxsX2RlbF9kZXZcIixcbiAgICBcIm51bGxfZnJlZV9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnVsbF9ibGsgZHJpdmVyIHRvIHJlamVjdCByZXNpemluZyBoYXJkd2FyZSBxdWV1ZXMgd2hlbiBzaGFyZWRfdGFncyBpcyBlbmFibGVkLCBhZGRzIGxvY2tpbmcgdG8gY29uZmlnZnMgYXR0cmlidXRlIGFjY2Vzc29ycywgYW5kIGZpeGVzIHRoZSBpbml0aWFsaXphdGlvbi9jbGVhbnVwIG9yZGVyIG9mIHpvbmVkIGRldmljZXMgYW5kIHRoZSBtb2R1bGUgaXRzZWxmLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBibG9jayBkcml2ZXIgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhM2ZjNDczZjQyYWEwNjhhNTI0YzI2MjgwNjE0NWFmOGIwZjZkN2RkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMDk6MjM6NDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5pbmRleCBmOGMwZmQ1N2UwNDFhOC4uYzg0ODdhNjMwZTFhMDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuKysrIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbkBAIC02Niw3ICs2Niw3IEBAIHN0cnVjdCBudWxsYl9wYWdlIHtcbiAjZGVmaW5lIE5VTExCX1BBR0VfRlJFRSAoTUFQX1NaIC0gMilcbiBcbiBzdGF0aWMgTElTVF9IRUFEKG51bGxiX2xpc3QpO1xuLXN0YXRpYyBzdHJ1Y3QgbXV0ZXggbG9jaztcbitzdGF0aWMgREVGSU5FX01VVEVYKGxvY2spO1xuIHN0YXRpYyBpbnQgbnVsbF9tYWpvcjtcbiBzdGF0aWMgREVGSU5FX0lEQShudWxsYl9pbmRleGVzKTtcbiBzdGF0aWMgc3RydWN0IGJsa19tcV90YWdfc2V0IHRhZ19zZXQ7XG5AQCAtMzQ1LDggKzM0NSwxNCBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3N0b3JlKGJvb2wgKnZhbCwgY29uc3QgY2hhciAqcGFnZSxcbiBzdGF0aWMgc3NpemVfdFx0XHRcdFx0XHRcdFx0XHRcXFxuIG51bGxiX2RldmljZV8jI05BTUUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcdFxcXG4ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRyZXR1cm4gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc2hvdyhcdFx0XHRcdFxcXG4rXHRzc2l6ZV90IHJldDtcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdFx0XHRcdFx0XHRcdFx0XFxcbitcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XHRcdFx0XHRcdFx0XFxcbitcdHJldCA9IG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3Nob3coXHRcdFx0XHRcXFxuIFx0XHRcdFx0dG9fbnVsbGJfZGV2aWNlKGl0ZW0pLVx1MDAzZU5BTUUsIHBhZ2UpO1x0XFxcbitcdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcdFx0XHRcdFx0XHRcXFxuK1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRyZXR1cm4gcmV0O1x0XHRcdFx0XHRcdFx0XFxcbiB9XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBzdGF0aWMgc3NpemVfdFx0XHRcdFx0XHRcdFx0XHRcXFxuIG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNvbnN0IGNoYXIgKnBhZ2UsXHRcXFxuQEAgLTM2MCwxMyArMzY2LDE3IEBAIG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNvbnN0IGNoYXIgKnBhZ2UsXHRcXFxuIFx0cmV0ID0gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc3RvcmUoXHUwMDI2bmV3X3ZhbHVlLCBwYWdlLCBjb3VudCk7XFxcbiBcdGlmIChyZXQgXHUwMDNjIDApXHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRyZXR1cm4gcmV0O1x0XHRcdFx0XHRcdFxcXG4rXHRyZXQgPSAwO1x0XHRcdFx0XHRcdFx0XFxcbitcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XHRcdFx0XHRcdFx0XFxcbiBcdGlmIChhcHBseV9mbilcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdHJldCA9IGFwcGx5X2ZuKGRldiwgbmV3X3ZhbHVlKTtcdFx0XHRcdFxcXG4gXHRlbHNlIGlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfQ09ORklHVVJFRCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSkgXHRcXFxuIFx0XHRyZXQgPSAtRUJVU1k7XHRcdFx0XHRcdFx0XFxcbitcdGlmICghcmV0KVx0XHRcdFx0XHRcdFx0XFxcbitcdFx0ZGV2LVx1MDAzZU5BTUUgPSBuZXdfdmFsdWU7XHRcdFx0XHRcdFxcXG4rXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XHRcdFx0XHRcdFx0XFxcbiBcdGlmIChyZXQgXHUwMDNjIDApXHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRyZXR1cm4gcmV0O1x0XHRcdFx0XHRcdFxcXG4tXHRkZXYtXHUwMDNlTkFNRSA9IG5ld192YWx1ZTtcdFx0XHRcdFx0XHRcXFxuIFx0cmV0dXJuIGNvdW50O1x0XHRcdFx0XHRcdFx0XFxcbiB9XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIE5BTUUpO1xuQEAgLTM4Miw2ICszOTIsMTUgQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcdGlmICghZGV2LVx1MDAzZW51bGxiKVxuIFx0XHRyZXR1cm4gMDtcbiBcbitcdC8qXG4rXHQgKiBBIHNoYXJlZCB0YWdfc2V0IGlzIG1hcHBlZCB2aWEgdGhlIG1vZHVsZS13aWRlIHF1ZXVlIGNvdW50cywgc28gYVxuK1x0ICogcGVyLWRldmljZSByZXNpemUgaXMgbWVhbmluZ2xlc3MuIE9uIHNocmluayBpdCB3b3VsZCBhbHNvIGxlYXZlXG4rXHQgKiBtcV9tYXBbXSBwb2ludGluZyBhdCBOVUxMZWQgaGN0eCBzbG90cywgY2F1c2luZyBhIE5VTEwgZGVyZWYgaW5cbitcdCAqIGJsa19tcV9tYXBfc3dxdWV1ZSgpLiBSZWplY3QgaXQuXG4rXHQgKi9cbitcdGlmIChkZXYtXHUwMDNlc2hhcmVkX3RhZ3MpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuIFx0LypcbiBcdCAqIE1ha2Ugc3VyZSBhdCBsZWFzdCBvbmUgc3VibWl0IHF1ZXVlIGV4aXN0cy5cbiBcdCAqL1xuQEAgLTQyMSwyNSArNDQwLDEzIEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4gc3RhdGljIGludCBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgICAgdW5zaWduZWQgaW50IHN1Ym1pdF9xdWV1ZXMpXG4ge1xuLVx0aW50IHJldDtcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4tXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LVx1MDAzZXBvbGxfcXVldWVzKTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbi1cbi1cdHJldHVybiByZXQ7XG4rXHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi1cdTAwM2Vwb2xsX3F1ZXVlcyk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICAgdW5zaWduZWQgaW50IHBvbGxfcXVldWVzKVxuIHtcbi1cdGludCByZXQ7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuLVx0cmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi1cdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4tXG4tXHRyZXR1cm4gcmV0O1xuK1x0cmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtXHUwMDNlc3VibWl0X3F1ZXVlcywgcG9sbF9xdWV1ZXMpO1xuIH1cbiBcbiBOVUxMQl9ERVZJQ0VfQVRUUihzaXplLCB1bG9uZywgTlVMTCk7XG5AQCAtNDc4LDcgKzQ4NSwxMyBAQCBOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3NfcGFydGlhbF9pbywgYm9vbCwgTlVMTCk7XG4gXG4gc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxuIHtcbi1cdHJldHVybiBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3Nob3codG9fbnVsbGJfZGV2aWNlKGl0ZW0pLVx1MDAzZXBvd2VyLCBwYWdlKTtcbitcdHNzaXplX3QgcmV0O1xuK1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbitcdHJldCA9IG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyh0b19udWxsYl9kZXZpY2UoaXRlbSktXHUwMDNlcG93ZXIsIHBhZ2UpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuK1xuK1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbkBAIC01NzksOCArNTkyLDEzIEBAIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbiBcdFx0XHRcdFx0XHRjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXG4ge1xuIFx0c3RydWN0IG51bGxiX2RldmljZSAqZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pO1xuK1x0c3NpemVfdCByZXQ7XG4rXG4rXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuK1x0cmV0ID0gem9uZV9jb25kX3N0b3JlKGRldiwgcGFnZSwgY291bnQsIEJMS19aT05FX0NPTkRfUkVBRE9OTFkpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuIFxuLVx0cmV0dXJuIHpvbmVfY29uZF9zdG9yZShkZXYsIHBhZ2UsIGNvdW50LCBCTEtfWk9ORV9DT05EX1JFQURPTkxZKTtcbitcdHJldHVybiByZXQ7XG4gfVxuIENPTkZJR0ZTX0FUVFJfV08obnVsbGJfZGV2aWNlXywgem9uZV9yZWFkb25seSk7XG4gXG5AQCAtNTg4LDggKzYwNiwxMyBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbiBcdFx0XHRcdFx0ICAgICAgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBjb3VudClcbiB7XG4gXHRzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYgPSB0b19udWxsYl9kZXZpY2UoaXRlbSk7XG4rXHRzc2l6ZV90IHJldDtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4rXHRyZXQgPSB6b25lX2NvbmRfc3RvcmUoZGV2LCBwYWdlLCBjb3VudCwgQkxLX1pPTkVfQ09ORF9PRkZMSU5FKTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbiBcbi1cdHJldHVybiB6b25lX2NvbmRfc3RvcmUoZGV2LCBwYWdlLCBjb3VudCwgQkxLX1pPTkVfQ09ORF9PRkZMSU5FKTtcbitcdHJldHVybiByZXQ7XG4gfVxuIENPTkZJR0ZTX0FUVFJfV08obnVsbGJfZGV2aWNlXywgem9uZV9vZmZsaW5lKTtcbiBcbkBAIC04MzYsNyArODU5LDYgQEAgc3RhdGljIHZvaWQgbnVsbF9mcmVlX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXG4gXHRpZiAoIWRldilcbiBcdFx0cmV0dXJuO1xuIFxuLVx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xuIFx0YmFkYmxvY2tzX2V4aXQoXHUwMDI2ZGV2LVx1MDAzZWJhZGJsb2Nrcyk7XG4gXHRrZnJlZShkZXYpO1xuIH1cbkBAIC0xNzcwLDE4ICsxNzkyLDE5IEBAIHN0YXRpYyB2b2lkIG51bGxfZGVsX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxuIFxuIFx0ZGVsX2dlbmRpc2sobnVsbGItXHUwMDNlZGlzayk7XG4gXG4tXHRpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX1RIUk9UVExFRCwgXHUwMDI2bnVsbGItXHUwMDNlZGV2LVx1MDAzZWZsYWdzKSkge1xuK1x0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncykpIHtcbiBcdFx0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2bnVsbGItXHUwMDNlYndfdGltZXIpO1xuIFx0XHRhdG9taWNfbG9uZ19zZXQoXHUwMDI2bnVsbGItXHUwMDNlY3VyX2J5dGVzLCBMT05HX01BWCk7XG4gXHRcdGJsa19tcV9zdGFydF9zdG9wcGVkX2h3X3F1ZXVlcyhudWxsYi1cdTAwM2VxLCB0cnVlKTtcbiBcdH1cbiBcbiBcdHB1dF9kaXNrKG51bGxiLVx1MDAzZWRpc2spO1xuK1x0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xuIFx0aWYgKG51bGxiLVx1MDAzZXRhZ19zZXQgPT0gXHUwMDI2bnVsbGItXHUwMDNlX190YWdfc2V0KVxuIFx0XHRibGtfbXFfZnJlZV90YWdfc2V0KG51bGxiLVx1MDAzZXRhZ19zZXQpO1xuIFx0a2ZyZWUobnVsbGItXHUwMDNlcXVldWVzKTtcbiBcdGlmIChudWxsX2NhY2hlX2FjdGl2ZShudWxsYikpXG4tXHRcdG51bGxfZnJlZV9kZXZpY2Vfc3RvcmFnZShudWxsYi1cdTAwM2VkZXYsIHRydWUpO1xuK1x0XHRudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2UoZGV2LCB0cnVlKTtcbiBcdGtmcmVlKG51bGxiKTtcbiBcdGRldi1cdTAwM2VudWxsYiA9IE5VTEw7XG4gfVxuQEAgLTIxNjIsMTcgKzIxODUsOSBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcbiBcdGNvbmZpZ19ncm91cF9pbml0KFx1MDAyNm51bGxiX3N1YnN5cy5zdV9ncm91cCk7XG4gXHRtdXRleF9pbml0KFx1MDAyNm51bGxiX3N1YnN5cy5zdV9tdXRleCk7XG4gXG4tXHRyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2bnVsbGJfc3Vic3lzKTtcbi1cdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4tXG4tXHRtdXRleF9pbml0KFx1MDAyNmxvY2spO1xuLVxuIFx0bnVsbF9tYWpvciA9IHJlZ2lzdGVyX2Jsa2RldigwLCBcIm51bGxiXCIpO1xuLVx0aWYgKG51bGxfbWFqb3IgXHUwMDNjIDApIHtcbi1cdFx0cmV0ID0gbnVsbF9tYWpvcjtcbi1cdFx0Z290byBlcnJfY29uZjtcbi1cdH1cbitcdGlmIChudWxsX21ham9yIFx1MDAzYyAwKVxuK1x0XHRyZXR1cm4gbnVsbF9tYWpvcjtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX2RldmljZXM7IGkrKykge1xuIFx0XHRyZXQgPSBudWxsX2NyZWF0ZV9kZXYoKTtcbkBAIC0yMTgwLDYgKzIxOTUsMTAgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXG4gXHRcdFx0Z290byBlcnJfZGV2O1xuIFx0fVxuIFxuK1x0cmV0ID0gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKFx1MDAyNm51bGxiX3N1YnN5cyk7XG4rXHRpZiAocmV0KVxuK1x0XHRnb3RvIGVycl9kZXY7XG4rXG4gXHRwcl9pbmZvKFwibW9kdWxlIGxvYWRlZFxcblwiKTtcbiBcdHJldHVybiAwO1xuIFxuQEAgLTIxODksOCArMjIwOCw4IEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxuIFx0XHRudWxsX2Rlc3Ryb3lfZGV2KG51bGxiKTtcbiBcdH1cbiBcdHVucmVnaXN0ZXJfYmxrZGV2KG51bGxfbWFqb3IsIFwibnVsbGJcIik7XG4tZXJyX2NvbmY6XG4tXHRjb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbShcdTAwMjZudWxsYl9zdWJzeXMpO1xuK1x0aWYgKHRhZ19zZXQub3BzKVxuK1x0XHRibGtfbXFfZnJlZV90YWdfc2V0KFx1MDAyNnRhZ19zZXQpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG5AQCAtMjIwMCw4ICsyMjE5LDYgQEAgc3RhdGljIHZvaWQgX19leGl0IG51bGxfZXhpdCh2b2lkKVxuIFxuIFx0Y29uZmlnZnNfdW5yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2bnVsbGJfc3Vic3lzKTtcbiBcbi1cdHVucmVnaXN0ZXJfYmxrZGV2KG51bGxfbWFqb3IsIFwibnVsbGJcIik7XG4tXG4gXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuIFx0d2hpbGUgKCFsaXN0X2VtcHR5KFx1MDAyNm51bGxiX2xpc3QpKSB7XG4gXHRcdG51bGxiID0gbGlzdF9lbnRyeShudWxsYl9saXN0Lm5leHQsIHN0cnVjdCBudWxsYiwgbGlzdCk7XG5AQCAtMjIwOSw2ICsyMjI2LDggQEAgc3RhdGljIHZvaWQgX19leGl0IG51bGxfZXhpdCh2b2lkKVxuIFx0fVxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuIFxuK1x0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXCJudWxsYlwiKTtcbitcbiBcdGlmICh0YWdfc2V0Lm9wcylcbiBcdFx0YmxrX21xX2ZyZWVfdGFnX3NldChcdTAwMjZ0YWdfc2V0KTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA5OjIzOjQ2LjQwNjA0MTAwNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4MDI0MDQ0MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gdGhlIGBudWxsX2Jsa2AgRHJpdmVyIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIGJlZW4gYXBwbGllZCB0byBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNgLiBJdCdzIGRlZmluaXRlbHkgbWFraW5nIHNvbWUgZnVuY3Rpb25hbCBjaGFuZ2VzLiBJIHNlZSB0aGV5J3ZlIGFkZGVkIGEgY2hlY2sgaW4gYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgIHdoaWNoIHNlZW1zIHRvIHJlamVjdCByZXNpemluZyBpZiBgZGV2LVx1MDAzZXNoYXJlZF90YWdzYCBpcyB0cnVlLiBJbnRlcmVzdGluZy4gVGhlcmUgYXJlIGFsc28gY2hhbmdlcyB0byB0aGUgbG9ja2luZyB3aXRoaW4gdGhlIHN5c2ZzIGFuZCBjb25maWdmcyBzdG9yZS9zaG93IGZ1bmN0aW9ucyByZWxhdGVkIHRvIGRldmljZSBtYW5hZ2VtZW50LiBMb29rcyBsaWtlIHRoZXkndmUgbW92ZWQgYG51bGxfZnJlZV96b25lZF9kZXYoZGV2KWAgYW5kIG1vZGlmaWVkIGluaXRpYWxpemF0aW9uIGFuZCBleGl0IG9yZGVyIGluIGBudWxsX2luaXRgIGFuZCBgbnVsbF9leGl0YC5cblxuRnVuY3Rpb25hbGx5LCB0aGVzZSBhcmUgYWxsIGNoYW5nZXMgdG8gdGhlIGBudWxsX2Jsa2AgZHJpdmVyIHdpdGhpbiB0aGUgYmxvY2sgc3Vic3lzdGVtLiBUaGlzIGRyaXZlciBpcywgYXMgSSByZWNhbGwsIGEgc29mdHdhcmUgYmxvY2sgZGV2aWNlIHVzZWQgcHJpbWFyaWx5IGZvciB0ZXN0aW5nIGFuZCBiZW5jaG1hcmtpbmcsIGFuZCBJIGtub3cgaXQncyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB3aGljaCBtYWtlcyBpdCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBHaXZlbiB0aGUgZnVuY3Rpb25hbCBjaGFuZ2VzIGFuZCB0aGUgZHJpdmVyJ3MgbmF0dXJlLCBJJ20gY29uZmlkZW50IGluIHRhZ2dpbmcgdGhpcyB3aXRoIGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbk5vdywgdGhlIG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgbmVlZGVkIHRvIGVuYWJsZSB0aGlzIGRyaXZlci4gSSdsbCB1c2UgYGdyZXBwZXJgIG9yIGEgc2ltaWxhciB0b29sIHRvIHF1aWNrbHkgc2VhcmNoIHRoZSBgZHJpdmVycy9ibG9jay9LY29uZmlnYCBmaWxlIG9yIG90aGVyIHJlbGV2YW50IEtjb25maWcgZmlsZXMgZm9yIFwibnVsbF9ibGtcIi4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY29uZmlndXJhdGlvbiBzeW1ib2wocykgSSBuZWVkIHRvIHJlcHJvZHVjZSBhbmQgdGVzdCB0aGlzIHdpdGggbXkgZnV6emluZyBzZXR1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM5OCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA5OjIzOjUyLjIwODQ0NzI4OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODU5NjkyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudWxsX2Jsa1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9LY29uZmlnPTE3PWlmIEJMS19ERVZcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTgtXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjE5OnNvdXJjZSBcXFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnXFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yMC1zb3VyY2UgXFxcImRyaXZlcnMvYmxvY2svcm51bGwvS2NvbmZpZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDk6MjM6NTIuMjY3MDQ5MjU1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYyOTE2MzQzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIG9mIHRoZSB0aG91Z2h0IHByb2Nlc3MgZGVzY3JpYmVkOlxuXG4qKkV4YW1pbmluZyB0aGUgTnVsbCBCbG9jayBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBudWxsIGJsb2NrIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgaGVhcnQgb2YgdGhpbmdzOiBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSBhbGwgdGhlIGBjb25maWdgIG9wdGlvbnMgc2hvdWxkIHJlc2lkZSwgZGVmaW5pbmcgd2hhdCBmZWF0dXJlcyBvZiB0aGlzIGRyaXZlciBhcmUgZW5hYmxlZCwgZGlzYWJsZWQsIG9yIGNvbmZpZ3VyYWJsZSBieSB0aGUgdXNlciBhdCBidWlsZCB0aW1lLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIHN0YW5kYXJkIHN0dWZmIGhlcmU6IHRoaW5ncyBsaWtlIHRoZSBudW1iZXIgb2YgZGV2aWNlcyBpdCBjYW4gZW11bGF0ZSwgYW55IHNwZWNpZmljIGVtdWxhdGlvbiBjaGFyYWN0ZXJpc3RpY3MsIG1heWJlIGV2ZW4gb3B0aW9ucyByZWxhdGVkIHRvIGVycm9yIGluamVjdGlvbiBvciB0ZXN0aW5nIGNhcGFiaWxpdGllcywgaWYgaXQgaGFzIGFueS4gTGV0J3MgZ2V0IHJpZ2h0IHRvIGl0LiBJIHdhbnQgdG8gc2VlIGhvdyBncmFudWxhciB0aGUgY29udHJvbCBpcy4gSSdtIGFzc3VtaW5nIHRoYXQgc2luY2UgdGhpcyBpcyBhIFwibnVsbFwiIGRyaXZlciwgbW9zdCBvZiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgYmUgc3RyYWlnaHRmb3J3YXJkLCBidXQgeW91IG5ldmVyIGtub3cuIEl0IGNvdWxkIGhhdmUgc3VycHJpc2luZyBlZGdlIGNhc2VzIG9yIGNvbXBsZXhpdGllcyB0aGF0IGFyZSBvbmx5IGV2aWRlbnQgd2hlbiBsb29raW5nIGF0IHRoZSBjb25maWd1cmF0aW9uIGNob2ljZXMgdGhlbXNlbHZlcy4gVGhlIEtjb25maWcgZmlsZSBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgbGF5IG9mIHRoZSBsYW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTM0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDk6MjM6NTYuODk2MjE0MjU2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ0MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTnVsbCBibG9jayBkZXZpY2UgZHJpdmVyIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcbiAgIDg6XFx0XFx0c2VsZWN0IENPTkZJR0ZTX0ZTXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbiAgMTE6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBmYXVsdCBpbmplY3Rpb24gZm9yIE51bGwgdGVzdCBibG9jayBkcml2ZXJcXFwiXFxuICAxMjpcXHRcXHRkZXBlbmRzIG9uIEJMS19ERVZfTlVMTF9CTEsgXFx1MDAyNlxcdTAwMjYgRkFVTFRfSU5KRUNUSU9OX0NPTkZJR0ZTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA5OjIzOjU2Ljg5NjI3MDM0NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MjkzNTAxNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBab25lZCBEZXZpY2UgSW50ZXJhY3Rpb25zIHdpdGggYEJMS19ERVZfTlVMTF9CTEtgKipcblxuUmlnaHQsIHNvIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gaGVyZSBpcyBgQkxLX0RFVl9OVUxMX0JMS2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIHRpZXMgaW4gd2l0aCB0aGUgYnJvYWRlciBzeXN0ZW0uIEkgc2VlIHRoYXQgdGhlIHBhdGNoIHNlZW1zIHRvIGJlIHJlYWNoaW5nIGludG8gem9uZWQgZGV2aWNlIGZ1bmN0aW9uYWxpdGllcywgc3BlY2lmaWNhbGx5IGB6b25lX2NvbmRfc3RvcmVgIGFuZCBgbnVsbF9mcmVlX3pvbmVkX2RldmAuIEdpdmVuIG15IGV4cGVyaWVuY2UsIHRoYXQgcmFpc2VzIGEgZmxhZy4gV2UncmUgZGVhbGluZyB3aXRoIGEgYmxvY2sgZGV2aWNlLCBhbmQgem9uZWQgZGV2aWNlcyBoYXZlIHRoZWlyIHVuaXF1ZSBjaGFyYWN0ZXJpc3RpY3MuIEl04oCZcyBpbXBvcnRhbnQgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IHNwZWNpYWxpemVkIGNvbmZpZ3VyYXRpb24gdGhhdCBpbnRlcmFjdHMgd2l0aCB0aGUgem9uZWQgYXNwZWN0cyB3aXRoaW4gdGhlIG51bGwgYmxvY2sgZGV2aWNlIGNvbnRleHQuIE15IG5leHQgc3RlcCBpcyB0byBkZXRlcm1pbmUgaWYgYW55IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgc3BlY2lmaWMgdG8gdGhpcyBpbnRlcnNlY3Rpb24gb2YgYSBudWxsIGJsb2NrIGRldmljZSBhbmQgYSB6b25lZCBjb25maWd1cmF0aW9uLiBJcyB0aGVyZSBhbnkgd2F5IHRoYXQgbnVsbCBibG9jayBkZXZpY2UgZmVhdHVyZXMgY2FuIGludGVyYWN0IHdpdGggem9uZWQgY29uZmlndXJhdGlvbnM/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NzgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA5OjI0OjAwLjUyNTYyMzA5M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTMxMTA4ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnVsbF9mcmVlX3pvbmVkX2RldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE3ODA9c3RhdGljIHZvaWQgbnVsbF9kZWxfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xODAxLVxcdHB1dF9kaXNrKG51bGxiLVxcdTAwM2VkaXNrKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxODAyOlxcdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xODAzLVxcdGlmIChudWxsYi1cXHUwMDNldGFnX3NldCA9PSBcXHUwMDI2bnVsbGItXFx1MDAzZV9fdGFnX3NldClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE5Nzg9c3RhdGljIGludCBudWxsX2FkZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA4OS1vdXRfY2xlYW51cF96b25lOlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjIwOTA6XFx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwOTEtb3V0X2NsZWFudXBfdGFnczpcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaD0xNDM9aW50IG51bGxfcmVnaXN0ZXJfem9uZWRfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaDoxNDQ6dm9pZCBudWxsX2ZyZWVfem9uZWRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTE0NS1pbnQgbnVsbF9yZXBvcnRfem9uZXMoc3RydWN0IGdlbmRpc2sgKmRpc2ssIHNlY3Rvcl90IHNlY3RvcixcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaD0xNjE9c3RhdGljIGlubGluZSBpbnQgbnVsbF9yZWdpc3Rlcl96b25lZF9kZXYoc3RydWN0IG51bGxiICpudWxsYilcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC0xNjQtfVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaDoxNjU6c3RhdGljIGlubGluZSB2b2lkIG51bGxfZnJlZV96b25lZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KSB7fVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC0xNjYtc3RhdGljIGlubGluZSBibGtfc3RhdHVzX3QgbnVsbF9wcm9jZXNzX3pvbmVkX2NtZChzdHJ1Y3QgbnVsbGJfY21kICpjbWQsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmM9MTc1PWludCBudWxsX3JlZ2lzdGVyX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jLTE4Ni1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL3pvbmVkLmM6MTg3OnZvaWQgbnVsbF9mcmVlX3pvbmVkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay96b25lZC5jLTE4OC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDA5OjI0OjAwLjgxODczODA5MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxODc4MDk4OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBCdWlsZCBQcm9jZXNzIGZvciBab25lZCBCbG9jayBEZXZpY2VzKipcblxuQWxyaWdodCwgSSdtIHRoaW5raW5nIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgem9uZWQuY2Agd2l0aGluIHRoZSBudWxsIGJsb2NrIGRyaXZlciBpcyBnZXR0aW5nIGNvbXBpbGVkLiBTcGVjaWZpY2FsbHksIEknbSB3b25kZXJpbmcgYWJvdXQgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gYW5kIGRlcGVuZGVuY2llcy4gTXkgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9NYWtlZmlsZWAuIFRoYXQncyBhbG1vc3QgYWx3YXlzIHRoZSBmaXJzdCBwbGFjZSB0byBsb29rIHdoZW4gdHJ5aW5nIHRvIHVudGFuZ2xlIGJ1aWxkIHByb2Nlc3NlcyB3aXRoaW4gdGhlIGtlcm5lbC4gVGhlIE1ha2VmaWxlIHNob3VsZCBzaGVkIGxpZ2h0IG9uIGFueSBzcGVjaWZpYyBmbGFncywgaW5jbHVkZSBkaXJlY3Rvcmllcywgb3IgbGlicmFyeSBkZXBlbmRlbmNpZXMgdGhhdCBhcmUgYmVpbmcgdXNlZCBkdXJpbmcgdGhlIGNvbXBpbGF0aW9uIG9mIGB6b25lZC5jYC4gSSdtIGhvcGluZyBpdCdsbCByZXZlYWwgaG93IHRoZSB6b25lZCBibG9jayBmdW5jdGlvbmFsaXR5IGlzIGludGVncmF0ZWQsIHdoZXRoZXIgaXQncyBjb25kaXRpb25hbGx5IGNvbXBpbGVkIG9yIHBhcnQgb2YgdGhlIHN0YW5kYXJkIG51bGwgYmxvY2sgZHJpdmVyIGJ1aWxkLCBhbmQgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIHJlcXVpcmVkIGZvciBlbmFibGluZyB6b25lZCBtb2RlLiBUaGUgTWFrZWZpbGUgc2hvdWxkIGFsc28gb3V0bGluZSB0aGUgb2JqZWN0IGZpbGVzIGFuZCBsaWJyYXJ5IGxpbmthZ2VzLCBnaXZpbmcgbWUgdGhlIGNydWNpYWwgY29tcGlsZSBhbmQgbGluayBmbGFncyB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDY2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDk6MjQ6MDQuMDA2NTQ5NTcxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzNTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRcXG4gICAzOlxcdCMgbmVlZGVkIGZvciB0cmFjZSBldmVudHNcXG4gICA0OlxcdGNjZmxhZ3MteVxcdFxcdFxcdCs9IC1JJChzcmMpXFxuICAgNTpcXHRcXG4gICA2OlxcdG9iai0kKENPTkZJR19CTEtfREVWX05VTExfQkxLKVxcdCs9IG51bGxfYmxrLm9cXG4gICA3OlxcdG51bGxfYmxrLW9ianNcXHRcXHRcXHQ6PSBtYWluLm9cXG4gICA4OlxcdGlmZXEgKCQoQ09ORklHX0JMS19ERVZfWk9ORUQpLCB5KVxcbiAgIDk6XFx0bnVsbF9ibGstJChDT05GSUdfVFJBQ0lORykgXFx0Kz0gdHJhY2Uub1xcbiAgMTA6XFx0ZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDk6MjQ6MDQuMDA2NjA0NjkxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwODQ0MDgwOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aG9zZSBsaW5lczpcblxuKipBbmFseXppbmcgdGhlIE1ha2VmaWxlIGZvciBudWxsX2JsayoqXG5cbk9rYXksIGhvbGQgb24uIEJlZm9yZSBJIGp1bXAgdG8gY29uY2x1c2lvbnMgb3Igc3RhcnQgbW9kaWZ5aW5nIGFueXRoaW5nLCBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGdyYXNwIG9mIHRoZSBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9NYWtlZmlsZWAuIEkgY2FuJ3QganVzdCBhc3N1bWUgSSB1bmRlcnN0YW5kIHRoZSBidWlsZCBwcm9jZXNzIGZyb20gdGhlIHRvcCBsZXZlbDsgSSBuZWVkIHRvIGxvb2sgYXQgdGhlIHNwZWNpZmljcyBvZiAqdGhpcyogcGFydGljdWxhciBtb2R1bGUuIFdoYXQgYXJlIHRoZSBkZXBlbmRlbmNpZXM/IEFyZSB0aGVyZSBhbnkgcGVjdWxpYXIgYnVpbGQgZmxhZ3MgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBjb25kaXRpb25hbCBpbmNsdXNpb25zIGJhc2VkIG9uIGtlcm5lbCBjb25maWd1cmF0aW9uPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBtb2R1bGUgZml0cyBpbnRvIHRoZSBsYXJnZXIgYmxvY2sgZGV2aWNlIGVjb3N5c3RlbSBiZWZvcmUgSSBldmVuIHRoaW5rIGFib3V0IG1ha2luZyBjaGFuZ2VzIG9yIGFkZGl0aW9ucy4gQSBjdXJzb3J5IGdsYW5jZSB3b24ndCBjdXQgaXQuIFRpbWUgdG8gZGlnIGludG8gdGhlIGRldGFpbHMgYW5kIG1ha2Ugc3VyZSBJIGRvbid0IG1pc3MgYW55IGNyaXRpY2FsIGNvbnRleHQuIEdvdHRhIGV4YW1pbmUgdGhvc2UgbGluZXMgdGhvcm91Z2hseSB0byB1bmRlcnN0YW5kIHRoZSBudWFuY2VzIG9mIGl0cyBjb21waWxhdGlvbiBhbmQgbGlua2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Njg5MywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDk6MjQ6MDcuMDkxMDE0OTY5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRcXG4gICAzOlxcdCMgbmVlZGVkIGZvciB0cmFjZSBldmVudHNcXG4gICA0OlxcdGNjZmxhZ3MteVxcdFxcdFxcdCs9IC1JJChzcmMpXFxuICAgNTpcXHRcXG4gICA2OlxcdG9iai0kKENPTkZJR19CTEtfREVWX05VTExfQkxLKVxcdCs9IG51bGxfYmxrLm9cXG4gICA3OlxcdG51bGxfYmxrLW9ianNcXHRcXHRcXHQ6PSBtYWluLm9cXG4gICA4OlxcdGlmZXEgKCQoQ09ORklHX0JMS19ERVZfWk9ORUQpLCB5KVxcbiAgIDk6XFx0bnVsbF9ibGstJChDT05GSUdfVFJBQ0lORykgXFx0Kz0gdHJhY2Uub1xcbiAgMTA6XFx0ZW5kaWZcXG4gIDExOlxcdG51bGxfYmxrLSQoQ09ORklHX0JMS19ERVZfWk9ORUQpICs9IHpvbmVkLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDk6MjQ6MDcuMDkxMDc5NzM5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkyMDYzMTIxNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBab25lZCBCbG9jayBEZXZpY2UgU3VwcG9ydCBQYXRjaCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgcmVsYXRlZCB0byB6b25lZCBibG9jayBkZXZpY2Ugc3VwcG9ydCwgYW5kIHRoZSBmaXJzdCB0aGluZyBJJ20gbm90aW5nIGlzIHRoYXQgYENPTkZJR19CTEtfREVWX1pPTkVEYCBpcyBhIHByZXJlcXVpc2l0ZSwgd2hpY2ggaXMgZXhwZWN0ZWQuIE5vdywgbGV0J3MgZGl2ZSBpbnRvIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjaGFuZ2VzLlxuXG5JJ3ZlIGdvdCBhIGxpc3Qgb2YgdGhlIHVwZGF0ZWQgZnVuY3Rpb25zIGhlcmUuIExvb2tzIGxpa2UgdGhlcmUgYXJlIHNvbWUgbWFjcm8tZ2VuZXJhdGVkIGZ1bmN0aW9ucywgbGlrZSBgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZWAsIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc2hvd2AsIGFuZCBgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlYC4gVGhvc2UgbWFjcm8tZ2VuZXJhdGVkIG9uZXMgY291bGQgYmUgaW50ZXJlc3RpbmcsIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgYE5BTUVgIHJlcHJlc2VudHMgdG8gdW5kZXJzdGFuZCB3aGF0J3MgYWN0dWFsbHkgYmVpbmcgbW9kaWZpZWQuIEJlc2lkZXMgdGhlIG1hY3JvcywgdGhlcmUgYXJlIGZ1bmN0aW9ucyB0aGF0IGxvb2sgbGlrZSB0aGV5IGhhbmRsZSBxdWV1ZSBtYW5hZ2VtZW50OiBgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc2AsIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCwgYW5kIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AuIEkgc2hvdWxkIGdpdmUgdGhlc2UgZnVuY3Rpb25zIGNsb3NlciBjb25zaWRlcmF0aW9uLiBUaGVyZSBhcmUgYWxzbyBzb21lIHBvd2VyIGFuZCB6b25lIGNvbnRyb2wgZnVuY3Rpb25zOiBgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3dgLCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCwgYG51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlYCwgYW5kIGBudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlYC4gRmluYWxseSwgdGhlcmUgYXJlIGEgZmV3IGRldmljZSBsaWZlY3ljbGUgZnVuY3Rpb25zOiBgbnVsbF9mcmVlX2RldmAsIGBudWxsX2RlbF9kZXZgLCBgbnVsbF9pbml0YCwgYW5kIGBudWxsX2V4aXRgLlxuXG5JJ20gbWFraW5nIGEgbWVudGFsIG5vdGUgdGhhdCBgbnVsbF9pbml0YCBhbmQgYG51bGxfZXhpdGAgYXJlIG1vZHVsZSBpbml0L2V4aXQgZnVuY3Rpb25zLiBXaGlsZSB0aGV5J3JlIG1vZGlmaWVkLCB0aGV5J3JlIG5vdCBuZWNlc3NhcmlseSB0aGUgYmVzdCBjYW5kaWRhdGVzIGZvciBmb2N1c2luZyBmdXp6aW5nIGVmZm9ydHMsIGJ1dCB0aGV5J3JlIHN0aWxsIHdvcnRoIGtub3dpbmcgYWJvdXQuIExldCdzIHNlZSwgd2hhdCBpcyBgTkFNRWAgYmVpbmcgdXNlZCBmb3IgaW4gdGhlIG1hY3JvLWdlbmVyYXRlZCBmdW5jdGlvbnM/IEtub3dpbmcgdGhpcyB3aWxsIGhlbHAgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzExLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDI1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDk6MjQ6MTYuMjk3MzkzNjc1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjU3Nzg0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdGU19BVFRSXFxcXChudWxsYl9kZXZpY2VfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTM1OD1udWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjb25zdCBjaGFyICpwYWdlLFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTM4MS19XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjM4MjpDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIE5BTUUpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTM4My1cXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTQ5Nz1zdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTM1LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjUzNjpDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIHBvd2VyKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MzctXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz01NDU9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2JhZGJsb2Nrc19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01ODgtfVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjU4OTpDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIGJhZGJsb2Nrcyk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTkwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwOToyNDoxNi4zNTk5NzY1NTFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA5Mzg0NTY4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipDb25maWdmcyBBdHRyaWJ1dGUgR2VuZXJhdGlvbjogQSBGYW1pbGlhciBQYXR0ZXJuKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJJ20gc2VlaW5nIGEgbG90IG9mIHRoZXNlIGNvbmZpZ2ZzIGF0dHJpYnV0ZXMgcG9wcGluZyB1cC4gSXQncyBhbG1vc3QuLi4gcHJlZGljdGFibGUuIEltbWVkaWF0ZWx5LCBteSBtaW5kIGp1bXBzIHRvIHRoZSBtZWNoYW5pY3Mgb2YgdGhlaXIgY3JlYXRpb24uIEFuZCBzdXJlIGVub3VnaCwgdGhhdCBtYWNybyBgTlVMTEJfREVWSUNFX0FUVFJgIGlzIHRoZSBrZXkuIEl0J3MgYSBjbGFzc2ljOiBhIGNvZGUgZ2VuZXJhdGlvbiB0b29sLiBJIGNhbiBwcmFjdGljYWxseSAqc2VlKiB0aGUgcGF0dGVybiBpdCBlc3RhYmxpc2hlcyDigJMgYSBzdHJ1Y3R1cmVkIHdheSB0byBkZWZpbmUgYW5kIGluamVjdCB0aGUgZGVzaXJlZCBhdHRyaWJ1dGVzIGludG8gdGhlIGNvbmZpZ2ZzIHN5c3RlbS4gS25vd2luZyB0aGUgbWFjcm8gaXMga2V5LCBiZWNhdXNlIGl0IGdpdmVzIHRoZSBoYW5kbGUgYnkgd2hpY2ggSSBjYW4gdW5kZXJzdGFuZCB0aGUgbmF0dXJlIG9mIHRoZSBhdHRyaWJ1dGVzIGFuZCB0aGVpciBmdW5jdGlvbmFsaXR5LiBUaGlzIGxpa2VseSB0cmFuc2xhdGVzIHRvIGEgbW9yZSBzdHJlYW1saW5lZCBhbmQgbWFpbnRhaW5hYmxlIGFwcHJvYWNoIGZvciBleHBvc2luZyBkZXZpY2Utc3BlY2lmaWMgcGFyYW1ldGVycyBhbmQgY29udHJvbHMgdGhyb3VnaCB0aGUgY29uZmlnZnMgaW50ZXJmYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NTE3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDk6MjQ6MTkuNDUzODI0MjI4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Nzk4OTYzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJOVUxMQl9ERVZJQ0VfQVRUUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0zMjk9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zNDMtLyogVGhlIGZvbGxvd2luZyBtYWNybyBzaG91bGQgb25seSBiZSB1c2VkIHdpdGggVFlQRSA9IHt1aW50LCB1bG9uZywgYm9vbH0uICovXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MzQ0OiNkZWZpbmUgTlVMTEJfREVWSUNFX0FUVFIoTkFNRSwgVFlQRSwgQVBQTFkpXFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTM0NS1zdGF0aWMgc3NpemVfdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTQ0Nj1zdGF0aWMgaW50IG51bGxiX2FwcGx5X3BvbGxfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ1MS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTI6TlVMTEJfREVWSUNFX0FUVFIoc2l6ZSwgdWxvbmcsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1MzpOVUxMQl9ERVZJQ0VfQVRUUihjb21wbGV0aW9uX25zZWMsIHVsb25nLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTQ6TlVMTEJfREVWSUNFX0FUVFIoc3VibWl0X3F1ZXVlcywgdWludCwgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDU1Ok5VTExCX0RFVklDRV9BVFRSKHBvbGxfcXVldWVzLCB1aW50LCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDU2Ok5VTExCX0RFVklDRV9BVFRSKGhvbWVfbm9kZSwgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDU3Ok5VTExCX0RFVklDRV9BVFRSKHF1ZXVlX21vZGUsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1ODpOVUxMQl9ERVZJQ0VfQVRUUihibG9ja3NpemUsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1OTpOVUxMQl9ERVZJQ0VfQVRUUihtYXhfc2VjdG9ycywgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDYwOk5VTExCX0RFVklDRV9BVFRSKGlycW1vZGUsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2MTpOVUxMQl9ERVZJQ0VfQVRUUihod19xdWV1ZV9kZXB0aCwgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDYyOk5VTExCX0RFVklDRV9BVFRSKGluZGV4LCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjM6TlVMTEJfREVWSUNFX0FUVFIoYmxvY2tpbmcsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2NDpOVUxMQl9ERVZJQ0VfQVRUUih1c2VfcGVyX25vZGVfaGN0eCwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY1Ok5VTExCX0RFVklDRV9BVFRSKG1lbW9yeV9iYWNrZWQsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2NjpOVUxMQl9ERVZJQ0VfQVRUUihkaXNjYXJkLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Njc6TlVMTEJfREVWSUNFX0FUVFIobWJwcywgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY4Ok5VTExCX0RFVklDRV9BVFRSKGNhY2hlX3NpemUsIHVsb25nLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Njk6TlVMTEJfREVWSUNFX0FUVFIoem9uZWQsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3MDpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX3NpemUsIHVsb25nLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzE6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9jYXBhY2l0eSwgdWxvbmcsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3MjpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX25yX2NvbnYsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3MzpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX21heF9vcGVuLCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzQ6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9tYXhfYWN0aXZlLCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzU6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9hcHBlbmRfbWF4X3NlY3RvcnMsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3NjpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX2Z1bGwsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3NzpOVUxMQl9ERVZJQ0VfQVRUUih2aXJ0X2JvdW5kYXJ5LCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Nzg6TlVMTEJfREVWSUNFX0FUVFIobm9fc2NoZWQsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3OTpOVUxMQl9ERVZJQ0VfQVRUUihzaGFyZWRfdGFncywgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDgwOk5VTExCX0RFVklDRV9BVFRSKHNoYXJlZF90YWdfYml0bWFwLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0ODE6TlVMTEJfREVWSUNFX0FUVFIoZnVhLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0ODI6TlVMTEJfREVWSUNFX0FUVFIocm90YXRpb25hbCwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDgzOk5VTExCX0RFVklDRV9BVFRSKGJhZGJsb2Nrc19vbmNlLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0ODQ6TlVMTEJfREVWSUNFX0FUVFIoYmFkYmxvY2tzX3BhcnRpYWxfaW8sIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ4NS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDk6MjQ6MTkuNTExODE4MTkzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNjQ0MjQ2NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSBDaGFuZ2VzKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBhIGZldyBrZXkgYXJlYXMgb2YgdGhlIG51bGwgYmxvY2sgZGV2aWNlIGRyaXZlci4gSXQgc2VlbXMgbGlrZSB0aGUgY29yZSBvZiB0aGUgbW9kaWZpY2F0aW9uIHJldm9sdmVzIGFyb3VuZCBob3cgZGV2aWNlIGF0dHJpYnV0ZXMgYXJlIGhhbmRsZWQsIHNwZWNpZmljYWxseSB0aGUgYG51bGxiX2RldmljZV8jI05BTUUjI19zaG93YCBhbmQgYG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZWAgZnVuY3Rpb25zLCB3aGljaCBhcmUgY3JlYXRlZCB1c2luZyB0aGUgYE5VTExCX0RFVklDRV9BVFRSYCBtYWNyby4gSSBuZWVkIHRvIGtlZXAgYW4gZXllIG9uIGhvdyB0aGF0IG1hY3JvIGlzIGJlaW5nIHVzZWQgYW5kIG1vZGlmaWVkLCBnaXZlbiBteSBleHBlcmllbmNlIHdpdGggc2ltaWxhciBkcml2ZXIgZnJhbWV3b3Jrcy5cblxuQmV5b25kIHRob3NlLCBpdCdzIGFsc28gbWFraW5nIGNoYW5nZXMgdG8gYSBoYW5kZnVsIG9mIG90aGVyIGF0dHJpYnV0ZS1yZWxhdGVkIGZ1bmN0aW9uczogYG51bGxiX2RldmljZV9wb3dlcl9zaG93YCwgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAsIGBudWxsYl9kZXZpY2Vfem9uZV9yZWFkb25seV9zdG9yZWAsIGFuZCBgbnVsbGJfZGV2aWNlX3pvbmVfb2ZmbGluZV9zdG9yZWAuIFRoZXNlIGFyZSBjbGVhcmx5IHJlbGF0ZWQgdG8gcG93ZXIgbWFuYWdlbWVudCBhbmQsIGludGVyZXN0aW5nbHksIHpvbmVkIGJsb2NrIGRldmljZSBmdW5jdGlvbmFsaXR5LlxuXG5MZXQgbWUgbWFrZSBhIG1lbnRhbCBub3RlIG9mIGFsbCB0aGUgc3ltYm9scyB0aGF0IHNlZW0gdG8gYmUga2V5IHRvIHVuZGVyc3RhbmQ6IGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCwgdGhlIHBvd2VyLXJlbGF0ZWQgYXR0cmlidXRlIGhhbmRsZXJzLCB0aGUgem9uZWQtcmVsYXRlZCBhdHRyaWJ1dGUgaGFuZGxlcnMsIGBudWxsX2RlbF9kZXZgLCBhbmQgYG51bGxfZnJlZV9kZXZgLiBJIG5lZWQgdG8gdHJhY2sgdGhvc2UgZG93bi5cblxuSXQgYWxzbyBsb29rcyBsaWtlIHRoaXMgcGF0Y2ggaXMgaW5mbHVlbmNlZCBieSB0d28gY29uZmlnIG9wdGlvbnM6IGBCTEtfREVWX05VTExfQkxLYCBhbmQgYEJMS19ERVZfWk9ORURgLiBUaGUgc2Vjb25kIG9uZSwgYEJMS19ERVZfWk9ORURgLCBpcyBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcuIFpvbmVkIGJsb2NrIGRldmljZXMgYXJlIGEgbW9yZSByZWNlbnQgYWRkaXRpb24gdG8gdGhlIGJsb2NrIGxheWVyLCBhbmQgSSBrbm93IHRoZXkgcmVxdWlyZSBzcGVjaWZpYyBoYW5kbGluZy4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIGBCTEtfREVWX1pPTkVEYCBpbiB0aGUgYmxvY2sgZHJpdmVyIGRpcmVjdG9yeS4gVGhhdCB3b3VsZCB0ZWxsIG1lIHdoYXQncyBkZXBlbmRlbnQgb24gdGhhdCBzZXR0aW5nLiBUaGlzIHBhdGNoIHZlcnkgbGlrZWx5IGRlYWxzIHdpdGggYWRkaW5nIHpvbmVkIHN1cHBvcnQgYW5kIGl0cyBpbXBsaWNhdGlvbnMgb24gdGhlIG51bGwgYmxvY2sgZGV2aWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDA2NywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwOToyNDoyNC41NzYyNDQ5MjJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNjUyODE2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCTEtfREVWX1pPTkVEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svS2NvbmZpZz03Nz1jb25maWcgQkxLX0RFVl9XUklURV9NT1VOVEVEXFxuLS1cXG5ibG9jay9LY29uZmlnLTk2LVxcbmJsb2NrL0tjb25maWc6OTc6Y29uZmlnIEJMS19ERVZfWk9ORURcXG5ibG9jay9LY29uZmlnLTk4LVxcdGJvb2wgXFxcIlpvbmVkIGJsb2NrIGRldmljZSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQwOToyNDoyNC42MzY5MDIyNjhaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI5NDUxMjQwNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIG51bGxfYmxrIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEkndmUgdGFrZW4gYSBsb29rIGF0IHRoaXMgcGF0Y2ggYW5kIGhlcmUncyBteSBicmVha2Rvd24uIEZpcnN0LCB5ZXMsIGBCTEtfREVWX1pPTkVEYCBpcyBhIHZhbGlkIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIGRyaXZlci4gVGhlIHBhdGNoIG1vZGlmaWVzIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCBhbmQgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYCwgc28gSSdsbCBhZGQgdGhvc2UgdG8gdGhlIGxpc3Qgb2YgZm9jdXMgc3ltYm9scy5cblxuSSdtIGFsc28gcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byB0aGUgbWFjcm9zIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc2hvd2AgYW5kIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmVgLCB3aGljaCBnZW5lcmF0ZSBhIHNlcmllcyBvZiBzaW1pbGFyIGZ1bmN0aW9ucy4gU2luY2UgSSBjYW4ndCBleHBsaWNpdGx5IGxpc3QgKmV2ZXJ5KiBpbnN0YW5jZSwgSSdsbCBmb2N1cyBvbiB0aGUgZnVuY3Rpb25zIHRoYXQgaGF2ZSBleHBsaWNpdCBkZWNsYXJhdGlvbnM6IGBudWxsYl9kZXZpY2VfcG93ZXJfc2hvd2AsIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLCBgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmVgLCBhbmQgYG51bGxiX2RldmljZV96b25lX29mZmxpbmVfc3RvcmVgLiBQbHVzIEkga25vdyBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AgYW5kIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AgYXJlIGV4cGxpY2l0bHkgZGVmaW5lZC4gVGhlIHJlc3Qgc2hvdWxkIGJlIGNvdmVyZWQuXG5cbkkgbmVlZCB0byBtYWtlIHN1cmUgd2UncmUgbm90IG1pc3NpbmcgYW55IGRlcGVuZGVuY2llcy4gSSd2ZSBjb25maXJtZWQgdGhhdCBgQ09ORklHRlNfRlNgIGlzIGFscmVhZHkgaW1wbGljaXRseSBzZWxlY3RlZCBieSBgQkxLX0RFVl9OVUxMX0JMS2AsIHNvIHdlJ3JlIGdvb2QgdGhlcmUuICBJJ3ZlIGFsc28gdmVyaWZpZWQgdGhhdCBgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc2AgaXMgcmVhY2hhYmxlIHRocm91Z2ggdGhlIGNvbmZpZ2ZzIGF0dHJpYnV0ZXMgYHN1Ym1pdF9xdWV1ZXNgIGFuZCBgcG9sbF9xdWV1ZXNgLlxuXG5BcmUgdGhlcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8gTm90IHJlbGF0ZWQgdG8gZmF1bHQgaW5qZWN0aW9uLCBzbyBJIGRvbid0IHNlZSBhbnl0aGluZy5cblxuTm93LCBsZXQncyBhbmFseXplIHRoZSBwYXRjaCdzIGZ1bmN0aW9uYWwgY2hhbmdlcy4gVGhlIGNvZGUgbm93IHByZXZlbnRzIHJlc2l6aW5nIGhhcmR3YXJlIHF1ZXVlcyBpZiBgc2hhcmVkX3RhZ3NgIGlzIGVuYWJsZWQsIHdoaWNoIGhhcyBzb21lIGZ1bmN0aW9uYWwgaW1wbGljYXRpb25zLiBBbHNvLCB0aGUgcGF0Y2ggYWxzbyBjaGFuZ2VzIHRoZSBkZWxldGlvbiBzZXF1ZW5jZSB0byBwcm9wZXJseSBmcmVlIHRoZSB6b25lZCBkZXZpY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS5cblxuQmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSdtIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBXb3J0aEZ1enppbmc9dHJ1ZWAuXG5cbkhlcmUgYXJlIHRoZSBjb25maXJtZWQgY29uZmlndXJhdGlvbnM6XG5cbiogICBgQkxLX0RFVl9OVUxMX0JMS2BcbiogICBgQkxLX0RFVl9aT05FRGBcblxuQW5kIHRoZSBrZXkgc3ltYm9scyB0byBmb2N1cyBvbjpcblxuKiAgIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYFxuKiAgIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYFxuKiAgIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2BcbiogICBgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3dgXG4qICAgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWBcbiogICBgbnVsbGJfZGV2aWNlX3pvbmVfcmVhZG9ubHlfc3RvcmVgXG4qICAgYG51bGxiX2RldmljZV96b25lX29mZmxpbmVfc3RvcmVgXG4qICAgYG51bGxfZGVsX2RldmBcbiogICBgbnVsbF9mcmVlX2RldmBcblxuSSdtIGdvaW5nIHRvIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoaXMgaW5mb3JtYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwODMwLCJPdXRwdXRUb2tlbnMiOjIwNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMDk6MjQ6MzcuNTgyMDI4MTkzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE3ODcwMzExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCIsXG4gICAgXCJCTEtfREVWX1pPTkVEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc1wiLFxuICAgIFwibnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc1wiLFxuICAgIFwibnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNcIixcbiAgICBcIm51bGxiX2RldmljZV9wb3dlcl9zaG93XCIsXG4gICAgXCJudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVcIixcbiAgICBcIm51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlXCIsXG4gICAgXCJudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlXCIsXG4gICAgXCJudWxsX2RlbF9kZXZcIixcbiAgICBcIm51bGxfZnJlZV9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnVsbF9ibGsgZHJpdmVyIHRvIHJlamVjdCByZXNpemluZyBoYXJkd2FyZSBxdWV1ZXMgd2hlbiBzaGFyZWRfdGFncyBpcyBlbmFibGVkLCBhZGRzIGxvY2tpbmcgdG8gY29uZmlnZnMgYXR0cmlidXRlIGFjY2Vzc29ycywgYW5kIGZpeGVzIHRoZSBpbml0aWFsaXphdGlvbi9jbGVhbnVwIG9yZGVyIG9mIHpvbmVkIGRldmljZXMgYW5kIHRoZSBtb2R1bGUgaXRzZWxmLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBibG9jayBkcml2ZXIgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCIsXG4gICAgXCJCTEtfREVWX1pPTkVEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc1wiLFxuICAgIFwibnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc1wiLFxuICAgIFwibnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNcIixcbiAgICBcIm51bGxiX2RldmljZV9wb3dlcl9zaG93XCIsXG4gICAgXCJudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVcIixcbiAgICBcIm51bGxiX2RldmljZV96b25lX3JlYWRvbmx5X3N0b3JlXCIsXG4gICAgXCJudWxsYl9kZXZpY2Vfem9uZV9vZmZsaW5lX3N0b3JlXCIsXG4gICAgXCJudWxsX2RlbF9kZXZcIixcbiAgICBcIm51bGxfZnJlZV9kZXZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbnVsbF9ibGsgZHJpdmVyIHRvIHJlamVjdCByZXNpemluZyBoYXJkd2FyZSBxdWV1ZXMgd2hlbiBzaGFyZWRfdGFncyBpcyBlbmFibGVkLCBhZGRzIGxvY2tpbmcgdG8gY29uZmlnZnMgYXR0cmlidXRlIGFjY2Vzc29ycywgYW5kIGZpeGVzIHRoZSBpbml0aWFsaXphdGlvbi9jbGVhbnVwIG9yZGVyIG9mIHpvbmVkIGRldmljZXMgYW5kIHRoZSBtb2R1bGUgaXRzZWxmLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHJlYWNoYWJsZSBibG9jayBkcml2ZXIgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrkxvz[1] Phase: Succeeded StartedAt: 2026-07-14 09:25:00 +0000 UTC FinishedAt: 2026-07-14 09:25:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrkxvz[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-14 09:25:00 +0000 UTC FinishedAt: 2026-07-14 09:25:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrkxvz[2] Phase: Succeeded StartedAt: 2026-07-14 09:25:00 +0000 UTC FinishedAt: 2026-07-14 13:47:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-14 09:25:00 +0000 UTC FinishedAt: 2026-07-14 13:47:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-14 09:25:00 +0000 UTC FinishedAt: 2026-07-14 09:25:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-14 09:25:00 +0000 UTC FinishedAt: 2026-07-14 09:25:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowrkxvz/series-workflowrkxvz-convert-artifact-743671576/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-14 09:25:10 +0000 UTC FinishedAt: 2026-07-14 10:06:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-14 09:25:10 +0000 UTC FinishedAt: 2026-07-14 10:06:59 +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:*3893cc48-613a-4c50-a85c-c3f9dc52da45,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-workflowrkxvz/series-workflowrkxvz-convert-artifact-743671576/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": "698b19cb-fe70-49e9-bbc5-81c6db593fe6", "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-workflowrkxvz/series-workflowrkxvz-build-action-2323825742/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-14 09:25:10 +0000 UTC FinishedAt: 2026-07-14 10:06: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:*3893cc48-613a-4c50-a85c-c3f9dc52da45,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-workflowrkxvz/series-workflowrkxvz-convert-artifact-743671576/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": "698b19cb-fe70-49e9-bbc5-81c6db593fe6", "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-workflowrkxvz/series-workflowrkxvz-build-action-2323825742/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-14 10:06:59 +0000 UTC FinishedAt: 2026-07-14 10:06:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-14 10:06:59 +0000 UTC FinishedAt: 2026-07-14 10:06:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-14 10:06:59 +0000 UTC FinishedAt: 2026-07-14 10:07:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-14 10:06:59 +0000 UTC FinishedAt: 2026-07-14 10:07:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowrkxvz/series-workflowrkxvz-convert-artifact-2533819519/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-14 10:07:10 +0000 UTC FinishedAt: 2026-07-14 10:09:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-14 10:07:10 +0000 UTC FinishedAt: 2026-07-14 10:09:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*698b19cb-fe70-49e9-bbc5-81c6db593fe6,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-workflowrkxvz/series-workflowrkxvz-build-action-2323825742/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-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-14 10:09:32 +0000 UTC FinishedAt: 2026-07-14 10:09:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-14 10:09:32 +0000 UTC FinishedAt: 2026-07-14 10:09:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-14 10:09:32 +0000 UTC FinishedAt: 2026-07-14 10:41:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-14 10:09:32 +0000 UTC FinishedAt: 2026-07-14 10:41:55 +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:*3893cc48-613a-4c50-a85c-c3f9dc52da45,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-workflowrkxvz/series-workflowrkxvz-convert-artifact-2533819519/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": "5061970f-ebff-452a-ac1b-df8845efca6c", "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-workflowrkxvz/series-workflowrkxvz-build-action-4078553747/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-14 10:09:32 +0000 UTC FinishedAt: 2026-07-14 10:41:45 +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:*3893cc48-613a-4c50-a85c-c3f9dc52da45,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-workflowrkxvz/series-workflowrkxvz-convert-artifact-2533819519/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": "5061970f-ebff-452a-ac1b-df8845efca6c", "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-workflowrkxvz/series-workflowrkxvz-build-action-4078553747/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-14 10:41:55 +0000 UTC FinishedAt: 2026-07-14 10:41:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-14 10:41:55 +0000 UTC FinishedAt: 2026-07-14 10:41:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-14 10:41:55 +0000 UTC FinishedAt: 2026-07-14 10:43:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-14 10:41:55 +0000 UTC FinishedAt: 2026-07-14 10:43:46 +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:*5061970f-ebff-452a-ac1b-df8845efca6c,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-workflowrkxvz/series-workflowrkxvz-build-action-4078553747/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-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-14 10:43:56 +0000 UTC FinishedAt: 2026-07-14 13:47:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-14 10:43:56 +0000 UTC FinishedAt: 2026-07-14 13:47:30 +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":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"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:*698b19cb-fe70-49e9-bbc5-81c6db593fe6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5061970f-ebff-452a-ac1b-df8845efca6c,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-workflowrkxvz/series-workflowrkxvz-build-action-2323825742/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-workflowrkxvz/series-workflowrkxvz-build-action-4078553747/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-14 10:43:56 +0000 UTC FinishedAt: 2026-07-14 10:44:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-14 10:43:56 +0000 UTC FinishedAt: 2026-07-14 10:44:08 +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":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"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-workflowrkxvz/series-workflowrkxvz-convert-artifact-2632261144/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-14 10:43:56 +0000 UTC FinishedAt: 2026-07-14 10:43:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-14 10:43:56 +0000 UTC FinishedAt: 2026-07-14 10:43:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-14 10:43:56 +0000 UTC FinishedAt: 2026-07-14 10:43:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-14 10:44:17 +0000 UTC FinishedAt: 2026-07-14 13:47:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrkxvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["nullb_update_nr_hw_queues","nullb_apply_submit_queues","nullb_apply_poll_queues","nullb_device_power_show","nullb_device_power_store","nullb_device_zone_readonly_store","nullb_device_zone_offline_store","null_del_dev","null_free_dev"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK","BLK_DEV_ZONED"],"series_id":"72c8c07d-af71-4448-8dce-ed89eec4aa63","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-14 10:44:17 +0000 UTC FinishedAt: 2026-07-14 13:47:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*698b19cb-fe70-49e9-bbc5-81c6db593fe6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5061970f-ebff-452a-ac1b-df8845efca6c,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-workflowrkxvz/series-workflowrkxvz-build-action-2323825742/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-workflowrkxvz/series-workflowrkxvz-build-action-4078553747/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-workflowrkxvz/series-workflowrkxvz-convert-artifact-2632261144/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,}