Name: series-workflownvfqs Phase: Succeeded StartedAt: 2026-07-15 22:03:49 +0000 UTC FinishedAt: 2026-07-16 03:28:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflownvfqs[0] Phase: Succeeded StartedAt: 2026-07-15 22:03:49 +0000 UTC FinishedAt: 2026-07-15 22:35:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflownvfqs[0].run-triage Phase: Succeeded StartedAt: 2026-07-15 22:03:49 +0000 UTC FinishedAt: 2026-07-15 22:35:32 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d1f4b56417a3dc1a0600f960b14f46bd25eda89d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d1f4b56417a3dc1a0600f960b14f46bd25eda89d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "bb4cf268-ec03-473b-a48b-e66b52810129" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "check_func_arg", "bpf_fetch_kfunc_arg_meta" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfZnVuY19hcmcmIzM0OywKICAgICYjMzQ7YnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gZGlzYWJsZSByYXcgbW9kZSBmb3IgYnBmX21hcF9wZWVrX2VsZW0oKSBvbiBibG9vbSBmaWx0ZXJzLCBwcmV2ZW50aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZyb20gYmVpbmcgcGFzc2VkIHRvIHRoZSBoZWxwZXIuIEl0IGFsc28gemVyb2VzIHRoZSBtZXRhIHN0cnVjdCBpbiBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGEoKSBiZWZvcmUgY2FsbGluZyBmZXRjaF9rZnVuY19tZXRhKCksIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSB3aGVuIHRoZSBmZXRjaCBmYWlscy4gQm90aCBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBCUEYgdmVyaWZpZXIgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTU4ZDFjNGE5YzBiNDMwNDYzNDFiMmU5NDFiZGI3MTFjYzBjZDE3YlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDE1IDIyOjM0OjMwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggZGU4MTYwNjNhZTYzZDAuLmRkZmE0ZjU3MDE2Yjc0IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC04NDIyLDYgJiM0Mzs4NDIyLDE1IEBAIHN0YXRpYyBpbnQgY2hlY2tfZnVuY19hcmcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgdTMyIGFyZyxcbiBcdFx0XHR2ZXJpZmllcl9idWcoZW52LCBcJiMzNDtpbnZhbGlkIG1hcF9wdHIgdG8gYWNjZXNzIG1hcC1cdTAwM2V2YWx1ZVwmIzM0Oyk7XG4gXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG4gXHRcdH1cbiYjNDM7XG4mIzQzO1x0XHQvKlxuJiM0MztcdFx0ICogRGlzYWJsZSByYXcgbW9kZSBmb3IgYnBmX21hcF9wZWVrX2VsZW0oKSBvbiBhIGJsb29tIGZpbHRlci4gVGhlIGhlbHBlciByZWFkc1xuJiM0MztcdFx0ICogdGhlIHZhbHVlIGJ1ZmZlciBhcyBhbiBpbnB1dCByYXRoZXIgdGhhbiBmaWxsaW5nIGl0LlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IEJQRl9GVU5DX21hcF9wZWVrX2VsZW0gXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgbWV0YS1cdTAwM2VtYXAucHRyLVx1MDAzZW1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9CTE9PTV9GSUxURVIpXG4mIzQzO1x0XHRcdG1ldGEtXHUwMDNlYXJnX3Jhd19tZW0ucmVnbm8gPSAwO1xuJiM0MztcbiBcdFx0ZXJyID0gY2hlY2tfaGVscGVyX21lbV9hY2Nlc3MoZW52LCByZWcsIGFyZ25vLCBtZXRhLVx1MDAzZW1hcC5wdHItXHUwMDNldmFsdWVfc2l6ZSxcbiBcdFx0XHRcdFx0ICAgICAgYXJnX3R5cGUgXHUwMDI2IE1FTV9XUklURSA/IEJQRl9XUklURSA6IEJQRl9SRUFELFxuIFx0XHRcdFx0XHQgICAgICBmYWxzZSwgbWV0YSk7XG5AQCAtMTI1NjIsMTEgJiM0MzsxMjU3MSwxMiBAQCBpbnQgYnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRzdHJ1Y3QgYnBmX2tmdW5jX21ldGEga2Z1bmM7XG4gXHRpbnQgZXJyO1xuIFxuJiM0MztcdG1lbXNldChtZXRhLCAwLCBzaXplb2YoKm1ldGEpKTtcbiYjNDM7XG4gXHRlcnIgPSBmZXRjaF9rZnVuY19tZXRhKGVudiwgZnVuY19pZCwgb2Zmc2V0LCBcdTAwMjZrZnVuYyk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuLVx0bWVtc2V0KG1ldGEsIDAsIHNpemVvZigqbWV0YSkpO1xuIFx0bWV0YS1cdTAwM2VidGYgPSBrZnVuYy5idGY7XG4gXHRtZXRhLVx1MDAzZWZ1bmNfaWQgPSBrZnVuYy5pZDtcbiBcdG1ldGEtXHUwMDNlZnVuY19wcm90byA9IGtmdW5jLnByb3RvO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjM0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfZnVuY19hcmcmIzM0OywKICAgICYjMzQ7YnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gZGlzYWJsZSByYXcgbW9kZSBmb3IgYnBmX21hcF9wZWVrX2VsZW0oKSBvbiBibG9vbSBmaWx0ZXJzLCBwcmV2ZW50aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZyb20gYmVpbmcgcGFzc2VkIHRvIHRoZSBoZWxwZXIuIEl0IGFsc28gemVyb2VzIHRoZSBtZXRhIHN0cnVjdCBpbiBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGEoKSBiZWZvcmUgY2FsbGluZyBmZXRjaF9rZnVuY19tZXRhKCksIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSB3aGVuIHRoZSBmZXRjaCBmYWlscy4gQm90aCBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBCUEYgdmVyaWZpZXIgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhNThkMWM0YTljMGI0MzA0NjM0MWIyZTk0MWJkYjcxMWNjMGNkMTdiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMTUgMjI6MzQ6MzAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKaW5kZXggZGU4MTYwNjNhZTYzZDAuLmRkZmE0ZjU3MDE2Yjc0IDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jCkBAIC04NDIyLDYgJiM0Mzs4NDIyLDE1IEBAIHN0YXRpYyBpbnQgY2hlY2tfZnVuY19hcmcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgdTMyIGFyZywKIAkJCXZlcmlmaWVyX2J1ZyhlbnYsICYjMzQ7aW52YWxpZCBtYXBfcHRyIHRvIGFjY2VzcyBtYXAtJmd0O3ZhbHVlJiMzNDspOwogCQkJcmV0dXJuIC1FRkFVTFQ7CiAJCX0KJiM0MzsKJiM0MzsJCS8qCiYjNDM7CQkgKiBEaXNhYmxlIHJhdyBtb2RlIGZvciBicGZfbWFwX3BlZWtfZWxlbSgpIG9uIGEgYmxvb20gZmlsdGVyLiBUaGUgaGVscGVyIHJlYWRzCiYjNDM7CQkgKiB0aGUgdmFsdWUgYnVmZmVyIGFzIGFuIGlucHV0IHJhdGhlciB0aGFuIGZpbGxpbmcgaXQuCiYjNDM7CQkgKi8KJiM0MzsJCWlmIChtZXRhLSZndDtmdW5jX2lkID09IEJQRl9GVU5DX21hcF9wZWVrX2VsZW0gJmFtcDsmYW1wOwomIzQzOwkJICAgIG1ldGEtJmd0O21hcC5wdHItJmd0O21hcF90eXBlID09IEJQRl9NQVBfVFlQRV9CTE9PTV9GSUxURVIpCiYjNDM7CQkJbWV0YS0mZ3Q7YXJnX3Jhd19tZW0ucmVnbm8gPSAwOwomIzQzOwogCQllcnIgPSBjaGVja19oZWxwZXJfbWVtX2FjY2VzcyhlbnYsIHJlZywgYXJnbm8sIG1ldGEtJmd0O21hcC5wdHItJmd0O3ZhbHVlX3NpemUsCiAJCQkJCSAgICAgIGFyZ190eXBlICZhbXA7IE1FTV9XUklURSA/IEJQRl9XUklURSA6IEJQRl9SRUFELAogCQkJCQkgICAgICBmYWxzZSwgbWV0YSk7CkBAIC0xMjU2MiwxMSAmIzQzOzEyNTcxLDEyIEBAIGludCBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGEoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKIAlzdHJ1Y3QgYnBmX2tmdW5jX21ldGEga2Z1bmM7CiAJaW50IGVycjsKIAomIzQzOwltZW1zZXQobWV0YSwgMCwgc2l6ZW9mKCptZXRhKSk7CiYjNDM7CiAJZXJyID0gZmV0Y2hfa2Z1bmNfbWV0YShlbnYsIGZ1bmNfaWQsIG9mZnNldCwgJmFtcDtrZnVuYyk7CiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKIAotCW1lbXNldChtZXRhLCAwLCBzaXplb2YoKm1ldGEpKTsKIAltZXRhLSZndDtidGYgPSBrZnVuYy5idGY7CiAJbWV0YS0mZ3Q7ZnVuY19pZCA9IGtmdW5jLmlkOwogCW1ldGEtJmd0O2Z1bmNfcHJvdG8gPSBrZnVuYy5wcm90bzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEzMgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQ3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCUEYgVmVyaWZpZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCYjMzk7cyB0d2Vha2luZyB0aGUgQlBGIHZlcmlmaWVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBUaGUgZmlyc3QgcGFydCBjYXRjaGVzIG15IGF0dGVudGlvbjsgaXQmIzM5O3MgYWRkaW5nIGEgbmV3IGNoZWNrIHdpdGhpbiBgY2hlY2tfZnVuY19hcmdgLiBJdCBzZWVtcyBsaWtlIHdlJiMzOTtyZSBhZGRyZXNzaW5nIGEgc3BlY2lmaWMgaXNzdWUgcmVsYXRlZCB0byBgYnBmX21hcF9wZWVrX2VsZW1gIGFuZCBibG9vbSBmaWx0ZXIgbWFwcy4gVGhlIGxvZ2ljIGlzIG5vdyBkaXNhYmxpbmcgJiMzNDtyYXcgbW9kZSYjMzQ7IGZvciB0aGlzIHBhcnRpY3VsYXIgY29tYmluYXRpb24uIFRoZSByYXRpb25hbGUgaXMgY2xlYXI6IHRoZSBoZWxwZXIgYGJwZl9tYXBfcGVla19lbGVtYCAqcmVhZHMqIHRoZSB2YWx1ZSBidWZmZXIgd2hlbiB1c2VkIHdpdGggYSBibG9vbSBmaWx0ZXIsIHJhdGhlciB0aGFuIHdyaXRpbmcgdG8gaXQuIFNvLCB3ZSBzZXQgYG1ldGEtJmd0O2FyZ19yYXdfbWVtLnJlZ25vID0gMDtgIHRvIHJlZmxlY3QgdGhhdC4KClRoZSBzZWNvbmQgcGFydCBvZiB0aGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFgLiBJdCBhcHBlYXJzIHRvIGJlIGFkZGluZyBhIGBtZW1zZXRgIGNhbGwgdG8gemVybyBvdXQgdGhlIGBtZXRhYCBzdHJ1Y3QgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZnVuY3Rpb24uIE5vdywgdGhpcyBpcyBpbnRlcmVzdGluZy4gSSBpbml0aWFsbHkgdGhvdWdodCwgJiMzNDtXYWl0LCB3aHkgYXJlIHdlIHplcm9pbmcgYG1ldGFgICpiZWZvcmUqIHRoZSBjYWxsIHRvIGBmZXRjaF9rZnVuY19tZXRhYD8gSWYgYGZldGNoX2tmdW5jX21ldGFgIGZhaWxzLCBpdCByZXR1cm5zIGFuIGVycm9yLCBhbmQgdGhlIGNhbGxlciAqc2hvdWxkbiYjMzk7dCogYmUgdXNpbmcgdGhlIHVuaW5pdGlhbGl6ZWQgYG1ldGFgIGRhdGEuJiMzNDsgSG93ZXZlciwgb24gc2Vjb25kIHRob3VnaHQsIGl0IGNvdWxkIGJlIHRoYXQgYG1ldGFgIGlzIGluZGVlZCB1c2VkIGJ5IHRoZSBjYWxsZXIgZXZlbiBpbiBhbiBlcnJvciBjYXNlLCBvciBtb3JlIGxpa2VseSwgaXQmIzM5O3MganVzdCBkZWZlbnNpdmVseSBnb29kIHByYWN0aWNlIHRvIHplcm8gaXQgb3V0IHVwZnJvbnQuIEVuc3VyZXMgdGhhdCBldmVuIGlmIHRoZXJlJiMzOTtzIGEgcHJvYmxlbSBsYXRlciwgd2UmIzM5O3JlIG5vdCBkZWFsaW5nIHdpdGggZ2FyYmFnZSBkYXRhLiBTdGlsbCwgSSBzaG91bGQgY2hlY2sgdGhlIGNvbnRleHQgdG8gYmUgY2VydGFpbi4KCkkgbmVlZCB0byBkaWcgaW50byBga2VybmVsL2JwZi92ZXJpZmllci5jYCB0byB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZTogd2hhdCBjYWxscyBgY2hlY2tfZnVuY19hcmdgIGFuZCBgYnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhYCwgd2hhdCB1c2VzIHRoZSB2YWx1ZXMgZnJvbSB0aG9zZSBmdW5jdGlvbnMsIGFuZCBjb25maXJtIGlmIHRob3NlIGVycm9yIHBhdGhzIGFyZSByZWxldmFudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjaGVja19mdW5jX2FyZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9ODU3PXN0YXRpYyBib29sIGlzX2R5bnB0cl9yZWdfdmFsaWRfaW5pdChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NjQtXHQgKiBDT05TVF9QVFJfVE9fRFlOUFRSIGFscmVhZHkgaGFzIGZpeGVkIGFuZCB2YXJfb2ZmIGFzIDAgZHVlIHRvXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODY1Olx0ICogY2hlY2tfZnVuY19hcmdfcmVnX29mZiYjMzk7cyBsb2dpYywgc28gd2UgZG9uJiMzOTt0IG5lZWQgdG8gY2hlY2sgaXRzXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODY2LVx0ICogb2Zmc2V0IGFuZCBhbGlnbm1lbnQuXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTQzMzc9c3RhdGljIGludCBtYXBfa3B0cl9tYXRjaF90eXBlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTQzOTItXHQgKlxua2VybmVsL2JwZi92ZXJpZmllci5jOjQzOTM6XHQgKiBJbiB0aGUga3B0cl9yZWYgY2FzZSwgY2hlY2tfZnVuY19hcmdfcmVnX29mZiBhbHJlYWR5IGVuc3VyZXMgcmVnLVx1MDAzZXZhcl9vZmZcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00Mzk0LVx0ICogaXMgemVyby4gV2UgbXVzdCBhbHNvIGVuc3VyZSB0aGF0IGJ0Zl9zdHJ1Y3RfaWRzX21hdGNoIGRvZXMgbm90IHdhbGtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9ODA2NT1yZWdfZmluZF9maWVsZF9vZmZzZXQoY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgczMyIG9mZiwgdTMyIGZpZWxkcylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODA4MC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4MDgxOnN0YXRpYyBpbnQgX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODA4Mi1cdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04MTYwLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjgxNjE6c3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODE2Mi1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODE2NC17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODE2NTpcdHJldHVybiBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBhcmdfdHlwZSwgdHJ1ZSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODE2Ni19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTgyODM9c3RhdGljIGJvb2wgY2FuX2VsaWRlX3ZhbHVlX251bGxuZXNzKGNvbnN0IHN0cnVjdCBicGZfbWFwICptYXApO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTgyODQtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODI4NTpzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHUzMiBhcmcsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODI4Ni1cdFx0XHQgIHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODM0MS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4MzQyOlx0ZXJyID0gY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIGFyZ190eXBlKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04MzQzLVx0aWYgKGVycilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9OTE0Mz1zdGF0aWMgaW50IHNldHVwX2Z1bmNfZW50cnkoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IHN1YnByb2csIGludCBjYWxsc2l0ZSxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTE5MC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5MTkxOnN0YXRpYyBpbnQgYnRmX2NoZWNrX2Z1bmNfYXJnX21hdGNoKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBzdWJwcm9nLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTkxOTItXHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MjM1LVx0XHR9IGVsc2UgaWYgKGFyZy1cdTAwM2VhcmdfdHlwZSA9PSBBUkdfUFRSX1RPX0NUWCkge1xua2VybmVsL2JwZi92ZXJpZmllci5jOjkyMzY6XHRcdFx0cmV0ID0gY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIEFSR19QVFJfVE9fQ1RYKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MjM3LVx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTkyNDctXHRcdH0gZWxzZSBpZiAoYmFzZV90eXBlKGFyZy1cdTAwM2VhcmdfdHlwZSkgPT0gQVJHX1BUUl9UT19NRU0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5MjQ4Olx0XHRcdHJldCA9IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBBUkdfRE9OVENBUkUpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTkyNDktXHRcdFx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTI3MS1cdFx0fSBlbHNlIGlmIChhcmctXHUwMDNlYXJnX3R5cGUgPT0gQVJHX1BUUl9UT19EWU5QVFIpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5MjcyOlx0XHRcdHJldCA9IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBBUkdfUFRSX1RPX0RZTlBUUik7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTI3My1cdFx0XHRpZiAocmV0KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05Mjg3LVx0XHRcdGVyciA9IGNoZWNrX3JlZ190eXBlKGVudiwgcmVnLCBhcmdubywgYXJnLVx1MDAzZWFyZ190eXBlLCBcdTAwMjZhcmctXHUwMDNlYnRmX2lkLCBcdTAwMjZtZXRhKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5Mjg4Olx0XHRcdGVyciA9IGVyciA/OiBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnLVx1MDAzZWFyZ190eXBlKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05Mjg5LVx0XHRcdGlmIChlcnIpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTkzMDg9c3RhdGljIGludCBidGZfY2hlY2tfc3VicHJvZ19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBzdWJwcm9nLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MzI1LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjkzMjY6XHRlcnIgPSBidGZfY2hlY2tfZnVuY19hcmdfbWF0Y2goZW52LCBzdWJwcm9nLCBidGYsIHJlZ3MpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTkzMjctXHQvKiBDb21waWxlciBvcHRpbWl6YXRpb25zIGNhbiByZW1vdmUgYXJndW1lbnRzIGZyb20gc3RhdGljIGZ1bmN0aW9uc1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDIzMT1zdGF0aWMgaW50IGNoZWNrX2hlbHBlcl9jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTAyOTctXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQVhfQlBGX0ZVTkNfUkVHX0FSR1M7IGkmIzQzOyYjNDM7KSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTAyOTg6XHRcdGVyciA9IGNoZWNrX2Z1bmNfYXJnKGVudiwgaSwgXHUwMDI2bWV0YSwgZm4sIGluc25faWR4KTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDI5OS1cdFx0aWYgKGVycilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE5OTA9c3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIyMTAtXHRcdFx0YXJnX3R5cGUgfD0gT0JKX1JFTEVBU0U7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTIyMTE6XHRcdHJldCA9IF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIGFyZ190eXBlLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjEyLVx0XHRcdFx0XHQgICAgICAgYnRmX2lkX2ZpeGVkX29mZl9vayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgxMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIGtlcm5lbCBCUEYgdmVyaWZpY2F0aW9uOgoKKipBbmFseXppbmcgdGhlIGBjaGVja19mdW5jX2FyZ2AgTW9kaWZpY2F0aW9uKioKCkFscmlnaHQsIHNvIHRoZSBmb2N1cyBpcyBvbiB0aGUgYGNoZWNrX2Z1bmNfYXJnYCBmdW5jdGlvbiB3aXRoaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O09rYXksIGEgbW9kaWZpY2F0aW9uIHRoZXJlLi4uIHRoYXQmIzM5O3MgcG90ZW50aWFsbHkgaW1wYWN0ZnVsLiYjMzQ7IEkgbmVlZCB0byB6b29tIGluIGFuZCBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGdyYXNwIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIGNoYW5nZS4gYGNoZWNrX2Z1bmNfYXJnYCBpcyBhIGNyaXRpY2FsIHBpZWNlLCBpdCBoYW5kbGVzIHRoZSB2YWxpZGF0aW9uIG9mIGZ1bmN0aW9uIGFyZ3VtZW50cyBwYXNzZWQgdG8gQlBGIHByb2dyYW1zLiBBbnkgY2hhbmdlIGhlcmUgY291bGQgZGlyZWN0bHkgaW1wYWN0IHRoZSB0eXBlcyBvZiBwcm9ncmFtcyB0aGF0IGNhbiBiZSBzYWZlbHkgbG9hZGVkIGFuZCBleGVjdXRlZCwgb3IsIGNydWNpYWxseSwgaXQgY291bGQgaW50cm9kdWNlIHZ1bG5lcmFiaWxpdGllcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmV4YWN0bHkqIHdoYXQmIzM5O3MgYmVlbiBhbHRlcmVkIGFuZCwgcGVyaGFwcyBtb3JlIGltcG9ydGFudGx5LCAqd2h5Ki4gSeKAmWxsIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gc2VlIGhvdyB0aGlzIGNoYW5nZSByaXBwbGVzIHRocm91Z2ggdGhlIHZlcmlmaWVyIGxvZ2ljLiBNeSBleHBlcnQgZXllIG5lZWRzIHRvIHBpY2sgYXBhcnQgdGhlIGJlZm9yZSBhbmQgYWZ0ZXIgc3RhdGVzIHRvIGFzc2VzcyB0aGUgcmlzay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg0MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ODQxMDpcdFx0XHRcdH1cbjg0MTE6XHRcdFx0fVxuODQxMjpcdFx0XHRicmVhaztcbjg0MTM6XHRcdGNhc2UgQVJHX1BUUl9UT19NQVBfVkFMVUU6XG44NDE0Olx0XHRcdGlmICh0eXBlX21heV9iZV9udWxsKGFyZ190eXBlKSBcdTAwMjZcdTAwMjYgYnBmX3JlZ2lzdGVyX2lzX251bGwocmVnKSlcbjg0MTU6XHRcdFx0XHRyZXR1cm4gMDtcbjg0MTY6XHRcbjg0MTc6XHRcdFx0LyogYnBmX21hcF94eHgoLi4uLCBtYXBfcHRyLCAuLi4sIHZhbHVlKSBjYWxsOlxuODQxODpcdFx0XHQgKiBjaGVjayBbdmFsdWUsIHZhbHVlICYjNDM7IG1hcC1cdTAwM2V2YWx1ZV9zaXplKSB2YWxpZGl0eVxuODQxOTpcdFx0XHQgKi9cbjg0MjA6XHRcdFx0aWYgKCFtZXRhLVx1MDAzZW1hcC5wdHIpIHtcbjg0MjE6XHRcdFx0XHQvKiBrZXJuZWwgc3Vic3lzdGVtIG1pc2NvbmZpZ3VyZWQgdmVyaWZpZXIgKi9cbjg0MjI6XHRcdFx0XHR2ZXJpZmllcl9idWcoZW52LCBcJiMzNDtpbnZhbGlkIG1hcF9wdHIgdG8gYWNjZXNzIG1hcC1cdTAwM2V2YWx1ZVwmIzM0Oyk7XG44NDIzOlx0XHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG44NDI0Olx0XHRcdH1cbjg0MjU6XHRcbjg0MjY6XHRcdFx0Lypcbjg0Mjc6XHRcdFx0ICogRGlzYWJsZSByYXcgbW9kZSBmb3IgYnBmX21hcF9wZWVrX2VsZW0oKSBvbiBhIGJsb29tIGZpbHRlci4gVGhlIGhlbHBlciByZWFkc1xuODQyODpcdFx0XHQgKiB0aGUgdmFsdWUgYnVmZmVyIGFzIGFuIGlucHV0IHJhdGhlciB0aGFuIGZpbGxpbmcgaXQuXG44NDI5Olx0XHRcdCAqL1xuODQzMDpcdFx0XHRpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IEJQRl9GVU5DX21hcF9wZWVrX2VsZW0gXHUwMDI2XHUwMDI2XG44NDMxOlx0XHRcdCAgICBtZXRhLVx1MDAzZW1hcC5wdHItXHUwMDNlbWFwX3R5cGUgPT0gQlBGX01BUF9UWVBFX0JMT09NX0ZJTFRFUilcbjg0MzI6XHRcdFx0XHRtZXRhLVx1MDAzZWFyZ19yYXdfbWVtLnJlZ25vID0gMDtcbjg0MzM6XHRcbjg0MzQ6XHRcdFx0ZXJyID0gY2hlY2tfaGVscGVyX21lbV9hY2Nlc3MoZW52LCByZWcsIGFyZ25vLCBtZXRhLVx1MDAzZW1hcC5wdHItXHUwMDNldmFsdWVfc2l6ZSxcbjg0MzU6XHRcdFx0XHRcdFx0ICAgICAgYXJnX3R5cGUgXHUwMDI2IE1FTV9XUklURSA/IEJQRl9XUklURSA6IEJQRl9SRUFELFxuODQzNjpcdFx0XHRcdFx0XHQgICAgICBmYWxzZSwgbWV0YSk7XG44NDM3Olx0XHRcdGJyZWFrO1xuODQzODpcdFx0Y2FzZSBBUkdfUFRSX1RPX1BFUkNQVV9CVEZfSUQ6XG44NDM5Olx0XHRcdGlmICghcmVnLVx1MDAzZWJ0Zl9pZCkge1xuODQ0MDpcdFx0XHRcdHZlcmJvc2UoZW52LCBcJiMzNDtIZWxwZXIgaGFzIGludmFsaWQgYnRmX2lkIGluIFIlZFxcblwmIzM0OywgcmVnbm8pO1xuODQ0MTpcdFx0XHRcdHJldHVybiAtRUFDQ0VTO1xuODQ0MjpcdFx0XHR9XG44NDQzOlx0XHRcdG1ldGEtXHUwMDNlcmV0X2J0ZiA9IHJlZy1cdTAwM2VidGY7XG44NDQ0Olx0XHRcdG1ldGEtXHUwMDNlcmV0X2J0Zl9pZCA9IHJlZy1cdTAwM2VidGZfaWQ7XG44NDQ1Olx0XHRcdGJyZWFrO1xuODQ0NjpcdFx0Y2FzZSBBUkdfUFRSX1RPX1NQSU5fTE9DSzpcbjg0NDc6XHRcdFx0aWYgKGluX3JidHJlZV9sb2NrX3JlcXVpcmVkX2NiKGVudikpIHtcbjg0NDg6XHRcdFx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7Y2FuJiMzOTt0IHNwaW5fe2xvY2ssdW5sb2NrfSBpbiByYnRyZWUgY2JcXG5cJiMzNDspO1xuODQ0OTpcdFx0XHRcdHJldHVybiAtRUFDQ0VTO1xuODQ1MDpcdFx0XHR9XG44NDUxOlx0XHRcdGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gQlBGX0ZVTkNfc3Bpbl9sb2NrKSB7XG44NDUyOlx0XHRcdFx0ZXJyID0gcHJvY2Vzc19zcGluX2xvY2soZW52LCByZWcsIGFyZ25vLCBQUk9DRVNTX1NQSU5fTE9DSyk7XG44NDUzOlx0XHRcdFx0aWYgKGVycilcbjg0NTQ6XHRcdFx0XHRcdHJldHVybiBlcnI7XG44NDU1Olx0XHRcdH0gZWxzZSBpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IEJQRl9GVU5DX3NwaW5fdW5sb2NrKSB7XG44NDU2Olx0XHRcdFx0ZXJyID0gcHJvY2Vzc19zcGluX2xvY2soZW52LCByZWcsIGFyZ25vLCAwKTtcbjg0NTc6XHRcdFx0XHRpZiAoZXJyKVxuODQ1ODpcdFx0XHRcdFx0cmV0dXJuIGVycjtcbjg0NTk6XHRcdFx0fSBlbHNlIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTYyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBCbG9vbSBGaWx0ZXIgYW5kIFJhdyBNb2RlIENoYW5nZSoqCgpPa2F5LCBzbyB0aGlzIGNoYW5nZSBkaXNhYmxlcyByYXcgbW9kZSBzcGVjaWZpY2FsbHkgZm9yIGBicGZfbWFwX3BlZWtfZWxlbWAgd2hlbiBkZWFsaW5nIHdpdGggYSBibG9vbSBmaWx0ZXIuIEluaXRpYWxseSwgSSB0aG91Z2h0IHRoaXMgd2FzIGEgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgc2hpZnQgd2l0aGluIHRoZSB2ZXJpZmllciBhaW1lZCBhdCBwcmV2ZW50aW5nIHRoZSBwb3RlbnRpYWwgZm9yIHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdGhyb3VnaCB0aGlzIGhlbHBlci4gTXkgZmlyc3QgYXNzdW1wdGlvbiB3YXMgdGhhdCB3ZSBhcmUgdHJ5aW5nIHRvIHN0b3AgaXNzdWVzIGFyaXNpbmcgZnJvbSB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBwYXNzZWQgdG8gdGhlIGBicGZfbWFwX3BlZWtfZWxlbWAgZnVuY3Rpb24gZm9yIGJsb29tIGZpbHRlcnMuCgpCdXQgdGhlbiBJIGhhZCB0byB0aGluayB0aHJvdWdoIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcy4gIElmIHJhdyBtb2RlIGlzICpvbiosIHRoZSB2ZXJpZmllciwgaW4gaXRzIHdpc2RvbSwgYXNzdW1lcyB0aGF0IHRoZSBoZWxwZXIgZnVuY3Rpb24gKndyaXRlcyogdG8gdGhlIHByb3ZpZGVkIG1lbW9yeSBsb2NhdGlvbi4gIFRoYXQmIzM5O3Mgd2h5IGl0IGFsbG93cyB1bmluaXRpYWxpemVkIG1lbW9yeSB0byBiZSBwYXNzZWQg4oCTIHRoZSB2ZXJpZmllciBleHBlY3RzIHRoZSBoZWxwZXIgdG8gcG9wdWxhdGUgaXQuICBIb3dldmVyLCB3aXRoIGBicGZfbWFwX3BlZWtfZWxlbWAgYW5kIGl0cyBhcHBsaWNhdGlvbiB3aXRoIGJsb29tIGZpbHRlcnMsIHRoZSBoZWxwZXIgaXNuJiMzOTt0IHdyaXRpbmc7IGl0JiMzOTtzICpyZWFkaW5nKi4gSXQmIzM5O3MgY2hlY2tpbmcgaWYgYW4gZWxlbWVudCBleGlzdHMgaW4gdGhlIGZpbHRlciwgYW5kIHRoZXJlZm9yZSByZWFkaW5nIHRoZSBjb250ZW50cyBvZiBtZW1vcnkuICBUaHVzLCBpZiByYXcgbW9kZSBpcyBlbmFibGVkIHdpdGggYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgbG9jYXRpb24sIHdlJiMzOTtkIGJlIGluYWR2ZXJ0ZW50bHkgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhhdCYjMzk7cyBhIGh1Z2UgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkhCgpTbywgdGhlIGNoYW5nZSBpcyBhY3R1YWxseSBxdWl0ZSBlbGVnYW50IGluIHByZXZlbnRpbmcgdGhpcy4gQnkgZGlzYWJsaW5nIHJhdyBtb2RlIGluIHRoaXMgc3BlY2lmaWMgc2NlbmFyaW8sIHRoZSB2ZXJpZmllciB3aWxsICpmb3JjZSogdGhlIG1lbW9yeSB0byBiZSBpbml0aWFsaXplZCBiZWZvcmUgYGJwZl9tYXBfcGVla19lbGVtYCBjYW4gZXZlbiBiZSBjYWxsZWQuIEl0JiMzOTtzIGEgc29saWQgZGVmZW5zZSBhZ2FpbnN0IGEgdmVyeSBzdWJ0bGUsIHlldCBwb3RlbnRpYWxseSBkYW5nZXJvdXMsIGZsYXcuIEl0IG1ha2VzIHNlbnNlIHRvIHRha2UgdGhpcyBhcHByb2FjaCwgc2luY2UsIGFzIGEgcmVhZCwgdGhlIGhlbHBlciBjYW5ub3QgYmUgcmVzcG9uc2libGUgZm9yIGluaXRpYWxpemF0aW9uLgoKSSYjMzk7bSBub3cgdHVybmluZyBteSBhdHRlbnRpb24gdG8gdGhlIHNlY29uZCBjaGFuZ2UsIHdoaWNoIGZvY3VzZXMgb24gYGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YWAgLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMjU2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMjU2MDpcdFx0XHR9XG4xMjU2MTpcdFx0fVxuMTI1NjI6XHRcbjEyNTYzOlx0XHRyZXR1cm4gMDtcbjEyNTY0Olx0fVxuMTI1NjU6XHRcbjEyNTY2Olx0aW50IGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuMTI1Njc6XHRcdFx0XHQgICAgIHMzMiBmdW5jX2lkLFxuMTI1Njg6XHRcdFx0XHQgICAgIHMxNiBvZmZzZXQsXG4xMjU2OTpcdFx0XHRcdCAgICAgc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxuMTI1NzA6XHR7XG4xMjU3MTpcdFx0c3RydWN0IGJwZl9rZnVuY19tZXRhIGtmdW5jO1xuMTI1NzI6XHRcdGludCBlcnI7XG4xMjU3MzpcdFxuMTI1NzQ6XHRcdG1lbXNldChtZXRhLCAwLCBzaXplb2YoKm1ldGEpKTtcbjEyNTc1Olx0XG4xMjU3NjpcdFx0ZXJyID0gZmV0Y2hfa2Z1bmNfbWV0YShlbnYsIGZ1bmNfaWQsIG9mZnNldCwgXHUwMDI2a2Z1bmMpO1xuMTI1Nzc6XHRcdGlmIChlcnIpXG4xMjU3ODpcdFx0XHRyZXR1cm4gZXJyO1xuMTI1Nzk6XHRcbjEyNTgwOlx0XHRtZXRhLVx1MDAzZWJ0ZiA9IGtmdW5jLmJ0ZjtcbjEyNTgxOlx0XHRtZXRhLVx1MDAzZWZ1bmNfaWQgPSBrZnVuYy5pZDtcbjEyNTgyOlx0XHRtZXRhLVx1MDAzZWZ1bmNfcHJvdG8gPSBrZnVuYy5wcm90bztcbjEyNTgzOlx0XHRtZXRhLVx1MDAzZWZ1bmNfbmFtZSA9IGtmdW5jLm5hbWU7XG4xMjU4NDpcdFxuMTI1ODU6XHRcdGlmICgha2Z1bmMuZmxhZ3MgfHwgIWJ0Zl9rZnVuY19pc19hbGxvd2VkKGtmdW5jLmJ0Ziwga2Z1bmMuaWQsIGVudi1cdTAwM2Vwcm9nKSlcbjEyNTg2Olx0XHRcdHJldHVybiAtRUFDQ0VTO1xuMTI1ODc6XHRcbjEyNTg4Olx0XHRtZXRhLVx1MDAzZWtmdW5jX2ZsYWdzID0gKmtmdW5jLmZsYWdzO1xuMTI1ODk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDE5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEZ1bmN0aW9uYWwgQ2hhbmdlIGluIHRoZSBCUEYgVmVyaWZpZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaGVyZS4gU3BlY2lmaWNhbGx5LCB6ZXJvaW5nIG91dCBgbWV0YWAgKmJlZm9yZSogY2FsbGluZyBgZmV0Y2hfa2Z1bmNfbWV0YWAuIFRoYXQmIzM5O3MgaW1wb3J0YW50IGJlY2F1c2UgYGZldGNoX2tmdW5jX21ldGFgIGNvdWxkIHBvdGVudGlhbGx5IHJldHVybiBhbiBlcnJvci4gUHJldmlvdXNseSwgaXQgbG9va3MgbGlrZSBgbWV0YWAgbWlnaHQgaGF2ZSBiZWVuIGxlZnQgdW5pbml0aWFsaXplZCBvciBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQgaWYgdGhlcmUgd2FzIGEgcHJvYmxlbS4gTm93LCBpdCYjMzk7cyBleHBsaWNpdGx5IHplcm9lZCwgcHJvdmlkaW5nIGEgZGVmaW5lZCBzdGF0ZSBpbiB0aGUgZXJyb3IgY2FzZS4gR29vZC4gVGhhdCBkZWZpbml0ZWx5IHNvdW5kcyBsaWtlIHNvbWV0aGluZyB0aGF0IGRlc2VydmVzIGEgZ29vZCBmdXp6aW5nIGNhbXBhaWduLiBGdW5jdGlvbmFsIGNoYW5nZSA9IGZ1enppbmcgdGltZSEKCkxldCYjMzk7cyBzZWUsIHdoYXQgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIHRvIHRhcmdldD8gR2l2ZW4gdGhlIGNoYW5nZSwgSSYjMzk7bSB0aGlua2luZyB0aGUgZm9jdXMgc2hvdWxkIGJlIG9uIGBjaGVja19mdW5jX2FyZ2AsIGBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFgLCBhbmQgYGNoZWNrX2hlbHBlcl9jYWxsYCBzaW5jZSB0aGUgbGF0dGVyIGNhbGxzIGBjaGVja19mdW5jX2FyZ2AuIEFsc28sIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCBgY2hlY2tfa2Z1bmNfYXJnc2AgYmVjYXVzZSBpdCAqbWlnaHQqIGNhbGwgYGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YWAsIG9yIHNvbWV0aGluZyBzaW1pbGFyLgoKSG1tLCB3YWl0IGEgc2Vjb25kLi4uIGBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFgIGlzIGNhbGxlZCBmcm9tIHdoZXJlIGV4YWN0bHk/IEkgYmV0dGVyIGRvdWJsZS1jaGVjayB0aGUgY2FsbCBncmFwaCB0byBiZSBzdXJlIEkmIzM5O3ZlIGdvdCB0aGUgY29tcGxldGUgcGljdHVyZS4gTmVlZCB0byBtYWtlIHN1cmUgSSBnZXQgdGhhdCBjb3ZlcmVkIGluIHRoZSBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTExOTkwPXN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfYXJncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNTY1LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNTY2OmludCBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGEoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjU2Ny1cdFx0XHQgICAgIHMzMiBmdW5jX2lkLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjcyNT1zNjQgYnBmX2tmdW5jX3N0YWNrX2FjY2Vzc19ieXRlcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzM1LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNzM2Olx0aWYgKGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YShlbnYsIGluc24tXHUwMDNlaW1tLCBpbnNuLVx1MDAzZW9mZiwgXHUwMDI2bWV0YSkgXHUwMDNjIDApXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI3MzctXHRcdHJldHVybiBTNjRfTUlOO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjk2MT1zdGF0aWMgaW50IGNoZWNrX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjk4MC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjk4MTpcdGVyciA9IGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YShlbnYsIGluc24tXHUwMDNlaW1tLCBpbnNuLVx1MDAzZW9mZiwgXHUwMDI2bWV0YSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5ODItXHRpZiAoZXJyID09IC1FQUNDRVMgXHUwMDI2XHUwMDI2IG1ldGEuZnVuY19uYW1lKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNjcyMD1ib29sIGJwZl9nZXRfY2FsbF9zdW1tYXJ5KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqY2FsbCxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTY3NDctXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTY3NDg6XHRcdGVyciA9IGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YShlbnYsIGNhbGwtXHUwMDNlaW1tLCBjYWxsLVx1MDAzZW9mZiwgXHUwMDI2bWV0YSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTY3NDktXHRcdGlmIChlcnIgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwOTAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgS2VybmVsIEJQRiBGdW5jdGlvbiBBcmd1bWVudCBNZXRhZGF0YSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFgIGlzIGEga2V5IGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgYmVpbmcgY2FsbGVkIGZyb20gc2V2ZXJhbCBpbXBvcnRhbnQgcGxhY2VzOiBgYnBmX2tmdW5jX3N0YWNrX2FjY2Vzc19ieXRlc2AsIGBjaGVja19rZnVuY19jYWxsYCwgYW5kIGBicGZfZ2V0X2NhbGxfc3VtbWFyeWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHRoZXJlLgoKTXkgcHJpbWFyeSBmb2N1cyByaWdodCBub3cgc2hvdWxkIGJlIG9uIGBjaGVja19mdW5jX2FyZ2AgYW5kLCBjcnVjaWFsbHksIGBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFgIGl0c2VsZi4gVGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgSSByZWFsbHkgbmVlZCB0byBkcmlsbCBkb3duIGludG8uCgpOb3csIGZyb20gYSBjb25maWd1cmF0aW9uIHBlcnNwZWN0aXZlLCBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgYmlnIG9uZSwgYnV0IEkgc2hvdWxkIHByb2JhYmx5IHNjYW4gZm9yIGFueSByZWxhdGVkIGRlcGVuZGVuY2llcy4gSSBkb24mIzM5O3Qgd2FudCB0byBtaXNzIGFueXRoaW5nLgoKRmluYWxseSwgSSYjMzk7bSBjdXJpb3VzIGFib3V0IHRoZSBibG9vbSBmaWx0ZXIgbWFwIHR5cGUg4oCTIGBCUEZfTUFQX1RZUEVfQkxPT01fRklMVEVSYC4gSXMgaXRzIGZ1bmN0aW9uYWxpdHkgY29uZGl0aW9uYWwgb24gYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8gVGltZSB0byBpbnZlc3RpZ2F0ZSB0aGUgcmVsZXZhbnQgc291cmNlIGNvZGUg4oCTIHByb2JhYmx5IGBrZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jYCBvciBzb21ldGhpbmcgc2ltaWxhci4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGUgYmxvb20gZmlsdGVyIGZ1bmN0aW9uYWxpdHkgaXMgZW5hYmxlZCBpbiB0aGUgY3VycmVudCBrZXJuZWwgY29uZmlnLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCUEZfTUFQX1RZUEVfQkxPT01fRklMVEVSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9zeXNjYWxsLmM9MjUwPXN0YXRpYyBpbnQgYnBmX21hcF91cGRhdGVfdmFsdWUoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGZpbGUgKm1hcF9maWxlLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTI5MC1cdFx0ICAgbWFwLVx1MDAzZW1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9TVEFDSyB8fFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MjkxOlx0XHQgICBtYXAtXHUwMDNlbWFwX3R5cGUgPT0gQlBGX01BUF9UWVBFX0JMT09NX0ZJTFRFUikge1xua2VybmVsL2JwZi9zeXNjYWxsLmMtMjkyLVx0XHRlcnIgPSBtYXAtXHUwMDNlb3BzLVx1MDAzZW1hcF9wdXNoX2VsZW0obWFwLCB2YWx1ZSwgZmxhZ3MpO1xuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTMwOD1zdGF0aWMgaW50IGJwZl9tYXBfY29weV92YWx1ZShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICprZXksIHZvaWQgKnZhbHVlLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTMzNC1cdFx0ICAgbWFwLVx1MDAzZW1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9TVEFDSyB8fFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MzM1Olx0XHQgICBtYXAtXHUwMDNlbWFwX3R5cGUgPT0gQlBGX01BUF9UWVBFX0JMT09NX0ZJTFRFUikge1xua2VybmVsL2JwZi9zeXNjYWxsLmMtMzM2LVx0XHRlcnIgPSBtYXAtXHUwMDNlb3BzLVx1MDAzZW1hcF9wZWVrX2VsZW0obWFwLCB2YWx1ZSk7XG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmM9MTM3MD1zdGF0aWMgaW50IG1hcF9jcmVhdGVfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE0MDYtXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxNDA3Olx0aWYgKGF0dHItXHUwMDNlbWFwX3R5cGUgIT0gQlBGX01BUF9UWVBFX0JMT09NX0ZJTFRFUiBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE0MDgtXHQgICAgYXR0ci1cdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfQVJFTkEgXHUwMDI2XHUwMDI2XG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTQ5My1cdGNhc2UgQlBGX01BUF9UWVBFX0NHUlBfU1RPUkFHRTpcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjE0OTQ6XHRjYXNlIEJQRl9NQVBfVFlQRV9CTE9PTV9GSUxURVI6XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNDk1LVx0Y2FzZSBCUEZfTUFQX1RZUEVfTFBNX1RSSUU6XG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmM9MTc3ND1zdGF0aWMgaW50IG1hcF9sb29rdXBfZWxlbSh1bmlvbiBicGZfYXR0ciAqYXR0cilcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xODA3LVxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTgwODpcdGlmIChtYXAtXHUwMDNlbWFwX3R5cGUgPT0gQlBGX01BUF9UWVBFX0JMT09NX0ZJTFRFUikge1xua2VybmVsL2JwZi9zeXNjYWxsLmMtMTgwOS1cdFx0aWYgKGNvcHlfZnJvbV91c2VyKHZhbHVlLCB1dmFsdWUsIHZhbHVlX3NpemUpKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz03NzYzPXN0YXRpYyBpbnQgcmVzb2x2ZV9tYXBfYXJnX3R5cGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNzc4Mi1cdFx0YnJlYWs7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6Nzc4MzpcdGNhc2UgQlBGX01BUF9UWVBFX0JMT09NX0ZJTFRFUjpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy03Nzg0LVx0XHRpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IEJQRl9GVU5DX21hcF9wZWVrX2VsZW0pXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTgyODU9c3RhdGljIGludCBjaGVja19mdW5jX2FyZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCB1MzIgYXJnLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NDMwLVx0XHRpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IEJQRl9GVU5DX21hcF9wZWVrX2VsZW0gXHUwMDI2XHUwMDI2XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODQzMTpcdFx0ICAgIG1ldGEtXHUwMDNlbWFwLnB0ci1cdTAwM2VtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfQkxPT01fRklMVEVSKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTg0MzItXHRcdFx0bWV0YS1cdTAwM2VhcmdfcmF3X21lbS5yZWdubyA9IDA7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTg1NjU9c3RhdGljIGludCBjaGVja19tYXBfZnVuY19jb21wYXRpYmlsaXR5KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTg2ODctXHRcdGJyZWFrO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjg2ODg6XHRjYXNlIEJQRl9NQVBfVFlQRV9CTE9PTV9GSUxURVI6XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODY4OS1cdFx0aWYgKGZ1bmNfaWQgIT0gQlBGX0ZVTkNfbWFwX3BlZWtfZWxlbSBcdTAwMjZcdTAwMjZcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODc3Ny1cdFx0ICAgIG1hcC1cdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfU1RBQ0sgXHUwMDI2XHUwMDI2XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODc3ODpcdFx0ICAgIG1hcC1cdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfQkxPT01fRklMVEVSKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTg3NzktXHRcdFx0Z290byBlcnJvcjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTY1OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkgd2VyZSBteSBvd246CgoqKkluaXRpYWwgQXNzZXNzbWVudCBvZiBCbG9vbSBGaWx0ZXIgaW4gQlBGIFN5c2NhbGwqKgoKUmlnaHQsIHNvIHRoZSBibG9vbSBmaWx0ZXIgbWFwIGlzIGludGVncmFsIHRvIHRoZSBCUEYgc3lzY2FsbCBpbXBsZW1lbnRhdGlvbi4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3csIGFuZCBleHBlY3RlZCwgcmVhbGx5LiBJdCBtYWtlcyBzZW5zZSBpdCYjMzk7cyBjb3JlIHRvIHRoZSBzdHJ1Y3R1cmUuIEFuZCwgZnJvbSBhIGNvbmZpZ3VyYXRpb24gcGVyc3BlY3RpdmUsIEkmIzM5O20gcHJldHR5IHN1cmUgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgYWxsIHRoYXQmIzM5O3MgdHJ1bHkgbmVlZGVkIHRvIGVuYWJsZSBpdC4gQnV0LCBnaXZlbiBteSB0aG9yb3VnaG5lc3MsIEkgc2hvdWxkIGRvdWJsZSBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlICphbnkqIG90aGVyIGNvbmZpZyBvcHRpb25zIHRoYXQgbWlnaHQgaW5mbHVlbmNlIG9yIGludGVyYWN0IHdpdGggdGhpcyBzcGVjaWZpYyBhc3BlY3QuIEkgZG9uJiMzOTt0IHdhbnQgdG8gbWlzcyBhbnl0aGluZyB0aGF0IGNvdWxkIGltcGFjdCBpdHMgcGVyZm9ybWFuY2Ugb3IgYmVoYXZpb3IgbGF0ZXIgb24gZG93biB0aGUgbGluZS4gSXQmIzM5O3MgYmVzdCB0byBiZSBjb21wbGV0ZWx5IHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19CUEZfU1lTQ0FMTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGU9Nz1DRkxBR1NfY29yZS5vICYjNDM7PSAtV25vLW92ZXJyaWRlLWluaXQgJChjZmxhZ3Mtbm9nY3NlLXl5KVxua2VybmVsL2JwZi9NYWtlZmlsZS04LVxua2VybmVsL2JwZi9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHN5c2NhbGwubyB2ZXJpZmllci5vIGlub2RlLm8gaGVscGVycy5vIHRudW0ubyBjbnVtLm8gbG9nLm8gdG9rZW4ubyBsaXZlbmVzcy5vIGNvbnN0X2ZvbGQub1xua2VybmVsL2JwZi9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBicGZfaXRlci5vIG1hcF9pdGVyLm8gdGFza19pdGVyLm8gcHJvZ19pdGVyLm8gbGlua19pdGVyLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gaGFzaHRhYi5vIGFycmF5bWFwLm8gcGVyY3B1X2ZyZWVsaXN0Lm8gYnBmX2xydV9saXN0Lm8gbHBtX3RyaWUubyBtYXBfaW5fbWFwLm8gYmxvb21fZmlsdGVyLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gbG9jYWxfc3RvcmFnZS5vIHF1ZXVlX3N0YWNrX21hcHMubyByaW5nYnVmLm8gYnBmX2luc25fYXJyYXkub1xua2VybmVsL2JwZi9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBicGZfbG9jYWxfc3RvcmFnZS5vIGJwZl90YXNrX3N0b3JhZ2Uub1xua2VybmVsL2JwZi9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBmaXh1cHMubyBjZmcubyBzdGF0ZXMubyBiYWNrdHJhY2subyBjaGVja19idGYub1xua2VybmVsL2JwZi9NYWtlZmlsZS0xNS1vYmotJHtDT05GSUdfQlBGX0xTTX1cdCAgJiM0Mzs9IGJwZl9pbm9kZV9zdG9yYWdlLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gZGlzYXNtLm8gbXByb2cub1xua2VybmVsL2JwZi9NYWtlZmlsZS0xNy1vYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IHRyYW1wb2xpbmUub1xua2VybmVsL2JwZi9NYWtlZmlsZToxODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBidGYubyBtZW1hbGxvYy5vIHJxc3BpbmxvY2subyBzdHJlYW0ub1xua2VybmVsL2JwZi9NYWtlZmlsZS0xOS1pZmVxICgkKENPTkZJR19NTVUpJChDT05GSUdfNjRCSVQpLHl5KVxua2VybmVsL2JwZi9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBhcmVuYS5vIHJhbmdlX3RyZWUub1xua2VybmVsL2JwZi9NYWtlZmlsZS0yMS1lbmRpZlxuLS1cbmtlcm5lbC9icGYvTWFrZWZpbGU9MjM9aWZlcSAoJChDT05GSUdfTkVUKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZToyNDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBkZXZtYXAub1xua2VybmVsL2JwZi9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBjcHVtYXAub1xua2VybmVsL2JwZi9NYWtlZmlsZToyNjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBvZmZsb2FkLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6Mjc6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gbmV0X25hbWVzcGFjZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHRjeC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTI5LWVuZGlmXG5rZXJuZWwvYnBmL01ha2VmaWxlPTMwPWlmZXEgKCQoQ09ORklHX1BFUkZfRVZFTlRTKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZTozMTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBzdGFja21hcC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTMyLWVuZGlmXG5rZXJuZWwvYnBmL01ha2VmaWxlPTMzPWlmZXEgKCQoQ09ORklHX0NHUk9VUFMpLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGNncm91cF9pdGVyLm8gYnBmX2NncnBfc3RvcmFnZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTM1LWVuZGlmXG4tLVxua2VybmVsL2JwZi9NYWtlZmlsZT0zNz1pZmVxICgkKENPTkZJR19JTkVUKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZTozODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSByZXVzZXBvcnRfYXJyYXkub1xua2VybmVsL2JwZi9NYWtlZmlsZS0zOS1lbmRpZlxuLS1cbmtlcm5lbC9icGYvTWFrZWZpbGU9NDM9aWZlcSAoJChDT05GSUdfQlBGX0pJVCkseSlcbmtlcm5lbC9icGYvTWFrZWZpbGU6NDQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnBmX3N0cnVjdF9vcHMub1xua2VybmVsL2JwZi9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBjcHVtYXNrLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtNDYtIyBicGZfbHNtX3Byb3RvLm8gbXVzdCBwcmVjZWRlIGJwZl9sc20uby4gVGhlIGN1cnJlbnQgcGFob2xlIGxvZ2ljXG4tLVxua2VybmVsL2JwZi9NYWtlZmlsZT01OD1pZm5lcSAoJChDT05GSUdfQ1JZUFRPKSwpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjU5Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGNyeXB0by5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTYwLWVuZGlmXG5rZXJuZWwvYnBmL01ha2VmaWxlPTYxPW9iai0kKENPTkZJR19CUEZfUFJFTE9BRCkgJiM0Mzs9IHByZWxvYWQvXG5rZXJuZWwvYnBmL01ha2VmaWxlLTYyLVxua2VybmVsL2JwZi9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSByZWxvX2NvcmUub1xua2VybmVsL2JwZi9NYWtlZmlsZTo2NDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBidGZfaXRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY1Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJ0Zl9yZWxvY2F0ZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY2Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGttZW1fY2FjaGVfaXRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTY3LWlmZXEgKCQoQ09ORklHX0RNQV9TSEFSRURfQlVGRkVSKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZTo2ODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBkbWFidWZfaXRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTY5LWVuZGlmXG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MTAwPXN0cnVjdCBicGZfcHJvZyAqYnBmX3Byb2dfYWxsb2Nfbm9fc3RhdHModW5zaWduZWQgaW50IHNpemUsIGdmcF90IGdmcF9leHRyYV9mbGFncylcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0xNDMtXG5rZXJuZWwvYnBmL2NvcmUuYzoxNDQ6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9jb3JlLmMtMTQ1LVx0YnBmX3Byb2dfc3RyZWFtX2luaXQoZnApO1xuLS1cbmtlcm5lbC9icGYvY29yZS5jPTI0NjE9RVZBTDQoUFJPR19OQU1FX0xJU1QsIDQxNiwgNDQ4LCA0ODAsIDUxMilcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0yNDY0LVxua2VybmVsL2JwZi9jb3JlLmM6MjQ2NTojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG5rZXJuZWwvYnBmL2NvcmUuYy0yNDY2LWludCBicGZfcGF0Y2hfY2FsbF9hcmdzKHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgdTMyIHN0YWNrX2RlcHRoKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jPTMwNDU9dm9pZCBfX2JwZl9mcmVlX3VzZWRfYnRmcyhzdHJ1Y3QgYnRmX21vZF9wYWlyICp1c2VkX2J0ZnMsIHUzMiBsZW4pXG5rZXJuZWwvYnBmL2NvcmUuYy0zMDQ2LXtcbmtlcm5lbC9icGYvY29yZS5jOjMwNDc6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9jb3JlLmMtMzA0OC1cdHN0cnVjdCBidGZfbW9kX3BhaXIgKmJ0Zl9tb2Q7XG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MzA2Nj1zdGF0aWMgdm9pZCBicGZfcHJvZ19mcmVlX2RlZmVycmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0zMDcxLVx0YXV4ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBicGZfcHJvZ19hdXgsIHdvcmspO1xua2VybmVsL2JwZi9jb3JlLmM6MzA3MjojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG5rZXJuZWwvYnBmL2NvcmUuYy0zMDczLVx0YnBmX2ZyZWVfa2Z1bmNfYnRmX3RhYihhdXgtXHUwMDNla2Z1bmNfYnRmX3RhYik7XG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MzM4OD1zdGF0aWMgbm9pbmxpbmUgdm9pZCBicGZfcHJvZ19yZXBvcnRfbWF5X2dvdG9fdmlvbGF0aW9uKHZvaWQpXG5rZXJuZWwvYnBmL2NvcmUuYy0zMzg5LXtcbmtlcm5lbC9icGYvY29yZS5jOjMzOTA6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9jb3JlLmMtMzM5MS1cdHN0cnVjdCBicGZfc3RyZWFtX3N0YWdlIHNzO1xuLS1cbmtlcm5lbC9icGYvY29yZS5jPTM0Mjg9X193ZWFrIHU2NCBicGZfYXJlbmFfZ2V0X2tlcm5fdm1fc3RhcnQoc3RydWN0IGJwZl9hcmVuYSAqYXJlbmEpXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMzQzMi1cbmtlcm5lbC9icGYvY29yZS5jOjM0MzM6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9jb3JlLmMtMzQzNC1fX3dlYWsgYm9vbCBicGZfYXJlbmFfaGFuZGxlX3BhZ2VfZmF1bHQodW5zaWduZWQgbG9uZyBhZGRyLCBib29sIGlzX3dyaXRlLFxuLS1cbmtlcm5lbC9icGYvY29yZS5jPTM0NTk9RVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MX0dQTCh4ZHBfYnVsa190eCk7XG5rZXJuZWwvYnBmL2NvcmUuYy0zNDYwLVxua2VybmVsL2JwZi9jb3JlLmM6MzQ2MTojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG5rZXJuZWwvYnBmL2NvcmUuYy0zNDYyLVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE0Njc9aW50IF9fd2VhayBhcmNoX2JwZl90cmFtcG9saW5lX3NpemUoY29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICptLCB1MzIgZmxhZ3MsXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTQ3NC0gICAgZGVmaW5lZChDT05GSUdfSEFWRV9TSU5HTEVfRlRSQUNFX0RJUkVDVF9PUFMpIFx1MDAyNlx1MDAyNiBcXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTQ3NTogICAgZGVmaW5lZChDT05GSUdfQlBGX1NZU0NBTEwpXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNDc2LVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE3MTI9aW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3NDgtXHQgIENPTkZJR19IQVZFX1NJTkdMRV9GVFJBQ0VfRElSRUNUX09QUyBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE3NDk6XHQgIENPTkZJR19CUEZfU1lTQ0FMTCAqL1xua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTc1MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzMDYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnV6emluZyBTdHJhdGVneTogQlBGIFZlcmlmaWVyIEZpeGVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBjb25maWdzLCBzcGVjaWZpY2FsbHkgYEJQRl9TWVNDQUxMYCwgYW5kIEkgbmVlZCB0byBzdW1tYXJpemUgdGhpcyBwYXRjaC4gTGV0JiMzOTtzIHNlZS4uLiBpdCBsb29rcyBsaWtlIHRoZSBrZXkgY2hhbmdlcyBhcmUgaW4gdGhlIEJQRiB2ZXJpZmllci4gVGhlIGZpcnN0IG9uZSBkaXNhYmxlcyByYXcgbW9kZSBmb3IgYGJwZl9tYXBfcGVla19lbGVtYCBvbiBibG9vbSBmaWx0ZXJzIHRvIGF2b2lkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBhbmQgdGhlIHNlY29uZCB6ZXJvZXMgdGhlIGBtZXRhYCBzdHJ1Y3QgaW4gYGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YWAgYmVmb3JlIGNhbGxpbmcgYGZldGNoX2tmdW5jX21ldGFgLCB3aGljaCBzaG91bGQgYWxzbyBmaXggYSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaWYgdGhlIGZldGNoIGZhaWxzLiBGdW5jdGlvbmFsbHkgc3BlYWtpbmcsIGJvdGggb2YgdGhlc2UgYXJlIHZlcmlmaWVyIGNoYW5nZXMsIHNvIHRoZXkmIzM5O3JlIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4KClRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIGlzIHNldCB0byB0cnVlLCBzbyB0aGF0JiMzOTtzIGdvb2QuCgpNeSBgRm9jdXNTeW1ib2xzYCBhcmUgc2V0IHRvIGBjaGVja19mdW5jX2FyZ2AgYW5kIGBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFgLCB3aGljaCBmZWVscyByaWdodC4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB3aGV0aGVyIHRob3NlIHN5bWJvbHMgYXJlIHN1aXRhYmxlIHRhcmdldHMuIGBjaGVja19mdW5jX2FyZ2AgaXMgdXNlZCBmb3IgcHJldHR5IG11Y2ggZXZlcnkgaGVscGVyIGNhbGwgYXJndW1lbnQgaW4gQlBGIHByb2dyYW1zLCB3aGljaCBpcyBhIGhvdCBwYXRoIGR1cmluZyB2ZXJpZmljYXRpb24sIGFuZCB0aGF0JiMzOTtzIGV4YWN0bHkgd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yIC0gZnV6emluZyB0aGUgdmVyaWZpZXIgaXMgYSBjcml0aWNhbCB0YXJnZXQuIGBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFgIGFsc28gc2VlbXMgbGlrZSBhIGdvb2QgdGFyZ2V0IGFzIGl0JiMzOTtzIHBhcnQgb2YgdmVyaWZ5aW5nIGtmdW5jIGNhbGxzLgoKTm93LCBhIHF1aWNrIGNoZWNrIG9uIGBjaGVja19mdW5jX2FyZ2AgLSBpdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbiwgYW5kIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCYjMzk7cyBva2F5LiBTeXprYWxsZXIgZ2VuZXJhbGx5IHN1cHBvcnRzIHN0YXRpYyBmdW5jdGlvbnMgYXMgZm9jdXMgc3ltYm9scy4gU2luY2UgdGhlIGZvY3VzIGlzIG9uIGEgcGFydGljdWxhciBhcmVhIGFuZCBzaW5jZSBpdCYjMzk7cyBub3QgaW5saW5lZCwgSSB0aGluayBJJiMzOTttIGdvb2QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NoZWNrX2Z1bmNfYXJnJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz04NTc9c3RhdGljIGJvb2wgaXNfZHlucHRyX3JlZ192YWxpZF9pbml0KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTg2NC1cdCAqIENPTlNUX1BUUl9UT19EWU5QVFIgYWxyZWFkeSBoYXMgZml4ZWQgYW5kIHZhcl9vZmYgYXMgMCBkdWUgdG9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4NjU6XHQgKiBjaGVja19mdW5jX2FyZ19yZWdfb2ZmJiMzOTtzIGxvZ2ljLCBzbyB3ZSBkb24mIzM5O3QgbmVlZCB0byBjaGVjayBpdHNcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NjYtXHQgKiBvZmZzZXQgYW5kIGFsaWdubWVudC5cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NDMzNz1zdGF0aWMgaW50IG1hcF9rcHRyX21hdGNoX3R5cGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDM5Mi1cdCAqXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NDM5MzpcdCAqIEluIHRoZSBrcHRyX3JlZiBjYXNlLCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmIGFscmVhZHkgZW5zdXJlcyByZWctXHUwMDNldmFyX29mZlxua2VybmVsL2JwZi92ZXJpZmllci5jLTQzOTQtXHQgKiBpcyB6ZXJvLiBXZSBtdXN0IGFsc28gZW5zdXJlIHRoYXQgYnRmX3N0cnVjdF9pZHNfbWF0Y2ggZG9lcyBub3Qgd2Fsa1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz04MDY1PXJlZ19maW5kX2ZpZWxkX29mZnNldChjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBzMzIgb2ZmLCB1MzIgZmllbGRzKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04MDgwLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjgwODE6c3RhdGljIGludCBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04MDgyLVx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTgxNjAtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODE2MTpzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04MTYyLVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04MTY0LXtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4MTY1Olx0cmV0dXJuIF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIGFyZ190eXBlLCB0cnVlKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04MTY2LX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9ODI4Mz1zdGF0aWMgYm9vbCBjYW5fZWxpZGVfdmFsdWVfbnVsbG5lc3MoY29uc3Qgc3RydWN0IGJwZl9tYXAgKm1hcCk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODI4NC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4Mjg1OnN0YXRpYyBpbnQgY2hlY2tfZnVuY19hcmcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgdTMyIGFyZyxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04Mjg2LVx0XHRcdCAgc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04MzQxLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjgzNDI6XHRlcnIgPSBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnX3R5cGUpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTgzNDMtXHRpZiAoZXJyKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz05MTQzPXN0YXRpYyBpbnQgc2V0dXBfZnVuY19lbnRyeShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgc3VicHJvZywgaW50IGNhbGxzaXRlLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MTkwLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjkxOTE6c3RhdGljIGludCBidGZfY2hlY2tfZnVuY19hcmdfbWF0Y2goc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IHN1YnByb2csXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTE5Mi1cdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnRmICpidGYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTkyMzUtXHRcdH0gZWxzZSBpZiAoYXJnLVx1MDAzZWFyZ190eXBlID09IEFSR19QVFJfVE9fQ1RYKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6OTIzNjpcdFx0XHRyZXQgPSBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgQVJHX1BUUl9UT19DVFgpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTkyMzctXHRcdFx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTI0Ny1cdFx0fSBlbHNlIGlmIChiYXNlX3R5cGUoYXJnLVx1MDAzZWFyZ190eXBlKSA9PSBBUkdfUFRSX1RPX01FTSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jOjkyNDg6XHRcdFx0cmV0ID0gY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIEFSR19ET05UQ0FSRSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTI0OS1cdFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MjcxLVx0XHR9IGVsc2UgaWYgKGFyZy1cdTAwM2VhcmdfdHlwZSA9PSBBUkdfUFRSX1RPX0RZTlBUUikge1xua2VybmVsL2JwZi92ZXJpZmllci5jOjkyNzI6XHRcdFx0cmV0ID0gY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIEFSR19QVFJfVE9fRFlOUFRSKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MjczLVx0XHRcdGlmIChyZXQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTkyODctXHRcdFx0ZXJyID0gY2hlY2tfcmVnX3R5cGUoZW52LCByZWcsIGFyZ25vLCBhcmctXHUwMDNlYXJnX3R5cGUsIFx1MDAyNmFyZy1cdTAwM2VidGZfaWQsIFx1MDAyNm1ldGEpO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjkyODg6XHRcdFx0ZXJyID0gZXJyID86IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBhcmctXHUwMDNlYXJnX3R5cGUpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTkyODktXHRcdFx0aWYgKGVycilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9OTMwOD1zdGF0aWMgaW50IGJ0Zl9jaGVja19zdWJwcm9nX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IHN1YnByb2csXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTkzMjUtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6OTMyNjpcdGVyciA9IGJ0Zl9jaGVja19mdW5jX2FyZ19tYXRjaChlbnYsIHN1YnByb2csIGJ0ZiwgcmVncyk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTMyNy1cdC8qIENvbXBpbGVyIG9wdGltaXphdGlvbnMgY2FuIHJlbW92ZSBhcmd1bWVudHMgZnJvbSBzdGF0aWMgZnVuY3Rpb25zXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEwMjMxPXN0YXRpYyBpbnQgY2hlY2tfaGVscGVyX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDI5Ny1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1BWF9CUEZfRlVOQ19SRUdfQVJHUzsgaSYjNDM7JiM0MzspIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDI5ODpcdFx0ZXJyID0gY2hlY2tfZnVuY19hcmcoZW52LCBpLCBcdTAwMjZtZXRhLCBmbiwgaW5zbl9pZHgpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEwMjk5LVx0XHRpZiAoZXJyKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTk5MD1zdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjIxMC1cdFx0XHRhcmdfdHlwZSB8PSBPQkpfUkVMRUFTRTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjIxMTpcdFx0cmV0ID0gX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnX3R5cGUsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIyMTItXHRcdFx0XHRcdCAgICAgICBidGZfaWRfZml4ZWRfb2ZmX29rKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4MjIKCQkJCQkJCW91dHB1dDogMTU0CgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biByZWFzb25pbmc6CgoqKkFuYWx5emluZyBGdW5jdGlvbiBDYWxscyBhbmQgU2NvcGUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhhdCBgY2hlY2tfZnVuY19hcmdgIGZ1bmN0aW9uPyBZZWFoLCBpdCYjMzk7cyBwcmV0dHkgaGVmdHkuIENvbnNpZGVyaW5nIGl0cyBzaXplLCB0aGUgY29tcGlsZXIgcHJvYmFibHkgaXNuJiMzOTt0IGdvaW5nIHRvIGJlIGlubGluaW5nIGl0LiBXZSYjMzk7cmUgbG9va2luZyBhdCBhIGZ1bmN0aW9uIGNhbGwgb3ZlcmhlYWQgdGhlcmUsIHdoaWNoIGNvdWxkIGJlIGltcG9ydGFudCBmb3IgcGVyZm9ybWFuY2UgaW4gYSB0aWdodCBsb29wLgoKTm93LCB0aGF0IGBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFgIGZ1bmN0aW9uLi4uIGl0JiMzOTtzIGVpdGhlciBleHBvcnRlZCBvciwgYXQgdGhlIHZlcnkgbGVhc3QsIG5vdCBkZWNsYXJlZCBzdGF0aWMuIFRoYXQgaW1wbGllcyBpdCYjMzk7cyBhY2Nlc3NpYmxlIGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIGNvZGUsIHBvdGVudGlhbGx5IGV2ZW4gb3RoZXIgbW9kdWxlcy4gU28gaXRzIHZpc2liaWxpdHkgaXMgc29tZXRoaW5nIHdlIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBhcyBvdGhlciBhcmVhcyBjb3VsZCBwb3RlbnRpYWxseSByZWx5IG9uLCBvciBpbnRlcmZlcmUgd2l0aCBpdHMgZnVuY3Rpb25hbGl0eS4KCkJhc2VkIG9uIHRoYXQgYW5hbHlzaXMsIEkmIzM5O2xsIGdvIGFoZWFkIGFuZCBzZXQgdGhlIGV4cGVjdGVkIG91dGNvbWVzIG9mIHRoZSBjdXJyZW50IG9wZXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfZnVuY19hcmcmIzM0OywKICAgICYjMzQ7YnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gZGlzYWJsZSByYXcgbW9kZSBmb3IgYnBmX21hcF9wZWVrX2VsZW0oKSBvbiBibG9vbSBmaWx0ZXJzLCBwcmV2ZW50aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZyb20gYmVpbmcgcGFzc2VkIHRvIHRoZSBoZWxwZXIuIEl0IGFsc28gemVyb2VzIHRoZSBtZXRhIHN0cnVjdCBpbiBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGEoKSBiZWZvcmUgY2FsbGluZyBmZXRjaF9rZnVuY19tZXRhKCksIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSB3aGVuIHRoZSBmZXRjaCBmYWlscy4gQm90aCBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBCUEYgdmVyaWZpZXIgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NoZWNrX2Z1bmNfYXJnJiMzNDssCiAgICAmIzM0O2JwZl9mZXRjaF9rZnVuY19hcmdfbWV0YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGRpc2FibGUgcmF3IG1vZGUgZm9yIGJwZl9tYXBfcGVla19lbGVtKCkgb24gYmxvb20gZmlsdGVycywgcHJldmVudGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSBmcm9tIGJlaW5nIHBhc3NlZCB0byB0aGUgaGVscGVyLiBJdCBhbHNvIHplcm9lcyB0aGUgbWV0YSBzdHJ1Y3QgaW4gYnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhKCkgYmVmb3JlIGNhbGxpbmcgZmV0Y2hfa2Z1bmNfbWV0YSgpLCBmaXhpbmcgYSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgd2hlbiB0aGUgZmV0Y2ggZmFpbHMuIEJvdGggYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgQlBGIHZlcmlmaWVyIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjM0OjMyLjU0Mzg5ODYxOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3OTM2ODMwMzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2hlY2tfZnVuY19hcmdcIixcbiAgICBcImJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gZGlzYWJsZSByYXcgbW9kZSBmb3IgYnBmX21hcF9wZWVrX2VsZW0oKSBvbiBibG9vbSBmaWx0ZXJzLCBwcmV2ZW50aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZyb20gYmVpbmcgcGFzc2VkIHRvIHRoZSBoZWxwZXIuIEl0IGFsc28gemVyb2VzIHRoZSBtZXRhIHN0cnVjdCBpbiBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGEoKSBiZWZvcmUgY2FsbGluZyBmZXRjaF9rZnVuY19tZXRhKCksIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSB3aGVuIHRoZSBmZXRjaCBmYWlscy4gQm90aCBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBCUEYgdmVyaWZpZXIgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjozNDozMi41NDM5MDQwOTlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNDA3NDcxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGE1OGQxYzRhOWMwYjQzMDQ2MzQxYjJlOTQxYmRiNzExY2MwY2QxN2JcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMTUgMjI6MzQ6MzAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuaW5kZXggZGU4MTYwNjNhZTYzZDAuLmRkZmE0ZjU3MDE2Yjc0IDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbkBAIC04NDIyLDYgKzg0MjIsMTUgQEAgc3RhdGljIGludCBjaGVja19mdW5jX2FyZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCB1MzIgYXJnLFxcbiBcXHRcXHRcXHR2ZXJpZmllcl9idWcoZW52LCBcXFwiaW52YWxpZCBtYXBfcHRyIHRvIGFjY2VzcyBtYXAtXFx1MDAzZXZhbHVlXFxcIik7XFxuIFxcdFxcdFxcdHJldHVybiAtRUZBVUxUO1xcbiBcXHRcXHR9XFxuK1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBEaXNhYmxlIHJhdyBtb2RlIGZvciBicGZfbWFwX3BlZWtfZWxlbSgpIG9uIGEgYmxvb20gZmlsdGVyLiBUaGUgaGVscGVyIHJlYWRzXFxuK1xcdFxcdCAqIHRoZSB2YWx1ZSBidWZmZXIgYXMgYW4gaW5wdXQgcmF0aGVyIHRoYW4gZmlsbGluZyBpdC5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGlmIChtZXRhLVxcdTAwM2VmdW5jX2lkID09IEJQRl9GVU5DX21hcF9wZWVrX2VsZW0gXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgIG1ldGEtXFx1MDAzZW1hcC5wdHItXFx1MDAzZW1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9CTE9PTV9GSUxURVIpXFxuK1xcdFxcdFxcdG1ldGEtXFx1MDAzZWFyZ19yYXdfbWVtLnJlZ25vID0gMDtcXG4rXFxuIFxcdFxcdGVyciA9IGNoZWNrX2hlbHBlcl9tZW1fYWNjZXNzKGVudiwgcmVnLCBhcmdubywgbWV0YS1cXHUwMDNlbWFwLnB0ci1cXHUwMDNldmFsdWVfc2l6ZSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgYXJnX3R5cGUgXFx1MDAyNiBNRU1fV1JJVEUgPyBCUEZfV1JJVEUgOiBCUEZfUkVBRCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgZmFsc2UsIG1ldGEpO1xcbkBAIC0xMjU2MiwxMSArMTI1NzEsMTIgQEAgaW50IGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbiBcXHRzdHJ1Y3QgYnBmX2tmdW5jX21ldGEga2Z1bmM7XFxuIFxcdGludCBlcnI7XFxuIFxcbitcXHRtZW1zZXQobWV0YSwgMCwgc2l6ZW9mKCptZXRhKSk7XFxuK1xcbiBcXHRlcnIgPSBmZXRjaF9rZnVuY19tZXRhKGVudiwgZnVuY19pZCwgb2Zmc2V0LCBcXHUwMDI2a2Z1bmMpO1xcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXG4tXFx0bWVtc2V0KG1ldGEsIDAsIHNpemVvZigqbWV0YSkpO1xcbiBcXHRtZXRhLVxcdTAwM2VidGYgPSBrZnVuYy5idGY7XFxuIFxcdG1ldGEtXFx1MDAzZWZ1bmNfaWQgPSBrZnVuYy5pZDtcXG4gXFx0bWV0YS1cXHUwMDNlZnVuY19wcm90byA9IGtmdW5jLnByb3RvO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjozNDozMy4yNDg1MzkyOTVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MjMyMTc2NDI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2hlY2tfZnVuY19hcmdcIixcbiAgICBcImJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gZGlzYWJsZSByYXcgbW9kZSBmb3IgYnBmX21hcF9wZWVrX2VsZW0oKSBvbiBibG9vbSBmaWx0ZXJzLCBwcmV2ZW50aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZyb20gYmVpbmcgcGFzc2VkIHRvIHRoZSBoZWxwZXIuIEl0IGFsc28gemVyb2VzIHRoZSBtZXRhIHN0cnVjdCBpbiBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGEoKSBiZWZvcmUgY2FsbGluZyBmZXRjaF9rZnVuY19tZXRhKCksIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSB3aGVuIHRoZSBmZXRjaCBmYWlscy4gQm90aCBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBCUEYgdmVyaWZpZXIgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE1OGQxYzRhOWMwYjQzMDQ2MzQxYjJlOTQxYmRiNzExY2MwY2QxN2JcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAyMjozNDozMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggZGU4MTYwNjNhZTYzZDAuLmRkZmE0ZjU3MDE2Yjc0IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC04NDIyLDYgKzg0MjIsMTUgQEAgc3RhdGljIGludCBjaGVja19mdW5jX2FyZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCB1MzIgYXJnLFxuIFx0XHRcdHZlcmlmaWVyX2J1ZyhlbnYsIFwiaW52YWxpZCBtYXBfcHRyIHRvIGFjY2VzcyBtYXAtXHUwMDNldmFsdWVcIik7XG4gXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG4gXHRcdH1cbitcbitcdFx0LypcbitcdFx0ICogRGlzYWJsZSByYXcgbW9kZSBmb3IgYnBmX21hcF9wZWVrX2VsZW0oKSBvbiBhIGJsb29tIGZpbHRlci4gVGhlIGhlbHBlciByZWFkc1xuK1x0XHQgKiB0aGUgdmFsdWUgYnVmZmVyIGFzIGFuIGlucHV0IHJhdGhlciB0aGFuIGZpbGxpbmcgaXQuXG4rXHRcdCAqL1xuK1x0XHRpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IEJQRl9GVU5DX21hcF9wZWVrX2VsZW0gXHUwMDI2XHUwMDI2XG4rXHRcdCAgICBtZXRhLVx1MDAzZW1hcC5wdHItXHUwMDNlbWFwX3R5cGUgPT0gQlBGX01BUF9UWVBFX0JMT09NX0ZJTFRFUilcbitcdFx0XHRtZXRhLVx1MDAzZWFyZ19yYXdfbWVtLnJlZ25vID0gMDtcbitcbiBcdFx0ZXJyID0gY2hlY2tfaGVscGVyX21lbV9hY2Nlc3MoZW52LCByZWcsIGFyZ25vLCBtZXRhLVx1MDAzZW1hcC5wdHItXHUwMDNldmFsdWVfc2l6ZSxcbiBcdFx0XHRcdFx0ICAgICAgYXJnX3R5cGUgXHUwMDI2IE1FTV9XUklURSA/IEJQRl9XUklURSA6IEJQRl9SRUFELFxuIFx0XHRcdFx0XHQgICAgICBmYWxzZSwgbWV0YSk7XG5AQCAtMTI1NjIsMTEgKzEyNTcxLDEyIEBAIGludCBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGEoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdHN0cnVjdCBicGZfa2Z1bmNfbWV0YSBrZnVuYztcbiBcdGludCBlcnI7XG4gXG4rXHRtZW1zZXQobWV0YSwgMCwgc2l6ZW9mKCptZXRhKSk7XG4rXG4gXHRlcnIgPSBmZXRjaF9rZnVuY19tZXRhKGVudiwgZnVuY19pZCwgb2Zmc2V0LCBcdTAwMjZrZnVuYyk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuLVx0bWVtc2V0KG1ldGEsIDAsIHNpemVvZigqbWV0YSkpO1xuIFx0bWV0YS1cdTAwM2VidGYgPSBrZnVuYy5idGY7XG4gXHRtZXRhLVx1MDAzZWZ1bmNfaWQgPSBrZnVuYy5pZDtcbiBcdG1ldGEtXHUwMDNlZnVuY19wcm90byA9IGtmdW5jLnByb3RvO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MzQ6MzMuMjQ4NTQwNDg1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODg5NzA5NTU0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCUEYgVmVyaWZpZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyB0d2Vha2luZyB0aGUgQlBGIHZlcmlmaWVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBUaGUgZmlyc3QgcGFydCBjYXRjaGVzIG15IGF0dGVudGlvbjsgaXQncyBhZGRpbmcgYSBuZXcgY2hlY2sgd2l0aGluIGBjaGVja19mdW5jX2FyZ2AuIEl0IHNlZW1zIGxpa2Ugd2UncmUgYWRkcmVzc2luZyBhIHNwZWNpZmljIGlzc3VlIHJlbGF0ZWQgdG8gYGJwZl9tYXBfcGVla19lbGVtYCBhbmQgYmxvb20gZmlsdGVyIG1hcHMuIFRoZSBsb2dpYyBpcyBub3cgZGlzYWJsaW5nIFwicmF3IG1vZGVcIiBmb3IgdGhpcyBwYXJ0aWN1bGFyIGNvbWJpbmF0aW9uLiBUaGUgcmF0aW9uYWxlIGlzIGNsZWFyOiB0aGUgaGVscGVyIGBicGZfbWFwX3BlZWtfZWxlbWAgKnJlYWRzKiB0aGUgdmFsdWUgYnVmZmVyIHdoZW4gdXNlZCB3aXRoIGEgYmxvb20gZmlsdGVyLCByYXRoZXIgdGhhbiB3cml0aW5nIHRvIGl0LiBTbywgd2Ugc2V0IGBtZXRhLVx1MDAzZWFyZ19yYXdfbWVtLnJlZ25vID0gMDtgIHRvIHJlZmxlY3QgdGhhdC5cblxuVGhlIHNlY29uZCBwYXJ0IG9mIHRoZSBwYXRjaCBpcyBtb2RpZnlpbmcgYGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YWAuIEl0IGFwcGVhcnMgdG8gYmUgYWRkaW5nIGEgYG1lbXNldGAgY2FsbCB0byB6ZXJvIG91dCB0aGUgYG1ldGFgIHN0cnVjdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmdW5jdGlvbi4gTm93LCB0aGlzIGlzIGludGVyZXN0aW5nLiBJIGluaXRpYWxseSB0aG91Z2h0LCBcIldhaXQsIHdoeSBhcmUgd2UgemVyb2luZyBgbWV0YWAgKmJlZm9yZSogdGhlIGNhbGwgdG8gYGZldGNoX2tmdW5jX21ldGFgPyBJZiBgZmV0Y2hfa2Z1bmNfbWV0YWAgZmFpbHMsIGl0IHJldHVybnMgYW4gZXJyb3IsIGFuZCB0aGUgY2FsbGVyICpzaG91bGRuJ3QqIGJlIHVzaW5nIHRoZSB1bmluaXRpYWxpemVkIGBtZXRhYCBkYXRhLlwiIEhvd2V2ZXIsIG9uIHNlY29uZCB0aG91Z2h0LCBpdCBjb3VsZCBiZSB0aGF0IGBtZXRhYCBpcyBpbmRlZWQgdXNlZCBieSB0aGUgY2FsbGVyIGV2ZW4gaW4gYW4gZXJyb3IgY2FzZSwgb3IgbW9yZSBsaWtlbHksIGl0J3MganVzdCBkZWZlbnNpdmVseSBnb29kIHByYWN0aWNlIHRvIHplcm8gaXQgb3V0IHVwZnJvbnQuIEVuc3VyZXMgdGhhdCBldmVuIGlmIHRoZXJlJ3MgYSBwcm9ibGVtIGxhdGVyLCB3ZSdyZSBub3QgZGVhbGluZyB3aXRoIGdhcmJhZ2UgZGF0YS4gU3RpbGwsIEkgc2hvdWxkIGNoZWNrIHRoZSBjb250ZXh0IHRvIGJlIGNlcnRhaW4uXG5cbkkgbmVlZCB0byBkaWcgaW50byBga2VybmVsL2JwZi92ZXJpZmllci5jYCB0byB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZTogd2hhdCBjYWxscyBgY2hlY2tfZnVuY19hcmdgIGFuZCBgYnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhYCwgd2hhdCB1c2VzIHRoZSB2YWx1ZXMgZnJvbSB0aG9zZSBmdW5jdGlvbnMsIGFuZCBjb25maXJtIGlmIHRob3NlIGVycm9yIHBhdGhzIGFyZSByZWxldmFudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzMiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjM0OjQyLjE0NTYzNzY5MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTQ3NDc5OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2hlY2tfZnVuY19hcmdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz04NTc9c3RhdGljIGJvb2wgaXNfZHlucHRyX3JlZ192YWxpZF9pbml0KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODY0LVxcdCAqIENPTlNUX1BUUl9UT19EWU5QVFIgYWxyZWFkeSBoYXMgZml4ZWQgYW5kIHZhcl9vZmYgYXMgMCBkdWUgdG9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODY1OlxcdCAqIGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYncyBsb2dpYywgc28gd2UgZG9uJ3QgbmVlZCB0byBjaGVjayBpdHNcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODY2LVxcdCAqIG9mZnNldCBhbmQgYWxpZ25tZW50Llxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTQzMzc9c3RhdGljIGludCBtYXBfa3B0cl9tYXRjaF90eXBlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDM5Mi1cXHQgKlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0MzkzOlxcdCAqIEluIHRoZSBrcHRyX3JlZiBjYXNlLCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmIGFscmVhZHkgZW5zdXJlcyByZWctXFx1MDAzZXZhcl9vZmZcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDM5NC1cXHQgKiBpcyB6ZXJvLiBXZSBtdXN0IGFsc28gZW5zdXJlIHRoYXQgYnRmX3N0cnVjdF9pZHNfbWF0Y2ggZG9lcyBub3Qgd2Fsa1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTgwNjU9cmVnX2ZpbmRfZmllbGRfb2Zmc2V0KGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIHMzMiBvZmYsIHUzMiBmaWVsZHMpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODA4MC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODA4MTpzdGF0aWMgaW50IF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04MDgyLVxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTgxNjAtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjgxNjE6c3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTgxNjItXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTgxNjQte1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4MTY1OlxcdHJldHVybiBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBhcmdfdHlwZSwgdHJ1ZSk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTgxNjYtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTgyODM9c3RhdGljIGJvb2wgY2FuX2VsaWRlX3ZhbHVlX251bGxuZXNzKGNvbnN0IHN0cnVjdCBicGZfbWFwICptYXApO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04Mjg0LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4Mjg1OnN0YXRpYyBpbnQgY2hlY2tfZnVuY19hcmcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgdTMyIGFyZyxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODI4Ni1cXHRcXHRcXHQgIHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04MzQxLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4MzQyOlxcdGVyciA9IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBhcmdfdHlwZSk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTgzNDMtXFx0aWYgKGVycilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz05MTQzPXN0YXRpYyBpbnQgc2V0dXBfZnVuY19lbnRyeShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgc3VicHJvZywgaW50IGNhbGxzaXRlLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTkxOTAtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjkxOTE6c3RhdGljIGludCBidGZfY2hlY2tfZnVuY19hcmdfbWF0Y2goc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IHN1YnByb2csXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTkxOTItXFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBidGYgKmJ0ZixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MjM1LVxcdFxcdH0gZWxzZSBpZiAoYXJnLVxcdTAwM2VhcmdfdHlwZSA9PSBBUkdfUFRSX1RPX0NUWCkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5MjM2OlxcdFxcdFxcdHJldCA9IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBBUkdfUFRSX1RPX0NUWCk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTkyMzctXFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTI0Ny1cXHRcXHR9IGVsc2UgaWYgKGJhc2VfdHlwZShhcmctXFx1MDAzZWFyZ190eXBlKSA9PSBBUkdfUFRSX1RPX01FTSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5MjQ4OlxcdFxcdFxcdHJldCA9IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBBUkdfRE9OVENBUkUpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MjQ5LVxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTkyNzEtXFx0XFx0fSBlbHNlIGlmIChhcmctXFx1MDAzZWFyZ190eXBlID09IEFSR19QVFJfVE9fRFlOUFRSKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjkyNzI6XFx0XFx0XFx0cmV0ID0gY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIEFSR19QVFJfVE9fRFlOUFRSKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTI3My1cXHRcXHRcXHRpZiAocmV0KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTkyODctXFx0XFx0XFx0ZXJyID0gY2hlY2tfcmVnX3R5cGUoZW52LCByZWcsIGFyZ25vLCBhcmctXFx1MDAzZWFyZ190eXBlLCBcXHUwMDI2YXJnLVxcdTAwM2VidGZfaWQsIFxcdTAwMjZtZXRhKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6OTI4ODpcXHRcXHRcXHRlcnIgPSBlcnIgPzogY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIGFyZy1cXHUwMDNlYXJnX3R5cGUpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05Mjg5LVxcdFxcdFxcdGlmIChlcnIpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9OTMwOD1zdGF0aWMgaW50IGJ0Zl9jaGVja19zdWJwcm9nX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IHN1YnByb2csXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTMyNS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6OTMyNjpcXHRlcnIgPSBidGZfY2hlY2tfZnVuY19hcmdfbWF0Y2goZW52LCBzdWJwcm9nLCBidGYsIHJlZ3MpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MzI3LVxcdC8qIENvbXBpbGVyIG9wdGltaXphdGlvbnMgY2FuIHJlbW92ZSBhcmd1bWVudHMgZnJvbSBzdGF0aWMgZnVuY3Rpb25zXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTAyMzE9c3RhdGljIGludCBjaGVja19oZWxwZXJfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTAyOTctXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE1BWF9CUEZfRlVOQ19SRUdfQVJHUzsgaSsrKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEwMjk4OlxcdFxcdGVyciA9IGNoZWNrX2Z1bmNfYXJnKGVudiwgaSwgXFx1MDAyNm1ldGEsIGZuLCBpbnNuX2lkeCk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwMjk5LVxcdFxcdGlmIChlcnIpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE5OTA9c3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjIxMC1cXHRcXHRcXHRhcmdfdHlwZSB8PSBPQkpfUkVMRUFTRTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTIyMTE6XFx0XFx0cmV0ID0gX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnX3R5cGUsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjEyLVxcdFxcdFxcdFxcdFxcdCAgICAgICBidGZfaWRfZml4ZWRfb2ZmX29rKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MzQ6NDIuMjYwMzk1NjQ5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzMxODcyNjMxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4ga2VybmVsIEJQRiB2ZXJpZmljYXRpb246XG5cbioqQW5hbHl6aW5nIHRoZSBgY2hlY2tfZnVuY19hcmdgIE1vZGlmaWNhdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoZSBmb2N1cyBpcyBvbiB0aGUgYGNoZWNrX2Z1bmNfYXJnYCBmdW5jdGlvbiB3aXRoaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIGEgbW9kaWZpY2F0aW9uIHRoZXJlLi4uIHRoYXQncyBwb3RlbnRpYWxseSBpbXBhY3RmdWwuXCIgSSBuZWVkIHRvIHpvb20gaW4gYW5kIGV4YW1pbmUgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY2hhbmdlLiBgY2hlY2tfZnVuY19hcmdgIGlzIGEgY3JpdGljYWwgcGllY2UsIGl0IGhhbmRsZXMgdGhlIHZhbGlkYXRpb24gb2YgZnVuY3Rpb24gYXJndW1lbnRzIHBhc3NlZCB0byBCUEYgcHJvZ3JhbXMuIEFueSBjaGFuZ2UgaGVyZSBjb3VsZCBkaXJlY3RseSBpbXBhY3QgdGhlIHR5cGVzIG9mIHByb2dyYW1zIHRoYXQgY2FuIGJlIHNhZmVseSBsb2FkZWQgYW5kIGV4ZWN1dGVkLCBvciwgY3J1Y2lhbGx5LCBpdCBjb3VsZCBpbnRyb2R1Y2UgdnVsbmVyYWJpbGl0aWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqZXhhY3RseSogd2hhdCdzIGJlZW4gYWx0ZXJlZCBhbmQsIHBlcmhhcHMgbW9yZSBpbXBvcnRhbnRseSwgKndoeSouIEnigJlsbCBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIHRvIHNlZSBob3cgdGhpcyBjaGFuZ2UgcmlwcGxlcyB0aHJvdWdoIHRoZSB2ZXJpZmllciBsb2dpYy4gTXkgZXhwZXJ0IGV5ZSBuZWVkcyB0byBwaWNrIGFwYXJ0IHRoZSBiZWZvcmUgYW5kIGFmdGVyIHN0YXRlcyB0byBhc3Nlc3MgdGhlIHJpc2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MTMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjozNDo0OS41NzkxMjUwOTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzg0MjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA4NDEwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI4NDEwOlxcdFxcdFxcdFxcdH1cXG44NDExOlxcdFxcdFxcdH1cXG44NDEyOlxcdFxcdFxcdGJyZWFrO1xcbjg0MTM6XFx0XFx0Y2FzZSBBUkdfUFRSX1RPX01BUF9WQUxVRTpcXG44NDE0OlxcdFxcdFxcdGlmICh0eXBlX21heV9iZV9udWxsKGFyZ190eXBlKSBcXHUwMDI2XFx1MDAyNiBicGZfcmVnaXN0ZXJfaXNfbnVsbChyZWcpKVxcbjg0MTU6XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuODQxNjpcXHRcXG44NDE3OlxcdFxcdFxcdC8qIGJwZl9tYXBfeHh4KC4uLiwgbWFwX3B0ciwgLi4uLCB2YWx1ZSkgY2FsbDpcXG44NDE4OlxcdFxcdFxcdCAqIGNoZWNrIFt2YWx1ZSwgdmFsdWUgKyBtYXAtXFx1MDAzZXZhbHVlX3NpemUpIHZhbGlkaXR5XFxuODQxOTpcXHRcXHRcXHQgKi9cXG44NDIwOlxcdFxcdFxcdGlmICghbWV0YS1cXHUwMDNlbWFwLnB0cikge1xcbjg0MjE6XFx0XFx0XFx0XFx0Lyoga2VybmVsIHN1YnN5c3RlbSBtaXNjb25maWd1cmVkIHZlcmlmaWVyICovXFxuODQyMjpcXHRcXHRcXHRcXHR2ZXJpZmllcl9idWcoZW52LCBcXFwiaW52YWxpZCBtYXBfcHRyIHRvIGFjY2VzcyBtYXAtXFx1MDAzZXZhbHVlXFxcIik7XFxuODQyMzpcXHRcXHRcXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG44NDI0OlxcdFxcdFxcdH1cXG44NDI1OlxcdFxcbjg0MjY6XFx0XFx0XFx0LypcXG44NDI3OlxcdFxcdFxcdCAqIERpc2FibGUgcmF3IG1vZGUgZm9yIGJwZl9tYXBfcGVla19lbGVtKCkgb24gYSBibG9vbSBmaWx0ZXIuIFRoZSBoZWxwZXIgcmVhZHNcXG44NDI4OlxcdFxcdFxcdCAqIHRoZSB2YWx1ZSBidWZmZXIgYXMgYW4gaW5wdXQgcmF0aGVyIHRoYW4gZmlsbGluZyBpdC5cXG44NDI5OlxcdFxcdFxcdCAqL1xcbjg0MzA6XFx0XFx0XFx0aWYgKG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gQlBGX0ZVTkNfbWFwX3BlZWtfZWxlbSBcXHUwMDI2XFx1MDAyNlxcbjg0MzE6XFx0XFx0XFx0ICAgIG1ldGEtXFx1MDAzZW1hcC5wdHItXFx1MDAzZW1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9CTE9PTV9GSUxURVIpXFxuODQzMjpcXHRcXHRcXHRcXHRtZXRhLVxcdTAwM2VhcmdfcmF3X21lbS5yZWdubyA9IDA7XFxuODQzMzpcXHRcXG44NDM0OlxcdFxcdFxcdGVyciA9IGNoZWNrX2hlbHBlcl9tZW1fYWNjZXNzKGVudiwgcmVnLCBhcmdubywgbWV0YS1cXHUwMDNlbWFwLnB0ci1cXHUwMDNldmFsdWVfc2l6ZSxcXG44NDM1OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGFyZ190eXBlIFxcdTAwMjYgTUVNX1dSSVRFID8gQlBGX1dSSVRFIDogQlBGX1JFQUQsXFxuODQzNjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBmYWxzZSwgbWV0YSk7XFxuODQzNzpcXHRcXHRcXHRicmVhaztcXG44NDM4OlxcdFxcdGNhc2UgQVJHX1BUUl9UT19QRVJDUFVfQlRGX0lEOlxcbjg0Mzk6XFx0XFx0XFx0aWYgKCFyZWctXFx1MDAzZWJ0Zl9pZCkge1xcbjg0NDA6XFx0XFx0XFx0XFx0dmVyYm9zZShlbnYsIFxcXCJIZWxwZXIgaGFzIGludmFsaWQgYnRmX2lkIGluIFIlZFxcXFxuXFxcIiwgcmVnbm8pO1xcbjg0NDE6XFx0XFx0XFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuODQ0MjpcXHRcXHRcXHR9XFxuODQ0MzpcXHRcXHRcXHRtZXRhLVxcdTAwM2VyZXRfYnRmID0gcmVnLVxcdTAwM2VidGY7XFxuODQ0NDpcXHRcXHRcXHRtZXRhLVxcdTAwM2VyZXRfYnRmX2lkID0gcmVnLVxcdTAwM2VidGZfaWQ7XFxuODQ0NTpcXHRcXHRcXHRicmVhaztcXG44NDQ2OlxcdFxcdGNhc2UgQVJHX1BUUl9UT19TUElOX0xPQ0s6XFxuODQ0NzpcXHRcXHRcXHRpZiAoaW5fcmJ0cmVlX2xvY2tfcmVxdWlyZWRfY2IoZW52KSkge1xcbjg0NDg6XFx0XFx0XFx0XFx0dmVyYm9zZShlbnYsIFxcXCJjYW4ndCBzcGluX3tsb2NrLHVubG9ja30gaW4gcmJ0cmVlIGNiXFxcXG5cXFwiKTtcXG44NDQ5OlxcdFxcdFxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbjg0NTA6XFx0XFx0XFx0fVxcbjg0NTE6XFx0XFx0XFx0aWYgKG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gQlBGX0ZVTkNfc3Bpbl9sb2NrKSB7XFxuODQ1MjpcXHRcXHRcXHRcXHRlcnIgPSBwcm9jZXNzX3NwaW5fbG9jayhlbnYsIHJlZywgYXJnbm8sIFBST0NFU1NfU1BJTl9MT0NLKTtcXG44NDUzOlxcdFxcdFxcdFxcdGlmIChlcnIpXFxuODQ1NDpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbjg0NTU6XFx0XFx0XFx0fSBlbHNlIGlmIChtZXRhLVxcdTAwM2VmdW5jX2lkID09IEJQRl9GVU5DX3NwaW5fdW5sb2NrKSB7XFxuODQ1NjpcXHRcXHRcXHRcXHRlcnIgPSBwcm9jZXNzX3NwaW5fbG9jayhlbnYsIHJlZywgYXJnbm8sIDApO1xcbjg0NTc6XFx0XFx0XFx0XFx0aWYgKGVycilcXG44NDU4OlxcdFxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuODQ1OTpcXHRcXHRcXHR9IGVsc2Uge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjozNDo0OS41ODA1MTI2MzdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjE5OTM2Njc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBCbG9vbSBGaWx0ZXIgYW5kIFJhdyBNb2RlIENoYW5nZSoqXG5cbk9rYXksIHNvIHRoaXMgY2hhbmdlIGRpc2FibGVzIHJhdyBtb2RlIHNwZWNpZmljYWxseSBmb3IgYGJwZl9tYXBfcGVla19lbGVtYCB3aGVuIGRlYWxpbmcgd2l0aCBhIGJsb29tIGZpbHRlci4gSW5pdGlhbGx5LCBJIHRob3VnaHQgdGhpcyB3YXMgYSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBzaGlmdCB3aXRoaW4gdGhlIHZlcmlmaWVyIGFpbWVkIGF0IHByZXZlbnRpbmcgdGhlIHBvdGVudGlhbCBmb3IgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSB0aHJvdWdoIHRoaXMgaGVscGVyLiBNeSBmaXJzdCBhc3N1bXB0aW9uIHdhcyB0aGF0IHdlIGFyZSB0cnlpbmcgdG8gc3RvcCBpc3N1ZXMgYXJpc2luZyBmcm9tIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHBhc3NlZCB0byB0aGUgYGJwZl9tYXBfcGVla19lbGVtYCBmdW5jdGlvbiBmb3IgYmxvb20gZmlsdGVycy5cblxuQnV0IHRoZW4gSSBoYWQgdG8gdGhpbmsgdGhyb3VnaCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMuICBJZiByYXcgbW9kZSBpcyAqb24qLCB0aGUgdmVyaWZpZXIsIGluIGl0cyB3aXNkb20sIGFzc3VtZXMgdGhhdCB0aGUgaGVscGVyIGZ1bmN0aW9uICp3cml0ZXMqIHRvIHRoZSBwcm92aWRlZCBtZW1vcnkgbG9jYXRpb24uICBUaGF0J3Mgd2h5IGl0IGFsbG93cyB1bmluaXRpYWxpemVkIG1lbW9yeSB0byBiZSBwYXNzZWQg4oCTIHRoZSB2ZXJpZmllciBleHBlY3RzIHRoZSBoZWxwZXIgdG8gcG9wdWxhdGUgaXQuICBIb3dldmVyLCB3aXRoIGBicGZfbWFwX3BlZWtfZWxlbWAgYW5kIGl0cyBhcHBsaWNhdGlvbiB3aXRoIGJsb29tIGZpbHRlcnMsIHRoZSBoZWxwZXIgaXNuJ3Qgd3JpdGluZzsgaXQncyAqcmVhZGluZyouIEl0J3MgY2hlY2tpbmcgaWYgYW4gZWxlbWVudCBleGlzdHMgaW4gdGhlIGZpbHRlciwgYW5kIHRoZXJlZm9yZSByZWFkaW5nIHRoZSBjb250ZW50cyBvZiBtZW1vcnkuICBUaHVzLCBpZiByYXcgbW9kZSBpcyBlbmFibGVkIHdpdGggYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgbG9jYXRpb24sIHdlJ2QgYmUgaW5hZHZlcnRlbnRseSByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGF0J3MgYSBodWdlIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IVxuXG5TbywgdGhlIGNoYW5nZSBpcyBhY3R1YWxseSBxdWl0ZSBlbGVnYW50IGluIHByZXZlbnRpbmcgdGhpcy4gQnkgZGlzYWJsaW5nIHJhdyBtb2RlIGluIHRoaXMgc3BlY2lmaWMgc2NlbmFyaW8sIHRoZSB2ZXJpZmllciB3aWxsICpmb3JjZSogdGhlIG1lbW9yeSB0byBiZSBpbml0aWFsaXplZCBiZWZvcmUgYGJwZl9tYXBfcGVla19lbGVtYCBjYW4gZXZlbiBiZSBjYWxsZWQuIEl0J3MgYSBzb2xpZCBkZWZlbnNlIGFnYWluc3QgYSB2ZXJ5IHN1YnRsZSwgeWV0IHBvdGVudGlhbGx5IGRhbmdlcm91cywgZmxhdy4gSXQgbWFrZXMgc2Vuc2UgdG8gdGFrZSB0aGlzIGFwcHJvYWNoLCBzaW5jZSwgYXMgYSByZWFkLCB0aGUgaGVscGVyIGNhbm5vdCBiZSByZXNwb25zaWJsZSBmb3IgaW5pdGlhbGl6YXRpb24uXG5cbkknbSBub3cgdHVybmluZyBteSBhdHRlbnRpb24gdG8gdGhlIHNlY29uZCBjaGFuZ2UsIHdoaWNoIGZvY3VzZXMgb24gYGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YWAgLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NjIsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjozNDo1NC4yMDA0NTE1NjJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODQ4MDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjU2MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTI1NjA6XFx0XFx0XFx0fVxcbjEyNTYxOlxcdFxcdH1cXG4xMjU2MjpcXHRcXG4xMjU2MzpcXHRcXHRyZXR1cm4gMDtcXG4xMjU2NDpcXHR9XFxuMTI1NjU6XFx0XFxuMTI1NjY6XFx0aW50IGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbjEyNTY3OlxcdFxcdFxcdFxcdCAgICAgczMyIGZ1bmNfaWQsXFxuMTI1Njg6XFx0XFx0XFx0XFx0ICAgICBzMTYgb2Zmc2V0LFxcbjEyNTY5OlxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxcbjEyNTcwOlxcdHtcXG4xMjU3MTpcXHRcXHRzdHJ1Y3QgYnBmX2tmdW5jX21ldGEga2Z1bmM7XFxuMTI1NzI6XFx0XFx0aW50IGVycjtcXG4xMjU3MzpcXHRcXG4xMjU3NDpcXHRcXHRtZW1zZXQobWV0YSwgMCwgc2l6ZW9mKCptZXRhKSk7XFxuMTI1NzU6XFx0XFxuMTI1NzY6XFx0XFx0ZXJyID0gZmV0Y2hfa2Z1bmNfbWV0YShlbnYsIGZ1bmNfaWQsIG9mZnNldCwgXFx1MDAyNmtmdW5jKTtcXG4xMjU3NzpcXHRcXHRpZiAoZXJyKVxcbjEyNTc4OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuMTI1Nzk6XFx0XFxuMTI1ODA6XFx0XFx0bWV0YS1cXHUwMDNlYnRmID0ga2Z1bmMuYnRmO1xcbjEyNTgxOlxcdFxcdG1ldGEtXFx1MDAzZWZ1bmNfaWQgPSBrZnVuYy5pZDtcXG4xMjU4MjpcXHRcXHRtZXRhLVxcdTAwM2VmdW5jX3Byb3RvID0ga2Z1bmMucHJvdG87XFxuMTI1ODM6XFx0XFx0bWV0YS1cXHUwMDNlZnVuY19uYW1lID0ga2Z1bmMubmFtZTtcXG4xMjU4NDpcXHRcXG4xMjU4NTpcXHRcXHRpZiAoIWtmdW5jLmZsYWdzIHx8ICFidGZfa2Z1bmNfaXNfYWxsb3dlZChrZnVuYy5idGYsIGtmdW5jLmlkLCBlbnYtXFx1MDAzZXByb2cpKVxcbjEyNTg2OlxcdFxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbjEyNTg3OlxcdFxcbjEyNTg4OlxcdFxcdG1ldGEtXFx1MDAzZWtmdW5jX2ZsYWdzID0gKmtmdW5jLmZsYWdzO1xcbjEyNTg5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjozNDo1NC4yMDMzMDM3MTJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDE2MzQyNDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEZ1bmN0aW9uYWwgQ2hhbmdlIGluIHRoZSBCUEYgVmVyaWZpZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIGZ1bmN0aW9uYWwgY2hhbmdlIGhlcmUuIFNwZWNpZmljYWxseSwgemVyb2luZyBvdXQgYG1ldGFgICpiZWZvcmUqIGNhbGxpbmcgYGZldGNoX2tmdW5jX21ldGFgLiBUaGF0J3MgaW1wb3J0YW50IGJlY2F1c2UgYGZldGNoX2tmdW5jX21ldGFgIGNvdWxkIHBvdGVudGlhbGx5IHJldHVybiBhbiBlcnJvci4gUHJldmlvdXNseSwgaXQgbG9va3MgbGlrZSBgbWV0YWAgbWlnaHQgaGF2ZSBiZWVuIGxlZnQgdW5pbml0aWFsaXplZCBvciBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQgaWYgdGhlcmUgd2FzIGEgcHJvYmxlbS4gTm93LCBpdCdzIGV4cGxpY2l0bHkgemVyb2VkLCBwcm92aWRpbmcgYSBkZWZpbmVkIHN0YXRlIGluIHRoZSBlcnJvciBjYXNlLiBHb29kLiBUaGF0IGRlZmluaXRlbHkgc291bmRzIGxpa2Ugc29tZXRoaW5nIHRoYXQgZGVzZXJ2ZXMgYSBnb29kIGZ1enppbmcgY2FtcGFpZ24uIEZ1bmN0aW9uYWwgY2hhbmdlID0gZnV6emluZyB0aW1lIVxuXG5MZXQncyBzZWUsIHdoYXQgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIHRvIHRhcmdldD8gR2l2ZW4gdGhlIGNoYW5nZSwgSSdtIHRoaW5raW5nIHRoZSBmb2N1cyBzaG91bGQgYmUgb24gYGNoZWNrX2Z1bmNfYXJnYCwgYGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YWAsIGFuZCBgY2hlY2tfaGVscGVyX2NhbGxgIHNpbmNlIHRoZSBsYXR0ZXIgY2FsbHMgYGNoZWNrX2Z1bmNfYXJnYC4gQWxzbywgSSdsbCBuZWVkIHRvIGxvb2sgYXQgYGNoZWNrX2tmdW5jX2FyZ3NgIGJlY2F1c2UgaXQgKm1pZ2h0KiBjYWxsIGBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFgLCBvciBzb21ldGhpbmcgc2ltaWxhci5cblxuSG1tLCB3YWl0IGEgc2Vjb25kLi4uIGBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFgIGlzIGNhbGxlZCBmcm9tIHdoZXJlIGV4YWN0bHk/IEkgYmV0dGVyIGRvdWJsZS1jaGVjayB0aGUgY2FsbCBncmFwaCB0byBiZSBzdXJlIEkndmUgZ290IHRoZSBjb21wbGV0ZSBwaWN0dXJlLiBOZWVkIHRvIG1ha2Ugc3VyZSBJIGdldCB0aGF0IGNvdmVyZWQgaW4gdGhlIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwMTksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjozNTowMS4yMTk2NDk2NjdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzM0MTc3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTk5MD1zdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNTY1LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjU2NjppbnQgYnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNTY3LVxcdFxcdFxcdCAgICAgczMyIGZ1bmNfaWQsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI3MjU9czY0IGJwZl9rZnVuY19zdGFja19hY2Nlc3NfYnl0ZXMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzM1LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjczNjpcXHRpZiAoYnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhKGVudiwgaW5zbi1cXHUwMDNlaW1tLCBpbnNuLVxcdTAwM2VvZmYsIFxcdTAwMjZtZXRhKSBcXHUwMDNjIDApXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzM3LVxcdFxcdHJldHVybiBTNjRfTUlOO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyOTYxPXN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5ODAtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyOTgxOlxcdGVyciA9IGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YShlbnYsIGluc24tXFx1MDAzZWltbSwgaW5zbi1cXHUwMDNlb2ZmLCBcXHUwMDI2bWV0YSk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyOTgyLVxcdGlmIChlcnIgPT0gLUVBQ0NFUyBcXHUwMDI2XFx1MDAyNiBtZXRhLmZ1bmNfbmFtZSlcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNjcyMD1ib29sIGJwZl9nZXRfY2FsbF9zdW1tYXJ5KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqY2FsbCxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNjc0Ny1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTY3NDg6XFx0XFx0ZXJyID0gYnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhKGVudiwgY2FsbC1cXHUwMDNlaW1tLCBjYWxsLVxcdTAwM2VvZmYsIFxcdTAwMjZtZXRhKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTY3NDktXFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjM1OjAxLjQ0Mjk5NzI4MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTYwMTY3MzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIEtlcm5lbCBCUEYgRnVuY3Rpb24gQXJndW1lbnQgTWV0YWRhdGEqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgYGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YWAgaXMgYSBrZXkgZnVuY3Rpb24sIGFuZCBpdCdzIGJlaW5nIGNhbGxlZCBmcm9tIHNldmVyYWwgaW1wb3J0YW50IHBsYWNlczogYGJwZl9rZnVuY19zdGFja19hY2Nlc3NfYnl0ZXNgLCBgY2hlY2tfa2Z1bmNfY2FsbGAsIGFuZCBgYnBmX2dldF9jYWxsX3N1bW1hcnlgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHRoZXJlLlxuXG5NeSBwcmltYXJ5IGZvY3VzIHJpZ2h0IG5vdyBzaG91bGQgYmUgb24gYGNoZWNrX2Z1bmNfYXJnYCBhbmQsIGNydWNpYWxseSwgYGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YWAgaXRzZWxmLiBUaG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyBJIHJlYWxseSBuZWVkIHRvIGRyaWxsIGRvd24gaW50by5cblxuTm93LCBmcm9tIGEgY29uZmlndXJhdGlvbiBwZXJzcGVjdGl2ZSwgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgdGhlIGJpZyBvbmUsIGJ1dCBJIHNob3VsZCBwcm9iYWJseSBzY2FuIGZvciBhbnkgcmVsYXRlZCBkZXBlbmRlbmNpZXMuIEkgZG9uJ3Qgd2FudCB0byBtaXNzIGFueXRoaW5nLlxuXG5GaW5hbGx5LCBJJ20gY3VyaW91cyBhYm91dCB0aGUgYmxvb20gZmlsdGVyIG1hcCB0eXBlIOKAkyBgQlBGX01BUF9UWVBFX0JMT09NX0ZJTFRFUmAuIElzIGl0cyBmdW5jdGlvbmFsaXR5IGNvbmRpdGlvbmFsIG9uIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnM/IFRpbWUgdG8gaW52ZXN0aWdhdGUgdGhlIHJlbGV2YW50IHNvdXJjZSBjb2RlIOKAkyBwcm9iYWJseSBga2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY2Agb3Igc29tZXRoaW5nIHNpbWlsYXIuIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgdGhlIGJsb29tIGZpbHRlciBmdW5jdGlvbmFsaXR5IGlzIGVuYWJsZWQgaW4gdGhlIGN1cnJlbnQga2VybmVsIGNvbmZpZy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODA5MCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjozNTowNS42MDMxNjc0OTZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3OTIxOTg1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJCUEZfTUFQX1RZUEVfQkxPT01fRklMVEVSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvc3lzY2FsbC5jPTI1MD1zdGF0aWMgaW50IGJwZl9tYXBfdXBkYXRlX3ZhbHVlKHN0cnVjdCBicGZfbWFwICptYXAsIHN0cnVjdCBmaWxlICptYXBfZmlsZSxcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTI5MC1cXHRcXHQgICBtYXAtXFx1MDAzZW1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9TVEFDSyB8fFxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjI5MTpcXHRcXHQgICBtYXAtXFx1MDAzZW1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9CTE9PTV9GSUxURVIpIHtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0yOTItXFx0XFx0ZXJyID0gbWFwLVxcdTAwM2VvcHMtXFx1MDAzZW1hcF9wdXNoX2VsZW0obWFwLCB2YWx1ZSwgZmxhZ3MpO1xcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9MzA4PXN0YXRpYyBpbnQgYnBmX21hcF9jb3B5X3ZhbHVlKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmtleSwgdm9pZCAqdmFsdWUsXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zMzQtXFx0XFx0ICAgbWFwLVxcdTAwM2VtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfU1RBQ0sgfHxcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzozMzU6XFx0XFx0ICAgbWFwLVxcdTAwM2VtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfQkxPT01fRklMVEVSKSB7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzM2LVxcdFxcdGVyciA9IG1hcC1cXHUwMDNlb3BzLVxcdTAwM2VtYXBfcGVla19lbGVtKG1hcCwgdmFsdWUpO1xcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9MTM3MD1zdGF0aWMgaW50IG1hcF9jcmVhdGVfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTQwNi1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxNDA3OlxcdGlmIChhdHRyLVxcdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfQkxPT01fRklMVEVSIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTQwOC1cXHQgICAgYXR0ci1cXHUwMDNlbWFwX3R5cGUgIT0gQlBGX01BUF9UWVBFX0FSRU5BIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNDkzLVxcdGNhc2UgQlBGX01BUF9UWVBFX0NHUlBfU1RPUkFHRTpcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxNDk0OlxcdGNhc2UgQlBGX01BUF9UWVBFX0JMT09NX0ZJTFRFUjpcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNDk1LVxcdGNhc2UgQlBGX01BUF9UWVBFX0xQTV9UUklFOlxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9MTc3ND1zdGF0aWMgaW50IG1hcF9sb29rdXBfZWxlbSh1bmlvbiBicGZfYXR0ciAqYXR0cilcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE4MDctXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTgwODpcXHRpZiAobWFwLVxcdTAwM2VtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfQkxPT01fRklMVEVSKSB7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTgwOS1cXHRcXHRpZiAoY29weV9mcm9tX3VzZXIodmFsdWUsIHV2YWx1ZSwgdmFsdWVfc2l6ZSkpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9Nzc2Mz1zdGF0aWMgaW50IHJlc29sdmVfbWFwX2FyZ190eXBlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNzc4Mi1cXHRcXHRicmVhaztcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6Nzc4MzpcXHRjYXNlIEJQRl9NQVBfVFlQRV9CTE9PTV9GSUxURVI6XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTc3ODQtXFx0XFx0aWYgKG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gQlBGX0ZVTkNfbWFwX3BlZWtfZWxlbSlcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz04Mjg1PXN0YXRpYyBpbnQgY2hlY2tfZnVuY19hcmcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgdTMyIGFyZyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NDMwLVxcdFxcdGlmIChtZXRhLVxcdTAwM2VmdW5jX2lkID09IEJQRl9GVU5DX21hcF9wZWVrX2VsZW0gXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODQzMTpcXHRcXHQgICAgbWV0YS1cXHUwMDNlbWFwLnB0ci1cXHUwMDNlbWFwX3R5cGUgPT0gQlBGX01BUF9UWVBFX0JMT09NX0ZJTFRFUilcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODQzMi1cXHRcXHRcXHRtZXRhLVxcdTAwM2VhcmdfcmF3X21lbS5yZWdubyA9IDA7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9ODU2NT1zdGF0aWMgaW50IGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHkoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04Njg3LVxcdFxcdGJyZWFrO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4Njg4OlxcdGNhc2UgQlBGX01BUF9UWVBFX0JMT09NX0ZJTFRFUjpcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODY4OS1cXHRcXHRpZiAoZnVuY19pZCAhPSBCUEZfRlVOQ19tYXBfcGVla19lbGVtIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODc3Ny1cXHRcXHQgICAgbWFwLVxcdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfU1RBQ0sgXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODc3ODpcXHRcXHQgICAgbWFwLVxcdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfQkxPT01fRklMVEVSKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04Nzc5LVxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjM1OjA1Ljg4MjM5MzQ2MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQxNzMwMTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSB3ZXJlIG15IG93bjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgQmxvb20gRmlsdGVyIGluIEJQRiBTeXNjYWxsKipcblxuUmlnaHQsIHNvIHRoZSBibG9vbSBmaWx0ZXIgbWFwIGlzIGludGVncmFsIHRvIHRoZSBCUEYgc3lzY2FsbCBpbXBsZW1lbnRhdGlvbi4gVGhhdCdzIGdvb2QgdG8ga25vdywgYW5kIGV4cGVjdGVkLCByZWFsbHkuIEl0IG1ha2VzIHNlbnNlIGl0J3MgY29yZSB0byB0aGUgc3RydWN0dXJlLiBBbmQsIGZyb20gYSBjb25maWd1cmF0aW9uIHBlcnNwZWN0aXZlLCBJJ20gcHJldHR5IHN1cmUgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgYWxsIHRoYXQncyB0cnVseSBuZWVkZWQgdG8gZW5hYmxlIGl0LiBCdXQsIGdpdmVuIG15IHRob3JvdWdobmVzcywgSSBzaG91bGQgZG91YmxlIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgKmFueSogb3RoZXIgY29uZmlnIG9wdGlvbnMgdGhhdCBtaWdodCBpbmZsdWVuY2Ugb3IgaW50ZXJhY3Qgd2l0aCB0aGlzIHNwZWNpZmljIGFzcGVjdC4gSSBkb24ndCB3YW50IHRvIG1pc3MgYW55dGhpbmcgdGhhdCBjb3VsZCBpbXBhY3QgaXRzIHBlcmZvcm1hbmNlIG9yIGJlaGF2aW9yIGxhdGVyIG9uIGRvd24gdGhlIGxpbmUuIEl0J3MgYmVzdCB0byBiZSBjb21wbGV0ZWx5IHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2NTksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjozNTowOS42MjQxMjY3NjNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMDM2MTYxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZT03PUNGTEFHU19jb3JlLm8gKz0gLVduby1vdmVycmlkZS1pbml0ICQoY2ZsYWdzLW5vZ2NzZS15eSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlLTgtXFxua2VybmVsL2JwZi9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gc3lzY2FsbC5vIHZlcmlmaWVyLm8gaW5vZGUubyBoZWxwZXJzLm8gdG51bS5vIGNudW0ubyBsb2cubyB0b2tlbi5vIGxpdmVuZXNzLm8gY29uc3RfZm9sZC5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBoYXNodGFiLm8gYXJyYXltYXAubyBwZXJjcHVfZnJlZWxpc3QubyBicGZfbHJ1X2xpc3QubyBscG1fdHJpZS5vIG1hcF9pbl9tYXAubyBibG9vbV9maWx0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBsb2NhbF9zdG9yYWdlLm8gcXVldWVfc3RhY2tfbWFwcy5vIHJpbmdidWYubyBicGZfaW5zbl9hcnJheS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl9sb2NhbF9zdG9yYWdlLm8gYnBmX3Rhc2tfc3RvcmFnZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGZpeHVwcy5vIGNmZy5vIHN0YXRlcy5vIGJhY2t0cmFjay5vIGNoZWNrX2J0Zi5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0xNS1vYmotJHtDT05GSUdfQlBGX0xTTX1cXHQgICs9IGJwZl9pbm9kZV9zdG9yYWdlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gZGlzYXNtLm8gbXByb2cub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTctb2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IHRyYW1wb2xpbmUub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTg6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBidGYubyBtZW1hbGxvYy5vIHJxc3BpbmxvY2subyBzdHJlYW0ub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTktaWZlcSAoJChDT05GSUdfTU1VKSQoQ09ORklHXzY0QklUKSx5eSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYXJlbmEubyByYW5nZV90cmVlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTIxLWVuZGlmXFxuLS1cXG5rZXJuZWwvYnBmL01ha2VmaWxlPTIzPWlmZXEgKCQoQ09ORklHX05FVCkseSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gZGV2bWFwLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI1Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gY3B1bWFwLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI2Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gb2ZmbG9hZC5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToyNzpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IG5ldF9uYW1lc3BhY2Uub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6Mjg6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSB0Y3gub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMjktZW5kaWZcXG5rZXJuZWwvYnBmL01ha2VmaWxlPTMwPWlmZXEgKCQoQ09ORklHX1BFUkZfRVZFTlRTKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6MzE6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBzdGFja21hcC5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0zMi1lbmRpZlxcbmtlcm5lbC9icGYvTWFrZWZpbGU9MzM9aWZlcSAoJChDT05GSUdfQ0dST1VQUykseSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gY2dyb3VwX2l0ZXIubyBicGZfY2dycF9zdG9yYWdlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTM1LWVuZGlmXFxuLS1cXG5rZXJuZWwvYnBmL01ha2VmaWxlPTM3PWlmZXEgKCQoQ09ORklHX0lORVQpLHkpXFxua2VybmVsL2JwZi9NYWtlZmlsZTozODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHJldXNlcG9ydF9hcnJheS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0zOS1lbmRpZlxcbi0tXFxua2VybmVsL2JwZi9NYWtlZmlsZT00Mz1pZmVxICgkKENPTkZJR19CUEZfSklUKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6NDQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfc3RydWN0X29wcy5vXFxua2VybmVsL2JwZi9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGNwdW1hc2sub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtNDYtIyBicGZfbHNtX3Byb3RvLm8gbXVzdCBwcmVjZWRlIGJwZl9sc20uby4gVGhlIGN1cnJlbnQgcGFob2xlIGxvZ2ljXFxuLS1cXG5rZXJuZWwvYnBmL01ha2VmaWxlPTU4PWlmbmVxICgkKENPTkZJR19DUllQVE8pLClcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjU5Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gY3J5cHRvLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTYwLWVuZGlmXFxua2VybmVsL2JwZi9NYWtlZmlsZT02MT1vYmotJChDT05GSUdfQlBGX1BSRUxPQUQpICs9IHByZWxvYWQvXFxua2VybmVsL2JwZi9NYWtlZmlsZS02Mi1cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjYzOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gcmVsb19jb3JlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYnRmX2l0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6NjU6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBidGZfcmVsb2NhdGUub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6NjY6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBrbWVtX2NhY2hlX2l0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtNjctaWZlcSAoJChDT05GSUdfRE1BX1NIQVJFRF9CVUZGRVIpLHkpXFxua2VybmVsL2JwZi9NYWtlZmlsZTo2ODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGRtYWJ1Zl9pdGVyLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTY5LWVuZGlmXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz0xMDA9c3RydWN0IGJwZl9wcm9nICpicGZfcHJvZ19hbGxvY19ub19zdGF0cyh1bnNpZ25lZCBpbnQgc2l6ZSwgZ2ZwX3QgZ2ZwX2V4dHJhX2ZsYWdzKVxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmMtMTQzLVxcbmtlcm5lbC9icGYvY29yZS5jOjE0NDojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9jb3JlLmMtMTQ1LVxcdGJwZl9wcm9nX3N0cmVhbV9pbml0KGZwKTtcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTI0NjE9RVZBTDQoUFJPR19OQU1FX0xJU1QsIDQxNiwgNDQ4LCA0ODAsIDUxMilcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTI0NjQtXFxua2VybmVsL2JwZi9jb3JlLmM6MjQ2NTojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9jb3JlLmMtMjQ2Ni1pbnQgYnBmX3BhdGNoX2NhbGxfYXJncyhzdHJ1Y3QgYnBmX2luc24gKmluc24sIHUzMiBzdGFja19kZXB0aClcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTMwNDU9dm9pZCBfX2JwZl9mcmVlX3VzZWRfYnRmcyhzdHJ1Y3QgYnRmX21vZF9wYWlyICp1c2VkX2J0ZnMsIHUzMiBsZW4pXFxua2VybmVsL2JwZi9jb3JlLmMtMzA0Ni17XFxua2VybmVsL2JwZi9jb3JlLmM6MzA0NzojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9jb3JlLmMtMzA0OC1cXHRzdHJ1Y3QgYnRmX21vZF9wYWlyICpidGZfbW9kO1xcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9MzA2Nj1zdGF0aWMgdm9pZCBicGZfcHJvZ19mcmVlX2RlZmVycmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTMwNzEtXFx0YXV4ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBicGZfcHJvZ19hdXgsIHdvcmspO1xcbmtlcm5lbC9icGYvY29yZS5jOjMwNzI6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmtlcm5lbC9icGYvY29yZS5jLTMwNzMtXFx0YnBmX2ZyZWVfa2Z1bmNfYnRmX3RhYihhdXgtXFx1MDAzZWtmdW5jX2J0Zl90YWIpO1xcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9MzM4OD1zdGF0aWMgbm9pbmxpbmUgdm9pZCBicGZfcHJvZ19yZXBvcnRfbWF5X2dvdG9fdmlvbGF0aW9uKHZvaWQpXFxua2VybmVsL2JwZi9jb3JlLmMtMzM4OS17XFxua2VybmVsL2JwZi9jb3JlLmM6MzM5MDojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9jb3JlLmMtMzM5MS1cXHRzdHJ1Y3QgYnBmX3N0cmVhbV9zdGFnZSBzcztcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTM0Mjg9X193ZWFrIHU2NCBicGZfYXJlbmFfZ2V0X2tlcm5fdm1fc3RhcnQoc3RydWN0IGJwZl9hcmVuYSAqYXJlbmEpXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0zNDMyLVxcbmtlcm5lbC9icGYvY29yZS5jOjM0MzM6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmtlcm5lbC9icGYvY29yZS5jLTM0MzQtX193ZWFrIGJvb2wgYnBmX2FyZW5hX2hhbmRsZV9wYWdlX2ZhdWx0KHVuc2lnbmVkIGxvbmcgYWRkciwgYm9vbCBpc193cml0ZSxcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTM0NTk9RVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MX0dQTCh4ZHBfYnVsa190eCk7XFxua2VybmVsL2JwZi9jb3JlLmMtMzQ2MC1cXG5rZXJuZWwvYnBmL2NvcmUuYzozNDYxOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5rZXJuZWwvYnBmL2NvcmUuYy0zNDYyLVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTQ2Nz1pbnQgX193ZWFrIGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKm0sIHUzMiBmbGFncyxcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE0NzQtICAgIGRlZmluZWQoQ09ORklHX0hBVkVfU0lOR0xFX0ZUUkFDRV9ESVJFQ1RfT1BTKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTQ3NTogICAgZGVmaW5lZChDT05GSUdfQlBGX1NZU0NBTEwpXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTQ3Ni1cXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE3MTI9aW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTc0OC1cXHQgIENPTkZJR19IQVZFX1NJTkdMRV9GVFJBQ0VfRElSRUNUX09QUyBcXHUwMDI2XFx1MDAyNlxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE3NDk6XFx0ICBDT05GSUdfQlBGX1NZU0NBTEwgKi9cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNzUwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjozNTowOS43NDQ0OTYyODFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYyOTkyMjI1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBGdXp6aW5nIFN0cmF0ZWd5OiBCUEYgVmVyaWZpZXIgRml4ZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBjb25maWdzLCBzcGVjaWZpY2FsbHkgYEJQRl9TWVNDQUxMYCwgYW5kIEkgbmVlZCB0byBzdW1tYXJpemUgdGhpcyBwYXRjaC4gTGV0J3Mgc2VlLi4uIGl0IGxvb2tzIGxpa2UgdGhlIGtleSBjaGFuZ2VzIGFyZSBpbiB0aGUgQlBGIHZlcmlmaWVyLiBUaGUgZmlyc3Qgb25lIGRpc2FibGVzIHJhdyBtb2RlIGZvciBgYnBmX21hcF9wZWVrX2VsZW1gIG9uIGJsb29tIGZpbHRlcnMgdG8gYXZvaWQgdW5pbml0aWFsaXplZCBtZW1vcnksIGFuZCB0aGUgc2Vjb25kIHplcm9lcyB0aGUgYG1ldGFgIHN0cnVjdCBpbiBgYnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhYCBiZWZvcmUgY2FsbGluZyBgZmV0Y2hfa2Z1bmNfbWV0YWAsIHdoaWNoIHNob3VsZCBhbHNvIGZpeCBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSBpZiB0aGUgZmV0Y2ggZmFpbHMuIEZ1bmN0aW9uYWxseSBzcGVha2luZywgYm90aCBvZiB0aGVzZSBhcmUgdmVyaWZpZXIgY2hhbmdlcywgc28gdGhleSdyZSBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuXG5cblRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIGlzIHNldCB0byB0cnVlLCBzbyB0aGF0J3MgZ29vZC5cblxuTXkgYEZvY3VzU3ltYm9sc2AgYXJlIHNldCB0byBgY2hlY2tfZnVuY19hcmdgIGFuZCBgYnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhYCwgd2hpY2ggZmVlbHMgcmlnaHQuIEknbSB0aGlua2luZyBhYm91dCB3aGV0aGVyIHRob3NlIHN5bWJvbHMgYXJlIHN1aXRhYmxlIHRhcmdldHMuIGBjaGVja19mdW5jX2FyZ2AgaXMgdXNlZCBmb3IgcHJldHR5IG11Y2ggZXZlcnkgaGVscGVyIGNhbGwgYXJndW1lbnQgaW4gQlBGIHByb2dyYW1zLCB3aGljaCBpcyBhIGhvdCBwYXRoIGR1cmluZyB2ZXJpZmljYXRpb24sIGFuZCB0aGF0J3MgZXhhY3RseSB3aGF0IEknbSBsb29raW5nIGZvciAtIGZ1enppbmcgdGhlIHZlcmlmaWVyIGlzIGEgY3JpdGljYWwgdGFyZ2V0LiBgYnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhYCBhbHNvIHNlZW1zIGxpa2UgYSBnb29kIHRhcmdldCBhcyBpdCdzIHBhcnQgb2YgdmVyaWZ5aW5nIGtmdW5jIGNhbGxzLlxuXG5Ob3csIGEgcXVpY2sgY2hlY2sgb24gYGNoZWNrX2Z1bmNfYXJnYCAtIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIGFuZCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQncyBva2F5LiBTeXprYWxsZXIgZ2VuZXJhbGx5IHN1cHBvcnRzIHN0YXRpYyBmdW5jdGlvbnMgYXMgZm9jdXMgc3ltYm9scy4gU2luY2UgdGhlIGZvY3VzIGlzIG9uIGEgcGFydGljdWxhciBhcmVhIGFuZCBzaW5jZSBpdCdzIG5vdCBpbmxpbmVkLCBJIHRoaW5rIEknbSBnb29kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjMwNiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjozNToxNS4zNzQ0MjExNzRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDUxNzY3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjaGVja19mdW5jX2FyZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTg1Nz1zdGF0aWMgYm9vbCBpc19keW5wdHJfcmVnX3ZhbGlkX2luaXQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NjQtXFx0ICogQ09OU1RfUFRSX1RPX0RZTlBUUiBhbHJlYWR5IGhhcyBmaXhlZCBhbmQgdmFyX29mZiBhcyAwIGR1ZSB0b1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4NjU6XFx0ICogY2hlY2tfZnVuY19hcmdfcmVnX29mZidzIGxvZ2ljLCBzbyB3ZSBkb24ndCBuZWVkIHRvIGNoZWNrIGl0c1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NjYtXFx0ICogb2Zmc2V0IGFuZCBhbGlnbm1lbnQuXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NDMzNz1zdGF0aWMgaW50IG1hcF9rcHRyX21hdGNoX3R5cGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00MzkyLVxcdCAqXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjQzOTM6XFx0ICogSW4gdGhlIGtwdHJfcmVmIGNhc2UsIGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYgYWxyZWFkeSBlbnN1cmVzIHJlZy1cXHUwMDNldmFyX29mZlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00Mzk0LVxcdCAqIGlzIHplcm8uIFdlIG11c3QgYWxzbyBlbnN1cmUgdGhhdCBidGZfc3RydWN0X2lkc19tYXRjaCBkb2VzIG5vdCB3YWxrXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9ODA2NT1yZWdfZmluZF9maWVsZF9vZmZzZXQoY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgczMyIG9mZiwgdTMyIGZpZWxkcylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04MDgwLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4MDgxOnN0YXRpYyBpbnQgX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTgwODItXFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODE2MC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODE2MTpzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODE2Mi1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODE2NC17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjgxNjU6XFx0cmV0dXJuIF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIGFyZ190eXBlLCB0cnVlKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODE2Ni19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9ODI4Mz1zdGF0aWMgYm9vbCBjYW5fZWxpZGVfdmFsdWVfbnVsbG5lc3MoY29uc3Qgc3RydWN0IGJwZl9tYXAgKm1hcCk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTgyODQtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjgyODU6c3RhdGljIGludCBjaGVja19mdW5jX2FyZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCB1MzIgYXJnLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04Mjg2LVxcdFxcdFxcdCAgc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTgzNDEtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjgzNDI6XFx0ZXJyID0gY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIGFyZ190eXBlKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODM0My1cXHRpZiAoZXJyKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTkxNDM9c3RhdGljIGludCBzZXR1cF9mdW5jX2VudHJ5KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBzdWJwcm9nLCBpbnQgY2FsbHNpdGUsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTE5MC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6OTE5MTpzdGF0aWMgaW50IGJ0Zl9jaGVja19mdW5jX2FyZ19tYXRjaChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgc3VicHJvZyxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTE5Mi1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTkyMzUtXFx0XFx0fSBlbHNlIGlmIChhcmctXFx1MDAzZWFyZ190eXBlID09IEFSR19QVFJfVE9fQ1RYKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjkyMzY6XFx0XFx0XFx0cmV0ID0gY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIEFSR19QVFJfVE9fQ1RYKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTIzNy1cXHRcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MjQ3LVxcdFxcdH0gZWxzZSBpZiAoYmFzZV90eXBlKGFyZy1cXHUwMDNlYXJnX3R5cGUpID09IEFSR19QVFJfVE9fTUVNKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjkyNDg6XFx0XFx0XFx0cmV0ID0gY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIEFSR19ET05UQ0FSRSk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTkyNDktXFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTI3MS1cXHRcXHR9IGVsc2UgaWYgKGFyZy1cXHUwMDNlYXJnX3R5cGUgPT0gQVJHX1BUUl9UT19EWU5QVFIpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6OTI3MjpcXHRcXHRcXHRyZXQgPSBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgQVJHX1BUUl9UT19EWU5QVFIpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MjczLVxcdFxcdFxcdGlmIChyZXQpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTI4Ny1cXHRcXHRcXHRlcnIgPSBjaGVja19yZWdfdHlwZShlbnYsIHJlZywgYXJnbm8sIGFyZy1cXHUwMDNlYXJnX3R5cGUsIFxcdTAwMjZhcmctXFx1MDAzZWJ0Zl9pZCwgXFx1MDAyNm1ldGEpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5Mjg4OlxcdFxcdFxcdGVyciA9IGVyciA/OiBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnLVxcdTAwM2VhcmdfdHlwZSk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTkyODktXFx0XFx0XFx0aWYgKGVycilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz05MzA4PXN0YXRpYyBpbnQgYnRmX2NoZWNrX3N1YnByb2dfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgc3VicHJvZyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MzI1LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5MzI2OlxcdGVyciA9IGJ0Zl9jaGVja19mdW5jX2FyZ19tYXRjaChlbnYsIHN1YnByb2csIGJ0ZiwgcmVncyk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTkzMjctXFx0LyogQ29tcGlsZXIgb3B0aW1pemF0aW9ucyBjYW4gcmVtb3ZlIGFyZ3VtZW50cyBmcm9tIHN0YXRpYyBmdW5jdGlvbnNcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDIzMT1zdGF0aWMgaW50IGNoZWNrX2hlbHBlcl9jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDI5Ny1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTUFYX0JQRl9GVU5DX1JFR19BUkdTOyBpKyspIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTAyOTg6XFx0XFx0ZXJyID0gY2hlY2tfZnVuY19hcmcoZW52LCBpLCBcXHUwMDI2bWV0YSwgZm4sIGluc25faWR4KTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTAyOTktXFx0XFx0aWYgKGVycilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTk5MD1zdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjEwLVxcdFxcdFxcdGFyZ190eXBlIHw9IE9CSl9SRUxFQVNFO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjIxMTpcXHRcXHRyZXQgPSBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBhcmdfdHlwZSxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIyMTItXFx0XFx0XFx0XFx0XFx0ICAgICAgIGJ0Zl9pZF9maXhlZF9vZmZfb2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjozNToxNS40Nzg5NDU0MzJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY2Nzc0MDQzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nOlxuXG4qKkFuYWx5emluZyBGdW5jdGlvbiBDYWxscyBhbmQgU2NvcGUqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoYXQgYGNoZWNrX2Z1bmNfYXJnYCBmdW5jdGlvbj8gWWVhaCwgaXQncyBwcmV0dHkgaGVmdHkuIENvbnNpZGVyaW5nIGl0cyBzaXplLCB0aGUgY29tcGlsZXIgcHJvYmFibHkgaXNuJ3QgZ29pbmcgdG8gYmUgaW5saW5pbmcgaXQuIFdlJ3JlIGxvb2tpbmcgYXQgYSBmdW5jdGlvbiBjYWxsIG92ZXJoZWFkIHRoZXJlLCB3aGljaCBjb3VsZCBiZSBpbXBvcnRhbnQgZm9yIHBlcmZvcm1hbmNlIGluIGEgdGlnaHQgbG9vcC5cblxuTm93LCB0aGF0IGBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFgIGZ1bmN0aW9uLi4uIGl0J3MgZWl0aGVyIGV4cG9ydGVkIG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgbm90IGRlY2xhcmVkIHN0YXRpYy4gVGhhdCBpbXBsaWVzIGl0J3MgYWNjZXNzaWJsZSBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBjb2RlLCBwb3RlbnRpYWxseSBldmVuIG90aGVyIG1vZHVsZXMuIFNvIGl0cyB2aXNpYmlsaXR5IGlzIHNvbWV0aGluZyB3ZSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgYXMgb3RoZXIgYXJlYXMgY291bGQgcG90ZW50aWFsbHkgcmVseSBvbiwgb3IgaW50ZXJmZXJlIHdpdGggaXRzIGZ1bmN0aW9uYWxpdHkuXG5cbkJhc2VkIG9uIHRoYXQgYW5hbHlzaXMsIEknbGwgZ28gYWhlYWQgYW5kIHNldCB0aGUgZXhwZWN0ZWQgb3V0Y29tZXMgb2YgdGhlIGN1cnJlbnQgb3BlcmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDgyMiwiT3V0cHV0VG9rZW5zIjoxNTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjozNToxOS4xNDY2ODgzNjZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzM0MDE5OTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNoZWNrX2Z1bmNfYXJnXCIsXG4gICAgXCJicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGRpc2FibGUgcmF3IG1vZGUgZm9yIGJwZl9tYXBfcGVla19lbGVtKCkgb24gYmxvb20gZmlsdGVycywgcHJldmVudGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSBmcm9tIGJlaW5nIHBhc3NlZCB0byB0aGUgaGVscGVyLiBJdCBhbHNvIHplcm9lcyB0aGUgbWV0YSBzdHJ1Y3QgaW4gYnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhKCkgYmVmb3JlIGNhbGxpbmcgZmV0Y2hfa2Z1bmNfbWV0YSgpLCBmaXhpbmcgYSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgd2hlbiB0aGUgZmV0Y2ggZmFpbHMuIEJvdGggYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgQlBGIHZlcmlmaWVyIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNoZWNrX2Z1bmNfYXJnXCIsXG4gICAgXCJicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGRpc2FibGUgcmF3IG1vZGUgZm9yIGJwZl9tYXBfcGVla19lbGVtKCkgb24gYmxvb20gZmlsdGVycywgcHJldmVudGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSBmcm9tIGJlaW5nIHBhc3NlZCB0byB0aGUgaGVscGVyLiBJdCBhbHNvIHplcm9lcyB0aGUgbWV0YSBzdHJ1Y3QgaW4gYnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhKCkgYmVmb3JlIGNhbGxpbmcgZmV0Y2hfa2Z1bmNfbWV0YSgpLCBmaXhpbmcgYSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgd2hlbiB0aGUgZmV0Y2ggZmFpbHMuIEJvdGggYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgQlBGIHZlcmlmaWVyIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflownvfqs[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-15 22:03:49 +0000 UTC FinishedAt: 2026-07-15 22:35:22 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d1f4b56417a3dc1a0600f960b14f46bd25eda89d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "d1f4b56417a3dc1a0600f960b14f46bd25eda89d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "bb4cf268-ec03-473b-a48b-e66b52810129" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "check_func_arg", "bpf_fetch_kfunc_arg_meta" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfZnVuY19hcmcmIzM0OywKICAgICYjMzQ7YnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gZGlzYWJsZSByYXcgbW9kZSBmb3IgYnBmX21hcF9wZWVrX2VsZW0oKSBvbiBibG9vbSBmaWx0ZXJzLCBwcmV2ZW50aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZyb20gYmVpbmcgcGFzc2VkIHRvIHRoZSBoZWxwZXIuIEl0IGFsc28gemVyb2VzIHRoZSBtZXRhIHN0cnVjdCBpbiBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGEoKSBiZWZvcmUgY2FsbGluZyBmZXRjaF9rZnVuY19tZXRhKCksIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSB3aGVuIHRoZSBmZXRjaCBmYWlscy4gQm90aCBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBCUEYgdmVyaWZpZXIgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTU4ZDFjNGE5YzBiNDMwNDYzNDFiMmU5NDFiZGI3MTFjYzBjZDE3YlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDE1IDIyOjM0OjMwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggZGU4MTYwNjNhZTYzZDAuLmRkZmE0ZjU3MDE2Yjc0IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC04NDIyLDYgJiM0Mzs4NDIyLDE1IEBAIHN0YXRpYyBpbnQgY2hlY2tfZnVuY19hcmcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgdTMyIGFyZyxcbiBcdFx0XHR2ZXJpZmllcl9idWcoZW52LCBcJiMzNDtpbnZhbGlkIG1hcF9wdHIgdG8gYWNjZXNzIG1hcC1cdTAwM2V2YWx1ZVwmIzM0Oyk7XG4gXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG4gXHRcdH1cbiYjNDM7XG4mIzQzO1x0XHQvKlxuJiM0MztcdFx0ICogRGlzYWJsZSByYXcgbW9kZSBmb3IgYnBmX21hcF9wZWVrX2VsZW0oKSBvbiBhIGJsb29tIGZpbHRlci4gVGhlIGhlbHBlciByZWFkc1xuJiM0MztcdFx0ICogdGhlIHZhbHVlIGJ1ZmZlciBhcyBhbiBpbnB1dCByYXRoZXIgdGhhbiBmaWxsaW5nIGl0LlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IEJQRl9GVU5DX21hcF9wZWVrX2VsZW0gXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgbWV0YS1cdTAwM2VtYXAucHRyLVx1MDAzZW1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9CTE9PTV9GSUxURVIpXG4mIzQzO1x0XHRcdG1ldGEtXHUwMDNlYXJnX3Jhd19tZW0ucmVnbm8gPSAwO1xuJiM0MztcbiBcdFx0ZXJyID0gY2hlY2tfaGVscGVyX21lbV9hY2Nlc3MoZW52LCByZWcsIGFyZ25vLCBtZXRhLVx1MDAzZW1hcC5wdHItXHUwMDNldmFsdWVfc2l6ZSxcbiBcdFx0XHRcdFx0ICAgICAgYXJnX3R5cGUgXHUwMDI2IE1FTV9XUklURSA/IEJQRl9XUklURSA6IEJQRl9SRUFELFxuIFx0XHRcdFx0XHQgICAgICBmYWxzZSwgbWV0YSk7XG5AQCAtMTI1NjIsMTEgJiM0MzsxMjU3MSwxMiBAQCBpbnQgYnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4gXHRzdHJ1Y3QgYnBmX2tmdW5jX21ldGEga2Z1bmM7XG4gXHRpbnQgZXJyO1xuIFxuJiM0MztcdG1lbXNldChtZXRhLCAwLCBzaXplb2YoKm1ldGEpKTtcbiYjNDM7XG4gXHRlcnIgPSBmZXRjaF9rZnVuY19tZXRhKGVudiwgZnVuY19pZCwgb2Zmc2V0LCBcdTAwMjZrZnVuYyk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuLVx0bWVtc2V0KG1ldGEsIDAsIHNpemVvZigqbWV0YSkpO1xuIFx0bWV0YS1cdTAwM2VidGYgPSBrZnVuYy5idGY7XG4gXHRtZXRhLVx1MDAzZWZ1bmNfaWQgPSBrZnVuYy5pZDtcbiBcdG1ldGEtXHUwMDNlZnVuY19wcm90byA9IGtmdW5jLnByb3RvO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjM0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfZnVuY19hcmcmIzM0OywKICAgICYjMzQ7YnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gZGlzYWJsZSByYXcgbW9kZSBmb3IgYnBmX21hcF9wZWVrX2VsZW0oKSBvbiBibG9vbSBmaWx0ZXJzLCBwcmV2ZW50aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZyb20gYmVpbmcgcGFzc2VkIHRvIHRoZSBoZWxwZXIuIEl0IGFsc28gemVyb2VzIHRoZSBtZXRhIHN0cnVjdCBpbiBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGEoKSBiZWZvcmUgY2FsbGluZyBmZXRjaF9rZnVuY19tZXRhKCksIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSB3aGVuIHRoZSBmZXRjaCBmYWlscy4gQm90aCBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBCUEYgdmVyaWZpZXIgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhNThkMWM0YTljMGI0MzA0NjM0MWIyZTk0MWJkYjcxMWNjMGNkMTdiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMTUgMjI6MzQ6MzAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKaW5kZXggZGU4MTYwNjNhZTYzZDAuLmRkZmE0ZjU3MDE2Yjc0IDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jCkBAIC04NDIyLDYgJiM0Mzs4NDIyLDE1IEBAIHN0YXRpYyBpbnQgY2hlY2tfZnVuY19hcmcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgdTMyIGFyZywKIAkJCXZlcmlmaWVyX2J1ZyhlbnYsICYjMzQ7aW52YWxpZCBtYXBfcHRyIHRvIGFjY2VzcyBtYXAtJmd0O3ZhbHVlJiMzNDspOwogCQkJcmV0dXJuIC1FRkFVTFQ7CiAJCX0KJiM0MzsKJiM0MzsJCS8qCiYjNDM7CQkgKiBEaXNhYmxlIHJhdyBtb2RlIGZvciBicGZfbWFwX3BlZWtfZWxlbSgpIG9uIGEgYmxvb20gZmlsdGVyLiBUaGUgaGVscGVyIHJlYWRzCiYjNDM7CQkgKiB0aGUgdmFsdWUgYnVmZmVyIGFzIGFuIGlucHV0IHJhdGhlciB0aGFuIGZpbGxpbmcgaXQuCiYjNDM7CQkgKi8KJiM0MzsJCWlmIChtZXRhLSZndDtmdW5jX2lkID09IEJQRl9GVU5DX21hcF9wZWVrX2VsZW0gJmFtcDsmYW1wOwomIzQzOwkJICAgIG1ldGEtJmd0O21hcC5wdHItJmd0O21hcF90eXBlID09IEJQRl9NQVBfVFlQRV9CTE9PTV9GSUxURVIpCiYjNDM7CQkJbWV0YS0mZ3Q7YXJnX3Jhd19tZW0ucmVnbm8gPSAwOwomIzQzOwogCQllcnIgPSBjaGVja19oZWxwZXJfbWVtX2FjY2VzcyhlbnYsIHJlZywgYXJnbm8sIG1ldGEtJmd0O21hcC5wdHItJmd0O3ZhbHVlX3NpemUsCiAJCQkJCSAgICAgIGFyZ190eXBlICZhbXA7IE1FTV9XUklURSA/IEJQRl9XUklURSA6IEJQRl9SRUFELAogCQkJCQkgICAgICBmYWxzZSwgbWV0YSk7CkBAIC0xMjU2MiwxMSAmIzQzOzEyNTcxLDEyIEBAIGludCBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGEoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKIAlzdHJ1Y3QgYnBmX2tmdW5jX21ldGEga2Z1bmM7CiAJaW50IGVycjsKIAomIzQzOwltZW1zZXQobWV0YSwgMCwgc2l6ZW9mKCptZXRhKSk7CiYjNDM7CiAJZXJyID0gZmV0Y2hfa2Z1bmNfbWV0YShlbnYsIGZ1bmNfaWQsIG9mZnNldCwgJmFtcDtrZnVuYyk7CiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKIAotCW1lbXNldChtZXRhLCAwLCBzaXplb2YoKm1ldGEpKTsKIAltZXRhLSZndDtidGYgPSBrZnVuYy5idGY7CiAJbWV0YS0mZ3Q7ZnVuY19pZCA9IGtmdW5jLmlkOwogCW1ldGEtJmd0O2Z1bmNfcHJvdG8gPSBrZnVuYy5wcm90bzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEzMgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQ3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCUEYgVmVyaWZpZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCYjMzk7cyB0d2Vha2luZyB0aGUgQlBGIHZlcmlmaWVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBUaGUgZmlyc3QgcGFydCBjYXRjaGVzIG15IGF0dGVudGlvbjsgaXQmIzM5O3MgYWRkaW5nIGEgbmV3IGNoZWNrIHdpdGhpbiBgY2hlY2tfZnVuY19hcmdgLiBJdCBzZWVtcyBsaWtlIHdlJiMzOTtyZSBhZGRyZXNzaW5nIGEgc3BlY2lmaWMgaXNzdWUgcmVsYXRlZCB0byBgYnBmX21hcF9wZWVrX2VsZW1gIGFuZCBibG9vbSBmaWx0ZXIgbWFwcy4gVGhlIGxvZ2ljIGlzIG5vdyBkaXNhYmxpbmcgJiMzNDtyYXcgbW9kZSYjMzQ7IGZvciB0aGlzIHBhcnRpY3VsYXIgY29tYmluYXRpb24uIFRoZSByYXRpb25hbGUgaXMgY2xlYXI6IHRoZSBoZWxwZXIgYGJwZl9tYXBfcGVla19lbGVtYCAqcmVhZHMqIHRoZSB2YWx1ZSBidWZmZXIgd2hlbiB1c2VkIHdpdGggYSBibG9vbSBmaWx0ZXIsIHJhdGhlciB0aGFuIHdyaXRpbmcgdG8gaXQuIFNvLCB3ZSBzZXQgYG1ldGEtJmd0O2FyZ19yYXdfbWVtLnJlZ25vID0gMDtgIHRvIHJlZmxlY3QgdGhhdC4KClRoZSBzZWNvbmQgcGFydCBvZiB0aGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFgLiBJdCBhcHBlYXJzIHRvIGJlIGFkZGluZyBhIGBtZW1zZXRgIGNhbGwgdG8gemVybyBvdXQgdGhlIGBtZXRhYCBzdHJ1Y3QgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZnVuY3Rpb24uIE5vdywgdGhpcyBpcyBpbnRlcmVzdGluZy4gSSBpbml0aWFsbHkgdGhvdWdodCwgJiMzNDtXYWl0LCB3aHkgYXJlIHdlIHplcm9pbmcgYG1ldGFgICpiZWZvcmUqIHRoZSBjYWxsIHRvIGBmZXRjaF9rZnVuY19tZXRhYD8gSWYgYGZldGNoX2tmdW5jX21ldGFgIGZhaWxzLCBpdCByZXR1cm5zIGFuIGVycm9yLCBhbmQgdGhlIGNhbGxlciAqc2hvdWxkbiYjMzk7dCogYmUgdXNpbmcgdGhlIHVuaW5pdGlhbGl6ZWQgYG1ldGFgIGRhdGEuJiMzNDsgSG93ZXZlciwgb24gc2Vjb25kIHRob3VnaHQsIGl0IGNvdWxkIGJlIHRoYXQgYG1ldGFgIGlzIGluZGVlZCB1c2VkIGJ5IHRoZSBjYWxsZXIgZXZlbiBpbiBhbiBlcnJvciBjYXNlLCBvciBtb3JlIGxpa2VseSwgaXQmIzM5O3MganVzdCBkZWZlbnNpdmVseSBnb29kIHByYWN0aWNlIHRvIHplcm8gaXQgb3V0IHVwZnJvbnQuIEVuc3VyZXMgdGhhdCBldmVuIGlmIHRoZXJlJiMzOTtzIGEgcHJvYmxlbSBsYXRlciwgd2UmIzM5O3JlIG5vdCBkZWFsaW5nIHdpdGggZ2FyYmFnZSBkYXRhLiBTdGlsbCwgSSBzaG91bGQgY2hlY2sgdGhlIGNvbnRleHQgdG8gYmUgY2VydGFpbi4KCkkgbmVlZCB0byBkaWcgaW50byBga2VybmVsL2JwZi92ZXJpZmllci5jYCB0byB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZTogd2hhdCBjYWxscyBgY2hlY2tfZnVuY19hcmdgIGFuZCBgYnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhYCwgd2hhdCB1c2VzIHRoZSB2YWx1ZXMgZnJvbSB0aG9zZSBmdW5jdGlvbnMsIGFuZCBjb25maXJtIGlmIHRob3NlIGVycm9yIHBhdGhzIGFyZSByZWxldmFudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjaGVja19mdW5jX2FyZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmM9ODU3PXN0YXRpYyBib29sIGlzX2R5bnB0cl9yZWdfdmFsaWRfaW5pdChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NjQtXHQgKiBDT05TVF9QVFJfVE9fRFlOUFRSIGFscmVhZHkgaGFzIGZpeGVkIGFuZCB2YXJfb2ZmIGFzIDAgZHVlIHRvXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODY1Olx0ICogY2hlY2tfZnVuY19hcmdfcmVnX29mZiYjMzk7cyBsb2dpYywgc28gd2UgZG9uJiMzOTt0IG5lZWQgdG8gY2hlY2sgaXRzXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODY2LVx0ICogb2Zmc2V0IGFuZCBhbGlnbm1lbnQuXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTQzMzc9c3RhdGljIGludCBtYXBfa3B0cl9tYXRjaF90eXBlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTQzOTItXHQgKlxua2VybmVsL2JwZi92ZXJpZmllci5jOjQzOTM6XHQgKiBJbiB0aGUga3B0cl9yZWYgY2FzZSwgY2hlY2tfZnVuY19hcmdfcmVnX29mZiBhbHJlYWR5IGVuc3VyZXMgcmVnLVx1MDAzZXZhcl9vZmZcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00Mzk0LVx0ICogaXMgemVyby4gV2UgbXVzdCBhbHNvIGVuc3VyZSB0aGF0IGJ0Zl9zdHJ1Y3RfaWRzX21hdGNoIGRvZXMgbm90IHdhbGtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9ODA2NT1yZWdfZmluZF9maWVsZF9vZmZzZXQoY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgczMyIG9mZiwgdTMyIGZpZWxkcylcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODA4MC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4MDgxOnN0YXRpYyBpbnQgX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODA4Mi1cdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04MTYwLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjgxNjE6c3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODE2Mi1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODE2NC17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODE2NTpcdHJldHVybiBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBhcmdfdHlwZSwgdHJ1ZSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODE2Ni19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTgyODM9c3RhdGljIGJvb2wgY2FuX2VsaWRlX3ZhbHVlX251bGxuZXNzKGNvbnN0IHN0cnVjdCBicGZfbWFwICptYXApO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTgyODQtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODI4NTpzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHUzMiBhcmcsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODI4Ni1cdFx0XHQgIHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODM0MS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4MzQyOlx0ZXJyID0gY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIGFyZ190eXBlKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04MzQzLVx0aWYgKGVycilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9OTE0Mz1zdGF0aWMgaW50IHNldHVwX2Z1bmNfZW50cnkoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IHN1YnByb2csIGludCBjYWxsc2l0ZSxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTE5MC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5MTkxOnN0YXRpYyBpbnQgYnRmX2NoZWNrX2Z1bmNfYXJnX21hdGNoKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBzdWJwcm9nLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTkxOTItXHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MjM1LVx0XHR9IGVsc2UgaWYgKGFyZy1cdTAwM2VhcmdfdHlwZSA9PSBBUkdfUFRSX1RPX0NUWCkge1xua2VybmVsL2JwZi92ZXJpZmllci5jOjkyMzY6XHRcdFx0cmV0ID0gY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIEFSR19QVFJfVE9fQ1RYKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MjM3LVx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTkyNDctXHRcdH0gZWxzZSBpZiAoYmFzZV90eXBlKGFyZy1cdTAwM2VhcmdfdHlwZSkgPT0gQVJHX1BUUl9UT19NRU0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5MjQ4Olx0XHRcdHJldCA9IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBBUkdfRE9OVENBUkUpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTkyNDktXHRcdFx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTI3MS1cdFx0fSBlbHNlIGlmIChhcmctXHUwMDNlYXJnX3R5cGUgPT0gQVJHX1BUUl9UT19EWU5QVFIpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5MjcyOlx0XHRcdHJldCA9IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBBUkdfUFRSX1RPX0RZTlBUUik7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTI3My1cdFx0XHRpZiAocmV0KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05Mjg3LVx0XHRcdGVyciA9IGNoZWNrX3JlZ190eXBlKGVudiwgcmVnLCBhcmdubywgYXJnLVx1MDAzZWFyZ190eXBlLCBcdTAwMjZhcmctXHUwMDNlYnRmX2lkLCBcdTAwMjZtZXRhKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5Mjg4Olx0XHRcdGVyciA9IGVyciA/OiBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnLVx1MDAzZWFyZ190eXBlKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05Mjg5LVx0XHRcdGlmIChlcnIpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTkzMDg9c3RhdGljIGludCBidGZfY2hlY2tfc3VicHJvZ19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBzdWJwcm9nLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MzI1LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjkzMjY6XHRlcnIgPSBidGZfY2hlY2tfZnVuY19hcmdfbWF0Y2goZW52LCBzdWJwcm9nLCBidGYsIHJlZ3MpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTkzMjctXHQvKiBDb21waWxlciBvcHRpbWl6YXRpb25zIGNhbiByZW1vdmUgYXJndW1lbnRzIGZyb20gc3RhdGljIGZ1bmN0aW9uc1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDIzMT1zdGF0aWMgaW50IGNoZWNrX2hlbHBlcl9jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTAyOTctXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQVhfQlBGX0ZVTkNfUkVHX0FSR1M7IGkmIzQzOyYjNDM7KSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTAyOTg6XHRcdGVyciA9IGNoZWNrX2Z1bmNfYXJnKGVudiwgaSwgXHUwMDI2bWV0YSwgZm4sIGluc25faWR4KTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDI5OS1cdFx0aWYgKGVycilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE5OTA9c3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIyMTAtXHRcdFx0YXJnX3R5cGUgfD0gT0JKX1JFTEVBU0U7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTIyMTE6XHRcdHJldCA9IF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIGFyZ190eXBlLFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjEyLVx0XHRcdFx0XHQgICAgICAgYnRmX2lkX2ZpeGVkX29mZl9vayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgxMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIGtlcm5lbCBCUEYgdmVyaWZpY2F0aW9uOgoKKipBbmFseXppbmcgdGhlIGBjaGVja19mdW5jX2FyZ2AgTW9kaWZpY2F0aW9uKioKCkFscmlnaHQsIHNvIHRoZSBmb2N1cyBpcyBvbiB0aGUgYGNoZWNrX2Z1bmNfYXJnYCBmdW5jdGlvbiB3aXRoaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O09rYXksIGEgbW9kaWZpY2F0aW9uIHRoZXJlLi4uIHRoYXQmIzM5O3MgcG90ZW50aWFsbHkgaW1wYWN0ZnVsLiYjMzQ7IEkgbmVlZCB0byB6b29tIGluIGFuZCBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGdyYXNwIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIGNoYW5nZS4gYGNoZWNrX2Z1bmNfYXJnYCBpcyBhIGNyaXRpY2FsIHBpZWNlLCBpdCBoYW5kbGVzIHRoZSB2YWxpZGF0aW9uIG9mIGZ1bmN0aW9uIGFyZ3VtZW50cyBwYXNzZWQgdG8gQlBGIHByb2dyYW1zLiBBbnkgY2hhbmdlIGhlcmUgY291bGQgZGlyZWN0bHkgaW1wYWN0IHRoZSB0eXBlcyBvZiBwcm9ncmFtcyB0aGF0IGNhbiBiZSBzYWZlbHkgbG9hZGVkIGFuZCBleGVjdXRlZCwgb3IsIGNydWNpYWxseSwgaXQgY291bGQgaW50cm9kdWNlIHZ1bG5lcmFiaWxpdGllcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmV4YWN0bHkqIHdoYXQmIzM5O3MgYmVlbiBhbHRlcmVkIGFuZCwgcGVyaGFwcyBtb3JlIGltcG9ydGFudGx5LCAqd2h5Ki4gSeKAmWxsIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gc2VlIGhvdyB0aGlzIGNoYW5nZSByaXBwbGVzIHRocm91Z2ggdGhlIHZlcmlmaWVyIGxvZ2ljLiBNeSBleHBlcnQgZXllIG5lZWRzIHRvIHBpY2sgYXBhcnQgdGhlIGJlZm9yZSBhbmQgYWZ0ZXIgc3RhdGVzIHRvIGFzc2VzcyB0aGUgcmlzay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDg0MTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ODQxMDpcdFx0XHRcdH1cbjg0MTE6XHRcdFx0fVxuODQxMjpcdFx0XHRicmVhaztcbjg0MTM6XHRcdGNhc2UgQVJHX1BUUl9UT19NQVBfVkFMVUU6XG44NDE0Olx0XHRcdGlmICh0eXBlX21heV9iZV9udWxsKGFyZ190eXBlKSBcdTAwMjZcdTAwMjYgYnBmX3JlZ2lzdGVyX2lzX251bGwocmVnKSlcbjg0MTU6XHRcdFx0XHRyZXR1cm4gMDtcbjg0MTY6XHRcbjg0MTc6XHRcdFx0LyogYnBmX21hcF94eHgoLi4uLCBtYXBfcHRyLCAuLi4sIHZhbHVlKSBjYWxsOlxuODQxODpcdFx0XHQgKiBjaGVjayBbdmFsdWUsIHZhbHVlICYjNDM7IG1hcC1cdTAwM2V2YWx1ZV9zaXplKSB2YWxpZGl0eVxuODQxOTpcdFx0XHQgKi9cbjg0MjA6XHRcdFx0aWYgKCFtZXRhLVx1MDAzZW1hcC5wdHIpIHtcbjg0MjE6XHRcdFx0XHQvKiBrZXJuZWwgc3Vic3lzdGVtIG1pc2NvbmZpZ3VyZWQgdmVyaWZpZXIgKi9cbjg0MjI6XHRcdFx0XHR2ZXJpZmllcl9idWcoZW52LCBcJiMzNDtpbnZhbGlkIG1hcF9wdHIgdG8gYWNjZXNzIG1hcC1cdTAwM2V2YWx1ZVwmIzM0Oyk7XG44NDIzOlx0XHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG44NDI0Olx0XHRcdH1cbjg0MjU6XHRcbjg0MjY6XHRcdFx0Lypcbjg0Mjc6XHRcdFx0ICogRGlzYWJsZSByYXcgbW9kZSBmb3IgYnBmX21hcF9wZWVrX2VsZW0oKSBvbiBhIGJsb29tIGZpbHRlci4gVGhlIGhlbHBlciByZWFkc1xuODQyODpcdFx0XHQgKiB0aGUgdmFsdWUgYnVmZmVyIGFzIGFuIGlucHV0IHJhdGhlciB0aGFuIGZpbGxpbmcgaXQuXG44NDI5Olx0XHRcdCAqL1xuODQzMDpcdFx0XHRpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IEJQRl9GVU5DX21hcF9wZWVrX2VsZW0gXHUwMDI2XHUwMDI2XG44NDMxOlx0XHRcdCAgICBtZXRhLVx1MDAzZW1hcC5wdHItXHUwMDNlbWFwX3R5cGUgPT0gQlBGX01BUF9UWVBFX0JMT09NX0ZJTFRFUilcbjg0MzI6XHRcdFx0XHRtZXRhLVx1MDAzZWFyZ19yYXdfbWVtLnJlZ25vID0gMDtcbjg0MzM6XHRcbjg0MzQ6XHRcdFx0ZXJyID0gY2hlY2tfaGVscGVyX21lbV9hY2Nlc3MoZW52LCByZWcsIGFyZ25vLCBtZXRhLVx1MDAzZW1hcC5wdHItXHUwMDNldmFsdWVfc2l6ZSxcbjg0MzU6XHRcdFx0XHRcdFx0ICAgICAgYXJnX3R5cGUgXHUwMDI2IE1FTV9XUklURSA/IEJQRl9XUklURSA6IEJQRl9SRUFELFxuODQzNjpcdFx0XHRcdFx0XHQgICAgICBmYWxzZSwgbWV0YSk7XG44NDM3Olx0XHRcdGJyZWFrO1xuODQzODpcdFx0Y2FzZSBBUkdfUFRSX1RPX1BFUkNQVV9CVEZfSUQ6XG44NDM5Olx0XHRcdGlmICghcmVnLVx1MDAzZWJ0Zl9pZCkge1xuODQ0MDpcdFx0XHRcdHZlcmJvc2UoZW52LCBcJiMzNDtIZWxwZXIgaGFzIGludmFsaWQgYnRmX2lkIGluIFIlZFxcblwmIzM0OywgcmVnbm8pO1xuODQ0MTpcdFx0XHRcdHJldHVybiAtRUFDQ0VTO1xuODQ0MjpcdFx0XHR9XG44NDQzOlx0XHRcdG1ldGEtXHUwMDNlcmV0X2J0ZiA9IHJlZy1cdTAwM2VidGY7XG44NDQ0Olx0XHRcdG1ldGEtXHUwMDNlcmV0X2J0Zl9pZCA9IHJlZy1cdTAwM2VidGZfaWQ7XG44NDQ1Olx0XHRcdGJyZWFrO1xuODQ0NjpcdFx0Y2FzZSBBUkdfUFRSX1RPX1NQSU5fTE9DSzpcbjg0NDc6XHRcdFx0aWYgKGluX3JidHJlZV9sb2NrX3JlcXVpcmVkX2NiKGVudikpIHtcbjg0NDg6XHRcdFx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7Y2FuJiMzOTt0IHNwaW5fe2xvY2ssdW5sb2NrfSBpbiByYnRyZWUgY2JcXG5cJiMzNDspO1xuODQ0OTpcdFx0XHRcdHJldHVybiAtRUFDQ0VTO1xuODQ1MDpcdFx0XHR9XG44NDUxOlx0XHRcdGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gQlBGX0ZVTkNfc3Bpbl9sb2NrKSB7XG44NDUyOlx0XHRcdFx0ZXJyID0gcHJvY2Vzc19zcGluX2xvY2soZW52LCByZWcsIGFyZ25vLCBQUk9DRVNTX1NQSU5fTE9DSyk7XG44NDUzOlx0XHRcdFx0aWYgKGVycilcbjg0NTQ6XHRcdFx0XHRcdHJldHVybiBlcnI7XG44NDU1Olx0XHRcdH0gZWxzZSBpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IEJQRl9GVU5DX3NwaW5fdW5sb2NrKSB7XG44NDU2Olx0XHRcdFx0ZXJyID0gcHJvY2Vzc19zcGluX2xvY2soZW52LCByZWcsIGFyZ25vLCAwKTtcbjg0NTc6XHRcdFx0XHRpZiAoZXJyKVxuODQ1ODpcdFx0XHRcdFx0cmV0dXJuIGVycjtcbjg0NTk6XHRcdFx0fSBlbHNlIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTYyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBCbG9vbSBGaWx0ZXIgYW5kIFJhdyBNb2RlIENoYW5nZSoqCgpPa2F5LCBzbyB0aGlzIGNoYW5nZSBkaXNhYmxlcyByYXcgbW9kZSBzcGVjaWZpY2FsbHkgZm9yIGBicGZfbWFwX3BlZWtfZWxlbWAgd2hlbiBkZWFsaW5nIHdpdGggYSBibG9vbSBmaWx0ZXIuIEluaXRpYWxseSwgSSB0aG91Z2h0IHRoaXMgd2FzIGEgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgc2hpZnQgd2l0aGluIHRoZSB2ZXJpZmllciBhaW1lZCBhdCBwcmV2ZW50aW5nIHRoZSBwb3RlbnRpYWwgZm9yIHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdGhyb3VnaCB0aGlzIGhlbHBlci4gTXkgZmlyc3QgYXNzdW1wdGlvbiB3YXMgdGhhdCB3ZSBhcmUgdHJ5aW5nIHRvIHN0b3AgaXNzdWVzIGFyaXNpbmcgZnJvbSB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyBwYXNzZWQgdG8gdGhlIGBicGZfbWFwX3BlZWtfZWxlbWAgZnVuY3Rpb24gZm9yIGJsb29tIGZpbHRlcnMuCgpCdXQgdGhlbiBJIGhhZCB0byB0aGluayB0aHJvdWdoIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcy4gIElmIHJhdyBtb2RlIGlzICpvbiosIHRoZSB2ZXJpZmllciwgaW4gaXRzIHdpc2RvbSwgYXNzdW1lcyB0aGF0IHRoZSBoZWxwZXIgZnVuY3Rpb24gKndyaXRlcyogdG8gdGhlIHByb3ZpZGVkIG1lbW9yeSBsb2NhdGlvbi4gIFRoYXQmIzM5O3Mgd2h5IGl0IGFsbG93cyB1bmluaXRpYWxpemVkIG1lbW9yeSB0byBiZSBwYXNzZWQg4oCTIHRoZSB2ZXJpZmllciBleHBlY3RzIHRoZSBoZWxwZXIgdG8gcG9wdWxhdGUgaXQuICBIb3dldmVyLCB3aXRoIGBicGZfbWFwX3BlZWtfZWxlbWAgYW5kIGl0cyBhcHBsaWNhdGlvbiB3aXRoIGJsb29tIGZpbHRlcnMsIHRoZSBoZWxwZXIgaXNuJiMzOTt0IHdyaXRpbmc7IGl0JiMzOTtzICpyZWFkaW5nKi4gSXQmIzM5O3MgY2hlY2tpbmcgaWYgYW4gZWxlbWVudCBleGlzdHMgaW4gdGhlIGZpbHRlciwgYW5kIHRoZXJlZm9yZSByZWFkaW5nIHRoZSBjb250ZW50cyBvZiBtZW1vcnkuICBUaHVzLCBpZiByYXcgbW9kZSBpcyBlbmFibGVkIHdpdGggYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgbG9jYXRpb24sIHdlJiMzOTtkIGJlIGluYWR2ZXJ0ZW50bHkgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhhdCYjMzk7cyBhIGh1Z2UgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkhCgpTbywgdGhlIGNoYW5nZSBpcyBhY3R1YWxseSBxdWl0ZSBlbGVnYW50IGluIHByZXZlbnRpbmcgdGhpcy4gQnkgZGlzYWJsaW5nIHJhdyBtb2RlIGluIHRoaXMgc3BlY2lmaWMgc2NlbmFyaW8sIHRoZSB2ZXJpZmllciB3aWxsICpmb3JjZSogdGhlIG1lbW9yeSB0byBiZSBpbml0aWFsaXplZCBiZWZvcmUgYGJwZl9tYXBfcGVla19lbGVtYCBjYW4gZXZlbiBiZSBjYWxsZWQuIEl0JiMzOTtzIGEgc29saWQgZGVmZW5zZSBhZ2FpbnN0IGEgdmVyeSBzdWJ0bGUsIHlldCBwb3RlbnRpYWxseSBkYW5nZXJvdXMsIGZsYXcuIEl0IG1ha2VzIHNlbnNlIHRvIHRha2UgdGhpcyBhcHByb2FjaCwgc2luY2UsIGFzIGEgcmVhZCwgdGhlIGhlbHBlciBjYW5ub3QgYmUgcmVzcG9uc2libGUgZm9yIGluaXRpYWxpemF0aW9uLgoKSSYjMzk7bSBub3cgdHVybmluZyBteSBhdHRlbnRpb24gdG8gdGhlIHNlY29uZCBjaGFuZ2UsIHdoaWNoIGZvY3VzZXMgb24gYGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YWAgLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMjU2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMjU2MDpcdFx0XHR9XG4xMjU2MTpcdFx0fVxuMTI1NjI6XHRcbjEyNTYzOlx0XHRyZXR1cm4gMDtcbjEyNTY0Olx0fVxuMTI1NjU6XHRcbjEyNTY2Olx0aW50IGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxuMTI1Njc6XHRcdFx0XHQgICAgIHMzMiBmdW5jX2lkLFxuMTI1Njg6XHRcdFx0XHQgICAgIHMxNiBvZmZzZXQsXG4xMjU2OTpcdFx0XHRcdCAgICAgc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxuMTI1NzA6XHR7XG4xMjU3MTpcdFx0c3RydWN0IGJwZl9rZnVuY19tZXRhIGtmdW5jO1xuMTI1NzI6XHRcdGludCBlcnI7XG4xMjU3MzpcdFxuMTI1NzQ6XHRcdG1lbXNldChtZXRhLCAwLCBzaXplb2YoKm1ldGEpKTtcbjEyNTc1Olx0XG4xMjU3NjpcdFx0ZXJyID0gZmV0Y2hfa2Z1bmNfbWV0YShlbnYsIGZ1bmNfaWQsIG9mZnNldCwgXHUwMDI2a2Z1bmMpO1xuMTI1Nzc6XHRcdGlmIChlcnIpXG4xMjU3ODpcdFx0XHRyZXR1cm4gZXJyO1xuMTI1Nzk6XHRcbjEyNTgwOlx0XHRtZXRhLVx1MDAzZWJ0ZiA9IGtmdW5jLmJ0ZjtcbjEyNTgxOlx0XHRtZXRhLVx1MDAzZWZ1bmNfaWQgPSBrZnVuYy5pZDtcbjEyNTgyOlx0XHRtZXRhLVx1MDAzZWZ1bmNfcHJvdG8gPSBrZnVuYy5wcm90bztcbjEyNTgzOlx0XHRtZXRhLVx1MDAzZWZ1bmNfbmFtZSA9IGtmdW5jLm5hbWU7XG4xMjU4NDpcdFxuMTI1ODU6XHRcdGlmICgha2Z1bmMuZmxhZ3MgfHwgIWJ0Zl9rZnVuY19pc19hbGxvd2VkKGtmdW5jLmJ0Ziwga2Z1bmMuaWQsIGVudi1cdTAwM2Vwcm9nKSlcbjEyNTg2Olx0XHRcdHJldHVybiAtRUFDQ0VTO1xuMTI1ODc6XHRcbjEyNTg4Olx0XHRtZXRhLVx1MDAzZWtmdW5jX2ZsYWdzID0gKmtmdW5jLmZsYWdzO1xuMTI1ODk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDE5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEZ1bmN0aW9uYWwgQ2hhbmdlIGluIHRoZSBCUEYgVmVyaWZpZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaGVyZS4gU3BlY2lmaWNhbGx5LCB6ZXJvaW5nIG91dCBgbWV0YWAgKmJlZm9yZSogY2FsbGluZyBgZmV0Y2hfa2Z1bmNfbWV0YWAuIFRoYXQmIzM5O3MgaW1wb3J0YW50IGJlY2F1c2UgYGZldGNoX2tmdW5jX21ldGFgIGNvdWxkIHBvdGVudGlhbGx5IHJldHVybiBhbiBlcnJvci4gUHJldmlvdXNseSwgaXQgbG9va3MgbGlrZSBgbWV0YWAgbWlnaHQgaGF2ZSBiZWVuIGxlZnQgdW5pbml0aWFsaXplZCBvciBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQgaWYgdGhlcmUgd2FzIGEgcHJvYmxlbS4gTm93LCBpdCYjMzk7cyBleHBsaWNpdGx5IHplcm9lZCwgcHJvdmlkaW5nIGEgZGVmaW5lZCBzdGF0ZSBpbiB0aGUgZXJyb3IgY2FzZS4gR29vZC4gVGhhdCBkZWZpbml0ZWx5IHNvdW5kcyBsaWtlIHNvbWV0aGluZyB0aGF0IGRlc2VydmVzIGEgZ29vZCBmdXp6aW5nIGNhbXBhaWduLiBGdW5jdGlvbmFsIGNoYW5nZSA9IGZ1enppbmcgdGltZSEKCkxldCYjMzk7cyBzZWUsIHdoYXQgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIHRvIHRhcmdldD8gR2l2ZW4gdGhlIGNoYW5nZSwgSSYjMzk7bSB0aGlua2luZyB0aGUgZm9jdXMgc2hvdWxkIGJlIG9uIGBjaGVja19mdW5jX2FyZ2AsIGBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFgLCBhbmQgYGNoZWNrX2hlbHBlcl9jYWxsYCBzaW5jZSB0aGUgbGF0dGVyIGNhbGxzIGBjaGVja19mdW5jX2FyZ2AuIEFsc28sIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCBgY2hlY2tfa2Z1bmNfYXJnc2AgYmVjYXVzZSBpdCAqbWlnaHQqIGNhbGwgYGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YWAsIG9yIHNvbWV0aGluZyBzaW1pbGFyLgoKSG1tLCB3YWl0IGEgc2Vjb25kLi4uIGBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFgIGlzIGNhbGxlZCBmcm9tIHdoZXJlIGV4YWN0bHk/IEkgYmV0dGVyIGRvdWJsZS1jaGVjayB0aGUgY2FsbCBncmFwaCB0byBiZSBzdXJlIEkmIzM5O3ZlIGdvdCB0aGUgY29tcGxldGUgcGljdHVyZS4gTmVlZCB0byBtYWtlIHN1cmUgSSBnZXQgdGhhdCBjb3ZlcmVkIGluIHRoZSBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTExOTkwPXN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfYXJncyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNTY1LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNTY2OmludCBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGEoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjU2Ny1cdFx0XHQgICAgIHMzMiBmdW5jX2lkLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjcyNT1zNjQgYnBmX2tmdW5jX3N0YWNrX2FjY2Vzc19ieXRlcyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzM1LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNzM2Olx0aWYgKGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YShlbnYsIGluc24tXHUwMDNlaW1tLCBpbnNuLVx1MDAzZW9mZiwgXHUwMDI2bWV0YSkgXHUwMDNjIDApXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI3MzctXHRcdHJldHVybiBTNjRfTUlOO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjk2MT1zdGF0aWMgaW50IGNoZWNrX2tmdW5jX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjk4MC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjk4MTpcdGVyciA9IGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YShlbnYsIGluc24tXHUwMDNlaW1tLCBpbnNuLVx1MDAzZW9mZiwgXHUwMDI2bWV0YSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5ODItXHRpZiAoZXJyID09IC1FQUNDRVMgXHUwMDI2XHUwMDI2IG1ldGEuZnVuY19uYW1lKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNjcyMD1ib29sIGJwZl9nZXRfY2FsbF9zdW1tYXJ5KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqY2FsbCxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTY3NDctXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTY3NDg6XHRcdGVyciA9IGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YShlbnYsIGNhbGwtXHUwMDNlaW1tLCBjYWxsLVx1MDAzZW9mZiwgXHUwMDI2bWV0YSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTY3NDktXHRcdGlmIChlcnIgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwOTAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgS2VybmVsIEJQRiBGdW5jdGlvbiBBcmd1bWVudCBNZXRhZGF0YSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFgIGlzIGEga2V5IGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgYmVpbmcgY2FsbGVkIGZyb20gc2V2ZXJhbCBpbXBvcnRhbnQgcGxhY2VzOiBgYnBmX2tmdW5jX3N0YWNrX2FjY2Vzc19ieXRlc2AsIGBjaGVja19rZnVuY19jYWxsYCwgYW5kIGBicGZfZ2V0X2NhbGxfc3VtbWFyeWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHRoZXJlLgoKTXkgcHJpbWFyeSBmb2N1cyByaWdodCBub3cgc2hvdWxkIGJlIG9uIGBjaGVja19mdW5jX2FyZ2AgYW5kLCBjcnVjaWFsbHksIGBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFgIGl0c2VsZi4gVGhvc2UgYXJlIHRoZSBmdW5jdGlvbnMgSSByZWFsbHkgbmVlZCB0byBkcmlsbCBkb3duIGludG8uCgpOb3csIGZyb20gYSBjb25maWd1cmF0aW9uIHBlcnNwZWN0aXZlLCBgQ09ORklHX0JQRl9TWVNDQUxMYCBpcyB0aGUgYmlnIG9uZSwgYnV0IEkgc2hvdWxkIHByb2JhYmx5IHNjYW4gZm9yIGFueSByZWxhdGVkIGRlcGVuZGVuY2llcy4gSSBkb24mIzM5O3Qgd2FudCB0byBtaXNzIGFueXRoaW5nLgoKRmluYWxseSwgSSYjMzk7bSBjdXJpb3VzIGFib3V0IHRoZSBibG9vbSBmaWx0ZXIgbWFwIHR5cGUg4oCTIGBCUEZfTUFQX1RZUEVfQkxPT01fRklMVEVSYC4gSXMgaXRzIGZ1bmN0aW9uYWxpdHkgY29uZGl0aW9uYWwgb24gYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8gVGltZSB0byBpbnZlc3RpZ2F0ZSB0aGUgcmVsZXZhbnQgc291cmNlIGNvZGUg4oCTIHByb2JhYmx5IGBrZXJuZWwvYnBmL2Jsb29tX2ZpbHRlci5jYCBvciBzb21ldGhpbmcgc2ltaWxhci4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGUgYmxvb20gZmlsdGVyIGZ1bmN0aW9uYWxpdHkgaXMgZW5hYmxlZCBpbiB0aGUgY3VycmVudCBrZXJuZWwgY29uZmlnLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAyMjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCUEZfTUFQX1RZUEVfQkxPT01fRklMVEVSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9zeXNjYWxsLmM9MjUwPXN0YXRpYyBpbnQgYnBmX21hcF91cGRhdGVfdmFsdWUoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGZpbGUgKm1hcF9maWxlLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTI5MC1cdFx0ICAgbWFwLVx1MDAzZW1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9TVEFDSyB8fFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MjkxOlx0XHQgICBtYXAtXHUwMDNlbWFwX3R5cGUgPT0gQlBGX01BUF9UWVBFX0JMT09NX0ZJTFRFUikge1xua2VybmVsL2JwZi9zeXNjYWxsLmMtMjkyLVx0XHRlcnIgPSBtYXAtXHUwMDNlb3BzLVx1MDAzZW1hcF9wdXNoX2VsZW0obWFwLCB2YWx1ZSwgZmxhZ3MpO1xuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jPTMwOD1zdGF0aWMgaW50IGJwZl9tYXBfY29weV92YWx1ZShzdHJ1Y3QgYnBmX21hcCAqbWFwLCB2b2lkICprZXksIHZvaWQgKnZhbHVlLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTMzNC1cdFx0ICAgbWFwLVx1MDAzZW1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9TVEFDSyB8fFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MzM1Olx0XHQgICBtYXAtXHUwMDNlbWFwX3R5cGUgPT0gQlBGX01BUF9UWVBFX0JMT09NX0ZJTFRFUikge1xua2VybmVsL2JwZi9zeXNjYWxsLmMtMzM2LVx0XHRlcnIgPSBtYXAtXHUwMDNlb3BzLVx1MDAzZW1hcF9wZWVrX2VsZW0obWFwLCB2YWx1ZSk7XG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmM9MTM3MD1zdGF0aWMgaW50IG1hcF9jcmVhdGVfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxuLS1cbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE0MDYtXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxNDA3Olx0aWYgKGF0dHItXHUwMDNlbWFwX3R5cGUgIT0gQlBGX01BUF9UWVBFX0JMT09NX0ZJTFRFUiBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE0MDgtXHQgICAgYXR0ci1cdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfQVJFTkEgXHUwMDI2XHUwMDI2XG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTQ5My1cdGNhc2UgQlBGX01BUF9UWVBFX0NHUlBfU1RPUkFHRTpcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjE0OTQ6XHRjYXNlIEJQRl9NQVBfVFlQRV9CTE9PTV9GSUxURVI6XG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNDk1LVx0Y2FzZSBCUEZfTUFQX1RZUEVfTFBNX1RSSUU6XG4tLVxua2VybmVsL2JwZi9zeXNjYWxsLmM9MTc3ND1zdGF0aWMgaW50IG1hcF9sb29rdXBfZWxlbSh1bmlvbiBicGZfYXR0ciAqYXR0cilcbi0tXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xODA3LVxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTgwODpcdGlmIChtYXAtXHUwMDNlbWFwX3R5cGUgPT0gQlBGX01BUF9UWVBFX0JMT09NX0ZJTFRFUikge1xua2VybmVsL2JwZi9zeXNjYWxsLmMtMTgwOS1cdFx0aWYgKGNvcHlfZnJvbV91c2VyKHZhbHVlLCB1dmFsdWUsIHZhbHVlX3NpemUpKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz03NzYzPXN0YXRpYyBpbnQgcmVzb2x2ZV9tYXBfYXJnX3R5cGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNzc4Mi1cdFx0YnJlYWs7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6Nzc4MzpcdGNhc2UgQlBGX01BUF9UWVBFX0JMT09NX0ZJTFRFUjpcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy03Nzg0LVx0XHRpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IEJQRl9GVU5DX21hcF9wZWVrX2VsZW0pXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTgyODU9c3RhdGljIGludCBjaGVja19mdW5jX2FyZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCB1MzIgYXJnLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NDMwLVx0XHRpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IEJQRl9GVU5DX21hcF9wZWVrX2VsZW0gXHUwMDI2XHUwMDI2XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODQzMTpcdFx0ICAgIG1ldGEtXHUwMDNlbWFwLnB0ci1cdTAwM2VtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfQkxPT01fRklMVEVSKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTg0MzItXHRcdFx0bWV0YS1cdTAwM2VhcmdfcmF3X21lbS5yZWdubyA9IDA7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTg1NjU9c3RhdGljIGludCBjaGVja19tYXBfZnVuY19jb21wYXRpYmlsaXR5KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTg2ODctXHRcdGJyZWFrO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjg2ODg6XHRjYXNlIEJQRl9NQVBfVFlQRV9CTE9PTV9GSUxURVI6XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODY4OS1cdFx0aWYgKGZ1bmNfaWQgIT0gQlBGX0ZVTkNfbWFwX3BlZWtfZWxlbSBcdTAwMjZcdTAwMjZcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODc3Ny1cdFx0ICAgIG1hcC1cdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfU1RBQ0sgXHUwMDI2XHUwMDI2XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODc3ODpcdFx0ICAgIG1hcC1cdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfQkxPT01fRklMVEVSKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTg3NzktXHRcdFx0Z290byBlcnJvcjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTY1OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkgd2VyZSBteSBvd246CgoqKkluaXRpYWwgQXNzZXNzbWVudCBvZiBCbG9vbSBGaWx0ZXIgaW4gQlBGIFN5c2NhbGwqKgoKUmlnaHQsIHNvIHRoZSBibG9vbSBmaWx0ZXIgbWFwIGlzIGludGVncmFsIHRvIHRoZSBCUEYgc3lzY2FsbCBpbXBsZW1lbnRhdGlvbi4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3csIGFuZCBleHBlY3RlZCwgcmVhbGx5LiBJdCBtYWtlcyBzZW5zZSBpdCYjMzk7cyBjb3JlIHRvIHRoZSBzdHJ1Y3R1cmUuIEFuZCwgZnJvbSBhIGNvbmZpZ3VyYXRpb24gcGVyc3BlY3RpdmUsIEkmIzM5O20gcHJldHR5IHN1cmUgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgYWxsIHRoYXQmIzM5O3MgdHJ1bHkgbmVlZGVkIHRvIGVuYWJsZSBpdC4gQnV0LCBnaXZlbiBteSB0aG9yb3VnaG5lc3MsIEkgc2hvdWxkIGRvdWJsZSBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlICphbnkqIG90aGVyIGNvbmZpZyBvcHRpb25zIHRoYXQgbWlnaHQgaW5mbHVlbmNlIG9yIGludGVyYWN0IHdpdGggdGhpcyBzcGVjaWZpYyBhc3BlY3QuIEkgZG9uJiMzOTt0IHdhbnQgdG8gbWlzcyBhbnl0aGluZyB0aGF0IGNvdWxkIGltcGFjdCBpdHMgcGVyZm9ybWFuY2Ugb3IgYmVoYXZpb3IgbGF0ZXIgb24gZG93biB0aGUgbGluZS4gSXQmIzM5O3MgYmVzdCB0byBiZSBjb21wbGV0ZWx5IHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19CUEZfU1lTQ0FMTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGU9Nz1DRkxBR1NfY29yZS5vICYjNDM7PSAtV25vLW92ZXJyaWRlLWluaXQgJChjZmxhZ3Mtbm9nY3NlLXl5KVxua2VybmVsL2JwZi9NYWtlZmlsZS04LVxua2VybmVsL2JwZi9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHN5c2NhbGwubyB2ZXJpZmllci5vIGlub2RlLm8gaGVscGVycy5vIHRudW0ubyBjbnVtLm8gbG9nLm8gdG9rZW4ubyBsaXZlbmVzcy5vIGNvbnN0X2ZvbGQub1xua2VybmVsL2JwZi9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBicGZfaXRlci5vIG1hcF9pdGVyLm8gdGFza19pdGVyLm8gcHJvZ19pdGVyLm8gbGlua19pdGVyLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gaGFzaHRhYi5vIGFycmF5bWFwLm8gcGVyY3B1X2ZyZWVsaXN0Lm8gYnBmX2xydV9saXN0Lm8gbHBtX3RyaWUubyBtYXBfaW5fbWFwLm8gYmxvb21fZmlsdGVyLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gbG9jYWxfc3RvcmFnZS5vIHF1ZXVlX3N0YWNrX21hcHMubyByaW5nYnVmLm8gYnBmX2luc25fYXJyYXkub1xua2VybmVsL2JwZi9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBicGZfbG9jYWxfc3RvcmFnZS5vIGJwZl90YXNrX3N0b3JhZ2Uub1xua2VybmVsL2JwZi9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBmaXh1cHMubyBjZmcubyBzdGF0ZXMubyBiYWNrdHJhY2subyBjaGVja19idGYub1xua2VybmVsL2JwZi9NYWtlZmlsZS0xNS1vYmotJHtDT05GSUdfQlBGX0xTTX1cdCAgJiM0Mzs9IGJwZl9pbm9kZV9zdG9yYWdlLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gZGlzYXNtLm8gbXByb2cub1xua2VybmVsL2JwZi9NYWtlZmlsZS0xNy1vYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IHRyYW1wb2xpbmUub1xua2VybmVsL2JwZi9NYWtlZmlsZToxODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBidGYubyBtZW1hbGxvYy5vIHJxc3BpbmxvY2subyBzdHJlYW0ub1xua2VybmVsL2JwZi9NYWtlZmlsZS0xOS1pZmVxICgkKENPTkZJR19NTVUpJChDT05GSUdfNjRCSVQpLHl5KVxua2VybmVsL2JwZi9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBhcmVuYS5vIHJhbmdlX3RyZWUub1xua2VybmVsL2JwZi9NYWtlZmlsZS0yMS1lbmRpZlxuLS1cbmtlcm5lbC9icGYvTWFrZWZpbGU9MjM9aWZlcSAoJChDT05GSUdfTkVUKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZToyNDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBkZXZtYXAub1xua2VybmVsL2JwZi9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBjcHVtYXAub1xua2VybmVsL2JwZi9NYWtlZmlsZToyNjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBvZmZsb2FkLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6Mjc6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gbmV0X25hbWVzcGFjZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI4Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHRjeC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTI5LWVuZGlmXG5rZXJuZWwvYnBmL01ha2VmaWxlPTMwPWlmZXEgKCQoQ09ORklHX1BFUkZfRVZFTlRTKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZTozMTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBzdGFja21hcC5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTMyLWVuZGlmXG5rZXJuZWwvYnBmL01ha2VmaWxlPTMzPWlmZXEgKCQoQ09ORklHX0NHUk9VUFMpLHkpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGNncm91cF9pdGVyLm8gYnBmX2NncnBfc3RvcmFnZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTM1LWVuZGlmXG4tLVxua2VybmVsL2JwZi9NYWtlZmlsZT0zNz1pZmVxICgkKENPTkZJR19JTkVUKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZTozODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSByZXVzZXBvcnRfYXJyYXkub1xua2VybmVsL2JwZi9NYWtlZmlsZS0zOS1lbmRpZlxuLS1cbmtlcm5lbC9icGYvTWFrZWZpbGU9NDM9aWZlcSAoJChDT05GSUdfQlBGX0pJVCkseSlcbmtlcm5lbC9icGYvTWFrZWZpbGU6NDQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gYnBmX3N0cnVjdF9vcHMub1xua2VybmVsL2JwZi9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBjcHVtYXNrLm9cbmtlcm5lbC9icGYvTWFrZWZpbGUtNDYtIyBicGZfbHNtX3Byb3RvLm8gbXVzdCBwcmVjZWRlIGJwZl9sc20uby4gVGhlIGN1cnJlbnQgcGFob2xlIGxvZ2ljXG4tLVxua2VybmVsL2JwZi9NYWtlZmlsZT01OD1pZm5lcSAoJChDT05GSUdfQ1JZUFRPKSwpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjU5Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGNyeXB0by5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTYwLWVuZGlmXG5rZXJuZWwvYnBmL01ha2VmaWxlPTYxPW9iai0kKENPTkZJR19CUEZfUFJFTE9BRCkgJiM0Mzs9IHByZWxvYWQvXG5rZXJuZWwvYnBmL01ha2VmaWxlLTYyLVxua2VybmVsL2JwZi9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSByZWxvX2NvcmUub1xua2VybmVsL2JwZi9NYWtlZmlsZTo2NDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBidGZfaXRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY1Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGJ0Zl9yZWxvY2F0ZS5vXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY2Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IGttZW1fY2FjaGVfaXRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTY3LWlmZXEgKCQoQ09ORklHX0RNQV9TSEFSRURfQlVGRkVSKSx5KVxua2VybmVsL2JwZi9NYWtlZmlsZTo2ODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBkbWFidWZfaXRlci5vXG5rZXJuZWwvYnBmL01ha2VmaWxlLTY5LWVuZGlmXG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MTAwPXN0cnVjdCBicGZfcHJvZyAqYnBmX3Byb2dfYWxsb2Nfbm9fc3RhdHModW5zaWduZWQgaW50IHNpemUsIGdmcF90IGdmcF9leHRyYV9mbGFncylcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0xNDMtXG5rZXJuZWwvYnBmL2NvcmUuYzoxNDQ6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9jb3JlLmMtMTQ1LVx0YnBmX3Byb2dfc3RyZWFtX2luaXQoZnApO1xuLS1cbmtlcm5lbC9icGYvY29yZS5jPTI0NjE9RVZBTDQoUFJPR19OQU1FX0xJU1QsIDQxNiwgNDQ4LCA0ODAsIDUxMilcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0yNDY0LVxua2VybmVsL2JwZi9jb3JlLmM6MjQ2NTojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG5rZXJuZWwvYnBmL2NvcmUuYy0yNDY2LWludCBicGZfcGF0Y2hfY2FsbF9hcmdzKHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgdTMyIHN0YWNrX2RlcHRoKVxuLS1cbmtlcm5lbC9icGYvY29yZS5jPTMwNDU9dm9pZCBfX2JwZl9mcmVlX3VzZWRfYnRmcyhzdHJ1Y3QgYnRmX21vZF9wYWlyICp1c2VkX2J0ZnMsIHUzMiBsZW4pXG5rZXJuZWwvYnBmL2NvcmUuYy0zMDQ2LXtcbmtlcm5lbC9icGYvY29yZS5jOjMwNDc6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9jb3JlLmMtMzA0OC1cdHN0cnVjdCBidGZfbW9kX3BhaXIgKmJ0Zl9tb2Q7XG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MzA2Nj1zdGF0aWMgdm9pZCBicGZfcHJvZ19mcmVlX2RlZmVycmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0zMDcxLVx0YXV4ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBicGZfcHJvZ19hdXgsIHdvcmspO1xua2VybmVsL2JwZi9jb3JlLmM6MzA3MjojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG5rZXJuZWwvYnBmL2NvcmUuYy0zMDczLVx0YnBmX2ZyZWVfa2Z1bmNfYnRmX3RhYihhdXgtXHUwMDNla2Z1bmNfYnRmX3RhYik7XG4tLVxua2VybmVsL2JwZi9jb3JlLmM9MzM4OD1zdGF0aWMgbm9pbmxpbmUgdm9pZCBicGZfcHJvZ19yZXBvcnRfbWF5X2dvdG9fdmlvbGF0aW9uKHZvaWQpXG5rZXJuZWwvYnBmL2NvcmUuYy0zMzg5LXtcbmtlcm5lbC9icGYvY29yZS5jOjMzOTA6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9jb3JlLmMtMzM5MS1cdHN0cnVjdCBicGZfc3RyZWFtX3N0YWdlIHNzO1xuLS1cbmtlcm5lbC9icGYvY29yZS5jPTM0Mjg9X193ZWFrIHU2NCBicGZfYXJlbmFfZ2V0X2tlcm5fdm1fc3RhcnQoc3RydWN0IGJwZl9hcmVuYSAqYXJlbmEpXG4tLVxua2VybmVsL2JwZi9jb3JlLmMtMzQzMi1cbmtlcm5lbC9icGYvY29yZS5jOjM0MzM6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxua2VybmVsL2JwZi9jb3JlLmMtMzQzNC1fX3dlYWsgYm9vbCBicGZfYXJlbmFfaGFuZGxlX3BhZ2VfZmF1bHQodW5zaWduZWQgbG9uZyBhZGRyLCBib29sIGlzX3dyaXRlLFxuLS1cbmtlcm5lbC9icGYvY29yZS5jPTM0NTk9RVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MX0dQTCh4ZHBfYnVsa190eCk7XG5rZXJuZWwvYnBmL2NvcmUuYy0zNDYwLVxua2VybmVsL2JwZi9jb3JlLmM6MzQ2MTojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG5rZXJuZWwvYnBmL2NvcmUuYy0zNDYyLVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE0Njc9aW50IF9fd2VhayBhcmNoX2JwZl90cmFtcG9saW5lX3NpemUoY29uc3Qgc3RydWN0IGJ0Zl9mdW5jX21vZGVsICptLCB1MzIgZmxhZ3MsXG4tLVxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTQ3NC0gICAgZGVmaW5lZChDT05GSUdfSEFWRV9TSU5HTEVfRlRSQUNFX0RJUkVDVF9PUFMpIFx1MDAyNlx1MDAyNiBcXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTQ3NTogICAgZGVmaW5lZChDT05GSUdfQlBGX1NZU0NBTEwpXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNDc2LVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE3MTI9aW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKVxuLS1cbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE3NDgtXHQgIENPTkZJR19IQVZFX1NJTkdMRV9GVFJBQ0VfRElSRUNUX09QUyBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE3NDk6XHQgIENPTkZJR19CUEZfU1lTQ0FMTCAqL1xua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTc1MC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzMDYKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnV6emluZyBTdHJhdGVneTogQlBGIFZlcmlmaWVyIEZpeGVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBjb25maWdzLCBzcGVjaWZpY2FsbHkgYEJQRl9TWVNDQUxMYCwgYW5kIEkgbmVlZCB0byBzdW1tYXJpemUgdGhpcyBwYXRjaC4gTGV0JiMzOTtzIHNlZS4uLiBpdCBsb29rcyBsaWtlIHRoZSBrZXkgY2hhbmdlcyBhcmUgaW4gdGhlIEJQRiB2ZXJpZmllci4gVGhlIGZpcnN0IG9uZSBkaXNhYmxlcyByYXcgbW9kZSBmb3IgYGJwZl9tYXBfcGVla19lbGVtYCBvbiBibG9vbSBmaWx0ZXJzIHRvIGF2b2lkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBhbmQgdGhlIHNlY29uZCB6ZXJvZXMgdGhlIGBtZXRhYCBzdHJ1Y3QgaW4gYGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YWAgYmVmb3JlIGNhbGxpbmcgYGZldGNoX2tmdW5jX21ldGFgLCB3aGljaCBzaG91bGQgYWxzbyBmaXggYSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaWYgdGhlIGZldGNoIGZhaWxzLiBGdW5jdGlvbmFsbHkgc3BlYWtpbmcsIGJvdGggb2YgdGhlc2UgYXJlIHZlcmlmaWVyIGNoYW5nZXMsIHNvIHRoZXkmIzM5O3JlIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4KClRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIGlzIHNldCB0byB0cnVlLCBzbyB0aGF0JiMzOTtzIGdvb2QuCgpNeSBgRm9jdXNTeW1ib2xzYCBhcmUgc2V0IHRvIGBjaGVja19mdW5jX2FyZ2AgYW5kIGBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFgLCB3aGljaCBmZWVscyByaWdodC4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB3aGV0aGVyIHRob3NlIHN5bWJvbHMgYXJlIHN1aXRhYmxlIHRhcmdldHMuIGBjaGVja19mdW5jX2FyZ2AgaXMgdXNlZCBmb3IgcHJldHR5IG11Y2ggZXZlcnkgaGVscGVyIGNhbGwgYXJndW1lbnQgaW4gQlBGIHByb2dyYW1zLCB3aGljaCBpcyBhIGhvdCBwYXRoIGR1cmluZyB2ZXJpZmljYXRpb24sIGFuZCB0aGF0JiMzOTtzIGV4YWN0bHkgd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yIC0gZnV6emluZyB0aGUgdmVyaWZpZXIgaXMgYSBjcml0aWNhbCB0YXJnZXQuIGBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFgIGFsc28gc2VlbXMgbGlrZSBhIGdvb2QgdGFyZ2V0IGFzIGl0JiMzOTtzIHBhcnQgb2YgdmVyaWZ5aW5nIGtmdW5jIGNhbGxzLgoKTm93LCBhIHF1aWNrIGNoZWNrIG9uIGBjaGVja19mdW5jX2FyZ2AgLSBpdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbiwgYW5kIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCYjMzk7cyBva2F5LiBTeXprYWxsZXIgZ2VuZXJhbGx5IHN1cHBvcnRzIHN0YXRpYyBmdW5jdGlvbnMgYXMgZm9jdXMgc3ltYm9scy4gU2luY2UgdGhlIGZvY3VzIGlzIG9uIGEgcGFydGljdWxhciBhcmVhIGFuZCBzaW5jZSBpdCYjMzk7cyBub3QgaW5saW5lZCwgSSB0aGluayBJJiMzOTttIGdvb2QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDIyOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NoZWNrX2Z1bmNfYXJnJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz04NTc9c3RhdGljIGJvb2wgaXNfZHlucHRyX3JlZ192YWxpZF9pbml0KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTg2NC1cdCAqIENPTlNUX1BUUl9UT19EWU5QVFIgYWxyZWFkeSBoYXMgZml4ZWQgYW5kIHZhcl9vZmYgYXMgMCBkdWUgdG9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4NjU6XHQgKiBjaGVja19mdW5jX2FyZ19yZWdfb2ZmJiMzOTtzIGxvZ2ljLCBzbyB3ZSBkb24mIzM5O3QgbmVlZCB0byBjaGVjayBpdHNcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NjYtXHQgKiBvZmZzZXQgYW5kIGFsaWdubWVudC5cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NDMzNz1zdGF0aWMgaW50IG1hcF9rcHRyX21hdGNoX3R5cGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDM5Mi1cdCAqXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6NDM5MzpcdCAqIEluIHRoZSBrcHRyX3JlZiBjYXNlLCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmIGFscmVhZHkgZW5zdXJlcyByZWctXHUwMDNldmFyX29mZlxua2VybmVsL2JwZi92ZXJpZmllci5jLTQzOTQtXHQgKiBpcyB6ZXJvLiBXZSBtdXN0IGFsc28gZW5zdXJlIHRoYXQgYnRmX3N0cnVjdF9pZHNfbWF0Y2ggZG9lcyBub3Qgd2Fsa1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz04MDY1PXJlZ19maW5kX2ZpZWxkX29mZnNldChjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBzMzIgb2ZmLCB1MzIgZmllbGRzKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04MDgwLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjgwODE6c3RhdGljIGludCBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04MDgyLVx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTgxNjAtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODE2MTpzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04MTYyLVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04MTY0LXtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4MTY1Olx0cmV0dXJuIF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIGFyZ190eXBlLCB0cnVlKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04MTY2LX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9ODI4Mz1zdGF0aWMgYm9vbCBjYW5fZWxpZGVfdmFsdWVfbnVsbG5lc3MoY29uc3Qgc3RydWN0IGJwZl9tYXAgKm1hcCk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODI4NC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4Mjg1OnN0YXRpYyBpbnQgY2hlY2tfZnVuY19hcmcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgdTMyIGFyZyxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04Mjg2LVx0XHRcdCAgc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04MzQxLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjgzNDI6XHRlcnIgPSBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnX3R5cGUpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTgzNDMtXHRpZiAoZXJyKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz05MTQzPXN0YXRpYyBpbnQgc2V0dXBfZnVuY19lbnRyeShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgc3VicHJvZywgaW50IGNhbGxzaXRlLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MTkwLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjkxOTE6c3RhdGljIGludCBidGZfY2hlY2tfZnVuY19hcmdfbWF0Y2goc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IHN1YnByb2csXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTE5Mi1cdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgYnRmICpidGYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTkyMzUtXHRcdH0gZWxzZSBpZiAoYXJnLVx1MDAzZWFyZ190eXBlID09IEFSR19QVFJfVE9fQ1RYKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6OTIzNjpcdFx0XHRyZXQgPSBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgQVJHX1BUUl9UT19DVFgpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTkyMzctXHRcdFx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTI0Ny1cdFx0fSBlbHNlIGlmIChiYXNlX3R5cGUoYXJnLVx1MDAzZWFyZ190eXBlKSA9PSBBUkdfUFRSX1RPX01FTSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jOjkyNDg6XHRcdFx0cmV0ID0gY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIEFSR19ET05UQ0FSRSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTI0OS1cdFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MjcxLVx0XHR9IGVsc2UgaWYgKGFyZy1cdTAwM2VhcmdfdHlwZSA9PSBBUkdfUFRSX1RPX0RZTlBUUikge1xua2VybmVsL2JwZi92ZXJpZmllci5jOjkyNzI6XHRcdFx0cmV0ID0gY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIEFSR19QVFJfVE9fRFlOUFRSKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MjczLVx0XHRcdGlmIChyZXQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTkyODctXHRcdFx0ZXJyID0gY2hlY2tfcmVnX3R5cGUoZW52LCByZWcsIGFyZ25vLCBhcmctXHUwMDNlYXJnX3R5cGUsIFx1MDAyNmFyZy1cdTAwM2VidGZfaWQsIFx1MDAyNm1ldGEpO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjkyODg6XHRcdFx0ZXJyID0gZXJyID86IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBhcmctXHUwMDNlYXJnX3R5cGUpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTkyODktXHRcdFx0aWYgKGVycilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9OTMwOD1zdGF0aWMgaW50IGJ0Zl9jaGVja19zdWJwcm9nX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IHN1YnByb2csXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTkzMjUtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6OTMyNjpcdGVyciA9IGJ0Zl9jaGVja19mdW5jX2FyZ19tYXRjaChlbnYsIHN1YnByb2csIGJ0ZiwgcmVncyk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTMyNy1cdC8qIENvbXBpbGVyIG9wdGltaXphdGlvbnMgY2FuIHJlbW92ZSBhcmd1bWVudHMgZnJvbSBzdGF0aWMgZnVuY3Rpb25zXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEwMjMxPXN0YXRpYyBpbnQgY2hlY2tfaGVscGVyX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDI5Ny1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1BWF9CUEZfRlVOQ19SRUdfQVJHUzsgaSYjNDM7JiM0MzspIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMDI5ODpcdFx0ZXJyID0gY2hlY2tfZnVuY19hcmcoZW52LCBpLCBcdTAwMjZtZXRhLCBmbiwgaW5zbl9pZHgpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEwMjk5LVx0XHRpZiAoZXJyKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTk5MD1zdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjIxMC1cdFx0XHRhcmdfdHlwZSB8PSBPQkpfUkVMRUFTRTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjIxMTpcdFx0cmV0ID0gX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnX3R5cGUsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIyMTItXHRcdFx0XHRcdCAgICAgICBidGZfaWRfZml4ZWRfb2ZmX29rKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4MjIKCQkJCQkJCW91dHB1dDogMTU0CgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biByZWFzb25pbmc6CgoqKkFuYWx5emluZyBGdW5jdGlvbiBDYWxscyBhbmQgU2NvcGUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhhdCBgY2hlY2tfZnVuY19hcmdgIGZ1bmN0aW9uPyBZZWFoLCBpdCYjMzk7cyBwcmV0dHkgaGVmdHkuIENvbnNpZGVyaW5nIGl0cyBzaXplLCB0aGUgY29tcGlsZXIgcHJvYmFibHkgaXNuJiMzOTt0IGdvaW5nIHRvIGJlIGlubGluaW5nIGl0LiBXZSYjMzk7cmUgbG9va2luZyBhdCBhIGZ1bmN0aW9uIGNhbGwgb3ZlcmhlYWQgdGhlcmUsIHdoaWNoIGNvdWxkIGJlIGltcG9ydGFudCBmb3IgcGVyZm9ybWFuY2UgaW4gYSB0aWdodCBsb29wLgoKTm93LCB0aGF0IGBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFgIGZ1bmN0aW9uLi4uIGl0JiMzOTtzIGVpdGhlciBleHBvcnRlZCBvciwgYXQgdGhlIHZlcnkgbGVhc3QsIG5vdCBkZWNsYXJlZCBzdGF0aWMuIFRoYXQgaW1wbGllcyBpdCYjMzk7cyBhY2Nlc3NpYmxlIGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIGNvZGUsIHBvdGVudGlhbGx5IGV2ZW4gb3RoZXIgbW9kdWxlcy4gU28gaXRzIHZpc2liaWxpdHkgaXMgc29tZXRoaW5nIHdlIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBhcyBvdGhlciBhcmVhcyBjb3VsZCBwb3RlbnRpYWxseSByZWx5IG9uLCBvciBpbnRlcmZlcmUgd2l0aCBpdHMgZnVuY3Rpb25hbGl0eS4KCkJhc2VkIG9uIHRoYXQgYW5hbHlzaXMsIEkmIzM5O2xsIGdvIGFoZWFkIGFuZCBzZXQgdGhlIGV4cGVjdGVkIG91dGNvbWVzIG9mIHRoZSBjdXJyZW50IG9wZXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMjI6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2hlY2tfZnVuY19hcmcmIzM0OywKICAgICYjMzQ7YnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gZGlzYWJsZSByYXcgbW9kZSBmb3IgYnBmX21hcF9wZWVrX2VsZW0oKSBvbiBibG9vbSBmaWx0ZXJzLCBwcmV2ZW50aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZyb20gYmVpbmcgcGFzc2VkIHRvIHRoZSBoZWxwZXIuIEl0IGFsc28gemVyb2VzIHRoZSBtZXRhIHN0cnVjdCBpbiBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGEoKSBiZWZvcmUgY2FsbGluZyBmZXRjaF9rZnVuY19tZXRhKCksIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSB3aGVuIHRoZSBmZXRjaCBmYWlscy4gQm90aCBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBCUEYgdmVyaWZpZXIgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NoZWNrX2Z1bmNfYXJnJiMzNDssCiAgICAmIzM0O2JwZl9mZXRjaF9rZnVuY19hcmdfbWV0YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGRpc2FibGUgcmF3IG1vZGUgZm9yIGJwZl9tYXBfcGVla19lbGVtKCkgb24gYmxvb20gZmlsdGVycywgcHJldmVudGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSBmcm9tIGJlaW5nIHBhc3NlZCB0byB0aGUgaGVscGVyLiBJdCBhbHNvIHplcm9lcyB0aGUgbWV0YSBzdHJ1Y3QgaW4gYnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhKCkgYmVmb3JlIGNhbGxpbmcgZmV0Y2hfa2Z1bmNfbWV0YSgpLCBmaXhpbmcgYSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgd2hlbiB0aGUgZmV0Y2ggZmFpbHMuIEJvdGggYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgQlBGIHZlcmlmaWVyIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjM0OjMyLjU0Mzg5ODYxOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3OTM2ODMwMzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2hlY2tfZnVuY19hcmdcIixcbiAgICBcImJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gZGlzYWJsZSByYXcgbW9kZSBmb3IgYnBmX21hcF9wZWVrX2VsZW0oKSBvbiBibG9vbSBmaWx0ZXJzLCBwcmV2ZW50aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZyb20gYmVpbmcgcGFzc2VkIHRvIHRoZSBoZWxwZXIuIEl0IGFsc28gemVyb2VzIHRoZSBtZXRhIHN0cnVjdCBpbiBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGEoKSBiZWZvcmUgY2FsbGluZyBmZXRjaF9rZnVuY19tZXRhKCksIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSB3aGVuIHRoZSBmZXRjaCBmYWlscy4gQm90aCBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBCUEYgdmVyaWZpZXIgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjozNDozMi41NDM5MDQwOTlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNDA3NDcxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGE1OGQxYzRhOWMwYjQzMDQ2MzQxYjJlOTQxYmRiNzExY2MwY2QxN2JcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMTUgMjI6MzQ6MzAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuaW5kZXggZGU4MTYwNjNhZTYzZDAuLmRkZmE0ZjU3MDE2Yjc0IDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xcbkBAIC04NDIyLDYgKzg0MjIsMTUgQEAgc3RhdGljIGludCBjaGVja19mdW5jX2FyZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCB1MzIgYXJnLFxcbiBcXHRcXHRcXHR2ZXJpZmllcl9idWcoZW52LCBcXFwiaW52YWxpZCBtYXBfcHRyIHRvIGFjY2VzcyBtYXAtXFx1MDAzZXZhbHVlXFxcIik7XFxuIFxcdFxcdFxcdHJldHVybiAtRUZBVUxUO1xcbiBcXHRcXHR9XFxuK1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBEaXNhYmxlIHJhdyBtb2RlIGZvciBicGZfbWFwX3BlZWtfZWxlbSgpIG9uIGEgYmxvb20gZmlsdGVyLiBUaGUgaGVscGVyIHJlYWRzXFxuK1xcdFxcdCAqIHRoZSB2YWx1ZSBidWZmZXIgYXMgYW4gaW5wdXQgcmF0aGVyIHRoYW4gZmlsbGluZyBpdC5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGlmIChtZXRhLVxcdTAwM2VmdW5jX2lkID09IEJQRl9GVU5DX21hcF9wZWVrX2VsZW0gXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgIG1ldGEtXFx1MDAzZW1hcC5wdHItXFx1MDAzZW1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9CTE9PTV9GSUxURVIpXFxuK1xcdFxcdFxcdG1ldGEtXFx1MDAzZWFyZ19yYXdfbWVtLnJlZ25vID0gMDtcXG4rXFxuIFxcdFxcdGVyciA9IGNoZWNrX2hlbHBlcl9tZW1fYWNjZXNzKGVudiwgcmVnLCBhcmdubywgbWV0YS1cXHUwMDNlbWFwLnB0ci1cXHUwMDNldmFsdWVfc2l6ZSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgYXJnX3R5cGUgXFx1MDAyNiBNRU1fV1JJVEUgPyBCUEZfV1JJVEUgOiBCUEZfUkVBRCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICAgZmFsc2UsIG1ldGEpO1xcbkBAIC0xMjU2MiwxMSArMTI1NzEsMTIgQEAgaW50IGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbiBcXHRzdHJ1Y3QgYnBmX2tmdW5jX21ldGEga2Z1bmM7XFxuIFxcdGludCBlcnI7XFxuIFxcbitcXHRtZW1zZXQobWV0YSwgMCwgc2l6ZW9mKCptZXRhKSk7XFxuK1xcbiBcXHRlcnIgPSBmZXRjaF9rZnVuY19tZXRhKGVudiwgZnVuY19pZCwgb2Zmc2V0LCBcXHUwMDI2a2Z1bmMpO1xcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbiBcXG4tXFx0bWVtc2V0KG1ldGEsIDAsIHNpemVvZigqbWV0YSkpO1xcbiBcXHRtZXRhLVxcdTAwM2VidGYgPSBrZnVuYy5idGY7XFxuIFxcdG1ldGEtXFx1MDAzZWZ1bmNfaWQgPSBrZnVuYy5pZDtcXG4gXFx0bWV0YS1cXHUwMDNlZnVuY19wcm90byA9IGtmdW5jLnByb3RvO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjozNDozMy4yNDg1MzkyOTVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3MjMyMTc2NDI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2hlY2tfZnVuY19hcmdcIixcbiAgICBcImJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgdmVyaWZpZXIgdG8gZGlzYWJsZSByYXcgbW9kZSBmb3IgYnBmX21hcF9wZWVrX2VsZW0oKSBvbiBibG9vbSBmaWx0ZXJzLCBwcmV2ZW50aW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGZyb20gYmVpbmcgcGFzc2VkIHRvIHRoZSBoZWxwZXIuIEl0IGFsc28gemVyb2VzIHRoZSBtZXRhIHN0cnVjdCBpbiBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGEoKSBiZWZvcmUgY2FsbGluZyBmZXRjaF9rZnVuY19tZXRhKCksIGZpeGluZyBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSB3aGVuIHRoZSBmZXRjaCBmYWlscy4gQm90aCBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBCUEYgdmVyaWZpZXIgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE1OGQxYzRhOWMwYjQzMDQ2MzQxYjJlOTQxYmRiNzExY2MwY2QxN2JcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAyMjozNDozMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggZGU4MTYwNjNhZTYzZDAuLmRkZmE0ZjU3MDE2Yjc0IDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcbkBAIC04NDIyLDYgKzg0MjIsMTUgQEAgc3RhdGljIGludCBjaGVja19mdW5jX2FyZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCB1MzIgYXJnLFxuIFx0XHRcdHZlcmlmaWVyX2J1ZyhlbnYsIFwiaW52YWxpZCBtYXBfcHRyIHRvIGFjY2VzcyBtYXAtXHUwMDNldmFsdWVcIik7XG4gXHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG4gXHRcdH1cbitcbitcdFx0LypcbitcdFx0ICogRGlzYWJsZSByYXcgbW9kZSBmb3IgYnBmX21hcF9wZWVrX2VsZW0oKSBvbiBhIGJsb29tIGZpbHRlci4gVGhlIGhlbHBlciByZWFkc1xuK1x0XHQgKiB0aGUgdmFsdWUgYnVmZmVyIGFzIGFuIGlucHV0IHJhdGhlciB0aGFuIGZpbGxpbmcgaXQuXG4rXHRcdCAqL1xuK1x0XHRpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IEJQRl9GVU5DX21hcF9wZWVrX2VsZW0gXHUwMDI2XHUwMDI2XG4rXHRcdCAgICBtZXRhLVx1MDAzZW1hcC5wdHItXHUwMDNlbWFwX3R5cGUgPT0gQlBGX01BUF9UWVBFX0JMT09NX0ZJTFRFUilcbitcdFx0XHRtZXRhLVx1MDAzZWFyZ19yYXdfbWVtLnJlZ25vID0gMDtcbitcbiBcdFx0ZXJyID0gY2hlY2tfaGVscGVyX21lbV9hY2Nlc3MoZW52LCByZWcsIGFyZ25vLCBtZXRhLVx1MDAzZW1hcC5wdHItXHUwMDNldmFsdWVfc2l6ZSxcbiBcdFx0XHRcdFx0ICAgICAgYXJnX3R5cGUgXHUwMDI2IE1FTV9XUklURSA/IEJQRl9XUklURSA6IEJQRl9SRUFELFxuIFx0XHRcdFx0XHQgICAgICBmYWxzZSwgbWV0YSk7XG5AQCAtMTI1NjIsMTEgKzEyNTcxLDEyIEBAIGludCBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGEoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbiBcdHN0cnVjdCBicGZfa2Z1bmNfbWV0YSBrZnVuYztcbiBcdGludCBlcnI7XG4gXG4rXHRtZW1zZXQobWV0YSwgMCwgc2l6ZW9mKCptZXRhKSk7XG4rXG4gXHRlcnIgPSBmZXRjaF9rZnVuY19tZXRhKGVudiwgZnVuY19pZCwgb2Zmc2V0LCBcdTAwMjZrZnVuYyk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuLVx0bWVtc2V0KG1ldGEsIDAsIHNpemVvZigqbWV0YSkpO1xuIFx0bWV0YS1cdTAwM2VidGYgPSBrZnVuYy5idGY7XG4gXHRtZXRhLVx1MDAzZWZ1bmNfaWQgPSBrZnVuYy5pZDtcbiBcdG1ldGEtXHUwMDNlZnVuY19wcm90byA9IGtmdW5jLnByb3RvO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MzQ6MzMuMjQ4NTQwNDg1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODg5NzA5NTU0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCUEYgVmVyaWZpZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyB0d2Vha2luZyB0aGUgQlBGIHZlcmlmaWVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBUaGUgZmlyc3QgcGFydCBjYXRjaGVzIG15IGF0dGVudGlvbjsgaXQncyBhZGRpbmcgYSBuZXcgY2hlY2sgd2l0aGluIGBjaGVja19mdW5jX2FyZ2AuIEl0IHNlZW1zIGxpa2Ugd2UncmUgYWRkcmVzc2luZyBhIHNwZWNpZmljIGlzc3VlIHJlbGF0ZWQgdG8gYGJwZl9tYXBfcGVla19lbGVtYCBhbmQgYmxvb20gZmlsdGVyIG1hcHMuIFRoZSBsb2dpYyBpcyBub3cgZGlzYWJsaW5nIFwicmF3IG1vZGVcIiBmb3IgdGhpcyBwYXJ0aWN1bGFyIGNvbWJpbmF0aW9uLiBUaGUgcmF0aW9uYWxlIGlzIGNsZWFyOiB0aGUgaGVscGVyIGBicGZfbWFwX3BlZWtfZWxlbWAgKnJlYWRzKiB0aGUgdmFsdWUgYnVmZmVyIHdoZW4gdXNlZCB3aXRoIGEgYmxvb20gZmlsdGVyLCByYXRoZXIgdGhhbiB3cml0aW5nIHRvIGl0LiBTbywgd2Ugc2V0IGBtZXRhLVx1MDAzZWFyZ19yYXdfbWVtLnJlZ25vID0gMDtgIHRvIHJlZmxlY3QgdGhhdC5cblxuVGhlIHNlY29uZCBwYXJ0IG9mIHRoZSBwYXRjaCBpcyBtb2RpZnlpbmcgYGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YWAuIEl0IGFwcGVhcnMgdG8gYmUgYWRkaW5nIGEgYG1lbXNldGAgY2FsbCB0byB6ZXJvIG91dCB0aGUgYG1ldGFgIHN0cnVjdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmdW5jdGlvbi4gTm93LCB0aGlzIGlzIGludGVyZXN0aW5nLiBJIGluaXRpYWxseSB0aG91Z2h0LCBcIldhaXQsIHdoeSBhcmUgd2UgemVyb2luZyBgbWV0YWAgKmJlZm9yZSogdGhlIGNhbGwgdG8gYGZldGNoX2tmdW5jX21ldGFgPyBJZiBgZmV0Y2hfa2Z1bmNfbWV0YWAgZmFpbHMsIGl0IHJldHVybnMgYW4gZXJyb3IsIGFuZCB0aGUgY2FsbGVyICpzaG91bGRuJ3QqIGJlIHVzaW5nIHRoZSB1bmluaXRpYWxpemVkIGBtZXRhYCBkYXRhLlwiIEhvd2V2ZXIsIG9uIHNlY29uZCB0aG91Z2h0LCBpdCBjb3VsZCBiZSB0aGF0IGBtZXRhYCBpcyBpbmRlZWQgdXNlZCBieSB0aGUgY2FsbGVyIGV2ZW4gaW4gYW4gZXJyb3IgY2FzZSwgb3IgbW9yZSBsaWtlbHksIGl0J3MganVzdCBkZWZlbnNpdmVseSBnb29kIHByYWN0aWNlIHRvIHplcm8gaXQgb3V0IHVwZnJvbnQuIEVuc3VyZXMgdGhhdCBldmVuIGlmIHRoZXJlJ3MgYSBwcm9ibGVtIGxhdGVyLCB3ZSdyZSBub3QgZGVhbGluZyB3aXRoIGdhcmJhZ2UgZGF0YS4gU3RpbGwsIEkgc2hvdWxkIGNoZWNrIHRoZSBjb250ZXh0IHRvIGJlIGNlcnRhaW4uXG5cbkkgbmVlZCB0byBkaWcgaW50byBga2VybmVsL2JwZi92ZXJpZmllci5jYCB0byB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZTogd2hhdCBjYWxscyBgY2hlY2tfZnVuY19hcmdgIGFuZCBgYnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhYCwgd2hhdCB1c2VzIHRoZSB2YWx1ZXMgZnJvbSB0aG9zZSBmdW5jdGlvbnMsIGFuZCBjb25maXJtIGlmIHRob3NlIGVycm9yIHBhdGhzIGFyZSByZWxldmFudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzMiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjM0OjQyLjE0NTYzNzY5MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTQ3NDc5OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2hlY2tfZnVuY19hcmdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz04NTc9c3RhdGljIGJvb2wgaXNfZHlucHRyX3JlZ192YWxpZF9pbml0KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODY0LVxcdCAqIENPTlNUX1BUUl9UT19EWU5QVFIgYWxyZWFkeSBoYXMgZml4ZWQgYW5kIHZhcl9vZmYgYXMgMCBkdWUgdG9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODY1OlxcdCAqIGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYncyBsb2dpYywgc28gd2UgZG9uJ3QgbmVlZCB0byBjaGVjayBpdHNcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODY2LVxcdCAqIG9mZnNldCBhbmQgYWxpZ25tZW50Llxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTQzMzc9c3RhdGljIGludCBtYXBfa3B0cl9tYXRjaF90eXBlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDM5Mi1cXHQgKlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo0MzkzOlxcdCAqIEluIHRoZSBrcHRyX3JlZiBjYXNlLCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmIGFscmVhZHkgZW5zdXJlcyByZWctXFx1MDAzZXZhcl9vZmZcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNDM5NC1cXHQgKiBpcyB6ZXJvLiBXZSBtdXN0IGFsc28gZW5zdXJlIHRoYXQgYnRmX3N0cnVjdF9pZHNfbWF0Y2ggZG9lcyBub3Qgd2Fsa1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTgwNjU9cmVnX2ZpbmRfZmllbGRfb2Zmc2V0KGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIHMzMiBvZmYsIHUzMiBmaWVsZHMpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODA4MC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODA4MTpzdGF0aWMgaW50IF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04MDgyLVxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTgxNjAtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjgxNjE6c3RhdGljIGludCBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTgxNjItXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTgxNjQte1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4MTY1OlxcdHJldHVybiBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBhcmdfdHlwZSwgdHJ1ZSk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTgxNjYtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTgyODM9c3RhdGljIGJvb2wgY2FuX2VsaWRlX3ZhbHVlX251bGxuZXNzKGNvbnN0IHN0cnVjdCBicGZfbWFwICptYXApO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04Mjg0LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4Mjg1OnN0YXRpYyBpbnQgY2hlY2tfZnVuY19hcmcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgdTMyIGFyZyxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODI4Ni1cXHRcXHRcXHQgIHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04MzQxLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4MzQyOlxcdGVyciA9IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBhcmdfdHlwZSk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTgzNDMtXFx0aWYgKGVycilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz05MTQzPXN0YXRpYyBpbnQgc2V0dXBfZnVuY19lbnRyeShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgc3VicHJvZywgaW50IGNhbGxzaXRlLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTkxOTAtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjkxOTE6c3RhdGljIGludCBidGZfY2hlY2tfZnVuY19hcmdfbWF0Y2goc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IHN1YnByb2csXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTkxOTItXFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBidGYgKmJ0ZixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MjM1LVxcdFxcdH0gZWxzZSBpZiAoYXJnLVxcdTAwM2VhcmdfdHlwZSA9PSBBUkdfUFRSX1RPX0NUWCkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5MjM2OlxcdFxcdFxcdHJldCA9IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBBUkdfUFRSX1RPX0NUWCk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTkyMzctXFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTI0Ny1cXHRcXHR9IGVsc2UgaWYgKGJhc2VfdHlwZShhcmctXFx1MDAzZWFyZ190eXBlKSA9PSBBUkdfUFRSX1RPX01FTSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5MjQ4OlxcdFxcdFxcdHJldCA9IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBBUkdfRE9OVENBUkUpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MjQ5LVxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTkyNzEtXFx0XFx0fSBlbHNlIGlmIChhcmctXFx1MDAzZWFyZ190eXBlID09IEFSR19QVFJfVE9fRFlOUFRSKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjkyNzI6XFx0XFx0XFx0cmV0ID0gY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIEFSR19QVFJfVE9fRFlOUFRSKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTI3My1cXHRcXHRcXHRpZiAocmV0KVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTkyODctXFx0XFx0XFx0ZXJyID0gY2hlY2tfcmVnX3R5cGUoZW52LCByZWcsIGFyZ25vLCBhcmctXFx1MDAzZWFyZ190eXBlLCBcXHUwMDI2YXJnLVxcdTAwM2VidGZfaWQsIFxcdTAwMjZtZXRhKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6OTI4ODpcXHRcXHRcXHRlcnIgPSBlcnIgPzogY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIGFyZy1cXHUwMDNlYXJnX3R5cGUpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05Mjg5LVxcdFxcdFxcdGlmIChlcnIpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9OTMwOD1zdGF0aWMgaW50IGJ0Zl9jaGVja19zdWJwcm9nX2NhbGwoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgaW50IHN1YnByb2csXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTMyNS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6OTMyNjpcXHRlcnIgPSBidGZfY2hlY2tfZnVuY19hcmdfbWF0Y2goZW52LCBzdWJwcm9nLCBidGYsIHJlZ3MpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MzI3LVxcdC8qIENvbXBpbGVyIG9wdGltaXphdGlvbnMgY2FuIHJlbW92ZSBhcmd1bWVudHMgZnJvbSBzdGF0aWMgZnVuY3Rpb25zXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTAyMzE9c3RhdGljIGludCBjaGVja19oZWxwZXJfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTAyOTctXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE1BWF9CUEZfRlVOQ19SRUdfQVJHUzsgaSsrKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEwMjk4OlxcdFxcdGVyciA9IGNoZWNrX2Z1bmNfYXJnKGVudiwgaSwgXFx1MDAyNm1ldGEsIGZuLCBpbnNuX2lkeCk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEwMjk5LVxcdFxcdGlmIChlcnIpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE5OTA9c3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjIxMC1cXHRcXHRcXHRhcmdfdHlwZSB8PSBPQkpfUkVMRUFTRTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTIyMTE6XFx0XFx0cmV0ID0gX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnX3R5cGUsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjEyLVxcdFxcdFxcdFxcdFxcdCAgICAgICBidGZfaWRfZml4ZWRfb2ZmX29rKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMjI6MzQ6NDIuMjYwMzk1NjQ5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzMxODcyNjMxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4ga2VybmVsIEJQRiB2ZXJpZmljYXRpb246XG5cbioqQW5hbHl6aW5nIHRoZSBgY2hlY2tfZnVuY19hcmdgIE1vZGlmaWNhdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoZSBmb2N1cyBpcyBvbiB0aGUgYGNoZWNrX2Z1bmNfYXJnYCBmdW5jdGlvbiB3aXRoaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIGEgbW9kaWZpY2F0aW9uIHRoZXJlLi4uIHRoYXQncyBwb3RlbnRpYWxseSBpbXBhY3RmdWwuXCIgSSBuZWVkIHRvIHpvb20gaW4gYW5kIGV4YW1pbmUgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY2hhbmdlLiBgY2hlY2tfZnVuY19hcmdgIGlzIGEgY3JpdGljYWwgcGllY2UsIGl0IGhhbmRsZXMgdGhlIHZhbGlkYXRpb24gb2YgZnVuY3Rpb24gYXJndW1lbnRzIHBhc3NlZCB0byBCUEYgcHJvZ3JhbXMuIEFueSBjaGFuZ2UgaGVyZSBjb3VsZCBkaXJlY3RseSBpbXBhY3QgdGhlIHR5cGVzIG9mIHByb2dyYW1zIHRoYXQgY2FuIGJlIHNhZmVseSBsb2FkZWQgYW5kIGV4ZWN1dGVkLCBvciwgY3J1Y2lhbGx5LCBpdCBjb3VsZCBpbnRyb2R1Y2UgdnVsbmVyYWJpbGl0aWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqZXhhY3RseSogd2hhdCdzIGJlZW4gYWx0ZXJlZCBhbmQsIHBlcmhhcHMgbW9yZSBpbXBvcnRhbnRseSwgKndoeSouIEnigJlsbCBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIHRvIHNlZSBob3cgdGhpcyBjaGFuZ2UgcmlwcGxlcyB0aHJvdWdoIHRoZSB2ZXJpZmllciBsb2dpYy4gTXkgZXhwZXJ0IGV5ZSBuZWVkcyB0byBwaWNrIGFwYXJ0IHRoZSBiZWZvcmUgYW5kIGFmdGVyIHN0YXRlcyB0byBhc3Nlc3MgdGhlIHJpc2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MTMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjozNDo0OS41NzkxMjUwOTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzg0MjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA4NDEwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI4NDEwOlxcdFxcdFxcdFxcdH1cXG44NDExOlxcdFxcdFxcdH1cXG44NDEyOlxcdFxcdFxcdGJyZWFrO1xcbjg0MTM6XFx0XFx0Y2FzZSBBUkdfUFRSX1RPX01BUF9WQUxVRTpcXG44NDE0OlxcdFxcdFxcdGlmICh0eXBlX21heV9iZV9udWxsKGFyZ190eXBlKSBcXHUwMDI2XFx1MDAyNiBicGZfcmVnaXN0ZXJfaXNfbnVsbChyZWcpKVxcbjg0MTU6XFx0XFx0XFx0XFx0cmV0dXJuIDA7XFxuODQxNjpcXHRcXG44NDE3OlxcdFxcdFxcdC8qIGJwZl9tYXBfeHh4KC4uLiwgbWFwX3B0ciwgLi4uLCB2YWx1ZSkgY2FsbDpcXG44NDE4OlxcdFxcdFxcdCAqIGNoZWNrIFt2YWx1ZSwgdmFsdWUgKyBtYXAtXFx1MDAzZXZhbHVlX3NpemUpIHZhbGlkaXR5XFxuODQxOTpcXHRcXHRcXHQgKi9cXG44NDIwOlxcdFxcdFxcdGlmICghbWV0YS1cXHUwMDNlbWFwLnB0cikge1xcbjg0MjE6XFx0XFx0XFx0XFx0Lyoga2VybmVsIHN1YnN5c3RlbSBtaXNjb25maWd1cmVkIHZlcmlmaWVyICovXFxuODQyMjpcXHRcXHRcXHRcXHR2ZXJpZmllcl9idWcoZW52LCBcXFwiaW52YWxpZCBtYXBfcHRyIHRvIGFjY2VzcyBtYXAtXFx1MDAzZXZhbHVlXFxcIik7XFxuODQyMzpcXHRcXHRcXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG44NDI0OlxcdFxcdFxcdH1cXG44NDI1OlxcdFxcbjg0MjY6XFx0XFx0XFx0LypcXG44NDI3OlxcdFxcdFxcdCAqIERpc2FibGUgcmF3IG1vZGUgZm9yIGJwZl9tYXBfcGVla19lbGVtKCkgb24gYSBibG9vbSBmaWx0ZXIuIFRoZSBoZWxwZXIgcmVhZHNcXG44NDI4OlxcdFxcdFxcdCAqIHRoZSB2YWx1ZSBidWZmZXIgYXMgYW4gaW5wdXQgcmF0aGVyIHRoYW4gZmlsbGluZyBpdC5cXG44NDI5OlxcdFxcdFxcdCAqL1xcbjg0MzA6XFx0XFx0XFx0aWYgKG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gQlBGX0ZVTkNfbWFwX3BlZWtfZWxlbSBcXHUwMDI2XFx1MDAyNlxcbjg0MzE6XFx0XFx0XFx0ICAgIG1ldGEtXFx1MDAzZW1hcC5wdHItXFx1MDAzZW1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9CTE9PTV9GSUxURVIpXFxuODQzMjpcXHRcXHRcXHRcXHRtZXRhLVxcdTAwM2VhcmdfcmF3X21lbS5yZWdubyA9IDA7XFxuODQzMzpcXHRcXG44NDM0OlxcdFxcdFxcdGVyciA9IGNoZWNrX2hlbHBlcl9tZW1fYWNjZXNzKGVudiwgcmVnLCBhcmdubywgbWV0YS1cXHUwMDNlbWFwLnB0ci1cXHUwMDNldmFsdWVfc2l6ZSxcXG44NDM1OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGFyZ190eXBlIFxcdTAwMjYgTUVNX1dSSVRFID8gQlBGX1dSSVRFIDogQlBGX1JFQUQsXFxuODQzNjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBmYWxzZSwgbWV0YSk7XFxuODQzNzpcXHRcXHRcXHRicmVhaztcXG44NDM4OlxcdFxcdGNhc2UgQVJHX1BUUl9UT19QRVJDUFVfQlRGX0lEOlxcbjg0Mzk6XFx0XFx0XFx0aWYgKCFyZWctXFx1MDAzZWJ0Zl9pZCkge1xcbjg0NDA6XFx0XFx0XFx0XFx0dmVyYm9zZShlbnYsIFxcXCJIZWxwZXIgaGFzIGludmFsaWQgYnRmX2lkIGluIFIlZFxcXFxuXFxcIiwgcmVnbm8pO1xcbjg0NDE6XFx0XFx0XFx0XFx0cmV0dXJuIC1FQUNDRVM7XFxuODQ0MjpcXHRcXHRcXHR9XFxuODQ0MzpcXHRcXHRcXHRtZXRhLVxcdTAwM2VyZXRfYnRmID0gcmVnLVxcdTAwM2VidGY7XFxuODQ0NDpcXHRcXHRcXHRtZXRhLVxcdTAwM2VyZXRfYnRmX2lkID0gcmVnLVxcdTAwM2VidGZfaWQ7XFxuODQ0NTpcXHRcXHRcXHRicmVhaztcXG44NDQ2OlxcdFxcdGNhc2UgQVJHX1BUUl9UT19TUElOX0xPQ0s6XFxuODQ0NzpcXHRcXHRcXHRpZiAoaW5fcmJ0cmVlX2xvY2tfcmVxdWlyZWRfY2IoZW52KSkge1xcbjg0NDg6XFx0XFx0XFx0XFx0dmVyYm9zZShlbnYsIFxcXCJjYW4ndCBzcGluX3tsb2NrLHVubG9ja30gaW4gcmJ0cmVlIGNiXFxcXG5cXFwiKTtcXG44NDQ5OlxcdFxcdFxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbjg0NTA6XFx0XFx0XFx0fVxcbjg0NTE6XFx0XFx0XFx0aWYgKG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gQlBGX0ZVTkNfc3Bpbl9sb2NrKSB7XFxuODQ1MjpcXHRcXHRcXHRcXHRlcnIgPSBwcm9jZXNzX3NwaW5fbG9jayhlbnYsIHJlZywgYXJnbm8sIFBST0NFU1NfU1BJTl9MT0NLKTtcXG44NDUzOlxcdFxcdFxcdFxcdGlmIChlcnIpXFxuODQ1NDpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbjg0NTU6XFx0XFx0XFx0fSBlbHNlIGlmIChtZXRhLVxcdTAwM2VmdW5jX2lkID09IEJQRl9GVU5DX3NwaW5fdW5sb2NrKSB7XFxuODQ1NjpcXHRcXHRcXHRcXHRlcnIgPSBwcm9jZXNzX3NwaW5fbG9jayhlbnYsIHJlZywgYXJnbm8sIDApO1xcbjg0NTc6XFx0XFx0XFx0XFx0aWYgKGVycilcXG44NDU4OlxcdFxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuODQ1OTpcXHRcXHRcXHR9IGVsc2Uge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjozNDo0OS41ODA1MTI2MzdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjE5OTM2Njc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBCbG9vbSBGaWx0ZXIgYW5kIFJhdyBNb2RlIENoYW5nZSoqXG5cbk9rYXksIHNvIHRoaXMgY2hhbmdlIGRpc2FibGVzIHJhdyBtb2RlIHNwZWNpZmljYWxseSBmb3IgYGJwZl9tYXBfcGVla19lbGVtYCB3aGVuIGRlYWxpbmcgd2l0aCBhIGJsb29tIGZpbHRlci4gSW5pdGlhbGx5LCBJIHRob3VnaHQgdGhpcyB3YXMgYSBzdHJhaWdodGZvcndhcmQgZnVuY3Rpb25hbCBzaGlmdCB3aXRoaW4gdGhlIHZlcmlmaWVyIGFpbWVkIGF0IHByZXZlbnRpbmcgdGhlIHBvdGVudGlhbCBmb3IgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSB0aHJvdWdoIHRoaXMgaGVscGVyLiBNeSBmaXJzdCBhc3N1bXB0aW9uIHdhcyB0aGF0IHdlIGFyZSB0cnlpbmcgdG8gc3RvcCBpc3N1ZXMgYXJpc2luZyBmcm9tIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGJlaW5nIHBhc3NlZCB0byB0aGUgYGJwZl9tYXBfcGVla19lbGVtYCBmdW5jdGlvbiBmb3IgYmxvb20gZmlsdGVycy5cblxuQnV0IHRoZW4gSSBoYWQgdG8gdGhpbmsgdGhyb3VnaCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMuICBJZiByYXcgbW9kZSBpcyAqb24qLCB0aGUgdmVyaWZpZXIsIGluIGl0cyB3aXNkb20sIGFzc3VtZXMgdGhhdCB0aGUgaGVscGVyIGZ1bmN0aW9uICp3cml0ZXMqIHRvIHRoZSBwcm92aWRlZCBtZW1vcnkgbG9jYXRpb24uICBUaGF0J3Mgd2h5IGl0IGFsbG93cyB1bmluaXRpYWxpemVkIG1lbW9yeSB0byBiZSBwYXNzZWQg4oCTIHRoZSB2ZXJpZmllciBleHBlY3RzIHRoZSBoZWxwZXIgdG8gcG9wdWxhdGUgaXQuICBIb3dldmVyLCB3aXRoIGBicGZfbWFwX3BlZWtfZWxlbWAgYW5kIGl0cyBhcHBsaWNhdGlvbiB3aXRoIGJsb29tIGZpbHRlcnMsIHRoZSBoZWxwZXIgaXNuJ3Qgd3JpdGluZzsgaXQncyAqcmVhZGluZyouIEl0J3MgY2hlY2tpbmcgaWYgYW4gZWxlbWVudCBleGlzdHMgaW4gdGhlIGZpbHRlciwgYW5kIHRoZXJlZm9yZSByZWFkaW5nIHRoZSBjb250ZW50cyBvZiBtZW1vcnkuICBUaHVzLCBpZiByYXcgbW9kZSBpcyBlbmFibGVkIHdpdGggYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgbG9jYXRpb24sIHdlJ2QgYmUgaW5hZHZlcnRlbnRseSByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGF0J3MgYSBodWdlIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IVxuXG5TbywgdGhlIGNoYW5nZSBpcyBhY3R1YWxseSBxdWl0ZSBlbGVnYW50IGluIHByZXZlbnRpbmcgdGhpcy4gQnkgZGlzYWJsaW5nIHJhdyBtb2RlIGluIHRoaXMgc3BlY2lmaWMgc2NlbmFyaW8sIHRoZSB2ZXJpZmllciB3aWxsICpmb3JjZSogdGhlIG1lbW9yeSB0byBiZSBpbml0aWFsaXplZCBiZWZvcmUgYGJwZl9tYXBfcGVla19lbGVtYCBjYW4gZXZlbiBiZSBjYWxsZWQuIEl0J3MgYSBzb2xpZCBkZWZlbnNlIGFnYWluc3QgYSB2ZXJ5IHN1YnRsZSwgeWV0IHBvdGVudGlhbGx5IGRhbmdlcm91cywgZmxhdy4gSXQgbWFrZXMgc2Vuc2UgdG8gdGFrZSB0aGlzIGFwcHJvYWNoLCBzaW5jZSwgYXMgYSByZWFkLCB0aGUgaGVscGVyIGNhbm5vdCBiZSByZXNwb25zaWJsZSBmb3IgaW5pdGlhbGl6YXRpb24uXG5cbkknbSBub3cgdHVybmluZyBteSBhdHRlbnRpb24gdG8gdGhlIHNlY29uZCBjaGFuZ2UsIHdoaWNoIGZvY3VzZXMgb24gYGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YWAgLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NjIsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjozNDo1NC4yMDA0NTE1NjJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODQ4MDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjU2MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTI1NjA6XFx0XFx0XFx0fVxcbjEyNTYxOlxcdFxcdH1cXG4xMjU2MjpcXHRcXG4xMjU2MzpcXHRcXHRyZXR1cm4gMDtcXG4xMjU2NDpcXHR9XFxuMTI1NjU6XFx0XFxuMTI1NjY6XFx0aW50IGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YShzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LFxcbjEyNTY3OlxcdFxcdFxcdFxcdCAgICAgczMyIGZ1bmNfaWQsXFxuMTI1Njg6XFx0XFx0XFx0XFx0ICAgICBzMTYgb2Zmc2V0LFxcbjEyNTY5OlxcdFxcdFxcdFxcdCAgICAgc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxcbjEyNTcwOlxcdHtcXG4xMjU3MTpcXHRcXHRzdHJ1Y3QgYnBmX2tmdW5jX21ldGEga2Z1bmM7XFxuMTI1NzI6XFx0XFx0aW50IGVycjtcXG4xMjU3MzpcXHRcXG4xMjU3NDpcXHRcXHRtZW1zZXQobWV0YSwgMCwgc2l6ZW9mKCptZXRhKSk7XFxuMTI1NzU6XFx0XFxuMTI1NzY6XFx0XFx0ZXJyID0gZmV0Y2hfa2Z1bmNfbWV0YShlbnYsIGZ1bmNfaWQsIG9mZnNldCwgXFx1MDAyNmtmdW5jKTtcXG4xMjU3NzpcXHRcXHRpZiAoZXJyKVxcbjEyNTc4OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuMTI1Nzk6XFx0XFxuMTI1ODA6XFx0XFx0bWV0YS1cXHUwMDNlYnRmID0ga2Z1bmMuYnRmO1xcbjEyNTgxOlxcdFxcdG1ldGEtXFx1MDAzZWZ1bmNfaWQgPSBrZnVuYy5pZDtcXG4xMjU4MjpcXHRcXHRtZXRhLVxcdTAwM2VmdW5jX3Byb3RvID0ga2Z1bmMucHJvdG87XFxuMTI1ODM6XFx0XFx0bWV0YS1cXHUwMDNlZnVuY19uYW1lID0ga2Z1bmMubmFtZTtcXG4xMjU4NDpcXHRcXG4xMjU4NTpcXHRcXHRpZiAoIWtmdW5jLmZsYWdzIHx8ICFidGZfa2Z1bmNfaXNfYWxsb3dlZChrZnVuYy5idGYsIGtmdW5jLmlkLCBlbnYtXFx1MDAzZXByb2cpKVxcbjEyNTg2OlxcdFxcdFxcdHJldHVybiAtRUFDQ0VTO1xcbjEyNTg3OlxcdFxcbjEyNTg4OlxcdFxcdG1ldGEtXFx1MDAzZWtmdW5jX2ZsYWdzID0gKmtmdW5jLmZsYWdzO1xcbjEyNTg5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjozNDo1NC4yMDMzMDM3MTJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDE2MzQyNDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEZ1bmN0aW9uYWwgQ2hhbmdlIGluIHRoZSBCUEYgVmVyaWZpZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIGZ1bmN0aW9uYWwgY2hhbmdlIGhlcmUuIFNwZWNpZmljYWxseSwgemVyb2luZyBvdXQgYG1ldGFgICpiZWZvcmUqIGNhbGxpbmcgYGZldGNoX2tmdW5jX21ldGFgLiBUaGF0J3MgaW1wb3J0YW50IGJlY2F1c2UgYGZldGNoX2tmdW5jX21ldGFgIGNvdWxkIHBvdGVudGlhbGx5IHJldHVybiBhbiBlcnJvci4gUHJldmlvdXNseSwgaXQgbG9va3MgbGlrZSBgbWV0YWAgbWlnaHQgaGF2ZSBiZWVuIGxlZnQgdW5pbml0aWFsaXplZCBvciBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQgaWYgdGhlcmUgd2FzIGEgcHJvYmxlbS4gTm93LCBpdCdzIGV4cGxpY2l0bHkgemVyb2VkLCBwcm92aWRpbmcgYSBkZWZpbmVkIHN0YXRlIGluIHRoZSBlcnJvciBjYXNlLiBHb29kLiBUaGF0IGRlZmluaXRlbHkgc291bmRzIGxpa2Ugc29tZXRoaW5nIHRoYXQgZGVzZXJ2ZXMgYSBnb29kIGZ1enppbmcgY2FtcGFpZ24uIEZ1bmN0aW9uYWwgY2hhbmdlID0gZnV6emluZyB0aW1lIVxuXG5MZXQncyBzZWUsIHdoYXQgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIHRvIHRhcmdldD8gR2l2ZW4gdGhlIGNoYW5nZSwgSSdtIHRoaW5raW5nIHRoZSBmb2N1cyBzaG91bGQgYmUgb24gYGNoZWNrX2Z1bmNfYXJnYCwgYGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YWAsIGFuZCBgY2hlY2tfaGVscGVyX2NhbGxgIHNpbmNlIHRoZSBsYXR0ZXIgY2FsbHMgYGNoZWNrX2Z1bmNfYXJnYC4gQWxzbywgSSdsbCBuZWVkIHRvIGxvb2sgYXQgYGNoZWNrX2tmdW5jX2FyZ3NgIGJlY2F1c2UgaXQgKm1pZ2h0KiBjYWxsIGBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFgLCBvciBzb21ldGhpbmcgc2ltaWxhci5cblxuSG1tLCB3YWl0IGEgc2Vjb25kLi4uIGBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFgIGlzIGNhbGxlZCBmcm9tIHdoZXJlIGV4YWN0bHk/IEkgYmV0dGVyIGRvdWJsZS1jaGVjayB0aGUgY2FsbCBncmFwaCB0byBiZSBzdXJlIEkndmUgZ290IHRoZSBjb21wbGV0ZSBwaWN0dXJlLiBOZWVkIHRvIG1ha2Ugc3VyZSBJIGdldCB0aGF0IGNvdmVyZWQgaW4gdGhlIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwMTksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjozNTowMS4yMTk2NDk2NjdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzM0MTc3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTk5MD1zdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNTY1LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjU2NjppbnQgYnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNTY3LVxcdFxcdFxcdCAgICAgczMyIGZ1bmNfaWQsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI3MjU9czY0IGJwZl9rZnVuY19zdGFja19hY2Nlc3NfYnl0ZXMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNuICppbnNuLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzM1LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjczNjpcXHRpZiAoYnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhKGVudiwgaW5zbi1cXHUwMDNlaW1tLCBpbnNuLVxcdTAwM2VvZmYsIFxcdTAwMjZtZXRhKSBcXHUwMDNjIDApXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNzM3LVxcdFxcdHJldHVybiBTNjRfTUlOO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyOTYxPXN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5ODAtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyOTgxOlxcdGVyciA9IGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YShlbnYsIGluc24tXFx1MDAzZWltbSwgaW5zbi1cXHUwMDNlb2ZmLCBcXHUwMDI2bWV0YSk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyOTgyLVxcdGlmIChlcnIgPT0gLUVBQ0NFUyBcXHUwMDI2XFx1MDAyNiBtZXRhLmZ1bmNfbmFtZSlcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNjcyMD1ib29sIGJwZl9nZXRfY2FsbF9zdW1tYXJ5KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqY2FsbCxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNjc0Ny1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTY3NDg6XFx0XFx0ZXJyID0gYnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhKGVudiwgY2FsbC1cXHUwMDNlaW1tLCBjYWxsLVxcdTAwM2VvZmYsIFxcdTAwMjZtZXRhKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTY3NDktXFx0XFx0aWYgKGVyciBcXHUwMDNjIDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjM1OjAxLjQ0Mjk5NzI4MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTYwMTY3MzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIEtlcm5lbCBCUEYgRnVuY3Rpb24gQXJndW1lbnQgTWV0YWRhdGEqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgYGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YWAgaXMgYSBrZXkgZnVuY3Rpb24sIGFuZCBpdCdzIGJlaW5nIGNhbGxlZCBmcm9tIHNldmVyYWwgaW1wb3J0YW50IHBsYWNlczogYGJwZl9rZnVuY19zdGFja19hY2Nlc3NfYnl0ZXNgLCBgY2hlY2tfa2Z1bmNfY2FsbGAsIGFuZCBgYnBmX2dldF9jYWxsX3N1bW1hcnlgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHRoZXJlLlxuXG5NeSBwcmltYXJ5IGZvY3VzIHJpZ2h0IG5vdyBzaG91bGQgYmUgb24gYGNoZWNrX2Z1bmNfYXJnYCBhbmQsIGNydWNpYWxseSwgYGJwZl9mZXRjaF9rZnVuY19hcmdfbWV0YWAgaXRzZWxmLiBUaG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyBJIHJlYWxseSBuZWVkIHRvIGRyaWxsIGRvd24gaW50by5cblxuTm93LCBmcm9tIGEgY29uZmlndXJhdGlvbiBwZXJzcGVjdGl2ZSwgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgdGhlIGJpZyBvbmUsIGJ1dCBJIHNob3VsZCBwcm9iYWJseSBzY2FuIGZvciBhbnkgcmVsYXRlZCBkZXBlbmRlbmNpZXMuIEkgZG9uJ3Qgd2FudCB0byBtaXNzIGFueXRoaW5nLlxuXG5GaW5hbGx5LCBJJ20gY3VyaW91cyBhYm91dCB0aGUgYmxvb20gZmlsdGVyIG1hcCB0eXBlIOKAkyBgQlBGX01BUF9UWVBFX0JMT09NX0ZJTFRFUmAuIElzIGl0cyBmdW5jdGlvbmFsaXR5IGNvbmRpdGlvbmFsIG9uIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnM/IFRpbWUgdG8gaW52ZXN0aWdhdGUgdGhlIHJlbGV2YW50IHNvdXJjZSBjb2RlIOKAkyBwcm9iYWJseSBga2VybmVsL2JwZi9ibG9vbV9maWx0ZXIuY2Agb3Igc29tZXRoaW5nIHNpbWlsYXIuIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgdGhlIGJsb29tIGZpbHRlciBmdW5jdGlvbmFsaXR5IGlzIGVuYWJsZWQgaW4gdGhlIGN1cnJlbnQga2VybmVsIGNvbmZpZy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODA5MCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjozNTowNS42MDMxNjc0OTZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3OTIxOTg1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJCUEZfTUFQX1RZUEVfQkxPT01fRklMVEVSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvc3lzY2FsbC5jPTI1MD1zdGF0aWMgaW50IGJwZl9tYXBfdXBkYXRlX3ZhbHVlKHN0cnVjdCBicGZfbWFwICptYXAsIHN0cnVjdCBmaWxlICptYXBfZmlsZSxcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTI5MC1cXHRcXHQgICBtYXAtXFx1MDAzZW1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9TVEFDSyB8fFxcbmtlcm5lbC9icGYvc3lzY2FsbC5jOjI5MTpcXHRcXHQgICBtYXAtXFx1MDAzZW1hcF90eXBlID09IEJQRl9NQVBfVFlQRV9CTE9PTV9GSUxURVIpIHtcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0yOTItXFx0XFx0ZXJyID0gbWFwLVxcdTAwM2VvcHMtXFx1MDAzZW1hcF9wdXNoX2VsZW0obWFwLCB2YWx1ZSwgZmxhZ3MpO1xcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9MzA4PXN0YXRpYyBpbnQgYnBmX21hcF9jb3B5X3ZhbHVlKHN0cnVjdCBicGZfbWFwICptYXAsIHZvaWQgKmtleSwgdm9pZCAqdmFsdWUsXFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0zMzQtXFx0XFx0ICAgbWFwLVxcdTAwM2VtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfU1RBQ0sgfHxcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzozMzU6XFx0XFx0ICAgbWFwLVxcdTAwM2VtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfQkxPT01fRklMVEVSKSB7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMzM2LVxcdFxcdGVyciA9IG1hcC1cXHUwMDNlb3BzLVxcdTAwM2VtYXBfcGVla19lbGVtKG1hcCwgdmFsdWUpO1xcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9MTM3MD1zdGF0aWMgaW50IG1hcF9jcmVhdGVfYWxsb2ModW5pb24gYnBmX2F0dHIgKmF0dHIsIGJwZnB0cl90IHVhdHRyLCBzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2xvZyAqbG9nLFxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTQwNi1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxNDA3OlxcdGlmIChhdHRyLVxcdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfQkxPT01fRklMVEVSIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTQwOC1cXHQgICAgYXR0ci1cXHUwMDNlbWFwX3R5cGUgIT0gQlBGX01BUF9UWVBFX0FSRU5BIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNDkzLVxcdGNhc2UgQlBGX01BUF9UWVBFX0NHUlBfU1RPUkFHRTpcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYzoxNDk0OlxcdGNhc2UgQlBGX01BUF9UWVBFX0JMT09NX0ZJTFRFUjpcXG5rZXJuZWwvYnBmL3N5c2NhbGwuYy0xNDk1LVxcdGNhc2UgQlBGX01BUF9UWVBFX0xQTV9UUklFOlxcbi0tXFxua2VybmVsL2JwZi9zeXNjYWxsLmM9MTc3ND1zdGF0aWMgaW50IG1hcF9sb29rdXBfZWxlbSh1bmlvbiBicGZfYXR0ciAqYXR0cilcXG4tLVxcbmtlcm5lbC9icGYvc3lzY2FsbC5jLTE4MDctXFxua2VybmVsL2JwZi9zeXNjYWxsLmM6MTgwODpcXHRpZiAobWFwLVxcdTAwM2VtYXBfdHlwZSA9PSBCUEZfTUFQX1RZUEVfQkxPT01fRklMVEVSKSB7XFxua2VybmVsL2JwZi9zeXNjYWxsLmMtMTgwOS1cXHRcXHRpZiAoY29weV9mcm9tX3VzZXIodmFsdWUsIHV2YWx1ZSwgdmFsdWVfc2l6ZSkpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9Nzc2Mz1zdGF0aWMgaW50IHJlc29sdmVfbWFwX2FyZ190eXBlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtNzc4Mi1cXHRcXHRicmVhaztcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6Nzc4MzpcXHRjYXNlIEJQRl9NQVBfVFlQRV9CTE9PTV9GSUxURVI6XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTc3ODQtXFx0XFx0aWYgKG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gQlBGX0ZVTkNfbWFwX3BlZWtfZWxlbSlcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz04Mjg1PXN0YXRpYyBpbnQgY2hlY2tfZnVuY19hcmcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgdTMyIGFyZyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NDMwLVxcdFxcdGlmIChtZXRhLVxcdTAwM2VmdW5jX2lkID09IEJQRl9GVU5DX21hcF9wZWVrX2VsZW0gXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODQzMTpcXHRcXHQgICAgbWV0YS1cXHUwMDNlbWFwLnB0ci1cXHUwMDNlbWFwX3R5cGUgPT0gQlBGX01BUF9UWVBFX0JMT09NX0ZJTFRFUilcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODQzMi1cXHRcXHRcXHRtZXRhLVxcdTAwM2VhcmdfcmF3X21lbS5yZWdubyA9IDA7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9ODU2NT1zdGF0aWMgaW50IGNoZWNrX21hcF9mdW5jX2NvbXBhdGliaWxpdHkoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04Njg3LVxcdFxcdGJyZWFrO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4Njg4OlxcdGNhc2UgQlBGX01BUF9UWVBFX0JMT09NX0ZJTFRFUjpcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODY4OS1cXHRcXHRpZiAoZnVuY19pZCAhPSBCUEZfRlVOQ19tYXBfcGVla19lbGVtIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODc3Ny1cXHRcXHQgICAgbWFwLVxcdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfU1RBQ0sgXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODc3ODpcXHRcXHQgICAgbWFwLVxcdTAwM2VtYXBfdHlwZSAhPSBCUEZfTUFQX1RZUEVfQkxPT01fRklMVEVSKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04Nzc5LVxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDIyOjM1OjA1Ljg4MjM5MzQ2MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQxNzMwMTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSB3ZXJlIG15IG93bjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgQmxvb20gRmlsdGVyIGluIEJQRiBTeXNjYWxsKipcblxuUmlnaHQsIHNvIHRoZSBibG9vbSBmaWx0ZXIgbWFwIGlzIGludGVncmFsIHRvIHRoZSBCUEYgc3lzY2FsbCBpbXBsZW1lbnRhdGlvbi4gVGhhdCdzIGdvb2QgdG8ga25vdywgYW5kIGV4cGVjdGVkLCByZWFsbHkuIEl0IG1ha2VzIHNlbnNlIGl0J3MgY29yZSB0byB0aGUgc3RydWN0dXJlLiBBbmQsIGZyb20gYSBjb25maWd1cmF0aW9uIHBlcnNwZWN0aXZlLCBJJ20gcHJldHR5IHN1cmUgYENPTkZJR19CUEZfU1lTQ0FMTGAgaXMgYWxsIHRoYXQncyB0cnVseSBuZWVkZWQgdG8gZW5hYmxlIGl0LiBCdXQsIGdpdmVuIG15IHRob3JvdWdobmVzcywgSSBzaG91bGQgZG91YmxlIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgKmFueSogb3RoZXIgY29uZmlnIG9wdGlvbnMgdGhhdCBtaWdodCBpbmZsdWVuY2Ugb3IgaW50ZXJhY3Qgd2l0aCB0aGlzIHNwZWNpZmljIGFzcGVjdC4gSSBkb24ndCB3YW50IHRvIG1pc3MgYW55dGhpbmcgdGhhdCBjb3VsZCBpbXBhY3QgaXRzIHBlcmZvcm1hbmNlIG9yIGJlaGF2aW9yIGxhdGVyIG9uIGRvd24gdGhlIGxpbmUuIEl0J3MgYmVzdCB0byBiZSBjb21wbGV0ZWx5IHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2NTksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjozNTowOS42MjQxMjY3NjNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMDM2MTYxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfQlBGX1NZU0NBTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9NYWtlZmlsZT03PUNGTEFHU19jb3JlLm8gKz0gLVduby1vdmVycmlkZS1pbml0ICQoY2ZsYWdzLW5vZ2NzZS15eSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlLTgtXFxua2VybmVsL2JwZi9NYWtlZmlsZTo5Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gc3lzY2FsbC5vIHZlcmlmaWVyLm8gaW5vZGUubyBoZWxwZXJzLm8gdG51bS5vIGNudW0ubyBsb2cubyB0b2tlbi5vIGxpdmVuZXNzLm8gY29uc3RfZm9sZC5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl9pdGVyLm8gbWFwX2l0ZXIubyB0YXNrX2l0ZXIubyBwcm9nX2l0ZXIubyBsaW5rX2l0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBoYXNodGFiLm8gYXJyYXltYXAubyBwZXJjcHVfZnJlZWxpc3QubyBicGZfbHJ1X2xpc3QubyBscG1fdHJpZS5vIG1hcF9pbl9tYXAubyBibG9vbV9maWx0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBsb2NhbF9zdG9yYWdlLm8gcXVldWVfc3RhY2tfbWFwcy5vIHJpbmdidWYubyBicGZfaW5zbl9hcnJheS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl9sb2NhbF9zdG9yYWdlLm8gYnBmX3Rhc2tfc3RvcmFnZS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGZpeHVwcy5vIGNmZy5vIHN0YXRlcy5vIGJhY2t0cmFjay5vIGNoZWNrX2J0Zi5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0xNS1vYmotJHtDT05GSUdfQlBGX0xTTX1cXHQgICs9IGJwZl9pbm9kZV9zdG9yYWdlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gZGlzYXNtLm8gbXByb2cub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTctb2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IHRyYW1wb2xpbmUub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTg6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBidGYubyBtZW1hbGxvYy5vIHJxc3BpbmxvY2subyBzdHJlYW0ub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMTktaWZlcSAoJChDT05GSUdfTU1VKSQoQ09ORklHXzY0QklUKSx5eSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYXJlbmEubyByYW5nZV90cmVlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTIxLWVuZGlmXFxuLS1cXG5rZXJuZWwvYnBmL01ha2VmaWxlPTIzPWlmZXEgKCQoQ09ORklHX05FVCkseSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gZGV2bWFwLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI1Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gY3B1bWFwLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjI2Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gb2ZmbG9hZC5vXFxua2VybmVsL2JwZi9NYWtlZmlsZToyNzpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IG5ldF9uYW1lc3BhY2Uub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6Mjg6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSB0Y3gub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtMjktZW5kaWZcXG5rZXJuZWwvYnBmL01ha2VmaWxlPTMwPWlmZXEgKCQoQ09ORklHX1BFUkZfRVZFTlRTKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6MzE6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBzdGFja21hcC5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0zMi1lbmRpZlxcbmtlcm5lbC9icGYvTWFrZWZpbGU9MzM9aWZlcSAoJChDT05GSUdfQ0dST1VQUykseSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gY2dyb3VwX2l0ZXIubyBicGZfY2dycF9zdG9yYWdlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTM1LWVuZGlmXFxuLS1cXG5rZXJuZWwvYnBmL01ha2VmaWxlPTM3PWlmZXEgKCQoQ09ORklHX0lORVQpLHkpXFxua2VybmVsL2JwZi9NYWtlZmlsZTozODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHJldXNlcG9ydF9hcnJheS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0zOS1lbmRpZlxcbi0tXFxua2VybmVsL2JwZi9NYWtlZmlsZT00Mz1pZmVxICgkKENPTkZJR19CUEZfSklUKSx5KVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6NDQ6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBicGZfc3RydWN0X29wcy5vXFxua2VybmVsL2JwZi9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGNwdW1hc2sub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtNDYtIyBicGZfbHNtX3Byb3RvLm8gbXVzdCBwcmVjZWRlIGJwZl9sc20uby4gVGhlIGN1cnJlbnQgcGFob2xlIGxvZ2ljXFxuLS1cXG5rZXJuZWwvYnBmL01ha2VmaWxlPTU4PWlmbmVxICgkKENPTkZJR19DUllQVE8pLClcXG5rZXJuZWwvYnBmL01ha2VmaWxlOjU5Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gY3J5cHRvLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTYwLWVuZGlmXFxua2VybmVsL2JwZi9NYWtlZmlsZT02MT1vYmotJChDT05GSUdfQlBGX1BSRUxPQUQpICs9IHByZWxvYWQvXFxua2VybmVsL2JwZi9NYWtlZmlsZS02Mi1cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjYzOm9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gcmVsb19jb3JlLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gYnRmX2l0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6NjU6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBidGZfcmVsb2NhdGUub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6NjY6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBrbWVtX2NhY2hlX2l0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGUtNjctaWZlcSAoJChDT05GSUdfRE1BX1NIQVJFRF9CVUZGRVIpLHkpXFxua2VybmVsL2JwZi9NYWtlZmlsZTo2ODpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGRtYWJ1Zl9pdGVyLm9cXG5rZXJuZWwvYnBmL01ha2VmaWxlLTY5LWVuZGlmXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz0xMDA9c3RydWN0IGJwZl9wcm9nICpicGZfcHJvZ19hbGxvY19ub19zdGF0cyh1bnNpZ25lZCBpbnQgc2l6ZSwgZ2ZwX3QgZ2ZwX2V4dHJhX2ZsYWdzKVxcbi0tXFxua2VybmVsL2JwZi9jb3JlLmMtMTQzLVxcbmtlcm5lbC9icGYvY29yZS5jOjE0NDojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9jb3JlLmMtMTQ1LVxcdGJwZl9wcm9nX3N0cmVhbV9pbml0KGZwKTtcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTI0NjE9RVZBTDQoUFJPR19OQU1FX0xJU1QsIDQxNiwgNDQ4LCA0ODAsIDUxMilcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTI0NjQtXFxua2VybmVsL2JwZi9jb3JlLmM6MjQ2NTojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9jb3JlLmMtMjQ2Ni1pbnQgYnBmX3BhdGNoX2NhbGxfYXJncyhzdHJ1Y3QgYnBmX2luc24gKmluc24sIHUzMiBzdGFja19kZXB0aClcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTMwNDU9dm9pZCBfX2JwZl9mcmVlX3VzZWRfYnRmcyhzdHJ1Y3QgYnRmX21vZF9wYWlyICp1c2VkX2J0ZnMsIHUzMiBsZW4pXFxua2VybmVsL2JwZi9jb3JlLmMtMzA0Ni17XFxua2VybmVsL2JwZi9jb3JlLmM6MzA0NzojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9jb3JlLmMtMzA0OC1cXHRzdHJ1Y3QgYnRmX21vZF9wYWlyICpidGZfbW9kO1xcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9MzA2Nj1zdGF0aWMgdm9pZCBicGZfcHJvZ19mcmVlX2RlZmVycmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTMwNzEtXFx0YXV4ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBicGZfcHJvZ19hdXgsIHdvcmspO1xcbmtlcm5lbC9icGYvY29yZS5jOjMwNzI6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmtlcm5lbC9icGYvY29yZS5jLTMwNzMtXFx0YnBmX2ZyZWVfa2Z1bmNfYnRmX3RhYihhdXgtXFx1MDAzZWtmdW5jX2J0Zl90YWIpO1xcbi0tXFxua2VybmVsL2JwZi9jb3JlLmM9MzM4OD1zdGF0aWMgbm9pbmxpbmUgdm9pZCBicGZfcHJvZ19yZXBvcnRfbWF5X2dvdG9fdmlvbGF0aW9uKHZvaWQpXFxua2VybmVsL2JwZi9jb3JlLmMtMzM4OS17XFxua2VybmVsL2JwZi9jb3JlLmM6MzM5MDojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXFxua2VybmVsL2JwZi9jb3JlLmMtMzM5MS1cXHRzdHJ1Y3QgYnBmX3N0cmVhbV9zdGFnZSBzcztcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTM0Mjg9X193ZWFrIHU2NCBicGZfYXJlbmFfZ2V0X2tlcm5fdm1fc3RhcnQoc3RydWN0IGJwZl9hcmVuYSAqYXJlbmEpXFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYy0zNDMyLVxcbmtlcm5lbC9icGYvY29yZS5jOjM0MzM6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmtlcm5lbC9icGYvY29yZS5jLTM0MzQtX193ZWFrIGJvb2wgYnBmX2FyZW5hX2hhbmRsZV9wYWdlX2ZhdWx0KHVuc2lnbmVkIGxvbmcgYWRkciwgYm9vbCBpc193cml0ZSxcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jPTM0NTk9RVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MX0dQTCh4ZHBfYnVsa190eCk7XFxua2VybmVsL2JwZi9jb3JlLmMtMzQ2MC1cXG5rZXJuZWwvYnBmL2NvcmUuYzozNDYxOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5rZXJuZWwvYnBmL2NvcmUuYy0zNDYyLVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM9MTQ2Nz1pbnQgX193ZWFrIGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKm0sIHUzMiBmbGFncyxcXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jLTE0NzQtICAgIGRlZmluZWQoQ09ORklHX0hBVkVfU0lOR0xFX0ZUUkFDRV9ESVJFQ1RfT1BTKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmM6MTQ3NTogICAgZGVmaW5lZChDT05GSUdfQlBGX1NZU0NBTEwpXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTQ3Ni1cXG4tLVxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jPTE3MTI9aW50IGJwZl90cmFtcG9saW5lX211bHRpX2RldGFjaChzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHN0cnVjdCBicGZfdHJhY2luZ19tdWx0aV9saW5rICpsaW5rKVxcbi0tXFxua2VybmVsL2JwZi90cmFtcG9saW5lLmMtMTc0OC1cXHQgIENPTkZJR19IQVZFX1NJTkdMRV9GVFJBQ0VfRElSRUNUX09QUyBcXHUwMDI2XFx1MDAyNlxcbmtlcm5lbC9icGYvdHJhbXBvbGluZS5jOjE3NDk6XFx0ICBDT05GSUdfQlBGX1NZU0NBTEwgKi9cXG5rZXJuZWwvYnBmL3RyYW1wb2xpbmUuYy0xNzUwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjozNTowOS43NDQ0OTYyODFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYyOTkyMjI1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBGdXp6aW5nIFN0cmF0ZWd5OiBCUEYgVmVyaWZpZXIgRml4ZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBjb25maWdzLCBzcGVjaWZpY2FsbHkgYEJQRl9TWVNDQUxMYCwgYW5kIEkgbmVlZCB0byBzdW1tYXJpemUgdGhpcyBwYXRjaC4gTGV0J3Mgc2VlLi4uIGl0IGxvb2tzIGxpa2UgdGhlIGtleSBjaGFuZ2VzIGFyZSBpbiB0aGUgQlBGIHZlcmlmaWVyLiBUaGUgZmlyc3Qgb25lIGRpc2FibGVzIHJhdyBtb2RlIGZvciBgYnBmX21hcF9wZWVrX2VsZW1gIG9uIGJsb29tIGZpbHRlcnMgdG8gYXZvaWQgdW5pbml0aWFsaXplZCBtZW1vcnksIGFuZCB0aGUgc2Vjb25kIHplcm9lcyB0aGUgYG1ldGFgIHN0cnVjdCBpbiBgYnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhYCBiZWZvcmUgY2FsbGluZyBgZmV0Y2hfa2Z1bmNfbWV0YWAsIHdoaWNoIHNob3VsZCBhbHNvIGZpeCBhIHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSBpZiB0aGUgZmV0Y2ggZmFpbHMuIEZ1bmN0aW9uYWxseSBzcGVha2luZywgYm90aCBvZiB0aGVzZSBhcmUgdmVyaWZpZXIgY2hhbmdlcywgc28gdGhleSdyZSBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuXG5cblRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIGlzIHNldCB0byB0cnVlLCBzbyB0aGF0J3MgZ29vZC5cblxuTXkgYEZvY3VzU3ltYm9sc2AgYXJlIHNldCB0byBgY2hlY2tfZnVuY19hcmdgIGFuZCBgYnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhYCwgd2hpY2ggZmVlbHMgcmlnaHQuIEknbSB0aGlua2luZyBhYm91dCB3aGV0aGVyIHRob3NlIHN5bWJvbHMgYXJlIHN1aXRhYmxlIHRhcmdldHMuIGBjaGVja19mdW5jX2FyZ2AgaXMgdXNlZCBmb3IgcHJldHR5IG11Y2ggZXZlcnkgaGVscGVyIGNhbGwgYXJndW1lbnQgaW4gQlBGIHByb2dyYW1zLCB3aGljaCBpcyBhIGhvdCBwYXRoIGR1cmluZyB2ZXJpZmljYXRpb24sIGFuZCB0aGF0J3MgZXhhY3RseSB3aGF0IEknbSBsb29raW5nIGZvciAtIGZ1enppbmcgdGhlIHZlcmlmaWVyIGlzIGEgY3JpdGljYWwgdGFyZ2V0LiBgYnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhYCBhbHNvIHNlZW1zIGxpa2UgYSBnb29kIHRhcmdldCBhcyBpdCdzIHBhcnQgb2YgdmVyaWZ5aW5nIGtmdW5jIGNhbGxzLlxuXG5Ob3csIGEgcXVpY2sgY2hlY2sgb24gYGNoZWNrX2Z1bmNfYXJnYCAtIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIGFuZCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQncyBva2F5LiBTeXprYWxsZXIgZ2VuZXJhbGx5IHN1cHBvcnRzIHN0YXRpYyBmdW5jdGlvbnMgYXMgZm9jdXMgc3ltYm9scy4gU2luY2UgdGhlIGZvY3VzIGlzIG9uIGEgcGFydGljdWxhciBhcmVhIGFuZCBzaW5jZSBpdCdzIG5vdCBpbmxpbmVkLCBJIHRoaW5rIEknbSBnb29kLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjMwNiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjozNToxNS4zNzQ0MjExNzRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDUxNzY3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjaGVja19mdW5jX2FyZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTg1Nz1zdGF0aWMgYm9vbCBpc19keW5wdHJfcmVnX3ZhbGlkX2luaXQoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NjQtXFx0ICogQ09OU1RfUFRSX1RPX0RZTlBUUiBhbHJlYWR5IGhhcyBmaXhlZCBhbmQgdmFyX29mZiBhcyAwIGR1ZSB0b1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4NjU6XFx0ICogY2hlY2tfZnVuY19hcmdfcmVnX29mZidzIGxvZ2ljLCBzbyB3ZSBkb24ndCBuZWVkIHRvIGNoZWNrIGl0c1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04NjYtXFx0ICogb2Zmc2V0IGFuZCBhbGlnbm1lbnQuXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9NDMzNz1zdGF0aWMgaW50IG1hcF9rcHRyX21hdGNoX3R5cGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00MzkyLVxcdCAqXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjQzOTM6XFx0ICogSW4gdGhlIGtwdHJfcmVmIGNhc2UsIGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYgYWxyZWFkeSBlbnN1cmVzIHJlZy1cXHUwMDNldmFyX29mZlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy00Mzk0LVxcdCAqIGlzIHplcm8uIFdlIG11c3QgYWxzbyBlbnN1cmUgdGhhdCBidGZfc3RydWN0X2lkc19tYXRjaCBkb2VzIG5vdCB3YWxrXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9ODA2NT1yZWdfZmluZF9maWVsZF9vZmZzZXQoY29uc3Qgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgczMyIG9mZiwgdTMyIGZpZWxkcylcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04MDgwLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo4MDgxOnN0YXRpYyBpbnQgX19jaGVja19mdW5jX2FyZ19yZWdfb2ZmKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTgwODItXFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODE2MC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6ODE2MTpzdGF0aWMgaW50IGNoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODE2Mi1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODE2NC17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjgxNjU6XFx0cmV0dXJuIF9fY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIGFyZ190eXBlLCB0cnVlKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODE2Ni19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9ODI4Mz1zdGF0aWMgYm9vbCBjYW5fZWxpZGVfdmFsdWVfbnVsbG5lc3MoY29uc3Qgc3RydWN0IGJwZl9tYXAgKm1hcCk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTgyODQtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjgyODU6c3RhdGljIGludCBjaGVja19mdW5jX2FyZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCB1MzIgYXJnLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy04Mjg2LVxcdFxcdFxcdCAgc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTgzNDEtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjgzNDI6XFx0ZXJyID0gY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIGFyZ190eXBlKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtODM0My1cXHRpZiAoZXJyKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTkxNDM9c3RhdGljIGludCBzZXR1cF9mdW5jX2VudHJ5KHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIGludCBzdWJwcm9nLCBpbnQgY2FsbHNpdGUsXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTE5MC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6OTE5MTpzdGF0aWMgaW50IGJ0Zl9jaGVja19mdW5jX2FyZ19tYXRjaChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgc3VicHJvZyxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTE5Mi1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGJ0ZiAqYnRmLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTkyMzUtXFx0XFx0fSBlbHNlIGlmIChhcmctXFx1MDAzZWFyZ190eXBlID09IEFSR19QVFJfVE9fQ1RYKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjkyMzY6XFx0XFx0XFx0cmV0ID0gY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIEFSR19QVFJfVE9fQ1RYKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTIzNy1cXHRcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MjQ3LVxcdFxcdH0gZWxzZSBpZiAoYmFzZV90eXBlKGFyZy1cXHUwMDNlYXJnX3R5cGUpID09IEFSR19QVFJfVE9fTUVNKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjkyNDg6XFx0XFx0XFx0cmV0ID0gY2hlY2tfZnVuY19hcmdfcmVnX29mZihlbnYsIHJlZywgYXJnbm8sIEFSR19ET05UQ0FSRSk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTkyNDktXFx0XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTI3MS1cXHRcXHR9IGVsc2UgaWYgKGFyZy1cXHUwMDNlYXJnX3R5cGUgPT0gQVJHX1BUUl9UT19EWU5QVFIpIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6OTI3MjpcXHRcXHRcXHRyZXQgPSBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgQVJHX1BUUl9UT19EWU5QVFIpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MjczLVxcdFxcdFxcdGlmIChyZXQpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtOTI4Ny1cXHRcXHRcXHRlcnIgPSBjaGVja19yZWdfdHlwZShlbnYsIHJlZywgYXJnbm8sIGFyZy1cXHUwMDNlYXJnX3R5cGUsIFxcdTAwMjZhcmctXFx1MDAzZWJ0Zl9pZCwgXFx1MDAyNm1ldGEpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5Mjg4OlxcdFxcdFxcdGVyciA9IGVyciA/OiBjaGVja19mdW5jX2FyZ19yZWdfb2ZmKGVudiwgcmVnLCBhcmdubywgYXJnLVxcdTAwM2VhcmdfdHlwZSk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTkyODktXFx0XFx0XFx0aWYgKGVycilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz05MzA4PXN0YXRpYyBpbnQgYnRmX2NoZWNrX3N1YnByb2dfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgc3VicHJvZyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy05MzI1LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzo5MzI2OlxcdGVyciA9IGJ0Zl9jaGVja19mdW5jX2FyZ19tYXRjaChlbnYsIHN1YnByb2csIGJ0ZiwgcmVncyk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTkzMjctXFx0LyogQ29tcGlsZXIgb3B0aW1pemF0aW9ucyBjYW4gcmVtb3ZlIGFyZ3VtZW50cyBmcm9tIHN0YXRpYyBmdW5jdGlvbnNcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMDIzMT1zdGF0aWMgaW50IGNoZWNrX2hlbHBlcl9jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMDI5Ny1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTUFYX0JQRl9GVU5DX1JFR19BUkdTOyBpKyspIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTAyOTg6XFx0XFx0ZXJyID0gY2hlY2tfZnVuY19hcmcoZW52LCBpLCBcXHUwMDI2bWV0YSwgZm4sIGluc25faWR4KTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTAyOTktXFx0XFx0aWYgKGVycilcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTk5MD1zdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjEwLVxcdFxcdFxcdGFyZ190eXBlIHw9IE9CSl9SRUxFQVNFO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjIxMTpcXHRcXHRyZXQgPSBfX2NoZWNrX2Z1bmNfYXJnX3JlZ19vZmYoZW52LCByZWcsIGFyZ25vLCBhcmdfdHlwZSxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIyMTItXFx0XFx0XFx0XFx0XFx0ICAgICAgIGJ0Zl9pZF9maXhlZF9vZmZfb2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjozNToxNS40Nzg5NDU0MzJaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY2Nzc0MDQzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nOlxuXG4qKkFuYWx5emluZyBGdW5jdGlvbiBDYWxscyBhbmQgU2NvcGUqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoYXQgYGNoZWNrX2Z1bmNfYXJnYCBmdW5jdGlvbj8gWWVhaCwgaXQncyBwcmV0dHkgaGVmdHkuIENvbnNpZGVyaW5nIGl0cyBzaXplLCB0aGUgY29tcGlsZXIgcHJvYmFibHkgaXNuJ3QgZ29pbmcgdG8gYmUgaW5saW5pbmcgaXQuIFdlJ3JlIGxvb2tpbmcgYXQgYSBmdW5jdGlvbiBjYWxsIG92ZXJoZWFkIHRoZXJlLCB3aGljaCBjb3VsZCBiZSBpbXBvcnRhbnQgZm9yIHBlcmZvcm1hbmNlIGluIGEgdGlnaHQgbG9vcC5cblxuTm93LCB0aGF0IGBicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFgIGZ1bmN0aW9uLi4uIGl0J3MgZWl0aGVyIGV4cG9ydGVkIG9yLCBhdCB0aGUgdmVyeSBsZWFzdCwgbm90IGRlY2xhcmVkIHN0YXRpYy4gVGhhdCBpbXBsaWVzIGl0J3MgYWNjZXNzaWJsZSBmcm9tIG90aGVyIHBhcnRzIG9mIHRoZSBjb2RlLCBwb3RlbnRpYWxseSBldmVuIG90aGVyIG1vZHVsZXMuIFNvIGl0cyB2aXNpYmlsaXR5IGlzIHNvbWV0aGluZyB3ZSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgYXMgb3RoZXIgYXJlYXMgY291bGQgcG90ZW50aWFsbHkgcmVseSBvbiwgb3IgaW50ZXJmZXJlIHdpdGggaXRzIGZ1bmN0aW9uYWxpdHkuXG5cbkJhc2VkIG9uIHRoYXQgYW5hbHlzaXMsIEknbGwgZ28gYWhlYWQgYW5kIHNldCB0aGUgZXhwZWN0ZWQgb3V0Y29tZXMgb2YgdGhlIGN1cnJlbnQgb3BlcmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDgyMiwiT3V0cHV0VG9rZW5zIjoxNTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQyMjozNToxOS4xNDY2ODgzNjZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzM0MDE5OTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNoZWNrX2Z1bmNfYXJnXCIsXG4gICAgXCJicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGRpc2FibGUgcmF3IG1vZGUgZm9yIGJwZl9tYXBfcGVla19lbGVtKCkgb24gYmxvb20gZmlsdGVycywgcHJldmVudGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSBmcm9tIGJlaW5nIHBhc3NlZCB0byB0aGUgaGVscGVyLiBJdCBhbHNvIHplcm9lcyB0aGUgbWV0YSBzdHJ1Y3QgaW4gYnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhKCkgYmVmb3JlIGNhbGxpbmcgZmV0Y2hfa2Z1bmNfbWV0YSgpLCBmaXhpbmcgYSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgd2hlbiB0aGUgZmV0Y2ggZmFpbHMuIEJvdGggYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgQlBGIHZlcmlmaWVyIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNoZWNrX2Z1bmNfYXJnXCIsXG4gICAgXCJicGZfZmV0Y2hfa2Z1bmNfYXJnX21ldGFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIHZlcmlmaWVyIHRvIGRpc2FibGUgcmF3IG1vZGUgZm9yIGJwZl9tYXBfcGVla19lbGVtKCkgb24gYmxvb20gZmlsdGVycywgcHJldmVudGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSBmcm9tIGJlaW5nIHBhc3NlZCB0byB0aGUgaGVscGVyLiBJdCBhbHNvIHplcm9lcyB0aGUgbWV0YSBzdHJ1Y3QgaW4gYnBmX2ZldGNoX2tmdW5jX2FyZ19tZXRhKCkgYmVmb3JlIGNhbGxpbmcgZmV0Y2hfa2Z1bmNfbWV0YSgpLCBmaXhpbmcgYSBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgd2hlbiB0aGUgZmV0Y2ggZmFpbHMuIEJvdGggYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgQlBGIHZlcmlmaWVyIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflownvfqs[1] Phase: Succeeded StartedAt: 2026-07-15 22:35:32 +0000 UTC FinishedAt: 2026-07-15 22:35:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflownvfqs[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-15 22:35:32 +0000 UTC FinishedAt: 2026-07-15 22:35:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflownvfqs[2] Phase: Succeeded StartedAt: 2026-07-15 22:35:32 +0000 UTC FinishedAt: 2026-07-16 03:28:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-15 22:35:32 +0000 UTC FinishedAt: 2026-07-16 03:28:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-15 22:35:32 +0000 UTC FinishedAt: 2026-07-15 22:36:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-15 22:35:32 +0000 UTC FinishedAt: 2026-07-15 22:36:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflownvfqs/series-workflownvfqs-convert-artifact-702217377/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-15 22:36:32 +0000 UTC FinishedAt: 2026-07-15 23:32:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-15 22:36:32 +0000 UTC FinishedAt: 2026-07-15 23:32:02 +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:*86d2b015-68c1-449e-89b6-c45fd956b5e0,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-workflownvfqs/series-workflownvfqs-convert-artifact-702217377/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": "7e0fe3f2-0b6c-4274-b39b-5752d0bc7d3f", "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-workflownvfqs/series-workflownvfqs-build-action-173790159/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-15 22:36:32 +0000 UTC FinishedAt: 2026-07-15 23:31:51 +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:*86d2b015-68c1-449e-89b6-c45fd956b5e0,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-workflownvfqs/series-workflownvfqs-convert-artifact-702217377/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": "7e0fe3f2-0b6c-4274-b39b-5752d0bc7d3f", "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-workflownvfqs/series-workflownvfqs-build-action-173790159/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-15 23:32:02 +0000 UTC FinishedAt: 2026-07-15 23:32:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-15 23:32:02 +0000 UTC FinishedAt: 2026-07-15 23:32:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-15 23:32:02 +0000 UTC FinishedAt: 2026-07-15 23:32:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-15 23:32:02 +0000 UTC FinishedAt: 2026-07-15 23:32:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflownvfqs/series-workflownvfqs-convert-artifact-942253812/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-15 23:32:15 +0000 UTC FinishedAt: 2026-07-15 23:34:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-15 23:32:15 +0000 UTC FinishedAt: 2026-07-15 23:34:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7e0fe3f2-0b6c-4274-b39b-5752d0bc7d3f,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-workflownvfqs/series-workflownvfqs-build-action-173790159/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-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-15 23:34:24 +0000 UTC FinishedAt: 2026-07-15 23:34:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-15 23:34:24 +0000 UTC FinishedAt: 2026-07-15 23:34:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-15 23:34:24 +0000 UTC FinishedAt: 2026-07-16 00:24:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-15 23:34:24 +0000 UTC FinishedAt: 2026-07-16 00:24:11 +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:*86d2b015-68c1-449e-89b6-c45fd956b5e0,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-workflownvfqs/series-workflownvfqs-convert-artifact-942253812/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": "3d8b9ba6-56d8-4e98-9922-4dbb57dba31d", "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-workflownvfqs/series-workflownvfqs-build-action-3966294976/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-15 23:34:24 +0000 UTC FinishedAt: 2026-07-16 00:24:01 +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:*86d2b015-68c1-449e-89b6-c45fd956b5e0,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-workflownvfqs/series-workflownvfqs-convert-artifact-942253812/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": "3d8b9ba6-56d8-4e98-9922-4dbb57dba31d", "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-workflownvfqs/series-workflownvfqs-build-action-3966294976/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-16 00:24:11 +0000 UTC FinishedAt: 2026-07-16 00:24:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-16 00:24:11 +0000 UTC FinishedAt: 2026-07-16 00:24:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-16 00:24:11 +0000 UTC FinishedAt: 2026-07-16 00:26:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-16 00:24:11 +0000 UTC FinishedAt: 2026-07-16 00:25:59 +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:*3d8b9ba6-56d8-4e98-9922-4dbb57dba31d,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-workflownvfqs/series-workflownvfqs-build-action-3966294976/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-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-16 00:26:08 +0000 UTC FinishedAt: 2026-07-16 03:28:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-16 00:26:08 +0000 UTC FinishedAt: 2026-07-16 03:28:58 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"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:*7e0fe3f2-0b6c-4274-b39b-5752d0bc7d3f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3d8b9ba6-56d8-4e98-9922-4dbb57dba31d,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-workflownvfqs/series-workflownvfqs-build-action-173790159/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-workflownvfqs/series-workflownvfqs-build-action-3966294976/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-16 00:26:08 +0000 UTC FinishedAt: 2026-07-16 00:26:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-16 00:26:08 +0000 UTC FinishedAt: 2026-07-16 00:26:17 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"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-workflownvfqs/series-workflownvfqs-convert-artifact-342595869/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-16 00:26:08 +0000 UTC FinishedAt: 2026-07-16 00:26:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-16 00:26:08 +0000 UTC FinishedAt: 2026-07-16 00:26:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-16 00:26:08 +0000 UTC FinishedAt: 2026-07-16 00:26:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-16 00:26:29 +0000 UTC FinishedAt: 2026-07-16 03:28:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflownvfqs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["check_func_arg","bpf_fetch_kfunc_arg_meta"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d1f4b56417a3dc1a0600f960b14f46bd25eda89d","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"bb4cf268-ec03-473b-a48b-e66b52810129","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-16 00:26:29 +0000 UTC FinishedAt: 2026-07-16 03:28:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7e0fe3f2-0b6c-4274-b39b-5752d0bc7d3f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3d8b9ba6-56d8-4e98-9922-4dbb57dba31d,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-workflownvfqs/series-workflownvfqs-build-action-173790159/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-workflownvfqs/series-workflownvfqs-build-action-3966294976/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-workflownvfqs/series-workflownvfqs-convert-artifact-342595869/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,}