Name: series-workflow2hl4s Phase: Succeeded StartedAt: 2026-07-08 09:54:51 +0000 UTC FinishedAt: 2026-07-08 14:49:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2hl4s[0] Phase: Succeeded StartedAt: 2026-07-08 09:54:51 +0000 UTC FinishedAt: 2026-07-08 10:17:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2hl4s[0].run-triage Phase: Succeeded StartedAt: 2026-07-08 09:54:51 +0000 UTC FinishedAt: 2026-07-08 10:17:12 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFS_FS" ], "series_id": "2bee5bcc-4873-4712-91ec-b626d8302e87" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "hfs_cat_validate_found_cnid", "hfs_cat_find_brec", "hfs_read_inode", "hfs_file_lookup", "hfs_fill_super" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEwOjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZCYjMzQ7LAogICAgJiMzNDtoZnNfY2F0X2ZpbmRfYnJlYyYjMzQ7LAogICAgJiMzNDtoZnNfcmVhZF9pbm9kZSYjMzQ7LAogICAgJiMzNDtoZnNfZmlsZV9sb29rdXAmIzM0OywKICAgICYjMzQ7aGZzX2ZpbGxfc3VwZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBDTklEIChDYXRhbG9nIE5vZGUgSUQpIGluIHRoZSBIRlMgZmlsZXN5c3RlbSB0byBwcmV2ZW50IHByb2Nlc3NpbmcgaW52YWxpZCBjYXRhbG9nIHJlY29yZHMuIEl0IG1vZGlmaWVzIGNvcmUgSEZTIGZ1bmN0aW9ucyBsaWtlIGBoZnNfY2F0X2ZpbmRfYnJlY2AsIGBoZnNfcmVhZF9pbm9kZWAsIGBoZnNfZmlsZV9sb29rdXBgLCBhbmQgYGhmc19maWxsX3N1cGVyYC4gU2luY2UgSEZTIGNhbiBiZSBtb3VudGVkIGZyb20gbG9vcCBkZXZpY2VzIG9yIGRpc2sgaW1hZ2VzLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IHZhbGlkYXRpb24gbG9naWMgY29ycmVjdGx5IGhhbmRsZXMgbWFsZm9ybWVkIGZpbGVzeXN0ZW0gaW1hZ2VzIHdpdGhvdXQgY2F1c2luZyBjcmFzaGVzIG9yIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEwOjE1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOTA1ZTlkZDU5OTdkZTZjYTcyYzI2M2M2ZDg2OWI1ZWRlNTg2OTExNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMTA6MTU6NDEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2NhdGFsb2cuYyBiL2ZzL2hmcy9jYXRhbG9nLmNcbmluZGV4IDFiZmEzNmQ3MWUyNDdhLi5lNjcyYTRiYTZkYzcxYSAxMDA2NDRcbi0tLSBhL2ZzL2hmcy9jYXRhbG9nLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2hmcy9jYXRhbG9nLmNcbkBAIC0xODIsNiAmIzQzOzE4Miw0MCBAQCBpbnQgaGZzX2NhdF9rZXljbXAoY29uc3QgYnRyZWVfa2V5ICprZXkxLCBjb25zdCBidHJlZV9rZXkgKmtleTIpXG4gXHRcdFx0ICBrZXkyLVx1MDAzZWNhdC5DTmFtZS5uYW1lLCBrZXkyLVx1MDAzZWNhdC5DTmFtZS5sZW4pO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWQoc3RydWN0IGhmc19maW5kX2RhdGEgKmZkLCB1MzIgY25pZClcbiYjNDM7e1xuJiM0MztcdGhmc19jYXRfcmVjIHJlYztcbiYjNDM7XHR1MzIgZm91bmRfY25pZDtcbiYjNDM7XHRzaXplX3QgcmVjX2xlbjtcbiYjNDM7XG4mIzQzO1x0cmVjX2xlbiA9IGZkLVx1MDAzZWVudHJ5bGVuZ3RoO1xuJiM0MztcdGlmIChyZWNfbGVuIFx1MDAzYz0gMCB8fCByZWNfbGVuIFx1MDAzZSBzaXplb2YocmVjKSlcbiYjNDM7XHRcdHJldHVybiAtRUlPO1xuJiM0MztcbiYjNDM7XHRtZW1zZXQoXHUwMDI2cmVjLCAwLCBzaXplb2YocmVjKSk7XG4mIzQzO1x0aGZzX2Jub2RlX3JlYWQoZmQtXHUwMDNlYm5vZGUsIFx1MDAyNnJlYywgZmQtXHUwMDNlZW50cnlvZmZzZXQsIHJlY19sZW4pO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKHJlYy50eXBlKSB7XG4mIzQzO1x0Y2FzZSBIRlNfQ0RSX0ZJTDpcbiYjNDM7XHRcdGlmIChyZWNfbGVuICE9IHNpemVvZihzdHJ1Y3QgaGZzX2NhdF9maWxlKSlcbiYjNDM7XHRcdFx0cmV0dXJuIC1FSU87XG4mIzQzO1x0XHRmb3VuZF9jbmlkID0gYmUzMl90b19jcHUocmVjLmZpbGUuRmxOdW0pO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBIRlNfQ0RSX0RJUjpcbiYjNDM7XHRcdGlmIChyZWNfbGVuICE9IHNpemVvZihzdHJ1Y3QgaGZzX2NhdF9kaXIpKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVJTztcbiYjNDM7XHRcdGZvdW5kX2NuaWQgPSBiZTMyX3RvX2NwdShyZWMuZGlyLkRpcklEKTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRyZXR1cm4gLUVJTztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChmb3VuZF9jbmlkICE9IGNuaWQpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTztcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gLyogVHJ5IHRvIGdldCBhIGNhdGFsb2cgZW50cnkgZm9yIGdpdmVuIGNhdGFsb2cgaWQgKi9cbiAvLyBtb3ZlIHRvIHJlYWRfc3VwZXI/Pz9cbiBpbnQgaGZzX2NhdF9maW5kX2JyZWMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsXG5AQCAtMjA4LDcgJiM0MzsyNDIsMTIgQEAgaW50IGhmc19jYXRfZmluZF9icmVjKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBjbmlkLFxuIFx0XHRyZXR1cm4gLUVJTztcbiBcdH1cbiBcdG1lbWNweShmZC1cdTAwM2VzZWFyY2hfa2V5LVx1MDAzZWNhdC5DTmFtZS5uYW1lLCByZWMudGhyZWFkLkNOYW1lLm5hbWUsIGxlbik7XG4tXHRyZXR1cm4gaGZzX2JyZWNfZmluZChmZCk7XG4mIzQzO1xuJiM0MztcdHJlcyA9IGhmc19icmVjX2ZpbmQoZmQpO1xuJiM0MztcdGlmIChyZXMpXG4mIzQzO1x0XHRyZXR1cm4gcmVzO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkKGZkLCBjbmlkKTtcbiB9XG4gXG4gc3RhdGljIGlubGluZVxuZGlmZiAtLWdpdCBhL2ZzL2hmcy9oZnNfZnMuaCBiL2ZzL2hmcy9oZnNfZnMuaFxuaW5kZXggZjM2MjQ1MTRmY2IwMzAuLjY3MDYzOGYxNzQzOGNlIDEwMDY0NFxuLS0tIGEvZnMvaGZzL2hmc19mcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvaGZzX2ZzLmhcbkBAIC0xNTUsNiAmIzQzOzE1NSwyNSBAQCBleHRlcm4gaW50IGhmc19jYXRfbW92ZSh1MzIgY25pZCwgc3RydWN0IGlub2RlICpzcmNfZGlyLFxuIGV4dGVybiB2b2lkIGhmc19jYXRfYnVpbGRfa2V5KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGJ0cmVlX2tleSAqa2V5LFxuIFx0XHRcdCAgICAgIHUzMiBwYXJlbnQsIGNvbnN0IHN0cnVjdCBxc3RyICpuYW1lKTtcbiBcbiYjNDM7LypcbiYjNDM7ICogVmFsaWRhdGUgdGhlIENOSUQgb2YgYSBjYXRhbG9nIHJlY29yZC5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBoZnNfaXNfdmFsaWRfY25pZCh1MzIgY25pZCwgdTggdHlwZSlcbiYjNDM7e1xuJiM0MztcdGlmIChsaWtlbHkoY25pZCBcdTAwM2U9IEhGU19GSVJTVFVTRVJfQ05JRCkpXG4mIzQzO1x0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XG4mIzQzO1x0c3dpdGNoIChjbmlkKSB7XG4mIzQzO1x0Y2FzZSBIRlNfUk9PVF9DTklEOlxuJiM0MztcdFx0cmV0dXJuIHR5cGUgPT0gSEZTX0NEUl9ESVI7XG4mIzQzO1x0Y2FzZSBIRlNfRVhUX0NOSUQ6XG4mIzQzO1x0Y2FzZSBIRlNfQ0FUX0NOSUQ6XG4mIzQzO1x0XHRyZXR1cm4gdHlwZSA9PSBIRlNfQ0RSX0ZJTDtcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiAvKiBkaXIuYyAqL1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGhmc19kaXJfb3BlcmF0aW9ucztcbiBleHRlcm4gY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgaGZzX2Rpcl9pbm9kZV9vcGVyYXRpb25zO1xuZGlmZiAtLWdpdCBhL2ZzL2hmcy9pbm9kZS5jIGIvZnMvaGZzL2lub2RlLmNcbmluZGV4IGFjNGE5MDU1YzVjMGVhLi5lZTEwYTkyNTdhMTM4YSAxMDA2NDRcbi0tLSBhL2ZzL2hmcy9pbm9kZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvaW5vZGUuY1xuQEAgLTM2Nyw2ICYjNDM7MzY3LDkgQEAgc3RhdGljIGludCBoZnNfcmVhZF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkICpkYXRhKVxuIFx0cmVjID0gaWRhdGEtXHUwMDNlcmVjO1xuIFx0c3dpdGNoIChyZWMtXHUwMDNldHlwZSkge1xuIFx0Y2FzZSBIRlNfQ0RSX0ZJTDpcbiYjNDM7XHRcdGlmICghaGZzX2lzX3ZhbGlkX2NuaWQoYmUzMl90b19jcHUocmVjLVx1MDAzZWZpbGUuRmxOdW0pLCByZWMtXHUwMDNldHlwZSkpXG4mIzQzO1x0XHRcdHJldHVybiAtRUlPO1xuJiM0MztcbiBcdFx0aWYgKCFIRlNfSVNfUlNSQyhpbm9kZSkpIHtcbiBcdFx0XHRoZnNfaW5vZGVfcmVhZF9mb3JrKGlub2RlLCByZWMtXHUwMDNlZmlsZS5FeHRSZWMsIHJlYy1cdTAwM2VmaWxlLkxnTGVuLFxuIFx0XHRcdFx0XHQgICAgcmVjLVx1MDAzZWZpbGUuUHlMZW4sIGJlMTZfdG9fY3B1KHJlYy1cdTAwM2VmaWxlLkNscFNpemUpKTtcbkBAIC0zOTAsNiAmIzQzOzM5Myw5IEBAIHN0YXRpYyBpbnQgaGZzX3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCAqZGF0YSlcbiBcdFx0aW5vZGUtXHUwMDNlaV9tYXBwaW5nLVx1MDAzZWFfb3BzID0gXHUwMDI2aGZzX2FvcHM7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBIRlNfQ0RSX0RJUjpcbiYjNDM7XHRcdGlmICghaGZzX2lzX3ZhbGlkX2NuaWQoYmUzMl90b19jcHUocmVjLVx1MDAzZWRpci5EaXJJRCksIHJlYy1cdTAwM2V0eXBlKSlcbiYjNDM7XHRcdFx0cmV0dXJuIC1FSU87XG4mIzQzO1xuIFx0XHRpbm9kZS1cdTAwM2VpX2lubyA9IGJlMzJfdG9fY3B1KHJlYy1cdTAwM2VkaXIuRGlySUQpO1xuIFx0XHRpbm9kZS1cdTAwM2VpX3NpemUgPSBiZTE2X3RvX2NwdShyZWMtXHUwMDNlZGlyLlZhbCkgJiM0MzsgMjtcbiBcdFx0SEZTX0koaW5vZGUpLVx1MDAzZWZzX2Jsb2NrcyA9IDA7XG5AQCAtNTcxLDEyICYjNDM7NTc3LDEyIEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpoZnNfZmlsZV9sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbiBcdHJlcyA9IGhmc19icmVjX3JlYWQoXHUwMDI2ZmQsIFx1MDAyNnJlYywgc2l6ZW9mKHJlYykpO1xuIFx0aWYgKCFyZXMpIHtcbiBcdFx0c3RydWN0IGhmc19pZ2V0X2RhdGEgaWRhdGEgPSB7IE5VTEwsIFx1MDAyNnJlYyB9O1xuLVx0XHRoZnNfcmVhZF9pbm9kZShpbm9kZSwgXHUwMDI2aWRhdGEpO1xuJiM0MztcdFx0cmVzID0gaGZzX3JlYWRfaW5vZGUoaW5vZGUsIFx1MDAyNmlkYXRhKTtcbiBcdH1cbiBcdGhmc19maW5kX2V4aXQoXHUwMDI2ZmQpO1xuLVx0aWYgKHJlcykge1xuJiM0MztcdGlmIChyZXMgfHwgaXNfYmFkX2lub2RlKGlub2RlKSkge1xuIFx0XHRpcHV0KGlub2RlKTtcbi1cdFx0cmV0dXJuIEVSUl9QVFIocmVzKTtcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKC1FSU8pO1xuIFx0fVxuIFx0SEZTX0koaW5vZGUpLVx1MDAzZXJzcmNfaW5vZGUgPSBkaXI7XG4gXHRIRlNfSShkaXIpLVx1MDAzZXJzcmNfaW5vZGUgPSBpbm9kZTtcbmRpZmYgLS1naXQgYS9mcy9oZnMvc3VwZXIuYyBiL2ZzL2hmcy9zdXBlci5jXG5pbmRleCBhNDY2YzQwMWY2YmIyNi4uOThiODA3OTViY2RlOWEgMTAwNjQ0XG4tLS0gYS9mcy9oZnMvc3VwZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzL3N1cGVyLmNcbkBAIC0zNzIsNiAmIzQzOzM3MiwxMSBAQCBzdGF0aWMgaW50IGhmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcbiBcdGlmICghcm9vdF9pbm9kZSlcbiBcdFx0Z290byBiYWlsX25vX3Jvb3Q7XG4gXG4mIzQzO1x0aWYgKGlzX2JhZF9pbm9kZShyb290X2lub2RlKSkge1xuJiM0MztcdFx0aXB1dChyb290X2lub2RlKTtcbiYjNDM7XHRcdGdvdG8gYmFpbF9ub19yb290O1xuJiM0MztcdH1cbiYjNDM7XG4gXHRzZXRfZGVmYXVsdF9kX29wKHNiLCBcdTAwMjZoZnNfZGVudHJ5X29wZXJhdGlvbnMpO1xuIFx0cmVzID0gLUVOT01FTTtcbiBcdHNiLVx1MDAzZXNfcm9vdCA9IGRfbWFrZV9yb290KHJvb3RfaW5vZGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEwOjE1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZCYjMzQ7LAogICAgJiMzNDtoZnNfY2F0X2ZpbmRfYnJlYyYjMzQ7LAogICAgJiMzNDtoZnNfcmVhZF9pbm9kZSYjMzQ7LAogICAgJiMzNDtoZnNfZmlsZV9sb29rdXAmIzM0OywKICAgICYjMzQ7aGZzX2ZpbGxfc3VwZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBDTklEIChDYXRhbG9nIE5vZGUgSUQpIGluIHRoZSBIRlMgZmlsZXN5c3RlbSB0byBwcmV2ZW50IHByb2Nlc3NpbmcgaW52YWxpZCBjYXRhbG9nIHJlY29yZHMuIEl0IG1vZGlmaWVzIGNvcmUgSEZTIGZ1bmN0aW9ucyBsaWtlIGBoZnNfY2F0X2ZpbmRfYnJlY2AsIGBoZnNfcmVhZF9pbm9kZWAsIGBoZnNfZmlsZV9sb29rdXBgLCBhbmQgYGhmc19maWxsX3N1cGVyYC4gU2luY2UgSEZTIGNhbiBiZSBtb3VudGVkIGZyb20gbG9vcCBkZXZpY2VzIG9yIGRpc2sgaW1hZ2VzLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IHZhbGlkYXRpb24gbG9naWMgY29ycmVjdGx5IGhhbmRsZXMgbWFsZm9ybWVkIGZpbGVzeXN0ZW0gaW1hZ2VzIHdpdGhvdXQgY2F1c2luZyBjcmFzaGVzIG9yIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5MDVlOWRkNTk5N2RlNmNhNzJjMjYzYzZkODY5YjVlZGU1ODY5MTE1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgOCAxMDoxNTo0MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2hmcy9jYXRhbG9nLmMgYi9mcy9oZnMvY2F0YWxvZy5jCmluZGV4IDFiZmEzNmQ3MWUyNDdhLi5lNjcyYTRiYTZkYzcxYSAxMDA2NDQKLS0tIGEvZnMvaGZzL2NhdGFsb2cuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvY2F0YWxvZy5jCkBAIC0xODIsNiAmIzQzOzE4Miw0MCBAQCBpbnQgaGZzX2NhdF9rZXljbXAoY29uc3QgYnRyZWVfa2V5ICprZXkxLCBjb25zdCBidHJlZV9rZXkgKmtleTIpCiAJCQkgIGtleTItJmd0O2NhdC5DTmFtZS5uYW1lLCBrZXkyLSZndDtjYXQuQ05hbWUubGVuKTsKIH0KIAomIzQzO3N0YXRpYyBpbnQgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgdTMyIGNuaWQpCiYjNDM7ewomIzQzOwloZnNfY2F0X3JlYyByZWM7CiYjNDM7CXUzMiBmb3VuZF9jbmlkOwomIzQzOwlzaXplX3QgcmVjX2xlbjsKJiM0MzsKJiM0MzsJcmVjX2xlbiA9IGZkLSZndDtlbnRyeWxlbmd0aDsKJiM0MzsJaWYgKHJlY19sZW4gJmx0Oz0gMCB8fCByZWNfbGVuICZndDsgc2l6ZW9mKHJlYykpCiYjNDM7CQlyZXR1cm4gLUVJTzsKJiM0MzsKJiM0MzsJbWVtc2V0KCZhbXA7cmVjLCAwLCBzaXplb2YocmVjKSk7CiYjNDM7CWhmc19ibm9kZV9yZWFkKGZkLSZndDtibm9kZSwgJmFtcDtyZWMsIGZkLSZndDtlbnRyeW9mZnNldCwgcmVjX2xlbik7CiYjNDM7CiYjNDM7CXN3aXRjaCAocmVjLnR5cGUpIHsKJiM0MzsJY2FzZSBIRlNfQ0RSX0ZJTDoKJiM0MzsJCWlmIChyZWNfbGVuICE9IHNpemVvZihzdHJ1Y3QgaGZzX2NhdF9maWxlKSkKJiM0MzsJCQlyZXR1cm4gLUVJTzsKJiM0MzsJCWZvdW5kX2NuaWQgPSBiZTMyX3RvX2NwdShyZWMuZmlsZS5GbE51bSk7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSBIRlNfQ0RSX0RJUjoKJiM0MzsJCWlmIChyZWNfbGVuICE9IHNpemVvZihzdHJ1Y3QgaGZzX2NhdF9kaXIpKQomIzQzOwkJCXJldHVybiAtRUlPOwomIzQzOwkJZm91bmRfY25pZCA9IGJlMzJfdG9fY3B1KHJlYy5kaXIuRGlySUQpOwomIzQzOwkJYnJlYWs7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlyZXR1cm4gLUVJTzsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoZm91bmRfY25pZCAhPSBjbmlkKQomIzQzOwkJcmV0dXJuIC1FSU87CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIC8qIFRyeSB0byBnZXQgYSBjYXRhbG9nIGVudHJ5IGZvciBnaXZlbiBjYXRhbG9nIGlkICovCiAvLyBtb3ZlIHRvIHJlYWRfc3VwZXI/Pz8KIGludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCwKQEAgLTIwOCw3ICYjNDM7MjQyLDEyIEBAIGludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCwKIAkJcmV0dXJuIC1FSU87CiAJfQogCW1lbWNweShmZC0mZ3Q7c2VhcmNoX2tleS0mZ3Q7Y2F0LkNOYW1lLm5hbWUsIHJlYy50aHJlYWQuQ05hbWUubmFtZSwgbGVuKTsKLQlyZXR1cm4gaGZzX2JyZWNfZmluZChmZCk7CiYjNDM7CiYjNDM7CXJlcyA9IGhmc19icmVjX2ZpbmQoZmQpOwomIzQzOwlpZiAocmVzKQomIzQzOwkJcmV0dXJuIHJlczsKJiM0MzsKJiM0MzsJcmV0dXJuIGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZChmZCwgY25pZCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUKZGlmZiAtLWdpdCBhL2ZzL2hmcy9oZnNfZnMuaCBiL2ZzL2hmcy9oZnNfZnMuaAppbmRleCBmMzYyNDUxNGZjYjAzMC4uNjcwNjM4ZjE3NDM4Y2UgMTAwNjQ0Ci0tLSBhL2ZzL2hmcy9oZnNfZnMuaAomIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvaGZzX2ZzLmgKQEAgLTE1NSw2ICYjNDM7MTU1LDI1IEBAIGV4dGVybiBpbnQgaGZzX2NhdF9tb3ZlKHUzMiBjbmlkLCBzdHJ1Y3QgaW5vZGUgKnNyY19kaXIsCiBleHRlcm4gdm9pZCBoZnNfY2F0X2J1aWxkX2tleShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBidHJlZV9rZXkgKmtleSwKIAkJCSAgICAgIHUzMiBwYXJlbnQsIGNvbnN0IHN0cnVjdCBxc3RyICpuYW1lKTsKIAomIzQzOy8qCiYjNDM7ICogVmFsaWRhdGUgdGhlIENOSUQgb2YgYSBjYXRhbG9nIHJlY29yZC4KJiM0MzsgKi8KJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgaGZzX2lzX3ZhbGlkX2NuaWQodTMyIGNuaWQsIHU4IHR5cGUpCiYjNDM7ewomIzQzOwlpZiAobGlrZWx5KGNuaWQgJmd0Oz0gSEZTX0ZJUlNUVVNFUl9DTklEKSkKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwomIzQzOwlzd2l0Y2ggKGNuaWQpIHsKJiM0MzsJY2FzZSBIRlNfUk9PVF9DTklEOgomIzQzOwkJcmV0dXJuIHR5cGUgPT0gSEZTX0NEUl9ESVI7CiYjNDM7CWNhc2UgSEZTX0VYVF9DTklEOgomIzQzOwljYXNlIEhGU19DQVRfQ05JRDoKJiM0MzsJCXJldHVybiB0eXBlID09IEhGU19DRFJfRklMOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwl9CiYjNDM7fQomIzQzOwogLyogZGlyLmMgKi8KIGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGhmc19kaXJfb3BlcmF0aW9uczsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBoZnNfZGlyX2lub2RlX29wZXJhdGlvbnM7CmRpZmYgLS1naXQgYS9mcy9oZnMvaW5vZGUuYyBiL2ZzL2hmcy9pbm9kZS5jCmluZGV4IGFjNGE5MDU1YzVjMGVhLi5lZTEwYTkyNTdhMTM4YSAxMDA2NDQKLS0tIGEvZnMvaGZzL2lub2RlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzL2lub2RlLmMKQEAgLTM2Nyw2ICYjNDM7MzY3LDkgQEAgc3RhdGljIGludCBoZnNfcmVhZF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkICpkYXRhKQogCXJlYyA9IGlkYXRhLSZndDtyZWM7CiAJc3dpdGNoIChyZWMtJmd0O3R5cGUpIHsKIAljYXNlIEhGU19DRFJfRklMOgomIzQzOwkJaWYgKCFoZnNfaXNfdmFsaWRfY25pZChiZTMyX3RvX2NwdShyZWMtJmd0O2ZpbGUuRmxOdW0pLCByZWMtJmd0O3R5cGUpKQomIzQzOwkJCXJldHVybiAtRUlPOwomIzQzOwogCQlpZiAoIUhGU19JU19SU1JDKGlub2RlKSkgewogCQkJaGZzX2lub2RlX3JlYWRfZm9yayhpbm9kZSwgcmVjLSZndDtmaWxlLkV4dFJlYywgcmVjLSZndDtmaWxlLkxnTGVuLAogCQkJCQkgICAgcmVjLSZndDtmaWxlLlB5TGVuLCBiZTE2X3RvX2NwdShyZWMtJmd0O2ZpbGUuQ2xwU2l6ZSkpOwpAQCAtMzkwLDYgJiM0MzszOTMsOSBAQCBzdGF0aWMgaW50IGhmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgKmRhdGEpCiAJCWlub2RlLSZndDtpX21hcHBpbmctJmd0O2Ffb3BzID0gJmFtcDtoZnNfYW9wczsKIAkJYnJlYWs7CiAJY2FzZSBIRlNfQ0RSX0RJUjoKJiM0MzsJCWlmICghaGZzX2lzX3ZhbGlkX2NuaWQoYmUzMl90b19jcHUocmVjLSZndDtkaXIuRGlySUQpLCByZWMtJmd0O3R5cGUpKQomIzQzOwkJCXJldHVybiAtRUlPOwomIzQzOwogCQlpbm9kZS0mZ3Q7aV9pbm8gPSBiZTMyX3RvX2NwdShyZWMtJmd0O2Rpci5EaXJJRCk7CiAJCWlub2RlLSZndDtpX3NpemUgPSBiZTE2X3RvX2NwdShyZWMtJmd0O2Rpci5WYWwpICYjNDM7IDI7CiAJCUhGU19JKGlub2RlKS0mZ3Q7ZnNfYmxvY2tzID0gMDsKQEAgLTU3MSwxMiAmIzQzOzU3NywxMiBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqaGZzX2ZpbGVfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksCiAJcmVzID0gaGZzX2JyZWNfcmVhZCgmYW1wO2ZkLCAmYW1wO3JlYywgc2l6ZW9mKHJlYykpOwogCWlmICghcmVzKSB7CiAJCXN0cnVjdCBoZnNfaWdldF9kYXRhIGlkYXRhID0geyBOVUxMLCAmYW1wO3JlYyB9OwotCQloZnNfcmVhZF9pbm9kZShpbm9kZSwgJmFtcDtpZGF0YSk7CiYjNDM7CQlyZXMgPSBoZnNfcmVhZF9pbm9kZShpbm9kZSwgJmFtcDtpZGF0YSk7CiAJfQogCWhmc19maW5kX2V4aXQoJmFtcDtmZCk7Ci0JaWYgKHJlcykgewomIzQzOwlpZiAocmVzIHx8IGlzX2JhZF9pbm9kZShpbm9kZSkpIHsKIAkJaXB1dChpbm9kZSk7Ci0JCXJldHVybiBFUlJfUFRSKHJlcyk7CiYjNDM7CQlyZXR1cm4gRVJSX1BUUigtRUlPKTsKIAl9CiAJSEZTX0koaW5vZGUpLSZndDtyc3JjX2lub2RlID0gZGlyOwogCUhGU19JKGRpciktJmd0O3JzcmNfaW5vZGUgPSBpbm9kZTsKZGlmZiAtLWdpdCBhL2ZzL2hmcy9zdXBlci5jIGIvZnMvaGZzL3N1cGVyLmMKaW5kZXggYTQ2NmM0MDFmNmJiMjYuLjk4YjgwNzk1YmNkZTlhIDEwMDY0NAotLS0gYS9mcy9oZnMvc3VwZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvc3VwZXIuYwpAQCAtMzcyLDYgJiM0MzszNzIsMTEgQEAgc3RhdGljIGludCBoZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCiAJaWYgKCFyb290X2lub2RlKQogCQlnb3RvIGJhaWxfbm9fcm9vdDsKIAomIzQzOwlpZiAoaXNfYmFkX2lub2RlKHJvb3RfaW5vZGUpKSB7CiYjNDM7CQlpcHV0KHJvb3RfaW5vZGUpOwomIzQzOwkJZ290byBiYWlsX25vX3Jvb3Q7CiYjNDM7CX0KJiM0MzsKIAlzZXRfZGVmYXVsdF9kX29wKHNiLCAmYW1wO2hmc19kZW50cnlfb3BlcmF0aW9ucyk7CiAJcmVzID0gLUVOT01FTTsKIAlzYi0mZ3Q7c19yb290ID0gZF9tYWtlX3Jvb3Qocm9vdF9pbm9kZSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEwOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MTIKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSEZTIEZpbGVzeXN0ZW0gUGF0Y2gqKgoKT2theSwgc28gd2UmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBwb2tpbmcgYXJvdW5kIGluIHRoZSBIRlMgZmlsZXN5c3RlbSBjb2RlIHdpdGhpbiB0aGUgTGludXgga2VybmVsLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGludHJvZHVjaW5nIENOSUQgdmFsaWRhdGlvbiDigJMgdGhhdCYjMzk7cyBhIGdvb2QgZmlyc3Qgc3RlcCBmb3IgaGFyZGVuaW5nLCBjaGVja2luZyB0aGUgQ2F0YWxvZyBOb2RlIElEIGluIGBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRgIGFuZCBgaGZzX2lzX3ZhbGlkX2NuaWRgLiBJdCYjMzk7cyBhbHNvIHRvdWNoaW5nIGBoZnNfY2F0X2ZpbmRfYnJlY2AsIGBoZnNfcmVhZF9pbm9kZWAsIGBoZnNfZmlsZV9sb29rdXBgLCBhbmQgYGhmc19maWxsX3N1cGVyYCwgc28gdGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgY29zbWV0aWMgb25lLiBHaXZlbiB0aGF0IHRoZSBIRlMgZmlsZXN5c3RlbSBjYW4gYmUgbW91bnRlZCBmcm9tIGxvb3AgZGV2aWNlcyBvciBkaXNrIGltYWdlcywgdGhhdCBtZWFucyBpdCYjMzk7cyBhY2Nlc3NpYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFRoYXQmIzM5O3MgYSBodWdlIGZsYWcgZm9yIGZ1enppbmchIEhpZ2ggcmV3YXJkIHBvdGVudGlhbC4KCk15IG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHRoZSBidWlsZCBjb25maWd1cmF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBvcHRpb25zIEkgbmVlZCB0byBlbmFibGUgdG8gYnVpbGQgdGhpcyBjb2RlLiBTaW5jZSB0aGUgY29kZSBpcyBpbiBgZnMvaGZzL2AsIEkgc2hvdWxkIGNoZWNrIHRoZSByZWxldmFudCBgS2NvbmZpZ2AgZmlsZSBpbiB0aGF0IGRpcmVjdG9yeS4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoYXQgY29uZmlnIG9wdGlvbnMgZW5hYmxlIEhGUyBzdXBwb3J0IHNvIEkgY2FuIGdldCBhIGJ1aWxkIGVudmlyb25tZW50IHRoYXQgYWxsb3dzIG1lIHRvIHRlc3QgdGhlc2UgY2hhbmdlcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmUgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucyB0byB0ZXN0IGFuZCBmdXp6IHRoZXNlIGNoYW5nZXMgdGhvcm91Z2hseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSEZTX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvaGZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2hmcy9LY29uZmlnOjI6Y29uZmlnIEhGU19GU1xuZnMvaGZzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0FwcGxlIE1hY2ludG9zaCBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAxNAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDg0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipIRlMgRmlsZSBTeXN0ZW0gQ05JRCBWYWxpZGF0aW9uIEFuYWx5c2lzKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIEhGUyBmaWxlIHN5c3RlbSBjb2RlLCBzcGVjaWZpY2FsbHkgYGZzL2hmcy9jYXRhbG9nLmNgLCBgZnMvaGZzL2hmc19mcy5oYCwgYGZzL2hmcy9pbm9kZS5jYCwgYW5kIGBmcy9oZnMvc3VwZXIuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGFkZGluZyB2YWxpZGF0aW9uIGZvciBDYXRhbG9nIE5vZGUgSURzIChDTklEcykgd2l0aGluIHRoZSBIRlMgc3RydWN0dXJlLiBUaGlzIGlzIGdvb2Q7IENOSUQgdmFsaWRhdGlvbiBpcyBhIGNydWNpYWwgc3RlcCBmb3IgZmlsZSBzeXN0ZW0gaW50ZWdyaXR5LCBhbmQgSSYjMzk7bGwgd2FudCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gdGhpcy4KCkl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24sIGBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRgLCBkZWZpbmVkIGluIGBmcy9oZnMvY2F0YWxvZy5jYCwgYW5kIGBoZnNfaXNfdmFsaWRfY25pZGAsIHdoaWNoIGlzIGEgaGVscGVyIGRlZmluZWQgaW4gYGZzL2hmcy9oZnNfZnMuaGAuIGBoZnNfcmVhZF9pbm9kZWAgd2l0aGluIGBmcy9oZnMvaW5vZGUuY2AgaGFzIGJlZW4gdXBkYXRlZCB0byBpbmNvcnBvcmF0ZSB0aGUgQ05JRCB2YWxpZGF0aW9uLiBBZGRpdGlvbmFsbHksIGBoZnNfZmlsbF9zdXBlcmAgaW4gYGZzL2hmcy9zdXBlci5jYCBub3cgaW5jbHVkZXMgYSBjaGVjayBmb3IgYGlzX2JhZF9pbm9kZShyb290X2lub2RlKWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IGp1c3QgYSBjbGVhbnVwLCBhbmQgdGhhdCBtZWFucyBpdCYjMzk7cyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gV2UmIzM5O2xsIGRlZmluaXRlbHkgbmVlZCB0byBlbmFibGUgYEhGU19GU2AgaW4gdGhlIGNvbmZpZyB0byB0ZXN0IHRoaXMuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyB0byBwYXkgYXR0ZW50aW9uIHRvLiBPYnZpb3VzbHksIGBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRgIGFuZCBgaGZzX2lzX3ZhbGlkX2NuaWRgIHN0YW5kIG91dC4gVGhlIG90aGVyIGZ1bmN0aW9ucyB0aGF0IHBsYXkgYSByb2xlIGluIHRoaXMgY2hhbmdlIGFyZTogYGhmc19jYXRfZmluZF9icmVjYCwgYGhmc19yZWFkX2lub2RlYCwgYGhmc19maWxlX2xvb2t1cGAsIGFuZCBgaGZzX2ZpbGxfc3VwZXJgLgoKTGV0JiMzOTtzIGNoZWNrIHRoZSBjYWxsIGZsb3cgZm9yIHJlYWNoYWJpbGl0eS4gYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAgaXMgY2FsbGVkIGZyb20gYGhmc19jYXRfZmluZF9icmVjYCwgd2hpY2ggaXMsIGluIHR1cm4sIGNhbGxlZCBmcm9tIGBoZnNfaWdldGAuIGBoZnNfaWdldGAgY29tZXMgZnJvbSBgaGZzX2xvb2t1cGAgZHVyaW5nIHBhdGggcmVzb2x1dGlvbi4gYGhmc19pc192YWxpZF9jbmlkYCBpcyBjYWxsZWQgZnJvbSBgaGZzX3JlYWRfaW5vZGVgLiBgaGZzX3JlYWRfaW5vZGVgIGlzIGNhbGxlZCBmcm9tIGBoZnNfaWdldGAgYW5kIGBoZnNfZmlsZV9sb29rdXBgLiBgaGZzX2ZpbGxfc3VwZXJgIGlzIGNhbGxlZCBkdXJpbmcgdGhlIG1vdW50IG9wZXJhdGlvbi4KCk9rYXksIGxldCYjMzk7cyByZWZpbmUgdGhlIGxpc3QuIFdoaWxlIGBoZnNfaXNfdmFsaWRfY25pZGAgaXMgaW5saW5lLCBzbyBpdCBtaWdodCBiZSBpbmxpbmVkLiBgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkYCBpcyBzdGF0aWMsIHNvIEkgd2lsbCBoYXZlIHRvIGludmVzdGlnYXRlIHdoZXRoZXIgdGhlIGNvbXBpbGVyIGlubGluZXMgaXQuIGBoZnNfY2F0X2ZpbmRfYnJlY2AgaXMgZ2xvYmFsLCB3aGljaCBpcyBnb29kLiBgaGZzX3JlYWRfaW5vZGVgLCBgaGZzX2ZpbGVfbG9va3VwYCwgYW5kIGBoZnNfZmlsbF9zdXBlcmAgYXJlIGFsbCBzdGF0aWMuIEdpdmVuIGFsbCBvZiB0aGlzLCBteSBwcmltYXJ5IGZvY3VzIHN5bWJvbHMgZm9yIGZ1enppbmcgYW5kIGFuYWx5c2lzIHdpbGwgYmUgYGhmc19jYXRfZmluZF9icmVjYCwgYGhmc19yZWFkX2lub2RlYCwgYGhmc19maWxlX2xvb2t1cGAsIGFuZCBgaGZzX2ZpbGxfc3VwZXJgLiBJJiMzOTtsbCBoYXZlIHRvIGludmVzdGlnYXRlIHdoZXRoZXIgYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAgaXMgaW5saW5lZCwgYnV0IHdpbGwgc3RhcnQgZnV6emluZyBvdGhlciBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTA6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGZzX3JlYWRfaW5vZGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9oZnMvaW5vZGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9oZnMvaW5vZGUuYz0zMjU9c3RhdGljIGludCBoZnNfdGVzdF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkICpkYXRhKVxuLS1cbmZzL2hmcy9pbm9kZS5jLTM0Mi0vKlxuZnMvaGZzL2lub2RlLmM6MzQzOiAqIGhmc19yZWFkX2lub2RlXG5mcy9oZnMvaW5vZGUuYy0zNDQtICovXG5mcy9oZnMvaW5vZGUuYzozNDU6c3RhdGljIGludCBoZnNfcmVhZF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkICpkYXRhKVxuZnMvaGZzL2lub2RlLmMtMzQ2LXtcbi0tXG5mcy9oZnMvaW5vZGUuYz00MjU9c3RydWN0IGlub2RlICpoZnNfaWdldChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgaGZzX2NhdF9rZXkgKmtleSwgaGZzX2NhdF9yZWMgKnJlYylcbi0tXG5mcy9oZnMvaW5vZGUuYy00NDAtXHR9XG5mcy9oZnMvaW5vZGUuYzo0NDE6XHRpbm9kZSA9IGlnZXQ1X2xvY2tlZChzYiwgY25pZCwgaGZzX3Rlc3RfaW5vZGUsIGhmc19yZWFkX2lub2RlLCBcdTAwMjZkYXRhKTtcbmZzL2hmcy9pbm9kZS5jLTQ0Mi1cdGlmIChpbm9kZSBcdTAwMjZcdTAwMjYgKGlub2RlX3N0YXRlX3JlYWRfb25jZShpbm9kZSkgXHUwMDI2IElfTkVXKSlcbi0tXG5mcy9oZnMvaW5vZGUuYz01NTI9c3RhdGljIHN0cnVjdCBkZW50cnkgKmhmc19maWxlX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxuLS1cbmZzL2hmcy9pbm9kZS5jLTU3OS1cdFx0c3RydWN0IGhmc19pZ2V0X2RhdGEgaWRhdGEgPSB7IE5VTEwsIFx1MDAyNnJlYyB9O1xuZnMvaGZzL2lub2RlLmM6NTgwOlx0XHRyZXMgPSBoZnNfcmVhZF9pbm9kZShpbm9kZSwgXHUwMDI2aWRhdGEpO1xuZnMvaGZzL2lub2RlLmMtNTgxLVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEwOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMTQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyBQb3RlbnRpYWwgRnVuY3Rpb24gSW5saW5pbmcgaW4gdGhlIEhGUyBGaWxlc3lzdGVtKioKCkFscmlnaHQsIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIEhGUyBjb2RlIGFuZCB0cnlpbmcgdG8gb3B0aW1pemUuIGBoZnNfcmVhZF9pbm9kZWAgaXMgZGVjbGFyZWQgYHN0YXRpY2AsIHdoaWNoIGlzIGdyZWF0IGZvciBzY29waW5nLCBidXQgdGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIHRvIGBpZ2V0NV9sb2NrZWRgIHByZXR0eSBtdWNoIGtpbGxzIGFueSBjaGFuY2Ugb2YgaW5saW5pbmcuIFRoZSBjb21waWxlciYjMzk7cyBnb2luZyB0byBoYXZlIHRvIHRyZWF0IGl0IGxpa2UgYW4gZXh0ZXJuYWwgZnVuY3Rpb24gY2FsbCwgc2luY2UgdGhlIHRhcmdldCBvZiB0aGUgcG9pbnRlciBjYW4gdmFyeS4gTm8gZGljZSB0aGVyZS4KCk5vdywgYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAgaXMgYWxzbyBgc3RhdGljYCwgYW5kIHRoZSBnb29kIG5ld3MgaXMgaXQmIzM5O3Mgb25seSBjYWxsZWQgb25jZSwgYW5kIHRoYXQmIzM5O3Mgd2l0aGluIGBoZnNfY2F0X2ZpbmRfYnJlY2AuIFRoYXQmIzM5O3MgYSBzdHJvbmcgaW5kaWNhdG9yIHRoYXQgdGhlIGNvbXBpbGVyICpjb3VsZCogcG90ZW50aWFsbHkgaW5saW5lIGl0LiBJdCYjMzk7cyBhIHByaW1lIGNhbmRpZGF0ZSBmb3Igb3B0aW1pemF0aW9uLCBhc3N1bWluZyB0aGUgZnVuY3Rpb24gaXNuJiMzOTt0IHRvbyBsYXJnZSBvciBjb21wbGV4LiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgY29udGV4dCwgYnV0IGl0IGxvb2tzIHByb21pc2luZy4KCkZpbmFsbHksIGBoZnNfZmlsZV9sb29rdXBgIGlzIGFsc28gYHN0YXRpY2AuLi4gKmJ1dCogaXQgbG9va3MgbGlrZSBpdCYjMzk7cyB1c2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gdGhlIGBpbm9kZV9vcGVyYXRpb25zYCBzdHJ1Y3R1cmUuIEhtbSwgdGhhdCYjMzk7cyBhIGtleSBkZXRhaWwuIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byB2ZXJpZnkgKmV4YWN0bHkqIGhvdyBpdCYjMzk7cyB1c2VkIHdpdGhpbiB0aGF0IHN0cnVjdHVyZS4gSWYgaXQmIzM5O3MgdXNlZCBpbmRpcmVjdGx5IHRocm91Z2ggYSB2aXJ0dWFsIGZ1bmN0aW9uIHRhYmxlIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBpbmxpbmluZyBpcyBsaWtlbHkgb2ZmIHRoZSB0YWJsZS4gTGV0IG1lIGRpdmUgaW50byB0aGF0IGBpbm9kZV9vcGVyYXRpb25zYCBzdHJ1Y3R1cmUgdG8gY29uZmlybS4gSXQmIzM5O3MgZ29pbmcgdG8gZGVwZW5kIG9uIGhvdyB0aGUgdmZzIGxheWVyIGFjdHVhbGx5IGNhbGxzIGl0LCBhbmQgd2hldGhlciBpdCBjYW4gZGV2aXJ0dWFsaXplLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEwOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hmc19maWxlX2xvb2t1cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2hmcy9pbm9kZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2hmcy9pbm9kZS5jPTQ1OT1pbnQgaGZzX3dyaXRlX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjKVxuLS1cbmZzL2hmcy9pbm9kZS5jLTU1MS1cbmZzL2hmcy9pbm9kZS5jOjU1MjpzdGF0aWMgc3RydWN0IGRlbnRyeSAqaGZzX2ZpbGVfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG5mcy9oZnMvaW5vZGUuYy01NTMtXHRcdFx0XHQgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpXG4tLVxuZnMvaGZzL2lub2RlLmM9NzM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBoZnNfZmlsZV9pbm9kZV9vcGVyYXRpb25zID0ge1xuZnMvaGZzL2lub2RlLmM6NzM1Olx0Lmxvb2t1cFx0XHQ9IGhmc19maWxlX2xvb2t1cCxcbmZzL2hmcy9pbm9kZS5jLTczNi1cdC5zZXRhdHRyXHQ9IGhmc19pbm9kZV9zZXRhdHRyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEwOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5MTIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipIRlMgRmlsZXN5c3RlbSBNb2R1bGUgQXJjaGl0ZWN0dXJlKioKClJpZ2h0LCBzbyBJJiMzOTttIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IGhvdyB0aGUgSEZTIGZpbGVzeXN0ZW0gaXMgc3RydWN0dXJlZCBpbiB0aGUga2VybmVsLiBJIHJlbWVtYmVyIGNsZWFybHkgdGhhdCB0aGUgYGhmc19maWxlX2xvb2t1cGAgZnVuY3Rpb24gcGxheXMgYSBrZXkgcm9sZSB3aXRoaW4gdGhlIGBpbm9kZV9vcGVyYXRpb25zYCBzdHJ1Y3R1cmUuIEl0JiMzOTtzIHRoYXQgZGlyZWN0IGxpbmsgdGhhdCBjb25uZWN0cyB0aGUgZmlsZXN5c3RlbSYjMzk7cyBkaXJlY3RvcnkgdHJhdmVyc2FsIGxvZ2ljIHRvIHRoZSBpbi1tZW1vcnkgcmVwcmVzZW50YXRpb24gb2YgZmlsZXMgYW5kIGRpcmVjdG9yaWVzICh0aGUgaW5vZGVzKS4gTWFrZXMgcGVyZmVjdCBzZW5zZTsgdGhhdCYjMzk7cyB3aGVyZSB5b3UmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIGxvb2t1cCBmdW5jdGlvbmFsaXR5LgoKQW5kIHRoZW4gSSYjMzk7bSBhbHNvIHJlY2FsbGluZyBgaGZzX2ZpbGxfc3VwZXJgLiBUaGlzIG9uZSYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggaXMgdXNlZnVsIHRvIGtlZXAgaXQgY29udGFpbmVkLCBhbmQgSSYjMzk7bSBwcmV0dHkgY2VydGFpbiBpdCYjMzk7cyB0aWdodGx5IGJvdW5kIHRvIHRoZSBmaWxlc3lzdGVtIG1vdW50aW5nIHByb2Nlc3MuIFRoYXQgd291bGQgbGlrZWx5IGJlIHdpdGhpbiB0aGUgYGZzX2NvbnRleHRfb3BlcmF0aW9uc2Agc3RydWN0dXJlLCBvciBzb21ld2hlcmUgc2ltaWxhciwgd2hlcmUgdGhlIGZpbGVzeXN0ZW0tc3BlY2lmaWMgZGV0YWlscyBvZiBjcmVhdGluZyB0aGUgc3VwZXJibG9jayBhbmQgaW5pdGlhbGl6aW5nIHRoZSBmaWxlc3lzdGVtJiMzOTtzIG1ldGFkYXRhIGFyZSBoYW5kbGVkLiBHb29kLCB0aGlzIHNvbGlkaWZpZXMgdGhlIHN0cnVjdHVyYWwgb3ZlcnZpZXcgb2YgaG93IHRoZSBIRlMgbW9kdWxlIGlzIG9wZXJhdGluZyBpbiB0aGUgTGludXgga2VybmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoZnNfZmlsbF9zdXBlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2hmcy9zdXBlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2hmcy9zdXBlci5jPTIyMD1zdGF0aWMgaW50IGhmc19wYXJzZV9wYXJhbShzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBmc19wYXJhbWV0ZXIgKnBhcmFtKVxuLS1cbmZzL2hmcy9zdXBlci5jLTMxNS0gKi9cbmZzL2hmcy9zdXBlci5jOjMxNjpzdGF0aWMgaW50IGhmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcbmZzL2hmcy9zdXBlci5jLTMxNy17XG4tLVxuZnMvaGZzL3N1cGVyLmM9Mzk4PXN0YXRpYyBpbnQgaGZzX2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcbmZzL2hmcy9zdXBlci5jLTM5OS17XG5mcy9oZnMvc3VwZXIuYzo0MDA6XHRyZXR1cm4gZ2V0X3RyZWVfYmRldihmYywgaGZzX2ZpbGxfc3VwZXIpO1xuZnMvaGZzL3N1cGVyLmMtNDAxLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQyOQoJCQkJCQkJb3V0cHV0OiAyMDIKCQkJCQkJCXRob3VnaHRzOiAyNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEhGUyBGaWxlc3lzdGVtIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgaW5kZWVkIGZvY3VzZWQgb24gYGhmc19maWxsX3N1cGVyYCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIuIFRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50LCBhbmQgaXQmIzM5O3MgZ29vZCB0byBjb25maXJtIHRoYXQuCgpUaGVyZWZvcmUsIHRoZSBjcml0aWNhbCBzeW1ib2xzIHRvIGtlZXAgYW4gZXllIG9uIGFyZTogYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAgKGV2ZW4gaWYgaW5saW5lZCwgaXQmIzM5O3MgcmVsZXZhbnQpLCBgaGZzX2NhdF9maW5kX2JyZWNgLCBgaGZzX3JlYWRfaW5vZGVgLCBgaGZzX2ZpbGVfbG9va3VwYCwgYW5kIG9mIGNvdXJzZSwgYGhmc19maWxsX3N1cGVyYC4gVGhlc2UgYXJlIHRoZSBjb3JlIGZ1bmN0aW9ucyBpbXBhY3RlZCBieSB0aGUgQ05JRCB2YWxpZGF0aW9uLgoKVGhlIHJlYXNvbmluZyBoZXJlIGlzIHNvbGlkLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBDTklEIHZhbGlkYXRpb24gdG8gcHJldmVudCBwcm9jZXNzaW5nIG9mIGludmFsaWQgY2F0YWxvZyByZWNvcmRzIHdpdGhpbiB0aGUgSEZTIGZpbGVzeXN0ZW0uIE1ha2VzIHNlbnNlLiBJdCYjMzk7cyB0b3VjaGluZyBzb21lIHByZXR0eSBmdW5kYW1lbnRhbCBmdW5jdGlvbnMsIG5hbWVseSwgdGhvc2UgaW52b2x2ZWQgaW4gdHJhdmVyc2luZyBhbmQgcmVhZGluZyB0aGUgY2F0YWxvZzogYGhmc19jYXRfZmluZF9icmVjYCwgYGhmc19yZWFkX2lub2RlYCwgYGhmc19maWxlX2xvb2t1cGAgYW5kLCBpbXBvcnRhbnRseSwgdGhlIGZpbGVzeXN0ZW0gc2V0dXAgd2l0aCBgaGZzX2ZpbGxfc3VwZXJgLgoKVGhlIGNydWNpYWwgdGhpbmcgaGVyZSBpcyB0aGF0IEhGUyBjYW4gYmUgdXNlZCBvbiBsb29wIGRldmljZXMgb3IgaW1hZ2VzLCB3aGljaCBhcmUgY29tbW9uIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzLiBUaGlzIHZhbGlkYXRpb24gbG9naWMgbmVlZHMgdG8gYmUgZnV6emVkIGhlYXZpbHkuIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIG5ldyBjb2RlIGdyYWNlZnVsbHkgaGFuZGxlcyBtYWxmb3JtZWQgZmlsZXN5c3RlbSBpbWFnZXMgd2l0aG91dCBjcmFzaGluZyBvciBpbnRyb2R1Y2luZyBhbnkgcmVncmVzc2lvbnMuIEV4Y2VsbGVudCBwb2ludC4KCkkganVzdCBkb3VibGUtY2hlY2tlZCwgYW5kIGBIRlNfRlNgIGlzIGluZGVlZCB0aGUgb25seSByZWxldmFudCBjb25maWd1cmF0aW9uIGZsYWcuIE5vdGhpbmcgZWxzZSB0byBjb25zaWRlciB0aGVyZS4KCkFscmlnaHQsIHRoYXQmIzM5O3MgZXZlcnl0aGluZy4gSSYjMzk7bGwgZ2V0IHRoZSByZXN1bHRzIHNldC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTA6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZCYjMzQ7LAogICAgJiMzNDtoZnNfY2F0X2ZpbmRfYnJlYyYjMzQ7LAogICAgJiMzNDtoZnNfcmVhZF9pbm9kZSYjMzQ7LAogICAgJiMzNDtoZnNfZmlsZV9sb29rdXAmIzM0OywKICAgICYjMzQ7aGZzX2ZpbGxfc3VwZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBDTklEIChDYXRhbG9nIE5vZGUgSUQpIGluIHRoZSBIRlMgZmlsZXN5c3RlbSB0byBwcmV2ZW50IHByb2Nlc3NpbmcgaW52YWxpZCBjYXRhbG9nIHJlY29yZHMuIEl0IG1vZGlmaWVzIGNvcmUgSEZTIGZ1bmN0aW9ucyBsaWtlIGBoZnNfY2F0X2ZpbmRfYnJlY2AsIGBoZnNfcmVhZF9pbm9kZWAsIGBoZnNfZmlsZV9sb29rdXBgLCBhbmQgYGhmc19maWxsX3N1cGVyYC4gU2luY2UgSEZTIGNhbiBiZSBtb3VudGVkIGZyb20gbG9vcCBkZXZpY2VzIG9yIGRpc2sgaW1hZ2VzLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IHZhbGlkYXRpb24gbG9naWMgY29ycmVjdGx5IGhhbmRsZXMgbWFsZm9ybWVkIGZpbGVzeXN0ZW0gaW1hZ2VzIHdpdGhvdXQgY2F1c2luZyBjcmFzaGVzIG9yIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtIRlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWQmIzM0OywKICAgICYjMzQ7aGZzX2NhdF9maW5kX2JyZWMmIzM0OywKICAgICYjMzQ7aGZzX3JlYWRfaW5vZGUmIzM0OywKICAgICYjMzQ7aGZzX2ZpbGVfbG9va3VwJiMzNDssCiAgICAmIzM0O2hmc19maWxsX3N1cGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgQ05JRCAoQ2F0YWxvZyBOb2RlIElEKSBpbiB0aGUgSEZTIGZpbGVzeXN0ZW0gdG8gcHJldmVudCBwcm9jZXNzaW5nIGludmFsaWQgY2F0YWxvZyByZWNvcmRzLiBJdCBtb2RpZmllcyBjb3JlIEhGUyBmdW5jdGlvbnMgbGlrZSBgaGZzX2NhdF9maW5kX2JyZWNgLCBgaGZzX3JlYWRfaW5vZGVgLCBgaGZzX2ZpbGVfbG9va3VwYCwgYW5kIGBoZnNfZmlsbF9zdXBlcmAuIFNpbmNlIEhGUyBjYW4gYmUgbW91bnRlZCBmcm9tIGxvb3AgZGV2aWNlcyBvciBkaXNrIGltYWdlcywgdGhlc2UgY29kZSBwYXRocyBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG5ldyB2YWxpZGF0aW9uIGxvZ2ljIGNvcnJlY3RseSBoYW5kbGVzIG1hbGZvcm1lZCBmaWxlc3lzdGVtIGltYWdlcyB3aXRob3V0IGNhdXNpbmcgY3Jhc2hlcyBvciByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDEwOjE1OjQyLjg4NTk3MTA3OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyMjAyMTYyMDc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZFwiLFxuICAgIFwiaGZzX2NhdF9maW5kX2JyZWNcIixcbiAgICBcImhmc19yZWFkX2lub2RlXCIsXG4gICAgXCJoZnNfZmlsZV9sb29rdXBcIixcbiAgICBcImhmc19maWxsX3N1cGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBDTklEIChDYXRhbG9nIE5vZGUgSUQpIGluIHRoZSBIRlMgZmlsZXN5c3RlbSB0byBwcmV2ZW50IHByb2Nlc3NpbmcgaW52YWxpZCBjYXRhbG9nIHJlY29yZHMuIEl0IG1vZGlmaWVzIGNvcmUgSEZTIGZ1bmN0aW9ucyBsaWtlIGBoZnNfY2F0X2ZpbmRfYnJlY2AsIGBoZnNfcmVhZF9pbm9kZWAsIGBoZnNfZmlsZV9sb29rdXBgLCBhbmQgYGhmc19maWxsX3N1cGVyYC4gU2luY2UgSEZTIGNhbiBiZSBtb3VudGVkIGZyb20gbG9vcCBkZXZpY2VzIG9yIGRpc2sgaW1hZ2VzLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IHZhbGlkYXRpb24gbG9naWMgY29ycmVjdGx5IGhhbmRsZXMgbWFsZm9ybWVkIGZpbGVzeXN0ZW0gaW1hZ2VzIHdpdGhvdXQgY2F1c2luZyBjcmFzaGVzIG9yIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxMDoxNTo0Mi44ODU5Nzk0NDlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMDQ4NjY3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDkwNWU5ZGQ1OTk3ZGU2Y2E3MmMyNjNjNmQ4NjliNWVkZTU4NjkxMTVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgOCAxMDoxNTo0MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9oZnMvY2F0YWxvZy5jIGIvZnMvaGZzL2NhdGFsb2cuY1xcbmluZGV4IDFiZmEzNmQ3MWUyNDdhLi5lNjcyYTRiYTZkYzcxYSAxMDA2NDRcXG4tLS0gYS9mcy9oZnMvY2F0YWxvZy5jXFxuKysrIGIvZnMvaGZzL2NhdGFsb2cuY1xcbkBAIC0xODIsNiArMTgyLDQwIEBAIGludCBoZnNfY2F0X2tleWNtcChjb25zdCBidHJlZV9rZXkgKmtleTEsIGNvbnN0IGJ0cmVlX2tleSAqa2V5MilcXG4gXFx0XFx0XFx0ICBrZXkyLVxcdTAwM2VjYXQuQ05hbWUubmFtZSwga2V5Mi1cXHUwMDNlY2F0LkNOYW1lLmxlbik7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgdTMyIGNuaWQpXFxuK3tcXG4rXFx0aGZzX2NhdF9yZWMgcmVjO1xcbitcXHR1MzIgZm91bmRfY25pZDtcXG4rXFx0c2l6ZV90IHJlY19sZW47XFxuK1xcbitcXHRyZWNfbGVuID0gZmQtXFx1MDAzZWVudHJ5bGVuZ3RoO1xcbitcXHRpZiAocmVjX2xlbiBcXHUwMDNjPSAwIHx8IHJlY19sZW4gXFx1MDAzZSBzaXplb2YocmVjKSlcXG4rXFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcbitcXHRtZW1zZXQoXFx1MDAyNnJlYywgMCwgc2l6ZW9mKHJlYykpO1xcbitcXHRoZnNfYm5vZGVfcmVhZChmZC1cXHUwMDNlYm5vZGUsIFxcdTAwMjZyZWMsIGZkLVxcdTAwM2VlbnRyeW9mZnNldCwgcmVjX2xlbik7XFxuK1xcbitcXHRzd2l0Y2ggKHJlYy50eXBlKSB7XFxuK1xcdGNhc2UgSEZTX0NEUl9GSUw6XFxuK1xcdFxcdGlmIChyZWNfbGVuICE9IHNpemVvZihzdHJ1Y3QgaGZzX2NhdF9maWxlKSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcdFxcdGZvdW5kX2NuaWQgPSBiZTMyX3RvX2NwdShyZWMuZmlsZS5GbE51bSk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIEhGU19DRFJfRElSOlxcbitcXHRcXHRpZiAocmVjX2xlbiAhPSBzaXplb2Yoc3RydWN0IGhmc19jYXRfZGlyKSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcdFxcdGZvdW5kX2NuaWQgPSBiZTMyX3RvX2NwdShyZWMuZGlyLkRpcklEKTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdHJldHVybiAtRUlPO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoZm91bmRfY25pZCAhPSBjbmlkKVxcbitcXHRcXHRyZXR1cm4gLUVJTztcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiAvKiBUcnkgdG8gZ2V0IGEgY2F0YWxvZyBlbnRyeSBmb3IgZ2l2ZW4gY2F0YWxvZyBpZCAqL1xcbiAvLyBtb3ZlIHRvIHJlYWRfc3VwZXI/Pz9cXG4gaW50IGhmc19jYXRfZmluZF9icmVjKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBjbmlkLFxcbkBAIC0yMDgsNyArMjQyLDEyIEBAIGludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcXG4gXFx0XFx0cmV0dXJuIC1FSU87XFxuIFxcdH1cXG4gXFx0bWVtY3B5KGZkLVxcdTAwM2VzZWFyY2hfa2V5LVxcdTAwM2VjYXQuQ05hbWUubmFtZSwgcmVjLnRocmVhZC5DTmFtZS5uYW1lLCBsZW4pO1xcbi1cXHRyZXR1cm4gaGZzX2JyZWNfZmluZChmZCk7XFxuK1xcbitcXHRyZXMgPSBoZnNfYnJlY19maW5kKGZkKTtcXG4rXFx0aWYgKHJlcylcXG4rXFx0XFx0cmV0dXJuIHJlcztcXG4rXFxuK1xcdHJldHVybiBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWQoZmQsIGNuaWQpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lXFxuZGlmZiAtLWdpdCBhL2ZzL2hmcy9oZnNfZnMuaCBiL2ZzL2hmcy9oZnNfZnMuaFxcbmluZGV4IGYzNjI0NTE0ZmNiMDMwLi42NzA2MzhmMTc0MzhjZSAxMDA2NDRcXG4tLS0gYS9mcy9oZnMvaGZzX2ZzLmhcXG4rKysgYi9mcy9oZnMvaGZzX2ZzLmhcXG5AQCAtMTU1LDYgKzE1NSwyNSBAQCBleHRlcm4gaW50IGhmc19jYXRfbW92ZSh1MzIgY25pZCwgc3RydWN0IGlub2RlICpzcmNfZGlyLFxcbiBleHRlcm4gdm9pZCBoZnNfY2F0X2J1aWxkX2tleShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBidHJlZV9rZXkgKmtleSxcXG4gXFx0XFx0XFx0ICAgICAgdTMyIHBhcmVudCwgY29uc3Qgc3RydWN0IHFzdHIgKm5hbWUpO1xcbiBcXG4rLypcXG4rICogVmFsaWRhdGUgdGhlIENOSUQgb2YgYSBjYXRhbG9nIHJlY29yZC5cXG4rICovXFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBoZnNfaXNfdmFsaWRfY25pZCh1MzIgY25pZCwgdTggdHlwZSlcXG4re1xcbitcXHRpZiAobGlrZWx5KGNuaWQgXFx1MDAzZT0gSEZTX0ZJUlNUVVNFUl9DTklEKSlcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcbitcXHRzd2l0Y2ggKGNuaWQpIHtcXG4rXFx0Y2FzZSBIRlNfUk9PVF9DTklEOlxcbitcXHRcXHRyZXR1cm4gdHlwZSA9PSBIRlNfQ0RSX0RJUjtcXG4rXFx0Y2FzZSBIRlNfRVhUX0NOSUQ6XFxuK1xcdGNhc2UgSEZTX0NBVF9DTklEOlxcbitcXHRcXHRyZXR1cm4gdHlwZSA9PSBIRlNfQ0RSX0ZJTDtcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHR9XFxuK31cXG4rXFxuIC8qIGRpci5jICovXFxuIGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGhmc19kaXJfb3BlcmF0aW9ucztcXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIGhmc19kaXJfaW5vZGVfb3BlcmF0aW9ucztcXG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2lub2RlLmMgYi9mcy9oZnMvaW5vZGUuY1xcbmluZGV4IGFjNGE5MDU1YzVjMGVhLi5lZTEwYTkyNTdhMTM4YSAxMDA2NDRcXG4tLS0gYS9mcy9oZnMvaW5vZGUuY1xcbisrKyBiL2ZzL2hmcy9pbm9kZS5jXFxuQEAgLTM2Nyw2ICszNjcsOSBAQCBzdGF0aWMgaW50IGhmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgKmRhdGEpXFxuIFxcdHJlYyA9IGlkYXRhLVxcdTAwM2VyZWM7XFxuIFxcdHN3aXRjaCAocmVjLVxcdTAwM2V0eXBlKSB7XFxuIFxcdGNhc2UgSEZTX0NEUl9GSUw6XFxuK1xcdFxcdGlmICghaGZzX2lzX3ZhbGlkX2NuaWQoYmUzMl90b19jcHUocmVjLVxcdTAwM2VmaWxlLkZsTnVtKSwgcmVjLVxcdTAwM2V0eXBlKSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcbiBcXHRcXHRpZiAoIUhGU19JU19SU1JDKGlub2RlKSkge1xcbiBcXHRcXHRcXHRoZnNfaW5vZGVfcmVhZF9mb3JrKGlub2RlLCByZWMtXFx1MDAzZWZpbGUuRXh0UmVjLCByZWMtXFx1MDAzZWZpbGUuTGdMZW4sXFxuIFxcdFxcdFxcdFxcdFxcdCAgICByZWMtXFx1MDAzZWZpbGUuUHlMZW4sIGJlMTZfdG9fY3B1KHJlYy1cXHUwMDNlZmlsZS5DbHBTaXplKSk7XFxuQEAgLTM5MCw2ICszOTMsOSBAQCBzdGF0aWMgaW50IGhmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgKmRhdGEpXFxuIFxcdFxcdGlub2RlLVxcdTAwM2VpX21hcHBpbmctXFx1MDAzZWFfb3BzID0gXFx1MDAyNmhmc19hb3BzO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBIRlNfQ0RSX0RJUjpcXG4rXFx0XFx0aWYgKCFoZnNfaXNfdmFsaWRfY25pZChiZTMyX3RvX2NwdShyZWMtXFx1MDAzZWRpci5EaXJJRCksIHJlYy1cXHUwMDNldHlwZSkpXFxuK1xcdFxcdFxcdHJldHVybiAtRUlPO1xcbitcXG4gXFx0XFx0aW5vZGUtXFx1MDAzZWlfaW5vID0gYmUzMl90b19jcHUocmVjLVxcdTAwM2VkaXIuRGlySUQpO1xcbiBcXHRcXHRpbm9kZS1cXHUwMDNlaV9zaXplID0gYmUxNl90b19jcHUocmVjLVxcdTAwM2VkaXIuVmFsKSArIDI7XFxuIFxcdFxcdEhGU19JKGlub2RlKS1cXHUwMDNlZnNfYmxvY2tzID0gMDtcXG5AQCAtNTcxLDEyICs1NzcsMTIgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmhmc19maWxlX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxcbiBcXHRyZXMgPSBoZnNfYnJlY19yZWFkKFxcdTAwMjZmZCwgXFx1MDAyNnJlYywgc2l6ZW9mKHJlYykpO1xcbiBcXHRpZiAoIXJlcykge1xcbiBcXHRcXHRzdHJ1Y3QgaGZzX2lnZXRfZGF0YSBpZGF0YSA9IHsgTlVMTCwgXFx1MDAyNnJlYyB9O1xcbi1cXHRcXHRoZnNfcmVhZF9pbm9kZShpbm9kZSwgXFx1MDAyNmlkYXRhKTtcXG4rXFx0XFx0cmVzID0gaGZzX3JlYWRfaW5vZGUoaW5vZGUsIFxcdTAwMjZpZGF0YSk7XFxuIFxcdH1cXG4gXFx0aGZzX2ZpbmRfZXhpdChcXHUwMDI2ZmQpO1xcbi1cXHRpZiAocmVzKSB7XFxuK1xcdGlmIChyZXMgfHwgaXNfYmFkX2lub2RlKGlub2RlKSkge1xcbiBcXHRcXHRpcHV0KGlub2RlKTtcXG4tXFx0XFx0cmV0dXJuIEVSUl9QVFIocmVzKTtcXG4rXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTyk7XFxuIFxcdH1cXG4gXFx0SEZTX0koaW5vZGUpLVxcdTAwM2Vyc3JjX2lub2RlID0gZGlyO1xcbiBcXHRIRlNfSShkaXIpLVxcdTAwM2Vyc3JjX2lub2RlID0gaW5vZGU7XFxuZGlmZiAtLWdpdCBhL2ZzL2hmcy9zdXBlci5jIGIvZnMvaGZzL3N1cGVyLmNcXG5pbmRleCBhNDY2YzQwMWY2YmIyNi4uOThiODA3OTViY2RlOWEgMTAwNjQ0XFxuLS0tIGEvZnMvaGZzL3N1cGVyLmNcXG4rKysgYi9mcy9oZnMvc3VwZXIuY1xcbkBAIC0zNzIsNiArMzcyLDExIEBAIHN0YXRpYyBpbnQgaGZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbiBcXHRpZiAoIXJvb3RfaW5vZGUpXFxuIFxcdFxcdGdvdG8gYmFpbF9ub19yb290O1xcbiBcXG4rXFx0aWYgKGlzX2JhZF9pbm9kZShyb290X2lub2RlKSkge1xcbitcXHRcXHRpcHV0KHJvb3RfaW5vZGUpO1xcbitcXHRcXHRnb3RvIGJhaWxfbm9fcm9vdDtcXG4rXFx0fVxcbitcXG4gXFx0c2V0X2RlZmF1bHRfZF9vcChzYiwgXFx1MDAyNmhmc19kZW50cnlfb3BlcmF0aW9ucyk7XFxuIFxcdHJlcyA9IC1FTk9NRU07XFxuIFxcdHNiLVxcdTAwM2VzX3Jvb3QgPSBkX21ha2Vfcm9vdChyb290X2lub2RlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTA6MTU6NDMuNjk3NDM2MDQ3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTM5MDY4NDcwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIRlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRcIixcbiAgICBcImhmc19jYXRfZmluZF9icmVjXCIsXG4gICAgXCJoZnNfcmVhZF9pbm9kZVwiLFxuICAgIFwiaGZzX2ZpbGVfbG9va3VwXCIsXG4gICAgXCJoZnNfZmlsbF9zdXBlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgQ05JRCAoQ2F0YWxvZyBOb2RlIElEKSBpbiB0aGUgSEZTIGZpbGVzeXN0ZW0gdG8gcHJldmVudCBwcm9jZXNzaW5nIGludmFsaWQgY2F0YWxvZyByZWNvcmRzLiBJdCBtb2RpZmllcyBjb3JlIEhGUyBmdW5jdGlvbnMgbGlrZSBgaGZzX2NhdF9maW5kX2JyZWNgLCBgaGZzX3JlYWRfaW5vZGVgLCBgaGZzX2ZpbGVfbG9va3VwYCwgYW5kIGBoZnNfZmlsbF9zdXBlcmAuIFNpbmNlIEhGUyBjYW4gYmUgbW91bnRlZCBmcm9tIGxvb3AgZGV2aWNlcyBvciBkaXNrIGltYWdlcywgdGhlc2UgY29kZSBwYXRocyBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG5ldyB2YWxpZGF0aW9uIGxvZ2ljIGNvcnJlY3RseSBoYW5kbGVzIG1hbGZvcm1lZCBmaWxlc3lzdGVtIGltYWdlcyB3aXRob3V0IGNhdXNpbmcgY3Jhc2hlcyBvciByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5MDVlOWRkNTk5N2RlNmNhNzJjMjYzYzZkODY5YjVlZGU1ODY5MTE1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgOCAxMDoxNTo0MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2hmcy9jYXRhbG9nLmMgYi9mcy9oZnMvY2F0YWxvZy5jXG5pbmRleCAxYmZhMzZkNzFlMjQ3YS4uZTY3MmE0YmE2ZGM3MWEgMTAwNjQ0XG4tLS0gYS9mcy9oZnMvY2F0YWxvZy5jXG4rKysgYi9mcy9oZnMvY2F0YWxvZy5jXG5AQCAtMTgyLDYgKzE4Miw0MCBAQCBpbnQgaGZzX2NhdF9rZXljbXAoY29uc3QgYnRyZWVfa2V5ICprZXkxLCBjb25zdCBidHJlZV9rZXkgKmtleTIpXG4gXHRcdFx0ICBrZXkyLVx1MDAzZWNhdC5DTmFtZS5uYW1lLCBrZXkyLVx1MDAzZWNhdC5DTmFtZS5sZW4pO1xuIH1cbiBcbitzdGF0aWMgaW50IGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZChzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQsIHUzMiBjbmlkKVxuK3tcbitcdGhmc19jYXRfcmVjIHJlYztcbitcdHUzMiBmb3VuZF9jbmlkO1xuK1x0c2l6ZV90IHJlY19sZW47XG4rXG4rXHRyZWNfbGVuID0gZmQtXHUwMDNlZW50cnlsZW5ndGg7XG4rXHRpZiAocmVjX2xlbiBcdTAwM2M9IDAgfHwgcmVjX2xlbiBcdTAwM2Ugc2l6ZW9mKHJlYykpXG4rXHRcdHJldHVybiAtRUlPO1xuK1xuK1x0bWVtc2V0KFx1MDAyNnJlYywgMCwgc2l6ZW9mKHJlYykpO1xuK1x0aGZzX2Jub2RlX3JlYWQoZmQtXHUwMDNlYm5vZGUsIFx1MDAyNnJlYywgZmQtXHUwMDNlZW50cnlvZmZzZXQsIHJlY19sZW4pO1xuK1xuK1x0c3dpdGNoIChyZWMudHlwZSkge1xuK1x0Y2FzZSBIRlNfQ0RSX0ZJTDpcbitcdFx0aWYgKHJlY19sZW4gIT0gc2l6ZW9mKHN0cnVjdCBoZnNfY2F0X2ZpbGUpKVxuK1x0XHRcdHJldHVybiAtRUlPO1xuK1x0XHRmb3VuZF9jbmlkID0gYmUzMl90b19jcHUocmVjLmZpbGUuRmxOdW0pO1xuK1x0XHRicmVhaztcbitcdGNhc2UgSEZTX0NEUl9ESVI6XG4rXHRcdGlmIChyZWNfbGVuICE9IHNpemVvZihzdHJ1Y3QgaGZzX2NhdF9kaXIpKVxuK1x0XHRcdHJldHVybiAtRUlPO1xuK1x0XHRmb3VuZF9jbmlkID0gYmUzMl90b19jcHUocmVjLmRpci5EaXJJRCk7XG4rXHRcdGJyZWFrO1xuK1x0ZGVmYXVsdDpcbitcdFx0cmV0dXJuIC1FSU87XG4rXHR9XG4rXG4rXHRpZiAoZm91bmRfY25pZCAhPSBjbmlkKVxuK1x0XHRyZXR1cm4gLUVJTztcbitcbitcdHJldHVybiAwO1xuK31cbitcbiAvKiBUcnkgdG8gZ2V0IGEgY2F0YWxvZyBlbnRyeSBmb3IgZ2l2ZW4gY2F0YWxvZyBpZCAqL1xuIC8vIG1vdmUgdG8gcmVhZF9zdXBlcj8/P1xuIGludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcbkBAIC0yMDgsNyArMjQyLDEyIEBAIGludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcbiBcdFx0cmV0dXJuIC1FSU87XG4gXHR9XG4gXHRtZW1jcHkoZmQtXHUwMDNlc2VhcmNoX2tleS1cdTAwM2VjYXQuQ05hbWUubmFtZSwgcmVjLnRocmVhZC5DTmFtZS5uYW1lLCBsZW4pO1xuLVx0cmV0dXJuIGhmc19icmVjX2ZpbmQoZmQpO1xuK1xuK1x0cmVzID0gaGZzX2JyZWNfZmluZChmZCk7XG4rXHRpZiAocmVzKVxuK1x0XHRyZXR1cm4gcmVzO1xuK1xuK1x0cmV0dXJuIGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZChmZCwgY25pZCk7XG4gfVxuIFxuIHN0YXRpYyBpbmxpbmVcbmRpZmYgLS1naXQgYS9mcy9oZnMvaGZzX2ZzLmggYi9mcy9oZnMvaGZzX2ZzLmhcbmluZGV4IGYzNjI0NTE0ZmNiMDMwLi42NzA2MzhmMTc0MzhjZSAxMDA2NDRcbi0tLSBhL2ZzL2hmcy9oZnNfZnMuaFxuKysrIGIvZnMvaGZzL2hmc19mcy5oXG5AQCAtMTU1LDYgKzE1NSwyNSBAQCBleHRlcm4gaW50IGhmc19jYXRfbW92ZSh1MzIgY25pZCwgc3RydWN0IGlub2RlICpzcmNfZGlyLFxuIGV4dGVybiB2b2lkIGhmc19jYXRfYnVpbGRfa2V5KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGJ0cmVlX2tleSAqa2V5LFxuIFx0XHRcdCAgICAgIHUzMiBwYXJlbnQsIGNvbnN0IHN0cnVjdCBxc3RyICpuYW1lKTtcbiBcbisvKlxuKyAqIFZhbGlkYXRlIHRoZSBDTklEIG9mIGEgY2F0YWxvZyByZWNvcmQuXG4rICovXG4rc3RhdGljIGlubGluZSBib29sIGhmc19pc192YWxpZF9jbmlkKHUzMiBjbmlkLCB1OCB0eXBlKVxuK3tcbitcdGlmIChsaWtlbHkoY25pZCBcdTAwM2U9IEhGU19GSVJTVFVTRVJfQ05JRCkpXG4rXHRcdHJldHVybiB0cnVlO1xuK1xuK1x0c3dpdGNoIChjbmlkKSB7XG4rXHRjYXNlIEhGU19ST09UX0NOSUQ6XG4rXHRcdHJldHVybiB0eXBlID09IEhGU19DRFJfRElSO1xuK1x0Y2FzZSBIRlNfRVhUX0NOSUQ6XG4rXHRjYXNlIEhGU19DQVRfQ05JRDpcbitcdFx0cmV0dXJuIHR5cGUgPT0gSEZTX0NEUl9GSUw7XG4rXHRkZWZhdWx0OlxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4rfVxuK1xuIC8qIGRpci5jICovXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgaGZzX2Rpcl9vcGVyYXRpb25zO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBoZnNfZGlyX2lub2RlX29wZXJhdGlvbnM7XG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2lub2RlLmMgYi9mcy9oZnMvaW5vZGUuY1xuaW5kZXggYWM0YTkwNTVjNWMwZWEuLmVlMTBhOTI1N2ExMzhhIDEwMDY0NFxuLS0tIGEvZnMvaGZzL2lub2RlLmNcbisrKyBiL2ZzL2hmcy9pbm9kZS5jXG5AQCAtMzY3LDYgKzM2Nyw5IEBAIHN0YXRpYyBpbnQgaGZzX3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCAqZGF0YSlcbiBcdHJlYyA9IGlkYXRhLVx1MDAzZXJlYztcbiBcdHN3aXRjaCAocmVjLVx1MDAzZXR5cGUpIHtcbiBcdGNhc2UgSEZTX0NEUl9GSUw6XG4rXHRcdGlmICghaGZzX2lzX3ZhbGlkX2NuaWQoYmUzMl90b19jcHUocmVjLVx1MDAzZWZpbGUuRmxOdW0pLCByZWMtXHUwMDNldHlwZSkpXG4rXHRcdFx0cmV0dXJuIC1FSU87XG4rXG4gXHRcdGlmICghSEZTX0lTX1JTUkMoaW5vZGUpKSB7XG4gXHRcdFx0aGZzX2lub2RlX3JlYWRfZm9yayhpbm9kZSwgcmVjLVx1MDAzZWZpbGUuRXh0UmVjLCByZWMtXHUwMDNlZmlsZS5MZ0xlbixcbiBcdFx0XHRcdFx0ICAgIHJlYy1cdTAwM2VmaWxlLlB5TGVuLCBiZTE2X3RvX2NwdShyZWMtXHUwMDNlZmlsZS5DbHBTaXplKSk7XG5AQCAtMzkwLDYgKzM5Myw5IEBAIHN0YXRpYyBpbnQgaGZzX3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCAqZGF0YSlcbiBcdFx0aW5vZGUtXHUwMDNlaV9tYXBwaW5nLVx1MDAzZWFfb3BzID0gXHUwMDI2aGZzX2FvcHM7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBIRlNfQ0RSX0RJUjpcbitcdFx0aWYgKCFoZnNfaXNfdmFsaWRfY25pZChiZTMyX3RvX2NwdShyZWMtXHUwMDNlZGlyLkRpcklEKSwgcmVjLVx1MDAzZXR5cGUpKVxuK1x0XHRcdHJldHVybiAtRUlPO1xuK1xuIFx0XHRpbm9kZS1cdTAwM2VpX2lubyA9IGJlMzJfdG9fY3B1KHJlYy1cdTAwM2VkaXIuRGlySUQpO1xuIFx0XHRpbm9kZS1cdTAwM2VpX3NpemUgPSBiZTE2X3RvX2NwdShyZWMtXHUwMDNlZGlyLlZhbCkgKyAyO1xuIFx0XHRIRlNfSShpbm9kZSktXHUwMDNlZnNfYmxvY2tzID0gMDtcbkBAIC01NzEsMTIgKzU3NywxMiBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqaGZzX2ZpbGVfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG4gXHRyZXMgPSBoZnNfYnJlY19yZWFkKFx1MDAyNmZkLCBcdTAwMjZyZWMsIHNpemVvZihyZWMpKTtcbiBcdGlmICghcmVzKSB7XG4gXHRcdHN0cnVjdCBoZnNfaWdldF9kYXRhIGlkYXRhID0geyBOVUxMLCBcdTAwMjZyZWMgfTtcbi1cdFx0aGZzX3JlYWRfaW5vZGUoaW5vZGUsIFx1MDAyNmlkYXRhKTtcbitcdFx0cmVzID0gaGZzX3JlYWRfaW5vZGUoaW5vZGUsIFx1MDAyNmlkYXRhKTtcbiBcdH1cbiBcdGhmc19maW5kX2V4aXQoXHUwMDI2ZmQpO1xuLVx0aWYgKHJlcykge1xuK1x0aWYgKHJlcyB8fCBpc19iYWRfaW5vZGUoaW5vZGUpKSB7XG4gXHRcdGlwdXQoaW5vZGUpO1xuLVx0XHRyZXR1cm4gRVJSX1BUUihyZXMpO1xuK1x0XHRyZXR1cm4gRVJSX1BUUigtRUlPKTtcbiBcdH1cbiBcdEhGU19JKGlub2RlKS1cdTAwM2Vyc3JjX2lub2RlID0gZGlyO1xuIFx0SEZTX0koZGlyKS1cdTAwM2Vyc3JjX2lub2RlID0gaW5vZGU7XG5kaWZmIC0tZ2l0IGEvZnMvaGZzL3N1cGVyLmMgYi9mcy9oZnMvc3VwZXIuY1xuaW5kZXggYTQ2NmM0MDFmNmJiMjYuLjk4YjgwNzk1YmNkZTlhIDEwMDY0NFxuLS0tIGEvZnMvaGZzL3N1cGVyLmNcbisrKyBiL2ZzL2hmcy9zdXBlci5jXG5AQCAtMzcyLDYgKzM3MiwxMSBAQCBzdGF0aWMgaW50IGhmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcbiBcdGlmICghcm9vdF9pbm9kZSlcbiBcdFx0Z290byBiYWlsX25vX3Jvb3Q7XG4gXG4rXHRpZiAoaXNfYmFkX2lub2RlKHJvb3RfaW5vZGUpKSB7XG4rXHRcdGlwdXQocm9vdF9pbm9kZSk7XG4rXHRcdGdvdG8gYmFpbF9ub19yb290O1xuK1x0fVxuK1xuIFx0c2V0X2RlZmF1bHRfZF9vcChzYiwgXHUwMDI2aGZzX2RlbnRyeV9vcGVyYXRpb25zKTtcbiBcdHJlcyA9IC1FTk9NRU07XG4gXHRzYi1cdTAwM2VzX3Jvb3QgPSBkX21ha2Vfcm9vdChyb290X2lub2RlKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDEwOjE1OjQzLjY5NzQzODk4N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIwOTYyNTQzNTM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEhGUyBGaWxlc3lzdGVtIFBhdGNoKipcblxuT2theSwgc28gd2UndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0J3MgcG9raW5nIGFyb3VuZCBpbiB0aGUgSEZTIGZpbGVzeXN0ZW0gY29kZSB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbC4gU3BlY2lmaWNhbGx5LCBpdCdzIGludHJvZHVjaW5nIENOSUQgdmFsaWRhdGlvbiDigJMgdGhhdCdzIGEgZ29vZCBmaXJzdCBzdGVwIGZvciBoYXJkZW5pbmcsIGNoZWNraW5nIHRoZSBDYXRhbG9nIE5vZGUgSUQgaW4gYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAgYW5kIGBoZnNfaXNfdmFsaWRfY25pZGAuIEl0J3MgYWxzbyB0b3VjaGluZyBgaGZzX2NhdF9maW5kX2JyZWNgLCBgaGZzX3JlYWRfaW5vZGVgLCBgaGZzX2ZpbGVfbG9va3VwYCwgYW5kIGBoZnNfZmlsbF9zdXBlcmAsIHNvIHRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNvc21ldGljIG9uZS4gR2l2ZW4gdGhhdCB0aGUgSEZTIGZpbGVzeXN0ZW0gY2FuIGJlIG1vdW50ZWQgZnJvbSBsb29wIGRldmljZXMgb3IgZGlzayBpbWFnZXMsIHRoYXQgbWVhbnMgaXQncyBhY2Nlc3NpYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFRoYXQncyBhIGh1Z2UgZmxhZyBmb3IgZnV6emluZyEgSGlnaCByZXdhcmQgcG90ZW50aWFsLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbi4gSSdsbCBuZWVkIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBvcHRpb25zIEkgbmVlZCB0byBlbmFibGUgdG8gYnVpbGQgdGhpcyBjb2RlLiBTaW5jZSB0aGUgY29kZSBpcyBpbiBgZnMvaGZzL2AsIEkgc2hvdWxkIGNoZWNrIHRoZSByZWxldmFudCBgS2NvbmZpZ2AgZmlsZSBpbiB0aGF0IGRpcmVjdG9yeS4gSSdsbCBuZWVkIHRvIGtub3cgd2hhdCBjb25maWcgb3B0aW9ucyBlbmFibGUgSEZTIHN1cHBvcnQgc28gSSBjYW4gZ2V0IGEgYnVpbGQgZW52aXJvbm1lbnQgdGhhdCBhbGxvd3MgbWUgdG8gdGVzdCB0aGVzZSBjaGFuZ2VzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIHRvIHRlc3QgYW5kIGZ1enogdGhlc2UgY2hhbmdlcyB0aG9yb3VnaGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjEyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTA6MTY6MDQuNjU5OTg3MTQ0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MjExMzA2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSEZTX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2hmcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2hmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvaGZzL0tjb25maWc6Mjpjb25maWcgSEZTX0ZTXFxuZnMvaGZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiQXBwbGUgTWFjaW50b3NoIGZpbGUgc3lzdGVtIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDEwOjE2OjA1LjIwMjEwNzk0MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1OTEzMzE3MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkhGUyBGaWxlIFN5c3RlbSBDTklEIFZhbGlkYXRpb24gQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSBIRlMgZmlsZSBzeXN0ZW0gY29kZSwgc3BlY2lmaWNhbGx5IGBmcy9oZnMvY2F0YWxvZy5jYCwgYGZzL2hmcy9oZnNfZnMuaGAsIGBmcy9oZnMvaW5vZGUuY2AsIGFuZCBgZnMvaGZzL3N1cGVyLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBhZGRpbmcgdmFsaWRhdGlvbiBmb3IgQ2F0YWxvZyBOb2RlIElEcyAoQ05JRHMpIHdpdGhpbiB0aGUgSEZTIHN0cnVjdHVyZS4gVGhpcyBpcyBnb29kOyBDTklEIHZhbGlkYXRpb24gaXMgYSBjcnVjaWFsIHN0ZXAgZm9yIGZpbGUgc3lzdGVtIGludGVncml0eSwgYW5kIEknbGwgd2FudCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gdGhpcy5cblxuSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiwgYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAsIGRlZmluZWQgaW4gYGZzL2hmcy9jYXRhbG9nLmNgLCBhbmQgYGhmc19pc192YWxpZF9jbmlkYCwgd2hpY2ggaXMgYSBoZWxwZXIgZGVmaW5lZCBpbiBgZnMvaGZzL2hmc19mcy5oYC4gYGhmc19yZWFkX2lub2RlYCB3aXRoaW4gYGZzL2hmcy9pbm9kZS5jYCBoYXMgYmVlbiB1cGRhdGVkIHRvIGluY29ycG9yYXRlIHRoZSBDTklEIHZhbGlkYXRpb24uIEFkZGl0aW9uYWxseSwgYGhmc19maWxsX3N1cGVyYCBpbiBgZnMvaGZzL3N1cGVyLmNgIG5vdyBpbmNsdWRlcyBhIGNoZWNrIGZvciBgaXNfYmFkX2lub2RlKHJvb3RfaW5vZGUpYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNsZWFudXAsIGFuZCB0aGF0IG1lYW5zIGl0J3MgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIFdlJ2xsIGRlZmluaXRlbHkgbmVlZCB0byBlbmFibGUgYEhGU19GU2AgaW4gdGhlIGNvbmZpZyB0byB0ZXN0IHRoaXMuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHRvIHBheSBhdHRlbnRpb24gdG8uIE9idmlvdXNseSwgYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAgYW5kIGBoZnNfaXNfdmFsaWRfY25pZGAgc3RhbmQgb3V0LiBUaGUgb3RoZXIgZnVuY3Rpb25zIHRoYXQgcGxheSBhIHJvbGUgaW4gdGhpcyBjaGFuZ2UgYXJlOiBgaGZzX2NhdF9maW5kX2JyZWNgLCBgaGZzX3JlYWRfaW5vZGVgLCBgaGZzX2ZpbGVfbG9va3VwYCwgYW5kIGBoZnNfZmlsbF9zdXBlcmAuXG5cbkxldCdzIGNoZWNrIHRoZSBjYWxsIGZsb3cgZm9yIHJlYWNoYWJpbGl0eS4gYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAgaXMgY2FsbGVkIGZyb20gYGhmc19jYXRfZmluZF9icmVjYCwgd2hpY2ggaXMsIGluIHR1cm4sIGNhbGxlZCBmcm9tIGBoZnNfaWdldGAuIGBoZnNfaWdldGAgY29tZXMgZnJvbSBgaGZzX2xvb2t1cGAgZHVyaW5nIHBhdGggcmVzb2x1dGlvbi4gYGhmc19pc192YWxpZF9jbmlkYCBpcyBjYWxsZWQgZnJvbSBgaGZzX3JlYWRfaW5vZGVgLiBgaGZzX3JlYWRfaW5vZGVgIGlzIGNhbGxlZCBmcm9tIGBoZnNfaWdldGAgYW5kIGBoZnNfZmlsZV9sb29rdXBgLiBgaGZzX2ZpbGxfc3VwZXJgIGlzIGNhbGxlZCBkdXJpbmcgdGhlIG1vdW50IG9wZXJhdGlvbi5cblxuT2theSwgbGV0J3MgcmVmaW5lIHRoZSBsaXN0LiBXaGlsZSBgaGZzX2lzX3ZhbGlkX2NuaWRgIGlzIGlubGluZSwgc28gaXQgbWlnaHQgYmUgaW5saW5lZC4gYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAgaXMgc3RhdGljLCBzbyBJIHdpbGwgaGF2ZSB0byBpbnZlc3RpZ2F0ZSB3aGV0aGVyIHRoZSBjb21waWxlciBpbmxpbmVzIGl0LiBgaGZzX2NhdF9maW5kX2JyZWNgIGlzIGdsb2JhbCwgd2hpY2ggaXMgZ29vZC4gYGhmc19yZWFkX2lub2RlYCwgYGhmc19maWxlX2xvb2t1cGAsIGFuZCBgaGZzX2ZpbGxfc3VwZXJgIGFyZSBhbGwgc3RhdGljLiBHaXZlbiBhbGwgb2YgdGhpcywgbXkgcHJpbWFyeSBmb2N1cyBzeW1ib2xzIGZvciBmdXp6aW5nIGFuZCBhbmFseXNpcyB3aWxsIGJlIGBoZnNfY2F0X2ZpbmRfYnJlY2AsIGBoZnNfcmVhZF9pbm9kZWAsIGBoZnNfZmlsZV9sb29rdXBgLCBhbmQgYGhmc19maWxsX3N1cGVyYC4gSSdsbCBoYXZlIHRvIGludmVzdGlnYXRlIHdoZXRoZXIgYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAgaXMgaW5saW5lZCwgYnV0IHdpbGwgc3RhcnQgZnV6emluZyBvdGhlciBmdW5jdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMTQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTA6MTY6MzEuMTE1NDMxMjIxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NTcxNjcxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoZnNfcmVhZF9pbm9kZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9oZnMvaW5vZGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9oZnMvaW5vZGUuYz0zMjU9c3RhdGljIGludCBoZnNfdGVzdF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkICpkYXRhKVxcbi0tXFxuZnMvaGZzL2lub2RlLmMtMzQyLS8qXFxuZnMvaGZzL2lub2RlLmM6MzQzOiAqIGhmc19yZWFkX2lub2RlXFxuZnMvaGZzL2lub2RlLmMtMzQ0LSAqL1xcbmZzL2hmcy9pbm9kZS5jOjM0NTpzdGF0aWMgaW50IGhmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgKmRhdGEpXFxuZnMvaGZzL2lub2RlLmMtMzQ2LXtcXG4tLVxcbmZzL2hmcy9pbm9kZS5jPTQyNT1zdHJ1Y3QgaW5vZGUgKmhmc19pZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBoZnNfY2F0X2tleSAqa2V5LCBoZnNfY2F0X3JlYyAqcmVjKVxcbi0tXFxuZnMvaGZzL2lub2RlLmMtNDQwLVxcdH1cXG5mcy9oZnMvaW5vZGUuYzo0NDE6XFx0aW5vZGUgPSBpZ2V0NV9sb2NrZWQoc2IsIGNuaWQsIGhmc190ZXN0X2lub2RlLCBoZnNfcmVhZF9pbm9kZSwgXFx1MDAyNmRhdGEpO1xcbmZzL2hmcy9pbm9kZS5jLTQ0Mi1cXHRpZiAoaW5vZGUgXFx1MDAyNlxcdTAwMjYgKGlub2RlX3N0YXRlX3JlYWRfb25jZShpbm9kZSkgXFx1MDAyNiBJX05FVykpXFxuLS1cXG5mcy9oZnMvaW5vZGUuYz01NTI9c3RhdGljIHN0cnVjdCBkZW50cnkgKmhmc19maWxlX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxcbi0tXFxuZnMvaGZzL2lub2RlLmMtNTc5LVxcdFxcdHN0cnVjdCBoZnNfaWdldF9kYXRhIGlkYXRhID0geyBOVUxMLCBcXHUwMDI2cmVjIH07XFxuZnMvaGZzL2lub2RlLmM6NTgwOlxcdFxcdHJlcyA9IGhmc19yZWFkX2lub2RlKGlub2RlLCBcXHUwMDI2aWRhdGEpO1xcbmZzL2hmcy9pbm9kZS5jLTU4MS1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDEwOjE2OjMxLjY4MTE2Mzg1M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczNjY4MTE5NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipBbmFseXppbmcgUG90ZW50aWFsIEZ1bmN0aW9uIElubGluaW5nIGluIHRoZSBIRlMgRmlsZXN5c3RlbSoqXG5cbkFscmlnaHQsIEknbSBsb29raW5nIGF0IHRoaXMgSEZTIGNvZGUgYW5kIHRyeWluZyB0byBvcHRpbWl6ZS4gYGhmc19yZWFkX2lub2RlYCBpcyBkZWNsYXJlZCBgc3RhdGljYCwgd2hpY2ggaXMgZ3JlYXQgZm9yIHNjb3BpbmcsIGJ1dCB0aGUgZmFjdCB0aGF0IGl0J3MgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciB0byBgaWdldDVfbG9ja2VkYCBwcmV0dHkgbXVjaCBraWxscyBhbnkgY2hhbmNlIG9mIGlubGluaW5nLiBUaGUgY29tcGlsZXIncyBnb2luZyB0byBoYXZlIHRvIHRyZWF0IGl0IGxpa2UgYW4gZXh0ZXJuYWwgZnVuY3Rpb24gY2FsbCwgc2luY2UgdGhlIHRhcmdldCBvZiB0aGUgcG9pbnRlciBjYW4gdmFyeS4gTm8gZGljZSB0aGVyZS5cblxuTm93LCBgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkYCBpcyBhbHNvIGBzdGF0aWNgLCBhbmQgdGhlIGdvb2QgbmV3cyBpcyBpdCdzIG9ubHkgY2FsbGVkIG9uY2UsIGFuZCB0aGF0J3Mgd2l0aGluIGBoZnNfY2F0X2ZpbmRfYnJlY2AuIFRoYXQncyBhIHN0cm9uZyBpbmRpY2F0b3IgdGhhdCB0aGUgY29tcGlsZXIgKmNvdWxkKiBwb3RlbnRpYWxseSBpbmxpbmUgaXQuIEl0J3MgYSBwcmltZSBjYW5kaWRhdGUgZm9yIG9wdGltaXphdGlvbiwgYXNzdW1pbmcgdGhlIGZ1bmN0aW9uIGlzbid0IHRvbyBsYXJnZSBvciBjb21wbGV4LiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBjb250ZXh0LCBidXQgaXQgbG9va3MgcHJvbWlzaW5nLlxuXG5GaW5hbGx5LCBgaGZzX2ZpbGVfbG9va3VwYCBpcyBhbHNvIGBzdGF0aWNgLi4uICpidXQqIGl0IGxvb2tzIGxpa2UgaXQncyB1c2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gdGhlIGBpbm9kZV9vcGVyYXRpb25zYCBzdHJ1Y3R1cmUuIEhtbSwgdGhhdCdzIGEga2V5IGRldGFpbC4gSSdtIGdvaW5nIHRvIGhhdmUgdG8gdmVyaWZ5ICpleGFjdGx5KiBob3cgaXQncyB1c2VkIHdpdGhpbiB0aGF0IHN0cnVjdHVyZS4gSWYgaXQncyB1c2VkIGluZGlyZWN0bHkgdGhyb3VnaCBhIHZpcnR1YWwgZnVuY3Rpb24gdGFibGUgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGlubGluaW5nIGlzIGxpa2VseSBvZmYgdGhlIHRhYmxlLiBMZXQgbWUgZGl2ZSBpbnRvIHRoYXQgYGlub2RlX29wZXJhdGlvbnNgIHN0cnVjdHVyZSB0byBjb25maXJtLiBJdCdzIGdvaW5nIHRvIGRlcGVuZCBvbiBob3cgdGhlIHZmcyBsYXllciBhY3R1YWxseSBjYWxscyBpdCwgYW5kIHdoZXRoZXIgaXQgY2FuIGRldmlydHVhbGl6ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjIxNCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxMDoxNjozOS4wNDc5ODA1OTVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1NjAyNzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhmc19maWxlX2xvb2t1cFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9oZnMvaW5vZGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9oZnMvaW5vZGUuYz00NTk9aW50IGhmc193cml0ZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYylcXG4tLVxcbmZzL2hmcy9pbm9kZS5jLTU1MS1cXG5mcy9oZnMvaW5vZGUuYzo1NTI6c3RhdGljIHN0cnVjdCBkZW50cnkgKmhmc19maWxlX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxcbmZzL2hmcy9pbm9kZS5jLTU1My1cXHRcXHRcXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpXFxuLS1cXG5mcy9oZnMvaW5vZGUuYz03MzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIGhmc19maWxlX2lub2RlX29wZXJhdGlvbnMgPSB7XFxuZnMvaGZzL2lub2RlLmM6NzM1OlxcdC5sb29rdXBcXHRcXHQ9IGhmc19maWxlX2xvb2t1cCxcXG5mcy9oZnMvaW5vZGUuYy03MzYtXFx0LnNldGF0dHJcXHQ9IGhmc19pbm9kZV9zZXRhdHRyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxMDoxNjozOS4xNzM1OTE1MjZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODIwODIyNzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipIRlMgRmlsZXN5c3RlbSBNb2R1bGUgQXJjaGl0ZWN0dXJlKipcblxuUmlnaHQsIHNvIEknbSBpbW1lZGlhdGVseSB0aGlua2luZyBhYm91dCBob3cgdGhlIEhGUyBmaWxlc3lzdGVtIGlzIHN0cnVjdHVyZWQgaW4gdGhlIGtlcm5lbC4gSSByZW1lbWJlciBjbGVhcmx5IHRoYXQgdGhlIGBoZnNfZmlsZV9sb29rdXBgIGZ1bmN0aW9uIHBsYXlzIGEga2V5IHJvbGUgd2l0aGluIHRoZSBgaW5vZGVfb3BlcmF0aW9uc2Agc3RydWN0dXJlLiBJdCdzIHRoYXQgZGlyZWN0IGxpbmsgdGhhdCBjb25uZWN0cyB0aGUgZmlsZXN5c3RlbSdzIGRpcmVjdG9yeSB0cmF2ZXJzYWwgbG9naWMgdG8gdGhlIGluLW1lbW9yeSByZXByZXNlbnRhdGlvbiBvZiBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgKHRoZSBpbm9kZXMpLiBNYWtlcyBwZXJmZWN0IHNlbnNlOyB0aGF0J3Mgd2hlcmUgeW91J2QgZXhwZWN0IHRvIGZpbmQgdGhlIGxvb2t1cCBmdW5jdGlvbmFsaXR5LlxuXG5BbmQgdGhlbiBJJ20gYWxzbyByZWNhbGxpbmcgYGhmc19maWxsX3N1cGVyYC4gVGhpcyBvbmUncyBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggaXMgdXNlZnVsIHRvIGtlZXAgaXQgY29udGFpbmVkLCBhbmQgSSdtIHByZXR0eSBjZXJ0YWluIGl0J3MgdGlnaHRseSBib3VuZCB0byB0aGUgZmlsZXN5c3RlbSBtb3VudGluZyBwcm9jZXNzLiBUaGF0IHdvdWxkIGxpa2VseSBiZSB3aXRoaW4gdGhlIGBmc19jb250ZXh0X29wZXJhdGlvbnNgIHN0cnVjdHVyZSwgb3Igc29tZXdoZXJlIHNpbWlsYXIsIHdoZXJlIHRoZSBmaWxlc3lzdGVtLXNwZWNpZmljIGRldGFpbHMgb2YgY3JlYXRpbmcgdGhlIHN1cGVyYmxvY2sgYW5kIGluaXRpYWxpemluZyB0aGUgZmlsZXN5c3RlbSdzIG1ldGFkYXRhIGFyZSBoYW5kbGVkLiBHb29kLCB0aGlzIHNvbGlkaWZpZXMgdGhlIHN0cnVjdHVyYWwgb3ZlcnZpZXcgb2YgaG93IHRoZSBIRlMgbW9kdWxlIGlzIG9wZXJhdGluZyBpbiB0aGUgTGludXgga2VybmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTEyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTA6MTY6NDYuOTk0NDE3Mzc4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDI2NzUyOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGZzX2ZpbGxfc3VwZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaGZzL3N1cGVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaGZzL3N1cGVyLmM9MjIwPXN0YXRpYyBpbnQgaGZzX3BhcnNlX3BhcmFtKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IGZzX3BhcmFtZXRlciAqcGFyYW0pXFxuLS1cXG5mcy9oZnMvc3VwZXIuYy0zMTUtICovXFxuZnMvaGZzL3N1cGVyLmM6MzE2OnN0YXRpYyBpbnQgaGZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbmZzL2hmcy9zdXBlci5jLTMxNy17XFxuLS1cXG5mcy9oZnMvc3VwZXIuYz0zOTg9c3RhdGljIGludCBoZnNfZ2V0X3RyZWUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbmZzL2hmcy9zdXBlci5jLTM5OS17XFxuZnMvaGZzL3N1cGVyLmM6NDAwOlxcdHJldHVybiBnZXRfdHJlZV9iZGV2KGZjLCBoZnNfZmlsbF9zdXBlcik7XFxuZnMvaGZzL3N1cGVyLmMtNDAxLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTA6MTY6NDcuMDk3MTAzMzM2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1Mjg4ODcxMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIEhGUyBGaWxlc3lzdGVtIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBpbmRlZWQgZm9jdXNlZCBvbiBgaGZzX2ZpbGxfc3VwZXJgIGFzIGEgZnVuY3Rpb24gcG9pbnRlci4gVGhhdCdzIHRoZSBlbnRyeSBwb2ludCwgYW5kIGl0J3MgZ29vZCB0byBjb25maXJtIHRoYXQuXG5cblRoZXJlZm9yZSwgdGhlIGNyaXRpY2FsIHN5bWJvbHMgdG8ga2VlcCBhbiBleWUgb24gYXJlOiBgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkYCAoZXZlbiBpZiBpbmxpbmVkLCBpdCdzIHJlbGV2YW50KSwgYGhmc19jYXRfZmluZF9icmVjYCwgYGhmc19yZWFkX2lub2RlYCwgYGhmc19maWxlX2xvb2t1cGAsIGFuZCBvZiBjb3Vyc2UsIGBoZnNfZmlsbF9zdXBlcmAuIFRoZXNlIGFyZSB0aGUgY29yZSBmdW5jdGlvbnMgaW1wYWN0ZWQgYnkgdGhlIENOSUQgdmFsaWRhdGlvbi5cblxuVGhlIHJlYXNvbmluZyBoZXJlIGlzIHNvbGlkLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBDTklEIHZhbGlkYXRpb24gdG8gcHJldmVudCBwcm9jZXNzaW5nIG9mIGludmFsaWQgY2F0YWxvZyByZWNvcmRzIHdpdGhpbiB0aGUgSEZTIGZpbGVzeXN0ZW0uIE1ha2VzIHNlbnNlLiBJdCdzIHRvdWNoaW5nIHNvbWUgcHJldHR5IGZ1bmRhbWVudGFsIGZ1bmN0aW9ucywgbmFtZWx5LCB0aG9zZSBpbnZvbHZlZCBpbiB0cmF2ZXJzaW5nIGFuZCByZWFkaW5nIHRoZSBjYXRhbG9nOiBgaGZzX2NhdF9maW5kX2JyZWNgLCBgaGZzX3JlYWRfaW5vZGVgLCBgaGZzX2ZpbGVfbG9va3VwYCBhbmQsIGltcG9ydGFudGx5LCB0aGUgZmlsZXN5c3RlbSBzZXR1cCB3aXRoIGBoZnNfZmlsbF9zdXBlcmAuXG5cblRoZSBjcnVjaWFsIHRoaW5nIGhlcmUgaXMgdGhhdCBIRlMgY2FuIGJlIHVzZWQgb24gbG9vcCBkZXZpY2VzIG9yIGltYWdlcywgd2hpY2ggYXJlIGNvbW1vbiBpbiB2aXJ0dWFsIGVudmlyb25tZW50cy4gVGhpcyB2YWxpZGF0aW9uIGxvZ2ljIG5lZWRzIHRvIGJlIGZ1enplZCBoZWF2aWx5LiBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBuZXcgY29kZSBncmFjZWZ1bGx5IGhhbmRsZXMgbWFsZm9ybWVkIGZpbGVzeXN0ZW0gaW1hZ2VzIHdpdGhvdXQgY3Jhc2hpbmcgb3IgaW50cm9kdWNpbmcgYW55IHJlZ3Jlc3Npb25zLiBFeGNlbGxlbnQgcG9pbnQuXG5cbkkganVzdCBkb3VibGUtY2hlY2tlZCwgYW5kIGBIRlNfRlNgIGlzIGluZGVlZCB0aGUgb25seSByZWxldmFudCBjb25maWd1cmF0aW9uIGZsYWcuIE5vdGhpbmcgZWxzZSB0byBjb25zaWRlciB0aGVyZS5cblxuQWxyaWdodCwgdGhhdCdzIGV2ZXJ5dGhpbmcuIEknbGwgZ2V0IHRoZSByZXN1bHRzIHNldC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQyOSwiT3V0cHV0VG9rZW5zIjoyMDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTA6MTY6NTQuNjI1OTk1NDc0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYyMTE2MzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIRlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRcIixcbiAgICBcImhmc19jYXRfZmluZF9icmVjXCIsXG4gICAgXCJoZnNfcmVhZF9pbm9kZVwiLFxuICAgIFwiaGZzX2ZpbGVfbG9va3VwXCIsXG4gICAgXCJoZnNfZmlsbF9zdXBlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgQ05JRCAoQ2F0YWxvZyBOb2RlIElEKSBpbiB0aGUgSEZTIGZpbGVzeXN0ZW0gdG8gcHJldmVudCBwcm9jZXNzaW5nIGludmFsaWQgY2F0YWxvZyByZWNvcmRzLiBJdCBtb2RpZmllcyBjb3JlIEhGUyBmdW5jdGlvbnMgbGlrZSBgaGZzX2NhdF9maW5kX2JyZWNgLCBgaGZzX3JlYWRfaW5vZGVgLCBgaGZzX2ZpbGVfbG9va3VwYCwgYW5kIGBoZnNfZmlsbF9zdXBlcmAuIFNpbmNlIEhGUyBjYW4gYmUgbW91bnRlZCBmcm9tIGxvb3AgZGV2aWNlcyBvciBkaXNrIGltYWdlcywgdGhlc2UgY29kZSBwYXRocyBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG5ldyB2YWxpZGF0aW9uIGxvZ2ljIGNvcnJlY3RseSBoYW5kbGVzIG1hbGZvcm1lZCBmaWxlc3lzdGVtIGltYWdlcyB3aXRob3V0IGNhdXNpbmcgY3Jhc2hlcyBvciByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIRlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRcIixcbiAgICBcImhmc19jYXRfZmluZF9icmVjXCIsXG4gICAgXCJoZnNfcmVhZF9pbm9kZVwiLFxuICAgIFwiaGZzX2ZpbGVfbG9va3VwXCIsXG4gICAgXCJoZnNfZmlsbF9zdXBlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgQ05JRCAoQ2F0YWxvZyBOb2RlIElEKSBpbiB0aGUgSEZTIGZpbGVzeXN0ZW0gdG8gcHJldmVudCBwcm9jZXNzaW5nIGludmFsaWQgY2F0YWxvZyByZWNvcmRzLiBJdCBtb2RpZmllcyBjb3JlIEhGUyBmdW5jdGlvbnMgbGlrZSBgaGZzX2NhdF9maW5kX2JyZWNgLCBgaGZzX3JlYWRfaW5vZGVgLCBgaGZzX2ZpbGVfbG9va3VwYCwgYW5kIGBoZnNfZmlsbF9zdXBlcmAuIFNpbmNlIEhGUyBjYW4gYmUgbW91bnRlZCBmcm9tIGxvb3AgZGV2aWNlcyBvciBkaXNrIGltYWdlcywgdGhlc2UgY29kZSBwYXRocyBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG5ldyB2YWxpZGF0aW9uIGxvZ2ljIGNvcnJlY3RseSBoYW5kbGVzIG1hbGZvcm1lZCBmaWxlc3lzdGVtIGltYWdlcyB3aXRob3V0IGNhdXNpbmcgY3Jhc2hlcyBvciByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow2hl4s[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-08 09:54:51 +0000 UTC FinishedAt: 2026-07-08 10:16:56 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFS_FS" ], "series_id": "2bee5bcc-4873-4712-91ec-b626d8302e87" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "hfs_cat_validate_found_cnid", "hfs_cat_find_brec", "hfs_read_inode", "hfs_file_lookup", "hfs_fill_super" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEwOjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZCYjMzQ7LAogICAgJiMzNDtoZnNfY2F0X2ZpbmRfYnJlYyYjMzQ7LAogICAgJiMzNDtoZnNfcmVhZF9pbm9kZSYjMzQ7LAogICAgJiMzNDtoZnNfZmlsZV9sb29rdXAmIzM0OywKICAgICYjMzQ7aGZzX2ZpbGxfc3VwZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBDTklEIChDYXRhbG9nIE5vZGUgSUQpIGluIHRoZSBIRlMgZmlsZXN5c3RlbSB0byBwcmV2ZW50IHByb2Nlc3NpbmcgaW52YWxpZCBjYXRhbG9nIHJlY29yZHMuIEl0IG1vZGlmaWVzIGNvcmUgSEZTIGZ1bmN0aW9ucyBsaWtlIGBoZnNfY2F0X2ZpbmRfYnJlY2AsIGBoZnNfcmVhZF9pbm9kZWAsIGBoZnNfZmlsZV9sb29rdXBgLCBhbmQgYGhmc19maWxsX3N1cGVyYC4gU2luY2UgSEZTIGNhbiBiZSBtb3VudGVkIGZyb20gbG9vcCBkZXZpY2VzIG9yIGRpc2sgaW1hZ2VzLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IHZhbGlkYXRpb24gbG9naWMgY29ycmVjdGx5IGhhbmRsZXMgbWFsZm9ybWVkIGZpbGVzeXN0ZW0gaW1hZ2VzIHdpdGhvdXQgY2F1c2luZyBjcmFzaGVzIG9yIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEwOjE1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOTA1ZTlkZDU5OTdkZTZjYTcyYzI2M2M2ZDg2OWI1ZWRlNTg2OTExNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMTA6MTU6NDEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2NhdGFsb2cuYyBiL2ZzL2hmcy9jYXRhbG9nLmNcbmluZGV4IDFiZmEzNmQ3MWUyNDdhLi5lNjcyYTRiYTZkYzcxYSAxMDA2NDRcbi0tLSBhL2ZzL2hmcy9jYXRhbG9nLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2hmcy9jYXRhbG9nLmNcbkBAIC0xODIsNiAmIzQzOzE4Miw0MCBAQCBpbnQgaGZzX2NhdF9rZXljbXAoY29uc3QgYnRyZWVfa2V5ICprZXkxLCBjb25zdCBidHJlZV9rZXkgKmtleTIpXG4gXHRcdFx0ICBrZXkyLVx1MDAzZWNhdC5DTmFtZS5uYW1lLCBrZXkyLVx1MDAzZWNhdC5DTmFtZS5sZW4pO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWQoc3RydWN0IGhmc19maW5kX2RhdGEgKmZkLCB1MzIgY25pZClcbiYjNDM7e1xuJiM0MztcdGhmc19jYXRfcmVjIHJlYztcbiYjNDM7XHR1MzIgZm91bmRfY25pZDtcbiYjNDM7XHRzaXplX3QgcmVjX2xlbjtcbiYjNDM7XG4mIzQzO1x0cmVjX2xlbiA9IGZkLVx1MDAzZWVudHJ5bGVuZ3RoO1xuJiM0MztcdGlmIChyZWNfbGVuIFx1MDAzYz0gMCB8fCByZWNfbGVuIFx1MDAzZSBzaXplb2YocmVjKSlcbiYjNDM7XHRcdHJldHVybiAtRUlPO1xuJiM0MztcbiYjNDM7XHRtZW1zZXQoXHUwMDI2cmVjLCAwLCBzaXplb2YocmVjKSk7XG4mIzQzO1x0aGZzX2Jub2RlX3JlYWQoZmQtXHUwMDNlYm5vZGUsIFx1MDAyNnJlYywgZmQtXHUwMDNlZW50cnlvZmZzZXQsIHJlY19sZW4pO1xuJiM0MztcbiYjNDM7XHRzd2l0Y2ggKHJlYy50eXBlKSB7XG4mIzQzO1x0Y2FzZSBIRlNfQ0RSX0ZJTDpcbiYjNDM7XHRcdGlmIChyZWNfbGVuICE9IHNpemVvZihzdHJ1Y3QgaGZzX2NhdF9maWxlKSlcbiYjNDM7XHRcdFx0cmV0dXJuIC1FSU87XG4mIzQzO1x0XHRmb3VuZF9jbmlkID0gYmUzMl90b19jcHUocmVjLmZpbGUuRmxOdW0pO1xuJiM0MztcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBIRlNfQ0RSX0RJUjpcbiYjNDM7XHRcdGlmIChyZWNfbGVuICE9IHNpemVvZihzdHJ1Y3QgaGZzX2NhdF9kaXIpKVxuJiM0MztcdFx0XHRyZXR1cm4gLUVJTztcbiYjNDM7XHRcdGZvdW5kX2NuaWQgPSBiZTMyX3RvX2NwdShyZWMuZGlyLkRpcklEKTtcbiYjNDM7XHRcdGJyZWFrO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRyZXR1cm4gLUVJTztcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChmb3VuZF9jbmlkICE9IGNuaWQpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTztcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4gLyogVHJ5IHRvIGdldCBhIGNhdGFsb2cgZW50cnkgZm9yIGdpdmVuIGNhdGFsb2cgaWQgKi9cbiAvLyBtb3ZlIHRvIHJlYWRfc3VwZXI/Pz9cbiBpbnQgaGZzX2NhdF9maW5kX2JyZWMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsXG5AQCAtMjA4LDcgJiM0MzsyNDIsMTIgQEAgaW50IGhmc19jYXRfZmluZF9icmVjKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBjbmlkLFxuIFx0XHRyZXR1cm4gLUVJTztcbiBcdH1cbiBcdG1lbWNweShmZC1cdTAwM2VzZWFyY2hfa2V5LVx1MDAzZWNhdC5DTmFtZS5uYW1lLCByZWMudGhyZWFkLkNOYW1lLm5hbWUsIGxlbik7XG4tXHRyZXR1cm4gaGZzX2JyZWNfZmluZChmZCk7XG4mIzQzO1xuJiM0MztcdHJlcyA9IGhmc19icmVjX2ZpbmQoZmQpO1xuJiM0MztcdGlmIChyZXMpXG4mIzQzO1x0XHRyZXR1cm4gcmVzO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkKGZkLCBjbmlkKTtcbiB9XG4gXG4gc3RhdGljIGlubGluZVxuZGlmZiAtLWdpdCBhL2ZzL2hmcy9oZnNfZnMuaCBiL2ZzL2hmcy9oZnNfZnMuaFxuaW5kZXggZjM2MjQ1MTRmY2IwMzAuLjY3MDYzOGYxNzQzOGNlIDEwMDY0NFxuLS0tIGEvZnMvaGZzL2hmc19mcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvaGZzX2ZzLmhcbkBAIC0xNTUsNiAmIzQzOzE1NSwyNSBAQCBleHRlcm4gaW50IGhmc19jYXRfbW92ZSh1MzIgY25pZCwgc3RydWN0IGlub2RlICpzcmNfZGlyLFxuIGV4dGVybiB2b2lkIGhmc19jYXRfYnVpbGRfa2V5KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGJ0cmVlX2tleSAqa2V5LFxuIFx0XHRcdCAgICAgIHUzMiBwYXJlbnQsIGNvbnN0IHN0cnVjdCBxc3RyICpuYW1lKTtcbiBcbiYjNDM7LypcbiYjNDM7ICogVmFsaWRhdGUgdGhlIENOSUQgb2YgYSBjYXRhbG9nIHJlY29yZC5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBoZnNfaXNfdmFsaWRfY25pZCh1MzIgY25pZCwgdTggdHlwZSlcbiYjNDM7e1xuJiM0MztcdGlmIChsaWtlbHkoY25pZCBcdTAwM2U9IEhGU19GSVJTVFVTRVJfQ05JRCkpXG4mIzQzO1x0XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7XG4mIzQzO1x0c3dpdGNoIChjbmlkKSB7XG4mIzQzO1x0Y2FzZSBIRlNfUk9PVF9DTklEOlxuJiM0MztcdFx0cmV0dXJuIHR5cGUgPT0gSEZTX0NEUl9ESVI7XG4mIzQzO1x0Y2FzZSBIRlNfRVhUX0NOSUQ6XG4mIzQzO1x0Y2FzZSBIRlNfQ0FUX0NOSUQ6XG4mIzQzO1x0XHRyZXR1cm4gdHlwZSA9PSBIRlNfQ0RSX0ZJTDtcbiYjNDM7XHRkZWZhdWx0OlxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiAvKiBkaXIuYyAqL1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGhmc19kaXJfb3BlcmF0aW9ucztcbiBleHRlcm4gY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgaGZzX2Rpcl9pbm9kZV9vcGVyYXRpb25zO1xuZGlmZiAtLWdpdCBhL2ZzL2hmcy9pbm9kZS5jIGIvZnMvaGZzL2lub2RlLmNcbmluZGV4IGFjNGE5MDU1YzVjMGVhLi5lZTEwYTkyNTdhMTM4YSAxMDA2NDRcbi0tLSBhL2ZzL2hmcy9pbm9kZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvaW5vZGUuY1xuQEAgLTM2Nyw2ICYjNDM7MzY3LDkgQEAgc3RhdGljIGludCBoZnNfcmVhZF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkICpkYXRhKVxuIFx0cmVjID0gaWRhdGEtXHUwMDNlcmVjO1xuIFx0c3dpdGNoIChyZWMtXHUwMDNldHlwZSkge1xuIFx0Y2FzZSBIRlNfQ0RSX0ZJTDpcbiYjNDM7XHRcdGlmICghaGZzX2lzX3ZhbGlkX2NuaWQoYmUzMl90b19jcHUocmVjLVx1MDAzZWZpbGUuRmxOdW0pLCByZWMtXHUwMDNldHlwZSkpXG4mIzQzO1x0XHRcdHJldHVybiAtRUlPO1xuJiM0MztcbiBcdFx0aWYgKCFIRlNfSVNfUlNSQyhpbm9kZSkpIHtcbiBcdFx0XHRoZnNfaW5vZGVfcmVhZF9mb3JrKGlub2RlLCByZWMtXHUwMDNlZmlsZS5FeHRSZWMsIHJlYy1cdTAwM2VmaWxlLkxnTGVuLFxuIFx0XHRcdFx0XHQgICAgcmVjLVx1MDAzZWZpbGUuUHlMZW4sIGJlMTZfdG9fY3B1KHJlYy1cdTAwM2VmaWxlLkNscFNpemUpKTtcbkBAIC0zOTAsNiAmIzQzOzM5Myw5IEBAIHN0YXRpYyBpbnQgaGZzX3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCAqZGF0YSlcbiBcdFx0aW5vZGUtXHUwMDNlaV9tYXBwaW5nLVx1MDAzZWFfb3BzID0gXHUwMDI2aGZzX2FvcHM7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBIRlNfQ0RSX0RJUjpcbiYjNDM7XHRcdGlmICghaGZzX2lzX3ZhbGlkX2NuaWQoYmUzMl90b19jcHUocmVjLVx1MDAzZWRpci5EaXJJRCksIHJlYy1cdTAwM2V0eXBlKSlcbiYjNDM7XHRcdFx0cmV0dXJuIC1FSU87XG4mIzQzO1xuIFx0XHRpbm9kZS1cdTAwM2VpX2lubyA9IGJlMzJfdG9fY3B1KHJlYy1cdTAwM2VkaXIuRGlySUQpO1xuIFx0XHRpbm9kZS1cdTAwM2VpX3NpemUgPSBiZTE2X3RvX2NwdShyZWMtXHUwMDNlZGlyLlZhbCkgJiM0MzsgMjtcbiBcdFx0SEZTX0koaW5vZGUpLVx1MDAzZWZzX2Jsb2NrcyA9IDA7XG5AQCAtNTcxLDEyICYjNDM7NTc3LDEyIEBAIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpoZnNfZmlsZV9sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbiBcdHJlcyA9IGhmc19icmVjX3JlYWQoXHUwMDI2ZmQsIFx1MDAyNnJlYywgc2l6ZW9mKHJlYykpO1xuIFx0aWYgKCFyZXMpIHtcbiBcdFx0c3RydWN0IGhmc19pZ2V0X2RhdGEgaWRhdGEgPSB7IE5VTEwsIFx1MDAyNnJlYyB9O1xuLVx0XHRoZnNfcmVhZF9pbm9kZShpbm9kZSwgXHUwMDI2aWRhdGEpO1xuJiM0MztcdFx0cmVzID0gaGZzX3JlYWRfaW5vZGUoaW5vZGUsIFx1MDAyNmlkYXRhKTtcbiBcdH1cbiBcdGhmc19maW5kX2V4aXQoXHUwMDI2ZmQpO1xuLVx0aWYgKHJlcykge1xuJiM0MztcdGlmIChyZXMgfHwgaXNfYmFkX2lub2RlKGlub2RlKSkge1xuIFx0XHRpcHV0KGlub2RlKTtcbi1cdFx0cmV0dXJuIEVSUl9QVFIocmVzKTtcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKC1FSU8pO1xuIFx0fVxuIFx0SEZTX0koaW5vZGUpLVx1MDAzZXJzcmNfaW5vZGUgPSBkaXI7XG4gXHRIRlNfSShkaXIpLVx1MDAzZXJzcmNfaW5vZGUgPSBpbm9kZTtcbmRpZmYgLS1naXQgYS9mcy9oZnMvc3VwZXIuYyBiL2ZzL2hmcy9zdXBlci5jXG5pbmRleCBhNDY2YzQwMWY2YmIyNi4uOThiODA3OTViY2RlOWEgMTAwNjQ0XG4tLS0gYS9mcy9oZnMvc3VwZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzL3N1cGVyLmNcbkBAIC0zNzIsNiAmIzQzOzM3MiwxMSBAQCBzdGF0aWMgaW50IGhmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcbiBcdGlmICghcm9vdF9pbm9kZSlcbiBcdFx0Z290byBiYWlsX25vX3Jvb3Q7XG4gXG4mIzQzO1x0aWYgKGlzX2JhZF9pbm9kZShyb290X2lub2RlKSkge1xuJiM0MztcdFx0aXB1dChyb290X2lub2RlKTtcbiYjNDM7XHRcdGdvdG8gYmFpbF9ub19yb290O1xuJiM0MztcdH1cbiYjNDM7XG4gXHRzZXRfZGVmYXVsdF9kX29wKHNiLCBcdTAwMjZoZnNfZGVudHJ5X29wZXJhdGlvbnMpO1xuIFx0cmVzID0gLUVOT01FTTtcbiBcdHNiLVx1MDAzZXNfcm9vdCA9IGRfbWFrZV9yb290KHJvb3RfaW5vZGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEwOjE1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZCYjMzQ7LAogICAgJiMzNDtoZnNfY2F0X2ZpbmRfYnJlYyYjMzQ7LAogICAgJiMzNDtoZnNfcmVhZF9pbm9kZSYjMzQ7LAogICAgJiMzNDtoZnNfZmlsZV9sb29rdXAmIzM0OywKICAgICYjMzQ7aGZzX2ZpbGxfc3VwZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBDTklEIChDYXRhbG9nIE5vZGUgSUQpIGluIHRoZSBIRlMgZmlsZXN5c3RlbSB0byBwcmV2ZW50IHByb2Nlc3NpbmcgaW52YWxpZCBjYXRhbG9nIHJlY29yZHMuIEl0IG1vZGlmaWVzIGNvcmUgSEZTIGZ1bmN0aW9ucyBsaWtlIGBoZnNfY2F0X2ZpbmRfYnJlY2AsIGBoZnNfcmVhZF9pbm9kZWAsIGBoZnNfZmlsZV9sb29rdXBgLCBhbmQgYGhmc19maWxsX3N1cGVyYC4gU2luY2UgSEZTIGNhbiBiZSBtb3VudGVkIGZyb20gbG9vcCBkZXZpY2VzIG9yIGRpc2sgaW1hZ2VzLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IHZhbGlkYXRpb24gbG9naWMgY29ycmVjdGx5IGhhbmRsZXMgbWFsZm9ybWVkIGZpbGVzeXN0ZW0gaW1hZ2VzIHdpdGhvdXQgY2F1c2luZyBjcmFzaGVzIG9yIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5MDVlOWRkNTk5N2RlNmNhNzJjMjYzYzZkODY5YjVlZGU1ODY5MTE1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgOCAxMDoxNTo0MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2hmcy9jYXRhbG9nLmMgYi9mcy9oZnMvY2F0YWxvZy5jCmluZGV4IDFiZmEzNmQ3MWUyNDdhLi5lNjcyYTRiYTZkYzcxYSAxMDA2NDQKLS0tIGEvZnMvaGZzL2NhdGFsb2cuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvY2F0YWxvZy5jCkBAIC0xODIsNiAmIzQzOzE4Miw0MCBAQCBpbnQgaGZzX2NhdF9rZXljbXAoY29uc3QgYnRyZWVfa2V5ICprZXkxLCBjb25zdCBidHJlZV9rZXkgKmtleTIpCiAJCQkgIGtleTItJmd0O2NhdC5DTmFtZS5uYW1lLCBrZXkyLSZndDtjYXQuQ05hbWUubGVuKTsKIH0KIAomIzQzO3N0YXRpYyBpbnQgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgdTMyIGNuaWQpCiYjNDM7ewomIzQzOwloZnNfY2F0X3JlYyByZWM7CiYjNDM7CXUzMiBmb3VuZF9jbmlkOwomIzQzOwlzaXplX3QgcmVjX2xlbjsKJiM0MzsKJiM0MzsJcmVjX2xlbiA9IGZkLSZndDtlbnRyeWxlbmd0aDsKJiM0MzsJaWYgKHJlY19sZW4gJmx0Oz0gMCB8fCByZWNfbGVuICZndDsgc2l6ZW9mKHJlYykpCiYjNDM7CQlyZXR1cm4gLUVJTzsKJiM0MzsKJiM0MzsJbWVtc2V0KCZhbXA7cmVjLCAwLCBzaXplb2YocmVjKSk7CiYjNDM7CWhmc19ibm9kZV9yZWFkKGZkLSZndDtibm9kZSwgJmFtcDtyZWMsIGZkLSZndDtlbnRyeW9mZnNldCwgcmVjX2xlbik7CiYjNDM7CiYjNDM7CXN3aXRjaCAocmVjLnR5cGUpIHsKJiM0MzsJY2FzZSBIRlNfQ0RSX0ZJTDoKJiM0MzsJCWlmIChyZWNfbGVuICE9IHNpemVvZihzdHJ1Y3QgaGZzX2NhdF9maWxlKSkKJiM0MzsJCQlyZXR1cm4gLUVJTzsKJiM0MzsJCWZvdW5kX2NuaWQgPSBiZTMyX3RvX2NwdShyZWMuZmlsZS5GbE51bSk7CiYjNDM7CQlicmVhazsKJiM0MzsJY2FzZSBIRlNfQ0RSX0RJUjoKJiM0MzsJCWlmIChyZWNfbGVuICE9IHNpemVvZihzdHJ1Y3QgaGZzX2NhdF9kaXIpKQomIzQzOwkJCXJldHVybiAtRUlPOwomIzQzOwkJZm91bmRfY25pZCA9IGJlMzJfdG9fY3B1KHJlYy5kaXIuRGlySUQpOwomIzQzOwkJYnJlYWs7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlyZXR1cm4gLUVJTzsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoZm91bmRfY25pZCAhPSBjbmlkKQomIzQzOwkJcmV0dXJuIC1FSU87CiYjNDM7CiYjNDM7CXJldHVybiAwOwomIzQzO30KJiM0MzsKIC8qIFRyeSB0byBnZXQgYSBjYXRhbG9nIGVudHJ5IGZvciBnaXZlbiBjYXRhbG9nIGlkICovCiAvLyBtb3ZlIHRvIHJlYWRfc3VwZXI/Pz8KIGludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCwKQEAgLTIwOCw3ICYjNDM7MjQyLDEyIEBAIGludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCwKIAkJcmV0dXJuIC1FSU87CiAJfQogCW1lbWNweShmZC0mZ3Q7c2VhcmNoX2tleS0mZ3Q7Y2F0LkNOYW1lLm5hbWUsIHJlYy50aHJlYWQuQ05hbWUubmFtZSwgbGVuKTsKLQlyZXR1cm4gaGZzX2JyZWNfZmluZChmZCk7CiYjNDM7CiYjNDM7CXJlcyA9IGhmc19icmVjX2ZpbmQoZmQpOwomIzQzOwlpZiAocmVzKQomIzQzOwkJcmV0dXJuIHJlczsKJiM0MzsKJiM0MzsJcmV0dXJuIGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZChmZCwgY25pZCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUKZGlmZiAtLWdpdCBhL2ZzL2hmcy9oZnNfZnMuaCBiL2ZzL2hmcy9oZnNfZnMuaAppbmRleCBmMzYyNDUxNGZjYjAzMC4uNjcwNjM4ZjE3NDM4Y2UgMTAwNjQ0Ci0tLSBhL2ZzL2hmcy9oZnNfZnMuaAomIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvaGZzX2ZzLmgKQEAgLTE1NSw2ICYjNDM7MTU1LDI1IEBAIGV4dGVybiBpbnQgaGZzX2NhdF9tb3ZlKHUzMiBjbmlkLCBzdHJ1Y3QgaW5vZGUgKnNyY19kaXIsCiBleHRlcm4gdm9pZCBoZnNfY2F0X2J1aWxkX2tleShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBidHJlZV9rZXkgKmtleSwKIAkJCSAgICAgIHUzMiBwYXJlbnQsIGNvbnN0IHN0cnVjdCBxc3RyICpuYW1lKTsKIAomIzQzOy8qCiYjNDM7ICogVmFsaWRhdGUgdGhlIENOSUQgb2YgYSBjYXRhbG9nIHJlY29yZC4KJiM0MzsgKi8KJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgaGZzX2lzX3ZhbGlkX2NuaWQodTMyIGNuaWQsIHU4IHR5cGUpCiYjNDM7ewomIzQzOwlpZiAobGlrZWx5KGNuaWQgJmd0Oz0gSEZTX0ZJUlNUVVNFUl9DTklEKSkKJiM0MzsJCXJldHVybiB0cnVlOwomIzQzOwomIzQzOwlzd2l0Y2ggKGNuaWQpIHsKJiM0MzsJY2FzZSBIRlNfUk9PVF9DTklEOgomIzQzOwkJcmV0dXJuIHR5cGUgPT0gSEZTX0NEUl9ESVI7CiYjNDM7CWNhc2UgSEZTX0VYVF9DTklEOgomIzQzOwljYXNlIEhGU19DQVRfQ05JRDoKJiM0MzsJCXJldHVybiB0eXBlID09IEhGU19DRFJfRklMOwomIzQzOwlkZWZhdWx0OgomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwl9CiYjNDM7fQomIzQzOwogLyogZGlyLmMgKi8KIGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGhmc19kaXJfb3BlcmF0aW9uczsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBoZnNfZGlyX2lub2RlX29wZXJhdGlvbnM7CmRpZmYgLS1naXQgYS9mcy9oZnMvaW5vZGUuYyBiL2ZzL2hmcy9pbm9kZS5jCmluZGV4IGFjNGE5MDU1YzVjMGVhLi5lZTEwYTkyNTdhMTM4YSAxMDA2NDQKLS0tIGEvZnMvaGZzL2lub2RlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzL2lub2RlLmMKQEAgLTM2Nyw2ICYjNDM7MzY3LDkgQEAgc3RhdGljIGludCBoZnNfcmVhZF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkICpkYXRhKQogCXJlYyA9IGlkYXRhLSZndDtyZWM7CiAJc3dpdGNoIChyZWMtJmd0O3R5cGUpIHsKIAljYXNlIEhGU19DRFJfRklMOgomIzQzOwkJaWYgKCFoZnNfaXNfdmFsaWRfY25pZChiZTMyX3RvX2NwdShyZWMtJmd0O2ZpbGUuRmxOdW0pLCByZWMtJmd0O3R5cGUpKQomIzQzOwkJCXJldHVybiAtRUlPOwomIzQzOwogCQlpZiAoIUhGU19JU19SU1JDKGlub2RlKSkgewogCQkJaGZzX2lub2RlX3JlYWRfZm9yayhpbm9kZSwgcmVjLSZndDtmaWxlLkV4dFJlYywgcmVjLSZndDtmaWxlLkxnTGVuLAogCQkJCQkgICAgcmVjLSZndDtmaWxlLlB5TGVuLCBiZTE2X3RvX2NwdShyZWMtJmd0O2ZpbGUuQ2xwU2l6ZSkpOwpAQCAtMzkwLDYgJiM0MzszOTMsOSBAQCBzdGF0aWMgaW50IGhmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgKmRhdGEpCiAJCWlub2RlLSZndDtpX21hcHBpbmctJmd0O2Ffb3BzID0gJmFtcDtoZnNfYW9wczsKIAkJYnJlYWs7CiAJY2FzZSBIRlNfQ0RSX0RJUjoKJiM0MzsJCWlmICghaGZzX2lzX3ZhbGlkX2NuaWQoYmUzMl90b19jcHUocmVjLSZndDtkaXIuRGlySUQpLCByZWMtJmd0O3R5cGUpKQomIzQzOwkJCXJldHVybiAtRUlPOwomIzQzOwogCQlpbm9kZS0mZ3Q7aV9pbm8gPSBiZTMyX3RvX2NwdShyZWMtJmd0O2Rpci5EaXJJRCk7CiAJCWlub2RlLSZndDtpX3NpemUgPSBiZTE2X3RvX2NwdShyZWMtJmd0O2Rpci5WYWwpICYjNDM7IDI7CiAJCUhGU19JKGlub2RlKS0mZ3Q7ZnNfYmxvY2tzID0gMDsKQEAgLTU3MSwxMiAmIzQzOzU3NywxMiBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqaGZzX2ZpbGVfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksCiAJcmVzID0gaGZzX2JyZWNfcmVhZCgmYW1wO2ZkLCAmYW1wO3JlYywgc2l6ZW9mKHJlYykpOwogCWlmICghcmVzKSB7CiAJCXN0cnVjdCBoZnNfaWdldF9kYXRhIGlkYXRhID0geyBOVUxMLCAmYW1wO3JlYyB9OwotCQloZnNfcmVhZF9pbm9kZShpbm9kZSwgJmFtcDtpZGF0YSk7CiYjNDM7CQlyZXMgPSBoZnNfcmVhZF9pbm9kZShpbm9kZSwgJmFtcDtpZGF0YSk7CiAJfQogCWhmc19maW5kX2V4aXQoJmFtcDtmZCk7Ci0JaWYgKHJlcykgewomIzQzOwlpZiAocmVzIHx8IGlzX2JhZF9pbm9kZShpbm9kZSkpIHsKIAkJaXB1dChpbm9kZSk7Ci0JCXJldHVybiBFUlJfUFRSKHJlcyk7CiYjNDM7CQlyZXR1cm4gRVJSX1BUUigtRUlPKTsKIAl9CiAJSEZTX0koaW5vZGUpLSZndDtyc3JjX2lub2RlID0gZGlyOwogCUhGU19JKGRpciktJmd0O3JzcmNfaW5vZGUgPSBpbm9kZTsKZGlmZiAtLWdpdCBhL2ZzL2hmcy9zdXBlci5jIGIvZnMvaGZzL3N1cGVyLmMKaW5kZXggYTQ2NmM0MDFmNmJiMjYuLjk4YjgwNzk1YmNkZTlhIDEwMDY0NAotLS0gYS9mcy9oZnMvc3VwZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnMvc3VwZXIuYwpAQCAtMzcyLDYgJiM0MzszNzIsMTEgQEAgc3RhdGljIGludCBoZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCiAJaWYgKCFyb290X2lub2RlKQogCQlnb3RvIGJhaWxfbm9fcm9vdDsKIAomIzQzOwlpZiAoaXNfYmFkX2lub2RlKHJvb3RfaW5vZGUpKSB7CiYjNDM7CQlpcHV0KHJvb3RfaW5vZGUpOwomIzQzOwkJZ290byBiYWlsX25vX3Jvb3Q7CiYjNDM7CX0KJiM0MzsKIAlzZXRfZGVmYXVsdF9kX29wKHNiLCAmYW1wO2hmc19kZW50cnlfb3BlcmF0aW9ucyk7CiAJcmVzID0gLUVOT01FTTsKIAlzYi0mZ3Q7c19yb290ID0gZF9tYWtlX3Jvb3Qocm9vdF9pbm9kZSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEwOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MTIKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSEZTIEZpbGVzeXN0ZW0gUGF0Y2gqKgoKT2theSwgc28gd2UmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBwb2tpbmcgYXJvdW5kIGluIHRoZSBIRlMgZmlsZXN5c3RlbSBjb2RlIHdpdGhpbiB0aGUgTGludXgga2VybmVsLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGludHJvZHVjaW5nIENOSUQgdmFsaWRhdGlvbiDigJMgdGhhdCYjMzk7cyBhIGdvb2QgZmlyc3Qgc3RlcCBmb3IgaGFyZGVuaW5nLCBjaGVja2luZyB0aGUgQ2F0YWxvZyBOb2RlIElEIGluIGBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRgIGFuZCBgaGZzX2lzX3ZhbGlkX2NuaWRgLiBJdCYjMzk7cyBhbHNvIHRvdWNoaW5nIGBoZnNfY2F0X2ZpbmRfYnJlY2AsIGBoZnNfcmVhZF9pbm9kZWAsIGBoZnNfZmlsZV9sb29rdXBgLCBhbmQgYGhmc19maWxsX3N1cGVyYCwgc28gdGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgY29zbWV0aWMgb25lLiBHaXZlbiB0aGF0IHRoZSBIRlMgZmlsZXN5c3RlbSBjYW4gYmUgbW91bnRlZCBmcm9tIGxvb3AgZGV2aWNlcyBvciBkaXNrIGltYWdlcywgdGhhdCBtZWFucyBpdCYjMzk7cyBhY2Nlc3NpYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFRoYXQmIzM5O3MgYSBodWdlIGZsYWcgZm9yIGZ1enppbmchIEhpZ2ggcmV3YXJkIHBvdGVudGlhbC4KCk15IG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHRoZSBidWlsZCBjb25maWd1cmF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBvcHRpb25zIEkgbmVlZCB0byBlbmFibGUgdG8gYnVpbGQgdGhpcyBjb2RlLiBTaW5jZSB0aGUgY29kZSBpcyBpbiBgZnMvaGZzL2AsIEkgc2hvdWxkIGNoZWNrIHRoZSByZWxldmFudCBgS2NvbmZpZ2AgZmlsZSBpbiB0aGF0IGRpcmVjdG9yeS4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoYXQgY29uZmlnIG9wdGlvbnMgZW5hYmxlIEhGUyBzdXBwb3J0IHNvIEkgY2FuIGdldCBhIGJ1aWxkIGVudmlyb25tZW50IHRoYXQgYWxsb3dzIG1lIHRvIHRlc3QgdGhlc2UgY2hhbmdlcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmUgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9ucyB0byB0ZXN0IGFuZCBmdXp6IHRoZXNlIGNoYW5nZXMgdGhvcm91Z2hseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSEZTX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvaGZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2hmcy9LY29uZmlnOjI6Y29uZmlnIEhGU19GU1xuZnMvaGZzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0FwcGxlIE1hY2ludG9zaCBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAxNAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDg0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipIRlMgRmlsZSBTeXN0ZW0gQ05JRCBWYWxpZGF0aW9uIEFuYWx5c2lzKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIEhGUyBmaWxlIHN5c3RlbSBjb2RlLCBzcGVjaWZpY2FsbHkgYGZzL2hmcy9jYXRhbG9nLmNgLCBgZnMvaGZzL2hmc19mcy5oYCwgYGZzL2hmcy9pbm9kZS5jYCwgYW5kIGBmcy9oZnMvc3VwZXIuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGFkZGluZyB2YWxpZGF0aW9uIGZvciBDYXRhbG9nIE5vZGUgSURzIChDTklEcykgd2l0aGluIHRoZSBIRlMgc3RydWN0dXJlLiBUaGlzIGlzIGdvb2Q7IENOSUQgdmFsaWRhdGlvbiBpcyBhIGNydWNpYWwgc3RlcCBmb3IgZmlsZSBzeXN0ZW0gaW50ZWdyaXR5LCBhbmQgSSYjMzk7bGwgd2FudCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gdGhpcy4KCkl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24sIGBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRgLCBkZWZpbmVkIGluIGBmcy9oZnMvY2F0YWxvZy5jYCwgYW5kIGBoZnNfaXNfdmFsaWRfY25pZGAsIHdoaWNoIGlzIGEgaGVscGVyIGRlZmluZWQgaW4gYGZzL2hmcy9oZnNfZnMuaGAuIGBoZnNfcmVhZF9pbm9kZWAgd2l0aGluIGBmcy9oZnMvaW5vZGUuY2AgaGFzIGJlZW4gdXBkYXRlZCB0byBpbmNvcnBvcmF0ZSB0aGUgQ05JRCB2YWxpZGF0aW9uLiBBZGRpdGlvbmFsbHksIGBoZnNfZmlsbF9zdXBlcmAgaW4gYGZzL2hmcy9zdXBlci5jYCBub3cgaW5jbHVkZXMgYSBjaGVjayBmb3IgYGlzX2JhZF9pbm9kZShyb290X2lub2RlKWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IGp1c3QgYSBjbGVhbnVwLCBhbmQgdGhhdCBtZWFucyBpdCYjMzk7cyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gV2UmIzM5O2xsIGRlZmluaXRlbHkgbmVlZCB0byBlbmFibGUgYEhGU19GU2AgaW4gdGhlIGNvbmZpZyB0byB0ZXN0IHRoaXMuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyB0byBwYXkgYXR0ZW50aW9uIHRvLiBPYnZpb3VzbHksIGBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRgIGFuZCBgaGZzX2lzX3ZhbGlkX2NuaWRgIHN0YW5kIG91dC4gVGhlIG90aGVyIGZ1bmN0aW9ucyB0aGF0IHBsYXkgYSByb2xlIGluIHRoaXMgY2hhbmdlIGFyZTogYGhmc19jYXRfZmluZF9icmVjYCwgYGhmc19yZWFkX2lub2RlYCwgYGhmc19maWxlX2xvb2t1cGAsIGFuZCBgaGZzX2ZpbGxfc3VwZXJgLgoKTGV0JiMzOTtzIGNoZWNrIHRoZSBjYWxsIGZsb3cgZm9yIHJlYWNoYWJpbGl0eS4gYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAgaXMgY2FsbGVkIGZyb20gYGhmc19jYXRfZmluZF9icmVjYCwgd2hpY2ggaXMsIGluIHR1cm4sIGNhbGxlZCBmcm9tIGBoZnNfaWdldGAuIGBoZnNfaWdldGAgY29tZXMgZnJvbSBgaGZzX2xvb2t1cGAgZHVyaW5nIHBhdGggcmVzb2x1dGlvbi4gYGhmc19pc192YWxpZF9jbmlkYCBpcyBjYWxsZWQgZnJvbSBgaGZzX3JlYWRfaW5vZGVgLiBgaGZzX3JlYWRfaW5vZGVgIGlzIGNhbGxlZCBmcm9tIGBoZnNfaWdldGAgYW5kIGBoZnNfZmlsZV9sb29rdXBgLiBgaGZzX2ZpbGxfc3VwZXJgIGlzIGNhbGxlZCBkdXJpbmcgdGhlIG1vdW50IG9wZXJhdGlvbi4KCk9rYXksIGxldCYjMzk7cyByZWZpbmUgdGhlIGxpc3QuIFdoaWxlIGBoZnNfaXNfdmFsaWRfY25pZGAgaXMgaW5saW5lLCBzbyBpdCBtaWdodCBiZSBpbmxpbmVkLiBgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkYCBpcyBzdGF0aWMsIHNvIEkgd2lsbCBoYXZlIHRvIGludmVzdGlnYXRlIHdoZXRoZXIgdGhlIGNvbXBpbGVyIGlubGluZXMgaXQuIGBoZnNfY2F0X2ZpbmRfYnJlY2AgaXMgZ2xvYmFsLCB3aGljaCBpcyBnb29kLiBgaGZzX3JlYWRfaW5vZGVgLCBgaGZzX2ZpbGVfbG9va3VwYCwgYW5kIGBoZnNfZmlsbF9zdXBlcmAgYXJlIGFsbCBzdGF0aWMuIEdpdmVuIGFsbCBvZiB0aGlzLCBteSBwcmltYXJ5IGZvY3VzIHN5bWJvbHMgZm9yIGZ1enppbmcgYW5kIGFuYWx5c2lzIHdpbGwgYmUgYGhmc19jYXRfZmluZF9icmVjYCwgYGhmc19yZWFkX2lub2RlYCwgYGhmc19maWxlX2xvb2t1cGAsIGFuZCBgaGZzX2ZpbGxfc3VwZXJgLiBJJiMzOTtsbCBoYXZlIHRvIGludmVzdGlnYXRlIHdoZXRoZXIgYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAgaXMgaW5saW5lZCwgYnV0IHdpbGwgc3RhcnQgZnV6emluZyBvdGhlciBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTA6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGZzX3JlYWRfaW5vZGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9oZnMvaW5vZGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9oZnMvaW5vZGUuYz0zMjU9c3RhdGljIGludCBoZnNfdGVzdF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkICpkYXRhKVxuLS1cbmZzL2hmcy9pbm9kZS5jLTM0Mi0vKlxuZnMvaGZzL2lub2RlLmM6MzQzOiAqIGhmc19yZWFkX2lub2RlXG5mcy9oZnMvaW5vZGUuYy0zNDQtICovXG5mcy9oZnMvaW5vZGUuYzozNDU6c3RhdGljIGludCBoZnNfcmVhZF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkICpkYXRhKVxuZnMvaGZzL2lub2RlLmMtMzQ2LXtcbi0tXG5mcy9oZnMvaW5vZGUuYz00MjU9c3RydWN0IGlub2RlICpoZnNfaWdldChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgaGZzX2NhdF9rZXkgKmtleSwgaGZzX2NhdF9yZWMgKnJlYylcbi0tXG5mcy9oZnMvaW5vZGUuYy00NDAtXHR9XG5mcy9oZnMvaW5vZGUuYzo0NDE6XHRpbm9kZSA9IGlnZXQ1X2xvY2tlZChzYiwgY25pZCwgaGZzX3Rlc3RfaW5vZGUsIGhmc19yZWFkX2lub2RlLCBcdTAwMjZkYXRhKTtcbmZzL2hmcy9pbm9kZS5jLTQ0Mi1cdGlmIChpbm9kZSBcdTAwMjZcdTAwMjYgKGlub2RlX3N0YXRlX3JlYWRfb25jZShpbm9kZSkgXHUwMDI2IElfTkVXKSlcbi0tXG5mcy9oZnMvaW5vZGUuYz01NTI9c3RhdGljIHN0cnVjdCBkZW50cnkgKmhmc19maWxlX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxuLS1cbmZzL2hmcy9pbm9kZS5jLTU3OS1cdFx0c3RydWN0IGhmc19pZ2V0X2RhdGEgaWRhdGEgPSB7IE5VTEwsIFx1MDAyNnJlYyB9O1xuZnMvaGZzL2lub2RlLmM6NTgwOlx0XHRyZXMgPSBoZnNfcmVhZF9pbm9kZShpbm9kZSwgXHUwMDI2aWRhdGEpO1xuZnMvaGZzL2lub2RlLmMtNTgxLVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEwOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMTQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyBQb3RlbnRpYWwgRnVuY3Rpb24gSW5saW5pbmcgaW4gdGhlIEhGUyBGaWxlc3lzdGVtKioKCkFscmlnaHQsIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIEhGUyBjb2RlIGFuZCB0cnlpbmcgdG8gb3B0aW1pemUuIGBoZnNfcmVhZF9pbm9kZWAgaXMgZGVjbGFyZWQgYHN0YXRpY2AsIHdoaWNoIGlzIGdyZWF0IGZvciBzY29waW5nLCBidXQgdGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIHRvIGBpZ2V0NV9sb2NrZWRgIHByZXR0eSBtdWNoIGtpbGxzIGFueSBjaGFuY2Ugb2YgaW5saW5pbmcuIFRoZSBjb21waWxlciYjMzk7cyBnb2luZyB0byBoYXZlIHRvIHRyZWF0IGl0IGxpa2UgYW4gZXh0ZXJuYWwgZnVuY3Rpb24gY2FsbCwgc2luY2UgdGhlIHRhcmdldCBvZiB0aGUgcG9pbnRlciBjYW4gdmFyeS4gTm8gZGljZSB0aGVyZS4KCk5vdywgYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAgaXMgYWxzbyBgc3RhdGljYCwgYW5kIHRoZSBnb29kIG5ld3MgaXMgaXQmIzM5O3Mgb25seSBjYWxsZWQgb25jZSwgYW5kIHRoYXQmIzM5O3Mgd2l0aGluIGBoZnNfY2F0X2ZpbmRfYnJlY2AuIFRoYXQmIzM5O3MgYSBzdHJvbmcgaW5kaWNhdG9yIHRoYXQgdGhlIGNvbXBpbGVyICpjb3VsZCogcG90ZW50aWFsbHkgaW5saW5lIGl0LiBJdCYjMzk7cyBhIHByaW1lIGNhbmRpZGF0ZSBmb3Igb3B0aW1pemF0aW9uLCBhc3N1bWluZyB0aGUgZnVuY3Rpb24gaXNuJiMzOTt0IHRvbyBsYXJnZSBvciBjb21wbGV4LiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgY29udGV4dCwgYnV0IGl0IGxvb2tzIHByb21pc2luZy4KCkZpbmFsbHksIGBoZnNfZmlsZV9sb29rdXBgIGlzIGFsc28gYHN0YXRpY2AuLi4gKmJ1dCogaXQgbG9va3MgbGlrZSBpdCYjMzk7cyB1c2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gdGhlIGBpbm9kZV9vcGVyYXRpb25zYCBzdHJ1Y3R1cmUuIEhtbSwgdGhhdCYjMzk7cyBhIGtleSBkZXRhaWwuIEkmIzM5O20gZ29pbmcgdG8gaGF2ZSB0byB2ZXJpZnkgKmV4YWN0bHkqIGhvdyBpdCYjMzk7cyB1c2VkIHdpdGhpbiB0aGF0IHN0cnVjdHVyZS4gSWYgaXQmIzM5O3MgdXNlZCBpbmRpcmVjdGx5IHRocm91Z2ggYSB2aXJ0dWFsIGZ1bmN0aW9uIHRhYmxlIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBpbmxpbmluZyBpcyBsaWtlbHkgb2ZmIHRoZSB0YWJsZS4gTGV0IG1lIGRpdmUgaW50byB0aGF0IGBpbm9kZV9vcGVyYXRpb25zYCBzdHJ1Y3R1cmUgdG8gY29uZmlybS4gSXQmIzM5O3MgZ29pbmcgdG8gZGVwZW5kIG9uIGhvdyB0aGUgdmZzIGxheWVyIGFjdHVhbGx5IGNhbGxzIGl0LCBhbmQgd2hldGhlciBpdCBjYW4gZGV2aXJ0dWFsaXplLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEwOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hmc19maWxlX2xvb2t1cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2hmcy9pbm9kZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2hmcy9pbm9kZS5jPTQ1OT1pbnQgaGZzX3dyaXRlX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjKVxuLS1cbmZzL2hmcy9pbm9kZS5jLTU1MS1cbmZzL2hmcy9pbm9kZS5jOjU1MjpzdGF0aWMgc3RydWN0IGRlbnRyeSAqaGZzX2ZpbGVfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG5mcy9oZnMvaW5vZGUuYy01NTMtXHRcdFx0XHQgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpXG4tLVxuZnMvaGZzL2lub2RlLmM9NzM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBoZnNfZmlsZV9pbm9kZV9vcGVyYXRpb25zID0ge1xuZnMvaGZzL2lub2RlLmM6NzM1Olx0Lmxvb2t1cFx0XHQ9IGhmc19maWxlX2xvb2t1cCxcbmZzL2hmcy9pbm9kZS5jLTczNi1cdC5zZXRhdHRyXHQ9IGhmc19pbm9kZV9zZXRhdHRyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEwOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5MTIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipIRlMgRmlsZXN5c3RlbSBNb2R1bGUgQXJjaGl0ZWN0dXJlKioKClJpZ2h0LCBzbyBJJiMzOTttIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IGhvdyB0aGUgSEZTIGZpbGVzeXN0ZW0gaXMgc3RydWN0dXJlZCBpbiB0aGUga2VybmVsLiBJIHJlbWVtYmVyIGNsZWFybHkgdGhhdCB0aGUgYGhmc19maWxlX2xvb2t1cGAgZnVuY3Rpb24gcGxheXMgYSBrZXkgcm9sZSB3aXRoaW4gdGhlIGBpbm9kZV9vcGVyYXRpb25zYCBzdHJ1Y3R1cmUuIEl0JiMzOTtzIHRoYXQgZGlyZWN0IGxpbmsgdGhhdCBjb25uZWN0cyB0aGUgZmlsZXN5c3RlbSYjMzk7cyBkaXJlY3RvcnkgdHJhdmVyc2FsIGxvZ2ljIHRvIHRoZSBpbi1tZW1vcnkgcmVwcmVzZW50YXRpb24gb2YgZmlsZXMgYW5kIGRpcmVjdG9yaWVzICh0aGUgaW5vZGVzKS4gTWFrZXMgcGVyZmVjdCBzZW5zZTsgdGhhdCYjMzk7cyB3aGVyZSB5b3UmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIGxvb2t1cCBmdW5jdGlvbmFsaXR5LgoKQW5kIHRoZW4gSSYjMzk7bSBhbHNvIHJlY2FsbGluZyBgaGZzX2ZpbGxfc3VwZXJgLiBUaGlzIG9uZSYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggaXMgdXNlZnVsIHRvIGtlZXAgaXQgY29udGFpbmVkLCBhbmQgSSYjMzk7bSBwcmV0dHkgY2VydGFpbiBpdCYjMzk7cyB0aWdodGx5IGJvdW5kIHRvIHRoZSBmaWxlc3lzdGVtIG1vdW50aW5nIHByb2Nlc3MuIFRoYXQgd291bGQgbGlrZWx5IGJlIHdpdGhpbiB0aGUgYGZzX2NvbnRleHRfb3BlcmF0aW9uc2Agc3RydWN0dXJlLCBvciBzb21ld2hlcmUgc2ltaWxhciwgd2hlcmUgdGhlIGZpbGVzeXN0ZW0tc3BlY2lmaWMgZGV0YWlscyBvZiBjcmVhdGluZyB0aGUgc3VwZXJibG9jayBhbmQgaW5pdGlhbGl6aW5nIHRoZSBmaWxlc3lzdGVtJiMzOTtzIG1ldGFkYXRhIGFyZSBoYW5kbGVkLiBHb29kLCB0aGlzIHNvbGlkaWZpZXMgdGhlIHN0cnVjdHVyYWwgb3ZlcnZpZXcgb2YgaG93IHRoZSBIRlMgbW9kdWxlIGlzIG9wZXJhdGluZyBpbiB0aGUgTGludXgga2VybmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoZnNfZmlsbF9zdXBlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2hmcy9zdXBlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2hmcy9zdXBlci5jPTIyMD1zdGF0aWMgaW50IGhmc19wYXJzZV9wYXJhbShzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBmc19wYXJhbWV0ZXIgKnBhcmFtKVxuLS1cbmZzL2hmcy9zdXBlci5jLTMxNS0gKi9cbmZzL2hmcy9zdXBlci5jOjMxNjpzdGF0aWMgaW50IGhmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcbmZzL2hmcy9zdXBlci5jLTMxNy17XG4tLVxuZnMvaGZzL3N1cGVyLmM9Mzk4PXN0YXRpYyBpbnQgaGZzX2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcbmZzL2hmcy9zdXBlci5jLTM5OS17XG5mcy9oZnMvc3VwZXIuYzo0MDA6XHRyZXR1cm4gZ2V0X3RyZWVfYmRldihmYywgaGZzX2ZpbGxfc3VwZXIpO1xuZnMvaGZzL3N1cGVyLmMtNDAxLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQyOQoJCQkJCQkJb3V0cHV0OiAyMDIKCQkJCQkJCXRob3VnaHRzOiAyNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEhGUyBGaWxlc3lzdGVtIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgaW5kZWVkIGZvY3VzZWQgb24gYGhmc19maWxsX3N1cGVyYCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIuIFRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50LCBhbmQgaXQmIzM5O3MgZ29vZCB0byBjb25maXJtIHRoYXQuCgpUaGVyZWZvcmUsIHRoZSBjcml0aWNhbCBzeW1ib2xzIHRvIGtlZXAgYW4gZXllIG9uIGFyZTogYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAgKGV2ZW4gaWYgaW5saW5lZCwgaXQmIzM5O3MgcmVsZXZhbnQpLCBgaGZzX2NhdF9maW5kX2JyZWNgLCBgaGZzX3JlYWRfaW5vZGVgLCBgaGZzX2ZpbGVfbG9va3VwYCwgYW5kIG9mIGNvdXJzZSwgYGhmc19maWxsX3N1cGVyYC4gVGhlc2UgYXJlIHRoZSBjb3JlIGZ1bmN0aW9ucyBpbXBhY3RlZCBieSB0aGUgQ05JRCB2YWxpZGF0aW9uLgoKVGhlIHJlYXNvbmluZyBoZXJlIGlzIHNvbGlkLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBDTklEIHZhbGlkYXRpb24gdG8gcHJldmVudCBwcm9jZXNzaW5nIG9mIGludmFsaWQgY2F0YWxvZyByZWNvcmRzIHdpdGhpbiB0aGUgSEZTIGZpbGVzeXN0ZW0uIE1ha2VzIHNlbnNlLiBJdCYjMzk7cyB0b3VjaGluZyBzb21lIHByZXR0eSBmdW5kYW1lbnRhbCBmdW5jdGlvbnMsIG5hbWVseSwgdGhvc2UgaW52b2x2ZWQgaW4gdHJhdmVyc2luZyBhbmQgcmVhZGluZyB0aGUgY2F0YWxvZzogYGhmc19jYXRfZmluZF9icmVjYCwgYGhmc19yZWFkX2lub2RlYCwgYGhmc19maWxlX2xvb2t1cGAgYW5kLCBpbXBvcnRhbnRseSwgdGhlIGZpbGVzeXN0ZW0gc2V0dXAgd2l0aCBgaGZzX2ZpbGxfc3VwZXJgLgoKVGhlIGNydWNpYWwgdGhpbmcgaGVyZSBpcyB0aGF0IEhGUyBjYW4gYmUgdXNlZCBvbiBsb29wIGRldmljZXMgb3IgaW1hZ2VzLCB3aGljaCBhcmUgY29tbW9uIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzLiBUaGlzIHZhbGlkYXRpb24gbG9naWMgbmVlZHMgdG8gYmUgZnV6emVkIGhlYXZpbHkuIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIG5ldyBjb2RlIGdyYWNlZnVsbHkgaGFuZGxlcyBtYWxmb3JtZWQgZmlsZXN5c3RlbSBpbWFnZXMgd2l0aG91dCBjcmFzaGluZyBvciBpbnRyb2R1Y2luZyBhbnkgcmVncmVzc2lvbnMuIEV4Y2VsbGVudCBwb2ludC4KCkkganVzdCBkb3VibGUtY2hlY2tlZCwgYW5kIGBIRlNfRlNgIGlzIGluZGVlZCB0aGUgb25seSByZWxldmFudCBjb25maWd1cmF0aW9uIGZsYWcuIE5vdGhpbmcgZWxzZSB0byBjb25zaWRlciB0aGVyZS4KCkFscmlnaHQsIHRoYXQmIzM5O3MgZXZlcnl0aGluZy4gSSYjMzk7bGwgZ2V0IHRoZSByZXN1bHRzIHNldC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTA6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZCYjMzQ7LAogICAgJiMzNDtoZnNfY2F0X2ZpbmRfYnJlYyYjMzQ7LAogICAgJiMzNDtoZnNfcmVhZF9pbm9kZSYjMzQ7LAogICAgJiMzNDtoZnNfZmlsZV9sb29rdXAmIzM0OywKICAgICYjMzQ7aGZzX2ZpbGxfc3VwZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBDTklEIChDYXRhbG9nIE5vZGUgSUQpIGluIHRoZSBIRlMgZmlsZXN5c3RlbSB0byBwcmV2ZW50IHByb2Nlc3NpbmcgaW52YWxpZCBjYXRhbG9nIHJlY29yZHMuIEl0IG1vZGlmaWVzIGNvcmUgSEZTIGZ1bmN0aW9ucyBsaWtlIGBoZnNfY2F0X2ZpbmRfYnJlY2AsIGBoZnNfcmVhZF9pbm9kZWAsIGBoZnNfZmlsZV9sb29rdXBgLCBhbmQgYGhmc19maWxsX3N1cGVyYC4gU2luY2UgSEZTIGNhbiBiZSBtb3VudGVkIGZyb20gbG9vcCBkZXZpY2VzIG9yIGRpc2sgaW1hZ2VzLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IHZhbGlkYXRpb24gbG9naWMgY29ycmVjdGx5IGhhbmRsZXMgbWFsZm9ybWVkIGZpbGVzeXN0ZW0gaW1hZ2VzIHdpdGhvdXQgY2F1c2luZyBjcmFzaGVzIG9yIHJlZ3Jlc3Npb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtIRlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWQmIzM0OywKICAgICYjMzQ7aGZzX2NhdF9maW5kX2JyZWMmIzM0OywKICAgICYjMzQ7aGZzX3JlYWRfaW5vZGUmIzM0OywKICAgICYjMzQ7aGZzX2ZpbGVfbG9va3VwJiMzNDssCiAgICAmIzM0O2hmc19maWxsX3N1cGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgQ05JRCAoQ2F0YWxvZyBOb2RlIElEKSBpbiB0aGUgSEZTIGZpbGVzeXN0ZW0gdG8gcHJldmVudCBwcm9jZXNzaW5nIGludmFsaWQgY2F0YWxvZyByZWNvcmRzLiBJdCBtb2RpZmllcyBjb3JlIEhGUyBmdW5jdGlvbnMgbGlrZSBgaGZzX2NhdF9maW5kX2JyZWNgLCBgaGZzX3JlYWRfaW5vZGVgLCBgaGZzX2ZpbGVfbG9va3VwYCwgYW5kIGBoZnNfZmlsbF9zdXBlcmAuIFNpbmNlIEhGUyBjYW4gYmUgbW91bnRlZCBmcm9tIGxvb3AgZGV2aWNlcyBvciBkaXNrIGltYWdlcywgdGhlc2UgY29kZSBwYXRocyBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG5ldyB2YWxpZGF0aW9uIGxvZ2ljIGNvcnJlY3RseSBoYW5kbGVzIG1hbGZvcm1lZCBmaWxlc3lzdGVtIGltYWdlcyB3aXRob3V0IGNhdXNpbmcgY3Jhc2hlcyBvciByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDEwOjE1OjQyLjg4NTk3MTA3OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyMjAyMTYyMDc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZFwiLFxuICAgIFwiaGZzX2NhdF9maW5kX2JyZWNcIixcbiAgICBcImhmc19yZWFkX2lub2RlXCIsXG4gICAgXCJoZnNfZmlsZV9sb29rdXBcIixcbiAgICBcImhmc19maWxsX3N1cGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBDTklEIChDYXRhbG9nIE5vZGUgSUQpIGluIHRoZSBIRlMgZmlsZXN5c3RlbSB0byBwcmV2ZW50IHByb2Nlc3NpbmcgaW52YWxpZCBjYXRhbG9nIHJlY29yZHMuIEl0IG1vZGlmaWVzIGNvcmUgSEZTIGZ1bmN0aW9ucyBsaWtlIGBoZnNfY2F0X2ZpbmRfYnJlY2AsIGBoZnNfcmVhZF9pbm9kZWAsIGBoZnNfZmlsZV9sb29rdXBgLCBhbmQgYGhmc19maWxsX3N1cGVyYC4gU2luY2UgSEZTIGNhbiBiZSBtb3VudGVkIGZyb20gbG9vcCBkZXZpY2VzIG9yIGRpc2sgaW1hZ2VzLCB0aGVzZSBjb2RlIHBhdGhzIGFyZSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgbmV3IHZhbGlkYXRpb24gbG9naWMgY29ycmVjdGx5IGhhbmRsZXMgbWFsZm9ybWVkIGZpbGVzeXN0ZW0gaW1hZ2VzIHdpdGhvdXQgY2F1c2luZyBjcmFzaGVzIG9yIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxMDoxNTo0Mi44ODU5Nzk0NDlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMDQ4NjY3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDkwNWU5ZGQ1OTk3ZGU2Y2E3MmMyNjNjNmQ4NjliNWVkZTU4NjkxMTVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgOCAxMDoxNTo0MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9oZnMvY2F0YWxvZy5jIGIvZnMvaGZzL2NhdGFsb2cuY1xcbmluZGV4IDFiZmEzNmQ3MWUyNDdhLi5lNjcyYTRiYTZkYzcxYSAxMDA2NDRcXG4tLS0gYS9mcy9oZnMvY2F0YWxvZy5jXFxuKysrIGIvZnMvaGZzL2NhdGFsb2cuY1xcbkBAIC0xODIsNiArMTgyLDQwIEBAIGludCBoZnNfY2F0X2tleWNtcChjb25zdCBidHJlZV9rZXkgKmtleTEsIGNvbnN0IGJ0cmVlX2tleSAqa2V5MilcXG4gXFx0XFx0XFx0ICBrZXkyLVxcdTAwM2VjYXQuQ05hbWUubmFtZSwga2V5Mi1cXHUwMDNlY2F0LkNOYW1lLmxlbik7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkKHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgdTMyIGNuaWQpXFxuK3tcXG4rXFx0aGZzX2NhdF9yZWMgcmVjO1xcbitcXHR1MzIgZm91bmRfY25pZDtcXG4rXFx0c2l6ZV90IHJlY19sZW47XFxuK1xcbitcXHRyZWNfbGVuID0gZmQtXFx1MDAzZWVudHJ5bGVuZ3RoO1xcbitcXHRpZiAocmVjX2xlbiBcXHUwMDNjPSAwIHx8IHJlY19sZW4gXFx1MDAzZSBzaXplb2YocmVjKSlcXG4rXFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcbitcXHRtZW1zZXQoXFx1MDAyNnJlYywgMCwgc2l6ZW9mKHJlYykpO1xcbitcXHRoZnNfYm5vZGVfcmVhZChmZC1cXHUwMDNlYm5vZGUsIFxcdTAwMjZyZWMsIGZkLVxcdTAwM2VlbnRyeW9mZnNldCwgcmVjX2xlbik7XFxuK1xcbitcXHRzd2l0Y2ggKHJlYy50eXBlKSB7XFxuK1xcdGNhc2UgSEZTX0NEUl9GSUw6XFxuK1xcdFxcdGlmIChyZWNfbGVuICE9IHNpemVvZihzdHJ1Y3QgaGZzX2NhdF9maWxlKSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcdFxcdGZvdW5kX2NuaWQgPSBiZTMyX3RvX2NwdShyZWMuZmlsZS5GbE51bSk7XFxuK1xcdFxcdGJyZWFrO1xcbitcXHRjYXNlIEhGU19DRFJfRElSOlxcbitcXHRcXHRpZiAocmVjX2xlbiAhPSBzaXplb2Yoc3RydWN0IGhmc19jYXRfZGlyKSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcdFxcdGZvdW5kX2NuaWQgPSBiZTMyX3RvX2NwdShyZWMuZGlyLkRpcklEKTtcXG4rXFx0XFx0YnJlYWs7XFxuK1xcdGRlZmF1bHQ6XFxuK1xcdFxcdHJldHVybiAtRUlPO1xcbitcXHR9XFxuK1xcbitcXHRpZiAoZm91bmRfY25pZCAhPSBjbmlkKVxcbitcXHRcXHRyZXR1cm4gLUVJTztcXG4rXFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiAvKiBUcnkgdG8gZ2V0IGEgY2F0YWxvZyBlbnRyeSBmb3IgZ2l2ZW4gY2F0YWxvZyBpZCAqL1xcbiAvLyBtb3ZlIHRvIHJlYWRfc3VwZXI/Pz9cXG4gaW50IGhmc19jYXRfZmluZF9icmVjKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBjbmlkLFxcbkBAIC0yMDgsNyArMjQyLDEyIEBAIGludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcXG4gXFx0XFx0cmV0dXJuIC1FSU87XFxuIFxcdH1cXG4gXFx0bWVtY3B5KGZkLVxcdTAwM2VzZWFyY2hfa2V5LVxcdTAwM2VjYXQuQ05hbWUubmFtZSwgcmVjLnRocmVhZC5DTmFtZS5uYW1lLCBsZW4pO1xcbi1cXHRyZXR1cm4gaGZzX2JyZWNfZmluZChmZCk7XFxuK1xcbitcXHRyZXMgPSBoZnNfYnJlY19maW5kKGZkKTtcXG4rXFx0aWYgKHJlcylcXG4rXFx0XFx0cmV0dXJuIHJlcztcXG4rXFxuK1xcdHJldHVybiBoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWQoZmQsIGNuaWQpO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lXFxuZGlmZiAtLWdpdCBhL2ZzL2hmcy9oZnNfZnMuaCBiL2ZzL2hmcy9oZnNfZnMuaFxcbmluZGV4IGYzNjI0NTE0ZmNiMDMwLi42NzA2MzhmMTc0MzhjZSAxMDA2NDRcXG4tLS0gYS9mcy9oZnMvaGZzX2ZzLmhcXG4rKysgYi9mcy9oZnMvaGZzX2ZzLmhcXG5AQCAtMTU1LDYgKzE1NSwyNSBAQCBleHRlcm4gaW50IGhmc19jYXRfbW92ZSh1MzIgY25pZCwgc3RydWN0IGlub2RlICpzcmNfZGlyLFxcbiBleHRlcm4gdm9pZCBoZnNfY2F0X2J1aWxkX2tleShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBidHJlZV9rZXkgKmtleSxcXG4gXFx0XFx0XFx0ICAgICAgdTMyIHBhcmVudCwgY29uc3Qgc3RydWN0IHFzdHIgKm5hbWUpO1xcbiBcXG4rLypcXG4rICogVmFsaWRhdGUgdGhlIENOSUQgb2YgYSBjYXRhbG9nIHJlY29yZC5cXG4rICovXFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBoZnNfaXNfdmFsaWRfY25pZCh1MzIgY25pZCwgdTggdHlwZSlcXG4re1xcbitcXHRpZiAobGlrZWx5KGNuaWQgXFx1MDAzZT0gSEZTX0ZJUlNUVVNFUl9DTklEKSlcXG4rXFx0XFx0cmV0dXJuIHRydWU7XFxuK1xcbitcXHRzd2l0Y2ggKGNuaWQpIHtcXG4rXFx0Y2FzZSBIRlNfUk9PVF9DTklEOlxcbitcXHRcXHRyZXR1cm4gdHlwZSA9PSBIRlNfQ0RSX0RJUjtcXG4rXFx0Y2FzZSBIRlNfRVhUX0NOSUQ6XFxuK1xcdGNhc2UgSEZTX0NBVF9DTklEOlxcbitcXHRcXHRyZXR1cm4gdHlwZSA9PSBIRlNfQ0RSX0ZJTDtcXG4rXFx0ZGVmYXVsdDpcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHR9XFxuK31cXG4rXFxuIC8qIGRpci5jICovXFxuIGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGhmc19kaXJfb3BlcmF0aW9ucztcXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIGhmc19kaXJfaW5vZGVfb3BlcmF0aW9ucztcXG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2lub2RlLmMgYi9mcy9oZnMvaW5vZGUuY1xcbmluZGV4IGFjNGE5MDU1YzVjMGVhLi5lZTEwYTkyNTdhMTM4YSAxMDA2NDRcXG4tLS0gYS9mcy9oZnMvaW5vZGUuY1xcbisrKyBiL2ZzL2hmcy9pbm9kZS5jXFxuQEAgLTM2Nyw2ICszNjcsOSBAQCBzdGF0aWMgaW50IGhmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgKmRhdGEpXFxuIFxcdHJlYyA9IGlkYXRhLVxcdTAwM2VyZWM7XFxuIFxcdHN3aXRjaCAocmVjLVxcdTAwM2V0eXBlKSB7XFxuIFxcdGNhc2UgSEZTX0NEUl9GSUw6XFxuK1xcdFxcdGlmICghaGZzX2lzX3ZhbGlkX2NuaWQoYmUzMl90b19jcHUocmVjLVxcdTAwM2VmaWxlLkZsTnVtKSwgcmVjLVxcdTAwM2V0eXBlKSlcXG4rXFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcbiBcXHRcXHRpZiAoIUhGU19JU19SU1JDKGlub2RlKSkge1xcbiBcXHRcXHRcXHRoZnNfaW5vZGVfcmVhZF9mb3JrKGlub2RlLCByZWMtXFx1MDAzZWZpbGUuRXh0UmVjLCByZWMtXFx1MDAzZWZpbGUuTGdMZW4sXFxuIFxcdFxcdFxcdFxcdFxcdCAgICByZWMtXFx1MDAzZWZpbGUuUHlMZW4sIGJlMTZfdG9fY3B1KHJlYy1cXHUwMDNlZmlsZS5DbHBTaXplKSk7XFxuQEAgLTM5MCw2ICszOTMsOSBAQCBzdGF0aWMgaW50IGhmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgKmRhdGEpXFxuIFxcdFxcdGlub2RlLVxcdTAwM2VpX21hcHBpbmctXFx1MDAzZWFfb3BzID0gXFx1MDAyNmhmc19hb3BzO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBIRlNfQ0RSX0RJUjpcXG4rXFx0XFx0aWYgKCFoZnNfaXNfdmFsaWRfY25pZChiZTMyX3RvX2NwdShyZWMtXFx1MDAzZWRpci5EaXJJRCksIHJlYy1cXHUwMDNldHlwZSkpXFxuK1xcdFxcdFxcdHJldHVybiAtRUlPO1xcbitcXG4gXFx0XFx0aW5vZGUtXFx1MDAzZWlfaW5vID0gYmUzMl90b19jcHUocmVjLVxcdTAwM2VkaXIuRGlySUQpO1xcbiBcXHRcXHRpbm9kZS1cXHUwMDNlaV9zaXplID0gYmUxNl90b19jcHUocmVjLVxcdTAwM2VkaXIuVmFsKSArIDI7XFxuIFxcdFxcdEhGU19JKGlub2RlKS1cXHUwMDNlZnNfYmxvY2tzID0gMDtcXG5AQCAtNTcxLDEyICs1NzcsMTIgQEAgc3RhdGljIHN0cnVjdCBkZW50cnkgKmhmc19maWxlX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxcbiBcXHRyZXMgPSBoZnNfYnJlY19yZWFkKFxcdTAwMjZmZCwgXFx1MDAyNnJlYywgc2l6ZW9mKHJlYykpO1xcbiBcXHRpZiAoIXJlcykge1xcbiBcXHRcXHRzdHJ1Y3QgaGZzX2lnZXRfZGF0YSBpZGF0YSA9IHsgTlVMTCwgXFx1MDAyNnJlYyB9O1xcbi1cXHRcXHRoZnNfcmVhZF9pbm9kZShpbm9kZSwgXFx1MDAyNmlkYXRhKTtcXG4rXFx0XFx0cmVzID0gaGZzX3JlYWRfaW5vZGUoaW5vZGUsIFxcdTAwMjZpZGF0YSk7XFxuIFxcdH1cXG4gXFx0aGZzX2ZpbmRfZXhpdChcXHUwMDI2ZmQpO1xcbi1cXHRpZiAocmVzKSB7XFxuK1xcdGlmIChyZXMgfHwgaXNfYmFkX2lub2RlKGlub2RlKSkge1xcbiBcXHRcXHRpcHV0KGlub2RlKTtcXG4tXFx0XFx0cmV0dXJuIEVSUl9QVFIocmVzKTtcXG4rXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTyk7XFxuIFxcdH1cXG4gXFx0SEZTX0koaW5vZGUpLVxcdTAwM2Vyc3JjX2lub2RlID0gZGlyO1xcbiBcXHRIRlNfSShkaXIpLVxcdTAwM2Vyc3JjX2lub2RlID0gaW5vZGU7XFxuZGlmZiAtLWdpdCBhL2ZzL2hmcy9zdXBlci5jIGIvZnMvaGZzL3N1cGVyLmNcXG5pbmRleCBhNDY2YzQwMWY2YmIyNi4uOThiODA3OTViY2RlOWEgMTAwNjQ0XFxuLS0tIGEvZnMvaGZzL3N1cGVyLmNcXG4rKysgYi9mcy9oZnMvc3VwZXIuY1xcbkBAIC0zNzIsNiArMzcyLDExIEBAIHN0YXRpYyBpbnQgaGZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbiBcXHRpZiAoIXJvb3RfaW5vZGUpXFxuIFxcdFxcdGdvdG8gYmFpbF9ub19yb290O1xcbiBcXG4rXFx0aWYgKGlzX2JhZF9pbm9kZShyb290X2lub2RlKSkge1xcbitcXHRcXHRpcHV0KHJvb3RfaW5vZGUpO1xcbitcXHRcXHRnb3RvIGJhaWxfbm9fcm9vdDtcXG4rXFx0fVxcbitcXG4gXFx0c2V0X2RlZmF1bHRfZF9vcChzYiwgXFx1MDAyNmhmc19kZW50cnlfb3BlcmF0aW9ucyk7XFxuIFxcdHJlcyA9IC1FTk9NRU07XFxuIFxcdHNiLVxcdTAwM2VzX3Jvb3QgPSBkX21ha2Vfcm9vdChyb290X2lub2RlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTA6MTU6NDMuNjk3NDM2MDQ3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTM5MDY4NDcwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIRlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRcIixcbiAgICBcImhmc19jYXRfZmluZF9icmVjXCIsXG4gICAgXCJoZnNfcmVhZF9pbm9kZVwiLFxuICAgIFwiaGZzX2ZpbGVfbG9va3VwXCIsXG4gICAgXCJoZnNfZmlsbF9zdXBlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgQ05JRCAoQ2F0YWxvZyBOb2RlIElEKSBpbiB0aGUgSEZTIGZpbGVzeXN0ZW0gdG8gcHJldmVudCBwcm9jZXNzaW5nIGludmFsaWQgY2F0YWxvZyByZWNvcmRzLiBJdCBtb2RpZmllcyBjb3JlIEhGUyBmdW5jdGlvbnMgbGlrZSBgaGZzX2NhdF9maW5kX2JyZWNgLCBgaGZzX3JlYWRfaW5vZGVgLCBgaGZzX2ZpbGVfbG9va3VwYCwgYW5kIGBoZnNfZmlsbF9zdXBlcmAuIFNpbmNlIEhGUyBjYW4gYmUgbW91bnRlZCBmcm9tIGxvb3AgZGV2aWNlcyBvciBkaXNrIGltYWdlcywgdGhlc2UgY29kZSBwYXRocyBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG5ldyB2YWxpZGF0aW9uIGxvZ2ljIGNvcnJlY3RseSBoYW5kbGVzIG1hbGZvcm1lZCBmaWxlc3lzdGVtIGltYWdlcyB3aXRob3V0IGNhdXNpbmcgY3Jhc2hlcyBvciByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5MDVlOWRkNTk5N2RlNmNhNzJjMjYzYzZkODY5YjVlZGU1ODY5MTE1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgOCAxMDoxNTo0MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2hmcy9jYXRhbG9nLmMgYi9mcy9oZnMvY2F0YWxvZy5jXG5pbmRleCAxYmZhMzZkNzFlMjQ3YS4uZTY3MmE0YmE2ZGM3MWEgMTAwNjQ0XG4tLS0gYS9mcy9oZnMvY2F0YWxvZy5jXG4rKysgYi9mcy9oZnMvY2F0YWxvZy5jXG5AQCAtMTgyLDYgKzE4Miw0MCBAQCBpbnQgaGZzX2NhdF9rZXljbXAoY29uc3QgYnRyZWVfa2V5ICprZXkxLCBjb25zdCBidHJlZV9rZXkgKmtleTIpXG4gXHRcdFx0ICBrZXkyLVx1MDAzZWNhdC5DTmFtZS5uYW1lLCBrZXkyLVx1MDAzZWNhdC5DTmFtZS5sZW4pO1xuIH1cbiBcbitzdGF0aWMgaW50IGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZChzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQsIHUzMiBjbmlkKVxuK3tcbitcdGhmc19jYXRfcmVjIHJlYztcbitcdHUzMiBmb3VuZF9jbmlkO1xuK1x0c2l6ZV90IHJlY19sZW47XG4rXG4rXHRyZWNfbGVuID0gZmQtXHUwMDNlZW50cnlsZW5ndGg7XG4rXHRpZiAocmVjX2xlbiBcdTAwM2M9IDAgfHwgcmVjX2xlbiBcdTAwM2Ugc2l6ZW9mKHJlYykpXG4rXHRcdHJldHVybiAtRUlPO1xuK1xuK1x0bWVtc2V0KFx1MDAyNnJlYywgMCwgc2l6ZW9mKHJlYykpO1xuK1x0aGZzX2Jub2RlX3JlYWQoZmQtXHUwMDNlYm5vZGUsIFx1MDAyNnJlYywgZmQtXHUwMDNlZW50cnlvZmZzZXQsIHJlY19sZW4pO1xuK1xuK1x0c3dpdGNoIChyZWMudHlwZSkge1xuK1x0Y2FzZSBIRlNfQ0RSX0ZJTDpcbitcdFx0aWYgKHJlY19sZW4gIT0gc2l6ZW9mKHN0cnVjdCBoZnNfY2F0X2ZpbGUpKVxuK1x0XHRcdHJldHVybiAtRUlPO1xuK1x0XHRmb3VuZF9jbmlkID0gYmUzMl90b19jcHUocmVjLmZpbGUuRmxOdW0pO1xuK1x0XHRicmVhaztcbitcdGNhc2UgSEZTX0NEUl9ESVI6XG4rXHRcdGlmIChyZWNfbGVuICE9IHNpemVvZihzdHJ1Y3QgaGZzX2NhdF9kaXIpKVxuK1x0XHRcdHJldHVybiAtRUlPO1xuK1x0XHRmb3VuZF9jbmlkID0gYmUzMl90b19jcHUocmVjLmRpci5EaXJJRCk7XG4rXHRcdGJyZWFrO1xuK1x0ZGVmYXVsdDpcbitcdFx0cmV0dXJuIC1FSU87XG4rXHR9XG4rXG4rXHRpZiAoZm91bmRfY25pZCAhPSBjbmlkKVxuK1x0XHRyZXR1cm4gLUVJTztcbitcbitcdHJldHVybiAwO1xuK31cbitcbiAvKiBUcnkgdG8gZ2V0IGEgY2F0YWxvZyBlbnRyeSBmb3IgZ2l2ZW4gY2F0YWxvZyBpZCAqL1xuIC8vIG1vdmUgdG8gcmVhZF9zdXBlcj8/P1xuIGludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcbkBAIC0yMDgsNyArMjQyLDEyIEBAIGludCBoZnNfY2F0X2ZpbmRfYnJlYyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcbiBcdFx0cmV0dXJuIC1FSU87XG4gXHR9XG4gXHRtZW1jcHkoZmQtXHUwMDNlc2VhcmNoX2tleS1cdTAwM2VjYXQuQ05hbWUubmFtZSwgcmVjLnRocmVhZC5DTmFtZS5uYW1lLCBsZW4pO1xuLVx0cmV0dXJuIGhmc19icmVjX2ZpbmQoZmQpO1xuK1xuK1x0cmVzID0gaGZzX2JyZWNfZmluZChmZCk7XG4rXHRpZiAocmVzKVxuK1x0XHRyZXR1cm4gcmVzO1xuK1xuK1x0cmV0dXJuIGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZChmZCwgY25pZCk7XG4gfVxuIFxuIHN0YXRpYyBpbmxpbmVcbmRpZmYgLS1naXQgYS9mcy9oZnMvaGZzX2ZzLmggYi9mcy9oZnMvaGZzX2ZzLmhcbmluZGV4IGYzNjI0NTE0ZmNiMDMwLi42NzA2MzhmMTc0MzhjZSAxMDA2NDRcbi0tLSBhL2ZzL2hmcy9oZnNfZnMuaFxuKysrIGIvZnMvaGZzL2hmc19mcy5oXG5AQCAtMTU1LDYgKzE1NSwyNSBAQCBleHRlcm4gaW50IGhmc19jYXRfbW92ZSh1MzIgY25pZCwgc3RydWN0IGlub2RlICpzcmNfZGlyLFxuIGV4dGVybiB2b2lkIGhmc19jYXRfYnVpbGRfa2V5KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGJ0cmVlX2tleSAqa2V5LFxuIFx0XHRcdCAgICAgIHUzMiBwYXJlbnQsIGNvbnN0IHN0cnVjdCBxc3RyICpuYW1lKTtcbiBcbisvKlxuKyAqIFZhbGlkYXRlIHRoZSBDTklEIG9mIGEgY2F0YWxvZyByZWNvcmQuXG4rICovXG4rc3RhdGljIGlubGluZSBib29sIGhmc19pc192YWxpZF9jbmlkKHUzMiBjbmlkLCB1OCB0eXBlKVxuK3tcbitcdGlmIChsaWtlbHkoY25pZCBcdTAwM2U9IEhGU19GSVJTVFVTRVJfQ05JRCkpXG4rXHRcdHJldHVybiB0cnVlO1xuK1xuK1x0c3dpdGNoIChjbmlkKSB7XG4rXHRjYXNlIEhGU19ST09UX0NOSUQ6XG4rXHRcdHJldHVybiB0eXBlID09IEhGU19DRFJfRElSO1xuK1x0Y2FzZSBIRlNfRVhUX0NOSUQ6XG4rXHRjYXNlIEhGU19DQVRfQ05JRDpcbitcdFx0cmV0dXJuIHR5cGUgPT0gSEZTX0NEUl9GSUw7XG4rXHRkZWZhdWx0OlxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4rfVxuK1xuIC8qIGRpci5jICovXG4gZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgaGZzX2Rpcl9vcGVyYXRpb25zO1xuIGV4dGVybiBjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBoZnNfZGlyX2lub2RlX29wZXJhdGlvbnM7XG5kaWZmIC0tZ2l0IGEvZnMvaGZzL2lub2RlLmMgYi9mcy9oZnMvaW5vZGUuY1xuaW5kZXggYWM0YTkwNTVjNWMwZWEuLmVlMTBhOTI1N2ExMzhhIDEwMDY0NFxuLS0tIGEvZnMvaGZzL2lub2RlLmNcbisrKyBiL2ZzL2hmcy9pbm9kZS5jXG5AQCAtMzY3LDYgKzM2Nyw5IEBAIHN0YXRpYyBpbnQgaGZzX3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCAqZGF0YSlcbiBcdHJlYyA9IGlkYXRhLVx1MDAzZXJlYztcbiBcdHN3aXRjaCAocmVjLVx1MDAzZXR5cGUpIHtcbiBcdGNhc2UgSEZTX0NEUl9GSUw6XG4rXHRcdGlmICghaGZzX2lzX3ZhbGlkX2NuaWQoYmUzMl90b19jcHUocmVjLVx1MDAzZWZpbGUuRmxOdW0pLCByZWMtXHUwMDNldHlwZSkpXG4rXHRcdFx0cmV0dXJuIC1FSU87XG4rXG4gXHRcdGlmICghSEZTX0lTX1JTUkMoaW5vZGUpKSB7XG4gXHRcdFx0aGZzX2lub2RlX3JlYWRfZm9yayhpbm9kZSwgcmVjLVx1MDAzZWZpbGUuRXh0UmVjLCByZWMtXHUwMDNlZmlsZS5MZ0xlbixcbiBcdFx0XHRcdFx0ICAgIHJlYy1cdTAwM2VmaWxlLlB5TGVuLCBiZTE2X3RvX2NwdShyZWMtXHUwMDNlZmlsZS5DbHBTaXplKSk7XG5AQCAtMzkwLDYgKzM5Myw5IEBAIHN0YXRpYyBpbnQgaGZzX3JlYWRfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSwgdm9pZCAqZGF0YSlcbiBcdFx0aW5vZGUtXHUwMDNlaV9tYXBwaW5nLVx1MDAzZWFfb3BzID0gXHUwMDI2aGZzX2FvcHM7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBIRlNfQ0RSX0RJUjpcbitcdFx0aWYgKCFoZnNfaXNfdmFsaWRfY25pZChiZTMyX3RvX2NwdShyZWMtXHUwMDNlZGlyLkRpcklEKSwgcmVjLVx1MDAzZXR5cGUpKVxuK1x0XHRcdHJldHVybiAtRUlPO1xuK1xuIFx0XHRpbm9kZS1cdTAwM2VpX2lubyA9IGJlMzJfdG9fY3B1KHJlYy1cdTAwM2VkaXIuRGlySUQpO1xuIFx0XHRpbm9kZS1cdTAwM2VpX3NpemUgPSBiZTE2X3RvX2NwdShyZWMtXHUwMDNlZGlyLlZhbCkgKyAyO1xuIFx0XHRIRlNfSShpbm9kZSktXHUwMDNlZnNfYmxvY2tzID0gMDtcbkBAIC01NzEsMTIgKzU3NywxMiBAQCBzdGF0aWMgc3RydWN0IGRlbnRyeSAqaGZzX2ZpbGVfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG4gXHRyZXMgPSBoZnNfYnJlY19yZWFkKFx1MDAyNmZkLCBcdTAwMjZyZWMsIHNpemVvZihyZWMpKTtcbiBcdGlmICghcmVzKSB7XG4gXHRcdHN0cnVjdCBoZnNfaWdldF9kYXRhIGlkYXRhID0geyBOVUxMLCBcdTAwMjZyZWMgfTtcbi1cdFx0aGZzX3JlYWRfaW5vZGUoaW5vZGUsIFx1MDAyNmlkYXRhKTtcbitcdFx0cmVzID0gaGZzX3JlYWRfaW5vZGUoaW5vZGUsIFx1MDAyNmlkYXRhKTtcbiBcdH1cbiBcdGhmc19maW5kX2V4aXQoXHUwMDI2ZmQpO1xuLVx0aWYgKHJlcykge1xuK1x0aWYgKHJlcyB8fCBpc19iYWRfaW5vZGUoaW5vZGUpKSB7XG4gXHRcdGlwdXQoaW5vZGUpO1xuLVx0XHRyZXR1cm4gRVJSX1BUUihyZXMpO1xuK1x0XHRyZXR1cm4gRVJSX1BUUigtRUlPKTtcbiBcdH1cbiBcdEhGU19JKGlub2RlKS1cdTAwM2Vyc3JjX2lub2RlID0gZGlyO1xuIFx0SEZTX0koZGlyKS1cdTAwM2Vyc3JjX2lub2RlID0gaW5vZGU7XG5kaWZmIC0tZ2l0IGEvZnMvaGZzL3N1cGVyLmMgYi9mcy9oZnMvc3VwZXIuY1xuaW5kZXggYTQ2NmM0MDFmNmJiMjYuLjk4YjgwNzk1YmNkZTlhIDEwMDY0NFxuLS0tIGEvZnMvaGZzL3N1cGVyLmNcbisrKyBiL2ZzL2hmcy9zdXBlci5jXG5AQCAtMzcyLDYgKzM3MiwxMSBAQCBzdGF0aWMgaW50IGhmc19maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcbiBcdGlmICghcm9vdF9pbm9kZSlcbiBcdFx0Z290byBiYWlsX25vX3Jvb3Q7XG4gXG4rXHRpZiAoaXNfYmFkX2lub2RlKHJvb3RfaW5vZGUpKSB7XG4rXHRcdGlwdXQocm9vdF9pbm9kZSk7XG4rXHRcdGdvdG8gYmFpbF9ub19yb290O1xuK1x0fVxuK1xuIFx0c2V0X2RlZmF1bHRfZF9vcChzYiwgXHUwMDI2aGZzX2RlbnRyeV9vcGVyYXRpb25zKTtcbiBcdHJlcyA9IC1FTk9NRU07XG4gXHRzYi1cdTAwM2VzX3Jvb3QgPSBkX21ha2Vfcm9vdChyb290X2lub2RlKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDEwOjE1OjQzLjY5NzQzODk4N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIwOTYyNTQzNTM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEhGUyBGaWxlc3lzdGVtIFBhdGNoKipcblxuT2theSwgc28gd2UndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0J3MgcG9raW5nIGFyb3VuZCBpbiB0aGUgSEZTIGZpbGVzeXN0ZW0gY29kZSB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbC4gU3BlY2lmaWNhbGx5LCBpdCdzIGludHJvZHVjaW5nIENOSUQgdmFsaWRhdGlvbiDigJMgdGhhdCdzIGEgZ29vZCBmaXJzdCBzdGVwIGZvciBoYXJkZW5pbmcsIGNoZWNraW5nIHRoZSBDYXRhbG9nIE5vZGUgSUQgaW4gYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAgYW5kIGBoZnNfaXNfdmFsaWRfY25pZGAuIEl0J3MgYWxzbyB0b3VjaGluZyBgaGZzX2NhdF9maW5kX2JyZWNgLCBgaGZzX3JlYWRfaW5vZGVgLCBgaGZzX2ZpbGVfbG9va3VwYCwgYW5kIGBoZnNfZmlsbF9zdXBlcmAsIHNvIHRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNvc21ldGljIG9uZS4gR2l2ZW4gdGhhdCB0aGUgSEZTIGZpbGVzeXN0ZW0gY2FuIGJlIG1vdW50ZWQgZnJvbSBsb29wIGRldmljZXMgb3IgZGlzayBpbWFnZXMsIHRoYXQgbWVhbnMgaXQncyBhY2Nlc3NpYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIFRoYXQncyBhIGh1Z2UgZmxhZyBmb3IgZnV6emluZyEgSGlnaCByZXdhcmQgcG90ZW50aWFsLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZmlndXJlIG91dCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbi4gSSdsbCBuZWVkIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBvcHRpb25zIEkgbmVlZCB0byBlbmFibGUgdG8gYnVpbGQgdGhpcyBjb2RlLiBTaW5jZSB0aGUgY29kZSBpcyBpbiBgZnMvaGZzL2AsIEkgc2hvdWxkIGNoZWNrIHRoZSByZWxldmFudCBgS2NvbmZpZ2AgZmlsZSBpbiB0aGF0IGRpcmVjdG9yeS4gSSdsbCBuZWVkIHRvIGtub3cgd2hhdCBjb25maWcgb3B0aW9ucyBlbmFibGUgSEZTIHN1cHBvcnQgc28gSSBjYW4gZ2V0IGEgYnVpbGQgZW52aXJvbm1lbnQgdGhhdCBhbGxvd3MgbWUgdG8gdGVzdCB0aGVzZSBjaGFuZ2VzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zIHRvIHRlc3QgYW5kIGZ1enogdGhlc2UgY2hhbmdlcyB0aG9yb3VnaGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjEyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTA6MTY6MDQuNjU5OTg3MTQ0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MjExMzA2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSEZTX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2hmcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2hmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvaGZzL0tjb25maWc6Mjpjb25maWcgSEZTX0ZTXFxuZnMvaGZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiQXBwbGUgTWFjaW50b3NoIGZpbGUgc3lzdGVtIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDEwOjE2OjA1LjIwMjEwNzk0MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1OTEzMzE3MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkhGUyBGaWxlIFN5c3RlbSBDTklEIFZhbGlkYXRpb24gQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSBIRlMgZmlsZSBzeXN0ZW0gY29kZSwgc3BlY2lmaWNhbGx5IGBmcy9oZnMvY2F0YWxvZy5jYCwgYGZzL2hmcy9oZnNfZnMuaGAsIGBmcy9oZnMvaW5vZGUuY2AsIGFuZCBgZnMvaGZzL3N1cGVyLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCBhZGRpbmcgdmFsaWRhdGlvbiBmb3IgQ2F0YWxvZyBOb2RlIElEcyAoQ05JRHMpIHdpdGhpbiB0aGUgSEZTIHN0cnVjdHVyZS4gVGhpcyBpcyBnb29kOyBDTklEIHZhbGlkYXRpb24gaXMgYSBjcnVjaWFsIHN0ZXAgZm9yIGZpbGUgc3lzdGVtIGludGVncml0eSwgYW5kIEknbGwgd2FudCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gdGhpcy5cblxuSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiwgYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAsIGRlZmluZWQgaW4gYGZzL2hmcy9jYXRhbG9nLmNgLCBhbmQgYGhmc19pc192YWxpZF9jbmlkYCwgd2hpY2ggaXMgYSBoZWxwZXIgZGVmaW5lZCBpbiBgZnMvaGZzL2hmc19mcy5oYC4gYGhmc19yZWFkX2lub2RlYCB3aXRoaW4gYGZzL2hmcy9pbm9kZS5jYCBoYXMgYmVlbiB1cGRhdGVkIHRvIGluY29ycG9yYXRlIHRoZSBDTklEIHZhbGlkYXRpb24uIEFkZGl0aW9uYWxseSwgYGhmc19maWxsX3N1cGVyYCBpbiBgZnMvaGZzL3N1cGVyLmNgIG5vdyBpbmNsdWRlcyBhIGNoZWNrIGZvciBgaXNfYmFkX2lub2RlKHJvb3RfaW5vZGUpYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNsZWFudXAsIGFuZCB0aGF0IG1lYW5zIGl0J3MgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIFdlJ2xsIGRlZmluaXRlbHkgbmVlZCB0byBlbmFibGUgYEhGU19GU2AgaW4gdGhlIGNvbmZpZyB0byB0ZXN0IHRoaXMuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpZGVudGlmeSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHRvIHBheSBhdHRlbnRpb24gdG8uIE9idmlvdXNseSwgYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAgYW5kIGBoZnNfaXNfdmFsaWRfY25pZGAgc3RhbmQgb3V0LiBUaGUgb3RoZXIgZnVuY3Rpb25zIHRoYXQgcGxheSBhIHJvbGUgaW4gdGhpcyBjaGFuZ2UgYXJlOiBgaGZzX2NhdF9maW5kX2JyZWNgLCBgaGZzX3JlYWRfaW5vZGVgLCBgaGZzX2ZpbGVfbG9va3VwYCwgYW5kIGBoZnNfZmlsbF9zdXBlcmAuXG5cbkxldCdzIGNoZWNrIHRoZSBjYWxsIGZsb3cgZm9yIHJlYWNoYWJpbGl0eS4gYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAgaXMgY2FsbGVkIGZyb20gYGhmc19jYXRfZmluZF9icmVjYCwgd2hpY2ggaXMsIGluIHR1cm4sIGNhbGxlZCBmcm9tIGBoZnNfaWdldGAuIGBoZnNfaWdldGAgY29tZXMgZnJvbSBgaGZzX2xvb2t1cGAgZHVyaW5nIHBhdGggcmVzb2x1dGlvbi4gYGhmc19pc192YWxpZF9jbmlkYCBpcyBjYWxsZWQgZnJvbSBgaGZzX3JlYWRfaW5vZGVgLiBgaGZzX3JlYWRfaW5vZGVgIGlzIGNhbGxlZCBmcm9tIGBoZnNfaWdldGAgYW5kIGBoZnNfZmlsZV9sb29rdXBgLiBgaGZzX2ZpbGxfc3VwZXJgIGlzIGNhbGxlZCBkdXJpbmcgdGhlIG1vdW50IG9wZXJhdGlvbi5cblxuT2theSwgbGV0J3MgcmVmaW5lIHRoZSBsaXN0LiBXaGlsZSBgaGZzX2lzX3ZhbGlkX2NuaWRgIGlzIGlubGluZSwgc28gaXQgbWlnaHQgYmUgaW5saW5lZC4gYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAgaXMgc3RhdGljLCBzbyBJIHdpbGwgaGF2ZSB0byBpbnZlc3RpZ2F0ZSB3aGV0aGVyIHRoZSBjb21waWxlciBpbmxpbmVzIGl0LiBgaGZzX2NhdF9maW5kX2JyZWNgIGlzIGdsb2JhbCwgd2hpY2ggaXMgZ29vZC4gYGhmc19yZWFkX2lub2RlYCwgYGhmc19maWxlX2xvb2t1cGAsIGFuZCBgaGZzX2ZpbGxfc3VwZXJgIGFyZSBhbGwgc3RhdGljLiBHaXZlbiBhbGwgb2YgdGhpcywgbXkgcHJpbWFyeSBmb2N1cyBzeW1ib2xzIGZvciBmdXp6aW5nIGFuZCBhbmFseXNpcyB3aWxsIGJlIGBoZnNfY2F0X2ZpbmRfYnJlY2AsIGBoZnNfcmVhZF9pbm9kZWAsIGBoZnNfZmlsZV9sb29rdXBgLCBhbmQgYGhmc19maWxsX3N1cGVyYC4gSSdsbCBoYXZlIHRvIGludmVzdGlnYXRlIHdoZXRoZXIgYGhmc19jYXRfdmFsaWRhdGVfZm91bmRfY25pZGAgaXMgaW5saW5lZCwgYnV0IHdpbGwgc3RhcnQgZnV6emluZyBvdGhlciBmdW5jdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMTQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTA6MTY6MzEuMTE1NDMxMjIxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2NTcxNjcxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJoZnNfcmVhZF9pbm9kZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9oZnMvaW5vZGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9oZnMvaW5vZGUuYz0zMjU9c3RhdGljIGludCBoZnNfdGVzdF9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCB2b2lkICpkYXRhKVxcbi0tXFxuZnMvaGZzL2lub2RlLmMtMzQyLS8qXFxuZnMvaGZzL2lub2RlLmM6MzQzOiAqIGhmc19yZWFkX2lub2RlXFxuZnMvaGZzL2lub2RlLmMtMzQ0LSAqL1xcbmZzL2hmcy9pbm9kZS5jOjM0NTpzdGF0aWMgaW50IGhmc19yZWFkX2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHZvaWQgKmRhdGEpXFxuZnMvaGZzL2lub2RlLmMtMzQ2LXtcXG4tLVxcbmZzL2hmcy9pbm9kZS5jPTQyNT1zdHJ1Y3QgaW5vZGUgKmhmc19pZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBoZnNfY2F0X2tleSAqa2V5LCBoZnNfY2F0X3JlYyAqcmVjKVxcbi0tXFxuZnMvaGZzL2lub2RlLmMtNDQwLVxcdH1cXG5mcy9oZnMvaW5vZGUuYzo0NDE6XFx0aW5vZGUgPSBpZ2V0NV9sb2NrZWQoc2IsIGNuaWQsIGhmc190ZXN0X2lub2RlLCBoZnNfcmVhZF9pbm9kZSwgXFx1MDAyNmRhdGEpO1xcbmZzL2hmcy9pbm9kZS5jLTQ0Mi1cXHRpZiAoaW5vZGUgXFx1MDAyNlxcdTAwMjYgKGlub2RlX3N0YXRlX3JlYWRfb25jZShpbm9kZSkgXFx1MDAyNiBJX05FVykpXFxuLS1cXG5mcy9oZnMvaW5vZGUuYz01NTI9c3RhdGljIHN0cnVjdCBkZW50cnkgKmhmc19maWxlX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxcbi0tXFxuZnMvaGZzL2lub2RlLmMtNTc5LVxcdFxcdHN0cnVjdCBoZnNfaWdldF9kYXRhIGlkYXRhID0geyBOVUxMLCBcXHUwMDI2cmVjIH07XFxuZnMvaGZzL2lub2RlLmM6NTgwOlxcdFxcdHJlcyA9IGhmc19yZWFkX2lub2RlKGlub2RlLCBcXHUwMDI2aWRhdGEpO1xcbmZzL2hmcy9pbm9kZS5jLTU4MS1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDEwOjE2OjMxLjY4MTE2Mzg1M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczNjY4MTE5NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipBbmFseXppbmcgUG90ZW50aWFsIEZ1bmN0aW9uIElubGluaW5nIGluIHRoZSBIRlMgRmlsZXN5c3RlbSoqXG5cbkFscmlnaHQsIEknbSBsb29raW5nIGF0IHRoaXMgSEZTIGNvZGUgYW5kIHRyeWluZyB0byBvcHRpbWl6ZS4gYGhmc19yZWFkX2lub2RlYCBpcyBkZWNsYXJlZCBgc3RhdGljYCwgd2hpY2ggaXMgZ3JlYXQgZm9yIHNjb3BpbmcsIGJ1dCB0aGUgZmFjdCB0aGF0IGl0J3MgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciB0byBgaWdldDVfbG9ja2VkYCBwcmV0dHkgbXVjaCBraWxscyBhbnkgY2hhbmNlIG9mIGlubGluaW5nLiBUaGUgY29tcGlsZXIncyBnb2luZyB0byBoYXZlIHRvIHRyZWF0IGl0IGxpa2UgYW4gZXh0ZXJuYWwgZnVuY3Rpb24gY2FsbCwgc2luY2UgdGhlIHRhcmdldCBvZiB0aGUgcG9pbnRlciBjYW4gdmFyeS4gTm8gZGljZSB0aGVyZS5cblxuTm93LCBgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkYCBpcyBhbHNvIGBzdGF0aWNgLCBhbmQgdGhlIGdvb2QgbmV3cyBpcyBpdCdzIG9ubHkgY2FsbGVkIG9uY2UsIGFuZCB0aGF0J3Mgd2l0aGluIGBoZnNfY2F0X2ZpbmRfYnJlY2AuIFRoYXQncyBhIHN0cm9uZyBpbmRpY2F0b3IgdGhhdCB0aGUgY29tcGlsZXIgKmNvdWxkKiBwb3RlbnRpYWxseSBpbmxpbmUgaXQuIEl0J3MgYSBwcmltZSBjYW5kaWRhdGUgZm9yIG9wdGltaXphdGlvbiwgYXNzdW1pbmcgdGhlIGZ1bmN0aW9uIGlzbid0IHRvbyBsYXJnZSBvciBjb21wbGV4LiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBjb250ZXh0LCBidXQgaXQgbG9va3MgcHJvbWlzaW5nLlxuXG5GaW5hbGx5LCBgaGZzX2ZpbGVfbG9va3VwYCBpcyBhbHNvIGBzdGF0aWNgLi4uICpidXQqIGl0IGxvb2tzIGxpa2UgaXQncyB1c2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciB3aXRoaW4gdGhlIGBpbm9kZV9vcGVyYXRpb25zYCBzdHJ1Y3R1cmUuIEhtbSwgdGhhdCdzIGEga2V5IGRldGFpbC4gSSdtIGdvaW5nIHRvIGhhdmUgdG8gdmVyaWZ5ICpleGFjdGx5KiBob3cgaXQncyB1c2VkIHdpdGhpbiB0aGF0IHN0cnVjdHVyZS4gSWYgaXQncyB1c2VkIGluZGlyZWN0bHkgdGhyb3VnaCBhIHZpcnR1YWwgZnVuY3Rpb24gdGFibGUgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGlubGluaW5nIGlzIGxpa2VseSBvZmYgdGhlIHRhYmxlLiBMZXQgbWUgZGl2ZSBpbnRvIHRoYXQgYGlub2RlX29wZXJhdGlvbnNgIHN0cnVjdHVyZSB0byBjb25maXJtLiBJdCdzIGdvaW5nIHRvIGRlcGVuZCBvbiBob3cgdGhlIHZmcyBsYXllciBhY3R1YWxseSBjYWxscyBpdCwgYW5kIHdoZXRoZXIgaXQgY2FuIGRldmlydHVhbGl6ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjIxNCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxMDoxNjozOS4wNDc5ODA1OTVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1NjAyNzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhmc19maWxlX2xvb2t1cFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9oZnMvaW5vZGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9oZnMvaW5vZGUuYz00NTk9aW50IGhmc193cml0ZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYylcXG4tLVxcbmZzL2hmcy9pbm9kZS5jLTU1MS1cXG5mcy9oZnMvaW5vZGUuYzo1NTI6c3RhdGljIHN0cnVjdCBkZW50cnkgKmhmc19maWxlX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxcbmZzL2hmcy9pbm9kZS5jLTU1My1cXHRcXHRcXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpXFxuLS1cXG5mcy9oZnMvaW5vZGUuYz03MzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIGhmc19maWxlX2lub2RlX29wZXJhdGlvbnMgPSB7XFxuZnMvaGZzL2lub2RlLmM6NzM1OlxcdC5sb29rdXBcXHRcXHQ9IGhmc19maWxlX2xvb2t1cCxcXG5mcy9oZnMvaW5vZGUuYy03MzYtXFx0LnNldGF0dHJcXHQ9IGhmc19pbm9kZV9zZXRhdHRyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxMDoxNjozOS4xNzM1OTE1MjZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3ODIwODIyNzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipIRlMgRmlsZXN5c3RlbSBNb2R1bGUgQXJjaGl0ZWN0dXJlKipcblxuUmlnaHQsIHNvIEknbSBpbW1lZGlhdGVseSB0aGlua2luZyBhYm91dCBob3cgdGhlIEhGUyBmaWxlc3lzdGVtIGlzIHN0cnVjdHVyZWQgaW4gdGhlIGtlcm5lbC4gSSByZW1lbWJlciBjbGVhcmx5IHRoYXQgdGhlIGBoZnNfZmlsZV9sb29rdXBgIGZ1bmN0aW9uIHBsYXlzIGEga2V5IHJvbGUgd2l0aGluIHRoZSBgaW5vZGVfb3BlcmF0aW9uc2Agc3RydWN0dXJlLiBJdCdzIHRoYXQgZGlyZWN0IGxpbmsgdGhhdCBjb25uZWN0cyB0aGUgZmlsZXN5c3RlbSdzIGRpcmVjdG9yeSB0cmF2ZXJzYWwgbG9naWMgdG8gdGhlIGluLW1lbW9yeSByZXByZXNlbnRhdGlvbiBvZiBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgKHRoZSBpbm9kZXMpLiBNYWtlcyBwZXJmZWN0IHNlbnNlOyB0aGF0J3Mgd2hlcmUgeW91J2QgZXhwZWN0IHRvIGZpbmQgdGhlIGxvb2t1cCBmdW5jdGlvbmFsaXR5LlxuXG5BbmQgdGhlbiBJJ20gYWxzbyByZWNhbGxpbmcgYGhmc19maWxsX3N1cGVyYC4gVGhpcyBvbmUncyBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggaXMgdXNlZnVsIHRvIGtlZXAgaXQgY29udGFpbmVkLCBhbmQgSSdtIHByZXR0eSBjZXJ0YWluIGl0J3MgdGlnaHRseSBib3VuZCB0byB0aGUgZmlsZXN5c3RlbSBtb3VudGluZyBwcm9jZXNzLiBUaGF0IHdvdWxkIGxpa2VseSBiZSB3aXRoaW4gdGhlIGBmc19jb250ZXh0X29wZXJhdGlvbnNgIHN0cnVjdHVyZSwgb3Igc29tZXdoZXJlIHNpbWlsYXIsIHdoZXJlIHRoZSBmaWxlc3lzdGVtLXNwZWNpZmljIGRldGFpbHMgb2YgY3JlYXRpbmcgdGhlIHN1cGVyYmxvY2sgYW5kIGluaXRpYWxpemluZyB0aGUgZmlsZXN5c3RlbSdzIG1ldGFkYXRhIGFyZSBoYW5kbGVkLiBHb29kLCB0aGlzIHNvbGlkaWZpZXMgdGhlIHN0cnVjdHVyYWwgb3ZlcnZpZXcgb2YgaG93IHRoZSBIRlMgbW9kdWxlIGlzIG9wZXJhdGluZyBpbiB0aGUgTGludXgga2VybmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTEyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTA6MTY6NDYuOTk0NDE3Mzc4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDI2NzUyOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGZzX2ZpbGxfc3VwZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaGZzL3N1cGVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaGZzL3N1cGVyLmM9MjIwPXN0YXRpYyBpbnQgaGZzX3BhcnNlX3BhcmFtKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IGZzX3BhcmFtZXRlciAqcGFyYW0pXFxuLS1cXG5mcy9oZnMvc3VwZXIuYy0zMTUtICovXFxuZnMvaGZzL3N1cGVyLmM6MzE2OnN0YXRpYyBpbnQgaGZzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbmZzL2hmcy9zdXBlci5jLTMxNy17XFxuLS1cXG5mcy9oZnMvc3VwZXIuYz0zOTg9c3RhdGljIGludCBoZnNfZ2V0X3RyZWUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbmZzL2hmcy9zdXBlci5jLTM5OS17XFxuZnMvaGZzL3N1cGVyLmM6NDAwOlxcdHJldHVybiBnZXRfdHJlZV9iZGV2KGZjLCBoZnNfZmlsbF9zdXBlcik7XFxuZnMvaGZzL3N1cGVyLmMtNDAxLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTA6MTY6NDcuMDk3MTAzMzM2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1Mjg4ODcxMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIEhGUyBGaWxlc3lzdGVtIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBpbmRlZWQgZm9jdXNlZCBvbiBgaGZzX2ZpbGxfc3VwZXJgIGFzIGEgZnVuY3Rpb24gcG9pbnRlci4gVGhhdCdzIHRoZSBlbnRyeSBwb2ludCwgYW5kIGl0J3MgZ29vZCB0byBjb25maXJtIHRoYXQuXG5cblRoZXJlZm9yZSwgdGhlIGNyaXRpY2FsIHN5bWJvbHMgdG8ga2VlcCBhbiBleWUgb24gYXJlOiBgaGZzX2NhdF92YWxpZGF0ZV9mb3VuZF9jbmlkYCAoZXZlbiBpZiBpbmxpbmVkLCBpdCdzIHJlbGV2YW50KSwgYGhmc19jYXRfZmluZF9icmVjYCwgYGhmc19yZWFkX2lub2RlYCwgYGhmc19maWxlX2xvb2t1cGAsIGFuZCBvZiBjb3Vyc2UsIGBoZnNfZmlsbF9zdXBlcmAuIFRoZXNlIGFyZSB0aGUgY29yZSBmdW5jdGlvbnMgaW1wYWN0ZWQgYnkgdGhlIENOSUQgdmFsaWRhdGlvbi5cblxuVGhlIHJlYXNvbmluZyBoZXJlIGlzIHNvbGlkLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBDTklEIHZhbGlkYXRpb24gdG8gcHJldmVudCBwcm9jZXNzaW5nIG9mIGludmFsaWQgY2F0YWxvZyByZWNvcmRzIHdpdGhpbiB0aGUgSEZTIGZpbGVzeXN0ZW0uIE1ha2VzIHNlbnNlLiBJdCdzIHRvdWNoaW5nIHNvbWUgcHJldHR5IGZ1bmRhbWVudGFsIGZ1bmN0aW9ucywgbmFtZWx5LCB0aG9zZSBpbnZvbHZlZCBpbiB0cmF2ZXJzaW5nIGFuZCByZWFkaW5nIHRoZSBjYXRhbG9nOiBgaGZzX2NhdF9maW5kX2JyZWNgLCBgaGZzX3JlYWRfaW5vZGVgLCBgaGZzX2ZpbGVfbG9va3VwYCBhbmQsIGltcG9ydGFudGx5LCB0aGUgZmlsZXN5c3RlbSBzZXR1cCB3aXRoIGBoZnNfZmlsbF9zdXBlcmAuXG5cblRoZSBjcnVjaWFsIHRoaW5nIGhlcmUgaXMgdGhhdCBIRlMgY2FuIGJlIHVzZWQgb24gbG9vcCBkZXZpY2VzIG9yIGltYWdlcywgd2hpY2ggYXJlIGNvbW1vbiBpbiB2aXJ0dWFsIGVudmlyb25tZW50cy4gVGhpcyB2YWxpZGF0aW9uIGxvZ2ljIG5lZWRzIHRvIGJlIGZ1enplZCBoZWF2aWx5LiBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBuZXcgY29kZSBncmFjZWZ1bGx5IGhhbmRsZXMgbWFsZm9ybWVkIGZpbGVzeXN0ZW0gaW1hZ2VzIHdpdGhvdXQgY3Jhc2hpbmcgb3IgaW50cm9kdWNpbmcgYW55IHJlZ3Jlc3Npb25zLiBFeGNlbGxlbnQgcG9pbnQuXG5cbkkganVzdCBkb3VibGUtY2hlY2tlZCwgYW5kIGBIRlNfRlNgIGlzIGluZGVlZCB0aGUgb25seSByZWxldmFudCBjb25maWd1cmF0aW9uIGZsYWcuIE5vdGhpbmcgZWxzZSB0byBjb25zaWRlciB0aGVyZS5cblxuQWxyaWdodCwgdGhhdCdzIGV2ZXJ5dGhpbmcuIEknbGwgZ2V0IHRoZSByZXN1bHRzIHNldC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQyOSwiT3V0cHV0VG9rZW5zIjoyMDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTA6MTY6NTQuNjI1OTk1NDc0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYyMTE2MzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIRlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRcIixcbiAgICBcImhmc19jYXRfZmluZF9icmVjXCIsXG4gICAgXCJoZnNfcmVhZF9pbm9kZVwiLFxuICAgIFwiaGZzX2ZpbGVfbG9va3VwXCIsXG4gICAgXCJoZnNfZmlsbF9zdXBlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgQ05JRCAoQ2F0YWxvZyBOb2RlIElEKSBpbiB0aGUgSEZTIGZpbGVzeXN0ZW0gdG8gcHJldmVudCBwcm9jZXNzaW5nIGludmFsaWQgY2F0YWxvZyByZWNvcmRzLiBJdCBtb2RpZmllcyBjb3JlIEhGUyBmdW5jdGlvbnMgbGlrZSBgaGZzX2NhdF9maW5kX2JyZWNgLCBgaGZzX3JlYWRfaW5vZGVgLCBgaGZzX2ZpbGVfbG9va3VwYCwgYW5kIGBoZnNfZmlsbF9zdXBlcmAuIFNpbmNlIEhGUyBjYW4gYmUgbW91bnRlZCBmcm9tIGxvb3AgZGV2aWNlcyBvciBkaXNrIGltYWdlcywgdGhlc2UgY29kZSBwYXRocyBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG5ldyB2YWxpZGF0aW9uIGxvZ2ljIGNvcnJlY3RseSBoYW5kbGVzIG1hbGZvcm1lZCBmaWxlc3lzdGVtIGltYWdlcyB3aXRob3V0IGNhdXNpbmcgY3Jhc2hlcyBvciByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJIRlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoZnNfY2F0X3ZhbGlkYXRlX2ZvdW5kX2NuaWRcIixcbiAgICBcImhmc19jYXRfZmluZF9icmVjXCIsXG4gICAgXCJoZnNfcmVhZF9pbm9kZVwiLFxuICAgIFwiaGZzX2ZpbGVfbG9va3VwXCIsXG4gICAgXCJoZnNfZmlsbF9zdXBlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgQ05JRCAoQ2F0YWxvZyBOb2RlIElEKSBpbiB0aGUgSEZTIGZpbGVzeXN0ZW0gdG8gcHJldmVudCBwcm9jZXNzaW5nIGludmFsaWQgY2F0YWxvZyByZWNvcmRzLiBJdCBtb2RpZmllcyBjb3JlIEhGUyBmdW5jdGlvbnMgbGlrZSBgaGZzX2NhdF9maW5kX2JyZWNgLCBgaGZzX3JlYWRfaW5vZGVgLCBgaGZzX2ZpbGVfbG9va3VwYCwgYW5kIGBoZnNfZmlsbF9zdXBlcmAuIFNpbmNlIEhGUyBjYW4gYmUgbW91bnRlZCBmcm9tIGxvb3AgZGV2aWNlcyBvciBkaXNrIGltYWdlcywgdGhlc2UgY29kZSBwYXRocyBhcmUgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIG5ldyB2YWxpZGF0aW9uIGxvZ2ljIGNvcnJlY3RseSBoYW5kbGVzIG1hbGZvcm1lZCBmaWxlc3lzdGVtIGltYWdlcyB3aXRob3V0IGNhdXNpbmcgY3Jhc2hlcyBvciByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow2hl4s[1] Phase: Succeeded StartedAt: 2026-07-08 10:17:12 +0000 UTC FinishedAt: 2026-07-08 10:17:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2hl4s[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-08 10:17:12 +0000 UTC FinishedAt: 2026-07-08 10:17:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2hl4s[2] Phase: Succeeded StartedAt: 2026-07-08 10:17:12 +0000 UTC FinishedAt: 2026-07-08 14:49:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-08 10:17:12 +0000 UTC FinishedAt: 2026-07-08 14:49:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-08 10:17:12 +0000 UTC FinishedAt: 2026-07-08 10:17:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-08 10:17:12 +0000 UTC FinishedAt: 2026-07-08 10:17:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow2hl4s/series-workflow2hl4s-convert-artifact-224385925/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-08 10:17:33 +0000 UTC FinishedAt: 2026-07-08 10:52:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-08 10:17:33 +0000 UTC FinishedAt: 2026-07-08 10:52:46 +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:*2071089d-0a08-4b89-ae34-17c7ae54d72a,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-workflow2hl4s/series-workflow2hl4s-convert-artifact-224385925/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": "16455f20-5220-4bb1-afea-0327974aa2fa", "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-workflow2hl4s/series-workflow2hl4s-build-action-4263417643/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-08 10:17:33 +0000 UTC FinishedAt: 2026-07-08 10:52:36 +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:*2071089d-0a08-4b89-ae34-17c7ae54d72a,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-workflow2hl4s/series-workflow2hl4s-convert-artifact-224385925/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": "16455f20-5220-4bb1-afea-0327974aa2fa", "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-workflow2hl4s/series-workflow2hl4s-build-action-4263417643/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-08 10:52:46 +0000 UTC FinishedAt: 2026-07-08 10:52:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-08 10:52:46 +0000 UTC FinishedAt: 2026-07-08 10:52:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-08 10:52:46 +0000 UTC FinishedAt: 2026-07-08 10:53:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-08 10:52:46 +0000 UTC FinishedAt: 2026-07-08 10:52:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflow2hl4s/series-workflow2hl4s-convert-artifact-1027465312/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-08 10:53:06 +0000 UTC FinishedAt: 2026-07-08 10:55:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-08 10:53:06 +0000 UTC FinishedAt: 2026-07-08 10:55:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*16455f20-5220-4bb1-afea-0327974aa2fa,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-workflow2hl4s/series-workflow2hl4s-build-action-4263417643/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-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-08 10:55:43 +0000 UTC FinishedAt: 2026-07-08 10:55:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-08 10:55:43 +0000 UTC FinishedAt: 2026-07-08 10:55:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-08 10:55:43 +0000 UTC FinishedAt: 2026-07-08 11:42:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-08 10:55:43 +0000 UTC FinishedAt: 2026-07-08 11:42:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*2071089d-0a08-4b89-ae34-17c7ae54d72a,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-workflow2hl4s/series-workflow2hl4s-convert-artifact-1027465312/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": "ef4a9698-750d-463c-9d9d-56dbe850b14e", "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-workflow2hl4s/series-workflow2hl4s-build-action-2544913692/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-08 10:55:43 +0000 UTC FinishedAt: 2026-07-08 11:42:27 +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:*2071089d-0a08-4b89-ae34-17c7ae54d72a,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-workflow2hl4s/series-workflow2hl4s-convert-artifact-1027465312/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": "ef4a9698-750d-463c-9d9d-56dbe850b14e", "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-workflow2hl4s/series-workflow2hl4s-build-action-2544913692/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-08 11:42:39 +0000 UTC FinishedAt: 2026-07-08 11:42:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-08 11:42:39 +0000 UTC FinishedAt: 2026-07-08 11:42:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-08 11:42:39 +0000 UTC FinishedAt: 2026-07-08 11:45:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-08 11:42:39 +0000 UTC FinishedAt: 2026-07-08 11:44:41 +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:*ef4a9698-750d-463c-9d9d-56dbe850b14e,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-workflow2hl4s/series-workflow2hl4s-build-action-2544913692/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-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-08 11:45:05 +0000 UTC FinishedAt: 2026-07-08 11:45:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-08 11:45:07 +0000 UTC FinishedAt: 2026-07-08 11:45:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-08 11:45:08 +0000 UTC FinishedAt: 2026-07-08 14:49:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-08 11:45:09 +0000 UTC FinishedAt: 2026-07-08 14:49:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"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:*16455f20-5220-4bb1-afea-0327974aa2fa,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ef4a9698-750d-463c-9d9d-56dbe850b14e,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-workflow2hl4s/series-workflow2hl4s-build-action-4263417643/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-workflow2hl4s/series-workflow2hl4s-build-action-2544913692/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-08 11:45:09 +0000 UTC FinishedAt: 2026-07-08 11:45:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-08 11:45:09 +0000 UTC FinishedAt: 2026-07-08 11:45:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"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-workflow2hl4s/series-workflow2hl4s-convert-artifact-432481977/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-08 11:45:09 +0000 UTC FinishedAt: 2026-07-08 11:45:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-08 11:45:55 +0000 UTC FinishedAt: 2026-07-08 14:49:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow2hl4s[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfs_cat_validate_found_cnid","hfs_cat_find_brec","hfs_read_inode","hfs_file_lookup","hfs_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0e35b9b6ec0ffcc5e23cbdec09f5c622ad532b53","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFS_FS"],"series_id":"2bee5bcc-4873-4712-91ec-b626d8302e87","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-08 11:45:55 +0000 UTC FinishedAt: 2026-07-08 14:49:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*16455f20-5220-4bb1-afea-0327974aa2fa,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ef4a9698-750d-463c-9d9d-56dbe850b14e,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-workflow2hl4s/series-workflow2hl4s-build-action-4263417643/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-workflow2hl4s/series-workflow2hl4s-build-action-2544913692/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-workflow2hl4s/series-workflow2hl4s-convert-artifact-432481977/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,}