Name: series-workflow9dbf7 Phase: Succeeded StartedAt: 2026-06-25 01:39:19 +0000 UTC FinishedAt: 2026-06-25 05:54:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9dbf7[0] Phase: Succeeded StartedAt: 2026-06-25 01:39:19 +0000 UTC FinishedAt: 2026-06-25 01:53:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9dbf7[0].run-triage Phase: Succeeded StartedAt: 2026-06-25 01:39:19 +0000 UTC FinishedAt: 2026-06-25 01:53:31 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6", "IPV6_MULTIPLE_TABLES" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6", "IPV6_MULTIPLE_TABLES" ], "series_id": "44b23987-7fd2-4644-ab30-cbf2a029cf40" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "inet6_dump_fib" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDAxOjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OywKICAgICYjMzQ7SVBWNl9NVUxUSVBMRV9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpbmV0Nl9kdW1wX2ZpYiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaXRlcmF0aW9uIGxvZ2ljIGluIGBpbmV0Nl9kdW1wX2ZpYmAgZm9yIElQdjYgRklCIG5ldGxpbmsgZHVtcHMuIEl0IHN3aXRjaGVzIGZyb20gdXNpbmcgYW4gaW5kZXggdG8gdXNpbmcgdGhlIHRhYmxlIElEIHRvIHJlc3VtZSBkdW1wcywgd2hpY2ggZml4ZXMgcG90ZW50aWFsIGlzc3VlcyB3aGVuIHJvdXRpbmcgdGFibGVzIGFyZSBhZGRlZCBvciByZW1vdmVkIGR1cmluZyBhIG11bHRpcGFydCBuZXRsaW5rIGR1bXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDE6NDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwMmVhZWZkMjgyNmU0ZDQ3NGQzZDJiMzIzMjkwYWU4ZTBiY2M1MjRlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdW4gMjUgMDE6NDk6MDMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2X2ZpYi5jIGIvbmV0L2lwdjYvaXA2X2ZpYi5jXG5pbmRleCBmYzk1NzM4ZGVkNzYxYi4uYmRhNDkyNjM0ODU5MjMgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9pcDZfZmliLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L2lwNl9maWIuY1xuQEAgLTYzNiwxMSAmIzQzOzYzNiwxMSBAQCBzdGF0aWMgaW50IGluZXQ2X2R1bXBfZmliKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbiBcdH07XG4gXHRjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCA9IGNiLVx1MDAzZW5saDtcbiBcdHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrYi1cdTAwM2Vzayk7XG4tXHR1bnNpZ25lZCBpbnQgZSA9IDAsIHNfZTtcbiBcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkO1xuIFx0c3RydWN0IGZpYjZfd2Fsa2VyICp3O1xuIFx0c3RydWN0IGZpYjZfdGFibGUgKnRiO1xuIFx0dW5zaWduZWQgaW50IGgsIHNfaDtcbiYjNDM7XHR1MzIgc19pZDtcbiBcdGludCBlcnIgPSAwO1xuIFxuIFx0cmN1X3JlYWRfbG9jaygpO1xuQEAgLTcwMSwyMyAmIzQzOzcwMSwyMiBAQCBzdGF0aWMgaW50IGluZXQ2X2R1bXBfZmliKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbiBcdH1cbiBcbiBcdHNfaCA9IGNiLVx1MDAzZWFyZ3NbMF07XG4tXHRzX2UgPSBjYi1cdTAwM2VhcmdzWzFdO1xuJiM0MztcdHNfaWQgPSBjYi1cdTAwM2VhcmdzWzFdO1xuIFxuLVx0Zm9yIChoID0gc19oOyBoIFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzssIHNfZSA9IDApIHtcbi1cdFx0ZSA9IDA7XG4mIzQzO1x0Zm9yIChoID0gc19oOyBoIFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzssIHNfaWQgPSAwKSB7XG4gXHRcdGhlYWQgPSBcdTAwMjZuZXQtXHUwMDNlaXB2Ni5maWJfdGFibGVfaGFzaFtoXTtcbiBcdFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHRiLCBoZWFkLCB0YjZfaGxpc3QpIHtcbi1cdFx0XHRpZiAoZSBcdTAwM2Mgc19lKVxuLVx0XHRcdFx0Z290byBuZXh0O1xuJiM0MztcdFx0XHRpZiAoc19pZCBcdTAwMjZcdTAwMjYgdGItXHUwMDNldGI2X2lkICE9IHNfaWQpXG4mIzQzO1x0XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHRcdHNfaWQgPSAwO1xuJiM0MztcbiYjNDM7XHRcdFx0Y2ItXHUwMDNlYXJnc1sxXSA9IHRiLVx1MDAzZXRiNl9pZDtcbiBcdFx0XHRlcnIgPSBmaWI2X2R1bXBfdGFibGUodGIsIHNrYiwgY2IpO1xuIFx0XHRcdGlmIChlcnIgIT0gMClcbiBcdFx0XHRcdGdvdG8gb3V0O1xuLW5leHQ6XG4tXHRcdFx0ZSYjNDM7JiM0Mzs7XG4gXHRcdH1cbiBcdH1cbiBvdXQ6XG4tXHRjYi1cdTAwM2VhcmdzWzFdID0gZTtcbiBcdGNiLVx1MDAzZWFyZ3NbMF0gPSBoO1xuIFxuIHVubG9jazpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwMTo0OTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFY2JiMzNDssCiAgICAmIzM0O0lQVjZfTVVMVElQTEVfVEFCTEVTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW5ldDZfZHVtcF9maWImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGl0ZXJhdGlvbiBsb2dpYyBpbiBgaW5ldDZfZHVtcF9maWJgIGZvciBJUHY2IEZJQiBuZXRsaW5rIGR1bXBzLiBJdCBzd2l0Y2hlcyBmcm9tIHVzaW5nIGFuIGluZGV4IHRvIHVzaW5nIHRoZSB0YWJsZSBJRCB0byByZXN1bWUgZHVtcHMsIHdoaWNoIGZpeGVzIHBvdGVudGlhbCBpc3N1ZXMgd2hlbiByb3V0aW5nIHRhYmxlcyBhcmUgYWRkZWQgb3IgcmVtb3ZlZCBkdXJpbmcgYSBtdWx0aXBhcnQgbmV0bGluayBkdW1wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwMmVhZWZkMjgyNmU0ZDQ3NGQzZDJiMzIzMjkwYWU4ZTBiY2M1MjRlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdW4gMjUgMDE6NDk6MDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfZmliLmMgYi9uZXQvaXB2Ni9pcDZfZmliLmMKaW5kZXggZmM5NTczOGRlZDc2MWIuLmJkYTQ5MjYzNDg1OTIzIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9pcDZfZmliLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvaXA2X2ZpYi5jCkBAIC02MzYsMTEgJiM0Mzs2MzYsMTEgQEAgc3RhdGljIGludCBpbmV0Nl9kdW1wX2ZpYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpCiAJfTsKIAljb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCA9IGNiLSZndDtubGg7CiAJc3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2tiLSZndDtzayk7Ci0JdW5zaWduZWQgaW50IGUgPSAwLCBzX2U7CiAJc3RydWN0IGhsaXN0X2hlYWQgKmhlYWQ7CiAJc3RydWN0IGZpYjZfd2Fsa2VyICp3OwogCXN0cnVjdCBmaWI2X3RhYmxlICp0YjsKIAl1bnNpZ25lZCBpbnQgaCwgc19oOwomIzQzOwl1MzIgc19pZDsKIAlpbnQgZXJyID0gMDsKIAogCXJjdV9yZWFkX2xvY2soKTsKQEAgLTcwMSwyMyAmIzQzOzcwMSwyMiBAQCBzdGF0aWMgaW50IGluZXQ2X2R1bXBfZmliKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYikKIAl9CiAKIAlzX2ggPSBjYi0mZ3Q7YXJnc1swXTsKLQlzX2UgPSBjYi0mZ3Q7YXJnc1sxXTsKJiM0MzsJc19pZCA9IGNiLSZndDthcmdzWzFdOwogCi0JZm9yIChoID0gc19oOyBoICZsdDsgRklCNl9UQUJMRV9IQVNIU1o7IGgmIzQzOyYjNDM7LCBzX2UgPSAwKSB7Ci0JCWUgPSAwOwomIzQzOwlmb3IgKGggPSBzX2g7IGggJmx0OyBGSUI2X1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzssIHNfaWQgPSAwKSB7CiAJCWhlYWQgPSAmYW1wO25ldC0mZ3Q7aXB2Ni5maWJfdGFibGVfaGFzaFtoXTsKIAkJaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHRiLCBoZWFkLCB0YjZfaGxpc3QpIHsKLQkJCWlmIChlICZsdDsgc19lKQotCQkJCWdvdG8gbmV4dDsKJiM0MzsJCQlpZiAoc19pZCAmYW1wOyZhbXA7IHRiLSZndDt0YjZfaWQgIT0gc19pZCkKJiM0MzsJCQkJY29udGludWU7CiYjNDM7CQkJc19pZCA9IDA7CiYjNDM7CiYjNDM7CQkJY2ItJmd0O2FyZ3NbMV0gPSB0Yi0mZ3Q7dGI2X2lkOwogCQkJZXJyID0gZmliNl9kdW1wX3RhYmxlKHRiLCBza2IsIGNiKTsKIAkJCWlmIChlcnIgIT0gMCkKIAkJCQlnb3RvIG91dDsKLW5leHQ6Ci0JCQllJiM0MzsmIzQzOzsKIAkJfQogCX0KIG91dDoKLQljYi0mZ3Q7YXJnc1sxXSA9IGU7CiAJY2ItJmd0O2FyZ3NbMF0gPSBoOwogCiB1bmxvY2s6CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDAxOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNDgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSVB2NiBGSUIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgYG5ldC9pcHY2L2lwNl9maWIuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgZm9jdXNlZCBvbiBgaW5ldDZfZHVtcF9maWJgLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIHN1YnN0aXR1dGluZyBgc19lYCwgd2hpY2ggSSBhc3N1bWUgaXMgYW4gaW5kZXggb3Igc29tZXRoaW5nIHNpbWlsYXIsIHdpdGggYHNfaWRgLCBhIHRhYmxlIElELCBpbiB0aGUgaXRlcmF0aW9uIHByb2Nlc3Mgd2l0aGluIGBpbmV0Nl9kdW1wX2ZpYmAuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGNoYW5nZSB3aXRoaW4gdGhlIElQdjYgbmV0d29ya2luZyBzdGFjaywgc3BlY2lmaWNhbGx5IGhvdyB0aGUgSVB2NiBGSUIgaXMgZHVtcGVkIG92ZXIgbmV0bGluay4KCkdpdmVuIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9uIGRhdGEgb3V0cHV0IGFuZCB0aGUgY29yZSBuZXR3b3JrIGZ1bmN0aW9uYWxpdHkgaW52b2x2ZWQsIGZ1enppbmcgaXMgYW4gYWJzb2x1dGUgbXVzdCBoZXJlLiBXZSBuZWVkIHRvIHJlYWxseSBwdXQgaXQgdGhyb3VnaCBpdHMgcGFjZXMuCgpGaXJzdCB0aGluZ3MgZmlyc3QsIEkmIzM5O2xsIGxvY2F0ZSBgaW5ldDZfZHVtcF9maWJgIGl0c2VsZiB3aXRoaW4gYG5ldC9pcHY2L2lwNl9maWIuY2AgdG8gdW5kZXJzdGFuZCB0aGUgY29kZSBjb250ZXh0IGRpcmVjdGx5LiBUaGVuLCBJIG5lZWQgdG8gaWRlbnRpZnkgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBTaW5jZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIElQdjYsIGl0JiMzOTtzIGhpZ2hseSBsaWtlbHkgdGhhdCBgQ09ORklHX0lQVjZgIGlzIHRoZSBrZXkuIEnigJlsbCBkb3VibGUtY2hlY2sgYG5ldC9pcHY2L0tjb25maWdgIHRvIGJlIGNlcnRhaW4uIEdldHRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gcmlnaHQgaXMgY3JpdGljYWwgZm9yIGEgdmFsaWQgdGVzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwMTo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbmV0Nl9kdW1wX2ZpYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L2lwNl9maWIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9pcDZfZmliLmM9NTg1PXN0YXRpYyBpbnQgZmliNl9kdW1wX3RhYmxlKHN0cnVjdCBmaWI2X3RhYmxlICp0YWJsZSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmMtNjMwLVxubmV0L2lwdjYvaXA2X2ZpYi5jOjYzMTpzdGF0aWMgaW50IGluZXQ2X2R1bXBfZmliKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbm5ldC9pcHY2L2lwNl9maWIuYy02MzIte1xuLS1cbm5ldC9pcHY2L2lwNl9maWIuYz0yNTYwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRubF9tc2dfaGFuZGxlciBmaWI2X3J0bmxfbXNnX2hhbmRsZXJzW10gX19pbml0Y29uc3Rfb3JfbW9kdWxlID0ge1xubmV0L2lwdjYvaXA2X2ZpYi5jLTI1NjEtXHR7Lm93bmVyID0gVEhJU19NT0RVTEUsIC5wcm90b2NvbCA9IFBGX0lORVQ2LCAubXNndHlwZSA9IFJUTV9HRVRST1VURSxcbm5ldC9pcHY2L2lwNl9maWIuYzoyNTYyOlx0IC5kdW1waXQgPSBpbmV0Nl9kdW1wX2ZpYixcbm5ldC9pcHY2L2lwNl9maWIuYy0yNTYzLVx0IC5mbGFncyA9IFJUTkxfRkxBR19EVU1QX1VOTE9DS0VEIHwgUlROTF9GTEFHX0RVTVBfU1BMSVRfTkxNX0RPTkV9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDAxOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMzEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gSVB2NiBSb3V0aW5nIFRhYmxlIER1bXBzKioKCk9rYXksIHNvIGBpbmV0Nl9kdW1wX2ZpYmAgaXMgdGhlIGhhbmRsZXIgdGhhdCBraWNrcyBpbiB3aGVuIHdlIGRvIGEgYFJUTV9HRVRST1VURWAgcmVxdWVzdCBzcGVjaWZpY2FsbHkgZm9yIElQdjYgKHRoYXQmIzM5O3MgYFBGX0lORVQ2YCkuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0JiMzOTtzIHRoZSBuZXRsaW5rIGludGVyZmFjZSB0byBnZXQgcm91dGluZyBpbmZvcm1hdGlvbiwgd2hpY2ggaXMgd2hhdCBJJiMzOTtkIGV4cGVjdC4gU28sIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLiAKCk5vdywgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGVuYWJsaW5nIGNvbmRpdGlvbjogYElQVjZgLiBKdXN0IG1ha2luZyBzdXJlLCBhcmUgdGhlcmUgKmFueSogb3RoZXIgY29uZmlnIG9wdGlvbnMgaW52b2x2ZWQgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uPyBHb3R0YSBiZSB0aG9yb3VnaC4gVGltZSB0byBjcmFjayBvcGVuIGBuZXQvaXB2Ni9LY29uZmlnYCBhbmQgc2VlIHdoYXQgZWxzZSBjb3VsZCBiZSBsdXJraW5nIGluIHRoZXJlIGFyb3VuZCBgSVBWNmAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDE6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQVjYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWctNS1cbm5ldC9pcHY2L0tjb25maWc6NjptZW51Y29uZmlnIElQVjZcbm5ldC9pcHY2L0tjb25maWctNy1cdGJvb2wgXCYjMzQ7VGhlIElQdjYgcHJvdG9jb2xcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTE5PWlmIElQVjZcbm5ldC9pcHY2L0tjb25maWctMjAtXG5uZXQvaXB2Ni9LY29uZmlnOjIxOmNvbmZpZyBJUFY2X1JPVVRFUl9QUkVGXG5uZXQvaXB2Ni9LY29uZmlnLTIyLVx0Ym9vbCBcJiMzNDtJUHY2OiBSb3V0ZXIgUHJlZmVyZW5jZSAoUkZDIDQxOTEpIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTMwLVxubmV0L2lwdjYvS2NvbmZpZzozMTpjb25maWcgSVBWNl9ST1VURV9JTkZPXG5uZXQvaXB2Ni9LY29uZmlnLTMyLVx0Ym9vbCBcJiMzNDtJUHY2OiBSb3V0ZSBJbmZvcm1hdGlvbiAoUkZDIDQxOTEpIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTM4LVxubmV0L2lwdjYvS2NvbmZpZzozOTpjb25maWcgSVBWNl9PUFRJTUlTVElDX0RBRFxubmV0L2lwdjYvS2NvbmZpZy00MC1cdGJvb2wgXCYjMzQ7SVB2NjogRW5hYmxlIFJGQyA0NDI5IE9wdGltaXN0aWMgREFEXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZz0xMDI9Y29uZmlnIElORVQ2X0lQQ09NUFxuLS1cbm5ldC9pcHY2L0tjb25maWctMTExLVxubmV0L2lwdjYvS2NvbmZpZzoxMTI6Y29uZmlnIElQVjZfTUlQNlxubmV0L2lwdjYvS2NvbmZpZy0xMTMtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBNb2JpbGl0eVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMTE5LVxubmV0L2lwdjYvS2NvbmZpZzoxMjA6Y29uZmlnIElQVjZfSUxBXG5uZXQvaXB2Ni9LY29uZmlnLTEyMS1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IElkZW50aWZpZXIgTG9jYXRvciBBZGRyZXNzaW5nIChJTEEpXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZz0xNDY9Y29uZmlnIElORVQ2X1RVTk5FTFxuLS1cbm5ldC9pcHY2L0tjb25maWctMTQ5LVxubmV0L2lwdjYvS2NvbmZpZzoxNTA6Y29uZmlnIElQVjZfVlRJXG5uZXQvaXB2Ni9LY29uZmlnLTE1MS1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgKHNlY3VyZSkgSVB2NjogdHVubmVsaW5nXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xNjEtXG5uZXQvaXB2Ni9LY29uZmlnOjE2Mjpjb25maWcgSVBWNl9TSVRcbm5ldC9pcHY2L0tjb25maWctMTYzLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogSVB2Ni1pbi1JUHY0IHR1bm5lbCAoU0lUIGRyaXZlcilcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE3Ni1cbm5ldC9pcHY2L0tjb25maWc6MTc3OmNvbmZpZyBJUFY2X1NJVF82UkRcbm5ldC9pcHY2L0tjb25maWctMTc4LVx0Ym9vbCBcJiMzNDtJUHY2OiBJUHY2IFJhcGlkIERlcGxveW1lbnQgKDZSRClcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE5NS1cbm5ldC9pcHY2L0tjb25maWc6MTk2OmNvbmZpZyBJUFY2X05ESVNDX05PREVUWVBFXG5uZXQvaXB2Ni9LY29uZmlnLTE5Ny1cdGJvb2xcbm5ldC9pcHY2L0tjb25maWctMTk4LVxubmV0L2lwdjYvS2NvbmZpZzoxOTk6Y29uZmlnIElQVjZfVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTIwMC1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IElQLWluLUlQdjYgdHVubmVsIChSRkMyNDczKVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjA5LVxubmV0L2lwdjYvS2NvbmZpZzoyMTA6Y29uZmlnIElQVjZfR1JFXG5uZXQvaXB2Ni9LY29uZmlnLTIxMS1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IEdSRSB0dW5uZWxcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTIyNy1cbm5ldC9pcHY2L0tjb25maWc6MjI4OmNvbmZpZyBJUFY2X0ZPVVxubmV0L2lwdjYvS2NvbmZpZy0yMjktXHR0cmlzdGF0ZVxuLS1cbm5ldC9pcHY2L0tjb25maWctMjMxLVxubmV0L2lwdjYvS2NvbmZpZzoyMzI6Y29uZmlnIElQVjZfRk9VX1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0yMzMtXHR0cmlzdGF0ZVxuLS1cbm5ldC9pcHY2L0tjb25maWctMjM2LVxubmV0L2lwdjYvS2NvbmZpZzoyMzc6Y29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2Ni9LY29uZmlnLTIzOC1cdGJvb2wgXCYjMzQ7SVB2NjogTXVsdGlwbGUgUm91dGluZyBUYWJsZXNcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI0Mi1cbm5ldC9pcHY2L0tjb25maWc6MjQzOmNvbmZpZyBJUFY2X1NVQlRSRUVTXG5uZXQvaXB2Ni9LY29uZmlnLTI0NC1cdGJvb2wgXCYjMzQ7SVB2Njogc291cmNlIGFkZHJlc3MgYmFzZWQgcm91dGluZ1wmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjU2LVxubmV0L2lwdjYvS2NvbmZpZzoyNTc6Y29uZmlnIElQVjZfTVJPVVRFXG5uZXQvaXB2Ni9LY29uZmlnLTI1OC1cdGJvb2wgXCYjMzQ7SVB2NjogbXVsdGljYXN0IHJvdXRpbmdcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI2NC1cbm5ldC9pcHY2L0tjb25maWc6MjY1OmNvbmZpZyBJUFY2X01ST1VURV9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY2L0tjb25maWctMjY2LVx0Ym9vbCBcJiMzNDtJUHY2OiBtdWx0aWNhc3QgcG9saWN5IHJvdXRpbmdcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI3OC1cbm5ldC9pcHY2L0tjb25maWc6Mjc5OmNvbmZpZyBJUFY2X1BJTVNNX1YyXG5uZXQvaXB2Ni9LY29uZmlnLTI4MC1cdGJvb2wgXCYjMzQ7SVB2NjogUElNLVNNIHZlcnNpb24gMiBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yODUtXG5uZXQvaXB2Ni9LY29uZmlnOjI4Njpjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTI4Ny1cdGJvb2wgXCYjMzQ7SVB2NjogU2VnbWVudCBSb3V0aW5nIEhlYWRlciBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI5OS1cbm5ldC9pcHY2L0tjb25maWc6MzAwOmNvbmZpZyBJUFY2X1NFRzZfSE1BQ1xubmV0L2lwdjYvS2NvbmZpZy0zMDEtXHRib29sIFwmIzM0O0lQdjY6IFNlZ21lbnQgUm91dGluZyBITUFDIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTMxMS1cbm5ldC9pcHY2L0tjb25maWc6MzEyOmNvbmZpZyBJUFY2X1NFRzZfQlBGXG5uZXQvaXB2Ni9LY29uZmlnLTMxMy1cdGRlZl9ib29sIHlcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTMxNi1cbm5ldC9pcHY2L0tjb25maWc6MzE3OmNvbmZpZyBJUFY2X1JQTF9MV1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0zMTgtXHRib29sIFwmIzM0O0lQdjY6IFJQTCBTb3VyY2UgUm91dGluZyBIZWFkZXIgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMzI3LVxubmV0L2lwdjYvS2NvbmZpZzozMjg6Y29uZmlnIElQVjZfSU9BTTZfTFdUVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMzI5LVx0Ym9vbCBcJiMzNDtJUHY2OiBJT0FNIFByZS1hbGxvY2F0ZWQgVHJhY2UgaW5zZXJ0aW9uIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwMTo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODUwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSVB2NiBSb3V0aW5nIFRhYmxlIER1bXAgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IHRvdWNoaW5nIGBpbmV0Nl9kdW1wX2ZpYmAsIHdoaWNoIG1lYW5zIGl0JiMzOTtzIGludm9sdmVkIGluIGR1bXBpbmcgdGhlIElQdjYgcm91dGluZyB0YWJsZS4gSSBzZWUgaXQgaXRlcmF0ZXMgb3ZlciBgRklCNl9UQUJMRV9IQVNIU1pgLiBUaGF0JiMzOTtzIHRoZSBleHBlY3RlZCBiZWhhdmlvciBmb3IgYSBzdGFuZGFyZCBJUHY2IHJvdXRpbmcgdGFibGUgZHVtcC4gTm90aGluZyBpbW1lZGlhdGVseSBqdW1wcyBvdXQgYXMgYWxhcm1pbmcgaGVyZS4KCkkmIzM5O20gdGhpbmtpbmcsIGBJUFY2X01VTFRJUExFX1RBQkxFU2AgY291bGQgYmUgc29tZXRoaW5nIHRvIGNvbnNpZGVyIHNpbmNlIGl0JiMzOTtzIGFib3V0IG11bHRpcGxlIHJvdXRpbmcgdGFibGVzLiBCdXQgd2FpdCwgaXQmIzM5O3Mgc3RpbGwgdXNpbmcgYEZJQjZfVEFCTEVfSEFTSFNaYCByZWdhcmRsZXNzLCBldmVuIGlmIGl0JiMzOTtzIGp1c3QgMSB3aGVuIG11bHRpcGxlIHRhYmxlcyBhcmVuJiMzOTt0IGVuYWJsZWQuIExldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB3aGF0IHRoZSB2YWx1ZSBvZiBgRklCNl9UQUJMRV9IQVNIU1pgIGlzIGV4YWN0bHkgaW4gdGhpcyBjb250ZXh0LiBOZWVkIHRvIHZlcmlmeSB0aGF0JiMzOTtzIHRoZSBjb3JyZWN0IGFwcHJvYWNoIGdpdmVuIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwMTo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtGSUI2X1RBQkxFX0hBU0hTWiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9pcDZfZmliLmM9MjEzPXN0YXRpYyB2b2lkIGZpYjZfbGlua190YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmaWI2X3RhYmxlICp0Yilcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjIxLVx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2dGItXHUwMDNldGI2X2xvY2spO1xubmV0L2lwdjYvaXA2X2ZpYi5jOjIyMjpcdGggPSB0Yi1cdTAwM2V0YjZfaWQgXHUwMDI2IChGSUI2X1RBQkxFX0hBU0hTWiAtIDEpO1xubmV0L2lwdjYvaXA2X2ZpYi5jLTIyMy1cbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmM9MjgyPXN0cnVjdCBmaWI2X3RhYmxlICpmaWI2X2dldF90YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBpZClcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjg5LVxubmV0L2lwdjYvaXA2X2ZpYi5jOjI5MDpcdGhlYWQgPSBcdTAwMjZuZXQtXHUwMDNlaXB2Ni5maWJfdGFibGVfaGFzaFtpZCBcdTAwMjYgKEZJQjZfVEFCTEVfSEFTSFNaIC0gMSldO1xubmV0L2lwdjYvaXA2X2ZpYi5jLTI5MS1cbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmM9MzU2PXVuc2lnbmVkIGludCBmaWI2X3RhYmxlc19zZXFfcmVhZChjb25zdCBzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jLTM2MC1cdHJjdV9yZWFkX2xvY2soKTtcbm5ldC9pcHY2L2lwNl9maWIuYzozNjE6XHRmb3IgKGggPSAwOyBoIFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzspIHtcbm5ldC9pcHY2L2lwNl9maWIuYy0zNjItXHRcdGNvbnN0IHN0cnVjdCBobGlzdF9oZWFkICpoZWFkID0gXHUwMDI2bmV0LVx1MDAzZWlwdjYuZmliX3RhYmxlX2hhc2hbaF07XG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jPTQ5Mj1pbnQgZmliNl90YWJsZXNfZHVtcChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jLTUwOS1cbm5ldC9pcHY2L2lwNl9maWIuYzo1MTA6XHRmb3IgKGggPSAwOyBoIFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzspIHtcbm5ldC9pcHY2L2lwNl9maWIuYy01MTEtXHRcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkID0gXHUwMDI2bmV0LVx1MDAzZWlwdjYuZmliX3RhYmxlX2hhc2hbaF07XG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jPTYzMT1zdGF0aWMgaW50IGluZXQ2X2R1bXBfZmliKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmMtNzA1LVxubmV0L2lwdjYvaXA2X2ZpYi5jOjcwNjpcdGZvciAoaCA9IHNfaDsgaCBcdTAwM2MgRklCNl9UQUJMRV9IQVNIU1o7IGgmIzQzOyYjNDM7LCBzX2lkID0gMCkge1xubmV0L2lwdjYvaXA2X2ZpYi5jLTcwNy1cdFx0aGVhZCA9IFx1MDAyNm5ldC1cdTAwM2VpcHY2LmZpYl90YWJsZV9oYXNoW2hdO1xuLS1cbm5ldC9pcHY2L2lwNl9maWIuYz0yMzA4PXN0YXRpYyB2b2lkIF9fZmliNl9jbGVhbl9hbGwoc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC9pcHY2L2lwNl9maWIuYy0yMzE2LVx0cmN1X3JlYWRfbG9jaygpO1xubmV0L2lwdjYvaXA2X2ZpYi5jOjIzMTc6XHRmb3IgKGggPSAwOyBoIFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzspIHtcbm5ldC9pcHY2L2lwNl9maWIuYy0yMzE4LVx0XHRoZWFkID0gXHUwMDI2bmV0LVx1MDAzZWlwdjYuZmliX3RhYmxlX2hhc2hbaF07XG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jPTI0MDY9c3RhdGljIHZvaWQgZmliNl9nY19hbGwoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmliNl9nY19hcmdzICpnY19hcmdzKVxuLS1cbm5ldC9pcHY2L2lwNl9maWIuYy0yNDEyLVx0cmN1X3JlYWRfbG9jaygpO1xubmV0L2lwdjYvaXA2X2ZpYi5jOjI0MTM6XHRmb3IgKGggPSAwOyBoIFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzspIHtcbm5ldC9pcHY2L2lwNl9maWIuYy0yNDE0LVx0XHRoZWFkID0gXHUwMDI2bmV0LVx1MDAzZWlwdjYuZmliX3RhYmxlX2hhc2hbaF07XG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jPTI0NjE9c3RhdGljIGludCBfX25ldF9pbml0IGZpYjZfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L2lwdjYvaXA2X2ZpYi5jLTI0NjIte1xubmV0L2lwdjYvaXA2X2ZpYi5jOjI0NjM6XHRzaXplX3Qgc2l6ZSA9IHNpemVvZihzdHJ1Y3QgaGxpc3RfaGVhZCkgKiBGSUI2X1RBQkxFX0hBU0hTWjtcbm5ldC9pcHY2L2lwNl9maWIuYy0yNDY0LVx0aW50IGVycjtcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmM9MjUzMz1zdGF0aWMgdm9pZCBmaWI2X25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjUzOC1cbm5ldC9pcHY2L2lwNl9maWIuYzoyNTM5Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgRklCNl9UQUJMRV9IQVNIU1o7IGkmIzQzOyYjNDM7KSB7XG5uZXQvaXB2Ni9pcDZfZmliLmMtMjU0MC1cdFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQgPSBcdTAwMjZuZXQtXHUwMDNlaXB2Ni5maWJfdGFibGVfaGFzaFtpXTtcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmM9MjY2Nz1zdGF0aWMgc3RydWN0IGZpYjZfdGFibGUgKmlwdjZfcm91dGVfc2VxX25leHRfdGFibGUoc3RydWN0IGZpYjZfdGFibGUgKnRibCxcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjY3My1cdGlmICh0YmwpIHtcbm5ldC9pcHY2L2lwNl9maWIuYzoyNjc0Olx0XHRoID0gKHRibC1cdTAwM2V0YjZfaWQgXHUwMDI2IChGSUI2X1RBQkxFX0hBU0hTWiAtIDEpKSAmIzQzOyAxO1xubmV0L2lwdjYvaXA2X2ZpYi5jLTI2NzUtXHRcdG5vZGUgPSByY3VfZGVyZWZlcmVuY2UoaGxpc3RfbmV4dF9yY3UoXHUwMDI2dGJsLVx1MDAzZXRiNl9obGlzdCkpO1xuLS1cbm5ldC9pcHY2L2lwNl9maWIuYy0yNjgwLVxubmV0L2lwdjYvaXA2X2ZpYi5jOjI2ODE6XHR3aGlsZSAoIW5vZGUgXHUwMDI2XHUwMDI2IGggXHUwMDNjIEZJQjZfVEFCTEVfSEFTSFNaKSB7XG5uZXQvaXB2Ni9pcDZfZmliLmMtMjY4Mi1cdFx0bm9kZSA9IHJjdV9kZXJlZmVyZW5jZShcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ1MzY9dm9pZCBydDZfcHVyZ2VfZGZsdF9yb3V0ZXJzKHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ1NDMtXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ1NDQ6XHRmb3IgKGggPSAwOyBoIFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzspIHtcbm5ldC9pcHY2L3JvdXRlLmMtNDU0NS1cdFx0aGVhZCA9IFx1MDAyNm5ldC1cdTAwM2VpcHY2LmZpYl90YWJsZV9oYXNoW2hdO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDAxOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3ODIKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqTmV0d29yayBSb3V0aW5nIFRhYmxlIENvbnRleHR1YWxpemF0aW9uKioKClJpZ2h0LCBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgIGp1bXBzIG91dCBpbW1lZGlhdGVseS4gSWYgdGhhdCYjMzk7cyAqbm90KiBlbmFibGVkLCB3ZSYjMzk7cmUgc3R1Y2sgd2l0aCBqdXN0IHRoZSBtYWluIGFuZCBsb2NhbCByb3V0aW5nIHRhYmxlcy4gVGhhdCYjMzk7cyBwcmV0dHkgbGltaXRpbmcuIEJ1dCB0aGVuIEkmIzM5O20gc2VlaW5nIHRoaXMgYEZJQjZfVEFCTEVfSEFTSFNaYCB2YWx1ZSBvZiAyNTYsIGFuZCB0aGF0IGRvZXNuJiMzOTt0IGZlZWwgcmlnaHQgaW4gdGhpcyB0d28tdGFibGUgY29udGV4dC4gSXQgZmVlbHMgbGlrZSBtb3JlIHRoYW4gMjU2LiBTb21ldGhpbmcgZmVlbHMgb2ZmIGFib3V0IHRoYXQgY29tYmluYXRpb24uIExldCBtZSBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBgaW5jbHVkZS9uZXQvaXA2X2ZpYi5oYCBoZWFkZXIgZmlsZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBkZWZpbml0aW9uIG9mIGBGSUI2X1RBQkxFX0hBU0hTWmAgYW5kIGhvdyBpdCYjMzk7cyB1c2VkIHdpdGhpbiB0aGUgSVB2NiBmb3J3YXJkaW5nIGluZm9ybWF0aW9uIGJhc2UuIEkgc2hvdWxkIHN0YXJ0IHRoZXJlLCBhbmQgc2VlIGhvdyB0aGUgdHdvIGFyZSB0aWVkIHRvZ2V0aGVyLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IHdpdGggdGhlIHNvdXJjZSBmb3IgdGhhdCBtYWNybyBkZWZpbml0aW9uIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDAxOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0ZJQjZfVEFCTEVfSEFTSFNaJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvaXA2X2ZpYi5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2lwNl9maWIuaC0yNS0jaWZkZWYgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTXG5pbmNsdWRlL25ldC9pcDZfZmliLmg6MjY6I2RlZmluZSBGSUI2X1RBQkxFX0hBU0hTWiAyNTZcbmluY2x1ZGUvbmV0L2lwNl9maWIuaC0yNy0jZWxzZVxuaW5jbHVkZS9uZXQvaXA2X2ZpYi5oOjI4OiNkZWZpbmUgRklCNl9UQUJMRV9IQVNIU1ogMVxuaW5jbHVkZS9uZXQvaXA2X2ZpYi5oLTI5LSNlbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwMTo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjM0CgkJCQkJCQlvdXRwdXQ6IDEyMQoJCQkJCQkJdGhvdWdodHM6IDkwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldGxpbmsgRHVtcCBGaXggZm9yIElQdjYgRklCIFRhYmxlcyoqCgpPa2F5LCBzbyB0aGUgYEZJQjZfVEFCTEVfSEFTSFNaYCB2YWx1ZSBpcyBjb25kaXRpb25hbCDigJMgaXQmIzM5O3MgMjU2IHdoZW4gYENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU2AgaXMgZW5hYmxlZCwgYW5kIDEgb3RoZXJ3aXNlLiBUaGlzIGlzIGltbWVkaWF0ZWx5IHJlbGV2YW50LiBUaGUgYnVnIGJlaW5nIGZpeGVkIGhlcmUgYXBwZWFycyB0byBiZSBpbiB0aGUgbmV0bGluayBkdW1wJiMzOTtzIGhhbmRsaW5nIG9mIG11bHRpcGxlIHRhYmxlcywgYW5kIHRoZSBjcnVjaWFsIHBvaW50IGlzIGhvdyB0aGUgc3RhdGUgaXMgc2F2ZWQgYW5kIHJlc3VtZWQgZHVyaW5nIHRoZSBkdW1wIHByb2Nlc3MuIElmIHRoZSBjb2RlIHdhcyB1c2luZyBgc19lYCBhcyBhbiBpbmRleCBhbmQgdGFibGVzIHdlcmUgYWRkZWQgb3IgcmVtb3ZlZCBtaWQtZHVtcCwgaXQmIzM5O3MgY2xlYXIgdGhlIGl0ZXJhdGlvbiBjb3VsZCBnbyBhd3J5LCBsZWFkaW5nIHRvIHRoZSBkdW1wIG1pc3Npbmcgb3IgZHVwbGljYXRpbmcgc29tZSB0YWJsZXMuCgpUaGUgZml4LCBhbmQgdGhpcyBpcyB0aGUgY29yZSBvZiBpdCwgY2xldmVybHkgc3dpdGNoZXMgdG8gdXNpbmcgYHNfaWRgLCB3aGljaCByZXByZXNlbnRzIHRoZSB0YWJsZSBJRCAoYHRiLSZndDt0YjZfaWRgKSwgdG8gcmVzdW1lIGNvcnJlY3RseS4gVGhpcyBpcyBhbiBpbXByb3ZlbWVudCB0byBgaW5ldDZfZHVtcF9maWJgLiBJdCBzYXZlcyB0aGUgdGFibGUgSUQsIGluc3RlYWQgb2YgcmVseWluZyBvbiBhIHBvdGVudGlhbGx5IHVuc3RhYmxlIGluZGV4LgoKVG8gbWFrZSBzdXJlIHRoaXMgdHJpZ2dlcnMsIHdlJiMzOTtsbCBuZWVkIGBJUFY2X01VTFRJUExFX1RBQkxFU2AsIHdoaWNoIGFjdGl2YXRlcyB0aGUgbXVsdGlwbGUgdGFibGUgc2NlbmFyaW8gYW5kIHRyaWdnZXJzIHRoZSBoYXNoIGl0ZXJhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBlbmFibGUgYElQVjZgIGFzIHdlbGwsIG9mIGNvdXJzZS4KCldlIGRlZmluaXRlbHkgaGF2ZSBhIHNpdHVhdGlvbiB3b3J0aCBmdXp6aW5nIGhlcmUsIGdpdmVuIHRoZSBmdW5jdGlvbmFsIGNoYW5nZS4gV2UgbmVlZCB0byBmb2N1cyBvbiBgaW5ldDZfZHVtcF9maWJgLgoKTm93LCBpcyBgaW5ldDZfZHVtcF9maWJgIHN0YXRpYyBvciBub3Q/IEdvb2QsIGl0JiMzOTtzIHN0YXRpYywgd2hpY2ggY291bGQgYWZmZWN0IHN5emthbGxlciYjMzk7cyBhYmlsaXR5IHRvIHJlYWNoIGl0LiBJdCYjMzk7cyBpbiBgbmV0L2lwdjYvaXA2X2ZpYi5jYC4gSG93ZXZlciwgaXQmIzM5O3MgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLCBzcGVjaWZpY2FsbHkgYFJUTV9HRVRST1VURWAgZm9yIGBQRl9JTkVUNmAuIE9rYXksIHNvIGl0JiMzOTtzIHJlYWNoZWQgdmlhIGEgbmV0bGluayBzeXNjYWxsISBQZXJmZWN0LiBXZSYjMzk7cmUgc3RpbGwgY29ycmVjdCBpbiBmb2N1c2luZyBvbiBgaW5ldDZfZHVtcF9maWJgLgoKTGV0IG1lIHF1aWNrbHkgcmV2aWV3IHRoZSBwYXRjaCBhZ2FpbiB0byBtYWtlIHN1cmUgbXkgcmVhc29uaW5nIGlzIHJpZ2h0IG9uIHRoZSBtb25leS4gWWVzLCBpdCByZXBsYWNlcyB0aGUgaW5kZXggYHNfZWAgd2l0aCBgc19pZGAgd2hlbiB0aGUgaXRlcmF0aW9uIHJlc3VtZXMgYWZ0ZXIgYSBkdW1wLiBOb3cgaXQgc2F2ZXMgdGhlIHRhYmxlIElELiBUaGlzIGFsbG93cyBhY2N1cmF0ZSByZXN1bXB0aW9uIG9mIHRoZSBkdW1wIGFmdGVyIGEgcG90ZW50aWFsIHRhYmxlIGluc2VydCBvciBkZWxldGUuIFRoaXMgaXMgcHJlY2lzZWx5IHdoYXQgd2Ugd2FudCB0byBmdXp6LgoKV2UmIzM5O3ZlIGdvdCB0aGUgY29uZmlnczogYElQVjZgIGFuZCBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgLiBPdXIgZm9jYWwgcG9pbnQgaXMgYGluZXQ2X2R1bXBfZmliYC4gVGhpcyBpcyBhIGNsZWFyIGNhc2UgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDAxOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFY2JiMzNDssCiAgICAmIzM0O0lQVjZfTVVMVElQTEVfVEFCTEVTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW5ldDZfZHVtcF9maWImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGl0ZXJhdGlvbiBsb2dpYyBpbiBgaW5ldDZfZHVtcF9maWJgIGZvciBJUHY2IEZJQiBuZXRsaW5rIGR1bXBzLiBJdCBzd2l0Y2hlcyBmcm9tIHVzaW5nIGFuIGluZGV4IHRvIHVzaW5nIHRoZSB0YWJsZSBJRCB0byByZXN1bWUgZHVtcHMsIHdoaWNoIGZpeGVzIHBvdGVudGlhbCBpc3N1ZXMgd2hlbiByb3V0aW5nIHRhYmxlcyBhcmUgYWRkZWQgb3IgcmVtb3ZlZCBkdXJpbmcgYSBtdWx0aXBhcnQgbmV0bGluayBkdW1wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFY2JiMzNDssCiAgICAmIzM0O0lQVjZfTVVMVElQTEVfVEFCTEVTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW5ldDZfZHVtcF9maWImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGl0ZXJhdGlvbiBsb2dpYyBpbiBgaW5ldDZfZHVtcF9maWJgIGZvciBJUHY2IEZJQiBuZXRsaW5rIGR1bXBzLiBJdCBzd2l0Y2hlcyBmcm9tIHVzaW5nIGFuIGluZGV4IHRvIHVzaW5nIHRoZSB0YWJsZSBJRCB0byByZXN1bWUgZHVtcHMsIHdoaWNoIGZpeGVzIHBvdGVudGlhbCBpc3N1ZXMgd2hlbiByb3V0aW5nIHRhYmxlcyBhcmUgYWRkZWQgb3IgcmVtb3ZlZCBkdXJpbmcgYSBtdWx0aXBhcnQgbmV0bGluayBkdW1wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDE6NDk6MDUuMjk2ODc0MjdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzcyNTc1NzI1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFY2XCIsXG4gICAgXCJJUFY2X01VTFRJUExFX1RBQkxFU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImluZXQ2X2R1bXBfZmliXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGl0ZXJhdGlvbiBsb2dpYyBpbiBgaW5ldDZfZHVtcF9maWJgIGZvciBJUHY2IEZJQiBuZXRsaW5rIGR1bXBzLiBJdCBzd2l0Y2hlcyBmcm9tIHVzaW5nIGFuIGluZGV4IHRvIHVzaW5nIHRoZSB0YWJsZSBJRCB0byByZXN1bWUgZHVtcHMsIHdoaWNoIGZpeGVzIHBvdGVudGlhbCBpc3N1ZXMgd2hlbiByb3V0aW5nIHRhYmxlcyBhcmUgYWRkZWQgb3IgcmVtb3ZlZCBkdXJpbmcgYSBtdWx0aXBhcnQgbmV0bGluayBkdW1wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwMTo0OTowNS4yOTY4ODEwNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkyOTAyMzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDJlYWVmZDI4MjZlNGQ0NzRkM2QyYjMyMzI5MGFlOGUwYmNjNTI0ZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1biAyNSAwMTo0OTowMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfZmliLmMgYi9uZXQvaXB2Ni9pcDZfZmliLmNcXG5pbmRleCBmYzk1NzM4ZGVkNzYxYi4uYmRhNDkyNjM0ODU5MjMgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvaXA2X2ZpYi5jXFxuKysrIGIvbmV0L2lwdjYvaXA2X2ZpYi5jXFxuQEAgLTYzNiwxMSArNjM2LDExIEBAIHN0YXRpYyBpbnQgaW5ldDZfZHVtcF9maWIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbiBcXHR9O1xcbiBcXHRjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCA9IGNiLVxcdTAwM2VubGg7XFxuIFxcdHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrYi1cXHUwMDNlc2spO1xcbi1cXHR1bnNpZ25lZCBpbnQgZSA9IDAsIHNfZTtcXG4gXFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQ7XFxuIFxcdHN0cnVjdCBmaWI2X3dhbGtlciAqdztcXG4gXFx0c3RydWN0IGZpYjZfdGFibGUgKnRiO1xcbiBcXHR1bnNpZ25lZCBpbnQgaCwgc19oO1xcbitcXHR1MzIgc19pZDtcXG4gXFx0aW50IGVyciA9IDA7XFxuIFxcbiBcXHRyY3VfcmVhZF9sb2NrKCk7XFxuQEAgLTcwMSwyMyArNzAxLDIyIEBAIHN0YXRpYyBpbnQgaW5ldDZfZHVtcF9maWIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbiBcXHR9XFxuIFxcbiBcXHRzX2ggPSBjYi1cXHUwMDNlYXJnc1swXTtcXG4tXFx0c19lID0gY2ItXFx1MDAzZWFyZ3NbMV07XFxuK1xcdHNfaWQgPSBjYi1cXHUwMDNlYXJnc1sxXTtcXG4gXFxuLVxcdGZvciAoaCA9IHNfaDsgaCBcXHUwMDNjIEZJQjZfVEFCTEVfSEFTSFNaOyBoKyssIHNfZSA9IDApIHtcXG4tXFx0XFx0ZSA9IDA7XFxuK1xcdGZvciAoaCA9IHNfaDsgaCBcXHUwMDNjIEZJQjZfVEFCTEVfSEFTSFNaOyBoKyssIHNfaWQgPSAwKSB7XFxuIFxcdFxcdGhlYWQgPSBcXHUwMDI2bmV0LVxcdTAwM2VpcHY2LmZpYl90YWJsZV9oYXNoW2hdO1xcbiBcXHRcXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UodGIsIGhlYWQsIHRiNl9obGlzdCkge1xcbi1cXHRcXHRcXHRpZiAoZSBcXHUwMDNjIHNfZSlcXG4tXFx0XFx0XFx0XFx0Z290byBuZXh0O1xcbitcXHRcXHRcXHRpZiAoc19pZCBcXHUwMDI2XFx1MDAyNiB0Yi1cXHUwMDNldGI2X2lkICE9IHNfaWQpXFxuK1xcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHRcXHRzX2lkID0gMDtcXG4rXFxuK1xcdFxcdFxcdGNiLVxcdTAwM2VhcmdzWzFdID0gdGItXFx1MDAzZXRiNl9pZDtcXG4gXFx0XFx0XFx0ZXJyID0gZmliNl9kdW1wX3RhYmxlKHRiLCBza2IsIGNiKTtcXG4gXFx0XFx0XFx0aWYgKGVyciAhPSAwKVxcbiBcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4tbmV4dDpcXG4tXFx0XFx0XFx0ZSsrO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4gb3V0Olxcbi1cXHRjYi1cXHUwMDNlYXJnc1sxXSA9IGU7XFxuIFxcdGNiLVxcdTAwM2VhcmdzWzBdID0gaDtcXG4gXFxuIHVubG9jazpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDE6NDk6MDUuODkwNTk0MjY1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzEzMjAyNjQwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFY2XCIsXG4gICAgXCJJUFY2X01VTFRJUExFX1RBQkxFU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImluZXQ2X2R1bXBfZmliXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGl0ZXJhdGlvbiBsb2dpYyBpbiBgaW5ldDZfZHVtcF9maWJgIGZvciBJUHY2IEZJQiBuZXRsaW5rIGR1bXBzLiBJdCBzd2l0Y2hlcyBmcm9tIHVzaW5nIGFuIGluZGV4IHRvIHVzaW5nIHRoZSB0YWJsZSBJRCB0byByZXN1bWUgZHVtcHMsIHdoaWNoIGZpeGVzIHBvdGVudGlhbCBpc3N1ZXMgd2hlbiByb3V0aW5nIHRhYmxlcyBhcmUgYWRkZWQgb3IgcmVtb3ZlZCBkdXJpbmcgYSBtdWx0aXBhcnQgbmV0bGluayBkdW1wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDAyZWFlZmQyODI2ZTRkNDc0ZDNkMmIzMjMyOTBhZThlMGJjYzUyNGVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1biAyNSAwMTo0OTowMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9maWIuYyBiL25ldC9pcHY2L2lwNl9maWIuY1xuaW5kZXggZmM5NTczOGRlZDc2MWIuLmJkYTQ5MjYzNDg1OTIzIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvaXA2X2ZpYi5jXG4rKysgYi9uZXQvaXB2Ni9pcDZfZmliLmNcbkBAIC02MzYsMTEgKzYzNiwxMSBAQCBzdGF0aWMgaW50IGluZXQ2X2R1bXBfZmliKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbiBcdH07XG4gXHRjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCA9IGNiLVx1MDAzZW5saDtcbiBcdHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrYi1cdTAwM2Vzayk7XG4tXHR1bnNpZ25lZCBpbnQgZSA9IDAsIHNfZTtcbiBcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkO1xuIFx0c3RydWN0IGZpYjZfd2Fsa2VyICp3O1xuIFx0c3RydWN0IGZpYjZfdGFibGUgKnRiO1xuIFx0dW5zaWduZWQgaW50IGgsIHNfaDtcbitcdHUzMiBzX2lkO1xuIFx0aW50IGVyciA9IDA7XG4gXG4gXHRyY3VfcmVhZF9sb2NrKCk7XG5AQCAtNzAxLDIzICs3MDEsMjIgQEAgc3RhdGljIGludCBpbmV0Nl9kdW1wX2ZpYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG4gXHR9XG4gXG4gXHRzX2ggPSBjYi1cdTAwM2VhcmdzWzBdO1xuLVx0c19lID0gY2ItXHUwMDNlYXJnc1sxXTtcbitcdHNfaWQgPSBjYi1cdTAwM2VhcmdzWzFdO1xuIFxuLVx0Zm9yIChoID0gc19oOyBoIFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaCsrLCBzX2UgPSAwKSB7XG4tXHRcdGUgPSAwO1xuK1x0Zm9yIChoID0gc19oOyBoIFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaCsrLCBzX2lkID0gMCkge1xuIFx0XHRoZWFkID0gXHUwMDI2bmV0LVx1MDAzZWlwdjYuZmliX3RhYmxlX2hhc2hbaF07XG4gXHRcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSh0YiwgaGVhZCwgdGI2X2hsaXN0KSB7XG4tXHRcdFx0aWYgKGUgXHUwMDNjIHNfZSlcbi1cdFx0XHRcdGdvdG8gbmV4dDtcbitcdFx0XHRpZiAoc19pZCBcdTAwMjZcdTAwMjYgdGItXHUwMDNldGI2X2lkICE9IHNfaWQpXG4rXHRcdFx0XHRjb250aW51ZTtcbitcdFx0XHRzX2lkID0gMDtcbitcbitcdFx0XHRjYi1cdTAwM2VhcmdzWzFdID0gdGItXHUwMDNldGI2X2lkO1xuIFx0XHRcdGVyciA9IGZpYjZfZHVtcF90YWJsZSh0Yiwgc2tiLCBjYik7XG4gXHRcdFx0aWYgKGVyciAhPSAwKVxuIFx0XHRcdFx0Z290byBvdXQ7XG4tbmV4dDpcbi1cdFx0XHRlKys7XG4gXHRcdH1cbiBcdH1cbiBvdXQ6XG4tXHRjYi1cdTAwM2VhcmdzWzFdID0gZTtcbiBcdGNiLVx1MDAzZWFyZ3NbMF0gPSBoO1xuIFxuIHVubG9jazpcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDAxOjQ5OjA1Ljg5MDU5NTQzNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NjcxMDYyMDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSVB2NiBGSUIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdHdlYWtzIGBuZXQvaXB2Ni9pcDZfZmliLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIGZvY3VzZWQgb24gYGluZXQ2X2R1bXBfZmliYC4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIHN1YnN0aXR1dGluZyBgc19lYCwgd2hpY2ggSSBhc3N1bWUgaXMgYW4gaW5kZXggb3Igc29tZXRoaW5nIHNpbWlsYXIsIHdpdGggYHNfaWRgLCBhIHRhYmxlIElELCBpbiB0aGUgaXRlcmF0aW9uIHByb2Nlc3Mgd2l0aGluIGBpbmV0Nl9kdW1wX2ZpYmAuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGNoYW5nZSB3aXRoaW4gdGhlIElQdjYgbmV0d29ya2luZyBzdGFjaywgc3BlY2lmaWNhbGx5IGhvdyB0aGUgSVB2NiBGSUIgaXMgZHVtcGVkIG92ZXIgbmV0bGluay5cblxuR2l2ZW4gdGhlIHBvdGVudGlhbCBpbXBhY3Qgb24gZGF0YSBvdXRwdXQgYW5kIHRoZSBjb3JlIG5ldHdvcmsgZnVuY3Rpb25hbGl0eSBpbnZvbHZlZCwgZnV6emluZyBpcyBhbiBhYnNvbHV0ZSBtdXN0IGhlcmUuIFdlIG5lZWQgdG8gcmVhbGx5IHB1dCBpdCB0aHJvdWdoIGl0cyBwYWNlcy5cblxuRmlyc3QgdGhpbmdzIGZpcnN0LCBJJ2xsIGxvY2F0ZSBgaW5ldDZfZHVtcF9maWJgIGl0c2VsZiB3aXRoaW4gYG5ldC9pcHY2L2lwNl9maWIuY2AgdG8gdW5kZXJzdGFuZCB0aGUgY29kZSBjb250ZXh0IGRpcmVjdGx5LiBUaGVuLCBJIG5lZWQgdG8gaWRlbnRpZnkgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBTaW5jZSB3ZSdyZSBkZWFsaW5nIHdpdGggSVB2NiwgaXQncyBoaWdobHkgbGlrZWx5IHRoYXQgYENPTkZJR19JUFY2YCBpcyB0aGUga2V5LiBJ4oCZbGwgZG91YmxlLWNoZWNrIGBuZXQvaXB2Ni9LY29uZmlnYCB0byBiZSBjZXJ0YWluLiBHZXR0aW5nIHRoZSBjb25maWd1cmF0aW9uIHJpZ2h0IGlzIGNyaXRpY2FsIGZvciBhIHZhbGlkIHRlc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNDgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwMTo0OToxMC43NTc3MDQwMjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4Mjk3MDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImluZXQ2X2R1bXBfZmliXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L2lwNl9maWIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9pcDZfZmliLmM9NTg1PXN0YXRpYyBpbnQgZmliNl9kdW1wX3RhYmxlKHN0cnVjdCBmaWI2X3RhYmxlICp0YWJsZSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9pcHY2L2lwNl9maWIuYy02MzAtXFxubmV0L2lwdjYvaXA2X2ZpYi5jOjYzMTpzdGF0aWMgaW50IGluZXQ2X2R1bXBfZmliKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcXG5uZXQvaXB2Ni9pcDZfZmliLmMtNjMyLXtcXG4tLVxcbm5ldC9pcHY2L2lwNl9maWIuYz0yNTYwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRubF9tc2dfaGFuZGxlciBmaWI2X3J0bmxfbXNnX2hhbmRsZXJzW10gX19pbml0Y29uc3Rfb3JfbW9kdWxlID0ge1xcbm5ldC9pcHY2L2lwNl9maWIuYy0yNTYxLVxcdHsub3duZXIgPSBUSElTX01PRFVMRSwgLnByb3RvY29sID0gUEZfSU5FVDYsIC5tc2d0eXBlID0gUlRNX0dFVFJPVVRFLFxcbm5ldC9pcHY2L2lwNl9maWIuYzoyNTYyOlxcdCAuZHVtcGl0ID0gaW5ldDZfZHVtcF9maWIsXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTI1NjMtXFx0IC5mbGFncyA9IFJUTkxfRkxBR19EVU1QX1VOTE9DS0VEIHwgUlROTF9GTEFHX0RVTVBfU1BMSVRfTkxNX0RPTkV9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwMTo0OToxMC45MjYwMDgwODNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDc0MjI4NjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBJUHY2IFJvdXRpbmcgVGFibGUgRHVtcHMqKlxuXG5Pa2F5LCBzbyBgaW5ldDZfZHVtcF9maWJgIGlzIHRoZSBoYW5kbGVyIHRoYXQga2lja3MgaW4gd2hlbiB3ZSBkbyBhIGBSVE1fR0VUUk9VVEVgIHJlcXVlc3Qgc3BlY2lmaWNhbGx5IGZvciBJUHY2ICh0aGF0J3MgYFBGX0lORVQ2YCkuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0J3MgdGhlIG5ldGxpbmsgaW50ZXJmYWNlIHRvIGdldCByb3V0aW5nIGluZm9ybWF0aW9uLCB3aGljaCBpcyB3aGF0IEknZCBleHBlY3QuIFNvLCBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLiBcblxuTm93LCBJIG5lZWQgdG8gY29uZmlybSB0aGUgZW5hYmxpbmcgY29uZGl0aW9uOiBgSVBWNmAuIEp1c3QgbWFraW5nIHN1cmUsIGFyZSB0aGVyZSAqYW55KiBvdGhlciBjb25maWcgb3B0aW9ucyBpbnZvbHZlZCB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24/IEdvdHRhIGJlIHRob3JvdWdoLiBUaW1lIHRvIGNyYWNrIG9wZW4gYG5ldC9pcHY2L0tjb25maWdgIGFuZCBzZWUgd2hhdCBlbHNlIGNvdWxkIGJlIGx1cmtpbmcgaW4gdGhlcmUgYXJvdW5kIGBJUFY2YC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAzMSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDAxOjQ5OjE0LjAwMDIzOTEzN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODUzNTU4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBWNlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L0tjb25maWctNS1cXG5uZXQvaXB2Ni9LY29uZmlnOjY6bWVudWNvbmZpZyBJUFY2XFxubmV0L2lwdjYvS2NvbmZpZy03LVxcdGJvb2wgXFxcIlRoZSBJUHY2IHByb3RvY29sXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xOT1pZiBJUFY2XFxubmV0L2lwdjYvS2NvbmZpZy0yMC1cXG5uZXQvaXB2Ni9LY29uZmlnOjIxOmNvbmZpZyBJUFY2X1JPVVRFUl9QUkVGXFxubmV0L2lwdjYvS2NvbmZpZy0yMi1cXHRib29sIFxcXCJJUHY2OiBSb3V0ZXIgUHJlZmVyZW5jZSAoUkZDIDQxOTEpIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTMwLVxcbm5ldC9pcHY2L0tjb25maWc6MzE6Y29uZmlnIElQVjZfUk9VVEVfSU5GT1xcbm5ldC9pcHY2L0tjb25maWctMzItXFx0Ym9vbCBcXFwiSVB2NjogUm91dGUgSW5mb3JtYXRpb24gKFJGQyA0MTkxKSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zOC1cXG5uZXQvaXB2Ni9LY29uZmlnOjM5OmNvbmZpZyBJUFY2X09QVElNSVNUSUNfREFEXFxubmV0L2lwdjYvS2NvbmZpZy00MC1cXHRib29sIFxcXCJJUHY2OiBFbmFibGUgUkZDIDQ0MjkgT3B0aW1pc3RpYyBEQURcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTEwMj1jb25maWcgSU5FVDZfSVBDT01QXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTExMS1cXG5uZXQvaXB2Ni9LY29uZmlnOjExMjpjb25maWcgSVBWNl9NSVA2XFxubmV0L2lwdjYvS2NvbmZpZy0xMTMtXFx0dHJpc3RhdGUgXFxcIklQdjY6IE1vYmlsaXR5XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xMTktXFxubmV0L2lwdjYvS2NvbmZpZzoxMjA6Y29uZmlnIElQVjZfSUxBXFxubmV0L2lwdjYvS2NvbmZpZy0xMjEtXFx0dHJpc3RhdGUgXFxcIklQdjY6IElkZW50aWZpZXIgTG9jYXRvciBBZGRyZXNzaW5nIChJTEEpXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xNDY9Y29uZmlnIElORVQ2X1RVTk5FTFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xNDktXFxubmV0L2lwdjYvS2NvbmZpZzoxNTA6Y29uZmlnIElQVjZfVlRJXFxubmV0L2lwdjYvS2NvbmZpZy0xNTEtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgKHNlY3VyZSkgSVB2NjogdHVubmVsaW5nXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xNjEtXFxubmV0L2lwdjYvS2NvbmZpZzoxNjI6Y29uZmlnIElQVjZfU0lUXFxubmV0L2lwdjYvS2NvbmZpZy0xNjMtXFx0dHJpc3RhdGUgXFxcIklQdjY6IElQdjYtaW4tSVB2NCB0dW5uZWwgKFNJVCBkcml2ZXIpXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xNzYtXFxubmV0L2lwdjYvS2NvbmZpZzoxNzc6Y29uZmlnIElQVjZfU0lUXzZSRFxcbm5ldC9pcHY2L0tjb25maWctMTc4LVxcdGJvb2wgXFxcIklQdjY6IElQdjYgUmFwaWQgRGVwbG95bWVudCAoNlJEKVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTk1LVxcbm5ldC9pcHY2L0tjb25maWc6MTk2OmNvbmZpZyBJUFY2X05ESVNDX05PREVUWVBFXFxubmV0L2lwdjYvS2NvbmZpZy0xOTctXFx0Ym9vbFxcbm5ldC9pcHY2L0tjb25maWctMTk4LVxcbm5ldC9pcHY2L0tjb25maWc6MTk5OmNvbmZpZyBJUFY2X1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMjAwLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBJUC1pbi1JUHY2IHR1bm5lbCAoUkZDMjQ3MylcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIwOS1cXG5uZXQvaXB2Ni9LY29uZmlnOjIxMDpjb25maWcgSVBWNl9HUkVcXG5uZXQvaXB2Ni9LY29uZmlnLTIxMS1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogR1JFIHR1bm5lbFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjI3LVxcbm5ldC9pcHY2L0tjb25maWc6MjI4OmNvbmZpZyBJUFY2X0ZPVVxcbm5ldC9pcHY2L0tjb25maWctMjI5LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIzMS1cXG5uZXQvaXB2Ni9LY29uZmlnOjIzMjpjb25maWcgSVBWNl9GT1VfVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0yMzMtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjM2LVxcbm5ldC9pcHY2L0tjb25maWc6MjM3OmNvbmZpZyBJUFY2X01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY2L0tjb25maWctMjM4LVxcdGJvb2wgXFxcIklQdjY6IE11bHRpcGxlIFJvdXRpbmcgVGFibGVzXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yNDItXFxubmV0L2lwdjYvS2NvbmZpZzoyNDM6Y29uZmlnIElQVjZfU1VCVFJFRVNcXG5uZXQvaXB2Ni9LY29uZmlnLTI0NC1cXHRib29sIFxcXCJJUHY2OiBzb3VyY2UgYWRkcmVzcyBiYXNlZCByb3V0aW5nXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yNTYtXFxubmV0L2lwdjYvS2NvbmZpZzoyNTc6Y29uZmlnIElQVjZfTVJPVVRFXFxubmV0L2lwdjYvS2NvbmZpZy0yNTgtXFx0Ym9vbCBcXFwiSVB2NjogbXVsdGljYXN0IHJvdXRpbmdcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTI2NC1cXG5uZXQvaXB2Ni9LY29uZmlnOjI2NTpjb25maWcgSVBWNl9NUk9VVEVfTVVMVElQTEVfVEFCTEVTXFxubmV0L2lwdjYvS2NvbmZpZy0yNjYtXFx0Ym9vbCBcXFwiSVB2NjogbXVsdGljYXN0IHBvbGljeSByb3V0aW5nXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yNzgtXFxubmV0L2lwdjYvS2NvbmZpZzoyNzk6Y29uZmlnIElQVjZfUElNU01fVjJcXG5uZXQvaXB2Ni9LY29uZmlnLTI4MC1cXHRib29sIFxcXCJJUHY2OiBQSU0tU00gdmVyc2lvbiAyIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTI4NS1cXG5uZXQvaXB2Ni9LY29uZmlnOjI4Njpjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0yODctXFx0Ym9vbCBcXFwiSVB2NjogU2VnbWVudCBSb3V0aW5nIEhlYWRlciBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTI5OS1cXG5uZXQvaXB2Ni9LY29uZmlnOjMwMDpjb25maWcgSVBWNl9TRUc2X0hNQUNcXG5uZXQvaXB2Ni9LY29uZmlnLTMwMS1cXHRib29sIFxcXCJJUHY2OiBTZWdtZW50IFJvdXRpbmcgSE1BQyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMTEtXFxubmV0L2lwdjYvS2NvbmZpZzozMTI6Y29uZmlnIElQVjZfU0VHNl9CUEZcXG5uZXQvaXB2Ni9LY29uZmlnLTMxMy1cXHRkZWZfYm9vbCB5XFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTMxNi1cXG5uZXQvaXB2Ni9LY29uZmlnOjMxNzpjb25maWcgSVBWNl9SUExfTFdUVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTMxOC1cXHRib29sIFxcXCJJUHY2OiBSUEwgU291cmNlIFJvdXRpbmcgSGVhZGVyIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTMyNy1cXG5uZXQvaXB2Ni9LY29uZmlnOjMyODpjb25maWcgSVBWNl9JT0FNNl9MV1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMzI5LVxcdGJvb2wgXFxcIklQdjY6IElPQU0gUHJlLWFsbG9jYXRlZCBUcmFjZSBpbnNlcnRpb24gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDE6NDk6MTQuMDU4Nzg0Nzc2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE3MTc5MjM4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQdjYgUm91dGluZyBUYWJsZSBEdW1wIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IHRvdWNoaW5nIGBpbmV0Nl9kdW1wX2ZpYmAsIHdoaWNoIG1lYW5zIGl0J3MgaW52b2x2ZWQgaW4gZHVtcGluZyB0aGUgSVB2NiByb3V0aW5nIHRhYmxlLiBJIHNlZSBpdCBpdGVyYXRlcyBvdmVyIGBGSUI2X1RBQkxFX0hBU0hTWmAuIFRoYXQncyB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IgZm9yIGEgc3RhbmRhcmQgSVB2NiByb3V0aW5nIHRhYmxlIGR1bXAuIE5vdGhpbmcgaW1tZWRpYXRlbHkganVtcHMgb3V0IGFzIGFsYXJtaW5nIGhlcmUuXG5cbkknbSB0aGlua2luZywgYElQVjZfTVVMVElQTEVfVEFCTEVTYCBjb3VsZCBiZSBzb21ldGhpbmcgdG8gY29uc2lkZXIgc2luY2UgaXQncyBhYm91dCBtdWx0aXBsZSByb3V0aW5nIHRhYmxlcy4gQnV0IHdhaXQsIGl0J3Mgc3RpbGwgdXNpbmcgYEZJQjZfVEFCTEVfSEFTSFNaYCByZWdhcmRsZXNzLCBldmVuIGlmIGl0J3MganVzdCAxIHdoZW4gbXVsdGlwbGUgdGFibGVzIGFyZW4ndCBlbmFibGVkLiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgd2hhdCB0aGUgdmFsdWUgb2YgYEZJQjZfVEFCTEVfSEFTSFNaYCBpcyBleGFjdGx5IGluIHRoaXMgY29udGV4dC4gTmVlZCB0byB2ZXJpZnkgdGhhdCdzIHRoZSBjb3JyZWN0IGFwcHJvYWNoIGdpdmVuIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg1MCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwMTo0OToxOC4yMzA1NzkzNjRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODcxMzg2NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRklCNl9UQUJMRV9IQVNIU1pcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L2lwNl9maWIuYz0yMTM9c3RhdGljIHZvaWQgZmliNl9saW5rX3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZpYjZfdGFibGUgKnRiKVxcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTIyMS1cXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2dGItXFx1MDAzZXRiNl9sb2NrKTtcXG5uZXQvaXB2Ni9pcDZfZmliLmM6MjIyOlxcdGggPSB0Yi1cXHUwMDNldGI2X2lkIFxcdTAwMjYgKEZJQjZfVEFCTEVfSEFTSFNaIC0gMSk7XFxubmV0L2lwdjYvaXA2X2ZpYi5jLTIyMy1cXG4tLVxcbm5ldC9pcHY2L2lwNl9maWIuYz0yODI9c3RydWN0IGZpYjZfdGFibGUgKmZpYjZfZ2V0X3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkKVxcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTI4OS1cXG5uZXQvaXB2Ni9pcDZfZmliLmM6MjkwOlxcdGhlYWQgPSBcXHUwMDI2bmV0LVxcdTAwM2VpcHY2LmZpYl90YWJsZV9oYXNoW2lkIFxcdTAwMjYgKEZJQjZfVEFCTEVfSEFTSFNaIC0gMSldO1xcbm5ldC9pcHY2L2lwNl9maWIuYy0yOTEtXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmM9MzU2PXVuc2lnbmVkIGludCBmaWI2X3RhYmxlc19zZXFfcmVhZChjb25zdCBzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmMtMzYwLVxcdHJjdV9yZWFkX2xvY2soKTtcXG5uZXQvaXB2Ni9pcDZfZmliLmM6MzYxOlxcdGZvciAoaCA9IDA7IGggXFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaCsrKSB7XFxubmV0L2lwdjYvaXA2X2ZpYi5jLTM2Mi1cXHRcXHRjb25zdCBzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZCA9IFxcdTAwMjZuZXQtXFx1MDAzZWlwdjYuZmliX3RhYmxlX2hhc2hbaF07XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmM9NDkyPWludCBmaWI2X3RhYmxlc19kdW1wKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcXG4tLVxcbm5ldC9pcHY2L2lwNl9maWIuYy01MDktXFxubmV0L2lwdjYvaXA2X2ZpYi5jOjUxMDpcXHRmb3IgKGggPSAwOyBoIFxcdTAwM2MgRklCNl9UQUJMRV9IQVNIU1o7IGgrKykge1xcbm5ldC9pcHY2L2lwNl9maWIuYy01MTEtXFx0XFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQgPSBcXHUwMDI2bmV0LVxcdTAwM2VpcHY2LmZpYl90YWJsZV9oYXNoW2hdO1xcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jPTYzMT1zdGF0aWMgaW50IGluZXQ2X2R1bXBfZmliKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcXG4tLVxcbm5ldC9pcHY2L2lwNl9maWIuYy03MDUtXFxubmV0L2lwdjYvaXA2X2ZpYi5jOjcwNjpcXHRmb3IgKGggPSBzX2g7IGggXFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaCsrLCBzX2lkID0gMCkge1xcbm5ldC9pcHY2L2lwNl9maWIuYy03MDctXFx0XFx0aGVhZCA9IFxcdTAwMjZuZXQtXFx1MDAzZWlwdjYuZmliX3RhYmxlX2hhc2hbaF07XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmM9MjMwOD1zdGF0aWMgdm9pZCBfX2ZpYjZfY2xlYW5fYWxsKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9pcHY2L2lwNl9maWIuYy0yMzE2LVxcdHJjdV9yZWFkX2xvY2soKTtcXG5uZXQvaXB2Ni9pcDZfZmliLmM6MjMxNzpcXHRmb3IgKGggPSAwOyBoIFxcdTAwM2MgRklCNl9UQUJMRV9IQVNIU1o7IGgrKykge1xcbm5ldC9pcHY2L2lwNl9maWIuYy0yMzE4LVxcdFxcdGhlYWQgPSBcXHUwMDI2bmV0LVxcdTAwM2VpcHY2LmZpYl90YWJsZV9oYXNoW2hdO1xcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jPTI0MDY9c3RhdGljIHZvaWQgZmliNl9nY19hbGwoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmliNl9nY19hcmdzICpnY19hcmdzKVxcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTI0MTItXFx0cmN1X3JlYWRfbG9jaygpO1xcbm5ldC9pcHY2L2lwNl9maWIuYzoyNDEzOlxcdGZvciAoaCA9IDA7IGggXFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaCsrKSB7XFxubmV0L2lwdjYvaXA2X2ZpYi5jLTI0MTQtXFx0XFx0aGVhZCA9IFxcdTAwMjZuZXQtXFx1MDAzZWlwdjYuZmliX3RhYmxlX2hhc2hbaF07XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmM9MjQ2MT1zdGF0aWMgaW50IF9fbmV0X2luaXQgZmliNl9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTI0NjIte1xcbm5ldC9pcHY2L2lwNl9maWIuYzoyNDYzOlxcdHNpemVfdCBzaXplID0gc2l6ZW9mKHN0cnVjdCBobGlzdF9oZWFkKSAqIEZJQjZfVEFCTEVfSEFTSFNaO1xcbm5ldC9pcHY2L2lwNl9maWIuYy0yNDY0LVxcdGludCBlcnI7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmM9MjUzMz1zdGF0aWMgdm9pZCBmaWI2X25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9pcHY2L2lwNl9maWIuYy0yNTM4LVxcbm5ldC9pcHY2L2lwNl9maWIuYzoyNTM5OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaSsrKSB7XFxubmV0L2lwdjYvaXA2X2ZpYi5jLTI1NDAtXFx0XFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQgPSBcXHUwMDI2bmV0LVxcdTAwM2VpcHY2LmZpYl90YWJsZV9oYXNoW2ldO1xcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jPTI2Njc9c3RhdGljIHN0cnVjdCBmaWI2X3RhYmxlICppcHY2X3JvdXRlX3NlcV9uZXh0X3RhYmxlKHN0cnVjdCBmaWI2X3RhYmxlICp0YmwsXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjY3My1cXHRpZiAodGJsKSB7XFxubmV0L2lwdjYvaXA2X2ZpYi5jOjI2NzQ6XFx0XFx0aCA9ICh0YmwtXFx1MDAzZXRiNl9pZCBcXHUwMDI2IChGSUI2X1RBQkxFX0hBU0hTWiAtIDEpKSArIDE7XFxubmV0L2lwdjYvaXA2X2ZpYi5jLTI2NzUtXFx0XFx0bm9kZSA9IHJjdV9kZXJlZmVyZW5jZShobGlzdF9uZXh0X3JjdShcXHUwMDI2dGJsLVxcdTAwM2V0YjZfaGxpc3QpKTtcXG4tLVxcbm5ldC9pcHY2L2lwNl9maWIuYy0yNjgwLVxcbm5ldC9pcHY2L2lwNl9maWIuYzoyNjgxOlxcdHdoaWxlICghbm9kZSBcXHUwMDI2XFx1MDAyNiBoIFxcdTAwM2MgRklCNl9UQUJMRV9IQVNIU1opIHtcXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjY4Mi1cXHRcXHRub2RlID0gcmN1X2RlcmVmZXJlbmNlKFxcbi0tXFxubmV0L2lwdjYvcm91dGUuYz00NTM2PXZvaWQgcnQ2X3B1cmdlX2RmbHRfcm91dGVycyhzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ1NDMtXFxubmV0L2lwdjYvcm91dGUuYzo0NTQ0OlxcdGZvciAoaCA9IDA7IGggXFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaCsrKSB7XFxubmV0L2lwdjYvcm91dGUuYy00NTQ1LVxcdFxcdGhlYWQgPSBcXHUwMDI2bmV0LVxcdTAwM2VpcHY2LmZpYl90YWJsZV9oYXNoW2hdO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwMTo0OToxOC4zMTc3Mjg5OTJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzA3NDgzNTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqTmV0d29yayBSb3V0aW5nIFRhYmxlIENvbnRleHR1YWxpemF0aW9uKipcblxuUmlnaHQsIGBJUFY2X01VTFRJUExFX1RBQkxFU2AganVtcHMgb3V0IGltbWVkaWF0ZWx5LiBJZiB0aGF0J3MgKm5vdCogZW5hYmxlZCwgd2UncmUgc3R1Y2sgd2l0aCBqdXN0IHRoZSBtYWluIGFuZCBsb2NhbCByb3V0aW5nIHRhYmxlcy4gVGhhdCdzIHByZXR0eSBsaW1pdGluZy4gQnV0IHRoZW4gSSdtIHNlZWluZyB0aGlzIGBGSUI2X1RBQkxFX0hBU0hTWmAgdmFsdWUgb2YgMjU2LCBhbmQgdGhhdCBkb2Vzbid0IGZlZWwgcmlnaHQgaW4gdGhpcyB0d28tdGFibGUgY29udGV4dC4gSXQgZmVlbHMgbGlrZSBtb3JlIHRoYW4gMjU2LiBTb21ldGhpbmcgZmVlbHMgb2ZmIGFib3V0IHRoYXQgY29tYmluYXRpb24uIExldCBtZSBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBgaW5jbHVkZS9uZXQvaXA2X2ZpYi5oYCBoZWFkZXIgZmlsZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBkZWZpbml0aW9uIG9mIGBGSUI2X1RBQkxFX0hBU0hTWmAgYW5kIGhvdyBpdCdzIHVzZWQgd2l0aGluIHRoZSBJUHY2IGZvcndhcmRpbmcgaW5mb3JtYXRpb24gYmFzZS4gSSBzaG91bGQgc3RhcnQgdGhlcmUsIGFuZCBzZWUgaG93IHRoZSB0d28gYXJlIHRpZWQgdG9nZXRoZXIuIEknbSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBzb3VyY2UgZm9yIHRoYXQgbWFjcm8gZGVmaW5pdGlvbiB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzgyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDE6NDk6MjEuNjI1MjE1MTIxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDY4MDMwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJGSUI2X1RBQkxFX0hBU0hTWlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL25ldC9pcDZfZmliLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvaXA2X2ZpYi5oLTI1LSNpZmRlZiBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG5pbmNsdWRlL25ldC9pcDZfZmliLmg6MjY6I2RlZmluZSBGSUI2X1RBQkxFX0hBU0hTWiAyNTZcXG5pbmNsdWRlL25ldC9pcDZfZmliLmgtMjctI2Vsc2VcXG5pbmNsdWRlL25ldC9pcDZfZmliLmg6Mjg6I2RlZmluZSBGSUI2X1RBQkxFX0hBU0hTWiAxXFxuaW5jbHVkZS9uZXQvaXA2X2ZpYi5oLTI5LSNlbmRpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwMTo0OToyMS42OTU5MDE1OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTIwMDA4MjIzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldGxpbmsgRHVtcCBGaXggZm9yIElQdjYgRklCIFRhYmxlcyoqXG5cbk9rYXksIHNvIHRoZSBgRklCNl9UQUJMRV9IQVNIU1pgIHZhbHVlIGlzIGNvbmRpdGlvbmFsIOKAkyBpdCdzIDI1NiB3aGVuIGBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNgIGlzIGVuYWJsZWQsIGFuZCAxIG90aGVyd2lzZS4gVGhpcyBpcyBpbW1lZGlhdGVseSByZWxldmFudC4gVGhlIGJ1ZyBiZWluZyBmaXhlZCBoZXJlIGFwcGVhcnMgdG8gYmUgaW4gdGhlIG5ldGxpbmsgZHVtcCdzIGhhbmRsaW5nIG9mIG11bHRpcGxlIHRhYmxlcywgYW5kIHRoZSBjcnVjaWFsIHBvaW50IGlzIGhvdyB0aGUgc3RhdGUgaXMgc2F2ZWQgYW5kIHJlc3VtZWQgZHVyaW5nIHRoZSBkdW1wIHByb2Nlc3MuIElmIHRoZSBjb2RlIHdhcyB1c2luZyBgc19lYCBhcyBhbiBpbmRleCBhbmQgdGFibGVzIHdlcmUgYWRkZWQgb3IgcmVtb3ZlZCBtaWQtZHVtcCwgaXQncyBjbGVhciB0aGUgaXRlcmF0aW9uIGNvdWxkIGdvIGF3cnksIGxlYWRpbmcgdG8gdGhlIGR1bXAgbWlzc2luZyBvciBkdXBsaWNhdGluZyBzb21lIHRhYmxlcy5cblxuVGhlIGZpeCwgYW5kIHRoaXMgaXMgdGhlIGNvcmUgb2YgaXQsIGNsZXZlcmx5IHN3aXRjaGVzIHRvIHVzaW5nIGBzX2lkYCwgd2hpY2ggcmVwcmVzZW50cyB0aGUgdGFibGUgSUQgKGB0Yi1cdTAwM2V0YjZfaWRgKSwgdG8gcmVzdW1lIGNvcnJlY3RseS4gVGhpcyBpcyBhbiBpbXByb3ZlbWVudCB0byBgaW5ldDZfZHVtcF9maWJgLiBJdCBzYXZlcyB0aGUgdGFibGUgSUQsIGluc3RlYWQgb2YgcmVseWluZyBvbiBhIHBvdGVudGlhbGx5IHVuc3RhYmxlIGluZGV4LlxuXG5UbyBtYWtlIHN1cmUgdGhpcyB0cmlnZ2Vycywgd2UnbGwgbmVlZCBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgLCB3aGljaCBhY3RpdmF0ZXMgdGhlIG11bHRpcGxlIHRhYmxlIHNjZW5hcmlvIGFuZCB0cmlnZ2VycyB0aGUgaGFzaCBpdGVyYXRpb24uIEknbGwgbmVlZCB0byBlbmFibGUgYElQVjZgIGFzIHdlbGwsIG9mIGNvdXJzZS5cblxuV2UgZGVmaW5pdGVseSBoYXZlIGEgc2l0dWF0aW9uIHdvcnRoIGZ1enppbmcgaGVyZSwgZ2l2ZW4gdGhlIGZ1bmN0aW9uYWwgY2hhbmdlLiBXZSBuZWVkIHRvIGZvY3VzIG9uIGBpbmV0Nl9kdW1wX2ZpYmAuXG5cbk5vdywgaXMgYGluZXQ2X2R1bXBfZmliYCBzdGF0aWMgb3Igbm90PyBHb29kLCBpdCdzIHN0YXRpYywgd2hpY2ggY291bGQgYWZmZWN0IHN5emthbGxlcidzIGFiaWxpdHkgdG8gcmVhY2ggaXQuIEl0J3MgaW4gYG5ldC9pcHY2L2lwNl9maWIuY2AuIEhvd2V2ZXIsIGl0J3MgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLCBzcGVjaWZpY2FsbHkgYFJUTV9HRVRST1VURWAgZm9yIGBQRl9JTkVUNmAuIE9rYXksIHNvIGl0J3MgcmVhY2hlZCB2aWEgYSBuZXRsaW5rIHN5c2NhbGwhIFBlcmZlY3QuIFdlJ3JlIHN0aWxsIGNvcnJlY3QgaW4gZm9jdXNpbmcgb24gYGluZXQ2X2R1bXBfZmliYC5cblxuTGV0IG1lIHF1aWNrbHkgcmV2aWV3IHRoZSBwYXRjaCBhZ2FpbiB0byBtYWtlIHN1cmUgbXkgcmVhc29uaW5nIGlzIHJpZ2h0IG9uIHRoZSBtb25leS4gWWVzLCBpdCByZXBsYWNlcyB0aGUgaW5kZXggYHNfZWAgd2l0aCBgc19pZGAgd2hlbiB0aGUgaXRlcmF0aW9uIHJlc3VtZXMgYWZ0ZXIgYSBkdW1wLiBOb3cgaXQgc2F2ZXMgdGhlIHRhYmxlIElELiBUaGlzIGFsbG93cyBhY2N1cmF0ZSByZXN1bXB0aW9uIG9mIHRoZSBkdW1wIGFmdGVyIGEgcG90ZW50aWFsIHRhYmxlIGluc2VydCBvciBkZWxldGUuIFRoaXMgaXMgcHJlY2lzZWx5IHdoYXQgd2Ugd2FudCB0byBmdXp6LlxuXG5XZSd2ZSBnb3QgdGhlIGNvbmZpZ3M6IGBJUFY2YCBhbmQgYElQVjZfTVVMVElQTEVfVEFCTEVTYC4gT3VyIGZvY2FsIHBvaW50IGlzIGBpbmV0Nl9kdW1wX2ZpYmAuIFRoaXMgaXMgYSBjbGVhciBjYXNlIGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjM0LCJPdXRwdXRUb2tlbnMiOjEyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwMTo0OTozMi44OTU5ODcxNzZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjY2MjczNTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVjZcIixcbiAgICBcIklQVjZfTVVMVElQTEVfVEFCTEVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaW5ldDZfZHVtcF9maWJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaXRlcmF0aW9uIGxvZ2ljIGluIGBpbmV0Nl9kdW1wX2ZpYmAgZm9yIElQdjYgRklCIG5ldGxpbmsgZHVtcHMuIEl0IHN3aXRjaGVzIGZyb20gdXNpbmcgYW4gaW5kZXggdG8gdXNpbmcgdGhlIHRhYmxlIElEIHRvIHJlc3VtZSBkdW1wcywgd2hpY2ggZml4ZXMgcG90ZW50aWFsIGlzc3VlcyB3aGVuIHJvdXRpbmcgdGFibGVzIGFyZSBhZGRlZCBvciByZW1vdmVkIGR1cmluZyBhIG11bHRpcGFydCBuZXRsaW5rIGR1bXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNlwiLFxuICAgIFwiSVBWNl9NVUxUSVBMRV9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpbmV0Nl9kdW1wX2ZpYlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpdGVyYXRpb24gbG9naWMgaW4gYGluZXQ2X2R1bXBfZmliYCBmb3IgSVB2NiBGSUIgbmV0bGluayBkdW1wcy4gSXQgc3dpdGNoZXMgZnJvbSB1c2luZyBhbiBpbmRleCB0byB1c2luZyB0aGUgdGFibGUgSUQgdG8gcmVzdW1lIGR1bXBzLCB3aGljaCBmaXhlcyBwb3RlbnRpYWwgaXNzdWVzIHdoZW4gcm91dGluZyB0YWJsZXMgYXJlIGFkZGVkIG9yIHJlbW92ZWQgZHVyaW5nIGEgbXVsdGlwYXJ0IG5ldGxpbmsgZHVtcC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9dbf7[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-25 01:39:19 +0000 UTC FinishedAt: 2026-06-25 01:49:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6", "IPV6_MULTIPLE_TABLES" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6", "IPV6_MULTIPLE_TABLES" ], "series_id": "44b23987-7fd2-4644-ab30-cbf2a029cf40" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "inet6_dump_fib" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDAxOjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OywKICAgICYjMzQ7SVBWNl9NVUxUSVBMRV9UQUJMRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpbmV0Nl9kdW1wX2ZpYiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaXRlcmF0aW9uIGxvZ2ljIGluIGBpbmV0Nl9kdW1wX2ZpYmAgZm9yIElQdjYgRklCIG5ldGxpbmsgZHVtcHMuIEl0IHN3aXRjaGVzIGZyb20gdXNpbmcgYW4gaW5kZXggdG8gdXNpbmcgdGhlIHRhYmxlIElEIHRvIHJlc3VtZSBkdW1wcywgd2hpY2ggZml4ZXMgcG90ZW50aWFsIGlzc3VlcyB3aGVuIHJvdXRpbmcgdGFibGVzIGFyZSBhZGRlZCBvciByZW1vdmVkIGR1cmluZyBhIG11bHRpcGFydCBuZXRsaW5rIGR1bXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDE6NDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwMmVhZWZkMjgyNmU0ZDQ3NGQzZDJiMzIzMjkwYWU4ZTBiY2M1MjRlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdW4gMjUgMDE6NDk6MDMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2X2ZpYi5jIGIvbmV0L2lwdjYvaXA2X2ZpYi5jXG5pbmRleCBmYzk1NzM4ZGVkNzYxYi4uYmRhNDkyNjM0ODU5MjMgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9pcDZfZmliLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L2lwNl9maWIuY1xuQEAgLTYzNiwxMSAmIzQzOzYzNiwxMSBAQCBzdGF0aWMgaW50IGluZXQ2X2R1bXBfZmliKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbiBcdH07XG4gXHRjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCA9IGNiLVx1MDAzZW5saDtcbiBcdHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrYi1cdTAwM2Vzayk7XG4tXHR1bnNpZ25lZCBpbnQgZSA9IDAsIHNfZTtcbiBcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkO1xuIFx0c3RydWN0IGZpYjZfd2Fsa2VyICp3O1xuIFx0c3RydWN0IGZpYjZfdGFibGUgKnRiO1xuIFx0dW5zaWduZWQgaW50IGgsIHNfaDtcbiYjNDM7XHR1MzIgc19pZDtcbiBcdGludCBlcnIgPSAwO1xuIFxuIFx0cmN1X3JlYWRfbG9jaygpO1xuQEAgLTcwMSwyMyAmIzQzOzcwMSwyMiBAQCBzdGF0aWMgaW50IGluZXQ2X2R1bXBfZmliKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbiBcdH1cbiBcbiBcdHNfaCA9IGNiLVx1MDAzZWFyZ3NbMF07XG4tXHRzX2UgPSBjYi1cdTAwM2VhcmdzWzFdO1xuJiM0MztcdHNfaWQgPSBjYi1cdTAwM2VhcmdzWzFdO1xuIFxuLVx0Zm9yIChoID0gc19oOyBoIFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzssIHNfZSA9IDApIHtcbi1cdFx0ZSA9IDA7XG4mIzQzO1x0Zm9yIChoID0gc19oOyBoIFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzssIHNfaWQgPSAwKSB7XG4gXHRcdGhlYWQgPSBcdTAwMjZuZXQtXHUwMDNlaXB2Ni5maWJfdGFibGVfaGFzaFtoXTtcbiBcdFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHRiLCBoZWFkLCB0YjZfaGxpc3QpIHtcbi1cdFx0XHRpZiAoZSBcdTAwM2Mgc19lKVxuLVx0XHRcdFx0Z290byBuZXh0O1xuJiM0MztcdFx0XHRpZiAoc19pZCBcdTAwMjZcdTAwMjYgdGItXHUwMDNldGI2X2lkICE9IHNfaWQpXG4mIzQzO1x0XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHRcdHNfaWQgPSAwO1xuJiM0MztcbiYjNDM7XHRcdFx0Y2ItXHUwMDNlYXJnc1sxXSA9IHRiLVx1MDAzZXRiNl9pZDtcbiBcdFx0XHRlcnIgPSBmaWI2X2R1bXBfdGFibGUodGIsIHNrYiwgY2IpO1xuIFx0XHRcdGlmIChlcnIgIT0gMClcbiBcdFx0XHRcdGdvdG8gb3V0O1xuLW5leHQ6XG4tXHRcdFx0ZSYjNDM7JiM0Mzs7XG4gXHRcdH1cbiBcdH1cbiBvdXQ6XG4tXHRjYi1cdTAwM2VhcmdzWzFdID0gZTtcbiBcdGNiLVx1MDAzZWFyZ3NbMF0gPSBoO1xuIFxuIHVubG9jazpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwMTo0OTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFY2JiMzNDssCiAgICAmIzM0O0lQVjZfTVVMVElQTEVfVEFCTEVTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW5ldDZfZHVtcF9maWImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGl0ZXJhdGlvbiBsb2dpYyBpbiBgaW5ldDZfZHVtcF9maWJgIGZvciBJUHY2IEZJQiBuZXRsaW5rIGR1bXBzLiBJdCBzd2l0Y2hlcyBmcm9tIHVzaW5nIGFuIGluZGV4IHRvIHVzaW5nIHRoZSB0YWJsZSBJRCB0byByZXN1bWUgZHVtcHMsIHdoaWNoIGZpeGVzIHBvdGVudGlhbCBpc3N1ZXMgd2hlbiByb3V0aW5nIHRhYmxlcyBhcmUgYWRkZWQgb3IgcmVtb3ZlZCBkdXJpbmcgYSBtdWx0aXBhcnQgbmV0bGluayBkdW1wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwMmVhZWZkMjgyNmU0ZDQ3NGQzZDJiMzIzMjkwYWU4ZTBiY2M1MjRlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdW4gMjUgMDE6NDk6MDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfZmliLmMgYi9uZXQvaXB2Ni9pcDZfZmliLmMKaW5kZXggZmM5NTczOGRlZDc2MWIuLmJkYTQ5MjYzNDg1OTIzIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9pcDZfZmliLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvaXA2X2ZpYi5jCkBAIC02MzYsMTEgJiM0Mzs2MzYsMTEgQEAgc3RhdGljIGludCBpbmV0Nl9kdW1wX2ZpYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpCiAJfTsKIAljb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCA9IGNiLSZndDtubGg7CiAJc3RydWN0IG5ldCAqbmV0ID0gc29ja19uZXQoc2tiLSZndDtzayk7Ci0JdW5zaWduZWQgaW50IGUgPSAwLCBzX2U7CiAJc3RydWN0IGhsaXN0X2hlYWQgKmhlYWQ7CiAJc3RydWN0IGZpYjZfd2Fsa2VyICp3OwogCXN0cnVjdCBmaWI2X3RhYmxlICp0YjsKIAl1bnNpZ25lZCBpbnQgaCwgc19oOwomIzQzOwl1MzIgc19pZDsKIAlpbnQgZXJyID0gMDsKIAogCXJjdV9yZWFkX2xvY2soKTsKQEAgLTcwMSwyMyAmIzQzOzcwMSwyMiBAQCBzdGF0aWMgaW50IGluZXQ2X2R1bXBfZmliKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYikKIAl9CiAKIAlzX2ggPSBjYi0mZ3Q7YXJnc1swXTsKLQlzX2UgPSBjYi0mZ3Q7YXJnc1sxXTsKJiM0MzsJc19pZCA9IGNiLSZndDthcmdzWzFdOwogCi0JZm9yIChoID0gc19oOyBoICZsdDsgRklCNl9UQUJMRV9IQVNIU1o7IGgmIzQzOyYjNDM7LCBzX2UgPSAwKSB7Ci0JCWUgPSAwOwomIzQzOwlmb3IgKGggPSBzX2g7IGggJmx0OyBGSUI2X1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzssIHNfaWQgPSAwKSB7CiAJCWhlYWQgPSAmYW1wO25ldC0mZ3Q7aXB2Ni5maWJfdGFibGVfaGFzaFtoXTsKIAkJaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHRiLCBoZWFkLCB0YjZfaGxpc3QpIHsKLQkJCWlmIChlICZsdDsgc19lKQotCQkJCWdvdG8gbmV4dDsKJiM0MzsJCQlpZiAoc19pZCAmYW1wOyZhbXA7IHRiLSZndDt0YjZfaWQgIT0gc19pZCkKJiM0MzsJCQkJY29udGludWU7CiYjNDM7CQkJc19pZCA9IDA7CiYjNDM7CiYjNDM7CQkJY2ItJmd0O2FyZ3NbMV0gPSB0Yi0mZ3Q7dGI2X2lkOwogCQkJZXJyID0gZmliNl9kdW1wX3RhYmxlKHRiLCBza2IsIGNiKTsKIAkJCWlmIChlcnIgIT0gMCkKIAkJCQlnb3RvIG91dDsKLW5leHQ6Ci0JCQllJiM0MzsmIzQzOzsKIAkJfQogCX0KIG91dDoKLQljYi0mZ3Q7YXJnc1sxXSA9IGU7CiAJY2ItJmd0O2FyZ3NbMF0gPSBoOwogCiB1bmxvY2s6CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDAxOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNDgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSVB2NiBGSUIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgYG5ldC9pcHY2L2lwNl9maWIuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgZm9jdXNlZCBvbiBgaW5ldDZfZHVtcF9maWJgLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIHN1YnN0aXR1dGluZyBgc19lYCwgd2hpY2ggSSBhc3N1bWUgaXMgYW4gaW5kZXggb3Igc29tZXRoaW5nIHNpbWlsYXIsIHdpdGggYHNfaWRgLCBhIHRhYmxlIElELCBpbiB0aGUgaXRlcmF0aW9uIHByb2Nlc3Mgd2l0aGluIGBpbmV0Nl9kdW1wX2ZpYmAuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGNoYW5nZSB3aXRoaW4gdGhlIElQdjYgbmV0d29ya2luZyBzdGFjaywgc3BlY2lmaWNhbGx5IGhvdyB0aGUgSVB2NiBGSUIgaXMgZHVtcGVkIG92ZXIgbmV0bGluay4KCkdpdmVuIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9uIGRhdGEgb3V0cHV0IGFuZCB0aGUgY29yZSBuZXR3b3JrIGZ1bmN0aW9uYWxpdHkgaW52b2x2ZWQsIGZ1enppbmcgaXMgYW4gYWJzb2x1dGUgbXVzdCBoZXJlLiBXZSBuZWVkIHRvIHJlYWxseSBwdXQgaXQgdGhyb3VnaCBpdHMgcGFjZXMuCgpGaXJzdCB0aGluZ3MgZmlyc3QsIEkmIzM5O2xsIGxvY2F0ZSBgaW5ldDZfZHVtcF9maWJgIGl0c2VsZiB3aXRoaW4gYG5ldC9pcHY2L2lwNl9maWIuY2AgdG8gdW5kZXJzdGFuZCB0aGUgY29kZSBjb250ZXh0IGRpcmVjdGx5LiBUaGVuLCBJIG5lZWQgdG8gaWRlbnRpZnkgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBTaW5jZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIElQdjYsIGl0JiMzOTtzIGhpZ2hseSBsaWtlbHkgdGhhdCBgQ09ORklHX0lQVjZgIGlzIHRoZSBrZXkuIEnigJlsbCBkb3VibGUtY2hlY2sgYG5ldC9pcHY2L0tjb25maWdgIHRvIGJlIGNlcnRhaW4uIEdldHRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gcmlnaHQgaXMgY3JpdGljYWwgZm9yIGEgdmFsaWQgdGVzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwMTo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbmV0Nl9kdW1wX2ZpYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L2lwNl9maWIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9pcDZfZmliLmM9NTg1PXN0YXRpYyBpbnQgZmliNl9kdW1wX3RhYmxlKHN0cnVjdCBmaWI2X3RhYmxlICp0YWJsZSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmMtNjMwLVxubmV0L2lwdjYvaXA2X2ZpYi5jOjYzMTpzdGF0aWMgaW50IGluZXQ2X2R1bXBfZmliKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbm5ldC9pcHY2L2lwNl9maWIuYy02MzIte1xuLS1cbm5ldC9pcHY2L2lwNl9maWIuYz0yNTYwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRubF9tc2dfaGFuZGxlciBmaWI2X3J0bmxfbXNnX2hhbmRsZXJzW10gX19pbml0Y29uc3Rfb3JfbW9kdWxlID0ge1xubmV0L2lwdjYvaXA2X2ZpYi5jLTI1NjEtXHR7Lm93bmVyID0gVEhJU19NT0RVTEUsIC5wcm90b2NvbCA9IFBGX0lORVQ2LCAubXNndHlwZSA9IFJUTV9HRVRST1VURSxcbm5ldC9pcHY2L2lwNl9maWIuYzoyNTYyOlx0IC5kdW1waXQgPSBpbmV0Nl9kdW1wX2ZpYixcbm5ldC9pcHY2L2lwNl9maWIuYy0yNTYzLVx0IC5mbGFncyA9IFJUTkxfRkxBR19EVU1QX1VOTE9DS0VEIHwgUlROTF9GTEFHX0RVTVBfU1BMSVRfTkxNX0RPTkV9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDAxOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMzEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gSVB2NiBSb3V0aW5nIFRhYmxlIER1bXBzKioKCk9rYXksIHNvIGBpbmV0Nl9kdW1wX2ZpYmAgaXMgdGhlIGhhbmRsZXIgdGhhdCBraWNrcyBpbiB3aGVuIHdlIGRvIGEgYFJUTV9HRVRST1VURWAgcmVxdWVzdCBzcGVjaWZpY2FsbHkgZm9yIElQdjYgKHRoYXQmIzM5O3MgYFBGX0lORVQ2YCkuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0JiMzOTtzIHRoZSBuZXRsaW5rIGludGVyZmFjZSB0byBnZXQgcm91dGluZyBpbmZvcm1hdGlvbiwgd2hpY2ggaXMgd2hhdCBJJiMzOTtkIGV4cGVjdC4gU28sIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLiAKCk5vdywgSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGVuYWJsaW5nIGNvbmRpdGlvbjogYElQVjZgLiBKdXN0IG1ha2luZyBzdXJlLCBhcmUgdGhlcmUgKmFueSogb3RoZXIgY29uZmlnIG9wdGlvbnMgaW52b2x2ZWQgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uPyBHb3R0YSBiZSB0aG9yb3VnaC4gVGltZSB0byBjcmFjayBvcGVuIGBuZXQvaXB2Ni9LY29uZmlnYCBhbmQgc2VlIHdoYXQgZWxzZSBjb3VsZCBiZSBsdXJraW5nIGluIHRoZXJlIGFyb3VuZCBgSVBWNmAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjUgMDE6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQVjYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWctNS1cbm5ldC9pcHY2L0tjb25maWc6NjptZW51Y29uZmlnIElQVjZcbm5ldC9pcHY2L0tjb25maWctNy1cdGJvb2wgXCYjMzQ7VGhlIElQdjYgcHJvdG9jb2xcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTE5PWlmIElQVjZcbm5ldC9pcHY2L0tjb25maWctMjAtXG5uZXQvaXB2Ni9LY29uZmlnOjIxOmNvbmZpZyBJUFY2X1JPVVRFUl9QUkVGXG5uZXQvaXB2Ni9LY29uZmlnLTIyLVx0Ym9vbCBcJiMzNDtJUHY2OiBSb3V0ZXIgUHJlZmVyZW5jZSAoUkZDIDQxOTEpIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTMwLVxubmV0L2lwdjYvS2NvbmZpZzozMTpjb25maWcgSVBWNl9ST1VURV9JTkZPXG5uZXQvaXB2Ni9LY29uZmlnLTMyLVx0Ym9vbCBcJiMzNDtJUHY2OiBSb3V0ZSBJbmZvcm1hdGlvbiAoUkZDIDQxOTEpIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTM4LVxubmV0L2lwdjYvS2NvbmZpZzozOTpjb25maWcgSVBWNl9PUFRJTUlTVElDX0RBRFxubmV0L2lwdjYvS2NvbmZpZy00MC1cdGJvb2wgXCYjMzQ7SVB2NjogRW5hYmxlIFJGQyA0NDI5IE9wdGltaXN0aWMgREFEXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZz0xMDI9Y29uZmlnIElORVQ2X0lQQ09NUFxuLS1cbm5ldC9pcHY2L0tjb25maWctMTExLVxubmV0L2lwdjYvS2NvbmZpZzoxMTI6Y29uZmlnIElQVjZfTUlQNlxubmV0L2lwdjYvS2NvbmZpZy0xMTMtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBNb2JpbGl0eVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMTE5LVxubmV0L2lwdjYvS2NvbmZpZzoxMjA6Y29uZmlnIElQVjZfSUxBXG5uZXQvaXB2Ni9LY29uZmlnLTEyMS1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IElkZW50aWZpZXIgTG9jYXRvciBBZGRyZXNzaW5nIChJTEEpXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZz0xNDY9Y29uZmlnIElORVQ2X1RVTk5FTFxuLS1cbm5ldC9pcHY2L0tjb25maWctMTQ5LVxubmV0L2lwdjYvS2NvbmZpZzoxNTA6Y29uZmlnIElQVjZfVlRJXG5uZXQvaXB2Ni9LY29uZmlnLTE1MS1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgKHNlY3VyZSkgSVB2NjogdHVubmVsaW5nXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xNjEtXG5uZXQvaXB2Ni9LY29uZmlnOjE2Mjpjb25maWcgSVBWNl9TSVRcbm5ldC9pcHY2L0tjb25maWctMTYzLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogSVB2Ni1pbi1JUHY0IHR1bm5lbCAoU0lUIGRyaXZlcilcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE3Ni1cbm5ldC9pcHY2L0tjb25maWc6MTc3OmNvbmZpZyBJUFY2X1NJVF82UkRcbm5ldC9pcHY2L0tjb25maWctMTc4LVx0Ym9vbCBcJiMzNDtJUHY2OiBJUHY2IFJhcGlkIERlcGxveW1lbnQgKDZSRClcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE5NS1cbm5ldC9pcHY2L0tjb25maWc6MTk2OmNvbmZpZyBJUFY2X05ESVNDX05PREVUWVBFXG5uZXQvaXB2Ni9LY29uZmlnLTE5Ny1cdGJvb2xcbm5ldC9pcHY2L0tjb25maWctMTk4LVxubmV0L2lwdjYvS2NvbmZpZzoxOTk6Y29uZmlnIElQVjZfVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTIwMC1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IElQLWluLUlQdjYgdHVubmVsIChSRkMyNDczKVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjA5LVxubmV0L2lwdjYvS2NvbmZpZzoyMTA6Y29uZmlnIElQVjZfR1JFXG5uZXQvaXB2Ni9LY29uZmlnLTIxMS1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IEdSRSB0dW5uZWxcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTIyNy1cbm5ldC9pcHY2L0tjb25maWc6MjI4OmNvbmZpZyBJUFY2X0ZPVVxubmV0L2lwdjYvS2NvbmZpZy0yMjktXHR0cmlzdGF0ZVxuLS1cbm5ldC9pcHY2L0tjb25maWctMjMxLVxubmV0L2lwdjYvS2NvbmZpZzoyMzI6Y29uZmlnIElQVjZfRk9VX1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0yMzMtXHR0cmlzdGF0ZVxuLS1cbm5ldC9pcHY2L0tjb25maWctMjM2LVxubmV0L2lwdjYvS2NvbmZpZzoyMzc6Y29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2Ni9LY29uZmlnLTIzOC1cdGJvb2wgXCYjMzQ7SVB2NjogTXVsdGlwbGUgUm91dGluZyBUYWJsZXNcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI0Mi1cbm5ldC9pcHY2L0tjb25maWc6MjQzOmNvbmZpZyBJUFY2X1NVQlRSRUVTXG5uZXQvaXB2Ni9LY29uZmlnLTI0NC1cdGJvb2wgXCYjMzQ7SVB2Njogc291cmNlIGFkZHJlc3MgYmFzZWQgcm91dGluZ1wmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjU2LVxubmV0L2lwdjYvS2NvbmZpZzoyNTc6Y29uZmlnIElQVjZfTVJPVVRFXG5uZXQvaXB2Ni9LY29uZmlnLTI1OC1cdGJvb2wgXCYjMzQ7SVB2NjogbXVsdGljYXN0IHJvdXRpbmdcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI2NC1cbm5ldC9pcHY2L0tjb25maWc6MjY1OmNvbmZpZyBJUFY2X01ST1VURV9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY2L0tjb25maWctMjY2LVx0Ym9vbCBcJiMzNDtJUHY2OiBtdWx0aWNhc3QgcG9saWN5IHJvdXRpbmdcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI3OC1cbm5ldC9pcHY2L0tjb25maWc6Mjc5OmNvbmZpZyBJUFY2X1BJTVNNX1YyXG5uZXQvaXB2Ni9LY29uZmlnLTI4MC1cdGJvb2wgXCYjMzQ7SVB2NjogUElNLVNNIHZlcnNpb24gMiBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yODUtXG5uZXQvaXB2Ni9LY29uZmlnOjI4Njpjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTI4Ny1cdGJvb2wgXCYjMzQ7SVB2NjogU2VnbWVudCBSb3V0aW5nIEhlYWRlciBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI5OS1cbm5ldC9pcHY2L0tjb25maWc6MzAwOmNvbmZpZyBJUFY2X1NFRzZfSE1BQ1xubmV0L2lwdjYvS2NvbmZpZy0zMDEtXHRib29sIFwmIzM0O0lQdjY6IFNlZ21lbnQgUm91dGluZyBITUFDIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTMxMS1cbm5ldC9pcHY2L0tjb25maWc6MzEyOmNvbmZpZyBJUFY2X1NFRzZfQlBGXG5uZXQvaXB2Ni9LY29uZmlnLTMxMy1cdGRlZl9ib29sIHlcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTMxNi1cbm5ldC9pcHY2L0tjb25maWc6MzE3OmNvbmZpZyBJUFY2X1JQTF9MV1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0zMTgtXHRib29sIFwmIzM0O0lQdjY6IFJQTCBTb3VyY2UgUm91dGluZyBIZWFkZXIgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMzI3LVxubmV0L2lwdjYvS2NvbmZpZzozMjg6Y29uZmlnIElQVjZfSU9BTTZfTFdUVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMzI5LVx0Ym9vbCBcJiMzNDtJUHY2OiBJT0FNIFByZS1hbGxvY2F0ZWQgVHJhY2UgaW5zZXJ0aW9uIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwMTo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODUwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSVB2NiBSb3V0aW5nIFRhYmxlIER1bXAgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IHRvdWNoaW5nIGBpbmV0Nl9kdW1wX2ZpYmAsIHdoaWNoIG1lYW5zIGl0JiMzOTtzIGludm9sdmVkIGluIGR1bXBpbmcgdGhlIElQdjYgcm91dGluZyB0YWJsZS4gSSBzZWUgaXQgaXRlcmF0ZXMgb3ZlciBgRklCNl9UQUJMRV9IQVNIU1pgLiBUaGF0JiMzOTtzIHRoZSBleHBlY3RlZCBiZWhhdmlvciBmb3IgYSBzdGFuZGFyZCBJUHY2IHJvdXRpbmcgdGFibGUgZHVtcC4gTm90aGluZyBpbW1lZGlhdGVseSBqdW1wcyBvdXQgYXMgYWxhcm1pbmcgaGVyZS4KCkkmIzM5O20gdGhpbmtpbmcsIGBJUFY2X01VTFRJUExFX1RBQkxFU2AgY291bGQgYmUgc29tZXRoaW5nIHRvIGNvbnNpZGVyIHNpbmNlIGl0JiMzOTtzIGFib3V0IG11bHRpcGxlIHJvdXRpbmcgdGFibGVzLiBCdXQgd2FpdCwgaXQmIzM5O3Mgc3RpbGwgdXNpbmcgYEZJQjZfVEFCTEVfSEFTSFNaYCByZWdhcmRsZXNzLCBldmVuIGlmIGl0JiMzOTtzIGp1c3QgMSB3aGVuIG11bHRpcGxlIHRhYmxlcyBhcmVuJiMzOTt0IGVuYWJsZWQuIExldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB3aGF0IHRoZSB2YWx1ZSBvZiBgRklCNl9UQUJMRV9IQVNIU1pgIGlzIGV4YWN0bHkgaW4gdGhpcyBjb250ZXh0LiBOZWVkIHRvIHZlcmlmeSB0aGF0JiMzOTtzIHRoZSBjb3JyZWN0IGFwcHJvYWNoIGdpdmVuIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwMTo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtGSUI2X1RBQkxFX0hBU0hTWiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9pcDZfZmliLmM9MjEzPXN0YXRpYyB2b2lkIGZpYjZfbGlua190YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmaWI2X3RhYmxlICp0Yilcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjIxLVx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2dGItXHUwMDNldGI2X2xvY2spO1xubmV0L2lwdjYvaXA2X2ZpYi5jOjIyMjpcdGggPSB0Yi1cdTAwM2V0YjZfaWQgXHUwMDI2IChGSUI2X1RBQkxFX0hBU0hTWiAtIDEpO1xubmV0L2lwdjYvaXA2X2ZpYi5jLTIyMy1cbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmM9MjgyPXN0cnVjdCBmaWI2X3RhYmxlICpmaWI2X2dldF90YWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHUzMiBpZClcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjg5LVxubmV0L2lwdjYvaXA2X2ZpYi5jOjI5MDpcdGhlYWQgPSBcdTAwMjZuZXQtXHUwMDNlaXB2Ni5maWJfdGFibGVfaGFzaFtpZCBcdTAwMjYgKEZJQjZfVEFCTEVfSEFTSFNaIC0gMSldO1xubmV0L2lwdjYvaXA2X2ZpYi5jLTI5MS1cbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmM9MzU2PXVuc2lnbmVkIGludCBmaWI2X3RhYmxlc19zZXFfcmVhZChjb25zdCBzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jLTM2MC1cdHJjdV9yZWFkX2xvY2soKTtcbm5ldC9pcHY2L2lwNl9maWIuYzozNjE6XHRmb3IgKGggPSAwOyBoIFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzspIHtcbm5ldC9pcHY2L2lwNl9maWIuYy0zNjItXHRcdGNvbnN0IHN0cnVjdCBobGlzdF9oZWFkICpoZWFkID0gXHUwMDI2bmV0LVx1MDAzZWlwdjYuZmliX3RhYmxlX2hhc2hbaF07XG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jPTQ5Mj1pbnQgZmliNl90YWJsZXNfZHVtcChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jLTUwOS1cbm5ldC9pcHY2L2lwNl9maWIuYzo1MTA6XHRmb3IgKGggPSAwOyBoIFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzspIHtcbm5ldC9pcHY2L2lwNl9maWIuYy01MTEtXHRcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkID0gXHUwMDI2bmV0LVx1MDAzZWlwdjYuZmliX3RhYmxlX2hhc2hbaF07XG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jPTYzMT1zdGF0aWMgaW50IGluZXQ2X2R1bXBfZmliKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmMtNzA1LVxubmV0L2lwdjYvaXA2X2ZpYi5jOjcwNjpcdGZvciAoaCA9IHNfaDsgaCBcdTAwM2MgRklCNl9UQUJMRV9IQVNIU1o7IGgmIzQzOyYjNDM7LCBzX2lkID0gMCkge1xubmV0L2lwdjYvaXA2X2ZpYi5jLTcwNy1cdFx0aGVhZCA9IFx1MDAyNm5ldC1cdTAwM2VpcHY2LmZpYl90YWJsZV9oYXNoW2hdO1xuLS1cbm5ldC9pcHY2L2lwNl9maWIuYz0yMzA4PXN0YXRpYyB2b2lkIF9fZmliNl9jbGVhbl9hbGwoc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC9pcHY2L2lwNl9maWIuYy0yMzE2LVx0cmN1X3JlYWRfbG9jaygpO1xubmV0L2lwdjYvaXA2X2ZpYi5jOjIzMTc6XHRmb3IgKGggPSAwOyBoIFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzspIHtcbm5ldC9pcHY2L2lwNl9maWIuYy0yMzE4LVx0XHRoZWFkID0gXHUwMDI2bmV0LVx1MDAzZWlwdjYuZmliX3RhYmxlX2hhc2hbaF07XG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jPTI0MDY9c3RhdGljIHZvaWQgZmliNl9nY19hbGwoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmliNl9nY19hcmdzICpnY19hcmdzKVxuLS1cbm5ldC9pcHY2L2lwNl9maWIuYy0yNDEyLVx0cmN1X3JlYWRfbG9jaygpO1xubmV0L2lwdjYvaXA2X2ZpYi5jOjI0MTM6XHRmb3IgKGggPSAwOyBoIFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzspIHtcbm5ldC9pcHY2L2lwNl9maWIuYy0yNDE0LVx0XHRoZWFkID0gXHUwMDI2bmV0LVx1MDAzZWlwdjYuZmliX3RhYmxlX2hhc2hbaF07XG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jPTI0NjE9c3RhdGljIGludCBfX25ldF9pbml0IGZpYjZfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L2lwdjYvaXA2X2ZpYi5jLTI0NjIte1xubmV0L2lwdjYvaXA2X2ZpYi5jOjI0NjM6XHRzaXplX3Qgc2l6ZSA9IHNpemVvZihzdHJ1Y3QgaGxpc3RfaGVhZCkgKiBGSUI2X1RBQkxFX0hBU0hTWjtcbm5ldC9pcHY2L2lwNl9maWIuYy0yNDY0LVx0aW50IGVycjtcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmM9MjUzMz1zdGF0aWMgdm9pZCBmaWI2X25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjUzOC1cbm5ldC9pcHY2L2lwNl9maWIuYzoyNTM5Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgRklCNl9UQUJMRV9IQVNIU1o7IGkmIzQzOyYjNDM7KSB7XG5uZXQvaXB2Ni9pcDZfZmliLmMtMjU0MC1cdFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQgPSBcdTAwMjZuZXQtXHUwMDNlaXB2Ni5maWJfdGFibGVfaGFzaFtpXTtcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmM9MjY2Nz1zdGF0aWMgc3RydWN0IGZpYjZfdGFibGUgKmlwdjZfcm91dGVfc2VxX25leHRfdGFibGUoc3RydWN0IGZpYjZfdGFibGUgKnRibCxcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjY3My1cdGlmICh0YmwpIHtcbm5ldC9pcHY2L2lwNl9maWIuYzoyNjc0Olx0XHRoID0gKHRibC1cdTAwM2V0YjZfaWQgXHUwMDI2IChGSUI2X1RBQkxFX0hBU0hTWiAtIDEpKSAmIzQzOyAxO1xubmV0L2lwdjYvaXA2X2ZpYi5jLTI2NzUtXHRcdG5vZGUgPSByY3VfZGVyZWZlcmVuY2UoaGxpc3RfbmV4dF9yY3UoXHUwMDI2dGJsLVx1MDAzZXRiNl9obGlzdCkpO1xuLS1cbm5ldC9pcHY2L2lwNl9maWIuYy0yNjgwLVxubmV0L2lwdjYvaXA2X2ZpYi5jOjI2ODE6XHR3aGlsZSAoIW5vZGUgXHUwMDI2XHUwMDI2IGggXHUwMDNjIEZJQjZfVEFCTEVfSEFTSFNaKSB7XG5uZXQvaXB2Ni9pcDZfZmliLmMtMjY4Mi1cdFx0bm9kZSA9IHJjdV9kZXJlZmVyZW5jZShcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTQ1MzY9dm9pZCBydDZfcHVyZ2VfZGZsdF9yb3V0ZXJzKHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ1NDMtXG5uZXQvaXB2Ni9yb3V0ZS5jOjQ1NDQ6XHRmb3IgKGggPSAwOyBoIFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaCYjNDM7JiM0MzspIHtcbm5ldC9pcHY2L3JvdXRlLmMtNDU0NS1cdFx0aGVhZCA9IFx1MDAyNm5ldC1cdTAwM2VpcHY2LmZpYl90YWJsZV9oYXNoW2hdO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDAxOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3ODIKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqTmV0d29yayBSb3V0aW5nIFRhYmxlIENvbnRleHR1YWxpemF0aW9uKioKClJpZ2h0LCBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgIGp1bXBzIG91dCBpbW1lZGlhdGVseS4gSWYgdGhhdCYjMzk7cyAqbm90KiBlbmFibGVkLCB3ZSYjMzk7cmUgc3R1Y2sgd2l0aCBqdXN0IHRoZSBtYWluIGFuZCBsb2NhbCByb3V0aW5nIHRhYmxlcy4gVGhhdCYjMzk7cyBwcmV0dHkgbGltaXRpbmcuIEJ1dCB0aGVuIEkmIzM5O20gc2VlaW5nIHRoaXMgYEZJQjZfVEFCTEVfSEFTSFNaYCB2YWx1ZSBvZiAyNTYsIGFuZCB0aGF0IGRvZXNuJiMzOTt0IGZlZWwgcmlnaHQgaW4gdGhpcyB0d28tdGFibGUgY29udGV4dC4gSXQgZmVlbHMgbGlrZSBtb3JlIHRoYW4gMjU2LiBTb21ldGhpbmcgZmVlbHMgb2ZmIGFib3V0IHRoYXQgY29tYmluYXRpb24uIExldCBtZSBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBgaW5jbHVkZS9uZXQvaXA2X2ZpYi5oYCBoZWFkZXIgZmlsZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBkZWZpbml0aW9uIG9mIGBGSUI2X1RBQkxFX0hBU0hTWmAgYW5kIGhvdyBpdCYjMzk7cyB1c2VkIHdpdGhpbiB0aGUgSVB2NiBmb3J3YXJkaW5nIGluZm9ybWF0aW9uIGJhc2UuIEkgc2hvdWxkIHN0YXJ0IHRoZXJlLCBhbmQgc2VlIGhvdyB0aGUgdHdvIGFyZSB0aWVkIHRvZ2V0aGVyLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IHdpdGggdGhlIHNvdXJjZSBmb3IgdGhhdCBtYWNybyBkZWZpbml0aW9uIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDAxOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0ZJQjZfVEFCTEVfSEFTSFNaJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvaXA2X2ZpYi5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2lwNl9maWIuaC0yNS0jaWZkZWYgQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTXG5pbmNsdWRlL25ldC9pcDZfZmliLmg6MjY6I2RlZmluZSBGSUI2X1RBQkxFX0hBU0hTWiAyNTZcbmluY2x1ZGUvbmV0L2lwNl9maWIuaC0yNy0jZWxzZVxuaW5jbHVkZS9uZXQvaXA2X2ZpYi5oOjI4OiNkZWZpbmUgRklCNl9UQUJMRV9IQVNIU1ogMVxuaW5jbHVkZS9uZXQvaXA2X2ZpYi5oLTI5LSNlbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNSAwMTo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjM0CgkJCQkJCQlvdXRwdXQ6IDEyMQoJCQkJCQkJdGhvdWdodHM6IDkwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldGxpbmsgRHVtcCBGaXggZm9yIElQdjYgRklCIFRhYmxlcyoqCgpPa2F5LCBzbyB0aGUgYEZJQjZfVEFCTEVfSEFTSFNaYCB2YWx1ZSBpcyBjb25kaXRpb25hbCDigJMgaXQmIzM5O3MgMjU2IHdoZW4gYENPTkZJR19JUFY2X01VTFRJUExFX1RBQkxFU2AgaXMgZW5hYmxlZCwgYW5kIDEgb3RoZXJ3aXNlLiBUaGlzIGlzIGltbWVkaWF0ZWx5IHJlbGV2YW50LiBUaGUgYnVnIGJlaW5nIGZpeGVkIGhlcmUgYXBwZWFycyB0byBiZSBpbiB0aGUgbmV0bGluayBkdW1wJiMzOTtzIGhhbmRsaW5nIG9mIG11bHRpcGxlIHRhYmxlcywgYW5kIHRoZSBjcnVjaWFsIHBvaW50IGlzIGhvdyB0aGUgc3RhdGUgaXMgc2F2ZWQgYW5kIHJlc3VtZWQgZHVyaW5nIHRoZSBkdW1wIHByb2Nlc3MuIElmIHRoZSBjb2RlIHdhcyB1c2luZyBgc19lYCBhcyBhbiBpbmRleCBhbmQgdGFibGVzIHdlcmUgYWRkZWQgb3IgcmVtb3ZlZCBtaWQtZHVtcCwgaXQmIzM5O3MgY2xlYXIgdGhlIGl0ZXJhdGlvbiBjb3VsZCBnbyBhd3J5LCBsZWFkaW5nIHRvIHRoZSBkdW1wIG1pc3Npbmcgb3IgZHVwbGljYXRpbmcgc29tZSB0YWJsZXMuCgpUaGUgZml4LCBhbmQgdGhpcyBpcyB0aGUgY29yZSBvZiBpdCwgY2xldmVybHkgc3dpdGNoZXMgdG8gdXNpbmcgYHNfaWRgLCB3aGljaCByZXByZXNlbnRzIHRoZSB0YWJsZSBJRCAoYHRiLSZndDt0YjZfaWRgKSwgdG8gcmVzdW1lIGNvcnJlY3RseS4gVGhpcyBpcyBhbiBpbXByb3ZlbWVudCB0byBgaW5ldDZfZHVtcF9maWJgLiBJdCBzYXZlcyB0aGUgdGFibGUgSUQsIGluc3RlYWQgb2YgcmVseWluZyBvbiBhIHBvdGVudGlhbGx5IHVuc3RhYmxlIGluZGV4LgoKVG8gbWFrZSBzdXJlIHRoaXMgdHJpZ2dlcnMsIHdlJiMzOTtsbCBuZWVkIGBJUFY2X01VTFRJUExFX1RBQkxFU2AsIHdoaWNoIGFjdGl2YXRlcyB0aGUgbXVsdGlwbGUgdGFibGUgc2NlbmFyaW8gYW5kIHRyaWdnZXJzIHRoZSBoYXNoIGl0ZXJhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBlbmFibGUgYElQVjZgIGFzIHdlbGwsIG9mIGNvdXJzZS4KCldlIGRlZmluaXRlbHkgaGF2ZSBhIHNpdHVhdGlvbiB3b3J0aCBmdXp6aW5nIGhlcmUsIGdpdmVuIHRoZSBmdW5jdGlvbmFsIGNoYW5nZS4gV2UgbmVlZCB0byBmb2N1cyBvbiBgaW5ldDZfZHVtcF9maWJgLgoKTm93LCBpcyBgaW5ldDZfZHVtcF9maWJgIHN0YXRpYyBvciBub3Q/IEdvb2QsIGl0JiMzOTtzIHN0YXRpYywgd2hpY2ggY291bGQgYWZmZWN0IHN5emthbGxlciYjMzk7cyBhYmlsaXR5IHRvIHJlYWNoIGl0LiBJdCYjMzk7cyBpbiBgbmV0L2lwdjYvaXA2X2ZpYi5jYC4gSG93ZXZlciwgaXQmIzM5O3MgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLCBzcGVjaWZpY2FsbHkgYFJUTV9HRVRST1VURWAgZm9yIGBQRl9JTkVUNmAuIE9rYXksIHNvIGl0JiMzOTtzIHJlYWNoZWQgdmlhIGEgbmV0bGluayBzeXNjYWxsISBQZXJmZWN0LiBXZSYjMzk7cmUgc3RpbGwgY29ycmVjdCBpbiBmb2N1c2luZyBvbiBgaW5ldDZfZHVtcF9maWJgLgoKTGV0IG1lIHF1aWNrbHkgcmV2aWV3IHRoZSBwYXRjaCBhZ2FpbiB0byBtYWtlIHN1cmUgbXkgcmVhc29uaW5nIGlzIHJpZ2h0IG9uIHRoZSBtb25leS4gWWVzLCBpdCByZXBsYWNlcyB0aGUgaW5kZXggYHNfZWAgd2l0aCBgc19pZGAgd2hlbiB0aGUgaXRlcmF0aW9uIHJlc3VtZXMgYWZ0ZXIgYSBkdW1wLiBOb3cgaXQgc2F2ZXMgdGhlIHRhYmxlIElELiBUaGlzIGFsbG93cyBhY2N1cmF0ZSByZXN1bXB0aW9uIG9mIHRoZSBkdW1wIGFmdGVyIGEgcG90ZW50aWFsIHRhYmxlIGluc2VydCBvciBkZWxldGUuIFRoaXMgaXMgcHJlY2lzZWx5IHdoYXQgd2Ugd2FudCB0byBmdXp6LgoKV2UmIzM5O3ZlIGdvdCB0aGUgY29uZmlnczogYElQVjZgIGFuZCBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgLiBPdXIgZm9jYWwgcG9pbnQgaXMgYGluZXQ2X2R1bXBfZmliYC4gVGhpcyBpcyBhIGNsZWFyIGNhc2UgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI1IDAxOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFY2JiMzNDssCiAgICAmIzM0O0lQVjZfTVVMVElQTEVfVEFCTEVTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW5ldDZfZHVtcF9maWImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGl0ZXJhdGlvbiBsb2dpYyBpbiBgaW5ldDZfZHVtcF9maWJgIGZvciBJUHY2IEZJQiBuZXRsaW5rIGR1bXBzLiBJdCBzd2l0Y2hlcyBmcm9tIHVzaW5nIGFuIGluZGV4IHRvIHVzaW5nIHRoZSB0YWJsZSBJRCB0byByZXN1bWUgZHVtcHMsIHdoaWNoIGZpeGVzIHBvdGVudGlhbCBpc3N1ZXMgd2hlbiByb3V0aW5nIHRhYmxlcyBhcmUgYWRkZWQgb3IgcmVtb3ZlZCBkdXJpbmcgYSBtdWx0aXBhcnQgbmV0bGluayBkdW1wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFY2JiMzNDssCiAgICAmIzM0O0lQVjZfTVVMVElQTEVfVEFCTEVTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW5ldDZfZHVtcF9maWImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGl0ZXJhdGlvbiBsb2dpYyBpbiBgaW5ldDZfZHVtcF9maWJgIGZvciBJUHY2IEZJQiBuZXRsaW5rIGR1bXBzLiBJdCBzd2l0Y2hlcyBmcm9tIHVzaW5nIGFuIGluZGV4IHRvIHVzaW5nIHRoZSB0YWJsZSBJRCB0byByZXN1bWUgZHVtcHMsIHdoaWNoIGZpeGVzIHBvdGVudGlhbCBpc3N1ZXMgd2hlbiByb3V0aW5nIHRhYmxlcyBhcmUgYWRkZWQgb3IgcmVtb3ZlZCBkdXJpbmcgYSBtdWx0aXBhcnQgbmV0bGluayBkdW1wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDE6NDk6MDUuMjk2ODc0MjdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzcyNTc1NzI1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFY2XCIsXG4gICAgXCJJUFY2X01VTFRJUExFX1RBQkxFU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImluZXQ2X2R1bXBfZmliXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGl0ZXJhdGlvbiBsb2dpYyBpbiBgaW5ldDZfZHVtcF9maWJgIGZvciBJUHY2IEZJQiBuZXRsaW5rIGR1bXBzLiBJdCBzd2l0Y2hlcyBmcm9tIHVzaW5nIGFuIGluZGV4IHRvIHVzaW5nIHRoZSB0YWJsZSBJRCB0byByZXN1bWUgZHVtcHMsIHdoaWNoIGZpeGVzIHBvdGVudGlhbCBpc3N1ZXMgd2hlbiByb3V0aW5nIHRhYmxlcyBhcmUgYWRkZWQgb3IgcmVtb3ZlZCBkdXJpbmcgYSBtdWx0aXBhcnQgbmV0bGluayBkdW1wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwMTo0OTowNS4yOTY4ODEwNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkyOTAyMzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDJlYWVmZDI4MjZlNGQ0NzRkM2QyYjMyMzI5MGFlOGUwYmNjNTI0ZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1biAyNSAwMTo0OTowMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfZmliLmMgYi9uZXQvaXB2Ni9pcDZfZmliLmNcXG5pbmRleCBmYzk1NzM4ZGVkNzYxYi4uYmRhNDkyNjM0ODU5MjMgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvaXA2X2ZpYi5jXFxuKysrIGIvbmV0L2lwdjYvaXA2X2ZpYi5jXFxuQEAgLTYzNiwxMSArNjM2LDExIEBAIHN0YXRpYyBpbnQgaW5ldDZfZHVtcF9maWIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbiBcXHR9O1xcbiBcXHRjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCA9IGNiLVxcdTAwM2VubGg7XFxuIFxcdHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrYi1cXHUwMDNlc2spO1xcbi1cXHR1bnNpZ25lZCBpbnQgZSA9IDAsIHNfZTtcXG4gXFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQ7XFxuIFxcdHN0cnVjdCBmaWI2X3dhbGtlciAqdztcXG4gXFx0c3RydWN0IGZpYjZfdGFibGUgKnRiO1xcbiBcXHR1bnNpZ25lZCBpbnQgaCwgc19oO1xcbitcXHR1MzIgc19pZDtcXG4gXFx0aW50IGVyciA9IDA7XFxuIFxcbiBcXHRyY3VfcmVhZF9sb2NrKCk7XFxuQEAgLTcwMSwyMyArNzAxLDIyIEBAIHN0YXRpYyBpbnQgaW5ldDZfZHVtcF9maWIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbiBcXHR9XFxuIFxcbiBcXHRzX2ggPSBjYi1cXHUwMDNlYXJnc1swXTtcXG4tXFx0c19lID0gY2ItXFx1MDAzZWFyZ3NbMV07XFxuK1xcdHNfaWQgPSBjYi1cXHUwMDNlYXJnc1sxXTtcXG4gXFxuLVxcdGZvciAoaCA9IHNfaDsgaCBcXHUwMDNjIEZJQjZfVEFCTEVfSEFTSFNaOyBoKyssIHNfZSA9IDApIHtcXG4tXFx0XFx0ZSA9IDA7XFxuK1xcdGZvciAoaCA9IHNfaDsgaCBcXHUwMDNjIEZJQjZfVEFCTEVfSEFTSFNaOyBoKyssIHNfaWQgPSAwKSB7XFxuIFxcdFxcdGhlYWQgPSBcXHUwMDI2bmV0LVxcdTAwM2VpcHY2LmZpYl90YWJsZV9oYXNoW2hdO1xcbiBcXHRcXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UodGIsIGhlYWQsIHRiNl9obGlzdCkge1xcbi1cXHRcXHRcXHRpZiAoZSBcXHUwMDNjIHNfZSlcXG4tXFx0XFx0XFx0XFx0Z290byBuZXh0O1xcbitcXHRcXHRcXHRpZiAoc19pZCBcXHUwMDI2XFx1MDAyNiB0Yi1cXHUwMDNldGI2X2lkICE9IHNfaWQpXFxuK1xcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHRcXHRzX2lkID0gMDtcXG4rXFxuK1xcdFxcdFxcdGNiLVxcdTAwM2VhcmdzWzFdID0gdGItXFx1MDAzZXRiNl9pZDtcXG4gXFx0XFx0XFx0ZXJyID0gZmliNl9kdW1wX3RhYmxlKHRiLCBza2IsIGNiKTtcXG4gXFx0XFx0XFx0aWYgKGVyciAhPSAwKVxcbiBcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4tbmV4dDpcXG4tXFx0XFx0XFx0ZSsrO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4gb3V0Olxcbi1cXHRjYi1cXHUwMDNlYXJnc1sxXSA9IGU7XFxuIFxcdGNiLVxcdTAwM2VhcmdzWzBdID0gaDtcXG4gXFxuIHVubG9jazpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDE6NDk6MDUuODkwNTk0MjY1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzEzMjAyNjQwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFY2XCIsXG4gICAgXCJJUFY2X01VTFRJUExFX1RBQkxFU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImluZXQ2X2R1bXBfZmliXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGl0ZXJhdGlvbiBsb2dpYyBpbiBgaW5ldDZfZHVtcF9maWJgIGZvciBJUHY2IEZJQiBuZXRsaW5rIGR1bXBzLiBJdCBzd2l0Y2hlcyBmcm9tIHVzaW5nIGFuIGluZGV4IHRvIHVzaW5nIHRoZSB0YWJsZSBJRCB0byByZXN1bWUgZHVtcHMsIHdoaWNoIGZpeGVzIHBvdGVudGlhbCBpc3N1ZXMgd2hlbiByb3V0aW5nIHRhYmxlcyBhcmUgYWRkZWQgb3IgcmVtb3ZlZCBkdXJpbmcgYSBtdWx0aXBhcnQgbmV0bGluayBkdW1wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDAyZWFlZmQyODI2ZTRkNDc0ZDNkMmIzMjMyOTBhZThlMGJjYzUyNGVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1biAyNSAwMTo0OTowMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9maWIuYyBiL25ldC9pcHY2L2lwNl9maWIuY1xuaW5kZXggZmM5NTczOGRlZDc2MWIuLmJkYTQ5MjYzNDg1OTIzIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvaXA2X2ZpYi5jXG4rKysgYi9uZXQvaXB2Ni9pcDZfZmliLmNcbkBAIC02MzYsMTEgKzYzNiwxMSBAQCBzdGF0aWMgaW50IGluZXQ2X2R1bXBfZmliKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbiBcdH07XG4gXHRjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCA9IGNiLVx1MDAzZW5saDtcbiBcdHN0cnVjdCBuZXQgKm5ldCA9IHNvY2tfbmV0KHNrYi1cdTAwM2Vzayk7XG4tXHR1bnNpZ25lZCBpbnQgZSA9IDAsIHNfZTtcbiBcdHN0cnVjdCBobGlzdF9oZWFkICpoZWFkO1xuIFx0c3RydWN0IGZpYjZfd2Fsa2VyICp3O1xuIFx0c3RydWN0IGZpYjZfdGFibGUgKnRiO1xuIFx0dW5zaWduZWQgaW50IGgsIHNfaDtcbitcdHUzMiBzX2lkO1xuIFx0aW50IGVyciA9IDA7XG4gXG4gXHRyY3VfcmVhZF9sb2NrKCk7XG5AQCAtNzAxLDIzICs3MDEsMjIgQEAgc3RhdGljIGludCBpbmV0Nl9kdW1wX2ZpYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG4gXHR9XG4gXG4gXHRzX2ggPSBjYi1cdTAwM2VhcmdzWzBdO1xuLVx0c19lID0gY2ItXHUwMDNlYXJnc1sxXTtcbitcdHNfaWQgPSBjYi1cdTAwM2VhcmdzWzFdO1xuIFxuLVx0Zm9yIChoID0gc19oOyBoIFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaCsrLCBzX2UgPSAwKSB7XG4tXHRcdGUgPSAwO1xuK1x0Zm9yIChoID0gc19oOyBoIFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaCsrLCBzX2lkID0gMCkge1xuIFx0XHRoZWFkID0gXHUwMDI2bmV0LVx1MDAzZWlwdjYuZmliX3RhYmxlX2hhc2hbaF07XG4gXHRcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSh0YiwgaGVhZCwgdGI2X2hsaXN0KSB7XG4tXHRcdFx0aWYgKGUgXHUwMDNjIHNfZSlcbi1cdFx0XHRcdGdvdG8gbmV4dDtcbitcdFx0XHRpZiAoc19pZCBcdTAwMjZcdTAwMjYgdGItXHUwMDNldGI2X2lkICE9IHNfaWQpXG4rXHRcdFx0XHRjb250aW51ZTtcbitcdFx0XHRzX2lkID0gMDtcbitcbitcdFx0XHRjYi1cdTAwM2VhcmdzWzFdID0gdGItXHUwMDNldGI2X2lkO1xuIFx0XHRcdGVyciA9IGZpYjZfZHVtcF90YWJsZSh0Yiwgc2tiLCBjYik7XG4gXHRcdFx0aWYgKGVyciAhPSAwKVxuIFx0XHRcdFx0Z290byBvdXQ7XG4tbmV4dDpcbi1cdFx0XHRlKys7XG4gXHRcdH1cbiBcdH1cbiBvdXQ6XG4tXHRjYi1cdTAwM2VhcmdzWzFdID0gZTtcbiBcdGNiLVx1MDAzZWFyZ3NbMF0gPSBoO1xuIFxuIHVubG9jazpcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDAxOjQ5OjA1Ljg5MDU5NTQzNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NjcxMDYyMDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSVB2NiBGSUIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdHdlYWtzIGBuZXQvaXB2Ni9pcDZfZmliLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIGZvY3VzZWQgb24gYGluZXQ2X2R1bXBfZmliYC4gSXQgbG9va3MgbGlrZSB0aGV5J3JlIHN1YnN0aXR1dGluZyBgc19lYCwgd2hpY2ggSSBhc3N1bWUgaXMgYW4gaW5kZXggb3Igc29tZXRoaW5nIHNpbWlsYXIsIHdpdGggYHNfaWRgLCBhIHRhYmxlIElELCBpbiB0aGUgaXRlcmF0aW9uIHByb2Nlc3Mgd2l0aGluIGBpbmV0Nl9kdW1wX2ZpYmAuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGNoYW5nZSB3aXRoaW4gdGhlIElQdjYgbmV0d29ya2luZyBzdGFjaywgc3BlY2lmaWNhbGx5IGhvdyB0aGUgSVB2NiBGSUIgaXMgZHVtcGVkIG92ZXIgbmV0bGluay5cblxuR2l2ZW4gdGhlIHBvdGVudGlhbCBpbXBhY3Qgb24gZGF0YSBvdXRwdXQgYW5kIHRoZSBjb3JlIG5ldHdvcmsgZnVuY3Rpb25hbGl0eSBpbnZvbHZlZCwgZnV6emluZyBpcyBhbiBhYnNvbHV0ZSBtdXN0IGhlcmUuIFdlIG5lZWQgdG8gcmVhbGx5IHB1dCBpdCB0aHJvdWdoIGl0cyBwYWNlcy5cblxuRmlyc3QgdGhpbmdzIGZpcnN0LCBJJ2xsIGxvY2F0ZSBgaW5ldDZfZHVtcF9maWJgIGl0c2VsZiB3aXRoaW4gYG5ldC9pcHY2L2lwNl9maWIuY2AgdG8gdW5kZXJzdGFuZCB0aGUgY29kZSBjb250ZXh0IGRpcmVjdGx5LiBUaGVuLCBJIG5lZWQgdG8gaWRlbnRpZnkgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBTaW5jZSB3ZSdyZSBkZWFsaW5nIHdpdGggSVB2NiwgaXQncyBoaWdobHkgbGlrZWx5IHRoYXQgYENPTkZJR19JUFY2YCBpcyB0aGUga2V5LiBJ4oCZbGwgZG91YmxlLWNoZWNrIGBuZXQvaXB2Ni9LY29uZmlnYCB0byBiZSBjZXJ0YWluLiBHZXR0aW5nIHRoZSBjb25maWd1cmF0aW9uIHJpZ2h0IGlzIGNyaXRpY2FsIGZvciBhIHZhbGlkIHRlc3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNDgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwMTo0OToxMC43NTc3MDQwMjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4Mjk3MDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImluZXQ2X2R1bXBfZmliXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L2lwNl9maWIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9pcDZfZmliLmM9NTg1PXN0YXRpYyBpbnQgZmliNl9kdW1wX3RhYmxlKHN0cnVjdCBmaWI2X3RhYmxlICp0YWJsZSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9pcHY2L2lwNl9maWIuYy02MzAtXFxubmV0L2lwdjYvaXA2X2ZpYi5jOjYzMTpzdGF0aWMgaW50IGluZXQ2X2R1bXBfZmliKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcXG5uZXQvaXB2Ni9pcDZfZmliLmMtNjMyLXtcXG4tLVxcbm5ldC9pcHY2L2lwNl9maWIuYz0yNTYwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRubF9tc2dfaGFuZGxlciBmaWI2X3J0bmxfbXNnX2hhbmRsZXJzW10gX19pbml0Y29uc3Rfb3JfbW9kdWxlID0ge1xcbm5ldC9pcHY2L2lwNl9maWIuYy0yNTYxLVxcdHsub3duZXIgPSBUSElTX01PRFVMRSwgLnByb3RvY29sID0gUEZfSU5FVDYsIC5tc2d0eXBlID0gUlRNX0dFVFJPVVRFLFxcbm5ldC9pcHY2L2lwNl9maWIuYzoyNTYyOlxcdCAuZHVtcGl0ID0gaW5ldDZfZHVtcF9maWIsXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTI1NjMtXFx0IC5mbGFncyA9IFJUTkxfRkxBR19EVU1QX1VOTE9DS0VEIHwgUlROTF9GTEFHX0RVTVBfU1BMSVRfTkxNX0RPTkV9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwMTo0OToxMC45MjYwMDgwODNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDc0MjI4NjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBJUHY2IFJvdXRpbmcgVGFibGUgRHVtcHMqKlxuXG5Pa2F5LCBzbyBgaW5ldDZfZHVtcF9maWJgIGlzIHRoZSBoYW5kbGVyIHRoYXQga2lja3MgaW4gd2hlbiB3ZSBkbyBhIGBSVE1fR0VUUk9VVEVgIHJlcXVlc3Qgc3BlY2lmaWNhbGx5IGZvciBJUHY2ICh0aGF0J3MgYFBGX0lORVQ2YCkuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0J3MgdGhlIG5ldGxpbmsgaW50ZXJmYWNlIHRvIGdldCByb3V0aW5nIGluZm9ybWF0aW9uLCB3aGljaCBpcyB3aGF0IEknZCBleHBlY3QuIFNvLCBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLiBcblxuTm93LCBJIG5lZWQgdG8gY29uZmlybSB0aGUgZW5hYmxpbmcgY29uZGl0aW9uOiBgSVBWNmAuIEp1c3QgbWFraW5nIHN1cmUsIGFyZSB0aGVyZSAqYW55KiBvdGhlciBjb25maWcgb3B0aW9ucyBpbnZvbHZlZCB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb24/IEdvdHRhIGJlIHRob3JvdWdoLiBUaW1lIHRvIGNyYWNrIG9wZW4gYG5ldC9pcHY2L0tjb25maWdgIGFuZCBzZWUgd2hhdCBlbHNlIGNvdWxkIGJlIGx1cmtpbmcgaW4gdGhlcmUgYXJvdW5kIGBJUFY2YC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAzMSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI1VDAxOjQ5OjE0LjAwMDIzOTEzN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODUzNTU4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBWNlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L0tjb25maWctNS1cXG5uZXQvaXB2Ni9LY29uZmlnOjY6bWVudWNvbmZpZyBJUFY2XFxubmV0L2lwdjYvS2NvbmZpZy03LVxcdGJvb2wgXFxcIlRoZSBJUHY2IHByb3RvY29sXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xOT1pZiBJUFY2XFxubmV0L2lwdjYvS2NvbmZpZy0yMC1cXG5uZXQvaXB2Ni9LY29uZmlnOjIxOmNvbmZpZyBJUFY2X1JPVVRFUl9QUkVGXFxubmV0L2lwdjYvS2NvbmZpZy0yMi1cXHRib29sIFxcXCJJUHY2OiBSb3V0ZXIgUHJlZmVyZW5jZSAoUkZDIDQxOTEpIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTMwLVxcbm5ldC9pcHY2L0tjb25maWc6MzE6Y29uZmlnIElQVjZfUk9VVEVfSU5GT1xcbm5ldC9pcHY2L0tjb25maWctMzItXFx0Ym9vbCBcXFwiSVB2NjogUm91dGUgSW5mb3JtYXRpb24gKFJGQyA0MTkxKSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zOC1cXG5uZXQvaXB2Ni9LY29uZmlnOjM5OmNvbmZpZyBJUFY2X09QVElNSVNUSUNfREFEXFxubmV0L2lwdjYvS2NvbmZpZy00MC1cXHRib29sIFxcXCJJUHY2OiBFbmFibGUgUkZDIDQ0MjkgT3B0aW1pc3RpYyBEQURcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTEwMj1jb25maWcgSU5FVDZfSVBDT01QXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTExMS1cXG5uZXQvaXB2Ni9LY29uZmlnOjExMjpjb25maWcgSVBWNl9NSVA2XFxubmV0L2lwdjYvS2NvbmZpZy0xMTMtXFx0dHJpc3RhdGUgXFxcIklQdjY6IE1vYmlsaXR5XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xMTktXFxubmV0L2lwdjYvS2NvbmZpZzoxMjA6Y29uZmlnIElQVjZfSUxBXFxubmV0L2lwdjYvS2NvbmZpZy0xMjEtXFx0dHJpc3RhdGUgXFxcIklQdjY6IElkZW50aWZpZXIgTG9jYXRvciBBZGRyZXNzaW5nIChJTEEpXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xNDY9Y29uZmlnIElORVQ2X1RVTk5FTFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xNDktXFxubmV0L2lwdjYvS2NvbmZpZzoxNTA6Y29uZmlnIElQVjZfVlRJXFxubmV0L2lwdjYvS2NvbmZpZy0xNTEtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgKHNlY3VyZSkgSVB2NjogdHVubmVsaW5nXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xNjEtXFxubmV0L2lwdjYvS2NvbmZpZzoxNjI6Y29uZmlnIElQVjZfU0lUXFxubmV0L2lwdjYvS2NvbmZpZy0xNjMtXFx0dHJpc3RhdGUgXFxcIklQdjY6IElQdjYtaW4tSVB2NCB0dW5uZWwgKFNJVCBkcml2ZXIpXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xNzYtXFxubmV0L2lwdjYvS2NvbmZpZzoxNzc6Y29uZmlnIElQVjZfU0lUXzZSRFxcbm5ldC9pcHY2L0tjb25maWctMTc4LVxcdGJvb2wgXFxcIklQdjY6IElQdjYgUmFwaWQgRGVwbG95bWVudCAoNlJEKVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTk1LVxcbm5ldC9pcHY2L0tjb25maWc6MTk2OmNvbmZpZyBJUFY2X05ESVNDX05PREVUWVBFXFxubmV0L2lwdjYvS2NvbmZpZy0xOTctXFx0Ym9vbFxcbm5ldC9pcHY2L0tjb25maWctMTk4LVxcbm5ldC9pcHY2L0tjb25maWc6MTk5OmNvbmZpZyBJUFY2X1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMjAwLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBJUC1pbi1JUHY2IHR1bm5lbCAoUkZDMjQ3MylcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIwOS1cXG5uZXQvaXB2Ni9LY29uZmlnOjIxMDpjb25maWcgSVBWNl9HUkVcXG5uZXQvaXB2Ni9LY29uZmlnLTIxMS1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogR1JFIHR1bm5lbFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjI3LVxcbm5ldC9pcHY2L0tjb25maWc6MjI4OmNvbmZpZyBJUFY2X0ZPVVxcbm5ldC9pcHY2L0tjb25maWctMjI5LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIzMS1cXG5uZXQvaXB2Ni9LY29uZmlnOjIzMjpjb25maWcgSVBWNl9GT1VfVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0yMzMtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjM2LVxcbm5ldC9pcHY2L0tjb25maWc6MjM3OmNvbmZpZyBJUFY2X01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY2L0tjb25maWctMjM4LVxcdGJvb2wgXFxcIklQdjY6IE11bHRpcGxlIFJvdXRpbmcgVGFibGVzXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yNDItXFxubmV0L2lwdjYvS2NvbmZpZzoyNDM6Y29uZmlnIElQVjZfU1VCVFJFRVNcXG5uZXQvaXB2Ni9LY29uZmlnLTI0NC1cXHRib29sIFxcXCJJUHY2OiBzb3VyY2UgYWRkcmVzcyBiYXNlZCByb3V0aW5nXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yNTYtXFxubmV0L2lwdjYvS2NvbmZpZzoyNTc6Y29uZmlnIElQVjZfTVJPVVRFXFxubmV0L2lwdjYvS2NvbmZpZy0yNTgtXFx0Ym9vbCBcXFwiSVB2NjogbXVsdGljYXN0IHJvdXRpbmdcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTI2NC1cXG5uZXQvaXB2Ni9LY29uZmlnOjI2NTpjb25maWcgSVBWNl9NUk9VVEVfTVVMVElQTEVfVEFCTEVTXFxubmV0L2lwdjYvS2NvbmZpZy0yNjYtXFx0Ym9vbCBcXFwiSVB2NjogbXVsdGljYXN0IHBvbGljeSByb3V0aW5nXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yNzgtXFxubmV0L2lwdjYvS2NvbmZpZzoyNzk6Y29uZmlnIElQVjZfUElNU01fVjJcXG5uZXQvaXB2Ni9LY29uZmlnLTI4MC1cXHRib29sIFxcXCJJUHY2OiBQSU0tU00gdmVyc2lvbiAyIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTI4NS1cXG5uZXQvaXB2Ni9LY29uZmlnOjI4Njpjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0yODctXFx0Ym9vbCBcXFwiSVB2NjogU2VnbWVudCBSb3V0aW5nIEhlYWRlciBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTI5OS1cXG5uZXQvaXB2Ni9LY29uZmlnOjMwMDpjb25maWcgSVBWNl9TRUc2X0hNQUNcXG5uZXQvaXB2Ni9LY29uZmlnLTMwMS1cXHRib29sIFxcXCJJUHY2OiBTZWdtZW50IFJvdXRpbmcgSE1BQyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMTEtXFxubmV0L2lwdjYvS2NvbmZpZzozMTI6Y29uZmlnIElQVjZfU0VHNl9CUEZcXG5uZXQvaXB2Ni9LY29uZmlnLTMxMy1cXHRkZWZfYm9vbCB5XFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTMxNi1cXG5uZXQvaXB2Ni9LY29uZmlnOjMxNzpjb25maWcgSVBWNl9SUExfTFdUVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTMxOC1cXHRib29sIFxcXCJJUHY2OiBSUEwgU291cmNlIFJvdXRpbmcgSGVhZGVyIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTMyNy1cXG5uZXQvaXB2Ni9LY29uZmlnOjMyODpjb25maWcgSVBWNl9JT0FNNl9MV1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMzI5LVxcdGJvb2wgXFxcIklQdjY6IElPQU0gUHJlLWFsbG9jYXRlZCBUcmFjZSBpbnNlcnRpb24gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDE6NDk6MTQuMDU4Nzg0Nzc2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE3MTc5MjM4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQdjYgUm91dGluZyBUYWJsZSBEdW1wIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IHRvdWNoaW5nIGBpbmV0Nl9kdW1wX2ZpYmAsIHdoaWNoIG1lYW5zIGl0J3MgaW52b2x2ZWQgaW4gZHVtcGluZyB0aGUgSVB2NiByb3V0aW5nIHRhYmxlLiBJIHNlZSBpdCBpdGVyYXRlcyBvdmVyIGBGSUI2X1RBQkxFX0hBU0hTWmAuIFRoYXQncyB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IgZm9yIGEgc3RhbmRhcmQgSVB2NiByb3V0aW5nIHRhYmxlIGR1bXAuIE5vdGhpbmcgaW1tZWRpYXRlbHkganVtcHMgb3V0IGFzIGFsYXJtaW5nIGhlcmUuXG5cbkknbSB0aGlua2luZywgYElQVjZfTVVMVElQTEVfVEFCTEVTYCBjb3VsZCBiZSBzb21ldGhpbmcgdG8gY29uc2lkZXIgc2luY2UgaXQncyBhYm91dCBtdWx0aXBsZSByb3V0aW5nIHRhYmxlcy4gQnV0IHdhaXQsIGl0J3Mgc3RpbGwgdXNpbmcgYEZJQjZfVEFCTEVfSEFTSFNaYCByZWdhcmRsZXNzLCBldmVuIGlmIGl0J3MganVzdCAxIHdoZW4gbXVsdGlwbGUgdGFibGVzIGFyZW4ndCBlbmFibGVkLiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgd2hhdCB0aGUgdmFsdWUgb2YgYEZJQjZfVEFCTEVfSEFTSFNaYCBpcyBleGFjdGx5IGluIHRoaXMgY29udGV4dC4gTmVlZCB0byB2ZXJpZnkgdGhhdCdzIHRoZSBjb3JyZWN0IGFwcHJvYWNoIGdpdmVuIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg1MCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwMTo0OToxOC4yMzA1NzkzNjRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODcxMzg2NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRklCNl9UQUJMRV9IQVNIU1pcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L2lwNl9maWIuYz0yMTM9c3RhdGljIHZvaWQgZmliNl9saW5rX3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZpYjZfdGFibGUgKnRiKVxcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTIyMS1cXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2dGItXFx1MDAzZXRiNl9sb2NrKTtcXG5uZXQvaXB2Ni9pcDZfZmliLmM6MjIyOlxcdGggPSB0Yi1cXHUwMDNldGI2X2lkIFxcdTAwMjYgKEZJQjZfVEFCTEVfSEFTSFNaIC0gMSk7XFxubmV0L2lwdjYvaXA2X2ZpYi5jLTIyMy1cXG4tLVxcbm5ldC9pcHY2L2lwNl9maWIuYz0yODI9c3RydWN0IGZpYjZfdGFibGUgKmZpYjZfZ2V0X3RhYmxlKHN0cnVjdCBuZXQgKm5ldCwgdTMyIGlkKVxcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTI4OS1cXG5uZXQvaXB2Ni9pcDZfZmliLmM6MjkwOlxcdGhlYWQgPSBcXHUwMDI2bmV0LVxcdTAwM2VpcHY2LmZpYl90YWJsZV9oYXNoW2lkIFxcdTAwMjYgKEZJQjZfVEFCTEVfSEFTSFNaIC0gMSldO1xcbm5ldC9pcHY2L2lwNl9maWIuYy0yOTEtXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmM9MzU2PXVuc2lnbmVkIGludCBmaWI2X3RhYmxlc19zZXFfcmVhZChjb25zdCBzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmMtMzYwLVxcdHJjdV9yZWFkX2xvY2soKTtcXG5uZXQvaXB2Ni9pcDZfZmliLmM6MzYxOlxcdGZvciAoaCA9IDA7IGggXFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaCsrKSB7XFxubmV0L2lwdjYvaXA2X2ZpYi5jLTM2Mi1cXHRcXHRjb25zdCBzdHJ1Y3QgaGxpc3RfaGVhZCAqaGVhZCA9IFxcdTAwMjZuZXQtXFx1MDAzZWlwdjYuZmliX3RhYmxlX2hhc2hbaF07XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmM9NDkyPWludCBmaWI2X3RhYmxlc19kdW1wKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcXG4tLVxcbm5ldC9pcHY2L2lwNl9maWIuYy01MDktXFxubmV0L2lwdjYvaXA2X2ZpYi5jOjUxMDpcXHRmb3IgKGggPSAwOyBoIFxcdTAwM2MgRklCNl9UQUJMRV9IQVNIU1o7IGgrKykge1xcbm5ldC9pcHY2L2lwNl9maWIuYy01MTEtXFx0XFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQgPSBcXHUwMDI2bmV0LVxcdTAwM2VpcHY2LmZpYl90YWJsZV9oYXNoW2hdO1xcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jPTYzMT1zdGF0aWMgaW50IGluZXQ2X2R1bXBfZmliKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcXG4tLVxcbm5ldC9pcHY2L2lwNl9maWIuYy03MDUtXFxubmV0L2lwdjYvaXA2X2ZpYi5jOjcwNjpcXHRmb3IgKGggPSBzX2g7IGggXFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaCsrLCBzX2lkID0gMCkge1xcbm5ldC9pcHY2L2lwNl9maWIuYy03MDctXFx0XFx0aGVhZCA9IFxcdTAwMjZuZXQtXFx1MDAzZWlwdjYuZmliX3RhYmxlX2hhc2hbaF07XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmM9MjMwOD1zdGF0aWMgdm9pZCBfX2ZpYjZfY2xlYW5fYWxsKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9pcHY2L2lwNl9maWIuYy0yMzE2LVxcdHJjdV9yZWFkX2xvY2soKTtcXG5uZXQvaXB2Ni9pcDZfZmliLmM6MjMxNzpcXHRmb3IgKGggPSAwOyBoIFxcdTAwM2MgRklCNl9UQUJMRV9IQVNIU1o7IGgrKykge1xcbm5ldC9pcHY2L2lwNl9maWIuYy0yMzE4LVxcdFxcdGhlYWQgPSBcXHUwMDI2bmV0LVxcdTAwM2VpcHY2LmZpYl90YWJsZV9oYXNoW2hdO1xcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jPTI0MDY9c3RhdGljIHZvaWQgZmliNl9nY19hbGwoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmliNl9nY19hcmdzICpnY19hcmdzKVxcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTI0MTItXFx0cmN1X3JlYWRfbG9jaygpO1xcbm5ldC9pcHY2L2lwNl9maWIuYzoyNDEzOlxcdGZvciAoaCA9IDA7IGggXFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaCsrKSB7XFxubmV0L2lwdjYvaXA2X2ZpYi5jLTI0MTQtXFx0XFx0aGVhZCA9IFxcdTAwMjZuZXQtXFx1MDAzZWlwdjYuZmliX3RhYmxlX2hhc2hbaF07XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmM9MjQ2MT1zdGF0aWMgaW50IF9fbmV0X2luaXQgZmliNl9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTI0NjIte1xcbm5ldC9pcHY2L2lwNl9maWIuYzoyNDYzOlxcdHNpemVfdCBzaXplID0gc2l6ZW9mKHN0cnVjdCBobGlzdF9oZWFkKSAqIEZJQjZfVEFCTEVfSEFTSFNaO1xcbm5ldC9pcHY2L2lwNl9maWIuYy0yNDY0LVxcdGludCBlcnI7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmM9MjUzMz1zdGF0aWMgdm9pZCBmaWI2X25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9pcHY2L2lwNl9maWIuYy0yNTM4LVxcbm5ldC9pcHY2L2lwNl9maWIuYzoyNTM5OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaSsrKSB7XFxubmV0L2lwdjYvaXA2X2ZpYi5jLTI1NDAtXFx0XFx0c3RydWN0IGhsaXN0X2hlYWQgKmhlYWQgPSBcXHUwMDI2bmV0LVxcdTAwM2VpcHY2LmZpYl90YWJsZV9oYXNoW2ldO1xcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jPTI2Njc9c3RhdGljIHN0cnVjdCBmaWI2X3RhYmxlICppcHY2X3JvdXRlX3NlcV9uZXh0X3RhYmxlKHN0cnVjdCBmaWI2X3RhYmxlICp0YmwsXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjY3My1cXHRpZiAodGJsKSB7XFxubmV0L2lwdjYvaXA2X2ZpYi5jOjI2NzQ6XFx0XFx0aCA9ICh0YmwtXFx1MDAzZXRiNl9pZCBcXHUwMDI2IChGSUI2X1RBQkxFX0hBU0hTWiAtIDEpKSArIDE7XFxubmV0L2lwdjYvaXA2X2ZpYi5jLTI2NzUtXFx0XFx0bm9kZSA9IHJjdV9kZXJlZmVyZW5jZShobGlzdF9uZXh0X3JjdShcXHUwMDI2dGJsLVxcdTAwM2V0YjZfaGxpc3QpKTtcXG4tLVxcbm5ldC9pcHY2L2lwNl9maWIuYy0yNjgwLVxcbm5ldC9pcHY2L2lwNl9maWIuYzoyNjgxOlxcdHdoaWxlICghbm9kZSBcXHUwMDI2XFx1MDAyNiBoIFxcdTAwM2MgRklCNl9UQUJMRV9IQVNIU1opIHtcXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjY4Mi1cXHRcXHRub2RlID0gcmN1X2RlcmVmZXJlbmNlKFxcbi0tXFxubmV0L2lwdjYvcm91dGUuYz00NTM2PXZvaWQgcnQ2X3B1cmdlX2RmbHRfcm91dGVycyhzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTQ1NDMtXFxubmV0L2lwdjYvcm91dGUuYzo0NTQ0OlxcdGZvciAoaCA9IDA7IGggXFx1MDAzYyBGSUI2X1RBQkxFX0hBU0hTWjsgaCsrKSB7XFxubmV0L2lwdjYvcm91dGUuYy00NTQ1LVxcdFxcdGhlYWQgPSBcXHUwMDI2bmV0LVxcdTAwM2VpcHY2LmZpYl90YWJsZV9oYXNoW2hdO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwMTo0OToxOC4zMTc3Mjg5OTJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzA3NDgzNTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqTmV0d29yayBSb3V0aW5nIFRhYmxlIENvbnRleHR1YWxpemF0aW9uKipcblxuUmlnaHQsIGBJUFY2X01VTFRJUExFX1RBQkxFU2AganVtcHMgb3V0IGltbWVkaWF0ZWx5LiBJZiB0aGF0J3MgKm5vdCogZW5hYmxlZCwgd2UncmUgc3R1Y2sgd2l0aCBqdXN0IHRoZSBtYWluIGFuZCBsb2NhbCByb3V0aW5nIHRhYmxlcy4gVGhhdCdzIHByZXR0eSBsaW1pdGluZy4gQnV0IHRoZW4gSSdtIHNlZWluZyB0aGlzIGBGSUI2X1RBQkxFX0hBU0hTWmAgdmFsdWUgb2YgMjU2LCBhbmQgdGhhdCBkb2Vzbid0IGZlZWwgcmlnaHQgaW4gdGhpcyB0d28tdGFibGUgY29udGV4dC4gSXQgZmVlbHMgbGlrZSBtb3JlIHRoYW4gMjU2LiBTb21ldGhpbmcgZmVlbHMgb2ZmIGFib3V0IHRoYXQgY29tYmluYXRpb24uIExldCBtZSBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBgaW5jbHVkZS9uZXQvaXA2X2ZpYi5oYCBoZWFkZXIgZmlsZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBkZWZpbml0aW9uIG9mIGBGSUI2X1RBQkxFX0hBU0hTWmAgYW5kIGhvdyBpdCdzIHVzZWQgd2l0aGluIHRoZSBJUHY2IGZvcndhcmRpbmcgaW5mb3JtYXRpb24gYmFzZS4gSSBzaG91bGQgc3RhcnQgdGhlcmUsIGFuZCBzZWUgaG93IHRoZSB0d28gYXJlIHRpZWQgdG9nZXRoZXIuIEknbSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBzb3VyY2UgZm9yIHRoYXQgbWFjcm8gZGVmaW5pdGlvbiB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzgyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjVUMDE6NDk6MjEuNjI1MjE1MTIxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDY4MDMwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJGSUI2X1RBQkxFX0hBU0hTWlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL25ldC9pcDZfZmliLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvaXA2X2ZpYi5oLTI1LSNpZmRlZiBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG5pbmNsdWRlL25ldC9pcDZfZmliLmg6MjY6I2RlZmluZSBGSUI2X1RBQkxFX0hBU0hTWiAyNTZcXG5pbmNsdWRlL25ldC9pcDZfZmliLmgtMjctI2Vsc2VcXG5pbmNsdWRlL25ldC9pcDZfZmliLmg6Mjg6I2RlZmluZSBGSUI2X1RBQkxFX0hBU0hTWiAxXFxuaW5jbHVkZS9uZXQvaXA2X2ZpYi5oLTI5LSNlbmRpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwMTo0OToyMS42OTU5MDE1OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTIwMDA4MjIzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldGxpbmsgRHVtcCBGaXggZm9yIElQdjYgRklCIFRhYmxlcyoqXG5cbk9rYXksIHNvIHRoZSBgRklCNl9UQUJMRV9IQVNIU1pgIHZhbHVlIGlzIGNvbmRpdGlvbmFsIOKAkyBpdCdzIDI1NiB3aGVuIGBDT05GSUdfSVBWNl9NVUxUSVBMRV9UQUJMRVNgIGlzIGVuYWJsZWQsIGFuZCAxIG90aGVyd2lzZS4gVGhpcyBpcyBpbW1lZGlhdGVseSByZWxldmFudC4gVGhlIGJ1ZyBiZWluZyBmaXhlZCBoZXJlIGFwcGVhcnMgdG8gYmUgaW4gdGhlIG5ldGxpbmsgZHVtcCdzIGhhbmRsaW5nIG9mIG11bHRpcGxlIHRhYmxlcywgYW5kIHRoZSBjcnVjaWFsIHBvaW50IGlzIGhvdyB0aGUgc3RhdGUgaXMgc2F2ZWQgYW5kIHJlc3VtZWQgZHVyaW5nIHRoZSBkdW1wIHByb2Nlc3MuIElmIHRoZSBjb2RlIHdhcyB1c2luZyBgc19lYCBhcyBhbiBpbmRleCBhbmQgdGFibGVzIHdlcmUgYWRkZWQgb3IgcmVtb3ZlZCBtaWQtZHVtcCwgaXQncyBjbGVhciB0aGUgaXRlcmF0aW9uIGNvdWxkIGdvIGF3cnksIGxlYWRpbmcgdG8gdGhlIGR1bXAgbWlzc2luZyBvciBkdXBsaWNhdGluZyBzb21lIHRhYmxlcy5cblxuVGhlIGZpeCwgYW5kIHRoaXMgaXMgdGhlIGNvcmUgb2YgaXQsIGNsZXZlcmx5IHN3aXRjaGVzIHRvIHVzaW5nIGBzX2lkYCwgd2hpY2ggcmVwcmVzZW50cyB0aGUgdGFibGUgSUQgKGB0Yi1cdTAwM2V0YjZfaWRgKSwgdG8gcmVzdW1lIGNvcnJlY3RseS4gVGhpcyBpcyBhbiBpbXByb3ZlbWVudCB0byBgaW5ldDZfZHVtcF9maWJgLiBJdCBzYXZlcyB0aGUgdGFibGUgSUQsIGluc3RlYWQgb2YgcmVseWluZyBvbiBhIHBvdGVudGlhbGx5IHVuc3RhYmxlIGluZGV4LlxuXG5UbyBtYWtlIHN1cmUgdGhpcyB0cmlnZ2Vycywgd2UnbGwgbmVlZCBgSVBWNl9NVUxUSVBMRV9UQUJMRVNgLCB3aGljaCBhY3RpdmF0ZXMgdGhlIG11bHRpcGxlIHRhYmxlIHNjZW5hcmlvIGFuZCB0cmlnZ2VycyB0aGUgaGFzaCBpdGVyYXRpb24uIEknbGwgbmVlZCB0byBlbmFibGUgYElQVjZgIGFzIHdlbGwsIG9mIGNvdXJzZS5cblxuV2UgZGVmaW5pdGVseSBoYXZlIGEgc2l0dWF0aW9uIHdvcnRoIGZ1enppbmcgaGVyZSwgZ2l2ZW4gdGhlIGZ1bmN0aW9uYWwgY2hhbmdlLiBXZSBuZWVkIHRvIGZvY3VzIG9uIGBpbmV0Nl9kdW1wX2ZpYmAuXG5cbk5vdywgaXMgYGluZXQ2X2R1bXBfZmliYCBzdGF0aWMgb3Igbm90PyBHb29kLCBpdCdzIHN0YXRpYywgd2hpY2ggY291bGQgYWZmZWN0IHN5emthbGxlcidzIGFiaWxpdHkgdG8gcmVhY2ggaXQuIEl0J3MgaW4gYG5ldC9pcHY2L2lwNl9maWIuY2AuIEhvd2V2ZXIsIGl0J3MgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLCBzcGVjaWZpY2FsbHkgYFJUTV9HRVRST1VURWAgZm9yIGBQRl9JTkVUNmAuIE9rYXksIHNvIGl0J3MgcmVhY2hlZCB2aWEgYSBuZXRsaW5rIHN5c2NhbGwhIFBlcmZlY3QuIFdlJ3JlIHN0aWxsIGNvcnJlY3QgaW4gZm9jdXNpbmcgb24gYGluZXQ2X2R1bXBfZmliYC5cblxuTGV0IG1lIHF1aWNrbHkgcmV2aWV3IHRoZSBwYXRjaCBhZ2FpbiB0byBtYWtlIHN1cmUgbXkgcmVhc29uaW5nIGlzIHJpZ2h0IG9uIHRoZSBtb25leS4gWWVzLCBpdCByZXBsYWNlcyB0aGUgaW5kZXggYHNfZWAgd2l0aCBgc19pZGAgd2hlbiB0aGUgaXRlcmF0aW9uIHJlc3VtZXMgYWZ0ZXIgYSBkdW1wLiBOb3cgaXQgc2F2ZXMgdGhlIHRhYmxlIElELiBUaGlzIGFsbG93cyBhY2N1cmF0ZSByZXN1bXB0aW9uIG9mIHRoZSBkdW1wIGFmdGVyIGEgcG90ZW50aWFsIHRhYmxlIGluc2VydCBvciBkZWxldGUuIFRoaXMgaXMgcHJlY2lzZWx5IHdoYXQgd2Ugd2FudCB0byBmdXp6LlxuXG5XZSd2ZSBnb3QgdGhlIGNvbmZpZ3M6IGBJUFY2YCBhbmQgYElQVjZfTVVMVElQTEVfVEFCTEVTYC4gT3VyIGZvY2FsIHBvaW50IGlzIGBpbmV0Nl9kdW1wX2ZpYmAuIFRoaXMgaXMgYSBjbGVhciBjYXNlIGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjM0LCJPdXRwdXRUb2tlbnMiOjEyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNVQwMTo0OTozMi44OTU5ODcxNzZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjY2MjczNTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVjZcIixcbiAgICBcIklQVjZfTVVMVElQTEVfVEFCTEVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaW5ldDZfZHVtcF9maWJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaXRlcmF0aW9uIGxvZ2ljIGluIGBpbmV0Nl9kdW1wX2ZpYmAgZm9yIElQdjYgRklCIG5ldGxpbmsgZHVtcHMuIEl0IHN3aXRjaGVzIGZyb20gdXNpbmcgYW4gaW5kZXggdG8gdXNpbmcgdGhlIHRhYmxlIElEIHRvIHJlc3VtZSBkdW1wcywgd2hpY2ggZml4ZXMgcG90ZW50aWFsIGlzc3VlcyB3aGVuIHJvdXRpbmcgdGFibGVzIGFyZSBhZGRlZCBvciByZW1vdmVkIGR1cmluZyBhIG11bHRpcGFydCBuZXRsaW5rIGR1bXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNlwiLFxuICAgIFwiSVBWNl9NVUxUSVBMRV9UQUJMRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpbmV0Nl9kdW1wX2ZpYlwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpdGVyYXRpb24gbG9naWMgaW4gYGluZXQ2X2R1bXBfZmliYCBmb3IgSVB2NiBGSUIgbmV0bGluayBkdW1wcy4gSXQgc3dpdGNoZXMgZnJvbSB1c2luZyBhbiBpbmRleCB0byB1c2luZyB0aGUgdGFibGUgSUQgdG8gcmVzdW1lIGR1bXBzLCB3aGljaCBmaXhlcyBwb3RlbnRpYWwgaXNzdWVzIHdoZW4gcm91dGluZyB0YWJsZXMgYXJlIGFkZGVkIG9yIHJlbW92ZWQgZHVyaW5nIGEgbXVsdGlwYXJ0IG5ldGxpbmsgZHVtcC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9dbf7[1] Phase: Succeeded StartedAt: 2026-06-25 01:53:31 +0000 UTC FinishedAt: 2026-06-25 01:53:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9dbf7[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-25 01:53:31 +0000 UTC FinishedAt: 2026-06-25 01:53:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9dbf7[2] Phase: Succeeded StartedAt: 2026-06-25 01:53:31 +0000 UTC FinishedAt: 2026-06-25 05:54:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-25 01:53:31 +0000 UTC FinishedAt: 2026-06-25 05:54:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-25 01:53:31 +0000 UTC FinishedAt: 2026-06-25 01:53:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-25 01:53:31 +0000 UTC FinishedAt: 2026-06-25 01:53:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9dbf7/series-workflow9dbf7-convert-artifact-2570507978/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-25 01:53:56 +0000 UTC FinishedAt: 2026-06-25 02:24:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-25 01:53:56 +0000 UTC FinishedAt: 2026-06-25 02:24:06 +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:*9c513c87-dd6a-4f6f-b92b-1ce2832ef1a3,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-workflow9dbf7/series-workflow9dbf7-convert-artifact-2570507978/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": "f9015ec0-9ef8-41f0-ac9d-d24c4e95d53c", "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-workflow9dbf7/series-workflow9dbf7-build-action-3431689912/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-25 01:53:56 +0000 UTC FinishedAt: 2026-06-25 02:23:56 +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:*9c513c87-dd6a-4f6f-b92b-1ce2832ef1a3,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-workflow9dbf7/series-workflow9dbf7-convert-artifact-2570507978/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": "f9015ec0-9ef8-41f0-ac9d-d24c4e95d53c", "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-workflow9dbf7/series-workflow9dbf7-build-action-3431689912/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-25 02:24:06 +0000 UTC FinishedAt: 2026-06-25 02:24:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-25 02:24:06 +0000 UTC FinishedAt: 2026-06-25 02:24:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-25 02:24:06 +0000 UTC FinishedAt: 2026-06-25 02:24:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-25 02:24:06 +0000 UTC FinishedAt: 2026-06-25 02:24:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9dbf7/series-workflow9dbf7-convert-artifact-1060602213/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-25 02:24:39 +0000 UTC FinishedAt: 2026-06-25 02:26:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-25 02:24:39 +0000 UTC FinishedAt: 2026-06-25 02:26:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f9015ec0-9ef8-41f0-ac9d-d24c4e95d53c,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-workflow9dbf7/series-workflow9dbf7-build-action-3431689912/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-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-25 02:26:25 +0000 UTC FinishedAt: 2026-06-25 02:26:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-25 02:26:25 +0000 UTC FinishedAt: 2026-06-25 02:26:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-25 02:26:25 +0000 UTC FinishedAt: 2026-06-25 02:49:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-25 02:26:25 +0000 UTC FinishedAt: 2026-06-25 02:49:40 +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:*9c513c87-dd6a-4f6f-b92b-1ce2832ef1a3,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-workflow9dbf7/series-workflow9dbf7-convert-artifact-1060602213/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": "38cc8afc-e1c8-4548-b6cd-59db0922508c", "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-workflow9dbf7/series-workflow9dbf7-build-action-3682227633/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-25 02:26:25 +0000 UTC FinishedAt: 2026-06-25 02:49:30 +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:*9c513c87-dd6a-4f6f-b92b-1ce2832ef1a3,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-workflow9dbf7/series-workflow9dbf7-convert-artifact-1060602213/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": "38cc8afc-e1c8-4548-b6cd-59db0922508c", "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-workflow9dbf7/series-workflow9dbf7-build-action-3682227633/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-25 02:49:40 +0000 UTC FinishedAt: 2026-06-25 02:49:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-25 02:49:40 +0000 UTC FinishedAt: 2026-06-25 02:49:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-25 02:49:40 +0000 UTC FinishedAt: 2026-06-25 02:51:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-25 02:49:40 +0000 UTC FinishedAt: 2026-06-25 02:51:21 +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:*38cc8afc-e1c8-4548-b6cd-59db0922508c,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-workflow9dbf7/series-workflow9dbf7-build-action-3682227633/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-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-25 02:51:31 +0000 UTC FinishedAt: 2026-06-25 05:54:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-25 02:51:31 +0000 UTC FinishedAt: 2026-06-25 05:54:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"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:*f9015ec0-9ef8-41f0-ac9d-d24c4e95d53c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*38cc8afc-e1c8-4548-b6cd-59db0922508c,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-workflow9dbf7/series-workflow9dbf7-build-action-3431689912/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-workflow9dbf7/series-workflow9dbf7-build-action-3682227633/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-25 02:51:31 +0000 UTC FinishedAt: 2026-06-25 02:51:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-25 02:51:31 +0000 UTC FinishedAt: 2026-06-25 02:51:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"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-workflow9dbf7/series-workflow9dbf7-convert-artifact-4129510122/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-25 02:51:31 +0000 UTC FinishedAt: 2026-06-25 02:51:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-25 02:51:31 +0000 UTC FinishedAt: 2026-06-25 02:51:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-25 02:51:31 +0000 UTC FinishedAt: 2026-06-25 02:51:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-25 02:51:54 +0000 UTC FinishedAt: 2026-06-25 05:54:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9dbf7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["inet6_dump_fib"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6","IPV6_MULTIPLE_TABLES"],"series_id":"44b23987-7fd2-4644-ab30-cbf2a029cf40","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-25 02:51:54 +0000 UTC FinishedAt: 2026-06-25 05:54:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f9015ec0-9ef8-41f0-ac9d-d24c4e95d53c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*38cc8afc-e1c8-4548-b6cd-59db0922508c,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-workflow9dbf7/series-workflow9dbf7-build-action-3431689912/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-workflow9dbf7/series-workflow9dbf7-build-action-3682227633/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-workflow9dbf7/series-workflow9dbf7-convert-artifact-4129510122/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,}