Name: series-workflow4qrvw Phase: Succeeded StartedAt: 2026-07-15 07:33:24 +0000 UTC FinishedAt: 2026-07-15 12:28:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qrvw[0] Phase: Succeeded StartedAt: 2026-07-15 07:33:24 +0000 UTC FinishedAt: 2026-07-15 07:51:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qrvw[0].run-triage Phase: Succeeded StartedAt: 2026-07-15 07:33:24 +0000 UTC FinishedAt: 2026-07-15 07:51:06 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "0ebe8f625ab0520217a425d7cd366e4670484941", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "0ebe8f625ab0520217a425d7cd366e4670484941", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "0c82aa37-e643-44f9-a21a-d56a3347a31e" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ntfs_read_compressed_block", "ntfs_decompress" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9jayYjMzQ7LAogICAgJiMzNDtudGZzX2RlY29tcHJlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGhhbmRsaW5nIG9mIGNvbXByZXNzZWQgcGFnZXMgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSwgcmVwbGFjaW5nIGRpcmVjdCBhY2Nlc3MgdG8gcGFnZS1cdTAwM2VfX2ZvbGlvX2luZGV4IHdpdGggcHJvcGVyIGZvbGlvIEFQSXMgYW5kIHplcm9fdXNlcl9zZWdtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgcmVhZCBwYXRoIGZvciBjb21wcmVzc2VkIGZpbGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjUwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMjhjZTA5YTNkZDFiMTYxYzE4MTU4MjA0ODBkMjQ2NTExNTVmNTQxN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDE1IDA3OjUwOjE4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL250ZnMvY29tcHJlc3MuYyBiL2ZzL250ZnMvY29tcHJlc3MuY1xuaW5kZXggNzZiZDgwNmI0MWVkZDkuLmQ4M2QzZThlMDZhZWJiIDEwMDY0NFxuLS0tIGEvZnMvbnRmcy9jb21wcmVzcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9udGZzL2NvbXByZXNzLmNcbkBAIC05NiwyNiAmIzQzOzk2LDYgQEAgdm9pZCBmcmVlX2NvbXByZXNzaW9uX2J1ZmZlcnModm9pZClcbiBcdG11dGV4X3VubG9jayhcdTAwMjZudGZzX2NiX2xvY2spO1xuIH1cbiBcbi0vKlxuLSAqIHplcm9fcGFydGlhbF9jb21wcmVzc2VkX3BhZ2UgLSB6ZXJvIG91dCBvZiBib3VuZHMgY29tcHJlc3NlZCBwYWdlIHJlZ2lvblxuLSAqIEBwYWdlOiBwYWdlIHRvIHplcm9cbi0gKiBAaW5pdGlhbGl6ZWRfc2l6ZTogaW5pdGlhbGl6ZWQgc2l6ZSBvZiB0aGUgYXR0cmlidXRlXG4tICovXG4tc3RhdGljIHZvaWQgemVyb19wYXJ0aWFsX2NvbXByZXNzZWRfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSxcbi1cdFx0Y29uc3QgczY0IGluaXRpYWxpemVkX3NpemUpXG4te1xuLVx0dTggKmtwID0gcGFnZV9hZGRyZXNzKHBhZ2UpO1xuLVx0dW5zaWduZWQgaW50IGtwX29mcztcbi1cbi1cdG50ZnNfZGVidWcoXCYjMzQ7WmVyb2luZyBwYWdlIHJlZ2lvbiBvdXRzaWRlIGluaXRpYWxpemVkIHNpemUuXCYjMzQ7KTtcbi1cdGlmICgoKHM2NClwYWdlLVx1MDAzZV9fZm9saW9faW5kZXggXHUwMDNjXHUwMDNjIFBBR0VfU0hJRlQpIFx1MDAzZT0gaW5pdGlhbGl6ZWRfc2l6ZSkge1xuLVx0XHRjbGVhcl9wYWdlKGtwKTtcbi1cdFx0cmV0dXJuO1xuLVx0fVxuLVx0a3Bfb2ZzID0gaW5pdGlhbGl6ZWRfc2l6ZSBcdTAwMjYgflBBR0VfTUFTSztcbi1cdG1lbXNldChrcCAmIzQzOyBrcF9vZnMsIDAsIFBBR0VfU0laRSAtIGtwX29mcyk7XG4tfVxuLVxuIC8qXG4gICogaGFuZGxlX2JvdW5kc19jb21wcmVzc2VkX3BhZ2UgLSB0ZXN0IGZvclx1MDAyNmhhbmRsZSBvdXQgb2YgYm91bmRzIGNvbXByZXNzZWQgcGFnZVxuICAqIEBwYWdlOiBwYWdlIHRvIGNoZWNrIGFuZCBoYW5kbGVcbkBAIC0xMjUsOSAmIzQzOzEwNSwyMSBAQCBzdGF0aWMgdm9pZCB6ZXJvX3BhcnRpYWxfY29tcHJlc3NlZF9wYWdlKHN0cnVjdCBwYWdlICpwYWdlLFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBoYW5kbGVfYm91bmRzX2NvbXByZXNzZWRfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSxcbiBcdFx0Y29uc3QgbG9mZl90IGlfc2l6ZSwgY29uc3QgczY0IGluaXRpYWxpemVkX3NpemUpXG4ge1xuLVx0aWYgKChwYWdlLVx1MDAzZV9fZm9saW9faW5kZXggXHUwMDNlPSAoaW5pdGlhbGl6ZWRfc2l6ZSBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVCkpIFx1MDAyNlx1MDAyNlxuLVx0XHRcdChpbml0aWFsaXplZF9zaXplIFx1MDAzYyBpX3NpemUpKVxuLVx0XHR6ZXJvX3BhcnRpYWxfY29tcHJlc3NlZF9wYWdlKHBhZ2UsIGluaXRpYWxpemVkX3NpemUpO1xuJiM0MztcdGxvZmZfdCBwb3MgPSBwYWdlX29mZnNldChwYWdlKTtcbiYjNDM7XG4mIzQzO1x0aWYgKChwb3MgJiM0MzsgUEFHRV9TSVpFIFx1MDAzZSBpbml0aWFsaXplZF9zaXplKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0KGluaXRpYWxpemVkX3NpemUgXHUwMDNjIGlfc2l6ZSkpIHtcbiYjNDM7XHRcdHNpemVfdCBvZmZzZXQ7XG4mIzQzO1xuJiM0MztcdFx0bnRmc19kZWJ1ZyhcJiMzNDtaZXJvaW5nIHBhZ2UgcmVnaW9uIG91dHNpZGUgaW5pdGlhbGl6ZWQgc2l6ZS5cJiMzNDspO1xuJiM0MztcdFx0aWYgKHBvcyBcdTAwM2U9IGluaXRpYWxpemVkX3NpemUpXG4mIzQzO1x0XHRcdG9mZnNldCA9IDA7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdG9mZnNldCA9IG9mZnNldF9pbl9wYWdlKGluaXRpYWxpemVkX3NpemUpO1xuJiM0MztcdFx0emVyb191c2VyX3NlZ21lbnQocGFnZSwgb2Zmc2V0LCBQQUdFX1NJWkUpO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRmbHVzaF9kY2FjaGVfcGFnZShwYWdlKTtcbiYjNDM7XHR9XG4gfVxuIFxuIC8qXG5AQCAtMjMxLDcgJiM0MzsyMjMsNiBAQCBzdGF0aWMgaW50IG50ZnNfZGVjb21wcmVzcyhzdHJ1Y3QgcGFnZSAqZGVzdF9wYWdlc1tdLCBpbnQgY29tcGxldGVkX3BhZ2VzW10sXG4gXHRcdFx0XHQgKi9cbiBcdFx0XHRcdGhhbmRsZV9ib3VuZHNfY29tcHJlc3NlZF9wYWdlKGRwLCBpX3NpemUsXG4gXHRcdFx0XHRcdFx0aW5pdGlhbGl6ZWRfc2l6ZSk7XG4tXHRcdFx0XHRmbHVzaF9kY2FjaGVfcGFnZShkcCk7XG4gXHRcdFx0XHRrdW5tYXBfbG9jYWwocGFnZV9hZGRyZXNzKGRwKSk7XG4gXHRcdFx0XHRTZXRQYWdlVXB0b2RhdGUoZHApO1xuIFx0XHRcdFx0dW5sb2NrX3BhZ2UoZHApO1xuQEAgLTQ2NSwxNCAmIzQzOzQ1NiwxNCBAQCBpbnQgbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2soc3RydWN0IGZvbGlvICpmb2xpbylcbiBcdHN0cnVjdCBwYWdlICpwYWdlID0gXHUwMDI2Zm9saW8tXHUwMDNlcGFnZTtcbiBcdGxvZmZfdCBpX3NpemU7XG4gXHRzNjQgaW5pdGlhbGl6ZWRfc2l6ZTtcbi1cdHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gcGFnZS1cdTAwM2VtYXBwaW5nO1xuJiM0MztcdHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gZm9saW8tXHUwMDNlbWFwcGluZztcbiBcdHN0cnVjdCBudGZzX2lub2RlICpuaSA9IE5URlNfSShtYXBwaW5nLVx1MDAzZWhvc3QpO1xuIFx0c3RydWN0IG50ZnNfdm9sdW1lICp2b2wgPSBuaS1cdTAwM2V2b2w7XG4gXHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gdm9sLVx1MDAzZXNiO1xuIFx0c3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqcmw7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0dTggKmNiLCAqY2JfcG9zLCAqY2JfZW5kO1xuLVx0dW5zaWduZWQgbG9uZyBvZmZzZXQsIGluZGV4ID0gcGFnZS1cdTAwM2VfX2ZvbGlvX2luZGV4O1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBpbmRleCA9IGZvbGlvLVx1MDAzZWluZGV4O1xuIFx0dTMyIGNiX3NpemUgPSBuaS1cdTAwM2VpdHlwZS5jb21wcmVzc2VkLmJsb2NrX3NpemU7XG4gXHR1NjQgY2Jfc2l6ZV9tYXNrID0gY2Jfc2l6ZSAtIDFVTDtcbiBcdHM2NCB2Y247XG5AQCAtNzY3LDcgJiM0Mzs3NTgsNiBAQCBpbnQgbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2soc3RydWN0IGZvbGlvICpmb2xpbylcbiBcdFx0XHRcdCAqL1xuIFx0XHRcdFx0aGFuZGxlX2JvdW5kc19jb21wcmVzc2VkX3BhZ2UocGFnZSwgaV9zaXplLFxuIFx0XHRcdFx0XHRcdGluaXRpYWxpemVkX3NpemUpO1xuLVx0XHRcdFx0Zmx1c2hfZGNhY2hlX3BhZ2UocGFnZSk7XG4gXHRcdFx0XHRrdW5tYXBfbG9jYWwocGFnZV9hZGRyZXNzKHBhZ2UpKTtcbiBcdFx0XHRcdFNldFBhZ2VVcHRvZGF0ZShwYWdlKTtcbiBcdFx0XHRcdHVubG9ja19wYWdlKHBhZ2UpO1xuQEAgLTgyMiwxNCAmIzQzOzgxMiwxNiBAQCBpbnQgbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2soc3RydWN0IGZvbGlvICpmb2xpbylcbiBcdGZvciAoY3VyX3BhZ2UgPSAwOyBjdXJfcGFnZSBcdTAwM2MgbWF4X3BhZ2U7IGN1cl9wYWdlJiM0MzsmIzQzOykge1xuIFx0XHRwYWdlID0gcGFnZXNbY3VyX3BhZ2VdO1xuIFx0XHRpZiAocGFnZSkge1xuJiM0MztcdFx0XHRmb2xpbyA9IHBhZ2VfZm9saW8ocGFnZSk7XG4mIzQzO1xuIFx0XHRcdG50ZnNfZXJyb3Iodm9sLVx1MDAzZXNiLFxuIFx0XHRcdFx0XCYjMzQ7U3RpbGwgaGF2ZSBwYWdlcyBsZWZ0ISBUZXJtaW5hdGluZyB0aGVtIHdpdGggZXh0cmVtZSBwcmVqdWRpY2UuICBJbm9kZSAweCVsbHgsIHBhZ2UgaW5kZXggMHglbHguXCYjMzQ7LFxuLVx0XHRcdFx0bmktXHUwMDNlbWZ0X25vLCBwYWdlLVx1MDAzZV9fZm9saW9faW5kZXgpO1xuLVx0XHRcdGZsdXNoX2RjYWNoZV9wYWdlKHBhZ2UpO1xuJiM0MztcdFx0XHRcdG5pLVx1MDAzZW1mdF9ubywgZm9saW8tXHUwMDNlaW5kZXgpO1xuJiM0MztcdFx0XHRmbHVzaF9kY2FjaGVfZm9saW8oZm9saW8pO1xuIFx0XHRcdGt1bm1hcF9sb2NhbChwYWdlX2FkZHJlc3MocGFnZSkpO1xuLVx0XHRcdHVubG9ja19wYWdlKHBhZ2UpO1xuJiM0MztcdFx0XHRmb2xpb191bmxvY2soZm9saW8pO1xuIFx0XHRcdGlmIChjdXJfcGFnZSAhPSB4cGFnZSlcbi1cdFx0XHRcdHB1dF9wYWdlKHBhZ2UpO1xuJiM0MztcdFx0XHRcdGZvbGlvX3B1dChmb2xpbyk7XG4gXHRcdFx0cGFnZXNbY3VyX3BhZ2VdID0gTlVMTDtcbiBcdFx0fVxuIFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjUwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9jayYjMzQ7LAogICAgJiMzNDtudGZzX2RlY29tcHJlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGhhbmRsaW5nIG9mIGNvbXByZXNzZWQgcGFnZXMgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSwgcmVwbGFjaW5nIGRpcmVjdCBhY2Nlc3MgdG8gcGFnZS1cdTAwM2VfX2ZvbGlvX2luZGV4IHdpdGggcHJvcGVyIGZvbGlvIEFQSXMgYW5kIHplcm9fdXNlcl9zZWdtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgcmVhZCBwYXRoIGZvciBjb21wcmVzc2VkIGZpbGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyOGNlMDlhM2RkMWIxNjFjMTgxNTgyMDQ4MGQyNDY1MTE1NWY1NDE3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMTUgMDc6NTA6MTggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9udGZzL2NvbXByZXNzLmMgYi9mcy9udGZzL2NvbXByZXNzLmMKaW5kZXggNzZiZDgwNmI0MWVkZDkuLmQ4M2QzZThlMDZhZWJiIDEwMDY0NAotLS0gYS9mcy9udGZzL2NvbXByZXNzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvbnRmcy9jb21wcmVzcy5jCkBAIC05NiwyNiAmIzQzOzk2LDYgQEAgdm9pZCBmcmVlX2NvbXByZXNzaW9uX2J1ZmZlcnModm9pZCkKIAltdXRleF91bmxvY2soJmFtcDtudGZzX2NiX2xvY2spOwogfQogCi0vKgotICogemVyb19wYXJ0aWFsX2NvbXByZXNzZWRfcGFnZSAtIHplcm8gb3V0IG9mIGJvdW5kcyBjb21wcmVzc2VkIHBhZ2UgcmVnaW9uCi0gKiBAcGFnZTogcGFnZSB0byB6ZXJvCi0gKiBAaW5pdGlhbGl6ZWRfc2l6ZTogaW5pdGlhbGl6ZWQgc2l6ZSBvZiB0aGUgYXR0cmlidXRlCi0gKi8KLXN0YXRpYyB2b2lkIHplcm9fcGFydGlhbF9jb21wcmVzc2VkX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsCi0JCWNvbnN0IHM2NCBpbml0aWFsaXplZF9zaXplKQotewotCXU4ICprcCA9IHBhZ2VfYWRkcmVzcyhwYWdlKTsKLQl1bnNpZ25lZCBpbnQga3Bfb2ZzOwotCi0JbnRmc19kZWJ1ZygmIzM0O1plcm9pbmcgcGFnZSByZWdpb24gb3V0c2lkZSBpbml0aWFsaXplZCBzaXplLiYjMzQ7KTsKLQlpZiAoKChzNjQpcGFnZS0mZ3Q7X19mb2xpb19pbmRleCAmbHQ7Jmx0OyBQQUdFX1NISUZUKSAmZ3Q7PSBpbml0aWFsaXplZF9zaXplKSB7Ci0JCWNsZWFyX3BhZ2Uoa3ApOwotCQlyZXR1cm47Ci0JfQotCWtwX29mcyA9IGluaXRpYWxpemVkX3NpemUgJmFtcDsgflBBR0VfTUFTSzsKLQltZW1zZXQoa3AgJiM0Mzsga3Bfb2ZzLCAwLCBQQUdFX1NJWkUgLSBrcF9vZnMpOwotfQotCiAvKgogICogaGFuZGxlX2JvdW5kc19jb21wcmVzc2VkX3BhZ2UgLSB0ZXN0IGZvciZhbXA7aGFuZGxlIG91dCBvZiBib3VuZHMgY29tcHJlc3NlZCBwYWdlCiAgKiBAcGFnZTogcGFnZSB0byBjaGVjayBhbmQgaGFuZGxlCkBAIC0xMjUsOSAmIzQzOzEwNSwyMSBAQCBzdGF0aWMgdm9pZCB6ZXJvX3BhcnRpYWxfY29tcHJlc3NlZF9wYWdlKHN0cnVjdCBwYWdlICpwYWdlLAogc3RhdGljIGlubGluZSB2b2lkIGhhbmRsZV9ib3VuZHNfY29tcHJlc3NlZF9wYWdlKHN0cnVjdCBwYWdlICpwYWdlLAogCQljb25zdCBsb2ZmX3QgaV9zaXplLCBjb25zdCBzNjQgaW5pdGlhbGl6ZWRfc2l6ZSkKIHsKLQlpZiAoKHBhZ2UtJmd0O19fZm9saW9faW5kZXggJmd0Oz0gKGluaXRpYWxpemVkX3NpemUgJmd0OyZndDsgUEFHRV9TSElGVCkpICZhbXA7JmFtcDsKLQkJCShpbml0aWFsaXplZF9zaXplICZsdDsgaV9zaXplKSkKLQkJemVyb19wYXJ0aWFsX2NvbXByZXNzZWRfcGFnZShwYWdlLCBpbml0aWFsaXplZF9zaXplKTsKJiM0MzsJbG9mZl90IHBvcyA9IHBhZ2Vfb2Zmc2V0KHBhZ2UpOwomIzQzOwomIzQzOwlpZiAoKHBvcyAmIzQzOyBQQUdFX1NJWkUgJmd0OyBpbml0aWFsaXplZF9zaXplKSAmYW1wOyZhbXA7CiYjNDM7CQkJKGluaXRpYWxpemVkX3NpemUgJmx0OyBpX3NpemUpKSB7CiYjNDM7CQlzaXplX3Qgb2Zmc2V0OwomIzQzOwomIzQzOwkJbnRmc19kZWJ1ZygmIzM0O1plcm9pbmcgcGFnZSByZWdpb24gb3V0c2lkZSBpbml0aWFsaXplZCBzaXplLiYjMzQ7KTsKJiM0MzsJCWlmIChwb3MgJmd0Oz0gaW5pdGlhbGl6ZWRfc2l6ZSkKJiM0MzsJCQlvZmZzZXQgPSAwOwomIzQzOwkJZWxzZQomIzQzOwkJCW9mZnNldCA9IG9mZnNldF9pbl9wYWdlKGluaXRpYWxpemVkX3NpemUpOwomIzQzOwkJemVyb191c2VyX3NlZ21lbnQocGFnZSwgb2Zmc2V0LCBQQUdFX1NJWkUpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJZmx1c2hfZGNhY2hlX3BhZ2UocGFnZSk7CiYjNDM7CX0KIH0KIAogLyoKQEAgLTIzMSw3ICYjNDM7MjIzLDYgQEAgc3RhdGljIGludCBudGZzX2RlY29tcHJlc3Moc3RydWN0IHBhZ2UgKmRlc3RfcGFnZXNbXSwgaW50IGNvbXBsZXRlZF9wYWdlc1tdLAogCQkJCSAqLwogCQkJCWhhbmRsZV9ib3VuZHNfY29tcHJlc3NlZF9wYWdlKGRwLCBpX3NpemUsCiAJCQkJCQlpbml0aWFsaXplZF9zaXplKTsKLQkJCQlmbHVzaF9kY2FjaGVfcGFnZShkcCk7CiAJCQkJa3VubWFwX2xvY2FsKHBhZ2VfYWRkcmVzcyhkcCkpOwogCQkJCVNldFBhZ2VVcHRvZGF0ZShkcCk7CiAJCQkJdW5sb2NrX3BhZ2UoZHApOwpAQCAtNDY1LDE0ICYjNDM7NDU2LDE0IEBAIGludCBudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9jayhzdHJ1Y3QgZm9saW8gKmZvbGlvKQogCXN0cnVjdCBwYWdlICpwYWdlID0gJmFtcDtmb2xpby0mZ3Q7cGFnZTsKIAlsb2ZmX3QgaV9zaXplOwogCXM2NCBpbml0aWFsaXplZF9zaXplOwotCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gcGFnZS0mZ3Q7bWFwcGluZzsKJiM0MzsJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBmb2xpby0mZ3Q7bWFwcGluZzsKIAlzdHJ1Y3QgbnRmc19pbm9kZSAqbmkgPSBOVEZTX0kobWFwcGluZy0mZ3Q7aG9zdCk7CiAJc3RydWN0IG50ZnNfdm9sdW1lICp2b2wgPSBuaS0mZ3Q7dm9sOwogCXN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSB2b2wtJmd0O3NiOwogCXN0cnVjdCBydW5saXN0X2VsZW1lbnQgKnJsOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJdTggKmNiLCAqY2JfcG9zLCAqY2JfZW5kOwotCXVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBpbmRleCA9IHBhZ2UtJmd0O19fZm9saW9faW5kZXg7CiYjNDM7CXVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBpbmRleCA9IGZvbGlvLSZndDtpbmRleDsKIAl1MzIgY2Jfc2l6ZSA9IG5pLSZndDtpdHlwZS5jb21wcmVzc2VkLmJsb2NrX3NpemU7CiAJdTY0IGNiX3NpemVfbWFzayA9IGNiX3NpemUgLSAxVUw7CiAJczY0IHZjbjsKQEAgLTc2Nyw3ICYjNDM7NzU4LDYgQEAgaW50IG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8pCiAJCQkJICovCiAJCQkJaGFuZGxlX2JvdW5kc19jb21wcmVzc2VkX3BhZ2UocGFnZSwgaV9zaXplLAogCQkJCQkJaW5pdGlhbGl6ZWRfc2l6ZSk7Ci0JCQkJZmx1c2hfZGNhY2hlX3BhZ2UocGFnZSk7CiAJCQkJa3VubWFwX2xvY2FsKHBhZ2VfYWRkcmVzcyhwYWdlKSk7CiAJCQkJU2V0UGFnZVVwdG9kYXRlKHBhZ2UpOwogCQkJCXVubG9ja19wYWdlKHBhZ2UpOwpAQCAtODIyLDE0ICYjNDM7ODEyLDE2IEBAIGludCBudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9jayhzdHJ1Y3QgZm9saW8gKmZvbGlvKQogCWZvciAoY3VyX3BhZ2UgPSAwOyBjdXJfcGFnZSAmbHQ7IG1heF9wYWdlOyBjdXJfcGFnZSYjNDM7JiM0MzspIHsKIAkJcGFnZSA9IHBhZ2VzW2N1cl9wYWdlXTsKIAkJaWYgKHBhZ2UpIHsKJiM0MzsJCQlmb2xpbyA9IHBhZ2VfZm9saW8ocGFnZSk7CiYjNDM7CiAJCQludGZzX2Vycm9yKHZvbC0mZ3Q7c2IsCiAJCQkJJiMzNDtTdGlsbCBoYXZlIHBhZ2VzIGxlZnQhIFRlcm1pbmF0aW5nIHRoZW0gd2l0aCBleHRyZW1lIHByZWp1ZGljZS4gIElub2RlIDB4JWxseCwgcGFnZSBpbmRleCAweCVseC4mIzM0OywKLQkJCQluaS0mZ3Q7bWZ0X25vLCBwYWdlLSZndDtfX2ZvbGlvX2luZGV4KTsKLQkJCWZsdXNoX2RjYWNoZV9wYWdlKHBhZ2UpOwomIzQzOwkJCQluaS0mZ3Q7bWZ0X25vLCBmb2xpby0mZ3Q7aW5kZXgpOwomIzQzOwkJCWZsdXNoX2RjYWNoZV9mb2xpbyhmb2xpbyk7CiAJCQlrdW5tYXBfbG9jYWwocGFnZV9hZGRyZXNzKHBhZ2UpKTsKLQkJCXVubG9ja19wYWdlKHBhZ2UpOwomIzQzOwkJCWZvbGlvX3VubG9jayhmb2xpbyk7CiAJCQlpZiAoY3VyX3BhZ2UgIT0geHBhZ2UpCi0JCQkJcHV0X3BhZ2UocGFnZSk7CiYjNDM7CQkJCWZvbGlvX3B1dChmb2xpbyk7CiAJCQlwYWdlc1tjdXJfcGFnZV0gPSBOVUxMOwogCQl9CiAJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTk4CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoIHRvIHRoZSBOVEZTIENvbXByZXNzaW9uIENvZGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyBiZWVuIGFwcGxpZWQgdG8gYGZzL250ZnMvY29tcHJlc3MuY2AuIEltbWVkaWF0ZWx5LCBJIHNlZSBpdCYjMzk7cyB0b3VjaGluZyBgaGFuZGxlX2JvdW5kc19jb21wcmVzc2VkX3BhZ2VgIGFuZCBgbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2tgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBzdWdnZXN0aW5nIGNoYW5nZXMgdG8gaG93IGNvbXByZXNzZWQgZGF0YSBpcyBoYW5kbGVkIGF0IHRoZSBwYWdlIGxldmVsLiBUaGV5JiMzOTt2ZSByZXBsYWNlZCB0aGUgZGlyZWN0IHVzZSBvZiBgcGFnZS0mZ3Q7X19mb2xpb19pbmRleGAgd2l0aCBgZm9saW8tJmd0O2luZGV4YCBvciBgcGFnZV9vZmZzZXQocGFnZSlgLCB3aGljaCBpcyBhIHByZXR0eSBzdGFuZGFyZCBmb2xpby9wYWdlIHN0cnVjdHVyZSB1cGRhdGUsIG5vdGhpbmcgYWxhcm1pbmcuIFJlcGxhY2luZyBgemVyb19wYXJ0aWFsX2NvbXByZXNzZWRfcGFnZWAgd2l0aCBgemVyb191c2VyX3NlZ21lbnQocGFnZSwgb2Zmc2V0LCBQQUdFX1NJWkUpYCBpcyBhbm90aGVyIG5vdGFibGUgY2hhbmdlLCBsaWtlbHkgYWltZWQgYXQgaW1wcm92aW5nIHRoZSB6ZXJvaW5nIHByb2Nlc3Mgd2l0aCBwb3RlbnRpYWxseSBiZXR0ZXIgbWVtb3J5IG1hbmFnZW1lbnQuIEZpbmFsbHksIEkgbm90aWNlIHRoZXkmIzM5O3JlIHN3aXRjaGluZyBgZmx1c2hfZGNhY2hlX3BhZ2VgIHRvIGBmbHVzaF9kY2FjaGVfZm9saW9gIGFuZCBgdW5sb2NrX3BhZ2VgIHRvIGBmb2xpb191bmxvY2tgIGluIHRoZSBlcnJvciBoYW5kbGluZy4gQ2xlYXJseSB0aGV5JiMzOTtyZSBjb25zb2xpZGF0aW5nIHRoZSBmb2xpbyB1c2FnZSB0aHJvdWdob3V0LgoKQmVmb3JlIGRpdmluZyBpbnRvIHRoZSBjb2RlIGNoYW5nZXMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgTlRGUyBzdXBwb3J0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIE5URlMgaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGhvdyBpdCBpcyBjb25maWd1cmVkLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgaGFzIGEgY29uZGl0aW9uYWwgaW5jbHVzaW9uIGJhc2VkIG9uIHRoZSBjb25maWd1cmF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgaW4gdGhlIE5URlMgZGlyZWN0b3J5LCBzbyBgZnMvbnRmcy9LY29uZmlnYC4gQWgsIGhlcmUgaXQgaXMsIGBDT05GSUdfTlRGU19GU2AuIFdhaXQsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgY29uZnVzaW5nIHRoaXMgd2l0aCBudGZzMywgZ2l2ZW4gdGhlIG9uZ29pbmcgZGV2ZWxvcG1lbnQuIEdpdmVuIHRoZSBwYXRoIHRvIHRoZSBtb2RpZmllZCBmaWxlIGlzIGBmcy9udGZzL2NvbXByZXNzLmNgLCBJJiMzOTttIGNvbmZpZGVudCBpdCYjMzk7cyB0aGUgb3JpZ2luYWwgYENPTkZJR19OVEZTX0ZTYC4gSSYjMzk7bGwgc3RpbGwgcXVpY2tseSBjb25maXJtIHRoYXQgdGhlIGNvbmZpZyBpcyBzdGlsbCB0aGVyZS4gR29vZC4gV2l0aCB0aGF0IGNvbnRleHQgaW4gbWluZCwgSSBjYW4gc3RhcnQgdG8gZGlzc2VjdCB0aGUgcGF0Y2gmIzM5O3MgbG9naWMgYW5kIGFzc2VzcyBpdHMgaW1wYWN0IG9uIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDc6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5URlNfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9udGZzL0tjb25maWc6Mjpjb25maWcgTlRGU19GU1xuZnMvbnRmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9udGZzL0tjb25maWc9MTM9Y29uZmlnIE5URlNfREVCVUdcbi0tXG5mcy9udGZzL0tjb25maWctMzQtXG5mcy9udGZzL0tjb25maWc6MzU6Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXG5mcy9udGZzL0tjb25maWctMzYtXHRib29sIFwmIzM0O05URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODIxCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgTlRGUyBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIGNvbmZpcm1pbmcgdGhhdCBgQ09ORklHX05URlNfRlNgIGlzIHByZXNlbnQuLi4gZ29vZC4gTm93LCBhIGNyaXRpY2FsIHBvaW50IOKAkyBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gd2hldGhlciBgQ09ORklHX05URlNfRlNgIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4gSXQmIzM5O3MgYSBmaWxlIHN5c3RlbSwgc28gaW5pdGlhbCBlbmFibGVtZW50IGlzbiYjMzk7dCBhbHdheXMgdGhlIG5vcm0uIE5lZWQgdG8gY2hlY2sgZm9yIHRoYXQuIEFuZCB3aGlsZSBJJiMzOTttIGF0IGl0LCBJIHNob3VsZCBhbHNvIGltbWVkaWF0ZWx5IGxvb2sgZm9yIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIGNvbXByZXNzaW9uIHdpdGhpbiB0aGUgTlRGUyBzZXR1cC4gVW5kZXJzdGFuZGluZyB0aGUgY29tcHJlc3Npb24gY2FwYWJpbGl0aWVzIGFuZCB0aGVpciBkZWZhdWx0cyBpcyBpbXBvcnRhbnQgZm9yIHBlcmZvcm1hbmNlIGFuYWx5c2lzLiBHb3R0YSBnZXQgYSBmZWVsIGZvciBob3cgaXQmIzM5O3MgY29uZmlndXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTlRGU18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9udGZzL0tjb25maWc6Mjpjb25maWcgTlRGU19GU1xuZnMvbnRmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9udGZzL0tjb25maWctMTItXG5mcy9udGZzL0tjb25maWc6MTM6Y29uZmlnIE5URlNfREVCVUdcbmZzL250ZnMvS2NvbmZpZy0xNC1cdGJvb2wgXCYjMzQ7TlRGUyBkZWJ1Z2dpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbmZzL250ZnMvS2NvbmZpZy0zNC1cbmZzL250ZnMvS2NvbmZpZzozNTpjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcbmZzL250ZnMvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7TlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMTkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOVEZTIENvbXByZXNzaW9uIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIHRoZXJlJiMzOTtzIG5vIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gaXRlbSBJIGNhbiBpbW1lZGlhdGVseSBwb2ludCB0byByZWdhcmRpbmcgY29tcHJlc3Npb24sIHdoaWNoIGlzIGludGVyZXN0aW5nLiBNeSBwcmltYXJ5IHRhcmdldHMgZm9yIGludmVzdGlnYXRpb24gYXJlIGNsZWFybHkgYG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrYCBhbmQgYGhhbmRsZV9ib3VuZHNfY29tcHJlc3NlZF9wYWdlYC4gVGhhdCBpbmxpbmUgZnVuY3Rpb24sIGBoYW5kbGVfYm91bmRzX2NvbXByZXNzZWRfcGFnZWAsIGlzIGNhbGxlZCBieSAqYm90aCogYG50ZnNfZGVjb21wcmVzc2AgYW5kLCBpbXBvcnRhbnRseSwgdGhlIGFmb3JlbWVudGlvbmVkIGBudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9ja2AuIFRoaXMgbWVhbnMsIGZyb20gYSBkZWJ1Z2dpbmcgc3RhbmRwb2ludCwgSSBzaG91bGQgcHJvYmFibHkgZm9jdXMgb24gdGhvc2UgdHdvIGZ1bmN0aW9ucyAtLSBgbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2tgIGFuZCBgbnRmc19kZWNvbXByZXNzYC4gVGhleSYjMzk7cmUgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50cy4KCk5vdywgYSBjcnVjaWFsIG5leHQgc3RlcDogSSBuZWVkIHRvIHZlcmlmeSBob3cgYG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrYCBpcyBpbnZva2VkLiBJcyBpdCBjYWxsZWQgZGlyZWN0bHksIG9yIGlzIGl0IHBhcnQgb2YgYSBsYXJnZXIgYWRkcmVzcyBzcGFjZSBvcGVyYXRpb24/IEZpZ3VyaW5nIG91dCB0aGUgcmVhY2hhYmlsaXR5IG9mIHRoYXQgZnVuY3Rpb24gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O250ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvbnRmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9hb3BzLmM9NDg9c3RhdGljIGNvbnN0IHN0cnVjdCBpb21hcF9yZWFkX29wcyBudGZzX2lvbWFwX2Jpb19yZWFkX29wcyA9IHtcbi0tXG5mcy9udGZzL2FvcHMuYy02My0gKiAtIElmIHRoZSBhdHRyaWJ1dGUgaXMgbm9uLXJlc2lkZW50IGFuZCBjb21wcmVzc2VkLCB0aGUgcmVhZCBvcGVyYXRpb24gaXNcbmZzL250ZnMvYW9wcy5jOjY0OiAqICAgZGVsZWdhdGVkIHRvIG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrKCkuXG5mcy9udGZzL2FvcHMuYy02NS0gKiAtIEZvciBub3JtYWwgcmVzaWRlbnQgb3Igbm9uLXJlc2lkZW50IGF0dHJpYnV0ZSwgaXQgdXRpbGl6ZXMgdGhlIGdlbmVyaWNcbi0tXG5mcy9udGZzL2FvcHMuYz03MD1zdGF0aWMgaW50IG50ZnNfcmVhZF9mb2xpbyhzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5mcy9udGZzL2FvcHMuYy05Ni1cdFx0aWYgKE5Jbm9Ob25SZXNpZGVudChuaSkgXHUwMDI2XHUwMDI2IE5Jbm9Db21wcmVzc2VkKG5pKSlcbmZzL250ZnMvYW9wcy5jOjk3Olx0XHRcdHJldHVybiBudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9jayhmb2xpbyk7XG5mcy9udGZzL2FvcHMuYy05OC1cdH1cbi0tXG5mcy9udGZzL2NvbXByZXNzLmM9MTYzPXN0YXRpYyBpbnQgbnRmc19kZWNvbXByZXNzKHN0cnVjdCBwYWdlICpkZXN0X3BhZ2VzW10sIGludCBjb21wbGV0ZWRfcGFnZXNbXSxcbi0tXG5mcy9udGZzL2NvbXByZXNzLmMtNDM2LS8qXG5mcy9udGZzL2NvbXByZXNzLmM6NDM3OiAqIG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrIC0gcmVhZCBhIGNvbXByZXNzZWQgYmxvY2sgaW50byB0aGUgcGFnZSBjYWNoZVxuZnMvbnRmcy9jb21wcmVzcy5jLTQzOC0gKiBAZm9saW86XHRsb2NrZWQgZm9saW8gaW4gdGhlIGNvbXByZXNzaW9uIGJsb2NrKHMpIHdlIG5lZWQgdG8gcmVhZFxuLS1cbmZzL250ZnMvY29tcHJlc3MuYy00NTMtICovXG5mcy9udGZzL2NvbXByZXNzLmM6NDU0OmludCBudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9jayhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuZnMvbnRmcy9jb21wcmVzcy5jLTQ1NS17XG4tLVxuZnMvbnRmcy9udGZzLmg9MTk2PXN0YXRpYyBpbmxpbmUgc3RydWN0IG50ZnNfdm9sdW1lICpOVEZTX1NCKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4tLVxuZnMvbnRmcy9udGZzLmgtMjAzLS8qIEZyb20gZnMvbnRmcy9jb21wcmVzcy5jICovXG5mcy9udGZzL250ZnMuaDoyMDQ6aW50IG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xuZnMvbnRmcy9udGZzLmgtMjA1LWludCBhbGxvY2F0ZV9jb21wcmVzc2lvbl9idWZmZXJzKHZvaWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxMjMKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOVEZTIENvbXByZXNzaW9uIFBhdGNoKioKCk9rYXksIHNvIGBudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9ja2AgKmlzKiBkZWZpbml0ZWx5IGNhbGxlZCBmcm9tIGBudGZzX3JlYWRfZm9saW9gLCB3aGljaCBpdHNlbGYgaXMgdGhlIGByZWFkX2ZvbGlvYCBhZGRyZXNzIHNwYWNlIG9wZXJhdGlvbi4gVGhhdCYjMzk7cyBnb29kIHRvIGNvbmZpcm0g4oCTIGl0IG1lYW5zIHRoZSBmdW5jdGlvbiYjMzk7cyByZWFjaGFibGUgYW5kIHdvcmtpbmcgYXMgZXhwZWN0ZWQuCgpOb3csIHRoaXMgcGF0Y2guLi4gaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBjaGFuZ2luZyB0aGUgd2F5IGZvbGlvIGluZGljZXMgYXJlIGhhbmRsZWQuIEl0JiMzOTtzIHJlcGxhY2luZyBgcGFnZS0mZ3Q7X19mb2xpb19pbmRleGAgd2l0aCBgZm9saW8tJmd0O2luZGV4YCBhbmQgYHBhZ2Vfb2Zmc2V0KHBhZ2UpYC4gV2FpdCwgd2FzIGBwYWdlLSZndDtfX2ZvbGlvX2luZGV4YCBkZXByZWNhdGVkIG9yIHJlbW92ZWQ/IEkgbmVlZCB0byBjaGVjayB0aGUgY29tbWl0IGhpc3RvcnkuIEFoLCB5ZXMuIEl0JiMzOTtzIGFuIGludGVybmFsIGZpZWxkLiBVc2luZyBgcGFnZV9vZmZzZXQocGFnZSlgIGlzIHRoZSByaWdodCBBUEkgY2hvaWNlLCB0aGF0JiMzOTtzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGltcHJvdmVtZW50LiBUaGlzIGlzIGEgcmVmYWN0b3JpbmcsIGVmZmVjdGl2ZWx5LgoKQWxzbywgdGhlIHBhdGNoIHNlZW1zIHRvIGhhdmUgc3dhcHBlZCBvdXQgYHplcm9fcGFydGlhbF9jb21wcmVzc2VkX3BhZ2VgIGZvciBgemVyb191c2VyX3NlZ21lbnQocGFnZSwgb2Zmc2V0LCBQQUdFX1NJWkUpYC4gVGhhdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCB0b28g4oCTIGxpa2VseSBhIG1vcmUgZ2VuZXJpYyBhbmQgZWZmaWNpZW50IGFwcHJvYWNoLgoKTm93LCBqdXN0IG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBgbnRmc19kZWNvbXByZXNzYCBpcyBzdGlsbCByZWFjaGFibGUsIHRvIGJlIHN1cmUgYWxsIHRoZSBwaWVjZXMgYXJlIHN0aWxsIGluIHBsYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudGZzX2RlY29tcHJlc3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9udGZzL2NvbXByZXNzLmM9MTA1PXN0YXRpYyBpbmxpbmUgdm9pZCBoYW5kbGVfYm91bmRzX2NvbXByZXNzZWRfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSxcbi0tXG5mcy9udGZzL2NvbXByZXNzLmMtMTI1LS8qXG5mcy9udGZzL2NvbXByZXNzLmM6MTI2OiAqIG50ZnNfZGVjb21wcmVzcyAtIGRlY29tcHJlc3MgYSBjb21wcmVzc2lvbiBibG9jayBpbnRvIGFuIGFycmF5IG9mIHBhZ2VzXG5mcy9udGZzL2NvbXByZXNzLmMtMTI3LSAqIEBkZXN0X3BhZ2VzOlx0XHRkZXN0aW5hdGlvbiBhcnJheSBvZiBwYWdlc1xuLS1cbmZzL250ZnMvY29tcHJlc3MuYy0xMzktICpcbmZzL250ZnMvY29tcHJlc3MuYzoxNDA6ICogVGhlIGNhbGxlciBtdXN0IGhhdmUgZGlzYWJsZWQgcHJlZW1wdGlvbi4gbnRmc19kZWNvbXByZXNzKCkgcmVlbmFibGVzIGl0IHdoZW5cbmZzL250ZnMvY29tcHJlc3MuYy0xNDEtICogdGhlIGNyaXRpY2FsIHNlY3Rpb24gaXMgZmluaXNoZWQuXG4tLVxuZnMvbnRmcy9jb21wcmVzcy5jLTE2Mi0gKi9cbmZzL250ZnMvY29tcHJlc3MuYzoxNjM6c3RhdGljIGludCBudGZzX2RlY29tcHJlc3Moc3RydWN0IHBhZ2UgKmRlc3RfcGFnZXNbXSwgaW50IGNvbXBsZXRlZF9wYWdlc1tdLFxuZnMvbnRmcy9jb21wcmVzcy5jLTE2NC1cdFx0aW50ICpkZXN0X2luZGV4LCBpbnQgKmRlc3Rfb2ZzLCBjb25zdCBpbnQgZGVzdF9tYXhfaW5kZXgsXG4tLVxuZnMvbnRmcy9jb21wcmVzcy5jPTQ1ND1pbnQgbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2soc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5mcy9udGZzL2NvbXByZXNzLmMtNzc5LVx0XHRudGZzX2RlYnVnKFwmIzM0O0ZvdW5kIGNvbXByZXNzZWQgY29tcHJlc3Npb24gYmxvY2suXCYjMzQ7KTtcbmZzL250ZnMvY29tcHJlc3MuYzo3ODA6XHRcdGVyciA9IG50ZnNfZGVjb21wcmVzcyhwYWdlcywgY29tcGxldGVkX3BhZ2VzLCBcdTAwMjZjdXJfcGFnZSxcbmZzL250ZnMvY29tcHJlc3MuYy03ODEtXHRcdFx0XHRcdTAwMjZjdXJfb2ZzLCBjYl9tYXhfcGFnZSwgY2JfbWF4X29mcywgeHBhZ2UsXG4tLVxuZnMvbnRmcy9jb21wcmVzcy5jLTc4NS1cdFx0ICogV2UgY2FuIHNsZWVwIGZyb20gbm93IG9uLCBsb2NrIGFscmVhZHkgZHJvcHBlZCBieVxuZnMvbnRmcy9jb21wcmVzcy5jOjc4NjpcdFx0ICogbnRmc19kZWNvbXByZXNzKCkuXG5mcy9udGZzL2NvbXByZXNzLmMtNzg3LVx0XHQgKi9cbi0tXG5mcy9udGZzL2NvbXByZXNzLmMtNzg5LVx0XHRcdG50ZnNfZXJyb3Iodm9sLVx1MDAzZXNiLFxuZnMvbnRmcy9jb21wcmVzcy5jOjc5MDpcdFx0XHRcdFwmIzM0O250ZnNfZGVjb21wcmVzcygpIGZhaWxlZCBpbiBpbm9kZSAweCVsbHggd2l0aCBlcnJvciBjb2RlICVpLiBTa2lwcGluZyB0aGlzIGNvbXByZXNzaW9uIGJsb2NrLlwmIzM0OyxcbmZzL250ZnMvY29tcHJlc3MuYy03OTEtXHRcdFx0XHRuaS1cdTAwM2VtZnRfbm8sIC1lcnIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTgyCgkJCQkJCQlvdXRwdXQ6IDEwMgoJCQkJCQkJdGhvdWdodHM6IDI3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgTlRGUyBDb21wcmVzc2lvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSB0cmFjZWQgdGhlIGNhbGwgcGF0aCDigJMgaXQgbG9va3MgbGlrZSBgbnRmc19kZWNvbXByZXNzYCBnZXRzIGludm9rZWQgZGlyZWN0bHkgZnJvbSBgbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2tgLiBUaGF0IG1ha2VzIHRoZSB0d28gY3JpdGljYWwgZnVuY3Rpb25zIHRvIGZvY3VzIG9uLCBhcyBJIHN1c3BlY3RlZCwgYG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrYCBhbmQgYG50ZnNfZGVjb21wcmVzc2AuCgpOb3csIHRoZSBjb25maWd1cmF0aW9uLi4uIEkgaW5pdGlhbGx5IHNhdyBgTlRGU19GU2AsIGJ1dCBpdCYjMzk7cyBhbHdheXMgZ29vZCB0byBkb3VibGUtY2hlY2suIFJpZ2h0LCBhIHF1aWNrIHNjYW4gY29uZmlybWVkIHRoYXQgYE5URlNfRlNgIGlzIGluZGVlZCB0aGUgbWFpbiBjb25maWcuIEFoLCBidXQgdGhhdCYjMzk7cyB0aGUgKm9sZCogTlRGUyBkcml2ZXIhIFRoZXJlJiMzOTtzIGBOVEZTM19GU2AgYXMgd2VsbC4gSG1tLCB0aGUgcGF0Y2ggaXMgY2hhbmdpbmcgYGZzL250ZnMvY29tcHJlc3MuY2AsIHNvIGl0JiMzOTtzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIG9yaWdpbmFsIE5URlMgZHJpdmVyIHVuZGVyIGBOVEZTX0ZTYC4gVGhpcyBjb25maXJtcyBgTlRGU19GU2AgaXMgdGhlIGNvcnJlY3QgY29uZmlnIHRvIGNvbnNpZGVyLgoKTGV0IG1lIGp1c3QgY29uZmlybSB0aGF0IGBOVEZTX0ZTYCBpcyBzdWZmaWNpZW50LiBPa2F5LCBgQ09ORklHX05URlNfRlNgIGlzIGEgdHJpc3RhdGUsIGFuZCBsb29raW5nIGFyb3VuZCwgSSBkb24mIzM5O3Qgc2VlIGFueSBvdGhlciBlc3NlbnRpYWwgY29uZmlncyBoZXJlLiBTbyB3ZSYjMzk7cmUgZ29vZCB0byBnby4KCkhlcmUmIzM5O3MgbXkgZGlzdGlsbGVkIHN1bW1hcnk6CgoqICAgKipXb3J0aEZ1enppbmc6KiogVHJ1ZSAtIFRoaXMgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgaG93IGNvbXByZXNzZWQgZGF0YSBpcyByZWFkLgoqICAgKipGb2N1c1N5bWJvbHM6KiogYFsmIzM0O250ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrJiMzNDssICYjMzQ7bnRmc19kZWNvbXByZXNzJiMzNDtdYCAtIFRoZXNlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucy4KKiAgICoqRW5hYmxlQ29uZmlnczoqKiBgWyYjMzQ7TlRGU19GUyYjMzQ7XWAgLSBUaGUgcmlnaHQgY29uZmlnIGZvciB0aGUgb3JpZ2luYWwgTlRGUyBkcml2ZXIuCiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhdCB0aGUgY29yZSByZWFkIGxldmVsIGZvciBjb21wcmVzc2VkIGZpbGVzLCByZXBsYWNpbmcgZGlyZWN0IGFjY2VzcyB0byBwYWdlLSZndDtfX2ZvbGlvX2luZGV4IHdpdGggZm9saW8gQVBJcyBhbmQgemVyb191c2VyX3NlZ21lbnQuIFRoaXMgaXMgYSBjcnVjaWFsIGNoYW5nZSB0byBob3cgdGhlIGZpbGUgc3lzdGVtIGhhbmRsZXMgY29tcHJlc3NlZCBkYXRhLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TlRGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O250ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrJiMzNDssCiAgICAmIzM0O250ZnNfZGVjb21wcmVzcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaGFuZGxpbmcgb2YgY29tcHJlc3NlZCBwYWdlcyBpbiB0aGUgTlRGUyBmaWxlc3lzdGVtLCByZXBsYWNpbmcgZGlyZWN0IGFjY2VzcyB0byBwYWdlLVx1MDAzZV9fZm9saW9faW5kZXggd2l0aCBwcm9wZXIgZm9saW8gQVBJcyBhbmQgemVyb191c2VyX3NlZ21lbnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSByZWFkIHBhdGggZm9yIGNvbXByZXNzZWQgZmlsZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9jayYjMzQ7LAogICAgJiMzNDtudGZzX2RlY29tcHJlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGhhbmRsaW5nIG9mIGNvbXByZXNzZWQgcGFnZXMgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSwgcmVwbGFjaW5nIGRpcmVjdCBhY2Nlc3MgdG8gcGFnZS1cdTAwM2VfX2ZvbGlvX2luZGV4IHdpdGggcHJvcGVyIGZvbGlvIEFQSXMgYW5kIHplcm9fdXNlcl9zZWdtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgcmVhZCBwYXRoIGZvciBjb21wcmVzc2VkIGZpbGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6NTA6MjAuMDIwOTIyOTQxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ1MDk5NzQwNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlRGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrXCIsXG4gICAgXCJudGZzX2RlY29tcHJlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaGFuZGxpbmcgb2YgY29tcHJlc3NlZCBwYWdlcyBpbiB0aGUgTlRGUyBmaWxlc3lzdGVtLCByZXBsYWNpbmcgZGlyZWN0IGFjY2VzcyB0byBwYWdlLVxcdTAwM2VfX2ZvbGlvX2luZGV4IHdpdGggcHJvcGVyIGZvbGlvIEFQSXMgYW5kIHplcm9fdXNlcl9zZWdtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgcmVhZCBwYXRoIGZvciBjb21wcmVzc2VkIGZpbGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzo1MDoyMC4wMjA5Mjk1MzFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxNzQ3NTY2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDI4Y2UwOWEzZGQxYjE2MWMxODE1ODIwNDgwZDI0NjUxMTU1ZjU0MTdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMTUgMDc6NTA6MTggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvbnRmcy9jb21wcmVzcy5jIGIvZnMvbnRmcy9jb21wcmVzcy5jXFxuaW5kZXggNzZiZDgwNmI0MWVkZDkuLmQ4M2QzZThlMDZhZWJiIDEwMDY0NFxcbi0tLSBhL2ZzL250ZnMvY29tcHJlc3MuY1xcbisrKyBiL2ZzL250ZnMvY29tcHJlc3MuY1xcbkBAIC05NiwyNiArOTYsNiBAQCB2b2lkIGZyZWVfY29tcHJlc3Npb25fYnVmZmVycyh2b2lkKVxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNm50ZnNfY2JfbG9jayk7XFxuIH1cXG4gXFxuLS8qXFxuLSAqIHplcm9fcGFydGlhbF9jb21wcmVzc2VkX3BhZ2UgLSB6ZXJvIG91dCBvZiBib3VuZHMgY29tcHJlc3NlZCBwYWdlIHJlZ2lvblxcbi0gKiBAcGFnZTogcGFnZSB0byB6ZXJvXFxuLSAqIEBpbml0aWFsaXplZF9zaXplOiBpbml0aWFsaXplZCBzaXplIG9mIHRoZSBhdHRyaWJ1dGVcXG4tICovXFxuLXN0YXRpYyB2b2lkIHplcm9fcGFydGlhbF9jb21wcmVzc2VkX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsXFxuLVxcdFxcdGNvbnN0IHM2NCBpbml0aWFsaXplZF9zaXplKVxcbi17XFxuLVxcdHU4ICprcCA9IHBhZ2VfYWRkcmVzcyhwYWdlKTtcXG4tXFx0dW5zaWduZWQgaW50IGtwX29mcztcXG4tXFxuLVxcdG50ZnNfZGVidWcoXFxcIlplcm9pbmcgcGFnZSByZWdpb24gb3V0c2lkZSBpbml0aWFsaXplZCBzaXplLlxcXCIpO1xcbi1cXHRpZiAoKChzNjQpcGFnZS1cXHUwMDNlX19mb2xpb19pbmRleCBcXHUwMDNjXFx1MDAzYyBQQUdFX1NISUZUKSBcXHUwMDNlPSBpbml0aWFsaXplZF9zaXplKSB7XFxuLVxcdFxcdGNsZWFyX3BhZ2Uoa3ApO1xcbi1cXHRcXHRyZXR1cm47XFxuLVxcdH1cXG4tXFx0a3Bfb2ZzID0gaW5pdGlhbGl6ZWRfc2l6ZSBcXHUwMDI2IH5QQUdFX01BU0s7XFxuLVxcdG1lbXNldChrcCArIGtwX29mcywgMCwgUEFHRV9TSVpFIC0ga3Bfb2ZzKTtcXG4tfVxcbi1cXG4gLypcXG4gICogaGFuZGxlX2JvdW5kc19jb21wcmVzc2VkX3BhZ2UgLSB0ZXN0IGZvclxcdTAwMjZoYW5kbGUgb3V0IG9mIGJvdW5kcyBjb21wcmVzc2VkIHBhZ2VcXG4gICogQHBhZ2U6IHBhZ2UgdG8gY2hlY2sgYW5kIGhhbmRsZVxcbkBAIC0xMjUsOSArMTA1LDIxIEBAIHN0YXRpYyB2b2lkIHplcm9fcGFydGlhbF9jb21wcmVzc2VkX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsXFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBoYW5kbGVfYm91bmRzX2NvbXByZXNzZWRfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSxcXG4gXFx0XFx0Y29uc3QgbG9mZl90IGlfc2l6ZSwgY29uc3QgczY0IGluaXRpYWxpemVkX3NpemUpXFxuIHtcXG4tXFx0aWYgKChwYWdlLVxcdTAwM2VfX2ZvbGlvX2luZGV4IFxcdTAwM2U9IChpbml0aWFsaXplZF9zaXplIFxcdTAwM2VcXHUwMDNlIFBBR0VfU0hJRlQpKSBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHRcXHQoaW5pdGlhbGl6ZWRfc2l6ZSBcXHUwMDNjIGlfc2l6ZSkpXFxuLVxcdFxcdHplcm9fcGFydGlhbF9jb21wcmVzc2VkX3BhZ2UocGFnZSwgaW5pdGlhbGl6ZWRfc2l6ZSk7XFxuK1xcdGxvZmZfdCBwb3MgPSBwYWdlX29mZnNldChwYWdlKTtcXG4rXFxuK1xcdGlmICgocG9zICsgUEFHRV9TSVpFIFxcdTAwM2UgaW5pdGlhbGl6ZWRfc2l6ZSkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0XFx0KGluaXRpYWxpemVkX3NpemUgXFx1MDAzYyBpX3NpemUpKSB7XFxuK1xcdFxcdHNpemVfdCBvZmZzZXQ7XFxuK1xcbitcXHRcXHRudGZzX2RlYnVnKFxcXCJaZXJvaW5nIHBhZ2UgcmVnaW9uIG91dHNpZGUgaW5pdGlhbGl6ZWQgc2l6ZS5cXFwiKTtcXG4rXFx0XFx0aWYgKHBvcyBcXHUwMDNlPSBpbml0aWFsaXplZF9zaXplKVxcbitcXHRcXHRcXHRvZmZzZXQgPSAwO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdG9mZnNldCA9IG9mZnNldF9pbl9wYWdlKGluaXRpYWxpemVkX3NpemUpO1xcbitcXHRcXHR6ZXJvX3VzZXJfc2VnbWVudChwYWdlLCBvZmZzZXQsIFBBR0VfU0laRSk7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGZsdXNoX2RjYWNoZV9wYWdlKHBhZ2UpO1xcbitcXHR9XFxuIH1cXG4gXFxuIC8qXFxuQEAgLTIzMSw3ICsyMjMsNiBAQCBzdGF0aWMgaW50IG50ZnNfZGVjb21wcmVzcyhzdHJ1Y3QgcGFnZSAqZGVzdF9wYWdlc1tdLCBpbnQgY29tcGxldGVkX3BhZ2VzW10sXFxuIFxcdFxcdFxcdFxcdCAqL1xcbiBcXHRcXHRcXHRcXHRoYW5kbGVfYm91bmRzX2NvbXByZXNzZWRfcGFnZShkcCwgaV9zaXplLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRpbml0aWFsaXplZF9zaXplKTtcXG4tXFx0XFx0XFx0XFx0Zmx1c2hfZGNhY2hlX3BhZ2UoZHApO1xcbiBcXHRcXHRcXHRcXHRrdW5tYXBfbG9jYWwocGFnZV9hZGRyZXNzKGRwKSk7XFxuIFxcdFxcdFxcdFxcdFNldFBhZ2VVcHRvZGF0ZShkcCk7XFxuIFxcdFxcdFxcdFxcdHVubG9ja19wYWdlKGRwKTtcXG5AQCAtNDY1LDE0ICs0NTYsMTQgQEAgaW50IG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuIFxcdHN0cnVjdCBwYWdlICpwYWdlID0gXFx1MDAyNmZvbGlvLVxcdTAwM2VwYWdlO1xcbiBcXHRsb2ZmX3QgaV9zaXplO1xcbiBcXHRzNjQgaW5pdGlhbGl6ZWRfc2l6ZTtcXG4tXFx0c3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBwYWdlLVxcdTAwM2VtYXBwaW5nO1xcbitcXHRzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IGZvbGlvLVxcdTAwM2VtYXBwaW5nO1xcbiBcXHRzdHJ1Y3QgbnRmc19pbm9kZSAqbmkgPSBOVEZTX0kobWFwcGluZy1cXHUwMDNlaG9zdCk7XFxuIFxcdHN0cnVjdCBudGZzX3ZvbHVtZSAqdm9sID0gbmktXFx1MDAzZXZvbDtcXG4gXFx0c3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IHZvbC1cXHUwMDNlc2I7XFxuIFxcdHN0cnVjdCBydW5saXN0X2VsZW1lbnQgKnJsO1xcbiBcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbiBcXHR1OCAqY2IsICpjYl9wb3MsICpjYl9lbmQ7XFxuLVxcdHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBpbmRleCA9IHBhZ2UtXFx1MDAzZV9fZm9saW9faW5kZXg7XFxuK1xcdHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBpbmRleCA9IGZvbGlvLVxcdTAwM2VpbmRleDtcXG4gXFx0dTMyIGNiX3NpemUgPSBuaS1cXHUwMDNlaXR5cGUuY29tcHJlc3NlZC5ibG9ja19zaXplO1xcbiBcXHR1NjQgY2Jfc2l6ZV9tYXNrID0gY2Jfc2l6ZSAtIDFVTDtcXG4gXFx0czY0IHZjbjtcXG5AQCAtNzY3LDcgKzc1OCw2IEBAIGludCBudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9jayhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbiBcXHRcXHRcXHRcXHQgKi9cXG4gXFx0XFx0XFx0XFx0aGFuZGxlX2JvdW5kc19jb21wcmVzc2VkX3BhZ2UocGFnZSwgaV9zaXplLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRpbml0aWFsaXplZF9zaXplKTtcXG4tXFx0XFx0XFx0XFx0Zmx1c2hfZGNhY2hlX3BhZ2UocGFnZSk7XFxuIFxcdFxcdFxcdFxcdGt1bm1hcF9sb2NhbChwYWdlX2FkZHJlc3MocGFnZSkpO1xcbiBcXHRcXHRcXHRcXHRTZXRQYWdlVXB0b2RhdGUocGFnZSk7XFxuIFxcdFxcdFxcdFxcdHVubG9ja19wYWdlKHBhZ2UpO1xcbkBAIC04MjIsMTQgKzgxMiwxNiBAQCBpbnQgbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2soc3RydWN0IGZvbGlvICpmb2xpbylcXG4gXFx0Zm9yIChjdXJfcGFnZSA9IDA7IGN1cl9wYWdlIFxcdTAwM2MgbWF4X3BhZ2U7IGN1cl9wYWdlKyspIHtcXG4gXFx0XFx0cGFnZSA9IHBhZ2VzW2N1cl9wYWdlXTtcXG4gXFx0XFx0aWYgKHBhZ2UpIHtcXG4rXFx0XFx0XFx0Zm9saW8gPSBwYWdlX2ZvbGlvKHBhZ2UpO1xcbitcXG4gXFx0XFx0XFx0bnRmc19lcnJvcih2b2wtXFx1MDAzZXNiLFxcbiBcXHRcXHRcXHRcXHRcXFwiU3RpbGwgaGF2ZSBwYWdlcyBsZWZ0ISBUZXJtaW5hdGluZyB0aGVtIHdpdGggZXh0cmVtZSBwcmVqdWRpY2UuICBJbm9kZSAweCVsbHgsIHBhZ2UgaW5kZXggMHglbHguXFxcIixcXG4tXFx0XFx0XFx0XFx0bmktXFx1MDAzZW1mdF9ubywgcGFnZS1cXHUwMDNlX19mb2xpb19pbmRleCk7XFxuLVxcdFxcdFxcdGZsdXNoX2RjYWNoZV9wYWdlKHBhZ2UpO1xcbitcXHRcXHRcXHRcXHRuaS1cXHUwMDNlbWZ0X25vLCBmb2xpby1cXHUwMDNlaW5kZXgpO1xcbitcXHRcXHRcXHRmbHVzaF9kY2FjaGVfZm9saW8oZm9saW8pO1xcbiBcXHRcXHRcXHRrdW5tYXBfbG9jYWwocGFnZV9hZGRyZXNzKHBhZ2UpKTtcXG4tXFx0XFx0XFx0dW5sb2NrX3BhZ2UocGFnZSk7XFxuK1xcdFxcdFxcdGZvbGlvX3VubG9jayhmb2xpbyk7XFxuIFxcdFxcdFxcdGlmIChjdXJfcGFnZSAhPSB4cGFnZSlcXG4tXFx0XFx0XFx0XFx0cHV0X3BhZ2UocGFnZSk7XFxuK1xcdFxcdFxcdFxcdGZvbGlvX3B1dChmb2xpbyk7XFxuIFxcdFxcdFxcdHBhZ2VzW2N1cl9wYWdlXSA9IE5VTEw7XFxuIFxcdFxcdH1cXG4gXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzo1MDoyMC42MzkxMTg5ODdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzODkxNzY5OTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5URlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9ja1wiLFxuICAgIFwibnRmc19kZWNvbXByZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGhhbmRsaW5nIG9mIGNvbXByZXNzZWQgcGFnZXMgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSwgcmVwbGFjaW5nIGRpcmVjdCBhY2Nlc3MgdG8gcGFnZS1cXHUwMDNlX19mb2xpb19pbmRleCB3aXRoIHByb3BlciBmb2xpbyBBUElzIGFuZCB6ZXJvX3VzZXJfc2VnbWVudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIHJlYWQgcGF0aCBmb3IgY29tcHJlc3NlZCBmaWxlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyOGNlMDlhM2RkMWIxNjFjMTgxNTgyMDQ4MGQyNDY1MTE1NWY1NDE3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMDc6NTA6MTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9udGZzL2NvbXByZXNzLmMgYi9mcy9udGZzL2NvbXByZXNzLmNcbmluZGV4IDc2YmQ4MDZiNDFlZGQ5Li5kODNkM2U4ZTA2YWViYiAxMDA2NDRcbi0tLSBhL2ZzL250ZnMvY29tcHJlc3MuY1xuKysrIGIvZnMvbnRmcy9jb21wcmVzcy5jXG5AQCAtOTYsMjYgKzk2LDYgQEAgdm9pZCBmcmVlX2NvbXByZXNzaW9uX2J1ZmZlcnModm9pZClcbiBcdG11dGV4X3VubG9jayhcdTAwMjZudGZzX2NiX2xvY2spO1xuIH1cbiBcbi0vKlxuLSAqIHplcm9fcGFydGlhbF9jb21wcmVzc2VkX3BhZ2UgLSB6ZXJvIG91dCBvZiBib3VuZHMgY29tcHJlc3NlZCBwYWdlIHJlZ2lvblxuLSAqIEBwYWdlOiBwYWdlIHRvIHplcm9cbi0gKiBAaW5pdGlhbGl6ZWRfc2l6ZTogaW5pdGlhbGl6ZWQgc2l6ZSBvZiB0aGUgYXR0cmlidXRlXG4tICovXG4tc3RhdGljIHZvaWQgemVyb19wYXJ0aWFsX2NvbXByZXNzZWRfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSxcbi1cdFx0Y29uc3QgczY0IGluaXRpYWxpemVkX3NpemUpXG4te1xuLVx0dTggKmtwID0gcGFnZV9hZGRyZXNzKHBhZ2UpO1xuLVx0dW5zaWduZWQgaW50IGtwX29mcztcbi1cbi1cdG50ZnNfZGVidWcoXCJaZXJvaW5nIHBhZ2UgcmVnaW9uIG91dHNpZGUgaW5pdGlhbGl6ZWQgc2l6ZS5cIik7XG4tXHRpZiAoKChzNjQpcGFnZS1cdTAwM2VfX2ZvbGlvX2luZGV4IFx1MDAzY1x1MDAzYyBQQUdFX1NISUZUKSBcdTAwM2U9IGluaXRpYWxpemVkX3NpemUpIHtcbi1cdFx0Y2xlYXJfcGFnZShrcCk7XG4tXHRcdHJldHVybjtcbi1cdH1cbi1cdGtwX29mcyA9IGluaXRpYWxpemVkX3NpemUgXHUwMDI2IH5QQUdFX01BU0s7XG4tXHRtZW1zZXQoa3AgKyBrcF9vZnMsIDAsIFBBR0VfU0laRSAtIGtwX29mcyk7XG4tfVxuLVxuIC8qXG4gICogaGFuZGxlX2JvdW5kc19jb21wcmVzc2VkX3BhZ2UgLSB0ZXN0IGZvclx1MDAyNmhhbmRsZSBvdXQgb2YgYm91bmRzIGNvbXByZXNzZWQgcGFnZVxuICAqIEBwYWdlOiBwYWdlIHRvIGNoZWNrIGFuZCBoYW5kbGVcbkBAIC0xMjUsOSArMTA1LDIxIEBAIHN0YXRpYyB2b2lkIHplcm9fcGFydGlhbF9jb21wcmVzc2VkX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsXG4gc3RhdGljIGlubGluZSB2b2lkIGhhbmRsZV9ib3VuZHNfY29tcHJlc3NlZF9wYWdlKHN0cnVjdCBwYWdlICpwYWdlLFxuIFx0XHRjb25zdCBsb2ZmX3QgaV9zaXplLCBjb25zdCBzNjQgaW5pdGlhbGl6ZWRfc2l6ZSlcbiB7XG4tXHRpZiAoKHBhZ2UtXHUwMDNlX19mb2xpb19pbmRleCBcdTAwM2U9IChpbml0aWFsaXplZF9zaXplIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUKSkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0KGluaXRpYWxpemVkX3NpemUgXHUwMDNjIGlfc2l6ZSkpXG4tXHRcdHplcm9fcGFydGlhbF9jb21wcmVzc2VkX3BhZ2UocGFnZSwgaW5pdGlhbGl6ZWRfc2l6ZSk7XG4rXHRsb2ZmX3QgcG9zID0gcGFnZV9vZmZzZXQocGFnZSk7XG4rXG4rXHRpZiAoKHBvcyArIFBBR0VfU0laRSBcdTAwM2UgaW5pdGlhbGl6ZWRfc2l6ZSkgXHUwMDI2XHUwMDI2XG4rXHRcdFx0KGluaXRpYWxpemVkX3NpemUgXHUwMDNjIGlfc2l6ZSkpIHtcbitcdFx0c2l6ZV90IG9mZnNldDtcbitcbitcdFx0bnRmc19kZWJ1ZyhcIlplcm9pbmcgcGFnZSByZWdpb24gb3V0c2lkZSBpbml0aWFsaXplZCBzaXplLlwiKTtcbitcdFx0aWYgKHBvcyBcdTAwM2U9IGluaXRpYWxpemVkX3NpemUpXG4rXHRcdFx0b2Zmc2V0ID0gMDtcbitcdFx0ZWxzZVxuK1x0XHRcdG9mZnNldCA9IG9mZnNldF9pbl9wYWdlKGluaXRpYWxpemVkX3NpemUpO1xuK1x0XHR6ZXJvX3VzZXJfc2VnbWVudChwYWdlLCBvZmZzZXQsIFBBR0VfU0laRSk7XG4rXHR9IGVsc2Uge1xuK1x0XHRmbHVzaF9kY2FjaGVfcGFnZShwYWdlKTtcbitcdH1cbiB9XG4gXG4gLypcbkBAIC0yMzEsNyArMjIzLDYgQEAgc3RhdGljIGludCBudGZzX2RlY29tcHJlc3Moc3RydWN0IHBhZ2UgKmRlc3RfcGFnZXNbXSwgaW50IGNvbXBsZXRlZF9wYWdlc1tdLFxuIFx0XHRcdFx0ICovXG4gXHRcdFx0XHRoYW5kbGVfYm91bmRzX2NvbXByZXNzZWRfcGFnZShkcCwgaV9zaXplLFxuIFx0XHRcdFx0XHRcdGluaXRpYWxpemVkX3NpemUpO1xuLVx0XHRcdFx0Zmx1c2hfZGNhY2hlX3BhZ2UoZHApO1xuIFx0XHRcdFx0a3VubWFwX2xvY2FsKHBhZ2VfYWRkcmVzcyhkcCkpO1xuIFx0XHRcdFx0U2V0UGFnZVVwdG9kYXRlKGRwKTtcbiBcdFx0XHRcdHVubG9ja19wYWdlKGRwKTtcbkBAIC00NjUsMTQgKzQ1NiwxNCBAQCBpbnQgbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2soc3RydWN0IGZvbGlvICpmb2xpbylcbiBcdHN0cnVjdCBwYWdlICpwYWdlID0gXHUwMDI2Zm9saW8tXHUwMDNlcGFnZTtcbiBcdGxvZmZfdCBpX3NpemU7XG4gXHRzNjQgaW5pdGlhbGl6ZWRfc2l6ZTtcbi1cdHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gcGFnZS1cdTAwM2VtYXBwaW5nO1xuK1x0c3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBmb2xpby1cdTAwM2VtYXBwaW5nO1xuIFx0c3RydWN0IG50ZnNfaW5vZGUgKm5pID0gTlRGU19JKG1hcHBpbmctXHUwMDNlaG9zdCk7XG4gXHRzdHJ1Y3QgbnRmc192b2x1bWUgKnZvbCA9IG5pLVx1MDAzZXZvbDtcbiBcdHN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSB2b2wtXHUwMDNlc2I7XG4gXHRzdHJ1Y3QgcnVubGlzdF9lbGVtZW50ICpybDtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXHR1OCAqY2IsICpjYl9wb3MsICpjYl9lbmQ7XG4tXHR1bnNpZ25lZCBsb25nIG9mZnNldCwgaW5kZXggPSBwYWdlLVx1MDAzZV9fZm9saW9faW5kZXg7XG4rXHR1bnNpZ25lZCBsb25nIG9mZnNldCwgaW5kZXggPSBmb2xpby1cdTAwM2VpbmRleDtcbiBcdHUzMiBjYl9zaXplID0gbmktXHUwMDNlaXR5cGUuY29tcHJlc3NlZC5ibG9ja19zaXplO1xuIFx0dTY0IGNiX3NpemVfbWFzayA9IGNiX3NpemUgLSAxVUw7XG4gXHRzNjQgdmNuO1xuQEAgLTc2Nyw3ICs3NTgsNiBAQCBpbnQgbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2soc3RydWN0IGZvbGlvICpmb2xpbylcbiBcdFx0XHRcdCAqL1xuIFx0XHRcdFx0aGFuZGxlX2JvdW5kc19jb21wcmVzc2VkX3BhZ2UocGFnZSwgaV9zaXplLFxuIFx0XHRcdFx0XHRcdGluaXRpYWxpemVkX3NpemUpO1xuLVx0XHRcdFx0Zmx1c2hfZGNhY2hlX3BhZ2UocGFnZSk7XG4gXHRcdFx0XHRrdW5tYXBfbG9jYWwocGFnZV9hZGRyZXNzKHBhZ2UpKTtcbiBcdFx0XHRcdFNldFBhZ2VVcHRvZGF0ZShwYWdlKTtcbiBcdFx0XHRcdHVubG9ja19wYWdlKHBhZ2UpO1xuQEAgLTgyMiwxNCArODEyLDE2IEBAIGludCBudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9jayhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuIFx0Zm9yIChjdXJfcGFnZSA9IDA7IGN1cl9wYWdlIFx1MDAzYyBtYXhfcGFnZTsgY3VyX3BhZ2UrKykge1xuIFx0XHRwYWdlID0gcGFnZXNbY3VyX3BhZ2VdO1xuIFx0XHRpZiAocGFnZSkge1xuK1x0XHRcdGZvbGlvID0gcGFnZV9mb2xpbyhwYWdlKTtcbitcbiBcdFx0XHRudGZzX2Vycm9yKHZvbC1cdTAwM2VzYixcbiBcdFx0XHRcdFwiU3RpbGwgaGF2ZSBwYWdlcyBsZWZ0ISBUZXJtaW5hdGluZyB0aGVtIHdpdGggZXh0cmVtZSBwcmVqdWRpY2UuICBJbm9kZSAweCVsbHgsIHBhZ2UgaW5kZXggMHglbHguXCIsXG4tXHRcdFx0XHRuaS1cdTAwM2VtZnRfbm8sIHBhZ2UtXHUwMDNlX19mb2xpb19pbmRleCk7XG4tXHRcdFx0Zmx1c2hfZGNhY2hlX3BhZ2UocGFnZSk7XG4rXHRcdFx0XHRuaS1cdTAwM2VtZnRfbm8sIGZvbGlvLVx1MDAzZWluZGV4KTtcbitcdFx0XHRmbHVzaF9kY2FjaGVfZm9saW8oZm9saW8pO1xuIFx0XHRcdGt1bm1hcF9sb2NhbChwYWdlX2FkZHJlc3MocGFnZSkpO1xuLVx0XHRcdHVubG9ja19wYWdlKHBhZ2UpO1xuK1x0XHRcdGZvbGlvX3VubG9jayhmb2xpbyk7XG4gXHRcdFx0aWYgKGN1cl9wYWdlICE9IHhwYWdlKVxuLVx0XHRcdFx0cHV0X3BhZ2UocGFnZSk7XG4rXHRcdFx0XHRmb2xpb19wdXQoZm9saW8pO1xuIFx0XHRcdHBhZ2VzW2N1cl9wYWdlXSA9IE5VTEw7XG4gXHRcdH1cbiBcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjUwOjIwLjYzOTEyMDE2N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4Mzc0MTYxODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gdGhlIE5URlMgQ29tcHJlc3Npb24gQ29kZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIGJlZW4gYXBwbGllZCB0byBgZnMvbnRmcy9jb21wcmVzcy5jYC4gSW1tZWRpYXRlbHksIEkgc2VlIGl0J3MgdG91Y2hpbmcgYGhhbmRsZV9ib3VuZHNfY29tcHJlc3NlZF9wYWdlYCBhbmQgYG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrYC4gVGhhdCdzIGludGVyZXN0aW5nLCBzdWdnZXN0aW5nIGNoYW5nZXMgdG8gaG93IGNvbXByZXNzZWQgZGF0YSBpcyBoYW5kbGVkIGF0IHRoZSBwYWdlIGxldmVsLiBUaGV5J3ZlIHJlcGxhY2VkIHRoZSBkaXJlY3QgdXNlIG9mIGBwYWdlLVx1MDAzZV9fZm9saW9faW5kZXhgIHdpdGggYGZvbGlvLVx1MDAzZWluZGV4YCBvciBgcGFnZV9vZmZzZXQocGFnZSlgLCB3aGljaCBpcyBhIHByZXR0eSBzdGFuZGFyZCBmb2xpby9wYWdlIHN0cnVjdHVyZSB1cGRhdGUsIG5vdGhpbmcgYWxhcm1pbmcuIFJlcGxhY2luZyBgemVyb19wYXJ0aWFsX2NvbXByZXNzZWRfcGFnZWAgd2l0aCBgemVyb191c2VyX3NlZ21lbnQocGFnZSwgb2Zmc2V0LCBQQUdFX1NJWkUpYCBpcyBhbm90aGVyIG5vdGFibGUgY2hhbmdlLCBsaWtlbHkgYWltZWQgYXQgaW1wcm92aW5nIHRoZSB6ZXJvaW5nIHByb2Nlc3Mgd2l0aCBwb3RlbnRpYWxseSBiZXR0ZXIgbWVtb3J5IG1hbmFnZW1lbnQuIEZpbmFsbHksIEkgbm90aWNlIHRoZXkncmUgc3dpdGNoaW5nIGBmbHVzaF9kY2FjaGVfcGFnZWAgdG8gYGZsdXNoX2RjYWNoZV9mb2xpb2AgYW5kIGB1bmxvY2tfcGFnZWAgdG8gYGZvbGlvX3VubG9ja2AgaW4gdGhlIGVycm9yIGhhbmRsaW5nLiBDbGVhcmx5IHRoZXkncmUgY29uc29saWRhdGluZyB0aGUgZm9saW8gdXNhZ2UgdGhyb3VnaG91dC5cblxuQmVmb3JlIGRpdmluZyBpbnRvIHRoZSBjb2RlIGNoYW5nZXMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgTlRGUyBzdXBwb3J0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIE5URlMgaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGhvdyBpdCBpcyBjb25maWd1cmVkLiBMZXQncyBzZWUgaWYgdGhpcyBoYXMgYSBjb25kaXRpb25hbCBpbmNsdXNpb24gYmFzZWQgb24gdGhlIGNvbmZpZ3VyYXRpb24uIEknbGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGluIHRoZSBOVEZTIGRpcmVjdG9yeSwgc28gYGZzL250ZnMvS2NvbmZpZ2AuIEFoLCBoZXJlIGl0IGlzLCBgQ09ORklHX05URlNfRlNgLiBXYWl0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgY29uZnVzaW5nIHRoaXMgd2l0aCBudGZzMywgZ2l2ZW4gdGhlIG9uZ29pbmcgZGV2ZWxvcG1lbnQuIEdpdmVuIHRoZSBwYXRoIHRvIHRoZSBtb2RpZmllZCBmaWxlIGlzIGBmcy9udGZzL2NvbXByZXNzLmNgLCBJJ20gY29uZmlkZW50IGl0J3MgdGhlIG9yaWdpbmFsIGBDT05GSUdfTlRGU19GU2AuIEknbGwgc3RpbGwgcXVpY2tseSBjb25maXJtIHRoYXQgdGhlIGNvbmZpZyBpcyBzdGlsbCB0aGVyZS4gR29vZC4gV2l0aCB0aGF0IGNvbnRleHQgaW4gbWluZCwgSSBjYW4gc3RhcnQgdG8gZGlzc2VjdCB0aGUgcGF0Y2gncyBsb2dpYyBhbmQgYXNzZXNzIGl0cyBpbXBhY3Qgb24gdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk5OCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjUwOjI2LjQ3NjUzODgzMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTI1NjAyOTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5URlNfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL250ZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL250ZnMvS2NvbmZpZzoyOmNvbmZpZyBOVEZTX0ZTXFxuZnMvbnRmcy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk5URlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG4tLVxcbmZzL250ZnMvS2NvbmZpZz0xMz1jb25maWcgTlRGU19ERUJVR1xcbi0tXFxuZnMvbnRmcy9LY29uZmlnLTM0LVxcbmZzL250ZnMvS2NvbmZpZzozNTpjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcXG5mcy9udGZzL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiTlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6NTA6MjYuNjI5MTAzOTg4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk0NzIzMDM3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBOVEZTIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBjb25maXJtaW5nIHRoYXQgYENPTkZJR19OVEZTX0ZTYCBpcyBwcmVzZW50Li4uIGdvb2QuIE5vdywgYSBjcml0aWNhbCBwb2ludCDigJMgSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHdoZXRoZXIgYENPTkZJR19OVEZTX0ZTYCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuIEl0J3MgYSBmaWxlIHN5c3RlbSwgc28gaW5pdGlhbCBlbmFibGVtZW50IGlzbid0IGFsd2F5cyB0aGUgbm9ybS4gTmVlZCB0byBjaGVjayBmb3IgdGhhdC4gQW5kIHdoaWxlIEknbSBhdCBpdCwgSSBzaG91bGQgYWxzbyBpbW1lZGlhdGVseSBsb29rIGZvciBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBjb21wcmVzc2lvbiB3aXRoaW4gdGhlIE5URlMgc2V0dXAuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbXByZXNzaW9uIGNhcGFiaWxpdGllcyBhbmQgdGhlaXIgZGVmYXVsdHMgaXMgaW1wb3J0YW50IGZvciBwZXJmb3JtYW5jZSBhbmFseXNpcy4gR290dGEgZ2V0IGEgZmVlbCBmb3IgaG93IGl0J3MgY29uZmlndXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzgyMSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjUwOjI5LjU3NjMzNjg2NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjkwNTA0MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5URlNfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL250ZnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9udGZzL0tjb25maWc6Mjpjb25maWcgTlRGU19GU1xcbmZzL250ZnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9udGZzL0tjb25maWctMTItXFxuZnMvbnRmcy9LY29uZmlnOjEzOmNvbmZpZyBOVEZTX0RFQlVHXFxuZnMvbnRmcy9LY29uZmlnLTE0LVxcdGJvb2wgXFxcIk5URlMgZGVidWdnaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9udGZzL0tjb25maWctMzQtXFxuZnMvbnRmcy9LY29uZmlnOjM1OmNvbmZpZyBOVEZTX0ZTX1BPU0lYX0FDTFxcbmZzL250ZnMvS2NvbmZpZy0zNi1cXHRib29sIFxcXCJOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzo1MDozMC4wNDU0MDA4NzVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQyODU2MTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTlRGUyBDb21wcmVzc2lvbiBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIHRoZXJlJ3Mgbm8gc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpdGVtIEkgY2FuIGltbWVkaWF0ZWx5IHBvaW50IHRvIHJlZ2FyZGluZyBjb21wcmVzc2lvbiwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIE15IHByaW1hcnkgdGFyZ2V0cyBmb3IgaW52ZXN0aWdhdGlvbiBhcmUgY2xlYXJseSBgbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2tgIGFuZCBgaGFuZGxlX2JvdW5kc19jb21wcmVzc2VkX3BhZ2VgLiBUaGF0IGlubGluZSBmdW5jdGlvbiwgYGhhbmRsZV9ib3VuZHNfY29tcHJlc3NlZF9wYWdlYCwgaXMgY2FsbGVkIGJ5ICpib3RoKiBgbnRmc19kZWNvbXByZXNzYCBhbmQsIGltcG9ydGFudGx5LCB0aGUgYWZvcmVtZW50aW9uZWQgYG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrYC4gVGhpcyBtZWFucywgZnJvbSBhIGRlYnVnZ2luZyBzdGFuZHBvaW50LCBJIHNob3VsZCBwcm9iYWJseSBmb2N1cyBvbiB0aG9zZSB0d28gZnVuY3Rpb25zIC0tIGBudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9ja2AgYW5kIGBudGZzX2RlY29tcHJlc3NgLiBUaGV5J3JlIHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMuXG5cbk5vdywgYSBjcnVjaWFsIG5leHQgc3RlcDogSSBuZWVkIHRvIHZlcmlmeSBob3cgYG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrYCBpcyBpbnZva2VkLiBJcyBpdCBjYWxsZWQgZGlyZWN0bHksIG9yIGlzIGl0IHBhcnQgb2YgYSBsYXJnZXIgYWRkcmVzcyBzcGFjZSBvcGVyYXRpb24/IEZpZ3VyaW5nIG91dCB0aGUgcmVhY2hhYmlsaXR5IG9mIHRoYXQgZnVuY3Rpb24gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjE5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjUwOjMzLjc4ODI1OTU5NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTI1MDQzNDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbnRmcy9hb3BzLmM9NDg9c3RhdGljIGNvbnN0IHN0cnVjdCBpb21hcF9yZWFkX29wcyBudGZzX2lvbWFwX2Jpb19yZWFkX29wcyA9IHtcXG4tLVxcbmZzL250ZnMvYW9wcy5jLTYzLSAqIC0gSWYgdGhlIGF0dHJpYnV0ZSBpcyBub24tcmVzaWRlbnQgYW5kIGNvbXByZXNzZWQsIHRoZSByZWFkIG9wZXJhdGlvbiBpc1xcbmZzL250ZnMvYW9wcy5jOjY0OiAqICAgZGVsZWdhdGVkIHRvIG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrKCkuXFxuZnMvbnRmcy9hb3BzLmMtNjUtICogLSBGb3Igbm9ybWFsIHJlc2lkZW50IG9yIG5vbi1yZXNpZGVudCBhdHRyaWJ1dGUsIGl0IHV0aWxpemVzIHRoZSBnZW5lcmljXFxuLS1cXG5mcy9udGZzL2FvcHMuYz03MD1zdGF0aWMgaW50IG50ZnNfcmVhZF9mb2xpbyhzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbmZzL250ZnMvYW9wcy5jLTk2LVxcdFxcdGlmIChOSW5vTm9uUmVzaWRlbnQobmkpIFxcdTAwMjZcXHUwMDI2IE5Jbm9Db21wcmVzc2VkKG5pKSlcXG5mcy9udGZzL2FvcHMuYzo5NzpcXHRcXHRcXHRyZXR1cm4gbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2soZm9saW8pO1xcbmZzL250ZnMvYW9wcy5jLTk4LVxcdH1cXG4tLVxcbmZzL250ZnMvY29tcHJlc3MuYz0xNjM9c3RhdGljIGludCBudGZzX2RlY29tcHJlc3Moc3RydWN0IHBhZ2UgKmRlc3RfcGFnZXNbXSwgaW50IGNvbXBsZXRlZF9wYWdlc1tdLFxcbi0tXFxuZnMvbnRmcy9jb21wcmVzcy5jLTQzNi0vKlxcbmZzL250ZnMvY29tcHJlc3MuYzo0Mzc6ICogbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2sgLSByZWFkIGEgY29tcHJlc3NlZCBibG9jayBpbnRvIHRoZSBwYWdlIGNhY2hlXFxuZnMvbnRmcy9jb21wcmVzcy5jLTQzOC0gKiBAZm9saW86XFx0bG9ja2VkIGZvbGlvIGluIHRoZSBjb21wcmVzc2lvbiBibG9jayhzKSB3ZSBuZWVkIHRvIHJlYWRcXG4tLVxcbmZzL250ZnMvY29tcHJlc3MuYy00NTMtICovXFxuZnMvbnRmcy9jb21wcmVzcy5jOjQ1NDppbnQgbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2soc3RydWN0IGZvbGlvICpmb2xpbylcXG5mcy9udGZzL2NvbXByZXNzLmMtNDU1LXtcXG4tLVxcbmZzL250ZnMvbnRmcy5oPTE5Nj1zdGF0aWMgaW5saW5lIHN0cnVjdCBudGZzX3ZvbHVtZSAqTlRGU19TQihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbi0tXFxuZnMvbnRmcy9udGZzLmgtMjAzLS8qIEZyb20gZnMvbnRmcy9jb21wcmVzcy5jICovXFxuZnMvbnRmcy9udGZzLmg6MjA0OmludCBudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9jayhzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcXG5mcy9udGZzL250ZnMuaC0yMDUtaW50IGFsbG9jYXRlX2NvbXByZXNzaW9uX2J1ZmZlcnModm9pZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjUwOjMzLjkwMDc2ODY2MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2ODc2NTI3NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOVEZTIENvbXByZXNzaW9uIFBhdGNoKipcblxuT2theSwgc28gYG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrYCAqaXMqIGRlZmluaXRlbHkgY2FsbGVkIGZyb20gYG50ZnNfcmVhZF9mb2xpb2AsIHdoaWNoIGl0c2VsZiBpcyB0aGUgYHJlYWRfZm9saW9gIGFkZHJlc3Mgc3BhY2Ugb3BlcmF0aW9uLiBUaGF0J3MgZ29vZCB0byBjb25maXJtIOKAkyBpdCBtZWFucyB0aGUgZnVuY3Rpb24ncyByZWFjaGFibGUgYW5kIHdvcmtpbmcgYXMgZXhwZWN0ZWQuXG5cbk5vdywgdGhpcyBwYXRjaC4uLiBpdCBsb29rcyBsaWtlIGl0J3MgY2hhbmdpbmcgdGhlIHdheSBmb2xpbyBpbmRpY2VzIGFyZSBoYW5kbGVkLiBJdCdzIHJlcGxhY2luZyBgcGFnZS1cdTAwM2VfX2ZvbGlvX2luZGV4YCB3aXRoIGBmb2xpby1cdTAwM2VpbmRleGAgYW5kIGBwYWdlX29mZnNldChwYWdlKWAuIFdhaXQsIHdhcyBgcGFnZS1cdTAwM2VfX2ZvbGlvX2luZGV4YCBkZXByZWNhdGVkIG9yIHJlbW92ZWQ/IEkgbmVlZCB0byBjaGVjayB0aGUgY29tbWl0IGhpc3RvcnkuIEFoLCB5ZXMuIEl0J3MgYW4gaW50ZXJuYWwgZmllbGQuIFVzaW5nIGBwYWdlX29mZnNldChwYWdlKWAgaXMgdGhlIHJpZ2h0IEFQSSBjaG9pY2UsIHRoYXQncyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBpbXByb3ZlbWVudC4gVGhpcyBpcyBhIHJlZmFjdG9yaW5nLCBlZmZlY3RpdmVseS5cblxuQWxzbywgdGhlIHBhdGNoIHNlZW1zIHRvIGhhdmUgc3dhcHBlZCBvdXQgYHplcm9fcGFydGlhbF9jb21wcmVzc2VkX3BhZ2VgIGZvciBgemVyb191c2VyX3NlZ21lbnQocGFnZSwgb2Zmc2V0LCBQQUdFX1NJWkUpYC4gVGhhdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHRvbyDigJMgbGlrZWx5IGEgbW9yZSBnZW5lcmljIGFuZCBlZmZpY2llbnQgYXBwcm9hY2guXG5cbk5vdywganVzdCBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IHRoYXQgYG50ZnNfZGVjb21wcmVzc2AgaXMgc3RpbGwgcmVhY2hhYmxlLCB0byBiZSBzdXJlIGFsbCB0aGUgcGllY2VzIGFyZSBzdGlsbCBpbiBwbGFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTEyMywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzo1MDozOC41ODg0MjQyMTFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMTk5OTA4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudGZzX2RlY29tcHJlc3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbnRmcy9jb21wcmVzcy5jPTEwNT1zdGF0aWMgaW5saW5lIHZvaWQgaGFuZGxlX2JvdW5kc19jb21wcmVzc2VkX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsXFxuLS1cXG5mcy9udGZzL2NvbXByZXNzLmMtMTI1LS8qXFxuZnMvbnRmcy9jb21wcmVzcy5jOjEyNjogKiBudGZzX2RlY29tcHJlc3MgLSBkZWNvbXByZXNzIGEgY29tcHJlc3Npb24gYmxvY2sgaW50byBhbiBhcnJheSBvZiBwYWdlc1xcbmZzL250ZnMvY29tcHJlc3MuYy0xMjctICogQGRlc3RfcGFnZXM6XFx0XFx0ZGVzdGluYXRpb24gYXJyYXkgb2YgcGFnZXNcXG4tLVxcbmZzL250ZnMvY29tcHJlc3MuYy0xMzktICpcXG5mcy9udGZzL2NvbXByZXNzLmM6MTQwOiAqIFRoZSBjYWxsZXIgbXVzdCBoYXZlIGRpc2FibGVkIHByZWVtcHRpb24uIG50ZnNfZGVjb21wcmVzcygpIHJlZW5hYmxlcyBpdCB3aGVuXFxuZnMvbnRmcy9jb21wcmVzcy5jLTE0MS0gKiB0aGUgY3JpdGljYWwgc2VjdGlvbiBpcyBmaW5pc2hlZC5cXG4tLVxcbmZzL250ZnMvY29tcHJlc3MuYy0xNjItICovXFxuZnMvbnRmcy9jb21wcmVzcy5jOjE2MzpzdGF0aWMgaW50IG50ZnNfZGVjb21wcmVzcyhzdHJ1Y3QgcGFnZSAqZGVzdF9wYWdlc1tdLCBpbnQgY29tcGxldGVkX3BhZ2VzW10sXFxuZnMvbnRmcy9jb21wcmVzcy5jLTE2NC1cXHRcXHRpbnQgKmRlc3RfaW5kZXgsIGludCAqZGVzdF9vZnMsIGNvbnN0IGludCBkZXN0X21heF9pbmRleCxcXG4tLVxcbmZzL250ZnMvY29tcHJlc3MuYz00NTQ9aW50IG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5mcy9udGZzL2NvbXByZXNzLmMtNzc5LVxcdFxcdG50ZnNfZGVidWcoXFxcIkZvdW5kIGNvbXByZXNzZWQgY29tcHJlc3Npb24gYmxvY2suXFxcIik7XFxuZnMvbnRmcy9jb21wcmVzcy5jOjc4MDpcXHRcXHRlcnIgPSBudGZzX2RlY29tcHJlc3MocGFnZXMsIGNvbXBsZXRlZF9wYWdlcywgXFx1MDAyNmN1cl9wYWdlLFxcbmZzL250ZnMvY29tcHJlc3MuYy03ODEtXFx0XFx0XFx0XFx0XFx1MDAyNmN1cl9vZnMsIGNiX21heF9wYWdlLCBjYl9tYXhfb2ZzLCB4cGFnZSxcXG4tLVxcbmZzL250ZnMvY29tcHJlc3MuYy03ODUtXFx0XFx0ICogV2UgY2FuIHNsZWVwIGZyb20gbm93IG9uLCBsb2NrIGFscmVhZHkgZHJvcHBlZCBieVxcbmZzL250ZnMvY29tcHJlc3MuYzo3ODY6XFx0XFx0ICogbnRmc19kZWNvbXByZXNzKCkuXFxuZnMvbnRmcy9jb21wcmVzcy5jLTc4Ny1cXHRcXHQgKi9cXG4tLVxcbmZzL250ZnMvY29tcHJlc3MuYy03ODktXFx0XFx0XFx0bnRmc19lcnJvcih2b2wtXFx1MDAzZXNiLFxcbmZzL250ZnMvY29tcHJlc3MuYzo3OTA6XFx0XFx0XFx0XFx0XFxcIm50ZnNfZGVjb21wcmVzcygpIGZhaWxlZCBpbiBpbm9kZSAweCVsbHggd2l0aCBlcnJvciBjb2RlICVpLiBTa2lwcGluZyB0aGlzIGNvbXByZXNzaW9uIGJsb2NrLlxcXCIsXFxuZnMvbnRmcy9jb21wcmVzcy5jLTc5MS1cXHRcXHRcXHRcXHRuaS1cXHUwMDNlbWZ0X25vLCAtZXJyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6NTA6MzguNzEwNDM1NDc4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1NjM4NzY2NzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBOVEZTIENvbXByZXNzaW9uIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSB0cmFjZWQgdGhlIGNhbGwgcGF0aCDigJMgaXQgbG9va3MgbGlrZSBgbnRmc19kZWNvbXByZXNzYCBnZXRzIGludm9rZWQgZGlyZWN0bHkgZnJvbSBgbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2tgLiBUaGF0IG1ha2VzIHRoZSB0d28gY3JpdGljYWwgZnVuY3Rpb25zIHRvIGZvY3VzIG9uLCBhcyBJIHN1c3BlY3RlZCwgYG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrYCBhbmQgYG50ZnNfZGVjb21wcmVzc2AuXG5cbk5vdywgdGhlIGNvbmZpZ3VyYXRpb24uLi4gSSBpbml0aWFsbHkgc2F3IGBOVEZTX0ZTYCwgYnV0IGl0J3MgYWx3YXlzIGdvb2QgdG8gZG91YmxlLWNoZWNrLiBSaWdodCwgYSBxdWljayBzY2FuIGNvbmZpcm1lZCB0aGF0IGBOVEZTX0ZTYCBpcyBpbmRlZWQgdGhlIG1haW4gY29uZmlnLiBBaCwgYnV0IHRoYXQncyB0aGUgKm9sZCogTlRGUyBkcml2ZXIhIFRoZXJlJ3MgYE5URlMzX0ZTYCBhcyB3ZWxsLiBIbW0sIHRoZSBwYXRjaCBpcyBjaGFuZ2luZyBgZnMvbnRmcy9jb21wcmVzcy5jYCwgc28gaXQncyBkaXJlY3RseSByZWxhdGVkIHRvIHRoZSBvcmlnaW5hbCBOVEZTIGRyaXZlciB1bmRlciBgTlRGU19GU2AuIFRoaXMgY29uZmlybXMgYE5URlNfRlNgIGlzIHRoZSBjb3JyZWN0IGNvbmZpZyB0byBjb25zaWRlci5cblxuTGV0IG1lIGp1c3QgY29uZmlybSB0aGF0IGBOVEZTX0ZTYCBpcyBzdWZmaWNpZW50LiBPa2F5LCBgQ09ORklHX05URlNfRlNgIGlzIGEgdHJpc3RhdGUsIGFuZCBsb29raW5nIGFyb3VuZCwgSSBkb24ndCBzZWUgYW55IG90aGVyIGVzc2VudGlhbCBjb25maWdzIGhlcmUuIFNvIHdlJ3JlIGdvb2QgdG8gZ28uXG5cbkhlcmUncyBteSBkaXN0aWxsZWQgc3VtbWFyeTpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWUgLSBUaGlzIHBhdGNoIGZ1bmRhbWVudGFsbHkgYWx0ZXJzIGhvdyBjb21wcmVzc2VkIGRhdGEgaXMgcmVhZC5cbiogICAqKkZvY3VzU3ltYm9sczoqKiBgW1wibnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2tcIiwgXCJudGZzX2RlY29tcHJlc3NcIl1gIC0gVGhlc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zLlxuKiAgICoqRW5hYmxlQ29uZmlnczoqKiBgW1wiTlRGU19GU1wiXWAgLSBUaGUgcmlnaHQgY29uZmlnIGZvciB0aGUgb3JpZ2luYWwgTlRGUyBkcml2ZXIuXG4qICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYXQgdGhlIGNvcmUgcmVhZCBsZXZlbCBmb3IgY29tcHJlc3NlZCBmaWxlcywgcmVwbGFjaW5nIGRpcmVjdCBhY2Nlc3MgdG8gcGFnZS1cdTAwM2VfX2ZvbGlvX2luZGV4IHdpdGggZm9saW8gQVBJcyBhbmQgemVyb191c2VyX3NlZ21lbnQuIFRoaXMgaXMgYSBjcnVjaWFsIGNoYW5nZSB0byBob3cgdGhlIGZpbGUgc3lzdGVtIGhhbmRsZXMgY29tcHJlc3NlZCBkYXRhLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTgyLCJPdXRwdXRUb2tlbnMiOjEwMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzo1MDo1NC4zNDkyMDQ4NzFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODE2NzkwMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5URlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9ja1wiLFxuICAgIFwibnRmc19kZWNvbXByZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGhhbmRsaW5nIG9mIGNvbXByZXNzZWQgcGFnZXMgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSwgcmVwbGFjaW5nIGRpcmVjdCBhY2Nlc3MgdG8gcGFnZS1cXHUwMDNlX19mb2xpb19pbmRleCB3aXRoIHByb3BlciBmb2xpbyBBUElzIGFuZCB6ZXJvX3VzZXJfc2VnbWVudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIHJlYWQgcGF0aCBmb3IgY29tcHJlc3NlZCBmaWxlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOVEZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2tcIixcbiAgICBcIm50ZnNfZGVjb21wcmVzc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBoYW5kbGluZyBvZiBjb21wcmVzc2VkIHBhZ2VzIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0sIHJlcGxhY2luZyBkaXJlY3QgYWNjZXNzIHRvIHBhZ2UtXFx1MDAzZV9fZm9saW9faW5kZXggd2l0aCBwcm9wZXIgZm9saW8gQVBJcyBhbmQgemVyb191c2VyX3NlZ21lbnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSByZWFkIHBhdGggZm9yIGNvbXByZXNzZWQgZmlsZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4qrvw[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-15 07:33:24 +0000 UTC FinishedAt: 2026-07-15 07:50:56 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "0ebe8f625ab0520217a425d7cd366e4670484941", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "0ebe8f625ab0520217a425d7cd366e4670484941", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "0c82aa37-e643-44f9-a21a-d56a3347a31e" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ntfs_read_compressed_block", "ntfs_decompress" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9jayYjMzQ7LAogICAgJiMzNDtudGZzX2RlY29tcHJlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGhhbmRsaW5nIG9mIGNvbXByZXNzZWQgcGFnZXMgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSwgcmVwbGFjaW5nIGRpcmVjdCBhY2Nlc3MgdG8gcGFnZS1cdTAwM2VfX2ZvbGlvX2luZGV4IHdpdGggcHJvcGVyIGZvbGlvIEFQSXMgYW5kIHplcm9fdXNlcl9zZWdtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgcmVhZCBwYXRoIGZvciBjb21wcmVzc2VkIGZpbGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjUwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMjhjZTA5YTNkZDFiMTYxYzE4MTU4MjA0ODBkMjQ2NTExNTVmNTQxN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDE1IDA3OjUwOjE4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL250ZnMvY29tcHJlc3MuYyBiL2ZzL250ZnMvY29tcHJlc3MuY1xuaW5kZXggNzZiZDgwNmI0MWVkZDkuLmQ4M2QzZThlMDZhZWJiIDEwMDY0NFxuLS0tIGEvZnMvbnRmcy9jb21wcmVzcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9udGZzL2NvbXByZXNzLmNcbkBAIC05NiwyNiAmIzQzOzk2LDYgQEAgdm9pZCBmcmVlX2NvbXByZXNzaW9uX2J1ZmZlcnModm9pZClcbiBcdG11dGV4X3VubG9jayhcdTAwMjZudGZzX2NiX2xvY2spO1xuIH1cbiBcbi0vKlxuLSAqIHplcm9fcGFydGlhbF9jb21wcmVzc2VkX3BhZ2UgLSB6ZXJvIG91dCBvZiBib3VuZHMgY29tcHJlc3NlZCBwYWdlIHJlZ2lvblxuLSAqIEBwYWdlOiBwYWdlIHRvIHplcm9cbi0gKiBAaW5pdGlhbGl6ZWRfc2l6ZTogaW5pdGlhbGl6ZWQgc2l6ZSBvZiB0aGUgYXR0cmlidXRlXG4tICovXG4tc3RhdGljIHZvaWQgemVyb19wYXJ0aWFsX2NvbXByZXNzZWRfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSxcbi1cdFx0Y29uc3QgczY0IGluaXRpYWxpemVkX3NpemUpXG4te1xuLVx0dTggKmtwID0gcGFnZV9hZGRyZXNzKHBhZ2UpO1xuLVx0dW5zaWduZWQgaW50IGtwX29mcztcbi1cbi1cdG50ZnNfZGVidWcoXCYjMzQ7WmVyb2luZyBwYWdlIHJlZ2lvbiBvdXRzaWRlIGluaXRpYWxpemVkIHNpemUuXCYjMzQ7KTtcbi1cdGlmICgoKHM2NClwYWdlLVx1MDAzZV9fZm9saW9faW5kZXggXHUwMDNjXHUwMDNjIFBBR0VfU0hJRlQpIFx1MDAzZT0gaW5pdGlhbGl6ZWRfc2l6ZSkge1xuLVx0XHRjbGVhcl9wYWdlKGtwKTtcbi1cdFx0cmV0dXJuO1xuLVx0fVxuLVx0a3Bfb2ZzID0gaW5pdGlhbGl6ZWRfc2l6ZSBcdTAwMjYgflBBR0VfTUFTSztcbi1cdG1lbXNldChrcCAmIzQzOyBrcF9vZnMsIDAsIFBBR0VfU0laRSAtIGtwX29mcyk7XG4tfVxuLVxuIC8qXG4gICogaGFuZGxlX2JvdW5kc19jb21wcmVzc2VkX3BhZ2UgLSB0ZXN0IGZvclx1MDAyNmhhbmRsZSBvdXQgb2YgYm91bmRzIGNvbXByZXNzZWQgcGFnZVxuICAqIEBwYWdlOiBwYWdlIHRvIGNoZWNrIGFuZCBoYW5kbGVcbkBAIC0xMjUsOSAmIzQzOzEwNSwyMSBAQCBzdGF0aWMgdm9pZCB6ZXJvX3BhcnRpYWxfY29tcHJlc3NlZF9wYWdlKHN0cnVjdCBwYWdlICpwYWdlLFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBoYW5kbGVfYm91bmRzX2NvbXByZXNzZWRfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSxcbiBcdFx0Y29uc3QgbG9mZl90IGlfc2l6ZSwgY29uc3QgczY0IGluaXRpYWxpemVkX3NpemUpXG4ge1xuLVx0aWYgKChwYWdlLVx1MDAzZV9fZm9saW9faW5kZXggXHUwMDNlPSAoaW5pdGlhbGl6ZWRfc2l6ZSBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVCkpIFx1MDAyNlx1MDAyNlxuLVx0XHRcdChpbml0aWFsaXplZF9zaXplIFx1MDAzYyBpX3NpemUpKVxuLVx0XHR6ZXJvX3BhcnRpYWxfY29tcHJlc3NlZF9wYWdlKHBhZ2UsIGluaXRpYWxpemVkX3NpemUpO1xuJiM0MztcdGxvZmZfdCBwb3MgPSBwYWdlX29mZnNldChwYWdlKTtcbiYjNDM7XG4mIzQzO1x0aWYgKChwb3MgJiM0MzsgUEFHRV9TSVpFIFx1MDAzZSBpbml0aWFsaXplZF9zaXplKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0KGluaXRpYWxpemVkX3NpemUgXHUwMDNjIGlfc2l6ZSkpIHtcbiYjNDM7XHRcdHNpemVfdCBvZmZzZXQ7XG4mIzQzO1xuJiM0MztcdFx0bnRmc19kZWJ1ZyhcJiMzNDtaZXJvaW5nIHBhZ2UgcmVnaW9uIG91dHNpZGUgaW5pdGlhbGl6ZWQgc2l6ZS5cJiMzNDspO1xuJiM0MztcdFx0aWYgKHBvcyBcdTAwM2U9IGluaXRpYWxpemVkX3NpemUpXG4mIzQzO1x0XHRcdG9mZnNldCA9IDA7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdG9mZnNldCA9IG9mZnNldF9pbl9wYWdlKGluaXRpYWxpemVkX3NpemUpO1xuJiM0MztcdFx0emVyb191c2VyX3NlZ21lbnQocGFnZSwgb2Zmc2V0LCBQQUdFX1NJWkUpO1xuJiM0MztcdH0gZWxzZSB7XG4mIzQzO1x0XHRmbHVzaF9kY2FjaGVfcGFnZShwYWdlKTtcbiYjNDM7XHR9XG4gfVxuIFxuIC8qXG5AQCAtMjMxLDcgJiM0MzsyMjMsNiBAQCBzdGF0aWMgaW50IG50ZnNfZGVjb21wcmVzcyhzdHJ1Y3QgcGFnZSAqZGVzdF9wYWdlc1tdLCBpbnQgY29tcGxldGVkX3BhZ2VzW10sXG4gXHRcdFx0XHQgKi9cbiBcdFx0XHRcdGhhbmRsZV9ib3VuZHNfY29tcHJlc3NlZF9wYWdlKGRwLCBpX3NpemUsXG4gXHRcdFx0XHRcdFx0aW5pdGlhbGl6ZWRfc2l6ZSk7XG4tXHRcdFx0XHRmbHVzaF9kY2FjaGVfcGFnZShkcCk7XG4gXHRcdFx0XHRrdW5tYXBfbG9jYWwocGFnZV9hZGRyZXNzKGRwKSk7XG4gXHRcdFx0XHRTZXRQYWdlVXB0b2RhdGUoZHApO1xuIFx0XHRcdFx0dW5sb2NrX3BhZ2UoZHApO1xuQEAgLTQ2NSwxNCAmIzQzOzQ1NiwxNCBAQCBpbnQgbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2soc3RydWN0IGZvbGlvICpmb2xpbylcbiBcdHN0cnVjdCBwYWdlICpwYWdlID0gXHUwMDI2Zm9saW8tXHUwMDNlcGFnZTtcbiBcdGxvZmZfdCBpX3NpemU7XG4gXHRzNjQgaW5pdGlhbGl6ZWRfc2l6ZTtcbi1cdHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gcGFnZS1cdTAwM2VtYXBwaW5nO1xuJiM0MztcdHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gZm9saW8tXHUwMDNlbWFwcGluZztcbiBcdHN0cnVjdCBudGZzX2lub2RlICpuaSA9IE5URlNfSShtYXBwaW5nLVx1MDAzZWhvc3QpO1xuIFx0c3RydWN0IG50ZnNfdm9sdW1lICp2b2wgPSBuaS1cdTAwM2V2b2w7XG4gXHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiID0gdm9sLVx1MDAzZXNiO1xuIFx0c3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqcmw7XG4gXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuIFx0dTggKmNiLCAqY2JfcG9zLCAqY2JfZW5kO1xuLVx0dW5zaWduZWQgbG9uZyBvZmZzZXQsIGluZGV4ID0gcGFnZS1cdTAwM2VfX2ZvbGlvX2luZGV4O1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBpbmRleCA9IGZvbGlvLVx1MDAzZWluZGV4O1xuIFx0dTMyIGNiX3NpemUgPSBuaS1cdTAwM2VpdHlwZS5jb21wcmVzc2VkLmJsb2NrX3NpemU7XG4gXHR1NjQgY2Jfc2l6ZV9tYXNrID0gY2Jfc2l6ZSAtIDFVTDtcbiBcdHM2NCB2Y247XG5AQCAtNzY3LDcgJiM0Mzs3NTgsNiBAQCBpbnQgbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2soc3RydWN0IGZvbGlvICpmb2xpbylcbiBcdFx0XHRcdCAqL1xuIFx0XHRcdFx0aGFuZGxlX2JvdW5kc19jb21wcmVzc2VkX3BhZ2UocGFnZSwgaV9zaXplLFxuIFx0XHRcdFx0XHRcdGluaXRpYWxpemVkX3NpemUpO1xuLVx0XHRcdFx0Zmx1c2hfZGNhY2hlX3BhZ2UocGFnZSk7XG4gXHRcdFx0XHRrdW5tYXBfbG9jYWwocGFnZV9hZGRyZXNzKHBhZ2UpKTtcbiBcdFx0XHRcdFNldFBhZ2VVcHRvZGF0ZShwYWdlKTtcbiBcdFx0XHRcdHVubG9ja19wYWdlKHBhZ2UpO1xuQEAgLTgyMiwxNCAmIzQzOzgxMiwxNiBAQCBpbnQgbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2soc3RydWN0IGZvbGlvICpmb2xpbylcbiBcdGZvciAoY3VyX3BhZ2UgPSAwOyBjdXJfcGFnZSBcdTAwM2MgbWF4X3BhZ2U7IGN1cl9wYWdlJiM0MzsmIzQzOykge1xuIFx0XHRwYWdlID0gcGFnZXNbY3VyX3BhZ2VdO1xuIFx0XHRpZiAocGFnZSkge1xuJiM0MztcdFx0XHRmb2xpbyA9IHBhZ2VfZm9saW8ocGFnZSk7XG4mIzQzO1xuIFx0XHRcdG50ZnNfZXJyb3Iodm9sLVx1MDAzZXNiLFxuIFx0XHRcdFx0XCYjMzQ7U3RpbGwgaGF2ZSBwYWdlcyBsZWZ0ISBUZXJtaW5hdGluZyB0aGVtIHdpdGggZXh0cmVtZSBwcmVqdWRpY2UuICBJbm9kZSAweCVsbHgsIHBhZ2UgaW5kZXggMHglbHguXCYjMzQ7LFxuLVx0XHRcdFx0bmktXHUwMDNlbWZ0X25vLCBwYWdlLVx1MDAzZV9fZm9saW9faW5kZXgpO1xuLVx0XHRcdGZsdXNoX2RjYWNoZV9wYWdlKHBhZ2UpO1xuJiM0MztcdFx0XHRcdG5pLVx1MDAzZW1mdF9ubywgZm9saW8tXHUwMDNlaW5kZXgpO1xuJiM0MztcdFx0XHRmbHVzaF9kY2FjaGVfZm9saW8oZm9saW8pO1xuIFx0XHRcdGt1bm1hcF9sb2NhbChwYWdlX2FkZHJlc3MocGFnZSkpO1xuLVx0XHRcdHVubG9ja19wYWdlKHBhZ2UpO1xuJiM0MztcdFx0XHRmb2xpb191bmxvY2soZm9saW8pO1xuIFx0XHRcdGlmIChjdXJfcGFnZSAhPSB4cGFnZSlcbi1cdFx0XHRcdHB1dF9wYWdlKHBhZ2UpO1xuJiM0MztcdFx0XHRcdGZvbGlvX3B1dChmb2xpbyk7XG4gXHRcdFx0cGFnZXNbY3VyX3BhZ2VdID0gTlVMTDtcbiBcdFx0fVxuIFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjUwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9jayYjMzQ7LAogICAgJiMzNDtudGZzX2RlY29tcHJlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGhhbmRsaW5nIG9mIGNvbXByZXNzZWQgcGFnZXMgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSwgcmVwbGFjaW5nIGRpcmVjdCBhY2Nlc3MgdG8gcGFnZS1cdTAwM2VfX2ZvbGlvX2luZGV4IHdpdGggcHJvcGVyIGZvbGlvIEFQSXMgYW5kIHplcm9fdXNlcl9zZWdtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgcmVhZCBwYXRoIGZvciBjb21wcmVzc2VkIGZpbGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyOGNlMDlhM2RkMWIxNjFjMTgxNTgyMDQ4MGQyNDY1MTE1NWY1NDE3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMTUgMDc6NTA6MTggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9udGZzL2NvbXByZXNzLmMgYi9mcy9udGZzL2NvbXByZXNzLmMKaW5kZXggNzZiZDgwNmI0MWVkZDkuLmQ4M2QzZThlMDZhZWJiIDEwMDY0NAotLS0gYS9mcy9udGZzL2NvbXByZXNzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvbnRmcy9jb21wcmVzcy5jCkBAIC05NiwyNiAmIzQzOzk2LDYgQEAgdm9pZCBmcmVlX2NvbXByZXNzaW9uX2J1ZmZlcnModm9pZCkKIAltdXRleF91bmxvY2soJmFtcDtudGZzX2NiX2xvY2spOwogfQogCi0vKgotICogemVyb19wYXJ0aWFsX2NvbXByZXNzZWRfcGFnZSAtIHplcm8gb3V0IG9mIGJvdW5kcyBjb21wcmVzc2VkIHBhZ2UgcmVnaW9uCi0gKiBAcGFnZTogcGFnZSB0byB6ZXJvCi0gKiBAaW5pdGlhbGl6ZWRfc2l6ZTogaW5pdGlhbGl6ZWQgc2l6ZSBvZiB0aGUgYXR0cmlidXRlCi0gKi8KLXN0YXRpYyB2b2lkIHplcm9fcGFydGlhbF9jb21wcmVzc2VkX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsCi0JCWNvbnN0IHM2NCBpbml0aWFsaXplZF9zaXplKQotewotCXU4ICprcCA9IHBhZ2VfYWRkcmVzcyhwYWdlKTsKLQl1bnNpZ25lZCBpbnQga3Bfb2ZzOwotCi0JbnRmc19kZWJ1ZygmIzM0O1plcm9pbmcgcGFnZSByZWdpb24gb3V0c2lkZSBpbml0aWFsaXplZCBzaXplLiYjMzQ7KTsKLQlpZiAoKChzNjQpcGFnZS0mZ3Q7X19mb2xpb19pbmRleCAmbHQ7Jmx0OyBQQUdFX1NISUZUKSAmZ3Q7PSBpbml0aWFsaXplZF9zaXplKSB7Ci0JCWNsZWFyX3BhZ2Uoa3ApOwotCQlyZXR1cm47Ci0JfQotCWtwX29mcyA9IGluaXRpYWxpemVkX3NpemUgJmFtcDsgflBBR0VfTUFTSzsKLQltZW1zZXQoa3AgJiM0Mzsga3Bfb2ZzLCAwLCBQQUdFX1NJWkUgLSBrcF9vZnMpOwotfQotCiAvKgogICogaGFuZGxlX2JvdW5kc19jb21wcmVzc2VkX3BhZ2UgLSB0ZXN0IGZvciZhbXA7aGFuZGxlIG91dCBvZiBib3VuZHMgY29tcHJlc3NlZCBwYWdlCiAgKiBAcGFnZTogcGFnZSB0byBjaGVjayBhbmQgaGFuZGxlCkBAIC0xMjUsOSAmIzQzOzEwNSwyMSBAQCBzdGF0aWMgdm9pZCB6ZXJvX3BhcnRpYWxfY29tcHJlc3NlZF9wYWdlKHN0cnVjdCBwYWdlICpwYWdlLAogc3RhdGljIGlubGluZSB2b2lkIGhhbmRsZV9ib3VuZHNfY29tcHJlc3NlZF9wYWdlKHN0cnVjdCBwYWdlICpwYWdlLAogCQljb25zdCBsb2ZmX3QgaV9zaXplLCBjb25zdCBzNjQgaW5pdGlhbGl6ZWRfc2l6ZSkKIHsKLQlpZiAoKHBhZ2UtJmd0O19fZm9saW9faW5kZXggJmd0Oz0gKGluaXRpYWxpemVkX3NpemUgJmd0OyZndDsgUEFHRV9TSElGVCkpICZhbXA7JmFtcDsKLQkJCShpbml0aWFsaXplZF9zaXplICZsdDsgaV9zaXplKSkKLQkJemVyb19wYXJ0aWFsX2NvbXByZXNzZWRfcGFnZShwYWdlLCBpbml0aWFsaXplZF9zaXplKTsKJiM0MzsJbG9mZl90IHBvcyA9IHBhZ2Vfb2Zmc2V0KHBhZ2UpOwomIzQzOwomIzQzOwlpZiAoKHBvcyAmIzQzOyBQQUdFX1NJWkUgJmd0OyBpbml0aWFsaXplZF9zaXplKSAmYW1wOyZhbXA7CiYjNDM7CQkJKGluaXRpYWxpemVkX3NpemUgJmx0OyBpX3NpemUpKSB7CiYjNDM7CQlzaXplX3Qgb2Zmc2V0OwomIzQzOwomIzQzOwkJbnRmc19kZWJ1ZygmIzM0O1plcm9pbmcgcGFnZSByZWdpb24gb3V0c2lkZSBpbml0aWFsaXplZCBzaXplLiYjMzQ7KTsKJiM0MzsJCWlmIChwb3MgJmd0Oz0gaW5pdGlhbGl6ZWRfc2l6ZSkKJiM0MzsJCQlvZmZzZXQgPSAwOwomIzQzOwkJZWxzZQomIzQzOwkJCW9mZnNldCA9IG9mZnNldF9pbl9wYWdlKGluaXRpYWxpemVkX3NpemUpOwomIzQzOwkJemVyb191c2VyX3NlZ21lbnQocGFnZSwgb2Zmc2V0LCBQQUdFX1NJWkUpOwomIzQzOwl9IGVsc2UgewomIzQzOwkJZmx1c2hfZGNhY2hlX3BhZ2UocGFnZSk7CiYjNDM7CX0KIH0KIAogLyoKQEAgLTIzMSw3ICYjNDM7MjIzLDYgQEAgc3RhdGljIGludCBudGZzX2RlY29tcHJlc3Moc3RydWN0IHBhZ2UgKmRlc3RfcGFnZXNbXSwgaW50IGNvbXBsZXRlZF9wYWdlc1tdLAogCQkJCSAqLwogCQkJCWhhbmRsZV9ib3VuZHNfY29tcHJlc3NlZF9wYWdlKGRwLCBpX3NpemUsCiAJCQkJCQlpbml0aWFsaXplZF9zaXplKTsKLQkJCQlmbHVzaF9kY2FjaGVfcGFnZShkcCk7CiAJCQkJa3VubWFwX2xvY2FsKHBhZ2VfYWRkcmVzcyhkcCkpOwogCQkJCVNldFBhZ2VVcHRvZGF0ZShkcCk7CiAJCQkJdW5sb2NrX3BhZ2UoZHApOwpAQCAtNDY1LDE0ICYjNDM7NDU2LDE0IEBAIGludCBudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9jayhzdHJ1Y3QgZm9saW8gKmZvbGlvKQogCXN0cnVjdCBwYWdlICpwYWdlID0gJmFtcDtmb2xpby0mZ3Q7cGFnZTsKIAlsb2ZmX3QgaV9zaXplOwogCXM2NCBpbml0aWFsaXplZF9zaXplOwotCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gcGFnZS0mZ3Q7bWFwcGluZzsKJiM0MzsJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBmb2xpby0mZ3Q7bWFwcGluZzsKIAlzdHJ1Y3QgbnRmc19pbm9kZSAqbmkgPSBOVEZTX0kobWFwcGluZy0mZ3Q7aG9zdCk7CiAJc3RydWN0IG50ZnNfdm9sdW1lICp2b2wgPSBuaS0mZ3Q7dm9sOwogCXN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSB2b2wtJmd0O3NiOwogCXN0cnVjdCBydW5saXN0X2VsZW1lbnQgKnJsOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJdTggKmNiLCAqY2JfcG9zLCAqY2JfZW5kOwotCXVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBpbmRleCA9IHBhZ2UtJmd0O19fZm9saW9faW5kZXg7CiYjNDM7CXVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBpbmRleCA9IGZvbGlvLSZndDtpbmRleDsKIAl1MzIgY2Jfc2l6ZSA9IG5pLSZndDtpdHlwZS5jb21wcmVzc2VkLmJsb2NrX3NpemU7CiAJdTY0IGNiX3NpemVfbWFzayA9IGNiX3NpemUgLSAxVUw7CiAJczY0IHZjbjsKQEAgLTc2Nyw3ICYjNDM7NzU4LDYgQEAgaW50IG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8pCiAJCQkJICovCiAJCQkJaGFuZGxlX2JvdW5kc19jb21wcmVzc2VkX3BhZ2UocGFnZSwgaV9zaXplLAogCQkJCQkJaW5pdGlhbGl6ZWRfc2l6ZSk7Ci0JCQkJZmx1c2hfZGNhY2hlX3BhZ2UocGFnZSk7CiAJCQkJa3VubWFwX2xvY2FsKHBhZ2VfYWRkcmVzcyhwYWdlKSk7CiAJCQkJU2V0UGFnZVVwdG9kYXRlKHBhZ2UpOwogCQkJCXVubG9ja19wYWdlKHBhZ2UpOwpAQCAtODIyLDE0ICYjNDM7ODEyLDE2IEBAIGludCBudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9jayhzdHJ1Y3QgZm9saW8gKmZvbGlvKQogCWZvciAoY3VyX3BhZ2UgPSAwOyBjdXJfcGFnZSAmbHQ7IG1heF9wYWdlOyBjdXJfcGFnZSYjNDM7JiM0MzspIHsKIAkJcGFnZSA9IHBhZ2VzW2N1cl9wYWdlXTsKIAkJaWYgKHBhZ2UpIHsKJiM0MzsJCQlmb2xpbyA9IHBhZ2VfZm9saW8ocGFnZSk7CiYjNDM7CiAJCQludGZzX2Vycm9yKHZvbC0mZ3Q7c2IsCiAJCQkJJiMzNDtTdGlsbCBoYXZlIHBhZ2VzIGxlZnQhIFRlcm1pbmF0aW5nIHRoZW0gd2l0aCBleHRyZW1lIHByZWp1ZGljZS4gIElub2RlIDB4JWxseCwgcGFnZSBpbmRleCAweCVseC4mIzM0OywKLQkJCQluaS0mZ3Q7bWZ0X25vLCBwYWdlLSZndDtfX2ZvbGlvX2luZGV4KTsKLQkJCWZsdXNoX2RjYWNoZV9wYWdlKHBhZ2UpOwomIzQzOwkJCQluaS0mZ3Q7bWZ0X25vLCBmb2xpby0mZ3Q7aW5kZXgpOwomIzQzOwkJCWZsdXNoX2RjYWNoZV9mb2xpbyhmb2xpbyk7CiAJCQlrdW5tYXBfbG9jYWwocGFnZV9hZGRyZXNzKHBhZ2UpKTsKLQkJCXVubG9ja19wYWdlKHBhZ2UpOwomIzQzOwkJCWZvbGlvX3VubG9jayhmb2xpbyk7CiAJCQlpZiAoY3VyX3BhZ2UgIT0geHBhZ2UpCi0JCQkJcHV0X3BhZ2UocGFnZSk7CiYjNDM7CQkJCWZvbGlvX3B1dChmb2xpbyk7CiAJCQlwYWdlc1tjdXJfcGFnZV0gPSBOVUxMOwogCQl9CiAJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTk4CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoIHRvIHRoZSBOVEZTIENvbXByZXNzaW9uIENvZGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyBiZWVuIGFwcGxpZWQgdG8gYGZzL250ZnMvY29tcHJlc3MuY2AuIEltbWVkaWF0ZWx5LCBJIHNlZSBpdCYjMzk7cyB0b3VjaGluZyBgaGFuZGxlX2JvdW5kc19jb21wcmVzc2VkX3BhZ2VgIGFuZCBgbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2tgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBzdWdnZXN0aW5nIGNoYW5nZXMgdG8gaG93IGNvbXByZXNzZWQgZGF0YSBpcyBoYW5kbGVkIGF0IHRoZSBwYWdlIGxldmVsLiBUaGV5JiMzOTt2ZSByZXBsYWNlZCB0aGUgZGlyZWN0IHVzZSBvZiBgcGFnZS0mZ3Q7X19mb2xpb19pbmRleGAgd2l0aCBgZm9saW8tJmd0O2luZGV4YCBvciBgcGFnZV9vZmZzZXQocGFnZSlgLCB3aGljaCBpcyBhIHByZXR0eSBzdGFuZGFyZCBmb2xpby9wYWdlIHN0cnVjdHVyZSB1cGRhdGUsIG5vdGhpbmcgYWxhcm1pbmcuIFJlcGxhY2luZyBgemVyb19wYXJ0aWFsX2NvbXByZXNzZWRfcGFnZWAgd2l0aCBgemVyb191c2VyX3NlZ21lbnQocGFnZSwgb2Zmc2V0LCBQQUdFX1NJWkUpYCBpcyBhbm90aGVyIG5vdGFibGUgY2hhbmdlLCBsaWtlbHkgYWltZWQgYXQgaW1wcm92aW5nIHRoZSB6ZXJvaW5nIHByb2Nlc3Mgd2l0aCBwb3RlbnRpYWxseSBiZXR0ZXIgbWVtb3J5IG1hbmFnZW1lbnQuIEZpbmFsbHksIEkgbm90aWNlIHRoZXkmIzM5O3JlIHN3aXRjaGluZyBgZmx1c2hfZGNhY2hlX3BhZ2VgIHRvIGBmbHVzaF9kY2FjaGVfZm9saW9gIGFuZCBgdW5sb2NrX3BhZ2VgIHRvIGBmb2xpb191bmxvY2tgIGluIHRoZSBlcnJvciBoYW5kbGluZy4gQ2xlYXJseSB0aGV5JiMzOTtyZSBjb25zb2xpZGF0aW5nIHRoZSBmb2xpbyB1c2FnZSB0aHJvdWdob3V0LgoKQmVmb3JlIGRpdmluZyBpbnRvIHRoZSBjb2RlIGNoYW5nZXMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgTlRGUyBzdXBwb3J0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIE5URlMgaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGhvdyBpdCBpcyBjb25maWd1cmVkLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgaGFzIGEgY29uZGl0aW9uYWwgaW5jbHVzaW9uIGJhc2VkIG9uIHRoZSBjb25maWd1cmF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgaW4gdGhlIE5URlMgZGlyZWN0b3J5LCBzbyBgZnMvbnRmcy9LY29uZmlnYC4gQWgsIGhlcmUgaXQgaXMsIGBDT05GSUdfTlRGU19GU2AuIFdhaXQsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgY29uZnVzaW5nIHRoaXMgd2l0aCBudGZzMywgZ2l2ZW4gdGhlIG9uZ29pbmcgZGV2ZWxvcG1lbnQuIEdpdmVuIHRoZSBwYXRoIHRvIHRoZSBtb2RpZmllZCBmaWxlIGlzIGBmcy9udGZzL2NvbXByZXNzLmNgLCBJJiMzOTttIGNvbmZpZGVudCBpdCYjMzk7cyB0aGUgb3JpZ2luYWwgYENPTkZJR19OVEZTX0ZTYC4gSSYjMzk7bGwgc3RpbGwgcXVpY2tseSBjb25maXJtIHRoYXQgdGhlIGNvbmZpZyBpcyBzdGlsbCB0aGVyZS4gR29vZC4gV2l0aCB0aGF0IGNvbnRleHQgaW4gbWluZCwgSSBjYW4gc3RhcnQgdG8gZGlzc2VjdCB0aGUgcGF0Y2gmIzM5O3MgbG9naWMgYW5kIGFzc2VzcyBpdHMgaW1wYWN0IG9uIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDc6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5URlNfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9udGZzL0tjb25maWc6Mjpjb25maWcgTlRGU19GU1xuZnMvbnRmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9udGZzL0tjb25maWc9MTM9Y29uZmlnIE5URlNfREVCVUdcbi0tXG5mcy9udGZzL0tjb25maWctMzQtXG5mcy9udGZzL0tjb25maWc6MzU6Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXG5mcy9udGZzL0tjb25maWctMzYtXHRib29sIFwmIzM0O05URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODIxCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgTlRGUyBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIGNvbmZpcm1pbmcgdGhhdCBgQ09ORklHX05URlNfRlNgIGlzIHByZXNlbnQuLi4gZ29vZC4gTm93LCBhIGNyaXRpY2FsIHBvaW50IOKAkyBJIG5lZWQgdG8gcXVpY2tseSBhc2NlcnRhaW4gd2hldGhlciBgQ09ORklHX05URlNfRlNgIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4gSXQmIzM5O3MgYSBmaWxlIHN5c3RlbSwgc28gaW5pdGlhbCBlbmFibGVtZW50IGlzbiYjMzk7dCBhbHdheXMgdGhlIG5vcm0uIE5lZWQgdG8gY2hlY2sgZm9yIHRoYXQuIEFuZCB3aGlsZSBJJiMzOTttIGF0IGl0LCBJIHNob3VsZCBhbHNvIGltbWVkaWF0ZWx5IGxvb2sgZm9yIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIGNvbXByZXNzaW9uIHdpdGhpbiB0aGUgTlRGUyBzZXR1cC4gVW5kZXJzdGFuZGluZyB0aGUgY29tcHJlc3Npb24gY2FwYWJpbGl0aWVzIGFuZCB0aGVpciBkZWZhdWx0cyBpcyBpbXBvcnRhbnQgZm9yIHBlcmZvcm1hbmNlIGFuYWx5c2lzLiBHb3R0YSBnZXQgYSBmZWVsIGZvciBob3cgaXQmIzM5O3MgY29uZmlndXJlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTlRGU18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9udGZzL0tjb25maWc6Mjpjb25maWcgTlRGU19GU1xuZnMvbnRmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9udGZzL0tjb25maWctMTItXG5mcy9udGZzL0tjb25maWc6MTM6Y29uZmlnIE5URlNfREVCVUdcbmZzL250ZnMvS2NvbmZpZy0xNC1cdGJvb2wgXCYjMzQ7TlRGUyBkZWJ1Z2dpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbmZzL250ZnMvS2NvbmZpZy0zNC1cbmZzL250ZnMvS2NvbmZpZzozNTpjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcbmZzL250ZnMvS2NvbmZpZy0zNi1cdGJvb2wgXCYjMzQ7TlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMTkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOVEZTIENvbXByZXNzaW9uIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIHRoZXJlJiMzOTtzIG5vIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gaXRlbSBJIGNhbiBpbW1lZGlhdGVseSBwb2ludCB0byByZWdhcmRpbmcgY29tcHJlc3Npb24sIHdoaWNoIGlzIGludGVyZXN0aW5nLiBNeSBwcmltYXJ5IHRhcmdldHMgZm9yIGludmVzdGlnYXRpb24gYXJlIGNsZWFybHkgYG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrYCBhbmQgYGhhbmRsZV9ib3VuZHNfY29tcHJlc3NlZF9wYWdlYC4gVGhhdCBpbmxpbmUgZnVuY3Rpb24sIGBoYW5kbGVfYm91bmRzX2NvbXByZXNzZWRfcGFnZWAsIGlzIGNhbGxlZCBieSAqYm90aCogYG50ZnNfZGVjb21wcmVzc2AgYW5kLCBpbXBvcnRhbnRseSwgdGhlIGFmb3JlbWVudGlvbmVkIGBudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9ja2AuIFRoaXMgbWVhbnMsIGZyb20gYSBkZWJ1Z2dpbmcgc3RhbmRwb2ludCwgSSBzaG91bGQgcHJvYmFibHkgZm9jdXMgb24gdGhvc2UgdHdvIGZ1bmN0aW9ucyAtLSBgbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2tgIGFuZCBgbnRmc19kZWNvbXByZXNzYC4gVGhleSYjMzk7cmUgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50cy4KCk5vdywgYSBjcnVjaWFsIG5leHQgc3RlcDogSSBuZWVkIHRvIHZlcmlmeSBob3cgYG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrYCBpcyBpbnZva2VkLiBJcyBpdCBjYWxsZWQgZGlyZWN0bHksIG9yIGlzIGl0IHBhcnQgb2YgYSBsYXJnZXIgYWRkcmVzcyBzcGFjZSBvcGVyYXRpb24/IEZpZ3VyaW5nIG91dCB0aGUgcmVhY2hhYmlsaXR5IG9mIHRoYXQgZnVuY3Rpb24gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O250ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvbnRmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9hb3BzLmM9NDg9c3RhdGljIGNvbnN0IHN0cnVjdCBpb21hcF9yZWFkX29wcyBudGZzX2lvbWFwX2Jpb19yZWFkX29wcyA9IHtcbi0tXG5mcy9udGZzL2FvcHMuYy02My0gKiAtIElmIHRoZSBhdHRyaWJ1dGUgaXMgbm9uLXJlc2lkZW50IGFuZCBjb21wcmVzc2VkLCB0aGUgcmVhZCBvcGVyYXRpb24gaXNcbmZzL250ZnMvYW9wcy5jOjY0OiAqICAgZGVsZWdhdGVkIHRvIG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrKCkuXG5mcy9udGZzL2FvcHMuYy02NS0gKiAtIEZvciBub3JtYWwgcmVzaWRlbnQgb3Igbm9uLXJlc2lkZW50IGF0dHJpYnV0ZSwgaXQgdXRpbGl6ZXMgdGhlIGdlbmVyaWNcbi0tXG5mcy9udGZzL2FvcHMuYz03MD1zdGF0aWMgaW50IG50ZnNfcmVhZF9mb2xpbyhzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5mcy9udGZzL2FvcHMuYy05Ni1cdFx0aWYgKE5Jbm9Ob25SZXNpZGVudChuaSkgXHUwMDI2XHUwMDI2IE5Jbm9Db21wcmVzc2VkKG5pKSlcbmZzL250ZnMvYW9wcy5jOjk3Olx0XHRcdHJldHVybiBudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9jayhmb2xpbyk7XG5mcy9udGZzL2FvcHMuYy05OC1cdH1cbi0tXG5mcy9udGZzL2NvbXByZXNzLmM9MTYzPXN0YXRpYyBpbnQgbnRmc19kZWNvbXByZXNzKHN0cnVjdCBwYWdlICpkZXN0X3BhZ2VzW10sIGludCBjb21wbGV0ZWRfcGFnZXNbXSxcbi0tXG5mcy9udGZzL2NvbXByZXNzLmMtNDM2LS8qXG5mcy9udGZzL2NvbXByZXNzLmM6NDM3OiAqIG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrIC0gcmVhZCBhIGNvbXByZXNzZWQgYmxvY2sgaW50byB0aGUgcGFnZSBjYWNoZVxuZnMvbnRmcy9jb21wcmVzcy5jLTQzOC0gKiBAZm9saW86XHRsb2NrZWQgZm9saW8gaW4gdGhlIGNvbXByZXNzaW9uIGJsb2NrKHMpIHdlIG5lZWQgdG8gcmVhZFxuLS1cbmZzL250ZnMvY29tcHJlc3MuYy00NTMtICovXG5mcy9udGZzL2NvbXByZXNzLmM6NDU0OmludCBudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9jayhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuZnMvbnRmcy9jb21wcmVzcy5jLTQ1NS17XG4tLVxuZnMvbnRmcy9udGZzLmg9MTk2PXN0YXRpYyBpbmxpbmUgc3RydWN0IG50ZnNfdm9sdW1lICpOVEZTX1NCKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXG4tLVxuZnMvbnRmcy9udGZzLmgtMjAzLS8qIEZyb20gZnMvbnRmcy9jb21wcmVzcy5jICovXG5mcy9udGZzL250ZnMuaDoyMDQ6aW50IG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8pO1xuZnMvbnRmcy9udGZzLmgtMjA1LWludCBhbGxvY2F0ZV9jb21wcmVzc2lvbl9idWZmZXJzKHZvaWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxMjMKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOVEZTIENvbXByZXNzaW9uIFBhdGNoKioKCk9rYXksIHNvIGBudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9ja2AgKmlzKiBkZWZpbml0ZWx5IGNhbGxlZCBmcm9tIGBudGZzX3JlYWRfZm9saW9gLCB3aGljaCBpdHNlbGYgaXMgdGhlIGByZWFkX2ZvbGlvYCBhZGRyZXNzIHNwYWNlIG9wZXJhdGlvbi4gVGhhdCYjMzk7cyBnb29kIHRvIGNvbmZpcm0g4oCTIGl0IG1lYW5zIHRoZSBmdW5jdGlvbiYjMzk7cyByZWFjaGFibGUgYW5kIHdvcmtpbmcgYXMgZXhwZWN0ZWQuCgpOb3csIHRoaXMgcGF0Y2guLi4gaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBjaGFuZ2luZyB0aGUgd2F5IGZvbGlvIGluZGljZXMgYXJlIGhhbmRsZWQuIEl0JiMzOTtzIHJlcGxhY2luZyBgcGFnZS0mZ3Q7X19mb2xpb19pbmRleGAgd2l0aCBgZm9saW8tJmd0O2luZGV4YCBhbmQgYHBhZ2Vfb2Zmc2V0KHBhZ2UpYC4gV2FpdCwgd2FzIGBwYWdlLSZndDtfX2ZvbGlvX2luZGV4YCBkZXByZWNhdGVkIG9yIHJlbW92ZWQ/IEkgbmVlZCB0byBjaGVjayB0aGUgY29tbWl0IGhpc3RvcnkuIEFoLCB5ZXMuIEl0JiMzOTtzIGFuIGludGVybmFsIGZpZWxkLiBVc2luZyBgcGFnZV9vZmZzZXQocGFnZSlgIGlzIHRoZSByaWdodCBBUEkgY2hvaWNlLCB0aGF0JiMzOTtzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGltcHJvdmVtZW50LiBUaGlzIGlzIGEgcmVmYWN0b3JpbmcsIGVmZmVjdGl2ZWx5LgoKQWxzbywgdGhlIHBhdGNoIHNlZW1zIHRvIGhhdmUgc3dhcHBlZCBvdXQgYHplcm9fcGFydGlhbF9jb21wcmVzc2VkX3BhZ2VgIGZvciBgemVyb191c2VyX3NlZ21lbnQocGFnZSwgb2Zmc2V0LCBQQUdFX1NJWkUpYC4gVGhhdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCB0b28g4oCTIGxpa2VseSBhIG1vcmUgZ2VuZXJpYyBhbmQgZWZmaWNpZW50IGFwcHJvYWNoLgoKTm93LCBqdXN0IG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBgbnRmc19kZWNvbXByZXNzYCBpcyBzdGlsbCByZWFjaGFibGUsIHRvIGJlIHN1cmUgYWxsIHRoZSBwaWVjZXMgYXJlIHN0aWxsIGluIHBsYWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudGZzX2RlY29tcHJlc3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9udGZzL2NvbXByZXNzLmM9MTA1PXN0YXRpYyBpbmxpbmUgdm9pZCBoYW5kbGVfYm91bmRzX2NvbXByZXNzZWRfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSxcbi0tXG5mcy9udGZzL2NvbXByZXNzLmMtMTI1LS8qXG5mcy9udGZzL2NvbXByZXNzLmM6MTI2OiAqIG50ZnNfZGVjb21wcmVzcyAtIGRlY29tcHJlc3MgYSBjb21wcmVzc2lvbiBibG9jayBpbnRvIGFuIGFycmF5IG9mIHBhZ2VzXG5mcy9udGZzL2NvbXByZXNzLmMtMTI3LSAqIEBkZXN0X3BhZ2VzOlx0XHRkZXN0aW5hdGlvbiBhcnJheSBvZiBwYWdlc1xuLS1cbmZzL250ZnMvY29tcHJlc3MuYy0xMzktICpcbmZzL250ZnMvY29tcHJlc3MuYzoxNDA6ICogVGhlIGNhbGxlciBtdXN0IGhhdmUgZGlzYWJsZWQgcHJlZW1wdGlvbi4gbnRmc19kZWNvbXByZXNzKCkgcmVlbmFibGVzIGl0IHdoZW5cbmZzL250ZnMvY29tcHJlc3MuYy0xNDEtICogdGhlIGNyaXRpY2FsIHNlY3Rpb24gaXMgZmluaXNoZWQuXG4tLVxuZnMvbnRmcy9jb21wcmVzcy5jLTE2Mi0gKi9cbmZzL250ZnMvY29tcHJlc3MuYzoxNjM6c3RhdGljIGludCBudGZzX2RlY29tcHJlc3Moc3RydWN0IHBhZ2UgKmRlc3RfcGFnZXNbXSwgaW50IGNvbXBsZXRlZF9wYWdlc1tdLFxuZnMvbnRmcy9jb21wcmVzcy5jLTE2NC1cdFx0aW50ICpkZXN0X2luZGV4LCBpbnQgKmRlc3Rfb2ZzLCBjb25zdCBpbnQgZGVzdF9tYXhfaW5kZXgsXG4tLVxuZnMvbnRmcy9jb21wcmVzcy5jPTQ1ND1pbnQgbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2soc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5mcy9udGZzL2NvbXByZXNzLmMtNzc5LVx0XHRudGZzX2RlYnVnKFwmIzM0O0ZvdW5kIGNvbXByZXNzZWQgY29tcHJlc3Npb24gYmxvY2suXCYjMzQ7KTtcbmZzL250ZnMvY29tcHJlc3MuYzo3ODA6XHRcdGVyciA9IG50ZnNfZGVjb21wcmVzcyhwYWdlcywgY29tcGxldGVkX3BhZ2VzLCBcdTAwMjZjdXJfcGFnZSxcbmZzL250ZnMvY29tcHJlc3MuYy03ODEtXHRcdFx0XHRcdTAwMjZjdXJfb2ZzLCBjYl9tYXhfcGFnZSwgY2JfbWF4X29mcywgeHBhZ2UsXG4tLVxuZnMvbnRmcy9jb21wcmVzcy5jLTc4NS1cdFx0ICogV2UgY2FuIHNsZWVwIGZyb20gbm93IG9uLCBsb2NrIGFscmVhZHkgZHJvcHBlZCBieVxuZnMvbnRmcy9jb21wcmVzcy5jOjc4NjpcdFx0ICogbnRmc19kZWNvbXByZXNzKCkuXG5mcy9udGZzL2NvbXByZXNzLmMtNzg3LVx0XHQgKi9cbi0tXG5mcy9udGZzL2NvbXByZXNzLmMtNzg5LVx0XHRcdG50ZnNfZXJyb3Iodm9sLVx1MDAzZXNiLFxuZnMvbnRmcy9jb21wcmVzcy5jOjc5MDpcdFx0XHRcdFwmIzM0O250ZnNfZGVjb21wcmVzcygpIGZhaWxlZCBpbiBpbm9kZSAweCVsbHggd2l0aCBlcnJvciBjb2RlICVpLiBTa2lwcGluZyB0aGlzIGNvbXByZXNzaW9uIGJsb2NrLlwmIzM0OyxcbmZzL250ZnMvY29tcHJlc3MuYy03OTEtXHRcdFx0XHRuaS1cdTAwM2VtZnRfbm8sIC1lcnIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTgyCgkJCQkJCQlvdXRwdXQ6IDEwMgoJCQkJCQkJdGhvdWdodHM6IDI3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgTlRGUyBDb21wcmVzc2lvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSB0cmFjZWQgdGhlIGNhbGwgcGF0aCDigJMgaXQgbG9va3MgbGlrZSBgbnRmc19kZWNvbXByZXNzYCBnZXRzIGludm9rZWQgZGlyZWN0bHkgZnJvbSBgbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2tgLiBUaGF0IG1ha2VzIHRoZSB0d28gY3JpdGljYWwgZnVuY3Rpb25zIHRvIGZvY3VzIG9uLCBhcyBJIHN1c3BlY3RlZCwgYG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrYCBhbmQgYG50ZnNfZGVjb21wcmVzc2AuCgpOb3csIHRoZSBjb25maWd1cmF0aW9uLi4uIEkgaW5pdGlhbGx5IHNhdyBgTlRGU19GU2AsIGJ1dCBpdCYjMzk7cyBhbHdheXMgZ29vZCB0byBkb3VibGUtY2hlY2suIFJpZ2h0LCBhIHF1aWNrIHNjYW4gY29uZmlybWVkIHRoYXQgYE5URlNfRlNgIGlzIGluZGVlZCB0aGUgbWFpbiBjb25maWcuIEFoLCBidXQgdGhhdCYjMzk7cyB0aGUgKm9sZCogTlRGUyBkcml2ZXIhIFRoZXJlJiMzOTtzIGBOVEZTM19GU2AgYXMgd2VsbC4gSG1tLCB0aGUgcGF0Y2ggaXMgY2hhbmdpbmcgYGZzL250ZnMvY29tcHJlc3MuY2AsIHNvIGl0JiMzOTtzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIG9yaWdpbmFsIE5URlMgZHJpdmVyIHVuZGVyIGBOVEZTX0ZTYC4gVGhpcyBjb25maXJtcyBgTlRGU19GU2AgaXMgdGhlIGNvcnJlY3QgY29uZmlnIHRvIGNvbnNpZGVyLgoKTGV0IG1lIGp1c3QgY29uZmlybSB0aGF0IGBOVEZTX0ZTYCBpcyBzdWZmaWNpZW50LiBPa2F5LCBgQ09ORklHX05URlNfRlNgIGlzIGEgdHJpc3RhdGUsIGFuZCBsb29raW5nIGFyb3VuZCwgSSBkb24mIzM5O3Qgc2VlIGFueSBvdGhlciBlc3NlbnRpYWwgY29uZmlncyBoZXJlLiBTbyB3ZSYjMzk7cmUgZ29vZCB0byBnby4KCkhlcmUmIzM5O3MgbXkgZGlzdGlsbGVkIHN1bW1hcnk6CgoqICAgKipXb3J0aEZ1enppbmc6KiogVHJ1ZSAtIFRoaXMgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgaG93IGNvbXByZXNzZWQgZGF0YSBpcyByZWFkLgoqICAgKipGb2N1c1N5bWJvbHM6KiogYFsmIzM0O250ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrJiMzNDssICYjMzQ7bnRmc19kZWNvbXByZXNzJiMzNDtdYCAtIFRoZXNlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucy4KKiAgICoqRW5hYmxlQ29uZmlnczoqKiBgWyYjMzQ7TlRGU19GUyYjMzQ7XWAgLSBUaGUgcmlnaHQgY29uZmlnIGZvciB0aGUgb3JpZ2luYWwgTlRGUyBkcml2ZXIuCiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhdCB0aGUgY29yZSByZWFkIGxldmVsIGZvciBjb21wcmVzc2VkIGZpbGVzLCByZXBsYWNpbmcgZGlyZWN0IGFjY2VzcyB0byBwYWdlLSZndDtfX2ZvbGlvX2luZGV4IHdpdGggZm9saW8gQVBJcyBhbmQgemVyb191c2VyX3NlZ21lbnQuIFRoaXMgaXMgYSBjcnVjaWFsIGNoYW5nZSB0byBob3cgdGhlIGZpbGUgc3lzdGVtIGhhbmRsZXMgY29tcHJlc3NlZCBkYXRhLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TlRGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O250ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrJiMzNDssCiAgICAmIzM0O250ZnNfZGVjb21wcmVzcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaGFuZGxpbmcgb2YgY29tcHJlc3NlZCBwYWdlcyBpbiB0aGUgTlRGUyBmaWxlc3lzdGVtLCByZXBsYWNpbmcgZGlyZWN0IGFjY2VzcyB0byBwYWdlLVx1MDAzZV9fZm9saW9faW5kZXggd2l0aCBwcm9wZXIgZm9saW8gQVBJcyBhbmQgemVyb191c2VyX3NlZ21lbnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSByZWFkIHBhdGggZm9yIGNvbXByZXNzZWQgZmlsZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9jayYjMzQ7LAogICAgJiMzNDtudGZzX2RlY29tcHJlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGhhbmRsaW5nIG9mIGNvbXByZXNzZWQgcGFnZXMgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSwgcmVwbGFjaW5nIGRpcmVjdCBhY2Nlc3MgdG8gcGFnZS1cdTAwM2VfX2ZvbGlvX2luZGV4IHdpdGggcHJvcGVyIGZvbGlvIEFQSXMgYW5kIHplcm9fdXNlcl9zZWdtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgcmVhZCBwYXRoIGZvciBjb21wcmVzc2VkIGZpbGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6NTA6MjAuMDIwOTIyOTQxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ1MDk5NzQwNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlRGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrXCIsXG4gICAgXCJudGZzX2RlY29tcHJlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaGFuZGxpbmcgb2YgY29tcHJlc3NlZCBwYWdlcyBpbiB0aGUgTlRGUyBmaWxlc3lzdGVtLCByZXBsYWNpbmcgZGlyZWN0IGFjY2VzcyB0byBwYWdlLVxcdTAwM2VfX2ZvbGlvX2luZGV4IHdpdGggcHJvcGVyIGZvbGlvIEFQSXMgYW5kIHplcm9fdXNlcl9zZWdtZW50LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgcmVhZCBwYXRoIGZvciBjb21wcmVzc2VkIGZpbGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzo1MDoyMC4wMjA5Mjk1MzFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxNzQ3NTY2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDI4Y2UwOWEzZGQxYjE2MWMxODE1ODIwNDgwZDI0NjUxMTU1ZjU0MTdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMTUgMDc6NTA6MTggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvbnRmcy9jb21wcmVzcy5jIGIvZnMvbnRmcy9jb21wcmVzcy5jXFxuaW5kZXggNzZiZDgwNmI0MWVkZDkuLmQ4M2QzZThlMDZhZWJiIDEwMDY0NFxcbi0tLSBhL2ZzL250ZnMvY29tcHJlc3MuY1xcbisrKyBiL2ZzL250ZnMvY29tcHJlc3MuY1xcbkBAIC05NiwyNiArOTYsNiBAQCB2b2lkIGZyZWVfY29tcHJlc3Npb25fYnVmZmVycyh2b2lkKVxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNm50ZnNfY2JfbG9jayk7XFxuIH1cXG4gXFxuLS8qXFxuLSAqIHplcm9fcGFydGlhbF9jb21wcmVzc2VkX3BhZ2UgLSB6ZXJvIG91dCBvZiBib3VuZHMgY29tcHJlc3NlZCBwYWdlIHJlZ2lvblxcbi0gKiBAcGFnZTogcGFnZSB0byB6ZXJvXFxuLSAqIEBpbml0aWFsaXplZF9zaXplOiBpbml0aWFsaXplZCBzaXplIG9mIHRoZSBhdHRyaWJ1dGVcXG4tICovXFxuLXN0YXRpYyB2b2lkIHplcm9fcGFydGlhbF9jb21wcmVzc2VkX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsXFxuLVxcdFxcdGNvbnN0IHM2NCBpbml0aWFsaXplZF9zaXplKVxcbi17XFxuLVxcdHU4ICprcCA9IHBhZ2VfYWRkcmVzcyhwYWdlKTtcXG4tXFx0dW5zaWduZWQgaW50IGtwX29mcztcXG4tXFxuLVxcdG50ZnNfZGVidWcoXFxcIlplcm9pbmcgcGFnZSByZWdpb24gb3V0c2lkZSBpbml0aWFsaXplZCBzaXplLlxcXCIpO1xcbi1cXHRpZiAoKChzNjQpcGFnZS1cXHUwMDNlX19mb2xpb19pbmRleCBcXHUwMDNjXFx1MDAzYyBQQUdFX1NISUZUKSBcXHUwMDNlPSBpbml0aWFsaXplZF9zaXplKSB7XFxuLVxcdFxcdGNsZWFyX3BhZ2Uoa3ApO1xcbi1cXHRcXHRyZXR1cm47XFxuLVxcdH1cXG4tXFx0a3Bfb2ZzID0gaW5pdGlhbGl6ZWRfc2l6ZSBcXHUwMDI2IH5QQUdFX01BU0s7XFxuLVxcdG1lbXNldChrcCArIGtwX29mcywgMCwgUEFHRV9TSVpFIC0ga3Bfb2ZzKTtcXG4tfVxcbi1cXG4gLypcXG4gICogaGFuZGxlX2JvdW5kc19jb21wcmVzc2VkX3BhZ2UgLSB0ZXN0IGZvclxcdTAwMjZoYW5kbGUgb3V0IG9mIGJvdW5kcyBjb21wcmVzc2VkIHBhZ2VcXG4gICogQHBhZ2U6IHBhZ2UgdG8gY2hlY2sgYW5kIGhhbmRsZVxcbkBAIC0xMjUsOSArMTA1LDIxIEBAIHN0YXRpYyB2b2lkIHplcm9fcGFydGlhbF9jb21wcmVzc2VkX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsXFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBoYW5kbGVfYm91bmRzX2NvbXByZXNzZWRfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSxcXG4gXFx0XFx0Y29uc3QgbG9mZl90IGlfc2l6ZSwgY29uc3QgczY0IGluaXRpYWxpemVkX3NpemUpXFxuIHtcXG4tXFx0aWYgKChwYWdlLVxcdTAwM2VfX2ZvbGlvX2luZGV4IFxcdTAwM2U9IChpbml0aWFsaXplZF9zaXplIFxcdTAwM2VcXHUwMDNlIFBBR0VfU0hJRlQpKSBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHRcXHQoaW5pdGlhbGl6ZWRfc2l6ZSBcXHUwMDNjIGlfc2l6ZSkpXFxuLVxcdFxcdHplcm9fcGFydGlhbF9jb21wcmVzc2VkX3BhZ2UocGFnZSwgaW5pdGlhbGl6ZWRfc2l6ZSk7XFxuK1xcdGxvZmZfdCBwb3MgPSBwYWdlX29mZnNldChwYWdlKTtcXG4rXFxuK1xcdGlmICgocG9zICsgUEFHRV9TSVpFIFxcdTAwM2UgaW5pdGlhbGl6ZWRfc2l6ZSkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0XFx0KGluaXRpYWxpemVkX3NpemUgXFx1MDAzYyBpX3NpemUpKSB7XFxuK1xcdFxcdHNpemVfdCBvZmZzZXQ7XFxuK1xcbitcXHRcXHRudGZzX2RlYnVnKFxcXCJaZXJvaW5nIHBhZ2UgcmVnaW9uIG91dHNpZGUgaW5pdGlhbGl6ZWQgc2l6ZS5cXFwiKTtcXG4rXFx0XFx0aWYgKHBvcyBcXHUwMDNlPSBpbml0aWFsaXplZF9zaXplKVxcbitcXHRcXHRcXHRvZmZzZXQgPSAwO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdG9mZnNldCA9IG9mZnNldF9pbl9wYWdlKGluaXRpYWxpemVkX3NpemUpO1xcbitcXHRcXHR6ZXJvX3VzZXJfc2VnbWVudChwYWdlLCBvZmZzZXQsIFBBR0VfU0laRSk7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGZsdXNoX2RjYWNoZV9wYWdlKHBhZ2UpO1xcbitcXHR9XFxuIH1cXG4gXFxuIC8qXFxuQEAgLTIzMSw3ICsyMjMsNiBAQCBzdGF0aWMgaW50IG50ZnNfZGVjb21wcmVzcyhzdHJ1Y3QgcGFnZSAqZGVzdF9wYWdlc1tdLCBpbnQgY29tcGxldGVkX3BhZ2VzW10sXFxuIFxcdFxcdFxcdFxcdCAqL1xcbiBcXHRcXHRcXHRcXHRoYW5kbGVfYm91bmRzX2NvbXByZXNzZWRfcGFnZShkcCwgaV9zaXplLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRpbml0aWFsaXplZF9zaXplKTtcXG4tXFx0XFx0XFx0XFx0Zmx1c2hfZGNhY2hlX3BhZ2UoZHApO1xcbiBcXHRcXHRcXHRcXHRrdW5tYXBfbG9jYWwocGFnZV9hZGRyZXNzKGRwKSk7XFxuIFxcdFxcdFxcdFxcdFNldFBhZ2VVcHRvZGF0ZShkcCk7XFxuIFxcdFxcdFxcdFxcdHVubG9ja19wYWdlKGRwKTtcXG5AQCAtNDY1LDE0ICs0NTYsMTQgQEAgaW50IG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuIFxcdHN0cnVjdCBwYWdlICpwYWdlID0gXFx1MDAyNmZvbGlvLVxcdTAwM2VwYWdlO1xcbiBcXHRsb2ZmX3QgaV9zaXplO1xcbiBcXHRzNjQgaW5pdGlhbGl6ZWRfc2l6ZTtcXG4tXFx0c3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBwYWdlLVxcdTAwM2VtYXBwaW5nO1xcbitcXHRzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IGZvbGlvLVxcdTAwM2VtYXBwaW5nO1xcbiBcXHRzdHJ1Y3QgbnRmc19pbm9kZSAqbmkgPSBOVEZTX0kobWFwcGluZy1cXHUwMDNlaG9zdCk7XFxuIFxcdHN0cnVjdCBudGZzX3ZvbHVtZSAqdm9sID0gbmktXFx1MDAzZXZvbDtcXG4gXFx0c3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IHZvbC1cXHUwMDNlc2I7XFxuIFxcdHN0cnVjdCBydW5saXN0X2VsZW1lbnQgKnJsO1xcbiBcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbiBcXHR1OCAqY2IsICpjYl9wb3MsICpjYl9lbmQ7XFxuLVxcdHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBpbmRleCA9IHBhZ2UtXFx1MDAzZV9fZm9saW9faW5kZXg7XFxuK1xcdHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBpbmRleCA9IGZvbGlvLVxcdTAwM2VpbmRleDtcXG4gXFx0dTMyIGNiX3NpemUgPSBuaS1cXHUwMDNlaXR5cGUuY29tcHJlc3NlZC5ibG9ja19zaXplO1xcbiBcXHR1NjQgY2Jfc2l6ZV9tYXNrID0gY2Jfc2l6ZSAtIDFVTDtcXG4gXFx0czY0IHZjbjtcXG5AQCAtNzY3LDcgKzc1OCw2IEBAIGludCBudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9jayhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbiBcXHRcXHRcXHRcXHQgKi9cXG4gXFx0XFx0XFx0XFx0aGFuZGxlX2JvdW5kc19jb21wcmVzc2VkX3BhZ2UocGFnZSwgaV9zaXplLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRpbml0aWFsaXplZF9zaXplKTtcXG4tXFx0XFx0XFx0XFx0Zmx1c2hfZGNhY2hlX3BhZ2UocGFnZSk7XFxuIFxcdFxcdFxcdFxcdGt1bm1hcF9sb2NhbChwYWdlX2FkZHJlc3MocGFnZSkpO1xcbiBcXHRcXHRcXHRcXHRTZXRQYWdlVXB0b2RhdGUocGFnZSk7XFxuIFxcdFxcdFxcdFxcdHVubG9ja19wYWdlKHBhZ2UpO1xcbkBAIC04MjIsMTQgKzgxMiwxNiBAQCBpbnQgbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2soc3RydWN0IGZvbGlvICpmb2xpbylcXG4gXFx0Zm9yIChjdXJfcGFnZSA9IDA7IGN1cl9wYWdlIFxcdTAwM2MgbWF4X3BhZ2U7IGN1cl9wYWdlKyspIHtcXG4gXFx0XFx0cGFnZSA9IHBhZ2VzW2N1cl9wYWdlXTtcXG4gXFx0XFx0aWYgKHBhZ2UpIHtcXG4rXFx0XFx0XFx0Zm9saW8gPSBwYWdlX2ZvbGlvKHBhZ2UpO1xcbitcXG4gXFx0XFx0XFx0bnRmc19lcnJvcih2b2wtXFx1MDAzZXNiLFxcbiBcXHRcXHRcXHRcXHRcXFwiU3RpbGwgaGF2ZSBwYWdlcyBsZWZ0ISBUZXJtaW5hdGluZyB0aGVtIHdpdGggZXh0cmVtZSBwcmVqdWRpY2UuICBJbm9kZSAweCVsbHgsIHBhZ2UgaW5kZXggMHglbHguXFxcIixcXG4tXFx0XFx0XFx0XFx0bmktXFx1MDAzZW1mdF9ubywgcGFnZS1cXHUwMDNlX19mb2xpb19pbmRleCk7XFxuLVxcdFxcdFxcdGZsdXNoX2RjYWNoZV9wYWdlKHBhZ2UpO1xcbitcXHRcXHRcXHRcXHRuaS1cXHUwMDNlbWZ0X25vLCBmb2xpby1cXHUwMDNlaW5kZXgpO1xcbitcXHRcXHRcXHRmbHVzaF9kY2FjaGVfZm9saW8oZm9saW8pO1xcbiBcXHRcXHRcXHRrdW5tYXBfbG9jYWwocGFnZV9hZGRyZXNzKHBhZ2UpKTtcXG4tXFx0XFx0XFx0dW5sb2NrX3BhZ2UocGFnZSk7XFxuK1xcdFxcdFxcdGZvbGlvX3VubG9jayhmb2xpbyk7XFxuIFxcdFxcdFxcdGlmIChjdXJfcGFnZSAhPSB4cGFnZSlcXG4tXFx0XFx0XFx0XFx0cHV0X3BhZ2UocGFnZSk7XFxuK1xcdFxcdFxcdFxcdGZvbGlvX3B1dChmb2xpbyk7XFxuIFxcdFxcdFxcdHBhZ2VzW2N1cl9wYWdlXSA9IE5VTEw7XFxuIFxcdFxcdH1cXG4gXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzo1MDoyMC42MzkxMTg5ODdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzODkxNzY5OTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5URlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9ja1wiLFxuICAgIFwibnRmc19kZWNvbXByZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGhhbmRsaW5nIG9mIGNvbXByZXNzZWQgcGFnZXMgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSwgcmVwbGFjaW5nIGRpcmVjdCBhY2Nlc3MgdG8gcGFnZS1cXHUwMDNlX19mb2xpb19pbmRleCB3aXRoIHByb3BlciBmb2xpbyBBUElzIGFuZCB6ZXJvX3VzZXJfc2VnbWVudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIHJlYWQgcGF0aCBmb3IgY29tcHJlc3NlZCBmaWxlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyOGNlMDlhM2RkMWIxNjFjMTgxNTgyMDQ4MGQyNDY1MTE1NWY1NDE3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMDc6NTA6MTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9udGZzL2NvbXByZXNzLmMgYi9mcy9udGZzL2NvbXByZXNzLmNcbmluZGV4IDc2YmQ4MDZiNDFlZGQ5Li5kODNkM2U4ZTA2YWViYiAxMDA2NDRcbi0tLSBhL2ZzL250ZnMvY29tcHJlc3MuY1xuKysrIGIvZnMvbnRmcy9jb21wcmVzcy5jXG5AQCAtOTYsMjYgKzk2LDYgQEAgdm9pZCBmcmVlX2NvbXByZXNzaW9uX2J1ZmZlcnModm9pZClcbiBcdG11dGV4X3VubG9jayhcdTAwMjZudGZzX2NiX2xvY2spO1xuIH1cbiBcbi0vKlxuLSAqIHplcm9fcGFydGlhbF9jb21wcmVzc2VkX3BhZ2UgLSB6ZXJvIG91dCBvZiBib3VuZHMgY29tcHJlc3NlZCBwYWdlIHJlZ2lvblxuLSAqIEBwYWdlOiBwYWdlIHRvIHplcm9cbi0gKiBAaW5pdGlhbGl6ZWRfc2l6ZTogaW5pdGlhbGl6ZWQgc2l6ZSBvZiB0aGUgYXR0cmlidXRlXG4tICovXG4tc3RhdGljIHZvaWQgemVyb19wYXJ0aWFsX2NvbXByZXNzZWRfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSxcbi1cdFx0Y29uc3QgczY0IGluaXRpYWxpemVkX3NpemUpXG4te1xuLVx0dTggKmtwID0gcGFnZV9hZGRyZXNzKHBhZ2UpO1xuLVx0dW5zaWduZWQgaW50IGtwX29mcztcbi1cbi1cdG50ZnNfZGVidWcoXCJaZXJvaW5nIHBhZ2UgcmVnaW9uIG91dHNpZGUgaW5pdGlhbGl6ZWQgc2l6ZS5cIik7XG4tXHRpZiAoKChzNjQpcGFnZS1cdTAwM2VfX2ZvbGlvX2luZGV4IFx1MDAzY1x1MDAzYyBQQUdFX1NISUZUKSBcdTAwM2U9IGluaXRpYWxpemVkX3NpemUpIHtcbi1cdFx0Y2xlYXJfcGFnZShrcCk7XG4tXHRcdHJldHVybjtcbi1cdH1cbi1cdGtwX29mcyA9IGluaXRpYWxpemVkX3NpemUgXHUwMDI2IH5QQUdFX01BU0s7XG4tXHRtZW1zZXQoa3AgKyBrcF9vZnMsIDAsIFBBR0VfU0laRSAtIGtwX29mcyk7XG4tfVxuLVxuIC8qXG4gICogaGFuZGxlX2JvdW5kc19jb21wcmVzc2VkX3BhZ2UgLSB0ZXN0IGZvclx1MDAyNmhhbmRsZSBvdXQgb2YgYm91bmRzIGNvbXByZXNzZWQgcGFnZVxuICAqIEBwYWdlOiBwYWdlIHRvIGNoZWNrIGFuZCBoYW5kbGVcbkBAIC0xMjUsOSArMTA1LDIxIEBAIHN0YXRpYyB2b2lkIHplcm9fcGFydGlhbF9jb21wcmVzc2VkX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsXG4gc3RhdGljIGlubGluZSB2b2lkIGhhbmRsZV9ib3VuZHNfY29tcHJlc3NlZF9wYWdlKHN0cnVjdCBwYWdlICpwYWdlLFxuIFx0XHRjb25zdCBsb2ZmX3QgaV9zaXplLCBjb25zdCBzNjQgaW5pdGlhbGl6ZWRfc2l6ZSlcbiB7XG4tXHRpZiAoKHBhZ2UtXHUwMDNlX19mb2xpb19pbmRleCBcdTAwM2U9IChpbml0aWFsaXplZF9zaXplIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUKSkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0KGluaXRpYWxpemVkX3NpemUgXHUwMDNjIGlfc2l6ZSkpXG4tXHRcdHplcm9fcGFydGlhbF9jb21wcmVzc2VkX3BhZ2UocGFnZSwgaW5pdGlhbGl6ZWRfc2l6ZSk7XG4rXHRsb2ZmX3QgcG9zID0gcGFnZV9vZmZzZXQocGFnZSk7XG4rXG4rXHRpZiAoKHBvcyArIFBBR0VfU0laRSBcdTAwM2UgaW5pdGlhbGl6ZWRfc2l6ZSkgXHUwMDI2XHUwMDI2XG4rXHRcdFx0KGluaXRpYWxpemVkX3NpemUgXHUwMDNjIGlfc2l6ZSkpIHtcbitcdFx0c2l6ZV90IG9mZnNldDtcbitcbitcdFx0bnRmc19kZWJ1ZyhcIlplcm9pbmcgcGFnZSByZWdpb24gb3V0c2lkZSBpbml0aWFsaXplZCBzaXplLlwiKTtcbitcdFx0aWYgKHBvcyBcdTAwM2U9IGluaXRpYWxpemVkX3NpemUpXG4rXHRcdFx0b2Zmc2V0ID0gMDtcbitcdFx0ZWxzZVxuK1x0XHRcdG9mZnNldCA9IG9mZnNldF9pbl9wYWdlKGluaXRpYWxpemVkX3NpemUpO1xuK1x0XHR6ZXJvX3VzZXJfc2VnbWVudChwYWdlLCBvZmZzZXQsIFBBR0VfU0laRSk7XG4rXHR9IGVsc2Uge1xuK1x0XHRmbHVzaF9kY2FjaGVfcGFnZShwYWdlKTtcbitcdH1cbiB9XG4gXG4gLypcbkBAIC0yMzEsNyArMjIzLDYgQEAgc3RhdGljIGludCBudGZzX2RlY29tcHJlc3Moc3RydWN0IHBhZ2UgKmRlc3RfcGFnZXNbXSwgaW50IGNvbXBsZXRlZF9wYWdlc1tdLFxuIFx0XHRcdFx0ICovXG4gXHRcdFx0XHRoYW5kbGVfYm91bmRzX2NvbXByZXNzZWRfcGFnZShkcCwgaV9zaXplLFxuIFx0XHRcdFx0XHRcdGluaXRpYWxpemVkX3NpemUpO1xuLVx0XHRcdFx0Zmx1c2hfZGNhY2hlX3BhZ2UoZHApO1xuIFx0XHRcdFx0a3VubWFwX2xvY2FsKHBhZ2VfYWRkcmVzcyhkcCkpO1xuIFx0XHRcdFx0U2V0UGFnZVVwdG9kYXRlKGRwKTtcbiBcdFx0XHRcdHVubG9ja19wYWdlKGRwKTtcbkBAIC00NjUsMTQgKzQ1NiwxNCBAQCBpbnQgbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2soc3RydWN0IGZvbGlvICpmb2xpbylcbiBcdHN0cnVjdCBwYWdlICpwYWdlID0gXHUwMDI2Zm9saW8tXHUwMDNlcGFnZTtcbiBcdGxvZmZfdCBpX3NpemU7XG4gXHRzNjQgaW5pdGlhbGl6ZWRfc2l6ZTtcbi1cdHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nID0gcGFnZS1cdTAwM2VtYXBwaW5nO1xuK1x0c3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBmb2xpby1cdTAwM2VtYXBwaW5nO1xuIFx0c3RydWN0IG50ZnNfaW5vZGUgKm5pID0gTlRGU19JKG1hcHBpbmctXHUwMDNlaG9zdCk7XG4gXHRzdHJ1Y3QgbnRmc192b2x1bWUgKnZvbCA9IG5pLVx1MDAzZXZvbDtcbiBcdHN0cnVjdCBzdXBlcl9ibG9jayAqc2IgPSB2b2wtXHUwMDNlc2I7XG4gXHRzdHJ1Y3QgcnVubGlzdF9lbGVtZW50ICpybDtcbiBcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXHR1OCAqY2IsICpjYl9wb3MsICpjYl9lbmQ7XG4tXHR1bnNpZ25lZCBsb25nIG9mZnNldCwgaW5kZXggPSBwYWdlLVx1MDAzZV9fZm9saW9faW5kZXg7XG4rXHR1bnNpZ25lZCBsb25nIG9mZnNldCwgaW5kZXggPSBmb2xpby1cdTAwM2VpbmRleDtcbiBcdHUzMiBjYl9zaXplID0gbmktXHUwMDNlaXR5cGUuY29tcHJlc3NlZC5ibG9ja19zaXplO1xuIFx0dTY0IGNiX3NpemVfbWFzayA9IGNiX3NpemUgLSAxVUw7XG4gXHRzNjQgdmNuO1xuQEAgLTc2Nyw3ICs3NTgsNiBAQCBpbnQgbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2soc3RydWN0IGZvbGlvICpmb2xpbylcbiBcdFx0XHRcdCAqL1xuIFx0XHRcdFx0aGFuZGxlX2JvdW5kc19jb21wcmVzc2VkX3BhZ2UocGFnZSwgaV9zaXplLFxuIFx0XHRcdFx0XHRcdGluaXRpYWxpemVkX3NpemUpO1xuLVx0XHRcdFx0Zmx1c2hfZGNhY2hlX3BhZ2UocGFnZSk7XG4gXHRcdFx0XHRrdW5tYXBfbG9jYWwocGFnZV9hZGRyZXNzKHBhZ2UpKTtcbiBcdFx0XHRcdFNldFBhZ2VVcHRvZGF0ZShwYWdlKTtcbiBcdFx0XHRcdHVubG9ja19wYWdlKHBhZ2UpO1xuQEAgLTgyMiwxNCArODEyLDE2IEBAIGludCBudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9jayhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuIFx0Zm9yIChjdXJfcGFnZSA9IDA7IGN1cl9wYWdlIFx1MDAzYyBtYXhfcGFnZTsgY3VyX3BhZ2UrKykge1xuIFx0XHRwYWdlID0gcGFnZXNbY3VyX3BhZ2VdO1xuIFx0XHRpZiAocGFnZSkge1xuK1x0XHRcdGZvbGlvID0gcGFnZV9mb2xpbyhwYWdlKTtcbitcbiBcdFx0XHRudGZzX2Vycm9yKHZvbC1cdTAwM2VzYixcbiBcdFx0XHRcdFwiU3RpbGwgaGF2ZSBwYWdlcyBsZWZ0ISBUZXJtaW5hdGluZyB0aGVtIHdpdGggZXh0cmVtZSBwcmVqdWRpY2UuICBJbm9kZSAweCVsbHgsIHBhZ2UgaW5kZXggMHglbHguXCIsXG4tXHRcdFx0XHRuaS1cdTAwM2VtZnRfbm8sIHBhZ2UtXHUwMDNlX19mb2xpb19pbmRleCk7XG4tXHRcdFx0Zmx1c2hfZGNhY2hlX3BhZ2UocGFnZSk7XG4rXHRcdFx0XHRuaS1cdTAwM2VtZnRfbm8sIGZvbGlvLVx1MDAzZWluZGV4KTtcbitcdFx0XHRmbHVzaF9kY2FjaGVfZm9saW8oZm9saW8pO1xuIFx0XHRcdGt1bm1hcF9sb2NhbChwYWdlX2FkZHJlc3MocGFnZSkpO1xuLVx0XHRcdHVubG9ja19wYWdlKHBhZ2UpO1xuK1x0XHRcdGZvbGlvX3VubG9jayhmb2xpbyk7XG4gXHRcdFx0aWYgKGN1cl9wYWdlICE9IHhwYWdlKVxuLVx0XHRcdFx0cHV0X3BhZ2UocGFnZSk7XG4rXHRcdFx0XHRmb2xpb19wdXQoZm9saW8pO1xuIFx0XHRcdHBhZ2VzW2N1cl9wYWdlXSA9IE5VTEw7XG4gXHRcdH1cbiBcdH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjUwOjIwLjYzOTEyMDE2N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4Mzc0MTYxODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGF0Y2ggdG8gdGhlIE5URlMgQ29tcHJlc3Npb24gQ29kZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCdzIGJlZW4gYXBwbGllZCB0byBgZnMvbnRmcy9jb21wcmVzcy5jYC4gSW1tZWRpYXRlbHksIEkgc2VlIGl0J3MgdG91Y2hpbmcgYGhhbmRsZV9ib3VuZHNfY29tcHJlc3NlZF9wYWdlYCBhbmQgYG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrYC4gVGhhdCdzIGludGVyZXN0aW5nLCBzdWdnZXN0aW5nIGNoYW5nZXMgdG8gaG93IGNvbXByZXNzZWQgZGF0YSBpcyBoYW5kbGVkIGF0IHRoZSBwYWdlIGxldmVsLiBUaGV5J3ZlIHJlcGxhY2VkIHRoZSBkaXJlY3QgdXNlIG9mIGBwYWdlLVx1MDAzZV9fZm9saW9faW5kZXhgIHdpdGggYGZvbGlvLVx1MDAzZWluZGV4YCBvciBgcGFnZV9vZmZzZXQocGFnZSlgLCB3aGljaCBpcyBhIHByZXR0eSBzdGFuZGFyZCBmb2xpby9wYWdlIHN0cnVjdHVyZSB1cGRhdGUsIG5vdGhpbmcgYWxhcm1pbmcuIFJlcGxhY2luZyBgemVyb19wYXJ0aWFsX2NvbXByZXNzZWRfcGFnZWAgd2l0aCBgemVyb191c2VyX3NlZ21lbnQocGFnZSwgb2Zmc2V0LCBQQUdFX1NJWkUpYCBpcyBhbm90aGVyIG5vdGFibGUgY2hhbmdlLCBsaWtlbHkgYWltZWQgYXQgaW1wcm92aW5nIHRoZSB6ZXJvaW5nIHByb2Nlc3Mgd2l0aCBwb3RlbnRpYWxseSBiZXR0ZXIgbWVtb3J5IG1hbmFnZW1lbnQuIEZpbmFsbHksIEkgbm90aWNlIHRoZXkncmUgc3dpdGNoaW5nIGBmbHVzaF9kY2FjaGVfcGFnZWAgdG8gYGZsdXNoX2RjYWNoZV9mb2xpb2AgYW5kIGB1bmxvY2tfcGFnZWAgdG8gYGZvbGlvX3VubG9ja2AgaW4gdGhlIGVycm9yIGhhbmRsaW5nLiBDbGVhcmx5IHRoZXkncmUgY29uc29saWRhdGluZyB0aGUgZm9saW8gdXNhZ2UgdGhyb3VnaG91dC5cblxuQmVmb3JlIGRpdmluZyBpbnRvIHRoZSBjb2RlIGNoYW5nZXMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgTlRGUyBzdXBwb3J0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIE5URlMgaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGhvdyBpdCBpcyBjb25maWd1cmVkLiBMZXQncyBzZWUgaWYgdGhpcyBoYXMgYSBjb25kaXRpb25hbCBpbmNsdXNpb24gYmFzZWQgb24gdGhlIGNvbmZpZ3VyYXRpb24uIEknbGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGluIHRoZSBOVEZTIGRpcmVjdG9yeSwgc28gYGZzL250ZnMvS2NvbmZpZ2AuIEFoLCBoZXJlIGl0IGlzLCBgQ09ORklHX05URlNfRlNgLiBXYWl0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgY29uZnVzaW5nIHRoaXMgd2l0aCBudGZzMywgZ2l2ZW4gdGhlIG9uZ29pbmcgZGV2ZWxvcG1lbnQuIEdpdmVuIHRoZSBwYXRoIHRvIHRoZSBtb2RpZmllZCBmaWxlIGlzIGBmcy9udGZzL2NvbXByZXNzLmNgLCBJJ20gY29uZmlkZW50IGl0J3MgdGhlIG9yaWdpbmFsIGBDT05GSUdfTlRGU19GU2AuIEknbGwgc3RpbGwgcXVpY2tseSBjb25maXJtIHRoYXQgdGhlIGNvbmZpZyBpcyBzdGlsbCB0aGVyZS4gR29vZC4gV2l0aCB0aGF0IGNvbnRleHQgaW4gbWluZCwgSSBjYW4gc3RhcnQgdG8gZGlzc2VjdCB0aGUgcGF0Y2gncyBsb2dpYyBhbmQgYXNzZXNzIGl0cyBpbXBhY3Qgb24gdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk5OCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjUwOjI2LjQ3NjUzODgzMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTI1NjAyOTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5URlNfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL250ZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL250ZnMvS2NvbmZpZzoyOmNvbmZpZyBOVEZTX0ZTXFxuZnMvbnRmcy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk5URlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG4tLVxcbmZzL250ZnMvS2NvbmZpZz0xMz1jb25maWcgTlRGU19ERUJVR1xcbi0tXFxuZnMvbnRmcy9LY29uZmlnLTM0LVxcbmZzL250ZnMvS2NvbmZpZzozNTpjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcXG5mcy9udGZzL0tjb25maWctMzYtXFx0Ym9vbCBcXFwiTlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6NTA6MjYuNjI5MTAzOTg4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk0NzIzMDM3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBOVEZTIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBjb25maXJtaW5nIHRoYXQgYENPTkZJR19OVEZTX0ZTYCBpcyBwcmVzZW50Li4uIGdvb2QuIE5vdywgYSBjcml0aWNhbCBwb2ludCDigJMgSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHdoZXRoZXIgYENPTkZJR19OVEZTX0ZTYCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuIEl0J3MgYSBmaWxlIHN5c3RlbSwgc28gaW5pdGlhbCBlbmFibGVtZW50IGlzbid0IGFsd2F5cyB0aGUgbm9ybS4gTmVlZCB0byBjaGVjayBmb3IgdGhhdC4gQW5kIHdoaWxlIEknbSBhdCBpdCwgSSBzaG91bGQgYWxzbyBpbW1lZGlhdGVseSBsb29rIGZvciBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBjb21wcmVzc2lvbiB3aXRoaW4gdGhlIE5URlMgc2V0dXAuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbXByZXNzaW9uIGNhcGFiaWxpdGllcyBhbmQgdGhlaXIgZGVmYXVsdHMgaXMgaW1wb3J0YW50IGZvciBwZXJmb3JtYW5jZSBhbmFseXNpcy4gR290dGEgZ2V0IGEgZmVlbCBmb3IgaG93IGl0J3MgY29uZmlndXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzgyMSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjUwOjI5LjU3NjMzNjg2NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjkwNTA0MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5URlNfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL250ZnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9udGZzL0tjb25maWc6Mjpjb25maWcgTlRGU19GU1xcbmZzL250ZnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9udGZzL0tjb25maWctMTItXFxuZnMvbnRmcy9LY29uZmlnOjEzOmNvbmZpZyBOVEZTX0RFQlVHXFxuZnMvbnRmcy9LY29uZmlnLTE0LVxcdGJvb2wgXFxcIk5URlMgZGVidWdnaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9udGZzL0tjb25maWctMzQtXFxuZnMvbnRmcy9LY29uZmlnOjM1OmNvbmZpZyBOVEZTX0ZTX1BPU0lYX0FDTFxcbmZzL250ZnMvS2NvbmZpZy0zNi1cXHRib29sIFxcXCJOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzo1MDozMC4wNDU0MDA4NzVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQyODU2MTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTlRGUyBDb21wcmVzc2lvbiBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIHRoZXJlJ3Mgbm8gc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpdGVtIEkgY2FuIGltbWVkaWF0ZWx5IHBvaW50IHRvIHJlZ2FyZGluZyBjb21wcmVzc2lvbiwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIE15IHByaW1hcnkgdGFyZ2V0cyBmb3IgaW52ZXN0aWdhdGlvbiBhcmUgY2xlYXJseSBgbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2tgIGFuZCBgaGFuZGxlX2JvdW5kc19jb21wcmVzc2VkX3BhZ2VgLiBUaGF0IGlubGluZSBmdW5jdGlvbiwgYGhhbmRsZV9ib3VuZHNfY29tcHJlc3NlZF9wYWdlYCwgaXMgY2FsbGVkIGJ5ICpib3RoKiBgbnRmc19kZWNvbXByZXNzYCBhbmQsIGltcG9ydGFudGx5LCB0aGUgYWZvcmVtZW50aW9uZWQgYG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrYC4gVGhpcyBtZWFucywgZnJvbSBhIGRlYnVnZ2luZyBzdGFuZHBvaW50LCBJIHNob3VsZCBwcm9iYWJseSBmb2N1cyBvbiB0aG9zZSB0d28gZnVuY3Rpb25zIC0tIGBudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9ja2AgYW5kIGBudGZzX2RlY29tcHJlc3NgLiBUaGV5J3JlIHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMuXG5cbk5vdywgYSBjcnVjaWFsIG5leHQgc3RlcDogSSBuZWVkIHRvIHZlcmlmeSBob3cgYG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrYCBpcyBpbnZva2VkLiBJcyBpdCBjYWxsZWQgZGlyZWN0bHksIG9yIGlzIGl0IHBhcnQgb2YgYSBsYXJnZXIgYWRkcmVzcyBzcGFjZSBvcGVyYXRpb24/IEZpZ3VyaW5nIG91dCB0aGUgcmVhY2hhYmlsaXR5IG9mIHRoYXQgZnVuY3Rpb24gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjE5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjUwOjMzLjc4ODI1OTU5NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTI1MDQzNDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbnRmcy9hb3BzLmM9NDg9c3RhdGljIGNvbnN0IHN0cnVjdCBpb21hcF9yZWFkX29wcyBudGZzX2lvbWFwX2Jpb19yZWFkX29wcyA9IHtcXG4tLVxcbmZzL250ZnMvYW9wcy5jLTYzLSAqIC0gSWYgdGhlIGF0dHJpYnV0ZSBpcyBub24tcmVzaWRlbnQgYW5kIGNvbXByZXNzZWQsIHRoZSByZWFkIG9wZXJhdGlvbiBpc1xcbmZzL250ZnMvYW9wcy5jOjY0OiAqICAgZGVsZWdhdGVkIHRvIG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrKCkuXFxuZnMvbnRmcy9hb3BzLmMtNjUtICogLSBGb3Igbm9ybWFsIHJlc2lkZW50IG9yIG5vbi1yZXNpZGVudCBhdHRyaWJ1dGUsIGl0IHV0aWxpemVzIHRoZSBnZW5lcmljXFxuLS1cXG5mcy9udGZzL2FvcHMuYz03MD1zdGF0aWMgaW50IG50ZnNfcmVhZF9mb2xpbyhzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbmZzL250ZnMvYW9wcy5jLTk2LVxcdFxcdGlmIChOSW5vTm9uUmVzaWRlbnQobmkpIFxcdTAwMjZcXHUwMDI2IE5Jbm9Db21wcmVzc2VkKG5pKSlcXG5mcy9udGZzL2FvcHMuYzo5NzpcXHRcXHRcXHRyZXR1cm4gbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2soZm9saW8pO1xcbmZzL250ZnMvYW9wcy5jLTk4LVxcdH1cXG4tLVxcbmZzL250ZnMvY29tcHJlc3MuYz0xNjM9c3RhdGljIGludCBudGZzX2RlY29tcHJlc3Moc3RydWN0IHBhZ2UgKmRlc3RfcGFnZXNbXSwgaW50IGNvbXBsZXRlZF9wYWdlc1tdLFxcbi0tXFxuZnMvbnRmcy9jb21wcmVzcy5jLTQzNi0vKlxcbmZzL250ZnMvY29tcHJlc3MuYzo0Mzc6ICogbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2sgLSByZWFkIGEgY29tcHJlc3NlZCBibG9jayBpbnRvIHRoZSBwYWdlIGNhY2hlXFxuZnMvbnRmcy9jb21wcmVzcy5jLTQzOC0gKiBAZm9saW86XFx0bG9ja2VkIGZvbGlvIGluIHRoZSBjb21wcmVzc2lvbiBibG9jayhzKSB3ZSBuZWVkIHRvIHJlYWRcXG4tLVxcbmZzL250ZnMvY29tcHJlc3MuYy00NTMtICovXFxuZnMvbnRmcy9jb21wcmVzcy5jOjQ1NDppbnQgbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2soc3RydWN0IGZvbGlvICpmb2xpbylcXG5mcy9udGZzL2NvbXByZXNzLmMtNDU1LXtcXG4tLVxcbmZzL250ZnMvbnRmcy5oPTE5Nj1zdGF0aWMgaW5saW5lIHN0cnVjdCBudGZzX3ZvbHVtZSAqTlRGU19TQihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbi0tXFxuZnMvbnRmcy9udGZzLmgtMjAzLS8qIEZyb20gZnMvbnRmcy9jb21wcmVzcy5jICovXFxuZnMvbnRmcy9udGZzLmg6MjA0OmludCBudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9jayhzdHJ1Y3QgZm9saW8gKmZvbGlvKTtcXG5mcy9udGZzL250ZnMuaC0yMDUtaW50IGFsbG9jYXRlX2NvbXByZXNzaW9uX2J1ZmZlcnModm9pZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA3OjUwOjMzLjkwMDc2ODY2MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2ODc2NTI3NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOVEZTIENvbXByZXNzaW9uIFBhdGNoKipcblxuT2theSwgc28gYG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrYCAqaXMqIGRlZmluaXRlbHkgY2FsbGVkIGZyb20gYG50ZnNfcmVhZF9mb2xpb2AsIHdoaWNoIGl0c2VsZiBpcyB0aGUgYHJlYWRfZm9saW9gIGFkZHJlc3Mgc3BhY2Ugb3BlcmF0aW9uLiBUaGF0J3MgZ29vZCB0byBjb25maXJtIOKAkyBpdCBtZWFucyB0aGUgZnVuY3Rpb24ncyByZWFjaGFibGUgYW5kIHdvcmtpbmcgYXMgZXhwZWN0ZWQuXG5cbk5vdywgdGhpcyBwYXRjaC4uLiBpdCBsb29rcyBsaWtlIGl0J3MgY2hhbmdpbmcgdGhlIHdheSBmb2xpbyBpbmRpY2VzIGFyZSBoYW5kbGVkLiBJdCdzIHJlcGxhY2luZyBgcGFnZS1cdTAwM2VfX2ZvbGlvX2luZGV4YCB3aXRoIGBmb2xpby1cdTAwM2VpbmRleGAgYW5kIGBwYWdlX29mZnNldChwYWdlKWAuIFdhaXQsIHdhcyBgcGFnZS1cdTAwM2VfX2ZvbGlvX2luZGV4YCBkZXByZWNhdGVkIG9yIHJlbW92ZWQ/IEkgbmVlZCB0byBjaGVjayB0aGUgY29tbWl0IGhpc3RvcnkuIEFoLCB5ZXMuIEl0J3MgYW4gaW50ZXJuYWwgZmllbGQuIFVzaW5nIGBwYWdlX29mZnNldChwYWdlKWAgaXMgdGhlIHJpZ2h0IEFQSSBjaG9pY2UsIHRoYXQncyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBpbXByb3ZlbWVudC4gVGhpcyBpcyBhIHJlZmFjdG9yaW5nLCBlZmZlY3RpdmVseS5cblxuQWxzbywgdGhlIHBhdGNoIHNlZW1zIHRvIGhhdmUgc3dhcHBlZCBvdXQgYHplcm9fcGFydGlhbF9jb21wcmVzc2VkX3BhZ2VgIGZvciBgemVyb191c2VyX3NlZ21lbnQocGFnZSwgb2Zmc2V0LCBQQUdFX1NJWkUpYC4gVGhhdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHRvbyDigJMgbGlrZWx5IGEgbW9yZSBnZW5lcmljIGFuZCBlZmZpY2llbnQgYXBwcm9hY2guXG5cbk5vdywganVzdCBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IHRoYXQgYG50ZnNfZGVjb21wcmVzc2AgaXMgc3RpbGwgcmVhY2hhYmxlLCB0byBiZSBzdXJlIGFsbCB0aGUgcGllY2VzIGFyZSBzdGlsbCBpbiBwbGFjZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTEyMywiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzo1MDozOC41ODg0MjQyMTFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMTk5OTA4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudGZzX2RlY29tcHJlc3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbnRmcy9jb21wcmVzcy5jPTEwNT1zdGF0aWMgaW5saW5lIHZvaWQgaGFuZGxlX2JvdW5kc19jb21wcmVzc2VkX3BhZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsXFxuLS1cXG5mcy9udGZzL2NvbXByZXNzLmMtMTI1LS8qXFxuZnMvbnRmcy9jb21wcmVzcy5jOjEyNjogKiBudGZzX2RlY29tcHJlc3MgLSBkZWNvbXByZXNzIGEgY29tcHJlc3Npb24gYmxvY2sgaW50byBhbiBhcnJheSBvZiBwYWdlc1xcbmZzL250ZnMvY29tcHJlc3MuYy0xMjctICogQGRlc3RfcGFnZXM6XFx0XFx0ZGVzdGluYXRpb24gYXJyYXkgb2YgcGFnZXNcXG4tLVxcbmZzL250ZnMvY29tcHJlc3MuYy0xMzktICpcXG5mcy9udGZzL2NvbXByZXNzLmM6MTQwOiAqIFRoZSBjYWxsZXIgbXVzdCBoYXZlIGRpc2FibGVkIHByZWVtcHRpb24uIG50ZnNfZGVjb21wcmVzcygpIHJlZW5hYmxlcyBpdCB3aGVuXFxuZnMvbnRmcy9jb21wcmVzcy5jLTE0MS0gKiB0aGUgY3JpdGljYWwgc2VjdGlvbiBpcyBmaW5pc2hlZC5cXG4tLVxcbmZzL250ZnMvY29tcHJlc3MuYy0xNjItICovXFxuZnMvbnRmcy9jb21wcmVzcy5jOjE2MzpzdGF0aWMgaW50IG50ZnNfZGVjb21wcmVzcyhzdHJ1Y3QgcGFnZSAqZGVzdF9wYWdlc1tdLCBpbnQgY29tcGxldGVkX3BhZ2VzW10sXFxuZnMvbnRmcy9jb21wcmVzcy5jLTE2NC1cXHRcXHRpbnQgKmRlc3RfaW5kZXgsIGludCAqZGVzdF9vZnMsIGNvbnN0IGludCBkZXN0X21heF9pbmRleCxcXG4tLVxcbmZzL250ZnMvY29tcHJlc3MuYz00NTQ9aW50IG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrKHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuLS1cXG5mcy9udGZzL2NvbXByZXNzLmMtNzc5LVxcdFxcdG50ZnNfZGVidWcoXFxcIkZvdW5kIGNvbXByZXNzZWQgY29tcHJlc3Npb24gYmxvY2suXFxcIik7XFxuZnMvbnRmcy9jb21wcmVzcy5jOjc4MDpcXHRcXHRlcnIgPSBudGZzX2RlY29tcHJlc3MocGFnZXMsIGNvbXBsZXRlZF9wYWdlcywgXFx1MDAyNmN1cl9wYWdlLFxcbmZzL250ZnMvY29tcHJlc3MuYy03ODEtXFx0XFx0XFx0XFx0XFx1MDAyNmN1cl9vZnMsIGNiX21heF9wYWdlLCBjYl9tYXhfb2ZzLCB4cGFnZSxcXG4tLVxcbmZzL250ZnMvY29tcHJlc3MuYy03ODUtXFx0XFx0ICogV2UgY2FuIHNsZWVwIGZyb20gbm93IG9uLCBsb2NrIGFscmVhZHkgZHJvcHBlZCBieVxcbmZzL250ZnMvY29tcHJlc3MuYzo3ODY6XFx0XFx0ICogbnRmc19kZWNvbXByZXNzKCkuXFxuZnMvbnRmcy9jb21wcmVzcy5jLTc4Ny1cXHRcXHQgKi9cXG4tLVxcbmZzL250ZnMvY29tcHJlc3MuYy03ODktXFx0XFx0XFx0bnRmc19lcnJvcih2b2wtXFx1MDAzZXNiLFxcbmZzL250ZnMvY29tcHJlc3MuYzo3OTA6XFx0XFx0XFx0XFx0XFxcIm50ZnNfZGVjb21wcmVzcygpIGZhaWxlZCBpbiBpbm9kZSAweCVsbHggd2l0aCBlcnJvciBjb2RlICVpLiBTa2lwcGluZyB0aGlzIGNvbXByZXNzaW9uIGJsb2NrLlxcXCIsXFxuZnMvbnRmcy9jb21wcmVzcy5jLTc5MS1cXHRcXHRcXHRcXHRuaS1cXHUwMDNlbWZ0X25vLCAtZXJyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDc6NTA6MzguNzEwNDM1NDc4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1NjM4NzY2NzkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBOVEZTIENvbXByZXNzaW9uIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSB0cmFjZWQgdGhlIGNhbGwgcGF0aCDigJMgaXQgbG9va3MgbGlrZSBgbnRmc19kZWNvbXByZXNzYCBnZXRzIGludm9rZWQgZGlyZWN0bHkgZnJvbSBgbnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2tgLiBUaGF0IG1ha2VzIHRoZSB0d28gY3JpdGljYWwgZnVuY3Rpb25zIHRvIGZvY3VzIG9uLCBhcyBJIHN1c3BlY3RlZCwgYG50ZnNfcmVhZF9jb21wcmVzc2VkX2Jsb2NrYCBhbmQgYG50ZnNfZGVjb21wcmVzc2AuXG5cbk5vdywgdGhlIGNvbmZpZ3VyYXRpb24uLi4gSSBpbml0aWFsbHkgc2F3IGBOVEZTX0ZTYCwgYnV0IGl0J3MgYWx3YXlzIGdvb2QgdG8gZG91YmxlLWNoZWNrLiBSaWdodCwgYSBxdWljayBzY2FuIGNvbmZpcm1lZCB0aGF0IGBOVEZTX0ZTYCBpcyBpbmRlZWQgdGhlIG1haW4gY29uZmlnLiBBaCwgYnV0IHRoYXQncyB0aGUgKm9sZCogTlRGUyBkcml2ZXIhIFRoZXJlJ3MgYE5URlMzX0ZTYCBhcyB3ZWxsLiBIbW0sIHRoZSBwYXRjaCBpcyBjaGFuZ2luZyBgZnMvbnRmcy9jb21wcmVzcy5jYCwgc28gaXQncyBkaXJlY3RseSByZWxhdGVkIHRvIHRoZSBvcmlnaW5hbCBOVEZTIGRyaXZlciB1bmRlciBgTlRGU19GU2AuIFRoaXMgY29uZmlybXMgYE5URlNfRlNgIGlzIHRoZSBjb3JyZWN0IGNvbmZpZyB0byBjb25zaWRlci5cblxuTGV0IG1lIGp1c3QgY29uZmlybSB0aGF0IGBOVEZTX0ZTYCBpcyBzdWZmaWNpZW50LiBPa2F5LCBgQ09ORklHX05URlNfRlNgIGlzIGEgdHJpc3RhdGUsIGFuZCBsb29raW5nIGFyb3VuZCwgSSBkb24ndCBzZWUgYW55IG90aGVyIGVzc2VudGlhbCBjb25maWdzIGhlcmUuIFNvIHdlJ3JlIGdvb2QgdG8gZ28uXG5cbkhlcmUncyBteSBkaXN0aWxsZWQgc3VtbWFyeTpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIFRydWUgLSBUaGlzIHBhdGNoIGZ1bmRhbWVudGFsbHkgYWx0ZXJzIGhvdyBjb21wcmVzc2VkIGRhdGEgaXMgcmVhZC5cbiogICAqKkZvY3VzU3ltYm9sczoqKiBgW1wibnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2tcIiwgXCJudGZzX2RlY29tcHJlc3NcIl1gIC0gVGhlc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zLlxuKiAgICoqRW5hYmxlQ29uZmlnczoqKiBgW1wiTlRGU19GU1wiXWAgLSBUaGUgcmlnaHQgY29uZmlnIGZvciB0aGUgb3JpZ2luYWwgTlRGUyBkcml2ZXIuXG4qICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYXQgdGhlIGNvcmUgcmVhZCBsZXZlbCBmb3IgY29tcHJlc3NlZCBmaWxlcywgcmVwbGFjaW5nIGRpcmVjdCBhY2Nlc3MgdG8gcGFnZS1cdTAwM2VfX2ZvbGlvX2luZGV4IHdpdGggZm9saW8gQVBJcyBhbmQgemVyb191c2VyX3NlZ21lbnQuIFRoaXMgaXMgYSBjcnVjaWFsIGNoYW5nZSB0byBob3cgdGhlIGZpbGUgc3lzdGVtIGhhbmRsZXMgY29tcHJlc3NlZCBkYXRhLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTgyLCJPdXRwdXRUb2tlbnMiOjEwMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwNzo1MDo1NC4zNDkyMDQ4NzFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODE2NzkwMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5URlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudGZzX3JlYWRfY29tcHJlc3NlZF9ibG9ja1wiLFxuICAgIFwibnRmc19kZWNvbXByZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGhhbmRsaW5nIG9mIGNvbXByZXNzZWQgcGFnZXMgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSwgcmVwbGFjaW5nIGRpcmVjdCBhY2Nlc3MgdG8gcGFnZS1cXHUwMDNlX19mb2xpb19pbmRleCB3aXRoIHByb3BlciBmb2xpbyBBUElzIGFuZCB6ZXJvX3VzZXJfc2VnbWVudC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIHJlYWQgcGF0aCBmb3IgY29tcHJlc3NlZCBmaWxlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOVEZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnRmc19yZWFkX2NvbXByZXNzZWRfYmxvY2tcIixcbiAgICBcIm50ZnNfZGVjb21wcmVzc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBoYW5kbGluZyBvZiBjb21wcmVzc2VkIHBhZ2VzIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0sIHJlcGxhY2luZyBkaXJlY3QgYWNjZXNzIHRvIHBhZ2UtXFx1MDAzZV9fZm9saW9faW5kZXggd2l0aCBwcm9wZXIgZm9saW8gQVBJcyBhbmQgemVyb191c2VyX3NlZ21lbnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSByZWFkIHBhdGggZm9yIGNvbXByZXNzZWQgZmlsZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4qrvw[1] Phase: Succeeded StartedAt: 2026-07-15 07:51:06 +0000 UTC FinishedAt: 2026-07-15 07:51:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qrvw[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-15 07:51:06 +0000 UTC FinishedAt: 2026-07-15 07:51:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qrvw[2] Phase: Succeeded StartedAt: 2026-07-15 07:51:06 +0000 UTC FinishedAt: 2026-07-15 12:28:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-15 07:51:06 +0000 UTC FinishedAt: 2026-07-15 12:28:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-15 07:51:06 +0000 UTC FinishedAt: 2026-07-15 07:51:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-15 07:51:06 +0000 UTC FinishedAt: 2026-07-15 07:51:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4qrvw/series-workflow4qrvw-convert-artifact-520353927/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-15 07:51:16 +0000 UTC FinishedAt: 2026-07-15 08:48:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-15 07:51:16 +0000 UTC FinishedAt: 2026-07-15 08:48:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*bb6a656e-6125-4788-90cc-92b006aa63f3,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-workflow4qrvw/series-workflow4qrvw-convert-artifact-520353927/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": "1e6b82fc-e8ab-43e3-a828-603ebf357abf", "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-workflow4qrvw/series-workflow4qrvw-build-action-3874834205/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-15 07:51:16 +0000 UTC FinishedAt: 2026-07-15 08:48:41 +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:*bb6a656e-6125-4788-90cc-92b006aa63f3,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-workflow4qrvw/series-workflow4qrvw-convert-artifact-520353927/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": "1e6b82fc-e8ab-43e3-a828-603ebf357abf", "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-workflow4qrvw/series-workflow4qrvw-build-action-3874834205/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-15 08:48:51 +0000 UTC FinishedAt: 2026-07-15 08:48:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-15 08:48:51 +0000 UTC FinishedAt: 2026-07-15 08:48:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-15 08:48:51 +0000 UTC FinishedAt: 2026-07-15 08:49:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-15 08:48:51 +0000 UTC FinishedAt: 2026-07-15 08:48:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4qrvw/series-workflow4qrvw-convert-artifact-3927188406/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-15 08:49:01 +0000 UTC FinishedAt: 2026-07-15 08:51:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-15 08:49:01 +0000 UTC FinishedAt: 2026-07-15 08:50:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1e6b82fc-e8ab-43e3-a828-603ebf357abf,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-workflow4qrvw/series-workflow4qrvw-build-action-3874834205/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-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-15 08:51:07 +0000 UTC FinishedAt: 2026-07-15 08:51:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-15 08:51:07 +0000 UTC FinishedAt: 2026-07-15 08:51:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-15 08:51:07 +0000 UTC FinishedAt: 2026-07-15 09:23:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-15 08:51:07 +0000 UTC FinishedAt: 2026-07-15 09:23:50 +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:*bb6a656e-6125-4788-90cc-92b006aa63f3,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-workflow4qrvw/series-workflow4qrvw-convert-artifact-3927188406/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": "a3973ee9-a6a6-4015-b0e7-b6f35df39a90", "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-workflow4qrvw/series-workflow4qrvw-build-action-1275881658/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-15 08:51:07 +0000 UTC FinishedAt: 2026-07-15 09:23:38 +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:*bb6a656e-6125-4788-90cc-92b006aa63f3,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-workflow4qrvw/series-workflow4qrvw-convert-artifact-3927188406/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": "a3973ee9-a6a6-4015-b0e7-b6f35df39a90", "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-workflow4qrvw/series-workflow4qrvw-build-action-1275881658/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-15 09:23:50 +0000 UTC FinishedAt: 2026-07-15 09:23:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-15 09:23:50 +0000 UTC FinishedAt: 2026-07-15 09:23:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-15 09:23:50 +0000 UTC FinishedAt: 2026-07-15 09:25:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-15 09:23:50 +0000 UTC FinishedAt: 2026-07-15 09:25:37 +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:*a3973ee9-a6a6-4015-b0e7-b6f35df39a90,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-workflow4qrvw/series-workflow4qrvw-build-action-1275881658/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-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-15 09:25:50 +0000 UTC FinishedAt: 2026-07-15 12:28:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-15 09:25:50 +0000 UTC FinishedAt: 2026-07-15 12:28:09 +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":["ntfs_read_compressed_block","ntfs_decompress"],"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:*1e6b82fc-e8ab-43e3-a828-603ebf357abf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a3973ee9-a6a6-4015-b0e7-b6f35df39a90,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-workflow4qrvw/series-workflow4qrvw-build-action-3874834205/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-workflow4qrvw/series-workflow4qrvw-build-action-1275881658/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-15 09:25:50 +0000 UTC FinishedAt: 2026-07-15 09:26:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-15 09:25:50 +0000 UTC FinishedAt: 2026-07-15 09:25:55 +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":["ntfs_read_compressed_block","ntfs_decompress"],"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-workflow4qrvw/series-workflow4qrvw-convert-artifact-4178049755/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-15 09:25:50 +0000 UTC FinishedAt: 2026-07-15 09:25:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-15 09:25:50 +0000 UTC FinishedAt: 2026-07-15 09:25:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-15 09:25:50 +0000 UTC FinishedAt: 2026-07-15 09:25:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-15 09:26:03 +0000 UTC FinishedAt: 2026-07-15 12:28:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4qrvw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_read_compressed_block","ntfs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0ebe8f625ab0520217a425d7cd366e4670484941","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"0c82aa37-e643-44f9-a21a-d56a3347a31e","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-15 09:26:03 +0000 UTC FinishedAt: 2026-07-15 12:27:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1e6b82fc-e8ab-43e3-a828-603ebf357abf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a3973ee9-a6a6-4015-b0e7-b6f35df39a90,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-workflow4qrvw/series-workflow4qrvw-build-action-3874834205/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-workflow4qrvw/series-workflow4qrvw-build-action-1275881658/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-workflow4qrvw/series-workflow4qrvw-convert-artifact-4178049755/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,}