Name: series-workflowkz6pv Phase: Succeeded StartedAt: 2026-07-02 23:00:05 +0000 UTC FinishedAt: 2026-07-03 03:48:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkz6pv[0] Phase: Succeeded StartedAt: 2026-07-02 23:00:05 +0000 UTC FinishedAt: 2026-07-02 23:28:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkz6pv[0].run-triage Phase: Succeeded StartedAt: 2026-07-02 23:00:05 +0000 UTC FinishedAt: 2026-07-02 23:28:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "8c04c1292dca29a57ea82c6a44348be49749fc22", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "8c04c1292dca29a57ea82c6a44348be49749fc22", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "7d016b85-98e5-49c9-8d33-afb5bbcc6f70" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "bpf_sock_destroy" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAyIDIzOjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX3NvY2tfZGVzdHJveSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gYGJwZl9zb2NrX2Rlc3Ryb3lgIHRvIGVuc3VyZSBpdCBpcyBvbmx5IGNhbGxlZCBvbiBmdWxsIHNvY2tldHMsIHByZXZlbnRpbmcgcG90ZW50aWFsIGNyYXNoZXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciB3aGVuIGNhbGxlZCBvbiByZXF1ZXN0IG9yIHRpbWV3YWl0IHNvY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIEJQRiBrZnVuYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIEJQRiBwcm9ncmFtcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMzoyNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGZhYmFhMTg0NGM4YTg2ZTYwNTM5YTNhMmY3YTI1Y2E0NGI4NDJiYTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDIzOjI2OjE4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2ZpbHRlci5jIGIvbmV0L2NvcmUvZmlsdGVyLmNcbmluZGV4IDY5ZWMxYTRjMGY5ZGExLi5hMGZjYWZiMDhiOTY4NSAxMDA2NDRcbi0tLSBhL25ldC9jb3JlL2ZpbHRlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9maWx0ZXIuY1xuQEAgLTEyNjY1LDYgJiM0MzsxMjY2NSw5IEBAIF9fYnBmX2tmdW5jIGludCBicGZfc29ja19kZXN0cm95KHN0cnVjdCBzb2NrX2NvbW1vbiAqc29jaylcbiB7XG4gXHRzdHJ1Y3Qgc29jayAqc2sgPSAoc3RydWN0IHNvY2sgKilzb2NrO1xuIFxuJiM0MztcdGlmICghc2tfZnVsbHNvY2soc2spKVxuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0MztcbiBcdC8qIFRoZSBsb2NraW5nIHNlbWFudGljcyB0aGF0IGFsbG93IGZvciBzeW5jaHJvbm91cyBleGVjdXRpb24gb2YgdGhlXG4gXHQgKiBkZXN0cm95IGhhbmRsZXJzIGFyZSBvbmx5IHN1cHBvcnRlZCBmb3IgVENQIGFuZCBVRFAuXG4gXHQgKiBTdXBwb3J0aW5nIHByb3RvY29scyB3aWxsIG5lZWQgdG8gYWNxdWlyZSBzb2NrIGxvY2sgaW4gdGhlIEJQRiBjb250ZXh0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjM6MjY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfc29ja19kZXN0cm95JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBgYnBmX3NvY2tfZGVzdHJveWAgdG8gZW5zdXJlIGl0IGlzIG9ubHkgY2FsbGVkIG9uIGZ1bGwgc29ja2V0cywgcHJldmVudGluZyBwb3RlbnRpYWwgY3Jhc2hlcyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIHdoZW4gY2FsbGVkIG9uIHJlcXVlc3Qgb3IgdGltZXdhaXQgc29ja2V0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgQlBGIGtmdW5jIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gQlBGIHByb2dyYW1zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmYWJhYTE4NDRjOGE4NmU2MDUzOWEzYTJmN2EyNWNhNDRiODQyYmEzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMiAyMzoyNjoxOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9jb3JlL2ZpbHRlci5jIGIvbmV0L2NvcmUvZmlsdGVyLmMKaW5kZXggNjllYzFhNGMwZjlkYTEuLmEwZmNhZmIwOGI5Njg1IDEwMDY0NAotLS0gYS9uZXQvY29yZS9maWx0ZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9maWx0ZXIuYwpAQCAtMTI2NjUsNiAmIzQzOzEyNjY1LDkgQEAgX19icGZfa2Z1bmMgaW50IGJwZl9zb2NrX2Rlc3Ryb3koc3RydWN0IHNvY2tfY29tbW9uICpzb2NrKQogewogCXN0cnVjdCBzb2NrICpzayA9IChzdHJ1Y3Qgc29jayAqKXNvY2s7CiAKJiM0MzsJaWYgKCFza19mdWxsc29jayhzaykpCiYjNDM7CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7CiAJLyogVGhlIGxvY2tpbmcgc2VtYW50aWNzIHRoYXQgYWxsb3cgZm9yIHN5bmNocm9ub3VzIGV4ZWN1dGlvbiBvZiB0aGUKIAkgKiBkZXN0cm95IGhhbmRsZXJzIGFyZSBvbmx5IHN1cHBvcnRlZCBmb3IgVENQIGFuZCBVRFAuCiAJICogU3VwcG9ydGluZyBwcm90b2NvbHMgd2lsbCBuZWVkIHRvIGFjcXVpcmUgc29jayBsb2NrIGluIHRoZSBCUEYgY29udGV4dAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMzoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODI5CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjoKCioqQW5hbHl6aW5nIGEgTmV0d29yayBGaWx0ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCYjMzk7cyBtYWtpbmcgYSBjaGFuZ2UgdG8gYG5ldC9jb3JlL2ZpbHRlci5jYCwgc3BlY2lmaWNhbGx5IGltcGFjdGluZyB0aGUgYGJwZl9zb2NrX2Rlc3Ryb3lgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiAqd2h5KiB0aGlzIGNoYW5nZSBpcyBiZWluZyBtYWRlLiBUaGUgaW50cm9kdWN0aW9uIG9mIHRoaXMgYGlmICghc2tfZnVsbHNvY2soc2spKSByZXR1cm4gLUVPUE5PVFNVUFA7YCBjaGVjayBpcyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZy4gVGhpcyBzdWdnZXN0cyB0aGV5JiMzOTtyZSB0cnlpbmcgdG8gcmVzdHJpY3QgdGhlIGJlaGF2aW9yIG9mIGBicGZfc29ja19kZXN0cm95YCBiYXNlZCBvbiB0aGUgc29ja2V0IHR5cGUuCgpMZXQgbWUgcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCBgYnBmX3NvY2tfZGVzdHJveWAgaXMgKnN1cHBvc2VkKiB0byBkby4gSXQmIzM5O3MgbGlrZWx5IGludm9sdmVkIGluIGNsZWFuaW5nIHVwIEJQRi1yZWxhdGVkIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggYSBzb2NrZXQgd2hlbiB0aGUgc29ja2V0IGlzIGNsb3NlZCBvciBkZXN0cm95ZWQuIFRoZSBhZGRpdGlvbiBvZiBgc2tfZnVsbHNvY2tgIG1lYW5zIHdlIGFyZSBub3cgb25seSBoYW5kbGluZyBjZXJ0YWluIGtpbmRzIG9mIHNvY2tldHMuIFRoZSBgc2tfZnVsbHNvY2tgIG1hY3JvIHByb2JhYmx5IGluZGljYXRlcyB0aGF0IHdlIGFyZSBkZWFsaW5nIHdpdGggYSBmdWxsIHNvY2tldCwgYXMgb3Bwb3NlZCB0byBhICYjMzQ7aGFsZi1vcGVuJiMzNDsgb3IgaW5jb21wbGV0ZSBzb2NrZXQuIFRoZSBgLUVPUE5PVFNVUFBgIGVycm9yIGlzIGNsZWFyOyBpdCBpbmRpY2F0ZXMgdGhhdCB0aGUgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRoYXQgc29ja2V0IHR5cGUuIFRoaXMgaXMgdGhlIGNydXggb2YgdGhlIHBhdGNoOyB0aGUgZGV2ZWxvcGVycyBoYXZlIGRlY2lkZWQgdGhhdCBgYnBmX3NvY2tfZGVzdHJveWAgaXNuJiMzOTt0IHJlbGV2YW50IG9yIHNhZmUgdG8gb3BlcmF0ZSBvbiBhIGNlcnRhaW4gc2V0IG9mIHNvY2tldHMuIFNvLCBteSBuZXh0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIGRlY2lzaW9uLiBXaGF0IHR5cGVzIG9mIHNvY2tldHMgYXJlICpub3QqIGBmdWxsc29ja2A/IFRoYXQgaXMgd2hhdCB0aGUgcGF0Y2ggaXMgbGltaXRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjM6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX3NvY2tfZGVzdHJveSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL2ZpbHRlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL2ZpbHRlci5jPTEyNjQ2PV9fYnBmX2tmdW5jX3N0YXJ0X2RlZnMoKTtcbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjQ3LVxubmV0L2NvcmUvZmlsdGVyLmM6MTI2NDg6LyogYnBmX3NvY2tfZGVzdHJveTogRGVzdHJveSB0aGUgZ2l2ZW4gc29ja2V0IHdpdGggRUNPTk5BQk9SVEVEIGVycm9yIGNvZGUuXG5uZXQvY29yZS9maWx0ZXIuYy0xMjY0OS0gKlxuLS1cbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjYzLSAqL1xubmV0L2NvcmUvZmlsdGVyLmM6MTI2NjQ6X19icGZfa2Z1bmMgaW50IGJwZl9zb2NrX2Rlc3Ryb3koc3RydWN0IHNvY2tfY29tbW9uICpzb2NrKVxubmV0L2NvcmUvZmlsdGVyLmMtMTI2NjUte1xuLS1cbm5ldC9jb3JlL2ZpbHRlci5jPTEyNjg1PUJURl9LRlVOQ1NfU1RBUlQoYnBmX3NrX2l0ZXJfa2Z1bmNfaWRzKVxubmV0L2NvcmUvZmlsdGVyLmM6MTI2ODY6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zb2NrX2Rlc3Ryb3kpXG5uZXQvY29yZS9maWx0ZXIuYy0xMjY4Ny1CVEZfS0ZVTkNTX0VORChicGZfc2tfaXRlcl9rZnVuY19pZHMpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjM6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU0MwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCUEYgS2VybmVsIEZ1bmN0aW9uIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBicGZfc29ja19kZXN0cm95YCwgc3BlY2lmaWNhbGx5IGEgQlBGIGtmdW5jLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gVGhlIGNvcmUgY2hhbmdlIGlzIHRoZSBhZGRpdGlvbiBvZiB0aGlzIGBpZiAoIXNrX2Z1bGxzb2NrKHNrKSkgcmV0dXJuIC1FT1BOT1RTVVBQO2AgY2hlY2suIFRoYXTigJlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgcHJldHR5IGNsZWFyIHJlc3RyaWN0aW9uIGJlaW5nIGludHJvZHVjZWQuIEdpdmVuIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBhIEJQRiBrZnVuYywgbWVhbmluZyBpdCYjMzk7cyBjYWxsYWJsZSBkaXJlY3RseSBmcm9tIEJQRiBwcm9ncmFtcywgdGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2ssIGVzcGVjaWFsbHkgZm9yIHBvdGVudGlhbCBmdXp6aW5nIHRhcmdldHMuCgpNeSBuZXh0IHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgYW55IHByZXJlcXVpc2l0ZSBjb25maWd1cmF0aW9ucy4gSSByZW1lbWJlciBmcm9tIGV4cGVyaWVuY2UgdGhhdCBgbmV0L2NvcmUvZmlsdGVyLmNgIGlzIGludm9sdmVkIGhlcmUsIGFuZCB0aGF0IGdldHMgY29tcGlsZWQgd2hlbiBgQ09ORklHX05FVGAgaXMgc2V0LCBvYnZpb3VzbHkuIFRoZW4sIEJQRiBoYXMgdG8gYmUgZW5hYmxlZCBpbiBvcmRlciBmb3IgQlBGIGtmdW5jcyB0byBldmVuICpleGlzdCouIFRoYXQmIzM5O3MgYENPTkZJR19CUEZfU1lTQ0FMTGAuIEkmIzM5O2xsIHdhbnQgdG8gZG91YmxlLWNoZWNrIGBuZXQvY29yZS9NYWtlZmlsZWAgdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzIGZvciBgZmlsdGVyLmNgLCBqdXN0IHRvIGJlIGNlcnRhaW4uIEkgd2FudCB0byBtYWtlIHN1cmUgSSYjMzk7bSB0ZXN0aW5nIGluIGFuIGVudmlyb25tZW50IHRoYXQgcmVmbGVjdHMgdGhlIGFjdHVhbCBzdGF0ZSBvZiB0aGUga2VybmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIzOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZpbHRlci5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NvcmUvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvTWFrZWZpbGU9MTI9b2JqLXlcdFx0ICAgICAmIzQzOz0gZGV2Lm8gZGV2X2FwaS5vIGRldl9hZGRyX2xpc3RzLm8gZHN0Lm8gbmV0ZXZlbnQubyBcXFxubmV0L2NvcmUvTWFrZWZpbGU6MTM6XHRcdFx0bmVpZ2hib3VyLm8gcnRuZXRsaW5rLm8gdXRpbHMubyBsaW5rX3dhdGNoLm8gZmlsdGVyLm8gXFxcbm5ldC9jb3JlL01ha2VmaWxlLTE0LVx0XHRcdHNvY2tfZGlhZy5vIGRldl9pb2N0bC5vIHRzby5vIHNvY2tfcmV1c2Vwb3J0Lm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMzoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDk2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290IGhlcmUuCgoqKkFuYWx5emluZyBCdWlsZCBEZXBlbmRlbmNpZXMgYW5kIEZ1bmN0aW9uIERlZmluaXRpb25zKioKCkFscmlnaHQsIHNvIGBmaWx0ZXIub2AgaXMgKmFsd2F5cyogYnVpbHQgd2hlbiBgQ09ORklHX05FVGAgaXMgZW5hYmxlZC4gVGhhdCYjMzk7cyBhIGdpdmVuLiBOb3csIEkmIzM5O20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQgdGhlIGRlZmluaXRpb24gb2YgYGJwZl9zb2NrX2Rlc3Ryb3lgLiBUaGUgZG9jdW1lbnRhdGlvbiBzYXlzIGl0JiMzOTtzIGRlZmluZWQgd2l0aGluIGBfX2JwZl9rZnVuY19zdGFydF9kZWZzKClgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgYXJlIHRoZXJlIGFueSBjb25kaXRpb25hbCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcywgYCNpZmRlZmBzLCBzdXJyb3VuZGluZyB0aGF0IGZ1bmN0aW9uIGRlZmluaXRpb24gd2l0aGluIHRoYXQgbWFjcm8/IEFyZSB3ZSBvbmx5IHNlZWluZyB0aGlzIGZ1bmN0aW9uIGRlZmluZWQgdW5kZXIgc3BlY2lmaWMgY29tcGlsYXRpb24gc2NlbmFyaW9zLCBvciBpcyBpdCBhbHdheXMgcHJlc2VudCB3aXRoIHRoZSBtYWNybz8gSSBuZWVkIHRvIGNoZWNrIGZvciBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdGhhdCBtaWdodCBhZmZlY3QgdGhlIGF2YWlsYWJpbGl0eSBvciBiZWhhdmlvciBvZiB0aGF0IGZ1bmN0aW9uLiBMZXQmIzM5O3MgZGlnIGRlZXBlciBhbmQgc2VlIHdoYXQgdGhhdCBtYWNybyBleHBhbnNpb24gcmV2ZWFscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMzoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfc29ja19kZXN0cm95JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NvcmUvZmlsdGVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvZmlsdGVyLmM9MTI2NDY9X19icGZfa2Z1bmNfc3RhcnRfZGVmcygpO1xubmV0L2NvcmUvZmlsdGVyLmMtMTI2NDctXG5uZXQvY29yZS9maWx0ZXIuYzoxMjY0ODovKiBicGZfc29ja19kZXN0cm95OiBEZXN0cm95IHRoZSBnaXZlbiBzb2NrZXQgd2l0aCBFQ09OTkFCT1JURUQgZXJyb3IgY29kZS5cbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjQ5LSAqXG4tLVxubmV0L2NvcmUvZmlsdGVyLmMtMTI2NjMtICovXG5uZXQvY29yZS9maWx0ZXIuYzoxMjY2NDpfX2JwZl9rZnVuYyBpbnQgYnBmX3NvY2tfZGVzdHJveShzdHJ1Y3Qgc29ja19jb21tb24gKnNvY2spXG5uZXQvY29yZS9maWx0ZXIuYy0xMjY2NS17XG4tLVxubmV0L2NvcmUvZmlsdGVyLmM9MTI2ODU9QlRGX0tGVU5DU19TVEFSVChicGZfc2tfaXRlcl9rZnVuY19pZHMpXG5uZXQvY29yZS9maWx0ZXIuYzoxMjY4NjpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3NvY2tfZGVzdHJveSlcbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjg3LUJURl9LRlVOQ1NfRU5EKGJwZl9za19pdGVyX2tmdW5jX2lkcylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMzoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjM4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gcmVhZGluZyBhbmQgcHJvY2Vzc2luZyB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb246CgoqKkFuYWx5emluZyBgbmV0L2NvcmUvZmlsdGVyLmNgIEFyb3VuZCBMaW5lIDEyNjY0KioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSYjMzk7bSBnb2luZyB0byBwdWxsIHVwIGBuZXQvY29yZS9maWx0ZXIuY2AgYW5kIHplcm8gaW4gb24gcm91Z2hseSBsaW5lIDEyNjY0LiBJJiMzOTttIGV4cGVjdGluZyBzb21ldGhpbmcgY3JpdGljYWwgaGVyZSwgZ2l2ZW4gdGhhdCBpdCYjMzk7cyBiZWVuIHNwZWNpZmllZCB3aXRoIHN1Y2ggcHJlY2lzaW9uLiBUaGlzIGxpa2VseSBpbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBpcyBpbnRlcmVzdGVkIGluIGEgc3BlY2lmaWMgcGFydCBvZiB0aGUgY29kZSwgbWF5YmUgcmVsYXRlZCB0byBhIGtub3duIGlzc3VlLCBhIHJlY2VudCBjaGFuZ2UsIG9yIGEgcGFydGljdWxhciBmdW5jdGlvbmFsaXR5LiBJJiMzOTttIGFudGljaXBhdGluZyB0aGF0IHRoaXMgc2VjdGlvbiBpcyBlaXRoZXIgYSBwb3RlbnRpYWwgYm90dGxlbmVjaywgYSBjb21wbGV4IHBpZWNlIG9mIGxvZ2ljLCBvciBwZXJoYXBzIGFuIGFyZWEgd2hlcmUgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIG1pZ2h0IGJlIGx1cmtpbmcuIEkmIzM5O20gcmVhZHkgdG8gY2FyZWZ1bGx5IHBhcnNlIHRoZSBjb2RlIGFyb3VuZCB0aGlzIGxpbmUsIGxvb2tpbmcgZm9yIGFueSBpbW1lZGlhdGUgcmVkIGZsYWdzIG9yIGludGVyZXN0aW5nIGRlc2lnbiBjaG9pY2VzLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgYmVpbmcgZG9uZS4uLiBhbmQgZGV0ZXJtaW5lIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIHRoYXQgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjM6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvY29yZS9maWx0ZXIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyNjQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEyNjQwOlx0XHRcdFx0XHRcdCAgICAgICBcdTAwMjZicGZfa2Z1bmNfc2V0X3NvY2tfYWRkcik7XG4xMjY0MTpcdFx0cmV0ID0gcmV0ID86IHJlZ2lzdGVyX2J0Zl9rZnVuY19pZF9zZXQoQlBGX1BST0dfVFlQRV9TQ0hFRF9DTFMsIFx1MDAyNmJwZl9rZnVuY19zZXRfdGNwX3JlcXNrKTtcbjEyNjQyOlx0XHRyZXR1cm4gcmV0ID86IHJlZ2lzdGVyX2J0Zl9rZnVuY19pZF9zZXQoQlBGX1BST0dfVFlQRV9TT0NLX09QUywgXHUwMDI2YnBmX2tmdW5jX3NldF9zb2NrX29wcyk7XG4xMjY0MzpcdH1cbjEyNjQ0Olx0bGF0ZV9pbml0Y2FsbChicGZfa2Z1bmNfaW5pdCk7XG4xMjY0NTpcdFxuMTI2NDY6XHRfX2JwZl9rZnVuY19zdGFydF9kZWZzKCk7XG4xMjY0NzpcdFxuMTI2NDg6XHQvKiBicGZfc29ja19kZXN0cm95OiBEZXN0cm95IHRoZSBnaXZlbiBzb2NrZXQgd2l0aCBFQ09OTkFCT1JURUQgZXJyb3IgY29kZS5cbjEyNjQ5Olx0ICpcbjEyNjUwOlx0ICogVGhlIGZ1bmN0aW9uIGV4cGVjdHMgYSBub24tTlVMTCBwb2ludGVyIHRvIGEgc29ja2V0LCBhbmQgaW52b2tlcyB0aGVcbjEyNjUxOlx0ICogcHJvdG9jb2wgc3BlY2lmaWMgc29ja2V0IGRlc3Ryb3kgaGFuZGxlcnMuXG4xMjY1MjpcdCAqXG4xMjY1MzpcdCAqIFRoZSBoZWxwZXIgY2FuIG9ubHkgYmUgY2FsbGVkIGZyb20gQlBGIGNvbnRleHRzIHRoYXQgaGF2ZSBhY3F1aXJlZCB0aGUgc29ja2V0XG4xMjY1NDpcdCAqIGxvY2tzLlxuMTI2NTU6XHQgKlxuMTI2NTY6XHQgKiBQYXJhbWV0ZXJzOlxuMTI2NTc6XHQgKiBAc29jazogUG9pbnRlciB0byBzb2NrZXQgdG8gYmUgZGVzdHJveWVkXG4xMjY1ODpcdCAqXG4xMjY1OTpcdCAqIFJldHVybjpcbjEyNjYwOlx0ICogT24gZXJyb3IsIG1heSByZXR1cm4gRVBST1RPTk9TVVBQT1JULCBFSU5WQUwuXG4xMjY2MTpcdCAqIEVQUk9UT05PU1VQUE9SVCBpZiBwcm90b2NvbCBzcGVjaWZpYyBkZXN0cm95IGhhbmRsZXIgaXMgbm90IHN1cHBvcnRlZC5cbjEyNjYyOlx0ICogMCBvdGhlcndpc2VcbjEyNjYzOlx0ICovXG4xMjY2NDpcdF9fYnBmX2tmdW5jIGludCBicGZfc29ja19kZXN0cm95KHN0cnVjdCBzb2NrX2NvbW1vbiAqc29jaylcbjEyNjY1Olx0e1xuMTI2NjY6XHRcdHN0cnVjdCBzb2NrICpzayA9IChzdHJ1Y3Qgc29jayAqKXNvY2s7XG4xMjY2NzpcdFxuMTI2Njg6XHRcdGlmICghc2tfZnVsbHNvY2soc2spKVxuMTI2Njk6XHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuMTI2NzA6XHRcbjEyNjcxOlx0XHQvKiBUaGUgbG9ja2luZyBzZW1hbnRpY3MgdGhhdCBhbGxvdyBmb3Igc3luY2hyb25vdXMgZXhlY3V0aW9uIG9mIHRoZVxuMTI2NzI6XHRcdCAqIGRlc3Ryb3kgaGFuZGxlcnMgYXJlIG9ubHkgc3VwcG9ydGVkIGZvciBUQ1AgYW5kIFVEUC5cbjEyNjczOlx0XHQgKiBTdXBwb3J0aW5nIHByb3RvY29scyB3aWxsIG5lZWQgdG8gYWNxdWlyZSBzb2NrIGxvY2sgaW4gdGhlIEJQRiBjb250ZXh0XG4xMjY3NDpcdFx0ICogcHJpb3IgdG8gaW52b2tpbmcgdGhpcyBrZnVuYy5cbjEyNjc1Olx0XHQgKi9cbjEyNjc2Olx0XHRpZiAoIXNrLVx1MDAzZXNrX3Byb3QtXHUwMDNlZGlhZ19kZXN0cm95IHx8IChzay1cdTAwM2Vza19wcm90b2NvbCAhPSBJUFBST1RPX1RDUCBcdTAwMjZcdTAwMjZcbjEyNjc3Olx0XHRcdFx0XHRcdCAgIHNrLVx1MDAzZXNrX3Byb3RvY29sICE9IElQUFJPVE9fVURQKSlcbjEyNjc4Olx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbjEyNjc5Olx0XG4xMjY4MDpcdFx0cmV0dXJuIHNrLVx1MDAzZXNrX3Byb3QtXHUwMDNlZGlhZ19kZXN0cm95KHNrLCBFQ09OTkFCT1JURUQpO1xuMTI2ODE6XHR9XG4xMjY4MjpcdFxuMTI2ODM6XHRfX2JwZl9rZnVuY19lbmRfZGVmcygpO1xuMTI2ODQ6XHRcbjEyNjg1Olx0QlRGX0tGVU5DU19TVEFSVChicGZfc2tfaXRlcl9rZnVuY19pZHMpXG4xMjY4NjpcdEJURl9JRF9GTEFHUyhmdW5jLCBicGZfc29ja19kZXN0cm95KVxuMTI2ODc6XHRCVEZfS0ZVTkNTX0VORChicGZfc2tfaXRlcl9rZnVuY19pZHMpXG4xMjY4ODpcdFxuMTI2ODk6XHRzdGF0aWMgaW50IHRyYWNpbmdfaXRlcl9maWx0ZXIoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIga2Z1bmNfaWQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIzOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MDQKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczoKCioqRGl2aW5nIGludG8gYGJwZl9zb2NrX2Rlc3Ryb3lgKioKCkFscmlnaHQsIHNvIGBicGZfc29ja19kZXN0cm95YCBpcyBmbGFnZ2VkIGFzIGEgQlBGIGtmdW5jLiBJbnRlcmVzdGluZywgc28gaXQmIzM5O3MgYSBrZXJuZWwgZnVuY3Rpb24gYWNjZXNzaWJsZSBmcm9tIGEgQlBGIHByb2dyYW0uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doZXJlJiMzOTtzIGl0ICpyZWdpc3RlcmVkKj8mIzM0OyBLbm93aW5nIHdoZXJlIGEga2Z1bmMgaXMgZGVmaW5lZCBhbmQgbWFkZSBhdmFpbGFibGUgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgaXRzIGNvbnRleHQuIExldCYjMzk7cyBzZWUuLi4gaXQmIzM5O3MgaW4gYGJwZl9za19pdGVyX2tmdW5jX2lkc2AsIGdvdCBpdC4gTm93LCB0aGF0JiMzOTtzIGp1c3QgdGhlICpyZWdpc3RyYXRpb24qLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGF0IHJlZ2lzdHJhdGlvbiBpcyAqdXNlZCouIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gYGJwZl9za19pdGVyX2tmdW5jX2lkc2AgYW5kIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IG1ha2luZyB1c2Ugb2YgdGhpcyBgYnBmX3NvY2tfZGVzdHJveWAuIFRoYXQmIzM5O2xsIGJlIHdoZXJlIHRoZSByZWFsIGFjdGlvbiBpcy4gVGltZSB0byBkaWcgaW4gYW5kIGZpbmQgdGhvc2UgY2FsbCBzaXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjM6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX3NrX2l0ZXJfa2Z1bmNfaWRzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NvcmUvZmlsdGVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvZmlsdGVyLmM9MTI2ODM9X19icGZfa2Z1bmNfZW5kX2RlZnMoKTtcbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjg0LVxubmV0L2NvcmUvZmlsdGVyLmM6MTI2ODU6QlRGX0tGVU5DU19TVEFSVChicGZfc2tfaXRlcl9rZnVuY19pZHMpXG5uZXQvY29yZS9maWx0ZXIuYy0xMjY4Ni1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3NvY2tfZGVzdHJveSlcbm5ldC9jb3JlL2ZpbHRlci5jOjEyNjg3OkJURl9LRlVOQ1NfRU5EKGJwZl9za19pdGVyX2tmdW5jX2lkcylcbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjg4LVxubmV0L2NvcmUvZmlsdGVyLmM9MTI2ODk9c3RhdGljIGludCB0cmFjaW5nX2l0ZXJfZmlsdGVyKGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGtmdW5jX2lkKVxubmV0L2NvcmUvZmlsdGVyLmMtMTI2OTAte1xubmV0L2NvcmUvZmlsdGVyLmM6MTI2OTE6XHRpZiAoYnRmX2lkX3NldDhfY29udGFpbnMoXHUwMDI2YnBmX3NrX2l0ZXJfa2Z1bmNfaWRzLCBrZnVuY19pZCkgXHUwMDI2XHUwMDI2XG5uZXQvY29yZS9maWx0ZXIuYy0xMjY5Mi1cdCAgICBwcm9nLVx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlICE9IEJQRl9UUkFDRV9JVEVSKVxuLS1cbm5ldC9jb3JlL2ZpbHRlci5jPTEyNjk3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnRmX2tmdW5jX2lkX3NldCBicGZfc2tfaXRlcl9rZnVuY19zZXQgPSB7XG5uZXQvY29yZS9maWx0ZXIuYy0xMjY5OC1cdC5vd25lciA9IFRISVNfTU9EVUxFLFxubmV0L2NvcmUvZmlsdGVyLmM6MTI2OTk6XHQuc2V0ICAgPSBcdTAwMjZicGZfc2tfaXRlcl9rZnVuY19pZHMsXG5uZXQvY29yZS9maWx0ZXIuYy0xMjcwMC1cdC5maWx0ZXIgPSB0cmFjaW5nX2l0ZXJfZmlsdGVyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMzoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTMyCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgQlBGIFNvY2sgRGVzdHJveSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgZm9jdXNpbmcgb24gYGJwZl9zb2NrX2Rlc3Ryb3lgLCBzcGVjaWZpY2FsbHkgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBgQlBGX1RSQUNFX0lURVJgIG1lY2hhbmlzbSB3aGVuIGRlYWxpbmcgd2l0aCBzb2NrZXRzLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhZGRpbmcgYSBjaGVjazogYGlmICghc2tfZnVsbHNvY2soc2spKSByZXR1cm4gLUVPUE5PVFNVUFA7YC4gSSBpbW1lZGlhdGVseSBzZWUgdGhpcyBhcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHNwZWNpZmljIGF0dGVtcHQgdG8gYXZvaWQgY2FsbGluZyBgc2stJmd0O3NrX3Byb3QtJmd0O2RpYWdfZGVzdHJveWAgb24gbm9uLWZ1bGwgc29ja2V0cy4gVGhpcyBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgYSBkZWZlbnNpdmUgbWVhc3VyZSwgbGlrZWx5IHRvIHByZXZlbnQgc29tZSBraW5kIG9mIGNyYXNoIG9yIHVuZGVmaW5lZCBiZWhhdmlvciBpbiB0aGUga2VybmVsLgoKR2l2ZW4gdGhpcywgbXkgZXhwZXJ0IGludHVpdGlvbiB0ZWxscyBtZSB0aGlzICpkZWZpbml0ZWx5KiB3YXJyYW50cyBmdXp6aW5nLiBUaGUgY2hhbmdlIGlzIHNwZWNpZmljLCBmb2N1c2VkLCBhbmQgaGFzIHRoZSBwb3RlbnRpYWwgdG8gaW1wYWN0IGEgdmFyaWV0eSBvZiBzb2NrZXQgc3RhdGVzLiBUaGUgZmFjdCB0aGF0IGBicGZfc29ja19kZXN0cm95YCBpcyByZWFjaGFibGUgdGhyb3VnaCBCUEYgcHJvZ3JhbXMganVzdCBpbmNyZWFzZXMgdGhlIGF0dGFjayBzdXJmYWNlLCBpbiBteSBtaW5kLgoKTXkgbmV4dCBzdGVwIGlzIHRvIG5haWwgZG93biB0aGUgZXNzZW50aWFsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbmVlZCB0byBiZSBpbiBwbGFjZS4gYEJQRl9TWVNDQUxMYCBpcyBwcmV0dHkgc3RhbmRhcmQsIGJ1dCBJIHdhbnQgdG8gbWFrZSBzdXJlIEkmIzM5O20gZXhwbGljaXRseSBpbmNsdWRpbmcgaXQuIGBDT05GSUdfTkVUYCBpcyBsaWtlbHkgYSBnaXZlbiwgYnV0IEkmIzM5O2xsIG1ha2Ugc3VyZSBpdCYjMzk7cyBwcmVzZW50LiBUaGUgbWFpbiBmb2N1cyBpcyB0byBjb25maXJtIGlmIGBicGZfc29ja19kZXN0cm95YCBpdHNlbGYgbWlnaHQgYmUgYmVoaW5kIGFueSBzcGVjaWZpYyBjb25maWcgZmxhZ3MgdGhhdCBJJiMzOTttIG92ZXJsb29raW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMzoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfc29ja19kZXN0cm95JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL2ZpbHRlci5jPTEyNjQ2PV9fYnBmX2tmdW5jX3N0YXJ0X2RlZnMoKTtcbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjQ3LVxubmV0L2NvcmUvZmlsdGVyLmM6MTI2NDg6LyogYnBmX3NvY2tfZGVzdHJveTogRGVzdHJveSB0aGUgZ2l2ZW4gc29ja2V0IHdpdGggRUNPTk5BQk9SVEVEIGVycm9yIGNvZGUuXG5uZXQvY29yZS9maWx0ZXIuYy0xMjY0OS0gKlxuLS1cbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjYzLSAqL1xubmV0L2NvcmUvZmlsdGVyLmM6MTI2NjQ6X19icGZfa2Z1bmMgaW50IGJwZl9zb2NrX2Rlc3Ryb3koc3RydWN0IHNvY2tfY29tbW9uICpzb2NrKVxubmV0L2NvcmUvZmlsdGVyLmMtMTI2NjUte1xuLS1cbm5ldC9jb3JlL2ZpbHRlci5jPTEyNjg1PUJURl9LRlVOQ1NfU1RBUlQoYnBmX3NrX2l0ZXJfa2Z1bmNfaWRzKVxubmV0L2NvcmUvZmlsdGVyLmM6MTI2ODY6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zb2NrX2Rlc3Ryb3kpXG5uZXQvY29yZS9maWx0ZXIuYy0xMjY4Ny1CVEZfS0ZVTkNTX0VORChicGZfc2tfaXRlcl9rZnVuY19pZHMpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmM9OT1fX2JlMTYgc2Vydl9wb3J0ID0gMDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZy5jLTEwLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmM6MTE6aW50IGJwZl9zb2NrX2Rlc3Ryb3koc3RydWN0IHNvY2tfY29tbW9uICpzaykgX19rc3ltO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmMtMTItXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmM9NDk9aW50IGl0ZXJfdGNwNl9jbGllbnQoc3RydWN0IGJwZl9pdGVyX190Y3AgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2cuYy02Ny1cdGlmIChzb2NrX2Nvb2tpZSA9PSAqdmFsKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmM6Njg6XHRcdGJwZl9zb2NrX2Rlc3Ryb3koc2tfY29tbW9uKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZy5jLTY5LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZy5jPTc0PWludCBpdGVyX3RjcDZfc2VydmVyKHN0cnVjdCBicGZfaXRlcl9fdGNwICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmMtOTctXHRpZiAoc3JjcCA9PSBzZXJ2X3BvcnQpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2cuYzo5ODpcdFx0YnBmX3NvY2tfZGVzdHJveShza19jb21tb24pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmMtOTktXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmM9MTA1PWludCBpdGVyX3VkcDZfY2xpZW50KHN0cnVjdCBicGZfaXRlcl9fdWRwICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmMtMTIwLVx0aWYgKHNvY2tfY29va2llID09ICp2YWwpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2cuYzoxMjE6XHRcdGJwZl9zb2NrX2Rlc3Ryb3koKHN0cnVjdCBzb2NrX2NvbW1vbiAqKXNrKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZy5jLTEyMi1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2cuYz0xMjc9aW50IGl0ZXJfdWRwNl9zZXJ2ZXIoc3RydWN0IGJwZl9pdGVyX191ZHAgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2cuYy0xMzktXHRpZiAoc3JjcCA9PSBzZXJ2X3BvcnQpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2cuYzoxNDA6XHRcdGJwZl9zb2NrX2Rlc3Ryb3koKHN0cnVjdCBzb2NrX2NvbW1vbiAqKXNrKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZy5jLTE0MS1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2dfZmFpbC5jPTk9Y2hhciBfbGljZW5zZVtdIFNFQyhcJiMzNDtsaWNlbnNlXCYjMzQ7KSA9IFwmIzM0O0dQTFwmIzM0OztcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZ19mYWlsLmMtMTAtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2dfZmFpbC5jOjExOmludCBicGZfc29ja19kZXN0cm95KHN0cnVjdCBzb2NrX2NvbW1vbiAqc2spIF9fa3N5bTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZ19mYWlsLmMtMTItXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2dfZmFpbC5jPTEzPVNFQyhcJiMzNDt0cF9idGYvdGNwX2Rlc3Ryb3lfc29ja1wmIzM0OylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZ19mYWlsLmM6MTQ6X19mYWlsdXJlIF9fbXNnKFwmIzM0O2NhbGxpbmcga2VybmVsIGZ1bmN0aW9uIGJwZl9zb2NrX2Rlc3Ryb3kgaXMgbm90IGFsbG93ZWRcJiMzNDspXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2dfZmFpbC5jLTE1LWludCBCUEZfUFJPRyh0cmFjZV90Y3BfZGVzdHJveV9zb2NrLCBzdHJ1Y3Qgc29jayAqc2spXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nX2ZhaWwuYy0xNy1cdC8qIHNob3VsZCBub3QgbG9hZCAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nX2ZhaWwuYzoxODpcdGJwZl9zb2NrX2Rlc3Ryb3koKHN0cnVjdCBzb2NrX2NvbW1vbiAqKXNrKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZ19mYWlsLmMtMTktXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfaXRlcl9iYXRjaC5jPTc2PWludCBpdGVyX3RjcF9kZXN0cm95KHN0cnVjdCBicGZfaXRlcl9fdGNwICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfaXRlcl9iYXRjaC5jLTg3LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfaXRlcl9iYXRjaC5jOjg4Olx0YnBmX3NvY2tfZGVzdHJveShza19jb21tb24pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfaXRlcl9iYXRjaC5jLTg5LVx0YnBmX3NlcV93cml0ZShjdHgtXHUwMDNlbWV0YS1cdTAwM2VzZXEsIFx1MDAyNnNvY2tfY29va2llLCBzaXplb2Yoc29ja19jb29raWUpKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjM6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzYxNgoJCQkJCQkJb3V0cHV0OiAxMDYKCQkJCQkJCXRob3VnaHRzOiAyMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGJwZl9zb2NrX2Rlc3Ryb3lgIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gYGJwZl9zb2NrX2Rlc3Ryb3lgLCB3aGljaCwgYXMgYSBCUEYga2Z1bmMsIGlzIHByZXR0eSBpbnRlcmVzdGluZy4gRmlyc3Qgb2ZmLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBpdCByZWxpZXMgb24gYENPTkZJR19CUEZfU1lTQ0FMTGAgYmVpbmcgZW5hYmxlZCwgd2hpY2ggaXMgc3RhbmRhcmQgZm9yIG1vc3QgQlBGLXJlbGF0ZWQgc3R1ZmYuIEFuZCBpdCBsaXZlcyBpbiBgbmV0L2NvcmUvZmlsdGVyLmNgLCBwYXJ0IG9mIHRoZSBgbmV0YCBzdWJzeXN0ZW0gdGhhdCYjMzk7cyBidWlsdCB3aXRoIGBDT05GSUdfTkVUYC4gTm8gc3VycHJpc2VzIHRoZXJlLgoKVGhlIGNvcmUgb2YgdGhlIHBhdGNoIGludm9sdmVzIGFkZGluZyBhIGNoZWNrIGZvciBgc2tfZnVsbHNvY2soc2spYCBiZWZvcmUgY2FsbGluZyBgc2stJmd0O3NrX3Byb3QtJmd0O2RpYWdfZGVzdHJveWAuIFRoaXMgaXMgYSAqZnVuY3Rpb25hbCogY2hhbmdlLCBhbmQgaXQmIzM5O3MgYSBnb29kIG9uZS4gSXQmIzM5O3MgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBjcmFzaCBvciB1bmRlZmluZWQgYmVoYXZpb3Igd2hlbiBgYnBmX3NvY2tfZGVzdHJveWAgaXMgY2FsbGVkIG9uIHNvbWV0aGluZyBsaWtlIGEgcmVxdWVzdCBzb2NrZXQgb3IgYSB0aW1ld2FpdCBzb2NrZXQsIHdoaWNoIGFyZW4mIzM5O3QgbmVjZXNzYXJpbHkgZnVsbCBzb2NrZXRzLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBpc3N1ZSDigJMgaGFuZGxpbmcgcmVzb3VyY2UgbWFuYWdlbWVudCBhbmQgbGlmZWN5Y2xlIGNvcnJlY3RseSBpbiB0aGUgbmV0d29yayBzdGFjayBpcyBhbHdheXMgdHJpY2t5LgoKR2l2ZW4gdGhhdCBpdCBpcyBhbiBpbXBvcnRhbnQgZnVuY3Rpb25hbCBjaGFuZ2UsIEkgYW0gc3VyZSB0aGlzIHdvdWxkIGJlIGdvb2QgdG8gZnV6eiwgYW5kIEkgd291bGQgd2FudCB0byBlbnN1cmUgaXQgaXMuCgpUaGUgcmVsZXZhbnQgc3ltYm9sIGlzIGNsZWFybHkgYGJwZl9zb2NrX2Rlc3Ryb3lgLiBCZXlvbmQgdGhhdCwgSSBuZWVkIHRvIGNoZWNrIGZvciBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzLCBiZXlvbmQgYEJQRl9TWVNDQUxMYCwgdGhhdCBtdXN0IGJlIGVuYWJsZWQuIEkga25vdyBgYnBmX3NvY2tfZGVzdHJveWAgaXMgYWxzbyBhdmFpbGFibGUgZm9yIHVzZSBpbiBgQlBGX1RSQUNFX0lURVJgIHByb2dyYW1zLCB3aGljaCBtYWtlcyBzZW5zZS4gYEJQRl9UUkFDRV9JVEVSYCBpcyBpdHNlbGYgbGlua2VkIHRvIGBDT05GSUdfQlBGX1NZU0NBTExgLiBJIGRvbiYjMzk7dCBzZWUgYW55IG90aGVyIGNvbmZpZyBvcHRpb25zIHRoYXQgYXJlIG5lZWRlZCwgYW5kIEkmIzM5O20gY29uZmlkZW50IGFib3V0IHRoYXQuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gd2hhdCB0aGUgb3V0Y29tZSBzaG91bGQgYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIzOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9zb2NrX2Rlc3Ryb3kmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIGBicGZfc29ja19kZXN0cm95YCB0byBlbnN1cmUgaXQgaXMgb25seSBjYWxsZWQgb24gZnVsbCBzb2NrZXRzLCBwcmV2ZW50aW5nIHBvdGVudGlhbCBjcmFzaGVzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3Igd2hlbiBjYWxsZWQgb24gcmVxdWVzdCBvciB0aW1ld2FpdCBzb2NrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBCUEYga2Z1bmMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSBCUEYgcHJvZ3JhbXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX3NvY2tfZGVzdHJveSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gYGJwZl9zb2NrX2Rlc3Ryb3lgIHRvIGVuc3VyZSBpdCBpcyBvbmx5IGNhbGxlZCBvbiBmdWxsIHNvY2tldHMsIHByZXZlbnRpbmcgcG90ZW50aWFsIGNyYXNoZXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciB3aGVuIGNhbGxlZCBvbiByZXF1ZXN0IG9yIHRpbWV3YWl0IHNvY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIEJQRiBrZnVuYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIEJQRiBwcm9ncmFtcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIzOjI2OjE5LjI4MTY1MDE1NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDE5ODkzNjk3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9zb2NrX2Rlc3Ryb3lcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gYGJwZl9zb2NrX2Rlc3Ryb3lgIHRvIGVuc3VyZSBpdCBpcyBvbmx5IGNhbGxlZCBvbiBmdWxsIHNvY2tldHMsIHByZXZlbnRpbmcgcG90ZW50aWFsIGNyYXNoZXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciB3aGVuIGNhbGxlZCBvbiByZXF1ZXN0IG9yIHRpbWV3YWl0IHNvY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIEJQRiBrZnVuYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIEJQRiBwcm9ncmFtcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjM6MjY6MTkuMjgxNjU1NDk2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzUxNDgxNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmYWJhYTE4NDRjOGE4NmU2MDUzOWEzYTJmN2EyNWNhNDRiODQyYmEzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIgMjM6MjY6MTggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZmlsdGVyLmMgYi9uZXQvY29yZS9maWx0ZXIuY1xcbmluZGV4IDY5ZWMxYTRjMGY5ZGExLi5hMGZjYWZiMDhiOTY4NSAxMDA2NDRcXG4tLS0gYS9uZXQvY29yZS9maWx0ZXIuY1xcbisrKyBiL25ldC9jb3JlL2ZpbHRlci5jXFxuQEAgLTEyNjY1LDYgKzEyNjY1LDkgQEAgX19icGZfa2Z1bmMgaW50IGJwZl9zb2NrX2Rlc3Ryb3koc3RydWN0IHNvY2tfY29tbW9uICpzb2NrKVxcbiB7XFxuIFxcdHN0cnVjdCBzb2NrICpzayA9IChzdHJ1Y3Qgc29jayAqKXNvY2s7XFxuIFxcbitcXHRpZiAoIXNrX2Z1bGxzb2NrKHNrKSlcXG4rXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbitcXG4gXFx0LyogVGhlIGxvY2tpbmcgc2VtYW50aWNzIHRoYXQgYWxsb3cgZm9yIHN5bmNocm9ub3VzIGV4ZWN1dGlvbiBvZiB0aGVcXG4gXFx0ICogZGVzdHJveSBoYW5kbGVycyBhcmUgb25seSBzdXBwb3J0ZWQgZm9yIFRDUCBhbmQgVURQLlxcbiBcXHQgKiBTdXBwb3J0aW5nIHByb3RvY29scyB3aWxsIG5lZWQgdG8gYWNxdWlyZSBzb2NrIGxvY2sgaW4gdGhlIEJQRiBjb250ZXh0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIzOjI2OjE5LjU1NzYwMDI3NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA5OTIyOTc4ODA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX3NvY2tfZGVzdHJveVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBgYnBmX3NvY2tfZGVzdHJveWAgdG8gZW5zdXJlIGl0IGlzIG9ubHkgY2FsbGVkIG9uIGZ1bGwgc29ja2V0cywgcHJldmVudGluZyBwb3RlbnRpYWwgY3Jhc2hlcyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIHdoZW4gY2FsbGVkIG9uIHJlcXVlc3Qgb3IgdGltZXdhaXQgc29ja2V0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgQlBGIGtmdW5jIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gQlBGIHByb2dyYW1zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZhYmFhMTg0NGM4YTg2ZTYwNTM5YTNhMmY3YTI1Y2E0NGI4NDJiYTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDIzOjI2OjE4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZmlsdGVyLmMgYi9uZXQvY29yZS9maWx0ZXIuY1xuaW5kZXggNjllYzFhNGMwZjlkYTEuLmEwZmNhZmIwOGI5Njg1IDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvZmlsdGVyLmNcbisrKyBiL25ldC9jb3JlL2ZpbHRlci5jXG5AQCAtMTI2NjUsNiArMTI2NjUsOSBAQCBfX2JwZl9rZnVuYyBpbnQgYnBmX3NvY2tfZGVzdHJveShzdHJ1Y3Qgc29ja19jb21tb24gKnNvY2spXG4ge1xuIFx0c3RydWN0IHNvY2sgKnNrID0gKHN0cnVjdCBzb2NrICopc29jaztcbiBcbitcdGlmICghc2tfZnVsbHNvY2soc2spKVxuK1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4rXG4gXHQvKiBUaGUgbG9ja2luZyBzZW1hbnRpY3MgdGhhdCBhbGxvdyBmb3Igc3luY2hyb25vdXMgZXhlY3V0aW9uIG9mIHRoZVxuIFx0ICogZGVzdHJveSBoYW5kbGVycyBhcmUgb25seSBzdXBwb3J0ZWQgZm9yIFRDUCBhbmQgVURQLlxuIFx0ICogU3VwcG9ydGluZyBwcm90b2NvbHMgd2lsbCBuZWVkIHRvIGFjcXVpcmUgc29jayBsb2NrIGluIHRoZSBCUEYgY29udGV4dFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjM6MjY6MTkuNTU3NjAxNTc1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUzMjA2MzY2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246XG5cbioqQW5hbHl6aW5nIGEgTmV0d29yayBGaWx0ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyBtYWtpbmcgYSBjaGFuZ2UgdG8gYG5ldC9jb3JlL2ZpbHRlci5jYCwgc3BlY2lmaWNhbGx5IGltcGFjdGluZyB0aGUgYGJwZl9zb2NrX2Rlc3Ryb3lgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiAqd2h5KiB0aGlzIGNoYW5nZSBpcyBiZWluZyBtYWRlLiBUaGUgaW50cm9kdWN0aW9uIG9mIHRoaXMgYGlmICghc2tfZnVsbHNvY2soc2spKSByZXR1cm4gLUVPUE5PVFNVUFA7YCBjaGVjayBpcyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZy4gVGhpcyBzdWdnZXN0cyB0aGV5J3JlIHRyeWluZyB0byByZXN0cmljdCB0aGUgYmVoYXZpb3Igb2YgYGJwZl9zb2NrX2Rlc3Ryb3lgIGJhc2VkIG9uIHRoZSBzb2NrZXQgdHlwZS5cblxuTGV0IG1lIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQgYGJwZl9zb2NrX2Rlc3Ryb3lgIGlzICpzdXBwb3NlZCogdG8gZG8uIEl0J3MgbGlrZWx5IGludm9sdmVkIGluIGNsZWFuaW5nIHVwIEJQRi1yZWxhdGVkIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggYSBzb2NrZXQgd2hlbiB0aGUgc29ja2V0IGlzIGNsb3NlZCBvciBkZXN0cm95ZWQuIFRoZSBhZGRpdGlvbiBvZiBgc2tfZnVsbHNvY2tgIG1lYW5zIHdlIGFyZSBub3cgb25seSBoYW5kbGluZyBjZXJ0YWluIGtpbmRzIG9mIHNvY2tldHMuIFRoZSBgc2tfZnVsbHNvY2tgIG1hY3JvIHByb2JhYmx5IGluZGljYXRlcyB0aGF0IHdlIGFyZSBkZWFsaW5nIHdpdGggYSBmdWxsIHNvY2tldCwgYXMgb3Bwb3NlZCB0byBhIFwiaGFsZi1vcGVuXCIgb3IgaW5jb21wbGV0ZSBzb2NrZXQuIFRoZSBgLUVPUE5PVFNVUFBgIGVycm9yIGlzIGNsZWFyOyBpdCBpbmRpY2F0ZXMgdGhhdCB0aGUgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRoYXQgc29ja2V0IHR5cGUuIFRoaXMgaXMgdGhlIGNydXggb2YgdGhlIHBhdGNoOyB0aGUgZGV2ZWxvcGVycyBoYXZlIGRlY2lkZWQgdGhhdCBgYnBmX3NvY2tfZGVzdHJveWAgaXNuJ3QgcmVsZXZhbnQgb3Igc2FmZSB0byBvcGVyYXRlIG9uIGEgY2VydGFpbiBzZXQgb2Ygc29ja2V0cy4gU28sIG15IG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgZGVjaXNpb24uIFdoYXQgdHlwZXMgb2Ygc29ja2V0cyBhcmUgKm5vdCogYGZ1bGxzb2NrYD8gVGhhdCBpcyB3aGF0IHRoZSBwYXRjaCBpcyBsaW1pdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgyOSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjM6MjY6MjMuMDg5NjY3NDMyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MzM4OTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9zb2NrX2Rlc3Ryb3lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NvcmUvZmlsdGVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NvcmUvZmlsdGVyLmM9MTI2NDY9X19icGZfa2Z1bmNfc3RhcnRfZGVmcygpO1xcbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjQ3LVxcbm5ldC9jb3JlL2ZpbHRlci5jOjEyNjQ4Oi8qIGJwZl9zb2NrX2Rlc3Ryb3k6IERlc3Ryb3kgdGhlIGdpdmVuIHNvY2tldCB3aXRoIEVDT05OQUJPUlRFRCBlcnJvciBjb2RlLlxcbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjQ5LSAqXFxuLS1cXG5uZXQvY29yZS9maWx0ZXIuYy0xMjY2My0gKi9cXG5uZXQvY29yZS9maWx0ZXIuYzoxMjY2NDpfX2JwZl9rZnVuYyBpbnQgYnBmX3NvY2tfZGVzdHJveShzdHJ1Y3Qgc29ja19jb21tb24gKnNvY2spXFxubmV0L2NvcmUvZmlsdGVyLmMtMTI2NjUte1xcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmM9MTI2ODU9QlRGX0tGVU5DU19TVEFSVChicGZfc2tfaXRlcl9rZnVuY19pZHMpXFxubmV0L2NvcmUvZmlsdGVyLmM6MTI2ODY6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zb2NrX2Rlc3Ryb3kpXFxubmV0L2NvcmUvZmlsdGVyLmMtMTI2ODctQlRGX0tGVU5DU19FTkQoYnBmX3NrX2l0ZXJfa2Z1bmNfaWRzKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMzoyNjoyMy4xNDYwMTQ5NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE5NzY3MzU0Mjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJQRiBLZXJuZWwgRnVuY3Rpb24gTW9kaWZpY2F0aW9uKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgYnBmX3NvY2tfZGVzdHJveWAsIHNwZWNpZmljYWxseSBhIEJQRiBrZnVuYy4gVGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIFRoZSBjb3JlIGNoYW5nZSBpcyB0aGUgYWRkaXRpb24gb2YgdGhpcyBgaWYgKCFza19mdWxsc29jayhzaykpIHJldHVybiAtRU9QTk9UU1VQUDtgIGNoZWNrLiBUaGF04oCZcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHByZXR0eSBjbGVhciByZXN0cmljdGlvbiBiZWluZyBpbnRyb2R1Y2VkLiBHaXZlbiB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgYSBCUEYga2Z1bmMsIG1lYW5pbmcgaXQncyBjYWxsYWJsZSBkaXJlY3RseSBmcm9tIEJQRiBwcm9ncmFtcywgdGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2ssIGVzcGVjaWFsbHkgZm9yIHBvdGVudGlhbCBmdXp6aW5nIHRhcmdldHMuXG5cbk15IG5leHQgdGhvdWdodCBpcyB0byBpZGVudGlmeSBhbnkgcHJlcmVxdWlzaXRlIGNvbmZpZ3VyYXRpb25zLiBJIHJlbWVtYmVyIGZyb20gZXhwZXJpZW5jZSB0aGF0IGBuZXQvY29yZS9maWx0ZXIuY2AgaXMgaW52b2x2ZWQgaGVyZSwgYW5kIHRoYXQgZ2V0cyBjb21waWxlZCB3aGVuIGBDT05GSUdfTkVUYCBpcyBzZXQsIG9idmlvdXNseS4gVGhlbiwgQlBGIGhhcyB0byBiZSBlbmFibGVkIGluIG9yZGVyIGZvciBCUEYga2Z1bmNzIHRvIGV2ZW4gKmV4aXN0Ki4gVGhhdCdzIGBDT05GSUdfQlBGX1NZU0NBTExgLiBJJ2xsIHdhbnQgdG8gZG91YmxlLWNoZWNrIGBuZXQvY29yZS9NYWtlZmlsZWAgdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzIGZvciBgZmlsdGVyLmNgLCBqdXN0IHRvIGJlIGNlcnRhaW4uIEkgd2FudCB0byBtYWtlIHN1cmUgSSdtIHRlc3RpbmcgaW4gYW4gZW52aXJvbm1lbnQgdGhhdCByZWZsZWN0cyB0aGUgYWN0dWFsIHN0YXRlIG9mIHRoZSBrZXJuZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NDMsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjM6MjY6NDIuOTEzMzcxMzE3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MjU0ODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZpbHRlci5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL01ha2VmaWxlPTEyPW9iai15XFx0XFx0ICAgICArPSBkZXYubyBkZXZfYXBpLm8gZGV2X2FkZHJfbGlzdHMubyBkc3QubyBuZXRldmVudC5vIFxcXFxcXG5uZXQvY29yZS9NYWtlZmlsZToxMzpcXHRcXHRcXHRuZWlnaGJvdXIubyBydG5ldGxpbmsubyB1dGlscy5vIGxpbmtfd2F0Y2gubyBmaWx0ZXIubyBcXFxcXFxubmV0L2NvcmUvTWFrZWZpbGUtMTQtXFx0XFx0XFx0c29ja19kaWFnLm8gZGV2X2lvY3RsLm8gdHNvLm8gc29ja19yZXVzZXBvcnQubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIzOjI2OjQyLjk3MTYzMTA1NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4OTczMDI5NTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QgaGVyZS5cblxuKipBbmFseXppbmcgQnVpbGQgRGVwZW5kZW5jaWVzIGFuZCBGdW5jdGlvbiBEZWZpbml0aW9ucyoqXG5cbkFscmlnaHQsIHNvIGBmaWx0ZXIub2AgaXMgKmFsd2F5cyogYnVpbHQgd2hlbiBgQ09ORklHX05FVGAgaXMgZW5hYmxlZC4gVGhhdCdzIGEgZ2l2ZW4uIE5vdywgSSdtIHRyeWluZyB0byB1bmRlcnN0YW5kIHRoZSBkZWZpbml0aW9uIG9mIGBicGZfc29ja19kZXN0cm95YC4gVGhlIGRvY3VtZW50YXRpb24gc2F5cyBpdCdzIGRlZmluZWQgd2l0aGluIGBfX2JwZl9rZnVuY19zdGFydF9kZWZzKClgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgYXJlIHRoZXJlIGFueSBjb25kaXRpb25hbCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcywgYCNpZmRlZmBzLCBzdXJyb3VuZGluZyB0aGF0IGZ1bmN0aW9uIGRlZmluaXRpb24gd2l0aGluIHRoYXQgbWFjcm8/IEFyZSB3ZSBvbmx5IHNlZWluZyB0aGlzIGZ1bmN0aW9uIGRlZmluZWQgdW5kZXIgc3BlY2lmaWMgY29tcGlsYXRpb24gc2NlbmFyaW9zLCBvciBpcyBpdCBhbHdheXMgcHJlc2VudCB3aXRoIHRoZSBtYWNybz8gSSBuZWVkIHRvIGNoZWNrIGZvciBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdGhhdCBtaWdodCBhZmZlY3QgdGhlIGF2YWlsYWJpbGl0eSBvciBiZWhhdmlvciBvZiB0aGF0IGZ1bmN0aW9uLiBMZXQncyBkaWcgZGVlcGVyIGFuZCBzZWUgd2hhdCB0aGF0IG1hY3JvIGV4cGFuc2lvbiByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDk2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjM6Mjc6MDEuOTQ0NjYyMjUxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMjkwNjg2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfc29ja19kZXN0cm95XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL2ZpbHRlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL2ZpbHRlci5jPTEyNjQ2PV9fYnBmX2tmdW5jX3N0YXJ0X2RlZnMoKTtcXG5uZXQvY29yZS9maWx0ZXIuYy0xMjY0Ny1cXG5uZXQvY29yZS9maWx0ZXIuYzoxMjY0ODovKiBicGZfc29ja19kZXN0cm95OiBEZXN0cm95IHRoZSBnaXZlbiBzb2NrZXQgd2l0aCBFQ09OTkFCT1JURUQgZXJyb3IgY29kZS5cXG5uZXQvY29yZS9maWx0ZXIuYy0xMjY0OS0gKlxcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmMtMTI2NjMtICovXFxubmV0L2NvcmUvZmlsdGVyLmM6MTI2NjQ6X19icGZfa2Z1bmMgaW50IGJwZl9zb2NrX2Rlc3Ryb3koc3RydWN0IHNvY2tfY29tbW9uICpzb2NrKVxcbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjY1LXtcXG4tLVxcbm5ldC9jb3JlL2ZpbHRlci5jPTEyNjg1PUJURl9LRlVOQ1NfU1RBUlQoYnBmX3NrX2l0ZXJfa2Z1bmNfaWRzKVxcbm5ldC9jb3JlL2ZpbHRlci5jOjEyNjg2OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfc29ja19kZXN0cm95KVxcbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjg3LUJURl9LRlVOQ1NfRU5EKGJwZl9za19pdGVyX2tmdW5jX2lkcylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjM6Mjc6MDIuMTQ3NTc0OTM0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA2NTU5NDgwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gcmVhZGluZyBhbmQgcHJvY2Vzc2luZyB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb246XG5cbioqQW5hbHl6aW5nIGBuZXQvY29yZS9maWx0ZXIuY2AgQXJvdW5kIExpbmUgMTI2NjQqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSSdtIGdvaW5nIHRvIHB1bGwgdXAgYG5ldC9jb3JlL2ZpbHRlci5jYCBhbmQgemVybyBpbiBvbiByb3VnaGx5IGxpbmUgMTI2NjQuIEknbSBleHBlY3Rpbmcgc29tZXRoaW5nIGNyaXRpY2FsIGhlcmUsIGdpdmVuIHRoYXQgaXQncyBiZWVuIHNwZWNpZmllZCB3aXRoIHN1Y2ggcHJlY2lzaW9uLiBUaGlzIGxpa2VseSBpbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBpcyBpbnRlcmVzdGVkIGluIGEgc3BlY2lmaWMgcGFydCBvZiB0aGUgY29kZSwgbWF5YmUgcmVsYXRlZCB0byBhIGtub3duIGlzc3VlLCBhIHJlY2VudCBjaGFuZ2UsIG9yIGEgcGFydGljdWxhciBmdW5jdGlvbmFsaXR5LiBJJ20gYW50aWNpcGF0aW5nIHRoYXQgdGhpcyBzZWN0aW9uIGlzIGVpdGhlciBhIHBvdGVudGlhbCBib3R0bGVuZWNrLCBhIGNvbXBsZXggcGllY2Ugb2YgbG9naWMsIG9yIHBlcmhhcHMgYW4gYXJlYSB3aGVyZSBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMgbWlnaHQgYmUgbHVya2luZy4gSSdtIHJlYWR5IHRvIGNhcmVmdWxseSBwYXJzZSB0aGUgY29kZSBhcm91bmQgdGhpcyBsaW5lLCBsb29raW5nIGZvciBhbnkgaW1tZWRpYXRlIHJlZCBmbGFncyBvciBpbnRlcmVzdGluZyBkZXNpZ24gY2hvaWNlcy4gTGV0J3Mgc2VlIHdoYXQncyBiZWluZyBkb25lLi4uIGFuZCBkZXRlcm1pbmUgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgdGhhdCBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjM4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjM6Mjc6MDUuMjEzMTcxNjU5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNTc4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvY29yZS9maWx0ZXIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjY0MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTI2NDA6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZicGZfa2Z1bmNfc2V0X3NvY2tfYWRkcik7XFxuMTI2NDE6XFx0XFx0cmV0ID0gcmV0ID86IHJlZ2lzdGVyX2J0Zl9rZnVuY19pZF9zZXQoQlBGX1BST0dfVFlQRV9TQ0hFRF9DTFMsIFxcdTAwMjZicGZfa2Z1bmNfc2V0X3RjcF9yZXFzayk7XFxuMTI2NDI6XFx0XFx0cmV0dXJuIHJldCA/OiByZWdpc3Rlcl9idGZfa2Z1bmNfaWRfc2V0KEJQRl9QUk9HX1RZUEVfU09DS19PUFMsIFxcdTAwMjZicGZfa2Z1bmNfc2V0X3NvY2tfb3BzKTtcXG4xMjY0MzpcXHR9XFxuMTI2NDQ6XFx0bGF0ZV9pbml0Y2FsbChicGZfa2Z1bmNfaW5pdCk7XFxuMTI2NDU6XFx0XFxuMTI2NDY6XFx0X19icGZfa2Z1bmNfc3RhcnRfZGVmcygpO1xcbjEyNjQ3OlxcdFxcbjEyNjQ4OlxcdC8qIGJwZl9zb2NrX2Rlc3Ryb3k6IERlc3Ryb3kgdGhlIGdpdmVuIHNvY2tldCB3aXRoIEVDT05OQUJPUlRFRCBlcnJvciBjb2RlLlxcbjEyNjQ5OlxcdCAqXFxuMTI2NTA6XFx0ICogVGhlIGZ1bmN0aW9uIGV4cGVjdHMgYSBub24tTlVMTCBwb2ludGVyIHRvIGEgc29ja2V0LCBhbmQgaW52b2tlcyB0aGVcXG4xMjY1MTpcXHQgKiBwcm90b2NvbCBzcGVjaWZpYyBzb2NrZXQgZGVzdHJveSBoYW5kbGVycy5cXG4xMjY1MjpcXHQgKlxcbjEyNjUzOlxcdCAqIFRoZSBoZWxwZXIgY2FuIG9ubHkgYmUgY2FsbGVkIGZyb20gQlBGIGNvbnRleHRzIHRoYXQgaGF2ZSBhY3F1aXJlZCB0aGUgc29ja2V0XFxuMTI2NTQ6XFx0ICogbG9ja3MuXFxuMTI2NTU6XFx0ICpcXG4xMjY1NjpcXHQgKiBQYXJhbWV0ZXJzOlxcbjEyNjU3OlxcdCAqIEBzb2NrOiBQb2ludGVyIHRvIHNvY2tldCB0byBiZSBkZXN0cm95ZWRcXG4xMjY1ODpcXHQgKlxcbjEyNjU5OlxcdCAqIFJldHVybjpcXG4xMjY2MDpcXHQgKiBPbiBlcnJvciwgbWF5IHJldHVybiBFUFJPVE9OT1NVUFBPUlQsIEVJTlZBTC5cXG4xMjY2MTpcXHQgKiBFUFJPVE9OT1NVUFBPUlQgaWYgcHJvdG9jb2wgc3BlY2lmaWMgZGVzdHJveSBoYW5kbGVyIGlzIG5vdCBzdXBwb3J0ZWQuXFxuMTI2NjI6XFx0ICogMCBvdGhlcndpc2VcXG4xMjY2MzpcXHQgKi9cXG4xMjY2NDpcXHRfX2JwZl9rZnVuYyBpbnQgYnBmX3NvY2tfZGVzdHJveShzdHJ1Y3Qgc29ja19jb21tb24gKnNvY2spXFxuMTI2NjU6XFx0e1xcbjEyNjY2OlxcdFxcdHN0cnVjdCBzb2NrICpzayA9IChzdHJ1Y3Qgc29jayAqKXNvY2s7XFxuMTI2Njc6XFx0XFxuMTI2Njg6XFx0XFx0aWYgKCFza19mdWxsc29jayhzaykpXFxuMTI2Njk6XFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbjEyNjcwOlxcdFxcbjEyNjcxOlxcdFxcdC8qIFRoZSBsb2NraW5nIHNlbWFudGljcyB0aGF0IGFsbG93IGZvciBzeW5jaHJvbm91cyBleGVjdXRpb24gb2YgdGhlXFxuMTI2NzI6XFx0XFx0ICogZGVzdHJveSBoYW5kbGVycyBhcmUgb25seSBzdXBwb3J0ZWQgZm9yIFRDUCBhbmQgVURQLlxcbjEyNjczOlxcdFxcdCAqIFN1cHBvcnRpbmcgcHJvdG9jb2xzIHdpbGwgbmVlZCB0byBhY3F1aXJlIHNvY2sgbG9jayBpbiB0aGUgQlBGIGNvbnRleHRcXG4xMjY3NDpcXHRcXHQgKiBwcmlvciB0byBpbnZva2luZyB0aGlzIGtmdW5jLlxcbjEyNjc1OlxcdFxcdCAqL1xcbjEyNjc2OlxcdFxcdGlmICghc2stXFx1MDAzZXNrX3Byb3QtXFx1MDAzZWRpYWdfZGVzdHJveSB8fCAoc2stXFx1MDAzZXNrX3Byb3RvY29sICE9IElQUFJPVE9fVENQIFxcdTAwMjZcXHUwMDI2XFxuMTI2Nzc6XFx0XFx0XFx0XFx0XFx0XFx0ICAgc2stXFx1MDAzZXNrX3Byb3RvY29sICE9IElQUFJPVE9fVURQKSlcXG4xMjY3ODpcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuMTI2Nzk6XFx0XFxuMTI2ODA6XFx0XFx0cmV0dXJuIHNrLVxcdTAwM2Vza19wcm90LVxcdTAwM2VkaWFnX2Rlc3Ryb3koc2ssIEVDT05OQUJPUlRFRCk7XFxuMTI2ODE6XFx0fVxcbjEyNjgyOlxcdFxcbjEyNjgzOlxcdF9fYnBmX2tmdW5jX2VuZF9kZWZzKCk7XFxuMTI2ODQ6XFx0XFxuMTI2ODU6XFx0QlRGX0tGVU5DU19TVEFSVChicGZfc2tfaXRlcl9rZnVuY19pZHMpXFxuMTI2ODY6XFx0QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zb2NrX2Rlc3Ryb3kpXFxuMTI2ODc6XFx0QlRGX0tGVU5DU19FTkQoYnBmX3NrX2l0ZXJfa2Z1bmNfaWRzKVxcbjEyNjg4OlxcdFxcbjEyNjg5OlxcdHN0YXRpYyBpbnQgdHJhY2luZ19pdGVyX2ZpbHRlcihjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBrZnVuY19pZClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjM6Mjc6MDUuMjEzODk0OTQ4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3MjkyMzA1MjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gYGJwZl9zb2NrX2Rlc3Ryb3lgKipcblxuQWxyaWdodCwgc28gYGJwZl9zb2NrX2Rlc3Ryb3lgIGlzIGZsYWdnZWQgYXMgYSBCUEYga2Z1bmMuIEludGVyZXN0aW5nLCBzbyBpdCdzIGEga2VybmVsIGZ1bmN0aW9uIGFjY2Vzc2libGUgZnJvbSBhIEJQRiBwcm9ncmFtLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGVyZSdzIGl0ICpyZWdpc3RlcmVkKj9cIiBLbm93aW5nIHdoZXJlIGEga2Z1bmMgaXMgZGVmaW5lZCBhbmQgbWFkZSBhdmFpbGFibGUgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgaXRzIGNvbnRleHQuIExldCdzIHNlZS4uLiBpdCdzIGluIGBicGZfc2tfaXRlcl9rZnVuY19pZHNgLCBnb3QgaXQuIE5vdywgdGhhdCdzIGp1c3QgdGhlICpyZWdpc3RyYXRpb24qLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGF0IHJlZ2lzdHJhdGlvbiBpcyAqdXNlZCouIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gYGJwZl9za19pdGVyX2tmdW5jX2lkc2AgYW5kIHNlZSB3aGF0J3MgYWN0dWFsbHkgbWFraW5nIHVzZSBvZiB0aGlzIGBicGZfc29ja19kZXN0cm95YC4gVGhhdCdsbCBiZSB3aGVyZSB0aGUgcmVhbCBhY3Rpb24gaXMuIFRpbWUgdG8gZGlnIGluIGFuZCBmaW5kIHRob3NlIGNhbGwgc2l0ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MDQsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIzOjI3OjIyLjUwNjIwMjAyOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE3MTU3OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX3NrX2l0ZXJfa2Z1bmNfaWRzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL2ZpbHRlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL2ZpbHRlci5jPTEyNjgzPV9fYnBmX2tmdW5jX2VuZF9kZWZzKCk7XFxubmV0L2NvcmUvZmlsdGVyLmMtMTI2ODQtXFxubmV0L2NvcmUvZmlsdGVyLmM6MTI2ODU6QlRGX0tGVU5DU19TVEFSVChicGZfc2tfaXRlcl9rZnVuY19pZHMpXFxubmV0L2NvcmUvZmlsdGVyLmMtMTI2ODYtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zb2NrX2Rlc3Ryb3kpXFxubmV0L2NvcmUvZmlsdGVyLmM6MTI2ODc6QlRGX0tGVU5DU19FTkQoYnBmX3NrX2l0ZXJfa2Z1bmNfaWRzKVxcbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjg4LVxcbm5ldC9jb3JlL2ZpbHRlci5jPTEyNjg5PXN0YXRpYyBpbnQgdHJhY2luZ19pdGVyX2ZpbHRlcihjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBrZnVuY19pZClcXG5uZXQvY29yZS9maWx0ZXIuYy0xMjY5MC17XFxubmV0L2NvcmUvZmlsdGVyLmM6MTI2OTE6XFx0aWYgKGJ0Zl9pZF9zZXQ4X2NvbnRhaW5zKFxcdTAwMjZicGZfc2tfaXRlcl9rZnVuY19pZHMsIGtmdW5jX2lkKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjkyLVxcdCAgICBwcm9nLVxcdTAwM2VleHBlY3RlZF9hdHRhY2hfdHlwZSAhPSBCUEZfVFJBQ0VfSVRFUilcXG4tLVxcbm5ldC9jb3JlL2ZpbHRlci5jPTEyNjk3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnRmX2tmdW5jX2lkX3NldCBicGZfc2tfaXRlcl9rZnVuY19zZXQgPSB7XFxubmV0L2NvcmUvZmlsdGVyLmMtMTI2OTgtXFx0Lm93bmVyID0gVEhJU19NT0RVTEUsXFxubmV0L2NvcmUvZmlsdGVyLmM6MTI2OTk6XFx0LnNldCAgID0gXFx1MDAyNmJwZl9za19pdGVyX2tmdW5jX2lkcyxcXG5uZXQvY29yZS9maWx0ZXIuYy0xMjcwMC1cXHQuZmlsdGVyID0gdHJhY2luZ19pdGVyX2ZpbHRlcixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjM6Mjc6MjIuNTc3OTIyMTI2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyMTM2NzA0MzM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgQlBGIFNvY2sgRGVzdHJveSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0J3MgZm9jdXNpbmcgb24gYGJwZl9zb2NrX2Rlc3Ryb3lgLCBzcGVjaWZpY2FsbHkgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBgQlBGX1RSQUNFX0lURVJgIG1lY2hhbmlzbSB3aGVuIGRlYWxpbmcgd2l0aCBzb2NrZXRzLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhZGRpbmcgYSBjaGVjazogYGlmICghc2tfZnVsbHNvY2soc2spKSByZXR1cm4gLUVPUE5PVFNVUFA7YC4gSSBpbW1lZGlhdGVseSBzZWUgdGhpcyBhcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHNwZWNpZmljIGF0dGVtcHQgdG8gYXZvaWQgY2FsbGluZyBgc2stXHUwMDNlc2tfcHJvdC1cdTAwM2VkaWFnX2Rlc3Ryb3lgIG9uIG5vbi1mdWxsIHNvY2tldHMuIFRoaXMgbWFrZXMgc2Vuc2U7IGl0J3MgYSBkZWZlbnNpdmUgbWVhc3VyZSwgbGlrZWx5IHRvIHByZXZlbnQgc29tZSBraW5kIG9mIGNyYXNoIG9yIHVuZGVmaW5lZCBiZWhhdmlvciBpbiB0aGUga2VybmVsLlxuXG5HaXZlbiB0aGlzLCBteSBleHBlcnQgaW50dWl0aW9uIHRlbGxzIG1lIHRoaXMgKmRlZmluaXRlbHkqIHdhcnJhbnRzIGZ1enppbmcuIFRoZSBjaGFuZ2UgaXMgc3BlY2lmaWMsIGZvY3VzZWQsIGFuZCBoYXMgdGhlIHBvdGVudGlhbCB0byBpbXBhY3QgYSB2YXJpZXR5IG9mIHNvY2tldCBzdGF0ZXMuIFRoZSBmYWN0IHRoYXQgYGJwZl9zb2NrX2Rlc3Ryb3lgIGlzIHJlYWNoYWJsZSB0aHJvdWdoIEJQRiBwcm9ncmFtcyBqdXN0IGluY3JlYXNlcyB0aGUgYXR0YWNrIHN1cmZhY2UsIGluIG15IG1pbmQuXG5cbk15IG5leHQgc3RlcCBpcyB0byBuYWlsIGRvd24gdGhlIGVzc2VudGlhbCBjb25maWd1cmF0aW9ucyB0aGF0IG5lZWQgdG8gYmUgaW4gcGxhY2UuIGBCUEZfU1lTQ0FMTGAgaXMgcHJldHR5IHN0YW5kYXJkLCBidXQgSSB3YW50IHRvIG1ha2Ugc3VyZSBJJ20gZXhwbGljaXRseSBpbmNsdWRpbmcgaXQuIGBDT05GSUdfTkVUYCBpcyBsaWtlbHkgYSBnaXZlbiwgYnV0IEknbGwgbWFrZSBzdXJlIGl0J3MgcHJlc2VudC4gVGhlIG1haW4gZm9jdXMgaXMgdG8gY29uZmlybSBpZiBgYnBmX3NvY2tfZGVzdHJveWAgaXRzZWxmIG1pZ2h0IGJlIGJlaGluZCBhbnkgc3BlY2lmaWMgY29uZmlnIGZsYWdzIHRoYXQgSSdtIG92ZXJsb29raW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTMyLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIzOjI3OjQ0LjcxNDYyODE0M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA3OTYwMzEyMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfc29ja19kZXN0cm95XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9maWx0ZXIuYz0xMjY0Nj1fX2JwZl9rZnVuY19zdGFydF9kZWZzKCk7XFxubmV0L2NvcmUvZmlsdGVyLmMtMTI2NDctXFxubmV0L2NvcmUvZmlsdGVyLmM6MTI2NDg6LyogYnBmX3NvY2tfZGVzdHJveTogRGVzdHJveSB0aGUgZ2l2ZW4gc29ja2V0IHdpdGggRUNPTk5BQk9SVEVEIGVycm9yIGNvZGUuXFxubmV0L2NvcmUvZmlsdGVyLmMtMTI2NDktICpcXG4tLVxcbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjYzLSAqL1xcbm5ldC9jb3JlL2ZpbHRlci5jOjEyNjY0Ol9fYnBmX2tmdW5jIGludCBicGZfc29ja19kZXN0cm95KHN0cnVjdCBzb2NrX2NvbW1vbiAqc29jaylcXG5uZXQvY29yZS9maWx0ZXIuYy0xMjY2NS17XFxuLS1cXG5uZXQvY29yZS9maWx0ZXIuYz0xMjY4NT1CVEZfS0ZVTkNTX1NUQVJUKGJwZl9za19pdGVyX2tmdW5jX2lkcylcXG5uZXQvY29yZS9maWx0ZXIuYzoxMjY4NjpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3NvY2tfZGVzdHJveSlcXG5uZXQvY29yZS9maWx0ZXIuYy0xMjY4Ny1CVEZfS0ZVTkNTX0VORChicGZfc2tfaXRlcl9rZnVuY19pZHMpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2cuYz05PV9fYmUxNiBzZXJ2X3BvcnQgPSAwO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZy5jLTEwLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZy5jOjExOmludCBicGZfc29ja19kZXN0cm95KHN0cnVjdCBzb2NrX2NvbW1vbiAqc2spIF9fa3N5bTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2cuYy0xMi1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZy5jPTQ5PWludCBpdGVyX3RjcDZfY2xpZW50KHN0cnVjdCBicGZfaXRlcl9fdGNwICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2cuYy02Ny1cXHRpZiAoc29ja19jb29raWUgPT0gKnZhbClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2cuYzo2ODpcXHRcXHRicGZfc29ja19kZXN0cm95KHNrX2NvbW1vbik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmMtNjktXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2cuYz03ND1pbnQgaXRlcl90Y3A2X3NlcnZlcihzdHJ1Y3QgYnBmX2l0ZXJfX3RjcCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmMtOTctXFx0aWYgKHNyY3AgPT0gc2Vydl9wb3J0KVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZy5jOjk4OlxcdFxcdGJwZl9zb2NrX2Rlc3Ryb3koc2tfY29tbW9uKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2cuYy05OS1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZy5jPTEwNT1pbnQgaXRlcl91ZHA2X2NsaWVudChzdHJ1Y3QgYnBmX2l0ZXJfX3VkcCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmMtMTIwLVxcdGlmIChzb2NrX2Nvb2tpZSA9PSAqdmFsKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZy5jOjEyMTpcXHRcXHRicGZfc29ja19kZXN0cm95KChzdHJ1Y3Qgc29ja19jb21tb24gKilzayk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmMtMTIyLVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmM9MTI3PWludCBpdGVyX3VkcDZfc2VydmVyKHN0cnVjdCBicGZfaXRlcl9fdWRwICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2cuYy0xMzktXFx0aWYgKHNyY3AgPT0gc2Vydl9wb3J0KVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZy5jOjE0MDpcXHRcXHRicGZfc29ja19kZXN0cm95KChzdHJ1Y3Qgc29ja19jb21tb24gKilzayk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmMtMTQxLVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nX2ZhaWwuYz05PWNoYXIgX2xpY2Vuc2VbXSBTRUMoXFxcImxpY2Vuc2VcXFwiKSA9IFxcXCJHUExcXFwiO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZ19mYWlsLmMtMTAtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nX2ZhaWwuYzoxMTppbnQgYnBmX3NvY2tfZGVzdHJveShzdHJ1Y3Qgc29ja19jb21tb24gKnNrKSBfX2tzeW07XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nX2ZhaWwuYy0xMi1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2dfZmFpbC5jPTEzPVNFQyhcXFwidHBfYnRmL3RjcF9kZXN0cm95X3NvY2tcXFwiKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZ19mYWlsLmM6MTQ6X19mYWlsdXJlIF9fbXNnKFxcXCJjYWxsaW5nIGtlcm5lbCBmdW5jdGlvbiBicGZfc29ja19kZXN0cm95IGlzIG5vdCBhbGxvd2VkXFxcIilcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2dfZmFpbC5jLTE1LWludCBCUEZfUFJPRyh0cmFjZV90Y3BfZGVzdHJveV9zb2NrLCBzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2dfZmFpbC5jLTE3LVxcdC8qIHNob3VsZCBub3QgbG9hZCAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZ19mYWlsLmM6MTg6XFx0YnBmX3NvY2tfZGVzdHJveSgoc3RydWN0IHNvY2tfY29tbW9uICopc2spO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZ19mYWlsLmMtMTktXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19pdGVyX2JhdGNoLmM9NzY9aW50IGl0ZXJfdGNwX2Rlc3Ryb3koc3RydWN0IGJwZl9pdGVyX190Y3AgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2l0ZXJfYmF0Y2guYy04Ny1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19pdGVyX2JhdGNoLmM6ODg6XFx0YnBmX3NvY2tfZGVzdHJveShza19jb21tb24pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2l0ZXJfYmF0Y2guYy04OS1cXHRicGZfc2VxX3dyaXRlKGN0eC1cXHUwMDNlbWV0YS1cXHUwMDNlc2VxLCBcXHUwMDI2c29ja19jb29raWUsIHNpemVvZihzb2NrX2Nvb2tpZSkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMzoyNzo0Ni43OTQyMzYzMDVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI2MDgyODM4NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGJwZl9zb2NrX2Rlc3Ryb3lgIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCByZWxhdGVkIHRvIGBicGZfc29ja19kZXN0cm95YCwgd2hpY2gsIGFzIGEgQlBGIGtmdW5jLCBpcyBwcmV0dHkgaW50ZXJlc3RpbmcuIEZpcnN0IG9mZiwgaXQncyBwcmV0dHkgY2xlYXIgdGhhdCBpdCByZWxpZXMgb24gYENPTkZJR19CUEZfU1lTQ0FMTGAgYmVpbmcgZW5hYmxlZCwgd2hpY2ggaXMgc3RhbmRhcmQgZm9yIG1vc3QgQlBGLXJlbGF0ZWQgc3R1ZmYuIEFuZCBpdCBsaXZlcyBpbiBgbmV0L2NvcmUvZmlsdGVyLmNgLCBwYXJ0IG9mIHRoZSBgbmV0YCBzdWJzeXN0ZW0gdGhhdCdzIGJ1aWx0IHdpdGggYENPTkZJR19ORVRgLiBObyBzdXJwcmlzZXMgdGhlcmUuXG5cblRoZSBjb3JlIG9mIHRoZSBwYXRjaCBpbnZvbHZlcyBhZGRpbmcgYSBjaGVjayBmb3IgYHNrX2Z1bGxzb2NrKHNrKWAgYmVmb3JlIGNhbGxpbmcgYHNrLVx1MDAzZXNrX3Byb3QtXHUwMDNlZGlhZ19kZXN0cm95YC4gVGhpcyBpcyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UsIGFuZCBpdCdzIGEgZ29vZCBvbmUuIEl0J3MgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBjcmFzaCBvciB1bmRlZmluZWQgYmVoYXZpb3Igd2hlbiBgYnBmX3NvY2tfZGVzdHJveWAgaXMgY2FsbGVkIG9uIHNvbWV0aGluZyBsaWtlIGEgcmVxdWVzdCBzb2NrZXQgb3IgYSB0aW1ld2FpdCBzb2NrZXQsIHdoaWNoIGFyZW4ndCBuZWNlc3NhcmlseSBmdWxsIHNvY2tldHMuIFRoYXQncyBhIGNsYXNzaWMgaXNzdWUg4oCTIGhhbmRsaW5nIHJlc291cmNlIG1hbmFnZW1lbnQgYW5kIGxpZmVjeWNsZSBjb3JyZWN0bHkgaW4gdGhlIG5ldHdvcmsgc3RhY2sgaXMgYWx3YXlzIHRyaWNreS5cblxuR2l2ZW4gdGhhdCBpdCBpcyBhbiBpbXBvcnRhbnQgZnVuY3Rpb25hbCBjaGFuZ2UsIEkgYW0gc3VyZSB0aGlzIHdvdWxkIGJlIGdvb2QgdG8gZnV6eiwgYW5kIEkgd291bGQgd2FudCB0byBlbnN1cmUgaXQgaXMuXG5cblRoZSByZWxldmFudCBzeW1ib2wgaXMgY2xlYXJseSBgYnBmX3NvY2tfZGVzdHJveWAuIEJleW9uZCB0aGF0LCBJIG5lZWQgdG8gY2hlY2sgZm9yIGFueSBvdGhlciBkZXBlbmRlbmNpZXMsIGJleW9uZCBgQlBGX1NZU0NBTExgLCB0aGF0IG11c3QgYmUgZW5hYmxlZC4gSSBrbm93IGBicGZfc29ja19kZXN0cm95YCBpcyBhbHNvIGF2YWlsYWJsZSBmb3IgdXNlIGluIGBCUEZfVFJBQ0VfSVRFUmAgcHJvZ3JhbXMsIHdoaWNoIG1ha2VzIHNlbnNlLiBgQlBGX1RSQUNFX0lURVJgIGlzIGl0c2VsZiBsaW5rZWQgdG8gYENPTkZJR19CUEZfU1lTQ0FMTGAuIEkgZG9uJ3Qgc2VlIGFueSBvdGhlciBjb25maWcgb3B0aW9ucyB0aGF0IGFyZSBuZWVkZWQsIGFuZCBJJ20gY29uZmlkZW50IGFib3V0IHRoYXQuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHdoYXQgdGhlIG91dGNvbWUgc2hvdWxkIGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjE2LCJPdXRwdXRUb2tlbnMiOjEwNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMzoyODowOS40MDI1MjIzNTVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODA1MjM2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfc29ja19kZXN0cm95XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIGBicGZfc29ja19kZXN0cm95YCB0byBlbnN1cmUgaXQgaXMgb25seSBjYWxsZWQgb24gZnVsbCBzb2NrZXRzLCBwcmV2ZW50aW5nIHBvdGVudGlhbCBjcmFzaGVzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3Igd2hlbiBjYWxsZWQgb24gcmVxdWVzdCBvciB0aW1ld2FpdCBzb2NrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBCUEYga2Z1bmMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSBCUEYgcHJvZ3JhbXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfc29ja19kZXN0cm95XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIGBicGZfc29ja19kZXN0cm95YCB0byBlbnN1cmUgaXQgaXMgb25seSBjYWxsZWQgb24gZnVsbCBzb2NrZXRzLCBwcmV2ZW50aW5nIHBvdGVudGlhbCBjcmFzaGVzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3Igd2hlbiBjYWxsZWQgb24gcmVxdWVzdCBvciB0aW1ld2FpdCBzb2NrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBCUEYga2Z1bmMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSBCUEYgcHJvZ3JhbXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowkz6pv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-02 23:00:05 +0000 UTC FinishedAt: 2026-07-02 23:28:11 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "8c04c1292dca29a57ea82c6a44348be49749fc22", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "8c04c1292dca29a57ea82c6a44348be49749fc22", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "7d016b85-98e5-49c9-8d33-afb5bbcc6f70" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "bpf_sock_destroy" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAyIDIzOjI2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX3NvY2tfZGVzdHJveSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gYGJwZl9zb2NrX2Rlc3Ryb3lgIHRvIGVuc3VyZSBpdCBpcyBvbmx5IGNhbGxlZCBvbiBmdWxsIHNvY2tldHMsIHByZXZlbnRpbmcgcG90ZW50aWFsIGNyYXNoZXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciB3aGVuIGNhbGxlZCBvbiByZXF1ZXN0IG9yIHRpbWV3YWl0IHNvY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIEJQRiBrZnVuYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIEJQRiBwcm9ncmFtcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMzoyNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGZhYmFhMTg0NGM4YTg2ZTYwNTM5YTNhMmY3YTI1Y2E0NGI4NDJiYTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDIzOjI2OjE4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2ZpbHRlci5jIGIvbmV0L2NvcmUvZmlsdGVyLmNcbmluZGV4IDY5ZWMxYTRjMGY5ZGExLi5hMGZjYWZiMDhiOTY4NSAxMDA2NDRcbi0tLSBhL25ldC9jb3JlL2ZpbHRlci5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9maWx0ZXIuY1xuQEAgLTEyNjY1LDYgJiM0MzsxMjY2NSw5IEBAIF9fYnBmX2tmdW5jIGludCBicGZfc29ja19kZXN0cm95KHN0cnVjdCBzb2NrX2NvbW1vbiAqc29jaylcbiB7XG4gXHRzdHJ1Y3Qgc29jayAqc2sgPSAoc3RydWN0IHNvY2sgKilzb2NrO1xuIFxuJiM0MztcdGlmICghc2tfZnVsbHNvY2soc2spKVxuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuJiM0MztcbiBcdC8qIFRoZSBsb2NraW5nIHNlbWFudGljcyB0aGF0IGFsbG93IGZvciBzeW5jaHJvbm91cyBleGVjdXRpb24gb2YgdGhlXG4gXHQgKiBkZXN0cm95IGhhbmRsZXJzIGFyZSBvbmx5IHN1cHBvcnRlZCBmb3IgVENQIGFuZCBVRFAuXG4gXHQgKiBTdXBwb3J0aW5nIHByb3RvY29scyB3aWxsIG5lZWQgdG8gYWNxdWlyZSBzb2NrIGxvY2sgaW4gdGhlIEJQRiBjb250ZXh0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjM6MjY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfc29ja19kZXN0cm95JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBgYnBmX3NvY2tfZGVzdHJveWAgdG8gZW5zdXJlIGl0IGlzIG9ubHkgY2FsbGVkIG9uIGZ1bGwgc29ja2V0cywgcHJldmVudGluZyBwb3RlbnRpYWwgY3Jhc2hlcyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIHdoZW4gY2FsbGVkIG9uIHJlcXVlc3Qgb3IgdGltZXdhaXQgc29ja2V0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgQlBGIGtmdW5jIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gQlBGIHByb2dyYW1zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmYWJhYTE4NDRjOGE4NmU2MDUzOWEzYTJmN2EyNWNhNDRiODQyYmEzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMiAyMzoyNjoxOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9jb3JlL2ZpbHRlci5jIGIvbmV0L2NvcmUvZmlsdGVyLmMKaW5kZXggNjllYzFhNGMwZjlkYTEuLmEwZmNhZmIwOGI5Njg1IDEwMDY0NAotLS0gYS9uZXQvY29yZS9maWx0ZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9maWx0ZXIuYwpAQCAtMTI2NjUsNiAmIzQzOzEyNjY1LDkgQEAgX19icGZfa2Z1bmMgaW50IGJwZl9zb2NrX2Rlc3Ryb3koc3RydWN0IHNvY2tfY29tbW9uICpzb2NrKQogewogCXN0cnVjdCBzb2NrICpzayA9IChzdHJ1Y3Qgc29jayAqKXNvY2s7CiAKJiM0MzsJaWYgKCFza19mdWxsc29jayhzaykpCiYjNDM7CQlyZXR1cm4gLUVPUE5PVFNVUFA7CiYjNDM7CiAJLyogVGhlIGxvY2tpbmcgc2VtYW50aWNzIHRoYXQgYWxsb3cgZm9yIHN5bmNocm9ub3VzIGV4ZWN1dGlvbiBvZiB0aGUKIAkgKiBkZXN0cm95IGhhbmRsZXJzIGFyZSBvbmx5IHN1cHBvcnRlZCBmb3IgVENQIGFuZCBVRFAuCiAJICogU3VwcG9ydGluZyBwcm90b2NvbHMgd2lsbCBuZWVkIHRvIGFjcXVpcmUgc29jayBsb2NrIGluIHRoZSBCUEYgY29udGV4dAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMzoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODI5CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjoKCioqQW5hbHl6aW5nIGEgTmV0d29yayBGaWx0ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCYjMzk7cyBtYWtpbmcgYSBjaGFuZ2UgdG8gYG5ldC9jb3JlL2ZpbHRlci5jYCwgc3BlY2lmaWNhbGx5IGltcGFjdGluZyB0aGUgYGJwZl9zb2NrX2Rlc3Ryb3lgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiAqd2h5KiB0aGlzIGNoYW5nZSBpcyBiZWluZyBtYWRlLiBUaGUgaW50cm9kdWN0aW9uIG9mIHRoaXMgYGlmICghc2tfZnVsbHNvY2soc2spKSByZXR1cm4gLUVPUE5PVFNVUFA7YCBjaGVjayBpcyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZy4gVGhpcyBzdWdnZXN0cyB0aGV5JiMzOTtyZSB0cnlpbmcgdG8gcmVzdHJpY3QgdGhlIGJlaGF2aW9yIG9mIGBicGZfc29ja19kZXN0cm95YCBiYXNlZCBvbiB0aGUgc29ja2V0IHR5cGUuCgpMZXQgbWUgcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCBgYnBmX3NvY2tfZGVzdHJveWAgaXMgKnN1cHBvc2VkKiB0byBkby4gSXQmIzM5O3MgbGlrZWx5IGludm9sdmVkIGluIGNsZWFuaW5nIHVwIEJQRi1yZWxhdGVkIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggYSBzb2NrZXQgd2hlbiB0aGUgc29ja2V0IGlzIGNsb3NlZCBvciBkZXN0cm95ZWQuIFRoZSBhZGRpdGlvbiBvZiBgc2tfZnVsbHNvY2tgIG1lYW5zIHdlIGFyZSBub3cgb25seSBoYW5kbGluZyBjZXJ0YWluIGtpbmRzIG9mIHNvY2tldHMuIFRoZSBgc2tfZnVsbHNvY2tgIG1hY3JvIHByb2JhYmx5IGluZGljYXRlcyB0aGF0IHdlIGFyZSBkZWFsaW5nIHdpdGggYSBmdWxsIHNvY2tldCwgYXMgb3Bwb3NlZCB0byBhICYjMzQ7aGFsZi1vcGVuJiMzNDsgb3IgaW5jb21wbGV0ZSBzb2NrZXQuIFRoZSBgLUVPUE5PVFNVUFBgIGVycm9yIGlzIGNsZWFyOyBpdCBpbmRpY2F0ZXMgdGhhdCB0aGUgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRoYXQgc29ja2V0IHR5cGUuIFRoaXMgaXMgdGhlIGNydXggb2YgdGhlIHBhdGNoOyB0aGUgZGV2ZWxvcGVycyBoYXZlIGRlY2lkZWQgdGhhdCBgYnBmX3NvY2tfZGVzdHJveWAgaXNuJiMzOTt0IHJlbGV2YW50IG9yIHNhZmUgdG8gb3BlcmF0ZSBvbiBhIGNlcnRhaW4gc2V0IG9mIHNvY2tldHMuIFNvLCBteSBuZXh0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGlzIGRlY2lzaW9uLiBXaGF0IHR5cGVzIG9mIHNvY2tldHMgYXJlICpub3QqIGBmdWxsc29ja2A/IFRoYXQgaXMgd2hhdCB0aGUgcGF0Y2ggaXMgbGltaXRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjM6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX3NvY2tfZGVzdHJveSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL2ZpbHRlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL2ZpbHRlci5jPTEyNjQ2PV9fYnBmX2tmdW5jX3N0YXJ0X2RlZnMoKTtcbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjQ3LVxubmV0L2NvcmUvZmlsdGVyLmM6MTI2NDg6LyogYnBmX3NvY2tfZGVzdHJveTogRGVzdHJveSB0aGUgZ2l2ZW4gc29ja2V0IHdpdGggRUNPTk5BQk9SVEVEIGVycm9yIGNvZGUuXG5uZXQvY29yZS9maWx0ZXIuYy0xMjY0OS0gKlxuLS1cbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjYzLSAqL1xubmV0L2NvcmUvZmlsdGVyLmM6MTI2NjQ6X19icGZfa2Z1bmMgaW50IGJwZl9zb2NrX2Rlc3Ryb3koc3RydWN0IHNvY2tfY29tbW9uICpzb2NrKVxubmV0L2NvcmUvZmlsdGVyLmMtMTI2NjUte1xuLS1cbm5ldC9jb3JlL2ZpbHRlci5jPTEyNjg1PUJURl9LRlVOQ1NfU1RBUlQoYnBmX3NrX2l0ZXJfa2Z1bmNfaWRzKVxubmV0L2NvcmUvZmlsdGVyLmM6MTI2ODY6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zb2NrX2Rlc3Ryb3kpXG5uZXQvY29yZS9maWx0ZXIuYy0xMjY4Ny1CVEZfS0ZVTkNTX0VORChicGZfc2tfaXRlcl9rZnVuY19pZHMpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjM6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU0MwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBCUEYgS2VybmVsIEZ1bmN0aW9uIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBicGZfc29ja19kZXN0cm95YCwgc3BlY2lmaWNhbGx5IGEgQlBGIGtmdW5jLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gVGhlIGNvcmUgY2hhbmdlIGlzIHRoZSBhZGRpdGlvbiBvZiB0aGlzIGBpZiAoIXNrX2Z1bGxzb2NrKHNrKSkgcmV0dXJuIC1FT1BOT1RTVVBQO2AgY2hlY2suIFRoYXTigJlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgcHJldHR5IGNsZWFyIHJlc3RyaWN0aW9uIGJlaW5nIGludHJvZHVjZWQuIEdpdmVuIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBhIEJQRiBrZnVuYywgbWVhbmluZyBpdCYjMzk7cyBjYWxsYWJsZSBkaXJlY3RseSBmcm9tIEJQRiBwcm9ncmFtcywgdGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2ssIGVzcGVjaWFsbHkgZm9yIHBvdGVudGlhbCBmdXp6aW5nIHRhcmdldHMuCgpNeSBuZXh0IHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgYW55IHByZXJlcXVpc2l0ZSBjb25maWd1cmF0aW9ucy4gSSByZW1lbWJlciBmcm9tIGV4cGVyaWVuY2UgdGhhdCBgbmV0L2NvcmUvZmlsdGVyLmNgIGlzIGludm9sdmVkIGhlcmUsIGFuZCB0aGF0IGdldHMgY29tcGlsZWQgd2hlbiBgQ09ORklHX05FVGAgaXMgc2V0LCBvYnZpb3VzbHkuIFRoZW4sIEJQRiBoYXMgdG8gYmUgZW5hYmxlZCBpbiBvcmRlciBmb3IgQlBGIGtmdW5jcyB0byBldmVuICpleGlzdCouIFRoYXQmIzM5O3MgYENPTkZJR19CUEZfU1lTQ0FMTGAuIEkmIzM5O2xsIHdhbnQgdG8gZG91YmxlLWNoZWNrIGBuZXQvY29yZS9NYWtlZmlsZWAgdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzIGZvciBgZmlsdGVyLmNgLCBqdXN0IHRvIGJlIGNlcnRhaW4uIEkgd2FudCB0byBtYWtlIHN1cmUgSSYjMzk7bSB0ZXN0aW5nIGluIGFuIGVudmlyb25tZW50IHRoYXQgcmVmbGVjdHMgdGhlIGFjdHVhbCBzdGF0ZSBvZiB0aGUga2VybmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIzOjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZpbHRlci5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NvcmUvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvTWFrZWZpbGU9MTI9b2JqLXlcdFx0ICAgICAmIzQzOz0gZGV2Lm8gZGV2X2FwaS5vIGRldl9hZGRyX2xpc3RzLm8gZHN0Lm8gbmV0ZXZlbnQubyBcXFxubmV0L2NvcmUvTWFrZWZpbGU6MTM6XHRcdFx0bmVpZ2hib3VyLm8gcnRuZXRsaW5rLm8gdXRpbHMubyBsaW5rX3dhdGNoLm8gZmlsdGVyLm8gXFxcbm5ldC9jb3JlL01ha2VmaWxlLTE0LVx0XHRcdHNvY2tfZGlhZy5vIGRldl9pb2N0bC5vIHRzby5vIHNvY2tfcmV1c2Vwb3J0Lm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMzoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDk2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290IGhlcmUuCgoqKkFuYWx5emluZyBCdWlsZCBEZXBlbmRlbmNpZXMgYW5kIEZ1bmN0aW9uIERlZmluaXRpb25zKioKCkFscmlnaHQsIHNvIGBmaWx0ZXIub2AgaXMgKmFsd2F5cyogYnVpbHQgd2hlbiBgQ09ORklHX05FVGAgaXMgZW5hYmxlZC4gVGhhdCYjMzk7cyBhIGdpdmVuLiBOb3csIEkmIzM5O20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQgdGhlIGRlZmluaXRpb24gb2YgYGJwZl9zb2NrX2Rlc3Ryb3lgLiBUaGUgZG9jdW1lbnRhdGlvbiBzYXlzIGl0JiMzOTtzIGRlZmluZWQgd2l0aGluIGBfX2JwZl9rZnVuY19zdGFydF9kZWZzKClgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgYXJlIHRoZXJlIGFueSBjb25kaXRpb25hbCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcywgYCNpZmRlZmBzLCBzdXJyb3VuZGluZyB0aGF0IGZ1bmN0aW9uIGRlZmluaXRpb24gd2l0aGluIHRoYXQgbWFjcm8/IEFyZSB3ZSBvbmx5IHNlZWluZyB0aGlzIGZ1bmN0aW9uIGRlZmluZWQgdW5kZXIgc3BlY2lmaWMgY29tcGlsYXRpb24gc2NlbmFyaW9zLCBvciBpcyBpdCBhbHdheXMgcHJlc2VudCB3aXRoIHRoZSBtYWNybz8gSSBuZWVkIHRvIGNoZWNrIGZvciBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdGhhdCBtaWdodCBhZmZlY3QgdGhlIGF2YWlsYWJpbGl0eSBvciBiZWhhdmlvciBvZiB0aGF0IGZ1bmN0aW9uLiBMZXQmIzM5O3MgZGlnIGRlZXBlciBhbmQgc2VlIHdoYXQgdGhhdCBtYWNybyBleHBhbnNpb24gcmV2ZWFscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMzoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfc29ja19kZXN0cm95JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NvcmUvZmlsdGVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvZmlsdGVyLmM9MTI2NDY9X19icGZfa2Z1bmNfc3RhcnRfZGVmcygpO1xubmV0L2NvcmUvZmlsdGVyLmMtMTI2NDctXG5uZXQvY29yZS9maWx0ZXIuYzoxMjY0ODovKiBicGZfc29ja19kZXN0cm95OiBEZXN0cm95IHRoZSBnaXZlbiBzb2NrZXQgd2l0aCBFQ09OTkFCT1JURUQgZXJyb3IgY29kZS5cbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjQ5LSAqXG4tLVxubmV0L2NvcmUvZmlsdGVyLmMtMTI2NjMtICovXG5uZXQvY29yZS9maWx0ZXIuYzoxMjY2NDpfX2JwZl9rZnVuYyBpbnQgYnBmX3NvY2tfZGVzdHJveShzdHJ1Y3Qgc29ja19jb21tb24gKnNvY2spXG5uZXQvY29yZS9maWx0ZXIuYy0xMjY2NS17XG4tLVxubmV0L2NvcmUvZmlsdGVyLmM9MTI2ODU9QlRGX0tGVU5DU19TVEFSVChicGZfc2tfaXRlcl9rZnVuY19pZHMpXG5uZXQvY29yZS9maWx0ZXIuYzoxMjY4NjpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3NvY2tfZGVzdHJveSlcbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjg3LUJURl9LRlVOQ1NfRU5EKGJwZl9za19pdGVyX2tmdW5jX2lkcylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMzoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjM4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gcmVhZGluZyBhbmQgcHJvY2Vzc2luZyB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb246CgoqKkFuYWx5emluZyBgbmV0L2NvcmUvZmlsdGVyLmNgIEFyb3VuZCBMaW5lIDEyNjY0KioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSYjMzk7bSBnb2luZyB0byBwdWxsIHVwIGBuZXQvY29yZS9maWx0ZXIuY2AgYW5kIHplcm8gaW4gb24gcm91Z2hseSBsaW5lIDEyNjY0LiBJJiMzOTttIGV4cGVjdGluZyBzb21ldGhpbmcgY3JpdGljYWwgaGVyZSwgZ2l2ZW4gdGhhdCBpdCYjMzk7cyBiZWVuIHNwZWNpZmllZCB3aXRoIHN1Y2ggcHJlY2lzaW9uLiBUaGlzIGxpa2VseSBpbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBpcyBpbnRlcmVzdGVkIGluIGEgc3BlY2lmaWMgcGFydCBvZiB0aGUgY29kZSwgbWF5YmUgcmVsYXRlZCB0byBhIGtub3duIGlzc3VlLCBhIHJlY2VudCBjaGFuZ2UsIG9yIGEgcGFydGljdWxhciBmdW5jdGlvbmFsaXR5LiBJJiMzOTttIGFudGljaXBhdGluZyB0aGF0IHRoaXMgc2VjdGlvbiBpcyBlaXRoZXIgYSBwb3RlbnRpYWwgYm90dGxlbmVjaywgYSBjb21wbGV4IHBpZWNlIG9mIGxvZ2ljLCBvciBwZXJoYXBzIGFuIGFyZWEgd2hlcmUgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIG1pZ2h0IGJlIGx1cmtpbmcuIEkmIzM5O20gcmVhZHkgdG8gY2FyZWZ1bGx5IHBhcnNlIHRoZSBjb2RlIGFyb3VuZCB0aGlzIGxpbmUsIGxvb2tpbmcgZm9yIGFueSBpbW1lZGlhdGUgcmVkIGZsYWdzIG9yIGludGVyZXN0aW5nIGRlc2lnbiBjaG9pY2VzLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgYmVpbmcgZG9uZS4uLiBhbmQgZGV0ZXJtaW5lIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIHRoYXQgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjM6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvY29yZS9maWx0ZXIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyNjQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEyNjQwOlx0XHRcdFx0XHRcdCAgICAgICBcdTAwMjZicGZfa2Z1bmNfc2V0X3NvY2tfYWRkcik7XG4xMjY0MTpcdFx0cmV0ID0gcmV0ID86IHJlZ2lzdGVyX2J0Zl9rZnVuY19pZF9zZXQoQlBGX1BST0dfVFlQRV9TQ0hFRF9DTFMsIFx1MDAyNmJwZl9rZnVuY19zZXRfdGNwX3JlcXNrKTtcbjEyNjQyOlx0XHRyZXR1cm4gcmV0ID86IHJlZ2lzdGVyX2J0Zl9rZnVuY19pZF9zZXQoQlBGX1BST0dfVFlQRV9TT0NLX09QUywgXHUwMDI2YnBmX2tmdW5jX3NldF9zb2NrX29wcyk7XG4xMjY0MzpcdH1cbjEyNjQ0Olx0bGF0ZV9pbml0Y2FsbChicGZfa2Z1bmNfaW5pdCk7XG4xMjY0NTpcdFxuMTI2NDY6XHRfX2JwZl9rZnVuY19zdGFydF9kZWZzKCk7XG4xMjY0NzpcdFxuMTI2NDg6XHQvKiBicGZfc29ja19kZXN0cm95OiBEZXN0cm95IHRoZSBnaXZlbiBzb2NrZXQgd2l0aCBFQ09OTkFCT1JURUQgZXJyb3IgY29kZS5cbjEyNjQ5Olx0ICpcbjEyNjUwOlx0ICogVGhlIGZ1bmN0aW9uIGV4cGVjdHMgYSBub24tTlVMTCBwb2ludGVyIHRvIGEgc29ja2V0LCBhbmQgaW52b2tlcyB0aGVcbjEyNjUxOlx0ICogcHJvdG9jb2wgc3BlY2lmaWMgc29ja2V0IGRlc3Ryb3kgaGFuZGxlcnMuXG4xMjY1MjpcdCAqXG4xMjY1MzpcdCAqIFRoZSBoZWxwZXIgY2FuIG9ubHkgYmUgY2FsbGVkIGZyb20gQlBGIGNvbnRleHRzIHRoYXQgaGF2ZSBhY3F1aXJlZCB0aGUgc29ja2V0XG4xMjY1NDpcdCAqIGxvY2tzLlxuMTI2NTU6XHQgKlxuMTI2NTY6XHQgKiBQYXJhbWV0ZXJzOlxuMTI2NTc6XHQgKiBAc29jazogUG9pbnRlciB0byBzb2NrZXQgdG8gYmUgZGVzdHJveWVkXG4xMjY1ODpcdCAqXG4xMjY1OTpcdCAqIFJldHVybjpcbjEyNjYwOlx0ICogT24gZXJyb3IsIG1heSByZXR1cm4gRVBST1RPTk9TVVBQT1JULCBFSU5WQUwuXG4xMjY2MTpcdCAqIEVQUk9UT05PU1VQUE9SVCBpZiBwcm90b2NvbCBzcGVjaWZpYyBkZXN0cm95IGhhbmRsZXIgaXMgbm90IHN1cHBvcnRlZC5cbjEyNjYyOlx0ICogMCBvdGhlcndpc2VcbjEyNjYzOlx0ICovXG4xMjY2NDpcdF9fYnBmX2tmdW5jIGludCBicGZfc29ja19kZXN0cm95KHN0cnVjdCBzb2NrX2NvbW1vbiAqc29jaylcbjEyNjY1Olx0e1xuMTI2NjY6XHRcdHN0cnVjdCBzb2NrICpzayA9IChzdHJ1Y3Qgc29jayAqKXNvY2s7XG4xMjY2NzpcdFxuMTI2Njg6XHRcdGlmICghc2tfZnVsbHNvY2soc2spKVxuMTI2Njk6XHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuMTI2NzA6XHRcbjEyNjcxOlx0XHQvKiBUaGUgbG9ja2luZyBzZW1hbnRpY3MgdGhhdCBhbGxvdyBmb3Igc3luY2hyb25vdXMgZXhlY3V0aW9uIG9mIHRoZVxuMTI2NzI6XHRcdCAqIGRlc3Ryb3kgaGFuZGxlcnMgYXJlIG9ubHkgc3VwcG9ydGVkIGZvciBUQ1AgYW5kIFVEUC5cbjEyNjczOlx0XHQgKiBTdXBwb3J0aW5nIHByb3RvY29scyB3aWxsIG5lZWQgdG8gYWNxdWlyZSBzb2NrIGxvY2sgaW4gdGhlIEJQRiBjb250ZXh0XG4xMjY3NDpcdFx0ICogcHJpb3IgdG8gaW52b2tpbmcgdGhpcyBrZnVuYy5cbjEyNjc1Olx0XHQgKi9cbjEyNjc2Olx0XHRpZiAoIXNrLVx1MDAzZXNrX3Byb3QtXHUwMDNlZGlhZ19kZXN0cm95IHx8IChzay1cdTAwM2Vza19wcm90b2NvbCAhPSBJUFBST1RPX1RDUCBcdTAwMjZcdTAwMjZcbjEyNjc3Olx0XHRcdFx0XHRcdCAgIHNrLVx1MDAzZXNrX3Byb3RvY29sICE9IElQUFJPVE9fVURQKSlcbjEyNjc4Olx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbjEyNjc5Olx0XG4xMjY4MDpcdFx0cmV0dXJuIHNrLVx1MDAzZXNrX3Byb3QtXHUwMDNlZGlhZ19kZXN0cm95KHNrLCBFQ09OTkFCT1JURUQpO1xuMTI2ODE6XHR9XG4xMjY4MjpcdFxuMTI2ODM6XHRfX2JwZl9rZnVuY19lbmRfZGVmcygpO1xuMTI2ODQ6XHRcbjEyNjg1Olx0QlRGX0tGVU5DU19TVEFSVChicGZfc2tfaXRlcl9rZnVuY19pZHMpXG4xMjY4NjpcdEJURl9JRF9GTEFHUyhmdW5jLCBicGZfc29ja19kZXN0cm95KVxuMTI2ODc6XHRCVEZfS0ZVTkNTX0VORChicGZfc2tfaXRlcl9rZnVuY19pZHMpXG4xMjY4ODpcdFxuMTI2ODk6XHRzdGF0aWMgaW50IHRyYWNpbmdfaXRlcl9maWx0ZXIoY29uc3Qgc3RydWN0IGJwZl9wcm9nICpwcm9nLCB1MzIga2Z1bmNfaWQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIzOjI3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MDQKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczoKCioqRGl2aW5nIGludG8gYGJwZl9zb2NrX2Rlc3Ryb3lgKioKCkFscmlnaHQsIHNvIGBicGZfc29ja19kZXN0cm95YCBpcyBmbGFnZ2VkIGFzIGEgQlBGIGtmdW5jLiBJbnRlcmVzdGluZywgc28gaXQmIzM5O3MgYSBrZXJuZWwgZnVuY3Rpb24gYWNjZXNzaWJsZSBmcm9tIGEgQlBGIHByb2dyYW0uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doZXJlJiMzOTtzIGl0ICpyZWdpc3RlcmVkKj8mIzM0OyBLbm93aW5nIHdoZXJlIGEga2Z1bmMgaXMgZGVmaW5lZCBhbmQgbWFkZSBhdmFpbGFibGUgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgaXRzIGNvbnRleHQuIExldCYjMzk7cyBzZWUuLi4gaXQmIzM5O3MgaW4gYGJwZl9za19pdGVyX2tmdW5jX2lkc2AsIGdvdCBpdC4gTm93LCB0aGF0JiMzOTtzIGp1c3QgdGhlICpyZWdpc3RyYXRpb24qLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGF0IHJlZ2lzdHJhdGlvbiBpcyAqdXNlZCouIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gYGJwZl9za19pdGVyX2tmdW5jX2lkc2AgYW5kIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IG1ha2luZyB1c2Ugb2YgdGhpcyBgYnBmX3NvY2tfZGVzdHJveWAuIFRoYXQmIzM5O2xsIGJlIHdoZXJlIHRoZSByZWFsIGFjdGlvbiBpcy4gVGltZSB0byBkaWcgaW4gYW5kIGZpbmQgdGhvc2UgY2FsbCBzaXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjM6Mjc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX3NrX2l0ZXJfa2Z1bmNfaWRzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NvcmUvZmlsdGVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvZmlsdGVyLmM9MTI2ODM9X19icGZfa2Z1bmNfZW5kX2RlZnMoKTtcbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjg0LVxubmV0L2NvcmUvZmlsdGVyLmM6MTI2ODU6QlRGX0tGVU5DU19TVEFSVChicGZfc2tfaXRlcl9rZnVuY19pZHMpXG5uZXQvY29yZS9maWx0ZXIuYy0xMjY4Ni1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3NvY2tfZGVzdHJveSlcbm5ldC9jb3JlL2ZpbHRlci5jOjEyNjg3OkJURl9LRlVOQ1NfRU5EKGJwZl9za19pdGVyX2tmdW5jX2lkcylcbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjg4LVxubmV0L2NvcmUvZmlsdGVyLmM9MTI2ODk9c3RhdGljIGludCB0cmFjaW5nX2l0ZXJfZmlsdGVyKGNvbnN0IHN0cnVjdCBicGZfcHJvZyAqcHJvZywgdTMyIGtmdW5jX2lkKVxubmV0L2NvcmUvZmlsdGVyLmMtMTI2OTAte1xubmV0L2NvcmUvZmlsdGVyLmM6MTI2OTE6XHRpZiAoYnRmX2lkX3NldDhfY29udGFpbnMoXHUwMDI2YnBmX3NrX2l0ZXJfa2Z1bmNfaWRzLCBrZnVuY19pZCkgXHUwMDI2XHUwMDI2XG5uZXQvY29yZS9maWx0ZXIuYy0xMjY5Mi1cdCAgICBwcm9nLVx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlICE9IEJQRl9UUkFDRV9JVEVSKVxuLS1cbm5ldC9jb3JlL2ZpbHRlci5jPTEyNjk3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnRmX2tmdW5jX2lkX3NldCBicGZfc2tfaXRlcl9rZnVuY19zZXQgPSB7XG5uZXQvY29yZS9maWx0ZXIuYy0xMjY5OC1cdC5vd25lciA9IFRISVNfTU9EVUxFLFxubmV0L2NvcmUvZmlsdGVyLmM6MTI2OTk6XHQuc2V0ICAgPSBcdTAwMjZicGZfc2tfaXRlcl9rZnVuY19pZHMsXG5uZXQvY29yZS9maWx0ZXIuYy0xMjcwMC1cdC5maWx0ZXIgPSB0cmFjaW5nX2l0ZXJfZmlsdGVyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMzoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTMyCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgQlBGIFNvY2sgRGVzdHJveSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgZm9jdXNpbmcgb24gYGJwZl9zb2NrX2Rlc3Ryb3lgLCBzcGVjaWZpY2FsbHkgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBgQlBGX1RSQUNFX0lURVJgIG1lY2hhbmlzbSB3aGVuIGRlYWxpbmcgd2l0aCBzb2NrZXRzLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhZGRpbmcgYSBjaGVjazogYGlmICghc2tfZnVsbHNvY2soc2spKSByZXR1cm4gLUVPUE5PVFNVUFA7YC4gSSBpbW1lZGlhdGVseSBzZWUgdGhpcyBhcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHNwZWNpZmljIGF0dGVtcHQgdG8gYXZvaWQgY2FsbGluZyBgc2stJmd0O3NrX3Byb3QtJmd0O2RpYWdfZGVzdHJveWAgb24gbm9uLWZ1bGwgc29ja2V0cy4gVGhpcyBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgYSBkZWZlbnNpdmUgbWVhc3VyZSwgbGlrZWx5IHRvIHByZXZlbnQgc29tZSBraW5kIG9mIGNyYXNoIG9yIHVuZGVmaW5lZCBiZWhhdmlvciBpbiB0aGUga2VybmVsLgoKR2l2ZW4gdGhpcywgbXkgZXhwZXJ0IGludHVpdGlvbiB0ZWxscyBtZSB0aGlzICpkZWZpbml0ZWx5KiB3YXJyYW50cyBmdXp6aW5nLiBUaGUgY2hhbmdlIGlzIHNwZWNpZmljLCBmb2N1c2VkLCBhbmQgaGFzIHRoZSBwb3RlbnRpYWwgdG8gaW1wYWN0IGEgdmFyaWV0eSBvZiBzb2NrZXQgc3RhdGVzLiBUaGUgZmFjdCB0aGF0IGBicGZfc29ja19kZXN0cm95YCBpcyByZWFjaGFibGUgdGhyb3VnaCBCUEYgcHJvZ3JhbXMganVzdCBpbmNyZWFzZXMgdGhlIGF0dGFjayBzdXJmYWNlLCBpbiBteSBtaW5kLgoKTXkgbmV4dCBzdGVwIGlzIHRvIG5haWwgZG93biB0aGUgZXNzZW50aWFsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbmVlZCB0byBiZSBpbiBwbGFjZS4gYEJQRl9TWVNDQUxMYCBpcyBwcmV0dHkgc3RhbmRhcmQsIGJ1dCBJIHdhbnQgdG8gbWFrZSBzdXJlIEkmIzM5O20gZXhwbGljaXRseSBpbmNsdWRpbmcgaXQuIGBDT05GSUdfTkVUYCBpcyBsaWtlbHkgYSBnaXZlbiwgYnV0IEkmIzM5O2xsIG1ha2Ugc3VyZSBpdCYjMzk7cyBwcmVzZW50LiBUaGUgbWFpbiBmb2N1cyBpcyB0byBjb25maXJtIGlmIGBicGZfc29ja19kZXN0cm95YCBpdHNlbGYgbWlnaHQgYmUgYmVoaW5kIGFueSBzcGVjaWZpYyBjb25maWcgZmxhZ3MgdGhhdCBJJiMzOTttIG92ZXJsb29raW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAyMzoyNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfc29ja19kZXN0cm95JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL2ZpbHRlci5jPTEyNjQ2PV9fYnBmX2tmdW5jX3N0YXJ0X2RlZnMoKTtcbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjQ3LVxubmV0L2NvcmUvZmlsdGVyLmM6MTI2NDg6LyogYnBmX3NvY2tfZGVzdHJveTogRGVzdHJveSB0aGUgZ2l2ZW4gc29ja2V0IHdpdGggRUNPTk5BQk9SVEVEIGVycm9yIGNvZGUuXG5uZXQvY29yZS9maWx0ZXIuYy0xMjY0OS0gKlxuLS1cbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjYzLSAqL1xubmV0L2NvcmUvZmlsdGVyLmM6MTI2NjQ6X19icGZfa2Z1bmMgaW50IGJwZl9zb2NrX2Rlc3Ryb3koc3RydWN0IHNvY2tfY29tbW9uICpzb2NrKVxubmV0L2NvcmUvZmlsdGVyLmMtMTI2NjUte1xuLS1cbm5ldC9jb3JlL2ZpbHRlci5jPTEyNjg1PUJURl9LRlVOQ1NfU1RBUlQoYnBmX3NrX2l0ZXJfa2Z1bmNfaWRzKVxubmV0L2NvcmUvZmlsdGVyLmM6MTI2ODY6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zb2NrX2Rlc3Ryb3kpXG5uZXQvY29yZS9maWx0ZXIuYy0xMjY4Ny1CVEZfS0ZVTkNTX0VORChicGZfc2tfaXRlcl9rZnVuY19pZHMpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmM9OT1fX2JlMTYgc2Vydl9wb3J0ID0gMDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZy5jLTEwLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmM6MTE6aW50IGJwZl9zb2NrX2Rlc3Ryb3koc3RydWN0IHNvY2tfY29tbW9uICpzaykgX19rc3ltO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmMtMTItXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmM9NDk9aW50IGl0ZXJfdGNwNl9jbGllbnQoc3RydWN0IGJwZl9pdGVyX190Y3AgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2cuYy02Ny1cdGlmIChzb2NrX2Nvb2tpZSA9PSAqdmFsKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmM6Njg6XHRcdGJwZl9zb2NrX2Rlc3Ryb3koc2tfY29tbW9uKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZy5jLTY5LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZy5jPTc0PWludCBpdGVyX3RjcDZfc2VydmVyKHN0cnVjdCBicGZfaXRlcl9fdGNwICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmMtOTctXHRpZiAoc3JjcCA9PSBzZXJ2X3BvcnQpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2cuYzo5ODpcdFx0YnBmX3NvY2tfZGVzdHJveShza19jb21tb24pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmMtOTktXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmM9MTA1PWludCBpdGVyX3VkcDZfY2xpZW50KHN0cnVjdCBicGZfaXRlcl9fdWRwICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmMtMTIwLVx0aWYgKHNvY2tfY29va2llID09ICp2YWwpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2cuYzoxMjE6XHRcdGJwZl9zb2NrX2Rlc3Ryb3koKHN0cnVjdCBzb2NrX2NvbW1vbiAqKXNrKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZy5jLTEyMi1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2cuYz0xMjc9aW50IGl0ZXJfdWRwNl9zZXJ2ZXIoc3RydWN0IGJwZl9pdGVyX191ZHAgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2cuYy0xMzktXHRpZiAoc3JjcCA9PSBzZXJ2X3BvcnQpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2cuYzoxNDA6XHRcdGJwZl9zb2NrX2Rlc3Ryb3koKHN0cnVjdCBzb2NrX2NvbW1vbiAqKXNrKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZy5jLTE0MS1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2dfZmFpbC5jPTk9Y2hhciBfbGljZW5zZVtdIFNFQyhcJiMzNDtsaWNlbnNlXCYjMzQ7KSA9IFwmIzM0O0dQTFwmIzM0OztcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZ19mYWlsLmMtMTAtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2dfZmFpbC5jOjExOmludCBicGZfc29ja19kZXN0cm95KHN0cnVjdCBzb2NrX2NvbW1vbiAqc2spIF9fa3N5bTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZ19mYWlsLmMtMTItXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2dfZmFpbC5jPTEzPVNFQyhcJiMzNDt0cF9idGYvdGNwX2Rlc3Ryb3lfc29ja1wmIzM0OylcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZ19mYWlsLmM6MTQ6X19mYWlsdXJlIF9fbXNnKFwmIzM0O2NhbGxpbmcga2VybmVsIGZ1bmN0aW9uIGJwZl9zb2NrX2Rlc3Ryb3kgaXMgbm90IGFsbG93ZWRcJiMzNDspXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2dfZmFpbC5jLTE1LWludCBCUEZfUFJPRyh0cmFjZV90Y3BfZGVzdHJveV9zb2NrLCBzdHJ1Y3Qgc29jayAqc2spXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nX2ZhaWwuYy0xNy1cdC8qIHNob3VsZCBub3QgbG9hZCAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nX2ZhaWwuYzoxODpcdGJwZl9zb2NrX2Rlc3Ryb3koKHN0cnVjdCBzb2NrX2NvbW1vbiAqKXNrKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZ19mYWlsLmMtMTktXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfaXRlcl9iYXRjaC5jPTc2PWludCBpdGVyX3RjcF9kZXN0cm95KHN0cnVjdCBicGZfaXRlcl9fdGNwICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfaXRlcl9iYXRjaC5jLTg3LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfaXRlcl9iYXRjaC5jOjg4Olx0YnBmX3NvY2tfZGVzdHJveShza19jb21tb24pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfaXRlcl9iYXRjaC5jLTg5LVx0YnBmX3NlcV93cml0ZShjdHgtXHUwMDNlbWV0YS1cdTAwM2VzZXEsIFx1MDAyNnNvY2tfY29va2llLCBzaXplb2Yoc29ja19jb29raWUpKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMjM6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzYxNgoJCQkJCQkJb3V0cHV0OiAxMDYKCQkJCQkJCXRob3VnaHRzOiAyMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGJwZl9zb2NrX2Rlc3Ryb3lgIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gYGJwZl9zb2NrX2Rlc3Ryb3lgLCB3aGljaCwgYXMgYSBCUEYga2Z1bmMsIGlzIHByZXR0eSBpbnRlcmVzdGluZy4gRmlyc3Qgb2ZmLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBpdCByZWxpZXMgb24gYENPTkZJR19CUEZfU1lTQ0FMTGAgYmVpbmcgZW5hYmxlZCwgd2hpY2ggaXMgc3RhbmRhcmQgZm9yIG1vc3QgQlBGLXJlbGF0ZWQgc3R1ZmYuIEFuZCBpdCBsaXZlcyBpbiBgbmV0L2NvcmUvZmlsdGVyLmNgLCBwYXJ0IG9mIHRoZSBgbmV0YCBzdWJzeXN0ZW0gdGhhdCYjMzk7cyBidWlsdCB3aXRoIGBDT05GSUdfTkVUYC4gTm8gc3VycHJpc2VzIHRoZXJlLgoKVGhlIGNvcmUgb2YgdGhlIHBhdGNoIGludm9sdmVzIGFkZGluZyBhIGNoZWNrIGZvciBgc2tfZnVsbHNvY2soc2spYCBiZWZvcmUgY2FsbGluZyBgc2stJmd0O3NrX3Byb3QtJmd0O2RpYWdfZGVzdHJveWAuIFRoaXMgaXMgYSAqZnVuY3Rpb25hbCogY2hhbmdlLCBhbmQgaXQmIzM5O3MgYSBnb29kIG9uZS4gSXQmIzM5O3MgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBjcmFzaCBvciB1bmRlZmluZWQgYmVoYXZpb3Igd2hlbiBgYnBmX3NvY2tfZGVzdHJveWAgaXMgY2FsbGVkIG9uIHNvbWV0aGluZyBsaWtlIGEgcmVxdWVzdCBzb2NrZXQgb3IgYSB0aW1ld2FpdCBzb2NrZXQsIHdoaWNoIGFyZW4mIzM5O3QgbmVjZXNzYXJpbHkgZnVsbCBzb2NrZXRzLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBpc3N1ZSDigJMgaGFuZGxpbmcgcmVzb3VyY2UgbWFuYWdlbWVudCBhbmQgbGlmZWN5Y2xlIGNvcnJlY3RseSBpbiB0aGUgbmV0d29yayBzdGFjayBpcyBhbHdheXMgdHJpY2t5LgoKR2l2ZW4gdGhhdCBpdCBpcyBhbiBpbXBvcnRhbnQgZnVuY3Rpb25hbCBjaGFuZ2UsIEkgYW0gc3VyZSB0aGlzIHdvdWxkIGJlIGdvb2QgdG8gZnV6eiwgYW5kIEkgd291bGQgd2FudCB0byBlbnN1cmUgaXQgaXMuCgpUaGUgcmVsZXZhbnQgc3ltYm9sIGlzIGNsZWFybHkgYGJwZl9zb2NrX2Rlc3Ryb3lgLiBCZXlvbmQgdGhhdCwgSSBuZWVkIHRvIGNoZWNrIGZvciBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzLCBiZXlvbmQgYEJQRl9TWVNDQUxMYCwgdGhhdCBtdXN0IGJlIGVuYWJsZWQuIEkga25vdyBgYnBmX3NvY2tfZGVzdHJveWAgaXMgYWxzbyBhdmFpbGFibGUgZm9yIHVzZSBpbiBgQlBGX1RSQUNFX0lURVJgIHByb2dyYW1zLCB3aGljaCBtYWtlcyBzZW5zZS4gYEJQRl9UUkFDRV9JVEVSYCBpcyBpdHNlbGYgbGlua2VkIHRvIGBDT05GSUdfQlBGX1NZU0NBTExgLiBJIGRvbiYjMzk7dCBzZWUgYW55IG90aGVyIGNvbmZpZyBvcHRpb25zIHRoYXQgYXJlIG5lZWRlZCwgYW5kIEkmIzM5O20gY29uZmlkZW50IGFib3V0IHRoYXQuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gd2hhdCB0aGUgb3V0Y29tZSBzaG91bGQgYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDIzOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9zb2NrX2Rlc3Ryb3kmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIGBicGZfc29ja19kZXN0cm95YCB0byBlbnN1cmUgaXQgaXMgb25seSBjYWxsZWQgb24gZnVsbCBzb2NrZXRzLCBwcmV2ZW50aW5nIHBvdGVudGlhbCBjcmFzaGVzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3Igd2hlbiBjYWxsZWQgb24gcmVxdWVzdCBvciB0aW1ld2FpdCBzb2NrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBCUEYga2Z1bmMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSBCUEYgcHJvZ3JhbXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX3NvY2tfZGVzdHJveSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gYGJwZl9zb2NrX2Rlc3Ryb3lgIHRvIGVuc3VyZSBpdCBpcyBvbmx5IGNhbGxlZCBvbiBmdWxsIHNvY2tldHMsIHByZXZlbnRpbmcgcG90ZW50aWFsIGNyYXNoZXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciB3aGVuIGNhbGxlZCBvbiByZXF1ZXN0IG9yIHRpbWV3YWl0IHNvY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIEJQRiBrZnVuYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIEJQRiBwcm9ncmFtcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIzOjI2OjE5LjI4MTY1MDE1NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDE5ODkzNjk3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9zb2NrX2Rlc3Ryb3lcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgdG8gYGJwZl9zb2NrX2Rlc3Ryb3lgIHRvIGVuc3VyZSBpdCBpcyBvbmx5IGNhbGxlZCBvbiBmdWxsIHNvY2tldHMsIHByZXZlbnRpbmcgcG90ZW50aWFsIGNyYXNoZXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciB3aGVuIGNhbGxlZCBvbiByZXF1ZXN0IG9yIHRpbWV3YWl0IHNvY2tldHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIEJQRiBrZnVuYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIEJQRiBwcm9ncmFtcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjM6MjY6MTkuMjgxNjU1NDk2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzUxNDgxNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmYWJhYTE4NDRjOGE4NmU2MDUzOWEzYTJmN2EyNWNhNDRiODQyYmEzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgSnVsIDIgMjM6MjY6MTggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZmlsdGVyLmMgYi9uZXQvY29yZS9maWx0ZXIuY1xcbmluZGV4IDY5ZWMxYTRjMGY5ZGExLi5hMGZjYWZiMDhiOTY4NSAxMDA2NDRcXG4tLS0gYS9uZXQvY29yZS9maWx0ZXIuY1xcbisrKyBiL25ldC9jb3JlL2ZpbHRlci5jXFxuQEAgLTEyNjY1LDYgKzEyNjY1LDkgQEAgX19icGZfa2Z1bmMgaW50IGJwZl9zb2NrX2Rlc3Ryb3koc3RydWN0IHNvY2tfY29tbW9uICpzb2NrKVxcbiB7XFxuIFxcdHN0cnVjdCBzb2NrICpzayA9IChzdHJ1Y3Qgc29jayAqKXNvY2s7XFxuIFxcbitcXHRpZiAoIXNrX2Z1bGxzb2NrKHNrKSlcXG4rXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbitcXG4gXFx0LyogVGhlIGxvY2tpbmcgc2VtYW50aWNzIHRoYXQgYWxsb3cgZm9yIHN5bmNocm9ub3VzIGV4ZWN1dGlvbiBvZiB0aGVcXG4gXFx0ICogZGVzdHJveSBoYW5kbGVycyBhcmUgb25seSBzdXBwb3J0ZWQgZm9yIFRDUCBhbmQgVURQLlxcbiBcXHQgKiBTdXBwb3J0aW5nIHByb3RvY29scyB3aWxsIG5lZWQgdG8gYWNxdWlyZSBzb2NrIGxvY2sgaW4gdGhlIEJQRiBjb250ZXh0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIzOjI2OjE5LjU1NzYwMDI3NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA5OTIyOTc4ODA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX3NvY2tfZGVzdHJveVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjaGVjayB0byBgYnBmX3NvY2tfZGVzdHJveWAgdG8gZW5zdXJlIGl0IGlzIG9ubHkgY2FsbGVkIG9uIGZ1bGwgc29ja2V0cywgcHJldmVudGluZyBwb3RlbnRpYWwgY3Jhc2hlcyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIHdoZW4gY2FsbGVkIG9uIHJlcXVlc3Qgb3IgdGltZXdhaXQgc29ja2V0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgQlBGIGtmdW5jIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gQlBGIHByb2dyYW1zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZhYmFhMTg0NGM4YTg2ZTYwNTM5YTNhMmY3YTI1Y2E0NGI4NDJiYTNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDIzOjI2OjE4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZmlsdGVyLmMgYi9uZXQvY29yZS9maWx0ZXIuY1xuaW5kZXggNjllYzFhNGMwZjlkYTEuLmEwZmNhZmIwOGI5Njg1IDEwMDY0NFxuLS0tIGEvbmV0L2NvcmUvZmlsdGVyLmNcbisrKyBiL25ldC9jb3JlL2ZpbHRlci5jXG5AQCAtMTI2NjUsNiArMTI2NjUsOSBAQCBfX2JwZl9rZnVuYyBpbnQgYnBmX3NvY2tfZGVzdHJveShzdHJ1Y3Qgc29ja19jb21tb24gKnNvY2spXG4ge1xuIFx0c3RydWN0IHNvY2sgKnNrID0gKHN0cnVjdCBzb2NrICopc29jaztcbiBcbitcdGlmICghc2tfZnVsbHNvY2soc2spKVxuK1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4rXG4gXHQvKiBUaGUgbG9ja2luZyBzZW1hbnRpY3MgdGhhdCBhbGxvdyBmb3Igc3luY2hyb25vdXMgZXhlY3V0aW9uIG9mIHRoZVxuIFx0ICogZGVzdHJveSBoYW5kbGVycyBhcmUgb25seSBzdXBwb3J0ZWQgZm9yIFRDUCBhbmQgVURQLlxuIFx0ICogU3VwcG9ydGluZyBwcm90b2NvbHMgd2lsbCBuZWVkIHRvIGFjcXVpcmUgc29jayBsb2NrIGluIHRoZSBCUEYgY29udGV4dFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjM6MjY6MTkuNTU3NjAxNTc1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUzMjA2MzY2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246XG5cbioqQW5hbHl6aW5nIGEgTmV0d29yayBGaWx0ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyBtYWtpbmcgYSBjaGFuZ2UgdG8gYG5ldC9jb3JlL2ZpbHRlci5jYCwgc3BlY2lmaWNhbGx5IGltcGFjdGluZyB0aGUgYGJwZl9zb2NrX2Rlc3Ryb3lgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiAqd2h5KiB0aGlzIGNoYW5nZSBpcyBiZWluZyBtYWRlLiBUaGUgaW50cm9kdWN0aW9uIG9mIHRoaXMgYGlmICghc2tfZnVsbHNvY2soc2spKSByZXR1cm4gLUVPUE5PVFNVUFA7YCBjaGVjayBpcyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZy4gVGhpcyBzdWdnZXN0cyB0aGV5J3JlIHRyeWluZyB0byByZXN0cmljdCB0aGUgYmVoYXZpb3Igb2YgYGJwZl9zb2NrX2Rlc3Ryb3lgIGJhc2VkIG9uIHRoZSBzb2NrZXQgdHlwZS5cblxuTGV0IG1lIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQgYGJwZl9zb2NrX2Rlc3Ryb3lgIGlzICpzdXBwb3NlZCogdG8gZG8uIEl0J3MgbGlrZWx5IGludm9sdmVkIGluIGNsZWFuaW5nIHVwIEJQRi1yZWxhdGVkIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggYSBzb2NrZXQgd2hlbiB0aGUgc29ja2V0IGlzIGNsb3NlZCBvciBkZXN0cm95ZWQuIFRoZSBhZGRpdGlvbiBvZiBgc2tfZnVsbHNvY2tgIG1lYW5zIHdlIGFyZSBub3cgb25seSBoYW5kbGluZyBjZXJ0YWluIGtpbmRzIG9mIHNvY2tldHMuIFRoZSBgc2tfZnVsbHNvY2tgIG1hY3JvIHByb2JhYmx5IGluZGljYXRlcyB0aGF0IHdlIGFyZSBkZWFsaW5nIHdpdGggYSBmdWxsIHNvY2tldCwgYXMgb3Bwb3NlZCB0byBhIFwiaGFsZi1vcGVuXCIgb3IgaW5jb21wbGV0ZSBzb2NrZXQuIFRoZSBgLUVPUE5PVFNVUFBgIGVycm9yIGlzIGNsZWFyOyBpdCBpbmRpY2F0ZXMgdGhhdCB0aGUgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRoYXQgc29ja2V0IHR5cGUuIFRoaXMgaXMgdGhlIGNydXggb2YgdGhlIHBhdGNoOyB0aGUgZGV2ZWxvcGVycyBoYXZlIGRlY2lkZWQgdGhhdCBgYnBmX3NvY2tfZGVzdHJveWAgaXNuJ3QgcmVsZXZhbnQgb3Igc2FmZSB0byBvcGVyYXRlIG9uIGEgY2VydGFpbiBzZXQgb2Ygc29ja2V0cy4gU28sIG15IG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHRoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgZGVjaXNpb24uIFdoYXQgdHlwZXMgb2Ygc29ja2V0cyBhcmUgKm5vdCogYGZ1bGxzb2NrYD8gVGhhdCBpcyB3aGF0IHRoZSBwYXRjaCBpcyBsaW1pdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgyOSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjM6MjY6MjMuMDg5NjY3NDMyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MzM4OTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9zb2NrX2Rlc3Ryb3lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NvcmUvZmlsdGVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NvcmUvZmlsdGVyLmM9MTI2NDY9X19icGZfa2Z1bmNfc3RhcnRfZGVmcygpO1xcbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjQ3LVxcbm5ldC9jb3JlL2ZpbHRlci5jOjEyNjQ4Oi8qIGJwZl9zb2NrX2Rlc3Ryb3k6IERlc3Ryb3kgdGhlIGdpdmVuIHNvY2tldCB3aXRoIEVDT05OQUJPUlRFRCBlcnJvciBjb2RlLlxcbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjQ5LSAqXFxuLS1cXG5uZXQvY29yZS9maWx0ZXIuYy0xMjY2My0gKi9cXG5uZXQvY29yZS9maWx0ZXIuYzoxMjY2NDpfX2JwZl9rZnVuYyBpbnQgYnBmX3NvY2tfZGVzdHJveShzdHJ1Y3Qgc29ja19jb21tb24gKnNvY2spXFxubmV0L2NvcmUvZmlsdGVyLmMtMTI2NjUte1xcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmM9MTI2ODU9QlRGX0tGVU5DU19TVEFSVChicGZfc2tfaXRlcl9rZnVuY19pZHMpXFxubmV0L2NvcmUvZmlsdGVyLmM6MTI2ODY6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zb2NrX2Rlc3Ryb3kpXFxubmV0L2NvcmUvZmlsdGVyLmMtMTI2ODctQlRGX0tGVU5DU19FTkQoYnBmX3NrX2l0ZXJfa2Z1bmNfaWRzKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMzoyNjoyMy4xNDYwMTQ5NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE5NzY3MzU0Mjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEJQRiBLZXJuZWwgRnVuY3Rpb24gTW9kaWZpY2F0aW9uKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgYnBmX3NvY2tfZGVzdHJveWAsIHNwZWNpZmljYWxseSBhIEJQRiBrZnVuYy4gVGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIFRoZSBjb3JlIGNoYW5nZSBpcyB0aGUgYWRkaXRpb24gb2YgdGhpcyBgaWYgKCFza19mdWxsc29jayhzaykpIHJldHVybiAtRU9QTk9UU1VQUDtgIGNoZWNrLiBUaGF04oCZcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHByZXR0eSBjbGVhciByZXN0cmljdGlvbiBiZWluZyBpbnRyb2R1Y2VkLiBHaXZlbiB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgYSBCUEYga2Z1bmMsIG1lYW5pbmcgaXQncyBjYWxsYWJsZSBkaXJlY3RseSBmcm9tIEJQRiBwcm9ncmFtcywgdGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2ssIGVzcGVjaWFsbHkgZm9yIHBvdGVudGlhbCBmdXp6aW5nIHRhcmdldHMuXG5cbk15IG5leHQgdGhvdWdodCBpcyB0byBpZGVudGlmeSBhbnkgcHJlcmVxdWlzaXRlIGNvbmZpZ3VyYXRpb25zLiBJIHJlbWVtYmVyIGZyb20gZXhwZXJpZW5jZSB0aGF0IGBuZXQvY29yZS9maWx0ZXIuY2AgaXMgaW52b2x2ZWQgaGVyZSwgYW5kIHRoYXQgZ2V0cyBjb21waWxlZCB3aGVuIGBDT05GSUdfTkVUYCBpcyBzZXQsIG9idmlvdXNseS4gVGhlbiwgQlBGIGhhcyB0byBiZSBlbmFibGVkIGluIG9yZGVyIGZvciBCUEYga2Z1bmNzIHRvIGV2ZW4gKmV4aXN0Ki4gVGhhdCdzIGBDT05GSUdfQlBGX1NZU0NBTExgLiBJJ2xsIHdhbnQgdG8gZG91YmxlLWNoZWNrIGBuZXQvY29yZS9NYWtlZmlsZWAgdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzIGZvciBgZmlsdGVyLmNgLCBqdXN0IHRvIGJlIGNlcnRhaW4uIEkgd2FudCB0byBtYWtlIHN1cmUgSSdtIHRlc3RpbmcgaW4gYW4gZW52aXJvbm1lbnQgdGhhdCByZWZsZWN0cyB0aGUgYWN0dWFsIHN0YXRlIG9mIHRoZSBrZXJuZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NDMsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjM6MjY6NDIuOTEzMzcxMzE3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MjU0ODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZpbHRlci5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL01ha2VmaWxlPTEyPW9iai15XFx0XFx0ICAgICArPSBkZXYubyBkZXZfYXBpLm8gZGV2X2FkZHJfbGlzdHMubyBkc3QubyBuZXRldmVudC5vIFxcXFxcXG5uZXQvY29yZS9NYWtlZmlsZToxMzpcXHRcXHRcXHRuZWlnaGJvdXIubyBydG5ldGxpbmsubyB1dGlscy5vIGxpbmtfd2F0Y2gubyBmaWx0ZXIubyBcXFxcXFxubmV0L2NvcmUvTWFrZWZpbGUtMTQtXFx0XFx0XFx0c29ja19kaWFnLm8gZGV2X2lvY3RsLm8gdHNvLm8gc29ja19yZXVzZXBvcnQubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIzOjI2OjQyLjk3MTYzMTA1NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4OTczMDI5NTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QgaGVyZS5cblxuKipBbmFseXppbmcgQnVpbGQgRGVwZW5kZW5jaWVzIGFuZCBGdW5jdGlvbiBEZWZpbml0aW9ucyoqXG5cbkFscmlnaHQsIHNvIGBmaWx0ZXIub2AgaXMgKmFsd2F5cyogYnVpbHQgd2hlbiBgQ09ORklHX05FVGAgaXMgZW5hYmxlZC4gVGhhdCdzIGEgZ2l2ZW4uIE5vdywgSSdtIHRyeWluZyB0byB1bmRlcnN0YW5kIHRoZSBkZWZpbml0aW9uIG9mIGBicGZfc29ja19kZXN0cm95YC4gVGhlIGRvY3VtZW50YXRpb24gc2F5cyBpdCdzIGRlZmluZWQgd2l0aGluIGBfX2JwZl9rZnVuY19zdGFydF9kZWZzKClgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgYXJlIHRoZXJlIGFueSBjb25kaXRpb25hbCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcywgYCNpZmRlZmBzLCBzdXJyb3VuZGluZyB0aGF0IGZ1bmN0aW9uIGRlZmluaXRpb24gd2l0aGluIHRoYXQgbWFjcm8/IEFyZSB3ZSBvbmx5IHNlZWluZyB0aGlzIGZ1bmN0aW9uIGRlZmluZWQgdW5kZXIgc3BlY2lmaWMgY29tcGlsYXRpb24gc2NlbmFyaW9zLCBvciBpcyBpdCBhbHdheXMgcHJlc2VudCB3aXRoIHRoZSBtYWNybz8gSSBuZWVkIHRvIGNoZWNrIGZvciBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdGhhdCBtaWdodCBhZmZlY3QgdGhlIGF2YWlsYWJpbGl0eSBvciBiZWhhdmlvciBvZiB0aGF0IGZ1bmN0aW9uLiBMZXQncyBkaWcgZGVlcGVyIGFuZCBzZWUgd2hhdCB0aGF0IG1hY3JvIGV4cGFuc2lvbiByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDk2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjM6Mjc6MDEuOTQ0NjYyMjUxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMjkwNjg2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfc29ja19kZXN0cm95XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL2ZpbHRlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL2ZpbHRlci5jPTEyNjQ2PV9fYnBmX2tmdW5jX3N0YXJ0X2RlZnMoKTtcXG5uZXQvY29yZS9maWx0ZXIuYy0xMjY0Ny1cXG5uZXQvY29yZS9maWx0ZXIuYzoxMjY0ODovKiBicGZfc29ja19kZXN0cm95OiBEZXN0cm95IHRoZSBnaXZlbiBzb2NrZXQgd2l0aCBFQ09OTkFCT1JURUQgZXJyb3IgY29kZS5cXG5uZXQvY29yZS9maWx0ZXIuYy0xMjY0OS0gKlxcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmMtMTI2NjMtICovXFxubmV0L2NvcmUvZmlsdGVyLmM6MTI2NjQ6X19icGZfa2Z1bmMgaW50IGJwZl9zb2NrX2Rlc3Ryb3koc3RydWN0IHNvY2tfY29tbW9uICpzb2NrKVxcbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjY1LXtcXG4tLVxcbm5ldC9jb3JlL2ZpbHRlci5jPTEyNjg1PUJURl9LRlVOQ1NfU1RBUlQoYnBmX3NrX2l0ZXJfa2Z1bmNfaWRzKVxcbm5ldC9jb3JlL2ZpbHRlci5jOjEyNjg2OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfc29ja19kZXN0cm95KVxcbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjg3LUJURl9LRlVOQ1NfRU5EKGJwZl9za19pdGVyX2tmdW5jX2lkcylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjM6Mjc6MDIuMTQ3NTc0OTM0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA2NTU5NDgwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gcmVhZGluZyBhbmQgcHJvY2Vzc2luZyB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb246XG5cbioqQW5hbHl6aW5nIGBuZXQvY29yZS9maWx0ZXIuY2AgQXJvdW5kIExpbmUgMTI2NjQqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSSdtIGdvaW5nIHRvIHB1bGwgdXAgYG5ldC9jb3JlL2ZpbHRlci5jYCBhbmQgemVybyBpbiBvbiByb3VnaGx5IGxpbmUgMTI2NjQuIEknbSBleHBlY3Rpbmcgc29tZXRoaW5nIGNyaXRpY2FsIGhlcmUsIGdpdmVuIHRoYXQgaXQncyBiZWVuIHNwZWNpZmllZCB3aXRoIHN1Y2ggcHJlY2lzaW9uLiBUaGlzIGxpa2VseSBpbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBpcyBpbnRlcmVzdGVkIGluIGEgc3BlY2lmaWMgcGFydCBvZiB0aGUgY29kZSwgbWF5YmUgcmVsYXRlZCB0byBhIGtub3duIGlzc3VlLCBhIHJlY2VudCBjaGFuZ2UsIG9yIGEgcGFydGljdWxhciBmdW5jdGlvbmFsaXR5LiBJJ20gYW50aWNpcGF0aW5nIHRoYXQgdGhpcyBzZWN0aW9uIGlzIGVpdGhlciBhIHBvdGVudGlhbCBib3R0bGVuZWNrLCBhIGNvbXBsZXggcGllY2Ugb2YgbG9naWMsIG9yIHBlcmhhcHMgYW4gYXJlYSB3aGVyZSBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMgbWlnaHQgYmUgbHVya2luZy4gSSdtIHJlYWR5IHRvIGNhcmVmdWxseSBwYXJzZSB0aGUgY29kZSBhcm91bmQgdGhpcyBsaW5lLCBsb29raW5nIGZvciBhbnkgaW1tZWRpYXRlIHJlZCBmbGFncyBvciBpbnRlcmVzdGluZyBkZXNpZ24gY2hvaWNlcy4gTGV0J3Mgc2VlIHdoYXQncyBiZWluZyBkb25lLi4uIGFuZCBkZXRlcm1pbmUgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgdGhhdCBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjM4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjM6Mjc6MDUuMjEzMTcxNjU5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxNTc4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvY29yZS9maWx0ZXIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjY0MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTI2NDA6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZicGZfa2Z1bmNfc2V0X3NvY2tfYWRkcik7XFxuMTI2NDE6XFx0XFx0cmV0ID0gcmV0ID86IHJlZ2lzdGVyX2J0Zl9rZnVuY19pZF9zZXQoQlBGX1BST0dfVFlQRV9TQ0hFRF9DTFMsIFxcdTAwMjZicGZfa2Z1bmNfc2V0X3RjcF9yZXFzayk7XFxuMTI2NDI6XFx0XFx0cmV0dXJuIHJldCA/OiByZWdpc3Rlcl9idGZfa2Z1bmNfaWRfc2V0KEJQRl9QUk9HX1RZUEVfU09DS19PUFMsIFxcdTAwMjZicGZfa2Z1bmNfc2V0X3NvY2tfb3BzKTtcXG4xMjY0MzpcXHR9XFxuMTI2NDQ6XFx0bGF0ZV9pbml0Y2FsbChicGZfa2Z1bmNfaW5pdCk7XFxuMTI2NDU6XFx0XFxuMTI2NDY6XFx0X19icGZfa2Z1bmNfc3RhcnRfZGVmcygpO1xcbjEyNjQ3OlxcdFxcbjEyNjQ4OlxcdC8qIGJwZl9zb2NrX2Rlc3Ryb3k6IERlc3Ryb3kgdGhlIGdpdmVuIHNvY2tldCB3aXRoIEVDT05OQUJPUlRFRCBlcnJvciBjb2RlLlxcbjEyNjQ5OlxcdCAqXFxuMTI2NTA6XFx0ICogVGhlIGZ1bmN0aW9uIGV4cGVjdHMgYSBub24tTlVMTCBwb2ludGVyIHRvIGEgc29ja2V0LCBhbmQgaW52b2tlcyB0aGVcXG4xMjY1MTpcXHQgKiBwcm90b2NvbCBzcGVjaWZpYyBzb2NrZXQgZGVzdHJveSBoYW5kbGVycy5cXG4xMjY1MjpcXHQgKlxcbjEyNjUzOlxcdCAqIFRoZSBoZWxwZXIgY2FuIG9ubHkgYmUgY2FsbGVkIGZyb20gQlBGIGNvbnRleHRzIHRoYXQgaGF2ZSBhY3F1aXJlZCB0aGUgc29ja2V0XFxuMTI2NTQ6XFx0ICogbG9ja3MuXFxuMTI2NTU6XFx0ICpcXG4xMjY1NjpcXHQgKiBQYXJhbWV0ZXJzOlxcbjEyNjU3OlxcdCAqIEBzb2NrOiBQb2ludGVyIHRvIHNvY2tldCB0byBiZSBkZXN0cm95ZWRcXG4xMjY1ODpcXHQgKlxcbjEyNjU5OlxcdCAqIFJldHVybjpcXG4xMjY2MDpcXHQgKiBPbiBlcnJvciwgbWF5IHJldHVybiBFUFJPVE9OT1NVUFBPUlQsIEVJTlZBTC5cXG4xMjY2MTpcXHQgKiBFUFJPVE9OT1NVUFBPUlQgaWYgcHJvdG9jb2wgc3BlY2lmaWMgZGVzdHJveSBoYW5kbGVyIGlzIG5vdCBzdXBwb3J0ZWQuXFxuMTI2NjI6XFx0ICogMCBvdGhlcndpc2VcXG4xMjY2MzpcXHQgKi9cXG4xMjY2NDpcXHRfX2JwZl9rZnVuYyBpbnQgYnBmX3NvY2tfZGVzdHJveShzdHJ1Y3Qgc29ja19jb21tb24gKnNvY2spXFxuMTI2NjU6XFx0e1xcbjEyNjY2OlxcdFxcdHN0cnVjdCBzb2NrICpzayA9IChzdHJ1Y3Qgc29jayAqKXNvY2s7XFxuMTI2Njc6XFx0XFxuMTI2Njg6XFx0XFx0aWYgKCFza19mdWxsc29jayhzaykpXFxuMTI2Njk6XFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbjEyNjcwOlxcdFxcbjEyNjcxOlxcdFxcdC8qIFRoZSBsb2NraW5nIHNlbWFudGljcyB0aGF0IGFsbG93IGZvciBzeW5jaHJvbm91cyBleGVjdXRpb24gb2YgdGhlXFxuMTI2NzI6XFx0XFx0ICogZGVzdHJveSBoYW5kbGVycyBhcmUgb25seSBzdXBwb3J0ZWQgZm9yIFRDUCBhbmQgVURQLlxcbjEyNjczOlxcdFxcdCAqIFN1cHBvcnRpbmcgcHJvdG9jb2xzIHdpbGwgbmVlZCB0byBhY3F1aXJlIHNvY2sgbG9jayBpbiB0aGUgQlBGIGNvbnRleHRcXG4xMjY3NDpcXHRcXHQgKiBwcmlvciB0byBpbnZva2luZyB0aGlzIGtmdW5jLlxcbjEyNjc1OlxcdFxcdCAqL1xcbjEyNjc2OlxcdFxcdGlmICghc2stXFx1MDAzZXNrX3Byb3QtXFx1MDAzZWRpYWdfZGVzdHJveSB8fCAoc2stXFx1MDAzZXNrX3Byb3RvY29sICE9IElQUFJPVE9fVENQIFxcdTAwMjZcXHUwMDI2XFxuMTI2Nzc6XFx0XFx0XFx0XFx0XFx0XFx0ICAgc2stXFx1MDAzZXNrX3Byb3RvY29sICE9IElQUFJPVE9fVURQKSlcXG4xMjY3ODpcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuMTI2Nzk6XFx0XFxuMTI2ODA6XFx0XFx0cmV0dXJuIHNrLVxcdTAwM2Vza19wcm90LVxcdTAwM2VkaWFnX2Rlc3Ryb3koc2ssIEVDT05OQUJPUlRFRCk7XFxuMTI2ODE6XFx0fVxcbjEyNjgyOlxcdFxcbjEyNjgzOlxcdF9fYnBmX2tmdW5jX2VuZF9kZWZzKCk7XFxuMTI2ODQ6XFx0XFxuMTI2ODU6XFx0QlRGX0tGVU5DU19TVEFSVChicGZfc2tfaXRlcl9rZnVuY19pZHMpXFxuMTI2ODY6XFx0QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zb2NrX2Rlc3Ryb3kpXFxuMTI2ODc6XFx0QlRGX0tGVU5DU19FTkQoYnBmX3NrX2l0ZXJfa2Z1bmNfaWRzKVxcbjEyNjg4OlxcdFxcbjEyNjg5OlxcdHN0YXRpYyBpbnQgdHJhY2luZ19pdGVyX2ZpbHRlcihjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBrZnVuY19pZClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjM6Mjc6MDUuMjEzODk0OTQ4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3MjkyMzA1MjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gYGJwZl9zb2NrX2Rlc3Ryb3lgKipcblxuQWxyaWdodCwgc28gYGJwZl9zb2NrX2Rlc3Ryb3lgIGlzIGZsYWdnZWQgYXMgYSBCUEYga2Z1bmMuIEludGVyZXN0aW5nLCBzbyBpdCdzIGEga2VybmVsIGZ1bmN0aW9uIGFjY2Vzc2libGUgZnJvbSBhIEJQRiBwcm9ncmFtLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGVyZSdzIGl0ICpyZWdpc3RlcmVkKj9cIiBLbm93aW5nIHdoZXJlIGEga2Z1bmMgaXMgZGVmaW5lZCBhbmQgbWFkZSBhdmFpbGFibGUgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgaXRzIGNvbnRleHQuIExldCdzIHNlZS4uLiBpdCdzIGluIGBicGZfc2tfaXRlcl9rZnVuY19pZHNgLCBnb3QgaXQuIE5vdywgdGhhdCdzIGp1c3QgdGhlICpyZWdpc3RyYXRpb24qLCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGF0IHJlZ2lzdHJhdGlvbiBpcyAqdXNlZCouIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gYGJwZl9za19pdGVyX2tmdW5jX2lkc2AgYW5kIHNlZSB3aGF0J3MgYWN0dWFsbHkgbWFraW5nIHVzZSBvZiB0aGlzIGBicGZfc29ja19kZXN0cm95YC4gVGhhdCdsbCBiZSB3aGVyZSB0aGUgcmVhbCBhY3Rpb24gaXMuIFRpbWUgdG8gZGlnIGluIGFuZCBmaW5kIHRob3NlIGNhbGwgc2l0ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MDQsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIzOjI3OjIyLjUwNjIwMjAyOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE3MTU3OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX3NrX2l0ZXJfa2Z1bmNfaWRzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL2ZpbHRlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL2ZpbHRlci5jPTEyNjgzPV9fYnBmX2tmdW5jX2VuZF9kZWZzKCk7XFxubmV0L2NvcmUvZmlsdGVyLmMtMTI2ODQtXFxubmV0L2NvcmUvZmlsdGVyLmM6MTI2ODU6QlRGX0tGVU5DU19TVEFSVChicGZfc2tfaXRlcl9rZnVuY19pZHMpXFxubmV0L2NvcmUvZmlsdGVyLmMtMTI2ODYtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zb2NrX2Rlc3Ryb3kpXFxubmV0L2NvcmUvZmlsdGVyLmM6MTI2ODc6QlRGX0tGVU5DU19FTkQoYnBmX3NrX2l0ZXJfa2Z1bmNfaWRzKVxcbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjg4LVxcbm5ldC9jb3JlL2ZpbHRlci5jPTEyNjg5PXN0YXRpYyBpbnQgdHJhY2luZ19pdGVyX2ZpbHRlcihjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHUzMiBrZnVuY19pZClcXG5uZXQvY29yZS9maWx0ZXIuYy0xMjY5MC17XFxubmV0L2NvcmUvZmlsdGVyLmM6MTI2OTE6XFx0aWYgKGJ0Zl9pZF9zZXQ4X2NvbnRhaW5zKFxcdTAwMjZicGZfc2tfaXRlcl9rZnVuY19pZHMsIGtmdW5jX2lkKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjkyLVxcdCAgICBwcm9nLVxcdTAwM2VleHBlY3RlZF9hdHRhY2hfdHlwZSAhPSBCUEZfVFJBQ0VfSVRFUilcXG4tLVxcbm5ldC9jb3JlL2ZpbHRlci5jPTEyNjk3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnRmX2tmdW5jX2lkX3NldCBicGZfc2tfaXRlcl9rZnVuY19zZXQgPSB7XFxubmV0L2NvcmUvZmlsdGVyLmMtMTI2OTgtXFx0Lm93bmVyID0gVEhJU19NT0RVTEUsXFxubmV0L2NvcmUvZmlsdGVyLmM6MTI2OTk6XFx0LnNldCAgID0gXFx1MDAyNmJwZl9za19pdGVyX2tmdW5jX2lkcyxcXG5uZXQvY29yZS9maWx0ZXIuYy0xMjcwMC1cXHQuZmlsdGVyID0gdHJhY2luZ19pdGVyX2ZpbHRlcixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMjM6Mjc6MjIuNTc3OTIyMTI2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyMTM2NzA0MzM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgQlBGIFNvY2sgRGVzdHJveSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0J3MgZm9jdXNpbmcgb24gYGJwZl9zb2NrX2Rlc3Ryb3lgLCBzcGVjaWZpY2FsbHkgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBgQlBGX1RSQUNFX0lURVJgIG1lY2hhbmlzbSB3aGVuIGRlYWxpbmcgd2l0aCBzb2NrZXRzLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhZGRpbmcgYSBjaGVjazogYGlmICghc2tfZnVsbHNvY2soc2spKSByZXR1cm4gLUVPUE5PVFNVUFA7YC4gSSBpbW1lZGlhdGVseSBzZWUgdGhpcyBhcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhIHNwZWNpZmljIGF0dGVtcHQgdG8gYXZvaWQgY2FsbGluZyBgc2stXHUwMDNlc2tfcHJvdC1cdTAwM2VkaWFnX2Rlc3Ryb3lgIG9uIG5vbi1mdWxsIHNvY2tldHMuIFRoaXMgbWFrZXMgc2Vuc2U7IGl0J3MgYSBkZWZlbnNpdmUgbWVhc3VyZSwgbGlrZWx5IHRvIHByZXZlbnQgc29tZSBraW5kIG9mIGNyYXNoIG9yIHVuZGVmaW5lZCBiZWhhdmlvciBpbiB0aGUga2VybmVsLlxuXG5HaXZlbiB0aGlzLCBteSBleHBlcnQgaW50dWl0aW9uIHRlbGxzIG1lIHRoaXMgKmRlZmluaXRlbHkqIHdhcnJhbnRzIGZ1enppbmcuIFRoZSBjaGFuZ2UgaXMgc3BlY2lmaWMsIGZvY3VzZWQsIGFuZCBoYXMgdGhlIHBvdGVudGlhbCB0byBpbXBhY3QgYSB2YXJpZXR5IG9mIHNvY2tldCBzdGF0ZXMuIFRoZSBmYWN0IHRoYXQgYGJwZl9zb2NrX2Rlc3Ryb3lgIGlzIHJlYWNoYWJsZSB0aHJvdWdoIEJQRiBwcm9ncmFtcyBqdXN0IGluY3JlYXNlcyB0aGUgYXR0YWNrIHN1cmZhY2UsIGluIG15IG1pbmQuXG5cbk15IG5leHQgc3RlcCBpcyB0byBuYWlsIGRvd24gdGhlIGVzc2VudGlhbCBjb25maWd1cmF0aW9ucyB0aGF0IG5lZWQgdG8gYmUgaW4gcGxhY2UuIGBCUEZfU1lTQ0FMTGAgaXMgcHJldHR5IHN0YW5kYXJkLCBidXQgSSB3YW50IHRvIG1ha2Ugc3VyZSBJJ20gZXhwbGljaXRseSBpbmNsdWRpbmcgaXQuIGBDT05GSUdfTkVUYCBpcyBsaWtlbHkgYSBnaXZlbiwgYnV0IEknbGwgbWFrZSBzdXJlIGl0J3MgcHJlc2VudC4gVGhlIG1haW4gZm9jdXMgaXMgdG8gY29uZmlybSBpZiBgYnBmX3NvY2tfZGVzdHJveWAgaXRzZWxmIG1pZ2h0IGJlIGJlaGluZCBhbnkgc3BlY2lmaWMgY29uZmlnIGZsYWdzIHRoYXQgSSdtIG92ZXJsb29raW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTMyLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDIzOjI3OjQ0LjcxNDYyODE0M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA3OTYwMzEyMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfc29ja19kZXN0cm95XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9maWx0ZXIuYz0xMjY0Nj1fX2JwZl9rZnVuY19zdGFydF9kZWZzKCk7XFxubmV0L2NvcmUvZmlsdGVyLmMtMTI2NDctXFxubmV0L2NvcmUvZmlsdGVyLmM6MTI2NDg6LyogYnBmX3NvY2tfZGVzdHJveTogRGVzdHJveSB0aGUgZ2l2ZW4gc29ja2V0IHdpdGggRUNPTk5BQk9SVEVEIGVycm9yIGNvZGUuXFxubmV0L2NvcmUvZmlsdGVyLmMtMTI2NDktICpcXG4tLVxcbm5ldC9jb3JlL2ZpbHRlci5jLTEyNjYzLSAqL1xcbm5ldC9jb3JlL2ZpbHRlci5jOjEyNjY0Ol9fYnBmX2tmdW5jIGludCBicGZfc29ja19kZXN0cm95KHN0cnVjdCBzb2NrX2NvbW1vbiAqc29jaylcXG5uZXQvY29yZS9maWx0ZXIuYy0xMjY2NS17XFxuLS1cXG5uZXQvY29yZS9maWx0ZXIuYz0xMjY4NT1CVEZfS0ZVTkNTX1NUQVJUKGJwZl9za19pdGVyX2tmdW5jX2lkcylcXG5uZXQvY29yZS9maWx0ZXIuYzoxMjY4NjpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3NvY2tfZGVzdHJveSlcXG5uZXQvY29yZS9maWx0ZXIuYy0xMjY4Ny1CVEZfS0ZVTkNTX0VORChicGZfc2tfaXRlcl9rZnVuY19pZHMpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2cuYz05PV9fYmUxNiBzZXJ2X3BvcnQgPSAwO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZy5jLTEwLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZy5jOjExOmludCBicGZfc29ja19kZXN0cm95KHN0cnVjdCBzb2NrX2NvbW1vbiAqc2spIF9fa3N5bTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2cuYy0xMi1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZy5jPTQ5PWludCBpdGVyX3RjcDZfY2xpZW50KHN0cnVjdCBicGZfaXRlcl9fdGNwICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2cuYy02Ny1cXHRpZiAoc29ja19jb29raWUgPT0gKnZhbClcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2cuYzo2ODpcXHRcXHRicGZfc29ja19kZXN0cm95KHNrX2NvbW1vbik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmMtNjktXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2cuYz03ND1pbnQgaXRlcl90Y3A2X3NlcnZlcihzdHJ1Y3QgYnBmX2l0ZXJfX3RjcCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmMtOTctXFx0aWYgKHNyY3AgPT0gc2Vydl9wb3J0KVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZy5jOjk4OlxcdFxcdGJwZl9zb2NrX2Rlc3Ryb3koc2tfY29tbW9uKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2cuYy05OS1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZy5jPTEwNT1pbnQgaXRlcl91ZHA2X2NsaWVudChzdHJ1Y3QgYnBmX2l0ZXJfX3VkcCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmMtMTIwLVxcdGlmIChzb2NrX2Nvb2tpZSA9PSAqdmFsKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZy5jOjEyMTpcXHRcXHRicGZfc29ja19kZXN0cm95KChzdHJ1Y3Qgc29ja19jb21tb24gKilzayk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmMtMTIyLVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmM9MTI3PWludCBpdGVyX3VkcDZfc2VydmVyKHN0cnVjdCBicGZfaXRlcl9fdWRwICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2cuYy0xMzktXFx0aWYgKHNyY3AgPT0gc2Vydl9wb3J0KVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZy5jOjE0MDpcXHRcXHRicGZfc29ja19kZXN0cm95KChzdHJ1Y3Qgc29ja19jb21tb24gKilzayk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nLmMtMTQxLVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nX2ZhaWwuYz05PWNoYXIgX2xpY2Vuc2VbXSBTRUMoXFxcImxpY2Vuc2VcXFwiKSA9IFxcXCJHUExcXFwiO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZ19mYWlsLmMtMTAtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nX2ZhaWwuYzoxMTppbnQgYnBmX3NvY2tfZGVzdHJveShzdHJ1Y3Qgc29ja19jb21tb24gKnNrKSBfX2tzeW07XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3NvY2tfZGVzdHJveV9wcm9nX2ZhaWwuYy0xMi1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2dfZmFpbC5jPTEzPVNFQyhcXFwidHBfYnRmL3RjcF9kZXN0cm95X3NvY2tcXFwiKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZ19mYWlsLmM6MTQ6X19mYWlsdXJlIF9fbXNnKFxcXCJjYWxsaW5nIGtlcm5lbCBmdW5jdGlvbiBicGZfc29ja19kZXN0cm95IGlzIG5vdCBhbGxvd2VkXFxcIilcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2dfZmFpbC5jLTE1LWludCBCUEZfUFJPRyh0cmFjZV90Y3BfZGVzdHJveV9zb2NrLCBzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19kZXN0cm95X3Byb2dfZmFpbC5jLTE3LVxcdC8qIHNob3VsZCBub3QgbG9hZCAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZ19mYWlsLmM6MTg6XFx0YnBmX3NvY2tfZGVzdHJveSgoc3RydWN0IHNvY2tfY29tbW9uICopc2spO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2Rlc3Ryb3lfcHJvZ19mYWlsLmMtMTktXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19pdGVyX2JhdGNoLmM9NzY9aW50IGl0ZXJfdGNwX2Rlc3Ryb3koc3RydWN0IGJwZl9pdGVyX190Y3AgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2l0ZXJfYmF0Y2guYy04Ny1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc29ja19pdGVyX2JhdGNoLmM6ODg6XFx0YnBmX3NvY2tfZGVzdHJveShza19jb21tb24pO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zb2NrX2l0ZXJfYmF0Y2guYy04OS1cXHRicGZfc2VxX3dyaXRlKGN0eC1cXHUwMDNlbWV0YS1cXHUwMDNlc2VxLCBcXHUwMDI2c29ja19jb29raWUsIHNpemVvZihzb2NrX2Nvb2tpZSkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMzoyNzo0Ni43OTQyMzYzMDVaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjI2MDgyODM4NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGJwZl9zb2NrX2Rlc3Ryb3lgIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCByZWxhdGVkIHRvIGBicGZfc29ja19kZXN0cm95YCwgd2hpY2gsIGFzIGEgQlBGIGtmdW5jLCBpcyBwcmV0dHkgaW50ZXJlc3RpbmcuIEZpcnN0IG9mZiwgaXQncyBwcmV0dHkgY2xlYXIgdGhhdCBpdCByZWxpZXMgb24gYENPTkZJR19CUEZfU1lTQ0FMTGAgYmVpbmcgZW5hYmxlZCwgd2hpY2ggaXMgc3RhbmRhcmQgZm9yIG1vc3QgQlBGLXJlbGF0ZWQgc3R1ZmYuIEFuZCBpdCBsaXZlcyBpbiBgbmV0L2NvcmUvZmlsdGVyLmNgLCBwYXJ0IG9mIHRoZSBgbmV0YCBzdWJzeXN0ZW0gdGhhdCdzIGJ1aWx0IHdpdGggYENPTkZJR19ORVRgLiBObyBzdXJwcmlzZXMgdGhlcmUuXG5cblRoZSBjb3JlIG9mIHRoZSBwYXRjaCBpbnZvbHZlcyBhZGRpbmcgYSBjaGVjayBmb3IgYHNrX2Z1bGxzb2NrKHNrKWAgYmVmb3JlIGNhbGxpbmcgYHNrLVx1MDAzZXNrX3Byb3QtXHUwMDNlZGlhZ19kZXN0cm95YC4gVGhpcyBpcyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UsIGFuZCBpdCdzIGEgZ29vZCBvbmUuIEl0J3MgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBjcmFzaCBvciB1bmRlZmluZWQgYmVoYXZpb3Igd2hlbiBgYnBmX3NvY2tfZGVzdHJveWAgaXMgY2FsbGVkIG9uIHNvbWV0aGluZyBsaWtlIGEgcmVxdWVzdCBzb2NrZXQgb3IgYSB0aW1ld2FpdCBzb2NrZXQsIHdoaWNoIGFyZW4ndCBuZWNlc3NhcmlseSBmdWxsIHNvY2tldHMuIFRoYXQncyBhIGNsYXNzaWMgaXNzdWUg4oCTIGhhbmRsaW5nIHJlc291cmNlIG1hbmFnZW1lbnQgYW5kIGxpZmVjeWNsZSBjb3JyZWN0bHkgaW4gdGhlIG5ldHdvcmsgc3RhY2sgaXMgYWx3YXlzIHRyaWNreS5cblxuR2l2ZW4gdGhhdCBpdCBpcyBhbiBpbXBvcnRhbnQgZnVuY3Rpb25hbCBjaGFuZ2UsIEkgYW0gc3VyZSB0aGlzIHdvdWxkIGJlIGdvb2QgdG8gZnV6eiwgYW5kIEkgd291bGQgd2FudCB0byBlbnN1cmUgaXQgaXMuXG5cblRoZSByZWxldmFudCBzeW1ib2wgaXMgY2xlYXJseSBgYnBmX3NvY2tfZGVzdHJveWAuIEJleW9uZCB0aGF0LCBJIG5lZWQgdG8gY2hlY2sgZm9yIGFueSBvdGhlciBkZXBlbmRlbmNpZXMsIGJleW9uZCBgQlBGX1NZU0NBTExgLCB0aGF0IG11c3QgYmUgZW5hYmxlZC4gSSBrbm93IGBicGZfc29ja19kZXN0cm95YCBpcyBhbHNvIGF2YWlsYWJsZSBmb3IgdXNlIGluIGBCUEZfVFJBQ0VfSVRFUmAgcHJvZ3JhbXMsIHdoaWNoIG1ha2VzIHNlbnNlLiBgQlBGX1RSQUNFX0lURVJgIGlzIGl0c2VsZiBsaW5rZWQgdG8gYENPTkZJR19CUEZfU1lTQ0FMTGAuIEkgZG9uJ3Qgc2VlIGFueSBvdGhlciBjb25maWcgb3B0aW9ucyB0aGF0IGFyZSBuZWVkZWQsIGFuZCBJJ20gY29uZmlkZW50IGFib3V0IHRoYXQuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHdoYXQgdGhlIG91dGNvbWUgc2hvdWxkIGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjE2LCJPdXRwdXRUb2tlbnMiOjEwNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQyMzoyODowOS40MDI1MjIzNTVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODA1MjM2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfc29ja19kZXN0cm95XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIGBicGZfc29ja19kZXN0cm95YCB0byBlbnN1cmUgaXQgaXMgb25seSBjYWxsZWQgb24gZnVsbCBzb2NrZXRzLCBwcmV2ZW50aW5nIHBvdGVudGlhbCBjcmFzaGVzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3Igd2hlbiBjYWxsZWQgb24gcmVxdWVzdCBvciB0aW1ld2FpdCBzb2NrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBCUEYga2Z1bmMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSBCUEYgcHJvZ3JhbXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfc29ja19kZXN0cm95XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIHRvIGBicGZfc29ja19kZXN0cm95YCB0byBlbnN1cmUgaXQgaXMgb25seSBjYWxsZWQgb24gZnVsbCBzb2NrZXRzLCBwcmV2ZW50aW5nIHBvdGVudGlhbCBjcmFzaGVzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3Igd2hlbiBjYWxsZWQgb24gcmVxdWVzdCBvciB0aW1ld2FpdCBzb2NrZXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBCUEYga2Z1bmMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSBCUEYgcHJvZ3JhbXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowkz6pv[1] Phase: Succeeded StartedAt: 2026-07-02 23:28:20 +0000 UTC FinishedAt: 2026-07-02 23:28:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkz6pv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-02 23:28:20 +0000 UTC FinishedAt: 2026-07-02 23:28:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkz6pv[2] Phase: Succeeded StartedAt: 2026-07-02 23:28:20 +0000 UTC FinishedAt: 2026-07-03 03:48:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-02 23:28:20 +0000 UTC FinishedAt: 2026-07-03 03:48:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-02 23:28:20 +0000 UTC FinishedAt: 2026-07-02 23:28:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-02 23:28:20 +0000 UTC FinishedAt: 2026-07-02 23:28:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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-workflowkz6pv/series-workflowkz6pv-convert-artifact-641238516/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-02 23:28:31 +0000 UTC FinishedAt: 2026-07-02 23:56:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-02 23:28:31 +0000 UTC FinishedAt: 2026-07-02 23:56:23 +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:*aab49d9c-3635-486c-9b01-4f52b38d120e,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-workflowkz6pv/series-workflowkz6pv-convert-artifact-641238516/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": "34c29b6d-9e7b-452f-a3b5-1d7718a57d9c", "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-workflowkz6pv/series-workflowkz6pv-build-action-534932210/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-02 23:28:31 +0000 UTC FinishedAt: 2026-07-02 23:55:40 +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:*aab49d9c-3635-486c-9b01-4f52b38d120e,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-workflowkz6pv/series-workflowkz6pv-convert-artifact-641238516/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": "34c29b6d-9e7b-452f-a3b5-1d7718a57d9c", "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-workflowkz6pv/series-workflowkz6pv-build-action-534932210/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-02 23:56:23 +0000 UTC FinishedAt: 2026-07-02 23:56:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-02 23:56:23 +0000 UTC FinishedAt: 2026-07-02 23:56:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-02 23:56:23 +0000 UTC FinishedAt: 2026-07-02 23:56:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-02 23:56:23 +0000 UTC FinishedAt: 2026-07-02 23:56:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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-workflowkz6pv/series-workflowkz6pv-convert-artifact-3476240819/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-02 23:56:33 +0000 UTC FinishedAt: 2026-07-02 23:58:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-02 23:56:33 +0000 UTC FinishedAt: 2026-07-02 23:58:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*34c29b6d-9e7b-452f-a3b5-1d7718a57d9c,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-workflowkz6pv/series-workflowkz6pv-build-action-534932210/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-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-02 23:58:46 +0000 UTC FinishedAt: 2026-07-02 23:58:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-02 23:58:46 +0000 UTC FinishedAt: 2026-07-02 23:58:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-02 23:58:46 +0000 UTC FinishedAt: 2026-07-03 00:41:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-02 23:58:46 +0000 UTC FinishedAt: 2026-07-03 00:41:12 +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:*aab49d9c-3635-486c-9b01-4f52b38d120e,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-workflowkz6pv/series-workflowkz6pv-convert-artifact-3476240819/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": "d1a1867b-170b-4aa5-9780-624a8cbd0102", "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-workflowkz6pv/series-workflowkz6pv-build-action-2132034151/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-02 23:58:46 +0000 UTC FinishedAt: 2026-07-03 00:41:02 +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:*aab49d9c-3635-486c-9b01-4f52b38d120e,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-workflowkz6pv/series-workflowkz6pv-convert-artifact-3476240819/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": "d1a1867b-170b-4aa5-9780-624a8cbd0102", "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-workflowkz6pv/series-workflowkz6pv-build-action-2132034151/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-03 00:41:12 +0000 UTC FinishedAt: 2026-07-03 00:41:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-03 00:41:12 +0000 UTC FinishedAt: 2026-07-03 00:41:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-03 00:41:12 +0000 UTC FinishedAt: 2026-07-03 00:43:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-03 00:41:12 +0000 UTC FinishedAt: 2026-07-03 00:43:19 +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:*d1a1867b-170b-4aa5-9780-624a8cbd0102,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-workflowkz6pv/series-workflowkz6pv-build-action-2132034151/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-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-03 00:43:29 +0000 UTC FinishedAt: 2026-07-03 03:48:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-03 00:43:29 +0000 UTC FinishedAt: 2026-07-03 03:48:55 +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_sock_destroy"],"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:*34c29b6d-9e7b-452f-a3b5-1d7718a57d9c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d1a1867b-170b-4aa5-9780-624a8cbd0102,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-workflowkz6pv/series-workflowkz6pv-build-action-534932210/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-workflowkz6pv/series-workflowkz6pv-build-action-2132034151/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-03 00:43:29 +0000 UTC FinishedAt: 2026-07-03 00:43:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-03 00:43:29 +0000 UTC FinishedAt: 2026-07-03 00:43:36 +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_sock_destroy"],"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-workflowkz6pv/series-workflowkz6pv-convert-artifact-4141535916/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-03 00:43:29 +0000 UTC FinishedAt: 2026-07-03 00:43:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-03 00:43:29 +0000 UTC FinishedAt: 2026-07-03 00:43:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-03 00:43:30 +0000 UTC FinishedAt: 2026-07-03 00:43:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-03 00:43:40 +0000 UTC FinishedAt: 2026-07-03 03:48:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkz6pv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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_sock_destroy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8c04c1292dca29a57ea82c6a44348be49749fc22","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"7d016b85-98e5-49c9-8d33-afb5bbcc6f70","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-03 00:43:40 +0000 UTC FinishedAt: 2026-07-03 03:48:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*34c29b6d-9e7b-452f-a3b5-1d7718a57d9c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d1a1867b-170b-4aa5-9780-624a8cbd0102,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-workflowkz6pv/series-workflowkz6pv-build-action-534932210/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-workflowkz6pv/series-workflowkz6pv-build-action-2132034151/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-workflowkz6pv/series-workflowkz6pv-convert-artifact-4141535916/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,}