Name: series-workfloww7mtd Phase: Succeeded StartedAt: 2026-06-20 00:38:44 +0000 UTC FinishedAt: 2026-06-20 04:39:30 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7mtd[0] Phase: Succeeded StartedAt: 2026-06-20 00:38:44 +0000 UTC FinishedAt: 2026-06-20 00:48:00 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7mtd[0].run-triage Phase: Succeeded StartedAt: 2026-06-20 00:38:44 +0000 UTC FinishedAt: 2026-06-20 00:48:00 +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": "4549871118cf616eecdd2d939f78e3b9e1dddc48", "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": "4549871118cf616eecdd2d939f78e3b9e1dddc48", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "ed4c90c5-b637-4c02-8cff-7141aeca235f" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "bpf_iter_tcp_established_batch", "bpf_iter_tcp_batch" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDAwOjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoJiMzNDssCiAgICAmIzM0O2JwZl9pdGVyX3RjcF9iYXRjaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIFRDUCBpdGVyYXRvciBsb2dpYyB0byBzYWZlbHkgaGFuZGxlIHNvY2tldHMgd2l0aCB6ZXJvIHJlZmNvdW50IGFuZCBjb3JyZWN0bHkgc2tpcCBlbXB0eSBidWNrZXRzIGR1cmluZyBiYXRjaGluZy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBpdGVyYXRvcnMgZm9yIFRDUCBzb2NrZXRzKSB0aGF0IGZpeCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgbG9naWMgYnVncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAwMDo0NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDY3OWY0ZmUxZmU5ZWExYTllNTM5N2YxOTc1OGYxYjAzYjJhMDI2ZWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1biAyMCAwMDo0NToxMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaXB2NC5jIGIvbmV0L2lwdjQvdGNwX2lwdjQuY1xuaW5kZXggZmRjODExNTBmZjZjZjkuLjkyMzQyZGNjNjg5MmFmIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdGNwX2lwdjQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX2lwdjQuY1xuQEAgLTMwNzQsMjUgJiM0MzszMDc0LDI1IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxLFxuIHtcbiBcdHN0cnVjdCBicGZfdGNwX2l0ZXJfc3RhdGUgKml0ZXIgPSBzZXEtXHUwMDNlcHJpdmF0ZTtcbiBcdHN0cnVjdCBobGlzdF9udWxsc19ub2RlICpub2RlO1xuLVx0dW5zaWduZWQgaW50IGV4cGVjdGVkID0gMTtcbi1cdHN0cnVjdCBzb2NrICpzaztcbi1cbi1cdHNvY2tfaG9sZCgqc3RhcnRfc2spO1xuLVx0aXRlci1cdTAwM2ViYXRjaFtpdGVyLVx1MDAzZWVuZF9zayYjNDM7JiM0MztdLnNrID0gKnN0YXJ0X3NrO1xuJiM0MztcdHVuc2lnbmVkIGludCBleHBlY3RlZCA9IDA7XG4mIzQzO1x0c3RydWN0IHNvY2sgKnNrID0gKnN0YXJ0X3NrO1xuIFxuLVx0c2sgPSBza19udWxsc19uZXh0KCpzdGFydF9zayk7XG4gXHQqc3RhcnRfc2sgPSBOVUxMO1xuIFx0c2tfbnVsbHNfZm9yX2VhY2hfZnJvbShzaywgbm9kZSkge1xuLVx0XHRpZiAoc2VxX3NrX21hdGNoKHNlcSwgc2spKSB7XG4tXHRcdFx0aWYgKGl0ZXItXHUwMDNlZW5kX3NrIFx1MDAzYyBpdGVyLVx1MDAzZW1heF9zaykge1xuLVx0XHRcdFx0c29ja19ob2xkKHNrKTtcbi1cdFx0XHRcdGl0ZXItXHUwMDNlYmF0Y2hbaXRlci1cdTAwM2VlbmRfc2smIzQzOyYjNDM7XS5zayA9IHNrO1xuLVx0XHRcdH0gZWxzZSBpZiAoISpzdGFydF9zaykge1xuLVx0XHRcdFx0LyogUmVtZW1iZXIgd2hlcmUgd2UgbGVmdCBvZmYuICovXG4tXHRcdFx0XHQqc3RhcnRfc2sgPSBzaztcbi1cdFx0XHR9XG4tXHRcdFx0ZXhwZWN0ZWQmIzQzOyYjNDM7O1xuJiM0MztcdFx0aWYgKCFzZXFfc2tfbWF0Y2goc2VxLCBzaykpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0aWYgKGl0ZXItXHUwMDNlZW5kX3NrIFx1MDAzYyBpdGVyLVx1MDAzZW1heF9zaykge1xuJiM0MztcdFx0XHQvKiByZXFza19xdWV1ZV9oYXNoX3JlcSgpIGluc2VydHMgd2l0aCBza19yZWZjbnQgPT0gMFxuJiM0MztcdFx0XHQgKiBhbmQgcmVmY291bnRfc2V0KClzIGl0IGFmdGVyIHRoZSBidWNrZXQgbG9jayBkcm9wcy5cbiYjNDM7XHRcdFx0ICovXG4mIzQzO1x0XHRcdGlmICh1bmxpa2VseSghcmVmY291bnRfaW5jX25vdF96ZXJvKFx1MDAyNnNrLVx1MDAzZXNrX3JlZmNudCkpKVxuJiM0MztcdFx0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0XHRpdGVyLVx1MDAzZWJhdGNoW2l0ZXItXHUwMDNlZW5kX3NrJiM0MzsmIzQzO10uc2sgPSBzaztcbiYjNDM7XHRcdH0gZWxzZSBpZiAoISpzdGFydF9zaykge1xuJiM0MztcdFx0XHQvKiBSZW1lbWJlciB3aGVyZSB3ZSBsZWZ0IG9mZi4gKi9cbiYjNDM7XHRcdFx0KnN0YXJ0X3NrID0gc2s7XG4gXHRcdH1cbiYjNDM7XHRcdGV4cGVjdGVkJiM0MzsmIzQzOztcbiBcdH1cbiBcbiBcdHJldHVybiBleHBlY3RlZDtcbkBAIC0zMTI5LDYgJiM0MzszMTI5LDcgQEAgc3RhdGljIHN0cnVjdCBzb2NrICpicGZfaXRlcl90Y3BfYmF0Y2goc3RydWN0IHNlcV9maWxlICpzZXEpXG4gXHRzdHJ1Y3Qgc29jayAqc2s7XG4gXHRpbnQgZXJyO1xuIFxuJiM0MzthZ2FpbjpcbiBcdHNrID0gYnBmX2l0ZXJfdGNwX3Jlc3VtZShzZXEpO1xuIFx0aWYgKCFzaylcbiBcdFx0cmV0dXJuIE5VTEw7IC8qIERvbmUgKi9cbkBAIC0zMTY3LDYgJiM0MzszMTY4LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqYnBmX2l0ZXJfdGNwX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxuIFx0V0FSTl9PTl9PTkNFKGl0ZXItXHUwMDNlZW5kX3NrICE9IGV4cGVjdGVkKTtcbiBkb25lOlxuIFx0YnBmX2l0ZXJfdGNwX3VubG9ja19idWNrZXQoc2VxKTtcbiYjNDM7XHRpZiAodW5saWtlbHkoIWl0ZXItXHUwMDNlZW5kX3NrKSkge1xuJiM0MztcdFx0JiM0MzsmIzQzO2l0ZXItXHUwMDNlc3RhdGUuYnVja2V0O1xuJiM0MztcdFx0Z290byBhZ2FpbjtcbiYjNDM7XHR9XG4gXHRyZXR1cm4gaXRlci1cdTAwM2ViYXRjaFswXS5zaztcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDA6NDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaXRlcl90Y3BfZXN0YWJsaXNoZWRfYmF0Y2gmIzM0OywKICAgICYjMzQ7YnBmX2l0ZXJfdGNwX2JhdGNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgVENQIGl0ZXJhdG9yIGxvZ2ljIHRvIHNhZmVseSBoYW5kbGUgc29ja2V0cyB3aXRoIHplcm8gcmVmY291bnQgYW5kIGNvcnJlY3RseSBza2lwIGVtcHR5IGJ1Y2tldHMgZHVyaW5nIGJhdGNoaW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoQlBGIGl0ZXJhdG9ycyBmb3IgVENQIHNvY2tldHMpIHRoYXQgZml4IHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBsb2dpYyBidWdzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2NzlmNGZlMWZlOWVhMWE5ZTUzOTdmMTk3NThmMWIwM2IyYTAyNmVmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdW4gMjAgMDA6NDU6MTIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaXB2NC5jIGIvbmV0L2lwdjQvdGNwX2lwdjQuYwppbmRleCBmZGM4MTE1MGZmNmNmOS4uOTIzNDJkY2M2ODkyYWYgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9pcHY0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX2lwdjQuYwpAQCAtMzA3NCwyNSAmIzQzOzMwNzQsMjUgQEAgc3RhdGljIHVuc2lnbmVkIGludCBicGZfaXRlcl90Y3BfZXN0YWJsaXNoZWRfYmF0Y2goc3RydWN0IHNlcV9maWxlICpzZXEsCiB7CiAJc3RydWN0IGJwZl90Y3BfaXRlcl9zdGF0ZSAqaXRlciA9IHNlcS0mZ3Q7cHJpdmF0ZTsKIAlzdHJ1Y3QgaGxpc3RfbnVsbHNfbm9kZSAqbm9kZTsKLQl1bnNpZ25lZCBpbnQgZXhwZWN0ZWQgPSAxOwotCXN0cnVjdCBzb2NrICpzazsKLQotCXNvY2tfaG9sZCgqc3RhcnRfc2spOwotCWl0ZXItJmd0O2JhdGNoW2l0ZXItJmd0O2VuZF9zayYjNDM7JiM0MztdLnNrID0gKnN0YXJ0X3NrOwomIzQzOwl1bnNpZ25lZCBpbnQgZXhwZWN0ZWQgPSAwOwomIzQzOwlzdHJ1Y3Qgc29jayAqc2sgPSAqc3RhcnRfc2s7CiAKLQlzayA9IHNrX251bGxzX25leHQoKnN0YXJ0X3NrKTsKIAkqc3RhcnRfc2sgPSBOVUxMOwogCXNrX251bGxzX2Zvcl9lYWNoX2Zyb20oc2ssIG5vZGUpIHsKLQkJaWYgKHNlcV9za19tYXRjaChzZXEsIHNrKSkgewotCQkJaWYgKGl0ZXItJmd0O2VuZF9zayAmbHQ7IGl0ZXItJmd0O21heF9zaykgewotCQkJCXNvY2tfaG9sZChzayk7Ci0JCQkJaXRlci0mZ3Q7YmF0Y2hbaXRlci0mZ3Q7ZW5kX3NrJiM0MzsmIzQzO10uc2sgPSBzazsKLQkJCX0gZWxzZSBpZiAoISpzdGFydF9zaykgewotCQkJCS8qIFJlbWVtYmVyIHdoZXJlIHdlIGxlZnQgb2ZmLiAqLwotCQkJCSpzdGFydF9zayA9IHNrOwotCQkJfQotCQkJZXhwZWN0ZWQmIzQzOyYjNDM7OwomIzQzOwkJaWYgKCFzZXFfc2tfbWF0Y2goc2VxLCBzaykpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CQlpZiAoaXRlci0mZ3Q7ZW5kX3NrICZsdDsgaXRlci0mZ3Q7bWF4X3NrKSB7CiYjNDM7CQkJLyogcmVxc2tfcXVldWVfaGFzaF9yZXEoKSBpbnNlcnRzIHdpdGggc2tfcmVmY250ID09IDAKJiM0MzsJCQkgKiBhbmQgcmVmY291bnRfc2V0KClzIGl0IGFmdGVyIHRoZSBidWNrZXQgbG9jayBkcm9wcy4KJiM0MzsJCQkgKi8KJiM0MzsJCQlpZiAodW5saWtlbHkoIXJlZmNvdW50X2luY19ub3RfemVybygmYW1wO3NrLSZndDtza19yZWZjbnQpKSkKJiM0MzsJCQkJY29udGludWU7CiYjNDM7CQkJaXRlci0mZ3Q7YmF0Y2hbaXRlci0mZ3Q7ZW5kX3NrJiM0MzsmIzQzO10uc2sgPSBzazsKJiM0MzsJCX0gZWxzZSBpZiAoISpzdGFydF9zaykgewomIzQzOwkJCS8qIFJlbWVtYmVyIHdoZXJlIHdlIGxlZnQgb2ZmLiAqLwomIzQzOwkJCSpzdGFydF9zayA9IHNrOwogCQl9CiYjNDM7CQlleHBlY3RlZCYjNDM7JiM0Mzs7CiAJfQogCiAJcmV0dXJuIGV4cGVjdGVkOwpAQCAtMzEyOSw2ICYjNDM7MzEyOSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqYnBmX2l0ZXJfdGNwX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxKQogCXN0cnVjdCBzb2NrICpzazsKIAlpbnQgZXJyOwogCiYjNDM7YWdhaW46CiAJc2sgPSBicGZfaXRlcl90Y3BfcmVzdW1lKHNlcSk7CiAJaWYgKCFzaykKIAkJcmV0dXJuIE5VTEw7IC8qIERvbmUgKi8KQEAgLTMxNjcsNiAmIzQzOzMxNjgsMTAgQEAgc3RhdGljIHN0cnVjdCBzb2NrICpicGZfaXRlcl90Y3BfYmF0Y2goc3RydWN0IHNlcV9maWxlICpzZXEpCiAJV0FSTl9PTl9PTkNFKGl0ZXItJmd0O2VuZF9zayAhPSBleHBlY3RlZCk7CiBkb25lOgogCWJwZl9pdGVyX3RjcF91bmxvY2tfYnVja2V0KHNlcSk7CiYjNDM7CWlmICh1bmxpa2VseSghaXRlci0mZ3Q7ZW5kX3NrKSkgewomIzQzOwkJJiM0MzsmIzQzO2l0ZXItJmd0O3N0YXRlLmJ1Y2tldDsKJiM0MzsJCWdvdG8gYWdhaW47CiYjNDM7CX0KIAlyZXR1cm4gaXRlci0mZ3Q7YmF0Y2hbMF0uc2s7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDA6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQxNwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDMwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBUQ1AgU29ja2V0IEJQRiBJdGVyYXRvciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIGBuZXQvaXB2NC90Y3BfaXB2NC5jYC4gTXkgaW1tZWRpYXRlIGludGVyZXN0IGlzIHBpcXVlZCBiZWNhdXNlIGl0JiMzOTtzIG1lc3Npbmcgd2l0aCBgYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoYCBhbmQgYGJwZl9pdGVyX3RjcF9iYXRjaGAuIFRoZXNlIGFyZSBCUEYgaXRlcmF0b3JzLCBzbyBpdCYjMzk7cyBrZXJuZWwtbGV2ZWwgc3R1ZmYsIGFuZCBpdCBzb3VuZHMgbGlrZSBmdW5jdGlvbmFsIGNoYW5nZXMuIERlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQmIzM5O3Mgd29ydGggYSBjbG9zZXIgbG9vayBhbmQsIGZyYW5rbHksIG5lZWRzIGZ1enppbmcg4oCTIEkmIzM5O20gbWFya2luZyB0aGF0IGFzIGEgJiMzNDt0cnVlJiMzNDsgZm9yIG15IG1lbnRhbCBjaGVja2xpc3QuCgpUaGUgY29yZSBvZiB0aGUgcGF0Y2ggc2VlbXMgdG8gYmUgYWRkcmVzc2luZyBhbiBgc2tfcmVmY250YCBpc3N1ZS4gVGhleSYjMzk7cmUgd2lzZWx5IHN3YXBwaW5nIGBzb2NrX2hvbGQoc2spYCBmb3IgYHJlZmNvdW50X2luY19ub3RfemVybygmYW1wO3NrLSZndDtza19yZWZjbnQpYC4gVGhhdOKAmXMgYSBnb29kIGNhdGNoOyB3ZSBkb24mIzM5O3Qgd2FudCB0byBpbmNyZW1lbnQgYSB6ZXJvIHJlZmNvdW50LiBUaGUgYGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaGAgY2hhbmdlIHNlZW1zIHRvIGJlIGNhcmVmdWxseSBhdm9pZGluZyBhbiB1bmNvbmRpdGlvbmFsIGhvbGQgb24gYHN0YXJ0X3NrYCBhbmQsIGluc3RlYWQsIGNoZWNraW5nIHRoZSByZWZjb3VudCBmb3IgYWxsIG1hdGNoaW5nIHNvY2tldHMuIE1ha2VzIHNlbnNlLCB0cnlpbmcgdG8gYmUgbW9yZSByb2J1c3QuCgpJJiMzOTttIGFsc28gc2VlaW5nIGEgYGdvdG8gYWdhaW5gIGxvb3AgaW4gYGJwZl9pdGVyX3RjcF9iYXRjaGAgd2hlbiBgaXRlci0mZ3Q7ZW5kX3NrYCBiZWNvbWVzIDAgYWZ0ZXIgYmF0Y2hpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgbG9naWMgYmV0dGVyOyBpdCBmZWVscyBsaWtlIGEgcmV0cnkgbWVjaGFuaXNtLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGdyYXNwIHdoeSB0aGF0JiMzOTtzIG5lY2Vzc2FyeS4KCkdpdmVuIHRoYXQgdGhlc2UgYXJlIEJQRiBpdGVyYXRvcnMsIEkgc2hvdWxkIGNoZWNrIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBsaW5rZWQgdG8gYG5ldC9pcHY0L3RjcF9pcHY0LmNgLiBJJiMzOTtsbCBjcm9zcy1yZWZlcmVuY2UgdGhlIGBDT05GSUdfQlBGX1NZU0NBTExgIG9wdGlvbiBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgZGVwZW5kZW5jaWVzIG9yIGNvbmZpZ3VyYXRpb25zIHRoYXQgY291bGQgaW5mbHVlbmNlIGhvdyB0aGVzZSBjaGFuZ2VzIGJlaGF2ZS4gSSBuZWVkIHRvIGtub3cgaG93IHRoZXNlIGNoYW5nZXMgYXJlIGNvbnRyb2xsZWQgb3IgdHJpZ2dlcmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDAwOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9pdGVyX3RjcF9iYXRjaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9pcHY0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2lwdjQuYz0zMTEzPXN0YXRpYyB2b2lkIGJwZl9pdGVyX3RjcF91bmxvY2tfYnVja2V0KHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzEyNC1cbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzEyNTpzdGF0aWMgc3RydWN0IHNvY2sgKmJwZl9pdGVyX3RjcF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzEyNi17XG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYz0zMTc4PXN0YXRpYyB2b2lkICpicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBsb2ZmX3QgKnBvcylcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMxODMtXHRpZiAoKnBvcylcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzE4NDpcdFx0cmV0dXJuIGJwZl9pdGVyX3RjcF9iYXRjaChzZXEpO1xubmV0L2lwdjQvdGNwX2lwdjQuYy0zMTg1LVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM9MzE4OT1zdGF0aWMgdm9pZCAqYnBmX2l0ZXJfdGNwX3NlcV9uZXh0KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2LCBsb2ZmX3QgKnBvcylcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyMTAtXHRlbHNlXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMyMTE6XHRcdHNrID0gYnBmX2l0ZXJfdGNwX2JhdGNoKHNlcSk7XG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyMTItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDA6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUzMwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyB0aGUgcm9sZSBvZiB0aGUgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIEJQRiBJdGVyYXRvciBDb25maWd1cmF0aW9ucyBpbiBUQ1AvSVB2NCoqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiB3ZSYjMzk7dmUgZ290IGFueSBzcGVjaWFsIGNvbmZpZ3VyYXRpb25zLCBvcHRpbWl6YXRpb25zLCBvciBwZXJoYXBzIGN1c3RvbSBoYW5kbGluZyBmb3IgQlBGIGl0ZXJhdG9ycyBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgbmV0L2lwdjQvdGNwX2lwdjQuY2Agc291cmNlIGZpbGUuIE15IGV4cGVjdGF0aW9uIGlzIHRoYXQgdGhpcyBhcmVhIHdvdWxkIGJlIHRoZSBtb3N0IG9idmlvdXMgcGxhY2UgdG8gZmluZCBhbnl0aGluZyByZWxldmFudCwgZ2l2ZW4gaXRzIGZvY3VzIG9uIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIFRDUCBhbmQgSVB2NC4gSSYjMzk7bGwgbmVlZCB0byBjb25kdWN0IGEgcXVpY2sgc2VhcmNoIHRvIGVuc3VyZSB0aGF0IGFueSBCUEYgaXRlcmF0b3IgaW50ZWdyYXRpb24gaXMgYWNjb3VudGVkIGZvciB3aXRoaW4gdGhpcyBwYXJ0aWN1bGFyIGNvZGUgbW9kdWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDAwOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19CUEYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaXB2NC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9pcHY0LmM9Mjg1MT1zdGF0aWMgaW50IHRjcDRfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0yODc1LVxubmV0L2lwdjQvdGNwX2lwdjQuYzoyODc2OiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMjg3Ny11bmlvbiBicGZfdGNwX2l0ZXJfYmF0Y2hfaXRlbSB7XG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYz0zMjg2PXN0YXRpYyB1bnNpZ25lZCBzaG9ydCBzZXFfZmlsZV9mYW1pbHkoY29uc3Qgc3RydWN0IHNlcV9maWxlICpzZXEpXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjg5LVxubmV0L2lwdjQvdGNwX2lwdjQuYzozMjkwOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzI5MS1cdC8qIEl0ZXJhdGVkIGZyb20gYnBmX2l0ZXIuICBMZXQgdGhlIGJwZiBwcm9nIHRvIGZpbHRlciBpbnN0ZWFkLiAqL1xuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM9MzM0MT1zdHJ1Y3QgcHJvdG8gdGNwX3Byb3QgPSB7XG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMzY1LVx0LnB1dF9wb3J0XHRcdD0gaW5ldF9wdXRfcG9ydCxcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzM2NjojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMzNjctXHQucHNvY2tfdXBkYXRlX3NrX3Byb3RcdD0gdGNwX2JwZl91cGRhdGVfcHJvdG8sXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYz0zNTY0PXN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgX19uZXRfaW5pdGRhdGEgdGNwX3NrX29wcyA9IHtcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTM1NjktXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjM1NzA6I2lmIGRlZmluZWQoQ09ORklHX0JQRl9TWVNDQUxMKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfUFJPQ19GUylcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzU3MS1ERUZJTkVfQlBGX0lURVJfRlVOQyh0Y3AsIHN0cnVjdCBicGZfaXRlcl9tZXRhICptZXRhLFxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM9MzY0Mz12b2lkIF9faW5pdCB0Y3BfdjRfaW5pdCh2b2lkKVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzY2Ny1cbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzY2ODojaWYgZGVmaW5lZChDT05GSUdfQlBGX1NZU0NBTEwpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19QUk9DX0ZTKVxubmV0L2lwdjQvdGNwX2lwdjQuYy0zNjY5LVx0YnBmX2l0ZXJfcmVnaXN0ZXIoKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAwMDo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzY0CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBgYnBmX2l0ZXJfdGNwX2JhdGNoYCBDb25kaXRpb25hbCBDb21waWxhdGlvbioqCgpBbHJpZ2h0LCB0aGUgY29kZSBJJiMzOTttIGxvb2tpbmcgYXQsIHNwZWNpZmljYWxseSB0aGUgYGJwZl9pdGVyX3RjcF9iYXRjaGAgZnVuY3Rpb24sIHNlZW1zIHRvIGJlIGdhdGVkIGJlaGluZCBgI2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTGAuIFRoYXQmIzM5O3MgYSBsaXR0bGUgc3VycHJpc2luZywgSSB0aG91Z2h0IGl0IG1pZ2h0IGJlIGRlZmluZWQgZWxzZXdoZXJlLCBidXQgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyBlbnN1cmluZyB0aGF0IHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBhcmUgZXhhY3RseSBhcyBJIGV4cGVjdC4gVGltZSB0byBxdWlja2x5IHZlcmlmeSB0aGUgZmlsZSBjb250ZW50cyB0byBjb25maXJtIHRoaXMgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSYjMzk7cyBzY29wZSBhbmQgdGhlIGltcGxpY2F0aW9ucyBmb3IgdGhlIGJ1aWxkIHByb2Nlc3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXJlIGlzIGFuIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uIHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDA6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaXB2NC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjg3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7Mjg3MDpcdFx0XHRnZXRfdGNwNF9zb2NrKHYsIHNlcSwgc3QtXHUwMDNlbnVtKTtcbjI4NzE6XHRvdXQ6XG4yODcyOlx0XHRzZXFfcGFkKHNlcSwgJiMzOTtcXG4mIzM5Oyk7XG4yODczOlx0XHRyZXR1cm4gMDtcbjI4NzQ6XHR9XG4yODc1Olx0XG4yODc2Olx0I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuMjg3NzpcdHVuaW9uIGJwZl90Y3BfaXRlcl9iYXRjaF9pdGVtIHtcbjI4Nzg6XHRcdHN0cnVjdCBzb2NrICpzaztcbjI4Nzk6XHRcdF9fdTY0IGNvb2tpZTtcbjI4ODA6XHR9O1xuMjg4MTpcdFxuMjg4MjpcdHN0cnVjdCBicGZfdGNwX2l0ZXJfc3RhdGUge1xuMjg4MzpcdFx0c3RydWN0IHRjcF9pdGVyX3N0YXRlIHN0YXRlO1xuMjg4NDpcdFx0dW5zaWduZWQgaW50IGN1cl9zaztcbjI4ODU6XHRcdHVuc2lnbmVkIGludCBlbmRfc2s7XG4yODg2Olx0XHR1bnNpZ25lZCBpbnQgbWF4X3NrO1xuMjg4NzpcdFx0dW5pb24gYnBmX3RjcF9pdGVyX2JhdGNoX2l0ZW0gKmJhdGNoO1xuMjg4ODpcdH07XG4yODg5Olx0XG4yODkwOlx0c3RydWN0IGJwZl9pdGVyX190Y3Age1xuMjg5MTpcdFx0X19icGZfbWRfcHRyKHN0cnVjdCBicGZfaXRlcl9tZXRhICosIG1ldGEpO1xuMjg5MjpcdFx0X19icGZfbWRfcHRyKHN0cnVjdCBzb2NrX2NvbW1vbiAqLCBza19jb21tb24pO1xuMjg5MzpcdFx0dWlkX3QgdWlkIF9fYWxpZ25lZCg4KTtcbjI4OTQ6XHR9O1xuMjg5NTpcdFxuMjg5NjpcdHN0YXRpYyBpbnQgdGNwX3Byb2dfc2VxX3Nob3coc3RydWN0IGJwZl9wcm9nICpwcm9nLCBzdHJ1Y3QgYnBmX2l0ZXJfbWV0YSAqbWV0YSxcbjI4OTc6XHRcdFx0XHQgICAgIHN0cnVjdCBzb2NrX2NvbW1vbiAqc2tfY29tbW9uLCB1aWRfdCB1aWQpXG4yODk4Olx0e1xuMjg5OTpcdFx0c3RydWN0IGJwZl9pdGVyX190Y3AgY3R4O1xuMjkwMDpcdFxuMjkwMTpcdFx0bWV0YS1cdTAwM2VzZXFfbnVtLS07ICAvKiBza2lwIFNFUV9TVEFSVF9UT0tFTiAqL1xuMjkwMjpcdFx0Y3R4Lm1ldGEgPSBtZXRhO1xuMjkwMzpcdFx0Y3R4LnNrX2NvbW1vbiA9IHNrX2NvbW1vbjtcbjI5MDQ6XHRcdGN0eC51aWQgPSB1aWQ7XG4yOTA1Olx0XHRyZXR1cm4gYnBmX2l0ZXJfcnVuX3Byb2cocHJvZywgXHUwMDI2Y3R4KTtcbjI5MDY6XHR9XG4yOTA3Olx0XG4yOTA4Olx0c3RhdGljIHZvaWQgYnBmX2l0ZXJfdGNwX3B1dF9iYXRjaChzdHJ1Y3QgYnBmX3RjcF9pdGVyX3N0YXRlICppdGVyKVxuMjkwOTpcdHtcbjI5MTA6XHRcdHVuaW9uIGJwZl90Y3BfaXRlcl9iYXRjaF9pdGVtICppdGVtO1xuMjkxMTpcdFx0dW5zaWduZWQgaW50IGN1cl9zayA9IGl0ZXItXHUwMDNlY3VyX3NrO1xuMjkxMjpcdFx0X191NjQgY29va2llO1xuMjkxMzpcdFxuMjkxNDpcdFx0LyogUmVtZW1iZXIgdGhlIGNvb2tpZXMgb2YgdGhlIHNvY2tldHMgd2UgaGF2ZW4mIzM5O3Qgc2VlbiB5ZXQsIHNvIHdlIGNhblxuMjkxNTpcdFx0ICogcGljayB1cCB3aGVyZSB3ZSBsZWZ0IG9mZiBuZXh0IHRpbWUgYXJvdW5kLlxuMjkxNjpcdFx0ICovXG4yOTE3Olx0XHR3aGlsZSAoY3VyX3NrIFx1MDAzYyBpdGVyLVx1MDAzZWVuZF9zaykge1xuMjkxODpcdFx0XHRpdGVtID0gXHUwMDI2aXRlci1cdTAwM2ViYXRjaFtjdXJfc2smIzQzOyYjNDM7XTtcbjI5MTk6XHRcdFx0Y29va2llID0gc29ja19nZW5fY29va2llKGl0ZW0tXHUwMDNlc2spO1xuMjkyMDpcdFx0XHRzb2NrX2dlbl9wdXQoaXRlbS1cdTAwM2Vzayk7XG4yOTIxOlx0XHRcdGl0ZW0tXHUwMDNlY29va2llID0gY29va2llO1xuMjkyMjpcdFx0fVxuMjkyMzpcdH1cbjI5MjQ6XHRcbjI5MjU6XHRzdGF0aWMgaW50IGJwZl9pdGVyX3RjcF9yZWFsbG9jX2JhdGNoKHN0cnVjdCBicGZfdGNwX2l0ZXJfc3RhdGUgKml0ZXIsXG4yOTI2Olx0XHRcdFx0XHQgICAgICB1bnNpZ25lZCBpbnQgbmV3X2JhdGNoX3N6LCBnZnBfdCBmbGFncylcbjI5Mjc6XHR7XG4yOTI4Olx0XHR1bmlvbiBicGZfdGNwX2l0ZXJfYmF0Y2hfaXRlbSAqbmV3X2JhdGNoO1xuMjkyOTpcdFxuMjkzMDpcdFx0bmV3X2JhdGNoID0ga3ZtYWxsb2Moc2l6ZW9mKCpuZXdfYmF0Y2gpICogbmV3X2JhdGNoX3N6LFxuMjkzMTpcdFx0XHRcdCAgICAgZmxhZ3MgfCBfX0dGUF9OT1dBUk4pO1xuMjkzMjpcdFx0aWYgKCFuZXdfYmF0Y2gpXG4yOTMzOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuMjkzNDpcdFxuMjkzNTpcdFx0bWVtY3B5KG5ld19iYXRjaCwgaXRlci1cdTAwM2ViYXRjaCwgc2l6ZW9mKCppdGVyLVx1MDAzZWJhdGNoKSAqIGl0ZXItXHUwMDNlZW5kX3NrKTtcbjI5MzY6XHRcdGt2ZnJlZShpdGVyLVx1MDAzZWJhdGNoKTtcbjI5Mzc6XHRcdGl0ZXItXHUwMDNlYmF0Y2ggPSBuZXdfYmF0Y2g7XG4yOTM4Olx0XHRpdGVyLVx1MDAzZW1heF9zayA9IG5ld19iYXRjaF9zejtcbjI5Mzk6XHRcbjI5NDA6XHRcdHJldHVybiAwO1xuMjk0MTpcdH1cbjI5NDI6XHRcbjI5NDM6XHRzdGF0aWMgc3RydWN0IHNvY2sgKmJwZl9pdGVyX3RjcF9yZXN1bWVfYnVja2V0KHN0cnVjdCBzb2NrICpmaXJzdF9zayxcbjI5NDQ6XHRcdFx0XHRcdFx0ICAgICAgIHVuaW9uIGJwZl90Y3BfaXRlcl9iYXRjaF9pdGVtICpjb29raWVzLFxuMjk0NTpcdFx0XHRcdFx0XHQgICAgICAgaW50IG5fY29va2llcylcbjI5NDY6XHR7XG4yOTQ3Olx0XHRzdHJ1Y3QgaGxpc3RfbnVsbHNfbm9kZSAqbm9kZTtcbjI5NDg6XHRcdHN0cnVjdCBzb2NrICpzaztcbjI5NDk6XHRcdGludCBpO1xuMjk1MDpcdFxuMjk1MTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgbl9jb29raWVzOyBpJiM0MzsmIzQzOykge1xuMjk1MjpcdFx0XHRzayA9IGZpcnN0X3NrO1xuMjk1MzpcdFx0XHRza19udWxsc19mb3JfZWFjaF9mcm9tKHNrLCBub2RlKVxuMjk1NDpcdFx0XHRcdGlmIChjb29raWVzW2ldLmNvb2tpZSA9PSBhdG9taWM2NF9yZWFkKFx1MDAyNnNrLVx1MDAzZXNrX2Nvb2tpZSkpXG4yOTU1Olx0XHRcdFx0XHRyZXR1cm4gc2s7XG4yOTU2Olx0XHR9XG4yOTU3Olx0XG4yOTU4Olx0XHRyZXR1cm4gTlVMTDtcbjI5NTk6XHR9XG4yOTYwOlx0XG4yOTYxOlx0c3RhdGljIHN0cnVjdCBzb2NrICpicGZfaXRlcl90Y3BfcmVzdW1lX2xpc3RlbmluZyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcbjI5NjI6XHR7XG4yOTYzOlx0XHRzdHJ1Y3QgaW5ldF9oYXNoaW5mbyAqaGluZm8gPSBzZXFfZmlsZV9uZXQoc2VxKS1cdTAwM2VpcHY0LnRjcF9kZWF0aF9yb3cuaGFzaGluZm87XG4yOTY0Olx0XHRzdHJ1Y3QgYnBmX3RjcF9pdGVyX3N0YXRlICppdGVyID0gc2VxLVx1MDAzZXByaXZhdGU7XG4yOTY1Olx0XHRzdHJ1Y3QgdGNwX2l0ZXJfc3RhdGUgKnN0ID0gXHUwMDI2aXRlci1cdTAwM2VzdGF0ZTtcbjI5NjY6XHRcdHVuc2lnbmVkIGludCBmaW5kX2Nvb2tpZSA9IGl0ZXItXHUwMDNlY3VyX3NrO1xuMjk2NzpcdFx0dW5zaWduZWQgaW50IGVuZF9jb29raWUgPSBpdGVyLVx1MDAzZWVuZF9zaztcbjI5Njg6XHRcdGludCByZXN1bWVfYnVja2V0ID0gc3QtXHUwMDNlYnVja2V0O1xuMjk2OTpcdFx0c3RydWN0IHNvY2sgKnNrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDAwOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxMzYKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIEJQRi1FbmFibGVkIFRDUCBJdGVyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMga2VybmVsIGNvZGUgYW5kLCByaWdodCBvZmYgdGhlIGJhdCwgaXQmIzM5O3MgY2xlYXIgdGhlIHJlbGV2YW50IHNlY3Rpb24gaXMgZ2F0ZWQgYnkgYENPTkZJR19CUEZfU1lTQ0FMTGAuIFRoYXQmIzM5O3MgdGhlIGtleSBlbmFibGluZyBjb25maWd1cmF0aW9uLgoKTm93LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgZ290Y2hhcy4gU2luY2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgbmV0L2lwdjQvdGNwX2lwdjQuY2AsIGl0JiMzOTtzIHNhZmUgdG8gYXNzdW1lIGBDT05GSUdfSU5FVGAgYW5kIGBDT05GSUdfVENQYCBhcmUgaW1wbGljaXRseSByZXF1aXJlZC4gWW91IGtub3csIHRoZSB1c3VhbCBkZXBlbmRlbmNpZXMgZm9yIElQdjQgVENQLiBCdXQsIHNpbmNlIHRoZXkmIzM5O3JlIGJhc2ljIHByZXJlcXVpc2l0ZXMsIHdlIHdvdWxkbiYjMzk7dCBub3JtYWxseSBjYWxsIHRoZW0gb3V0IHVubGVzcyBpdCB3YXMgYSB2ZXJ5IHNwZWNpZmljIGRlcGVuZGVuY3kgb24gb25lIG9mIHRoZW0uIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIHRoZSBpbnRlcmVzdGluZyBvbmUsIHRoZSBvbmUgdGhhdCBtYWtlcyB0aGlzIGZlYXR1cmUgdGljay4KCkFscmlnaHQsIGJlZm9yZSBJIHNpZ24gb2ZmLCBsZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgYGJwZl9pdGVyX3RjcF9iYXRjaGAgZnVuY3Rpb24gaXRzZWxmLi4uIG1ha2Ugc3VyZSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoYXQgZnVuY3Rpb24gaXMgY29ycmVjdC4gSnVzdCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAwMDo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9pcHY0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMTIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMTIwOlx0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNmhpbmZvLVx1MDAzZWxoYXNoMltzdC1cdTAwM2VidWNrZXRdLmxvY2spO1xuMzEyMTpcdFx0ZWxzZVxuMzEyMjpcdFx0XHRzcGluX3VubG9ja19iaChpbmV0X2VoYXNoX2xvY2twKGhpbmZvLCBzdC1cdTAwM2VidWNrZXQpKTtcbjMxMjM6XHR9XG4zMTI0Olx0XG4zMTI1Olx0c3RhdGljIHN0cnVjdCBzb2NrICpicGZfaXRlcl90Y3BfYmF0Y2goc3RydWN0IHNlcV9maWxlICpzZXEpXG4zMTI2Olx0e1xuMzEyNzpcdFx0c3RydWN0IGJwZl90Y3BfaXRlcl9zdGF0ZSAqaXRlciA9IHNlcS1cdTAwM2Vwcml2YXRlO1xuMzEyODpcdFx0dW5zaWduZWQgaW50IGV4cGVjdGVkO1xuMzEyOTpcdFx0c3RydWN0IHNvY2sgKnNrO1xuMzEzMDpcdFx0aW50IGVycjtcbjMxMzE6XHRcbjMxMzI6XHRhZ2FpbjpcbjMxMzM6XHRcdHNrID0gYnBmX2l0ZXJfdGNwX3Jlc3VtZShzZXEpO1xuMzEzNDpcdFx0aWYgKCFzaylcbjMxMzU6XHRcdFx0cmV0dXJuIE5VTEw7IC8qIERvbmUgKi9cbjMxMzY6XHRcbjMxMzc6XHRcdGV4cGVjdGVkID0gYnBmX2l0ZXJfZmlsbF9iYXRjaChzZXEsIFx1MDAyNnNrKTtcbjMxMzg6XHRcdGlmIChsaWtlbHkoaXRlci1cdTAwM2VlbmRfc2sgPT0gZXhwZWN0ZWQpKVxuMzEzOTpcdFx0XHRnb3RvIGRvbmU7XG4zMTQwOlx0XG4zMTQxOlx0XHQvKiBCYXRjaCBzaXplIHdhcyB0b28gc21hbGwuICovXG4zMTQyOlx0XHRicGZfaXRlcl90Y3BfdW5sb2NrX2J1Y2tldChzZXEpO1xuMzE0MzpcdFx0YnBmX2l0ZXJfdGNwX3B1dF9iYXRjaChpdGVyKTtcbjMxNDQ6XHRcdGVyciA9IGJwZl9pdGVyX3RjcF9yZWFsbG9jX2JhdGNoKGl0ZXIsIGV4cGVjdGVkICogMyAvIDIsXG4zMTQ1Olx0XHRcdFx0XHRcdCBHRlBfVVNFUik7XG4zMTQ2Olx0XHRpZiAoZXJyKVxuMzE0NzpcdFx0XHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuMzE0ODpcdFxuMzE0OTpcdFx0c2sgPSBicGZfaXRlcl90Y3BfcmVzdW1lKHNlcSk7XG4zMTUwOlx0XHRpZiAoIXNrKVxuMzE1MTpcdFx0XHRyZXR1cm4gTlVMTDsgLyogRG9uZSAqL1xuMzE1MjpcdFxuMzE1MzpcdFx0ZXhwZWN0ZWQgPSBicGZfaXRlcl9maWxsX2JhdGNoKHNlcSwgXHUwMDI2c2spO1xuMzE1NDpcdFx0aWYgKGxpa2VseShpdGVyLVx1MDAzZWVuZF9zayA9PSBleHBlY3RlZCkpXG4zMTU1Olx0XHRcdGdvdG8gZG9uZTtcbjMxNTY6XHRcbjMxNTc6XHRcdC8qIEJhdGNoIHNpemUgd2FzIHN0aWxsIHRvbyBzbWFsbC4gSG9sZCBvbnRvIHRoZSBsb2NrIHdoaWxlIHdlIHRyeVxuMzE1ODpcdFx0ICogYWdhaW4gd2l0aCBhIGxhcmdlciBiYXRjaCB0byBtYWtlIHN1cmUgdGhlIGN1cnJlbnQgYnVja2V0JiMzOTtzIHNpemVcbjMxNTk6XHRcdCAqIGRvZXMgbm90IGNoYW5nZSBpbiB0aGUgbWVhbnRpbWUuXG4zMTYwOlx0XHQgKi9cbjMxNjE6XHRcdGVyciA9IGJwZl9pdGVyX3RjcF9yZWFsbG9jX2JhdGNoKGl0ZXIsIGV4cGVjdGVkLCBHRlBfTk9XQUlUKTtcbjMxNjI6XHRcdGlmIChlcnIpIHtcbjMxNjM6XHRcdFx0YnBmX2l0ZXJfdGNwX3VubG9ja19idWNrZXQoc2VxKTtcbjMxNjQ6XHRcdFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcbjMxNjU6XHRcdH1cbjMxNjY6XHRcbjMxNjc6XHRcdGV4cGVjdGVkID0gYnBmX2l0ZXJfZmlsbF9iYXRjaChzZXEsIFx1MDAyNnNrKTtcbjMxNjg6XHRcdFdBUk5fT05fT05DRShpdGVyLVx1MDAzZWVuZF9zayAhPSBleHBlY3RlZCk7XG4zMTY5Olx0ZG9uZTpcbjMxNzA6XHRcdGJwZl9pdGVyX3RjcF91bmxvY2tfYnVja2V0KHNlcSk7XG4zMTcxOlx0XHRpZiAodW5saWtlbHkoIWl0ZXItXHUwMDNlZW5kX3NrKSkge1xuMzE3MjpcdFx0XHQmIzQzOyYjNDM7aXRlci1cdTAwM2VzdGF0ZS5idWNrZXQ7XG4zMTczOlx0XHRcdGdvdG8gYWdhaW47XG4zMTc0Olx0XHR9XG4zMTc1Olx0XHRyZXR1cm4gaXRlci1cdTAwM2ViYXRjaFswXS5zaztcbjMxNzY6XHR9XG4zMTc3Olx0XG4zMTc4Olx0c3RhdGljIHZvaWQgKmJwZl9pdGVyX3RjcF9zZXFfc3RhcnQoc3RydWN0IHNlcV9maWxlICpzZXEsIGxvZmZfdCAqcG9zKVxuMzE3OTpcdHtcbjMxODA6XHRcdC8qIGJwZiBpdGVyIGRvZXMgbm90IHN1cHBvcnQgbHNlZWssIHNvIGl0IGFsd2F5c1xuMzE4MTpcdFx0ICogY29udGludWUgZnJvbSB3aGVyZSBpdCB3YXMgc3RvcCgpLXBlZC5cbjMxODI6XHRcdCAqL1xuMzE4MzpcdFx0aWYgKCpwb3MpXG4zMTg0Olx0XHRcdHJldHVybiBicGZfaXRlcl90Y3BfYmF0Y2goc2VxKTtcbjMxODU6XHRcbjMxODY6XHRcdHJldHVybiBTRVFfU1RBUlRfVE9LRU47XG4zMTg3Olx0fVxuMzE4ODpcdFxuMzE4OTpcdHN0YXRpYyB2b2lkICpicGZfaXRlcl90Y3Bfc2VxX25leHQoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYsIGxvZmZfdCAqcG9zKVxuMzE5MDpcdHtcbjMxOTE6XHRcdHN0cnVjdCBicGZfdGNwX2l0ZXJfc3RhdGUgKml0ZXIgPSBzZXEtXHUwMDNlcHJpdmF0ZTtcbjMxOTI6XHRcdHN0cnVjdCB0Y3BfaXRlcl9zdGF0ZSAqc3QgPSBcdTAwMjZpdGVyLVx1MDAzZXN0YXRlO1xuMzE5MzpcdFx0c3RydWN0IHNvY2sgKnNrO1xuMzE5NDpcdFxuMzE5NTpcdFx0LyogV2hlbmV2ZXIgc2VxX25leHQoKSBpcyBjYWxsZWQsIHRoZSBpdGVyLVx1MDAzZWN1cl9zayBpc1xuMzE5NjpcdFx0ICogZG9uZSB3aXRoIHNlcV9zaG93KCksIHNvIGFkdmFuY2UgdG8gdGhlIG5leHQgc2sgaW5cbjMxOTc6XHRcdCAqIHRoZSBiYXRjaC5cbjMxOTg6XHRcdCAqL1xuMzE5OTpcdFx0aWYgKGl0ZXItXHUwMDNlY3VyX3NrIFx1MDAzYyBpdGVyLVx1MDAzZWVuZF9zaykge1xuMzIwMDpcdFx0XHQvKiBLZWVwaW5nIHN0LVx1MDAzZW51bSBjb25zaXN0ZW50IGluIHRjcF9pdGVyX3N0YXRlLlxuMzIwMTpcdFx0XHQgKiBicGZfaXRlcl90Y3AgZG9lcyBub3QgdXNlIHN0LVx1MDAzZW51bS5cbjMyMDI6XHRcdFx0ICogbWV0YS5zZXFfbnVtIGlzIHVzZWQgaW5zdGVhZC5cbjMyMDM6XHRcdFx0ICovXG4zMjA0Olx0XHRcdHN0LVx1MDAzZW51bSYjNDM7JiM0Mzs7XG4zMjA1Olx0XHRcdHNvY2tfZ2VuX3B1dChpdGVyLVx1MDAzZWJhdGNoW2l0ZXItXHUwMDNlY3VyX3NrJiM0MzsmIzQzO10uc2spO1xuMzIwNjpcdFx0fVxuMzIwNzpcdFxuMzIwODpcdFx0aWYgKGl0ZXItXHUwMDNlY3VyX3NrIFx1MDAzYyBpdGVyLVx1MDAzZWVuZF9zaylcbjMyMDk6XHRcdFx0c2sgPSBpdGVyLVx1MDAzZWJhdGNoW2l0ZXItXHUwMDNlY3VyX3NrXS5zaztcbjMyMTA6XHRcdGVsc2VcbjMyMTE6XHRcdFx0c2sgPSBicGZfaXRlcl90Y3BfYmF0Y2goc2VxKTtcbjMyMTI6XHRcbjMyMTM6XHRcdCYjNDM7JiM0MzsqcG9zO1xuMzIxNDpcdFx0LyogS2VlcGluZyBzdC1cdTAwM2VsYXN0X3BvcyBjb25zaXN0ZW50IGluIHRjcF9pdGVyX3N0YXRlLlxuMzIxNTpcdFx0ICogYnBmIGl0ZXIgZG9lcyBub3QgZG8gbHNlZWssIHNvIHN0LVx1MDAzZWxhc3RfcG9zIGFsd2F5cyBlcXVhbHMgdG8gKnBvcy5cbjMyMTY6XHRcdCAqL1xuMzIxNzpcdFx0c3QtXHUwMDNlbGFzdF9wb3MgPSAqcG9zO1xuMzIxODpcdFx0cmV0dXJuIHNrO1xuMzIxOTpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDA6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODAxOAoJCQkJCQkJb3V0cHV0OiAxMTgKCQkJCQkJCXRob3VnaHRzOiAyMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIFRDUCBJdGVyYXRvciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGRpdmVzIGludG8gYGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaGAgYW5kIGBicGZfaXRlcl90Y3BfYmF0Y2hgLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIEJQRiBUQ1AgaXRlcmF0b3JzLiBJbW1lZGlhdGVseSwgaXQgc291bmRzIGxpa2UgYSBmdW5jdGlvbmFsIGZpeCBhbmQgYnVnIGNvcnJlY3Rpb24sIHdoaWNoIGFsd2F5cyBwaXF1ZXMgbXkgaW50ZXJlc3QuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2VzIHJldm9sdmUgYXJvdW5kIGFkZHJlc3Npbmcgc29tZSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmVsYXRlZCBpc3N1ZXMgdGhhdCBjb3VsZCBvY2N1ciB3aGVuIHNvY2tldHMgd2l0aCBhIHplcm8gcmVmY291bnQgYXJlIGluYWR2ZXJ0ZW50bHkgYWRkZWQgdG8gYSBiYXRjaC4gSXQgYXBwZWFycyB0byBhbHNvIGluY29ycG9yYXRlIHJvYnVzdCBoYW5kbGluZyBvZiBlbXB0eSBiYXRjaGVzLCBlbnN1cmluZyBzZWFtbGVzcyBwcm9jZXNzaW5nIGluIHRoZSBsb2dpYy4gVGhlc2UgYXJlIGNyaXRpY2FsIGNoYW5nZXMsIGVzcGVjaWFsbHkgY29uc2lkZXJpbmcgdGhpcyBpcyBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHRoZSBCUEYgaXRlcmF0b3JzIGZvciBUQ1Agc29ja2V0cyBpbnRlcmFjdCB3aXRoLgoKV29ydGggZnV6emluZz8gQWJzb2x1dGVseS4gR2l2ZW4gdGhlIG5hdHVyZSBvZiBpdGVyYXRvciBtb2RpZmljYXRpb25zIGFuZCB0aGUgcG90ZW50aWFsIGZvciBtZW1vcnktcmVsYXRlZCBlcnJvcnMsIHRoaXMgd2FycmFudHMgdGhvcm91Z2ggZnV6emluZy4KCk15IGZvY3VzIHNob3VsZCBiZSBob25lZCBpbiBvbiBgYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoYCBhbmQgYGJwZl9pdGVyX3RjcF9iYXRjaGAuCgpFbmFibGluZyBgQlBGX1NZU0NBTExgIHNlZW1zIGxpa2UgYSBnaXZlbiwgdG8gYmUgYWJsZSB0byBwcm9wZXJseSBldmFsdWF0ZSB0aGUgZml4LgoKSnVzdCB0byBiZSBzdXJlLCBsZXQgbWUgcXVpY2tseSB2ZXJpZnkgdGhhdCB0aGUgZnVuY3Rpb24gbmFtZSBgYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoYCBpcyBpbmRlZWQgY29ycmVjdC4gWWVzLCBpdCYjMzk7cyByaWdodCB0aGVyZSBpbiB0aGUgZGlmZiwgYHN0YXRpYyB1bnNpZ25lZCBpbnQgYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxLGAKCkFscmlnaHQsIHRoYXQmIzM5O3MgY29uZmlybWVkLiBOb3csIGl0JiMzOTtzIHRpbWUgdG8gc2V0IHVwIHRoZSByZXN1bHRzIGFuZCBwcm9jZWVkIHdpdGggYSBkZXRhaWxlZCBhbmFseXNpcyBhbmQgdGVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDA6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoJiMzNDssCiAgICAmIzM0O2JwZl9pdGVyX3RjcF9iYXRjaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIFRDUCBpdGVyYXRvciBsb2dpYyB0byBzYWZlbHkgaGFuZGxlIHNvY2tldHMgd2l0aCB6ZXJvIHJlZmNvdW50IGFuZCBjb3JyZWN0bHkgc2tpcCBlbXB0eSBidWNrZXRzIGR1cmluZyBiYXRjaGluZy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBpdGVyYXRvcnMgZm9yIFRDUCBzb2NrZXRzKSB0aGF0IGZpeCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgbG9naWMgYnVncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaXRlcl90Y3BfZXN0YWJsaXNoZWRfYmF0Y2gmIzM0OywKICAgICYjMzQ7YnBmX2l0ZXJfdGNwX2JhdGNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgVENQIGl0ZXJhdG9yIGxvZ2ljIHRvIHNhZmVseSBoYW5kbGUgc29ja2V0cyB3aXRoIHplcm8gcmVmY291bnQgYW5kIGNvcnJlY3RseSBza2lwIGVtcHR5IGJ1Y2tldHMgZHVyaW5nIGJhdGNoaW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoQlBGIGl0ZXJhdG9ycyBmb3IgVENQIHNvY2tldHMpIHRoYXQgZml4IHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBsb2dpYyBidWdzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDA6NDU6MTMuODUxNTE2ODUyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE4MjUzOTk0NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaXRlcl90Y3BfZXN0YWJsaXNoZWRfYmF0Y2hcIixcbiAgICBcImJwZl9pdGVyX3RjcF9iYXRjaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgVENQIGl0ZXJhdG9yIGxvZ2ljIHRvIHNhZmVseSBoYW5kbGUgc29ja2V0cyB3aXRoIHplcm8gcmVmY291bnQgYW5kIGNvcnJlY3RseSBza2lwIGVtcHR5IGJ1Y2tldHMgZHVyaW5nIGJhdGNoaW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoQlBGIGl0ZXJhdG9ycyBmb3IgVENQIHNvY2tldHMpIHRoYXQgZml4IHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBsb2dpYyBidWdzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwMDo0NToxMy44NTE1MjIxNzJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MDUzMzU5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDY3OWY0ZmUxZmU5ZWExYTllNTM5N2YxOTc1OGYxYjAzYjJhMDI2ZWZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdW4gMjAgMDA6NDU6MTIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2lwdjQuYyBiL25ldC9pcHY0L3RjcF9pcHY0LmNcXG5pbmRleCBmZGM4MTE1MGZmNmNmOS4uOTIzNDJkY2M2ODkyYWYgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvdGNwX2lwdjQuY1xcbisrKyBiL25ldC9pcHY0L3RjcF9pcHY0LmNcXG5AQCAtMzA3NCwyNSArMzA3NCwyNSBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSxcXG4ge1xcbiBcXHRzdHJ1Y3QgYnBmX3RjcF9pdGVyX3N0YXRlICppdGVyID0gc2VxLVxcdTAwM2Vwcml2YXRlO1xcbiBcXHRzdHJ1Y3QgaGxpc3RfbnVsbHNfbm9kZSAqbm9kZTtcXG4tXFx0dW5zaWduZWQgaW50IGV4cGVjdGVkID0gMTtcXG4tXFx0c3RydWN0IHNvY2sgKnNrO1xcbi1cXG4tXFx0c29ja19ob2xkKCpzdGFydF9zayk7XFxuLVxcdGl0ZXItXFx1MDAzZWJhdGNoW2l0ZXItXFx1MDAzZWVuZF9zaysrXS5zayA9ICpzdGFydF9zaztcXG4rXFx0dW5zaWduZWQgaW50IGV4cGVjdGVkID0gMDtcXG4rXFx0c3RydWN0IHNvY2sgKnNrID0gKnN0YXJ0X3NrO1xcbiBcXG4tXFx0c2sgPSBza19udWxsc19uZXh0KCpzdGFydF9zayk7XFxuIFxcdCpzdGFydF9zayA9IE5VTEw7XFxuIFxcdHNrX251bGxzX2Zvcl9lYWNoX2Zyb20oc2ssIG5vZGUpIHtcXG4tXFx0XFx0aWYgKHNlcV9za19tYXRjaChzZXEsIHNrKSkge1xcbi1cXHRcXHRcXHRpZiAoaXRlci1cXHUwMDNlZW5kX3NrIFxcdTAwM2MgaXRlci1cXHUwMDNlbWF4X3NrKSB7XFxuLVxcdFxcdFxcdFxcdHNvY2tfaG9sZChzayk7XFxuLVxcdFxcdFxcdFxcdGl0ZXItXFx1MDAzZWJhdGNoW2l0ZXItXFx1MDAzZWVuZF9zaysrXS5zayA9IHNrO1xcbi1cXHRcXHRcXHR9IGVsc2UgaWYgKCEqc3RhcnRfc2spIHtcXG4tXFx0XFx0XFx0XFx0LyogUmVtZW1iZXIgd2hlcmUgd2UgbGVmdCBvZmYuICovXFxuLVxcdFxcdFxcdFxcdCpzdGFydF9zayA9IHNrO1xcbi1cXHRcXHRcXHR9XFxuLVxcdFxcdFxcdGV4cGVjdGVkKys7XFxuK1xcdFxcdGlmICghc2VxX3NrX21hdGNoKHNlcSwgc2spKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0aWYgKGl0ZXItXFx1MDAzZWVuZF9zayBcXHUwMDNjIGl0ZXItXFx1MDAzZW1heF9zaykge1xcbitcXHRcXHRcXHQvKiByZXFza19xdWV1ZV9oYXNoX3JlcSgpIGluc2VydHMgd2l0aCBza19yZWZjbnQgPT0gMFxcbitcXHRcXHRcXHQgKiBhbmQgcmVmY291bnRfc2V0KClzIGl0IGFmdGVyIHRoZSBidWNrZXQgbG9jayBkcm9wcy5cXG4rXFx0XFx0XFx0ICovXFxuK1xcdFxcdFxcdGlmICh1bmxpa2VseSghcmVmY291bnRfaW5jX25vdF96ZXJvKFxcdTAwMjZzay1cXHUwMDNlc2tfcmVmY250KSkpXFxuK1xcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHRcXHRpdGVyLVxcdTAwM2ViYXRjaFtpdGVyLVxcdTAwM2VlbmRfc2srK10uc2sgPSBzaztcXG4rXFx0XFx0fSBlbHNlIGlmICghKnN0YXJ0X3NrKSB7XFxuK1xcdFxcdFxcdC8qIFJlbWVtYmVyIHdoZXJlIHdlIGxlZnQgb2ZmLiAqL1xcbitcXHRcXHRcXHQqc3RhcnRfc2sgPSBzaztcXG4gXFx0XFx0fVxcbitcXHRcXHRleHBlY3RlZCsrO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gZXhwZWN0ZWQ7XFxuQEAgLTMxMjksNiArMzEyOSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqYnBmX2l0ZXJfdGNwX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxcbiBcXHRzdHJ1Y3Qgc29jayAqc2s7XFxuIFxcdGludCBlcnI7XFxuIFxcbithZ2FpbjpcXG4gXFx0c2sgPSBicGZfaXRlcl90Y3BfcmVzdW1lKHNlcSk7XFxuIFxcdGlmICghc2spXFxuIFxcdFxcdHJldHVybiBOVUxMOyAvKiBEb25lICovXFxuQEAgLTMxNjcsNiArMzE2OCwxMCBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKmJwZl9pdGVyX3RjcF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcXG4gXFx0V0FSTl9PTl9PTkNFKGl0ZXItXFx1MDAzZWVuZF9zayAhPSBleHBlY3RlZCk7XFxuIGRvbmU6XFxuIFxcdGJwZl9pdGVyX3RjcF91bmxvY2tfYnVja2V0KHNlcSk7XFxuK1xcdGlmICh1bmxpa2VseSghaXRlci1cXHUwMDNlZW5kX3NrKSkge1xcbitcXHRcXHQrK2l0ZXItXFx1MDAzZXN0YXRlLmJ1Y2tldDtcXG4rXFx0XFx0Z290byBhZ2FpbjtcXG4rXFx0fVxcbiBcXHRyZXR1cm4gaXRlci1cXHUwMDNlYmF0Y2hbMF0uc2s7XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDAwOjQ1OjE0LjM5MjkyOTU1MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjEyODM5Nzc4MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaXRlcl90Y3BfZXN0YWJsaXNoZWRfYmF0Y2hcIixcbiAgICBcImJwZl9pdGVyX3RjcF9iYXRjaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgVENQIGl0ZXJhdG9yIGxvZ2ljIHRvIHNhZmVseSBoYW5kbGUgc29ja2V0cyB3aXRoIHplcm8gcmVmY291bnQgYW5kIGNvcnJlY3RseSBza2lwIGVtcHR5IGJ1Y2tldHMgZHVyaW5nIGJhdGNoaW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoQlBGIGl0ZXJhdG9ycyBmb3IgVENQIHNvY2tldHMpIHRoYXQgZml4IHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBsb2dpYyBidWdzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDY3OWY0ZmUxZmU5ZWExYTllNTM5N2YxOTc1OGYxYjAzYjJhMDI2ZWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1biAyMCAwMDo0NToxMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pcHY0LmMgYi9uZXQvaXB2NC90Y3BfaXB2NC5jXG5pbmRleCBmZGM4MTE1MGZmNmNmOS4uOTIzNDJkY2M2ODkyYWYgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3BfaXB2NC5jXG4rKysgYi9uZXQvaXB2NC90Y3BfaXB2NC5jXG5AQCAtMzA3NCwyNSArMzA3NCwyNSBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSxcbiB7XG4gXHRzdHJ1Y3QgYnBmX3RjcF9pdGVyX3N0YXRlICppdGVyID0gc2VxLVx1MDAzZXByaXZhdGU7XG4gXHRzdHJ1Y3QgaGxpc3RfbnVsbHNfbm9kZSAqbm9kZTtcbi1cdHVuc2lnbmVkIGludCBleHBlY3RlZCA9IDE7XG4tXHRzdHJ1Y3Qgc29jayAqc2s7XG4tXG4tXHRzb2NrX2hvbGQoKnN0YXJ0X3NrKTtcbi1cdGl0ZXItXHUwMDNlYmF0Y2hbaXRlci1cdTAwM2VlbmRfc2srK10uc2sgPSAqc3RhcnRfc2s7XG4rXHR1bnNpZ25lZCBpbnQgZXhwZWN0ZWQgPSAwO1xuK1x0c3RydWN0IHNvY2sgKnNrID0gKnN0YXJ0X3NrO1xuIFxuLVx0c2sgPSBza19udWxsc19uZXh0KCpzdGFydF9zayk7XG4gXHQqc3RhcnRfc2sgPSBOVUxMO1xuIFx0c2tfbnVsbHNfZm9yX2VhY2hfZnJvbShzaywgbm9kZSkge1xuLVx0XHRpZiAoc2VxX3NrX21hdGNoKHNlcSwgc2spKSB7XG4tXHRcdFx0aWYgKGl0ZXItXHUwMDNlZW5kX3NrIFx1MDAzYyBpdGVyLVx1MDAzZW1heF9zaykge1xuLVx0XHRcdFx0c29ja19ob2xkKHNrKTtcbi1cdFx0XHRcdGl0ZXItXHUwMDNlYmF0Y2hbaXRlci1cdTAwM2VlbmRfc2srK10uc2sgPSBzaztcbi1cdFx0XHR9IGVsc2UgaWYgKCEqc3RhcnRfc2spIHtcbi1cdFx0XHRcdC8qIFJlbWVtYmVyIHdoZXJlIHdlIGxlZnQgb2ZmLiAqL1xuLVx0XHRcdFx0KnN0YXJ0X3NrID0gc2s7XG4tXHRcdFx0fVxuLVx0XHRcdGV4cGVjdGVkKys7XG4rXHRcdGlmICghc2VxX3NrX21hdGNoKHNlcSwgc2spKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1x0XHRpZiAoaXRlci1cdTAwM2VlbmRfc2sgXHUwMDNjIGl0ZXItXHUwMDNlbWF4X3NrKSB7XG4rXHRcdFx0LyogcmVxc2tfcXVldWVfaGFzaF9yZXEoKSBpbnNlcnRzIHdpdGggc2tfcmVmY250ID09IDBcbitcdFx0XHQgKiBhbmQgcmVmY291bnRfc2V0KClzIGl0IGFmdGVyIHRoZSBidWNrZXQgbG9jayBkcm9wcy5cbitcdFx0XHQgKi9cbitcdFx0XHRpZiAodW5saWtlbHkoIXJlZmNvdW50X2luY19ub3RfemVybyhcdTAwMjZzay1cdTAwM2Vza19yZWZjbnQpKSlcbitcdFx0XHRcdGNvbnRpbnVlO1xuK1x0XHRcdGl0ZXItXHUwMDNlYmF0Y2hbaXRlci1cdTAwM2VlbmRfc2srK10uc2sgPSBzaztcbitcdFx0fSBlbHNlIGlmICghKnN0YXJ0X3NrKSB7XG4rXHRcdFx0LyogUmVtZW1iZXIgd2hlcmUgd2UgbGVmdCBvZmYuICovXG4rXHRcdFx0KnN0YXJ0X3NrID0gc2s7XG4gXHRcdH1cbitcdFx0ZXhwZWN0ZWQrKztcbiBcdH1cbiBcbiBcdHJldHVybiBleHBlY3RlZDtcbkBAIC0zMTI5LDYgKzMxMjksNyBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKmJwZl9pdGVyX3RjcF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcbiBcdHN0cnVjdCBzb2NrICpzaztcbiBcdGludCBlcnI7XG4gXG4rYWdhaW46XG4gXHRzayA9IGJwZl9pdGVyX3RjcF9yZXN1bWUoc2VxKTtcbiBcdGlmICghc2spXG4gXHRcdHJldHVybiBOVUxMOyAvKiBEb25lICovXG5AQCAtMzE2Nyw2ICszMTY4LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqYnBmX2l0ZXJfdGNwX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxuIFx0V0FSTl9PTl9PTkNFKGl0ZXItXHUwMDNlZW5kX3NrICE9IGV4cGVjdGVkKTtcbiBkb25lOlxuIFx0YnBmX2l0ZXJfdGNwX3VubG9ja19idWNrZXQoc2VxKTtcbitcdGlmICh1bmxpa2VseSghaXRlci1cdTAwM2VlbmRfc2spKSB7XG4rXHRcdCsraXRlci1cdTAwM2VzdGF0ZS5idWNrZXQ7XG4rXHRcdGdvdG8gYWdhaW47XG4rXHR9XG4gXHRyZXR1cm4gaXRlci1cdTAwM2ViYXRjaFswXS5zaztcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwMDo0NToxNC4zOTI5MzE1OTFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDY5NDM4MjcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFRDUCBTb2NrZXQgQlBGIEl0ZXJhdG9yIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0J3MgdG91Y2hpbmcgYG5ldC9pcHY0L3RjcF9pcHY0LmNgLiBNeSBpbW1lZGlhdGUgaW50ZXJlc3QgaXMgcGlxdWVkIGJlY2F1c2UgaXQncyBtZXNzaW5nIHdpdGggYGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaGAgYW5kIGBicGZfaXRlcl90Y3BfYmF0Y2hgLiBUaGVzZSBhcmUgQlBGIGl0ZXJhdG9ycywgc28gaXQncyBrZXJuZWwtbGV2ZWwgc3R1ZmYsIGFuZCBpdCBzb3VuZHMgbGlrZSBmdW5jdGlvbmFsIGNoYW5nZXMuIERlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQncyB3b3J0aCBhIGNsb3NlciBsb29rIGFuZCwgZnJhbmtseSwgbmVlZHMgZnV6emluZyDigJMgSSdtIG1hcmtpbmcgdGhhdCBhcyBhIFwidHJ1ZVwiIGZvciBteSBtZW50YWwgY2hlY2tsaXN0LlxuXG5UaGUgY29yZSBvZiB0aGUgcGF0Y2ggc2VlbXMgdG8gYmUgYWRkcmVzc2luZyBhbiBgc2tfcmVmY250YCBpc3N1ZS4gVGhleSdyZSB3aXNlbHkgc3dhcHBpbmcgYHNvY2tfaG9sZChzaylgIGZvciBgcmVmY291bnRfaW5jX25vdF96ZXJvKFx1MDAyNnNrLVx1MDAzZXNrX3JlZmNudClgLiBUaGF04oCZcyBhIGdvb2QgY2F0Y2g7IHdlIGRvbid0IHdhbnQgdG8gaW5jcmVtZW50IGEgemVybyByZWZjb3VudC4gVGhlIGBicGZfaXRlcl90Y3BfZXN0YWJsaXNoZWRfYmF0Y2hgIGNoYW5nZSBzZWVtcyB0byBiZSBjYXJlZnVsbHkgYXZvaWRpbmcgYW4gdW5jb25kaXRpb25hbCBob2xkIG9uIGBzdGFydF9za2AgYW5kLCBpbnN0ZWFkLCBjaGVja2luZyB0aGUgcmVmY291bnQgZm9yIGFsbCBtYXRjaGluZyBzb2NrZXRzLiBNYWtlcyBzZW5zZSwgdHJ5aW5nIHRvIGJlIG1vcmUgcm9idXN0LlxuXG5JJ20gYWxzbyBzZWVpbmcgYSBgZ290byBhZ2FpbmAgbG9vcCBpbiBgYnBmX2l0ZXJfdGNwX2JhdGNoYCB3aGVuIGBpdGVyLVx1MDAzZWVuZF9za2AgYmVjb21lcyAwIGFmdGVyIGJhdGNoaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGxvZ2ljIGJldHRlcjsgaXQgZmVlbHMgbGlrZSBhIHJldHJ5IG1lY2hhbmlzbS4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGdyYXNwIHdoeSB0aGF0J3MgbmVjZXNzYXJ5LlxuXG5HaXZlbiB0aGF0IHRoZXNlIGFyZSBCUEYgaXRlcmF0b3JzLCBJIHNob3VsZCBjaGVjayB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgbGlua2VkIHRvIGBuZXQvaXB2NC90Y3BfaXB2NC5jYC4gSSdsbCBjcm9zcy1yZWZlcmVuY2UgdGhlIGBDT05GSUdfQlBGX1NZU0NBTExgIG9wdGlvbiBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgZGVwZW5kZW5jaWVzIG9yIGNvbmZpZ3VyYXRpb25zIHRoYXQgY291bGQgaW5mbHVlbmNlIGhvdyB0aGVzZSBjaGFuZ2VzIGJlaGF2ZS4gSSBuZWVkIHRvIGtub3cgaG93IHRoZXNlIGNoYW5nZXMgYXJlIGNvbnRyb2xsZWQgb3IgdHJpZ2dlcmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDE3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDA6NDU6MjAuODYyMzcxOTgxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMzk3NzE3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaXRlcl90Y3BfYmF0Y2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdGNwX2lwdjQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC90Y3BfaXB2NC5jPTMxMTM9c3RhdGljIHZvaWQgYnBmX2l0ZXJfdGNwX3VubG9ja19idWNrZXQoc3RydWN0IHNlcV9maWxlICpzZXEpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMxMjQtXFxubmV0L2lwdjQvdGNwX2lwdjQuYzozMTI1OnN0YXRpYyBzdHJ1Y3Qgc29jayAqYnBmX2l0ZXJfdGNwX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzEyNi17XFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTMxNzg9c3RhdGljIHZvaWQgKmJwZl9pdGVyX3RjcF9zZXFfc3RhcnQoc3RydWN0IHNlcV9maWxlICpzZXEsIGxvZmZfdCAqcG9zKVxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMTgzLVxcdGlmICgqcG9zKVxcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzE4NDpcXHRcXHRyZXR1cm4gYnBmX2l0ZXJfdGNwX2JhdGNoKHNlcSk7XFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMTg1LVxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0zMTg5PXN0YXRpYyB2b2lkICpicGZfaXRlcl90Y3Bfc2VxX25leHQoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYsIGxvZmZfdCAqcG9zKVxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjEwLVxcdGVsc2VcXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMyMTE6XFx0XFx0c2sgPSBicGZfaXRlcl90Y3BfYmF0Y2goc2VxKTtcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyMTItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDAwOjQ1OjIwLjk2NjM1NDkyOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2MTg4NjY2MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHJvbGUgb2YgdGhlIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIEJQRiBJdGVyYXRvciBDb25maWd1cmF0aW9ucyBpbiBUQ1AvSVB2NCoqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGluLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgd2UndmUgZ290IGFueSBzcGVjaWFsIGNvbmZpZ3VyYXRpb25zLCBvcHRpbWl6YXRpb25zLCBvciBwZXJoYXBzIGN1c3RvbSBoYW5kbGluZyBmb3IgQlBGIGl0ZXJhdG9ycyBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgbmV0L2lwdjQvdGNwX2lwdjQuY2Agc291cmNlIGZpbGUuIE15IGV4cGVjdGF0aW9uIGlzIHRoYXQgdGhpcyBhcmVhIHdvdWxkIGJlIHRoZSBtb3N0IG9idmlvdXMgcGxhY2UgdG8gZmluZCBhbnl0aGluZyByZWxldmFudCwgZ2l2ZW4gaXRzIGZvY3VzIG9uIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIFRDUCBhbmQgSVB2NC4gSSdsbCBuZWVkIHRvIGNvbmR1Y3QgYSBxdWljayBzZWFyY2ggdG8gZW5zdXJlIHRoYXQgYW55IEJQRiBpdGVyYXRvciBpbnRlZ3JhdGlvbiBpcyBhY2NvdW50ZWQgZm9yIHdpdGhpbiB0aGlzIHBhcnRpY3VsYXIgY29kZSBtb2R1bGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MzMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwMDo0NToyMy41ODUyMjQyNzJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODkwMzgyNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0JQRlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC90Y3BfaXB2NC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9pcHY0LmM9Mjg1MT1zdGF0aWMgaW50IHRjcDRfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTI4NzUtXFxubmV0L2lwdjQvdGNwX2lwdjQuYzoyODc2OiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTI4NzctdW5pb24gYnBmX3RjcF9pdGVyX2JhdGNoX2l0ZW0ge1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0zMjg2PXN0YXRpYyB1bnNpZ25lZCBzaG9ydCBzZXFfZmlsZV9mYW1pbHkoY29uc3Qgc3RydWN0IHNlcV9maWxlICpzZXEpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyODktXFxubmV0L2lwdjQvdGNwX2lwdjQuYzozMjkwOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyOTEtXFx0LyogSXRlcmF0ZWQgZnJvbSBicGZfaXRlci4gIExldCB0aGUgYnBmIHByb2cgdG8gZmlsdGVyIGluc3RlYWQuICovXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTMzNDE9c3RydWN0IHByb3RvIHRjcF9wcm90ID0ge1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMzY1LVxcdC5wdXRfcG9ydFxcdFxcdD0gaW5ldF9wdXRfcG9ydCxcXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMzNjY6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzM2Ny1cXHQucHNvY2tfdXBkYXRlX3NrX3Byb3RcXHQ9IHRjcF9icGZfdXBkYXRlX3Byb3RvLFxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0zNTY0PXN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgX19uZXRfaW5pdGRhdGEgdGNwX3NrX29wcyA9IHtcXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzU2OS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjM1NzA6I2lmIGRlZmluZWQoQ09ORklHX0JQRl9TWVNDQUxMKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19QUk9DX0ZTKVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzU3MS1ERUZJTkVfQlBGX0lURVJfRlVOQyh0Y3AsIHN0cnVjdCBicGZfaXRlcl9tZXRhICptZXRhLFxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0zNjQzPXZvaWQgX19pbml0IHRjcF92NF9pbml0KHZvaWQpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTM2NjctXFxubmV0L2lwdjQvdGNwX2lwdjQuYzozNjY4OiNpZiBkZWZpbmVkKENPTkZJR19CUEZfU1lTQ0FMTCkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfUFJPQ19GUylcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTM2NjktXFx0YnBmX2l0ZXJfcmVnaXN0ZXIoKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDA6NDU6MjMuNjc0MjcxN1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4MDc3ODE1MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYGJwZl9pdGVyX3RjcF9iYXRjaGAgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24qKlxuXG5BbHJpZ2h0LCB0aGUgY29kZSBJJ20gbG9va2luZyBhdCwgc3BlY2lmaWNhbGx5IHRoZSBgYnBmX2l0ZXJfdGNwX2JhdGNoYCBmdW5jdGlvbiwgc2VlbXMgdG8gYmUgZ2F0ZWQgYmVoaW5kIGAjaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMYC4gVGhhdCdzIGEgbGl0dGxlIHN1cnByaXNpbmcsIEkgdGhvdWdodCBpdCBtaWdodCBiZSBkZWZpbmVkIGVsc2V3aGVyZSwgYnV0IGxldCdzIGp1c3QgbWFrZSBzdXJlLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyBlbnN1cmluZyB0aGF0IHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBhcmUgZXhhY3RseSBhcyBJIGV4cGVjdC4gVGltZSB0byBxdWlja2x5IHZlcmlmeSB0aGUgZmlsZSBjb250ZW50cyB0byBjb25maXJtIHRoaXMgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSdzIHNjb3BlIGFuZCB0aGUgaW1wbGljYXRpb25zIGZvciB0aGUgYnVpbGQgcHJvY2Vzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlcmUgaXMgYW4gYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24gcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM2NCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDAwOjQ1OjI2LjQ4MjA1NTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTIwNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjQvdGNwX2lwdjQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyODcwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjg3MDpcXHRcXHRcXHRnZXRfdGNwNF9zb2NrKHYsIHNlcSwgc3QtXFx1MDAzZW51bSk7XFxuMjg3MTpcXHRvdXQ6XFxuMjg3MjpcXHRcXHRzZXFfcGFkKHNlcSwgJ1xcXFxuJyk7XFxuMjg3MzpcXHRcXHRyZXR1cm4gMDtcXG4yODc0OlxcdH1cXG4yODc1OlxcdFxcbjI4NzY6XFx0I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbjI4Nzc6XFx0dW5pb24gYnBmX3RjcF9pdGVyX2JhdGNoX2l0ZW0ge1xcbjI4Nzg6XFx0XFx0c3RydWN0IHNvY2sgKnNrO1xcbjI4Nzk6XFx0XFx0X191NjQgY29va2llO1xcbjI4ODA6XFx0fTtcXG4yODgxOlxcdFxcbjI4ODI6XFx0c3RydWN0IGJwZl90Y3BfaXRlcl9zdGF0ZSB7XFxuMjg4MzpcXHRcXHRzdHJ1Y3QgdGNwX2l0ZXJfc3RhdGUgc3RhdGU7XFxuMjg4NDpcXHRcXHR1bnNpZ25lZCBpbnQgY3VyX3NrO1xcbjI4ODU6XFx0XFx0dW5zaWduZWQgaW50IGVuZF9zaztcXG4yODg2OlxcdFxcdHVuc2lnbmVkIGludCBtYXhfc2s7XFxuMjg4NzpcXHRcXHR1bmlvbiBicGZfdGNwX2l0ZXJfYmF0Y2hfaXRlbSAqYmF0Y2g7XFxuMjg4ODpcXHR9O1xcbjI4ODk6XFx0XFxuMjg5MDpcXHRzdHJ1Y3QgYnBmX2l0ZXJfX3RjcCB7XFxuMjg5MTpcXHRcXHRfX2JwZl9tZF9wdHIoc3RydWN0IGJwZl9pdGVyX21ldGEgKiwgbWV0YSk7XFxuMjg5MjpcXHRcXHRfX2JwZl9tZF9wdHIoc3RydWN0IHNvY2tfY29tbW9uICosIHNrX2NvbW1vbik7XFxuMjg5MzpcXHRcXHR1aWRfdCB1aWQgX19hbGlnbmVkKDgpO1xcbjI4OTQ6XFx0fTtcXG4yODk1OlxcdFxcbjI4OTY6XFx0c3RhdGljIGludCB0Y3BfcHJvZ19zZXFfc2hvdyhzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHN0cnVjdCBicGZfaXRlcl9tZXRhICptZXRhLFxcbjI4OTc6XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc29ja19jb21tb24gKnNrX2NvbW1vbiwgdWlkX3QgdWlkKVxcbjI4OTg6XFx0e1xcbjI4OTk6XFx0XFx0c3RydWN0IGJwZl9pdGVyX190Y3AgY3R4O1xcbjI5MDA6XFx0XFxuMjkwMTpcXHRcXHRtZXRhLVxcdTAwM2VzZXFfbnVtLS07ICAvKiBza2lwIFNFUV9TVEFSVF9UT0tFTiAqL1xcbjI5MDI6XFx0XFx0Y3R4Lm1ldGEgPSBtZXRhO1xcbjI5MDM6XFx0XFx0Y3R4LnNrX2NvbW1vbiA9IHNrX2NvbW1vbjtcXG4yOTA0OlxcdFxcdGN0eC51aWQgPSB1aWQ7XFxuMjkwNTpcXHRcXHRyZXR1cm4gYnBmX2l0ZXJfcnVuX3Byb2cocHJvZywgXFx1MDAyNmN0eCk7XFxuMjkwNjpcXHR9XFxuMjkwNzpcXHRcXG4yOTA4OlxcdHN0YXRpYyB2b2lkIGJwZl9pdGVyX3RjcF9wdXRfYmF0Y2goc3RydWN0IGJwZl90Y3BfaXRlcl9zdGF0ZSAqaXRlcilcXG4yOTA5OlxcdHtcXG4yOTEwOlxcdFxcdHVuaW9uIGJwZl90Y3BfaXRlcl9iYXRjaF9pdGVtICppdGVtO1xcbjI5MTE6XFx0XFx0dW5zaWduZWQgaW50IGN1cl9zayA9IGl0ZXItXFx1MDAzZWN1cl9zaztcXG4yOTEyOlxcdFxcdF9fdTY0IGNvb2tpZTtcXG4yOTEzOlxcdFxcbjI5MTQ6XFx0XFx0LyogUmVtZW1iZXIgdGhlIGNvb2tpZXMgb2YgdGhlIHNvY2tldHMgd2UgaGF2ZW4ndCBzZWVuIHlldCwgc28gd2UgY2FuXFxuMjkxNTpcXHRcXHQgKiBwaWNrIHVwIHdoZXJlIHdlIGxlZnQgb2ZmIG5leHQgdGltZSBhcm91bmQuXFxuMjkxNjpcXHRcXHQgKi9cXG4yOTE3OlxcdFxcdHdoaWxlIChjdXJfc2sgXFx1MDAzYyBpdGVyLVxcdTAwM2VlbmRfc2spIHtcXG4yOTE4OlxcdFxcdFxcdGl0ZW0gPSBcXHUwMDI2aXRlci1cXHUwMDNlYmF0Y2hbY3VyX3NrKytdO1xcbjI5MTk6XFx0XFx0XFx0Y29va2llID0gc29ja19nZW5fY29va2llKGl0ZW0tXFx1MDAzZXNrKTtcXG4yOTIwOlxcdFxcdFxcdHNvY2tfZ2VuX3B1dChpdGVtLVxcdTAwM2Vzayk7XFxuMjkyMTpcXHRcXHRcXHRpdGVtLVxcdTAwM2Vjb29raWUgPSBjb29raWU7XFxuMjkyMjpcXHRcXHR9XFxuMjkyMzpcXHR9XFxuMjkyNDpcXHRcXG4yOTI1OlxcdHN0YXRpYyBpbnQgYnBmX2l0ZXJfdGNwX3JlYWxsb2NfYmF0Y2goc3RydWN0IGJwZl90Y3BfaXRlcl9zdGF0ZSAqaXRlcixcXG4yOTI2OlxcdFxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGludCBuZXdfYmF0Y2hfc3osIGdmcF90IGZsYWdzKVxcbjI5Mjc6XFx0e1xcbjI5Mjg6XFx0XFx0dW5pb24gYnBmX3RjcF9pdGVyX2JhdGNoX2l0ZW0gKm5ld19iYXRjaDtcXG4yOTI5OlxcdFxcbjI5MzA6XFx0XFx0bmV3X2JhdGNoID0ga3ZtYWxsb2Moc2l6ZW9mKCpuZXdfYmF0Y2gpICogbmV3X2JhdGNoX3N6LFxcbjI5MzE6XFx0XFx0XFx0XFx0ICAgICBmbGFncyB8IF9fR0ZQX05PV0FSTik7XFxuMjkzMjpcXHRcXHRpZiAoIW5ld19iYXRjaClcXG4yOTMzOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjI5MzQ6XFx0XFxuMjkzNTpcXHRcXHRtZW1jcHkobmV3X2JhdGNoLCBpdGVyLVxcdTAwM2ViYXRjaCwgc2l6ZW9mKCppdGVyLVxcdTAwM2ViYXRjaCkgKiBpdGVyLVxcdTAwM2VlbmRfc2spO1xcbjI5MzY6XFx0XFx0a3ZmcmVlKGl0ZXItXFx1MDAzZWJhdGNoKTtcXG4yOTM3OlxcdFxcdGl0ZXItXFx1MDAzZWJhdGNoID0gbmV3X2JhdGNoO1xcbjI5Mzg6XFx0XFx0aXRlci1cXHUwMDNlbWF4X3NrID0gbmV3X2JhdGNoX3N6O1xcbjI5Mzk6XFx0XFxuMjk0MDpcXHRcXHRyZXR1cm4gMDtcXG4yOTQxOlxcdH1cXG4yOTQyOlxcdFxcbjI5NDM6XFx0c3RhdGljIHN0cnVjdCBzb2NrICpicGZfaXRlcl90Y3BfcmVzdW1lX2J1Y2tldChzdHJ1Y3Qgc29jayAqZmlyc3Rfc2ssXFxuMjk0NDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgdW5pb24gYnBmX3RjcF9pdGVyX2JhdGNoX2l0ZW0gKmNvb2tpZXMsXFxuMjk0NTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgaW50IG5fY29va2llcylcXG4yOTQ2OlxcdHtcXG4yOTQ3OlxcdFxcdHN0cnVjdCBobGlzdF9udWxsc19ub2RlICpub2RlO1xcbjI5NDg6XFx0XFx0c3RydWN0IHNvY2sgKnNrO1xcbjI5NDk6XFx0XFx0aW50IGk7XFxuMjk1MDpcXHRcXG4yOTUxOlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBuX2Nvb2tpZXM7IGkrKykge1xcbjI5NTI6XFx0XFx0XFx0c2sgPSBmaXJzdF9zaztcXG4yOTUzOlxcdFxcdFxcdHNrX251bGxzX2Zvcl9lYWNoX2Zyb20oc2ssIG5vZGUpXFxuMjk1NDpcXHRcXHRcXHRcXHRpZiAoY29va2llc1tpXS5jb29raWUgPT0gYXRvbWljNjRfcmVhZChcXHUwMDI2c2stXFx1MDAzZXNrX2Nvb2tpZSkpXFxuMjk1NTpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gc2s7XFxuMjk1NjpcXHRcXHR9XFxuMjk1NzpcXHRcXG4yOTU4OlxcdFxcdHJldHVybiBOVUxMO1xcbjI5NTk6XFx0fVxcbjI5NjA6XFx0XFxuMjk2MTpcXHRzdGF0aWMgc3RydWN0IHNvY2sgKmJwZl9pdGVyX3RjcF9yZXN1bWVfbGlzdGVuaW5nKHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxcbjI5NjI6XFx0e1xcbjI5NjM6XFx0XFx0c3RydWN0IGluZXRfaGFzaGluZm8gKmhpbmZvID0gc2VxX2ZpbGVfbmV0KHNlcSktXFx1MDAzZWlwdjQudGNwX2RlYXRoX3Jvdy5oYXNoaW5mbztcXG4yOTY0OlxcdFxcdHN0cnVjdCBicGZfdGNwX2l0ZXJfc3RhdGUgKml0ZXIgPSBzZXEtXFx1MDAzZXByaXZhdGU7XFxuMjk2NTpcXHRcXHRzdHJ1Y3QgdGNwX2l0ZXJfc3RhdGUgKnN0ID0gXFx1MDAyNml0ZXItXFx1MDAzZXN0YXRlO1xcbjI5NjY6XFx0XFx0dW5zaWduZWQgaW50IGZpbmRfY29va2llID0gaXRlci1cXHUwMDNlY3VyX3NrO1xcbjI5Njc6XFx0XFx0dW5zaWduZWQgaW50IGVuZF9jb29raWUgPSBpdGVyLVxcdTAwM2VlbmRfc2s7XFxuMjk2ODpcXHRcXHRpbnQgcmVzdW1lX2J1Y2tldCA9IHN0LVxcdTAwM2VidWNrZXQ7XFxuMjk2OTpcXHRcXHRzdHJ1Y3Qgc29jayAqc2s7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDAwOjQ1OjI2LjQ4MjI2ODg1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUzMzQyMjU5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLZXJuZWwgQ29uZmlndXJhdGlvbiBmb3IgQlBGLUVuYWJsZWQgVENQIEl0ZXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMga2VybmVsIGNvZGUgYW5kLCByaWdodCBvZmYgdGhlIGJhdCwgaXQncyBjbGVhciB0aGUgcmVsZXZhbnQgc2VjdGlvbiBpcyBnYXRlZCBieSBgQ09ORklHX0JQRl9TWVNDQUxMYC4gVGhhdCdzIHRoZSBrZXkgZW5hYmxpbmcgY29uZmlndXJhdGlvbi5cblxuTm93LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGdvdGNoYXMuIFNpbmNlIHdlJ3JlIGRlYWxpbmcgd2l0aCBgbmV0L2lwdjQvdGNwX2lwdjQuY2AsIGl0J3Mgc2FmZSB0byBhc3N1bWUgYENPTkZJR19JTkVUYCBhbmQgYENPTkZJR19UQ1BgIGFyZSBpbXBsaWNpdGx5IHJlcXVpcmVkLiBZb3Uga25vdywgdGhlIHVzdWFsIGRlcGVuZGVuY2llcyBmb3IgSVB2NCBUQ1AuIEJ1dCwgc2luY2UgdGhleSdyZSBiYXNpYyBwcmVyZXF1aXNpdGVzLCB3ZSB3b3VsZG4ndCBub3JtYWxseSBjYWxsIHRoZW0gb3V0IHVubGVzcyBpdCB3YXMgYSB2ZXJ5IHNwZWNpZmljIGRlcGVuZGVuY3kgb24gb25lIG9mIHRoZW0uIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIHRoZSBpbnRlcmVzdGluZyBvbmUsIHRoZSBvbmUgdGhhdCBtYWtlcyB0aGlzIGZlYXR1cmUgdGljay5cblxuQWxyaWdodCwgYmVmb3JlIEkgc2lnbiBvZmYsIGxldCBtZSBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBgYnBmX2l0ZXJfdGNwX2JhdGNoYCBmdW5jdGlvbiBpdHNlbGYuLi4gbWFrZSBzdXJlIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhhdCBmdW5jdGlvbiBpcyBjb3JyZWN0LiBKdXN0IHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMzYsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwMDo0NTozMC4wMTU2OTM1MDRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkzMDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY0L3RjcF9pcHY0LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzEyMCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMxMjA6XFx0XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmhpbmZvLVxcdTAwM2VsaGFzaDJbc3QtXFx1MDAzZWJ1Y2tldF0ubG9jayk7XFxuMzEyMTpcXHRcXHRlbHNlXFxuMzEyMjpcXHRcXHRcXHRzcGluX3VubG9ja19iaChpbmV0X2VoYXNoX2xvY2twKGhpbmZvLCBzdC1cXHUwMDNlYnVja2V0KSk7XFxuMzEyMzpcXHR9XFxuMzEyNDpcXHRcXG4zMTI1OlxcdHN0YXRpYyBzdHJ1Y3Qgc29jayAqYnBmX2l0ZXJfdGNwX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxcbjMxMjY6XFx0e1xcbjMxMjc6XFx0XFx0c3RydWN0IGJwZl90Y3BfaXRlcl9zdGF0ZSAqaXRlciA9IHNlcS1cXHUwMDNlcHJpdmF0ZTtcXG4zMTI4OlxcdFxcdHVuc2lnbmVkIGludCBleHBlY3RlZDtcXG4zMTI5OlxcdFxcdHN0cnVjdCBzb2NrICpzaztcXG4zMTMwOlxcdFxcdGludCBlcnI7XFxuMzEzMTpcXHRcXG4zMTMyOlxcdGFnYWluOlxcbjMxMzM6XFx0XFx0c2sgPSBicGZfaXRlcl90Y3BfcmVzdW1lKHNlcSk7XFxuMzEzNDpcXHRcXHRpZiAoIXNrKVxcbjMxMzU6XFx0XFx0XFx0cmV0dXJuIE5VTEw7IC8qIERvbmUgKi9cXG4zMTM2OlxcdFxcbjMxMzc6XFx0XFx0ZXhwZWN0ZWQgPSBicGZfaXRlcl9maWxsX2JhdGNoKHNlcSwgXFx1MDAyNnNrKTtcXG4zMTM4OlxcdFxcdGlmIChsaWtlbHkoaXRlci1cXHUwMDNlZW5kX3NrID09IGV4cGVjdGVkKSlcXG4zMTM5OlxcdFxcdFxcdGdvdG8gZG9uZTtcXG4zMTQwOlxcdFxcbjMxNDE6XFx0XFx0LyogQmF0Y2ggc2l6ZSB3YXMgdG9vIHNtYWxsLiAqL1xcbjMxNDI6XFx0XFx0YnBmX2l0ZXJfdGNwX3VubG9ja19idWNrZXQoc2VxKTtcXG4zMTQzOlxcdFxcdGJwZl9pdGVyX3RjcF9wdXRfYmF0Y2goaXRlcik7XFxuMzE0NDpcXHRcXHRlcnIgPSBicGZfaXRlcl90Y3BfcmVhbGxvY19iYXRjaChpdGVyLCBleHBlY3RlZCAqIDMgLyAyLFxcbjMxNDU6XFx0XFx0XFx0XFx0XFx0XFx0IEdGUF9VU0VSKTtcXG4zMTQ2OlxcdFxcdGlmIChlcnIpXFxuMzE0NzpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUihlcnIpO1xcbjMxNDg6XFx0XFxuMzE0OTpcXHRcXHRzayA9IGJwZl9pdGVyX3RjcF9yZXN1bWUoc2VxKTtcXG4zMTUwOlxcdFxcdGlmICghc2spXFxuMzE1MTpcXHRcXHRcXHRyZXR1cm4gTlVMTDsgLyogRG9uZSAqL1xcbjMxNTI6XFx0XFxuMzE1MzpcXHRcXHRleHBlY3RlZCA9IGJwZl9pdGVyX2ZpbGxfYmF0Y2goc2VxLCBcXHUwMDI2c2spO1xcbjMxNTQ6XFx0XFx0aWYgKGxpa2VseShpdGVyLVxcdTAwM2VlbmRfc2sgPT0gZXhwZWN0ZWQpKVxcbjMxNTU6XFx0XFx0XFx0Z290byBkb25lO1xcbjMxNTY6XFx0XFxuMzE1NzpcXHRcXHQvKiBCYXRjaCBzaXplIHdhcyBzdGlsbCB0b28gc21hbGwuIEhvbGQgb250byB0aGUgbG9jayB3aGlsZSB3ZSB0cnlcXG4zMTU4OlxcdFxcdCAqIGFnYWluIHdpdGggYSBsYXJnZXIgYmF0Y2ggdG8gbWFrZSBzdXJlIHRoZSBjdXJyZW50IGJ1Y2tldCdzIHNpemVcXG4zMTU5OlxcdFxcdCAqIGRvZXMgbm90IGNoYW5nZSBpbiB0aGUgbWVhbnRpbWUuXFxuMzE2MDpcXHRcXHQgKi9cXG4zMTYxOlxcdFxcdGVyciA9IGJwZl9pdGVyX3RjcF9yZWFsbG9jX2JhdGNoKGl0ZXIsIGV4cGVjdGVkLCBHRlBfTk9XQUlUKTtcXG4zMTYyOlxcdFxcdGlmIChlcnIpIHtcXG4zMTYzOlxcdFxcdFxcdGJwZl9pdGVyX3RjcF91bmxvY2tfYnVja2V0KHNlcSk7XFxuMzE2NDpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUihlcnIpO1xcbjMxNjU6XFx0XFx0fVxcbjMxNjY6XFx0XFxuMzE2NzpcXHRcXHRleHBlY3RlZCA9IGJwZl9pdGVyX2ZpbGxfYmF0Y2goc2VxLCBcXHUwMDI2c2spO1xcbjMxNjg6XFx0XFx0V0FSTl9PTl9PTkNFKGl0ZXItXFx1MDAzZWVuZF9zayAhPSBleHBlY3RlZCk7XFxuMzE2OTpcXHRkb25lOlxcbjMxNzA6XFx0XFx0YnBmX2l0ZXJfdGNwX3VubG9ja19idWNrZXQoc2VxKTtcXG4zMTcxOlxcdFxcdGlmICh1bmxpa2VseSghaXRlci1cXHUwMDNlZW5kX3NrKSkge1xcbjMxNzI6XFx0XFx0XFx0KytpdGVyLVxcdTAwM2VzdGF0ZS5idWNrZXQ7XFxuMzE3MzpcXHRcXHRcXHRnb3RvIGFnYWluO1xcbjMxNzQ6XFx0XFx0fVxcbjMxNzU6XFx0XFx0cmV0dXJuIGl0ZXItXFx1MDAzZWJhdGNoWzBdLnNrO1xcbjMxNzY6XFx0fVxcbjMxNzc6XFx0XFxuMzE3ODpcXHRzdGF0aWMgdm9pZCAqYnBmX2l0ZXJfdGNwX3NlcV9zdGFydChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgbG9mZl90ICpwb3MpXFxuMzE3OTpcXHR7XFxuMzE4MDpcXHRcXHQvKiBicGYgaXRlciBkb2VzIG5vdCBzdXBwb3J0IGxzZWVrLCBzbyBpdCBhbHdheXNcXG4zMTgxOlxcdFxcdCAqIGNvbnRpbnVlIGZyb20gd2hlcmUgaXQgd2FzIHN0b3AoKS1wZWQuXFxuMzE4MjpcXHRcXHQgKi9cXG4zMTgzOlxcdFxcdGlmICgqcG9zKVxcbjMxODQ6XFx0XFx0XFx0cmV0dXJuIGJwZl9pdGVyX3RjcF9iYXRjaChzZXEpO1xcbjMxODU6XFx0XFxuMzE4NjpcXHRcXHRyZXR1cm4gU0VRX1NUQVJUX1RPS0VOO1xcbjMxODc6XFx0fVxcbjMxODg6XFx0XFxuMzE4OTpcXHRzdGF0aWMgdm9pZCAqYnBmX2l0ZXJfdGNwX3NlcV9uZXh0KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2LCBsb2ZmX3QgKnBvcylcXG4zMTkwOlxcdHtcXG4zMTkxOlxcdFxcdHN0cnVjdCBicGZfdGNwX2l0ZXJfc3RhdGUgKml0ZXIgPSBzZXEtXFx1MDAzZXByaXZhdGU7XFxuMzE5MjpcXHRcXHRzdHJ1Y3QgdGNwX2l0ZXJfc3RhdGUgKnN0ID0gXFx1MDAyNml0ZXItXFx1MDAzZXN0YXRlO1xcbjMxOTM6XFx0XFx0c3RydWN0IHNvY2sgKnNrO1xcbjMxOTQ6XFx0XFxuMzE5NTpcXHRcXHQvKiBXaGVuZXZlciBzZXFfbmV4dCgpIGlzIGNhbGxlZCwgdGhlIGl0ZXItXFx1MDAzZWN1cl9zayBpc1xcbjMxOTY6XFx0XFx0ICogZG9uZSB3aXRoIHNlcV9zaG93KCksIHNvIGFkdmFuY2UgdG8gdGhlIG5leHQgc2sgaW5cXG4zMTk3OlxcdFxcdCAqIHRoZSBiYXRjaC5cXG4zMTk4OlxcdFxcdCAqL1xcbjMxOTk6XFx0XFx0aWYgKGl0ZXItXFx1MDAzZWN1cl9zayBcXHUwMDNjIGl0ZXItXFx1MDAzZWVuZF9zaykge1xcbjMyMDA6XFx0XFx0XFx0LyogS2VlcGluZyBzdC1cXHUwMDNlbnVtIGNvbnNpc3RlbnQgaW4gdGNwX2l0ZXJfc3RhdGUuXFxuMzIwMTpcXHRcXHRcXHQgKiBicGZfaXRlcl90Y3AgZG9lcyBub3QgdXNlIHN0LVxcdTAwM2VudW0uXFxuMzIwMjpcXHRcXHRcXHQgKiBtZXRhLnNlcV9udW0gaXMgdXNlZCBpbnN0ZWFkLlxcbjMyMDM6XFx0XFx0XFx0ICovXFxuMzIwNDpcXHRcXHRcXHRzdC1cXHUwMDNlbnVtKys7XFxuMzIwNTpcXHRcXHRcXHRzb2NrX2dlbl9wdXQoaXRlci1cXHUwMDNlYmF0Y2hbaXRlci1cXHUwMDNlY3VyX3NrKytdLnNrKTtcXG4zMjA2OlxcdFxcdH1cXG4zMjA3OlxcdFxcbjMyMDg6XFx0XFx0aWYgKGl0ZXItXFx1MDAzZWN1cl9zayBcXHUwMDNjIGl0ZXItXFx1MDAzZWVuZF9zaylcXG4zMjA5OlxcdFxcdFxcdHNrID0gaXRlci1cXHUwMDNlYmF0Y2hbaXRlci1cXHUwMDNlY3VyX3NrXS5zaztcXG4zMjEwOlxcdFxcdGVsc2VcXG4zMjExOlxcdFxcdFxcdHNrID0gYnBmX2l0ZXJfdGNwX2JhdGNoKHNlcSk7XFxuMzIxMjpcXHRcXG4zMjEzOlxcdFxcdCsrKnBvcztcXG4zMjE0OlxcdFxcdC8qIEtlZXBpbmcgc3QtXFx1MDAzZWxhc3RfcG9zIGNvbnNpc3RlbnQgaW4gdGNwX2l0ZXJfc3RhdGUuXFxuMzIxNTpcXHRcXHQgKiBicGYgaXRlciBkb2VzIG5vdCBkbyBsc2Vlaywgc28gc3QtXFx1MDAzZWxhc3RfcG9zIGFsd2F5cyBlcXVhbHMgdG8gKnBvcy5cXG4zMjE2OlxcdFxcdCAqL1xcbjMyMTc6XFx0XFx0c3QtXFx1MDAzZWxhc3RfcG9zID0gKnBvcztcXG4zMjE4OlxcdFxcdHJldHVybiBzaztcXG4zMjE5OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDA6NDU6MzAuMDE1ODg4OTY0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1Mjg4MjkwMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIFRDUCBJdGVyYXRvciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggZGl2ZXMgaW50byBgYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoYCBhbmQgYGJwZl9pdGVyX3RjcF9iYXRjaGAsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgQlBGIFRDUCBpdGVyYXRvcnMuIEltbWVkaWF0ZWx5LCBpdCBzb3VuZHMgbGlrZSBhIGZ1bmN0aW9uYWwgZml4IGFuZCBidWcgY29ycmVjdGlvbiwgd2hpY2ggYWx3YXlzIHBpcXVlcyBteSBpbnRlcmVzdC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZXMgcmV2b2x2ZSBhcm91bmQgYWRkcmVzc2luZyBzb21lIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByZWxhdGVkIGlzc3VlcyB0aGF0IGNvdWxkIG9jY3VyIHdoZW4gc29ja2V0cyB3aXRoIGEgemVybyByZWZjb3VudCBhcmUgaW5hZHZlcnRlbnRseSBhZGRlZCB0byBhIGJhdGNoLiBJdCBhcHBlYXJzIHRvIGFsc28gaW5jb3Jwb3JhdGUgcm9idXN0IGhhbmRsaW5nIG9mIGVtcHR5IGJhdGNoZXMsIGVuc3VyaW5nIHNlYW1sZXNzIHByb2Nlc3NpbmcgaW4gdGhlIGxvZ2ljLiBUaGVzZSBhcmUgY3JpdGljYWwgY2hhbmdlcywgZXNwZWNpYWxseSBjb25zaWRlcmluZyB0aGlzIGlzIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgdGhlIEJQRiBpdGVyYXRvcnMgZm9yIFRDUCBzb2NrZXRzIGludGVyYWN0IHdpdGguXG5cbldvcnRoIGZ1enppbmc/IEFic29sdXRlbHkuIEdpdmVuIHRoZSBuYXR1cmUgb2YgaXRlcmF0b3IgbW9kaWZpY2F0aW9ucyBhbmQgdGhlIHBvdGVudGlhbCBmb3IgbWVtb3J5LXJlbGF0ZWQgZXJyb3JzLCB0aGlzIHdhcnJhbnRzIHRob3JvdWdoIGZ1enppbmcuXG5cbk15IGZvY3VzIHNob3VsZCBiZSBob25lZCBpbiBvbiBgYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoYCBhbmQgYGJwZl9pdGVyX3RjcF9iYXRjaGAuXG5cbkVuYWJsaW5nIGBCUEZfU1lTQ0FMTGAgc2VlbXMgbGlrZSBhIGdpdmVuLCB0byBiZSBhYmxlIHRvIHByb3Blcmx5IGV2YWx1YXRlIHRoZSBmaXguXG5cbkp1c3QgdG8gYmUgc3VyZSwgbGV0IG1lIHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIGZ1bmN0aW9uIG5hbWUgYGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaGAgaXMgaW5kZWVkIGNvcnJlY3QuIFllcywgaXQncyByaWdodCB0aGVyZSBpbiB0aGUgZGlmZiwgYHN0YXRpYyB1bnNpZ25lZCBpbnQgYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxLGBcblxuQWxyaWdodCwgdGhhdCdzIGNvbmZpcm1lZC4gTm93LCBpdCdzIHRpbWUgdG8gc2V0IHVwIHRoZSByZXN1bHRzIGFuZCBwcm9jZWVkIHdpdGggYSBkZXRhaWxlZCBhbmFseXNpcyBhbmQgdGVzdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODAxOCwiT3V0cHV0VG9rZW5zIjoxMTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwMDo0NTozNS41NDQ3MTk5MjRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzIxODA4NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoXCIsXG4gICAgXCJicGZfaXRlcl90Y3BfYmF0Y2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIFRDUCBpdGVyYXRvciBsb2dpYyB0byBzYWZlbHkgaGFuZGxlIHNvY2tldHMgd2l0aCB6ZXJvIHJlZmNvdW50IGFuZCBjb3JyZWN0bHkgc2tpcCBlbXB0eSBidWNrZXRzIGR1cmluZyBiYXRjaGluZy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBpdGVyYXRvcnMgZm9yIFRDUCBzb2NrZXRzKSB0aGF0IGZpeCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgbG9naWMgYnVncy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaFwiLFxuICAgIFwiYnBmX2l0ZXJfdGNwX2JhdGNoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiBUQ1AgaXRlcmF0b3IgbG9naWMgdG8gc2FmZWx5IGhhbmRsZSBzb2NrZXRzIHdpdGggemVybyByZWZjb3VudCBhbmQgY29ycmVjdGx5IHNraXAgZW1wdHkgYnVja2V0cyBkdXJpbmcgYmF0Y2hpbmcuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChCUEYgaXRlcmF0b3JzIGZvciBUQ1Agc29ja2V0cykgdGhhdCBmaXggcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGxvZ2ljIGJ1Z3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7mtd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-20 00:38:44 +0000 UTC FinishedAt: 2026-06-20 00:45:37 +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": "4549871118cf616eecdd2d939f78e3b9e1dddc48", "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": "4549871118cf616eecdd2d939f78e3b9e1dddc48", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "ed4c90c5-b637-4c02-8cff-7141aeca235f" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "bpf_iter_tcp_established_batch", "bpf_iter_tcp_batch" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDAwOjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoJiMzNDssCiAgICAmIzM0O2JwZl9pdGVyX3RjcF9iYXRjaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIFRDUCBpdGVyYXRvciBsb2dpYyB0byBzYWZlbHkgaGFuZGxlIHNvY2tldHMgd2l0aCB6ZXJvIHJlZmNvdW50IGFuZCBjb3JyZWN0bHkgc2tpcCBlbXB0eSBidWNrZXRzIGR1cmluZyBiYXRjaGluZy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBpdGVyYXRvcnMgZm9yIFRDUCBzb2NrZXRzKSB0aGF0IGZpeCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgbG9naWMgYnVncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAwMDo0NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDY3OWY0ZmUxZmU5ZWExYTllNTM5N2YxOTc1OGYxYjAzYjJhMDI2ZWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1biAyMCAwMDo0NToxMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaXB2NC5jIGIvbmV0L2lwdjQvdGNwX2lwdjQuY1xuaW5kZXggZmRjODExNTBmZjZjZjkuLjkyMzQyZGNjNjg5MmFmIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdGNwX2lwdjQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX2lwdjQuY1xuQEAgLTMwNzQsMjUgJiM0MzszMDc0LDI1IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxLFxuIHtcbiBcdHN0cnVjdCBicGZfdGNwX2l0ZXJfc3RhdGUgKml0ZXIgPSBzZXEtXHUwMDNlcHJpdmF0ZTtcbiBcdHN0cnVjdCBobGlzdF9udWxsc19ub2RlICpub2RlO1xuLVx0dW5zaWduZWQgaW50IGV4cGVjdGVkID0gMTtcbi1cdHN0cnVjdCBzb2NrICpzaztcbi1cbi1cdHNvY2tfaG9sZCgqc3RhcnRfc2spO1xuLVx0aXRlci1cdTAwM2ViYXRjaFtpdGVyLVx1MDAzZWVuZF9zayYjNDM7JiM0MztdLnNrID0gKnN0YXJ0X3NrO1xuJiM0MztcdHVuc2lnbmVkIGludCBleHBlY3RlZCA9IDA7XG4mIzQzO1x0c3RydWN0IHNvY2sgKnNrID0gKnN0YXJ0X3NrO1xuIFxuLVx0c2sgPSBza19udWxsc19uZXh0KCpzdGFydF9zayk7XG4gXHQqc3RhcnRfc2sgPSBOVUxMO1xuIFx0c2tfbnVsbHNfZm9yX2VhY2hfZnJvbShzaywgbm9kZSkge1xuLVx0XHRpZiAoc2VxX3NrX21hdGNoKHNlcSwgc2spKSB7XG4tXHRcdFx0aWYgKGl0ZXItXHUwMDNlZW5kX3NrIFx1MDAzYyBpdGVyLVx1MDAzZW1heF9zaykge1xuLVx0XHRcdFx0c29ja19ob2xkKHNrKTtcbi1cdFx0XHRcdGl0ZXItXHUwMDNlYmF0Y2hbaXRlci1cdTAwM2VlbmRfc2smIzQzOyYjNDM7XS5zayA9IHNrO1xuLVx0XHRcdH0gZWxzZSBpZiAoISpzdGFydF9zaykge1xuLVx0XHRcdFx0LyogUmVtZW1iZXIgd2hlcmUgd2UgbGVmdCBvZmYuICovXG4tXHRcdFx0XHQqc3RhcnRfc2sgPSBzaztcbi1cdFx0XHR9XG4tXHRcdFx0ZXhwZWN0ZWQmIzQzOyYjNDM7O1xuJiM0MztcdFx0aWYgKCFzZXFfc2tfbWF0Y2goc2VxLCBzaykpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0aWYgKGl0ZXItXHUwMDNlZW5kX3NrIFx1MDAzYyBpdGVyLVx1MDAzZW1heF9zaykge1xuJiM0MztcdFx0XHQvKiByZXFza19xdWV1ZV9oYXNoX3JlcSgpIGluc2VydHMgd2l0aCBza19yZWZjbnQgPT0gMFxuJiM0MztcdFx0XHQgKiBhbmQgcmVmY291bnRfc2V0KClzIGl0IGFmdGVyIHRoZSBidWNrZXQgbG9jayBkcm9wcy5cbiYjNDM7XHRcdFx0ICovXG4mIzQzO1x0XHRcdGlmICh1bmxpa2VseSghcmVmY291bnRfaW5jX25vdF96ZXJvKFx1MDAyNnNrLVx1MDAzZXNrX3JlZmNudCkpKVxuJiM0MztcdFx0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0XHRpdGVyLVx1MDAzZWJhdGNoW2l0ZXItXHUwMDNlZW5kX3NrJiM0MzsmIzQzO10uc2sgPSBzaztcbiYjNDM7XHRcdH0gZWxzZSBpZiAoISpzdGFydF9zaykge1xuJiM0MztcdFx0XHQvKiBSZW1lbWJlciB3aGVyZSB3ZSBsZWZ0IG9mZi4gKi9cbiYjNDM7XHRcdFx0KnN0YXJ0X3NrID0gc2s7XG4gXHRcdH1cbiYjNDM7XHRcdGV4cGVjdGVkJiM0MzsmIzQzOztcbiBcdH1cbiBcbiBcdHJldHVybiBleHBlY3RlZDtcbkBAIC0zMTI5LDYgJiM0MzszMTI5LDcgQEAgc3RhdGljIHN0cnVjdCBzb2NrICpicGZfaXRlcl90Y3BfYmF0Y2goc3RydWN0IHNlcV9maWxlICpzZXEpXG4gXHRzdHJ1Y3Qgc29jayAqc2s7XG4gXHRpbnQgZXJyO1xuIFxuJiM0MzthZ2FpbjpcbiBcdHNrID0gYnBmX2l0ZXJfdGNwX3Jlc3VtZShzZXEpO1xuIFx0aWYgKCFzaylcbiBcdFx0cmV0dXJuIE5VTEw7IC8qIERvbmUgKi9cbkBAIC0zMTY3LDYgJiM0MzszMTY4LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqYnBmX2l0ZXJfdGNwX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxuIFx0V0FSTl9PTl9PTkNFKGl0ZXItXHUwMDNlZW5kX3NrICE9IGV4cGVjdGVkKTtcbiBkb25lOlxuIFx0YnBmX2l0ZXJfdGNwX3VubG9ja19idWNrZXQoc2VxKTtcbiYjNDM7XHRpZiAodW5saWtlbHkoIWl0ZXItXHUwMDNlZW5kX3NrKSkge1xuJiM0MztcdFx0JiM0MzsmIzQzO2l0ZXItXHUwMDNlc3RhdGUuYnVja2V0O1xuJiM0MztcdFx0Z290byBhZ2FpbjtcbiYjNDM7XHR9XG4gXHRyZXR1cm4gaXRlci1cdTAwM2ViYXRjaFswXS5zaztcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDA6NDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaXRlcl90Y3BfZXN0YWJsaXNoZWRfYmF0Y2gmIzM0OywKICAgICYjMzQ7YnBmX2l0ZXJfdGNwX2JhdGNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgVENQIGl0ZXJhdG9yIGxvZ2ljIHRvIHNhZmVseSBoYW5kbGUgc29ja2V0cyB3aXRoIHplcm8gcmVmY291bnQgYW5kIGNvcnJlY3RseSBza2lwIGVtcHR5IGJ1Y2tldHMgZHVyaW5nIGJhdGNoaW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoQlBGIGl0ZXJhdG9ycyBmb3IgVENQIHNvY2tldHMpIHRoYXQgZml4IHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBsb2dpYyBidWdzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2NzlmNGZlMWZlOWVhMWE5ZTUzOTdmMTk3NThmMWIwM2IyYTAyNmVmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdW4gMjAgMDA6NDU6MTIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaXB2NC5jIGIvbmV0L2lwdjQvdGNwX2lwdjQuYwppbmRleCBmZGM4MTE1MGZmNmNmOS4uOTIzNDJkY2M2ODkyYWYgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9pcHY0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX2lwdjQuYwpAQCAtMzA3NCwyNSAmIzQzOzMwNzQsMjUgQEAgc3RhdGljIHVuc2lnbmVkIGludCBicGZfaXRlcl90Y3BfZXN0YWJsaXNoZWRfYmF0Y2goc3RydWN0IHNlcV9maWxlICpzZXEsCiB7CiAJc3RydWN0IGJwZl90Y3BfaXRlcl9zdGF0ZSAqaXRlciA9IHNlcS0mZ3Q7cHJpdmF0ZTsKIAlzdHJ1Y3QgaGxpc3RfbnVsbHNfbm9kZSAqbm9kZTsKLQl1bnNpZ25lZCBpbnQgZXhwZWN0ZWQgPSAxOwotCXN0cnVjdCBzb2NrICpzazsKLQotCXNvY2tfaG9sZCgqc3RhcnRfc2spOwotCWl0ZXItJmd0O2JhdGNoW2l0ZXItJmd0O2VuZF9zayYjNDM7JiM0MztdLnNrID0gKnN0YXJ0X3NrOwomIzQzOwl1bnNpZ25lZCBpbnQgZXhwZWN0ZWQgPSAwOwomIzQzOwlzdHJ1Y3Qgc29jayAqc2sgPSAqc3RhcnRfc2s7CiAKLQlzayA9IHNrX251bGxzX25leHQoKnN0YXJ0X3NrKTsKIAkqc3RhcnRfc2sgPSBOVUxMOwogCXNrX251bGxzX2Zvcl9lYWNoX2Zyb20oc2ssIG5vZGUpIHsKLQkJaWYgKHNlcV9za19tYXRjaChzZXEsIHNrKSkgewotCQkJaWYgKGl0ZXItJmd0O2VuZF9zayAmbHQ7IGl0ZXItJmd0O21heF9zaykgewotCQkJCXNvY2tfaG9sZChzayk7Ci0JCQkJaXRlci0mZ3Q7YmF0Y2hbaXRlci0mZ3Q7ZW5kX3NrJiM0MzsmIzQzO10uc2sgPSBzazsKLQkJCX0gZWxzZSBpZiAoISpzdGFydF9zaykgewotCQkJCS8qIFJlbWVtYmVyIHdoZXJlIHdlIGxlZnQgb2ZmLiAqLwotCQkJCSpzdGFydF9zayA9IHNrOwotCQkJfQotCQkJZXhwZWN0ZWQmIzQzOyYjNDM7OwomIzQzOwkJaWYgKCFzZXFfc2tfbWF0Y2goc2VxLCBzaykpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CQlpZiAoaXRlci0mZ3Q7ZW5kX3NrICZsdDsgaXRlci0mZ3Q7bWF4X3NrKSB7CiYjNDM7CQkJLyogcmVxc2tfcXVldWVfaGFzaF9yZXEoKSBpbnNlcnRzIHdpdGggc2tfcmVmY250ID09IDAKJiM0MzsJCQkgKiBhbmQgcmVmY291bnRfc2V0KClzIGl0IGFmdGVyIHRoZSBidWNrZXQgbG9jayBkcm9wcy4KJiM0MzsJCQkgKi8KJiM0MzsJCQlpZiAodW5saWtlbHkoIXJlZmNvdW50X2luY19ub3RfemVybygmYW1wO3NrLSZndDtza19yZWZjbnQpKSkKJiM0MzsJCQkJY29udGludWU7CiYjNDM7CQkJaXRlci0mZ3Q7YmF0Y2hbaXRlci0mZ3Q7ZW5kX3NrJiM0MzsmIzQzO10uc2sgPSBzazsKJiM0MzsJCX0gZWxzZSBpZiAoISpzdGFydF9zaykgewomIzQzOwkJCS8qIFJlbWVtYmVyIHdoZXJlIHdlIGxlZnQgb2ZmLiAqLwomIzQzOwkJCSpzdGFydF9zayA9IHNrOwogCQl9CiYjNDM7CQlleHBlY3RlZCYjNDM7JiM0Mzs7CiAJfQogCiAJcmV0dXJuIGV4cGVjdGVkOwpAQCAtMzEyOSw2ICYjNDM7MzEyOSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqYnBmX2l0ZXJfdGNwX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxKQogCXN0cnVjdCBzb2NrICpzazsKIAlpbnQgZXJyOwogCiYjNDM7YWdhaW46CiAJc2sgPSBicGZfaXRlcl90Y3BfcmVzdW1lKHNlcSk7CiAJaWYgKCFzaykKIAkJcmV0dXJuIE5VTEw7IC8qIERvbmUgKi8KQEAgLTMxNjcsNiAmIzQzOzMxNjgsMTAgQEAgc3RhdGljIHN0cnVjdCBzb2NrICpicGZfaXRlcl90Y3BfYmF0Y2goc3RydWN0IHNlcV9maWxlICpzZXEpCiAJV0FSTl9PTl9PTkNFKGl0ZXItJmd0O2VuZF9zayAhPSBleHBlY3RlZCk7CiBkb25lOgogCWJwZl9pdGVyX3RjcF91bmxvY2tfYnVja2V0KHNlcSk7CiYjNDM7CWlmICh1bmxpa2VseSghaXRlci0mZ3Q7ZW5kX3NrKSkgewomIzQzOwkJJiM0MzsmIzQzO2l0ZXItJmd0O3N0YXRlLmJ1Y2tldDsKJiM0MzsJCWdvdG8gYWdhaW47CiYjNDM7CX0KIAlyZXR1cm4gaXRlci0mZ3Q7YmF0Y2hbMF0uc2s7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDA6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQxNwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDMwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBUQ1AgU29ja2V0IEJQRiBJdGVyYXRvciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIHRvdWNoaW5nIGBuZXQvaXB2NC90Y3BfaXB2NC5jYC4gTXkgaW1tZWRpYXRlIGludGVyZXN0IGlzIHBpcXVlZCBiZWNhdXNlIGl0JiMzOTtzIG1lc3Npbmcgd2l0aCBgYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoYCBhbmQgYGJwZl9pdGVyX3RjcF9iYXRjaGAuIFRoZXNlIGFyZSBCUEYgaXRlcmF0b3JzLCBzbyBpdCYjMzk7cyBrZXJuZWwtbGV2ZWwgc3R1ZmYsIGFuZCBpdCBzb3VuZHMgbGlrZSBmdW5jdGlvbmFsIGNoYW5nZXMuIERlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQmIzM5O3Mgd29ydGggYSBjbG9zZXIgbG9vayBhbmQsIGZyYW5rbHksIG5lZWRzIGZ1enppbmcg4oCTIEkmIzM5O20gbWFya2luZyB0aGF0IGFzIGEgJiMzNDt0cnVlJiMzNDsgZm9yIG15IG1lbnRhbCBjaGVja2xpc3QuCgpUaGUgY29yZSBvZiB0aGUgcGF0Y2ggc2VlbXMgdG8gYmUgYWRkcmVzc2luZyBhbiBgc2tfcmVmY250YCBpc3N1ZS4gVGhleSYjMzk7cmUgd2lzZWx5IHN3YXBwaW5nIGBzb2NrX2hvbGQoc2spYCBmb3IgYHJlZmNvdW50X2luY19ub3RfemVybygmYW1wO3NrLSZndDtza19yZWZjbnQpYC4gVGhhdOKAmXMgYSBnb29kIGNhdGNoOyB3ZSBkb24mIzM5O3Qgd2FudCB0byBpbmNyZW1lbnQgYSB6ZXJvIHJlZmNvdW50LiBUaGUgYGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaGAgY2hhbmdlIHNlZW1zIHRvIGJlIGNhcmVmdWxseSBhdm9pZGluZyBhbiB1bmNvbmRpdGlvbmFsIGhvbGQgb24gYHN0YXJ0X3NrYCBhbmQsIGluc3RlYWQsIGNoZWNraW5nIHRoZSByZWZjb3VudCBmb3IgYWxsIG1hdGNoaW5nIHNvY2tldHMuIE1ha2VzIHNlbnNlLCB0cnlpbmcgdG8gYmUgbW9yZSByb2J1c3QuCgpJJiMzOTttIGFsc28gc2VlaW5nIGEgYGdvdG8gYWdhaW5gIGxvb3AgaW4gYGJwZl9pdGVyX3RjcF9iYXRjaGAgd2hlbiBgaXRlci0mZ3Q7ZW5kX3NrYCBiZWNvbWVzIDAgYWZ0ZXIgYmF0Y2hpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgbG9naWMgYmV0dGVyOyBpdCBmZWVscyBsaWtlIGEgcmV0cnkgbWVjaGFuaXNtLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGdyYXNwIHdoeSB0aGF0JiMzOTtzIG5lY2Vzc2FyeS4KCkdpdmVuIHRoYXQgdGhlc2UgYXJlIEJQRiBpdGVyYXRvcnMsIEkgc2hvdWxkIGNoZWNrIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBsaW5rZWQgdG8gYG5ldC9pcHY0L3RjcF9pcHY0LmNgLiBJJiMzOTtsbCBjcm9zcy1yZWZlcmVuY2UgdGhlIGBDT05GSUdfQlBGX1NZU0NBTExgIG9wdGlvbiBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgZGVwZW5kZW5jaWVzIG9yIGNvbmZpZ3VyYXRpb25zIHRoYXQgY291bGQgaW5mbHVlbmNlIGhvdyB0aGVzZSBjaGFuZ2VzIGJlaGF2ZS4gSSBuZWVkIHRvIGtub3cgaG93IHRoZXNlIGNoYW5nZXMgYXJlIGNvbnRyb2xsZWQgb3IgdHJpZ2dlcmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDAwOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9pdGVyX3RjcF9iYXRjaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9pcHY0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2lwdjQuYz0zMTEzPXN0YXRpYyB2b2lkIGJwZl9pdGVyX3RjcF91bmxvY2tfYnVja2V0KHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzEyNC1cbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzEyNTpzdGF0aWMgc3RydWN0IHNvY2sgKmJwZl9pdGVyX3RjcF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzEyNi17XG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYz0zMTc4PXN0YXRpYyB2b2lkICpicGZfaXRlcl90Y3Bfc2VxX3N0YXJ0KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBsb2ZmX3QgKnBvcylcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMxODMtXHRpZiAoKnBvcylcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzE4NDpcdFx0cmV0dXJuIGJwZl9pdGVyX3RjcF9iYXRjaChzZXEpO1xubmV0L2lwdjQvdGNwX2lwdjQuYy0zMTg1LVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM9MzE4OT1zdGF0aWMgdm9pZCAqYnBmX2l0ZXJfdGNwX3NlcV9uZXh0KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2LCBsb2ZmX3QgKnBvcylcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyMTAtXHRlbHNlXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMyMTE6XHRcdHNrID0gYnBmX2l0ZXJfdGNwX2JhdGNoKHNlcSk7XG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyMTItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDA6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUzMwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyB0aGUgcm9sZSBvZiB0aGUgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIEJQRiBJdGVyYXRvciBDb25maWd1cmF0aW9ucyBpbiBUQ1AvSVB2NCoqCgpSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiB3ZSYjMzk7dmUgZ290IGFueSBzcGVjaWFsIGNvbmZpZ3VyYXRpb25zLCBvcHRpbWl6YXRpb25zLCBvciBwZXJoYXBzIGN1c3RvbSBoYW5kbGluZyBmb3IgQlBGIGl0ZXJhdG9ycyBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgbmV0L2lwdjQvdGNwX2lwdjQuY2Agc291cmNlIGZpbGUuIE15IGV4cGVjdGF0aW9uIGlzIHRoYXQgdGhpcyBhcmVhIHdvdWxkIGJlIHRoZSBtb3N0IG9idmlvdXMgcGxhY2UgdG8gZmluZCBhbnl0aGluZyByZWxldmFudCwgZ2l2ZW4gaXRzIGZvY3VzIG9uIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIFRDUCBhbmQgSVB2NC4gSSYjMzk7bGwgbmVlZCB0byBjb25kdWN0IGEgcXVpY2sgc2VhcmNoIHRvIGVuc3VyZSB0aGF0IGFueSBCUEYgaXRlcmF0b3IgaW50ZWdyYXRpb24gaXMgYWNjb3VudGVkIGZvciB3aXRoaW4gdGhpcyBwYXJ0aWN1bGFyIGNvZGUgbW9kdWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDAwOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19CUEYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaXB2NC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9pcHY0LmM9Mjg1MT1zdGF0aWMgaW50IHRjcDRfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0yODc1LVxubmV0L2lwdjQvdGNwX2lwdjQuYzoyODc2OiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMjg3Ny11bmlvbiBicGZfdGNwX2l0ZXJfYmF0Y2hfaXRlbSB7XG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYz0zMjg2PXN0YXRpYyB1bnNpZ25lZCBzaG9ydCBzZXFfZmlsZV9mYW1pbHkoY29uc3Qgc3RydWN0IHNlcV9maWxlICpzZXEpXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjg5LVxubmV0L2lwdjQvdGNwX2lwdjQuYzozMjkwOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzI5MS1cdC8qIEl0ZXJhdGVkIGZyb20gYnBmX2l0ZXIuICBMZXQgdGhlIGJwZiBwcm9nIHRvIGZpbHRlciBpbnN0ZWFkLiAqL1xuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM9MzM0MT1zdHJ1Y3QgcHJvdG8gdGNwX3Byb3QgPSB7XG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMzY1LVx0LnB1dF9wb3J0XHRcdD0gaW5ldF9wdXRfcG9ydCxcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzM2NjojaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMzNjctXHQucHNvY2tfdXBkYXRlX3NrX3Byb3RcdD0gdGNwX2JwZl91cGRhdGVfcHJvdG8sXG4tLVxubmV0L2lwdjQvdGNwX2lwdjQuYz0zNTY0PXN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgX19uZXRfaW5pdGRhdGEgdGNwX3NrX29wcyA9IHtcbi0tXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTM1NjktXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjM1NzA6I2lmIGRlZmluZWQoQ09ORklHX0JQRl9TWVNDQUxMKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfUFJPQ19GUylcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzU3MS1ERUZJTkVfQlBGX0lURVJfRlVOQyh0Y3AsIHN0cnVjdCBicGZfaXRlcl9tZXRhICptZXRhLFxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmM9MzY0Mz12b2lkIF9faW5pdCB0Y3BfdjRfaW5pdCh2b2lkKVxuLS1cbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzY2Ny1cbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzY2ODojaWYgZGVmaW5lZChDT05GSUdfQlBGX1NZU0NBTEwpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19QUk9DX0ZTKVxubmV0L2lwdjQvdGNwX2lwdjQuYy0zNjY5LVx0YnBmX2l0ZXJfcmVnaXN0ZXIoKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAwMDo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzY0CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBgYnBmX2l0ZXJfdGNwX2JhdGNoYCBDb25kaXRpb25hbCBDb21waWxhdGlvbioqCgpBbHJpZ2h0LCB0aGUgY29kZSBJJiMzOTttIGxvb2tpbmcgYXQsIHNwZWNpZmljYWxseSB0aGUgYGJwZl9pdGVyX3RjcF9iYXRjaGAgZnVuY3Rpb24sIHNlZW1zIHRvIGJlIGdhdGVkIGJlaGluZCBgI2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTGAuIFRoYXQmIzM5O3MgYSBsaXR0bGUgc3VycHJpc2luZywgSSB0aG91Z2h0IGl0IG1pZ2h0IGJlIGRlZmluZWQgZWxzZXdoZXJlLCBidXQgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyBlbnN1cmluZyB0aGF0IHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBhcmUgZXhhY3RseSBhcyBJIGV4cGVjdC4gVGltZSB0byBxdWlja2x5IHZlcmlmeSB0aGUgZmlsZSBjb250ZW50cyB0byBjb25maXJtIHRoaXMgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSYjMzk7cyBzY29wZSBhbmQgdGhlIGltcGxpY2F0aW9ucyBmb3IgdGhlIGJ1aWxkIHByb2Nlc3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXJlIGlzIGFuIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uIHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDA6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfaXB2NC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjg3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7Mjg3MDpcdFx0XHRnZXRfdGNwNF9zb2NrKHYsIHNlcSwgc3QtXHUwMDNlbnVtKTtcbjI4NzE6XHRvdXQ6XG4yODcyOlx0XHRzZXFfcGFkKHNlcSwgJiMzOTtcXG4mIzM5Oyk7XG4yODczOlx0XHRyZXR1cm4gMDtcbjI4NzQ6XHR9XG4yODc1Olx0XG4yODc2Olx0I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxuMjg3NzpcdHVuaW9uIGJwZl90Y3BfaXRlcl9iYXRjaF9pdGVtIHtcbjI4Nzg6XHRcdHN0cnVjdCBzb2NrICpzaztcbjI4Nzk6XHRcdF9fdTY0IGNvb2tpZTtcbjI4ODA6XHR9O1xuMjg4MTpcdFxuMjg4MjpcdHN0cnVjdCBicGZfdGNwX2l0ZXJfc3RhdGUge1xuMjg4MzpcdFx0c3RydWN0IHRjcF9pdGVyX3N0YXRlIHN0YXRlO1xuMjg4NDpcdFx0dW5zaWduZWQgaW50IGN1cl9zaztcbjI4ODU6XHRcdHVuc2lnbmVkIGludCBlbmRfc2s7XG4yODg2Olx0XHR1bnNpZ25lZCBpbnQgbWF4X3NrO1xuMjg4NzpcdFx0dW5pb24gYnBmX3RjcF9pdGVyX2JhdGNoX2l0ZW0gKmJhdGNoO1xuMjg4ODpcdH07XG4yODg5Olx0XG4yODkwOlx0c3RydWN0IGJwZl9pdGVyX190Y3Age1xuMjg5MTpcdFx0X19icGZfbWRfcHRyKHN0cnVjdCBicGZfaXRlcl9tZXRhICosIG1ldGEpO1xuMjg5MjpcdFx0X19icGZfbWRfcHRyKHN0cnVjdCBzb2NrX2NvbW1vbiAqLCBza19jb21tb24pO1xuMjg5MzpcdFx0dWlkX3QgdWlkIF9fYWxpZ25lZCg4KTtcbjI4OTQ6XHR9O1xuMjg5NTpcdFxuMjg5NjpcdHN0YXRpYyBpbnQgdGNwX3Byb2dfc2VxX3Nob3coc3RydWN0IGJwZl9wcm9nICpwcm9nLCBzdHJ1Y3QgYnBmX2l0ZXJfbWV0YSAqbWV0YSxcbjI4OTc6XHRcdFx0XHQgICAgIHN0cnVjdCBzb2NrX2NvbW1vbiAqc2tfY29tbW9uLCB1aWRfdCB1aWQpXG4yODk4Olx0e1xuMjg5OTpcdFx0c3RydWN0IGJwZl9pdGVyX190Y3AgY3R4O1xuMjkwMDpcdFxuMjkwMTpcdFx0bWV0YS1cdTAwM2VzZXFfbnVtLS07ICAvKiBza2lwIFNFUV9TVEFSVF9UT0tFTiAqL1xuMjkwMjpcdFx0Y3R4Lm1ldGEgPSBtZXRhO1xuMjkwMzpcdFx0Y3R4LnNrX2NvbW1vbiA9IHNrX2NvbW1vbjtcbjI5MDQ6XHRcdGN0eC51aWQgPSB1aWQ7XG4yOTA1Olx0XHRyZXR1cm4gYnBmX2l0ZXJfcnVuX3Byb2cocHJvZywgXHUwMDI2Y3R4KTtcbjI5MDY6XHR9XG4yOTA3Olx0XG4yOTA4Olx0c3RhdGljIHZvaWQgYnBmX2l0ZXJfdGNwX3B1dF9iYXRjaChzdHJ1Y3QgYnBmX3RjcF9pdGVyX3N0YXRlICppdGVyKVxuMjkwOTpcdHtcbjI5MTA6XHRcdHVuaW9uIGJwZl90Y3BfaXRlcl9iYXRjaF9pdGVtICppdGVtO1xuMjkxMTpcdFx0dW5zaWduZWQgaW50IGN1cl9zayA9IGl0ZXItXHUwMDNlY3VyX3NrO1xuMjkxMjpcdFx0X191NjQgY29va2llO1xuMjkxMzpcdFxuMjkxNDpcdFx0LyogUmVtZW1iZXIgdGhlIGNvb2tpZXMgb2YgdGhlIHNvY2tldHMgd2UgaGF2ZW4mIzM5O3Qgc2VlbiB5ZXQsIHNvIHdlIGNhblxuMjkxNTpcdFx0ICogcGljayB1cCB3aGVyZSB3ZSBsZWZ0IG9mZiBuZXh0IHRpbWUgYXJvdW5kLlxuMjkxNjpcdFx0ICovXG4yOTE3Olx0XHR3aGlsZSAoY3VyX3NrIFx1MDAzYyBpdGVyLVx1MDAzZWVuZF9zaykge1xuMjkxODpcdFx0XHRpdGVtID0gXHUwMDI2aXRlci1cdTAwM2ViYXRjaFtjdXJfc2smIzQzOyYjNDM7XTtcbjI5MTk6XHRcdFx0Y29va2llID0gc29ja19nZW5fY29va2llKGl0ZW0tXHUwMDNlc2spO1xuMjkyMDpcdFx0XHRzb2NrX2dlbl9wdXQoaXRlbS1cdTAwM2Vzayk7XG4yOTIxOlx0XHRcdGl0ZW0tXHUwMDNlY29va2llID0gY29va2llO1xuMjkyMjpcdFx0fVxuMjkyMzpcdH1cbjI5MjQ6XHRcbjI5MjU6XHRzdGF0aWMgaW50IGJwZl9pdGVyX3RjcF9yZWFsbG9jX2JhdGNoKHN0cnVjdCBicGZfdGNwX2l0ZXJfc3RhdGUgKml0ZXIsXG4yOTI2Olx0XHRcdFx0XHQgICAgICB1bnNpZ25lZCBpbnQgbmV3X2JhdGNoX3N6LCBnZnBfdCBmbGFncylcbjI5Mjc6XHR7XG4yOTI4Olx0XHR1bmlvbiBicGZfdGNwX2l0ZXJfYmF0Y2hfaXRlbSAqbmV3X2JhdGNoO1xuMjkyOTpcdFxuMjkzMDpcdFx0bmV3X2JhdGNoID0ga3ZtYWxsb2Moc2l6ZW9mKCpuZXdfYmF0Y2gpICogbmV3X2JhdGNoX3N6LFxuMjkzMTpcdFx0XHRcdCAgICAgZmxhZ3MgfCBfX0dGUF9OT1dBUk4pO1xuMjkzMjpcdFx0aWYgKCFuZXdfYmF0Y2gpXG4yOTMzOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuMjkzNDpcdFxuMjkzNTpcdFx0bWVtY3B5KG5ld19iYXRjaCwgaXRlci1cdTAwM2ViYXRjaCwgc2l6ZW9mKCppdGVyLVx1MDAzZWJhdGNoKSAqIGl0ZXItXHUwMDNlZW5kX3NrKTtcbjI5MzY6XHRcdGt2ZnJlZShpdGVyLVx1MDAzZWJhdGNoKTtcbjI5Mzc6XHRcdGl0ZXItXHUwMDNlYmF0Y2ggPSBuZXdfYmF0Y2g7XG4yOTM4Olx0XHRpdGVyLVx1MDAzZW1heF9zayA9IG5ld19iYXRjaF9zejtcbjI5Mzk6XHRcbjI5NDA6XHRcdHJldHVybiAwO1xuMjk0MTpcdH1cbjI5NDI6XHRcbjI5NDM6XHRzdGF0aWMgc3RydWN0IHNvY2sgKmJwZl9pdGVyX3RjcF9yZXN1bWVfYnVja2V0KHN0cnVjdCBzb2NrICpmaXJzdF9zayxcbjI5NDQ6XHRcdFx0XHRcdFx0ICAgICAgIHVuaW9uIGJwZl90Y3BfaXRlcl9iYXRjaF9pdGVtICpjb29raWVzLFxuMjk0NTpcdFx0XHRcdFx0XHQgICAgICAgaW50IG5fY29va2llcylcbjI5NDY6XHR7XG4yOTQ3Olx0XHRzdHJ1Y3QgaGxpc3RfbnVsbHNfbm9kZSAqbm9kZTtcbjI5NDg6XHRcdHN0cnVjdCBzb2NrICpzaztcbjI5NDk6XHRcdGludCBpO1xuMjk1MDpcdFxuMjk1MTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgbl9jb29raWVzOyBpJiM0MzsmIzQzOykge1xuMjk1MjpcdFx0XHRzayA9IGZpcnN0X3NrO1xuMjk1MzpcdFx0XHRza19udWxsc19mb3JfZWFjaF9mcm9tKHNrLCBub2RlKVxuMjk1NDpcdFx0XHRcdGlmIChjb29raWVzW2ldLmNvb2tpZSA9PSBhdG9taWM2NF9yZWFkKFx1MDAyNnNrLVx1MDAzZXNrX2Nvb2tpZSkpXG4yOTU1Olx0XHRcdFx0XHRyZXR1cm4gc2s7XG4yOTU2Olx0XHR9XG4yOTU3Olx0XG4yOTU4Olx0XHRyZXR1cm4gTlVMTDtcbjI5NTk6XHR9XG4yOTYwOlx0XG4yOTYxOlx0c3RhdGljIHN0cnVjdCBzb2NrICpicGZfaXRlcl90Y3BfcmVzdW1lX2xpc3RlbmluZyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcbjI5NjI6XHR7XG4yOTYzOlx0XHRzdHJ1Y3QgaW5ldF9oYXNoaW5mbyAqaGluZm8gPSBzZXFfZmlsZV9uZXQoc2VxKS1cdTAwM2VpcHY0LnRjcF9kZWF0aF9yb3cuaGFzaGluZm87XG4yOTY0Olx0XHRzdHJ1Y3QgYnBmX3RjcF9pdGVyX3N0YXRlICppdGVyID0gc2VxLVx1MDAzZXByaXZhdGU7XG4yOTY1Olx0XHRzdHJ1Y3QgdGNwX2l0ZXJfc3RhdGUgKnN0ID0gXHUwMDI2aXRlci1cdTAwM2VzdGF0ZTtcbjI5NjY6XHRcdHVuc2lnbmVkIGludCBmaW5kX2Nvb2tpZSA9IGl0ZXItXHUwMDNlY3VyX3NrO1xuMjk2NzpcdFx0dW5zaWduZWQgaW50IGVuZF9jb29raWUgPSBpdGVyLVx1MDAzZWVuZF9zaztcbjI5Njg6XHRcdGludCByZXN1bWVfYnVja2V0ID0gc3QtXHUwMDNlYnVja2V0O1xuMjk2OTpcdFx0c3RydWN0IHNvY2sgKnNrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIwIDAwOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxMzYKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIEJQRi1FbmFibGVkIFRDUCBJdGVyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMga2VybmVsIGNvZGUgYW5kLCByaWdodCBvZmYgdGhlIGJhdCwgaXQmIzM5O3MgY2xlYXIgdGhlIHJlbGV2YW50IHNlY3Rpb24gaXMgZ2F0ZWQgYnkgYENPTkZJR19CUEZfU1lTQ0FMTGAuIFRoYXQmIzM5O3MgdGhlIGtleSBlbmFibGluZyBjb25maWd1cmF0aW9uLgoKTm93LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgZ290Y2hhcy4gU2luY2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgbmV0L2lwdjQvdGNwX2lwdjQuY2AsIGl0JiMzOTtzIHNhZmUgdG8gYXNzdW1lIGBDT05GSUdfSU5FVGAgYW5kIGBDT05GSUdfVENQYCBhcmUgaW1wbGljaXRseSByZXF1aXJlZC4gWW91IGtub3csIHRoZSB1c3VhbCBkZXBlbmRlbmNpZXMgZm9yIElQdjQgVENQLiBCdXQsIHNpbmNlIHRoZXkmIzM5O3JlIGJhc2ljIHByZXJlcXVpc2l0ZXMsIHdlIHdvdWxkbiYjMzk7dCBub3JtYWxseSBjYWxsIHRoZW0gb3V0IHVubGVzcyBpdCB3YXMgYSB2ZXJ5IHNwZWNpZmljIGRlcGVuZGVuY3kgb24gb25lIG9mIHRoZW0uIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIHRoZSBpbnRlcmVzdGluZyBvbmUsIHRoZSBvbmUgdGhhdCBtYWtlcyB0aGlzIGZlYXR1cmUgdGljay4KCkFscmlnaHQsIGJlZm9yZSBJIHNpZ24gb2ZmLCBsZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgYGJwZl9pdGVyX3RjcF9iYXRjaGAgZnVuY3Rpb24gaXRzZWxmLi4uIG1ha2Ugc3VyZSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoYXQgZnVuY3Rpb24gaXMgY29ycmVjdC4gSnVzdCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMCAwMDo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9pcHY0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMTIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMTIwOlx0XHRcdHNwaW5fdW5sb2NrKFx1MDAyNmhpbmZvLVx1MDAzZWxoYXNoMltzdC1cdTAwM2VidWNrZXRdLmxvY2spO1xuMzEyMTpcdFx0ZWxzZVxuMzEyMjpcdFx0XHRzcGluX3VubG9ja19iaChpbmV0X2VoYXNoX2xvY2twKGhpbmZvLCBzdC1cdTAwM2VidWNrZXQpKTtcbjMxMjM6XHR9XG4zMTI0Olx0XG4zMTI1Olx0c3RhdGljIHN0cnVjdCBzb2NrICpicGZfaXRlcl90Y3BfYmF0Y2goc3RydWN0IHNlcV9maWxlICpzZXEpXG4zMTI2Olx0e1xuMzEyNzpcdFx0c3RydWN0IGJwZl90Y3BfaXRlcl9zdGF0ZSAqaXRlciA9IHNlcS1cdTAwM2Vwcml2YXRlO1xuMzEyODpcdFx0dW5zaWduZWQgaW50IGV4cGVjdGVkO1xuMzEyOTpcdFx0c3RydWN0IHNvY2sgKnNrO1xuMzEzMDpcdFx0aW50IGVycjtcbjMxMzE6XHRcbjMxMzI6XHRhZ2FpbjpcbjMxMzM6XHRcdHNrID0gYnBmX2l0ZXJfdGNwX3Jlc3VtZShzZXEpO1xuMzEzNDpcdFx0aWYgKCFzaylcbjMxMzU6XHRcdFx0cmV0dXJuIE5VTEw7IC8qIERvbmUgKi9cbjMxMzY6XHRcbjMxMzc6XHRcdGV4cGVjdGVkID0gYnBmX2l0ZXJfZmlsbF9iYXRjaChzZXEsIFx1MDAyNnNrKTtcbjMxMzg6XHRcdGlmIChsaWtlbHkoaXRlci1cdTAwM2VlbmRfc2sgPT0gZXhwZWN0ZWQpKVxuMzEzOTpcdFx0XHRnb3RvIGRvbmU7XG4zMTQwOlx0XG4zMTQxOlx0XHQvKiBCYXRjaCBzaXplIHdhcyB0b28gc21hbGwuICovXG4zMTQyOlx0XHRicGZfaXRlcl90Y3BfdW5sb2NrX2J1Y2tldChzZXEpO1xuMzE0MzpcdFx0YnBmX2l0ZXJfdGNwX3B1dF9iYXRjaChpdGVyKTtcbjMxNDQ6XHRcdGVyciA9IGJwZl9pdGVyX3RjcF9yZWFsbG9jX2JhdGNoKGl0ZXIsIGV4cGVjdGVkICogMyAvIDIsXG4zMTQ1Olx0XHRcdFx0XHRcdCBHRlBfVVNFUik7XG4zMTQ2Olx0XHRpZiAoZXJyKVxuMzE0NzpcdFx0XHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuMzE0ODpcdFxuMzE0OTpcdFx0c2sgPSBicGZfaXRlcl90Y3BfcmVzdW1lKHNlcSk7XG4zMTUwOlx0XHRpZiAoIXNrKVxuMzE1MTpcdFx0XHRyZXR1cm4gTlVMTDsgLyogRG9uZSAqL1xuMzE1MjpcdFxuMzE1MzpcdFx0ZXhwZWN0ZWQgPSBicGZfaXRlcl9maWxsX2JhdGNoKHNlcSwgXHUwMDI2c2spO1xuMzE1NDpcdFx0aWYgKGxpa2VseShpdGVyLVx1MDAzZWVuZF9zayA9PSBleHBlY3RlZCkpXG4zMTU1Olx0XHRcdGdvdG8gZG9uZTtcbjMxNTY6XHRcbjMxNTc6XHRcdC8qIEJhdGNoIHNpemUgd2FzIHN0aWxsIHRvbyBzbWFsbC4gSG9sZCBvbnRvIHRoZSBsb2NrIHdoaWxlIHdlIHRyeVxuMzE1ODpcdFx0ICogYWdhaW4gd2l0aCBhIGxhcmdlciBiYXRjaCB0byBtYWtlIHN1cmUgdGhlIGN1cnJlbnQgYnVja2V0JiMzOTtzIHNpemVcbjMxNTk6XHRcdCAqIGRvZXMgbm90IGNoYW5nZSBpbiB0aGUgbWVhbnRpbWUuXG4zMTYwOlx0XHQgKi9cbjMxNjE6XHRcdGVyciA9IGJwZl9pdGVyX3RjcF9yZWFsbG9jX2JhdGNoKGl0ZXIsIGV4cGVjdGVkLCBHRlBfTk9XQUlUKTtcbjMxNjI6XHRcdGlmIChlcnIpIHtcbjMxNjM6XHRcdFx0YnBmX2l0ZXJfdGNwX3VubG9ja19idWNrZXQoc2VxKTtcbjMxNjQ6XHRcdFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcbjMxNjU6XHRcdH1cbjMxNjY6XHRcbjMxNjc6XHRcdGV4cGVjdGVkID0gYnBmX2l0ZXJfZmlsbF9iYXRjaChzZXEsIFx1MDAyNnNrKTtcbjMxNjg6XHRcdFdBUk5fT05fT05DRShpdGVyLVx1MDAzZWVuZF9zayAhPSBleHBlY3RlZCk7XG4zMTY5Olx0ZG9uZTpcbjMxNzA6XHRcdGJwZl9pdGVyX3RjcF91bmxvY2tfYnVja2V0KHNlcSk7XG4zMTcxOlx0XHRpZiAodW5saWtlbHkoIWl0ZXItXHUwMDNlZW5kX3NrKSkge1xuMzE3MjpcdFx0XHQmIzQzOyYjNDM7aXRlci1cdTAwM2VzdGF0ZS5idWNrZXQ7XG4zMTczOlx0XHRcdGdvdG8gYWdhaW47XG4zMTc0Olx0XHR9XG4zMTc1Olx0XHRyZXR1cm4gaXRlci1cdTAwM2ViYXRjaFswXS5zaztcbjMxNzY6XHR9XG4zMTc3Olx0XG4zMTc4Olx0c3RhdGljIHZvaWQgKmJwZl9pdGVyX3RjcF9zZXFfc3RhcnQoc3RydWN0IHNlcV9maWxlICpzZXEsIGxvZmZfdCAqcG9zKVxuMzE3OTpcdHtcbjMxODA6XHRcdC8qIGJwZiBpdGVyIGRvZXMgbm90IHN1cHBvcnQgbHNlZWssIHNvIGl0IGFsd2F5c1xuMzE4MTpcdFx0ICogY29udGludWUgZnJvbSB3aGVyZSBpdCB3YXMgc3RvcCgpLXBlZC5cbjMxODI6XHRcdCAqL1xuMzE4MzpcdFx0aWYgKCpwb3MpXG4zMTg0Olx0XHRcdHJldHVybiBicGZfaXRlcl90Y3BfYmF0Y2goc2VxKTtcbjMxODU6XHRcbjMxODY6XHRcdHJldHVybiBTRVFfU1RBUlRfVE9LRU47XG4zMTg3Olx0fVxuMzE4ODpcdFxuMzE4OTpcdHN0YXRpYyB2b2lkICpicGZfaXRlcl90Y3Bfc2VxX25leHQoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYsIGxvZmZfdCAqcG9zKVxuMzE5MDpcdHtcbjMxOTE6XHRcdHN0cnVjdCBicGZfdGNwX2l0ZXJfc3RhdGUgKml0ZXIgPSBzZXEtXHUwMDNlcHJpdmF0ZTtcbjMxOTI6XHRcdHN0cnVjdCB0Y3BfaXRlcl9zdGF0ZSAqc3QgPSBcdTAwMjZpdGVyLVx1MDAzZXN0YXRlO1xuMzE5MzpcdFx0c3RydWN0IHNvY2sgKnNrO1xuMzE5NDpcdFxuMzE5NTpcdFx0LyogV2hlbmV2ZXIgc2VxX25leHQoKSBpcyBjYWxsZWQsIHRoZSBpdGVyLVx1MDAzZWN1cl9zayBpc1xuMzE5NjpcdFx0ICogZG9uZSB3aXRoIHNlcV9zaG93KCksIHNvIGFkdmFuY2UgdG8gdGhlIG5leHQgc2sgaW5cbjMxOTc6XHRcdCAqIHRoZSBiYXRjaC5cbjMxOTg6XHRcdCAqL1xuMzE5OTpcdFx0aWYgKGl0ZXItXHUwMDNlY3VyX3NrIFx1MDAzYyBpdGVyLVx1MDAzZWVuZF9zaykge1xuMzIwMDpcdFx0XHQvKiBLZWVwaW5nIHN0LVx1MDAzZW51bSBjb25zaXN0ZW50IGluIHRjcF9pdGVyX3N0YXRlLlxuMzIwMTpcdFx0XHQgKiBicGZfaXRlcl90Y3AgZG9lcyBub3QgdXNlIHN0LVx1MDAzZW51bS5cbjMyMDI6XHRcdFx0ICogbWV0YS5zZXFfbnVtIGlzIHVzZWQgaW5zdGVhZC5cbjMyMDM6XHRcdFx0ICovXG4zMjA0Olx0XHRcdHN0LVx1MDAzZW51bSYjNDM7JiM0Mzs7XG4zMjA1Olx0XHRcdHNvY2tfZ2VuX3B1dChpdGVyLVx1MDAzZWJhdGNoW2l0ZXItXHUwMDNlY3VyX3NrJiM0MzsmIzQzO10uc2spO1xuMzIwNjpcdFx0fVxuMzIwNzpcdFxuMzIwODpcdFx0aWYgKGl0ZXItXHUwMDNlY3VyX3NrIFx1MDAzYyBpdGVyLVx1MDAzZWVuZF9zaylcbjMyMDk6XHRcdFx0c2sgPSBpdGVyLVx1MDAzZWJhdGNoW2l0ZXItXHUwMDNlY3VyX3NrXS5zaztcbjMyMTA6XHRcdGVsc2VcbjMyMTE6XHRcdFx0c2sgPSBicGZfaXRlcl90Y3BfYmF0Y2goc2VxKTtcbjMyMTI6XHRcbjMyMTM6XHRcdCYjNDM7JiM0MzsqcG9zO1xuMzIxNDpcdFx0LyogS2VlcGluZyBzdC1cdTAwM2VsYXN0X3BvcyBjb25zaXN0ZW50IGluIHRjcF9pdGVyX3N0YXRlLlxuMzIxNTpcdFx0ICogYnBmIGl0ZXIgZG9lcyBub3QgZG8gbHNlZWssIHNvIHN0LVx1MDAzZWxhc3RfcG9zIGFsd2F5cyBlcXVhbHMgdG8gKnBvcy5cbjMyMTY6XHRcdCAqL1xuMzIxNzpcdFx0c3QtXHUwMDNlbGFzdF9wb3MgPSAqcG9zO1xuMzIxODpcdFx0cmV0dXJuIHNrO1xuMzIxOTpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDA6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODAxOAoJCQkJCQkJb3V0cHV0OiAxMTgKCQkJCQkJCXRob3VnaHRzOiAyMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIFRDUCBJdGVyYXRvciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGRpdmVzIGludG8gYGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaGAgYW5kIGBicGZfaXRlcl90Y3BfYmF0Y2hgLCBzcGVjaWZpY2FsbHkgdGFyZ2V0aW5nIEJQRiBUQ1AgaXRlcmF0b3JzLiBJbW1lZGlhdGVseSwgaXQgc291bmRzIGxpa2UgYSBmdW5jdGlvbmFsIGZpeCBhbmQgYnVnIGNvcnJlY3Rpb24sIHdoaWNoIGFsd2F5cyBwaXF1ZXMgbXkgaW50ZXJlc3QuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2VzIHJldm9sdmUgYXJvdW5kIGFkZHJlc3Npbmcgc29tZSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmVsYXRlZCBpc3N1ZXMgdGhhdCBjb3VsZCBvY2N1ciB3aGVuIHNvY2tldHMgd2l0aCBhIHplcm8gcmVmY291bnQgYXJlIGluYWR2ZXJ0ZW50bHkgYWRkZWQgdG8gYSBiYXRjaC4gSXQgYXBwZWFycyB0byBhbHNvIGluY29ycG9yYXRlIHJvYnVzdCBoYW5kbGluZyBvZiBlbXB0eSBiYXRjaGVzLCBlbnN1cmluZyBzZWFtbGVzcyBwcm9jZXNzaW5nIGluIHRoZSBsb2dpYy4gVGhlc2UgYXJlIGNyaXRpY2FsIGNoYW5nZXMsIGVzcGVjaWFsbHkgY29uc2lkZXJpbmcgdGhpcyBpcyBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IHRoZSBCUEYgaXRlcmF0b3JzIGZvciBUQ1Agc29ja2V0cyBpbnRlcmFjdCB3aXRoLgoKV29ydGggZnV6emluZz8gQWJzb2x1dGVseS4gR2l2ZW4gdGhlIG5hdHVyZSBvZiBpdGVyYXRvciBtb2RpZmljYXRpb25zIGFuZCB0aGUgcG90ZW50aWFsIGZvciBtZW1vcnktcmVsYXRlZCBlcnJvcnMsIHRoaXMgd2FycmFudHMgdGhvcm91Z2ggZnV6emluZy4KCk15IGZvY3VzIHNob3VsZCBiZSBob25lZCBpbiBvbiBgYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoYCBhbmQgYGJwZl9pdGVyX3RjcF9iYXRjaGAuCgpFbmFibGluZyBgQlBGX1NZU0NBTExgIHNlZW1zIGxpa2UgYSBnaXZlbiwgdG8gYmUgYWJsZSB0byBwcm9wZXJseSBldmFsdWF0ZSB0aGUgZml4LgoKSnVzdCB0byBiZSBzdXJlLCBsZXQgbWUgcXVpY2tseSB2ZXJpZnkgdGhhdCB0aGUgZnVuY3Rpb24gbmFtZSBgYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoYCBpcyBpbmRlZWQgY29ycmVjdC4gWWVzLCBpdCYjMzk7cyByaWdodCB0aGVyZSBpbiB0aGUgZGlmZiwgYHN0YXRpYyB1bnNpZ25lZCBpbnQgYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxLGAKCkFscmlnaHQsIHRoYXQmIzM5O3MgY29uZmlybWVkLiBOb3csIGl0JiMzOTtzIHRpbWUgdG8gc2V0IHVwIHRoZSByZXN1bHRzIGFuZCBwcm9jZWVkIHdpdGggYSBkZXRhaWxlZCBhbmFseXNpcyBhbmQgdGVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjAgMDA6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoJiMzNDssCiAgICAmIzM0O2JwZl9pdGVyX3RjcF9iYXRjaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIFRDUCBpdGVyYXRvciBsb2dpYyB0byBzYWZlbHkgaGFuZGxlIHNvY2tldHMgd2l0aCB6ZXJvIHJlZmNvdW50IGFuZCBjb3JyZWN0bHkgc2tpcCBlbXB0eSBidWNrZXRzIGR1cmluZyBiYXRjaGluZy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBpdGVyYXRvcnMgZm9yIFRDUCBzb2NrZXRzKSB0aGF0IGZpeCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgbG9naWMgYnVncy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfaXRlcl90Y3BfZXN0YWJsaXNoZWRfYmF0Y2gmIzM0OywKICAgICYjMzQ7YnBmX2l0ZXJfdGNwX2JhdGNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgVENQIGl0ZXJhdG9yIGxvZ2ljIHRvIHNhZmVseSBoYW5kbGUgc29ja2V0cyB3aXRoIHplcm8gcmVmY291bnQgYW5kIGNvcnJlY3RseSBza2lwIGVtcHR5IGJ1Y2tldHMgZHVyaW5nIGJhdGNoaW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoQlBGIGl0ZXJhdG9ycyBmb3IgVENQIHNvY2tldHMpIHRoYXQgZml4IHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBsb2dpYyBidWdzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDA6NDU6MTMuODUxNTE2ODUyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE4MjUzOTk0NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaXRlcl90Y3BfZXN0YWJsaXNoZWRfYmF0Y2hcIixcbiAgICBcImJwZl9pdGVyX3RjcF9iYXRjaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgVENQIGl0ZXJhdG9yIGxvZ2ljIHRvIHNhZmVseSBoYW5kbGUgc29ja2V0cyB3aXRoIHplcm8gcmVmY291bnQgYW5kIGNvcnJlY3RseSBza2lwIGVtcHR5IGJ1Y2tldHMgZHVyaW5nIGJhdGNoaW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoQlBGIGl0ZXJhdG9ycyBmb3IgVENQIHNvY2tldHMpIHRoYXQgZml4IHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBsb2dpYyBidWdzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwMDo0NToxMy44NTE1MjIxNzJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MDUzMzU5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDY3OWY0ZmUxZmU5ZWExYTllNTM5N2YxOTc1OGYxYjAzYjJhMDI2ZWZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdW4gMjAgMDA6NDU6MTIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2lwdjQuYyBiL25ldC9pcHY0L3RjcF9pcHY0LmNcXG5pbmRleCBmZGM4MTE1MGZmNmNmOS4uOTIzNDJkY2M2ODkyYWYgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvdGNwX2lwdjQuY1xcbisrKyBiL25ldC9pcHY0L3RjcF9pcHY0LmNcXG5AQCAtMzA3NCwyNSArMzA3NCwyNSBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSxcXG4ge1xcbiBcXHRzdHJ1Y3QgYnBmX3RjcF9pdGVyX3N0YXRlICppdGVyID0gc2VxLVxcdTAwM2Vwcml2YXRlO1xcbiBcXHRzdHJ1Y3QgaGxpc3RfbnVsbHNfbm9kZSAqbm9kZTtcXG4tXFx0dW5zaWduZWQgaW50IGV4cGVjdGVkID0gMTtcXG4tXFx0c3RydWN0IHNvY2sgKnNrO1xcbi1cXG4tXFx0c29ja19ob2xkKCpzdGFydF9zayk7XFxuLVxcdGl0ZXItXFx1MDAzZWJhdGNoW2l0ZXItXFx1MDAzZWVuZF9zaysrXS5zayA9ICpzdGFydF9zaztcXG4rXFx0dW5zaWduZWQgaW50IGV4cGVjdGVkID0gMDtcXG4rXFx0c3RydWN0IHNvY2sgKnNrID0gKnN0YXJ0X3NrO1xcbiBcXG4tXFx0c2sgPSBza19udWxsc19uZXh0KCpzdGFydF9zayk7XFxuIFxcdCpzdGFydF9zayA9IE5VTEw7XFxuIFxcdHNrX251bGxzX2Zvcl9lYWNoX2Zyb20oc2ssIG5vZGUpIHtcXG4tXFx0XFx0aWYgKHNlcV9za19tYXRjaChzZXEsIHNrKSkge1xcbi1cXHRcXHRcXHRpZiAoaXRlci1cXHUwMDNlZW5kX3NrIFxcdTAwM2MgaXRlci1cXHUwMDNlbWF4X3NrKSB7XFxuLVxcdFxcdFxcdFxcdHNvY2tfaG9sZChzayk7XFxuLVxcdFxcdFxcdFxcdGl0ZXItXFx1MDAzZWJhdGNoW2l0ZXItXFx1MDAzZWVuZF9zaysrXS5zayA9IHNrO1xcbi1cXHRcXHRcXHR9IGVsc2UgaWYgKCEqc3RhcnRfc2spIHtcXG4tXFx0XFx0XFx0XFx0LyogUmVtZW1iZXIgd2hlcmUgd2UgbGVmdCBvZmYuICovXFxuLVxcdFxcdFxcdFxcdCpzdGFydF9zayA9IHNrO1xcbi1cXHRcXHRcXHR9XFxuLVxcdFxcdFxcdGV4cGVjdGVkKys7XFxuK1xcdFxcdGlmICghc2VxX3NrX21hdGNoKHNlcSwgc2spKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0aWYgKGl0ZXItXFx1MDAzZWVuZF9zayBcXHUwMDNjIGl0ZXItXFx1MDAzZW1heF9zaykge1xcbitcXHRcXHRcXHQvKiByZXFza19xdWV1ZV9oYXNoX3JlcSgpIGluc2VydHMgd2l0aCBza19yZWZjbnQgPT0gMFxcbitcXHRcXHRcXHQgKiBhbmQgcmVmY291bnRfc2V0KClzIGl0IGFmdGVyIHRoZSBidWNrZXQgbG9jayBkcm9wcy5cXG4rXFx0XFx0XFx0ICovXFxuK1xcdFxcdFxcdGlmICh1bmxpa2VseSghcmVmY291bnRfaW5jX25vdF96ZXJvKFxcdTAwMjZzay1cXHUwMDNlc2tfcmVmY250KSkpXFxuK1xcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHRcXHRpdGVyLVxcdTAwM2ViYXRjaFtpdGVyLVxcdTAwM2VlbmRfc2srK10uc2sgPSBzaztcXG4rXFx0XFx0fSBlbHNlIGlmICghKnN0YXJ0X3NrKSB7XFxuK1xcdFxcdFxcdC8qIFJlbWVtYmVyIHdoZXJlIHdlIGxlZnQgb2ZmLiAqL1xcbitcXHRcXHRcXHQqc3RhcnRfc2sgPSBzaztcXG4gXFx0XFx0fVxcbitcXHRcXHRleHBlY3RlZCsrO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gZXhwZWN0ZWQ7XFxuQEAgLTMxMjksNiArMzEyOSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqYnBmX2l0ZXJfdGNwX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxcbiBcXHRzdHJ1Y3Qgc29jayAqc2s7XFxuIFxcdGludCBlcnI7XFxuIFxcbithZ2FpbjpcXG4gXFx0c2sgPSBicGZfaXRlcl90Y3BfcmVzdW1lKHNlcSk7XFxuIFxcdGlmICghc2spXFxuIFxcdFxcdHJldHVybiBOVUxMOyAvKiBEb25lICovXFxuQEAgLTMxNjcsNiArMzE2OCwxMCBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKmJwZl9pdGVyX3RjcF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcXG4gXFx0V0FSTl9PTl9PTkNFKGl0ZXItXFx1MDAzZWVuZF9zayAhPSBleHBlY3RlZCk7XFxuIGRvbmU6XFxuIFxcdGJwZl9pdGVyX3RjcF91bmxvY2tfYnVja2V0KHNlcSk7XFxuK1xcdGlmICh1bmxpa2VseSghaXRlci1cXHUwMDNlZW5kX3NrKSkge1xcbitcXHRcXHQrK2l0ZXItXFx1MDAzZXN0YXRlLmJ1Y2tldDtcXG4rXFx0XFx0Z290byBhZ2FpbjtcXG4rXFx0fVxcbiBcXHRyZXR1cm4gaXRlci1cXHUwMDNlYmF0Y2hbMF0uc2s7XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDAwOjQ1OjE0LjM5MjkyOTU1MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjEyODM5Nzc4MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaXRlcl90Y3BfZXN0YWJsaXNoZWRfYmF0Y2hcIixcbiAgICBcImJwZl9pdGVyX3RjcF9iYXRjaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCUEYgVENQIGl0ZXJhdG9yIGxvZ2ljIHRvIHNhZmVseSBoYW5kbGUgc29ja2V0cyB3aXRoIHplcm8gcmVmY291bnQgYW5kIGNvcnJlY3RseSBza2lwIGVtcHR5IGJ1Y2tldHMgZHVyaW5nIGJhdGNoaW5nLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoQlBGIGl0ZXJhdG9ycyBmb3IgVENQIHNvY2tldHMpIHRoYXQgZml4IHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBsb2dpYyBidWdzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDY3OWY0ZmUxZmU5ZWExYTllNTM5N2YxOTc1OGYxYjAzYjJhMDI2ZWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1biAyMCAwMDo0NToxMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pcHY0LmMgYi9uZXQvaXB2NC90Y3BfaXB2NC5jXG5pbmRleCBmZGM4MTE1MGZmNmNmOS4uOTIzNDJkY2M2ODkyYWYgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3BfaXB2NC5jXG4rKysgYi9uZXQvaXB2NC90Y3BfaXB2NC5jXG5AQCAtMzA3NCwyNSArMzA3NCwyNSBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSxcbiB7XG4gXHRzdHJ1Y3QgYnBmX3RjcF9pdGVyX3N0YXRlICppdGVyID0gc2VxLVx1MDAzZXByaXZhdGU7XG4gXHRzdHJ1Y3QgaGxpc3RfbnVsbHNfbm9kZSAqbm9kZTtcbi1cdHVuc2lnbmVkIGludCBleHBlY3RlZCA9IDE7XG4tXHRzdHJ1Y3Qgc29jayAqc2s7XG4tXG4tXHRzb2NrX2hvbGQoKnN0YXJ0X3NrKTtcbi1cdGl0ZXItXHUwMDNlYmF0Y2hbaXRlci1cdTAwM2VlbmRfc2srK10uc2sgPSAqc3RhcnRfc2s7XG4rXHR1bnNpZ25lZCBpbnQgZXhwZWN0ZWQgPSAwO1xuK1x0c3RydWN0IHNvY2sgKnNrID0gKnN0YXJ0X3NrO1xuIFxuLVx0c2sgPSBza19udWxsc19uZXh0KCpzdGFydF9zayk7XG4gXHQqc3RhcnRfc2sgPSBOVUxMO1xuIFx0c2tfbnVsbHNfZm9yX2VhY2hfZnJvbShzaywgbm9kZSkge1xuLVx0XHRpZiAoc2VxX3NrX21hdGNoKHNlcSwgc2spKSB7XG4tXHRcdFx0aWYgKGl0ZXItXHUwMDNlZW5kX3NrIFx1MDAzYyBpdGVyLVx1MDAzZW1heF9zaykge1xuLVx0XHRcdFx0c29ja19ob2xkKHNrKTtcbi1cdFx0XHRcdGl0ZXItXHUwMDNlYmF0Y2hbaXRlci1cdTAwM2VlbmRfc2srK10uc2sgPSBzaztcbi1cdFx0XHR9IGVsc2UgaWYgKCEqc3RhcnRfc2spIHtcbi1cdFx0XHRcdC8qIFJlbWVtYmVyIHdoZXJlIHdlIGxlZnQgb2ZmLiAqL1xuLVx0XHRcdFx0KnN0YXJ0X3NrID0gc2s7XG4tXHRcdFx0fVxuLVx0XHRcdGV4cGVjdGVkKys7XG4rXHRcdGlmICghc2VxX3NrX21hdGNoKHNlcSwgc2spKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1x0XHRpZiAoaXRlci1cdTAwM2VlbmRfc2sgXHUwMDNjIGl0ZXItXHUwMDNlbWF4X3NrKSB7XG4rXHRcdFx0LyogcmVxc2tfcXVldWVfaGFzaF9yZXEoKSBpbnNlcnRzIHdpdGggc2tfcmVmY250ID09IDBcbitcdFx0XHQgKiBhbmQgcmVmY291bnRfc2V0KClzIGl0IGFmdGVyIHRoZSBidWNrZXQgbG9jayBkcm9wcy5cbitcdFx0XHQgKi9cbitcdFx0XHRpZiAodW5saWtlbHkoIXJlZmNvdW50X2luY19ub3RfemVybyhcdTAwMjZzay1cdTAwM2Vza19yZWZjbnQpKSlcbitcdFx0XHRcdGNvbnRpbnVlO1xuK1x0XHRcdGl0ZXItXHUwMDNlYmF0Y2hbaXRlci1cdTAwM2VlbmRfc2srK10uc2sgPSBzaztcbitcdFx0fSBlbHNlIGlmICghKnN0YXJ0X3NrKSB7XG4rXHRcdFx0LyogUmVtZW1iZXIgd2hlcmUgd2UgbGVmdCBvZmYuICovXG4rXHRcdFx0KnN0YXJ0X3NrID0gc2s7XG4gXHRcdH1cbitcdFx0ZXhwZWN0ZWQrKztcbiBcdH1cbiBcbiBcdHJldHVybiBleHBlY3RlZDtcbkBAIC0zMTI5LDYgKzMxMjksNyBAQCBzdGF0aWMgc3RydWN0IHNvY2sgKmJwZl9pdGVyX3RjcF9iYXRjaChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSlcbiBcdHN0cnVjdCBzb2NrICpzaztcbiBcdGludCBlcnI7XG4gXG4rYWdhaW46XG4gXHRzayA9IGJwZl9pdGVyX3RjcF9yZXN1bWUoc2VxKTtcbiBcdGlmICghc2spXG4gXHRcdHJldHVybiBOVUxMOyAvKiBEb25lICovXG5AQCAtMzE2Nyw2ICszMTY4LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc29jayAqYnBmX2l0ZXJfdGNwX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxuIFx0V0FSTl9PTl9PTkNFKGl0ZXItXHUwMDNlZW5kX3NrICE9IGV4cGVjdGVkKTtcbiBkb25lOlxuIFx0YnBmX2l0ZXJfdGNwX3VubG9ja19idWNrZXQoc2VxKTtcbitcdGlmICh1bmxpa2VseSghaXRlci1cdTAwM2VlbmRfc2spKSB7XG4rXHRcdCsraXRlci1cdTAwM2VzdGF0ZS5idWNrZXQ7XG4rXHRcdGdvdG8gYWdhaW47XG4rXHR9XG4gXHRyZXR1cm4gaXRlci1cdTAwM2ViYXRjaFswXS5zaztcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwMDo0NToxNC4zOTI5MzE1OTFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDY5NDM4MjcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFRDUCBTb2NrZXQgQlBGIEl0ZXJhdG9yIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0J3MgdG91Y2hpbmcgYG5ldC9pcHY0L3RjcF9pcHY0LmNgLiBNeSBpbW1lZGlhdGUgaW50ZXJlc3QgaXMgcGlxdWVkIGJlY2F1c2UgaXQncyBtZXNzaW5nIHdpdGggYGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaGAgYW5kIGBicGZfaXRlcl90Y3BfYmF0Y2hgLiBUaGVzZSBhcmUgQlBGIGl0ZXJhdG9ycywgc28gaXQncyBrZXJuZWwtbGV2ZWwgc3R1ZmYsIGFuZCBpdCBzb3VuZHMgbGlrZSBmdW5jdGlvbmFsIGNoYW5nZXMuIERlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQncyB3b3J0aCBhIGNsb3NlciBsb29rIGFuZCwgZnJhbmtseSwgbmVlZHMgZnV6emluZyDigJMgSSdtIG1hcmtpbmcgdGhhdCBhcyBhIFwidHJ1ZVwiIGZvciBteSBtZW50YWwgY2hlY2tsaXN0LlxuXG5UaGUgY29yZSBvZiB0aGUgcGF0Y2ggc2VlbXMgdG8gYmUgYWRkcmVzc2luZyBhbiBgc2tfcmVmY250YCBpc3N1ZS4gVGhleSdyZSB3aXNlbHkgc3dhcHBpbmcgYHNvY2tfaG9sZChzaylgIGZvciBgcmVmY291bnRfaW5jX25vdF96ZXJvKFx1MDAyNnNrLVx1MDAzZXNrX3JlZmNudClgLiBUaGF04oCZcyBhIGdvb2QgY2F0Y2g7IHdlIGRvbid0IHdhbnQgdG8gaW5jcmVtZW50IGEgemVybyByZWZjb3VudC4gVGhlIGBicGZfaXRlcl90Y3BfZXN0YWJsaXNoZWRfYmF0Y2hgIGNoYW5nZSBzZWVtcyB0byBiZSBjYXJlZnVsbHkgYXZvaWRpbmcgYW4gdW5jb25kaXRpb25hbCBob2xkIG9uIGBzdGFydF9za2AgYW5kLCBpbnN0ZWFkLCBjaGVja2luZyB0aGUgcmVmY291bnQgZm9yIGFsbCBtYXRjaGluZyBzb2NrZXRzLiBNYWtlcyBzZW5zZSwgdHJ5aW5nIHRvIGJlIG1vcmUgcm9idXN0LlxuXG5JJ20gYWxzbyBzZWVpbmcgYSBgZ290byBhZ2FpbmAgbG9vcCBpbiBgYnBmX2l0ZXJfdGNwX2JhdGNoYCB3aGVuIGBpdGVyLVx1MDAzZWVuZF9za2AgYmVjb21lcyAwIGFmdGVyIGJhdGNoaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGxvZ2ljIGJldHRlcjsgaXQgZmVlbHMgbGlrZSBhIHJldHJ5IG1lY2hhbmlzbS4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGdyYXNwIHdoeSB0aGF0J3MgbmVjZXNzYXJ5LlxuXG5HaXZlbiB0aGF0IHRoZXNlIGFyZSBCUEYgaXRlcmF0b3JzLCBJIHNob3VsZCBjaGVjayB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgbGlua2VkIHRvIGBuZXQvaXB2NC90Y3BfaXB2NC5jYC4gSSdsbCBjcm9zcy1yZWZlcmVuY2UgdGhlIGBDT05GSUdfQlBGX1NZU0NBTExgIG9wdGlvbiBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgZGVwZW5kZW5jaWVzIG9yIGNvbmZpZ3VyYXRpb25zIHRoYXQgY291bGQgaW5mbHVlbmNlIGhvdyB0aGVzZSBjaGFuZ2VzIGJlaGF2ZS4gSSBuZWVkIHRvIGtub3cgaG93IHRoZXNlIGNoYW5nZXMgYXJlIGNvbnRyb2xsZWQgb3IgdHJpZ2dlcmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDE3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDA6NDU6MjAuODYyMzcxOTgxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMzk3NzE3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaXRlcl90Y3BfYmF0Y2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdGNwX2lwdjQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC90Y3BfaXB2NC5jPTMxMTM9c3RhdGljIHZvaWQgYnBmX2l0ZXJfdGNwX3VubG9ja19idWNrZXQoc3RydWN0IHNlcV9maWxlICpzZXEpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMxMjQtXFxubmV0L2lwdjQvdGNwX2lwdjQuYzozMTI1OnN0YXRpYyBzdHJ1Y3Qgc29jayAqYnBmX2l0ZXJfdGNwX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzEyNi17XFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTMxNzg9c3RhdGljIHZvaWQgKmJwZl9pdGVyX3RjcF9zZXFfc3RhcnQoc3RydWN0IHNlcV9maWxlICpzZXEsIGxvZmZfdCAqcG9zKVxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMTgzLVxcdGlmICgqcG9zKVxcbm5ldC9pcHY0L3RjcF9pcHY0LmM6MzE4NDpcXHRcXHRyZXR1cm4gYnBmX2l0ZXJfdGNwX2JhdGNoKHNlcSk7XFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMTg1LVxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0zMTg5PXN0YXRpYyB2b2lkICpicGZfaXRlcl90Y3Bfc2VxX25leHQoc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYsIGxvZmZfdCAqcG9zKVxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMjEwLVxcdGVsc2VcXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMyMTE6XFx0XFx0c2sgPSBicGZfaXRlcl90Y3BfYmF0Y2goc2VxKTtcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyMTItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDAwOjQ1OjIwLjk2NjM1NDkyOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2MTg4NjY2MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHJvbGUgb2YgdGhlIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIEJQRiBJdGVyYXRvciBDb25maWd1cmF0aW9ucyBpbiBUQ1AvSVB2NCoqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGluLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgd2UndmUgZ290IGFueSBzcGVjaWFsIGNvbmZpZ3VyYXRpb25zLCBvcHRpbWl6YXRpb25zLCBvciBwZXJoYXBzIGN1c3RvbSBoYW5kbGluZyBmb3IgQlBGIGl0ZXJhdG9ycyBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgbmV0L2lwdjQvdGNwX2lwdjQuY2Agc291cmNlIGZpbGUuIE15IGV4cGVjdGF0aW9uIGlzIHRoYXQgdGhpcyBhcmVhIHdvdWxkIGJlIHRoZSBtb3N0IG9idmlvdXMgcGxhY2UgdG8gZmluZCBhbnl0aGluZyByZWxldmFudCwgZ2l2ZW4gaXRzIGZvY3VzIG9uIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIFRDUCBhbmQgSVB2NC4gSSdsbCBuZWVkIHRvIGNvbmR1Y3QgYSBxdWljayBzZWFyY2ggdG8gZW5zdXJlIHRoYXQgYW55IEJQRiBpdGVyYXRvciBpbnRlZ3JhdGlvbiBpcyBhY2NvdW50ZWQgZm9yIHdpdGhpbiB0aGlzIHBhcnRpY3VsYXIgY29kZSBtb2R1bGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MzMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwMDo0NToyMy41ODUyMjQyNzJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODkwMzgyNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0JQRlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC90Y3BfaXB2NC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9pcHY0LmM9Mjg1MT1zdGF0aWMgaW50IHRjcDRfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzZXEsIHZvaWQgKnYpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTI4NzUtXFxubmV0L2lwdjQvdGNwX2lwdjQuYzoyODc2OiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTI4NzctdW5pb24gYnBmX3RjcF9pdGVyX2JhdGNoX2l0ZW0ge1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0zMjg2PXN0YXRpYyB1bnNpZ25lZCBzaG9ydCBzZXFfZmlsZV9mYW1pbHkoY29uc3Qgc3RydWN0IHNlcV9maWxlICpzZXEpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyODktXFxubmV0L2lwdjQvdGNwX2lwdjQuYzozMjkwOiNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTMyOTEtXFx0LyogSXRlcmF0ZWQgZnJvbSBicGZfaXRlci4gIExldCB0aGUgYnBmIHByb2cgdG8gZmlsdGVyIGluc3RlYWQuICovXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jPTMzNDE9c3RydWN0IHByb3RvIHRjcF9wcm90ID0ge1xcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYy0zMzY1LVxcdC5wdXRfcG9ydFxcdFxcdD0gaW5ldF9wdXRfcG9ydCxcXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjMzNjY6I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzM2Ny1cXHQucHNvY2tfdXBkYXRlX3NrX3Byb3RcXHQ9IHRjcF9icGZfdXBkYXRlX3Byb3RvLFxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0zNTY0PXN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgX19uZXRfaW5pdGRhdGEgdGNwX3NrX29wcyA9IHtcXG4tLVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzU2OS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jOjM1NzA6I2lmIGRlZmluZWQoQ09ORklHX0JQRl9TWVNDQUxMKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19QUk9DX0ZTKVxcbm5ldC9pcHY0L3RjcF9pcHY0LmMtMzU3MS1ERUZJTkVfQlBGX0lURVJfRlVOQyh0Y3AsIHN0cnVjdCBicGZfaXRlcl9tZXRhICptZXRhLFxcbi0tXFxubmV0L2lwdjQvdGNwX2lwdjQuYz0zNjQzPXZvaWQgX19pbml0IHRjcF92NF9pbml0KHZvaWQpXFxuLS1cXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTM2NjctXFxubmV0L2lwdjQvdGNwX2lwdjQuYzozNjY4OiNpZiBkZWZpbmVkKENPTkZJR19CUEZfU1lTQ0FMTCkgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfUFJPQ19GUylcXG5uZXQvaXB2NC90Y3BfaXB2NC5jLTM2NjktXFx0YnBmX2l0ZXJfcmVnaXN0ZXIoKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDA6NDU6MjMuNjc0MjcxN1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4MDc3ODE1MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYGJwZl9pdGVyX3RjcF9iYXRjaGAgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24qKlxuXG5BbHJpZ2h0LCB0aGUgY29kZSBJJ20gbG9va2luZyBhdCwgc3BlY2lmaWNhbGx5IHRoZSBgYnBmX2l0ZXJfdGNwX2JhdGNoYCBmdW5jdGlvbiwgc2VlbXMgdG8gYmUgZ2F0ZWQgYmVoaW5kIGAjaWZkZWYgQ09ORklHX0JQRl9TWVNDQUxMYC4gVGhhdCdzIGEgbGl0dGxlIHN1cnByaXNpbmcsIEkgdGhvdWdodCBpdCBtaWdodCBiZSBkZWZpbmVkIGVsc2V3aGVyZSwgYnV0IGxldCdzIGp1c3QgbWFrZSBzdXJlLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyBlbnN1cmluZyB0aGF0IHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBhcmUgZXhhY3RseSBhcyBJIGV4cGVjdC4gVGltZSB0byBxdWlja2x5IHZlcmlmeSB0aGUgZmlsZSBjb250ZW50cyB0byBjb25maXJtIHRoaXMgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSdzIHNjb3BlIGFuZCB0aGUgaW1wbGljYXRpb25zIGZvciB0aGUgYnVpbGQgcHJvY2Vzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlcmUgaXMgYW4gYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24gcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM2NCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDAwOjQ1OjI2LjQ4MjA1NTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTIwNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjQvdGNwX2lwdjQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyODcwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjg3MDpcXHRcXHRcXHRnZXRfdGNwNF9zb2NrKHYsIHNlcSwgc3QtXFx1MDAzZW51bSk7XFxuMjg3MTpcXHRvdXQ6XFxuMjg3MjpcXHRcXHRzZXFfcGFkKHNlcSwgJ1xcXFxuJyk7XFxuMjg3MzpcXHRcXHRyZXR1cm4gMDtcXG4yODc0OlxcdH1cXG4yODc1OlxcdFxcbjI4NzY6XFx0I2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbjI4Nzc6XFx0dW5pb24gYnBmX3RjcF9pdGVyX2JhdGNoX2l0ZW0ge1xcbjI4Nzg6XFx0XFx0c3RydWN0IHNvY2sgKnNrO1xcbjI4Nzk6XFx0XFx0X191NjQgY29va2llO1xcbjI4ODA6XFx0fTtcXG4yODgxOlxcdFxcbjI4ODI6XFx0c3RydWN0IGJwZl90Y3BfaXRlcl9zdGF0ZSB7XFxuMjg4MzpcXHRcXHRzdHJ1Y3QgdGNwX2l0ZXJfc3RhdGUgc3RhdGU7XFxuMjg4NDpcXHRcXHR1bnNpZ25lZCBpbnQgY3VyX3NrO1xcbjI4ODU6XFx0XFx0dW5zaWduZWQgaW50IGVuZF9zaztcXG4yODg2OlxcdFxcdHVuc2lnbmVkIGludCBtYXhfc2s7XFxuMjg4NzpcXHRcXHR1bmlvbiBicGZfdGNwX2l0ZXJfYmF0Y2hfaXRlbSAqYmF0Y2g7XFxuMjg4ODpcXHR9O1xcbjI4ODk6XFx0XFxuMjg5MDpcXHRzdHJ1Y3QgYnBmX2l0ZXJfX3RjcCB7XFxuMjg5MTpcXHRcXHRfX2JwZl9tZF9wdHIoc3RydWN0IGJwZl9pdGVyX21ldGEgKiwgbWV0YSk7XFxuMjg5MjpcXHRcXHRfX2JwZl9tZF9wdHIoc3RydWN0IHNvY2tfY29tbW9uICosIHNrX2NvbW1vbik7XFxuMjg5MzpcXHRcXHR1aWRfdCB1aWQgX19hbGlnbmVkKDgpO1xcbjI4OTQ6XFx0fTtcXG4yODk1OlxcdFxcbjI4OTY6XFx0c3RhdGljIGludCB0Y3BfcHJvZ19zZXFfc2hvdyhzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHN0cnVjdCBicGZfaXRlcl9tZXRhICptZXRhLFxcbjI4OTc6XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc29ja19jb21tb24gKnNrX2NvbW1vbiwgdWlkX3QgdWlkKVxcbjI4OTg6XFx0e1xcbjI4OTk6XFx0XFx0c3RydWN0IGJwZl9pdGVyX190Y3AgY3R4O1xcbjI5MDA6XFx0XFxuMjkwMTpcXHRcXHRtZXRhLVxcdTAwM2VzZXFfbnVtLS07ICAvKiBza2lwIFNFUV9TVEFSVF9UT0tFTiAqL1xcbjI5MDI6XFx0XFx0Y3R4Lm1ldGEgPSBtZXRhO1xcbjI5MDM6XFx0XFx0Y3R4LnNrX2NvbW1vbiA9IHNrX2NvbW1vbjtcXG4yOTA0OlxcdFxcdGN0eC51aWQgPSB1aWQ7XFxuMjkwNTpcXHRcXHRyZXR1cm4gYnBmX2l0ZXJfcnVuX3Byb2cocHJvZywgXFx1MDAyNmN0eCk7XFxuMjkwNjpcXHR9XFxuMjkwNzpcXHRcXG4yOTA4OlxcdHN0YXRpYyB2b2lkIGJwZl9pdGVyX3RjcF9wdXRfYmF0Y2goc3RydWN0IGJwZl90Y3BfaXRlcl9zdGF0ZSAqaXRlcilcXG4yOTA5OlxcdHtcXG4yOTEwOlxcdFxcdHVuaW9uIGJwZl90Y3BfaXRlcl9iYXRjaF9pdGVtICppdGVtO1xcbjI5MTE6XFx0XFx0dW5zaWduZWQgaW50IGN1cl9zayA9IGl0ZXItXFx1MDAzZWN1cl9zaztcXG4yOTEyOlxcdFxcdF9fdTY0IGNvb2tpZTtcXG4yOTEzOlxcdFxcbjI5MTQ6XFx0XFx0LyogUmVtZW1iZXIgdGhlIGNvb2tpZXMgb2YgdGhlIHNvY2tldHMgd2UgaGF2ZW4ndCBzZWVuIHlldCwgc28gd2UgY2FuXFxuMjkxNTpcXHRcXHQgKiBwaWNrIHVwIHdoZXJlIHdlIGxlZnQgb2ZmIG5leHQgdGltZSBhcm91bmQuXFxuMjkxNjpcXHRcXHQgKi9cXG4yOTE3OlxcdFxcdHdoaWxlIChjdXJfc2sgXFx1MDAzYyBpdGVyLVxcdTAwM2VlbmRfc2spIHtcXG4yOTE4OlxcdFxcdFxcdGl0ZW0gPSBcXHUwMDI2aXRlci1cXHUwMDNlYmF0Y2hbY3VyX3NrKytdO1xcbjI5MTk6XFx0XFx0XFx0Y29va2llID0gc29ja19nZW5fY29va2llKGl0ZW0tXFx1MDAzZXNrKTtcXG4yOTIwOlxcdFxcdFxcdHNvY2tfZ2VuX3B1dChpdGVtLVxcdTAwM2Vzayk7XFxuMjkyMTpcXHRcXHRcXHRpdGVtLVxcdTAwM2Vjb29raWUgPSBjb29raWU7XFxuMjkyMjpcXHRcXHR9XFxuMjkyMzpcXHR9XFxuMjkyNDpcXHRcXG4yOTI1OlxcdHN0YXRpYyBpbnQgYnBmX2l0ZXJfdGNwX3JlYWxsb2NfYmF0Y2goc3RydWN0IGJwZl90Y3BfaXRlcl9zdGF0ZSAqaXRlcixcXG4yOTI2OlxcdFxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGludCBuZXdfYmF0Y2hfc3osIGdmcF90IGZsYWdzKVxcbjI5Mjc6XFx0e1xcbjI5Mjg6XFx0XFx0dW5pb24gYnBmX3RjcF9pdGVyX2JhdGNoX2l0ZW0gKm5ld19iYXRjaDtcXG4yOTI5OlxcdFxcbjI5MzA6XFx0XFx0bmV3X2JhdGNoID0ga3ZtYWxsb2Moc2l6ZW9mKCpuZXdfYmF0Y2gpICogbmV3X2JhdGNoX3N6LFxcbjI5MzE6XFx0XFx0XFx0XFx0ICAgICBmbGFncyB8IF9fR0ZQX05PV0FSTik7XFxuMjkzMjpcXHRcXHRpZiAoIW5ld19iYXRjaClcXG4yOTMzOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjI5MzQ6XFx0XFxuMjkzNTpcXHRcXHRtZW1jcHkobmV3X2JhdGNoLCBpdGVyLVxcdTAwM2ViYXRjaCwgc2l6ZW9mKCppdGVyLVxcdTAwM2ViYXRjaCkgKiBpdGVyLVxcdTAwM2VlbmRfc2spO1xcbjI5MzY6XFx0XFx0a3ZmcmVlKGl0ZXItXFx1MDAzZWJhdGNoKTtcXG4yOTM3OlxcdFxcdGl0ZXItXFx1MDAzZWJhdGNoID0gbmV3X2JhdGNoO1xcbjI5Mzg6XFx0XFx0aXRlci1cXHUwMDNlbWF4X3NrID0gbmV3X2JhdGNoX3N6O1xcbjI5Mzk6XFx0XFxuMjk0MDpcXHRcXHRyZXR1cm4gMDtcXG4yOTQxOlxcdH1cXG4yOTQyOlxcdFxcbjI5NDM6XFx0c3RhdGljIHN0cnVjdCBzb2NrICpicGZfaXRlcl90Y3BfcmVzdW1lX2J1Y2tldChzdHJ1Y3Qgc29jayAqZmlyc3Rfc2ssXFxuMjk0NDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgdW5pb24gYnBmX3RjcF9pdGVyX2JhdGNoX2l0ZW0gKmNvb2tpZXMsXFxuMjk0NTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgaW50IG5fY29va2llcylcXG4yOTQ2OlxcdHtcXG4yOTQ3OlxcdFxcdHN0cnVjdCBobGlzdF9udWxsc19ub2RlICpub2RlO1xcbjI5NDg6XFx0XFx0c3RydWN0IHNvY2sgKnNrO1xcbjI5NDk6XFx0XFx0aW50IGk7XFxuMjk1MDpcXHRcXG4yOTUxOlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBuX2Nvb2tpZXM7IGkrKykge1xcbjI5NTI6XFx0XFx0XFx0c2sgPSBmaXJzdF9zaztcXG4yOTUzOlxcdFxcdFxcdHNrX251bGxzX2Zvcl9lYWNoX2Zyb20oc2ssIG5vZGUpXFxuMjk1NDpcXHRcXHRcXHRcXHRpZiAoY29va2llc1tpXS5jb29raWUgPT0gYXRvbWljNjRfcmVhZChcXHUwMDI2c2stXFx1MDAzZXNrX2Nvb2tpZSkpXFxuMjk1NTpcXHRcXHRcXHRcXHRcXHRyZXR1cm4gc2s7XFxuMjk1NjpcXHRcXHR9XFxuMjk1NzpcXHRcXG4yOTU4OlxcdFxcdHJldHVybiBOVUxMO1xcbjI5NTk6XFx0fVxcbjI5NjA6XFx0XFxuMjk2MTpcXHRzdGF0aWMgc3RydWN0IHNvY2sgKmJwZl9pdGVyX3RjcF9yZXN1bWVfbGlzdGVuaW5nKHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxcbjI5NjI6XFx0e1xcbjI5NjM6XFx0XFx0c3RydWN0IGluZXRfaGFzaGluZm8gKmhpbmZvID0gc2VxX2ZpbGVfbmV0KHNlcSktXFx1MDAzZWlwdjQudGNwX2RlYXRoX3Jvdy5oYXNoaW5mbztcXG4yOTY0OlxcdFxcdHN0cnVjdCBicGZfdGNwX2l0ZXJfc3RhdGUgKml0ZXIgPSBzZXEtXFx1MDAzZXByaXZhdGU7XFxuMjk2NTpcXHRcXHRzdHJ1Y3QgdGNwX2l0ZXJfc3RhdGUgKnN0ID0gXFx1MDAyNml0ZXItXFx1MDAzZXN0YXRlO1xcbjI5NjY6XFx0XFx0dW5zaWduZWQgaW50IGZpbmRfY29va2llID0gaXRlci1cXHUwMDNlY3VyX3NrO1xcbjI5Njc6XFx0XFx0dW5zaWduZWQgaW50IGVuZF9jb29raWUgPSBpdGVyLVxcdTAwM2VlbmRfc2s7XFxuMjk2ODpcXHRcXHRpbnQgcmVzdW1lX2J1Y2tldCA9IHN0LVxcdTAwM2VidWNrZXQ7XFxuMjk2OTpcXHRcXHRzdHJ1Y3Qgc29jayAqc2s7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIwVDAwOjQ1OjI2LjQ4MjI2ODg1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUzMzQyMjU5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLZXJuZWwgQ29uZmlndXJhdGlvbiBmb3IgQlBGLUVuYWJsZWQgVENQIEl0ZXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMga2VybmVsIGNvZGUgYW5kLCByaWdodCBvZmYgdGhlIGJhdCwgaXQncyBjbGVhciB0aGUgcmVsZXZhbnQgc2VjdGlvbiBpcyBnYXRlZCBieSBgQ09ORklHX0JQRl9TWVNDQUxMYC4gVGhhdCdzIHRoZSBrZXkgZW5hYmxpbmcgY29uZmlndXJhdGlvbi5cblxuTm93LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGdvdGNoYXMuIFNpbmNlIHdlJ3JlIGRlYWxpbmcgd2l0aCBgbmV0L2lwdjQvdGNwX2lwdjQuY2AsIGl0J3Mgc2FmZSB0byBhc3N1bWUgYENPTkZJR19JTkVUYCBhbmQgYENPTkZJR19UQ1BgIGFyZSBpbXBsaWNpdGx5IHJlcXVpcmVkLiBZb3Uga25vdywgdGhlIHVzdWFsIGRlcGVuZGVuY2llcyBmb3IgSVB2NCBUQ1AuIEJ1dCwgc2luY2UgdGhleSdyZSBiYXNpYyBwcmVyZXF1aXNpdGVzLCB3ZSB3b3VsZG4ndCBub3JtYWxseSBjYWxsIHRoZW0gb3V0IHVubGVzcyBpdCB3YXMgYSB2ZXJ5IHNwZWNpZmljIGRlcGVuZGVuY3kgb24gb25lIG9mIHRoZW0uIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIHRoZSBpbnRlcmVzdGluZyBvbmUsIHRoZSBvbmUgdGhhdCBtYWtlcyB0aGlzIGZlYXR1cmUgdGljay5cblxuQWxyaWdodCwgYmVmb3JlIEkgc2lnbiBvZmYsIGxldCBtZSBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBgYnBmX2l0ZXJfdGNwX2JhdGNoYCBmdW5jdGlvbiBpdHNlbGYuLi4gbWFrZSBzdXJlIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhhdCBmdW5jdGlvbiBpcyBjb3JyZWN0LiBKdXN0IHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMzYsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwMDo0NTozMC4wMTU2OTM1MDRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkzMDMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY0L3RjcF9pcHY0LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzEyMCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMxMjA6XFx0XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmhpbmZvLVxcdTAwM2VsaGFzaDJbc3QtXFx1MDAzZWJ1Y2tldF0ubG9jayk7XFxuMzEyMTpcXHRcXHRlbHNlXFxuMzEyMjpcXHRcXHRcXHRzcGluX3VubG9ja19iaChpbmV0X2VoYXNoX2xvY2twKGhpbmZvLCBzdC1cXHUwMDNlYnVja2V0KSk7XFxuMzEyMzpcXHR9XFxuMzEyNDpcXHRcXG4zMTI1OlxcdHN0YXRpYyBzdHJ1Y3Qgc29jayAqYnBmX2l0ZXJfdGNwX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxKVxcbjMxMjY6XFx0e1xcbjMxMjc6XFx0XFx0c3RydWN0IGJwZl90Y3BfaXRlcl9zdGF0ZSAqaXRlciA9IHNlcS1cXHUwMDNlcHJpdmF0ZTtcXG4zMTI4OlxcdFxcdHVuc2lnbmVkIGludCBleHBlY3RlZDtcXG4zMTI5OlxcdFxcdHN0cnVjdCBzb2NrICpzaztcXG4zMTMwOlxcdFxcdGludCBlcnI7XFxuMzEzMTpcXHRcXG4zMTMyOlxcdGFnYWluOlxcbjMxMzM6XFx0XFx0c2sgPSBicGZfaXRlcl90Y3BfcmVzdW1lKHNlcSk7XFxuMzEzNDpcXHRcXHRpZiAoIXNrKVxcbjMxMzU6XFx0XFx0XFx0cmV0dXJuIE5VTEw7IC8qIERvbmUgKi9cXG4zMTM2OlxcdFxcbjMxMzc6XFx0XFx0ZXhwZWN0ZWQgPSBicGZfaXRlcl9maWxsX2JhdGNoKHNlcSwgXFx1MDAyNnNrKTtcXG4zMTM4OlxcdFxcdGlmIChsaWtlbHkoaXRlci1cXHUwMDNlZW5kX3NrID09IGV4cGVjdGVkKSlcXG4zMTM5OlxcdFxcdFxcdGdvdG8gZG9uZTtcXG4zMTQwOlxcdFxcbjMxNDE6XFx0XFx0LyogQmF0Y2ggc2l6ZSB3YXMgdG9vIHNtYWxsLiAqL1xcbjMxNDI6XFx0XFx0YnBmX2l0ZXJfdGNwX3VubG9ja19idWNrZXQoc2VxKTtcXG4zMTQzOlxcdFxcdGJwZl9pdGVyX3RjcF9wdXRfYmF0Y2goaXRlcik7XFxuMzE0NDpcXHRcXHRlcnIgPSBicGZfaXRlcl90Y3BfcmVhbGxvY19iYXRjaChpdGVyLCBleHBlY3RlZCAqIDMgLyAyLFxcbjMxNDU6XFx0XFx0XFx0XFx0XFx0XFx0IEdGUF9VU0VSKTtcXG4zMTQ2OlxcdFxcdGlmIChlcnIpXFxuMzE0NzpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUihlcnIpO1xcbjMxNDg6XFx0XFxuMzE0OTpcXHRcXHRzayA9IGJwZl9pdGVyX3RjcF9yZXN1bWUoc2VxKTtcXG4zMTUwOlxcdFxcdGlmICghc2spXFxuMzE1MTpcXHRcXHRcXHRyZXR1cm4gTlVMTDsgLyogRG9uZSAqL1xcbjMxNTI6XFx0XFxuMzE1MzpcXHRcXHRleHBlY3RlZCA9IGJwZl9pdGVyX2ZpbGxfYmF0Y2goc2VxLCBcXHUwMDI2c2spO1xcbjMxNTQ6XFx0XFx0aWYgKGxpa2VseShpdGVyLVxcdTAwM2VlbmRfc2sgPT0gZXhwZWN0ZWQpKVxcbjMxNTU6XFx0XFx0XFx0Z290byBkb25lO1xcbjMxNTY6XFx0XFxuMzE1NzpcXHRcXHQvKiBCYXRjaCBzaXplIHdhcyBzdGlsbCB0b28gc21hbGwuIEhvbGQgb250byB0aGUgbG9jayB3aGlsZSB3ZSB0cnlcXG4zMTU4OlxcdFxcdCAqIGFnYWluIHdpdGggYSBsYXJnZXIgYmF0Y2ggdG8gbWFrZSBzdXJlIHRoZSBjdXJyZW50IGJ1Y2tldCdzIHNpemVcXG4zMTU5OlxcdFxcdCAqIGRvZXMgbm90IGNoYW5nZSBpbiB0aGUgbWVhbnRpbWUuXFxuMzE2MDpcXHRcXHQgKi9cXG4zMTYxOlxcdFxcdGVyciA9IGJwZl9pdGVyX3RjcF9yZWFsbG9jX2JhdGNoKGl0ZXIsIGV4cGVjdGVkLCBHRlBfTk9XQUlUKTtcXG4zMTYyOlxcdFxcdGlmIChlcnIpIHtcXG4zMTYzOlxcdFxcdFxcdGJwZl9pdGVyX3RjcF91bmxvY2tfYnVja2V0KHNlcSk7XFxuMzE2NDpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUihlcnIpO1xcbjMxNjU6XFx0XFx0fVxcbjMxNjY6XFx0XFxuMzE2NzpcXHRcXHRleHBlY3RlZCA9IGJwZl9pdGVyX2ZpbGxfYmF0Y2goc2VxLCBcXHUwMDI2c2spO1xcbjMxNjg6XFx0XFx0V0FSTl9PTl9PTkNFKGl0ZXItXFx1MDAzZWVuZF9zayAhPSBleHBlY3RlZCk7XFxuMzE2OTpcXHRkb25lOlxcbjMxNzA6XFx0XFx0YnBmX2l0ZXJfdGNwX3VubG9ja19idWNrZXQoc2VxKTtcXG4zMTcxOlxcdFxcdGlmICh1bmxpa2VseSghaXRlci1cXHUwMDNlZW5kX3NrKSkge1xcbjMxNzI6XFx0XFx0XFx0KytpdGVyLVxcdTAwM2VzdGF0ZS5idWNrZXQ7XFxuMzE3MzpcXHRcXHRcXHRnb3RvIGFnYWluO1xcbjMxNzQ6XFx0XFx0fVxcbjMxNzU6XFx0XFx0cmV0dXJuIGl0ZXItXFx1MDAzZWJhdGNoWzBdLnNrO1xcbjMxNzY6XFx0fVxcbjMxNzc6XFx0XFxuMzE3ODpcXHRzdGF0aWMgdm9pZCAqYnBmX2l0ZXJfdGNwX3NlcV9zdGFydChzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgbG9mZl90ICpwb3MpXFxuMzE3OTpcXHR7XFxuMzE4MDpcXHRcXHQvKiBicGYgaXRlciBkb2VzIG5vdCBzdXBwb3J0IGxzZWVrLCBzbyBpdCBhbHdheXNcXG4zMTgxOlxcdFxcdCAqIGNvbnRpbnVlIGZyb20gd2hlcmUgaXQgd2FzIHN0b3AoKS1wZWQuXFxuMzE4MjpcXHRcXHQgKi9cXG4zMTgzOlxcdFxcdGlmICgqcG9zKVxcbjMxODQ6XFx0XFx0XFx0cmV0dXJuIGJwZl9pdGVyX3RjcF9iYXRjaChzZXEpO1xcbjMxODU6XFx0XFxuMzE4NjpcXHRcXHRyZXR1cm4gU0VRX1NUQVJUX1RPS0VOO1xcbjMxODc6XFx0fVxcbjMxODg6XFx0XFxuMzE4OTpcXHRzdGF0aWMgdm9pZCAqYnBmX2l0ZXJfdGNwX3NlcV9uZXh0KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2LCBsb2ZmX3QgKnBvcylcXG4zMTkwOlxcdHtcXG4zMTkxOlxcdFxcdHN0cnVjdCBicGZfdGNwX2l0ZXJfc3RhdGUgKml0ZXIgPSBzZXEtXFx1MDAzZXByaXZhdGU7XFxuMzE5MjpcXHRcXHRzdHJ1Y3QgdGNwX2l0ZXJfc3RhdGUgKnN0ID0gXFx1MDAyNml0ZXItXFx1MDAzZXN0YXRlO1xcbjMxOTM6XFx0XFx0c3RydWN0IHNvY2sgKnNrO1xcbjMxOTQ6XFx0XFxuMzE5NTpcXHRcXHQvKiBXaGVuZXZlciBzZXFfbmV4dCgpIGlzIGNhbGxlZCwgdGhlIGl0ZXItXFx1MDAzZWN1cl9zayBpc1xcbjMxOTY6XFx0XFx0ICogZG9uZSB3aXRoIHNlcV9zaG93KCksIHNvIGFkdmFuY2UgdG8gdGhlIG5leHQgc2sgaW5cXG4zMTk3OlxcdFxcdCAqIHRoZSBiYXRjaC5cXG4zMTk4OlxcdFxcdCAqL1xcbjMxOTk6XFx0XFx0aWYgKGl0ZXItXFx1MDAzZWN1cl9zayBcXHUwMDNjIGl0ZXItXFx1MDAzZWVuZF9zaykge1xcbjMyMDA6XFx0XFx0XFx0LyogS2VlcGluZyBzdC1cXHUwMDNlbnVtIGNvbnNpc3RlbnQgaW4gdGNwX2l0ZXJfc3RhdGUuXFxuMzIwMTpcXHRcXHRcXHQgKiBicGZfaXRlcl90Y3AgZG9lcyBub3QgdXNlIHN0LVxcdTAwM2VudW0uXFxuMzIwMjpcXHRcXHRcXHQgKiBtZXRhLnNlcV9udW0gaXMgdXNlZCBpbnN0ZWFkLlxcbjMyMDM6XFx0XFx0XFx0ICovXFxuMzIwNDpcXHRcXHRcXHRzdC1cXHUwMDNlbnVtKys7XFxuMzIwNTpcXHRcXHRcXHRzb2NrX2dlbl9wdXQoaXRlci1cXHUwMDNlYmF0Y2hbaXRlci1cXHUwMDNlY3VyX3NrKytdLnNrKTtcXG4zMjA2OlxcdFxcdH1cXG4zMjA3OlxcdFxcbjMyMDg6XFx0XFx0aWYgKGl0ZXItXFx1MDAzZWN1cl9zayBcXHUwMDNjIGl0ZXItXFx1MDAzZWVuZF9zaylcXG4zMjA5OlxcdFxcdFxcdHNrID0gaXRlci1cXHUwMDNlYmF0Y2hbaXRlci1cXHUwMDNlY3VyX3NrXS5zaztcXG4zMjEwOlxcdFxcdGVsc2VcXG4zMjExOlxcdFxcdFxcdHNrID0gYnBmX2l0ZXJfdGNwX2JhdGNoKHNlcSk7XFxuMzIxMjpcXHRcXG4zMjEzOlxcdFxcdCsrKnBvcztcXG4zMjE0OlxcdFxcdC8qIEtlZXBpbmcgc3QtXFx1MDAzZWxhc3RfcG9zIGNvbnNpc3RlbnQgaW4gdGNwX2l0ZXJfc3RhdGUuXFxuMzIxNTpcXHRcXHQgKiBicGYgaXRlciBkb2VzIG5vdCBkbyBsc2Vlaywgc28gc3QtXFx1MDAzZWxhc3RfcG9zIGFsd2F5cyBlcXVhbHMgdG8gKnBvcy5cXG4zMjE2OlxcdFxcdCAqL1xcbjMyMTc6XFx0XFx0c3QtXFx1MDAzZWxhc3RfcG9zID0gKnBvcztcXG4zMjE4OlxcdFxcdHJldHVybiBzaztcXG4zMjE5OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjBUMDA6NDU6MzAuMDE1ODg4OTY0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1Mjg4MjkwMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIFRDUCBJdGVyYXRvciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggZGl2ZXMgaW50byBgYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoYCBhbmQgYGJwZl9pdGVyX3RjcF9iYXRjaGAsIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgQlBGIFRDUCBpdGVyYXRvcnMuIEltbWVkaWF0ZWx5LCBpdCBzb3VuZHMgbGlrZSBhIGZ1bmN0aW9uYWwgZml4IGFuZCBidWcgY29ycmVjdGlvbiwgd2hpY2ggYWx3YXlzIHBpcXVlcyBteSBpbnRlcmVzdC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZXMgcmV2b2x2ZSBhcm91bmQgYWRkcmVzc2luZyBzb21lIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByZWxhdGVkIGlzc3VlcyB0aGF0IGNvdWxkIG9jY3VyIHdoZW4gc29ja2V0cyB3aXRoIGEgemVybyByZWZjb3VudCBhcmUgaW5hZHZlcnRlbnRseSBhZGRlZCB0byBhIGJhdGNoLiBJdCBhcHBlYXJzIHRvIGFsc28gaW5jb3Jwb3JhdGUgcm9idXN0IGhhbmRsaW5nIG9mIGVtcHR5IGJhdGNoZXMsIGVuc3VyaW5nIHNlYW1sZXNzIHByb2Nlc3NpbmcgaW4gdGhlIGxvZ2ljLiBUaGVzZSBhcmUgY3JpdGljYWwgY2hhbmdlcywgZXNwZWNpYWxseSBjb25zaWRlcmluZyB0aGlzIGlzIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgdGhlIEJQRiBpdGVyYXRvcnMgZm9yIFRDUCBzb2NrZXRzIGludGVyYWN0IHdpdGguXG5cbldvcnRoIGZ1enppbmc/IEFic29sdXRlbHkuIEdpdmVuIHRoZSBuYXR1cmUgb2YgaXRlcmF0b3IgbW9kaWZpY2F0aW9ucyBhbmQgdGhlIHBvdGVudGlhbCBmb3IgbWVtb3J5LXJlbGF0ZWQgZXJyb3JzLCB0aGlzIHdhcnJhbnRzIHRob3JvdWdoIGZ1enppbmcuXG5cbk15IGZvY3VzIHNob3VsZCBiZSBob25lZCBpbiBvbiBgYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoYCBhbmQgYGJwZl9pdGVyX3RjcF9iYXRjaGAuXG5cbkVuYWJsaW5nIGBCUEZfU1lTQ0FMTGAgc2VlbXMgbGlrZSBhIGdpdmVuLCB0byBiZSBhYmxlIHRvIHByb3Blcmx5IGV2YWx1YXRlIHRoZSBmaXguXG5cbkp1c3QgdG8gYmUgc3VyZSwgbGV0IG1lIHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIGZ1bmN0aW9uIG5hbWUgYGJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaGAgaXMgaW5kZWVkIGNvcnJlY3QuIFllcywgaXQncyByaWdodCB0aGVyZSBpbiB0aGUgZGlmZiwgYHN0YXRpYyB1bnNpZ25lZCBpbnQgYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoKHN0cnVjdCBzZXFfZmlsZSAqc2VxLGBcblxuQWxyaWdodCwgdGhhdCdzIGNvbmZpcm1lZC4gTm93LCBpdCdzIHRpbWUgdG8gc2V0IHVwIHRoZSByZXN1bHRzIGFuZCBwcm9jZWVkIHdpdGggYSBkZXRhaWxlZCBhbmFseXNpcyBhbmQgdGVzdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODAxOCwiT3V0cHV0VG9rZW5zIjoxMTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMFQwMDo0NTozNS41NDQ3MTk5MjRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzIxODA4NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2l0ZXJfdGNwX2VzdGFibGlzaGVkX2JhdGNoXCIsXG4gICAgXCJicGZfaXRlcl90Y3BfYmF0Y2hcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQlBGIFRDUCBpdGVyYXRvciBsb2dpYyB0byBzYWZlbHkgaGFuZGxlIHNvY2tldHMgd2l0aCB6ZXJvIHJlZmNvdW50IGFuZCBjb3JyZWN0bHkgc2tpcCBlbXB0eSBidWNrZXRzIGR1cmluZyBiYXRjaGluZy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEJQRiBpdGVyYXRvcnMgZm9yIFRDUCBzb2NrZXRzKSB0aGF0IGZpeCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgbG9naWMgYnVncy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9pdGVyX3RjcF9lc3RhYmxpc2hlZF9iYXRjaFwiLFxuICAgIFwiYnBmX2l0ZXJfdGNwX2JhdGNoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJQRiBUQ1AgaXRlcmF0b3IgbG9naWMgdG8gc2FmZWx5IGhhbmRsZSBzb2NrZXRzIHdpdGggemVybyByZWZjb3VudCBhbmQgY29ycmVjdGx5IHNraXAgZW1wdHkgYnVja2V0cyBkdXJpbmcgYmF0Y2hpbmcuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChCUEYgaXRlcmF0b3JzIGZvciBUQ1Agc29ja2V0cykgdGhhdCBmaXggcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIGxvZ2ljIGJ1Z3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7mtd[1] Phase: Succeeded StartedAt: 2026-06-20 00:48:00 +0000 UTC FinishedAt: 2026-06-20 00:48:00 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7mtd[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-20 00:48:00 +0000 UTC FinishedAt: 2026-06-20 00:48:00 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7mtd[2] Phase: Succeeded StartedAt: 2026-06-20 00:48:00 +0000 UTC FinishedAt: 2026-06-20 04:39:30 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 00:48:00 +0000 UTC FinishedAt: 2026-06-20 04:39:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 00:48:00 +0000 UTC FinishedAt: 2026-06-20 00:48:21 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 00:48:00 +0000 UTC FinishedAt: 2026-06-20 00:48:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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-workfloww7mtd/series-workfloww7mtd-convert-artifact-1055313063/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 00:48:21 +0000 UTC FinishedAt: 2026-06-20 01:12:28 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 00:48:21 +0000 UTC FinishedAt: 2026-06-20 01:12:28 +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:*3412e085-9228-4121-979e-70dfaef94080,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-workfloww7mtd/series-workfloww7mtd-convert-artifact-1055313063/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": "dc25fc40-b3b3-4f89-87dc-96909836a9e7", "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-workfloww7mtd/series-workfloww7mtd-build-action-232725565/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 00:48:21 +0000 UTC FinishedAt: 2026-06-20 01:12:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*3412e085-9228-4121-979e-70dfaef94080,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-workfloww7mtd/series-workfloww7mtd-convert-artifact-1055313063/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": "dc25fc40-b3b3-4f89-87dc-96909836a9e7", "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-workfloww7mtd/series-workfloww7mtd-build-action-232725565/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 01:12:28 +0000 UTC FinishedAt: 2026-06-20 01:12:28 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 01:12:28 +0000 UTC FinishedAt: 2026-06-20 01:12:28 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 01:12:28 +0000 UTC FinishedAt: 2026-06-20 01:12:38 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 01:12:28 +0000 UTC FinishedAt: 2026-06-20 01:12:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-workfloww7mtd/series-workfloww7mtd-convert-artifact-2780526422/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 01:12:38 +0000 UTC FinishedAt: 2026-06-20 01:14:56 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 01:12:38 +0000 UTC FinishedAt: 2026-06-20 01:14:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*dc25fc40-b3b3-4f89-87dc-96909836a9e7,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-workfloww7mtd/series-workfloww7mtd-build-action-232725565/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-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 01:14:56 +0000 UTC FinishedAt: 2026-06-20 01:14:56 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 01:14:56 +0000 UTC FinishedAt: 2026-06-20 01:14:56 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 01:14:56 +0000 UTC FinishedAt: 2026-06-20 01:35:59 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 01:14:56 +0000 UTC FinishedAt: 2026-06-20 01:35:59 +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:*3412e085-9228-4121-979e-70dfaef94080,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-workfloww7mtd/series-workfloww7mtd-convert-artifact-2780526422/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": "f262d1f4-4951-4c1e-8553-27d37d6b114a", "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-workfloww7mtd/series-workfloww7mtd-build-action-3597671770/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 01:14:56 +0000 UTC FinishedAt: 2026-06-20 01:35:49 +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:*3412e085-9228-4121-979e-70dfaef94080,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-workfloww7mtd/series-workfloww7mtd-convert-artifact-2780526422/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": "f262d1f4-4951-4c1e-8553-27d37d6b114a", "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-workfloww7mtd/series-workfloww7mtd-build-action-3597671770/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 01:35:59 +0000 UTC FinishedAt: 2026-06-20 01:35:59 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 01:35:59 +0000 UTC FinishedAt: 2026-06-20 01:35:59 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 01:35:59 +0000 UTC FinishedAt: 2026-06-20 01:38:00 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 01:35:59 +0000 UTC FinishedAt: 2026-06-20 01:37:50 +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:*f262d1f4-4951-4c1e-8553-27d37d6b114a,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-workfloww7mtd/series-workfloww7mtd-build-action-3597671770/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-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 01:38:00 +0000 UTC FinishedAt: 2026-06-20 04:39:30 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 01:38:00 +0000 UTC FinishedAt: 2026-06-20 04:39:30 +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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"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:*dc25fc40-b3b3-4f89-87dc-96909836a9e7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f262d1f4-4951-4c1e-8553-27d37d6b114a,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-workfloww7mtd/series-workfloww7mtd-build-action-232725565/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-workfloww7mtd/series-workfloww7mtd-build-action-3597671770/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 01:38:00 +0000 UTC FinishedAt: 2026-06-20 01:38:10 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 01:38:00 +0000 UTC FinishedAt: 2026-06-20 01:38:05 +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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"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-workfloww7mtd/series-workfloww7mtd-convert-artifact-2710352891/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 01:38:00 +0000 UTC FinishedAt: 2026-06-20 01:38:00 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 01:38:00 +0000 UTC FinishedAt: 2026-06-20 01:38:00 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 01:38:00 +0000 UTC FinishedAt: 2026-06-20 01:38:00 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 01:38:10 +0000 UTC FinishedAt: 2026-06-20 04:39:30 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww7mtd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","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","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["bpf_iter_tcp_established_batch","bpf_iter_tcp_batch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4549871118cf616eecdd2d939f78e3b9e1dddc48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"ed4c90c5-b637-4c02-8cff-7141aeca235f","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-06-20 01:38:10 +0000 UTC FinishedAt: 2026-06-20 04:39:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*dc25fc40-b3b3-4f89-87dc-96909836a9e7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f262d1f4-4951-4c1e-8553-27d37d6b114a,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-workfloww7mtd/series-workfloww7mtd-build-action-232725565/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-workfloww7mtd/series-workfloww7mtd-build-action-3597671770/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-workfloww7mtd/series-workfloww7mtd-convert-artifact-2710352891/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,}