Name: series-workflowwk97p Phase: Succeeded StartedAt: 2026-08-07 14:54:39 +0000 UTC FinishedAt: 2026-08-07 19:20:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk97p[0] Phase: Succeeded StartedAt: 2026-08-07 14:54:39 +0000 UTC FinishedAt: 2026-08-07 15:41:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk97p[0].run-triage Phase: Succeeded StartedAt: 2026-08-07 14:54:39 +0000 UTC FinishedAt: 2026-08-07 15:41:36 +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": "4fa4977a0d900f936bcae5cd2c510be5554e8dd6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VSOCKETS" ], "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": "4fa4977a0d900f936bcae5cd2c510be5554e8dd6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VSOCKETS" ], "series_id": "b803bd49-ea41-4af0-9f0f-61e702ac0ee1" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "vsock_accept", "vsock_pending_work" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZTT0NLRVRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dnNvY2tfYWNjZXB0JiMzNDssCiAgICAmIzM0O3Zzb2NrX3BlbmRpbmdfd29yayYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsaWZlY3ljbGUgb2YgdnNvY2sgc29ja2V0cyBkdXJpbmcgdGhlIGBhY2NlcHQoKWAgcHJvY2Vzcy4gU3BlY2lmaWNhbGx5LCBpdCByZW1vdmVzIHRoZSBgcmVqZWN0ZWRgIGZsYWcgZnJvbSBgc3RydWN0IHZzb2NrX3NvY2tgIGFuZCBjaGFuZ2VzIGB2c29ja19hY2NlcHQoKWAgdG8gaW1tZWRpYXRlbHkgY2xlYW4gdXAgYW5kIGRyb3AgcmVmZXJlbmNlcyB0byBhIHJlamVjdGVkIGNoaWxkIHNvY2tldCwgcmF0aGVyIHRoYW4gZGVmZXJyaW5nIHRoZSBjbGVhbnVwIHRvIGB2c29ja19wZW5kaW5nX3dvcmsoKWAuIFRoaXMgYWRkcmVzc2VzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIGxpZmVjeWNsZSBpc3N1ZSB3aGVyZSByZWplY3RlZCBzb2NrZXRzIG1pZ2h0IG5vdCBiZSBjbGVhbmVkIHVwIGJ5IHRoZSBwZW5kaW5nIHdvcmtlci5cblxuVGhlc2UgY2hhbmdlcyBhcmUgcmVsYXRlZCB0byBvYmplY3QgbGlmZWN5Y2xlLCByZWZlcmVuY2UgY291bnRpbmcsIGFuZCBzdGF0ZSBtYW5hZ2VtZW50LiBBbnkgYnVncyBpbnRyb2R1Y2VkIG9yIGZpeGVkIGJ5IHRoaXMgcGF0Y2ggd291bGQgbWFuaWZlc3QgYXMgbWVtb3J5IGxlYWtzLCB1c2UtYWZ0ZXItZnJlZSAoVUFGKSwgb3IgZG91YmxlLWZyZWUgdnVsbmVyYWJpbGl0aWVzLiBTdWNoIGlzc3VlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4gKGZvciBVQUYvZG91YmxlLWZyZWUpIGFuZCBLTUVNTEVBSyAoZm9yIG1lbW9yeSBsZWFrcykuXG5cblRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGRhdGEgc3RydWN0dXJlcywgZG9lcyBub3QgZXhwb3NlIGFueSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBpbnZvbHZlIGNvbXBsZXggaW5pdGlhbGl6YXRpb25zIHdoZXJlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGNvdWxkIGJlIHJlYWQgb3IgbGVha2VkLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIHZzb2NrIGxvZ2ljIGZvciBoYW5kbGluZyByZWplY3RlZCBjb25uZWN0aW9ucyBpbiBgdnNvY2tfYWNjZXB0YCBhbmQgYHZzb2NrX3BlbmRpbmdfd29ya2AuIEl0IGZpeGVzIGEgbGVhayBvZiByZWplY3RlZCBjaGlsZCBzb2NrZXRzIGJ5IGNsZWFuaW5nIHRoZW0gdXAgZGlyZWN0bHkgaW4gYHZzb2NrX2FjY2VwdGAgaW5zdGVhZCBvZiBkZWZlcnJpbmcgdG8gYHZzb2NrX3BlbmRpbmdfd29ya2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjIwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgN2Q4Yjk4NDk4N2NlYjAxMTIyNDEyY2I2MzA2MjI1ODNlYmZiOWE3NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMTU6MjA6MzYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvYWZfdnNvY2suaCBiL2luY2x1ZGUvbmV0L2FmX3Zzb2NrLmhcbmluZGV4IDMwMDQ2YTNjMjBmNzMuLmI3MGNlYTdmNzU0ZjUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9hZl92c29jay5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9hZl92c29jay5oXG5AQCAtNTMsMTIgJiM0Mzs1MywxMCBAQCBzdHJ1Y3QgdnNvY2tfc29jayB7XG4gXHQgKiBmb3IgY29ubmVjdGlvbiByZXF1ZXN0cyBhcmUgcGxhY2VkIGluIHRoZSBwZW5kaW5nIGxpc3QgdW50aWwgdGhleVxuIFx0ICogYXJlIGNvbm5lY3RlZCwgYXQgd2hpY2ggcG9pbnQgdGhleSBhcmUgcHV0IGluIHRoZSBhY2NlcHQgcXVldWUgbGlzdFxuIFx0ICogc28gdGhleSBjYW4gYmUgYWNjZXB0ZWQgaW4gYWNjZXB0KCkuICBJZiBhY2NlcHQoKSBjYW5ub3QgYWNjZXB0IHRoZVxuLVx0ICogY29ubmVjdGlvbiwgaXQgaXMgbWFya2VkIGFzIHJlamVjdGVkIHNvIHRoZSBjbGVhbnVwIGZ1bmN0aW9uIGtub3dzXG4tXHQgKiB0byBjbGVhbiB1cCB0aGUgc29ja2V0LlxuJiM0MztcdCAqIGNvbm5lY3Rpb24sIHRoZSBjaGlsZCBpcyBjbGVhbmVkIHVwIGRpcmVjdGx5IGluIHZzb2NrX2FjY2VwdCgpLlxuIFx0ICovXG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIHBlbmRpbmdfbGlua3M7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIGFjY2VwdF9xdWV1ZTtcbi1cdGJvb2wgcmVqZWN0ZWQ7XG4gXHRzdHJ1Y3QgZGVsYXllZF93b3JrIGNvbm5lY3Rfd29yaztcbiBcdHN0cnVjdCBkZWxheWVkX3dvcmsgcGVuZGluZ193b3JrO1xuIFx0c3RydWN0IGRlbGF5ZWRfd29yayBjbG9zZV93b3JrO1xuZGlmZiAtLWdpdCBhL25ldC92bXdfdnNvY2svYWZfdnNvY2suYyBiL25ldC92bXdfdnNvY2svYWZfdnNvY2suY1xuaW5kZXggNjIyZGJkMDQ2Nzk5NC4uMjA4NGM4OGFjODM2ZiAxMDA2NDRcbi0tLSBhL25ldC92bXdfdnNvY2svYWZfdnNvY2suY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3Ztd192c29jay9hZl92c29jay5jXG5AQCAtMzksOSAmIzQzOzM5LDkgQEBcbiAgKiBmcm9tIHRoZSBsaXN0ZW5lciBzb2NrZXQmIzM5O3MgcGVuZGluZyBsaXN0IGFuZCBlbnF1ZXVlZCBpbiB0aGUgbGlzdGVuZXJcbiAgKiBzb2NrZXQmIzM5O3MgYWNjZXB0IHF1ZXVlLiAgQ2FsbGVycyBvZiBhY2NlcHQoMikgd2lsbCBhY2NlcHQgY29ubmVjdGVkIHNvY2tldHNcbiAgKiBmcm9tIHRoZSBsaXN0ZW5lciBzb2NrZXQmIzM5O3MgYWNjZXB0IHF1ZXVlLiAgSWYgdGhlIHNvY2tldCBjYW5ub3QgYmUgYWNjZXB0ZWRcbi0gKiBmb3Igc29tZSByZWFzb24gdGhlbiBpdCBpcyBtYXJrZWQgcmVqZWN0ZWQuICBPbmNlIHRoZSBjb25uZWN0aW9uIGlzXG4tICogYWNjZXB0ZWQsIGl0IGlzIG93bmVkIGJ5IHRoZSB1c2VyIHByb2Nlc3MgYW5kIHRoZSByZXNwb25zaWJpbGl0eSBmb3IgY2xlYW51cFxuLSAqIGZhbGxzIHdpdGggdGhhdCB1c2VyIHByb2Nlc3MuXG4mIzQzOyAqIGZvciBzb21lIHJlYXNvbiB0aGVuIGl0IGlzIGNsZWFuZWQgdXAgZGlyZWN0bHkgaW4gdnNvY2tfYWNjZXB0KCkuICBPbmNlIHRoZVxuJiM0MzsgKiBjb25uZWN0aW9uIGlzIGFjY2VwdGVkLCBpdCBpcyBvd25lZCBieSB0aGUgdXNlciBwcm9jZXNzIGFuZCB0aGVcbiYjNDM7ICogcmVzcG9uc2liaWxpdHkgZm9yIGNsZWFudXAgZmFsbHMgd2l0aCB0aGF0IHVzZXIgcHJvY2Vzcy5cbiAgKlxuICAqIC0gSXQgaXMgcG9zc2libGUgdGhhdCB0aGVzZSBwZW5kaW5nIHNvY2tldHMgd2lsbCBuZXZlciByZWFjaCB0aGUgY29ubmVjdGVkXG4gICogc3RhdGU7IGluIGZhY3QsIHdlIG1heSBuZXZlciByZWNlaXZlIGFub3RoZXIgcGFja2V0IGFmdGVyIHRoZSBjb25uZWN0aW9uXG5AQCAtNDksOSAmIzQzOzQ5LDcgQEBcbiAgKiBmdXR1cmUsIGFmdGVyIHNvbWUgYW1vdW50IG9mIHRpbWUgcGFzc2VzIHdoZXJlIGEgY29ubmVjdGlvbiBzaG91bGQgaGF2ZSBiZWVuXG4gICogZXN0YWJsaXNoZWQuICBUaGlzIGZ1bmN0aW9uIGVuc3VyZXMgdGhhdCB0aGUgc29ja2V0IGlzIG9mZiBhbGwgbGlzdHMgc28gaXRcbiAgKiBjYW5ub3QgYmUgcmV0cmlldmVkLCB0aGVuIGRyb3BzIGFsbCByZWZlcmVuY2VzIHRvIHRoZSBzb2NrZXQgc28gaXQgaXMgY2xlYW5lZFxuLSAqIHVwIChzb2NrX3B1dCgpIC1cdTAwM2Ugc2tfZnJlZSgpIC1cdTAwM2Ugb3VyIHNrX2Rlc3RydWN0IGltcGxlbWVudGF0aW9uKS4gIE5vdGUgdGhpc1xuLSAqIGZ1bmN0aW9uIHdpbGwgYWxzbyBjbGVhbnVwIHJlamVjdGVkIHNvY2tldHMsIHRob3NlIHRoYXQgcmVhY2ggdGhlIGNvbm5lY3RlZFxuLSAqIHN0YXRlIGJ1dCBsZWF2ZSBpdCBiZWZvcmUgdGhleSBoYXZlIGJlZW4gYWNjZXB0ZWQuXG4mIzQzOyAqIHVwIChzb2NrX3B1dCgpIC1cdTAwM2Ugc2tfZnJlZSgpIC1cdTAwM2Ugb3VyIHNrX2Rlc3RydWN0IGltcGxlbWVudGF0aW9uKS5cbiAgKlxuICAqIC0gTG9jayBvcmRlcmluZyBmb3IgcGVuZGluZyBvciBhY2NlcHQgcXVldWUgc29ja2V0cyBpczpcbiAgKlxuQEAgLTc3NCwxMSAmIzQzOzc3MiwxMSBAQCBzdGF0aWMgdm9pZCB2c29ja19wZW5kaW5nX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFxuIFx0aWYgKHZzb2NrX2lzX3BlbmRpbmcoc2spKSB7XG4gXHRcdHZzb2NrX3JlbW92ZV9wZW5kaW5nKGxpc3RlbmVyLCBzayk7XG4tXHR9IGVsc2UgaWYgKCF2c2stXHUwMDNlcmVqZWN0ZWQpIHtcbi1cdFx0LyogV2UgYXJlIG5vdCBvbiB0aGUgcGVuZGluZyBsaXN0IGFuZCBhY2NlcHQoKSBkaWQgbm90IHJlamVjdFxuLVx0XHQgKiB1cywgc28gd2UgbXVzdCBoYXZlIGJlZW4gYWNjZXB0ZWQgYnkgb3VyIHVzZXIgcHJvY2Vzcy4gIFdlXG4tXHRcdCAqIGp1c3QgbmVlZCB0byBkcm9wIG91ciByZWZlcmVuY2VzIHRvIHRoZSBzb2NrZXRzIGFuZCBiZSBvblxuLVx0XHQgKiBvdXIgd2F5LlxuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHQvKiBXZSBhcmUgbm90IG9uIHRoZSBwZW5kaW5nIGxpc3QsIHNvIHdlIG11c3QgaGF2ZSBiZWVuIGFjY2VwdGVkXG4mIzQzO1x0XHQgKiBieSBvdXIgdXNlciBwcm9jZXNzIChyZWplY3RlZCBzb2NrZXRzIGFyZSBjbGVhbmVkIHVwIGRpcmVjdGx5XG4mIzQzO1x0XHQgKiBpbiB2c29ja19hY2NlcHQoKSkuICBXZSBqdXN0IG5lZWQgdG8gZHJvcCBvdXIgcmVmZXJlbmNlcyB0b1xuJiM0MztcdFx0ICogdGhlIHNvY2tldHMgYW5kIGJlIG9uIG91ciB3YXkuXG4gXHRcdCAqL1xuIFx0XHRjbGVhbnVwID0gZmFsc2U7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTk0Miw3ICYjNDM7OTQwLDYgQEAgc3RhdGljIHN0cnVjdCBzb2NrICpfX3Zzb2NrX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsXG4gXHR2c2stXHUwMDNlbGlzdGVuZXIgPSBOVUxMO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2dnNrLVx1MDAzZXBlbmRpbmdfbGlua3MpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2dnNrLVx1MDAzZWFjY2VwdF9xdWV1ZSk7XG4tXHR2c2stXHUwMDNlcmVqZWN0ZWQgPSBmYWxzZTtcbiBcdHZzay1cdTAwM2VzZW50X3JlcXVlc3QgPSBmYWxzZTtcbiBcdHZzay1cdTAwM2VpZ25vcmVfY29ubmVjdGluZ19yc3QgPSBmYWxzZTtcbiBcdFdSSVRFX09OQ0UodnNrLVx1MDAzZXBlZXJfc2h1dGRvd24sIDApO1xuQEAgLTE5MTksMTQgJiM0MzsxOTE2LDE5IEBAIHN0YXRpYyBpbnQgdnNvY2tfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssXG4gXHRcdHZjb25uZWN0ZWQgPSB2c29ja19zayhjb25uZWN0ZWQpO1xuIFxuIFx0XHQvKiBJZiB0aGUgbGlzdGVuZXIgc29ja2V0IGhhcyByZWNlaXZlZCBhbiBlcnJvciwgdGhlbiB3ZSBzaG91bGRcbi1cdFx0ICogcmVqZWN0IHRoaXMgc29ja2V0IGFuZCByZXR1cm4uICBOb3RlIHRoYXQgd2Ugc2ltcGx5IG1hcmsgdGhlXG4tXHRcdCAqIHNvY2tldCByZWplY3RlZCwgZHJvcCBvdXIgcmVmZXJlbmNlLCBhbmQgbGV0IHRoZSBjbGVhbnVwXG4tXHRcdCAqIGZ1bmN0aW9uIGhhbmRsZSB0aGUgY2xlYW51cDsgdGhlIGZhY3QgdGhhdCB3ZSBmb3VuZCBpdCBpblxuLVx0XHQgKiB0aGUgbGlzdGVuZXImIzM5O3MgYWNjZXB0IHF1ZXVlIGd1YXJhbnRlZXMgdGhhdCB0aGUgY2xlYW51cFxuLVx0XHQgKiBmdW5jdGlvbiBoYXNuJiMzOTt0IHJ1biB5ZXQuXG4mIzQzO1x0XHQgKiByZWplY3QgdGhpcyBzb2NrZXQgYW5kIHJldHVybi4gIFRoZSBjaGlsZCB3YXMgZm91bmQgb24gdGhlXG4mIzQzO1x0XHQgKiBsaXN0ZW5lciYjMzk7cyBhY2NlcHQgcXVldWUsIHNvIGl0IHN0aWxsIGhvbGRzIHRoZSByZWZlcmVuY2VzXG4mIzQzO1x0XHQgKiB0YWtlbiBieSBza19hbGxvYygpLCBfX3Zzb2NrX2luc2VydF9jb25uZWN0ZWQoKSBhbmRcbiYjNDM7XHRcdCAqIHZzb2NrX2VucXVldWVfYWNjZXB0KCkuICBEcm9wIHRoZW0gaGVyZSBzbyB0aGUgc29ja2V0IGlzXG4mIzQzO1x0XHQgKiBkZXN0cm95ZWQuICBXZSBjYW5ub3QgZGVmZXIgdGhpcyB0byB2c29ja19wZW5kaW5nX3dvcmsoKTpcbiYjNDM7XHRcdCAqIHJlamVjdGVkIGNoaWxkIHNvY2tldHMgY3JlYXRlZCB0aHJvdWdoIHZpcnRpb190cmFuc3BvcnQgYW5kXG4mIzQzO1x0XHQgKiB2c29ja19sb29wYmFjayBhcmUgbm90IGNsZWFuZWQgdXAgYnkgdGhhdCB3b3JrZXIsIHNvIHRoZVxuJiM0MztcdFx0ICogY2hpbGQgd291bGQgb3RoZXJ3aXNlIGxlYWsgcGVybWFuZW50bHkuXG4gXHRcdCAqL1xuIFx0XHRpZiAoZXJyKSB7XG4tXHRcdFx0dmNvbm5lY3RlZC1cdTAwM2VyZWplY3RlZCA9IHRydWU7XG4mIzQzO1x0XHRcdHZzb2NrX3JlbW92ZV9jb25uZWN0ZWQodmNvbm5lY3RlZCk7XG4mIzQzO1x0XHRcdGNvbm5lY3RlZC1cdTAwM2Vza19zdGF0ZSA9IFRDUF9DTE9TRTtcbiYjNDM7XHRcdFx0c29ja19wdXQoY29ubmVjdGVkKTtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRuZXdzb2NrLVx1MDAzZXN0YXRlID0gU1NfQ09OTkVDVEVEO1xuIFx0XHRcdHNvY2tfZ3JhZnQoY29ubmVjdGVkLCBuZXdzb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNToyMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VlNPQ0tFVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2c29ja19hY2NlcHQmIzM0OywKICAgICYjMzQ7dnNvY2tfcGVuZGluZ193b3JrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIHZzb2NrIGxvZ2ljIGZvciBoYW5kbGluZyByZWplY3RlZCBjb25uZWN0aW9ucyBpbiBgdnNvY2tfYWNjZXB0YCBhbmQgYHZzb2NrX3BlbmRpbmdfd29ya2AuIEl0IGZpeGVzIGEgbGVhayBvZiByZWplY3RlZCBjaGlsZCBzb2NrZXRzIGJ5IGNsZWFuaW5nIHRoZW0gdXAgZGlyZWN0bHkgaW4gYHZzb2NrX2FjY2VwdGAgaW5zdGVhZCBvZiBkZWZlcnJpbmcgdG8gYHZzb2NrX3BlbmRpbmdfd29ya2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgN2Q4Yjk4NDk4N2NlYjAxMTIyNDEyY2I2MzA2MjI1ODNlYmZiOWE3NgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDcgMTU6MjA6MzYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9hZl92c29jay5oIGIvaW5jbHVkZS9uZXQvYWZfdnNvY2suaAppbmRleCAzMDA0NmEzYzIwZjczLi5iNzBjZWE3Zjc1NGY1IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9hZl92c29jay5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2FmX3Zzb2NrLmgKQEAgLTUzLDEyICYjNDM7NTMsMTAgQEAgc3RydWN0IHZzb2NrX3NvY2sgewogCSAqIGZvciBjb25uZWN0aW9uIHJlcXVlc3RzIGFyZSBwbGFjZWQgaW4gdGhlIHBlbmRpbmcgbGlzdCB1bnRpbCB0aGV5CiAJICogYXJlIGNvbm5lY3RlZCwgYXQgd2hpY2ggcG9pbnQgdGhleSBhcmUgcHV0IGluIHRoZSBhY2NlcHQgcXVldWUgbGlzdAogCSAqIHNvIHRoZXkgY2FuIGJlIGFjY2VwdGVkIGluIGFjY2VwdCgpLiAgSWYgYWNjZXB0KCkgY2Fubm90IGFjY2VwdCB0aGUKLQkgKiBjb25uZWN0aW9uLCBpdCBpcyBtYXJrZWQgYXMgcmVqZWN0ZWQgc28gdGhlIGNsZWFudXAgZnVuY3Rpb24ga25vd3MKLQkgKiB0byBjbGVhbiB1cCB0aGUgc29ja2V0LgomIzQzOwkgKiBjb25uZWN0aW9uLCB0aGUgY2hpbGQgaXMgY2xlYW5lZCB1cCBkaXJlY3RseSBpbiB2c29ja19hY2NlcHQoKS4KIAkgKi8KIAlzdHJ1Y3QgbGlzdF9oZWFkIHBlbmRpbmdfbGlua3M7CiAJc3RydWN0IGxpc3RfaGVhZCBhY2NlcHRfcXVldWU7Ci0JYm9vbCByZWplY3RlZDsKIAlzdHJ1Y3QgZGVsYXllZF93b3JrIGNvbm5lY3Rfd29yazsKIAlzdHJ1Y3QgZGVsYXllZF93b3JrIHBlbmRpbmdfd29yazsKIAlzdHJ1Y3QgZGVsYXllZF93b3JrIGNsb3NlX3dvcms7CmRpZmYgLS1naXQgYS9uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMgYi9uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMKaW5kZXggNjIyZGJkMDQ2Nzk5NC4uMjA4NGM4OGFjODM2ZiAxMDA2NDQKLS0tIGEvbmV0L3Ztd192c29jay9hZl92c29jay5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC92bXdfdnNvY2svYWZfdnNvY2suYwpAQCAtMzksOSAmIzQzOzM5LDkgQEAKICAqIGZyb20gdGhlIGxpc3RlbmVyIHNvY2tldCYjMzk7cyBwZW5kaW5nIGxpc3QgYW5kIGVucXVldWVkIGluIHRoZSBsaXN0ZW5lcgogICogc29ja2V0JiMzOTtzIGFjY2VwdCBxdWV1ZS4gIENhbGxlcnMgb2YgYWNjZXB0KDIpIHdpbGwgYWNjZXB0IGNvbm5lY3RlZCBzb2NrZXRzCiAgKiBmcm9tIHRoZSBsaXN0ZW5lciBzb2NrZXQmIzM5O3MgYWNjZXB0IHF1ZXVlLiAgSWYgdGhlIHNvY2tldCBjYW5ub3QgYmUgYWNjZXB0ZWQKLSAqIGZvciBzb21lIHJlYXNvbiB0aGVuIGl0IGlzIG1hcmtlZCByZWplY3RlZC4gIE9uY2UgdGhlIGNvbm5lY3Rpb24gaXMKLSAqIGFjY2VwdGVkLCBpdCBpcyBvd25lZCBieSB0aGUgdXNlciBwcm9jZXNzIGFuZCB0aGUgcmVzcG9uc2liaWxpdHkgZm9yIGNsZWFudXAKLSAqIGZhbGxzIHdpdGggdGhhdCB1c2VyIHByb2Nlc3MuCiYjNDM7ICogZm9yIHNvbWUgcmVhc29uIHRoZW4gaXQgaXMgY2xlYW5lZCB1cCBkaXJlY3RseSBpbiB2c29ja19hY2NlcHQoKS4gIE9uY2UgdGhlCiYjNDM7ICogY29ubmVjdGlvbiBpcyBhY2NlcHRlZCwgaXQgaXMgb3duZWQgYnkgdGhlIHVzZXIgcHJvY2VzcyBhbmQgdGhlCiYjNDM7ICogcmVzcG9uc2liaWxpdHkgZm9yIGNsZWFudXAgZmFsbHMgd2l0aCB0aGF0IHVzZXIgcHJvY2Vzcy4KICAqCiAgKiAtIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlc2UgcGVuZGluZyBzb2NrZXRzIHdpbGwgbmV2ZXIgcmVhY2ggdGhlIGNvbm5lY3RlZAogICogc3RhdGU7IGluIGZhY3QsIHdlIG1heSBuZXZlciByZWNlaXZlIGFub3RoZXIgcGFja2V0IGFmdGVyIHRoZSBjb25uZWN0aW9uCkBAIC00OSw5ICYjNDM7NDksNyBAQAogICogZnV0dXJlLCBhZnRlciBzb21lIGFtb3VudCBvZiB0aW1lIHBhc3NlcyB3aGVyZSBhIGNvbm5lY3Rpb24gc2hvdWxkIGhhdmUgYmVlbgogICogZXN0YWJsaXNoZWQuICBUaGlzIGZ1bmN0aW9uIGVuc3VyZXMgdGhhdCB0aGUgc29ja2V0IGlzIG9mZiBhbGwgbGlzdHMgc28gaXQKICAqIGNhbm5vdCBiZSByZXRyaWV2ZWQsIHRoZW4gZHJvcHMgYWxsIHJlZmVyZW5jZXMgdG8gdGhlIHNvY2tldCBzbyBpdCBpcyBjbGVhbmVkCi0gKiB1cCAoc29ja19wdXQoKSAtJmd0OyBza19mcmVlKCkgLSZndDsgb3VyIHNrX2Rlc3RydWN0IGltcGxlbWVudGF0aW9uKS4gIE5vdGUgdGhpcwotICogZnVuY3Rpb24gd2lsbCBhbHNvIGNsZWFudXAgcmVqZWN0ZWQgc29ja2V0cywgdGhvc2UgdGhhdCByZWFjaCB0aGUgY29ubmVjdGVkCi0gKiBzdGF0ZSBidXQgbGVhdmUgaXQgYmVmb3JlIHRoZXkgaGF2ZSBiZWVuIGFjY2VwdGVkLgomIzQzOyAqIHVwIChzb2NrX3B1dCgpIC0mZ3Q7IHNrX2ZyZWUoKSAtJmd0OyBvdXIgc2tfZGVzdHJ1Y3QgaW1wbGVtZW50YXRpb24pLgogICoKICAqIC0gTG9jayBvcmRlcmluZyBmb3IgcGVuZGluZyBvciBhY2NlcHQgcXVldWUgc29ja2V0cyBpczoKICAqCkBAIC03NzQsMTEgJiM0Mzs3NzIsMTEgQEAgc3RhdGljIHZvaWQgdnNvY2tfcGVuZGluZ193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAogCWlmICh2c29ja19pc19wZW5kaW5nKHNrKSkgewogCQl2c29ja19yZW1vdmVfcGVuZGluZyhsaXN0ZW5lciwgc2spOwotCX0gZWxzZSBpZiAoIXZzay0mZ3Q7cmVqZWN0ZWQpIHsKLQkJLyogV2UgYXJlIG5vdCBvbiB0aGUgcGVuZGluZyBsaXN0IGFuZCBhY2NlcHQoKSBkaWQgbm90IHJlamVjdAotCQkgKiB1cywgc28gd2UgbXVzdCBoYXZlIGJlZW4gYWNjZXB0ZWQgYnkgb3VyIHVzZXIgcHJvY2Vzcy4gIFdlCi0JCSAqIGp1c3QgbmVlZCB0byBkcm9wIG91ciByZWZlcmVuY2VzIHRvIHRoZSBzb2NrZXRzIGFuZCBiZSBvbgotCQkgKiBvdXIgd2F5LgomIzQzOwl9IGVsc2UgewomIzQzOwkJLyogV2UgYXJlIG5vdCBvbiB0aGUgcGVuZGluZyBsaXN0LCBzbyB3ZSBtdXN0IGhhdmUgYmVlbiBhY2NlcHRlZAomIzQzOwkJICogYnkgb3VyIHVzZXIgcHJvY2VzcyAocmVqZWN0ZWQgc29ja2V0cyBhcmUgY2xlYW5lZCB1cCBkaXJlY3RseQomIzQzOwkJICogaW4gdnNvY2tfYWNjZXB0KCkpLiAgV2UganVzdCBuZWVkIHRvIGRyb3Agb3VyIHJlZmVyZW5jZXMgdG8KJiM0MzsJCSAqIHRoZSBzb2NrZXRzIGFuZCBiZSBvbiBvdXIgd2F5LgogCQkgKi8KIAkJY2xlYW51cCA9IGZhbHNlOwogCQlnb3RvIG91dDsKQEAgLTk0Miw3ICYjNDM7OTQwLDYgQEAgc3RhdGljIHN0cnVjdCBzb2NrICpfX3Zzb2NrX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsCiAJdnNrLSZndDtsaXN0ZW5lciA9IE5VTEw7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDt2c2stJmd0O3BlbmRpbmdfbGlua3MpOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7dnNrLSZndDthY2NlcHRfcXVldWUpOwotCXZzay0mZ3Q7cmVqZWN0ZWQgPSBmYWxzZTsKIAl2c2stJmd0O3NlbnRfcmVxdWVzdCA9IGZhbHNlOwogCXZzay0mZ3Q7aWdub3JlX2Nvbm5lY3RpbmdfcnN0ID0gZmFsc2U7CiAJV1JJVEVfT05DRSh2c2stJmd0O3BlZXJfc2h1dGRvd24sIDApOwpAQCAtMTkxOSwxNCAmIzQzOzE5MTYsMTkgQEAgc3RhdGljIGludCB2c29ja19hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jaywKIAkJdmNvbm5lY3RlZCA9IHZzb2NrX3NrKGNvbm5lY3RlZCk7CiAKIAkJLyogSWYgdGhlIGxpc3RlbmVyIHNvY2tldCBoYXMgcmVjZWl2ZWQgYW4gZXJyb3IsIHRoZW4gd2Ugc2hvdWxkCi0JCSAqIHJlamVjdCB0aGlzIHNvY2tldCBhbmQgcmV0dXJuLiAgTm90ZSB0aGF0IHdlIHNpbXBseSBtYXJrIHRoZQotCQkgKiBzb2NrZXQgcmVqZWN0ZWQsIGRyb3Agb3VyIHJlZmVyZW5jZSwgYW5kIGxldCB0aGUgY2xlYW51cAotCQkgKiBmdW5jdGlvbiBoYW5kbGUgdGhlIGNsZWFudXA7IHRoZSBmYWN0IHRoYXQgd2UgZm91bmQgaXQgaW4KLQkJICogdGhlIGxpc3RlbmVyJiMzOTtzIGFjY2VwdCBxdWV1ZSBndWFyYW50ZWVzIHRoYXQgdGhlIGNsZWFudXAKLQkJICogZnVuY3Rpb24gaGFzbiYjMzk7dCBydW4geWV0LgomIzQzOwkJICogcmVqZWN0IHRoaXMgc29ja2V0IGFuZCByZXR1cm4uICBUaGUgY2hpbGQgd2FzIGZvdW5kIG9uIHRoZQomIzQzOwkJICogbGlzdGVuZXImIzM5O3MgYWNjZXB0IHF1ZXVlLCBzbyBpdCBzdGlsbCBob2xkcyB0aGUgcmVmZXJlbmNlcwomIzQzOwkJICogdGFrZW4gYnkgc2tfYWxsb2MoKSwgX192c29ja19pbnNlcnRfY29ubmVjdGVkKCkgYW5kCiYjNDM7CQkgKiB2c29ja19lbnF1ZXVlX2FjY2VwdCgpLiAgRHJvcCB0aGVtIGhlcmUgc28gdGhlIHNvY2tldCBpcwomIzQzOwkJICogZGVzdHJveWVkLiAgV2UgY2Fubm90IGRlZmVyIHRoaXMgdG8gdnNvY2tfcGVuZGluZ193b3JrKCk6CiYjNDM7CQkgKiByZWplY3RlZCBjaGlsZCBzb2NrZXRzIGNyZWF0ZWQgdGhyb3VnaCB2aXJ0aW9fdHJhbnNwb3J0IGFuZAomIzQzOwkJICogdnNvY2tfbG9vcGJhY2sgYXJlIG5vdCBjbGVhbmVkIHVwIGJ5IHRoYXQgd29ya2VyLCBzbyB0aGUKJiM0MzsJCSAqIGNoaWxkIHdvdWxkIG90aGVyd2lzZSBsZWFrIHBlcm1hbmVudGx5LgogCQkgKi8KIAkJaWYgKGVycikgewotCQkJdmNvbm5lY3RlZC0mZ3Q7cmVqZWN0ZWQgPSB0cnVlOwomIzQzOwkJCXZzb2NrX3JlbW92ZV9jb25uZWN0ZWQodmNvbm5lY3RlZCk7CiYjNDM7CQkJY29ubmVjdGVkLSZndDtza19zdGF0ZSA9IFRDUF9DTE9TRTsKJiM0MzsJCQlzb2NrX3B1dChjb25uZWN0ZWQpOwogCQl9IGVsc2UgewogCQkJbmV3c29jay0mZ3Q7c3RhdGUgPSBTU19DT05ORUNURUQ7CiAJCQlzb2NrX2dyYWZ0KGNvbm5lY3RlZCwgbmV3c29jayk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMjkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSB2c29jayBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0JiMzOTtzIGJlZW4gcHJvcG9zZWQgZm9yIHRoZSB2c29jayBpbXBsZW1lbnRhdGlvbiwgc3BlY2lmaWNhbGx5IGluIGBuZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmNgIGFuZCBgaW5jbHVkZS9uZXQvYWZfdnNvY2suaGAuIE15IGltbWVkaWF0ZSB0YWtlYXdheSBpcyB0aGF0IHRoZXkmIzM5O3JlIHN0cmVhbWxpbmluZyB0aGUgc29ja2V0IHJlamVjdGlvbiBwcm9jZXNzLiBUaGUgcGF0Y2ggZWxpbWluYXRlcyB0aGUgYHJlamVjdGVkYCBmaWVsZCB3aXRoaW4gYHN0cnVjdCB2c29ja19zb2NrYC4gRXNzZW50aWFsbHksIHJhdGhlciB0aGFuIG1hcmtpbmcgYSBzb2NrZXQgYW5kIGRlZmVycmluZyB0aGUgY2xlYW51cCwgaXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSBoYW5kbGluZyB0aGUgY2xlYW51cCBkaXJlY3RseSB3aXRoaW4gYHZzb2NrX2FjY2VwdCgpYC4KCkxldCYjMzk7cyBkaXZlIGRlZXBlciBhbmQgdmVyaWZ5IHRoZSBjaGFuZ2VzIGluIGB2c29ja19hY2NlcHRgIHdpdGhpbiBgbmV0L3Ztd192c29jay9hZl92c29jay5jYC4gQWgsIHllcywgaGVyZSB3ZSBnby4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggcmVwbGFjZXMgdGhlIHNldHRpbmcgb2YgYHZjb25uZWN0ZWQtJmd0O3JlamVjdGVkID0gdHJ1ZWAgd2l0aCBhIG1vcmUgZGlyZWN0IGFwcHJvYWNoLiBUaGV5JiMzOTtyZSBub3cgY2FsbGluZyBgdnNvY2tfcmVtb3ZlX2Nvbm5lY3RlZCh2Y29ubmVjdGVkKWAsIHNldHRpbmcgYGNvbm5lY3RlZC0mZ3Q7c2tfc3RhdGUgPSBUQ1BfQ0xPU0VgLCBhbmQgdGhlbiBkb2luZyBhIGBzb2NrX3B1dChjb25uZWN0ZWQpYC4gVGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiB0byB0aGUgY29yZSB2c29jayBoYW5kbGluZywgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBmb3Igb3RoZXIgbW9kdWxlcyBhbmQgcG9zc2libGUgc2lkZS1lZmZlY3RzLgoKQmVmb3JlIEkgZ28gYW55IGRlZXBlciwgSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHdoYXQgY29uZmlnIG9wdGlvbnMgYXJlIHJlbGF0ZWQgdG8gdGhpcy4KCkFscmlnaHQsIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzLCBvYnZpb3VzbHksIGBDT05GSUdfVlNPQ0tFVFNgLiBJJiMzOTtsbCBoYXZlIGEgbG9vayBhdCBgbmV0L3Ztd192c29jay9LY29uZmlnYCB0byBiZSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWU09DS0VUUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrL0tjb25maWctNS1cbm5ldC92bXdfdnNvY2svS2NvbmZpZzo2OmNvbmZpZyBWU09DS0VUU1xubmV0L3Ztd192c29jay9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIFNvY2tldCBwcm90b2NvbFwmIzM0O1xuLS1cbm5ldC92bXdfdnNvY2svS2NvbmZpZy0xOC1cbm5ldC92bXdfdnNvY2svS2NvbmZpZzoxOTpjb25maWcgVlNPQ0tFVFNfRElBR1xubmV0L3Ztd192c29jay9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBTb2NrZXRzIG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L3Ztd192c29jay9LY29uZmlnLTI4LVxubmV0L3Ztd192c29jay9LY29uZmlnOjI5OmNvbmZpZyBWU09DS0VUU19MT09QQkFDS1xubmV0L3Ztd192c29jay9LY29uZmlnLTMwLVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBTb2NrZXRzIGxvb3BiYWNrIHRyYW5zcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMDAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGVzZSB0aG91Z2h0cywgdGFpbG9yZWQgYXMgaWYgSSwgYXMgYW4gZXhwZXJ0LCB3ZXJlIGhhdmluZyB0aGVtOgoKKipWU09DS0VUUyBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGBWU09DS0VUU2AgaGVyZS4gVGhhdCBtZWFucyB3ZSYjMzk7cmUgaW4gdGhlIHJlYWxtIG9mIHZpcnR1YWwgc29ja2V0cywgd2hpY2ggaXMgZ29pbmcgdG8gc2hhcGUgaG93IHdlIHRoaW5rIGFib3V0IHRoaXMuIFRoZSBjcml0aWNhbCBhc3BlY3QgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiB0aGF0JiMzOTtzIGF0IHBsYXkuCgpOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgd2hlcmUgdG8gc3RhcnQgbXkgaW52ZXN0aWdhdGlvbi4gTXkgaW5pdGlhbCBpbmNsaW5hdGlvbiBpcyB0byBsb29rIGF0IHRoZXNlIGZvY3VzIHN5bWJvbHM6IGB2c29ja19hY2NlcHRgIGFuZCBgdnNvY2tfcGVuZGluZ193b3JrYC4gVGhlc2UgZmVlbCBsaWtlIHNvbGlkIGVudHJ5IHBvaW50cywgcGFydGljdWxhcmx5IGB2c29ja19hY2NlcHRgLiBJdCByZXByZXNlbnRzIHRoZSBwcm9jZXNzIG9mIGEgY29ubmVjdGlvbiwgYW5kIHRoZSBvdGhlciByZWxhdGVzIHRvIHdvcmsgdGhhdCBpcyB3YWl0aW5nLiBgdnNvY2tfYWNjZXB0YCBsb29rcyBsaWtlIGEga2V5IHN0YXJ0aW5nIHBvaW50IHRvIGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Zzb2NrX2FjY2VwdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svYWZfdnNvY2suYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtNDEtICogZnJvbSB0aGUgbGlzdGVuZXIgc29ja2V0JiMzOTtzIGFjY2VwdCBxdWV1ZS4gIElmIHRoZSBzb2NrZXQgY2Fubm90IGJlIGFjY2VwdGVkXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmM6NDI6ICogZm9yIHNvbWUgcmVhc29uIHRoZW4gaXQgaXMgY2xlYW5lZCB1cCBkaXJlY3RseSBpbiB2c29ja19hY2NlcHQoKS4gIE9uY2UgdGhlXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtNDMtICogY29ubmVjdGlvbiBpcyBhY2NlcHRlZCwgaXQgaXMgb3duZWQgYnkgdGhlIHVzZXIgcHJvY2VzcyBhbmQgdGhlXG4tLVxubmV0L3Ztd192c29jay9hZl92c29jay5jPTc1OD1zdGF0aWMgdm9pZCB2c29ja19wZW5kaW5nX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYy03NzctXHRcdCAqIGJ5IG91ciB1c2VyIHByb2Nlc3MgKHJlamVjdGVkIHNvY2tldHMgYXJlIGNsZWFuZWQgdXAgZGlyZWN0bHlcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYzo3Nzg6XHRcdCAqIGluIHZzb2NrX2FjY2VwdCgpKS4gIFdlIGp1c3QgbmVlZCB0byBkcm9wIG91ciByZWZlcmVuY2VzIHRvXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtNzc5LVx0XHQgKiB0aGUgc29ja2V0cyBhbmQgYmUgb24gb3VyIHdheS5cbi0tXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmM9MTY3ND1zdGF0aWMgaW50IHZzb2NrX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKmFkZHIsXG4tLVxubmV0L3Ztd192c29jay9hZl92c29jay5jLTE4NjEtXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmM6MTg2MjpzdGF0aWMgaW50IHZzb2NrX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLFxubmV0L3Ztd192c29jay9hZl92c29jay5jLTE4NjMtXHRcdFx0c3RydWN0IHByb3RvX2FjY2VwdF9hcmcgKmFyZylcbi0tXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmM9MjY0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyB2c29ja19zdHJlYW1fb3BzID0ge1xuLS1cbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYy0yNjUyLVx0LnNvY2tldHBhaXIgPSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmM6MjY1MzpcdC5hY2NlcHQgPSB2c29ja19hY2NlcHQsXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtMjY1NC1cdC5nZXRuYW1lID0gdnNvY2tfZ2V0bmFtZSxcbi0tXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmM9MjY2OD1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyB2c29ja19zZXFwYWNrZXRfb3BzID0ge1xuLS1cbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYy0yNjc0LVx0LnNvY2tldHBhaXIgPSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmM6MjY3NTpcdC5hY2NlcHQgPSB2c29ja19hY2NlcHQsXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtMjY3Ni1cdC5nZXRuYW1lID0gdnNvY2tfZ2V0bmFtZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTI0CgkJCQkJCQlvdXRwdXQ6IDEyOQoJCQkJCQkJdGhvdWdodHM6IDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKlZTT0NLIFNvY2tldCBMZWFrIEZpeCBhbmQgRnV6emluZyBDb25zaWRlcmF0aW9uKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdGFyZ2V0cyBhIHByZXR0eSBzcGVjaWZpYyBwcm9ibGVtOiBhIGxlYWsgb2YgcmVqZWN0ZWQgY2hpbGQgc29ja2V0cyBpbiB0aGUgdnNvY2sgc3RyZWFtIGFuZCBzZXFwYWNrZXQgb3BlcmF0aW9ucy4gU3BlY2lmaWNhbGx5LCB0aGUgbGVhayBpcyBvcmlnaW5hdGluZyBmcm9tIGhvdyB3ZSBoYW5kbGUgdGhpbmdzIHdpdGggYHZpcnRpb190cmFuc3BvcnRgIGFuZCBgdnNvY2tfbG9vcGJhY2tgLiBgdnNvY2tfYWNjZXB0YCBoYW5kbGVzIHRoZSBgYWNjZXB0YCBmdW5jdGlvbiBmb3IgYm90aCwgYW5kIGB2c29ja19wZW5kaW5nX3dvcmtgIGlzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uIGludm9sdmVkIGluIHRoZSBwcm9jZXNzLgoKVGhpcyBmaXggaXMgaW50ZXJlc3RpbmcuIFRoZSBmYWN0IHRoYXQgd2UgaGF2ZSBhIG1lbW9yeSBsZWFrIHJlbGF0ZWQgdG8gKnJlamVjdGVkKiBzb2NrZXRzIGlzIGEgZ29vZCBpbmRpY2F0b3IgdGhhdCBzb21ldGhpbmcmIzM5O3Mgb2ZmIGluIHRoZSBlcnJvciBwYXRoIG9yIHRoZSBjbGVhbnVwIHJvdXRpbmVzLiBJdCBzdWdnZXN0cyB0aGUgbm9ybWFsIGNsb3NlIHBhdGggaXMgbmV2ZXIgZ2V0dGluZyBjYWxsZWQgd2hlbiBhIHNvY2tldCBpcyByZWplY3RlZCBieSBhIHNlcnZlci4KCkdpdmVuIHRoZSBwb3RlbnRpYWwgY29tcGxleGl0eSBhbmQgdGhlIGZhY3QgdGhhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHNvY2tldCBtYW5hZ2VtZW50IChhbHdheXMgYSBnb29kIHRhcmdldCksIHRoaXMgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGEgdGhvcm91Z2ggZnV6emluZyBjYW1wYWlnbi4gV2UgbmVlZCB0byBoaXQgdGhpcyB3aXRoIGFsbCBzb3J0cyBvZiBtYWxmb3JtZWQgZGF0YSBhbmQgZWRnZSBjYXNlcyB0byBlbnN1cmUgd2UmIzM5O3ZlIHJlYWxseSBwbHVnZ2VkIHRoZSBob2xlLiBJdCYjMzk7cyBhIHByaW1lIHRhcmdldCBmb3IgY3Jhc2hpbmcgYW5kIG1lbW9yeSBjb3JydXB0aW9uLCBzbyBmdXp6aW5nIGlzIGFsbW9zdCBhIGdpdmVuLiBMZXQmIzM5O3Mgc3RhcnQgYnkgc2V0dGluZyB0aGF0IHVwIGltbWVkaWF0ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWU09DS0VUUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zzb2NrX2FjY2VwdCYjMzQ7LAogICAgJiMzNDt2c29ja19wZW5kaW5nX3dvcmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgdnNvY2sgbG9naWMgZm9yIGhhbmRsaW5nIHJlamVjdGVkIGNvbm5lY3Rpb25zIGluIGB2c29ja19hY2NlcHRgIGFuZCBgdnNvY2tfcGVuZGluZ193b3JrYC4gSXQgZml4ZXMgYSBsZWFrIG9mIHJlamVjdGVkIGNoaWxkIHNvY2tldHMgYnkgY2xlYW5pbmcgdGhlbSB1cCBkaXJlY3RseSBpbiBgdnNvY2tfYWNjZXB0YCBpbnN0ZWFkIG9mIGRlZmVycmluZyB0byBgdnNvY2tfcGVuZGluZ193b3JrYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZTT0NLRVRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dnNvY2tfYWNjZXB0JiMzNDssCiAgICAmIzM0O3Zzb2NrX3BlbmRpbmdfd29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSB2c29jayBsb2dpYyBmb3IgaGFuZGxpbmcgcmVqZWN0ZWQgY29ubmVjdGlvbnMgaW4gYHZzb2NrX2FjY2VwdGAgYW5kIGB2c29ja19wZW5kaW5nX3dvcmtgLiBJdCBmaXhlcyBhIGxlYWsgb2YgcmVqZWN0ZWQgY2hpbGQgc29ja2V0cyBieSBjbGVhbmluZyB0aGVtIHVwIGRpcmVjdGx5IGluIGB2c29ja19hY2NlcHRgIGluc3RlYWQgb2YgZGVmZXJyaW5nIHRvIGB2c29ja19wZW5kaW5nX3dvcmtgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNToyMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjIxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsaWZlY3ljbGUgb2YgdnNvY2sgc29ja2V0cyBkdXJpbmcgdGhlIGBhY2NlcHQoKWAgcHJvY2Vzcy4gU3BlY2lmaWNhbGx5LCBpdCByZW1vdmVzIHRoZSBgcmVqZWN0ZWRgIGZsYWcgZnJvbSBgc3RydWN0IHZzb2NrX3NvY2tgIGFuZCBjaGFuZ2VzIGB2c29ja19hY2NlcHQoKWAgdG8gaW1tZWRpYXRlbHkgY2xlYW4gdXAgYW5kIGRyb3AgcmVmZXJlbmNlcyB0byBhIHJlamVjdGVkIGNoaWxkIHNvY2tldCwgcmF0aGVyIHRoYW4gZGVmZXJyaW5nIHRoZSBjbGVhbnVwIHRvIGB2c29ja19wZW5kaW5nX3dvcmsoKWAuIFRoaXMgYWRkcmVzc2VzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIGxpZmVjeWNsZSBpc3N1ZSB3aGVyZSByZWplY3RlZCBzb2NrZXRzIG1pZ2h0IG5vdCBiZSBjbGVhbmVkIHVwIGJ5IHRoZSBwZW5kaW5nIHdvcmtlci5cblxuVGhlc2UgY2hhbmdlcyBhcmUgcmVsYXRlZCB0byBvYmplY3QgbGlmZWN5Y2xlLCByZWZlcmVuY2UgY291bnRpbmcsIGFuZCBzdGF0ZSBtYW5hZ2VtZW50LiBBbnkgYnVncyBpbnRyb2R1Y2VkIG9yIGZpeGVkIGJ5IHRoaXMgcGF0Y2ggd291bGQgbWFuaWZlc3QgYXMgbWVtb3J5IGxlYWtzLCB1c2UtYWZ0ZXItZnJlZSAoVUFGKSwgb3IgZG91YmxlLWZyZWUgdnVsbmVyYWJpbGl0aWVzLiBTdWNoIGlzc3VlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4gKGZvciBVQUYvZG91YmxlLWZyZWUpIGFuZCBLTUVNTEVBSyAoZm9yIG1lbW9yeSBsZWFrcykuXG5cblRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGRhdGEgc3RydWN0dXJlcywgZG9lcyBub3QgZXhwb3NlIGFueSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBpbnZvbHZlIGNvbXBsZXggaW5pdGlhbGl6YXRpb25zIHdoZXJlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGNvdWxkIGJlIHJlYWQgb3IgbGVha2VkLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDdkOGI5ODQ5ODdjZWIwMTEyMjQxMmNiNjMwNjIyNTgzZWJmYjlhNzYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyA3IDE1OjIwOjM2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvYWZfdnNvY2suaCBiL2luY2x1ZGUvbmV0L2FmX3Zzb2NrLmgKaW5kZXggMzAwNDZhM2MyMGY3My4uYjcwY2VhN2Y3NTRmNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvYWZfdnNvY2suaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9hZl92c29jay5oCkBAIC01MywxMiAmIzQzOzUzLDEwIEBAIHN0cnVjdCB2c29ja19zb2NrIHsKIAkgKiBmb3IgY29ubmVjdGlvbiByZXF1ZXN0cyBhcmUgcGxhY2VkIGluIHRoZSBwZW5kaW5nIGxpc3QgdW50aWwgdGhleQogCSAqIGFyZSBjb25uZWN0ZWQsIGF0IHdoaWNoIHBvaW50IHRoZXkgYXJlIHB1dCBpbiB0aGUgYWNjZXB0IHF1ZXVlIGxpc3QKIAkgKiBzbyB0aGV5IGNhbiBiZSBhY2NlcHRlZCBpbiBhY2NlcHQoKS4gIElmIGFjY2VwdCgpIGNhbm5vdCBhY2NlcHQgdGhlCi0JICogY29ubmVjdGlvbiwgaXQgaXMgbWFya2VkIGFzIHJlamVjdGVkIHNvIHRoZSBjbGVhbnVwIGZ1bmN0aW9uIGtub3dzCi0JICogdG8gY2xlYW4gdXAgdGhlIHNvY2tldC4KJiM0MzsJICogY29ubmVjdGlvbiwgdGhlIGNoaWxkIGlzIGNsZWFuZWQgdXAgZGlyZWN0bHkgaW4gdnNvY2tfYWNjZXB0KCkuCiAJICovCiAJc3RydWN0IGxpc3RfaGVhZCBwZW5kaW5nX2xpbmtzOwogCXN0cnVjdCBsaXN0X2hlYWQgYWNjZXB0X3F1ZXVlOwotCWJvb2wgcmVqZWN0ZWQ7CiAJc3RydWN0IGRlbGF5ZWRfd29yayBjb25uZWN0X3dvcms7CiAJc3RydWN0IGRlbGF5ZWRfd29yayBwZW5kaW5nX3dvcms7CiAJc3RydWN0IGRlbGF5ZWRfd29yayBjbG9zZV93b3JrOwpkaWZmIC0tZ2l0IGEvbmV0L3Ztd192c29jay9hZl92c29jay5jIGIvbmV0L3Ztd192c29jay9hZl92c29jay5jCmluZGV4IDYyMmRiZDA0Njc5OTQuLjIwODRjODhhYzgzNmYgMTAwNjQ0Ci0tLSBhL25ldC92bXdfdnNvY2svYWZfdnNvY2suYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMKQEAgLTM5LDkgJiM0MzszOSw5IEBACiAgKiBmcm9tIHRoZSBsaXN0ZW5lciBzb2NrZXQmIzM5O3MgcGVuZGluZyBsaXN0IGFuZCBlbnF1ZXVlZCBpbiB0aGUgbGlzdGVuZXIKICAqIHNvY2tldCYjMzk7cyBhY2NlcHQgcXVldWUuICBDYWxsZXJzIG9mIGFjY2VwdCgyKSB3aWxsIGFjY2VwdCBjb25uZWN0ZWQgc29ja2V0cwogICogZnJvbSB0aGUgbGlzdGVuZXIgc29ja2V0JiMzOTtzIGFjY2VwdCBxdWV1ZS4gIElmIHRoZSBzb2NrZXQgY2Fubm90IGJlIGFjY2VwdGVkCi0gKiBmb3Igc29tZSByZWFzb24gdGhlbiBpdCBpcyBtYXJrZWQgcmVqZWN0ZWQuICBPbmNlIHRoZSBjb25uZWN0aW9uIGlzCi0gKiBhY2NlcHRlZCwgaXQgaXMgb3duZWQgYnkgdGhlIHVzZXIgcHJvY2VzcyBhbmQgdGhlIHJlc3BvbnNpYmlsaXR5IGZvciBjbGVhbnVwCi0gKiBmYWxscyB3aXRoIHRoYXQgdXNlciBwcm9jZXNzLgomIzQzOyAqIGZvciBzb21lIHJlYXNvbiB0aGVuIGl0IGlzIGNsZWFuZWQgdXAgZGlyZWN0bHkgaW4gdnNvY2tfYWNjZXB0KCkuICBPbmNlIHRoZQomIzQzOyAqIGNvbm5lY3Rpb24gaXMgYWNjZXB0ZWQsIGl0IGlzIG93bmVkIGJ5IHRoZSB1c2VyIHByb2Nlc3MgYW5kIHRoZQomIzQzOyAqIHJlc3BvbnNpYmlsaXR5IGZvciBjbGVhbnVwIGZhbGxzIHdpdGggdGhhdCB1c2VyIHByb2Nlc3MuCiAgKgogICogLSBJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZXNlIHBlbmRpbmcgc29ja2V0cyB3aWxsIG5ldmVyIHJlYWNoIHRoZSBjb25uZWN0ZWQKICAqIHN0YXRlOyBpbiBmYWN0LCB3ZSBtYXkgbmV2ZXIgcmVjZWl2ZSBhbm90aGVyIHBhY2tldCBhZnRlciB0aGUgY29ubmVjdGlvbgpAQCAtNDksOSAmIzQzOzQ5LDcgQEAKICAqIGZ1dHVyZSwgYWZ0ZXIgc29tZSBhbW91bnQgb2YgdGltZSBwYXNzZXMgd2hlcmUgYSBjb25uZWN0aW9uIHNob3VsZCBoYXZlIGJlZW4KICAqIGVzdGFibGlzaGVkLiAgVGhpcyBmdW5jdGlvbiBlbnN1cmVzIHRoYXQgdGhlIHNvY2tldCBpcyBvZmYgYWxsIGxpc3RzIHNvIGl0CiAgKiBjYW5ub3QgYmUgcmV0cmlldmVkLCB0aGVuIGRyb3BzIGFsbCByZWZlcmVuY2VzIHRvIHRoZSBzb2NrZXQgc28gaXQgaXMgY2xlYW5lZAotICogdXAgKHNvY2tfcHV0KCkgLSZndDsgc2tfZnJlZSgpIC0mZ3Q7IG91ciBza19kZXN0cnVjdCBpbXBsZW1lbnRhdGlvbikuICBOb3RlIHRoaXMKLSAqIGZ1bmN0aW9uIHdpbGwgYWxzbyBjbGVhbnVwIHJlamVjdGVkIHNvY2tldHMsIHRob3NlIHRoYXQgcmVhY2ggdGhlIGNvbm5lY3RlZAotICogc3RhdGUgYnV0IGxlYXZlIGl0IGJlZm9yZSB0aGV5IGhhdmUgYmVlbiBhY2NlcHRlZC4KJiM0MzsgKiB1cCAoc29ja19wdXQoKSAtJmd0OyBza19mcmVlKCkgLSZndDsgb3VyIHNrX2Rlc3RydWN0IGltcGxlbWVudGF0aW9uKS4KICAqCiAgKiAtIExvY2sgb3JkZXJpbmcgZm9yIHBlbmRpbmcgb3IgYWNjZXB0IHF1ZXVlIHNvY2tldHMgaXM6CiAgKgpAQCAtNzc0LDExICYjNDM7NzcyLDExIEBAIHN0YXRpYyB2b2lkIHZzb2NrX3BlbmRpbmdfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAKIAlpZiAodnNvY2tfaXNfcGVuZGluZyhzaykpIHsKIAkJdnNvY2tfcmVtb3ZlX3BlbmRpbmcobGlzdGVuZXIsIHNrKTsKLQl9IGVsc2UgaWYgKCF2c2stJmd0O3JlamVjdGVkKSB7Ci0JCS8qIFdlIGFyZSBub3Qgb24gdGhlIHBlbmRpbmcgbGlzdCBhbmQgYWNjZXB0KCkgZGlkIG5vdCByZWplY3QKLQkJICogdXMsIHNvIHdlIG11c3QgaGF2ZSBiZWVuIGFjY2VwdGVkIGJ5IG91ciB1c2VyIHByb2Nlc3MuICBXZQotCQkgKiBqdXN0IG5lZWQgdG8gZHJvcCBvdXIgcmVmZXJlbmNlcyB0byB0aGUgc29ja2V0cyBhbmQgYmUgb24KLQkJICogb3VyIHdheS4KJiM0MzsJfSBlbHNlIHsKJiM0MzsJCS8qIFdlIGFyZSBub3Qgb24gdGhlIHBlbmRpbmcgbGlzdCwgc28gd2UgbXVzdCBoYXZlIGJlZW4gYWNjZXB0ZWQKJiM0MzsJCSAqIGJ5IG91ciB1c2VyIHByb2Nlc3MgKHJlamVjdGVkIHNvY2tldHMgYXJlIGNsZWFuZWQgdXAgZGlyZWN0bHkKJiM0MzsJCSAqIGluIHZzb2NrX2FjY2VwdCgpKS4gIFdlIGp1c3QgbmVlZCB0byBkcm9wIG91ciByZWZlcmVuY2VzIHRvCiYjNDM7CQkgKiB0aGUgc29ja2V0cyBhbmQgYmUgb24gb3VyIHdheS4KIAkJICovCiAJCWNsZWFudXAgPSBmYWxzZTsKIAkJZ290byBvdXQ7CkBAIC05NDIsNyAmIzQzOzk0MCw2IEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqX192c29ja19jcmVhdGUoc3RydWN0IG5ldCAqbmV0LAogCXZzay0mZ3Q7bGlzdGVuZXIgPSBOVUxMOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7dnNrLSZndDtwZW5kaW5nX2xpbmtzKTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO3Zzay0mZ3Q7YWNjZXB0X3F1ZXVlKTsKLQl2c2stJmd0O3JlamVjdGVkID0gZmFsc2U7CiAJdnNrLSZndDtzZW50X3JlcXVlc3QgPSBmYWxzZTsKIAl2c2stJmd0O2lnbm9yZV9jb25uZWN0aW5nX3JzdCA9IGZhbHNlOwogCVdSSVRFX09OQ0UodnNrLSZndDtwZWVyX3NodXRkb3duLCAwKTsKQEAgLTE5MTksMTQgJiM0MzsxOTE2LDE5IEBAIHN0YXRpYyBpbnQgdnNvY2tfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssCiAJCXZjb25uZWN0ZWQgPSB2c29ja19zayhjb25uZWN0ZWQpOwogCiAJCS8qIElmIHRoZSBsaXN0ZW5lciBzb2NrZXQgaGFzIHJlY2VpdmVkIGFuIGVycm9yLCB0aGVuIHdlIHNob3VsZAotCQkgKiByZWplY3QgdGhpcyBzb2NrZXQgYW5kIHJldHVybi4gIE5vdGUgdGhhdCB3ZSBzaW1wbHkgbWFyayB0aGUKLQkJICogc29ja2V0IHJlamVjdGVkLCBkcm9wIG91ciByZWZlcmVuY2UsIGFuZCBsZXQgdGhlIGNsZWFudXAKLQkJICogZnVuY3Rpb24gaGFuZGxlIHRoZSBjbGVhbnVwOyB0aGUgZmFjdCB0aGF0IHdlIGZvdW5kIGl0IGluCi0JCSAqIHRoZSBsaXN0ZW5lciYjMzk7cyBhY2NlcHQgcXVldWUgZ3VhcmFudGVlcyB0aGF0IHRoZSBjbGVhbnVwCi0JCSAqIGZ1bmN0aW9uIGhhc24mIzM5O3QgcnVuIHlldC4KJiM0MzsJCSAqIHJlamVjdCB0aGlzIHNvY2tldCBhbmQgcmV0dXJuLiAgVGhlIGNoaWxkIHdhcyBmb3VuZCBvbiB0aGUKJiM0MzsJCSAqIGxpc3RlbmVyJiMzOTtzIGFjY2VwdCBxdWV1ZSwgc28gaXQgc3RpbGwgaG9sZHMgdGhlIHJlZmVyZW5jZXMKJiM0MzsJCSAqIHRha2VuIGJ5IHNrX2FsbG9jKCksIF9fdnNvY2tfaW5zZXJ0X2Nvbm5lY3RlZCgpIGFuZAomIzQzOwkJICogdnNvY2tfZW5xdWV1ZV9hY2NlcHQoKS4gIERyb3AgdGhlbSBoZXJlIHNvIHRoZSBzb2NrZXQgaXMKJiM0MzsJCSAqIGRlc3Ryb3llZC4gIFdlIGNhbm5vdCBkZWZlciB0aGlzIHRvIHZzb2NrX3BlbmRpbmdfd29yaygpOgomIzQzOwkJICogcmVqZWN0ZWQgY2hpbGQgc29ja2V0cyBjcmVhdGVkIHRocm91Z2ggdmlydGlvX3RyYW5zcG9ydCBhbmQKJiM0MzsJCSAqIHZzb2NrX2xvb3BiYWNrIGFyZSBub3QgY2xlYW5lZCB1cCBieSB0aGF0IHdvcmtlciwgc28gdGhlCiYjNDM7CQkgKiBjaGlsZCB3b3VsZCBvdGhlcndpc2UgbGVhayBwZXJtYW5lbnRseS4KIAkJICovCiAJCWlmIChlcnIpIHsKLQkJCXZjb25uZWN0ZWQtJmd0O3JlamVjdGVkID0gdHJ1ZTsKJiM0MzsJCQl2c29ja19yZW1vdmVfY29ubmVjdGVkKHZjb25uZWN0ZWQpOwomIzQzOwkJCWNvbm5lY3RlZC0mZ3Q7c2tfc3RhdGUgPSBUQ1BfQ0xPU0U7CiYjNDM7CQkJc29ja19wdXQoY29ubmVjdGVkKTsKIAkJfSBlbHNlIHsKIAkJCW5ld3NvY2stJmd0O3N0YXRlID0gU1NfQ09OTkVDVEVEOwogCQkJc29ja19ncmFmdChjb25uZWN0ZWQsIG5ld3NvY2spOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTU6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIyNgoJCQkJCQkJb3V0cHV0OiAyNTQKCQkJCQkJCXRob3VnaHRzOiA1NTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSB2c29jayBTb2NrZXQgTGlmZWN5Y2xlIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgdGFyZ2V0ZWQgYXQgYHZzb2NrX2FjY2VwdGAgaW4gYG5ldC92bXdfdnNvY2svYWZfdnNvY2suY2AgYW5kIGlzIGZvY3VzZWQgb24gc3RyZWFtbGluaW5nIHNvY2tldCBsaWZlY3ljbGUgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IGFyb3VuZCByZWplY3RlZCBzb2NrZXRzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhpcyBpcyBhZGRyZXNzaW5nIGEgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWUg4oCTIGxpa2VseSBhIGxlYWsgb3IgdXNlLWFmdGVyLWZyZWUsIGJhc2VkIG9uIHRoZSBjb250ZXh0LiBJbnN0ZWFkIG9mIG1hcmtpbmcgYSBzb2NrZXQgYXMgcmVqZWN0ZWQgYW5kIGRlZmVycmluZyBjbGVhbnVwLCB0aGUgcGF0Y2ggaXMgbm93IGhhbmRsaW5nIGltbWVkaWF0ZSBjbGVhbnVwIGRpcmVjdGx5IHdpdGhpbiBgdnNvY2tfYWNjZXB0YC4KCk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24mIzM5O3QgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGNoYW5nZXMgaW52b2x2ZSByZW1vdmluZyB0aGUgYHJlamVjdGVkYCBmaWVsZCBmcm9tIGBzdHJ1Y3QgdnNvY2tfc29ja2AgZW50aXJlbHksIHdoaWNoIGFsc28gcmVtb3ZlcyB0aGUgaW5pdGlhbGl6YXRpb24gYHZzay0mZ3Q7cmVqZWN0ZWQgPSBmYWxzZTtgIGluIGBfX3Zzb2NrX2NyZWF0ZWAuICBgdnNvY2tfYWNjZXB0YCBpcyBub3cgZ29pbmcgdG8gY2FsbCBgdnNvY2tfcmVtb3ZlX2Nvbm5lY3RlZGAsIHNldCBgc2tfc3RhdGUgPSBUQ1BfQ0xPU0VgLCBhbmQgYHNvY2tfcHV0YCBkaXJlY3RseSBvbiB0aGUgcmVqZWN0ZWQgc29ja2V0LiAgYHZzb2NrX3BlbmRpbmdfd29ya2AgaXMgbm8gbG9uZ2VyIGNoZWNraW5nIGAhdnNrLSZndDtyZWplY3RlZGAuCgpGcm9tIHdoYXQgSSBjYW4gc2VlLCB0aGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2UgaW4gc29ja2V0IGxpZmVjeWNsZSBhbmQgcmVmZXJlbmNlIGNvdW50aW5nLiBJdOKAmXMgZW50aXJlbHkgYWJvdXQgc3RhdGUgdHJhbnNpdGlvbnMsIG5vdCBkYXRhIHN0cnVjdHVyZSBjaGFuZ2VzIG9yIHVuaW5pdGlhbGl6ZWQgZGF0YS4gQ3JpdGljYWxseSwgbm90aGluZyBuZXcgaXMgYmVpbmcgcGFzc2VkIHVwIHRvIHVzZXIgc3BhY2UgaGVyZS4KCkkmIzM5O20gY29uZmlkZW50IHdlIGRvbiYjMzk7dCBoYXZlIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlIGhlcmUsIHNvIEtNU0FOIGlzbiYjMzk7dCBuZWVkZWQuIFRoaXMgaXMgcHVyZWx5IGEgbGlmZWN5Y2xlIGFuZCBzdGF0ZSBtYWNoaW5lIGNoYW5nZS4gQW55IGlzc3VlcyBpbnRyb2R1Y2VkIGhlcmUgYXJlIG1vcmUgbGlrZWx5IHRvIG1hbmlmZXN0IGFzIGxlYWtzLCB1c2UtYWZ0ZXItZnJlZSAoVUFGKSwgb3IgZG91YmxlLWZyZWUsIHdoaWNoIEtBU0FOIGFuZCBLTUVNTEVBSyBzaG91bGQgcmVhZGlseSBjYXRjaC4gVGhlcmVmb3JlLCBOZWVkc0tNU0FOID0gZmFsc2UuCgpUbyBzdW1tYXJpemUsIHRoaXMgcGF0Y2ggb3B0aW1pemVzIHRoZSBoYW5kbGluZyBvZiByZWplY3RlZCBzb2NrZXRzIGR1cmluZyB0aGUgYGFjY2VwdCgpYCBwcm9jZXNzLiBCeSByZW1vdmluZyB0aGUgYHJlamVjdGVkYCBmbGFnIGFuZCBtb3ZpbmcgY2xlYW51cCB0byBgdnNvY2tfYWNjZXB0KClgLCB0aGUgcGF0Y2ggZml4ZXMgYW4gaXNzdWUgd2hlcmUgcmVqZWN0ZWQgc29ja2V0cyBtaWdodCBub3QgYmUgY2xlYW5lZCB1cCBwcm9wZXJseS4gSXQmIzM5O3MgYSBsaWZlY3ljbGUvcmVmZXJlbmNlLWNvdW50aW5nIGNoYW5nZSwgc28gdGhlIG1ham9yIGJ1Z3Mgb2YgY29uY2VybiBhcmUgbWVtb3J5IGxlYWtzLCBVQUYsIG9yIGRvdWJsZS1mcmVlLiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgYmVjYXVzZSB0aGlzIHBhdGNoIGRvZXMgbm90IGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTU6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxpZmVjeWNsZSBvZiB2c29jayBzb2NrZXRzIGR1cmluZyB0aGUgYGFjY2VwdCgpYCBwcm9jZXNzLiBTcGVjaWZpY2FsbHksIGl0IHJlbW92ZXMgdGhlIGByZWplY3RlZGAgZmxhZyBmcm9tIGBzdHJ1Y3QgdnNvY2tfc29ja2AgYW5kIGNoYW5nZXMgYHZzb2NrX2FjY2VwdCgpYCB0byBpbW1lZGlhdGVseSBjbGVhbiB1cCBhbmQgZHJvcCByZWZlcmVuY2VzIHRvIGEgcmVqZWN0ZWQgY2hpbGQgc29ja2V0LCByYXRoZXIgdGhhbiBkZWZlcnJpbmcgdGhlIGNsZWFudXAgdG8gYHZzb2NrX3BlbmRpbmdfd29yaygpYC4gVGhpcyBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgb3IgbGlmZWN5Y2xlIGlzc3VlIHdoZXJlIHJlamVjdGVkIHNvY2tldHMgbWlnaHQgbm90IGJlIGNsZWFuZWQgdXAgYnkgdGhlIHBlbmRpbmcgd29ya2VyLlxuXG5UaGVzZSBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIG9iamVjdCBsaWZlY3ljbGUsIHJlZmVyZW5jZSBjb3VudGluZywgYW5kIHN0YXRlIG1hbmFnZW1lbnQuIEFueSBidWdzIGludHJvZHVjZWQgb3IgZml4ZWQgYnkgdGhpcyBwYXRjaCB3b3VsZCBtYW5pZmVzdCBhcyBtZW1vcnkgbGVha3MsIHVzZS1hZnRlci1mcmVlIChVQUYpLCBvciBkb3VibGUtZnJlZSB2dWxuZXJhYmlsaXRpZXMuIFN1Y2ggaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiAoZm9yIFVBRi9kb3VibGUtZnJlZSkgYW5kIEtNRU1MRUFLIChmb3IgbWVtb3J5IGxlYWtzKS5cblxuVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBkb2VzIG5vdCBleHBvc2UgYW55IGtlcm5lbCBtZW1vcnkgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGludm9sdmUgY29tcGxleCBpbml0aWFsaXphdGlvbnMgd2hlcmUgdW5pbml0aWFsaXplZCBtZW1vcnkgY291bGQgYmUgcmVhZCBvciBsZWFrZWQuIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uIFN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsaWZlY3ljbGUgb2YgdnNvY2sgc29ja2V0cyBkdXJpbmcgdGhlIGBhY2NlcHQoKWAgcHJvY2Vzcy4gU3BlY2lmaWNhbGx5LCBpdCByZW1vdmVzIHRoZSBgcmVqZWN0ZWRgIGZsYWcgZnJvbSBgc3RydWN0IHZzb2NrX3NvY2tgIGFuZCBjaGFuZ2VzIGB2c29ja19hY2NlcHQoKWAgdG8gaW1tZWRpYXRlbHkgY2xlYW4gdXAgYW5kIGRyb3AgcmVmZXJlbmNlcyB0byBhIHJlamVjdGVkIGNoaWxkIHNvY2tldCwgcmF0aGVyIHRoYW4gZGVmZXJyaW5nIHRoZSBjbGVhbnVwIHRvIGB2c29ja19wZW5kaW5nX3dvcmsoKWAuIFRoaXMgYWRkcmVzc2VzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIGxpZmVjeWNsZSBpc3N1ZSB3aGVyZSByZWplY3RlZCBzb2NrZXRzIG1pZ2h0IG5vdCBiZSBjbGVhbmVkIHVwIGJ5IHRoZSBwZW5kaW5nIHdvcmtlci5cblxuVGhlc2UgY2hhbmdlcyBhcmUgcmVsYXRlZCB0byBvYmplY3QgbGlmZWN5Y2xlLCByZWZlcmVuY2UgY291bnRpbmcsIGFuZCBzdGF0ZSBtYW5hZ2VtZW50LiBBbnkgYnVncyBpbnRyb2R1Y2VkIG9yIGZpeGVkIGJ5IHRoaXMgcGF0Y2ggd291bGQgbWFuaWZlc3QgYXMgbWVtb3J5IGxlYWtzLCB1c2UtYWZ0ZXItZnJlZSAoVUFGKSwgb3IgZG91YmxlLWZyZWUgdnVsbmVyYWJpbGl0aWVzLiBTdWNoIGlzc3VlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4gKGZvciBVQUYvZG91YmxlLWZyZWUpIGFuZCBLTUVNTEVBSyAoZm9yIG1lbW9yeSBsZWFrcykuXG5cblRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGRhdGEgc3RydWN0dXJlcywgZG9lcyBub3QgZXhwb3NlIGFueSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBpbnZvbHZlIGNvbXBsZXggaW5pdGlhbGl6YXRpb25zIHdoZXJlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGNvdWxkIGJlIHJlYWQgb3IgbGVha2VkLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjIwOjM3LjYxODc2NjE5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYyNDgyMjUxMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVlNPQ0tFVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2c29ja19hY2NlcHRcIixcbiAgICBcInZzb2NrX3BlbmRpbmdfd29ya1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxpZmVjeWNsZSBvZiB2c29jayBzb2NrZXRzIGR1cmluZyB0aGUgYGFjY2VwdCgpYCBwcm9jZXNzLiBTcGVjaWZpY2FsbHksIGl0IHJlbW92ZXMgdGhlIGByZWplY3RlZGAgZmxhZyBmcm9tIGBzdHJ1Y3QgdnNvY2tfc29ja2AgYW5kIGNoYW5nZXMgYHZzb2NrX2FjY2VwdCgpYCB0byBpbW1lZGlhdGVseSBjbGVhbiB1cCBhbmQgZHJvcCByZWZlcmVuY2VzIHRvIGEgcmVqZWN0ZWQgY2hpbGQgc29ja2V0LCByYXRoZXIgdGhhbiBkZWZlcnJpbmcgdGhlIGNsZWFudXAgdG8gYHZzb2NrX3BlbmRpbmdfd29yaygpYC4gVGhpcyBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgb3IgbGlmZWN5Y2xlIGlzc3VlIHdoZXJlIHJlamVjdGVkIHNvY2tldHMgbWlnaHQgbm90IGJlIGNsZWFuZWQgdXAgYnkgdGhlIHBlbmRpbmcgd29ya2VyLlxcblxcblRoZXNlIGNoYW5nZXMgYXJlIHJlbGF0ZWQgdG8gb2JqZWN0IGxpZmVjeWNsZSwgcmVmZXJlbmNlIGNvdW50aW5nLCBhbmQgc3RhdGUgbWFuYWdlbWVudC4gQW55IGJ1Z3MgaW50cm9kdWNlZCBvciBmaXhlZCBieSB0aGlzIHBhdGNoIHdvdWxkIG1hbmlmZXN0IGFzIG1lbW9yeSBsZWFrcywgdXNlLWFmdGVyLWZyZWUgKFVBRiksIG9yIGRvdWJsZS1mcmVlIHZ1bG5lcmFiaWxpdGllcy4gU3VjaCBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIChmb3IgVUFGL2RvdWJsZS1mcmVlKSBhbmQgS01FTUxFQUsgKGZvciBtZW1vcnkgbGVha3MpLlxcblxcblRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGRhdGEgc3RydWN0dXJlcywgZG9lcyBub3QgZXhwb3NlIGFueSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBpbnZvbHZlIGNvbXBsZXggaW5pdGlhbGl6YXRpb25zIHdoZXJlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGNvdWxkIGJlIHJlYWQgb3IgbGVha2VkLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgdnNvY2sgbG9naWMgZm9yIGhhbmRsaW5nIHJlamVjdGVkIGNvbm5lY3Rpb25zIGluIGB2c29ja19hY2NlcHRgIGFuZCBgdnNvY2tfcGVuZGluZ193b3JrYC4gSXQgZml4ZXMgYSBsZWFrIG9mIHJlamVjdGVkIGNoaWxkIHNvY2tldHMgYnkgY2xlYW5pbmcgdGhlbSB1cCBkaXJlY3RseSBpbiBgdnNvY2tfYWNjZXB0YCBpbnN0ZWFkIG9mIGRlZmVycmluZyB0byBgdnNvY2tfcGVuZGluZ193b3JrYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjIwOjM3LjYxODc3MjE5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjQ4MzQ2OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3ZDhiOTg0OTg3Y2ViMDExMjI0MTJjYjYzMDYyMjU4M2ViZmI5YTc2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDcgMTU6MjA6MzYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvYWZfdnNvY2suaCBiL2luY2x1ZGUvbmV0L2FmX3Zzb2NrLmhcXG5pbmRleCAzMDA0NmEzYzIwZjczLi5iNzBjZWE3Zjc1NGY1IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L2FmX3Zzb2NrLmhcXG4rKysgYi9pbmNsdWRlL25ldC9hZl92c29jay5oXFxuQEAgLTUzLDEyICs1MywxMCBAQCBzdHJ1Y3QgdnNvY2tfc29jayB7XFxuIFxcdCAqIGZvciBjb25uZWN0aW9uIHJlcXVlc3RzIGFyZSBwbGFjZWQgaW4gdGhlIHBlbmRpbmcgbGlzdCB1bnRpbCB0aGV5XFxuIFxcdCAqIGFyZSBjb25uZWN0ZWQsIGF0IHdoaWNoIHBvaW50IHRoZXkgYXJlIHB1dCBpbiB0aGUgYWNjZXB0IHF1ZXVlIGxpc3RcXG4gXFx0ICogc28gdGhleSBjYW4gYmUgYWNjZXB0ZWQgaW4gYWNjZXB0KCkuICBJZiBhY2NlcHQoKSBjYW5ub3QgYWNjZXB0IHRoZVxcbi1cXHQgKiBjb25uZWN0aW9uLCBpdCBpcyBtYXJrZWQgYXMgcmVqZWN0ZWQgc28gdGhlIGNsZWFudXAgZnVuY3Rpb24ga25vd3NcXG4tXFx0ICogdG8gY2xlYW4gdXAgdGhlIHNvY2tldC5cXG4rXFx0ICogY29ubmVjdGlvbiwgdGhlIGNoaWxkIGlzIGNsZWFuZWQgdXAgZGlyZWN0bHkgaW4gdnNvY2tfYWNjZXB0KCkuXFxuIFxcdCAqL1xcbiBcXHRzdHJ1Y3QgbGlzdF9oZWFkIHBlbmRpbmdfbGlua3M7XFxuIFxcdHN0cnVjdCBsaXN0X2hlYWQgYWNjZXB0X3F1ZXVlO1xcbi1cXHRib29sIHJlamVjdGVkO1xcbiBcXHRzdHJ1Y3QgZGVsYXllZF93b3JrIGNvbm5lY3Rfd29yaztcXG4gXFx0c3RydWN0IGRlbGF5ZWRfd29yayBwZW5kaW5nX3dvcms7XFxuIFxcdHN0cnVjdCBkZWxheWVkX3dvcmsgY2xvc2Vfd29yaztcXG5kaWZmIC0tZ2l0IGEvbmV0L3Ztd192c29jay9hZl92c29jay5jIGIvbmV0L3Ztd192c29jay9hZl92c29jay5jXFxuaW5kZXggNjIyZGJkMDQ2Nzk5NC4uMjA4NGM4OGFjODM2ZiAxMDA2NDRcXG4tLS0gYS9uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmNcXG4rKysgYi9uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmNcXG5AQCAtMzksOSArMzksOSBAQFxcbiAgKiBmcm9tIHRoZSBsaXN0ZW5lciBzb2NrZXQncyBwZW5kaW5nIGxpc3QgYW5kIGVucXVldWVkIGluIHRoZSBsaXN0ZW5lclxcbiAgKiBzb2NrZXQncyBhY2NlcHQgcXVldWUuICBDYWxsZXJzIG9mIGFjY2VwdCgyKSB3aWxsIGFjY2VwdCBjb25uZWN0ZWQgc29ja2V0c1xcbiAgKiBmcm9tIHRoZSBsaXN0ZW5lciBzb2NrZXQncyBhY2NlcHQgcXVldWUuICBJZiB0aGUgc29ja2V0IGNhbm5vdCBiZSBhY2NlcHRlZFxcbi0gKiBmb3Igc29tZSByZWFzb24gdGhlbiBpdCBpcyBtYXJrZWQgcmVqZWN0ZWQuICBPbmNlIHRoZSBjb25uZWN0aW9uIGlzXFxuLSAqIGFjY2VwdGVkLCBpdCBpcyBvd25lZCBieSB0aGUgdXNlciBwcm9jZXNzIGFuZCB0aGUgcmVzcG9uc2liaWxpdHkgZm9yIGNsZWFudXBcXG4tICogZmFsbHMgd2l0aCB0aGF0IHVzZXIgcHJvY2Vzcy5cXG4rICogZm9yIHNvbWUgcmVhc29uIHRoZW4gaXQgaXMgY2xlYW5lZCB1cCBkaXJlY3RseSBpbiB2c29ja19hY2NlcHQoKS4gIE9uY2UgdGhlXFxuKyAqIGNvbm5lY3Rpb24gaXMgYWNjZXB0ZWQsIGl0IGlzIG93bmVkIGJ5IHRoZSB1c2VyIHByb2Nlc3MgYW5kIHRoZVxcbisgKiByZXNwb25zaWJpbGl0eSBmb3IgY2xlYW51cCBmYWxscyB3aXRoIHRoYXQgdXNlciBwcm9jZXNzLlxcbiAgKlxcbiAgKiAtIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlc2UgcGVuZGluZyBzb2NrZXRzIHdpbGwgbmV2ZXIgcmVhY2ggdGhlIGNvbm5lY3RlZFxcbiAgKiBzdGF0ZTsgaW4gZmFjdCwgd2UgbWF5IG5ldmVyIHJlY2VpdmUgYW5vdGhlciBwYWNrZXQgYWZ0ZXIgdGhlIGNvbm5lY3Rpb25cXG5AQCAtNDksOSArNDksNyBAQFxcbiAgKiBmdXR1cmUsIGFmdGVyIHNvbWUgYW1vdW50IG9mIHRpbWUgcGFzc2VzIHdoZXJlIGEgY29ubmVjdGlvbiBzaG91bGQgaGF2ZSBiZWVuXFxuICAqIGVzdGFibGlzaGVkLiAgVGhpcyBmdW5jdGlvbiBlbnN1cmVzIHRoYXQgdGhlIHNvY2tldCBpcyBvZmYgYWxsIGxpc3RzIHNvIGl0XFxuICAqIGNhbm5vdCBiZSByZXRyaWV2ZWQsIHRoZW4gZHJvcHMgYWxsIHJlZmVyZW5jZXMgdG8gdGhlIHNvY2tldCBzbyBpdCBpcyBjbGVhbmVkXFxuLSAqIHVwIChzb2NrX3B1dCgpIC1cXHUwMDNlIHNrX2ZyZWUoKSAtXFx1MDAzZSBvdXIgc2tfZGVzdHJ1Y3QgaW1wbGVtZW50YXRpb24pLiAgTm90ZSB0aGlzXFxuLSAqIGZ1bmN0aW9uIHdpbGwgYWxzbyBjbGVhbnVwIHJlamVjdGVkIHNvY2tldHMsIHRob3NlIHRoYXQgcmVhY2ggdGhlIGNvbm5lY3RlZFxcbi0gKiBzdGF0ZSBidXQgbGVhdmUgaXQgYmVmb3JlIHRoZXkgaGF2ZSBiZWVuIGFjY2VwdGVkLlxcbisgKiB1cCAoc29ja19wdXQoKSAtXFx1MDAzZSBza19mcmVlKCkgLVxcdTAwM2Ugb3VyIHNrX2Rlc3RydWN0IGltcGxlbWVudGF0aW9uKS5cXG4gICpcXG4gICogLSBMb2NrIG9yZGVyaW5nIGZvciBwZW5kaW5nIG9yIGFjY2VwdCBxdWV1ZSBzb2NrZXRzIGlzOlxcbiAgKlxcbkBAIC03NzQsMTEgKzc3MiwxMSBAQCBzdGF0aWMgdm9pZCB2c29ja19wZW5kaW5nX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXG4gXFx0aWYgKHZzb2NrX2lzX3BlbmRpbmcoc2spKSB7XFxuIFxcdFxcdHZzb2NrX3JlbW92ZV9wZW5kaW5nKGxpc3RlbmVyLCBzayk7XFxuLVxcdH0gZWxzZSBpZiAoIXZzay1cXHUwMDNlcmVqZWN0ZWQpIHtcXG4tXFx0XFx0LyogV2UgYXJlIG5vdCBvbiB0aGUgcGVuZGluZyBsaXN0IGFuZCBhY2NlcHQoKSBkaWQgbm90IHJlamVjdFxcbi1cXHRcXHQgKiB1cywgc28gd2UgbXVzdCBoYXZlIGJlZW4gYWNjZXB0ZWQgYnkgb3VyIHVzZXIgcHJvY2Vzcy4gIFdlXFxuLVxcdFxcdCAqIGp1c3QgbmVlZCB0byBkcm9wIG91ciByZWZlcmVuY2VzIHRvIHRoZSBzb2NrZXRzIGFuZCBiZSBvblxcbi1cXHRcXHQgKiBvdXIgd2F5LlxcbitcXHR9IGVsc2Uge1xcbitcXHRcXHQvKiBXZSBhcmUgbm90IG9uIHRoZSBwZW5kaW5nIGxpc3QsIHNvIHdlIG11c3QgaGF2ZSBiZWVuIGFjY2VwdGVkXFxuK1xcdFxcdCAqIGJ5IG91ciB1c2VyIHByb2Nlc3MgKHJlamVjdGVkIHNvY2tldHMgYXJlIGNsZWFuZWQgdXAgZGlyZWN0bHlcXG4rXFx0XFx0ICogaW4gdnNvY2tfYWNjZXB0KCkpLiAgV2UganVzdCBuZWVkIHRvIGRyb3Agb3VyIHJlZmVyZW5jZXMgdG9cXG4rXFx0XFx0ICogdGhlIHNvY2tldHMgYW5kIGJlIG9uIG91ciB3YXkuXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRjbGVhbnVwID0gZmFsc2U7XFxuIFxcdFxcdGdvdG8gb3V0O1xcbkBAIC05NDIsNyArOTQwLDYgQEAgc3RhdGljIHN0cnVjdCBzb2NrICpfX3Zzb2NrX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsXFxuIFxcdHZzay1cXHUwMDNlbGlzdGVuZXIgPSBOVUxMO1xcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2dnNrLVxcdTAwM2VwZW5kaW5nX2xpbmtzKTtcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNnZzay1cXHUwMDNlYWNjZXB0X3F1ZXVlKTtcXG4tXFx0dnNrLVxcdTAwM2VyZWplY3RlZCA9IGZhbHNlO1xcbiBcXHR2c2stXFx1MDAzZXNlbnRfcmVxdWVzdCA9IGZhbHNlO1xcbiBcXHR2c2stXFx1MDAzZWlnbm9yZV9jb25uZWN0aW5nX3JzdCA9IGZhbHNlO1xcbiBcXHRXUklURV9PTkNFKHZzay1cXHUwMDNlcGVlcl9zaHV0ZG93biwgMCk7XFxuQEAgLTE5MTksMTQgKzE5MTYsMTkgQEAgc3RhdGljIGludCB2c29ja19hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jayxcXG4gXFx0XFx0dmNvbm5lY3RlZCA9IHZzb2NrX3NrKGNvbm5lY3RlZCk7XFxuIFxcbiBcXHRcXHQvKiBJZiB0aGUgbGlzdGVuZXIgc29ja2V0IGhhcyByZWNlaXZlZCBhbiBlcnJvciwgdGhlbiB3ZSBzaG91bGRcXG4tXFx0XFx0ICogcmVqZWN0IHRoaXMgc29ja2V0IGFuZCByZXR1cm4uICBOb3RlIHRoYXQgd2Ugc2ltcGx5IG1hcmsgdGhlXFxuLVxcdFxcdCAqIHNvY2tldCByZWplY3RlZCwgZHJvcCBvdXIgcmVmZXJlbmNlLCBhbmQgbGV0IHRoZSBjbGVhbnVwXFxuLVxcdFxcdCAqIGZ1bmN0aW9uIGhhbmRsZSB0aGUgY2xlYW51cDsgdGhlIGZhY3QgdGhhdCB3ZSBmb3VuZCBpdCBpblxcbi1cXHRcXHQgKiB0aGUgbGlzdGVuZXIncyBhY2NlcHQgcXVldWUgZ3VhcmFudGVlcyB0aGF0IHRoZSBjbGVhbnVwXFxuLVxcdFxcdCAqIGZ1bmN0aW9uIGhhc24ndCBydW4geWV0LlxcbitcXHRcXHQgKiByZWplY3QgdGhpcyBzb2NrZXQgYW5kIHJldHVybi4gIFRoZSBjaGlsZCB3YXMgZm91bmQgb24gdGhlXFxuK1xcdFxcdCAqIGxpc3RlbmVyJ3MgYWNjZXB0IHF1ZXVlLCBzbyBpdCBzdGlsbCBob2xkcyB0aGUgcmVmZXJlbmNlc1xcbitcXHRcXHQgKiB0YWtlbiBieSBza19hbGxvYygpLCBfX3Zzb2NrX2luc2VydF9jb25uZWN0ZWQoKSBhbmRcXG4rXFx0XFx0ICogdnNvY2tfZW5xdWV1ZV9hY2NlcHQoKS4gIERyb3AgdGhlbSBoZXJlIHNvIHRoZSBzb2NrZXQgaXNcXG4rXFx0XFx0ICogZGVzdHJveWVkLiAgV2UgY2Fubm90IGRlZmVyIHRoaXMgdG8gdnNvY2tfcGVuZGluZ193b3JrKCk6XFxuK1xcdFxcdCAqIHJlamVjdGVkIGNoaWxkIHNvY2tldHMgY3JlYXRlZCB0aHJvdWdoIHZpcnRpb190cmFuc3BvcnQgYW5kXFxuK1xcdFxcdCAqIHZzb2NrX2xvb3BiYWNrIGFyZSBub3QgY2xlYW5lZCB1cCBieSB0aGF0IHdvcmtlciwgc28gdGhlXFxuK1xcdFxcdCAqIGNoaWxkIHdvdWxkIG90aGVyd2lzZSBsZWFrIHBlcm1hbmVudGx5LlxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0aWYgKGVycikge1xcbi1cXHRcXHRcXHR2Y29ubmVjdGVkLVxcdTAwM2VyZWplY3RlZCA9IHRydWU7XFxuK1xcdFxcdFxcdHZzb2NrX3JlbW92ZV9jb25uZWN0ZWQodmNvbm5lY3RlZCk7XFxuK1xcdFxcdFxcdGNvbm5lY3RlZC1cXHUwMDNlc2tfc3RhdGUgPSBUQ1BfQ0xPU0U7XFxuK1xcdFxcdFxcdHNvY2tfcHV0KGNvbm5lY3RlZCk7XFxuIFxcdFxcdH0gZWxzZSB7XFxuIFxcdFxcdFxcdG5ld3NvY2stXFx1MDAzZXN0YXRlID0gU1NfQ09OTkVDVEVEO1xcbiBcXHRcXHRcXHRzb2NrX2dyYWZ0KGNvbm5lY3RlZCwgbmV3c29jayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjIwOjM4LjE0NDU5NjI0NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM0MTUzNTgyMDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZTT0NLRVRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidnNvY2tfYWNjZXB0XCIsXG4gICAgXCJ2c29ja19wZW5kaW5nX3dvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSB2c29jayBsb2dpYyBmb3IgaGFuZGxpbmcgcmVqZWN0ZWQgY29ubmVjdGlvbnMgaW4gYHZzb2NrX2FjY2VwdGAgYW5kIGB2c29ja19wZW5kaW5nX3dvcmtgLiBJdCBmaXhlcyBhIGxlYWsgb2YgcmVqZWN0ZWQgY2hpbGQgc29ja2V0cyBieSBjbGVhbmluZyB0aGVtIHVwIGRpcmVjdGx5IGluIGB2c29ja19hY2NlcHRgIGluc3RlYWQgb2YgZGVmZXJyaW5nIHRvIGB2c29ja19wZW5kaW5nX3dvcmtgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgN2Q4Yjk4NDk4N2NlYjAxMTIyNDEyY2I2MzA2MjI1ODNlYmZiOWE3NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMTU6MjA6MzYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9hZl92c29jay5oIGIvaW5jbHVkZS9uZXQvYWZfdnNvY2suaFxuaW5kZXggMzAwNDZhM2MyMGY3My4uYjcwY2VhN2Y3NTRmNSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2FmX3Zzb2NrLmhcbisrKyBiL2luY2x1ZGUvbmV0L2FmX3Zzb2NrLmhcbkBAIC01MywxMiArNTMsMTAgQEAgc3RydWN0IHZzb2NrX3NvY2sge1xuIFx0ICogZm9yIGNvbm5lY3Rpb24gcmVxdWVzdHMgYXJlIHBsYWNlZCBpbiB0aGUgcGVuZGluZyBsaXN0IHVudGlsIHRoZXlcbiBcdCAqIGFyZSBjb25uZWN0ZWQsIGF0IHdoaWNoIHBvaW50IHRoZXkgYXJlIHB1dCBpbiB0aGUgYWNjZXB0IHF1ZXVlIGxpc3RcbiBcdCAqIHNvIHRoZXkgY2FuIGJlIGFjY2VwdGVkIGluIGFjY2VwdCgpLiAgSWYgYWNjZXB0KCkgY2Fubm90IGFjY2VwdCB0aGVcbi1cdCAqIGNvbm5lY3Rpb24sIGl0IGlzIG1hcmtlZCBhcyByZWplY3RlZCBzbyB0aGUgY2xlYW51cCBmdW5jdGlvbiBrbm93c1xuLVx0ICogdG8gY2xlYW4gdXAgdGhlIHNvY2tldC5cbitcdCAqIGNvbm5lY3Rpb24sIHRoZSBjaGlsZCBpcyBjbGVhbmVkIHVwIGRpcmVjdGx5IGluIHZzb2NrX2FjY2VwdCgpLlxuIFx0ICovXG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIHBlbmRpbmdfbGlua3M7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIGFjY2VwdF9xdWV1ZTtcbi1cdGJvb2wgcmVqZWN0ZWQ7XG4gXHRzdHJ1Y3QgZGVsYXllZF93b3JrIGNvbm5lY3Rfd29yaztcbiBcdHN0cnVjdCBkZWxheWVkX3dvcmsgcGVuZGluZ193b3JrO1xuIFx0c3RydWN0IGRlbGF5ZWRfd29yayBjbG9zZV93b3JrO1xuZGlmZiAtLWdpdCBhL25ldC92bXdfdnNvY2svYWZfdnNvY2suYyBiL25ldC92bXdfdnNvY2svYWZfdnNvY2suY1xuaW5kZXggNjIyZGJkMDQ2Nzk5NC4uMjA4NGM4OGFjODM2ZiAxMDA2NDRcbi0tLSBhL25ldC92bXdfdnNvY2svYWZfdnNvY2suY1xuKysrIGIvbmV0L3Ztd192c29jay9hZl92c29jay5jXG5AQCAtMzksOSArMzksOSBAQFxuICAqIGZyb20gdGhlIGxpc3RlbmVyIHNvY2tldCdzIHBlbmRpbmcgbGlzdCBhbmQgZW5xdWV1ZWQgaW4gdGhlIGxpc3RlbmVyXG4gICogc29ja2V0J3MgYWNjZXB0IHF1ZXVlLiAgQ2FsbGVycyBvZiBhY2NlcHQoMikgd2lsbCBhY2NlcHQgY29ubmVjdGVkIHNvY2tldHNcbiAgKiBmcm9tIHRoZSBsaXN0ZW5lciBzb2NrZXQncyBhY2NlcHQgcXVldWUuICBJZiB0aGUgc29ja2V0IGNhbm5vdCBiZSBhY2NlcHRlZFxuLSAqIGZvciBzb21lIHJlYXNvbiB0aGVuIGl0IGlzIG1hcmtlZCByZWplY3RlZC4gIE9uY2UgdGhlIGNvbm5lY3Rpb24gaXNcbi0gKiBhY2NlcHRlZCwgaXQgaXMgb3duZWQgYnkgdGhlIHVzZXIgcHJvY2VzcyBhbmQgdGhlIHJlc3BvbnNpYmlsaXR5IGZvciBjbGVhbnVwXG4tICogZmFsbHMgd2l0aCB0aGF0IHVzZXIgcHJvY2Vzcy5cbisgKiBmb3Igc29tZSByZWFzb24gdGhlbiBpdCBpcyBjbGVhbmVkIHVwIGRpcmVjdGx5IGluIHZzb2NrX2FjY2VwdCgpLiAgT25jZSB0aGVcbisgKiBjb25uZWN0aW9uIGlzIGFjY2VwdGVkLCBpdCBpcyBvd25lZCBieSB0aGUgdXNlciBwcm9jZXNzIGFuZCB0aGVcbisgKiByZXNwb25zaWJpbGl0eSBmb3IgY2xlYW51cCBmYWxscyB3aXRoIHRoYXQgdXNlciBwcm9jZXNzLlxuICAqXG4gICogLSBJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZXNlIHBlbmRpbmcgc29ja2V0cyB3aWxsIG5ldmVyIHJlYWNoIHRoZSBjb25uZWN0ZWRcbiAgKiBzdGF0ZTsgaW4gZmFjdCwgd2UgbWF5IG5ldmVyIHJlY2VpdmUgYW5vdGhlciBwYWNrZXQgYWZ0ZXIgdGhlIGNvbm5lY3Rpb25cbkBAIC00OSw5ICs0OSw3IEBAXG4gICogZnV0dXJlLCBhZnRlciBzb21lIGFtb3VudCBvZiB0aW1lIHBhc3NlcyB3aGVyZSBhIGNvbm5lY3Rpb24gc2hvdWxkIGhhdmUgYmVlblxuICAqIGVzdGFibGlzaGVkLiAgVGhpcyBmdW5jdGlvbiBlbnN1cmVzIHRoYXQgdGhlIHNvY2tldCBpcyBvZmYgYWxsIGxpc3RzIHNvIGl0XG4gICogY2Fubm90IGJlIHJldHJpZXZlZCwgdGhlbiBkcm9wcyBhbGwgcmVmZXJlbmNlcyB0byB0aGUgc29ja2V0IHNvIGl0IGlzIGNsZWFuZWRcbi0gKiB1cCAoc29ja19wdXQoKSAtXHUwMDNlIHNrX2ZyZWUoKSAtXHUwMDNlIG91ciBza19kZXN0cnVjdCBpbXBsZW1lbnRhdGlvbikuICBOb3RlIHRoaXNcbi0gKiBmdW5jdGlvbiB3aWxsIGFsc28gY2xlYW51cCByZWplY3RlZCBzb2NrZXRzLCB0aG9zZSB0aGF0IHJlYWNoIHRoZSBjb25uZWN0ZWRcbi0gKiBzdGF0ZSBidXQgbGVhdmUgaXQgYmVmb3JlIHRoZXkgaGF2ZSBiZWVuIGFjY2VwdGVkLlxuKyAqIHVwIChzb2NrX3B1dCgpIC1cdTAwM2Ugc2tfZnJlZSgpIC1cdTAwM2Ugb3VyIHNrX2Rlc3RydWN0IGltcGxlbWVudGF0aW9uKS5cbiAgKlxuICAqIC0gTG9jayBvcmRlcmluZyBmb3IgcGVuZGluZyBvciBhY2NlcHQgcXVldWUgc29ja2V0cyBpczpcbiAgKlxuQEAgLTc3NCwxMSArNzcyLDExIEBAIHN0YXRpYyB2b2lkIHZzb2NrX3BlbmRpbmdfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXG4gXHRpZiAodnNvY2tfaXNfcGVuZGluZyhzaykpIHtcbiBcdFx0dnNvY2tfcmVtb3ZlX3BlbmRpbmcobGlzdGVuZXIsIHNrKTtcbi1cdH0gZWxzZSBpZiAoIXZzay1cdTAwM2VyZWplY3RlZCkge1xuLVx0XHQvKiBXZSBhcmUgbm90IG9uIHRoZSBwZW5kaW5nIGxpc3QgYW5kIGFjY2VwdCgpIGRpZCBub3QgcmVqZWN0XG4tXHRcdCAqIHVzLCBzbyB3ZSBtdXN0IGhhdmUgYmVlbiBhY2NlcHRlZCBieSBvdXIgdXNlciBwcm9jZXNzLiAgV2Vcbi1cdFx0ICoganVzdCBuZWVkIHRvIGRyb3Agb3VyIHJlZmVyZW5jZXMgdG8gdGhlIHNvY2tldHMgYW5kIGJlIG9uXG4tXHRcdCAqIG91ciB3YXkuXG4rXHR9IGVsc2Uge1xuK1x0XHQvKiBXZSBhcmUgbm90IG9uIHRoZSBwZW5kaW5nIGxpc3QsIHNvIHdlIG11c3QgaGF2ZSBiZWVuIGFjY2VwdGVkXG4rXHRcdCAqIGJ5IG91ciB1c2VyIHByb2Nlc3MgKHJlamVjdGVkIHNvY2tldHMgYXJlIGNsZWFuZWQgdXAgZGlyZWN0bHlcbitcdFx0ICogaW4gdnNvY2tfYWNjZXB0KCkpLiAgV2UganVzdCBuZWVkIHRvIGRyb3Agb3VyIHJlZmVyZW5jZXMgdG9cbitcdFx0ICogdGhlIHNvY2tldHMgYW5kIGJlIG9uIG91ciB3YXkuXG4gXHRcdCAqL1xuIFx0XHRjbGVhbnVwID0gZmFsc2U7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTk0Miw3ICs5NDAsNiBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKl9fdnNvY2tfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCxcbiBcdHZzay1cdTAwM2VsaXN0ZW5lciA9IE5VTEw7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZ2c2stXHUwMDNlcGVuZGluZ19saW5rcyk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZ2c2stXHUwMDNlYWNjZXB0X3F1ZXVlKTtcbi1cdHZzay1cdTAwM2VyZWplY3RlZCA9IGZhbHNlO1xuIFx0dnNrLVx1MDAzZXNlbnRfcmVxdWVzdCA9IGZhbHNlO1xuIFx0dnNrLVx1MDAzZWlnbm9yZV9jb25uZWN0aW5nX3JzdCA9IGZhbHNlO1xuIFx0V1JJVEVfT05DRSh2c2stXHUwMDNlcGVlcl9zaHV0ZG93biwgMCk7XG5AQCAtMTkxOSwxNCArMTkxNiwxOSBAQCBzdGF0aWMgaW50IHZzb2NrX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLFxuIFx0XHR2Y29ubmVjdGVkID0gdnNvY2tfc2soY29ubmVjdGVkKTtcbiBcbiBcdFx0LyogSWYgdGhlIGxpc3RlbmVyIHNvY2tldCBoYXMgcmVjZWl2ZWQgYW4gZXJyb3IsIHRoZW4gd2Ugc2hvdWxkXG4tXHRcdCAqIHJlamVjdCB0aGlzIHNvY2tldCBhbmQgcmV0dXJuLiAgTm90ZSB0aGF0IHdlIHNpbXBseSBtYXJrIHRoZVxuLVx0XHQgKiBzb2NrZXQgcmVqZWN0ZWQsIGRyb3Agb3VyIHJlZmVyZW5jZSwgYW5kIGxldCB0aGUgY2xlYW51cFxuLVx0XHQgKiBmdW5jdGlvbiBoYW5kbGUgdGhlIGNsZWFudXA7IHRoZSBmYWN0IHRoYXQgd2UgZm91bmQgaXQgaW5cbi1cdFx0ICogdGhlIGxpc3RlbmVyJ3MgYWNjZXB0IHF1ZXVlIGd1YXJhbnRlZXMgdGhhdCB0aGUgY2xlYW51cFxuLVx0XHQgKiBmdW5jdGlvbiBoYXNuJ3QgcnVuIHlldC5cbitcdFx0ICogcmVqZWN0IHRoaXMgc29ja2V0IGFuZCByZXR1cm4uICBUaGUgY2hpbGQgd2FzIGZvdW5kIG9uIHRoZVxuK1x0XHQgKiBsaXN0ZW5lcidzIGFjY2VwdCBxdWV1ZSwgc28gaXQgc3RpbGwgaG9sZHMgdGhlIHJlZmVyZW5jZXNcbitcdFx0ICogdGFrZW4gYnkgc2tfYWxsb2MoKSwgX192c29ja19pbnNlcnRfY29ubmVjdGVkKCkgYW5kXG4rXHRcdCAqIHZzb2NrX2VucXVldWVfYWNjZXB0KCkuICBEcm9wIHRoZW0gaGVyZSBzbyB0aGUgc29ja2V0IGlzXG4rXHRcdCAqIGRlc3Ryb3llZC4gIFdlIGNhbm5vdCBkZWZlciB0aGlzIHRvIHZzb2NrX3BlbmRpbmdfd29yaygpOlxuK1x0XHQgKiByZWplY3RlZCBjaGlsZCBzb2NrZXRzIGNyZWF0ZWQgdGhyb3VnaCB2aXJ0aW9fdHJhbnNwb3J0IGFuZFxuK1x0XHQgKiB2c29ja19sb29wYmFjayBhcmUgbm90IGNsZWFuZWQgdXAgYnkgdGhhdCB3b3JrZXIsIHNvIHRoZVxuK1x0XHQgKiBjaGlsZCB3b3VsZCBvdGhlcndpc2UgbGVhayBwZXJtYW5lbnRseS5cbiBcdFx0ICovXG4gXHRcdGlmIChlcnIpIHtcbi1cdFx0XHR2Y29ubmVjdGVkLVx1MDAzZXJlamVjdGVkID0gdHJ1ZTtcbitcdFx0XHR2c29ja19yZW1vdmVfY29ubmVjdGVkKHZjb25uZWN0ZWQpO1xuK1x0XHRcdGNvbm5lY3RlZC1cdTAwM2Vza19zdGF0ZSA9IFRDUF9DTE9TRTtcbitcdFx0XHRzb2NrX3B1dChjb25uZWN0ZWQpO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdG5ld3NvY2stXHUwMDNlc3RhdGUgPSBTU19DT05ORUNURUQ7XG4gXHRcdFx0c29ja19ncmFmdChjb25uZWN0ZWQsIG5ld3NvY2spO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTU6MjA6MzguMTQ0NTk5NjI1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjE2MDA5NzQ5NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSB2c29jayBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIGJlZW4gcHJvcG9zZWQgZm9yIHRoZSB2c29jayBpbXBsZW1lbnRhdGlvbiwgc3BlY2lmaWNhbGx5IGluIGBuZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmNgIGFuZCBgaW5jbHVkZS9uZXQvYWZfdnNvY2suaGAuIE15IGltbWVkaWF0ZSB0YWtlYXdheSBpcyB0aGF0IHRoZXkncmUgc3RyZWFtbGluaW5nIHRoZSBzb2NrZXQgcmVqZWN0aW9uIHByb2Nlc3MuIFRoZSBwYXRjaCBlbGltaW5hdGVzIHRoZSBgcmVqZWN0ZWRgIGZpZWxkIHdpdGhpbiBgc3RydWN0IHZzb2NrX3NvY2tgLiBFc3NlbnRpYWxseSwgcmF0aGVyIHRoYW4gbWFya2luZyBhIHNvY2tldCBhbmQgZGVmZXJyaW5nIHRoZSBjbGVhbnVwLCBpdCBsb29rcyBsaWtlIHRoZXkncmUgaGFuZGxpbmcgdGhlIGNsZWFudXAgZGlyZWN0bHkgd2l0aGluIGB2c29ja19hY2NlcHQoKWAuXG5cbkxldCdzIGRpdmUgZGVlcGVyIGFuZCB2ZXJpZnkgdGhlIGNoYW5nZXMgaW4gYHZzb2NrX2FjY2VwdGAgd2l0aGluIGBuZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmNgLiBBaCwgeWVzLCBoZXJlIHdlIGdvLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCByZXBsYWNlcyB0aGUgc2V0dGluZyBvZiBgdmNvbm5lY3RlZC1cdTAwM2VyZWplY3RlZCA9IHRydWVgIHdpdGggYSBtb3JlIGRpcmVjdCBhcHByb2FjaC4gVGhleSdyZSBub3cgY2FsbGluZyBgdnNvY2tfcmVtb3ZlX2Nvbm5lY3RlZCh2Y29ubmVjdGVkKWAsIHNldHRpbmcgYGNvbm5lY3RlZC1cdTAwM2Vza19zdGF0ZSA9IFRDUF9DTE9TRWAsIGFuZCB0aGVuIGRvaW5nIGEgYHNvY2tfcHV0KGNvbm5lY3RlZClgLiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHRvIHRoZSBjb3JlIHZzb2NrIGhhbmRsaW5nLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIGZvciBvdGhlciBtb2R1bGVzIGFuZCBwb3NzaWJsZSBzaWRlLWVmZmVjdHMuXG5cbkJlZm9yZSBJIGdvIGFueSBkZWVwZXIsIEknbGwgbmVlZCB0byBjb25maXJtIHdoYXQgY29uZmlnIG9wdGlvbnMgYXJlIHJlbGF0ZWQgdG8gdGhpcy5cblxuQWxyaWdodCwgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb24gaXMsIG9idmlvdXNseSwgYENPTkZJR19WU09DS0VUU2AuIEknbGwgaGF2ZSBhIGxvb2sgYXQgYG5ldC92bXdfdnNvY2svS2NvbmZpZ2AgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIyOSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjIwOjU5Ljc0NTU3Nzk0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMTU4ODkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWU09DS0VUU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdm13X3Zzb2NrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3Ztd192c29jay9LY29uZmlnLTUtXFxubmV0L3Ztd192c29jay9LY29uZmlnOjY6Y29uZmlnIFZTT0NLRVRTXFxubmV0L3Ztd192c29jay9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgU29ja2V0IHByb3RvY29sXFxcIlxcbi0tXFxubmV0L3Ztd192c29jay9LY29uZmlnLTE4LVxcbm5ldC92bXdfdnNvY2svS2NvbmZpZzoxOTpjb25maWcgVlNPQ0tFVFNfRElBR1xcbm5ldC92bXdfdnNvY2svS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBTb2NrZXRzIG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L3Ztd192c29jay9LY29uZmlnLTI4LVxcbm5ldC92bXdfdnNvY2svS2NvbmZpZzoyOTpjb25maWcgVlNPQ0tFVFNfTE9PUEJBQ0tcXG5uZXQvdm13X3Zzb2NrL0tjb25maWctMzAtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgU29ja2V0cyBsb29wYmFjayB0cmFuc3BvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjIwOjU5LjgxODc0MTY1M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NTkxOTA0OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGVzZSB0aG91Z2h0cywgdGFpbG9yZWQgYXMgaWYgSSwgYXMgYW4gZXhwZXJ0LCB3ZXJlIGhhdmluZyB0aGVtOlxuXG4qKlZTT0NLRVRTIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKipcblxuQWxyaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIGBWU09DS0VUU2AgaGVyZS4gVGhhdCBtZWFucyB3ZSdyZSBpbiB0aGUgcmVhbG0gb2YgdmlydHVhbCBzb2NrZXRzLCB3aGljaCBpcyBnb2luZyB0byBzaGFwZSBob3cgd2UgdGhpbmsgYWJvdXQgdGhpcy4gVGhlIGNyaXRpY2FsIGFzcGVjdCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIHRoYXQncyBhdCBwbGF5LlxuXG5Ob3csIEknbSB0aGlua2luZyBhYm91dCB3aGVyZSB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLiBNeSBpbml0aWFsIGluY2xpbmF0aW9uIGlzIHRvIGxvb2sgYXQgdGhlc2UgZm9jdXMgc3ltYm9sczogYHZzb2NrX2FjY2VwdGAgYW5kIGB2c29ja19wZW5kaW5nX3dvcmtgLiBUaGVzZSBmZWVsIGxpa2Ugc29saWQgZW50cnkgcG9pbnRzLCBwYXJ0aWN1bGFybHkgYHZzb2NrX2FjY2VwdGAuIEl0IHJlcHJlc2VudHMgdGhlIHByb2Nlc3Mgb2YgYSBjb25uZWN0aW9uLCBhbmQgdGhlIG90aGVyIHJlbGF0ZXMgdG8gd29yayB0aGF0IGlzIHdhaXRpbmcuIGB2c29ja19hY2NlcHRgIGxvb2tzIGxpa2UgYSBrZXkgc3RhcnRpbmcgcG9pbnQgdG8gY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMDAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNToyMTowMy41Nzc5MzYxODRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE2NjIyMDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZzb2NrX2FjY2VwdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3Ztd192c29jay9hZl92c29jay5jLTQxLSAqIGZyb20gdGhlIGxpc3RlbmVyIHNvY2tldCdzIGFjY2VwdCBxdWV1ZS4gIElmIHRoZSBzb2NrZXQgY2Fubm90IGJlIGFjY2VwdGVkXFxubmV0L3Ztd192c29jay9hZl92c29jay5jOjQyOiAqIGZvciBzb21lIHJlYXNvbiB0aGVuIGl0IGlzIGNsZWFuZWQgdXAgZGlyZWN0bHkgaW4gdnNvY2tfYWNjZXB0KCkuICBPbmNlIHRoZVxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYy00My0gKiBjb25uZWN0aW9uIGlzIGFjY2VwdGVkLCBpdCBpcyBvd25lZCBieSB0aGUgdXNlciBwcm9jZXNzIGFuZCB0aGVcXG4tLVxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYz03NTg9c3RhdGljIHZvaWQgdnNvY2tfcGVuZGluZ193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYy03NzctXFx0XFx0ICogYnkgb3VyIHVzZXIgcHJvY2VzcyAocmVqZWN0ZWQgc29ja2V0cyBhcmUgY2xlYW5lZCB1cCBkaXJlY3RseVxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYzo3Nzg6XFx0XFx0ICogaW4gdnNvY2tfYWNjZXB0KCkpLiAgV2UganVzdCBuZWVkIHRvIGRyb3Agb3VyIHJlZmVyZW5jZXMgdG9cXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtNzc5LVxcdFxcdCAqIHRoZSBzb2NrZXRzIGFuZCBiZSBvbiBvdXIgd2F5Llxcbi0tXFxubmV0L3Ztd192c29jay9hZl92c29jay5jPTE2NzQ9c3RhdGljIGludCB2c29ja19jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICphZGRyLFxcbi0tXFxubmV0L3Ztd192c29jay9hZl92c29jay5jLTE4NjEtXFxubmV0L3Ztd192c29jay9hZl92c29jay5jOjE4NjI6c3RhdGljIGludCB2c29ja19hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jayxcXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtMTg2My1cXHRcXHRcXHRzdHJ1Y3QgcHJvdG9fYWNjZXB0X2FyZyAqYXJnKVxcbi0tXFxubmV0L3Ztd192c29jay9hZl92c29jay5jPTI2NDY9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgdnNvY2tfc3RyZWFtX29wcyA9IHtcXG4tLVxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYy0yNjUyLVxcdC5zb2NrZXRwYWlyID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYzoyNjUzOlxcdC5hY2NlcHQgPSB2c29ja19hY2NlcHQsXFxubmV0L3Ztd192c29jay9hZl92c29jay5jLTI2NTQtXFx0LmdldG5hbWUgPSB2c29ja19nZXRuYW1lLFxcbi0tXFxubmV0L3Ztd192c29jay9hZl92c29jay5jPTI2Njg9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgdnNvY2tfc2VxcGFja2V0X29wcyA9IHtcXG4tLVxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYy0yNjc0LVxcdC5zb2NrZXRwYWlyID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYzoyNjc1OlxcdC5hY2NlcHQgPSB2c29ja19hY2NlcHQsXFxubmV0L3Ztd192c29jay9hZl92c29jay5jLTI2NzYtXFx0LmdldG5hbWUgPSB2c29ja19nZXRuYW1lLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNToyMTowMy42OTQ1NjQ2MzJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTE5MjQxOTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipWU09DSyBTb2NrZXQgTGVhayBGaXggYW5kIEZ1enppbmcgQ29uc2lkZXJhdGlvbioqXG5cblJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0YXJnZXRzIGEgcHJldHR5IHNwZWNpZmljIHByb2JsZW06IGEgbGVhayBvZiByZWplY3RlZCBjaGlsZCBzb2NrZXRzIGluIHRoZSB2c29jayBzdHJlYW0gYW5kIHNlcXBhY2tldCBvcGVyYXRpb25zLiBTcGVjaWZpY2FsbHksIHRoZSBsZWFrIGlzIG9yaWdpbmF0aW5nIGZyb20gaG93IHdlIGhhbmRsZSB0aGluZ3Mgd2l0aCBgdmlydGlvX3RyYW5zcG9ydGAgYW5kIGB2c29ja19sb29wYmFja2AuIGB2c29ja19hY2NlcHRgIGhhbmRsZXMgdGhlIGBhY2NlcHRgIGZ1bmN0aW9uIGZvciBib3RoLCBhbmQgYHZzb2NrX3BlbmRpbmdfd29ya2AgaXMgYSB3b3JrcXVldWUgZnVuY3Rpb24gaW52b2x2ZWQgaW4gdGhlIHByb2Nlc3MuXG5cblRoaXMgZml4IGlzIGludGVyZXN0aW5nLiBUaGUgZmFjdCB0aGF0IHdlIGhhdmUgYSBtZW1vcnkgbGVhayByZWxhdGVkIHRvICpyZWplY3RlZCogc29ja2V0cyBpcyBhIGdvb2QgaW5kaWNhdG9yIHRoYXQgc29tZXRoaW5nJ3Mgb2ZmIGluIHRoZSBlcnJvciBwYXRoIG9yIHRoZSBjbGVhbnVwIHJvdXRpbmVzLiBJdCBzdWdnZXN0cyB0aGUgbm9ybWFsIGNsb3NlIHBhdGggaXMgbmV2ZXIgZ2V0dGluZyBjYWxsZWQgd2hlbiBhIHNvY2tldCBpcyByZWplY3RlZCBieSBhIHNlcnZlci5cblxuR2l2ZW4gdGhlIHBvdGVudGlhbCBjb21wbGV4aXR5IGFuZCB0aGUgZmFjdCB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBzb2NrZXQgbWFuYWdlbWVudCAoYWx3YXlzIGEgZ29vZCB0YXJnZXQpLCB0aGlzIGlzICpkZWZpbml0ZWx5KiB3b3J0aCBhIHRob3JvdWdoIGZ1enppbmcgY2FtcGFpZ24uIFdlIG5lZWQgdG8gaGl0IHRoaXMgd2l0aCBhbGwgc29ydHMgb2YgbWFsZm9ybWVkIGRhdGEgYW5kIGVkZ2UgY2FzZXMgdG8gZW5zdXJlIHdlJ3ZlIHJlYWxseSBwbHVnZ2VkIHRoZSBob2xlLiBJdCdzIGEgcHJpbWUgdGFyZ2V0IGZvciBjcmFzaGluZyBhbmQgbWVtb3J5IGNvcnJ1cHRpb24sIHNvIGZ1enppbmcgaXMgYWxtb3N0IGEgZ2l2ZW4uIExldCdzIHN0YXJ0IGJ5IHNldHRpbmcgdGhhdCB1cCBpbW1lZGlhdGVseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkyNCwiT3V0cHV0VG9rZW5zIjoxMjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNToyMToxMi4yMTM4MDkwM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQzNjU5MDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZTT0NLRVRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidnNvY2tfYWNjZXB0XCIsXG4gICAgXCJ2c29ja19wZW5kaW5nX3dvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSB2c29jayBsb2dpYyBmb3IgaGFuZGxpbmcgcmVqZWN0ZWQgY29ubmVjdGlvbnMgaW4gYHZzb2NrX2FjY2VwdGAgYW5kIGB2c29ja19wZW5kaW5nX3dvcmtgLiBJdCBmaXhlcyBhIGxlYWsgb2YgcmVqZWN0ZWQgY2hpbGQgc29ja2V0cyBieSBjbGVhbmluZyB0aGVtIHVwIGRpcmVjdGx5IGluIGB2c29ja19hY2NlcHRgIGluc3RlYWQgb2YgZGVmZXJyaW5nIHRvIGB2c29ja19wZW5kaW5nX3dvcmtgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWU09DS0VUU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZzb2NrX2FjY2VwdFwiLFxuICAgIFwidnNvY2tfcGVuZGluZ193b3JrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgdnNvY2sgbG9naWMgZm9yIGhhbmRsaW5nIHJlamVjdGVkIGNvbm5lY3Rpb25zIGluIGB2c29ja19hY2NlcHRgIGFuZCBgdnNvY2tfcGVuZGluZ193b3JrYC4gSXQgZml4ZXMgYSBsZWFrIG9mIHJlamVjdGVkIGNoaWxkIHNvY2tldHMgYnkgY2xlYW5pbmcgdGhlbSB1cCBkaXJlY3RseSBpbiBgdnNvY2tfYWNjZXB0YCBpbnN0ZWFkIG9mIGRlZmVycmluZyB0byBgdnNvY2tfcGVuZGluZ193b3JrYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjIxOjEyLjI5ODE4Mjg4MVoiLCJTZXEiOjksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTU2ODc5OTQ4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjIxOjEyLjI5ODgyMzMwMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMTU2ODE1NTAwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxpZmVjeWNsZSBvZiB2c29jayBzb2NrZXRzIGR1cmluZyB0aGUgYGFjY2VwdCgpYCBwcm9jZXNzLiBTcGVjaWZpY2FsbHksIGl0IHJlbW92ZXMgdGhlIGByZWplY3RlZGAgZmxhZyBmcm9tIGBzdHJ1Y3QgdnNvY2tfc29ja2AgYW5kIGNoYW5nZXMgYHZzb2NrX2FjY2VwdCgpYCB0byBpbW1lZGlhdGVseSBjbGVhbiB1cCBhbmQgZHJvcCByZWZlcmVuY2VzIHRvIGEgcmVqZWN0ZWQgY2hpbGQgc29ja2V0LCByYXRoZXIgdGhhbiBkZWZlcnJpbmcgdGhlIGNsZWFudXAgdG8gYHZzb2NrX3BlbmRpbmdfd29yaygpYC4gVGhpcyBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgb3IgbGlmZWN5Y2xlIGlzc3VlIHdoZXJlIHJlamVjdGVkIHNvY2tldHMgbWlnaHQgbm90IGJlIGNsZWFuZWQgdXAgYnkgdGhlIHBlbmRpbmcgd29ya2VyLlxcblxcblRoZXNlIGNoYW5nZXMgYXJlIHJlbGF0ZWQgdG8gb2JqZWN0IGxpZmVjeWNsZSwgcmVmZXJlbmNlIGNvdW50aW5nLCBhbmQgc3RhdGUgbWFuYWdlbWVudC4gQW55IGJ1Z3MgaW50cm9kdWNlZCBvciBmaXhlZCBieSB0aGlzIHBhdGNoIHdvdWxkIG1hbmlmZXN0IGFzIG1lbW9yeSBsZWFrcywgdXNlLWFmdGVyLWZyZWUgKFVBRiksIG9yIGRvdWJsZS1mcmVlIHZ1bG5lcmFiaWxpdGllcy4gU3VjaCBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIChmb3IgVUFGL2RvdWJsZS1mcmVlKSBhbmQgS01FTUxFQUsgKGZvciBtZW1vcnkgbGVha3MpLlxcblxcblRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGRhdGEgc3RydWN0dXJlcywgZG9lcyBub3QgZXhwb3NlIGFueSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBpbnZvbHZlIGNvbXBsZXggaW5pdGlhbGl6YXRpb25zIHdoZXJlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGNvdWxkIGJlIHJlYWQgb3IgbGVha2VkLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgN2Q4Yjk4NDk4N2NlYjAxMTIyNDEyY2I2MzA2MjI1ODNlYmZiOWE3NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMTU6MjA6MzYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9hZl92c29jay5oIGIvaW5jbHVkZS9uZXQvYWZfdnNvY2suaFxuaW5kZXggMzAwNDZhM2MyMGY3My4uYjcwY2VhN2Y3NTRmNSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2FmX3Zzb2NrLmhcbisrKyBiL2luY2x1ZGUvbmV0L2FmX3Zzb2NrLmhcbkBAIC01MywxMiArNTMsMTAgQEAgc3RydWN0IHZzb2NrX3NvY2sge1xuIFx0ICogZm9yIGNvbm5lY3Rpb24gcmVxdWVzdHMgYXJlIHBsYWNlZCBpbiB0aGUgcGVuZGluZyBsaXN0IHVudGlsIHRoZXlcbiBcdCAqIGFyZSBjb25uZWN0ZWQsIGF0IHdoaWNoIHBvaW50IHRoZXkgYXJlIHB1dCBpbiB0aGUgYWNjZXB0IHF1ZXVlIGxpc3RcbiBcdCAqIHNvIHRoZXkgY2FuIGJlIGFjY2VwdGVkIGluIGFjY2VwdCgpLiAgSWYgYWNjZXB0KCkgY2Fubm90IGFjY2VwdCB0aGVcbi1cdCAqIGNvbm5lY3Rpb24sIGl0IGlzIG1hcmtlZCBhcyByZWplY3RlZCBzbyB0aGUgY2xlYW51cCBmdW5jdGlvbiBrbm93c1xuLVx0ICogdG8gY2xlYW4gdXAgdGhlIHNvY2tldC5cbitcdCAqIGNvbm5lY3Rpb24sIHRoZSBjaGlsZCBpcyBjbGVhbmVkIHVwIGRpcmVjdGx5IGluIHZzb2NrX2FjY2VwdCgpLlxuIFx0ICovXG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIHBlbmRpbmdfbGlua3M7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIGFjY2VwdF9xdWV1ZTtcbi1cdGJvb2wgcmVqZWN0ZWQ7XG4gXHRzdHJ1Y3QgZGVsYXllZF93b3JrIGNvbm5lY3Rfd29yaztcbiBcdHN0cnVjdCBkZWxheWVkX3dvcmsgcGVuZGluZ193b3JrO1xuIFx0c3RydWN0IGRlbGF5ZWRfd29yayBjbG9zZV93b3JrO1xuZGlmZiAtLWdpdCBhL25ldC92bXdfdnNvY2svYWZfdnNvY2suYyBiL25ldC92bXdfdnNvY2svYWZfdnNvY2suY1xuaW5kZXggNjIyZGJkMDQ2Nzk5NC4uMjA4NGM4OGFjODM2ZiAxMDA2NDRcbi0tLSBhL25ldC92bXdfdnNvY2svYWZfdnNvY2suY1xuKysrIGIvbmV0L3Ztd192c29jay9hZl92c29jay5jXG5AQCAtMzksOSArMzksOSBAQFxuICAqIGZyb20gdGhlIGxpc3RlbmVyIHNvY2tldCdzIHBlbmRpbmcgbGlzdCBhbmQgZW5xdWV1ZWQgaW4gdGhlIGxpc3RlbmVyXG4gICogc29ja2V0J3MgYWNjZXB0IHF1ZXVlLiAgQ2FsbGVycyBvZiBhY2NlcHQoMikgd2lsbCBhY2NlcHQgY29ubmVjdGVkIHNvY2tldHNcbiAgKiBmcm9tIHRoZSBsaXN0ZW5lciBzb2NrZXQncyBhY2NlcHQgcXVldWUuICBJZiB0aGUgc29ja2V0IGNhbm5vdCBiZSBhY2NlcHRlZFxuLSAqIGZvciBzb21lIHJlYXNvbiB0aGVuIGl0IGlzIG1hcmtlZCByZWplY3RlZC4gIE9uY2UgdGhlIGNvbm5lY3Rpb24gaXNcbi0gKiBhY2NlcHRlZCwgaXQgaXMgb3duZWQgYnkgdGhlIHVzZXIgcHJvY2VzcyBhbmQgdGhlIHJlc3BvbnNpYmlsaXR5IGZvciBjbGVhbnVwXG4tICogZmFsbHMgd2l0aCB0aGF0IHVzZXIgcHJvY2Vzcy5cbisgKiBmb3Igc29tZSByZWFzb24gdGhlbiBpdCBpcyBjbGVhbmVkIHVwIGRpcmVjdGx5IGluIHZzb2NrX2FjY2VwdCgpLiAgT25jZSB0aGVcbisgKiBjb25uZWN0aW9uIGlzIGFjY2VwdGVkLCBpdCBpcyBvd25lZCBieSB0aGUgdXNlciBwcm9jZXNzIGFuZCB0aGVcbisgKiByZXNwb25zaWJpbGl0eSBmb3IgY2xlYW51cCBmYWxscyB3aXRoIHRoYXQgdXNlciBwcm9jZXNzLlxuICAqXG4gICogLSBJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZXNlIHBlbmRpbmcgc29ja2V0cyB3aWxsIG5ldmVyIHJlYWNoIHRoZSBjb25uZWN0ZWRcbiAgKiBzdGF0ZTsgaW4gZmFjdCwgd2UgbWF5IG5ldmVyIHJlY2VpdmUgYW5vdGhlciBwYWNrZXQgYWZ0ZXIgdGhlIGNvbm5lY3Rpb25cbkBAIC00OSw5ICs0OSw3IEBAXG4gICogZnV0dXJlLCBhZnRlciBzb21lIGFtb3VudCBvZiB0aW1lIHBhc3NlcyB3aGVyZSBhIGNvbm5lY3Rpb24gc2hvdWxkIGhhdmUgYmVlblxuICAqIGVzdGFibGlzaGVkLiAgVGhpcyBmdW5jdGlvbiBlbnN1cmVzIHRoYXQgdGhlIHNvY2tldCBpcyBvZmYgYWxsIGxpc3RzIHNvIGl0XG4gICogY2Fubm90IGJlIHJldHJpZXZlZCwgdGhlbiBkcm9wcyBhbGwgcmVmZXJlbmNlcyB0byB0aGUgc29ja2V0IHNvIGl0IGlzIGNsZWFuZWRcbi0gKiB1cCAoc29ja19wdXQoKSAtXHUwMDNlIHNrX2ZyZWUoKSAtXHUwMDNlIG91ciBza19kZXN0cnVjdCBpbXBsZW1lbnRhdGlvbikuICBOb3RlIHRoaXNcbi0gKiBmdW5jdGlvbiB3aWxsIGFsc28gY2xlYW51cCByZWplY3RlZCBzb2NrZXRzLCB0aG9zZSB0aGF0IHJlYWNoIHRoZSBjb25uZWN0ZWRcbi0gKiBzdGF0ZSBidXQgbGVhdmUgaXQgYmVmb3JlIHRoZXkgaGF2ZSBiZWVuIGFjY2VwdGVkLlxuKyAqIHVwIChzb2NrX3B1dCgpIC1cdTAwM2Ugc2tfZnJlZSgpIC1cdTAwM2Ugb3VyIHNrX2Rlc3RydWN0IGltcGxlbWVudGF0aW9uKS5cbiAgKlxuICAqIC0gTG9jayBvcmRlcmluZyBmb3IgcGVuZGluZyBvciBhY2NlcHQgcXVldWUgc29ja2V0cyBpczpcbiAgKlxuQEAgLTc3NCwxMSArNzcyLDExIEBAIHN0YXRpYyB2b2lkIHZzb2NrX3BlbmRpbmdfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXG4gXHRpZiAodnNvY2tfaXNfcGVuZGluZyhzaykpIHtcbiBcdFx0dnNvY2tfcmVtb3ZlX3BlbmRpbmcobGlzdGVuZXIsIHNrKTtcbi1cdH0gZWxzZSBpZiAoIXZzay1cdTAwM2VyZWplY3RlZCkge1xuLVx0XHQvKiBXZSBhcmUgbm90IG9uIHRoZSBwZW5kaW5nIGxpc3QgYW5kIGFjY2VwdCgpIGRpZCBub3QgcmVqZWN0XG4tXHRcdCAqIHVzLCBzbyB3ZSBtdXN0IGhhdmUgYmVlbiBhY2NlcHRlZCBieSBvdXIgdXNlciBwcm9jZXNzLiAgV2Vcbi1cdFx0ICoganVzdCBuZWVkIHRvIGRyb3Agb3VyIHJlZmVyZW5jZXMgdG8gdGhlIHNvY2tldHMgYW5kIGJlIG9uXG4tXHRcdCAqIG91ciB3YXkuXG4rXHR9IGVsc2Uge1xuK1x0XHQvKiBXZSBhcmUgbm90IG9uIHRoZSBwZW5kaW5nIGxpc3QsIHNvIHdlIG11c3QgaGF2ZSBiZWVuIGFjY2VwdGVkXG4rXHRcdCAqIGJ5IG91ciB1c2VyIHByb2Nlc3MgKHJlamVjdGVkIHNvY2tldHMgYXJlIGNsZWFuZWQgdXAgZGlyZWN0bHlcbitcdFx0ICogaW4gdnNvY2tfYWNjZXB0KCkpLiAgV2UganVzdCBuZWVkIHRvIGRyb3Agb3VyIHJlZmVyZW5jZXMgdG9cbitcdFx0ICogdGhlIHNvY2tldHMgYW5kIGJlIG9uIG91ciB3YXkuXG4gXHRcdCAqL1xuIFx0XHRjbGVhbnVwID0gZmFsc2U7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTk0Miw3ICs5NDAsNiBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKl9fdnNvY2tfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCxcbiBcdHZzay1cdTAwM2VsaXN0ZW5lciA9IE5VTEw7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZ2c2stXHUwMDNlcGVuZGluZ19saW5rcyk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZ2c2stXHUwMDNlYWNjZXB0X3F1ZXVlKTtcbi1cdHZzay1cdTAwM2VyZWplY3RlZCA9IGZhbHNlO1xuIFx0dnNrLVx1MDAzZXNlbnRfcmVxdWVzdCA9IGZhbHNlO1xuIFx0dnNrLVx1MDAzZWlnbm9yZV9jb25uZWN0aW5nX3JzdCA9IGZhbHNlO1xuIFx0V1JJVEVfT05DRSh2c2stXHUwMDNlcGVlcl9zaHV0ZG93biwgMCk7XG5AQCAtMTkxOSwxNCArMTkxNiwxOSBAQCBzdGF0aWMgaW50IHZzb2NrX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLFxuIFx0XHR2Y29ubmVjdGVkID0gdnNvY2tfc2soY29ubmVjdGVkKTtcbiBcbiBcdFx0LyogSWYgdGhlIGxpc3RlbmVyIHNvY2tldCBoYXMgcmVjZWl2ZWQgYW4gZXJyb3IsIHRoZW4gd2Ugc2hvdWxkXG4tXHRcdCAqIHJlamVjdCB0aGlzIHNvY2tldCBhbmQgcmV0dXJuLiAgTm90ZSB0aGF0IHdlIHNpbXBseSBtYXJrIHRoZVxuLVx0XHQgKiBzb2NrZXQgcmVqZWN0ZWQsIGRyb3Agb3VyIHJlZmVyZW5jZSwgYW5kIGxldCB0aGUgY2xlYW51cFxuLVx0XHQgKiBmdW5jdGlvbiBoYW5kbGUgdGhlIGNsZWFudXA7IHRoZSBmYWN0IHRoYXQgd2UgZm91bmQgaXQgaW5cbi1cdFx0ICogdGhlIGxpc3RlbmVyJ3MgYWNjZXB0IHF1ZXVlIGd1YXJhbnRlZXMgdGhhdCB0aGUgY2xlYW51cFxuLVx0XHQgKiBmdW5jdGlvbiBoYXNuJ3QgcnVuIHlldC5cbitcdFx0ICogcmVqZWN0IHRoaXMgc29ja2V0IGFuZCByZXR1cm4uICBUaGUgY2hpbGQgd2FzIGZvdW5kIG9uIHRoZVxuK1x0XHQgKiBsaXN0ZW5lcidzIGFjY2VwdCBxdWV1ZSwgc28gaXQgc3RpbGwgaG9sZHMgdGhlIHJlZmVyZW5jZXNcbitcdFx0ICogdGFrZW4gYnkgc2tfYWxsb2MoKSwgX192c29ja19pbnNlcnRfY29ubmVjdGVkKCkgYW5kXG4rXHRcdCAqIHZzb2NrX2VucXVldWVfYWNjZXB0KCkuICBEcm9wIHRoZW0gaGVyZSBzbyB0aGUgc29ja2V0IGlzXG4rXHRcdCAqIGRlc3Ryb3llZC4gIFdlIGNhbm5vdCBkZWZlciB0aGlzIHRvIHZzb2NrX3BlbmRpbmdfd29yaygpOlxuK1x0XHQgKiByZWplY3RlZCBjaGlsZCBzb2NrZXRzIGNyZWF0ZWQgdGhyb3VnaCB2aXJ0aW9fdHJhbnNwb3J0IGFuZFxuK1x0XHQgKiB2c29ja19sb29wYmFjayBhcmUgbm90IGNsZWFuZWQgdXAgYnkgdGhhdCB3b3JrZXIsIHNvIHRoZVxuK1x0XHQgKiBjaGlsZCB3b3VsZCBvdGhlcndpc2UgbGVhayBwZXJtYW5lbnRseS5cbiBcdFx0ICovXG4gXHRcdGlmIChlcnIpIHtcbi1cdFx0XHR2Y29ubmVjdGVkLVx1MDAzZXJlamVjdGVkID0gdHJ1ZTtcbitcdFx0XHR2c29ja19yZW1vdmVfY29ubmVjdGVkKHZjb25uZWN0ZWQpO1xuK1x0XHRcdGNvbm5lY3RlZC1cdTAwM2Vza19zdGF0ZSA9IFRDUF9DTE9TRTtcbitcdFx0XHRzb2NrX3B1dChjb25uZWN0ZWQpO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdG5ld3NvY2stXHUwMDNlc3RhdGUgPSBTU19DT05ORUNURUQ7XG4gXHRcdFx0c29ja19ncmFmdChjb25uZWN0ZWQsIG5ld3NvY2spO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTU6MjE6MTIuMjk4ODI0MjQxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNTY4MTMyNTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgdnNvY2sgU29ja2V0IExpZmVjeWNsZSBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyB0YXJnZXRlZCBhdCBgdnNvY2tfYWNjZXB0YCBpbiBgbmV0L3Ztd192c29jay9hZl92c29jay5jYCBhbmQgaXMgZm9jdXNlZCBvbiBzdHJlYW1saW5pbmcgc29ja2V0IGxpZmVjeWNsZSBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgYXJvdW5kIHJlamVjdGVkIHNvY2tldHMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIGlzIGFkZHJlc3NpbmcgYSBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZSDigJMgbGlrZWx5IGEgbGVhayBvciB1c2UtYWZ0ZXItZnJlZSwgYmFzZWQgb24gdGhlIGNvbnRleHQuIEluc3RlYWQgb2YgbWFya2luZyBhIHNvY2tldCBhcyByZWplY3RlZCBhbmQgZGVmZXJyaW5nIGNsZWFudXAsIHRoZSBwYXRjaCBpcyBub3cgaGFuZGxpbmcgaW1tZWRpYXRlIGNsZWFudXAgZGlyZWN0bHkgd2l0aGluIGB2c29ja19hY2NlcHRgLlxuXG5NeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIG1ha2Ugc3VyZSB0aGlzIGRvZXNuJ3QgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGNoYW5nZXMgaW52b2x2ZSByZW1vdmluZyB0aGUgYHJlamVjdGVkYCBmaWVsZCBmcm9tIGBzdHJ1Y3QgdnNvY2tfc29ja2AgZW50aXJlbHksIHdoaWNoIGFsc28gcmVtb3ZlcyB0aGUgaW5pdGlhbGl6YXRpb24gYHZzay1cdTAwM2VyZWplY3RlZCA9IGZhbHNlO2AgaW4gYF9fdnNvY2tfY3JlYXRlYC4gIGB2c29ja19hY2NlcHRgIGlzIG5vdyBnb2luZyB0byBjYWxsIGB2c29ja19yZW1vdmVfY29ubmVjdGVkYCwgc2V0IGBza19zdGF0ZSA9IFRDUF9DTE9TRWAsIGFuZCBgc29ja19wdXRgIGRpcmVjdGx5IG9uIHRoZSByZWplY3RlZCBzb2NrZXQuICBgdnNvY2tfcGVuZGluZ193b3JrYCBpcyBubyBsb25nZXIgY2hlY2tpbmcgYCF2c2stXHUwMDNlcmVqZWN0ZWRgLlxuXG5Gcm9tIHdoYXQgSSBjYW4gc2VlLCB0aGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2UgaW4gc29ja2V0IGxpZmVjeWNsZSBhbmQgcmVmZXJlbmNlIGNvdW50aW5nLiBJdOKAmXMgZW50aXJlbHkgYWJvdXQgc3RhdGUgdHJhbnNpdGlvbnMsIG5vdCBkYXRhIHN0cnVjdHVyZSBjaGFuZ2VzIG9yIHVuaW5pdGlhbGl6ZWQgZGF0YS4gQ3JpdGljYWxseSwgbm90aGluZyBuZXcgaXMgYmVpbmcgcGFzc2VkIHVwIHRvIHVzZXIgc3BhY2UgaGVyZS5cblxuSSdtIGNvbmZpZGVudCB3ZSBkb24ndCBoYXZlIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlIGhlcmUsIHNvIEtNU0FOIGlzbid0IG5lZWRlZC4gVGhpcyBpcyBwdXJlbHkgYSBsaWZlY3ljbGUgYW5kIHN0YXRlIG1hY2hpbmUgY2hhbmdlLiBBbnkgaXNzdWVzIGludHJvZHVjZWQgaGVyZSBhcmUgbW9yZSBsaWtlbHkgdG8gbWFuaWZlc3QgYXMgbGVha3MsIHVzZS1hZnRlci1mcmVlIChVQUYpLCBvciBkb3VibGUtZnJlZSwgd2hpY2ggS0FTQU4gYW5kIEtNRU1MRUFLIHNob3VsZCByZWFkaWx5IGNhdGNoLiBUaGVyZWZvcmUsIE5lZWRzS01TQU4gPSBmYWxzZS5cblxuVG8gc3VtbWFyaXplLCB0aGlzIHBhdGNoIG9wdGltaXplcyB0aGUgaGFuZGxpbmcgb2YgcmVqZWN0ZWQgc29ja2V0cyBkdXJpbmcgdGhlIGBhY2NlcHQoKWAgcHJvY2Vzcy4gQnkgcmVtb3ZpbmcgdGhlIGByZWplY3RlZGAgZmxhZyBhbmQgbW92aW5nIGNsZWFudXAgdG8gYHZzb2NrX2FjY2VwdCgpYCwgdGhlIHBhdGNoIGZpeGVzIGFuIGlzc3VlIHdoZXJlIHJlamVjdGVkIHNvY2tldHMgbWlnaHQgbm90IGJlIGNsZWFuZWQgdXAgcHJvcGVybHkuIEl0J3MgYSBsaWZlY3ljbGUvcmVmZXJlbmNlLWNvdW50aW5nIGNoYW5nZSwgc28gdGhlIG1ham9yIGJ1Z3Mgb2YgY29uY2VybiBhcmUgbWVtb3J5IGxlYWtzLCBVQUYsIG9yIGRvdWJsZS1mcmVlLiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgYmVjYXVzZSB0aGlzIHBhdGNoIGRvZXMgbm90IGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIyNiwiT3V0cHV0VG9rZW5zIjoyNTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNToyMToyMy44NjY5NjA0MjRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsaWZlY3ljbGUgb2YgdnNvY2sgc29ja2V0cyBkdXJpbmcgdGhlIGBhY2NlcHQoKWAgcHJvY2Vzcy4gU3BlY2lmaWNhbGx5LCBpdCByZW1vdmVzIHRoZSBgcmVqZWN0ZWRgIGZsYWcgZnJvbSBgc3RydWN0IHZzb2NrX3NvY2tgIGFuZCBjaGFuZ2VzIGB2c29ja19hY2NlcHQoKWAgdG8gaW1tZWRpYXRlbHkgY2xlYW4gdXAgYW5kIGRyb3AgcmVmZXJlbmNlcyB0byBhIHJlamVjdGVkIGNoaWxkIHNvY2tldCwgcmF0aGVyIHRoYW4gZGVmZXJyaW5nIHRoZSBjbGVhbnVwIHRvIGB2c29ja19wZW5kaW5nX3dvcmsoKWAuIFRoaXMgYWRkcmVzc2VzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIGxpZmVjeWNsZSBpc3N1ZSB3aGVyZSByZWplY3RlZCBzb2NrZXRzIG1pZ2h0IG5vdCBiZSBjbGVhbmVkIHVwIGJ5IHRoZSBwZW5kaW5nIHdvcmtlci5cXG5cXG5UaGVzZSBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIG9iamVjdCBsaWZlY3ljbGUsIHJlZmVyZW5jZSBjb3VudGluZywgYW5kIHN0YXRlIG1hbmFnZW1lbnQuIEFueSBidWdzIGludHJvZHVjZWQgb3IgZml4ZWQgYnkgdGhpcyBwYXRjaCB3b3VsZCBtYW5pZmVzdCBhcyBtZW1vcnkgbGVha3MsIHVzZS1hZnRlci1mcmVlIChVQUYpLCBvciBkb3VibGUtZnJlZSB2dWxuZXJhYmlsaXRpZXMuIFN1Y2ggaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiAoZm9yIFVBRi9kb3VibGUtZnJlZSkgYW5kIEtNRU1MRUFLIChmb3IgbWVtb3J5IGxlYWtzKS5cXG5cXG5UaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG5ldyBkYXRhIHN0cnVjdHVyZXMsIGRvZXMgbm90IGV4cG9zZSBhbnkga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgaW52b2x2ZSBjb21wbGV4IGluaXRpYWxpemF0aW9ucyB3aGVyZSB1bmluaXRpYWxpemVkIG1lbW9yeSBjb3VsZCBiZSByZWFkIG9yIGxlYWtlZC4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4gU3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsaWZlY3ljbGUgb2YgdnNvY2sgc29ja2V0cyBkdXJpbmcgdGhlIGBhY2NlcHQoKWAgcHJvY2Vzcy4gU3BlY2lmaWNhbGx5LCBpdCByZW1vdmVzIHRoZSBgcmVqZWN0ZWRgIGZsYWcgZnJvbSBgc3RydWN0IHZzb2NrX3NvY2tgIGFuZCBjaGFuZ2VzIGB2c29ja19hY2NlcHQoKWAgdG8gaW1tZWRpYXRlbHkgY2xlYW4gdXAgYW5kIGRyb3AgcmVmZXJlbmNlcyB0byBhIHJlamVjdGVkIGNoaWxkIHNvY2tldCwgcmF0aGVyIHRoYW4gZGVmZXJyaW5nIHRoZSBjbGVhbnVwIHRvIGB2c29ja19wZW5kaW5nX3dvcmsoKWAuIFRoaXMgYWRkcmVzc2VzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIGxpZmVjeWNsZSBpc3N1ZSB3aGVyZSByZWplY3RlZCBzb2NrZXRzIG1pZ2h0IG5vdCBiZSBjbGVhbmVkIHVwIGJ5IHRoZSBwZW5kaW5nIHdvcmtlci5cXG5cXG5UaGVzZSBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIG9iamVjdCBsaWZlY3ljbGUsIHJlZmVyZW5jZSBjb3VudGluZywgYW5kIHN0YXRlIG1hbmFnZW1lbnQuIEFueSBidWdzIGludHJvZHVjZWQgb3IgZml4ZWQgYnkgdGhpcyBwYXRjaCB3b3VsZCBtYW5pZmVzdCBhcyBtZW1vcnkgbGVha3MsIHVzZS1hZnRlci1mcmVlIChVQUYpLCBvciBkb3VibGUtZnJlZSB2dWxuZXJhYmlsaXRpZXMuIFN1Y2ggaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiAoZm9yIFVBRi9kb3VibGUtZnJlZSkgYW5kIEtNRU1MRUFLIChmb3IgbWVtb3J5IGxlYWtzKS5cXG5cXG5UaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG5ldyBkYXRhIHN0cnVjdHVyZXMsIGRvZXMgbm90IGV4cG9zZSBhbnkga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgaW52b2x2ZSBjb21wbGV4IGluaXRpYWxpemF0aW9ucyB3aGVyZSB1bmluaXRpYWxpemVkIG1lbW9yeSBjb3VsZCBiZSByZWFkIG9yIGxlYWtlZC4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4gU3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk97p[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-07 14:54:39 +0000 UTC FinishedAt: 2026-08-07 15:41:26 +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": "4fa4977a0d900f936bcae5cd2c510be5554e8dd6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VSOCKETS" ], "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": "4fa4977a0d900f936bcae5cd2c510be5554e8dd6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VSOCKETS" ], "series_id": "b803bd49-ea41-4af0-9f0f-61e702ac0ee1" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "vsock_accept", "vsock_pending_work" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZTT0NLRVRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dnNvY2tfYWNjZXB0JiMzNDssCiAgICAmIzM0O3Zzb2NrX3BlbmRpbmdfd29yayYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsaWZlY3ljbGUgb2YgdnNvY2sgc29ja2V0cyBkdXJpbmcgdGhlIGBhY2NlcHQoKWAgcHJvY2Vzcy4gU3BlY2lmaWNhbGx5LCBpdCByZW1vdmVzIHRoZSBgcmVqZWN0ZWRgIGZsYWcgZnJvbSBgc3RydWN0IHZzb2NrX3NvY2tgIGFuZCBjaGFuZ2VzIGB2c29ja19hY2NlcHQoKWAgdG8gaW1tZWRpYXRlbHkgY2xlYW4gdXAgYW5kIGRyb3AgcmVmZXJlbmNlcyB0byBhIHJlamVjdGVkIGNoaWxkIHNvY2tldCwgcmF0aGVyIHRoYW4gZGVmZXJyaW5nIHRoZSBjbGVhbnVwIHRvIGB2c29ja19wZW5kaW5nX3dvcmsoKWAuIFRoaXMgYWRkcmVzc2VzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIGxpZmVjeWNsZSBpc3N1ZSB3aGVyZSByZWplY3RlZCBzb2NrZXRzIG1pZ2h0IG5vdCBiZSBjbGVhbmVkIHVwIGJ5IHRoZSBwZW5kaW5nIHdvcmtlci5cblxuVGhlc2UgY2hhbmdlcyBhcmUgcmVsYXRlZCB0byBvYmplY3QgbGlmZWN5Y2xlLCByZWZlcmVuY2UgY291bnRpbmcsIGFuZCBzdGF0ZSBtYW5hZ2VtZW50LiBBbnkgYnVncyBpbnRyb2R1Y2VkIG9yIGZpeGVkIGJ5IHRoaXMgcGF0Y2ggd291bGQgbWFuaWZlc3QgYXMgbWVtb3J5IGxlYWtzLCB1c2UtYWZ0ZXItZnJlZSAoVUFGKSwgb3IgZG91YmxlLWZyZWUgdnVsbmVyYWJpbGl0aWVzLiBTdWNoIGlzc3VlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4gKGZvciBVQUYvZG91YmxlLWZyZWUpIGFuZCBLTUVNTEVBSyAoZm9yIG1lbW9yeSBsZWFrcykuXG5cblRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGRhdGEgc3RydWN0dXJlcywgZG9lcyBub3QgZXhwb3NlIGFueSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBpbnZvbHZlIGNvbXBsZXggaW5pdGlhbGl6YXRpb25zIHdoZXJlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGNvdWxkIGJlIHJlYWQgb3IgbGVha2VkLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIHZzb2NrIGxvZ2ljIGZvciBoYW5kbGluZyByZWplY3RlZCBjb25uZWN0aW9ucyBpbiBgdnNvY2tfYWNjZXB0YCBhbmQgYHZzb2NrX3BlbmRpbmdfd29ya2AuIEl0IGZpeGVzIGEgbGVhayBvZiByZWplY3RlZCBjaGlsZCBzb2NrZXRzIGJ5IGNsZWFuaW5nIHRoZW0gdXAgZGlyZWN0bHkgaW4gYHZzb2NrX2FjY2VwdGAgaW5zdGVhZCBvZiBkZWZlcnJpbmcgdG8gYHZzb2NrX3BlbmRpbmdfd29ya2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjIwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgN2Q4Yjk4NDk4N2NlYjAxMTIyNDEyY2I2MzA2MjI1ODNlYmZiOWE3NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMTU6MjA6MzYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvYWZfdnNvY2suaCBiL2luY2x1ZGUvbmV0L2FmX3Zzb2NrLmhcbmluZGV4IDMwMDQ2YTNjMjBmNzMuLmI3MGNlYTdmNzU0ZjUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9hZl92c29jay5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9hZl92c29jay5oXG5AQCAtNTMsMTIgJiM0Mzs1MywxMCBAQCBzdHJ1Y3QgdnNvY2tfc29jayB7XG4gXHQgKiBmb3IgY29ubmVjdGlvbiByZXF1ZXN0cyBhcmUgcGxhY2VkIGluIHRoZSBwZW5kaW5nIGxpc3QgdW50aWwgdGhleVxuIFx0ICogYXJlIGNvbm5lY3RlZCwgYXQgd2hpY2ggcG9pbnQgdGhleSBhcmUgcHV0IGluIHRoZSBhY2NlcHQgcXVldWUgbGlzdFxuIFx0ICogc28gdGhleSBjYW4gYmUgYWNjZXB0ZWQgaW4gYWNjZXB0KCkuICBJZiBhY2NlcHQoKSBjYW5ub3QgYWNjZXB0IHRoZVxuLVx0ICogY29ubmVjdGlvbiwgaXQgaXMgbWFya2VkIGFzIHJlamVjdGVkIHNvIHRoZSBjbGVhbnVwIGZ1bmN0aW9uIGtub3dzXG4tXHQgKiB0byBjbGVhbiB1cCB0aGUgc29ja2V0LlxuJiM0MztcdCAqIGNvbm5lY3Rpb24sIHRoZSBjaGlsZCBpcyBjbGVhbmVkIHVwIGRpcmVjdGx5IGluIHZzb2NrX2FjY2VwdCgpLlxuIFx0ICovXG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIHBlbmRpbmdfbGlua3M7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIGFjY2VwdF9xdWV1ZTtcbi1cdGJvb2wgcmVqZWN0ZWQ7XG4gXHRzdHJ1Y3QgZGVsYXllZF93b3JrIGNvbm5lY3Rfd29yaztcbiBcdHN0cnVjdCBkZWxheWVkX3dvcmsgcGVuZGluZ193b3JrO1xuIFx0c3RydWN0IGRlbGF5ZWRfd29yayBjbG9zZV93b3JrO1xuZGlmZiAtLWdpdCBhL25ldC92bXdfdnNvY2svYWZfdnNvY2suYyBiL25ldC92bXdfdnNvY2svYWZfdnNvY2suY1xuaW5kZXggNjIyZGJkMDQ2Nzk5NC4uMjA4NGM4OGFjODM2ZiAxMDA2NDRcbi0tLSBhL25ldC92bXdfdnNvY2svYWZfdnNvY2suY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3Ztd192c29jay9hZl92c29jay5jXG5AQCAtMzksOSAmIzQzOzM5LDkgQEBcbiAgKiBmcm9tIHRoZSBsaXN0ZW5lciBzb2NrZXQmIzM5O3MgcGVuZGluZyBsaXN0IGFuZCBlbnF1ZXVlZCBpbiB0aGUgbGlzdGVuZXJcbiAgKiBzb2NrZXQmIzM5O3MgYWNjZXB0IHF1ZXVlLiAgQ2FsbGVycyBvZiBhY2NlcHQoMikgd2lsbCBhY2NlcHQgY29ubmVjdGVkIHNvY2tldHNcbiAgKiBmcm9tIHRoZSBsaXN0ZW5lciBzb2NrZXQmIzM5O3MgYWNjZXB0IHF1ZXVlLiAgSWYgdGhlIHNvY2tldCBjYW5ub3QgYmUgYWNjZXB0ZWRcbi0gKiBmb3Igc29tZSByZWFzb24gdGhlbiBpdCBpcyBtYXJrZWQgcmVqZWN0ZWQuICBPbmNlIHRoZSBjb25uZWN0aW9uIGlzXG4tICogYWNjZXB0ZWQsIGl0IGlzIG93bmVkIGJ5IHRoZSB1c2VyIHByb2Nlc3MgYW5kIHRoZSByZXNwb25zaWJpbGl0eSBmb3IgY2xlYW51cFxuLSAqIGZhbGxzIHdpdGggdGhhdCB1c2VyIHByb2Nlc3MuXG4mIzQzOyAqIGZvciBzb21lIHJlYXNvbiB0aGVuIGl0IGlzIGNsZWFuZWQgdXAgZGlyZWN0bHkgaW4gdnNvY2tfYWNjZXB0KCkuICBPbmNlIHRoZVxuJiM0MzsgKiBjb25uZWN0aW9uIGlzIGFjY2VwdGVkLCBpdCBpcyBvd25lZCBieSB0aGUgdXNlciBwcm9jZXNzIGFuZCB0aGVcbiYjNDM7ICogcmVzcG9uc2liaWxpdHkgZm9yIGNsZWFudXAgZmFsbHMgd2l0aCB0aGF0IHVzZXIgcHJvY2Vzcy5cbiAgKlxuICAqIC0gSXQgaXMgcG9zc2libGUgdGhhdCB0aGVzZSBwZW5kaW5nIHNvY2tldHMgd2lsbCBuZXZlciByZWFjaCB0aGUgY29ubmVjdGVkXG4gICogc3RhdGU7IGluIGZhY3QsIHdlIG1heSBuZXZlciByZWNlaXZlIGFub3RoZXIgcGFja2V0IGFmdGVyIHRoZSBjb25uZWN0aW9uXG5AQCAtNDksOSAmIzQzOzQ5LDcgQEBcbiAgKiBmdXR1cmUsIGFmdGVyIHNvbWUgYW1vdW50IG9mIHRpbWUgcGFzc2VzIHdoZXJlIGEgY29ubmVjdGlvbiBzaG91bGQgaGF2ZSBiZWVuXG4gICogZXN0YWJsaXNoZWQuICBUaGlzIGZ1bmN0aW9uIGVuc3VyZXMgdGhhdCB0aGUgc29ja2V0IGlzIG9mZiBhbGwgbGlzdHMgc28gaXRcbiAgKiBjYW5ub3QgYmUgcmV0cmlldmVkLCB0aGVuIGRyb3BzIGFsbCByZWZlcmVuY2VzIHRvIHRoZSBzb2NrZXQgc28gaXQgaXMgY2xlYW5lZFxuLSAqIHVwIChzb2NrX3B1dCgpIC1cdTAwM2Ugc2tfZnJlZSgpIC1cdTAwM2Ugb3VyIHNrX2Rlc3RydWN0IGltcGxlbWVudGF0aW9uKS4gIE5vdGUgdGhpc1xuLSAqIGZ1bmN0aW9uIHdpbGwgYWxzbyBjbGVhbnVwIHJlamVjdGVkIHNvY2tldHMsIHRob3NlIHRoYXQgcmVhY2ggdGhlIGNvbm5lY3RlZFxuLSAqIHN0YXRlIGJ1dCBsZWF2ZSBpdCBiZWZvcmUgdGhleSBoYXZlIGJlZW4gYWNjZXB0ZWQuXG4mIzQzOyAqIHVwIChzb2NrX3B1dCgpIC1cdTAwM2Ugc2tfZnJlZSgpIC1cdTAwM2Ugb3VyIHNrX2Rlc3RydWN0IGltcGxlbWVudGF0aW9uKS5cbiAgKlxuICAqIC0gTG9jayBvcmRlcmluZyBmb3IgcGVuZGluZyBvciBhY2NlcHQgcXVldWUgc29ja2V0cyBpczpcbiAgKlxuQEAgLTc3NCwxMSAmIzQzOzc3MiwxMSBAQCBzdGF0aWMgdm9pZCB2c29ja19wZW5kaW5nX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFxuIFx0aWYgKHZzb2NrX2lzX3BlbmRpbmcoc2spKSB7XG4gXHRcdHZzb2NrX3JlbW92ZV9wZW5kaW5nKGxpc3RlbmVyLCBzayk7XG4tXHR9IGVsc2UgaWYgKCF2c2stXHUwMDNlcmVqZWN0ZWQpIHtcbi1cdFx0LyogV2UgYXJlIG5vdCBvbiB0aGUgcGVuZGluZyBsaXN0IGFuZCBhY2NlcHQoKSBkaWQgbm90IHJlamVjdFxuLVx0XHQgKiB1cywgc28gd2UgbXVzdCBoYXZlIGJlZW4gYWNjZXB0ZWQgYnkgb3VyIHVzZXIgcHJvY2Vzcy4gIFdlXG4tXHRcdCAqIGp1c3QgbmVlZCB0byBkcm9wIG91ciByZWZlcmVuY2VzIHRvIHRoZSBzb2NrZXRzIGFuZCBiZSBvblxuLVx0XHQgKiBvdXIgd2F5LlxuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHQvKiBXZSBhcmUgbm90IG9uIHRoZSBwZW5kaW5nIGxpc3QsIHNvIHdlIG11c3QgaGF2ZSBiZWVuIGFjY2VwdGVkXG4mIzQzO1x0XHQgKiBieSBvdXIgdXNlciBwcm9jZXNzIChyZWplY3RlZCBzb2NrZXRzIGFyZSBjbGVhbmVkIHVwIGRpcmVjdGx5XG4mIzQzO1x0XHQgKiBpbiB2c29ja19hY2NlcHQoKSkuICBXZSBqdXN0IG5lZWQgdG8gZHJvcCBvdXIgcmVmZXJlbmNlcyB0b1xuJiM0MztcdFx0ICogdGhlIHNvY2tldHMgYW5kIGJlIG9uIG91ciB3YXkuXG4gXHRcdCAqL1xuIFx0XHRjbGVhbnVwID0gZmFsc2U7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTk0Miw3ICYjNDM7OTQwLDYgQEAgc3RhdGljIHN0cnVjdCBzb2NrICpfX3Zzb2NrX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsXG4gXHR2c2stXHUwMDNlbGlzdGVuZXIgPSBOVUxMO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2dnNrLVx1MDAzZXBlbmRpbmdfbGlua3MpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2dnNrLVx1MDAzZWFjY2VwdF9xdWV1ZSk7XG4tXHR2c2stXHUwMDNlcmVqZWN0ZWQgPSBmYWxzZTtcbiBcdHZzay1cdTAwM2VzZW50X3JlcXVlc3QgPSBmYWxzZTtcbiBcdHZzay1cdTAwM2VpZ25vcmVfY29ubmVjdGluZ19yc3QgPSBmYWxzZTtcbiBcdFdSSVRFX09OQ0UodnNrLVx1MDAzZXBlZXJfc2h1dGRvd24sIDApO1xuQEAgLTE5MTksMTQgJiM0MzsxOTE2LDE5IEBAIHN0YXRpYyBpbnQgdnNvY2tfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssXG4gXHRcdHZjb25uZWN0ZWQgPSB2c29ja19zayhjb25uZWN0ZWQpO1xuIFxuIFx0XHQvKiBJZiB0aGUgbGlzdGVuZXIgc29ja2V0IGhhcyByZWNlaXZlZCBhbiBlcnJvciwgdGhlbiB3ZSBzaG91bGRcbi1cdFx0ICogcmVqZWN0IHRoaXMgc29ja2V0IGFuZCByZXR1cm4uICBOb3RlIHRoYXQgd2Ugc2ltcGx5IG1hcmsgdGhlXG4tXHRcdCAqIHNvY2tldCByZWplY3RlZCwgZHJvcCBvdXIgcmVmZXJlbmNlLCBhbmQgbGV0IHRoZSBjbGVhbnVwXG4tXHRcdCAqIGZ1bmN0aW9uIGhhbmRsZSB0aGUgY2xlYW51cDsgdGhlIGZhY3QgdGhhdCB3ZSBmb3VuZCBpdCBpblxuLVx0XHQgKiB0aGUgbGlzdGVuZXImIzM5O3MgYWNjZXB0IHF1ZXVlIGd1YXJhbnRlZXMgdGhhdCB0aGUgY2xlYW51cFxuLVx0XHQgKiBmdW5jdGlvbiBoYXNuJiMzOTt0IHJ1biB5ZXQuXG4mIzQzO1x0XHQgKiByZWplY3QgdGhpcyBzb2NrZXQgYW5kIHJldHVybi4gIFRoZSBjaGlsZCB3YXMgZm91bmQgb24gdGhlXG4mIzQzO1x0XHQgKiBsaXN0ZW5lciYjMzk7cyBhY2NlcHQgcXVldWUsIHNvIGl0IHN0aWxsIGhvbGRzIHRoZSByZWZlcmVuY2VzXG4mIzQzO1x0XHQgKiB0YWtlbiBieSBza19hbGxvYygpLCBfX3Zzb2NrX2luc2VydF9jb25uZWN0ZWQoKSBhbmRcbiYjNDM7XHRcdCAqIHZzb2NrX2VucXVldWVfYWNjZXB0KCkuICBEcm9wIHRoZW0gaGVyZSBzbyB0aGUgc29ja2V0IGlzXG4mIzQzO1x0XHQgKiBkZXN0cm95ZWQuICBXZSBjYW5ub3QgZGVmZXIgdGhpcyB0byB2c29ja19wZW5kaW5nX3dvcmsoKTpcbiYjNDM7XHRcdCAqIHJlamVjdGVkIGNoaWxkIHNvY2tldHMgY3JlYXRlZCB0aHJvdWdoIHZpcnRpb190cmFuc3BvcnQgYW5kXG4mIzQzO1x0XHQgKiB2c29ja19sb29wYmFjayBhcmUgbm90IGNsZWFuZWQgdXAgYnkgdGhhdCB3b3JrZXIsIHNvIHRoZVxuJiM0MztcdFx0ICogY2hpbGQgd291bGQgb3RoZXJ3aXNlIGxlYWsgcGVybWFuZW50bHkuXG4gXHRcdCAqL1xuIFx0XHRpZiAoZXJyKSB7XG4tXHRcdFx0dmNvbm5lY3RlZC1cdTAwM2VyZWplY3RlZCA9IHRydWU7XG4mIzQzO1x0XHRcdHZzb2NrX3JlbW92ZV9jb25uZWN0ZWQodmNvbm5lY3RlZCk7XG4mIzQzO1x0XHRcdGNvbm5lY3RlZC1cdTAwM2Vza19zdGF0ZSA9IFRDUF9DTE9TRTtcbiYjNDM7XHRcdFx0c29ja19wdXQoY29ubmVjdGVkKTtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRuZXdzb2NrLVx1MDAzZXN0YXRlID0gU1NfQ09OTkVDVEVEO1xuIFx0XHRcdHNvY2tfZ3JhZnQoY29ubmVjdGVkLCBuZXdzb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNToyMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VlNPQ0tFVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2c29ja19hY2NlcHQmIzM0OywKICAgICYjMzQ7dnNvY2tfcGVuZGluZ193b3JrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIHZzb2NrIGxvZ2ljIGZvciBoYW5kbGluZyByZWplY3RlZCBjb25uZWN0aW9ucyBpbiBgdnNvY2tfYWNjZXB0YCBhbmQgYHZzb2NrX3BlbmRpbmdfd29ya2AuIEl0IGZpeGVzIGEgbGVhayBvZiByZWplY3RlZCBjaGlsZCBzb2NrZXRzIGJ5IGNsZWFuaW5nIHRoZW0gdXAgZGlyZWN0bHkgaW4gYHZzb2NrX2FjY2VwdGAgaW5zdGVhZCBvZiBkZWZlcnJpbmcgdG8gYHZzb2NrX3BlbmRpbmdfd29ya2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgN2Q4Yjk4NDk4N2NlYjAxMTIyNDEyY2I2MzA2MjI1ODNlYmZiOWE3NgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDcgMTU6MjA6MzYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9hZl92c29jay5oIGIvaW5jbHVkZS9uZXQvYWZfdnNvY2suaAppbmRleCAzMDA0NmEzYzIwZjczLi5iNzBjZWE3Zjc1NGY1IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9hZl92c29jay5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2FmX3Zzb2NrLmgKQEAgLTUzLDEyICYjNDM7NTMsMTAgQEAgc3RydWN0IHZzb2NrX3NvY2sgewogCSAqIGZvciBjb25uZWN0aW9uIHJlcXVlc3RzIGFyZSBwbGFjZWQgaW4gdGhlIHBlbmRpbmcgbGlzdCB1bnRpbCB0aGV5CiAJICogYXJlIGNvbm5lY3RlZCwgYXQgd2hpY2ggcG9pbnQgdGhleSBhcmUgcHV0IGluIHRoZSBhY2NlcHQgcXVldWUgbGlzdAogCSAqIHNvIHRoZXkgY2FuIGJlIGFjY2VwdGVkIGluIGFjY2VwdCgpLiAgSWYgYWNjZXB0KCkgY2Fubm90IGFjY2VwdCB0aGUKLQkgKiBjb25uZWN0aW9uLCBpdCBpcyBtYXJrZWQgYXMgcmVqZWN0ZWQgc28gdGhlIGNsZWFudXAgZnVuY3Rpb24ga25vd3MKLQkgKiB0byBjbGVhbiB1cCB0aGUgc29ja2V0LgomIzQzOwkgKiBjb25uZWN0aW9uLCB0aGUgY2hpbGQgaXMgY2xlYW5lZCB1cCBkaXJlY3RseSBpbiB2c29ja19hY2NlcHQoKS4KIAkgKi8KIAlzdHJ1Y3QgbGlzdF9oZWFkIHBlbmRpbmdfbGlua3M7CiAJc3RydWN0IGxpc3RfaGVhZCBhY2NlcHRfcXVldWU7Ci0JYm9vbCByZWplY3RlZDsKIAlzdHJ1Y3QgZGVsYXllZF93b3JrIGNvbm5lY3Rfd29yazsKIAlzdHJ1Y3QgZGVsYXllZF93b3JrIHBlbmRpbmdfd29yazsKIAlzdHJ1Y3QgZGVsYXllZF93b3JrIGNsb3NlX3dvcms7CmRpZmYgLS1naXQgYS9uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMgYi9uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMKaW5kZXggNjIyZGJkMDQ2Nzk5NC4uMjA4NGM4OGFjODM2ZiAxMDA2NDQKLS0tIGEvbmV0L3Ztd192c29jay9hZl92c29jay5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC92bXdfdnNvY2svYWZfdnNvY2suYwpAQCAtMzksOSAmIzQzOzM5LDkgQEAKICAqIGZyb20gdGhlIGxpc3RlbmVyIHNvY2tldCYjMzk7cyBwZW5kaW5nIGxpc3QgYW5kIGVucXVldWVkIGluIHRoZSBsaXN0ZW5lcgogICogc29ja2V0JiMzOTtzIGFjY2VwdCBxdWV1ZS4gIENhbGxlcnMgb2YgYWNjZXB0KDIpIHdpbGwgYWNjZXB0IGNvbm5lY3RlZCBzb2NrZXRzCiAgKiBmcm9tIHRoZSBsaXN0ZW5lciBzb2NrZXQmIzM5O3MgYWNjZXB0IHF1ZXVlLiAgSWYgdGhlIHNvY2tldCBjYW5ub3QgYmUgYWNjZXB0ZWQKLSAqIGZvciBzb21lIHJlYXNvbiB0aGVuIGl0IGlzIG1hcmtlZCByZWplY3RlZC4gIE9uY2UgdGhlIGNvbm5lY3Rpb24gaXMKLSAqIGFjY2VwdGVkLCBpdCBpcyBvd25lZCBieSB0aGUgdXNlciBwcm9jZXNzIGFuZCB0aGUgcmVzcG9uc2liaWxpdHkgZm9yIGNsZWFudXAKLSAqIGZhbGxzIHdpdGggdGhhdCB1c2VyIHByb2Nlc3MuCiYjNDM7ICogZm9yIHNvbWUgcmVhc29uIHRoZW4gaXQgaXMgY2xlYW5lZCB1cCBkaXJlY3RseSBpbiB2c29ja19hY2NlcHQoKS4gIE9uY2UgdGhlCiYjNDM7ICogY29ubmVjdGlvbiBpcyBhY2NlcHRlZCwgaXQgaXMgb3duZWQgYnkgdGhlIHVzZXIgcHJvY2VzcyBhbmQgdGhlCiYjNDM7ICogcmVzcG9uc2liaWxpdHkgZm9yIGNsZWFudXAgZmFsbHMgd2l0aCB0aGF0IHVzZXIgcHJvY2Vzcy4KICAqCiAgKiAtIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlc2UgcGVuZGluZyBzb2NrZXRzIHdpbGwgbmV2ZXIgcmVhY2ggdGhlIGNvbm5lY3RlZAogICogc3RhdGU7IGluIGZhY3QsIHdlIG1heSBuZXZlciByZWNlaXZlIGFub3RoZXIgcGFja2V0IGFmdGVyIHRoZSBjb25uZWN0aW9uCkBAIC00OSw5ICYjNDM7NDksNyBAQAogICogZnV0dXJlLCBhZnRlciBzb21lIGFtb3VudCBvZiB0aW1lIHBhc3NlcyB3aGVyZSBhIGNvbm5lY3Rpb24gc2hvdWxkIGhhdmUgYmVlbgogICogZXN0YWJsaXNoZWQuICBUaGlzIGZ1bmN0aW9uIGVuc3VyZXMgdGhhdCB0aGUgc29ja2V0IGlzIG9mZiBhbGwgbGlzdHMgc28gaXQKICAqIGNhbm5vdCBiZSByZXRyaWV2ZWQsIHRoZW4gZHJvcHMgYWxsIHJlZmVyZW5jZXMgdG8gdGhlIHNvY2tldCBzbyBpdCBpcyBjbGVhbmVkCi0gKiB1cCAoc29ja19wdXQoKSAtJmd0OyBza19mcmVlKCkgLSZndDsgb3VyIHNrX2Rlc3RydWN0IGltcGxlbWVudGF0aW9uKS4gIE5vdGUgdGhpcwotICogZnVuY3Rpb24gd2lsbCBhbHNvIGNsZWFudXAgcmVqZWN0ZWQgc29ja2V0cywgdGhvc2UgdGhhdCByZWFjaCB0aGUgY29ubmVjdGVkCi0gKiBzdGF0ZSBidXQgbGVhdmUgaXQgYmVmb3JlIHRoZXkgaGF2ZSBiZWVuIGFjY2VwdGVkLgomIzQzOyAqIHVwIChzb2NrX3B1dCgpIC0mZ3Q7IHNrX2ZyZWUoKSAtJmd0OyBvdXIgc2tfZGVzdHJ1Y3QgaW1wbGVtZW50YXRpb24pLgogICoKICAqIC0gTG9jayBvcmRlcmluZyBmb3IgcGVuZGluZyBvciBhY2NlcHQgcXVldWUgc29ja2V0cyBpczoKICAqCkBAIC03NzQsMTEgJiM0Mzs3NzIsMTEgQEAgc3RhdGljIHZvaWQgdnNvY2tfcGVuZGluZ193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAogCWlmICh2c29ja19pc19wZW5kaW5nKHNrKSkgewogCQl2c29ja19yZW1vdmVfcGVuZGluZyhsaXN0ZW5lciwgc2spOwotCX0gZWxzZSBpZiAoIXZzay0mZ3Q7cmVqZWN0ZWQpIHsKLQkJLyogV2UgYXJlIG5vdCBvbiB0aGUgcGVuZGluZyBsaXN0IGFuZCBhY2NlcHQoKSBkaWQgbm90IHJlamVjdAotCQkgKiB1cywgc28gd2UgbXVzdCBoYXZlIGJlZW4gYWNjZXB0ZWQgYnkgb3VyIHVzZXIgcHJvY2Vzcy4gIFdlCi0JCSAqIGp1c3QgbmVlZCB0byBkcm9wIG91ciByZWZlcmVuY2VzIHRvIHRoZSBzb2NrZXRzIGFuZCBiZSBvbgotCQkgKiBvdXIgd2F5LgomIzQzOwl9IGVsc2UgewomIzQzOwkJLyogV2UgYXJlIG5vdCBvbiB0aGUgcGVuZGluZyBsaXN0LCBzbyB3ZSBtdXN0IGhhdmUgYmVlbiBhY2NlcHRlZAomIzQzOwkJICogYnkgb3VyIHVzZXIgcHJvY2VzcyAocmVqZWN0ZWQgc29ja2V0cyBhcmUgY2xlYW5lZCB1cCBkaXJlY3RseQomIzQzOwkJICogaW4gdnNvY2tfYWNjZXB0KCkpLiAgV2UganVzdCBuZWVkIHRvIGRyb3Agb3VyIHJlZmVyZW5jZXMgdG8KJiM0MzsJCSAqIHRoZSBzb2NrZXRzIGFuZCBiZSBvbiBvdXIgd2F5LgogCQkgKi8KIAkJY2xlYW51cCA9IGZhbHNlOwogCQlnb3RvIG91dDsKQEAgLTk0Miw3ICYjNDM7OTQwLDYgQEAgc3RhdGljIHN0cnVjdCBzb2NrICpfX3Zzb2NrX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsCiAJdnNrLSZndDtsaXN0ZW5lciA9IE5VTEw7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDt2c2stJmd0O3BlbmRpbmdfbGlua3MpOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7dnNrLSZndDthY2NlcHRfcXVldWUpOwotCXZzay0mZ3Q7cmVqZWN0ZWQgPSBmYWxzZTsKIAl2c2stJmd0O3NlbnRfcmVxdWVzdCA9IGZhbHNlOwogCXZzay0mZ3Q7aWdub3JlX2Nvbm5lY3RpbmdfcnN0ID0gZmFsc2U7CiAJV1JJVEVfT05DRSh2c2stJmd0O3BlZXJfc2h1dGRvd24sIDApOwpAQCAtMTkxOSwxNCAmIzQzOzE5MTYsMTkgQEAgc3RhdGljIGludCB2c29ja19hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jaywKIAkJdmNvbm5lY3RlZCA9IHZzb2NrX3NrKGNvbm5lY3RlZCk7CiAKIAkJLyogSWYgdGhlIGxpc3RlbmVyIHNvY2tldCBoYXMgcmVjZWl2ZWQgYW4gZXJyb3IsIHRoZW4gd2Ugc2hvdWxkCi0JCSAqIHJlamVjdCB0aGlzIHNvY2tldCBhbmQgcmV0dXJuLiAgTm90ZSB0aGF0IHdlIHNpbXBseSBtYXJrIHRoZQotCQkgKiBzb2NrZXQgcmVqZWN0ZWQsIGRyb3Agb3VyIHJlZmVyZW5jZSwgYW5kIGxldCB0aGUgY2xlYW51cAotCQkgKiBmdW5jdGlvbiBoYW5kbGUgdGhlIGNsZWFudXA7IHRoZSBmYWN0IHRoYXQgd2UgZm91bmQgaXQgaW4KLQkJICogdGhlIGxpc3RlbmVyJiMzOTtzIGFjY2VwdCBxdWV1ZSBndWFyYW50ZWVzIHRoYXQgdGhlIGNsZWFudXAKLQkJICogZnVuY3Rpb24gaGFzbiYjMzk7dCBydW4geWV0LgomIzQzOwkJICogcmVqZWN0IHRoaXMgc29ja2V0IGFuZCByZXR1cm4uICBUaGUgY2hpbGQgd2FzIGZvdW5kIG9uIHRoZQomIzQzOwkJICogbGlzdGVuZXImIzM5O3MgYWNjZXB0IHF1ZXVlLCBzbyBpdCBzdGlsbCBob2xkcyB0aGUgcmVmZXJlbmNlcwomIzQzOwkJICogdGFrZW4gYnkgc2tfYWxsb2MoKSwgX192c29ja19pbnNlcnRfY29ubmVjdGVkKCkgYW5kCiYjNDM7CQkgKiB2c29ja19lbnF1ZXVlX2FjY2VwdCgpLiAgRHJvcCB0aGVtIGhlcmUgc28gdGhlIHNvY2tldCBpcwomIzQzOwkJICogZGVzdHJveWVkLiAgV2UgY2Fubm90IGRlZmVyIHRoaXMgdG8gdnNvY2tfcGVuZGluZ193b3JrKCk6CiYjNDM7CQkgKiByZWplY3RlZCBjaGlsZCBzb2NrZXRzIGNyZWF0ZWQgdGhyb3VnaCB2aXJ0aW9fdHJhbnNwb3J0IGFuZAomIzQzOwkJICogdnNvY2tfbG9vcGJhY2sgYXJlIG5vdCBjbGVhbmVkIHVwIGJ5IHRoYXQgd29ya2VyLCBzbyB0aGUKJiM0MzsJCSAqIGNoaWxkIHdvdWxkIG90aGVyd2lzZSBsZWFrIHBlcm1hbmVudGx5LgogCQkgKi8KIAkJaWYgKGVycikgewotCQkJdmNvbm5lY3RlZC0mZ3Q7cmVqZWN0ZWQgPSB0cnVlOwomIzQzOwkJCXZzb2NrX3JlbW92ZV9jb25uZWN0ZWQodmNvbm5lY3RlZCk7CiYjNDM7CQkJY29ubmVjdGVkLSZndDtza19zdGF0ZSA9IFRDUF9DTE9TRTsKJiM0MzsJCQlzb2NrX3B1dChjb25uZWN0ZWQpOwogCQl9IGVsc2UgewogCQkJbmV3c29jay0mZ3Q7c3RhdGUgPSBTU19DT05ORUNURUQ7CiAJCQlzb2NrX2dyYWZ0KGNvbm5lY3RlZCwgbmV3c29jayk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMjkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSB2c29jayBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0JiMzOTtzIGJlZW4gcHJvcG9zZWQgZm9yIHRoZSB2c29jayBpbXBsZW1lbnRhdGlvbiwgc3BlY2lmaWNhbGx5IGluIGBuZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmNgIGFuZCBgaW5jbHVkZS9uZXQvYWZfdnNvY2suaGAuIE15IGltbWVkaWF0ZSB0YWtlYXdheSBpcyB0aGF0IHRoZXkmIzM5O3JlIHN0cmVhbWxpbmluZyB0aGUgc29ja2V0IHJlamVjdGlvbiBwcm9jZXNzLiBUaGUgcGF0Y2ggZWxpbWluYXRlcyB0aGUgYHJlamVjdGVkYCBmaWVsZCB3aXRoaW4gYHN0cnVjdCB2c29ja19zb2NrYC4gRXNzZW50aWFsbHksIHJhdGhlciB0aGFuIG1hcmtpbmcgYSBzb2NrZXQgYW5kIGRlZmVycmluZyB0aGUgY2xlYW51cCwgaXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSBoYW5kbGluZyB0aGUgY2xlYW51cCBkaXJlY3RseSB3aXRoaW4gYHZzb2NrX2FjY2VwdCgpYC4KCkxldCYjMzk7cyBkaXZlIGRlZXBlciBhbmQgdmVyaWZ5IHRoZSBjaGFuZ2VzIGluIGB2c29ja19hY2NlcHRgIHdpdGhpbiBgbmV0L3Ztd192c29jay9hZl92c29jay5jYC4gQWgsIHllcywgaGVyZSB3ZSBnby4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggcmVwbGFjZXMgdGhlIHNldHRpbmcgb2YgYHZjb25uZWN0ZWQtJmd0O3JlamVjdGVkID0gdHJ1ZWAgd2l0aCBhIG1vcmUgZGlyZWN0IGFwcHJvYWNoLiBUaGV5JiMzOTtyZSBub3cgY2FsbGluZyBgdnNvY2tfcmVtb3ZlX2Nvbm5lY3RlZCh2Y29ubmVjdGVkKWAsIHNldHRpbmcgYGNvbm5lY3RlZC0mZ3Q7c2tfc3RhdGUgPSBUQ1BfQ0xPU0VgLCBhbmQgdGhlbiBkb2luZyBhIGBzb2NrX3B1dChjb25uZWN0ZWQpYC4gVGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiB0byB0aGUgY29yZSB2c29jayBoYW5kbGluZywgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBmb3Igb3RoZXIgbW9kdWxlcyBhbmQgcG9zc2libGUgc2lkZS1lZmZlY3RzLgoKQmVmb3JlIEkgZ28gYW55IGRlZXBlciwgSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHdoYXQgY29uZmlnIG9wdGlvbnMgYXJlIHJlbGF0ZWQgdG8gdGhpcy4KCkFscmlnaHQsIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzLCBvYnZpb3VzbHksIGBDT05GSUdfVlNPQ0tFVFNgLiBJJiMzOTtsbCBoYXZlIGEgbG9vayBhdCBgbmV0L3Ztd192c29jay9LY29uZmlnYCB0byBiZSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWU09DS0VUUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrL0tjb25maWctNS1cbm5ldC92bXdfdnNvY2svS2NvbmZpZzo2OmNvbmZpZyBWU09DS0VUU1xubmV0L3Ztd192c29jay9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIFNvY2tldCBwcm90b2NvbFwmIzM0O1xuLS1cbm5ldC92bXdfdnNvY2svS2NvbmZpZy0xOC1cbm5ldC92bXdfdnNvY2svS2NvbmZpZzoxOTpjb25maWcgVlNPQ0tFVFNfRElBR1xubmV0L3Ztd192c29jay9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBTb2NrZXRzIG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L3Ztd192c29jay9LY29uZmlnLTI4LVxubmV0L3Ztd192c29jay9LY29uZmlnOjI5OmNvbmZpZyBWU09DS0VUU19MT09QQkFDS1xubmV0L3Ztd192c29jay9LY29uZmlnLTMwLVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBTb2NrZXRzIGxvb3BiYWNrIHRyYW5zcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMDAKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGVzZSB0aG91Z2h0cywgdGFpbG9yZWQgYXMgaWYgSSwgYXMgYW4gZXhwZXJ0LCB3ZXJlIGhhdmluZyB0aGVtOgoKKipWU09DS0VUUyBDb25maWd1cmF0aW9uIERlZXAgRGl2ZSoqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGBWU09DS0VUU2AgaGVyZS4gVGhhdCBtZWFucyB3ZSYjMzk7cmUgaW4gdGhlIHJlYWxtIG9mIHZpcnR1YWwgc29ja2V0cywgd2hpY2ggaXMgZ29pbmcgdG8gc2hhcGUgaG93IHdlIHRoaW5rIGFib3V0IHRoaXMuIFRoZSBjcml0aWNhbCBhc3BlY3QgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiB0aGF0JiMzOTtzIGF0IHBsYXkuCgpOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgd2hlcmUgdG8gc3RhcnQgbXkgaW52ZXN0aWdhdGlvbi4gTXkgaW5pdGlhbCBpbmNsaW5hdGlvbiBpcyB0byBsb29rIGF0IHRoZXNlIGZvY3VzIHN5bWJvbHM6IGB2c29ja19hY2NlcHRgIGFuZCBgdnNvY2tfcGVuZGluZ193b3JrYC4gVGhlc2UgZmVlbCBsaWtlIHNvbGlkIGVudHJ5IHBvaW50cywgcGFydGljdWxhcmx5IGB2c29ja19hY2NlcHRgLiBJdCByZXByZXNlbnRzIHRoZSBwcm9jZXNzIG9mIGEgY29ubmVjdGlvbiwgYW5kIHRoZSBvdGhlciByZWxhdGVzIHRvIHdvcmsgdGhhdCBpcyB3YWl0aW5nLiBgdnNvY2tfYWNjZXB0YCBsb29rcyBsaWtlIGEga2V5IHN0YXJ0aW5nIHBvaW50IHRvIGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Zzb2NrX2FjY2VwdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svYWZfdnNvY2suYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtNDEtICogZnJvbSB0aGUgbGlzdGVuZXIgc29ja2V0JiMzOTtzIGFjY2VwdCBxdWV1ZS4gIElmIHRoZSBzb2NrZXQgY2Fubm90IGJlIGFjY2VwdGVkXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmM6NDI6ICogZm9yIHNvbWUgcmVhc29uIHRoZW4gaXQgaXMgY2xlYW5lZCB1cCBkaXJlY3RseSBpbiB2c29ja19hY2NlcHQoKS4gIE9uY2UgdGhlXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtNDMtICogY29ubmVjdGlvbiBpcyBhY2NlcHRlZCwgaXQgaXMgb3duZWQgYnkgdGhlIHVzZXIgcHJvY2VzcyBhbmQgdGhlXG4tLVxubmV0L3Ztd192c29jay9hZl92c29jay5jPTc1OD1zdGF0aWMgdm9pZCB2c29ja19wZW5kaW5nX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYy03NzctXHRcdCAqIGJ5IG91ciB1c2VyIHByb2Nlc3MgKHJlamVjdGVkIHNvY2tldHMgYXJlIGNsZWFuZWQgdXAgZGlyZWN0bHlcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYzo3Nzg6XHRcdCAqIGluIHZzb2NrX2FjY2VwdCgpKS4gIFdlIGp1c3QgbmVlZCB0byBkcm9wIG91ciByZWZlcmVuY2VzIHRvXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtNzc5LVx0XHQgKiB0aGUgc29ja2V0cyBhbmQgYmUgb24gb3VyIHdheS5cbi0tXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmM9MTY3ND1zdGF0aWMgaW50IHZzb2NrX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKmFkZHIsXG4tLVxubmV0L3Ztd192c29jay9hZl92c29jay5jLTE4NjEtXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmM6MTg2MjpzdGF0aWMgaW50IHZzb2NrX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLFxubmV0L3Ztd192c29jay9hZl92c29jay5jLTE4NjMtXHRcdFx0c3RydWN0IHByb3RvX2FjY2VwdF9hcmcgKmFyZylcbi0tXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmM9MjY0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyB2c29ja19zdHJlYW1fb3BzID0ge1xuLS1cbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYy0yNjUyLVx0LnNvY2tldHBhaXIgPSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmM6MjY1MzpcdC5hY2NlcHQgPSB2c29ja19hY2NlcHQsXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtMjY1NC1cdC5nZXRuYW1lID0gdnNvY2tfZ2V0bmFtZSxcbi0tXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmM9MjY2OD1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyB2c29ja19zZXFwYWNrZXRfb3BzID0ge1xuLS1cbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYy0yNjc0LVx0LnNvY2tldHBhaXIgPSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmM6MjY3NTpcdC5hY2NlcHQgPSB2c29ja19hY2NlcHQsXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtMjY3Ni1cdC5nZXRuYW1lID0gdnNvY2tfZ2V0bmFtZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTI0CgkJCQkJCQlvdXRwdXQ6IDEyOQoJCQkJCQkJdGhvdWdodHM6IDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKlZTT0NLIFNvY2tldCBMZWFrIEZpeCBhbmQgRnV6emluZyBDb25zaWRlcmF0aW9uKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdGFyZ2V0cyBhIHByZXR0eSBzcGVjaWZpYyBwcm9ibGVtOiBhIGxlYWsgb2YgcmVqZWN0ZWQgY2hpbGQgc29ja2V0cyBpbiB0aGUgdnNvY2sgc3RyZWFtIGFuZCBzZXFwYWNrZXQgb3BlcmF0aW9ucy4gU3BlY2lmaWNhbGx5LCB0aGUgbGVhayBpcyBvcmlnaW5hdGluZyBmcm9tIGhvdyB3ZSBoYW5kbGUgdGhpbmdzIHdpdGggYHZpcnRpb190cmFuc3BvcnRgIGFuZCBgdnNvY2tfbG9vcGJhY2tgLiBgdnNvY2tfYWNjZXB0YCBoYW5kbGVzIHRoZSBgYWNjZXB0YCBmdW5jdGlvbiBmb3IgYm90aCwgYW5kIGB2c29ja19wZW5kaW5nX3dvcmtgIGlzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uIGludm9sdmVkIGluIHRoZSBwcm9jZXNzLgoKVGhpcyBmaXggaXMgaW50ZXJlc3RpbmcuIFRoZSBmYWN0IHRoYXQgd2UgaGF2ZSBhIG1lbW9yeSBsZWFrIHJlbGF0ZWQgdG8gKnJlamVjdGVkKiBzb2NrZXRzIGlzIGEgZ29vZCBpbmRpY2F0b3IgdGhhdCBzb21ldGhpbmcmIzM5O3Mgb2ZmIGluIHRoZSBlcnJvciBwYXRoIG9yIHRoZSBjbGVhbnVwIHJvdXRpbmVzLiBJdCBzdWdnZXN0cyB0aGUgbm9ybWFsIGNsb3NlIHBhdGggaXMgbmV2ZXIgZ2V0dGluZyBjYWxsZWQgd2hlbiBhIHNvY2tldCBpcyByZWplY3RlZCBieSBhIHNlcnZlci4KCkdpdmVuIHRoZSBwb3RlbnRpYWwgY29tcGxleGl0eSBhbmQgdGhlIGZhY3QgdGhhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHNvY2tldCBtYW5hZ2VtZW50IChhbHdheXMgYSBnb29kIHRhcmdldCksIHRoaXMgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGEgdGhvcm91Z2ggZnV6emluZyBjYW1wYWlnbi4gV2UgbmVlZCB0byBoaXQgdGhpcyB3aXRoIGFsbCBzb3J0cyBvZiBtYWxmb3JtZWQgZGF0YSBhbmQgZWRnZSBjYXNlcyB0byBlbnN1cmUgd2UmIzM5O3ZlIHJlYWxseSBwbHVnZ2VkIHRoZSBob2xlLiBJdCYjMzk7cyBhIHByaW1lIHRhcmdldCBmb3IgY3Jhc2hpbmcgYW5kIG1lbW9yeSBjb3JydXB0aW9uLCBzbyBmdXp6aW5nIGlzIGFsbW9zdCBhIGdpdmVuLiBMZXQmIzM5O3Mgc3RhcnQgYnkgc2V0dGluZyB0aGF0IHVwIGltbWVkaWF0ZWx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWU09DS0VUUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zzb2NrX2FjY2VwdCYjMzQ7LAogICAgJiMzNDt2c29ja19wZW5kaW5nX3dvcmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgdnNvY2sgbG9naWMgZm9yIGhhbmRsaW5nIHJlamVjdGVkIGNvbm5lY3Rpb25zIGluIGB2c29ja19hY2NlcHRgIGFuZCBgdnNvY2tfcGVuZGluZ193b3JrYC4gSXQgZml4ZXMgYSBsZWFrIG9mIHJlamVjdGVkIGNoaWxkIHNvY2tldHMgYnkgY2xlYW5pbmcgdGhlbSB1cCBkaXJlY3RseSBpbiBgdnNvY2tfYWNjZXB0YCBpbnN0ZWFkIG9mIGRlZmVycmluZyB0byBgdnNvY2tfcGVuZGluZ193b3JrYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZTT0NLRVRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dnNvY2tfYWNjZXB0JiMzNDssCiAgICAmIzM0O3Zzb2NrX3BlbmRpbmdfd29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSB2c29jayBsb2dpYyBmb3IgaGFuZGxpbmcgcmVqZWN0ZWQgY29ubmVjdGlvbnMgaW4gYHZzb2NrX2FjY2VwdGAgYW5kIGB2c29ja19wZW5kaW5nX3dvcmtgLiBJdCBmaXhlcyBhIGxlYWsgb2YgcmVqZWN0ZWQgY2hpbGQgc29ja2V0cyBieSBjbGVhbmluZyB0aGVtIHVwIGRpcmVjdGx5IGluIGB2c29ja19hY2NlcHRgIGluc3RlYWQgb2YgZGVmZXJyaW5nIHRvIGB2c29ja19wZW5kaW5nX3dvcmtgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNToyMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjIxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsaWZlY3ljbGUgb2YgdnNvY2sgc29ja2V0cyBkdXJpbmcgdGhlIGBhY2NlcHQoKWAgcHJvY2Vzcy4gU3BlY2lmaWNhbGx5LCBpdCByZW1vdmVzIHRoZSBgcmVqZWN0ZWRgIGZsYWcgZnJvbSBgc3RydWN0IHZzb2NrX3NvY2tgIGFuZCBjaGFuZ2VzIGB2c29ja19hY2NlcHQoKWAgdG8gaW1tZWRpYXRlbHkgY2xlYW4gdXAgYW5kIGRyb3AgcmVmZXJlbmNlcyB0byBhIHJlamVjdGVkIGNoaWxkIHNvY2tldCwgcmF0aGVyIHRoYW4gZGVmZXJyaW5nIHRoZSBjbGVhbnVwIHRvIGB2c29ja19wZW5kaW5nX3dvcmsoKWAuIFRoaXMgYWRkcmVzc2VzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIGxpZmVjeWNsZSBpc3N1ZSB3aGVyZSByZWplY3RlZCBzb2NrZXRzIG1pZ2h0IG5vdCBiZSBjbGVhbmVkIHVwIGJ5IHRoZSBwZW5kaW5nIHdvcmtlci5cblxuVGhlc2UgY2hhbmdlcyBhcmUgcmVsYXRlZCB0byBvYmplY3QgbGlmZWN5Y2xlLCByZWZlcmVuY2UgY291bnRpbmcsIGFuZCBzdGF0ZSBtYW5hZ2VtZW50LiBBbnkgYnVncyBpbnRyb2R1Y2VkIG9yIGZpeGVkIGJ5IHRoaXMgcGF0Y2ggd291bGQgbWFuaWZlc3QgYXMgbWVtb3J5IGxlYWtzLCB1c2UtYWZ0ZXItZnJlZSAoVUFGKSwgb3IgZG91YmxlLWZyZWUgdnVsbmVyYWJpbGl0aWVzLiBTdWNoIGlzc3VlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4gKGZvciBVQUYvZG91YmxlLWZyZWUpIGFuZCBLTUVNTEVBSyAoZm9yIG1lbW9yeSBsZWFrcykuXG5cblRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGRhdGEgc3RydWN0dXJlcywgZG9lcyBub3QgZXhwb3NlIGFueSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBpbnZvbHZlIGNvbXBsZXggaW5pdGlhbGl6YXRpb25zIHdoZXJlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGNvdWxkIGJlIHJlYWQgb3IgbGVha2VkLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDdkOGI5ODQ5ODdjZWIwMTEyMjQxMmNiNjMwNjIyNTgzZWJmYjlhNzYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyA3IDE1OjIwOjM2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvYWZfdnNvY2suaCBiL2luY2x1ZGUvbmV0L2FmX3Zzb2NrLmgKaW5kZXggMzAwNDZhM2MyMGY3My4uYjcwY2VhN2Y3NTRmNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvYWZfdnNvY2suaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9hZl92c29jay5oCkBAIC01MywxMiAmIzQzOzUzLDEwIEBAIHN0cnVjdCB2c29ja19zb2NrIHsKIAkgKiBmb3IgY29ubmVjdGlvbiByZXF1ZXN0cyBhcmUgcGxhY2VkIGluIHRoZSBwZW5kaW5nIGxpc3QgdW50aWwgdGhleQogCSAqIGFyZSBjb25uZWN0ZWQsIGF0IHdoaWNoIHBvaW50IHRoZXkgYXJlIHB1dCBpbiB0aGUgYWNjZXB0IHF1ZXVlIGxpc3QKIAkgKiBzbyB0aGV5IGNhbiBiZSBhY2NlcHRlZCBpbiBhY2NlcHQoKS4gIElmIGFjY2VwdCgpIGNhbm5vdCBhY2NlcHQgdGhlCi0JICogY29ubmVjdGlvbiwgaXQgaXMgbWFya2VkIGFzIHJlamVjdGVkIHNvIHRoZSBjbGVhbnVwIGZ1bmN0aW9uIGtub3dzCi0JICogdG8gY2xlYW4gdXAgdGhlIHNvY2tldC4KJiM0MzsJICogY29ubmVjdGlvbiwgdGhlIGNoaWxkIGlzIGNsZWFuZWQgdXAgZGlyZWN0bHkgaW4gdnNvY2tfYWNjZXB0KCkuCiAJICovCiAJc3RydWN0IGxpc3RfaGVhZCBwZW5kaW5nX2xpbmtzOwogCXN0cnVjdCBsaXN0X2hlYWQgYWNjZXB0X3F1ZXVlOwotCWJvb2wgcmVqZWN0ZWQ7CiAJc3RydWN0IGRlbGF5ZWRfd29yayBjb25uZWN0X3dvcms7CiAJc3RydWN0IGRlbGF5ZWRfd29yayBwZW5kaW5nX3dvcms7CiAJc3RydWN0IGRlbGF5ZWRfd29yayBjbG9zZV93b3JrOwpkaWZmIC0tZ2l0IGEvbmV0L3Ztd192c29jay9hZl92c29jay5jIGIvbmV0L3Ztd192c29jay9hZl92c29jay5jCmluZGV4IDYyMmRiZDA0Njc5OTQuLjIwODRjODhhYzgzNmYgMTAwNjQ0Ci0tLSBhL25ldC92bXdfdnNvY2svYWZfdnNvY2suYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMKQEAgLTM5LDkgJiM0MzszOSw5IEBACiAgKiBmcm9tIHRoZSBsaXN0ZW5lciBzb2NrZXQmIzM5O3MgcGVuZGluZyBsaXN0IGFuZCBlbnF1ZXVlZCBpbiB0aGUgbGlzdGVuZXIKICAqIHNvY2tldCYjMzk7cyBhY2NlcHQgcXVldWUuICBDYWxsZXJzIG9mIGFjY2VwdCgyKSB3aWxsIGFjY2VwdCBjb25uZWN0ZWQgc29ja2V0cwogICogZnJvbSB0aGUgbGlzdGVuZXIgc29ja2V0JiMzOTtzIGFjY2VwdCBxdWV1ZS4gIElmIHRoZSBzb2NrZXQgY2Fubm90IGJlIGFjY2VwdGVkCi0gKiBmb3Igc29tZSByZWFzb24gdGhlbiBpdCBpcyBtYXJrZWQgcmVqZWN0ZWQuICBPbmNlIHRoZSBjb25uZWN0aW9uIGlzCi0gKiBhY2NlcHRlZCwgaXQgaXMgb3duZWQgYnkgdGhlIHVzZXIgcHJvY2VzcyBhbmQgdGhlIHJlc3BvbnNpYmlsaXR5IGZvciBjbGVhbnVwCi0gKiBmYWxscyB3aXRoIHRoYXQgdXNlciBwcm9jZXNzLgomIzQzOyAqIGZvciBzb21lIHJlYXNvbiB0aGVuIGl0IGlzIGNsZWFuZWQgdXAgZGlyZWN0bHkgaW4gdnNvY2tfYWNjZXB0KCkuICBPbmNlIHRoZQomIzQzOyAqIGNvbm5lY3Rpb24gaXMgYWNjZXB0ZWQsIGl0IGlzIG93bmVkIGJ5IHRoZSB1c2VyIHByb2Nlc3MgYW5kIHRoZQomIzQzOyAqIHJlc3BvbnNpYmlsaXR5IGZvciBjbGVhbnVwIGZhbGxzIHdpdGggdGhhdCB1c2VyIHByb2Nlc3MuCiAgKgogICogLSBJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZXNlIHBlbmRpbmcgc29ja2V0cyB3aWxsIG5ldmVyIHJlYWNoIHRoZSBjb25uZWN0ZWQKICAqIHN0YXRlOyBpbiBmYWN0LCB3ZSBtYXkgbmV2ZXIgcmVjZWl2ZSBhbm90aGVyIHBhY2tldCBhZnRlciB0aGUgY29ubmVjdGlvbgpAQCAtNDksOSAmIzQzOzQ5LDcgQEAKICAqIGZ1dHVyZSwgYWZ0ZXIgc29tZSBhbW91bnQgb2YgdGltZSBwYXNzZXMgd2hlcmUgYSBjb25uZWN0aW9uIHNob3VsZCBoYXZlIGJlZW4KICAqIGVzdGFibGlzaGVkLiAgVGhpcyBmdW5jdGlvbiBlbnN1cmVzIHRoYXQgdGhlIHNvY2tldCBpcyBvZmYgYWxsIGxpc3RzIHNvIGl0CiAgKiBjYW5ub3QgYmUgcmV0cmlldmVkLCB0aGVuIGRyb3BzIGFsbCByZWZlcmVuY2VzIHRvIHRoZSBzb2NrZXQgc28gaXQgaXMgY2xlYW5lZAotICogdXAgKHNvY2tfcHV0KCkgLSZndDsgc2tfZnJlZSgpIC0mZ3Q7IG91ciBza19kZXN0cnVjdCBpbXBsZW1lbnRhdGlvbikuICBOb3RlIHRoaXMKLSAqIGZ1bmN0aW9uIHdpbGwgYWxzbyBjbGVhbnVwIHJlamVjdGVkIHNvY2tldHMsIHRob3NlIHRoYXQgcmVhY2ggdGhlIGNvbm5lY3RlZAotICogc3RhdGUgYnV0IGxlYXZlIGl0IGJlZm9yZSB0aGV5IGhhdmUgYmVlbiBhY2NlcHRlZC4KJiM0MzsgKiB1cCAoc29ja19wdXQoKSAtJmd0OyBza19mcmVlKCkgLSZndDsgb3VyIHNrX2Rlc3RydWN0IGltcGxlbWVudGF0aW9uKS4KICAqCiAgKiAtIExvY2sgb3JkZXJpbmcgZm9yIHBlbmRpbmcgb3IgYWNjZXB0IHF1ZXVlIHNvY2tldHMgaXM6CiAgKgpAQCAtNzc0LDExICYjNDM7NzcyLDExIEBAIHN0YXRpYyB2b2lkIHZzb2NrX3BlbmRpbmdfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAKIAlpZiAodnNvY2tfaXNfcGVuZGluZyhzaykpIHsKIAkJdnNvY2tfcmVtb3ZlX3BlbmRpbmcobGlzdGVuZXIsIHNrKTsKLQl9IGVsc2UgaWYgKCF2c2stJmd0O3JlamVjdGVkKSB7Ci0JCS8qIFdlIGFyZSBub3Qgb24gdGhlIHBlbmRpbmcgbGlzdCBhbmQgYWNjZXB0KCkgZGlkIG5vdCByZWplY3QKLQkJICogdXMsIHNvIHdlIG11c3QgaGF2ZSBiZWVuIGFjY2VwdGVkIGJ5IG91ciB1c2VyIHByb2Nlc3MuICBXZQotCQkgKiBqdXN0IG5lZWQgdG8gZHJvcCBvdXIgcmVmZXJlbmNlcyB0byB0aGUgc29ja2V0cyBhbmQgYmUgb24KLQkJICogb3VyIHdheS4KJiM0MzsJfSBlbHNlIHsKJiM0MzsJCS8qIFdlIGFyZSBub3Qgb24gdGhlIHBlbmRpbmcgbGlzdCwgc28gd2UgbXVzdCBoYXZlIGJlZW4gYWNjZXB0ZWQKJiM0MzsJCSAqIGJ5IG91ciB1c2VyIHByb2Nlc3MgKHJlamVjdGVkIHNvY2tldHMgYXJlIGNsZWFuZWQgdXAgZGlyZWN0bHkKJiM0MzsJCSAqIGluIHZzb2NrX2FjY2VwdCgpKS4gIFdlIGp1c3QgbmVlZCB0byBkcm9wIG91ciByZWZlcmVuY2VzIHRvCiYjNDM7CQkgKiB0aGUgc29ja2V0cyBhbmQgYmUgb24gb3VyIHdheS4KIAkJICovCiAJCWNsZWFudXAgPSBmYWxzZTsKIAkJZ290byBvdXQ7CkBAIC05NDIsNyAmIzQzOzk0MCw2IEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqX192c29ja19jcmVhdGUoc3RydWN0IG5ldCAqbmV0LAogCXZzay0mZ3Q7bGlzdGVuZXIgPSBOVUxMOwogCUlOSVRfTElTVF9IRUFEKCZhbXA7dnNrLSZndDtwZW5kaW5nX2xpbmtzKTsKIAlJTklUX0xJU1RfSEVBRCgmYW1wO3Zzay0mZ3Q7YWNjZXB0X3F1ZXVlKTsKLQl2c2stJmd0O3JlamVjdGVkID0gZmFsc2U7CiAJdnNrLSZndDtzZW50X3JlcXVlc3QgPSBmYWxzZTsKIAl2c2stJmd0O2lnbm9yZV9jb25uZWN0aW5nX3JzdCA9IGZhbHNlOwogCVdSSVRFX09OQ0UodnNrLSZndDtwZWVyX3NodXRkb3duLCAwKTsKQEAgLTE5MTksMTQgJiM0MzsxOTE2LDE5IEBAIHN0YXRpYyBpbnQgdnNvY2tfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssCiAJCXZjb25uZWN0ZWQgPSB2c29ja19zayhjb25uZWN0ZWQpOwogCiAJCS8qIElmIHRoZSBsaXN0ZW5lciBzb2NrZXQgaGFzIHJlY2VpdmVkIGFuIGVycm9yLCB0aGVuIHdlIHNob3VsZAotCQkgKiByZWplY3QgdGhpcyBzb2NrZXQgYW5kIHJldHVybi4gIE5vdGUgdGhhdCB3ZSBzaW1wbHkgbWFyayB0aGUKLQkJICogc29ja2V0IHJlamVjdGVkLCBkcm9wIG91ciByZWZlcmVuY2UsIGFuZCBsZXQgdGhlIGNsZWFudXAKLQkJICogZnVuY3Rpb24gaGFuZGxlIHRoZSBjbGVhbnVwOyB0aGUgZmFjdCB0aGF0IHdlIGZvdW5kIGl0IGluCi0JCSAqIHRoZSBsaXN0ZW5lciYjMzk7cyBhY2NlcHQgcXVldWUgZ3VhcmFudGVlcyB0aGF0IHRoZSBjbGVhbnVwCi0JCSAqIGZ1bmN0aW9uIGhhc24mIzM5O3QgcnVuIHlldC4KJiM0MzsJCSAqIHJlamVjdCB0aGlzIHNvY2tldCBhbmQgcmV0dXJuLiAgVGhlIGNoaWxkIHdhcyBmb3VuZCBvbiB0aGUKJiM0MzsJCSAqIGxpc3RlbmVyJiMzOTtzIGFjY2VwdCBxdWV1ZSwgc28gaXQgc3RpbGwgaG9sZHMgdGhlIHJlZmVyZW5jZXMKJiM0MzsJCSAqIHRha2VuIGJ5IHNrX2FsbG9jKCksIF9fdnNvY2tfaW5zZXJ0X2Nvbm5lY3RlZCgpIGFuZAomIzQzOwkJICogdnNvY2tfZW5xdWV1ZV9hY2NlcHQoKS4gIERyb3AgdGhlbSBoZXJlIHNvIHRoZSBzb2NrZXQgaXMKJiM0MzsJCSAqIGRlc3Ryb3llZC4gIFdlIGNhbm5vdCBkZWZlciB0aGlzIHRvIHZzb2NrX3BlbmRpbmdfd29yaygpOgomIzQzOwkJICogcmVqZWN0ZWQgY2hpbGQgc29ja2V0cyBjcmVhdGVkIHRocm91Z2ggdmlydGlvX3RyYW5zcG9ydCBhbmQKJiM0MzsJCSAqIHZzb2NrX2xvb3BiYWNrIGFyZSBub3QgY2xlYW5lZCB1cCBieSB0aGF0IHdvcmtlciwgc28gdGhlCiYjNDM7CQkgKiBjaGlsZCB3b3VsZCBvdGhlcndpc2UgbGVhayBwZXJtYW5lbnRseS4KIAkJICovCiAJCWlmIChlcnIpIHsKLQkJCXZjb25uZWN0ZWQtJmd0O3JlamVjdGVkID0gdHJ1ZTsKJiM0MzsJCQl2c29ja19yZW1vdmVfY29ubmVjdGVkKHZjb25uZWN0ZWQpOwomIzQzOwkJCWNvbm5lY3RlZC0mZ3Q7c2tfc3RhdGUgPSBUQ1BfQ0xPU0U7CiYjNDM7CQkJc29ja19wdXQoY29ubmVjdGVkKTsKIAkJfSBlbHNlIHsKIAkJCW5ld3NvY2stJmd0O3N0YXRlID0gU1NfQ09OTkVDVEVEOwogCQkJc29ja19ncmFmdChjb25uZWN0ZWQsIG5ld3NvY2spOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTU6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIyNgoJCQkJCQkJb3V0cHV0OiAyNTQKCQkJCQkJCXRob3VnaHRzOiA1NTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSB2c29jayBTb2NrZXQgTGlmZWN5Y2xlIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgdGFyZ2V0ZWQgYXQgYHZzb2NrX2FjY2VwdGAgaW4gYG5ldC92bXdfdnNvY2svYWZfdnNvY2suY2AgYW5kIGlzIGZvY3VzZWQgb24gc3RyZWFtbGluaW5nIHNvY2tldCBsaWZlY3ljbGUgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IGFyb3VuZCByZWplY3RlZCBzb2NrZXRzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhpcyBpcyBhZGRyZXNzaW5nIGEgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWUg4oCTIGxpa2VseSBhIGxlYWsgb3IgdXNlLWFmdGVyLWZyZWUsIGJhc2VkIG9uIHRoZSBjb250ZXh0LiBJbnN0ZWFkIG9mIG1hcmtpbmcgYSBzb2NrZXQgYXMgcmVqZWN0ZWQgYW5kIGRlZmVycmluZyBjbGVhbnVwLCB0aGUgcGF0Y2ggaXMgbm93IGhhbmRsaW5nIGltbWVkaWF0ZSBjbGVhbnVwIGRpcmVjdGx5IHdpdGhpbiBgdnNvY2tfYWNjZXB0YC4KCk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24mIzM5O3QgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGNoYW5nZXMgaW52b2x2ZSByZW1vdmluZyB0aGUgYHJlamVjdGVkYCBmaWVsZCBmcm9tIGBzdHJ1Y3QgdnNvY2tfc29ja2AgZW50aXJlbHksIHdoaWNoIGFsc28gcmVtb3ZlcyB0aGUgaW5pdGlhbGl6YXRpb24gYHZzay0mZ3Q7cmVqZWN0ZWQgPSBmYWxzZTtgIGluIGBfX3Zzb2NrX2NyZWF0ZWAuICBgdnNvY2tfYWNjZXB0YCBpcyBub3cgZ29pbmcgdG8gY2FsbCBgdnNvY2tfcmVtb3ZlX2Nvbm5lY3RlZGAsIHNldCBgc2tfc3RhdGUgPSBUQ1BfQ0xPU0VgLCBhbmQgYHNvY2tfcHV0YCBkaXJlY3RseSBvbiB0aGUgcmVqZWN0ZWQgc29ja2V0LiAgYHZzb2NrX3BlbmRpbmdfd29ya2AgaXMgbm8gbG9uZ2VyIGNoZWNraW5nIGAhdnNrLSZndDtyZWplY3RlZGAuCgpGcm9tIHdoYXQgSSBjYW4gc2VlLCB0aGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2UgaW4gc29ja2V0IGxpZmVjeWNsZSBhbmQgcmVmZXJlbmNlIGNvdW50aW5nLiBJdOKAmXMgZW50aXJlbHkgYWJvdXQgc3RhdGUgdHJhbnNpdGlvbnMsIG5vdCBkYXRhIHN0cnVjdHVyZSBjaGFuZ2VzIG9yIHVuaW5pdGlhbGl6ZWQgZGF0YS4gQ3JpdGljYWxseSwgbm90aGluZyBuZXcgaXMgYmVpbmcgcGFzc2VkIHVwIHRvIHVzZXIgc3BhY2UgaGVyZS4KCkkmIzM5O20gY29uZmlkZW50IHdlIGRvbiYjMzk7dCBoYXZlIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlIGhlcmUsIHNvIEtNU0FOIGlzbiYjMzk7dCBuZWVkZWQuIFRoaXMgaXMgcHVyZWx5IGEgbGlmZWN5Y2xlIGFuZCBzdGF0ZSBtYWNoaW5lIGNoYW5nZS4gQW55IGlzc3VlcyBpbnRyb2R1Y2VkIGhlcmUgYXJlIG1vcmUgbGlrZWx5IHRvIG1hbmlmZXN0IGFzIGxlYWtzLCB1c2UtYWZ0ZXItZnJlZSAoVUFGKSwgb3IgZG91YmxlLWZyZWUsIHdoaWNoIEtBU0FOIGFuZCBLTUVNTEVBSyBzaG91bGQgcmVhZGlseSBjYXRjaC4gVGhlcmVmb3JlLCBOZWVkc0tNU0FOID0gZmFsc2UuCgpUbyBzdW1tYXJpemUsIHRoaXMgcGF0Y2ggb3B0aW1pemVzIHRoZSBoYW5kbGluZyBvZiByZWplY3RlZCBzb2NrZXRzIGR1cmluZyB0aGUgYGFjY2VwdCgpYCBwcm9jZXNzLiBCeSByZW1vdmluZyB0aGUgYHJlamVjdGVkYCBmbGFnIGFuZCBtb3ZpbmcgY2xlYW51cCB0byBgdnNvY2tfYWNjZXB0KClgLCB0aGUgcGF0Y2ggZml4ZXMgYW4gaXNzdWUgd2hlcmUgcmVqZWN0ZWQgc29ja2V0cyBtaWdodCBub3QgYmUgY2xlYW5lZCB1cCBwcm9wZXJseS4gSXQmIzM5O3MgYSBsaWZlY3ljbGUvcmVmZXJlbmNlLWNvdW50aW5nIGNoYW5nZSwgc28gdGhlIG1ham9yIGJ1Z3Mgb2YgY29uY2VybiBhcmUgbWVtb3J5IGxlYWtzLCBVQUYsIG9yIGRvdWJsZS1mcmVlLiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgYmVjYXVzZSB0aGlzIHBhdGNoIGRvZXMgbm90IGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTU6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxpZmVjeWNsZSBvZiB2c29jayBzb2NrZXRzIGR1cmluZyB0aGUgYGFjY2VwdCgpYCBwcm9jZXNzLiBTcGVjaWZpY2FsbHksIGl0IHJlbW92ZXMgdGhlIGByZWplY3RlZGAgZmxhZyBmcm9tIGBzdHJ1Y3QgdnNvY2tfc29ja2AgYW5kIGNoYW5nZXMgYHZzb2NrX2FjY2VwdCgpYCB0byBpbW1lZGlhdGVseSBjbGVhbiB1cCBhbmQgZHJvcCByZWZlcmVuY2VzIHRvIGEgcmVqZWN0ZWQgY2hpbGQgc29ja2V0LCByYXRoZXIgdGhhbiBkZWZlcnJpbmcgdGhlIGNsZWFudXAgdG8gYHZzb2NrX3BlbmRpbmdfd29yaygpYC4gVGhpcyBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgb3IgbGlmZWN5Y2xlIGlzc3VlIHdoZXJlIHJlamVjdGVkIHNvY2tldHMgbWlnaHQgbm90IGJlIGNsZWFuZWQgdXAgYnkgdGhlIHBlbmRpbmcgd29ya2VyLlxuXG5UaGVzZSBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIG9iamVjdCBsaWZlY3ljbGUsIHJlZmVyZW5jZSBjb3VudGluZywgYW5kIHN0YXRlIG1hbmFnZW1lbnQuIEFueSBidWdzIGludHJvZHVjZWQgb3IgZml4ZWQgYnkgdGhpcyBwYXRjaCB3b3VsZCBtYW5pZmVzdCBhcyBtZW1vcnkgbGVha3MsIHVzZS1hZnRlci1mcmVlIChVQUYpLCBvciBkb3VibGUtZnJlZSB2dWxuZXJhYmlsaXRpZXMuIFN1Y2ggaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiAoZm9yIFVBRi9kb3VibGUtZnJlZSkgYW5kIEtNRU1MRUFLIChmb3IgbWVtb3J5IGxlYWtzKS5cblxuVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBkb2VzIG5vdCBleHBvc2UgYW55IGtlcm5lbCBtZW1vcnkgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGludm9sdmUgY29tcGxleCBpbml0aWFsaXphdGlvbnMgd2hlcmUgdW5pbml0aWFsaXplZCBtZW1vcnkgY291bGQgYmUgcmVhZCBvciBsZWFrZWQuIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uIFN0YW5kYXJkIEtBU0FOIGZ1enppbmcgaXMgc3VmZmljaWVudC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsaWZlY3ljbGUgb2YgdnNvY2sgc29ja2V0cyBkdXJpbmcgdGhlIGBhY2NlcHQoKWAgcHJvY2Vzcy4gU3BlY2lmaWNhbGx5LCBpdCByZW1vdmVzIHRoZSBgcmVqZWN0ZWRgIGZsYWcgZnJvbSBgc3RydWN0IHZzb2NrX3NvY2tgIGFuZCBjaGFuZ2VzIGB2c29ja19hY2NlcHQoKWAgdG8gaW1tZWRpYXRlbHkgY2xlYW4gdXAgYW5kIGRyb3AgcmVmZXJlbmNlcyB0byBhIHJlamVjdGVkIGNoaWxkIHNvY2tldCwgcmF0aGVyIHRoYW4gZGVmZXJyaW5nIHRoZSBjbGVhbnVwIHRvIGB2c29ja19wZW5kaW5nX3dvcmsoKWAuIFRoaXMgYWRkcmVzc2VzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIGxpZmVjeWNsZSBpc3N1ZSB3aGVyZSByZWplY3RlZCBzb2NrZXRzIG1pZ2h0IG5vdCBiZSBjbGVhbmVkIHVwIGJ5IHRoZSBwZW5kaW5nIHdvcmtlci5cblxuVGhlc2UgY2hhbmdlcyBhcmUgcmVsYXRlZCB0byBvYmplY3QgbGlmZWN5Y2xlLCByZWZlcmVuY2UgY291bnRpbmcsIGFuZCBzdGF0ZSBtYW5hZ2VtZW50LiBBbnkgYnVncyBpbnRyb2R1Y2VkIG9yIGZpeGVkIGJ5IHRoaXMgcGF0Y2ggd291bGQgbWFuaWZlc3QgYXMgbWVtb3J5IGxlYWtzLCB1c2UtYWZ0ZXItZnJlZSAoVUFGKSwgb3IgZG91YmxlLWZyZWUgdnVsbmVyYWJpbGl0aWVzLiBTdWNoIGlzc3VlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4gKGZvciBVQUYvZG91YmxlLWZyZWUpIGFuZCBLTUVNTEVBSyAoZm9yIG1lbW9yeSBsZWFrcykuXG5cblRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGRhdGEgc3RydWN0dXJlcywgZG9lcyBub3QgZXhwb3NlIGFueSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBpbnZvbHZlIGNvbXBsZXggaW5pdGlhbGl6YXRpb25zIHdoZXJlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGNvdWxkIGJlIHJlYWQgb3IgbGVha2VkLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjIwOjM3LjYxODc2NjE5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYyNDgyMjUxMjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVlNPQ0tFVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2c29ja19hY2NlcHRcIixcbiAgICBcInZzb2NrX3BlbmRpbmdfd29ya1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxpZmVjeWNsZSBvZiB2c29jayBzb2NrZXRzIGR1cmluZyB0aGUgYGFjY2VwdCgpYCBwcm9jZXNzLiBTcGVjaWZpY2FsbHksIGl0IHJlbW92ZXMgdGhlIGByZWplY3RlZGAgZmxhZyBmcm9tIGBzdHJ1Y3QgdnNvY2tfc29ja2AgYW5kIGNoYW5nZXMgYHZzb2NrX2FjY2VwdCgpYCB0byBpbW1lZGlhdGVseSBjbGVhbiB1cCBhbmQgZHJvcCByZWZlcmVuY2VzIHRvIGEgcmVqZWN0ZWQgY2hpbGQgc29ja2V0LCByYXRoZXIgdGhhbiBkZWZlcnJpbmcgdGhlIGNsZWFudXAgdG8gYHZzb2NrX3BlbmRpbmdfd29yaygpYC4gVGhpcyBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgb3IgbGlmZWN5Y2xlIGlzc3VlIHdoZXJlIHJlamVjdGVkIHNvY2tldHMgbWlnaHQgbm90IGJlIGNsZWFuZWQgdXAgYnkgdGhlIHBlbmRpbmcgd29ya2VyLlxcblxcblRoZXNlIGNoYW5nZXMgYXJlIHJlbGF0ZWQgdG8gb2JqZWN0IGxpZmVjeWNsZSwgcmVmZXJlbmNlIGNvdW50aW5nLCBhbmQgc3RhdGUgbWFuYWdlbWVudC4gQW55IGJ1Z3MgaW50cm9kdWNlZCBvciBmaXhlZCBieSB0aGlzIHBhdGNoIHdvdWxkIG1hbmlmZXN0IGFzIG1lbW9yeSBsZWFrcywgdXNlLWFmdGVyLWZyZWUgKFVBRiksIG9yIGRvdWJsZS1mcmVlIHZ1bG5lcmFiaWxpdGllcy4gU3VjaCBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIChmb3IgVUFGL2RvdWJsZS1mcmVlKSBhbmQgS01FTUxFQUsgKGZvciBtZW1vcnkgbGVha3MpLlxcblxcblRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGRhdGEgc3RydWN0dXJlcywgZG9lcyBub3QgZXhwb3NlIGFueSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBpbnZvbHZlIGNvbXBsZXggaW5pdGlhbGl6YXRpb25zIHdoZXJlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGNvdWxkIGJlIHJlYWQgb3IgbGVha2VkLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgdnNvY2sgbG9naWMgZm9yIGhhbmRsaW5nIHJlamVjdGVkIGNvbm5lY3Rpb25zIGluIGB2c29ja19hY2NlcHRgIGFuZCBgdnNvY2tfcGVuZGluZ193b3JrYC4gSXQgZml4ZXMgYSBsZWFrIG9mIHJlamVjdGVkIGNoaWxkIHNvY2tldHMgYnkgY2xlYW5pbmcgdGhlbSB1cCBkaXJlY3RseSBpbiBgdnNvY2tfYWNjZXB0YCBpbnN0ZWFkIG9mIGRlZmVycmluZyB0byBgdnNvY2tfcGVuZGluZ193b3JrYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjIwOjM3LjYxODc3MjE5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjQ4MzQ2OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3ZDhiOTg0OTg3Y2ViMDExMjI0MTJjYjYzMDYyMjU4M2ViZmI5YTc2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDcgMTU6MjA6MzYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvYWZfdnNvY2suaCBiL2luY2x1ZGUvbmV0L2FmX3Zzb2NrLmhcXG5pbmRleCAzMDA0NmEzYzIwZjczLi5iNzBjZWE3Zjc1NGY1IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L2FmX3Zzb2NrLmhcXG4rKysgYi9pbmNsdWRlL25ldC9hZl92c29jay5oXFxuQEAgLTUzLDEyICs1MywxMCBAQCBzdHJ1Y3QgdnNvY2tfc29jayB7XFxuIFxcdCAqIGZvciBjb25uZWN0aW9uIHJlcXVlc3RzIGFyZSBwbGFjZWQgaW4gdGhlIHBlbmRpbmcgbGlzdCB1bnRpbCB0aGV5XFxuIFxcdCAqIGFyZSBjb25uZWN0ZWQsIGF0IHdoaWNoIHBvaW50IHRoZXkgYXJlIHB1dCBpbiB0aGUgYWNjZXB0IHF1ZXVlIGxpc3RcXG4gXFx0ICogc28gdGhleSBjYW4gYmUgYWNjZXB0ZWQgaW4gYWNjZXB0KCkuICBJZiBhY2NlcHQoKSBjYW5ub3QgYWNjZXB0IHRoZVxcbi1cXHQgKiBjb25uZWN0aW9uLCBpdCBpcyBtYXJrZWQgYXMgcmVqZWN0ZWQgc28gdGhlIGNsZWFudXAgZnVuY3Rpb24ga25vd3NcXG4tXFx0ICogdG8gY2xlYW4gdXAgdGhlIHNvY2tldC5cXG4rXFx0ICogY29ubmVjdGlvbiwgdGhlIGNoaWxkIGlzIGNsZWFuZWQgdXAgZGlyZWN0bHkgaW4gdnNvY2tfYWNjZXB0KCkuXFxuIFxcdCAqL1xcbiBcXHRzdHJ1Y3QgbGlzdF9oZWFkIHBlbmRpbmdfbGlua3M7XFxuIFxcdHN0cnVjdCBsaXN0X2hlYWQgYWNjZXB0X3F1ZXVlO1xcbi1cXHRib29sIHJlamVjdGVkO1xcbiBcXHRzdHJ1Y3QgZGVsYXllZF93b3JrIGNvbm5lY3Rfd29yaztcXG4gXFx0c3RydWN0IGRlbGF5ZWRfd29yayBwZW5kaW5nX3dvcms7XFxuIFxcdHN0cnVjdCBkZWxheWVkX3dvcmsgY2xvc2Vfd29yaztcXG5kaWZmIC0tZ2l0IGEvbmV0L3Ztd192c29jay9hZl92c29jay5jIGIvbmV0L3Ztd192c29jay9hZl92c29jay5jXFxuaW5kZXggNjIyZGJkMDQ2Nzk5NC4uMjA4NGM4OGFjODM2ZiAxMDA2NDRcXG4tLS0gYS9uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmNcXG4rKysgYi9uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmNcXG5AQCAtMzksOSArMzksOSBAQFxcbiAgKiBmcm9tIHRoZSBsaXN0ZW5lciBzb2NrZXQncyBwZW5kaW5nIGxpc3QgYW5kIGVucXVldWVkIGluIHRoZSBsaXN0ZW5lclxcbiAgKiBzb2NrZXQncyBhY2NlcHQgcXVldWUuICBDYWxsZXJzIG9mIGFjY2VwdCgyKSB3aWxsIGFjY2VwdCBjb25uZWN0ZWQgc29ja2V0c1xcbiAgKiBmcm9tIHRoZSBsaXN0ZW5lciBzb2NrZXQncyBhY2NlcHQgcXVldWUuICBJZiB0aGUgc29ja2V0IGNhbm5vdCBiZSBhY2NlcHRlZFxcbi0gKiBmb3Igc29tZSByZWFzb24gdGhlbiBpdCBpcyBtYXJrZWQgcmVqZWN0ZWQuICBPbmNlIHRoZSBjb25uZWN0aW9uIGlzXFxuLSAqIGFjY2VwdGVkLCBpdCBpcyBvd25lZCBieSB0aGUgdXNlciBwcm9jZXNzIGFuZCB0aGUgcmVzcG9uc2liaWxpdHkgZm9yIGNsZWFudXBcXG4tICogZmFsbHMgd2l0aCB0aGF0IHVzZXIgcHJvY2Vzcy5cXG4rICogZm9yIHNvbWUgcmVhc29uIHRoZW4gaXQgaXMgY2xlYW5lZCB1cCBkaXJlY3RseSBpbiB2c29ja19hY2NlcHQoKS4gIE9uY2UgdGhlXFxuKyAqIGNvbm5lY3Rpb24gaXMgYWNjZXB0ZWQsIGl0IGlzIG93bmVkIGJ5IHRoZSB1c2VyIHByb2Nlc3MgYW5kIHRoZVxcbisgKiByZXNwb25zaWJpbGl0eSBmb3IgY2xlYW51cCBmYWxscyB3aXRoIHRoYXQgdXNlciBwcm9jZXNzLlxcbiAgKlxcbiAgKiAtIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlc2UgcGVuZGluZyBzb2NrZXRzIHdpbGwgbmV2ZXIgcmVhY2ggdGhlIGNvbm5lY3RlZFxcbiAgKiBzdGF0ZTsgaW4gZmFjdCwgd2UgbWF5IG5ldmVyIHJlY2VpdmUgYW5vdGhlciBwYWNrZXQgYWZ0ZXIgdGhlIGNvbm5lY3Rpb25cXG5AQCAtNDksOSArNDksNyBAQFxcbiAgKiBmdXR1cmUsIGFmdGVyIHNvbWUgYW1vdW50IG9mIHRpbWUgcGFzc2VzIHdoZXJlIGEgY29ubmVjdGlvbiBzaG91bGQgaGF2ZSBiZWVuXFxuICAqIGVzdGFibGlzaGVkLiAgVGhpcyBmdW5jdGlvbiBlbnN1cmVzIHRoYXQgdGhlIHNvY2tldCBpcyBvZmYgYWxsIGxpc3RzIHNvIGl0XFxuICAqIGNhbm5vdCBiZSByZXRyaWV2ZWQsIHRoZW4gZHJvcHMgYWxsIHJlZmVyZW5jZXMgdG8gdGhlIHNvY2tldCBzbyBpdCBpcyBjbGVhbmVkXFxuLSAqIHVwIChzb2NrX3B1dCgpIC1cXHUwMDNlIHNrX2ZyZWUoKSAtXFx1MDAzZSBvdXIgc2tfZGVzdHJ1Y3QgaW1wbGVtZW50YXRpb24pLiAgTm90ZSB0aGlzXFxuLSAqIGZ1bmN0aW9uIHdpbGwgYWxzbyBjbGVhbnVwIHJlamVjdGVkIHNvY2tldHMsIHRob3NlIHRoYXQgcmVhY2ggdGhlIGNvbm5lY3RlZFxcbi0gKiBzdGF0ZSBidXQgbGVhdmUgaXQgYmVmb3JlIHRoZXkgaGF2ZSBiZWVuIGFjY2VwdGVkLlxcbisgKiB1cCAoc29ja19wdXQoKSAtXFx1MDAzZSBza19mcmVlKCkgLVxcdTAwM2Ugb3VyIHNrX2Rlc3RydWN0IGltcGxlbWVudGF0aW9uKS5cXG4gICpcXG4gICogLSBMb2NrIG9yZGVyaW5nIGZvciBwZW5kaW5nIG9yIGFjY2VwdCBxdWV1ZSBzb2NrZXRzIGlzOlxcbiAgKlxcbkBAIC03NzQsMTEgKzc3MiwxMSBAQCBzdGF0aWMgdm9pZCB2c29ja19wZW5kaW5nX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbiBcXG4gXFx0aWYgKHZzb2NrX2lzX3BlbmRpbmcoc2spKSB7XFxuIFxcdFxcdHZzb2NrX3JlbW92ZV9wZW5kaW5nKGxpc3RlbmVyLCBzayk7XFxuLVxcdH0gZWxzZSBpZiAoIXZzay1cXHUwMDNlcmVqZWN0ZWQpIHtcXG4tXFx0XFx0LyogV2UgYXJlIG5vdCBvbiB0aGUgcGVuZGluZyBsaXN0IGFuZCBhY2NlcHQoKSBkaWQgbm90IHJlamVjdFxcbi1cXHRcXHQgKiB1cywgc28gd2UgbXVzdCBoYXZlIGJlZW4gYWNjZXB0ZWQgYnkgb3VyIHVzZXIgcHJvY2Vzcy4gIFdlXFxuLVxcdFxcdCAqIGp1c3QgbmVlZCB0byBkcm9wIG91ciByZWZlcmVuY2VzIHRvIHRoZSBzb2NrZXRzIGFuZCBiZSBvblxcbi1cXHRcXHQgKiBvdXIgd2F5LlxcbitcXHR9IGVsc2Uge1xcbitcXHRcXHQvKiBXZSBhcmUgbm90IG9uIHRoZSBwZW5kaW5nIGxpc3QsIHNvIHdlIG11c3QgaGF2ZSBiZWVuIGFjY2VwdGVkXFxuK1xcdFxcdCAqIGJ5IG91ciB1c2VyIHByb2Nlc3MgKHJlamVjdGVkIHNvY2tldHMgYXJlIGNsZWFuZWQgdXAgZGlyZWN0bHlcXG4rXFx0XFx0ICogaW4gdnNvY2tfYWNjZXB0KCkpLiAgV2UganVzdCBuZWVkIHRvIGRyb3Agb3VyIHJlZmVyZW5jZXMgdG9cXG4rXFx0XFx0ICogdGhlIHNvY2tldHMgYW5kIGJlIG9uIG91ciB3YXkuXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRjbGVhbnVwID0gZmFsc2U7XFxuIFxcdFxcdGdvdG8gb3V0O1xcbkBAIC05NDIsNyArOTQwLDYgQEAgc3RhdGljIHN0cnVjdCBzb2NrICpfX3Zzb2NrX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsXFxuIFxcdHZzay1cXHUwMDNlbGlzdGVuZXIgPSBOVUxMO1xcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2dnNrLVxcdTAwM2VwZW5kaW5nX2xpbmtzKTtcXG4gXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNnZzay1cXHUwMDNlYWNjZXB0X3F1ZXVlKTtcXG4tXFx0dnNrLVxcdTAwM2VyZWplY3RlZCA9IGZhbHNlO1xcbiBcXHR2c2stXFx1MDAzZXNlbnRfcmVxdWVzdCA9IGZhbHNlO1xcbiBcXHR2c2stXFx1MDAzZWlnbm9yZV9jb25uZWN0aW5nX3JzdCA9IGZhbHNlO1xcbiBcXHRXUklURV9PTkNFKHZzay1cXHUwMDNlcGVlcl9zaHV0ZG93biwgMCk7XFxuQEAgLTE5MTksMTQgKzE5MTYsMTkgQEAgc3RhdGljIGludCB2c29ja19hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jayxcXG4gXFx0XFx0dmNvbm5lY3RlZCA9IHZzb2NrX3NrKGNvbm5lY3RlZCk7XFxuIFxcbiBcXHRcXHQvKiBJZiB0aGUgbGlzdGVuZXIgc29ja2V0IGhhcyByZWNlaXZlZCBhbiBlcnJvciwgdGhlbiB3ZSBzaG91bGRcXG4tXFx0XFx0ICogcmVqZWN0IHRoaXMgc29ja2V0IGFuZCByZXR1cm4uICBOb3RlIHRoYXQgd2Ugc2ltcGx5IG1hcmsgdGhlXFxuLVxcdFxcdCAqIHNvY2tldCByZWplY3RlZCwgZHJvcCBvdXIgcmVmZXJlbmNlLCBhbmQgbGV0IHRoZSBjbGVhbnVwXFxuLVxcdFxcdCAqIGZ1bmN0aW9uIGhhbmRsZSB0aGUgY2xlYW51cDsgdGhlIGZhY3QgdGhhdCB3ZSBmb3VuZCBpdCBpblxcbi1cXHRcXHQgKiB0aGUgbGlzdGVuZXIncyBhY2NlcHQgcXVldWUgZ3VhcmFudGVlcyB0aGF0IHRoZSBjbGVhbnVwXFxuLVxcdFxcdCAqIGZ1bmN0aW9uIGhhc24ndCBydW4geWV0LlxcbitcXHRcXHQgKiByZWplY3QgdGhpcyBzb2NrZXQgYW5kIHJldHVybi4gIFRoZSBjaGlsZCB3YXMgZm91bmQgb24gdGhlXFxuK1xcdFxcdCAqIGxpc3RlbmVyJ3MgYWNjZXB0IHF1ZXVlLCBzbyBpdCBzdGlsbCBob2xkcyB0aGUgcmVmZXJlbmNlc1xcbitcXHRcXHQgKiB0YWtlbiBieSBza19hbGxvYygpLCBfX3Zzb2NrX2luc2VydF9jb25uZWN0ZWQoKSBhbmRcXG4rXFx0XFx0ICogdnNvY2tfZW5xdWV1ZV9hY2NlcHQoKS4gIERyb3AgdGhlbSBoZXJlIHNvIHRoZSBzb2NrZXQgaXNcXG4rXFx0XFx0ICogZGVzdHJveWVkLiAgV2UgY2Fubm90IGRlZmVyIHRoaXMgdG8gdnNvY2tfcGVuZGluZ193b3JrKCk6XFxuK1xcdFxcdCAqIHJlamVjdGVkIGNoaWxkIHNvY2tldHMgY3JlYXRlZCB0aHJvdWdoIHZpcnRpb190cmFuc3BvcnQgYW5kXFxuK1xcdFxcdCAqIHZzb2NrX2xvb3BiYWNrIGFyZSBub3QgY2xlYW5lZCB1cCBieSB0aGF0IHdvcmtlciwgc28gdGhlXFxuK1xcdFxcdCAqIGNoaWxkIHdvdWxkIG90aGVyd2lzZSBsZWFrIHBlcm1hbmVudGx5LlxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0aWYgKGVycikge1xcbi1cXHRcXHRcXHR2Y29ubmVjdGVkLVxcdTAwM2VyZWplY3RlZCA9IHRydWU7XFxuK1xcdFxcdFxcdHZzb2NrX3JlbW92ZV9jb25uZWN0ZWQodmNvbm5lY3RlZCk7XFxuK1xcdFxcdFxcdGNvbm5lY3RlZC1cXHUwMDNlc2tfc3RhdGUgPSBUQ1BfQ0xPU0U7XFxuK1xcdFxcdFxcdHNvY2tfcHV0KGNvbm5lY3RlZCk7XFxuIFxcdFxcdH0gZWxzZSB7XFxuIFxcdFxcdFxcdG5ld3NvY2stXFx1MDAzZXN0YXRlID0gU1NfQ09OTkVDVEVEO1xcbiBcXHRcXHRcXHRzb2NrX2dyYWZ0KGNvbm5lY3RlZCwgbmV3c29jayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjIwOjM4LjE0NDU5NjI0NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM0MTUzNTgyMDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZTT0NLRVRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidnNvY2tfYWNjZXB0XCIsXG4gICAgXCJ2c29ja19wZW5kaW5nX3dvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSB2c29jayBsb2dpYyBmb3IgaGFuZGxpbmcgcmVqZWN0ZWQgY29ubmVjdGlvbnMgaW4gYHZzb2NrX2FjY2VwdGAgYW5kIGB2c29ja19wZW5kaW5nX3dvcmtgLiBJdCBmaXhlcyBhIGxlYWsgb2YgcmVqZWN0ZWQgY2hpbGQgc29ja2V0cyBieSBjbGVhbmluZyB0aGVtIHVwIGRpcmVjdGx5IGluIGB2c29ja19hY2NlcHRgIGluc3RlYWQgb2YgZGVmZXJyaW5nIHRvIGB2c29ja19wZW5kaW5nX3dvcmtgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgN2Q4Yjk4NDk4N2NlYjAxMTIyNDEyY2I2MzA2MjI1ODNlYmZiOWE3NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMTU6MjA6MzYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9hZl92c29jay5oIGIvaW5jbHVkZS9uZXQvYWZfdnNvY2suaFxuaW5kZXggMzAwNDZhM2MyMGY3My4uYjcwY2VhN2Y3NTRmNSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2FmX3Zzb2NrLmhcbisrKyBiL2luY2x1ZGUvbmV0L2FmX3Zzb2NrLmhcbkBAIC01MywxMiArNTMsMTAgQEAgc3RydWN0IHZzb2NrX3NvY2sge1xuIFx0ICogZm9yIGNvbm5lY3Rpb24gcmVxdWVzdHMgYXJlIHBsYWNlZCBpbiB0aGUgcGVuZGluZyBsaXN0IHVudGlsIHRoZXlcbiBcdCAqIGFyZSBjb25uZWN0ZWQsIGF0IHdoaWNoIHBvaW50IHRoZXkgYXJlIHB1dCBpbiB0aGUgYWNjZXB0IHF1ZXVlIGxpc3RcbiBcdCAqIHNvIHRoZXkgY2FuIGJlIGFjY2VwdGVkIGluIGFjY2VwdCgpLiAgSWYgYWNjZXB0KCkgY2Fubm90IGFjY2VwdCB0aGVcbi1cdCAqIGNvbm5lY3Rpb24sIGl0IGlzIG1hcmtlZCBhcyByZWplY3RlZCBzbyB0aGUgY2xlYW51cCBmdW5jdGlvbiBrbm93c1xuLVx0ICogdG8gY2xlYW4gdXAgdGhlIHNvY2tldC5cbitcdCAqIGNvbm5lY3Rpb24sIHRoZSBjaGlsZCBpcyBjbGVhbmVkIHVwIGRpcmVjdGx5IGluIHZzb2NrX2FjY2VwdCgpLlxuIFx0ICovXG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIHBlbmRpbmdfbGlua3M7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIGFjY2VwdF9xdWV1ZTtcbi1cdGJvb2wgcmVqZWN0ZWQ7XG4gXHRzdHJ1Y3QgZGVsYXllZF93b3JrIGNvbm5lY3Rfd29yaztcbiBcdHN0cnVjdCBkZWxheWVkX3dvcmsgcGVuZGluZ193b3JrO1xuIFx0c3RydWN0IGRlbGF5ZWRfd29yayBjbG9zZV93b3JrO1xuZGlmZiAtLWdpdCBhL25ldC92bXdfdnNvY2svYWZfdnNvY2suYyBiL25ldC92bXdfdnNvY2svYWZfdnNvY2suY1xuaW5kZXggNjIyZGJkMDQ2Nzk5NC4uMjA4NGM4OGFjODM2ZiAxMDA2NDRcbi0tLSBhL25ldC92bXdfdnNvY2svYWZfdnNvY2suY1xuKysrIGIvbmV0L3Ztd192c29jay9hZl92c29jay5jXG5AQCAtMzksOSArMzksOSBAQFxuICAqIGZyb20gdGhlIGxpc3RlbmVyIHNvY2tldCdzIHBlbmRpbmcgbGlzdCBhbmQgZW5xdWV1ZWQgaW4gdGhlIGxpc3RlbmVyXG4gICogc29ja2V0J3MgYWNjZXB0IHF1ZXVlLiAgQ2FsbGVycyBvZiBhY2NlcHQoMikgd2lsbCBhY2NlcHQgY29ubmVjdGVkIHNvY2tldHNcbiAgKiBmcm9tIHRoZSBsaXN0ZW5lciBzb2NrZXQncyBhY2NlcHQgcXVldWUuICBJZiB0aGUgc29ja2V0IGNhbm5vdCBiZSBhY2NlcHRlZFxuLSAqIGZvciBzb21lIHJlYXNvbiB0aGVuIGl0IGlzIG1hcmtlZCByZWplY3RlZC4gIE9uY2UgdGhlIGNvbm5lY3Rpb24gaXNcbi0gKiBhY2NlcHRlZCwgaXQgaXMgb3duZWQgYnkgdGhlIHVzZXIgcHJvY2VzcyBhbmQgdGhlIHJlc3BvbnNpYmlsaXR5IGZvciBjbGVhbnVwXG4tICogZmFsbHMgd2l0aCB0aGF0IHVzZXIgcHJvY2Vzcy5cbisgKiBmb3Igc29tZSByZWFzb24gdGhlbiBpdCBpcyBjbGVhbmVkIHVwIGRpcmVjdGx5IGluIHZzb2NrX2FjY2VwdCgpLiAgT25jZSB0aGVcbisgKiBjb25uZWN0aW9uIGlzIGFjY2VwdGVkLCBpdCBpcyBvd25lZCBieSB0aGUgdXNlciBwcm9jZXNzIGFuZCB0aGVcbisgKiByZXNwb25zaWJpbGl0eSBmb3IgY2xlYW51cCBmYWxscyB3aXRoIHRoYXQgdXNlciBwcm9jZXNzLlxuICAqXG4gICogLSBJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZXNlIHBlbmRpbmcgc29ja2V0cyB3aWxsIG5ldmVyIHJlYWNoIHRoZSBjb25uZWN0ZWRcbiAgKiBzdGF0ZTsgaW4gZmFjdCwgd2UgbWF5IG5ldmVyIHJlY2VpdmUgYW5vdGhlciBwYWNrZXQgYWZ0ZXIgdGhlIGNvbm5lY3Rpb25cbkBAIC00OSw5ICs0OSw3IEBAXG4gICogZnV0dXJlLCBhZnRlciBzb21lIGFtb3VudCBvZiB0aW1lIHBhc3NlcyB3aGVyZSBhIGNvbm5lY3Rpb24gc2hvdWxkIGhhdmUgYmVlblxuICAqIGVzdGFibGlzaGVkLiAgVGhpcyBmdW5jdGlvbiBlbnN1cmVzIHRoYXQgdGhlIHNvY2tldCBpcyBvZmYgYWxsIGxpc3RzIHNvIGl0XG4gICogY2Fubm90IGJlIHJldHJpZXZlZCwgdGhlbiBkcm9wcyBhbGwgcmVmZXJlbmNlcyB0byB0aGUgc29ja2V0IHNvIGl0IGlzIGNsZWFuZWRcbi0gKiB1cCAoc29ja19wdXQoKSAtXHUwMDNlIHNrX2ZyZWUoKSAtXHUwMDNlIG91ciBza19kZXN0cnVjdCBpbXBsZW1lbnRhdGlvbikuICBOb3RlIHRoaXNcbi0gKiBmdW5jdGlvbiB3aWxsIGFsc28gY2xlYW51cCByZWplY3RlZCBzb2NrZXRzLCB0aG9zZSB0aGF0IHJlYWNoIHRoZSBjb25uZWN0ZWRcbi0gKiBzdGF0ZSBidXQgbGVhdmUgaXQgYmVmb3JlIHRoZXkgaGF2ZSBiZWVuIGFjY2VwdGVkLlxuKyAqIHVwIChzb2NrX3B1dCgpIC1cdTAwM2Ugc2tfZnJlZSgpIC1cdTAwM2Ugb3VyIHNrX2Rlc3RydWN0IGltcGxlbWVudGF0aW9uKS5cbiAgKlxuICAqIC0gTG9jayBvcmRlcmluZyBmb3IgcGVuZGluZyBvciBhY2NlcHQgcXVldWUgc29ja2V0cyBpczpcbiAgKlxuQEAgLTc3NCwxMSArNzcyLDExIEBAIHN0YXRpYyB2b2lkIHZzb2NrX3BlbmRpbmdfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXG4gXHRpZiAodnNvY2tfaXNfcGVuZGluZyhzaykpIHtcbiBcdFx0dnNvY2tfcmVtb3ZlX3BlbmRpbmcobGlzdGVuZXIsIHNrKTtcbi1cdH0gZWxzZSBpZiAoIXZzay1cdTAwM2VyZWplY3RlZCkge1xuLVx0XHQvKiBXZSBhcmUgbm90IG9uIHRoZSBwZW5kaW5nIGxpc3QgYW5kIGFjY2VwdCgpIGRpZCBub3QgcmVqZWN0XG4tXHRcdCAqIHVzLCBzbyB3ZSBtdXN0IGhhdmUgYmVlbiBhY2NlcHRlZCBieSBvdXIgdXNlciBwcm9jZXNzLiAgV2Vcbi1cdFx0ICoganVzdCBuZWVkIHRvIGRyb3Agb3VyIHJlZmVyZW5jZXMgdG8gdGhlIHNvY2tldHMgYW5kIGJlIG9uXG4tXHRcdCAqIG91ciB3YXkuXG4rXHR9IGVsc2Uge1xuK1x0XHQvKiBXZSBhcmUgbm90IG9uIHRoZSBwZW5kaW5nIGxpc3QsIHNvIHdlIG11c3QgaGF2ZSBiZWVuIGFjY2VwdGVkXG4rXHRcdCAqIGJ5IG91ciB1c2VyIHByb2Nlc3MgKHJlamVjdGVkIHNvY2tldHMgYXJlIGNsZWFuZWQgdXAgZGlyZWN0bHlcbitcdFx0ICogaW4gdnNvY2tfYWNjZXB0KCkpLiAgV2UganVzdCBuZWVkIHRvIGRyb3Agb3VyIHJlZmVyZW5jZXMgdG9cbitcdFx0ICogdGhlIHNvY2tldHMgYW5kIGJlIG9uIG91ciB3YXkuXG4gXHRcdCAqL1xuIFx0XHRjbGVhbnVwID0gZmFsc2U7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTk0Miw3ICs5NDAsNiBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKl9fdnNvY2tfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCxcbiBcdHZzay1cdTAwM2VsaXN0ZW5lciA9IE5VTEw7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZ2c2stXHUwMDNlcGVuZGluZ19saW5rcyk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZ2c2stXHUwMDNlYWNjZXB0X3F1ZXVlKTtcbi1cdHZzay1cdTAwM2VyZWplY3RlZCA9IGZhbHNlO1xuIFx0dnNrLVx1MDAzZXNlbnRfcmVxdWVzdCA9IGZhbHNlO1xuIFx0dnNrLVx1MDAzZWlnbm9yZV9jb25uZWN0aW5nX3JzdCA9IGZhbHNlO1xuIFx0V1JJVEVfT05DRSh2c2stXHUwMDNlcGVlcl9zaHV0ZG93biwgMCk7XG5AQCAtMTkxOSwxNCArMTkxNiwxOSBAQCBzdGF0aWMgaW50IHZzb2NrX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLFxuIFx0XHR2Y29ubmVjdGVkID0gdnNvY2tfc2soY29ubmVjdGVkKTtcbiBcbiBcdFx0LyogSWYgdGhlIGxpc3RlbmVyIHNvY2tldCBoYXMgcmVjZWl2ZWQgYW4gZXJyb3IsIHRoZW4gd2Ugc2hvdWxkXG4tXHRcdCAqIHJlamVjdCB0aGlzIHNvY2tldCBhbmQgcmV0dXJuLiAgTm90ZSB0aGF0IHdlIHNpbXBseSBtYXJrIHRoZVxuLVx0XHQgKiBzb2NrZXQgcmVqZWN0ZWQsIGRyb3Agb3VyIHJlZmVyZW5jZSwgYW5kIGxldCB0aGUgY2xlYW51cFxuLVx0XHQgKiBmdW5jdGlvbiBoYW5kbGUgdGhlIGNsZWFudXA7IHRoZSBmYWN0IHRoYXQgd2UgZm91bmQgaXQgaW5cbi1cdFx0ICogdGhlIGxpc3RlbmVyJ3MgYWNjZXB0IHF1ZXVlIGd1YXJhbnRlZXMgdGhhdCB0aGUgY2xlYW51cFxuLVx0XHQgKiBmdW5jdGlvbiBoYXNuJ3QgcnVuIHlldC5cbitcdFx0ICogcmVqZWN0IHRoaXMgc29ja2V0IGFuZCByZXR1cm4uICBUaGUgY2hpbGQgd2FzIGZvdW5kIG9uIHRoZVxuK1x0XHQgKiBsaXN0ZW5lcidzIGFjY2VwdCBxdWV1ZSwgc28gaXQgc3RpbGwgaG9sZHMgdGhlIHJlZmVyZW5jZXNcbitcdFx0ICogdGFrZW4gYnkgc2tfYWxsb2MoKSwgX192c29ja19pbnNlcnRfY29ubmVjdGVkKCkgYW5kXG4rXHRcdCAqIHZzb2NrX2VucXVldWVfYWNjZXB0KCkuICBEcm9wIHRoZW0gaGVyZSBzbyB0aGUgc29ja2V0IGlzXG4rXHRcdCAqIGRlc3Ryb3llZC4gIFdlIGNhbm5vdCBkZWZlciB0aGlzIHRvIHZzb2NrX3BlbmRpbmdfd29yaygpOlxuK1x0XHQgKiByZWplY3RlZCBjaGlsZCBzb2NrZXRzIGNyZWF0ZWQgdGhyb3VnaCB2aXJ0aW9fdHJhbnNwb3J0IGFuZFxuK1x0XHQgKiB2c29ja19sb29wYmFjayBhcmUgbm90IGNsZWFuZWQgdXAgYnkgdGhhdCB3b3JrZXIsIHNvIHRoZVxuK1x0XHQgKiBjaGlsZCB3b3VsZCBvdGhlcndpc2UgbGVhayBwZXJtYW5lbnRseS5cbiBcdFx0ICovXG4gXHRcdGlmIChlcnIpIHtcbi1cdFx0XHR2Y29ubmVjdGVkLVx1MDAzZXJlamVjdGVkID0gdHJ1ZTtcbitcdFx0XHR2c29ja19yZW1vdmVfY29ubmVjdGVkKHZjb25uZWN0ZWQpO1xuK1x0XHRcdGNvbm5lY3RlZC1cdTAwM2Vza19zdGF0ZSA9IFRDUF9DTE9TRTtcbitcdFx0XHRzb2NrX3B1dChjb25uZWN0ZWQpO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdG5ld3NvY2stXHUwMDNlc3RhdGUgPSBTU19DT05ORUNURUQ7XG4gXHRcdFx0c29ja19ncmFmdChjb25uZWN0ZWQsIG5ld3NvY2spO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTU6MjA6MzguMTQ0NTk5NjI1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjE2MDA5NzQ5NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSB2c29jayBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIGJlZW4gcHJvcG9zZWQgZm9yIHRoZSB2c29jayBpbXBsZW1lbnRhdGlvbiwgc3BlY2lmaWNhbGx5IGluIGBuZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmNgIGFuZCBgaW5jbHVkZS9uZXQvYWZfdnNvY2suaGAuIE15IGltbWVkaWF0ZSB0YWtlYXdheSBpcyB0aGF0IHRoZXkncmUgc3RyZWFtbGluaW5nIHRoZSBzb2NrZXQgcmVqZWN0aW9uIHByb2Nlc3MuIFRoZSBwYXRjaCBlbGltaW5hdGVzIHRoZSBgcmVqZWN0ZWRgIGZpZWxkIHdpdGhpbiBgc3RydWN0IHZzb2NrX3NvY2tgLiBFc3NlbnRpYWxseSwgcmF0aGVyIHRoYW4gbWFya2luZyBhIHNvY2tldCBhbmQgZGVmZXJyaW5nIHRoZSBjbGVhbnVwLCBpdCBsb29rcyBsaWtlIHRoZXkncmUgaGFuZGxpbmcgdGhlIGNsZWFudXAgZGlyZWN0bHkgd2l0aGluIGB2c29ja19hY2NlcHQoKWAuXG5cbkxldCdzIGRpdmUgZGVlcGVyIGFuZCB2ZXJpZnkgdGhlIGNoYW5nZXMgaW4gYHZzb2NrX2FjY2VwdGAgd2l0aGluIGBuZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmNgLiBBaCwgeWVzLCBoZXJlIHdlIGdvLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCByZXBsYWNlcyB0aGUgc2V0dGluZyBvZiBgdmNvbm5lY3RlZC1cdTAwM2VyZWplY3RlZCA9IHRydWVgIHdpdGggYSBtb3JlIGRpcmVjdCBhcHByb2FjaC4gVGhleSdyZSBub3cgY2FsbGluZyBgdnNvY2tfcmVtb3ZlX2Nvbm5lY3RlZCh2Y29ubmVjdGVkKWAsIHNldHRpbmcgYGNvbm5lY3RlZC1cdTAwM2Vza19zdGF0ZSA9IFRDUF9DTE9TRWAsIGFuZCB0aGVuIGRvaW5nIGEgYHNvY2tfcHV0KGNvbm5lY3RlZClgLiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHRvIHRoZSBjb3JlIHZzb2NrIGhhbmRsaW5nLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIGZvciBvdGhlciBtb2R1bGVzIGFuZCBwb3NzaWJsZSBzaWRlLWVmZmVjdHMuXG5cbkJlZm9yZSBJIGdvIGFueSBkZWVwZXIsIEknbGwgbmVlZCB0byBjb25maXJtIHdoYXQgY29uZmlnIG9wdGlvbnMgYXJlIHJlbGF0ZWQgdG8gdGhpcy5cblxuQWxyaWdodCwgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb24gaXMsIG9idmlvdXNseSwgYENPTkZJR19WU09DS0VUU2AuIEknbGwgaGF2ZSBhIGxvb2sgYXQgYG5ldC92bXdfdnNvY2svS2NvbmZpZ2AgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIyOSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjIwOjU5Ljc0NTU3Nzk0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMTU4ODkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWU09DS0VUU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdm13X3Zzb2NrL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3Ztd192c29jay9LY29uZmlnLTUtXFxubmV0L3Ztd192c29jay9LY29uZmlnOjY6Y29uZmlnIFZTT0NLRVRTXFxubmV0L3Ztd192c29jay9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgU29ja2V0IHByb3RvY29sXFxcIlxcbi0tXFxubmV0L3Ztd192c29jay9LY29uZmlnLTE4LVxcbm5ldC92bXdfdnNvY2svS2NvbmZpZzoxOTpjb25maWcgVlNPQ0tFVFNfRElBR1xcbm5ldC92bXdfdnNvY2svS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBTb2NrZXRzIG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L3Ztd192c29jay9LY29uZmlnLTI4LVxcbm5ldC92bXdfdnNvY2svS2NvbmZpZzoyOTpjb25maWcgVlNPQ0tFVFNfTE9PUEJBQ0tcXG5uZXQvdm13X3Zzb2NrL0tjb25maWctMzAtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgU29ja2V0cyBsb29wYmFjayB0cmFuc3BvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjIwOjU5LjgxODc0MTY1M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NTkxOTA0OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGVzZSB0aG91Z2h0cywgdGFpbG9yZWQgYXMgaWYgSSwgYXMgYW4gZXhwZXJ0LCB3ZXJlIGhhdmluZyB0aGVtOlxuXG4qKlZTT0NLRVRTIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKipcblxuQWxyaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIGBWU09DS0VUU2AgaGVyZS4gVGhhdCBtZWFucyB3ZSdyZSBpbiB0aGUgcmVhbG0gb2YgdmlydHVhbCBzb2NrZXRzLCB3aGljaCBpcyBnb2luZyB0byBzaGFwZSBob3cgd2UgdGhpbmsgYWJvdXQgdGhpcy4gVGhlIGNyaXRpY2FsIGFzcGVjdCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIHRoYXQncyBhdCBwbGF5LlxuXG5Ob3csIEknbSB0aGlua2luZyBhYm91dCB3aGVyZSB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLiBNeSBpbml0aWFsIGluY2xpbmF0aW9uIGlzIHRvIGxvb2sgYXQgdGhlc2UgZm9jdXMgc3ltYm9sczogYHZzb2NrX2FjY2VwdGAgYW5kIGB2c29ja19wZW5kaW5nX3dvcmtgLiBUaGVzZSBmZWVsIGxpa2Ugc29saWQgZW50cnkgcG9pbnRzLCBwYXJ0aWN1bGFybHkgYHZzb2NrX2FjY2VwdGAuIEl0IHJlcHJlc2VudHMgdGhlIHByb2Nlc3Mgb2YgYSBjb25uZWN0aW9uLCBhbmQgdGhlIG90aGVyIHJlbGF0ZXMgdG8gd29yayB0aGF0IGlzIHdhaXRpbmcuIGB2c29ja19hY2NlcHRgIGxvb2tzIGxpa2UgYSBrZXkgc3RhcnRpbmcgcG9pbnQgdG8gY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMDAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNToyMTowMy41Nzc5MzYxODRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE2NjIyMDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZzb2NrX2FjY2VwdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3Ztd192c29jay9hZl92c29jay5jLTQxLSAqIGZyb20gdGhlIGxpc3RlbmVyIHNvY2tldCdzIGFjY2VwdCBxdWV1ZS4gIElmIHRoZSBzb2NrZXQgY2Fubm90IGJlIGFjY2VwdGVkXFxubmV0L3Ztd192c29jay9hZl92c29jay5jOjQyOiAqIGZvciBzb21lIHJlYXNvbiB0aGVuIGl0IGlzIGNsZWFuZWQgdXAgZGlyZWN0bHkgaW4gdnNvY2tfYWNjZXB0KCkuICBPbmNlIHRoZVxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYy00My0gKiBjb25uZWN0aW9uIGlzIGFjY2VwdGVkLCBpdCBpcyBvd25lZCBieSB0aGUgdXNlciBwcm9jZXNzIGFuZCB0aGVcXG4tLVxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYz03NTg9c3RhdGljIHZvaWQgdnNvY2tfcGVuZGluZ193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYy03NzctXFx0XFx0ICogYnkgb3VyIHVzZXIgcHJvY2VzcyAocmVqZWN0ZWQgc29ja2V0cyBhcmUgY2xlYW5lZCB1cCBkaXJlY3RseVxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYzo3Nzg6XFx0XFx0ICogaW4gdnNvY2tfYWNjZXB0KCkpLiAgV2UganVzdCBuZWVkIHRvIGRyb3Agb3VyIHJlZmVyZW5jZXMgdG9cXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtNzc5LVxcdFxcdCAqIHRoZSBzb2NrZXRzIGFuZCBiZSBvbiBvdXIgd2F5Llxcbi0tXFxubmV0L3Ztd192c29jay9hZl92c29jay5jPTE2NzQ9c3RhdGljIGludCB2c29ja19jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICphZGRyLFxcbi0tXFxubmV0L3Ztd192c29jay9hZl92c29jay5jLTE4NjEtXFxubmV0L3Ztd192c29jay9hZl92c29jay5jOjE4NjI6c3RhdGljIGludCB2c29ja19hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jayxcXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtMTg2My1cXHRcXHRcXHRzdHJ1Y3QgcHJvdG9fYWNjZXB0X2FyZyAqYXJnKVxcbi0tXFxubmV0L3Ztd192c29jay9hZl92c29jay5jPTI2NDY9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgdnNvY2tfc3RyZWFtX29wcyA9IHtcXG4tLVxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYy0yNjUyLVxcdC5zb2NrZXRwYWlyID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYzoyNjUzOlxcdC5hY2NlcHQgPSB2c29ja19hY2NlcHQsXFxubmV0L3Ztd192c29jay9hZl92c29jay5jLTI2NTQtXFx0LmdldG5hbWUgPSB2c29ja19nZXRuYW1lLFxcbi0tXFxubmV0L3Ztd192c29jay9hZl92c29jay5jPTI2Njg9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgdnNvY2tfc2VxcGFja2V0X29wcyA9IHtcXG4tLVxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYy0yNjc0LVxcdC5zb2NrZXRwYWlyID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYzoyNjc1OlxcdC5hY2NlcHQgPSB2c29ja19hY2NlcHQsXFxubmV0L3Ztd192c29jay9hZl92c29jay5jLTI2NzYtXFx0LmdldG5hbWUgPSB2c29ja19nZXRuYW1lLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNToyMTowMy42OTQ1NjQ2MzJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTE5MjQxOTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipWU09DSyBTb2NrZXQgTGVhayBGaXggYW5kIEZ1enppbmcgQ29uc2lkZXJhdGlvbioqXG5cblJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0YXJnZXRzIGEgcHJldHR5IHNwZWNpZmljIHByb2JsZW06IGEgbGVhayBvZiByZWplY3RlZCBjaGlsZCBzb2NrZXRzIGluIHRoZSB2c29jayBzdHJlYW0gYW5kIHNlcXBhY2tldCBvcGVyYXRpb25zLiBTcGVjaWZpY2FsbHksIHRoZSBsZWFrIGlzIG9yaWdpbmF0aW5nIGZyb20gaG93IHdlIGhhbmRsZSB0aGluZ3Mgd2l0aCBgdmlydGlvX3RyYW5zcG9ydGAgYW5kIGB2c29ja19sb29wYmFja2AuIGB2c29ja19hY2NlcHRgIGhhbmRsZXMgdGhlIGBhY2NlcHRgIGZ1bmN0aW9uIGZvciBib3RoLCBhbmQgYHZzb2NrX3BlbmRpbmdfd29ya2AgaXMgYSB3b3JrcXVldWUgZnVuY3Rpb24gaW52b2x2ZWQgaW4gdGhlIHByb2Nlc3MuXG5cblRoaXMgZml4IGlzIGludGVyZXN0aW5nLiBUaGUgZmFjdCB0aGF0IHdlIGhhdmUgYSBtZW1vcnkgbGVhayByZWxhdGVkIHRvICpyZWplY3RlZCogc29ja2V0cyBpcyBhIGdvb2QgaW5kaWNhdG9yIHRoYXQgc29tZXRoaW5nJ3Mgb2ZmIGluIHRoZSBlcnJvciBwYXRoIG9yIHRoZSBjbGVhbnVwIHJvdXRpbmVzLiBJdCBzdWdnZXN0cyB0aGUgbm9ybWFsIGNsb3NlIHBhdGggaXMgbmV2ZXIgZ2V0dGluZyBjYWxsZWQgd2hlbiBhIHNvY2tldCBpcyByZWplY3RlZCBieSBhIHNlcnZlci5cblxuR2l2ZW4gdGhlIHBvdGVudGlhbCBjb21wbGV4aXR5IGFuZCB0aGUgZmFjdCB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBzb2NrZXQgbWFuYWdlbWVudCAoYWx3YXlzIGEgZ29vZCB0YXJnZXQpLCB0aGlzIGlzICpkZWZpbml0ZWx5KiB3b3J0aCBhIHRob3JvdWdoIGZ1enppbmcgY2FtcGFpZ24uIFdlIG5lZWQgdG8gaGl0IHRoaXMgd2l0aCBhbGwgc29ydHMgb2YgbWFsZm9ybWVkIGRhdGEgYW5kIGVkZ2UgY2FzZXMgdG8gZW5zdXJlIHdlJ3ZlIHJlYWxseSBwbHVnZ2VkIHRoZSBob2xlLiBJdCdzIGEgcHJpbWUgdGFyZ2V0IGZvciBjcmFzaGluZyBhbmQgbWVtb3J5IGNvcnJ1cHRpb24sIHNvIGZ1enppbmcgaXMgYWxtb3N0IGEgZ2l2ZW4uIExldCdzIHN0YXJ0IGJ5IHNldHRpbmcgdGhhdCB1cCBpbW1lZGlhdGVseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkyNCwiT3V0cHV0VG9rZW5zIjoxMjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNToyMToxMi4yMTM4MDkwM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQzNjU5MDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZTT0NLRVRTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidnNvY2tfYWNjZXB0XCIsXG4gICAgXCJ2c29ja19wZW5kaW5nX3dvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSB2c29jayBsb2dpYyBmb3IgaGFuZGxpbmcgcmVqZWN0ZWQgY29ubmVjdGlvbnMgaW4gYHZzb2NrX2FjY2VwdGAgYW5kIGB2c29ja19wZW5kaW5nX3dvcmtgLiBJdCBmaXhlcyBhIGxlYWsgb2YgcmVqZWN0ZWQgY2hpbGQgc29ja2V0cyBieSBjbGVhbmluZyB0aGVtIHVwIGRpcmVjdGx5IGluIGB2c29ja19hY2NlcHRgIGluc3RlYWQgb2YgZGVmZXJyaW5nIHRvIGB2c29ja19wZW5kaW5nX3dvcmtgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWU09DS0VUU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZzb2NrX2FjY2VwdFwiLFxuICAgIFwidnNvY2tfcGVuZGluZ193b3JrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgdnNvY2sgbG9naWMgZm9yIGhhbmRsaW5nIHJlamVjdGVkIGNvbm5lY3Rpb25zIGluIGB2c29ja19hY2NlcHRgIGFuZCBgdnNvY2tfcGVuZGluZ193b3JrYC4gSXQgZml4ZXMgYSBsZWFrIG9mIHJlamVjdGVkIGNoaWxkIHNvY2tldHMgYnkgY2xlYW5pbmcgdGhlbSB1cCBkaXJlY3RseSBpbiBgdnNvY2tfYWNjZXB0YCBpbnN0ZWFkIG9mIGRlZmVycmluZyB0byBgdnNvY2tfcGVuZGluZ193b3JrYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjIxOjEyLjI5ODE4Mjg4MVoiLCJTZXEiOjksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTU2ODc5OTQ4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjIxOjEyLjI5ODgyMzMwMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMTU2ODE1NTAwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxpZmVjeWNsZSBvZiB2c29jayBzb2NrZXRzIGR1cmluZyB0aGUgYGFjY2VwdCgpYCBwcm9jZXNzLiBTcGVjaWZpY2FsbHksIGl0IHJlbW92ZXMgdGhlIGByZWplY3RlZGAgZmxhZyBmcm9tIGBzdHJ1Y3QgdnNvY2tfc29ja2AgYW5kIGNoYW5nZXMgYHZzb2NrX2FjY2VwdCgpYCB0byBpbW1lZGlhdGVseSBjbGVhbiB1cCBhbmQgZHJvcCByZWZlcmVuY2VzIHRvIGEgcmVqZWN0ZWQgY2hpbGQgc29ja2V0LCByYXRoZXIgdGhhbiBkZWZlcnJpbmcgdGhlIGNsZWFudXAgdG8gYHZzb2NrX3BlbmRpbmdfd29yaygpYC4gVGhpcyBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgb3IgbGlmZWN5Y2xlIGlzc3VlIHdoZXJlIHJlamVjdGVkIHNvY2tldHMgbWlnaHQgbm90IGJlIGNsZWFuZWQgdXAgYnkgdGhlIHBlbmRpbmcgd29ya2VyLlxcblxcblRoZXNlIGNoYW5nZXMgYXJlIHJlbGF0ZWQgdG8gb2JqZWN0IGxpZmVjeWNsZSwgcmVmZXJlbmNlIGNvdW50aW5nLCBhbmQgc3RhdGUgbWFuYWdlbWVudC4gQW55IGJ1Z3MgaW50cm9kdWNlZCBvciBmaXhlZCBieSB0aGlzIHBhdGNoIHdvdWxkIG1hbmlmZXN0IGFzIG1lbW9yeSBsZWFrcywgdXNlLWFmdGVyLWZyZWUgKFVBRiksIG9yIGRvdWJsZS1mcmVlIHZ1bG5lcmFiaWxpdGllcy4gU3VjaCBpc3N1ZXMgYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOIChmb3IgVUFGL2RvdWJsZS1mcmVlKSBhbmQgS01FTUxFQUsgKGZvciBtZW1vcnkgbGVha3MpLlxcblxcblRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGRhdGEgc3RydWN0dXJlcywgZG9lcyBub3QgZXhwb3NlIGFueSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBpbnZvbHZlIGNvbXBsZXggaW5pdGlhbGl6YXRpb25zIHdoZXJlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGNvdWxkIGJlIHJlYWQgb3IgbGVha2VkLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgN2Q4Yjk4NDk4N2NlYjAxMTIyNDEyY2I2MzA2MjI1ODNlYmZiOWE3NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMTU6MjA6MzYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9hZl92c29jay5oIGIvaW5jbHVkZS9uZXQvYWZfdnNvY2suaFxuaW5kZXggMzAwNDZhM2MyMGY3My4uYjcwY2VhN2Y3NTRmNSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2FmX3Zzb2NrLmhcbisrKyBiL2luY2x1ZGUvbmV0L2FmX3Zzb2NrLmhcbkBAIC01MywxMiArNTMsMTAgQEAgc3RydWN0IHZzb2NrX3NvY2sge1xuIFx0ICogZm9yIGNvbm5lY3Rpb24gcmVxdWVzdHMgYXJlIHBsYWNlZCBpbiB0aGUgcGVuZGluZyBsaXN0IHVudGlsIHRoZXlcbiBcdCAqIGFyZSBjb25uZWN0ZWQsIGF0IHdoaWNoIHBvaW50IHRoZXkgYXJlIHB1dCBpbiB0aGUgYWNjZXB0IHF1ZXVlIGxpc3RcbiBcdCAqIHNvIHRoZXkgY2FuIGJlIGFjY2VwdGVkIGluIGFjY2VwdCgpLiAgSWYgYWNjZXB0KCkgY2Fubm90IGFjY2VwdCB0aGVcbi1cdCAqIGNvbm5lY3Rpb24sIGl0IGlzIG1hcmtlZCBhcyByZWplY3RlZCBzbyB0aGUgY2xlYW51cCBmdW5jdGlvbiBrbm93c1xuLVx0ICogdG8gY2xlYW4gdXAgdGhlIHNvY2tldC5cbitcdCAqIGNvbm5lY3Rpb24sIHRoZSBjaGlsZCBpcyBjbGVhbmVkIHVwIGRpcmVjdGx5IGluIHZzb2NrX2FjY2VwdCgpLlxuIFx0ICovXG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIHBlbmRpbmdfbGlua3M7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIGFjY2VwdF9xdWV1ZTtcbi1cdGJvb2wgcmVqZWN0ZWQ7XG4gXHRzdHJ1Y3QgZGVsYXllZF93b3JrIGNvbm5lY3Rfd29yaztcbiBcdHN0cnVjdCBkZWxheWVkX3dvcmsgcGVuZGluZ193b3JrO1xuIFx0c3RydWN0IGRlbGF5ZWRfd29yayBjbG9zZV93b3JrO1xuZGlmZiAtLWdpdCBhL25ldC92bXdfdnNvY2svYWZfdnNvY2suYyBiL25ldC92bXdfdnNvY2svYWZfdnNvY2suY1xuaW5kZXggNjIyZGJkMDQ2Nzk5NC4uMjA4NGM4OGFjODM2ZiAxMDA2NDRcbi0tLSBhL25ldC92bXdfdnNvY2svYWZfdnNvY2suY1xuKysrIGIvbmV0L3Ztd192c29jay9hZl92c29jay5jXG5AQCAtMzksOSArMzksOSBAQFxuICAqIGZyb20gdGhlIGxpc3RlbmVyIHNvY2tldCdzIHBlbmRpbmcgbGlzdCBhbmQgZW5xdWV1ZWQgaW4gdGhlIGxpc3RlbmVyXG4gICogc29ja2V0J3MgYWNjZXB0IHF1ZXVlLiAgQ2FsbGVycyBvZiBhY2NlcHQoMikgd2lsbCBhY2NlcHQgY29ubmVjdGVkIHNvY2tldHNcbiAgKiBmcm9tIHRoZSBsaXN0ZW5lciBzb2NrZXQncyBhY2NlcHQgcXVldWUuICBJZiB0aGUgc29ja2V0IGNhbm5vdCBiZSBhY2NlcHRlZFxuLSAqIGZvciBzb21lIHJlYXNvbiB0aGVuIGl0IGlzIG1hcmtlZCByZWplY3RlZC4gIE9uY2UgdGhlIGNvbm5lY3Rpb24gaXNcbi0gKiBhY2NlcHRlZCwgaXQgaXMgb3duZWQgYnkgdGhlIHVzZXIgcHJvY2VzcyBhbmQgdGhlIHJlc3BvbnNpYmlsaXR5IGZvciBjbGVhbnVwXG4tICogZmFsbHMgd2l0aCB0aGF0IHVzZXIgcHJvY2Vzcy5cbisgKiBmb3Igc29tZSByZWFzb24gdGhlbiBpdCBpcyBjbGVhbmVkIHVwIGRpcmVjdGx5IGluIHZzb2NrX2FjY2VwdCgpLiAgT25jZSB0aGVcbisgKiBjb25uZWN0aW9uIGlzIGFjY2VwdGVkLCBpdCBpcyBvd25lZCBieSB0aGUgdXNlciBwcm9jZXNzIGFuZCB0aGVcbisgKiByZXNwb25zaWJpbGl0eSBmb3IgY2xlYW51cCBmYWxscyB3aXRoIHRoYXQgdXNlciBwcm9jZXNzLlxuICAqXG4gICogLSBJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZXNlIHBlbmRpbmcgc29ja2V0cyB3aWxsIG5ldmVyIHJlYWNoIHRoZSBjb25uZWN0ZWRcbiAgKiBzdGF0ZTsgaW4gZmFjdCwgd2UgbWF5IG5ldmVyIHJlY2VpdmUgYW5vdGhlciBwYWNrZXQgYWZ0ZXIgdGhlIGNvbm5lY3Rpb25cbkBAIC00OSw5ICs0OSw3IEBAXG4gICogZnV0dXJlLCBhZnRlciBzb21lIGFtb3VudCBvZiB0aW1lIHBhc3NlcyB3aGVyZSBhIGNvbm5lY3Rpb24gc2hvdWxkIGhhdmUgYmVlblxuICAqIGVzdGFibGlzaGVkLiAgVGhpcyBmdW5jdGlvbiBlbnN1cmVzIHRoYXQgdGhlIHNvY2tldCBpcyBvZmYgYWxsIGxpc3RzIHNvIGl0XG4gICogY2Fubm90IGJlIHJldHJpZXZlZCwgdGhlbiBkcm9wcyBhbGwgcmVmZXJlbmNlcyB0byB0aGUgc29ja2V0IHNvIGl0IGlzIGNsZWFuZWRcbi0gKiB1cCAoc29ja19wdXQoKSAtXHUwMDNlIHNrX2ZyZWUoKSAtXHUwMDNlIG91ciBza19kZXN0cnVjdCBpbXBsZW1lbnRhdGlvbikuICBOb3RlIHRoaXNcbi0gKiBmdW5jdGlvbiB3aWxsIGFsc28gY2xlYW51cCByZWplY3RlZCBzb2NrZXRzLCB0aG9zZSB0aGF0IHJlYWNoIHRoZSBjb25uZWN0ZWRcbi0gKiBzdGF0ZSBidXQgbGVhdmUgaXQgYmVmb3JlIHRoZXkgaGF2ZSBiZWVuIGFjY2VwdGVkLlxuKyAqIHVwIChzb2NrX3B1dCgpIC1cdTAwM2Ugc2tfZnJlZSgpIC1cdTAwM2Ugb3VyIHNrX2Rlc3RydWN0IGltcGxlbWVudGF0aW9uKS5cbiAgKlxuICAqIC0gTG9jayBvcmRlcmluZyBmb3IgcGVuZGluZyBvciBhY2NlcHQgcXVldWUgc29ja2V0cyBpczpcbiAgKlxuQEAgLTc3NCwxMSArNzcyLDExIEBAIHN0YXRpYyB2b2lkIHZzb2NrX3BlbmRpbmdfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXG4gXHRpZiAodnNvY2tfaXNfcGVuZGluZyhzaykpIHtcbiBcdFx0dnNvY2tfcmVtb3ZlX3BlbmRpbmcobGlzdGVuZXIsIHNrKTtcbi1cdH0gZWxzZSBpZiAoIXZzay1cdTAwM2VyZWplY3RlZCkge1xuLVx0XHQvKiBXZSBhcmUgbm90IG9uIHRoZSBwZW5kaW5nIGxpc3QgYW5kIGFjY2VwdCgpIGRpZCBub3QgcmVqZWN0XG4tXHRcdCAqIHVzLCBzbyB3ZSBtdXN0IGhhdmUgYmVlbiBhY2NlcHRlZCBieSBvdXIgdXNlciBwcm9jZXNzLiAgV2Vcbi1cdFx0ICoganVzdCBuZWVkIHRvIGRyb3Agb3VyIHJlZmVyZW5jZXMgdG8gdGhlIHNvY2tldHMgYW5kIGJlIG9uXG4tXHRcdCAqIG91ciB3YXkuXG4rXHR9IGVsc2Uge1xuK1x0XHQvKiBXZSBhcmUgbm90IG9uIHRoZSBwZW5kaW5nIGxpc3QsIHNvIHdlIG11c3QgaGF2ZSBiZWVuIGFjY2VwdGVkXG4rXHRcdCAqIGJ5IG91ciB1c2VyIHByb2Nlc3MgKHJlamVjdGVkIHNvY2tldHMgYXJlIGNsZWFuZWQgdXAgZGlyZWN0bHlcbitcdFx0ICogaW4gdnNvY2tfYWNjZXB0KCkpLiAgV2UganVzdCBuZWVkIHRvIGRyb3Agb3VyIHJlZmVyZW5jZXMgdG9cbitcdFx0ICogdGhlIHNvY2tldHMgYW5kIGJlIG9uIG91ciB3YXkuXG4gXHRcdCAqL1xuIFx0XHRjbGVhbnVwID0gZmFsc2U7XG4gXHRcdGdvdG8gb3V0O1xuQEAgLTk0Miw3ICs5NDAsNiBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKl9fdnNvY2tfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCxcbiBcdHZzay1cdTAwM2VsaXN0ZW5lciA9IE5VTEw7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZ2c2stXHUwMDNlcGVuZGluZ19saW5rcyk7XG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZ2c2stXHUwMDNlYWNjZXB0X3F1ZXVlKTtcbi1cdHZzay1cdTAwM2VyZWplY3RlZCA9IGZhbHNlO1xuIFx0dnNrLVx1MDAzZXNlbnRfcmVxdWVzdCA9IGZhbHNlO1xuIFx0dnNrLVx1MDAzZWlnbm9yZV9jb25uZWN0aW5nX3JzdCA9IGZhbHNlO1xuIFx0V1JJVEVfT05DRSh2c2stXHUwMDNlcGVlcl9zaHV0ZG93biwgMCk7XG5AQCAtMTkxOSwxNCArMTkxNiwxOSBAQCBzdGF0aWMgaW50IHZzb2NrX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLFxuIFx0XHR2Y29ubmVjdGVkID0gdnNvY2tfc2soY29ubmVjdGVkKTtcbiBcbiBcdFx0LyogSWYgdGhlIGxpc3RlbmVyIHNvY2tldCBoYXMgcmVjZWl2ZWQgYW4gZXJyb3IsIHRoZW4gd2Ugc2hvdWxkXG4tXHRcdCAqIHJlamVjdCB0aGlzIHNvY2tldCBhbmQgcmV0dXJuLiAgTm90ZSB0aGF0IHdlIHNpbXBseSBtYXJrIHRoZVxuLVx0XHQgKiBzb2NrZXQgcmVqZWN0ZWQsIGRyb3Agb3VyIHJlZmVyZW5jZSwgYW5kIGxldCB0aGUgY2xlYW51cFxuLVx0XHQgKiBmdW5jdGlvbiBoYW5kbGUgdGhlIGNsZWFudXA7IHRoZSBmYWN0IHRoYXQgd2UgZm91bmQgaXQgaW5cbi1cdFx0ICogdGhlIGxpc3RlbmVyJ3MgYWNjZXB0IHF1ZXVlIGd1YXJhbnRlZXMgdGhhdCB0aGUgY2xlYW51cFxuLVx0XHQgKiBmdW5jdGlvbiBoYXNuJ3QgcnVuIHlldC5cbitcdFx0ICogcmVqZWN0IHRoaXMgc29ja2V0IGFuZCByZXR1cm4uICBUaGUgY2hpbGQgd2FzIGZvdW5kIG9uIHRoZVxuK1x0XHQgKiBsaXN0ZW5lcidzIGFjY2VwdCBxdWV1ZSwgc28gaXQgc3RpbGwgaG9sZHMgdGhlIHJlZmVyZW5jZXNcbitcdFx0ICogdGFrZW4gYnkgc2tfYWxsb2MoKSwgX192c29ja19pbnNlcnRfY29ubmVjdGVkKCkgYW5kXG4rXHRcdCAqIHZzb2NrX2VucXVldWVfYWNjZXB0KCkuICBEcm9wIHRoZW0gaGVyZSBzbyB0aGUgc29ja2V0IGlzXG4rXHRcdCAqIGRlc3Ryb3llZC4gIFdlIGNhbm5vdCBkZWZlciB0aGlzIHRvIHZzb2NrX3BlbmRpbmdfd29yaygpOlxuK1x0XHQgKiByZWplY3RlZCBjaGlsZCBzb2NrZXRzIGNyZWF0ZWQgdGhyb3VnaCB2aXJ0aW9fdHJhbnNwb3J0IGFuZFxuK1x0XHQgKiB2c29ja19sb29wYmFjayBhcmUgbm90IGNsZWFuZWQgdXAgYnkgdGhhdCB3b3JrZXIsIHNvIHRoZVxuK1x0XHQgKiBjaGlsZCB3b3VsZCBvdGhlcndpc2UgbGVhayBwZXJtYW5lbnRseS5cbiBcdFx0ICovXG4gXHRcdGlmIChlcnIpIHtcbi1cdFx0XHR2Y29ubmVjdGVkLVx1MDAzZXJlamVjdGVkID0gdHJ1ZTtcbitcdFx0XHR2c29ja19yZW1vdmVfY29ubmVjdGVkKHZjb25uZWN0ZWQpO1xuK1x0XHRcdGNvbm5lY3RlZC1cdTAwM2Vza19zdGF0ZSA9IFRDUF9DTE9TRTtcbitcdFx0XHRzb2NrX3B1dChjb25uZWN0ZWQpO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdG5ld3NvY2stXHUwMDNlc3RhdGUgPSBTU19DT05ORUNURUQ7XG4gXHRcdFx0c29ja19ncmFmdChjb25uZWN0ZWQsIG5ld3NvY2spO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTU6MjE6MTIuMjk4ODI0MjQxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNTY4MTMyNTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgdnNvY2sgU29ja2V0IExpZmVjeWNsZSBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyB0YXJnZXRlZCBhdCBgdnNvY2tfYWNjZXB0YCBpbiBgbmV0L3Ztd192c29jay9hZl92c29jay5jYCBhbmQgaXMgZm9jdXNlZCBvbiBzdHJlYW1saW5pbmcgc29ja2V0IGxpZmVjeWNsZSBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgYXJvdW5kIHJlamVjdGVkIHNvY2tldHMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIGlzIGFkZHJlc3NpbmcgYSBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZSDigJMgbGlrZWx5IGEgbGVhayBvciB1c2UtYWZ0ZXItZnJlZSwgYmFzZWQgb24gdGhlIGNvbnRleHQuIEluc3RlYWQgb2YgbWFya2luZyBhIHNvY2tldCBhcyByZWplY3RlZCBhbmQgZGVmZXJyaW5nIGNsZWFudXAsIHRoZSBwYXRjaCBpcyBub3cgaGFuZGxpbmcgaW1tZWRpYXRlIGNsZWFudXAgZGlyZWN0bHkgd2l0aGluIGB2c29ja19hY2NlcHRgLlxuXG5NeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIG1ha2Ugc3VyZSB0aGlzIGRvZXNuJ3QgZXhwb3NlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIGNoYW5nZXMgaW52b2x2ZSByZW1vdmluZyB0aGUgYHJlamVjdGVkYCBmaWVsZCBmcm9tIGBzdHJ1Y3QgdnNvY2tfc29ja2AgZW50aXJlbHksIHdoaWNoIGFsc28gcmVtb3ZlcyB0aGUgaW5pdGlhbGl6YXRpb24gYHZzay1cdTAwM2VyZWplY3RlZCA9IGZhbHNlO2AgaW4gYF9fdnNvY2tfY3JlYXRlYC4gIGB2c29ja19hY2NlcHRgIGlzIG5vdyBnb2luZyB0byBjYWxsIGB2c29ja19yZW1vdmVfY29ubmVjdGVkYCwgc2V0IGBza19zdGF0ZSA9IFRDUF9DTE9TRWAsIGFuZCBgc29ja19wdXRgIGRpcmVjdGx5IG9uIHRoZSByZWplY3RlZCBzb2NrZXQuICBgdnNvY2tfcGVuZGluZ193b3JrYCBpcyBubyBsb25nZXIgY2hlY2tpbmcgYCF2c2stXHUwMDNlcmVqZWN0ZWRgLlxuXG5Gcm9tIHdoYXQgSSBjYW4gc2VlLCB0aGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2UgaW4gc29ja2V0IGxpZmVjeWNsZSBhbmQgcmVmZXJlbmNlIGNvdW50aW5nLiBJdOKAmXMgZW50aXJlbHkgYWJvdXQgc3RhdGUgdHJhbnNpdGlvbnMsIG5vdCBkYXRhIHN0cnVjdHVyZSBjaGFuZ2VzIG9yIHVuaW5pdGlhbGl6ZWQgZGF0YS4gQ3JpdGljYWxseSwgbm90aGluZyBuZXcgaXMgYmVpbmcgcGFzc2VkIHVwIHRvIHVzZXIgc3BhY2UgaGVyZS5cblxuSSdtIGNvbmZpZGVudCB3ZSBkb24ndCBoYXZlIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlIGhlcmUsIHNvIEtNU0FOIGlzbid0IG5lZWRlZC4gVGhpcyBpcyBwdXJlbHkgYSBsaWZlY3ljbGUgYW5kIHN0YXRlIG1hY2hpbmUgY2hhbmdlLiBBbnkgaXNzdWVzIGludHJvZHVjZWQgaGVyZSBhcmUgbW9yZSBsaWtlbHkgdG8gbWFuaWZlc3QgYXMgbGVha3MsIHVzZS1hZnRlci1mcmVlIChVQUYpLCBvciBkb3VibGUtZnJlZSwgd2hpY2ggS0FTQU4gYW5kIEtNRU1MRUFLIHNob3VsZCByZWFkaWx5IGNhdGNoLiBUaGVyZWZvcmUsIE5lZWRzS01TQU4gPSBmYWxzZS5cblxuVG8gc3VtbWFyaXplLCB0aGlzIHBhdGNoIG9wdGltaXplcyB0aGUgaGFuZGxpbmcgb2YgcmVqZWN0ZWQgc29ja2V0cyBkdXJpbmcgdGhlIGBhY2NlcHQoKWAgcHJvY2Vzcy4gQnkgcmVtb3ZpbmcgdGhlIGByZWplY3RlZGAgZmxhZyBhbmQgbW92aW5nIGNsZWFudXAgdG8gYHZzb2NrX2FjY2VwdCgpYCwgdGhlIHBhdGNoIGZpeGVzIGFuIGlzc3VlIHdoZXJlIHJlamVjdGVkIHNvY2tldHMgbWlnaHQgbm90IGJlIGNsZWFuZWQgdXAgcHJvcGVybHkuIEl0J3MgYSBsaWZlY3ljbGUvcmVmZXJlbmNlLWNvdW50aW5nIGNoYW5nZSwgc28gdGhlIG1ham9yIGJ1Z3Mgb2YgY29uY2VybiBhcmUgbWVtb3J5IGxlYWtzLCBVQUYsIG9yIGRvdWJsZS1mcmVlLiBTdGFuZGFyZCBLQVNBTiBmdXp6aW5nIGlzIHN1ZmZpY2llbnQgYmVjYXVzZSB0aGlzIHBhdGNoIGRvZXMgbm90IGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIyNiwiT3V0cHV0VG9rZW5zIjoyNTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NTIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNToyMToyMy44NjY5NjA0MjRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsaWZlY3ljbGUgb2YgdnNvY2sgc29ja2V0cyBkdXJpbmcgdGhlIGBhY2NlcHQoKWAgcHJvY2Vzcy4gU3BlY2lmaWNhbGx5LCBpdCByZW1vdmVzIHRoZSBgcmVqZWN0ZWRgIGZsYWcgZnJvbSBgc3RydWN0IHZzb2NrX3NvY2tgIGFuZCBjaGFuZ2VzIGB2c29ja19hY2NlcHQoKWAgdG8gaW1tZWRpYXRlbHkgY2xlYW4gdXAgYW5kIGRyb3AgcmVmZXJlbmNlcyB0byBhIHJlamVjdGVkIGNoaWxkIHNvY2tldCwgcmF0aGVyIHRoYW4gZGVmZXJyaW5nIHRoZSBjbGVhbnVwIHRvIGB2c29ja19wZW5kaW5nX3dvcmsoKWAuIFRoaXMgYWRkcmVzc2VzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIGxpZmVjeWNsZSBpc3N1ZSB3aGVyZSByZWplY3RlZCBzb2NrZXRzIG1pZ2h0IG5vdCBiZSBjbGVhbmVkIHVwIGJ5IHRoZSBwZW5kaW5nIHdvcmtlci5cXG5cXG5UaGVzZSBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIG9iamVjdCBsaWZlY3ljbGUsIHJlZmVyZW5jZSBjb3VudGluZywgYW5kIHN0YXRlIG1hbmFnZW1lbnQuIEFueSBidWdzIGludHJvZHVjZWQgb3IgZml4ZWQgYnkgdGhpcyBwYXRjaCB3b3VsZCBtYW5pZmVzdCBhcyBtZW1vcnkgbGVha3MsIHVzZS1hZnRlci1mcmVlIChVQUYpLCBvciBkb3VibGUtZnJlZSB2dWxuZXJhYmlsaXRpZXMuIFN1Y2ggaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiAoZm9yIFVBRi9kb3VibGUtZnJlZSkgYW5kIEtNRU1MRUFLIChmb3IgbWVtb3J5IGxlYWtzKS5cXG5cXG5UaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG5ldyBkYXRhIHN0cnVjdHVyZXMsIGRvZXMgbm90IGV4cG9zZSBhbnkga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgaW52b2x2ZSBjb21wbGV4IGluaXRpYWxpemF0aW9ucyB3aGVyZSB1bmluaXRpYWxpemVkIG1lbW9yeSBjb3VsZCBiZSByZWFkIG9yIGxlYWtlZC4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4gU3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsaWZlY3ljbGUgb2YgdnNvY2sgc29ja2V0cyBkdXJpbmcgdGhlIGBhY2NlcHQoKWAgcHJvY2Vzcy4gU3BlY2lmaWNhbGx5LCBpdCByZW1vdmVzIHRoZSBgcmVqZWN0ZWRgIGZsYWcgZnJvbSBgc3RydWN0IHZzb2NrX3NvY2tgIGFuZCBjaGFuZ2VzIGB2c29ja19hY2NlcHQoKWAgdG8gaW1tZWRpYXRlbHkgY2xlYW4gdXAgYW5kIGRyb3AgcmVmZXJlbmNlcyB0byBhIHJlamVjdGVkIGNoaWxkIHNvY2tldCwgcmF0aGVyIHRoYW4gZGVmZXJyaW5nIHRoZSBjbGVhbnVwIHRvIGB2c29ja19wZW5kaW5nX3dvcmsoKWAuIFRoaXMgYWRkcmVzc2VzIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIG9yIGxpZmVjeWNsZSBpc3N1ZSB3aGVyZSByZWplY3RlZCBzb2NrZXRzIG1pZ2h0IG5vdCBiZSBjbGVhbmVkIHVwIGJ5IHRoZSBwZW5kaW5nIHdvcmtlci5cXG5cXG5UaGVzZSBjaGFuZ2VzIGFyZSByZWxhdGVkIHRvIG9iamVjdCBsaWZlY3ljbGUsIHJlZmVyZW5jZSBjb3VudGluZywgYW5kIHN0YXRlIG1hbmFnZW1lbnQuIEFueSBidWdzIGludHJvZHVjZWQgb3IgZml4ZWQgYnkgdGhpcyBwYXRjaCB3b3VsZCBtYW5pZmVzdCBhcyBtZW1vcnkgbGVha3MsIHVzZS1hZnRlci1mcmVlIChVQUYpLCBvciBkb3VibGUtZnJlZSB2dWxuZXJhYmlsaXRpZXMuIFN1Y2ggaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiAoZm9yIFVBRi9kb3VibGUtZnJlZSkgYW5kIEtNRU1MRUFLIChmb3IgbWVtb3J5IGxlYWtzKS5cXG5cXG5UaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG5ldyBkYXRhIHN0cnVjdHVyZXMsIGRvZXMgbm90IGV4cG9zZSBhbnkga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgaW52b2x2ZSBjb21wbGV4IGluaXRpYWxpemF0aW9ucyB3aGVyZSB1bmluaXRpYWxpemVkIG1lbW9yeSBjb3VsZCBiZSByZWFkIG9yIGxlYWtlZC4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4gU3RhbmRhcmQgS0FTQU4gZnV6emluZyBpcyBzdWZmaWNpZW50LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk97p[1] Phase: Succeeded StartedAt: 2026-08-07 15:41:36 +0000 UTC FinishedAt: 2026-08-07 15:41:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk97p[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-07 15:41:36 +0000 UTC FinishedAt: 2026-08-07 15:41:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk97p[2] Phase: Succeeded StartedAt: 2026-08-07 15:41:36 +0000 UTC FinishedAt: 2026-08-07 19:20:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 15:41:36 +0000 UTC FinishedAt: 2026-08-07 19:20:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 15:41:36 +0000 UTC FinishedAt: 2026-08-07 15:41:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 15:41:36 +0000 UTC FinishedAt: 2026-08-07 15:41:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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-workflowwk97p/series-workflowwk97p-convert-artifact-1379895723/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 15:41:46 +0000 UTC FinishedAt: 2026-08-07 15:58:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 15:41:46 +0000 UTC FinishedAt: 2026-08-07 15:58:10 +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:*b60f1fbb-2552-492c-be22-03de642f031f,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-workflowwk97p/series-workflowwk97p-convert-artifact-1379895723/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": "753deb93-7452-4b4e-8b8b-501eba605d1a", "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-workflowwk97p/series-workflowwk97p-build-action-2459114153/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 15:41:46 +0000 UTC FinishedAt: 2026-08-07 15:58:00 +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:*b60f1fbb-2552-492c-be22-03de642f031f,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-workflowwk97p/series-workflowwk97p-convert-artifact-1379895723/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": "753deb93-7452-4b4e-8b8b-501eba605d1a", "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-workflowwk97p/series-workflowwk97p-build-action-2459114153/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 15:58:10 +0000 UTC FinishedAt: 2026-08-07 15:58:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 15:58:10 +0000 UTC FinishedAt: 2026-08-07 15:58:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 15:58:10 +0000 UTC FinishedAt: 2026-08-07 15:58:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 15:58:10 +0000 UTC FinishedAt: 2026-08-07 15:58:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-workflowwk97p/series-workflowwk97p-convert-artifact-527425666/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 15:58:20 +0000 UTC FinishedAt: 2026-08-07 15:59:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 15:58:20 +0000 UTC FinishedAt: 2026-08-07 15:59:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*753deb93-7452-4b4e-8b8b-501eba605d1a,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-workflowwk97p/series-workflowwk97p-build-action-2459114153/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-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 15:59:59 +0000 UTC FinishedAt: 2026-08-07 15:59:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 15:59:59 +0000 UTC FinishedAt: 2026-08-07 15:59:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 15:59:59 +0000 UTC FinishedAt: 2026-08-07 16:16:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 15:59:59 +0000 UTC FinishedAt: 2026-08-07 16:16:56 +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:*b60f1fbb-2552-492c-be22-03de642f031f,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-workflowwk97p/series-workflowwk97p-convert-artifact-527425666/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": "24a7087d-2946-4df1-97fe-59f58cba81c2", "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-workflowwk97p/series-workflowwk97p-build-action-1688455894/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 15:59:59 +0000 UTC FinishedAt: 2026-08-07 16:16:53 +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:*b60f1fbb-2552-492c-be22-03de642f031f,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-workflowwk97p/series-workflowwk97p-convert-artifact-527425666/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": "24a7087d-2946-4df1-97fe-59f58cba81c2", "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-workflowwk97p/series-workflowwk97p-build-action-1688455894/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 16:16:56 +0000 UTC FinishedAt: 2026-08-07 16:16:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 16:16:56 +0000 UTC FinishedAt: 2026-08-07 16:16:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 16:16:56 +0000 UTC FinishedAt: 2026-08-07 16:18:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 16:16:56 +0000 UTC FinishedAt: 2026-08-07 16:18:35 +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:*24a7087d-2946-4df1-97fe-59f58cba81c2,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-workflowwk97p/series-workflowwk97p-build-action-1688455894/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-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 16:18:45 +0000 UTC FinishedAt: 2026-08-07 19:20:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 16:18:45 +0000 UTC FinishedAt: 2026-08-07 19:20:12 +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":["vsock_accept","vsock_pending_work"],"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:*753deb93-7452-4b4e-8b8b-501eba605d1a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*24a7087d-2946-4df1-97fe-59f58cba81c2,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-workflowwk97p/series-workflowwk97p-build-action-2459114153/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-workflowwk97p/series-workflowwk97p-build-action-1688455894/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 16:18:45 +0000 UTC FinishedAt: 2026-08-07 16:18:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 16:18:45 +0000 UTC FinishedAt: 2026-08-07 16:18:50 +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":["vsock_accept","vsock_pending_work"],"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-workflowwk97p/series-workflowwk97p-convert-artifact-353861047/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 16:18:45 +0000 UTC FinishedAt: 2026-08-07 16:18:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 16:18:45 +0000 UTC FinishedAt: 2026-08-07 16:18:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 16:18:45 +0000 UTC FinishedAt: 2026-08-07 16:18:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 16:18:55 +0000 UTC FinishedAt: 2026-08-07 19:20:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk97p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"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":["vsock_accept","vsock_pending_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS"],"series_id":"b803bd49-ea41-4af0-9f0f-61e702ac0ee1","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-08-07 16:18:55 +0000 UTC FinishedAt: 2026-08-07 19:20:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*753deb93-7452-4b4e-8b8b-501eba605d1a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*24a7087d-2946-4df1-97fe-59f58cba81c2,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-workflowwk97p/series-workflowwk97p-build-action-2459114153/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-workflowwk97p/series-workflowwk97p-build-action-1688455894/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-workflowwk97p/series-workflowwk97p-convert-artifact-353861047/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,}