Name: series-workflowfjkvm Phase: Succeeded StartedAt: 2026-07-24 08:21:05 +0000 UTC FinishedAt: 2026-07-24 13:21:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfjkvm[0] Phase: Succeeded StartedAt: 2026-07-24 08:21:05 +0000 UTC FinishedAt: 2026-07-24 09:02:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfjkvm[0].run-triage Phase: Succeeded StartedAt: 2026-07-24 08:21:05 +0000 UTC FinishedAt: 2026-07-24 09:02:01 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "78f75d632f74b8de0f081a128588f7c37d0d1164", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_CLS_U32" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "78f75d632f74b8de0f081a128588f7c37d0d1164", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_CLS_U32" ], "series_id": "148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "u32_change", "u32_classify" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9DTFNfVTMyJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dTMyX2NoYW5nZSYjMzQ7LAogICAgJiMzNDt1MzJfY2xhc3NpZnkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgYG9mZnNoaWZ0YCBpbiBgdTMyX2NoYW5nZWAgdG8gcHJldmVudCBhIHBvdGVudGlhbCB1bmRlZmluZWQgYmVoYXZpb3IgKHNoaWZ0IG91dCBvZiBib3VuZHMpIGluIGB1MzJfY2xhc3NpZnlgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHUzMiB0cmFmZmljIGNsYXNzaWZpZXIgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBuZXRsaW5rLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjU5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgM2M2NGVkNDI0ZWUzOWZjZWZiZDg0YTE3NzZjMTJkZmJiNGU0YjA2NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDI0IDA4OjU5OjUwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfdTMyLmMgYi9uZXQvc2NoZWQvY2xzX3UzMi5jXG5pbmRleCA4ZjMwY2M4MjE4MWQ5Yy4uYWM5OGIxYzIxNDRhNzggMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvY2xzX3UzMi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvY2xzX3UzMi5jXG5AQCAtMTEwNyw2ICYjNDM7MTEwNywxMyBAQCBzdGF0aWMgaW50IHUzMl9jaGFuZ2Uoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqaW5fc2tiLFxuIFx0XHRnb3RvIGVycmlkcjtcbiBcdH1cbiBcbiYjNDM7XHRpZiAocy1cdTAwM2VvZmZzaGlmdCBcdTAwM2U9IDE2KSB7XG4mIzQzO1x0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLFxuJiM0MztcdFx0XHRcdCAgIFwmIzM0O29mZnNoaWZ0IG11c3QgYmUgbGVzcyB0aGFuIDE2XCYjMzQ7KTtcbiYjNDM7XHRcdGVyciA9IC1FSU5WQUw7XG4mIzQzO1x0XHRnb3RvIGVycmlkcjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0biA9IGt6YWxsb2NfZmxleCgqbiwgc2VsLmtleXMsIHMtXHUwMDNlbmtleXMpO1xuIFx0aWYgKG4gPT0gTlVMTCkge1xuIFx0XHRlcnIgPSAtRU5PQlVGUztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODo1OTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0NMU19VMzImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1MzJfY2hhbmdlJiMzNDssCiAgICAmIzM0O3UzMl9jbGFzc2lmeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGZvciBgb2Zmc2hpZnRgIGluIGB1MzJfY2hhbmdlYCB0byBwcmV2ZW50IGEgcG90ZW50aWFsIHVuZGVmaW5lZCBiZWhhdmlvciAoc2hpZnQgb3V0IG9mIGJvdW5kcykgaW4gYHUzMl9jbGFzc2lmeWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdTMyIHRyYWZmaWMgY2xhc3NpZmllciB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIG5ldGxpbmsuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNjNjRlZDQyNGVlMzlmY2VmYmQ4NGExNzc2YzEyZGZiYjRlNGIwNjYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAyNCAwODo1OTo1MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfdTMyLmMgYi9uZXQvc2NoZWQvY2xzX3UzMi5jCmluZGV4IDhmMzBjYzgyMTgxZDljLi5hYzk4YjFjMjE0NGE3OCAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL2Nsc191MzIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvY2xzX3UzMi5jCkBAIC0xMTA3LDYgJiM0MzsxMTA3LDEzIEBAIHN0YXRpYyBpbnQgdTMyX2NoYW5nZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICppbl9za2IsCiAJCWdvdG8gZXJyaWRyOwogCX0KIAomIzQzOwlpZiAocy0mZ3Q7b2Zmc2hpZnQgJmd0Oz0gMTYpIHsKJiM0MzsJCU5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssCiYjNDM7CQkJCSAgICYjMzQ7b2Zmc2hpZnQgbXVzdCBiZSBsZXNzIHRoYW4gMTYmIzM0Oyk7CiYjNDM7CQllcnIgPSAtRUlOVkFMOwomIzQzOwkJZ290byBlcnJpZHI7CiYjNDM7CX0KJiM0MzsKIAluID0ga3phbGxvY19mbGV4KCpuLCBzZWwua2V5cywgcy0mZ3Q7bmtleXMpOwogCWlmIChuID09IE5VTEwpIHsKIAkJZXJyID0gLUVOT0JVRlM7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NDYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXcgYGNsc191MzIuY2AgUGF0Y2gqKgoKT2theSwgSSBzZWUgYSBuZXcgcGF0Y2ggdGhhdCYjMzk7cyBiZWVuIGFwcGxpZWQgdG8gYG5ldC9zY2hlZC9jbHNfdTMyLmNgLiBJdCBsb29rcyBsaWtlIHRoZSBtYWluIGNoYW5nZSBpcyBhIG5ldyB2YWxpZGF0aW9uIGNoZWNrIHdpdGhpbiB0aGUgYHUzMl9jaGFuZ2VgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGNoZWNraW5nIGlmIGBzLSZndDtvZmZzaGlmdGAgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDE2LiBJZiBpdCBpcywgdGhlbiB0aGUgcGF0Y2ggdGhyb3dzIGFuIGVycm9yLCBzZXRzIGFuIGV4dGVuZGVkIEFDSyBtZXNzYWdlLCBhbmQgYmFpbHMgb3V0LiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2U7IGEgbmV3IHNhZmV0eSBjaGVjayBoYXMgYmVlbiBpbnRyb2R1Y2VkLgoKSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBuZXcgcmVzdHJpY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBzYCBpcyBwcm9iYWJseSBhIGBzdHJ1Y3QgdGNfdTMyX3NlbGAsIG9yIHNvbWV0aGluZyBjbG9zZWx5IHJlbGF0ZWQsIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZS4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhhdCBgcy0mZ3Q7b2Zmc2hpZnRgIHZhcmlhYmxlIHJlcHJlc2VudHMgd2l0aGluIHRoYXQgc3RydWN0dXJlIGFuZCB3aHkgdGhpcyBsaW1pdCBvZiAxNiBpcyBiZWluZyBpbXBvc2VkLiBJJiMzOTtsbCBxdWlja2x5IHJ1biBhIGBncmVwYCBvbiBgdTMyX2NoYW5nZWAgd2l0aGluIGBuZXQvc2NoZWQvY2xzX3UzMi5jYCB0byBzZWUgaWYgSSBjYW4gZ2V0IHNvbWUgcXVpY2sgY29udGV4dCBhcm91bmQgdGhlIHZhcmlhYmxlIGFuZCBpdHMgdXNhZ2UuIFRoaXMgd2lsbCBnaXZlIG1lIGEgbW9yZSBjb25jcmV0ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBsb2dpYyBiZWhpbmQgdGhpcyBuZXcgdmFsaWRhdGlvbiBjaGVjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1MzJfY2hhbmdlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2Nsc191MzIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvY2xzX3UzMi5jPTgyMT1zdGF0aWMgc3RydWN0IHRjX3Vfa25vZGUgKnUzMl9pbml0X2tub2RlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRjZl9wcm90byAqdHAsXG4tLVxubmV0L3NjaGVkL2Nsc191MzIuYy04NzEtXG5uZXQvc2NoZWQvY2xzX3UzMi5jOjg3MjpzdGF0aWMgaW50IHUzMl9jaGFuZ2Uoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqaW5fc2tiLFxubmV0L3NjaGVkL2Nsc191MzIuYy04NzMtXHRcdCAgICAgIHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCB1bnNpZ25lZCBsb25nIGJhc2UsIHUzMiBoYW5kbGUsXG4tLVxubmV0L3NjaGVkL2Nsc191MzIuYz0xNDY1PXN0YXRpYyBzdHJ1Y3QgdGNmX3Byb3RvX29wcyBjbHNfdTMyX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuLS1cbm5ldC9zY2hlZC9jbHNfdTMyLmMtMTQ3MC1cdC5nZXRcdFx0PVx0dTMyX2dldCxcbm5ldC9zY2hlZC9jbHNfdTMyLmM6MTQ3MTpcdC5jaGFuZ2VcdFx0PVx0dTMyX2NoYW5nZSxcbm5ldC9zY2hlZC9jbHNfdTMyLmMtMTQ3Mi1cdC5kZWxldGVcdFx0PVx0dTMyX2RlbGV0ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzE3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqRGVjb2RpbmcgYHNgIGluIGB1MzJfY2hhbmdlYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYHUzMl9jaGFuZ2VgIGZ1bmN0aW9uLiBNeSBwcmltYXJ5IGdvYWwgaGVyZSBpcyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgaW1wbGljYXRpb25zIG9mIHRoZSB2YXJpYWJsZSBgc2AuIEl0JiMzOTtzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZnVuY3Rpb24gd29ya3MsIGFuZCB1bHRpbWF0ZWx5IGhvdyB0aGUgc3lzdGVtIGJlaGF2ZXMuIExldCYjMzk7cyBzdGFydCBieSBpZGVudGlmeWluZyBpdCYjMzk7cyB1c2UgY2FzZSwgYW5kIHRyYWNpbmcgaXRzIGltcGFjdC4gSSYjMzk7bGwgcmVhZCB0aHJvdWdoIHRoZSBjb2RlIG5vdyBhbmQgdHJ5IHRvIG1hcCBvdXQgaG93IHRoYXQgdmFyaWFibGUgaXMgdXNlZC4gVGhpcyBzaG91bGQgYmUgc3RyYWlnaHRmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2Nsc191MzIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwOTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTA5MDpcdFx0fSBlbHNlIHtcbjEwOTE6XHRcdFx0LyogVGhlIHVzZXIgZGlkIG5vdCBnaXZlIHVzIGEgaGFuZGxlOyBsZXRzIGp1c3QgZ2VuZXJhdGUgb25lXG4xMDkyOlx0XHRcdCAqIGZyb20gdGhlIHRhYmxlJiMzOTtzIHBvb2wgb2Ygbm9kZWlkcy5cbjEwOTM6XHRcdFx0ICovXG4xMDk0Olx0XHRcdGhhbmRsZSA9IGdlbl9uZXdfa2lkKGh0LCBodGlkKTtcbjEwOTU6XHRcdH1cbjEwOTY6XHRcbjEwOTc6XHRcdGlmICh0YltUQ0FfVTMyX1NFTF0gPT0gTlVMTCkge1xuMTA5ODpcdFx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcJiMzNDtTZWxlY3RvciBub3Qgc3BlY2lmaWVkXCYjMzQ7KTtcbjEwOTk6XHRcdFx0ZXJyID0gLUVJTlZBTDtcbjExMDA6XHRcdFx0Z290byBlcnJpZHI7XG4xMTAxOlx0XHR9XG4xMTAyOlx0XG4xMTAzOlx0XHRzID0gbmxhX2RhdGEodGJbVENBX1UzMl9TRUxdKTtcbjExMDQ6XHRcdHNlbF9zaXplID0gc3RydWN0X3NpemUocywga2V5cywgcy1cdTAwM2Vua2V5cyk7XG4xMTA1Olx0XHRpZiAobmxhX2xlbih0YltUQ0FfVTMyX1NFTF0pIFx1MDAzYyBzZWxfc2l6ZSkge1xuMTEwNjpcdFx0XHRlcnIgPSAtRUlOVkFMO1xuMTEwNzpcdFx0XHRnb3RvIGVycmlkcjtcbjExMDg6XHRcdH1cbjExMDk6XHRcbjExMTA6XHRcdGlmIChzLVx1MDAzZW9mZnNoaWZ0IFx1MDAzZT0gMTYpIHtcbjExMTE6XHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjayxcbjExMTI6XHRcdFx0XHRcdCAgIFwmIzM0O29mZnNoaWZ0IG11c3QgYmUgbGVzcyB0aGFuIDE2XCYjMzQ7KTtcbjExMTM6XHRcdFx0ZXJyID0gLUVJTlZBTDtcbjExMTQ6XHRcdFx0Z290byBlcnJpZHI7XG4xMTE1Olx0XHR9XG4xMTE2Olx0XG4xMTE3Olx0XHRuID0ga3phbGxvY19mbGV4KCpuLCBzZWwua2V5cywgcy1cdTAwM2Vua2V5cyk7XG4xMTE4Olx0XHRpZiAobiA9PSBOVUxMKSB7XG4xMTE5Olx0XHRcdGVyciA9IC1FTk9CVUZTO1xuMTEyMDpcdFx0XHRnb3RvIGVycmlkcjtcbjExMjE6XHRcdH1cbjExMjI6XHRcbjExMjM6XHQjaWZkZWYgQ09ORklHX0NMU19VMzJfUEVSRlxuMTEyNDpcdFx0bi1cdTAwM2VwZiA9IF9fYWxsb2NfcGVyY3B1KHN0cnVjdF9zaXplKG4tXHUwMDNlcGYsIGtjbnRzLCBzLVx1MDAzZW5rZXlzKSxcbjExMjU6XHRcdFx0XHQgICAgICAgX19hbGlnbm9mX18oc3RydWN0IHRjX3UzMl9wY250KSk7XG4xMTI2Olx0XHRpZiAoIW4tXHUwMDNlcGYpIHtcbjExMjc6XHRcdFx0ZXJyID0gLUVOT0JVRlM7XG4xMTI4Olx0XHRcdGdvdG8gZXJyZnJlZTtcbjExMjk6XHRcdH1cbjExMzA6XHQjZW5kaWZcbjExMzE6XHRcbjExMzI6XHRcdHVuc2FmZV9tZW1jcHkoXHUwMDI2bi1cdTAwM2VzZWwsIHMsIHNlbF9zaXplLFxuMTEzMzpcdFx0XHQgICAgICAvKiBBIGNvbXBvc2l0ZSBmbGV4LWFycmF5IHN0cnVjdHVyZSBkZXN0aW5hdGlvbixcbjExMzQ6XHRcdFx0ICAgICAgICogd2hpY2ggd2FzIGNvcnJlY3RseSBzaXplZCB3aXRoIHN0cnVjdF9zaXplKCksXG4xMTM1Olx0XHRcdCAgICAgICAqIGJvdW5kcy1jaGVja2VkIGFnYWluc3QgbmxhX2xlbigpLCBhbmQgYWxsb2NhdGVkXG4xMTM2Olx0XHRcdCAgICAgICAqIGFib3ZlLiAqLyk7XG4xMTM3Olx0XHRSQ1VfSU5JVF9QT0lOVEVSKG4tXHUwMDNlaHRfdXAsIGh0KTtcbjExMzg6XHRcdG4tXHUwMDNlaGFuZGxlID0gaGFuZGxlO1xuMTEzOTpcdFx0bi1cdTAwM2Vmc2hpZnQgPSBzLVx1MDAzZWhtYXNrID8gZmZzKG50b2hsKHMtXHUwMDNlaG1hc2spKSAtIDEgOiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2OTMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZDoKCioqRGVjb2RpbmcgVGhpcyBWYXJpYWJsZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgYHNgIGFuZCBpdCYjMzk7cyBhc3NpZ25lZCB0byBgbmxhX2RhdGEodGJbVENBX1UzMl9TRUxdKWAuIFJpZ2h0IGF3YXksIHRoZSBgbmxhX2RhdGFgIHBhcnQgbWFrZXMgbWUgdGhpbmsgdGhpcyBpcyBOZXR3b3JrIExpbmsgQXR0cmlidXRlIChOTEEpIGRhdGEsIHdoaWNoIGlzIGNvbW1vbi4gYHRiYCBsaWtlbHkgcmVmZXJzIHRvIGEgdGFibGUgb3IgYW4gYXJyYXkgY29udGFpbmluZyBhdHRyaWJ1dGUgZGF0YSwgcG90ZW50aWFsbHkgd2l0aGluIGEgTmV0bGluayBtZXNzYWdlLiBgVENBX1UzMl9TRUxgLi4uIHRoYXQmIzM5O3MgYSBrZXkuIFRoaXMgbGlrZWx5IHNwZWNpZmllcyBhICYjMzQ7c2VsZWN0b3ImIzM0OyBvciBhIHNwZWNpZmljIGVsZW1lbnQgd2l0aGluIHRoYXQgYXJyYXksIGFuZCB0aGUgJiMzNDtVMzImIzM0OyBzdWdnZXN0cyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGFuIHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB3aGF0IHN0cnVjdHVyZSAqZXhhY3RseSogdGhhdCBgc2AgdmFyaWFibGUgcmVwcmVzZW50cy4gSXQmIzM5O3MgbGlrZWx5IGEgcG9pbnRlciBvZiBzb21lIHNvcnQsIHBlcmhhcHMgdG8gYSBzcGVjaWZpYyBmaWVsZCBvciBzdHJ1Y3R1cmUgd2l0aGluIHRoYXQgTmV0bGluayBhdHRyaWJ1dGUuIEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSBkZWZpbml0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGBUQ0FfVTMyX1NFTGAgZW51bSB2YWx1ZSB0byBrbm93IHdoYXQgaXQgaXMgcG9pbnRpbmcgdG8uIEkmIzM5O20gZ29pbmcgdG8gZGVsdmUgaW50byB0aGUgcmVsZXZhbnQgaGVhZGVyIGZpbGVzIG9yIGRhdGEgc3RydWN0dXJlcywgdG8gdW5kZXJzdGFuZCB0aGUgYHRiW1RDQV9VMzJfU0VMXWAgc3RydWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2Nsc191MzIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODcwOlx0fVxuIDg3MTpcdFxuIDg3MjpcdHN0YXRpYyBpbnQgdTMyX2NoYW5nZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICppbl9za2IsXG4gODczOlx0XHRcdCAgICAgIHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCB1bnNpZ25lZCBsb25nIGJhc2UsIHUzMiBoYW5kbGUsXG4gODc0Olx0XHRcdCAgICAgIHN0cnVjdCBubGF0dHIgKip0Y2EsIHZvaWQgKiphcmcsIHUzMiBmbGFncyxcbiA4NzU6XHRcdFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIDg3NjpcdHtcbiA4Nzc6XHRcdHN0cnVjdCB0Y191X2NvbW1vbiAqdHBfYyA9IHRwLVx1MDAzZWRhdGE7XG4gODc4Olx0XHRzdHJ1Y3QgdGNfdV9obm9kZSAqaHQ7XG4gODc5Olx0XHRzdHJ1Y3QgdGNfdV9rbm9kZSAqbjtcbiA4ODA6XHRcdHN0cnVjdCB0Y191MzJfc2VsICpzO1xuIDg4MTpcdFx0c3RydWN0IG5sYXR0ciAqb3B0ID0gdGNhW1RDQV9PUFRJT05TXTtcbiA4ODI6XHRcdHN0cnVjdCBubGF0dHIgKnRiW1RDQV9VMzJfTUFYICYjNDM7IDFdO1xuIDg4MzpcdFx0dTMyIGh0aWQsIHVzZXJmbGFncyA9IDA7XG4gODg0Olx0XHRzaXplX3Qgc2VsX3NpemU7XG4gODg1Olx0XHRpbnQgZXJyO1xuIDg4NjpcdFxuIDg4NzpcdFx0aWYgKCFvcHQpIHtcbiA4ODg6XHRcdFx0aWYgKGhhbmRsZSkge1xuIDg4OTpcdFx0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwmIzM0O0ZpbHRlciBoYW5kbGUgcmVxdWlyZXMgb3B0aW9uc1wmIzM0Oyk7XG4gODkwOlx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gODkxOlx0XHRcdH0gZWxzZSB7XG4gODkyOlx0XHRcdFx0cmV0dXJuIDA7XG4gODkzOlx0XHRcdH1cbiA4OTQ6XHRcdH1cbiA4OTU6XHRcbiA4OTY6XHRcdGVyciA9IG5sYV9wYXJzZV9uZXN0ZWRfZGVwcmVjYXRlZCh0YiwgVENBX1UzMl9NQVgsIG9wdCwgdTMyX3BvbGljeSxcbiA4OTc6XHRcdFx0XHRcdFx0ICBleHRhY2spO1xuIDg5ODpcdFx0aWYgKGVyciBcdTAwM2MgMClcbiA4OTk6XHRcdFx0cmV0dXJuIGVycjtcbiA5MDA6XHRcbiA5MDE6XHRcdGlmICh0YltUQ0FfVTMyX0ZMQUdTXSkge1xuIDkwMjpcdFx0XHR1c2VyZmxhZ3MgPSBubGFfZ2V0X3UzMih0YltUQ0FfVTMyX0ZMQUdTXSk7XG4gOTAzOlx0XHRcdGlmICghdGNfZmxhZ3NfdmFsaWQodXNlcmZsYWdzKSkge1xuIDkwNDpcdFx0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwmIzM0O0ludmFsaWQgZmlsdGVyIGZsYWdzXCYjMzQ7KTtcbiA5MDU6XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA5MDY6XHRcdFx0fVxuIDkwNzpcdFx0fVxuIDkwODpcdFxuIDkwOTpcdFx0biA9ICphcmc7XG4gOTEwOlx0XHRpZiAobikge1xuIDkxMTpcdFx0XHRzdHJ1Y3QgdGNfdV9rbm9kZSAqbmV3O1xuIDkxMjpcdFxuIDkxMzpcdFx0XHRpZiAoVENfVTMyX0tFWShuLVx1MDAzZWhhbmRsZSkgPT0gMCkge1xuIDkxNDpcdFx0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwmIzM0O0tleSBub2RlIGlkIGNhbm5vdCBiZSB6ZXJvXCYjMzQ7KTtcbiA5MTU6XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA5MTY6XHRcdFx0fVxuIDkxNzpcdFxuIDkxODpcdFx0XHRpZiAoKG4tXHUwMDNlZmxhZ3MgXiB1c2VyZmxhZ3MpIFx1MDAyNlxuIDkxOTpcdFx0XHQgICAgfihUQ0FfQ0xTX0ZMQUdTX0lOX0hXIHwgVENBX0NMU19GTEFHU19OT1RfSU5fSFcpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDk6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg0MAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIHUzMiBUcmFmZmljIENsYXNzaWZpZXIgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIG5ldyBwYXRjaCBpbiBmcm9udCBvZiBtZSwgYW5kIGl0IGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGB1MzJgIHRyYWZmaWMgY2xhc3NpZmllciDigJMgc3BlY2lmaWNhbGx5LCB0aGUgYHN0cnVjdCB0Y191MzJfc2VsYCBzdHJ1Y3R1cmUsIHJlcHJlc2VudGVkIGJ5IGBzYCBoZXJlLiBUaGUga2V5IGFkZGl0aW9uIGlzIHRoaXMgY2hlY2s6IGBzLSZndDtvZmZzaGlmdCAmZ3Q7PSAxNmAuIElmIHRoYXQgY29uZGl0aW9uIGlzIHRydWUsIHdlIHJldHVybiBgLUVJTlZBTGAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHJlY29nbml6ZSB0aGlzIGFzIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgZml4LCBvciBhdCB0aGUgdmVyeSBsZWFzdCwgYSByZXN0cmljdGlvbiBvbiBob3cgdGhlIGNsYXNzaWZpZXIgb3BlcmF0ZXMuCgpHaXZlbiB0aGF0IGl0JiMzOTtzIGEgY2hhbmdlIHdpdGhpbiB0aGUgYGNsc191MzJgIG1vZHVsZSwgYW5kIHRoYXQgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGFjY2Vzc2libGUgdmlhIE5ldGxpbmsgKGB0YyBmaWx0ZXIgYWRkIC4uLiB1MzJgKSwgdGhpcyBzY3JlYW1zICYjMzQ7ZnV6eiBtZSEmIzM0OyB0byBtZS4gVGhhdCYjMzk7cyBteSBpbml0aWFsIHRob3VnaHQuIFdlIG5lZWQgdG8gdGhyb3cgZXZlcnl0aGluZyB3ZSBjYW4gYXQgdGhpcyB0aHJvdWdoIGB0Y2AgY29tbWFuZHMgYW5kIHNlZSBpZiB3ZSBjYW4gdHJpZ2dlciBhbnkgdW5leHBlY3RlZCBiZWhhdmlvci4KCk5vdywgbGV0JiMzOTtzIHplcm8gaW4gb24gdGhlIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQuIE15IGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIGB1MzJfY2hhbmdlYCBhbmQgSSBuZWVkIHRvIGNoZWNrIHdoZXJlIGBvZmZzaGlmdGAgaXMgdXNlZC4gSSB0aGluayB0aGVyZSBtaWdodCBiZSBhbiBpc3N1ZSB0aGF0IHRoZSBwYXRjaCBwcmV2ZW50cyBhbmQgdGhhdCBtaWdodCBiZSBzb21ldGhpbmcgaW4gYHUzMl9jbGFzc2lmeWAgb3IgcG90ZW50aWFsbHkgYHUzMl9zZXRfcGFybXNgIG9yIG90aGVyIGZ1bmN0aW9ucyB0aGF0IHJlbHkgb24gb3Igc2V0IGBvZmZzaGlmdGAuIExldCBtZSBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIGV4YWN0bHkgd2hlcmUgdGhpcyBgb2Zmc2hpZnRgIGZpZWxkIGlzIGJlaW5nIHV0aWxpemVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGlzIG5ldyBjb25zdHJhaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwOTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvZmZzaGlmdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9jbHNfdTMyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2Nsc191MzIuYz0xMTQ9VENfSU5ESVJFQ1RfU0NPUEUgaW50IHUzMl9jbGFzc2lmeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9zY2hlZC9jbHNfdTMyLmMtMjM2LVx0XHRcdFx0b2ZmMiAmIzQzOz0gbnRvaHMobi1cdTAwM2VzZWwub2ZmbWFzayBcdTAwMjYgKmRhdGEpIFx1MDAzZVx1MDAzZVxubmV0L3NjaGVkL2Nsc191MzIuYzoyMzc6XHRcdFx0XHRcdG4tXHUwMDNlc2VsLm9mZnNoaWZ0O1xubmV0L3NjaGVkL2Nsc191MzIuYy0yMzgtXHRcdFx0fVxuLS1cbm5ldC9zY2hlZC9jbHNfdTMyLmM9ODcyPXN0YXRpYyBpbnQgdTMyX2NoYW5nZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICppbl9za2IsXG4tLVxubmV0L3NjaGVkL2Nsc191MzIuYy0xMTA5LVxubmV0L3NjaGVkL2Nsc191MzIuYzoxMTEwOlx0aWYgKHMtXHUwMDNlb2Zmc2hpZnQgXHUwMDNlPSAxNikge1xubmV0L3NjaGVkL2Nsc191MzIuYy0xMTExLVx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLFxubmV0L3NjaGVkL2Nsc191MzIuYzoxMTEyOlx0XHRcdFx0ICAgXCYjMzQ7b2Zmc2hpZnQgbXVzdCBiZSBsZXNzIHRoYW4gMTZcJiMzNDspO1xubmV0L3NjaGVkL2Nsc191MzIuYy0xMTEzLVx0XHRlcnIgPSAtRUlOVkFMO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwOTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjU5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBJbnRlZ2VyIE92ZXJmbG93IGluIGB1MzJfY2xhc3NpZnlgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHNuaXBwZXQgZnJvbSBgdTMyX2NsYXNzaWZ5YDoKCmBgYGMKCQkJCW9mZjIgJiM0Mzs9IG50b2hzKG4tJmd0O3NlbC5vZmZtYXNrICZhbXA7ICpkYXRhKSAmZ3Q7Jmd0OwoJCQkJCW4tJmd0O3NlbC5vZmZzaGlmdDsKYGBgCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGUgcmlnaHQtc2hpZnQgb3BlcmF0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIGBuLSZndDtzZWwub2Zmc2hpZnRgIHZhbHVlLCBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIHVuZGVmaW5lZCBiZWhhdmlvci4gSWYgYG9mZnNoaWZ0YCBpcyAxNiBvciBncmVhdGVyLCBzaGlmdGluZyBhIDE2LWJpdCB2YWx1ZSwgd2hpY2ggaXMgd2hhdCBgbnRvaHNgIHJldHVybnMsIGJ5IDE2IGJpdHMgc2VlbXMgc2tldGNoeS4gQWx0aG91Z2ggYG50b2hzYCByZXR1cm5zIGEgYF9fdTE2YCwgaXQmIzM5O3MgcHJvbW90ZWQgdG8gYW4gYGludGAgaW4gQywgd2hpY2ggb24gYSAzMi1iaXQgc3lzdGVtIHdvdWxkIGJlIGZpbmUgd2l0aCBhIHNoaWZ0IG9mIDE2LCBidXQgaXQmIzM5O3Mgd29ydGggZGlnZ2luZyBpbiB0byB0aGlzLiBJdCBjb3VsZCYjMzk7dmUgYmVlbiBhIHNvdXJjZSBvZiBzdWJ0bGUgaXNzdWVzIG9yIGV2ZW4gb3V0cmlnaHQgaW52YWxpZCBiZWhhdmlvciBkb3duIHRoZSBsaW5lLgoKQWN0dWFsbHksIHRoZSBwcm9tb3Rpb24gdG8gYGludGAgaXMga2V5IGhlcmUuIFNpbmNlIGBudG9oc2AgcmV0dXJucyBgX191MTZgIGFuZCBpdCYjMzk7cyBwcm9tb3RlZCB0byBgaW50YCwgc2hpZnRpbmcgYnkgMTYgYml0cyBpcyBwZXJmZWN0bHkgdmFsaWQgZm9yIGEgMzItYml0IGBpbnRgLCBob3dldmVyLCBJIHdvbmRlciBpZiBhIGxhcmdlciB2YWx1ZSBvZiBgb2Zmc2hpZnRgIG1pZ2h0IHN0aWxsIGNhdXNlIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIGluIGxhdGVyIGNvZGUsIG9yLCBpZiBgb2Zmc2hpZnRgIGlzIGxhcmdlIGVub3VnaCwgcGVyaGFwcyBldmVuIGEgc2hpZnQgYnkgMzIgb3IgbW9yZSBiaXRzLCB3aGljaCAqd291bGQqIGJlIHVuZGVmaW5lZC4gV2FpdCBhIHNlY29uZCwgZGlkbiYjMzk7dCBJIGRlZmluZSB0aGUgdHlwZSBvZiBgb2Zmc2hpZnRgIGluIGBzdHJ1Y3QgdGNfdTMyX3NlbGAgdG8gYmUgYF9fdThgPyBJJiMzOTtkIGJldHRlciBjb25maXJtIHRoYXQgYmVjYXVzZSB0aGF0IHJhZGljYWxseSBjaGFuZ2VzIHRoZSBwb3NzaWJpbGl0aWVzLiBPa2F5LCB0aW1lIHRvIGNoZWNrIGBzdHJ1Y3QgdGNfdTMyX3NlbGAgdG8gZ2V0IHRoZSB3aG9sZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwOTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdHJ1Y3QgdGNfdTMyX3NlbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3BrdF9jbHMuaD02Njk9c3RydWN0IHRjX2Nsc191MzJfa25vZGUge1xuLS1cbmluY2x1ZGUvbmV0L3BrdF9jbHMuaC02NzEtXHRzdHJ1Y3QgdGNmX3Jlc3VsdCAqcmVzO1xuaW5jbHVkZS9uZXQvcGt0X2Nscy5oOjY3MjpcdHN0cnVjdCB0Y191MzJfc2VsICpzZWw7XG5pbmNsdWRlL25ldC9wa3RfY2xzLmgtNjczLVx0dTMyIGhhbmRsZTtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvcGt0X2Nscy5oPTI0MT1zdHJ1Y3QgdGNfdTMyX2tleSB7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L3BrdF9jbHMuaC0yNDctXG5pbmNsdWRlL3VhcGkvbGludXgvcGt0X2Nscy5oOjI0ODpzdHJ1Y3QgdGNfdTMyX3NlbCB7XG5pbmNsdWRlL3VhcGkvbGludXgvcGt0X2Nscy5oLTI0OS1cdC8qIE5ldyBtZW1iZXJzIE1VU1QgYmUgYWRkZWQgd2l0aGluIHRoZSBfX3N0cnVjdF9ncm91cCgpIG1hY3JvIGJlbG93LiAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwOTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTUwCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIGB0Y191MzJfc2VsYCBTdHJ1Y3R1cmUqKgoKT2theSwgdGltZSB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgYHRjX3UzMl9zZWxgIHN0cnVjdHVyZS4gTGV0JiMzOTtzIHB1bGwgdXAgdGhlIGRlZmluaXRpb24gZnJvbSBgaW5jbHVkZS91YXBpL2xpbnV4L3BrdF9jbHMuaGAuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGlzIHRoaW5nIGlzIGRlZmluZWQsIHNwZWNpZmljYWxseSBob3cgc2VsZWN0b3JzIHdvcmsuIEkmIzM5O20gcHJpbWFyaWx5IGludGVyZXN0ZWQgaW4gaG93IHRoZSBtYXRjaCBjcml0ZXJpYSBhcmUgY29uc3RydWN0ZWQgYW5kIGFwcGxpZWQgYXQgYSBsb3cgbGV2ZWwgd2l0aGluIHRoZSBVMzIgY2xhc3NpZmllci4gVGhlIHNwZWNpZmljIGRldGFpbHMgd2lsbCB0ZWxsIG1lIHdoYXQgdGhlIGxpbWl0YXRpb25zIGFyZSBpbiBob3cgY29tcGxleCBtYXRjaGVzIGNhbiBiZSBwZXJmb3JtZWQsIGFuZCB3aGF0IG9wdGlvbnMgdGhlcmUgYXJlIGZvciBvcHRpbWl6aW5nIHRoZSBtYXRjaGluZyBwcm9jZXNzIGl0c2VsZi4gR290dGEgY29uc2lkZXIgdGhpbmdzIGxpa2UgcG90ZW50aWFsIGNvbmZsaWN0cyBiZXR3ZWVuIHNlbGVjdG9ycywgdGhlIGltcGFjdCBvZiBtYXNrIHZhbHVlcywgYW5kIHRoZSBvdmVyYWxsIGVmZmljaWVuY3kgb2YgdGhlIHNlbGVjdGlvbiBhbGdvcml0aG0sIGJlY2F1c2UgSSBrbm93IHRoYXQmIzM5O3Mgd2hlcmUgdGhlIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIGNhbiBvZnRlbiBoaWRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwOTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luY2x1ZGUvdWFwaS9saW51eC9wa3RfY2xzLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI0MDpcdFxuIDI0MTpcdHN0cnVjdCB0Y191MzJfa2V5IHtcbiAyNDI6XHRcdF9fYmUzMlx0XHRtYXNrO1xuIDI0MzpcdFx0X19iZTMyXHRcdHZhbDtcbiAyNDQ6XHRcdGludFx0XHRvZmY7XG4gMjQ1Olx0XHRpbnRcdFx0b2ZmbWFzaztcbiAyNDY6XHR9O1xuIDI0NzpcdFxuIDI0ODpcdHN0cnVjdCB0Y191MzJfc2VsIHtcbiAyNDk6XHRcdC8qIE5ldyBtZW1iZXJzIE1VU1QgYmUgYWRkZWQgd2l0aGluIHRoZSBfX3N0cnVjdF9ncm91cCgpIG1hY3JvIGJlbG93LiAqL1xuIDI1MDpcdFx0X19zdHJ1Y3RfZ3JvdXAodGNfdTMyX3NlbF9oZHIsIGhkciwgLyogbm8gYXR0cnMgKi8sXG4gMjUxOlx0XHRcdHVuc2lnbmVkIGNoYXJcdFx0ZmxhZ3M7XG4gMjUyOlx0XHRcdHVuc2lnbmVkIGNoYXJcdFx0b2Zmc2hpZnQ7XG4gMjUzOlx0XHRcdHVuc2lnbmVkIGNoYXJcdFx0bmtleXM7XG4gMjU0Olx0XG4gMjU1Olx0XHRcdF9fYmUxNlx0XHRcdG9mZm1hc2s7XG4gMjU2Olx0XHRcdF9fdTE2XHRcdFx0b2ZmO1xuIDI1NzpcdFx0XHRzaG9ydFx0XHRcdG9mZm9mZjtcbiAyNTg6XHRcbiAyNTk6XHRcdFx0c2hvcnRcdFx0XHRob2ZmO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwOTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDgyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBWdWxuZXJhYmlsaXR5IGluIE5ldHdvcmsgUGFja2V0IENsYXNzaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IHNlZSBhIHBvdGVudGlhbCBpc3N1ZSB3aXRoIGhvdyBgb2Zmc2hpZnRgIGlzIGJlaW5nIHVzZWQuIEl0JiMzOTtzIGFuIGB1bnNpZ25lZCBjaGFyYCwgbWVhbmluZyBpdCBjYW4gaG9sZCB2YWx1ZXMgdXAgdG8gMjU1LiBCdXQgaW4gdGhlIGB1MzJfY2xhc3NpZnlgIGZ1bmN0aW9uLCB3ZSBoYXZlIHRoaXMgc25pcHBldDoKCmBgYGMKCQkJCW9mZjIgJiM0Mzs9IG50b2hzKG4tJmd0O3NlbC5vZmZtYXNrICZhbXA7ICpkYXRhKSAmZ3Q7Jmd0OwoJCQkJCW4tJmd0O3NlbC5vZmZzaGlmdDsKYGBgCgpIZXJlJiMzOTtzIHRoZSBwcm9ibGVtLiAgSWYgYG9mZnNoaWZ0YCBzb21laG93IGVuZHMgdXAgYmVpbmcgMzIgb3IgZ3JlYXRlciwgc2hpZnRpbmcgYW4gYGludGAgKHdoaWNoIGlzIHdoYXQgYG50b2hzKG4tJmd0O3NlbC5vZmZtYXNrICZhbXA7ICpkYXRhKWAgbGlrZWx5IGV2YWx1YXRlcyB0bykgYnkgMzIgb3IgbW9yZSBiaXRzIGlzICp1bmRlZmluZWQgYmVoYXZpb3IqIGluIEMuIFRoaXMgaXMgYSB2ZXJ5IGNyaXRpY2FsIGNvbmNlcm4uIFdoaWxlIGl0IG1pZ2h0IG5vdCBjcmFzaCBpbW1lZGlhdGVseSwgaXQgaW50cm9kdWNlcyB1bnByZWRpY3RhYmxlIHJlc3VsdHMgYW5kIG9wZW5zIHRoZSBkb29yIGZvciBleHBsb2l0YWJsZSB2dWxuZXJhYmlsaXRpZXMsIGVzcGVjaWFsbHkgaW4gYSBuZXR3b3JrIGNvbnRleHQuCgpUaGUgcGF0Y2ggSSYjMzk7bSByZXZpZXdpbmcgYXBwZWFycyB0byBhZGRyZXNzIHRoaXMgZGlyZWN0bHkgYnkgcmVzdHJpY3RpbmcgYG9mZnNoaWZ0YCB0byBiZSBsZXNzIHRoYW4gMTYuIFRoYXQmIzM5O3MgYSBzb2xpZCBmaXgsIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcHJldmVudCB0aGUgdW5kZWZpbmVkIGJlaGF2aW9yLiBJdCBtZWFucyB3ZSYjMzk7cmUgdHJhZGluZyBvZmYgYSBsaXR0bGUgYml0IG9mIGZsZXhpYmlsaXR5IGluIHRoZSBjbGFzc2lmaWNhdGlvbiBsb2dpYyBmb3IgbXVjaCBtb3JlIHJvYnVzdCBhbmQgcHJlZGljdGFibGUgYmVoYXZpb3IuIEdpdmVuIHRoZSBwb3RlbnRpYWwgaW1wYWN0LCB0aGlzIGlzIGRlZmluaXRlbHkgYSBnb29kIGNoYW5nZS4KCk5vdywgbXkgbmV4dCB0aG91Z2h0IGlzLCB3ZSBhYnNvbHV0ZWx5IG5lZWQgdG8gZnV6eiBgdTMyX2NoYW5nZWAgYW5kIGB1MzJfY2xhc3NpZnlgIHdpdGggYSBmb2N1c2VkIGFwcHJvYWNoLiAgV2Ugc2hvdWxkIGNyZWF0ZSBmdXp6IHRhcmdldHMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIHByb2JlIHRoZSBsaW1pdHMgb2YgdGhlc2UgZnVuY3Rpb25zLCB0ZXN0aW5nIGVkZ2UgY2FzZXMgYW5kIHRyeWluZyB0byB0cmlnZ2VyIHRoZSBjb25kaXRpb25zIHRoYXQgdGhlIHBhdGNoIGlzIG1lYW50IHRvIHByZXZlbnQuIFRoaXMgaXMgYSBtdXN0LgoKRmluYWxseSwgbGV0JiMzOTtzIHZlcmlmeSB0aGF0IHdlIGhhdmUgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzZXQgdG8gcmVwbGljYXRlIGFuZCB0ZXN0IHRoaXMgYmVoYXZpb3IuIFdlJiMzOTtyZSBnb2luZyB0byBuZWVkIGBDT05GSUdfTkVUX1NDSEVEYCBhbmQgYENPTkZJR19ORVRfQ0xTX1UzMmAgZW5hYmxlZCB0byBydW4gdGhlc2UgdGVzdHMuIExldCBtZSBkb3VibGUtY2hlY2sgdGhhdCBjb25maWcgbmFtZSByZWFsbHkgcXVpY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfQ0xTX1UzMiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTUwNj1jb25maWcgTkVUX0NMU19GV1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTUxNS1cbm5ldC9zY2hlZC9LY29uZmlnOjUxNjpjb25maWcgTkVUX0NMU19VMzJcbm5ldC9zY2hlZC9LY29uZmlnLTUxNy1cdHRyaXN0YXRlIFwmIzM0O1VuaXZlcnNhbCAzMmJpdCBjb21wYXJpc29ucyB3LyBoYXNoaW5nIChVMzIpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4MTcKCQkJCQkJCW91dHB1dDogMTE2CgkJCQkJCQl0aG91Z2h0czogMTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhhdC4KCioqQW5hbHl6aW5nIHRoZSBVMzIgQ2xhc3NpZmllciBQYXRjaCoqCgpSaWdodCwgc28gdGhpcyBwYXRjaCBpcyBhbGwgYWJvdXQgdGhlIGBORVRfQ0xTX1UzMmAgY2xhc3NpZmllci4gVGhhdCYjMzk7cyB0aGUga2V5IGhlcmUuIFRoZSBmb2N1cyBpcyBkZWZpbml0ZWx5IG9uIGB1MzJfY2hhbmdlYCBhbmQgYHUzMl9jbGFzc2lmeWAuIFRoZSBjb3JlIGlzc3VlIGlzIGEgcG90ZW50aWFsIHVuZGVmaW5lZCBiZWhhdmlvciBhcmlzaW5nIGZyb20gYW4gb3V0LW9mLWJvdW5kcyBzaGlmdCBvcGVyYXRpb24sIHNwZWNpZmljYWxseSB3aXRoIGBvZmZzaGlmdGAsIHdpdGhpbiB0aGUgYHUzMl9jbGFzc2lmeWAgZnVuY3Rpb24uIFRoZSBwYXRjaCBhZGRyZXNzZXMgdGhpcyBieSBpbXBsZW1lbnRpbmcgYSBib3VuZHMgY2hlY2sgd2l0aGluIGB1MzJfY2hhbmdlYC4gVGhpcyBwcmV2ZW50cyB0aGUgcHJvYmxlbWF0aWMgc2hpZnQgZnJvbSBoYXBwZW5pbmcgaW4gdGhlIGZpcnN0IHBsYWNlLCByZXNvbHZpbmcgdGhlIHVuZGVmaW5lZCBiZWhhdmlvciByaXNrLiBGcm9tIGEgcHJhY3RpY2FsIHBlcnNwZWN0aXZlLCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIHVzZXItYWNjZXNzaWJsZSB0cmFmZmljIGNsYXNzaWZpZXIsIGFjY2Vzc2libGUgdmlhIG5ldGxpbmsuIFRoZSBwcmltYXJ5IGNvbmZpZyBpcyBgTkVUX0NMU19VMzJgLCBzbyBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIGZvciBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMsIGJ1dCBJIGJlbGlldmUgdGhhdCBpcyB0aGUgcmVsZXZhbnQgY2hlY2suIE5vdyBsZXQmIzM5O3MgZ2V0IHRoZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwOTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0NMU19VMzImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1MzJfY2hhbmdlJiMzNDssCiAgICAmIzM0O3UzMl9jbGFzc2lmeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGZvciBgb2Zmc2hpZnRgIGluIGB1MzJfY2hhbmdlYCB0byBwcmV2ZW50IGEgcG90ZW50aWFsIHVuZGVmaW5lZCBiZWhhdmlvciAoc2hpZnQgb3V0IG9mIGJvdW5kcykgaW4gYHUzMl9jbGFzc2lmeWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdTMyIHRyYWZmaWMgY2xhc3NpZmllciB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIG5ldGxpbmsuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9DTFNfVTMyJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dTMyX2NoYW5nZSYjMzQ7LAogICAgJiMzNDt1MzJfY2xhc3NpZnkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgYG9mZnNoaWZ0YCBpbiBgdTMyX2NoYW5nZWAgdG8gcHJldmVudCBhIHBvdGVudGlhbCB1bmRlZmluZWQgYmVoYXZpb3IgKHNoaWZ0IG91dCBvZiBib3VuZHMpIGluIGB1MzJfY2xhc3NpZnlgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHUzMiB0cmFmZmljIGNsYXNzaWZpZXIgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBuZXRsaW5rLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjRUMDg6NTk6NTIuNjk1NzMyOTM1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcyNjUyNDAyMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0NMU19VMzJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1MzJfY2hhbmdlXCIsXG4gICAgXCJ1MzJfY2xhc3NpZnlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGZvciBgb2Zmc2hpZnRgIGluIGB1MzJfY2hhbmdlYCB0byBwcmV2ZW50IGEgcG90ZW50aWFsIHVuZGVmaW5lZCBiZWhhdmlvciAoc2hpZnQgb3V0IG9mIGJvdW5kcykgaW4gYHUzMl9jbGFzc2lmeWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdTMyIHRyYWZmaWMgY2xhc3NpZmllciB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIG5ldGxpbmsuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjU5OjUyLjY5NTczODY2NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIwNzEzODc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgM2M2NGVkNDI0ZWUzOWZjZWZiZDg0YTE3NzZjMTJkZmJiNGU0YjA2NlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAyNCAwODo1OTo1MCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvY2xzX3UzMi5jIGIvbmV0L3NjaGVkL2Nsc191MzIuY1xcbmluZGV4IDhmMzBjYzgyMTgxZDljLi5hYzk4YjFjMjE0NGE3OCAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvY2xzX3UzMi5jXFxuKysrIGIvbmV0L3NjaGVkL2Nsc191MzIuY1xcbkBAIC0xMTA3LDYgKzExMDcsMTMgQEAgc3RhdGljIGludCB1MzJfY2hhbmdlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKmluX3NrYixcXG4gXFx0XFx0Z290byBlcnJpZHI7XFxuIFxcdH1cXG4gXFxuK1xcdGlmIChzLVxcdTAwM2VvZmZzaGlmdCBcXHUwMDNlPSAxNikge1xcbitcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLFxcbitcXHRcXHRcXHRcXHQgICBcXFwib2Zmc2hpZnQgbXVzdCBiZSBsZXNzIHRoYW4gMTZcXFwiKTtcXG4rXFx0XFx0ZXJyID0gLUVJTlZBTDtcXG4rXFx0XFx0Z290byBlcnJpZHI7XFxuK1xcdH1cXG4rXFxuIFxcdG4gPSBremFsbG9jX2ZsZXgoKm4sIHNlbC5rZXlzLCBzLVxcdTAwM2Vua2V5cyk7XFxuIFxcdGlmIChuID09IE5VTEwpIHtcXG4gXFx0XFx0ZXJyID0gLUVOT0JVRlM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjU5OjUzLjMxNzE0NDI3M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ2NjQzODE3OTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9DTFNfVTMyXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidTMyX2NoYW5nZVwiLFxuICAgIFwidTMyX2NsYXNzaWZ5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgYG9mZnNoaWZ0YCBpbiBgdTMyX2NoYW5nZWAgdG8gcHJldmVudCBhIHBvdGVudGlhbCB1bmRlZmluZWQgYmVoYXZpb3IgKHNoaWZ0IG91dCBvZiBib3VuZHMpIGluIGB1MzJfY2xhc3NpZnlgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHUzMiB0cmFmZmljIGNsYXNzaWZpZXIgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBuZXRsaW5rLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDNjNjRlZDQyNGVlMzlmY2VmYmQ4NGExNzc2YzEyZGZiYjRlNGIwNjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAyNCAwODo1OTo1MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfdTMyLmMgYi9uZXQvc2NoZWQvY2xzX3UzMi5jXG5pbmRleCA4ZjMwY2M4MjE4MWQ5Yy4uYWM5OGIxYzIxNDRhNzggMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvY2xzX3UzMi5jXG4rKysgYi9uZXQvc2NoZWQvY2xzX3UzMi5jXG5AQCAtMTEwNyw2ICsxMTA3LDEzIEBAIHN0YXRpYyBpbnQgdTMyX2NoYW5nZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICppbl9za2IsXG4gXHRcdGdvdG8gZXJyaWRyO1xuIFx0fVxuIFxuK1x0aWYgKHMtXHUwMDNlb2Zmc2hpZnQgXHUwMDNlPSAxNikge1xuK1x0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLFxuK1x0XHRcdFx0ICAgXCJvZmZzaGlmdCBtdXN0IGJlIGxlc3MgdGhhbiAxNlwiKTtcbitcdFx0ZXJyID0gLUVJTlZBTDtcbitcdFx0Z290byBlcnJpZHI7XG4rXHR9XG4rXG4gXHRuID0ga3phbGxvY19mbGV4KCpuLCBzZWwua2V5cywgcy1cdTAwM2Vua2V5cyk7XG4gXHRpZiAobiA9PSBOVUxMKSB7XG4gXHRcdGVyciA9IC1FTk9CVUZTO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDg6NTk6NTMuMzE3MTQ1NDUzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTczMTgwNTM2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldyBgY2xzX3UzMi5jYCBQYXRjaCoqXG5cbk9rYXksIEkgc2VlIGEgbmV3IHBhdGNoIHRoYXQncyBiZWVuIGFwcGxpZWQgdG8gYG5ldC9zY2hlZC9jbHNfdTMyLmNgLiBJdCBsb29rcyBsaWtlIHRoZSBtYWluIGNoYW5nZSBpcyBhIG5ldyB2YWxpZGF0aW9uIGNoZWNrIHdpdGhpbiB0aGUgYHUzMl9jaGFuZ2VgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0J3MgY2hlY2tpbmcgaWYgYHMtXHUwMDNlb2Zmc2hpZnRgIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAxNi4gSWYgaXQgaXMsIHRoZW4gdGhlIHBhdGNoIHRocm93cyBhbiBlcnJvciwgc2V0cyBhbiBleHRlbmRlZCBBQ0sgbWVzc2FnZSwgYW5kIGJhaWxzIG91dC4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlOyBhIG5ldyBzYWZldHkgY2hlY2sgaGFzIGJlZW4gaW50cm9kdWNlZC5cblxuSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBuZXcgcmVzdHJpY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBzYCBpcyBwcm9iYWJseSBhIGBzdHJ1Y3QgdGNfdTMyX3NlbGAsIG9yIHNvbWV0aGluZyBjbG9zZWx5IHJlbGF0ZWQsIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZS4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGF0IGBzLVx1MDAzZW9mZnNoaWZ0YCB2YXJpYWJsZSByZXByZXNlbnRzIHdpdGhpbiB0aGF0IHN0cnVjdHVyZSBhbmQgd2h5IHRoaXMgbGltaXQgb2YgMTYgaXMgYmVpbmcgaW1wb3NlZC4gSSdsbCBxdWlja2x5IHJ1biBhIGBncmVwYCBvbiBgdTMyX2NoYW5nZWAgd2l0aGluIGBuZXQvc2NoZWQvY2xzX3UzMi5jYCB0byBzZWUgaWYgSSBjYW4gZ2V0IHNvbWUgcXVpY2sgY29udGV4dCBhcm91bmQgdGhlIHZhcmlhYmxlIGFuZCBpdHMgdXNhZ2UuIFRoaXMgd2lsbCBnaXZlIG1lIGEgbW9yZSBjb25jcmV0ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBsb2dpYyBiZWhpbmQgdGhpcyBuZXcgdmFsaWRhdGlvbiBjaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk0NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjU5OjU5LjA0ODk1MjkxMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODkyNDQ2NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidTMyX2NoYW5nZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvY2xzX3UzMi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9jbHNfdTMyLmM9ODIxPXN0YXRpYyBzdHJ1Y3QgdGNfdV9rbm9kZSAqdTMyX2luaXRfa25vZGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGNmX3Byb3RvICp0cCxcXG4tLVxcbm5ldC9zY2hlZC9jbHNfdTMyLmMtODcxLVxcbm5ldC9zY2hlZC9jbHNfdTMyLmM6ODcyOnN0YXRpYyBpbnQgdTMyX2NoYW5nZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICppbl9za2IsXFxubmV0L3NjaGVkL2Nsc191MzIuYy04NzMtXFx0XFx0ICAgICAgc3RydWN0IHRjZl9wcm90byAqdHAsIHVuc2lnbmVkIGxvbmcgYmFzZSwgdTMyIGhhbmRsZSxcXG4tLVxcbm5ldC9zY2hlZC9jbHNfdTMyLmM9MTQ2NT1zdGF0aWMgc3RydWN0IHRjZl9wcm90b19vcHMgY2xzX3UzMl9vcHMgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfdTMyLmMtMTQ3MC1cXHQuZ2V0XFx0XFx0PVxcdHUzMl9nZXQsXFxubmV0L3NjaGVkL2Nsc191MzIuYzoxNDcxOlxcdC5jaGFuZ2VcXHRcXHQ9XFx0dTMyX2NoYW5nZSxcXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTE0NzItXFx0LmRlbGV0ZVxcdFxcdD1cXHR1MzJfZGVsZXRlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODo1OTo1OS41MzgyMDJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjg5NTAwMjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipEZWNvZGluZyBgc2AgaW4gYHUzMl9jaGFuZ2VgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYHUzMl9jaGFuZ2VgIGZ1bmN0aW9uLiBNeSBwcmltYXJ5IGdvYWwgaGVyZSBpcyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgaW1wbGljYXRpb25zIG9mIHRoZSB2YXJpYWJsZSBgc2AuIEl0J3MgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBmdW5jdGlvbiB3b3JrcywgYW5kIHVsdGltYXRlbHkgaG93IHRoZSBzeXN0ZW0gYmVoYXZlcy4gTGV0J3Mgc3RhcnQgYnkgaWRlbnRpZnlpbmcgaXQncyB1c2UgY2FzZSwgYW5kIHRyYWNpbmcgaXRzIGltcGFjdC4gSSdsbCByZWFkIHRocm91Z2ggdGhlIGNvZGUgbm93IGFuZCB0cnkgdG8gbWFwIG91dCBob3cgdGhhdCB2YXJpYWJsZSBpcyB1c2VkLiBUaGlzIHNob3VsZCBiZSBzdHJhaWdodGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MTcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwOTowMDowMy4yMjc3MDQ1NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MTE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvY2xzX3UzMi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwOTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEwOTA6XFx0XFx0fSBlbHNlIHtcXG4xMDkxOlxcdFxcdFxcdC8qIFRoZSB1c2VyIGRpZCBub3QgZ2l2ZSB1cyBhIGhhbmRsZTsgbGV0cyBqdXN0IGdlbmVyYXRlIG9uZVxcbjEwOTI6XFx0XFx0XFx0ICogZnJvbSB0aGUgdGFibGUncyBwb29sIG9mIG5vZGVpZHMuXFxuMTA5MzpcXHRcXHRcXHQgKi9cXG4xMDk0OlxcdFxcdFxcdGhhbmRsZSA9IGdlbl9uZXdfa2lkKGh0LCBodGlkKTtcXG4xMDk1OlxcdFxcdH1cXG4xMDk2OlxcdFxcbjEwOTc6XFx0XFx0aWYgKHRiW1RDQV9VMzJfU0VMXSA9PSBOVUxMKSB7XFxuMTA5ODpcXHRcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcXFwiU2VsZWN0b3Igbm90IHNwZWNpZmllZFxcXCIpO1xcbjEwOTk6XFx0XFx0XFx0ZXJyID0gLUVJTlZBTDtcXG4xMTAwOlxcdFxcdFxcdGdvdG8gZXJyaWRyO1xcbjExMDE6XFx0XFx0fVxcbjExMDI6XFx0XFxuMTEwMzpcXHRcXHRzID0gbmxhX2RhdGEodGJbVENBX1UzMl9TRUxdKTtcXG4xMTA0OlxcdFxcdHNlbF9zaXplID0gc3RydWN0X3NpemUocywga2V5cywgcy1cXHUwMDNlbmtleXMpO1xcbjExMDU6XFx0XFx0aWYgKG5sYV9sZW4odGJbVENBX1UzMl9TRUxdKSBcXHUwMDNjIHNlbF9zaXplKSB7XFxuMTEwNjpcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbjExMDc6XFx0XFx0XFx0Z290byBlcnJpZHI7XFxuMTEwODpcXHRcXHR9XFxuMTEwOTpcXHRcXG4xMTEwOlxcdFxcdGlmIChzLVxcdTAwM2VvZmZzaGlmdCBcXHUwMDNlPSAxNikge1xcbjExMTE6XFx0XFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjayxcXG4xMTEyOlxcdFxcdFxcdFxcdFxcdCAgIFxcXCJvZmZzaGlmdCBtdXN0IGJlIGxlc3MgdGhhbiAxNlxcXCIpO1xcbjExMTM6XFx0XFx0XFx0ZXJyID0gLUVJTlZBTDtcXG4xMTE0OlxcdFxcdFxcdGdvdG8gZXJyaWRyO1xcbjExMTU6XFx0XFx0fVxcbjExMTY6XFx0XFxuMTExNzpcXHRcXHRuID0ga3phbGxvY19mbGV4KCpuLCBzZWwua2V5cywgcy1cXHUwMDNlbmtleXMpO1xcbjExMTg6XFx0XFx0aWYgKG4gPT0gTlVMTCkge1xcbjExMTk6XFx0XFx0XFx0ZXJyID0gLUVOT0JVRlM7XFxuMTEyMDpcXHRcXHRcXHRnb3RvIGVycmlkcjtcXG4xMTIxOlxcdFxcdH1cXG4xMTIyOlxcdFxcbjExMjM6XFx0I2lmZGVmIENPTkZJR19DTFNfVTMyX1BFUkZcXG4xMTI0OlxcdFxcdG4tXFx1MDAzZXBmID0gX19hbGxvY19wZXJjcHUoc3RydWN0X3NpemUobi1cXHUwMDNlcGYsIGtjbnRzLCBzLVxcdTAwM2Vua2V5cyksXFxuMTEyNTpcXHRcXHRcXHRcXHQgICAgICAgX19hbGlnbm9mX18oc3RydWN0IHRjX3UzMl9wY250KSk7XFxuMTEyNjpcXHRcXHRpZiAoIW4tXFx1MDAzZXBmKSB7XFxuMTEyNzpcXHRcXHRcXHRlcnIgPSAtRU5PQlVGUztcXG4xMTI4OlxcdFxcdFxcdGdvdG8gZXJyZnJlZTtcXG4xMTI5OlxcdFxcdH1cXG4xMTMwOlxcdCNlbmRpZlxcbjExMzE6XFx0XFxuMTEzMjpcXHRcXHR1bnNhZmVfbWVtY3B5KFxcdTAwMjZuLVxcdTAwM2VzZWwsIHMsIHNlbF9zaXplLFxcbjExMzM6XFx0XFx0XFx0ICAgICAgLyogQSBjb21wb3NpdGUgZmxleC1hcnJheSBzdHJ1Y3R1cmUgZGVzdGluYXRpb24sXFxuMTEzNDpcXHRcXHRcXHQgICAgICAgKiB3aGljaCB3YXMgY29ycmVjdGx5IHNpemVkIHdpdGggc3RydWN0X3NpemUoKSxcXG4xMTM1OlxcdFxcdFxcdCAgICAgICAqIGJvdW5kcy1jaGVja2VkIGFnYWluc3QgbmxhX2xlbigpLCBhbmQgYWxsb2NhdGVkXFxuMTEzNjpcXHRcXHRcXHQgICAgICAgKiBhYm92ZS4gKi8pO1xcbjExMzc6XFx0XFx0UkNVX0lOSVRfUE9JTlRFUihuLVxcdTAwM2VodF91cCwgaHQpO1xcbjExMzg6XFx0XFx0bi1cXHUwMDNlaGFuZGxlID0gaGFuZGxlO1xcbjExMzk6XFx0XFx0bi1cXHUwMDNlZnNoaWZ0ID0gcy1cXHUwMDNlaG1hc2sgPyBmZnMobnRvaGwocy1cXHUwMDNlaG1hc2spKSAtIDEgOiAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwOTowMDowMy4yMjc4NjcxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg0NTA3MjQwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQ6XG5cbioqRGVjb2RpbmcgVGhpcyBWYXJpYWJsZSoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIGBzYCBhbmQgaXQncyBhc3NpZ25lZCB0byBgbmxhX2RhdGEodGJbVENBX1UzMl9TRUxdKWAuIFJpZ2h0IGF3YXksIHRoZSBgbmxhX2RhdGFgIHBhcnQgbWFrZXMgbWUgdGhpbmsgdGhpcyBpcyBOZXR3b3JrIExpbmsgQXR0cmlidXRlIChOTEEpIGRhdGEsIHdoaWNoIGlzIGNvbW1vbi4gYHRiYCBsaWtlbHkgcmVmZXJzIHRvIGEgdGFibGUgb3IgYW4gYXJyYXkgY29udGFpbmluZyBhdHRyaWJ1dGUgZGF0YSwgcG90ZW50aWFsbHkgd2l0aGluIGEgTmV0bGluayBtZXNzYWdlLiBgVENBX1UzMl9TRUxgLi4uIHRoYXQncyBhIGtleS4gVGhpcyBsaWtlbHkgc3BlY2lmaWVzIGEgXCJzZWxlY3RvclwiIG9yIGEgc3BlY2lmaWMgZWxlbWVudCB3aXRoaW4gdGhhdCBhcnJheSwgYW5kIHRoZSBcIlUzMlwiIHN1Z2dlc3RzIHdlJ3JlIGRlYWxpbmcgd2l0aCBhbiB1bnNpZ25lZCAzMi1iaXQgaW50ZWdlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgd2hhdCBzdHJ1Y3R1cmUgKmV4YWN0bHkqIHRoYXQgYHNgIHZhcmlhYmxlIHJlcHJlc2VudHMuIEl0J3MgbGlrZWx5IGEgcG9pbnRlciBvZiBzb21lIHNvcnQsIHBlcmhhcHMgdG8gYSBzcGVjaWZpYyBmaWVsZCBvciBzdHJ1Y3R1cmUgd2l0aGluIHRoYXQgTmV0bGluayBhdHRyaWJ1dGUuIEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSBkZWZpbml0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGBUQ0FfVTMyX1NFTGAgZW51bSB2YWx1ZSB0byBrbm93IHdoYXQgaXQgaXMgcG9pbnRpbmcgdG8uIEknbSBnb2luZyB0byBkZWx2ZSBpbnRvIHRoZSByZWxldmFudCBoZWFkZXIgZmlsZXMgb3IgZGF0YSBzdHJ1Y3R1cmVzLCB0byB1bmRlcnN0YW5kIHRoZSBgdGJbVENBX1UzMl9TRUxdYCBzdHJ1Y3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2OTMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA5OjAwOjA5LjA3Mjk0MjE5OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1MjA4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvY2xzX3UzMi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDg3MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDg3MDpcXHR9XFxuIDg3MTpcXHRcXG4gODcyOlxcdHN0YXRpYyBpbnQgdTMyX2NoYW5nZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICppbl9za2IsXFxuIDg3MzpcXHRcXHRcXHQgICAgICBzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgdW5zaWduZWQgbG9uZyBiYXNlLCB1MzIgaGFuZGxlLFxcbiA4NzQ6XFx0XFx0XFx0ICAgICAgc3RydWN0IG5sYXR0ciAqKnRjYSwgdm9pZCAqKmFyZywgdTMyIGZsYWdzLFxcbiA4NzU6XFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbiA4NzY6XFx0e1xcbiA4Nzc6XFx0XFx0c3RydWN0IHRjX3VfY29tbW9uICp0cF9jID0gdHAtXFx1MDAzZWRhdGE7XFxuIDg3ODpcXHRcXHRzdHJ1Y3QgdGNfdV9obm9kZSAqaHQ7XFxuIDg3OTpcXHRcXHRzdHJ1Y3QgdGNfdV9rbm9kZSAqbjtcXG4gODgwOlxcdFxcdHN0cnVjdCB0Y191MzJfc2VsICpzO1xcbiA4ODE6XFx0XFx0c3RydWN0IG5sYXR0ciAqb3B0ID0gdGNhW1RDQV9PUFRJT05TXTtcXG4gODgyOlxcdFxcdHN0cnVjdCBubGF0dHIgKnRiW1RDQV9VMzJfTUFYICsgMV07XFxuIDg4MzpcXHRcXHR1MzIgaHRpZCwgdXNlcmZsYWdzID0gMDtcXG4gODg0OlxcdFxcdHNpemVfdCBzZWxfc2l6ZTtcXG4gODg1OlxcdFxcdGludCBlcnI7XFxuIDg4NjpcXHRcXG4gODg3OlxcdFxcdGlmICghb3B0KSB7XFxuIDg4ODpcXHRcXHRcXHRpZiAoaGFuZGxlKSB7XFxuIDg4OTpcXHRcXHRcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcXFwiRmlsdGVyIGhhbmRsZSByZXF1aXJlcyBvcHRpb25zXFxcIik7XFxuIDg5MDpcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gODkxOlxcdFxcdFxcdH0gZWxzZSB7XFxuIDg5MjpcXHRcXHRcXHRcXHRyZXR1cm4gMDtcXG4gODkzOlxcdFxcdFxcdH1cXG4gODk0OlxcdFxcdH1cXG4gODk1OlxcdFxcbiA4OTY6XFx0XFx0ZXJyID0gbmxhX3BhcnNlX25lc3RlZF9kZXByZWNhdGVkKHRiLCBUQ0FfVTMyX01BWCwgb3B0LCB1MzJfcG9saWN5LFxcbiA4OTc6XFx0XFx0XFx0XFx0XFx0XFx0ICBleHRhY2spO1xcbiA4OTg6XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIDg5OTpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiA5MDA6XFx0XFxuIDkwMTpcXHRcXHRpZiAodGJbVENBX1UzMl9GTEFHU10pIHtcXG4gOTAyOlxcdFxcdFxcdHVzZXJmbGFncyA9IG5sYV9nZXRfdTMyKHRiW1RDQV9VMzJfRkxBR1NdKTtcXG4gOTAzOlxcdFxcdFxcdGlmICghdGNfZmxhZ3NfdmFsaWQodXNlcmZsYWdzKSkge1xcbiA5MDQ6XFx0XFx0XFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXFxcIkludmFsaWQgZmlsdGVyIGZsYWdzXFxcIik7XFxuIDkwNTpcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gOTA2OlxcdFxcdFxcdH1cXG4gOTA3OlxcdFxcdH1cXG4gOTA4OlxcdFxcbiA5MDk6XFx0XFx0biA9ICphcmc7XFxuIDkxMDpcXHRcXHRpZiAobikge1xcbiA5MTE6XFx0XFx0XFx0c3RydWN0IHRjX3Vfa25vZGUgKm5ldztcXG4gOTEyOlxcdFxcbiA5MTM6XFx0XFx0XFx0aWYgKFRDX1UzMl9LRVkobi1cXHUwMDNlaGFuZGxlKSA9PSAwKSB7XFxuIDkxNDpcXHRcXHRcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcXFwiS2V5IG5vZGUgaWQgY2Fubm90IGJlIHplcm9cXFwiKTtcXG4gOTE1OlxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA5MTY6XFx0XFx0XFx0fVxcbiA5MTc6XFx0XFxuIDkxODpcXHRcXHRcXHRpZiAoKG4tXFx1MDAzZWZsYWdzIF4gdXNlcmZsYWdzKSBcXHUwMDI2XFxuIDkxOTpcXHRcXHRcXHQgICAgfihUQ0FfQ0xTX0ZMQUdTX0lOX0hXIHwgVENBX0NMU19GTEFHU19OT1RfSU5fSFcpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA5OjAwOjA5LjA3MzI5NjQ1OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzNDQ5NTg4MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSB1MzIgVHJhZmZpYyBDbGFzc2lmaWVyIENoYW5nZSoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgbmV3IHBhdGNoIGluIGZyb250IG9mIG1lLCBhbmQgaXQgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgYHUzMmAgdHJhZmZpYyBjbGFzc2lmaWVyIOKAkyBzcGVjaWZpY2FsbHksIHRoZSBgc3RydWN0IHRjX3UzMl9zZWxgIHN0cnVjdHVyZSwgcmVwcmVzZW50ZWQgYnkgYHNgIGhlcmUuIFRoZSBrZXkgYWRkaXRpb24gaXMgdGhpcyBjaGVjazogYHMtXHUwMDNlb2Zmc2hpZnQgXHUwMDNlPSAxNmAuIElmIHRoYXQgY29uZGl0aW9uIGlzIHRydWUsIHdlIHJldHVybiBgLUVJTlZBTGAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHJlY29nbml6ZSB0aGlzIGFzIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgZml4LCBvciBhdCB0aGUgdmVyeSBsZWFzdCwgYSByZXN0cmljdGlvbiBvbiBob3cgdGhlIGNsYXNzaWZpZXIgb3BlcmF0ZXMuXG5cbkdpdmVuIHRoYXQgaXQncyBhIGNoYW5nZSB3aXRoaW4gdGhlIGBjbHNfdTMyYCBtb2R1bGUsIGFuZCB0aGF0IHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBhY2Nlc3NpYmxlIHZpYSBOZXRsaW5rIChgdGMgZmlsdGVyIGFkZCAuLi4gdTMyYCksIHRoaXMgc2NyZWFtcyBcImZ1enogbWUhXCIgdG8gbWUuIFRoYXQncyBteSBpbml0aWFsIHRob3VnaHQuIFdlIG5lZWQgdG8gdGhyb3cgZXZlcnl0aGluZyB3ZSBjYW4gYXQgdGhpcyB0aHJvdWdoIGB0Y2AgY29tbWFuZHMgYW5kIHNlZSBpZiB3ZSBjYW4gdHJpZ2dlciBhbnkgdW5leHBlY3RlZCBiZWhhdmlvci5cblxuTm93LCBsZXQncyB6ZXJvIGluIG9uIHRoZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkLiBNeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiBgdTMyX2NoYW5nZWAgYW5kIEkgbmVlZCB0byBjaGVjayB3aGVyZSBgb2Zmc2hpZnRgIGlzIHVzZWQuIEkgdGhpbmsgdGhlcmUgbWlnaHQgYmUgYW4gaXNzdWUgdGhhdCB0aGUgcGF0Y2ggcHJldmVudHMgYW5kIHRoYXQgbWlnaHQgYmUgc29tZXRoaW5nIGluIGB1MzJfY2xhc3NpZnlgIG9yIHBvdGVudGlhbGx5IGB1MzJfc2V0X3Bhcm1zYCBvciBvdGhlciBmdW5jdGlvbnMgdGhhdCByZWx5IG9uIG9yIHNldCBgb2Zmc2hpZnRgLiBMZXQgbWUgZGlnIGludG8gdGhlIGNvZGUgYW5kIHNlZSBleGFjdGx5IHdoZXJlIHRoaXMgYG9mZnNoaWZ0YCBmaWVsZCBpcyBiZWluZyB1dGlsaXplZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBuZXcgY29uc3RyYWludC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg0MCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA5OjAwOjE0LjQxODI1ODc3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTM5ODU0NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib2Zmc2hpZnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL2Nsc191MzIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvY2xzX3UzMi5jPTExND1UQ19JTkRJUkVDVF9TQ09QRSBpbnQgdTMyX2NsYXNzaWZ5KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTIzNi1cXHRcXHRcXHRcXHRvZmYyICs9IG50b2hzKG4tXFx1MDAzZXNlbC5vZmZtYXNrIFxcdTAwMjYgKmRhdGEpIFxcdTAwM2VcXHUwMDNlXFxubmV0L3NjaGVkL2Nsc191MzIuYzoyMzc6XFx0XFx0XFx0XFx0XFx0bi1cXHUwMDNlc2VsLm9mZnNoaWZ0O1xcbm5ldC9zY2hlZC9jbHNfdTMyLmMtMjM4LVxcdFxcdFxcdH1cXG4tLVxcbm5ldC9zY2hlZC9jbHNfdTMyLmM9ODcyPXN0YXRpYyBpbnQgdTMyX2NoYW5nZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICppbl9za2IsXFxuLS1cXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTExMDktXFxubmV0L3NjaGVkL2Nsc191MzIuYzoxMTEwOlxcdGlmIChzLVxcdTAwM2VvZmZzaGlmdCBcXHUwMDNlPSAxNikge1xcbm5ldC9zY2hlZC9jbHNfdTMyLmMtMTExMS1cXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLFxcbm5ldC9zY2hlZC9jbHNfdTMyLmM6MTExMjpcXHRcXHRcXHRcXHQgICBcXFwib2Zmc2hpZnQgbXVzdCBiZSBsZXNzIHRoYW4gMTZcXFwiKTtcXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTExMTMtXFx0XFx0ZXJyID0gLUVJTlZBTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDk6MDA6MTQuOTEyMjU2NTQ4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk5Njg4ODg2NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIEludGVnZXIgT3ZlcmZsb3cgaW4gYHUzMl9jbGFzc2lmeWAqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHNuaXBwZXQgZnJvbSBgdTMyX2NsYXNzaWZ5YDpcblxuYGBgY1xuXHRcdFx0XHRvZmYyICs9IG50b2hzKG4tXHUwMDNlc2VsLm9mZm1hc2sgXHUwMDI2ICpkYXRhKSBcdTAwM2VcdTAwM2Vcblx0XHRcdFx0XHRuLVx1MDAzZXNlbC5vZmZzaGlmdDtcbmBgYFxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGUgcmlnaHQtc2hpZnQgb3BlcmF0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIGBuLVx1MDAzZXNlbC5vZmZzaGlmdGAgdmFsdWUsIGNvdWxkIHBvdGVudGlhbGx5IGxlYWQgdG8gdW5kZWZpbmVkIGJlaGF2aW9yLiBJZiBgb2Zmc2hpZnRgIGlzIDE2IG9yIGdyZWF0ZXIsIHNoaWZ0aW5nIGEgMTYtYml0IHZhbHVlLCB3aGljaCBpcyB3aGF0IGBudG9oc2AgcmV0dXJucywgYnkgMTYgYml0cyBzZWVtcyBza2V0Y2h5LiBBbHRob3VnaCBgbnRvaHNgIHJldHVybnMgYSBgX191MTZgLCBpdCdzIHByb21vdGVkIHRvIGFuIGBpbnRgIGluIEMsIHdoaWNoIG9uIGEgMzItYml0IHN5c3RlbSB3b3VsZCBiZSBmaW5lIHdpdGggYSBzaGlmdCBvZiAxNiwgYnV0IGl0J3Mgd29ydGggZGlnZ2luZyBpbiB0byB0aGlzLiBJdCBjb3VsZCd2ZSBiZWVuIGEgc291cmNlIG9mIHN1YnRsZSBpc3N1ZXMgb3IgZXZlbiBvdXRyaWdodCBpbnZhbGlkIGJlaGF2aW9yIGRvd24gdGhlIGxpbmUuXG5cbkFjdHVhbGx5LCB0aGUgcHJvbW90aW9uIHRvIGBpbnRgIGlzIGtleSBoZXJlLiBTaW5jZSBgbnRvaHNgIHJldHVybnMgYF9fdTE2YCBhbmQgaXQncyBwcm9tb3RlZCB0byBgaW50YCwgc2hpZnRpbmcgYnkgMTYgYml0cyBpcyBwZXJmZWN0bHkgdmFsaWQgZm9yIGEgMzItYml0IGBpbnRgLCBob3dldmVyLCBJIHdvbmRlciBpZiBhIGxhcmdlciB2YWx1ZSBvZiBgb2Zmc2hpZnRgIG1pZ2h0IHN0aWxsIGNhdXNlIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIGluIGxhdGVyIGNvZGUsIG9yLCBpZiBgb2Zmc2hpZnRgIGlzIGxhcmdlIGVub3VnaCwgcGVyaGFwcyBldmVuIGEgc2hpZnQgYnkgMzIgb3IgbW9yZSBiaXRzLCB3aGljaCAqd291bGQqIGJlIHVuZGVmaW5lZC4gV2FpdCBhIHNlY29uZCwgZGlkbid0IEkgZGVmaW5lIHRoZSB0eXBlIG9mIGBvZmZzaGlmdGAgaW4gYHN0cnVjdCB0Y191MzJfc2VsYCB0byBiZSBgX191OGA/IEknZCBiZXR0ZXIgY29uZmlybSB0aGF0IGJlY2F1c2UgdGhhdCByYWRpY2FsbHkgY2hhbmdlcyB0aGUgcG9zc2liaWxpdGllcy4gT2theSwgdGltZSB0byBjaGVjayBgc3RydWN0IHRjX3UzMl9zZWxgIHRvIGdldCB0aGUgd2hvbGUgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY1OSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwOTowMDoyNC44ODExNDgzNTFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NDUwNTIxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdHJ1Y3QgdGNfdTMyX3NlbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9wa3RfY2xzLmg9NjY5PXN0cnVjdCB0Y19jbHNfdTMyX2tub2RlIHtcXG4tLVxcbmluY2x1ZGUvbmV0L3BrdF9jbHMuaC02NzEtXFx0c3RydWN0IHRjZl9yZXN1bHQgKnJlcztcXG5pbmNsdWRlL25ldC9wa3RfY2xzLmg6NjcyOlxcdHN0cnVjdCB0Y191MzJfc2VsICpzZWw7XFxuaW5jbHVkZS9uZXQvcGt0X2Nscy5oLTY3My1cXHR1MzIgaGFuZGxlO1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L3BrdF9jbHMuaD0yNDE9c3RydWN0IHRjX3UzMl9rZXkge1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L3BrdF9jbHMuaC0yNDctXFxuaW5jbHVkZS91YXBpL2xpbnV4L3BrdF9jbHMuaDoyNDg6c3RydWN0IHRjX3UzMl9zZWwge1xcbmluY2x1ZGUvdWFwaS9saW51eC9wa3RfY2xzLmgtMjQ5LVxcdC8qIE5ldyBtZW1iZXJzIE1VU1QgYmUgYWRkZWQgd2l0aGluIHRoZSBfX3N0cnVjdF9ncm91cCgpIG1hY3JvIGJlbG93LiAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwOTowMDoyNS4wNjU2NTgzNjVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIwNjAyNzkxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIGB0Y191MzJfc2VsYCBTdHJ1Y3R1cmUqKlxuXG5Pa2F5LCB0aW1lIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBgdGNfdTMyX3NlbGAgc3RydWN0dXJlLiBMZXQncyBwdWxsIHVwIHRoZSBkZWZpbml0aW9uIGZyb20gYGluY2x1ZGUvdWFwaS9saW51eC9wa3RfY2xzLmhgLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhpcyB0aGluZyBpcyBkZWZpbmVkLCBzcGVjaWZpY2FsbHkgaG93IHNlbGVjdG9ycyB3b3JrLiBJJ20gcHJpbWFyaWx5IGludGVyZXN0ZWQgaW4gaG93IHRoZSBtYXRjaCBjcml0ZXJpYSBhcmUgY29uc3RydWN0ZWQgYW5kIGFwcGxpZWQgYXQgYSBsb3cgbGV2ZWwgd2l0aGluIHRoZSBVMzIgY2xhc3NpZmllci4gVGhlIHNwZWNpZmljIGRldGFpbHMgd2lsbCB0ZWxsIG1lIHdoYXQgdGhlIGxpbWl0YXRpb25zIGFyZSBpbiBob3cgY29tcGxleCBtYXRjaGVzIGNhbiBiZSBwZXJmb3JtZWQsIGFuZCB3aGF0IG9wdGlvbnMgdGhlcmUgYXJlIGZvciBvcHRpbWl6aW5nIHRoZSBtYXRjaGluZyBwcm9jZXNzIGl0c2VsZi4gR290dGEgY29uc2lkZXIgdGhpbmdzIGxpa2UgcG90ZW50aWFsIGNvbmZsaWN0cyBiZXR3ZWVuIHNlbGVjdG9ycywgdGhlIGltcGFjdCBvZiBtYXNrIHZhbHVlcywgYW5kIHRoZSBvdmVyYWxsIGVmZmljaWVuY3kgb2YgdGhlIHNlbGVjdGlvbiBhbGdvcml0aG0sIGJlY2F1c2UgSSBrbm93IHRoYXQncyB3aGVyZSB0aGUgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MgY2FuIG9mdGVuIGhpZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1NTAsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwOTowMDoyOC4yNzE2ODgzOTVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODUyODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5jbHVkZS91YXBpL2xpbnV4L3BrdF9jbHMuaFwiLFxuICBcIkZpcnN0TGluZVwiOiAyNDAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNDA6XFx0XFxuIDI0MTpcXHRzdHJ1Y3QgdGNfdTMyX2tleSB7XFxuIDI0MjpcXHRcXHRfX2JlMzJcXHRcXHRtYXNrO1xcbiAyNDM6XFx0XFx0X19iZTMyXFx0XFx0dmFsO1xcbiAyNDQ6XFx0XFx0aW50XFx0XFx0b2ZmO1xcbiAyNDU6XFx0XFx0aW50XFx0XFx0b2ZmbWFzaztcXG4gMjQ2OlxcdH07XFxuIDI0NzpcXHRcXG4gMjQ4OlxcdHN0cnVjdCB0Y191MzJfc2VsIHtcXG4gMjQ5OlxcdFxcdC8qIE5ldyBtZW1iZXJzIE1VU1QgYmUgYWRkZWQgd2l0aGluIHRoZSBfX3N0cnVjdF9ncm91cCgpIG1hY3JvIGJlbG93LiAqL1xcbiAyNTA6XFx0XFx0X19zdHJ1Y3RfZ3JvdXAodGNfdTMyX3NlbF9oZHIsIGhkciwgLyogbm8gYXR0cnMgKi8sXFxuIDI1MTpcXHRcXHRcXHR1bnNpZ25lZCBjaGFyXFx0XFx0ZmxhZ3M7XFxuIDI1MjpcXHRcXHRcXHR1bnNpZ25lZCBjaGFyXFx0XFx0b2Zmc2hpZnQ7XFxuIDI1MzpcXHRcXHRcXHR1bnNpZ25lZCBjaGFyXFx0XFx0bmtleXM7XFxuIDI1NDpcXHRcXG4gMjU1OlxcdFxcdFxcdF9fYmUxNlxcdFxcdFxcdG9mZm1hc2s7XFxuIDI1NjpcXHRcXHRcXHRfX3UxNlxcdFxcdFxcdG9mZjtcXG4gMjU3OlxcdFxcdFxcdHNob3J0XFx0XFx0XFx0b2Zmb2ZmO1xcbiAyNTg6XFx0XFxuIDI1OTpcXHRcXHRcXHRzaG9ydFxcdFxcdFxcdGhvZmY7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA5OjAwOjI4LjI3MTc3NTIxNVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzYwMjEwMzY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBWdWxuZXJhYmlsaXR5IGluIE5ldHdvcmsgUGFja2V0IENsYXNzaWZpY2F0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBzZWUgYSBwb3RlbnRpYWwgaXNzdWUgd2l0aCBob3cgYG9mZnNoaWZ0YCBpcyBiZWluZyB1c2VkLiBJdCdzIGFuIGB1bnNpZ25lZCBjaGFyYCwgbWVhbmluZyBpdCBjYW4gaG9sZCB2YWx1ZXMgdXAgdG8gMjU1LiBCdXQgaW4gdGhlIGB1MzJfY2xhc3NpZnlgIGZ1bmN0aW9uLCB3ZSBoYXZlIHRoaXMgc25pcHBldDpcblxuYGBgY1xuXHRcdFx0XHRvZmYyICs9IG50b2hzKG4tXHUwMDNlc2VsLm9mZm1hc2sgXHUwMDI2ICpkYXRhKSBcdTAwM2VcdTAwM2Vcblx0XHRcdFx0XHRuLVx1MDAzZXNlbC5vZmZzaGlmdDtcbmBgYFxuXG5IZXJlJ3MgdGhlIHByb2JsZW0uICBJZiBgb2Zmc2hpZnRgIHNvbWVob3cgZW5kcyB1cCBiZWluZyAzMiBvciBncmVhdGVyLCBzaGlmdGluZyBhbiBgaW50YCAod2hpY2ggaXMgd2hhdCBgbnRvaHMobi1cdTAwM2VzZWwub2ZmbWFzayBcdTAwMjYgKmRhdGEpYCBsaWtlbHkgZXZhbHVhdGVzIHRvKSBieSAzMiBvciBtb3JlIGJpdHMgaXMgKnVuZGVmaW5lZCBiZWhhdmlvciogaW4gQy4gVGhpcyBpcyBhIHZlcnkgY3JpdGljYWwgY29uY2Vybi4gV2hpbGUgaXQgbWlnaHQgbm90IGNyYXNoIGltbWVkaWF0ZWx5LCBpdCBpbnRyb2R1Y2VzIHVucHJlZGljdGFibGUgcmVzdWx0cyBhbmQgb3BlbnMgdGhlIGRvb3IgZm9yIGV4cGxvaXRhYmxlIHZ1bG5lcmFiaWxpdGllcywgZXNwZWNpYWxseSBpbiBhIG5ldHdvcmsgY29udGV4dC5cblxuVGhlIHBhdGNoIEknbSByZXZpZXdpbmcgYXBwZWFycyB0byBhZGRyZXNzIHRoaXMgZGlyZWN0bHkgYnkgcmVzdHJpY3RpbmcgYG9mZnNoaWZ0YCB0byBiZSBsZXNzIHRoYW4gMTYuIFRoYXQncyBhIHNvbGlkIGZpeCwgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBwcmV2ZW50IHRoZSB1bmRlZmluZWQgYmVoYXZpb3IuIEl0IG1lYW5zIHdlJ3JlIHRyYWRpbmcgb2ZmIGEgbGl0dGxlIGJpdCBvZiBmbGV4aWJpbGl0eSBpbiB0aGUgY2xhc3NpZmljYXRpb24gbG9naWMgZm9yIG11Y2ggbW9yZSByb2J1c3QgYW5kIHByZWRpY3RhYmxlIGJlaGF2aW9yLiBHaXZlbiB0aGUgcG90ZW50aWFsIGltcGFjdCwgdGhpcyBpcyBkZWZpbml0ZWx5IGEgZ29vZCBjaGFuZ2UuXG5cbk5vdywgbXkgbmV4dCB0aG91Z2h0IGlzLCB3ZSBhYnNvbHV0ZWx5IG5lZWQgdG8gZnV6eiBgdTMyX2NoYW5nZWAgYW5kIGB1MzJfY2xhc3NpZnlgIHdpdGggYSBmb2N1c2VkIGFwcHJvYWNoLiAgV2Ugc2hvdWxkIGNyZWF0ZSBmdXp6IHRhcmdldHMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIHByb2JlIHRoZSBsaW1pdHMgb2YgdGhlc2UgZnVuY3Rpb25zLCB0ZXN0aW5nIGVkZ2UgY2FzZXMgYW5kIHRyeWluZyB0byB0cmlnZ2VyIHRoZSBjb25kaXRpb25zIHRoYXQgdGhlIHBhdGNoIGlzIG1lYW50IHRvIHByZXZlbnQuIFRoaXMgaXMgYSBtdXN0LlxuXG5GaW5hbGx5LCBsZXQncyB2ZXJpZnkgdGhhdCB3ZSBoYXZlIHRoZSByaWdodCBjb25maWd1cmF0aW9uIG9wdGlvbnMgc2V0IHRvIHJlcGxpY2F0ZSBhbmQgdGVzdCB0aGlzIGJlaGF2aW9yLiBXZSdyZSBnb2luZyB0byBuZWVkIGBDT05GSUdfTkVUX1NDSEVEYCBhbmQgYENPTkZJR19ORVRfQ0xTX1UzMmAgZW5hYmxlZCB0byBydW4gdGhlc2UgdGVzdHMuIExldCBtZSBkb3VibGUtY2hlY2sgdGhhdCBjb25maWcgbmFtZSByZWFsbHkgcXVpY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwODIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwOTowMDozNC42MzE5ODg0MDFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1MzI1OTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfQ0xTX1UzMlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz01MDY9Y29uZmlnIE5FVF9DTFNfRldcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTUxNS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo1MTY6Y29uZmlnIE5FVF9DTFNfVTMyXFxubmV0L3NjaGVkL0tjb25maWctNTE3LVxcdHRyaXN0YXRlIFxcXCJVbml2ZXJzYWwgMzJiaXQgY29tcGFyaXNvbnMgdy8gaGFzaGluZyAoVTMyKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDk6MDA6MzQuNjk3MzE4OTk1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNzMxNjA0NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRoYXQuXG5cbioqQW5hbHl6aW5nIHRoZSBVMzIgQ2xhc3NpZmllciBQYXRjaCoqXG5cblJpZ2h0LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCB0aGUgYE5FVF9DTFNfVTMyYCBjbGFzc2lmaWVyLiBUaGF0J3MgdGhlIGtleSBoZXJlLiBUaGUgZm9jdXMgaXMgZGVmaW5pdGVseSBvbiBgdTMyX2NoYW5nZWAgYW5kIGB1MzJfY2xhc3NpZnlgLiBUaGUgY29yZSBpc3N1ZSBpcyBhIHBvdGVudGlhbCB1bmRlZmluZWQgYmVoYXZpb3IgYXJpc2luZyBmcm9tIGFuIG91dC1vZi1ib3VuZHMgc2hpZnQgb3BlcmF0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aCBgb2Zmc2hpZnRgLCB3aXRoaW4gdGhlIGB1MzJfY2xhc3NpZnlgIGZ1bmN0aW9uLiBUaGUgcGF0Y2ggYWRkcmVzc2VzIHRoaXMgYnkgaW1wbGVtZW50aW5nIGEgYm91bmRzIGNoZWNrIHdpdGhpbiBgdTMyX2NoYW5nZWAuIFRoaXMgcHJldmVudHMgdGhlIHByb2JsZW1hdGljIHNoaWZ0IGZyb20gaGFwcGVuaW5nIGluIHRoZSBmaXJzdCBwbGFjZSwgcmVzb2x2aW5nIHRoZSB1bmRlZmluZWQgYmVoYXZpb3Igcmlzay4gRnJvbSBhIHByYWN0aWNhbCBwZXJzcGVjdGl2ZSwgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSB1c2VyLWFjY2Vzc2libGUgdHJhZmZpYyBjbGFzc2lmaWVyLCBhY2Nlc3NpYmxlIHZpYSBuZXRsaW5rLiBUaGUgcHJpbWFyeSBjb25maWcgaXMgYE5FVF9DTFNfVTMyYCwgc28gSSdsbCBxdWlja2x5IGNoZWNrIGZvciBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMsIGJ1dCBJIGJlbGlldmUgdGhhdCBpcyB0aGUgcmVsZXZhbnQgY2hlY2suIE5vdyBsZXQncyBnZXQgdGhlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4MTcsIk91dHB1dFRva2VucyI6MTE2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA5OjAwOjM5Ljg3MDQ4MjE3MVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwNDc1MjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfQ0xTX1UzMlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInUzMl9jaGFuZ2VcIixcbiAgICBcInUzMl9jbGFzc2lmeVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgZm9yIGBvZmZzaGlmdGAgaW4gYHUzMl9jaGFuZ2VgIHRvIHByZXZlbnQgYSBwb3RlbnRpYWwgdW5kZWZpbmVkIGJlaGF2aW9yIChzaGlmdCBvdXQgb2YgYm91bmRzKSBpbiBgdTMyX2NsYXNzaWZ5YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSB1MzIgdHJhZmZpYyBjbGFzc2lmaWVyIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgbmV0bGluay5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfQ0xTX1UzMlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInUzMl9jaGFuZ2VcIixcbiAgICBcInUzMl9jbGFzc2lmeVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgZm9yIGBvZmZzaGlmdGAgaW4gYHUzMl9jaGFuZ2VgIHRvIHByZXZlbnQgYSBwb3RlbnRpYWwgdW5kZWZpbmVkIGJlaGF2aW9yIChzaGlmdCBvdXQgb2YgYm91bmRzKSBpbiBgdTMyX2NsYXNzaWZ5YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSB1MzIgdHJhZmZpYyBjbGFzc2lmaWVyIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgbmV0bGluay5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfjkvm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-24 08:21:05 +0000 UTC FinishedAt: 2026-07-24 09:00:41 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "78f75d632f74b8de0f081a128588f7c37d0d1164", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_CLS_U32" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "78f75d632f74b8de0f081a128588f7c37d0d1164", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_CLS_U32" ], "series_id": "148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "u32_change", "u32_classify" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9DTFNfVTMyJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dTMyX2NoYW5nZSYjMzQ7LAogICAgJiMzNDt1MzJfY2xhc3NpZnkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgYG9mZnNoaWZ0YCBpbiBgdTMyX2NoYW5nZWAgdG8gcHJldmVudCBhIHBvdGVudGlhbCB1bmRlZmluZWQgYmVoYXZpb3IgKHNoaWZ0IG91dCBvZiBib3VuZHMpIGluIGB1MzJfY2xhc3NpZnlgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHUzMiB0cmFmZmljIGNsYXNzaWZpZXIgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBuZXRsaW5rLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjU5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgM2M2NGVkNDI0ZWUzOWZjZWZiZDg0YTE3NzZjMTJkZmJiNGU0YjA2NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDI0IDA4OjU5OjUwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfdTMyLmMgYi9uZXQvc2NoZWQvY2xzX3UzMi5jXG5pbmRleCA4ZjMwY2M4MjE4MWQ5Yy4uYWM5OGIxYzIxNDRhNzggMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvY2xzX3UzMi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvY2xzX3UzMi5jXG5AQCAtMTEwNyw2ICYjNDM7MTEwNywxMyBAQCBzdGF0aWMgaW50IHUzMl9jaGFuZ2Uoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqaW5fc2tiLFxuIFx0XHRnb3RvIGVycmlkcjtcbiBcdH1cbiBcbiYjNDM7XHRpZiAocy1cdTAwM2VvZmZzaGlmdCBcdTAwM2U9IDE2KSB7XG4mIzQzO1x0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLFxuJiM0MztcdFx0XHRcdCAgIFwmIzM0O29mZnNoaWZ0IG11c3QgYmUgbGVzcyB0aGFuIDE2XCYjMzQ7KTtcbiYjNDM7XHRcdGVyciA9IC1FSU5WQUw7XG4mIzQzO1x0XHRnb3RvIGVycmlkcjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0biA9IGt6YWxsb2NfZmxleCgqbiwgc2VsLmtleXMsIHMtXHUwMDNlbmtleXMpO1xuIFx0aWYgKG4gPT0gTlVMTCkge1xuIFx0XHRlcnIgPSAtRU5PQlVGUztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODo1OTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0NMU19VMzImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1MzJfY2hhbmdlJiMzNDssCiAgICAmIzM0O3UzMl9jbGFzc2lmeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGZvciBgb2Zmc2hpZnRgIGluIGB1MzJfY2hhbmdlYCB0byBwcmV2ZW50IGEgcG90ZW50aWFsIHVuZGVmaW5lZCBiZWhhdmlvciAoc2hpZnQgb3V0IG9mIGJvdW5kcykgaW4gYHUzMl9jbGFzc2lmeWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdTMyIHRyYWZmaWMgY2xhc3NpZmllciB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIG5ldGxpbmsuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNjNjRlZDQyNGVlMzlmY2VmYmQ4NGExNzc2YzEyZGZiYjRlNGIwNjYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAyNCAwODo1OTo1MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfdTMyLmMgYi9uZXQvc2NoZWQvY2xzX3UzMi5jCmluZGV4IDhmMzBjYzgyMTgxZDljLi5hYzk4YjFjMjE0NGE3OCAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL2Nsc191MzIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvY2xzX3UzMi5jCkBAIC0xMTA3LDYgJiM0MzsxMTA3LDEzIEBAIHN0YXRpYyBpbnQgdTMyX2NoYW5nZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICppbl9za2IsCiAJCWdvdG8gZXJyaWRyOwogCX0KIAomIzQzOwlpZiAocy0mZ3Q7b2Zmc2hpZnQgJmd0Oz0gMTYpIHsKJiM0MzsJCU5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssCiYjNDM7CQkJCSAgICYjMzQ7b2Zmc2hpZnQgbXVzdCBiZSBsZXNzIHRoYW4gMTYmIzM0Oyk7CiYjNDM7CQllcnIgPSAtRUlOVkFMOwomIzQzOwkJZ290byBlcnJpZHI7CiYjNDM7CX0KJiM0MzsKIAluID0ga3phbGxvY19mbGV4KCpuLCBzZWwua2V5cywgcy0mZ3Q7bmtleXMpOwogCWlmIChuID09IE5VTEwpIHsKIAkJZXJyID0gLUVOT0JVRlM7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA4OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NDYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXcgYGNsc191MzIuY2AgUGF0Y2gqKgoKT2theSwgSSBzZWUgYSBuZXcgcGF0Y2ggdGhhdCYjMzk7cyBiZWVuIGFwcGxpZWQgdG8gYG5ldC9zY2hlZC9jbHNfdTMyLmNgLiBJdCBsb29rcyBsaWtlIHRoZSBtYWluIGNoYW5nZSBpcyBhIG5ldyB2YWxpZGF0aW9uIGNoZWNrIHdpdGhpbiB0aGUgYHUzMl9jaGFuZ2VgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGNoZWNraW5nIGlmIGBzLSZndDtvZmZzaGlmdGAgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDE2LiBJZiBpdCBpcywgdGhlbiB0aGUgcGF0Y2ggdGhyb3dzIGFuIGVycm9yLCBzZXRzIGFuIGV4dGVuZGVkIEFDSyBtZXNzYWdlLCBhbmQgYmFpbHMgb3V0LiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2U7IGEgbmV3IHNhZmV0eSBjaGVjayBoYXMgYmVlbiBpbnRyb2R1Y2VkLgoKSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBuZXcgcmVzdHJpY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBzYCBpcyBwcm9iYWJseSBhIGBzdHJ1Y3QgdGNfdTMyX3NlbGAsIG9yIHNvbWV0aGluZyBjbG9zZWx5IHJlbGF0ZWQsIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZS4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhhdCBgcy0mZ3Q7b2Zmc2hpZnRgIHZhcmlhYmxlIHJlcHJlc2VudHMgd2l0aGluIHRoYXQgc3RydWN0dXJlIGFuZCB3aHkgdGhpcyBsaW1pdCBvZiAxNiBpcyBiZWluZyBpbXBvc2VkLiBJJiMzOTtsbCBxdWlja2x5IHJ1biBhIGBncmVwYCBvbiBgdTMyX2NoYW5nZWAgd2l0aGluIGBuZXQvc2NoZWQvY2xzX3UzMi5jYCB0byBzZWUgaWYgSSBjYW4gZ2V0IHNvbWUgcXVpY2sgY29udGV4dCBhcm91bmQgdGhlIHZhcmlhYmxlIGFuZCBpdHMgdXNhZ2UuIFRoaXMgd2lsbCBnaXZlIG1lIGEgbW9yZSBjb25jcmV0ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBsb2dpYyBiZWhpbmQgdGhpcyBuZXcgdmFsaWRhdGlvbiBjaGVjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1MzJfY2hhbmdlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2Nsc191MzIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvY2xzX3UzMi5jPTgyMT1zdGF0aWMgc3RydWN0IHRjX3Vfa25vZGUgKnUzMl9pbml0X2tub2RlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRjZl9wcm90byAqdHAsXG4tLVxubmV0L3NjaGVkL2Nsc191MzIuYy04NzEtXG5uZXQvc2NoZWQvY2xzX3UzMi5jOjg3MjpzdGF0aWMgaW50IHUzMl9jaGFuZ2Uoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqaW5fc2tiLFxubmV0L3NjaGVkL2Nsc191MzIuYy04NzMtXHRcdCAgICAgIHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCB1bnNpZ25lZCBsb25nIGJhc2UsIHUzMiBoYW5kbGUsXG4tLVxubmV0L3NjaGVkL2Nsc191MzIuYz0xNDY1PXN0YXRpYyBzdHJ1Y3QgdGNmX3Byb3RvX29wcyBjbHNfdTMyX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuLS1cbm5ldC9zY2hlZC9jbHNfdTMyLmMtMTQ3MC1cdC5nZXRcdFx0PVx0dTMyX2dldCxcbm5ldC9zY2hlZC9jbHNfdTMyLmM6MTQ3MTpcdC5jaGFuZ2VcdFx0PVx0dTMyX2NoYW5nZSxcbm5ldC9zY2hlZC9jbHNfdTMyLmMtMTQ3Mi1cdC5kZWxldGVcdFx0PVx0dTMyX2RlbGV0ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwODo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzE3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqRGVjb2RpbmcgYHNgIGluIGB1MzJfY2hhbmdlYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYHUzMl9jaGFuZ2VgIGZ1bmN0aW9uLiBNeSBwcmltYXJ5IGdvYWwgaGVyZSBpcyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgaW1wbGljYXRpb25zIG9mIHRoZSB2YXJpYWJsZSBgc2AuIEl0JiMzOTtzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgZnVuY3Rpb24gd29ya3MsIGFuZCB1bHRpbWF0ZWx5IGhvdyB0aGUgc3lzdGVtIGJlaGF2ZXMuIExldCYjMzk7cyBzdGFydCBieSBpZGVudGlmeWluZyBpdCYjMzk7cyB1c2UgY2FzZSwgYW5kIHRyYWNpbmcgaXRzIGltcGFjdC4gSSYjMzk7bGwgcmVhZCB0aHJvdWdoIHRoZSBjb2RlIG5vdyBhbmQgdHJ5IHRvIG1hcCBvdXQgaG93IHRoYXQgdmFyaWFibGUgaXMgdXNlZC4gVGhpcyBzaG91bGQgYmUgc3RyYWlnaHRmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2Nsc191MzIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwOTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTA5MDpcdFx0fSBlbHNlIHtcbjEwOTE6XHRcdFx0LyogVGhlIHVzZXIgZGlkIG5vdCBnaXZlIHVzIGEgaGFuZGxlOyBsZXRzIGp1c3QgZ2VuZXJhdGUgb25lXG4xMDkyOlx0XHRcdCAqIGZyb20gdGhlIHRhYmxlJiMzOTtzIHBvb2wgb2Ygbm9kZWlkcy5cbjEwOTM6XHRcdFx0ICovXG4xMDk0Olx0XHRcdGhhbmRsZSA9IGdlbl9uZXdfa2lkKGh0LCBodGlkKTtcbjEwOTU6XHRcdH1cbjEwOTY6XHRcbjEwOTc6XHRcdGlmICh0YltUQ0FfVTMyX1NFTF0gPT0gTlVMTCkge1xuMTA5ODpcdFx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcJiMzNDtTZWxlY3RvciBub3Qgc3BlY2lmaWVkXCYjMzQ7KTtcbjEwOTk6XHRcdFx0ZXJyID0gLUVJTlZBTDtcbjExMDA6XHRcdFx0Z290byBlcnJpZHI7XG4xMTAxOlx0XHR9XG4xMTAyOlx0XG4xMTAzOlx0XHRzID0gbmxhX2RhdGEodGJbVENBX1UzMl9TRUxdKTtcbjExMDQ6XHRcdHNlbF9zaXplID0gc3RydWN0X3NpemUocywga2V5cywgcy1cdTAwM2Vua2V5cyk7XG4xMTA1Olx0XHRpZiAobmxhX2xlbih0YltUQ0FfVTMyX1NFTF0pIFx1MDAzYyBzZWxfc2l6ZSkge1xuMTEwNjpcdFx0XHRlcnIgPSAtRUlOVkFMO1xuMTEwNzpcdFx0XHRnb3RvIGVycmlkcjtcbjExMDg6XHRcdH1cbjExMDk6XHRcbjExMTA6XHRcdGlmIChzLVx1MDAzZW9mZnNoaWZ0IFx1MDAzZT0gMTYpIHtcbjExMTE6XHRcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjayxcbjExMTI6XHRcdFx0XHRcdCAgIFwmIzM0O29mZnNoaWZ0IG11c3QgYmUgbGVzcyB0aGFuIDE2XCYjMzQ7KTtcbjExMTM6XHRcdFx0ZXJyID0gLUVJTlZBTDtcbjExMTQ6XHRcdFx0Z290byBlcnJpZHI7XG4xMTE1Olx0XHR9XG4xMTE2Olx0XG4xMTE3Olx0XHRuID0ga3phbGxvY19mbGV4KCpuLCBzZWwua2V5cywgcy1cdTAwM2Vua2V5cyk7XG4xMTE4Olx0XHRpZiAobiA9PSBOVUxMKSB7XG4xMTE5Olx0XHRcdGVyciA9IC1FTk9CVUZTO1xuMTEyMDpcdFx0XHRnb3RvIGVycmlkcjtcbjExMjE6XHRcdH1cbjExMjI6XHRcbjExMjM6XHQjaWZkZWYgQ09ORklHX0NMU19VMzJfUEVSRlxuMTEyNDpcdFx0bi1cdTAwM2VwZiA9IF9fYWxsb2NfcGVyY3B1KHN0cnVjdF9zaXplKG4tXHUwMDNlcGYsIGtjbnRzLCBzLVx1MDAzZW5rZXlzKSxcbjExMjU6XHRcdFx0XHQgICAgICAgX19hbGlnbm9mX18oc3RydWN0IHRjX3UzMl9wY250KSk7XG4xMTI2Olx0XHRpZiAoIW4tXHUwMDNlcGYpIHtcbjExMjc6XHRcdFx0ZXJyID0gLUVOT0JVRlM7XG4xMTI4Olx0XHRcdGdvdG8gZXJyZnJlZTtcbjExMjk6XHRcdH1cbjExMzA6XHQjZW5kaWZcbjExMzE6XHRcbjExMzI6XHRcdHVuc2FmZV9tZW1jcHkoXHUwMDI2bi1cdTAwM2VzZWwsIHMsIHNlbF9zaXplLFxuMTEzMzpcdFx0XHQgICAgICAvKiBBIGNvbXBvc2l0ZSBmbGV4LWFycmF5IHN0cnVjdHVyZSBkZXN0aW5hdGlvbixcbjExMzQ6XHRcdFx0ICAgICAgICogd2hpY2ggd2FzIGNvcnJlY3RseSBzaXplZCB3aXRoIHN0cnVjdF9zaXplKCksXG4xMTM1Olx0XHRcdCAgICAgICAqIGJvdW5kcy1jaGVja2VkIGFnYWluc3QgbmxhX2xlbigpLCBhbmQgYWxsb2NhdGVkXG4xMTM2Olx0XHRcdCAgICAgICAqIGFib3ZlLiAqLyk7XG4xMTM3Olx0XHRSQ1VfSU5JVF9QT0lOVEVSKG4tXHUwMDNlaHRfdXAsIGh0KTtcbjExMzg6XHRcdG4tXHUwMDNlaGFuZGxlID0gaGFuZGxlO1xuMTEzOTpcdFx0bi1cdTAwM2Vmc2hpZnQgPSBzLVx1MDAzZWhtYXNrID8gZmZzKG50b2hsKHMtXHUwMDNlaG1hc2spKSAtIDEgOiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2OTMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZDoKCioqRGVjb2RpbmcgVGhpcyBWYXJpYWJsZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgYHNgIGFuZCBpdCYjMzk7cyBhc3NpZ25lZCB0byBgbmxhX2RhdGEodGJbVENBX1UzMl9TRUxdKWAuIFJpZ2h0IGF3YXksIHRoZSBgbmxhX2RhdGFgIHBhcnQgbWFrZXMgbWUgdGhpbmsgdGhpcyBpcyBOZXR3b3JrIExpbmsgQXR0cmlidXRlIChOTEEpIGRhdGEsIHdoaWNoIGlzIGNvbW1vbi4gYHRiYCBsaWtlbHkgcmVmZXJzIHRvIGEgdGFibGUgb3IgYW4gYXJyYXkgY29udGFpbmluZyBhdHRyaWJ1dGUgZGF0YSwgcG90ZW50aWFsbHkgd2l0aGluIGEgTmV0bGluayBtZXNzYWdlLiBgVENBX1UzMl9TRUxgLi4uIHRoYXQmIzM5O3MgYSBrZXkuIFRoaXMgbGlrZWx5IHNwZWNpZmllcyBhICYjMzQ7c2VsZWN0b3ImIzM0OyBvciBhIHNwZWNpZmljIGVsZW1lbnQgd2l0aGluIHRoYXQgYXJyYXksIGFuZCB0aGUgJiMzNDtVMzImIzM0OyBzdWdnZXN0cyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGFuIHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB3aGF0IHN0cnVjdHVyZSAqZXhhY3RseSogdGhhdCBgc2AgdmFyaWFibGUgcmVwcmVzZW50cy4gSXQmIzM5O3MgbGlrZWx5IGEgcG9pbnRlciBvZiBzb21lIHNvcnQsIHBlcmhhcHMgdG8gYSBzcGVjaWZpYyBmaWVsZCBvciBzdHJ1Y3R1cmUgd2l0aGluIHRoYXQgTmV0bGluayBhdHRyaWJ1dGUuIEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSBkZWZpbml0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGBUQ0FfVTMyX1NFTGAgZW51bSB2YWx1ZSB0byBrbm93IHdoYXQgaXQgaXMgcG9pbnRpbmcgdG8uIEkmIzM5O20gZ29pbmcgdG8gZGVsdmUgaW50byB0aGUgcmVsZXZhbnQgaGVhZGVyIGZpbGVzIG9yIGRhdGEgc3RydWN0dXJlcywgdG8gdW5kZXJzdGFuZCB0aGUgYHRiW1RDQV9VMzJfU0VMXWAgc3RydWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2Nsc191MzIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODcwOlx0fVxuIDg3MTpcdFxuIDg3MjpcdHN0YXRpYyBpbnQgdTMyX2NoYW5nZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICppbl9za2IsXG4gODczOlx0XHRcdCAgICAgIHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCB1bnNpZ25lZCBsb25nIGJhc2UsIHUzMiBoYW5kbGUsXG4gODc0Olx0XHRcdCAgICAgIHN0cnVjdCBubGF0dHIgKip0Y2EsIHZvaWQgKiphcmcsIHUzMiBmbGFncyxcbiA4NzU6XHRcdFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIDg3NjpcdHtcbiA4Nzc6XHRcdHN0cnVjdCB0Y191X2NvbW1vbiAqdHBfYyA9IHRwLVx1MDAzZWRhdGE7XG4gODc4Olx0XHRzdHJ1Y3QgdGNfdV9obm9kZSAqaHQ7XG4gODc5Olx0XHRzdHJ1Y3QgdGNfdV9rbm9kZSAqbjtcbiA4ODA6XHRcdHN0cnVjdCB0Y191MzJfc2VsICpzO1xuIDg4MTpcdFx0c3RydWN0IG5sYXR0ciAqb3B0ID0gdGNhW1RDQV9PUFRJT05TXTtcbiA4ODI6XHRcdHN0cnVjdCBubGF0dHIgKnRiW1RDQV9VMzJfTUFYICYjNDM7IDFdO1xuIDg4MzpcdFx0dTMyIGh0aWQsIHVzZXJmbGFncyA9IDA7XG4gODg0Olx0XHRzaXplX3Qgc2VsX3NpemU7XG4gODg1Olx0XHRpbnQgZXJyO1xuIDg4NjpcdFxuIDg4NzpcdFx0aWYgKCFvcHQpIHtcbiA4ODg6XHRcdFx0aWYgKGhhbmRsZSkge1xuIDg4OTpcdFx0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwmIzM0O0ZpbHRlciBoYW5kbGUgcmVxdWlyZXMgb3B0aW9uc1wmIzM0Oyk7XG4gODkwOlx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gODkxOlx0XHRcdH0gZWxzZSB7XG4gODkyOlx0XHRcdFx0cmV0dXJuIDA7XG4gODkzOlx0XHRcdH1cbiA4OTQ6XHRcdH1cbiA4OTU6XHRcbiA4OTY6XHRcdGVyciA9IG5sYV9wYXJzZV9uZXN0ZWRfZGVwcmVjYXRlZCh0YiwgVENBX1UzMl9NQVgsIG9wdCwgdTMyX3BvbGljeSxcbiA4OTc6XHRcdFx0XHRcdFx0ICBleHRhY2spO1xuIDg5ODpcdFx0aWYgKGVyciBcdTAwM2MgMClcbiA4OTk6XHRcdFx0cmV0dXJuIGVycjtcbiA5MDA6XHRcbiA5MDE6XHRcdGlmICh0YltUQ0FfVTMyX0ZMQUdTXSkge1xuIDkwMjpcdFx0XHR1c2VyZmxhZ3MgPSBubGFfZ2V0X3UzMih0YltUQ0FfVTMyX0ZMQUdTXSk7XG4gOTAzOlx0XHRcdGlmICghdGNfZmxhZ3NfdmFsaWQodXNlcmZsYWdzKSkge1xuIDkwNDpcdFx0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwmIzM0O0ludmFsaWQgZmlsdGVyIGZsYWdzXCYjMzQ7KTtcbiA5MDU6XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA5MDY6XHRcdFx0fVxuIDkwNzpcdFx0fVxuIDkwODpcdFxuIDkwOTpcdFx0biA9ICphcmc7XG4gOTEwOlx0XHRpZiAobikge1xuIDkxMTpcdFx0XHRzdHJ1Y3QgdGNfdV9rbm9kZSAqbmV3O1xuIDkxMjpcdFxuIDkxMzpcdFx0XHRpZiAoVENfVTMyX0tFWShuLVx1MDAzZWhhbmRsZSkgPT0gMCkge1xuIDkxNDpcdFx0XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwmIzM0O0tleSBub2RlIGlkIGNhbm5vdCBiZSB6ZXJvXCYjMzQ7KTtcbiA5MTU6XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA5MTY6XHRcdFx0fVxuIDkxNzpcdFxuIDkxODpcdFx0XHRpZiAoKG4tXHUwMDNlZmxhZ3MgXiB1c2VyZmxhZ3MpIFx1MDAyNlxuIDkxOTpcdFx0XHQgICAgfihUQ0FfQ0xTX0ZMQUdTX0lOX0hXIHwgVENBX0NMU19GTEFHU19OT1RfSU5fSFcpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDk6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg0MAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIHUzMiBUcmFmZmljIENsYXNzaWZpZXIgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIG5ldyBwYXRjaCBpbiBmcm9udCBvZiBtZSwgYW5kIGl0IGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGB1MzJgIHRyYWZmaWMgY2xhc3NpZmllciDigJMgc3BlY2lmaWNhbGx5LCB0aGUgYHN0cnVjdCB0Y191MzJfc2VsYCBzdHJ1Y3R1cmUsIHJlcHJlc2VudGVkIGJ5IGBzYCBoZXJlLiBUaGUga2V5IGFkZGl0aW9uIGlzIHRoaXMgY2hlY2s6IGBzLSZndDtvZmZzaGlmdCAmZ3Q7PSAxNmAuIElmIHRoYXQgY29uZGl0aW9uIGlzIHRydWUsIHdlIHJldHVybiBgLUVJTlZBTGAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHJlY29nbml6ZSB0aGlzIGFzIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgZml4LCBvciBhdCB0aGUgdmVyeSBsZWFzdCwgYSByZXN0cmljdGlvbiBvbiBob3cgdGhlIGNsYXNzaWZpZXIgb3BlcmF0ZXMuCgpHaXZlbiB0aGF0IGl0JiMzOTtzIGEgY2hhbmdlIHdpdGhpbiB0aGUgYGNsc191MzJgIG1vZHVsZSwgYW5kIHRoYXQgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGFjY2Vzc2libGUgdmlhIE5ldGxpbmsgKGB0YyBmaWx0ZXIgYWRkIC4uLiB1MzJgKSwgdGhpcyBzY3JlYW1zICYjMzQ7ZnV6eiBtZSEmIzM0OyB0byBtZS4gVGhhdCYjMzk7cyBteSBpbml0aWFsIHRob3VnaHQuIFdlIG5lZWQgdG8gdGhyb3cgZXZlcnl0aGluZyB3ZSBjYW4gYXQgdGhpcyB0aHJvdWdoIGB0Y2AgY29tbWFuZHMgYW5kIHNlZSBpZiB3ZSBjYW4gdHJpZ2dlciBhbnkgdW5leHBlY3RlZCBiZWhhdmlvci4KCk5vdywgbGV0JiMzOTtzIHplcm8gaW4gb24gdGhlIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQuIE15IGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIGB1MzJfY2hhbmdlYCBhbmQgSSBuZWVkIHRvIGNoZWNrIHdoZXJlIGBvZmZzaGlmdGAgaXMgdXNlZC4gSSB0aGluayB0aGVyZSBtaWdodCBiZSBhbiBpc3N1ZSB0aGF0IHRoZSBwYXRjaCBwcmV2ZW50cyBhbmQgdGhhdCBtaWdodCBiZSBzb21ldGhpbmcgaW4gYHUzMl9jbGFzc2lmeWAgb3IgcG90ZW50aWFsbHkgYHUzMl9zZXRfcGFybXNgIG9yIG90aGVyIGZ1bmN0aW9ucyB0aGF0IHJlbHkgb24gb3Igc2V0IGBvZmZzaGlmdGAuIExldCBtZSBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIGV4YWN0bHkgd2hlcmUgdGhpcyBgb2Zmc2hpZnRgIGZpZWxkIGlzIGJlaW5nIHV0aWxpemVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGlzIG5ldyBjb25zdHJhaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwOTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvZmZzaGlmdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9jbHNfdTMyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL2Nsc191MzIuYz0xMTQ9VENfSU5ESVJFQ1RfU0NPUEUgaW50IHUzMl9jbGFzc2lmeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9zY2hlZC9jbHNfdTMyLmMtMjM2LVx0XHRcdFx0b2ZmMiAmIzQzOz0gbnRvaHMobi1cdTAwM2VzZWwub2ZmbWFzayBcdTAwMjYgKmRhdGEpIFx1MDAzZVx1MDAzZVxubmV0L3NjaGVkL2Nsc191MzIuYzoyMzc6XHRcdFx0XHRcdG4tXHUwMDNlc2VsLm9mZnNoaWZ0O1xubmV0L3NjaGVkL2Nsc191MzIuYy0yMzgtXHRcdFx0fVxuLS1cbm5ldC9zY2hlZC9jbHNfdTMyLmM9ODcyPXN0YXRpYyBpbnQgdTMyX2NoYW5nZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICppbl9za2IsXG4tLVxubmV0L3NjaGVkL2Nsc191MzIuYy0xMTA5LVxubmV0L3NjaGVkL2Nsc191MzIuYzoxMTEwOlx0aWYgKHMtXHUwMDNlb2Zmc2hpZnQgXHUwMDNlPSAxNikge1xubmV0L3NjaGVkL2Nsc191MzIuYy0xMTExLVx0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLFxubmV0L3NjaGVkL2Nsc191MzIuYzoxMTEyOlx0XHRcdFx0ICAgXCYjMzQ7b2Zmc2hpZnQgbXVzdCBiZSBsZXNzIHRoYW4gMTZcJiMzNDspO1xubmV0L3NjaGVkL2Nsc191MzIuYy0xMTEzLVx0XHRlcnIgPSAtRUlOVkFMO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwOTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjU5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBJbnRlZ2VyIE92ZXJmbG93IGluIGB1MzJfY2xhc3NpZnlgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHNuaXBwZXQgZnJvbSBgdTMyX2NsYXNzaWZ5YDoKCmBgYGMKCQkJCW9mZjIgJiM0Mzs9IG50b2hzKG4tJmd0O3NlbC5vZmZtYXNrICZhbXA7ICpkYXRhKSAmZ3Q7Jmd0OwoJCQkJCW4tJmd0O3NlbC5vZmZzaGlmdDsKYGBgCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGUgcmlnaHQtc2hpZnQgb3BlcmF0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIGBuLSZndDtzZWwub2Zmc2hpZnRgIHZhbHVlLCBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIHVuZGVmaW5lZCBiZWhhdmlvci4gSWYgYG9mZnNoaWZ0YCBpcyAxNiBvciBncmVhdGVyLCBzaGlmdGluZyBhIDE2LWJpdCB2YWx1ZSwgd2hpY2ggaXMgd2hhdCBgbnRvaHNgIHJldHVybnMsIGJ5IDE2IGJpdHMgc2VlbXMgc2tldGNoeS4gQWx0aG91Z2ggYG50b2hzYCByZXR1cm5zIGEgYF9fdTE2YCwgaXQmIzM5O3MgcHJvbW90ZWQgdG8gYW4gYGludGAgaW4gQywgd2hpY2ggb24gYSAzMi1iaXQgc3lzdGVtIHdvdWxkIGJlIGZpbmUgd2l0aCBhIHNoaWZ0IG9mIDE2LCBidXQgaXQmIzM5O3Mgd29ydGggZGlnZ2luZyBpbiB0byB0aGlzLiBJdCBjb3VsZCYjMzk7dmUgYmVlbiBhIHNvdXJjZSBvZiBzdWJ0bGUgaXNzdWVzIG9yIGV2ZW4gb3V0cmlnaHQgaW52YWxpZCBiZWhhdmlvciBkb3duIHRoZSBsaW5lLgoKQWN0dWFsbHksIHRoZSBwcm9tb3Rpb24gdG8gYGludGAgaXMga2V5IGhlcmUuIFNpbmNlIGBudG9oc2AgcmV0dXJucyBgX191MTZgIGFuZCBpdCYjMzk7cyBwcm9tb3RlZCB0byBgaW50YCwgc2hpZnRpbmcgYnkgMTYgYml0cyBpcyBwZXJmZWN0bHkgdmFsaWQgZm9yIGEgMzItYml0IGBpbnRgLCBob3dldmVyLCBJIHdvbmRlciBpZiBhIGxhcmdlciB2YWx1ZSBvZiBgb2Zmc2hpZnRgIG1pZ2h0IHN0aWxsIGNhdXNlIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIGluIGxhdGVyIGNvZGUsIG9yLCBpZiBgb2Zmc2hpZnRgIGlzIGxhcmdlIGVub3VnaCwgcGVyaGFwcyBldmVuIGEgc2hpZnQgYnkgMzIgb3IgbW9yZSBiaXRzLCB3aGljaCAqd291bGQqIGJlIHVuZGVmaW5lZC4gV2FpdCBhIHNlY29uZCwgZGlkbiYjMzk7dCBJIGRlZmluZSB0aGUgdHlwZSBvZiBgb2Zmc2hpZnRgIGluIGBzdHJ1Y3QgdGNfdTMyX3NlbGAgdG8gYmUgYF9fdThgPyBJJiMzOTtkIGJldHRlciBjb25maXJtIHRoYXQgYmVjYXVzZSB0aGF0IHJhZGljYWxseSBjaGFuZ2VzIHRoZSBwb3NzaWJpbGl0aWVzLiBPa2F5LCB0aW1lIHRvIGNoZWNrIGBzdHJ1Y3QgdGNfdTMyX3NlbGAgdG8gZ2V0IHRoZSB3aG9sZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwOTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdHJ1Y3QgdGNfdTMyX3NlbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3BrdF9jbHMuaD02Njk9c3RydWN0IHRjX2Nsc191MzJfa25vZGUge1xuLS1cbmluY2x1ZGUvbmV0L3BrdF9jbHMuaC02NzEtXHRzdHJ1Y3QgdGNmX3Jlc3VsdCAqcmVzO1xuaW5jbHVkZS9uZXQvcGt0X2Nscy5oOjY3MjpcdHN0cnVjdCB0Y191MzJfc2VsICpzZWw7XG5pbmNsdWRlL25ldC9wa3RfY2xzLmgtNjczLVx0dTMyIGhhbmRsZTtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvcGt0X2Nscy5oPTI0MT1zdHJ1Y3QgdGNfdTMyX2tleSB7XG4tLVxuaW5jbHVkZS91YXBpL2xpbnV4L3BrdF9jbHMuaC0yNDctXG5pbmNsdWRlL3VhcGkvbGludXgvcGt0X2Nscy5oOjI0ODpzdHJ1Y3QgdGNfdTMyX3NlbCB7XG5pbmNsdWRlL3VhcGkvbGludXgvcGt0X2Nscy5oLTI0OS1cdC8qIE5ldyBtZW1iZXJzIE1VU1QgYmUgYWRkZWQgd2l0aGluIHRoZSBfX3N0cnVjdF9ncm91cCgpIG1hY3JvIGJlbG93LiAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwOTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTUwCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIGB0Y191MzJfc2VsYCBTdHJ1Y3R1cmUqKgoKT2theSwgdGltZSB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgYHRjX3UzMl9zZWxgIHN0cnVjdHVyZS4gTGV0JiMzOTtzIHB1bGwgdXAgdGhlIGRlZmluaXRpb24gZnJvbSBgaW5jbHVkZS91YXBpL2xpbnV4L3BrdF9jbHMuaGAuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGlzIHRoaW5nIGlzIGRlZmluZWQsIHNwZWNpZmljYWxseSBob3cgc2VsZWN0b3JzIHdvcmsuIEkmIzM5O20gcHJpbWFyaWx5IGludGVyZXN0ZWQgaW4gaG93IHRoZSBtYXRjaCBjcml0ZXJpYSBhcmUgY29uc3RydWN0ZWQgYW5kIGFwcGxpZWQgYXQgYSBsb3cgbGV2ZWwgd2l0aGluIHRoZSBVMzIgY2xhc3NpZmllci4gVGhlIHNwZWNpZmljIGRldGFpbHMgd2lsbCB0ZWxsIG1lIHdoYXQgdGhlIGxpbWl0YXRpb25zIGFyZSBpbiBob3cgY29tcGxleCBtYXRjaGVzIGNhbiBiZSBwZXJmb3JtZWQsIGFuZCB3aGF0IG9wdGlvbnMgdGhlcmUgYXJlIGZvciBvcHRpbWl6aW5nIHRoZSBtYXRjaGluZyBwcm9jZXNzIGl0c2VsZi4gR290dGEgY29uc2lkZXIgdGhpbmdzIGxpa2UgcG90ZW50aWFsIGNvbmZsaWN0cyBiZXR3ZWVuIHNlbGVjdG9ycywgdGhlIGltcGFjdCBvZiBtYXNrIHZhbHVlcywgYW5kIHRoZSBvdmVyYWxsIGVmZmljaWVuY3kgb2YgdGhlIHNlbGVjdGlvbiBhbGdvcml0aG0sIGJlY2F1c2UgSSBrbm93IHRoYXQmIzM5O3Mgd2hlcmUgdGhlIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIGNhbiBvZnRlbiBoaWRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwOTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2luY2x1ZGUvdWFwaS9saW51eC9wa3RfY2xzLmgmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI0MDpcdFxuIDI0MTpcdHN0cnVjdCB0Y191MzJfa2V5IHtcbiAyNDI6XHRcdF9fYmUzMlx0XHRtYXNrO1xuIDI0MzpcdFx0X19iZTMyXHRcdHZhbDtcbiAyNDQ6XHRcdGludFx0XHRvZmY7XG4gMjQ1Olx0XHRpbnRcdFx0b2ZmbWFzaztcbiAyNDY6XHR9O1xuIDI0NzpcdFxuIDI0ODpcdHN0cnVjdCB0Y191MzJfc2VsIHtcbiAyNDk6XHRcdC8qIE5ldyBtZW1iZXJzIE1VU1QgYmUgYWRkZWQgd2l0aGluIHRoZSBfX3N0cnVjdF9ncm91cCgpIG1hY3JvIGJlbG93LiAqL1xuIDI1MDpcdFx0X19zdHJ1Y3RfZ3JvdXAodGNfdTMyX3NlbF9oZHIsIGhkciwgLyogbm8gYXR0cnMgKi8sXG4gMjUxOlx0XHRcdHVuc2lnbmVkIGNoYXJcdFx0ZmxhZ3M7XG4gMjUyOlx0XHRcdHVuc2lnbmVkIGNoYXJcdFx0b2Zmc2hpZnQ7XG4gMjUzOlx0XHRcdHVuc2lnbmVkIGNoYXJcdFx0bmtleXM7XG4gMjU0Olx0XG4gMjU1Olx0XHRcdF9fYmUxNlx0XHRcdG9mZm1hc2s7XG4gMjU2Olx0XHRcdF9fdTE2XHRcdFx0b2ZmO1xuIDI1NzpcdFx0XHRzaG9ydFx0XHRcdG9mZm9mZjtcbiAyNTg6XHRcbiAyNTk6XHRcdFx0c2hvcnRcdFx0XHRob2ZmO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwOTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDgyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTg0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBWdWxuZXJhYmlsaXR5IGluIE5ldHdvcmsgUGFja2V0IENsYXNzaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IHNlZSBhIHBvdGVudGlhbCBpc3N1ZSB3aXRoIGhvdyBgb2Zmc2hpZnRgIGlzIGJlaW5nIHVzZWQuIEl0JiMzOTtzIGFuIGB1bnNpZ25lZCBjaGFyYCwgbWVhbmluZyBpdCBjYW4gaG9sZCB2YWx1ZXMgdXAgdG8gMjU1LiBCdXQgaW4gdGhlIGB1MzJfY2xhc3NpZnlgIGZ1bmN0aW9uLCB3ZSBoYXZlIHRoaXMgc25pcHBldDoKCmBgYGMKCQkJCW9mZjIgJiM0Mzs9IG50b2hzKG4tJmd0O3NlbC5vZmZtYXNrICZhbXA7ICpkYXRhKSAmZ3Q7Jmd0OwoJCQkJCW4tJmd0O3NlbC5vZmZzaGlmdDsKYGBgCgpIZXJlJiMzOTtzIHRoZSBwcm9ibGVtLiAgSWYgYG9mZnNoaWZ0YCBzb21laG93IGVuZHMgdXAgYmVpbmcgMzIgb3IgZ3JlYXRlciwgc2hpZnRpbmcgYW4gYGludGAgKHdoaWNoIGlzIHdoYXQgYG50b2hzKG4tJmd0O3NlbC5vZmZtYXNrICZhbXA7ICpkYXRhKWAgbGlrZWx5IGV2YWx1YXRlcyB0bykgYnkgMzIgb3IgbW9yZSBiaXRzIGlzICp1bmRlZmluZWQgYmVoYXZpb3IqIGluIEMuIFRoaXMgaXMgYSB2ZXJ5IGNyaXRpY2FsIGNvbmNlcm4uIFdoaWxlIGl0IG1pZ2h0IG5vdCBjcmFzaCBpbW1lZGlhdGVseSwgaXQgaW50cm9kdWNlcyB1bnByZWRpY3RhYmxlIHJlc3VsdHMgYW5kIG9wZW5zIHRoZSBkb29yIGZvciBleHBsb2l0YWJsZSB2dWxuZXJhYmlsaXRpZXMsIGVzcGVjaWFsbHkgaW4gYSBuZXR3b3JrIGNvbnRleHQuCgpUaGUgcGF0Y2ggSSYjMzk7bSByZXZpZXdpbmcgYXBwZWFycyB0byBhZGRyZXNzIHRoaXMgZGlyZWN0bHkgYnkgcmVzdHJpY3RpbmcgYG9mZnNoaWZ0YCB0byBiZSBsZXNzIHRoYW4gMTYuIFRoYXQmIzM5O3MgYSBzb2xpZCBmaXgsIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcHJldmVudCB0aGUgdW5kZWZpbmVkIGJlaGF2aW9yLiBJdCBtZWFucyB3ZSYjMzk7cmUgdHJhZGluZyBvZmYgYSBsaXR0bGUgYml0IG9mIGZsZXhpYmlsaXR5IGluIHRoZSBjbGFzc2lmaWNhdGlvbiBsb2dpYyBmb3IgbXVjaCBtb3JlIHJvYnVzdCBhbmQgcHJlZGljdGFibGUgYmVoYXZpb3IuIEdpdmVuIHRoZSBwb3RlbnRpYWwgaW1wYWN0LCB0aGlzIGlzIGRlZmluaXRlbHkgYSBnb29kIGNoYW5nZS4KCk5vdywgbXkgbmV4dCB0aG91Z2h0IGlzLCB3ZSBhYnNvbHV0ZWx5IG5lZWQgdG8gZnV6eiBgdTMyX2NoYW5nZWAgYW5kIGB1MzJfY2xhc3NpZnlgIHdpdGggYSBmb2N1c2VkIGFwcHJvYWNoLiAgV2Ugc2hvdWxkIGNyZWF0ZSBmdXp6IHRhcmdldHMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIHByb2JlIHRoZSBsaW1pdHMgb2YgdGhlc2UgZnVuY3Rpb25zLCB0ZXN0aW5nIGVkZ2UgY2FzZXMgYW5kIHRyeWluZyB0byB0cmlnZ2VyIHRoZSBjb25kaXRpb25zIHRoYXQgdGhlIHBhdGNoIGlzIG1lYW50IHRvIHByZXZlbnQuIFRoaXMgaXMgYSBtdXN0LgoKRmluYWxseSwgbGV0JiMzOTtzIHZlcmlmeSB0aGF0IHdlIGhhdmUgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzZXQgdG8gcmVwbGljYXRlIGFuZCB0ZXN0IHRoaXMgYmVoYXZpb3IuIFdlJiMzOTtyZSBnb2luZyB0byBuZWVkIGBDT05GSUdfTkVUX1NDSEVEYCBhbmQgYENPTkZJR19ORVRfQ0xTX1UzMmAgZW5hYmxlZCB0byBydW4gdGhlc2UgdGVzdHMuIExldCBtZSBkb3VibGUtY2hlY2sgdGhhdCBjb25maWcgbmFtZSByZWFsbHkgcXVpY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfQ0xTX1UzMiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTUwNj1jb25maWcgTkVUX0NMU19GV1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnLTUxNS1cbm5ldC9zY2hlZC9LY29uZmlnOjUxNjpjb25maWcgTkVUX0NMU19VMzJcbm5ldC9zY2hlZC9LY29uZmlnLTUxNy1cdHRyaXN0YXRlIFwmIzM0O1VuaXZlcnNhbCAzMmJpdCBjb21wYXJpc29ucyB3LyBoYXNoaW5nIChVMzIpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4MTcKCQkJCQkJCW91dHB1dDogMTE2CgkJCQkJCQl0aG91Z2h0czogMTM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhhdC4KCioqQW5hbHl6aW5nIHRoZSBVMzIgQ2xhc3NpZmllciBQYXRjaCoqCgpSaWdodCwgc28gdGhpcyBwYXRjaCBpcyBhbGwgYWJvdXQgdGhlIGBORVRfQ0xTX1UzMmAgY2xhc3NpZmllci4gVGhhdCYjMzk7cyB0aGUga2V5IGhlcmUuIFRoZSBmb2N1cyBpcyBkZWZpbml0ZWx5IG9uIGB1MzJfY2hhbmdlYCBhbmQgYHUzMl9jbGFzc2lmeWAuIFRoZSBjb3JlIGlzc3VlIGlzIGEgcG90ZW50aWFsIHVuZGVmaW5lZCBiZWhhdmlvciBhcmlzaW5nIGZyb20gYW4gb3V0LW9mLWJvdW5kcyBzaGlmdCBvcGVyYXRpb24sIHNwZWNpZmljYWxseSB3aXRoIGBvZmZzaGlmdGAsIHdpdGhpbiB0aGUgYHUzMl9jbGFzc2lmeWAgZnVuY3Rpb24uIFRoZSBwYXRjaCBhZGRyZXNzZXMgdGhpcyBieSBpbXBsZW1lbnRpbmcgYSBib3VuZHMgY2hlY2sgd2l0aGluIGB1MzJfY2hhbmdlYC4gVGhpcyBwcmV2ZW50cyB0aGUgcHJvYmxlbWF0aWMgc2hpZnQgZnJvbSBoYXBwZW5pbmcgaW4gdGhlIGZpcnN0IHBsYWNlLCByZXNvbHZpbmcgdGhlIHVuZGVmaW5lZCBiZWhhdmlvciByaXNrLiBGcm9tIGEgcHJhY3RpY2FsIHBlcnNwZWN0aXZlLCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIHVzZXItYWNjZXNzaWJsZSB0cmFmZmljIGNsYXNzaWZpZXIsIGFjY2Vzc2libGUgdmlhIG5ldGxpbmsuIFRoZSBwcmltYXJ5IGNvbmZpZyBpcyBgTkVUX0NMU19VMzJgLCBzbyBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIGZvciBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMsIGJ1dCBJIGJlbGlldmUgdGhhdCBpcyB0aGUgcmVsZXZhbnQgY2hlY2suIE5vdyBsZXQmIzM5O3MgZ2V0IHRoZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwOTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0NMU19VMzImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1MzJfY2hhbmdlJiMzNDssCiAgICAmIzM0O3UzMl9jbGFzc2lmeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGZvciBgb2Zmc2hpZnRgIGluIGB1MzJfY2hhbmdlYCB0byBwcmV2ZW50IGEgcG90ZW50aWFsIHVuZGVmaW5lZCBiZWhhdmlvciAoc2hpZnQgb3V0IG9mIGJvdW5kcykgaW4gYHUzMl9jbGFzc2lmeWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdTMyIHRyYWZmaWMgY2xhc3NpZmllciB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIG5ldGxpbmsuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9DTFNfVTMyJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dTMyX2NoYW5nZSYjMzQ7LAogICAgJiMzNDt1MzJfY2xhc3NpZnkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgYG9mZnNoaWZ0YCBpbiBgdTMyX2NoYW5nZWAgdG8gcHJldmVudCBhIHBvdGVudGlhbCB1bmRlZmluZWQgYmVoYXZpb3IgKHNoaWZ0IG91dCBvZiBib3VuZHMpIGluIGB1MzJfY2xhc3NpZnlgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHUzMiB0cmFmZmljIGNsYXNzaWZpZXIgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBuZXRsaW5rLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjRUMDg6NTk6NTIuNjk1NzMyOTM1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcyNjUyNDAyMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0NMU19VMzJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1MzJfY2hhbmdlXCIsXG4gICAgXCJ1MzJfY2xhc3NpZnlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrIGZvciBgb2Zmc2hpZnRgIGluIGB1MzJfY2hhbmdlYCB0byBwcmV2ZW50IGEgcG90ZW50aWFsIHVuZGVmaW5lZCBiZWhhdmlvciAoc2hpZnQgb3V0IG9mIGJvdW5kcykgaW4gYHUzMl9jbGFzc2lmeWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgdTMyIHRyYWZmaWMgY2xhc3NpZmllciB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXIgc3BhY2UgdmlhIG5ldGxpbmsuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjU5OjUyLjY5NTczODY2NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjIwNzEzODc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgM2M2NGVkNDI0ZWUzOWZjZWZiZDg0YTE3NzZjMTJkZmJiNGU0YjA2NlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAyNCAwODo1OTo1MCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvY2xzX3UzMi5jIGIvbmV0L3NjaGVkL2Nsc191MzIuY1xcbmluZGV4IDhmMzBjYzgyMTgxZDljLi5hYzk4YjFjMjE0NGE3OCAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvY2xzX3UzMi5jXFxuKysrIGIvbmV0L3NjaGVkL2Nsc191MzIuY1xcbkBAIC0xMTA3LDYgKzExMDcsMTMgQEAgc3RhdGljIGludCB1MzJfY2hhbmdlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKmluX3NrYixcXG4gXFx0XFx0Z290byBlcnJpZHI7XFxuIFxcdH1cXG4gXFxuK1xcdGlmIChzLVxcdTAwM2VvZmZzaGlmdCBcXHUwMDNlPSAxNikge1xcbitcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLFxcbitcXHRcXHRcXHRcXHQgICBcXFwib2Zmc2hpZnQgbXVzdCBiZSBsZXNzIHRoYW4gMTZcXFwiKTtcXG4rXFx0XFx0ZXJyID0gLUVJTlZBTDtcXG4rXFx0XFx0Z290byBlcnJpZHI7XFxuK1xcdH1cXG4rXFxuIFxcdG4gPSBremFsbG9jX2ZsZXgoKm4sIHNlbC5rZXlzLCBzLVxcdTAwM2Vua2V5cyk7XFxuIFxcdGlmIChuID09IE5VTEwpIHtcXG4gXFx0XFx0ZXJyID0gLUVOT0JVRlM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjU5OjUzLjMxNzE0NDI3M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ2NjQzODE3OTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9DTFNfVTMyXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidTMyX2NoYW5nZVwiLFxuICAgIFwidTMyX2NsYXNzaWZ5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgYG9mZnNoaWZ0YCBpbiBgdTMyX2NoYW5nZWAgdG8gcHJldmVudCBhIHBvdGVudGlhbCB1bmRlZmluZWQgYmVoYXZpb3IgKHNoaWZ0IG91dCBvZiBib3VuZHMpIGluIGB1MzJfY2xhc3NpZnlgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHUzMiB0cmFmZmljIGNsYXNzaWZpZXIgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2VyIHNwYWNlIHZpYSBuZXRsaW5rLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDNjNjRlZDQyNGVlMzlmY2VmYmQ4NGExNzc2YzEyZGZiYjRlNGIwNjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAyNCAwODo1OTo1MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfdTMyLmMgYi9uZXQvc2NoZWQvY2xzX3UzMi5jXG5pbmRleCA4ZjMwY2M4MjE4MWQ5Yy4uYWM5OGIxYzIxNDRhNzggMTAwNjQ0XG4tLS0gYS9uZXQvc2NoZWQvY2xzX3UzMi5jXG4rKysgYi9uZXQvc2NoZWQvY2xzX3UzMi5jXG5AQCAtMTEwNyw2ICsxMTA3LDEzIEBAIHN0YXRpYyBpbnQgdTMyX2NoYW5nZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICppbl9za2IsXG4gXHRcdGdvdG8gZXJyaWRyO1xuIFx0fVxuIFxuK1x0aWYgKHMtXHUwMDNlb2Zmc2hpZnQgXHUwMDNlPSAxNikge1xuK1x0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLFxuK1x0XHRcdFx0ICAgXCJvZmZzaGlmdCBtdXN0IGJlIGxlc3MgdGhhbiAxNlwiKTtcbitcdFx0ZXJyID0gLUVJTlZBTDtcbitcdFx0Z290byBlcnJpZHI7XG4rXHR9XG4rXG4gXHRuID0ga3phbGxvY19mbGV4KCpuLCBzZWwua2V5cywgcy1cdTAwM2Vua2V5cyk7XG4gXHRpZiAobiA9PSBOVUxMKSB7XG4gXHRcdGVyciA9IC1FTk9CVUZTO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDg6NTk6NTMuMzE3MTQ1NDUzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTczMTgwNTM2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldyBgY2xzX3UzMi5jYCBQYXRjaCoqXG5cbk9rYXksIEkgc2VlIGEgbmV3IHBhdGNoIHRoYXQncyBiZWVuIGFwcGxpZWQgdG8gYG5ldC9zY2hlZC9jbHNfdTMyLmNgLiBJdCBsb29rcyBsaWtlIHRoZSBtYWluIGNoYW5nZSBpcyBhIG5ldyB2YWxpZGF0aW9uIGNoZWNrIHdpdGhpbiB0aGUgYHUzMl9jaGFuZ2VgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0J3MgY2hlY2tpbmcgaWYgYHMtXHUwMDNlb2Zmc2hpZnRgIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAxNi4gSWYgaXQgaXMsIHRoZW4gdGhlIHBhdGNoIHRocm93cyBhbiBlcnJvciwgc2V0cyBhbiBleHRlbmRlZCBBQ0sgbWVzc2FnZSwgYW5kIGJhaWxzIG91dC4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlOyBhIG5ldyBzYWZldHkgY2hlY2sgaGFzIGJlZW4gaW50cm9kdWNlZC5cblxuSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBuZXcgcmVzdHJpY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBzYCBpcyBwcm9iYWJseSBhIGBzdHJ1Y3QgdGNfdTMyX3NlbGAsIG9yIHNvbWV0aGluZyBjbG9zZWx5IHJlbGF0ZWQsIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZS4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGF0IGBzLVx1MDAzZW9mZnNoaWZ0YCB2YXJpYWJsZSByZXByZXNlbnRzIHdpdGhpbiB0aGF0IHN0cnVjdHVyZSBhbmQgd2h5IHRoaXMgbGltaXQgb2YgMTYgaXMgYmVpbmcgaW1wb3NlZC4gSSdsbCBxdWlja2x5IHJ1biBhIGBncmVwYCBvbiBgdTMyX2NoYW5nZWAgd2l0aGluIGBuZXQvc2NoZWQvY2xzX3UzMi5jYCB0byBzZWUgaWYgSSBjYW4gZ2V0IHNvbWUgcXVpY2sgY29udGV4dCBhcm91bmQgdGhlIHZhcmlhYmxlIGFuZCBpdHMgdXNhZ2UuIFRoaXMgd2lsbCBnaXZlIG1lIGEgbW9yZSBjb25jcmV0ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBsb2dpYyBiZWhpbmQgdGhpcyBuZXcgdmFsaWRhdGlvbiBjaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk0NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA4OjU5OjU5LjA0ODk1MjkxMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODkyNDQ2NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidTMyX2NoYW5nZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvY2xzX3UzMi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9jbHNfdTMyLmM9ODIxPXN0YXRpYyBzdHJ1Y3QgdGNfdV9rbm9kZSAqdTMyX2luaXRfa25vZGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGNmX3Byb3RvICp0cCxcXG4tLVxcbm5ldC9zY2hlZC9jbHNfdTMyLmMtODcxLVxcbm5ldC9zY2hlZC9jbHNfdTMyLmM6ODcyOnN0YXRpYyBpbnQgdTMyX2NoYW5nZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICppbl9za2IsXFxubmV0L3NjaGVkL2Nsc191MzIuYy04NzMtXFx0XFx0ICAgICAgc3RydWN0IHRjZl9wcm90byAqdHAsIHVuc2lnbmVkIGxvbmcgYmFzZSwgdTMyIGhhbmRsZSxcXG4tLVxcbm5ldC9zY2hlZC9jbHNfdTMyLmM9MTQ2NT1zdGF0aWMgc3RydWN0IHRjZl9wcm90b19vcHMgY2xzX3UzMl9vcHMgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbm5ldC9zY2hlZC9jbHNfdTMyLmMtMTQ3MC1cXHQuZ2V0XFx0XFx0PVxcdHUzMl9nZXQsXFxubmV0L3NjaGVkL2Nsc191MzIuYzoxNDcxOlxcdC5jaGFuZ2VcXHRcXHQ9XFx0dTMyX2NoYW5nZSxcXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTE0NzItXFx0LmRlbGV0ZVxcdFxcdD1cXHR1MzJfZGVsZXRlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwODo1OTo1OS41MzgyMDJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjg5NTAwMjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipEZWNvZGluZyBgc2AgaW4gYHUzMl9jaGFuZ2VgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYHUzMl9jaGFuZ2VgIGZ1bmN0aW9uLiBNeSBwcmltYXJ5IGdvYWwgaGVyZSBpcyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgaW1wbGljYXRpb25zIG9mIHRoZSB2YXJpYWJsZSBgc2AuIEl0J3MgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBmdW5jdGlvbiB3b3JrcywgYW5kIHVsdGltYXRlbHkgaG93IHRoZSBzeXN0ZW0gYmVoYXZlcy4gTGV0J3Mgc3RhcnQgYnkgaWRlbnRpZnlpbmcgaXQncyB1c2UgY2FzZSwgYW5kIHRyYWNpbmcgaXRzIGltcGFjdC4gSSdsbCByZWFkIHRocm91Z2ggdGhlIGNvZGUgbm93IGFuZCB0cnkgdG8gbWFwIG91dCBob3cgdGhhdCB2YXJpYWJsZSBpcyB1c2VkLiBUaGlzIHNob3VsZCBiZSBzdHJhaWdodGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MTcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwOTowMDowMy4yMjc3MDQ1NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MTE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvY2xzX3UzMi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwOTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEwOTA6XFx0XFx0fSBlbHNlIHtcXG4xMDkxOlxcdFxcdFxcdC8qIFRoZSB1c2VyIGRpZCBub3QgZ2l2ZSB1cyBhIGhhbmRsZTsgbGV0cyBqdXN0IGdlbmVyYXRlIG9uZVxcbjEwOTI6XFx0XFx0XFx0ICogZnJvbSB0aGUgdGFibGUncyBwb29sIG9mIG5vZGVpZHMuXFxuMTA5MzpcXHRcXHRcXHQgKi9cXG4xMDk0OlxcdFxcdFxcdGhhbmRsZSA9IGdlbl9uZXdfa2lkKGh0LCBodGlkKTtcXG4xMDk1OlxcdFxcdH1cXG4xMDk2OlxcdFxcbjEwOTc6XFx0XFx0aWYgKHRiW1RDQV9VMzJfU0VMXSA9PSBOVUxMKSB7XFxuMTA5ODpcXHRcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcXFwiU2VsZWN0b3Igbm90IHNwZWNpZmllZFxcXCIpO1xcbjEwOTk6XFx0XFx0XFx0ZXJyID0gLUVJTlZBTDtcXG4xMTAwOlxcdFxcdFxcdGdvdG8gZXJyaWRyO1xcbjExMDE6XFx0XFx0fVxcbjExMDI6XFx0XFxuMTEwMzpcXHRcXHRzID0gbmxhX2RhdGEodGJbVENBX1UzMl9TRUxdKTtcXG4xMTA0OlxcdFxcdHNlbF9zaXplID0gc3RydWN0X3NpemUocywga2V5cywgcy1cXHUwMDNlbmtleXMpO1xcbjExMDU6XFx0XFx0aWYgKG5sYV9sZW4odGJbVENBX1UzMl9TRUxdKSBcXHUwMDNjIHNlbF9zaXplKSB7XFxuMTEwNjpcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbjExMDc6XFx0XFx0XFx0Z290byBlcnJpZHI7XFxuMTEwODpcXHRcXHR9XFxuMTEwOTpcXHRcXG4xMTEwOlxcdFxcdGlmIChzLVxcdTAwM2VvZmZzaGlmdCBcXHUwMDNlPSAxNikge1xcbjExMTE6XFx0XFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjayxcXG4xMTEyOlxcdFxcdFxcdFxcdFxcdCAgIFxcXCJvZmZzaGlmdCBtdXN0IGJlIGxlc3MgdGhhbiAxNlxcXCIpO1xcbjExMTM6XFx0XFx0XFx0ZXJyID0gLUVJTlZBTDtcXG4xMTE0OlxcdFxcdFxcdGdvdG8gZXJyaWRyO1xcbjExMTU6XFx0XFx0fVxcbjExMTY6XFx0XFxuMTExNzpcXHRcXHRuID0ga3phbGxvY19mbGV4KCpuLCBzZWwua2V5cywgcy1cXHUwMDNlbmtleXMpO1xcbjExMTg6XFx0XFx0aWYgKG4gPT0gTlVMTCkge1xcbjExMTk6XFx0XFx0XFx0ZXJyID0gLUVOT0JVRlM7XFxuMTEyMDpcXHRcXHRcXHRnb3RvIGVycmlkcjtcXG4xMTIxOlxcdFxcdH1cXG4xMTIyOlxcdFxcbjExMjM6XFx0I2lmZGVmIENPTkZJR19DTFNfVTMyX1BFUkZcXG4xMTI0OlxcdFxcdG4tXFx1MDAzZXBmID0gX19hbGxvY19wZXJjcHUoc3RydWN0X3NpemUobi1cXHUwMDNlcGYsIGtjbnRzLCBzLVxcdTAwM2Vua2V5cyksXFxuMTEyNTpcXHRcXHRcXHRcXHQgICAgICAgX19hbGlnbm9mX18oc3RydWN0IHRjX3UzMl9wY250KSk7XFxuMTEyNjpcXHRcXHRpZiAoIW4tXFx1MDAzZXBmKSB7XFxuMTEyNzpcXHRcXHRcXHRlcnIgPSAtRU5PQlVGUztcXG4xMTI4OlxcdFxcdFxcdGdvdG8gZXJyZnJlZTtcXG4xMTI5OlxcdFxcdH1cXG4xMTMwOlxcdCNlbmRpZlxcbjExMzE6XFx0XFxuMTEzMjpcXHRcXHR1bnNhZmVfbWVtY3B5KFxcdTAwMjZuLVxcdTAwM2VzZWwsIHMsIHNlbF9zaXplLFxcbjExMzM6XFx0XFx0XFx0ICAgICAgLyogQSBjb21wb3NpdGUgZmxleC1hcnJheSBzdHJ1Y3R1cmUgZGVzdGluYXRpb24sXFxuMTEzNDpcXHRcXHRcXHQgICAgICAgKiB3aGljaCB3YXMgY29ycmVjdGx5IHNpemVkIHdpdGggc3RydWN0X3NpemUoKSxcXG4xMTM1OlxcdFxcdFxcdCAgICAgICAqIGJvdW5kcy1jaGVja2VkIGFnYWluc3QgbmxhX2xlbigpLCBhbmQgYWxsb2NhdGVkXFxuMTEzNjpcXHRcXHRcXHQgICAgICAgKiBhYm92ZS4gKi8pO1xcbjExMzc6XFx0XFx0UkNVX0lOSVRfUE9JTlRFUihuLVxcdTAwM2VodF91cCwgaHQpO1xcbjExMzg6XFx0XFx0bi1cXHUwMDNlaGFuZGxlID0gaGFuZGxlO1xcbjExMzk6XFx0XFx0bi1cXHUwMDNlZnNoaWZ0ID0gcy1cXHUwMDNlaG1hc2sgPyBmZnMobnRvaGwocy1cXHUwMDNlaG1hc2spKSAtIDEgOiAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwOTowMDowMy4yMjc4NjcxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg0NTA3MjQwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQ6XG5cbioqRGVjb2RpbmcgVGhpcyBWYXJpYWJsZSoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgc2VlIGBzYCBhbmQgaXQncyBhc3NpZ25lZCB0byBgbmxhX2RhdGEodGJbVENBX1UzMl9TRUxdKWAuIFJpZ2h0IGF3YXksIHRoZSBgbmxhX2RhdGFgIHBhcnQgbWFrZXMgbWUgdGhpbmsgdGhpcyBpcyBOZXR3b3JrIExpbmsgQXR0cmlidXRlIChOTEEpIGRhdGEsIHdoaWNoIGlzIGNvbW1vbi4gYHRiYCBsaWtlbHkgcmVmZXJzIHRvIGEgdGFibGUgb3IgYW4gYXJyYXkgY29udGFpbmluZyBhdHRyaWJ1dGUgZGF0YSwgcG90ZW50aWFsbHkgd2l0aGluIGEgTmV0bGluayBtZXNzYWdlLiBgVENBX1UzMl9TRUxgLi4uIHRoYXQncyBhIGtleS4gVGhpcyBsaWtlbHkgc3BlY2lmaWVzIGEgXCJzZWxlY3RvclwiIG9yIGEgc3BlY2lmaWMgZWxlbWVudCB3aXRoaW4gdGhhdCBhcnJheSwgYW5kIHRoZSBcIlUzMlwiIHN1Z2dlc3RzIHdlJ3JlIGRlYWxpbmcgd2l0aCBhbiB1bnNpZ25lZCAzMi1iaXQgaW50ZWdlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgd2hhdCBzdHJ1Y3R1cmUgKmV4YWN0bHkqIHRoYXQgYHNgIHZhcmlhYmxlIHJlcHJlc2VudHMuIEl0J3MgbGlrZWx5IGEgcG9pbnRlciBvZiBzb21lIHNvcnQsIHBlcmhhcHMgdG8gYSBzcGVjaWZpYyBmaWVsZCBvciBzdHJ1Y3R1cmUgd2l0aGluIHRoYXQgTmV0bGluayBhdHRyaWJ1dGUuIEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSBkZWZpbml0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGBUQ0FfVTMyX1NFTGAgZW51bSB2YWx1ZSB0byBrbm93IHdoYXQgaXQgaXMgcG9pbnRpbmcgdG8uIEknbSBnb2luZyB0byBkZWx2ZSBpbnRvIHRoZSByZWxldmFudCBoZWFkZXIgZmlsZXMgb3IgZGF0YSBzdHJ1Y3R1cmVzLCB0byB1bmRlcnN0YW5kIHRoZSBgdGJbVENBX1UzMl9TRUxdYCBzdHJ1Y3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2OTMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA5OjAwOjA5LjA3Mjk0MjE5OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1MjA4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvY2xzX3UzMi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDg3MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDg3MDpcXHR9XFxuIDg3MTpcXHRcXG4gODcyOlxcdHN0YXRpYyBpbnQgdTMyX2NoYW5nZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICppbl9za2IsXFxuIDg3MzpcXHRcXHRcXHQgICAgICBzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgdW5zaWduZWQgbG9uZyBiYXNlLCB1MzIgaGFuZGxlLFxcbiA4NzQ6XFx0XFx0XFx0ICAgICAgc3RydWN0IG5sYXR0ciAqKnRjYSwgdm9pZCAqKmFyZywgdTMyIGZsYWdzLFxcbiA4NzU6XFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbiA4NzY6XFx0e1xcbiA4Nzc6XFx0XFx0c3RydWN0IHRjX3VfY29tbW9uICp0cF9jID0gdHAtXFx1MDAzZWRhdGE7XFxuIDg3ODpcXHRcXHRzdHJ1Y3QgdGNfdV9obm9kZSAqaHQ7XFxuIDg3OTpcXHRcXHRzdHJ1Y3QgdGNfdV9rbm9kZSAqbjtcXG4gODgwOlxcdFxcdHN0cnVjdCB0Y191MzJfc2VsICpzO1xcbiA4ODE6XFx0XFx0c3RydWN0IG5sYXR0ciAqb3B0ID0gdGNhW1RDQV9PUFRJT05TXTtcXG4gODgyOlxcdFxcdHN0cnVjdCBubGF0dHIgKnRiW1RDQV9VMzJfTUFYICsgMV07XFxuIDg4MzpcXHRcXHR1MzIgaHRpZCwgdXNlcmZsYWdzID0gMDtcXG4gODg0OlxcdFxcdHNpemVfdCBzZWxfc2l6ZTtcXG4gODg1OlxcdFxcdGludCBlcnI7XFxuIDg4NjpcXHRcXG4gODg3OlxcdFxcdGlmICghb3B0KSB7XFxuIDg4ODpcXHRcXHRcXHRpZiAoaGFuZGxlKSB7XFxuIDg4OTpcXHRcXHRcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcXFwiRmlsdGVyIGhhbmRsZSByZXF1aXJlcyBvcHRpb25zXFxcIik7XFxuIDg5MDpcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gODkxOlxcdFxcdFxcdH0gZWxzZSB7XFxuIDg5MjpcXHRcXHRcXHRcXHRyZXR1cm4gMDtcXG4gODkzOlxcdFxcdFxcdH1cXG4gODk0OlxcdFxcdH1cXG4gODk1OlxcdFxcbiA4OTY6XFx0XFx0ZXJyID0gbmxhX3BhcnNlX25lc3RlZF9kZXByZWNhdGVkKHRiLCBUQ0FfVTMyX01BWCwgb3B0LCB1MzJfcG9saWN5LFxcbiA4OTc6XFx0XFx0XFx0XFx0XFx0XFx0ICBleHRhY2spO1xcbiA4OTg6XFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuIDg5OTpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiA5MDA6XFx0XFxuIDkwMTpcXHRcXHRpZiAodGJbVENBX1UzMl9GTEFHU10pIHtcXG4gOTAyOlxcdFxcdFxcdHVzZXJmbGFncyA9IG5sYV9nZXRfdTMyKHRiW1RDQV9VMzJfRkxBR1NdKTtcXG4gOTAzOlxcdFxcdFxcdGlmICghdGNfZmxhZ3NfdmFsaWQodXNlcmZsYWdzKSkge1xcbiA5MDQ6XFx0XFx0XFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXFxcIkludmFsaWQgZmlsdGVyIGZsYWdzXFxcIik7XFxuIDkwNTpcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gOTA2OlxcdFxcdFxcdH1cXG4gOTA3OlxcdFxcdH1cXG4gOTA4OlxcdFxcbiA5MDk6XFx0XFx0biA9ICphcmc7XFxuIDkxMDpcXHRcXHRpZiAobikge1xcbiA5MTE6XFx0XFx0XFx0c3RydWN0IHRjX3Vfa25vZGUgKm5ldztcXG4gOTEyOlxcdFxcbiA5MTM6XFx0XFx0XFx0aWYgKFRDX1UzMl9LRVkobi1cXHUwMDNlaGFuZGxlKSA9PSAwKSB7XFxuIDkxNDpcXHRcXHRcXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcXFwiS2V5IG5vZGUgaWQgY2Fubm90IGJlIHplcm9cXFwiKTtcXG4gOTE1OlxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA5MTY6XFx0XFx0XFx0fVxcbiA5MTc6XFx0XFxuIDkxODpcXHRcXHRcXHRpZiAoKG4tXFx1MDAzZWZsYWdzIF4gdXNlcmZsYWdzKSBcXHUwMDI2XFxuIDkxOTpcXHRcXHRcXHQgICAgfihUQ0FfQ0xTX0ZMQUdTX0lOX0hXIHwgVENBX0NMU19GTEFHU19OT1RfSU5fSFcpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA5OjAwOjA5LjA3MzI5NjQ1OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzNDQ5NTg4MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSB1MzIgVHJhZmZpYyBDbGFzc2lmaWVyIENoYW5nZSoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgbmV3IHBhdGNoIGluIGZyb250IG9mIG1lLCBhbmQgaXQgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgYHUzMmAgdHJhZmZpYyBjbGFzc2lmaWVyIOKAkyBzcGVjaWZpY2FsbHksIHRoZSBgc3RydWN0IHRjX3UzMl9zZWxgIHN0cnVjdHVyZSwgcmVwcmVzZW50ZWQgYnkgYHNgIGhlcmUuIFRoZSBrZXkgYWRkaXRpb24gaXMgdGhpcyBjaGVjazogYHMtXHUwMDNlb2Zmc2hpZnQgXHUwMDNlPSAxNmAuIElmIHRoYXQgY29uZGl0aW9uIGlzIHRydWUsIHdlIHJldHVybiBgLUVJTlZBTGAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHJlY29nbml6ZSB0aGlzIGFzIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgZml4LCBvciBhdCB0aGUgdmVyeSBsZWFzdCwgYSByZXN0cmljdGlvbiBvbiBob3cgdGhlIGNsYXNzaWZpZXIgb3BlcmF0ZXMuXG5cbkdpdmVuIHRoYXQgaXQncyBhIGNoYW5nZSB3aXRoaW4gdGhlIGBjbHNfdTMyYCBtb2R1bGUsIGFuZCB0aGF0IHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBhY2Nlc3NpYmxlIHZpYSBOZXRsaW5rIChgdGMgZmlsdGVyIGFkZCAuLi4gdTMyYCksIHRoaXMgc2NyZWFtcyBcImZ1enogbWUhXCIgdG8gbWUuIFRoYXQncyBteSBpbml0aWFsIHRob3VnaHQuIFdlIG5lZWQgdG8gdGhyb3cgZXZlcnl0aGluZyB3ZSBjYW4gYXQgdGhpcyB0aHJvdWdoIGB0Y2AgY29tbWFuZHMgYW5kIHNlZSBpZiB3ZSBjYW4gdHJpZ2dlciBhbnkgdW5leHBlY3RlZCBiZWhhdmlvci5cblxuTm93LCBsZXQncyB6ZXJvIGluIG9uIHRoZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkLiBNeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiBgdTMyX2NoYW5nZWAgYW5kIEkgbmVlZCB0byBjaGVjayB3aGVyZSBgb2Zmc2hpZnRgIGlzIHVzZWQuIEkgdGhpbmsgdGhlcmUgbWlnaHQgYmUgYW4gaXNzdWUgdGhhdCB0aGUgcGF0Y2ggcHJldmVudHMgYW5kIHRoYXQgbWlnaHQgYmUgc29tZXRoaW5nIGluIGB1MzJfY2xhc3NpZnlgIG9yIHBvdGVudGlhbGx5IGB1MzJfc2V0X3Bhcm1zYCBvciBvdGhlciBmdW5jdGlvbnMgdGhhdCByZWx5IG9uIG9yIHNldCBgb2Zmc2hpZnRgLiBMZXQgbWUgZGlnIGludG8gdGhlIGNvZGUgYW5kIHNlZSBleGFjdGx5IHdoZXJlIHRoaXMgYG9mZnNoaWZ0YCBmaWVsZCBpcyBiZWluZyB1dGlsaXplZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBuZXcgY29uc3RyYWludC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg0MCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA5OjAwOjE0LjQxODI1ODc3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTM5ODU0NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib2Zmc2hpZnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL2Nsc191MzIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvY2xzX3UzMi5jPTExND1UQ19JTkRJUkVDVF9TQ09QRSBpbnQgdTMyX2NsYXNzaWZ5KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTIzNi1cXHRcXHRcXHRcXHRvZmYyICs9IG50b2hzKG4tXFx1MDAzZXNlbC5vZmZtYXNrIFxcdTAwMjYgKmRhdGEpIFxcdTAwM2VcXHUwMDNlXFxubmV0L3NjaGVkL2Nsc191MzIuYzoyMzc6XFx0XFx0XFx0XFx0XFx0bi1cXHUwMDNlc2VsLm9mZnNoaWZ0O1xcbm5ldC9zY2hlZC9jbHNfdTMyLmMtMjM4LVxcdFxcdFxcdH1cXG4tLVxcbm5ldC9zY2hlZC9jbHNfdTMyLmM9ODcyPXN0YXRpYyBpbnQgdTMyX2NoYW5nZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICppbl9za2IsXFxuLS1cXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTExMDktXFxubmV0L3NjaGVkL2Nsc191MzIuYzoxMTEwOlxcdGlmIChzLVxcdTAwM2VvZmZzaGlmdCBcXHUwMDNlPSAxNikge1xcbm5ldC9zY2hlZC9jbHNfdTMyLmMtMTExMS1cXHRcXHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLFxcbm5ldC9zY2hlZC9jbHNfdTMyLmM6MTExMjpcXHRcXHRcXHRcXHQgICBcXFwib2Zmc2hpZnQgbXVzdCBiZSBsZXNzIHRoYW4gMTZcXFwiKTtcXG5uZXQvc2NoZWQvY2xzX3UzMi5jLTExMTMtXFx0XFx0ZXJyID0gLUVJTlZBTDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDk6MDA6MTQuOTEyMjU2NTQ4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk5Njg4ODg2NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIEludGVnZXIgT3ZlcmZsb3cgaW4gYHUzMl9jbGFzc2lmeWAqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHNuaXBwZXQgZnJvbSBgdTMyX2NsYXNzaWZ5YDpcblxuYGBgY1xuXHRcdFx0XHRvZmYyICs9IG50b2hzKG4tXHUwMDNlc2VsLm9mZm1hc2sgXHUwMDI2ICpkYXRhKSBcdTAwM2VcdTAwM2Vcblx0XHRcdFx0XHRuLVx1MDAzZXNlbC5vZmZzaGlmdDtcbmBgYFxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGUgcmlnaHQtc2hpZnQgb3BlcmF0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIGBuLVx1MDAzZXNlbC5vZmZzaGlmdGAgdmFsdWUsIGNvdWxkIHBvdGVudGlhbGx5IGxlYWQgdG8gdW5kZWZpbmVkIGJlaGF2aW9yLiBJZiBgb2Zmc2hpZnRgIGlzIDE2IG9yIGdyZWF0ZXIsIHNoaWZ0aW5nIGEgMTYtYml0IHZhbHVlLCB3aGljaCBpcyB3aGF0IGBudG9oc2AgcmV0dXJucywgYnkgMTYgYml0cyBzZWVtcyBza2V0Y2h5LiBBbHRob3VnaCBgbnRvaHNgIHJldHVybnMgYSBgX191MTZgLCBpdCdzIHByb21vdGVkIHRvIGFuIGBpbnRgIGluIEMsIHdoaWNoIG9uIGEgMzItYml0IHN5c3RlbSB3b3VsZCBiZSBmaW5lIHdpdGggYSBzaGlmdCBvZiAxNiwgYnV0IGl0J3Mgd29ydGggZGlnZ2luZyBpbiB0byB0aGlzLiBJdCBjb3VsZCd2ZSBiZWVuIGEgc291cmNlIG9mIHN1YnRsZSBpc3N1ZXMgb3IgZXZlbiBvdXRyaWdodCBpbnZhbGlkIGJlaGF2aW9yIGRvd24gdGhlIGxpbmUuXG5cbkFjdHVhbGx5LCB0aGUgcHJvbW90aW9uIHRvIGBpbnRgIGlzIGtleSBoZXJlLiBTaW5jZSBgbnRvaHNgIHJldHVybnMgYF9fdTE2YCBhbmQgaXQncyBwcm9tb3RlZCB0byBgaW50YCwgc2hpZnRpbmcgYnkgMTYgYml0cyBpcyBwZXJmZWN0bHkgdmFsaWQgZm9yIGEgMzItYml0IGBpbnRgLCBob3dldmVyLCBJIHdvbmRlciBpZiBhIGxhcmdlciB2YWx1ZSBvZiBgb2Zmc2hpZnRgIG1pZ2h0IHN0aWxsIGNhdXNlIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIGluIGxhdGVyIGNvZGUsIG9yLCBpZiBgb2Zmc2hpZnRgIGlzIGxhcmdlIGVub3VnaCwgcGVyaGFwcyBldmVuIGEgc2hpZnQgYnkgMzIgb3IgbW9yZSBiaXRzLCB3aGljaCAqd291bGQqIGJlIHVuZGVmaW5lZC4gV2FpdCBhIHNlY29uZCwgZGlkbid0IEkgZGVmaW5lIHRoZSB0eXBlIG9mIGBvZmZzaGlmdGAgaW4gYHN0cnVjdCB0Y191MzJfc2VsYCB0byBiZSBgX191OGA/IEknZCBiZXR0ZXIgY29uZmlybSB0aGF0IGJlY2F1c2UgdGhhdCByYWRpY2FsbHkgY2hhbmdlcyB0aGUgcG9zc2liaWxpdGllcy4gT2theSwgdGltZSB0byBjaGVjayBgc3RydWN0IHRjX3UzMl9zZWxgIHRvIGdldCB0aGUgd2hvbGUgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY1OSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwOTowMDoyNC44ODExNDgzNTFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NDUwNTIxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdHJ1Y3QgdGNfdTMyX3NlbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9wa3RfY2xzLmg9NjY5PXN0cnVjdCB0Y19jbHNfdTMyX2tub2RlIHtcXG4tLVxcbmluY2x1ZGUvbmV0L3BrdF9jbHMuaC02NzEtXFx0c3RydWN0IHRjZl9yZXN1bHQgKnJlcztcXG5pbmNsdWRlL25ldC9wa3RfY2xzLmg6NjcyOlxcdHN0cnVjdCB0Y191MzJfc2VsICpzZWw7XFxuaW5jbHVkZS9uZXQvcGt0X2Nscy5oLTY3My1cXHR1MzIgaGFuZGxlO1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L3BrdF9jbHMuaD0yNDE9c3RydWN0IHRjX3UzMl9rZXkge1xcbi0tXFxuaW5jbHVkZS91YXBpL2xpbnV4L3BrdF9jbHMuaC0yNDctXFxuaW5jbHVkZS91YXBpL2xpbnV4L3BrdF9jbHMuaDoyNDg6c3RydWN0IHRjX3UzMl9zZWwge1xcbmluY2x1ZGUvdWFwaS9saW51eC9wa3RfY2xzLmgtMjQ5LVxcdC8qIE5ldyBtZW1iZXJzIE1VU1QgYmUgYWRkZWQgd2l0aGluIHRoZSBfX3N0cnVjdF9ncm91cCgpIG1hY3JvIGJlbG93LiAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwOTowMDoyNS4wNjU2NTgzNjVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIwNjAyNzkxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIGB0Y191MzJfc2VsYCBTdHJ1Y3R1cmUqKlxuXG5Pa2F5LCB0aW1lIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBgdGNfdTMyX3NlbGAgc3RydWN0dXJlLiBMZXQncyBwdWxsIHVwIHRoZSBkZWZpbml0aW9uIGZyb20gYGluY2x1ZGUvdWFwaS9saW51eC9wa3RfY2xzLmhgLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhpcyB0aGluZyBpcyBkZWZpbmVkLCBzcGVjaWZpY2FsbHkgaG93IHNlbGVjdG9ycyB3b3JrLiBJJ20gcHJpbWFyaWx5IGludGVyZXN0ZWQgaW4gaG93IHRoZSBtYXRjaCBjcml0ZXJpYSBhcmUgY29uc3RydWN0ZWQgYW5kIGFwcGxpZWQgYXQgYSBsb3cgbGV2ZWwgd2l0aGluIHRoZSBVMzIgY2xhc3NpZmllci4gVGhlIHNwZWNpZmljIGRldGFpbHMgd2lsbCB0ZWxsIG1lIHdoYXQgdGhlIGxpbWl0YXRpb25zIGFyZSBpbiBob3cgY29tcGxleCBtYXRjaGVzIGNhbiBiZSBwZXJmb3JtZWQsIGFuZCB3aGF0IG9wdGlvbnMgdGhlcmUgYXJlIGZvciBvcHRpbWl6aW5nIHRoZSBtYXRjaGluZyBwcm9jZXNzIGl0c2VsZi4gR290dGEgY29uc2lkZXIgdGhpbmdzIGxpa2UgcG90ZW50aWFsIGNvbmZsaWN0cyBiZXR3ZWVuIHNlbGVjdG9ycywgdGhlIGltcGFjdCBvZiBtYXNrIHZhbHVlcywgYW5kIHRoZSBvdmVyYWxsIGVmZmljaWVuY3kgb2YgdGhlIHNlbGVjdGlvbiBhbGdvcml0aG0sIGJlY2F1c2UgSSBrbm93IHRoYXQncyB3aGVyZSB0aGUgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MgY2FuIG9mdGVuIGhpZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1NTAsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwOTowMDoyOC4yNzE2ODgzOTVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODUyODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5jbHVkZS91YXBpL2xpbnV4L3BrdF9jbHMuaFwiLFxuICBcIkZpcnN0TGluZVwiOiAyNDAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNDA6XFx0XFxuIDI0MTpcXHRzdHJ1Y3QgdGNfdTMyX2tleSB7XFxuIDI0MjpcXHRcXHRfX2JlMzJcXHRcXHRtYXNrO1xcbiAyNDM6XFx0XFx0X19iZTMyXFx0XFx0dmFsO1xcbiAyNDQ6XFx0XFx0aW50XFx0XFx0b2ZmO1xcbiAyNDU6XFx0XFx0aW50XFx0XFx0b2ZmbWFzaztcXG4gMjQ2OlxcdH07XFxuIDI0NzpcXHRcXG4gMjQ4OlxcdHN0cnVjdCB0Y191MzJfc2VsIHtcXG4gMjQ5OlxcdFxcdC8qIE5ldyBtZW1iZXJzIE1VU1QgYmUgYWRkZWQgd2l0aGluIHRoZSBfX3N0cnVjdF9ncm91cCgpIG1hY3JvIGJlbG93LiAqL1xcbiAyNTA6XFx0XFx0X19zdHJ1Y3RfZ3JvdXAodGNfdTMyX3NlbF9oZHIsIGhkciwgLyogbm8gYXR0cnMgKi8sXFxuIDI1MTpcXHRcXHRcXHR1bnNpZ25lZCBjaGFyXFx0XFx0ZmxhZ3M7XFxuIDI1MjpcXHRcXHRcXHR1bnNpZ25lZCBjaGFyXFx0XFx0b2Zmc2hpZnQ7XFxuIDI1MzpcXHRcXHRcXHR1bnNpZ25lZCBjaGFyXFx0XFx0bmtleXM7XFxuIDI1NDpcXHRcXG4gMjU1OlxcdFxcdFxcdF9fYmUxNlxcdFxcdFxcdG9mZm1hc2s7XFxuIDI1NjpcXHRcXHRcXHRfX3UxNlxcdFxcdFxcdG9mZjtcXG4gMjU3OlxcdFxcdFxcdHNob3J0XFx0XFx0XFx0b2Zmb2ZmO1xcbiAyNTg6XFx0XFxuIDI1OTpcXHRcXHRcXHRzaG9ydFxcdFxcdFxcdGhvZmY7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA5OjAwOjI4LjI3MTc3NTIxNVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzYwMjEwMzY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBWdWxuZXJhYmlsaXR5IGluIE5ldHdvcmsgUGFja2V0IENsYXNzaWZpY2F0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBzZWUgYSBwb3RlbnRpYWwgaXNzdWUgd2l0aCBob3cgYG9mZnNoaWZ0YCBpcyBiZWluZyB1c2VkLiBJdCdzIGFuIGB1bnNpZ25lZCBjaGFyYCwgbWVhbmluZyBpdCBjYW4gaG9sZCB2YWx1ZXMgdXAgdG8gMjU1LiBCdXQgaW4gdGhlIGB1MzJfY2xhc3NpZnlgIGZ1bmN0aW9uLCB3ZSBoYXZlIHRoaXMgc25pcHBldDpcblxuYGBgY1xuXHRcdFx0XHRvZmYyICs9IG50b2hzKG4tXHUwMDNlc2VsLm9mZm1hc2sgXHUwMDI2ICpkYXRhKSBcdTAwM2VcdTAwM2Vcblx0XHRcdFx0XHRuLVx1MDAzZXNlbC5vZmZzaGlmdDtcbmBgYFxuXG5IZXJlJ3MgdGhlIHByb2JsZW0uICBJZiBgb2Zmc2hpZnRgIHNvbWVob3cgZW5kcyB1cCBiZWluZyAzMiBvciBncmVhdGVyLCBzaGlmdGluZyBhbiBgaW50YCAod2hpY2ggaXMgd2hhdCBgbnRvaHMobi1cdTAwM2VzZWwub2ZmbWFzayBcdTAwMjYgKmRhdGEpYCBsaWtlbHkgZXZhbHVhdGVzIHRvKSBieSAzMiBvciBtb3JlIGJpdHMgaXMgKnVuZGVmaW5lZCBiZWhhdmlvciogaW4gQy4gVGhpcyBpcyBhIHZlcnkgY3JpdGljYWwgY29uY2Vybi4gV2hpbGUgaXQgbWlnaHQgbm90IGNyYXNoIGltbWVkaWF0ZWx5LCBpdCBpbnRyb2R1Y2VzIHVucHJlZGljdGFibGUgcmVzdWx0cyBhbmQgb3BlbnMgdGhlIGRvb3IgZm9yIGV4cGxvaXRhYmxlIHZ1bG5lcmFiaWxpdGllcywgZXNwZWNpYWxseSBpbiBhIG5ldHdvcmsgY29udGV4dC5cblxuVGhlIHBhdGNoIEknbSByZXZpZXdpbmcgYXBwZWFycyB0byBhZGRyZXNzIHRoaXMgZGlyZWN0bHkgYnkgcmVzdHJpY3RpbmcgYG9mZnNoaWZ0YCB0byBiZSBsZXNzIHRoYW4gMTYuIFRoYXQncyBhIHNvbGlkIGZpeCwgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBwcmV2ZW50IHRoZSB1bmRlZmluZWQgYmVoYXZpb3IuIEl0IG1lYW5zIHdlJ3JlIHRyYWRpbmcgb2ZmIGEgbGl0dGxlIGJpdCBvZiBmbGV4aWJpbGl0eSBpbiB0aGUgY2xhc3NpZmljYXRpb24gbG9naWMgZm9yIG11Y2ggbW9yZSByb2J1c3QgYW5kIHByZWRpY3RhYmxlIGJlaGF2aW9yLiBHaXZlbiB0aGUgcG90ZW50aWFsIGltcGFjdCwgdGhpcyBpcyBkZWZpbml0ZWx5IGEgZ29vZCBjaGFuZ2UuXG5cbk5vdywgbXkgbmV4dCB0aG91Z2h0IGlzLCB3ZSBhYnNvbHV0ZWx5IG5lZWQgdG8gZnV6eiBgdTMyX2NoYW5nZWAgYW5kIGB1MzJfY2xhc3NpZnlgIHdpdGggYSBmb2N1c2VkIGFwcHJvYWNoLiAgV2Ugc2hvdWxkIGNyZWF0ZSBmdXp6IHRhcmdldHMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIHByb2JlIHRoZSBsaW1pdHMgb2YgdGhlc2UgZnVuY3Rpb25zLCB0ZXN0aW5nIGVkZ2UgY2FzZXMgYW5kIHRyeWluZyB0byB0cmlnZ2VyIHRoZSBjb25kaXRpb25zIHRoYXQgdGhlIHBhdGNoIGlzIG1lYW50IHRvIHByZXZlbnQuIFRoaXMgaXMgYSBtdXN0LlxuXG5GaW5hbGx5LCBsZXQncyB2ZXJpZnkgdGhhdCB3ZSBoYXZlIHRoZSByaWdodCBjb25maWd1cmF0aW9uIG9wdGlvbnMgc2V0IHRvIHJlcGxpY2F0ZSBhbmQgdGVzdCB0aGlzIGJlaGF2aW9yLiBXZSdyZSBnb2luZyB0byBuZWVkIGBDT05GSUdfTkVUX1NDSEVEYCBhbmQgYENPTkZJR19ORVRfQ0xTX1UzMmAgZW5hYmxlZCB0byBydW4gdGhlc2UgdGVzdHMuIExldCBtZSBkb3VibGUtY2hlY2sgdGhhdCBjb25maWcgbmFtZSByZWFsbHkgcXVpY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwODIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwOTowMDozNC42MzE5ODg0MDFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1MzI1OTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfQ0xTX1UzMlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz01MDY9Y29uZmlnIE5FVF9DTFNfRldcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTUxNS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo1MTY6Y29uZmlnIE5FVF9DTFNfVTMyXFxubmV0L3NjaGVkL0tjb25maWctNTE3LVxcdHRyaXN0YXRlIFxcXCJVbml2ZXJzYWwgMzJiaXQgY29tcGFyaXNvbnMgdy8gaGFzaGluZyAoVTMyKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDk6MDA6MzQuNjk3MzE4OTk1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNzMxNjA0NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRoYXQuXG5cbioqQW5hbHl6aW5nIHRoZSBVMzIgQ2xhc3NpZmllciBQYXRjaCoqXG5cblJpZ2h0LCBzbyB0aGlzIHBhdGNoIGlzIGFsbCBhYm91dCB0aGUgYE5FVF9DTFNfVTMyYCBjbGFzc2lmaWVyLiBUaGF0J3MgdGhlIGtleSBoZXJlLiBUaGUgZm9jdXMgaXMgZGVmaW5pdGVseSBvbiBgdTMyX2NoYW5nZWAgYW5kIGB1MzJfY2xhc3NpZnlgLiBUaGUgY29yZSBpc3N1ZSBpcyBhIHBvdGVudGlhbCB1bmRlZmluZWQgYmVoYXZpb3IgYXJpc2luZyBmcm9tIGFuIG91dC1vZi1ib3VuZHMgc2hpZnQgb3BlcmF0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aCBgb2Zmc2hpZnRgLCB3aXRoaW4gdGhlIGB1MzJfY2xhc3NpZnlgIGZ1bmN0aW9uLiBUaGUgcGF0Y2ggYWRkcmVzc2VzIHRoaXMgYnkgaW1wbGVtZW50aW5nIGEgYm91bmRzIGNoZWNrIHdpdGhpbiBgdTMyX2NoYW5nZWAuIFRoaXMgcHJldmVudHMgdGhlIHByb2JsZW1hdGljIHNoaWZ0IGZyb20gaGFwcGVuaW5nIGluIHRoZSBmaXJzdCBwbGFjZSwgcmVzb2x2aW5nIHRoZSB1bmRlZmluZWQgYmVoYXZpb3Igcmlzay4gRnJvbSBhIHByYWN0aWNhbCBwZXJzcGVjdGl2ZSwgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSB1c2VyLWFjY2Vzc2libGUgdHJhZmZpYyBjbGFzc2lmaWVyLCBhY2Nlc3NpYmxlIHZpYSBuZXRsaW5rLiBUaGUgcHJpbWFyeSBjb25maWcgaXMgYE5FVF9DTFNfVTMyYCwgc28gSSdsbCBxdWlja2x5IGNoZWNrIGZvciBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMsIGJ1dCBJIGJlbGlldmUgdGhhdCBpcyB0aGUgcmVsZXZhbnQgY2hlY2suIE5vdyBsZXQncyBnZXQgdGhlIHJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4MTcsIk91dHB1dFRva2VucyI6MTE2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA5OjAwOjM5Ljg3MDQ4MjE3MVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwNDc1MjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfQ0xTX1UzMlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInUzMl9jaGFuZ2VcIixcbiAgICBcInUzMl9jbGFzc2lmeVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgZm9yIGBvZmZzaGlmdGAgaW4gYHUzMl9jaGFuZ2VgIHRvIHByZXZlbnQgYSBwb3RlbnRpYWwgdW5kZWZpbmVkIGJlaGF2aW9yIChzaGlmdCBvdXQgb2YgYm91bmRzKSBpbiBgdTMyX2NsYXNzaWZ5YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSB1MzIgdHJhZmZpYyBjbGFzc2lmaWVyIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgbmV0bGluay5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfQ0xTX1UzMlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInUzMl9jaGFuZ2VcIixcbiAgICBcInUzMl9jbGFzc2lmeVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2sgZm9yIGBvZmZzaGlmdGAgaW4gYHUzMl9jaGFuZ2VgIHRvIHByZXZlbnQgYSBwb3RlbnRpYWwgdW5kZWZpbmVkIGJlaGF2aW9yIChzaGlmdCBvdXQgb2YgYm91bmRzKSBpbiBgdTMyX2NsYXNzaWZ5YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSB1MzIgdHJhZmZpYyBjbGFzc2lmaWVyIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZSB2aWEgbmV0bGluay5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfjkvm[1] Phase: Succeeded StartedAt: 2026-07-24 09:02:01 +0000 UTC FinishedAt: 2026-07-24 09:02:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfjkvm[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-24 09:02:01 +0000 UTC FinishedAt: 2026-07-24 09:02:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfjkvm[2] Phase: Succeeded StartedAt: 2026-07-24 09:02:01 +0000 UTC FinishedAt: 2026-07-24 13:21:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-24 09:02:01 +0000 UTC FinishedAt: 2026-07-24 13:21:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-24 09:02:01 +0000 UTC FinishedAt: 2026-07-24 09:06:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-24 09:02:01 +0000 UTC FinishedAt: 2026-07-24 09:06:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowfjkvm/series-workflowfjkvm-convert-artifact-882610135/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-24 09:06:36 +0000 UTC FinishedAt: 2026-07-24 09:44:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-24 09:06:36 +0000 UTC FinishedAt: 2026-07-24 09:44:31 +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:*5c94e197-bf0c-4f60-bfe0-e788c64533f9,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-workflowfjkvm/series-workflowfjkvm-convert-artifact-882610135/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": "413bdce9-6fea-441d-b42a-905402c0a049", "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-workflowfjkvm/series-workflowfjkvm-build-action-2062815277/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-24 09:06:36 +0000 UTC FinishedAt: 2026-07-24 09:44:18 +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:*5c94e197-bf0c-4f60-bfe0-e788c64533f9,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-workflowfjkvm/series-workflowfjkvm-convert-artifact-882610135/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": "413bdce9-6fea-441d-b42a-905402c0a049", "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-workflowfjkvm/series-workflowfjkvm-build-action-2062815277/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-24 09:44:31 +0000 UTC FinishedAt: 2026-07-24 09:44:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-24 09:44:32 +0000 UTC FinishedAt: 2026-07-24 09:44:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-24 09:44:32 +0000 UTC FinishedAt: 2026-07-24 09:44:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-24 09:44:32 +0000 UTC FinishedAt: 2026-07-24 09:44:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowfjkvm/series-workflowfjkvm-convert-artifact-1273359622/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-24 09:44:42 +0000 UTC FinishedAt: 2026-07-24 09:47:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-24 09:44:42 +0000 UTC FinishedAt: 2026-07-24 09:46:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*413bdce9-6fea-441d-b42a-905402c0a049,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-workflowfjkvm/series-workflowfjkvm-build-action-2062815277/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-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-24 09:47:10 +0000 UTC FinishedAt: 2026-07-24 09:47:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-24 09:47:10 +0000 UTC FinishedAt: 2026-07-24 09:47:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-24 09:47:10 +0000 UTC FinishedAt: 2026-07-24 10:16:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-24 09:47:10 +0000 UTC FinishedAt: 2026-07-24 10:16:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*5c94e197-bf0c-4f60-bfe0-e788c64533f9,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-workflowfjkvm/series-workflowfjkvm-convert-artifact-1273359622/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": "f47d560b-307f-48b5-9b2e-453ff2d25891", "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-workflowfjkvm/series-workflowfjkvm-build-action-91571018/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-24 09:47:10 +0000 UTC FinishedAt: 2026-07-24 10:16:29 +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:*5c94e197-bf0c-4f60-bfe0-e788c64533f9,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-workflowfjkvm/series-workflowfjkvm-convert-artifact-1273359622/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": "f47d560b-307f-48b5-9b2e-453ff2d25891", "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-workflowfjkvm/series-workflowfjkvm-build-action-91571018/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-24 10:16:39 +0000 UTC FinishedAt: 2026-07-24 10:16:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-24 10:16:39 +0000 UTC FinishedAt: 2026-07-24 10:16:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-24 10:16:39 +0000 UTC FinishedAt: 2026-07-24 10:18:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-24 10:16:39 +0000 UTC FinishedAt: 2026-07-24 10:18:38 +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:*f47d560b-307f-48b5-9b2e-453ff2d25891,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-workflowfjkvm/series-workflowfjkvm-build-action-91571018/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-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-24 10:18:48 +0000 UTC FinishedAt: 2026-07-24 13:21:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-24 10:18:48 +0000 UTC FinishedAt: 2026-07-24 13:21:04 +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":["u32_change","u32_classify"],"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:*413bdce9-6fea-441d-b42a-905402c0a049,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f47d560b-307f-48b5-9b2e-453ff2d25891,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-workflowfjkvm/series-workflowfjkvm-build-action-2062815277/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-workflowfjkvm/series-workflowfjkvm-build-action-91571018/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-24 10:18:48 +0000 UTC FinishedAt: 2026-07-24 10:18:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-24 10:18:48 +0000 UTC FinishedAt: 2026-07-24 10:18:53 +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":["u32_change","u32_classify"],"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-workflowfjkvm/series-workflowfjkvm-convert-artifact-4073209803/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-24 10:18:48 +0000 UTC FinishedAt: 2026-07-24 10:18:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-24 10:18:48 +0000 UTC FinishedAt: 2026-07-24 10:18:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-24 10:18:48 +0000 UTC FinishedAt: 2026-07-24 10:18:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-24 10:18:58 +0000 UTC FinishedAt: 2026-07-24 13:21:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfjkvm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["u32_change","u32_classify"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"78f75d632f74b8de0f081a128588f7c37d0d1164","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_CLS_U32"],"series_id":"148d9929-7c65-4b4a-b4c6-2acbb8d4b7a5","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-24 10:18:58 +0000 UTC FinishedAt: 2026-07-24 13:20:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*413bdce9-6fea-441d-b42a-905402c0a049,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f47d560b-307f-48b5-9b2e-453ff2d25891,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-workflowfjkvm/series-workflowfjkvm-build-action-2062815277/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-workflowfjkvm/series-workflowfjkvm-build-action-91571018/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-workflowfjkvm/series-workflowfjkvm-convert-artifact-4073209803/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,}