Name: series-workflowszbdq Phase: Succeeded StartedAt: 2026-08-09 13:02:37 +0000 UTC FinishedAt: 2026-08-09 17:11:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszbdq[0] Phase: Succeeded StartedAt: 2026-08-09 13:02:37 +0000 UTC FinishedAt: 2026-08-09 13:30:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszbdq[0].run-triage Phase: Succeeded StartedAt: 2026-08-09 13:02:37 +0000 UTC FinishedAt: 2026-08-09 13:30:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "ca800a9302764c445de0da0e84d2252400a770ee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIRT_WIFI", "CFG80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "ca800a9302764c445de0da0e84d2252400a770ee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIRT_WIFI", "CFG80211" ], "series_id": "1bde67a5-d209-4cd7-929f-8b75b48a16f0" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "virt_wifi_start_xmit" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEzOjI3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJUlRfV0lGSSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZpcnRfd2lmaV9zdGFydF94bWl0JiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBieSBhZGRpbmcgYGRldl9rZnJlZV9za2JfYW55KHNrYilgIHdoZW4gdGhlIHZpcnR1YWwgd2lmaSBkZXZpY2UgaXMgbm90IGNvbm5lY3RlZCBhbmQgZHJvcHMgdGhlIHBhY2tldC4gVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGxvZ2ljIHRoYXQgY291bGQgbGVhZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkIG9yIGxlYWtlZCB0byB1c2VyIHNwYWNlLiBBbnkgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIHZpcnRfd2lmaV9zdGFydF94bWl0IGZ1bmN0aW9uIG9mIHRoZSB2aXJ0X3dpZmkgZHJpdmVyIGJ5IGZyZWVpbmcgdGhlIHNrYiB3aGVuIHRoZSBkZXZpY2UgaXMgbm90IGNvbm5lY3RlZC4gVGhlIHZpcnRfd2lmaSBkcml2ZXIgaXMgYSB2aXJ0dWFsIHdpcmVsZXNzIGRyaXZlciB0aGF0IHdyYXBzIGV0aGVybmV0IGRldmljZXMsIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEzOjI3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODI3YWJmMDNhMGZhZWQ0MDA1MDM5ODdkMGU4YTBmOTg0Y2Q3MTI3NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDkgMTM6Mjc6MDEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmNcbmluZGV4IDIzMzVlNDVkYjhiODUuLmI2OWE0NjUwZmJhODUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jXG5AQCAtNDM0LDYgJiM0Mzs0MzQsNyBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgdmlydF93aWZpX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHByaXYtXHUwMDNldHhfcGFja2V0cyYjNDM7JiM0Mzs7XG4gXHRpZiAoIXByaXYtXHUwMDNlaXNfY29ubmVjdGVkKSB7XG4gXHRcdHByaXYtXHUwMDNldHhfZmFpbGVkJiM0MzsmIzQzOztcbiYjNDM7XHRcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XG4gXHRcdHJldHVybiBORVRfWE1JVF9EUk9QO1xuIFx0fVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEzOjI3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSVJUX1dJRkkmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2aXJ0X3dpZmlfc3RhcnRfeG1pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSB2aXJ0X3dpZmlfc3RhcnRfeG1pdCBmdW5jdGlvbiBvZiB0aGUgdmlydF93aWZpIGRyaXZlciBieSBmcmVlaW5nIHRoZSBza2Igd2hlbiB0aGUgZGV2aWNlIGlzIG5vdCBjb25uZWN0ZWQuIFRoZSB2aXJ0X3dpZmkgZHJpdmVyIGlzIGEgdmlydHVhbCB3aXJlbGVzcyBkcml2ZXIgdGhhdCB3cmFwcyBldGhlcm5ldCBkZXZpY2VzLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDgyN2FiZjAzYTBmYWVkNDAwNTAzOTg3ZDBlOGEwZjk4NGNkNzEyNzUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEF1ZyA5IDEzOjI3OjAxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMKaW5kZXggMjMzNWU0NWRiOGI4NS4uYjY5YTQ2NTBmYmE4NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jCkBAIC00MzQsNiAmIzQzOzQzNCw3IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCB2aXJ0X3dpZmlfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXByaXYtJmd0O3R4X3BhY2tldHMmIzQzOyYjNDM7OwogCWlmICghcHJpdi0mZ3Q7aXNfY29ubmVjdGVkKSB7CiAJCXByaXYtJmd0O3R4X2ZhaWxlZCYjNDM7JiM0Mzs7CiYjNDM7CQlkZXZfa2ZyZWVfc2tiX2FueShza2IpOwogCQlyZXR1cm4gTkVUX1hNSVRfRFJPUDsKIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTM6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk4NAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBWaXJ0dWFsIFdpRmkgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuY2AuIEl0IHNlZW1zIHRoZXkmIzM5O3ZlIGFkZGVkIGEgYGRldl9rZnJlZV9za2JfYW55KHNrYik7YCBjYWxsIHdpdGhpbiBgdmlydF93aWZpX3N0YXJ0X3htaXRgIHdoZW4gdGhlIGRyaXZlciBpc24mIzM5O3QgY29ubmVjdGVkLCBzcGVjaWZpY2FsbHkgd2hlbiBgIXByaXYtJmd0O2lzX2Nvbm5lY3RlZGAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIGlzIGxpa2VseSBhIGJ1ZyBmaXgg4oCTIHByb2JhYmx5IGEgbWVtb3J5IGxlYWsuCgpMZXQgbWUgcmVmcmVzaCBteSBtZW1vcnkgb2YgYHZpcnRfd2lmaV9zdGFydF94bWl0YCBpbiB0aGF0IGZpbGUuIFllcywgdGhpcyBpcyB0aGUgdmlydHVhbCBXaUZpIGRyaXZlciwgd2hpY2gsIG9mIGNvdXJzZSwgbWVhbnMgaXQmIzM5O3MgaGVhdmlseSB1c2VkIGluIHZpcnR1YWxpemF0aW9uIHNjZW5hcmlvcy4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgZWFzeSB0byBoaXQgYW4gZWRnZSBjYXNlIHdoZXJlIGEgdmlydHVhbCBkZXZpY2UgaXMgdHJ5aW5nIHRvIHRyYW5zbWl0IGJlZm9yZSBpdCYjMzk7cyBmdWxseSBjb25uZWN0ZWQuIFRoaXMgYGRldl9rZnJlZV9za2JfYW55KHNrYilgIGNhbGwgaXMgdGhlIGtleSB0byBhZGRyZXNzIHRoZSBtZW1vcnkgbGVhazogcmVsZWFzaW5nIHRoZSBgc2tiYCB3aGVuIHRoZSBkZXZpY2UgaXNuJiMzOTt0IHByb3Blcmx5IGNvbm5lY3RlZC4KCk5leHQgc3RlcD8gSSYjMzk7bGwgcXVpY2tseSBjaGVjayB0aGUgY29uZmlnIGZvciBgdmlydF93aWZpYCwganVzdCB0byB2ZXJpZnkgaXRzIGNvbmZpZ3VyYXRpb24gaXMgc3RyYWlnaHRmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEzOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZpcnRfd2lmaSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvTWFrZWZpbGU9Mz1tYWM4MDIxMV9od3NpbS1vYmpzXHRcdCYjNDM7PSBtYWM4MDIxMV9od3NpbV9uYW4ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9NYWtlZmlsZS00LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19WSVJUX1dJRkkpXHQmIzQzOz0gdmlydF93aWZpLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MjovKiBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0X3dpZmkuY1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zLSAqXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYz0xOD1zdGF0aWMgc3RydWN0IHdpcGh5ICpjb21tb25fd2lwaHk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzoyMDpzdHJ1Y3QgdmlydF93aWZpX3dpcGh5X3ByaXYge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0yMS1cdHN0cnVjdCBkZWxheWVkX3dvcmsgc2Nhbl9yZXN1bHQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYz0xMzc9c3RhdGljIHU4IGZha2Vfcm91dGVyX2Jzc2lkW0VUSF9BTEVOXSBfX3JvX2FmdGVyX2luaXQgPSB7fTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTE0MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MTQyOnN0YXRpYyB2b2lkIHZpcnRfd2lmaV9pbmZvcm1fYnNzKHN0cnVjdCB3aXBoeSAqd2lwaHkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTE0My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0xNjUtLyogQ2FsbGVkIHdpdGggdGhlIHJ0bmwgbG9jayBoZWxkLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzoxNjY6c3RhdGljIGludCB2aXJ0X3dpZmlfc2NhbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0xNjctXHRcdFx0ICBzdHJ1Y3QgY2ZnODAyMTFfc2Nhbl9yZXF1ZXN0ICpyZXF1ZXN0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0xNjgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzoxNjk6XHRzdHJ1Y3QgdmlydF93aWZpX3dpcGh5X3ByaXYgKnByaXYgPSB3aXBoeV9wcml2KHdpcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMTcwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMTgyLS8qIEFjcXVpcmVzIGFuZCByZWxlYXNlcyB0aGUgcmRldiBCU1MgbG9jay4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MTgzOnN0YXRpYyB2b2lkIHZpcnRfd2lmaV9zY2FuX3Jlc3VsdChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTE4NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjE4NTpcdHN0cnVjdCB2aXJ0X3dpZmlfd2lwaHlfcHJpdiAqcHJpdiA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjE4NjpcdFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB2aXJ0X3dpZmlfd2lwaHlfcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMTg3LVx0XHRcdCAgICAgc2Nhbl9yZXN1bHQud29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0xOTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjE5MTpcdHZpcnRfd2lmaV9pbmZvcm1fYnNzKHdpcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMTkyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMTk4LS8qIE1heSBhY3F1aXJlIGFuZCByZWxlYXNlIHRoZSByZGV2IEJTUyBsb2NrLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzoxOTk6c3RhdGljIHZvaWQgdmlydF93aWZpX2NhbmNlbF9zY2FuKHN0cnVjdCB3aXBoeSAqd2lwaHkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTIwMC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjIwMTpcdHN0cnVjdCB2aXJ0X3dpZmlfd2lwaHlfcHJpdiAqcHJpdiA9IHdpcGh5X3ByaXYod2lwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0yMDItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0yMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjIxMzpzdHJ1Y3QgdmlydF93aWZpX25ldGRldl9wcml2IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjE0LVx0c3RydWN0IGRlbGF5ZWRfd29yayBjb25uZWN0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjI3LS8qIENhbGxlZCB3aXRoIHRoZSBydG5sIGxvY2sgaGVsZC4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MjI4OnN0YXRpYyBpbnQgdmlydF93aWZpX2Nvbm5lY3Qoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjI5LVx0XHRcdCAgICAgc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcGFyYW1zICpzbWUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTIzMC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjIzMTpcdHN0cnVjdCB2aXJ0X3dpZmlfbmV0ZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0yMzItXHRib29sIGNvdWxkX3NjaGVkdWxlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjQ5LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MjUwOlx0XHR2aXJ0X3dpZmlfaW5mb3JtX2Jzcyh3aXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTI1MS1cdFx0ZXRoX3plcm9fYWRkcihwcml2LVx1MDAzZWNvbm5lY3RfcmVxdWVzdGVkX2Jzcyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0yNTktLyogQWNxdWlyZXMgYW5kIHJlbGVhc2VzIHRoZSByZGV2IGV2ZW50IGxvY2suICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjI2MDpzdGF0aWMgdm9pZCB2aXJ0X3dpZmlfY29ubmVjdF9jb21wbGV0ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTI2MS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjI2MjpcdHN0cnVjdCB2aXJ0X3dpZmlfbmV0ZGV2X3ByaXYgKnByaXYgPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzoyNjM6XHRcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdmlydF93aWZpX25ldGRldl9wcml2LCBjb25uZWN0LndvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0yNjQtXHR1OCAqcmVxdWVzdGVkX2JzcyA9IHByaXYtXHUwMDNlY29ubmVjdF9yZXF1ZXN0ZWRfYnNzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjg3LS8qIE1heSBhY3F1aXJlIGFuZCByZWxlYXNlIHRoZSByZGV2IGV2ZW50IGxvY2suICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjI4ODpzdGF0aWMgdm9pZCB2aXJ0X3dpZmlfY2FuY2VsX2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjg5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MjkwOlx0c3RydWN0IHZpcnRfd2lmaV9uZXRkZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTI5MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTMwMy0vKiBDYWxsZWQgd2l0aCB0aGUgcnRubCBsb2NrIGhlbGQuIEFjcXVpcmVzIHRoZSByZGV2IGV2ZW50IGxvY2suICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjMwNDpzdGF0aWMgaW50IHZpcnRfd2lmaV9kaXNjb25uZWN0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTMwNS1cdFx0XHRcdHUxNiByZWFzb25fY29kZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzA2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MzA3Olx0c3RydWN0IHZpcnRfd2lmaV9uZXRkZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTMwOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTMxMi1cdHdpcGh5X2RlYnVnKHdpcGh5LCBcJiMzNDtkaXNjb25uZWN0XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MzEzOlx0dmlydF93aWZpX2NhbmNlbF9jb25uZWN0KG5ldGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTMxNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTMyMi0vKiBDYWxsZWQgd2l0aCB0aGUgcnRubCBsb2NrIGhlbGQuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjMyMzpzdGF0aWMgaW50IHZpcnRfd2lmaV9nZXRfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zMjQtXHRcdFx0XHQgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgY29uc3QgdTggKm1hYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTMyNy1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSB3ZGV2LVx1MDAzZW5ldGRldjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MzI4Olx0c3RydWN0IHZpcnRfd2lmaV9uZXRkZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTMyOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTM0OS0vKiBDYWxsZWQgd2l0aCB0aGUgcnRubCBsb2NrIGhlbGQuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjM1MDpzdGF0aWMgaW50IHZpcnRfd2lmaV9kdW1wX3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzUxLVx0XHRcdFx0ICBpbnQgaWR4LCB1OCAqbWFjLCBzdHJ1Y3Qgc3RhdGlvbl9pbmZvICpzaW5mbylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzUyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MzUzOlx0c3RydWN0IHZpcnRfd2lmaV9uZXRkZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KHdkZXYtXHUwMDNlbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzU0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzYwLVx0ZXRoZXJfYWRkcl9jb3B5KG1hYywgZmFrZV9yb3V0ZXJfYnNzaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozNjE6XHRyZXR1cm4gdmlydF93aWZpX2dldF9zdGF0aW9uKHdpcGh5LCB3ZGV2LCBmYWtlX3JvdXRlcl9ic3NpZCwgc2luZm8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zNjItfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjM2NDpzdGF0aWMgY29uc3Qgc3RydWN0IGNmZzgwMjExX29wcyB2aXJ0X3dpZmlfY2ZnODAyMTFfb3BzID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozNjU6XHQuc2NhbiA9IHZpcnRfd2lmaV9zY2FuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjM2NzpcdC5jb25uZWN0ID0gdmlydF93aWZpX2Nvbm5lY3QsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjM2ODpcdC5kaXNjb25uZWN0ID0gdmlydF93aWZpX2Rpc2Nvbm5lY3QsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTM2OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MzcwOlx0LmdldF9zdGF0aW9uID0gdmlydF93aWZpX2dldF9zdGF0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozNzE6XHQuZHVtcF9zdGF0aW9uID0gdmlydF93aWZpX2R1bXBfc3RhdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzcyLX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zNzQtLyogQWNxdWlyZXMgYW5kIHJlbGVhc2VzIHRoZSBydG5sIGxvY2suICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjM3NTpzdGF0aWMgc3RydWN0IHdpcGh5ICp2aXJ0X3dpZmlfbWFrZV93aXBoeSh2b2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zNzYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zNzctXHRzdHJ1Y3Qgd2lwaHkgKndpcGh5O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozNzg6XHRzdHJ1Y3QgdmlydF93aWZpX3dpcGh5X3ByaXYgKnByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTM3OS1cdGludCBlcnI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTM4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MzgxOlx0d2lwaHkgPSB3aXBoeV9uZXcoXHUwMDI2dmlydF93aWZpX2NmZzgwMjExX29wcywgc2l6ZW9mKCpwcml2KSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTM4Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTM5OC1cdHByaXYtXHUwMDNlc2Nhbl9yZXF1ZXN0ID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6Mzk5Olx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2cHJpdi1cdTAwM2VzY2FuX3Jlc3VsdCwgdmlydF93aWZpX3NjYW5fcmVzdWx0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDAwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDEwLS8qIEFjcXVpcmVzIGFuZCByZWxlYXNlcyB0aGUgcnRubCBsb2NrLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo0MTE6c3RhdGljIHZvaWQgdmlydF93aWZpX2Rlc3Ryb3lfd2lwaHkoc3RydWN0IHdpcGh5ICp3aXBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDEyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDEzOlx0c3RydWN0IHZpcnRfd2lmaV93aXBoeV9wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00MTQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00MjAtXHRwcml2LVx1MDAzZWJlaW5nX2RlbGV0ZWQgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo0MjE6XHR2aXJ0X3dpZmlfY2FuY2VsX3NjYW4od2lwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00MjItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00MjgtLyogRW50ZXJzIGFuZCBleGl0cyBhIFJDVS1iaCBjcml0aWNhbCBzZWN0aW9uLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo0Mjk6c3RhdGljIG5ldGRldl90eF90IHZpcnRfd2lmaV9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQzMC1cdFx0XHRcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDMxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDMyOlx0c3RydWN0IHZpcnRfd2lmaV9uZXRkZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQzMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQ0NS0vKiBDYWxsZWQgd2l0aCBydG5sIGxvY2sgaGVsZC4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDQ2OnN0YXRpYyBpbnQgdmlydF93aWZpX25ldF9kZXZpY2Vfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00NDcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo0NDg6XHRzdHJ1Y3QgdmlydF93aWZpX25ldGRldl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDQ5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDU0LS8qIENhbGxlZCB3aXRoIHJ0bmwgbG9jayBoZWxkLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo0NTU6c3RhdGljIGludCB2aXJ0X3dpZmlfbmV0X2RldmljZV9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQ1Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQ1NzpcdHN0cnVjdCB2aXJ0X3dpZmlfbmV0ZGV2X3ByaXYgKm5fcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQ1OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQ2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDY0Olx0dmlydF93aWZpX2NhbmNlbF9zY2FuKGRldi1cdTAwM2VpZWVlODAyMTFfcHRyLVx1MDAzZXdpcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDY1Olx0dmlydF93aWZpX2NhbmNlbF9jb25uZWN0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQ2Ni1cdG5ldGlmX2NhcnJpZXJfb2ZmKGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00NzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQ3MTpzdGF0aWMgaW50IHZpcnRfd2lmaV9uZXRfZGV2aWNlX2dldF9pZmxpbmsoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDcyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDczOlx0c3RydWN0IHZpcnRfd2lmaV9uZXRkZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQ3NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQ3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDc4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdmlydF93aWZpX29wcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDc5Olx0Lm5kb19zdGFydF94bWl0ID0gdmlydF93aWZpX3N0YXJ0X3htaXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQ4MDpcdC5uZG9fb3Blblx0PSB2aXJ0X3dpZmlfbmV0X2RldmljZV9vcGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo0ODE6XHQubmRvX3N0b3BcdD0gdmlydF93aWZpX25ldF9kZXZpY2Vfc3RvcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDgyOlx0Lm5kb19nZXRfaWZsaW5rID0gdmlydF93aWZpX25ldF9kZXZpY2VfZ2V0X2lmbGluayxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDgzLX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00ODUtLyogSW52b2tlZCBhcyBwYXJ0IG9mIHJ0bmwgbG9jayByZWxlYXNlLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo0ODY6c3RhdGljIHZvaWQgdmlydF93aWZpX25ldF9kZXZpY2VfZGVzdHJ1Y3RvcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00ODcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDk1LS8qIE5vIGxvY2sgaW50ZXJhY3Rpb24uICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQ5NjpzdGF0aWMgdm9pZCB2aXJ0X3dpZmlfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDk3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDk4LVx0ZXRoZXJfc2V0dXAoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDk5Olx0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZ2aXJ0X3dpZmlfb3BzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy01MDAtXHRkZXYtXHUwMDNlbmVlZHNfZnJlZV9uZXRkZXYgID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTUwMy0vKiBDYWxsZWQgaW4gYSBSQ1UgcmVhZCBjcml0aWNhbCBzZWN0aW9uIGZyb20gbmV0aWZfcmVjZWl2ZV9za2IgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NTA0OnN0YXRpYyByeF9oYW5kbGVyX3Jlc3VsdF90IHZpcnRfd2lmaV9yeF9oYW5kbGVyKHN0cnVjdCBza19idWZmICoqcHNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNTA1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNTA2LVx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9ICpwc2tiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo1MDc6XHRzdHJ1Y3QgdmlydF93aWZpX25ldGRldl9wcml2ICpwcml2ID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNTA4LVx0XHRyY3VfZGVyZWZlcmVuY2Uoc2tiLVx1MDAzZWRldi1cdTAwM2VyeF9oYW5kbGVyX2RhdGEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNTI2LS8qIENhbGxlZCB3aXRoIHJ0bmwgbG9jayBoZWxkLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo1Mjc6c3RhdGljIGludCB2aXJ0X3dpZmlfbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy01MjgtXHRcdFx0ICAgICBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNTMwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NTMxOlx0c3RydWN0IHZpcnRfd2lmaV9uZXRkZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTUzMi1cdHN0cnVjdCBuZXQgKmxpbmtfbmV0ID0gcnRubF9uZXdsaW5rX2xpbmtfbmV0KHBhcmFtcyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy01NTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjU1MjpcdGVyciA9IG5ldGRldl9yeF9oYW5kbGVyX3JlZ2lzdGVyKHByaXYtXHUwMDNlbG93ZXJkZXYsIHZpcnRfd2lmaV9yeF9oYW5kbGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy01NTMtXHRcdFx0XHRcdCBwcml2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTU4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NTg3Olx0ZGV2LVx1MDAzZXByaXZfZGVzdHJ1Y3RvciA9IHZpcnRfd2lmaV9uZXRfZGV2aWNlX2Rlc3RydWN0b3I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTU4OC1cdHByaXYtXHUwMDNlYmVpbmdfZGVsZXRlZCA9IGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNTkwLVx0cHJpdi1cdTAwM2Vpc191cCA9IGZhbHNlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo1OTE6XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZwcml2LVx1MDAzZWNvbm5lY3QsIHZpcnRfd2lmaV9jb25uZWN0X2NvbXBsZXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNTkyLVx0X19tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTYwNi0vKiBDYWxsZWQgd2l0aCBydG5sIGxvY2sgaGVsZC4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NjA3OnN0YXRpYyB2b2lkIHZpcnRfd2lmaV9kZWxsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTYwOC1cdFx0XHQgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02MDkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2MTA6XHRzdHJ1Y3QgdmlydF93aWZpX25ldGRldl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNjExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02MTItXHRpZiAoZGV2LVx1MDAzZWllZWU4MDIxMV9wdHIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjYxMzpcdFx0dmlydF93aWZpX2NhbmNlbF9zY2FuKGRldi1cdTAwM2VpZWVlODAyMTFfcHRyLVx1MDAzZXdpcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNjE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02MTUtXHRwcml2LVx1MDAzZWJlaW5nX2RlbGV0ZWQgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2MTY6XHR2aXJ0X3dpZmlfY2FuY2VsX2Nvbm5lY3QoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNjE3LVx0bmV0aWZfY2Fycmllcl9vZmYoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTYyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NjI4OnN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyB2aXJ0X3dpZmlfbGlua19vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjYyOTpcdC5raW5kXHRcdD0gXCYjMzQ7dmlydF93aWZpXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2MzA6XHQuc2V0dXBcdFx0PSB2aXJ0X3dpZmlfc2V0dXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjYzMTpcdC5uZXdsaW5rXHQ9IHZpcnRfd2lmaV9uZXdsaW5rLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2MzI6XHQuZGVsbGlua1x0PSB2aXJ0X3dpZmlfZGVsbGluayxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NjMzOlx0LnByaXZfc2l6ZVx0PSBzaXplb2Yoc3RydWN0IHZpcnRfd2lmaV9uZXRkZXZfcHJpdiksXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTYzNC19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02MzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjYzNjpzdGF0aWMgYm9vbCBuZXRpZl9pc192aXJ0X3dpZmlfZGV2KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTYzNy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjYzODpcdHJldHVybiByY3VfYWNjZXNzX3BvaW50ZXIoZGV2LVx1MDAzZXJ4X2hhbmRsZXIpID09IHZpcnRfd2lmaV9yeF9oYW5kbGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02MzktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02NDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjY0MTpzdGF0aWMgaW50IHZpcnRfd2lmaV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsIHVuc2lnbmVkIGxvbmcgZXZlbnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY0Mi1cdFx0XHQgICB2b2lkICpwdHIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02NDQtXHRzdHJ1Y3QgbmV0X2RldmljZSAqbG93ZXJfZGV2ID0gbmV0ZGV2X25vdGlmaWVyX2luZm9fdG9fZGV2KHB0cik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjY0NTpcdHN0cnVjdCB2aXJ0X3dpZmlfbmV0ZGV2X3ByaXYgKnByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY0Ni1cdHN0cnVjdCBuZXRfZGV2aWNlICp1cHBlcl9kZXY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02NDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjY0OTpcdGlmICghbmV0aWZfaXNfdmlydF93aWZpX2Rldihsb3dlcl9kZXYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02NTAtXHRcdHJldHVybiBOT1RJRllfRE9ORTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY2Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NjY4OnN0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgdmlydF93aWZpX25vdGlmaWVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2Njk6XHQubm90aWZpZXJfY2FsbCA9IHZpcnRfd2lmaV9ldmVudCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNjcwLX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02NzItLyogQWNxdWlyZXMgYW5kIHJlbGVhc2VzIHRoZSBydG5sIGxvY2suICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjY3MzpzdGF0aWMgaW50IF9faW5pdCB2aXJ0X3dpZmlfaW5pdF9tb2R1bGUodm9pZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNjc0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NjgwOlx0ZXJyID0gcmVnaXN0ZXJfbmV0ZGV2aWNlX25vdGlmaWVyKFx1MDAyNnZpcnRfd2lmaV9ub3RpZmllcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY4MS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02ODQtXHRlcnIgPSAtRU5PTUVNO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2ODU6XHRjb21tb25fd2lwaHkgPSB2aXJ0X3dpZmlfbWFrZV93aXBoeSgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02ODYtXHRpZiAoIWNvbW1vbl93aXBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6Njg5Olx0ZXJyID0gcnRubF9saW5rX3JlZ2lzdGVyKFx1MDAyNnZpcnRfd2lmaV9saW5rX29wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY5MC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02OTUtZGVzdHJveV93aXBoeTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6Njk2Olx0dmlydF93aWZpX2Rlc3Ryb3lfd2lwaHkoY29tbW9uX3dpcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNjk3LW5vdGlmaWVyOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2OTg6XHR1bnJlZ2lzdGVyX25ldGRldmljZV9ub3RpZmllcihcdTAwMjZ2aXJ0X3dpZmlfbm90aWZpZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02OTktXHRyZXR1cm4gZXJyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNzAyLS8qIEFjcXVpcmVzIGFuZCByZWxlYXNlcyB0aGUgcnRubCBsb2NrLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo3MDM6c3RhdGljIHZvaWQgX19leGl0IHZpcnRfd2lmaV9jbGVhbnVwX21vZHVsZSh2b2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy03MDQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy03MDUtXHQvKiBXaWxsIGRlbGV0ZSBhbnkgZGV2aWNlcyB0aGF0IGRlcGVuZCBvbiB0aGUgd2lwaHkuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjcwNjpcdHJ0bmxfbGlua191bnJlZ2lzdGVyKFx1MDAyNnZpcnRfd2lmaV9saW5rX29wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjcwNzpcdHZpcnRfd2lmaV9kZXN0cm95X3dpcGh5KGNvbW1vbl93aXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjcwODpcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX25vdGlmaWVyKFx1MDAyNnZpcnRfd2lmaV9ub3RpZmllcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTcwOS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTcxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NzExOm1vZHVsZV9pbml0KHZpcnRfd2lmaV9pbml0X21vZHVsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjcxMjptb2R1bGVfZXhpdCh2aXJ0X3dpZmlfY2xlYW51cF9tb2R1bGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy03MTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYz03MTY9TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O0RyaXZlciBmb3IgYSB3aXJlbGVzcyB3cmFwcGVyIG9mIGV0aGVybmV0IGRldmljZXNcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo3MTc6TU9EVUxFX0FMSUFTX1JUTkxfTElOSyhcJiMzNDt2aXJ0X3dpZmlcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEzOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1NDYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFZpcnR1YWwgV2lGaSBUcmFuc21pdCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uLCBgVklSVF9XSUZJYCwgYW5kIG15IHByaW1hcnkgZm9jdXMgcmlnaHQgbm93IGlzIHRoZSBgdmlydF93aWZpX3N0YXJ0X3htaXRgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dCBhbmQgYW55IHBvdGVudGlhbCBkZXBlbmRlbmNpZXMuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcywgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWdgIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AuIFRoaXMgc2hvdWxkIGhlbHAgbWUgaWRlbnRpZnkgYW55IHByZXJlcXVpc2l0ZXMgb3Igb3RoZXIgY29uZmlndXJhdGlvbnMgdGhhdCBjb3VsZCBhZmZlY3QgaG93IGB2aXJ0X3dpZmlfc3RhcnRfeG1pdGAgYmVoYXZlcyBvciBpcyBldmVuIGNvbXBpbGVkIGluIHRoZSBmaXJzdCBwbGFjZS4gS25vd2luZyBhbnkgZGVwZW5kZW5jaWVzIHVwIGZyb250IHdpbGwgc3RyZWFtbGluZSBteSBhbmFseXNpcyBvZiB0aGUgZnVuY3Rpb24gaXRzZWxmLCBzbyBJJiMzOTtsbCBzZWUgd2hhdCB0aGUgS2NvbmZpZ3Mgc2F5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEzOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWSVJUX1dJRkkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnPTE9Y29uZmlnIE1BQzgwMjExX0hXU0lNXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE0OmNvbmZpZyBWSVJUX1dJRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZy0xNS1cdHRyaXN0YXRlIFwmIzM0O1dpZmkgd3JhcHBlciBmb3IgZXRoZXJuZXQgZHJpdmVyc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEzOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk4OTcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipFeGFtaW5pbmcgV2lyZWxlc3MgVmlydHVhbCBEcml2ZXIgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gdGhlIHZpcnR1YWwgd2lyZWxlc3MgZHJpdmVyLiBNeSBpbnN0aW5jdCBpcyB0byBoZWFkIHN0cmFpZ2h0IGZvciB0aGUgYEtjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgY3JpdGljYWwgY29uZmlndXJhdGlvbiBsb2dpYyBsaXZlcywgcmlnaHQ/IFRoaXMgZmlsZSBzaG91bGQgcmV2ZWFsIHRoZSBuZWNlc3NhcnkgcHJlcmVxdWlzaXRlcyDigJMgb3RoZXIgZHJpdmVycywga2VybmVsIGZlYXR1cmVzLCBvciBldmVuIGhhcmR3YXJlLXNwZWNpZmljIGNvbnNpZGVyYXRpb25zIOKAkyB0aGF0IG11c3QgYmUgaW4gcGxhY2UgYmVmb3JlIHRoZSB2aXJ0dWFsIGRyaXZlciBjYW4gZXZlbiBiZSBjb25zaWRlcmVkIGZvciBpbmNsdXNpb24uIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOgoKKiAgICoqQ29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzOioqIFdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgbmVlZCB0byBiZSBlbmFibGVkIGJlZm9yZSB0aGUgdmlydHVhbCBkcml2ZXIgaXMgZXZlbiBwcmVzZW50ZWQgYXMgYW4gb3B0aW9uPyBUaGlzIG1pZ2h0IGluY2x1ZGUgb3RoZXIgd2lyZWxlc3Mgc3RhY2sgY29tcG9uZW50cyBvciBldmVuIHNwZWNpZmljIG5ldHdvcmtpbmcgZmVhdHVyZXMuCiogICAqKlN5bWJvbCBkZWZpbml0aW9uczoqKiBXaGF0IHN5bWJvbHMgYXJlIGRlZmluZWQgb3IgdXNlZCB3aXRoaW4gdGhlIEtjb25maWcgZmlsZT8gVW5kZXJzdGFuZGluZyB0aGVzZSBzeW1ib2xzIHByb3ZpZGVzIGNyaXRpY2FsIGNsdWVzIGFib3V0IHRoZSBjb2RlJiMzOTtzIGludGVuZGVkIHVzZSBhbmQgaW50ZWdyYXRpb24gd2l0aGluIHRoZSBicm9hZGVyIGtlcm5lbC4KKiAgICoqRGVmYXVsdCB2YWx1ZXMgYW5kIGhlbHAgdGV4dDoqKiBUaGUgZGVmYXVsdCBjb25maWd1cmF0aW9ucyBhbmQgYWNjb21wYW55aW5nIGhlbHAgdGV4dCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaW5pdGlhbCBvdmVydmlldy4gVGhpcyB3aWxsIHRlbGwgbWUgaG93IHRoZSBkcml2ZXIgaXMgc3VwcG9zZWQgdG8gYmUgdXNlZCBhbmQgcG90ZW50aWFsbHkgcHJvdmlkZSBpbnNpZ2h0cyBpbnRvIHR5cGljYWwgdXNlIGNhc2VzLgoqICAgKipJbmRpcmVjdCBkZXBlbmRlbmNpZXM6KiogSSYjMzk7bGwgaGF2ZSB0byBiZSB3YXJ5IG9mIGluZGlyZWN0IGRlcGVuZGVuY2llczogdGhvc2UgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgdGhlIHZpcnR1YWwgZHJpdmVyIHJlcXVpcmVzLCB3aGljaCwgaW4gdHVybiwgZGVwZW5kIG9uIG90aGVyIGNvbmZpZ3VyYXRpb25zLiBJIG11c3QgdHJhY2sgdGhlIGNvbXBsZXRlIGRlcGVuZGVuY3kgY2hhaW4gdG8gdW5kZXJzdGFuZCB0aGUgd2hvbGUgcGljdHVyZS4KClRoaXMgYEtjb25maWdgIGZpbGUgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIHZpcnR1YWwgZHJpdmVyIGludGVncmF0ZXMgaW50byB0aGUgbGFyZ2VyIGtlcm5lbCBuZXR3b3JrIHN0YWNrIGFuZCB3aGF0IGl0IHJlbGllcyBvbi4gVGltZSB0byBkaXZlIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEzOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Y29uZmlnIE1BQzgwMjExX0hXU0lNXG4gICAyOlx0XHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxMVwmIzM0O1xuICAgMzpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAgNDpcdFx0aGVscFxuICAgNTpcdFx0ICBUaGlzIGRyaXZlciBpcyBhIGRldmVsb3BlciB0ZXN0aW5nIHRvb2wgdGhhdCBjYW4gYmUgdXNlZCB0byB0ZXN0XG4gICA2Olx0XHQgIElFRUUgODAyLjExIG5ldHdvcmtpbmcgc3RhY2sgKG1hYzgwMjExKSBmdW5jdGlvbmFsaXR5LiBUaGlzIGlzIG5vdFxuICAgNzpcdFx0ICBuZWVkZWQgZm9yIG5vcm1hbCB3aXJlbGVzcyBMQU4gdXNhZ2UgYW5kIGlzIG9ubHkgZm9yIHRlc3RpbmcuIFNlZVxuICAgODpcdFx0ICBEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbWFjODAyMTFfaHdzaW0gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93XG4gICA5Olx0XHQgIHRvIHVzZSB0aGlzIHRvb2wuXG4gIDEwOlx0XG4gIDExOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZVxuICAxMjpcdFx0ICBjYWxsZWQgbWFjODAyMTFfaHdzaW0uICBJZiB1bnN1cmUsIHNheSBOLlxuICAxMzpcdFxuICAxNDpcdGNvbmZpZyBWSVJUX1dJRklcbiAgMTU6XHRcdHRyaXN0YXRlIFwmIzM0O1dpZmkgd3JhcHBlciBmb3IgZXRoZXJuZXQgZHJpdmVyc1wmIzM0O1xuICAxNjpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBUaGlzIG9wdGlvbiBhZGRzIHN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbm5lY3Rpb25zIHRvIGFwcGVhciBhcyBpZiB0aGV5XG4gIDE5Olx0XHQgIGFyZSB3aWZpIGNvbm5lY3Rpb25zIHRocm91Z2ggYSBzcGVjaWFsIHJ0bmV0bGluayBkZXZpY2UuXG4gIDIwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTM6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2MTgKCQkJCQkJCW91dHB1dDogMTE5CgkJCQkJCQl0aG91Z2h0czogMzAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgV2lGaSBWaXJ0dWFsaXphdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoZSBrZXkgZGVwZW5kZW5jaWVzOiBgQ0ZHODAyMTFgLiBUaGF0IG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggY29uZmlndXJhdGlvbnMgYFZJUlRfV0lGSWAgYW5kIGBDRkc4MDIxMWAuIFRoZSBwYXRjaCBpdHNlbGYgdGFyZ2V0cyBhIG1lbW9yeSBsZWFrLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGB2aXJ0X3dpZmlfc3RhcnRfeG1pdGAgZnVuY3Rpb24uIEl0JiMzOTtzIGEgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGJ1ZyBmaXgsIGFuZCBpdCYjMzk7cyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGF0IG1ha2VzIGl0IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIGB2aXJ0X3dpZmlfc3RhcnRfeG1pdGAgaXMgdGhlIGZvY3VzLCBvZiBjb3Vyc2UsIGdpdmVuIGl0JiMzOTtzIHRoZSB0YXJnZXQgZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGBWSVJUX1dJRklgIGFuZCBgQ0ZHODAyMTFgIHRvIHRyaWdnZXIgdGhpcy4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgbm8sIGB2aXJ0X3dpZmlfc3RhcnRfeG1pdGAgaXMgdGhlIG9ubHkgZnVuY3Rpb24gdGhhdCB3YXMgbW9kaWZpZWQgaW4gdGhpcyBwYXRjaC4KClJpZ2h0LCB0aGlzIGlzIGEgdmVyeSBzaW1wbGUgcGF0Y2gsIGxvb2tpbmcgYXQgdGhlIGNvZGU6CgpgYGBjCkBAIC00MzQsNiAmIzQzOzQzNCw3IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCB2aXJ0X3dpZmlfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXByaXYtJmd0O3R4X3BhY2tldHMmIzQzOyYjNDM7OwogCWlmICghcHJpdi0mZ3Q7aXNfY29ubmVjdGVkKSB7CiAJCXByaXYtJmd0O3R4X2ZhaWxlZCYjNDM7JiM0Mzs7CiYjNDM7CQlkZXZfa2ZyZWVfc2tiX2FueShza2IpOwogCQlyZXR1cm4gTkVUX1hNSVRfRFJPUDsKIAl9CmBgYAoKSXQmIzM5O3MgYSBjbGVhciBtZW1vcnkgbGVhayBmaXg7IGFkZGluZyBgZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtgIHdoZW4gdGhlIHRyYW5zbWlzc2lvbiBmYWlscy4gT2theSwgSSYjMzk7bSBzYXRpc2ZpZWQuIExldCYjMzk7cyBzZXQgdGhlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEzOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSVJUX1dJRkkmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2aXJ0X3dpZmlfc3RhcnRfeG1pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSB2aXJ0X3dpZmlfc3RhcnRfeG1pdCBmdW5jdGlvbiBvZiB0aGUgdmlydF93aWZpIGRyaXZlciBieSBmcmVlaW5nIHRoZSBza2Igd2hlbiB0aGUgZGV2aWNlIGlzIG5vdCBjb25uZWN0ZWQuIFRoZSB2aXJ0X3dpZmkgZHJpdmVyIGlzIGEgdmlydHVhbCB3aXJlbGVzcyBkcml2ZXIgdGhhdCB3cmFwcyBldGhlcm5ldCBkZXZpY2VzLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VklSVF9XSUZJJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmlydF93aWZpX3N0YXJ0X3htaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgdmlydF93aWZpX3N0YXJ0X3htaXQgZnVuY3Rpb24gb2YgdGhlIHZpcnRfd2lmaSBkcml2ZXIgYnkgZnJlZWluZyB0aGUgc2tiIHdoZW4gdGhlIGRldmljZSBpcyBub3QgY29ubmVjdGVkLiBUaGUgdmlydF93aWZpIGRyaXZlciBpcyBhIHZpcnR1YWwgd2lyZWxlc3MgZHJpdmVyIHRoYXQgd3JhcHMgZXRoZXJuZXQgZGV2aWNlcywgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEzOjI3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTM6Mjc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBieSBhZGRpbmcgYGRldl9rZnJlZV9za2JfYW55KHNrYilgIHdoZW4gdGhlIHZpcnR1YWwgd2lmaSBkZXZpY2UgaXMgbm90IGNvbm5lY3RlZCBhbmQgZHJvcHMgdGhlIHBhY2tldC4gVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGxvZ2ljIHRoYXQgY291bGQgbGVhZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkIG9yIGxlYWtlZCB0byB1c2VyIHNwYWNlLiBBbnkgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDgyN2FiZjAzYTBmYWVkNDAwNTAzOTg3ZDBlOGEwZjk4NGNkNzEyNzUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEF1ZyA5IDEzOjI3OjAxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMKaW5kZXggMjMzNWU0NWRiOGI4NS4uYjY5YTQ2NTBmYmE4NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jCkBAIC00MzQsNiAmIzQzOzQzNCw3IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCB2aXJ0X3dpZmlfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXByaXYtJmd0O3R4X3BhY2tldHMmIzQzOyYjNDM7OwogCWlmICghcHJpdi0mZ3Q7aXNfY29ubmVjdGVkKSB7CiAJCXByaXYtJmd0O3R4X2ZhaWxlZCYjNDM7JiM0Mzs7CiYjNDM7CQlkZXZfa2ZyZWVfc2tiX2FueShza2IpOwogCQlyZXR1cm4gTkVUX1hNSVRfRFJPUDsKIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEzOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5ODEKCQkJCQkJCW91dHB1dDogMTMyCgkJCQkJCQl0aG91Z2h0czogMjkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1lbW9yeSBMZWFrIEZpeCBpbiBOZXR3b3JrIERyaXZlciBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYHZpcnRfd2lmaV9zdGFydF94bWl0YCBmdW5jdGlvbi4gVGhleSYjMzk7dmUgYWRkZWQgYGRldl9rZnJlZV9za2JfYW55KHNrYik7YCB3aGVuIHRoZSBkZXZpY2UgaXNuJiMzOTt0IGNvbm5lY3RlZCwgc3BlY2lmaWNhbGx5IHdoZW4gYCFwcml2LSZndDtpc19jb25uZWN0ZWRgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7WWVzLCB0aGF0JiMzOTtzIGEgZ29vZCBtb3ZlLiYjMzQ7IFRoYXQmIzM5O3MgY2xhc3NpYyBtZW1vcnkgbGVhayBwcmV2ZW50aW9uLiBJZiB0aGUgcGFja2V0IChgc2tiYCkgaXMgZHJvcHBlZCBiZWNhdXNlIHRoZSBjb25uZWN0aW9uIGlzbiYjMzk7dCB1cCwgaXQgKnNob3VsZCogYmUgZnJlZWQuIE90aGVyd2lzZSwgd2UmIzM5O2QgaGF2ZSBhIGxlYWssIG9yIHBvdGVudGlhbGx5IGEgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUsIGFsdGhvdWdoIGluIHRoaXMgY2FzZSBpdCYjMzk7cyBqdXN0IGEgbGVhay4KCk5vdywgbXkgbW9yZSBleHBlcmllbmNlZCBicmFpbiBraWNrcyBpbiwgYW5kIEkgdGhpbmssICYjMzQ7SG9sZCBvbiwgZG9lcyB0aGlzIHBhdGNoIGludHJvZHVjZSBhbnkgcmlza3Mgd2l0aCB1bmluaXRpYWxpemVkIG1lbW9yeT8mIzM0OyBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHRoZSBhbmdsZXMuIEJ1dCBubywgd2FpdC4uLiBuby4gVGhpcyBwYXRjaCAqb25seSogZnJlZXMgYSBzdHJ1Y3R1cmUuIEl0JiMzOTtzIG5vdCByZWFkaW5nIGZyb20gb3Igd3JpdGluZyB0byBhbnl0aGluZyB0aGF0IGlzbiYjMzk7dCBhbHJlYWR5IGluaXRpYWxpemVkLiBLQVNBTi9rbWVtbGVhay9ldGMuIGFyZSB0aGUgdG9vbHMgdGhhdCB3aWxsIGhlbHAgdXMgY2F0Y2ggbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMuIEtNU0FOIGRlYWxzIHdpdGggdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoaXMgaXNuJiMzOTt0IHRoYXQuCgpKdXN0IHRvIGJlIHN1cmUsIEkgbmVlZCB0byB0YWtlIGEgcXVpY2sgcGVlayBhdCB0aGUgcGF0Y2ggY29kZSBpdHNlbGYgdG8gZW5zdXJlIGl0IGlzIHdoYXQgSSB0aGluayBpdCBpcy4KCmBgYGMKQEAgLTQzNCw2ICYjNDM7NDM0LDcgQEAgc3RhdGljIG5ldGRldl90eF90IHZpcnRfd2lmaV9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsCiAJcHJpdi0mZ3Q7dHhfcGFja2V0cyYjNDM7JiM0Mzs7CiAJaWYgKCFwcml2LSZndDtpc19jb25uZWN0ZWQpIHsKIAkJcHJpdi0mZ3Q7dHhfZmFpbGVkJiM0MzsmIzQzOzsKJiM0MzsJCWRldl9rZnJlZV9za2JfYW55KHNrYik7CiAJCXJldHVybiBORVRfWE1JVF9EUk9QOwogCX0KIGBgYAoKWWVwLiBTdGFuZGFyZCBtZW1vcnkgbGVhayBmaXguIE5vdGhpbmcgdG8gd29ycnkgYWJvdXQgaW4gdGVybXMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuIGBOZWVkc0tNU0FOID0gZmFsc2VgLiBXZSYjMzk7cmUgZ29vZCB0byBnby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTM6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBieSBhZGRpbmcgYGRldl9rZnJlZV9za2JfYW55KHNrYilgIHdoZW4gdGhlIHZpcnR1YWwgd2lmaSBkZXZpY2UgaXMgbm90IGNvbm5lY3RlZCBhbmQgZHJvcHMgdGhlIHBhY2tldC4gVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGxvZ2ljIHRoYXQgY291bGQgbGVhZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkIG9yIGxlYWtlZCB0byB1c2VyIHNwYWNlLiBBbnkgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGJ5IGFkZGluZyBgZGV2X2tmcmVlX3NrYl9hbnkoc2tiKWAgd2hlbiB0aGUgdmlydHVhbCB3aWZpIGRldmljZSBpcyBub3QgY29ubmVjdGVkIGFuZCBkcm9wcyB0aGUgcGFja2V0LiBUaGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgbG9naWMgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQgb3IgbGVha2VkIHRvIHVzZXIgc3BhY2UuIEFueSBwb3RlbnRpYWwgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2UgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTM6Mjc6MDIuNDQwOTE1MjI2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAwMDkwMjQ3MjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZJUlRfV0lGSVwiLFxuICAgIFwiQ0ZHODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2aXJ0X3dpZmlfc3RhcnRfeG1pdFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBieSBhZGRpbmcgYGRldl9rZnJlZV9za2JfYW55KHNrYilgIHdoZW4gdGhlIHZpcnR1YWwgd2lmaSBkZXZpY2UgaXMgbm90IGNvbm5lY3RlZCBhbmQgZHJvcHMgdGhlIHBhY2tldC4gVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGxvZ2ljIHRoYXQgY291bGQgbGVhZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkIG9yIGxlYWtlZCB0byB1c2VyIHNwYWNlLiBBbnkgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgdmlydF93aWZpX3N0YXJ0X3htaXQgZnVuY3Rpb24gb2YgdGhlIHZpcnRfd2lmaSBkcml2ZXIgYnkgZnJlZWluZyB0aGUgc2tiIHdoZW4gdGhlIGRldmljZSBpcyBub3QgY29ubmVjdGVkLiBUaGUgdmlydF93aWZpIGRyaXZlciBpcyBhIHZpcnR1YWwgd2lyZWxlc3MgZHJpdmVyIHRoYXQgd3JhcHMgZXRoZXJuZXQgZGV2aWNlcywgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEzOjI3OjAyLjQ0MDkyMDM2NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDczNzYzMTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODI3YWJmMDNhMGZhZWQ0MDA1MDM5ODdkMGU4YTBmOTg0Y2Q3MTI3NVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyA5IDEzOjI3OjAxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jXFxuaW5kZXggMjMzNWU0NWRiOGI4NS4uYjY5YTQ2NTBmYmE4NSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuY1xcbkBAIC00MzQsNiArNDM0LDcgQEAgc3RhdGljIG5ldGRldl90eF90IHZpcnRfd2lmaV9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHByaXYtXFx1MDAzZXR4X3BhY2tldHMrKztcXG4gXFx0aWYgKCFwcml2LVxcdTAwM2Vpc19jb25uZWN0ZWQpIHtcXG4gXFx0XFx0cHJpdi1cXHUwMDNldHhfZmFpbGVkKys7XFxuK1xcdFxcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XFxuIFxcdFxcdHJldHVybiBORVRfWE1JVF9EUk9QO1xcbiBcXHR9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMzoyNzowMi45MTUyNzE4OTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNDU1MzAyMDQ0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSVJUX1dJRklcIixcbiAgICBcIkNGRzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmlydF93aWZpX3N0YXJ0X3htaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSB2aXJ0X3dpZmlfc3RhcnRfeG1pdCBmdW5jdGlvbiBvZiB0aGUgdmlydF93aWZpIGRyaXZlciBieSBmcmVlaW5nIHRoZSBza2Igd2hlbiB0aGUgZGV2aWNlIGlzIG5vdCBjb25uZWN0ZWQuIFRoZSB2aXJ0X3dpZmkgZHJpdmVyIGlzIGEgdmlydHVhbCB3aXJlbGVzcyBkcml2ZXIgdGhhdCB3cmFwcyBldGhlcm5ldCBkZXZpY2VzLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgODI3YWJmMDNhMGZhZWQ0MDA1MDM5ODdkMGU4YTBmOTg0Y2Q3MTI3NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDkgMTM6Mjc6MDEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuY1xuaW5kZXggMjMzNWU0NWRiOGI4NS4uYjY5YTQ2NTBmYmE4NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmNcbkBAIC00MzQsNiArNDM0LDcgQEAgc3RhdGljIG5ldGRldl90eF90IHZpcnRfd2lmaV9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRwcml2LVx1MDAzZXR4X3BhY2tldHMrKztcbiBcdGlmICghcHJpdi1cdTAwM2Vpc19jb25uZWN0ZWQpIHtcbiBcdFx0cHJpdi1cdTAwM2V0eF9mYWlsZWQrKztcbitcdFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtcbiBcdFx0cmV0dXJuIE5FVF9YTUlUX0RST1A7XG4gXHR9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMzoyNzowMi45MTUyNzMyMTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MjQ0MDM4NjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFZpcnR1YWwgV2lGaSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuY2AuIEl0IHNlZW1zIHRoZXkndmUgYWRkZWQgYSBgZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtgIGNhbGwgd2l0aGluIGB2aXJ0X3dpZmlfc3RhcnRfeG1pdGAgd2hlbiB0aGUgZHJpdmVyIGlzbid0IGNvbm5lY3RlZCwgc3BlY2lmaWNhbGx5IHdoZW4gYCFwcml2LVx1MDAzZWlzX2Nvbm5lY3RlZGAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIGlzIGxpa2VseSBhIGJ1ZyBmaXgg4oCTIHByb2JhYmx5IGEgbWVtb3J5IGxlYWsuXG5cbkxldCBtZSByZWZyZXNoIG15IG1lbW9yeSBvZiBgdmlydF93aWZpX3N0YXJ0X3htaXRgIGluIHRoYXQgZmlsZS4gWWVzLCB0aGlzIGlzIHRoZSB2aXJ0dWFsIFdpRmkgZHJpdmVyLCB3aGljaCwgb2YgY291cnNlLCBtZWFucyBpdCdzIGhlYXZpbHkgdXNlZCBpbiB2aXJ0dWFsaXphdGlvbiBzY2VuYXJpb3MuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0J3MgZWFzeSB0byBoaXQgYW4gZWRnZSBjYXNlIHdoZXJlIGEgdmlydHVhbCBkZXZpY2UgaXMgdHJ5aW5nIHRvIHRyYW5zbWl0IGJlZm9yZSBpdCdzIGZ1bGx5IGNvbm5lY3RlZC4gVGhpcyBgZGV2X2tmcmVlX3NrYl9hbnkoc2tiKWAgY2FsbCBpcyB0aGUga2V5IHRvIGFkZHJlc3MgdGhlIG1lbW9yeSBsZWFrOiByZWxlYXNpbmcgdGhlIGBza2JgIHdoZW4gdGhlIGRldmljZSBpc24ndCBwcm9wZXJseSBjb25uZWN0ZWQuXG5cbk5leHQgc3RlcD8gSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBjb25maWcgZm9yIGB2aXJ0X3dpZmlgLCBqdXN0IHRvIHZlcmlmeSBpdHMgY29uZmlndXJhdGlvbiBpcyBzdHJhaWdodGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODQsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMzoyNzoxMS4xNTkzMTQ0ODhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ4MDYxMDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZpcnRfd2lmaVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL01ha2VmaWxlPTM9bWFjODAyMTFfaHdzaW0tb2Jqc1xcdFxcdCs9IG1hYzgwMjExX2h3c2ltX25hbi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9NYWtlZmlsZS00LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfVklSVF9XSUZJKVxcdCs9IHZpcnRfd2lmaS5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjI6LyogZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydF93aWZpLmNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTMtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM9MTg9c3RhdGljIHN0cnVjdCB3aXBoeSAqY29tbW9uX3dpcGh5O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzoyMDpzdHJ1Y3QgdmlydF93aWZpX3dpcGh5X3ByaXYge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjEtXFx0c3RydWN0IGRlbGF5ZWRfd29yayBzY2FuX3Jlc3VsdDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM9MTM3PXN0YXRpYyB1OCBmYWtlX3JvdXRlcl9ic3NpZFtFVEhfQUxFTl0gX19yb19hZnRlcl9pbml0ID0ge307XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTE0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjE0MjpzdGF0aWMgdm9pZCB2aXJ0X3dpZmlfaW5mb3JtX2JzcyhzdHJ1Y3Qgd2lwaHkgKndpcGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMTQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMTY1LS8qIENhbGxlZCB3aXRoIHRoZSBydG5sIGxvY2sgaGVsZC4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjE2NjpzdGF0aWMgaW50IHZpcnRfd2lmaV9zY2FuKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0xNjctXFx0XFx0XFx0ICBzdHJ1Y3QgY2ZnODAyMTFfc2Nhbl9yZXF1ZXN0ICpyZXF1ZXN0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMTY4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjE2OTpcXHRzdHJ1Y3QgdmlydF93aWZpX3dpcGh5X3ByaXYgKnByaXYgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTE3MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMTgyLS8qIEFjcXVpcmVzIGFuZCByZWxlYXNlcyB0aGUgcmRldiBCU1MgbG9jay4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjE4MzpzdGF0aWMgdm9pZCB2aXJ0X3dpZmlfc2Nhbl9yZXN1bHQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMTg0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjE4NTpcXHRzdHJ1Y3QgdmlydF93aWZpX3dpcGh5X3ByaXYgKnByaXYgPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MTg2OlxcdFxcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdmlydF93aWZpX3dpcGh5X3ByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0xODctXFx0XFx0XFx0ICAgICBzY2FuX3Jlc3VsdC53b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMTkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MTkxOlxcdHZpcnRfd2lmaV9pbmZvcm1fYnNzKHdpcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTE5Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMTk4LS8qIE1heSBhY3F1aXJlIGFuZCByZWxlYXNlIHRoZSByZGV2IEJTUyBsb2NrLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MTk5OnN0YXRpYyB2b2lkIHZpcnRfd2lmaV9jYW5jZWxfc2NhbihzdHJ1Y3Qgd2lwaHkgKndpcGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjAwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjIwMTpcXHRzdHJ1Y3QgdmlydF93aWZpX3dpcGh5X3ByaXYgKnByaXYgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTIwMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MjEzOnN0cnVjdCB2aXJ0X3dpZmlfbmV0ZGV2X3ByaXYge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjE0LVxcdHN0cnVjdCBkZWxheWVkX3dvcmsgY29ubmVjdDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjI3LS8qIENhbGxlZCB3aXRoIHRoZSBydG5sIGxvY2sgaGVsZC4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjIyODpzdGF0aWMgaW50IHZpcnRfd2lmaV9jb25uZWN0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0yMjktXFx0XFx0XFx0ICAgICBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTIzMC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzoyMzE6XFx0c3RydWN0IHZpcnRfd2lmaV9uZXRkZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0yMzItXFx0Ym9vbCBjb3VsZF9zY2hlZHVsZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjQ5LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzoyNTA6XFx0XFx0dmlydF93aWZpX2luZm9ybV9ic3Mod2lwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjUxLVxcdFxcdGV0aF96ZXJvX2FkZHIocHJpdi1cXHUwMDNlY29ubmVjdF9yZXF1ZXN0ZWRfYnNzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjU5LS8qIEFjcXVpcmVzIGFuZCByZWxlYXNlcyB0aGUgcmRldiBldmVudCBsb2NrLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MjYwOnN0YXRpYyB2b2lkIHZpcnRfd2lmaV9jb25uZWN0X2NvbXBsZXRlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTI2MS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzoyNjI6XFx0c3RydWN0IHZpcnRfd2lmaV9uZXRkZXZfcHJpdiAqcHJpdiA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzoyNjM6XFx0XFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB2aXJ0X3dpZmlfbmV0ZGV2X3ByaXYsIGNvbm5lY3Qud29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0yNjQtXFx0dTggKnJlcXVlc3RlZF9ic3MgPSBwcml2LVxcdTAwM2Vjb25uZWN0X3JlcXVlc3RlZF9ic3M7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTI4Ny0vKiBNYXkgYWNxdWlyZSBhbmQgcmVsZWFzZSB0aGUgcmRldiBldmVudCBsb2NrLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6Mjg4OnN0YXRpYyB2b2lkIHZpcnRfd2lmaV9jYW5jZWxfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjg5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjI5MDpcXHRzdHJ1Y3QgdmlydF93aWZpX25ldGRldl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTI5MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzAzLS8qIENhbGxlZCB3aXRoIHRoZSBydG5sIGxvY2sgaGVsZC4gQWNxdWlyZXMgdGhlIHJkZXYgZXZlbnQgbG9jay4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjMwNDpzdGF0aWMgaW50IHZpcnRfd2lmaV9kaXNjb25uZWN0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zMDUtXFx0XFx0XFx0XFx0dTE2IHJlYXNvbl9jb2RlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzA2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjMwNzpcXHRzdHJ1Y3QgdmlydF93aWZpX25ldGRldl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTMwOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzEyLVxcdHdpcGh5X2RlYnVnKHdpcGh5LCBcXFwiZGlzY29ubmVjdFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozMTM6XFx0dmlydF93aWZpX2NhbmNlbF9jb25uZWN0KG5ldGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zMTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTMyMi0vKiBDYWxsZWQgd2l0aCB0aGUgcnRubCBsb2NrIGhlbGQuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozMjM6c3RhdGljIGludCB2aXJ0X3dpZmlfZ2V0X3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTMyNC1cXHRcXHRcXHRcXHQgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgY29uc3QgdTggKm1hYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzI3LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSB3ZGV2LVxcdTAwM2VuZXRkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozMjg6XFx0c3RydWN0IHZpcnRfd2lmaV9uZXRkZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zMjktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTM0OS0vKiBDYWxsZWQgd2l0aCB0aGUgcnRubCBsb2NrIGhlbGQuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozNTA6c3RhdGljIGludCB2aXJ0X3dpZmlfZHVtcF9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zNTEtXFx0XFx0XFx0XFx0ICBpbnQgaWR4LCB1OCAqbWFjLCBzdHJ1Y3Qgc3RhdGlvbl9pbmZvICpzaW5mbylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTM1Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozNTM6XFx0c3RydWN0IHZpcnRfd2lmaV9uZXRkZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KHdkZXYtXFx1MDAzZW5ldGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zNTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTM2MC1cXHRldGhlcl9hZGRyX2NvcHkobWFjLCBmYWtlX3JvdXRlcl9ic3NpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozNjE6XFx0cmV0dXJuIHZpcnRfd2lmaV9nZXRfc3RhdGlvbih3aXBoeSwgd2RldiwgZmFrZV9yb3V0ZXJfYnNzaWQsIHNpbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTM2Mi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozNjQ6c3RhdGljIGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9vcHMgdmlydF93aWZpX2NmZzgwMjExX29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjM2NTpcXHQuc2NhbiA9IHZpcnRfd2lmaV9zY2FuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MzY3OlxcdC5jb25uZWN0ID0gdmlydF93aWZpX2Nvbm5lY3QsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozNjg6XFx0LmRpc2Nvbm5lY3QgPSB2aXJ0X3dpZmlfZGlzY29ubmVjdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTM2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjM3MDpcXHQuZ2V0X3N0YXRpb24gPSB2aXJ0X3dpZmlfZ2V0X3N0YXRpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozNzE6XFx0LmR1bXBfc3RhdGlvbiA9IHZpcnRfd2lmaV9kdW1wX3N0YXRpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zNzItfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzc0LS8qIEFjcXVpcmVzIGFuZCByZWxlYXNlcyB0aGUgcnRubCBsb2NrLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6Mzc1OnN0YXRpYyBzdHJ1Y3Qgd2lwaHkgKnZpcnRfd2lmaV9tYWtlX3dpcGh5KHZvaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zNzYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzc3LVxcdHN0cnVjdCB3aXBoeSAqd2lwaHk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozNzg6XFx0c3RydWN0IHZpcnRfd2lmaV93aXBoeV9wcml2ICpwcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzc5LVxcdGludCBlcnI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozODE6XFx0d2lwaHkgPSB3aXBoeV9uZXcoXFx1MDAyNnZpcnRfd2lmaV9jZmc4MDIxMV9vcHMsIHNpemVvZigqcHJpdikpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzgyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zOTgtXFx0cHJpdi1cXHUwMDNlc2Nhbl9yZXF1ZXN0ID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjM5OTpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2cHJpdi1cXHUwMDNlc2Nhbl9yZXN1bHQsIHZpcnRfd2lmaV9zY2FuX3Jlc3VsdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00MDAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQxMC0vKiBBY3F1aXJlcyBhbmQgcmVsZWFzZXMgdGhlIHJ0bmwgbG9jay4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQxMTpzdGF0aWMgdm9pZCB2aXJ0X3dpZmlfZGVzdHJveV93aXBoeShzdHJ1Y3Qgd2lwaHkgKndpcGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDEyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQxMzpcXHRzdHJ1Y3QgdmlydF93aWZpX3dpcGh5X3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00MTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQyMC1cXHRwcml2LVxcdTAwM2ViZWluZ19kZWxldGVkID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQyMTpcXHR2aXJ0X3dpZmlfY2FuY2VsX3NjYW4od2lwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDIyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00MjgtLyogRW50ZXJzIGFuZCBleGl0cyBhIFJDVS1iaCBjcml0aWNhbCBzZWN0aW9uLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDI5OnN0YXRpYyBuZXRkZXZfdHhfdCB2aXJ0X3dpZmlfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDMwLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00MzEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDMyOlxcdHN0cnVjdCB2aXJ0X3dpZmlfbmV0ZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDMzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00NDUtLyogQ2FsbGVkIHdpdGggcnRubCBsb2NrIGhlbGQuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo0NDY6c3RhdGljIGludCB2aXJ0X3dpZmlfbmV0X2RldmljZV9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00NDcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDQ4OlxcdHN0cnVjdCB2aXJ0X3dpZmlfbmV0ZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00NTQtLyogQ2FsbGVkIHdpdGggcnRubCBsb2NrIGhlbGQuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo0NTU6c3RhdGljIGludCB2aXJ0X3dpZmlfbmV0X2RldmljZV9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00NTYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDU3OlxcdHN0cnVjdCB2aXJ0X3dpZmlfbmV0ZGV2X3ByaXYgKm5fcHJpdiA9IG5ldGRldl9wcml2KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00NTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQ2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQ2NDpcXHR2aXJ0X3dpZmlfY2FuY2VsX3NjYW4oZGV2LVxcdTAwM2VpZWVlODAyMTFfcHRyLVxcdTAwM2V3aXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo0NjU6XFx0dmlydF93aWZpX2NhbmNlbF9jb25uZWN0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00NjYtXFx0bmV0aWZfY2Fycmllcl9vZmYoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDcxOnN0YXRpYyBpbnQgdmlydF93aWZpX25ldF9kZXZpY2VfZ2V0X2lmbGluayhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDcyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQ3MzpcXHRzdHJ1Y3QgdmlydF93aWZpX25ldGRldl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQ3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDc4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdmlydF93aWZpX29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQ3OTpcXHQubmRvX3N0YXJ0X3htaXQgPSB2aXJ0X3dpZmlfc3RhcnRfeG1pdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQ4MDpcXHQubmRvX29wZW5cXHQ9IHZpcnRfd2lmaV9uZXRfZGV2aWNlX29wZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo0ODE6XFx0Lm5kb19zdG9wXFx0PSB2aXJ0X3dpZmlfbmV0X2RldmljZV9zdG9wLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDgyOlxcdC5uZG9fZ2V0X2lmbGluayA9IHZpcnRfd2lmaV9uZXRfZGV2aWNlX2dldF9pZmxpbmssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00ODMtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDg1LS8qIEludm9rZWQgYXMgcGFydCBvZiBydG5sIGxvY2sgcmVsZWFzZS4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQ4NjpzdGF0aWMgdm9pZCB2aXJ0X3dpZmlfbmV0X2RldmljZV9kZXN0cnVjdG9yKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00ODcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00OTUtLyogTm8gbG9jayBpbnRlcmFjdGlvbi4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQ5NjpzdGF0aWMgdm9pZCB2aXJ0X3dpZmlfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQ5Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00OTgtXFx0ZXRoZXJfc2V0dXAoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQ5OTpcXHRkZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2dmlydF93aWZpX29wcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTUwMC1cXHRkZXYtXFx1MDAzZW5lZWRzX2ZyZWVfbmV0ZGV2ICA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTUwMy0vKiBDYWxsZWQgaW4gYSBSQ1UgcmVhZCBjcml0aWNhbCBzZWN0aW9uIGZyb20gbmV0aWZfcmVjZWl2ZV9za2IgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjUwNDpzdGF0aWMgcnhfaGFuZGxlcl9yZXN1bHRfdCB2aXJ0X3dpZmlfcnhfaGFuZGxlcihzdHJ1Y3Qgc2tfYnVmZiAqKnBza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy01MDUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNTA2LVxcdHN0cnVjdCBza19idWZmICpza2IgPSAqcHNrYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjUwNzpcXHRzdHJ1Y3QgdmlydF93aWZpX25ldGRldl9wcml2ICpwcml2ID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTUwOC1cXHRcXHRyY3VfZGVyZWZlcmVuY2Uoc2tiLVxcdTAwM2VkZXYtXFx1MDAzZXJ4X2hhbmRsZXJfZGF0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTUyNi0vKiBDYWxsZWQgd2l0aCBydG5sIGxvY2sgaGVsZC4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjUyNzpzdGF0aWMgaW50IHZpcnRfd2lmaV9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy01MjgtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy01MzAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NTMxOlxcdHN0cnVjdCB2aXJ0X3dpZmlfbmV0ZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNTMyLVxcdHN0cnVjdCBuZXQgKmxpbmtfbmV0ID0gcnRubF9uZXdsaW5rX2xpbmtfbmV0KHBhcmFtcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTU1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjU1MjpcXHRlcnIgPSBuZXRkZXZfcnhfaGFuZGxlcl9yZWdpc3Rlcihwcml2LVxcdTAwM2Vsb3dlcmRldiwgdmlydF93aWZpX3J4X2hhbmRsZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy01NTMtXFx0XFx0XFx0XFx0XFx0IHByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy01ODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo1ODc6XFx0ZGV2LVxcdTAwM2Vwcml2X2Rlc3RydWN0b3IgPSB2aXJ0X3dpZmlfbmV0X2RldmljZV9kZXN0cnVjdG9yO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNTg4LVxcdHByaXYtXFx1MDAzZWJlaW5nX2RlbGV0ZWQgPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNTkwLVxcdHByaXYtXFx1MDAzZWlzX3VwID0gZmFsc2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo1OTE6XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNnByaXYtXFx1MDAzZWNvbm5lY3QsIHZpcnRfd2lmaV9jb25uZWN0X2NvbXBsZXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTU5Mi1cXHRfX21vZHVsZV9nZXQoVEhJU19NT0RVTEUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02MDYtLyogQ2FsbGVkIHdpdGggcnRubCBsb2NrIGhlbGQuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2MDc6c3RhdGljIHZvaWQgdmlydF93aWZpX2RlbGxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTYwOC1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNjA5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjYxMDpcXHRzdHJ1Y3QgdmlydF93aWZpX25ldGRldl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTYxMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTYxMi1cXHRpZiAoZGV2LVxcdTAwM2VpZWVlODAyMTFfcHRyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NjEzOlxcdFxcdHZpcnRfd2lmaV9jYW5jZWxfc2NhbihkZXYtXFx1MDAzZWllZWU4MDIxMV9wdHItXFx1MDAzZXdpcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTYxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTYxNS1cXHRwcml2LVxcdTAwM2ViZWluZ19kZWxldGVkID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjYxNjpcXHR2aXJ0X3dpZmlfY2FuY2VsX2Nvbm5lY3QoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTYxNy1cXHRuZXRpZl9jYXJyaWVyX29mZihkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02MjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2Mjg6c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIHZpcnRfd2lmaV9saW5rX29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjYyOTpcXHQua2luZFxcdFxcdD0gXFxcInZpcnRfd2lmaVxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2MzA6XFx0LnNldHVwXFx0XFx0PSB2aXJ0X3dpZmlfc2V0dXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2MzE6XFx0Lm5ld2xpbmtcXHQ9IHZpcnRfd2lmaV9uZXdsaW5rLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NjMyOlxcdC5kZWxsaW5rXFx0PSB2aXJ0X3dpZmlfZGVsbGluayxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjYzMzpcXHQucHJpdl9zaXplXFx0PSBzaXplb2Yoc3RydWN0IHZpcnRfd2lmaV9uZXRkZXZfcHJpdiksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02MzQtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTYzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjYzNjpzdGF0aWMgYm9vbCBuZXRpZl9pc192aXJ0X3dpZmlfZGV2KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02Mzcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NjM4OlxcdHJldHVybiByY3VfYWNjZXNzX3BvaW50ZXIoZGV2LVxcdTAwM2VyeF9oYW5kbGVyKSA9PSB2aXJ0X3dpZmlfcnhfaGFuZGxlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTYzOS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02NDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2NDE6c3RhdGljIGludCB2aXJ0X3dpZmlfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLCB1bnNpZ25lZCBsb25nIGV2ZW50LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNjQyLVxcdFxcdFxcdCAgIHZvaWQgKnB0cilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNjQ0LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpsb3dlcl9kZXYgPSBuZXRkZXZfbm90aWZpZXJfaW5mb190b19kZXYocHRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjY0NTpcXHRzdHJ1Y3QgdmlydF93aWZpX25ldGRldl9wcml2ICpwcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNjQ2LVxcdHN0cnVjdCBuZXRfZGV2aWNlICp1cHBlcl9kZXY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY0OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjY0OTpcXHRpZiAoIW5ldGlmX2lzX3ZpcnRfd2lmaV9kZXYobG93ZXJfZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY1MC1cXHRcXHRyZXR1cm4gTk9USUZZX0RPTkU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjY2ODpzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHZpcnRfd2lmaV9ub3RpZmllciA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjY2OTpcXHQubm90aWZpZXJfY2FsbCA9IHZpcnRfd2lmaV9ldmVudCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY3MC19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02NzItLyogQWNxdWlyZXMgYW5kIHJlbGVhc2VzIHRoZSBydG5sIGxvY2suICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2NzM6c3RhdGljIGludCBfX2luaXQgdmlydF93aWZpX2luaXRfbW9kdWxlKHZvaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02NzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02NzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2ODA6XFx0ZXJyID0gcmVnaXN0ZXJfbmV0ZGV2aWNlX25vdGlmaWVyKFxcdTAwMjZ2aXJ0X3dpZmlfbm90aWZpZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNjgxLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY4NC1cXHRlcnIgPSAtRU5PTUVNO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6Njg1OlxcdGNvbW1vbl93aXBoeSA9IHZpcnRfd2lmaV9tYWtlX3dpcGh5KCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02ODYtXFx0aWYgKCFjb21tb25fd2lwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjY4OTpcXHRlcnIgPSBydG5sX2xpbmtfcmVnaXN0ZXIoXFx1MDAyNnZpcnRfd2lmaV9saW5rX29wcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02OTAtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNjk1LWRlc3Ryb3lfd2lwaHk6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2OTY6XFx0dmlydF93aWZpX2Rlc3Ryb3lfd2lwaHkoY29tbW9uX3dpcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY5Ny1ub3RpZmllcjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjY5ODpcXHR1bnJlZ2lzdGVyX25ldGRldmljZV9ub3RpZmllcihcXHUwMDI2dmlydF93aWZpX25vdGlmaWVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY5OS1cXHRyZXR1cm4gZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy03MDItLyogQWNxdWlyZXMgYW5kIHJlbGVhc2VzIHRoZSBydG5sIGxvY2suICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo3MDM6c3RhdGljIHZvaWQgX19leGl0IHZpcnRfd2lmaV9jbGVhbnVwX21vZHVsZSh2b2lkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNzA0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTcwNS1cXHQvKiBXaWxsIGRlbGV0ZSBhbnkgZGV2aWNlcyB0aGF0IGRlcGVuZCBvbiB0aGUgd2lwaHkuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo3MDY6XFx0cnRubF9saW5rX3VucmVnaXN0ZXIoXFx1MDAyNnZpcnRfd2lmaV9saW5rX29wcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo3MDc6XFx0dmlydF93aWZpX2Rlc3Ryb3lfd2lwaHkoY29tbW9uX3dpcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjcwODpcXHR1bnJlZ2lzdGVyX25ldGRldmljZV9ub3RpZmllcihcXHUwMDI2dmlydF93aWZpX25vdGlmaWVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTcwOS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy03MTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo3MTE6bW9kdWxlX2luaXQodmlydF93aWZpX2luaXRfbW9kdWxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjcxMjptb2R1bGVfZXhpdCh2aXJ0X3dpZmlfY2xlYW51cF9tb2R1bGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNzEzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYz03MTY9TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJEcml2ZXIgZm9yIGEgd2lyZWxlc3Mgd3JhcHBlciBvZiBldGhlcm5ldCBkZXZpY2VzXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo3MTc6TU9EVUxFX0FMSUFTX1JUTkxfTElOSyhcXFwidmlydF93aWZpXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEzOjI3OjExLjYwNzM4MDY5NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5ODgxMDMxNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBWaXJ0dWFsIFdpRmkgVHJhbnNtaXQgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24sIGBWSVJUX1dJRklgLCBhbmQgbXkgcHJpbWFyeSBmb2N1cyByaWdodCBub3cgaXMgdGhlIGB2aXJ0X3dpZmlfc3RhcnRfeG1pdGAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0IGFuZCBhbnkgcG90ZW50aWFsIGRlcGVuZGVuY2llcy4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZmlsZXMsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnYCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgLiBUaGlzIHNob3VsZCBoZWxwIG1lIGlkZW50aWZ5IGFueSBwcmVyZXF1aXNpdGVzIG9yIG90aGVyIGNvbmZpZ3VyYXRpb25zIHRoYXQgY291bGQgYWZmZWN0IGhvdyBgdmlydF93aWZpX3N0YXJ0X3htaXRgIGJlaGF2ZXMgb3IgaXMgZXZlbiBjb21waWxlZCBpbiB0aGUgZmlyc3QgcGxhY2UuIEtub3dpbmcgYW55IGRlcGVuZGVuY2llcyB1cCBmcm9udCB3aWxsIHN0cmVhbWxpbmUgbXkgYW5hbHlzaXMgb2YgdGhlIGZ1bmN0aW9uIGl0c2VsZiwgc28gSSdsbCBzZWUgd2hhdCB0aGUgS2NvbmZpZ3Mgc2F5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NTQ2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTM6Mjc6MTUuNTk1NDg2MjQ3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3Mzg3Mjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWSVJUX1dJRklcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZz0xPWNvbmZpZyBNQUM4MDIxMV9IV1NJTVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZzoxNDpjb25maWcgVklSVF9XSUZJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTE1LVxcdHRyaXN0YXRlIFxcXCJXaWZpIHdyYXBwZXIgZm9yIGV0aGVybmV0IGRyaXZlcnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEzOjI3OjE1LjY3Mjg3ODQwNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MzY2MTI0NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkV4YW1pbmluZyBXaXJlbGVzcyBWaXJ0dWFsIERyaXZlciBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIHRoZSB2aXJ0dWFsIHdpcmVsZXNzIGRyaXZlci4gTXkgaW5zdGluY3QgaXMgdG8gaGVhZCBzdHJhaWdodCBmb3IgdGhlIGBLY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSB0aGUgY3JpdGljYWwgY29uZmlndXJhdGlvbiBsb2dpYyBsaXZlcywgcmlnaHQ/IFRoaXMgZmlsZSBzaG91bGQgcmV2ZWFsIHRoZSBuZWNlc3NhcnkgcHJlcmVxdWlzaXRlcyDigJMgb3RoZXIgZHJpdmVycywga2VybmVsIGZlYXR1cmVzLCBvciBldmVuIGhhcmR3YXJlLXNwZWNpZmljIGNvbnNpZGVyYXRpb25zIOKAkyB0aGF0IG11c3QgYmUgaW4gcGxhY2UgYmVmb3JlIHRoZSB2aXJ0dWFsIGRyaXZlciBjYW4gZXZlbiBiZSBjb25zaWRlcmVkIGZvciBpbmNsdXNpb24uIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6XG5cbiogICAqKkNvbmRpdGlvbmFsIGRlcGVuZGVuY2llczoqKiBXaGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZCBiZWZvcmUgdGhlIHZpcnR1YWwgZHJpdmVyIGlzIGV2ZW4gcHJlc2VudGVkIGFzIGFuIG9wdGlvbj8gVGhpcyBtaWdodCBpbmNsdWRlIG90aGVyIHdpcmVsZXNzIHN0YWNrIGNvbXBvbmVudHMgb3IgZXZlbiBzcGVjaWZpYyBuZXR3b3JraW5nIGZlYXR1cmVzLlxuKiAgICoqU3ltYm9sIGRlZmluaXRpb25zOioqIFdoYXQgc3ltYm9scyBhcmUgZGVmaW5lZCBvciB1c2VkIHdpdGhpbiB0aGUgS2NvbmZpZyBmaWxlPyBVbmRlcnN0YW5kaW5nIHRoZXNlIHN5bWJvbHMgcHJvdmlkZXMgY3JpdGljYWwgY2x1ZXMgYWJvdXQgdGhlIGNvZGUncyBpbnRlbmRlZCB1c2UgYW5kIGludGVncmF0aW9uIHdpdGhpbiB0aGUgYnJvYWRlciBrZXJuZWwuXG4qICAgKipEZWZhdWx0IHZhbHVlcyBhbmQgaGVscCB0ZXh0OioqIFRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zIGFuZCBhY2NvbXBhbnlpbmcgaGVscCB0ZXh0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBpbml0aWFsIG92ZXJ2aWV3LiBUaGlzIHdpbGwgdGVsbCBtZSBob3cgdGhlIGRyaXZlciBpcyBzdXBwb3NlZCB0byBiZSB1c2VkIGFuZCBwb3RlbnRpYWxseSBwcm92aWRlIGluc2lnaHRzIGludG8gdHlwaWNhbCB1c2UgY2FzZXMuXG4qICAgKipJbmRpcmVjdCBkZXBlbmRlbmNpZXM6KiogSSdsbCBoYXZlIHRvIGJlIHdhcnkgb2YgaW5kaXJlY3QgZGVwZW5kZW5jaWVzOiB0aG9zZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCB0aGUgdmlydHVhbCBkcml2ZXIgcmVxdWlyZXMsIHdoaWNoLCBpbiB0dXJuLCBkZXBlbmQgb24gb3RoZXIgY29uZmlndXJhdGlvbnMuIEkgbXVzdCB0cmFjayB0aGUgY29tcGxldGUgZGVwZW5kZW5jeSBjaGFpbiB0byB1bmRlcnN0YW5kIHRoZSB3aG9sZSBwaWN0dXJlLlxuXG5UaGlzIGBLY29uZmlnYCBmaWxlIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhpcyB2aXJ0dWFsIGRyaXZlciBpbnRlZ3JhdGVzIGludG8gdGhlIGxhcmdlciBrZXJuZWwgbmV0d29yayBzdGFjayBhbmQgd2hhdCBpdCByZWxpZXMgb24uIFRpbWUgdG8gZGl2ZSBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTg5NywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEzOjI3OjIwLjMwOTQ5MzY2N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdGNvbmZpZyBNQUM4MDIxMV9IV1NJTVxcbiAgIDI6XFx0XFx0dHJpc3RhdGUgXFxcIlNpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXFxcIlxcbiAgIDM6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgIDQ6XFx0XFx0aGVscFxcbiAgIDU6XFx0XFx0ICBUaGlzIGRyaXZlciBpcyBhIGRldmVsb3BlciB0ZXN0aW5nIHRvb2wgdGhhdCBjYW4gYmUgdXNlZCB0byB0ZXN0XFxuICAgNjpcXHRcXHQgIElFRUUgODAyLjExIG5ldHdvcmtpbmcgc3RhY2sgKG1hYzgwMjExKSBmdW5jdGlvbmFsaXR5LiBUaGlzIGlzIG5vdFxcbiAgIDc6XFx0XFx0ICBuZWVkZWQgZm9yIG5vcm1hbCB3aXJlbGVzcyBMQU4gdXNhZ2UgYW5kIGlzIG9ubHkgZm9yIHRlc3RpbmcuIFNlZVxcbiAgIDg6XFx0XFx0ICBEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbWFjODAyMTFfaHdzaW0gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93XFxuICAgOTpcXHRcXHQgIHRvIHVzZSB0aGlzIHRvb2wuXFxuICAxMDpcXHRcXG4gIDExOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXFxuICAxMjpcXHRcXHQgIGNhbGxlZCBtYWM4MDIxMV9od3NpbS4gIElmIHVuc3VyZSwgc2F5IE4uXFxuICAxMzpcXHRcXG4gIDE0OlxcdGNvbmZpZyBWSVJUX1dJRklcXG4gIDE1OlxcdFxcdHRyaXN0YXRlIFxcXCJXaWZpIHdyYXBwZXIgZm9yIGV0aGVybmV0IGRyaXZlcnNcXFwiXFxuICAxNjpcXHRcXHRkZXBlbmRzIG9uIENGRzgwMjExXFxuICAxNzpcXHRcXHRoZWxwXFxuICAxODpcXHRcXHQgIFRoaXMgb3B0aW9uIGFkZHMgc3VwcG9ydCBmb3IgZXRoZXJuZXQgY29ubmVjdGlvbnMgdG8gYXBwZWFyIGFzIGlmIHRoZXlcXG4gIDE5OlxcdFxcdCAgYXJlIHdpZmkgY29ubmVjdGlvbnMgdGhyb3VnaCBhIHNwZWNpYWwgcnRuZXRsaW5rIGRldmljZS5cXG4gIDIwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMzoyNzoyMC4zMDk1NTI4NzdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDgwODA2OTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgV2lGaSBWaXJ0dWFsaXphdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IHNlZSB0aGUga2V5IGRlcGVuZGVuY2llczogYENGRzgwMjExYC4gVGhhdCBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggY29uZmlndXJhdGlvbnMgYFZJUlRfV0lGSWAgYW5kIGBDRkc4MDIxMWAuIFRoZSBwYXRjaCBpdHNlbGYgdGFyZ2V0cyBhIG1lbW9yeSBsZWFrLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGB2aXJ0X3dpZmlfc3RhcnRfeG1pdGAgZnVuY3Rpb24uIEl0J3MgYSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgYnVnIGZpeCwgYW5kIGl0J3MgZGVmaW5pdGVseSByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhhdCBtYWtlcyBpdCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBgdmlydF93aWZpX3N0YXJ0X3htaXRgIGlzIHRoZSBmb2N1cywgb2YgY291cnNlLCBnaXZlbiBpdCdzIHRoZSB0YXJnZXQgZnVuY3Rpb24uIEknbGwgbmVlZCB0byBlbmFibGUgYFZJUlRfV0lGSWAgYW5kIGBDRkc4MDIxMWAgdG8gdHJpZ2dlciB0aGlzLlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIG5vLCBgdmlydF93aWZpX3N0YXJ0X3htaXRgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQgd2FzIG1vZGlmaWVkIGluIHRoaXMgcGF0Y2guXG5cblJpZ2h0LCB0aGlzIGlzIGEgdmVyeSBzaW1wbGUgcGF0Y2gsIGxvb2tpbmcgYXQgdGhlIGNvZGU6XG5cbmBgYGNcbkBAIC00MzQsNiArNDM0LDcgQEAgc3RhdGljIG5ldGRldl90eF90IHZpcnRfd2lmaV9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRwcml2LVx1MDAzZXR4X3BhY2tldHMrKztcbiBcdGlmICghcHJpdi1cdTAwM2Vpc19jb25uZWN0ZWQpIHtcbiBcdFx0cHJpdi1cdTAwM2V0eF9mYWlsZWQrKztcbitcdFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtcbiBcdFx0cmV0dXJuIE5FVF9YTUlUX0RST1A7XG4gXHR9XG5gYGBcblxuSXQncyBhIGNsZWFyIG1lbW9yeSBsZWFrIGZpeDsgYWRkaW5nIGBkZXZfa2ZyZWVfc2tiX2FueShza2IpO2Agd2hlbiB0aGUgdHJhbnNtaXNzaW9uIGZhaWxzLiBPa2F5LCBJJ20gc2F0aXNmaWVkLiBMZXQncyBzZXQgdGhlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjE4LCJPdXRwdXRUb2tlbnMiOjExOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEzOjI3OjI3LjM5MDM2Mjg2N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3OTI2NTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSVJUX1dJRklcIixcbiAgICBcIkNGRzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmlydF93aWZpX3N0YXJ0X3htaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSB2aXJ0X3dpZmlfc3RhcnRfeG1pdCBmdW5jdGlvbiBvZiB0aGUgdmlydF93aWZpIGRyaXZlciBieSBmcmVlaW5nIHRoZSBza2Igd2hlbiB0aGUgZGV2aWNlIGlzIG5vdCBjb25uZWN0ZWQuIFRoZSB2aXJ0X3dpZmkgZHJpdmVyIGlzIGEgdmlydHVhbCB3aXJlbGVzcyBkcml2ZXIgdGhhdCB3cmFwcyBldGhlcm5ldCBkZXZpY2VzLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSVJUX1dJRklcIixcbiAgICBcIkNGRzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmlydF93aWZpX3N0YXJ0X3htaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSB2aXJ0X3dpZmlfc3RhcnRfeG1pdCBmdW5jdGlvbiBvZiB0aGUgdmlydF93aWZpIGRyaXZlciBieSBmcmVlaW5nIHRoZSBza2Igd2hlbiB0aGUgZGV2aWNlIGlzIG5vdCBjb25uZWN0ZWQuIFRoZSB2aXJ0X3dpZmkgZHJpdmVyIGlzIGEgdmlydHVhbCB3aXJlbGVzcyBkcml2ZXIgdGhhdCB3cmFwcyBldGhlcm5ldCBkZXZpY2VzLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTM6Mjc6MjcuNDY4Mjk2OTA1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzUwNjI4NTU3MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMzoyNzoyNy40Njg3NTM4ODVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTc1MDYyMzk0MzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGJ5IGFkZGluZyBgZGV2X2tmcmVlX3NrYl9hbnkoc2tiKWAgd2hlbiB0aGUgdmlydHVhbCB3aWZpIGRldmljZSBpcyBub3QgY29ubmVjdGVkIGFuZCBkcm9wcyB0aGUgcGFja2V0LiBUaGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgbG9naWMgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQgb3IgbGVha2VkIHRvIHVzZXIgc3BhY2UuIEFueSBwb3RlbnRpYWwgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2UgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4MjdhYmYwM2EwZmFlZDQwMDUwMzk4N2QwZThhMGY5ODRjZDcxMjc1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgOSAxMzoyNzowMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jXG5pbmRleCAyMzM1ZTQ1ZGI4Yjg1Li5iNjlhNDY1MGZiYTg1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuY1xuQEAgLTQzNCw2ICs0MzQsNyBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgdmlydF93aWZpX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHByaXYtXHUwMDNldHhfcGFja2V0cysrO1xuIFx0aWYgKCFwcml2LVx1MDAzZWlzX2Nvbm5lY3RlZCkge1xuIFx0XHRwcml2LVx1MDAzZXR4X2ZhaWxlZCsrO1xuK1x0XHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuIFx0XHRyZXR1cm4gTkVUX1hNSVRfRFJPUDtcbiBcdH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEzOjI3OjI3LjQ2ODc1NDkxNVoiLCJTZXEiOjEzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzUwNjIzNjg0NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTWVtb3J5IExlYWsgRml4IGluIE5ldHdvcmsgRHJpdmVyIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYHZpcnRfd2lmaV9zdGFydF94bWl0YCBmdW5jdGlvbi4gVGhleSd2ZSBhZGRlZCBgZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtgIHdoZW4gdGhlIGRldmljZSBpc24ndCBjb25uZWN0ZWQsIHNwZWNpZmljYWxseSB3aGVuIGAhcHJpdi1cdTAwM2Vpc19jb25uZWN0ZWRgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiWWVzLCB0aGF0J3MgYSBnb29kIG1vdmUuXCIgVGhhdCdzIGNsYXNzaWMgbWVtb3J5IGxlYWsgcHJldmVudGlvbi4gSWYgdGhlIHBhY2tldCAoYHNrYmApIGlzIGRyb3BwZWQgYmVjYXVzZSB0aGUgY29ubmVjdGlvbiBpc24ndCB1cCwgaXQgKnNob3VsZCogYmUgZnJlZWQuIE90aGVyd2lzZSwgd2UnZCBoYXZlIGEgbGVhaywgb3IgcG90ZW50aWFsbHkgYSB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSwgYWx0aG91Z2ggaW4gdGhpcyBjYXNlIGl0J3MganVzdCBhIGxlYWsuXG5cbk5vdywgbXkgbW9yZSBleHBlcmllbmNlZCBicmFpbiBraWNrcyBpbiwgYW5kIEkgdGhpbmssIFwiSG9sZCBvbiwgZG9lcyB0aGlzIHBhdGNoIGludHJvZHVjZSBhbnkgcmlza3Mgd2l0aCB1bmluaXRpYWxpemVkIG1lbW9yeT9cIiBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHRoZSBhbmdsZXMuIEJ1dCBubywgd2FpdC4uLiBuby4gVGhpcyBwYXRjaCAqb25seSogZnJlZXMgYSBzdHJ1Y3R1cmUuIEl0J3Mgbm90IHJlYWRpbmcgZnJvbSBvciB3cml0aW5nIHRvIGFueXRoaW5nIHRoYXQgaXNuJ3QgYWxyZWFkeSBpbml0aWFsaXplZC4gS0FTQU4va21lbWxlYWsvZXRjLiBhcmUgdGhlIHRvb2xzIHRoYXQgd2lsbCBoZWxwIHVzIGNhdGNoIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zLiBLTVNBTiBkZWFscyB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGlzIGlzbid0IHRoYXQuXG5cbkp1c3QgdG8gYmUgc3VyZSwgSSBuZWVkIHRvIHRha2UgYSBxdWljayBwZWVrIGF0IHRoZSBwYXRjaCBjb2RlIGl0c2VsZiB0byBlbnN1cmUgaXQgaXMgd2hhdCBJIHRoaW5rIGl0IGlzLlxuXG5gYGBjXG5AQCAtNDM0LDYgKzQzNCw3IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCB2aXJ0X3dpZmlfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0cHJpdi1cdTAwM2V0eF9wYWNrZXRzKys7XG4gXHRpZiAoIXByaXYtXHUwMDNlaXNfY29ubmVjdGVkKSB7XG4gXHRcdHByaXYtXHUwMDNldHhfZmFpbGVkKys7XG4rXHRcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XG4gXHRcdHJldHVybiBORVRfWE1JVF9EUk9QO1xuIFx0fVxuIGBgYFxuXG5ZZXAuIFN0YW5kYXJkIG1lbW9yeSBsZWFrIGZpeC4gTm90aGluZyB0byB3b3JyeSBhYm91dCBpbiB0ZXJtcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gYE5lZWRzS01TQU4gPSBmYWxzZWAuIFdlJ3JlIGdvb2QgdG8gZ28uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODEsIk91dHB1dFRva2VucyI6MTMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjkyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTM6MzA6MjIuNTMxMTI3Mzg5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkzNzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGJ5IGFkZGluZyBgZGV2X2tmcmVlX3NrYl9hbnkoc2tiKWAgd2hlbiB0aGUgdmlydHVhbCB3aWZpIGRldmljZSBpcyBub3QgY29ubmVjdGVkIGFuZCBkcm9wcyB0aGUgcGFja2V0LiBUaGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgbG9naWMgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQgb3IgbGVha2VkIHRvIHVzZXIgc3BhY2UuIEFueSBwb3RlbnRpYWwgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2UgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGJ5IGFkZGluZyBgZGV2X2tmcmVlX3NrYl9hbnkoc2tiKWAgd2hlbiB0aGUgdmlydHVhbCB3aWZpIGRldmljZSBpcyBub3QgY29ubmVjdGVkIGFuZCBkcm9wcyB0aGUgcGFja2V0LiBUaGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgbG9naWMgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQgb3IgbGVha2VkIHRvIHVzZXIgc3BhY2UuIEFueSBwb3RlbnRpYWwgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2UgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowszbdq[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-09 13:02:37 +0000 UTC FinishedAt: 2026-08-09 13:30:24 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "ca800a9302764c445de0da0e84d2252400a770ee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIRT_WIFI", "CFG80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "ca800a9302764c445de0da0e84d2252400a770ee", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIRT_WIFI", "CFG80211" ], "series_id": "1bde67a5-d209-4cd7-929f-8b75b48a16f0" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "virt_wifi_start_xmit" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEzOjI3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJUlRfV0lGSSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZpcnRfd2lmaV9zdGFydF94bWl0JiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBieSBhZGRpbmcgYGRldl9rZnJlZV9za2JfYW55KHNrYilgIHdoZW4gdGhlIHZpcnR1YWwgd2lmaSBkZXZpY2UgaXMgbm90IGNvbm5lY3RlZCBhbmQgZHJvcHMgdGhlIHBhY2tldC4gVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGxvZ2ljIHRoYXQgY291bGQgbGVhZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkIG9yIGxlYWtlZCB0byB1c2VyIHNwYWNlLiBBbnkgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIHZpcnRfd2lmaV9zdGFydF94bWl0IGZ1bmN0aW9uIG9mIHRoZSB2aXJ0X3dpZmkgZHJpdmVyIGJ5IGZyZWVpbmcgdGhlIHNrYiB3aGVuIHRoZSBkZXZpY2UgaXMgbm90IGNvbm5lY3RlZC4gVGhlIHZpcnRfd2lmaSBkcml2ZXIgaXMgYSB2aXJ0dWFsIHdpcmVsZXNzIGRyaXZlciB0aGF0IHdyYXBzIGV0aGVybmV0IGRldmljZXMsIHdoaWNoIGlzIHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEzOjI3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODI3YWJmMDNhMGZhZWQ0MDA1MDM5ODdkMGU4YTBmOTg0Y2Q3MTI3NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDkgMTM6Mjc6MDEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmNcbmluZGV4IDIzMzVlNDVkYjhiODUuLmI2OWE0NjUwZmJhODUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jXG5AQCAtNDM0LDYgJiM0Mzs0MzQsNyBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgdmlydF93aWZpX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHByaXYtXHUwMDNldHhfcGFja2V0cyYjNDM7JiM0Mzs7XG4gXHRpZiAoIXByaXYtXHUwMDNlaXNfY29ubmVjdGVkKSB7XG4gXHRcdHByaXYtXHUwMDNldHhfZmFpbGVkJiM0MzsmIzQzOztcbiYjNDM7XHRcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XG4gXHRcdHJldHVybiBORVRfWE1JVF9EUk9QO1xuIFx0fVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEzOjI3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSVJUX1dJRkkmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2aXJ0X3dpZmlfc3RhcnRfeG1pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSB2aXJ0X3dpZmlfc3RhcnRfeG1pdCBmdW5jdGlvbiBvZiB0aGUgdmlydF93aWZpIGRyaXZlciBieSBmcmVlaW5nIHRoZSBza2Igd2hlbiB0aGUgZGV2aWNlIGlzIG5vdCBjb25uZWN0ZWQuIFRoZSB2aXJ0X3dpZmkgZHJpdmVyIGlzIGEgdmlydHVhbCB3aXJlbGVzcyBkcml2ZXIgdGhhdCB3cmFwcyBldGhlcm5ldCBkZXZpY2VzLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDgyN2FiZjAzYTBmYWVkNDAwNTAzOTg3ZDBlOGEwZjk4NGNkNzEyNzUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEF1ZyA5IDEzOjI3OjAxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMKaW5kZXggMjMzNWU0NWRiOGI4NS4uYjY5YTQ2NTBmYmE4NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jCkBAIC00MzQsNiAmIzQzOzQzNCw3IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCB2aXJ0X3dpZmlfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXByaXYtJmd0O3R4X3BhY2tldHMmIzQzOyYjNDM7OwogCWlmICghcHJpdi0mZ3Q7aXNfY29ubmVjdGVkKSB7CiAJCXByaXYtJmd0O3R4X2ZhaWxlZCYjNDM7JiM0Mzs7CiYjNDM7CQlkZXZfa2ZyZWVfc2tiX2FueShza2IpOwogCQlyZXR1cm4gTkVUX1hNSVRfRFJPUDsKIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTM6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk4NAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBWaXJ0dWFsIFdpRmkgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuY2AuIEl0IHNlZW1zIHRoZXkmIzM5O3ZlIGFkZGVkIGEgYGRldl9rZnJlZV9za2JfYW55KHNrYik7YCBjYWxsIHdpdGhpbiBgdmlydF93aWZpX3N0YXJ0X3htaXRgIHdoZW4gdGhlIGRyaXZlciBpc24mIzM5O3QgY29ubmVjdGVkLCBzcGVjaWZpY2FsbHkgd2hlbiBgIXByaXYtJmd0O2lzX2Nvbm5lY3RlZGAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIGlzIGxpa2VseSBhIGJ1ZyBmaXgg4oCTIHByb2JhYmx5IGEgbWVtb3J5IGxlYWsuCgpMZXQgbWUgcmVmcmVzaCBteSBtZW1vcnkgb2YgYHZpcnRfd2lmaV9zdGFydF94bWl0YCBpbiB0aGF0IGZpbGUuIFllcywgdGhpcyBpcyB0aGUgdmlydHVhbCBXaUZpIGRyaXZlciwgd2hpY2gsIG9mIGNvdXJzZSwgbWVhbnMgaXQmIzM5O3MgaGVhdmlseSB1c2VkIGluIHZpcnR1YWxpemF0aW9uIHNjZW5hcmlvcy4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgZWFzeSB0byBoaXQgYW4gZWRnZSBjYXNlIHdoZXJlIGEgdmlydHVhbCBkZXZpY2UgaXMgdHJ5aW5nIHRvIHRyYW5zbWl0IGJlZm9yZSBpdCYjMzk7cyBmdWxseSBjb25uZWN0ZWQuIFRoaXMgYGRldl9rZnJlZV9za2JfYW55KHNrYilgIGNhbGwgaXMgdGhlIGtleSB0byBhZGRyZXNzIHRoZSBtZW1vcnkgbGVhazogcmVsZWFzaW5nIHRoZSBgc2tiYCB3aGVuIHRoZSBkZXZpY2UgaXNuJiMzOTt0IHByb3Blcmx5IGNvbm5lY3RlZC4KCk5leHQgc3RlcD8gSSYjMzk7bGwgcXVpY2tseSBjaGVjayB0aGUgY29uZmlnIGZvciBgdmlydF93aWZpYCwganVzdCB0byB2ZXJpZnkgaXRzIGNvbmZpZ3VyYXRpb24gaXMgc3RyYWlnaHRmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEzOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZpcnRfd2lmaSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvTWFrZWZpbGU9Mz1tYWM4MDIxMV9od3NpbS1vYmpzXHRcdCYjNDM7PSBtYWM4MDIxMV9od3NpbV9uYW4ub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9NYWtlZmlsZS00LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9NYWtlZmlsZTo1Om9iai0kKENPTkZJR19WSVJUX1dJRkkpXHQmIzQzOz0gdmlydF93aWZpLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MjovKiBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0X3dpZmkuY1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zLSAqXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYz0xOD1zdGF0aWMgc3RydWN0IHdpcGh5ICpjb21tb25fd2lwaHk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzoyMDpzdHJ1Y3QgdmlydF93aWZpX3dpcGh5X3ByaXYge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0yMS1cdHN0cnVjdCBkZWxheWVkX3dvcmsgc2Nhbl9yZXN1bHQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYz0xMzc9c3RhdGljIHU4IGZha2Vfcm91dGVyX2Jzc2lkW0VUSF9BTEVOXSBfX3JvX2FmdGVyX2luaXQgPSB7fTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTE0MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MTQyOnN0YXRpYyB2b2lkIHZpcnRfd2lmaV9pbmZvcm1fYnNzKHN0cnVjdCB3aXBoeSAqd2lwaHkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTE0My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0xNjUtLyogQ2FsbGVkIHdpdGggdGhlIHJ0bmwgbG9jayBoZWxkLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzoxNjY6c3RhdGljIGludCB2aXJ0X3dpZmlfc2NhbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0xNjctXHRcdFx0ICBzdHJ1Y3QgY2ZnODAyMTFfc2Nhbl9yZXF1ZXN0ICpyZXF1ZXN0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0xNjgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzoxNjk6XHRzdHJ1Y3QgdmlydF93aWZpX3dpcGh5X3ByaXYgKnByaXYgPSB3aXBoeV9wcml2KHdpcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMTcwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMTgyLS8qIEFjcXVpcmVzIGFuZCByZWxlYXNlcyB0aGUgcmRldiBCU1MgbG9jay4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MTgzOnN0YXRpYyB2b2lkIHZpcnRfd2lmaV9zY2FuX3Jlc3VsdChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTE4NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjE4NTpcdHN0cnVjdCB2aXJ0X3dpZmlfd2lwaHlfcHJpdiAqcHJpdiA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjE4NjpcdFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB2aXJ0X3dpZmlfd2lwaHlfcHJpdixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMTg3LVx0XHRcdCAgICAgc2Nhbl9yZXN1bHQud29yayk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0xOTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjE5MTpcdHZpcnRfd2lmaV9pbmZvcm1fYnNzKHdpcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMTkyLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMTk4LS8qIE1heSBhY3F1aXJlIGFuZCByZWxlYXNlIHRoZSByZGV2IEJTUyBsb2NrLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzoxOTk6c3RhdGljIHZvaWQgdmlydF93aWZpX2NhbmNlbF9zY2FuKHN0cnVjdCB3aXBoeSAqd2lwaHkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTIwMC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjIwMTpcdHN0cnVjdCB2aXJ0X3dpZmlfd2lwaHlfcHJpdiAqcHJpdiA9IHdpcGh5X3ByaXYod2lwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0yMDItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0yMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjIxMzpzdHJ1Y3QgdmlydF93aWZpX25ldGRldl9wcml2IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjE0LVx0c3RydWN0IGRlbGF5ZWRfd29yayBjb25uZWN0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjI3LS8qIENhbGxlZCB3aXRoIHRoZSBydG5sIGxvY2sgaGVsZC4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MjI4OnN0YXRpYyBpbnQgdmlydF93aWZpX2Nvbm5lY3Qoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjI5LVx0XHRcdCAgICAgc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcGFyYW1zICpzbWUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTIzMC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjIzMTpcdHN0cnVjdCB2aXJ0X3dpZmlfbmV0ZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0yMzItXHRib29sIGNvdWxkX3NjaGVkdWxlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjQ5LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MjUwOlx0XHR2aXJ0X3dpZmlfaW5mb3JtX2Jzcyh3aXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTI1MS1cdFx0ZXRoX3plcm9fYWRkcihwcml2LVx1MDAzZWNvbm5lY3RfcmVxdWVzdGVkX2Jzcyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0yNTktLyogQWNxdWlyZXMgYW5kIHJlbGVhc2VzIHRoZSByZGV2IGV2ZW50IGxvY2suICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjI2MDpzdGF0aWMgdm9pZCB2aXJ0X3dpZmlfY29ubmVjdF9jb21wbGV0ZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTI2MS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjI2MjpcdHN0cnVjdCB2aXJ0X3dpZmlfbmV0ZGV2X3ByaXYgKnByaXYgPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzoyNjM6XHRcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdmlydF93aWZpX25ldGRldl9wcml2LCBjb25uZWN0LndvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0yNjQtXHR1OCAqcmVxdWVzdGVkX2JzcyA9IHByaXYtXHUwMDNlY29ubmVjdF9yZXF1ZXN0ZWRfYnNzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjg3LS8qIE1heSBhY3F1aXJlIGFuZCByZWxlYXNlIHRoZSByZGV2IGV2ZW50IGxvY2suICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjI4ODpzdGF0aWMgdm9pZCB2aXJ0X3dpZmlfY2FuY2VsX2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjg5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MjkwOlx0c3RydWN0IHZpcnRfd2lmaV9uZXRkZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTI5MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTMwMy0vKiBDYWxsZWQgd2l0aCB0aGUgcnRubCBsb2NrIGhlbGQuIEFjcXVpcmVzIHRoZSByZGV2IGV2ZW50IGxvY2suICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjMwNDpzdGF0aWMgaW50IHZpcnRfd2lmaV9kaXNjb25uZWN0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTMwNS1cdFx0XHRcdHUxNiByZWFzb25fY29kZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzA2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MzA3Olx0c3RydWN0IHZpcnRfd2lmaV9uZXRkZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTMwOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTMxMi1cdHdpcGh5X2RlYnVnKHdpcGh5LCBcJiMzNDtkaXNjb25uZWN0XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MzEzOlx0dmlydF93aWZpX2NhbmNlbF9jb25uZWN0KG5ldGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTMxNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTMyMi0vKiBDYWxsZWQgd2l0aCB0aGUgcnRubCBsb2NrIGhlbGQuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjMyMzpzdGF0aWMgaW50IHZpcnRfd2lmaV9nZXRfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zMjQtXHRcdFx0XHQgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgY29uc3QgdTggKm1hYyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTMyNy1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSB3ZGV2LVx1MDAzZW5ldGRldjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MzI4Olx0c3RydWN0IHZpcnRfd2lmaV9uZXRkZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTMyOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTM0OS0vKiBDYWxsZWQgd2l0aCB0aGUgcnRubCBsb2NrIGhlbGQuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjM1MDpzdGF0aWMgaW50IHZpcnRfd2lmaV9kdW1wX3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzUxLVx0XHRcdFx0ICBpbnQgaWR4LCB1OCAqbWFjLCBzdHJ1Y3Qgc3RhdGlvbl9pbmZvICpzaW5mbylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzUyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MzUzOlx0c3RydWN0IHZpcnRfd2lmaV9uZXRkZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KHdkZXYtXHUwMDNlbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzU0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzYwLVx0ZXRoZXJfYWRkcl9jb3B5KG1hYywgZmFrZV9yb3V0ZXJfYnNzaWQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozNjE6XHRyZXR1cm4gdmlydF93aWZpX2dldF9zdGF0aW9uKHdpcGh5LCB3ZGV2LCBmYWtlX3JvdXRlcl9ic3NpZCwgc2luZm8pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zNjItfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjM2NDpzdGF0aWMgY29uc3Qgc3RydWN0IGNmZzgwMjExX29wcyB2aXJ0X3dpZmlfY2ZnODAyMTFfb3BzID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozNjU6XHQuc2NhbiA9IHZpcnRfd2lmaV9zY2FuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjM2NzpcdC5jb25uZWN0ID0gdmlydF93aWZpX2Nvbm5lY3QsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjM2ODpcdC5kaXNjb25uZWN0ID0gdmlydF93aWZpX2Rpc2Nvbm5lY3QsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTM2OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MzcwOlx0LmdldF9zdGF0aW9uID0gdmlydF93aWZpX2dldF9zdGF0aW9uLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozNzE6XHQuZHVtcF9zdGF0aW9uID0gdmlydF93aWZpX2R1bXBfc3RhdGlvbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzcyLX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zNzQtLyogQWNxdWlyZXMgYW5kIHJlbGVhc2VzIHRoZSBydG5sIGxvY2suICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjM3NTpzdGF0aWMgc3RydWN0IHdpcGh5ICp2aXJ0X3dpZmlfbWFrZV93aXBoeSh2b2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zNzYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zNzctXHRzdHJ1Y3Qgd2lwaHkgKndpcGh5O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozNzg6XHRzdHJ1Y3QgdmlydF93aWZpX3dpcGh5X3ByaXYgKnByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTM3OS1cdGludCBlcnI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTM4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MzgxOlx0d2lwaHkgPSB3aXBoeV9uZXcoXHUwMDI2dmlydF93aWZpX2NmZzgwMjExX29wcywgc2l6ZW9mKCpwcml2KSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTM4Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTM5OC1cdHByaXYtXHUwMDNlc2Nhbl9yZXF1ZXN0ID0gTlVMTDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6Mzk5Olx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2cHJpdi1cdTAwM2VzY2FuX3Jlc3VsdCwgdmlydF93aWZpX3NjYW5fcmVzdWx0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDAwLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDEwLS8qIEFjcXVpcmVzIGFuZCByZWxlYXNlcyB0aGUgcnRubCBsb2NrLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo0MTE6c3RhdGljIHZvaWQgdmlydF93aWZpX2Rlc3Ryb3lfd2lwaHkoc3RydWN0IHdpcGh5ICp3aXBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDEyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDEzOlx0c3RydWN0IHZpcnRfd2lmaV93aXBoeV9wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00MTQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00MjAtXHRwcml2LVx1MDAzZWJlaW5nX2RlbGV0ZWQgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo0MjE6XHR2aXJ0X3dpZmlfY2FuY2VsX3NjYW4od2lwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00MjItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00MjgtLyogRW50ZXJzIGFuZCBleGl0cyBhIFJDVS1iaCBjcml0aWNhbCBzZWN0aW9uLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo0Mjk6c3RhdGljIG5ldGRldl90eF90IHZpcnRfd2lmaV9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQzMC1cdFx0XHRcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDMxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDMyOlx0c3RydWN0IHZpcnRfd2lmaV9uZXRkZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQzMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQ0NS0vKiBDYWxsZWQgd2l0aCBydG5sIGxvY2sgaGVsZC4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDQ2OnN0YXRpYyBpbnQgdmlydF93aWZpX25ldF9kZXZpY2Vfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00NDcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo0NDg6XHRzdHJ1Y3QgdmlydF93aWZpX25ldGRldl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDQ5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDU0LS8qIENhbGxlZCB3aXRoIHJ0bmwgbG9jayBoZWxkLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo0NTU6c3RhdGljIGludCB2aXJ0X3dpZmlfbmV0X2RldmljZV9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQ1Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQ1NzpcdHN0cnVjdCB2aXJ0X3dpZmlfbmV0ZGV2X3ByaXYgKm5fcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQ1OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQ2My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDY0Olx0dmlydF93aWZpX2NhbmNlbF9zY2FuKGRldi1cdTAwM2VpZWVlODAyMTFfcHRyLVx1MDAzZXdpcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDY1Olx0dmlydF93aWZpX2NhbmNlbF9jb25uZWN0KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQ2Ni1cdG5ldGlmX2NhcnJpZXJfb2ZmKGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00NzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQ3MTpzdGF0aWMgaW50IHZpcnRfd2lmaV9uZXRfZGV2aWNlX2dldF9pZmxpbmsoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDcyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDczOlx0c3RydWN0IHZpcnRfd2lmaV9uZXRkZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQ3NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQ3Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDc4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdmlydF93aWZpX29wcyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDc5Olx0Lm5kb19zdGFydF94bWl0ID0gdmlydF93aWZpX3N0YXJ0X3htaXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQ4MDpcdC5uZG9fb3Blblx0PSB2aXJ0X3dpZmlfbmV0X2RldmljZV9vcGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo0ODE6XHQubmRvX3N0b3BcdD0gdmlydF93aWZpX25ldF9kZXZpY2Vfc3RvcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDgyOlx0Lm5kb19nZXRfaWZsaW5rID0gdmlydF93aWZpX25ldF9kZXZpY2VfZ2V0X2lmbGluayxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDgzLX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00ODUtLyogSW52b2tlZCBhcyBwYXJ0IG9mIHJ0bmwgbG9jayByZWxlYXNlLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo0ODY6c3RhdGljIHZvaWQgdmlydF93aWZpX25ldF9kZXZpY2VfZGVzdHJ1Y3RvcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00ODcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDk1LS8qIE5vIGxvY2sgaW50ZXJhY3Rpb24uICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQ5NjpzdGF0aWMgdm9pZCB2aXJ0X3dpZmlfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDk3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDk4LVx0ZXRoZXJfc2V0dXAoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDk5Olx0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZ2aXJ0X3dpZmlfb3BzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy01MDAtXHRkZXYtXHUwMDNlbmVlZHNfZnJlZV9uZXRkZXYgID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTUwMy0vKiBDYWxsZWQgaW4gYSBSQ1UgcmVhZCBjcml0aWNhbCBzZWN0aW9uIGZyb20gbmV0aWZfcmVjZWl2ZV9za2IgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NTA0OnN0YXRpYyByeF9oYW5kbGVyX3Jlc3VsdF90IHZpcnRfd2lmaV9yeF9oYW5kbGVyKHN0cnVjdCBza19idWZmICoqcHNrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNTA1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNTA2LVx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9ICpwc2tiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo1MDc6XHRzdHJ1Y3QgdmlydF93aWZpX25ldGRldl9wcml2ICpwcml2ID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNTA4LVx0XHRyY3VfZGVyZWZlcmVuY2Uoc2tiLVx1MDAzZWRldi1cdTAwM2VyeF9oYW5kbGVyX2RhdGEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNTI2LS8qIENhbGxlZCB3aXRoIHJ0bmwgbG9jayBoZWxkLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo1Mjc6c3RhdGljIGludCB2aXJ0X3dpZmlfbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy01MjgtXHRcdFx0ICAgICBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNTMwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NTMxOlx0c3RydWN0IHZpcnRfd2lmaV9uZXRkZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTUzMi1cdHN0cnVjdCBuZXQgKmxpbmtfbmV0ID0gcnRubF9uZXdsaW5rX2xpbmtfbmV0KHBhcmFtcyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy01NTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjU1MjpcdGVyciA9IG5ldGRldl9yeF9oYW5kbGVyX3JlZ2lzdGVyKHByaXYtXHUwMDNlbG93ZXJkZXYsIHZpcnRfd2lmaV9yeF9oYW5kbGVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy01NTMtXHRcdFx0XHRcdCBwcml2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTU4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NTg3Olx0ZGV2LVx1MDAzZXByaXZfZGVzdHJ1Y3RvciA9IHZpcnRfd2lmaV9uZXRfZGV2aWNlX2Rlc3RydWN0b3I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTU4OC1cdHByaXYtXHUwMDNlYmVpbmdfZGVsZXRlZCA9IGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNTkwLVx0cHJpdi1cdTAwM2Vpc191cCA9IGZhbHNlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo1OTE6XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZwcml2LVx1MDAzZWNvbm5lY3QsIHZpcnRfd2lmaV9jb25uZWN0X2NvbXBsZXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNTkyLVx0X19tb2R1bGVfZ2V0KFRISVNfTU9EVUxFKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTYwNi0vKiBDYWxsZWQgd2l0aCBydG5sIGxvY2sgaGVsZC4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NjA3OnN0YXRpYyB2b2lkIHZpcnRfd2lmaV9kZWxsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTYwOC1cdFx0XHQgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02MDkte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2MTA6XHRzdHJ1Y3QgdmlydF93aWZpX25ldGRldl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNjExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02MTItXHRpZiAoZGV2LVx1MDAzZWllZWU4MDIxMV9wdHIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjYxMzpcdFx0dmlydF93aWZpX2NhbmNlbF9zY2FuKGRldi1cdTAwM2VpZWVlODAyMTFfcHRyLVx1MDAzZXdpcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNjE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02MTUtXHRwcml2LVx1MDAzZWJlaW5nX2RlbGV0ZWQgPSB0cnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2MTY6XHR2aXJ0X3dpZmlfY2FuY2VsX2Nvbm5lY3QoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNjE3LVx0bmV0aWZfY2Fycmllcl9vZmYoZGV2KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTYyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NjI4OnN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyB2aXJ0X3dpZmlfbGlua19vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjYyOTpcdC5raW5kXHRcdD0gXCYjMzQ7dmlydF93aWZpXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2MzA6XHQuc2V0dXBcdFx0PSB2aXJ0X3dpZmlfc2V0dXAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjYzMTpcdC5uZXdsaW5rXHQ9IHZpcnRfd2lmaV9uZXdsaW5rLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2MzI6XHQuZGVsbGlua1x0PSB2aXJ0X3dpZmlfZGVsbGluayxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NjMzOlx0LnByaXZfc2l6ZVx0PSBzaXplb2Yoc3RydWN0IHZpcnRfd2lmaV9uZXRkZXZfcHJpdiksXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTYzNC19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02MzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjYzNjpzdGF0aWMgYm9vbCBuZXRpZl9pc192aXJ0X3dpZmlfZGV2KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTYzNy17XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjYzODpcdHJldHVybiByY3VfYWNjZXNzX3BvaW50ZXIoZGV2LVx1MDAzZXJ4X2hhbmRsZXIpID09IHZpcnRfd2lmaV9yeF9oYW5kbGVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02MzktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02NDAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjY0MTpzdGF0aWMgaW50IHZpcnRfd2lmaV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsIHVuc2lnbmVkIGxvbmcgZXZlbnQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY0Mi1cdFx0XHQgICB2b2lkICpwdHIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02NDQtXHRzdHJ1Y3QgbmV0X2RldmljZSAqbG93ZXJfZGV2ID0gbmV0ZGV2X25vdGlmaWVyX2luZm9fdG9fZGV2KHB0cik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjY0NTpcdHN0cnVjdCB2aXJ0X3dpZmlfbmV0ZGV2X3ByaXYgKnByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY0Ni1cdHN0cnVjdCBuZXRfZGV2aWNlICp1cHBlcl9kZXY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02NDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjY0OTpcdGlmICghbmV0aWZfaXNfdmlydF93aWZpX2Rldihsb3dlcl9kZXYpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02NTAtXHRcdHJldHVybiBOT1RJRllfRE9ORTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY2Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NjY4OnN0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgdmlydF93aWZpX25vdGlmaWVyID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2Njk6XHQubm90aWZpZXJfY2FsbCA9IHZpcnRfd2lmaV9ldmVudCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNjcwLX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02NzItLyogQWNxdWlyZXMgYW5kIHJlbGVhc2VzIHRoZSBydG5sIGxvY2suICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjY3MzpzdGF0aWMgaW50IF9faW5pdCB2aXJ0X3dpZmlfaW5pdF9tb2R1bGUodm9pZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNjc0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NjgwOlx0ZXJyID0gcmVnaXN0ZXJfbmV0ZGV2aWNlX25vdGlmaWVyKFx1MDAyNnZpcnRfd2lmaV9ub3RpZmllcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY4MS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02ODQtXHRlcnIgPSAtRU5PTUVNO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2ODU6XHRjb21tb25fd2lwaHkgPSB2aXJ0X3dpZmlfbWFrZV93aXBoeSgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02ODYtXHRpZiAoIWNvbW1vbl93aXBoeSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6Njg5Olx0ZXJyID0gcnRubF9saW5rX3JlZ2lzdGVyKFx1MDAyNnZpcnRfd2lmaV9saW5rX29wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY5MC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02OTUtZGVzdHJveV93aXBoeTpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6Njk2Olx0dmlydF93aWZpX2Rlc3Ryb3lfd2lwaHkoY29tbW9uX3dpcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNjk3LW5vdGlmaWVyOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2OTg6XHR1bnJlZ2lzdGVyX25ldGRldmljZV9ub3RpZmllcihcdTAwMjZ2aXJ0X3dpZmlfbm90aWZpZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02OTktXHRyZXR1cm4gZXJyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNzAyLS8qIEFjcXVpcmVzIGFuZCByZWxlYXNlcyB0aGUgcnRubCBsb2NrLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo3MDM6c3RhdGljIHZvaWQgX19leGl0IHZpcnRfd2lmaV9jbGVhbnVwX21vZHVsZSh2b2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy03MDQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy03MDUtXHQvKiBXaWxsIGRlbGV0ZSBhbnkgZGV2aWNlcyB0aGF0IGRlcGVuZCBvbiB0aGUgd2lwaHkuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjcwNjpcdHJ0bmxfbGlua191bnJlZ2lzdGVyKFx1MDAyNnZpcnRfd2lmaV9saW5rX29wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjcwNzpcdHZpcnRfd2lmaV9kZXN0cm95X3dpcGh5KGNvbW1vbl93aXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjcwODpcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX25vdGlmaWVyKFx1MDAyNnZpcnRfd2lmaV9ub3RpZmllcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTcwOS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTcxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NzExOm1vZHVsZV9pbml0KHZpcnRfd2lmaV9pbml0X21vZHVsZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjcxMjptb2R1bGVfZXhpdCh2aXJ0X3dpZmlfY2xlYW51cF9tb2R1bGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy03MTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYz03MTY9TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O0RyaXZlciBmb3IgYSB3aXJlbGVzcyB3cmFwcGVyIG9mIGV0aGVybmV0IGRldmljZXNcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo3MTc6TU9EVUxFX0FMSUFTX1JUTkxfTElOSyhcJiMzNDt2aXJ0X3dpZmlcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEzOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk1NDYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFZpcnR1YWwgV2lGaSBUcmFuc21pdCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uLCBgVklSVF9XSUZJYCwgYW5kIG15IHByaW1hcnkgZm9jdXMgcmlnaHQgbm93IGlzIHRoZSBgdmlydF93aWZpX3N0YXJ0X3htaXRgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dCBhbmQgYW55IHBvdGVudGlhbCBkZXBlbmRlbmNpZXMuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcywgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWdgIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvS2NvbmZpZ2AuIFRoaXMgc2hvdWxkIGhlbHAgbWUgaWRlbnRpZnkgYW55IHByZXJlcXVpc2l0ZXMgb3Igb3RoZXIgY29uZmlndXJhdGlvbnMgdGhhdCBjb3VsZCBhZmZlY3QgaG93IGB2aXJ0X3dpZmlfc3RhcnRfeG1pdGAgYmVoYXZlcyBvciBpcyBldmVuIGNvbXBpbGVkIGluIHRoZSBmaXJzdCBwbGFjZS4gS25vd2luZyBhbnkgZGVwZW5kZW5jaWVzIHVwIGZyb250IHdpbGwgc3RyZWFtbGluZSBteSBhbmFseXNpcyBvZiB0aGUgZnVuY3Rpb24gaXRzZWxmLCBzbyBJJiMzOTtsbCBzZWUgd2hhdCB0aGUgS2NvbmZpZ3Mgc2F5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEzOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWSVJUX1dJRkkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnPTE9Y29uZmlnIE1BQzgwMjExX0hXU0lNXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE0OmNvbmZpZyBWSVJUX1dJRklcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZy0xNS1cdHRyaXN0YXRlIFwmIzM0O1dpZmkgd3JhcHBlciBmb3IgZXRoZXJuZXQgZHJpdmVyc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEzOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk4OTcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipFeGFtaW5pbmcgV2lyZWxlc3MgVmlydHVhbCBEcml2ZXIgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gdGhlIHZpcnR1YWwgd2lyZWxlc3MgZHJpdmVyLiBNeSBpbnN0aW5jdCBpcyB0byBoZWFkIHN0cmFpZ2h0IGZvciB0aGUgYEtjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgY3JpdGljYWwgY29uZmlndXJhdGlvbiBsb2dpYyBsaXZlcywgcmlnaHQ/IFRoaXMgZmlsZSBzaG91bGQgcmV2ZWFsIHRoZSBuZWNlc3NhcnkgcHJlcmVxdWlzaXRlcyDigJMgb3RoZXIgZHJpdmVycywga2VybmVsIGZlYXR1cmVzLCBvciBldmVuIGhhcmR3YXJlLXNwZWNpZmljIGNvbnNpZGVyYXRpb25zIOKAkyB0aGF0IG11c3QgYmUgaW4gcGxhY2UgYmVmb3JlIHRoZSB2aXJ0dWFsIGRyaXZlciBjYW4gZXZlbiBiZSBjb25zaWRlcmVkIGZvciBpbmNsdXNpb24uIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOgoKKiAgICoqQ29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzOioqIFdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgbmVlZCB0byBiZSBlbmFibGVkIGJlZm9yZSB0aGUgdmlydHVhbCBkcml2ZXIgaXMgZXZlbiBwcmVzZW50ZWQgYXMgYW4gb3B0aW9uPyBUaGlzIG1pZ2h0IGluY2x1ZGUgb3RoZXIgd2lyZWxlc3Mgc3RhY2sgY29tcG9uZW50cyBvciBldmVuIHNwZWNpZmljIG5ldHdvcmtpbmcgZmVhdHVyZXMuCiogICAqKlN5bWJvbCBkZWZpbml0aW9uczoqKiBXaGF0IHN5bWJvbHMgYXJlIGRlZmluZWQgb3IgdXNlZCB3aXRoaW4gdGhlIEtjb25maWcgZmlsZT8gVW5kZXJzdGFuZGluZyB0aGVzZSBzeW1ib2xzIHByb3ZpZGVzIGNyaXRpY2FsIGNsdWVzIGFib3V0IHRoZSBjb2RlJiMzOTtzIGludGVuZGVkIHVzZSBhbmQgaW50ZWdyYXRpb24gd2l0aGluIHRoZSBicm9hZGVyIGtlcm5lbC4KKiAgICoqRGVmYXVsdCB2YWx1ZXMgYW5kIGhlbHAgdGV4dDoqKiBUaGUgZGVmYXVsdCBjb25maWd1cmF0aW9ucyBhbmQgYWNjb21wYW55aW5nIGhlbHAgdGV4dCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaW5pdGlhbCBvdmVydmlldy4gVGhpcyB3aWxsIHRlbGwgbWUgaG93IHRoZSBkcml2ZXIgaXMgc3VwcG9zZWQgdG8gYmUgdXNlZCBhbmQgcG90ZW50aWFsbHkgcHJvdmlkZSBpbnNpZ2h0cyBpbnRvIHR5cGljYWwgdXNlIGNhc2VzLgoqICAgKipJbmRpcmVjdCBkZXBlbmRlbmNpZXM6KiogSSYjMzk7bGwgaGF2ZSB0byBiZSB3YXJ5IG9mIGluZGlyZWN0IGRlcGVuZGVuY2llczogdGhvc2UgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgdGhlIHZpcnR1YWwgZHJpdmVyIHJlcXVpcmVzLCB3aGljaCwgaW4gdHVybiwgZGVwZW5kIG9uIG90aGVyIGNvbmZpZ3VyYXRpb25zLiBJIG11c3QgdHJhY2sgdGhlIGNvbXBsZXRlIGRlcGVuZGVuY3kgY2hhaW4gdG8gdW5kZXJzdGFuZCB0aGUgd2hvbGUgcGljdHVyZS4KClRoaXMgYEtjb25maWdgIGZpbGUgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIHZpcnR1YWwgZHJpdmVyIGludGVncmF0ZXMgaW50byB0aGUgbGFyZ2VyIGtlcm5lbCBuZXR3b3JrIHN0YWNrIGFuZCB3aGF0IGl0IHJlbGllcyBvbi4gVGltZSB0byBkaXZlIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEzOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Y29uZmlnIE1BQzgwMjExX0hXU0lNXG4gICAyOlx0XHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxMVwmIzM0O1xuICAgMzpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAgNDpcdFx0aGVscFxuICAgNTpcdFx0ICBUaGlzIGRyaXZlciBpcyBhIGRldmVsb3BlciB0ZXN0aW5nIHRvb2wgdGhhdCBjYW4gYmUgdXNlZCB0byB0ZXN0XG4gICA2Olx0XHQgIElFRUUgODAyLjExIG5ldHdvcmtpbmcgc3RhY2sgKG1hYzgwMjExKSBmdW5jdGlvbmFsaXR5LiBUaGlzIGlzIG5vdFxuICAgNzpcdFx0ICBuZWVkZWQgZm9yIG5vcm1hbCB3aXJlbGVzcyBMQU4gdXNhZ2UgYW5kIGlzIG9ubHkgZm9yIHRlc3RpbmcuIFNlZVxuICAgODpcdFx0ICBEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbWFjODAyMTFfaHdzaW0gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93XG4gICA5Olx0XHQgIHRvIHVzZSB0aGlzIHRvb2wuXG4gIDEwOlx0XG4gIDExOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZVxuICAxMjpcdFx0ICBjYWxsZWQgbWFjODAyMTFfaHdzaW0uICBJZiB1bnN1cmUsIHNheSBOLlxuICAxMzpcdFxuICAxNDpcdGNvbmZpZyBWSVJUX1dJRklcbiAgMTU6XHRcdHRyaXN0YXRlIFwmIzM0O1dpZmkgd3JhcHBlciBmb3IgZXRoZXJuZXQgZHJpdmVyc1wmIzM0O1xuICAxNjpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBUaGlzIG9wdGlvbiBhZGRzIHN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbm5lY3Rpb25zIHRvIGFwcGVhciBhcyBpZiB0aGV5XG4gIDE5Olx0XHQgIGFyZSB3aWZpIGNvbm5lY3Rpb25zIHRocm91Z2ggYSBzcGVjaWFsIHJ0bmV0bGluayBkZXZpY2UuXG4gIDIwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTM6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2MTgKCQkJCQkJCW91dHB1dDogMTE5CgkJCQkJCQl0aG91Z2h0czogMzAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgV2lGaSBWaXJ0dWFsaXphdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoZSBrZXkgZGVwZW5kZW5jaWVzOiBgQ0ZHODAyMTFgLiBUaGF0IG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggY29uZmlndXJhdGlvbnMgYFZJUlRfV0lGSWAgYW5kIGBDRkc4MDIxMWAuIFRoZSBwYXRjaCBpdHNlbGYgdGFyZ2V0cyBhIG1lbW9yeSBsZWFrLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGB2aXJ0X3dpZmlfc3RhcnRfeG1pdGAgZnVuY3Rpb24uIEl0JiMzOTtzIGEgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIGJ1ZyBmaXgsIGFuZCBpdCYjMzk7cyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGF0IG1ha2VzIGl0IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIGB2aXJ0X3dpZmlfc3RhcnRfeG1pdGAgaXMgdGhlIGZvY3VzLCBvZiBjb3Vyc2UsIGdpdmVuIGl0JiMzOTtzIHRoZSB0YXJnZXQgZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGBWSVJUX1dJRklgIGFuZCBgQ0ZHODAyMTFgIHRvIHRyaWdnZXIgdGhpcy4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgbm8sIGB2aXJ0X3dpZmlfc3RhcnRfeG1pdGAgaXMgdGhlIG9ubHkgZnVuY3Rpb24gdGhhdCB3YXMgbW9kaWZpZWQgaW4gdGhpcyBwYXRjaC4KClJpZ2h0LCB0aGlzIGlzIGEgdmVyeSBzaW1wbGUgcGF0Y2gsIGxvb2tpbmcgYXQgdGhlIGNvZGU6CgpgYGBjCkBAIC00MzQsNiAmIzQzOzQzNCw3IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCB2aXJ0X3dpZmlfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXByaXYtJmd0O3R4X3BhY2tldHMmIzQzOyYjNDM7OwogCWlmICghcHJpdi0mZ3Q7aXNfY29ubmVjdGVkKSB7CiAJCXByaXYtJmd0O3R4X2ZhaWxlZCYjNDM7JiM0Mzs7CiYjNDM7CQlkZXZfa2ZyZWVfc2tiX2FueShza2IpOwogCQlyZXR1cm4gTkVUX1hNSVRfRFJPUDsKIAl9CmBgYAoKSXQmIzM5O3MgYSBjbGVhciBtZW1vcnkgbGVhayBmaXg7IGFkZGluZyBgZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtgIHdoZW4gdGhlIHRyYW5zbWlzc2lvbiBmYWlscy4gT2theSwgSSYjMzk7bSBzYXRpc2ZpZWQuIExldCYjMzk7cyBzZXQgdGhlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEzOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWSVJUX1dJRkkmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2aXJ0X3dpZmlfc3RhcnRfeG1pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSB2aXJ0X3dpZmlfc3RhcnRfeG1pdCBmdW5jdGlvbiBvZiB0aGUgdmlydF93aWZpIGRyaXZlciBieSBmcmVlaW5nIHRoZSBza2Igd2hlbiB0aGUgZGV2aWNlIGlzIG5vdCBjb25uZWN0ZWQuIFRoZSB2aXJ0X3dpZmkgZHJpdmVyIGlzIGEgdmlydHVhbCB3aXJlbGVzcyBkcml2ZXIgdGhhdCB3cmFwcyBldGhlcm5ldCBkZXZpY2VzLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VklSVF9XSUZJJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmlydF93aWZpX3N0YXJ0X3htaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgdmlydF93aWZpX3N0YXJ0X3htaXQgZnVuY3Rpb24gb2YgdGhlIHZpcnRfd2lmaSBkcml2ZXIgYnkgZnJlZWluZyB0aGUgc2tiIHdoZW4gdGhlIGRldmljZSBpcyBub3QgY29ubmVjdGVkLiBUaGUgdmlydF93aWZpIGRyaXZlciBpcyBhIHZpcnR1YWwgd2lyZWxlc3MgZHJpdmVyIHRoYXQgd3JhcHMgZXRoZXJuZXQgZGV2aWNlcywgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEzOjI3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTM6Mjc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBieSBhZGRpbmcgYGRldl9rZnJlZV9za2JfYW55KHNrYilgIHdoZW4gdGhlIHZpcnR1YWwgd2lmaSBkZXZpY2UgaXMgbm90IGNvbm5lY3RlZCBhbmQgZHJvcHMgdGhlIHBhY2tldC4gVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGxvZ2ljIHRoYXQgY291bGQgbGVhZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkIG9yIGxlYWtlZCB0byB1c2VyIHNwYWNlLiBBbnkgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDgyN2FiZjAzYTBmYWVkNDAwNTAzOTg3ZDBlOGEwZjk4NGNkNzEyNzUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEF1ZyA5IDEzOjI3OjAxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMKaW5kZXggMjMzNWU0NWRiOGI4NS4uYjY5YTQ2NTBmYmE4NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jCkBAIC00MzQsNiAmIzQzOzQzNCw3IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCB2aXJ0X3dpZmlfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCXByaXYtJmd0O3R4X3BhY2tldHMmIzQzOyYjNDM7OwogCWlmICghcHJpdi0mZ3Q7aXNfY29ubmVjdGVkKSB7CiAJCXByaXYtJmd0O3R4X2ZhaWxlZCYjNDM7JiM0Mzs7CiYjNDM7CQlkZXZfa2ZyZWVfc2tiX2FueShza2IpOwogCQlyZXR1cm4gTkVUX1hNSVRfRFJPUDsKIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDEzOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5ODEKCQkJCQkJCW91dHB1dDogMTMyCgkJCQkJCQl0aG91Z2h0czogMjkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1lbW9yeSBMZWFrIEZpeCBpbiBOZXR3b3JrIERyaXZlciBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYHZpcnRfd2lmaV9zdGFydF94bWl0YCBmdW5jdGlvbi4gVGhleSYjMzk7dmUgYWRkZWQgYGRldl9rZnJlZV9za2JfYW55KHNrYik7YCB3aGVuIHRoZSBkZXZpY2UgaXNuJiMzOTt0IGNvbm5lY3RlZCwgc3BlY2lmaWNhbGx5IHdoZW4gYCFwcml2LSZndDtpc19jb25uZWN0ZWRgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7WWVzLCB0aGF0JiMzOTtzIGEgZ29vZCBtb3ZlLiYjMzQ7IFRoYXQmIzM5O3MgY2xhc3NpYyBtZW1vcnkgbGVhayBwcmV2ZW50aW9uLiBJZiB0aGUgcGFja2V0IChgc2tiYCkgaXMgZHJvcHBlZCBiZWNhdXNlIHRoZSBjb25uZWN0aW9uIGlzbiYjMzk7dCB1cCwgaXQgKnNob3VsZCogYmUgZnJlZWQuIE90aGVyd2lzZSwgd2UmIzM5O2QgaGF2ZSBhIGxlYWssIG9yIHBvdGVudGlhbGx5IGEgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUsIGFsdGhvdWdoIGluIHRoaXMgY2FzZSBpdCYjMzk7cyBqdXN0IGEgbGVhay4KCk5vdywgbXkgbW9yZSBleHBlcmllbmNlZCBicmFpbiBraWNrcyBpbiwgYW5kIEkgdGhpbmssICYjMzQ7SG9sZCBvbiwgZG9lcyB0aGlzIHBhdGNoIGludHJvZHVjZSBhbnkgcmlza3Mgd2l0aCB1bmluaXRpYWxpemVkIG1lbW9yeT8mIzM0OyBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHRoZSBhbmdsZXMuIEJ1dCBubywgd2FpdC4uLiBuby4gVGhpcyBwYXRjaCAqb25seSogZnJlZXMgYSBzdHJ1Y3R1cmUuIEl0JiMzOTtzIG5vdCByZWFkaW5nIGZyb20gb3Igd3JpdGluZyB0byBhbnl0aGluZyB0aGF0IGlzbiYjMzk7dCBhbHJlYWR5IGluaXRpYWxpemVkLiBLQVNBTi9rbWVtbGVhay9ldGMuIGFyZSB0aGUgdG9vbHMgdGhhdCB3aWxsIGhlbHAgdXMgY2F0Y2ggbWVtb3J5IGxlYWtzIG9yIHVzZS1hZnRlci1mcmVlIGNvbmRpdGlvbnMuIEtNU0FOIGRlYWxzIHdpdGggdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoaXMgaXNuJiMzOTt0IHRoYXQuCgpKdXN0IHRvIGJlIHN1cmUsIEkgbmVlZCB0byB0YWtlIGEgcXVpY2sgcGVlayBhdCB0aGUgcGF0Y2ggY29kZSBpdHNlbGYgdG8gZW5zdXJlIGl0IGlzIHdoYXQgSSB0aGluayBpdCBpcy4KCmBgYGMKQEAgLTQzNCw2ICYjNDM7NDM0LDcgQEAgc3RhdGljIG5ldGRldl90eF90IHZpcnRfd2lmaV9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsCiAJcHJpdi0mZ3Q7dHhfcGFja2V0cyYjNDM7JiM0Mzs7CiAJaWYgKCFwcml2LSZndDtpc19jb25uZWN0ZWQpIHsKIAkJcHJpdi0mZ3Q7dHhfZmFpbGVkJiM0MzsmIzQzOzsKJiM0MzsJCWRldl9rZnJlZV9za2JfYW55KHNrYik7CiAJCXJldHVybiBORVRfWE1JVF9EUk9QOwogCX0KIGBgYAoKWWVwLiBTdGFuZGFyZCBtZW1vcnkgbGVhayBmaXguIE5vdGhpbmcgdG8gd29ycnkgYWJvdXQgaW4gdGVybXMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuIGBOZWVkc0tNU0FOID0gZmFsc2VgLiBXZSYjMzk7cmUgZ29vZCB0byBnby4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTM6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBieSBhZGRpbmcgYGRldl9rZnJlZV9za2JfYW55KHNrYilgIHdoZW4gdGhlIHZpcnR1YWwgd2lmaSBkZXZpY2UgaXMgbm90IGNvbm5lY3RlZCBhbmQgZHJvcHMgdGhlIHBhY2tldC4gVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGxvZ2ljIHRoYXQgY291bGQgbGVhZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkIG9yIGxlYWtlZCB0byB1c2VyIHNwYWNlLiBBbnkgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGJ5IGFkZGluZyBgZGV2X2tmcmVlX3NrYl9hbnkoc2tiKWAgd2hlbiB0aGUgdmlydHVhbCB3aWZpIGRldmljZSBpcyBub3QgY29ubmVjdGVkIGFuZCBkcm9wcyB0aGUgcGFja2V0LiBUaGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgbG9naWMgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQgb3IgbGVha2VkIHRvIHVzZXIgc3BhY2UuIEFueSBwb3RlbnRpYWwgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2UgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTM6Mjc6MDIuNDQwOTE1MjI2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAwMDkwMjQ3MjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZJUlRfV0lGSVwiLFxuICAgIFwiQ0ZHODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2aXJ0X3dpZmlfc3RhcnRfeG1pdFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBieSBhZGRpbmcgYGRldl9rZnJlZV9za2JfYW55KHNrYilgIHdoZW4gdGhlIHZpcnR1YWwgd2lmaSBkZXZpY2UgaXMgbm90IGNvbm5lY3RlZCBhbmQgZHJvcHMgdGhlIHBhY2tldC4gVGhpcyBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGxvZ2ljIHRoYXQgY291bGQgbGVhZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyByZWFkIG9yIGxlYWtlZCB0byB1c2VyIHNwYWNlLiBBbnkgcG90ZW50aWFsIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlIG9yIGRvdWJsZS1mcmVlKSB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgdmlydF93aWZpX3N0YXJ0X3htaXQgZnVuY3Rpb24gb2YgdGhlIHZpcnRfd2lmaSBkcml2ZXIgYnkgZnJlZWluZyB0aGUgc2tiIHdoZW4gdGhlIGRldmljZSBpcyBub3QgY29ubmVjdGVkLiBUaGUgdmlydF93aWZpIGRyaXZlciBpcyBhIHZpcnR1YWwgd2lyZWxlc3MgZHJpdmVyIHRoYXQgd3JhcHMgZXRoZXJuZXQgZGV2aWNlcywgd2hpY2ggaXMgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEzOjI3OjAyLjQ0MDkyMDM2NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDczNzYzMTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODI3YWJmMDNhMGZhZWQ0MDA1MDM5ODdkMGU4YTBmOTg0Y2Q3MTI3NVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyA5IDEzOjI3OjAxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jXFxuaW5kZXggMjMzNWU0NWRiOGI4NS4uYjY5YTQ2NTBmYmE4NSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuY1xcbkBAIC00MzQsNiArNDM0LDcgQEAgc3RhdGljIG5ldGRldl90eF90IHZpcnRfd2lmaV9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHByaXYtXFx1MDAzZXR4X3BhY2tldHMrKztcXG4gXFx0aWYgKCFwcml2LVxcdTAwM2Vpc19jb25uZWN0ZWQpIHtcXG4gXFx0XFx0cHJpdi1cXHUwMDNldHhfZmFpbGVkKys7XFxuK1xcdFxcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XFxuIFxcdFxcdHJldHVybiBORVRfWE1JVF9EUk9QO1xcbiBcXHR9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMzoyNzowMi45MTUyNzE4OTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNDU1MzAyMDQ0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSVJUX1dJRklcIixcbiAgICBcIkNGRzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmlydF93aWZpX3N0YXJ0X3htaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSB2aXJ0X3dpZmlfc3RhcnRfeG1pdCBmdW5jdGlvbiBvZiB0aGUgdmlydF93aWZpIGRyaXZlciBieSBmcmVlaW5nIHRoZSBza2Igd2hlbiB0aGUgZGV2aWNlIGlzIG5vdCBjb25uZWN0ZWQuIFRoZSB2aXJ0X3dpZmkgZHJpdmVyIGlzIGEgdmlydHVhbCB3aXJlbGVzcyBkcml2ZXIgdGhhdCB3cmFwcyBldGhlcm5ldCBkZXZpY2VzLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgODI3YWJmMDNhMGZhZWQ0MDA1MDM5ODdkMGU4YTBmOTg0Y2Q3MTI3NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDkgMTM6Mjc6MDEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuY1xuaW5kZXggMjMzNWU0NWRiOGI4NS4uYjY5YTQ2NTBmYmE4NSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmNcbkBAIC00MzQsNiArNDM0LDcgQEAgc3RhdGljIG5ldGRldl90eF90IHZpcnRfd2lmaV9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRwcml2LVx1MDAzZXR4X3BhY2tldHMrKztcbiBcdGlmICghcHJpdi1cdTAwM2Vpc19jb25uZWN0ZWQpIHtcbiBcdFx0cHJpdi1cdTAwM2V0eF9mYWlsZWQrKztcbitcdFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtcbiBcdFx0cmV0dXJuIE5FVF9YTUlUX0RST1A7XG4gXHR9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMzoyNzowMi45MTUyNzMyMTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MjQ0MDM4NjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFZpcnR1YWwgV2lGaSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuY2AuIEl0IHNlZW1zIHRoZXkndmUgYWRkZWQgYSBgZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtgIGNhbGwgd2l0aGluIGB2aXJ0X3dpZmlfc3RhcnRfeG1pdGAgd2hlbiB0aGUgZHJpdmVyIGlzbid0IGNvbm5lY3RlZCwgc3BlY2lmaWNhbGx5IHdoZW4gYCFwcml2LVx1MDAzZWlzX2Nvbm5lY3RlZGAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIGlzIGxpa2VseSBhIGJ1ZyBmaXgg4oCTIHByb2JhYmx5IGEgbWVtb3J5IGxlYWsuXG5cbkxldCBtZSByZWZyZXNoIG15IG1lbW9yeSBvZiBgdmlydF93aWZpX3N0YXJ0X3htaXRgIGluIHRoYXQgZmlsZS4gWWVzLCB0aGlzIGlzIHRoZSB2aXJ0dWFsIFdpRmkgZHJpdmVyLCB3aGljaCwgb2YgY291cnNlLCBtZWFucyBpdCdzIGhlYXZpbHkgdXNlZCBpbiB2aXJ0dWFsaXphdGlvbiBzY2VuYXJpb3MuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0J3MgZWFzeSB0byBoaXQgYW4gZWRnZSBjYXNlIHdoZXJlIGEgdmlydHVhbCBkZXZpY2UgaXMgdHJ5aW5nIHRvIHRyYW5zbWl0IGJlZm9yZSBpdCdzIGZ1bGx5IGNvbm5lY3RlZC4gVGhpcyBgZGV2X2tmcmVlX3NrYl9hbnkoc2tiKWAgY2FsbCBpcyB0aGUga2V5IHRvIGFkZHJlc3MgdGhlIG1lbW9yeSBsZWFrOiByZWxlYXNpbmcgdGhlIGBza2JgIHdoZW4gdGhlIGRldmljZSBpc24ndCBwcm9wZXJseSBjb25uZWN0ZWQuXG5cbk5leHQgc3RlcD8gSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBjb25maWcgZm9yIGB2aXJ0X3dpZmlgLCBqdXN0IHRvIHZlcmlmeSBpdHMgY29uZmlndXJhdGlvbiBpcyBzdHJhaWdodGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODQsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMzoyNzoxMS4xNTkzMTQ0ODhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ4MDYxMDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZpcnRfd2lmaVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL01ha2VmaWxlPTM9bWFjODAyMTFfaHdzaW0tb2Jqc1xcdFxcdCs9IG1hYzgwMjExX2h3c2ltX25hbi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9NYWtlZmlsZS00LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfVklSVF9XSUZJKVxcdCs9IHZpcnRfd2lmaS5vXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjI6LyogZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydF93aWZpLmNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTMtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM9MTg9c3RhdGljIHN0cnVjdCB3aXBoeSAqY29tbW9uX3dpcGh5O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzoyMDpzdHJ1Y3QgdmlydF93aWZpX3dpcGh5X3ByaXYge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjEtXFx0c3RydWN0IGRlbGF5ZWRfd29yayBzY2FuX3Jlc3VsdDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM9MTM3PXN0YXRpYyB1OCBmYWtlX3JvdXRlcl9ic3NpZFtFVEhfQUxFTl0gX19yb19hZnRlcl9pbml0ID0ge307XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTE0MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjE0MjpzdGF0aWMgdm9pZCB2aXJ0X3dpZmlfaW5mb3JtX2JzcyhzdHJ1Y3Qgd2lwaHkgKndpcGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMTQzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMTY1LS8qIENhbGxlZCB3aXRoIHRoZSBydG5sIGxvY2sgaGVsZC4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjE2NjpzdGF0aWMgaW50IHZpcnRfd2lmaV9zY2FuKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0xNjctXFx0XFx0XFx0ICBzdHJ1Y3QgY2ZnODAyMTFfc2Nhbl9yZXF1ZXN0ICpyZXF1ZXN0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMTY4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjE2OTpcXHRzdHJ1Y3QgdmlydF93aWZpX3dpcGh5X3ByaXYgKnByaXYgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTE3MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMTgyLS8qIEFjcXVpcmVzIGFuZCByZWxlYXNlcyB0aGUgcmRldiBCU1MgbG9jay4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjE4MzpzdGF0aWMgdm9pZCB2aXJ0X3dpZmlfc2Nhbl9yZXN1bHQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMTg0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjE4NTpcXHRzdHJ1Y3QgdmlydF93aWZpX3dpcGh5X3ByaXYgKnByaXYgPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MTg2OlxcdFxcdGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgdmlydF93aWZpX3dpcGh5X3ByaXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0xODctXFx0XFx0XFx0ICAgICBzY2FuX3Jlc3VsdC53b3JrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMTkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MTkxOlxcdHZpcnRfd2lmaV9pbmZvcm1fYnNzKHdpcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTE5Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMTk4LS8qIE1heSBhY3F1aXJlIGFuZCByZWxlYXNlIHRoZSByZGV2IEJTUyBsb2NrLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MTk5OnN0YXRpYyB2b2lkIHZpcnRfd2lmaV9jYW5jZWxfc2NhbihzdHJ1Y3Qgd2lwaHkgKndpcGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjAwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjIwMTpcXHRzdHJ1Y3QgdmlydF93aWZpX3dpcGh5X3ByaXYgKnByaXYgPSB3aXBoeV9wcml2KHdpcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTIwMi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MjEzOnN0cnVjdCB2aXJ0X3dpZmlfbmV0ZGV2X3ByaXYge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjE0LVxcdHN0cnVjdCBkZWxheWVkX3dvcmsgY29ubmVjdDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjI3LS8qIENhbGxlZCB3aXRoIHRoZSBydG5sIGxvY2sgaGVsZC4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjIyODpzdGF0aWMgaW50IHZpcnRfd2lmaV9jb25uZWN0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0yMjktXFx0XFx0XFx0ICAgICBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTIzMC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzoyMzE6XFx0c3RydWN0IHZpcnRfd2lmaV9uZXRkZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0yMzItXFx0Ym9vbCBjb3VsZF9zY2hlZHVsZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjQ5LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzoyNTA6XFx0XFx0dmlydF93aWZpX2luZm9ybV9ic3Mod2lwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjUxLVxcdFxcdGV0aF96ZXJvX2FkZHIocHJpdi1cXHUwMDNlY29ubmVjdF9yZXF1ZXN0ZWRfYnNzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjU5LS8qIEFjcXVpcmVzIGFuZCByZWxlYXNlcyB0aGUgcmRldiBldmVudCBsb2NrLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MjYwOnN0YXRpYyB2b2lkIHZpcnRfd2lmaV9jb25uZWN0X2NvbXBsZXRlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTI2MS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzoyNjI6XFx0c3RydWN0IHZpcnRfd2lmaV9uZXRkZXZfcHJpdiAqcHJpdiA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzoyNjM6XFx0XFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB2aXJ0X3dpZmlfbmV0ZGV2X3ByaXYsIGNvbm5lY3Qud29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0yNjQtXFx0dTggKnJlcXVlc3RlZF9ic3MgPSBwcml2LVxcdTAwM2Vjb25uZWN0X3JlcXVlc3RlZF9ic3M7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTI4Ny0vKiBNYXkgYWNxdWlyZSBhbmQgcmVsZWFzZSB0aGUgcmRldiBldmVudCBsb2NrLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6Mjg4OnN0YXRpYyB2b2lkIHZpcnRfd2lmaV9jYW5jZWxfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMjg5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjI5MDpcXHRzdHJ1Y3QgdmlydF93aWZpX25ldGRldl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTI5MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzAzLS8qIENhbGxlZCB3aXRoIHRoZSBydG5sIGxvY2sgaGVsZC4gQWNxdWlyZXMgdGhlIHJkZXYgZXZlbnQgbG9jay4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjMwNDpzdGF0aWMgaW50IHZpcnRfd2lmaV9kaXNjb25uZWN0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zMDUtXFx0XFx0XFx0XFx0dTE2IHJlYXNvbl9jb2RlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzA2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjMwNzpcXHRzdHJ1Y3QgdmlydF93aWZpX25ldGRldl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTMwOC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzEyLVxcdHdpcGh5X2RlYnVnKHdpcGh5LCBcXFwiZGlzY29ubmVjdFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozMTM6XFx0dmlydF93aWZpX2NhbmNlbF9jb25uZWN0KG5ldGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zMTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTMyMi0vKiBDYWxsZWQgd2l0aCB0aGUgcnRubCBsb2NrIGhlbGQuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozMjM6c3RhdGljIGludCB2aXJ0X3dpZmlfZ2V0X3N0YXRpb24oc3RydWN0IHdpcGh5ICp3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTMyNC1cXHRcXHRcXHRcXHQgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgY29uc3QgdTggKm1hYyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzI3LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSB3ZGV2LVxcdTAwM2VuZXRkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozMjg6XFx0c3RydWN0IHZpcnRfd2lmaV9uZXRkZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zMjktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTM0OS0vKiBDYWxsZWQgd2l0aCB0aGUgcnRubCBsb2NrIGhlbGQuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozNTA6c3RhdGljIGludCB2aXJ0X3dpZmlfZHVtcF9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zNTEtXFx0XFx0XFx0XFx0ICBpbnQgaWR4LCB1OCAqbWFjLCBzdHJ1Y3Qgc3RhdGlvbl9pbmZvICpzaW5mbylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTM1Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozNTM6XFx0c3RydWN0IHZpcnRfd2lmaV9uZXRkZXZfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KHdkZXYtXFx1MDAzZW5ldGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zNTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTM2MC1cXHRldGhlcl9hZGRyX2NvcHkobWFjLCBmYWtlX3JvdXRlcl9ic3NpZCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozNjE6XFx0cmV0dXJuIHZpcnRfd2lmaV9nZXRfc3RhdGlvbih3aXBoeSwgd2RldiwgZmFrZV9yb3V0ZXJfYnNzaWQsIHNpbmZvKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTM2Mi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozNjQ6c3RhdGljIGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9vcHMgdmlydF93aWZpX2NmZzgwMjExX29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjM2NTpcXHQuc2NhbiA9IHZpcnRfd2lmaV9zY2FuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6MzY3OlxcdC5jb25uZWN0ID0gdmlydF93aWZpX2Nvbm5lY3QsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozNjg6XFx0LmRpc2Nvbm5lY3QgPSB2aXJ0X3dpZmlfZGlzY29ubmVjdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTM2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjM3MDpcXHQuZ2V0X3N0YXRpb24gPSB2aXJ0X3dpZmlfZ2V0X3N0YXRpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozNzE6XFx0LmR1bXBfc3RhdGlvbiA9IHZpcnRfd2lmaV9kdW1wX3N0YXRpb24sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zNzItfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzc0LS8qIEFjcXVpcmVzIGFuZCByZWxlYXNlcyB0aGUgcnRubCBsb2NrLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6Mzc1OnN0YXRpYyBzdHJ1Y3Qgd2lwaHkgKnZpcnRfd2lmaV9tYWtlX3dpcGh5KHZvaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zNzYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzc3LVxcdHN0cnVjdCB3aXBoeSAqd2lwaHk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozNzg6XFx0c3RydWN0IHZpcnRfd2lmaV93aXBoeV9wcml2ICpwcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzc5LVxcdGludCBlcnI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzozODE6XFx0d2lwaHkgPSB3aXBoeV9uZXcoXFx1MDAyNnZpcnRfd2lmaV9jZmc4MDIxMV9vcHMsIHNpemVvZigqcHJpdikpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtMzgyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy0zOTgtXFx0cHJpdi1cXHUwMDNlc2Nhbl9yZXF1ZXN0ID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjM5OTpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2cHJpdi1cXHUwMDNlc2Nhbl9yZXN1bHQsIHZpcnRfd2lmaV9zY2FuX3Jlc3VsdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00MDAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQxMC0vKiBBY3F1aXJlcyBhbmQgcmVsZWFzZXMgdGhlIHJ0bmwgbG9jay4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQxMTpzdGF0aWMgdm9pZCB2aXJ0X3dpZmlfZGVzdHJveV93aXBoeShzdHJ1Y3Qgd2lwaHkgKndpcGh5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDEyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQxMzpcXHRzdHJ1Y3QgdmlydF93aWZpX3dpcGh5X3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00MTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQyMC1cXHRwcml2LVxcdTAwM2ViZWluZ19kZWxldGVkID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQyMTpcXHR2aXJ0X3dpZmlfY2FuY2VsX3NjYW4od2lwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDIyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00MjgtLyogRW50ZXJzIGFuZCBleGl0cyBhIFJDVS1iaCBjcml0aWNhbCBzZWN0aW9uLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDI5OnN0YXRpYyBuZXRkZXZfdHhfdCB2aXJ0X3dpZmlfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDMwLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00MzEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDMyOlxcdHN0cnVjdCB2aXJ0X3dpZmlfbmV0ZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDMzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00NDUtLyogQ2FsbGVkIHdpdGggcnRubCBsb2NrIGhlbGQuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo0NDY6c3RhdGljIGludCB2aXJ0X3dpZmlfbmV0X2RldmljZV9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00NDcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDQ4OlxcdHN0cnVjdCB2aXJ0X3dpZmlfbmV0ZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00NTQtLyogQ2FsbGVkIHdpdGggcnRubCBsb2NrIGhlbGQuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo0NTU6c3RhdGljIGludCB2aXJ0X3dpZmlfbmV0X2RldmljZV9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00NTYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDU3OlxcdHN0cnVjdCB2aXJ0X3dpZmlfbmV0ZGV2X3ByaXYgKm5fcHJpdiA9IG5ldGRldl9wcml2KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00NTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQ2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQ2NDpcXHR2aXJ0X3dpZmlfY2FuY2VsX3NjYW4oZGV2LVxcdTAwM2VpZWVlODAyMTFfcHRyLVxcdTAwM2V3aXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo0NjU6XFx0dmlydF93aWZpX2NhbmNlbF9jb25uZWN0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00NjYtXFx0bmV0aWZfY2Fycmllcl9vZmYoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDcwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDcxOnN0YXRpYyBpbnQgdmlydF93aWZpX25ldF9kZXZpY2VfZ2V0X2lmbGluayhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDcyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQ3MzpcXHRzdHJ1Y3QgdmlydF93aWZpX25ldGRldl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQ3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDc4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdmlydF93aWZpX29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQ3OTpcXHQubmRvX3N0YXJ0X3htaXQgPSB2aXJ0X3dpZmlfc3RhcnRfeG1pdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQ4MDpcXHQubmRvX29wZW5cXHQ9IHZpcnRfd2lmaV9uZXRfZGV2aWNlX29wZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo0ODE6XFx0Lm5kb19zdG9wXFx0PSB2aXJ0X3dpZmlfbmV0X2RldmljZV9zdG9wLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NDgyOlxcdC5uZG9fZ2V0X2lmbGluayA9IHZpcnRfd2lmaV9uZXRfZGV2aWNlX2dldF9pZmxpbmssXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00ODMtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNDg1LS8qIEludm9rZWQgYXMgcGFydCBvZiBydG5sIGxvY2sgcmVsZWFzZS4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQ4NjpzdGF0aWMgdm9pZCB2aXJ0X3dpZmlfbmV0X2RldmljZV9kZXN0cnVjdG9yKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00ODcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00OTUtLyogTm8gbG9jayBpbnRlcmFjdGlvbi4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQ5NjpzdGF0aWMgdm9pZCB2aXJ0X3dpZmlfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTQ5Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy00OTgtXFx0ZXRoZXJfc2V0dXAoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjQ5OTpcXHRkZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2dmlydF93aWZpX29wcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTUwMC1cXHRkZXYtXFx1MDAzZW5lZWRzX2ZyZWVfbmV0ZGV2ICA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTUwMy0vKiBDYWxsZWQgaW4gYSBSQ1UgcmVhZCBjcml0aWNhbCBzZWN0aW9uIGZyb20gbmV0aWZfcmVjZWl2ZV9za2IgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjUwNDpzdGF0aWMgcnhfaGFuZGxlcl9yZXN1bHRfdCB2aXJ0X3dpZmlfcnhfaGFuZGxlcihzdHJ1Y3Qgc2tfYnVmZiAqKnBza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy01MDUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNTA2LVxcdHN0cnVjdCBza19idWZmICpza2IgPSAqcHNrYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjUwNzpcXHRzdHJ1Y3QgdmlydF93aWZpX25ldGRldl9wcml2ICpwcml2ID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTUwOC1cXHRcXHRyY3VfZGVyZWZlcmVuY2Uoc2tiLVxcdTAwM2VkZXYtXFx1MDAzZXJ4X2hhbmRsZXJfZGF0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTUyNi0vKiBDYWxsZWQgd2l0aCBydG5sIGxvY2sgaGVsZC4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjUyNzpzdGF0aWMgaW50IHZpcnRfd2lmaV9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy01MjgtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy01MzAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NTMxOlxcdHN0cnVjdCB2aXJ0X3dpZmlfbmV0ZGV2X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNTMyLVxcdHN0cnVjdCBuZXQgKmxpbmtfbmV0ID0gcnRubF9uZXdsaW5rX2xpbmtfbmV0KHBhcmFtcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTU1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjU1MjpcXHRlcnIgPSBuZXRkZXZfcnhfaGFuZGxlcl9yZWdpc3Rlcihwcml2LVxcdTAwM2Vsb3dlcmRldiwgdmlydF93aWZpX3J4X2hhbmRsZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy01NTMtXFx0XFx0XFx0XFx0XFx0IHByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy01ODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo1ODc6XFx0ZGV2LVxcdTAwM2Vwcml2X2Rlc3RydWN0b3IgPSB2aXJ0X3dpZmlfbmV0X2RldmljZV9kZXN0cnVjdG9yO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNTg4LVxcdHByaXYtXFx1MDAzZWJlaW5nX2RlbGV0ZWQgPSBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNTkwLVxcdHByaXYtXFx1MDAzZWlzX3VwID0gZmFsc2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo1OTE6XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNnByaXYtXFx1MDAzZWNvbm5lY3QsIHZpcnRfd2lmaV9jb25uZWN0X2NvbXBsZXRlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTU5Mi1cXHRfX21vZHVsZV9nZXQoVEhJU19NT0RVTEUpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02MDYtLyogQ2FsbGVkIHdpdGggcnRubCBsb2NrIGhlbGQuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2MDc6c3RhdGljIHZvaWQgdmlydF93aWZpX2RlbGxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTYwOC1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNjA5LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjYxMDpcXHRzdHJ1Y3QgdmlydF93aWZpX25ldGRldl9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTYxMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTYxMi1cXHRpZiAoZGV2LVxcdTAwM2VpZWVlODAyMTFfcHRyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NjEzOlxcdFxcdHZpcnRfd2lmaV9jYW5jZWxfc2NhbihkZXYtXFx1MDAzZWllZWU4MDIxMV9wdHItXFx1MDAzZXdpcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTYxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTYxNS1cXHRwcml2LVxcdTAwM2ViZWluZ19kZWxldGVkID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjYxNjpcXHR2aXJ0X3dpZmlfY2FuY2VsX2Nvbm5lY3QoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTYxNy1cXHRuZXRpZl9jYXJyaWVyX29mZihkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02MjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2Mjg6c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIHZpcnRfd2lmaV9saW5rX29wcyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjYyOTpcXHQua2luZFxcdFxcdD0gXFxcInZpcnRfd2lmaVxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2MzA6XFx0LnNldHVwXFx0XFx0PSB2aXJ0X3dpZmlfc2V0dXAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2MzE6XFx0Lm5ld2xpbmtcXHQ9IHZpcnRfd2lmaV9uZXdsaW5rLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NjMyOlxcdC5kZWxsaW5rXFx0PSB2aXJ0X3dpZmlfZGVsbGluayxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjYzMzpcXHQucHJpdl9zaXplXFx0PSBzaXplb2Yoc3RydWN0IHZpcnRfd2lmaV9uZXRkZXZfcHJpdiksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02MzQtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTYzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjYzNjpzdGF0aWMgYm9vbCBuZXRpZl9pc192aXJ0X3dpZmlfZGV2KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02Mzcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6NjM4OlxcdHJldHVybiByY3VfYWNjZXNzX3BvaW50ZXIoZGV2LVxcdTAwM2VyeF9oYW5kbGVyKSA9PSB2aXJ0X3dpZmlfcnhfaGFuZGxlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTYzOS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02NDAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2NDE6c3RhdGljIGludCB2aXJ0X3dpZmlfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp0aGlzLCB1bnNpZ25lZCBsb25nIGV2ZW50LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNjQyLVxcdFxcdFxcdCAgIHZvaWQgKnB0cilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNjQ0LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpsb3dlcl9kZXYgPSBuZXRkZXZfbm90aWZpZXJfaW5mb190b19kZXYocHRyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjY0NTpcXHRzdHJ1Y3QgdmlydF93aWZpX25ldGRldl9wcml2ICpwcml2O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNjQ2LVxcdHN0cnVjdCBuZXRfZGV2aWNlICp1cHBlcl9kZXY7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY0OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjY0OTpcXHRpZiAoIW5ldGlmX2lzX3ZpcnRfd2lmaV9kZXYobG93ZXJfZGV2KSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY1MC1cXHRcXHRyZXR1cm4gTk9USUZZX0RPTkU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjY2ODpzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHZpcnRfd2lmaV9ub3RpZmllciA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjY2OTpcXHQubm90aWZpZXJfY2FsbCA9IHZpcnRfd2lmaV9ldmVudCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY3MC19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02NzItLyogQWNxdWlyZXMgYW5kIHJlbGVhc2VzIHRoZSBydG5sIGxvY2suICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2NzM6c3RhdGljIGludCBfX2luaXQgdmlydF93aWZpX2luaXRfbW9kdWxlKHZvaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02NzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02NzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2ODA6XFx0ZXJyID0gcmVnaXN0ZXJfbmV0ZGV2aWNlX25vdGlmaWVyKFxcdTAwMjZ2aXJ0X3dpZmlfbm90aWZpZXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNjgxLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY4NC1cXHRlcnIgPSAtRU5PTUVNO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmM6Njg1OlxcdGNvbW1vbl93aXBoeSA9IHZpcnRfd2lmaV9tYWtlX3dpcGh5KCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02ODYtXFx0aWYgKCFjb21tb25fd2lwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjY4OTpcXHRlcnIgPSBydG5sX2xpbmtfcmVnaXN0ZXIoXFx1MDAyNnZpcnRfd2lmaV9saW5rX29wcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy02OTAtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNjk1LWRlc3Ryb3lfd2lwaHk6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo2OTY6XFx0dmlydF93aWZpX2Rlc3Ryb3lfd2lwaHkoY29tbW9uX3dpcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY5Ny1ub3RpZmllcjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjY5ODpcXHR1bnJlZ2lzdGVyX25ldGRldmljZV9ub3RpZmllcihcXHUwMDI2dmlydF93aWZpX25vdGlmaWVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTY5OS1cXHRyZXR1cm4gZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy03MDItLyogQWNxdWlyZXMgYW5kIHJlbGVhc2VzIHRoZSBydG5sIGxvY2suICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo3MDM6c3RhdGljIHZvaWQgX19leGl0IHZpcnRfd2lmaV9jbGVhbnVwX21vZHVsZSh2b2lkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNzA0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTcwNS1cXHQvKiBXaWxsIGRlbGV0ZSBhbnkgZGV2aWNlcyB0aGF0IGRlcGVuZCBvbiB0aGUgd2lwaHkuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo3MDY6XFx0cnRubF9saW5rX3VucmVnaXN0ZXIoXFx1MDAyNnZpcnRfd2lmaV9saW5rX29wcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo3MDc6XFx0dmlydF93aWZpX2Rlc3Ryb3lfd2lwaHkoY29tbW9uX3dpcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjcwODpcXHR1bnJlZ2lzdGVyX25ldGRldmljZV9ub3RpZmllcihcXHUwMDI2dmlydF93aWZpX25vdGlmaWVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jLTcwOS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYy03MTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo3MTE6bW9kdWxlX2luaXQodmlydF93aWZpX2luaXRfbW9kdWxlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jOjcxMjptb2R1bGVfZXhpdCh2aXJ0X3dpZmlfY2xlYW51cF9tb2R1bGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMtNzEzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYz03MTY9TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJEcml2ZXIgZm9yIGEgd2lyZWxlc3Mgd3JhcHBlciBvZiBldGhlcm5ldCBkZXZpY2VzXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuYzo3MTc6TU9EVUxFX0FMSUFTX1JUTkxfTElOSyhcXFwidmlydF93aWZpXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEzOjI3OjExLjYwNzM4MDY5NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5ODgxMDMxNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBWaXJ0dWFsIFdpRmkgVHJhbnNtaXQgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24sIGBWSVJUX1dJRklgLCBhbmQgbXkgcHJpbWFyeSBmb2N1cyByaWdodCBub3cgaXMgdGhlIGB2aXJ0X3dpZmlfc3RhcnRfeG1pdGAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0IGFuZCBhbnkgcG90ZW50aWFsIGRlcGVuZGVuY2llcy4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZmlsZXMsIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnYCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL0tjb25maWdgLiBUaGlzIHNob3VsZCBoZWxwIG1lIGlkZW50aWZ5IGFueSBwcmVyZXF1aXNpdGVzIG9yIG90aGVyIGNvbmZpZ3VyYXRpb25zIHRoYXQgY291bGQgYWZmZWN0IGhvdyBgdmlydF93aWZpX3N0YXJ0X3htaXRgIGJlaGF2ZXMgb3IgaXMgZXZlbiBjb21waWxlZCBpbiB0aGUgZmlyc3QgcGxhY2UuIEtub3dpbmcgYW55IGRlcGVuZGVuY2llcyB1cCBmcm9udCB3aWxsIHN0cmVhbWxpbmUgbXkgYW5hbHlzaXMgb2YgdGhlIGZ1bmN0aW9uIGl0c2VsZiwgc28gSSdsbCBzZWUgd2hhdCB0aGUgS2NvbmZpZ3Mgc2F5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NTQ2LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTM6Mjc6MTUuNTk1NDg2MjQ3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3Mzg3Mjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWSVJUX1dJRklcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZz0xPWNvbmZpZyBNQUM4MDIxMV9IV1NJTVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZzoxNDpjb25maWcgVklSVF9XSUZJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTE1LVxcdHRyaXN0YXRlIFxcXCJXaWZpIHdyYXBwZXIgZm9yIGV0aGVybmV0IGRyaXZlcnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEzOjI3OjE1LjY3Mjg3ODQwNVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2MzY2MTI0NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkV4YW1pbmluZyBXaXJlbGVzcyBWaXJ0dWFsIERyaXZlciBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIHRoZSB2aXJ0dWFsIHdpcmVsZXNzIGRyaXZlci4gTXkgaW5zdGluY3QgaXMgdG8gaGVhZCBzdHJhaWdodCBmb3IgdGhlIGBLY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSB0aGUgY3JpdGljYWwgY29uZmlndXJhdGlvbiBsb2dpYyBsaXZlcywgcmlnaHQ/IFRoaXMgZmlsZSBzaG91bGQgcmV2ZWFsIHRoZSBuZWNlc3NhcnkgcHJlcmVxdWlzaXRlcyDigJMgb3RoZXIgZHJpdmVycywga2VybmVsIGZlYXR1cmVzLCBvciBldmVuIGhhcmR3YXJlLXNwZWNpZmljIGNvbnNpZGVyYXRpb25zIOKAkyB0aGF0IG11c3QgYmUgaW4gcGxhY2UgYmVmb3JlIHRoZSB2aXJ0dWFsIGRyaXZlciBjYW4gZXZlbiBiZSBjb25zaWRlcmVkIGZvciBpbmNsdXNpb24uIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6XG5cbiogICAqKkNvbmRpdGlvbmFsIGRlcGVuZGVuY2llczoqKiBXaGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZCBiZWZvcmUgdGhlIHZpcnR1YWwgZHJpdmVyIGlzIGV2ZW4gcHJlc2VudGVkIGFzIGFuIG9wdGlvbj8gVGhpcyBtaWdodCBpbmNsdWRlIG90aGVyIHdpcmVsZXNzIHN0YWNrIGNvbXBvbmVudHMgb3IgZXZlbiBzcGVjaWZpYyBuZXR3b3JraW5nIGZlYXR1cmVzLlxuKiAgICoqU3ltYm9sIGRlZmluaXRpb25zOioqIFdoYXQgc3ltYm9scyBhcmUgZGVmaW5lZCBvciB1c2VkIHdpdGhpbiB0aGUgS2NvbmZpZyBmaWxlPyBVbmRlcnN0YW5kaW5nIHRoZXNlIHN5bWJvbHMgcHJvdmlkZXMgY3JpdGljYWwgY2x1ZXMgYWJvdXQgdGhlIGNvZGUncyBpbnRlbmRlZCB1c2UgYW5kIGludGVncmF0aW9uIHdpdGhpbiB0aGUgYnJvYWRlciBrZXJuZWwuXG4qICAgKipEZWZhdWx0IHZhbHVlcyBhbmQgaGVscCB0ZXh0OioqIFRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zIGFuZCBhY2NvbXBhbnlpbmcgaGVscCB0ZXh0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBpbml0aWFsIG92ZXJ2aWV3LiBUaGlzIHdpbGwgdGVsbCBtZSBob3cgdGhlIGRyaXZlciBpcyBzdXBwb3NlZCB0byBiZSB1c2VkIGFuZCBwb3RlbnRpYWxseSBwcm92aWRlIGluc2lnaHRzIGludG8gdHlwaWNhbCB1c2UgY2FzZXMuXG4qICAgKipJbmRpcmVjdCBkZXBlbmRlbmNpZXM6KiogSSdsbCBoYXZlIHRvIGJlIHdhcnkgb2YgaW5kaXJlY3QgZGVwZW5kZW5jaWVzOiB0aG9zZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCB0aGUgdmlydHVhbCBkcml2ZXIgcmVxdWlyZXMsIHdoaWNoLCBpbiB0dXJuLCBkZXBlbmQgb24gb3RoZXIgY29uZmlndXJhdGlvbnMuIEkgbXVzdCB0cmFjayB0aGUgY29tcGxldGUgZGVwZW5kZW5jeSBjaGFpbiB0byB1bmRlcnN0YW5kIHRoZSB3aG9sZSBwaWN0dXJlLlxuXG5UaGlzIGBLY29uZmlnYCBmaWxlIGlzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhpcyB2aXJ0dWFsIGRyaXZlciBpbnRlZ3JhdGVzIGludG8gdGhlIGxhcmdlciBrZXJuZWwgbmV0d29yayBzdGFjayBhbmQgd2hhdCBpdCByZWxpZXMgb24uIFRpbWUgdG8gZGl2ZSBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6OTg5NywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEzOjI3OjIwLjMwOTQ5MzY2N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdGNvbmZpZyBNQUM4MDIxMV9IV1NJTVxcbiAgIDI6XFx0XFx0dHJpc3RhdGUgXFxcIlNpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXFxcIlxcbiAgIDM6XFx0XFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxcbiAgIDQ6XFx0XFx0aGVscFxcbiAgIDU6XFx0XFx0ICBUaGlzIGRyaXZlciBpcyBhIGRldmVsb3BlciB0ZXN0aW5nIHRvb2wgdGhhdCBjYW4gYmUgdXNlZCB0byB0ZXN0XFxuICAgNjpcXHRcXHQgIElFRUUgODAyLjExIG5ldHdvcmtpbmcgc3RhY2sgKG1hYzgwMjExKSBmdW5jdGlvbmFsaXR5LiBUaGlzIGlzIG5vdFxcbiAgIDc6XFx0XFx0ICBuZWVkZWQgZm9yIG5vcm1hbCB3aXJlbGVzcyBMQU4gdXNhZ2UgYW5kIGlzIG9ubHkgZm9yIHRlc3RpbmcuIFNlZVxcbiAgIDg6XFx0XFx0ICBEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbWFjODAyMTFfaHdzaW0gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93XFxuICAgOTpcXHRcXHQgIHRvIHVzZSB0aGlzIHRvb2wuXFxuICAxMDpcXHRcXG4gIDExOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXFxuICAxMjpcXHRcXHQgIGNhbGxlZCBtYWM4MDIxMV9od3NpbS4gIElmIHVuc3VyZSwgc2F5IE4uXFxuICAxMzpcXHRcXG4gIDE0OlxcdGNvbmZpZyBWSVJUX1dJRklcXG4gIDE1OlxcdFxcdHRyaXN0YXRlIFxcXCJXaWZpIHdyYXBwZXIgZm9yIGV0aGVybmV0IGRyaXZlcnNcXFwiXFxuICAxNjpcXHRcXHRkZXBlbmRzIG9uIENGRzgwMjExXFxuICAxNzpcXHRcXHRoZWxwXFxuICAxODpcXHRcXHQgIFRoaXMgb3B0aW9uIGFkZHMgc3VwcG9ydCBmb3IgZXRoZXJuZXQgY29ubmVjdGlvbnMgdG8gYXBwZWFyIGFzIGlmIHRoZXlcXG4gIDE5OlxcdFxcdCAgYXJlIHdpZmkgY29ubmVjdGlvbnMgdGhyb3VnaCBhIHNwZWNpYWwgcnRuZXRsaW5rIGRldmljZS5cXG4gIDIwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMzoyNzoyMC4zMDk1NTI4NzdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDgwODA2OTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgV2lGaSBWaXJ0dWFsaXphdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IHNlZSB0aGUga2V5IGRlcGVuZGVuY2llczogYENGRzgwMjExYC4gVGhhdCBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggY29uZmlndXJhdGlvbnMgYFZJUlRfV0lGSWAgYW5kIGBDRkc4MDIxMWAuIFRoZSBwYXRjaCBpdHNlbGYgdGFyZ2V0cyBhIG1lbW9yeSBsZWFrLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGB2aXJ0X3dpZmlfc3RhcnRfeG1pdGAgZnVuY3Rpb24uIEl0J3MgYSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgYnVnIGZpeCwgYW5kIGl0J3MgZGVmaW5pdGVseSByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhhdCBtYWtlcyBpdCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBgdmlydF93aWZpX3N0YXJ0X3htaXRgIGlzIHRoZSBmb2N1cywgb2YgY291cnNlLCBnaXZlbiBpdCdzIHRoZSB0YXJnZXQgZnVuY3Rpb24uIEknbGwgbmVlZCB0byBlbmFibGUgYFZJUlRfV0lGSWAgYW5kIGBDRkc4MDIxMWAgdG8gdHJpZ2dlciB0aGlzLlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIG5vLCBgdmlydF93aWZpX3N0YXJ0X3htaXRgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQgd2FzIG1vZGlmaWVkIGluIHRoaXMgcGF0Y2guXG5cblJpZ2h0LCB0aGlzIGlzIGEgdmVyeSBzaW1wbGUgcGF0Y2gsIGxvb2tpbmcgYXQgdGhlIGNvZGU6XG5cbmBgYGNcbkBAIC00MzQsNiArNDM0LDcgQEAgc3RhdGljIG5ldGRldl90eF90IHZpcnRfd2lmaV9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRwcml2LVx1MDAzZXR4X3BhY2tldHMrKztcbiBcdGlmICghcHJpdi1cdTAwM2Vpc19jb25uZWN0ZWQpIHtcbiBcdFx0cHJpdi1cdTAwM2V0eF9mYWlsZWQrKztcbitcdFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtcbiBcdFx0cmV0dXJuIE5FVF9YTUlUX0RST1A7XG4gXHR9XG5gYGBcblxuSXQncyBhIGNsZWFyIG1lbW9yeSBsZWFrIGZpeDsgYWRkaW5nIGBkZXZfa2ZyZWVfc2tiX2FueShza2IpO2Agd2hlbiB0aGUgdHJhbnNtaXNzaW9uIGZhaWxzLiBPa2F5LCBJJ20gc2F0aXNmaWVkLiBMZXQncyBzZXQgdGhlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjE4LCJPdXRwdXRUb2tlbnMiOjExOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEzOjI3OjI3LjM5MDM2Mjg2N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3OTI2NTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSVJUX1dJRklcIixcbiAgICBcIkNGRzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmlydF93aWZpX3N0YXJ0X3htaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSB2aXJ0X3dpZmlfc3RhcnRfeG1pdCBmdW5jdGlvbiBvZiB0aGUgdmlydF93aWZpIGRyaXZlciBieSBmcmVlaW5nIHRoZSBza2Igd2hlbiB0aGUgZGV2aWNlIGlzIG5vdCBjb25uZWN0ZWQuIFRoZSB2aXJ0X3dpZmkgZHJpdmVyIGlzIGEgdmlydHVhbCB3aXJlbGVzcyBkcml2ZXIgdGhhdCB3cmFwcyBldGhlcm5ldCBkZXZpY2VzLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSVJUX1dJRklcIixcbiAgICBcIkNGRzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmlydF93aWZpX3N0YXJ0X3htaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSB2aXJ0X3dpZmlfc3RhcnRfeG1pdCBmdW5jdGlvbiBvZiB0aGUgdmlydF93aWZpIGRyaXZlciBieSBmcmVlaW5nIHRoZSBza2Igd2hlbiB0aGUgZGV2aWNlIGlzIG5vdCBjb25uZWN0ZWQuIFRoZSB2aXJ0X3dpZmkgZHJpdmVyIGlzIGEgdmlydHVhbCB3aXJlbGVzcyBkcml2ZXIgdGhhdCB3cmFwcyBldGhlcm5ldCBkZXZpY2VzLCB3aGljaCBpcyByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTM6Mjc6MjcuNDY4Mjk2OTA1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzUwNjI4NTU3MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxMzoyNzoyNy40Njg3NTM4ODVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTc1MDYyMzk0MzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGJ5IGFkZGluZyBgZGV2X2tmcmVlX3NrYl9hbnkoc2tiKWAgd2hlbiB0aGUgdmlydHVhbCB3aWZpIGRldmljZSBpcyBub3QgY29ubmVjdGVkIGFuZCBkcm9wcyB0aGUgcGFja2V0LiBUaGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgbG9naWMgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQgb3IgbGVha2VkIHRvIHVzZXIgc3BhY2UuIEFueSBwb3RlbnRpYWwgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2UgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4MjdhYmYwM2EwZmFlZDQwMDUwMzk4N2QwZThhMGY5ODRjZDcxMjc1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgOSAxMzoyNzowMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvdmlydF93aWZpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL3ZpcnRfd2lmaS5jXG5pbmRleCAyMzM1ZTQ1ZGI4Yjg1Li5iNjlhNDY1MGZiYTg1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC92aXJ0X3dpZmkuY1xuQEAgLTQzNCw2ICs0MzQsNyBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgdmlydF93aWZpX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHByaXYtXHUwMDNldHhfcGFja2V0cysrO1xuIFx0aWYgKCFwcml2LVx1MDAzZWlzX2Nvbm5lY3RlZCkge1xuIFx0XHRwcml2LVx1MDAzZXR4X2ZhaWxlZCsrO1xuK1x0XHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuIFx0XHRyZXR1cm4gTkVUX1hNSVRfRFJPUDtcbiBcdH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDEzOjI3OjI3LjQ2ODc1NDkxNVoiLCJTZXEiOjEzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzUwNjIzNjg0NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTWVtb3J5IExlYWsgRml4IGluIE5ldHdvcmsgRHJpdmVyIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYHZpcnRfd2lmaV9zdGFydF94bWl0YCBmdW5jdGlvbi4gVGhleSd2ZSBhZGRlZCBgZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtgIHdoZW4gdGhlIGRldmljZSBpc24ndCBjb25uZWN0ZWQsIHNwZWNpZmljYWxseSB3aGVuIGAhcHJpdi1cdTAwM2Vpc19jb25uZWN0ZWRgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiWWVzLCB0aGF0J3MgYSBnb29kIG1vdmUuXCIgVGhhdCdzIGNsYXNzaWMgbWVtb3J5IGxlYWsgcHJldmVudGlvbi4gSWYgdGhlIHBhY2tldCAoYHNrYmApIGlzIGRyb3BwZWQgYmVjYXVzZSB0aGUgY29ubmVjdGlvbiBpc24ndCB1cCwgaXQgKnNob3VsZCogYmUgZnJlZWQuIE90aGVyd2lzZSwgd2UnZCBoYXZlIGEgbGVhaywgb3IgcG90ZW50aWFsbHkgYSB1c2UtYWZ0ZXItZnJlZSBvciBkb3VibGUtZnJlZSwgYWx0aG91Z2ggaW4gdGhpcyBjYXNlIGl0J3MganVzdCBhIGxlYWsuXG5cbk5vdywgbXkgbW9yZSBleHBlcmllbmNlZCBicmFpbiBraWNrcyBpbiwgYW5kIEkgdGhpbmssIFwiSG9sZCBvbiwgZG9lcyB0aGlzIHBhdGNoIGludHJvZHVjZSBhbnkgcmlza3Mgd2l0aCB1bmluaXRpYWxpemVkIG1lbW9yeT9cIiBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHRoZSBhbmdsZXMuIEJ1dCBubywgd2FpdC4uLiBuby4gVGhpcyBwYXRjaCAqb25seSogZnJlZXMgYSBzdHJ1Y3R1cmUuIEl0J3Mgbm90IHJlYWRpbmcgZnJvbSBvciB3cml0aW5nIHRvIGFueXRoaW5nIHRoYXQgaXNuJ3QgYWxyZWFkeSBpbml0aWFsaXplZC4gS0FTQU4va21lbWxlYWsvZXRjLiBhcmUgdGhlIHRvb2xzIHRoYXQgd2lsbCBoZWxwIHVzIGNhdGNoIG1lbW9yeSBsZWFrcyBvciB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zLiBLTVNBTiBkZWFscyB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGlzIGlzbid0IHRoYXQuXG5cbkp1c3QgdG8gYmUgc3VyZSwgSSBuZWVkIHRvIHRha2UgYSBxdWljayBwZWVrIGF0IHRoZSBwYXRjaCBjb2RlIGl0c2VsZiB0byBlbnN1cmUgaXQgaXMgd2hhdCBJIHRoaW5rIGl0IGlzLlxuXG5gYGBjXG5AQCAtNDM0LDYgKzQzNCw3IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCB2aXJ0X3dpZmlfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0cHJpdi1cdTAwM2V0eF9wYWNrZXRzKys7XG4gXHRpZiAoIXByaXYtXHUwMDNlaXNfY29ubmVjdGVkKSB7XG4gXHRcdHByaXYtXHUwMDNldHhfZmFpbGVkKys7XG4rXHRcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XG4gXHRcdHJldHVybiBORVRfWE1JVF9EUk9QO1xuIFx0fVxuIGBgYFxuXG5ZZXAuIFN0YW5kYXJkIG1lbW9yeSBsZWFrIGZpeC4gTm90aGluZyB0byB3b3JyeSBhYm91dCBpbiB0ZXJtcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gYE5lZWRzS01TQU4gPSBmYWxzZWAuIFdlJ3JlIGdvb2QgdG8gZ28uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODEsIk91dHB1dFRva2VucyI6MTMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjkyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTM6MzA6MjIuNTMxMTI3Mzg5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkzNzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGJ5IGFkZGluZyBgZGV2X2tmcmVlX3NrYl9hbnkoc2tiKWAgd2hlbiB0aGUgdmlydHVhbCB3aWZpIGRldmljZSBpcyBub3QgY29ubmVjdGVkIGFuZCBkcm9wcyB0aGUgcGFja2V0LiBUaGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgbG9naWMgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQgb3IgbGVha2VkIHRvIHVzZXIgc3BhY2UuIEFueSBwb3RlbnRpYWwgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2UgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGJ5IGFkZGluZyBgZGV2X2tmcmVlX3NrYl9hbnkoc2tiKWAgd2hlbiB0aGUgdmlydHVhbCB3aWZpIGRldmljZSBpcyBub3QgY29ubmVjdGVkIGFuZCBkcm9wcyB0aGUgcGFja2V0LiBUaGlzIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgbG9naWMgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHJlYWQgb3IgbGVha2VkIHRvIHVzZXIgc3BhY2UuIEFueSBwb3RlbnRpYWwgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2UgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgZG91YmxlLWZyZWUpIHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowszbdq[1] Phase: Succeeded StartedAt: 2026-08-09 13:30:34 +0000 UTC FinishedAt: 2026-08-09 13:30:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszbdq[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-09 13:30:34 +0000 UTC FinishedAt: 2026-08-09 13:30:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszbdq[2] Phase: Succeeded StartedAt: 2026-08-09 13:30:34 +0000 UTC FinishedAt: 2026-08-09 17:11:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-09 13:30:34 +0000 UTC FinishedAt: 2026-08-09 17:11:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-09 13:30:34 +0000 UTC FinishedAt: 2026-08-09 13:30:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-09 13:30:34 +0000 UTC FinishedAt: 2026-08-09 13:30:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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-workflowszbdq/series-workflowszbdq-convert-artifact-2685424742/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-09 13:30:44 +0000 UTC FinishedAt: 2026-08-09 13:47:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-09 13:30:44 +0000 UTC FinishedAt: 2026-08-09 13:47:09 +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:*033015be-3262-41ee-aaef-e68fbbe1f360,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-workflowszbdq/series-workflowszbdq-convert-artifact-2685424742/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": "fac21fb3-a75c-4ccd-bd58-7e7795298df2", "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-workflowszbdq/series-workflowszbdq-build-action-2014376956/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-09 13:30:44 +0000 UTC FinishedAt: 2026-08-09 13:46:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*033015be-3262-41ee-aaef-e68fbbe1f360,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-workflowszbdq/series-workflowszbdq-convert-artifact-2685424742/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": "fac21fb3-a75c-4ccd-bd58-7e7795298df2", "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-workflowszbdq/series-workflowszbdq-build-action-2014376956/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-09 13:47:09 +0000 UTC FinishedAt: 2026-08-09 13:47:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-09 13:47:09 +0000 UTC FinishedAt: 2026-08-09 13:47:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-09 13:47:09 +0000 UTC FinishedAt: 2026-08-09 13:47:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-09 13:47:09 +0000 UTC FinishedAt: 2026-08-09 13:47:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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-workflowszbdq/series-workflowszbdq-convert-artifact-3261080761/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-09 13:47:20 +0000 UTC FinishedAt: 2026-08-09 13:49:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-09 13:47:20 +0000 UTC FinishedAt: 2026-08-09 13:49:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fac21fb3-a75c-4ccd-bd58-7e7795298df2,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-workflowszbdq/series-workflowszbdq-build-action-2014376956/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-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-09 13:49:42 +0000 UTC FinishedAt: 2026-08-09 13:49:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-09 13:49:42 +0000 UTC FinishedAt: 2026-08-09 13:49:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-09 13:49:42 +0000 UTC FinishedAt: 2026-08-09 14:06:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-09 13:49:42 +0000 UTC FinishedAt: 2026-08-09 14:06:08 +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:*033015be-3262-41ee-aaef-e68fbbe1f360,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-workflowszbdq/series-workflowszbdq-convert-artifact-3261080761/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": "80cfb6f5-fd85-45e4-90ea-d8499db1303a", "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-workflowszbdq/series-workflowszbdq-build-action-2266758549/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-09 13:49:42 +0000 UTC FinishedAt: 2026-08-09 14:05:58 +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:*033015be-3262-41ee-aaef-e68fbbe1f360,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-workflowszbdq/series-workflowszbdq-convert-artifact-3261080761/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": "80cfb6f5-fd85-45e4-90ea-d8499db1303a", "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-workflowszbdq/series-workflowszbdq-build-action-2266758549/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-09 14:06:08 +0000 UTC FinishedAt: 2026-08-09 14:06:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-09 14:06:08 +0000 UTC FinishedAt: 2026-08-09 14:06:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-09 14:06:08 +0000 UTC FinishedAt: 2026-08-09 14:08:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-09 14:06:08 +0000 UTC FinishedAt: 2026-08-09 14:07:54 +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:*80cfb6f5-fd85-45e4-90ea-d8499db1303a,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-workflowszbdq/series-workflowszbdq-build-action-2266758549/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-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-09 14:08:04 +0000 UTC FinishedAt: 2026-08-09 17:11:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-09 14:08:04 +0000 UTC FinishedAt: 2026-08-09 17:11:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"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:*fac21fb3-a75c-4ccd-bd58-7e7795298df2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*80cfb6f5-fd85-45e4-90ea-d8499db1303a,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-workflowszbdq/series-workflowszbdq-build-action-2014376956/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-workflowszbdq/series-workflowszbdq-build-action-2266758549/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-09 14:08:04 +0000 UTC FinishedAt: 2026-08-09 14:08:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-09 14:08:04 +0000 UTC FinishedAt: 2026-08-09 14:08:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"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-workflowszbdq/series-workflowszbdq-convert-artifact-1715040814/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-09 14:08:04 +0000 UTC FinishedAt: 2026-08-09 14:08:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-09 14:08:04 +0000 UTC FinishedAt: 2026-08-09 14:08:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-09 14:08:04 +0000 UTC FinishedAt: 2026-08-09 14:08:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-09 14:08:14 +0000 UTC FinishedAt: 2026-08-09 17:11:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowszbdq[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virt_wifi_start_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ca800a9302764c445de0da0e84d2252400a770ee","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRT_WIFI","CFG80211"],"series_id":"1bde67a5-d209-4cd7-929f-8b75b48a16f0","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-09 14:08:14 +0000 UTC FinishedAt: 2026-08-09 17:11:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fac21fb3-a75c-4ccd-bd58-7e7795298df2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*80cfb6f5-fd85-45e4-90ea-d8499db1303a,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-workflowszbdq/series-workflowszbdq-build-action-2014376956/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-workflowszbdq/series-workflowszbdq-build-action-2266758549/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-workflowszbdq/series-workflowszbdq-convert-artifact-1715040814/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,}