Name: series-workflowx8zv5 Phase: Succeeded StartedAt: 2026-07-10 03:38:23 +0000 UTC FinishedAt: 2026-07-10 08:23:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8zv5[0] Phase: Succeeded StartedAt: 2026-07-10 03:38:23 +0000 UTC FinishedAt: 2026-07-10 04:01:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8zv5[0].run-triage Phase: Succeeded StartedAt: 2026-07-10 03:38:23 +0000 UTC FinishedAt: 2026-07-10 04:01:24 +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": "a635d6748234582ea287c5ffeae28b9b23f91c7e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "a635d6748234582ea287c5ffeae28b9b23f91c7e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK" ], "series_id": "806d3df5-a9a0-4d96-b2c2-7b2fc9d17479" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "nullb_update_nr_hw_queues", "nullb_apply_submit_queues", "nullb_apply_poll_queues", "nullb_device_power_show", "null_del_dev", "null_free_dev", "nullb_device_submit_queues_store", "nullb_device_poll_queues_store" ], "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+CgkJCTx0ZD4yMDI2LzA3LzEwIDA0OjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3cmIzM0OywKICAgICYjMzQ7bnVsbF9kZWxfZGV2JiMzNDssCiAgICAmIzM0O251bGxfZnJlZV9kZXYmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3N1Ym1pdF9xdWV1ZXNfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3BvbGxfcXVldWVzX3N0b3JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHJhY2UgY29uZGl0aW9ucyBhbmQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyIGJ5IGFkZGluZyBtdXRleCBsb2NrcyBhcm91bmQgY29uZmlnZnMgYXR0cmlidXRlIGFjY2Vzc2VzIGFuZCByZWplY3RpbmcgcXVldWUgdXBkYXRlcyBmb3Igc2hhcmVkIHRhZyBzZXRzLiBJdCBhbHNvIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24gb3JkZXIuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGRyaXZlciYjMzk7cyBjb25maWd1cmF0aW9uIGFuZCBsaWZlY3ljbGUgbWFuYWdlbWVudCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDQ6MDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjMWUxNDg2YjMzZTRlNzI1ZjllYTU3ZTg5NDUyYmU2YTZjODM2ZDgwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTAgMDQ6MDA6MTUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuaW5kZXggZjhjMGZkNTdlMDQxYTguLmU4MjliNTAyOTgxYjNlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5AQCAtNjYsNyAmIzQzOzY2LDcgQEAgc3RydWN0IG51bGxiX3BhZ2Uge1xuICNkZWZpbmUgTlVMTEJfUEFHRV9GUkVFIChNQVBfU1ogLSAyKVxuIFxuIHN0YXRpYyBMSVNUX0hFQUQobnVsbGJfbGlzdCk7XG4tc3RhdGljIHN0cnVjdCBtdXRleCBsb2NrO1xuJiM0MztzdGF0aWMgREVGSU5FX01VVEVYKGxvY2spO1xuIHN0YXRpYyBpbnQgbnVsbF9tYWpvcjtcbiBzdGF0aWMgREVGSU5FX0lEQShudWxsYl9pbmRleGVzKTtcbiBzdGF0aWMgc3RydWN0IGJsa19tcV90YWdfc2V0IHRhZ19zZXQ7XG5AQCAtMzQ1LDggJiM0MzszNDUsMTQgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsXG4gc3RhdGljIHNzaXplX3RcdFx0XHRcdFx0XHRcdFx0XFxcbiBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNoYXIgKnBhZ2UpXHRcXFxuIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuLVx0cmV0dXJuIG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3Nob3coXHRcdFx0XHRcXFxuJiM0MztcdHNzaXplX3QgcmV0O1x0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0cmV0ID0gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc2hvdyhcdFx0XHRcdFxcXG4gXHRcdFx0XHR0b19udWxsYl9kZXZpY2UoaXRlbSktXHUwMDNlTkFNRSwgcGFnZSk7XHRcXFxuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdHJldHVybiByZXQ7XHRcdFx0XHRcdFx0XHRcXFxuIH1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuIHN0YXRpYyBzc2l6ZV90XHRcdFx0XHRcdFx0XHRcdFxcXG4gbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcdFxcXG5AQCAtMzYwLDEzICYjNDM7MzY2LDE3IEBAIG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNvbnN0IGNoYXIgKnBhZ2UsXHRcXFxuIFx0cmV0ID0gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc3RvcmUoXHUwMDI2bmV3X3ZhbHVlLCBwYWdlLCBjb3VudCk7XFxcbiBcdGlmIChyZXQgXHUwMDNjIDApXHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRyZXR1cm4gcmV0O1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0cmV0ID0gMDtcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcdFx0XHRcdFx0XHRcXFxuIFx0aWYgKGFwcGx5X2ZuKVx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0cmV0ID0gYXBwbHlfZm4oZGV2LCBuZXdfdmFsdWUpO1x0XHRcdFx0XFxcbiBcdGVsc2UgaWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpKSBcdFxcXG4gXHRcdHJldCA9IC1FQlVTWTtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGlmICghcmV0KVx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdGRldi1cdTAwM2VOQU1FID0gbmV3X3ZhbHVlO1x0XHRcdFx0XHRcXFxuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcdFx0XHRcdFx0XHRcXFxuIFx0aWYgKHJldCBcdTAwM2MgMClcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdHJldHVybiByZXQ7XHRcdFx0XHRcdFx0XFxcbi1cdGRldi1cdTAwM2VOQU1FID0gbmV3X3ZhbHVlO1x0XHRcdFx0XHRcdFxcXG4gXHRyZXR1cm4gY291bnQ7XHRcdFx0XHRcdFx0XHRcXFxuIH1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuIENPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgTkFNRSk7XG5AQCAtMzgyLDYgJiM0MzszOTIsMTUgQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcdGlmICghZGV2LVx1MDAzZW51bGxiKVxuIFx0XHRyZXR1cm4gMDtcbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEEgc2hhcmVkIHRhZ19zZXQgaXMgbWFwcGVkIHZpYSB0aGUgbW9kdWxlLXdpZGUgcXVldWUgY291bnRzLCBzbyBhXG4mIzQzO1x0ICogcGVyLWRldmljZSByZXNpemUgaXMgbWVhbmluZ2xlc3MuIE9uIHNocmluayBpdCB3b3VsZCBhbHNvIGxlYXZlXG4mIzQzO1x0ICogbXFfbWFwW10gcG9pbnRpbmcgYXQgTlVMTGVkIGhjdHggc2xvdHMsIGNhdXNpbmcgYSBOVUxMIGRlcmVmIGluXG4mIzQzO1x0ICogYmxrX21xX21hcF9zd3F1ZXVlKCkuIFJlamVjdCBpdC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoZGV2LVx1MDAzZW51bGxiLVx1MDAzZXRhZ19zZXQgPT0gXHUwMDI2dGFnX3NldClcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiBcdC8qXG4gXHQgKiBNYWtlIHN1cmUgYXQgbGVhc3Qgb25lIHN1Ym1pdCBxdWV1ZSBleGlzdHMuXG4gXHQgKi9cbkBAIC00MjEsMjUgJiM0Mzs0NDAsMTMgQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgc3VibWl0X3F1ZXVlcylcbiB7XG4tXHRpbnQgcmV0O1xuLVxuLVx0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbi1cdHJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtXHUwMDNlcG9sbF9xdWV1ZXMpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuLVxuLVx0cmV0dXJuIHJldDtcbiYjNDM7XHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi1cdTAwM2Vwb2xsX3F1ZXVlcyk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICAgdW5zaWduZWQgaW50IHBvbGxfcXVldWVzKVxuIHtcbi1cdGludCByZXQ7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuLVx0cmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi1cdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4tXG4tXHRyZXR1cm4gcmV0O1xuJiM0MztcdHJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTtcbiB9XG4gXG4gTlVMTEJfREVWSUNFX0FUVFIoc2l6ZSwgdWxvbmcsIE5VTEwpO1xuQEAgLTQ3OCw3ICYjNDM7NDg1LDEzIEBAIE5VTExCX0RFVklDRV9BVFRSKGJhZGJsb2Nrc19wYXJ0aWFsX2lvLCBib29sLCBOVUxMKTtcbiBcbiBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNoYXIgKnBhZ2UpXG4ge1xuLVx0cmV0dXJuIG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyh0b19udWxsYl9kZXZpY2UoaXRlbSktXHUwMDNlcG93ZXIsIHBhZ2UpO1xuJiM0MztcdHNzaXplX3QgcmV0O1xuJiM0MztcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuJiM0MztcdHJldCA9IG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyh0b19udWxsYl9kZXZpY2UoaXRlbSktXHUwMDNlcG93ZXIsIHBhZ2UpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbkBAIC04MzYsNyAmIzQzOzg0OSw2IEBAIHN0YXRpYyB2b2lkIG51bGxfZnJlZV9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxuIFx0aWYgKCFkZXYpXG4gXHRcdHJldHVybjtcbiBcbi1cdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcbiBcdGJhZGJsb2Nrc19leGl0KFx1MDAyNmRldi1cdTAwM2ViYWRibG9ja3MpO1xuIFx0a2ZyZWUoZGV2KTtcbiB9XG5AQCAtMTc3MCwxOCAmIzQzOzE3ODIsMTkgQEAgc3RhdGljIHZvaWQgbnVsbF9kZWxfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXG4gXG4gXHRkZWxfZ2VuZGlzayhudWxsYi1cdTAwM2VkaXNrKTtcbiBcbi1cdGlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfVEhST1RUTEVELCBcdTAwMjZudWxsYi1cdTAwM2VkZXYtXHUwMDNlZmxhZ3MpKSB7XG4mIzQzO1x0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncykpIHtcbiBcdFx0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2bnVsbGItXHUwMDNlYndfdGltZXIpO1xuIFx0XHRhdG9taWNfbG9uZ19zZXQoXHUwMDI2bnVsbGItXHUwMDNlY3VyX2J5dGVzLCBMT05HX01BWCk7XG4gXHRcdGJsa19tcV9zdGFydF9zdG9wcGVkX2h3X3F1ZXVlcyhudWxsYi1cdTAwM2VxLCB0cnVlKTtcbiBcdH1cbiBcbiBcdHB1dF9kaXNrKG51bGxiLVx1MDAzZWRpc2spO1xuJiM0MztcdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcbiBcdGlmIChudWxsYi1cdTAwM2V0YWdfc2V0ID09IFx1MDAyNm51bGxiLVx1MDAzZV9fdGFnX3NldClcbiBcdFx0YmxrX21xX2ZyZWVfdGFnX3NldChudWxsYi1cdTAwM2V0YWdfc2V0KTtcbiBcdGtmcmVlKG51bGxiLVx1MDAzZXF1ZXVlcyk7XG4gXHRpZiAobnVsbF9jYWNoZV9hY3RpdmUobnVsbGIpKVxuLVx0XHRudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2UobnVsbGItXHUwMDNlZGV2LCB0cnVlKTtcbiYjNDM7XHRcdG51bGxfZnJlZV9kZXZpY2Vfc3RvcmFnZShkZXYsIHRydWUpO1xuIFx0a2ZyZWUobnVsbGIpO1xuIFx0ZGV2LVx1MDAzZW51bGxiID0gTlVMTDtcbiB9XG5AQCAtMjE2MiwxNyAmIzQzOzIxNzUsOSBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcbiBcdGNvbmZpZ19ncm91cF9pbml0KFx1MDAyNm51bGxiX3N1YnN5cy5zdV9ncm91cCk7XG4gXHRtdXRleF9pbml0KFx1MDAyNm51bGxiX3N1YnN5cy5zdV9tdXRleCk7XG4gXG4tXHRyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2bnVsbGJfc3Vic3lzKTtcbi1cdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4tXG4tXHRtdXRleF9pbml0KFx1MDAyNmxvY2spO1xuLVxuIFx0bnVsbF9tYWpvciA9IHJlZ2lzdGVyX2Jsa2RldigwLCBcJiMzNDtudWxsYlwmIzM0Oyk7XG4tXHRpZiAobnVsbF9tYWpvciBcdTAwM2MgMCkge1xuLVx0XHRyZXQgPSBudWxsX21ham9yO1xuLVx0XHRnb3RvIGVycl9jb25mO1xuLVx0fVxuJiM0MztcdGlmIChudWxsX21ham9yIFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIG51bGxfbWFqb3I7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9kZXZpY2VzOyBpJiM0MzsmIzQzOykge1xuIFx0XHRyZXQgPSBudWxsX2NyZWF0ZV9kZXYoKTtcbkBAIC0yMTgwLDYgJiM0MzsyMTg1LDEwIEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxuIFx0XHRcdGdvdG8gZXJyX2RldjtcbiBcdH1cbiBcbiYjNDM7XHRyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2bnVsbGJfc3Vic3lzKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0Z290byBlcnJfZGV2O1xuJiM0MztcbiBcdHByX2luZm8oXCYjMzQ7bW9kdWxlIGxvYWRlZFxcblwmIzM0Oyk7XG4gXHRyZXR1cm4gMDtcbiBcbkBAIC0yMTg5LDggJiM0MzsyMTk4LDggQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXG4gXHRcdG51bGxfZGVzdHJveV9kZXYobnVsbGIpO1xuIFx0fVxuIFx0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXCYjMzQ7bnVsbGJcJiMzNDspO1xuLWVycl9jb25mOlxuLVx0Y29uZmlnZnNfdW5yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2bnVsbGJfc3Vic3lzKTtcbiYjNDM7XHRpZiAodGFnX3NldC5vcHMpXG4mIzQzO1x0XHRibGtfbXFfZnJlZV90YWdfc2V0KFx1MDAyNnRhZ19zZXQpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG5AQCAtMjIwMCw4ICYjNDM7MjIwOSw2IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZClcbiBcbiBcdGNvbmZpZ2ZzX3VucmVnaXN0ZXJfc3Vic3lzdGVtKFx1MDAyNm51bGxiX3N1YnN5cyk7XG4gXG4tXHR1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCBcJiMzNDtudWxsYlwmIzM0Oyk7XG4tXG4gXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuIFx0d2hpbGUgKCFsaXN0X2VtcHR5KFx1MDAyNm51bGxiX2xpc3QpKSB7XG4gXHRcdG51bGxiID0gbGlzdF9lbnRyeShudWxsYl9saXN0Lm5leHQsIHN0cnVjdCBudWxsYiwgbGlzdCk7XG5AQCAtMjIwOSw2ICYjNDM7MjIxNiw4IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZClcbiBcdH1cbiBcdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbiBcbiYjNDM7XHR1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCBcJiMzNDtudWxsYlwmIzM0Oyk7XG4mIzQzO1xuIFx0aWYgKHRhZ19zZXQub3BzKVxuIFx0XHRibGtfbXFfZnJlZV90YWdfc2V0KFx1MDAyNnRhZ19zZXQpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA0OjAwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3cmIzM0OywKICAgICYjMzQ7bnVsbF9kZWxfZGV2JiMzNDssCiAgICAmIzM0O251bGxfZnJlZV9kZXYmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3N1Ym1pdF9xdWV1ZXNfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3BvbGxfcXVldWVzX3N0b3JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHJhY2UgY29uZGl0aW9ucyBhbmQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyIGJ5IGFkZGluZyBtdXRleCBsb2NrcyBhcm91bmQgY29uZmlnZnMgYXR0cmlidXRlIGFjY2Vzc2VzIGFuZCByZWplY3RpbmcgcXVldWUgdXBkYXRlcyBmb3Igc2hhcmVkIHRhZyBzZXRzLiBJdCBhbHNvIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24gb3JkZXIuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGRyaXZlciYjMzk7cyBjb25maWd1cmF0aW9uIGFuZCBsaWZlY3ljbGUgbWFuYWdlbWVudCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGMxZTE0ODZiMzNlNGU3MjVmOWVhNTdlODk0NTJiZTZhNmM4MzZkODAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAxMCAwNDowMDoxNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKaW5kZXggZjhjMGZkNTdlMDQxYTguLmU4MjliNTAyOTgxYjNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYwpAQCAtNjYsNyAmIzQzOzY2LDcgQEAgc3RydWN0IG51bGxiX3BhZ2UgewogI2RlZmluZSBOVUxMQl9QQUdFX0ZSRUUgKE1BUF9TWiAtIDIpCiAKIHN0YXRpYyBMSVNUX0hFQUQobnVsbGJfbGlzdCk7Ci1zdGF0aWMgc3RydWN0IG11dGV4IGxvY2s7CiYjNDM7c3RhdGljIERFRklORV9NVVRFWChsb2NrKTsKIHN0YXRpYyBpbnQgbnVsbF9tYWpvcjsKIHN0YXRpYyBERUZJTkVfSURBKG51bGxiX2luZGV4ZXMpOwogc3RhdGljIHN0cnVjdCBibGtfbXFfdGFnX3NldCB0YWdfc2V0OwpAQCAtMzQ1LDggJiM0MzszNDUsMTQgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsCiBzdGF0aWMgc3NpemVfdAkJCQkJCQkJXAogbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKQlcCiB7CQkJCQkJCQkJXAotCXJldHVybiBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zaG93KAkJCQlcCiYjNDM7CXNzaXplX3QgcmV0OwkJCQkJCQlcCiYjNDM7CQkJCQkJCQkJXAomIzQzOwltdXRleF9sb2NrKCZhbXA7bG9jayk7CQkJCQkJXAomIzQzOwlyZXQgPSBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zaG93KAkJCQlcCiAJCQkJdG9fbnVsbGJfZGV2aWNlKGl0ZW0pLSZndDtOQU1FLCBwYWdlKTsJXAomIzQzOwltdXRleF91bmxvY2soJmFtcDtsb2NrKTsJCQkJCQlcCiYjNDM7CQkJCQkJCQkJXAomIzQzOwlyZXR1cm4gcmV0OwkJCQkJCQlcCiB9CQkJCQkJCQkJXAogc3RhdGljIHNzaXplX3QJCQkJCQkJCVwKIG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNvbnN0IGNoYXIgKnBhZ2UsCVwKQEAgLTM2MCwxMyAmIzQzOzM2NiwxNyBAQCBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjb25zdCBjaGFyICpwYWdlLAlcCiAJcmV0ID0gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc3RvcmUoJmFtcDtuZXdfdmFsdWUsIHBhZ2UsIGNvdW50KTtcCiAJaWYgKHJldCAmbHQ7IDApCQkJCQkJCVwKIAkJcmV0dXJuIHJldDsJCQkJCQlcCiYjNDM7CXJldCA9IDA7CQkJCQkJCVwKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2xvY2spOwkJCQkJCVwKIAlpZiAoYXBwbHlfZm4pCQkJCQkJCVwKIAkJcmV0ID0gYXBwbHlfZm4oZGV2LCBuZXdfdmFsdWUpOwkJCQlcCiAJZWxzZSBpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsICZhbXA7ZGV2LSZndDtmbGFncykpIAlcCiAJCXJldCA9IC1FQlVTWTsJCQkJCQlcCiYjNDM7CWlmICghcmV0KQkJCQkJCQlcCiYjNDM7CQlkZXYtJmd0O05BTUUgPSBuZXdfdmFsdWU7CQkJCQlcCiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2xvY2spOwkJCQkJCVwKIAlpZiAocmV0ICZsdDsgMCkJCQkJCQkJXAogCQlyZXR1cm4gcmV0OwkJCQkJCVwKLQlkZXYtJmd0O05BTUUgPSBuZXdfdmFsdWU7CQkJCQkJXAogCXJldHVybiBjb3VudDsJCQkJCQkJXAogfQkJCQkJCQkJCVwKIENPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgTkFNRSk7CkBAIC0zODIsNiAmIzQzOzM5MiwxNSBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LAogCWlmICghZGV2LSZndDtudWxsYikKIAkJcmV0dXJuIDA7CiAKJiM0MzsJLyoKJiM0MzsJICogQSBzaGFyZWQgdGFnX3NldCBpcyBtYXBwZWQgdmlhIHRoZSBtb2R1bGUtd2lkZSBxdWV1ZSBjb3VudHMsIHNvIGEKJiM0MzsJICogcGVyLWRldmljZSByZXNpemUgaXMgbWVhbmluZ2xlc3MuIE9uIHNocmluayBpdCB3b3VsZCBhbHNvIGxlYXZlCiYjNDM7CSAqIG1xX21hcFtdIHBvaW50aW5nIGF0IE5VTExlZCBoY3R4IHNsb3RzLCBjYXVzaW5nIGEgTlVMTCBkZXJlZiBpbgomIzQzOwkgKiBibGtfbXFfbWFwX3N3cXVldWUoKS4gUmVqZWN0IGl0LgomIzQzOwkgKi8KJiM0MzsJaWYgKGRldi0mZ3Q7bnVsbGItJmd0O3RhZ19zZXQgPT0gJmFtcDt0YWdfc2V0KQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJLyoKIAkgKiBNYWtlIHN1cmUgYXQgbGVhc3Qgb25lIHN1Ym1pdCBxdWV1ZSBleGlzdHMuCiAJICovCkBAIC00MjEsMjUgJiM0Mzs0NDAsMTMgQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiwKIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsCiAJCQkJICAgICB1bnNpZ25lZCBpbnQgc3VibWl0X3F1ZXVlcykKIHsKLQlpbnQgcmV0OwotCi0JbXV0ZXhfbG9jaygmYW1wO2xvY2spOwotCXJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtJmd0O3BvbGxfcXVldWVzKTsKLQltdXRleF91bmxvY2soJmFtcDtsb2NrKTsKLQotCXJldHVybiByZXQ7CiYjNDM7CXJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LSZndDtwb2xsX3F1ZXVlcyk7CiB9CiAKIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LAogCQkJCSAgIHVuc2lnbmVkIGludCBwb2xsX3F1ZXVlcykKIHsKLQlpbnQgcmV0OwotCi0JbXV0ZXhfbG9jaygmYW1wO2xvY2spOwotCXJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTsKLQltdXRleF91bmxvY2soJmFtcDtsb2NrKTsKLQotCXJldHVybiByZXQ7CiYjNDM7CXJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LSZndDtzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7CiB9CiAKIE5VTExCX0RFVklDRV9BVFRSKHNpemUsIHVsb25nLCBOVUxMKTsKQEAgLTQ3OCw3ICYjNDM7NDg1LDEzIEBAIE5VTExCX0RFVklDRV9BVFRSKGJhZGJsb2Nrc19wYXJ0aWFsX2lvLCBib29sLCBOVUxMKTsKIAogc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKQogewotCXJldHVybiBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3Nob3codG9fbnVsbGJfZGV2aWNlKGl0ZW0pLSZndDtwb3dlciwgcGFnZSk7CiYjNDM7CXNzaXplX3QgcmV0OwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7bG9jayk7CiYjNDM7CXJldCA9IG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyh0b19udWxsYl9kZXZpY2UoaXRlbSktJmd0O3Bvd2VyLCBwYWdlKTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7bG9jayk7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sCkBAIC04MzYsNyAmIzQzOzg0OSw2IEBAIHN0YXRpYyB2b2lkIG51bGxfZnJlZV9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KQogCWlmICghZGV2KQogCQlyZXR1cm47CiAKLQludWxsX2ZyZWVfem9uZWRfZGV2KGRldik7CiAJYmFkYmxvY2tzX2V4aXQoJmFtcDtkZXYtJmd0O2JhZGJsb2Nrcyk7CiAJa2ZyZWUoZGV2KTsKIH0KQEAgLTE3NzAsMTggJiM0MzsxNzgyLDE5IEBAIHN0YXRpYyB2b2lkIG51bGxfZGVsX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKQogCiAJZGVsX2dlbmRpc2sobnVsbGItJmd0O2Rpc2spOwogCi0JaWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsICZhbXA7bnVsbGItJmd0O2Rldi0mZ3Q7ZmxhZ3MpKSB7CiYjNDM7CWlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfVEhST1RUTEVELCAmYW1wO2Rldi0mZ3Q7ZmxhZ3MpKSB7CiAJCWhydGltZXJfY2FuY2VsKCZhbXA7bnVsbGItJmd0O2J3X3RpbWVyKTsKIAkJYXRvbWljX2xvbmdfc2V0KCZhbXA7bnVsbGItJmd0O2N1cl9ieXRlcywgTE9OR19NQVgpOwogCQlibGtfbXFfc3RhcnRfc3RvcHBlZF9od19xdWV1ZXMobnVsbGItJmd0O3EsIHRydWUpOwogCX0KIAogCXB1dF9kaXNrKG51bGxiLSZndDtkaXNrKTsKJiM0MzsJbnVsbF9mcmVlX3pvbmVkX2RldihkZXYpOwogCWlmIChudWxsYi0mZ3Q7dGFnX3NldCA9PSAmYW1wO251bGxiLSZndDtfX3RhZ19zZXQpCiAJCWJsa19tcV9mcmVlX3RhZ19zZXQobnVsbGItJmd0O3RhZ19zZXQpOwogCWtmcmVlKG51bGxiLSZndDtxdWV1ZXMpOwogCWlmIChudWxsX2NhY2hlX2FjdGl2ZShudWxsYikpCi0JCW51bGxfZnJlZV9kZXZpY2Vfc3RvcmFnZShudWxsYi0mZ3Q7ZGV2LCB0cnVlKTsKJiM0MzsJCW51bGxfZnJlZV9kZXZpY2Vfc3RvcmFnZShkZXYsIHRydWUpOwogCWtmcmVlKG51bGxiKTsKIAlkZXYtJmd0O251bGxiID0gTlVMTDsKIH0KQEAgLTIxNjIsMTcgJiM0MzsyMTc1LDkgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpCiAJY29uZmlnX2dyb3VwX2luaXQoJmFtcDtudWxsYl9zdWJzeXMuc3VfZ3JvdXApOwogCW11dGV4X2luaXQoJmFtcDtudWxsYl9zdWJzeXMuc3VfbXV0ZXgpOwogCi0JcmV0ID0gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKCZhbXA7bnVsbGJfc3Vic3lzKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JbXV0ZXhfaW5pdCgmYW1wO2xvY2spOwotCiAJbnVsbF9tYWpvciA9IHJlZ2lzdGVyX2Jsa2RldigwLCAmIzM0O251bGxiJiMzNDspOwotCWlmIChudWxsX21ham9yICZsdDsgMCkgewotCQlyZXQgPSBudWxsX21ham9yOwotCQlnb3RvIGVycl9jb25mOwotCX0KJiM0MzsJaWYgKG51bGxfbWFqb3IgJmx0OyAwKQomIzQzOwkJcmV0dXJuIG51bGxfbWFqb3I7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgbnJfZGV2aWNlczsgaSYjNDM7JiM0MzspIHsKIAkJcmV0ID0gbnVsbF9jcmVhdGVfZGV2KCk7CkBAIC0yMTgwLDYgJiM0MzsyMTg1LDEwIEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKQogCQkJZ290byBlcnJfZGV2OwogCX0KIAomIzQzOwlyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oJmFtcDtudWxsYl9zdWJzeXMpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJZ290byBlcnJfZGV2OwomIzQzOwogCXByX2luZm8oJiMzNDttb2R1bGUgbG9hZGVkXG4mIzM0Oyk7CiAJcmV0dXJuIDA7CiAKQEAgLTIxODksOCAmIzQzOzIxOTgsOCBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZCkKIAkJbnVsbF9kZXN0cm95X2RldihudWxsYik7CiAJfQogCXVucmVnaXN0ZXJfYmxrZGV2KG51bGxfbWFqb3IsICYjMzQ7bnVsbGImIzM0Oyk7Ci1lcnJfY29uZjoKLQljb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbSgmYW1wO251bGxiX3N1YnN5cyk7CiYjNDM7CWlmICh0YWdfc2V0Lm9wcykKJiM0MzsJCWJsa19tcV9mcmVlX3RhZ19zZXQoJmFtcDt0YWdfc2V0KTsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0yMjAwLDggJiM0MzsyMjA5LDYgQEAgc3RhdGljIHZvaWQgX19leGl0IG51bGxfZXhpdCh2b2lkKQogCiAJY29uZmlnZnNfdW5yZWdpc3Rlcl9zdWJzeXN0ZW0oJmFtcDtudWxsYl9zdWJzeXMpOwogCi0JdW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgJiMzNDtudWxsYiYjMzQ7KTsKLQogCW11dGV4X2xvY2soJmFtcDtsb2NrKTsKIAl3aGlsZSAoIWxpc3RfZW1wdHkoJmFtcDtudWxsYl9saXN0KSkgewogCQludWxsYiA9IGxpc3RfZW50cnkobnVsbGJfbGlzdC5uZXh0LCBzdHJ1Y3QgbnVsbGIsIGxpc3QpOwpAQCAtMjIwOSw2ICYjNDM7MjIxNiw4IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZCkKIAl9CiAJbXV0ZXhfdW5sb2NrKCZhbXA7bG9jayk7CiAKJiM0MzsJdW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgJiMzNDtudWxsYiYjMzQ7KTsKJiM0MzsKIAlpZiAodGFnX3NldC5vcHMpCiAJCWJsa19tcV9mcmVlX3RhZ19zZXQoJmFtcDt0YWdfc2V0KTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDM5CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE51bGwgQmxvY2sgRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayBkb3duIHRoaXMgYG51bGxfYmxrYCBkcml2ZXIgcGF0Y2guIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoaXMgaXMgYSBmb2N1c2VkIGVmZm9ydCB0byB0aWdodGVuIHVwIHRoZSBkcml2ZXImIzM5O3MgdGhyZWFkIHNhZmV0eSBhbmQgZml4IHNvbWUgY3JpdGljYWwgYnVncy4KCkZpcnN0bHksIHRoZSBjaGFuZ2UgZnJvbSBgc3RhdGljIHN0cnVjdCBtdXRleCBsb2NrO2AgdG8gYHN0YXRpYyBERUZJTkVfTVVURVgobG9jayk7YCBhbmQgdGhlIHJlbW92YWwgb2YgdGhlIGV4cGxpY2l0IGBtdXRleF9pbml0KClgIGNhbGwgaXMgcHJldHR5IHN0YW5kYXJkLiBJdCYjMzk7cyBhIGNsZWFuZXIgaW5pdGlhbGl6YXRpb24gbWV0aG9kIGFuZCByZWR1Y2VzIHRoZSBjaGFuY2VzIG9mIGVycm9ycy4gVGhlbiwgd3JhcHBpbmcgdGhlIGBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zaG93YCBhbmQgYG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3N0b3JlYCBmdW5jdGlvbnMgd2l0aCBgbXV0ZXhfbG9ja2AgYW5kIGBtdXRleF91bmxvY2tgIGNhbGxzIGlzIGEgY2xlYXIgaW5kaWNhdGlvbiBvZiBhIHJhY2UgY29uZGl0aW9uIGZpeCB3aXRoaW4gdGhlIGNvbmZpZ2ZzIG1hY3Jvcy4gVGhpcyBpcyBnb29kIHRvIHNlZSBhcyBjb25maWdmcyBjYW4gYmUgdHJpY2t5IHRvIG1hbmFnZSBjb25jdXJyZW5jeSBpbi4KClRoZSByZWplY3Rpb24gb2YgcXVldWUgdXBkYXRlcyBpZiB0aGUgdGFnIHNldCBpcyBzaGFyZWQgaW4gYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgIGlzIGFsc28gc21hcnQuIFRoaXMgc3VnZ2VzdHMgdGhleSYjMzk7dmUgaWRlbnRpZmllZCBhIHNwZWNpZmljIHNjZW5hcmlvIHdoZXJlIHNoYXJlZCB0YWcgc2V0cyB3ZXJlIGNhdXNpbmcgaXNzdWVzLiBSZW1vdmluZyB0aGUgbXV0ZXggbG9ja3MgZnJvbSBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AgYW5kIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AgaW4gdGhlIG1hY3JvcyBtYWtlcyBzZW5zZSBzaW5jZSB0aGUgY2FsbGVyIG5vdyBoYW5kbGVzIHRoZSBsb2NraW5nLiBJdCYjMzk7cyBhIGxvZ2ljYWwgc2ltcGxpZmljYXRpb24gYmFzZWQgb24gdGhlIHByZXZpb3VzIGNoYW5nZXMuIFRoZSBhZGRpdGlvbiBvZiB0aGUgbG9jayBhcm91bmQgYG51bGxiX2RldmljZV9wb3dlcl9zaG93YCBjb21wbGV0ZXMgdGhlIG11dGV4IGltcGxlbWVudGF0aW9uLgoKVGhlIG1vdmUgb2YgYG51bGxfZnJlZV96b25lZF9kZXYoZGV2KWAgZnJvbSBgbnVsbF9mcmVlX2RldmAgdG8gYG51bGxfZGVsX2RldmAgYW5kIHRoZSByZW9yZGVyaW5nIG9mIGBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW1gIGFuZCBgcmVnaXN0ZXJfYmxrZGV2YCAoYW5kIHRoZWlyIHVucmVnaXN0ZXIgY291bnRlcnBhcnRzKSBhcmUgaG91c2VrZWVwaW5nIGNoYW5nZXMgYnV0IGNhbiBiZSBzaWduaWZpY2FudC4gVGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24gc2VxdWVuY2UgY2FuIGJlIGNvbXBsZXgsIGFuZCB0aGVzZSBjaGFuZ2VzIGNvdWxkIGJlIGFpbWVkIGF0IGFkZHJlc3NpbmcgcmFjZSBjb25kaXRpb25zIG9yIGVuc3VyaW5nIHJlc291cmNlcyBhcmUgcHJvcGVybHkgbWFuYWdlZCBpbiBhIHNwZWNpZmljIG9yZGVyLgoKR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlcyDigJMgbXV0ZXhlcywgcG9pbnRlciBkZXJlZmVyZW5jZXMsIHJlb3JkZXJpbmcgb2YgaW5pdC9leGl0IHN0ZXBzIOKAkyBJJiMzOTttIHRoaW5raW5nIHRoaXMgaXMgcHJvYmFibHkgYSBnb29kIGNhbmRpZGF0ZSBmb3Igc29tZSByaWdvcm91cyBmdXp6aW5nLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gbWFrZSBzdXJlIGBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS2AgaXMgZW5hYmxlZC4gSXQmIzM5O3MgdGltZSB0byBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIHdoYXQgdGhlIGJ1aWxkIGNvbmZpZyBzYXlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA0OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL01ha2VmaWxlPTM1PW9iai0kKENPTkZJR19CTEtfREVWX1JOQkQpXHQmIzQzOz0gcm5iZC9cbmRyaXZlcnMvYmxvY2svTWFrZWZpbGUtMzYtXG5kcml2ZXJzL2Jsb2NrL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19CTEtfREVWX05VTExfQkxLKVx0JiM0Mzs9IG51bGxfYmxrL1xuZHJpdmVycy9ibG9jay9NYWtlZmlsZS0zOC1vYmotJChDT05GSUdfQkxLX0RFVl9SVVNUX05VTEwpICYjNDM7PSBybnVsbC9cbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctNS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzo2OmNvbmZpZyBCTEtfREVWX05VTExfQkxLXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O051bGwgdGVzdCBibG9jayBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctOS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzoxMDpjb25maWcgQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy0xMS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmYXVsdCBpbmplY3Rpb24gZm9yIE51bGwgdGVzdCBibG9jayBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzoxMjpcdGRlcGVuZHMgb24gQkxLX0RFVl9OVUxMX0JMSyBcdTAwMjZcdTAwMjYgRkFVTFRfSU5KRUNUSU9OX0NPTkZJR0ZTXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9NYWtlZmlsZT00PWNjZmxhZ3MteVx0XHRcdCYjNDM7PSAtSSQoc3JjKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9NYWtlZmlsZS01LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19CTEtfREVWX05VTExfQkxLKVx0JiM0Mzs9IG51bGxfYmxrLm9cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvTWFrZWZpbGUtNy1udWxsX2Jsay1vYmpzXHRcdFx0Oj0gbWFpbi5vXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjEtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMjojaWZkZWYgQ09ORklHX0JMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMy1zdGF0aWMgREVDTEFSRV9GQVVMVF9BVFRSKG51bGxfdGltZW91dF9hdHRyKTtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz05OD1NT0RVTEVfUEFSTV9ERVNDKGhvbWVfbm9kZSwgXCYjMzQ7SG9tZSBub2RlIGZvciB0aGUgZGV2aWNlXCYjMzQ7KTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTk5LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTAwOiNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEwMS0vKlxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTY2Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGNvbmZpZ19pdGVtX3R5cGUgbnVsbGJfZGV2aWNlX3R5cGUgPSB7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNjY3LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NjY4OiNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTY2OS1cbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz03OTA9c3RhdGljIHN0cnVjdCBudWxsYl9kZXZpY2UgKm51bGxfYWxsb2NfZGV2KHZvaWQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzk3LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Nzk4OiNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTc5OS1cdGRldi1cdTAwM2V0aW1lb3V0X2NvbmZpZy5hdHRyID0gbnVsbF90aW1lb3V0X2F0dHI7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTQ5Nj1zdGF0aWMgdm9pZCBudWxsYl9zZXR1cF9id3RpbWVyKHN0cnVjdCBudWxsYiAqbnVsbGIpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTUwNC1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE1MDU6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTUwNi1cbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xODk4PXN0YXRpYyBpbnQgbnVsbF92YWxpZGF0ZV9jb25mKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTQwLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTk0MTojaWZkZWYgQ09ORklHX0JMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTQyLXN0YXRpYyBib29sIF9fbnVsbF9zZXR1cF9mYXVsdChzdHJ1Y3QgZmF1bHRfYXR0ciAqYXR0ciwgY2hhciAqc3RyKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE5NTU9c3RhdGljIGJvb2wgbnVsbF9zZXR1cF9mYXVsdCh2b2lkKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTk1Ni17XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxOTU3OiNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE5NTgtXHRpZiAoIV9fbnVsbF9zZXR1cF9mYXVsdChcdTAwMjZudWxsX3RpbWVvdXRfYXR0ciwgZ190aW1lb3V0X3N0cikpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oPTUzPXN0cnVjdCBudWxsYl9kZXZpY2Uge1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC01NS1cdHN0cnVjdCBjb25maWdfZ3JvdXAgZ3JvdXA7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmg6NTY6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTU3LVx0c3RydWN0IGZhdWx0X2NvbmZpZyB0aW1lb3V0X2NvbmZpZztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTk1CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTnVsbCBCbG9jayBEZXZpY2UgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGZvciB0aGUgbnVsbCBibG9jayBkZXZpY2UgZHJpdmVyLiBUaGUgY3J1Y2lhbCBjb25maWcgb3B0aW9uLCBhcyBJIHNlZSBpdCwgaXMgYEJMS19ERVZfTlVMTF9CTEtgLiBUaGF0JiMzOTtzIHdoZXJlIGl0IGFsbCBzdGFydHMuCgpMb29raW5nIGF0IHRoZSBjb2RlIGNoYW5nZXMsIGl0IGFwcGVhcnMgdGhlIHBhdGNoIHRvdWNoZXMgc2V2ZXJhbCBmdW5jdGlvbnM6IGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCwgYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgLCBgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNgLCBgbnVsbF9mcmVlX2RldmAsIGBudWxsX2RlbF9kZXZgLCBhbmQgdGhlbiB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIGFuZCBleGl0IGZ1bmN0aW9ucyBgbnVsbF9pbml0YCBhbmQgYG51bGxfZXhpdGAuIFRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgdGhlIGNvbmZpZ2ZzIG1hY3JvcyBsaWtlIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc2hvd2AgYW5kIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmVgLgoKQWxyaWdodCwgSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIGludGVyZXN0aW5nIGJpdHMgZm9yIGZ1enppbmcuIGBudWxsX2luaXRgIGFuZCBgbnVsbF9leGl0YCBhcmUgbW9kdWxlIGxpZmVjeWNsZSBmdW5jdGlvbnMsIG5vdCB0aGUgYmVzdCBmb3IgZnV6emluZyBkaXJlY3RseSwgYWx0aG91Z2ggdGhleSBzZXQgdXAgdGhlIGVudmlyb25tZW50LgoKVGhlIGNvbmZpZ2ZzIHN0b3JlL3Nob3cgZnVuY3Rpb25zIHNlZW0gdG8gYmUgZ2VuZXJhdGVkIGJ5IG1hY3JvcywgcGFydGljdWxhcmx5IGBDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIE5BTUUpO2AgaW4gYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jYC4gVGhvc2UgbWFjcm9zIGFyZSBnb2luZyB0byBnZW5lcmF0ZSBmdW5jdGlvbnMsIHN1Y2ggYXMgYG51bGxiX2RldmljZV9zdWJtaXRfcXVldWVzX3N0b3JlYC4KCkxldCYjMzk7cyBmb2N1cyBvbiB0aGUga2V5IGZ1bmN0aW9ucyBtb2RpZmllZCB0byBzZWUgd2hhdCB0aGUgY2hhbmdlcyBpbXBseSBhYm91dCB0aGUgZnVuY3Rpb25hbGl0eS4gV2UgbmVlZCB0byBsb29rIGNsb3NlbHkgYXQgYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgLCBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AsIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AsIGBudWxsX2RlbF9kZXZgLCBhbmQgYG51bGxfZnJlZV9kZXZgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlc2Ugd2lsbCBiZWhhdmUgdW5kZXIgdmFyaW91cyBpbnB1dHMuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGludGVyZXN0aW5nIGZ1enppbmcgdGFyZ2V0cyBsaWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDQ6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHRlNfQVRUUlxcKG51bGxiX2RldmljZV8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0zNTg9bnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcdFxcXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzgxLX1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MzgyOkNPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgTkFNRSk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zODMtXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NDk3PXN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTM1LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NTM2OkNPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgcG93ZXIpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTM3LVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTU0NT1zdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfYmFkYmxvY2tzX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01ODgtfVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NTg5OkNPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgYmFkYmxvY2tzKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTU5MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjE4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpdmluZyBpbnRvIHRoZSBNYWNybyYjMzk7cyBJbm5lciBXb3JraW5ncyoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMuIEJlZm9yZSBJIGV2ZW4gY29uc2lkZXIgcG90ZW50aWFsIG9wdGltaXphdGlvbnMgb3IgYWx0ZXJuYXRpdmUgYXBwcm9hY2hlcywgSSYjMzk7bSBnb2luZyB0byBkcmlsbCBkb3duIHRvIHRoZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9jay4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGRpc3NlY3RpbmcgdGhlIG1hY3JvIGRlZmluaXRpb24gaXRzZWxmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZXhwYW5zaW9uLCB0aGUgbnVhbmNlcyBvZiBhbnkgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgaXQgZW1wbG95cywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgYnJvYWRlciBjb2RlIGNvbnRleHQuIElzIHRoZXJlIGFueSByb29tIGZvciBhbWJpZ3VpdHk/IFBvdGVudGlhbCBzaWRlIGVmZmVjdHMgSSYjMzk7bSBvdmVybG9va2luZz8gVGhpcyBpbml0aWFsIGNoZWNrIGlzIGNydWNpYWw7IEkgY2FuJiMzOTt0IGJ1aWxkIGEgcm9idXN0IHVuZGVyc3RhbmRpbmcgd2l0aG91dCBhIHNvbGlkIGdyYXNwIG9mIGl0cyBiYXNpYyBtZWNoYW5pY3MuIFRpbWUgdG8gZ2V0IGludG8gdGhlIGRldGFpbHMgb2YgdGhlIG1hY3JvIGRlZmluaXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDQ6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TlVMTEJfREVWSUNFX0FUVFImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0zMjk9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzQzLS8qIFRoZSBmb2xsb3dpbmcgbWFjcm8gc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoIFRZUEUgPSB7dWludCwgdWxvbmcsIGJvb2x9LiAqL1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MzQ0OiNkZWZpbmUgTlVMTEJfREVWSUNFX0FUVFIoTkFNRSwgVFlQRSwgQVBQTFkpXHRcdFx0XHRcXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzQ1LXN0YXRpYyBzc2l6ZV90XHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NDQ2PXN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ1MS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1MjpOVUxMQl9ERVZJQ0VfQVRUUihzaXplLCB1bG9uZywgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTM6TlVMTEJfREVWSUNFX0FUVFIoY29tcGxldGlvbl9uc2VjLCB1bG9uZywgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTQ6TlVMTEJfREVWSUNFX0FUVFIoc3VibWl0X3F1ZXVlcywgdWludCwgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTU6TlVMTEJfREVWSUNFX0FUVFIocG9sbF9xdWV1ZXMsIHVpbnQsIG51bGxiX2FwcGx5X3BvbGxfcXVldWVzKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1NjpOVUxMQl9ERVZJQ0VfQVRUUihob21lX25vZGUsIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDU3Ok5VTExCX0RFVklDRV9BVFRSKHF1ZXVlX21vZGUsIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDU4Ok5VTExCX0RFVklDRV9BVFRSKGJsb2Nrc2l6ZSwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTk6TlVMTEJfREVWSUNFX0FUVFIobWF4X3NlY3RvcnMsIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDYwOk5VTExCX0RFVklDRV9BVFRSKGlycW1vZGUsIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDYxOk5VTExCX0RFVklDRV9BVFRSKGh3X3F1ZXVlX2RlcHRoLCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2MjpOVUxMQl9ERVZJQ0VfQVRUUihpbmRleCwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjM6TlVMTEJfREVWSUNFX0FUVFIoYmxvY2tpbmcsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY0Ok5VTExCX0RFVklDRV9BVFRSKHVzZV9wZXJfbm9kZV9oY3R4LCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2NTpOVUxMQl9ERVZJQ0VfQVRUUihtZW1vcnlfYmFja2VkLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2NjpOVUxMQl9ERVZJQ0VfQVRUUihkaXNjYXJkLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2NzpOVUxMQl9ERVZJQ0VfQVRUUihtYnBzLCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2ODpOVUxMQl9ERVZJQ0VfQVRUUihjYWNoZV9zaXplLCB1bG9uZywgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Njk6TlVMTEJfREVWSUNFX0FUVFIoem9uZWQsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDcwOk5VTExCX0RFVklDRV9BVFRSKHpvbmVfc2l6ZSwgdWxvbmcsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDcxOk5VTExCX0RFVklDRV9BVFRSKHpvbmVfY2FwYWNpdHksIHVsb25nLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3MjpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX25yX2NvbnYsIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDczOk5VTExCX0RFVklDRV9BVFRSKHpvbmVfbWF4X29wZW4sIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc0Ok5VTExCX0RFVklDRV9BVFRSKHpvbmVfbWF4X2FjdGl2ZSwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzU6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9hcHBlbmRfbWF4X3NlY3RvcnMsIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc2Ok5VTExCX0RFVklDRV9BVFRSKHpvbmVfZnVsbCwgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Nzc6TlVMTEJfREVWSUNFX0FUVFIodmlydF9ib3VuZGFyeSwgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Nzg6TlVMTEJfREVWSUNFX0FUVFIobm9fc2NoZWQsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc5Ok5VTExCX0RFVklDRV9BVFRSKHNoYXJlZF90YWdzLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ4MDpOVUxMQl9ERVZJQ0VfQVRUUihzaGFyZWRfdGFnX2JpdG1hcCwgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0ODE6TlVMTEJfREVWSUNFX0FUVFIoZnVhLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ4MjpOVUxMQl9ERVZJQ0VfQVRUUihyb3RhdGlvbmFsLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ4MzpOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3Nfb25jZSwgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0ODQ6TlVMTEJfREVWSUNFX0FUVFIoYmFkYmxvY2tzX3BhcnRpYWxfaW8sIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDg1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA0OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3MzcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA2MjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCYjMzk7cyBJbXBhY3QqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBmb2N1cyBpcyBkcmF3biB0byB0aGUgZnVuY3Rpb25zIGl0IHRvdWNoZXMuIEkgc2VlIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBhIG51bWJlciBvZiBgbnVsbGJfZGV2aWNlXypgIGZ1bmN0aW9ucy4gU3BlY2lmaWNhbGx5LCBgbnVsbGJfZGV2aWNlX3N1Ym1pdF9xdWV1ZXNfc3RvcmVgLCBgbnVsbGJfZGV2aWNlX3BvbGxfcXVldWVzX3N0b3JlYCwgYW5kIHRoZSBwb3dlci1yZWxhdGVkIG9uZXM6IGBudWxsYl9kZXZpY2VfcG93ZXJfc2hvd2AgYW5kIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoaWNoIG9uZXMgYXJlICphY3R1YWxseSogbW9kaWZpZWQuCgpJbml0aWFsbHksIEkgc2VlIGBudWxsYl9kZXZpY2VfcG93ZXJfc2hvd2AgaXMgZGVmaW5pdGVseSBjaGFuZ2VkIOKAkyB0aGUgbXV0ZXggbG9jayBhbmQgdW5sb2NrIHdlcmUgYWRkZWQsIEkgc2VlIHRoYXQgcmlnaHQgYXdheSBpbiB0aGUgZGlmZi4gSG93ZXZlciwgSeKAmW0gZ2V0dGluZyBhIGJpdCBjb25mdXNlZCBhYm91dCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYC4gSSAqdGhvdWdodCogaXQgd2FzIG1vZGlmaWVkLCBidXQgdGhlIGRpZmYgaXNuJiMzOTt0IHNob3dpbmcgYW55IGNoYW5nZXMgdGhlcmUuIExldCBtZSBkb3VibGUtY2hlY2vigKYgTm8sIHRoZSBkaWZmIGRvZXNu4oCZdCBzaG93IGEgbW9kaWZpY2F0aW9uLiBPa2F5LCB0aGUgZGlmZiBqdXN0IHNob3dzIHRoZSBjb250ZXh0LCBhbmQgaXQmIzM5O3Mgbm90IGFjdHVhbGx5IGNoYW5nZWQgaW4gdGhlIGRpZmYuIEdvdCBpdC4KCk5vdywgdGhvc2UgYG51bGxiX2RldmljZV9zdWJtaXRfcXVldWVzX3N0b3JlYCBhbmQgYG51bGxiX2RldmljZV9wb2xsX3F1ZXVlc19zdG9yZWAgZnVuY3Rpb25zIGFyZSBnZW5lcmF0ZWQsIGFyZW4mIzM5O3QgdGhleT8gSSBzaG91bGQgY2hlY2sgdGhlbSwgYXMgdGhleSBhcmUga2V5IHRvIHF1ZXVlIG1hbmFnZW1lbnQuIEl0IGxvb2tzIGxpa2UgdGhleSBhcmUsIGluZGVlZCwgYW5kIGFyZSB0aHVzIGFsc28gbW9kaWZpZWQgYnkgdGhlIHBhdGNoIHZpYSB0aGUgbWFjcm8uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBncmFzcCB0aGUgaW1wbGljYXRpb25zIG9mIHRob3NlIGdlbmVyYXRlZCBmdW5jdGlvbnMuCgpJbiB0ZXJtcyBvZiBmdXp6aW5nIHRhcmdldHMsIHdoaWxlIHN5emthbGxlciAqY2FuKiBmdXp6IGdlbmVyYXRlZCBmdW5jdGlvbnMsIEkgbWlnaHQgYmUgYmV0dGVyIG9mZiBzcGVjaWZ5aW5nIHRoZSBjcml0aWNhbCBvbmVzIGRpcmVjdGx5LiBGcm9tIHdoYXQgSeKAmW0gc2VlaW5nLCBgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc2AsIGBudWxsX2RlbF9kZXZgLCBgbnVsbF9mcmVlX2RldmAsIGFuZCBvZiBjb3Vyc2UgYG51bGxiX2RldmljZV9wb3dlcl9zaG93YCBzZWVtIGxpa2UgZ29vZCBzdGFydGluZyBwb2ludHMuIEkgbWlnaHQgYWxzbyBjb25zaWRlciBhZGRpbmcgYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgIGFuZCBgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNgLgoKVWx0aW1hdGVseSwgSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgdGhhdCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBpc27igJl0IG1vZGlmaWVkLiBJ4oCZbGwgZ28gYmFjayBhbmQgY29uZmlybSB0aGF0IGFnYWluLiBJIGRvbuKAmXQgd2FudCB0byBtaXNzIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00ODY9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ5Ni1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ5NzpzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDk4LVx0XHRcdFx0ICAgICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA0OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDE1CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIFJlY2VudCBLZXJuZWwgQ2hhbmdlcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIGRpZmYuIE15IHByaW1hcnkgY29uY2VybiBoZXJlIGlzIHVuZGVyc3RhbmRpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBjaGFuZ2VzLCBwYXJ0aWN1bGFybHkgaG93IHRoZXkgYWZmZWN0IHRoZSB2aXJ0dWFsIGJsb2NrIGRldmljZSwgYG51bGxiYC4gSXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgYG51bGxiX2RldmljZV9wb3dlcl9zaG93YCBpcyB0aGUgY2VudHJhbCBmdW5jdGlvbiBiZWluZyBtb2RpZmllZC4gVGhlIGludHJvZHVjdGlvbiBvZiB0aGUgYG11dGV4X2xvY2tgIGFuZCBgbXV0ZXhfdW5sb2NrYCBjYWxscyBhcm91bmQgdGhlIGBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3Nob3dgIGluZGljYXRlcyBhIGNoYW5nZSBpbiBob3cgdGhpcyBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQsIGxpa2VseSBmb3IgdGhyZWFkIHNhZmV0eS4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gbm90ZSBhbmQgcG90ZW50aWFsbHkgc2lnbmlmaWNhbnQuCgpCZXlvbmQgdGhhdCwgSSYjMzk7bSB0YWtpbmcgYSBicm9hZGVyIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQgYW5kIHJlbGF0ZWQgc3ltYm9scyB0byBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZXNlIGZ1bmN0aW9ucyBhbmQgdGhlaXIgcmVsYXRpb25zaGlwczogYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgLCBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AsIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AsIGBudWxsX2RlbF9kZXZgLCBhbmQgYG51bGxfZnJlZV9kZXZgLCBiZWNhdXNlIHRoZXkgYXJlIGNsZWFybHkgY2VudHJhbCB0byB0aGUgZGV2aWNlJiMzOTtzIGxpZmVjeWNsZSBhbmQgY29uZmlndXJhdGlvbi4KCkkgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gdGhhdCBgbnVsbGJfZGV2aWNlX3N1Ym1pdF9xdWV1ZXNfc3RvcmVgIGlzIGEgdmFsaWQgc3ltYm9sLiBPa2F5LCBsb29rcyBsaWtlIGl0JiMzOTtzIGdlbmVyYXRlZCBieSB0aGUgYE5VTExCX0RFVklDRV9BVFRSYCBtYWNybywgd2hpY2ggaXMgbmljZSBhbmQgY29udmVuaWVudC4gSSYjMzk7bSBhbHNvIGdvaW5nIHRvIGFkZCBgbnVsbGJfZGV2aWNlX3BvbGxfcXVldWVzX3N0b3JlYCB0byB0aGUgbGlzdCBvZiBpbXBvcnRhbnQgZnVuY3Rpb25zIHRvIGNvbnNpZGVyLCBhcyBpdCYjMzk7cyBnZW5lcmF0ZWQgYnkgc2ltaWxhciBtZWFucy4gVGhlIGBDT05GSUdGU19BVFRSYCBtYWNyb3MgYXJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIHBpY3R1cmUgaGVyZS4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIGhvdyB0aGVzZSBtYWNyb3MgYWN0dWFsbHkgZXhwYW5kLCBhcyBJJiMzOTttIHRoaW5raW5nIHRoZXkgbWlnaHQgZ2VuZXJhdGUgc29tZXRoaW5nIGxpa2UgYG51bGxiX2RldmljZV9hdHRyX3N1Ym1pdF9xdWV1ZXNgIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGUgZXhhY3QgbmFtZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA0OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlZmluZSBDT05GSUdGU19BVFRSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9jb25maWdmcy5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvY29uZmlnZnMuaD0xMTU9c3RydWN0IGNvbmZpZ2ZzX2F0dHJpYnV0ZSB7XG4tLVxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oLTEyMi1cbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaDoxMjM6I2RlZmluZSBDT05GSUdGU19BVFRSX1BFUk0oX3BmeCwgX25hbWUsIF9wZXJtKVx0XHRcXFxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oLTEyNC1zdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX2F0dHJpYnV0ZSBfcGZ4IyNhdHRyXyMjX25hbWUgPSB7XHRcXFxuLS1cbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaC0xMzEtXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmg6MTMyOiNkZWZpbmUgQ09ORklHRlNfQVRUUihfcGZ4LCBfbmFtZSkgQ09ORklHRlNfQVRUUl9QRVJNKFx0XFxcbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaC0xMzMtXHRcdF9wZngsIF9uYW1lLCBTX0lSVUdPIHwgU19JV1VTUlx0XHRcXFxuLS1cbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaC0xMzUtXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmg6MTM2OiNkZWZpbmUgQ09ORklHRlNfQVRUUl9STyhfcGZ4LCBfbmFtZSlcdFx0XHRcXFxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oLTEzNy1zdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX2F0dHJpYnV0ZSBfcGZ4IyNhdHRyXyMjX25hbWUgPSB7XHRcXFxuLS1cbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaC0xNDMtXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmg6MTQ0OiNkZWZpbmUgQ09ORklHRlNfQVRUUl9XTyhfcGZ4LCBfbmFtZSlcdFx0XHRcXFxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oLTE0NS1zdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX2F0dHJpYnV0ZSBfcGZ4IyNhdHRyXyMjX25hbWUgPSB7XHRcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTI0NAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgTnVsbCBCbG9jayBEZXZpY2UgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgY29kZSwgdGhlIGBDT05GSUdGU19BVFRSYCBtYWNybywgc3BlY2lmaWNhbGx5IGluIHRoZSBjb250ZXh0IG9mIHRoZSBgbnVsbGJfZGV2aWNlX2AgYXR0cmlidXRlcywgaXMgZ2VuZXJhdGluZyBhIGBzdHJ1Y3QgY29uZmlnZnNfYXR0cmlidXRlYCBuYW1lZCBgbnVsbGJfZGV2aWNlX2F0dHJfTkFNRWAuIFRoYXQmIzM5O3MgZ29vZC4gQW5kIHRoZSBhc3NvY2lhdGVkIHNob3cgYW5kIHN0b3JlIGZ1bmN0aW9ucyBhcmUgYmVpbmcgZGVmaW5lZCBhcyBgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3Nob3dgIGFuZCBgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlYCwgd2hpY2ggbWVhbnMgSSYjMzk7bSBjb3JyZWN0IGluIGV4cGVjdGluZyB0byBzZWUgYG51bGxiX2RldmljZV9zdWJtaXRfcXVldWVzX3N0b3JlYCBhbmQgYG51bGxiX2RldmljZV9wb2xsX3F1ZXVlc19zdG9yZWAuIEV4Y2VsbGVudCwgSSYjMzk7bGwgZGVmaW5pdGVseSBhZGQgdGhvc2UgdHdvIGZ1bmN0aW9ucyB0byBteSBmb2N1cyBzeW1ib2xzLgoKTm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBvdmVyYWxsIGNvbmZpZ3VyYXRpb24uIEkga25vdyBgQ09ORklHX0JMS19ERVZfTlVMTF9CTEtgIGlzIHRoZSBjb3JlLCB0aGUgbWFpbiBjb25maWcgb3B0aW9uLiBJIGhhdmUgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55IG90aGVyIGRlcGVuZGVuY2llcyB0aG91Z2guIEkgYWxzbyBrbm93IHRoYXQgYENPTkZJR19DT05GSUdGU19GU2AgaXMgcmVxdWlyZWQgZm9yIHRoZSBjb25maWdmcyBzZXR1cCwgYnV0IHRoZXJlJiMzOTtzIGEgdGhvdWdodC4uLiB0aGUgYEJMS19ERVZfTlVMTF9CTEtgIEtjb25maWcgZW50cnkgZG9lc24mIzM5O3Qgc3RyaWN0bHkgZGVwZW5kIG9uIGl0LiBUaGF0JiMzOTtzIGEgcG9pbnQgb2YgcG90ZW50aWFsIGNvbmNlcm4uIEkgc2hvdWxkIHJlYWxseSBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGluIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWdgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBvZiB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZWxhdGlvbnNoaXBzIGhlcmUuIEkgbmVlZCB0byBiZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBjb25maWd1cmF0aW9uIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA0OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfREVWX05VTExfQkxLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy01LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjY6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TnVsbCB0ZXN0IGJsb2NrIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy05LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjEwOmNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTExLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZhdWx0IGluamVjdGlvbiBmb3IgTnVsbCB0ZXN0IGJsb2NrIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTk1MwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgTnVsbCBCbG9jayBEZXZpY2UgS2NvbmZpZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gRmlyc3Qgb3JkZXIgb2YgYnVzaW5lc3M6ICpLY29uZmlnKiDigJMgdGhlIGhlYXJ0IG9mIHRoZSBjb25maWd1cmF0aW9uIHByb2Nlc3MgZm9yIHRoZSBudWxsIGJsb2NrIGRyaXZlci4gSSBuZWVkIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBob3cgaXQmIzM5O3MgcHJlc2VudGVkIGluIHRoaXMgY29udGV4dC4gU3BlY2lmaWNhbGx5LCBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnYC4gSSYjMzk7bGwgYmUgbWV0aWN1bG91c2x5IGluc3BlY3RpbmcgdGhpcyBmaWxlIHRvIGdyYXNwIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXZhaWxhYmxlLCBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aG9zZSBvcHRpb25zLCBhbmQgYW55IGltcGxpY2F0aW9ucyB0aGV5IG1pZ2h0IGhhdmUgb24gdGhlIG92ZXJhbGwgZHJpdmVyJiMzOTtzIGZ1bmN0aW9uYWxpdHkuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgd2hhdCBpcyBjb250cm9sbGFibGUgYW5kIGNvbmZpZ3VyYWJsZSB3aXRoaW4gdGhlIGRyaXZlciB0aHJvdWdoIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIGFuZCBob3cgdGhvc2UgY29uZmlndXJhdGlvbiBvcHRpb25zIHNoYXBlIGl0cyBiZWhhdmlvci4gRm9yIGV4YW1wbGUsIGFyZSB0aGVyZSBhbnkgcGVyZm9ybWFuY2UgdHJhZGUtb2ZmcyB0aGF0IGNhbiBiZSBtYWRlIGR1cmluZyBidWlsZCB0aW1lPyBJIHdpbGwgYWxzbyBldmFsdWF0ZSB3aGV0aGVyIHRoZSBjb25maWd1cmF0aW9ucyBhcmUgcHJlc2VudGVkIGluIGEgd2F5IHRoYXQgaXMgZWFzeSB0byB1bmRlcnN0YW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0I1xuICAgMzpcdCMgTnVsbCBibG9jayBkZXZpY2UgZHJpdmVyIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O051bGwgdGVzdCBibG9jayBkcml2ZXJcJiMzNDtcbiAgIDg6XHRcdHNlbGVjdCBDT05GSUdGU19GU1xuICAgOTpcdFxuICAxMDpcdGNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxuICAxMTpcdFx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZhdWx0IGluamVjdGlvbiBmb3IgTnVsbCB0ZXN0IGJsb2NrIGRyaXZlclwmIzM0O1xuICAxMjpcdFx0ZGVwZW5kcyBvbiBCTEtfREVWX05VTExfQkxLIFx1MDAyNlx1MDAyNiBGQVVMVF9JTkpFQ1RJT05fQ09ORklHRlNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDQ6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzNTcKCQkJCQkJCW91dHB1dDogMTk2CgkJCQkJCQl0aG91Z2h0czogMTA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiBDb25maWd1cmF0aW9uIGFuZCBMaWZlY3ljbGUgQ2hhbmdlcyBpbiBgbnVsbF9ibGtgIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSB6ZXJvZWQgaW4gb24gdGhlIGBudWxsX2Jsa2AgZHJpdmVyLiBUaGUgaW5pdGlhbCBjbHVlIHdhcyB0aGUgc2VsZWN0aW9uIG9mIGBDT05GSUdGU19GU2AsIHdoaWNoIGltcGxpZXMgYSBmb2N1cyBvbiBjb25maWdmcyBhdHRyaWJ1dGVzLiBGcm9tIHRoZXJlLCBJIHNlZSB0aGF0IHRoZSBwYXRjaCYjMzk7cyBjb3JlIGlzIGFkZGluZyBtdXRleCBsb2NrcywgYWRkcmVzc2luZyByYWNlIGNvbmRpdGlvbnMsIGFuZCBoYW5kbGluZyBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyB3aXRoaW4gdGhlIGRyaXZlci4gSXQgbG9va3MgbGlrZSBpdCBhbHNvIHJlamVjdHMgcXVldWUgdXBkYXRlcyBmb3Igc2hhcmVkIHRhZyBzZXRzLiBUaGlzIHN1Z2dlc3RzIGNoYW5nZXMgaW4gaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBjb25jdXJyZW50IGFjY2VzcyB0byBpdHMgY29uZmlndXJhdGlvbiBhbmQgc3RhdGUuIFRoaXMgc2hvdWxkIGJlIGZ1enplZCBoZWF2aWx5LgoKSSYjMzk7dmUgaWRlbnRpZmllZCBrZXkgZnVuY3Rpb25zIGFuZCBhdHRyaWJ1dGVzIHRoYXQgYXJlIGRpcmVjdGx5IGltcGFjdGVkLiBIZXJlJiMzOTtzIHdoYXQgSSYjMzk7dmUgZGlzdGlsbGVkOgoKKiAgICoqQ29yZSBGdW5jdGlvbnMgJmFtcDsgTGlmZWN5Y2xlOioqCiAgICAqICAgYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgCiAgICAqICAgYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgCiAgICAqICAgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYAogICAgKiAgIGBudWxsYl9kZXZpY2VfcG93ZXJfc2hvd2AKICAgICogICBgbnVsbF9kZWxfZGV2YAogICAgKiAgIGBudWxsX2ZyZWVfZGV2YAoqICAgKipNYWNyby1HZW5lcmF0ZWQgRnVuY3Rpb25zOioqCiAgICAqICAgYG51bGxiX2RldmljZV9zdWJtaXRfcXVldWVzX3N0b3JlYAogICAgKiAgIGBudWxsYl9kZXZpY2VfcG9sbF9xdWV1ZXNfc3RvcmVgCgpXaGlsZSB0aGUgbWFjcm8gZ2VuZXJhdGVzIG11bHRpcGxlIGZ1bmN0aW9ucywgdGhlIGtleSBwb2ludCBpcyB0aGF0IHRoZSB1bmRlcmx5aW5nIGFwcGx5IGZ1bmN0aW9ucyAoYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgLCBgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNgKSBhcmUgZGlyZWN0bHkgaW52b2x2ZWQsIHNvIEkgaW5jbHVkZSB0aGVtIGFzIHdlbGwuIFRoZSBsb2NraW5nIGNoYW5nZSBhZmZlY3RzIGFsbCBtYWNyby1nZW5lcmF0ZWQgYXR0cmlidXRlcywgYnV0IHRoZSBgX3N0b3JlYCBmdW5jdGlvbnMgYXJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZyBiZWNhdXNlIHRoZXkgaW52b2x2ZSB0aGUgYGFwcGx5X2ZuYCBsb2dpYy4gSXQmIzM5O3MgdGhlIGBhcHBseV9mbmAgdGhhdCBpcyBhZmZlY3RlZCBieSB0aGUgbG9ja2luZy4KCkkgbWFkZSBzdXJlIEkgaGF2ZSB0aGUgQ09ORklHczoKKiBgQkxLX0RFVl9OVUxMX0JMS2AKCk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IFRoZSBwYXRjaCYjMzk7cyBmdW5jdGlvbmFsIGNoYW5nZXMgaW52b2x2ZSB0aGUgY29uZmlndXJhdGlvbiBhbmQgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgb2YgdGhlIGRyaXZlci4gQWRkaW5nIG11dGV4ZXMsIGhhbmRsaW5nIHNoYXJlZCB0YWcgc2V0cywgYW5kIHJlb3JkZXJpbmcgaW5pdGlhbGl6YXRpb24vdGVhcmRvd24gcG9pbnQgZGlyZWN0bHkgdG8gdGhlc2UgYXJlYXMuIEl0IGlzIHRoZXJlZm9yZSBjcml0aWNhbCB0byBmdXp6IHRoZSBmdW5jdGlvbnMgbGlzdGVkLgoKSSYjMzk7bSBub3cgc2F0aXNmaWVkIHdpdGggdGhpcyBhbmFseXNpcywgYW5kIGFtIHJlYWR5IHRvIHBhc3MgdGhpcyB0byB0aGUgZnV6emVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9OVUxMX0JMSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc2hvdyYjMzQ7LAogICAgJiMzNDtudWxsX2RlbF9kZXYmIzM0OywKICAgICYjMzQ7bnVsbF9mcmVlX2RldiYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2Vfc3VibWl0X3F1ZXVlc19zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2VfcG9sbF9xdWV1ZXNfc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgcmFjZSBjb25kaXRpb25zIGFuZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGluIHRoZSBudWxsX2JsayBkcml2ZXIgYnkgYWRkaW5nIG11dGV4IGxvY2tzIGFyb3VuZCBjb25maWdmcyBhdHRyaWJ1dGUgYWNjZXNzZXMgYW5kIHJlamVjdGluZyBxdWV1ZSB1cGRhdGVzIGZvciBzaGFyZWQgdGFnIHNldHMuIEl0IGFsc28gbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93biBvcmRlci4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZHJpdmVyJiMzOTtzIGNvbmZpZ3VyYXRpb24gYW5kIGxpZmVjeWNsZSBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9OVUxMX0JMSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc2hvdyYjMzQ7LAogICAgJiMzNDtudWxsX2RlbF9kZXYmIzM0OywKICAgICYjMzQ7bnVsbF9mcmVlX2RldiYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2Vfc3VibWl0X3F1ZXVlc19zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2VfcG9sbF9xdWV1ZXNfc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgcmFjZSBjb25kaXRpb25zIGFuZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGluIHRoZSBudWxsX2JsayBkcml2ZXIgYnkgYWRkaW5nIG11dGV4IGxvY2tzIGFyb3VuZCBjb25maWdmcyBhdHRyaWJ1dGUgYWNjZXNzZXMgYW5kIHJlamVjdGluZyBxdWV1ZSB1cGRhdGVzIGZvciBzaGFyZWQgdGFnIHNldHMuIEl0IGFsc28gbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93biBvcmRlci4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZHJpdmVyJiMzOTtzIGNvbmZpZ3VyYXRpb24gYW5kIGxpZmVjeWNsZSBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA0OjAwOjE2LjQ5MzExMTk3OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1OTA0NDUwNzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfTlVMTF9CTEtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzXCIsXG4gICAgXCJudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzXCIsXG4gICAgXCJudWxsYl9hcHBseV9wb2xsX3F1ZXVlc1wiLFxuICAgIFwibnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3dcIixcbiAgICBcIm51bGxfZGVsX2RldlwiLFxuICAgIFwibnVsbF9mcmVlX2RldlwiLFxuICAgIFwibnVsbGJfZGV2aWNlX3N1Ym1pdF9xdWV1ZXNfc3RvcmVcIixcbiAgICBcIm51bGxiX2RldmljZV9wb2xsX3F1ZXVlc19zdG9yZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHJhY2UgY29uZGl0aW9ucyBhbmQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyIGJ5IGFkZGluZyBtdXRleCBsb2NrcyBhcm91bmQgY29uZmlnZnMgYXR0cmlidXRlIGFjY2Vzc2VzIGFuZCByZWplY3RpbmcgcXVldWUgdXBkYXRlcyBmb3Igc2hhcmVkIHRhZyBzZXRzLiBJdCBhbHNvIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24gb3JkZXIuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGRyaXZlcidzIGNvbmZpZ3VyYXRpb24gYW5kIGxpZmVjeWNsZSBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDQ6MDA6MTYuNDkzMTE5Mjk4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDM2MDAzMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjMWUxNDg2YjMzZTRlNzI1ZjllYTU3ZTg5NDUyYmU2YTZjODM2ZDgwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDEwIDA0OjAwOjE1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcXG5pbmRleCBmOGMwZmQ1N2UwNDFhOC4uZTgyOWI1MDI5ODFiM2UgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xcbkBAIC02Niw3ICs2Niw3IEBAIHN0cnVjdCBudWxsYl9wYWdlIHtcXG4gI2RlZmluZSBOVUxMQl9QQUdFX0ZSRUUgKE1BUF9TWiAtIDIpXFxuIFxcbiBzdGF0aWMgTElTVF9IRUFEKG51bGxiX2xpc3QpO1xcbi1zdGF0aWMgc3RydWN0IG11dGV4IGxvY2s7XFxuK3N0YXRpYyBERUZJTkVfTVVURVgobG9jayk7XFxuIHN0YXRpYyBpbnQgbnVsbF9tYWpvcjtcXG4gc3RhdGljIERFRklORV9JREEobnVsbGJfaW5kZXhlcyk7XFxuIHN0YXRpYyBzdHJ1Y3QgYmxrX21xX3RhZ19zZXQgdGFnX3NldDtcXG5AQCAtMzQ1LDggKzM0NSwxNCBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3N0b3JlKGJvb2wgKnZhbCwgY29uc3QgY2hhciAqcGFnZSxcXG4gc3RhdGljIHNzaXplX3RcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIG51bGxiX2RldmljZV8jI05BTUUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcXHRcXFxcXFxuIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdHJldHVybiBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zaG93KFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0c3NpemVfdCByZXQ7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0cmV0ID0gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc2hvdyhcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdFxcdFxcdHRvX251bGxiX2RldmljZShpdGVtKS1cXHUwMDNlTkFNRSwgcGFnZSk7XFx0XFxcXFxcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmxvY2spO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRyZXR1cm4gcmV0O1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gfVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gc3RhdGljIHNzaXplX3RcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNvbnN0IGNoYXIgKnBhZ2UsXFx0XFxcXFxcbkBAIC0zNjAsMTMgKzM2NiwxNyBAQCBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjb25zdCBjaGFyICpwYWdlLFxcdFxcXFxcXG4gXFx0cmV0ID0gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc3RvcmUoXFx1MDAyNm5ld192YWx1ZSwgcGFnZSwgY291bnQpO1xcXFxcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0cmV0ID0gMDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0aWYgKGFwcGx5X2ZuKVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0cmV0ID0gYXBwbHlfZm4oZGV2LCBuZXdfdmFsdWUpO1xcdFxcdFxcdFxcdFxcXFxcXG4gXFx0ZWxzZSBpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsIFxcdTAwMjZkZXYtXFx1MDAzZWZsYWdzKSkgXFx0XFxcXFxcbiBcXHRcXHRyZXQgPSAtRUJVU1k7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRpZiAoIXJldClcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdGRldi1cXHUwMDNlTkFNRSA9IG5ld192YWx1ZTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2bG9jayk7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRpZiAocmV0IFxcdTAwM2MgMClcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdHJldHVybiByZXQ7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRkZXYtXFx1MDAzZU5BTUUgPSBuZXdfdmFsdWU7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRyZXR1cm4gY291bnQ7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiB9XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIE5BTUUpO1xcbkBAIC0zODIsNiArMzkyLDE1IEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuIFxcdGlmICghZGV2LVxcdTAwM2VudWxsYilcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbitcXHQvKlxcbitcXHQgKiBBIHNoYXJlZCB0YWdfc2V0IGlzIG1hcHBlZCB2aWEgdGhlIG1vZHVsZS13aWRlIHF1ZXVlIGNvdW50cywgc28gYVxcbitcXHQgKiBwZXItZGV2aWNlIHJlc2l6ZSBpcyBtZWFuaW5nbGVzcy4gT24gc2hyaW5rIGl0IHdvdWxkIGFsc28gbGVhdmVcXG4rXFx0ICogbXFfbWFwW10gcG9pbnRpbmcgYXQgTlVMTGVkIGhjdHggc2xvdHMsIGNhdXNpbmcgYSBOVUxMIGRlcmVmIGluXFxuK1xcdCAqIGJsa19tcV9tYXBfc3dxdWV1ZSgpLiBSZWplY3QgaXQuXFxuK1xcdCAqL1xcbitcXHRpZiAoZGV2LVxcdTAwM2VudWxsYi1cXHUwMDNldGFnX3NldCA9PSBcXHUwMDI2dGFnX3NldClcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbiBcXHQvKlxcbiBcXHQgKiBNYWtlIHN1cmUgYXQgbGVhc3Qgb25lIHN1Ym1pdCBxdWV1ZSBleGlzdHMuXFxuIFxcdCAqL1xcbkBAIC00MjEsMjUgKzQ0MCwxMyBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxcbiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBzdWJtaXRfcXVldWVzKVxcbiB7XFxuLVxcdGludCByZXQ7XFxuLVxcbi1cXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXG4tXFx0cmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi1cXHUwMDNlcG9sbF9xdWV1ZXMpO1xcbi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmxvY2spO1xcbi1cXG4tXFx0cmV0dXJuIHJldDtcXG4rXFx0cmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtXFx1MDAzZXBvbGxfcXVldWVzKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBwb2xsX3F1ZXVlcylcXG4ge1xcbi1cXHRpbnQgcmV0O1xcbi1cXG4tXFx0bXV0ZXhfbG9jayhcXHUwMDI2bG9jayk7XFxuLVxcdHJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtXFx1MDAzZXN1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTtcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZsb2NrKTtcXG4tXFxuLVxcdHJldHVybiByZXQ7XFxuK1xcdHJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LVxcdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XFxuIH1cXG4gXFxuIE5VTExCX0RFVklDRV9BVFRSKHNpemUsIHVsb25nLCBOVUxMKTtcXG5AQCAtNDc4LDcgKzQ4NSwxMyBAQCBOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3NfcGFydGlhbF9pbywgYm9vbCwgTlVMTCk7XFxuIFxcbiBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNoYXIgKnBhZ2UpXFxuIHtcXG4tXFx0cmV0dXJuIG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyh0b19udWxsYl9kZXZpY2UoaXRlbSktXFx1MDAzZXBvd2VyLCBwYWdlKTtcXG4rXFx0c3NpemVfdCByZXQ7XFxuK1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXG4rXFx0cmV0ID0gbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zaG93KHRvX251bGxiX2RldmljZShpdGVtKS1cXHUwMDNlcG93ZXIsIHBhZ2UpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmxvY2spO1xcbitcXG4rXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG4gc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG5AQCAtODM2LDcgKzg0OSw2IEBAIHN0YXRpYyB2b2lkIG51bGxfZnJlZV9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxcbiBcXHRpZiAoIWRldilcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4tXFx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xcbiBcXHRiYWRibG9ja3NfZXhpdChcXHUwMDI2ZGV2LVxcdTAwM2ViYWRibG9ja3MpO1xcbiBcXHRrZnJlZShkZXYpO1xcbiB9XFxuQEAgLTE3NzAsMTggKzE3ODIsMTkgQEAgc3RhdGljIHZvaWQgbnVsbF9kZWxfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXFxuIFxcbiBcXHRkZWxfZ2VuZGlzayhudWxsYi1cXHUwMDNlZGlzayk7XFxuIFxcbi1cXHRpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX1RIUk9UVExFRCwgXFx1MDAyNm51bGxiLVxcdTAwM2VkZXYtXFx1MDAzZWZsYWdzKSkge1xcbitcXHRpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX1RIUk9UVExFRCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpKSB7XFxuIFxcdFxcdGhydGltZXJfY2FuY2VsKFxcdTAwMjZudWxsYi1cXHUwMDNlYndfdGltZXIpO1xcbiBcXHRcXHRhdG9taWNfbG9uZ19zZXQoXFx1MDAyNm51bGxiLVxcdTAwM2VjdXJfYnl0ZXMsIExPTkdfTUFYKTtcXG4gXFx0XFx0YmxrX21xX3N0YXJ0X3N0b3BwZWRfaHdfcXVldWVzKG51bGxiLVxcdTAwM2VxLCB0cnVlKTtcXG4gXFx0fVxcbiBcXG4gXFx0cHV0X2Rpc2sobnVsbGItXFx1MDAzZWRpc2spO1xcbitcXHRudWxsX2ZyZWVfem9uZWRfZGV2KGRldik7XFxuIFxcdGlmIChudWxsYi1cXHUwMDNldGFnX3NldCA9PSBcXHUwMDI2bnVsbGItXFx1MDAzZV9fdGFnX3NldClcXG4gXFx0XFx0YmxrX21xX2ZyZWVfdGFnX3NldChudWxsYi1cXHUwMDNldGFnX3NldCk7XFxuIFxcdGtmcmVlKG51bGxiLVxcdTAwM2VxdWV1ZXMpO1xcbiBcXHRpZiAobnVsbF9jYWNoZV9hY3RpdmUobnVsbGIpKVxcbi1cXHRcXHRudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2UobnVsbGItXFx1MDAzZWRldiwgdHJ1ZSk7XFxuK1xcdFxcdG51bGxfZnJlZV9kZXZpY2Vfc3RvcmFnZShkZXYsIHRydWUpO1xcbiBcXHRrZnJlZShudWxsYik7XFxuIFxcdGRldi1cXHUwMDNlbnVsbGIgPSBOVUxMO1xcbiB9XFxuQEAgLTIxNjIsMTcgKzIxNzUsOSBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcXG4gXFx0Y29uZmlnX2dyb3VwX2luaXQoXFx1MDAyNm51bGxiX3N1YnN5cy5zdV9ncm91cCk7XFxuIFxcdG11dGV4X2luaXQoXFx1MDAyNm51bGxiX3N1YnN5cy5zdV9tdXRleCk7XFxuIFxcbi1cXHRyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oXFx1MDAyNm51bGxiX3N1YnN5cyk7XFxuLVxcdGlmIChyZXQpXFxuLVxcdFxcdHJldHVybiByZXQ7XFxuLVxcbi1cXHRtdXRleF9pbml0KFxcdTAwMjZsb2NrKTtcXG4tXFxuIFxcdG51bGxfbWFqb3IgPSByZWdpc3Rlcl9ibGtkZXYoMCwgXFxcIm51bGxiXFxcIik7XFxuLVxcdGlmIChudWxsX21ham9yIFxcdTAwM2MgMCkge1xcbi1cXHRcXHRyZXQgPSBudWxsX21ham9yO1xcbi1cXHRcXHRnb3RvIGVycl9jb25mO1xcbi1cXHR9XFxuK1xcdGlmIChudWxsX21ham9yIFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIG51bGxfbWFqb3I7XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnJfZGV2aWNlczsgaSsrKSB7XFxuIFxcdFxcdHJldCA9IG51bGxfY3JlYXRlX2RldigpO1xcbkBAIC0yMTgwLDYgKzIxODUsMTAgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXFxuIFxcdFxcdFxcdGdvdG8gZXJyX2RldjtcXG4gXFx0fVxcbiBcXG4rXFx0cmV0ID0gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKFxcdTAwMjZudWxsYl9zdWJzeXMpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRnb3RvIGVycl9kZXY7XFxuK1xcbiBcXHRwcl9pbmZvKFxcXCJtb2R1bGUgbG9hZGVkXFxcXG5cXFwiKTtcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbkBAIC0yMTg5LDggKzIxOTgsOCBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcXG4gXFx0XFx0bnVsbF9kZXN0cm95X2RldihudWxsYik7XFxuIFxcdH1cXG4gXFx0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXFxcIm51bGxiXFxcIik7XFxuLWVycl9jb25mOlxcbi1cXHRjb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbShcXHUwMDI2bnVsbGJfc3Vic3lzKTtcXG4rXFx0aWYgKHRhZ19zZXQub3BzKVxcbitcXHRcXHRibGtfbXFfZnJlZV90YWdfc2V0KFxcdTAwMjZ0YWdfc2V0KTtcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG5AQCAtMjIwMCw4ICsyMjA5LDYgQEAgc3RhdGljIHZvaWQgX19leGl0IG51bGxfZXhpdCh2b2lkKVxcbiBcXG4gXFx0Y29uZmlnZnNfdW5yZWdpc3Rlcl9zdWJzeXN0ZW0oXFx1MDAyNm51bGxiX3N1YnN5cyk7XFxuIFxcbi1cXHR1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCBcXFwibnVsbGJcXFwiKTtcXG4tXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcbiBcXHR3aGlsZSAoIWxpc3RfZW1wdHkoXFx1MDAyNm51bGxiX2xpc3QpKSB7XFxuIFxcdFxcdG51bGxiID0gbGlzdF9lbnRyeShudWxsYl9saXN0Lm5leHQsIHN0cnVjdCBudWxsYiwgbGlzdCk7XFxuQEAgLTIyMDksNiArMjIxNiw4IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZClcXG4gXFx0fVxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNmxvY2spO1xcbiBcXG4rXFx0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXFxcIm51bGxiXFxcIik7XFxuK1xcbiBcXHRpZiAodGFnX3NldC5vcHMpXFxuIFxcdFxcdGJsa19tcV9mcmVlX3RhZ19zZXQoXFx1MDAyNnRhZ19zZXQpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDQ6MDA6MTcuMDM3NjA1MDgzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTM1OTk0NTQzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc1wiLFxuICAgIFwibnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc1wiLFxuICAgIFwibnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNcIixcbiAgICBcIm51bGxiX2RldmljZV9wb3dlcl9zaG93XCIsXG4gICAgXCJudWxsX2RlbF9kZXZcIixcbiAgICBcIm51bGxfZnJlZV9kZXZcIixcbiAgICBcIm51bGxiX2RldmljZV9zdWJtaXRfcXVldWVzX3N0b3JlXCIsXG4gICAgXCJudWxsYl9kZXZpY2VfcG9sbF9xdWV1ZXNfc3RvcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyByYWNlIGNvbmRpdGlvbnMgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgaW4gdGhlIG51bGxfYmxrIGRyaXZlciBieSBhZGRpbmcgbXV0ZXggbG9ja3MgYXJvdW5kIGNvbmZpZ2ZzIGF0dHJpYnV0ZSBhY2Nlc3NlcyBhbmQgcmVqZWN0aW5nIHF1ZXVlIHVwZGF0ZXMgZm9yIHNoYXJlZCB0YWcgc2V0cy4gSXQgYWxzbyBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIHRlYXJkb3duIG9yZGVyLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBkcml2ZXIncyBjb25maWd1cmF0aW9uIGFuZCBsaWZlY3ljbGUgbWFuYWdlbWVudCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzFlMTQ4NmIzM2U0ZTcyNWY5ZWE1N2U4OTQ1MmJlNmE2YzgzNmQ4MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDEwIDA0OjAwOjE1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuaW5kZXggZjhjMGZkNTdlMDQxYTguLmU4MjliNTAyOTgxYjNlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbisrKyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5AQCAtNjYsNyArNjYsNyBAQCBzdHJ1Y3QgbnVsbGJfcGFnZSB7XG4gI2RlZmluZSBOVUxMQl9QQUdFX0ZSRUUgKE1BUF9TWiAtIDIpXG4gXG4gc3RhdGljIExJU1RfSEVBRChudWxsYl9saXN0KTtcbi1zdGF0aWMgc3RydWN0IG11dGV4IGxvY2s7XG4rc3RhdGljIERFRklORV9NVVRFWChsb2NrKTtcbiBzdGF0aWMgaW50IG51bGxfbWFqb3I7XG4gc3RhdGljIERFRklORV9JREEobnVsbGJfaW5kZXhlcyk7XG4gc3RhdGljIHN0cnVjdCBibGtfbXFfdGFnX3NldCB0YWdfc2V0O1xuQEAgLTM0NSw4ICszNDUsMTQgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsXG4gc3RhdGljIHNzaXplX3RcdFx0XHRcdFx0XHRcdFx0XFxcbiBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNoYXIgKnBhZ2UpXHRcXFxuIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuLVx0cmV0dXJuIG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3Nob3coXHRcdFx0XHRcXFxuK1x0c3NpemVfdCByZXQ7XHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1x0XHRcdFx0XHRcdFxcXG4rXHRyZXQgPSBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zaG93KFx0XHRcdFx0XFxcbiBcdFx0XHRcdHRvX251bGxiX2RldmljZShpdGVtKS1cdTAwM2VOQU1FLCBwYWdlKTtcdFxcXG4rXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XHRcdFx0XHRcdFx0XFxcbitcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0cmV0dXJuIHJldDtcdFx0XHRcdFx0XHRcdFxcXG4gfVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gc3RhdGljIHNzaXplX3RcdFx0XHRcdFx0XHRcdFx0XFxcbiBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjb25zdCBjaGFyICpwYWdlLFx0XFxcbkBAIC0zNjAsMTMgKzM2NiwxNyBAQCBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjb25zdCBjaGFyICpwYWdlLFx0XFxcbiBcdHJldCA9IG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3N0b3JlKFx1MDAyNm5ld192YWx1ZSwgcGFnZSwgY291bnQpO1xcXG4gXHRpZiAocmV0IFx1MDAzYyAwKVx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0cmV0dXJuIHJldDtcdFx0XHRcdFx0XHRcXFxuK1x0cmV0ID0gMDtcdFx0XHRcdFx0XHRcdFxcXG4rXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1x0XHRcdFx0XHRcdFxcXG4gXHRpZiAoYXBwbHlfZm4pXHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRyZXQgPSBhcHBseV9mbihkZXYsIG5ld192YWx1ZSk7XHRcdFx0XHRcXFxuIFx0ZWxzZSBpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncykpIFx0XFxcbiBcdFx0cmV0ID0gLUVCVVNZO1x0XHRcdFx0XHRcdFxcXG4rXHRpZiAoIXJldClcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdGRldi1cdTAwM2VOQU1FID0gbmV3X3ZhbHVlO1x0XHRcdFx0XHRcXFxuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1x0XHRcdFx0XHRcdFxcXG4gXHRpZiAocmV0IFx1MDAzYyAwKVx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0cmV0dXJuIHJldDtcdFx0XHRcdFx0XHRcXFxuLVx0ZGV2LVx1MDAzZU5BTUUgPSBuZXdfdmFsdWU7XHRcdFx0XHRcdFx0XFxcbiBcdHJldHVybiBjb3VudDtcdFx0XHRcdFx0XHRcdFxcXG4gfVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gQ09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBOQU1FKTtcbkBAIC0zODIsNiArMzkyLDE1IEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4gXHRpZiAoIWRldi1cdTAwM2VudWxsYilcbiBcdFx0cmV0dXJuIDA7XG4gXG4rXHQvKlxuK1x0ICogQSBzaGFyZWQgdGFnX3NldCBpcyBtYXBwZWQgdmlhIHRoZSBtb2R1bGUtd2lkZSBxdWV1ZSBjb3VudHMsIHNvIGFcbitcdCAqIHBlci1kZXZpY2UgcmVzaXplIGlzIG1lYW5pbmdsZXNzLiBPbiBzaHJpbmsgaXQgd291bGQgYWxzbyBsZWF2ZVxuK1x0ICogbXFfbWFwW10gcG9pbnRpbmcgYXQgTlVMTGVkIGhjdHggc2xvdHMsIGNhdXNpbmcgYSBOVUxMIGRlcmVmIGluXG4rXHQgKiBibGtfbXFfbWFwX3N3cXVldWUoKS4gUmVqZWN0IGl0LlxuK1x0ICovXG4rXHRpZiAoZGV2LVx1MDAzZW51bGxiLVx1MDAzZXRhZ19zZXQgPT0gXHUwMDI2dGFnX3NldClcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4gXHQvKlxuIFx0ICogTWFrZSBzdXJlIGF0IGxlYXN0IG9uZSBzdWJtaXQgcXVldWUgZXhpc3RzLlxuIFx0ICovXG5AQCAtNDIxLDI1ICs0NDAsMTMgQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgc3VibWl0X3F1ZXVlcylcbiB7XG4tXHRpbnQgcmV0O1xuLVxuLVx0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbi1cdHJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtXHUwMDNlcG9sbF9xdWV1ZXMpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuLVxuLVx0cmV0dXJuIHJldDtcbitcdHJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LVx1MDAzZXBvbGxfcXVldWVzKTtcbiB9XG4gXG4gc3RhdGljIGludCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4gXHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgcG9sbF9xdWV1ZXMpXG4ge1xuLVx0aW50IHJldDtcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4tXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbi1cbi1cdHJldHVybiByZXQ7XG4rXHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi1cdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XG4gfVxuIFxuIE5VTExCX0RFVklDRV9BVFRSKHNpemUsIHVsb25nLCBOVUxMKTtcbkBAIC00NzgsNyArNDg1LDEzIEBAIE5VTExCX0RFVklDRV9BVFRSKGJhZGJsb2Nrc19wYXJ0aWFsX2lvLCBib29sLCBOVUxMKTtcbiBcbiBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNoYXIgKnBhZ2UpXG4ge1xuLVx0cmV0dXJuIG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyh0b19udWxsYl9kZXZpY2UoaXRlbSktXHUwMDNlcG93ZXIsIHBhZ2UpO1xuK1x0c3NpemVfdCByZXQ7XG4rXG4rXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuK1x0cmV0ID0gbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zaG93KHRvX251bGxiX2RldmljZShpdGVtKS1cdTAwM2Vwb3dlciwgcGFnZSk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4rXG4rXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuQEAgLTgzNiw3ICs4NDksNiBAQCBzdGF0aWMgdm9pZCBudWxsX2ZyZWVfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbiBcdGlmICghZGV2KVxuIFx0XHRyZXR1cm47XG4gXG4tXHRudWxsX2ZyZWVfem9uZWRfZGV2KGRldik7XG4gXHRiYWRibG9ja3NfZXhpdChcdTAwMjZkZXYtXHUwMDNlYmFkYmxvY2tzKTtcbiBcdGtmcmVlKGRldik7XG4gfVxuQEAgLTE3NzAsMTggKzE3ODIsMTkgQEAgc3RhdGljIHZvaWQgbnVsbF9kZWxfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXG4gXG4gXHRkZWxfZ2VuZGlzayhudWxsYi1cdTAwM2VkaXNrKTtcbiBcbi1cdGlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfVEhST1RUTEVELCBcdTAwMjZudWxsYi1cdTAwM2VkZXYtXHUwMDNlZmxhZ3MpKSB7XG4rXHRpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX1RIUk9UVExFRCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSkge1xuIFx0XHRocnRpbWVyX2NhbmNlbChcdTAwMjZudWxsYi1cdTAwM2Vid190aW1lcik7XG4gXHRcdGF0b21pY19sb25nX3NldChcdTAwMjZudWxsYi1cdTAwM2VjdXJfYnl0ZXMsIExPTkdfTUFYKTtcbiBcdFx0YmxrX21xX3N0YXJ0X3N0b3BwZWRfaHdfcXVldWVzKG51bGxiLVx1MDAzZXEsIHRydWUpO1xuIFx0fVxuIFxuIFx0cHV0X2Rpc2sobnVsbGItXHUwMDNlZGlzayk7XG4rXHRudWxsX2ZyZWVfem9uZWRfZGV2KGRldik7XG4gXHRpZiAobnVsbGItXHUwMDNldGFnX3NldCA9PSBcdTAwMjZudWxsYi1cdTAwM2VfX3RhZ19zZXQpXG4gXHRcdGJsa19tcV9mcmVlX3RhZ19zZXQobnVsbGItXHUwMDNldGFnX3NldCk7XG4gXHRrZnJlZShudWxsYi1cdTAwM2VxdWV1ZXMpO1xuIFx0aWYgKG51bGxfY2FjaGVfYWN0aXZlKG51bGxiKSlcbi1cdFx0bnVsbF9mcmVlX2RldmljZV9zdG9yYWdlKG51bGxiLVx1MDAzZWRldiwgdHJ1ZSk7XG4rXHRcdG51bGxfZnJlZV9kZXZpY2Vfc3RvcmFnZShkZXYsIHRydWUpO1xuIFx0a2ZyZWUobnVsbGIpO1xuIFx0ZGV2LVx1MDAzZW51bGxiID0gTlVMTDtcbiB9XG5AQCAtMjE2MiwxNyArMjE3NSw5IEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxuIFx0Y29uZmlnX2dyb3VwX2luaXQoXHUwMDI2bnVsbGJfc3Vic3lzLnN1X2dyb3VwKTtcbiBcdG11dGV4X2luaXQoXHUwMDI2bnVsbGJfc3Vic3lzLnN1X211dGV4KTtcbiBcbi1cdHJldCA9IGNvbmZpZ2ZzX3JlZ2lzdGVyX3N1YnN5c3RlbShcdTAwMjZudWxsYl9zdWJzeXMpO1xuLVx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbi1cbi1cdG11dGV4X2luaXQoXHUwMDI2bG9jayk7XG4tXG4gXHRudWxsX21ham9yID0gcmVnaXN0ZXJfYmxrZGV2KDAsIFwibnVsbGJcIik7XG4tXHRpZiAobnVsbF9tYWpvciBcdTAwM2MgMCkge1xuLVx0XHRyZXQgPSBudWxsX21ham9yO1xuLVx0XHRnb3RvIGVycl9jb25mO1xuLVx0fVxuK1x0aWYgKG51bGxfbWFqb3IgXHUwMDNjIDApXG4rXHRcdHJldHVybiBudWxsX21ham9yO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfZGV2aWNlczsgaSsrKSB7XG4gXHRcdHJldCA9IG51bGxfY3JlYXRlX2RldigpO1xuQEAgLTIxODAsNiArMjE4NSwxMCBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcbiBcdFx0XHRnb3RvIGVycl9kZXY7XG4gXHR9XG4gXG4rXHRyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2bnVsbGJfc3Vic3lzKTtcbitcdGlmIChyZXQpXG4rXHRcdGdvdG8gZXJyX2RldjtcbitcbiBcdHByX2luZm8oXCJtb2R1bGUgbG9hZGVkXFxuXCIpO1xuIFx0cmV0dXJuIDA7XG4gXG5AQCAtMjE4OSw4ICsyMTk4LDggQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXG4gXHRcdG51bGxfZGVzdHJveV9kZXYobnVsbGIpO1xuIFx0fVxuIFx0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXCJudWxsYlwiKTtcbi1lcnJfY29uZjpcbi1cdGNvbmZpZ2ZzX3VucmVnaXN0ZXJfc3Vic3lzdGVtKFx1MDAyNm51bGxiX3N1YnN5cyk7XG4rXHRpZiAodGFnX3NldC5vcHMpXG4rXHRcdGJsa19tcV9mcmVlX3RhZ19zZXQoXHUwMDI2dGFnX3NldCk7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbkBAIC0yMjAwLDggKzIyMDksNiBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbnVsbF9leGl0KHZvaWQpXG4gXG4gXHRjb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbShcdTAwMjZudWxsYl9zdWJzeXMpO1xuIFxuLVx0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXCJudWxsYlwiKTtcbi1cbiBcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4gXHR3aGlsZSAoIWxpc3RfZW1wdHkoXHUwMDI2bnVsbGJfbGlzdCkpIHtcbiBcdFx0bnVsbGIgPSBsaXN0X2VudHJ5KG51bGxiX2xpc3QubmV4dCwgc3RydWN0IG51bGxiLCBsaXN0KTtcbkBAIC0yMjA5LDYgKzIyMTYsOCBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbnVsbF9leGl0KHZvaWQpXG4gXHR9XG4gXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4gXG4rXHR1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCBcIm51bGxiXCIpO1xuK1xuIFx0aWYgKHRhZ19zZXQub3BzKVxuIFx0XHRibGtfbXFfZnJlZV90YWdfc2V0KFx1MDAyNnRhZ19zZXQpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDQ6MDA6MTcuMDM3NjA3MDYzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjUyNzE2Njc2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBOdWxsIEJsb2NrIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIGRvd24gdGhpcyBgbnVsbF9ibGtgIGRyaXZlciBwYXRjaC4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBpcyBhIGZvY3VzZWQgZWZmb3J0IHRvIHRpZ2h0ZW4gdXAgdGhlIGRyaXZlcidzIHRocmVhZCBzYWZldHkgYW5kIGZpeCBzb21lIGNyaXRpY2FsIGJ1Z3MuXG5cbkZpcnN0bHksIHRoZSBjaGFuZ2UgZnJvbSBgc3RhdGljIHN0cnVjdCBtdXRleCBsb2NrO2AgdG8gYHN0YXRpYyBERUZJTkVfTVVURVgobG9jayk7YCBhbmQgdGhlIHJlbW92YWwgb2YgdGhlIGV4cGxpY2l0IGBtdXRleF9pbml0KClgIGNhbGwgaXMgcHJldHR5IHN0YW5kYXJkLiBJdCdzIGEgY2xlYW5lciBpbml0aWFsaXphdGlvbiBtZXRob2QgYW5kIHJlZHVjZXMgdGhlIGNoYW5jZXMgb2YgZXJyb3JzLiBUaGVuLCB3cmFwcGluZyB0aGUgYG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3Nob3dgIGFuZCBgbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc3RvcmVgIGZ1bmN0aW9ucyB3aXRoIGBtdXRleF9sb2NrYCBhbmQgYG11dGV4X3VubG9ja2AgY2FsbHMgaXMgYSBjbGVhciBpbmRpY2F0aW9uIG9mIGEgcmFjZSBjb25kaXRpb24gZml4IHdpdGhpbiB0aGUgY29uZmlnZnMgbWFjcm9zLiBUaGlzIGlzIGdvb2QgdG8gc2VlIGFzIGNvbmZpZ2ZzIGNhbiBiZSB0cmlja3kgdG8gbWFuYWdlIGNvbmN1cnJlbmN5IGluLlxuXG5UaGUgcmVqZWN0aW9uIG9mIHF1ZXVlIHVwZGF0ZXMgaWYgdGhlIHRhZyBzZXQgaXMgc2hhcmVkIGluIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCBpcyBhbHNvIHNtYXJ0LiBUaGlzIHN1Z2dlc3RzIHRoZXkndmUgaWRlbnRpZmllZCBhIHNwZWNpZmljIHNjZW5hcmlvIHdoZXJlIHNoYXJlZCB0YWcgc2V0cyB3ZXJlIGNhdXNpbmcgaXNzdWVzLiBSZW1vdmluZyB0aGUgbXV0ZXggbG9ja3MgZnJvbSBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AgYW5kIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AgaW4gdGhlIG1hY3JvcyBtYWtlcyBzZW5zZSBzaW5jZSB0aGUgY2FsbGVyIG5vdyBoYW5kbGVzIHRoZSBsb2NraW5nLiBJdCdzIGEgbG9naWNhbCBzaW1wbGlmaWNhdGlvbiBiYXNlZCBvbiB0aGUgcHJldmlvdXMgY2hhbmdlcy4gVGhlIGFkZGl0aW9uIG9mIHRoZSBsb2NrIGFyb3VuZCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3dgIGNvbXBsZXRlcyB0aGUgbXV0ZXggaW1wbGVtZW50YXRpb24uXG5cblRoZSBtb3ZlIG9mIGBudWxsX2ZyZWVfem9uZWRfZGV2KGRldilgIGZyb20gYG51bGxfZnJlZV9kZXZgIHRvIGBudWxsX2RlbF9kZXZgIGFuZCB0aGUgcmVvcmRlcmluZyBvZiBgY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtYCBhbmQgYHJlZ2lzdGVyX2Jsa2RldmAgKGFuZCB0aGVpciB1bnJlZ2lzdGVyIGNvdW50ZXJwYXJ0cykgYXJlIGhvdXNla2VlcGluZyBjaGFuZ2VzIGJ1dCBjYW4gYmUgc2lnbmlmaWNhbnQuIFRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24gc2VxdWVuY2UgY2FuIGJlIGNvbXBsZXgsIGFuZCB0aGVzZSBjaGFuZ2VzIGNvdWxkIGJlIGFpbWVkIGF0IGFkZHJlc3NpbmcgcmFjZSBjb25kaXRpb25zIG9yIGVuc3VyaW5nIHJlc291cmNlcyBhcmUgcHJvcGVybHkgbWFuYWdlZCBpbiBhIHNwZWNpZmljIG9yZGVyLlxuXG5HaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2VzIOKAkyBtdXRleGVzLCBwb2ludGVyIGRlcmVmZXJlbmNlcywgcmVvcmRlcmluZyBvZiBpbml0L2V4aXQgc3RlcHMg4oCTIEknbSB0aGlua2luZyB0aGlzIGlzIHByb2JhYmx5IGEgZ29vZCBjYW5kaWRhdGUgZm9yIHNvbWUgcmlnb3JvdXMgZnV6emluZy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gbWFrZSBzdXJlIGBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS2AgaXMgZW5hYmxlZC4gSXQncyB0aW1lIHRvIGZpcmUgdXAgYGdyZXBwZXJgIGFuZCBzZWUgd2hhdCB0aGUgYnVpbGQgY29uZmlnIHNheXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMzksIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNDowMDoyMy41NjQ3NzU5NDRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEwMTUwMjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJMS19ERVZfTlVMTF9CTEtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9NYWtlZmlsZT0zNT1vYmotJChDT05GSUdfQkxLX0RFVl9STkJEKVxcdCs9IHJuYmQvXFxuZHJpdmVycy9ibG9jay9NYWtlZmlsZS0zNi1cXG5kcml2ZXJzL2Jsb2NrL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19CTEtfREVWX05VTExfQkxLKVxcdCs9IG51bGxfYmxrL1xcbmRyaXZlcnMvYmxvY2svTWFrZWZpbGUtMzgtb2JqLSQoQ09ORklHX0JMS19ERVZfUlVTVF9OVUxMKSArPSBybnVsbC9cXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy01LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzo2OmNvbmZpZyBCTEtfREVWX05VTExfQkxLXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIk51bGwgdGVzdCBibG9jayBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctOS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6MTA6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTExLVxcdGJvb2wgXFxcIlN1cHBvcnQgZmF1bHQgaW5qZWN0aW9uIGZvciBOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzoxMjpcXHRkZXBlbmRzIG9uIEJMS19ERVZfTlVMTF9CTEsgXFx1MDAyNlxcdTAwMjYgRkFVTFRfSU5KRUNUSU9OX0NPTkZJR0ZTXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL01ha2VmaWxlPTQ9Y2NmbGFncy15XFx0XFx0XFx0Kz0gLUkkKHNyYylcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL01ha2VmaWxlLTUtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19CTEtfREVWX05VTExfQkxLKVxcdCs9IG51bGxfYmxrLm9cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL01ha2VmaWxlLTctbnVsbF9ibGstb2Jqc1xcdFxcdFxcdDo9IG1haW4ub1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjEtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjI6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIzLXN0YXRpYyBERUNMQVJFX0ZBVUxUX0FUVFIobnVsbF90aW1lb3V0X2F0dHIpO1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9OTg9TU9EVUxFX1BBUk1fREVTQyhob21lX25vZGUsIFxcXCJIb21lIG5vZGUgZm9yIHRoZSBkZXZpY2VcXFwiKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy05OS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxMDA6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEwMS0vKlxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NjYyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgY29uZmlnX2l0ZW1fdHlwZSBudWxsYl9kZXZpY2VfdHlwZSA9IHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTY2Ny1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo2Njg6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTY2OS1cXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTc5MD1zdGF0aWMgc3RydWN0IG51bGxiX2RldmljZSAqbnVsbF9hbGxvY19kZXYodm9pZClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTc5Ny1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo3OTg6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTc5OS1cXHRkZXYtXFx1MDAzZXRpbWVvdXRfY29uZmlnLmF0dHIgPSBudWxsX3RpbWVvdXRfYXR0cjtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE0OTY9c3RhdGljIHZvaWQgbnVsbGJfc2V0dXBfYnd0aW1lcihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTUwNC1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNTA1OiNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTA2LVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTg5OD1zdGF0aWMgaW50IG51bGxfdmFsaWRhdGVfY29uZihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTQwLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE5NDE6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE5NDItc3RhdGljIGJvb2wgX19udWxsX3NldHVwX2ZhdWx0KHN0cnVjdCBmYXVsdF9hdHRyICphdHRyLCBjaGFyICpzdHIpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xOTU1PXN0YXRpYyBib29sIG51bGxfc2V0dXBfZmF1bHQodm9pZClcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTU2LXtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxOTU3OiNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTU4LVxcdGlmICghX19udWxsX3NldHVwX2ZhdWx0KFxcdTAwMjZudWxsX3RpbWVvdXRfYXR0ciwgZ190aW1lb3V0X3N0cikpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmg9NTM9c3RydWN0IG51bGxiX2RldmljZSB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmgtNTUtXFx0c3RydWN0IGNvbmZpZ19ncm91cCBncm91cDtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmg6NTY6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC01Ny1cXHRzdHJ1Y3QgZmF1bHRfY29uZmlnIHRpbWVvdXRfY29uZmlnO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNDowMDoyMy44NzQ5MzM1MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMDUxNDY3NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGZvciB0aGUgbnVsbCBibG9jayBkZXZpY2UgZHJpdmVyLiBUaGUgY3J1Y2lhbCBjb25maWcgb3B0aW9uLCBhcyBJIHNlZSBpdCwgaXMgYEJMS19ERVZfTlVMTF9CTEtgLiBUaGF0J3Mgd2hlcmUgaXQgYWxsIHN0YXJ0cy5cblxuTG9va2luZyBhdCB0aGUgY29kZSBjaGFuZ2VzLCBpdCBhcHBlYXJzIHRoZSBwYXRjaCB0b3VjaGVzIHNldmVyYWwgZnVuY3Rpb25zOiBgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc2AsIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCwgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYCwgYG51bGxfZnJlZV9kZXZgLCBgbnVsbF9kZWxfZGV2YCwgYW5kIHRoZW4gdGhlIG1vZHVsZSBpbml0aWFsaXphdGlvbiBhbmQgZXhpdCBmdW5jdGlvbnMgYG51bGxfaW5pdGAgYW5kIGBudWxsX2V4aXRgLiBUaGUgcGF0Y2ggYWxzbyB0b3VjaGVzIHRoZSBjb25maWdmcyBtYWNyb3MgbGlrZSBgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3Nob3dgIGFuZCBgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlYC5cblxuQWxyaWdodCwgSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIGludGVyZXN0aW5nIGJpdHMgZm9yIGZ1enppbmcuIGBudWxsX2luaXRgIGFuZCBgbnVsbF9leGl0YCBhcmUgbW9kdWxlIGxpZmVjeWNsZSBmdW5jdGlvbnMsIG5vdCB0aGUgYmVzdCBmb3IgZnV6emluZyBkaXJlY3RseSwgYWx0aG91Z2ggdGhleSBzZXQgdXAgdGhlIGVudmlyb25tZW50LlxuXG5UaGUgY29uZmlnZnMgc3RvcmUvc2hvdyBmdW5jdGlvbnMgc2VlbSB0byBiZSBnZW5lcmF0ZWQgYnkgbWFjcm9zLCBwYXJ0aWN1bGFybHkgYENPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgTkFNRSk7YCBpbiBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNgLiBUaG9zZSBtYWNyb3MgYXJlIGdvaW5nIHRvIGdlbmVyYXRlIGZ1bmN0aW9ucywgc3VjaCBhcyBgbnVsbGJfZGV2aWNlX3N1Ym1pdF9xdWV1ZXNfc3RvcmVgLlxuXG5MZXQncyBmb2N1cyBvbiB0aGUga2V5IGZ1bmN0aW9ucyBtb2RpZmllZCB0byBzZWUgd2hhdCB0aGUgY2hhbmdlcyBpbXBseSBhYm91dCB0aGUgZnVuY3Rpb25hbGl0eS4gV2UgbmVlZCB0byBsb29rIGNsb3NlbHkgYXQgYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgLCBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AsIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AsIGBudWxsX2RlbF9kZXZgLCBhbmQgYG51bGxfZnJlZV9kZXZgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlc2Ugd2lsbCBiZWhhdmUgdW5kZXIgdmFyaW91cyBpbnB1dHMuIFRoYXQncyB3aGVyZSB0aGUgaW50ZXJlc3RpbmcgZnV6emluZyB0YXJnZXRzIGxpZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE5NSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNDowMDoyOC45ODAwODI5MDdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2OTczMjEyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdGU19BVFRSXFxcXChudWxsYl9kZXZpY2VfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTM1OD1udWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjb25zdCBjaGFyICpwYWdlLFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTM4MS19XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjM4MjpDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIE5BTUUpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTM4My1cXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTQ5Nz1zdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTM1LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjUzNjpDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIHBvd2VyKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MzctXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz01NDU9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2JhZGJsb2Nrc19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01ODgtfVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjU4OTpDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIGJhZGJsb2Nrcyk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTkwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNDowMDozMC4wNDk4MjE0MTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjE3NDUzODcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNYWNybydzIElubmVyIFdvcmtpbmdzKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzLiBCZWZvcmUgSSBldmVuIGNvbnNpZGVyIHBvdGVudGlhbCBvcHRpbWl6YXRpb25zIG9yIGFsdGVybmF0aXZlIGFwcHJvYWNoZXMsIEknbSBnb2luZyB0byBkcmlsbCBkb3duIHRvIHRoZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9jay4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGRpc3NlY3RpbmcgdGhlIG1hY3JvIGRlZmluaXRpb24gaXRzZWxmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZXhwYW5zaW9uLCB0aGUgbnVhbmNlcyBvZiBhbnkgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgaXQgZW1wbG95cywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgYnJvYWRlciBjb2RlIGNvbnRleHQuIElzIHRoZXJlIGFueSByb29tIGZvciBhbWJpZ3VpdHk/IFBvdGVudGlhbCBzaWRlIGVmZmVjdHMgSSdtIG92ZXJsb29raW5nPyBUaGlzIGluaXRpYWwgY2hlY2sgaXMgY3J1Y2lhbDsgSSBjYW4ndCBidWlsZCBhIHJvYnVzdCB1bmRlcnN0YW5kaW5nIHdpdGhvdXQgYSBzb2xpZCBncmFzcCBvZiBpdHMgYmFzaWMgbWVjaGFuaWNzLiBUaW1lIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzIG9mIHRoZSBtYWNybyBkZWZpbml0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjE4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNDowMDozNC4yNjcyNzc1NzJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk0MTQ2ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTlVMTEJfREVWSUNFX0FUVFJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MzI5PXN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9ib29sX2F0dHJfc3RvcmUoYm9vbCAqdmFsLCBjb25zdCBjaGFyICpwYWdlLFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzQzLS8qIFRoZSBmb2xsb3dpbmcgbWFjcm8gc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoIFRZUEUgPSB7dWludCwgdWxvbmcsIGJvb2x9LiAqL1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjM0NDojZGVmaW5lIE5VTExCX0RFVklDRV9BVFRSKE5BTUUsIFRZUEUsIEFQUExZKVxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zNDUtc3RhdGljIHNzaXplX3RcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00NDY9c3RhdGljIGludCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00NTEtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDUyOk5VTExCX0RFVklDRV9BVFRSKHNpemUsIHVsb25nLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTM6TlVMTEJfREVWSUNFX0FUVFIoY29tcGxldGlvbl9uc2VjLCB1bG9uZywgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDU0Ok5VTExCX0RFVklDRV9BVFRSKHN1Ym1pdF9xdWV1ZXMsIHVpbnQsIG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1NTpOVUxMQl9ERVZJQ0VfQVRUUihwb2xsX3F1ZXVlcywgdWludCwgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1NjpOVUxMQl9ERVZJQ0VfQVRUUihob21lX25vZGUsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1NzpOVUxMQl9ERVZJQ0VfQVRUUihxdWV1ZV9tb2RlLCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTg6TlVMTEJfREVWSUNFX0FUVFIoYmxvY2tzaXplLCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTk6TlVMTEJfREVWSUNFX0FUVFIobWF4X3NlY3RvcnMsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2MDpOVUxMQl9ERVZJQ0VfQVRUUihpcnFtb2RlLCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjE6TlVMTEJfREVWSUNFX0FUVFIoaHdfcXVldWVfZGVwdGgsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2MjpOVUxMQl9ERVZJQ0VfQVRUUihpbmRleCwgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDYzOk5VTExCX0RFVklDRV9BVFRSKGJsb2NraW5nLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjQ6TlVMTEJfREVWSUNFX0FUVFIodXNlX3Blcl9ub2RlX2hjdHgsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2NTpOVUxMQl9ERVZJQ0VfQVRUUihtZW1vcnlfYmFja2VkLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjY6TlVMTEJfREVWSUNFX0FUVFIoZGlzY2FyZCwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY3Ok5VTExCX0RFVklDRV9BVFRSKG1icHMsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2ODpOVUxMQl9ERVZJQ0VfQVRUUihjYWNoZV9zaXplLCB1bG9uZywgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY5Ok5VTExCX0RFVklDRV9BVFRSKHpvbmVkLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzA6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9zaXplLCB1bG9uZywgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDcxOk5VTExCX0RFVklDRV9BVFRSKHpvbmVfY2FwYWNpdHksIHVsb25nLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzI6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9ucl9jb252LCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzM6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9tYXhfb3BlbiwgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc0Ok5VTExCX0RFVklDRV9BVFRSKHpvbmVfbWF4X2FjdGl2ZSwgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc1Ok5VTExCX0RFVklDRV9BVFRSKHpvbmVfYXBwZW5kX21heF9zZWN0b3JzLCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzY6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9mdWxsLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Nzc6TlVMTEJfREVWSUNFX0FUVFIodmlydF9ib3VuZGFyeSwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc4Ok5VTExCX0RFVklDRV9BVFRSKG5vX3NjaGVkLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Nzk6TlVMTEJfREVWSUNFX0FUVFIoc2hhcmVkX3RhZ3MsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ4MDpOVUxMQl9ERVZJQ0VfQVRUUihzaGFyZWRfdGFnX2JpdG1hcCwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDgxOk5VTExCX0RFVklDRV9BVFRSKGZ1YSwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDgyOk5VTExCX0RFVklDRV9BVFRSKHJvdGF0aW9uYWwsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ4MzpOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3Nfb25jZSwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDg0Ok5VTExCX0RFVklDRV9BVFRSKGJhZGJsb2Nrc19wYXJ0aWFsX2lvLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00ODUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA0OjAwOjM0LjM0NjY5Nzk5OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg5OTc2NDkyNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCdzIEltcGFjdCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBmb2N1cyBpcyBkcmF3biB0byB0aGUgZnVuY3Rpb25zIGl0IHRvdWNoZXMuIEkgc2VlIGl0J3MgZGVhbGluZyB3aXRoIGEgbnVtYmVyIG9mIGBudWxsYl9kZXZpY2VfKmAgZnVuY3Rpb25zLiBTcGVjaWZpY2FsbHksIGBudWxsYl9kZXZpY2Vfc3VibWl0X3F1ZXVlc19zdG9yZWAsIGBudWxsYl9kZXZpY2VfcG9sbF9xdWV1ZXNfc3RvcmVgLCBhbmQgdGhlIHBvd2VyLXJlbGF0ZWQgb25lczogYG51bGxiX2RldmljZV9wb3dlcl9zaG93YCBhbmQgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGV4YWN0bHkgd2hpY2ggb25lcyBhcmUgKmFjdHVhbGx5KiBtb2RpZmllZC5cblxuSW5pdGlhbGx5LCBJIHNlZSBgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3dgIGlzIGRlZmluaXRlbHkgY2hhbmdlZCDigJMgdGhlIG11dGV4IGxvY2sgYW5kIHVubG9jayB3ZXJlIGFkZGVkLCBJIHNlZSB0aGF0IHJpZ2h0IGF3YXkgaW4gdGhlIGRpZmYuIEhvd2V2ZXIsIEnigJltIGdldHRpbmcgYSBiaXQgY29uZnVzZWQgYWJvdXQgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAuIEkgKnRob3VnaHQqIGl0IHdhcyBtb2RpZmllZCwgYnV0IHRoZSBkaWZmIGlzbid0IHNob3dpbmcgYW55IGNoYW5nZXMgdGhlcmUuIExldCBtZSBkb3VibGUtY2hlY2vigKYgTm8sIHRoZSBkaWZmIGRvZXNu4oCZdCBzaG93IGEgbW9kaWZpY2F0aW9uLiBPa2F5LCB0aGUgZGlmZiBqdXN0IHNob3dzIHRoZSBjb250ZXh0LCBhbmQgaXQncyBub3QgYWN0dWFsbHkgY2hhbmdlZCBpbiB0aGUgZGlmZi4gR290IGl0LlxuXG5Ob3csIHRob3NlIGBudWxsYl9kZXZpY2Vfc3VibWl0X3F1ZXVlc19zdG9yZWAgYW5kIGBudWxsYl9kZXZpY2VfcG9sbF9xdWV1ZXNfc3RvcmVgIGZ1bmN0aW9ucyBhcmUgZ2VuZXJhdGVkLCBhcmVuJ3QgdGhleT8gSSBzaG91bGQgY2hlY2sgdGhlbSwgYXMgdGhleSBhcmUga2V5IHRvIHF1ZXVlIG1hbmFnZW1lbnQuIEl0IGxvb2tzIGxpa2UgdGhleSBhcmUsIGluZGVlZCwgYW5kIGFyZSB0aHVzIGFsc28gbW9kaWZpZWQgYnkgdGhlIHBhdGNoIHZpYSB0aGUgbWFjcm8uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBncmFzcCB0aGUgaW1wbGljYXRpb25zIG9mIHRob3NlIGdlbmVyYXRlZCBmdW5jdGlvbnMuXG5cbkluIHRlcm1zIG9mIGZ1enppbmcgdGFyZ2V0cywgd2hpbGUgc3l6a2FsbGVyICpjYW4qIGZ1enogZ2VuZXJhdGVkIGZ1bmN0aW9ucywgSSBtaWdodCBiZSBiZXR0ZXIgb2ZmIHNwZWNpZnlpbmcgdGhlIGNyaXRpY2FsIG9uZXMgZGlyZWN0bHkuIEZyb20gd2hhdCBJ4oCZbSBzZWVpbmcsIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCwgYG51bGxfZGVsX2RldmAsIGBudWxsX2ZyZWVfZGV2YCwgYW5kIG9mIGNvdXJzZSBgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3dgIHNlZW0gbGlrZSBnb29kIHN0YXJ0aW5nIHBvaW50cy4gSSBtaWdodCBhbHNvIGNvbnNpZGVyIGFkZGluZyBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AgYW5kIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AuXG5cblVsdGltYXRlbHksIEkgbmVlZCB0byBtYWtlICphYnNvbHV0ZWx5KiBzdXJlIHRoYXQgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgaXNu4oCZdCBtb2RpZmllZC4gSeKAmWxsIGdvIGJhY2sgYW5kIGNvbmZpcm0gdGhhdCBhZ2Fpbi4gSSBkb27igJl0IHdhbnQgdG8gbWlzcyBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODczNywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNDowMDo0My4zNDQzNDk4MzFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNDk2MjEyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NDg2PXN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ5Ni1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0OTc6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00OTgtXFx0XFx0XFx0XFx0ICAgICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA0OjAwOjQzLjY2OTMxODMxNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTczODgxMDMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIFJlY2VudCBLZXJuZWwgQ2hhbmdlcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIGRvd24gdGhpcyBkaWZmLiBNeSBwcmltYXJ5IGNvbmNlcm4gaGVyZSBpcyB1bmRlcnN0YW5kaW5nIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgY2hhbmdlcywgcGFydGljdWxhcmx5IGhvdyB0aGV5IGFmZmVjdCB0aGUgdmlydHVhbCBibG9jayBkZXZpY2UsIGBudWxsYmAuIEl0J3MgcHJldHR5IGNsZWFyIHRoYXQgYG51bGxiX2RldmljZV9wb3dlcl9zaG93YCBpcyB0aGUgY2VudHJhbCBmdW5jdGlvbiBiZWluZyBtb2RpZmllZC4gVGhlIGludHJvZHVjdGlvbiBvZiB0aGUgYG11dGV4X2xvY2tgIGFuZCBgbXV0ZXhfdW5sb2NrYCBjYWxscyBhcm91bmQgdGhlIGBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3Nob3dgIGluZGljYXRlcyBhIGNoYW5nZSBpbiBob3cgdGhpcyBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQsIGxpa2VseSBmb3IgdGhyZWFkIHNhZmV0eS4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gbm90ZSBhbmQgcG90ZW50aWFsbHkgc2lnbmlmaWNhbnQuXG5cbkJleW9uZCB0aGF0LCBJJ20gdGFraW5nIGEgYnJvYWRlciBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IGFuZCByZWxhdGVkIHN5bWJvbHMgdG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZS4gSSdtIGZvY3VzaW5nIG9uIHRoZXNlIGZ1bmN0aW9ucyBhbmQgdGhlaXIgcmVsYXRpb25zaGlwczogYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgLCBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AsIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AsIGBudWxsX2RlbF9kZXZgLCBhbmQgYG51bGxfZnJlZV9kZXZgLCBiZWNhdXNlIHRoZXkgYXJlIGNsZWFybHkgY2VudHJhbCB0byB0aGUgZGV2aWNlJ3MgbGlmZWN5Y2xlIGFuZCBjb25maWd1cmF0aW9uLlxuXG5JIG5lZWQgdG8gcXVpY2tseSBjb25maXJtIHRoYXQgYG51bGxiX2RldmljZV9zdWJtaXRfcXVldWVzX3N0b3JlYCBpcyBhIHZhbGlkIHN5bWJvbC4gT2theSwgbG9va3MgbGlrZSBpdCdzIGdlbmVyYXRlZCBieSB0aGUgYE5VTExCX0RFVklDRV9BVFRSYCBtYWNybywgd2hpY2ggaXMgbmljZSBhbmQgY29udmVuaWVudC4gSSdtIGFsc28gZ29pbmcgdG8gYWRkIGBudWxsYl9kZXZpY2VfcG9sbF9xdWV1ZXNfc3RvcmVgIHRvIHRoZSBsaXN0IG9mIGltcG9ydGFudCBmdW5jdGlvbnMgdG8gY29uc2lkZXIsIGFzIGl0J3MgZ2VuZXJhdGVkIGJ5IHNpbWlsYXIgbWVhbnMuIFRoZSBgQ09ORklHRlNfQVRUUmAgbWFjcm9zIGFyZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBwaWN0dXJlIGhlcmUuIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayBob3cgdGhlc2UgbWFjcm9zIGFjdHVhbGx5IGV4cGFuZCwgYXMgSSdtIHRoaW5raW5nIHRoZXkgbWlnaHQgZ2VuZXJhdGUgc29tZXRoaW5nIGxpa2UgYG51bGxiX2RldmljZV9hdHRyX3N1Ym1pdF9xdWV1ZXNgIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGUgZXhhY3QgbmFtZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDE1LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA0OjAwOjUwLjI0MzIwMTY3N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgwMDA0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVmaW5lIENPTkZJR0ZTX0FUVFJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9jb25maWdmcy5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvY29uZmlnZnMuaD0xMTU9c3RydWN0IGNvbmZpZ2ZzX2F0dHJpYnV0ZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmgtMTIyLVxcbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaDoxMjM6I2RlZmluZSBDT05GSUdGU19BVFRSX1BFUk0oX3BmeCwgX25hbWUsIF9wZXJtKVxcdFxcdFxcXFxcXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmgtMTI0LXN0YXRpYyBzdHJ1Y3QgY29uZmlnZnNfYXR0cmlidXRlIF9wZngjI2F0dHJfIyNfbmFtZSA9IHtcXHRcXFxcXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmgtMTMxLVxcbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaDoxMzI6I2RlZmluZSBDT05GSUdGU19BVFRSKF9wZngsIF9uYW1lKSBDT05GSUdGU19BVFRSX1BFUk0oXFx0XFxcXFxcbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaC0xMzMtXFx0XFx0X3BmeCwgX25hbWUsIFNfSVJVR08gfCBTX0lXVVNSXFx0XFx0XFxcXFxcbi0tXFxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oLTEzNS1cXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmg6MTM2OiNkZWZpbmUgQ09ORklHRlNfQVRUUl9STyhfcGZ4LCBfbmFtZSlcXHRcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oLTEzNy1zdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX2F0dHJpYnV0ZSBfcGZ4IyNhdHRyXyMjX25hbWUgPSB7XFx0XFxcXFxcbi0tXFxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oLTE0My1cXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmg6MTQ0OiNkZWZpbmUgQ09ORklHRlNfQVRUUl9XTyhfcGZ4LCBfbmFtZSlcXHRcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oLTE0NS1zdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX2F0dHJpYnV0ZSBfcGZ4IyNhdHRyXyMjX25hbWUgPSB7XFx0XFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNDowMDo1MC4zMDEyMDgxMjdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA3NjA2MTU0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgTnVsbCBCbG9jayBEZXZpY2UgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCB0aGUgYENPTkZJR0ZTX0FUVFJgIG1hY3JvLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGBudWxsYl9kZXZpY2VfYCBhdHRyaWJ1dGVzLCBpcyBnZW5lcmF0aW5nIGEgYHN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGVgIG5hbWVkIGBudWxsYl9kZXZpY2VfYXR0cl9OQU1FYC4gVGhhdCdzIGdvb2QuIEFuZCB0aGUgYXNzb2NpYXRlZCBzaG93IGFuZCBzdG9yZSBmdW5jdGlvbnMgYXJlIGJlaW5nIGRlZmluZWQgYXMgYG51bGxiX2RldmljZV8jI05BTUUjI19zaG93YCBhbmQgYG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZWAsIHdoaWNoIG1lYW5zIEknbSBjb3JyZWN0IGluIGV4cGVjdGluZyB0byBzZWUgYG51bGxiX2RldmljZV9zdWJtaXRfcXVldWVzX3N0b3JlYCBhbmQgYG51bGxiX2RldmljZV9wb2xsX3F1ZXVlc19zdG9yZWAuIEV4Y2VsbGVudCwgSSdsbCBkZWZpbml0ZWx5IGFkZCB0aG9zZSB0d28gZnVuY3Rpb25zIHRvIG15IGZvY3VzIHN5bWJvbHMuXG5cbk5vdywgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBvdmVyYWxsIGNvbmZpZ3VyYXRpb24uIEkga25vdyBgQ09ORklHX0JMS19ERVZfTlVMTF9CTEtgIGlzIHRoZSBjb3JlLCB0aGUgbWFpbiBjb25maWcgb3B0aW9uLiBJIGhhdmUgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzIHRob3VnaC4gSSBhbHNvIGtub3cgdGhhdCBgQ09ORklHX0NPTkZJR0ZTX0ZTYCBpcyByZXF1aXJlZCBmb3IgdGhlIGNvbmZpZ2ZzIHNldHVwLCBidXQgdGhlcmUncyBhIHRob3VnaHQuLi4gdGhlIGBCTEtfREVWX05VTExfQkxLYCBLY29uZmlnIGVudHJ5IGRvZXNuJ3Qgc3RyaWN0bHkgZGVwZW5kIG9uIGl0LiBUaGF0J3MgYSBwb2ludCBvZiBwb3RlbnRpYWwgY29uY2Vybi4gSSBzaG91bGQgcmVhbGx5IGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgaW4gYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZ2AgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIG9mIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJlbGF0aW9uc2hpcHMgaGVyZS4gSSBuZWVkIHRvIGJlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBmdWxsIGNvbmZpZ3VyYXRpb24gcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyNDQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDQ6MDA6NTUuMzc3MjcyNjU5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjk1NDAzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJMS19ERVZfTlVMTF9CTEtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy01LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzo2OmNvbmZpZyBCTEtfREVWX05VTExfQkxLXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIk51bGwgdGVzdCBibG9jayBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctOS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6MTA6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTExLVxcdGJvb2wgXFxcIlN1cHBvcnQgZmF1bHQgaW5qZWN0aW9uIGZvciBOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNDowMDo1NS42MDY4MTY5NjlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgzNjM4MjM0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSBLY29uZmlnKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gRmlyc3Qgb3JkZXIgb2YgYnVzaW5lc3M6ICpLY29uZmlnKiDigJMgdGhlIGhlYXJ0IG9mIHRoZSBjb25maWd1cmF0aW9uIHByb2Nlc3MgZm9yIHRoZSBudWxsIGJsb2NrIGRyaXZlci4gSSBuZWVkIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBob3cgaXQncyBwcmVzZW50ZWQgaW4gdGhpcyBjb250ZXh0LiBTcGVjaWZpY2FsbHksIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWdgLiBJJ2xsIGJlIG1ldGljdWxvdXNseSBpbnNwZWN0aW5nIHRoaXMgZmlsZSB0byBncmFzcCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGF2YWlsYWJsZSwgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGhvc2Ugb3B0aW9ucywgYW5kIGFueSBpbXBsaWNhdGlvbnMgdGhleSBtaWdodCBoYXZlIG9uIHRoZSBvdmVyYWxsIGRyaXZlcidzIGZ1bmN0aW9uYWxpdHkuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgd2hhdCBpcyBjb250cm9sbGFibGUgYW5kIGNvbmZpZ3VyYWJsZSB3aXRoaW4gdGhlIGRyaXZlciB0aHJvdWdoIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIGFuZCBob3cgdGhvc2UgY29uZmlndXJhdGlvbiBvcHRpb25zIHNoYXBlIGl0cyBiZWhhdmlvci4gRm9yIGV4YW1wbGUsIGFyZSB0aGVyZSBhbnkgcGVyZm9ybWFuY2UgdHJhZGUtb2ZmcyB0aGF0IGNhbiBiZSBtYWRlIGR1cmluZyBidWlsZCB0aW1lPyBJIHdpbGwgYWxzbyBldmFsdWF0ZSB3aGV0aGVyIHRoZSBjb25maWd1cmF0aW9ucyBhcmUgcHJlc2VudGVkIGluIGEgd2F5IHRoYXQgaXMgZWFzeSB0byB1bmRlcnN0YW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTk1MywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA0OjAxOjAwLjQ0MzIwMjU3MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mjc5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTnVsbCBibG9jayBkZXZpY2UgZHJpdmVyIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcbiAgIDg6XFx0XFx0c2VsZWN0IENPTkZJR0ZTX0ZTXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbiAgMTE6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBmYXVsdCBpbmplY3Rpb24gZm9yIE51bGwgdGVzdCBibG9jayBkcml2ZXJcXFwiXFxuICAxMjpcXHRcXHRkZXBlbmRzIG9uIEJMS19ERVZfTlVMTF9CTEsgXFx1MDAyNlxcdTAwMjYgRkFVTFRfSU5KRUNUSU9OX0NPTkZJR0ZTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA0OjAxOjAwLjQ0MzkzNjA3MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTg2NjY3MTc5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBDb25maWd1cmF0aW9uIGFuZCBMaWZlY3ljbGUgQ2hhbmdlcyBpbiBgbnVsbF9ibGtgIERyaXZlcioqXG5cbk9rYXksIHNvIEkndmUgemVyb2VkIGluIG9uIHRoZSBgbnVsbF9ibGtgIGRyaXZlci4gVGhlIGluaXRpYWwgY2x1ZSB3YXMgdGhlIHNlbGVjdGlvbiBvZiBgQ09ORklHRlNfRlNgLCB3aGljaCBpbXBsaWVzIGEgZm9jdXMgb24gY29uZmlnZnMgYXR0cmlidXRlcy4gRnJvbSB0aGVyZSwgSSBzZWUgdGhhdCB0aGUgcGF0Y2gncyBjb3JlIGlzIGFkZGluZyBtdXRleCBsb2NrcywgYWRkcmVzc2luZyByYWNlIGNvbmRpdGlvbnMsIGFuZCBoYW5kbGluZyBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyB3aXRoaW4gdGhlIGRyaXZlci4gSXQgbG9va3MgbGlrZSBpdCBhbHNvIHJlamVjdHMgcXVldWUgdXBkYXRlcyBmb3Igc2hhcmVkIHRhZyBzZXRzLiBUaGlzIHN1Z2dlc3RzIGNoYW5nZXMgaW4gaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBjb25jdXJyZW50IGFjY2VzcyB0byBpdHMgY29uZmlndXJhdGlvbiBhbmQgc3RhdGUuIFRoaXMgc2hvdWxkIGJlIGZ1enplZCBoZWF2aWx5LlxuXG5JJ3ZlIGlkZW50aWZpZWQga2V5IGZ1bmN0aW9ucyBhbmQgYXR0cmlidXRlcyB0aGF0IGFyZSBkaXJlY3RseSBpbXBhY3RlZC4gSGVyZSdzIHdoYXQgSSd2ZSBkaXN0aWxsZWQ6XG5cbiogICAqKkNvcmUgRnVuY3Rpb25zIFx1MDAyNiBMaWZlY3ljbGU6KipcbiAgICAqICAgYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgXG4gICAgKiAgIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYFxuICAgICogICBgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNgXG4gICAgKiAgIGBudWxsYl9kZXZpY2VfcG93ZXJfc2hvd2BcbiAgICAqICAgYG51bGxfZGVsX2RldmBcbiAgICAqICAgYG51bGxfZnJlZV9kZXZgXG4qICAgKipNYWNyby1HZW5lcmF0ZWQgRnVuY3Rpb25zOioqXG4gICAgKiAgIGBudWxsYl9kZXZpY2Vfc3VibWl0X3F1ZXVlc19zdG9yZWBcbiAgICAqICAgYG51bGxiX2RldmljZV9wb2xsX3F1ZXVlc19zdG9yZWBcblxuV2hpbGUgdGhlIG1hY3JvIGdlbmVyYXRlcyBtdWx0aXBsZSBmdW5jdGlvbnMsIHRoZSBrZXkgcG9pbnQgaXMgdGhhdCB0aGUgdW5kZXJseWluZyBhcHBseSBmdW5jdGlvbnMgKGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCwgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYCkgYXJlIGRpcmVjdGx5IGludm9sdmVkLCBzbyBJIGluY2x1ZGUgdGhlbSBhcyB3ZWxsLiBUaGUgbG9ja2luZyBjaGFuZ2UgYWZmZWN0cyBhbGwgbWFjcm8tZ2VuZXJhdGVkIGF0dHJpYnV0ZXMsIGJ1dCB0aGUgYF9zdG9yZWAgZnVuY3Rpb25zIGFyZSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcgYmVjYXVzZSB0aGV5IGludm9sdmUgdGhlIGBhcHBseV9mbmAgbG9naWMuIEl0J3MgdGhlIGBhcHBseV9mbmAgdGhhdCBpcyBhZmZlY3RlZCBieSB0aGUgbG9ja2luZy5cblxuSSBtYWRlIHN1cmUgSSBoYXZlIHRoZSBDT05GSUdzOlxuKiBgQkxLX0RFVl9OVUxMX0JMS2BcblxuTXkgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogVGhlIHBhdGNoJ3MgZnVuY3Rpb25hbCBjaGFuZ2VzIGludm9sdmUgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGxpZmVjeWNsZSBtYW5hZ2VtZW50IG9mIHRoZSBkcml2ZXIuIEFkZGluZyBtdXRleGVzLCBoYW5kbGluZyBzaGFyZWQgdGFnIHNldHMsIGFuZCByZW9yZGVyaW5nIGluaXRpYWxpemF0aW9uL3RlYXJkb3duIHBvaW50IGRpcmVjdGx5IHRvIHRoZXNlIGFyZWFzLiBJdCBpcyB0aGVyZWZvcmUgY3JpdGljYWwgdG8gZnV6eiB0aGUgZnVuY3Rpb25zIGxpc3RlZC5cblxuSSdtIG5vdyBzYXRpc2ZpZWQgd2l0aCB0aGlzIGFuYWx5c2lzLCBhbmQgYW0gcmVhZHkgdG8gcGFzcyB0aGlzIHRvIHRoZSBmdXp6ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzU3LCJPdXRwdXRUb2tlbnMiOjE5NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNDowMToxMi4zMTA2MTA5OThaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjkxODMyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OVUxMX0JMS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNcIixcbiAgICBcIm51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNcIixcbiAgICBcIm51bGxiX2FwcGx5X3BvbGxfcXVldWVzXCIsXG4gICAgXCJudWxsYl9kZXZpY2VfcG93ZXJfc2hvd1wiLFxuICAgIFwibnVsbF9kZWxfZGV2XCIsXG4gICAgXCJudWxsX2ZyZWVfZGV2XCIsXG4gICAgXCJudWxsYl9kZXZpY2Vfc3VibWl0X3F1ZXVlc19zdG9yZVwiLFxuICAgIFwibnVsbGJfZGV2aWNlX3BvbGxfcXVldWVzX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgcmFjZSBjb25kaXRpb25zIGFuZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGluIHRoZSBudWxsX2JsayBkcml2ZXIgYnkgYWRkaW5nIG11dGV4IGxvY2tzIGFyb3VuZCBjb25maWdmcyBhdHRyaWJ1dGUgYWNjZXNzZXMgYW5kIHJlamVjdGluZyBxdWV1ZSB1cGRhdGVzIGZvciBzaGFyZWQgdGFnIHNldHMuIEl0IGFsc28gbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93biBvcmRlci4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZHJpdmVyJ3MgY29uZmlndXJhdGlvbiBhbmQgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfTlVMTF9CTEtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzXCIsXG4gICAgXCJudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzXCIsXG4gICAgXCJudWxsYl9hcHBseV9wb2xsX3F1ZXVlc1wiLFxuICAgIFwibnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3dcIixcbiAgICBcIm51bGxfZGVsX2RldlwiLFxuICAgIFwibnVsbF9mcmVlX2RldlwiLFxuICAgIFwibnVsbGJfZGV2aWNlX3N1Ym1pdF9xdWV1ZXNfc3RvcmVcIixcbiAgICBcIm51bGxiX2RldmljZV9wb2xsX3F1ZXVlc19zdG9yZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHJhY2UgY29uZGl0aW9ucyBhbmQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyIGJ5IGFkZGluZyBtdXRleCBsb2NrcyBhcm91bmQgY29uZmlnZnMgYXR0cmlidXRlIGFjY2Vzc2VzIGFuZCByZWplY3RpbmcgcXVldWUgdXBkYXRlcyBmb3Igc2hhcmVkIHRhZyBzZXRzLiBJdCBhbHNvIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24gb3JkZXIuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGRyaXZlcidzIGNvbmZpZ3VyYXRpb24gYW5kIGxpZmVjeWNsZSBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowx8zv5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-10 03:38:23 +0000 UTC FinishedAt: 2026-07-10 04:01:14 +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": "a635d6748234582ea287c5ffeae28b9b23f91c7e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "a635d6748234582ea287c5ffeae28b9b23f91c7e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK" ], "series_id": "806d3df5-a9a0-4d96-b2c2-7b2fc9d17479" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "nullb_update_nr_hw_queues", "nullb_apply_submit_queues", "nullb_apply_poll_queues", "nullb_device_power_show", "null_del_dev", "null_free_dev", "nullb_device_submit_queues_store", "nullb_device_poll_queues_store" ], "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+CgkJCTx0ZD4yMDI2LzA3LzEwIDA0OjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3cmIzM0OywKICAgICYjMzQ7bnVsbF9kZWxfZGV2JiMzNDssCiAgICAmIzM0O251bGxfZnJlZV9kZXYmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3N1Ym1pdF9xdWV1ZXNfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3BvbGxfcXVldWVzX3N0b3JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHJhY2UgY29uZGl0aW9ucyBhbmQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyIGJ5IGFkZGluZyBtdXRleCBsb2NrcyBhcm91bmQgY29uZmlnZnMgYXR0cmlidXRlIGFjY2Vzc2VzIGFuZCByZWplY3RpbmcgcXVldWUgdXBkYXRlcyBmb3Igc2hhcmVkIHRhZyBzZXRzLiBJdCBhbHNvIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24gb3JkZXIuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGRyaXZlciYjMzk7cyBjb25maWd1cmF0aW9uIGFuZCBsaWZlY3ljbGUgbWFuYWdlbWVudCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDQ6MDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjMWUxNDg2YjMzZTRlNzI1ZjllYTU3ZTg5NDUyYmU2YTZjODM2ZDgwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTAgMDQ6MDA6MTUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuaW5kZXggZjhjMGZkNTdlMDQxYTguLmU4MjliNTAyOTgxYjNlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5AQCAtNjYsNyAmIzQzOzY2LDcgQEAgc3RydWN0IG51bGxiX3BhZ2Uge1xuICNkZWZpbmUgTlVMTEJfUEFHRV9GUkVFIChNQVBfU1ogLSAyKVxuIFxuIHN0YXRpYyBMSVNUX0hFQUQobnVsbGJfbGlzdCk7XG4tc3RhdGljIHN0cnVjdCBtdXRleCBsb2NrO1xuJiM0MztzdGF0aWMgREVGSU5FX01VVEVYKGxvY2spO1xuIHN0YXRpYyBpbnQgbnVsbF9tYWpvcjtcbiBzdGF0aWMgREVGSU5FX0lEQShudWxsYl9pbmRleGVzKTtcbiBzdGF0aWMgc3RydWN0IGJsa19tcV90YWdfc2V0IHRhZ19zZXQ7XG5AQCAtMzQ1LDggJiM0MzszNDUsMTQgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsXG4gc3RhdGljIHNzaXplX3RcdFx0XHRcdFx0XHRcdFx0XFxcbiBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNoYXIgKnBhZ2UpXHRcXFxuIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuLVx0cmV0dXJuIG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3Nob3coXHRcdFx0XHRcXFxuJiM0MztcdHNzaXplX3QgcmV0O1x0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0cmV0ID0gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc2hvdyhcdFx0XHRcdFxcXG4gXHRcdFx0XHR0b19udWxsYl9kZXZpY2UoaXRlbSktXHUwMDNlTkFNRSwgcGFnZSk7XHRcXFxuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiM0MztcdHJldHVybiByZXQ7XHRcdFx0XHRcdFx0XHRcXFxuIH1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuIHN0YXRpYyBzc2l6ZV90XHRcdFx0XHRcdFx0XHRcdFxcXG4gbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcdFxcXG5AQCAtMzYwLDEzICYjNDM7MzY2LDE3IEBAIG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNvbnN0IGNoYXIgKnBhZ2UsXHRcXFxuIFx0cmV0ID0gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc3RvcmUoXHUwMDI2bmV3X3ZhbHVlLCBwYWdlLCBjb3VudCk7XFxcbiBcdGlmIChyZXQgXHUwMDNjIDApXHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRyZXR1cm4gcmV0O1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0cmV0ID0gMDtcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcdFx0XHRcdFx0XHRcXFxuIFx0aWYgKGFwcGx5X2ZuKVx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0cmV0ID0gYXBwbHlfZm4oZGV2LCBuZXdfdmFsdWUpO1x0XHRcdFx0XFxcbiBcdGVsc2UgaWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpKSBcdFxcXG4gXHRcdHJldCA9IC1FQlVTWTtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGlmICghcmV0KVx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRcdGRldi1cdTAwM2VOQU1FID0gbmV3X3ZhbHVlO1x0XHRcdFx0XHRcXFxuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcdFx0XHRcdFx0XHRcXFxuIFx0aWYgKHJldCBcdTAwM2MgMClcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdHJldHVybiByZXQ7XHRcdFx0XHRcdFx0XFxcbi1cdGRldi1cdTAwM2VOQU1FID0gbmV3X3ZhbHVlO1x0XHRcdFx0XHRcdFxcXG4gXHRyZXR1cm4gY291bnQ7XHRcdFx0XHRcdFx0XHRcXFxuIH1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuIENPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgTkFNRSk7XG5AQCAtMzgyLDYgJiM0MzszOTIsMTUgQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBcdGlmICghZGV2LVx1MDAzZW51bGxiKVxuIFx0XHRyZXR1cm4gMDtcbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEEgc2hhcmVkIHRhZ19zZXQgaXMgbWFwcGVkIHZpYSB0aGUgbW9kdWxlLXdpZGUgcXVldWUgY291bnRzLCBzbyBhXG4mIzQzO1x0ICogcGVyLWRldmljZSByZXNpemUgaXMgbWVhbmluZ2xlc3MuIE9uIHNocmluayBpdCB3b3VsZCBhbHNvIGxlYXZlXG4mIzQzO1x0ICogbXFfbWFwW10gcG9pbnRpbmcgYXQgTlVMTGVkIGhjdHggc2xvdHMsIGNhdXNpbmcgYSBOVUxMIGRlcmVmIGluXG4mIzQzO1x0ICogYmxrX21xX21hcF9zd3F1ZXVlKCkuIFJlamVjdCBpdC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoZGV2LVx1MDAzZW51bGxiLVx1MDAzZXRhZ19zZXQgPT0gXHUwMDI2dGFnX3NldClcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcbiBcdC8qXG4gXHQgKiBNYWtlIHN1cmUgYXQgbGVhc3Qgb25lIHN1Ym1pdCBxdWV1ZSBleGlzdHMuXG4gXHQgKi9cbkBAIC00MjEsMjUgJiM0Mzs0NDAsMTMgQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgc3VibWl0X3F1ZXVlcylcbiB7XG4tXHRpbnQgcmV0O1xuLVxuLVx0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbi1cdHJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtXHUwMDNlcG9sbF9xdWV1ZXMpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuLVxuLVx0cmV0dXJuIHJldDtcbiYjNDM7XHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi1cdTAwM2Vwb2xsX3F1ZXVlcyk7XG4gfVxuIFxuIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICAgdW5zaWduZWQgaW50IHBvbGxfcXVldWVzKVxuIHtcbi1cdGludCByZXQ7XG4tXG4tXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuLVx0cmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi1cdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4tXG4tXHRyZXR1cm4gcmV0O1xuJiM0MztcdHJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTtcbiB9XG4gXG4gTlVMTEJfREVWSUNFX0FUVFIoc2l6ZSwgdWxvbmcsIE5VTEwpO1xuQEAgLTQ3OCw3ICYjNDM7NDg1LDEzIEBAIE5VTExCX0RFVklDRV9BVFRSKGJhZGJsb2Nrc19wYXJ0aWFsX2lvLCBib29sLCBOVUxMKTtcbiBcbiBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNoYXIgKnBhZ2UpXG4ge1xuLVx0cmV0dXJuIG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyh0b19udWxsYl9kZXZpY2UoaXRlbSktXHUwMDNlcG93ZXIsIHBhZ2UpO1xuJiM0MztcdHNzaXplX3QgcmV0O1xuJiM0MztcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuJiM0MztcdHJldCA9IG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyh0b19udWxsYl9kZXZpY2UoaXRlbSktXHUwMDNlcG93ZXIsIHBhZ2UpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbkBAIC04MzYsNyAmIzQzOzg0OSw2IEBAIHN0YXRpYyB2b2lkIG51bGxfZnJlZV9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxuIFx0aWYgKCFkZXYpXG4gXHRcdHJldHVybjtcbiBcbi1cdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcbiBcdGJhZGJsb2Nrc19leGl0KFx1MDAyNmRldi1cdTAwM2ViYWRibG9ja3MpO1xuIFx0a2ZyZWUoZGV2KTtcbiB9XG5AQCAtMTc3MCwxOCAmIzQzOzE3ODIsMTkgQEAgc3RhdGljIHZvaWQgbnVsbF9kZWxfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXG4gXG4gXHRkZWxfZ2VuZGlzayhudWxsYi1cdTAwM2VkaXNrKTtcbiBcbi1cdGlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfVEhST1RUTEVELCBcdTAwMjZudWxsYi1cdTAwM2VkZXYtXHUwMDNlZmxhZ3MpKSB7XG4mIzQzO1x0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncykpIHtcbiBcdFx0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2bnVsbGItXHUwMDNlYndfdGltZXIpO1xuIFx0XHRhdG9taWNfbG9uZ19zZXQoXHUwMDI2bnVsbGItXHUwMDNlY3VyX2J5dGVzLCBMT05HX01BWCk7XG4gXHRcdGJsa19tcV9zdGFydF9zdG9wcGVkX2h3X3F1ZXVlcyhudWxsYi1cdTAwM2VxLCB0cnVlKTtcbiBcdH1cbiBcbiBcdHB1dF9kaXNrKG51bGxiLVx1MDAzZWRpc2spO1xuJiM0MztcdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcbiBcdGlmIChudWxsYi1cdTAwM2V0YWdfc2V0ID09IFx1MDAyNm51bGxiLVx1MDAzZV9fdGFnX3NldClcbiBcdFx0YmxrX21xX2ZyZWVfdGFnX3NldChudWxsYi1cdTAwM2V0YWdfc2V0KTtcbiBcdGtmcmVlKG51bGxiLVx1MDAzZXF1ZXVlcyk7XG4gXHRpZiAobnVsbF9jYWNoZV9hY3RpdmUobnVsbGIpKVxuLVx0XHRudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2UobnVsbGItXHUwMDNlZGV2LCB0cnVlKTtcbiYjNDM7XHRcdG51bGxfZnJlZV9kZXZpY2Vfc3RvcmFnZShkZXYsIHRydWUpO1xuIFx0a2ZyZWUobnVsbGIpO1xuIFx0ZGV2LVx1MDAzZW51bGxiID0gTlVMTDtcbiB9XG5AQCAtMjE2MiwxNyAmIzQzOzIxNzUsOSBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcbiBcdGNvbmZpZ19ncm91cF9pbml0KFx1MDAyNm51bGxiX3N1YnN5cy5zdV9ncm91cCk7XG4gXHRtdXRleF9pbml0KFx1MDAyNm51bGxiX3N1YnN5cy5zdV9tdXRleCk7XG4gXG4tXHRyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2bnVsbGJfc3Vic3lzKTtcbi1cdGlmIChyZXQpXG4tXHRcdHJldHVybiByZXQ7XG4tXG4tXHRtdXRleF9pbml0KFx1MDAyNmxvY2spO1xuLVxuIFx0bnVsbF9tYWpvciA9IHJlZ2lzdGVyX2Jsa2RldigwLCBcJiMzNDtudWxsYlwmIzM0Oyk7XG4tXHRpZiAobnVsbF9tYWpvciBcdTAwM2MgMCkge1xuLVx0XHRyZXQgPSBudWxsX21ham9yO1xuLVx0XHRnb3RvIGVycl9jb25mO1xuLVx0fVxuJiM0MztcdGlmIChudWxsX21ham9yIFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIG51bGxfbWFqb3I7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9kZXZpY2VzOyBpJiM0MzsmIzQzOykge1xuIFx0XHRyZXQgPSBudWxsX2NyZWF0ZV9kZXYoKTtcbkBAIC0yMTgwLDYgJiM0MzsyMTg1LDEwIEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxuIFx0XHRcdGdvdG8gZXJyX2RldjtcbiBcdH1cbiBcbiYjNDM7XHRyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2bnVsbGJfc3Vic3lzKTtcbiYjNDM7XHRpZiAocmV0KVxuJiM0MztcdFx0Z290byBlcnJfZGV2O1xuJiM0MztcbiBcdHByX2luZm8oXCYjMzQ7bW9kdWxlIGxvYWRlZFxcblwmIzM0Oyk7XG4gXHRyZXR1cm4gMDtcbiBcbkBAIC0yMTg5LDggJiM0MzsyMTk4LDggQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXG4gXHRcdG51bGxfZGVzdHJveV9kZXYobnVsbGIpO1xuIFx0fVxuIFx0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXCYjMzQ7bnVsbGJcJiMzNDspO1xuLWVycl9jb25mOlxuLVx0Y29uZmlnZnNfdW5yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2bnVsbGJfc3Vic3lzKTtcbiYjNDM7XHRpZiAodGFnX3NldC5vcHMpXG4mIzQzO1x0XHRibGtfbXFfZnJlZV90YWdfc2V0KFx1MDAyNnRhZ19zZXQpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG5AQCAtMjIwMCw4ICYjNDM7MjIwOSw2IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZClcbiBcbiBcdGNvbmZpZ2ZzX3VucmVnaXN0ZXJfc3Vic3lzdGVtKFx1MDAyNm51bGxiX3N1YnN5cyk7XG4gXG4tXHR1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCBcJiMzNDtudWxsYlwmIzM0Oyk7XG4tXG4gXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuIFx0d2hpbGUgKCFsaXN0X2VtcHR5KFx1MDAyNm51bGxiX2xpc3QpKSB7XG4gXHRcdG51bGxiID0gbGlzdF9lbnRyeShudWxsYl9saXN0Lm5leHQsIHN0cnVjdCBudWxsYiwgbGlzdCk7XG5AQCAtMjIwOSw2ICYjNDM7MjIxNiw4IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZClcbiBcdH1cbiBcdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbiBcbiYjNDM7XHR1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCBcJiMzNDtudWxsYlwmIzM0Oyk7XG4mIzQzO1xuIFx0aWYgKHRhZ19zZXQub3BzKVxuIFx0XHRibGtfbXFfZnJlZV90YWdfc2V0KFx1MDAyNnRhZ19zZXQpO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA0OjAwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzJiMzNDssCiAgICAmIzM0O251bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3cmIzM0OywKICAgICYjMzQ7bnVsbF9kZWxfZGV2JiMzNDssCiAgICAmIzM0O251bGxfZnJlZV9kZXYmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3N1Ym1pdF9xdWV1ZXNfc3RvcmUmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3BvbGxfcXVldWVzX3N0b3JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIHJhY2UgY29uZGl0aW9ucyBhbmQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyIGJ5IGFkZGluZyBtdXRleCBsb2NrcyBhcm91bmQgY29uZmlnZnMgYXR0cmlidXRlIGFjY2Vzc2VzIGFuZCByZWplY3RpbmcgcXVldWUgdXBkYXRlcyBmb3Igc2hhcmVkIHRhZyBzZXRzLiBJdCBhbHNvIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24gb3JkZXIuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGRyaXZlciYjMzk7cyBjb25maWd1cmF0aW9uIGFuZCBsaWZlY3ljbGUgbWFuYWdlbWVudCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGMxZTE0ODZiMzNlNGU3MjVmOWVhNTdlODk0NTJiZTZhNmM4MzZkODAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAxMCAwNDowMDoxNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKaW5kZXggZjhjMGZkNTdlMDQxYTguLmU4MjliNTAyOTgxYjNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYwpAQCAtNjYsNyAmIzQzOzY2LDcgQEAgc3RydWN0IG51bGxiX3BhZ2UgewogI2RlZmluZSBOVUxMQl9QQUdFX0ZSRUUgKE1BUF9TWiAtIDIpCiAKIHN0YXRpYyBMSVNUX0hFQUQobnVsbGJfbGlzdCk7Ci1zdGF0aWMgc3RydWN0IG11dGV4IGxvY2s7CiYjNDM7c3RhdGljIERFRklORV9NVVRFWChsb2NrKTsKIHN0YXRpYyBpbnQgbnVsbF9tYWpvcjsKIHN0YXRpYyBERUZJTkVfSURBKG51bGxiX2luZGV4ZXMpOwogc3RhdGljIHN0cnVjdCBibGtfbXFfdGFnX3NldCB0YWdfc2V0OwpAQCAtMzQ1LDggJiM0MzszNDUsMTQgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsCiBzdGF0aWMgc3NpemVfdAkJCQkJCQkJXAogbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKQlcCiB7CQkJCQkJCQkJXAotCXJldHVybiBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zaG93KAkJCQlcCiYjNDM7CXNzaXplX3QgcmV0OwkJCQkJCQlcCiYjNDM7CQkJCQkJCQkJXAomIzQzOwltdXRleF9sb2NrKCZhbXA7bG9jayk7CQkJCQkJXAomIzQzOwlyZXQgPSBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zaG93KAkJCQlcCiAJCQkJdG9fbnVsbGJfZGV2aWNlKGl0ZW0pLSZndDtOQU1FLCBwYWdlKTsJXAomIzQzOwltdXRleF91bmxvY2soJmFtcDtsb2NrKTsJCQkJCQlcCiYjNDM7CQkJCQkJCQkJXAomIzQzOwlyZXR1cm4gcmV0OwkJCQkJCQlcCiB9CQkJCQkJCQkJXAogc3RhdGljIHNzaXplX3QJCQkJCQkJCVwKIG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNvbnN0IGNoYXIgKnBhZ2UsCVwKQEAgLTM2MCwxMyAmIzQzOzM2NiwxNyBAQCBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjb25zdCBjaGFyICpwYWdlLAlcCiAJcmV0ID0gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc3RvcmUoJmFtcDtuZXdfdmFsdWUsIHBhZ2UsIGNvdW50KTtcCiAJaWYgKHJldCAmbHQ7IDApCQkJCQkJCVwKIAkJcmV0dXJuIHJldDsJCQkJCQlcCiYjNDM7CXJldCA9IDA7CQkJCQkJCVwKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2xvY2spOwkJCQkJCVwKIAlpZiAoYXBwbHlfZm4pCQkJCQkJCVwKIAkJcmV0ID0gYXBwbHlfZm4oZGV2LCBuZXdfdmFsdWUpOwkJCQlcCiAJZWxzZSBpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsICZhbXA7ZGV2LSZndDtmbGFncykpIAlcCiAJCXJldCA9IC1FQlVTWTsJCQkJCQlcCiYjNDM7CWlmICghcmV0KQkJCQkJCQlcCiYjNDM7CQlkZXYtJmd0O05BTUUgPSBuZXdfdmFsdWU7CQkJCQlcCiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2xvY2spOwkJCQkJCVwKIAlpZiAocmV0ICZsdDsgMCkJCQkJCQkJXAogCQlyZXR1cm4gcmV0OwkJCQkJCVwKLQlkZXYtJmd0O05BTUUgPSBuZXdfdmFsdWU7CQkJCQkJXAogCXJldHVybiBjb3VudDsJCQkJCQkJXAogfQkJCQkJCQkJCVwKIENPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgTkFNRSk7CkBAIC0zODIsNiAmIzQzOzM5MiwxNSBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LAogCWlmICghZGV2LSZndDtudWxsYikKIAkJcmV0dXJuIDA7CiAKJiM0MzsJLyoKJiM0MzsJICogQSBzaGFyZWQgdGFnX3NldCBpcyBtYXBwZWQgdmlhIHRoZSBtb2R1bGUtd2lkZSBxdWV1ZSBjb3VudHMsIHNvIGEKJiM0MzsJICogcGVyLWRldmljZSByZXNpemUgaXMgbWVhbmluZ2xlc3MuIE9uIHNocmluayBpdCB3b3VsZCBhbHNvIGxlYXZlCiYjNDM7CSAqIG1xX21hcFtdIHBvaW50aW5nIGF0IE5VTExlZCBoY3R4IHNsb3RzLCBjYXVzaW5nIGEgTlVMTCBkZXJlZiBpbgomIzQzOwkgKiBibGtfbXFfbWFwX3N3cXVldWUoKS4gUmVqZWN0IGl0LgomIzQzOwkgKi8KJiM0MzsJaWYgKGRldi0mZ3Q7bnVsbGItJmd0O3RhZ19zZXQgPT0gJmFtcDt0YWdfc2V0KQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJLyoKIAkgKiBNYWtlIHN1cmUgYXQgbGVhc3Qgb25lIHN1Ym1pdCBxdWV1ZSBleGlzdHMuCiAJICovCkBAIC00MjEsMjUgJiM0Mzs0NDAsMTMgQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldiwKIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsCiAJCQkJICAgICB1bnNpZ25lZCBpbnQgc3VibWl0X3F1ZXVlcykKIHsKLQlpbnQgcmV0OwotCi0JbXV0ZXhfbG9jaygmYW1wO2xvY2spOwotCXJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtJmd0O3BvbGxfcXVldWVzKTsKLQltdXRleF91bmxvY2soJmFtcDtsb2NrKTsKLQotCXJldHVybiByZXQ7CiYjNDM7CXJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LSZndDtwb2xsX3F1ZXVlcyk7CiB9CiAKIHN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LAogCQkJCSAgIHVuc2lnbmVkIGludCBwb2xsX3F1ZXVlcykKIHsKLQlpbnQgcmV0OwotCi0JbXV0ZXhfbG9jaygmYW1wO2xvY2spOwotCXJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtJmd0O3N1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTsKLQltdXRleF91bmxvY2soJmFtcDtsb2NrKTsKLQotCXJldHVybiByZXQ7CiYjNDM7CXJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LSZndDtzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7CiB9CiAKIE5VTExCX0RFVklDRV9BVFRSKHNpemUsIHVsb25nLCBOVUxMKTsKQEAgLTQ3OCw3ICYjNDM7NDg1LDEzIEBAIE5VTExCX0RFVklDRV9BVFRSKGJhZGJsb2Nrc19wYXJ0aWFsX2lvLCBib29sLCBOVUxMKTsKIAogc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKQogewotCXJldHVybiBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3Nob3codG9fbnVsbGJfZGV2aWNlKGl0ZW0pLSZndDtwb3dlciwgcGFnZSk7CiYjNDM7CXNzaXplX3QgcmV0OwomIzQzOwomIzQzOwltdXRleF9sb2NrKCZhbXA7bG9jayk7CiYjNDM7CXJldCA9IG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyh0b19udWxsYl9kZXZpY2UoaXRlbSktJmd0O3Bvd2VyLCBwYWdlKTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7bG9jayk7CiYjNDM7CiYjNDM7CXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sCkBAIC04MzYsNyAmIzQzOzg0OSw2IEBAIHN0YXRpYyB2b2lkIG51bGxfZnJlZV9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KQogCWlmICghZGV2KQogCQlyZXR1cm47CiAKLQludWxsX2ZyZWVfem9uZWRfZGV2KGRldik7CiAJYmFkYmxvY2tzX2V4aXQoJmFtcDtkZXYtJmd0O2JhZGJsb2Nrcyk7CiAJa2ZyZWUoZGV2KTsKIH0KQEAgLTE3NzAsMTggJiM0MzsxNzgyLDE5IEBAIHN0YXRpYyB2b2lkIG51bGxfZGVsX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKQogCiAJZGVsX2dlbmRpc2sobnVsbGItJmd0O2Rpc2spOwogCi0JaWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsICZhbXA7bnVsbGItJmd0O2Rldi0mZ3Q7ZmxhZ3MpKSB7CiYjNDM7CWlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfVEhST1RUTEVELCAmYW1wO2Rldi0mZ3Q7ZmxhZ3MpKSB7CiAJCWhydGltZXJfY2FuY2VsKCZhbXA7bnVsbGItJmd0O2J3X3RpbWVyKTsKIAkJYXRvbWljX2xvbmdfc2V0KCZhbXA7bnVsbGItJmd0O2N1cl9ieXRlcywgTE9OR19NQVgpOwogCQlibGtfbXFfc3RhcnRfc3RvcHBlZF9od19xdWV1ZXMobnVsbGItJmd0O3EsIHRydWUpOwogCX0KIAogCXB1dF9kaXNrKG51bGxiLSZndDtkaXNrKTsKJiM0MzsJbnVsbF9mcmVlX3pvbmVkX2RldihkZXYpOwogCWlmIChudWxsYi0mZ3Q7dGFnX3NldCA9PSAmYW1wO251bGxiLSZndDtfX3RhZ19zZXQpCiAJCWJsa19tcV9mcmVlX3RhZ19zZXQobnVsbGItJmd0O3RhZ19zZXQpOwogCWtmcmVlKG51bGxiLSZndDtxdWV1ZXMpOwogCWlmIChudWxsX2NhY2hlX2FjdGl2ZShudWxsYikpCi0JCW51bGxfZnJlZV9kZXZpY2Vfc3RvcmFnZShudWxsYi0mZ3Q7ZGV2LCB0cnVlKTsKJiM0MzsJCW51bGxfZnJlZV9kZXZpY2Vfc3RvcmFnZShkZXYsIHRydWUpOwogCWtmcmVlKG51bGxiKTsKIAlkZXYtJmd0O251bGxiID0gTlVMTDsKIH0KQEAgLTIxNjIsMTcgJiM0MzsyMTc1LDkgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpCiAJY29uZmlnX2dyb3VwX2luaXQoJmFtcDtudWxsYl9zdWJzeXMuc3VfZ3JvdXApOwogCW11dGV4X2luaXQoJmFtcDtudWxsYl9zdWJzeXMuc3VfbXV0ZXgpOwogCi0JcmV0ID0gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKCZhbXA7bnVsbGJfc3Vic3lzKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JbXV0ZXhfaW5pdCgmYW1wO2xvY2spOwotCiAJbnVsbF9tYWpvciA9IHJlZ2lzdGVyX2Jsa2RldigwLCAmIzM0O251bGxiJiMzNDspOwotCWlmIChudWxsX21ham9yICZsdDsgMCkgewotCQlyZXQgPSBudWxsX21ham9yOwotCQlnb3RvIGVycl9jb25mOwotCX0KJiM0MzsJaWYgKG51bGxfbWFqb3IgJmx0OyAwKQomIzQzOwkJcmV0dXJuIG51bGxfbWFqb3I7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgbnJfZGV2aWNlczsgaSYjNDM7JiM0MzspIHsKIAkJcmV0ID0gbnVsbF9jcmVhdGVfZGV2KCk7CkBAIC0yMTgwLDYgJiM0MzsyMTg1LDEwIEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKQogCQkJZ290byBlcnJfZGV2OwogCX0KIAomIzQzOwlyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oJmFtcDtudWxsYl9zdWJzeXMpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJZ290byBlcnJfZGV2OwomIzQzOwogCXByX2luZm8oJiMzNDttb2R1bGUgbG9hZGVkXG4mIzM0Oyk7CiAJcmV0dXJuIDA7CiAKQEAgLTIxODksOCAmIzQzOzIxOTgsOCBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZCkKIAkJbnVsbF9kZXN0cm95X2RldihudWxsYik7CiAJfQogCXVucmVnaXN0ZXJfYmxrZGV2KG51bGxfbWFqb3IsICYjMzQ7bnVsbGImIzM0Oyk7Ci1lcnJfY29uZjoKLQljb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbSgmYW1wO251bGxiX3N1YnN5cyk7CiYjNDM7CWlmICh0YWdfc2V0Lm9wcykKJiM0MzsJCWJsa19tcV9mcmVlX3RhZ19zZXQoJmFtcDt0YWdfc2V0KTsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0yMjAwLDggJiM0MzsyMjA5LDYgQEAgc3RhdGljIHZvaWQgX19leGl0IG51bGxfZXhpdCh2b2lkKQogCiAJY29uZmlnZnNfdW5yZWdpc3Rlcl9zdWJzeXN0ZW0oJmFtcDtudWxsYl9zdWJzeXMpOwogCi0JdW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgJiMzNDtudWxsYiYjMzQ7KTsKLQogCW11dGV4X2xvY2soJmFtcDtsb2NrKTsKIAl3aGlsZSAoIWxpc3RfZW1wdHkoJmFtcDtudWxsYl9saXN0KSkgewogCQludWxsYiA9IGxpc3RfZW50cnkobnVsbGJfbGlzdC5uZXh0LCBzdHJ1Y3QgbnVsbGIsIGxpc3QpOwpAQCAtMjIwOSw2ICYjNDM7MjIxNiw4IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZCkKIAl9CiAJbXV0ZXhfdW5sb2NrKCZhbXA7bG9jayk7CiAKJiM0MzsJdW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgJiMzNDtudWxsYiYjMzQ7KTsKJiM0MzsKIAlpZiAodGFnX3NldC5vcHMpCiAJCWJsa19tcV9mcmVlX3RhZ19zZXQoJmFtcDt0YWdfc2V0KTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDM5CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE51bGwgQmxvY2sgRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayBkb3duIHRoaXMgYG51bGxfYmxrYCBkcml2ZXIgcGF0Y2guIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoaXMgaXMgYSBmb2N1c2VkIGVmZm9ydCB0byB0aWdodGVuIHVwIHRoZSBkcml2ZXImIzM5O3MgdGhyZWFkIHNhZmV0eSBhbmQgZml4IHNvbWUgY3JpdGljYWwgYnVncy4KCkZpcnN0bHksIHRoZSBjaGFuZ2UgZnJvbSBgc3RhdGljIHN0cnVjdCBtdXRleCBsb2NrO2AgdG8gYHN0YXRpYyBERUZJTkVfTVVURVgobG9jayk7YCBhbmQgdGhlIHJlbW92YWwgb2YgdGhlIGV4cGxpY2l0IGBtdXRleF9pbml0KClgIGNhbGwgaXMgcHJldHR5IHN0YW5kYXJkLiBJdCYjMzk7cyBhIGNsZWFuZXIgaW5pdGlhbGl6YXRpb24gbWV0aG9kIGFuZCByZWR1Y2VzIHRoZSBjaGFuY2VzIG9mIGVycm9ycy4gVGhlbiwgd3JhcHBpbmcgdGhlIGBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zaG93YCBhbmQgYG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3N0b3JlYCBmdW5jdGlvbnMgd2l0aCBgbXV0ZXhfbG9ja2AgYW5kIGBtdXRleF91bmxvY2tgIGNhbGxzIGlzIGEgY2xlYXIgaW5kaWNhdGlvbiBvZiBhIHJhY2UgY29uZGl0aW9uIGZpeCB3aXRoaW4gdGhlIGNvbmZpZ2ZzIG1hY3Jvcy4gVGhpcyBpcyBnb29kIHRvIHNlZSBhcyBjb25maWdmcyBjYW4gYmUgdHJpY2t5IHRvIG1hbmFnZSBjb25jdXJyZW5jeSBpbi4KClRoZSByZWplY3Rpb24gb2YgcXVldWUgdXBkYXRlcyBpZiB0aGUgdGFnIHNldCBpcyBzaGFyZWQgaW4gYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgIGlzIGFsc28gc21hcnQuIFRoaXMgc3VnZ2VzdHMgdGhleSYjMzk7dmUgaWRlbnRpZmllZCBhIHNwZWNpZmljIHNjZW5hcmlvIHdoZXJlIHNoYXJlZCB0YWcgc2V0cyB3ZXJlIGNhdXNpbmcgaXNzdWVzLiBSZW1vdmluZyB0aGUgbXV0ZXggbG9ja3MgZnJvbSBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AgYW5kIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AgaW4gdGhlIG1hY3JvcyBtYWtlcyBzZW5zZSBzaW5jZSB0aGUgY2FsbGVyIG5vdyBoYW5kbGVzIHRoZSBsb2NraW5nLiBJdCYjMzk7cyBhIGxvZ2ljYWwgc2ltcGxpZmljYXRpb24gYmFzZWQgb24gdGhlIHByZXZpb3VzIGNoYW5nZXMuIFRoZSBhZGRpdGlvbiBvZiB0aGUgbG9jayBhcm91bmQgYG51bGxiX2RldmljZV9wb3dlcl9zaG93YCBjb21wbGV0ZXMgdGhlIG11dGV4IGltcGxlbWVudGF0aW9uLgoKVGhlIG1vdmUgb2YgYG51bGxfZnJlZV96b25lZF9kZXYoZGV2KWAgZnJvbSBgbnVsbF9mcmVlX2RldmAgdG8gYG51bGxfZGVsX2RldmAgYW5kIHRoZSByZW9yZGVyaW5nIG9mIGBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW1gIGFuZCBgcmVnaXN0ZXJfYmxrZGV2YCAoYW5kIHRoZWlyIHVucmVnaXN0ZXIgY291bnRlcnBhcnRzKSBhcmUgaG91c2VrZWVwaW5nIGNoYW5nZXMgYnV0IGNhbiBiZSBzaWduaWZpY2FudC4gVGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24gc2VxdWVuY2UgY2FuIGJlIGNvbXBsZXgsIGFuZCB0aGVzZSBjaGFuZ2VzIGNvdWxkIGJlIGFpbWVkIGF0IGFkZHJlc3NpbmcgcmFjZSBjb25kaXRpb25zIG9yIGVuc3VyaW5nIHJlc291cmNlcyBhcmUgcHJvcGVybHkgbWFuYWdlZCBpbiBhIHNwZWNpZmljIG9yZGVyLgoKR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlcyDigJMgbXV0ZXhlcywgcG9pbnRlciBkZXJlZmVyZW5jZXMsIHJlb3JkZXJpbmcgb2YgaW5pdC9leGl0IHN0ZXBzIOKAkyBJJiMzOTttIHRoaW5raW5nIHRoaXMgaXMgcHJvYmFibHkgYSBnb29kIGNhbmRpZGF0ZSBmb3Igc29tZSByaWdvcm91cyBmdXp6aW5nLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gbWFrZSBzdXJlIGBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS2AgaXMgZW5hYmxlZC4gSXQmIzM5O3MgdGltZSB0byBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIHdoYXQgdGhlIGJ1aWxkIGNvbmZpZyBzYXlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA0OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL01ha2VmaWxlPTM1PW9iai0kKENPTkZJR19CTEtfREVWX1JOQkQpXHQmIzQzOz0gcm5iZC9cbmRyaXZlcnMvYmxvY2svTWFrZWZpbGUtMzYtXG5kcml2ZXJzL2Jsb2NrL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19CTEtfREVWX05VTExfQkxLKVx0JiM0Mzs9IG51bGxfYmxrL1xuZHJpdmVycy9ibG9jay9NYWtlZmlsZS0zOC1vYmotJChDT05GSUdfQkxLX0RFVl9SVVNUX05VTEwpICYjNDM7PSBybnVsbC9cbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctNS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzo2OmNvbmZpZyBCTEtfREVWX05VTExfQkxLXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O051bGwgdGVzdCBibG9jayBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctOS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzoxMDpjb25maWcgQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy0xMS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmYXVsdCBpbmplY3Rpb24gZm9yIE51bGwgdGVzdCBibG9jayBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzoxMjpcdGRlcGVuZHMgb24gQkxLX0RFVl9OVUxMX0JMSyBcdTAwMjZcdTAwMjYgRkFVTFRfSU5KRUNUSU9OX0NPTkZJR0ZTXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9NYWtlZmlsZT00PWNjZmxhZ3MteVx0XHRcdCYjNDM7PSAtSSQoc3JjKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9NYWtlZmlsZS01LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19CTEtfREVWX05VTExfQkxLKVx0JiM0Mzs9IG51bGxfYmxrLm9cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvTWFrZWZpbGUtNy1udWxsX2Jsay1vYmpzXHRcdFx0Oj0gbWFpbi5vXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjEtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMjojaWZkZWYgQ09ORklHX0JMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMy1zdGF0aWMgREVDTEFSRV9GQVVMVF9BVFRSKG51bGxfdGltZW91dF9hdHRyKTtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz05OD1NT0RVTEVfUEFSTV9ERVNDKGhvbWVfbm9kZSwgXCYjMzQ7SG9tZSBub2RlIGZvciB0aGUgZGV2aWNlXCYjMzQ7KTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTk5LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTAwOiNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEwMS0vKlxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTY2Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGNvbmZpZ19pdGVtX3R5cGUgbnVsbGJfZGV2aWNlX3R5cGUgPSB7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNjY3LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NjY4OiNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTY2OS1cbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz03OTA9c3RhdGljIHN0cnVjdCBudWxsYl9kZXZpY2UgKm51bGxfYWxsb2NfZGV2KHZvaWQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNzk3LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Nzk4OiNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTc5OS1cdGRldi1cdTAwM2V0aW1lb3V0X2NvbmZpZy5hdHRyID0gbnVsbF90aW1lb3V0X2F0dHI7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTQ5Nj1zdGF0aWMgdm9pZCBudWxsYl9zZXR1cF9id3RpbWVyKHN0cnVjdCBudWxsYiAqbnVsbGIpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTUwNC1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE1MDU6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTUwNi1cbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xODk4PXN0YXRpYyBpbnQgbnVsbF92YWxpZGF0ZV9jb25mKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTQwLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTk0MTojaWZkZWYgQ09ORklHX0JMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTQyLXN0YXRpYyBib29sIF9fbnVsbF9zZXR1cF9mYXVsdChzdHJ1Y3QgZmF1bHRfYXR0ciAqYXR0ciwgY2hhciAqc3RyKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE5NTU9c3RhdGljIGJvb2wgbnVsbF9zZXR1cF9mYXVsdCh2b2lkKVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTk1Ni17XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxOTU3OiNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE5NTgtXHRpZiAoIV9fbnVsbF9zZXR1cF9mYXVsdChcdTAwMjZudWxsX3RpbWVvdXRfYXR0ciwgZ190aW1lb3V0X3N0cikpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oPTUzPXN0cnVjdCBudWxsYl9kZXZpY2Uge1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC01NS1cdHN0cnVjdCBjb25maWdfZ3JvdXAgZ3JvdXA7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmg6NTY6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9udWxsX2Jsay5oLTU3LVx0c3RydWN0IGZhdWx0X2NvbmZpZyB0aW1lb3V0X2NvbmZpZztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTk1CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTnVsbCBCbG9jayBEZXZpY2UgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGZvciB0aGUgbnVsbCBibG9jayBkZXZpY2UgZHJpdmVyLiBUaGUgY3J1Y2lhbCBjb25maWcgb3B0aW9uLCBhcyBJIHNlZSBpdCwgaXMgYEJMS19ERVZfTlVMTF9CTEtgLiBUaGF0JiMzOTtzIHdoZXJlIGl0IGFsbCBzdGFydHMuCgpMb29raW5nIGF0IHRoZSBjb2RlIGNoYW5nZXMsIGl0IGFwcGVhcnMgdGhlIHBhdGNoIHRvdWNoZXMgc2V2ZXJhbCBmdW5jdGlvbnM6IGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCwgYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgLCBgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNgLCBgbnVsbF9mcmVlX2RldmAsIGBudWxsX2RlbF9kZXZgLCBhbmQgdGhlbiB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIGFuZCBleGl0IGZ1bmN0aW9ucyBgbnVsbF9pbml0YCBhbmQgYG51bGxfZXhpdGAuIFRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgdGhlIGNvbmZpZ2ZzIG1hY3JvcyBsaWtlIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc2hvd2AgYW5kIGBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmVgLgoKQWxyaWdodCwgSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIGludGVyZXN0aW5nIGJpdHMgZm9yIGZ1enppbmcuIGBudWxsX2luaXRgIGFuZCBgbnVsbF9leGl0YCBhcmUgbW9kdWxlIGxpZmVjeWNsZSBmdW5jdGlvbnMsIG5vdCB0aGUgYmVzdCBmb3IgZnV6emluZyBkaXJlY3RseSwgYWx0aG91Z2ggdGhleSBzZXQgdXAgdGhlIGVudmlyb25tZW50LgoKVGhlIGNvbmZpZ2ZzIHN0b3JlL3Nob3cgZnVuY3Rpb25zIHNlZW0gdG8gYmUgZ2VuZXJhdGVkIGJ5IG1hY3JvcywgcGFydGljdWxhcmx5IGBDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIE5BTUUpO2AgaW4gYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jYC4gVGhvc2UgbWFjcm9zIGFyZSBnb2luZyB0byBnZW5lcmF0ZSBmdW5jdGlvbnMsIHN1Y2ggYXMgYG51bGxiX2RldmljZV9zdWJtaXRfcXVldWVzX3N0b3JlYC4KCkxldCYjMzk7cyBmb2N1cyBvbiB0aGUga2V5IGZ1bmN0aW9ucyBtb2RpZmllZCB0byBzZWUgd2hhdCB0aGUgY2hhbmdlcyBpbXBseSBhYm91dCB0aGUgZnVuY3Rpb25hbGl0eS4gV2UgbmVlZCB0byBsb29rIGNsb3NlbHkgYXQgYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgLCBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AsIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AsIGBudWxsX2RlbF9kZXZgLCBhbmQgYG51bGxfZnJlZV9kZXZgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlc2Ugd2lsbCBiZWhhdmUgdW5kZXIgdmFyaW91cyBpbnB1dHMuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGludGVyZXN0aW5nIGZ1enppbmcgdGFyZ2V0cyBsaWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDQ6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHRlNfQVRUUlxcKG51bGxiX2RldmljZV8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0zNTg9bnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY29uc3QgY2hhciAqcGFnZSxcdFxcXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzgxLX1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MzgyOkNPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgTkFNRSk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zODMtXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NDk3PXN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTM1LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NTM2OkNPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgcG93ZXIpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTM3LVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTU0NT1zdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfYmFkYmxvY2tzX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01ODgtfVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NTg5OkNPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgYmFkYmxvY2tzKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTU5MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjE4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpdmluZyBpbnRvIHRoZSBNYWNybyYjMzk7cyBJbm5lciBXb3JraW5ncyoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMuIEJlZm9yZSBJIGV2ZW4gY29uc2lkZXIgcG90ZW50aWFsIG9wdGltaXphdGlvbnMgb3IgYWx0ZXJuYXRpdmUgYXBwcm9hY2hlcywgSSYjMzk7bSBnb2luZyB0byBkcmlsbCBkb3duIHRvIHRoZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9jay4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGRpc3NlY3RpbmcgdGhlIG1hY3JvIGRlZmluaXRpb24gaXRzZWxmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZXhwYW5zaW9uLCB0aGUgbnVhbmNlcyBvZiBhbnkgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgaXQgZW1wbG95cywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgYnJvYWRlciBjb2RlIGNvbnRleHQuIElzIHRoZXJlIGFueSByb29tIGZvciBhbWJpZ3VpdHk/IFBvdGVudGlhbCBzaWRlIGVmZmVjdHMgSSYjMzk7bSBvdmVybG9va2luZz8gVGhpcyBpbml0aWFsIGNoZWNrIGlzIGNydWNpYWw7IEkgY2FuJiMzOTt0IGJ1aWxkIGEgcm9idXN0IHVuZGVyc3RhbmRpbmcgd2l0aG91dCBhIHNvbGlkIGdyYXNwIG9mIGl0cyBiYXNpYyBtZWNoYW5pY3MuIFRpbWUgdG8gZ2V0IGludG8gdGhlIGRldGFpbHMgb2YgdGhlIG1hY3JvIGRlZmluaXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDQ6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TlVMTEJfREVWSUNFX0FUVFImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0zMjk9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzQzLS8qIFRoZSBmb2xsb3dpbmcgbWFjcm8gc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoIFRZUEUgPSB7dWludCwgdWxvbmcsIGJvb2x9LiAqL1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MzQ0OiNkZWZpbmUgTlVMTEJfREVWSUNFX0FUVFIoTkFNRSwgVFlQRSwgQVBQTFkpXHRcdFx0XHRcXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzQ1LXN0YXRpYyBzc2l6ZV90XHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NDQ2PXN0YXRpYyBpbnQgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ1MS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1MjpOVUxMQl9ERVZJQ0VfQVRUUihzaXplLCB1bG9uZywgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTM6TlVMTEJfREVWSUNFX0FUVFIoY29tcGxldGlvbl9uc2VjLCB1bG9uZywgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTQ6TlVMTEJfREVWSUNFX0FUVFIoc3VibWl0X3F1ZXVlcywgdWludCwgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTU6TlVMTEJfREVWSUNFX0FUVFIocG9sbF9xdWV1ZXMsIHVpbnQsIG51bGxiX2FwcGx5X3BvbGxfcXVldWVzKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1NjpOVUxMQl9ERVZJQ0VfQVRUUihob21lX25vZGUsIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDU3Ok5VTExCX0RFVklDRV9BVFRSKHF1ZXVlX21vZGUsIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDU4Ok5VTExCX0RFVklDRV9BVFRSKGJsb2Nrc2l6ZSwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTk6TlVMTEJfREVWSUNFX0FUVFIobWF4X3NlY3RvcnMsIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDYwOk5VTExCX0RFVklDRV9BVFRSKGlycW1vZGUsIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDYxOk5VTExCX0RFVklDRV9BVFRSKGh3X3F1ZXVlX2RlcHRoLCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2MjpOVUxMQl9ERVZJQ0VfQVRUUihpbmRleCwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjM6TlVMTEJfREVWSUNFX0FUVFIoYmxvY2tpbmcsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY0Ok5VTExCX0RFVklDRV9BVFRSKHVzZV9wZXJfbm9kZV9oY3R4LCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2NTpOVUxMQl9ERVZJQ0VfQVRUUihtZW1vcnlfYmFja2VkLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2NjpOVUxMQl9ERVZJQ0VfQVRUUihkaXNjYXJkLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2NzpOVUxMQl9ERVZJQ0VfQVRUUihtYnBzLCB1aW50LCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2ODpOVUxMQl9ERVZJQ0VfQVRUUihjYWNoZV9zaXplLCB1bG9uZywgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Njk6TlVMTEJfREVWSUNFX0FUVFIoem9uZWQsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDcwOk5VTExCX0RFVklDRV9BVFRSKHpvbmVfc2l6ZSwgdWxvbmcsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDcxOk5VTExCX0RFVklDRV9BVFRSKHpvbmVfY2FwYWNpdHksIHVsb25nLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ3MjpOVUxMQl9ERVZJQ0VfQVRUUih6b25lX25yX2NvbnYsIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDczOk5VTExCX0RFVklDRV9BVFRSKHpvbmVfbWF4X29wZW4sIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc0Ok5VTExCX0RFVklDRV9BVFRSKHpvbmVfbWF4X2FjdGl2ZSwgdWludCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzU6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9hcHBlbmRfbWF4X3NlY3RvcnMsIHVpbnQsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc2Ok5VTExCX0RFVklDRV9BVFRSKHpvbmVfZnVsbCwgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Nzc6TlVMTEJfREVWSUNFX0FUVFIodmlydF9ib3VuZGFyeSwgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Nzg6TlVMTEJfREVWSUNFX0FUVFIobm9fc2NoZWQsIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc5Ok5VTExCX0RFVklDRV9BVFRSKHNoYXJlZF90YWdzLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ4MDpOVUxMQl9ERVZJQ0VfQVRUUihzaGFyZWRfdGFnX2JpdG1hcCwgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0ODE6TlVMTEJfREVWSUNFX0FUVFIoZnVhLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ4MjpOVUxMQl9ERVZJQ0VfQVRUUihyb3RhdGlvbmFsLCBib29sLCBOVUxMKTtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ4MzpOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3Nfb25jZSwgYm9vbCwgTlVMTCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0ODQ6TlVMTEJfREVWSUNFX0FUVFIoYmFkYmxvY2tzX3BhcnRpYWxfaW8sIGJvb2wsIE5VTEwpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDg1LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA0OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg3MzcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA2MjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCYjMzk7cyBJbXBhY3QqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBmb2N1cyBpcyBkcmF3biB0byB0aGUgZnVuY3Rpb25zIGl0IHRvdWNoZXMuIEkgc2VlIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBhIG51bWJlciBvZiBgbnVsbGJfZGV2aWNlXypgIGZ1bmN0aW9ucy4gU3BlY2lmaWNhbGx5LCBgbnVsbGJfZGV2aWNlX3N1Ym1pdF9xdWV1ZXNfc3RvcmVgLCBgbnVsbGJfZGV2aWNlX3BvbGxfcXVldWVzX3N0b3JlYCwgYW5kIHRoZSBwb3dlci1yZWxhdGVkIG9uZXM6IGBudWxsYl9kZXZpY2VfcG93ZXJfc2hvd2AgYW5kIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoaWNoIG9uZXMgYXJlICphY3R1YWxseSogbW9kaWZpZWQuCgpJbml0aWFsbHksIEkgc2VlIGBudWxsYl9kZXZpY2VfcG93ZXJfc2hvd2AgaXMgZGVmaW5pdGVseSBjaGFuZ2VkIOKAkyB0aGUgbXV0ZXggbG9jayBhbmQgdW5sb2NrIHdlcmUgYWRkZWQsIEkgc2VlIHRoYXQgcmlnaHQgYXdheSBpbiB0aGUgZGlmZi4gSG93ZXZlciwgSeKAmW0gZ2V0dGluZyBhIGJpdCBjb25mdXNlZCBhYm91dCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYC4gSSAqdGhvdWdodCogaXQgd2FzIG1vZGlmaWVkLCBidXQgdGhlIGRpZmYgaXNuJiMzOTt0IHNob3dpbmcgYW55IGNoYW5nZXMgdGhlcmUuIExldCBtZSBkb3VibGUtY2hlY2vigKYgTm8sIHRoZSBkaWZmIGRvZXNu4oCZdCBzaG93IGEgbW9kaWZpY2F0aW9uLiBPa2F5LCB0aGUgZGlmZiBqdXN0IHNob3dzIHRoZSBjb250ZXh0LCBhbmQgaXQmIzM5O3Mgbm90IGFjdHVhbGx5IGNoYW5nZWQgaW4gdGhlIGRpZmYuIEdvdCBpdC4KCk5vdywgdGhvc2UgYG51bGxiX2RldmljZV9zdWJtaXRfcXVldWVzX3N0b3JlYCBhbmQgYG51bGxiX2RldmljZV9wb2xsX3F1ZXVlc19zdG9yZWAgZnVuY3Rpb25zIGFyZSBnZW5lcmF0ZWQsIGFyZW4mIzM5O3QgdGhleT8gSSBzaG91bGQgY2hlY2sgdGhlbSwgYXMgdGhleSBhcmUga2V5IHRvIHF1ZXVlIG1hbmFnZW1lbnQuIEl0IGxvb2tzIGxpa2UgdGhleSBhcmUsIGluZGVlZCwgYW5kIGFyZSB0aHVzIGFsc28gbW9kaWZpZWQgYnkgdGhlIHBhdGNoIHZpYSB0aGUgbWFjcm8uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBncmFzcCB0aGUgaW1wbGljYXRpb25zIG9mIHRob3NlIGdlbmVyYXRlZCBmdW5jdGlvbnMuCgpJbiB0ZXJtcyBvZiBmdXp6aW5nIHRhcmdldHMsIHdoaWxlIHN5emthbGxlciAqY2FuKiBmdXp6IGdlbmVyYXRlZCBmdW5jdGlvbnMsIEkgbWlnaHQgYmUgYmV0dGVyIG9mZiBzcGVjaWZ5aW5nIHRoZSBjcml0aWNhbCBvbmVzIGRpcmVjdGx5LiBGcm9tIHdoYXQgSeKAmW0gc2VlaW5nLCBgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc2AsIGBudWxsX2RlbF9kZXZgLCBgbnVsbF9mcmVlX2RldmAsIGFuZCBvZiBjb3Vyc2UgYG51bGxiX2RldmljZV9wb3dlcl9zaG93YCBzZWVtIGxpa2UgZ29vZCBzdGFydGluZyBwb2ludHMuIEkgbWlnaHQgYWxzbyBjb25zaWRlciBhZGRpbmcgYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgIGFuZCBgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNgLgoKVWx0aW1hdGVseSwgSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgdGhhdCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBpc27igJl0IG1vZGlmaWVkLiBJ4oCZbGwgZ28gYmFjayBhbmQgY29uZmlybSB0aGF0IGFnYWluLiBJIGRvbuKAmXQgd2FudCB0byBtaXNzIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00ODY9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjaGFyICpwYWdlKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ5Ni1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ5NzpzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDk4LVx0XHRcdFx0ICAgICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA0OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDE1CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIFJlY2VudCBLZXJuZWwgQ2hhbmdlcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgZG93biB0aGlzIGRpZmYuIE15IHByaW1hcnkgY29uY2VybiBoZXJlIGlzIHVuZGVyc3RhbmRpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBjaGFuZ2VzLCBwYXJ0aWN1bGFybHkgaG93IHRoZXkgYWZmZWN0IHRoZSB2aXJ0dWFsIGJsb2NrIGRldmljZSwgYG51bGxiYC4gSXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgYG51bGxiX2RldmljZV9wb3dlcl9zaG93YCBpcyB0aGUgY2VudHJhbCBmdW5jdGlvbiBiZWluZyBtb2RpZmllZC4gVGhlIGludHJvZHVjdGlvbiBvZiB0aGUgYG11dGV4X2xvY2tgIGFuZCBgbXV0ZXhfdW5sb2NrYCBjYWxscyBhcm91bmQgdGhlIGBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3Nob3dgIGluZGljYXRlcyBhIGNoYW5nZSBpbiBob3cgdGhpcyBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQsIGxpa2VseSBmb3IgdGhyZWFkIHNhZmV0eS4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gbm90ZSBhbmQgcG90ZW50aWFsbHkgc2lnbmlmaWNhbnQuCgpCZXlvbmQgdGhhdCwgSSYjMzk7bSB0YWtpbmcgYSBicm9hZGVyIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQgYW5kIHJlbGF0ZWQgc3ltYm9scyB0byBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZXNlIGZ1bmN0aW9ucyBhbmQgdGhlaXIgcmVsYXRpb25zaGlwczogYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgLCBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AsIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AsIGBudWxsX2RlbF9kZXZgLCBhbmQgYG51bGxfZnJlZV9kZXZgLCBiZWNhdXNlIHRoZXkgYXJlIGNsZWFybHkgY2VudHJhbCB0byB0aGUgZGV2aWNlJiMzOTtzIGxpZmVjeWNsZSBhbmQgY29uZmlndXJhdGlvbi4KCkkgbmVlZCB0byBxdWlja2x5IGNvbmZpcm0gdGhhdCBgbnVsbGJfZGV2aWNlX3N1Ym1pdF9xdWV1ZXNfc3RvcmVgIGlzIGEgdmFsaWQgc3ltYm9sLiBPa2F5LCBsb29rcyBsaWtlIGl0JiMzOTtzIGdlbmVyYXRlZCBieSB0aGUgYE5VTExCX0RFVklDRV9BVFRSYCBtYWNybywgd2hpY2ggaXMgbmljZSBhbmQgY29udmVuaWVudC4gSSYjMzk7bSBhbHNvIGdvaW5nIHRvIGFkZCBgbnVsbGJfZGV2aWNlX3BvbGxfcXVldWVzX3N0b3JlYCB0byB0aGUgbGlzdCBvZiBpbXBvcnRhbnQgZnVuY3Rpb25zIHRvIGNvbnNpZGVyLCBhcyBpdCYjMzk7cyBnZW5lcmF0ZWQgYnkgc2ltaWxhciBtZWFucy4gVGhlIGBDT05GSUdGU19BVFRSYCBtYWNyb3MgYXJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIHBpY3R1cmUgaGVyZS4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIGhvdyB0aGVzZSBtYWNyb3MgYWN0dWFsbHkgZXhwYW5kLCBhcyBJJiMzOTttIHRoaW5raW5nIHRoZXkgbWlnaHQgZ2VuZXJhdGUgc29tZXRoaW5nIGxpa2UgYG51bGxiX2RldmljZV9hdHRyX3N1Ym1pdF9xdWV1ZXNgIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGUgZXhhY3QgbmFtZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA0OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlZmluZSBDT05GSUdGU19BVFRSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9jb25maWdmcy5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvY29uZmlnZnMuaD0xMTU9c3RydWN0IGNvbmZpZ2ZzX2F0dHJpYnV0ZSB7XG4tLVxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oLTEyMi1cbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaDoxMjM6I2RlZmluZSBDT05GSUdGU19BVFRSX1BFUk0oX3BmeCwgX25hbWUsIF9wZXJtKVx0XHRcXFxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oLTEyNC1zdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX2F0dHJpYnV0ZSBfcGZ4IyNhdHRyXyMjX25hbWUgPSB7XHRcXFxuLS1cbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaC0xMzEtXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmg6MTMyOiNkZWZpbmUgQ09ORklHRlNfQVRUUihfcGZ4LCBfbmFtZSkgQ09ORklHRlNfQVRUUl9QRVJNKFx0XFxcbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaC0xMzMtXHRcdF9wZngsIF9uYW1lLCBTX0lSVUdPIHwgU19JV1VTUlx0XHRcXFxuLS1cbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaC0xMzUtXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmg6MTM2OiNkZWZpbmUgQ09ORklHRlNfQVRUUl9STyhfcGZ4LCBfbmFtZSlcdFx0XHRcXFxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oLTEzNy1zdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX2F0dHJpYnV0ZSBfcGZ4IyNhdHRyXyMjX25hbWUgPSB7XHRcXFxuLS1cbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaC0xNDMtXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmg6MTQ0OiNkZWZpbmUgQ09ORklHRlNfQVRUUl9XTyhfcGZ4LCBfbmFtZSlcdFx0XHRcXFxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oLTE0NS1zdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX2F0dHJpYnV0ZSBfcGZ4IyNhdHRyXyMjX25hbWUgPSB7XHRcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTI0NAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgTnVsbCBCbG9jayBEZXZpY2UgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgY29kZSwgdGhlIGBDT05GSUdGU19BVFRSYCBtYWNybywgc3BlY2lmaWNhbGx5IGluIHRoZSBjb250ZXh0IG9mIHRoZSBgbnVsbGJfZGV2aWNlX2AgYXR0cmlidXRlcywgaXMgZ2VuZXJhdGluZyBhIGBzdHJ1Y3QgY29uZmlnZnNfYXR0cmlidXRlYCBuYW1lZCBgbnVsbGJfZGV2aWNlX2F0dHJfTkFNRWAuIFRoYXQmIzM5O3MgZ29vZC4gQW5kIHRoZSBhc3NvY2lhdGVkIHNob3cgYW5kIHN0b3JlIGZ1bmN0aW9ucyBhcmUgYmVpbmcgZGVmaW5lZCBhcyBgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3Nob3dgIGFuZCBgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlYCwgd2hpY2ggbWVhbnMgSSYjMzk7bSBjb3JyZWN0IGluIGV4cGVjdGluZyB0byBzZWUgYG51bGxiX2RldmljZV9zdWJtaXRfcXVldWVzX3N0b3JlYCBhbmQgYG51bGxiX2RldmljZV9wb2xsX3F1ZXVlc19zdG9yZWAuIEV4Y2VsbGVudCwgSSYjMzk7bGwgZGVmaW5pdGVseSBhZGQgdGhvc2UgdHdvIGZ1bmN0aW9ucyB0byBteSBmb2N1cyBzeW1ib2xzLgoKTm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBvdmVyYWxsIGNvbmZpZ3VyYXRpb24uIEkga25vdyBgQ09ORklHX0JMS19ERVZfTlVMTF9CTEtgIGlzIHRoZSBjb3JlLCB0aGUgbWFpbiBjb25maWcgb3B0aW9uLiBJIGhhdmUgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55IG90aGVyIGRlcGVuZGVuY2llcyB0aG91Z2guIEkgYWxzbyBrbm93IHRoYXQgYENPTkZJR19DT05GSUdGU19GU2AgaXMgcmVxdWlyZWQgZm9yIHRoZSBjb25maWdmcyBzZXR1cCwgYnV0IHRoZXJlJiMzOTtzIGEgdGhvdWdodC4uLiB0aGUgYEJMS19ERVZfTlVMTF9CTEtgIEtjb25maWcgZW50cnkgZG9lc24mIzM5O3Qgc3RyaWN0bHkgZGVwZW5kIG9uIGl0LiBUaGF0JiMzOTtzIGEgcG9pbnQgb2YgcG90ZW50aWFsIGNvbmNlcm4uIEkgc2hvdWxkIHJlYWxseSBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGluIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWdgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBvZiB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZWxhdGlvbnNoaXBzIGhlcmUuIEkgbmVlZCB0byBiZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBjb25maWd1cmF0aW9uIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA0OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTEtfREVWX05VTExfQkxLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy01LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjY6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7TnVsbCB0ZXN0IGJsb2NrIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy05LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnOjEwOmNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTExLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZhdWx0IGluamVjdGlvbiBmb3IgTnVsbCB0ZXN0IGJsb2NrIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTk1MwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgTnVsbCBCbG9jayBEZXZpY2UgS2NvbmZpZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gRmlyc3Qgb3JkZXIgb2YgYnVzaW5lc3M6ICpLY29uZmlnKiDigJMgdGhlIGhlYXJ0IG9mIHRoZSBjb25maWd1cmF0aW9uIHByb2Nlc3MgZm9yIHRoZSBudWxsIGJsb2NrIGRyaXZlci4gSSBuZWVkIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBob3cgaXQmIzM5O3MgcHJlc2VudGVkIGluIHRoaXMgY29udGV4dC4gU3BlY2lmaWNhbGx5LCBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnYC4gSSYjMzk7bGwgYmUgbWV0aWN1bG91c2x5IGluc3BlY3RpbmcgdGhpcyBmaWxlIHRvIGdyYXNwIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXZhaWxhYmxlLCBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aG9zZSBvcHRpb25zLCBhbmQgYW55IGltcGxpY2F0aW9ucyB0aGV5IG1pZ2h0IGhhdmUgb24gdGhlIG92ZXJhbGwgZHJpdmVyJiMzOTtzIGZ1bmN0aW9uYWxpdHkuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgd2hhdCBpcyBjb250cm9sbGFibGUgYW5kIGNvbmZpZ3VyYWJsZSB3aXRoaW4gdGhlIGRyaXZlciB0aHJvdWdoIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIGFuZCBob3cgdGhvc2UgY29uZmlndXJhdGlvbiBvcHRpb25zIHNoYXBlIGl0cyBiZWhhdmlvci4gRm9yIGV4YW1wbGUsIGFyZSB0aGVyZSBhbnkgcGVyZm9ybWFuY2UgdHJhZGUtb2ZmcyB0aGF0IGNhbiBiZSBtYWRlIGR1cmluZyBidWlsZCB0aW1lPyBJIHdpbGwgYWxzbyBldmFsdWF0ZSB3aGV0aGVyIHRoZSBjb25maWd1cmF0aW9ucyBhcmUgcHJlc2VudGVkIGluIGEgd2F5IHRoYXQgaXMgZWFzeSB0byB1bmRlcnN0YW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0I1xuICAgMzpcdCMgTnVsbCBibG9jayBkZXZpY2UgZHJpdmVyIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtcbiAgIDc6XHRcdHRyaXN0YXRlIFwmIzM0O051bGwgdGVzdCBibG9jayBkcml2ZXJcJiMzNDtcbiAgIDg6XHRcdHNlbGVjdCBDT05GSUdGU19GU1xuICAgOTpcdFxuICAxMDpcdGNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxuICAxMTpcdFx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZhdWx0IGluamVjdGlvbiBmb3IgTnVsbCB0ZXN0IGJsb2NrIGRyaXZlclwmIzM0O1xuICAxMjpcdFx0ZGVwZW5kcyBvbiBCTEtfREVWX05VTExfQkxLIFx1MDAyNlx1MDAyNiBGQVVMVF9JTkpFQ1RJT05fQ09ORklHRlNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDQ6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzNTcKCQkJCQkJCW91dHB1dDogMTk2CgkJCQkJCQl0aG91Z2h0czogMTA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiBDb25maWd1cmF0aW9uIGFuZCBMaWZlY3ljbGUgQ2hhbmdlcyBpbiBgbnVsbF9ibGtgIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSB6ZXJvZWQgaW4gb24gdGhlIGBudWxsX2Jsa2AgZHJpdmVyLiBUaGUgaW5pdGlhbCBjbHVlIHdhcyB0aGUgc2VsZWN0aW9uIG9mIGBDT05GSUdGU19GU2AsIHdoaWNoIGltcGxpZXMgYSBmb2N1cyBvbiBjb25maWdmcyBhdHRyaWJ1dGVzLiBGcm9tIHRoZXJlLCBJIHNlZSB0aGF0IHRoZSBwYXRjaCYjMzk7cyBjb3JlIGlzIGFkZGluZyBtdXRleCBsb2NrcywgYWRkcmVzc2luZyByYWNlIGNvbmRpdGlvbnMsIGFuZCBoYW5kbGluZyBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyB3aXRoaW4gdGhlIGRyaXZlci4gSXQgbG9va3MgbGlrZSBpdCBhbHNvIHJlamVjdHMgcXVldWUgdXBkYXRlcyBmb3Igc2hhcmVkIHRhZyBzZXRzLiBUaGlzIHN1Z2dlc3RzIGNoYW5nZXMgaW4gaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBjb25jdXJyZW50IGFjY2VzcyB0byBpdHMgY29uZmlndXJhdGlvbiBhbmQgc3RhdGUuIFRoaXMgc2hvdWxkIGJlIGZ1enplZCBoZWF2aWx5LgoKSSYjMzk7dmUgaWRlbnRpZmllZCBrZXkgZnVuY3Rpb25zIGFuZCBhdHRyaWJ1dGVzIHRoYXQgYXJlIGRpcmVjdGx5IGltcGFjdGVkLiBIZXJlJiMzOTtzIHdoYXQgSSYjMzk7dmUgZGlzdGlsbGVkOgoKKiAgICoqQ29yZSBGdW5jdGlvbnMgJmFtcDsgTGlmZWN5Y2xlOioqCiAgICAqICAgYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgCiAgICAqICAgYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgCiAgICAqICAgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYAogICAgKiAgIGBudWxsYl9kZXZpY2VfcG93ZXJfc2hvd2AKICAgICogICBgbnVsbF9kZWxfZGV2YAogICAgKiAgIGBudWxsX2ZyZWVfZGV2YAoqICAgKipNYWNyby1HZW5lcmF0ZWQgRnVuY3Rpb25zOioqCiAgICAqICAgYG51bGxiX2RldmljZV9zdWJtaXRfcXVldWVzX3N0b3JlYAogICAgKiAgIGBudWxsYl9kZXZpY2VfcG9sbF9xdWV1ZXNfc3RvcmVgCgpXaGlsZSB0aGUgbWFjcm8gZ2VuZXJhdGVzIG11bHRpcGxlIGZ1bmN0aW9ucywgdGhlIGtleSBwb2ludCBpcyB0aGF0IHRoZSB1bmRlcmx5aW5nIGFwcGx5IGZ1bmN0aW9ucyAoYG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNgLCBgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNgKSBhcmUgZGlyZWN0bHkgaW52b2x2ZWQsIHNvIEkgaW5jbHVkZSB0aGVtIGFzIHdlbGwuIFRoZSBsb2NraW5nIGNoYW5nZSBhZmZlY3RzIGFsbCBtYWNyby1nZW5lcmF0ZWQgYXR0cmlidXRlcywgYnV0IHRoZSBgX3N0b3JlYCBmdW5jdGlvbnMgYXJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGluZyBiZWNhdXNlIHRoZXkgaW52b2x2ZSB0aGUgYGFwcGx5X2ZuYCBsb2dpYy4gSXQmIzM5O3MgdGhlIGBhcHBseV9mbmAgdGhhdCBpcyBhZmZlY3RlZCBieSB0aGUgbG9ja2luZy4KCkkgbWFkZSBzdXJlIEkgaGF2ZSB0aGUgQ09ORklHczoKKiBgQkxLX0RFVl9OVUxMX0JMS2AKCk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IFRoZSBwYXRjaCYjMzk7cyBmdW5jdGlvbmFsIGNoYW5nZXMgaW52b2x2ZSB0aGUgY29uZmlndXJhdGlvbiBhbmQgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgb2YgdGhlIGRyaXZlci4gQWRkaW5nIG11dGV4ZXMsIGhhbmRsaW5nIHNoYXJlZCB0YWcgc2V0cywgYW5kIHJlb3JkZXJpbmcgaW5pdGlhbGl6YXRpb24vdGVhcmRvd24gcG9pbnQgZGlyZWN0bHkgdG8gdGhlc2UgYXJlYXMuIEl0IGlzIHRoZXJlZm9yZSBjcml0aWNhbCB0byBmdXp6IHRoZSBmdW5jdGlvbnMgbGlzdGVkLgoKSSYjMzk7bSBub3cgc2F0aXNmaWVkIHdpdGggdGhpcyBhbmFseXNpcywgYW5kIGFtIHJlYWR5IHRvIHBhc3MgdGhpcyB0byB0aGUgZnV6emVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9OVUxMX0JMSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc2hvdyYjMzQ7LAogICAgJiMzNDtudWxsX2RlbF9kZXYmIzM0OywKICAgICYjMzQ7bnVsbF9mcmVlX2RldiYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2Vfc3VibWl0X3F1ZXVlc19zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2VfcG9sbF9xdWV1ZXNfc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgcmFjZSBjb25kaXRpb25zIGFuZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGluIHRoZSBudWxsX2JsayBkcml2ZXIgYnkgYWRkaW5nIG11dGV4IGxvY2tzIGFyb3VuZCBjb25maWdmcyBhdHRyaWJ1dGUgYWNjZXNzZXMgYW5kIHJlamVjdGluZyBxdWV1ZSB1cGRhdGVzIGZvciBzaGFyZWQgdGFnIHNldHMuIEl0IGFsc28gbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93biBvcmRlci4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZHJpdmVyJiMzOTtzIGNvbmZpZ3VyYXRpb24gYW5kIGxpZmVjeWNsZSBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9OVUxMX0JMSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMmIzM0OywKICAgICYjMzQ7bnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc2hvdyYjMzQ7LAogICAgJiMzNDtudWxsX2RlbF9kZXYmIzM0OywKICAgICYjMzQ7bnVsbF9mcmVlX2RldiYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2Vfc3VibWl0X3F1ZXVlc19zdG9yZSYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2VfcG9sbF9xdWV1ZXNfc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgcmFjZSBjb25kaXRpb25zIGFuZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGluIHRoZSBudWxsX2JsayBkcml2ZXIgYnkgYWRkaW5nIG11dGV4IGxvY2tzIGFyb3VuZCBjb25maWdmcyBhdHRyaWJ1dGUgYWNjZXNzZXMgYW5kIHJlamVjdGluZyBxdWV1ZSB1cGRhdGVzIGZvciBzaGFyZWQgdGFnIHNldHMuIEl0IGFsc28gbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93biBvcmRlci4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZHJpdmVyJiMzOTtzIGNvbmZpZ3VyYXRpb24gYW5kIGxpZmVjeWNsZSBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA0OjAwOjE2LjQ5MzExMTk3OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1OTA0NDUwNzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfTlVMTF9CTEtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzXCIsXG4gICAgXCJudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzXCIsXG4gICAgXCJudWxsYl9hcHBseV9wb2xsX3F1ZXVlc1wiLFxuICAgIFwibnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3dcIixcbiAgICBcIm51bGxfZGVsX2RldlwiLFxuICAgIFwibnVsbF9mcmVlX2RldlwiLFxuICAgIFwibnVsbGJfZGV2aWNlX3N1Ym1pdF9xdWV1ZXNfc3RvcmVcIixcbiAgICBcIm51bGxiX2RldmljZV9wb2xsX3F1ZXVlc19zdG9yZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHJhY2UgY29uZGl0aW9ucyBhbmQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyIGJ5IGFkZGluZyBtdXRleCBsb2NrcyBhcm91bmQgY29uZmlnZnMgYXR0cmlidXRlIGFjY2Vzc2VzIGFuZCByZWplY3RpbmcgcXVldWUgdXBkYXRlcyBmb3Igc2hhcmVkIHRhZyBzZXRzLiBJdCBhbHNvIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24gb3JkZXIuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGRyaXZlcidzIGNvbmZpZ3VyYXRpb24gYW5kIGxpZmVjeWNsZSBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDQ6MDA6MTYuNDkzMTE5Mjk4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDM2MDAzMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjMWUxNDg2YjMzZTRlNzI1ZjllYTU3ZTg5NDUyYmU2YTZjODM2ZDgwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDEwIDA0OjAwOjE1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcXG5pbmRleCBmOGMwZmQ1N2UwNDFhOC4uZTgyOWI1MDI5ODFiM2UgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xcbkBAIC02Niw3ICs2Niw3IEBAIHN0cnVjdCBudWxsYl9wYWdlIHtcXG4gI2RlZmluZSBOVUxMQl9QQUdFX0ZSRUUgKE1BUF9TWiAtIDIpXFxuIFxcbiBzdGF0aWMgTElTVF9IRUFEKG51bGxiX2xpc3QpO1xcbi1zdGF0aWMgc3RydWN0IG11dGV4IGxvY2s7XFxuK3N0YXRpYyBERUZJTkVfTVVURVgobG9jayk7XFxuIHN0YXRpYyBpbnQgbnVsbF9tYWpvcjtcXG4gc3RhdGljIERFRklORV9JREEobnVsbGJfaW5kZXhlcyk7XFxuIHN0YXRpYyBzdHJ1Y3QgYmxrX21xX3RhZ19zZXQgdGFnX3NldDtcXG5AQCAtMzQ1LDggKzM0NSwxNCBAQCBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3N0b3JlKGJvb2wgKnZhbCwgY29uc3QgY2hhciAqcGFnZSxcXG4gc3RhdGljIHNzaXplX3RcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIG51bGxiX2RldmljZV8jI05BTUUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcXHRcXFxcXFxuIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdHJldHVybiBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zaG93KFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0c3NpemVfdCByZXQ7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0cmV0ID0gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc2hvdyhcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdFxcdFxcdHRvX251bGxiX2RldmljZShpdGVtKS1cXHUwMDNlTkFNRSwgcGFnZSk7XFx0XFxcXFxcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmxvY2spO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRyZXR1cm4gcmV0O1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gfVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gc3RhdGljIHNzaXplX3RcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNvbnN0IGNoYXIgKnBhZ2UsXFx0XFxcXFxcbkBAIC0zNjAsMTMgKzM2NiwxNyBAQCBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjb25zdCBjaGFyICpwYWdlLFxcdFxcXFxcXG4gXFx0cmV0ID0gbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc3RvcmUoXFx1MDAyNm5ld192YWx1ZSwgcGFnZSwgY291bnQpO1xcXFxcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0cmV0ID0gMDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0aWYgKGFwcGx5X2ZuKVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0cmV0ID0gYXBwbHlfZm4oZGV2LCBuZXdfdmFsdWUpO1xcdFxcdFxcdFxcdFxcXFxcXG4gXFx0ZWxzZSBpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsIFxcdTAwMjZkZXYtXFx1MDAzZWZsYWdzKSkgXFx0XFxcXFxcbiBcXHRcXHRyZXQgPSAtRUJVU1k7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRpZiAoIXJldClcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdGRldi1cXHUwMDNlTkFNRSA9IG5ld192YWx1ZTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2bG9jayk7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRpZiAocmV0IFxcdTAwM2MgMClcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdHJldHVybiByZXQ7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRkZXYtXFx1MDAzZU5BTUUgPSBuZXdfdmFsdWU7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRyZXR1cm4gY291bnQ7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiB9XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIE5BTUUpO1xcbkBAIC0zODIsNiArMzkyLDE1IEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuIFxcdGlmICghZGV2LVxcdTAwM2VudWxsYilcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbitcXHQvKlxcbitcXHQgKiBBIHNoYXJlZCB0YWdfc2V0IGlzIG1hcHBlZCB2aWEgdGhlIG1vZHVsZS13aWRlIHF1ZXVlIGNvdW50cywgc28gYVxcbitcXHQgKiBwZXItZGV2aWNlIHJlc2l6ZSBpcyBtZWFuaW5nbGVzcy4gT24gc2hyaW5rIGl0IHdvdWxkIGFsc28gbGVhdmVcXG4rXFx0ICogbXFfbWFwW10gcG9pbnRpbmcgYXQgTlVMTGVkIGhjdHggc2xvdHMsIGNhdXNpbmcgYSBOVUxMIGRlcmVmIGluXFxuK1xcdCAqIGJsa19tcV9tYXBfc3dxdWV1ZSgpLiBSZWplY3QgaXQuXFxuK1xcdCAqL1xcbitcXHRpZiAoZGV2LVxcdTAwM2VudWxsYi1cXHUwMDNldGFnX3NldCA9PSBcXHUwMDI2dGFnX3NldClcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbiBcXHQvKlxcbiBcXHQgKiBNYWtlIHN1cmUgYXQgbGVhc3Qgb25lIHN1Ym1pdCBxdWV1ZSBleGlzdHMuXFxuIFxcdCAqL1xcbkBAIC00MjEsMjUgKzQ0MCwxMyBAQCBzdGF0aWMgaW50IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxcbiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBzdWJtaXRfcXVldWVzKVxcbiB7XFxuLVxcdGludCByZXQ7XFxuLVxcbi1cXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXG4tXFx0cmV0ID0gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIHN1Ym1pdF9xdWV1ZXMsIGRldi1cXHUwMDNlcG9sbF9xdWV1ZXMpO1xcbi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmxvY2spO1xcbi1cXG4tXFx0cmV0dXJuIHJldDtcXG4rXFx0cmV0dXJuIG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtXFx1MDAzZXBvbGxfcXVldWVzKTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBwb2xsX3F1ZXVlcylcXG4ge1xcbi1cXHRpbnQgcmV0O1xcbi1cXG4tXFx0bXV0ZXhfbG9jayhcXHUwMDI2bG9jayk7XFxuLVxcdHJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBkZXYtXFx1MDAzZXN1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTtcXG4tXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZsb2NrKTtcXG4tXFxuLVxcdHJldHVybiByZXQ7XFxuK1xcdHJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LVxcdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XFxuIH1cXG4gXFxuIE5VTExCX0RFVklDRV9BVFRSKHNpemUsIHVsb25nLCBOVUxMKTtcXG5AQCAtNDc4LDcgKzQ4NSwxMyBAQCBOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3NfcGFydGlhbF9pbywgYm9vbCwgTlVMTCk7XFxuIFxcbiBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNoYXIgKnBhZ2UpXFxuIHtcXG4tXFx0cmV0dXJuIG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyh0b19udWxsYl9kZXZpY2UoaXRlbSktXFx1MDAzZXBvd2VyLCBwYWdlKTtcXG4rXFx0c3NpemVfdCByZXQ7XFxuK1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXG4rXFx0cmV0ID0gbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zaG93KHRvX251bGxiX2RldmljZShpdGVtKS1cXHUwMDNlcG93ZXIsIHBhZ2UpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNmxvY2spO1xcbitcXG4rXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG4gc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG5AQCAtODM2LDcgKzg0OSw2IEBAIHN0YXRpYyB2b2lkIG51bGxfZnJlZV9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxcbiBcXHRpZiAoIWRldilcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4tXFx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xcbiBcXHRiYWRibG9ja3NfZXhpdChcXHUwMDI2ZGV2LVxcdTAwM2ViYWRibG9ja3MpO1xcbiBcXHRrZnJlZShkZXYpO1xcbiB9XFxuQEAgLTE3NzAsMTggKzE3ODIsMTkgQEAgc3RhdGljIHZvaWQgbnVsbF9kZWxfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXFxuIFxcbiBcXHRkZWxfZ2VuZGlzayhudWxsYi1cXHUwMDNlZGlzayk7XFxuIFxcbi1cXHRpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX1RIUk9UVExFRCwgXFx1MDAyNm51bGxiLVxcdTAwM2VkZXYtXFx1MDAzZWZsYWdzKSkge1xcbitcXHRpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX1RIUk9UVExFRCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpKSB7XFxuIFxcdFxcdGhydGltZXJfY2FuY2VsKFxcdTAwMjZudWxsYi1cXHUwMDNlYndfdGltZXIpO1xcbiBcXHRcXHRhdG9taWNfbG9uZ19zZXQoXFx1MDAyNm51bGxiLVxcdTAwM2VjdXJfYnl0ZXMsIExPTkdfTUFYKTtcXG4gXFx0XFx0YmxrX21xX3N0YXJ0X3N0b3BwZWRfaHdfcXVldWVzKG51bGxiLVxcdTAwM2VxLCB0cnVlKTtcXG4gXFx0fVxcbiBcXG4gXFx0cHV0X2Rpc2sobnVsbGItXFx1MDAzZWRpc2spO1xcbitcXHRudWxsX2ZyZWVfem9uZWRfZGV2KGRldik7XFxuIFxcdGlmIChudWxsYi1cXHUwMDNldGFnX3NldCA9PSBcXHUwMDI2bnVsbGItXFx1MDAzZV9fdGFnX3NldClcXG4gXFx0XFx0YmxrX21xX2ZyZWVfdGFnX3NldChudWxsYi1cXHUwMDNldGFnX3NldCk7XFxuIFxcdGtmcmVlKG51bGxiLVxcdTAwM2VxdWV1ZXMpO1xcbiBcXHRpZiAobnVsbF9jYWNoZV9hY3RpdmUobnVsbGIpKVxcbi1cXHRcXHRudWxsX2ZyZWVfZGV2aWNlX3N0b3JhZ2UobnVsbGItXFx1MDAzZWRldiwgdHJ1ZSk7XFxuK1xcdFxcdG51bGxfZnJlZV9kZXZpY2Vfc3RvcmFnZShkZXYsIHRydWUpO1xcbiBcXHRrZnJlZShudWxsYik7XFxuIFxcdGRldi1cXHUwMDNlbnVsbGIgPSBOVUxMO1xcbiB9XFxuQEAgLTIxNjIsMTcgKzIxNzUsOSBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcXG4gXFx0Y29uZmlnX2dyb3VwX2luaXQoXFx1MDAyNm51bGxiX3N1YnN5cy5zdV9ncm91cCk7XFxuIFxcdG11dGV4X2luaXQoXFx1MDAyNm51bGxiX3N1YnN5cy5zdV9tdXRleCk7XFxuIFxcbi1cXHRyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oXFx1MDAyNm51bGxiX3N1YnN5cyk7XFxuLVxcdGlmIChyZXQpXFxuLVxcdFxcdHJldHVybiByZXQ7XFxuLVxcbi1cXHRtdXRleF9pbml0KFxcdTAwMjZsb2NrKTtcXG4tXFxuIFxcdG51bGxfbWFqb3IgPSByZWdpc3Rlcl9ibGtkZXYoMCwgXFxcIm51bGxiXFxcIik7XFxuLVxcdGlmIChudWxsX21ham9yIFxcdTAwM2MgMCkge1xcbi1cXHRcXHRyZXQgPSBudWxsX21ham9yO1xcbi1cXHRcXHRnb3RvIGVycl9jb25mO1xcbi1cXHR9XFxuK1xcdGlmIChudWxsX21ham9yIFxcdTAwM2MgMClcXG4rXFx0XFx0cmV0dXJuIG51bGxfbWFqb3I7XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnJfZGV2aWNlczsgaSsrKSB7XFxuIFxcdFxcdHJldCA9IG51bGxfY3JlYXRlX2RldigpO1xcbkBAIC0yMTgwLDYgKzIxODUsMTAgQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXFxuIFxcdFxcdFxcdGdvdG8gZXJyX2RldjtcXG4gXFx0fVxcbiBcXG4rXFx0cmV0ID0gY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKFxcdTAwMjZudWxsYl9zdWJzeXMpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRnb3RvIGVycl9kZXY7XFxuK1xcbiBcXHRwcl9pbmZvKFxcXCJtb2R1bGUgbG9hZGVkXFxcXG5cXFwiKTtcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbkBAIC0yMTg5LDggKzIxOTgsOCBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcXG4gXFx0XFx0bnVsbF9kZXN0cm95X2RldihudWxsYik7XFxuIFxcdH1cXG4gXFx0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXFxcIm51bGxiXFxcIik7XFxuLWVycl9jb25mOlxcbi1cXHRjb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbShcXHUwMDI2bnVsbGJfc3Vic3lzKTtcXG4rXFx0aWYgKHRhZ19zZXQub3BzKVxcbitcXHRcXHRibGtfbXFfZnJlZV90YWdfc2V0KFxcdTAwMjZ0YWdfc2V0KTtcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG5AQCAtMjIwMCw4ICsyMjA5LDYgQEAgc3RhdGljIHZvaWQgX19leGl0IG51bGxfZXhpdCh2b2lkKVxcbiBcXG4gXFx0Y29uZmlnZnNfdW5yZWdpc3Rlcl9zdWJzeXN0ZW0oXFx1MDAyNm51bGxiX3N1YnN5cyk7XFxuIFxcbi1cXHR1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCBcXFwibnVsbGJcXFwiKTtcXG4tXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcbiBcXHR3aGlsZSAoIWxpc3RfZW1wdHkoXFx1MDAyNm51bGxiX2xpc3QpKSB7XFxuIFxcdFxcdG51bGxiID0gbGlzdF9lbnRyeShudWxsYl9saXN0Lm5leHQsIHN0cnVjdCBudWxsYiwgbGlzdCk7XFxuQEAgLTIyMDksNiArMjIxNiw4IEBAIHN0YXRpYyB2b2lkIF9fZXhpdCBudWxsX2V4aXQodm9pZClcXG4gXFx0fVxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNmxvY2spO1xcbiBcXG4rXFx0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXFxcIm51bGxiXFxcIik7XFxuK1xcbiBcXHRpZiAodGFnX3NldC5vcHMpXFxuIFxcdFxcdGJsa19tcV9mcmVlX3RhZ19zZXQoXFx1MDAyNnRhZ19zZXQpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDQ6MDA6MTcuMDM3NjA1MDgzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTM1OTk0NTQzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc1wiLFxuICAgIFwibnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc1wiLFxuICAgIFwibnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNcIixcbiAgICBcIm51bGxiX2RldmljZV9wb3dlcl9zaG93XCIsXG4gICAgXCJudWxsX2RlbF9kZXZcIixcbiAgICBcIm51bGxfZnJlZV9kZXZcIixcbiAgICBcIm51bGxiX2RldmljZV9zdWJtaXRfcXVldWVzX3N0b3JlXCIsXG4gICAgXCJudWxsYl9kZXZpY2VfcG9sbF9xdWV1ZXNfc3RvcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyByYWNlIGNvbmRpdGlvbnMgYW5kIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgaW4gdGhlIG51bGxfYmxrIGRyaXZlciBieSBhZGRpbmcgbXV0ZXggbG9ja3MgYXJvdW5kIGNvbmZpZ2ZzIGF0dHJpYnV0ZSBhY2Nlc3NlcyBhbmQgcmVqZWN0aW5nIHF1ZXVlIHVwZGF0ZXMgZm9yIHNoYXJlZCB0YWcgc2V0cy4gSXQgYWxzbyBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIHRlYXJkb3duIG9yZGVyLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBkcml2ZXIncyBjb25maWd1cmF0aW9uIGFuZCBsaWZlY3ljbGUgbWFuYWdlbWVudCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYzFlMTQ4NmIzM2U0ZTcyNWY5ZWE1N2U4OTQ1MmJlNmE2YzgzNmQ4MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDEwIDA0OjAwOjE1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuaW5kZXggZjhjMGZkNTdlMDQxYTguLmU4MjliNTAyOTgxYjNlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbisrKyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5AQCAtNjYsNyArNjYsNyBAQCBzdHJ1Y3QgbnVsbGJfcGFnZSB7XG4gI2RlZmluZSBOVUxMQl9QQUdFX0ZSRUUgKE1BUF9TWiAtIDIpXG4gXG4gc3RhdGljIExJU1RfSEVBRChudWxsYl9saXN0KTtcbi1zdGF0aWMgc3RydWN0IG11dGV4IGxvY2s7XG4rc3RhdGljIERFRklORV9NVVRFWChsb2NrKTtcbiBzdGF0aWMgaW50IG51bGxfbWFqb3I7XG4gc3RhdGljIERFRklORV9JREEobnVsbGJfaW5kZXhlcyk7XG4gc3RhdGljIHN0cnVjdCBibGtfbXFfdGFnX3NldCB0YWdfc2V0O1xuQEAgLTM0NSw4ICszNDUsMTQgQEAgc3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShib29sICp2YWwsIGNvbnN0IGNoYXIgKnBhZ2UsXG4gc3RhdGljIHNzaXplX3RcdFx0XHRcdFx0XHRcdFx0XFxcbiBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNoYXIgKnBhZ2UpXHRcXFxuIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuLVx0cmV0dXJuIG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3Nob3coXHRcdFx0XHRcXFxuK1x0c3NpemVfdCByZXQ7XHRcdFx0XHRcdFx0XHRcXFxuK1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1x0XHRcdFx0XHRcdFxcXG4rXHRyZXQgPSBudWxsYl9kZXZpY2VfIyNUWVBFIyNfYXR0cl9zaG93KFx0XHRcdFx0XFxcbiBcdFx0XHRcdHRvX251bGxiX2RldmljZShpdGVtKS1cdTAwM2VOQU1FLCBwYWdlKTtcdFxcXG4rXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XHRcdFx0XHRcdFx0XFxcbitcdFx0XHRcdFx0XHRcdFx0XHRcXFxuK1x0cmV0dXJuIHJldDtcdFx0XHRcdFx0XHRcdFxcXG4gfVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gc3RhdGljIHNzaXplX3RcdFx0XHRcdFx0XHRcdFx0XFxcbiBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjb25zdCBjaGFyICpwYWdlLFx0XFxcbkBAIC0zNjAsMTMgKzM2NiwxNyBAQCBudWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjb25zdCBjaGFyICpwYWdlLFx0XFxcbiBcdHJldCA9IG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3N0b3JlKFx1MDAyNm5ld192YWx1ZSwgcGFnZSwgY291bnQpO1xcXG4gXHRpZiAocmV0IFx1MDAzYyAwKVx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0cmV0dXJuIHJldDtcdFx0XHRcdFx0XHRcXFxuK1x0cmV0ID0gMDtcdFx0XHRcdFx0XHRcdFxcXG4rXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1x0XHRcdFx0XHRcdFxcXG4gXHRpZiAoYXBwbHlfZm4pXHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRyZXQgPSBhcHBseV9mbihkZXYsIG5ld192YWx1ZSk7XHRcdFx0XHRcXFxuIFx0ZWxzZSBpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncykpIFx0XFxcbiBcdFx0cmV0ID0gLUVCVVNZO1x0XHRcdFx0XHRcdFxcXG4rXHRpZiAoIXJldClcdFx0XHRcdFx0XHRcdFxcXG4rXHRcdGRldi1cdTAwM2VOQU1FID0gbmV3X3ZhbHVlO1x0XHRcdFx0XHRcXFxuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1x0XHRcdFx0XHRcdFxcXG4gXHRpZiAocmV0IFx1MDAzYyAwKVx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0cmV0dXJuIHJldDtcdFx0XHRcdFx0XHRcXFxuLVx0ZGV2LVx1MDAzZU5BTUUgPSBuZXdfdmFsdWU7XHRcdFx0XHRcdFx0XFxcbiBcdHJldHVybiBjb3VudDtcdFx0XHRcdFx0XHRcdFxcXG4gfVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gQ09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBOQU1FKTtcbkBAIC0zODIsNiArMzkyLDE1IEBAIHN0YXRpYyBpbnQgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4gXHRpZiAoIWRldi1cdTAwM2VudWxsYilcbiBcdFx0cmV0dXJuIDA7XG4gXG4rXHQvKlxuK1x0ICogQSBzaGFyZWQgdGFnX3NldCBpcyBtYXBwZWQgdmlhIHRoZSBtb2R1bGUtd2lkZSBxdWV1ZSBjb3VudHMsIHNvIGFcbitcdCAqIHBlci1kZXZpY2UgcmVzaXplIGlzIG1lYW5pbmdsZXNzLiBPbiBzaHJpbmsgaXQgd291bGQgYWxzbyBsZWF2ZVxuK1x0ICogbXFfbWFwW10gcG9pbnRpbmcgYXQgTlVMTGVkIGhjdHggc2xvdHMsIGNhdXNpbmcgYSBOVUxMIGRlcmVmIGluXG4rXHQgKiBibGtfbXFfbWFwX3N3cXVldWUoKS4gUmVqZWN0IGl0LlxuK1x0ICovXG4rXHRpZiAoZGV2LVx1MDAzZW51bGxiLVx1MDAzZXRhZ19zZXQgPT0gXHUwMDI2dGFnX3NldClcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4gXHQvKlxuIFx0ICogTWFrZSBzdXJlIGF0IGxlYXN0IG9uZSBzdWJtaXQgcXVldWUgZXhpc3RzLlxuIFx0ICovXG5AQCAtNDIxLDI1ICs0NDAsMTMgQEAgc3RhdGljIGludCBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldixcbiBzdGF0aWMgaW50IG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMoc3RydWN0IG51bGxiX2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgc3VibWl0X3F1ZXVlcylcbiB7XG4tXHRpbnQgcmV0O1xuLVxuLVx0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbi1cdHJldCA9IG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXMoZGV2LCBzdWJtaXRfcXVldWVzLCBkZXYtXHUwMDNlcG9sbF9xdWV1ZXMpO1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuLVxuLVx0cmV0dXJuIHJldDtcbitcdHJldHVybiBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgc3VibWl0X3F1ZXVlcywgZGV2LVx1MDAzZXBvbGxfcXVldWVzKTtcbiB9XG4gXG4gc3RhdGljIGludCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXG4gXHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgcG9sbF9xdWV1ZXMpXG4ge1xuLVx0aW50IHJldDtcbi1cbi1cdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4tXHRyZXQgPSBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzKGRldiwgZGV2LVx1MDAzZXN1Ym1pdF9xdWV1ZXMsIHBvbGxfcXVldWVzKTtcbi1cdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbi1cbi1cdHJldHVybiByZXQ7XG4rXHRyZXR1cm4gbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlcyhkZXYsIGRldi1cdTAwM2VzdWJtaXRfcXVldWVzLCBwb2xsX3F1ZXVlcyk7XG4gfVxuIFxuIE5VTExCX0RFVklDRV9BVFRSKHNpemUsIHVsb25nLCBOVUxMKTtcbkBAIC00NzgsNyArNDg1LDEzIEBAIE5VTExCX0RFVklDRV9BVFRSKGJhZGJsb2Nrc19wYXJ0aWFsX2lvLCBib29sLCBOVUxMKTtcbiBcbiBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sIGNoYXIgKnBhZ2UpXG4ge1xuLVx0cmV0dXJuIG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyh0b19udWxsYl9kZXZpY2UoaXRlbSktXHUwMDNlcG93ZXIsIHBhZ2UpO1xuK1x0c3NpemVfdCByZXQ7XG4rXG4rXHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuK1x0cmV0ID0gbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zaG93KHRvX251bGxiX2RldmljZShpdGVtKS1cdTAwM2Vwb3dlciwgcGFnZSk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4rXG4rXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuQEAgLTgzNiw3ICs4NDksNiBAQCBzdGF0aWMgdm9pZCBudWxsX2ZyZWVfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbiBcdGlmICghZGV2KVxuIFx0XHRyZXR1cm47XG4gXG4tXHRudWxsX2ZyZWVfem9uZWRfZGV2KGRldik7XG4gXHRiYWRibG9ja3NfZXhpdChcdTAwMjZkZXYtXHUwMDNlYmFkYmxvY2tzKTtcbiBcdGtmcmVlKGRldik7XG4gfVxuQEAgLTE3NzAsMTggKzE3ODIsMTkgQEAgc3RhdGljIHZvaWQgbnVsbF9kZWxfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXG4gXG4gXHRkZWxfZ2VuZGlzayhudWxsYi1cdTAwM2VkaXNrKTtcbiBcbi1cdGlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfVEhST1RUTEVELCBcdTAwMjZudWxsYi1cdTAwM2VkZXYtXHUwMDNlZmxhZ3MpKSB7XG4rXHRpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX1RIUk9UVExFRCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSkge1xuIFx0XHRocnRpbWVyX2NhbmNlbChcdTAwMjZudWxsYi1cdTAwM2Vid190aW1lcik7XG4gXHRcdGF0b21pY19sb25nX3NldChcdTAwMjZudWxsYi1cdTAwM2VjdXJfYnl0ZXMsIExPTkdfTUFYKTtcbiBcdFx0YmxrX21xX3N0YXJ0X3N0b3BwZWRfaHdfcXVldWVzKG51bGxiLVx1MDAzZXEsIHRydWUpO1xuIFx0fVxuIFxuIFx0cHV0X2Rpc2sobnVsbGItXHUwMDNlZGlzayk7XG4rXHRudWxsX2ZyZWVfem9uZWRfZGV2KGRldik7XG4gXHRpZiAobnVsbGItXHUwMDNldGFnX3NldCA9PSBcdTAwMjZudWxsYi1cdTAwM2VfX3RhZ19zZXQpXG4gXHRcdGJsa19tcV9mcmVlX3RhZ19zZXQobnVsbGItXHUwMDNldGFnX3NldCk7XG4gXHRrZnJlZShudWxsYi1cdTAwM2VxdWV1ZXMpO1xuIFx0aWYgKG51bGxfY2FjaGVfYWN0aXZlKG51bGxiKSlcbi1cdFx0bnVsbF9mcmVlX2RldmljZV9zdG9yYWdlKG51bGxiLVx1MDAzZWRldiwgdHJ1ZSk7XG4rXHRcdG51bGxfZnJlZV9kZXZpY2Vfc3RvcmFnZShkZXYsIHRydWUpO1xuIFx0a2ZyZWUobnVsbGIpO1xuIFx0ZGV2LVx1MDAzZW51bGxiID0gTlVMTDtcbiB9XG5AQCAtMjE2MiwxNyArMjE3NSw5IEBAIHN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxuIFx0Y29uZmlnX2dyb3VwX2luaXQoXHUwMDI2bnVsbGJfc3Vic3lzLnN1X2dyb3VwKTtcbiBcdG11dGV4X2luaXQoXHUwMDI2bnVsbGJfc3Vic3lzLnN1X211dGV4KTtcbiBcbi1cdHJldCA9IGNvbmZpZ2ZzX3JlZ2lzdGVyX3N1YnN5c3RlbShcdTAwMjZudWxsYl9zdWJzeXMpO1xuLVx0aWYgKHJldClcbi1cdFx0cmV0dXJuIHJldDtcbi1cbi1cdG11dGV4X2luaXQoXHUwMDI2bG9jayk7XG4tXG4gXHRudWxsX21ham9yID0gcmVnaXN0ZXJfYmxrZGV2KDAsIFwibnVsbGJcIik7XG4tXHRpZiAobnVsbF9tYWpvciBcdTAwM2MgMCkge1xuLVx0XHRyZXQgPSBudWxsX21ham9yO1xuLVx0XHRnb3RvIGVycl9jb25mO1xuLVx0fVxuK1x0aWYgKG51bGxfbWFqb3IgXHUwMDNjIDApXG4rXHRcdHJldHVybiBudWxsX21ham9yO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfZGV2aWNlczsgaSsrKSB7XG4gXHRcdHJldCA9IG51bGxfY3JlYXRlX2RldigpO1xuQEAgLTIxODAsNiArMjE4NSwxMCBAQCBzdGF0aWMgaW50IF9faW5pdCBudWxsX2luaXQodm9pZClcbiBcdFx0XHRnb3RvIGVycl9kZXY7XG4gXHR9XG4gXG4rXHRyZXQgPSBjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oXHUwMDI2bnVsbGJfc3Vic3lzKTtcbitcdGlmIChyZXQpXG4rXHRcdGdvdG8gZXJyX2RldjtcbitcbiBcdHByX2luZm8oXCJtb2R1bGUgbG9hZGVkXFxuXCIpO1xuIFx0cmV0dXJuIDA7XG4gXG5AQCAtMjE4OSw4ICsyMTk4LDggQEAgc3RhdGljIGludCBfX2luaXQgbnVsbF9pbml0KHZvaWQpXG4gXHRcdG51bGxfZGVzdHJveV9kZXYobnVsbGIpO1xuIFx0fVxuIFx0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXCJudWxsYlwiKTtcbi1lcnJfY29uZjpcbi1cdGNvbmZpZ2ZzX3VucmVnaXN0ZXJfc3Vic3lzdGVtKFx1MDAyNm51bGxiX3N1YnN5cyk7XG4rXHRpZiAodGFnX3NldC5vcHMpXG4rXHRcdGJsa19tcV9mcmVlX3RhZ19zZXQoXHUwMDI2dGFnX3NldCk7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbkBAIC0yMjAwLDggKzIyMDksNiBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbnVsbF9leGl0KHZvaWQpXG4gXG4gXHRjb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbShcdTAwMjZudWxsYl9zdWJzeXMpO1xuIFxuLVx0dW5yZWdpc3Rlcl9ibGtkZXYobnVsbF9tYWpvciwgXCJudWxsYlwiKTtcbi1cbiBcdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG4gXHR3aGlsZSAoIWxpc3RfZW1wdHkoXHUwMDI2bnVsbGJfbGlzdCkpIHtcbiBcdFx0bnVsbGIgPSBsaXN0X2VudHJ5KG51bGxiX2xpc3QubmV4dCwgc3RydWN0IG51bGxiLCBsaXN0KTtcbkBAIC0yMjA5LDYgKzIyMTYsOCBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgbnVsbF9leGl0KHZvaWQpXG4gXHR9XG4gXHRtdXRleF91bmxvY2soXHUwMDI2bG9jayk7XG4gXG4rXHR1bnJlZ2lzdGVyX2Jsa2RldihudWxsX21ham9yLCBcIm51bGxiXCIpO1xuK1xuIFx0aWYgKHRhZ19zZXQub3BzKVxuIFx0XHRibGtfbXFfZnJlZV90YWdfc2V0KFx1MDAyNnRhZ19zZXQpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDQ6MDA6MTcuMDM3NjA3MDYzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjUyNzE2Njc2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBOdWxsIEJsb2NrIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIGRvd24gdGhpcyBgbnVsbF9ibGtgIGRyaXZlciBwYXRjaC4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBpcyBhIGZvY3VzZWQgZWZmb3J0IHRvIHRpZ2h0ZW4gdXAgdGhlIGRyaXZlcidzIHRocmVhZCBzYWZldHkgYW5kIGZpeCBzb21lIGNyaXRpY2FsIGJ1Z3MuXG5cbkZpcnN0bHksIHRoZSBjaGFuZ2UgZnJvbSBgc3RhdGljIHN0cnVjdCBtdXRleCBsb2NrO2AgdG8gYHN0YXRpYyBERUZJTkVfTVVURVgobG9jayk7YCBhbmQgdGhlIHJlbW92YWwgb2YgdGhlIGV4cGxpY2l0IGBtdXRleF9pbml0KClgIGNhbGwgaXMgcHJldHR5IHN0YW5kYXJkLiBJdCdzIGEgY2xlYW5lciBpbml0aWFsaXphdGlvbiBtZXRob2QgYW5kIHJlZHVjZXMgdGhlIGNoYW5jZXMgb2YgZXJyb3JzLiBUaGVuLCB3cmFwcGluZyB0aGUgYG51bGxiX2RldmljZV8jI1RZUEUjI19hdHRyX3Nob3dgIGFuZCBgbnVsbGJfZGV2aWNlXyMjVFlQRSMjX2F0dHJfc3RvcmVgIGZ1bmN0aW9ucyB3aXRoIGBtdXRleF9sb2NrYCBhbmQgYG11dGV4X3VubG9ja2AgY2FsbHMgaXMgYSBjbGVhciBpbmRpY2F0aW9uIG9mIGEgcmFjZSBjb25kaXRpb24gZml4IHdpdGhpbiB0aGUgY29uZmlnZnMgbWFjcm9zLiBUaGlzIGlzIGdvb2QgdG8gc2VlIGFzIGNvbmZpZ2ZzIGNhbiBiZSB0cmlja3kgdG8gbWFuYWdlIGNvbmN1cnJlbmN5IGluLlxuXG5UaGUgcmVqZWN0aW9uIG9mIHF1ZXVlIHVwZGF0ZXMgaWYgdGhlIHRhZyBzZXQgaXMgc2hhcmVkIGluIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCBpcyBhbHNvIHNtYXJ0LiBUaGlzIHN1Z2dlc3RzIHRoZXkndmUgaWRlbnRpZmllZCBhIHNwZWNpZmljIHNjZW5hcmlvIHdoZXJlIHNoYXJlZCB0YWcgc2V0cyB3ZXJlIGNhdXNpbmcgaXNzdWVzLiBSZW1vdmluZyB0aGUgbXV0ZXggbG9ja3MgZnJvbSBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AgYW5kIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AgaW4gdGhlIG1hY3JvcyBtYWtlcyBzZW5zZSBzaW5jZSB0aGUgY2FsbGVyIG5vdyBoYW5kbGVzIHRoZSBsb2NraW5nLiBJdCdzIGEgbG9naWNhbCBzaW1wbGlmaWNhdGlvbiBiYXNlZCBvbiB0aGUgcHJldmlvdXMgY2hhbmdlcy4gVGhlIGFkZGl0aW9uIG9mIHRoZSBsb2NrIGFyb3VuZCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3dgIGNvbXBsZXRlcyB0aGUgbXV0ZXggaW1wbGVtZW50YXRpb24uXG5cblRoZSBtb3ZlIG9mIGBudWxsX2ZyZWVfem9uZWRfZGV2KGRldilgIGZyb20gYG51bGxfZnJlZV9kZXZgIHRvIGBudWxsX2RlbF9kZXZgIGFuZCB0aGUgcmVvcmRlcmluZyBvZiBgY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtYCBhbmQgYHJlZ2lzdGVyX2Jsa2RldmAgKGFuZCB0aGVpciB1bnJlZ2lzdGVyIGNvdW50ZXJwYXJ0cykgYXJlIGhvdXNla2VlcGluZyBjaGFuZ2VzIGJ1dCBjYW4gYmUgc2lnbmlmaWNhbnQuIFRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24gc2VxdWVuY2UgY2FuIGJlIGNvbXBsZXgsIGFuZCB0aGVzZSBjaGFuZ2VzIGNvdWxkIGJlIGFpbWVkIGF0IGFkZHJlc3NpbmcgcmFjZSBjb25kaXRpb25zIG9yIGVuc3VyaW5nIHJlc291cmNlcyBhcmUgcHJvcGVybHkgbWFuYWdlZCBpbiBhIHNwZWNpZmljIG9yZGVyLlxuXG5HaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2VzIOKAkyBtdXRleGVzLCBwb2ludGVyIGRlcmVmZXJlbmNlcywgcmVvcmRlcmluZyBvZiBpbml0L2V4aXQgc3RlcHMg4oCTIEknbSB0aGlua2luZyB0aGlzIGlzIHByb2JhYmx5IGEgZ29vZCBjYW5kaWRhdGUgZm9yIHNvbWUgcmlnb3JvdXMgZnV6emluZy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gbWFrZSBzdXJlIGBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS2AgaXMgZW5hYmxlZC4gSXQncyB0aW1lIHRvIGZpcmUgdXAgYGdyZXBwZXJgIGFuZCBzZWUgd2hhdCB0aGUgYnVpbGQgY29uZmlnIHNheXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMzksIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNDowMDoyMy41NjQ3NzU5NDRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEwMTUwMjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJMS19ERVZfTlVMTF9CTEtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9NYWtlZmlsZT0zNT1vYmotJChDT05GSUdfQkxLX0RFVl9STkJEKVxcdCs9IHJuYmQvXFxuZHJpdmVycy9ibG9jay9NYWtlZmlsZS0zNi1cXG5kcml2ZXJzL2Jsb2NrL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19CTEtfREVWX05VTExfQkxLKVxcdCs9IG51bGxfYmxrL1xcbmRyaXZlcnMvYmxvY2svTWFrZWZpbGUtMzgtb2JqLSQoQ09ORklHX0JMS19ERVZfUlVTVF9OVUxMKSArPSBybnVsbC9cXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy01LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzo2OmNvbmZpZyBCTEtfREVWX05VTExfQkxLXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIk51bGwgdGVzdCBibG9jayBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctOS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6MTA6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTExLVxcdGJvb2wgXFxcIlN1cHBvcnQgZmF1bHQgaW5qZWN0aW9uIGZvciBOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzoxMjpcXHRkZXBlbmRzIG9uIEJMS19ERVZfTlVMTF9CTEsgXFx1MDAyNlxcdTAwMjYgRkFVTFRfSU5KRUNUSU9OX0NPTkZJR0ZTXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL01ha2VmaWxlPTQ9Y2NmbGFncy15XFx0XFx0XFx0Kz0gLUkkKHNyYylcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL01ha2VmaWxlLTUtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19CTEtfREVWX05VTExfQkxLKVxcdCs9IG51bGxfYmxrLm9cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL01ha2VmaWxlLTctbnVsbF9ibGstb2Jqc1xcdFxcdFxcdDo9IG1haW4ub1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjEtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjI6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIzLXN0YXRpYyBERUNMQVJFX0ZBVUxUX0FUVFIobnVsbF90aW1lb3V0X2F0dHIpO1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9OTg9TU9EVUxFX1BBUk1fREVTQyhob21lX25vZGUsIFxcXCJIb21lIG5vZGUgZm9yIHRoZSBkZXZpY2VcXFwiKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy05OS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxMDA6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTEwMS0vKlxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NjYyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgY29uZmlnX2l0ZW1fdHlwZSBudWxsYl9kZXZpY2VfdHlwZSA9IHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTY2Ny1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo2Njg6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTY2OS1cXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTc5MD1zdGF0aWMgc3RydWN0IG51bGxiX2RldmljZSAqbnVsbF9hbGxvY19kZXYodm9pZClcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTc5Ny1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo3OTg6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTc5OS1cXHRkZXYtXFx1MDAzZXRpbWVvdXRfY29uZmlnLmF0dHIgPSBudWxsX3RpbWVvdXRfYXR0cjtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE0OTY9c3RhdGljIHZvaWQgbnVsbGJfc2V0dXBfYnd0aW1lcihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMTUwNC1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNTA1OiNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNTA2LVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTg5OD1zdGF0aWMgaW50IG51bGxfdmFsaWRhdGVfY29uZihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTQwLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE5NDE6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE5NDItc3RhdGljIGJvb2wgX19udWxsX3NldHVwX2ZhdWx0KHN0cnVjdCBmYXVsdF9hdHRyICphdHRyLCBjaGFyICpzdHIpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xOTU1PXN0YXRpYyBib29sIG51bGxfc2V0dXBfZmF1bHQodm9pZClcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTU2LXtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxOTU3OiNpZmRlZiBDT05GSUdfQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTU4LVxcdGlmICghX19udWxsX3NldHVwX2ZhdWx0KFxcdTAwMjZudWxsX3RpbWVvdXRfYXR0ciwgZ190aW1lb3V0X3N0cikpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmg9NTM9c3RydWN0IG51bGxiX2RldmljZSB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmgtNTUtXFx0c3RydWN0IGNvbmZpZ19ncm91cCBncm91cDtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL251bGxfYmxrLmg6NTY6I2lmZGVmIENPTkZJR19CTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbnVsbF9ibGsuaC01Ny1cXHRzdHJ1Y3QgZmF1bHRfY29uZmlnIHRpbWVvdXRfY29uZmlnO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNDowMDoyMy44NzQ5MzM1MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMDUxNDY3NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGZvciB0aGUgbnVsbCBibG9jayBkZXZpY2UgZHJpdmVyLiBUaGUgY3J1Y2lhbCBjb25maWcgb3B0aW9uLCBhcyBJIHNlZSBpdCwgaXMgYEJMS19ERVZfTlVMTF9CTEtgLiBUaGF0J3Mgd2hlcmUgaXQgYWxsIHN0YXJ0cy5cblxuTG9va2luZyBhdCB0aGUgY29kZSBjaGFuZ2VzLCBpdCBhcHBlYXJzIHRoZSBwYXRjaCB0b3VjaGVzIHNldmVyYWwgZnVuY3Rpb25zOiBgbnVsbGJfdXBkYXRlX25yX2h3X3F1ZXVlc2AsIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCwgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYCwgYG51bGxfZnJlZV9kZXZgLCBgbnVsbF9kZWxfZGV2YCwgYW5kIHRoZW4gdGhlIG1vZHVsZSBpbml0aWFsaXphdGlvbiBhbmQgZXhpdCBmdW5jdGlvbnMgYG51bGxfaW5pdGAgYW5kIGBudWxsX2V4aXRgLiBUaGUgcGF0Y2ggYWxzbyB0b3VjaGVzIHRoZSBjb25maWdmcyBtYWNyb3MgbGlrZSBgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3Nob3dgIGFuZCBgbnVsbGJfZGV2aWNlXyMjTkFNRSMjX3N0b3JlYC5cblxuQWxyaWdodCwgSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIGludGVyZXN0aW5nIGJpdHMgZm9yIGZ1enppbmcuIGBudWxsX2luaXRgIGFuZCBgbnVsbF9leGl0YCBhcmUgbW9kdWxlIGxpZmVjeWNsZSBmdW5jdGlvbnMsIG5vdCB0aGUgYmVzdCBmb3IgZnV6emluZyBkaXJlY3RseSwgYWx0aG91Z2ggdGhleSBzZXQgdXAgdGhlIGVudmlyb25tZW50LlxuXG5UaGUgY29uZmlnZnMgc3RvcmUvc2hvdyBmdW5jdGlvbnMgc2VlbSB0byBiZSBnZW5lcmF0ZWQgYnkgbWFjcm9zLCBwYXJ0aWN1bGFybHkgYENPTkZJR0ZTX0FUVFIobnVsbGJfZGV2aWNlXywgTkFNRSk7YCBpbiBgZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNgLiBUaG9zZSBtYWNyb3MgYXJlIGdvaW5nIHRvIGdlbmVyYXRlIGZ1bmN0aW9ucywgc3VjaCBhcyBgbnVsbGJfZGV2aWNlX3N1Ym1pdF9xdWV1ZXNfc3RvcmVgLlxuXG5MZXQncyBmb2N1cyBvbiB0aGUga2V5IGZ1bmN0aW9ucyBtb2RpZmllZCB0byBzZWUgd2hhdCB0aGUgY2hhbmdlcyBpbXBseSBhYm91dCB0aGUgZnVuY3Rpb25hbGl0eS4gV2UgbmVlZCB0byBsb29rIGNsb3NlbHkgYXQgYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgLCBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AsIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AsIGBudWxsX2RlbF9kZXZgLCBhbmQgYG51bGxfZnJlZV9kZXZgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlc2Ugd2lsbCBiZWhhdmUgdW5kZXIgdmFyaW91cyBpbnB1dHMuIFRoYXQncyB3aGVyZSB0aGUgaW50ZXJlc3RpbmcgZnV6emluZyB0YXJnZXRzIGxpZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE5NSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNDowMDoyOC45ODAwODI5MDdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2OTczMjEyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdGU19BVFRSXFxcXChudWxsYl9kZXZpY2VfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTM1OD1udWxsYl9kZXZpY2VfIyNOQU1FIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLCBjb25zdCBjaGFyICpwYWdlLFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTM4MS19XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjM4MjpDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIE5BTUUpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTM4My1cXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTQ5Nz1zdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTM1LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjUzNjpDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIHBvd2VyKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MzctXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz01NDU9c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2JhZGJsb2Nrc19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01ODgtfVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjU4OTpDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIGJhZGJsb2Nrcyk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTkwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNDowMDozMC4wNDk4MjE0MTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjE3NDUzODcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNYWNybydzIElubmVyIFdvcmtpbmdzKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzLiBCZWZvcmUgSSBldmVuIGNvbnNpZGVyIHBvdGVudGlhbCBvcHRpbWl6YXRpb25zIG9yIGFsdGVybmF0aXZlIGFwcHJvYWNoZXMsIEknbSBnb2luZyB0byBkcmlsbCBkb3duIHRvIHRoZSBmdW5kYW1lbnRhbCBidWlsZGluZyBibG9jay4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIGRpc3NlY3RpbmcgdGhlIG1hY3JvIGRlZmluaXRpb24gaXRzZWxmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZXhwYW5zaW9uLCB0aGUgbnVhbmNlcyBvZiBhbnkgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgaXQgZW1wbG95cywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgYnJvYWRlciBjb2RlIGNvbnRleHQuIElzIHRoZXJlIGFueSByb29tIGZvciBhbWJpZ3VpdHk/IFBvdGVudGlhbCBzaWRlIGVmZmVjdHMgSSdtIG92ZXJsb29raW5nPyBUaGlzIGluaXRpYWwgY2hlY2sgaXMgY3J1Y2lhbDsgSSBjYW4ndCBidWlsZCBhIHJvYnVzdCB1bmRlcnN0YW5kaW5nIHdpdGhvdXQgYSBzb2xpZCBncmFzcCBvZiBpdHMgYmFzaWMgbWVjaGFuaWNzLiBUaW1lIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzIG9mIHRoZSBtYWNybyBkZWZpbml0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjE4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNDowMDozNC4yNjcyNzc1NzJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk0MTQ2ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTlVMTEJfREVWSUNFX0FUVFJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MzI5PXN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9ib29sX2F0dHJfc3RvcmUoYm9vbCAqdmFsLCBjb25zdCBjaGFyICpwYWdlLFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMzQzLS8qIFRoZSBmb2xsb3dpbmcgbWFjcm8gc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoIFRZUEUgPSB7dWludCwgdWxvbmcsIGJvb2x9LiAqL1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjM0NDojZGVmaW5lIE5VTExCX0RFVklDRV9BVFRSKE5BTUUsIFRZUEUsIEFQUExZKVxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0zNDUtc3RhdGljIHNzaXplX3RcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00NDY9c3RhdGljIGludCBudWxsYl9hcHBseV9wb2xsX3F1ZXVlcyhzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00NTEtXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDUyOk5VTExCX0RFVklDRV9BVFRSKHNpemUsIHVsb25nLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTM6TlVMTEJfREVWSUNFX0FUVFIoY29tcGxldGlvbl9uc2VjLCB1bG9uZywgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDU0Ok5VTExCX0RFVklDRV9BVFRSKHN1Ym1pdF9xdWV1ZXMsIHVpbnQsIG51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXMpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1NTpOVUxMQl9ERVZJQ0VfQVRUUihwb2xsX3F1ZXVlcywgdWludCwgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXMpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1NjpOVUxMQl9ERVZJQ0VfQVRUUihob21lX25vZGUsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ1NzpOVUxMQl9ERVZJQ0VfQVRUUihxdWV1ZV9tb2RlLCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTg6TlVMTEJfREVWSUNFX0FUVFIoYmxvY2tzaXplLCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NTk6TlVMTEJfREVWSUNFX0FUVFIobWF4X3NlY3RvcnMsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2MDpOVUxMQl9ERVZJQ0VfQVRUUihpcnFtb2RlLCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjE6TlVMTEJfREVWSUNFX0FUVFIoaHdfcXVldWVfZGVwdGgsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2MjpOVUxMQl9ERVZJQ0VfQVRUUihpbmRleCwgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDYzOk5VTExCX0RFVklDRV9BVFRSKGJsb2NraW5nLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjQ6TlVMTEJfREVWSUNFX0FUVFIodXNlX3Blcl9ub2RlX2hjdHgsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2NTpOVUxMQl9ERVZJQ0VfQVRUUihtZW1vcnlfYmFja2VkLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NjY6TlVMTEJfREVWSUNFX0FUVFIoZGlzY2FyZCwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY3Ok5VTExCX0RFVklDRV9BVFRSKG1icHMsIHVpbnQsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ2ODpOVUxMQl9ERVZJQ0VfQVRUUihjYWNoZV9zaXplLCB1bG9uZywgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDY5Ok5VTExCX0RFVklDRV9BVFRSKHpvbmVkLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzA6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9zaXplLCB1bG9uZywgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDcxOk5VTExCX0RFVklDRV9BVFRSKHpvbmVfY2FwYWNpdHksIHVsb25nLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzI6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9ucl9jb252LCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzM6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9tYXhfb3BlbiwgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc0Ok5VTExCX0RFVklDRV9BVFRSKHpvbmVfbWF4X2FjdGl2ZSwgdWludCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc1Ok5VTExCX0RFVklDRV9BVFRSKHpvbmVfYXBwZW5kX21heF9zZWN0b3JzLCB1aW50LCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0NzY6TlVMTEJfREVWSUNFX0FUVFIoem9uZV9mdWxsLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Nzc6TlVMTEJfREVWSUNFX0FUVFIodmlydF9ib3VuZGFyeSwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDc4Ok5VTExCX0RFVklDRV9BVFRSKG5vX3NjaGVkLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0Nzk6TlVMTEJfREVWSUNFX0FUVFIoc2hhcmVkX3RhZ3MsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ4MDpOVUxMQl9ERVZJQ0VfQVRUUihzaGFyZWRfdGFnX2JpdG1hcCwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDgxOk5VTExCX0RFVklDRV9BVFRSKGZ1YSwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDgyOk5VTExCX0RFVklDRV9BVFRSKHJvdGF0aW9uYWwsIGJvb2wsIE5VTEwpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ4MzpOVUxMQl9ERVZJQ0VfQVRUUihiYWRibG9ja3Nfb25jZSwgYm9vbCwgTlVMTCk7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDg0Ok5VTExCX0RFVklDRV9BVFRSKGJhZGJsb2Nrc19wYXJ0aWFsX2lvLCBib29sLCBOVUxMKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00ODUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA0OjAwOjM0LjM0NjY5Nzk5OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg5OTc2NDkyNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCdzIEltcGFjdCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBmb2N1cyBpcyBkcmF3biB0byB0aGUgZnVuY3Rpb25zIGl0IHRvdWNoZXMuIEkgc2VlIGl0J3MgZGVhbGluZyB3aXRoIGEgbnVtYmVyIG9mIGBudWxsYl9kZXZpY2VfKmAgZnVuY3Rpb25zLiBTcGVjaWZpY2FsbHksIGBudWxsYl9kZXZpY2Vfc3VibWl0X3F1ZXVlc19zdG9yZWAsIGBudWxsYl9kZXZpY2VfcG9sbF9xdWV1ZXNfc3RvcmVgLCBhbmQgdGhlIHBvd2VyLXJlbGF0ZWQgb25lczogYG51bGxiX2RldmljZV9wb3dlcl9zaG93YCBhbmQgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGV4YWN0bHkgd2hpY2ggb25lcyBhcmUgKmFjdHVhbGx5KiBtb2RpZmllZC5cblxuSW5pdGlhbGx5LCBJIHNlZSBgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3dgIGlzIGRlZmluaXRlbHkgY2hhbmdlZCDigJMgdGhlIG11dGV4IGxvY2sgYW5kIHVubG9jayB3ZXJlIGFkZGVkLCBJIHNlZSB0aGF0IHJpZ2h0IGF3YXkgaW4gdGhlIGRpZmYuIEhvd2V2ZXIsIEnigJltIGdldHRpbmcgYSBiaXQgY29uZnVzZWQgYWJvdXQgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAuIEkgKnRob3VnaHQqIGl0IHdhcyBtb2RpZmllZCwgYnV0IHRoZSBkaWZmIGlzbid0IHNob3dpbmcgYW55IGNoYW5nZXMgdGhlcmUuIExldCBtZSBkb3VibGUtY2hlY2vigKYgTm8sIHRoZSBkaWZmIGRvZXNu4oCZdCBzaG93IGEgbW9kaWZpY2F0aW9uLiBPa2F5LCB0aGUgZGlmZiBqdXN0IHNob3dzIHRoZSBjb250ZXh0LCBhbmQgaXQncyBub3QgYWN0dWFsbHkgY2hhbmdlZCBpbiB0aGUgZGlmZi4gR290IGl0LlxuXG5Ob3csIHRob3NlIGBudWxsYl9kZXZpY2Vfc3VibWl0X3F1ZXVlc19zdG9yZWAgYW5kIGBudWxsYl9kZXZpY2VfcG9sbF9xdWV1ZXNfc3RvcmVgIGZ1bmN0aW9ucyBhcmUgZ2VuZXJhdGVkLCBhcmVuJ3QgdGhleT8gSSBzaG91bGQgY2hlY2sgdGhlbSwgYXMgdGhleSBhcmUga2V5IHRvIHF1ZXVlIG1hbmFnZW1lbnQuIEl0IGxvb2tzIGxpa2UgdGhleSBhcmUsIGluZGVlZCwgYW5kIGFyZSB0aHVzIGFsc28gbW9kaWZpZWQgYnkgdGhlIHBhdGNoIHZpYSB0aGUgbWFjcm8uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBncmFzcCB0aGUgaW1wbGljYXRpb25zIG9mIHRob3NlIGdlbmVyYXRlZCBmdW5jdGlvbnMuXG5cbkluIHRlcm1zIG9mIGZ1enppbmcgdGFyZ2V0cywgd2hpbGUgc3l6a2FsbGVyICpjYW4qIGZ1enogZ2VuZXJhdGVkIGZ1bmN0aW9ucywgSSBtaWdodCBiZSBiZXR0ZXIgb2ZmIHNwZWNpZnlpbmcgdGhlIGNyaXRpY2FsIG9uZXMgZGlyZWN0bHkuIEZyb20gd2hhdCBJ4oCZbSBzZWVpbmcsIGBudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzYCwgYG51bGxfZGVsX2RldmAsIGBudWxsX2ZyZWVfZGV2YCwgYW5kIG9mIGNvdXJzZSBgbnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3dgIHNlZW0gbGlrZSBnb29kIHN0YXJ0aW5nIHBvaW50cy4gSSBtaWdodCBhbHNvIGNvbnNpZGVyIGFkZGluZyBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AgYW5kIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AuXG5cblVsdGltYXRlbHksIEkgbmVlZCB0byBtYWtlICphYnNvbHV0ZWx5KiBzdXJlIHRoYXQgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgaXNu4oCZdCBtb2RpZmllZC4gSeKAmWxsIGdvIGJhY2sgYW5kIGNvbmZpcm0gdGhhdCBhZ2Fpbi4gSSBkb27igJl0IHdhbnQgdG8gbWlzcyBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODczNywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNDowMDo0My4zNDQzNDk4MzFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNDk2MjEyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NDg2PXN0YXRpYyBzc2l6ZV90IG51bGxiX2RldmljZV9wb3dlcl9zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTQ5Ni1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzo0OTc6c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00OTgtXFx0XFx0XFx0XFx0ICAgICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA0OjAwOjQzLjY2OTMxODMxNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTczODgxMDMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIFJlY2VudCBLZXJuZWwgQ2hhbmdlcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIGRvd24gdGhpcyBkaWZmLiBNeSBwcmltYXJ5IGNvbmNlcm4gaGVyZSBpcyB1bmRlcnN0YW5kaW5nIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgY2hhbmdlcywgcGFydGljdWxhcmx5IGhvdyB0aGV5IGFmZmVjdCB0aGUgdmlydHVhbCBibG9jayBkZXZpY2UsIGBudWxsYmAuIEl0J3MgcHJldHR5IGNsZWFyIHRoYXQgYG51bGxiX2RldmljZV9wb3dlcl9zaG93YCBpcyB0aGUgY2VudHJhbCBmdW5jdGlvbiBiZWluZyBtb2RpZmllZC4gVGhlIGludHJvZHVjdGlvbiBvZiB0aGUgYG11dGV4X2xvY2tgIGFuZCBgbXV0ZXhfdW5sb2NrYCBjYWxscyBhcm91bmQgdGhlIGBudWxsYl9kZXZpY2VfYm9vbF9hdHRyX3Nob3dgIGluZGljYXRlcyBhIGNoYW5nZSBpbiBob3cgdGhpcyBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQsIGxpa2VseSBmb3IgdGhyZWFkIHNhZmV0eS4gVGhpcyBpcyBpbXBvcnRhbnQgdG8gbm90ZSBhbmQgcG90ZW50aWFsbHkgc2lnbmlmaWNhbnQuXG5cbkJleW9uZCB0aGF0LCBJJ20gdGFraW5nIGEgYnJvYWRlciBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IGFuZCByZWxhdGVkIHN5bWJvbHMgdG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZS4gSSdtIGZvY3VzaW5nIG9uIHRoZXNlIGZ1bmN0aW9ucyBhbmQgdGhlaXIgcmVsYXRpb25zaGlwczogYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgLCBgbnVsbGJfYXBwbHlfc3VibWl0X3F1ZXVlc2AsIGBudWxsYl9hcHBseV9wb2xsX3F1ZXVlc2AsIGBudWxsX2RlbF9kZXZgLCBhbmQgYG51bGxfZnJlZV9kZXZgLCBiZWNhdXNlIHRoZXkgYXJlIGNsZWFybHkgY2VudHJhbCB0byB0aGUgZGV2aWNlJ3MgbGlmZWN5Y2xlIGFuZCBjb25maWd1cmF0aW9uLlxuXG5JIG5lZWQgdG8gcXVpY2tseSBjb25maXJtIHRoYXQgYG51bGxiX2RldmljZV9zdWJtaXRfcXVldWVzX3N0b3JlYCBpcyBhIHZhbGlkIHN5bWJvbC4gT2theSwgbG9va3MgbGlrZSBpdCdzIGdlbmVyYXRlZCBieSB0aGUgYE5VTExCX0RFVklDRV9BVFRSYCBtYWNybywgd2hpY2ggaXMgbmljZSBhbmQgY29udmVuaWVudC4gSSdtIGFsc28gZ29pbmcgdG8gYWRkIGBudWxsYl9kZXZpY2VfcG9sbF9xdWV1ZXNfc3RvcmVgIHRvIHRoZSBsaXN0IG9mIGltcG9ydGFudCBmdW5jdGlvbnMgdG8gY29uc2lkZXIsIGFzIGl0J3MgZ2VuZXJhdGVkIGJ5IHNpbWlsYXIgbWVhbnMuIFRoZSBgQ09ORklHRlNfQVRUUmAgbWFjcm9zIGFyZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBwaWN0dXJlIGhlcmUuIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayBob3cgdGhlc2UgbWFjcm9zIGFjdHVhbGx5IGV4cGFuZCwgYXMgSSdtIHRoaW5raW5nIHRoZXkgbWlnaHQgZ2VuZXJhdGUgc29tZXRoaW5nIGxpa2UgYG51bGxiX2RldmljZV9hdHRyX3N1Ym1pdF9xdWV1ZXNgIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGUgZXhhY3QgbmFtZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMDE1LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA0OjAwOjUwLjI0MzIwMTY3N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgwMDA0NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVmaW5lIENPTkZJR0ZTX0FUVFJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9jb25maWdmcy5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvY29uZmlnZnMuaD0xMTU9c3RydWN0IGNvbmZpZ2ZzX2F0dHJpYnV0ZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmgtMTIyLVxcbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaDoxMjM6I2RlZmluZSBDT05GSUdGU19BVFRSX1BFUk0oX3BmeCwgX25hbWUsIF9wZXJtKVxcdFxcdFxcXFxcXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmgtMTI0LXN0YXRpYyBzdHJ1Y3QgY29uZmlnZnNfYXR0cmlidXRlIF9wZngjI2F0dHJfIyNfbmFtZSA9IHtcXHRcXFxcXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmgtMTMxLVxcbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaDoxMzI6I2RlZmluZSBDT05GSUdGU19BVFRSKF9wZngsIF9uYW1lKSBDT05GSUdGU19BVFRSX1BFUk0oXFx0XFxcXFxcbmluY2x1ZGUvbGludXgvY29uZmlnZnMuaC0xMzMtXFx0XFx0X3BmeCwgX25hbWUsIFNfSVJVR08gfCBTX0lXVVNSXFx0XFx0XFxcXFxcbi0tXFxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oLTEzNS1cXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmg6MTM2OiNkZWZpbmUgQ09ORklHRlNfQVRUUl9STyhfcGZ4LCBfbmFtZSlcXHRcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oLTEzNy1zdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX2F0dHJpYnV0ZSBfcGZ4IyNhdHRyXyMjX25hbWUgPSB7XFx0XFxcXFxcbi0tXFxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oLTE0My1cXG5pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmg6MTQ0OiNkZWZpbmUgQ09ORklHRlNfQVRUUl9XTyhfcGZ4LCBfbmFtZSlcXHRcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9jb25maWdmcy5oLTE0NS1zdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX2F0dHJpYnV0ZSBfcGZ4IyNhdHRyXyMjX25hbWUgPSB7XFx0XFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNDowMDo1MC4zMDEyMDgxMjdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA3NjA2MTU0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgTnVsbCBCbG9jayBEZXZpY2UgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCB0aGUgYENPTkZJR0ZTX0FUVFJgIG1hY3JvLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGBudWxsYl9kZXZpY2VfYCBhdHRyaWJ1dGVzLCBpcyBnZW5lcmF0aW5nIGEgYHN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGVgIG5hbWVkIGBudWxsYl9kZXZpY2VfYXR0cl9OQU1FYC4gVGhhdCdzIGdvb2QuIEFuZCB0aGUgYXNzb2NpYXRlZCBzaG93IGFuZCBzdG9yZSBmdW5jdGlvbnMgYXJlIGJlaW5nIGRlZmluZWQgYXMgYG51bGxiX2RldmljZV8jI05BTUUjI19zaG93YCBhbmQgYG51bGxiX2RldmljZV8jI05BTUUjI19zdG9yZWAsIHdoaWNoIG1lYW5zIEknbSBjb3JyZWN0IGluIGV4cGVjdGluZyB0byBzZWUgYG51bGxiX2RldmljZV9zdWJtaXRfcXVldWVzX3N0b3JlYCBhbmQgYG51bGxiX2RldmljZV9wb2xsX3F1ZXVlc19zdG9yZWAuIEV4Y2VsbGVudCwgSSdsbCBkZWZpbml0ZWx5IGFkZCB0aG9zZSB0d28gZnVuY3Rpb25zIHRvIG15IGZvY3VzIHN5bWJvbHMuXG5cbk5vdywgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBvdmVyYWxsIGNvbmZpZ3VyYXRpb24uIEkga25vdyBgQ09ORklHX0JMS19ERVZfTlVMTF9CTEtgIGlzIHRoZSBjb3JlLCB0aGUgbWFpbiBjb25maWcgb3B0aW9uLiBJIGhhdmUgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzIHRob3VnaC4gSSBhbHNvIGtub3cgdGhhdCBgQ09ORklHX0NPTkZJR0ZTX0ZTYCBpcyByZXF1aXJlZCBmb3IgdGhlIGNvbmZpZ2ZzIHNldHVwLCBidXQgdGhlcmUncyBhIHRob3VnaHQuLi4gdGhlIGBCTEtfREVWX05VTExfQkxLYCBLY29uZmlnIGVudHJ5IGRvZXNuJ3Qgc3RyaWN0bHkgZGVwZW5kIG9uIGl0LiBUaGF0J3MgYSBwb2ludCBvZiBwb3RlbnRpYWwgY29uY2Vybi4gSSBzaG91bGQgcmVhbGx5IGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgaW4gYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZ2AgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIG9mIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJlbGF0aW9uc2hpcHMgaGVyZS4gSSBuZWVkIHRvIGJlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBmdWxsIGNvbmZpZ3VyYXRpb24gcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyNDQsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDQ6MDA6NTUuMzc3MjcyNjU5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjk1NDAzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJMS19ERVZfTlVMTF9CTEtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy01LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzo2OmNvbmZpZyBCTEtfREVWX05VTExfQkxLXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIk51bGwgdGVzdCBibG9jayBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctOS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6MTA6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTExLVxcdGJvb2wgXFxcIlN1cHBvcnQgZmF1bHQgaW5qZWN0aW9uIGZvciBOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNDowMDo1NS42MDY4MTY5NjlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgzNjM4MjM0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSBLY29uZmlnKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gRmlyc3Qgb3JkZXIgb2YgYnVzaW5lc3M6ICpLY29uZmlnKiDigJMgdGhlIGhlYXJ0IG9mIHRoZSBjb25maWd1cmF0aW9uIHByb2Nlc3MgZm9yIHRoZSBudWxsIGJsb2NrIGRyaXZlci4gSSBuZWVkIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBob3cgaXQncyBwcmVzZW50ZWQgaW4gdGhpcyBjb250ZXh0LiBTcGVjaWZpY2FsbHksIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWdgLiBJJ2xsIGJlIG1ldGljdWxvdXNseSBpbnNwZWN0aW5nIHRoaXMgZmlsZSB0byBncmFzcCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGF2YWlsYWJsZSwgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGhvc2Ugb3B0aW9ucywgYW5kIGFueSBpbXBsaWNhdGlvbnMgdGhleSBtaWdodCBoYXZlIG9uIHRoZSBvdmVyYWxsIGRyaXZlcidzIGZ1bmN0aW9uYWxpdHkuIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgd2hhdCBpcyBjb250cm9sbGFibGUgYW5kIGNvbmZpZ3VyYWJsZSB3aXRoaW4gdGhlIGRyaXZlciB0aHJvdWdoIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIGFuZCBob3cgdGhvc2UgY29uZmlndXJhdGlvbiBvcHRpb25zIHNoYXBlIGl0cyBiZWhhdmlvci4gRm9yIGV4YW1wbGUsIGFyZSB0aGVyZSBhbnkgcGVyZm9ybWFuY2UgdHJhZGUtb2ZmcyB0aGF0IGNhbiBiZSBtYWRlIGR1cmluZyBidWlsZCB0aW1lPyBJIHdpbGwgYWxzbyBldmFsdWF0ZSB3aGV0aGVyIHRoZSBjb25maWd1cmF0aW9ucyBhcmUgcHJlc2VudGVkIGluIGEgd2F5IHRoYXQgaXMgZWFzeSB0byB1bmRlcnN0YW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTk1MywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA0OjAxOjAwLjQ0MzIwMjU3MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mjc5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTnVsbCBibG9jayBkZXZpY2UgZHJpdmVyIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcbiAgIDg6XFx0XFx0c2VsZWN0IENPTkZJR0ZTX0ZTXFxuICAgOTpcXHRcXG4gIDEwOlxcdGNvbmZpZyBCTEtfREVWX05VTExfQkxLX0ZBVUxUX0lOSkVDVElPTlxcbiAgMTE6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBmYXVsdCBpbmplY3Rpb24gZm9yIE51bGwgdGVzdCBibG9jayBkcml2ZXJcXFwiXFxuICAxMjpcXHRcXHRkZXBlbmRzIG9uIEJMS19ERVZfTlVMTF9CTEsgXFx1MDAyNlxcdTAwMjYgRkFVTFRfSU5KRUNUSU9OX0NPTkZJR0ZTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA0OjAxOjAwLjQ0MzkzNjA3MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTg2NjY3MTc5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBDb25maWd1cmF0aW9uIGFuZCBMaWZlY3ljbGUgQ2hhbmdlcyBpbiBgbnVsbF9ibGtgIERyaXZlcioqXG5cbk9rYXksIHNvIEkndmUgemVyb2VkIGluIG9uIHRoZSBgbnVsbF9ibGtgIGRyaXZlci4gVGhlIGluaXRpYWwgY2x1ZSB3YXMgdGhlIHNlbGVjdGlvbiBvZiBgQ09ORklHRlNfRlNgLCB3aGljaCBpbXBsaWVzIGEgZm9jdXMgb24gY29uZmlnZnMgYXR0cmlidXRlcy4gRnJvbSB0aGVyZSwgSSBzZWUgdGhhdCB0aGUgcGF0Y2gncyBjb3JlIGlzIGFkZGluZyBtdXRleCBsb2NrcywgYWRkcmVzc2luZyByYWNlIGNvbmRpdGlvbnMsIGFuZCBoYW5kbGluZyBwb3RlbnRpYWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyB3aXRoaW4gdGhlIGRyaXZlci4gSXQgbG9va3MgbGlrZSBpdCBhbHNvIHJlamVjdHMgcXVldWUgdXBkYXRlcyBmb3Igc2hhcmVkIHRhZyBzZXRzLiBUaGlzIHN1Z2dlc3RzIGNoYW5nZXMgaW4gaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBjb25jdXJyZW50IGFjY2VzcyB0byBpdHMgY29uZmlndXJhdGlvbiBhbmQgc3RhdGUuIFRoaXMgc2hvdWxkIGJlIGZ1enplZCBoZWF2aWx5LlxuXG5JJ3ZlIGlkZW50aWZpZWQga2V5IGZ1bmN0aW9ucyBhbmQgYXR0cmlidXRlcyB0aGF0IGFyZSBkaXJlY3RseSBpbXBhY3RlZC4gSGVyZSdzIHdoYXQgSSd2ZSBkaXN0aWxsZWQ6XG5cbiogICAqKkNvcmUgRnVuY3Rpb25zIFx1MDAyNiBMaWZlY3ljbGU6KipcbiAgICAqICAgYG51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNgXG4gICAgKiAgIGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYFxuICAgICogICBgbnVsbGJfYXBwbHlfcG9sbF9xdWV1ZXNgXG4gICAgKiAgIGBudWxsYl9kZXZpY2VfcG93ZXJfc2hvd2BcbiAgICAqICAgYG51bGxfZGVsX2RldmBcbiAgICAqICAgYG51bGxfZnJlZV9kZXZgXG4qICAgKipNYWNyby1HZW5lcmF0ZWQgRnVuY3Rpb25zOioqXG4gICAgKiAgIGBudWxsYl9kZXZpY2Vfc3VibWl0X3F1ZXVlc19zdG9yZWBcbiAgICAqICAgYG51bGxiX2RldmljZV9wb2xsX3F1ZXVlc19zdG9yZWBcblxuV2hpbGUgdGhlIG1hY3JvIGdlbmVyYXRlcyBtdWx0aXBsZSBmdW5jdGlvbnMsIHRoZSBrZXkgcG9pbnQgaXMgdGhhdCB0aGUgdW5kZXJseWluZyBhcHBseSBmdW5jdGlvbnMgKGBudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzYCwgYG51bGxiX2FwcGx5X3BvbGxfcXVldWVzYCkgYXJlIGRpcmVjdGx5IGludm9sdmVkLCBzbyBJIGluY2x1ZGUgdGhlbSBhcyB3ZWxsLiBUaGUgbG9ja2luZyBjaGFuZ2UgYWZmZWN0cyBhbGwgbWFjcm8tZ2VuZXJhdGVkIGF0dHJpYnV0ZXMsIGJ1dCB0aGUgYF9zdG9yZWAgZnVuY3Rpb25zIGFyZSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcgYmVjYXVzZSB0aGV5IGludm9sdmUgdGhlIGBhcHBseV9mbmAgbG9naWMuIEl0J3MgdGhlIGBhcHBseV9mbmAgdGhhdCBpcyBhZmZlY3RlZCBieSB0aGUgbG9ja2luZy5cblxuSSBtYWRlIHN1cmUgSSBoYXZlIHRoZSBDT05GSUdzOlxuKiBgQkxLX0RFVl9OVUxMX0JMS2BcblxuTXkgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogVGhlIHBhdGNoJ3MgZnVuY3Rpb25hbCBjaGFuZ2VzIGludm9sdmUgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGxpZmVjeWNsZSBtYW5hZ2VtZW50IG9mIHRoZSBkcml2ZXIuIEFkZGluZyBtdXRleGVzLCBoYW5kbGluZyBzaGFyZWQgdGFnIHNldHMsIGFuZCByZW9yZGVyaW5nIGluaXRpYWxpemF0aW9uL3RlYXJkb3duIHBvaW50IGRpcmVjdGx5IHRvIHRoZXNlIGFyZWFzLiBJdCBpcyB0aGVyZWZvcmUgY3JpdGljYWwgdG8gZnV6eiB0aGUgZnVuY3Rpb25zIGxpc3RlZC5cblxuSSdtIG5vdyBzYXRpc2ZpZWQgd2l0aCB0aGlzIGFuYWx5c2lzLCBhbmQgYW0gcmVhZHkgdG8gcGFzcyB0aGlzIHRvIHRoZSBmdXp6ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzU3LCJPdXRwdXRUb2tlbnMiOjE5NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNDowMToxMi4zMTA2MTA5OThaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjkxODMyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OVUxMX0JMS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm51bGxiX3VwZGF0ZV9ucl9od19xdWV1ZXNcIixcbiAgICBcIm51bGxiX2FwcGx5X3N1Ym1pdF9xdWV1ZXNcIixcbiAgICBcIm51bGxiX2FwcGx5X3BvbGxfcXVldWVzXCIsXG4gICAgXCJudWxsYl9kZXZpY2VfcG93ZXJfc2hvd1wiLFxuICAgIFwibnVsbF9kZWxfZGV2XCIsXG4gICAgXCJudWxsX2ZyZWVfZGV2XCIsXG4gICAgXCJudWxsYl9kZXZpY2Vfc3VibWl0X3F1ZXVlc19zdG9yZVwiLFxuICAgIFwibnVsbGJfZGV2aWNlX3BvbGxfcXVldWVzX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgcmFjZSBjb25kaXRpb25zIGFuZCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGluIHRoZSBudWxsX2JsayBkcml2ZXIgYnkgYWRkaW5nIG11dGV4IGxvY2tzIGFyb3VuZCBjb25maWdmcyBhdHRyaWJ1dGUgYWNjZXNzZXMgYW5kIHJlamVjdGluZyBxdWV1ZSB1cGRhdGVzIGZvciBzaGFyZWQgdGFnIHNldHMuIEl0IGFsc28gbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93biBvcmRlci4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZHJpdmVyJ3MgY29uZmlndXJhdGlvbiBhbmQgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfTlVMTF9CTEtcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudWxsYl91cGRhdGVfbnJfaHdfcXVldWVzXCIsXG4gICAgXCJudWxsYl9hcHBseV9zdWJtaXRfcXVldWVzXCIsXG4gICAgXCJudWxsYl9hcHBseV9wb2xsX3F1ZXVlc1wiLFxuICAgIFwibnVsbGJfZGV2aWNlX3Bvd2VyX3Nob3dcIixcbiAgICBcIm51bGxfZGVsX2RldlwiLFxuICAgIFwibnVsbF9mcmVlX2RldlwiLFxuICAgIFwibnVsbGJfZGV2aWNlX3N1Ym1pdF9xdWV1ZXNfc3RvcmVcIixcbiAgICBcIm51bGxiX2RldmljZV9wb2xsX3F1ZXVlc19zdG9yZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIHJhY2UgY29uZGl0aW9ucyBhbmQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyIGJ5IGFkZGluZyBtdXRleCBsb2NrcyBhcm91bmQgY29uZmlnZnMgYXR0cmlidXRlIGFjY2Vzc2VzIGFuZCByZWplY3RpbmcgcXVldWUgdXBkYXRlcyBmb3Igc2hhcmVkIHRhZyBzZXRzLiBJdCBhbHNvIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24gb3JkZXIuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGRyaXZlcidzIGNvbmZpZ3VyYXRpb24gYW5kIGxpZmVjeWNsZSBtYW5hZ2VtZW50IHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowx8zv5[1] Phase: Succeeded StartedAt: 2026-07-10 04:01:24 +0000 UTC FinishedAt: 2026-07-10 04:01:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8zv5[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-10 04:01:24 +0000 UTC FinishedAt: 2026-07-10 04:01:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8zv5[2] Phase: Succeeded StartedAt: 2026-07-10 04:01:24 +0000 UTC FinishedAt: 2026-07-10 08:23:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 04:01:24 +0000 UTC FinishedAt: 2026-07-10 08:23:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 04:01:24 +0000 UTC FinishedAt: 2026-07-10 04:01:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 04:01:24 +0000 UTC FinishedAt: 2026-07-10 04:01:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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-workflowx8zv5/series-workflowx8zv5-convert-artifact-679733519/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 04:01:45 +0000 UTC FinishedAt: 2026-07-10 04:36:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 04:01:45 +0000 UTC FinishedAt: 2026-07-10 04:36:39 +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:*e169b59c-a8fd-4a0c-b676-8a7dce33d0b0,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-workflowx8zv5/series-workflowx8zv5-convert-artifact-679733519/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": "49587934-7f98-4749-ac90-5e9aa42995f4", "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-workflowx8zv5/series-workflowx8zv5-build-action-3618756181/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 04:01:45 +0000 UTC FinishedAt: 2026-07-10 04:36:29 +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:*e169b59c-a8fd-4a0c-b676-8a7dce33d0b0,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-workflowx8zv5/series-workflowx8zv5-convert-artifact-679733519/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": "49587934-7f98-4749-ac90-5e9aa42995f4", "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-workflowx8zv5/series-workflowx8zv5-build-action-3618756181/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 04:36:39 +0000 UTC FinishedAt: 2026-07-10 04:36:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 04:36:39 +0000 UTC FinishedAt: 2026-07-10 04:36:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 04:36:39 +0000 UTC FinishedAt: 2026-07-10 04:36:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 04:36:39 +0000 UTC FinishedAt: 2026-07-10 04:36:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-workflowx8zv5/series-workflowx8zv5-convert-artifact-1122365278/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 04:36:49 +0000 UTC FinishedAt: 2026-07-10 04:39:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 04:36:49 +0000 UTC FinishedAt: 2026-07-10 04:39:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*49587934-7f98-4749-ac90-5e9aa42995f4,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-workflowx8zv5/series-workflowx8zv5-build-action-3618756181/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-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 04:39:30 +0000 UTC FinishedAt: 2026-07-10 04:39:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 04:39:30 +0000 UTC FinishedAt: 2026-07-10 04:39:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 04:39:30 +0000 UTC FinishedAt: 2026-07-10 05:19:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 04:39:30 +0000 UTC FinishedAt: 2026-07-10 05:19:26 +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:*e169b59c-a8fd-4a0c-b676-8a7dce33d0b0,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-workflowx8zv5/series-workflowx8zv5-convert-artifact-1122365278/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": "856922c9-c57b-42b0-a75a-5c16e772abc4", "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-workflowx8zv5/series-workflowx8zv5-build-action-633813042/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 04:39:30 +0000 UTC FinishedAt: 2026-07-10 05:19:16 +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:*e169b59c-a8fd-4a0c-b676-8a7dce33d0b0,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-workflowx8zv5/series-workflowx8zv5-convert-artifact-1122365278/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": "856922c9-c57b-42b0-a75a-5c16e772abc4", "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-workflowx8zv5/series-workflowx8zv5-build-action-633813042/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 05:19:26 +0000 UTC FinishedAt: 2026-07-10 05:19:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 05:19:26 +0000 UTC FinishedAt: 2026-07-10 05:19:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 05:19:26 +0000 UTC FinishedAt: 2026-07-10 05:21:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 05:19:26 +0000 UTC FinishedAt: 2026-07-10 05:21:33 +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:*856922c9-c57b-42b0-a75a-5c16e772abc4,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-workflowx8zv5/series-workflowx8zv5-build-action-633813042/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-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 05:21:42 +0000 UTC FinishedAt: 2026-07-10 08:23:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 05:21:42 +0000 UTC FinishedAt: 2026-07-10 08:23:47 +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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"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:*49587934-7f98-4749-ac90-5e9aa42995f4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*856922c9-c57b-42b0-a75a-5c16e772abc4,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-workflowx8zv5/series-workflowx8zv5-build-action-3618756181/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-workflowx8zv5/series-workflowx8zv5-build-action-633813042/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 05:21:42 +0000 UTC FinishedAt: 2026-07-10 05:21:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 05:21:42 +0000 UTC FinishedAt: 2026-07-10 05:21:47 +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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"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-workflowx8zv5/series-workflowx8zv5-convert-artifact-2543520611/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 05:21:42 +0000 UTC FinishedAt: 2026-07-10 05:21:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 05:21:42 +0000 UTC FinishedAt: 2026-07-10 05:21:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 05:21:42 +0000 UTC FinishedAt: 2026-07-10 05:21:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 05:21:52 +0000 UTC FinishedAt: 2026-07-10 08:23:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8zv5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"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","null_del_dev","null_free_dev","nullb_device_submit_queues_store","nullb_device_poll_queues_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a635d6748234582ea287c5ffeae28b9b23f91c7e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"806d3df5-a9a0-4d96-b2c2-7b2fc9d17479","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-10 05:21:52 +0000 UTC FinishedAt: 2026-07-10 08:23:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*49587934-7f98-4749-ac90-5e9aa42995f4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*856922c9-c57b-42b0-a75a-5c16e772abc4,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-workflowx8zv5/series-workflowx8zv5-build-action-3618756181/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-workflowx8zv5/series-workflowx8zv5-build-action-633813042/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-workflowx8zv5/series-workflowx8zv5-convert-artifact-2543520611/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,}