Name: series-workflowkq88r Phase: Succeeded StartedAt: 2026-07-10 06:11:02 +0000 UTC FinishedAt: 2026-07-10 10:50:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkq88r[0] Phase: Succeeded StartedAt: 2026-07-10 06:11:02 +0000 UTC FinishedAt: 2026-07-10 06:35:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkq88r[0].run-triage Phase: Succeeded StartedAt: 2026-07-10 06:11:02 +0000 UTC FinishedAt: 2026-07-10 06:35:07 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "fe3e786ef4eb6e47d2901f568a27bd920477bbe9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_IPGRE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "fe3e786ef4eb6e47d2901f568a27bd920477bbe9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_IPGRE" ], "series_id": "c9d84659-b70f-48d2-b3d1-3f53be705a7c" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__gre_tunnel_init", "ipgre_tunnel_init", "ipgre_newlink" ], "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+CgkJCTx0ZD4yMDI2LzA3LzEwIDA2OjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fZ3JlX3R1bm5lbF9pbml0JiMzNDssCiAgICAmIzM0O2lwZ3JlX3R1bm5lbF9pbml0JiMzNDssCiAgICAmIzM0O2lwZ3JlX25ld2xpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW92ZXMgdGhlIGFzc2lnbm1lbnQgb2YgYGRldi1cdTAwM2VsbHR4ID0gdHJ1ZWAgYmVmb3JlIGVhcmx5IHJldHVybnMgaW4gYF9fZ3JlX3R1bm5lbF9pbml0KClgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBlbnN1cmVzIGxvY2tsZXNzIFRYIGlzIGVuYWJsZWQgZm9yIEdSRSB0dW5uZWxzIGV2ZW4gd2hlbiBzZXF1ZW5jZSBudW1iZXJzIG9yIGNoZWNrc3VtcyB3aXRoIGVuY2Fwc3VsYXRpb24gYXJlIHVzZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDY6MzM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4Nzc0ODQ2NTU3ZmMzYjVhMDVjZDM0MDQ4OTEwMDkxNjA0OTZjYzFmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTAgMDY6MzM6NDMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfZ3JlLmMgYi9uZXQvaXB2NC9pcF9ncmUuY1xuaW5kZXggM2VmZGZiNGZmYTIxMTIuLjBiYTFlOTRlOTAxMmM2IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaXBfZ3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2lwX2dyZS5jXG5AQCAtMTAxOCw2ICYjNDM7MTAxOCw4IEBAIHN0YXRpYyB2b2lkIF9fZ3JlX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRkZXYtXHUwMDNlZmVhdHVyZXNcdFx0fD0gR1JFX0ZFQVRVUkVTO1xuIFx0ZGV2LVx1MDAzZWh3X2ZlYXR1cmVzXHR8PSBHUkVfRkVBVFVSRVM7XG4gXG4mIzQzO1x0ZGV2LVx1MDAzZWxsdHggPSB0cnVlO1xuJiM0MztcbiBcdC8qIFRDUCBvZmZsb2FkIHdpdGggR1JFIFNFUSBpcyBub3Qgc3VwcG9ydGVkLCBub3IgY2FuIHdlIHN1cHBvcnQgMlxuIFx0ICogbGV2ZWxzIG9mIG91dGVyIGhlYWRlcnMgcmVxdWlyaW5nIGFuIHVwZGF0ZS5cbiBcdCAqL1xuQEAgLTEwMjksOCAmIzQzOzEwMzEsNiBAQCBzdGF0aWMgdm9pZCBfX2dyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIFx0ZGV2LVx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFO1xuIFx0ZGV2LVx1MDAzZWh3X2ZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFO1xuLVxuLVx0ZGV2LVx1MDAzZWxsdHggPSB0cnVlO1xuIH1cbiBcbiBzdGF0aWMgaW50IGlwZ3JlX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDY6MzM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0lQR1JFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19ncmVfdHVubmVsX2luaXQmIzM0OywKICAgICYjMzQ7aXBncmVfdHVubmVsX2luaXQmIzM0OywKICAgICYjMzQ7aXBncmVfbmV3bGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb3ZlcyB0aGUgYXNzaWdubWVudCBvZiBgZGV2LVx1MDAzZWxsdHggPSB0cnVlYCBiZWZvcmUgZWFybHkgcmV0dXJucyBpbiBgX19ncmVfdHVubmVsX2luaXQoKWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGVuc3VyZXMgbG9ja2xlc3MgVFggaXMgZW5hYmxlZCBmb3IgR1JFIHR1bm5lbHMgZXZlbiB3aGVuIHNlcXVlbmNlIG51bWJlcnMgb3IgY2hlY2tzdW1zIHdpdGggZW5jYXBzdWxhdGlvbiBhcmUgdXNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODc3NDg0NjU1N2ZjM2I1YTA1Y2QzNDA0ODkxMDA5MTYwNDk2Y2MxZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDEwIDA2OjMzOjQzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfZ3JlLmMgYi9uZXQvaXB2NC9pcF9ncmUuYwppbmRleCAzZWZkZmI0ZmZhMjExMi4uMGJhMWU5NGU5MDEyYzYgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2lwX2dyZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2lwX2dyZS5jCkBAIC0xMDE4LDYgJiM0MzsxMDE4LDggQEAgc3RhdGljIHZvaWQgX19ncmVfdHVubmVsX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAlkZXYtJmd0O2ZlYXR1cmVzCQl8PSBHUkVfRkVBVFVSRVM7CiAJZGV2LSZndDtod19mZWF0dXJlcwl8PSBHUkVfRkVBVFVSRVM7CiAKJiM0MzsJZGV2LSZndDtsbHR4ID0gdHJ1ZTsKJiM0MzsKIAkvKiBUQ1Agb2ZmbG9hZCB3aXRoIEdSRSBTRVEgaXMgbm90IHN1cHBvcnRlZCwgbm9yIGNhbiB3ZSBzdXBwb3J0IDIKIAkgKiBsZXZlbHMgb2Ygb3V0ZXIgaGVhZGVycyByZXF1aXJpbmcgYW4gdXBkYXRlLgogCSAqLwpAQCAtMTAyOSw4ICYjNDM7MTAzMSw2IEBAIHN0YXRpYyB2b2lkIF9fZ3JlX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAKIAlkZXYtJmd0O2ZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFOwogCWRldi0mZ3Q7aHdfZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7Ci0KLQlkZXYtJmd0O2xsdHggPSB0cnVlOwogfQogCiBzdGF0aWMgaW50IGlwZ3JlX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA2OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MjgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA4MDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBHUkUgVHVubmVsIEluaXRpYWxpemF0aW9uIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9pcHY0L2lwX2dyZS5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgX19ncmVfdHVubmVsX2luaXQoKWAgZnVuY3Rpb24uIFRoZSBjb3JlIGNoYW5nZSBpcyBtb3ZpbmcgYGRldi0mZ3Q7bGx0eCA9IHRydWU7YCBhIGZldyBsaW5lcyB1cC4gTGV0IG1lIGRpZyBpbnRvIHRoaXMuIEluaXRpYWxseSwgSSB3YXMgdGhpbmtpbmcgaXQmIzM5O3MgYWJvdXQgc2V0dGluZyB0aGUgbGluayBsYXllciB0cmFuc21pdCBmbGFnLCBidXQgbGV0IG1lIGNoZWNrIHRoZSBjb250ZXh0LgoKTG9va2luZyBhdCB0aGUgY29kZSwgaXQmIzM5O3Mgc2V0dGluZyB1cCB0aGUgR1JFIHR1bm5lbCB3aXRoIGNhbGN1bGF0aW9ucyBvZiBoZWFkZXIgbGVuZ3RocyBhbmQgTVRVLiBUaGVuLCBpdCYjMzk7cyBzZXR0aW5nIHNvbWUgZmVhdHVyZXMgYW5kIGhhcmR3YXJlIGZlYXR1cmVzLiBUaGUgb3JpZ2luYWwgcGxhY2VtZW50IG9mIGBkZXYtJmd0O2xsdHggPSB0cnVlO2Agd2FzIGF0IHRoZSAqZW5kKiBvZiB0aGUgZnVuY3Rpb24uIFRoZW4gdGhlcmUmIzM5O3MgYW4gYGlmYCBibG9jayB0aGF0IGxvb2tzIGF0IGBUVU5ORUxfU0VRYCBmbGFncyBhbmQsIGluc2lkZSB0aGF0LCBjb25kaXRpb25hbCBsb2dpYyByZWxhdGVkIHRvIGBUVU5ORUxfQ1NVTWAuIEhtbSwgaXQgaW5jbHVkZXMgdGhpcyBsaW5lOgoKYGBgYwoJCWlmICh0dW5uZWwtJmd0O3Bhcm1zLm9fZmxhZ3MgJmFtcDsgVFVOTkVMX0NTVU0pCgkJCWRldi0mZ3Q7ZmVhdHVyZXMgJmFtcDs9IH5ORVRJRl9GX0xMVFg7CmBgYAoKUmlnaHQsIHRoYXQmIzM5O3MgY2xlYXJpbmcgdGhlIGBORVRJRl9GX0xMVFhgIGZsYWcgZnJvbSB0aGUgYGRldi0mZ3Q7ZmVhdHVyZXNgIGZpZWxkLiBCdXQgdGhlbiBJIHJlbWVtYmVyIGBkZXYtJmd0O2xsdHhgIGlzIGEgYm9vbGVhbiBmbGFnLiBIYW5nIG9uLCB0aGUgYGlmYCBibG9jayAqb25seSogbW9kaWZpZXMgYGRldi0mZ3Q7ZmVhdHVyZXNgLCBub3QgYGRldi0mZ3Q7bGx0eGAgZGlyZWN0bHkuIFNvIGBkZXYtJmd0O2xsdHhgIGFuZCBgTkVUSUZfRl9MTFRYYCBhcmUgYWN0dWFsbHkgc2VwYXJhdGUgY29uY2VybnMuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgdGhlIG1vdmUgbWlnaHQgYmUgdG8gZW5zdXJlIGBkZXYtJmd0O2xsdHhgIGlzIGRlZmluaXRlbHkgc2V0ICpiZWZvcmUqIHRoZSBjb25kaXRpb25hbCBjaGVjay4gSG93ZXZlciwgdGhlIGNvbmRpdGlvbmFsIHN0YXRlbWVudCBpcyBqdXN0IGFib3V0IG1hbmlwdWxhdGluZyB0aGUgZmVhdHVyZSBmbGFnLiBQZXJoYXBzIHRoZSBpbnRlbnQgd2FzIHRvIGRpc2FibGUgdGhlIExMVFggZmVhdHVyZT8gTm8sIHRoZSBib29sZWFuIGFuZCB0aGUgZmVhdHVyZSBmbGFnIGFyZSBjb21wbGV0ZWx5IHNlcGFyYXRlLiBBbmQgdGhlIHBhdGNoIGlzIG9ubHkgbW92aW5nIHRoZSBhc3NpZ25tZW50IG9mIHRoZSBib29sZWFuIHRvIGJlIGVhcmxpZXIgaW4gdGhlIGZ1bmN0aW9uLCB3aGlsZSBsZWF2aW5nIHRoZSBjb25kaXRpb25hbCBjaGVjayBhbmQgZmVhdHVyZSBtb2RpZmljYXRpb24gaW50YWN0LgoKU28gdGhlIG1haW4gdGhpbmcgdG8gdW5kZXJzdGFuZCBpcyB0aGF0IHRoZSBwYXRjaCBzZWVtcyB0byBiZSBtb3ZpbmcgdGhlIHNldHRpbmcgb2YgdGhlIGJvb2xlYW4gYGRldi0mZ3Q7bGx0eGAgdG8gYW4gZWFybGllciBwb3NpdGlvbiwgYnV0IHRoZSBgZGV2LSZndDtmZWF0dXJlc2AgbWFuaXB1bGF0aW9uIHJlbWFpbnMgdGhlIHNhbWUuIEkgc3VwcG9zZSBgTkVUSUZfRl9MTFRYYCBjb3VsZCBiZSBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGBkZXYtJmd0O2xsdHhgLgpMZXQgbWUgbG9vayBhdCBgbmV0L2lwdjQvaXBfZ3JlLmNgIG9uY2UgbW9yZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNjozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L2lwX2dyZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTAwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMDAwOlx0c3RhdGljIHZvaWQgaXBncmVfdHVubmVsX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4xMDAxOlx0e1xuMTAwMjpcdFx0ZGV2LVx1MDAzZW5ldGRldl9vcHNcdFx0PSBcdTAwMjZpcGdyZV9uZXRkZXZfb3BzO1xuMTAwMzpcdFx0ZGV2LVx1MDAzZXR5cGVcdFx0PSBBUlBIUkRfSVBHUkU7XG4xMDA0Olx0XHRpcF90dW5uZWxfc2V0dXAoZGV2LCBpcGdyZV9uZXRfaWQpO1xuMTAwNTpcdH1cbjEwMDY6XHRcbjEwMDc6XHRzdGF0aWMgdm9pZCBfX2dyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuMTAwODpcdHtcbjEwMDk6XHRcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbDtcbjEwMTA6XHRcbjEwMTE6XHRcdHR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XG4xMDEyOlx0XHR0dW5uZWwtXHUwMDNldHVuX2hsZW4gPSBncmVfY2FsY19obGVuKHR1bm5lbC1cdTAwM2VwYXJtcy5vX2ZsYWdzKTtcbjEwMTM6XHRcdHR1bm5lbC1cdTAwM2VwYXJtcy5pcGgucHJvdG9jb2wgPSBJUFBST1RPX0dSRTtcbjEwMTQ6XHRcbjEwMTU6XHRcdHR1bm5lbC1cdTAwM2VobGVuID0gdHVubmVsLVx1MDAzZXR1bl9obGVuICYjNDM7IHR1bm5lbC1cdTAwM2VlbmNhcF9obGVuO1xuMTAxNjpcdFx0ZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbSA9IHR1bm5lbC1cdTAwM2VobGVuICYjNDM7IHNpemVvZih0dW5uZWwtXHUwMDNlcGFybXMuaXBoKTtcbjEwMTc6XHRcbjEwMTg6XHRcdGRldi1cdTAwM2VmZWF0dXJlc1x0XHR8PSBHUkVfRkVBVFVSRVM7XG4xMDE5Olx0XHRkZXYtXHUwMDNlaHdfZmVhdHVyZXNcdHw9IEdSRV9GRUFUVVJFUztcbjEwMjA6XHRcbjEwMjE6XHRcdGRldi1cdTAwM2VsbHR4ID0gdHJ1ZTtcbjEwMjI6XHRcbjEwMjM6XHRcdC8qIFRDUCBvZmZsb2FkIHdpdGggR1JFIFNFUSBpcyBub3Qgc3VwcG9ydGVkLCBub3IgY2FuIHdlIHN1cHBvcnQgMlxuMTAyNDpcdFx0ICogbGV2ZWxzIG9mIG91dGVyIGhlYWRlcnMgcmVxdWlyaW5nIGFuIHVwZGF0ZS5cbjEwMjU6XHRcdCAqL1xuMTAyNjpcdFx0aWYgKHRlc3RfYml0KElQX1RVTk5FTF9TRVFfQklULCB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncykpXG4xMDI3Olx0XHRcdHJldHVybjtcbjEwMjg6XHRcdGlmICh0ZXN0X2JpdChJUF9UVU5ORUxfQ1NVTV9CSVQsIHR1bm5lbC1cdTAwM2VwYXJtcy5vX2ZsYWdzKSBcdTAwMjZcdTAwMjZcbjEwMjk6XHRcdCAgICB0dW5uZWwtXHUwMDNlZW5jYXAudHlwZSAhPSBUVU5ORUxfRU5DQVBfTk9ORSlcbjEwMzA6XHRcdFx0cmV0dXJuO1xuMTAzMTpcdFxuMTAzMjpcdFx0ZGV2LVx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFO1xuMTAzMzpcdFx0ZGV2LVx1MDAzZWh3X2ZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFO1xuMTAzNDpcdH1cbjEwMzU6XHRcbjEwMzY6XHRzdGF0aWMgaW50IGlwZ3JlX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4xMDM3Olx0e1xuMTAzODpcdFx0c3RydWN0IGlwX3R1bm5lbCAqdHVubmVsID0gbmV0ZGV2X3ByaXYoZGV2KTtcbjEwMzk6XHRcdHN0cnVjdCBpcGhkciAqaXBoID0gXHUwMDI2dHVubmVsLVx1MDAzZXBhcm1zLmlwaDtcbjEwNDA6XHRcbjEwNDE6XHRcdF9fZ3JlX3R1bm5lbF9pbml0KGRldik7XG4xMDQyOlx0XG4xMDQzOlx0XHRfX2Rldl9hZGRyX3NldChkZXYsIFx1MDAyNmlwaC1cdTAwM2VzYWRkciwgNCk7XG4xMDQ0Olx0XHRtZW1jcHkoZGV2LVx1MDAzZWJyb2FkY2FzdCwgXHUwMDI2aXBoLVx1MDAzZWRhZGRyLCA0KTtcbjEwNDU6XHRcbjEwNDY6XHRcdGRldi1cdTAwM2VmbGFnc1x0XHQ9IElGRl9OT0FSUDtcbjEwNDc6XHRcdG5ldGlmX2tlZXBfZHN0KGRldik7XG4xMDQ4Olx0XHRkZXYtXHUwMDNlYWRkcl9sZW5cdFx0PSA0O1xuMTA0OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA2OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNjYKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA0MjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBHUkUgVHVubmVsIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIGBfX2dyZV90dW5uZWxfaW5pdGAgZnVuY3Rpb24sIGFuZCBJJiMzOTt2ZSBzcG90dGVkIHNvbWV0aGluZy4gVGhvc2UgYGlmYCBibG9ja3Mgd2l0aCBgcmV0dXJuO2AgYXJlIHRoZSBrZXkhIEl0IHR1cm5zIG91dCB0aGF0IGJlY2F1c2Ugb2YgdGhvc2UgZWFybHkgcmV0dXJucywgdGhlIGNydWNpYWwgbGluZSBgZGV2LSZndDtsbHR4ID0gdHJ1ZTtgIGF0IHRoZSBlbmQgd2FzIGJlaW5nIHNraXBwZWQgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zLiBTcGVjaWZpY2FsbHksIGlmIHRoZSB0dW5uZWwgd2FzIGNvbmZpZ3VyZWQgd2l0aCBlaXRoZXIgU0VRIG9yIENTVU0mIzQzO0VOQ0FQIGZsYWdzLCBgZGV2LSZndDtsbHR4YCB3YXNuJiMzOTt0IGJlaW5nIHNldC4gTm93IHRoYXQgSSYjMzk7dmUgbW92ZWQgdGhhdCBsaW5lIHVwLCBpdCB3aWxsIGV4ZWN1dGUgdW5jb25kaXRpb25hbGx5LgoKVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGtlcm5lbCYjMzk7cyBuZXR3b3JraW5nIHN0YWNrLCBhZmZlY3RpbmcgSVB2NCBHUkUgdHVubmVscy4gSSByZW1lbWJlciBgZGV2LSZndDtsbHR4YCBjb250cm9scyBsb2NrbGVzcyB0cmFuc21pc3Npb24sIHNvIGlmIGl0JiMzOTtzIHNldCB0byBgdHJ1ZWAsIHRoZSBxZGlzYyBsb2NrIGlzICpub3QqIHRha2VuIGR1cmluZyB0cmFuc21pc3Npb24uCgpTaW5jZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGl0IHNjcmVhbXMgJiMzNDtmdXp6IG1lISYjMzQ7IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZnVuY3Rpb25zIGFyZSByZWxldmFudCB0byBmdXp6LgoKYF9fZ3JlX3R1bm5lbF9pbml0YCBpcyBhbiBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiwgc28gdGhhdCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgc2hvdWxkIHByb2JhYmx5IGFsc28gbG9vayBhdCByZWxhdGVkIGZ1bmN0aW9ucyBsaWtlIGBpcGdyZV90dW5uZWxfaW5pdGAsIGFuZCBgaXBncmVfbmV3bGlua2AgYXMgdGhleSB3b3VsZCBhbHNvIGluaXRpYWxpemUgdHVubmVscy4gVGhlIHRyYW5zbWlzc2lvbiBmdW5jdGlvbiwgYGlwZ3JlX3htaXRgLCBtaWdodCBiZSByZWxhdGVkIGFzIHdlbGwsIGFzIHRoYXQmIzM5O3MgdGhlIHBhdGggdGhhdCB3b3VsZCB1c2UgYGRldi0mZ3Q7bGx0eGAsIGJ1dCBzaW5jZSB0aGlzIGlzIGEgaG90IHBhdGgsIEkgbmVlZCB0byBzdGF5IGF3YXkgZnJvbSBpdC4KClNvLCBJIHdpbGwgZm9jdXMgb24gYGlwZ3JlX25ld2xpbmtgLCBgaXBncmVfdHVubmVsX2luaXRgLCBhbmQgYF9fZ3JlX3R1bm5lbF9pbml0YC4gSSB0aGluayB0aGVzZSB3b3VsZCBiZSB0aGUgbW9zdCBlZmZlY3RpdmUgZnVuY3Rpb25zIHRvIGZ1enohCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDY6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBncmVfbmV3bGluayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9pcF9ncmUuYz0xMzkzPXN0YXRpYyBpbnRcbm5ldC9pcHY0L2lwX2dyZS5jOjEzOTQ6aXBncmVfbmV3bGlua19lbmNhcF9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICpkYXRhW10pXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzk1LXtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDA4LVxubmV0L2lwdjQvaXBfZ3JlLmM6MTQwOTpzdGF0aWMgaW50IGlwZ3JlX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9pcHY0L2lwX2dyZS5jLTE0MTAtXHRcdFx0IHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTQxOC1cbm5ldC9pcHY0L2lwX2dyZS5jOjE0MTk6XHRlcnIgPSBpcGdyZV9uZXdsaW5rX2VuY2FwX3NldHVwKGRldiwgZGF0YSk7XG5uZXQvaXB2NC9pcF9ncmUuYy0xNDIwLVx0aWYgKGVycilcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xNDMwPXN0YXRpYyBpbnQgZXJzcGFuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDM5LVxubmV0L2lwdjQvaXBfZ3JlLmM6MTQ0MDpcdGVyciA9IGlwZ3JlX25ld2xpbmtfZW5jYXBfc2V0dXAoZGV2LCBkYXRhKTtcbm5ldC9pcHY0L2lwX2dyZS5jLTE0NDEtXHRpZiAoZXJyKVxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTE0NTE9c3RhdGljIGludCBpcGdyZV9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTQ2Mi1cbm5ldC9pcHY0L2lwX2dyZS5jOjE0NjM6XHRlcnIgPSBpcGdyZV9uZXdsaW5rX2VuY2FwX3NldHVwKGRldiwgZGF0YSk7XG5uZXQvaXB2NC9pcF9ncmUuYy0xNDY0LVx0aWYgKGVycilcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xNDgzPXN0YXRpYyBpbnQgZXJzcGFuX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDk0LVxubmV0L2lwdjQvaXBfZ3JlLmM6MTQ5NTpcdGVyciA9IGlwZ3JlX25ld2xpbmtfZW5jYXBfc2V0dXAoZGV2LCBkYXRhKTtcbm5ldC9pcHY0L2lwX2dyZS5jLTE0OTYtXHRpZiAoZXJyKVxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTE2NzQ9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIGlwZ3JlX2xpbmtfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTY4MC1cdC52YWxpZGF0ZVx0PSBpcGdyZV90dW5uZWxfdmFsaWRhdGUsXG5uZXQvaXB2NC9pcF9ncmUuYzoxNjgxOlx0Lm5ld2xpbmtcdD0gaXBncmVfbmV3bGluayxcbm5ldC9pcHY0L2lwX2dyZS5jLTE2ODItXHQuY2hhbmdlbGlua1x0PSBpcGdyZV9jaGFuZ2VsaW5rLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTE2ODk9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIGlwZ3JlX3RhcF9vcHMgX19yZWFkX21vc3RseSA9IHtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjk1LVx0LnZhbGlkYXRlXHQ9IGlwZ3JlX3RhcF92YWxpZGF0ZSxcbm5ldC9pcHY0L2lwX2dyZS5jOjE2OTY6XHQubmV3bGlua1x0PSBpcGdyZV9uZXdsaW5rLFxubmV0L2lwdjQvaXBfZ3JlLmMtMTY5Ny1cdC5jaGFuZ2VsaW5rXHQ9IGlwZ3JlX2NoYW5nZWxpbmssXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmM9MTcxOT1zdHJ1Y3QgbmV0X2RldmljZSAqZ3JldGFwX2ZiX2Rldl9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBjaGFyICpuYW1lLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE3NDAtXG5uZXQvaXB2NC9pcF9ncmUuYzoxNzQxOlx0ZXJyID0gaXBncmVfbmV3bGluayhkZXYsIFx1MDAyNnBhcmFtcywgTlVMTCk7XG5uZXQvaXB2NC9pcF9ncmUuYy0xNzQyLVx0aWYgKGVyciBcdTAwM2MgMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA2OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MjkKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqS2NvbmZpZyBEaXZlIGZvciBpcF9ncmUuYyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIHJlbGF0ZWQgdG8gYGlwX2dyZS5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgbW9kdWxlIGlzIGNvbnRyb2xsZWQgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGl0IGhhcy4gV2hhdCBhcmUgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBnb3Zlcm4gaXRzIGluY2x1c2lvbj8gQXJlIHRoZXJlIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgbmV0d29ya2luZyBmZWF0dXJlcyBvciBkcml2ZXJzIHRoYXQgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlcyBvciBrZXJuZWwgdmVyc2lvbnMgd2hlcmUgaXQmIzM5O3MgY29uZGl0aW9uYWxseSBlbmFibGVkPyBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgYmVoYXZpb3IgYW5kIGhvdyB0byBwcm9wZXJseSBjb25maWd1cmUgaXQgZm9yIGEgc3BlY2lmaWMgdGFyZ2V0LiBJIG5lZWQgdG8gdHJhY2UgdGhyb3VnaCB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zIHRvIGdldCB0aGUgd2hvbGUgcGljdHVyZS4gTGV0JiMzOTtzIHNlZSBpZiB0aGlzIHJldmVhbHMgYW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBteSB0YXJnZXQgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNjozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF9ncmVcXC5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L01ha2VmaWxlPTI5PW9iai0kKENPTkZJR19ORVRfSVBHUkVfREVNVVgpICYjNDM7PSBncmUub1xubmV0L2lwdjQvTWFrZWZpbGU6MzA6b2JqLSQoQ09ORklHX05FVF9JUEdSRSkgJiM0Mzs9IGlwX2dyZS5vXG5uZXQvaXB2NC9NYWtlZmlsZS0zMS11ZHBfdHVubmVsLXkgOj0gdWRwX3R1bm5lbF9jb3JlLm8gdWRwX3R1bm5lbF9uaWMub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA2OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxMTkKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBgQ09ORklHX05FVF9JUEdSRWAuIFRoYXQmIzM5O3Mgb3VyIHN0YXJ0aW5nIHBvaW50LiBJIGtub3cgdGhhdCBjb25maWcgcHJldHR5IHdlbGwsIHNvIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgcmVsYXRlZCBvciBkZXBlbmRlbnQgY29uZmlndXJhdGlvbnMgdGhhdCB3ZSBzaG91bGQgYWxzbyBiZSBhd2FyZSBvZi4gV2hhdCBvdGhlciBuZXR3b3JrIHNldHRpbmdzIG1pZ2h0IGJlIGluIHBsYXkgaGVyZT8gSXQmIzM5O3MgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIGJyb2FkZXIgY29udGV4dCBhbmQgcG90ZW50aWFsIGludGVyYWN0aW9ucy4gV2UgZG9uJiMzOTt0IHdhbnQgdG8gbWFrZSBhbiBpc29sYXRlZCBjaGFuZ2Ugd2l0aG91dCBjb25zaWRlcmluZyBpdHMgcmlwcGxlIGVmZmVjdHMuIFdlIG5lZWQgdG8gYmUgZXhoYXVzdGl2ZS4gVGltZSB0byBkaXZlIGludG8gdGhlIG90aGVyIHJlbGF0ZWQgY29uZmlncywgbGlrZSB0aGUgb25lcyBkZWFsaW5nIHdpdGggdHVubmVscyBvciBlbmNhcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDY6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9JUEdSRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnPTE2Mj1jb25maWcgTkVUX0lQSVBcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTE3OS1cbm5ldC9pcHY0L0tjb25maWc6MTgwOmNvbmZpZyBORVRfSVBHUkVfREVNVVhcbm5ldC9pcHY0L0tjb25maWctMTgxLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEdSRSBkZW11bHRpcGxleGVyXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZz0xODY9Y29uZmlnIE5FVF9JUF9UVU5ORUxcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTE5MS1cbm5ldC9pcHY0L0tjb25maWc6MTkyOmNvbmZpZyBORVRfSVBHUkVcbm5ldC9pcHY0L0tjb25maWctMTkzLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEdSRSB0dW5uZWxzIG92ZXIgSVBcJiMzNDtcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTIwNi1cbm5ldC9pcHY0L0tjb25maWc6MjA3OmNvbmZpZyBORVRfSVBHUkVfQlJPQURDQVNUXG5uZXQvaXB2NC9LY29uZmlnLTIwOC1cdGJvb2wgXCYjMzQ7SVA6IGJyb2FkY2FzdCBHUkUgb3ZlciBJUFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNjozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTM3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgR1JFIFR1bm5lbCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIHNldHRpbmcgYXQgcGxheSBoZXJlIGlzIGBORVRfSVBHUkVgLiBNeSBpbml0aWFsIGZvY3VzIG5lZWRzIHRvIGJlIG9uIHRoZXNlIHRocmVlIGZ1bmN0aW9uczogYF9fZ3JlX3R1bm5lbF9pbml0YCwgYGlwZ3JlX3R1bm5lbF9pbml0YCwgYW5kIGBpcGdyZV9uZXdsaW5rYC4gSSBrbm93IHRoZXNlIGFyZSB3aGVyZSB0aGUgdHVubmVsIGluaXRpYWxpemF0aW9uIGxvZ2ljIGxpdmVzLCBzbyB0aGV5JiMzOTtyZSB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludHMuCgpXYWl0LCBob2xkIG9uIGEgc2Vjb25kLi4uIHRoZSBjb3JlIGlzc3VlIGlzIGBkZXYtJmd0O2xsdHhgIG5vdCBiZWluZyBzZXQgdW5kZXIgc3BlY2lmaWMgY29uZGl0aW9uczogd2hlbiBgSVBfVFVOTkVMX1NFUV9CSVRgIG9yIGBJUF9UVU5ORUxfQ1NVTV9CSVRgIGFyZSBzZXQgKmFuZCogZW5jYXBzdWxhdGlvbiBpcyBhY3RpdmUuIFRoYXQgbWFrZXMgdGhpcyBhIHByZXR0eSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIGl0IGRlZmluaXRlbHkgaW1wYWN0cyBsb2NrbGVzcyB0cmFuc21pdC4gVGhlIHBvdGVudGlhbCBmb3IgYSBjb25jdXJyZW5jeSBpc3N1ZSBpcyBkZWZpbml0ZWx5IHRoZXJlLgoKSSYjMzk7bSB0aGlua2luZyB0aGlzIGlzIHdvcnRoIGZ1enppbmcsIHRoYXQmIzM5O3MgdGhlIG5leHQgbG9naWNhbCBzdGVwLiBXZSBuZWVkIHRvIGV4cG9zZSB0aGlzIGFuZCBzZWUgaG93IGl0IGhvbGRzIHVwLgoKTGV0IG1lIGp1c3QgZG8gYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgaW4gcGxheSBoZXJlLiBgTkVUX0lQR1JFYCBkZXBlbmRzIG9uIGBORVRfSVBHUkVfREVNVVhgPyBCZXR0ZXIgY2hlY2sgdGhhdCBpbiB0aGUgYG5ldC9pcHY0L0tjb25maWdgIGZpbGUgYW5kIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA2OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTgwOlx0Y29uZmlnIE5FVF9JUEdSRV9ERU1VWFxuIDE4MTpcdFx0dHJpc3RhdGUgXCYjMzQ7SVA6IEdSRSBkZW11bHRpcGxleGVyXCYjMzQ7XG4gMTgyOlx0XHRoZWxwXG4gMTgzOlx0XHQgIFRoaXMgaXMgaGVscGVyIG1vZHVsZSB0byBkZW11bHRpcGxleCBHUkUgcGFja2V0cyBvbiBHUkUgdmVyc2lvbiBmaWVsZCBjcml0ZXJpYS5cbiAxODQ6XHRcdCAgUmVxdWlyZWQgYnkgaXBfZ3JlIGFuZCBwcHRwIG1vZHVsZXMuXG4gMTg1Olx0XG4gMTg2Olx0Y29uZmlnIE5FVF9JUF9UVU5ORUxcbiAxODc6XHRcdHRyaXN0YXRlXG4gMTg4Olx0XHRzZWxlY3QgRFNUX0NBQ0hFXG4gMTg5Olx0XHRzZWxlY3QgR1JPX0NFTExTXG4gMTkwOlx0XHRkZWZhdWx0IG5cbiAxOTE6XHRcbiAxOTI6XHRjb25maWcgTkVUX0lQR1JFXG4gMTkzOlx0XHR0cmlzdGF0ZSBcJiMzNDtJUDogR1JFIHR1bm5lbHMgb3ZlciBJUFwmIzM0O1xuIDE5NDpcdFx0ZGVwZW5kcyBvbiBORVRfSVBHUkVfREVNVVhcbiAxOTU6XHRcdHNlbGVjdCBORVRfSVBfVFVOTkVMXG4gMTk2Olx0XHRoZWxwXG4gMTk3Olx0XHQgIFR1bm5lbGluZyBtZWFucyBlbmNhcHN1bGF0aW5nIGRhdGEgb2Ygb25lIHByb3RvY29sIHR5cGUgd2l0aGluXG4gMTk4Olx0XHQgIGFub3RoZXIgcHJvdG9jb2wgYW5kIHNlbmRpbmcgaXQgb3ZlciBhIGNoYW5uZWwgdGhhdCB1bmRlcnN0YW5kcyB0aGVcbiAxOTk6XHRcdCAgZW5jYXBzdWxhdGluZyBwcm90b2NvbC4gVGhpcyBwYXJ0aWN1bGFyIHR1bm5lbGluZyBkcml2ZXIgaW1wbGVtZW50c1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNjozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjgxCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKk1ha2luZyBTdXJlIEdSRSBUdW5uZWxzIGFyZSBQcm9wZXJseSBJbml0aWFsaXplZCoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBORVRfSVBHUkVgIHJlcXVpcmVzIGBORVRfSVBHUkVfREVNVVhgLiBSaWdodCwgbWFrZXMgc2Vuc2UsIHNvIEkmIzM5O2xsIGJlIHN1cmUgdG8gaW5jbHVkZSBgTkVUX0lQR1JFYCBpbiBteSBgRW5hYmxlQ29uZmlnc2AuIEdvdHRhIGJlIGNhcmVmdWwgYWJvdXQgdGhlc2UgZGVwZW5kZW5jaWVzLiBOb3csIGxldCBtZSBqdXN0IGdvIGJhY2sgYW5kIGRvdWJsZS1jaGVjayBgX19ncmVfdHVubmVsX2luaXRgLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIGNyaXRpY2FsIGluIHRoZSB0dW5uZWwgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gSXTigJlzIGFsd2F5cyB3b3J0aCBhIHNlY29uZCBsb29rLCBlc3BlY2lhbGx5IHdpdGggc29tZXRoaW5nIGxpa2UgR1JFIHRoYXQgY2FuIGJlIGNvbXBsZXguIEkgbmVlZCB0byBlbnN1cmUgZXZlcnl0aGluZyBpcyBzZXQgdXAgY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNjozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L2lwX2dyZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTAwNywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMDA3Olx0c3RhdGljIHZvaWQgX19ncmVfdHVubmVsX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbjEwMDg6XHR7XG4xMDA5Olx0XHRzdHJ1Y3QgaXBfdHVubmVsICp0dW5uZWw7XG4xMDEwOlx0XG4xMDExOlx0XHR0dW5uZWwgPSBuZXRkZXZfcHJpdihkZXYpO1xuMTAxMjpcdFx0dHVubmVsLVx1MDAzZXR1bl9obGVuID0gZ3JlX2NhbGNfaGxlbih0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncyk7XG4xMDEzOlx0XHR0dW5uZWwtXHUwMDNlcGFybXMuaXBoLnByb3RvY29sID0gSVBQUk9UT19HUkU7XG4xMDE0Olx0XG4xMDE1Olx0XHR0dW5uZWwtXHUwMDNlaGxlbiA9IHR1bm5lbC1cdTAwM2V0dW5faGxlbiAmIzQzOyB0dW5uZWwtXHUwMDNlZW5jYXBfaGxlbjtcbjEwMTY6XHRcdGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20gPSB0dW5uZWwtXHUwMDNlaGxlbiAmIzQzOyBzaXplb2YodHVubmVsLVx1MDAzZXBhcm1zLmlwaCk7XG4xMDE3Olx0XG4xMDE4Olx0XHRkZXYtXHUwMDNlZmVhdHVyZXNcdFx0fD0gR1JFX0ZFQVRVUkVTO1xuMTAxOTpcdFx0ZGV2LVx1MDAzZWh3X2ZlYXR1cmVzXHR8PSBHUkVfRkVBVFVSRVM7XG4xMDIwOlx0XG4xMDIxOlx0XHRkZXYtXHUwMDNlbGx0eCA9IHRydWU7XG4xMDIyOlx0XG4xMDIzOlx0XHQvKiBUQ1Agb2ZmbG9hZCB3aXRoIEdSRSBTRVEgaXMgbm90IHN1cHBvcnRlZCwgbm9yIGNhbiB3ZSBzdXBwb3J0IDJcbjEwMjQ6XHRcdCAqIGxldmVscyBvZiBvdXRlciBoZWFkZXJzIHJlcXVpcmluZyBhbiB1cGRhdGUuXG4xMDI1Olx0XHQgKi9cbjEwMjY6XHRcdGlmICh0ZXN0X2JpdChJUF9UVU5ORUxfU0VRX0JJVCwgdHVubmVsLVx1MDAzZXBhcm1zLm9fZmxhZ3MpKVxuMTAyNzpcdFx0XHRyZXR1cm47XG4xMDI4Olx0XHRpZiAodGVzdF9iaXQoSVBfVFVOTkVMX0NTVU1fQklULCB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncykgXHUwMDI2XHUwMDI2XG4xMDI5Olx0XHQgICAgdHVubmVsLVx1MDAzZWVuY2FwLnR5cGUgIT0gVFVOTkVMX0VOQ0FQX05PTkUpXG4xMDMwOlx0XHRcdHJldHVybjtcbjEwMzE6XHRcbjEwMzI6XHRcdGRldi1cdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTtcbjEwMzM6XHRcdGRldi1cdTAwM2Vod19mZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTtcbjEwMzQ6XHR9XG4xMDM1Olx0XG4xMDM2Olx0c3RhdGljIGludCBpcGdyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNjozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDEzCgkJCQkJCQlvdXRwdXQ6IDExNgoJCQkJCQkJdGhvdWdodHM6IDE2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBHUkUgVHVubmVsIEluaXRpYWxpemF0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBHUkUgdHVubmVsIGluaXRpYWxpemF0aW9uIGFuZCBpdCYjMzk7cyBhIHN0cmFpZ2h0Zm9yd2FyZCBmdW5jdGlvbmFsIGNoYW5nZSwgd2hpY2ggYWx3YXlzIGdyYWJzIG15IGF0dGVudGlvbi4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgaW4gdGhlIGZ1bmN0aW9uIGBfX2dyZV90dW5uZWxfaW5pdCgpYC4gV2hhdCB0aGV5JiMzOTt2ZSBkb25lIGlzIHRoZXkmIzM5O3ZlIG1vdmVkIGBkZXYtJmd0O2xsdHggPSB0cnVlO2AgKmJlZm9yZSogdGhlIGNvbmRpdGlvbmFsIGByZXR1cm5gIHN0YXRlbWVudHMuIFRoYXQmIzM5O3MgYSBnb29kIGZpcnN0IG1vdmUuCgpFc3NlbnRpYWxseSwgYnkgZG9pbmcgdGhpcywgdGhleSYjMzk7cmUgZ3VhcmFudGVlaW5nIHRoYXQgdGhlIGBkZXYtJmd0O2xsdHhgIGZsYWcgaXMgc2V0IHRvIGB0cnVlYCDigJMgdGhhdCBsb2NrbGVzcyB0cmFuc21pc3Npb24gaXMgZW5hYmxlZCDigJMgKnJlZ2FyZGxlc3MqIG9mIHdoZXRoZXIgdGhlIGZ1bmN0aW9uIGhpdHMgYW4gZWFybHkgZXhpdC4gVGhhdCYjMzk7cyBrZXkuIFRoaXMgbWVhbnMgdGhhdCBldmVuIGlmIHRoZXJlJiMzOTtzIGEgcHJvYmxlbSB3aXRoIHNlcXVlbmNlIG51bWJlcnMgb3IgY2hlY2tzdW1zIHdpdGggZW5jYXBzdWxhdGlvbiAodGhpbmdzIHRoYXQgbWlnaHQgdHJpZ2dlciB0aG9zZSBlYXJseSByZXR1cm5zKSwgbG9ja2xlc3MgVFggd2lsbCBiZSBlbmFibGVkLiBJdCYjMzk7cyBhIHN1YnRsZSBidXQgaW1wb3J0YW50IHBpZWNlIG9mIGxvZ2ljLgoKTXkgbWFpbiBmb2N1cyBoZXJlLCBpcyBpZiBpdCBlZmZlY3RzIGBpcGdyZV90dW5uZWxfaW5pdGAgb3IgYGlwZ3JlX25ld2xpbmtgIGZ1bmN0aW9uYWxpdHksIHdoaWNoIGl0IGRvZXNuJiMzOTt0IHNlZW0gdG8uIEkgd2lsbCBhZGQgdGhpcyB0byBteSBtZW50YWwgY2hlY2tzLgoKQWxyaWdodCwgc2VlbXMgZ29vZC4gSSYjMzk7bGwgbWFrZSBzdXJlIHRvIGdldCB0aGlzIGNoZWNrZWQgYW5kIG1lcmdlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDY6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fZ3JlX3R1bm5lbF9pbml0JiMzNDssCiAgICAmIzM0O2lwZ3JlX3R1bm5lbF9pbml0JiMzNDssCiAgICAmIzM0O2lwZ3JlX25ld2xpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW92ZXMgdGhlIGFzc2lnbm1lbnQgb2YgYGRldi1cdTAwM2VsbHR4ID0gdHJ1ZWAgYmVmb3JlIGVhcmx5IHJldHVybnMgaW4gYF9fZ3JlX3R1bm5lbF9pbml0KClgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBlbnN1cmVzIGxvY2tsZXNzIFRYIGlzIGVuYWJsZWQgZm9yIEdSRSB0dW5uZWxzIGV2ZW4gd2hlbiBzZXF1ZW5jZSBudW1iZXJzIG9yIGNoZWNrc3VtcyB3aXRoIGVuY2Fwc3VsYXRpb24gYXJlIHVzZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fZ3JlX3R1bm5lbF9pbml0JiMzNDssCiAgICAmIzM0O2lwZ3JlX3R1bm5lbF9pbml0JiMzNDssCiAgICAmIzM0O2lwZ3JlX25ld2xpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW92ZXMgdGhlIGFzc2lnbm1lbnQgb2YgYGRldi1cdTAwM2VsbHR4ID0gdHJ1ZWAgYmVmb3JlIGVhcmx5IHJldHVybnMgaW4gYF9fZ3JlX3R1bm5lbF9pbml0KClgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBlbnN1cmVzIGxvY2tsZXNzIFRYIGlzIGVuYWJsZWQgZm9yIEdSRSB0dW5uZWxzIGV2ZW4gd2hlbiBzZXF1ZW5jZSBudW1iZXJzIG9yIGNoZWNrc3VtcyB3aXRoIGVuY2Fwc3VsYXRpb24gYXJlIHVzZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNjozMzo0NC45MTE5ODk1NzJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTA2OTg5NDYxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfSVBHUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2dyZV90dW5uZWxfaW5pdFwiLFxuICAgIFwiaXBncmVfdHVubmVsX2luaXRcIixcbiAgICBcImlwZ3JlX25ld2xpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb3ZlcyB0aGUgYXNzaWdubWVudCBvZiBgZGV2LVxcdTAwM2VsbHR4ID0gdHJ1ZWAgYmVmb3JlIGVhcmx5IHJldHVybnMgaW4gYF9fZ3JlX3R1bm5lbF9pbml0KClgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBlbnN1cmVzIGxvY2tsZXNzIFRYIGlzIGVuYWJsZWQgZm9yIEdSRSB0dW5uZWxzIGV2ZW4gd2hlbiBzZXF1ZW5jZSBudW1iZXJzIG9yIGNoZWNrc3VtcyB3aXRoIGVuY2Fwc3VsYXRpb24gYXJlIHVzZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA2OjMzOjQ0LjkxMTk5NTIyMVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzYxOTE0MTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODc3NDg0NjU1N2ZjM2I1YTA1Y2QzNDA0ODkxMDA5MTYwNDk2Y2MxZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAxMCAwNjozMzo0MyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF9ncmUuYyBiL25ldC9pcHY0L2lwX2dyZS5jXFxuaW5kZXggM2VmZGZiNGZmYTIxMTIuLjBiYTFlOTRlOTAxMmM2IDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L2lwX2dyZS5jXFxuKysrIGIvbmV0L2lwdjQvaXBfZ3JlLmNcXG5AQCAtMTAxOCw2ICsxMDE4LDggQEAgc3RhdGljIHZvaWQgX19ncmVfdHVubmVsX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0ZGV2LVxcdTAwM2VmZWF0dXJlc1xcdFxcdHw9IEdSRV9GRUFUVVJFUztcXG4gXFx0ZGV2LVxcdTAwM2Vod19mZWF0dXJlc1xcdHw9IEdSRV9GRUFUVVJFUztcXG4gXFxuK1xcdGRldi1cXHUwMDNlbGx0eCA9IHRydWU7XFxuK1xcbiBcXHQvKiBUQ1Agb2ZmbG9hZCB3aXRoIEdSRSBTRVEgaXMgbm90IHN1cHBvcnRlZCwgbm9yIGNhbiB3ZSBzdXBwb3J0IDJcXG4gXFx0ICogbGV2ZWxzIG9mIG91dGVyIGhlYWRlcnMgcmVxdWlyaW5nIGFuIHVwZGF0ZS5cXG4gXFx0ICovXFxuQEAgLTEwMjksOCArMTAzMSw2IEBAIHN0YXRpYyB2b2lkIF9fZ3JlX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcbiBcXHRkZXYtXFx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFO1xcbiBcXHRkZXYtXFx1MDAzZWh3X2ZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFO1xcbi1cXG4tXFx0ZGV2LVxcdTAwM2VsbHR4ID0gdHJ1ZTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBpcGdyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNjozMzo0NS42NzY5ODQ3NTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwMzA0ODg1OTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9JUEdSRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fZ3JlX3R1bm5lbF9pbml0XCIsXG4gICAgXCJpcGdyZV90dW5uZWxfaW5pdFwiLFxuICAgIFwiaXBncmVfbmV3bGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vdmVzIHRoZSBhc3NpZ25tZW50IG9mIGBkZXYtXFx1MDAzZWxsdHggPSB0cnVlYCBiZWZvcmUgZWFybHkgcmV0dXJucyBpbiBgX19ncmVfdHVubmVsX2luaXQoKWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGVuc3VyZXMgbG9ja2xlc3MgVFggaXMgZW5hYmxlZCBmb3IgR1JFIHR1bm5lbHMgZXZlbiB3aGVuIHNlcXVlbmNlIG51bWJlcnMgb3IgY2hlY2tzdW1zIHdpdGggZW5jYXBzdWxhdGlvbiBhcmUgdXNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4Nzc0ODQ2NTU3ZmMzYjVhMDVjZDM0MDQ4OTEwMDkxNjA0OTZjYzFmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTAgMDY6MzM6NDMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF9ncmUuYyBiL25ldC9pcHY0L2lwX2dyZS5jXG5pbmRleCAzZWZkZmI0ZmZhMjExMi4uMGJhMWU5NGU5MDEyYzYgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9pcF9ncmUuY1xuKysrIGIvbmV0L2lwdjQvaXBfZ3JlLmNcbkBAIC0xMDE4LDYgKzEwMTgsOCBAQCBzdGF0aWMgdm9pZCBfX2dyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0ZGV2LVx1MDAzZWZlYXR1cmVzXHRcdHw9IEdSRV9GRUFUVVJFUztcbiBcdGRldi1cdTAwM2Vod19mZWF0dXJlc1x0fD0gR1JFX0ZFQVRVUkVTO1xuIFxuK1x0ZGV2LVx1MDAzZWxsdHggPSB0cnVlO1xuK1xuIFx0LyogVENQIG9mZmxvYWQgd2l0aCBHUkUgU0VRIGlzIG5vdCBzdXBwb3J0ZWQsIG5vciBjYW4gd2Ugc3VwcG9ydCAyXG4gXHQgKiBsZXZlbHMgb2Ygb3V0ZXIgaGVhZGVycyByZXF1aXJpbmcgYW4gdXBkYXRlLlxuIFx0ICovXG5AQCAtMTAyOSw4ICsxMDMxLDYgQEAgc3RhdGljIHZvaWQgX19ncmVfdHVubmVsX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcbiBcdGRldi1cdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTtcbiBcdGRldi1cdTAwM2Vod19mZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTtcbi1cbi1cdGRldi1cdTAwM2VsbHR4ID0gdHJ1ZTtcbiB9XG4gXG4gc3RhdGljIGludCBpcGdyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDY6MzM6NDUuNjc2OTg3MDMxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTg2MTA2MTAxMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBHUkUgVHVubmVsIEluaXRpYWxpemF0aW9uIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbmV0L2lwdjQvaXBfZ3JlLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBfX2dyZV90dW5uZWxfaW5pdCgpYCBmdW5jdGlvbi4gVGhlIGNvcmUgY2hhbmdlIGlzIG1vdmluZyBgZGV2LVx1MDAzZWxsdHggPSB0cnVlO2AgYSBmZXcgbGluZXMgdXAuIExldCBtZSBkaWcgaW50byB0aGlzLiBJbml0aWFsbHksIEkgd2FzIHRoaW5raW5nIGl0J3MgYWJvdXQgc2V0dGluZyB0aGUgbGluayBsYXllciB0cmFuc21pdCBmbGFnLCBidXQgbGV0IG1lIGNoZWNrIHRoZSBjb250ZXh0LlxuXG5Mb29raW5nIGF0IHRoZSBjb2RlLCBpdCdzIHNldHRpbmcgdXAgdGhlIEdSRSB0dW5uZWwgd2l0aCBjYWxjdWxhdGlvbnMgb2YgaGVhZGVyIGxlbmd0aHMgYW5kIE1UVS4gVGhlbiwgaXQncyBzZXR0aW5nIHNvbWUgZmVhdHVyZXMgYW5kIGhhcmR3YXJlIGZlYXR1cmVzLiBUaGUgb3JpZ2luYWwgcGxhY2VtZW50IG9mIGBkZXYtXHUwMDNlbGx0eCA9IHRydWU7YCB3YXMgYXQgdGhlICplbmQqIG9mIHRoZSBmdW5jdGlvbi4gVGhlbiB0aGVyZSdzIGFuIGBpZmAgYmxvY2sgdGhhdCBsb29rcyBhdCBgVFVOTkVMX1NFUWAgZmxhZ3MgYW5kLCBpbnNpZGUgdGhhdCwgY29uZGl0aW9uYWwgbG9naWMgcmVsYXRlZCB0byBgVFVOTkVMX0NTVU1gLiBIbW0sIGl0IGluY2x1ZGVzIHRoaXMgbGluZTpcblxuYGBgY1xuXHRcdGlmICh0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncyBcdTAwMjYgVFVOTkVMX0NTVU0pXG5cdFx0XHRkZXYtXHUwMDNlZmVhdHVyZXMgXHUwMDI2PSB+TkVUSUZfRl9MTFRYO1xuYGBgXG5cblJpZ2h0LCB0aGF0J3MgY2xlYXJpbmcgdGhlIGBORVRJRl9GX0xMVFhgIGZsYWcgZnJvbSB0aGUgYGRldi1cdTAwM2VmZWF0dXJlc2AgZmllbGQuIEJ1dCB0aGVuIEkgcmVtZW1iZXIgYGRldi1cdTAwM2VsbHR4YCBpcyBhIGJvb2xlYW4gZmxhZy4gSGFuZyBvbiwgdGhlIGBpZmAgYmxvY2sgKm9ubHkqIG1vZGlmaWVzIGBkZXYtXHUwMDNlZmVhdHVyZXNgLCBub3QgYGRldi1cdTAwM2VsbHR4YCBkaXJlY3RseS4gU28gYGRldi1cdTAwM2VsbHR4YCBhbmQgYE5FVElGX0ZfTExUWGAgYXJlIGFjdHVhbGx5IHNlcGFyYXRlIGNvbmNlcm5zLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgdGhlIG1vdmUgbWlnaHQgYmUgdG8gZW5zdXJlIGBkZXYtXHUwMDNlbGx0eGAgaXMgZGVmaW5pdGVseSBzZXQgKmJlZm9yZSogdGhlIGNvbmRpdGlvbmFsIGNoZWNrLiBIb3dldmVyLCB0aGUgY29uZGl0aW9uYWwgc3RhdGVtZW50IGlzIGp1c3QgYWJvdXQgbWFuaXB1bGF0aW5nIHRoZSBmZWF0dXJlIGZsYWcuIFBlcmhhcHMgdGhlIGludGVudCB3YXMgdG8gZGlzYWJsZSB0aGUgTExUWCBmZWF0dXJlPyBObywgdGhlIGJvb2xlYW4gYW5kIHRoZSBmZWF0dXJlIGZsYWcgYXJlIGNvbXBsZXRlbHkgc2VwYXJhdGUuIEFuZCB0aGUgcGF0Y2ggaXMgb25seSBtb3ZpbmcgdGhlIGFzc2lnbm1lbnQgb2YgdGhlIGJvb2xlYW4gdG8gYmUgZWFybGllciBpbiB0aGUgZnVuY3Rpb24sIHdoaWxlIGxlYXZpbmcgdGhlIGNvbmRpdGlvbmFsIGNoZWNrIGFuZCBmZWF0dXJlIG1vZGlmaWNhdGlvbiBpbnRhY3QuXG5cblNvIHRoZSBtYWluIHRoaW5nIHRvIHVuZGVyc3RhbmQgaXMgdGhhdCB0aGUgcGF0Y2ggc2VlbXMgdG8gYmUgbW92aW5nIHRoZSBzZXR0aW5nIG9mIHRoZSBib29sZWFuIGBkZXYtXHUwMDNlbGx0eGAgdG8gYW4gZWFybGllciBwb3NpdGlvbiwgYnV0IHRoZSBgZGV2LVx1MDAzZWZlYXR1cmVzYCBtYW5pcHVsYXRpb24gcmVtYWlucyB0aGUgc2FtZS4gSSBzdXBwb3NlIGBORVRJRl9GX0xMVFhgIGNvdWxkIGJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgYGRldi1cdTAwM2VsbHR4YC5cbkxldCBtZSBsb29rIGF0IGBuZXQvaXB2NC9pcF9ncmUuY2Agb25jZSBtb3JlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTI4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODAyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDY6MzQ6MDQuMjg3NTk5MzAyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUwMDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY0L2lwX2dyZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwMDAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEwMDA6XFx0c3RhdGljIHZvaWQgaXBncmVfdHVubmVsX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuMTAwMTpcXHR7XFxuMTAwMjpcXHRcXHRkZXYtXFx1MDAzZW5ldGRldl9vcHNcXHRcXHQ9IFxcdTAwMjZpcGdyZV9uZXRkZXZfb3BzO1xcbjEwMDM6XFx0XFx0ZGV2LVxcdTAwM2V0eXBlXFx0XFx0PSBBUlBIUkRfSVBHUkU7XFxuMTAwNDpcXHRcXHRpcF90dW5uZWxfc2V0dXAoZGV2LCBpcGdyZV9uZXRfaWQpO1xcbjEwMDU6XFx0fVxcbjEwMDY6XFx0XFxuMTAwNzpcXHRzdGF0aWMgdm9pZCBfX2dyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbjEwMDg6XFx0e1xcbjEwMDk6XFx0XFx0c3RydWN0IGlwX3R1bm5lbCAqdHVubmVsO1xcbjEwMTA6XFx0XFxuMTAxMTpcXHRcXHR0dW5uZWwgPSBuZXRkZXZfcHJpdihkZXYpO1xcbjEwMTI6XFx0XFx0dHVubmVsLVxcdTAwM2V0dW5faGxlbiA9IGdyZV9jYWxjX2hsZW4odHVubmVsLVxcdTAwM2VwYXJtcy5vX2ZsYWdzKTtcXG4xMDEzOlxcdFxcdHR1bm5lbC1cXHUwMDNlcGFybXMuaXBoLnByb3RvY29sID0gSVBQUk9UT19HUkU7XFxuMTAxNDpcXHRcXG4xMDE1OlxcdFxcdHR1bm5lbC1cXHUwMDNlaGxlbiA9IHR1bm5lbC1cXHUwMDNldHVuX2hsZW4gKyB0dW5uZWwtXFx1MDAzZWVuY2FwX2hsZW47XFxuMTAxNjpcXHRcXHRkZXYtXFx1MDAzZW5lZWRlZF9oZWFkcm9vbSA9IHR1bm5lbC1cXHUwMDNlaGxlbiArIHNpemVvZih0dW5uZWwtXFx1MDAzZXBhcm1zLmlwaCk7XFxuMTAxNzpcXHRcXG4xMDE4OlxcdFxcdGRldi1cXHUwMDNlZmVhdHVyZXNcXHRcXHR8PSBHUkVfRkVBVFVSRVM7XFxuMTAxOTpcXHRcXHRkZXYtXFx1MDAzZWh3X2ZlYXR1cmVzXFx0fD0gR1JFX0ZFQVRVUkVTO1xcbjEwMjA6XFx0XFxuMTAyMTpcXHRcXHRkZXYtXFx1MDAzZWxsdHggPSB0cnVlO1xcbjEwMjI6XFx0XFxuMTAyMzpcXHRcXHQvKiBUQ1Agb2ZmbG9hZCB3aXRoIEdSRSBTRVEgaXMgbm90IHN1cHBvcnRlZCwgbm9yIGNhbiB3ZSBzdXBwb3J0IDJcXG4xMDI0OlxcdFxcdCAqIGxldmVscyBvZiBvdXRlciBoZWFkZXJzIHJlcXVpcmluZyBhbiB1cGRhdGUuXFxuMTAyNTpcXHRcXHQgKi9cXG4xMDI2OlxcdFxcdGlmICh0ZXN0X2JpdChJUF9UVU5ORUxfU0VRX0JJVCwgdHVubmVsLVxcdTAwM2VwYXJtcy5vX2ZsYWdzKSlcXG4xMDI3OlxcdFxcdFxcdHJldHVybjtcXG4xMDI4OlxcdFxcdGlmICh0ZXN0X2JpdChJUF9UVU5ORUxfQ1NVTV9CSVQsIHR1bm5lbC1cXHUwMDNlcGFybXMub19mbGFncykgXFx1MDAyNlxcdTAwMjZcXG4xMDI5OlxcdFxcdCAgICB0dW5uZWwtXFx1MDAzZWVuY2FwLnR5cGUgIT0gVFVOTkVMX0VOQ0FQX05PTkUpXFxuMTAzMDpcXHRcXHRcXHRyZXR1cm47XFxuMTAzMTpcXHRcXG4xMDMyOlxcdFxcdGRldi1cXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7XFxuMTAzMzpcXHRcXHRkZXYtXFx1MDAzZWh3X2ZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFO1xcbjEwMzQ6XFx0fVxcbjEwMzU6XFx0XFxuMTAzNjpcXHRzdGF0aWMgaW50IGlwZ3JlX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuMTAzNzpcXHR7XFxuMTAzODpcXHRcXHRzdHJ1Y3QgaXBfdHVubmVsICp0dW5uZWwgPSBuZXRkZXZfcHJpdihkZXYpO1xcbjEwMzk6XFx0XFx0c3RydWN0IGlwaGRyICppcGggPSBcXHUwMDI2dHVubmVsLVxcdTAwM2VwYXJtcy5pcGg7XFxuMTA0MDpcXHRcXG4xMDQxOlxcdFxcdF9fZ3JlX3R1bm5lbF9pbml0KGRldik7XFxuMTA0MjpcXHRcXG4xMDQzOlxcdFxcdF9fZGV2X2FkZHJfc2V0KGRldiwgXFx1MDAyNmlwaC1cXHUwMDNlc2FkZHIsIDQpO1xcbjEwNDQ6XFx0XFx0bWVtY3B5KGRldi1cXHUwMDNlYnJvYWRjYXN0LCBcXHUwMDI2aXBoLVxcdTAwM2VkYWRkciwgNCk7XFxuMTA0NTpcXHRcXG4xMDQ2OlxcdFxcdGRldi1cXHUwMDNlZmxhZ3NcXHRcXHQ9IElGRl9OT0FSUDtcXG4xMDQ3OlxcdFxcdG5ldGlmX2tlZXBfZHN0KGRldik7XFxuMTA0ODpcXHRcXHRkZXYtXFx1MDAzZWFkZHJfbGVuXFx0XFx0PSA0O1xcbjEwNDk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA2OjM0OjA0LjI4Nzc1MTc5MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgyNzE0MDMxNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBHUkUgVHVubmVsIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBgX19ncmVfdHVubmVsX2luaXRgIGZ1bmN0aW9uLCBhbmQgSSd2ZSBzcG90dGVkIHNvbWV0aGluZy4gVGhvc2UgYGlmYCBibG9ja3Mgd2l0aCBgcmV0dXJuO2AgYXJlIHRoZSBrZXkhIEl0IHR1cm5zIG91dCB0aGF0IGJlY2F1c2Ugb2YgdGhvc2UgZWFybHkgcmV0dXJucywgdGhlIGNydWNpYWwgbGluZSBgZGV2LVx1MDAzZWxsdHggPSB0cnVlO2AgYXQgdGhlIGVuZCB3YXMgYmVpbmcgc2tpcHBlZCB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMuIFNwZWNpZmljYWxseSwgaWYgdGhlIHR1bm5lbCB3YXMgY29uZmlndXJlZCB3aXRoIGVpdGhlciBTRVEgb3IgQ1NVTStFTkNBUCBmbGFncywgYGRldi1cdTAwM2VsbHR4YCB3YXNuJ3QgYmVpbmcgc2V0LiBOb3cgdGhhdCBJJ3ZlIG1vdmVkIHRoYXQgbGluZSB1cCwgaXQgd2lsbCBleGVjdXRlIHVuY29uZGl0aW9uYWxseS5cblxuVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGtlcm5lbCdzIG5ldHdvcmtpbmcgc3RhY2ssIGFmZmVjdGluZyBJUHY0IEdSRSB0dW5uZWxzLiBJIHJlbWVtYmVyIGBkZXYtXHUwMDNlbGx0eGAgY29udHJvbHMgbG9ja2xlc3MgdHJhbnNtaXNzaW9uLCBzbyBpZiBpdCdzIHNldCB0byBgdHJ1ZWAsIHRoZSBxZGlzYyBsb2NrIGlzICpub3QqIHRha2VuIGR1cmluZyB0cmFuc21pc3Npb24uXG5cblNpbmNlIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgaXQgc2NyZWFtcyBcImZ1enogbWUhXCIgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBmdW5jdGlvbnMgYXJlIHJlbGV2YW50IHRvIGZ1enouXG5cbmBfX2dyZV90dW5uZWxfaW5pdGAgaXMgYW4gaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24sIHNvIHRoYXQgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGxvb2sgYXQgcmVsYXRlZCBmdW5jdGlvbnMgbGlrZSBgaXBncmVfdHVubmVsX2luaXRgLCBhbmQgYGlwZ3JlX25ld2xpbmtgIGFzIHRoZXkgd291bGQgYWxzbyBpbml0aWFsaXplIHR1bm5lbHMuIFRoZSB0cmFuc21pc3Npb24gZnVuY3Rpb24sIGBpcGdyZV94bWl0YCwgbWlnaHQgYmUgcmVsYXRlZCBhcyB3ZWxsLCBhcyB0aGF0J3MgdGhlIHBhdGggdGhhdCB3b3VsZCB1c2UgYGRldi1cdTAwM2VsbHR4YCwgYnV0IHNpbmNlIHRoaXMgaXMgYSBob3QgcGF0aCwgSSBuZWVkIHRvIHN0YXkgYXdheSBmcm9tIGl0LlxuXG5TbywgSSB3aWxsIGZvY3VzIG9uIGBpcGdyZV9uZXdsaW5rYCwgYGlwZ3JlX3R1bm5lbF9pbml0YCwgYW5kIGBfX2dyZV90dW5uZWxfaW5pdGAuIEkgdGhpbmsgdGhlc2Ugd291bGQgYmUgdGhlIG1vc3QgZWZmZWN0aXZlIGZ1bmN0aW9ucyB0byBmdXp6IVxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDY2LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDI0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDY6MzQ6MTIuNTU5MTY5NDM2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNjk4MjkwMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBncmVfbmV3bGlua1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9pcF9ncmUuYz0xMzkzPXN0YXRpYyBpbnRcXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzk0OmlwZ3JlX25ld2xpbmtfZW5jYXBfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqZGF0YVtdKVxcbm5ldC9pcHY0L2lwX2dyZS5jLTEzOTUte1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTQwOC1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxNDA5OnN0YXRpYyBpbnQgaXBncmVfbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9pcHY0L2lwX2dyZS5jLTE0MTAtXFx0XFx0XFx0IHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDE4LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE0MTk6XFx0ZXJyID0gaXBncmVfbmV3bGlua19lbmNhcF9zZXR1cChkZXYsIGRhdGEpO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTE0MjAtXFx0aWYgKGVycilcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTE0MzA9c3RhdGljIGludCBlcnNwYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTQzOS1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxNDQwOlxcdGVyciA9IGlwZ3JlX25ld2xpbmtfZW5jYXBfc2V0dXAoZGV2LCBkYXRhKTtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDQxLVxcdGlmIChlcnIpXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xNDUxPXN0YXRpYyBpbnQgaXBncmVfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTQ2Mi1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxNDYzOlxcdGVyciA9IGlwZ3JlX25ld2xpbmtfZW5jYXBfc2V0dXAoZGV2LCBkYXRhKTtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDY0LVxcdGlmIChlcnIpXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xNDgzPXN0YXRpYyBpbnQgZXJzcGFuX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTE0OTQtXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTQ5NTpcXHRlcnIgPSBpcGdyZV9uZXdsaW5rX2VuY2FwX3NldHVwKGRldiwgZGF0YSk7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTQ5Ni1cXHRpZiAoZXJyKVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9MTY3ND1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgaXBncmVfbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTE2ODAtXFx0LnZhbGlkYXRlXFx0PSBpcGdyZV90dW5uZWxfdmFsaWRhdGUsXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTY4MTpcXHQubmV3bGlua1xcdD0gaXBncmVfbmV3bGluayxcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjgyLVxcdC5jaGFuZ2VsaW5rXFx0PSBpcGdyZV9jaGFuZ2VsaW5rLFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9MTY4OT1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgaXBncmVfdGFwX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTY5NS1cXHQudmFsaWRhdGVcXHQ9IGlwZ3JlX3RhcF92YWxpZGF0ZSxcXG5uZXQvaXB2NC9pcF9ncmUuYzoxNjk2OlxcdC5uZXdsaW5rXFx0PSBpcGdyZV9uZXdsaW5rLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTE2OTctXFx0LmNoYW5nZWxpbmtcXHQ9IGlwZ3JlX2NoYW5nZWxpbmssXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xNzE5PXN0cnVjdCBuZXRfZGV2aWNlICpncmV0YXBfZmJfZGV2X2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IGNoYXIgKm5hbWUsXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzQwLVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3NDE6XFx0ZXJyID0gaXBncmVfbmV3bGluayhkZXYsIFxcdTAwMjZwYXJhbXMsIE5VTEwpO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTE3NDItXFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDY6MzQ6MTkuNjI5MDA1MTE4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ2MjUwODYxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKktjb25maWcgRGl2ZSBmb3IgaXBfZ3JlLmMqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIHJlbGF0ZWQgdG8gYGlwX2dyZS5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgbW9kdWxlIGlzIGNvbnRyb2xsZWQgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGl0IGhhcy4gV2hhdCBhcmUgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBnb3Zlcm4gaXRzIGluY2x1c2lvbj8gQXJlIHRoZXJlIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgbmV0d29ya2luZyBmZWF0dXJlcyBvciBkcml2ZXJzIHRoYXQgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlcyBvciBrZXJuZWwgdmVyc2lvbnMgd2hlcmUgaXQncyBjb25kaXRpb25hbGx5IGVuYWJsZWQ/IFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGl0cyBiZWhhdmlvciBhbmQgaG93IHRvIHByb3Blcmx5IGNvbmZpZ3VyZSBpdCBmb3IgYSBzcGVjaWZpYyB0YXJnZXQuIEkgbmVlZCB0byB0cmFjZSB0aHJvdWdoIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgdG8gZ2V0IHRoZSB3aG9sZSBwaWN0dXJlLiBMZXQncyBzZWUgaWYgdGhpcyByZXZlYWxzIGFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggbXkgdGFyZ2V0IGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MjksIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNjozNDoyMy4wOTE1MTY0MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDA5NDEwODU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX2dyZVxcXFwub1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9NYWtlZmlsZT0yOT1vYmotJChDT05GSUdfTkVUX0lQR1JFX0RFTVVYKSArPSBncmUub1xcbm5ldC9pcHY0L01ha2VmaWxlOjMwOm9iai0kKENPTkZJR19ORVRfSVBHUkUpICs9IGlwX2dyZS5vXFxubmV0L2lwdjQvTWFrZWZpbGUtMzEtdWRwX3R1bm5lbC15IDo9IHVkcF90dW5uZWxfY29yZS5vIHVkcF90dW5uZWxfbmljLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDY6MzQ6MjguNTAwOTMzNDc0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIzNjExNzA2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgTmV0d29yayBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IGBDT05GSUdfTkVUX0lQR1JFYC4gVGhhdCdzIG91ciBzdGFydGluZyBwb2ludC4gSSBrbm93IHRoYXQgY29uZmlnIHByZXR0eSB3ZWxsLCBzbyBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHJlbGF0ZWQgb3IgZGVwZW5kZW50IGNvbmZpZ3VyYXRpb25zIHRoYXQgd2Ugc2hvdWxkIGFsc28gYmUgYXdhcmUgb2YuIFdoYXQgb3RoZXIgbmV0d29yayBzZXR0aW5ncyBtaWdodCBiZSBpbiBwbGF5IGhlcmU/IEl0J3MgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIGJyb2FkZXIgY29udGV4dCBhbmQgcG90ZW50aWFsIGludGVyYWN0aW9ucy4gV2UgZG9uJ3Qgd2FudCB0byBtYWtlIGFuIGlzb2xhdGVkIGNoYW5nZSB3aXRob3V0IGNvbnNpZGVyaW5nIGl0cyByaXBwbGUgZWZmZWN0cy4gV2UgbmVlZCB0byBiZSBleGhhdXN0aXZlLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgb3RoZXIgcmVsYXRlZCBjb25maWdzLCBsaWtlIHRoZSBvbmVzIGRlYWxpbmcgd2l0aCB0dW5uZWxzIG9yIGVuY2FwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTE5LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDY6MzQ6MzEuNzM3MDUzNjdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NTE0MDU4MDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9JUEdSRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTE2Mj1jb25maWcgTkVUX0lQSVBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMTc5LVxcbm5ldC9pcHY0L0tjb25maWc6MTgwOmNvbmZpZyBORVRfSVBHUkVfREVNVVhcXG5uZXQvaXB2NC9LY29uZmlnLTE4MS1cXHR0cmlzdGF0ZSBcXFwiSVA6IEdSRSBkZW11bHRpcGxleGVyXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0xODY9Y29uZmlnIE5FVF9JUF9UVU5ORUxcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMTkxLVxcbm5ldC9pcHY0L0tjb25maWc6MTkyOmNvbmZpZyBORVRfSVBHUkVcXG5uZXQvaXB2NC9LY29uZmlnLTE5My1cXHR0cmlzdGF0ZSBcXFwiSVA6IEdSRSB0dW5uZWxzIG92ZXIgSVBcXFwiXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTIwNi1cXG5uZXQvaXB2NC9LY29uZmlnOjIwNzpjb25maWcgTkVUX0lQR1JFX0JST0FEQ0FTVFxcbm5ldC9pcHY0L0tjb25maWctMjA4LVxcdGJvb2wgXFxcIklQOiBicm9hZGNhc3QgR1JFIG92ZXIgSVBcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA2OjM0OjM2LjI4ODQ2NTYxNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTExOTI4ODgwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEdSRSBUdW5uZWwgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gc2V0dGluZyBhdCBwbGF5IGhlcmUgaXMgYE5FVF9JUEdSRWAuIE15IGluaXRpYWwgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlc2UgdGhyZWUgZnVuY3Rpb25zOiBgX19ncmVfdHVubmVsX2luaXRgLCBgaXBncmVfdHVubmVsX2luaXRgLCBhbmQgYGlwZ3JlX25ld2xpbmtgLiBJIGtub3cgdGhlc2UgYXJlIHdoZXJlIHRoZSB0dW5uZWwgaW5pdGlhbGl6YXRpb24gbG9naWMgbGl2ZXMsIHNvIHRoZXkncmUgdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnRzLlxuXG5XYWl0LCBob2xkIG9uIGEgc2Vjb25kLi4uIHRoZSBjb3JlIGlzc3VlIGlzIGBkZXYtXHUwMDNlbGx0eGAgbm90IGJlaW5nIHNldCB1bmRlciBzcGVjaWZpYyBjb25kaXRpb25zOiB3aGVuIGBJUF9UVU5ORUxfU0VRX0JJVGAgb3IgYElQX1RVTk5FTF9DU1VNX0JJVGAgYXJlIHNldCAqYW5kKiBlbmNhcHN1bGF0aW9uIGlzIGFjdGl2ZS4gVGhhdCBtYWtlcyB0aGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgaXQgZGVmaW5pdGVseSBpbXBhY3RzIGxvY2tsZXNzIHRyYW5zbWl0LiBUaGUgcG90ZW50aWFsIGZvciBhIGNvbmN1cnJlbmN5IGlzc3VlIGlzIGRlZmluaXRlbHkgdGhlcmUuXG5cbkknbSB0aGlua2luZyB0aGlzIGlzIHdvcnRoIGZ1enppbmcsIHRoYXQncyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAuIFdlIG5lZWQgdG8gZXhwb3NlIHRoaXMgYW5kIHNlZSBob3cgaXQgaG9sZHMgdXAuXG5cbkxldCBtZSBqdXN0IGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGluIHBsYXkgaGVyZS4gYE5FVF9JUEdSRWAgZGVwZW5kcyBvbiBgTkVUX0lQR1JFX0RFTVVYYD8gQmV0dGVyIGNoZWNrIHRoYXQgaW4gdGhlIGBuZXQvaXB2NC9LY29uZmlnYCBmaWxlIGFuZCBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTM3LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA2OjM0OjQ3LjQwNzc3OTM1MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTYwMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxODA6XFx0Y29uZmlnIE5FVF9JUEdSRV9ERU1VWFxcbiAxODE6XFx0XFx0dHJpc3RhdGUgXFxcIklQOiBHUkUgZGVtdWx0aXBsZXhlclxcXCJcXG4gMTgyOlxcdFxcdGhlbHBcXG4gMTgzOlxcdFxcdCAgVGhpcyBpcyBoZWxwZXIgbW9kdWxlIHRvIGRlbXVsdGlwbGV4IEdSRSBwYWNrZXRzIG9uIEdSRSB2ZXJzaW9uIGZpZWxkIGNyaXRlcmlhLlxcbiAxODQ6XFx0XFx0ICBSZXF1aXJlZCBieSBpcF9ncmUgYW5kIHBwdHAgbW9kdWxlcy5cXG4gMTg1OlxcdFxcbiAxODY6XFx0Y29uZmlnIE5FVF9JUF9UVU5ORUxcXG4gMTg3OlxcdFxcdHRyaXN0YXRlXFxuIDE4ODpcXHRcXHRzZWxlY3QgRFNUX0NBQ0hFXFxuIDE4OTpcXHRcXHRzZWxlY3QgR1JPX0NFTExTXFxuIDE5MDpcXHRcXHRkZWZhdWx0IG5cXG4gMTkxOlxcdFxcbiAxOTI6XFx0Y29uZmlnIE5FVF9JUEdSRVxcbiAxOTM6XFx0XFx0dHJpc3RhdGUgXFxcIklQOiBHUkUgdHVubmVscyBvdmVyIElQXFxcIlxcbiAxOTQ6XFx0XFx0ZGVwZW5kcyBvbiBORVRfSVBHUkVfREVNVVhcXG4gMTk1OlxcdFxcdHNlbGVjdCBORVRfSVBfVFVOTkVMXFxuIDE5NjpcXHRcXHRoZWxwXFxuIDE5NzpcXHRcXHQgIFR1bm5lbGluZyBtZWFucyBlbmNhcHN1bGF0aW5nIGRhdGEgb2Ygb25lIHByb3RvY29sIHR5cGUgd2l0aGluXFxuIDE5ODpcXHRcXHQgIGFub3RoZXIgcHJvdG9jb2wgYW5kIHNlbmRpbmcgaXQgb3ZlciBhIGNoYW5uZWwgdGhhdCB1bmRlcnN0YW5kcyB0aGVcXG4gMTk5OlxcdFxcdCAgZW5jYXBzdWxhdGluZyBwcm90b2NvbC4gVGhpcyBwYXJ0aWN1bGFyIHR1bm5lbGluZyBkcml2ZXIgaW1wbGVtZW50c1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNjozNDo0Ny40MDc5Mzc1MTFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQyMzQzODY4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKk1ha2luZyBTdXJlIEdSRSBUdW5uZWxzIGFyZSBQcm9wZXJseSBJbml0aWFsaXplZCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYE5FVF9JUEdSRWAgcmVxdWlyZXMgYE5FVF9JUEdSRV9ERU1VWGAuIFJpZ2h0LCBtYWtlcyBzZW5zZSwgc28gSSdsbCBiZSBzdXJlIHRvIGluY2x1ZGUgYE5FVF9JUEdSRWAgaW4gbXkgYEVuYWJsZUNvbmZpZ3NgLiBHb3R0YSBiZSBjYXJlZnVsIGFib3V0IHRoZXNlIGRlcGVuZGVuY2llcy4gTm93LCBsZXQgbWUganVzdCBnbyBiYWNrIGFuZCBkb3VibGUtY2hlY2sgYF9fZ3JlX3R1bm5lbF9pbml0YC4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIGNyaXRpY2FsIGluIHRoZSB0dW5uZWwgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gSXTigJlzIGFsd2F5cyB3b3J0aCBhIHNlY29uZCBsb29rLCBlc3BlY2lhbGx5IHdpdGggc29tZXRoaW5nIGxpa2UgR1JFIHRoYXQgY2FuIGJlIGNvbXBsZXguIEkgbmVlZCB0byBlbnN1cmUgZXZlcnl0aGluZyBpcyBzZXQgdXAgY29ycmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjgxLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNjozNDo1MC44MzEzNzg5NTRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA3NzMyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2NC9pcF9ncmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMDA3LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMDA3OlxcdHN0YXRpYyB2b2lkIF9fZ3JlX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuMTAwODpcXHR7XFxuMTAwOTpcXHRcXHRzdHJ1Y3QgaXBfdHVubmVsICp0dW5uZWw7XFxuMTAxMDpcXHRcXG4xMDExOlxcdFxcdHR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XFxuMTAxMjpcXHRcXHR0dW5uZWwtXFx1MDAzZXR1bl9obGVuID0gZ3JlX2NhbGNfaGxlbih0dW5uZWwtXFx1MDAzZXBhcm1zLm9fZmxhZ3MpO1xcbjEwMTM6XFx0XFx0dHVubmVsLVxcdTAwM2VwYXJtcy5pcGgucHJvdG9jb2wgPSBJUFBST1RPX0dSRTtcXG4xMDE0OlxcdFxcbjEwMTU6XFx0XFx0dHVubmVsLVxcdTAwM2VobGVuID0gdHVubmVsLVxcdTAwM2V0dW5faGxlbiArIHR1bm5lbC1cXHUwMDNlZW5jYXBfaGxlbjtcXG4xMDE2OlxcdFxcdGRldi1cXHUwMDNlbmVlZGVkX2hlYWRyb29tID0gdHVubmVsLVxcdTAwM2VobGVuICsgc2l6ZW9mKHR1bm5lbC1cXHUwMDNlcGFybXMuaXBoKTtcXG4xMDE3OlxcdFxcbjEwMTg6XFx0XFx0ZGV2LVxcdTAwM2VmZWF0dXJlc1xcdFxcdHw9IEdSRV9GRUFUVVJFUztcXG4xMDE5OlxcdFxcdGRldi1cXHUwMDNlaHdfZmVhdHVyZXNcXHR8PSBHUkVfRkVBVFVSRVM7XFxuMTAyMDpcXHRcXG4xMDIxOlxcdFxcdGRldi1cXHUwMDNlbGx0eCA9IHRydWU7XFxuMTAyMjpcXHRcXG4xMDIzOlxcdFxcdC8qIFRDUCBvZmZsb2FkIHdpdGggR1JFIFNFUSBpcyBub3Qgc3VwcG9ydGVkLCBub3IgY2FuIHdlIHN1cHBvcnQgMlxcbjEwMjQ6XFx0XFx0ICogbGV2ZWxzIG9mIG91dGVyIGhlYWRlcnMgcmVxdWlyaW5nIGFuIHVwZGF0ZS5cXG4xMDI1OlxcdFxcdCAqL1xcbjEwMjY6XFx0XFx0aWYgKHRlc3RfYml0KElQX1RVTk5FTF9TRVFfQklULCB0dW5uZWwtXFx1MDAzZXBhcm1zLm9fZmxhZ3MpKVxcbjEwMjc6XFx0XFx0XFx0cmV0dXJuO1xcbjEwMjg6XFx0XFx0aWYgKHRlc3RfYml0KElQX1RVTk5FTF9DU1VNX0JJVCwgdHVubmVsLVxcdTAwM2VwYXJtcy5vX2ZsYWdzKSBcXHUwMDI2XFx1MDAyNlxcbjEwMjk6XFx0XFx0ICAgIHR1bm5lbC1cXHUwMDNlZW5jYXAudHlwZSAhPSBUVU5ORUxfRU5DQVBfTk9ORSlcXG4xMDMwOlxcdFxcdFxcdHJldHVybjtcXG4xMDMxOlxcdFxcbjEwMzI6XFx0XFx0ZGV2LVxcdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTtcXG4xMDMzOlxcdFxcdGRldi1cXHUwMDNlaHdfZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7XFxuMTAzNDpcXHR9XFxuMTAzNTpcXHRcXG4xMDM2OlxcdHN0YXRpYyBpbnQgaXBncmVfdHVubmVsX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDY6MzQ6NTAuODM1NDYwNDQ0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MDQ5MzI0MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgR1JFIFR1bm5lbCBJbml0aWFsaXphdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIEdSRSB0dW5uZWwgaW5pdGlhbGl6YXRpb24gYW5kIGl0J3MgYSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBjaGFuZ2UsIHdoaWNoIGFsd2F5cyBncmFicyBteSBhdHRlbnRpb24uIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGluIHRoZSBmdW5jdGlvbiBgX19ncmVfdHVubmVsX2luaXQoKWAuIFdoYXQgdGhleSd2ZSBkb25lIGlzIHRoZXkndmUgbW92ZWQgYGRldi1cdTAwM2VsbHR4ID0gdHJ1ZTtgICpiZWZvcmUqIHRoZSBjb25kaXRpb25hbCBgcmV0dXJuYCBzdGF0ZW1lbnRzLiBUaGF0J3MgYSBnb29kIGZpcnN0IG1vdmUuXG5cbkVzc2VudGlhbGx5LCBieSBkb2luZyB0aGlzLCB0aGV5J3JlIGd1YXJhbnRlZWluZyB0aGF0IHRoZSBgZGV2LVx1MDAzZWxsdHhgIGZsYWcgaXMgc2V0IHRvIGB0cnVlYCDigJMgdGhhdCBsb2NrbGVzcyB0cmFuc21pc3Npb24gaXMgZW5hYmxlZCDigJMgKnJlZ2FyZGxlc3MqIG9mIHdoZXRoZXIgdGhlIGZ1bmN0aW9uIGhpdHMgYW4gZWFybHkgZXhpdC4gVGhhdCdzIGtleS4gVGhpcyBtZWFucyB0aGF0IGV2ZW4gaWYgdGhlcmUncyBhIHByb2JsZW0gd2l0aCBzZXF1ZW5jZSBudW1iZXJzIG9yIGNoZWNrc3VtcyB3aXRoIGVuY2Fwc3VsYXRpb24gKHRoaW5ncyB0aGF0IG1pZ2h0IHRyaWdnZXIgdGhvc2UgZWFybHkgcmV0dXJucyksIGxvY2tsZXNzIFRYIHdpbGwgYmUgZW5hYmxlZC4gSXQncyBhIHN1YnRsZSBidXQgaW1wb3J0YW50IHBpZWNlIG9mIGxvZ2ljLlxuXG5NeSBtYWluIGZvY3VzIGhlcmUsIGlzIGlmIGl0IGVmZmVjdHMgYGlwZ3JlX3R1bm5lbF9pbml0YCBvciBgaXBncmVfbmV3bGlua2AgZnVuY3Rpb25hbGl0eSwgd2hpY2ggaXQgZG9lc24ndCBzZWVtIHRvLiBJIHdpbGwgYWRkIHRoaXMgdG8gbXkgbWVudGFsIGNoZWNrcy5cblxuQWxyaWdodCwgc2VlbXMgZ29vZC4gSSdsbCBtYWtlIHN1cmUgdG8gZ2V0IHRoaXMgY2hlY2tlZCBhbmQgbWVyZ2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDEzLCJPdXRwdXRUb2tlbnMiOjExNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA2OjM0OjU1Ljc0MDM5NTc0NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTQ2ODY1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0lQR1JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19ncmVfdHVubmVsX2luaXRcIixcbiAgICBcImlwZ3JlX3R1bm5lbF9pbml0XCIsXG4gICAgXCJpcGdyZV9uZXdsaW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW92ZXMgdGhlIGFzc2lnbm1lbnQgb2YgYGRldi1cXHUwMDNlbGx0eCA9IHRydWVgIGJlZm9yZSBlYXJseSByZXR1cm5zIGluIGBfX2dyZV90dW5uZWxfaW5pdCgpYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgZW5zdXJlcyBsb2NrbGVzcyBUWCBpcyBlbmFibGVkIGZvciBHUkUgdHVubmVscyBldmVuIHdoZW4gc2VxdWVuY2UgbnVtYmVycyBvciBjaGVja3N1bXMgd2l0aCBlbmNhcHN1bGF0aW9uIGFyZSB1c2VkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9JUEdSRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fZ3JlX3R1bm5lbF9pbml0XCIsXG4gICAgXCJpcGdyZV90dW5uZWxfaW5pdFwiLFxuICAgIFwiaXBncmVfbmV3bGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vdmVzIHRoZSBhc3NpZ25tZW50IG9mIGBkZXYtXFx1MDAzZWxsdHggPSB0cnVlYCBiZWZvcmUgZWFybHkgcmV0dXJucyBpbiBgX19ncmVfdHVubmVsX2luaXQoKWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGVuc3VyZXMgbG9ja2xlc3MgVFggaXMgZW5hYmxlZCBmb3IgR1JFIHR1bm5lbHMgZXZlbiB3aGVuIHNlcXVlbmNlIG51bWJlcnMgb3IgY2hlY2tzdW1zIHdpdGggZW5jYXBzdWxhdGlvbiBhcmUgdXNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkq88r[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-10 06:11:02 +0000 UTC FinishedAt: 2026-07-10 06:34:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "fe3e786ef4eb6e47d2901f568a27bd920477bbe9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_IPGRE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "fe3e786ef4eb6e47d2901f568a27bd920477bbe9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_IPGRE" ], "series_id": "c9d84659-b70f-48d2-b3d1-3f53be705a7c" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__gre_tunnel_init", "ipgre_tunnel_init", "ipgre_newlink" ], "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+CgkJCTx0ZD4yMDI2LzA3LzEwIDA2OjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fZ3JlX3R1bm5lbF9pbml0JiMzNDssCiAgICAmIzM0O2lwZ3JlX3R1bm5lbF9pbml0JiMzNDssCiAgICAmIzM0O2lwZ3JlX25ld2xpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW92ZXMgdGhlIGFzc2lnbm1lbnQgb2YgYGRldi1cdTAwM2VsbHR4ID0gdHJ1ZWAgYmVmb3JlIGVhcmx5IHJldHVybnMgaW4gYF9fZ3JlX3R1bm5lbF9pbml0KClgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBlbnN1cmVzIGxvY2tsZXNzIFRYIGlzIGVuYWJsZWQgZm9yIEdSRSB0dW5uZWxzIGV2ZW4gd2hlbiBzZXF1ZW5jZSBudW1iZXJzIG9yIGNoZWNrc3VtcyB3aXRoIGVuY2Fwc3VsYXRpb24gYXJlIHVzZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDY6MzM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA4Nzc0ODQ2NTU3ZmMzYjVhMDVjZDM0MDQ4OTEwMDkxNjA0OTZjYzFmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTAgMDY6MzM6NDMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfZ3JlLmMgYi9uZXQvaXB2NC9pcF9ncmUuY1xuaW5kZXggM2VmZGZiNGZmYTIxMTIuLjBiYTFlOTRlOTAxMmM2IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaXBfZ3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2lwX2dyZS5jXG5AQCAtMTAxOCw2ICYjNDM7MTAxOCw4IEBAIHN0YXRpYyB2b2lkIF9fZ3JlX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRkZXYtXHUwMDNlZmVhdHVyZXNcdFx0fD0gR1JFX0ZFQVRVUkVTO1xuIFx0ZGV2LVx1MDAzZWh3X2ZlYXR1cmVzXHR8PSBHUkVfRkVBVFVSRVM7XG4gXG4mIzQzO1x0ZGV2LVx1MDAzZWxsdHggPSB0cnVlO1xuJiM0MztcbiBcdC8qIFRDUCBvZmZsb2FkIHdpdGggR1JFIFNFUSBpcyBub3Qgc3VwcG9ydGVkLCBub3IgY2FuIHdlIHN1cHBvcnQgMlxuIFx0ICogbGV2ZWxzIG9mIG91dGVyIGhlYWRlcnMgcmVxdWlyaW5nIGFuIHVwZGF0ZS5cbiBcdCAqL1xuQEAgLTEwMjksOCAmIzQzOzEwMzEsNiBAQCBzdGF0aWMgdm9pZCBfX2dyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIFx0ZGV2LVx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFO1xuIFx0ZGV2LVx1MDAzZWh3X2ZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFO1xuLVxuLVx0ZGV2LVx1MDAzZWxsdHggPSB0cnVlO1xuIH1cbiBcbiBzdGF0aWMgaW50IGlwZ3JlX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDY6MzM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0lQR1JFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19ncmVfdHVubmVsX2luaXQmIzM0OywKICAgICYjMzQ7aXBncmVfdHVubmVsX2luaXQmIzM0OywKICAgICYjMzQ7aXBncmVfbmV3bGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb3ZlcyB0aGUgYXNzaWdubWVudCBvZiBgZGV2LVx1MDAzZWxsdHggPSB0cnVlYCBiZWZvcmUgZWFybHkgcmV0dXJucyBpbiBgX19ncmVfdHVubmVsX2luaXQoKWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGVuc3VyZXMgbG9ja2xlc3MgVFggaXMgZW5hYmxlZCBmb3IgR1JFIHR1bm5lbHMgZXZlbiB3aGVuIHNlcXVlbmNlIG51bWJlcnMgb3IgY2hlY2tzdW1zIHdpdGggZW5jYXBzdWxhdGlvbiBhcmUgdXNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODc3NDg0NjU1N2ZjM2I1YTA1Y2QzNDA0ODkxMDA5MTYwNDk2Y2MxZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDEwIDA2OjMzOjQzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfZ3JlLmMgYi9uZXQvaXB2NC9pcF9ncmUuYwppbmRleCAzZWZkZmI0ZmZhMjExMi4uMGJhMWU5NGU5MDEyYzYgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2lwX2dyZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2lwX2dyZS5jCkBAIC0xMDE4LDYgJiM0MzsxMDE4LDggQEAgc3RhdGljIHZvaWQgX19ncmVfdHVubmVsX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAlkZXYtJmd0O2ZlYXR1cmVzCQl8PSBHUkVfRkVBVFVSRVM7CiAJZGV2LSZndDtod19mZWF0dXJlcwl8PSBHUkVfRkVBVFVSRVM7CiAKJiM0MzsJZGV2LSZndDtsbHR4ID0gdHJ1ZTsKJiM0MzsKIAkvKiBUQ1Agb2ZmbG9hZCB3aXRoIEdSRSBTRVEgaXMgbm90IHN1cHBvcnRlZCwgbm9yIGNhbiB3ZSBzdXBwb3J0IDIKIAkgKiBsZXZlbHMgb2Ygb3V0ZXIgaGVhZGVycyByZXF1aXJpbmcgYW4gdXBkYXRlLgogCSAqLwpAQCAtMTAyOSw4ICYjNDM7MTAzMSw2IEBAIHN0YXRpYyB2b2lkIF9fZ3JlX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAKIAlkZXYtJmd0O2ZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFOwogCWRldi0mZ3Q7aHdfZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7Ci0KLQlkZXYtJmd0O2xsdHggPSB0cnVlOwogfQogCiBzdGF0aWMgaW50IGlwZ3JlX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA2OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MjgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA4MDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBHUkUgVHVubmVsIEluaXRpYWxpemF0aW9uIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9pcHY0L2lwX2dyZS5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgX19ncmVfdHVubmVsX2luaXQoKWAgZnVuY3Rpb24uIFRoZSBjb3JlIGNoYW5nZSBpcyBtb3ZpbmcgYGRldi0mZ3Q7bGx0eCA9IHRydWU7YCBhIGZldyBsaW5lcyB1cC4gTGV0IG1lIGRpZyBpbnRvIHRoaXMuIEluaXRpYWxseSwgSSB3YXMgdGhpbmtpbmcgaXQmIzM5O3MgYWJvdXQgc2V0dGluZyB0aGUgbGluayBsYXllciB0cmFuc21pdCBmbGFnLCBidXQgbGV0IG1lIGNoZWNrIHRoZSBjb250ZXh0LgoKTG9va2luZyBhdCB0aGUgY29kZSwgaXQmIzM5O3Mgc2V0dGluZyB1cCB0aGUgR1JFIHR1bm5lbCB3aXRoIGNhbGN1bGF0aW9ucyBvZiBoZWFkZXIgbGVuZ3RocyBhbmQgTVRVLiBUaGVuLCBpdCYjMzk7cyBzZXR0aW5nIHNvbWUgZmVhdHVyZXMgYW5kIGhhcmR3YXJlIGZlYXR1cmVzLiBUaGUgb3JpZ2luYWwgcGxhY2VtZW50IG9mIGBkZXYtJmd0O2xsdHggPSB0cnVlO2Agd2FzIGF0IHRoZSAqZW5kKiBvZiB0aGUgZnVuY3Rpb24uIFRoZW4gdGhlcmUmIzM5O3MgYW4gYGlmYCBibG9jayB0aGF0IGxvb2tzIGF0IGBUVU5ORUxfU0VRYCBmbGFncyBhbmQsIGluc2lkZSB0aGF0LCBjb25kaXRpb25hbCBsb2dpYyByZWxhdGVkIHRvIGBUVU5ORUxfQ1NVTWAuIEhtbSwgaXQgaW5jbHVkZXMgdGhpcyBsaW5lOgoKYGBgYwoJCWlmICh0dW5uZWwtJmd0O3Bhcm1zLm9fZmxhZ3MgJmFtcDsgVFVOTkVMX0NTVU0pCgkJCWRldi0mZ3Q7ZmVhdHVyZXMgJmFtcDs9IH5ORVRJRl9GX0xMVFg7CmBgYAoKUmlnaHQsIHRoYXQmIzM5O3MgY2xlYXJpbmcgdGhlIGBORVRJRl9GX0xMVFhgIGZsYWcgZnJvbSB0aGUgYGRldi0mZ3Q7ZmVhdHVyZXNgIGZpZWxkLiBCdXQgdGhlbiBJIHJlbWVtYmVyIGBkZXYtJmd0O2xsdHhgIGlzIGEgYm9vbGVhbiBmbGFnLiBIYW5nIG9uLCB0aGUgYGlmYCBibG9jayAqb25seSogbW9kaWZpZXMgYGRldi0mZ3Q7ZmVhdHVyZXNgLCBub3QgYGRldi0mZ3Q7bGx0eGAgZGlyZWN0bHkuIFNvIGBkZXYtJmd0O2xsdHhgIGFuZCBgTkVUSUZfRl9MTFRYYCBhcmUgYWN0dWFsbHkgc2VwYXJhdGUgY29uY2VybnMuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgdGhlIG1vdmUgbWlnaHQgYmUgdG8gZW5zdXJlIGBkZXYtJmd0O2xsdHhgIGlzIGRlZmluaXRlbHkgc2V0ICpiZWZvcmUqIHRoZSBjb25kaXRpb25hbCBjaGVjay4gSG93ZXZlciwgdGhlIGNvbmRpdGlvbmFsIHN0YXRlbWVudCBpcyBqdXN0IGFib3V0IG1hbmlwdWxhdGluZyB0aGUgZmVhdHVyZSBmbGFnLiBQZXJoYXBzIHRoZSBpbnRlbnQgd2FzIHRvIGRpc2FibGUgdGhlIExMVFggZmVhdHVyZT8gTm8sIHRoZSBib29sZWFuIGFuZCB0aGUgZmVhdHVyZSBmbGFnIGFyZSBjb21wbGV0ZWx5IHNlcGFyYXRlLiBBbmQgdGhlIHBhdGNoIGlzIG9ubHkgbW92aW5nIHRoZSBhc3NpZ25tZW50IG9mIHRoZSBib29sZWFuIHRvIGJlIGVhcmxpZXIgaW4gdGhlIGZ1bmN0aW9uLCB3aGlsZSBsZWF2aW5nIHRoZSBjb25kaXRpb25hbCBjaGVjayBhbmQgZmVhdHVyZSBtb2RpZmljYXRpb24gaW50YWN0LgoKU28gdGhlIG1haW4gdGhpbmcgdG8gdW5kZXJzdGFuZCBpcyB0aGF0IHRoZSBwYXRjaCBzZWVtcyB0byBiZSBtb3ZpbmcgdGhlIHNldHRpbmcgb2YgdGhlIGJvb2xlYW4gYGRldi0mZ3Q7bGx0eGAgdG8gYW4gZWFybGllciBwb3NpdGlvbiwgYnV0IHRoZSBgZGV2LSZndDtmZWF0dXJlc2AgbWFuaXB1bGF0aW9uIHJlbWFpbnMgdGhlIHNhbWUuIEkgc3VwcG9zZSBgTkVUSUZfRl9MTFRYYCBjb3VsZCBiZSBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGBkZXYtJmd0O2xsdHhgLgpMZXQgbWUgbG9vayBhdCBgbmV0L2lwdjQvaXBfZ3JlLmNgIG9uY2UgbW9yZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNjozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L2lwX2dyZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTAwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMDAwOlx0c3RhdGljIHZvaWQgaXBncmVfdHVubmVsX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4xMDAxOlx0e1xuMTAwMjpcdFx0ZGV2LVx1MDAzZW5ldGRldl9vcHNcdFx0PSBcdTAwMjZpcGdyZV9uZXRkZXZfb3BzO1xuMTAwMzpcdFx0ZGV2LVx1MDAzZXR5cGVcdFx0PSBBUlBIUkRfSVBHUkU7XG4xMDA0Olx0XHRpcF90dW5uZWxfc2V0dXAoZGV2LCBpcGdyZV9uZXRfaWQpO1xuMTAwNTpcdH1cbjEwMDY6XHRcbjEwMDc6XHRzdGF0aWMgdm9pZCBfX2dyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuMTAwODpcdHtcbjEwMDk6XHRcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbDtcbjEwMTA6XHRcbjEwMTE6XHRcdHR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XG4xMDEyOlx0XHR0dW5uZWwtXHUwMDNldHVuX2hsZW4gPSBncmVfY2FsY19obGVuKHR1bm5lbC1cdTAwM2VwYXJtcy5vX2ZsYWdzKTtcbjEwMTM6XHRcdHR1bm5lbC1cdTAwM2VwYXJtcy5pcGgucHJvdG9jb2wgPSBJUFBST1RPX0dSRTtcbjEwMTQ6XHRcbjEwMTU6XHRcdHR1bm5lbC1cdTAwM2VobGVuID0gdHVubmVsLVx1MDAzZXR1bl9obGVuICYjNDM7IHR1bm5lbC1cdTAwM2VlbmNhcF9obGVuO1xuMTAxNjpcdFx0ZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbSA9IHR1bm5lbC1cdTAwM2VobGVuICYjNDM7IHNpemVvZih0dW5uZWwtXHUwMDNlcGFybXMuaXBoKTtcbjEwMTc6XHRcbjEwMTg6XHRcdGRldi1cdTAwM2VmZWF0dXJlc1x0XHR8PSBHUkVfRkVBVFVSRVM7XG4xMDE5Olx0XHRkZXYtXHUwMDNlaHdfZmVhdHVyZXNcdHw9IEdSRV9GRUFUVVJFUztcbjEwMjA6XHRcbjEwMjE6XHRcdGRldi1cdTAwM2VsbHR4ID0gdHJ1ZTtcbjEwMjI6XHRcbjEwMjM6XHRcdC8qIFRDUCBvZmZsb2FkIHdpdGggR1JFIFNFUSBpcyBub3Qgc3VwcG9ydGVkLCBub3IgY2FuIHdlIHN1cHBvcnQgMlxuMTAyNDpcdFx0ICogbGV2ZWxzIG9mIG91dGVyIGhlYWRlcnMgcmVxdWlyaW5nIGFuIHVwZGF0ZS5cbjEwMjU6XHRcdCAqL1xuMTAyNjpcdFx0aWYgKHRlc3RfYml0KElQX1RVTk5FTF9TRVFfQklULCB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncykpXG4xMDI3Olx0XHRcdHJldHVybjtcbjEwMjg6XHRcdGlmICh0ZXN0X2JpdChJUF9UVU5ORUxfQ1NVTV9CSVQsIHR1bm5lbC1cdTAwM2VwYXJtcy5vX2ZsYWdzKSBcdTAwMjZcdTAwMjZcbjEwMjk6XHRcdCAgICB0dW5uZWwtXHUwMDNlZW5jYXAudHlwZSAhPSBUVU5ORUxfRU5DQVBfTk9ORSlcbjEwMzA6XHRcdFx0cmV0dXJuO1xuMTAzMTpcdFxuMTAzMjpcdFx0ZGV2LVx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFO1xuMTAzMzpcdFx0ZGV2LVx1MDAzZWh3X2ZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFO1xuMTAzNDpcdH1cbjEwMzU6XHRcbjEwMzY6XHRzdGF0aWMgaW50IGlwZ3JlX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4xMDM3Olx0e1xuMTAzODpcdFx0c3RydWN0IGlwX3R1bm5lbCAqdHVubmVsID0gbmV0ZGV2X3ByaXYoZGV2KTtcbjEwMzk6XHRcdHN0cnVjdCBpcGhkciAqaXBoID0gXHUwMDI2dHVubmVsLVx1MDAzZXBhcm1zLmlwaDtcbjEwNDA6XHRcbjEwNDE6XHRcdF9fZ3JlX3R1bm5lbF9pbml0KGRldik7XG4xMDQyOlx0XG4xMDQzOlx0XHRfX2Rldl9hZGRyX3NldChkZXYsIFx1MDAyNmlwaC1cdTAwM2VzYWRkciwgNCk7XG4xMDQ0Olx0XHRtZW1jcHkoZGV2LVx1MDAzZWJyb2FkY2FzdCwgXHUwMDI2aXBoLVx1MDAzZWRhZGRyLCA0KTtcbjEwNDU6XHRcbjEwNDY6XHRcdGRldi1cdTAwM2VmbGFnc1x0XHQ9IElGRl9OT0FSUDtcbjEwNDc6XHRcdG5ldGlmX2tlZXBfZHN0KGRldik7XG4xMDQ4Olx0XHRkZXYtXHUwMDNlYWRkcl9sZW5cdFx0PSA0O1xuMTA0OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA2OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNjYKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA0MjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBHUkUgVHVubmVsIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIGBfX2dyZV90dW5uZWxfaW5pdGAgZnVuY3Rpb24sIGFuZCBJJiMzOTt2ZSBzcG90dGVkIHNvbWV0aGluZy4gVGhvc2UgYGlmYCBibG9ja3Mgd2l0aCBgcmV0dXJuO2AgYXJlIHRoZSBrZXkhIEl0IHR1cm5zIG91dCB0aGF0IGJlY2F1c2Ugb2YgdGhvc2UgZWFybHkgcmV0dXJucywgdGhlIGNydWNpYWwgbGluZSBgZGV2LSZndDtsbHR4ID0gdHJ1ZTtgIGF0IHRoZSBlbmQgd2FzIGJlaW5nIHNraXBwZWQgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zLiBTcGVjaWZpY2FsbHksIGlmIHRoZSB0dW5uZWwgd2FzIGNvbmZpZ3VyZWQgd2l0aCBlaXRoZXIgU0VRIG9yIENTVU0mIzQzO0VOQ0FQIGZsYWdzLCBgZGV2LSZndDtsbHR4YCB3YXNuJiMzOTt0IGJlaW5nIHNldC4gTm93IHRoYXQgSSYjMzk7dmUgbW92ZWQgdGhhdCBsaW5lIHVwLCBpdCB3aWxsIGV4ZWN1dGUgdW5jb25kaXRpb25hbGx5LgoKVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGtlcm5lbCYjMzk7cyBuZXR3b3JraW5nIHN0YWNrLCBhZmZlY3RpbmcgSVB2NCBHUkUgdHVubmVscy4gSSByZW1lbWJlciBgZGV2LSZndDtsbHR4YCBjb250cm9scyBsb2NrbGVzcyB0cmFuc21pc3Npb24sIHNvIGlmIGl0JiMzOTtzIHNldCB0byBgdHJ1ZWAsIHRoZSBxZGlzYyBsb2NrIGlzICpub3QqIHRha2VuIGR1cmluZyB0cmFuc21pc3Npb24uCgpTaW5jZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGl0IHNjcmVhbXMgJiMzNDtmdXp6IG1lISYjMzQ7IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZnVuY3Rpb25zIGFyZSByZWxldmFudCB0byBmdXp6LgoKYF9fZ3JlX3R1bm5lbF9pbml0YCBpcyBhbiBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiwgc28gdGhhdCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgc2hvdWxkIHByb2JhYmx5IGFsc28gbG9vayBhdCByZWxhdGVkIGZ1bmN0aW9ucyBsaWtlIGBpcGdyZV90dW5uZWxfaW5pdGAsIGFuZCBgaXBncmVfbmV3bGlua2AgYXMgdGhleSB3b3VsZCBhbHNvIGluaXRpYWxpemUgdHVubmVscy4gVGhlIHRyYW5zbWlzc2lvbiBmdW5jdGlvbiwgYGlwZ3JlX3htaXRgLCBtaWdodCBiZSByZWxhdGVkIGFzIHdlbGwsIGFzIHRoYXQmIzM5O3MgdGhlIHBhdGggdGhhdCB3b3VsZCB1c2UgYGRldi0mZ3Q7bGx0eGAsIGJ1dCBzaW5jZSB0aGlzIGlzIGEgaG90IHBhdGgsIEkgbmVlZCB0byBzdGF5IGF3YXkgZnJvbSBpdC4KClNvLCBJIHdpbGwgZm9jdXMgb24gYGlwZ3JlX25ld2xpbmtgLCBgaXBncmVfdHVubmVsX2luaXRgLCBhbmQgYF9fZ3JlX3R1bm5lbF9pbml0YC4gSSB0aGluayB0aGVzZSB3b3VsZCBiZSB0aGUgbW9zdCBlZmZlY3RpdmUgZnVuY3Rpb25zIHRvIGZ1enohCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDY6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXBncmVfbmV3bGluayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9pcF9ncmUuYz0xMzkzPXN0YXRpYyBpbnRcbm5ldC9pcHY0L2lwX2dyZS5jOjEzOTQ6aXBncmVfbmV3bGlua19lbmNhcF9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICpkYXRhW10pXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzk1LXtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDA4LVxubmV0L2lwdjQvaXBfZ3JlLmM6MTQwOTpzdGF0aWMgaW50IGlwZ3JlX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9pcHY0L2lwX2dyZS5jLTE0MTAtXHRcdFx0IHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTQxOC1cbm5ldC9pcHY0L2lwX2dyZS5jOjE0MTk6XHRlcnIgPSBpcGdyZV9uZXdsaW5rX2VuY2FwX3NldHVwKGRldiwgZGF0YSk7XG5uZXQvaXB2NC9pcF9ncmUuYy0xNDIwLVx0aWYgKGVycilcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xNDMwPXN0YXRpYyBpbnQgZXJzcGFuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDM5LVxubmV0L2lwdjQvaXBfZ3JlLmM6MTQ0MDpcdGVyciA9IGlwZ3JlX25ld2xpbmtfZW5jYXBfc2V0dXAoZGV2LCBkYXRhKTtcbm5ldC9pcHY0L2lwX2dyZS5jLTE0NDEtXHRpZiAoZXJyKVxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTE0NTE9c3RhdGljIGludCBpcGdyZV9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTQ2Mi1cbm5ldC9pcHY0L2lwX2dyZS5jOjE0NjM6XHRlcnIgPSBpcGdyZV9uZXdsaW5rX2VuY2FwX3NldHVwKGRldiwgZGF0YSk7XG5uZXQvaXB2NC9pcF9ncmUuYy0xNDY0LVx0aWYgKGVycilcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xNDgzPXN0YXRpYyBpbnQgZXJzcGFuX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDk0LVxubmV0L2lwdjQvaXBfZ3JlLmM6MTQ5NTpcdGVyciA9IGlwZ3JlX25ld2xpbmtfZW5jYXBfc2V0dXAoZGV2LCBkYXRhKTtcbm5ldC9pcHY0L2lwX2dyZS5jLTE0OTYtXHRpZiAoZXJyKVxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTE2NzQ9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIGlwZ3JlX2xpbmtfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG4tLVxubmV0L2lwdjQvaXBfZ3JlLmMtMTY4MC1cdC52YWxpZGF0ZVx0PSBpcGdyZV90dW5uZWxfdmFsaWRhdGUsXG5uZXQvaXB2NC9pcF9ncmUuYzoxNjgxOlx0Lm5ld2xpbmtcdD0gaXBncmVfbmV3bGluayxcbm5ldC9pcHY0L2lwX2dyZS5jLTE2ODItXHQuY2hhbmdlbGlua1x0PSBpcGdyZV9jaGFuZ2VsaW5rLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jPTE2ODk9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIGlwZ3JlX3RhcF9vcHMgX19yZWFkX21vc3RseSA9IHtcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjk1LVx0LnZhbGlkYXRlXHQ9IGlwZ3JlX3RhcF92YWxpZGF0ZSxcbm5ldC9pcHY0L2lwX2dyZS5jOjE2OTY6XHQubmV3bGlua1x0PSBpcGdyZV9uZXdsaW5rLFxubmV0L2lwdjQvaXBfZ3JlLmMtMTY5Ny1cdC5jaGFuZ2VsaW5rXHQ9IGlwZ3JlX2NoYW5nZWxpbmssXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmM9MTcxOT1zdHJ1Y3QgbmV0X2RldmljZSAqZ3JldGFwX2ZiX2Rldl9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBjaGFyICpuYW1lLFxuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTE3NDAtXG5uZXQvaXB2NC9pcF9ncmUuYzoxNzQxOlx0ZXJyID0gaXBncmVfbmV3bGluayhkZXYsIFx1MDAyNnBhcmFtcywgTlVMTCk7XG5uZXQvaXB2NC9pcF9ncmUuYy0xNzQyLVx0aWYgKGVyciBcdTAwM2MgMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA2OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MjkKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqS2NvbmZpZyBEaXZlIGZvciBpcF9ncmUuYyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIHJlbGF0ZWQgdG8gYGlwX2dyZS5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgbW9kdWxlIGlzIGNvbnRyb2xsZWQgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGl0IGhhcy4gV2hhdCBhcmUgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBnb3Zlcm4gaXRzIGluY2x1c2lvbj8gQXJlIHRoZXJlIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgbmV0d29ya2luZyBmZWF0dXJlcyBvciBkcml2ZXJzIHRoYXQgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlcyBvciBrZXJuZWwgdmVyc2lvbnMgd2hlcmUgaXQmIzM5O3MgY29uZGl0aW9uYWxseSBlbmFibGVkPyBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgYmVoYXZpb3IgYW5kIGhvdyB0byBwcm9wZXJseSBjb25maWd1cmUgaXQgZm9yIGEgc3BlY2lmaWMgdGFyZ2V0LiBJIG5lZWQgdG8gdHJhY2UgdGhyb3VnaCB0aGUgcmVsZXZhbnQgS2NvbmZpZyBvcHRpb25zIHRvIGdldCB0aGUgd2hvbGUgcGljdHVyZS4gTGV0JiMzOTtzIHNlZSBpZiB0aGlzIHJldmVhbHMgYW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCBteSB0YXJnZXQgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNjozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcF9ncmVcXC5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L01ha2VmaWxlPTI5PW9iai0kKENPTkZJR19ORVRfSVBHUkVfREVNVVgpICYjNDM7PSBncmUub1xubmV0L2lwdjQvTWFrZWZpbGU6MzA6b2JqLSQoQ09ORklHX05FVF9JUEdSRSkgJiM0Mzs9IGlwX2dyZS5vXG5uZXQvaXB2NC9NYWtlZmlsZS0zMS11ZHBfdHVubmVsLXkgOj0gdWRwX3R1bm5lbF9jb3JlLm8gdWRwX3R1bm5lbF9uaWMub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA2OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxMTkKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBgQ09ORklHX05FVF9JUEdSRWAuIFRoYXQmIzM5O3Mgb3VyIHN0YXJ0aW5nIHBvaW50LiBJIGtub3cgdGhhdCBjb25maWcgcHJldHR5IHdlbGwsIHNvIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgcmVsYXRlZCBvciBkZXBlbmRlbnQgY29uZmlndXJhdGlvbnMgdGhhdCB3ZSBzaG91bGQgYWxzbyBiZSBhd2FyZSBvZi4gV2hhdCBvdGhlciBuZXR3b3JrIHNldHRpbmdzIG1pZ2h0IGJlIGluIHBsYXkgaGVyZT8gSXQmIzM5O3MgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIGJyb2FkZXIgY29udGV4dCBhbmQgcG90ZW50aWFsIGludGVyYWN0aW9ucy4gV2UgZG9uJiMzOTt0IHdhbnQgdG8gbWFrZSBhbiBpc29sYXRlZCBjaGFuZ2Ugd2l0aG91dCBjb25zaWRlcmluZyBpdHMgcmlwcGxlIGVmZmVjdHMuIFdlIG5lZWQgdG8gYmUgZXhoYXVzdGl2ZS4gVGltZSB0byBkaXZlIGludG8gdGhlIG90aGVyIHJlbGF0ZWQgY29uZmlncywgbGlrZSB0aGUgb25lcyBkZWFsaW5nIHdpdGggdHVubmVscyBvciBlbmNhcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDY6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9JUEdSRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnPTE2Mj1jb25maWcgTkVUX0lQSVBcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTE3OS1cbm5ldC9pcHY0L0tjb25maWc6MTgwOmNvbmZpZyBORVRfSVBHUkVfREVNVVhcbm5ldC9pcHY0L0tjb25maWctMTgxLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEdSRSBkZW11bHRpcGxleGVyXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZz0xODY9Y29uZmlnIE5FVF9JUF9UVU5ORUxcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTE5MS1cbm5ldC9pcHY0L0tjb25maWc6MTkyOmNvbmZpZyBORVRfSVBHUkVcbm5ldC9pcHY0L0tjb25maWctMTkzLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEdSRSB0dW5uZWxzIG92ZXIgSVBcJiMzNDtcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTIwNi1cbm5ldC9pcHY0L0tjb25maWc6MjA3OmNvbmZpZyBORVRfSVBHUkVfQlJPQURDQVNUXG5uZXQvaXB2NC9LY29uZmlnLTIwOC1cdGJvb2wgXCYjMzQ7SVA6IGJyb2FkY2FzdCBHUkUgb3ZlciBJUFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNjozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTM3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgR1JFIFR1bm5lbCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIHNldHRpbmcgYXQgcGxheSBoZXJlIGlzIGBORVRfSVBHUkVgLiBNeSBpbml0aWFsIGZvY3VzIG5lZWRzIHRvIGJlIG9uIHRoZXNlIHRocmVlIGZ1bmN0aW9uczogYF9fZ3JlX3R1bm5lbF9pbml0YCwgYGlwZ3JlX3R1bm5lbF9pbml0YCwgYW5kIGBpcGdyZV9uZXdsaW5rYC4gSSBrbm93IHRoZXNlIGFyZSB3aGVyZSB0aGUgdHVubmVsIGluaXRpYWxpemF0aW9uIGxvZ2ljIGxpdmVzLCBzbyB0aGV5JiMzOTtyZSB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludHMuCgpXYWl0LCBob2xkIG9uIGEgc2Vjb25kLi4uIHRoZSBjb3JlIGlzc3VlIGlzIGBkZXYtJmd0O2xsdHhgIG5vdCBiZWluZyBzZXQgdW5kZXIgc3BlY2lmaWMgY29uZGl0aW9uczogd2hlbiBgSVBfVFVOTkVMX1NFUV9CSVRgIG9yIGBJUF9UVU5ORUxfQ1NVTV9CSVRgIGFyZSBzZXQgKmFuZCogZW5jYXBzdWxhdGlvbiBpcyBhY3RpdmUuIFRoYXQgbWFrZXMgdGhpcyBhIHByZXR0eSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIGl0IGRlZmluaXRlbHkgaW1wYWN0cyBsb2NrbGVzcyB0cmFuc21pdC4gVGhlIHBvdGVudGlhbCBmb3IgYSBjb25jdXJyZW5jeSBpc3N1ZSBpcyBkZWZpbml0ZWx5IHRoZXJlLgoKSSYjMzk7bSB0aGlua2luZyB0aGlzIGlzIHdvcnRoIGZ1enppbmcsIHRoYXQmIzM5O3MgdGhlIG5leHQgbG9naWNhbCBzdGVwLiBXZSBuZWVkIHRvIGV4cG9zZSB0aGlzIGFuZCBzZWUgaG93IGl0IGhvbGRzIHVwLgoKTGV0IG1lIGp1c3QgZG8gYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgaW4gcGxheSBoZXJlLiBgTkVUX0lQR1JFYCBkZXBlbmRzIG9uIGBORVRfSVBHUkVfREVNVVhgPyBCZXR0ZXIgY2hlY2sgdGhhdCBpbiB0aGUgYG5ldC9pcHY0L0tjb25maWdgIGZpbGUgYW5kIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDA2OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTgwOlx0Y29uZmlnIE5FVF9JUEdSRV9ERU1VWFxuIDE4MTpcdFx0dHJpc3RhdGUgXCYjMzQ7SVA6IEdSRSBkZW11bHRpcGxleGVyXCYjMzQ7XG4gMTgyOlx0XHRoZWxwXG4gMTgzOlx0XHQgIFRoaXMgaXMgaGVscGVyIG1vZHVsZSB0byBkZW11bHRpcGxleCBHUkUgcGFja2V0cyBvbiBHUkUgdmVyc2lvbiBmaWVsZCBjcml0ZXJpYS5cbiAxODQ6XHRcdCAgUmVxdWlyZWQgYnkgaXBfZ3JlIGFuZCBwcHRwIG1vZHVsZXMuXG4gMTg1Olx0XG4gMTg2Olx0Y29uZmlnIE5FVF9JUF9UVU5ORUxcbiAxODc6XHRcdHRyaXN0YXRlXG4gMTg4Olx0XHRzZWxlY3QgRFNUX0NBQ0hFXG4gMTg5Olx0XHRzZWxlY3QgR1JPX0NFTExTXG4gMTkwOlx0XHRkZWZhdWx0IG5cbiAxOTE6XHRcbiAxOTI6XHRjb25maWcgTkVUX0lQR1JFXG4gMTkzOlx0XHR0cmlzdGF0ZSBcJiMzNDtJUDogR1JFIHR1bm5lbHMgb3ZlciBJUFwmIzM0O1xuIDE5NDpcdFx0ZGVwZW5kcyBvbiBORVRfSVBHUkVfREVNVVhcbiAxOTU6XHRcdHNlbGVjdCBORVRfSVBfVFVOTkVMXG4gMTk2Olx0XHRoZWxwXG4gMTk3Olx0XHQgIFR1bm5lbGluZyBtZWFucyBlbmNhcHN1bGF0aW5nIGRhdGEgb2Ygb25lIHByb3RvY29sIHR5cGUgd2l0aGluXG4gMTk4Olx0XHQgIGFub3RoZXIgcHJvdG9jb2wgYW5kIHNlbmRpbmcgaXQgb3ZlciBhIGNoYW5uZWwgdGhhdCB1bmRlcnN0YW5kcyB0aGVcbiAxOTk6XHRcdCAgZW5jYXBzdWxhdGluZyBwcm90b2NvbC4gVGhpcyBwYXJ0aWN1bGFyIHR1bm5lbGluZyBkcml2ZXIgaW1wbGVtZW50c1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNjozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjgxCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKk1ha2luZyBTdXJlIEdSRSBUdW5uZWxzIGFyZSBQcm9wZXJseSBJbml0aWFsaXplZCoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBORVRfSVBHUkVgIHJlcXVpcmVzIGBORVRfSVBHUkVfREVNVVhgLiBSaWdodCwgbWFrZXMgc2Vuc2UsIHNvIEkmIzM5O2xsIGJlIHN1cmUgdG8gaW5jbHVkZSBgTkVUX0lQR1JFYCBpbiBteSBgRW5hYmxlQ29uZmlnc2AuIEdvdHRhIGJlIGNhcmVmdWwgYWJvdXQgdGhlc2UgZGVwZW5kZW5jaWVzLiBOb3csIGxldCBtZSBqdXN0IGdvIGJhY2sgYW5kIGRvdWJsZS1jaGVjayBgX19ncmVfdHVubmVsX2luaXRgLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIGNyaXRpY2FsIGluIHRoZSB0dW5uZWwgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gSXTigJlzIGFsd2F5cyB3b3J0aCBhIHNlY29uZCBsb29rLCBlc3BlY2lhbGx5IHdpdGggc29tZXRoaW5nIGxpa2UgR1JFIHRoYXQgY2FuIGJlIGNvbXBsZXguIEkgbmVlZCB0byBlbnN1cmUgZXZlcnl0aGluZyBpcyBzZXQgdXAgY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNjozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L2lwX2dyZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTAwNywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMDA3Olx0c3RhdGljIHZvaWQgX19ncmVfdHVubmVsX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbjEwMDg6XHR7XG4xMDA5Olx0XHRzdHJ1Y3QgaXBfdHVubmVsICp0dW5uZWw7XG4xMDEwOlx0XG4xMDExOlx0XHR0dW5uZWwgPSBuZXRkZXZfcHJpdihkZXYpO1xuMTAxMjpcdFx0dHVubmVsLVx1MDAzZXR1bl9obGVuID0gZ3JlX2NhbGNfaGxlbih0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncyk7XG4xMDEzOlx0XHR0dW5uZWwtXHUwMDNlcGFybXMuaXBoLnByb3RvY29sID0gSVBQUk9UT19HUkU7XG4xMDE0Olx0XG4xMDE1Olx0XHR0dW5uZWwtXHUwMDNlaGxlbiA9IHR1bm5lbC1cdTAwM2V0dW5faGxlbiAmIzQzOyB0dW5uZWwtXHUwMDNlZW5jYXBfaGxlbjtcbjEwMTY6XHRcdGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20gPSB0dW5uZWwtXHUwMDNlaGxlbiAmIzQzOyBzaXplb2YodHVubmVsLVx1MDAzZXBhcm1zLmlwaCk7XG4xMDE3Olx0XG4xMDE4Olx0XHRkZXYtXHUwMDNlZmVhdHVyZXNcdFx0fD0gR1JFX0ZFQVRVUkVTO1xuMTAxOTpcdFx0ZGV2LVx1MDAzZWh3X2ZlYXR1cmVzXHR8PSBHUkVfRkVBVFVSRVM7XG4xMDIwOlx0XG4xMDIxOlx0XHRkZXYtXHUwMDNlbGx0eCA9IHRydWU7XG4xMDIyOlx0XG4xMDIzOlx0XHQvKiBUQ1Agb2ZmbG9hZCB3aXRoIEdSRSBTRVEgaXMgbm90IHN1cHBvcnRlZCwgbm9yIGNhbiB3ZSBzdXBwb3J0IDJcbjEwMjQ6XHRcdCAqIGxldmVscyBvZiBvdXRlciBoZWFkZXJzIHJlcXVpcmluZyBhbiB1cGRhdGUuXG4xMDI1Olx0XHQgKi9cbjEwMjY6XHRcdGlmICh0ZXN0X2JpdChJUF9UVU5ORUxfU0VRX0JJVCwgdHVubmVsLVx1MDAzZXBhcm1zLm9fZmxhZ3MpKVxuMTAyNzpcdFx0XHRyZXR1cm47XG4xMDI4Olx0XHRpZiAodGVzdF9iaXQoSVBfVFVOTkVMX0NTVU1fQklULCB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncykgXHUwMDI2XHUwMDI2XG4xMDI5Olx0XHQgICAgdHVubmVsLVx1MDAzZWVuY2FwLnR5cGUgIT0gVFVOTkVMX0VOQ0FQX05PTkUpXG4xMDMwOlx0XHRcdHJldHVybjtcbjEwMzE6XHRcbjEwMzI6XHRcdGRldi1cdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTtcbjEwMzM6XHRcdGRldi1cdTAwM2Vod19mZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTtcbjEwMzQ6XHR9XG4xMDM1Olx0XG4xMDM2Olx0c3RhdGljIGludCBpcGdyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAwNjozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDEzCgkJCQkJCQlvdXRwdXQ6IDExNgoJCQkJCQkJdGhvdWdodHM6IDE2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBHUkUgVHVubmVsIEluaXRpYWxpemF0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBHUkUgdHVubmVsIGluaXRpYWxpemF0aW9uIGFuZCBpdCYjMzk7cyBhIHN0cmFpZ2h0Zm9yd2FyZCBmdW5jdGlvbmFsIGNoYW5nZSwgd2hpY2ggYWx3YXlzIGdyYWJzIG15IGF0dGVudGlvbi4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgaW4gdGhlIGZ1bmN0aW9uIGBfX2dyZV90dW5uZWxfaW5pdCgpYC4gV2hhdCB0aGV5JiMzOTt2ZSBkb25lIGlzIHRoZXkmIzM5O3ZlIG1vdmVkIGBkZXYtJmd0O2xsdHggPSB0cnVlO2AgKmJlZm9yZSogdGhlIGNvbmRpdGlvbmFsIGByZXR1cm5gIHN0YXRlbWVudHMuIFRoYXQmIzM5O3MgYSBnb29kIGZpcnN0IG1vdmUuCgpFc3NlbnRpYWxseSwgYnkgZG9pbmcgdGhpcywgdGhleSYjMzk7cmUgZ3VhcmFudGVlaW5nIHRoYXQgdGhlIGBkZXYtJmd0O2xsdHhgIGZsYWcgaXMgc2V0IHRvIGB0cnVlYCDigJMgdGhhdCBsb2NrbGVzcyB0cmFuc21pc3Npb24gaXMgZW5hYmxlZCDigJMgKnJlZ2FyZGxlc3MqIG9mIHdoZXRoZXIgdGhlIGZ1bmN0aW9uIGhpdHMgYW4gZWFybHkgZXhpdC4gVGhhdCYjMzk7cyBrZXkuIFRoaXMgbWVhbnMgdGhhdCBldmVuIGlmIHRoZXJlJiMzOTtzIGEgcHJvYmxlbSB3aXRoIHNlcXVlbmNlIG51bWJlcnMgb3IgY2hlY2tzdW1zIHdpdGggZW5jYXBzdWxhdGlvbiAodGhpbmdzIHRoYXQgbWlnaHQgdHJpZ2dlciB0aG9zZSBlYXJseSByZXR1cm5zKSwgbG9ja2xlc3MgVFggd2lsbCBiZSBlbmFibGVkLiBJdCYjMzk7cyBhIHN1YnRsZSBidXQgaW1wb3J0YW50IHBpZWNlIG9mIGxvZ2ljLgoKTXkgbWFpbiBmb2N1cyBoZXJlLCBpcyBpZiBpdCBlZmZlY3RzIGBpcGdyZV90dW5uZWxfaW5pdGAgb3IgYGlwZ3JlX25ld2xpbmtgIGZ1bmN0aW9uYWxpdHksIHdoaWNoIGl0IGRvZXNuJiMzOTt0IHNlZW0gdG8uIEkgd2lsbCBhZGQgdGhpcyB0byBteSBtZW50YWwgY2hlY2tzLgoKQWxyaWdodCwgc2VlbXMgZ29vZC4gSSYjMzk7bGwgbWFrZSBzdXJlIHRvIGdldCB0aGlzIGNoZWNrZWQgYW5kIG1lcmdlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMDY6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fZ3JlX3R1bm5lbF9pbml0JiMzNDssCiAgICAmIzM0O2lwZ3JlX3R1bm5lbF9pbml0JiMzNDssCiAgICAmIzM0O2lwZ3JlX25ld2xpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW92ZXMgdGhlIGFzc2lnbm1lbnQgb2YgYGRldi1cdTAwM2VsbHR4ID0gdHJ1ZWAgYmVmb3JlIGVhcmx5IHJldHVybnMgaW4gYF9fZ3JlX3R1bm5lbF9pbml0KClgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBlbnN1cmVzIGxvY2tsZXNzIFRYIGlzIGVuYWJsZWQgZm9yIEdSRSB0dW5uZWxzIGV2ZW4gd2hlbiBzZXF1ZW5jZSBudW1iZXJzIG9yIGNoZWNrc3VtcyB3aXRoIGVuY2Fwc3VsYXRpb24gYXJlIHVzZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fZ3JlX3R1bm5lbF9pbml0JiMzNDssCiAgICAmIzM0O2lwZ3JlX3R1bm5lbF9pbml0JiMzNDssCiAgICAmIzM0O2lwZ3JlX25ld2xpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW92ZXMgdGhlIGFzc2lnbm1lbnQgb2YgYGRldi1cdTAwM2VsbHR4ID0gdHJ1ZWAgYmVmb3JlIGVhcmx5IHJldHVybnMgaW4gYF9fZ3JlX3R1bm5lbF9pbml0KClgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBlbnN1cmVzIGxvY2tsZXNzIFRYIGlzIGVuYWJsZWQgZm9yIEdSRSB0dW5uZWxzIGV2ZW4gd2hlbiBzZXF1ZW5jZSBudW1iZXJzIG9yIGNoZWNrc3VtcyB3aXRoIGVuY2Fwc3VsYXRpb24gYXJlIHVzZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNjozMzo0NC45MTE5ODk1NzJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTA2OTg5NDYxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfSVBHUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2dyZV90dW5uZWxfaW5pdFwiLFxuICAgIFwiaXBncmVfdHVubmVsX2luaXRcIixcbiAgICBcImlwZ3JlX25ld2xpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb3ZlcyB0aGUgYXNzaWdubWVudCBvZiBgZGV2LVxcdTAwM2VsbHR4ID0gdHJ1ZWAgYmVmb3JlIGVhcmx5IHJldHVybnMgaW4gYF9fZ3JlX3R1bm5lbF9pbml0KClgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBlbnN1cmVzIGxvY2tsZXNzIFRYIGlzIGVuYWJsZWQgZm9yIEdSRSB0dW5uZWxzIGV2ZW4gd2hlbiBzZXF1ZW5jZSBudW1iZXJzIG9yIGNoZWNrc3VtcyB3aXRoIGVuY2Fwc3VsYXRpb24gYXJlIHVzZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA2OjMzOjQ0LjkxMTk5NTIyMVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzYxOTE0MTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODc3NDg0NjU1N2ZjM2I1YTA1Y2QzNDA0ODkxMDA5MTYwNDk2Y2MxZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAxMCAwNjozMzo0MyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF9ncmUuYyBiL25ldC9pcHY0L2lwX2dyZS5jXFxuaW5kZXggM2VmZGZiNGZmYTIxMTIuLjBiYTFlOTRlOTAxMmM2IDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L2lwX2dyZS5jXFxuKysrIGIvbmV0L2lwdjQvaXBfZ3JlLmNcXG5AQCAtMTAxOCw2ICsxMDE4LDggQEAgc3RhdGljIHZvaWQgX19ncmVfdHVubmVsX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0ZGV2LVxcdTAwM2VmZWF0dXJlc1xcdFxcdHw9IEdSRV9GRUFUVVJFUztcXG4gXFx0ZGV2LVxcdTAwM2Vod19mZWF0dXJlc1xcdHw9IEdSRV9GRUFUVVJFUztcXG4gXFxuK1xcdGRldi1cXHUwMDNlbGx0eCA9IHRydWU7XFxuK1xcbiBcXHQvKiBUQ1Agb2ZmbG9hZCB3aXRoIEdSRSBTRVEgaXMgbm90IHN1cHBvcnRlZCwgbm9yIGNhbiB3ZSBzdXBwb3J0IDJcXG4gXFx0ICogbGV2ZWxzIG9mIG91dGVyIGhlYWRlcnMgcmVxdWlyaW5nIGFuIHVwZGF0ZS5cXG4gXFx0ICovXFxuQEAgLTEwMjksOCArMTAzMSw2IEBAIHN0YXRpYyB2b2lkIF9fZ3JlX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcbiBcXHRkZXYtXFx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFO1xcbiBcXHRkZXYtXFx1MDAzZWh3X2ZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFO1xcbi1cXG4tXFx0ZGV2LVxcdTAwM2VsbHR4ID0gdHJ1ZTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBpcGdyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNjozMzo0NS42NzY5ODQ3NTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwMzA0ODg1OTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9JUEdSRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fZ3JlX3R1bm5lbF9pbml0XCIsXG4gICAgXCJpcGdyZV90dW5uZWxfaW5pdFwiLFxuICAgIFwiaXBncmVfbmV3bGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vdmVzIHRoZSBhc3NpZ25tZW50IG9mIGBkZXYtXFx1MDAzZWxsdHggPSB0cnVlYCBiZWZvcmUgZWFybHkgcmV0dXJucyBpbiBgX19ncmVfdHVubmVsX2luaXQoKWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGVuc3VyZXMgbG9ja2xlc3MgVFggaXMgZW5hYmxlZCBmb3IgR1JFIHR1bm5lbHMgZXZlbiB3aGVuIHNlcXVlbmNlIG51bWJlcnMgb3IgY2hlY2tzdW1zIHdpdGggZW5jYXBzdWxhdGlvbiBhcmUgdXNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4Nzc0ODQ2NTU3ZmMzYjVhMDVjZDM0MDQ4OTEwMDkxNjA0OTZjYzFmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTAgMDY6MzM6NDMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF9ncmUuYyBiL25ldC9pcHY0L2lwX2dyZS5jXG5pbmRleCAzZWZkZmI0ZmZhMjExMi4uMGJhMWU5NGU5MDEyYzYgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9pcF9ncmUuY1xuKysrIGIvbmV0L2lwdjQvaXBfZ3JlLmNcbkBAIC0xMDE4LDYgKzEwMTgsOCBAQCBzdGF0aWMgdm9pZCBfX2dyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0ZGV2LVx1MDAzZWZlYXR1cmVzXHRcdHw9IEdSRV9GRUFUVVJFUztcbiBcdGRldi1cdTAwM2Vod19mZWF0dXJlc1x0fD0gR1JFX0ZFQVRVUkVTO1xuIFxuK1x0ZGV2LVx1MDAzZWxsdHggPSB0cnVlO1xuK1xuIFx0LyogVENQIG9mZmxvYWQgd2l0aCBHUkUgU0VRIGlzIG5vdCBzdXBwb3J0ZWQsIG5vciBjYW4gd2Ugc3VwcG9ydCAyXG4gXHQgKiBsZXZlbHMgb2Ygb3V0ZXIgaGVhZGVycyByZXF1aXJpbmcgYW4gdXBkYXRlLlxuIFx0ICovXG5AQCAtMTAyOSw4ICsxMDMxLDYgQEAgc3RhdGljIHZvaWQgX19ncmVfdHVubmVsX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcbiBcdGRldi1cdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTtcbiBcdGRldi1cdTAwM2Vod19mZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTtcbi1cbi1cdGRldi1cdTAwM2VsbHR4ID0gdHJ1ZTtcbiB9XG4gXG4gc3RhdGljIGludCBpcGdyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDY6MzM6NDUuNjc2OTg3MDMxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTg2MTA2MTAxMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBHUkUgVHVubmVsIEluaXRpYWxpemF0aW9uIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbmV0L2lwdjQvaXBfZ3JlLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBfX2dyZV90dW5uZWxfaW5pdCgpYCBmdW5jdGlvbi4gVGhlIGNvcmUgY2hhbmdlIGlzIG1vdmluZyBgZGV2LVx1MDAzZWxsdHggPSB0cnVlO2AgYSBmZXcgbGluZXMgdXAuIExldCBtZSBkaWcgaW50byB0aGlzLiBJbml0aWFsbHksIEkgd2FzIHRoaW5raW5nIGl0J3MgYWJvdXQgc2V0dGluZyB0aGUgbGluayBsYXllciB0cmFuc21pdCBmbGFnLCBidXQgbGV0IG1lIGNoZWNrIHRoZSBjb250ZXh0LlxuXG5Mb29raW5nIGF0IHRoZSBjb2RlLCBpdCdzIHNldHRpbmcgdXAgdGhlIEdSRSB0dW5uZWwgd2l0aCBjYWxjdWxhdGlvbnMgb2YgaGVhZGVyIGxlbmd0aHMgYW5kIE1UVS4gVGhlbiwgaXQncyBzZXR0aW5nIHNvbWUgZmVhdHVyZXMgYW5kIGhhcmR3YXJlIGZlYXR1cmVzLiBUaGUgb3JpZ2luYWwgcGxhY2VtZW50IG9mIGBkZXYtXHUwMDNlbGx0eCA9IHRydWU7YCB3YXMgYXQgdGhlICplbmQqIG9mIHRoZSBmdW5jdGlvbi4gVGhlbiB0aGVyZSdzIGFuIGBpZmAgYmxvY2sgdGhhdCBsb29rcyBhdCBgVFVOTkVMX1NFUWAgZmxhZ3MgYW5kLCBpbnNpZGUgdGhhdCwgY29uZGl0aW9uYWwgbG9naWMgcmVsYXRlZCB0byBgVFVOTkVMX0NTVU1gLiBIbW0sIGl0IGluY2x1ZGVzIHRoaXMgbGluZTpcblxuYGBgY1xuXHRcdGlmICh0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncyBcdTAwMjYgVFVOTkVMX0NTVU0pXG5cdFx0XHRkZXYtXHUwMDNlZmVhdHVyZXMgXHUwMDI2PSB+TkVUSUZfRl9MTFRYO1xuYGBgXG5cblJpZ2h0LCB0aGF0J3MgY2xlYXJpbmcgdGhlIGBORVRJRl9GX0xMVFhgIGZsYWcgZnJvbSB0aGUgYGRldi1cdTAwM2VmZWF0dXJlc2AgZmllbGQuIEJ1dCB0aGVuIEkgcmVtZW1iZXIgYGRldi1cdTAwM2VsbHR4YCBpcyBhIGJvb2xlYW4gZmxhZy4gSGFuZyBvbiwgdGhlIGBpZmAgYmxvY2sgKm9ubHkqIG1vZGlmaWVzIGBkZXYtXHUwMDNlZmVhdHVyZXNgLCBub3QgYGRldi1cdTAwM2VsbHR4YCBkaXJlY3RseS4gU28gYGRldi1cdTAwM2VsbHR4YCBhbmQgYE5FVElGX0ZfTExUWGAgYXJlIGFjdHVhbGx5IHNlcGFyYXRlIGNvbmNlcm5zLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgdGhlIG1vdmUgbWlnaHQgYmUgdG8gZW5zdXJlIGBkZXYtXHUwMDNlbGx0eGAgaXMgZGVmaW5pdGVseSBzZXQgKmJlZm9yZSogdGhlIGNvbmRpdGlvbmFsIGNoZWNrLiBIb3dldmVyLCB0aGUgY29uZGl0aW9uYWwgc3RhdGVtZW50IGlzIGp1c3QgYWJvdXQgbWFuaXB1bGF0aW5nIHRoZSBmZWF0dXJlIGZsYWcuIFBlcmhhcHMgdGhlIGludGVudCB3YXMgdG8gZGlzYWJsZSB0aGUgTExUWCBmZWF0dXJlPyBObywgdGhlIGJvb2xlYW4gYW5kIHRoZSBmZWF0dXJlIGZsYWcgYXJlIGNvbXBsZXRlbHkgc2VwYXJhdGUuIEFuZCB0aGUgcGF0Y2ggaXMgb25seSBtb3ZpbmcgdGhlIGFzc2lnbm1lbnQgb2YgdGhlIGJvb2xlYW4gdG8gYmUgZWFybGllciBpbiB0aGUgZnVuY3Rpb24sIHdoaWxlIGxlYXZpbmcgdGhlIGNvbmRpdGlvbmFsIGNoZWNrIGFuZCBmZWF0dXJlIG1vZGlmaWNhdGlvbiBpbnRhY3QuXG5cblNvIHRoZSBtYWluIHRoaW5nIHRvIHVuZGVyc3RhbmQgaXMgdGhhdCB0aGUgcGF0Y2ggc2VlbXMgdG8gYmUgbW92aW5nIHRoZSBzZXR0aW5nIG9mIHRoZSBib29sZWFuIGBkZXYtXHUwMDNlbGx0eGAgdG8gYW4gZWFybGllciBwb3NpdGlvbiwgYnV0IHRoZSBgZGV2LVx1MDAzZWZlYXR1cmVzYCBtYW5pcHVsYXRpb24gcmVtYWlucyB0aGUgc2FtZS4gSSBzdXBwb3NlIGBORVRJRl9GX0xMVFhgIGNvdWxkIGJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgYGRldi1cdTAwM2VsbHR4YC5cbkxldCBtZSBsb29rIGF0IGBuZXQvaXB2NC9pcF9ncmUuY2Agb25jZSBtb3JlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTI4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODAyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDY6MzQ6MDQuMjg3NTk5MzAyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUwMDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY0L2lwX2dyZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwMDAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEwMDA6XFx0c3RhdGljIHZvaWQgaXBncmVfdHVubmVsX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuMTAwMTpcXHR7XFxuMTAwMjpcXHRcXHRkZXYtXFx1MDAzZW5ldGRldl9vcHNcXHRcXHQ9IFxcdTAwMjZpcGdyZV9uZXRkZXZfb3BzO1xcbjEwMDM6XFx0XFx0ZGV2LVxcdTAwM2V0eXBlXFx0XFx0PSBBUlBIUkRfSVBHUkU7XFxuMTAwNDpcXHRcXHRpcF90dW5uZWxfc2V0dXAoZGV2LCBpcGdyZV9uZXRfaWQpO1xcbjEwMDU6XFx0fVxcbjEwMDY6XFx0XFxuMTAwNzpcXHRzdGF0aWMgdm9pZCBfX2dyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbjEwMDg6XFx0e1xcbjEwMDk6XFx0XFx0c3RydWN0IGlwX3R1bm5lbCAqdHVubmVsO1xcbjEwMTA6XFx0XFxuMTAxMTpcXHRcXHR0dW5uZWwgPSBuZXRkZXZfcHJpdihkZXYpO1xcbjEwMTI6XFx0XFx0dHVubmVsLVxcdTAwM2V0dW5faGxlbiA9IGdyZV9jYWxjX2hsZW4odHVubmVsLVxcdTAwM2VwYXJtcy5vX2ZsYWdzKTtcXG4xMDEzOlxcdFxcdHR1bm5lbC1cXHUwMDNlcGFybXMuaXBoLnByb3RvY29sID0gSVBQUk9UT19HUkU7XFxuMTAxNDpcXHRcXG4xMDE1OlxcdFxcdHR1bm5lbC1cXHUwMDNlaGxlbiA9IHR1bm5lbC1cXHUwMDNldHVuX2hsZW4gKyB0dW5uZWwtXFx1MDAzZWVuY2FwX2hsZW47XFxuMTAxNjpcXHRcXHRkZXYtXFx1MDAzZW5lZWRlZF9oZWFkcm9vbSA9IHR1bm5lbC1cXHUwMDNlaGxlbiArIHNpemVvZih0dW5uZWwtXFx1MDAzZXBhcm1zLmlwaCk7XFxuMTAxNzpcXHRcXG4xMDE4OlxcdFxcdGRldi1cXHUwMDNlZmVhdHVyZXNcXHRcXHR8PSBHUkVfRkVBVFVSRVM7XFxuMTAxOTpcXHRcXHRkZXYtXFx1MDAzZWh3X2ZlYXR1cmVzXFx0fD0gR1JFX0ZFQVRVUkVTO1xcbjEwMjA6XFx0XFxuMTAyMTpcXHRcXHRkZXYtXFx1MDAzZWxsdHggPSB0cnVlO1xcbjEwMjI6XFx0XFxuMTAyMzpcXHRcXHQvKiBUQ1Agb2ZmbG9hZCB3aXRoIEdSRSBTRVEgaXMgbm90IHN1cHBvcnRlZCwgbm9yIGNhbiB3ZSBzdXBwb3J0IDJcXG4xMDI0OlxcdFxcdCAqIGxldmVscyBvZiBvdXRlciBoZWFkZXJzIHJlcXVpcmluZyBhbiB1cGRhdGUuXFxuMTAyNTpcXHRcXHQgKi9cXG4xMDI2OlxcdFxcdGlmICh0ZXN0X2JpdChJUF9UVU5ORUxfU0VRX0JJVCwgdHVubmVsLVxcdTAwM2VwYXJtcy5vX2ZsYWdzKSlcXG4xMDI3OlxcdFxcdFxcdHJldHVybjtcXG4xMDI4OlxcdFxcdGlmICh0ZXN0X2JpdChJUF9UVU5ORUxfQ1NVTV9CSVQsIHR1bm5lbC1cXHUwMDNlcGFybXMub19mbGFncykgXFx1MDAyNlxcdTAwMjZcXG4xMDI5OlxcdFxcdCAgICB0dW5uZWwtXFx1MDAzZWVuY2FwLnR5cGUgIT0gVFVOTkVMX0VOQ0FQX05PTkUpXFxuMTAzMDpcXHRcXHRcXHRyZXR1cm47XFxuMTAzMTpcXHRcXG4xMDMyOlxcdFxcdGRldi1cXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7XFxuMTAzMzpcXHRcXHRkZXYtXFx1MDAzZWh3X2ZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFO1xcbjEwMzQ6XFx0fVxcbjEwMzU6XFx0XFxuMTAzNjpcXHRzdGF0aWMgaW50IGlwZ3JlX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuMTAzNzpcXHR7XFxuMTAzODpcXHRcXHRzdHJ1Y3QgaXBfdHVubmVsICp0dW5uZWwgPSBuZXRkZXZfcHJpdihkZXYpO1xcbjEwMzk6XFx0XFx0c3RydWN0IGlwaGRyICppcGggPSBcXHUwMDI2dHVubmVsLVxcdTAwM2VwYXJtcy5pcGg7XFxuMTA0MDpcXHRcXG4xMDQxOlxcdFxcdF9fZ3JlX3R1bm5lbF9pbml0KGRldik7XFxuMTA0MjpcXHRcXG4xMDQzOlxcdFxcdF9fZGV2X2FkZHJfc2V0KGRldiwgXFx1MDAyNmlwaC1cXHUwMDNlc2FkZHIsIDQpO1xcbjEwNDQ6XFx0XFx0bWVtY3B5KGRldi1cXHUwMDNlYnJvYWRjYXN0LCBcXHUwMDI2aXBoLVxcdTAwM2VkYWRkciwgNCk7XFxuMTA0NTpcXHRcXG4xMDQ2OlxcdFxcdGRldi1cXHUwMDNlZmxhZ3NcXHRcXHQ9IElGRl9OT0FSUDtcXG4xMDQ3OlxcdFxcdG5ldGlmX2tlZXBfZHN0KGRldik7XFxuMTA0ODpcXHRcXHRkZXYtXFx1MDAzZWFkZHJfbGVuXFx0XFx0PSA0O1xcbjEwNDk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA2OjM0OjA0LjI4Nzc1MTc5MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgyNzE0MDMxNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBHUkUgVHVubmVsIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBgX19ncmVfdHVubmVsX2luaXRgIGZ1bmN0aW9uLCBhbmQgSSd2ZSBzcG90dGVkIHNvbWV0aGluZy4gVGhvc2UgYGlmYCBibG9ja3Mgd2l0aCBgcmV0dXJuO2AgYXJlIHRoZSBrZXkhIEl0IHR1cm5zIG91dCB0aGF0IGJlY2F1c2Ugb2YgdGhvc2UgZWFybHkgcmV0dXJucywgdGhlIGNydWNpYWwgbGluZSBgZGV2LVx1MDAzZWxsdHggPSB0cnVlO2AgYXQgdGhlIGVuZCB3YXMgYmVpbmcgc2tpcHBlZCB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMuIFNwZWNpZmljYWxseSwgaWYgdGhlIHR1bm5lbCB3YXMgY29uZmlndXJlZCB3aXRoIGVpdGhlciBTRVEgb3IgQ1NVTStFTkNBUCBmbGFncywgYGRldi1cdTAwM2VsbHR4YCB3YXNuJ3QgYmVpbmcgc2V0LiBOb3cgdGhhdCBJJ3ZlIG1vdmVkIHRoYXQgbGluZSB1cCwgaXQgd2lsbCBleGVjdXRlIHVuY29uZGl0aW9uYWxseS5cblxuVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGtlcm5lbCdzIG5ldHdvcmtpbmcgc3RhY2ssIGFmZmVjdGluZyBJUHY0IEdSRSB0dW5uZWxzLiBJIHJlbWVtYmVyIGBkZXYtXHUwMDNlbGx0eGAgY29udHJvbHMgbG9ja2xlc3MgdHJhbnNtaXNzaW9uLCBzbyBpZiBpdCdzIHNldCB0byBgdHJ1ZWAsIHRoZSBxZGlzYyBsb2NrIGlzICpub3QqIHRha2VuIGR1cmluZyB0cmFuc21pc3Npb24uXG5cblNpbmNlIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgaXQgc2NyZWFtcyBcImZ1enogbWUhXCIgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBmdW5jdGlvbnMgYXJlIHJlbGV2YW50IHRvIGZ1enouXG5cbmBfX2dyZV90dW5uZWxfaW5pdGAgaXMgYW4gaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24sIHNvIHRoYXQgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGxvb2sgYXQgcmVsYXRlZCBmdW5jdGlvbnMgbGlrZSBgaXBncmVfdHVubmVsX2luaXRgLCBhbmQgYGlwZ3JlX25ld2xpbmtgIGFzIHRoZXkgd291bGQgYWxzbyBpbml0aWFsaXplIHR1bm5lbHMuIFRoZSB0cmFuc21pc3Npb24gZnVuY3Rpb24sIGBpcGdyZV94bWl0YCwgbWlnaHQgYmUgcmVsYXRlZCBhcyB3ZWxsLCBhcyB0aGF0J3MgdGhlIHBhdGggdGhhdCB3b3VsZCB1c2UgYGRldi1cdTAwM2VsbHR4YCwgYnV0IHNpbmNlIHRoaXMgaXMgYSBob3QgcGF0aCwgSSBuZWVkIHRvIHN0YXkgYXdheSBmcm9tIGl0LlxuXG5TbywgSSB3aWxsIGZvY3VzIG9uIGBpcGdyZV9uZXdsaW5rYCwgYGlwZ3JlX3R1bm5lbF9pbml0YCwgYW5kIGBfX2dyZV90dW5uZWxfaW5pdGAuIEkgdGhpbmsgdGhlc2Ugd291bGQgYmUgdGhlIG1vc3QgZWZmZWN0aXZlIGZ1bmN0aW9ucyB0byBmdXp6IVxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDY2LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDI0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDY6MzQ6MTIuNTU5MTY5NDM2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNjk4MjkwMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXBncmVfbmV3bGlua1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9pcF9ncmUuYz0xMzkzPXN0YXRpYyBpbnRcXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzk0OmlwZ3JlX25ld2xpbmtfZW5jYXBfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqZGF0YVtdKVxcbm5ldC9pcHY0L2lwX2dyZS5jLTEzOTUte1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTQwOC1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxNDA5OnN0YXRpYyBpbnQgaXBncmVfbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9pcHY0L2lwX2dyZS5jLTE0MTAtXFx0XFx0XFx0IHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDE4LVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE0MTk6XFx0ZXJyID0gaXBncmVfbmV3bGlua19lbmNhcF9zZXR1cChkZXYsIGRhdGEpO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTE0MjAtXFx0aWYgKGVycilcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jPTE0MzA9c3RhdGljIGludCBlcnNwYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTQzOS1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxNDQwOlxcdGVyciA9IGlwZ3JlX25ld2xpbmtfZW5jYXBfc2V0dXAoZGV2LCBkYXRhKTtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDQxLVxcdGlmIChlcnIpXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xNDUxPXN0YXRpYyBpbnQgaXBncmVfY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTQ2Mi1cXG5uZXQvaXB2NC9pcF9ncmUuYzoxNDYzOlxcdGVyciA9IGlwZ3JlX25ld2xpbmtfZW5jYXBfc2V0dXAoZGV2LCBkYXRhKTtcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNDY0LVxcdGlmIChlcnIpXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xNDgzPXN0YXRpYyBpbnQgZXJzcGFuX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTE0OTQtXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTQ5NTpcXHRlcnIgPSBpcGdyZV9uZXdsaW5rX2VuY2FwX3NldHVwKGRldiwgZGF0YSk7XFxubmV0L2lwdjQvaXBfZ3JlLmMtMTQ5Ni1cXHRpZiAoZXJyKVxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9MTY3ND1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgaXBncmVfbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTE2ODAtXFx0LnZhbGlkYXRlXFx0PSBpcGdyZV90dW5uZWxfdmFsaWRhdGUsXFxubmV0L2lwdjQvaXBfZ3JlLmM6MTY4MTpcXHQubmV3bGlua1xcdD0gaXBncmVfbmV3bGluayxcXG5uZXQvaXB2NC9pcF9ncmUuYy0xNjgyLVxcdC5jaGFuZ2VsaW5rXFx0PSBpcGdyZV9jaGFuZ2VsaW5rLFxcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmM9MTY4OT1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgaXBncmVfdGFwX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTY5NS1cXHQudmFsaWRhdGVcXHQ9IGlwZ3JlX3RhcF92YWxpZGF0ZSxcXG5uZXQvaXB2NC9pcF9ncmUuYzoxNjk2OlxcdC5uZXdsaW5rXFx0PSBpcGdyZV9uZXdsaW5rLFxcbm5ldC9pcHY0L2lwX2dyZS5jLTE2OTctXFx0LmNoYW5nZWxpbmtcXHQ9IGlwZ3JlX2NoYW5nZWxpbmssXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xNzE5PXN0cnVjdCBuZXRfZGV2aWNlICpncmV0YXBfZmJfZGV2X2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IGNoYXIgKm5hbWUsXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xNzQwLVxcbm5ldC9pcHY0L2lwX2dyZS5jOjE3NDE6XFx0ZXJyID0gaXBncmVfbmV3bGluayhkZXYsIFxcdTAwMjZwYXJhbXMsIE5VTEwpO1xcbm5ldC9pcHY0L2lwX2dyZS5jLTE3NDItXFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDY6MzQ6MTkuNjI5MDA1MTE4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ2MjUwODYxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKktjb25maWcgRGl2ZSBmb3IgaXBfZ3JlLmMqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIHJlbGF0ZWQgdG8gYGlwX2dyZS5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgbW9kdWxlIGlzIGNvbnRyb2xsZWQgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIGl0IGhhcy4gV2hhdCBhcmUgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBnb3Zlcm4gaXRzIGluY2x1c2lvbj8gQXJlIHRoZXJlIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgbmV0d29ya2luZyBmZWF0dXJlcyBvciBkcml2ZXJzIHRoYXQgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBhbnkgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlcyBvciBrZXJuZWwgdmVyc2lvbnMgd2hlcmUgaXQncyBjb25kaXRpb25hbGx5IGVuYWJsZWQ/IFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGl0cyBiZWhhdmlvciBhbmQgaG93IHRvIHByb3Blcmx5IGNvbmZpZ3VyZSBpdCBmb3IgYSBzcGVjaWZpYyB0YXJnZXQuIEkgbmVlZCB0byB0cmFjZSB0aHJvdWdoIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgdG8gZ2V0IHRoZSB3aG9sZSBwaWN0dXJlLiBMZXQncyBzZWUgaWYgdGhpcyByZXZlYWxzIGFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggbXkgdGFyZ2V0IGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MjksIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNjozNDoyMy4wOTE1MTY0MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDA5NDEwODU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwX2dyZVxcXFwub1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9NYWtlZmlsZT0yOT1vYmotJChDT05GSUdfTkVUX0lQR1JFX0RFTVVYKSArPSBncmUub1xcbm5ldC9pcHY0L01ha2VmaWxlOjMwOm9iai0kKENPTkZJR19ORVRfSVBHUkUpICs9IGlwX2dyZS5vXFxubmV0L2lwdjQvTWFrZWZpbGUtMzEtdWRwX3R1bm5lbC15IDo9IHVkcF90dW5uZWxfY29yZS5vIHVkcF90dW5uZWxfbmljLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDY6MzQ6MjguNTAwOTMzNDc0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIzNjExNzA2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgTmV0d29yayBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IGBDT05GSUdfTkVUX0lQR1JFYC4gVGhhdCdzIG91ciBzdGFydGluZyBwb2ludC4gSSBrbm93IHRoYXQgY29uZmlnIHByZXR0eSB3ZWxsLCBzbyBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHJlbGF0ZWQgb3IgZGVwZW5kZW50IGNvbmZpZ3VyYXRpb25zIHRoYXQgd2Ugc2hvdWxkIGFsc28gYmUgYXdhcmUgb2YuIFdoYXQgb3RoZXIgbmV0d29yayBzZXR0aW5ncyBtaWdodCBiZSBpbiBwbGF5IGhlcmU/IEl0J3MgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIGJyb2FkZXIgY29udGV4dCBhbmQgcG90ZW50aWFsIGludGVyYWN0aW9ucy4gV2UgZG9uJ3Qgd2FudCB0byBtYWtlIGFuIGlzb2xhdGVkIGNoYW5nZSB3aXRob3V0IGNvbnNpZGVyaW5nIGl0cyByaXBwbGUgZWZmZWN0cy4gV2UgbmVlZCB0byBiZSBleGhhdXN0aXZlLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgb3RoZXIgcmVsYXRlZCBjb25maWdzLCBsaWtlIHRoZSBvbmVzIGRlYWxpbmcgd2l0aCB0dW5uZWxzIG9yIGVuY2FwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTE5LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDY6MzQ6MzEuNzM3MDUzNjdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NTE0MDU4MDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9JUEdSRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTE2Mj1jb25maWcgTkVUX0lQSVBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMTc5LVxcbm5ldC9pcHY0L0tjb25maWc6MTgwOmNvbmZpZyBORVRfSVBHUkVfREVNVVhcXG5uZXQvaXB2NC9LY29uZmlnLTE4MS1cXHR0cmlzdGF0ZSBcXFwiSVA6IEdSRSBkZW11bHRpcGxleGVyXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0xODY9Y29uZmlnIE5FVF9JUF9UVU5ORUxcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMTkxLVxcbm5ldC9pcHY0L0tjb25maWc6MTkyOmNvbmZpZyBORVRfSVBHUkVcXG5uZXQvaXB2NC9LY29uZmlnLTE5My1cXHR0cmlzdGF0ZSBcXFwiSVA6IEdSRSB0dW5uZWxzIG92ZXIgSVBcXFwiXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTIwNi1cXG5uZXQvaXB2NC9LY29uZmlnOjIwNzpjb25maWcgTkVUX0lQR1JFX0JST0FEQ0FTVFxcbm5ldC9pcHY0L0tjb25maWctMjA4LVxcdGJvb2wgXFxcIklQOiBicm9hZGNhc3QgR1JFIG92ZXIgSVBcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA2OjM0OjM2LjI4ODQ2NTYxNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTExOTI4ODgwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEdSRSBUdW5uZWwgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gc2V0dGluZyBhdCBwbGF5IGhlcmUgaXMgYE5FVF9JUEdSRWAuIE15IGluaXRpYWwgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlc2UgdGhyZWUgZnVuY3Rpb25zOiBgX19ncmVfdHVubmVsX2luaXRgLCBgaXBncmVfdHVubmVsX2luaXRgLCBhbmQgYGlwZ3JlX25ld2xpbmtgLiBJIGtub3cgdGhlc2UgYXJlIHdoZXJlIHRoZSB0dW5uZWwgaW5pdGlhbGl6YXRpb24gbG9naWMgbGl2ZXMsIHNvIHRoZXkncmUgdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnRzLlxuXG5XYWl0LCBob2xkIG9uIGEgc2Vjb25kLi4uIHRoZSBjb3JlIGlzc3VlIGlzIGBkZXYtXHUwMDNlbGx0eGAgbm90IGJlaW5nIHNldCB1bmRlciBzcGVjaWZpYyBjb25kaXRpb25zOiB3aGVuIGBJUF9UVU5ORUxfU0VRX0JJVGAgb3IgYElQX1RVTk5FTF9DU1VNX0JJVGAgYXJlIHNldCAqYW5kKiBlbmNhcHN1bGF0aW9uIGlzIGFjdGl2ZS4gVGhhdCBtYWtlcyB0aGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgaXQgZGVmaW5pdGVseSBpbXBhY3RzIGxvY2tsZXNzIHRyYW5zbWl0LiBUaGUgcG90ZW50aWFsIGZvciBhIGNvbmN1cnJlbmN5IGlzc3VlIGlzIGRlZmluaXRlbHkgdGhlcmUuXG5cbkknbSB0aGlua2luZyB0aGlzIGlzIHdvcnRoIGZ1enppbmcsIHRoYXQncyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAuIFdlIG5lZWQgdG8gZXhwb3NlIHRoaXMgYW5kIHNlZSBob3cgaXQgaG9sZHMgdXAuXG5cbkxldCBtZSBqdXN0IGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGluIHBsYXkgaGVyZS4gYE5FVF9JUEdSRWAgZGVwZW5kcyBvbiBgTkVUX0lQR1JFX0RFTVVYYD8gQmV0dGVyIGNoZWNrIHRoYXQgaW4gdGhlIGBuZXQvaXB2NC9LY29uZmlnYCBmaWxlIGFuZCBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTM3LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA2OjM0OjQ3LjQwNzc3OTM1MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTYwMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxODA6XFx0Y29uZmlnIE5FVF9JUEdSRV9ERU1VWFxcbiAxODE6XFx0XFx0dHJpc3RhdGUgXFxcIklQOiBHUkUgZGVtdWx0aXBsZXhlclxcXCJcXG4gMTgyOlxcdFxcdGhlbHBcXG4gMTgzOlxcdFxcdCAgVGhpcyBpcyBoZWxwZXIgbW9kdWxlIHRvIGRlbXVsdGlwbGV4IEdSRSBwYWNrZXRzIG9uIEdSRSB2ZXJzaW9uIGZpZWxkIGNyaXRlcmlhLlxcbiAxODQ6XFx0XFx0ICBSZXF1aXJlZCBieSBpcF9ncmUgYW5kIHBwdHAgbW9kdWxlcy5cXG4gMTg1OlxcdFxcbiAxODY6XFx0Y29uZmlnIE5FVF9JUF9UVU5ORUxcXG4gMTg3OlxcdFxcdHRyaXN0YXRlXFxuIDE4ODpcXHRcXHRzZWxlY3QgRFNUX0NBQ0hFXFxuIDE4OTpcXHRcXHRzZWxlY3QgR1JPX0NFTExTXFxuIDE5MDpcXHRcXHRkZWZhdWx0IG5cXG4gMTkxOlxcdFxcbiAxOTI6XFx0Y29uZmlnIE5FVF9JUEdSRVxcbiAxOTM6XFx0XFx0dHJpc3RhdGUgXFxcIklQOiBHUkUgdHVubmVscyBvdmVyIElQXFxcIlxcbiAxOTQ6XFx0XFx0ZGVwZW5kcyBvbiBORVRfSVBHUkVfREVNVVhcXG4gMTk1OlxcdFxcdHNlbGVjdCBORVRfSVBfVFVOTkVMXFxuIDE5NjpcXHRcXHRoZWxwXFxuIDE5NzpcXHRcXHQgIFR1bm5lbGluZyBtZWFucyBlbmNhcHN1bGF0aW5nIGRhdGEgb2Ygb25lIHByb3RvY29sIHR5cGUgd2l0aGluXFxuIDE5ODpcXHRcXHQgIGFub3RoZXIgcHJvdG9jb2wgYW5kIHNlbmRpbmcgaXQgb3ZlciBhIGNoYW5uZWwgdGhhdCB1bmRlcnN0YW5kcyB0aGVcXG4gMTk5OlxcdFxcdCAgZW5jYXBzdWxhdGluZyBwcm90b2NvbC4gVGhpcyBwYXJ0aWN1bGFyIHR1bm5lbGluZyBkcml2ZXIgaW1wbGVtZW50c1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNjozNDo0Ny40MDc5Mzc1MTFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQyMzQzODY4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKk1ha2luZyBTdXJlIEdSRSBUdW5uZWxzIGFyZSBQcm9wZXJseSBJbml0aWFsaXplZCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYE5FVF9JUEdSRWAgcmVxdWlyZXMgYE5FVF9JUEdSRV9ERU1VWGAuIFJpZ2h0LCBtYWtlcyBzZW5zZSwgc28gSSdsbCBiZSBzdXJlIHRvIGluY2x1ZGUgYE5FVF9JUEdSRWAgaW4gbXkgYEVuYWJsZUNvbmZpZ3NgLiBHb3R0YSBiZSBjYXJlZnVsIGFib3V0IHRoZXNlIGRlcGVuZGVuY2llcy4gTm93LCBsZXQgbWUganVzdCBnbyBiYWNrIGFuZCBkb3VibGUtY2hlY2sgYF9fZ3JlX3R1bm5lbF9pbml0YC4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIGNyaXRpY2FsIGluIHRoZSB0dW5uZWwgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gSXTigJlzIGFsd2F5cyB3b3J0aCBhIHNlY29uZCBsb29rLCBlc3BlY2lhbGx5IHdpdGggc29tZXRoaW5nIGxpa2UgR1JFIHRoYXQgY2FuIGJlIGNvbXBsZXguIEkgbmVlZCB0byBlbnN1cmUgZXZlcnl0aGluZyBpcyBzZXQgdXAgY29ycmVjdGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjgxLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQwNjozNDo1MC44MzEzNzg5NTRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA3NzMyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2NC9pcF9ncmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMDA3LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMDA3OlxcdHN0YXRpYyB2b2lkIF9fZ3JlX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuMTAwODpcXHR7XFxuMTAwOTpcXHRcXHRzdHJ1Y3QgaXBfdHVubmVsICp0dW5uZWw7XFxuMTAxMDpcXHRcXG4xMDExOlxcdFxcdHR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XFxuMTAxMjpcXHRcXHR0dW5uZWwtXFx1MDAzZXR1bl9obGVuID0gZ3JlX2NhbGNfaGxlbih0dW5uZWwtXFx1MDAzZXBhcm1zLm9fZmxhZ3MpO1xcbjEwMTM6XFx0XFx0dHVubmVsLVxcdTAwM2VwYXJtcy5pcGgucHJvdG9jb2wgPSBJUFBST1RPX0dSRTtcXG4xMDE0OlxcdFxcbjEwMTU6XFx0XFx0dHVubmVsLVxcdTAwM2VobGVuID0gdHVubmVsLVxcdTAwM2V0dW5faGxlbiArIHR1bm5lbC1cXHUwMDNlZW5jYXBfaGxlbjtcXG4xMDE2OlxcdFxcdGRldi1cXHUwMDNlbmVlZGVkX2hlYWRyb29tID0gdHVubmVsLVxcdTAwM2VobGVuICsgc2l6ZW9mKHR1bm5lbC1cXHUwMDNlcGFybXMuaXBoKTtcXG4xMDE3OlxcdFxcbjEwMTg6XFx0XFx0ZGV2LVxcdTAwM2VmZWF0dXJlc1xcdFxcdHw9IEdSRV9GRUFUVVJFUztcXG4xMDE5OlxcdFxcdGRldi1cXHUwMDNlaHdfZmVhdHVyZXNcXHR8PSBHUkVfRkVBVFVSRVM7XFxuMTAyMDpcXHRcXG4xMDIxOlxcdFxcdGRldi1cXHUwMDNlbGx0eCA9IHRydWU7XFxuMTAyMjpcXHRcXG4xMDIzOlxcdFxcdC8qIFRDUCBvZmZsb2FkIHdpdGggR1JFIFNFUSBpcyBub3Qgc3VwcG9ydGVkLCBub3IgY2FuIHdlIHN1cHBvcnQgMlxcbjEwMjQ6XFx0XFx0ICogbGV2ZWxzIG9mIG91dGVyIGhlYWRlcnMgcmVxdWlyaW5nIGFuIHVwZGF0ZS5cXG4xMDI1OlxcdFxcdCAqL1xcbjEwMjY6XFx0XFx0aWYgKHRlc3RfYml0KElQX1RVTk5FTF9TRVFfQklULCB0dW5uZWwtXFx1MDAzZXBhcm1zLm9fZmxhZ3MpKVxcbjEwMjc6XFx0XFx0XFx0cmV0dXJuO1xcbjEwMjg6XFx0XFx0aWYgKHRlc3RfYml0KElQX1RVTk5FTF9DU1VNX0JJVCwgdHVubmVsLVxcdTAwM2VwYXJtcy5vX2ZsYWdzKSBcXHUwMDI2XFx1MDAyNlxcbjEwMjk6XFx0XFx0ICAgIHR1bm5lbC1cXHUwMDNlZW5jYXAudHlwZSAhPSBUVU5ORUxfRU5DQVBfTk9ORSlcXG4xMDMwOlxcdFxcdFxcdHJldHVybjtcXG4xMDMxOlxcdFxcbjEwMzI6XFx0XFx0ZGV2LVxcdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTtcXG4xMDMzOlxcdFxcdGRldi1cXHUwMDNlaHdfZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7XFxuMTAzNDpcXHR9XFxuMTAzNTpcXHRcXG4xMDM2OlxcdHN0YXRpYyBpbnQgaXBncmVfdHVubmVsX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMDY6MzQ6NTAuODM1NDYwNDQ0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MDQ5MzI0MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgR1JFIFR1bm5lbCBJbml0aWFsaXphdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIEdSRSB0dW5uZWwgaW5pdGlhbGl6YXRpb24gYW5kIGl0J3MgYSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBjaGFuZ2UsIHdoaWNoIGFsd2F5cyBncmFicyBteSBhdHRlbnRpb24uIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGluIHRoZSBmdW5jdGlvbiBgX19ncmVfdHVubmVsX2luaXQoKWAuIFdoYXQgdGhleSd2ZSBkb25lIGlzIHRoZXkndmUgbW92ZWQgYGRldi1cdTAwM2VsbHR4ID0gdHJ1ZTtgICpiZWZvcmUqIHRoZSBjb25kaXRpb25hbCBgcmV0dXJuYCBzdGF0ZW1lbnRzLiBUaGF0J3MgYSBnb29kIGZpcnN0IG1vdmUuXG5cbkVzc2VudGlhbGx5LCBieSBkb2luZyB0aGlzLCB0aGV5J3JlIGd1YXJhbnRlZWluZyB0aGF0IHRoZSBgZGV2LVx1MDAzZWxsdHhgIGZsYWcgaXMgc2V0IHRvIGB0cnVlYCDigJMgdGhhdCBsb2NrbGVzcyB0cmFuc21pc3Npb24gaXMgZW5hYmxlZCDigJMgKnJlZ2FyZGxlc3MqIG9mIHdoZXRoZXIgdGhlIGZ1bmN0aW9uIGhpdHMgYW4gZWFybHkgZXhpdC4gVGhhdCdzIGtleS4gVGhpcyBtZWFucyB0aGF0IGV2ZW4gaWYgdGhlcmUncyBhIHByb2JsZW0gd2l0aCBzZXF1ZW5jZSBudW1iZXJzIG9yIGNoZWNrc3VtcyB3aXRoIGVuY2Fwc3VsYXRpb24gKHRoaW5ncyB0aGF0IG1pZ2h0IHRyaWdnZXIgdGhvc2UgZWFybHkgcmV0dXJucyksIGxvY2tsZXNzIFRYIHdpbGwgYmUgZW5hYmxlZC4gSXQncyBhIHN1YnRsZSBidXQgaW1wb3J0YW50IHBpZWNlIG9mIGxvZ2ljLlxuXG5NeSBtYWluIGZvY3VzIGhlcmUsIGlzIGlmIGl0IGVmZmVjdHMgYGlwZ3JlX3R1bm5lbF9pbml0YCBvciBgaXBncmVfbmV3bGlua2AgZnVuY3Rpb25hbGl0eSwgd2hpY2ggaXQgZG9lc24ndCBzZWVtIHRvLiBJIHdpbGwgYWRkIHRoaXMgdG8gbXkgbWVudGFsIGNoZWNrcy5cblxuQWxyaWdodCwgc2VlbXMgZ29vZC4gSSdsbCBtYWtlIHN1cmUgdG8gZ2V0IHRoaXMgY2hlY2tlZCBhbmQgbWVyZ2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDEzLCJPdXRwdXRUb2tlbnMiOjExNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDA2OjM0OjU1Ljc0MDM5NTc0NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTQ2ODY1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0lQR1JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19ncmVfdHVubmVsX2luaXRcIixcbiAgICBcImlwZ3JlX3R1bm5lbF9pbml0XCIsXG4gICAgXCJpcGdyZV9uZXdsaW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW92ZXMgdGhlIGFzc2lnbm1lbnQgb2YgYGRldi1cXHUwMDNlbGx0eCA9IHRydWVgIGJlZm9yZSBlYXJseSByZXR1cm5zIGluIGBfX2dyZV90dW5uZWxfaW5pdCgpYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgZW5zdXJlcyBsb2NrbGVzcyBUWCBpcyBlbmFibGVkIGZvciBHUkUgdHVubmVscyBldmVuIHdoZW4gc2VxdWVuY2UgbnVtYmVycyBvciBjaGVja3N1bXMgd2l0aCBlbmNhcHN1bGF0aW9uIGFyZSB1c2VkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9JUEdSRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fZ3JlX3R1bm5lbF9pbml0XCIsXG4gICAgXCJpcGdyZV90dW5uZWxfaW5pdFwiLFxuICAgIFwiaXBncmVfbmV3bGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vdmVzIHRoZSBhc3NpZ25tZW50IG9mIGBkZXYtXFx1MDAzZWxsdHggPSB0cnVlYCBiZWZvcmUgZWFybHkgcmV0dXJucyBpbiBgX19ncmVfdHVubmVsX2luaXQoKWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGVuc3VyZXMgbG9ja2xlc3MgVFggaXMgZW5hYmxlZCBmb3IgR1JFIHR1bm5lbHMgZXZlbiB3aGVuIHNlcXVlbmNlIG51bWJlcnMgb3IgY2hlY2tzdW1zIHdpdGggZW5jYXBzdWxhdGlvbiBhcmUgdXNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkq88r[1] Phase: Succeeded StartedAt: 2026-07-10 06:35:07 +0000 UTC FinishedAt: 2026-07-10 06:35:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkq88r[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-10 06:35:07 +0000 UTC FinishedAt: 2026-07-10 06:35:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkq88r[2] Phase: Succeeded StartedAt: 2026-07-10 06:35:07 +0000 UTC FinishedAt: 2026-07-10 10:50:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-10 06:35:07 +0000 UTC FinishedAt: 2026-07-10 10:50:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-10 06:35:07 +0000 UTC FinishedAt: 2026-07-10 06:35:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-10 06:35:07 +0000 UTC FinishedAt: 2026-07-10 06:35:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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-workflowkq88r/series-workflowkq88r-convert-artifact-2172028116/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-10 06:35:33 +0000 UTC FinishedAt: 2026-07-10 07:11:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-10 06:35:33 +0000 UTC FinishedAt: 2026-07-10 07:11:46 +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:*765c3f9d-d5a0-42b0-be0e-3d9a90164b84,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-workflowkq88r/series-workflowkq88r-convert-artifact-2172028116/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": "44f75d78-7764-47b1-b7a4-b8aa4c43001e", "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-workflowkq88r/series-workflowkq88r-build-action-29278290/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-10 06:35:33 +0000 UTC FinishedAt: 2026-07-10 07:11:36 +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:*765c3f9d-d5a0-42b0-be0e-3d9a90164b84,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-workflowkq88r/series-workflowkq88r-convert-artifact-2172028116/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": "44f75d78-7764-47b1-b7a4-b8aa4c43001e", "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-workflowkq88r/series-workflowkq88r-build-action-29278290/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-10 07:11:46 +0000 UTC FinishedAt: 2026-07-10 07:11:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-10 07:11:46 +0000 UTC FinishedAt: 2026-07-10 07:11:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-10 07:11:46 +0000 UTC FinishedAt: 2026-07-10 07:12:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-10 07:11:46 +0000 UTC FinishedAt: 2026-07-10 07:11:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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-workflowkq88r/series-workflowkq88r-convert-artifact-3809131667/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-10 07:12:06 +0000 UTC FinishedAt: 2026-07-10 07:14:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-10 07:12:06 +0000 UTC FinishedAt: 2026-07-10 07:14:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*44f75d78-7764-47b1-b7a4-b8aa4c43001e,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-workflowkq88r/series-workflowkq88r-build-action-29278290/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-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-10 07:14:20 +0000 UTC FinishedAt: 2026-07-10 07:14:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-10 07:14:20 +0000 UTC FinishedAt: 2026-07-10 07:14:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-10 07:14:20 +0000 UTC FinishedAt: 2026-07-10 07:46:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-10 07:14:20 +0000 UTC FinishedAt: 2026-07-10 07:46:14 +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:*765c3f9d-d5a0-42b0-be0e-3d9a90164b84,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-workflowkq88r/series-workflowkq88r-convert-artifact-3809131667/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": "4f568c13-eb92-433a-80bb-5ac44f60255e", "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-workflowkq88r/series-workflowkq88r-build-action-3169424071/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-10 07:14:20 +0000 UTC FinishedAt: 2026-07-10 07:45:39 +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:*765c3f9d-d5a0-42b0-be0e-3d9a90164b84,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-workflowkq88r/series-workflowkq88r-convert-artifact-3809131667/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": "4f568c13-eb92-433a-80bb-5ac44f60255e", "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-workflowkq88r/series-workflowkq88r-build-action-3169424071/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-10 07:46:14 +0000 UTC FinishedAt: 2026-07-10 07:46:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-10 07:46:14 +0000 UTC FinishedAt: 2026-07-10 07:46:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-10 07:46:14 +0000 UTC FinishedAt: 2026-07-10 07:48:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-10 07:46:14 +0000 UTC FinishedAt: 2026-07-10 07:47:52 +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:*4f568c13-eb92-433a-80bb-5ac44f60255e,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-workflowkq88r/series-workflowkq88r-build-action-3169424071/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-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-10 07:48:02 +0000 UTC FinishedAt: 2026-07-10 10:50:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-10 07:48:02 +0000 UTC FinishedAt: 2026-07-10 10:50:10 +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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"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:*44f75d78-7764-47b1-b7a4-b8aa4c43001e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*4f568c13-eb92-433a-80bb-5ac44f60255e,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-workflowkq88r/series-workflowkq88r-build-action-29278290/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-workflowkq88r/series-workflowkq88r-build-action-3169424071/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-10 07:48:02 +0000 UTC FinishedAt: 2026-07-10 07:48:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-10 07:48:02 +0000 UTC FinishedAt: 2026-07-10 07:48:18 +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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"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-workflowkq88r/series-workflowkq88r-convert-artifact-3822080268/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-10 07:48:02 +0000 UTC FinishedAt: 2026-07-10 07:48:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-10 07:48:02 +0000 UTC FinishedAt: 2026-07-10 07:48:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-10 07:48:02 +0000 UTC FinishedAt: 2026-07-10 07:48:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-10 07:48:26 +0000 UTC FinishedAt: 2026-07-10 10:50:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkq88r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-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":["__gre_tunnel_init","ipgre_tunnel_init","ipgre_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"fe3e786ef4eb6e47d2901f568a27bd920477bbe9","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE"],"series_id":"c9d84659-b70f-48d2-b3d1-3f53be705a7c","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-10 07:48:26 +0000 UTC FinishedAt: 2026-07-10 10:50:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*44f75d78-7764-47b1-b7a4-b8aa4c43001e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*4f568c13-eb92-433a-80bb-5ac44f60255e,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-workflowkq88r/series-workflowkq88r-build-action-29278290/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-workflowkq88r/series-workflowkq88r-build-action-3169424071/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-workflowkq88r/series-workflowkq88r-convert-artifact-3822080268/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,}