Name: series-workflowcqlg5 Phase: Succeeded StartedAt: 2026-07-16 02:51:00 +0000 UTC FinishedAt: 2026-07-16 07:42:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqlg5[0] Phase: Succeeded StartedAt: 2026-07-16 02:51:00 +0000 UTC FinishedAt: 2026-07-16 03:20:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqlg5[0].run-triage Phase: Succeeded StartedAt: 2026-07-16 02:51:00 +0000 UTC FinishedAt: 2026-07-16 03:20:41 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "a13c140cc289c0b7b3770bce5b3ad42ab35074aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_LOOP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "a13c140cc289c0b7b3770bce5b3ad42ab35074aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_LOOP" ], "series_id": "4be63bfd-15df-40f9-94c0-d8dab402a4da" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "__loop_clr_fd", "lo_release", "loop_clr_fd" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE2IDAzOjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTE9PUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fbG9vcF9jbHJfZmQmIzM0OywKICAgICYjMzQ7bG9fcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtsb29wX2Nscl9mZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdGVhcmRvd24gcGF0aCBvZiBsb29wIGRldmljZXMgKGBfX2xvb3BfY2xyX2ZkYCksIG1ha2luZyBwYXJ0aXRpb24gcmVtb3ZhbCB1bmNvbmRpdGlvbmFsIGV2ZW4gd2hlbiBgTE9fRkxBR1NfUEFSVFNDQU5gIGlzIG5vdCBzZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGJsb2NrIGRldmljZSBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBsb29wYmFjayBkZXZpY2UgaW9jdGxzIGFuZCBmaWxlIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDM6MjA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiNjU2MDU4ZDVmYjllZWNlOWUzMWFjYzJlZjk2M2NlNGE0YjJkZWU0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMTYgMDM6MjA6MDEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuY1xuaW5kZXggMzEwZGUwNDYzYmViMTQuLjFmYWVjZWYzMzAwOTJiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9sb29wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svbG9vcC5jXG5AQCAtMTExMyw2ICYjNDM7MTExMyw3IEBAIHN0YXRpYyB2b2lkIF9fbG9vcF9jbHJfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbylcbiBcdHN0cnVjdCBxdWV1ZV9saW1pdHMgbGltO1xuIFx0c3RydWN0IGZpbGUgKmZpbHA7XG4gXHRnZnBfdCBnZnAgPSBsby1cdTAwM2VvbGRfZ2ZwX21hc2s7XG4mIzQzO1x0aW50IGVycjtcbiBcbiBcdHNwaW5fbG9ja19pcnEoXHUwMDI2bG8tXHUwMDNlbG9fbG9jayk7XG4gXHRmaWxwID0gbG8tXHUwMDNlbG9fYmFja2luZ19maWxlO1xuQEAgLTExNDYsMjYgJiM0MzsxMTQ3LDIxIEBAIHN0YXRpYyB2b2lkIF9fbG9vcF9jbHJfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbylcbiBcbiBcdGRpc2tfZm9yY2VfbWVkaWFfY2hhbmdlKGxvLVx1MDAzZWxvX2Rpc2spO1xuIFxuLVx0aWYgKGxvLVx1MDAzZWxvX2ZsYWdzIFx1MDAyNiBMT19GTEFHU19QQVJUU0NBTikge1xuLVx0XHRpbnQgZXJyO1xuLVxuLVx0XHQvKlxuLVx0XHQgKiBvcGVuX211dGV4IGhhcyBiZWVuIGhlbGQgYWxyZWFkeSBpbiByZWxlYXNlIHBhdGgsIHNvIGRvbiYjMzk7dFxuLVx0XHQgKiBhY3F1aXJlIGl0IGlmIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGluIHN1Y2ggY2FzZS5cbi1cdFx0ICpcbi1cdFx0ICogSWYgdGhlIHJlcmVhZCBwYXJ0aXRpb24gaXNuJiMzOTt0IGZyb20gcmVsZWFzZSBwYXRoLCBsb19yZWZjbnRcbi1cdFx0ICogbXVzdCBiZSBhdCBsZWFzdCBvbmUgYW5kIGl0IGNhbiBvbmx5IGJlY29tZSB6ZXJvIHdoZW4gdGhlXG4tXHRcdCAqIGN1cnJlbnQgaG9sZGVyIGlzIHJlbGVhc2VkLlxuLVx0XHQgKi9cbi1cdFx0ZXJyID0gYmRldl9kaXNrX2NoYW5nZWQobG8tXHUwMDNlbG9fZGlzaywgZmFsc2UpO1xuLVx0XHRpZiAoZXJyKVxuLVx0XHRcdHByX3dhcm4oXCYjMzQ7JXM6IHBhcnRpdGlvbiBzY2FuIG9mIGxvb3AlZCBmYWlsZWQgKHJjPSVkKVxcblwmIzM0Oyxcbi1cdFx0XHRcdF9fZnVuY19fLCBsby1cdTAwM2Vsb19udW1iZXIsIGVycik7XG4tXHRcdC8qIERldmljZSBpcyBnb25lLCBubyBwb2ludCBpbiByZXR1cm5pbmcgZXJyb3IgKi9cbi1cdH1cbiYjNDM7XHQvKlxuJiM0MztcdCAqIFJlbW92ZSBhbGwgcGFydGl0aW9ucywgaW5jbHVkaW5nIHBhcnRpdGlvbnMgYWRkZWQgbWFudWFsbHkgd2l0aFxuJiM0MztcdCAqIEJMS1BHLCB3aGljaCBtYXkgZXhpc3QgZXZlbiBpZiBMT19GTEFHU19QQVJUU0NBTiBpcyBub3Qgc2V0LlxuJiM0MztcdCAqXG4mIzQzO1x0ICogb3Blbl9tdXRleCBoYXMgYmVlbiBoZWxkIGFscmVhZHkgaW4gcmVsZWFzZSBwYXRoLCBzbyBkb24mIzM5O3QgYWNxdWlyZVxuJiM0MztcdCAqIGl0IGhlcmUuXG4mIzQzO1x0ICovXG4mIzQzO1x0ZXJyID0gYmRldl9kaXNrX2NoYW5nZWQobG8tXHUwMDNlbG9fZGlzaywgZmFsc2UpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRwcl93YXJuKFwmIzM0OyVzOiBwYXJ0aXRpb24gc2NhbiBvZiBsb29wJWQgZmFpbGVkIChyYz0lZClcXG5cJiMzNDssXG4mIzQzO1x0XHRcdF9fZnVuY19fLCBsby1cdTAwM2Vsb19udW1iZXIsIGVycik7XG4mIzQzO1x0LyogRGV2aWNlIGlzIGdvbmUsIG5vIHBvaW50IGluIHJldHVybmluZyBlcnJvciAqL1xuIFxuIFx0Lypcbi1cdCAqIGxvLVx1MDAzZWxvX3N0YXRlIGlzIHNldCB0byBMb191bmJvdW5kIGhlcmUgYWZ0ZXIgYWJvdmUgcGFydHNjYW4gaGFzXG4mIzQzO1x0ICogbG8tXHUwMDNlbG9fc3RhdGUgaXMgc2V0IHRvIExvX3VuYm91bmQgaGVyZSBhZnRlciByZW1vdmluZyBwYXJ0aXRpb25zIGhhc1xuIFx0ICogZmluaXNoZWQuIFRoZXJlIGNhbm5vdCBiZSBhbnlib2R5IGVsc2UgZW50ZXJpbmcgX19sb29wX2Nscl9mZCgpIGFzXG4gXHQgKiBMb19ydW5kb3duIHN0YXRlIHByb3RlY3RzIHVzIGZyb20gYWxsIHRoZSBvdGhlciBwbGFjZXMgdHJ5aW5nIHRvXG4gXHQgKiBjaGFuZ2UgdGhlICYjMzk7bG8mIzM5OyBkZXZpY2UuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDM6MjA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9MT09QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19sb29wX2Nscl9mZCYjMzQ7LAogICAgJiMzNDtsb19yZWxlYXNlJiMzNDssCiAgICAmIzM0O2xvb3BfY2xyX2ZkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0ZWFyZG93biBwYXRoIG9mIGxvb3AgZGV2aWNlcyAoYF9fbG9vcF9jbHJfZmRgKSwgbWFraW5nIHBhcnRpdGlvbiByZW1vdmFsIHVuY29uZGl0aW9uYWwgZXZlbiB3aGVuIGBMT19GTEFHU19QQVJUU0NBTmAgaXMgbm90IHNldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYmxvY2sgZGV2aWNlIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIGxvb3BiYWNrIGRldmljZSBpb2N0bHMgYW5kIGZpbGUgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjY1NjA1OGQ1ZmI5ZWVjZTllMzFhY2MyZWY5NjNjZTRhNGIyZGVlNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDE2IDAzOjIwOjAxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwppbmRleCAzMTBkZTA0NjNiZWIxNC4uMWZhZWNlZjMzMDA5MmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svbG9vcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svbG9vcC5jCkBAIC0xMTEzLDYgJiM0MzsxMTEzLDcgQEAgc3RhdGljIHZvaWQgX19sb29wX2Nscl9mZChzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvKQogCXN0cnVjdCBxdWV1ZV9saW1pdHMgbGltOwogCXN0cnVjdCBmaWxlICpmaWxwOwogCWdmcF90IGdmcCA9IGxvLSZndDtvbGRfZ2ZwX21hc2s7CiYjNDM7CWludCBlcnI7CiAKIAlzcGluX2xvY2tfaXJxKCZhbXA7bG8tJmd0O2xvX2xvY2spOwogCWZpbHAgPSBsby0mZ3Q7bG9fYmFja2luZ19maWxlOwpAQCAtMTE0NiwyNiAmIzQzOzExNDcsMjEgQEAgc3RhdGljIHZvaWQgX19sb29wX2Nscl9mZChzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvKQogCiAJZGlza19mb3JjZV9tZWRpYV9jaGFuZ2UobG8tJmd0O2xvX2Rpc2spOwogCi0JaWYgKGxvLSZndDtsb19mbGFncyAmYW1wOyBMT19GTEFHU19QQVJUU0NBTikgewotCQlpbnQgZXJyOwotCi0JCS8qCi0JCSAqIG9wZW5fbXV0ZXggaGFzIGJlZW4gaGVsZCBhbHJlYWR5IGluIHJlbGVhc2UgcGF0aCwgc28gZG9uJiMzOTt0Ci0JCSAqIGFjcXVpcmUgaXQgaWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gc3VjaCBjYXNlLgotCQkgKgotCQkgKiBJZiB0aGUgcmVyZWFkIHBhcnRpdGlvbiBpc24mIzM5O3QgZnJvbSByZWxlYXNlIHBhdGgsIGxvX3JlZmNudAotCQkgKiBtdXN0IGJlIGF0IGxlYXN0IG9uZSBhbmQgaXQgY2FuIG9ubHkgYmVjb21lIHplcm8gd2hlbiB0aGUKLQkJICogY3VycmVudCBob2xkZXIgaXMgcmVsZWFzZWQuCi0JCSAqLwotCQllcnIgPSBiZGV2X2Rpc2tfY2hhbmdlZChsby0mZ3Q7bG9fZGlzaywgZmFsc2UpOwotCQlpZiAoZXJyKQotCQkJcHJfd2FybigmIzM0OyVzOiBwYXJ0aXRpb24gc2NhbiBvZiBsb29wJWQgZmFpbGVkIChyYz0lZClcbiYjMzQ7LAotCQkJCV9fZnVuY19fLCBsby0mZ3Q7bG9fbnVtYmVyLCBlcnIpOwotCQkvKiBEZXZpY2UgaXMgZ29uZSwgbm8gcG9pbnQgaW4gcmV0dXJuaW5nIGVycm9yICovCi0JfQomIzQzOwkvKgomIzQzOwkgKiBSZW1vdmUgYWxsIHBhcnRpdGlvbnMsIGluY2x1ZGluZyBwYXJ0aXRpb25zIGFkZGVkIG1hbnVhbGx5IHdpdGgKJiM0MzsJICogQkxLUEcsIHdoaWNoIG1heSBleGlzdCBldmVuIGlmIExPX0ZMQUdTX1BBUlRTQ0FOIGlzIG5vdCBzZXQuCiYjNDM7CSAqCiYjNDM7CSAqIG9wZW5fbXV0ZXggaGFzIGJlZW4gaGVsZCBhbHJlYWR5IGluIHJlbGVhc2UgcGF0aCwgc28gZG9uJiMzOTt0IGFjcXVpcmUKJiM0MzsJICogaXQgaGVyZS4KJiM0MzsJICovCiYjNDM7CWVyciA9IGJkZXZfZGlza19jaGFuZ2VkKGxvLSZndDtsb19kaXNrLCBmYWxzZSk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlwcl93YXJuKCYjMzQ7JXM6IHBhcnRpdGlvbiBzY2FuIG9mIGxvb3AlZCBmYWlsZWQgKHJjPSVkKVxuJiMzNDssCiYjNDM7CQkJX19mdW5jX18sIGxvLSZndDtsb19udW1iZXIsIGVycik7CiYjNDM7CS8qIERldmljZSBpcyBnb25lLCBubyBwb2ludCBpbiByZXR1cm5pbmcgZXJyb3IgKi8KIAogCS8qCi0JICogbG8tJmd0O2xvX3N0YXRlIGlzIHNldCB0byBMb191bmJvdW5kIGhlcmUgYWZ0ZXIgYWJvdmUgcGFydHNjYW4gaGFzCiYjNDM7CSAqIGxvLSZndDtsb19zdGF0ZSBpcyBzZXQgdG8gTG9fdW5ib3VuZCBoZXJlIGFmdGVyIHJlbW92aW5nIHBhcnRpdGlvbnMgaGFzCiAJICogZmluaXNoZWQuIFRoZXJlIGNhbm5vdCBiZSBhbnlib2R5IGVsc2UgZW50ZXJpbmcgX19sb29wX2Nscl9mZCgpIGFzCiAJICogTG9fcnVuZG93biBzdGF0ZSBwcm90ZWN0cyB1cyBmcm9tIGFsbCB0aGUgb3RoZXIgcGxhY2VzIHRyeWluZyB0bwogCSAqIGNoYW5nZSB0aGUgJiMzOTtsbyYjMzk7IGRldmljZS4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDM6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMxMgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBMb29wIERldmljZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvYmxvY2svbG9vcC5jYC4gSXQmIzM5O3MgZm9jdXNlZCBvbiBtb2RpZnlpbmcgdGhlIGBfX2xvb3BfY2xyX2ZkYCBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IHJlbW92aW5nIGEgY29uZGl0aW9uYWwgY2hlY2suIEJlZm9yZSwgd2UgaGFkIHRoaXMgY2hlY2s6IGBpZiAobG8tJmd0O2xvX2ZsYWdzICZhbXA7IExPX0ZMQUdTX1BBUlRTQ0FOKWAsIGFuZCBpZiBpdCB3YXMgdHJ1ZSwgaXQgd291bGQgY2FsbCBgYmRldl9kaXNrX2NoYW5nZWQobG8tJmd0O2xvX2Rpc2ssIGZhbHNlKWAuIE5vdywgdGhlIHBhdGNoICpyZW1vdmVzKiB0aGF0IGNoZWNrLCBtZWFuaW5nIGBiZGV2X2Rpc2tfY2hhbmdlZGAgd2lsbCBiZSBjYWxsZWQgKnVuY29uZGl0aW9uYWxseSogZHVyaW5nIGEgbG9vcCBkZXZpY2UgY2xlYW51cC4KCk15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgZnVuY3Rpb25hbGx5IGEgc3RyYWlnaHRmb3J3YXJkIGNoYW5nZS4gVGhlIGV4ZWN1dGlvbiBmbG93IGlzIGFsdGVyZWQ7IHRoZSBjb2RlIGJsb2NrIHVuZGVyIHRoYXQgYGlmYCBzdGF0ZW1lbnQgaXMgbm8gbG9uZ2VyIGdhdGVkLiBJdCYjMzk7cyBnb2luZyB0byBhZmZlY3QgdGhlIHRlYXJkb3duIHByb2Nlc3MgZm9yIGxvb3AgZGV2aWNlcy4gU28sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYGJkZXZfZGlza19jaGFuZ2VkYCBkb2VzIGluIHRoaXMgY29udGV4dCBhbmQgd2h5IHRoaXMgY29uZGl0aW9uYWwgd2FzIG9yaWdpbmFsbHkgdGhlcmUuIEkgaW1tZWRpYXRlbHkgbmVlZCB0byBjb25zaWRlciBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4KCk5leHQgc3RlcDogSSYjMzk7bSBnb2luZyB0byBqdW1wIGludG8gdGhlIGNvZGUgaXRzZWxmLCBgZHJpdmVycy9ibG9jay9sb29wLmNgIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGBfX2xvb3BfY2xyX2ZkYCBmdW5jdGlvbiBpdHNlbGYsIGFsb25nIHdpdGggcmVsZXZhbnQgdXNlcyBvZiBgYmRldl9kaXNrX2NoYW5nZWRgLiBJJiMzOTtsbCBhbHNvIHdhbnQgdG8gZmluZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBsb29wIGRldmljZXMsIHByb2JhYmx5IGluIGBkcml2ZXJzL2Jsb2NrL0tjb25maWdgIG9yIHNpbWlsYXIgZmlsZXMsIHRvIHNlZSB3aGF0IHNldHRpbmdzIG1pZ2h0IGJlIGltcGFjdGVkIGJ5IHRoaXMgY2hhbmdlLiBVbmRlcnN0YW5kaW5nIHRoZSBjb25maWd1cmF0aW9uIHdpbGwgY2xhcmlmeSB0aGUgZW52aXJvbm1lbnQgdGhpcyBjaGFuZ2Ugb3BlcmF0ZXMgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDM6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJMS19ERVZfTE9PUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWc9MTQwPWNvbmZpZyBCTEtfREVWX0NPV19DT01NT05cbi0tXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTQzLVxuZHJpdmVycy9ibG9jay9LY29uZmlnOjE0NDpjb25maWcgQkxLX0RFVl9MT09QXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTQ1LVx0dHJpc3RhdGUgXCYjMzQ7TG9vcGJhY2sgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTc4LVxuZHJpdmVycy9ibG9jay9LY29uZmlnOjE3OTpjb25maWcgQkxLX0RFVl9MT09QX01JTl9DT1VOVFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE4MC1cdGludCBcJiMzNDtOdW1iZXIgb2YgbG9vcCBkZXZpY2VzIHRvIHByZS1jcmVhdGUgYXQgaW5pdCB0aW1lXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDM6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk5NgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipMb29wIERldmljZSBDb25maWd1cmF0aW9uIGFuZCBGdW5jdGlvbiBBbmFseXNpcyoqCgpSaWdodCwgc28gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGxvb3AgZGV2aWNlIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseSBgQkxLX0RFVl9MT09QYC4gVGhhdCYjMzk7cyBhIGZhbWlsaWFyIGFyZWEuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGBfX2xvb3BfY2xyX2ZkYCBmdW5jdGlvbi4gSG9sZCBvbiwgaXQmIzM5O3MgZGVjbGFyZWQgc3RhdGljLiBUaGF0JiMzOTtzIGEgYml0IG9mIGEgd3JpbmtsZSDigJMgdXN1YWxseSBtZWFucyBpdCYjMzk7cyBzY29wZWQgd2l0aGluIGEgc3BlY2lmaWMgdHJhbnNsYXRpb24gdW5pdC4gT2theSwgbm8gcHJvYmxlbSwgdGhpcyBtZWFucyB0aGF0IHRoZSBjYWxsIHRyZWUgdG8gdHJhY2UgaXMgbm90IGFsbCBlbmNvbXBhc3NpbmcgdG8gdGhlIHdob2xlIGtlcm5lbCBidWlsZC4gSW5zdGVhZCwgYSBzcGVjaWZpYyBtb2R1bGUgZmlsZSBtdXN0IGJlIGluc3BlY3RlZCB0byBmaW5kIHRoZSBjYWxsZXJzLiBUaW1lIHRvIHNlZSB3aGljaCBwYXJ0IG9mIHRoZSBjb2RlIGJhc2UgY2FsbHMgdGhhdCBmdW5jdGlvbiBhbmQgd2hhdCBjb250ZXh0IGl0IGlzIGJlaW5nIGNhbGxlZCBmcm9tLiBJJiMzOTtsbCBuZWVkIHRvIGlkZW50aWZ5IHRoZSBjYWxsIHNpdGVzIHRvIGZ1bGx5IHVuZGVyc3RhbmQgaXRzIHJvbGUgYW5kIGltcGFjdC4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fbG9vcF9jbHJfZmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL2xvb3AuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL2xvb3AuYz05NT1zdGF0aWMgREVGSU5FX01VVEVYKGxvb3BfdmFsaWRhdGVfbXV0ZXgpO1xuLS1cbmRyaXZlcnMvYmxvY2svbG9vcC5jLTEwNi0gKiBpc19sb29wX2RldmljZSgpIGlzIHRydWUsIHdlIG5lZWQgYSBnbG9iYWwgbG9jayBmb3Igc2VyaWFsaXppbmcgY29uY3VycmVudFxuZHJpdmVycy9ibG9jay9sb29wLmM6MTA3OiAqIGxvb3BfY29uZmlndXJlKCkvbG9vcF9jaGFuZ2VfZmQoKS9fX2xvb3BfY2xyX2ZkKCkgY2FsbHMuXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMDgtICovXG4tLVxuZHJpdmVycy9ibG9jay9sb29wLmM9OTc3PXN0YXRpYyBpbnQgbG9vcF9jb25maWd1cmUoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgYmxrX21vZGVfdCBtb2RlLFxuLS1cbmRyaXZlcnMvYmxvY2svbG9vcC5jLTExMTAtXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxMTExOnN0YXRpYyB2b2lkIF9fbG9vcF9jbHJfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbylcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTExMTIte1xuLS1cbmRyaXZlcnMvYmxvY2svbG9vcC5jLTExNjQtXHQgKiBsby1cdTAwM2Vsb19zdGF0ZSBpcyBzZXQgdG8gTG9fdW5ib3VuZCBoZXJlIGFmdGVyIHJlbW92aW5nIHBhcnRpdGlvbnMgaGFzXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxMTY1Olx0ICogZmluaXNoZWQuIFRoZXJlIGNhbm5vdCBiZSBhbnlib2R5IGVsc2UgZW50ZXJpbmcgX19sb29wX2Nscl9mZCgpIGFzXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMTY2LVx0ICogTG9fcnVuZG93biBzdGF0ZSBwcm90ZWN0cyB1cyBmcm9tIGFsbCB0aGUgb3RoZXIgcGxhY2VzIHRyeWluZyB0b1xuLS1cbmRyaXZlcnMvYmxvY2svbG9vcC5jPTE3MjI9c3RhdGljIHZvaWQgbG9fcmVsZWFzZShzdHJ1Y3QgZ2VuZGlzayAqZGlzaylcbi0tXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xNzQyLVx0aWYgKG5lZWRfY2xlYXIpXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxNzQzOlx0XHRfX2xvb3BfY2xyX2ZkKGxvKTtcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTE3NDQtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAzOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NjEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBfX2xvb3BfY2xyX2ZkYCBVc2FnZSoqCgpPa2F5LCBzbyBgX19sb29wX2Nscl9mZGAgaXMgY2FsbGVkIGJ5IGBsb19yZWxlYXNlYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkmIzM5O3ZlIHNlZW4gdGhhdCByZWxhdGlvbnNoaXAgYmVmb3JlLiBCdXQgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBjYWxsIHNpdGVzLiBBIGxlYWsgb3IgYSBkb3VibGUtZnJlZSBjb3VsZCBiZSBsdXJraW5nIGlmIGl0JiMzOTtzIHVzZWQgZWxzZXdoZXJlLCBhbmQgSeKAmWQgY2F0Y2ggdGhhdCBmYXN0LiBJJiMzOTtsbCBuZWVkIHRvIGRpZyB0aHJvdWdoIHRoZSBjb2RlYmFzZSBhbmQgY29uZmlybSB0aGUgY2FsbGVyIGxpc3QgYW5kIGRvdWJsZSBjaGVjayBmb3IgYW55IGNhbGxzIG91dHNpZGUgYGxvX3JlbGVhc2VgLi4uIGJlc3QgdG8gYmUgdGhvcm91Z2ggaGVyZS4gQW55IG90aGVyIHBsYWNlcyB0aGlzIGlzIGJlaW5nIHVzZWQgY291bGQgYmUgYSBwb3RlbnRpYWwgcG9pbnQgb2YgaW50ZXJlc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDM6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19sb29wX2Nscl9mZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbG9vcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbG9vcC5jPTk1PXN0YXRpYyBERUZJTkVfTVVURVgobG9vcF92YWxpZGF0ZV9tdXRleCk7XG4tLVxuZHJpdmVycy9ibG9jay9sb29wLmMtMTA2LSAqIGlzX2xvb3BfZGV2aWNlKCkgaXMgdHJ1ZSwgd2UgbmVlZCBhIGdsb2JhbCBsb2NrIGZvciBzZXJpYWxpemluZyBjb25jdXJyZW50XG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxMDc6ICogbG9vcF9jb25maWd1cmUoKS9sb29wX2NoYW5nZV9mZCgpL19fbG9vcF9jbHJfZmQoKSBjYWxscy5cbmRyaXZlcnMvYmxvY2svbG9vcC5jLTEwOC0gKi9cbi0tXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYz05Nzc9c3RhdGljIGludCBsb29wX2NvbmZpZ3VyZShzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvLCBibGtfbW9kZV90IG1vZGUsXG4tLVxuZHJpdmVycy9ibG9jay9sb29wLmMtMTExMC1cbmRyaXZlcnMvYmxvY2svbG9vcC5jOjExMTE6c3RhdGljIHZvaWQgX19sb29wX2Nscl9mZChzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvKVxuZHJpdmVycy9ibG9jay9sb29wLmMtMTExMi17XG4tLVxuZHJpdmVycy9ibG9jay9sb29wLmMtMTE2NC1cdCAqIGxvLVx1MDAzZWxvX3N0YXRlIGlzIHNldCB0byBMb191bmJvdW5kIGhlcmUgYWZ0ZXIgcmVtb3ZpbmcgcGFydGl0aW9ucyBoYXNcbmRyaXZlcnMvYmxvY2svbG9vcC5jOjExNjU6XHQgKiBmaW5pc2hlZC4gVGhlcmUgY2Fubm90IGJlIGFueWJvZHkgZWxzZSBlbnRlcmluZyBfX2xvb3BfY2xyX2ZkKCkgYXNcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTExNjYtXHQgKiBMb19ydW5kb3duIHN0YXRlIHByb3RlY3RzIHVzIGZyb20gYWxsIHRoZSBvdGhlciBwbGFjZXMgdHJ5aW5nIHRvXG4tLVxuZHJpdmVycy9ibG9jay9sb29wLmM9MTcyMj1zdGF0aWMgdm9pZCBsb19yZWxlYXNlKHN0cnVjdCBnZW5kaXNrICpkaXNrKVxuLS1cbmRyaXZlcnMvYmxvY2svbG9vcC5jLTE3NDItXHRpZiAobmVlZF9jbGVhcilcbmRyaXZlcnMvYmxvY2svbG9vcC5jOjE3NDM6XHRcdF9fbG9vcF9jbHJfZmQobG8pO1xuZHJpdmVycy9ibG9jay9sb29wLmMtMTc0NC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDM6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI3MAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIERlZXBlciBpbnRvIHRoZSBBYnN0cmFjdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBpZGVudGlmaWVkIGBsb29wX2Nscl9mZGAgYXMgc29tZXRoaW5nIHJlbGF0ZWQgdG8gYF9fbG9vcF9jbHJfZmRgLiBNeSBpbnR1aXRpb24sIGJhc2VkIG9uIHRoZSBuYW1pbmcgY29udmVudGlvbiwgdGVsbHMgbWUgdGhleSYjMzk7cmUgbGlrZWx5IGludGVyY29ubmVjdGVkLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzIGFzc3VtcHRpb24uIExldCYjMzk7cyBzdGFydCBieSBxdWlja2x5IHZlcmlmeWluZyBteSB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgYGxvb3BfY2xyX2ZkYCBpcyBkb2luZyBpbiBtb3JlIGRldGFpbC4gSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIGl0cyBpbXBsZW1lbnRhdGlvbiB0byBzZWUgaWYgaXQmIzM5O3MgYWN0aW5nIGFzIGEgaGlnaGVyLWxldmVsIGFic3RyYWN0aW9uIHRoYXQgY2FsbHMgYF9fbG9vcF9jbHJfZmRgIHVuZGVyIHRoZSBob29kLiBJdCYjMzk7cyBhIGNvbW1vbiBwYXR0ZXJuLCBhbmQgYSBxdWljayBjaGVjayBvZiBgbG9vcF9jbHJfZmRgIHdpbGwgZ2l2ZSBtZSB0aGUgY2xhcml0eSBJIG5lZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xvb3BfY2xyX2ZkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9sb29wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9sb29wLmM9OTU9c3RhdGljIERFRklORV9NVVRFWChsb29wX3ZhbGlkYXRlX211dGV4KTtcbi0tXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMDYtICogaXNfbG9vcF9kZXZpY2UoKSBpcyB0cnVlLCB3ZSBuZWVkIGEgZ2xvYmFsIGxvY2sgZm9yIHNlcmlhbGl6aW5nIGNvbmN1cnJlbnRcbmRyaXZlcnMvYmxvY2svbG9vcC5jOjEwNzogKiBsb29wX2NvbmZpZ3VyZSgpL2xvb3BfY2hhbmdlX2ZkKCkvX19sb29wX2Nscl9mZCgpIGNhbGxzLlxuZHJpdmVycy9ibG9jay9sb29wLmMtMTA4LSAqL1xuLS1cbmRyaXZlcnMvYmxvY2svbG9vcC5jPTk3Nz1zdGF0aWMgaW50IGxvb3BfY29uZmlndXJlKHN0cnVjdCBsb29wX2RldmljZSAqbG8sIGJsa19tb2RlX3QgbW9kZSxcbi0tXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMTEwLVxuZHJpdmVycy9ibG9jay9sb29wLmM6MTExMTpzdGF0aWMgdm9pZCBfX2xvb3BfY2xyX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8pXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMTEyLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMTY0LVx0ICogbG8tXHUwMDNlbG9fc3RhdGUgaXMgc2V0IHRvIExvX3VuYm91bmQgaGVyZSBhZnRlciByZW1vdmluZyBwYXJ0aXRpb25zIGhhc1xuZHJpdmVycy9ibG9jay9sb29wLmM6MTE2NTpcdCAqIGZpbmlzaGVkLiBUaGVyZSBjYW5ub3QgYmUgYW55Ym9keSBlbHNlIGVudGVyaW5nIF9fbG9vcF9jbHJfZmQoKSBhc1xuZHJpdmVycy9ibG9jay9sb29wLmMtMTE2Ni1cdCAqIExvX3J1bmRvd24gc3RhdGUgcHJvdGVjdHMgdXMgZnJvbSBhbGwgdGhlIG90aGVyIHBsYWNlcyB0cnlpbmcgdG9cbi0tXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMTgzLVxuZHJpdmVycy9ibG9jay9sb29wLmM6MTE4NDpzdGF0aWMgaW50IGxvb3BfY2xyX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8pXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMTg1LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMTg5LVx0ICogU2luY2UgbG9faW9jdGwoKSBpcyBjYWxsZWQgd2l0aG91dCBsb2NrcyBoZWxkLCBpdCBpcyBwb3NzaWJsZSB0aGF0XG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxMTkwOlx0ICogbG9vcF9jb25maWd1cmUoKS9sb29wX2NoYW5nZV9mZCgpIGFuZCBsb29wX2Nscl9mZCgpIHJ1biBpbiBwYXJhbGxlbC5cbmRyaXZlcnMvYmxvY2svbG9vcC5jLTExOTEtXHQgKlxuLS1cbmRyaXZlcnMvYmxvY2svbG9vcC5jPTE1MDc9c3RhdGljIGludCBsb19pb2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXG4tLVxuZHJpdmVycy9ibG9jay9sb29wLmMtMTUzOC1cdGNhc2UgTE9PUF9DTFJfRkQ6XG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxNTM5Olx0XHRyZXR1cm4gbG9vcF9jbHJfZmQobG8pO1xuZHJpdmVycy9ibG9jay9sb29wLmMtMTU0MC1cdGNhc2UgTE9PUF9TRVRfU1RBVFVTOlxuLS1cbmRyaXZlcnMvYmxvY2svbG9vcC5jPTE3MjI9c3RhdGljIHZvaWQgbG9fcmVsZWFzZShzdHJ1Y3QgZ2VuZGlzayAqZGlzaylcbi0tXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xNzQyLVx0aWYgKG5lZWRfY2xlYXIpXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxNzQzOlx0XHRfX2xvb3BfY2xyX2ZkKGxvKTtcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTE3NDQtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMzoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTQ4CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBGdW5jdGlvbiBDYWxsIENoYWluKioKClJpZ2h0LCBzbyBgbG9vcF9jbHJfZmRg4oCmIHRoYXQgbmFtZSBzb3VuZHMgZmFtaWxpYXIuIEhtbSwgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBjYWxsaW5nIGBfX2xvb3BfY2xyX2ZkYC4gT2theSwgbGV0JiMzOTtzIHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBkZWZpbml0aW9uIG9mIGBsb29wX2Nscl9mZGAuIEkmIzM5O20gZ3Vlc3NpbmcgdGhlcmUmIzM5O3MgYSBnb29kIHJlYXNvbiBmb3IgdGhpcyBraW5kIG9mIGFic3RyYWN0aW9uOyBwZXJoYXBzIHNvbWUgcGxhdGZvcm0tc3BlY2lmaWMgZGV0YWlscyBvciBwb3RlbnRpYWxseSBzb21lIGludGVybmFsIGJvb2trZWVwaW5nIGhhcHBlbmluZyBpbiBgX19sb29wX2Nscl9mZGA/IEkmIzM5O20gY3VyaW91cyB3aGF0JiMzOTtzIGhhcHBlbmluZy4gUHJvYmFibHkgdGhlcmUgYXJlIHNvbWUgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbiBvciBzb21lIHNwZWNpZmljIGVkZ2UgY2FzZSB0aGUgaW5uZXIgbWV0aG9kIGlzIGhhbmRsaW5nLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgaXMganVzdCBhIHNpbXBsZSB3cmFwcGVyIG9yIGlmIHRoZXJlJiMzOTtzIHNvbWV0aGluZyBtb3JlIHRvIGl0LiBJIHdhbnQgdG8gY2hlY2sgaG93IHRoZSBhcmd1bWVudHMgYXJlIGJlaW5nIHBhc3NlZCwgaWYgdGhlcmUmIzM5O3MgYW55IHByZS1wcm9jZXNzaW5nLCBvciBhbnkgc3VidGxlIHNpZGUgZWZmZWN0cyBJIHNob3VsZCBiZSBhd2FyZSBvZi4gTGV0JiMzOTtzIGdldCB0byB0aGUgaW1wbGVtZW50YXRpb24gYW5kIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGdvaW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMzoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbG9vcC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTE4NCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMTg0Olx0c3RhdGljIGludCBsb29wX2Nscl9mZChzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvKVxuMTE4NTpcdHtcbjExODY6XHRcdGludCBlcnI7XG4xMTg3Olx0XG4xMTg4Olx0XHQvKlxuMTE4OTpcdFx0ICogU2luY2UgbG9faW9jdGwoKSBpcyBjYWxsZWQgd2l0aG91dCBsb2NrcyBoZWxkLCBpdCBpcyBwb3NzaWJsZSB0aGF0XG4xMTkwOlx0XHQgKiBsb29wX2NvbmZpZ3VyZSgpL2xvb3BfY2hhbmdlX2ZkKCkgYW5kIGxvb3BfY2xyX2ZkKCkgcnVuIGluIHBhcmFsbGVsLlxuMTE5MTpcdFx0ICpcbjExOTI6XHRcdCAqIFRoZXJlZm9yZSwgdXNlIGdsb2JhbCBsb2NrIHdoZW4gc2V0dGluZyBMb19ydW5kb3duIHN0YXRlIGluIG9yZGVyIHRvXG4xMTkzOlx0XHQgKiBtYWtlIHN1cmUgdGhhdCBsb29wX3ZhbGlkYXRlX2ZpbGUoKSB3aWxsIGZhaWwgaWYgdGhlIFwmIzM0O3N0cnVjdCBmaWxlXCYjMzQ7XG4xMTk0Olx0XHQgKiB3aGljaCBsb29wX2NvbmZpZ3VyZSgpL2xvb3BfY2hhbmdlX2ZkKCkgZm91bmQgdmlhIGZnZXQoKSB3YXMgdGhpc1xuMTE5NTpcdFx0ICogbG9vcCBkZXZpY2UuXG4xMTk2Olx0XHQgKi9cbjExOTc6XHRcdGVyciA9IGxvb3BfZ2xvYmFsX2xvY2tfa2lsbGFibGUobG8sIHRydWUpO1xuMTE5ODpcdFx0aWYgKGVycilcbjExOTk6XHRcdFx0cmV0dXJuIGVycjtcbjEyMDA6XHRcdGlmIChsby1cdTAwM2Vsb19zdGF0ZSAhPSBMb19ib3VuZCkge1xuMTIwMTpcdFx0XHRsb29wX2dsb2JhbF91bmxvY2sobG8sIHRydWUpO1xuMTIwMjpcdFx0XHRyZXR1cm4gLUVOWElPO1xuMTIwMzpcdFx0fVxuMTIwNDpcdFx0LypcbjEyMDU6XHRcdCAqIE1hcmsgdGhlIGRldmljZSBmb3IgcmVtb3ZpbmcgdGhlIGJhY2tpbmcgZGV2aWNlIG9uIGxhc3QgY2xvc2UuXG4xMjA2Olx0XHQgKiBJZiB3ZSBhcmUgdGhlIG9ubHkgb3BlbmVyLCBhbHNvIHN3aXRjaCB0aGUgc3RhdGUgdG8gcm91bmRvd24gaGVyZSB0b1xuMTIwNzpcdFx0ICogcHJldmVudCBuZXcgb3BlbmVycyBmcm9tIGNvbWluZyBpbi5cbjEyMDg6XHRcdCAqL1xuMTIwOTpcdFxuMTIxMDpcdFx0bG8tXHUwMDNlbG9fZmxhZ3MgfD0gTE9fRkxBR1NfQVVUT0NMRUFSO1xuMTIxMTpcdFx0aWYgKGRpc2tfb3BlbmVycyhsby1cdTAwM2Vsb19kaXNrKSA9PSAxKVxuMTIxMjpcdFx0XHRXUklURV9PTkNFKGxvLVx1MDAzZWxvX3N0YXRlLCBMb19ydW5kb3duKTtcbjEyMTM6XHRcdGxvb3BfZ2xvYmFsX3VubG9jayhsbywgdHJ1ZSk7XG4xMjE0Olx0XG4xMjE1Olx0XHRyZXR1cm4gMDtcbjEyMTY6XHR9XG4xMjE3Olx0XG4xMjE4Olx0c3RhdGljIGludFxuMTIxOTpcdGxvb3Bfc2V0X3N0YXR1cyhzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvLCBjb25zdCBzdHJ1Y3QgbG9vcF9pbmZvNjQgKmluZm8pXG4xMjIwOlx0e1xuMTIyMTpcdFx0aW50IGVycjtcbjEyMjI6XHRcdGJvb2wgcGFydHNjYW4gPSBmYWxzZTtcbjEyMjM6XHRcdGJvb2wgc2l6ZV9jaGFuZ2VkID0gZmFsc2U7XG4xMjI0Olx0XHR1bnNpZ25lZCBpbnQgbWVtZmxhZ3M7XG4xMjI1Olx0XG4xMjI2Olx0XHRlcnIgPSBtdXRleF9sb2NrX2tpbGxhYmxlKFx1MDAyNmxvLVx1MDAzZWxvX211dGV4KTtcbjEyMjc6XHRcdGlmIChlcnIpXG4xMjI4Olx0XHRcdHJldHVybiBlcnI7XG4xMjI5Olx0XHRpZiAobG8tXHUwMDNlbG9fc3RhdGUgIT0gTG9fYm91bmQpIHtcbjEyMzA6XHRcdFx0ZXJyID0gLUVOWElPO1xuMTIzMTpcdFx0XHRnb3RvIG91dF91bmxvY2s7XG4xMjMyOlx0XHR9XG4xMjMzOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAzOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxNTcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEF1dG9jbGVhciBMb29wIGFuZCBEaXNrIFJlbGVhc2UqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgbG9vcF9jbHJfZmRgIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3Mgbm90IGFzIHN0cmFpZ2h0Zm9yd2FyZCBhcyBJIGluaXRpYWxseSB0aG91Z2h0LiBJdCBkb2VzbiYjMzk7dCBhY3R1YWxseSAqZGlyZWN0bHkqIGNhbGwgYF9fbG9vcF9jbHJfZmRgLiBJbnN0ZWFkLCBpdCBzZXRzIHRoZSBgTE9fRkxBR1NfQVVUT0NMRUFSYCBmbGFnLiBIbW0sIGFuZCBpdCB0cmFuc2l0aW9ucyB0aGUgbG9vcCYjMzk7cyBzdGF0ZSB0byBgTG9fcnVuZG93bmAuIEludGVyZXN0aW5nLiBUaGF0IG1lYW5zIHRoZSByZWFsIHdvcmsgaXMgZGVmZXJyZWQuCgpTbywgdGhlIGNsZWFudXAgaXMgYWN0dWFsbHkgdHJpZ2dlcmVkIGJ5IGBsb19yZWxlYXNlYCwgd2hpY2ggaXMgdGhlIG9uZSB0aGF0ICpldmVudHVhbGx5KiBjYWxscyBgX19sb29wX2Nscl9mZGAsIGFuZCBvbmx5IHdoZW4gYGRpc2tfb3BlbmVyc2AgZGVjcmVtZW50cyB0byB6ZXJvLiBUaGF0IG1ha2VzIHNlbnNlIGZyb20gYSByZXNvdXJjZSBtYW5hZ2VtZW50IHBlcnNwZWN0aXZlIC0gd2Ugb25seSB3YW50IHRvIGNsZWFyIHRoZSBmaWxlIGRlc2NyaXB0b3Igd2hlbiB0aGUgbG9vcCBkZXZpY2UgaXMgbm8gbG9uZ2VyIGFjdGl2ZWx5IGJlaW5nIHVzZWQgYnkgYW55dGhpbmcuIAoKQWxyaWdodCwgbGV0JiMzOTtzIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGF0IGBsb19yZWxlYXNlYCBmdW5jdGlvbiBub3cgYW5kIGNvbmZpcm0gdGhpcyBmbG93LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcHJlY2lzZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoaXMgYF9fbG9vcF9jbHJfZmRgIGNhbGwgaXMgZmluYWxseSBleGVjdXRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDM6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL2xvb3AuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3MjIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTcyMjpcdHN0YXRpYyB2b2lkIGxvX3JlbGVhc2Uoc3RydWN0IGdlbmRpc2sgKmRpc2spXG4xNzIzOlx0e1xuMTcyNDpcdFx0c3RydWN0IGxvb3BfZGV2aWNlICpsbyA9IGRpc2stXHUwMDNlcHJpdmF0ZV9kYXRhO1xuMTcyNTpcdFx0Ym9vbCBuZWVkX2NsZWFyID0gZmFsc2U7XG4xNzI2Olx0XG4xNzI3Olx0XHRpZiAoZGlza19vcGVuZXJzKGRpc2spIFx1MDAzZSAwKVxuMTcyODpcdFx0XHRyZXR1cm47XG4xNzI5Olx0XHQvKlxuMTczMDpcdFx0ICogQ2xlYXIgdGhlIGJhY2tpbmcgZGV2aWNlIGluZm9ybWF0aW9uIGlmIHRoaXMgaXMgdGhlIGxhc3QgY2xvc2Ugb2ZcbjE3MzE6XHRcdCAqIGEgZGV2aWNlIHRoYXQmIzM5O3MgYmVlbiBtYXJrZWQgZm9yIGF1dG8gY2xlYXIsIG9yIG9uIHdoaWNoIExPT1BfQ0xSX0ZEXG4xNzMyOlx0XHQgKiBoYXMgYmVlbiBjYWxsZWQuXG4xNzMzOlx0XHQgKi9cbjE3MzQ6XHRcbjE3MzU6XHRcdG11dGV4X2xvY2soXHUwMDI2bG8tXHUwMDNlbG9fbXV0ZXgpO1xuMTczNjpcdFx0aWYgKGxvLVx1MDAzZWxvX3N0YXRlID09IExvX2JvdW5kIFx1MDAyNlx1MDAyNiAobG8tXHUwMDNlbG9fZmxhZ3MgXHUwMDI2IExPX0ZMQUdTX0FVVE9DTEVBUikpXG4xNzM3Olx0XHRcdFdSSVRFX09OQ0UobG8tXHUwMDNlbG9fc3RhdGUsIExvX3J1bmRvd24pO1xuMTczODpcdFxuMTczOTpcdFx0bmVlZF9jbGVhciA9IChsby1cdTAwM2Vsb19zdGF0ZSA9PSBMb19ydW5kb3duKTtcbjE3NDA6XHRcdG11dGV4X3VubG9jayhcdTAwMjZsby1cdTAwM2Vsb19tdXRleCk7XG4xNzQxOlx0XG4xNzQyOlx0XHRpZiAobmVlZF9jbGVhcilcbjE3NDM6XHRcdFx0X19sb29wX2Nscl9mZChsbyk7XG4xNzQ0Olx0fVxuMTc0NTpcdFxuMTc0NjpcdHN0YXRpYyB2b2lkIGxvX2ZyZWVfZGlzayhzdHJ1Y3QgZ2VuZGlzayAqZGlzaylcbjE3NDc6XHR7XG4xNzQ4Olx0XHRzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvID0gZGlzay1cdTAwM2Vwcml2YXRlX2RhdGE7XG4xNzQ5Olx0XG4xNzUwOlx0XHRpZiAobG8tXHUwMDNld29ya3F1ZXVlKVxuMTc1MTpcdFx0XHRkZXN0cm95X3dvcmtxdWV1ZShsby1cdTAwM2V3b3JrcXVldWUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMzoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTU0CgkJCQkJCQlvdXRwdXQ6IDEyMgoJCQkJCQkJdGhvdWdodHM6IDM5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBMb29wIERldmljZSBUZWFyZG93biBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHJpZ2h0IG9mZiB0aGUgYmF0LCBpdCYjMzk7cyBjbGVhciBgX19sb29wX2Nscl9mZGAgaXMgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uIGhlcmUg4oCTIGl0JiMzOTtzIHRoZSBvbmUgcmVzcG9uc2libGUgZm9yIGNsZWFyaW5nIHRoZSBsb29wIGRldmljZS4gVGhlIHBhdGNoIGZvcmNlcyBhbiB1bmNvbmRpdGlvbmFsIGNhbGwgdG8gYGJkZXZfZGlza19jaGFuZ2VkKGxvLSZndDtsb19kaXNrLCBmYWxzZSlgLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgaW1wYWN0cyBwYXJ0aXRpb24gc2Nhbm5pbmcgYW5kIHRlYXJkb3duLCBwYXJ0aWN1bGFybHkgb24gbG9vcCBkZXZpY2VzLiBNeSBndXQgc2F5cyB0aGlzIGlzIHdvcnRoIGEgZGVlcGVyIGxvb2sgd2l0aCBmdXp6aW5nLgoKTXkgcHJpbWFyeSBmb2N1cyBmb3IgZnV6emluZyB3aWxsIGJlIG9uIGBfX2xvb3BfY2xyX2ZkYCwgYGxvX3JlbGVhc2VgLCBhbmQgcG9zc2libHkgYGxvb3BfY2xyX2ZkYC4gRnJvbSBhIGNvbmZpZyBwZXJzcGVjdGl2ZSwgYEJMS19ERVZfTE9PUGAgaXMgdGhlIG9ubHkgb25lIEkgbmVlZCB0byBjb25zaWRlcjsgSSBkb24mIzM5O3Qgc2VlIGFueSBkZXBlbmRlbmNpZXMgdGhhdCB3b3VsZCByZXF1aXJlIGFkZGl0aW9uYWwgY29uZmlncy4KClRoZSByZWFzb25pbmcgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCBhbHRlcnMgdGhlIGxvb3AgZGV2aWNlIHRlYXJkb3duIHByb2Nlc3MsIHNwZWNpZmljYWxseSB3aXRoaW4gYF9fbG9vcF9jbHJfZmRgLiBCeSBtYWtpbmcgcGFydGl0aW9uIHJlbW92YWwgdW5jb25kaXRpb25hbCwgaXQgYnlwYXNzZXMgdGhlIHByZXZpb3VzIGNoZWNrcyByZWxhdGVkIHRvIGBMT19GTEFHU19QQVJUU0NBTmAuIFRoaXMgYWZmZWN0cyBjb3JlIGJsb2NrIGRldmljZSBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBjb21tb24gbG9vcGJhY2sgZGV2aWNlIGlvY3RscyBhbmQgZmlsZSBvcGVyYXRpb25zLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGNoYW5nZSBpbiB0aGUgdGVhcmRvd24gcGF0aC4KCkxldCBtZSBkb3VibGUtY2hlY2s6IHllcCwgYGJkZXZfZGlza19jaGFuZ2VkYCBpcyB0aGUgY29ycmVjdCBmdW5jdGlvbiBuYW1lIGFzIGl0IGlzIGluIHRoZSBwYXRjaC4gQSBxdWljayBzZWFyY2ggb2YgdGhlIGNvZGUgY29uZmlybXMgYF9fbG9vcF9jbHJfZmRgIGlzIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBgTE9PUF9DTFJfRkRgIGlvY3RsIG9yLCBhcyBhIG1vcmUgc3VidGxlIHRyaWdnZXIsIHNpbXBseSBjbG9zaW5nIHRoZSBsYXN0IGZpbGUgZGVzY3JpcHRvciBhc3NvY2lhdGVkIHdpdGggYW4gYXV0by1jbGVhcmluZyBsb29wIGRldmljZS4gVGhpcyBtZWFucyBpdCYjMzk7cyBkZWZpbml0ZWx5IGFjY2Vzc2libGUsIGVzcGVjaWFsbHkgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgaXQgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy4KCkluIHN1bW1hcnk6IEkmIzM5O20gbWFya2luZyB0aGlzIGFzICYjMzQ7V29ydGhGdXp6aW5nOiB0cnVlJiMzNDssIHdpdGggJiMzNDtGb2N1c1N5bWJvbHM6IGBfX2xvb3BfY2xyX2ZkYCwgYGxvX3JlbGVhc2VgLCBgbG9vcF9jbHJfZmRgJiMzNDssIGFuZCAmIzM0O0VuYWJsZUNvbmZpZ3M6IGBCTEtfREVWX0xPT1BgJiMzNDsuIFRoZSAmIzM0O1JlYXNvbmluZyYjMzQ7IGlzIHRoYXQgdGhlIHBhdGNoIGZvcmNlcyB1bmNvbmRpdGlvbmFsIHBhcnRpdGlvbiByZW1vdmFsIGR1cmluZyBsb29wIGRldmljZSB0ZWFyZG93biwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gYmxvY2sgZGV2aWNlIGxvZ2ljIGFuZCBhY2Nlc3NpYmxlIHZpYSBpb2N0bHMvZmlsZSBvcGVyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMzoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9MT09QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19sb29wX2Nscl9mZCYjMzQ7LAogICAgJiMzNDtsb19yZWxlYXNlJiMzNDssCiAgICAmIzM0O2xvb3BfY2xyX2ZkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0ZWFyZG93biBwYXRoIG9mIGxvb3AgZGV2aWNlcyAoYF9fbG9vcF9jbHJfZmRgKSwgbWFraW5nIHBhcnRpdGlvbiByZW1vdmFsIHVuY29uZGl0aW9uYWwgZXZlbiB3aGVuIGBMT19GTEFHU19QQVJUU0NBTmAgaXMgbm90IHNldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYmxvY2sgZGV2aWNlIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIGxvb3BiYWNrIGRldmljZSBpb2N0bHMgYW5kIGZpbGUgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9MT09QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19sb29wX2Nscl9mZCYjMzQ7LAogICAgJiMzNDtsb19yZWxlYXNlJiMzNDssCiAgICAmIzM0O2xvb3BfY2xyX2ZkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0ZWFyZG93biBwYXRoIG9mIGxvb3AgZGV2aWNlcyAoYF9fbG9vcF9jbHJfZmRgKSwgbWFraW5nIHBhcnRpdGlvbiByZW1vdmFsIHVuY29uZGl0aW9uYWwgZXZlbiB3aGVuIGBMT19GTEFHU19QQVJUU0NBTmAgaXMgbm90IHNldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYmxvY2sgZGV2aWNlIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIGxvb3BiYWNrIGRldmljZSBpb2N0bHMgYW5kIGZpbGUgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAzOjIwOjAyLjcyODU2MTQxMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MjUzNzc3MjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfTE9PUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fbG9vcF9jbHJfZmRcIixcbiAgICBcImxvX3JlbGVhc2VcIixcbiAgICBcImxvb3BfY2xyX2ZkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHRlYXJkb3duIHBhdGggb2YgbG9vcCBkZXZpY2VzIChgX19sb29wX2Nscl9mZGApLCBtYWtpbmcgcGFydGl0aW9uIHJlbW92YWwgdW5jb25kaXRpb25hbCBldmVuIHdoZW4gYExPX0ZMQUdTX1BBUlRTQ0FOYCBpcyBub3Qgc2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBibG9jayBkZXZpY2UgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgbG9vcGJhY2sgZGV2aWNlIGlvY3RscyBhbmQgZmlsZSBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMzoyMDowMi43Mjg1NjcxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzQ1NjU3MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiNjU2MDU4ZDVmYjllZWNlOWUzMWFjYzJlZjk2M2NlNGE0YjJkZWU0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDE2IDAzOjIwOjAxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbG9vcC5jIGIvZHJpdmVycy9ibG9jay9sb29wLmNcXG5pbmRleCAzMTBkZTA0NjNiZWIxNC4uMWZhZWNlZjMzMDA5MmIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay9sb29wLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuY1xcbkBAIC0xMTEzLDYgKzExMTMsNyBAQCBzdGF0aWMgdm9pZCBfX2xvb3BfY2xyX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8pXFxuIFxcdHN0cnVjdCBxdWV1ZV9saW1pdHMgbGltO1xcbiBcXHRzdHJ1Y3QgZmlsZSAqZmlscDtcXG4gXFx0Z2ZwX3QgZ2ZwID0gbG8tXFx1MDAzZW9sZF9nZnBfbWFzaztcXG4rXFx0aW50IGVycjtcXG4gXFxuIFxcdHNwaW5fbG9ja19pcnEoXFx1MDAyNmxvLVxcdTAwM2Vsb19sb2NrKTtcXG4gXFx0ZmlscCA9IGxvLVxcdTAwM2Vsb19iYWNraW5nX2ZpbGU7XFxuQEAgLTExNDYsMjYgKzExNDcsMjEgQEAgc3RhdGljIHZvaWQgX19sb29wX2Nscl9mZChzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvKVxcbiBcXG4gXFx0ZGlza19mb3JjZV9tZWRpYV9jaGFuZ2UobG8tXFx1MDAzZWxvX2Rpc2spO1xcbiBcXG4tXFx0aWYgKGxvLVxcdTAwM2Vsb19mbGFncyBcXHUwMDI2IExPX0ZMQUdTX1BBUlRTQ0FOKSB7XFxuLVxcdFxcdGludCBlcnI7XFxuLVxcbi1cXHRcXHQvKlxcbi1cXHRcXHQgKiBvcGVuX211dGV4IGhhcyBiZWVuIGhlbGQgYWxyZWFkeSBpbiByZWxlYXNlIHBhdGgsIHNvIGRvbid0XFxuLVxcdFxcdCAqIGFjcXVpcmUgaXQgaWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gc3VjaCBjYXNlLlxcbi1cXHRcXHQgKlxcbi1cXHRcXHQgKiBJZiB0aGUgcmVyZWFkIHBhcnRpdGlvbiBpc24ndCBmcm9tIHJlbGVhc2UgcGF0aCwgbG9fcmVmY250XFxuLVxcdFxcdCAqIG11c3QgYmUgYXQgbGVhc3Qgb25lIGFuZCBpdCBjYW4gb25seSBiZWNvbWUgemVybyB3aGVuIHRoZVxcbi1cXHRcXHQgKiBjdXJyZW50IGhvbGRlciBpcyByZWxlYXNlZC5cXG4tXFx0XFx0ICovXFxuLVxcdFxcdGVyciA9IGJkZXZfZGlza19jaGFuZ2VkKGxvLVxcdTAwM2Vsb19kaXNrLCBmYWxzZSk7XFxuLVxcdFxcdGlmIChlcnIpXFxuLVxcdFxcdFxcdHByX3dhcm4oXFxcIiVzOiBwYXJ0aXRpb24gc2NhbiBvZiBsb29wJWQgZmFpbGVkIChyYz0lZClcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFxcdF9fZnVuY19fLCBsby1cXHUwMDNlbG9fbnVtYmVyLCBlcnIpO1xcbi1cXHRcXHQvKiBEZXZpY2UgaXMgZ29uZSwgbm8gcG9pbnQgaW4gcmV0dXJuaW5nIGVycm9yICovXFxuLVxcdH1cXG4rXFx0LypcXG4rXFx0ICogUmVtb3ZlIGFsbCBwYXJ0aXRpb25zLCBpbmNsdWRpbmcgcGFydGl0aW9ucyBhZGRlZCBtYW51YWxseSB3aXRoXFxuK1xcdCAqIEJMS1BHLCB3aGljaCBtYXkgZXhpc3QgZXZlbiBpZiBMT19GTEFHU19QQVJUU0NBTiBpcyBub3Qgc2V0LlxcbitcXHQgKlxcbitcXHQgKiBvcGVuX211dGV4IGhhcyBiZWVuIGhlbGQgYWxyZWFkeSBpbiByZWxlYXNlIHBhdGgsIHNvIGRvbid0IGFjcXVpcmVcXG4rXFx0ICogaXQgaGVyZS5cXG4rXFx0ICovXFxuK1xcdGVyciA9IGJkZXZfZGlza19jaGFuZ2VkKGxvLVxcdTAwM2Vsb19kaXNrLCBmYWxzZSk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHByX3dhcm4oXFxcIiVzOiBwYXJ0aXRpb24gc2NhbiBvZiBsb29wJWQgZmFpbGVkIChyYz0lZClcXFxcblxcXCIsXFxuK1xcdFxcdFxcdF9fZnVuY19fLCBsby1cXHUwMDNlbG9fbnVtYmVyLCBlcnIpO1xcbitcXHQvKiBEZXZpY2UgaXMgZ29uZSwgbm8gcG9pbnQgaW4gcmV0dXJuaW5nIGVycm9yICovXFxuIFxcbiBcXHQvKlxcbi1cXHQgKiBsby1cXHUwMDNlbG9fc3RhdGUgaXMgc2V0IHRvIExvX3VuYm91bmQgaGVyZSBhZnRlciBhYm92ZSBwYXJ0c2NhbiBoYXNcXG4rXFx0ICogbG8tXFx1MDAzZWxvX3N0YXRlIGlzIHNldCB0byBMb191bmJvdW5kIGhlcmUgYWZ0ZXIgcmVtb3ZpbmcgcGFydGl0aW9ucyBoYXNcXG4gXFx0ICogZmluaXNoZWQuIFRoZXJlIGNhbm5vdCBiZSBhbnlib2R5IGVsc2UgZW50ZXJpbmcgX19sb29wX2Nscl9mZCgpIGFzXFxuIFxcdCAqIExvX3J1bmRvd24gc3RhdGUgcHJvdGVjdHMgdXMgZnJvbSBhbGwgdGhlIG90aGVyIHBsYWNlcyB0cnlpbmcgdG9cXG4gXFx0ICogY2hhbmdlIHRoZSAnbG8nIGRldmljZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDM6MjA6MDMuMjYzODkxNTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2NzE4NDM1NjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfTE9PUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fbG9vcF9jbHJfZmRcIixcbiAgICBcImxvX3JlbGVhc2VcIixcbiAgICBcImxvb3BfY2xyX2ZkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHRlYXJkb3duIHBhdGggb2YgbG9vcCBkZXZpY2VzIChgX19sb29wX2Nscl9mZGApLCBtYWtpbmcgcGFydGl0aW9uIHJlbW92YWwgdW5jb25kaXRpb25hbCBldmVuIHdoZW4gYExPX0ZMQUdTX1BBUlRTQ0FOYCBpcyBub3Qgc2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBibG9jayBkZXZpY2UgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgbG9vcGJhY2sgZGV2aWNlIGlvY3RscyBhbmQgZmlsZSBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGI2NTYwNThkNWZiOWVlY2U5ZTMxYWNjMmVmOTYzY2U0YTRiMmRlZTRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAxNiAwMzoyMDowMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbG9vcC5jIGIvZHJpdmVycy9ibG9jay9sb29wLmNcbmluZGV4IDMxMGRlMDQ2M2JlYjE0Li4xZmFlY2VmMzMwMDkyYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svbG9vcC5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuY1xuQEAgLTExMTMsNiArMTExMyw3IEBAIHN0YXRpYyB2b2lkIF9fbG9vcF9jbHJfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbylcbiBcdHN0cnVjdCBxdWV1ZV9saW1pdHMgbGltO1xuIFx0c3RydWN0IGZpbGUgKmZpbHA7XG4gXHRnZnBfdCBnZnAgPSBsby1cdTAwM2VvbGRfZ2ZwX21hc2s7XG4rXHRpbnQgZXJyO1xuIFxuIFx0c3Bpbl9sb2NrX2lycShcdTAwMjZsby1cdTAwM2Vsb19sb2NrKTtcbiBcdGZpbHAgPSBsby1cdTAwM2Vsb19iYWNraW5nX2ZpbGU7XG5AQCAtMTE0NiwyNiArMTE0NywyMSBAQCBzdGF0aWMgdm9pZCBfX2xvb3BfY2xyX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8pXG4gXG4gXHRkaXNrX2ZvcmNlX21lZGlhX2NoYW5nZShsby1cdTAwM2Vsb19kaXNrKTtcbiBcbi1cdGlmIChsby1cdTAwM2Vsb19mbGFncyBcdTAwMjYgTE9fRkxBR1NfUEFSVFNDQU4pIHtcbi1cdFx0aW50IGVycjtcbi1cbi1cdFx0Lypcbi1cdFx0ICogb3Blbl9tdXRleCBoYXMgYmVlbiBoZWxkIGFscmVhZHkgaW4gcmVsZWFzZSBwYXRoLCBzbyBkb24ndFxuLVx0XHQgKiBhY3F1aXJlIGl0IGlmIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGluIHN1Y2ggY2FzZS5cbi1cdFx0ICpcbi1cdFx0ICogSWYgdGhlIHJlcmVhZCBwYXJ0aXRpb24gaXNuJ3QgZnJvbSByZWxlYXNlIHBhdGgsIGxvX3JlZmNudFxuLVx0XHQgKiBtdXN0IGJlIGF0IGxlYXN0IG9uZSBhbmQgaXQgY2FuIG9ubHkgYmVjb21lIHplcm8gd2hlbiB0aGVcbi1cdFx0ICogY3VycmVudCBob2xkZXIgaXMgcmVsZWFzZWQuXG4tXHRcdCAqL1xuLVx0XHRlcnIgPSBiZGV2X2Rpc2tfY2hhbmdlZChsby1cdTAwM2Vsb19kaXNrLCBmYWxzZSk7XG4tXHRcdGlmIChlcnIpXG4tXHRcdFx0cHJfd2FybihcIiVzOiBwYXJ0aXRpb24gc2NhbiBvZiBsb29wJWQgZmFpbGVkIChyYz0lZClcXG5cIixcbi1cdFx0XHRcdF9fZnVuY19fLCBsby1cdTAwM2Vsb19udW1iZXIsIGVycik7XG4tXHRcdC8qIERldmljZSBpcyBnb25lLCBubyBwb2ludCBpbiByZXR1cm5pbmcgZXJyb3IgKi9cbi1cdH1cbitcdC8qXG4rXHQgKiBSZW1vdmUgYWxsIHBhcnRpdGlvbnMsIGluY2x1ZGluZyBwYXJ0aXRpb25zIGFkZGVkIG1hbnVhbGx5IHdpdGhcbitcdCAqIEJMS1BHLCB3aGljaCBtYXkgZXhpc3QgZXZlbiBpZiBMT19GTEFHU19QQVJUU0NBTiBpcyBub3Qgc2V0LlxuK1x0ICpcbitcdCAqIG9wZW5fbXV0ZXggaGFzIGJlZW4gaGVsZCBhbHJlYWR5IGluIHJlbGVhc2UgcGF0aCwgc28gZG9uJ3QgYWNxdWlyZVxuK1x0ICogaXQgaGVyZS5cbitcdCAqL1xuK1x0ZXJyID0gYmRldl9kaXNrX2NoYW5nZWQobG8tXHUwMDNlbG9fZGlzaywgZmFsc2UpO1xuK1x0aWYgKGVycilcbitcdFx0cHJfd2FybihcIiVzOiBwYXJ0aXRpb24gc2NhbiBvZiBsb29wJWQgZmFpbGVkIChyYz0lZClcXG5cIixcbitcdFx0XHRfX2Z1bmNfXywgbG8tXHUwMDNlbG9fbnVtYmVyLCBlcnIpO1xuK1x0LyogRGV2aWNlIGlzIGdvbmUsIG5vIHBvaW50IGluIHJldHVybmluZyBlcnJvciAqL1xuIFxuIFx0Lypcbi1cdCAqIGxvLVx1MDAzZWxvX3N0YXRlIGlzIHNldCB0byBMb191bmJvdW5kIGhlcmUgYWZ0ZXIgYWJvdmUgcGFydHNjYW4gaGFzXG4rXHQgKiBsby1cdTAwM2Vsb19zdGF0ZSBpcyBzZXQgdG8gTG9fdW5ib3VuZCBoZXJlIGFmdGVyIHJlbW92aW5nIHBhcnRpdGlvbnMgaGFzXG4gXHQgKiBmaW5pc2hlZC4gVGhlcmUgY2Fubm90IGJlIGFueWJvZHkgZWxzZSBlbnRlcmluZyBfX2xvb3BfY2xyX2ZkKCkgYXNcbiBcdCAqIExvX3J1bmRvd24gc3RhdGUgcHJvdGVjdHMgdXMgZnJvbSBhbGwgdGhlIG90aGVyIHBsYWNlcyB0cnlpbmcgdG9cbiBcdCAqIGNoYW5nZSB0aGUgJ2xvJyBkZXZpY2UuXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMzoyMDowMy4yNjM4OTMxNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NjA5NjAxMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTG9vcCBEZXZpY2UgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9ibG9jay9sb29wLmNgLiBJdCdzIGZvY3VzZWQgb24gbW9kaWZ5aW5nIHRoZSBgX19sb29wX2Nscl9mZGAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSByZW1vdmluZyBhIGNvbmRpdGlvbmFsIGNoZWNrLiBCZWZvcmUsIHdlIGhhZCB0aGlzIGNoZWNrOiBgaWYgKGxvLVx1MDAzZWxvX2ZsYWdzIFx1MDAyNiBMT19GTEFHU19QQVJUU0NBTilgLCBhbmQgaWYgaXQgd2FzIHRydWUsIGl0IHdvdWxkIGNhbGwgYGJkZXZfZGlza19jaGFuZ2VkKGxvLVx1MDAzZWxvX2Rpc2ssIGZhbHNlKWAuIE5vdywgdGhlIHBhdGNoICpyZW1vdmVzKiB0aGF0IGNoZWNrLCBtZWFuaW5nIGBiZGV2X2Rpc2tfY2hhbmdlZGAgd2lsbCBiZSBjYWxsZWQgKnVuY29uZGl0aW9uYWxseSogZHVyaW5nIGEgbG9vcCBkZXZpY2UgY2xlYW51cC5cblxuTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyBmdW5jdGlvbmFsbHkgYSBzdHJhaWdodGZvcndhcmQgY2hhbmdlLiBUaGUgZXhlY3V0aW9uIGZsb3cgaXMgYWx0ZXJlZDsgdGhlIGNvZGUgYmxvY2sgdW5kZXIgdGhhdCBgaWZgIHN0YXRlbWVudCBpcyBubyBsb25nZXIgZ2F0ZWQuIEl0J3MgZ29pbmcgdG8gYWZmZWN0IHRoZSB0ZWFyZG93biBwcm9jZXNzIGZvciBsb29wIGRldmljZXMuIFNvLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBiZGV2X2Rpc2tfY2hhbmdlZGAgZG9lcyBpbiB0aGlzIGNvbnRleHQgYW5kIHdoeSB0aGlzIGNvbmRpdGlvbmFsIHdhcyBvcmlnaW5hbGx5IHRoZXJlLiBJIGltbWVkaWF0ZWx5IG5lZWQgdG8gY29uc2lkZXIgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuXG5cbk5leHQgc3RlcDogSSdtIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgY29kZSBpdHNlbGYsIGBkcml2ZXJzL2Jsb2NrL2xvb3AuY2AgYW5kIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgYF9fbG9vcF9jbHJfZmRgIGZ1bmN0aW9uIGl0c2VsZiwgYWxvbmcgd2l0aCByZWxldmFudCB1c2VzIG9mIGBiZGV2X2Rpc2tfY2hhbmdlZGAuIEknbGwgYWxzbyB3YW50IHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgbG9vcCBkZXZpY2VzLCBwcm9iYWJseSBpbiBgZHJpdmVycy9ibG9jay9LY29uZmlnYCBvciBzaW1pbGFyIGZpbGVzLCB0byBzZWUgd2hhdCBzZXR0aW5ncyBtaWdodCBiZSBpbXBhY3RlZCBieSB0aGlzIGNoYW5nZS4gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiB3aWxsIGNsYXJpZnkgdGhlIGVudmlyb25tZW50IHRoaXMgY2hhbmdlIG9wZXJhdGVzIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzEyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDM6MjA6MDguMTI0ODU1MjZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk3MDI5MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJMS19ERVZfTE9PUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9LY29uZmlnPTE0MD1jb25maWcgQkxLX0RFVl9DT1dfQ09NTU9OXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTQzLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoxNDQ6Y29uZmlnIEJMS19ERVZfTE9PUFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xNDUtXFx0dHJpc3RhdGUgXFxcIkxvb3BiYWNrIGRldmljZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE3OC1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MTc5OmNvbmZpZyBCTEtfREVWX0xPT1BfTUlOX0NPVU5UXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE4MC1cXHRpbnQgXFxcIk51bWJlciBvZiBsb29wIGRldmljZXMgdG8gcHJlLWNyZWF0ZSBhdCBpbml0IHRpbWVcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAzOjIwOjA4LjE4NDU2Mzg5OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MDMxNTU5NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkxvb3AgRGV2aWNlIENvbmZpZ3VyYXRpb24gYW5kIEZ1bmN0aW9uIEFuYWx5c2lzKipcblxuUmlnaHQsIHNvIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGxvb3AgZGV2aWNlIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseSBgQkxLX0RFVl9MT09QYC4gVGhhdCdzIGEgZmFtaWxpYXIgYXJlYS4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgYF9fbG9vcF9jbHJfZmRgIGZ1bmN0aW9uLiBIb2xkIG9uLCBpdCdzIGRlY2xhcmVkIHN0YXRpYy4gVGhhdCdzIGEgYml0IG9mIGEgd3JpbmtsZSDigJMgdXN1YWxseSBtZWFucyBpdCdzIHNjb3BlZCB3aXRoaW4gYSBzcGVjaWZpYyB0cmFuc2xhdGlvbiB1bml0LiBPa2F5LCBubyBwcm9ibGVtLCB0aGlzIG1lYW5zIHRoYXQgdGhlIGNhbGwgdHJlZSB0byB0cmFjZSBpcyBub3QgYWxsIGVuY29tcGFzc2luZyB0byB0aGUgd2hvbGUga2VybmVsIGJ1aWxkLiBJbnN0ZWFkLCBhIHNwZWNpZmljIG1vZHVsZSBmaWxlIG11c3QgYmUgaW5zcGVjdGVkIHRvIGZpbmQgdGhlIGNhbGxlcnMuIFRpbWUgdG8gc2VlIHdoaWNoIHBhcnQgb2YgdGhlIGNvZGUgYmFzZSBjYWxscyB0aGF0IGZ1bmN0aW9uIGFuZCB3aGF0IGNvbnRleHQgaXQgaXMgYmVpbmcgY2FsbGVkIGZyb20uIEknbGwgbmVlZCB0byBpZGVudGlmeSB0aGUgY2FsbCBzaXRlcyB0byBmdWxseSB1bmRlcnN0YW5kIGl0cyByb2xlIGFuZCBpbXBhY3QuIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTk2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDM6MjA6MTEuMDg3NzIxODZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc5NzU3NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19sb29wX2Nscl9mZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL2xvb3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL2xvb3AuYz05NT1zdGF0aWMgREVGSU5FX01VVEVYKGxvb3BfdmFsaWRhdGVfbXV0ZXgpO1xcbi0tXFxuZHJpdmVycy9ibG9jay9sb29wLmMtMTA2LSAqIGlzX2xvb3BfZGV2aWNlKCkgaXMgdHJ1ZSwgd2UgbmVlZCBhIGdsb2JhbCBsb2NrIGZvciBzZXJpYWxpemluZyBjb25jdXJyZW50XFxuZHJpdmVycy9ibG9jay9sb29wLmM6MTA3OiAqIGxvb3BfY29uZmlndXJlKCkvbG9vcF9jaGFuZ2VfZmQoKS9fX2xvb3BfY2xyX2ZkKCkgY2FsbHMuXFxuZHJpdmVycy9ibG9jay9sb29wLmMtMTA4LSAqL1xcbi0tXFxuZHJpdmVycy9ibG9jay9sb29wLmM9OTc3PXN0YXRpYyBpbnQgbG9vcF9jb25maWd1cmUoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgYmxrX21vZGVfdCBtb2RlLFxcbi0tXFxuZHJpdmVycy9ibG9jay9sb29wLmMtMTExMC1cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxMTExOnN0YXRpYyB2b2lkIF9fbG9vcF9jbHJfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbylcXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMTEyLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTExNjQtXFx0ICogbG8tXFx1MDAzZWxvX3N0YXRlIGlzIHNldCB0byBMb191bmJvdW5kIGhlcmUgYWZ0ZXIgcmVtb3ZpbmcgcGFydGl0aW9ucyBoYXNcXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxMTY1OlxcdCAqIGZpbmlzaGVkLiBUaGVyZSBjYW5ub3QgYmUgYW55Ym9keSBlbHNlIGVudGVyaW5nIF9fbG9vcF9jbHJfZmQoKSBhc1xcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTExNjYtXFx0ICogTG9fcnVuZG93biBzdGF0ZSBwcm90ZWN0cyB1cyBmcm9tIGFsbCB0aGUgb3RoZXIgcGxhY2VzIHRyeWluZyB0b1xcbi0tXFxuZHJpdmVycy9ibG9jay9sb29wLmM9MTcyMj1zdGF0aWMgdm9pZCBsb19yZWxlYXNlKHN0cnVjdCBnZW5kaXNrICpkaXNrKVxcbi0tXFxuZHJpdmVycy9ibG9jay9sb29wLmMtMTc0Mi1cXHRpZiAobmVlZF9jbGVhcilcXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxNzQzOlxcdFxcdF9fbG9vcF9jbHJfZmQobG8pO1xcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTE3NDQtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMzoyMDoxMS4xNDU3MTIxNzlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjQ3NDQ5ODQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBfX2xvb3BfY2xyX2ZkYCBVc2FnZSoqXG5cbk9rYXksIHNvIGBfX2xvb3BfY2xyX2ZkYCBpcyBjYWxsZWQgYnkgYGxvX3JlbGVhc2VgLCB3aGljaCBtYWtlcyBzZW5zZS4gSSd2ZSBzZWVuIHRoYXQgcmVsYXRpb25zaGlwIGJlZm9yZS4gQnV0IEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjYWxsIHNpdGVzLiBBIGxlYWsgb3IgYSBkb3VibGUtZnJlZSBjb3VsZCBiZSBsdXJraW5nIGlmIGl0J3MgdXNlZCBlbHNld2hlcmUsIGFuZCBJ4oCZZCBjYXRjaCB0aGF0IGZhc3QuIEknbGwgbmVlZCB0byBkaWcgdGhyb3VnaCB0aGUgY29kZWJhc2UgYW5kIGNvbmZpcm0gdGhlIGNhbGxlciBsaXN0IGFuZCBkb3VibGUgY2hlY2sgZm9yIGFueSBjYWxscyBvdXRzaWRlIGBsb19yZWxlYXNlYC4uLiBiZXN0IHRvIGJlIHRob3JvdWdoIGhlcmUuIEFueSBvdGhlciBwbGFjZXMgdGhpcyBpcyBiZWluZyB1c2VkIGNvdWxkIGJlIGEgcG90ZW50aWFsIHBvaW50IG9mIGludGVyZXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjYxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDM6MjA6MTMuNzkzMTY0MTY1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1OTU2ODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fbG9vcF9jbHJfZmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9sb29wLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9sb29wLmM9OTU9c3RhdGljIERFRklORV9NVVRFWChsb29wX3ZhbGlkYXRlX211dGV4KTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTEwNi0gKiBpc19sb29wX2RldmljZSgpIGlzIHRydWUsIHdlIG5lZWQgYSBnbG9iYWwgbG9jayBmb3Igc2VyaWFsaXppbmcgY29uY3VycmVudFxcbmRyaXZlcnMvYmxvY2svbG9vcC5jOjEwNzogKiBsb29wX2NvbmZpZ3VyZSgpL2xvb3BfY2hhbmdlX2ZkKCkvX19sb29wX2Nscl9mZCgpIGNhbGxzLlxcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTEwOC0gKi9cXG4tLVxcbmRyaXZlcnMvYmxvY2svbG9vcC5jPTk3Nz1zdGF0aWMgaW50IGxvb3BfY29uZmlndXJlKHN0cnVjdCBsb29wX2RldmljZSAqbG8sIGJsa19tb2RlX3QgbW9kZSxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTExMTAtXFxuZHJpdmVycy9ibG9jay9sb29wLmM6MTExMTpzdGF0aWMgdm9pZCBfX2xvb3BfY2xyX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8pXFxuZHJpdmVycy9ibG9jay9sb29wLmMtMTExMi17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMTY0LVxcdCAqIGxvLVxcdTAwM2Vsb19zdGF0ZSBpcyBzZXQgdG8gTG9fdW5ib3VuZCBoZXJlIGFmdGVyIHJlbW92aW5nIHBhcnRpdGlvbnMgaGFzXFxuZHJpdmVycy9ibG9jay9sb29wLmM6MTE2NTpcXHQgKiBmaW5pc2hlZC4gVGhlcmUgY2Fubm90IGJlIGFueWJvZHkgZWxzZSBlbnRlcmluZyBfX2xvb3BfY2xyX2ZkKCkgYXNcXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMTY2LVxcdCAqIExvX3J1bmRvd24gc3RhdGUgcHJvdGVjdHMgdXMgZnJvbSBhbGwgdGhlIG90aGVyIHBsYWNlcyB0cnlpbmcgdG9cXG4tLVxcbmRyaXZlcnMvYmxvY2svbG9vcC5jPTE3MjI9c3RhdGljIHZvaWQgbG9fcmVsZWFzZShzdHJ1Y3QgZ2VuZGlzayAqZGlzaylcXG4tLVxcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTE3NDItXFx0aWYgKG5lZWRfY2xlYXIpXFxuZHJpdmVycy9ibG9jay9sb29wLmM6MTc0MzpcXHRcXHRfX2xvb3BfY2xyX2ZkKGxvKTtcXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xNzQ0LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDM6MjA6MTMuODQ5MTI4NTc0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjU2OTc5ODY3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgRGVlcGVyIGludG8gdGhlIEFic3RyYWN0aW9uKipcblxuT2theSwgc28gSSd2ZSBpZGVudGlmaWVkIGBsb29wX2Nscl9mZGAgYXMgc29tZXRoaW5nIHJlbGF0ZWQgdG8gYF9fbG9vcF9jbHJfZmRgLiBNeSBpbnR1aXRpb24sIGJhc2VkIG9uIHRoZSBuYW1pbmcgY29udmVudGlvbiwgdGVsbHMgbWUgdGhleSdyZSBsaWtlbHkgaW50ZXJjb25uZWN0ZWQuIEkgbmVlZCB0byBjb25maXJtIHRoaXMgYXNzdW1wdGlvbi4gTGV0J3Mgc3RhcnQgYnkgcXVpY2tseSB2ZXJpZnlpbmcgbXkgdW5kZXJzdGFuZGluZyBvZiB3aGF0IGBsb29wX2Nscl9mZGAgaXMgZG9pbmcgaW4gbW9yZSBkZXRhaWwuIEknbGwgbmVlZCB0byBleGFtaW5lIGl0cyBpbXBsZW1lbnRhdGlvbiB0byBzZWUgaWYgaXQncyBhY3RpbmcgYXMgYSBoaWdoZXItbGV2ZWwgYWJzdHJhY3Rpb24gdGhhdCBjYWxscyBgX19sb29wX2Nscl9mZGAgdW5kZXIgdGhlIGhvb2QuIEl0J3MgYSBjb21tb24gcGF0dGVybiwgYW5kIGEgcXVpY2sgY2hlY2sgb2YgYGxvb3BfY2xyX2ZkYCB3aWxsIGdpdmUgbWUgdGhlIGNsYXJpdHkgSSBuZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjcwLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDM6MjA6MTYuNDE4OTI5NTUyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDAwMjk4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsb29wX2Nscl9mZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL2xvb3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL2xvb3AuYz05NT1zdGF0aWMgREVGSU5FX01VVEVYKGxvb3BfdmFsaWRhdGVfbXV0ZXgpO1xcbi0tXFxuZHJpdmVycy9ibG9jay9sb29wLmMtMTA2LSAqIGlzX2xvb3BfZGV2aWNlKCkgaXMgdHJ1ZSwgd2UgbmVlZCBhIGdsb2JhbCBsb2NrIGZvciBzZXJpYWxpemluZyBjb25jdXJyZW50XFxuZHJpdmVycy9ibG9jay9sb29wLmM6MTA3OiAqIGxvb3BfY29uZmlndXJlKCkvbG9vcF9jaGFuZ2VfZmQoKS9fX2xvb3BfY2xyX2ZkKCkgY2FsbHMuXFxuZHJpdmVycy9ibG9jay9sb29wLmMtMTA4LSAqL1xcbi0tXFxuZHJpdmVycy9ibG9jay9sb29wLmM9OTc3PXN0YXRpYyBpbnQgbG9vcF9jb25maWd1cmUoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgYmxrX21vZGVfdCBtb2RlLFxcbi0tXFxuZHJpdmVycy9ibG9jay9sb29wLmMtMTExMC1cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxMTExOnN0YXRpYyB2b2lkIF9fbG9vcF9jbHJfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbylcXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMTEyLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTExNjQtXFx0ICogbG8tXFx1MDAzZWxvX3N0YXRlIGlzIHNldCB0byBMb191bmJvdW5kIGhlcmUgYWZ0ZXIgcmVtb3ZpbmcgcGFydGl0aW9ucyBoYXNcXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxMTY1OlxcdCAqIGZpbmlzaGVkLiBUaGVyZSBjYW5ub3QgYmUgYW55Ym9keSBlbHNlIGVudGVyaW5nIF9fbG9vcF9jbHJfZmQoKSBhc1xcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTExNjYtXFx0ICogTG9fcnVuZG93biBzdGF0ZSBwcm90ZWN0cyB1cyBmcm9tIGFsbCB0aGUgb3RoZXIgcGxhY2VzIHRyeWluZyB0b1xcbi0tXFxuZHJpdmVycy9ibG9jay9sb29wLmMtMTE4My1cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxMTg0OnN0YXRpYyBpbnQgbG9vcF9jbHJfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbylcXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMTg1LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTExODktXFx0ICogU2luY2UgbG9faW9jdGwoKSBpcyBjYWxsZWQgd2l0aG91dCBsb2NrcyBoZWxkLCBpdCBpcyBwb3NzaWJsZSB0aGF0XFxuZHJpdmVycy9ibG9jay9sb29wLmM6MTE5MDpcXHQgKiBsb29wX2NvbmZpZ3VyZSgpL2xvb3BfY2hhbmdlX2ZkKCkgYW5kIGxvb3BfY2xyX2ZkKCkgcnVuIGluIHBhcmFsbGVsLlxcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTExOTEtXFx0ICpcXG4tLVxcbmRyaXZlcnMvYmxvY2svbG9vcC5jPTE1MDc9c3RhdGljIGludCBsb19pb2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xNTM4LVxcdGNhc2UgTE9PUF9DTFJfRkQ6XFxuZHJpdmVycy9ibG9jay9sb29wLmM6MTUzOTpcXHRcXHRyZXR1cm4gbG9vcF9jbHJfZmQobG8pO1xcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTE1NDAtXFx0Y2FzZSBMT09QX1NFVF9TVEFUVVM6XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYz0xNzIyPXN0YXRpYyB2b2lkIGxvX3JlbGVhc2Uoc3RydWN0IGdlbmRpc2sgKmRpc2spXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xNzQyLVxcdGlmIChuZWVkX2NsZWFyKVxcbmRyaXZlcnMvYmxvY2svbG9vcC5jOjE3NDM6XFx0XFx0X19sb29wX2Nscl9mZChsbyk7XFxuZHJpdmVycy9ibG9jay9sb29wLmMtMTc0NC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAzOjIwOjE2LjQ4MjkzOTEzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MTYzOTg4ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgRnVuY3Rpb24gQ2FsbCBDaGFpbioqXG5cblJpZ2h0LCBzbyBgbG9vcF9jbHJfZmRg4oCmIHRoYXQgbmFtZSBzb3VuZHMgZmFtaWxpYXIuIEhtbSwgaXQgbG9va3MgbGlrZSBpdCdzIGNhbGxpbmcgYF9fbG9vcF9jbHJfZmRgLiBPa2F5LCBsZXQncyB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgZGVmaW5pdGlvbiBvZiBgbG9vcF9jbHJfZmRgLiBJJ20gZ3Vlc3NpbmcgdGhlcmUncyBhIGdvb2QgcmVhc29uIGZvciB0aGlzIGtpbmQgb2YgYWJzdHJhY3Rpb247IHBlcmhhcHMgc29tZSBwbGF0Zm9ybS1zcGVjaWZpYyBkZXRhaWxzIG9yIHBvdGVudGlhbGx5IHNvbWUgaW50ZXJuYWwgYm9va2tlZXBpbmcgaGFwcGVuaW5nIGluIGBfX2xvb3BfY2xyX2ZkYD8gSSdtIGN1cmlvdXMgd2hhdCdzIGhhcHBlbmluZy4gUHJvYmFibHkgdGhlcmUgYXJlIHNvbWUgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbiBvciBzb21lIHNwZWNpZmljIGVkZ2UgY2FzZSB0aGUgaW5uZXIgbWV0aG9kIGlzIGhhbmRsaW5nLiBMZXQncyBzZWUgaWYgdGhpcyBpcyBqdXN0IGEgc2ltcGxlIHdyYXBwZXIgb3IgaWYgdGhlcmUncyBzb21ldGhpbmcgbW9yZSB0byBpdC4gSSB3YW50IHRvIGNoZWNrIGhvdyB0aGUgYXJndW1lbnRzIGFyZSBiZWluZyBwYXNzZWQsIGlmIHRoZXJlJ3MgYW55IHByZS1wcm9jZXNzaW5nLCBvciBhbnkgc3VidGxlIHNpZGUgZWZmZWN0cyBJIHNob3VsZCBiZSBhd2FyZSBvZi4gTGV0J3MgZ2V0IHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBhbmQgc2VlIHdoYXQncyBhY3R1YWxseSBnb2luZyBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE0OCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAzOjIwOjE5LjM5OTM0MTQ0MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjE3NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ibG9jay9sb29wLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTE4NCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTE4NDpcXHRzdGF0aWMgaW50IGxvb3BfY2xyX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8pXFxuMTE4NTpcXHR7XFxuMTE4NjpcXHRcXHRpbnQgZXJyO1xcbjExODc6XFx0XFxuMTE4ODpcXHRcXHQvKlxcbjExODk6XFx0XFx0ICogU2luY2UgbG9faW9jdGwoKSBpcyBjYWxsZWQgd2l0aG91dCBsb2NrcyBoZWxkLCBpdCBpcyBwb3NzaWJsZSB0aGF0XFxuMTE5MDpcXHRcXHQgKiBsb29wX2NvbmZpZ3VyZSgpL2xvb3BfY2hhbmdlX2ZkKCkgYW5kIGxvb3BfY2xyX2ZkKCkgcnVuIGluIHBhcmFsbGVsLlxcbjExOTE6XFx0XFx0ICpcXG4xMTkyOlxcdFxcdCAqIFRoZXJlZm9yZSwgdXNlIGdsb2JhbCBsb2NrIHdoZW4gc2V0dGluZyBMb19ydW5kb3duIHN0YXRlIGluIG9yZGVyIHRvXFxuMTE5MzpcXHRcXHQgKiBtYWtlIHN1cmUgdGhhdCBsb29wX3ZhbGlkYXRlX2ZpbGUoKSB3aWxsIGZhaWwgaWYgdGhlIFxcXCJzdHJ1Y3QgZmlsZVxcXCJcXG4xMTk0OlxcdFxcdCAqIHdoaWNoIGxvb3BfY29uZmlndXJlKCkvbG9vcF9jaGFuZ2VfZmQoKSBmb3VuZCB2aWEgZmdldCgpIHdhcyB0aGlzXFxuMTE5NTpcXHRcXHQgKiBsb29wIGRldmljZS5cXG4xMTk2OlxcdFxcdCAqL1xcbjExOTc6XFx0XFx0ZXJyID0gbG9vcF9nbG9iYWxfbG9ja19raWxsYWJsZShsbywgdHJ1ZSk7XFxuMTE5ODpcXHRcXHRpZiAoZXJyKVxcbjExOTk6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4xMjAwOlxcdFxcdGlmIChsby1cXHUwMDNlbG9fc3RhdGUgIT0gTG9fYm91bmQpIHtcXG4xMjAxOlxcdFxcdFxcdGxvb3BfZ2xvYmFsX3VubG9jayhsbywgdHJ1ZSk7XFxuMTIwMjpcXHRcXHRcXHRyZXR1cm4gLUVOWElPO1xcbjEyMDM6XFx0XFx0fVxcbjEyMDQ6XFx0XFx0LypcXG4xMjA1OlxcdFxcdCAqIE1hcmsgdGhlIGRldmljZSBmb3IgcmVtb3ZpbmcgdGhlIGJhY2tpbmcgZGV2aWNlIG9uIGxhc3QgY2xvc2UuXFxuMTIwNjpcXHRcXHQgKiBJZiB3ZSBhcmUgdGhlIG9ubHkgb3BlbmVyLCBhbHNvIHN3aXRjaCB0aGUgc3RhdGUgdG8gcm91bmRvd24gaGVyZSB0b1xcbjEyMDc6XFx0XFx0ICogcHJldmVudCBuZXcgb3BlbmVycyBmcm9tIGNvbWluZyBpbi5cXG4xMjA4OlxcdFxcdCAqL1xcbjEyMDk6XFx0XFxuMTIxMDpcXHRcXHRsby1cXHUwMDNlbG9fZmxhZ3MgfD0gTE9fRkxBR1NfQVVUT0NMRUFSO1xcbjEyMTE6XFx0XFx0aWYgKGRpc2tfb3BlbmVycyhsby1cXHUwMDNlbG9fZGlzaykgPT0gMSlcXG4xMjEyOlxcdFxcdFxcdFdSSVRFX09OQ0UobG8tXFx1MDAzZWxvX3N0YXRlLCBMb19ydW5kb3duKTtcXG4xMjEzOlxcdFxcdGxvb3BfZ2xvYmFsX3VubG9jayhsbywgdHJ1ZSk7XFxuMTIxNDpcXHRcXG4xMjE1OlxcdFxcdHJldHVybiAwO1xcbjEyMTY6XFx0fVxcbjEyMTc6XFx0XFxuMTIxODpcXHRzdGF0aWMgaW50XFxuMTIxOTpcXHRsb29wX3NldF9zdGF0dXMoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgY29uc3Qgc3RydWN0IGxvb3BfaW5mbzY0ICppbmZvKVxcbjEyMjA6XFx0e1xcbjEyMjE6XFx0XFx0aW50IGVycjtcXG4xMjIyOlxcdFxcdGJvb2wgcGFydHNjYW4gPSBmYWxzZTtcXG4xMjIzOlxcdFxcdGJvb2wgc2l6ZV9jaGFuZ2VkID0gZmFsc2U7XFxuMTIyNDpcXHRcXHR1bnNpZ25lZCBpbnQgbWVtZmxhZ3M7XFxuMTIyNTpcXHRcXG4xMjI2OlxcdFxcdGVyciA9IG11dGV4X2xvY2tfa2lsbGFibGUoXFx1MDAyNmxvLVxcdTAwM2Vsb19tdXRleCk7XFxuMTIyNzpcXHRcXHRpZiAoZXJyKVxcbjEyMjg6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4xMjI5OlxcdFxcdGlmIChsby1cXHUwMDNlbG9fc3RhdGUgIT0gTG9fYm91bmQpIHtcXG4xMjMwOlxcdFxcdFxcdGVyciA9IC1FTlhJTztcXG4xMjMxOlxcdFxcdFxcdGdvdG8gb3V0X3VubG9jaztcXG4xMjMyOlxcdFxcdH1cXG4xMjMzOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMzoyMDoxOS4zOTk0NjQ3NjJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQyODEzNDY5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEF1dG9jbGVhciBMb29wIGFuZCBEaXNrIFJlbGVhc2UqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYGxvb3BfY2xyX2ZkYCBmdW5jdGlvbiwgYW5kIGl0J3Mgbm90IGFzIHN0cmFpZ2h0Zm9yd2FyZCBhcyBJIGluaXRpYWxseSB0aG91Z2h0LiBJdCBkb2Vzbid0IGFjdHVhbGx5ICpkaXJlY3RseSogY2FsbCBgX19sb29wX2Nscl9mZGAuIEluc3RlYWQsIGl0IHNldHMgdGhlIGBMT19GTEFHU19BVVRPQ0xFQVJgIGZsYWcuIEhtbSwgYW5kIGl0IHRyYW5zaXRpb25zIHRoZSBsb29wJ3Mgc3RhdGUgdG8gYExvX3J1bmRvd25gLiBJbnRlcmVzdGluZy4gVGhhdCBtZWFucyB0aGUgcmVhbCB3b3JrIGlzIGRlZmVycmVkLlxuXG5TbywgdGhlIGNsZWFudXAgaXMgYWN0dWFsbHkgdHJpZ2dlcmVkIGJ5IGBsb19yZWxlYXNlYCwgd2hpY2ggaXMgdGhlIG9uZSB0aGF0ICpldmVudHVhbGx5KiBjYWxscyBgX19sb29wX2Nscl9mZGAsIGFuZCBvbmx5IHdoZW4gYGRpc2tfb3BlbmVyc2AgZGVjcmVtZW50cyB0byB6ZXJvLiBUaGF0IG1ha2VzIHNlbnNlIGZyb20gYSByZXNvdXJjZSBtYW5hZ2VtZW50IHBlcnNwZWN0aXZlIC0gd2Ugb25seSB3YW50IHRvIGNsZWFyIHRoZSBmaWxlIGRlc2NyaXB0b3Igd2hlbiB0aGUgbG9vcCBkZXZpY2UgaXMgbm8gbG9uZ2VyIGFjdGl2ZWx5IGJlaW5nIHVzZWQgYnkgYW55dGhpbmcuIFxuXG5BbHJpZ2h0LCBsZXQncyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhhdCBgbG9fcmVsZWFzZWAgZnVuY3Rpb24gbm93IGFuZCBjb25maXJtIHRoaXMgZmxvdy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHByZWNpc2UgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGlzIGBfX2xvb3BfY2xyX2ZkYCBjYWxsIGlzIGZpbmFsbHkgZXhlY3V0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNTcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAzOjIwOjIyLjgyNzYwMTc4MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjI2OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ibG9jay9sb29wLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTcyMixcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTcyMjpcXHRzdGF0aWMgdm9pZCBsb19yZWxlYXNlKHN0cnVjdCBnZW5kaXNrICpkaXNrKVxcbjE3MjM6XFx0e1xcbjE3MjQ6XFx0XFx0c3RydWN0IGxvb3BfZGV2aWNlICpsbyA9IGRpc2stXFx1MDAzZXByaXZhdGVfZGF0YTtcXG4xNzI1OlxcdFxcdGJvb2wgbmVlZF9jbGVhciA9IGZhbHNlO1xcbjE3MjY6XFx0XFxuMTcyNzpcXHRcXHRpZiAoZGlza19vcGVuZXJzKGRpc2spIFxcdTAwM2UgMClcXG4xNzI4OlxcdFxcdFxcdHJldHVybjtcXG4xNzI5OlxcdFxcdC8qXFxuMTczMDpcXHRcXHQgKiBDbGVhciB0aGUgYmFja2luZyBkZXZpY2UgaW5mb3JtYXRpb24gaWYgdGhpcyBpcyB0aGUgbGFzdCBjbG9zZSBvZlxcbjE3MzE6XFx0XFx0ICogYSBkZXZpY2UgdGhhdCdzIGJlZW4gbWFya2VkIGZvciBhdXRvIGNsZWFyLCBvciBvbiB3aGljaCBMT09QX0NMUl9GRFxcbjE3MzI6XFx0XFx0ICogaGFzIGJlZW4gY2FsbGVkLlxcbjE3MzM6XFx0XFx0ICovXFxuMTczNDpcXHRcXG4xNzM1OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmxvLVxcdTAwM2Vsb19tdXRleCk7XFxuMTczNjpcXHRcXHRpZiAobG8tXFx1MDAzZWxvX3N0YXRlID09IExvX2JvdW5kIFxcdTAwMjZcXHUwMDI2IChsby1cXHUwMDNlbG9fZmxhZ3MgXFx1MDAyNiBMT19GTEFHU19BVVRPQ0xFQVIpKVxcbjE3Mzc6XFx0XFx0XFx0V1JJVEVfT05DRShsby1cXHUwMDNlbG9fc3RhdGUsIExvX3J1bmRvd24pO1xcbjE3Mzg6XFx0XFxuMTczOTpcXHRcXHRuZWVkX2NsZWFyID0gKGxvLVxcdTAwM2Vsb19zdGF0ZSA9PSBMb19ydW5kb3duKTtcXG4xNzQwOlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2bG8tXFx1MDAzZWxvX211dGV4KTtcXG4xNzQxOlxcdFxcbjE3NDI6XFx0XFx0aWYgKG5lZWRfY2xlYXIpXFxuMTc0MzpcXHRcXHRcXHRfX2xvb3BfY2xyX2ZkKGxvKTtcXG4xNzQ0OlxcdH1cXG4xNzQ1OlxcdFxcbjE3NDY6XFx0c3RhdGljIHZvaWQgbG9fZnJlZV9kaXNrKHN0cnVjdCBnZW5kaXNrICpkaXNrKVxcbjE3NDc6XFx0e1xcbjE3NDg6XFx0XFx0c3RydWN0IGxvb3BfZGV2aWNlICpsbyA9IGRpc2stXFx1MDAzZXByaXZhdGVfZGF0YTtcXG4xNzQ5OlxcdFxcbjE3NTA6XFx0XFx0aWYgKGxvLVxcdTAwM2V3b3JrcXVldWUpXFxuMTc1MTpcXHRcXHRcXHRkZXN0cm95X3dvcmtxdWV1ZShsby1cXHUwMDNld29ya3F1ZXVlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDM6MjA6MjIuODI3NzI3MjcxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNjk5MDY5OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTG9vcCBEZXZpY2UgVGVhcmRvd24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCwgcmlnaHQgb2ZmIHRoZSBiYXQsIGl0J3MgY2xlYXIgYF9fbG9vcF9jbHJfZmRgIGlzIHRoZSBjcml0aWNhbCBmdW5jdGlvbiBoZXJlIOKAkyBpdCdzIHRoZSBvbmUgcmVzcG9uc2libGUgZm9yIGNsZWFyaW5nIHRoZSBsb29wIGRldmljZS4gVGhlIHBhdGNoIGZvcmNlcyBhbiB1bmNvbmRpdGlvbmFsIGNhbGwgdG8gYGJkZXZfZGlza19jaGFuZ2VkKGxvLVx1MDAzZWxvX2Rpc2ssIGZhbHNlKWAuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFuZCBpbXBhY3RzIHBhcnRpdGlvbiBzY2FubmluZyBhbmQgdGVhcmRvd24sIHBhcnRpY3VsYXJseSBvbiBsb29wIGRldmljZXMuIE15IGd1dCBzYXlzIHRoaXMgaXMgd29ydGggYSBkZWVwZXIgbG9vayB3aXRoIGZ1enppbmcuXG5cbk15IHByaW1hcnkgZm9jdXMgZm9yIGZ1enppbmcgd2lsbCBiZSBvbiBgX19sb29wX2Nscl9mZGAsIGBsb19yZWxlYXNlYCwgYW5kIHBvc3NpYmx5IGBsb29wX2Nscl9mZGAuIEZyb20gYSBjb25maWcgcGVyc3BlY3RpdmUsIGBCTEtfREVWX0xPT1BgIGlzIHRoZSBvbmx5IG9uZSBJIG5lZWQgdG8gY29uc2lkZXI7IEkgZG9uJ3Qgc2VlIGFueSBkZXBlbmRlbmNpZXMgdGhhdCB3b3VsZCByZXF1aXJlIGFkZGl0aW9uYWwgY29uZmlncy5cblxuVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIGFsdGVycyB0aGUgbG9vcCBkZXZpY2UgdGVhcmRvd24gcHJvY2Vzcywgc3BlY2lmaWNhbGx5IHdpdGhpbiBgX19sb29wX2Nscl9mZGAuIEJ5IG1ha2luZyBwYXJ0aXRpb24gcmVtb3ZhbCB1bmNvbmRpdGlvbmFsLCBpdCBieXBhc3NlcyB0aGUgcHJldmlvdXMgY2hlY2tzIHJlbGF0ZWQgdG8gYExPX0ZMQUdTX1BBUlRTQ0FOYC4gVGhpcyBhZmZlY3RzIGNvcmUgYmxvY2sgZGV2aWNlIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIGNvbW1vbiBsb29wYmFjayBkZXZpY2UgaW9jdGxzIGFuZCBmaWxlIG9wZXJhdGlvbnMuIEl0J3MgYSBmdW5kYW1lbnRhbCBjaGFuZ2UgaW4gdGhlIHRlYXJkb3duIHBhdGguXG5cbkxldCBtZSBkb3VibGUtY2hlY2s6IHllcCwgYGJkZXZfZGlza19jaGFuZ2VkYCBpcyB0aGUgY29ycmVjdCBmdW5jdGlvbiBuYW1lIGFzIGl0IGlzIGluIHRoZSBwYXRjaC4gQSBxdWljayBzZWFyY2ggb2YgdGhlIGNvZGUgY29uZmlybXMgYF9fbG9vcF9jbHJfZmRgIGlzIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBgTE9PUF9DTFJfRkRgIGlvY3RsIG9yLCBhcyBhIG1vcmUgc3VidGxlIHRyaWdnZXIsIHNpbXBseSBjbG9zaW5nIHRoZSBsYXN0IGZpbGUgZGVzY3JpcHRvciBhc3NvY2lhdGVkIHdpdGggYW4gYXV0by1jbGVhcmluZyBsb29wIGRldmljZS4gVGhpcyBtZWFucyBpdCdzIGRlZmluaXRlbHkgYWNjZXNzaWJsZSwgZXNwZWNpYWxseSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyBpdCBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5JbiBzdW1tYXJ5OiBJJ20gbWFya2luZyB0aGlzIGFzIFwiV29ydGhGdXp6aW5nOiB0cnVlXCIsIHdpdGggXCJGb2N1c1N5bWJvbHM6IGBfX2xvb3BfY2xyX2ZkYCwgYGxvX3JlbGVhc2VgLCBgbG9vcF9jbHJfZmRgXCIsIGFuZCBcIkVuYWJsZUNvbmZpZ3M6IGBCTEtfREVWX0xPT1BgXCIuIFRoZSBcIlJlYXNvbmluZ1wiIGlzIHRoYXQgdGhlIHBhdGNoIGZvcmNlcyB1bmNvbmRpdGlvbmFsIHBhcnRpdGlvbiByZW1vdmFsIGR1cmluZyBsb29wIGRldmljZSB0ZWFyZG93biwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gYmxvY2sgZGV2aWNlIGxvZ2ljIGFuZCBhY2Nlc3NpYmxlIHZpYSBpb2N0bHMvZmlsZSBvcGVyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTU0LCJPdXRwdXRUb2tlbnMiOjEyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAzOjIwOjI5Ljg5NzYzNjcxOVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0Njg1MzU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX0xPT1BcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2xvb3BfY2xyX2ZkXCIsXG4gICAgXCJsb19yZWxlYXNlXCIsXG4gICAgXCJsb29wX2Nscl9mZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0ZWFyZG93biBwYXRoIG9mIGxvb3AgZGV2aWNlcyAoYF9fbG9vcF9jbHJfZmRgKSwgbWFraW5nIHBhcnRpdGlvbiByZW1vdmFsIHVuY29uZGl0aW9uYWwgZXZlbiB3aGVuIGBMT19GTEFHU19QQVJUU0NBTmAgaXMgbm90IHNldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYmxvY2sgZGV2aWNlIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIGxvb3BiYWNrIGRldmljZSBpb2N0bHMgYW5kIGZpbGUgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX0xPT1BcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2xvb3BfY2xyX2ZkXCIsXG4gICAgXCJsb19yZWxlYXNlXCIsXG4gICAgXCJsb29wX2Nscl9mZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0ZWFyZG93biBwYXRoIG9mIGxvb3AgZGV2aWNlcyAoYF9fbG9vcF9jbHJfZmRgKSwgbWFraW5nIHBhcnRpdGlvbiByZW1vdmFsIHVuY29uZGl0aW9uYWwgZXZlbiB3aGVuIGBMT19GTEFHU19QQVJUU0NBTmAgaXMgbm90IHNldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYmxvY2sgZGV2aWNlIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIGxvb3BiYWNrIGRldmljZSBpb2N0bHMgYW5kIGZpbGUgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowcqlg5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-16 02:51:00 +0000 UTC FinishedAt: 2026-07-16 03:20:31 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "a13c140cc289c0b7b3770bce5b3ad42ab35074aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_LOOP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "a13c140cc289c0b7b3770bce5b3ad42ab35074aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_LOOP" ], "series_id": "4be63bfd-15df-40f9-94c0-d8dab402a4da" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "__loop_clr_fd", "lo_release", "loop_clr_fd" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE2IDAzOjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfTE9PUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fbG9vcF9jbHJfZmQmIzM0OywKICAgICYjMzQ7bG9fcmVsZWFzZSYjMzQ7LAogICAgJiMzNDtsb29wX2Nscl9mZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdGVhcmRvd24gcGF0aCBvZiBsb29wIGRldmljZXMgKGBfX2xvb3BfY2xyX2ZkYCksIG1ha2luZyBwYXJ0aXRpb24gcmVtb3ZhbCB1bmNvbmRpdGlvbmFsIGV2ZW4gd2hlbiBgTE9fRkxBR1NfUEFSVFNDQU5gIGlzIG5vdCBzZXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGJsb2NrIGRldmljZSBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBsb29wYmFjayBkZXZpY2UgaW9jdGxzIGFuZCBmaWxlIG9wZXJhdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDM6MjA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiNjU2MDU4ZDVmYjllZWNlOWUzMWFjYzJlZjk2M2NlNGE0YjJkZWU0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMTYgMDM6MjA6MDEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuY1xuaW5kZXggMzEwZGUwNDYzYmViMTQuLjFmYWVjZWYzMzAwOTJiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9sb29wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svbG9vcC5jXG5AQCAtMTExMyw2ICYjNDM7MTExMyw3IEBAIHN0YXRpYyB2b2lkIF9fbG9vcF9jbHJfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbylcbiBcdHN0cnVjdCBxdWV1ZV9saW1pdHMgbGltO1xuIFx0c3RydWN0IGZpbGUgKmZpbHA7XG4gXHRnZnBfdCBnZnAgPSBsby1cdTAwM2VvbGRfZ2ZwX21hc2s7XG4mIzQzO1x0aW50IGVycjtcbiBcbiBcdHNwaW5fbG9ja19pcnEoXHUwMDI2bG8tXHUwMDNlbG9fbG9jayk7XG4gXHRmaWxwID0gbG8tXHUwMDNlbG9fYmFja2luZ19maWxlO1xuQEAgLTExNDYsMjYgJiM0MzsxMTQ3LDIxIEBAIHN0YXRpYyB2b2lkIF9fbG9vcF9jbHJfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbylcbiBcbiBcdGRpc2tfZm9yY2VfbWVkaWFfY2hhbmdlKGxvLVx1MDAzZWxvX2Rpc2spO1xuIFxuLVx0aWYgKGxvLVx1MDAzZWxvX2ZsYWdzIFx1MDAyNiBMT19GTEFHU19QQVJUU0NBTikge1xuLVx0XHRpbnQgZXJyO1xuLVxuLVx0XHQvKlxuLVx0XHQgKiBvcGVuX211dGV4IGhhcyBiZWVuIGhlbGQgYWxyZWFkeSBpbiByZWxlYXNlIHBhdGgsIHNvIGRvbiYjMzk7dFxuLVx0XHQgKiBhY3F1aXJlIGl0IGlmIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGluIHN1Y2ggY2FzZS5cbi1cdFx0ICpcbi1cdFx0ICogSWYgdGhlIHJlcmVhZCBwYXJ0aXRpb24gaXNuJiMzOTt0IGZyb20gcmVsZWFzZSBwYXRoLCBsb19yZWZjbnRcbi1cdFx0ICogbXVzdCBiZSBhdCBsZWFzdCBvbmUgYW5kIGl0IGNhbiBvbmx5IGJlY29tZSB6ZXJvIHdoZW4gdGhlXG4tXHRcdCAqIGN1cnJlbnQgaG9sZGVyIGlzIHJlbGVhc2VkLlxuLVx0XHQgKi9cbi1cdFx0ZXJyID0gYmRldl9kaXNrX2NoYW5nZWQobG8tXHUwMDNlbG9fZGlzaywgZmFsc2UpO1xuLVx0XHRpZiAoZXJyKVxuLVx0XHRcdHByX3dhcm4oXCYjMzQ7JXM6IHBhcnRpdGlvbiBzY2FuIG9mIGxvb3AlZCBmYWlsZWQgKHJjPSVkKVxcblwmIzM0Oyxcbi1cdFx0XHRcdF9fZnVuY19fLCBsby1cdTAwM2Vsb19udW1iZXIsIGVycik7XG4tXHRcdC8qIERldmljZSBpcyBnb25lLCBubyBwb2ludCBpbiByZXR1cm5pbmcgZXJyb3IgKi9cbi1cdH1cbiYjNDM7XHQvKlxuJiM0MztcdCAqIFJlbW92ZSBhbGwgcGFydGl0aW9ucywgaW5jbHVkaW5nIHBhcnRpdGlvbnMgYWRkZWQgbWFudWFsbHkgd2l0aFxuJiM0MztcdCAqIEJMS1BHLCB3aGljaCBtYXkgZXhpc3QgZXZlbiBpZiBMT19GTEFHU19QQVJUU0NBTiBpcyBub3Qgc2V0LlxuJiM0MztcdCAqXG4mIzQzO1x0ICogb3Blbl9tdXRleCBoYXMgYmVlbiBoZWxkIGFscmVhZHkgaW4gcmVsZWFzZSBwYXRoLCBzbyBkb24mIzM5O3QgYWNxdWlyZVxuJiM0MztcdCAqIGl0IGhlcmUuXG4mIzQzO1x0ICovXG4mIzQzO1x0ZXJyID0gYmRldl9kaXNrX2NoYW5nZWQobG8tXHUwMDNlbG9fZGlzaywgZmFsc2UpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRwcl93YXJuKFwmIzM0OyVzOiBwYXJ0aXRpb24gc2NhbiBvZiBsb29wJWQgZmFpbGVkIChyYz0lZClcXG5cJiMzNDssXG4mIzQzO1x0XHRcdF9fZnVuY19fLCBsby1cdTAwM2Vsb19udW1iZXIsIGVycik7XG4mIzQzO1x0LyogRGV2aWNlIGlzIGdvbmUsIG5vIHBvaW50IGluIHJldHVybmluZyBlcnJvciAqL1xuIFxuIFx0Lypcbi1cdCAqIGxvLVx1MDAzZWxvX3N0YXRlIGlzIHNldCB0byBMb191bmJvdW5kIGhlcmUgYWZ0ZXIgYWJvdmUgcGFydHNjYW4gaGFzXG4mIzQzO1x0ICogbG8tXHUwMDNlbG9fc3RhdGUgaXMgc2V0IHRvIExvX3VuYm91bmQgaGVyZSBhZnRlciByZW1vdmluZyBwYXJ0aXRpb25zIGhhc1xuIFx0ICogZmluaXNoZWQuIFRoZXJlIGNhbm5vdCBiZSBhbnlib2R5IGVsc2UgZW50ZXJpbmcgX19sb29wX2Nscl9mZCgpIGFzXG4gXHQgKiBMb19ydW5kb3duIHN0YXRlIHByb3RlY3RzIHVzIGZyb20gYWxsIHRoZSBvdGhlciBwbGFjZXMgdHJ5aW5nIHRvXG4gXHQgKiBjaGFuZ2UgdGhlICYjMzk7bG8mIzM5OyBkZXZpY2UuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDM6MjA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9MT09QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19sb29wX2Nscl9mZCYjMzQ7LAogICAgJiMzNDtsb19yZWxlYXNlJiMzNDssCiAgICAmIzM0O2xvb3BfY2xyX2ZkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0ZWFyZG93biBwYXRoIG9mIGxvb3AgZGV2aWNlcyAoYF9fbG9vcF9jbHJfZmRgKSwgbWFraW5nIHBhcnRpdGlvbiByZW1vdmFsIHVuY29uZGl0aW9uYWwgZXZlbiB3aGVuIGBMT19GTEFHU19QQVJUU0NBTmAgaXMgbm90IHNldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYmxvY2sgZGV2aWNlIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIGxvb3BiYWNrIGRldmljZSBpb2N0bHMgYW5kIGZpbGUgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjY1NjA1OGQ1ZmI5ZWVjZTllMzFhY2MyZWY5NjNjZTRhNGIyZGVlNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDE2IDAzOjIwOjAxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuYwppbmRleCAzMTBkZTA0NjNiZWIxNC4uMWZhZWNlZjMzMDA5MmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svbG9vcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svbG9vcC5jCkBAIC0xMTEzLDYgJiM0MzsxMTEzLDcgQEAgc3RhdGljIHZvaWQgX19sb29wX2Nscl9mZChzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvKQogCXN0cnVjdCBxdWV1ZV9saW1pdHMgbGltOwogCXN0cnVjdCBmaWxlICpmaWxwOwogCWdmcF90IGdmcCA9IGxvLSZndDtvbGRfZ2ZwX21hc2s7CiYjNDM7CWludCBlcnI7CiAKIAlzcGluX2xvY2tfaXJxKCZhbXA7bG8tJmd0O2xvX2xvY2spOwogCWZpbHAgPSBsby0mZ3Q7bG9fYmFja2luZ19maWxlOwpAQCAtMTE0NiwyNiAmIzQzOzExNDcsMjEgQEAgc3RhdGljIHZvaWQgX19sb29wX2Nscl9mZChzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvKQogCiAJZGlza19mb3JjZV9tZWRpYV9jaGFuZ2UobG8tJmd0O2xvX2Rpc2spOwogCi0JaWYgKGxvLSZndDtsb19mbGFncyAmYW1wOyBMT19GTEFHU19QQVJUU0NBTikgewotCQlpbnQgZXJyOwotCi0JCS8qCi0JCSAqIG9wZW5fbXV0ZXggaGFzIGJlZW4gaGVsZCBhbHJlYWR5IGluIHJlbGVhc2UgcGF0aCwgc28gZG9uJiMzOTt0Ci0JCSAqIGFjcXVpcmUgaXQgaWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gc3VjaCBjYXNlLgotCQkgKgotCQkgKiBJZiB0aGUgcmVyZWFkIHBhcnRpdGlvbiBpc24mIzM5O3QgZnJvbSByZWxlYXNlIHBhdGgsIGxvX3JlZmNudAotCQkgKiBtdXN0IGJlIGF0IGxlYXN0IG9uZSBhbmQgaXQgY2FuIG9ubHkgYmVjb21lIHplcm8gd2hlbiB0aGUKLQkJICogY3VycmVudCBob2xkZXIgaXMgcmVsZWFzZWQuCi0JCSAqLwotCQllcnIgPSBiZGV2X2Rpc2tfY2hhbmdlZChsby0mZ3Q7bG9fZGlzaywgZmFsc2UpOwotCQlpZiAoZXJyKQotCQkJcHJfd2FybigmIzM0OyVzOiBwYXJ0aXRpb24gc2NhbiBvZiBsb29wJWQgZmFpbGVkIChyYz0lZClcbiYjMzQ7LAotCQkJCV9fZnVuY19fLCBsby0mZ3Q7bG9fbnVtYmVyLCBlcnIpOwotCQkvKiBEZXZpY2UgaXMgZ29uZSwgbm8gcG9pbnQgaW4gcmV0dXJuaW5nIGVycm9yICovCi0JfQomIzQzOwkvKgomIzQzOwkgKiBSZW1vdmUgYWxsIHBhcnRpdGlvbnMsIGluY2x1ZGluZyBwYXJ0aXRpb25zIGFkZGVkIG1hbnVhbGx5IHdpdGgKJiM0MzsJICogQkxLUEcsIHdoaWNoIG1heSBleGlzdCBldmVuIGlmIExPX0ZMQUdTX1BBUlRTQ0FOIGlzIG5vdCBzZXQuCiYjNDM7CSAqCiYjNDM7CSAqIG9wZW5fbXV0ZXggaGFzIGJlZW4gaGVsZCBhbHJlYWR5IGluIHJlbGVhc2UgcGF0aCwgc28gZG9uJiMzOTt0IGFjcXVpcmUKJiM0MzsJICogaXQgaGVyZS4KJiM0MzsJICovCiYjNDM7CWVyciA9IGJkZXZfZGlza19jaGFuZ2VkKGxvLSZndDtsb19kaXNrLCBmYWxzZSk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlwcl93YXJuKCYjMzQ7JXM6IHBhcnRpdGlvbiBzY2FuIG9mIGxvb3AlZCBmYWlsZWQgKHJjPSVkKVxuJiMzNDssCiYjNDM7CQkJX19mdW5jX18sIGxvLSZndDtsb19udW1iZXIsIGVycik7CiYjNDM7CS8qIERldmljZSBpcyBnb25lLCBubyBwb2ludCBpbiByZXR1cm5pbmcgZXJyb3IgKi8KIAogCS8qCi0JICogbG8tJmd0O2xvX3N0YXRlIGlzIHNldCB0byBMb191bmJvdW5kIGhlcmUgYWZ0ZXIgYWJvdmUgcGFydHNjYW4gaGFzCiYjNDM7CSAqIGxvLSZndDtsb19zdGF0ZSBpcyBzZXQgdG8gTG9fdW5ib3VuZCBoZXJlIGFmdGVyIHJlbW92aW5nIHBhcnRpdGlvbnMgaGFzCiAJICogZmluaXNoZWQuIFRoZXJlIGNhbm5vdCBiZSBhbnlib2R5IGVsc2UgZW50ZXJpbmcgX19sb29wX2Nscl9mZCgpIGFzCiAJICogTG9fcnVuZG93biBzdGF0ZSBwcm90ZWN0cyB1cyBmcm9tIGFsbCB0aGUgb3RoZXIgcGxhY2VzIHRyeWluZyB0bwogCSAqIGNoYW5nZSB0aGUgJiMzOTtsbyYjMzk7IGRldmljZS4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDM6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMxMgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBMb29wIERldmljZSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvYmxvY2svbG9vcC5jYC4gSXQmIzM5O3MgZm9jdXNlZCBvbiBtb2RpZnlpbmcgdGhlIGBfX2xvb3BfY2xyX2ZkYCBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IHJlbW92aW5nIGEgY29uZGl0aW9uYWwgY2hlY2suIEJlZm9yZSwgd2UgaGFkIHRoaXMgY2hlY2s6IGBpZiAobG8tJmd0O2xvX2ZsYWdzICZhbXA7IExPX0ZMQUdTX1BBUlRTQ0FOKWAsIGFuZCBpZiBpdCB3YXMgdHJ1ZSwgaXQgd291bGQgY2FsbCBgYmRldl9kaXNrX2NoYW5nZWQobG8tJmd0O2xvX2Rpc2ssIGZhbHNlKWAuIE5vdywgdGhlIHBhdGNoICpyZW1vdmVzKiB0aGF0IGNoZWNrLCBtZWFuaW5nIGBiZGV2X2Rpc2tfY2hhbmdlZGAgd2lsbCBiZSBjYWxsZWQgKnVuY29uZGl0aW9uYWxseSogZHVyaW5nIGEgbG9vcCBkZXZpY2UgY2xlYW51cC4KCk15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgaXMgZnVuY3Rpb25hbGx5IGEgc3RyYWlnaHRmb3J3YXJkIGNoYW5nZS4gVGhlIGV4ZWN1dGlvbiBmbG93IGlzIGFsdGVyZWQ7IHRoZSBjb2RlIGJsb2NrIHVuZGVyIHRoYXQgYGlmYCBzdGF0ZW1lbnQgaXMgbm8gbG9uZ2VyIGdhdGVkLiBJdCYjMzk7cyBnb2luZyB0byBhZmZlY3QgdGhlIHRlYXJkb3duIHByb2Nlc3MgZm9yIGxvb3AgZGV2aWNlcy4gU28sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYGJkZXZfZGlza19jaGFuZ2VkYCBkb2VzIGluIHRoaXMgY29udGV4dCBhbmQgd2h5IHRoaXMgY29uZGl0aW9uYWwgd2FzIG9yaWdpbmFsbHkgdGhlcmUuIEkgaW1tZWRpYXRlbHkgbmVlZCB0byBjb25zaWRlciBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4KCk5leHQgc3RlcDogSSYjMzk7bSBnb2luZyB0byBqdW1wIGludG8gdGhlIGNvZGUgaXRzZWxmLCBgZHJpdmVycy9ibG9jay9sb29wLmNgIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGBfX2xvb3BfY2xyX2ZkYCBmdW5jdGlvbiBpdHNlbGYsIGFsb25nIHdpdGggcmVsZXZhbnQgdXNlcyBvZiBgYmRldl9kaXNrX2NoYW5nZWRgLiBJJiMzOTtsbCBhbHNvIHdhbnQgdG8gZmluZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBsb29wIGRldmljZXMsIHByb2JhYmx5IGluIGBkcml2ZXJzL2Jsb2NrL0tjb25maWdgIG9yIHNpbWlsYXIgZmlsZXMsIHRvIHNlZSB3aGF0IHNldHRpbmdzIG1pZ2h0IGJlIGltcGFjdGVkIGJ5IHRoaXMgY2hhbmdlLiBVbmRlcnN0YW5kaW5nIHRoZSBjb25maWd1cmF0aW9uIHdpbGwgY2xhcmlmeSB0aGUgZW52aXJvbm1lbnQgdGhpcyBjaGFuZ2Ugb3BlcmF0ZXMgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDM6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJMS19ERVZfTE9PUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL0tjb25maWc9MTQwPWNvbmZpZyBCTEtfREVWX0NPV19DT01NT05cbi0tXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTQzLVxuZHJpdmVycy9ibG9jay9LY29uZmlnOjE0NDpjb25maWcgQkxLX0RFVl9MT09QXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTQ1LVx0dHJpc3RhdGUgXCYjMzQ7TG9vcGJhY2sgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTc4LVxuZHJpdmVycy9ibG9jay9LY29uZmlnOjE3OTpjb25maWcgQkxLX0RFVl9MT09QX01JTl9DT1VOVFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE4MC1cdGludCBcJiMzNDtOdW1iZXIgb2YgbG9vcCBkZXZpY2VzIHRvIHByZS1jcmVhdGUgYXQgaW5pdCB0aW1lXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDM6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk5NgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipMb29wIERldmljZSBDb25maWd1cmF0aW9uIGFuZCBGdW5jdGlvbiBBbmFseXNpcyoqCgpSaWdodCwgc28gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGxvb3AgZGV2aWNlIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseSBgQkxLX0RFVl9MT09QYC4gVGhhdCYjMzk7cyBhIGZhbWlsaWFyIGFyZWEuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIGBfX2xvb3BfY2xyX2ZkYCBmdW5jdGlvbi4gSG9sZCBvbiwgaXQmIzM5O3MgZGVjbGFyZWQgc3RhdGljLiBUaGF0JiMzOTtzIGEgYml0IG9mIGEgd3JpbmtsZSDigJMgdXN1YWxseSBtZWFucyBpdCYjMzk7cyBzY29wZWQgd2l0aGluIGEgc3BlY2lmaWMgdHJhbnNsYXRpb24gdW5pdC4gT2theSwgbm8gcHJvYmxlbSwgdGhpcyBtZWFucyB0aGF0IHRoZSBjYWxsIHRyZWUgdG8gdHJhY2UgaXMgbm90IGFsbCBlbmNvbXBhc3NpbmcgdG8gdGhlIHdob2xlIGtlcm5lbCBidWlsZC4gSW5zdGVhZCwgYSBzcGVjaWZpYyBtb2R1bGUgZmlsZSBtdXN0IGJlIGluc3BlY3RlZCB0byBmaW5kIHRoZSBjYWxsZXJzLiBUaW1lIHRvIHNlZSB3aGljaCBwYXJ0IG9mIHRoZSBjb2RlIGJhc2UgY2FsbHMgdGhhdCBmdW5jdGlvbiBhbmQgd2hhdCBjb250ZXh0IGl0IGlzIGJlaW5nIGNhbGxlZCBmcm9tLiBJJiMzOTtsbCBuZWVkIHRvIGlkZW50aWZ5IHRoZSBjYWxsIHNpdGVzIHRvIGZ1bGx5IHVuZGVyc3RhbmQgaXRzIHJvbGUgYW5kIGltcGFjdC4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fbG9vcF9jbHJfZmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL2xvb3AuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL2xvb3AuYz05NT1zdGF0aWMgREVGSU5FX01VVEVYKGxvb3BfdmFsaWRhdGVfbXV0ZXgpO1xuLS1cbmRyaXZlcnMvYmxvY2svbG9vcC5jLTEwNi0gKiBpc19sb29wX2RldmljZSgpIGlzIHRydWUsIHdlIG5lZWQgYSBnbG9iYWwgbG9jayBmb3Igc2VyaWFsaXppbmcgY29uY3VycmVudFxuZHJpdmVycy9ibG9jay9sb29wLmM6MTA3OiAqIGxvb3BfY29uZmlndXJlKCkvbG9vcF9jaGFuZ2VfZmQoKS9fX2xvb3BfY2xyX2ZkKCkgY2FsbHMuXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMDgtICovXG4tLVxuZHJpdmVycy9ibG9jay9sb29wLmM9OTc3PXN0YXRpYyBpbnQgbG9vcF9jb25maWd1cmUoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgYmxrX21vZGVfdCBtb2RlLFxuLS1cbmRyaXZlcnMvYmxvY2svbG9vcC5jLTExMTAtXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxMTExOnN0YXRpYyB2b2lkIF9fbG9vcF9jbHJfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbylcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTExMTIte1xuLS1cbmRyaXZlcnMvYmxvY2svbG9vcC5jLTExNjQtXHQgKiBsby1cdTAwM2Vsb19zdGF0ZSBpcyBzZXQgdG8gTG9fdW5ib3VuZCBoZXJlIGFmdGVyIHJlbW92aW5nIHBhcnRpdGlvbnMgaGFzXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxMTY1Olx0ICogZmluaXNoZWQuIFRoZXJlIGNhbm5vdCBiZSBhbnlib2R5IGVsc2UgZW50ZXJpbmcgX19sb29wX2Nscl9mZCgpIGFzXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMTY2LVx0ICogTG9fcnVuZG93biBzdGF0ZSBwcm90ZWN0cyB1cyBmcm9tIGFsbCB0aGUgb3RoZXIgcGxhY2VzIHRyeWluZyB0b1xuLS1cbmRyaXZlcnMvYmxvY2svbG9vcC5jPTE3MjI9c3RhdGljIHZvaWQgbG9fcmVsZWFzZShzdHJ1Y3QgZ2VuZGlzayAqZGlzaylcbi0tXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xNzQyLVx0aWYgKG5lZWRfY2xlYXIpXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxNzQzOlx0XHRfX2xvb3BfY2xyX2ZkKGxvKTtcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTE3NDQtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAzOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2NjEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBfX2xvb3BfY2xyX2ZkYCBVc2FnZSoqCgpPa2F5LCBzbyBgX19sb29wX2Nscl9mZGAgaXMgY2FsbGVkIGJ5IGBsb19yZWxlYXNlYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkmIzM5O3ZlIHNlZW4gdGhhdCByZWxhdGlvbnNoaXAgYmVmb3JlLiBCdXQgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBjYWxsIHNpdGVzLiBBIGxlYWsgb3IgYSBkb3VibGUtZnJlZSBjb3VsZCBiZSBsdXJraW5nIGlmIGl0JiMzOTtzIHVzZWQgZWxzZXdoZXJlLCBhbmQgSeKAmWQgY2F0Y2ggdGhhdCBmYXN0LiBJJiMzOTtsbCBuZWVkIHRvIGRpZyB0aHJvdWdoIHRoZSBjb2RlYmFzZSBhbmQgY29uZmlybSB0aGUgY2FsbGVyIGxpc3QgYW5kIGRvdWJsZSBjaGVjayBmb3IgYW55IGNhbGxzIG91dHNpZGUgYGxvX3JlbGVhc2VgLi4uIGJlc3QgdG8gYmUgdGhvcm91Z2ggaGVyZS4gQW55IG90aGVyIHBsYWNlcyB0aGlzIGlzIGJlaW5nIHVzZWQgY291bGQgYmUgYSBwb3RlbnRpYWwgcG9pbnQgb2YgaW50ZXJlc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDM6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19sb29wX2Nscl9mZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbG9vcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbG9vcC5jPTk1PXN0YXRpYyBERUZJTkVfTVVURVgobG9vcF92YWxpZGF0ZV9tdXRleCk7XG4tLVxuZHJpdmVycy9ibG9jay9sb29wLmMtMTA2LSAqIGlzX2xvb3BfZGV2aWNlKCkgaXMgdHJ1ZSwgd2UgbmVlZCBhIGdsb2JhbCBsb2NrIGZvciBzZXJpYWxpemluZyBjb25jdXJyZW50XG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxMDc6ICogbG9vcF9jb25maWd1cmUoKS9sb29wX2NoYW5nZV9mZCgpL19fbG9vcF9jbHJfZmQoKSBjYWxscy5cbmRyaXZlcnMvYmxvY2svbG9vcC5jLTEwOC0gKi9cbi0tXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYz05Nzc9c3RhdGljIGludCBsb29wX2NvbmZpZ3VyZShzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvLCBibGtfbW9kZV90IG1vZGUsXG4tLVxuZHJpdmVycy9ibG9jay9sb29wLmMtMTExMC1cbmRyaXZlcnMvYmxvY2svbG9vcC5jOjExMTE6c3RhdGljIHZvaWQgX19sb29wX2Nscl9mZChzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvKVxuZHJpdmVycy9ibG9jay9sb29wLmMtMTExMi17XG4tLVxuZHJpdmVycy9ibG9jay9sb29wLmMtMTE2NC1cdCAqIGxvLVx1MDAzZWxvX3N0YXRlIGlzIHNldCB0byBMb191bmJvdW5kIGhlcmUgYWZ0ZXIgcmVtb3ZpbmcgcGFydGl0aW9ucyBoYXNcbmRyaXZlcnMvYmxvY2svbG9vcC5jOjExNjU6XHQgKiBmaW5pc2hlZC4gVGhlcmUgY2Fubm90IGJlIGFueWJvZHkgZWxzZSBlbnRlcmluZyBfX2xvb3BfY2xyX2ZkKCkgYXNcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTExNjYtXHQgKiBMb19ydW5kb3duIHN0YXRlIHByb3RlY3RzIHVzIGZyb20gYWxsIHRoZSBvdGhlciBwbGFjZXMgdHJ5aW5nIHRvXG4tLVxuZHJpdmVycy9ibG9jay9sb29wLmM9MTcyMj1zdGF0aWMgdm9pZCBsb19yZWxlYXNlKHN0cnVjdCBnZW5kaXNrICpkaXNrKVxuLS1cbmRyaXZlcnMvYmxvY2svbG9vcC5jLTE3NDItXHRpZiAobmVlZF9jbGVhcilcbmRyaXZlcnMvYmxvY2svbG9vcC5jOjE3NDM6XHRcdF9fbG9vcF9jbHJfZmQobG8pO1xuZHJpdmVycy9ibG9jay9sb29wLmMtMTc0NC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDM6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI3MAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIERlZXBlciBpbnRvIHRoZSBBYnN0cmFjdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBpZGVudGlmaWVkIGBsb29wX2Nscl9mZGAgYXMgc29tZXRoaW5nIHJlbGF0ZWQgdG8gYF9fbG9vcF9jbHJfZmRgLiBNeSBpbnR1aXRpb24sIGJhc2VkIG9uIHRoZSBuYW1pbmcgY29udmVudGlvbiwgdGVsbHMgbWUgdGhleSYjMzk7cmUgbGlrZWx5IGludGVyY29ubmVjdGVkLiBJIG5lZWQgdG8gY29uZmlybSB0aGlzIGFzc3VtcHRpb24uIExldCYjMzk7cyBzdGFydCBieSBxdWlja2x5IHZlcmlmeWluZyBteSB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgYGxvb3BfY2xyX2ZkYCBpcyBkb2luZyBpbiBtb3JlIGRldGFpbC4gSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIGl0cyBpbXBsZW1lbnRhdGlvbiB0byBzZWUgaWYgaXQmIzM5O3MgYWN0aW5nIGFzIGEgaGlnaGVyLWxldmVsIGFic3RyYWN0aW9uIHRoYXQgY2FsbHMgYF9fbG9vcF9jbHJfZmRgIHVuZGVyIHRoZSBob29kLiBJdCYjMzk7cyBhIGNvbW1vbiBwYXR0ZXJuLCBhbmQgYSBxdWljayBjaGVjayBvZiBgbG9vcF9jbHJfZmRgIHdpbGwgZ2l2ZSBtZSB0aGUgY2xhcml0eSBJIG5lZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xvb3BfY2xyX2ZkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9sb29wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9sb29wLmM9OTU9c3RhdGljIERFRklORV9NVVRFWChsb29wX3ZhbGlkYXRlX211dGV4KTtcbi0tXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMDYtICogaXNfbG9vcF9kZXZpY2UoKSBpcyB0cnVlLCB3ZSBuZWVkIGEgZ2xvYmFsIGxvY2sgZm9yIHNlcmlhbGl6aW5nIGNvbmN1cnJlbnRcbmRyaXZlcnMvYmxvY2svbG9vcC5jOjEwNzogKiBsb29wX2NvbmZpZ3VyZSgpL2xvb3BfY2hhbmdlX2ZkKCkvX19sb29wX2Nscl9mZCgpIGNhbGxzLlxuZHJpdmVycy9ibG9jay9sb29wLmMtMTA4LSAqL1xuLS1cbmRyaXZlcnMvYmxvY2svbG9vcC5jPTk3Nz1zdGF0aWMgaW50IGxvb3BfY29uZmlndXJlKHN0cnVjdCBsb29wX2RldmljZSAqbG8sIGJsa19tb2RlX3QgbW9kZSxcbi0tXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMTEwLVxuZHJpdmVycy9ibG9jay9sb29wLmM6MTExMTpzdGF0aWMgdm9pZCBfX2xvb3BfY2xyX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8pXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMTEyLXtcbi0tXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMTY0LVx0ICogbG8tXHUwMDNlbG9fc3RhdGUgaXMgc2V0IHRvIExvX3VuYm91bmQgaGVyZSBhZnRlciByZW1vdmluZyBwYXJ0aXRpb25zIGhhc1xuZHJpdmVycy9ibG9jay9sb29wLmM6MTE2NTpcdCAqIGZpbmlzaGVkLiBUaGVyZSBjYW5ub3QgYmUgYW55Ym9keSBlbHNlIGVudGVyaW5nIF9fbG9vcF9jbHJfZmQoKSBhc1xuZHJpdmVycy9ibG9jay9sb29wLmMtMTE2Ni1cdCAqIExvX3J1bmRvd24gc3RhdGUgcHJvdGVjdHMgdXMgZnJvbSBhbGwgdGhlIG90aGVyIHBsYWNlcyB0cnlpbmcgdG9cbi0tXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMTgzLVxuZHJpdmVycy9ibG9jay9sb29wLmM6MTE4NDpzdGF0aWMgaW50IGxvb3BfY2xyX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8pXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMTg1LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMTg5LVx0ICogU2luY2UgbG9faW9jdGwoKSBpcyBjYWxsZWQgd2l0aG91dCBsb2NrcyBoZWxkLCBpdCBpcyBwb3NzaWJsZSB0aGF0XG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxMTkwOlx0ICogbG9vcF9jb25maWd1cmUoKS9sb29wX2NoYW5nZV9mZCgpIGFuZCBsb29wX2Nscl9mZCgpIHJ1biBpbiBwYXJhbGxlbC5cbmRyaXZlcnMvYmxvY2svbG9vcC5jLTExOTEtXHQgKlxuLS1cbmRyaXZlcnMvYmxvY2svbG9vcC5jPTE1MDc9c3RhdGljIGludCBsb19pb2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXG4tLVxuZHJpdmVycy9ibG9jay9sb29wLmMtMTUzOC1cdGNhc2UgTE9PUF9DTFJfRkQ6XG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxNTM5Olx0XHRyZXR1cm4gbG9vcF9jbHJfZmQobG8pO1xuZHJpdmVycy9ibG9jay9sb29wLmMtMTU0MC1cdGNhc2UgTE9PUF9TRVRfU1RBVFVTOlxuLS1cbmRyaXZlcnMvYmxvY2svbG9vcC5jPTE3MjI9c3RhdGljIHZvaWQgbG9fcmVsZWFzZShzdHJ1Y3QgZ2VuZGlzayAqZGlzaylcbi0tXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xNzQyLVx0aWYgKG5lZWRfY2xlYXIpXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxNzQzOlx0XHRfX2xvb3BfY2xyX2ZkKGxvKTtcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTE3NDQtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMzoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTQ4CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBGdW5jdGlvbiBDYWxsIENoYWluKioKClJpZ2h0LCBzbyBgbG9vcF9jbHJfZmRg4oCmIHRoYXQgbmFtZSBzb3VuZHMgZmFtaWxpYXIuIEhtbSwgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBjYWxsaW5nIGBfX2xvb3BfY2xyX2ZkYC4gT2theSwgbGV0JiMzOTtzIHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBkZWZpbml0aW9uIG9mIGBsb29wX2Nscl9mZGAuIEkmIzM5O20gZ3Vlc3NpbmcgdGhlcmUmIzM5O3MgYSBnb29kIHJlYXNvbiBmb3IgdGhpcyBraW5kIG9mIGFic3RyYWN0aW9uOyBwZXJoYXBzIHNvbWUgcGxhdGZvcm0tc3BlY2lmaWMgZGV0YWlscyBvciBwb3RlbnRpYWxseSBzb21lIGludGVybmFsIGJvb2trZWVwaW5nIGhhcHBlbmluZyBpbiBgX19sb29wX2Nscl9mZGA/IEkmIzM5O20gY3VyaW91cyB3aGF0JiMzOTtzIGhhcHBlbmluZy4gUHJvYmFibHkgdGhlcmUgYXJlIHNvbWUgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbiBvciBzb21lIHNwZWNpZmljIGVkZ2UgY2FzZSB0aGUgaW5uZXIgbWV0aG9kIGlzIGhhbmRsaW5nLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgaXMganVzdCBhIHNpbXBsZSB3cmFwcGVyIG9yIGlmIHRoZXJlJiMzOTtzIHNvbWV0aGluZyBtb3JlIHRvIGl0LiBJIHdhbnQgdG8gY2hlY2sgaG93IHRoZSBhcmd1bWVudHMgYXJlIGJlaW5nIHBhc3NlZCwgaWYgdGhlcmUmIzM5O3MgYW55IHByZS1wcm9jZXNzaW5nLCBvciBhbnkgc3VidGxlIHNpZGUgZWZmZWN0cyBJIHNob3VsZCBiZSBhd2FyZSBvZi4gTGV0JiMzOTtzIGdldCB0byB0aGUgaW1wbGVtZW50YXRpb24gYW5kIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGdvaW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMzoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svbG9vcC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTE4NCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMTg0Olx0c3RhdGljIGludCBsb29wX2Nscl9mZChzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvKVxuMTE4NTpcdHtcbjExODY6XHRcdGludCBlcnI7XG4xMTg3Olx0XG4xMTg4Olx0XHQvKlxuMTE4OTpcdFx0ICogU2luY2UgbG9faW9jdGwoKSBpcyBjYWxsZWQgd2l0aG91dCBsb2NrcyBoZWxkLCBpdCBpcyBwb3NzaWJsZSB0aGF0XG4xMTkwOlx0XHQgKiBsb29wX2NvbmZpZ3VyZSgpL2xvb3BfY2hhbmdlX2ZkKCkgYW5kIGxvb3BfY2xyX2ZkKCkgcnVuIGluIHBhcmFsbGVsLlxuMTE5MTpcdFx0ICpcbjExOTI6XHRcdCAqIFRoZXJlZm9yZSwgdXNlIGdsb2JhbCBsb2NrIHdoZW4gc2V0dGluZyBMb19ydW5kb3duIHN0YXRlIGluIG9yZGVyIHRvXG4xMTkzOlx0XHQgKiBtYWtlIHN1cmUgdGhhdCBsb29wX3ZhbGlkYXRlX2ZpbGUoKSB3aWxsIGZhaWwgaWYgdGhlIFwmIzM0O3N0cnVjdCBmaWxlXCYjMzQ7XG4xMTk0Olx0XHQgKiB3aGljaCBsb29wX2NvbmZpZ3VyZSgpL2xvb3BfY2hhbmdlX2ZkKCkgZm91bmQgdmlhIGZnZXQoKSB3YXMgdGhpc1xuMTE5NTpcdFx0ICogbG9vcCBkZXZpY2UuXG4xMTk2Olx0XHQgKi9cbjExOTc6XHRcdGVyciA9IGxvb3BfZ2xvYmFsX2xvY2tfa2lsbGFibGUobG8sIHRydWUpO1xuMTE5ODpcdFx0aWYgKGVycilcbjExOTk6XHRcdFx0cmV0dXJuIGVycjtcbjEyMDA6XHRcdGlmIChsby1cdTAwM2Vsb19zdGF0ZSAhPSBMb19ib3VuZCkge1xuMTIwMTpcdFx0XHRsb29wX2dsb2JhbF91bmxvY2sobG8sIHRydWUpO1xuMTIwMjpcdFx0XHRyZXR1cm4gLUVOWElPO1xuMTIwMzpcdFx0fVxuMTIwNDpcdFx0LypcbjEyMDU6XHRcdCAqIE1hcmsgdGhlIGRldmljZSBmb3IgcmVtb3ZpbmcgdGhlIGJhY2tpbmcgZGV2aWNlIG9uIGxhc3QgY2xvc2UuXG4xMjA2Olx0XHQgKiBJZiB3ZSBhcmUgdGhlIG9ubHkgb3BlbmVyLCBhbHNvIHN3aXRjaCB0aGUgc3RhdGUgdG8gcm91bmRvd24gaGVyZSB0b1xuMTIwNzpcdFx0ICogcHJldmVudCBuZXcgb3BlbmVycyBmcm9tIGNvbWluZyBpbi5cbjEyMDg6XHRcdCAqL1xuMTIwOTpcdFxuMTIxMDpcdFx0bG8tXHUwMDNlbG9fZmxhZ3MgfD0gTE9fRkxBR1NfQVVUT0NMRUFSO1xuMTIxMTpcdFx0aWYgKGRpc2tfb3BlbmVycyhsby1cdTAwM2Vsb19kaXNrKSA9PSAxKVxuMTIxMjpcdFx0XHRXUklURV9PTkNFKGxvLVx1MDAzZWxvX3N0YXRlLCBMb19ydW5kb3duKTtcbjEyMTM6XHRcdGxvb3BfZ2xvYmFsX3VubG9jayhsbywgdHJ1ZSk7XG4xMjE0Olx0XG4xMjE1Olx0XHRyZXR1cm4gMDtcbjEyMTY6XHR9XG4xMjE3Olx0XG4xMjE4Olx0c3RhdGljIGludFxuMTIxOTpcdGxvb3Bfc2V0X3N0YXR1cyhzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvLCBjb25zdCBzdHJ1Y3QgbG9vcF9pbmZvNjQgKmluZm8pXG4xMjIwOlx0e1xuMTIyMTpcdFx0aW50IGVycjtcbjEyMjI6XHRcdGJvb2wgcGFydHNjYW4gPSBmYWxzZTtcbjEyMjM6XHRcdGJvb2wgc2l6ZV9jaGFuZ2VkID0gZmFsc2U7XG4xMjI0Olx0XHR1bnNpZ25lZCBpbnQgbWVtZmxhZ3M7XG4xMjI1Olx0XG4xMjI2Olx0XHRlcnIgPSBtdXRleF9sb2NrX2tpbGxhYmxlKFx1MDAyNmxvLVx1MDAzZWxvX211dGV4KTtcbjEyMjc6XHRcdGlmIChlcnIpXG4xMjI4Olx0XHRcdHJldHVybiBlcnI7XG4xMjI5Olx0XHRpZiAobG8tXHUwMDNlbG9fc3RhdGUgIT0gTG9fYm91bmQpIHtcbjEyMzA6XHRcdFx0ZXJyID0gLUVOWElPO1xuMTIzMTpcdFx0XHRnb3RvIG91dF91bmxvY2s7XG4xMjMyOlx0XHR9XG4xMjMzOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAzOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxNTcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEF1dG9jbGVhciBMb29wIGFuZCBEaXNrIFJlbGVhc2UqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgbG9vcF9jbHJfZmRgIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3Mgbm90IGFzIHN0cmFpZ2h0Zm9yd2FyZCBhcyBJIGluaXRpYWxseSB0aG91Z2h0LiBJdCBkb2VzbiYjMzk7dCBhY3R1YWxseSAqZGlyZWN0bHkqIGNhbGwgYF9fbG9vcF9jbHJfZmRgLiBJbnN0ZWFkLCBpdCBzZXRzIHRoZSBgTE9fRkxBR1NfQVVUT0NMRUFSYCBmbGFnLiBIbW0sIGFuZCBpdCB0cmFuc2l0aW9ucyB0aGUgbG9vcCYjMzk7cyBzdGF0ZSB0byBgTG9fcnVuZG93bmAuIEludGVyZXN0aW5nLiBUaGF0IG1lYW5zIHRoZSByZWFsIHdvcmsgaXMgZGVmZXJyZWQuCgpTbywgdGhlIGNsZWFudXAgaXMgYWN0dWFsbHkgdHJpZ2dlcmVkIGJ5IGBsb19yZWxlYXNlYCwgd2hpY2ggaXMgdGhlIG9uZSB0aGF0ICpldmVudHVhbGx5KiBjYWxscyBgX19sb29wX2Nscl9mZGAsIGFuZCBvbmx5IHdoZW4gYGRpc2tfb3BlbmVyc2AgZGVjcmVtZW50cyB0byB6ZXJvLiBUaGF0IG1ha2VzIHNlbnNlIGZyb20gYSByZXNvdXJjZSBtYW5hZ2VtZW50IHBlcnNwZWN0aXZlIC0gd2Ugb25seSB3YW50IHRvIGNsZWFyIHRoZSBmaWxlIGRlc2NyaXB0b3Igd2hlbiB0aGUgbG9vcCBkZXZpY2UgaXMgbm8gbG9uZ2VyIGFjdGl2ZWx5IGJlaW5nIHVzZWQgYnkgYW55dGhpbmcuIAoKQWxyaWdodCwgbGV0JiMzOTtzIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGF0IGBsb19yZWxlYXNlYCBmdW5jdGlvbiBub3cgYW5kIGNvbmZpcm0gdGhpcyBmbG93LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcHJlY2lzZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoaXMgYF9fbG9vcF9jbHJfZmRgIGNhbGwgaXMgZmluYWxseSBleGVjdXRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDM6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL2xvb3AuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3MjIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTcyMjpcdHN0YXRpYyB2b2lkIGxvX3JlbGVhc2Uoc3RydWN0IGdlbmRpc2sgKmRpc2spXG4xNzIzOlx0e1xuMTcyNDpcdFx0c3RydWN0IGxvb3BfZGV2aWNlICpsbyA9IGRpc2stXHUwMDNlcHJpdmF0ZV9kYXRhO1xuMTcyNTpcdFx0Ym9vbCBuZWVkX2NsZWFyID0gZmFsc2U7XG4xNzI2Olx0XG4xNzI3Olx0XHRpZiAoZGlza19vcGVuZXJzKGRpc2spIFx1MDAzZSAwKVxuMTcyODpcdFx0XHRyZXR1cm47XG4xNzI5Olx0XHQvKlxuMTczMDpcdFx0ICogQ2xlYXIgdGhlIGJhY2tpbmcgZGV2aWNlIGluZm9ybWF0aW9uIGlmIHRoaXMgaXMgdGhlIGxhc3QgY2xvc2Ugb2ZcbjE3MzE6XHRcdCAqIGEgZGV2aWNlIHRoYXQmIzM5O3MgYmVlbiBtYXJrZWQgZm9yIGF1dG8gY2xlYXIsIG9yIG9uIHdoaWNoIExPT1BfQ0xSX0ZEXG4xNzMyOlx0XHQgKiBoYXMgYmVlbiBjYWxsZWQuXG4xNzMzOlx0XHQgKi9cbjE3MzQ6XHRcbjE3MzU6XHRcdG11dGV4X2xvY2soXHUwMDI2bG8tXHUwMDNlbG9fbXV0ZXgpO1xuMTczNjpcdFx0aWYgKGxvLVx1MDAzZWxvX3N0YXRlID09IExvX2JvdW5kIFx1MDAyNlx1MDAyNiAobG8tXHUwMDNlbG9fZmxhZ3MgXHUwMDI2IExPX0ZMQUdTX0FVVE9DTEVBUikpXG4xNzM3Olx0XHRcdFdSSVRFX09OQ0UobG8tXHUwMDNlbG9fc3RhdGUsIExvX3J1bmRvd24pO1xuMTczODpcdFxuMTczOTpcdFx0bmVlZF9jbGVhciA9IChsby1cdTAwM2Vsb19zdGF0ZSA9PSBMb19ydW5kb3duKTtcbjE3NDA6XHRcdG11dGV4X3VubG9jayhcdTAwMjZsby1cdTAwM2Vsb19tdXRleCk7XG4xNzQxOlx0XG4xNzQyOlx0XHRpZiAobmVlZF9jbGVhcilcbjE3NDM6XHRcdFx0X19sb29wX2Nscl9mZChsbyk7XG4xNzQ0Olx0fVxuMTc0NTpcdFxuMTc0NjpcdHN0YXRpYyB2b2lkIGxvX2ZyZWVfZGlzayhzdHJ1Y3QgZ2VuZGlzayAqZGlzaylcbjE3NDc6XHR7XG4xNzQ4Olx0XHRzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvID0gZGlzay1cdTAwM2Vwcml2YXRlX2RhdGE7XG4xNzQ5Olx0XG4xNzUwOlx0XHRpZiAobG8tXHUwMDNld29ya3F1ZXVlKVxuMTc1MTpcdFx0XHRkZXN0cm95X3dvcmtxdWV1ZShsby1cdTAwM2V3b3JrcXVldWUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMzoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTU0CgkJCQkJCQlvdXRwdXQ6IDEyMgoJCQkJCQkJdGhvdWdodHM6IDM5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBMb29wIERldmljZSBUZWFyZG93biBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHJpZ2h0IG9mZiB0aGUgYmF0LCBpdCYjMzk7cyBjbGVhciBgX19sb29wX2Nscl9mZGAgaXMgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uIGhlcmUg4oCTIGl0JiMzOTtzIHRoZSBvbmUgcmVzcG9uc2libGUgZm9yIGNsZWFyaW5nIHRoZSBsb29wIGRldmljZS4gVGhlIHBhdGNoIGZvcmNlcyBhbiB1bmNvbmRpdGlvbmFsIGNhbGwgdG8gYGJkZXZfZGlza19jaGFuZ2VkKGxvLSZndDtsb19kaXNrLCBmYWxzZSlgLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgaW1wYWN0cyBwYXJ0aXRpb24gc2Nhbm5pbmcgYW5kIHRlYXJkb3duLCBwYXJ0aWN1bGFybHkgb24gbG9vcCBkZXZpY2VzLiBNeSBndXQgc2F5cyB0aGlzIGlzIHdvcnRoIGEgZGVlcGVyIGxvb2sgd2l0aCBmdXp6aW5nLgoKTXkgcHJpbWFyeSBmb2N1cyBmb3IgZnV6emluZyB3aWxsIGJlIG9uIGBfX2xvb3BfY2xyX2ZkYCwgYGxvX3JlbGVhc2VgLCBhbmQgcG9zc2libHkgYGxvb3BfY2xyX2ZkYC4gRnJvbSBhIGNvbmZpZyBwZXJzcGVjdGl2ZSwgYEJMS19ERVZfTE9PUGAgaXMgdGhlIG9ubHkgb25lIEkgbmVlZCB0byBjb25zaWRlcjsgSSBkb24mIzM5O3Qgc2VlIGFueSBkZXBlbmRlbmNpZXMgdGhhdCB3b3VsZCByZXF1aXJlIGFkZGl0aW9uYWwgY29uZmlncy4KClRoZSByZWFzb25pbmcgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCBhbHRlcnMgdGhlIGxvb3AgZGV2aWNlIHRlYXJkb3duIHByb2Nlc3MsIHNwZWNpZmljYWxseSB3aXRoaW4gYF9fbG9vcF9jbHJfZmRgLiBCeSBtYWtpbmcgcGFydGl0aW9uIHJlbW92YWwgdW5jb25kaXRpb25hbCwgaXQgYnlwYXNzZXMgdGhlIHByZXZpb3VzIGNoZWNrcyByZWxhdGVkIHRvIGBMT19GTEFHU19QQVJUU0NBTmAuIFRoaXMgYWZmZWN0cyBjb3JlIGJsb2NrIGRldmljZSBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBjb21tb24gbG9vcGJhY2sgZGV2aWNlIGlvY3RscyBhbmQgZmlsZSBvcGVyYXRpb25zLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIGNoYW5nZSBpbiB0aGUgdGVhcmRvd24gcGF0aC4KCkxldCBtZSBkb3VibGUtY2hlY2s6IHllcCwgYGJkZXZfZGlza19jaGFuZ2VkYCBpcyB0aGUgY29ycmVjdCBmdW5jdGlvbiBuYW1lIGFzIGl0IGlzIGluIHRoZSBwYXRjaC4gQSBxdWljayBzZWFyY2ggb2YgdGhlIGNvZGUgY29uZmlybXMgYF9fbG9vcF9jbHJfZmRgIGlzIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBgTE9PUF9DTFJfRkRgIGlvY3RsIG9yLCBhcyBhIG1vcmUgc3VidGxlIHRyaWdnZXIsIHNpbXBseSBjbG9zaW5nIHRoZSBsYXN0IGZpbGUgZGVzY3JpcHRvciBhc3NvY2lhdGVkIHdpdGggYW4gYXV0by1jbGVhcmluZyBsb29wIGRldmljZS4gVGhpcyBtZWFucyBpdCYjMzk7cyBkZWZpbml0ZWx5IGFjY2Vzc2libGUsIGVzcGVjaWFsbHkgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgaXQgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy4KCkluIHN1bW1hcnk6IEkmIzM5O20gbWFya2luZyB0aGlzIGFzICYjMzQ7V29ydGhGdXp6aW5nOiB0cnVlJiMzNDssIHdpdGggJiMzNDtGb2N1c1N5bWJvbHM6IGBfX2xvb3BfY2xyX2ZkYCwgYGxvX3JlbGVhc2VgLCBgbG9vcF9jbHJfZmRgJiMzNDssIGFuZCAmIzM0O0VuYWJsZUNvbmZpZ3M6IGBCTEtfREVWX0xPT1BgJiMzNDsuIFRoZSAmIzM0O1JlYXNvbmluZyYjMzQ7IGlzIHRoYXQgdGhlIHBhdGNoIGZvcmNlcyB1bmNvbmRpdGlvbmFsIHBhcnRpdGlvbiByZW1vdmFsIGR1cmluZyBsb29wIGRldmljZSB0ZWFyZG93biwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gYmxvY2sgZGV2aWNlIGxvZ2ljIGFuZCBhY2Nlc3NpYmxlIHZpYSBpb2N0bHMvZmlsZSBvcGVyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMzoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9MT09QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19sb29wX2Nscl9mZCYjMzQ7LAogICAgJiMzNDtsb19yZWxlYXNlJiMzNDssCiAgICAmIzM0O2xvb3BfY2xyX2ZkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0ZWFyZG93biBwYXRoIG9mIGxvb3AgZGV2aWNlcyAoYF9fbG9vcF9jbHJfZmRgKSwgbWFraW5nIHBhcnRpdGlvbiByZW1vdmFsIHVuY29uZGl0aW9uYWwgZXZlbiB3aGVuIGBMT19GTEFHU19QQVJUU0NBTmAgaXMgbm90IHNldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYmxvY2sgZGV2aWNlIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIGxvb3BiYWNrIGRldmljZSBpb2N0bHMgYW5kIGZpbGUgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9MT09QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19sb29wX2Nscl9mZCYjMzQ7LAogICAgJiMzNDtsb19yZWxlYXNlJiMzNDssCiAgICAmIzM0O2xvb3BfY2xyX2ZkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0ZWFyZG93biBwYXRoIG9mIGxvb3AgZGV2aWNlcyAoYF9fbG9vcF9jbHJfZmRgKSwgbWFraW5nIHBhcnRpdGlvbiByZW1vdmFsIHVuY29uZGl0aW9uYWwgZXZlbiB3aGVuIGBMT19GTEFHU19QQVJUU0NBTmAgaXMgbm90IHNldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYmxvY2sgZGV2aWNlIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIGxvb3BiYWNrIGRldmljZSBpb2N0bHMgYW5kIGZpbGUgb3BlcmF0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAzOjIwOjAyLjcyODU2MTQxMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MjUzNzc3MjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfTE9PUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fbG9vcF9jbHJfZmRcIixcbiAgICBcImxvX3JlbGVhc2VcIixcbiAgICBcImxvb3BfY2xyX2ZkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHRlYXJkb3duIHBhdGggb2YgbG9vcCBkZXZpY2VzIChgX19sb29wX2Nscl9mZGApLCBtYWtpbmcgcGFydGl0aW9uIHJlbW92YWwgdW5jb25kaXRpb25hbCBldmVuIHdoZW4gYExPX0ZMQUdTX1BBUlRTQ0FOYCBpcyBub3Qgc2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBibG9jayBkZXZpY2UgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgbG9vcGJhY2sgZGV2aWNlIGlvY3RscyBhbmQgZmlsZSBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMzoyMDowMi43Mjg1NjcxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzQ1NjU3MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiNjU2MDU4ZDVmYjllZWNlOWUzMWFjYzJlZjk2M2NlNGE0YjJkZWU0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDE2IDAzOjIwOjAxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbG9vcC5jIGIvZHJpdmVycy9ibG9jay9sb29wLmNcXG5pbmRleCAzMTBkZTA0NjNiZWIxNC4uMWZhZWNlZjMzMDA5MmIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay9sb29wLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuY1xcbkBAIC0xMTEzLDYgKzExMTMsNyBAQCBzdGF0aWMgdm9pZCBfX2xvb3BfY2xyX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8pXFxuIFxcdHN0cnVjdCBxdWV1ZV9saW1pdHMgbGltO1xcbiBcXHRzdHJ1Y3QgZmlsZSAqZmlscDtcXG4gXFx0Z2ZwX3QgZ2ZwID0gbG8tXFx1MDAzZW9sZF9nZnBfbWFzaztcXG4rXFx0aW50IGVycjtcXG4gXFxuIFxcdHNwaW5fbG9ja19pcnEoXFx1MDAyNmxvLVxcdTAwM2Vsb19sb2NrKTtcXG4gXFx0ZmlscCA9IGxvLVxcdTAwM2Vsb19iYWNraW5nX2ZpbGU7XFxuQEAgLTExNDYsMjYgKzExNDcsMjEgQEAgc3RhdGljIHZvaWQgX19sb29wX2Nscl9mZChzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvKVxcbiBcXG4gXFx0ZGlza19mb3JjZV9tZWRpYV9jaGFuZ2UobG8tXFx1MDAzZWxvX2Rpc2spO1xcbiBcXG4tXFx0aWYgKGxvLVxcdTAwM2Vsb19mbGFncyBcXHUwMDI2IExPX0ZMQUdTX1BBUlRTQ0FOKSB7XFxuLVxcdFxcdGludCBlcnI7XFxuLVxcbi1cXHRcXHQvKlxcbi1cXHRcXHQgKiBvcGVuX211dGV4IGhhcyBiZWVuIGhlbGQgYWxyZWFkeSBpbiByZWxlYXNlIHBhdGgsIHNvIGRvbid0XFxuLVxcdFxcdCAqIGFjcXVpcmUgaXQgaWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaW4gc3VjaCBjYXNlLlxcbi1cXHRcXHQgKlxcbi1cXHRcXHQgKiBJZiB0aGUgcmVyZWFkIHBhcnRpdGlvbiBpc24ndCBmcm9tIHJlbGVhc2UgcGF0aCwgbG9fcmVmY250XFxuLVxcdFxcdCAqIG11c3QgYmUgYXQgbGVhc3Qgb25lIGFuZCBpdCBjYW4gb25seSBiZWNvbWUgemVybyB3aGVuIHRoZVxcbi1cXHRcXHQgKiBjdXJyZW50IGhvbGRlciBpcyByZWxlYXNlZC5cXG4tXFx0XFx0ICovXFxuLVxcdFxcdGVyciA9IGJkZXZfZGlza19jaGFuZ2VkKGxvLVxcdTAwM2Vsb19kaXNrLCBmYWxzZSk7XFxuLVxcdFxcdGlmIChlcnIpXFxuLVxcdFxcdFxcdHByX3dhcm4oXFxcIiVzOiBwYXJ0aXRpb24gc2NhbiBvZiBsb29wJWQgZmFpbGVkIChyYz0lZClcXFxcblxcXCIsXFxuLVxcdFxcdFxcdFxcdF9fZnVuY19fLCBsby1cXHUwMDNlbG9fbnVtYmVyLCBlcnIpO1xcbi1cXHRcXHQvKiBEZXZpY2UgaXMgZ29uZSwgbm8gcG9pbnQgaW4gcmV0dXJuaW5nIGVycm9yICovXFxuLVxcdH1cXG4rXFx0LypcXG4rXFx0ICogUmVtb3ZlIGFsbCBwYXJ0aXRpb25zLCBpbmNsdWRpbmcgcGFydGl0aW9ucyBhZGRlZCBtYW51YWxseSB3aXRoXFxuK1xcdCAqIEJMS1BHLCB3aGljaCBtYXkgZXhpc3QgZXZlbiBpZiBMT19GTEFHU19QQVJUU0NBTiBpcyBub3Qgc2V0LlxcbitcXHQgKlxcbitcXHQgKiBvcGVuX211dGV4IGhhcyBiZWVuIGhlbGQgYWxyZWFkeSBpbiByZWxlYXNlIHBhdGgsIHNvIGRvbid0IGFjcXVpcmVcXG4rXFx0ICogaXQgaGVyZS5cXG4rXFx0ICovXFxuK1xcdGVyciA9IGJkZXZfZGlza19jaGFuZ2VkKGxvLVxcdTAwM2Vsb19kaXNrLCBmYWxzZSk7XFxuK1xcdGlmIChlcnIpXFxuK1xcdFxcdHByX3dhcm4oXFxcIiVzOiBwYXJ0aXRpb24gc2NhbiBvZiBsb29wJWQgZmFpbGVkIChyYz0lZClcXFxcblxcXCIsXFxuK1xcdFxcdFxcdF9fZnVuY19fLCBsby1cXHUwMDNlbG9fbnVtYmVyLCBlcnIpO1xcbitcXHQvKiBEZXZpY2UgaXMgZ29uZSwgbm8gcG9pbnQgaW4gcmV0dXJuaW5nIGVycm9yICovXFxuIFxcbiBcXHQvKlxcbi1cXHQgKiBsby1cXHUwMDNlbG9fc3RhdGUgaXMgc2V0IHRvIExvX3VuYm91bmQgaGVyZSBhZnRlciBhYm92ZSBwYXJ0c2NhbiBoYXNcXG4rXFx0ICogbG8tXFx1MDAzZWxvX3N0YXRlIGlzIHNldCB0byBMb191bmJvdW5kIGhlcmUgYWZ0ZXIgcmVtb3ZpbmcgcGFydGl0aW9ucyBoYXNcXG4gXFx0ICogZmluaXNoZWQuIFRoZXJlIGNhbm5vdCBiZSBhbnlib2R5IGVsc2UgZW50ZXJpbmcgX19sb29wX2Nscl9mZCgpIGFzXFxuIFxcdCAqIExvX3J1bmRvd24gc3RhdGUgcHJvdGVjdHMgdXMgZnJvbSBhbGwgdGhlIG90aGVyIHBsYWNlcyB0cnlpbmcgdG9cXG4gXFx0ICogY2hhbmdlIHRoZSAnbG8nIGRldmljZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDM6MjA6MDMuMjYzODkxNTRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2NzE4NDM1NjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfTE9PUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fbG9vcF9jbHJfZmRcIixcbiAgICBcImxvX3JlbGVhc2VcIixcbiAgICBcImxvb3BfY2xyX2ZkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHRlYXJkb3duIHBhdGggb2YgbG9vcCBkZXZpY2VzIChgX19sb29wX2Nscl9mZGApLCBtYWtpbmcgcGFydGl0aW9uIHJlbW92YWwgdW5jb25kaXRpb25hbCBldmVuIHdoZW4gYExPX0ZMQUdTX1BBUlRTQ0FOYCBpcyBub3Qgc2V0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBibG9jayBkZXZpY2UgbG9naWMgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgbG9vcGJhY2sgZGV2aWNlIGlvY3RscyBhbmQgZmlsZSBvcGVyYXRpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGI2NTYwNThkNWZiOWVlY2U5ZTMxYWNjMmVmOTYzY2U0YTRiMmRlZTRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAxNiAwMzoyMDowMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbG9vcC5jIGIvZHJpdmVycy9ibG9jay9sb29wLmNcbmluZGV4IDMxMGRlMDQ2M2JlYjE0Li4xZmFlY2VmMzMwMDkyYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svbG9vcC5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuY1xuQEAgLTExMTMsNiArMTExMyw3IEBAIHN0YXRpYyB2b2lkIF9fbG9vcF9jbHJfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbylcbiBcdHN0cnVjdCBxdWV1ZV9saW1pdHMgbGltO1xuIFx0c3RydWN0IGZpbGUgKmZpbHA7XG4gXHRnZnBfdCBnZnAgPSBsby1cdTAwM2VvbGRfZ2ZwX21hc2s7XG4rXHRpbnQgZXJyO1xuIFxuIFx0c3Bpbl9sb2NrX2lycShcdTAwMjZsby1cdTAwM2Vsb19sb2NrKTtcbiBcdGZpbHAgPSBsby1cdTAwM2Vsb19iYWNraW5nX2ZpbGU7XG5AQCAtMTE0NiwyNiArMTE0NywyMSBAQCBzdGF0aWMgdm9pZCBfX2xvb3BfY2xyX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8pXG4gXG4gXHRkaXNrX2ZvcmNlX21lZGlhX2NoYW5nZShsby1cdTAwM2Vsb19kaXNrKTtcbiBcbi1cdGlmIChsby1cdTAwM2Vsb19mbGFncyBcdTAwMjYgTE9fRkxBR1NfUEFSVFNDQU4pIHtcbi1cdFx0aW50IGVycjtcbi1cbi1cdFx0Lypcbi1cdFx0ICogb3Blbl9tdXRleCBoYXMgYmVlbiBoZWxkIGFscmVhZHkgaW4gcmVsZWFzZSBwYXRoLCBzbyBkb24ndFxuLVx0XHQgKiBhY3F1aXJlIGl0IGlmIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGluIHN1Y2ggY2FzZS5cbi1cdFx0ICpcbi1cdFx0ICogSWYgdGhlIHJlcmVhZCBwYXJ0aXRpb24gaXNuJ3QgZnJvbSByZWxlYXNlIHBhdGgsIGxvX3JlZmNudFxuLVx0XHQgKiBtdXN0IGJlIGF0IGxlYXN0IG9uZSBhbmQgaXQgY2FuIG9ubHkgYmVjb21lIHplcm8gd2hlbiB0aGVcbi1cdFx0ICogY3VycmVudCBob2xkZXIgaXMgcmVsZWFzZWQuXG4tXHRcdCAqL1xuLVx0XHRlcnIgPSBiZGV2X2Rpc2tfY2hhbmdlZChsby1cdTAwM2Vsb19kaXNrLCBmYWxzZSk7XG4tXHRcdGlmIChlcnIpXG4tXHRcdFx0cHJfd2FybihcIiVzOiBwYXJ0aXRpb24gc2NhbiBvZiBsb29wJWQgZmFpbGVkIChyYz0lZClcXG5cIixcbi1cdFx0XHRcdF9fZnVuY19fLCBsby1cdTAwM2Vsb19udW1iZXIsIGVycik7XG4tXHRcdC8qIERldmljZSBpcyBnb25lLCBubyBwb2ludCBpbiByZXR1cm5pbmcgZXJyb3IgKi9cbi1cdH1cbitcdC8qXG4rXHQgKiBSZW1vdmUgYWxsIHBhcnRpdGlvbnMsIGluY2x1ZGluZyBwYXJ0aXRpb25zIGFkZGVkIG1hbnVhbGx5IHdpdGhcbitcdCAqIEJMS1BHLCB3aGljaCBtYXkgZXhpc3QgZXZlbiBpZiBMT19GTEFHU19QQVJUU0NBTiBpcyBub3Qgc2V0LlxuK1x0ICpcbitcdCAqIG9wZW5fbXV0ZXggaGFzIGJlZW4gaGVsZCBhbHJlYWR5IGluIHJlbGVhc2UgcGF0aCwgc28gZG9uJ3QgYWNxdWlyZVxuK1x0ICogaXQgaGVyZS5cbitcdCAqL1xuK1x0ZXJyID0gYmRldl9kaXNrX2NoYW5nZWQobG8tXHUwMDNlbG9fZGlzaywgZmFsc2UpO1xuK1x0aWYgKGVycilcbitcdFx0cHJfd2FybihcIiVzOiBwYXJ0aXRpb24gc2NhbiBvZiBsb29wJWQgZmFpbGVkIChyYz0lZClcXG5cIixcbitcdFx0XHRfX2Z1bmNfXywgbG8tXHUwMDNlbG9fbnVtYmVyLCBlcnIpO1xuK1x0LyogRGV2aWNlIGlzIGdvbmUsIG5vIHBvaW50IGluIHJldHVybmluZyBlcnJvciAqL1xuIFxuIFx0Lypcbi1cdCAqIGxvLVx1MDAzZWxvX3N0YXRlIGlzIHNldCB0byBMb191bmJvdW5kIGhlcmUgYWZ0ZXIgYWJvdmUgcGFydHNjYW4gaGFzXG4rXHQgKiBsby1cdTAwM2Vsb19zdGF0ZSBpcyBzZXQgdG8gTG9fdW5ib3VuZCBoZXJlIGFmdGVyIHJlbW92aW5nIHBhcnRpdGlvbnMgaGFzXG4gXHQgKiBmaW5pc2hlZC4gVGhlcmUgY2Fubm90IGJlIGFueWJvZHkgZWxzZSBlbnRlcmluZyBfX2xvb3BfY2xyX2ZkKCkgYXNcbiBcdCAqIExvX3J1bmRvd24gc3RhdGUgcHJvdGVjdHMgdXMgZnJvbSBhbGwgdGhlIG90aGVyIHBsYWNlcyB0cnlpbmcgdG9cbiBcdCAqIGNoYW5nZSB0aGUgJ2xvJyBkZXZpY2UuXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMzoyMDowMy4yNjM4OTMxNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NjA5NjAxMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTG9vcCBEZXZpY2UgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9ibG9jay9sb29wLmNgLiBJdCdzIGZvY3VzZWQgb24gbW9kaWZ5aW5nIHRoZSBgX19sb29wX2Nscl9mZGAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSByZW1vdmluZyBhIGNvbmRpdGlvbmFsIGNoZWNrLiBCZWZvcmUsIHdlIGhhZCB0aGlzIGNoZWNrOiBgaWYgKGxvLVx1MDAzZWxvX2ZsYWdzIFx1MDAyNiBMT19GTEFHU19QQVJUU0NBTilgLCBhbmQgaWYgaXQgd2FzIHRydWUsIGl0IHdvdWxkIGNhbGwgYGJkZXZfZGlza19jaGFuZ2VkKGxvLVx1MDAzZWxvX2Rpc2ssIGZhbHNlKWAuIE5vdywgdGhlIHBhdGNoICpyZW1vdmVzKiB0aGF0IGNoZWNrLCBtZWFuaW5nIGBiZGV2X2Rpc2tfY2hhbmdlZGAgd2lsbCBiZSBjYWxsZWQgKnVuY29uZGl0aW9uYWxseSogZHVyaW5nIGEgbG9vcCBkZXZpY2UgY2xlYW51cC5cblxuTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBpcyBmdW5jdGlvbmFsbHkgYSBzdHJhaWdodGZvcndhcmQgY2hhbmdlLiBUaGUgZXhlY3V0aW9uIGZsb3cgaXMgYWx0ZXJlZDsgdGhlIGNvZGUgYmxvY2sgdW5kZXIgdGhhdCBgaWZgIHN0YXRlbWVudCBpcyBubyBsb25nZXIgZ2F0ZWQuIEl0J3MgZ29pbmcgdG8gYWZmZWN0IHRoZSB0ZWFyZG93biBwcm9jZXNzIGZvciBsb29wIGRldmljZXMuIFNvLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBiZGV2X2Rpc2tfY2hhbmdlZGAgZG9lcyBpbiB0aGlzIGNvbnRleHQgYW5kIHdoeSB0aGlzIGNvbmRpdGlvbmFsIHdhcyBvcmlnaW5hbGx5IHRoZXJlLiBJIGltbWVkaWF0ZWx5IG5lZWQgdG8gY29uc2lkZXIgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuXG5cbk5leHQgc3RlcDogSSdtIGdvaW5nIHRvIGp1bXAgaW50byB0aGUgY29kZSBpdHNlbGYsIGBkcml2ZXJzL2Jsb2NrL2xvb3AuY2AgYW5kIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgYF9fbG9vcF9jbHJfZmRgIGZ1bmN0aW9uIGl0c2VsZiwgYWxvbmcgd2l0aCByZWxldmFudCB1c2VzIG9mIGBiZGV2X2Rpc2tfY2hhbmdlZGAuIEknbGwgYWxzbyB3YW50IHRvIGZpbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgbG9vcCBkZXZpY2VzLCBwcm9iYWJseSBpbiBgZHJpdmVycy9ibG9jay9LY29uZmlnYCBvciBzaW1pbGFyIGZpbGVzLCB0byBzZWUgd2hhdCBzZXR0aW5ncyBtaWdodCBiZSBpbXBhY3RlZCBieSB0aGlzIGNoYW5nZS4gVW5kZXJzdGFuZGluZyB0aGUgY29uZmlndXJhdGlvbiB3aWxsIGNsYXJpZnkgdGhlIGVudmlyb25tZW50IHRoaXMgY2hhbmdlIG9wZXJhdGVzIGluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzEyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDM6MjA6MDguMTI0ODU1MjZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk3MDI5MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJMS19ERVZfTE9PUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9LY29uZmlnPTE0MD1jb25maWcgQkxLX0RFVl9DT1dfQ09NTU9OXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMTQzLVxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoxNDQ6Y29uZmlnIEJMS19ERVZfTE9PUFxcbmRyaXZlcnMvYmxvY2svS2NvbmZpZy0xNDUtXFx0dHJpc3RhdGUgXFxcIkxvb3BiYWNrIGRldmljZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE3OC1cXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MTc5OmNvbmZpZyBCTEtfREVWX0xPT1BfTUlOX0NPVU5UXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTE4MC1cXHRpbnQgXFxcIk51bWJlciBvZiBsb29wIGRldmljZXMgdG8gcHJlLWNyZWF0ZSBhdCBpbml0IHRpbWVcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAzOjIwOjA4LjE4NDU2Mzg5OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MDMxNTU5NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkxvb3AgRGV2aWNlIENvbmZpZ3VyYXRpb24gYW5kIEZ1bmN0aW9uIEFuYWx5c2lzKipcblxuUmlnaHQsIHNvIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGxvb3AgZGV2aWNlIGNvbmZpZ3VyYXRpb24sIHNwZWNpZmljYWxseSBgQkxLX0RFVl9MT09QYC4gVGhhdCdzIGEgZmFtaWxpYXIgYXJlYS4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgYF9fbG9vcF9jbHJfZmRgIGZ1bmN0aW9uLiBIb2xkIG9uLCBpdCdzIGRlY2xhcmVkIHN0YXRpYy4gVGhhdCdzIGEgYml0IG9mIGEgd3JpbmtsZSDigJMgdXN1YWxseSBtZWFucyBpdCdzIHNjb3BlZCB3aXRoaW4gYSBzcGVjaWZpYyB0cmFuc2xhdGlvbiB1bml0LiBPa2F5LCBubyBwcm9ibGVtLCB0aGlzIG1lYW5zIHRoYXQgdGhlIGNhbGwgdHJlZSB0byB0cmFjZSBpcyBub3QgYWxsIGVuY29tcGFzc2luZyB0byB0aGUgd2hvbGUga2VybmVsIGJ1aWxkLiBJbnN0ZWFkLCBhIHNwZWNpZmljIG1vZHVsZSBmaWxlIG11c3QgYmUgaW5zcGVjdGVkIHRvIGZpbmQgdGhlIGNhbGxlcnMuIFRpbWUgdG8gc2VlIHdoaWNoIHBhcnQgb2YgdGhlIGNvZGUgYmFzZSBjYWxscyB0aGF0IGZ1bmN0aW9uIGFuZCB3aGF0IGNvbnRleHQgaXQgaXMgYmVpbmcgY2FsbGVkIGZyb20uIEknbGwgbmVlZCB0byBpZGVudGlmeSB0aGUgY2FsbCBzaXRlcyB0byBmdWxseSB1bmRlcnN0YW5kIGl0cyByb2xlIGFuZCBpbXBhY3QuIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTk2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDM6MjA6MTEuMDg3NzIxODZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc5NzU3NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19sb29wX2Nscl9mZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL2xvb3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL2xvb3AuYz05NT1zdGF0aWMgREVGSU5FX01VVEVYKGxvb3BfdmFsaWRhdGVfbXV0ZXgpO1xcbi0tXFxuZHJpdmVycy9ibG9jay9sb29wLmMtMTA2LSAqIGlzX2xvb3BfZGV2aWNlKCkgaXMgdHJ1ZSwgd2UgbmVlZCBhIGdsb2JhbCBsb2NrIGZvciBzZXJpYWxpemluZyBjb25jdXJyZW50XFxuZHJpdmVycy9ibG9jay9sb29wLmM6MTA3OiAqIGxvb3BfY29uZmlndXJlKCkvbG9vcF9jaGFuZ2VfZmQoKS9fX2xvb3BfY2xyX2ZkKCkgY2FsbHMuXFxuZHJpdmVycy9ibG9jay9sb29wLmMtMTA4LSAqL1xcbi0tXFxuZHJpdmVycy9ibG9jay9sb29wLmM9OTc3PXN0YXRpYyBpbnQgbG9vcF9jb25maWd1cmUoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgYmxrX21vZGVfdCBtb2RlLFxcbi0tXFxuZHJpdmVycy9ibG9jay9sb29wLmMtMTExMC1cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxMTExOnN0YXRpYyB2b2lkIF9fbG9vcF9jbHJfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbylcXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMTEyLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTExNjQtXFx0ICogbG8tXFx1MDAzZWxvX3N0YXRlIGlzIHNldCB0byBMb191bmJvdW5kIGhlcmUgYWZ0ZXIgcmVtb3ZpbmcgcGFydGl0aW9ucyBoYXNcXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxMTY1OlxcdCAqIGZpbmlzaGVkLiBUaGVyZSBjYW5ub3QgYmUgYW55Ym9keSBlbHNlIGVudGVyaW5nIF9fbG9vcF9jbHJfZmQoKSBhc1xcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTExNjYtXFx0ICogTG9fcnVuZG93biBzdGF0ZSBwcm90ZWN0cyB1cyBmcm9tIGFsbCB0aGUgb3RoZXIgcGxhY2VzIHRyeWluZyB0b1xcbi0tXFxuZHJpdmVycy9ibG9jay9sb29wLmM9MTcyMj1zdGF0aWMgdm9pZCBsb19yZWxlYXNlKHN0cnVjdCBnZW5kaXNrICpkaXNrKVxcbi0tXFxuZHJpdmVycy9ibG9jay9sb29wLmMtMTc0Mi1cXHRpZiAobmVlZF9jbGVhcilcXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxNzQzOlxcdFxcdF9fbG9vcF9jbHJfZmQobG8pO1xcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTE3NDQtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMzoyMDoxMS4xNDU3MTIxNzlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjQ3NDQ5ODQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBfX2xvb3BfY2xyX2ZkYCBVc2FnZSoqXG5cbk9rYXksIHNvIGBfX2xvb3BfY2xyX2ZkYCBpcyBjYWxsZWQgYnkgYGxvX3JlbGVhc2VgLCB3aGljaCBtYWtlcyBzZW5zZS4gSSd2ZSBzZWVuIHRoYXQgcmVsYXRpb25zaGlwIGJlZm9yZS4gQnV0IEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjYWxsIHNpdGVzLiBBIGxlYWsgb3IgYSBkb3VibGUtZnJlZSBjb3VsZCBiZSBsdXJraW5nIGlmIGl0J3MgdXNlZCBlbHNld2hlcmUsIGFuZCBJ4oCZZCBjYXRjaCB0aGF0IGZhc3QuIEknbGwgbmVlZCB0byBkaWcgdGhyb3VnaCB0aGUgY29kZWJhc2UgYW5kIGNvbmZpcm0gdGhlIGNhbGxlciBsaXN0IGFuZCBkb3VibGUgY2hlY2sgZm9yIGFueSBjYWxscyBvdXRzaWRlIGBsb19yZWxlYXNlYC4uLiBiZXN0IHRvIGJlIHRob3JvdWdoIGhlcmUuIEFueSBvdGhlciBwbGFjZXMgdGhpcyBpcyBiZWluZyB1c2VkIGNvdWxkIGJlIGEgcG90ZW50aWFsIHBvaW50IG9mIGludGVyZXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjYxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDM6MjA6MTMuNzkzMTY0MTY1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1OTU2ODY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fbG9vcF9jbHJfZmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9sb29wLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9sb29wLmM9OTU9c3RhdGljIERFRklORV9NVVRFWChsb29wX3ZhbGlkYXRlX211dGV4KTtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTEwNi0gKiBpc19sb29wX2RldmljZSgpIGlzIHRydWUsIHdlIG5lZWQgYSBnbG9iYWwgbG9jayBmb3Igc2VyaWFsaXppbmcgY29uY3VycmVudFxcbmRyaXZlcnMvYmxvY2svbG9vcC5jOjEwNzogKiBsb29wX2NvbmZpZ3VyZSgpL2xvb3BfY2hhbmdlX2ZkKCkvX19sb29wX2Nscl9mZCgpIGNhbGxzLlxcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTEwOC0gKi9cXG4tLVxcbmRyaXZlcnMvYmxvY2svbG9vcC5jPTk3Nz1zdGF0aWMgaW50IGxvb3BfY29uZmlndXJlKHN0cnVjdCBsb29wX2RldmljZSAqbG8sIGJsa19tb2RlX3QgbW9kZSxcXG4tLVxcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTExMTAtXFxuZHJpdmVycy9ibG9jay9sb29wLmM6MTExMTpzdGF0aWMgdm9pZCBfX2xvb3BfY2xyX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8pXFxuZHJpdmVycy9ibG9jay9sb29wLmMtMTExMi17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMTY0LVxcdCAqIGxvLVxcdTAwM2Vsb19zdGF0ZSBpcyBzZXQgdG8gTG9fdW5ib3VuZCBoZXJlIGFmdGVyIHJlbW92aW5nIHBhcnRpdGlvbnMgaGFzXFxuZHJpdmVycy9ibG9jay9sb29wLmM6MTE2NTpcXHQgKiBmaW5pc2hlZC4gVGhlcmUgY2Fubm90IGJlIGFueWJvZHkgZWxzZSBlbnRlcmluZyBfX2xvb3BfY2xyX2ZkKCkgYXNcXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMTY2LVxcdCAqIExvX3J1bmRvd24gc3RhdGUgcHJvdGVjdHMgdXMgZnJvbSBhbGwgdGhlIG90aGVyIHBsYWNlcyB0cnlpbmcgdG9cXG4tLVxcbmRyaXZlcnMvYmxvY2svbG9vcC5jPTE3MjI9c3RhdGljIHZvaWQgbG9fcmVsZWFzZShzdHJ1Y3QgZ2VuZGlzayAqZGlzaylcXG4tLVxcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTE3NDItXFx0aWYgKG5lZWRfY2xlYXIpXFxuZHJpdmVycy9ibG9jay9sb29wLmM6MTc0MzpcXHRcXHRfX2xvb3BfY2xyX2ZkKGxvKTtcXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xNzQ0LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDM6MjA6MTMuODQ5MTI4NTc0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjU2OTc5ODY3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgRGVlcGVyIGludG8gdGhlIEFic3RyYWN0aW9uKipcblxuT2theSwgc28gSSd2ZSBpZGVudGlmaWVkIGBsb29wX2Nscl9mZGAgYXMgc29tZXRoaW5nIHJlbGF0ZWQgdG8gYF9fbG9vcF9jbHJfZmRgLiBNeSBpbnR1aXRpb24sIGJhc2VkIG9uIHRoZSBuYW1pbmcgY29udmVudGlvbiwgdGVsbHMgbWUgdGhleSdyZSBsaWtlbHkgaW50ZXJjb25uZWN0ZWQuIEkgbmVlZCB0byBjb25maXJtIHRoaXMgYXNzdW1wdGlvbi4gTGV0J3Mgc3RhcnQgYnkgcXVpY2tseSB2ZXJpZnlpbmcgbXkgdW5kZXJzdGFuZGluZyBvZiB3aGF0IGBsb29wX2Nscl9mZGAgaXMgZG9pbmcgaW4gbW9yZSBkZXRhaWwuIEknbGwgbmVlZCB0byBleGFtaW5lIGl0cyBpbXBsZW1lbnRhdGlvbiB0byBzZWUgaWYgaXQncyBhY3RpbmcgYXMgYSBoaWdoZXItbGV2ZWwgYWJzdHJhY3Rpb24gdGhhdCBjYWxscyBgX19sb29wX2Nscl9mZGAgdW5kZXIgdGhlIGhvb2QuIEl0J3MgYSBjb21tb24gcGF0dGVybiwgYW5kIGEgcXVpY2sgY2hlY2sgb2YgYGxvb3BfY2xyX2ZkYCB3aWxsIGdpdmUgbWUgdGhlIGNsYXJpdHkgSSBuZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjcwLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDM6MjA6MTYuNDE4OTI5NTUyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDAwMjk4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJsb29wX2Nscl9mZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL2xvb3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL2xvb3AuYz05NT1zdGF0aWMgREVGSU5FX01VVEVYKGxvb3BfdmFsaWRhdGVfbXV0ZXgpO1xcbi0tXFxuZHJpdmVycy9ibG9jay9sb29wLmMtMTA2LSAqIGlzX2xvb3BfZGV2aWNlKCkgaXMgdHJ1ZSwgd2UgbmVlZCBhIGdsb2JhbCBsb2NrIGZvciBzZXJpYWxpemluZyBjb25jdXJyZW50XFxuZHJpdmVycy9ibG9jay9sb29wLmM6MTA3OiAqIGxvb3BfY29uZmlndXJlKCkvbG9vcF9jaGFuZ2VfZmQoKS9fX2xvb3BfY2xyX2ZkKCkgY2FsbHMuXFxuZHJpdmVycy9ibG9jay9sb29wLmMtMTA4LSAqL1xcbi0tXFxuZHJpdmVycy9ibG9jay9sb29wLmM9OTc3PXN0YXRpYyBpbnQgbG9vcF9jb25maWd1cmUoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgYmxrX21vZGVfdCBtb2RlLFxcbi0tXFxuZHJpdmVycy9ibG9jay9sb29wLmMtMTExMC1cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxMTExOnN0YXRpYyB2b2lkIF9fbG9vcF9jbHJfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbylcXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMTEyLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTExNjQtXFx0ICogbG8tXFx1MDAzZWxvX3N0YXRlIGlzIHNldCB0byBMb191bmJvdW5kIGhlcmUgYWZ0ZXIgcmVtb3ZpbmcgcGFydGl0aW9ucyBoYXNcXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxMTY1OlxcdCAqIGZpbmlzaGVkLiBUaGVyZSBjYW5ub3QgYmUgYW55Ym9keSBlbHNlIGVudGVyaW5nIF9fbG9vcF9jbHJfZmQoKSBhc1xcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTExNjYtXFx0ICogTG9fcnVuZG93biBzdGF0ZSBwcm90ZWN0cyB1cyBmcm9tIGFsbCB0aGUgb3RoZXIgcGxhY2VzIHRyeWluZyB0b1xcbi0tXFxuZHJpdmVycy9ibG9jay9sb29wLmMtMTE4My1cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYzoxMTg0OnN0YXRpYyBpbnQgbG9vcF9jbHJfZmQoc3RydWN0IGxvb3BfZGV2aWNlICpsbylcXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xMTg1LXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTExODktXFx0ICogU2luY2UgbG9faW9jdGwoKSBpcyBjYWxsZWQgd2l0aG91dCBsb2NrcyBoZWxkLCBpdCBpcyBwb3NzaWJsZSB0aGF0XFxuZHJpdmVycy9ibG9jay9sb29wLmM6MTE5MDpcXHQgKiBsb29wX2NvbmZpZ3VyZSgpL2xvb3BfY2hhbmdlX2ZkKCkgYW5kIGxvb3BfY2xyX2ZkKCkgcnVuIGluIHBhcmFsbGVsLlxcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTExOTEtXFx0ICpcXG4tLVxcbmRyaXZlcnMvYmxvY2svbG9vcC5jPTE1MDc9c3RhdGljIGludCBsb19pb2N0bChzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBibGtfbW9kZV90IG1vZGUsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xNTM4LVxcdGNhc2UgTE9PUF9DTFJfRkQ6XFxuZHJpdmVycy9ibG9jay9sb29wLmM6MTUzOTpcXHRcXHRyZXR1cm4gbG9vcF9jbHJfZmQobG8pO1xcbmRyaXZlcnMvYmxvY2svbG9vcC5jLTE1NDAtXFx0Y2FzZSBMT09QX1NFVF9TVEFUVVM6XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYz0xNzIyPXN0YXRpYyB2b2lkIGxvX3JlbGVhc2Uoc3RydWN0IGdlbmRpc2sgKmRpc2spXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL2xvb3AuYy0xNzQyLVxcdGlmIChuZWVkX2NsZWFyKVxcbmRyaXZlcnMvYmxvY2svbG9vcC5jOjE3NDM6XFx0XFx0X19sb29wX2Nscl9mZChsbyk7XFxuZHJpdmVycy9ibG9jay9sb29wLmMtMTc0NC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAzOjIwOjE2LjQ4MjkzOTEzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MTYzOTg4ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgRnVuY3Rpb24gQ2FsbCBDaGFpbioqXG5cblJpZ2h0LCBzbyBgbG9vcF9jbHJfZmRg4oCmIHRoYXQgbmFtZSBzb3VuZHMgZmFtaWxpYXIuIEhtbSwgaXQgbG9va3MgbGlrZSBpdCdzIGNhbGxpbmcgYF9fbG9vcF9jbHJfZmRgLiBPa2F5LCBsZXQncyB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgZGVmaW5pdGlvbiBvZiBgbG9vcF9jbHJfZmRgLiBJJ20gZ3Vlc3NpbmcgdGhlcmUncyBhIGdvb2QgcmVhc29uIGZvciB0aGlzIGtpbmQgb2YgYWJzdHJhY3Rpb247IHBlcmhhcHMgc29tZSBwbGF0Zm9ybS1zcGVjaWZpYyBkZXRhaWxzIG9yIHBvdGVudGlhbGx5IHNvbWUgaW50ZXJuYWwgYm9va2tlZXBpbmcgaGFwcGVuaW5nIGluIGBfX2xvb3BfY2xyX2ZkYD8gSSdtIGN1cmlvdXMgd2hhdCdzIGhhcHBlbmluZy4gUHJvYmFibHkgdGhlcmUgYXJlIHNvbWUgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbiBvciBzb21lIHNwZWNpZmljIGVkZ2UgY2FzZSB0aGUgaW5uZXIgbWV0aG9kIGlzIGhhbmRsaW5nLiBMZXQncyBzZWUgaWYgdGhpcyBpcyBqdXN0IGEgc2ltcGxlIHdyYXBwZXIgb3IgaWYgdGhlcmUncyBzb21ldGhpbmcgbW9yZSB0byBpdC4gSSB3YW50IHRvIGNoZWNrIGhvdyB0aGUgYXJndW1lbnRzIGFyZSBiZWluZyBwYXNzZWQsIGlmIHRoZXJlJ3MgYW55IHByZS1wcm9jZXNzaW5nLCBvciBhbnkgc3VidGxlIHNpZGUgZWZmZWN0cyBJIHNob3VsZCBiZSBhd2FyZSBvZi4gTGV0J3MgZ2V0IHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBhbmQgc2VlIHdoYXQncyBhY3R1YWxseSBnb2luZyBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE0OCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAzOjIwOjE5LjM5OTM0MTQ0MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjE3NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ibG9jay9sb29wLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTE4NCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTE4NDpcXHRzdGF0aWMgaW50IGxvb3BfY2xyX2ZkKHN0cnVjdCBsb29wX2RldmljZSAqbG8pXFxuMTE4NTpcXHR7XFxuMTE4NjpcXHRcXHRpbnQgZXJyO1xcbjExODc6XFx0XFxuMTE4ODpcXHRcXHQvKlxcbjExODk6XFx0XFx0ICogU2luY2UgbG9faW9jdGwoKSBpcyBjYWxsZWQgd2l0aG91dCBsb2NrcyBoZWxkLCBpdCBpcyBwb3NzaWJsZSB0aGF0XFxuMTE5MDpcXHRcXHQgKiBsb29wX2NvbmZpZ3VyZSgpL2xvb3BfY2hhbmdlX2ZkKCkgYW5kIGxvb3BfY2xyX2ZkKCkgcnVuIGluIHBhcmFsbGVsLlxcbjExOTE6XFx0XFx0ICpcXG4xMTkyOlxcdFxcdCAqIFRoZXJlZm9yZSwgdXNlIGdsb2JhbCBsb2NrIHdoZW4gc2V0dGluZyBMb19ydW5kb3duIHN0YXRlIGluIG9yZGVyIHRvXFxuMTE5MzpcXHRcXHQgKiBtYWtlIHN1cmUgdGhhdCBsb29wX3ZhbGlkYXRlX2ZpbGUoKSB3aWxsIGZhaWwgaWYgdGhlIFxcXCJzdHJ1Y3QgZmlsZVxcXCJcXG4xMTk0OlxcdFxcdCAqIHdoaWNoIGxvb3BfY29uZmlndXJlKCkvbG9vcF9jaGFuZ2VfZmQoKSBmb3VuZCB2aWEgZmdldCgpIHdhcyB0aGlzXFxuMTE5NTpcXHRcXHQgKiBsb29wIGRldmljZS5cXG4xMTk2OlxcdFxcdCAqL1xcbjExOTc6XFx0XFx0ZXJyID0gbG9vcF9nbG9iYWxfbG9ja19raWxsYWJsZShsbywgdHJ1ZSk7XFxuMTE5ODpcXHRcXHRpZiAoZXJyKVxcbjExOTk6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4xMjAwOlxcdFxcdGlmIChsby1cXHUwMDNlbG9fc3RhdGUgIT0gTG9fYm91bmQpIHtcXG4xMjAxOlxcdFxcdFxcdGxvb3BfZ2xvYmFsX3VubG9jayhsbywgdHJ1ZSk7XFxuMTIwMjpcXHRcXHRcXHRyZXR1cm4gLUVOWElPO1xcbjEyMDM6XFx0XFx0fVxcbjEyMDQ6XFx0XFx0LypcXG4xMjA1OlxcdFxcdCAqIE1hcmsgdGhlIGRldmljZSBmb3IgcmVtb3ZpbmcgdGhlIGJhY2tpbmcgZGV2aWNlIG9uIGxhc3QgY2xvc2UuXFxuMTIwNjpcXHRcXHQgKiBJZiB3ZSBhcmUgdGhlIG9ubHkgb3BlbmVyLCBhbHNvIHN3aXRjaCB0aGUgc3RhdGUgdG8gcm91bmRvd24gaGVyZSB0b1xcbjEyMDc6XFx0XFx0ICogcHJldmVudCBuZXcgb3BlbmVycyBmcm9tIGNvbWluZyBpbi5cXG4xMjA4OlxcdFxcdCAqL1xcbjEyMDk6XFx0XFxuMTIxMDpcXHRcXHRsby1cXHUwMDNlbG9fZmxhZ3MgfD0gTE9fRkxBR1NfQVVUT0NMRUFSO1xcbjEyMTE6XFx0XFx0aWYgKGRpc2tfb3BlbmVycyhsby1cXHUwMDNlbG9fZGlzaykgPT0gMSlcXG4xMjEyOlxcdFxcdFxcdFdSSVRFX09OQ0UobG8tXFx1MDAzZWxvX3N0YXRlLCBMb19ydW5kb3duKTtcXG4xMjEzOlxcdFxcdGxvb3BfZ2xvYmFsX3VubG9jayhsbywgdHJ1ZSk7XFxuMTIxNDpcXHRcXG4xMjE1OlxcdFxcdHJldHVybiAwO1xcbjEyMTY6XFx0fVxcbjEyMTc6XFx0XFxuMTIxODpcXHRzdGF0aWMgaW50XFxuMTIxOTpcXHRsb29wX3NldF9zdGF0dXMoc3RydWN0IGxvb3BfZGV2aWNlICpsbywgY29uc3Qgc3RydWN0IGxvb3BfaW5mbzY0ICppbmZvKVxcbjEyMjA6XFx0e1xcbjEyMjE6XFx0XFx0aW50IGVycjtcXG4xMjIyOlxcdFxcdGJvb2wgcGFydHNjYW4gPSBmYWxzZTtcXG4xMjIzOlxcdFxcdGJvb2wgc2l6ZV9jaGFuZ2VkID0gZmFsc2U7XFxuMTIyNDpcXHRcXHR1bnNpZ25lZCBpbnQgbWVtZmxhZ3M7XFxuMTIyNTpcXHRcXG4xMjI2OlxcdFxcdGVyciA9IG11dGV4X2xvY2tfa2lsbGFibGUoXFx1MDAyNmxvLVxcdTAwM2Vsb19tdXRleCk7XFxuMTIyNzpcXHRcXHRpZiAoZXJyKVxcbjEyMjg6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4xMjI5OlxcdFxcdGlmIChsby1cXHUwMDNlbG9fc3RhdGUgIT0gTG9fYm91bmQpIHtcXG4xMjMwOlxcdFxcdFxcdGVyciA9IC1FTlhJTztcXG4xMjMxOlxcdFxcdFxcdGdvdG8gb3V0X3VubG9jaztcXG4xMjMyOlxcdFxcdH1cXG4xMjMzOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMzoyMDoxOS4zOTk0NjQ3NjJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQyODEzNDY5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEF1dG9jbGVhciBMb29wIGFuZCBEaXNrIFJlbGVhc2UqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYGxvb3BfY2xyX2ZkYCBmdW5jdGlvbiwgYW5kIGl0J3Mgbm90IGFzIHN0cmFpZ2h0Zm9yd2FyZCBhcyBJIGluaXRpYWxseSB0aG91Z2h0LiBJdCBkb2Vzbid0IGFjdHVhbGx5ICpkaXJlY3RseSogY2FsbCBgX19sb29wX2Nscl9mZGAuIEluc3RlYWQsIGl0IHNldHMgdGhlIGBMT19GTEFHU19BVVRPQ0xFQVJgIGZsYWcuIEhtbSwgYW5kIGl0IHRyYW5zaXRpb25zIHRoZSBsb29wJ3Mgc3RhdGUgdG8gYExvX3J1bmRvd25gLiBJbnRlcmVzdGluZy4gVGhhdCBtZWFucyB0aGUgcmVhbCB3b3JrIGlzIGRlZmVycmVkLlxuXG5TbywgdGhlIGNsZWFudXAgaXMgYWN0dWFsbHkgdHJpZ2dlcmVkIGJ5IGBsb19yZWxlYXNlYCwgd2hpY2ggaXMgdGhlIG9uZSB0aGF0ICpldmVudHVhbGx5KiBjYWxscyBgX19sb29wX2Nscl9mZGAsIGFuZCBvbmx5IHdoZW4gYGRpc2tfb3BlbmVyc2AgZGVjcmVtZW50cyB0byB6ZXJvLiBUaGF0IG1ha2VzIHNlbnNlIGZyb20gYSByZXNvdXJjZSBtYW5hZ2VtZW50IHBlcnNwZWN0aXZlIC0gd2Ugb25seSB3YW50IHRvIGNsZWFyIHRoZSBmaWxlIGRlc2NyaXB0b3Igd2hlbiB0aGUgbG9vcCBkZXZpY2UgaXMgbm8gbG9uZ2VyIGFjdGl2ZWx5IGJlaW5nIHVzZWQgYnkgYW55dGhpbmcuIFxuXG5BbHJpZ2h0LCBsZXQncyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhhdCBgbG9fcmVsZWFzZWAgZnVuY3Rpb24gbm93IGFuZCBjb25maXJtIHRoaXMgZmxvdy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHByZWNpc2UgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGlzIGBfX2xvb3BfY2xyX2ZkYCBjYWxsIGlzIGZpbmFsbHkgZXhlY3V0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNTcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAzOjIwOjIyLjgyNzYwMTc4MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjI2OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ibG9jay9sb29wLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTcyMixcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTcyMjpcXHRzdGF0aWMgdm9pZCBsb19yZWxlYXNlKHN0cnVjdCBnZW5kaXNrICpkaXNrKVxcbjE3MjM6XFx0e1xcbjE3MjQ6XFx0XFx0c3RydWN0IGxvb3BfZGV2aWNlICpsbyA9IGRpc2stXFx1MDAzZXByaXZhdGVfZGF0YTtcXG4xNzI1OlxcdFxcdGJvb2wgbmVlZF9jbGVhciA9IGZhbHNlO1xcbjE3MjY6XFx0XFxuMTcyNzpcXHRcXHRpZiAoZGlza19vcGVuZXJzKGRpc2spIFxcdTAwM2UgMClcXG4xNzI4OlxcdFxcdFxcdHJldHVybjtcXG4xNzI5OlxcdFxcdC8qXFxuMTczMDpcXHRcXHQgKiBDbGVhciB0aGUgYmFja2luZyBkZXZpY2UgaW5mb3JtYXRpb24gaWYgdGhpcyBpcyB0aGUgbGFzdCBjbG9zZSBvZlxcbjE3MzE6XFx0XFx0ICogYSBkZXZpY2UgdGhhdCdzIGJlZW4gbWFya2VkIGZvciBhdXRvIGNsZWFyLCBvciBvbiB3aGljaCBMT09QX0NMUl9GRFxcbjE3MzI6XFx0XFx0ICogaGFzIGJlZW4gY2FsbGVkLlxcbjE3MzM6XFx0XFx0ICovXFxuMTczNDpcXHRcXG4xNzM1OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmxvLVxcdTAwM2Vsb19tdXRleCk7XFxuMTczNjpcXHRcXHRpZiAobG8tXFx1MDAzZWxvX3N0YXRlID09IExvX2JvdW5kIFxcdTAwMjZcXHUwMDI2IChsby1cXHUwMDNlbG9fZmxhZ3MgXFx1MDAyNiBMT19GTEFHU19BVVRPQ0xFQVIpKVxcbjE3Mzc6XFx0XFx0XFx0V1JJVEVfT05DRShsby1cXHUwMDNlbG9fc3RhdGUsIExvX3J1bmRvd24pO1xcbjE3Mzg6XFx0XFxuMTczOTpcXHRcXHRuZWVkX2NsZWFyID0gKGxvLVxcdTAwM2Vsb19zdGF0ZSA9PSBMb19ydW5kb3duKTtcXG4xNzQwOlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2bG8tXFx1MDAzZWxvX211dGV4KTtcXG4xNzQxOlxcdFxcbjE3NDI6XFx0XFx0aWYgKG5lZWRfY2xlYXIpXFxuMTc0MzpcXHRcXHRcXHRfX2xvb3BfY2xyX2ZkKGxvKTtcXG4xNzQ0OlxcdH1cXG4xNzQ1OlxcdFxcbjE3NDY6XFx0c3RhdGljIHZvaWQgbG9fZnJlZV9kaXNrKHN0cnVjdCBnZW5kaXNrICpkaXNrKVxcbjE3NDc6XFx0e1xcbjE3NDg6XFx0XFx0c3RydWN0IGxvb3BfZGV2aWNlICpsbyA9IGRpc2stXFx1MDAzZXByaXZhdGVfZGF0YTtcXG4xNzQ5OlxcdFxcbjE3NTA6XFx0XFx0aWYgKGxvLVxcdTAwM2V3b3JrcXVldWUpXFxuMTc1MTpcXHRcXHRcXHRkZXN0cm95X3dvcmtxdWV1ZShsby1cXHUwMDNld29ya3F1ZXVlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDM6MjA6MjIuODI3NzI3MjcxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNjk5MDY5OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTG9vcCBEZXZpY2UgVGVhcmRvd24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCwgcmlnaHQgb2ZmIHRoZSBiYXQsIGl0J3MgY2xlYXIgYF9fbG9vcF9jbHJfZmRgIGlzIHRoZSBjcml0aWNhbCBmdW5jdGlvbiBoZXJlIOKAkyBpdCdzIHRoZSBvbmUgcmVzcG9uc2libGUgZm9yIGNsZWFyaW5nIHRoZSBsb29wIGRldmljZS4gVGhlIHBhdGNoIGZvcmNlcyBhbiB1bmNvbmRpdGlvbmFsIGNhbGwgdG8gYGJkZXZfZGlza19jaGFuZ2VkKGxvLVx1MDAzZWxvX2Rpc2ssIGZhbHNlKWAuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFuZCBpbXBhY3RzIHBhcnRpdGlvbiBzY2FubmluZyBhbmQgdGVhcmRvd24sIHBhcnRpY3VsYXJseSBvbiBsb29wIGRldmljZXMuIE15IGd1dCBzYXlzIHRoaXMgaXMgd29ydGggYSBkZWVwZXIgbG9vayB3aXRoIGZ1enppbmcuXG5cbk15IHByaW1hcnkgZm9jdXMgZm9yIGZ1enppbmcgd2lsbCBiZSBvbiBgX19sb29wX2Nscl9mZGAsIGBsb19yZWxlYXNlYCwgYW5kIHBvc3NpYmx5IGBsb29wX2Nscl9mZGAuIEZyb20gYSBjb25maWcgcGVyc3BlY3RpdmUsIGBCTEtfREVWX0xPT1BgIGlzIHRoZSBvbmx5IG9uZSBJIG5lZWQgdG8gY29uc2lkZXI7IEkgZG9uJ3Qgc2VlIGFueSBkZXBlbmRlbmNpZXMgdGhhdCB3b3VsZCByZXF1aXJlIGFkZGl0aW9uYWwgY29uZmlncy5cblxuVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIGFsdGVycyB0aGUgbG9vcCBkZXZpY2UgdGVhcmRvd24gcHJvY2Vzcywgc3BlY2lmaWNhbGx5IHdpdGhpbiBgX19sb29wX2Nscl9mZGAuIEJ5IG1ha2luZyBwYXJ0aXRpb24gcmVtb3ZhbCB1bmNvbmRpdGlvbmFsLCBpdCBieXBhc3NlcyB0aGUgcHJldmlvdXMgY2hlY2tzIHJlbGF0ZWQgdG8gYExPX0ZMQUdTX1BBUlRTQ0FOYC4gVGhpcyBhZmZlY3RzIGNvcmUgYmxvY2sgZGV2aWNlIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIGNvbW1vbiBsb29wYmFjayBkZXZpY2UgaW9jdGxzIGFuZCBmaWxlIG9wZXJhdGlvbnMuIEl0J3MgYSBmdW5kYW1lbnRhbCBjaGFuZ2UgaW4gdGhlIHRlYXJkb3duIHBhdGguXG5cbkxldCBtZSBkb3VibGUtY2hlY2s6IHllcCwgYGJkZXZfZGlza19jaGFuZ2VkYCBpcyB0aGUgY29ycmVjdCBmdW5jdGlvbiBuYW1lIGFzIGl0IGlzIGluIHRoZSBwYXRjaC4gQSBxdWljayBzZWFyY2ggb2YgdGhlIGNvZGUgY29uZmlybXMgYF9fbG9vcF9jbHJfZmRgIGlzIHJlYWNoYWJsZSB0aHJvdWdoIHRoZSBgTE9PUF9DTFJfRkRgIGlvY3RsIG9yLCBhcyBhIG1vcmUgc3VidGxlIHRyaWdnZXIsIHNpbXBseSBjbG9zaW5nIHRoZSBsYXN0IGZpbGUgZGVzY3JpcHRvciBhc3NvY2lhdGVkIHdpdGggYW4gYXV0by1jbGVhcmluZyBsb29wIGRldmljZS4gVGhpcyBtZWFucyBpdCdzIGRlZmluaXRlbHkgYWNjZXNzaWJsZSwgZXNwZWNpYWxseSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyBpdCBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5JbiBzdW1tYXJ5OiBJJ20gbWFya2luZyB0aGlzIGFzIFwiV29ydGhGdXp6aW5nOiB0cnVlXCIsIHdpdGggXCJGb2N1c1N5bWJvbHM6IGBfX2xvb3BfY2xyX2ZkYCwgYGxvX3JlbGVhc2VgLCBgbG9vcF9jbHJfZmRgXCIsIGFuZCBcIkVuYWJsZUNvbmZpZ3M6IGBCTEtfREVWX0xPT1BgXCIuIFRoZSBcIlJlYXNvbmluZ1wiIGlzIHRoYXQgdGhlIHBhdGNoIGZvcmNlcyB1bmNvbmRpdGlvbmFsIHBhcnRpdGlvbiByZW1vdmFsIGR1cmluZyBsb29wIGRldmljZSB0ZWFyZG93biwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gYmxvY2sgZGV2aWNlIGxvZ2ljIGFuZCBhY2Nlc3NpYmxlIHZpYSBpb2N0bHMvZmlsZSBvcGVyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTU0LCJPdXRwdXRUb2tlbnMiOjEyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAzOjIwOjI5Ljg5NzYzNjcxOVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0Njg1MzU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX0xPT1BcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2xvb3BfY2xyX2ZkXCIsXG4gICAgXCJsb19yZWxlYXNlXCIsXG4gICAgXCJsb29wX2Nscl9mZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0ZWFyZG93biBwYXRoIG9mIGxvb3AgZGV2aWNlcyAoYF9fbG9vcF9jbHJfZmRgKSwgbWFraW5nIHBhcnRpdGlvbiByZW1vdmFsIHVuY29uZGl0aW9uYWwgZXZlbiB3aGVuIGBMT19GTEFHU19QQVJUU0NBTmAgaXMgbm90IHNldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYmxvY2sgZGV2aWNlIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIGxvb3BiYWNrIGRldmljZSBpb2N0bHMgYW5kIGZpbGUgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX0xPT1BcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2xvb3BfY2xyX2ZkXCIsXG4gICAgXCJsb19yZWxlYXNlXCIsXG4gICAgXCJsb29wX2Nscl9mZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0ZWFyZG93biBwYXRoIG9mIGxvb3AgZGV2aWNlcyAoYF9fbG9vcF9jbHJfZmRgKSwgbWFraW5nIHBhcnRpdGlvbiByZW1vdmFsIHVuY29uZGl0aW9uYWwgZXZlbiB3aGVuIGBMT19GTEFHU19QQVJUU0NBTmAgaXMgbm90IHNldC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgYmxvY2sgZGV2aWNlIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIGxvb3BiYWNrIGRldmljZSBpb2N0bHMgYW5kIGZpbGUgb3BlcmF0aW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowcqlg5[1] Phase: Succeeded StartedAt: 2026-07-16 03:20:41 +0000 UTC FinishedAt: 2026-07-16 03:20:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqlg5[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-16 03:20:41 +0000 UTC FinishedAt: 2026-07-16 03:20:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqlg5[2] Phase: Succeeded StartedAt: 2026-07-16 03:20:41 +0000 UTC FinishedAt: 2026-07-16 07:42:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-16 03:20:41 +0000 UTC FinishedAt: 2026-07-16 07:42:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-16 03:20:41 +0000 UTC FinishedAt: 2026-07-16 03:20:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-16 03:20:41 +0000 UTC FinishedAt: 2026-07-16 03:20:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcqlg5/series-workflowcqlg5-convert-artifact-1527099857/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-16 03:20:51 +0000 UTC FinishedAt: 2026-07-16 04:03:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-16 03:20:51 +0000 UTC FinishedAt: 2026-07-16 04:03:50 +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:*776baf69-1da4-48a6-9d26-69c79e1b549f,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-workflowcqlg5/series-workflowcqlg5-convert-artifact-1527099857/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": "9ae8a0d7-7a8c-4645-9c5e-9be7e46d9d1d", "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-workflowcqlg5/series-workflowcqlg5-build-action-101075839/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-16 03:20:51 +0000 UTC FinishedAt: 2026-07-16 04:02:41 +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:*776baf69-1da4-48a6-9d26-69c79e1b549f,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-workflowcqlg5/series-workflowcqlg5-convert-artifact-1527099857/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": "9ae8a0d7-7a8c-4645-9c5e-9be7e46d9d1d", "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-workflowcqlg5/series-workflowcqlg5-build-action-101075839/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-16 04:03:50 +0000 UTC FinishedAt: 2026-07-16 04:03:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-16 04:03:50 +0000 UTC FinishedAt: 2026-07-16 04:03:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-16 04:03:50 +0000 UTC FinishedAt: 2026-07-16 04:04:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-16 04:03:50 +0000 UTC FinishedAt: 2026-07-16 04:03:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcqlg5/series-workflowcqlg5-convert-artifact-3521207460/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-16 04:04:00 +0000 UTC FinishedAt: 2026-07-16 04:06:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-16 04:04:00 +0000 UTC FinishedAt: 2026-07-16 04:06:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9ae8a0d7-7a8c-4645-9c5e-9be7e46d9d1d,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-workflowcqlg5/series-workflowcqlg5-build-action-101075839/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-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-16 04:06:27 +0000 UTC FinishedAt: 2026-07-16 04:06:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-16 04:06:27 +0000 UTC FinishedAt: 2026-07-16 04:06:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-16 04:06:27 +0000 UTC FinishedAt: 2026-07-16 04:36:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-16 04:06:27 +0000 UTC FinishedAt: 2026-07-16 04:36:51 +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:*776baf69-1da4-48a6-9d26-69c79e1b549f,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-workflowcqlg5/series-workflowcqlg5-convert-artifact-3521207460/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": "fff2d033-4fb9-4b81-88fb-6025dc93cd59", "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-workflowcqlg5/series-workflowcqlg5-build-action-673174320/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-16 04:06:27 +0000 UTC FinishedAt: 2026-07-16 04:36:41 +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:*776baf69-1da4-48a6-9d26-69c79e1b549f,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-workflowcqlg5/series-workflowcqlg5-convert-artifact-3521207460/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": "fff2d033-4fb9-4b81-88fb-6025dc93cd59", "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-workflowcqlg5/series-workflowcqlg5-build-action-673174320/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-16 04:36:51 +0000 UTC FinishedAt: 2026-07-16 04:36:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-16 04:36:51 +0000 UTC FinishedAt: 2026-07-16 04:36:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-16 04:36:51 +0000 UTC FinishedAt: 2026-07-16 04:38:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-16 04:36:51 +0000 UTC FinishedAt: 2026-07-16 04:38:47 +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:*fff2d033-4fb9-4b81-88fb-6025dc93cd59,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-workflowcqlg5/series-workflowcqlg5-build-action-673174320/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-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-16 04:38:56 +0000 UTC FinishedAt: 2026-07-16 07:42:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-16 04:38:56 +0000 UTC FinishedAt: 2026-07-16 07:42:21 +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":["__loop_clr_fd","lo_release","loop_clr_fd"],"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:*9ae8a0d7-7a8c-4645-9c5e-9be7e46d9d1d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fff2d033-4fb9-4b81-88fb-6025dc93cd59,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-workflowcqlg5/series-workflowcqlg5-build-action-101075839/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-workflowcqlg5/series-workflowcqlg5-build-action-673174320/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-16 04:38:56 +0000 UTC FinishedAt: 2026-07-16 04:39:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-16 04:38:56 +0000 UTC FinishedAt: 2026-07-16 04:39:04 +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":["__loop_clr_fd","lo_release","loop_clr_fd"],"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-workflowcqlg5/series-workflowcqlg5-convert-artifact-2900008237/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-16 04:38:56 +0000 UTC FinishedAt: 2026-07-16 04:38:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-16 04:38:56 +0000 UTC FinishedAt: 2026-07-16 04:38:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-16 04:38:56 +0000 UTC FinishedAt: 2026-07-16 04:38:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-16 04:39:06 +0000 UTC FinishedAt: 2026-07-16 07:42:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcqlg5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["__loop_clr_fd","lo_release","loop_clr_fd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a13c140cc289c0b7b3770bce5b3ad42ab35074aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_LOOP"],"series_id":"4be63bfd-15df-40f9-94c0-d8dab402a4da","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-16 04:39:06 +0000 UTC FinishedAt: 2026-07-16 07:42:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9ae8a0d7-7a8c-4645-9c5e-9be7e46d9d1d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fff2d033-4fb9-4b81-88fb-6025dc93cd59,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-workflowcqlg5/series-workflowcqlg5-build-action-101075839/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-workflowcqlg5/series-workflowcqlg5-build-action-673174320/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-workflowcqlg5/series-workflowcqlg5-convert-artifact-2900008237/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,}