Name: series-workflowqvfwz Phase: Succeeded StartedAt: 2026-06-24 07:39:56 +0000 UTC FinishedAt: 2026-06-24 12:24:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvfwz[0] Phase: Succeeded StartedAt: 2026-06-24 07:39:56 +0000 UTC FinishedAt: 2026-06-24 08:01:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvfwz[0].run-triage Phase: Succeeded StartedAt: 2026-06-24 07:39:56 +0000 UTC FinishedAt: 2026-06-24 08:01:51 +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": "558ef39aeb9a089a6be9dda8413b0b9d42e843ea", "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": "558ef39aeb9a089a6be9dda8413b0b9d42e843ea", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK" ], "series_id": "86fcf2d8-3af6-4ffc-b978-60342e8c123f" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "null_add_dev", "nullb_device_power_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+CgkJCTx0ZD4yMDI2LzA2LzI0IDA4OjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudWxsX2FkZF9kZXYmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgdGltZXIgbGVhay91c2UtYWZ0ZXItZnJlZSBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgbnVsbF9hZGRfZGV2YCBieSBjYW5jZWxsaW5nIGBid190aW1lcmAgaWYgdGhlIGRldmljZSBpcyB0aHJvdHRsZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyLCByZWFjaGFibGUgdmlhIGNvbmZpZ2ZzIChgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCkgb3IgbW9kdWxlIGluaXRpYWxpemF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA4OjAwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjQzNDJiZWI2OWY3MWVmOTg2NzdjYjVhMjBkYWYxZDk1NjFlMzhmNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVuIDI0IDA4OjAwOjU1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbmluZGV4IGY4YzBmZDU3ZTA0MWE4Li44ZjFhZDc2NzEwYTA3OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuQEAgLTIwNjIsNiAmIzQzOzIwNjIsOCBAQCBzdGF0aWMgaW50IG51bGxfYWRkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXG4gb3V0X2lkYV9mcmVlOlxuIFx0aWRhX2ZyZWUoXHUwMDI2bnVsbGJfaW5kZXhlcywgbnVsbGItXHUwMDNlaW5kZXgpO1xuIG91dF9jbGVhbnVwX2Rpc2s6XG4mIzQzO1x0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncykpXG4mIzQzO1x0XHRocnRpbWVyX2NhbmNlbChcdTAwMjZudWxsYi1cdTAwM2Vid190aW1lcik7XG4gXHRwdXRfZGlzayhudWxsYi1cdTAwM2VkaXNrKTtcbiBvdXRfY2xlYW51cF96b25lOlxuIFx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA4OjAwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudWxsX2FkZF9kZXYmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgdGltZXIgbGVhay91c2UtYWZ0ZXItZnJlZSBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgbnVsbF9hZGRfZGV2YCBieSBjYW5jZWxsaW5nIGBid190aW1lcmAgaWYgdGhlIGRldmljZSBpcyB0aHJvdHRsZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyLCByZWFjaGFibGUgdmlhIGNvbmZpZ2ZzIChgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCkgb3IgbW9kdWxlIGluaXRpYWxpemF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiNDM0MmJlYjY5ZjcxZWY5ODY3N2NiNWEyMGRhZjFkOTU2MWUzOGY1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdW4gMjQgMDg6MDA6NTUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jCmluZGV4IGY4YzBmZDU3ZTA0MWE4Li44ZjFhZDc2NzEwYTA3OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKQEAgLTIwNjIsNiAmIzQzOzIwNjIsOCBAQCBzdGF0aWMgaW50IG51bGxfYWRkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpCiBvdXRfaWRhX2ZyZWU6CiAJaWRhX2ZyZWUoJmFtcDtudWxsYl9pbmRleGVzLCBudWxsYi0mZ3Q7aW5kZXgpOwogb3V0X2NsZWFudXBfZGlzazoKJiM0MzsJaWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsICZhbXA7ZGV2LSZndDtmbGFncykpCiYjNDM7CQlocnRpbWVyX2NhbmNlbCgmYW1wO251bGxiLSZndDtid190aW1lcik7CiAJcHV0X2Rpc2sobnVsbGItJmd0O2Rpc2spOwogb3V0X2NsZWFudXBfem9uZToKIAludWxsX2ZyZWVfem9uZWRfZGV2KGRldik7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA4OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NTQKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2ggaW4gbnVsbF9ibGsqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY2AuIE15IGluaXRpYWwgc2NhbiBzdWdnZXN0cyBpdCYjMzk7cyBhbHRlcmluZyB0aGUgYG51bGxfYWRkX2RldmAgZnVuY3Rpb24sIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IGNhbGxzIG91dCB0aGF0IGl0JiMzOTtzIGludHJvZHVjaW5nIGEgY2hlY2sgYW5kIHRoZW4gdXNpbmcgYGhydGltZXJfY2FuY2VsKCZhbXA7bnVsbGItJmd0O2J3X3RpbWVyKWAgaW4gdGhlIGVycm9yIHBhdGggb2YgdGhhdCBmdW5jdGlvbi4gVGhhdCYjMzk7cyBpbW1lZGlhdGVseSB0ZWxsaW5nOyBpdCBpbmRpY2F0ZXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gb3IgcmVzb3VyY2UgbGVhayBpc3N1ZSByZWxhdGVkIHRvIHRoZSBiYW5kd2lkdGggdGltZXIgd2hlbiBkZXZpY2UgYWRkaXRpb24gZmFpbHMuIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGNvZGUgbm93IHRvIHVuZGVyc3RhbmQgdGhlIHByZWNpc2UgY29udGV4dCBvZiBgbnVsbF9hZGRfZGV2YCBhbmQgaG93IHRoaXMgdGltZXIgaXMgYmVpbmcgdXNlZCwgc28gSSBjYW4gc2VlIHdoeSBhIGNhbmNlbCBpcyBuZWNlc3Nhcnkgb24gZmFpbHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwODowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjA1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMDUwOlx0XHR9XG4yMDUxOlx0XG4yMDUyOlx0XHRydiA9IGFkZF9kaXNrKG51bGxiLVx1MDAzZWRpc2spO1xuMjA1MzpcdFx0aWYgKHJ2KVxuMjA1NDpcdFx0XHRnb3RvIG91dF9pZGFfZnJlZTtcbjIwNTU6XHRcbjIwNTY6XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2bnVsbGItXHUwMDNlbGlzdCwgXHUwMDI2bnVsbGJfbGlzdCk7XG4yMDU3Olx0XG4yMDU4Olx0XHRwcl9pbmZvKFwmIzM0O2Rpc2sgJXMgY3JlYXRlZFxcblwmIzM0OywgbnVsbGItXHUwMDNlZGlza19uYW1lKTtcbjIwNTk6XHRcbjIwNjA6XHRcdHJldHVybiAwO1xuMjA2MTpcdFxuMjA2MjpcdG91dF9pZGFfZnJlZTpcbjIwNjM6XHRcdGlkYV9mcmVlKFx1MDAyNm51bGxiX2luZGV4ZXMsIG51bGxiLVx1MDAzZWluZGV4KTtcbjIwNjQ6XHRvdXRfY2xlYW51cF9kaXNrOlxuMjA2NTpcdFx0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncykpXG4yMDY2Olx0XHRcdGhydGltZXJfY2FuY2VsKFx1MDAyNm51bGxiLVx1MDAzZWJ3X3RpbWVyKTtcbjIwNjc6XHRcdHB1dF9kaXNrKG51bGxiLVx1MDAzZWRpc2spO1xuMjA2ODpcdG91dF9jbGVhbnVwX3pvbmU6XG4yMDY5Olx0XHRudWxsX2ZyZWVfem9uZWRfZGV2KGRldik7XG4yMDcwOlx0b3V0X2NsZWFudXBfdGFnczpcbjIwNzE6XHRcdGlmIChudWxsYi1cdTAwM2V0YWdfc2V0ID09IFx1MDAyNm51bGxiLVx1MDAzZV9fdGFnX3NldClcbjIwNzI6XHRcdFx0YmxrX21xX2ZyZWVfdGFnX3NldChudWxsYi1cdTAwM2V0YWdfc2V0KTtcbjIwNzM6XHRvdXRfY2xlYW51cF9xdWV1ZXM6XG4yMDc0Olx0XHRrZnJlZShudWxsYi1cdTAwM2VxdWV1ZXMpO1xuMjA3NTpcdG91dF9mcmVlX251bGxiOlxuMjA3NjpcdFx0a2ZyZWUobnVsbGIpO1xuMjA3NzpcdFx0ZGV2LVx1MDAzZW51bGxiID0gTlVMTDtcbjIwNzg6XHRvdXQ6XG4yMDc5Olx0XHRyZXR1cm4gcnY7XG4yMDgwOlx0fVxuMjA4MTpcdFxuMjA4MjpcdHN0YXRpYyBzdHJ1Y3QgbnVsbGIgKm51bGxfZmluZF9kZXZfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKVxuMjA4MzpcdHtcbjIwODQ6XHRcdHN0cnVjdCBudWxsYiAqbnVsbGIgPSBOVUxMLCAqbmI7XG4yMDg1Olx0XG4yMDg2Olx0XHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuMjA4NzpcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShuYiwgXHUwMDI2bnVsbGJfbGlzdCwgbGlzdCkge1xuMjA4ODpcdFx0XHRpZiAoc3RyY21wKG5iLVx1MDAzZWRpc2tfbmFtZSwgbmFtZSkgPT0gMCkge1xuMjA4OTpcdFx0XHRcdG51bGxiID0gbmI7XG4yMDkwOlx0XHRcdFx0YnJlYWs7XG4yMDkxOlx0XHRcdH1cbjIwOTI6XHRcdH1cbjIwOTM6XHRcdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbjIwOTQ6XHRcbjIwOTU6XHRcdHJldHVybiBudWxsYjtcbjIwOTY6XHR9XG4yMDk3Olx0XG4yMDk4Olx0c3RhdGljIGludCBudWxsX2NyZWF0ZV9kZXYodm9pZClcbjIwOTk6XHR7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDg6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgzMQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENyaXRpY2FsIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBmdW5jdGlvbmFsIGZpeCDigJMgZ29vZCEgSXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSBhZGRpbmcgYGhydGltZXJfY2FuY2VsKCZhbXA7bnVsbGItJmd0O2J3X3RpbWVyKWAgdG8gdGhlIGVycm9yIGhhbmRsaW5nIHBhdGggb2YgdGhlIGBudWxsX2FkZF9kZXZgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIHRoaXMgaXMgbGlrZWx5IGFkZHJlc3NpbmcgYSBwcmV0dHkgc2VyaW91cyBpc3N1ZS4gVGhlIGRlc2NyaXB0aW9uIGltcGxpZXMgZWl0aGVyIGEgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8gb3IgYSB0aW1lciBsZWFrLiBJJiMzOTt2ZSBzZWVuIGJvdGggb2YgdGhvc2UgYml0ZSB1cyBiZWZvcmUsIHNvIHRoaXMgd2FycmFudHMgYSBjbG9zZXIgbG9vay4KCk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGZsb3cuIEkgbmVlZCB0byB0cmFjZSAqaG93KiBgbnVsbF9hZGRfZGV2YCBpcyBpbnZva2VkLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsaW5nIGNvbnRleHQgaXMgY3J1Y2lhbCB0byBmdWxseSBncmFzcCB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiB0aGlzIGZpeCBhbmQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb24gaXMgaW50cm9kdWNlZC4gSSBuZWVkIHRvIGZpbmQgYWxsIGluc3RhbmNlcyB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoaW4gdGhlIHJlbGV2YW50IGNvZGUgYmFzZS4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgZmlndXJlIG91dCB0aGUgYmlnZ2VyIHBpY3R1cmUgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwODowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudWxsX2FkZF9kZXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yNzU9c3RhdGljIHZvaWQgbnVsbF9kZWxfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mjc2OnN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yNzctc3RhdGljIHN0cnVjdCBudWxsYiAqbnVsbF9maW5kX2Rldl9ieV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUpO1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTQ4ND1zdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTUwMC1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjUwMTpcdFx0cmV0ID0gbnVsbF9hZGRfZGV2KGRldik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MDItXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xOTQyPXN0YXRpYyBib29sIG51bGxfc2V0dXBfZmF1bHQodm9pZClcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTU0LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTk1NTpzdGF0aWMgaW50IG51bGxfYWRkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTU2LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yMDk4PXN0YXRpYyBpbnQgbnVsbF9jcmVhdGVfZGV2KHZvaWQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjEwNy1cdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMTA4Olx0cmV0ID0gbnVsbF9hZGRfZGV2KGRldik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTA5LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA4OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NTMKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBOdWxsIEJsb2NrIERldmljZSBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIHNlZWluZyB0aGlzIGNvZGUgY2FsbGVkIGZyb20gYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgYW5kIGBudWxsX2NyZWF0ZV9kZXZgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgcmVsYXRlZCB0byB0aGUgbnVsbCBibG9jayBkZXZpY2UsIGxpa2VseSBpbml0aWFsaXphdGlvbiBvciBwb3dlciBtYW5hZ2VtZW50LiBNeSBtYWluIGludGVyZXN0IGlzIGluICpob3cqIHRoaXMgYG51bGxfYmxrYCBpcyBjb25maWd1cmVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHBhcmFtZXRlcnMsIGZsYWdzLCBvciBkZXBlbmRlbmNpZXMgYXJlIGF0IHBsYXkuIEFyZSB0aGVyZSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMsIG1vZHVsZSBwYXJhbWV0ZXJzLCBvciBkZXZpY2UgdHJlZSBlbnRyaWVzIHRoYXQgZ292ZXJuIGl0cyBiZWhhdmlvcj8gSXMgdGhlcmUgYW55IGR5bmFtaWMgY29uZmlndXJhdGlvbiBpbnZvbHZlZD8gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSByZWxldmFudCBjb25maWcgZmlsZXMgYW5kIGNvZGUgcGF0aHMgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgc2V0dXAgcmVxdWlyZW1lbnRzLiBUaGUgZ29hbCBoZXJlIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgc28gSSBjYW4gYW50aWNpcGF0ZSBhbnkgaXNzdWVzIGRvd24gdGhlIHJvYWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDg6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJMS19ERVZfTlVMTF9CTEsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctNS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzo2OmNvbmZpZyBCTEtfREVWX05VTExfQkxLXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O051bGwgdGVzdCBibG9jayBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctOS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzoxMDpjb25maWcgQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy0xMS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmYXVsdCBpbmplY3Rpb24gZm9yIE51bGwgdGVzdCBibG9jayBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwODowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTQ2CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIEJsb2NrIERldmljZSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24sIGFuZCBpdCBzZWVtcyBsaWtlIGBCTEtfREVWX05VTExfQkxLYCBpcyB0aGUga2V5IGlkZW50aWZpZXIgaGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGNvbmZpZyByZXByZXNlbnRzIGluIHRoZSBicm9hZGVyIGNvbnRleHQuIE15IGZpcnN0IHRob3VnaHQgaXM6IGFyZSB0aGVyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBJIG5lZWQgdG8gY2hlY2sgYXJvdW5kIHRoZSBjb2RlYmFzZSB0byBzZWUgaWYgdGhlcmUgYXJlIHBhcmFsbGVsIGNvbmZpZ3VyYXRpb25zIG9yIGFzc29jaWF0ZWQgcGFyYW1ldGVycyB0byBmdWxseSBncmFzcCB0aGUgaW50ZW50IGFuZCBpbXBsaWNhdGlvbnMgb2YgYEJMS19ERVZfTlVMTF9CTEtgLiBJIG5lZWQgdG8gZ2V0IHRoZSB3aG9sZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwODowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudWxsX2JsayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWc9MTc9aWYgQkxLX0RFVlxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE4LVxuZHJpdmVycy9ibG9jay9LY29uZmlnOjE5OnNvdXJjZSBcJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yMC1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9ibG9jay9ybnVsbC9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA4OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMDgKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqQW5hbHl6aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSBDcmVhdGlvbiBQcm9jZXNzKioKClJpZ2h0LCBzbyB0aGUgY29uZmlndXJhdGlvbiBpbiBxdWVzdGlvbiBpcyBgQkxLX0RFVl9OVUxMX0JMS2AuIFRoYXQgaW1tZWRpYXRlbHkgc2V0cyB0aGUgc3RhZ2UuIE15IGZvY3VzLCB0aGVuLCBuZWVkcyB0byBiZSBvbiBgbnVsbF9hZGRfZGV2YC4gQnV0IGhvbGQgb24sIEkgcmVjYWxsIHRoYXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgbWVhbnMgaXRzIHNjb3BlIGlzIGxpbWl0ZWQsIHNvIHRoYXQgaXNuJiMzOTt0IHRoZSBvbmx5IHBpZWNlLiBJIGFsc28gbmVlZCB0byBjb25zaWRlciByZWxhdGVkIGZ1bmN0aW9ucyBsaWtlIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIGFuZCBtb3N0IGltcG9ydGFudGx5IGBudWxsX2NyZWF0ZV9kZXZgLiBJdCBzZWVtcyB0byBtZSwgYG51bGxfY3JlYXRlX2RldmAgaXMgdGhlIG1vc3QgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBudWxsIGJsb2NrIGRldmljZSBpcyBhY3R1YWxseSBzZXQgdXAsIHNvIEkmIzM5O2xsIHByaW9yaXRpemUgdW5kZXJzdGFuZGluZyB0aGF0IGZ1bmN0aW9uIGZpcnN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwODowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudWxsX2NyZWF0ZV9kZXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yMDgyPXN0YXRpYyBzdHJ1Y3QgbnVsbGIgKm51bGxfZmluZF9kZXZfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwOTctXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMDk4OnN0YXRpYyBpbnQgbnVsbF9jcmVhdGVfZGV2KHZvaWQpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDk5LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yMTI3PXN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxNzktXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9kZXZpY2VzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjE4MDpcdFx0cmV0ID0gbnVsbF9jcmVhdGVfZGV2KCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTgxLVx0XHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwODowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzA3CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSBzZWUgdGhpcyBwbGF5aW5nIG91dDoKCioqQW5hbHl6aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSBJbml0aWFsaXphdGlvbioqCgpBbHJpZ2h0LCBzbyBgbnVsbF9jcmVhdGVfZGV2YCBpcyBpbml0aWF0ZWQgZnJvbSBgbnVsbF9pbml0YC4gVGhhdCYjMzk7cyBzdGFuZGFyZCBpbml0aWFsaXphdGlvbi4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCDigJMgdGhlIGRldmljZSBpcyBjcmVhdGVkIGR1cmluZyBtb2R1bGUgbG9hZC4gSG93ZXZlciwgdGhlIGludGVyZXN0aW5nIGJpdCBhcHBlYXJzIHRvIGJlIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIGFuZCBpdHMgY29ubmVjdGlvbiB0byBjb25maWdmcy4gSXQmIzM5O3MgdGltZSB0byBkZWx2ZSBkZWVwZXIuIE15IGF0dGVudGlvbiBub3cgc2hpZnRzIHRvIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGl0IGRvZXMgYW5kIGhvdyBwb3dlciBtYW5hZ2VtZW50IGludGVyYWN0cyB3aXRoIHRoZSBkZXZpY2UgY3JlYXRpb24gYW5kIGZpbGVzeXN0ZW0gY29uZmlndXJhdGlvbi4gVGhpcyBpcyBsaWtlbHkgd2hlcmUgdGhlIG51YW5jZXMgbGllLCBnaXZlbiB0aGUgaW50ZWdyYXRpb24gd2l0aCBjb25maWdmcy4gTGV0JiMzOTtzIHNlZSBob3cgdGhlIHBvd2VyIHN0YXRlIGlzIGJlaW5nIGhhbmRsZWQuIEkmIzM5O2xsIG5lZWQgdG8gZGlzc2VjdCBpdHMgcHVycG9zZSBhbmQgaW1wbGVtZW50YXRpb24gYW5kIGFzY2VydGFpbiB3aGF0IGVmZmVjdHMgaXQgd2lsbCBoYXZlIG9uIHRoZSBvdmVyYWxsIGRldmljZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDg6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDgwOlx0e1xuIDQ4MTpcdFx0cmV0dXJuIG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyh0b19udWxsYl9kZXZpY2UoaXRlbSktXHUwMDNlcG93ZXIsIHBhZ2UpO1xuIDQ4MjpcdH1cbiA0ODM6XHRcbiA0ODQ6XHRzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuIDQ4NTpcdFx0XHRcdFx0ICAgICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXG4gNDg2Olx0e1xuIDQ4NzpcdFx0c3RydWN0IG51bGxiX2RldmljZSAqZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pO1xuIDQ4ODpcdFx0Ym9vbCBuZXdwID0gZmFsc2U7XG4gNDg5Olx0XHRzc2l6ZV90IHJldDtcbiA0OTA6XHRcbiA0OTE6XHRcdHJldCA9IG51bGxiX2RldmljZV9ib29sX2F0dHJfc3RvcmUoXHUwMDI2bmV3cCwgcGFnZSwgY291bnQpO1xuIDQ5MjpcdFx0aWYgKHJldCBcdTAwM2MgMClcbiA0OTM6XHRcdFx0cmV0dXJuIHJldDtcbiA0OTQ6XHRcbiA0OTU6XHRcdHJldCA9IGNvdW50O1xuIDQ5NjpcdFx0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbiA0OTc6XHRcdGlmICghZGV2LVx1MDAzZXBvd2VyIFx1MDAyNlx1MDAyNiBuZXdwKSB7XG4gNDk4Olx0XHRcdGlmICh0ZXN0X2FuZF9zZXRfYml0KE5VTExCX0RFVl9GTF9VUCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSlcbiA0OTk6XHRcdFx0XHRnb3RvIG91dDtcbiA1MDA6XHRcbiA1MDE6XHRcdFx0cmV0ID0gbnVsbF9hZGRfZGV2KGRldik7XG4gNTAyOlx0XHRcdGlmIChyZXQpIHtcbiA1MDM6XHRcdFx0XHRjbGVhcl9iaXQoTlVMTEJfREVWX0ZMX1VQLCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpO1xuIDUwNDpcdFx0XHRcdGdvdG8gb3V0O1xuIDUwNTpcdFx0XHR9XG4gNTA2Olx0XG4gNTA3Olx0XHRcdHNldF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncyk7XG4gNTA4Olx0XHRcdGRldi1cdTAwM2Vwb3dlciA9IG5ld3A7XG4gNTA5Olx0XHRcdHJldCA9IGNvdW50O1xuIDUxMDpcdFx0fSBlbHNlIGlmIChkZXYtXHUwMDNlcG93ZXIgXHUwMDI2XHUwMDI2ICFuZXdwKSB7XG4gNTExOlx0XHRcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTlVMTEJfREVWX0ZMX1VQLCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpKSB7XG4gNTEyOlx0XHRcdFx0ZGV2LVx1MDAzZXBvd2VyID0gbmV3cDtcbiA1MTM6XHRcdFx0XHRudWxsX2RlbF9kZXYoZGV2LVx1MDAzZW51bGxiKTtcbiA1MTQ6XHRcdFx0fVxuIDUxNTpcdFx0XHRjbGVhcl9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncyk7XG4gNTE2Olx0XHR9XG4gNTE3Olx0XG4gNTE4Olx0b3V0OlxuIDUxOTpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuIDUyMDpcdFx0cmV0dXJuIHJldDtcbiA1MjE6XHR9XG4gNTIyOlx0XG4gNTIzOlx0Q09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBwb3dlcik7XG4gNTI0Olx0XG4gNTI1Olx0c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2JhZGJsb2Nrc19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcbiA1MjY6XHR7XG4gNTI3Olx0XHRzdHJ1Y3QgbnVsbGJfZGV2aWNlICp0X2RldiA9IHRvX251bGxiX2RldmljZShpdGVtKTtcbiA1Mjg6XHRcbiA1Mjk6XHRcdHJldHVybiBiYWRibG9ja3Nfc2hvdyhcdTAwMjZ0X2Rldi1cdTAwM2ViYWRibG9ja3MsIHBhZ2UsIDApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwODowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzM1CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENvbmZpZ0ZTIEF0dHJpYnV0ZSBTdG9yZSBGaXgqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBsb29raW5nIGxpa2UgaXQmIzM5O3MgYSBDb25maWdGUyBhdHRyaWJ1dGUgc3RvcmUgZnVuY3Rpb24uIFJpZ2h0LCBzbywgQ29uZmlnRlMsIHRoYXQgbWVhbnMgaXQmIzM5O3MgYWNjZXNzaWJsZSBmcm9tIHVzZXJzcGFjZSDigJMgd2hpY2ggaXMgaW1wb3J0YW50LiBUaGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24gY2FuIHRyaWdnZXIgYG51bGxfYWRkX2RldmAuIEdvdCBpdC4KClRoaXMgcGF0Y2gsIGFwcGFyZW50bHksIGlzIGZpeGluZyBhIHRpbWVyIGxlYWsgYW5kIGEgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eSB3aXRoaW4gdGhlIGVycm9yIGhhbmRsaW5nIHBhdGggb2YgYG51bGxfYWRkX2RldmAuIFNvdW5kcyBsaWtlIGEgc29saWQgZnVuY3Rpb25hbCBjaGFuZ2UsIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlJiMzOTtkIHdhbnQgdG8gaW5jb3Jwb3JhdGUuIENvbnNpZGVyaW5nIHRoZSBuYXR1cmUgb2YgdGhlIGZpeCwgSSYjMzk7ZCBzYXkgdGhpcyBpcyAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IGZvciBzdXJlLgoKSSYjMzk7bGwgZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIGBudWxsX2FkZF9kZXZgIGFuZCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCwgc2luY2UgdGhleSYjMzk7cmUgdGhlIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQuIExvb2tzIGxpa2UgdGhlIHJlbGV2YW50IGNvbmZpZyB0byBlbmFibGUgaXMgYEJMS19ERVZfTlVMTF9CTEtgLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyB0aGUgb25seSBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF0JiMzOTtzIHBlcnRpbmVudC4gV2UgZG9uJiMzOTt0IHdhbnQgdG8gbWlzcyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDg6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJMS19ERVZfTlVMTF9CTEsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTUtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6Njpjb25maWcgQkxLX0RFVl9OVUxMX0JMS1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTktXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6MTA6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctMTEtXHRib29sIFwmIzM0O1N1cHBvcnQgZmF1bHQgaW5qZWN0aW9uIGZvciBOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA4OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyNzYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKktlcm5lbCBCbG9jayBEZXZpY2UgSW50ZXJuYWxzIC0gUXVpY2sgQXNzZXNzbWVudCoqCgpSaWdodCwgc28sIGFzIEkgdW5kZXJzdGFuZCBpdCwgdGhlIGNvcmUgaXNzdWUgbGlrZWx5IHJldm9sdmVzIGFyb3VuZCBgQkxLX0RFVl9OVUxMX0JMS2AuIEkmIzM5O3ZlIHNlZW4gdGhhdCBiZWZvcmUsIGFuZCBJJiMzOTttIHByZXR0eSBzdXJlIHRoYXQmIzM5O3MgdGhlIHByaW1hcnkgcG9pbnQgb2YgaW52ZXN0aWdhdGlvbiBoZXJlLiBHaXZlbiB0aGUgY29udGV4dCwgdGhhdCBzZWVtcyBsaWtlIHRoZSBtb3N0IGltbWVkaWF0ZSBzdXNwZWN0LgoKTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjazogaXMgdGhlcmUgYW55IGNvbmZpZ3VyYXRpb24gb3B0aW9uIG9yIHJlbGF0ZWQgc2V0dGluZywgcG9zc2libHkgdW5kZXIgYSBkaWZmZXJlbnQgbmFtZSwgdGhhdCBlbmFibGVzIG9yIGRpc2FibGVzIGBOVUxMQl9ERVZfRkxfVEhST1RUTEVEYD8gSSB3YW50IHRvIHNlZSBpZiB0aGlzIGZsYWcgaXMgdGllZCB0byBhbnkgdXNlci1jb250cm9sbGFibGUgYXNwZWN0IG9mIHRoZSBzeXN0ZW0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb290IGNhdXNlcyB0byBmaXggdGhpcy4gSXQmIzM5O3MgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24gdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBwcm92aWRlIGFuIGltcG9ydGFudCBjbHVlLCBkZXBlbmRpbmcgb24gdGhlIGtlcm5lbCB2ZXJzaW9uIGFuZCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gYmUgc3VyZSBiZWZvcmUgbW92aW5nIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA4OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05VTExCX0RFVl9GTF9USFJPVFRMRUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00MT1lbnVtIG51bGxiX2RldmljZV9mbGFncyB7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDMtXHROVUxMQl9ERVZfRkxfVVBcdFx0PSAxLFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQ6XHROVUxMQl9ERVZfRkxfVEhST1RUTEVEXHQ9IDIsXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00NS1cdE5VTExCX0RFVl9GTF9DQUNIRVx0PSAzLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE2NTI9c3RhdGljIGJsa19zdGF0dXNfdCBudWxsX3F1ZXVlX3JxKHN0cnVjdCBibGtfbXFfaHdfY3R4ICpoY3R4LFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE2ODQtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNjg1Olx0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFx1MDAyNm5xLVx1MDAzZWRldi1cdTAwM2VmbGFncykpIHtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE2ODYtXHRcdGJsa19zdGF0dXNfdCBzdHMgPSBudWxsX2hhbmRsZV90aHJvdHRsZWQoY21kKTtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xNzU4PXN0YXRpYyB2b2lkIG51bGxfZGVsX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE3NzItXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNzczOlx0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFx1MDAyNm51bGxiLVx1MDAzZWRldi1cdTAwM2VmbGFncykpIHtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE3NzQtXHRcdGhydGltZXJfY2FuY2VsKFx1MDAyNm51bGxiLVx1MDAzZWJ3X3RpbWVyKTtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xOTU1PXN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDE1LVx0aWYgKGRldi1cdTAwM2VtYnBzKSB7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMDE2Olx0XHRzZXRfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncyk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDE3LVx0XHRudWxsYl9zZXR1cF9id3RpbWVyKG51bGxiKTtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDY0LW91dF9jbGVhbnVwX2Rpc2s6XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMDY1Olx0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncykpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDY2LVx0XHRocnRpbWVyX2NhbmNlbChcdTAwMjZudWxsYi1cdTAwM2Vid190aW1lcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA4OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyMDUKCQkJCQkJCW91dHB1dDogMTI2CgkJCQkJCQl0aG91Z2h0czogOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuCgoqKkFuYWx5emluZyB0aGUgQkxLX0RFVl9OVUxMX0JMSyBGbGFnIGluIHRoZSBDb250ZXh0IG9mIGBkZXYtJmd0O21icHNgIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIHRoZSBsb2dpYyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGhlcmUuIFRoZSBrZXkgaXMgdGhhdCBgQkxLX0RFVl9OVUxMX0JMS2AgZ2V0cyBzZXQgd2hlbiBgZGV2LSZndDttYnBzYCBpcyAqbm90KiB6ZXJvLiBBbmQgaG93IGRvZXMgYGRldi0mZ3Q7bWJwc2AgZ2V0IHNldD8gRWl0aGVyIHRocm91Z2ggY29uZmlnZnMsIG9yIGEgbW9kdWxlIHBhcmFtZXRlci4gTWFrZXMgc2Vuc2UuIFRoZXJlZm9yZSwgdXNpbmcgYEJMS19ERVZfTlVMTF9CTEtgIGlzIGluZGVlZCB0aGUgcmlnaHQgYXBwcm9hY2ggaW4gdGhpcyBjYXNlLiBTZWVtcyBsaWtlIGFuIGVmZmljaWVudCBzb2x1dGlvbiB0byBpbmRpY2F0ZSB0aGlzIHBhcnRpY3VsYXIgc2V0dXAuCgpOb3csIEkgc2hvdWxkIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyB0aGUgKm9ubHkqIHRoaW5nIHdlIG5lZWQgdG8gY29uc2lkZXIgaW4gdGhpcyBzY2VuYXJpby4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBmdW5jdGlvbnMgdGhhdCBhcmUgcmVsYXRlZCB0byB3aGF0IHdlJiMzOTtyZSB0YWxraW5nIGFib3V0LCBvciB0aGF0IG1pZ2h0IHJlcXVpcmUgYXR0ZW50aW9uLiBPa2F5LCBgbnVsbF9hZGRfZGV2YCBhbmQgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgbG9vayBsaWtlIHBvdGVudGlhbGx5IHJlbGV2YW50IGFyZWFzIHRvIGludmVzdGlnYXRlLiBUaG9zZSBhcmUgdGhlIG9uZXMgdG8gZm9jdXMgb24uCgpBbHJpZ2h0LCBJJiMzOTttIGNvbmZpZGVudCBpbiB0aGlzIGFzc2Vzc21lbnQuIFRpbWUgdG8gY2FsbCBpdCBhIHN1Y2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA4OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfREVWX05VTExfQkxLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bnVsbF9hZGRfZGV2JiMzNDssCiAgICAmIzM0O251bGxiX2RldmljZV9wb3dlcl9zdG9yZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHRpbWVyIGxlYWsvdXNlLWFmdGVyLWZyZWUgaW4gdGhlIGVycm9yIHBhdGggb2YgYG51bGxfYWRkX2RldmAgYnkgY2FuY2VsbGluZyBgYndfdGltZXJgIGlmIHRoZSBkZXZpY2UgaXMgdGhyb3R0bGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG51bGxfYmxrIGRyaXZlciwgcmVhY2hhYmxlIHZpYSBjb25maWdmcyAoYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWApIG9yIG1vZHVsZSBpbml0aWFsaXphdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9OVUxMX0JMSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxfYWRkX2RldiYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSB0aW1lciBsZWFrL3VzZS1hZnRlci1mcmVlIGluIHRoZSBlcnJvciBwYXRoIG9mIGBudWxsX2FkZF9kZXZgIGJ5IGNhbmNlbGxpbmcgYGJ3X3RpbWVyYCBpZiB0aGUgZGV2aWNlIGlzIHRocm90dGxlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBudWxsX2JsayBkcml2ZXIsIHJlYWNoYWJsZSB2aWEgY29uZmlnZnMgKGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgKSBvciBtb2R1bGUgaW5pdGlhbGl6YXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwODowMDo1Ni40OTE4MTQ2MzdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzcxMTY3NzU5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnVsbF9hZGRfZGV2XCIsXG4gICAgXCJudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHRpbWVyIGxlYWsvdXNlLWFmdGVyLWZyZWUgaW4gdGhlIGVycm9yIHBhdGggb2YgYG51bGxfYWRkX2RldmAgYnkgY2FuY2VsbGluZyBgYndfdGltZXJgIGlmIHRoZSBkZXZpY2UgaXMgdGhyb3R0bGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG51bGxfYmxrIGRyaXZlciwgcmVhY2hhYmxlIHZpYSBjb25maWdmcyAoYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWApIG9yIG1vZHVsZSBpbml0aWFsaXphdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDg6MDA6NTYuNDkxODMzNTU3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzI0NTk1MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiNDM0MmJlYjY5ZjcxZWY5ODY3N2NiNWEyMGRhZjFkOTU2MWUzOGY1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVuIDI0IDA4OjAwOjU1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcXG5pbmRleCBmOGMwZmQ1N2UwNDFhOC4uOGYxYWQ3NjcxMGEwNzggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xcbkBAIC0yMDYyLDYgKzIwNjIsOCBAQCBzdGF0aWMgaW50IG51bGxfYWRkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuIG91dF9pZGFfZnJlZTpcXG4gXFx0aWRhX2ZyZWUoXFx1MDAyNm51bGxiX2luZGV4ZXMsIG51bGxiLVxcdTAwM2VpbmRleCk7XFxuIG91dF9jbGVhbnVwX2Rpc2s6XFxuK1xcdGlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfVEhST1RUTEVELCBcXHUwMDI2ZGV2LVxcdTAwM2VmbGFncykpXFxuK1xcdFxcdGhydGltZXJfY2FuY2VsKFxcdTAwMjZudWxsYi1cXHUwMDNlYndfdGltZXIpO1xcbiBcXHRwdXRfZGlzayhudWxsYi1cXHUwMDNlZGlzayk7XFxuIG91dF9jbGVhbnVwX3pvbmU6XFxuIFxcdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDg6MDA6NTYuOTY1MjIwOTQ2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzIzODI2MTY3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnVsbF9hZGRfZGV2XCIsXG4gICAgXCJudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHRpbWVyIGxlYWsvdXNlLWFmdGVyLWZyZWUgaW4gdGhlIGVycm9yIHBhdGggb2YgYG51bGxfYWRkX2RldmAgYnkgY2FuY2VsbGluZyBgYndfdGltZXJgIGlmIHRoZSBkZXZpY2UgaXMgdGhyb3R0bGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG51bGxfYmxrIGRyaXZlciwgcmVhY2hhYmxlIHZpYSBjb25maWdmcyAoYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWApIG9yIG1vZHVsZSBpbml0aWFsaXphdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiNDM0MmJlYjY5ZjcxZWY5ODY3N2NiNWEyMGRhZjFkOTU2MWUzOGY1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdW4gMjQgMDg6MDA6NTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5pbmRleCBmOGMwZmQ1N2UwNDFhOC4uOGYxYWQ3NjcxMGEwNzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuKysrIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbkBAIC0yMDYyLDYgKzIwNjIsOCBAQCBzdGF0aWMgaW50IG51bGxfYWRkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXG4gb3V0X2lkYV9mcmVlOlxuIFx0aWRhX2ZyZWUoXHUwMDI2bnVsbGJfaW5kZXhlcywgbnVsbGItXHUwMDNlaW5kZXgpO1xuIG91dF9jbGVhbnVwX2Rpc2s6XG4rXHRpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX1RIUk9UVExFRCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSlcbitcdFx0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2bnVsbGItXHUwMDNlYndfdGltZXIpO1xuIFx0cHV0X2Rpc2sobnVsbGItXHUwMDNlZGlzayk7XG4gb3V0X2NsZWFudXBfem9uZTpcbiBcdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA4OjAwOjU2Ljk2NTIyMjY1NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNjg4MjE3MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2VybmVsIFBhdGNoIGluIG51bGxfYmxrKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRvdWNoZXMgYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jYC4gTXkgaW5pdGlhbCBzY2FuIHN1Z2dlc3RzIGl0J3MgYWx0ZXJpbmcgdGhlIGBudWxsX2FkZF9kZXZgIGZ1bmN0aW9uLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBjYWxscyBvdXQgdGhhdCBpdCdzIGludHJvZHVjaW5nIGEgY2hlY2sgYW5kIHRoZW4gdXNpbmcgYGhydGltZXJfY2FuY2VsKFx1MDAyNm51bGxiLVx1MDAzZWJ3X3RpbWVyKWAgaW4gdGhlIGVycm9yIHBhdGggb2YgdGhhdCBmdW5jdGlvbi4gVGhhdCdzIGltbWVkaWF0ZWx5IHRlbGxpbmc7IGl0IGluZGljYXRlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBvciByZXNvdXJjZSBsZWFrIGlzc3VlIHJlbGF0ZWQgdG8gdGhlIGJhbmR3aWR0aCB0aW1lciB3aGVuIGRldmljZSBhZGRpdGlvbiBmYWlscy4gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgY29kZSBub3cgdG8gdW5kZXJzdGFuZCB0aGUgcHJlY2lzZSBjb250ZXh0IG9mIGBudWxsX2FkZF9kZXZgIGFuZCBob3cgdGhpcyB0aW1lciBpcyBiZWluZyB1c2VkLCBzbyBJIGNhbiBzZWUgd2h5IGEgY2FuY2VsIGlzIG5lY2Vzc2FyeSBvbiBmYWlsdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODU0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwODowMTowMS4zMzQwNDcwOThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDY2NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjA1MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjA1MDpcXHRcXHR9XFxuMjA1MTpcXHRcXG4yMDUyOlxcdFxcdHJ2ID0gYWRkX2Rpc2sobnVsbGItXFx1MDAzZWRpc2spO1xcbjIwNTM6XFx0XFx0aWYgKHJ2KVxcbjIwNTQ6XFx0XFx0XFx0Z290byBvdXRfaWRhX2ZyZWU7XFxuMjA1NTpcXHRcXG4yMDU2OlxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNm51bGxiLVxcdTAwM2VsaXN0LCBcXHUwMDI2bnVsbGJfbGlzdCk7XFxuMjA1NzpcXHRcXG4yMDU4OlxcdFxcdHByX2luZm8oXFxcImRpc2sgJXMgY3JlYXRlZFxcXFxuXFxcIiwgbnVsbGItXFx1MDAzZWRpc2tfbmFtZSk7XFxuMjA1OTpcXHRcXG4yMDYwOlxcdFxcdHJldHVybiAwO1xcbjIwNjE6XFx0XFxuMjA2MjpcXHRvdXRfaWRhX2ZyZWU6XFxuMjA2MzpcXHRcXHRpZGFfZnJlZShcXHUwMDI2bnVsbGJfaW5kZXhlcywgbnVsbGItXFx1MDAzZWluZGV4KTtcXG4yMDY0OlxcdG91dF9jbGVhbnVwX2Rpc2s6XFxuMjA2NTpcXHRcXHRpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX1RIUk9UVExFRCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpKVxcbjIwNjY6XFx0XFx0XFx0aHJ0aW1lcl9jYW5jZWwoXFx1MDAyNm51bGxiLVxcdTAwM2Vid190aW1lcik7XFxuMjA2NzpcXHRcXHRwdXRfZGlzayhudWxsYi1cXHUwMDNlZGlzayk7XFxuMjA2ODpcXHRvdXRfY2xlYW51cF96b25lOlxcbjIwNjk6XFx0XFx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xcbjIwNzA6XFx0b3V0X2NsZWFudXBfdGFnczpcXG4yMDcxOlxcdFxcdGlmIChudWxsYi1cXHUwMDNldGFnX3NldCA9PSBcXHUwMDI2bnVsbGItXFx1MDAzZV9fdGFnX3NldClcXG4yMDcyOlxcdFxcdFxcdGJsa19tcV9mcmVlX3RhZ19zZXQobnVsbGItXFx1MDAzZXRhZ19zZXQpO1xcbjIwNzM6XFx0b3V0X2NsZWFudXBfcXVldWVzOlxcbjIwNzQ6XFx0XFx0a2ZyZWUobnVsbGItXFx1MDAzZXF1ZXVlcyk7XFxuMjA3NTpcXHRvdXRfZnJlZV9udWxsYjpcXG4yMDc2OlxcdFxcdGtmcmVlKG51bGxiKTtcXG4yMDc3OlxcdFxcdGRldi1cXHUwMDNlbnVsbGIgPSBOVUxMO1xcbjIwNzg6XFx0b3V0OlxcbjIwNzk6XFx0XFx0cmV0dXJuIHJ2O1xcbjIwODA6XFx0fVxcbjIwODE6XFx0XFxuMjA4MjpcXHRzdGF0aWMgc3RydWN0IG51bGxiICpudWxsX2ZpbmRfZGV2X2J5X25hbWUoY29uc3QgY2hhciAqbmFtZSlcXG4yMDgzOlxcdHtcXG4yMDg0OlxcdFxcdHN0cnVjdCBudWxsYiAqbnVsbGIgPSBOVUxMLCAqbmI7XFxuMjA4NTpcXHRcXG4yMDg2OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcbjIwODc6XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShuYiwgXFx1MDAyNm51bGxiX2xpc3QsIGxpc3QpIHtcXG4yMDg4OlxcdFxcdFxcdGlmIChzdHJjbXAobmItXFx1MDAzZWRpc2tfbmFtZSwgbmFtZSkgPT0gMCkge1xcbjIwODk6XFx0XFx0XFx0XFx0bnVsbGIgPSBuYjtcXG4yMDkwOlxcdFxcdFxcdFxcdGJyZWFrO1xcbjIwOTE6XFx0XFx0XFx0fVxcbjIwOTI6XFx0XFx0fVxcbjIwOTM6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZsb2NrKTtcXG4yMDk0OlxcdFxcbjIwOTU6XFx0XFx0cmV0dXJuIG51bGxiO1xcbjIwOTY6XFx0fVxcbjIwOTc6XFx0XFxuMjA5ODpcXHRzdGF0aWMgaW50IG51bGxfY3JlYXRlX2Rldih2b2lkKVxcbjIwOTk6XFx0e1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwODowMTowMS4zMzQyOTY5NzhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjU2MzQ3Mjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIENyaXRpY2FsIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIGZ1bmN0aW9uYWwgZml4IOKAkyBnb29kISBJdCBsb29rcyBsaWtlIHRoZXkncmUgYWRkaW5nIGBocnRpbWVyX2NhbmNlbChcdTAwMjZudWxsYi1cdTAwM2Vid190aW1lcilgIHRvIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIG9mIHRoZSBgbnVsbF9hZGRfZGV2YCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGxpa2VseSBhZGRyZXNzaW5nIGEgcHJldHR5IHNlcmlvdXMgaXNzdWUuIFRoZSBkZXNjcmlwdGlvbiBpbXBsaWVzIGVpdGhlciBhIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvIG9yIGEgdGltZXIgbGVhay4gSSd2ZSBzZWVuIGJvdGggb2YgdGhvc2UgYml0ZSB1cyBiZWZvcmUsIHNvIHRoaXMgd2FycmFudHMgYSBjbG9zZXIgbG9vay5cblxuTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZmxvdy4gSSBuZWVkIHRvIHRyYWNlICpob3cqIGBudWxsX2FkZF9kZXZgIGlzIGludm9rZWQuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxpbmcgY29udGV4dCBpcyBjcnVjaWFsIHRvIGZ1bGx5IGdyYXNwIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIHRoaXMgZml4IGFuZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbiBpcyBpbnRyb2R1Y2VkLiBJIG5lZWQgdG8gZmluZCBhbGwgaW5zdGFuY2VzIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGhpbiB0aGUgcmVsZXZhbnQgY29kZSBiYXNlLiBMZXQncyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgdGhlIGJpZ2dlciBwaWN0dXJlIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MzEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA4OjAxOjA1LjU5MDY0NzE1M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODg1NDA3NjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnVsbF9hZGRfZGV2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTI3NT1zdGF0aWMgdm9pZCBudWxsX2RlbF9kZXYoc3RydWN0IG51bGxiICpudWxsYik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mjc2OnN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjc3LXN0YXRpYyBzdHJ1Y3QgbnVsbGIgKm51bGxfZmluZF9kZXZfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTQ4ND1zdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTAwLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjUwMTpcXHRcXHRyZXQgPSBudWxsX2FkZF9kZXYoZGV2KTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MDItXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTk0Mj1zdGF0aWMgYm9vbCBudWxsX3NldHVwX2ZhdWx0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTU0LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE5NTU6c3RhdGljIGludCBudWxsX2FkZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE5NTYte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MjA5OD1zdGF0aWMgaW50IG51bGxfY3JlYXRlX2Rldih2b2lkKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjEwNy1cXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMTA4OlxcdHJldCA9IG51bGxfYWRkX2RldihkZXYpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxMDktXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZsb2NrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDg6MDE6MDUuODc5MTk1ODQ2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQzMjEwNjkyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBOdWxsIEJsb2NrIERldmljZSBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIEknbSBzZWVpbmcgdGhpcyBjb2RlIGNhbGxlZCBmcm9tIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIGFuZCBgbnVsbF9jcmVhdGVfZGV2YC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIHJlbGF0ZWQgdG8gdGhlIG51bGwgYmxvY2sgZGV2aWNlLCBsaWtlbHkgaW5pdGlhbGl6YXRpb24gb3IgcG93ZXIgbWFuYWdlbWVudC4gTXkgbWFpbiBpbnRlcmVzdCBpcyBpbiAqaG93KiB0aGlzIGBudWxsX2Jsa2AgaXMgY29uZmlndXJlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBwYXJhbWV0ZXJzLCBmbGFncywgb3IgZGVwZW5kZW5jaWVzIGFyZSBhdCBwbGF5LiBBcmUgdGhlcmUgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zLCBtb2R1bGUgcGFyYW1ldGVycywgb3IgZGV2aWNlIHRyZWUgZW50cmllcyB0aGF0IGdvdmVybiBpdHMgYmVoYXZpb3I/IElzIHRoZXJlIGFueSBkeW5hbWljIGNvbmZpZ3VyYXRpb24gaW52b2x2ZWQ/IEkgbmVlZCB0byBkaWcgaW50byB0aGUgcmVsZXZhbnQgY29uZmlnIGZpbGVzIGFuZCBjb2RlIHBhdGhzIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIHNldHVwIHJlcXVpcmVtZW50cy4gVGhlIGdvYWwgaGVyZSBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBwaWN0dXJlIHNvIEkgY2FuIGFudGljaXBhdGUgYW55IGlzc3VlcyBkb3duIHRoZSByb2FkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTUzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDg6MDE6MDkuMzExMzA1NTExWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg4NzMwMjU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCTEtfREVWX05VTExfQkxLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy01LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzo2OmNvbmZpZyBCTEtfREVWX05VTExfQkxLXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIk51bGwgdGVzdCBibG9jayBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctOS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6MTA6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTExLVxcdGJvb2wgXFxcIlN1cHBvcnQgZmF1bHQgaW5qZWN0aW9uIGZvciBOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwODowMTowOS40MDAwNDEwNjlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTkzNTIwOTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgQmxvY2sgRGV2aWNlIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24sIGFuZCBpdCBzZWVtcyBsaWtlIGBCTEtfREVWX05VTExfQkxLYCBpcyB0aGUga2V5IGlkZW50aWZpZXIgaGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGNvbmZpZyByZXByZXNlbnRzIGluIHRoZSBicm9hZGVyIGNvbnRleHQuIE15IGZpcnN0IHRob3VnaHQgaXM6IGFyZSB0aGVyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBJIG5lZWQgdG8gY2hlY2sgYXJvdW5kIHRoZSBjb2RlYmFzZSB0byBzZWUgaWYgdGhlcmUgYXJlIHBhcmFsbGVsIGNvbmZpZ3VyYXRpb25zIG9yIGFzc29jaWF0ZWQgcGFyYW1ldGVycyB0byBmdWxseSBncmFzcCB0aGUgaW50ZW50IGFuZCBpbXBsaWNhdGlvbnMgb2YgYEJMS19ERVZfTlVMTF9CTEtgLiBJIG5lZWQgdG8gZ2V0IHRoZSB3aG9sZSBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTQ2LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDg6MDE6MTIuMzkzNTY0Mjk1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTQ2NjcyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudWxsX2Jsa1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9LY29uZmlnPTE3PWlmIEJMS19ERVZcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTgtXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjE5OnNvdXJjZSBcXFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnXFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yMC1zb3VyY2UgXFxcImRyaXZlcnMvYmxvY2svcm51bGwvS2NvbmZpZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDg6MDE6MTIuNDU1MDM3NTQ0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MDE5MTk1MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipBbmFseXppbmcgdGhlIE51bGwgQmxvY2sgRGV2aWNlIENyZWF0aW9uIFByb2Nlc3MqKlxuXG5SaWdodCwgc28gdGhlIGNvbmZpZ3VyYXRpb24gaW4gcXVlc3Rpb24gaXMgYEJMS19ERVZfTlVMTF9CTEtgLiBUaGF0IGltbWVkaWF0ZWx5IHNldHMgdGhlIHN0YWdlLiBNeSBmb2N1cywgdGhlbiwgbmVlZHMgdG8gYmUgb24gYG51bGxfYWRkX2RldmAuIEJ1dCBob2xkIG9uLCBJIHJlY2FsbCB0aGF0J3MgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgbWVhbnMgaXRzIHNjb3BlIGlzIGxpbWl0ZWQsIHNvIHRoYXQgaXNuJ3QgdGhlIG9ubHkgcGllY2UuIEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHJlbGF0ZWQgZnVuY3Rpb25zIGxpa2UgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgYW5kIG1vc3QgaW1wb3J0YW50bHkgYG51bGxfY3JlYXRlX2RldmAuIEl0IHNlZW1zIHRvIG1lLCBgbnVsbF9jcmVhdGVfZGV2YCBpcyB0aGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIG51bGwgYmxvY2sgZGV2aWNlIGlzIGFjdHVhbGx5IHNldCB1cCwgc28gSSdsbCBwcmlvcml0aXplIHVuZGVyc3RhbmRpbmcgdGhhdCBmdW5jdGlvbiBmaXJzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIwOCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA4OjAxOjE2LjI1Njk2MDNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MzgwODE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm51bGxfY3JlYXRlX2RldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yMDgyPXN0YXRpYyBzdHJ1Y3QgbnVsbGIgKm51bGxfZmluZF9kZXZfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA5Ny1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMDk4OnN0YXRpYyBpbnQgbnVsbF9jcmVhdGVfZGV2KHZvaWQpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA5OS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yMTI3PXN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjE3OS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnJfZGV2aWNlczsgaSsrKSB7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjE4MDpcXHRcXHRyZXQgPSBudWxsX2NyZWF0ZV9kZXYoKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTgxLVxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA4OjAxOjE2LjMxNDM0NjE1OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzE1NTI3ODc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJIHNlZSB0aGlzIHBsYXlpbmcgb3V0OlxuXG4qKkFuYWx5emluZyB0aGUgTnVsbCBCbG9jayBEZXZpY2UgSW5pdGlhbGl6YXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBgbnVsbF9jcmVhdGVfZGV2YCBpcyBpbml0aWF0ZWQgZnJvbSBgbnVsbF9pbml0YC4gVGhhdCdzIHN0YW5kYXJkIGluaXRpYWxpemF0aW9uLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoIOKAkyB0aGUgZGV2aWNlIGlzIGNyZWF0ZWQgZHVyaW5nIG1vZHVsZSBsb2FkLiBIb3dldmVyLCB0aGUgaW50ZXJlc3RpbmcgYml0IGFwcGVhcnMgdG8gYmUgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgYW5kIGl0cyBjb25uZWN0aW9uIHRvIGNvbmZpZ2ZzLiBJdCdzIHRpbWUgdG8gZGVsdmUgZGVlcGVyLiBNeSBhdHRlbnRpb24gbm93IHNoaWZ0cyB0byBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCBkb2VzIGFuZCBob3cgcG93ZXIgbWFuYWdlbWVudCBpbnRlcmFjdHMgd2l0aCB0aGUgZGV2aWNlIGNyZWF0aW9uIGFuZCBmaWxlc3lzdGVtIGNvbmZpZ3VyYXRpb24uIFRoaXMgaXMgbGlrZWx5IHdoZXJlIHRoZSBudWFuY2VzIGxpZSwgZ2l2ZW4gdGhlIGludGVncmF0aW9uIHdpdGggY29uZmlnZnMuIExldCdzIHNlZSBob3cgdGhlIHBvd2VyIHN0YXRlIGlzIGJlaW5nIGhhbmRsZWQuIEknbGwgbmVlZCB0byBkaXNzZWN0IGl0cyBwdXJwb3NlIGFuZCBpbXBsZW1lbnRhdGlvbiBhbmQgYXNjZXJ0YWluIHdoYXQgZWZmZWN0cyBpdCB3aWxsIGhhdmUgb24gdGhlIG92ZXJhbGwgZGV2aWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzA3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDg6MDE6MTkuNjI5ODc3Mjc4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NjY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0ODAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0ODA6XFx0e1xcbiA0ODE6XFx0XFx0cmV0dXJuIG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyh0b19udWxsYl9kZXZpY2UoaXRlbSktXFx1MDAzZXBvd2VyLCBwYWdlKTtcXG4gNDgyOlxcdH1cXG4gNDgzOlxcdFxcbiA0ODQ6XFx0c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG4gNDg1OlxcdFxcdFxcdFxcdFxcdCAgICAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGNvdW50KVxcbiA0ODY6XFx0e1xcbiA0ODc6XFx0XFx0c3RydWN0IG51bGxiX2RldmljZSAqZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pO1xcbiA0ODg6XFx0XFx0Ym9vbCBuZXdwID0gZmFsc2U7XFxuIDQ4OTpcXHRcXHRzc2l6ZV90IHJldDtcXG4gNDkwOlxcdFxcbiA0OTE6XFx0XFx0cmV0ID0gbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShcXHUwMDI2bmV3cCwgcGFnZSwgY291bnQpO1xcbiA0OTI6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDQ5MzpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA0OTQ6XFx0XFxuIDQ5NTpcXHRcXHRyZXQgPSBjb3VudDtcXG4gNDk2OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcbiA0OTc6XFx0XFx0aWYgKCFkZXYtXFx1MDAzZXBvd2VyIFxcdTAwMjZcXHUwMDI2IG5ld3ApIHtcXG4gNDk4OlxcdFxcdFxcdGlmICh0ZXN0X2FuZF9zZXRfYml0KE5VTExCX0RFVl9GTF9VUCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpKVxcbiA0OTk6XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuIDUwMDpcXHRcXG4gNTAxOlxcdFxcdFxcdHJldCA9IG51bGxfYWRkX2RldihkZXYpO1xcbiA1MDI6XFx0XFx0XFx0aWYgKHJldCkge1xcbiA1MDM6XFx0XFx0XFx0XFx0Y2xlYXJfYml0KE5VTExCX0RFVl9GTF9VUCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpO1xcbiA1MDQ6XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuIDUwNTpcXHRcXHRcXHR9XFxuIDUwNjpcXHRcXG4gNTA3OlxcdFxcdFxcdHNldF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsIFxcdTAwMjZkZXYtXFx1MDAzZWZsYWdzKTtcXG4gNTA4OlxcdFxcdFxcdGRldi1cXHUwMDNlcG93ZXIgPSBuZXdwO1xcbiA1MDk6XFx0XFx0XFx0cmV0ID0gY291bnQ7XFxuIDUxMDpcXHRcXHR9IGVsc2UgaWYgKGRldi1cXHUwMDNlcG93ZXIgXFx1MDAyNlxcdTAwMjYgIW5ld3ApIHtcXG4gNTExOlxcdFxcdFxcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTlVMTEJfREVWX0ZMX1VQLCBcXHUwMDI2ZGV2LVxcdTAwM2VmbGFncykpIHtcXG4gNTEyOlxcdFxcdFxcdFxcdGRldi1cXHUwMDNlcG93ZXIgPSBuZXdwO1xcbiA1MTM6XFx0XFx0XFx0XFx0bnVsbF9kZWxfZGV2KGRldi1cXHUwMDNlbnVsbGIpO1xcbiA1MTQ6XFx0XFx0XFx0fVxcbiA1MTU6XFx0XFx0XFx0Y2xlYXJfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCBcXHUwMDI2ZGV2LVxcdTAwM2VmbGFncyk7XFxuIDUxNjpcXHRcXHR9XFxuIDUxNzpcXHRcXG4gNTE4OlxcdG91dDpcXG4gNTE5OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2bG9jayk7XFxuIDUyMDpcXHRcXHRyZXR1cm4gcmV0O1xcbiA1MjE6XFx0fVxcbiA1MjI6XFx0XFxuIDUyMzpcXHRDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIHBvd2VyKTtcXG4gNTI0OlxcdFxcbiA1MjU6XFx0c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2JhZGJsb2Nrc19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcXG4gNTI2OlxcdHtcXG4gNTI3OlxcdFxcdHN0cnVjdCBudWxsYl9kZXZpY2UgKnRfZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pO1xcbiA1Mjg6XFx0XFxuIDUyOTpcXHRcXHRyZXR1cm4gYmFkYmxvY2tzX3Nob3coXFx1MDAyNnRfZGV2LVxcdTAwM2ViYWRibG9ja3MsIHBhZ2UsIDApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwODowMToxOS42MzAwNzYzNThaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ4MTIyOTE4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDb25maWdGUyBBdHRyaWJ1dGUgU3RvcmUgRml4KipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBmdW5jdGlvbiwgYW5kIGl0J3MgbG9va2luZyBsaWtlIGl0J3MgYSBDb25maWdGUyBhdHRyaWJ1dGUgc3RvcmUgZnVuY3Rpb24uIFJpZ2h0LCBzbywgQ29uZmlnRlMsIHRoYXQgbWVhbnMgaXQncyBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlIOKAkyB3aGljaCBpcyBpbXBvcnRhbnQuIFRoaXMgcGFydGljdWxhciBmdW5jdGlvbiBjYW4gdHJpZ2dlciBgbnVsbF9hZGRfZGV2YC4gR290IGl0LlxuXG5UaGlzIHBhdGNoLCBhcHBhcmVudGx5LCBpcyBmaXhpbmcgYSB0aW1lciBsZWFrIGFuZCBhIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIG9mIGBudWxsX2FkZF9kZXZgLiBTb3VuZHMgbGlrZSBhIHNvbGlkIGZ1bmN0aW9uYWwgY2hhbmdlLCBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSdkIHdhbnQgdG8gaW5jb3Jwb3JhdGUuIENvbnNpZGVyaW5nIHRoZSBuYXR1cmUgb2YgdGhlIGZpeCwgSSdkIHNheSB0aGlzIGlzIFwiV29ydGhGdXp6aW5nXCIgZm9yIHN1cmUuXG5cbkknbGwgZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIGBudWxsX2FkZF9kZXZgIGFuZCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCwgc2luY2UgdGhleSdyZSB0aGUga2V5IGZ1bmN0aW9ucyBpbnZvbHZlZC4gTG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgY29uZmlnIHRvIGVuYWJsZSBpcyBgQkxLX0RFVl9OVUxMX0JMS2AuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyB0aGUgb25seSBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF0J3MgcGVydGluZW50LiBXZSBkb24ndCB3YW50IHRvIG1pc3MgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3MzUsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwODowMToyNC4xMTEzMzAyNDdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzODY3NzU3ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJMS19ERVZfTlVMTF9CTEtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy01LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzo2OmNvbmZpZyBCTEtfREVWX05VTExfQkxLXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIk51bGwgdGVzdCBibG9jayBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctOS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6MTA6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTExLVxcdGJvb2wgXFxcIlN1cHBvcnQgZmF1bHQgaW5qZWN0aW9uIGZvciBOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwODowMToyNi40OTgxMTE3MjhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU2OTA4MTY0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipLZXJuZWwgQmxvY2sgRGV2aWNlIEludGVybmFscyAtIFF1aWNrIEFzc2Vzc21lbnQqKlxuXG5SaWdodCwgc28sIGFzIEkgdW5kZXJzdGFuZCBpdCwgdGhlIGNvcmUgaXNzdWUgbGlrZWx5IHJldm9sdmVzIGFyb3VuZCBgQkxLX0RFVl9OVUxMX0JMS2AuIEkndmUgc2VlbiB0aGF0IGJlZm9yZSwgYW5kIEknbSBwcmV0dHkgc3VyZSB0aGF0J3MgdGhlIHByaW1hcnkgcG9pbnQgb2YgaW52ZXN0aWdhdGlvbiBoZXJlLiBHaXZlbiB0aGUgY29udGV4dCwgdGhhdCBzZWVtcyBsaWtlIHRoZSBtb3N0IGltbWVkaWF0ZSBzdXNwZWN0LlxuXG5Ob3csIGxldCBtZSBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrOiBpcyB0aGVyZSBhbnkgY29uZmlndXJhdGlvbiBvcHRpb24gb3IgcmVsYXRlZCBzZXR0aW5nLCBwb3NzaWJseSB1bmRlciBhIGRpZmZlcmVudCBuYW1lLCB0aGF0IGVuYWJsZXMgb3IgZGlzYWJsZXMgYE5VTExCX0RFVl9GTF9USFJPVFRMRURgPyBJIHdhbnQgdG8gc2VlIGlmIHRoaXMgZmxhZyBpcyB0aWVkIHRvIGFueSB1c2VyLWNvbnRyb2xsYWJsZSBhc3BlY3Qgb2YgdGhlIHN5c3RlbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvb3QgY2F1c2VzIHRvIGZpeCB0aGlzLiBJdCdzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uIHRoYXQgY291bGQgcG90ZW50aWFsbHkgcHJvdmlkZSBhbiBpbXBvcnRhbnQgY2x1ZSwgZGVwZW5kaW5nIG9uIHRoZSBrZXJuZWwgdmVyc2lvbiBhbmQgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIGJlIHN1cmUgYmVmb3JlIG1vdmluZyBmb3J3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Mjc2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDg6MDE6MzIuMDY3MTk2NjJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NjUxMjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5VTExCX0RFVl9GTF9USFJPVFRMRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NDE9ZW51bSBudWxsYl9kZXZpY2VfZmxhZ3Mge1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDMtXFx0TlVMTEJfREVWX0ZMX1VQXFx0XFx0PSAxLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0OlxcdE5VTExCX0RFVl9GTF9USFJPVFRMRURcXHQ9IDIsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDUtXFx0TlVMTEJfREVWX0ZMX0NBQ0hFXFx0PSAzLFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTY1Mj1zdGF0aWMgYmxrX3N0YXR1c190IG51bGxfcXVldWVfcnEoc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNjg0LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE2ODU6XFx0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFxcdTAwMjZucS1cXHUwMDNlZGV2LVxcdTAwM2VmbGFncykpIHtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNjg2LVxcdFxcdGJsa19zdGF0dXNfdCBzdHMgPSBudWxsX2hhbmRsZV90aHJvdHRsZWQoY21kKTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE3NTg9c3RhdGljIHZvaWQgbnVsbF9kZWxfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNzcyLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE3NzM6XFx0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFxcdTAwMjZudWxsYi1cXHUwMDNlZGV2LVxcdTAwM2VmbGFncykpIHtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNzc0LVxcdFxcdGhydGltZXJfY2FuY2VsKFxcdTAwMjZudWxsYi1cXHUwMDNlYndfdGltZXIpO1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTk1NT1zdGF0aWMgaW50IG51bGxfYWRkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDE1LVxcdGlmIChkZXYtXFx1MDAzZW1icHMpIHtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMDE2OlxcdFxcdHNldF9iaXQoTlVMTEJfREVWX0ZMX1RIUk9UVExFRCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwMTctXFx0XFx0bnVsbGJfc2V0dXBfYnd0aW1lcihudWxsYik7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDY0LW91dF9jbGVhbnVwX2Rpc2s6XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjA2NTpcXHRpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX1RIUk9UVExFRCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwNjYtXFx0XFx0aHJ0aW1lcl9jYW5jZWwoXFx1MDAyNm51bGxiLVxcdTAwM2Vid190aW1lcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA4OjAxOjMyLjEyMjg2ODA5OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTMyMzIxNzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuXG5cbioqQW5hbHl6aW5nIHRoZSBCTEtfREVWX05VTExfQkxLIEZsYWcgaW4gdGhlIENvbnRleHQgb2YgYGRldi1cdTAwM2VtYnBzYCBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIHRoZSBsb2dpYyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGhlcmUuIFRoZSBrZXkgaXMgdGhhdCBgQkxLX0RFVl9OVUxMX0JMS2AgZ2V0cyBzZXQgd2hlbiBgZGV2LVx1MDAzZW1icHNgIGlzICpub3QqIHplcm8uIEFuZCBob3cgZG9lcyBgZGV2LVx1MDAzZW1icHNgIGdldCBzZXQ/IEVpdGhlciB0aHJvdWdoIGNvbmZpZ2ZzLCBvciBhIG1vZHVsZSBwYXJhbWV0ZXIuIE1ha2VzIHNlbnNlLiBUaGVyZWZvcmUsIHVzaW5nIGBCTEtfREVWX05VTExfQkxLYCBpcyBpbmRlZWQgdGhlIHJpZ2h0IGFwcHJvYWNoIGluIHRoaXMgY2FzZS4gU2VlbXMgbGlrZSBhbiBlZmZpY2llbnQgc29sdXRpb24gdG8gaW5kaWNhdGUgdGhpcyBwYXJ0aWN1bGFyIHNldHVwLlxuXG5Ob3csIEkgc2hvdWxkIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyB0aGUgKm9ubHkqIHRoaW5nIHdlIG5lZWQgdG8gY29uc2lkZXIgaW4gdGhpcyBzY2VuYXJpby4gTGV0J3MgbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgZnVuY3Rpb25zIHRoYXQgYXJlIHJlbGF0ZWQgdG8gd2hhdCB3ZSdyZSB0YWxraW5nIGFib3V0LCBvciB0aGF0IG1pZ2h0IHJlcXVpcmUgYXR0ZW50aW9uLiBPa2F5LCBgbnVsbF9hZGRfZGV2YCBhbmQgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgbG9vayBsaWtlIHBvdGVudGlhbGx5IHJlbGV2YW50IGFyZWFzIHRvIGludmVzdGlnYXRlLiBUaG9zZSBhcmUgdGhlIG9uZXMgdG8gZm9jdXMgb24uXG5cbkFscmlnaHQsIEknbSBjb25maWRlbnQgaW4gdGhpcyBhc3Nlc3NtZW50LiBUaW1lIHRvIGNhbGwgaXQgYSBzdWNjZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjA1LCJPdXRwdXRUb2tlbnMiOjEyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA4OjAxOjQwLjA1NTE5MjUxMloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODI4NjA1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OVUxMX0JMS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm51bGxfYWRkX2RldlwiLFxuICAgIFwibnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSB0aW1lciBsZWFrL3VzZS1hZnRlci1mcmVlIGluIHRoZSBlcnJvciBwYXRoIG9mIGBudWxsX2FkZF9kZXZgIGJ5IGNhbmNlbGxpbmcgYGJ3X3RpbWVyYCBpZiB0aGUgZGV2aWNlIGlzIHRocm90dGxlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBudWxsX2JsayBkcml2ZXIsIHJlYWNoYWJsZSB2aWEgY29uZmlnZnMgKGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgKSBvciBtb2R1bGUgaW5pdGlhbGl6YXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OVUxMX0JMS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm51bGxfYWRkX2RldlwiLFxuICAgIFwibnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSB0aW1lciBsZWFrL3VzZS1hZnRlci1mcmVlIGluIHRoZSBlcnJvciBwYXRoIG9mIGBudWxsX2FkZF9kZXZgIGJ5IGNhbmNlbGxpbmcgYGJ3X3RpbWVyYCBpZiB0aGUgZGV2aWNlIGlzIHRocm90dGxlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBudWxsX2JsayBkcml2ZXIsIHJlYWNoYWJsZSB2aWEgY29uZmlnZnMgKGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgKSBvciBtb2R1bGUgaW5pdGlhbGl6YXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqvfwz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-24 07:39:56 +0000 UTC FinishedAt: 2026-06-24 08:01:41 +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": "558ef39aeb9a089a6be9dda8413b0b9d42e843ea", "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": "558ef39aeb9a089a6be9dda8413b0b9d42e843ea", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_NULL_BLK" ], "series_id": "86fcf2d8-3af6-4ffc-b978-60342e8c123f" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "null_add_dev", "nullb_device_power_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+CgkJCTx0ZD4yMDI2LzA2LzI0IDA4OjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudWxsX2FkZF9kZXYmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgdGltZXIgbGVhay91c2UtYWZ0ZXItZnJlZSBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgbnVsbF9hZGRfZGV2YCBieSBjYW5jZWxsaW5nIGBid190aW1lcmAgaWYgdGhlIGRldmljZSBpcyB0aHJvdHRsZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyLCByZWFjaGFibGUgdmlhIGNvbmZpZ2ZzIChgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCkgb3IgbW9kdWxlIGluaXRpYWxpemF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA4OjAwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjQzNDJiZWI2OWY3MWVmOTg2NzdjYjVhMjBkYWYxZDk1NjFlMzhmNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVuIDI0IDA4OjAwOjU1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbmluZGV4IGY4YzBmZDU3ZTA0MWE4Li44ZjFhZDc2NzEwYTA3OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuQEAgLTIwNjIsNiAmIzQzOzIwNjIsOCBAQCBzdGF0aWMgaW50IG51bGxfYWRkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXG4gb3V0X2lkYV9mcmVlOlxuIFx0aWRhX2ZyZWUoXHUwMDI2bnVsbGJfaW5kZXhlcywgbnVsbGItXHUwMDNlaW5kZXgpO1xuIG91dF9jbGVhbnVwX2Rpc2s6XG4mIzQzO1x0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncykpXG4mIzQzO1x0XHRocnRpbWVyX2NhbmNlbChcdTAwMjZudWxsYi1cdTAwM2Vid190aW1lcik7XG4gXHRwdXRfZGlzayhudWxsYi1cdTAwM2VkaXNrKTtcbiBvdXRfY2xlYW51cF96b25lOlxuIFx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA4OjAwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTlVMTF9CTEsmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudWxsX2FkZF9kZXYmIzM0OywKICAgICYjMzQ7bnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgdGltZXIgbGVhay91c2UtYWZ0ZXItZnJlZSBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgbnVsbF9hZGRfZGV2YCBieSBjYW5jZWxsaW5nIGBid190aW1lcmAgaWYgdGhlIGRldmljZSBpcyB0aHJvdHRsZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbnVsbF9ibGsgZHJpdmVyLCByZWFjaGFibGUgdmlhIGNvbmZpZ2ZzIChgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCkgb3IgbW9kdWxlIGluaXRpYWxpemF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiNDM0MmJlYjY5ZjcxZWY5ODY3N2NiNWEyMGRhZjFkOTU2MWUzOGY1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdW4gMjQgMDg6MDA6NTUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jCmluZGV4IGY4YzBmZDU3ZTA0MWE4Li44ZjFhZDc2NzEwYTA3OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMKQEAgLTIwNjIsNiAmIzQzOzIwNjIsOCBAQCBzdGF0aWMgaW50IG51bGxfYWRkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpCiBvdXRfaWRhX2ZyZWU6CiAJaWRhX2ZyZWUoJmFtcDtudWxsYl9pbmRleGVzLCBudWxsYi0mZ3Q7aW5kZXgpOwogb3V0X2NsZWFudXBfZGlzazoKJiM0MzsJaWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsICZhbXA7ZGV2LSZndDtmbGFncykpCiYjNDM7CQlocnRpbWVyX2NhbmNlbCgmYW1wO251bGxiLSZndDtid190aW1lcik7CiAJcHV0X2Rpc2sobnVsbGItJmd0O2Rpc2spOwogb3V0X2NsZWFudXBfem9uZToKIAludWxsX2ZyZWVfem9uZWRfZGV2KGRldik7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA4OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NTQKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2ggaW4gbnVsbF9ibGsqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIGBkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY2AuIE15IGluaXRpYWwgc2NhbiBzdWdnZXN0cyBpdCYjMzk7cyBhbHRlcmluZyB0aGUgYG51bGxfYWRkX2RldmAgZnVuY3Rpb24sIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IGNhbGxzIG91dCB0aGF0IGl0JiMzOTtzIGludHJvZHVjaW5nIGEgY2hlY2sgYW5kIHRoZW4gdXNpbmcgYGhydGltZXJfY2FuY2VsKCZhbXA7bnVsbGItJmd0O2J3X3RpbWVyKWAgaW4gdGhlIGVycm9yIHBhdGggb2YgdGhhdCBmdW5jdGlvbi4gVGhhdCYjMzk7cyBpbW1lZGlhdGVseSB0ZWxsaW5nOyBpdCBpbmRpY2F0ZXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gb3IgcmVzb3VyY2UgbGVhayBpc3N1ZSByZWxhdGVkIHRvIHRoZSBiYW5kd2lkdGggdGltZXIgd2hlbiBkZXZpY2UgYWRkaXRpb24gZmFpbHMuIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGNvZGUgbm93IHRvIHVuZGVyc3RhbmQgdGhlIHByZWNpc2UgY29udGV4dCBvZiBgbnVsbF9hZGRfZGV2YCBhbmQgaG93IHRoaXMgdGltZXIgaXMgYmVpbmcgdXNlZCwgc28gSSBjYW4gc2VlIHdoeSBhIGNhbmNlbCBpcyBuZWNlc3Nhcnkgb24gZmFpbHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwODowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjA1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMDUwOlx0XHR9XG4yMDUxOlx0XG4yMDUyOlx0XHRydiA9IGFkZF9kaXNrKG51bGxiLVx1MDAzZWRpc2spO1xuMjA1MzpcdFx0aWYgKHJ2KVxuMjA1NDpcdFx0XHRnb3RvIG91dF9pZGFfZnJlZTtcbjIwNTU6XHRcbjIwNTY6XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2bnVsbGItXHUwMDNlbGlzdCwgXHUwMDI2bnVsbGJfbGlzdCk7XG4yMDU3Olx0XG4yMDU4Olx0XHRwcl9pbmZvKFwmIzM0O2Rpc2sgJXMgY3JlYXRlZFxcblwmIzM0OywgbnVsbGItXHUwMDNlZGlza19uYW1lKTtcbjIwNTk6XHRcbjIwNjA6XHRcdHJldHVybiAwO1xuMjA2MTpcdFxuMjA2MjpcdG91dF9pZGFfZnJlZTpcbjIwNjM6XHRcdGlkYV9mcmVlKFx1MDAyNm51bGxiX2luZGV4ZXMsIG51bGxiLVx1MDAzZWluZGV4KTtcbjIwNjQ6XHRvdXRfY2xlYW51cF9kaXNrOlxuMjA2NTpcdFx0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncykpXG4yMDY2Olx0XHRcdGhydGltZXJfY2FuY2VsKFx1MDAyNm51bGxiLVx1MDAzZWJ3X3RpbWVyKTtcbjIwNjc6XHRcdHB1dF9kaXNrKG51bGxiLVx1MDAzZWRpc2spO1xuMjA2ODpcdG91dF9jbGVhbnVwX3pvbmU6XG4yMDY5Olx0XHRudWxsX2ZyZWVfem9uZWRfZGV2KGRldik7XG4yMDcwOlx0b3V0X2NsZWFudXBfdGFnczpcbjIwNzE6XHRcdGlmIChudWxsYi1cdTAwM2V0YWdfc2V0ID09IFx1MDAyNm51bGxiLVx1MDAzZV9fdGFnX3NldClcbjIwNzI6XHRcdFx0YmxrX21xX2ZyZWVfdGFnX3NldChudWxsYi1cdTAwM2V0YWdfc2V0KTtcbjIwNzM6XHRvdXRfY2xlYW51cF9xdWV1ZXM6XG4yMDc0Olx0XHRrZnJlZShudWxsYi1cdTAwM2VxdWV1ZXMpO1xuMjA3NTpcdG91dF9mcmVlX251bGxiOlxuMjA3NjpcdFx0a2ZyZWUobnVsbGIpO1xuMjA3NzpcdFx0ZGV2LVx1MDAzZW51bGxiID0gTlVMTDtcbjIwNzg6XHRvdXQ6XG4yMDc5Olx0XHRyZXR1cm4gcnY7XG4yMDgwOlx0fVxuMjA4MTpcdFxuMjA4MjpcdHN0YXRpYyBzdHJ1Y3QgbnVsbGIgKm51bGxfZmluZF9kZXZfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKVxuMjA4MzpcdHtcbjIwODQ6XHRcdHN0cnVjdCBudWxsYiAqbnVsbGIgPSBOVUxMLCAqbmI7XG4yMDg1Olx0XG4yMDg2Olx0XHRtdXRleF9sb2NrKFx1MDAyNmxvY2spO1xuMjA4NzpcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShuYiwgXHUwMDI2bnVsbGJfbGlzdCwgbGlzdCkge1xuMjA4ODpcdFx0XHRpZiAoc3RyY21wKG5iLVx1MDAzZWRpc2tfbmFtZSwgbmFtZSkgPT0gMCkge1xuMjA4OTpcdFx0XHRcdG51bGxiID0gbmI7XG4yMDkwOlx0XHRcdFx0YnJlYWs7XG4yMDkxOlx0XHRcdH1cbjIwOTI6XHRcdH1cbjIwOTM6XHRcdG11dGV4X3VubG9jayhcdTAwMjZsb2NrKTtcbjIwOTQ6XHRcbjIwOTU6XHRcdHJldHVybiBudWxsYjtcbjIwOTY6XHR9XG4yMDk3Olx0XG4yMDk4Olx0c3RhdGljIGludCBudWxsX2NyZWF0ZV9kZXYodm9pZClcbjIwOTk6XHR7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDg6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgzMQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENyaXRpY2FsIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBmdW5jdGlvbmFsIGZpeCDigJMgZ29vZCEgSXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSBhZGRpbmcgYGhydGltZXJfY2FuY2VsKCZhbXA7bnVsbGItJmd0O2J3X3RpbWVyKWAgdG8gdGhlIGVycm9yIGhhbmRsaW5nIHBhdGggb2YgdGhlIGBudWxsX2FkZF9kZXZgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIHRoaXMgaXMgbGlrZWx5IGFkZHJlc3NpbmcgYSBwcmV0dHkgc2VyaW91cyBpc3N1ZS4gVGhlIGRlc2NyaXB0aW9uIGltcGxpZXMgZWl0aGVyIGEgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8gb3IgYSB0aW1lciBsZWFrLiBJJiMzOTt2ZSBzZWVuIGJvdGggb2YgdGhvc2UgYml0ZSB1cyBiZWZvcmUsIHNvIHRoaXMgd2FycmFudHMgYSBjbG9zZXIgbG9vay4KCk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGZsb3cuIEkgbmVlZCB0byB0cmFjZSAqaG93KiBgbnVsbF9hZGRfZGV2YCBpcyBpbnZva2VkLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsaW5nIGNvbnRleHQgaXMgY3J1Y2lhbCB0byBmdWxseSBncmFzcCB0aGUgcG90ZW50aWFsIGltcGFjdCBvZiB0aGlzIGZpeCBhbmQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb24gaXMgaW50cm9kdWNlZC4gSSBuZWVkIHRvIGZpbmQgYWxsIGluc3RhbmNlcyB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoaW4gdGhlIHJlbGV2YW50IGNvZGUgYmFzZS4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgZmlndXJlIG91dCB0aGUgYmlnZ2VyIHBpY3R1cmUgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwODowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudWxsX2FkZF9kZXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yNzU9c3RhdGljIHZvaWQgbnVsbF9kZWxfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpO1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mjc2OnN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yNzctc3RhdGljIHN0cnVjdCBudWxsYiAqbnVsbF9maW5kX2Rldl9ieV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUpO1xuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTQ4ND1zdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTUwMC1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjUwMTpcdFx0cmV0ID0gbnVsbF9hZGRfZGV2KGRldik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MDItXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xOTQyPXN0YXRpYyBib29sIG51bGxfc2V0dXBfZmF1bHQodm9pZClcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTU0LVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MTk1NTpzdGF0aWMgaW50IG51bGxfYWRkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTU2LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yMDk4PXN0YXRpYyBpbnQgbnVsbF9jcmVhdGVfZGV2KHZvaWQpXG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjEwNy1cdG11dGV4X2xvY2soXHUwMDI2bG9jayk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMTA4Olx0cmV0ID0gbnVsbF9hZGRfZGV2KGRldik7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTA5LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA4OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NTMKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBOdWxsIEJsb2NrIERldmljZSBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIHNlZWluZyB0aGlzIGNvZGUgY2FsbGVkIGZyb20gYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgYW5kIGBudWxsX2NyZWF0ZV9kZXZgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgcmVsYXRlZCB0byB0aGUgbnVsbCBibG9jayBkZXZpY2UsIGxpa2VseSBpbml0aWFsaXphdGlvbiBvciBwb3dlciBtYW5hZ2VtZW50LiBNeSBtYWluIGludGVyZXN0IGlzIGluICpob3cqIHRoaXMgYG51bGxfYmxrYCBpcyBjb25maWd1cmVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHBhcmFtZXRlcnMsIGZsYWdzLCBvciBkZXBlbmRlbmNpZXMgYXJlIGF0IHBsYXkuIEFyZSB0aGVyZSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMsIG1vZHVsZSBwYXJhbWV0ZXJzLCBvciBkZXZpY2UgdHJlZSBlbnRyaWVzIHRoYXQgZ292ZXJuIGl0cyBiZWhhdmlvcj8gSXMgdGhlcmUgYW55IGR5bmFtaWMgY29uZmlndXJhdGlvbiBpbnZvbHZlZD8gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSByZWxldmFudCBjb25maWcgZmlsZXMgYW5kIGNvZGUgcGF0aHMgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgc2V0dXAgcmVxdWlyZW1lbnRzLiBUaGUgZ29hbCBoZXJlIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgc28gSSBjYW4gYW50aWNpcGF0ZSBhbnkgaXNzdWVzIGRvd24gdGhlIHJvYWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDg6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJMS19ERVZfTlVMTF9CTEsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctNS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzo2OmNvbmZpZyBCTEtfREVWX05VTExfQkxLXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O051bGwgdGVzdCBibG9jayBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctOS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzoxMDpjb25maWcgQkxLX0RFVl9OVUxMX0JMS19GQVVMVF9JTkpFQ1RJT05cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy0xMS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmYXVsdCBpbmplY3Rpb24gZm9yIE51bGwgdGVzdCBibG9jayBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwODowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTQ2CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIEJsb2NrIERldmljZSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24sIGFuZCBpdCBzZWVtcyBsaWtlIGBCTEtfREVWX05VTExfQkxLYCBpcyB0aGUga2V5IGlkZW50aWZpZXIgaGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGNvbmZpZyByZXByZXNlbnRzIGluIHRoZSBicm9hZGVyIGNvbnRleHQuIE15IGZpcnN0IHRob3VnaHQgaXM6IGFyZSB0aGVyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBJIG5lZWQgdG8gY2hlY2sgYXJvdW5kIHRoZSBjb2RlYmFzZSB0byBzZWUgaWYgdGhlcmUgYXJlIHBhcmFsbGVsIGNvbmZpZ3VyYXRpb25zIG9yIGFzc29jaWF0ZWQgcGFyYW1ldGVycyB0byBmdWxseSBncmFzcCB0aGUgaW50ZW50IGFuZCBpbXBsaWNhdGlvbnMgb2YgYEJMS19ERVZfTlVMTF9CTEtgLiBJIG5lZWQgdG8gZ2V0IHRoZSB3aG9sZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwODowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudWxsX2JsayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWc9MTc9aWYgQkxLX0RFVlxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE4LVxuZHJpdmVycy9ibG9jay9LY29uZmlnOjE5OnNvdXJjZSBcJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yMC1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9ibG9jay9ybnVsbC9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA4OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMDgKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqQW5hbHl6aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSBDcmVhdGlvbiBQcm9jZXNzKioKClJpZ2h0LCBzbyB0aGUgY29uZmlndXJhdGlvbiBpbiBxdWVzdGlvbiBpcyBgQkxLX0RFVl9OVUxMX0JMS2AuIFRoYXQgaW1tZWRpYXRlbHkgc2V0cyB0aGUgc3RhZ2UuIE15IGZvY3VzLCB0aGVuLCBuZWVkcyB0byBiZSBvbiBgbnVsbF9hZGRfZGV2YC4gQnV0IGhvbGQgb24sIEkgcmVjYWxsIHRoYXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgbWVhbnMgaXRzIHNjb3BlIGlzIGxpbWl0ZWQsIHNvIHRoYXQgaXNuJiMzOTt0IHRoZSBvbmx5IHBpZWNlLiBJIGFsc28gbmVlZCB0byBjb25zaWRlciByZWxhdGVkIGZ1bmN0aW9ucyBsaWtlIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIGFuZCBtb3N0IGltcG9ydGFudGx5IGBudWxsX2NyZWF0ZV9kZXZgLiBJdCBzZWVtcyB0byBtZSwgYG51bGxfY3JlYXRlX2RldmAgaXMgdGhlIG1vc3QgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBudWxsIGJsb2NrIGRldmljZSBpcyBhY3R1YWxseSBzZXQgdXAsIHNvIEkmIzM5O2xsIHByaW9yaXRpemUgdW5kZXJzdGFuZGluZyB0aGF0IGZ1bmN0aW9uIGZpcnN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwODowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudWxsX2NyZWF0ZV9kZXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yMDgyPXN0YXRpYyBzdHJ1Y3QgbnVsbGIgKm51bGxfZmluZF9kZXZfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwOTctXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMDk4OnN0YXRpYyBpbnQgbnVsbF9jcmVhdGVfZGV2KHZvaWQpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDk5LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yMTI3PXN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxNzktXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9kZXZpY2VzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjE4MDpcdFx0cmV0ID0gbnVsbF9jcmVhdGVfZGV2KCk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTgxLVx0XHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwODowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzA3CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSBzZWUgdGhpcyBwbGF5aW5nIG91dDoKCioqQW5hbHl6aW5nIHRoZSBOdWxsIEJsb2NrIERldmljZSBJbml0aWFsaXphdGlvbioqCgpBbHJpZ2h0LCBzbyBgbnVsbF9jcmVhdGVfZGV2YCBpcyBpbml0aWF0ZWQgZnJvbSBgbnVsbF9pbml0YC4gVGhhdCYjMzk7cyBzdGFuZGFyZCBpbml0aWFsaXphdGlvbi4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCDigJMgdGhlIGRldmljZSBpcyBjcmVhdGVkIGR1cmluZyBtb2R1bGUgbG9hZC4gSG93ZXZlciwgdGhlIGludGVyZXN0aW5nIGJpdCBhcHBlYXJzIHRvIGJlIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIGFuZCBpdHMgY29ubmVjdGlvbiB0byBjb25maWdmcy4gSXQmIzM5O3MgdGltZSB0byBkZWx2ZSBkZWVwZXIuIE15IGF0dGVudGlvbiBub3cgc2hpZnRzIHRvIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGl0IGRvZXMgYW5kIGhvdyBwb3dlciBtYW5hZ2VtZW50IGludGVyYWN0cyB3aXRoIHRoZSBkZXZpY2UgY3JlYXRpb24gYW5kIGZpbGVzeXN0ZW0gY29uZmlndXJhdGlvbi4gVGhpcyBpcyBsaWtlbHkgd2hlcmUgdGhlIG51YW5jZXMgbGllLCBnaXZlbiB0aGUgaW50ZWdyYXRpb24gd2l0aCBjb25maWdmcy4gTGV0JiMzOTtzIHNlZSBob3cgdGhlIHBvd2VyIHN0YXRlIGlzIGJlaW5nIGhhbmRsZWQuIEkmIzM5O2xsIG5lZWQgdG8gZGlzc2VjdCBpdHMgcHVycG9zZSBhbmQgaW1wbGVtZW50YXRpb24gYW5kIGFzY2VydGFpbiB3aGF0IGVmZmVjdHMgaXQgd2lsbCBoYXZlIG9uIHRoZSBvdmVyYWxsIGRldmljZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDg6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDgwOlx0e1xuIDQ4MTpcdFx0cmV0dXJuIG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyh0b19udWxsYl9kZXZpY2UoaXRlbSktXHUwMDNlcG93ZXIsIHBhZ2UpO1xuIDQ4MjpcdH1cbiA0ODM6XHRcbiA0ODQ6XHRzdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxuIDQ4NTpcdFx0XHRcdFx0ICAgICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgY291bnQpXG4gNDg2Olx0e1xuIDQ4NzpcdFx0c3RydWN0IG51bGxiX2RldmljZSAqZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pO1xuIDQ4ODpcdFx0Ym9vbCBuZXdwID0gZmFsc2U7XG4gNDg5Olx0XHRzc2l6ZV90IHJldDtcbiA0OTA6XHRcbiA0OTE6XHRcdHJldCA9IG51bGxiX2RldmljZV9ib29sX2F0dHJfc3RvcmUoXHUwMDI2bmV3cCwgcGFnZSwgY291bnQpO1xuIDQ5MjpcdFx0aWYgKHJldCBcdTAwM2MgMClcbiA0OTM6XHRcdFx0cmV0dXJuIHJldDtcbiA0OTQ6XHRcbiA0OTU6XHRcdHJldCA9IGNvdW50O1xuIDQ5NjpcdFx0bXV0ZXhfbG9jayhcdTAwMjZsb2NrKTtcbiA0OTc6XHRcdGlmICghZGV2LVx1MDAzZXBvd2VyIFx1MDAyNlx1MDAyNiBuZXdwKSB7XG4gNDk4Olx0XHRcdGlmICh0ZXN0X2FuZF9zZXRfYml0KE5VTExCX0RFVl9GTF9VUCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSlcbiA0OTk6XHRcdFx0XHRnb3RvIG91dDtcbiA1MDA6XHRcbiA1MDE6XHRcdFx0cmV0ID0gbnVsbF9hZGRfZGV2KGRldik7XG4gNTAyOlx0XHRcdGlmIChyZXQpIHtcbiA1MDM6XHRcdFx0XHRjbGVhcl9iaXQoTlVMTEJfREVWX0ZMX1VQLCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpO1xuIDUwNDpcdFx0XHRcdGdvdG8gb3V0O1xuIDUwNTpcdFx0XHR9XG4gNTA2Olx0XG4gNTA3Olx0XHRcdHNldF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncyk7XG4gNTA4Olx0XHRcdGRldi1cdTAwM2Vwb3dlciA9IG5ld3A7XG4gNTA5Olx0XHRcdHJldCA9IGNvdW50O1xuIDUxMDpcdFx0fSBlbHNlIGlmIChkZXYtXHUwMDNlcG93ZXIgXHUwMDI2XHUwMDI2ICFuZXdwKSB7XG4gNTExOlx0XHRcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTlVMTEJfREVWX0ZMX1VQLCBcdTAwMjZkZXYtXHUwMDNlZmxhZ3MpKSB7XG4gNTEyOlx0XHRcdFx0ZGV2LVx1MDAzZXBvd2VyID0gbmV3cDtcbiA1MTM6XHRcdFx0XHRudWxsX2RlbF9kZXYoZGV2LVx1MDAzZW51bGxiKTtcbiA1MTQ6XHRcdFx0fVxuIDUxNTpcdFx0XHRjbGVhcl9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncyk7XG4gNTE2Olx0XHR9XG4gNTE3Olx0XG4gNTE4Olx0b3V0OlxuIDUxOTpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmxvY2spO1xuIDUyMDpcdFx0cmV0dXJuIHJldDtcbiA1MjE6XHR9XG4gNTIyOlx0XG4gNTIzOlx0Q09ORklHRlNfQVRUUihudWxsYl9kZXZpY2VfLCBwb3dlcik7XG4gNTI0Olx0XG4gNTI1Olx0c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2JhZGJsb2Nrc19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcbiA1MjY6XHR7XG4gNTI3Olx0XHRzdHJ1Y3QgbnVsbGJfZGV2aWNlICp0X2RldiA9IHRvX251bGxiX2RldmljZShpdGVtKTtcbiA1Mjg6XHRcbiA1Mjk6XHRcdHJldHVybiBiYWRibG9ja3Nfc2hvdyhcdTAwMjZ0X2Rldi1cdTAwM2ViYWRibG9ja3MsIHBhZ2UsIDApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAwODowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzM1CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENvbmZpZ0ZTIEF0dHJpYnV0ZSBTdG9yZSBGaXgqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBsb29raW5nIGxpa2UgaXQmIzM5O3MgYSBDb25maWdGUyBhdHRyaWJ1dGUgc3RvcmUgZnVuY3Rpb24uIFJpZ2h0LCBzbywgQ29uZmlnRlMsIHRoYXQgbWVhbnMgaXQmIzM5O3MgYWNjZXNzaWJsZSBmcm9tIHVzZXJzcGFjZSDigJMgd2hpY2ggaXMgaW1wb3J0YW50LiBUaGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24gY2FuIHRyaWdnZXIgYG51bGxfYWRkX2RldmAuIEdvdCBpdC4KClRoaXMgcGF0Y2gsIGFwcGFyZW50bHksIGlzIGZpeGluZyBhIHRpbWVyIGxlYWsgYW5kIGEgdXNlLWFmdGVyLWZyZWUgdnVsbmVyYWJpbGl0eSB3aXRoaW4gdGhlIGVycm9yIGhhbmRsaW5nIHBhdGggb2YgYG51bGxfYWRkX2RldmAuIFNvdW5kcyBsaWtlIGEgc29saWQgZnVuY3Rpb25hbCBjaGFuZ2UsIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlJiMzOTtkIHdhbnQgdG8gaW5jb3Jwb3JhdGUuIENvbnNpZGVyaW5nIHRoZSBuYXR1cmUgb2YgdGhlIGZpeCwgSSYjMzk7ZCBzYXkgdGhpcyBpcyAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IGZvciBzdXJlLgoKSSYjMzk7bGwgZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIGBudWxsX2FkZF9kZXZgIGFuZCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCwgc2luY2UgdGhleSYjMzk7cmUgdGhlIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQuIExvb2tzIGxpa2UgdGhlIHJlbGV2YW50IGNvbmZpZyB0byBlbmFibGUgaXMgYEJMS19ERVZfTlVMTF9CTEtgLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyB0aGUgb25seSBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF0JiMzOTtzIHBlcnRpbmVudC4gV2UgZG9uJiMzOTt0IHdhbnQgdG8gbWlzcyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMDg6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJMS19ERVZfTlVMTF9CTEsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTUtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6Njpjb25maWcgQkxLX0RFVl9OVUxMX0JMS1xuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTktXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6MTA6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctMTEtXHRib29sIFwmIzM0O1N1cHBvcnQgZmF1bHQgaW5qZWN0aW9uIGZvciBOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA4OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyNzYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKktlcm5lbCBCbG9jayBEZXZpY2UgSW50ZXJuYWxzIC0gUXVpY2sgQXNzZXNzbWVudCoqCgpSaWdodCwgc28sIGFzIEkgdW5kZXJzdGFuZCBpdCwgdGhlIGNvcmUgaXNzdWUgbGlrZWx5IHJldm9sdmVzIGFyb3VuZCBgQkxLX0RFVl9OVUxMX0JMS2AuIEkmIzM5O3ZlIHNlZW4gdGhhdCBiZWZvcmUsIGFuZCBJJiMzOTttIHByZXR0eSBzdXJlIHRoYXQmIzM5O3MgdGhlIHByaW1hcnkgcG9pbnQgb2YgaW52ZXN0aWdhdGlvbiBoZXJlLiBHaXZlbiB0aGUgY29udGV4dCwgdGhhdCBzZWVtcyBsaWtlIHRoZSBtb3N0IGltbWVkaWF0ZSBzdXNwZWN0LgoKTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjazogaXMgdGhlcmUgYW55IGNvbmZpZ3VyYXRpb24gb3B0aW9uIG9yIHJlbGF0ZWQgc2V0dGluZywgcG9zc2libHkgdW5kZXIgYSBkaWZmZXJlbnQgbmFtZSwgdGhhdCBlbmFibGVzIG9yIGRpc2FibGVzIGBOVUxMQl9ERVZfRkxfVEhST1RUTEVEYD8gSSB3YW50IHRvIHNlZSBpZiB0aGlzIGZsYWcgaXMgdGllZCB0byBhbnkgdXNlci1jb250cm9sbGFibGUgYXNwZWN0IG9mIHRoZSBzeXN0ZW0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb290IGNhdXNlcyB0byBmaXggdGhpcy4gSXQmIzM5O3MgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24gdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBwcm92aWRlIGFuIGltcG9ydGFudCBjbHVlLCBkZXBlbmRpbmcgb24gdGhlIGtlcm5lbCB2ZXJzaW9uIGFuZCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gYmUgc3VyZSBiZWZvcmUgbW92aW5nIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA4OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05VTExCX0RFVl9GTF9USFJPVFRMRUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz00MT1lbnVtIG51bGxiX2RldmljZV9mbGFncyB7XG4tLVxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDMtXHROVUxMQl9ERVZfRkxfVVBcdFx0PSAxLFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6NDQ6XHROVUxMQl9ERVZfRkxfVEhST1RUTEVEXHQ9IDIsXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy00NS1cdE5VTExCX0RFVl9GTF9DQUNIRVx0PSAzLFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE2NTI9c3RhdGljIGJsa19zdGF0dXNfdCBudWxsX3F1ZXVlX3JxKHN0cnVjdCBibGtfbXFfaHdfY3R4ICpoY3R4LFxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE2ODQtXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNjg1Olx0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFx1MDAyNm5xLVx1MDAzZWRldi1cdTAwM2VmbGFncykpIHtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE2ODYtXHRcdGJsa19zdGF0dXNfdCBzdHMgPSBudWxsX2hhbmRsZV90aHJvdHRsZWQoY21kKTtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xNzU4PXN0YXRpYyB2b2lkIG51bGxfZGVsX2RldihzdHJ1Y3QgbnVsbGIgKm51bGxiKVxuLS1cbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE3NzItXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoxNzczOlx0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFx1MDAyNm51bGxiLVx1MDAzZWRldi1cdTAwM2VmbGFncykpIHtcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE3NzQtXHRcdGhydGltZXJfY2FuY2VsKFx1MDAyNm51bGxiLVx1MDAzZWJ3X3RpbWVyKTtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0xOTU1PXN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDE1LVx0aWYgKGRldi1cdTAwM2VtYnBzKSB7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMDE2Olx0XHRzZXRfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncyk7XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDE3LVx0XHRudWxsYl9zZXR1cF9id3RpbWVyKG51bGxiKTtcbi0tXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDY0LW91dF9jbGVhbnVwX2Rpc2s6XG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMDY1Olx0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFx1MDAyNmRldi1cdTAwM2VmbGFncykpXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDY2LVx0XHRocnRpbWVyX2NhbmNlbChcdTAwMjZudWxsYi1cdTAwM2Vid190aW1lcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA4OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyMDUKCQkJCQkJCW91dHB1dDogMTI2CgkJCQkJCQl0aG91Z2h0czogOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuCgoqKkFuYWx5emluZyB0aGUgQkxLX0RFVl9OVUxMX0JMSyBGbGFnIGluIHRoZSBDb250ZXh0IG9mIGBkZXYtJmd0O21icHNgIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIHRoZSBsb2dpYyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGhlcmUuIFRoZSBrZXkgaXMgdGhhdCBgQkxLX0RFVl9OVUxMX0JMS2AgZ2V0cyBzZXQgd2hlbiBgZGV2LSZndDttYnBzYCBpcyAqbm90KiB6ZXJvLiBBbmQgaG93IGRvZXMgYGRldi0mZ3Q7bWJwc2AgZ2V0IHNldD8gRWl0aGVyIHRocm91Z2ggY29uZmlnZnMsIG9yIGEgbW9kdWxlIHBhcmFtZXRlci4gTWFrZXMgc2Vuc2UuIFRoZXJlZm9yZSwgdXNpbmcgYEJMS19ERVZfTlVMTF9CTEtgIGlzIGluZGVlZCB0aGUgcmlnaHQgYXBwcm9hY2ggaW4gdGhpcyBjYXNlLiBTZWVtcyBsaWtlIGFuIGVmZmljaWVudCBzb2x1dGlvbiB0byBpbmRpY2F0ZSB0aGlzIHBhcnRpY3VsYXIgc2V0dXAuCgpOb3csIEkgc2hvdWxkIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyB0aGUgKm9ubHkqIHRoaW5nIHdlIG5lZWQgdG8gY29uc2lkZXIgaW4gdGhpcyBzY2VuYXJpby4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBmdW5jdGlvbnMgdGhhdCBhcmUgcmVsYXRlZCB0byB3aGF0IHdlJiMzOTtyZSB0YWxraW5nIGFib3V0LCBvciB0aGF0IG1pZ2h0IHJlcXVpcmUgYXR0ZW50aW9uLiBPa2F5LCBgbnVsbF9hZGRfZGV2YCBhbmQgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgbG9vayBsaWtlIHBvdGVudGlhbGx5IHJlbGV2YW50IGFyZWFzIHRvIGludmVzdGlnYXRlLiBUaG9zZSBhcmUgdGhlIG9uZXMgdG8gZm9jdXMgb24uCgpBbHJpZ2h0LCBJJiMzOTttIGNvbmZpZGVudCBpbiB0aGlzIGFzc2Vzc21lbnQuIFRpbWUgdG8gY2FsbCBpdCBhIHN1Y2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDA4OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCTEtfREVWX05VTExfQkxLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bnVsbF9hZGRfZGV2JiMzNDssCiAgICAmIzM0O251bGxiX2RldmljZV9wb3dlcl9zdG9yZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHRpbWVyIGxlYWsvdXNlLWFmdGVyLWZyZWUgaW4gdGhlIGVycm9yIHBhdGggb2YgYG51bGxfYWRkX2RldmAgYnkgY2FuY2VsbGluZyBgYndfdGltZXJgIGlmIHRoZSBkZXZpY2UgaXMgdGhyb3R0bGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG51bGxfYmxrIGRyaXZlciwgcmVhY2hhYmxlIHZpYSBjb25maWdmcyAoYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWApIG9yIG1vZHVsZSBpbml0aWFsaXphdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9OVUxMX0JMSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O251bGxfYWRkX2RldiYjMzQ7LAogICAgJiMzNDtudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSB0aW1lciBsZWFrL3VzZS1hZnRlci1mcmVlIGluIHRoZSBlcnJvciBwYXRoIG9mIGBudWxsX2FkZF9kZXZgIGJ5IGNhbmNlbGxpbmcgYGJ3X3RpbWVyYCBpZiB0aGUgZGV2aWNlIGlzIHRocm90dGxlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBudWxsX2JsayBkcml2ZXIsIHJlYWNoYWJsZSB2aWEgY29uZmlnZnMgKGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgKSBvciBtb2R1bGUgaW5pdGlhbGl6YXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwODowMDo1Ni40OTE4MTQ2MzdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzcxMTY3NzU5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnVsbF9hZGRfZGV2XCIsXG4gICAgXCJudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHRpbWVyIGxlYWsvdXNlLWFmdGVyLWZyZWUgaW4gdGhlIGVycm9yIHBhdGggb2YgYG51bGxfYWRkX2RldmAgYnkgY2FuY2VsbGluZyBgYndfdGltZXJgIGlmIHRoZSBkZXZpY2UgaXMgdGhyb3R0bGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG51bGxfYmxrIGRyaXZlciwgcmVhY2hhYmxlIHZpYSBjb25maWdmcyAoYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWApIG9yIG1vZHVsZSBpbml0aWFsaXphdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDg6MDA6NTYuNDkxODMzNTU3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzI0NTk1MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiNDM0MmJlYjY5ZjcxZWY5ODY3N2NiNWEyMGRhZjFkOTU2MWUzOGY1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVuIDI0IDA4OjAwOjU1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcXG5pbmRleCBmOGMwZmQ1N2UwNDFhOC4uOGYxYWQ3NjcxMGEwNzggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xcbkBAIC0yMDYyLDYgKzIwNjIsOCBAQCBzdGF0aWMgaW50IG51bGxfYWRkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuIG91dF9pZGFfZnJlZTpcXG4gXFx0aWRhX2ZyZWUoXFx1MDAyNm51bGxiX2luZGV4ZXMsIG51bGxiLVxcdTAwM2VpbmRleCk7XFxuIG91dF9jbGVhbnVwX2Rpc2s6XFxuK1xcdGlmICh0ZXN0X2JpdChOVUxMQl9ERVZfRkxfVEhST1RUTEVELCBcXHUwMDI2ZGV2LVxcdTAwM2VmbGFncykpXFxuK1xcdFxcdGhydGltZXJfY2FuY2VsKFxcdTAwMjZudWxsYi1cXHUwMDNlYndfdGltZXIpO1xcbiBcXHRwdXRfZGlzayhudWxsYi1cXHUwMDNlZGlzayk7XFxuIG91dF9jbGVhbnVwX3pvbmU6XFxuIFxcdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDg6MDA6NTYuOTY1MjIwOTQ2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzIzODI2MTY3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX05VTExfQkxLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnVsbF9hZGRfZGV2XCIsXG4gICAgXCJudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHRpbWVyIGxlYWsvdXNlLWFmdGVyLWZyZWUgaW4gdGhlIGVycm9yIHBhdGggb2YgYG51bGxfYWRkX2RldmAgYnkgY2FuY2VsbGluZyBgYndfdGltZXJgIGlmIHRoZSBkZXZpY2UgaXMgdGhyb3R0bGVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIG51bGxfYmxrIGRyaXZlciwgcmVhY2hhYmxlIHZpYSBjb25maWdmcyAoYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWApIG9yIG1vZHVsZSBpbml0aWFsaXphdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiNDM0MmJlYjY5ZjcxZWY5ODY3N2NiNWEyMGRhZjFkOTU2MWUzOGY1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdW4gMjQgMDg6MDA6NTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYyBiL2RyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jXG5pbmRleCBmOGMwZmQ1N2UwNDFhOC4uOGYxYWQ3NjcxMGEwNzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1xuKysrIGIvZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcbkBAIC0yMDYyLDYgKzIwNjIsOCBAQCBzdGF0aWMgaW50IG51bGxfYWRkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXG4gb3V0X2lkYV9mcmVlOlxuIFx0aWRhX2ZyZWUoXHUwMDI2bnVsbGJfaW5kZXhlcywgbnVsbGItXHUwMDNlaW5kZXgpO1xuIG91dF9jbGVhbnVwX2Rpc2s6XG4rXHRpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX1RIUk9UVExFRCwgXHUwMDI2ZGV2LVx1MDAzZWZsYWdzKSlcbitcdFx0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2bnVsbGItXHUwMDNlYndfdGltZXIpO1xuIFx0cHV0X2Rpc2sobnVsbGItXHUwMDNlZGlzayk7XG4gb3V0X2NsZWFudXBfem9uZTpcbiBcdG51bGxfZnJlZV96b25lZF9kZXYoZGV2KTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA4OjAwOjU2Ljk2NTIyMjY1NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNjg4MjE3MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2VybmVsIFBhdGNoIGluIG51bGxfYmxrKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRvdWNoZXMgYGRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jYC4gTXkgaW5pdGlhbCBzY2FuIHN1Z2dlc3RzIGl0J3MgYWx0ZXJpbmcgdGhlIGBudWxsX2FkZF9kZXZgIGZ1bmN0aW9uLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBjYWxscyBvdXQgdGhhdCBpdCdzIGludHJvZHVjaW5nIGEgY2hlY2sgYW5kIHRoZW4gdXNpbmcgYGhydGltZXJfY2FuY2VsKFx1MDAyNm51bGxiLVx1MDAzZWJ3X3RpbWVyKWAgaW4gdGhlIGVycm9yIHBhdGggb2YgdGhhdCBmdW5jdGlvbi4gVGhhdCdzIGltbWVkaWF0ZWx5IHRlbGxpbmc7IGl0IGluZGljYXRlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBvciByZXNvdXJjZSBsZWFrIGlzc3VlIHJlbGF0ZWQgdG8gdGhlIGJhbmR3aWR0aCB0aW1lciB3aGVuIGRldmljZSBhZGRpdGlvbiBmYWlscy4gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgY29kZSBub3cgdG8gdW5kZXJzdGFuZCB0aGUgcHJlY2lzZSBjb250ZXh0IG9mIGBudWxsX2FkZF9kZXZgIGFuZCBob3cgdGhpcyB0aW1lciBpcyBiZWluZyB1c2VkLCBzbyBJIGNhbiBzZWUgd2h5IGEgY2FuY2VsIGlzIG5lY2Vzc2FyeSBvbiBmYWlsdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODU0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwODowMTowMS4zMzQwNDcwOThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDY2NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjA1MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjA1MDpcXHRcXHR9XFxuMjA1MTpcXHRcXG4yMDUyOlxcdFxcdHJ2ID0gYWRkX2Rpc2sobnVsbGItXFx1MDAzZWRpc2spO1xcbjIwNTM6XFx0XFx0aWYgKHJ2KVxcbjIwNTQ6XFx0XFx0XFx0Z290byBvdXRfaWRhX2ZyZWU7XFxuMjA1NTpcXHRcXG4yMDU2OlxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNm51bGxiLVxcdTAwM2VsaXN0LCBcXHUwMDI2bnVsbGJfbGlzdCk7XFxuMjA1NzpcXHRcXG4yMDU4OlxcdFxcdHByX2luZm8oXFxcImRpc2sgJXMgY3JlYXRlZFxcXFxuXFxcIiwgbnVsbGItXFx1MDAzZWRpc2tfbmFtZSk7XFxuMjA1OTpcXHRcXG4yMDYwOlxcdFxcdHJldHVybiAwO1xcbjIwNjE6XFx0XFxuMjA2MjpcXHRvdXRfaWRhX2ZyZWU6XFxuMjA2MzpcXHRcXHRpZGFfZnJlZShcXHUwMDI2bnVsbGJfaW5kZXhlcywgbnVsbGItXFx1MDAzZWluZGV4KTtcXG4yMDY0OlxcdG91dF9jbGVhbnVwX2Rpc2s6XFxuMjA2NTpcXHRcXHRpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX1RIUk9UVExFRCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpKVxcbjIwNjY6XFx0XFx0XFx0aHJ0aW1lcl9jYW5jZWwoXFx1MDAyNm51bGxiLVxcdTAwM2Vid190aW1lcik7XFxuMjA2NzpcXHRcXHRwdXRfZGlzayhudWxsYi1cXHUwMDNlZGlzayk7XFxuMjA2ODpcXHRvdXRfY2xlYW51cF96b25lOlxcbjIwNjk6XFx0XFx0bnVsbF9mcmVlX3pvbmVkX2RldihkZXYpO1xcbjIwNzA6XFx0b3V0X2NsZWFudXBfdGFnczpcXG4yMDcxOlxcdFxcdGlmIChudWxsYi1cXHUwMDNldGFnX3NldCA9PSBcXHUwMDI2bnVsbGItXFx1MDAzZV9fdGFnX3NldClcXG4yMDcyOlxcdFxcdFxcdGJsa19tcV9mcmVlX3RhZ19zZXQobnVsbGItXFx1MDAzZXRhZ19zZXQpO1xcbjIwNzM6XFx0b3V0X2NsZWFudXBfcXVldWVzOlxcbjIwNzQ6XFx0XFx0a2ZyZWUobnVsbGItXFx1MDAzZXF1ZXVlcyk7XFxuMjA3NTpcXHRvdXRfZnJlZV9udWxsYjpcXG4yMDc2OlxcdFxcdGtmcmVlKG51bGxiKTtcXG4yMDc3OlxcdFxcdGRldi1cXHUwMDNlbnVsbGIgPSBOVUxMO1xcbjIwNzg6XFx0b3V0OlxcbjIwNzk6XFx0XFx0cmV0dXJuIHJ2O1xcbjIwODA6XFx0fVxcbjIwODE6XFx0XFxuMjA4MjpcXHRzdGF0aWMgc3RydWN0IG51bGxiICpudWxsX2ZpbmRfZGV2X2J5X25hbWUoY29uc3QgY2hhciAqbmFtZSlcXG4yMDgzOlxcdHtcXG4yMDg0OlxcdFxcdHN0cnVjdCBudWxsYiAqbnVsbGIgPSBOVUxMLCAqbmI7XFxuMjA4NTpcXHRcXG4yMDg2OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcbjIwODc6XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShuYiwgXFx1MDAyNm51bGxiX2xpc3QsIGxpc3QpIHtcXG4yMDg4OlxcdFxcdFxcdGlmIChzdHJjbXAobmItXFx1MDAzZWRpc2tfbmFtZSwgbmFtZSkgPT0gMCkge1xcbjIwODk6XFx0XFx0XFx0XFx0bnVsbGIgPSBuYjtcXG4yMDkwOlxcdFxcdFxcdFxcdGJyZWFrO1xcbjIwOTE6XFx0XFx0XFx0fVxcbjIwOTI6XFx0XFx0fVxcbjIwOTM6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZsb2NrKTtcXG4yMDk0OlxcdFxcbjIwOTU6XFx0XFx0cmV0dXJuIG51bGxiO1xcbjIwOTY6XFx0fVxcbjIwOTc6XFx0XFxuMjA5ODpcXHRzdGF0aWMgaW50IG51bGxfY3JlYXRlX2Rldih2b2lkKVxcbjIwOTk6XFx0e1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwODowMTowMS4zMzQyOTY5NzhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjU2MzQ3Mjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIENyaXRpY2FsIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIGZ1bmN0aW9uYWwgZml4IOKAkyBnb29kISBJdCBsb29rcyBsaWtlIHRoZXkncmUgYWRkaW5nIGBocnRpbWVyX2NhbmNlbChcdTAwMjZudWxsYi1cdTAwM2Vid190aW1lcilgIHRvIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIG9mIHRoZSBgbnVsbF9hZGRfZGV2YCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGxpa2VseSBhZGRyZXNzaW5nIGEgcHJldHR5IHNlcmlvdXMgaXNzdWUuIFRoZSBkZXNjcmlwdGlvbiBpbXBsaWVzIGVpdGhlciBhIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvIG9yIGEgdGltZXIgbGVhay4gSSd2ZSBzZWVuIGJvdGggb2YgdGhvc2UgYml0ZSB1cyBiZWZvcmUsIHNvIHRoaXMgd2FycmFudHMgYSBjbG9zZXIgbG9vay5cblxuTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZmxvdy4gSSBuZWVkIHRvIHRyYWNlICpob3cqIGBudWxsX2FkZF9kZXZgIGlzIGludm9rZWQuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxpbmcgY29udGV4dCBpcyBjcnVjaWFsIHRvIGZ1bGx5IGdyYXNwIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIHRoaXMgZml4IGFuZCB0byBlbnN1cmUgbm8gcmVncmVzc2lvbiBpcyBpbnRyb2R1Y2VkLiBJIG5lZWQgdG8gZmluZCBhbGwgaW5zdGFuY2VzIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGhpbiB0aGUgcmVsZXZhbnQgY29kZSBiYXNlLiBMZXQncyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgdGhlIGJpZ2dlciBwaWN0dXJlIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MzEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA4OjAxOjA1LjU5MDY0NzE1M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODg1NDA3NjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnVsbF9hZGRfZGV2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTI3NT1zdGF0aWMgdm9pZCBudWxsX2RlbF9kZXYoc3RydWN0IG51bGxiICpudWxsYik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6Mjc2OnN0YXRpYyBpbnQgbnVsbF9hZGRfZGV2KHN0cnVjdCBudWxsYl9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjc3LXN0YXRpYyBzdHJ1Y3QgbnVsbGIgKm51bGxfZmluZF9kZXZfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTQ4ND1zdGF0aWMgc3NpemVfdCBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNTAwLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjUwMTpcXHRcXHRyZXQgPSBudWxsX2FkZF9kZXYoZGV2KTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy01MDItXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTk0Mj1zdGF0aWMgYm9vbCBudWxsX3NldHVwX2ZhdWx0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xOTU0LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE5NTU6c3RhdGljIGludCBudWxsX2FkZF9kZXYoc3RydWN0IG51bGxiX2RldmljZSAqZGV2KVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTE5NTYte1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MjA5OD1zdGF0aWMgaW50IG51bGxfY3JlYXRlX2Rldih2b2lkKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjEwNy1cXHRtdXRleF9sb2NrKFxcdTAwMjZsb2NrKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMTA4OlxcdHJldCA9IG51bGxfYWRkX2RldihkZXYpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIxMDktXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZsb2NrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDg6MDE6MDUuODc5MTk1ODQ2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQzMjEwNjkyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBOdWxsIEJsb2NrIERldmljZSBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIEknbSBzZWVpbmcgdGhpcyBjb2RlIGNhbGxlZCBmcm9tIGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgIGFuZCBgbnVsbF9jcmVhdGVfZGV2YC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIHJlbGF0ZWQgdG8gdGhlIG51bGwgYmxvY2sgZGV2aWNlLCBsaWtlbHkgaW5pdGlhbGl6YXRpb24gb3IgcG93ZXIgbWFuYWdlbWVudC4gTXkgbWFpbiBpbnRlcmVzdCBpcyBpbiAqaG93KiB0aGlzIGBudWxsX2Jsa2AgaXMgY29uZmlndXJlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBwYXJhbWV0ZXJzLCBmbGFncywgb3IgZGVwZW5kZW5jaWVzIGFyZSBhdCBwbGF5LiBBcmUgdGhlcmUgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zLCBtb2R1bGUgcGFyYW1ldGVycywgb3IgZGV2aWNlIHRyZWUgZW50cmllcyB0aGF0IGdvdmVybiBpdHMgYmVoYXZpb3I/IElzIHRoZXJlIGFueSBkeW5hbWljIGNvbmZpZ3VyYXRpb24gaW52b2x2ZWQ/IEkgbmVlZCB0byBkaWcgaW50byB0aGUgcmVsZXZhbnQgY29uZmlnIGZpbGVzIGFuZCBjb2RlIHBhdGhzIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIHNldHVwIHJlcXVpcmVtZW50cy4gVGhlIGdvYWwgaGVyZSBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBwaWN0dXJlIHNvIEkgY2FuIGFudGljaXBhdGUgYW55IGlzc3VlcyBkb3duIHRoZSByb2FkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTUzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDg6MDE6MDkuMzExMzA1NTExWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg4NzMwMjU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCTEtfREVWX05VTExfQkxLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy01LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzo2OmNvbmZpZyBCTEtfREVWX05VTExfQkxLXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIk51bGwgdGVzdCBibG9jayBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctOS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6MTA6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTExLVxcdGJvb2wgXFxcIlN1cHBvcnQgZmF1bHQgaW5qZWN0aW9uIGZvciBOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwODowMTowOS40MDAwNDEwNjlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTkzNTIwOTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgQmxvY2sgRGV2aWNlIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24sIGFuZCBpdCBzZWVtcyBsaWtlIGBCTEtfREVWX05VTExfQkxLYCBpcyB0aGUga2V5IGlkZW50aWZpZXIgaGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGNvbmZpZyByZXByZXNlbnRzIGluIHRoZSBicm9hZGVyIGNvbnRleHQuIE15IGZpcnN0IHRob3VnaHQgaXM6IGFyZSB0aGVyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBJIG5lZWQgdG8gY2hlY2sgYXJvdW5kIHRoZSBjb2RlYmFzZSB0byBzZWUgaWYgdGhlcmUgYXJlIHBhcmFsbGVsIGNvbmZpZ3VyYXRpb25zIG9yIGFzc29jaWF0ZWQgcGFyYW1ldGVycyB0byBmdWxseSBncmFzcCB0aGUgaW50ZW50IGFuZCBpbXBsaWNhdGlvbnMgb2YgYEJMS19ERVZfTlVMTF9CTEtgLiBJIG5lZWQgdG8gZ2V0IHRoZSB3aG9sZSBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTQ2LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDg6MDE6MTIuMzkzNTY0Mjk1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTQ2NjcyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudWxsX2Jsa1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9LY29uZmlnPTE3PWlmIEJMS19ERVZcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTgtXFxuZHJpdmVycy9ibG9jay9LY29uZmlnOjE5OnNvdXJjZSBcXFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnXFxcIlxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0yMC1zb3VyY2UgXFxcImRyaXZlcnMvYmxvY2svcm51bGwvS2NvbmZpZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDg6MDE6MTIuNDU1MDM3NTQ0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MDE5MTk1MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipBbmFseXppbmcgdGhlIE51bGwgQmxvY2sgRGV2aWNlIENyZWF0aW9uIFByb2Nlc3MqKlxuXG5SaWdodCwgc28gdGhlIGNvbmZpZ3VyYXRpb24gaW4gcXVlc3Rpb24gaXMgYEJMS19ERVZfTlVMTF9CTEtgLiBUaGF0IGltbWVkaWF0ZWx5IHNldHMgdGhlIHN0YWdlLiBNeSBmb2N1cywgdGhlbiwgbmVlZHMgdG8gYmUgb24gYG51bGxfYWRkX2RldmAuIEJ1dCBob2xkIG9uLCBJIHJlY2FsbCB0aGF0J3MgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgbWVhbnMgaXRzIHNjb3BlIGlzIGxpbWl0ZWQsIHNvIHRoYXQgaXNuJ3QgdGhlIG9ubHkgcGllY2UuIEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHJlbGF0ZWQgZnVuY3Rpb25zIGxpa2UgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgYW5kIG1vc3QgaW1wb3J0YW50bHkgYG51bGxfY3JlYXRlX2RldmAuIEl0IHNlZW1zIHRvIG1lLCBgbnVsbF9jcmVhdGVfZGV2YCBpcyB0aGUgbW9zdCBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIG51bGwgYmxvY2sgZGV2aWNlIGlzIGFjdHVhbGx5IHNldCB1cCwgc28gSSdsbCBwcmlvcml0aXplIHVuZGVyc3RhbmRpbmcgdGhhdCBmdW5jdGlvbiBmaXJzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIwOCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA4OjAxOjE2LjI1Njk2MDNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MzgwODE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm51bGxfY3JlYXRlX2RldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yMDgyPXN0YXRpYyBzdHJ1Y3QgbnVsbGIgKm51bGxfZmluZF9kZXZfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA5Ny1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMDk4OnN0YXRpYyBpbnQgbnVsbF9jcmVhdGVfZGV2KHZvaWQpXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjA5OS17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYz0yMTI3PXN0YXRpYyBpbnQgX19pbml0IG51bGxfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtMjE3OS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnJfZGV2aWNlczsgaSsrKSB7XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjE4MDpcXHRcXHRyZXQgPSBudWxsX2NyZWF0ZV9kZXYoKTtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMTgxLVxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA4OjAxOjE2LjMxNDM0NjE1OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzE1NTI3ODc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJIHNlZSB0aGlzIHBsYXlpbmcgb3V0OlxuXG4qKkFuYWx5emluZyB0aGUgTnVsbCBCbG9jayBEZXZpY2UgSW5pdGlhbGl6YXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBgbnVsbF9jcmVhdGVfZGV2YCBpcyBpbml0aWF0ZWQgZnJvbSBgbnVsbF9pbml0YC4gVGhhdCdzIHN0YW5kYXJkIGluaXRpYWxpemF0aW9uLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoIOKAkyB0aGUgZGV2aWNlIGlzIGNyZWF0ZWQgZHVyaW5nIG1vZHVsZSBsb2FkLiBIb3dldmVyLCB0aGUgaW50ZXJlc3RpbmcgYml0IGFwcGVhcnMgdG8gYmUgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgYW5kIGl0cyBjb25uZWN0aW9uIHRvIGNvbmZpZ2ZzLiBJdCdzIHRpbWUgdG8gZGVsdmUgZGVlcGVyLiBNeSBhdHRlbnRpb24gbm93IHNoaWZ0cyB0byBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCBkb2VzIGFuZCBob3cgcG93ZXIgbWFuYWdlbWVudCBpbnRlcmFjdHMgd2l0aCB0aGUgZGV2aWNlIGNyZWF0aW9uIGFuZCBmaWxlc3lzdGVtIGNvbmZpZ3VyYXRpb24uIFRoaXMgaXMgbGlrZWx5IHdoZXJlIHRoZSBudWFuY2VzIGxpZSwgZ2l2ZW4gdGhlIGludGVncmF0aW9uIHdpdGggY29uZmlnZnMuIExldCdzIHNlZSBob3cgdGhlIHBvd2VyIHN0YXRlIGlzIGJlaW5nIGhhbmRsZWQuIEknbGwgbmVlZCB0byBkaXNzZWN0IGl0cyBwdXJwb3NlIGFuZCBpbXBsZW1lbnRhdGlvbiBhbmQgYXNjZXJ0YWluIHdoYXQgZWZmZWN0cyBpdCB3aWxsIGhhdmUgb24gdGhlIG92ZXJhbGwgZGV2aWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzA3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDg6MDE6MTkuNjI5ODc3Mjc4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NjY4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0ODAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0ODA6XFx0e1xcbiA0ODE6XFx0XFx0cmV0dXJuIG51bGxiX2RldmljZV9ib29sX2F0dHJfc2hvdyh0b19udWxsYl9kZXZpY2UoaXRlbSktXFx1MDAzZXBvd2VyLCBwYWdlKTtcXG4gNDgyOlxcdH1cXG4gNDgzOlxcdFxcbiA0ODQ6XFx0c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXG4gNDg1OlxcdFxcdFxcdFxcdFxcdCAgICAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGNvdW50KVxcbiA0ODY6XFx0e1xcbiA0ODc6XFx0XFx0c3RydWN0IG51bGxiX2RldmljZSAqZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pO1xcbiA0ODg6XFx0XFx0Ym9vbCBuZXdwID0gZmFsc2U7XFxuIDQ4OTpcXHRcXHRzc2l6ZV90IHJldDtcXG4gNDkwOlxcdFxcbiA0OTE6XFx0XFx0cmV0ID0gbnVsbGJfZGV2aWNlX2Jvb2xfYXR0cl9zdG9yZShcXHUwMDI2bmV3cCwgcGFnZSwgY291bnQpO1xcbiA0OTI6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuIDQ5MzpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA0OTQ6XFx0XFxuIDQ5NTpcXHRcXHRyZXQgPSBjb3VudDtcXG4gNDk2OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmxvY2spO1xcbiA0OTc6XFx0XFx0aWYgKCFkZXYtXFx1MDAzZXBvd2VyIFxcdTAwMjZcXHUwMDI2IG5ld3ApIHtcXG4gNDk4OlxcdFxcdFxcdGlmICh0ZXN0X2FuZF9zZXRfYml0KE5VTExCX0RFVl9GTF9VUCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpKVxcbiA0OTk6XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuIDUwMDpcXHRcXG4gNTAxOlxcdFxcdFxcdHJldCA9IG51bGxfYWRkX2RldihkZXYpO1xcbiA1MDI6XFx0XFx0XFx0aWYgKHJldCkge1xcbiA1MDM6XFx0XFx0XFx0XFx0Y2xlYXJfYml0KE5VTExCX0RFVl9GTF9VUCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpO1xcbiA1MDQ6XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuIDUwNTpcXHRcXHRcXHR9XFxuIDUwNjpcXHRcXG4gNTA3OlxcdFxcdFxcdHNldF9iaXQoTlVMTEJfREVWX0ZMX0NPTkZJR1VSRUQsIFxcdTAwMjZkZXYtXFx1MDAzZWZsYWdzKTtcXG4gNTA4OlxcdFxcdFxcdGRldi1cXHUwMDNlcG93ZXIgPSBuZXdwO1xcbiA1MDk6XFx0XFx0XFx0cmV0ID0gY291bnQ7XFxuIDUxMDpcXHRcXHR9IGVsc2UgaWYgKGRldi1cXHUwMDNlcG93ZXIgXFx1MDAyNlxcdTAwMjYgIW5ld3ApIHtcXG4gNTExOlxcdFxcdFxcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoTlVMTEJfREVWX0ZMX1VQLCBcXHUwMDI2ZGV2LVxcdTAwM2VmbGFncykpIHtcXG4gNTEyOlxcdFxcdFxcdFxcdGRldi1cXHUwMDNlcG93ZXIgPSBuZXdwO1xcbiA1MTM6XFx0XFx0XFx0XFx0bnVsbF9kZWxfZGV2KGRldi1cXHUwMDNlbnVsbGIpO1xcbiA1MTQ6XFx0XFx0XFx0fVxcbiA1MTU6XFx0XFx0XFx0Y2xlYXJfYml0KE5VTExCX0RFVl9GTF9DT05GSUdVUkVELCBcXHUwMDI2ZGV2LVxcdTAwM2VmbGFncyk7XFxuIDUxNjpcXHRcXHR9XFxuIDUxNzpcXHRcXG4gNTE4OlxcdG91dDpcXG4gNTE5OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2bG9jayk7XFxuIDUyMDpcXHRcXHRyZXR1cm4gcmV0O1xcbiA1MjE6XFx0fVxcbiA1MjI6XFx0XFxuIDUyMzpcXHRDT05GSUdGU19BVFRSKG51bGxiX2RldmljZV8sIHBvd2VyKTtcXG4gNTI0OlxcdFxcbiA1MjU6XFx0c3RhdGljIHNzaXplX3QgbnVsbGJfZGV2aWNlX2JhZGJsb2Nrc19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwgY2hhciAqcGFnZSlcXG4gNTI2OlxcdHtcXG4gNTI3OlxcdFxcdHN0cnVjdCBudWxsYl9kZXZpY2UgKnRfZGV2ID0gdG9fbnVsbGJfZGV2aWNlKGl0ZW0pO1xcbiA1Mjg6XFx0XFxuIDUyOTpcXHRcXHRyZXR1cm4gYmFkYmxvY2tzX3Nob3coXFx1MDAyNnRfZGV2LVxcdTAwM2ViYWRibG9ja3MsIHBhZ2UsIDApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwODowMToxOS42MzAwNzYzNThaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ4MTIyOTE4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDb25maWdGUyBBdHRyaWJ1dGUgU3RvcmUgRml4KipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCBmdW5jdGlvbiwgYW5kIGl0J3MgbG9va2luZyBsaWtlIGl0J3MgYSBDb25maWdGUyBhdHRyaWJ1dGUgc3RvcmUgZnVuY3Rpb24uIFJpZ2h0LCBzbywgQ29uZmlnRlMsIHRoYXQgbWVhbnMgaXQncyBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlIOKAkyB3aGljaCBpcyBpbXBvcnRhbnQuIFRoaXMgcGFydGljdWxhciBmdW5jdGlvbiBjYW4gdHJpZ2dlciBgbnVsbF9hZGRfZGV2YC4gR290IGl0LlxuXG5UaGlzIHBhdGNoLCBhcHBhcmVudGx5LCBpcyBmaXhpbmcgYSB0aW1lciBsZWFrIGFuZCBhIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIG9mIGBudWxsX2FkZF9kZXZgLiBTb3VuZHMgbGlrZSBhIHNvbGlkIGZ1bmN0aW9uYWwgY2hhbmdlLCBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSdkIHdhbnQgdG8gaW5jb3Jwb3JhdGUuIENvbnNpZGVyaW5nIHRoZSBuYXR1cmUgb2YgdGhlIGZpeCwgSSdkIHNheSB0aGlzIGlzIFwiV29ydGhGdXp6aW5nXCIgZm9yIHN1cmUuXG5cbkknbGwgZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIGBudWxsX2FkZF9kZXZgIGFuZCBgbnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlYCwgc2luY2UgdGhleSdyZSB0aGUga2V5IGZ1bmN0aW9ucyBpbnZvbHZlZC4gTG9va3MgbGlrZSB0aGUgcmVsZXZhbnQgY29uZmlnIHRvIGVuYWJsZSBpcyBgQkxLX0RFVl9OVUxMX0JMS2AuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJ2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyB0aGUgb25seSBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF0J3MgcGVydGluZW50LiBXZSBkb24ndCB3YW50IHRvIG1pc3MgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3MzUsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwODowMToyNC4xMTEzMzAyNDdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzODY3NzU3ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJMS19ERVZfTlVMTF9CTEtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZy01LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZzo2OmNvbmZpZyBCTEtfREVWX05VTExfQkxLXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIk51bGwgdGVzdCBibG9jayBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWctOS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWc6MTA6Y29uZmlnIEJMS19ERVZfTlVMTF9CTEtfRkFVTFRfSU5KRUNUSU9OXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9LY29uZmlnLTExLVxcdGJvb2wgXFxcIlN1cHBvcnQgZmF1bHQgaW5qZWN0aW9uIGZvciBOdWxsIHRlc3QgYmxvY2sgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQwODowMToyNi40OTgxMTE3MjhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU2OTA4MTY0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipLZXJuZWwgQmxvY2sgRGV2aWNlIEludGVybmFscyAtIFF1aWNrIEFzc2Vzc21lbnQqKlxuXG5SaWdodCwgc28sIGFzIEkgdW5kZXJzdGFuZCBpdCwgdGhlIGNvcmUgaXNzdWUgbGlrZWx5IHJldm9sdmVzIGFyb3VuZCBgQkxLX0RFVl9OVUxMX0JMS2AuIEkndmUgc2VlbiB0aGF0IGJlZm9yZSwgYW5kIEknbSBwcmV0dHkgc3VyZSB0aGF0J3MgdGhlIHByaW1hcnkgcG9pbnQgb2YgaW52ZXN0aWdhdGlvbiBoZXJlLiBHaXZlbiB0aGUgY29udGV4dCwgdGhhdCBzZWVtcyBsaWtlIHRoZSBtb3N0IGltbWVkaWF0ZSBzdXNwZWN0LlxuXG5Ob3csIGxldCBtZSBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrOiBpcyB0aGVyZSBhbnkgY29uZmlndXJhdGlvbiBvcHRpb24gb3IgcmVsYXRlZCBzZXR0aW5nLCBwb3NzaWJseSB1bmRlciBhIGRpZmZlcmVudCBuYW1lLCB0aGF0IGVuYWJsZXMgb3IgZGlzYWJsZXMgYE5VTExCX0RFVl9GTF9USFJPVFRMRURgPyBJIHdhbnQgdG8gc2VlIGlmIHRoaXMgZmxhZyBpcyB0aWVkIHRvIGFueSB1c2VyLWNvbnRyb2xsYWJsZSBhc3BlY3Qgb2YgdGhlIHN5c3RlbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvb3QgY2F1c2VzIHRvIGZpeCB0aGlzLiBJdCdzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uIHRoYXQgY291bGQgcG90ZW50aWFsbHkgcHJvdmlkZSBhbiBpbXBvcnRhbnQgY2x1ZSwgZGVwZW5kaW5nIG9uIHRoZSBrZXJuZWwgdmVyc2lvbiBhbmQgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIGJlIHN1cmUgYmVmb3JlIG1vdmluZyBmb3J3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Mjc2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMDg6MDE6MzIuMDY3MTk2NjJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NjUxMjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5VTExCX0RFVl9GTF9USFJPVFRMRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9NDE9ZW51bSBudWxsYl9kZXZpY2VfZmxhZ3Mge1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDMtXFx0TlVMTEJfREVWX0ZMX1VQXFx0XFx0PSAxLFxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjQ0OlxcdE5VTExCX0RFVl9GTF9USFJPVFRMRURcXHQ9IDIsXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmMtNDUtXFx0TlVMTEJfREVWX0ZMX0NBQ0hFXFx0PSAzLFxcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTY1Mj1zdGF0aWMgYmxrX3N0YXR1c190IG51bGxfcXVldWVfcnEoc3RydWN0IGJsa19tcV9od19jdHggKmhjdHgsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNjg0LVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE2ODU6XFx0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFxcdTAwMjZucS1cXHUwMDNlZGV2LVxcdTAwM2VmbGFncykpIHtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNjg2LVxcdFxcdGJsa19zdGF0dXNfdCBzdHMgPSBudWxsX2hhbmRsZV90aHJvdHRsZWQoY21kKTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jPTE3NTg9c3RhdGljIHZvaWQgbnVsbF9kZWxfZGV2KHN0cnVjdCBudWxsYiAqbnVsbGIpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNzcyLVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jOjE3NzM6XFx0aWYgKHRlc3RfYml0KE5VTExCX0RFVl9GTF9USFJPVFRMRUQsIFxcdTAwMjZudWxsYi1cXHUwMDNlZGV2LVxcdTAwM2VmbGFncykpIHtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0xNzc0LVxcdFxcdGhydGltZXJfY2FuY2VsKFxcdTAwMjZudWxsYi1cXHUwMDNlYndfdGltZXIpO1xcbi0tXFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM9MTk1NT1zdGF0aWMgaW50IG51bGxfYWRkX2RldihzdHJ1Y3QgbnVsbGJfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDE1LVxcdGlmIChkZXYtXFx1MDAzZW1icHMpIHtcXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYzoyMDE2OlxcdFxcdHNldF9iaXQoTlVMTEJfREVWX0ZMX1RIUk9UVExFRCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpO1xcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwMTctXFx0XFx0bnVsbGJfc2V0dXBfYnd0aW1lcihudWxsYik7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL251bGxfYmxrL21haW4uYy0yMDY0LW91dF9jbGVhbnVwX2Rpc2s6XFxuZHJpdmVycy9ibG9jay9udWxsX2Jsay9tYWluLmM6MjA2NTpcXHRpZiAodGVzdF9iaXQoTlVMTEJfREVWX0ZMX1RIUk9UVExFRCwgXFx1MDAyNmRldi1cXHUwMDNlZmxhZ3MpKVxcbmRyaXZlcnMvYmxvY2svbnVsbF9ibGsvbWFpbi5jLTIwNjYtXFx0XFx0aHJ0aW1lcl9jYW5jZWwoXFx1MDAyNm51bGxiLVxcdTAwM2Vid190aW1lcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA4OjAxOjMyLjEyMjg2ODA5OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTMyMzIxNzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuXG5cbioqQW5hbHl6aW5nIHRoZSBCTEtfREVWX05VTExfQkxLIEZsYWcgaW4gdGhlIENvbnRleHQgb2YgYGRldi1cdTAwM2VtYnBzYCBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIHRoZSBsb2dpYyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGhlcmUuIFRoZSBrZXkgaXMgdGhhdCBgQkxLX0RFVl9OVUxMX0JMS2AgZ2V0cyBzZXQgd2hlbiBgZGV2LVx1MDAzZW1icHNgIGlzICpub3QqIHplcm8uIEFuZCBob3cgZG9lcyBgZGV2LVx1MDAzZW1icHNgIGdldCBzZXQ/IEVpdGhlciB0aHJvdWdoIGNvbmZpZ2ZzLCBvciBhIG1vZHVsZSBwYXJhbWV0ZXIuIE1ha2VzIHNlbnNlLiBUaGVyZWZvcmUsIHVzaW5nIGBCTEtfREVWX05VTExfQkxLYCBpcyBpbmRlZWQgdGhlIHJpZ2h0IGFwcHJvYWNoIGluIHRoaXMgY2FzZS4gU2VlbXMgbGlrZSBhbiBlZmZpY2llbnQgc29sdXRpb24gdG8gaW5kaWNhdGUgdGhpcyBwYXJ0aWN1bGFyIHNldHVwLlxuXG5Ob3csIEkgc2hvdWxkIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyB0aGUgKm9ubHkqIHRoaW5nIHdlIG5lZWQgdG8gY29uc2lkZXIgaW4gdGhpcyBzY2VuYXJpby4gTGV0J3MgbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgb3RoZXIgZnVuY3Rpb25zIHRoYXQgYXJlIHJlbGF0ZWQgdG8gd2hhdCB3ZSdyZSB0YWxraW5nIGFib3V0LCBvciB0aGF0IG1pZ2h0IHJlcXVpcmUgYXR0ZW50aW9uLiBPa2F5LCBgbnVsbF9hZGRfZGV2YCBhbmQgYG51bGxiX2RldmljZV9wb3dlcl9zdG9yZWAgbG9vayBsaWtlIHBvdGVudGlhbGx5IHJlbGV2YW50IGFyZWFzIHRvIGludmVzdGlnYXRlLiBUaG9zZSBhcmUgdGhlIG9uZXMgdG8gZm9jdXMgb24uXG5cbkFscmlnaHQsIEknbSBjb25maWRlbnQgaW4gdGhpcyBhc3Nlc3NtZW50LiBUaW1lIHRvIGNhbGwgaXQgYSBzdWNjZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjA1LCJPdXRwdXRUb2tlbnMiOjEyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDA4OjAxOjQwLjA1NTE5MjUxMloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODI4NjA1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OVUxMX0JMS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm51bGxfYWRkX2RldlwiLFxuICAgIFwibnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSB0aW1lciBsZWFrL3VzZS1hZnRlci1mcmVlIGluIHRoZSBlcnJvciBwYXRoIG9mIGBudWxsX2FkZF9kZXZgIGJ5IGNhbmNlbGxpbmcgYGJ3X3RpbWVyYCBpZiB0aGUgZGV2aWNlIGlzIHRocm90dGxlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBudWxsX2JsayBkcml2ZXIsIHJlYWNoYWJsZSB2aWEgY29uZmlnZnMgKGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgKSBvciBtb2R1bGUgaW5pdGlhbGl6YXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9OVUxMX0JMS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm51bGxfYWRkX2RldlwiLFxuICAgIFwibnVsbGJfZGV2aWNlX3Bvd2VyX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSB0aW1lciBsZWFrL3VzZS1hZnRlci1mcmVlIGluIHRoZSBlcnJvciBwYXRoIG9mIGBudWxsX2FkZF9kZXZgIGJ5IGNhbmNlbGxpbmcgYGJ3X3RpbWVyYCBpZiB0aGUgZGV2aWNlIGlzIHRocm90dGxlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBudWxsX2JsayBkcml2ZXIsIHJlYWNoYWJsZSB2aWEgY29uZmlnZnMgKGBudWxsYl9kZXZpY2VfcG93ZXJfc3RvcmVgKSBvciBtb2R1bGUgaW5pdGlhbGl6YXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowqvfwz[1] Phase: Succeeded StartedAt: 2026-06-24 08:01:51 +0000 UTC FinishedAt: 2026-06-24 08:01:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvfwz[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-24 08:01:51 +0000 UTC FinishedAt: 2026-06-24 08:01:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvfwz[2] Phase: Succeeded StartedAt: 2026-06-24 08:01:51 +0000 UTC FinishedAt: 2026-06-24 12:24:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-24 08:01:51 +0000 UTC FinishedAt: 2026-06-24 12:24:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 08:01:51 +0000 UTC FinishedAt: 2026-06-24 08:02:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 08:01:51 +0000 UTC FinishedAt: 2026-06-24 08:01:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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-workflowqvfwz/series-workflowqvfwz-convert-artifact-1959221714/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 08:02:01 +0000 UTC FinishedAt: 2026-06-24 08:48:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 08:02:01 +0000 UTC FinishedAt: 2026-06-24 08:48:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*5e1ca33e-24ba-4cd1-b8f5-0ec7e4e72526,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-workflowqvfwz/series-workflowqvfwz-convert-artifact-1959221714/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": "c0e863a7-8588-476e-aeac-a53ba8ef8268", "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-workflowqvfwz/series-workflowqvfwz-build-action-1877397072/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 08:02:01 +0000 UTC FinishedAt: 2026-06-24 08:48:38 +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:*5e1ca33e-24ba-4cd1-b8f5-0ec7e4e72526,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-workflowqvfwz/series-workflowqvfwz-convert-artifact-1959221714/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": "c0e863a7-8588-476e-aeac-a53ba8ef8268", "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-workflowqvfwz/series-workflowqvfwz-build-action-1877397072/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 08:48:49 +0000 UTC FinishedAt: 2026-06-24 08:48:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 08:48:49 +0000 UTC FinishedAt: 2026-06-24 08:48:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 08:48:49 +0000 UTC FinishedAt: 2026-06-24 08:49:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 08:48:49 +0000 UTC FinishedAt: 2026-06-24 08:49:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-workflowqvfwz/series-workflowqvfwz-convert-artifact-2118221805/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 08:49:57 +0000 UTC FinishedAt: 2026-06-24 08:51:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 08:49:57 +0000 UTC FinishedAt: 2026-06-24 08:51:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c0e863a7-8588-476e-aeac-a53ba8ef8268,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-workflowqvfwz/series-workflowqvfwz-build-action-1877397072/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-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 08:51:57 +0000 UTC FinishedAt: 2026-06-24 08:51:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 08:51:57 +0000 UTC FinishedAt: 2026-06-24 08:51:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 08:51:57 +0000 UTC FinishedAt: 2026-06-24 09:15:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 08:51:57 +0000 UTC FinishedAt: 2026-06-24 09:15:07 +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:*5e1ca33e-24ba-4cd1-b8f5-0ec7e4e72526,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-workflowqvfwz/series-workflowqvfwz-convert-artifact-2118221805/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": "47a5fc7a-a65b-4039-a6d7-147b543d0e82", "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-workflowqvfwz/series-workflowqvfwz-build-action-3534238025/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 08:51:57 +0000 UTC FinishedAt: 2026-06-24 09:14:50 +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:*5e1ca33e-24ba-4cd1-b8f5-0ec7e4e72526,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-workflowqvfwz/series-workflowqvfwz-convert-artifact-2118221805/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": "47a5fc7a-a65b-4039-a6d7-147b543d0e82", "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-workflowqvfwz/series-workflowqvfwz-build-action-3534238025/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 09:15:07 +0000 UTC FinishedAt: 2026-06-24 09:15:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 09:15:07 +0000 UTC FinishedAt: 2026-06-24 09:15:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 09:15:07 +0000 UTC FinishedAt: 2026-06-24 09:17:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 09:15:07 +0000 UTC FinishedAt: 2026-06-24 09:17:01 +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:*47a5fc7a-a65b-4039-a6d7-147b543d0e82,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-workflowqvfwz/series-workflowqvfwz-build-action-3534238025/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-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 09:17:10 +0000 UTC FinishedAt: 2026-06-24 12:24:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 09:17:10 +0000 UTC FinishedAt: 2026-06-24 12:24:09 +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":["null_add_dev","nullb_device_power_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:*c0e863a7-8588-476e-aeac-a53ba8ef8268,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*47a5fc7a-a65b-4039-a6d7-147b543d0e82,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-workflowqvfwz/series-workflowqvfwz-build-action-1877397072/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-workflowqvfwz/series-workflowqvfwz-build-action-3534238025/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 09:17:10 +0000 UTC FinishedAt: 2026-06-24 09:17:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 09:17:10 +0000 UTC FinishedAt: 2026-06-24 09:17:15 +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":["null_add_dev","nullb_device_power_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-workflowqvfwz/series-workflowqvfwz-convert-artifact-1714738002/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 09:17:10 +0000 UTC FinishedAt: 2026-06-24 09:17:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 09:17:10 +0000 UTC FinishedAt: 2026-06-24 09:17:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 09:17:10 +0000 UTC FinishedAt: 2026-06-24 09:17:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 09:17:20 +0000 UTC FinishedAt: 2026-06-24 12:24:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqvfwz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","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":["null_add_dev","nullb_device_power_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"558ef39aeb9a089a6be9dda8413b0b9d42e843ea","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_NULL_BLK"],"series_id":"86fcf2d8-3af6-4ffc-b978-60342e8c123f","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-06-24 09:17:20 +0000 UTC FinishedAt: 2026-06-24 12:24:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c0e863a7-8588-476e-aeac-a53ba8ef8268,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*47a5fc7a-a65b-4039-a6d7-147b543d0e82,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-workflowqvfwz/series-workflowqvfwz-build-action-1877397072/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-workflowqvfwz/series-workflowqvfwz-build-action-3534238025/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-workflowqvfwz/series-workflowqvfwz-convert-artifact-1714738002/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,}