Name: series-workflowbptzv Phase: Succeeded StartedAt: 2026-06-22 04:43:56 +0000 UTC FinishedAt: 2026-06-22 08:46:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbptzv[0] Phase: Succeeded StartedAt: 2026-06-22 04:43:56 +0000 UTC FinishedAt: 2026-06-22 04:56:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbptzv[0].run-triage Phase: Succeeded StartedAt: 2026-06-22 04:43:56 +0000 UTC FinishedAt: 2026-06-22 04:56:56 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "322008f87f917e2217eeac386a9410945092eb2e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BINFMT_ELF", "BINFMT_ELF_FDPIC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "322008f87f917e2217eeac386a9410945092eb2e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BINFMT_ELF", "BINFMT_ELF_FDPIC" ], "series_id": "02980951-8bbe-4e2d-9794-de8e6bd25817" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "resolve_elf_interpreter" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA0OjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JJTkZNVF9FTEYmIzM0OywKICAgICYjMzQ7QklORk1UX0VMRl9GRFBJQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Jlc29sdmVfZWxmX2ludGVycHJldGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgcmVzb2x2aW5nICYjMzk7JE9SSUdJTiYjMzk7IGluIHRoZSBFTEYgaW50ZXJwcmV0ZXIgcGF0aCBkdXJpbmcgZXhlY3ZlLiBUaGlzIG1vZGlmaWVzIHRoZSBjb3JlIEVMRiBiaW5hcnkgbG9hZGluZyBsb2dpYyBhbmQgaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXJgLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBwYXRoIHJlc29sdXRpb24gYW5kIG1lbW9yeSBtYW5hZ2VtZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA0OjU2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMjIyZjRlOTUyNGE5NjVkZWQ1NWYwMzZkNmY2MThlNzUyN2QzZjVkYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDIyIDA0OjU2OjA4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9lbGYuYyBiL2ZzL2JpbmZtdF9lbGYuY1xuaW5kZXggMTZhNTZiNmIzZjZjYTEuLmFmMTFmOTZhZTMzNzFkIDEwMDY0NFxuLS0tIGEvZnMvYmluZm10X2VsZi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9iaW5mbXRfZWxmLmNcbkBAIC04NzIsNyAmIzQzOzg3Miw3IEBAIHN0YXRpYyBpbnQgbG9hZF9lbGZfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4gXG4gXHRlbGZfcHBudCA9IGVsZl9waGRhdGE7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBlbGZfZXgtXHUwMDNlZV9waG51bTsgaSYjNDM7JiM0MzssIGVsZl9wcG50JiM0MzsmIzQzOykge1xuLVx0XHRjaGFyICplbGZfaW50ZXJwcmV0ZXI7XG4mIzQzO1x0XHRjaGFyICplbGZfaW50ZXJwcmV0ZXIsICpyZXNvbHZlZF9pbnRlcnA7XG4gXG4gXHRcdGlmIChlbGZfcHBudC1cdTAwM2VwX3R5cGUgPT0gUFRfR05VX1BST1BFUlRZKSB7XG4gXHRcdFx0ZWxmX3Byb3BlcnR5X3BoZGF0YSA9IGVsZl9wcG50O1xuQEAgLTkwNCw4ICYjNDM7OTA0LDE1IEBAIHN0YXRpYyBpbnQgbG9hZF9lbGZfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4gXHRcdGlmIChlbGZfaW50ZXJwcmV0ZXJbZWxmX3BwbnQtXHUwMDNlcF9maWxlc3ogLSAxXSAhPSAmIzM5O1xcMCYjMzk7KVxuIFx0XHRcdGdvdG8gb3V0X2ZyZWVfaW50ZXJwO1xuIFxuLVx0XHRpbnRlcnByZXRlciA9IG9wZW5fZXhlYyhlbGZfaW50ZXJwcmV0ZXIpO1xuJiM0MztcdFx0cmVzb2x2ZWRfaW50ZXJwID0gcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIoYnBybSwgZWxmX2ludGVycHJldGVyKTtcbiBcdFx0a2ZyZWUoZWxmX2ludGVycHJldGVyKTtcbiYjNDM7XHRcdGlmIChJU19FUlIocmVzb2x2ZWRfaW50ZXJwKSkge1xuJiM0MztcdFx0XHRyZXR2YWwgPSBQVFJfRVJSKHJlc29sdmVkX2ludGVycCk7XG4mIzQzO1x0XHRcdGdvdG8gb3V0X2ZyZWVfcGg7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0aW50ZXJwcmV0ZXIgPSBvcGVuX2V4ZWMocmVzb2x2ZWRfaW50ZXJwKTtcbiYjNDM7XHRcdGtmcmVlKHJlc29sdmVkX2ludGVycCk7XG4gXHRcdHJldHZhbCA9IFBUUl9FUlIoaW50ZXJwcmV0ZXIpO1xuIFx0XHRpZiAoSVNfRVJSKGludGVycHJldGVyKSlcbiBcdFx0XHRnb3RvIG91dF9mcmVlX3BoO1xuZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9lbGZfZmRwaWMuYyBiL2ZzL2JpbmZtdF9lbGZfZmRwaWMuY1xuaW5kZXggN2UzMTA4NDg5YzgzY2EuLmU4NTcyN2Q3MTJlMzgxIDEwMDY0NFxuLS0tIGEvZnMvYmluZm10X2VsZl9mZHBpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9iaW5mbXRfZWxmX2ZkcGljLmNcbkBAIC0yMzAsNyAmIzQzOzIzMCw5IEBAIHN0YXRpYyBpbnQgbG9hZF9lbGZfZmRwaWNfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBleGVjX3BhcmFtcy5oZHIuZV9waG51bTsgaSYjNDM7JiM0MzssIHBoZHImIzQzOyYjNDM7KSB7XG4gXHRcdHN3aXRjaCAocGhkci1cdTAwM2VwX3R5cGUpIHtcbi1cdFx0Y2FzZSBQVF9JTlRFUlA6XG4mIzQzO1x0XHRjYXNlIFBUX0lOVEVSUDoge1xuJiM0MztcdFx0XHRjaGFyICpyZXNvbHZlZF9pbnRlcnA7XG4mIzQzO1xuIFx0XHRcdHJldHZhbCA9IC1FTk9NRU07XG4gXHRcdFx0aWYgKHBoZHItXHUwMDNlcF9maWxlc3ogXHUwMDNlIFBBVEhfTUFYKVxuIFx0XHRcdFx0Z290byBlcnJvcjtcbkBAIC0yNTksNyAmIzQzOzI2MSwxNSBAQCBzdGF0aWMgaW50IGxvYWRfZWxmX2ZkcGljX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuIFx0XHRcdGtkZWJ1ZyhcJiMzNDtVc2luZyBFTEYgaW50ZXJwcmV0ZXIgJXNcJiMzNDssIGludGVycHJldGVyX25hbWUpO1xuIFxuIFx0XHRcdC8qIHJlcGxhY2UgdGhlIHByb2dyYW0gd2l0aCB0aGUgaW50ZXJwcmV0ZXIgKi9cbi1cdFx0XHRpbnRlcnByZXRlciA9IG9wZW5fZXhlYyhpbnRlcnByZXRlcl9uYW1lKTtcbiYjNDM7XHRcdFx0cmVzb2x2ZWRfaW50ZXJwID0gcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIoYnBybSwgaW50ZXJwcmV0ZXJfbmFtZSk7XG4mIzQzO1x0XHRcdGtmcmVlKGludGVycHJldGVyX25hbWUpO1xuJiM0MztcdFx0XHRpZiAoSVNfRVJSKHJlc29sdmVkX2ludGVycCkpIHtcbiYjNDM7XHRcdFx0XHRyZXR2YWwgPSBQVFJfRVJSKHJlc29sdmVkX2ludGVycCk7XG4mIzQzO1x0XHRcdFx0Z290byBlcnJvcjtcbiYjNDM7XHRcdFx0fVxuJiM0MztcbiYjNDM7XHRcdFx0aW50ZXJwcmV0ZXIgPSBvcGVuX2V4ZWMocmVzb2x2ZWRfaW50ZXJwKTtcbiYjNDM7XHRcdFx0a2ZyZWUocmVzb2x2ZWRfaW50ZXJwKTtcbiBcdFx0XHRyZXR2YWwgPSBQVFJfRVJSKGludGVycHJldGVyKTtcbiBcdFx0XHRpZiAoSVNfRVJSKGludGVycHJldGVyKSkge1xuIFx0XHRcdFx0aW50ZXJwcmV0ZXIgPSBOVUxMO1xuQEAgLTI4NCw2ICYjNDM7Mjk0LDcgQEAgc3RhdGljIGludCBsb2FkX2VsZl9mZHBpY19iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbiBcbiBcdFx0XHRpbnRlcnBfcGFyYW1zLmhkciA9ICooKHN0cnVjdCBlbGZoZHIgKikgYnBybS1cdTAwM2VidWYpO1xuIFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuIFxuIFx0XHRjYXNlIFBUX0xPQUQ6XG4gI2lmZGVmIENPTkZJR19NTVVcbmRpZmYgLS1naXQgYS9mcy9leGVjLmMgYi9mcy9leGVjLmNcbmluZGV4IGI5MmZlN2RiMTc2Y2ZmLi4wOTc4YWU2MTMwNGE5NCAxMDA2NDRcbi0tLSBhL2ZzL2V4ZWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXhlYy5jXG5AQCAtMjAyNCw2ICYjNDM7MjAyNCw0OCBAQCBzdGF0aWMgaW50IF9faW5pdCBpbml0X2ZzX2V4ZWNfc3lzY3Rscyh2b2lkKVxuIGZzX2luaXRjYWxsKGluaXRfZnNfZXhlY19zeXNjdGxzKTtcbiAjZW5kaWYgLyogQ09ORklHX1NZU0NUTCAqL1xuIFxuJiM0MztjaGFyICpyZXNvbHZlX2VsZl9pbnRlcnByZXRlcihzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLCBjb25zdCBjaGFyICplbGZfaW50ZXJwcmV0ZXIpXG4mIzQzO3tcbiYjNDM7XHRjaGFyICpwYXRoYnVmLCAqcGF0aCwgKnNsYXNoLCAqcmVzb2x2ZWQ7XG4mIzQzO1xuJiM0MztcdGlmIChzdHJuY21wKGVsZl9pbnRlcnByZXRlciwgXCYjMzQ7JE9SSUdJTlwmIzM0OywgNykgIT0gMCkge1xuJiM0MztcdFx0Y2hhciAqcmV0ID0ga3N0cmR1cChlbGZfaW50ZXJwcmV0ZXIsIEdGUF9LRVJORUwpO1xuJiM0MztcbiYjNDM7XHRcdHJldHVybiByZXQgPyByZXQgOiBFUlJfUFRSKC1FTk9NRU0pO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cGF0aGJ1ZiA9IGttYWxsb2MoUEFUSF9NQVgsIEdGUF9LRVJORUwpO1xuJiM0MztcdGlmICghcGF0aGJ1ZilcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuJiM0MztcbiYjNDM7XHRwYXRoID0gZmlsZV9wYXRoKGJwcm0tXHUwMDNlZmlsZSwgcGF0aGJ1ZiwgUEFUSF9NQVgpO1xuJiM0MztcdGlmIChJU19FUlIocGF0aCkpIHtcbiYjNDM7XHRcdGtmcmVlKHBhdGhidWYpO1xuJiM0MztcdFx0cmV0dXJuIChjaGFyICopcGF0aDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHNsYXNoID0gc3RycmNocihwYXRoLCAmIzM5Oy8mIzM5Oyk7XG4mIzQzO1x0aWYgKHNsYXNoKSB7XG4mIzQzO1x0XHRpZiAoc2xhc2ggPT0gcGF0aClcbiYjNDM7XHRcdFx0KihzbGFzaCAmIzQzOyAxKSA9ICYjMzk7XFwwJiMzOTs7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdCpzbGFzaCA9ICYjMzk7XFwwJiMzOTs7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdGtmcmVlKHBhdGhidWYpO1xuJiM0MztcdFx0Y2hhciAqcmV0ID0ga3N0cmR1cChlbGZfaW50ZXJwcmV0ZXIsIEdGUF9LRVJORUwpO1xuJiM0MztcbiYjNDM7XHRcdHJldHVybiByZXQgPyByZXQgOiBFUlJfUFRSKC1FTk9NRU0pO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmVzb2x2ZWQgPSBrYXNwcmludGYoR0ZQX0tFUk5FTCwgXCYjMzQ7JXMlc1wmIzM0OywgcGF0aCwgZWxmX2ludGVycHJldGVyICYjNDM7IDcpO1xuJiM0MztcdGtmcmVlKHBhdGhidWYpO1xuJiM0MztcdGlmICghcmVzb2x2ZWQpXG4mIzQzO1x0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJlc29sdmVkO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0wocmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIpO1xuJiM0MztcbiAjaWZkZWYgQ09ORklHX0VYRUNfS1VOSVRfVEVTVFxuICNpbmNsdWRlIFwmIzM0O3Rlc3RzL2V4ZWNfa3VuaXQuY1wmIzM0O1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL2ZzL3Rlc3RzL2V4ZWNfa3VuaXQuYyBiL2ZzL3Rlc3RzL2V4ZWNfa3VuaXQuY1xuaW5kZXggMWMzMmNhYzA5OGNmNTEuLjk5MWI5YWJhZDNlZWRmIDEwMDY0NFxuLS0tIGEvZnMvdGVzdHMvZXhlY19rdW5pdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy90ZXN0cy9leGVjX2t1bml0LmNcbkBAIC0xMTksOCAmIzQzOzExOSwzNCBAQCBzdGF0aWMgdm9pZCBleGVjX3Rlc3RfYnBybV9zdGFja19saW1pdHMoc3RydWN0IGt1bml0ICp0ZXN0KVxuIFx0fVxuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgZXhlY190ZXN0X3Jlc29sdmVfZWxmX2ludGVycHJldGVyKHN0cnVjdCBrdW5pdCAqdGVzdClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBsaW51eF9iaW5wcm0gYnBybSA9IHsgLmZpbGUgPSBOVUxMIH07XG4mIzQzO1x0c3RydWN0IGZpbGUgKmY7XG4mIzQzO1x0Y2hhciAqcmVzb2x2ZWQ7XG4mIzQzO1xuJiM0MztcdC8vIFRlc3QgMTogTm9uLSRPUklHSU4gaW50ZXJwcmV0ZXIgcGF0aCBzaG91bGQganVzdCBiZSBkdXBsaWNhdGVkXG4mIzQzO1x0cmVzb2x2ZWQgPSByZXNvbHZlX2VsZl9pbnRlcnByZXRlcihcdTAwMjZicHJtLCBcJiMzNDsvbGliNjQvbGQtbGludXgteDg2LTY0LnNvLjJcJiMzNDspO1xuJiM0MztcdEtVTklUX0FTU0VSVF9OT1RfRVJSX09SX05VTEwodGVzdCwgcmVzb2x2ZWQpO1xuJiM0MztcdEtVTklUX0VYUEVDVF9TVFJFUSh0ZXN0LCByZXNvbHZlZCwgXCYjMzQ7L2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yXCYjMzQ7KTtcbiYjNDM7XHRrZnJlZShyZXNvbHZlZCk7XG4mIzQzO1xuJiM0MztcdC8vIFRlc3QgMjogJE9SSUdJTiBpbnRlcnByZXRlciBwYXRoXG4mIzQzO1x0ZiA9IGZpbHBfb3BlbihcJiMzNDsvXCYjMzQ7LCBPX1JET05MWSwgMCk7XG4mIzQzO1x0S1VOSVRfQVNTRVJUX05PVF9FUlJfT1JfTlVMTCh0ZXN0LCBmKTtcbiYjNDM7XHRicHJtLmZpbGUgPSBmO1xuJiM0MztcbiYjNDM7XHRyZXNvbHZlZCA9IHJlc29sdmVfZWxmX2ludGVycHJldGVyKFx1MDAyNmJwcm0sIFwmIzM0OyRPUklHSU4vLi4vbGliL2xkLnNvXCYjMzQ7KTtcbiYjNDM7XHRLVU5JVF9BU1NFUlRfTk9UX0VSUl9PUl9OVUxMKHRlc3QsIHJlc29sdmVkKTtcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfU1RSRVEodGVzdCwgcmVzb2x2ZWQsIFwmIzM0Oy8vLi4vbGliL2xkLnNvXCYjMzQ7KTtcbiYjNDM7XHRrZnJlZShyZXNvbHZlZCk7XG4mIzQzO1xuJiM0MztcdGZpbHBfY2xvc2UoZiwgTlVMTCk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIGV4ZWNfdGVzdF9jYXNlc1tdID0ge1xuIFx0S1VOSVRfQ0FTRShleGVjX3Rlc3RfYnBybV9zdGFja19saW1pdHMpLFxuJiM0MztcdEtVTklUX0NBU0UoZXhlY190ZXN0X3Jlc29sdmVfZWxmX2ludGVycHJldGVyKSxcbiBcdHt9LFxuIH07XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9iaW5mbXRzLmggYi9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaFxuaW5kZXggMmM3N2UzODNlNzM3NTcuLjE3NDE5Y2QzZGJjNzMzIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9iaW5mbXRzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYmluZm10cy5oXG5AQCAtMTUwLDQgJiM0MzsxNTAsNiBAQCBleHRlcm4gc3NpemVfdCByZWFkX2NvZGUoc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgbG9uZywgbG9mZl90LCBzaXplX3QpO1xuIGludCBrZXJuZWxfZXhlY3ZlKGNvbnN0IGNoYXIgKmZpbGVuYW1lLFxuIFx0XHQgIGNvbnN0IGNoYXIgKmNvbnN0ICphcmd2LCBjb25zdCBjaGFyICpjb25zdCAqZW52cCk7XG4gXG4mIzQzO2NoYXIgKnJlc29sdmVfZWxmX2ludGVycHJldGVyKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0sIGNvbnN0IGNoYXIgKmVsZl9pbnRlcnByZXRlcik7XG4mIzQzO1xuICNlbmRpZiAvKiBfTElOVVhfQklORk1UU19IICovXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvTWFrZWZpbGVcbmluZGV4IDQ1YTNjZmM0MzVjZmQ3Li41ZTJlMzA1Y2IwYmI2OCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvTWFrZWZpbGVcbkBAIC0xMCw5ICYjNDM7MTAsOSBAQCBBTElHTl9QSUVTICAgICAgICA6PSAkKHBhdHN1YnN0ICUsbG9hZF9hZGRyZXNzLiUsJChBTElHTlMpKVxuIEFMSUdOX1NUQVRJQ19QSUVTIDo9ICQocGF0c3Vic3QgJSxsb2FkX2FkZHJlc3Muc3RhdGljLiUsJChBTElHTlMpKVxuIEFMSUdOTUVOVF9URVNUUyAgIDo9ICQoQUxJR05fUElFUykgJChBTElHTl9TVEFUSUNfUElFUylcbiBcbi1URVNUX1BST0dTIDo9IGJpbmZtdF9zY3JpcHQucHkgY2hlY2stZXhlYy10ZXN0cy5zaFxuLVRFU1RfR0VOX1BST0dTIDo9IGV4ZWN2ZWF0IG5vbi1yZWd1bGFyICQoQUxJR05NRU5UX1RFU1RTKVxuLVRFU1RfR0VOX1BST0dTX0VYVEVOREVEIDo9IGZhbHNlIGluYyBzZXQtZXhlYyBzY3JpcHQtZXhlYy5pbmMgc2NyaXB0LW5vZXhlYy5pbmNcbiYjNDM7VEVTVF9QUk9HUyA6PSBiaW5mbXRfc2NyaXB0LnB5IGNoZWNrLWV4ZWMtdGVzdHMuc2ggb3JpZ2luX2ludGVycC5zaFxuJiM0MztURVNUX0dFTl9QUk9HUyA6PSBleGVjdmVhdCBub24tcmVndWxhciAkKEFMSUdOTUVOVF9URVNUUykgdGVzdF9wcm9nXG4mIzQzO1RFU1RfR0VOX1BST0dTX0VYVEVOREVEIDo9IGZhbHNlIGluYyBzZXQtZXhlYyBzY3JpcHQtZXhlYy5pbmMgc2NyaXB0LW5vZXhlYy5pbmMgbW9ja19pbnRlcnBcbiBURVNUX0dFTl9GSUxFUyA6PSBleGVjdmVhdC5zeW1saW5rIGV4ZWN2ZWF0LmRlbmF0dXJlZCBzY3JpcHQgc3ViZGlyXG4gIyBNYWtlZmlsZSBpcyBhIHJ1bi10aW1lIGRlcGVuZGVuY3ksIHNpbmNlIGl0JiMzOTtzIGFjY2Vzc2VkIGJ5IHRoZSBleGVjdmVhdCB0ZXN0XG4gVEVTVF9GSUxFUyA6PSBNYWtlZmlsZVxuQEAgLTU1LDMgJiM0Mzs1NSw5IEBAICQoT1VUUFVUKS9zY3JpcHQtZXhlYy5pbmM6ICQoQ0hFQ0tfRVhFQ19TQU1QTEVTKS9zY3JpcHQtZXhlYy5pbmNcbiBcdGNwICRcdTAwM2MgJEBcbiAkKE9VVFBVVCkvc2NyaXB0LW5vZXhlYy5pbmM6ICQoQ0hFQ0tfRVhFQ19TQU1QTEVTKS9zY3JpcHQtbm9leGVjLmluY1xuIFx0Y3AgJFx1MDAzYyAkQFxuJiM0MztcbiYjNDM7JChPVVRQVVQpL21vY2tfaW50ZXJwOiBtb2NrX2ludGVycC5jXG4mIzQzO1x0JChDQykgJChDRkxBR1MpICQoTERGTEFHUykgLXN0YXRpYyAtbm9zdGRsaWIgLWluY2x1ZGUgLi4vLi4vLi4vaW5jbHVkZS9ub2xpYmMvbm9saWJjLmggJFx1MDAzYyAtbyAkQFxuJiM0MztcbiYjNDM7JChPVVRQVVQpL3Rlc3RfcHJvZzogdGVzdF9wcm9nLmMgJChPVVRQVVQpL21vY2tfaW50ZXJwXG4mIzQzO1x0JChDQykgJChDRkxBR1MpICQoTERGTEFHUykgLVdsLC1keW5hbWljLWxpbmtlciwmIzM5OyQkT1JJR0lOL21vY2tfaW50ZXJwJiMzOTsgJFx1MDAzYyAtbyAkQFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvbW9ja19pbnRlcnAuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvbW9ja19pbnRlcnAuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi45YzljYTEwOTgxY2NmZlxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9tb2NrX2ludGVycC5jXG5AQCAtMCwwICYjNDM7MSw2IEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzO2ludCBtYWluKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHR3cml0ZSgxLCBcJiMzNDtIZWxsbyBmcm9tIG1vY2sgaW50ZXJwcmV0ZXIhXFxuXCYjMzQ7LCAyOSk7XG4mIzQzO1x0cmV0dXJuIDQyO1xuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9vcmlnaW5faW50ZXJwLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9vcmlnaW5faW50ZXJwLnNoXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjYzNWE0MDgzOTgwMjUxXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL29yaWdpbl9pbnRlcnAuc2hcbkBAIC0wLDAgJiM0MzsxLDE2IEBAXG4mIzQzOyMhL2Jpbi9zaFxuJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzO1xuJiM0MzsjIEV4ZWN1dGUgdGhlIHRlc3QgcHJvZ3JhbSB3aGljaCBoYXMgaXRzIGludGVycHJldGVyIHNldCB0byAkT1JJR0lOL21vY2tfaW50ZXJwXG4mIzQzOyMgTm90ZSB0aGF0IG1vY2tfaW50ZXJwIG11c3QgYmUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuJiM0MztkaXI9JChkaXJuYW1lIFwmIzM0OyQwXCYjMzQ7KVxuJiM0MztvdXQ9JChcJiMzNDskZGlyXCYjMzQ7L3Rlc3RfcHJvZyAyXHUwMDNlXHUwMDI2MSlcbiYjNDM7ZXhpdF9jb2RlPSQ/XG4mIzQzO1xuJiM0MztpZiBbICRleGl0X2NvZGUgLWVxIDQyIF0gXHUwMDI2XHUwMDI2IFsgXCYjMzQ7JG91dFwmIzM0OyA9IFwmIzM0O0hlbGxvIGZyb20gbW9jayBpbnRlcnByZXRlciFcJiMzNDsgXTsgdGhlblxuJiM0MztcdGVjaG8gXCYjMzQ7b3JpZ2luX2ludGVycDogUEFTU1wmIzM0O1xuJiM0MztcdGV4aXQgMFxuJiM0MztlbHNlXG4mIzQzO1x0ZWNobyBcJiMzNDtvcmlnaW5faW50ZXJwOiBGQUlMIChleGl0X2NvZGU9JGV4aXRfY29kZSwgb3V0cHV0PSYjMzk7JG91dCYjMzk7KVwmIzM0O1xuJiM0MztcdGV4aXQgMVxuJiM0MztmaVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvdGVzdF9wcm9nLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL3Rlc3RfcHJvZy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjQ1MTYxNGRlZjNkYjFjXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL3Rlc3RfcHJvZy5jXG5AQCAtMCwwICYjNDM7MSw1IEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzO2ludCBtYWluKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gMDsgLyogU2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQgaWYgaW50ZXJwcmV0ZXIgaXMgbG9hZGVkIGluc3RlYWQgKi9cbiYjNDM7fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA0OjU2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JJTkZNVF9FTEYmIzM0OywKICAgICYjMzQ7QklORk1UX0VMRl9GRFBJQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Jlc29sdmVfZWxmX2ludGVycHJldGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgcmVzb2x2aW5nICYjMzk7JE9SSUdJTiYjMzk7IGluIHRoZSBFTEYgaW50ZXJwcmV0ZXIgcGF0aCBkdXJpbmcgZXhlY3ZlLiBUaGlzIG1vZGlmaWVzIHRoZSBjb3JlIEVMRiBiaW5hcnkgbG9hZGluZyBsb2dpYyBhbmQgaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXJgLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBwYXRoIHJlc29sdXRpb24gYW5kIG1lbW9yeSBtYW5hZ2VtZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyMjJmNGU5NTI0YTk2NWRlZDU1ZjAzNmQ2ZjYxOGU3NTI3ZDNmNWRiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdW4gMjIgMDQ6NTY6MDggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9iaW5mbXRfZWxmLmMgYi9mcy9iaW5mbXRfZWxmLmMKaW5kZXggMTZhNTZiNmIzZjZjYTEuLmFmMTFmOTZhZTMzNzFkIDEwMDY0NAotLS0gYS9mcy9iaW5mbXRfZWxmLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvYmluZm10X2VsZi5jCkBAIC04NzIsNyAmIzQzOzg3Miw3IEBAIHN0YXRpYyBpbnQgbG9hZF9lbGZfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pCiAKIAllbGZfcHBudCA9IGVsZl9waGRhdGE7CiAJZm9yIChpID0gMDsgaSAmbHQ7IGVsZl9leC0mZ3Q7ZV9waG51bTsgaSYjNDM7JiM0MzssIGVsZl9wcG50JiM0MzsmIzQzOykgewotCQljaGFyICplbGZfaW50ZXJwcmV0ZXI7CiYjNDM7CQljaGFyICplbGZfaW50ZXJwcmV0ZXIsICpyZXNvbHZlZF9pbnRlcnA7CiAKIAkJaWYgKGVsZl9wcG50LSZndDtwX3R5cGUgPT0gUFRfR05VX1BST1BFUlRZKSB7CiAJCQllbGZfcHJvcGVydHlfcGhkYXRhID0gZWxmX3BwbnQ7CkBAIC05MDQsOCAmIzQzOzkwNCwxNSBAQCBzdGF0aWMgaW50IGxvYWRfZWxmX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKQogCQlpZiAoZWxmX2ludGVycHJldGVyW2VsZl9wcG50LSZndDtwX2ZpbGVzeiAtIDFdICE9ICYjMzk7XDAmIzM5OykKIAkJCWdvdG8gb3V0X2ZyZWVfaW50ZXJwOwogCi0JCWludGVycHJldGVyID0gb3Blbl9leGVjKGVsZl9pbnRlcnByZXRlcik7CiYjNDM7CQlyZXNvbHZlZF9pbnRlcnAgPSByZXNvbHZlX2VsZl9pbnRlcnByZXRlcihicHJtLCBlbGZfaW50ZXJwcmV0ZXIpOwogCQlrZnJlZShlbGZfaW50ZXJwcmV0ZXIpOwomIzQzOwkJaWYgKElTX0VSUihyZXNvbHZlZF9pbnRlcnApKSB7CiYjNDM7CQkJcmV0dmFsID0gUFRSX0VSUihyZXNvbHZlZF9pbnRlcnApOwomIzQzOwkJCWdvdG8gb3V0X2ZyZWVfcGg7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlpbnRlcnByZXRlciA9IG9wZW5fZXhlYyhyZXNvbHZlZF9pbnRlcnApOwomIzQzOwkJa2ZyZWUocmVzb2x2ZWRfaW50ZXJwKTsKIAkJcmV0dmFsID0gUFRSX0VSUihpbnRlcnByZXRlcik7CiAJCWlmIChJU19FUlIoaW50ZXJwcmV0ZXIpKQogCQkJZ290byBvdXRfZnJlZV9waDsKZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9lbGZfZmRwaWMuYyBiL2ZzL2JpbmZtdF9lbGZfZmRwaWMuYwppbmRleCA3ZTMxMDg0ODljODNjYS4uZTg1NzI3ZDcxMmUzODEgMTAwNjQ0Ci0tLSBhL2ZzL2JpbmZtdF9lbGZfZmRwaWMuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9iaW5mbXRfZWxmX2ZkcGljLmMKQEAgLTIzMCw3ICYjNDM7MjMwLDkgQEAgc3RhdGljIGludCBsb2FkX2VsZl9mZHBpY19iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSkKIAogCWZvciAoaSA9IDA7IGkgJmx0OyBleGVjX3BhcmFtcy5oZHIuZV9waG51bTsgaSYjNDM7JiM0MzssIHBoZHImIzQzOyYjNDM7KSB7CiAJCXN3aXRjaCAocGhkci0mZ3Q7cF90eXBlKSB7Ci0JCWNhc2UgUFRfSU5URVJQOgomIzQzOwkJY2FzZSBQVF9JTlRFUlA6IHsKJiM0MzsJCQljaGFyICpyZXNvbHZlZF9pbnRlcnA7CiYjNDM7CiAJCQlyZXR2YWwgPSAtRU5PTUVNOwogCQkJaWYgKHBoZHItJmd0O3BfZmlsZXN6ICZndDsgUEFUSF9NQVgpCiAJCQkJZ290byBlcnJvcjsKQEAgLTI1OSw3ICYjNDM7MjYxLDE1IEBAIHN0YXRpYyBpbnQgbG9hZF9lbGZfZmRwaWNfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pCiAJCQlrZGVidWcoJiMzNDtVc2luZyBFTEYgaW50ZXJwcmV0ZXIgJXMmIzM0OywgaW50ZXJwcmV0ZXJfbmFtZSk7CiAKIAkJCS8qIHJlcGxhY2UgdGhlIHByb2dyYW0gd2l0aCB0aGUgaW50ZXJwcmV0ZXIgKi8KLQkJCWludGVycHJldGVyID0gb3Blbl9leGVjKGludGVycHJldGVyX25hbWUpOwomIzQzOwkJCXJlc29sdmVkX2ludGVycCA9IHJlc29sdmVfZWxmX2ludGVycHJldGVyKGJwcm0sIGludGVycHJldGVyX25hbWUpOwomIzQzOwkJCWtmcmVlKGludGVycHJldGVyX25hbWUpOwomIzQzOwkJCWlmIChJU19FUlIocmVzb2x2ZWRfaW50ZXJwKSkgewomIzQzOwkJCQlyZXR2YWwgPSBQVFJfRVJSKHJlc29sdmVkX2ludGVycCk7CiYjNDM7CQkJCWdvdG8gZXJyb3I7CiYjNDM7CQkJfQomIzQzOwomIzQzOwkJCWludGVycHJldGVyID0gb3Blbl9leGVjKHJlc29sdmVkX2ludGVycCk7CiYjNDM7CQkJa2ZyZWUocmVzb2x2ZWRfaW50ZXJwKTsKIAkJCXJldHZhbCA9IFBUUl9FUlIoaW50ZXJwcmV0ZXIpOwogCQkJaWYgKElTX0VSUihpbnRlcnByZXRlcikpIHsKIAkJCQlpbnRlcnByZXRlciA9IE5VTEw7CkBAIC0yODQsNiAmIzQzOzI5NCw3IEBAIHN0YXRpYyBpbnQgbG9hZF9lbGZfZmRwaWNfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pCiAKIAkJCWludGVycF9wYXJhbXMuaGRyID0gKigoc3RydWN0IGVsZmhkciAqKSBicHJtLSZndDtidWYpOwogCQkJYnJlYWs7CiYjNDM7CQl9CiAKIAkJY2FzZSBQVF9MT0FEOgogI2lmZGVmIENPTkZJR19NTVUKZGlmZiAtLWdpdCBhL2ZzL2V4ZWMuYyBiL2ZzL2V4ZWMuYwppbmRleCBiOTJmZTdkYjE3NmNmZi4uMDk3OGFlNjEzMDRhOTQgMTAwNjQ0Ci0tLSBhL2ZzL2V4ZWMuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9leGVjLmMKQEAgLTIwMjQsNiAmIzQzOzIwMjQsNDggQEAgc3RhdGljIGludCBfX2luaXQgaW5pdF9mc19leGVjX3N5c2N0bHModm9pZCkKIGZzX2luaXRjYWxsKGluaXRfZnNfZXhlY19zeXNjdGxzKTsKICNlbmRpZiAvKiBDT05GSUdfU1lTQ1RMICovCiAKJiM0MztjaGFyICpyZXNvbHZlX2VsZl9pbnRlcnByZXRlcihzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLCBjb25zdCBjaGFyICplbGZfaW50ZXJwcmV0ZXIpCiYjNDM7ewomIzQzOwljaGFyICpwYXRoYnVmLCAqcGF0aCwgKnNsYXNoLCAqcmVzb2x2ZWQ7CiYjNDM7CiYjNDM7CWlmIChzdHJuY21wKGVsZl9pbnRlcnByZXRlciwgJiMzNDskT1JJR0lOJiMzNDssIDcpICE9IDApIHsKJiM0MzsJCWNoYXIgKnJldCA9IGtzdHJkdXAoZWxmX2ludGVycHJldGVyLCBHRlBfS0VSTkVMKTsKJiM0MzsKJiM0MzsJCXJldHVybiByZXQgPyByZXQgOiBFUlJfUFRSKC1FTk9NRU0pOwomIzQzOwl9CiYjNDM7CiYjNDM7CXBhdGhidWYgPSBrbWFsbG9jKFBBVEhfTUFYLCBHRlBfS0VSTkVMKTsKJiM0MzsJaWYgKCFwYXRoYnVmKQomIzQzOwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiYjNDM7CiYjNDM7CXBhdGggPSBmaWxlX3BhdGgoYnBybS0mZ3Q7ZmlsZSwgcGF0aGJ1ZiwgUEFUSF9NQVgpOwomIzQzOwlpZiAoSVNfRVJSKHBhdGgpKSB7CiYjNDM7CQlrZnJlZShwYXRoYnVmKTsKJiM0MzsJCXJldHVybiAoY2hhciAqKXBhdGg7CiYjNDM7CX0KJiM0MzsKJiM0MzsJc2xhc2ggPSBzdHJyY2hyKHBhdGgsICYjMzk7LyYjMzk7KTsKJiM0MzsJaWYgKHNsYXNoKSB7CiYjNDM7CQlpZiAoc2xhc2ggPT0gcGF0aCkKJiM0MzsJCQkqKHNsYXNoICYjNDM7IDEpID0gJiMzOTtcMCYjMzk7OwomIzQzOwkJZWxzZQomIzQzOwkJCSpzbGFzaCA9ICYjMzk7XDAmIzM5OzsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWtmcmVlKHBhdGhidWYpOwomIzQzOwkJY2hhciAqcmV0ID0ga3N0cmR1cChlbGZfaW50ZXJwcmV0ZXIsIEdGUF9LRVJORUwpOwomIzQzOwomIzQzOwkJcmV0dXJuIHJldCA/IHJldCA6IEVSUl9QVFIoLUVOT01FTSk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmVzb2x2ZWQgPSBrYXNwcmludGYoR0ZQX0tFUk5FTCwgJiMzNDslcyVzJiMzNDssIHBhdGgsIGVsZl9pbnRlcnByZXRlciAmIzQzOyA3KTsKJiM0MzsJa2ZyZWUocGF0aGJ1Zik7CiYjNDM7CWlmICghcmVzb2x2ZWQpCiYjNDM7CQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJlc29sdmVkOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MKHJlc29sdmVfZWxmX2ludGVycHJldGVyKTsKJiM0MzsKICNpZmRlZiBDT05GSUdfRVhFQ19LVU5JVF9URVNUCiAjaW5jbHVkZSAmIzM0O3Rlc3RzL2V4ZWNfa3VuaXQuYyYjMzQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2ZzL3Rlc3RzL2V4ZWNfa3VuaXQuYyBiL2ZzL3Rlc3RzL2V4ZWNfa3VuaXQuYwppbmRleCAxYzMyY2FjMDk4Y2Y1MS4uOTkxYjlhYmFkM2VlZGYgMTAwNjQ0Ci0tLSBhL2ZzL3Rlc3RzL2V4ZWNfa3VuaXQuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy90ZXN0cy9leGVjX2t1bml0LmMKQEAgLTExOSw4ICYjNDM7MTE5LDM0IEBAIHN0YXRpYyB2b2lkIGV4ZWNfdGVzdF9icHJtX3N0YWNrX2xpbWl0cyhzdHJ1Y3Qga3VuaXQgKnRlc3QpCiAJfQogfQogCiYjNDM7c3RhdGljIHZvaWQgZXhlY190ZXN0X3Jlc29sdmVfZWxmX2ludGVycHJldGVyKHN0cnVjdCBrdW5pdCAqdGVzdCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBsaW51eF9iaW5wcm0gYnBybSA9IHsgLmZpbGUgPSBOVUxMIH07CiYjNDM7CXN0cnVjdCBmaWxlICpmOwomIzQzOwljaGFyICpyZXNvbHZlZDsKJiM0MzsKJiM0MzsJLy8gVGVzdCAxOiBOb24tJE9SSUdJTiBpbnRlcnByZXRlciBwYXRoIHNob3VsZCBqdXN0IGJlIGR1cGxpY2F0ZWQKJiM0MzsJcmVzb2x2ZWQgPSByZXNvbHZlX2VsZl9pbnRlcnByZXRlcigmYW1wO2Jwcm0sICYjMzQ7L2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yJiMzNDspOwomIzQzOwlLVU5JVF9BU1NFUlRfTk9UX0VSUl9PUl9OVUxMKHRlc3QsIHJlc29sdmVkKTsKJiM0MzsJS1VOSVRfRVhQRUNUX1NUUkVRKHRlc3QsIHJlc29sdmVkLCAmIzM0Oy9saWI2NC9sZC1saW51eC14ODYtNjQuc28uMiYjMzQ7KTsKJiM0MzsJa2ZyZWUocmVzb2x2ZWQpOwomIzQzOwomIzQzOwkvLyBUZXN0IDI6ICRPUklHSU4gaW50ZXJwcmV0ZXIgcGF0aAomIzQzOwlmID0gZmlscF9vcGVuKCYjMzQ7LyYjMzQ7LCBPX1JET05MWSwgMCk7CiYjNDM7CUtVTklUX0FTU0VSVF9OT1RfRVJSX09SX05VTEwodGVzdCwgZik7CiYjNDM7CWJwcm0uZmlsZSA9IGY7CiYjNDM7CiYjNDM7CXJlc29sdmVkID0gcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIoJmFtcDticHJtLCAmIzM0OyRPUklHSU4vLi4vbGliL2xkLnNvJiMzNDspOwomIzQzOwlLVU5JVF9BU1NFUlRfTk9UX0VSUl9PUl9OVUxMKHRlc3QsIHJlc29sdmVkKTsKJiM0MzsJS1VOSVRfRVhQRUNUX1NUUkVRKHRlc3QsIHJlc29sdmVkLCAmIzM0Oy8vLi4vbGliL2xkLnNvJiMzNDspOwomIzQzOwlrZnJlZShyZXNvbHZlZCk7CiYjNDM7CiYjNDM7CWZpbHBfY2xvc2UoZiwgTlVMTCk7CiYjNDM7fQomIzQzOwogc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIGV4ZWNfdGVzdF9jYXNlc1tdID0gewogCUtVTklUX0NBU0UoZXhlY190ZXN0X2Jwcm1fc3RhY2tfbGltaXRzKSwKJiM0MzsJS1VOSVRfQ0FTRShleGVjX3Rlc3RfcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIpLAogCXt9LAogfTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9iaW5mbXRzLmggYi9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaAppbmRleCAyYzc3ZTM4M2U3Mzc1Ny4uMTc0MTljZDNkYmM3MzMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvYmluZm10cy5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYmluZm10cy5oCkBAIC0xNTAsNCAmIzQzOzE1MCw2IEBAIGV4dGVybiBzc2l6ZV90IHJlYWRfY29kZShzdHJ1Y3QgZmlsZSAqLCB1bnNpZ25lZCBsb25nLCBsb2ZmX3QsIHNpemVfdCk7CiBpbnQga2VybmVsX2V4ZWN2ZShjb25zdCBjaGFyICpmaWxlbmFtZSwKIAkJICBjb25zdCBjaGFyICpjb25zdCAqYXJndiwgY29uc3QgY2hhciAqY29uc3QgKmVudnApOwogCiYjNDM7Y2hhciAqcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSwgY29uc3QgY2hhciAqZWxmX2ludGVycHJldGVyKTsKJiM0MzsKICNlbmRpZiAvKiBfTElOVVhfQklORk1UU19IICovCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9NYWtlZmlsZQppbmRleCA0NWEzY2ZjNDM1Y2ZkNy4uNWUyZTMwNWNiMGJiNjggMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9NYWtlZmlsZQpAQCAtMTAsOSAmIzQzOzEwLDkgQEAgQUxJR05fUElFUyAgICAgICAgOj0gJChwYXRzdWJzdCAlLGxvYWRfYWRkcmVzcy4lLCQoQUxJR05TKSkKIEFMSUdOX1NUQVRJQ19QSUVTIDo9ICQocGF0c3Vic3QgJSxsb2FkX2FkZHJlc3Muc3RhdGljLiUsJChBTElHTlMpKQogQUxJR05NRU5UX1RFU1RTICAgOj0gJChBTElHTl9QSUVTKSAkKEFMSUdOX1NUQVRJQ19QSUVTKQogCi1URVNUX1BST0dTIDo9IGJpbmZtdF9zY3JpcHQucHkgY2hlY2stZXhlYy10ZXN0cy5zaAotVEVTVF9HRU5fUFJPR1MgOj0gZXhlY3ZlYXQgbm9uLXJlZ3VsYXIgJChBTElHTk1FTlRfVEVTVFMpCi1URVNUX0dFTl9QUk9HU19FWFRFTkRFRCA6PSBmYWxzZSBpbmMgc2V0LWV4ZWMgc2NyaXB0LWV4ZWMuaW5jIHNjcmlwdC1ub2V4ZWMuaW5jCiYjNDM7VEVTVF9QUk9HUyA6PSBiaW5mbXRfc2NyaXB0LnB5IGNoZWNrLWV4ZWMtdGVzdHMuc2ggb3JpZ2luX2ludGVycC5zaAomIzQzO1RFU1RfR0VOX1BST0dTIDo9IGV4ZWN2ZWF0IG5vbi1yZWd1bGFyICQoQUxJR05NRU5UX1RFU1RTKSB0ZXN0X3Byb2cKJiM0MztURVNUX0dFTl9QUk9HU19FWFRFTkRFRCA6PSBmYWxzZSBpbmMgc2V0LWV4ZWMgc2NyaXB0LWV4ZWMuaW5jIHNjcmlwdC1ub2V4ZWMuaW5jIG1vY2tfaW50ZXJwCiBURVNUX0dFTl9GSUxFUyA6PSBleGVjdmVhdC5zeW1saW5rIGV4ZWN2ZWF0LmRlbmF0dXJlZCBzY3JpcHQgc3ViZGlyCiAjIE1ha2VmaWxlIGlzIGEgcnVuLXRpbWUgZGVwZW5kZW5jeSwgc2luY2UgaXQmIzM5O3MgYWNjZXNzZWQgYnkgdGhlIGV4ZWN2ZWF0IHRlc3QKIFRFU1RfRklMRVMgOj0gTWFrZWZpbGUKQEAgLTU1LDMgJiM0Mzs1NSw5IEBAICQoT1VUUFVUKS9zY3JpcHQtZXhlYy5pbmM6ICQoQ0hFQ0tfRVhFQ19TQU1QTEVTKS9zY3JpcHQtZXhlYy5pbmMKIAljcCAkJmx0OyAkQAogJChPVVRQVVQpL3NjcmlwdC1ub2V4ZWMuaW5jOiAkKENIRUNLX0VYRUNfU0FNUExFUykvc2NyaXB0LW5vZXhlYy5pbmMKIAljcCAkJmx0OyAkQAomIzQzOwomIzQzOyQoT1VUUFVUKS9tb2NrX2ludGVycDogbW9ja19pbnRlcnAuYwomIzQzOwkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAtc3RhdGljIC1ub3N0ZGxpYiAtaW5jbHVkZSAuLi8uLi8uLi9pbmNsdWRlL25vbGliYy9ub2xpYmMuaCAkJmx0OyAtbyAkQAomIzQzOwomIzQzOyQoT1VUUFVUKS90ZXN0X3Byb2c6IHRlc3RfcHJvZy5jICQoT1VUUFVUKS9tb2NrX2ludGVycAomIzQzOwkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAtV2wsLWR5bmFtaWMtbGlua2VyLCYjMzk7JCRPUklHSU4vbW9ja19pbnRlcnAmIzM5OyAkJmx0OyAtbyAkQApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9tb2NrX2ludGVycC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9tb2NrX2ludGVycC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi45YzljYTEwOTgxY2NmZgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvbW9ja19pbnRlcnAuYwpAQCAtMCwwICYjNDM7MSw2IEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MztpbnQgbWFpbih2b2lkKQomIzQzO3sKJiM0MzsJd3JpdGUoMSwgJiMzNDtIZWxsbyBmcm9tIG1vY2sgaW50ZXJwcmV0ZXIhXG4mIzM0OywgMjkpOwomIzQzOwlyZXR1cm4gNDI7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9vcmlnaW5faW50ZXJwLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9vcmlnaW5faW50ZXJwLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwLi42MzVhNDA4Mzk4MDI1MQotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvb3JpZ2luX2ludGVycC5zaApAQCAtMCwwICYjNDM7MSwxNiBAQAomIzQzOyMhL2Jpbi9zaAomIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsKJiM0MzsjIEV4ZWN1dGUgdGhlIHRlc3QgcHJvZ3JhbSB3aGljaCBoYXMgaXRzIGludGVycHJldGVyIHNldCB0byAkT1JJR0lOL21vY2tfaW50ZXJwCiYjNDM7IyBOb3RlIHRoYXQgbW9ja19pbnRlcnAgbXVzdCBiZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCiYjNDM7ZGlyPSQoZGlybmFtZSAmIzM0OyQwJiMzNDspCiYjNDM7b3V0PSQoJiMzNDskZGlyJiMzNDsvdGVzdF9wcm9nIDImZ3Q7JmFtcDsxKQomIzQzO2V4aXRfY29kZT0kPwomIzQzOwomIzQzO2lmIFsgJGV4aXRfY29kZSAtZXEgNDIgXSAmYW1wOyZhbXA7IFsgJiMzNDskb3V0JiMzNDsgPSAmIzM0O0hlbGxvIGZyb20gbW9jayBpbnRlcnByZXRlciEmIzM0OyBdOyB0aGVuCiYjNDM7CWVjaG8gJiMzNDtvcmlnaW5faW50ZXJwOiBQQVNTJiMzNDsKJiM0MzsJZXhpdCAwCiYjNDM7ZWxzZQomIzQzOwllY2hvICYjMzQ7b3JpZ2luX2ludGVycDogRkFJTCAoZXhpdF9jb2RlPSRleGl0X2NvZGUsIG91dHB1dD0mIzM5OyRvdXQmIzM5OykmIzM0OwomIzQzOwlleGl0IDEKJiM0MztmaQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy90ZXN0X3Byb2cuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvdGVzdF9wcm9nLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjQ1MTYxNGRlZjNkYjFjCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy90ZXN0X3Byb2cuYwpAQCAtMCwwICYjNDM7MSw1IEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MztpbnQgbWFpbih2b2lkKQomIzQzO3sKJiM0MzsJcmV0dXJuIDA7IC8qIFNob3VsZCBuZXZlciBiZSByZWFjaGVkIGlmIGludGVycHJldGVyIGlzIGxvYWRlZCBpbnN0ZWFkICovCiYjNDM7fQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNDo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDYzCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBFTEYgSW50ZXJwcmV0ZXIgUGF0aCBSZXNvbHV0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGluIGZyb250IG9mIG1lIHRoYXQgdG91Y2hlcyBzb21lIHByZXR0eSBjcnVjaWFsIGNvZGU6IGBmcy9iaW5mbXRfZWxmLmNgLCBgZnMvYmluZm10X2VsZl9mZHBpYy5jYCwgYW5kIGBmcy9leGVjLmNgLiBSaWdodCBhd2F5LCB0aGUgbWVudGlvbiBvZiBgZXhlY3ZlYCBoYXMgbXkgYXR0ZW50aW9uIOKAkyB0aGF0JiMzOTtzIGRlZmluaXRlbHkgYSBjb3JlIGtlcm5lbCBwYXRoLiBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24sIGByZXNvbHZlX2VsZl9pbnRlcnByZXRlcmAsIGFuZCBmcm9tIHRoZSBkZXNjcmlwdGlvbiwgaXQmIzM5O3MgZm9jdXNlZCBvbiByZXNvbHZpbmcgYCRPUklHSU5gIHdpdGhpbiB0aGUgRUxGIGludGVycHJldGVyIHBhdGguIFRoaXMgaXMgZnVuY3Rpb25hbCwgaXTigJlzIGluIHRoZSBgZXhlY3ZlYCBwYXRoLCB3aGljaCBtZWFucyBpdCYjMzk7cyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBuZWVkIHRvIGZ1enouCgpMZXQmIzM5O3MgZGl2ZSBkZWVwZXIgaW50byB0aGUgY29kZS4gSXQgbG9va3MgbGlrZSBgcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXJgIGlzIGdldHRpbmcgYWRkZWQgdG8gYGZzL2V4ZWMuY2AgYW5kIHRoZW4gZXhwb3J0ZWQuIFRoZSBrZXkgcGFydCBpcyB0aGF0IGl0JiMzOTtzIGJlaW5nICpjYWxsZWQqIGZyb20gYGxvYWRfZWxmX2JpbmFyeWAgaW4gYGZzL2JpbmZtdF9lbGYuY2AgYW5kIGBsb2FkX2VsZl9mZHBpY19iaW5hcnlgIGluIGBmcy9iaW5mbXRfZWxmX2ZkcGljLmNgLiBUaGF0IHRlbGxzIG1lIGhvdyBpdCYjMzk7cyBpbnRlZ3JhdGVkIGludG8gdGhlIGV4aXN0aW5nIEVMRiBsb2FkaW5nIHByb2Nlc3MuCgpOZXh0LCBJIG5lZWQgdG8gY2hlY2sgZm9yIGFueSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gT2theSwgYGZzL2JpbmZtdF9lbGYuY2AgaXMgY29uZGl0aW9uYWwgb24gYENPTkZJR19CSU5GTVRfRUxGYCwgYGZzL2JpbmZtdF9lbGZfZmRwaWMuY2AgZGVwZW5kcyBvbiBgQ09ORklHX0JJTkZNVF9FTEZfRkRQSUNgLCBidXQgYGZzL2V4ZWMuY2AgYW5kIHRoZSBuZXcgZnVuY3Rpb24gYXJlIGFsd2F5cyBjb21waWxlZC4gSXQgc2VlbXMgdGhlIG5ldyBmdW5jdGlvbiBpcyBhbHdheXMgYXZhaWxhYmxlLCBidXQgZGVwZW5kZW50IG9uIHRoZSBFTEYgYmluYXJ5IHN1cHBvcnQuIFNvIHRoYXQgYWZmZWN0cyB0aGUgc2NvcGUgb2YgdGhlIHRlc3RzLiBOb3cgSSBuZWVkIHRvIHZlcmlmeSB3aGljaCBjb25maWdzIGFyZSBhY3R1YWxseSBlbmFibGVkIHRvIGRlY2lkZSB3aGF0IHRvIGNvbmNlbnRyYXRlIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA0OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JJTkZNVF9FTEYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9NYWtlZmlsZT0zNj1vYmotJChDT05GSUdfQklORk1UX1NDUklQVClcdCYjNDM7PSBiaW5mbXRfc2NyaXB0Lm9cbmZzL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19CSU5GTVRfRUxGKVx0JiM0Mzs9IGJpbmZtdF9lbGYub1xuZnMvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX0NPTVBBVF9CSU5GTVRfRUxGKVx0JiM0Mzs9IGNvbXBhdF9iaW5mbXRfZWxmLm9cbmZzL01ha2VmaWxlOjM5Om9iai0kKENPTkZJR19CSU5GTVRfRUxGX0ZEUElDKVx0JiM0Mzs9IGJpbmZtdF9lbGZfZmRwaWMub1xuZnMvTWFrZWZpbGUtNDAtb2JqLSQoQ09ORklHX0JJTkZNVF9GTEFUKVx0JiM0Mzs9IGJpbmZtdF9mbGF0Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNDo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTA0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqRUxGIGFuZCBGRFBJQzogQ29uZmlndXJhdGlvbiBDb251bmRydW1zKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gRUxGIGJpbmFyaWVzLCBzcGVjaWZpY2FsbHkgdGhlIGZsZXhpYmxlIFBJQyB2YXJpYW50LCBgQ09ORklHX0JJTkZNVF9FTEZfRkRQSUNgLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBgQ09ORklHX0JJTkZNVF9FTEZgIGlzIHRoZSBjb3JlLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoYXQgYW5kIGBDT05GSUdfQklORk1UX0VMRl9GRFBJQ2AgbW9yZSBncmFudWxhcmx5LiBUaGUgcXVlc3Rpb24gbm93IGJlY29tZXM6IGlzIEZEUElDIHVuaXZlcnNhbGx5IGF2YWlsYWJsZSwgb3IgZG9lcyBpdHMgcHJlc2VuY2UgZGVwZW5kIG9uIHNvbWUgYXJjaGl0ZWN0dXJhbCBmZWF0dXJlIG9yIG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9uPyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIEtjb25maWcgZmlsZXMsIG9yIHBlcmhhcHMgc29tZSByZWxldmFudCBkb2N1bWVudGF0aW9uLCB0byBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIGFueSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZGVwZW5kZW5jaWVzIG9yIG90aGVyIHByZXJlcXVpc2l0ZXMgdGhhdCBnb3Zlcm4gdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNwZWNpZmljIEZEUElDIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaGlzIGNvdWxkIGJlIGNydWNpYWwgZm9yIHBvcnRpbmcgb3IgY3VzdG9taXppbmcgdGhlIGtlcm5lbCYjMzk7cyBiaW5hcnkgbG9hZGluZyBjYXBhYmlsaXRpZXMuIExldCYjMzk7cyBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA0OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCSU5GTVRfRUxGX0ZEUElDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvS2NvbmZpZy5iaW5mbXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvS2NvbmZpZy5iaW5mbXQ9NTU9Y29uZmlnIEFSQ0hfVVNFX0dOVV9QUk9QRVJUWVxuLS1cbmZzL0tjb25maWcuYmluZm10LTU3LVxuZnMvS2NvbmZpZy5iaW5mbXQ6NTg6Y29uZmlnIEJJTkZNVF9FTEZfRkRQSUNcbmZzL0tjb25maWcuYmluZm10LTU5LVx0Ym9vbCBcJiMzNDtLZXJuZWwgc3VwcG9ydCBmb3IgRkRQSUMgRUxGIGJpbmFyaWVzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDQ6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjI5NQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXMgQklORk1UX0VMRl9GRFBJQyBkZXBlbmRlbmN5IGFuYWx5c2lzOgoKKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyBvZiBgQklORk1UX0VMRl9GRFBJQ2AqKgoKQWxyaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyB0byBmaWd1cmUgb3V0IHdoYXQgYEJJTkZNVF9FTEZfRkRQSUNgIGFjdHVhbGx5IHJlbGllcyBvbi4gVGhpcyBpcyBnb2luZyB0byBiZSBhIGNydWNpYWwgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIGl0cyBwbGFjZSBpbiB0aGUgYnJvYWRlciBzeXN0ZW0gYW5kIGhvdyBtb2RpZmljYXRpb25zIHRvIHJlbGF0ZWQgY29tcG9uZW50cyBtaWdodCBpbXBhY3QgaXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoaWNoIG90aGVyIG1vZHVsZXMsIGZlYXR1cmVzLCBvciBrZXJuZWwgc3Vic3lzdGVtcyBhcmUgKnByZXJlcXVpc2l0ZXMqIGZvciBgQklORk1UX0VMRl9GRFBJQ2AgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBJcyBpdCBzb21ldGhpbmcgcmVsYXRpdmVseSBzZWxmLWNvbnRhaW5lZCwgb3IgZG9lcyBpdCBoYXZlIGEgbG9uZyBsaXN0IG9mIGRlcGVuZGVuY2llcz8gS25vd2luZyB0aGlzIGxldmVsIG9mIGludGVyY29ubmVjdGl2aXR5IGlzIGtleS4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoaWNoIHBpZWNlcyBvZiB0aGUgRUxGIGZvcm1hdCBpdCB1c2VzIGFuZCByZWxpZXMgb24sIGFuZCB3aGF0IHRoZSBGRFBJQyAoUG9zaXRpb24gSW5kZXBlbmRlbnQgQ29kZSkgYWRkcyB0byB0aGUgbWl4LiBGcm9tIHRoZXJlIEkmIzM5O2xsIHN0YXJ0IGxvb2tpbmcgYXQgdGhvc2UgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA0OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCSU5GTVRfRUxGX0ZEUElDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvS2NvbmZpZy5iaW5mbXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvS2NvbmZpZy5iaW5mbXQ9NTU9Y29uZmlnIEFSQ0hfVVNFX0dOVV9QUk9QRVJUWVxuLS1cbmZzL0tjb25maWcuYmluZm10LTU3LVxuZnMvS2NvbmZpZy5iaW5mbXQ6NTg6Y29uZmlnIEJJTkZNVF9FTEZfRkRQSUNcbmZzL0tjb25maWcuYmluZm10LTU5LVx0Ym9vbCBcJiMzNDtLZXJuZWwgc3VwcG9ydCBmb3IgRkRQSUMgRUxGIGJpbmFyaWVzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDQ6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjY1NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBEZXBlbmRlbmNpZXM6IEtjb25maWcgRmlyc3QqKgoKQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoaXMgY29uZmlndXJhdGlvbiwgSSBuZWVkIHRvIHBhdXNlIGFuZCBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBsYW5kc2NhcGUuIEp1bXBpbmcgc3RyYWlnaHQgaW50byB0aGUgY29kZSB3b3VsZCBiZSBhIHJvb2tpZSBtb3ZlLCBlc3BlY2lhbGx5IHdpdGggdGhlIHBvdGVudGlhbCBmb3IgY29tcGxleCBpbnRlcmRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIGNvbnN1bHQgdGhlIEtjb25maWcgZmlsZS4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbmRpdGlvbmFsIGxvZ2ljIGFuZCBidWlsZCBvcHRpb25zIHJlbGF0ZWQgdG8gdGhpcyBtb2R1bGUgb3IgZmVhdHVyZS4gSXQmIzM5O3MgdGhlIGJsdWVwcmludCwgdGhlIGRlY2lzaW9uIHRyZWUuIEnigJlsbCBjaGVjayB0aGUgS2NvbmZpZywgYW5kIG9ubHkgdGhlbiB3aWxsIEkgZ3Jhc3AgdGhlIGZ1bGwgaW1wYWN0IG9mIGFueSBtb2RpZmljYXRpb25zIEkmIzM5O20gY29uc2lkZXJpbmcuIFNraXBwaW5nIHRoaXMgc3RlcCBpcyBhc2tpbmcgZm9yIGJ1aWxkIGVycm9ycywgdW5leHBlY3RlZCBiZWhhdmlvciwgYW5kIHVsdGltYXRlbHksIGEgbXVjaCBsb25nZXIgZGVidWdnaW5nIHNlc3Npb24uIExldCYjMzk7cyBzZWUgd2hhdCB0aGF0IEtjb25maWcgaGFzIHRvIHNheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDQ6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9LY29uZmlnLmJpbmZtdCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNTA6XHRcdGJvb2xcbiAgNTE6XHRcbiAgNTI6XHRjb25maWcgQVJDSF9IQVZFX0VMRl9QUk9UXG4gIDUzOlx0XHRib29sXG4gIDU0Olx0XG4gIDU1Olx0Y29uZmlnIEFSQ0hfVVNFX0dOVV9QUk9QRVJUWVxuICA1NjpcdFx0Ym9vbFxuICA1NzpcdFxuICA1ODpcdGNvbmZpZyBCSU5GTVRfRUxGX0ZEUElDXG4gIDU5Olx0XHRib29sIFwmIzM0O0tlcm5lbCBzdXBwb3J0IGZvciBGRFBJQyBFTEYgYmluYXJpZXNcJiMzNDtcbiAgNjA6XHRcdGRlZmF1bHQgeSBpZiAhQklORk1UX0VMRlxuICA2MTpcdFx0ZGVwZW5kcyBvbiBBUk0gfHwgKChNNjhLIHx8IFJJU0NWIHx8IFNVUEVSSCB8fCBYVEVOU0EpIFx1MDAyNlx1MDAyNiAhTU1VKVxuICA2MjpcdFx0c2VsZWN0IEVMRkNPUkVcbiAgNjM6XHRcdGhlbHBcbiAgNjQ6XHRcdCAgRUxGIEZEUElDIGJpbmFyaWVzIGFyZSBiYXNlZCBvbiBFTEYsIGJ1dCBhbGxvdyB0aGUgaW5kaXZpZHVhbCBsb2FkXG4gIDY1Olx0XHQgIHNlZ21lbnRzIG9mIGEgYmluYXJ5IHRvIGJlIGxvY2F0ZWQgaW4gbWVtb3J5IGluZGVwZW5kZW50bHkgb2YgZWFjaFxuICA2NjpcdFx0ICBvdGhlci4gVGhpcyBtYWtlcyB0aGlzIGZvcm1hdCBpZGVhbCBmb3IgdXNlIGluIGVudmlyb25tZW50cyB3aGVyZSBub1xuICA2NzpcdFx0ICBNTVUgaXMgYXZhaWxhYmxlIGFzIGl0IHN0aWxsIHBlcm1pdHMgdGV4dCBzZWdtZW50cyB0byBiZSBzaGFyZWQsXG4gIDY4Olx0XHQgIGV2ZW4gaWYgZGF0YSBzZWdtZW50cyBhcmUgbm90LlxuICA2OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNDo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTUxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqRUxGIEJpbmFyeSBGb3JtYXQgQ29uc2lkZXJhdGlvbnMqKgoKUmlnaHQsIGxldCYjMzk7cyBzZWUuIE15IGluaXRpYWwgdGhvdWdodCBpcyBhYm91dCB0aGF0IGBCSU5GTVRfRUxGX0ZEUElDYCBmZWF0dXJlIOKAkyBJIG5lZWQgdG8gcmVtZW1iZXIgdGhlIGNvbmRpdGlvbnMgZm9yIHRoYXQuIEl0IGxvb2tzIGxpa2UgaXQgaGluZ2VzIG9uIHRoZSBhcmNoaXRlY3R1cmUgYmVpbmcgQVJNLCBvciBpdCBiZWluZyBvbmUgb2YgTTY4SywgUklTQ1YsIFNVUEVSSCwgb3IgWFRFTlNBICp3aXRob3V0KiBhbiBNTVUuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgdGhhdCBpdCYjMzk7cyAqbm90KiBnZW5lcmFsbHkgc29tZXRoaW5nIEkmIzM5O2QgZmluZCBvbiB4ODYsIHdoaWNoIGlzIGltcG9ydGFudCB0byBrZWVwIGluIG1pbmQuCgpTbywgc2luY2UgdGhhdCYjMzk7cyBvdXQsIHRoZSB3b3JraG9yc2UgZm9yIGEgbG90IG9mIHN5c3RlbXMgaXMgZ29pbmcgdG8gYmUgYEJJTkZNVF9FTEZgLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24uIEl0JiMzOTtzIHRoZSBzdGFuZGFyZCwgcmlnaHQ/IExldCYjMzk7cyBkcmlsbCBkb3duIGludG8gdGhhdCBtb2R1bGUgYW5kIHNlZSB3aGF0IHRoZSBlc3NlbnRpYWwgZGV0YWlscyBhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA0OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvS2NvbmZpZy5iaW5mbXQmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRcbiAgIDM6XHRtZW51IFwmIzM0O0V4ZWN1dGFibGUgZmlsZSBmb3JtYXRzXCYjMzQ7XG4gICA0Olx0XG4gICA1Olx0Y29uZmlnIEJJTkZNVF9FTEZcbiAgIDY6XHRcdGJvb2wgXCYjMzQ7S2VybmVsIHN1cHBvcnQgZm9yIEVMRiBiaW5hcmllc1wmIzM0O1xuICAgNzpcdFx0ZGVwZW5kcyBvbiBNTVVcbiAgIDg6XHRcdHNlbGVjdCBFTEZDT1JFXG4gICA5Olx0XHRkZWZhdWx0IHlcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgRUxGIChFeGVjdXRhYmxlIGFuZCBMaW5rYWJsZSBGb3JtYXQpIGlzIGEgZm9ybWF0IGZvciBsaWJyYXJpZXMgYW5kXG4gIDEyOlx0XHQgIGV4ZWN1dGFibGVzIHVzZWQgYWNyb3NzIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzIGFuZCBvcGVyYXRpbmdcbiAgMTM6XHRcdCAgc3lzdGVtcy4gU2F5aW5nIFkgaGVyZSB3aWxsIGVuYWJsZSB5b3VyIGtlcm5lbCB0byBydW4gRUxGIGJpbmFyaWVzXG4gIDE0Olx0XHQgIGFuZCBlbmxhcmdlIGl0IGJ5IGFib3V0IDEzIEtCLiBFTEYgc3VwcG9ydCB1bmRlciBMaW51eCBoYXMgbm93IGFsbFxuICAxNTpcdFx0ICBidXQgcmVwbGFjZWQgdGhlIHRyYWRpdGlvbmFsIExpbnV4IGEub3V0IGZvcm1hdHMgKFFNQUdJQyBhbmQgWk1BR0lDKVxuICAxNjpcdFx0ICBiZWNhdXNlIGl0IGlzIHBvcnRhYmxlICh0aGlzIGRvZXMgKm5vdCogbWVhbiB0aGF0IHlvdSB3aWxsIGJlIGFibGVcbiAgMTc6XHRcdCAgdG8gcnVuIGV4ZWN1dGFibGVzIGZyb20gZGlmZmVyZW50IGFyY2hpdGVjdHVyZXMgb3Igb3BlcmF0aW5nIHN5c3RlbXNcbiAgMTg6XHRcdCAgaG93ZXZlcikgYW5kIG1ha2VzIGJ1aWxkaW5nIHJ1bi10aW1lIGxpYnJhcmllcyB2ZXJ5IGVhc3kuIE1hbnkgbmV3XG4gIDE5Olx0XHQgIGV4ZWN1dGFibGVzIGFyZSBkaXN0cmlidXRlZCBzb2xlbHkgaW4gRUxGIGZvcm1hdC4gWW91IGRlZmluaXRlbHlcbiAgMjA6XHRcdCAgd2FudCB0byBzYXkgWSBoZXJlLlxuICAyMTpcdFxuICAyMjpcdFx0ICBJbmZvcm1hdGlvbiBhYm91dCBFTEYgaXMgY29udGFpbmVkIGluIHRoZSBFTEYgSE9XVE8gYXZhaWxhYmxlIGZyb21cbiAgMjM6XHRcdCAgXHUwMDNjaHR0cDovL3d3dy50bGRwLm9yZy9kb2NzLmh0bWwjaG93dG9cdTAwM2UuXG4gIDI0Olx0XG4gIDI1Olx0XHQgIElmIHlvdSBmaW5kIHRoYXQgYWZ0ZXIgdXBncmFkaW5nIGZyb20gTGludXgga2VybmVsIDEuMiBhbmQgc2F5aW5nIFlcbiAgMjY6XHRcdCAgaGVyZSwgeW91IHN0aWxsIGNhbiYjMzk7dCBydW4gYW55IEVMRiBiaW5hcmllcyAodGhleSBqdXN0IGNyYXNoKSwgdGhlblxuICAyNzpcdFx0ICB5b3UmIzM5O2xsIGhhdmUgdG8gaW5zdGFsbCB0aGUgbmV3ZXN0IEVMRiBydW50aW1lIGxpYnJhcmllcywgaW5jbHVkaW5nXG4gIDI4Olx0XHQgIGxkLnNvIChjaGVjayB0aGUgZmlsZSBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vQ2hhbmdlc1x1MDAzZSBmb3IgbG9jYXRpb24gYW5kXG4gIDI5Olx0XHQgIGxhdGVzdCB2ZXJzaW9uKS5cbiAgMzA6XHRcbiAgMzE6XHRjb25maWcgQklORk1UX0VMRl9LVU5JVF9URVNUXG4gIDMyOlx0XHRib29sIFwmIzM0O0J1aWxkIEtVbml0IHRlc3RzIGZvciBFTEYgYmluYXJ5IHN1cHBvcnRcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuICAzMzpcdFx0ZGVwZW5kcyBvbiBLVU5JVD15IFx1MDAyNlx1MDAyNiBCSU5GTVRfRUxGPXlcbiAgMzQ6XHRcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXG4gIDM1Olx0XHRoZWxwXG4gIDM2Olx0XHQgIFRoaXMgYnVpbGRzIHRoZSBFTEYgbG9hZGVyIEtVbml0IHRlc3RzLCB3aGljaCB0cnkgdG8gZ2F0aGVyXG4gIDM3Olx0XHQgIHByaW9yIGJ1ZyBmaXhlcyBpbnRvIGEgcmVncmVzc2lvbiB0ZXN0IGNvbGxlY3Rpb24uIFRoaXMgaXMgcmVhbGx5XG4gIDM4Olx0XHQgIG9ubHkgbmVlZGVkIGZvciBkZWJ1Z2dpbmcuIE5vdGUgdGhhdCB3aXRoIENPTkZJR19DT01QQVQ9eSwgdGhlXG4gIDM5Olx0XHQgIGNvbXBhdF9iaW5mbXRfZWxmIEtVbml0IHRlc3QgaXMgYWxzbyBjcmVhdGVkLlxuICA0MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNDo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDkxCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRm9jdXM6IEVMRiBCaW5hcnkgTG9hZGluZyAmYW1wOyBJbnRlcnByZXRhdGlvbioqCgpPa2F5LCBzbyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIGhlcmUgaXMgYEJJTkZNVF9FTEZgLCB0aGF0JiMzOTtzIHRoZSBiYXNlLiBNeSBmb2N1cyBoYXMgdG8gYmUgb24gdGhlIGZ1bmN0aW9ucyB0aGF0IHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcuIEkgc2VlIGBsb2FkX2VsZl9iaW5hcnlgIGFuZCBgbG9hZF9lbGZfZmRwaWNfYmluYXJ5YCBhcmUgbW9kaWZpZWQsIGFsb25nIHdpdGggdGhlIGFkZGl0aW9uIG9mIGByZXNvbHZlX2VsZl9pbnRlcnByZXRlcmAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBgbG9hZF9lbGZfYmluYXJ5YCBpcyBhIG5vdG9yaW91cyBob3QtcGF0aDsgdGhhdCYjMzk7cyBjYWxsZWQgZm9yIGV2ZXJ5IHNpbmdsZSBFTEYgZXhlY3V0aW9uLiBgcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXJgIGlzIG5ldywgYW5kIHRoYXQgaXMgY2FsbGVkIGR1cmluZyB0aGUgZXhlY3V0aW9uIG9mIGR5bmFtaWNhbGx5IGxpbmtlZCBFTEYgYmluYXJpZXMuIEkmIzM5O20gbm90IHN1cmUgaWYgaXQgaXMgYSBob3QtcGF0aCwgYnV0IGl0IGlzIGNhbGxlZCBmb3IgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gZXhlY3V0aW9uLgoKSG93ZXZlciwgSSB0aGluayBgcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXJgIGlzIHRoZSBtb3JlIGNvbXBlbGxpbmcgY2FuZGlkYXRlIGJlY2F1c2UgaXQmIzM5O3MgKm5ldyogbG9naWMsIHRoZSBjb2RlIHdlIHdhbnQgdG8gYmUgZHJpbGxpbmcgaW50by4gQWx0aG91Z2ggYGxvYWRfZWxmX2JpbmFyeWAgYW5kIGBsb2FkX2VsZl9mZHBpY19iaW5hcnlgIGFyZSBtb2RpZmllZCwgSSYjMzk7ZCBzYXkgdGhleSBhcmUgcHJldHR5IGdlbmVyaWMgYW5kIGxlc3Mgc3BlY2lmaWMgdG8gdGhlIGNoYW5nZXMuIFllcywgbGV0JiMzOTtzIGRlZmluaXRlbHkgaW5jbHVkZSBgcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXJgLgoKSG9sZCBvbi4gTm93IHRoYXQgSSB0aGluayBhYm91dCBpdCwgc2luY2UgYHJlc29sdmVfZWxmX2ludGVycHJldGVyYCBpcyBjYWxsZWQgb24gKmV2ZXJ5KiBkeW5hbWljYWxseSBsaW5rZWQgRUxGIGJpbmFyeSBleGVjdXRpb24sIGlmIHdlIGZvY3VzIHRoZSBmdXp6aW5nIG9uICpqdXN0KiB0aGlzLCBhcmUgd2UgZ29pbmcgdG8gYmUgY29uc3RhbnRseSBoaXR0aW5nIGl0IHdpdGggbm9ybWFsIGV4ZWN1dGlvbiBwYXR0ZXJucz8gVGhhdCBzYWlkLCBpdCBpcyAqdGhlKiBuZXdseSBhZGRlZCBmdW5jdGlvbiwgYW5kIHdlIG5lZWQgdG8gcHJvYmUgdGhlIGVkZ2UgY2FzZXMg4oCTIHRoaW5rIGAkT1JJR0lOYCByZXNvbHV0aW9uLCBhbmQgc28gb24uIFllcywgYHJlc29sdmVfZWxmX2ludGVycHJldGVyYCBzZWVtcyBsaWtlIGEgc3Ryb25nIGNvbnRlbmRlci4KCkxldCYjMzk7cyBxdWlja2x5IHNjYW4gdGhlIGNvbmZpZyBvcHRpb25zIGFnYWluLiBIbW0sIHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYGZzL2V4ZWMuY2AgYW5kIGFkZHMgdGVzdHMgdG8gYGZzL3Rlc3RzL2V4ZWNfa3VuaXQuY2AgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL2AuIEkgc2VlIHRoZSBrdW5pdCB0ZXN0IGlzIHVuZGVyIGBDT05GSUdfRVhFQ19LVU5JVF9URVNUYC4gV2UgcHJvYmFibHkgZG9uJiMzOTt0IG5lZWQgdG8gZW5hYmxlIEtVbml0IHRlc3RzIHNwZWNpZmljYWxseSBmb3IgZnV6emluZyBwdXJwb3Nlcy4KCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGUgY29kZSBmb3IgYHJlc29sdmVfZWxmX2ludGVycHJldGVyYCBpbiBgZnMvZXhlYy5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDQ6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leGVjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXhlYy5jPTIwMjQ9ZnNfaW5pdGNhbGwoaW5pdF9mc19leGVjX3N5c2N0bHMpO1xuLS1cbmZzL2V4ZWMuYy0yMDI2LVxuZnMvZXhlYy5jOjIwMjc6Y2hhciAqcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSwgY29uc3QgY2hhciAqZWxmX2ludGVycHJldGVyKVxuZnMvZXhlYy5jLTIwMjgte1xuLS1cbmZzL2V4ZWMuYy0yMDY2LX1cbmZzL2V4ZWMuYzoyMDY3OkVYUE9SVF9TWU1CT0wocmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIpO1xuZnMvZXhlYy5jLTIwNjgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA0OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxNDUKCQkJCQkJCW91dHB1dDogMTE5CgkJCQkJCQl0aG91Z2h0czogMjU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIFJlYWNoIGFuZCBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIHRha2VuIGEgbG9vayBhdCB0aGlzIHBhdGNoLCBhbmQgbXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgaXQmIzM5O3MgZGVmaW5pdGVseSBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUuIFRoaXMgaXMgYmVjYXVzZSBpdCYjMzk7cyBhZGRpbmcgbmV3IGZ1bmN0aW9uYWxpdHkgdG8gcmVzb2x2ZSBgJE9SSUdJTmAgd2l0aGluIHRoZSBFTEYgaW50ZXJwcmV0ZXIgcGF0aCBkdXJpbmcgYGV4ZWN2ZWAuIFRoYXQmIzM5O3MgY29yZSBrZXJuZWwgbG9naWMsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIEVMRiBiaW5hcnkgbG9hZGVyLCBhbmQgdGhhdCYjMzk7cyAqYWx3YXlzKiByZWFjaGFibGUuIFRoZSBrZXkgZnVuY3Rpb24gSSYjMzk7bSBmb2N1c2luZyBvbiBoZXJlIGlzIGByZXNvbHZlX2VsZl9pbnRlcnByZXRlcmAuCgpOb3csIGxldCYjMzk7cyBjb25zaWRlciB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIFdlIGtub3cgdGhpcyBpcyBkZXBlbmRlbnQgb24gYEJJTkZNVF9FTEZgLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIHVzdWFsbHkgZW5hYmxlZCBieSBkZWZhdWx0LiBJJiMzOTtsbCBzdGlsbCBsaXN0IGl0IHRob3VnaCwgZm9yIGNsYXJpdHkuIEFkZGl0aW9uYWxseSwgYEJJTkZNVF9FTEZfRkRQSUNgIGlzIHBvdGVudGlhbGx5IHJlbGV2YW50LCBldmVuIGlmIEZEUElDIG1pZ2h0IG5vdCBiZSBwcmV2YWxlbnQgb24geDg2IGFyY2hpdGVjdHVyZXM7IGl04oCZcyBhIGdvb2QgcHJhY3RpY2UgdG8gaW5jbHVkZSBpdC4KClJlZmluaW5nIG15IGFuYWx5c2lzLCB0aGUgcGF0Y2gmIzM5O3MgY29yZSBpbXBhY3QgaXMgcHJvdmlkaW5nIGAkT1JJR0lOYCByZXNvbHV0aW9uIGR1cmluZyB0aGUgYGV4ZWN2ZWAgcHJvY2VzcyBmb3IgdGhlIEVMRiBpbnRlcnByZXRlci4gVGhlIGNoYW5nZXMgYXJlIHdpdGhpbiB0aGUgY29yZSBFTEYgbG9hZGluZyBsb2dpYywgc3BlY2lmaWNhbGx5IHRvdWNoaW5nIGBsb2FkX2VsZl9iaW5hcnlgIGFuZCBgbG9hZF9lbGZfZmRwaWNfYmluYXJ5YCwgYW5kIGludHJvZHVjaW5nIHRoZSBuZXcgYHJlc29sdmVfZWxmX2ludGVycHJldGVyYCBmdW5jdGlvbi4gVGhpcyBpcyB1bmRlbmlhYmx5IHJlYWNoYWJsZSBjb2RlLCBhbmQgdGhlcmVmb3JlIHNob3VsZCBiZSBjb25zaWRlcmVkIGFzIGEgdGFyZ2V0IGZvciBmdXp6aW5nLgoKTXkgbGlzdCBvZiBjcml0aWNhbCBpdGVtczoKCiogICAqKkZvY3VzIFN5bWJvbHMqKjogYHJlc29sdmVfZWxmX2ludGVycHJldGVyYAoqICAgKipFbmFibGVkIENvbmZpZ3VyYXRpb25zKio6IGBCSU5GTVRfRUxGYCwgYEJJTkZNVF9FTEZfRkRQSUNgCgpJJiMzOTttIGNvbmZpZGVudCBpbiBteSBhc3Nlc3NtZW50IGFuZCBJJiMzOTtsbCBzdWJtaXQgbXkgZmluZGluZ3MgdmlhIHRoZSBgc2V0LXJlc3VsdHNgIGNvbW1hbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA0OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCSU5GTVRfRUxGJiMzNDssCiAgICAmIzM0O0JJTkZNVF9FTEZfRkRQSUMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZXNvbHZlX2VsZl9pbnRlcnByZXRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHJlc29sdmluZyAmIzM5OyRPUklHSU4mIzM5OyBpbiB0aGUgRUxGIGludGVycHJldGVyIHBhdGggZHVyaW5nIGV4ZWN2ZS4gVGhpcyBtb2RpZmllcyB0aGUgY29yZSBFTEYgYmluYXJ5IGxvYWRpbmcgbG9naWMgYW5kIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24gYHJlc29sdmVfZWxmX2ludGVycHJldGVyYC4gVGhpcyBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgcGF0aCByZXNvbHV0aW9uIGFuZCBtZW1vcnkgbWFuYWdlbWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QklORk1UX0VMRiYjMzQ7LAogICAgJiMzNDtCSU5GTVRfRUxGX0ZEUElDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciByZXNvbHZpbmcgJiMzOTskT1JJR0lOJiMzOTsgaW4gdGhlIEVMRiBpbnRlcnByZXRlciBwYXRoIGR1cmluZyBleGVjdmUuIFRoaXMgbW9kaWZpZXMgdGhlIGNvcmUgRUxGIGJpbmFyeSBsb2FkaW5nIGxvZ2ljIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGByZXNvbHZlX2VsZl9pbnRlcnByZXRlcmAuIFRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IHBhdGggcmVzb2x1dGlvbiBhbmQgbWVtb3J5IG1hbmFnZW1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNDo1NjowOS45OTg1NjM5OTFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDY3OTE4ODc2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCSU5GTVRfRUxGXCIsXG4gICAgXCJCSU5GTVRfRUxGX0ZEUElDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHJlc29sdmluZyAnJE9SSUdJTicgaW4gdGhlIEVMRiBpbnRlcnByZXRlciBwYXRoIGR1cmluZyBleGVjdmUuIFRoaXMgbW9kaWZpZXMgdGhlIGNvcmUgRUxGIGJpbmFyeSBsb2FkaW5nIGxvZ2ljIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGByZXNvbHZlX2VsZl9pbnRlcnByZXRlcmAuIFRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IHBhdGggcmVzb2x1dGlvbiBhbmQgbWVtb3J5IG1hbmFnZW1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA0OjU2OjA5Ljk5ODU3MDY2MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUwNzE2OTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjIyZjRlOTUyNGE5NjVkZWQ1NWYwMzZkNmY2MThlNzUyN2QzZjVkYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1biAyMiAwNDo1NjowOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9iaW5mbXRfZWxmLmMgYi9mcy9iaW5mbXRfZWxmLmNcXG5pbmRleCAxNmE1NmI2YjNmNmNhMS4uYWYxMWY5NmFlMzM3MWQgMTAwNjQ0XFxuLS0tIGEvZnMvYmluZm10X2VsZi5jXFxuKysrIGIvZnMvYmluZm10X2VsZi5jXFxuQEAgLTg3Miw3ICs4NzIsNyBAQCBzdGF0aWMgaW50IGxvYWRfZWxmX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbiBcXG4gXFx0ZWxmX3BwbnQgPSBlbGZfcGhkYXRhO1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZWxmX2V4LVxcdTAwM2VlX3BobnVtOyBpKyssIGVsZl9wcG50KyspIHtcXG4tXFx0XFx0Y2hhciAqZWxmX2ludGVycHJldGVyO1xcbitcXHRcXHRjaGFyICplbGZfaW50ZXJwcmV0ZXIsICpyZXNvbHZlZF9pbnRlcnA7XFxuIFxcbiBcXHRcXHRpZiAoZWxmX3BwbnQtXFx1MDAzZXBfdHlwZSA9PSBQVF9HTlVfUFJPUEVSVFkpIHtcXG4gXFx0XFx0XFx0ZWxmX3Byb3BlcnR5X3BoZGF0YSA9IGVsZl9wcG50O1xcbkBAIC05MDQsOCArOTA0LDE1IEBAIHN0YXRpYyBpbnQgbG9hZF9lbGZfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXFxuIFxcdFxcdGlmIChlbGZfaW50ZXJwcmV0ZXJbZWxmX3BwbnQtXFx1MDAzZXBfZmlsZXN6IC0gMV0gIT0gJ1xcXFwwJylcXG4gXFx0XFx0XFx0Z290byBvdXRfZnJlZV9pbnRlcnA7XFxuIFxcbi1cXHRcXHRpbnRlcnByZXRlciA9IG9wZW5fZXhlYyhlbGZfaW50ZXJwcmV0ZXIpO1xcbitcXHRcXHRyZXNvbHZlZF9pbnRlcnAgPSByZXNvbHZlX2VsZl9pbnRlcnByZXRlcihicHJtLCBlbGZfaW50ZXJwcmV0ZXIpO1xcbiBcXHRcXHRrZnJlZShlbGZfaW50ZXJwcmV0ZXIpO1xcbitcXHRcXHRpZiAoSVNfRVJSKHJlc29sdmVkX2ludGVycCkpIHtcXG4rXFx0XFx0XFx0cmV0dmFsID0gUFRSX0VSUihyZXNvbHZlZF9pbnRlcnApO1xcbitcXHRcXHRcXHRnb3RvIG91dF9mcmVlX3BoO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRpbnRlcnByZXRlciA9IG9wZW5fZXhlYyhyZXNvbHZlZF9pbnRlcnApO1xcbitcXHRcXHRrZnJlZShyZXNvbHZlZF9pbnRlcnApO1xcbiBcXHRcXHRyZXR2YWwgPSBQVFJfRVJSKGludGVycHJldGVyKTtcXG4gXFx0XFx0aWYgKElTX0VSUihpbnRlcnByZXRlcikpXFxuIFxcdFxcdFxcdGdvdG8gb3V0X2ZyZWVfcGg7XFxuZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9lbGZfZmRwaWMuYyBiL2ZzL2JpbmZtdF9lbGZfZmRwaWMuY1xcbmluZGV4IDdlMzEwODQ4OWM4M2NhLi5lODU3MjdkNzEyZTM4MSAxMDA2NDRcXG4tLS0gYS9mcy9iaW5mbXRfZWxmX2ZkcGljLmNcXG4rKysgYi9mcy9iaW5mbXRfZWxmX2ZkcGljLmNcXG5AQCAtMjMwLDcgKzIzMCw5IEBAIHN0YXRpYyBpbnQgbG9hZF9lbGZfZmRwaWNfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZXhlY19wYXJhbXMuaGRyLmVfcGhudW07IGkrKywgcGhkcisrKSB7XFxuIFxcdFxcdHN3aXRjaCAocGhkci1cXHUwMDNlcF90eXBlKSB7XFxuLVxcdFxcdGNhc2UgUFRfSU5URVJQOlxcbitcXHRcXHRjYXNlIFBUX0lOVEVSUDoge1xcbitcXHRcXHRcXHRjaGFyICpyZXNvbHZlZF9pbnRlcnA7XFxuK1xcbiBcXHRcXHRcXHRyZXR2YWwgPSAtRU5PTUVNO1xcbiBcXHRcXHRcXHRpZiAocGhkci1cXHUwMDNlcF9maWxlc3ogXFx1MDAzZSBQQVRIX01BWClcXG4gXFx0XFx0XFx0XFx0Z290byBlcnJvcjtcXG5AQCAtMjU5LDcgKzI2MSwxNSBAQCBzdGF0aWMgaW50IGxvYWRfZWxmX2ZkcGljX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbiBcXHRcXHRcXHRrZGVidWcoXFxcIlVzaW5nIEVMRiBpbnRlcnByZXRlciAlc1xcXCIsIGludGVycHJldGVyX25hbWUpO1xcbiBcXG4gXFx0XFx0XFx0LyogcmVwbGFjZSB0aGUgcHJvZ3JhbSB3aXRoIHRoZSBpbnRlcnByZXRlciAqL1xcbi1cXHRcXHRcXHRpbnRlcnByZXRlciA9IG9wZW5fZXhlYyhpbnRlcnByZXRlcl9uYW1lKTtcXG4rXFx0XFx0XFx0cmVzb2x2ZWRfaW50ZXJwID0gcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIoYnBybSwgaW50ZXJwcmV0ZXJfbmFtZSk7XFxuK1xcdFxcdFxcdGtmcmVlKGludGVycHJldGVyX25hbWUpO1xcbitcXHRcXHRcXHRpZiAoSVNfRVJSKHJlc29sdmVkX2ludGVycCkpIHtcXG4rXFx0XFx0XFx0XFx0cmV0dmFsID0gUFRSX0VSUihyZXNvbHZlZF9pbnRlcnApO1xcbitcXHRcXHRcXHRcXHRnb3RvIGVycm9yO1xcbitcXHRcXHRcXHR9XFxuK1xcbitcXHRcXHRcXHRpbnRlcnByZXRlciA9IG9wZW5fZXhlYyhyZXNvbHZlZF9pbnRlcnApO1xcbitcXHRcXHRcXHRrZnJlZShyZXNvbHZlZF9pbnRlcnApO1xcbiBcXHRcXHRcXHRyZXR2YWwgPSBQVFJfRVJSKGludGVycHJldGVyKTtcXG4gXFx0XFx0XFx0aWYgKElTX0VSUihpbnRlcnByZXRlcikpIHtcXG4gXFx0XFx0XFx0XFx0aW50ZXJwcmV0ZXIgPSBOVUxMO1xcbkBAIC0yODQsNiArMjk0LDcgQEAgc3RhdGljIGludCBsb2FkX2VsZl9mZHBpY19iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4gXFxuIFxcdFxcdFxcdGludGVycF9wYXJhbXMuaGRyID0gKigoc3RydWN0IGVsZmhkciAqKSBicHJtLVxcdTAwM2VidWYpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fVxcbiBcXG4gXFx0XFx0Y2FzZSBQVF9MT0FEOlxcbiAjaWZkZWYgQ09ORklHX01NVVxcbmRpZmYgLS1naXQgYS9mcy9leGVjLmMgYi9mcy9leGVjLmNcXG5pbmRleCBiOTJmZTdkYjE3NmNmZi4uMDk3OGFlNjEzMDRhOTQgMTAwNjQ0XFxuLS0tIGEvZnMvZXhlYy5jXFxuKysrIGIvZnMvZXhlYy5jXFxuQEAgLTIwMjQsNiArMjAyNCw0OCBAQCBzdGF0aWMgaW50IF9faW5pdCBpbml0X2ZzX2V4ZWNfc3lzY3Rscyh2b2lkKVxcbiBmc19pbml0Y2FsbChpbml0X2ZzX2V4ZWNfc3lzY3Rscyk7XFxuICNlbmRpZiAvKiBDT05GSUdfU1lTQ1RMICovXFxuIFxcbitjaGFyICpyZXNvbHZlX2VsZl9pbnRlcnByZXRlcihzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLCBjb25zdCBjaGFyICplbGZfaW50ZXJwcmV0ZXIpXFxuK3tcXG4rXFx0Y2hhciAqcGF0aGJ1ZiwgKnBhdGgsICpzbGFzaCwgKnJlc29sdmVkO1xcbitcXG4rXFx0aWYgKHN0cm5jbXAoZWxmX2ludGVycHJldGVyLCBcXFwiJE9SSUdJTlxcXCIsIDcpICE9IDApIHtcXG4rXFx0XFx0Y2hhciAqcmV0ID0ga3N0cmR1cChlbGZfaW50ZXJwcmV0ZXIsIEdGUF9LRVJORUwpO1xcbitcXG4rXFx0XFx0cmV0dXJuIHJldCA/IHJldCA6IEVSUl9QVFIoLUVOT01FTSk7XFxuK1xcdH1cXG4rXFxuK1xcdHBhdGhidWYgPSBrbWFsbG9jKFBBVEhfTUFYLCBHRlBfS0VSTkVMKTtcXG4rXFx0aWYgKCFwYXRoYnVmKVxcbitcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcXG4rXFxuK1xcdHBhdGggPSBmaWxlX3BhdGgoYnBybS1cXHUwMDNlZmlsZSwgcGF0aGJ1ZiwgUEFUSF9NQVgpO1xcbitcXHRpZiAoSVNfRVJSKHBhdGgpKSB7XFxuK1xcdFxcdGtmcmVlKHBhdGhidWYpO1xcbitcXHRcXHRyZXR1cm4gKGNoYXIgKilwYXRoO1xcbitcXHR9XFxuK1xcbitcXHRzbGFzaCA9IHN0cnJjaHIocGF0aCwgJy8nKTtcXG4rXFx0aWYgKHNsYXNoKSB7XFxuK1xcdFxcdGlmIChzbGFzaCA9PSBwYXRoKVxcbitcXHRcXHRcXHQqKHNsYXNoICsgMSkgPSAnXFxcXDAnO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdCpzbGFzaCA9ICdcXFxcMCc7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGtmcmVlKHBhdGhidWYpO1xcbitcXHRcXHRjaGFyICpyZXQgPSBrc3RyZHVwKGVsZl9pbnRlcnByZXRlciwgR0ZQX0tFUk5FTCk7XFxuK1xcbitcXHRcXHRyZXR1cm4gcmV0ID8gcmV0IDogRVJSX1BUUigtRU5PTUVNKTtcXG4rXFx0fVxcbitcXG4rXFx0cmVzb2x2ZWQgPSBrYXNwcmludGYoR0ZQX0tFUk5FTCwgXFxcIiVzJXNcXFwiLCBwYXRoLCBlbGZfaW50ZXJwcmV0ZXIgKyA3KTtcXG4rXFx0a2ZyZWUocGF0aGJ1Zik7XFxuK1xcdGlmICghcmVzb2x2ZWQpXFxuK1xcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xcbitcXG4rXFx0cmV0dXJuIHJlc29sdmVkO1xcbit9XFxuK0VYUE9SVF9TWU1CT0wocmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIpO1xcbitcXG4gI2lmZGVmIENPTkZJR19FWEVDX0tVTklUX1RFU1RcXG4gI2luY2x1ZGUgXFxcInRlc3RzL2V4ZWNfa3VuaXQuY1xcXCJcXG4gI2VuZGlmXFxuZGlmZiAtLWdpdCBhL2ZzL3Rlc3RzL2V4ZWNfa3VuaXQuYyBiL2ZzL3Rlc3RzL2V4ZWNfa3VuaXQuY1xcbmluZGV4IDFjMzJjYWMwOThjZjUxLi45OTFiOWFiYWQzZWVkZiAxMDA2NDRcXG4tLS0gYS9mcy90ZXN0cy9leGVjX2t1bml0LmNcXG4rKysgYi9mcy90ZXN0cy9leGVjX2t1bml0LmNcXG5AQCAtMTE5LDggKzExOSwzNCBAQCBzdGF0aWMgdm9pZCBleGVjX3Rlc3RfYnBybV9zdGFja19saW1pdHMoc3RydWN0IGt1bml0ICp0ZXN0KVxcbiBcXHR9XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIGV4ZWNfdGVzdF9yZXNvbHZlX2VsZl9pbnRlcnByZXRlcihzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuK3tcXG4rXFx0c3RydWN0IGxpbnV4X2JpbnBybSBicHJtID0geyAuZmlsZSA9IE5VTEwgfTtcXG4rXFx0c3RydWN0IGZpbGUgKmY7XFxuK1xcdGNoYXIgKnJlc29sdmVkO1xcbitcXG4rXFx0Ly8gVGVzdCAxOiBOb24tJE9SSUdJTiBpbnRlcnByZXRlciBwYXRoIHNob3VsZCBqdXN0IGJlIGR1cGxpY2F0ZWRcXG4rXFx0cmVzb2x2ZWQgPSByZXNvbHZlX2VsZl9pbnRlcnByZXRlcihcXHUwMDI2YnBybSwgXFxcIi9saWI2NC9sZC1saW51eC14ODYtNjQuc28uMlxcXCIpO1xcbitcXHRLVU5JVF9BU1NFUlRfTk9UX0VSUl9PUl9OVUxMKHRlc3QsIHJlc29sdmVkKTtcXG4rXFx0S1VOSVRfRVhQRUNUX1NUUkVRKHRlc3QsIHJlc29sdmVkLCBcXFwiL2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yXFxcIik7XFxuK1xcdGtmcmVlKHJlc29sdmVkKTtcXG4rXFxuK1xcdC8vIFRlc3QgMjogJE9SSUdJTiBpbnRlcnByZXRlciBwYXRoXFxuK1xcdGYgPSBmaWxwX29wZW4oXFxcIi9cXFwiLCBPX1JET05MWSwgMCk7XFxuK1xcdEtVTklUX0FTU0VSVF9OT1RfRVJSX09SX05VTEwodGVzdCwgZik7XFxuK1xcdGJwcm0uZmlsZSA9IGY7XFxuK1xcbitcXHRyZXNvbHZlZCA9IHJlc29sdmVfZWxmX2ludGVycHJldGVyKFxcdTAwMjZicHJtLCBcXFwiJE9SSUdJTi8uLi9saWIvbGQuc29cXFwiKTtcXG4rXFx0S1VOSVRfQVNTRVJUX05PVF9FUlJfT1JfTlVMTCh0ZXN0LCByZXNvbHZlZCk7XFxuK1xcdEtVTklUX0VYUEVDVF9TVFJFUSh0ZXN0LCByZXNvbHZlZCwgXFxcIi8vLi4vbGliL2xkLnNvXFxcIik7XFxuK1xcdGtmcmVlKHJlc29sdmVkKTtcXG4rXFxuK1xcdGZpbHBfY2xvc2UoZiwgTlVMTCk7XFxuK31cXG4rXFxuIHN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBleGVjX3Rlc3RfY2FzZXNbXSA9IHtcXG4gXFx0S1VOSVRfQ0FTRShleGVjX3Rlc3RfYnBybV9zdGFja19saW1pdHMpLFxcbitcXHRLVU5JVF9DQVNFKGV4ZWNfdGVzdF9yZXNvbHZlX2VsZl9pbnRlcnByZXRlciksXFxuIFxcdHt9LFxcbiB9O1xcbiBcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9iaW5mbXRzLmggYi9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaFxcbmluZGV4IDJjNzdlMzgzZTczNzU3Li4xNzQxOWNkM2RiYzczMyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvYmluZm10cy5oXFxuQEAgLTE1MCw0ICsxNTAsNiBAQCBleHRlcm4gc3NpemVfdCByZWFkX2NvZGUoc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgbG9uZywgbG9mZl90LCBzaXplX3QpO1xcbiBpbnQga2VybmVsX2V4ZWN2ZShjb25zdCBjaGFyICpmaWxlbmFtZSxcXG4gXFx0XFx0ICBjb25zdCBjaGFyICpjb25zdCAqYXJndiwgY29uc3QgY2hhciAqY29uc3QgKmVudnApO1xcbiBcXG4rY2hhciAqcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSwgY29uc3QgY2hhciAqZWxmX2ludGVycHJldGVyKTtcXG4rXFxuICNlbmRpZiAvKiBfTElOVVhfQklORk1UU19IICovXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL01ha2VmaWxlXFxuaW5kZXggNDVhM2NmYzQzNWNmZDcuLjVlMmUzMDVjYjBiYjY4IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvTWFrZWZpbGVcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL01ha2VmaWxlXFxuQEAgLTEwLDkgKzEwLDkgQEAgQUxJR05fUElFUyAgICAgICAgOj0gJChwYXRzdWJzdCAlLGxvYWRfYWRkcmVzcy4lLCQoQUxJR05TKSlcXG4gQUxJR05fU1RBVElDX1BJRVMgOj0gJChwYXRzdWJzdCAlLGxvYWRfYWRkcmVzcy5zdGF0aWMuJSwkKEFMSUdOUykpXFxuIEFMSUdOTUVOVF9URVNUUyAgIDo9ICQoQUxJR05fUElFUykgJChBTElHTl9TVEFUSUNfUElFUylcXG4gXFxuLVRFU1RfUFJPR1MgOj0gYmluZm10X3NjcmlwdC5weSBjaGVjay1leGVjLXRlc3RzLnNoXFxuLVRFU1RfR0VOX1BST0dTIDo9IGV4ZWN2ZWF0IG5vbi1yZWd1bGFyICQoQUxJR05NRU5UX1RFU1RTKVxcbi1URVNUX0dFTl9QUk9HU19FWFRFTkRFRCA6PSBmYWxzZSBpbmMgc2V0LWV4ZWMgc2NyaXB0LWV4ZWMuaW5jIHNjcmlwdC1ub2V4ZWMuaW5jXFxuK1RFU1RfUFJPR1MgOj0gYmluZm10X3NjcmlwdC5weSBjaGVjay1leGVjLXRlc3RzLnNoIG9yaWdpbl9pbnRlcnAuc2hcXG4rVEVTVF9HRU5fUFJPR1MgOj0gZXhlY3ZlYXQgbm9uLXJlZ3VsYXIgJChBTElHTk1FTlRfVEVTVFMpIHRlc3RfcHJvZ1xcbitURVNUX0dFTl9QUk9HU19FWFRFTkRFRCA6PSBmYWxzZSBpbmMgc2V0LWV4ZWMgc2NyaXB0LWV4ZWMuaW5jIHNjcmlwdC1ub2V4ZWMuaW5jIG1vY2tfaW50ZXJwXFxuIFRFU1RfR0VOX0ZJTEVTIDo9IGV4ZWN2ZWF0LnN5bWxpbmsgZXhlY3ZlYXQuZGVuYXR1cmVkIHNjcmlwdCBzdWJkaXJcXG4gIyBNYWtlZmlsZSBpcyBhIHJ1bi10aW1lIGRlcGVuZGVuY3ksIHNpbmNlIGl0J3MgYWNjZXNzZWQgYnkgdGhlIGV4ZWN2ZWF0IHRlc3RcXG4gVEVTVF9GSUxFUyA6PSBNYWtlZmlsZVxcbkBAIC01NSwzICs1NSw5IEBAICQoT1VUUFVUKS9zY3JpcHQtZXhlYy5pbmM6ICQoQ0hFQ0tfRVhFQ19TQU1QTEVTKS9zY3JpcHQtZXhlYy5pbmNcXG4gXFx0Y3AgJFxcdTAwM2MgJEBcXG4gJChPVVRQVVQpL3NjcmlwdC1ub2V4ZWMuaW5jOiAkKENIRUNLX0VYRUNfU0FNUExFUykvc2NyaXB0LW5vZXhlYy5pbmNcXG4gXFx0Y3AgJFxcdTAwM2MgJEBcXG4rXFxuKyQoT1VUUFVUKS9tb2NrX2ludGVycDogbW9ja19pbnRlcnAuY1xcbitcXHQkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAtc3RhdGljIC1ub3N0ZGxpYiAtaW5jbHVkZSAuLi8uLi8uLi9pbmNsdWRlL25vbGliYy9ub2xpYmMuaCAkXFx1MDAzYyAtbyAkQFxcbitcXG4rJChPVVRQVVQpL3Rlc3RfcHJvZzogdGVzdF9wcm9nLmMgJChPVVRQVVQpL21vY2tfaW50ZXJwXFxuK1xcdCQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpIC1XbCwtZHluYW1pYy1saW5rZXIsJyQkT1JJR0lOL21vY2tfaW50ZXJwJyAkXFx1MDAzYyAtbyAkQFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL21vY2tfaW50ZXJwLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL21vY2tfaW50ZXJwLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi45YzljYTEwOTgxY2NmZlxcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL21vY2tfaW50ZXJwLmNcXG5AQCAtMCwwICsxLDYgQEBcXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4raW50IG1haW4odm9pZClcXG4re1xcbitcXHR3cml0ZSgxLCBcXFwiSGVsbG8gZnJvbSBtb2NrIGludGVycHJldGVyIVxcXFxuXFxcIiwgMjkpO1xcbitcXHRyZXR1cm4gNDI7XFxuK31cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9vcmlnaW5faW50ZXJwLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9vcmlnaW5faW50ZXJwLnNoXFxubmV3IGZpbGUgbW9kZSAxMDA3NTVcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNjM1YTQwODM5ODAyNTFcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9vcmlnaW5faW50ZXJwLnNoXFxuQEAgLTAsMCArMSwxNiBAQFxcbisjIS9iaW4vc2hcXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbitcXG4rIyBFeGVjdXRlIHRoZSB0ZXN0IHByb2dyYW0gd2hpY2ggaGFzIGl0cyBpbnRlcnByZXRlciBzZXQgdG8gJE9SSUdJTi9tb2NrX2ludGVycFxcbisjIE5vdGUgdGhhdCBtb2NrX2ludGVycCBtdXN0IGJlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cXG4rZGlyPSQoZGlybmFtZSBcXFwiJDBcXFwiKVxcbitvdXQ9JChcXFwiJGRpclxcXCIvdGVzdF9wcm9nIDJcXHUwMDNlXFx1MDAyNjEpXFxuK2V4aXRfY29kZT0kP1xcbitcXG4raWYgWyAkZXhpdF9jb2RlIC1lcSA0MiBdIFxcdTAwMjZcXHUwMDI2IFsgXFxcIiRvdXRcXFwiID0gXFxcIkhlbGxvIGZyb20gbW9jayBpbnRlcnByZXRlciFcXFwiIF07IHRoZW5cXG4rXFx0ZWNobyBcXFwib3JpZ2luX2ludGVycDogUEFTU1xcXCJcXG4rXFx0ZXhpdCAwXFxuK2Vsc2VcXG4rXFx0ZWNobyBcXFwib3JpZ2luX2ludGVycDogRkFJTCAoZXhpdF9jb2RlPSRleGl0X2NvZGUsIG91dHB1dD0nJG91dCcpXFxcIlxcbitcXHRleGl0IDFcXG4rZmlcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy90ZXN0X3Byb2cuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvdGVzdF9wcm9nLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi40NTE2MTRkZWYzZGIxY1xcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL3Rlc3RfcHJvZy5jXFxuQEAgLTAsMCArMSw1IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuK2ludCBtYWluKHZvaWQpXFxuK3tcXG4rXFx0cmV0dXJuIDA7IC8qIFNob3VsZCBuZXZlciBiZSByZWFjaGVkIGlmIGludGVycHJldGVyIGlzIGxvYWRlZCBpbnN0ZWFkICovXFxuK31cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDQ6NTY6MTAuNjUwMjUyNDM4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDAyNzQ5MTQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCSU5GTVRfRUxGXCIsXG4gICAgXCJCSU5GTVRfRUxGX0ZEUElDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHJlc29sdmluZyAnJE9SSUdJTicgaW4gdGhlIEVMRiBpbnRlcnByZXRlciBwYXRoIGR1cmluZyBleGVjdmUuIFRoaXMgbW9kaWZpZXMgdGhlIGNvcmUgRUxGIGJpbmFyeSBsb2FkaW5nIGxvZ2ljIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGByZXNvbHZlX2VsZl9pbnRlcnByZXRlcmAuIFRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IHBhdGggcmVzb2x1dGlvbiBhbmQgbWVtb3J5IG1hbmFnZW1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjIyZjRlOTUyNGE5NjVkZWQ1NWYwMzZkNmY2MThlNzUyN2QzZjVkYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDIyIDA0OjU2OjA4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvYmluZm10X2VsZi5jIGIvZnMvYmluZm10X2VsZi5jXG5pbmRleCAxNmE1NmI2YjNmNmNhMS4uYWYxMWY5NmFlMzM3MWQgMTAwNjQ0XG4tLS0gYS9mcy9iaW5mbXRfZWxmLmNcbisrKyBiL2ZzL2JpbmZtdF9lbGYuY1xuQEAgLTg3Miw3ICs4NzIsNyBAQCBzdGF0aWMgaW50IGxvYWRfZWxmX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuIFxuIFx0ZWxmX3BwbnQgPSBlbGZfcGhkYXRhO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZWxmX2V4LVx1MDAzZWVfcGhudW07IGkrKywgZWxmX3BwbnQrKykge1xuLVx0XHRjaGFyICplbGZfaW50ZXJwcmV0ZXI7XG4rXHRcdGNoYXIgKmVsZl9pbnRlcnByZXRlciwgKnJlc29sdmVkX2ludGVycDtcbiBcbiBcdFx0aWYgKGVsZl9wcG50LVx1MDAzZXBfdHlwZSA9PSBQVF9HTlVfUFJPUEVSVFkpIHtcbiBcdFx0XHRlbGZfcHJvcGVydHlfcGhkYXRhID0gZWxmX3BwbnQ7XG5AQCAtOTA0LDggKzkwNCwxNSBAQCBzdGF0aWMgaW50IGxvYWRfZWxmX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuIFx0XHRpZiAoZWxmX2ludGVycHJldGVyW2VsZl9wcG50LVx1MDAzZXBfZmlsZXN6IC0gMV0gIT0gJ1xcMCcpXG4gXHRcdFx0Z290byBvdXRfZnJlZV9pbnRlcnA7XG4gXG4tXHRcdGludGVycHJldGVyID0gb3Blbl9leGVjKGVsZl9pbnRlcnByZXRlcik7XG4rXHRcdHJlc29sdmVkX2ludGVycCA9IHJlc29sdmVfZWxmX2ludGVycHJldGVyKGJwcm0sIGVsZl9pbnRlcnByZXRlcik7XG4gXHRcdGtmcmVlKGVsZl9pbnRlcnByZXRlcik7XG4rXHRcdGlmIChJU19FUlIocmVzb2x2ZWRfaW50ZXJwKSkge1xuK1x0XHRcdHJldHZhbCA9IFBUUl9FUlIocmVzb2x2ZWRfaW50ZXJwKTtcbitcdFx0XHRnb3RvIG91dF9mcmVlX3BoO1xuK1x0XHR9XG4rXG4rXHRcdGludGVycHJldGVyID0gb3Blbl9leGVjKHJlc29sdmVkX2ludGVycCk7XG4rXHRcdGtmcmVlKHJlc29sdmVkX2ludGVycCk7XG4gXHRcdHJldHZhbCA9IFBUUl9FUlIoaW50ZXJwcmV0ZXIpO1xuIFx0XHRpZiAoSVNfRVJSKGludGVycHJldGVyKSlcbiBcdFx0XHRnb3RvIG91dF9mcmVlX3BoO1xuZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9lbGZfZmRwaWMuYyBiL2ZzL2JpbmZtdF9lbGZfZmRwaWMuY1xuaW5kZXggN2UzMTA4NDg5YzgzY2EuLmU4NTcyN2Q3MTJlMzgxIDEwMDY0NFxuLS0tIGEvZnMvYmluZm10X2VsZl9mZHBpYy5jXG4rKysgYi9mcy9iaW5mbXRfZWxmX2ZkcGljLmNcbkBAIC0yMzAsNyArMjMwLDkgQEAgc3RhdGljIGludCBsb2FkX2VsZl9mZHBpY19iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGV4ZWNfcGFyYW1zLmhkci5lX3BobnVtOyBpKyssIHBoZHIrKykge1xuIFx0XHRzd2l0Y2ggKHBoZHItXHUwMDNlcF90eXBlKSB7XG4tXHRcdGNhc2UgUFRfSU5URVJQOlxuK1x0XHRjYXNlIFBUX0lOVEVSUDoge1xuK1x0XHRcdGNoYXIgKnJlc29sdmVkX2ludGVycDtcbitcbiBcdFx0XHRyZXR2YWwgPSAtRU5PTUVNO1xuIFx0XHRcdGlmIChwaGRyLVx1MDAzZXBfZmlsZXN6IFx1MDAzZSBQQVRIX01BWClcbiBcdFx0XHRcdGdvdG8gZXJyb3I7XG5AQCAtMjU5LDcgKzI2MSwxNSBAQCBzdGF0aWMgaW50IGxvYWRfZWxmX2ZkcGljX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuIFx0XHRcdGtkZWJ1ZyhcIlVzaW5nIEVMRiBpbnRlcnByZXRlciAlc1wiLCBpbnRlcnByZXRlcl9uYW1lKTtcbiBcbiBcdFx0XHQvKiByZXBsYWNlIHRoZSBwcm9ncmFtIHdpdGggdGhlIGludGVycHJldGVyICovXG4tXHRcdFx0aW50ZXJwcmV0ZXIgPSBvcGVuX2V4ZWMoaW50ZXJwcmV0ZXJfbmFtZSk7XG4rXHRcdFx0cmVzb2x2ZWRfaW50ZXJwID0gcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIoYnBybSwgaW50ZXJwcmV0ZXJfbmFtZSk7XG4rXHRcdFx0a2ZyZWUoaW50ZXJwcmV0ZXJfbmFtZSk7XG4rXHRcdFx0aWYgKElTX0VSUihyZXNvbHZlZF9pbnRlcnApKSB7XG4rXHRcdFx0XHRyZXR2YWwgPSBQVFJfRVJSKHJlc29sdmVkX2ludGVycCk7XG4rXHRcdFx0XHRnb3RvIGVycm9yO1xuK1x0XHRcdH1cbitcbitcdFx0XHRpbnRlcnByZXRlciA9IG9wZW5fZXhlYyhyZXNvbHZlZF9pbnRlcnApO1xuK1x0XHRcdGtmcmVlKHJlc29sdmVkX2ludGVycCk7XG4gXHRcdFx0cmV0dmFsID0gUFRSX0VSUihpbnRlcnByZXRlcik7XG4gXHRcdFx0aWYgKElTX0VSUihpbnRlcnByZXRlcikpIHtcbiBcdFx0XHRcdGludGVycHJldGVyID0gTlVMTDtcbkBAIC0yODQsNiArMjk0LDcgQEAgc3RhdGljIGludCBsb2FkX2VsZl9mZHBpY19iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbiBcbiBcdFx0XHRpbnRlcnBfcGFyYW1zLmhkciA9ICooKHN0cnVjdCBlbGZoZHIgKikgYnBybS1cdTAwM2VidWYpO1xuIFx0XHRcdGJyZWFrO1xuK1x0XHR9XG4gXG4gXHRcdGNhc2UgUFRfTE9BRDpcbiAjaWZkZWYgQ09ORklHX01NVVxuZGlmZiAtLWdpdCBhL2ZzL2V4ZWMuYyBiL2ZzL2V4ZWMuY1xuaW5kZXggYjkyZmU3ZGIxNzZjZmYuLjA5NzhhZTYxMzA0YTk0IDEwMDY0NFxuLS0tIGEvZnMvZXhlYy5jXG4rKysgYi9mcy9leGVjLmNcbkBAIC0yMDI0LDYgKzIwMjQsNDggQEAgc3RhdGljIGludCBfX2luaXQgaW5pdF9mc19leGVjX3N5c2N0bHModm9pZClcbiBmc19pbml0Y2FsbChpbml0X2ZzX2V4ZWNfc3lzY3Rscyk7XG4gI2VuZGlmIC8qIENPTkZJR19TWVNDVEwgKi9cbiBcbitjaGFyICpyZXNvbHZlX2VsZl9pbnRlcnByZXRlcihzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLCBjb25zdCBjaGFyICplbGZfaW50ZXJwcmV0ZXIpXG4re1xuK1x0Y2hhciAqcGF0aGJ1ZiwgKnBhdGgsICpzbGFzaCwgKnJlc29sdmVkO1xuK1xuK1x0aWYgKHN0cm5jbXAoZWxmX2ludGVycHJldGVyLCBcIiRPUklHSU5cIiwgNykgIT0gMCkge1xuK1x0XHRjaGFyICpyZXQgPSBrc3RyZHVwKGVsZl9pbnRlcnByZXRlciwgR0ZQX0tFUk5FTCk7XG4rXG4rXHRcdHJldHVybiByZXQgPyByZXQgOiBFUlJfUFRSKC1FTk9NRU0pO1xuK1x0fVxuK1xuK1x0cGF0aGJ1ZiA9IGttYWxsb2MoUEFUSF9NQVgsIEdGUF9LRVJORUwpO1xuK1x0aWYgKCFwYXRoYnVmKVxuK1x0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbitcbitcdHBhdGggPSBmaWxlX3BhdGgoYnBybS1cdTAwM2VmaWxlLCBwYXRoYnVmLCBQQVRIX01BWCk7XG4rXHRpZiAoSVNfRVJSKHBhdGgpKSB7XG4rXHRcdGtmcmVlKHBhdGhidWYpO1xuK1x0XHRyZXR1cm4gKGNoYXIgKilwYXRoO1xuK1x0fVxuK1xuK1x0c2xhc2ggPSBzdHJyY2hyKHBhdGgsICcvJyk7XG4rXHRpZiAoc2xhc2gpIHtcbitcdFx0aWYgKHNsYXNoID09IHBhdGgpXG4rXHRcdFx0KihzbGFzaCArIDEpID0gJ1xcMCc7XG4rXHRcdGVsc2VcbitcdFx0XHQqc2xhc2ggPSAnXFwwJztcbitcdH0gZWxzZSB7XG4rXHRcdGtmcmVlKHBhdGhidWYpO1xuK1x0XHRjaGFyICpyZXQgPSBrc3RyZHVwKGVsZl9pbnRlcnByZXRlciwgR0ZQX0tFUk5FTCk7XG4rXG4rXHRcdHJldHVybiByZXQgPyByZXQgOiBFUlJfUFRSKC1FTk9NRU0pO1xuK1x0fVxuK1xuK1x0cmVzb2x2ZWQgPSBrYXNwcmludGYoR0ZQX0tFUk5FTCwgXCIlcyVzXCIsIHBhdGgsIGVsZl9pbnRlcnByZXRlciArIDcpO1xuK1x0a2ZyZWUocGF0aGJ1Zik7XG4rXHRpZiAoIXJlc29sdmVkKVxuK1x0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbitcbitcdHJldHVybiByZXNvbHZlZDtcbit9XG4rRVhQT1JUX1NZTUJPTChyZXNvbHZlX2VsZl9pbnRlcnByZXRlcik7XG4rXG4gI2lmZGVmIENPTkZJR19FWEVDX0tVTklUX1RFU1RcbiAjaW5jbHVkZSBcInRlc3RzL2V4ZWNfa3VuaXQuY1wiXG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvZnMvdGVzdHMvZXhlY19rdW5pdC5jIGIvZnMvdGVzdHMvZXhlY19rdW5pdC5jXG5pbmRleCAxYzMyY2FjMDk4Y2Y1MS4uOTkxYjlhYmFkM2VlZGYgMTAwNjQ0XG4tLS0gYS9mcy90ZXN0cy9leGVjX2t1bml0LmNcbisrKyBiL2ZzL3Rlc3RzL2V4ZWNfa3VuaXQuY1xuQEAgLTExOSw4ICsxMTksMzQgQEAgc3RhdGljIHZvaWQgZXhlY190ZXN0X2Jwcm1fc3RhY2tfbGltaXRzKHN0cnVjdCBrdW5pdCAqdGVzdClcbiBcdH1cbiB9XG4gXG4rc3RhdGljIHZvaWQgZXhlY190ZXN0X3Jlc29sdmVfZWxmX2ludGVycHJldGVyKHN0cnVjdCBrdW5pdCAqdGVzdClcbit7XG4rXHRzdHJ1Y3QgbGludXhfYmlucHJtIGJwcm0gPSB7IC5maWxlID0gTlVMTCB9O1xuK1x0c3RydWN0IGZpbGUgKmY7XG4rXHRjaGFyICpyZXNvbHZlZDtcbitcbitcdC8vIFRlc3QgMTogTm9uLSRPUklHSU4gaW50ZXJwcmV0ZXIgcGF0aCBzaG91bGQganVzdCBiZSBkdXBsaWNhdGVkXG4rXHRyZXNvbHZlZCA9IHJlc29sdmVfZWxmX2ludGVycHJldGVyKFx1MDAyNmJwcm0sIFwiL2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yXCIpO1xuK1x0S1VOSVRfQVNTRVJUX05PVF9FUlJfT1JfTlVMTCh0ZXN0LCByZXNvbHZlZCk7XG4rXHRLVU5JVF9FWFBFQ1RfU1RSRVEodGVzdCwgcmVzb2x2ZWQsIFwiL2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yXCIpO1xuK1x0a2ZyZWUocmVzb2x2ZWQpO1xuK1xuK1x0Ly8gVGVzdCAyOiAkT1JJR0lOIGludGVycHJldGVyIHBhdGhcbitcdGYgPSBmaWxwX29wZW4oXCIvXCIsIE9fUkRPTkxZLCAwKTtcbitcdEtVTklUX0FTU0VSVF9OT1RfRVJSX09SX05VTEwodGVzdCwgZik7XG4rXHRicHJtLmZpbGUgPSBmO1xuK1xuK1x0cmVzb2x2ZWQgPSByZXNvbHZlX2VsZl9pbnRlcnByZXRlcihcdTAwMjZicHJtLCBcIiRPUklHSU4vLi4vbGliL2xkLnNvXCIpO1xuK1x0S1VOSVRfQVNTRVJUX05PVF9FUlJfT1JfTlVMTCh0ZXN0LCByZXNvbHZlZCk7XG4rXHRLVU5JVF9FWFBFQ1RfU1RSRVEodGVzdCwgcmVzb2x2ZWQsIFwiLy8uLi9saWIvbGQuc29cIik7XG4rXHRrZnJlZShyZXNvbHZlZCk7XG4rXG4rXHRmaWxwX2Nsb3NlKGYsIE5VTEwpO1xuK31cbitcbiBzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgZXhlY190ZXN0X2Nhc2VzW10gPSB7XG4gXHRLVU5JVF9DQVNFKGV4ZWNfdGVzdF9icHJtX3N0YWNrX2xpbWl0cyksXG4rXHRLVU5JVF9DQVNFKGV4ZWNfdGVzdF9yZXNvbHZlX2VsZl9pbnRlcnByZXRlciksXG4gXHR7fSxcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYmluZm10cy5oIGIvaW5jbHVkZS9saW51eC9iaW5mbXRzLmhcbmluZGV4IDJjNzdlMzgzZTczNzU3Li4xNzQxOWNkM2RiYzczMyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYmluZm10cy5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaFxuQEAgLTE1MCw0ICsxNTAsNiBAQCBleHRlcm4gc3NpemVfdCByZWFkX2NvZGUoc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgbG9uZywgbG9mZl90LCBzaXplX3QpO1xuIGludCBrZXJuZWxfZXhlY3ZlKGNvbnN0IGNoYXIgKmZpbGVuYW1lLFxuIFx0XHQgIGNvbnN0IGNoYXIgKmNvbnN0ICphcmd2LCBjb25zdCBjaGFyICpjb25zdCAqZW52cCk7XG4gXG4rY2hhciAqcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSwgY29uc3QgY2hhciAqZWxmX2ludGVycHJldGVyKTtcbitcbiAjZW5kaWYgLyogX0xJTlVYX0JJTkZNVFNfSCAqL1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL01ha2VmaWxlXG5pbmRleCA0NWEzY2ZjNDM1Y2ZkNy4uNWUyZTMwNWNiMGJiNjggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL01ha2VmaWxlXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL01ha2VmaWxlXG5AQCAtMTAsOSArMTAsOSBAQCBBTElHTl9QSUVTICAgICAgICA6PSAkKHBhdHN1YnN0ICUsbG9hZF9hZGRyZXNzLiUsJChBTElHTlMpKVxuIEFMSUdOX1NUQVRJQ19QSUVTIDo9ICQocGF0c3Vic3QgJSxsb2FkX2FkZHJlc3Muc3RhdGljLiUsJChBTElHTlMpKVxuIEFMSUdOTUVOVF9URVNUUyAgIDo9ICQoQUxJR05fUElFUykgJChBTElHTl9TVEFUSUNfUElFUylcbiBcbi1URVNUX1BST0dTIDo9IGJpbmZtdF9zY3JpcHQucHkgY2hlY2stZXhlYy10ZXN0cy5zaFxuLVRFU1RfR0VOX1BST0dTIDo9IGV4ZWN2ZWF0IG5vbi1yZWd1bGFyICQoQUxJR05NRU5UX1RFU1RTKVxuLVRFU1RfR0VOX1BST0dTX0VYVEVOREVEIDo9IGZhbHNlIGluYyBzZXQtZXhlYyBzY3JpcHQtZXhlYy5pbmMgc2NyaXB0LW5vZXhlYy5pbmNcbitURVNUX1BST0dTIDo9IGJpbmZtdF9zY3JpcHQucHkgY2hlY2stZXhlYy10ZXN0cy5zaCBvcmlnaW5faW50ZXJwLnNoXG4rVEVTVF9HRU5fUFJPR1MgOj0gZXhlY3ZlYXQgbm9uLXJlZ3VsYXIgJChBTElHTk1FTlRfVEVTVFMpIHRlc3RfcHJvZ1xuK1RFU1RfR0VOX1BST0dTX0VYVEVOREVEIDo9IGZhbHNlIGluYyBzZXQtZXhlYyBzY3JpcHQtZXhlYy5pbmMgc2NyaXB0LW5vZXhlYy5pbmMgbW9ja19pbnRlcnBcbiBURVNUX0dFTl9GSUxFUyA6PSBleGVjdmVhdC5zeW1saW5rIGV4ZWN2ZWF0LmRlbmF0dXJlZCBzY3JpcHQgc3ViZGlyXG4gIyBNYWtlZmlsZSBpcyBhIHJ1bi10aW1lIGRlcGVuZGVuY3ksIHNpbmNlIGl0J3MgYWNjZXNzZWQgYnkgdGhlIGV4ZWN2ZWF0IHRlc3RcbiBURVNUX0ZJTEVTIDo9IE1ha2VmaWxlXG5AQCAtNTUsMyArNTUsOSBAQCAkKE9VVFBVVCkvc2NyaXB0LWV4ZWMuaW5jOiAkKENIRUNLX0VYRUNfU0FNUExFUykvc2NyaXB0LWV4ZWMuaW5jXG4gXHRjcCAkXHUwMDNjICRAXG4gJChPVVRQVVQpL3NjcmlwdC1ub2V4ZWMuaW5jOiAkKENIRUNLX0VYRUNfU0FNUExFUykvc2NyaXB0LW5vZXhlYy5pbmNcbiBcdGNwICRcdTAwM2MgJEBcbitcbiskKE9VVFBVVCkvbW9ja19pbnRlcnA6IG1vY2tfaW50ZXJwLmNcbitcdCQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpIC1zdGF0aWMgLW5vc3RkbGliIC1pbmNsdWRlIC4uLy4uLy4uL2luY2x1ZGUvbm9saWJjL25vbGliYy5oICRcdTAwM2MgLW8gJEBcbitcbiskKE9VVFBVVCkvdGVzdF9wcm9nOiB0ZXN0X3Byb2cuYyAkKE9VVFBVVCkvbW9ja19pbnRlcnBcbitcdCQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpIC1XbCwtZHluYW1pYy1saW5rZXIsJyQkT1JJR0lOL21vY2tfaW50ZXJwJyAkXHUwMDNjIC1vICRAXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9tb2NrX2ludGVycC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9tb2NrX2ludGVycC5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjljOWNhMTA5ODFjY2ZmXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL21vY2tfaW50ZXJwLmNcbkBAIC0wLDAgKzEsNiBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4raW50IG1haW4odm9pZClcbit7XG4rXHR3cml0ZSgxLCBcIkhlbGxvIGZyb20gbW9jayBpbnRlcnByZXRlciFcXG5cIiwgMjkpO1xuK1x0cmV0dXJuIDQyO1xuK31cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL29yaWdpbl9pbnRlcnAuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL29yaWdpbl9pbnRlcnAuc2hcbm5ldyBmaWxlIG1vZGUgMTAwNzU1XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNjM1YTQwODM5ODAyNTFcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvb3JpZ2luX2ludGVycC5zaFxuQEAgLTAsMCArMSwxNiBAQFxuKyMhL2Jpbi9zaFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbitcbisjIEV4ZWN1dGUgdGhlIHRlc3QgcHJvZ3JhbSB3aGljaCBoYXMgaXRzIGludGVycHJldGVyIHNldCB0byAkT1JJR0lOL21vY2tfaW50ZXJwXG4rIyBOb3RlIHRoYXQgbW9ja19pbnRlcnAgbXVzdCBiZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4rZGlyPSQoZGlybmFtZSBcIiQwXCIpXG4rb3V0PSQoXCIkZGlyXCIvdGVzdF9wcm9nIDJcdTAwM2VcdTAwMjYxKVxuK2V4aXRfY29kZT0kP1xuK1xuK2lmIFsgJGV4aXRfY29kZSAtZXEgNDIgXSBcdTAwMjZcdTAwMjYgWyBcIiRvdXRcIiA9IFwiSGVsbG8gZnJvbSBtb2NrIGludGVycHJldGVyIVwiIF07IHRoZW5cbitcdGVjaG8gXCJvcmlnaW5faW50ZXJwOiBQQVNTXCJcbitcdGV4aXQgMFxuK2Vsc2VcbitcdGVjaG8gXCJvcmlnaW5faW50ZXJwOiBGQUlMIChleGl0X2NvZGU9JGV4aXRfY29kZSwgb3V0cHV0PSckb3V0JylcIlxuK1x0ZXhpdCAxXG4rZmlcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL3Rlc3RfcHJvZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy90ZXN0X3Byb2cuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi40NTE2MTRkZWYzZGIxY1xuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy90ZXN0X3Byb2cuY1xuQEAgLTAsMCArMSw1IEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbitpbnQgbWFpbih2b2lkKVxuK3tcbitcdHJldHVybiAwOyAvKiBTaG91bGQgbmV2ZXIgYmUgcmVhY2hlZCBpZiBpbnRlcnByZXRlciBpcyBsb2FkZWQgaW5zdGVhZCAqL1xuK31cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA0OjU2OjEwLjY1MDI1MzkzOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3NTQ0NDE3NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2VybmVsIEVMRiBJbnRlcnByZXRlciBQYXRoIFJlc29sdXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGluIGZyb250IG9mIG1lIHRoYXQgdG91Y2hlcyBzb21lIHByZXR0eSBjcnVjaWFsIGNvZGU6IGBmcy9iaW5mbXRfZWxmLmNgLCBgZnMvYmluZm10X2VsZl9mZHBpYy5jYCwgYW5kIGBmcy9leGVjLmNgLiBSaWdodCBhd2F5LCB0aGUgbWVudGlvbiBvZiBgZXhlY3ZlYCBoYXMgbXkgYXR0ZW50aW9uIOKAkyB0aGF0J3MgZGVmaW5pdGVseSBhIGNvcmUga2VybmVsIHBhdGguIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiwgYHJlc29sdmVfZWxmX2ludGVycHJldGVyYCwgYW5kIGZyb20gdGhlIGRlc2NyaXB0aW9uLCBpdCdzIGZvY3VzZWQgb24gcmVzb2x2aW5nIGAkT1JJR0lOYCB3aXRoaW4gdGhlIEVMRiBpbnRlcnByZXRlciBwYXRoLiBUaGlzIGlzIGZ1bmN0aW9uYWwsIGl04oCZcyBpbiB0aGUgYGV4ZWN2ZWAgcGF0aCwgd2hpY2ggbWVhbnMgaXQncyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBuZWVkIHRvIGZ1enouXG5cbkxldCdzIGRpdmUgZGVlcGVyIGludG8gdGhlIGNvZGUuIEl0IGxvb2tzIGxpa2UgYHJlc29sdmVfZWxmX2ludGVycHJldGVyYCBpcyBnZXR0aW5nIGFkZGVkIHRvIGBmcy9leGVjLmNgIGFuZCB0aGVuIGV4cG9ydGVkLiBUaGUga2V5IHBhcnQgaXMgdGhhdCBpdCdzIGJlaW5nICpjYWxsZWQqIGZyb20gYGxvYWRfZWxmX2JpbmFyeWAgaW4gYGZzL2JpbmZtdF9lbGYuY2AgYW5kIGBsb2FkX2VsZl9mZHBpY19iaW5hcnlgIGluIGBmcy9iaW5mbXRfZWxmX2ZkcGljLmNgLiBUaGF0IHRlbGxzIG1lIGhvdyBpdCdzIGludGVncmF0ZWQgaW50byB0aGUgZXhpc3RpbmcgRUxGIGxvYWRpbmcgcHJvY2Vzcy5cblxuTmV4dCwgSSBuZWVkIHRvIGNoZWNrIGZvciBhbnkgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIE9rYXksIGBmcy9iaW5mbXRfZWxmLmNgIGlzIGNvbmRpdGlvbmFsIG9uIGBDT05GSUdfQklORk1UX0VMRmAsIGBmcy9iaW5mbXRfZWxmX2ZkcGljLmNgIGRlcGVuZHMgb24gYENPTkZJR19CSU5GTVRfRUxGX0ZEUElDYCwgYnV0IGBmcy9leGVjLmNgIGFuZCB0aGUgbmV3IGZ1bmN0aW9uIGFyZSBhbHdheXMgY29tcGlsZWQuIEl0IHNlZW1zIHRoZSBuZXcgZnVuY3Rpb24gaXMgYWx3YXlzIGF2YWlsYWJsZSwgYnV0IGRlcGVuZGVudCBvbiB0aGUgRUxGIGJpbmFyeSBzdXBwb3J0LiBTbyB0aGF0IGFmZmVjdHMgdGhlIHNjb3BlIG9mIHRoZSB0ZXN0cy4gTm93IEkgbmVlZCB0byB2ZXJpZnkgd2hpY2ggY29uZmlncyBhcmUgYWN0dWFsbHkgZW5hYmxlZCB0byBkZWNpZGUgd2hhdCB0byBjb25jZW50cmF0ZSBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA2MywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA0OjU2OjE2LjQwNDY5ODgxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyMTkzNTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJJTkZNVF9FTEZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvTWFrZWZpbGU9MzY9b2JqLSQoQ09ORklHX0JJTkZNVF9TQ1JJUFQpXFx0Kz0gYmluZm10X3NjcmlwdC5vXFxuZnMvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX0JJTkZNVF9FTEYpXFx0Kz0gYmluZm10X2VsZi5vXFxuZnMvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX0NPTVBBVF9CSU5GTVRfRUxGKVxcdCs9IGNvbXBhdF9iaW5mbXRfZWxmLm9cXG5mcy9NYWtlZmlsZTozOTpvYmotJChDT05GSUdfQklORk1UX0VMRl9GRFBJQylcXHQrPSBiaW5mbXRfZWxmX2ZkcGljLm9cXG5mcy9NYWtlZmlsZS00MC1vYmotJChDT05GSUdfQklORk1UX0ZMQVQpXFx0Kz0gYmluZm10X2ZsYXQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNDo1NjoxNi40OTY5MDEwNjhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTcyNTcxNzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipFTEYgYW5kIEZEUElDOiBDb25maWd1cmF0aW9uIENvbnVuZHJ1bXMqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZm9jdXNpbmcgb24gRUxGIGJpbmFyaWVzLCBzcGVjaWZpY2FsbHkgdGhlIGZsZXhpYmxlIFBJQyB2YXJpYW50LCBgQ09ORklHX0JJTkZNVF9FTEZfRkRQSUNgLiBJdCdzIHByZXR0eSBjbGVhciB0aGF0IGBDT05GSUdfQklORk1UX0VMRmAgaXMgdGhlIGNvcmUsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhhdCBhbmQgYENPTkZJR19CSU5GTVRfRUxGX0ZEUElDYCBtb3JlIGdyYW51bGFybHkuIFRoZSBxdWVzdGlvbiBub3cgYmVjb21lczogaXMgRkRQSUMgdW5pdmVyc2FsbHkgYXZhaWxhYmxlLCBvciBkb2VzIGl0cyBwcmVzZW5jZSBkZXBlbmQgb24gc29tZSBhcmNoaXRlY3R1cmFsIGZlYXR1cmUgb3Igb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb24/IEkgbmVlZCB0byBkaWcgaW50byB0aGUgS2NvbmZpZyBmaWxlcywgb3IgcGVyaGFwcyBzb21lIHJlbGV2YW50IGRvY3VtZW50YXRpb24sIHRvIGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBkZXBlbmRlbmNpZXMgb3Igb3RoZXIgcHJlcmVxdWlzaXRlcyB0aGF0IGdvdmVybiB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc3BlY2lmaWMgRkRQSUMgY29uZmlndXJhdGlvbiBvcHRpb24uIFRoaXMgY291bGQgYmUgY3J1Y2lhbCBmb3IgcG9ydGluZyBvciBjdXN0b21pemluZyB0aGUga2VybmVsJ3MgYmluYXJ5IGxvYWRpbmcgY2FwYWJpbGl0aWVzLiBMZXQncyBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTA0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDQ6NTY6MjAuNjY5NDc1NDkyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDI0ODMxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQklORk1UX0VMRl9GRFBJQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9LY29uZmlnLmJpbmZtdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9LY29uZmlnLmJpbmZtdD01NT1jb25maWcgQVJDSF9VU0VfR05VX1BST1BFUlRZXFxuLS1cXG5mcy9LY29uZmlnLmJpbmZtdC01Ny1cXG5mcy9LY29uZmlnLmJpbmZtdDo1ODpjb25maWcgQklORk1UX0VMRl9GRFBJQ1xcbmZzL0tjb25maWcuYmluZm10LTU5LVxcdGJvb2wgXFxcIktlcm5lbCBzdXBwb3J0IGZvciBGRFBJQyBFTEYgYmluYXJpZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA0OjU2OjIwLjc3MzcyOTg4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk1NzY2Mjg5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpcyBCSU5GTVRfRUxGX0ZEUElDIGRlcGVuZGVuY3kgYW5hbHlzaXM6XG5cbioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgYEJJTkZNVF9FTEZfRkRQSUNgKipcblxuQWxyaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyB0byBmaWd1cmUgb3V0IHdoYXQgYEJJTkZNVF9FTEZfRkRQSUNgIGFjdHVhbGx5IHJlbGllcyBvbi4gVGhpcyBpcyBnb2luZyB0byBiZSBhIGNydWNpYWwgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIGl0cyBwbGFjZSBpbiB0aGUgYnJvYWRlciBzeXN0ZW0gYW5kIGhvdyBtb2RpZmljYXRpb25zIHRvIHJlbGF0ZWQgY29tcG9uZW50cyBtaWdodCBpbXBhY3QgaXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoaWNoIG90aGVyIG1vZHVsZXMsIGZlYXR1cmVzLCBvciBrZXJuZWwgc3Vic3lzdGVtcyBhcmUgKnByZXJlcXVpc2l0ZXMqIGZvciBgQklORk1UX0VMRl9GRFBJQ2AgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBJcyBpdCBzb21ldGhpbmcgcmVsYXRpdmVseSBzZWxmLWNvbnRhaW5lZCwgb3IgZG9lcyBpdCBoYXZlIGEgbG9uZyBsaXN0IG9mIGRlcGVuZGVuY2llcz8gS25vd2luZyB0aGlzIGxldmVsIG9mIGludGVyY29ubmVjdGl2aXR5IGlzIGtleS4gSSdsbCBuZWVkIHRvIGtub3cgd2hpY2ggcGllY2VzIG9mIHRoZSBFTEYgZm9ybWF0IGl0IHVzZXMgYW5kIHJlbGllcyBvbiwgYW5kIHdoYXQgdGhlIEZEUElDIChQb3NpdGlvbiBJbmRlcGVuZGVudCBDb2RlKSBhZGRzIHRvIHRoZSBtaXguIEZyb20gdGhlcmUgSSdsbCBzdGFydCBsb29raW5nIGF0IHRob3NlIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjI5NSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA0OjU2OjIzLjczMTM5NTE4OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjQ5MDYxNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJJTkZNVF9FTEZfRkRQSUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvS2NvbmZpZy5iaW5mbXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvS2NvbmZpZy5iaW5mbXQ9NTU9Y29uZmlnIEFSQ0hfVVNFX0dOVV9QUk9QRVJUWVxcbi0tXFxuZnMvS2NvbmZpZy5iaW5mbXQtNTctXFxuZnMvS2NvbmZpZy5iaW5mbXQ6NTg6Y29uZmlnIEJJTkZNVF9FTEZfRkRQSUNcXG5mcy9LY29uZmlnLmJpbmZtdC01OS1cXHRib29sIFxcXCJLZXJuZWwgc3VwcG9ydCBmb3IgRkRQSUMgRUxGIGJpbmFyaWVzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNDo1NjoyMy44NTYzMDc2NDZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODQ5NzE3MDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgRGVwZW5kZW5jaWVzOiBLY29uZmlnIEZpcnN0KipcblxuQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoaXMgY29uZmlndXJhdGlvbiwgSSBuZWVkIHRvIHBhdXNlIGFuZCBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBsYW5kc2NhcGUuIEp1bXBpbmcgc3RyYWlnaHQgaW50byB0aGUgY29kZSB3b3VsZCBiZSBhIHJvb2tpZSBtb3ZlLCBlc3BlY2lhbGx5IHdpdGggdGhlIHBvdGVudGlhbCBmb3IgY29tcGxleCBpbnRlcmRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIGNvbnN1bHQgdGhlIEtjb25maWcgZmlsZS4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgY29uZGl0aW9uYWwgbG9naWMgYW5kIGJ1aWxkIG9wdGlvbnMgcmVsYXRlZCB0byB0aGlzIG1vZHVsZSBvciBmZWF0dXJlLiBJdCdzIHRoZSBibHVlcHJpbnQsIHRoZSBkZWNpc2lvbiB0cmVlLiBJ4oCZbGwgY2hlY2sgdGhlIEtjb25maWcsIGFuZCBvbmx5IHRoZW4gd2lsbCBJIGdyYXNwIHRoZSBmdWxsIGltcGFjdCBvZiBhbnkgbW9kaWZpY2F0aW9ucyBJJ20gY29uc2lkZXJpbmcuIFNraXBwaW5nIHRoaXMgc3RlcCBpcyBhc2tpbmcgZm9yIGJ1aWxkIGVycm9ycywgdW5leHBlY3RlZCBiZWhhdmlvciwgYW5kIHVsdGltYXRlbHksIGEgbXVjaCBsb25nZXIgZGVidWdnaW5nIHNlc3Npb24uIExldCdzIHNlZSB3aGF0IHRoYXQgS2NvbmZpZyBoYXMgdG8gc2F5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjU0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDQ6NTY6MjYuNzA2MDI3NDg4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2MjA3NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvS2NvbmZpZy5iaW5mbXRcIixcbiAgXCJGaXJzdExpbmVcIjogNTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNTA6XFx0XFx0Ym9vbFxcbiAgNTE6XFx0XFxuICA1MjpcXHRjb25maWcgQVJDSF9IQVZFX0VMRl9QUk9UXFxuICA1MzpcXHRcXHRib29sXFxuICA1NDpcXHRcXG4gIDU1OlxcdGNvbmZpZyBBUkNIX1VTRV9HTlVfUFJPUEVSVFlcXG4gIDU2OlxcdFxcdGJvb2xcXG4gIDU3OlxcdFxcbiAgNTg6XFx0Y29uZmlnIEJJTkZNVF9FTEZfRkRQSUNcXG4gIDU5OlxcdFxcdGJvb2wgXFxcIktlcm5lbCBzdXBwb3J0IGZvciBGRFBJQyBFTEYgYmluYXJpZXNcXFwiXFxuICA2MDpcXHRcXHRkZWZhdWx0IHkgaWYgIUJJTkZNVF9FTEZcXG4gIDYxOlxcdFxcdGRlcGVuZHMgb24gQVJNIHx8ICgoTTY4SyB8fCBSSVNDViB8fCBTVVBFUkggfHwgWFRFTlNBKSBcXHUwMDI2XFx1MDAyNiAhTU1VKVxcbiAgNjI6XFx0XFx0c2VsZWN0IEVMRkNPUkVcXG4gIDYzOlxcdFxcdGhlbHBcXG4gIDY0OlxcdFxcdCAgRUxGIEZEUElDIGJpbmFyaWVzIGFyZSBiYXNlZCBvbiBFTEYsIGJ1dCBhbGxvdyB0aGUgaW5kaXZpZHVhbCBsb2FkXFxuICA2NTpcXHRcXHQgIHNlZ21lbnRzIG9mIGEgYmluYXJ5IHRvIGJlIGxvY2F0ZWQgaW4gbWVtb3J5IGluZGVwZW5kZW50bHkgb2YgZWFjaFxcbiAgNjY6XFx0XFx0ICBvdGhlci4gVGhpcyBtYWtlcyB0aGlzIGZvcm1hdCBpZGVhbCBmb3IgdXNlIGluIGVudmlyb25tZW50cyB3aGVyZSBub1xcbiAgNjc6XFx0XFx0ICBNTVUgaXMgYXZhaWxhYmxlIGFzIGl0IHN0aWxsIHBlcm1pdHMgdGV4dCBzZWdtZW50cyB0byBiZSBzaGFyZWQsXFxuICA2ODpcXHRcXHQgIGV2ZW4gaWYgZGF0YSBzZWdtZW50cyBhcmUgbm90LlxcbiAgNjk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA0OjU2OjI2LjcwOTY1ODQ1OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODU0NDYwOTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipFTEYgQmluYXJ5IEZvcm1hdCBDb25zaWRlcmF0aW9ucyoqXG5cblJpZ2h0LCBsZXQncyBzZWUuIE15IGluaXRpYWwgdGhvdWdodCBpcyBhYm91dCB0aGF0IGBCSU5GTVRfRUxGX0ZEUElDYCBmZWF0dXJlIOKAkyBJIG5lZWQgdG8gcmVtZW1iZXIgdGhlIGNvbmRpdGlvbnMgZm9yIHRoYXQuIEl0IGxvb2tzIGxpa2UgaXQgaGluZ2VzIG9uIHRoZSBhcmNoaXRlY3R1cmUgYmVpbmcgQVJNLCBvciBpdCBiZWluZyBvbmUgb2YgTTY4SywgUklTQ1YsIFNVUEVSSCwgb3IgWFRFTlNBICp3aXRob3V0KiBhbiBNTVUuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgdGhhdCBpdCdzICpub3QqIGdlbmVyYWxseSBzb21ldGhpbmcgSSdkIGZpbmQgb24geDg2LCB3aGljaCBpcyBpbXBvcnRhbnQgdG8ga2VlcCBpbiBtaW5kLlxuXG5Tbywgc2luY2UgdGhhdCdzIG91dCwgdGhlIHdvcmtob3JzZSBmb3IgYSBsb3Qgb2Ygc3lzdGVtcyBpcyBnb2luZyB0byBiZSBgQklORk1UX0VMRmAuIFRoYXQncyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uLiBJdCdzIHRoZSBzdGFuZGFyZCwgcmlnaHQ/IExldCdzIGRyaWxsIGRvd24gaW50byB0aGF0IG1vZHVsZSBhbmQgc2VlIHdoYXQgdGhlIGVzc2VudGlhbCBkZXRhaWxzIGFyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE1MSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDQ6NTY6MzAuNTY0MTIzMDU5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjIxOTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvS2NvbmZpZy5iaW5mbXRcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdFxcbiAgIDM6XFx0bWVudSBcXFwiRXhlY3V0YWJsZSBmaWxlIGZvcm1hdHNcXFwiXFxuICAgNDpcXHRcXG4gICA1OlxcdGNvbmZpZyBCSU5GTVRfRUxGXFxuICAgNjpcXHRcXHRib29sIFxcXCJLZXJuZWwgc3VwcG9ydCBmb3IgRUxGIGJpbmFyaWVzXFxcIlxcbiAgIDc6XFx0XFx0ZGVwZW5kcyBvbiBNTVVcXG4gICA4OlxcdFxcdHNlbGVjdCBFTEZDT1JFXFxuICAgOTpcXHRcXHRkZWZhdWx0IHlcXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgRUxGIChFeGVjdXRhYmxlIGFuZCBMaW5rYWJsZSBGb3JtYXQpIGlzIGEgZm9ybWF0IGZvciBsaWJyYXJpZXMgYW5kXFxuICAxMjpcXHRcXHQgIGV4ZWN1dGFibGVzIHVzZWQgYWNyb3NzIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzIGFuZCBvcGVyYXRpbmdcXG4gIDEzOlxcdFxcdCAgc3lzdGVtcy4gU2F5aW5nIFkgaGVyZSB3aWxsIGVuYWJsZSB5b3VyIGtlcm5lbCB0byBydW4gRUxGIGJpbmFyaWVzXFxuICAxNDpcXHRcXHQgIGFuZCBlbmxhcmdlIGl0IGJ5IGFib3V0IDEzIEtCLiBFTEYgc3VwcG9ydCB1bmRlciBMaW51eCBoYXMgbm93IGFsbFxcbiAgMTU6XFx0XFx0ICBidXQgcmVwbGFjZWQgdGhlIHRyYWRpdGlvbmFsIExpbnV4IGEub3V0IGZvcm1hdHMgKFFNQUdJQyBhbmQgWk1BR0lDKVxcbiAgMTY6XFx0XFx0ICBiZWNhdXNlIGl0IGlzIHBvcnRhYmxlICh0aGlzIGRvZXMgKm5vdCogbWVhbiB0aGF0IHlvdSB3aWxsIGJlIGFibGVcXG4gIDE3OlxcdFxcdCAgdG8gcnVuIGV4ZWN1dGFibGVzIGZyb20gZGlmZmVyZW50IGFyY2hpdGVjdHVyZXMgb3Igb3BlcmF0aW5nIHN5c3RlbXNcXG4gIDE4OlxcdFxcdCAgaG93ZXZlcikgYW5kIG1ha2VzIGJ1aWxkaW5nIHJ1bi10aW1lIGxpYnJhcmllcyB2ZXJ5IGVhc3kuIE1hbnkgbmV3XFxuICAxOTpcXHRcXHQgIGV4ZWN1dGFibGVzIGFyZSBkaXN0cmlidXRlZCBzb2xlbHkgaW4gRUxGIGZvcm1hdC4gWW91IGRlZmluaXRlbHlcXG4gIDIwOlxcdFxcdCAgd2FudCB0byBzYXkgWSBoZXJlLlxcbiAgMjE6XFx0XFxuICAyMjpcXHRcXHQgIEluZm9ybWF0aW9uIGFib3V0IEVMRiBpcyBjb250YWluZWQgaW4gdGhlIEVMRiBIT1dUTyBhdmFpbGFibGUgZnJvbVxcbiAgMjM6XFx0XFx0ICBcXHUwMDNjaHR0cDovL3d3dy50bGRwLm9yZy9kb2NzLmh0bWwjaG93dG9cXHUwMDNlLlxcbiAgMjQ6XFx0XFxuICAyNTpcXHRcXHQgIElmIHlvdSBmaW5kIHRoYXQgYWZ0ZXIgdXBncmFkaW5nIGZyb20gTGludXgga2VybmVsIDEuMiBhbmQgc2F5aW5nIFlcXG4gIDI2OlxcdFxcdCAgaGVyZSwgeW91IHN0aWxsIGNhbid0IHJ1biBhbnkgRUxGIGJpbmFyaWVzICh0aGV5IGp1c3QgY3Jhc2gpLCB0aGVuXFxuICAyNzpcXHRcXHQgIHlvdSdsbCBoYXZlIHRvIGluc3RhbGwgdGhlIG5ld2VzdCBFTEYgcnVudGltZSBsaWJyYXJpZXMsIGluY2x1ZGluZ1xcbiAgMjg6XFx0XFx0ICBsZC5zbyAoY2hlY2sgdGhlIGZpbGUgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9DaGFuZ2VzXFx1MDAzZSBmb3IgbG9jYXRpb24gYW5kXFxuICAyOTpcXHRcXHQgIGxhdGVzdCB2ZXJzaW9uKS5cXG4gIDMwOlxcdFxcbiAgMzE6XFx0Y29uZmlnIEJJTkZNVF9FTEZfS1VOSVRfVEVTVFxcbiAgMzI6XFx0XFx0Ym9vbCBcXFwiQnVpbGQgS1VuaXQgdGVzdHMgZm9yIEVMRiBiaW5hcnkgc3VwcG9ydFxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbiAgMzM6XFx0XFx0ZGVwZW5kcyBvbiBLVU5JVD15IFxcdTAwMjZcXHUwMDI2IEJJTkZNVF9FTEY9eVxcbiAgMzQ6XFx0XFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4gIDM1OlxcdFxcdGhlbHBcXG4gIDM2OlxcdFxcdCAgVGhpcyBidWlsZHMgdGhlIEVMRiBsb2FkZXIgS1VuaXQgdGVzdHMsIHdoaWNoIHRyeSB0byBnYXRoZXJcXG4gIDM3OlxcdFxcdCAgcHJpb3IgYnVnIGZpeGVzIGludG8gYSByZWdyZXNzaW9uIHRlc3QgY29sbGVjdGlvbi4gVGhpcyBpcyByZWFsbHlcXG4gIDM4OlxcdFxcdCAgb25seSBuZWVkZWQgZm9yIGRlYnVnZ2luZy4gTm90ZSB0aGF0IHdpdGggQ09ORklHX0NPTVBBVD15LCB0aGVcXG4gIDM5OlxcdFxcdCAgY29tcGF0X2JpbmZtdF9lbGYgS1VuaXQgdGVzdCBpcyBhbHNvIGNyZWF0ZWQuXFxuICA0MDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDQ6NTY6MzAuNTY2MzQ5MTU5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1NzM3NDYyMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGb2N1czogRUxGIEJpbmFyeSBMb2FkaW5nIFx1MDAyNiBJbnRlcnByZXRhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gaGVyZSBpcyBgQklORk1UX0VMRmAsIHRoYXQncyB0aGUgYmFzZS4gTXkgZm9jdXMgaGFzIHRvIGJlIG9uIHRoZSBmdW5jdGlvbnMgdGhhdCB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nLiBJIHNlZSBgbG9hZF9lbGZfYmluYXJ5YCBhbmQgYGxvYWRfZWxmX2ZkcGljX2JpbmFyeWAgYXJlIG1vZGlmaWVkLCBhbG9uZyB3aXRoIHRoZSBhZGRpdGlvbiBvZiBgcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXJgLiBSaWdodCBvZmYgdGhlIGJhdCwgYGxvYWRfZWxmX2JpbmFyeWAgaXMgYSBub3RvcmlvdXMgaG90LXBhdGg7IHRoYXQncyBjYWxsZWQgZm9yIGV2ZXJ5IHNpbmdsZSBFTEYgZXhlY3V0aW9uLiBgcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXJgIGlzIG5ldywgYW5kIHRoYXQgaXMgY2FsbGVkIGR1cmluZyB0aGUgZXhlY3V0aW9uIG9mIGR5bmFtaWNhbGx5IGxpbmtlZCBFTEYgYmluYXJpZXMuIEknbSBub3Qgc3VyZSBpZiBpdCBpcyBhIGhvdC1wYXRoLCBidXQgaXQgaXMgY2FsbGVkIGZvciBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBleGVjdXRpb24uXG5cbkhvd2V2ZXIsIEkgdGhpbmsgYHJlc29sdmVfZWxmX2ludGVycHJldGVyYCBpcyB0aGUgbW9yZSBjb21wZWxsaW5nIGNhbmRpZGF0ZSBiZWNhdXNlIGl0J3MgKm5ldyogbG9naWMsIHRoZSBjb2RlIHdlIHdhbnQgdG8gYmUgZHJpbGxpbmcgaW50by4gQWx0aG91Z2ggYGxvYWRfZWxmX2JpbmFyeWAgYW5kIGBsb2FkX2VsZl9mZHBpY19iaW5hcnlgIGFyZSBtb2RpZmllZCwgSSdkIHNheSB0aGV5IGFyZSBwcmV0dHkgZ2VuZXJpYyBhbmQgbGVzcyBzcGVjaWZpYyB0byB0aGUgY2hhbmdlcy4gWWVzLCBsZXQncyBkZWZpbml0ZWx5IGluY2x1ZGUgYHJlc29sdmVfZWxmX2ludGVycHJldGVyYC5cblxuSG9sZCBvbi4gTm93IHRoYXQgSSB0aGluayBhYm91dCBpdCwgc2luY2UgYHJlc29sdmVfZWxmX2ludGVycHJldGVyYCBpcyBjYWxsZWQgb24gKmV2ZXJ5KiBkeW5hbWljYWxseSBsaW5rZWQgRUxGIGJpbmFyeSBleGVjdXRpb24sIGlmIHdlIGZvY3VzIHRoZSBmdXp6aW5nIG9uICpqdXN0KiB0aGlzLCBhcmUgd2UgZ29pbmcgdG8gYmUgY29uc3RhbnRseSBoaXR0aW5nIGl0IHdpdGggbm9ybWFsIGV4ZWN1dGlvbiBwYXR0ZXJucz8gVGhhdCBzYWlkLCBpdCBpcyAqdGhlKiBuZXdseSBhZGRlZCBmdW5jdGlvbiwgYW5kIHdlIG5lZWQgdG8gcHJvYmUgdGhlIGVkZ2UgY2FzZXMg4oCTIHRoaW5rIGAkT1JJR0lOYCByZXNvbHV0aW9uLCBhbmQgc28gb24uIFllcywgYHJlc29sdmVfZWxmX2ludGVycHJldGVyYCBzZWVtcyBsaWtlIGEgc3Ryb25nIGNvbnRlbmRlci5cblxuTGV0J3MgcXVpY2tseSBzY2FuIHRoZSBjb25maWcgb3B0aW9ucyBhZ2Fpbi4gSG1tLCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBmcy9leGVjLmNgIGFuZCBhZGRzIHRlc3RzIHRvIGBmcy90ZXN0cy9leGVjX2t1bml0LmNgIGFuZCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9gLiBJIHNlZSB0aGUga3VuaXQgdGVzdCBpcyB1bmRlciBgQ09ORklHX0VYRUNfS1VOSVRfVEVTVGAuIFdlIHByb2JhYmx5IGRvbid0IG5lZWQgdG8gZW5hYmxlIEtVbml0IHRlc3RzIHNwZWNpZmljYWxseSBmb3IgZnV6emluZyBwdXJwb3Nlcy5cblxuT2theSwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIGNvZGUgZm9yIGByZXNvbHZlX2VsZl9pbnRlcnByZXRlcmAgaW4gYGZzL2V4ZWMuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwOTEsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNDo1NjozOC4xNDAwOTgxNjNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MTIxNDgxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZXNvbHZlX2VsZl9pbnRlcnByZXRlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leGVjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXhlYy5jPTIwMjQ9ZnNfaW5pdGNhbGwoaW5pdF9mc19leGVjX3N5c2N0bHMpO1xcbi0tXFxuZnMvZXhlYy5jLTIwMjYtXFxuZnMvZXhlYy5jOjIwMjc6Y2hhciAqcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSwgY29uc3QgY2hhciAqZWxmX2ludGVycHJldGVyKVxcbmZzL2V4ZWMuYy0yMDI4LXtcXG4tLVxcbmZzL2V4ZWMuYy0yMDY2LX1cXG5mcy9leGVjLmM6MjA2NzpFWFBPUlRfU1lNQk9MKHJlc29sdmVfZWxmX2ludGVycHJldGVyKTtcXG5mcy9leGVjLmMtMjA2OC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDQ6NTY6MzguMjgxMzE3MTlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjIxMzUzODQzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIFJlYWNoIGFuZCBGdW5jdGlvbmFsaXR5KipcblxuT2theSwgc28gSSd2ZSB0YWtlbiBhIGxvb2sgYXQgdGhpcyBwYXRjaCwgYW5kIG15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IGl0J3MgZGVmaW5pdGVseSBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUuIFRoaXMgaXMgYmVjYXVzZSBpdCdzIGFkZGluZyBuZXcgZnVuY3Rpb25hbGl0eSB0byByZXNvbHZlIGAkT1JJR0lOYCB3aXRoaW4gdGhlIEVMRiBpbnRlcnByZXRlciBwYXRoIGR1cmluZyBgZXhlY3ZlYC4gVGhhdCdzIGNvcmUga2VybmVsIGxvZ2ljLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBFTEYgYmluYXJ5IGxvYWRlciwgYW5kIHRoYXQncyAqYWx3YXlzKiByZWFjaGFibGUuIFRoZSBrZXkgZnVuY3Rpb24gSSdtIGZvY3VzaW5nIG9uIGhlcmUgaXMgYHJlc29sdmVfZWxmX2ludGVycHJldGVyYC5cblxuTm93LCBsZXQncyBjb25zaWRlciB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIFdlIGtub3cgdGhpcyBpcyBkZXBlbmRlbnQgb24gYEJJTkZNVF9FTEZgLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIHVzdWFsbHkgZW5hYmxlZCBieSBkZWZhdWx0LiBJJ2xsIHN0aWxsIGxpc3QgaXQgdGhvdWdoLCBmb3IgY2xhcml0eS4gQWRkaXRpb25hbGx5LCBgQklORk1UX0VMRl9GRFBJQ2AgaXMgcG90ZW50aWFsbHkgcmVsZXZhbnQsIGV2ZW4gaWYgRkRQSUMgbWlnaHQgbm90IGJlIHByZXZhbGVudCBvbiB4ODYgYXJjaGl0ZWN0dXJlczsgaXTigJlzIGEgZ29vZCBwcmFjdGljZSB0byBpbmNsdWRlIGl0LlxuXG5SZWZpbmluZyBteSBhbmFseXNpcywgdGhlIHBhdGNoJ3MgY29yZSBpbXBhY3QgaXMgcHJvdmlkaW5nIGAkT1JJR0lOYCByZXNvbHV0aW9uIGR1cmluZyB0aGUgYGV4ZWN2ZWAgcHJvY2VzcyBmb3IgdGhlIEVMRiBpbnRlcnByZXRlci4gVGhlIGNoYW5nZXMgYXJlIHdpdGhpbiB0aGUgY29yZSBFTEYgbG9hZGluZyBsb2dpYywgc3BlY2lmaWNhbGx5IHRvdWNoaW5nIGBsb2FkX2VsZl9iaW5hcnlgIGFuZCBgbG9hZF9lbGZfZmRwaWNfYmluYXJ5YCwgYW5kIGludHJvZHVjaW5nIHRoZSBuZXcgYHJlc29sdmVfZWxmX2ludGVycHJldGVyYCBmdW5jdGlvbi4gVGhpcyBpcyB1bmRlbmlhYmx5IHJlYWNoYWJsZSBjb2RlLCBhbmQgdGhlcmVmb3JlIHNob3VsZCBiZSBjb25zaWRlcmVkIGFzIGEgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5NeSBsaXN0IG9mIGNyaXRpY2FsIGl0ZW1zOlxuXG4qICAgKipGb2N1cyBTeW1ib2xzKio6IGByZXNvbHZlX2VsZl9pbnRlcnByZXRlcmBcbiogICAqKkVuYWJsZWQgQ29uZmlndXJhdGlvbnMqKjogYEJJTkZNVF9FTEZgLCBgQklORk1UX0VMRl9GRFBJQ2BcblxuSSdtIGNvbmZpZGVudCBpbiBteSBhc3Nlc3NtZW50IGFuZCBJJ2xsIHN1Ym1pdCBteSBmaW5kaW5ncyB2aWEgdGhlIGBzZXQtcmVzdWx0c2AgY29tbWFuZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTE0NSwiT3V0cHV0VG9rZW5zIjoxMTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDQ6NTY6NDQuNDk0ODU4MzYyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgyODgxMTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCSU5GTVRfRUxGXCIsXG4gICAgXCJCSU5GTVRfRUxGX0ZEUElDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHJlc29sdmluZyAnJE9SSUdJTicgaW4gdGhlIEVMRiBpbnRlcnByZXRlciBwYXRoIGR1cmluZyBleGVjdmUuIFRoaXMgbW9kaWZpZXMgdGhlIGNvcmUgRUxGIGJpbmFyeSBsb2FkaW5nIGxvZ2ljIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGByZXNvbHZlX2VsZl9pbnRlcnByZXRlcmAuIFRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IHBhdGggcmVzb2x1dGlvbiBhbmQgbWVtb3J5IG1hbmFnZW1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQklORk1UX0VMRlwiLFxuICAgIFwiQklORk1UX0VMRl9GRFBJQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJlc29sdmVfZWxmX2ludGVycHJldGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciByZXNvbHZpbmcgJyRPUklHSU4nIGluIHRoZSBFTEYgaW50ZXJwcmV0ZXIgcGF0aCBkdXJpbmcgZXhlY3ZlLiBUaGlzIG1vZGlmaWVzIHRoZSBjb3JlIEVMRiBiaW5hcnkgbG9hZGluZyBsb2dpYyBhbmQgaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXJgLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBwYXRoIHJlc29sdXRpb24gYW5kIG1lbW9yeSBtYW5hZ2VtZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowbptzv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-22 04:43:56 +0000 UTC FinishedAt: 2026-06-22 04:56:47 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "322008f87f917e2217eeac386a9410945092eb2e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BINFMT_ELF", "BINFMT_ELF_FDPIC" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "322008f87f917e2217eeac386a9410945092eb2e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BINFMT_ELF", "BINFMT_ELF_FDPIC" ], "series_id": "02980951-8bbe-4e2d-9794-de8e6bd25817" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "resolve_elf_interpreter" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA0OjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JJTkZNVF9FTEYmIzM0OywKICAgICYjMzQ7QklORk1UX0VMRl9GRFBJQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Jlc29sdmVfZWxmX2ludGVycHJldGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgcmVzb2x2aW5nICYjMzk7JE9SSUdJTiYjMzk7IGluIHRoZSBFTEYgaW50ZXJwcmV0ZXIgcGF0aCBkdXJpbmcgZXhlY3ZlLiBUaGlzIG1vZGlmaWVzIHRoZSBjb3JlIEVMRiBiaW5hcnkgbG9hZGluZyBsb2dpYyBhbmQgaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXJgLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBwYXRoIHJlc29sdXRpb24gYW5kIG1lbW9yeSBtYW5hZ2VtZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA0OjU2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMjIyZjRlOTUyNGE5NjVkZWQ1NWYwMzZkNmY2MThlNzUyN2QzZjVkYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDIyIDA0OjU2OjA4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9lbGYuYyBiL2ZzL2JpbmZtdF9lbGYuY1xuaW5kZXggMTZhNTZiNmIzZjZjYTEuLmFmMTFmOTZhZTMzNzFkIDEwMDY0NFxuLS0tIGEvZnMvYmluZm10X2VsZi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9iaW5mbXRfZWxmLmNcbkBAIC04NzIsNyAmIzQzOzg3Miw3IEBAIHN0YXRpYyBpbnQgbG9hZF9lbGZfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4gXG4gXHRlbGZfcHBudCA9IGVsZl9waGRhdGE7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBlbGZfZXgtXHUwMDNlZV9waG51bTsgaSYjNDM7JiM0MzssIGVsZl9wcG50JiM0MzsmIzQzOykge1xuLVx0XHRjaGFyICplbGZfaW50ZXJwcmV0ZXI7XG4mIzQzO1x0XHRjaGFyICplbGZfaW50ZXJwcmV0ZXIsICpyZXNvbHZlZF9pbnRlcnA7XG4gXG4gXHRcdGlmIChlbGZfcHBudC1cdTAwM2VwX3R5cGUgPT0gUFRfR05VX1BST1BFUlRZKSB7XG4gXHRcdFx0ZWxmX3Byb3BlcnR5X3BoZGF0YSA9IGVsZl9wcG50O1xuQEAgLTkwNCw4ICYjNDM7OTA0LDE1IEBAIHN0YXRpYyBpbnQgbG9hZF9lbGZfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4gXHRcdGlmIChlbGZfaW50ZXJwcmV0ZXJbZWxmX3BwbnQtXHUwMDNlcF9maWxlc3ogLSAxXSAhPSAmIzM5O1xcMCYjMzk7KVxuIFx0XHRcdGdvdG8gb3V0X2ZyZWVfaW50ZXJwO1xuIFxuLVx0XHRpbnRlcnByZXRlciA9IG9wZW5fZXhlYyhlbGZfaW50ZXJwcmV0ZXIpO1xuJiM0MztcdFx0cmVzb2x2ZWRfaW50ZXJwID0gcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIoYnBybSwgZWxmX2ludGVycHJldGVyKTtcbiBcdFx0a2ZyZWUoZWxmX2ludGVycHJldGVyKTtcbiYjNDM7XHRcdGlmIChJU19FUlIocmVzb2x2ZWRfaW50ZXJwKSkge1xuJiM0MztcdFx0XHRyZXR2YWwgPSBQVFJfRVJSKHJlc29sdmVkX2ludGVycCk7XG4mIzQzO1x0XHRcdGdvdG8gb3V0X2ZyZWVfcGg7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0aW50ZXJwcmV0ZXIgPSBvcGVuX2V4ZWMocmVzb2x2ZWRfaW50ZXJwKTtcbiYjNDM7XHRcdGtmcmVlKHJlc29sdmVkX2ludGVycCk7XG4gXHRcdHJldHZhbCA9IFBUUl9FUlIoaW50ZXJwcmV0ZXIpO1xuIFx0XHRpZiAoSVNfRVJSKGludGVycHJldGVyKSlcbiBcdFx0XHRnb3RvIG91dF9mcmVlX3BoO1xuZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9lbGZfZmRwaWMuYyBiL2ZzL2JpbmZtdF9lbGZfZmRwaWMuY1xuaW5kZXggN2UzMTA4NDg5YzgzY2EuLmU4NTcyN2Q3MTJlMzgxIDEwMDY0NFxuLS0tIGEvZnMvYmluZm10X2VsZl9mZHBpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy9iaW5mbXRfZWxmX2ZkcGljLmNcbkBAIC0yMzAsNyAmIzQzOzIzMCw5IEBAIHN0YXRpYyBpbnQgbG9hZF9lbGZfZmRwaWNfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBleGVjX3BhcmFtcy5oZHIuZV9waG51bTsgaSYjNDM7JiM0MzssIHBoZHImIzQzOyYjNDM7KSB7XG4gXHRcdHN3aXRjaCAocGhkci1cdTAwM2VwX3R5cGUpIHtcbi1cdFx0Y2FzZSBQVF9JTlRFUlA6XG4mIzQzO1x0XHRjYXNlIFBUX0lOVEVSUDoge1xuJiM0MztcdFx0XHRjaGFyICpyZXNvbHZlZF9pbnRlcnA7XG4mIzQzO1xuIFx0XHRcdHJldHZhbCA9IC1FTk9NRU07XG4gXHRcdFx0aWYgKHBoZHItXHUwMDNlcF9maWxlc3ogXHUwMDNlIFBBVEhfTUFYKVxuIFx0XHRcdFx0Z290byBlcnJvcjtcbkBAIC0yNTksNyAmIzQzOzI2MSwxNSBAQCBzdGF0aWMgaW50IGxvYWRfZWxmX2ZkcGljX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuIFx0XHRcdGtkZWJ1ZyhcJiMzNDtVc2luZyBFTEYgaW50ZXJwcmV0ZXIgJXNcJiMzNDssIGludGVycHJldGVyX25hbWUpO1xuIFxuIFx0XHRcdC8qIHJlcGxhY2UgdGhlIHByb2dyYW0gd2l0aCB0aGUgaW50ZXJwcmV0ZXIgKi9cbi1cdFx0XHRpbnRlcnByZXRlciA9IG9wZW5fZXhlYyhpbnRlcnByZXRlcl9uYW1lKTtcbiYjNDM7XHRcdFx0cmVzb2x2ZWRfaW50ZXJwID0gcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIoYnBybSwgaW50ZXJwcmV0ZXJfbmFtZSk7XG4mIzQzO1x0XHRcdGtmcmVlKGludGVycHJldGVyX25hbWUpO1xuJiM0MztcdFx0XHRpZiAoSVNfRVJSKHJlc29sdmVkX2ludGVycCkpIHtcbiYjNDM7XHRcdFx0XHRyZXR2YWwgPSBQVFJfRVJSKHJlc29sdmVkX2ludGVycCk7XG4mIzQzO1x0XHRcdFx0Z290byBlcnJvcjtcbiYjNDM7XHRcdFx0fVxuJiM0MztcbiYjNDM7XHRcdFx0aW50ZXJwcmV0ZXIgPSBvcGVuX2V4ZWMocmVzb2x2ZWRfaW50ZXJwKTtcbiYjNDM7XHRcdFx0a2ZyZWUocmVzb2x2ZWRfaW50ZXJwKTtcbiBcdFx0XHRyZXR2YWwgPSBQVFJfRVJSKGludGVycHJldGVyKTtcbiBcdFx0XHRpZiAoSVNfRVJSKGludGVycHJldGVyKSkge1xuIFx0XHRcdFx0aW50ZXJwcmV0ZXIgPSBOVUxMO1xuQEAgLTI4NCw2ICYjNDM7Mjk0LDcgQEAgc3RhdGljIGludCBsb2FkX2VsZl9mZHBpY19iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbiBcbiBcdFx0XHRpbnRlcnBfcGFyYW1zLmhkciA9ICooKHN0cnVjdCBlbGZoZHIgKikgYnBybS1cdTAwM2VidWYpO1xuIFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0fVxuIFxuIFx0XHRjYXNlIFBUX0xPQUQ6XG4gI2lmZGVmIENPTkZJR19NTVVcbmRpZmYgLS1naXQgYS9mcy9leGVjLmMgYi9mcy9leGVjLmNcbmluZGV4IGI5MmZlN2RiMTc2Y2ZmLi4wOTc4YWU2MTMwNGE5NCAxMDA2NDRcbi0tLSBhL2ZzL2V4ZWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXhlYy5jXG5AQCAtMjAyNCw2ICYjNDM7MjAyNCw0OCBAQCBzdGF0aWMgaW50IF9faW5pdCBpbml0X2ZzX2V4ZWNfc3lzY3Rscyh2b2lkKVxuIGZzX2luaXRjYWxsKGluaXRfZnNfZXhlY19zeXNjdGxzKTtcbiAjZW5kaWYgLyogQ09ORklHX1NZU0NUTCAqL1xuIFxuJiM0MztjaGFyICpyZXNvbHZlX2VsZl9pbnRlcnByZXRlcihzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLCBjb25zdCBjaGFyICplbGZfaW50ZXJwcmV0ZXIpXG4mIzQzO3tcbiYjNDM7XHRjaGFyICpwYXRoYnVmLCAqcGF0aCwgKnNsYXNoLCAqcmVzb2x2ZWQ7XG4mIzQzO1xuJiM0MztcdGlmIChzdHJuY21wKGVsZl9pbnRlcnByZXRlciwgXCYjMzQ7JE9SSUdJTlwmIzM0OywgNykgIT0gMCkge1xuJiM0MztcdFx0Y2hhciAqcmV0ID0ga3N0cmR1cChlbGZfaW50ZXJwcmV0ZXIsIEdGUF9LRVJORUwpO1xuJiM0MztcbiYjNDM7XHRcdHJldHVybiByZXQgPyByZXQgOiBFUlJfUFRSKC1FTk9NRU0pO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cGF0aGJ1ZiA9IGttYWxsb2MoUEFUSF9NQVgsIEdGUF9LRVJORUwpO1xuJiM0MztcdGlmICghcGF0aGJ1ZilcbiYjNDM7XHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuJiM0MztcbiYjNDM7XHRwYXRoID0gZmlsZV9wYXRoKGJwcm0tXHUwMDNlZmlsZSwgcGF0aGJ1ZiwgUEFUSF9NQVgpO1xuJiM0MztcdGlmIChJU19FUlIocGF0aCkpIHtcbiYjNDM7XHRcdGtmcmVlKHBhdGhidWYpO1xuJiM0MztcdFx0cmV0dXJuIChjaGFyICopcGF0aDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHNsYXNoID0gc3RycmNocihwYXRoLCAmIzM5Oy8mIzM5Oyk7XG4mIzQzO1x0aWYgKHNsYXNoKSB7XG4mIzQzO1x0XHRpZiAoc2xhc2ggPT0gcGF0aClcbiYjNDM7XHRcdFx0KihzbGFzaCAmIzQzOyAxKSA9ICYjMzk7XFwwJiMzOTs7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdCpzbGFzaCA9ICYjMzk7XFwwJiMzOTs7XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdGtmcmVlKHBhdGhidWYpO1xuJiM0MztcdFx0Y2hhciAqcmV0ID0ga3N0cmR1cChlbGZfaW50ZXJwcmV0ZXIsIEdGUF9LRVJORUwpO1xuJiM0MztcbiYjNDM7XHRcdHJldHVybiByZXQgPyByZXQgOiBFUlJfUFRSKC1FTk9NRU0pO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmVzb2x2ZWQgPSBrYXNwcmludGYoR0ZQX0tFUk5FTCwgXCYjMzQ7JXMlc1wmIzM0OywgcGF0aCwgZWxmX2ludGVycHJldGVyICYjNDM7IDcpO1xuJiM0MztcdGtmcmVlKHBhdGhidWYpO1xuJiM0MztcdGlmICghcmVzb2x2ZWQpXG4mIzQzO1x0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJlc29sdmVkO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0wocmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIpO1xuJiM0MztcbiAjaWZkZWYgQ09ORklHX0VYRUNfS1VOSVRfVEVTVFxuICNpbmNsdWRlIFwmIzM0O3Rlc3RzL2V4ZWNfa3VuaXQuY1wmIzM0O1xuICNlbmRpZlxuZGlmZiAtLWdpdCBhL2ZzL3Rlc3RzL2V4ZWNfa3VuaXQuYyBiL2ZzL3Rlc3RzL2V4ZWNfa3VuaXQuY1xuaW5kZXggMWMzMmNhYzA5OGNmNTEuLjk5MWI5YWJhZDNlZWRmIDEwMDY0NFxuLS0tIGEvZnMvdGVzdHMvZXhlY19rdW5pdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9mcy90ZXN0cy9leGVjX2t1bml0LmNcbkBAIC0xMTksOCAmIzQzOzExOSwzNCBAQCBzdGF0aWMgdm9pZCBleGVjX3Rlc3RfYnBybV9zdGFja19saW1pdHMoc3RydWN0IGt1bml0ICp0ZXN0KVxuIFx0fVxuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgZXhlY190ZXN0X3Jlc29sdmVfZWxmX2ludGVycHJldGVyKHN0cnVjdCBrdW5pdCAqdGVzdClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBsaW51eF9iaW5wcm0gYnBybSA9IHsgLmZpbGUgPSBOVUxMIH07XG4mIzQzO1x0c3RydWN0IGZpbGUgKmY7XG4mIzQzO1x0Y2hhciAqcmVzb2x2ZWQ7XG4mIzQzO1xuJiM0MztcdC8vIFRlc3QgMTogTm9uLSRPUklHSU4gaW50ZXJwcmV0ZXIgcGF0aCBzaG91bGQganVzdCBiZSBkdXBsaWNhdGVkXG4mIzQzO1x0cmVzb2x2ZWQgPSByZXNvbHZlX2VsZl9pbnRlcnByZXRlcihcdTAwMjZicHJtLCBcJiMzNDsvbGliNjQvbGQtbGludXgteDg2LTY0LnNvLjJcJiMzNDspO1xuJiM0MztcdEtVTklUX0FTU0VSVF9OT1RfRVJSX09SX05VTEwodGVzdCwgcmVzb2x2ZWQpO1xuJiM0MztcdEtVTklUX0VYUEVDVF9TVFJFUSh0ZXN0LCByZXNvbHZlZCwgXCYjMzQ7L2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yXCYjMzQ7KTtcbiYjNDM7XHRrZnJlZShyZXNvbHZlZCk7XG4mIzQzO1xuJiM0MztcdC8vIFRlc3QgMjogJE9SSUdJTiBpbnRlcnByZXRlciBwYXRoXG4mIzQzO1x0ZiA9IGZpbHBfb3BlbihcJiMzNDsvXCYjMzQ7LCBPX1JET05MWSwgMCk7XG4mIzQzO1x0S1VOSVRfQVNTRVJUX05PVF9FUlJfT1JfTlVMTCh0ZXN0LCBmKTtcbiYjNDM7XHRicHJtLmZpbGUgPSBmO1xuJiM0MztcbiYjNDM7XHRyZXNvbHZlZCA9IHJlc29sdmVfZWxmX2ludGVycHJldGVyKFx1MDAyNmJwcm0sIFwmIzM0OyRPUklHSU4vLi4vbGliL2xkLnNvXCYjMzQ7KTtcbiYjNDM7XHRLVU5JVF9BU1NFUlRfTk9UX0VSUl9PUl9OVUxMKHRlc3QsIHJlc29sdmVkKTtcbiYjNDM7XHRLVU5JVF9FWFBFQ1RfU1RSRVEodGVzdCwgcmVzb2x2ZWQsIFwmIzM0Oy8vLi4vbGliL2xkLnNvXCYjMzQ7KTtcbiYjNDM7XHRrZnJlZShyZXNvbHZlZCk7XG4mIzQzO1xuJiM0MztcdGZpbHBfY2xvc2UoZiwgTlVMTCk7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIGV4ZWNfdGVzdF9jYXNlc1tdID0ge1xuIFx0S1VOSVRfQ0FTRShleGVjX3Rlc3RfYnBybV9zdGFja19saW1pdHMpLFxuJiM0MztcdEtVTklUX0NBU0UoZXhlY190ZXN0X3Jlc29sdmVfZWxmX2ludGVycHJldGVyKSxcbiBcdHt9LFxuIH07XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9iaW5mbXRzLmggYi9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaFxuaW5kZXggMmM3N2UzODNlNzM3NTcuLjE3NDE5Y2QzZGJjNzMzIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9iaW5mbXRzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYmluZm10cy5oXG5AQCAtMTUwLDQgJiM0MzsxNTAsNiBAQCBleHRlcm4gc3NpemVfdCByZWFkX2NvZGUoc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgbG9uZywgbG9mZl90LCBzaXplX3QpO1xuIGludCBrZXJuZWxfZXhlY3ZlKGNvbnN0IGNoYXIgKmZpbGVuYW1lLFxuIFx0XHQgIGNvbnN0IGNoYXIgKmNvbnN0ICphcmd2LCBjb25zdCBjaGFyICpjb25zdCAqZW52cCk7XG4gXG4mIzQzO2NoYXIgKnJlc29sdmVfZWxmX2ludGVycHJldGVyKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0sIGNvbnN0IGNoYXIgKmVsZl9pbnRlcnByZXRlcik7XG4mIzQzO1xuICNlbmRpZiAvKiBfTElOVVhfQklORk1UU19IICovXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvTWFrZWZpbGVcbmluZGV4IDQ1YTNjZmM0MzVjZmQ3Li41ZTJlMzA1Y2IwYmI2OCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvTWFrZWZpbGVcbkBAIC0xMCw5ICYjNDM7MTAsOSBAQCBBTElHTl9QSUVTICAgICAgICA6PSAkKHBhdHN1YnN0ICUsbG9hZF9hZGRyZXNzLiUsJChBTElHTlMpKVxuIEFMSUdOX1NUQVRJQ19QSUVTIDo9ICQocGF0c3Vic3QgJSxsb2FkX2FkZHJlc3Muc3RhdGljLiUsJChBTElHTlMpKVxuIEFMSUdOTUVOVF9URVNUUyAgIDo9ICQoQUxJR05fUElFUykgJChBTElHTl9TVEFUSUNfUElFUylcbiBcbi1URVNUX1BST0dTIDo9IGJpbmZtdF9zY3JpcHQucHkgY2hlY2stZXhlYy10ZXN0cy5zaFxuLVRFU1RfR0VOX1BST0dTIDo9IGV4ZWN2ZWF0IG5vbi1yZWd1bGFyICQoQUxJR05NRU5UX1RFU1RTKVxuLVRFU1RfR0VOX1BST0dTX0VYVEVOREVEIDo9IGZhbHNlIGluYyBzZXQtZXhlYyBzY3JpcHQtZXhlYy5pbmMgc2NyaXB0LW5vZXhlYy5pbmNcbiYjNDM7VEVTVF9QUk9HUyA6PSBiaW5mbXRfc2NyaXB0LnB5IGNoZWNrLWV4ZWMtdGVzdHMuc2ggb3JpZ2luX2ludGVycC5zaFxuJiM0MztURVNUX0dFTl9QUk9HUyA6PSBleGVjdmVhdCBub24tcmVndWxhciAkKEFMSUdOTUVOVF9URVNUUykgdGVzdF9wcm9nXG4mIzQzO1RFU1RfR0VOX1BST0dTX0VYVEVOREVEIDo9IGZhbHNlIGluYyBzZXQtZXhlYyBzY3JpcHQtZXhlYy5pbmMgc2NyaXB0LW5vZXhlYy5pbmMgbW9ja19pbnRlcnBcbiBURVNUX0dFTl9GSUxFUyA6PSBleGVjdmVhdC5zeW1saW5rIGV4ZWN2ZWF0LmRlbmF0dXJlZCBzY3JpcHQgc3ViZGlyXG4gIyBNYWtlZmlsZSBpcyBhIHJ1bi10aW1lIGRlcGVuZGVuY3ksIHNpbmNlIGl0JiMzOTtzIGFjY2Vzc2VkIGJ5IHRoZSBleGVjdmVhdCB0ZXN0XG4gVEVTVF9GSUxFUyA6PSBNYWtlZmlsZVxuQEAgLTU1LDMgJiM0Mzs1NSw5IEBAICQoT1VUUFVUKS9zY3JpcHQtZXhlYy5pbmM6ICQoQ0hFQ0tfRVhFQ19TQU1QTEVTKS9zY3JpcHQtZXhlYy5pbmNcbiBcdGNwICRcdTAwM2MgJEBcbiAkKE9VVFBVVCkvc2NyaXB0LW5vZXhlYy5pbmM6ICQoQ0hFQ0tfRVhFQ19TQU1QTEVTKS9zY3JpcHQtbm9leGVjLmluY1xuIFx0Y3AgJFx1MDAzYyAkQFxuJiM0MztcbiYjNDM7JChPVVRQVVQpL21vY2tfaW50ZXJwOiBtb2NrX2ludGVycC5jXG4mIzQzO1x0JChDQykgJChDRkxBR1MpICQoTERGTEFHUykgLXN0YXRpYyAtbm9zdGRsaWIgLWluY2x1ZGUgLi4vLi4vLi4vaW5jbHVkZS9ub2xpYmMvbm9saWJjLmggJFx1MDAzYyAtbyAkQFxuJiM0MztcbiYjNDM7JChPVVRQVVQpL3Rlc3RfcHJvZzogdGVzdF9wcm9nLmMgJChPVVRQVVQpL21vY2tfaW50ZXJwXG4mIzQzO1x0JChDQykgJChDRkxBR1MpICQoTERGTEFHUykgLVdsLC1keW5hbWljLWxpbmtlciwmIzM5OyQkT1JJR0lOL21vY2tfaW50ZXJwJiMzOTsgJFx1MDAzYyAtbyAkQFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvbW9ja19pbnRlcnAuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvbW9ja19pbnRlcnAuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi45YzljYTEwOTgxY2NmZlxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9tb2NrX2ludGVycC5jXG5AQCAtMCwwICYjNDM7MSw2IEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzO2ludCBtYWluKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHR3cml0ZSgxLCBcJiMzNDtIZWxsbyBmcm9tIG1vY2sgaW50ZXJwcmV0ZXIhXFxuXCYjMzQ7LCAyOSk7XG4mIzQzO1x0cmV0dXJuIDQyO1xuJiM0Mzt9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9vcmlnaW5faW50ZXJwLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9vcmlnaW5faW50ZXJwLnNoXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjYzNWE0MDgzOTgwMjUxXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL29yaWdpbl9pbnRlcnAuc2hcbkBAIC0wLDAgJiM0MzsxLDE2IEBAXG4mIzQzOyMhL2Jpbi9zaFxuJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzO1xuJiM0MzsjIEV4ZWN1dGUgdGhlIHRlc3QgcHJvZ3JhbSB3aGljaCBoYXMgaXRzIGludGVycHJldGVyIHNldCB0byAkT1JJR0lOL21vY2tfaW50ZXJwXG4mIzQzOyMgTm90ZSB0aGF0IG1vY2tfaW50ZXJwIG11c3QgYmUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuJiM0MztkaXI9JChkaXJuYW1lIFwmIzM0OyQwXCYjMzQ7KVxuJiM0MztvdXQ9JChcJiMzNDskZGlyXCYjMzQ7L3Rlc3RfcHJvZyAyXHUwMDNlXHUwMDI2MSlcbiYjNDM7ZXhpdF9jb2RlPSQ/XG4mIzQzO1xuJiM0MztpZiBbICRleGl0X2NvZGUgLWVxIDQyIF0gXHUwMDI2XHUwMDI2IFsgXCYjMzQ7JG91dFwmIzM0OyA9IFwmIzM0O0hlbGxvIGZyb20gbW9jayBpbnRlcnByZXRlciFcJiMzNDsgXTsgdGhlblxuJiM0MztcdGVjaG8gXCYjMzQ7b3JpZ2luX2ludGVycDogUEFTU1wmIzM0O1xuJiM0MztcdGV4aXQgMFxuJiM0MztlbHNlXG4mIzQzO1x0ZWNobyBcJiMzNDtvcmlnaW5faW50ZXJwOiBGQUlMIChleGl0X2NvZGU9JGV4aXRfY29kZSwgb3V0cHV0PSYjMzk7JG91dCYjMzk7KVwmIzM0O1xuJiM0MztcdGV4aXQgMVxuJiM0MztmaVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvdGVzdF9wcm9nLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL3Rlc3RfcHJvZy5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjQ1MTYxNGRlZjNkYjFjXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL3Rlc3RfcHJvZy5jXG5AQCAtMCwwICYjNDM7MSw1IEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzO2ludCBtYWluKHZvaWQpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gMDsgLyogU2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQgaWYgaW50ZXJwcmV0ZXIgaXMgbG9hZGVkIGluc3RlYWQgKi9cbiYjNDM7fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA0OjU2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JJTkZNVF9FTEYmIzM0OywKICAgICYjMzQ7QklORk1UX0VMRl9GRFBJQyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Jlc29sdmVfZWxmX2ludGVycHJldGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgcmVzb2x2aW5nICYjMzk7JE9SSUdJTiYjMzk7IGluIHRoZSBFTEYgaW50ZXJwcmV0ZXIgcGF0aCBkdXJpbmcgZXhlY3ZlLiBUaGlzIG1vZGlmaWVzIHRoZSBjb3JlIEVMRiBiaW5hcnkgbG9hZGluZyBsb2dpYyBhbmQgaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXJgLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBwYXRoIHJlc29sdXRpb24gYW5kIG1lbW9yeSBtYW5hZ2VtZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyMjJmNGU5NTI0YTk2NWRlZDU1ZjAzNmQ2ZjYxOGU3NTI3ZDNmNWRiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdW4gMjIgMDQ6NTY6MDggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9iaW5mbXRfZWxmLmMgYi9mcy9iaW5mbXRfZWxmLmMKaW5kZXggMTZhNTZiNmIzZjZjYTEuLmFmMTFmOTZhZTMzNzFkIDEwMDY0NAotLS0gYS9mcy9iaW5mbXRfZWxmLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvYmluZm10X2VsZi5jCkBAIC04NzIsNyAmIzQzOzg3Miw3IEBAIHN0YXRpYyBpbnQgbG9hZF9lbGZfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pCiAKIAllbGZfcHBudCA9IGVsZl9waGRhdGE7CiAJZm9yIChpID0gMDsgaSAmbHQ7IGVsZl9leC0mZ3Q7ZV9waG51bTsgaSYjNDM7JiM0MzssIGVsZl9wcG50JiM0MzsmIzQzOykgewotCQljaGFyICplbGZfaW50ZXJwcmV0ZXI7CiYjNDM7CQljaGFyICplbGZfaW50ZXJwcmV0ZXIsICpyZXNvbHZlZF9pbnRlcnA7CiAKIAkJaWYgKGVsZl9wcG50LSZndDtwX3R5cGUgPT0gUFRfR05VX1BST1BFUlRZKSB7CiAJCQllbGZfcHJvcGVydHlfcGhkYXRhID0gZWxmX3BwbnQ7CkBAIC05MDQsOCAmIzQzOzkwNCwxNSBAQCBzdGF0aWMgaW50IGxvYWRfZWxmX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKQogCQlpZiAoZWxmX2ludGVycHJldGVyW2VsZl9wcG50LSZndDtwX2ZpbGVzeiAtIDFdICE9ICYjMzk7XDAmIzM5OykKIAkJCWdvdG8gb3V0X2ZyZWVfaW50ZXJwOwogCi0JCWludGVycHJldGVyID0gb3Blbl9leGVjKGVsZl9pbnRlcnByZXRlcik7CiYjNDM7CQlyZXNvbHZlZF9pbnRlcnAgPSByZXNvbHZlX2VsZl9pbnRlcnByZXRlcihicHJtLCBlbGZfaW50ZXJwcmV0ZXIpOwogCQlrZnJlZShlbGZfaW50ZXJwcmV0ZXIpOwomIzQzOwkJaWYgKElTX0VSUihyZXNvbHZlZF9pbnRlcnApKSB7CiYjNDM7CQkJcmV0dmFsID0gUFRSX0VSUihyZXNvbHZlZF9pbnRlcnApOwomIzQzOwkJCWdvdG8gb3V0X2ZyZWVfcGg7CiYjNDM7CQl9CiYjNDM7CiYjNDM7CQlpbnRlcnByZXRlciA9IG9wZW5fZXhlYyhyZXNvbHZlZF9pbnRlcnApOwomIzQzOwkJa2ZyZWUocmVzb2x2ZWRfaW50ZXJwKTsKIAkJcmV0dmFsID0gUFRSX0VSUihpbnRlcnByZXRlcik7CiAJCWlmIChJU19FUlIoaW50ZXJwcmV0ZXIpKQogCQkJZ290byBvdXRfZnJlZV9waDsKZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9lbGZfZmRwaWMuYyBiL2ZzL2JpbmZtdF9lbGZfZmRwaWMuYwppbmRleCA3ZTMxMDg0ODljODNjYS4uZTg1NzI3ZDcxMmUzODEgMTAwNjQ0Ci0tLSBhL2ZzL2JpbmZtdF9lbGZfZmRwaWMuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9iaW5mbXRfZWxmX2ZkcGljLmMKQEAgLTIzMCw3ICYjNDM7MjMwLDkgQEAgc3RhdGljIGludCBsb2FkX2VsZl9mZHBpY19iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSkKIAogCWZvciAoaSA9IDA7IGkgJmx0OyBleGVjX3BhcmFtcy5oZHIuZV9waG51bTsgaSYjNDM7JiM0MzssIHBoZHImIzQzOyYjNDM7KSB7CiAJCXN3aXRjaCAocGhkci0mZ3Q7cF90eXBlKSB7Ci0JCWNhc2UgUFRfSU5URVJQOgomIzQzOwkJY2FzZSBQVF9JTlRFUlA6IHsKJiM0MzsJCQljaGFyICpyZXNvbHZlZF9pbnRlcnA7CiYjNDM7CiAJCQlyZXR2YWwgPSAtRU5PTUVNOwogCQkJaWYgKHBoZHItJmd0O3BfZmlsZXN6ICZndDsgUEFUSF9NQVgpCiAJCQkJZ290byBlcnJvcjsKQEAgLTI1OSw3ICYjNDM7MjYxLDE1IEBAIHN0YXRpYyBpbnQgbG9hZF9lbGZfZmRwaWNfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pCiAJCQlrZGVidWcoJiMzNDtVc2luZyBFTEYgaW50ZXJwcmV0ZXIgJXMmIzM0OywgaW50ZXJwcmV0ZXJfbmFtZSk7CiAKIAkJCS8qIHJlcGxhY2UgdGhlIHByb2dyYW0gd2l0aCB0aGUgaW50ZXJwcmV0ZXIgKi8KLQkJCWludGVycHJldGVyID0gb3Blbl9leGVjKGludGVycHJldGVyX25hbWUpOwomIzQzOwkJCXJlc29sdmVkX2ludGVycCA9IHJlc29sdmVfZWxmX2ludGVycHJldGVyKGJwcm0sIGludGVycHJldGVyX25hbWUpOwomIzQzOwkJCWtmcmVlKGludGVycHJldGVyX25hbWUpOwomIzQzOwkJCWlmIChJU19FUlIocmVzb2x2ZWRfaW50ZXJwKSkgewomIzQzOwkJCQlyZXR2YWwgPSBQVFJfRVJSKHJlc29sdmVkX2ludGVycCk7CiYjNDM7CQkJCWdvdG8gZXJyb3I7CiYjNDM7CQkJfQomIzQzOwomIzQzOwkJCWludGVycHJldGVyID0gb3Blbl9leGVjKHJlc29sdmVkX2ludGVycCk7CiYjNDM7CQkJa2ZyZWUocmVzb2x2ZWRfaW50ZXJwKTsKIAkJCXJldHZhbCA9IFBUUl9FUlIoaW50ZXJwcmV0ZXIpOwogCQkJaWYgKElTX0VSUihpbnRlcnByZXRlcikpIHsKIAkJCQlpbnRlcnByZXRlciA9IE5VTEw7CkBAIC0yODQsNiAmIzQzOzI5NCw3IEBAIHN0YXRpYyBpbnQgbG9hZF9lbGZfZmRwaWNfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pCiAKIAkJCWludGVycF9wYXJhbXMuaGRyID0gKigoc3RydWN0IGVsZmhkciAqKSBicHJtLSZndDtidWYpOwogCQkJYnJlYWs7CiYjNDM7CQl9CiAKIAkJY2FzZSBQVF9MT0FEOgogI2lmZGVmIENPTkZJR19NTVUKZGlmZiAtLWdpdCBhL2ZzL2V4ZWMuYyBiL2ZzL2V4ZWMuYwppbmRleCBiOTJmZTdkYjE3NmNmZi4uMDk3OGFlNjEzMDRhOTQgMTAwNjQ0Ci0tLSBhL2ZzL2V4ZWMuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9leGVjLmMKQEAgLTIwMjQsNiAmIzQzOzIwMjQsNDggQEAgc3RhdGljIGludCBfX2luaXQgaW5pdF9mc19leGVjX3N5c2N0bHModm9pZCkKIGZzX2luaXRjYWxsKGluaXRfZnNfZXhlY19zeXNjdGxzKTsKICNlbmRpZiAvKiBDT05GSUdfU1lTQ1RMICovCiAKJiM0MztjaGFyICpyZXNvbHZlX2VsZl9pbnRlcnByZXRlcihzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLCBjb25zdCBjaGFyICplbGZfaW50ZXJwcmV0ZXIpCiYjNDM7ewomIzQzOwljaGFyICpwYXRoYnVmLCAqcGF0aCwgKnNsYXNoLCAqcmVzb2x2ZWQ7CiYjNDM7CiYjNDM7CWlmIChzdHJuY21wKGVsZl9pbnRlcnByZXRlciwgJiMzNDskT1JJR0lOJiMzNDssIDcpICE9IDApIHsKJiM0MzsJCWNoYXIgKnJldCA9IGtzdHJkdXAoZWxmX2ludGVycHJldGVyLCBHRlBfS0VSTkVMKTsKJiM0MzsKJiM0MzsJCXJldHVybiByZXQgPyByZXQgOiBFUlJfUFRSKC1FTk9NRU0pOwomIzQzOwl9CiYjNDM7CiYjNDM7CXBhdGhidWYgPSBrbWFsbG9jKFBBVEhfTUFYLCBHRlBfS0VSTkVMKTsKJiM0MzsJaWYgKCFwYXRoYnVmKQomIzQzOwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiYjNDM7CiYjNDM7CXBhdGggPSBmaWxlX3BhdGgoYnBybS0mZ3Q7ZmlsZSwgcGF0aGJ1ZiwgUEFUSF9NQVgpOwomIzQzOwlpZiAoSVNfRVJSKHBhdGgpKSB7CiYjNDM7CQlrZnJlZShwYXRoYnVmKTsKJiM0MzsJCXJldHVybiAoY2hhciAqKXBhdGg7CiYjNDM7CX0KJiM0MzsKJiM0MzsJc2xhc2ggPSBzdHJyY2hyKHBhdGgsICYjMzk7LyYjMzk7KTsKJiM0MzsJaWYgKHNsYXNoKSB7CiYjNDM7CQlpZiAoc2xhc2ggPT0gcGF0aCkKJiM0MzsJCQkqKHNsYXNoICYjNDM7IDEpID0gJiMzOTtcMCYjMzk7OwomIzQzOwkJZWxzZQomIzQzOwkJCSpzbGFzaCA9ICYjMzk7XDAmIzM5OzsKJiM0MzsJfSBlbHNlIHsKJiM0MzsJCWtmcmVlKHBhdGhidWYpOwomIzQzOwkJY2hhciAqcmV0ID0ga3N0cmR1cChlbGZfaW50ZXJwcmV0ZXIsIEdGUF9LRVJORUwpOwomIzQzOwomIzQzOwkJcmV0dXJuIHJldCA/IHJldCA6IEVSUl9QVFIoLUVOT01FTSk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmVzb2x2ZWQgPSBrYXNwcmludGYoR0ZQX0tFUk5FTCwgJiMzNDslcyVzJiMzNDssIHBhdGgsIGVsZl9pbnRlcnByZXRlciAmIzQzOyA3KTsKJiM0MzsJa2ZyZWUocGF0aGJ1Zik7CiYjNDM7CWlmICghcmVzb2x2ZWQpCiYjNDM7CQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHJlc29sdmVkOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MKHJlc29sdmVfZWxmX2ludGVycHJldGVyKTsKJiM0MzsKICNpZmRlZiBDT05GSUdfRVhFQ19LVU5JVF9URVNUCiAjaW5jbHVkZSAmIzM0O3Rlc3RzL2V4ZWNfa3VuaXQuYyYjMzQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2ZzL3Rlc3RzL2V4ZWNfa3VuaXQuYyBiL2ZzL3Rlc3RzL2V4ZWNfa3VuaXQuYwppbmRleCAxYzMyY2FjMDk4Y2Y1MS4uOTkxYjlhYmFkM2VlZGYgMTAwNjQ0Ci0tLSBhL2ZzL3Rlc3RzL2V4ZWNfa3VuaXQuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy90ZXN0cy9leGVjX2t1bml0LmMKQEAgLTExOSw4ICYjNDM7MTE5LDM0IEBAIHN0YXRpYyB2b2lkIGV4ZWNfdGVzdF9icHJtX3N0YWNrX2xpbWl0cyhzdHJ1Y3Qga3VuaXQgKnRlc3QpCiAJfQogfQogCiYjNDM7c3RhdGljIHZvaWQgZXhlY190ZXN0X3Jlc29sdmVfZWxmX2ludGVycHJldGVyKHN0cnVjdCBrdW5pdCAqdGVzdCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBsaW51eF9iaW5wcm0gYnBybSA9IHsgLmZpbGUgPSBOVUxMIH07CiYjNDM7CXN0cnVjdCBmaWxlICpmOwomIzQzOwljaGFyICpyZXNvbHZlZDsKJiM0MzsKJiM0MzsJLy8gVGVzdCAxOiBOb24tJE9SSUdJTiBpbnRlcnByZXRlciBwYXRoIHNob3VsZCBqdXN0IGJlIGR1cGxpY2F0ZWQKJiM0MzsJcmVzb2x2ZWQgPSByZXNvbHZlX2VsZl9pbnRlcnByZXRlcigmYW1wO2Jwcm0sICYjMzQ7L2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yJiMzNDspOwomIzQzOwlLVU5JVF9BU1NFUlRfTk9UX0VSUl9PUl9OVUxMKHRlc3QsIHJlc29sdmVkKTsKJiM0MzsJS1VOSVRfRVhQRUNUX1NUUkVRKHRlc3QsIHJlc29sdmVkLCAmIzM0Oy9saWI2NC9sZC1saW51eC14ODYtNjQuc28uMiYjMzQ7KTsKJiM0MzsJa2ZyZWUocmVzb2x2ZWQpOwomIzQzOwomIzQzOwkvLyBUZXN0IDI6ICRPUklHSU4gaW50ZXJwcmV0ZXIgcGF0aAomIzQzOwlmID0gZmlscF9vcGVuKCYjMzQ7LyYjMzQ7LCBPX1JET05MWSwgMCk7CiYjNDM7CUtVTklUX0FTU0VSVF9OT1RfRVJSX09SX05VTEwodGVzdCwgZik7CiYjNDM7CWJwcm0uZmlsZSA9IGY7CiYjNDM7CiYjNDM7CXJlc29sdmVkID0gcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIoJmFtcDticHJtLCAmIzM0OyRPUklHSU4vLi4vbGliL2xkLnNvJiMzNDspOwomIzQzOwlLVU5JVF9BU1NFUlRfTk9UX0VSUl9PUl9OVUxMKHRlc3QsIHJlc29sdmVkKTsKJiM0MzsJS1VOSVRfRVhQRUNUX1NUUkVRKHRlc3QsIHJlc29sdmVkLCAmIzM0Oy8vLi4vbGliL2xkLnNvJiMzNDspOwomIzQzOwlrZnJlZShyZXNvbHZlZCk7CiYjNDM7CiYjNDM7CWZpbHBfY2xvc2UoZiwgTlVMTCk7CiYjNDM7fQomIzQzOwogc3RhdGljIHN0cnVjdCBrdW5pdF9jYXNlIGV4ZWNfdGVzdF9jYXNlc1tdID0gewogCUtVTklUX0NBU0UoZXhlY190ZXN0X2Jwcm1fc3RhY2tfbGltaXRzKSwKJiM0MzsJS1VOSVRfQ0FTRShleGVjX3Rlc3RfcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIpLAogCXt9LAogfTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9iaW5mbXRzLmggYi9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaAppbmRleCAyYzc3ZTM4M2U3Mzc1Ny4uMTc0MTljZDNkYmM3MzMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvYmluZm10cy5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYmluZm10cy5oCkBAIC0xNTAsNCAmIzQzOzE1MCw2IEBAIGV4dGVybiBzc2l6ZV90IHJlYWRfY29kZShzdHJ1Y3QgZmlsZSAqLCB1bnNpZ25lZCBsb25nLCBsb2ZmX3QsIHNpemVfdCk7CiBpbnQga2VybmVsX2V4ZWN2ZShjb25zdCBjaGFyICpmaWxlbmFtZSwKIAkJICBjb25zdCBjaGFyICpjb25zdCAqYXJndiwgY29uc3QgY2hhciAqY29uc3QgKmVudnApOwogCiYjNDM7Y2hhciAqcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSwgY29uc3QgY2hhciAqZWxmX2ludGVycHJldGVyKTsKJiM0MzsKICNlbmRpZiAvKiBfTElOVVhfQklORk1UU19IICovCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9NYWtlZmlsZQppbmRleCA0NWEzY2ZjNDM1Y2ZkNy4uNWUyZTMwNWNiMGJiNjggMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9NYWtlZmlsZQpAQCAtMTAsOSAmIzQzOzEwLDkgQEAgQUxJR05fUElFUyAgICAgICAgOj0gJChwYXRzdWJzdCAlLGxvYWRfYWRkcmVzcy4lLCQoQUxJR05TKSkKIEFMSUdOX1NUQVRJQ19QSUVTIDo9ICQocGF0c3Vic3QgJSxsb2FkX2FkZHJlc3Muc3RhdGljLiUsJChBTElHTlMpKQogQUxJR05NRU5UX1RFU1RTICAgOj0gJChBTElHTl9QSUVTKSAkKEFMSUdOX1NUQVRJQ19QSUVTKQogCi1URVNUX1BST0dTIDo9IGJpbmZtdF9zY3JpcHQucHkgY2hlY2stZXhlYy10ZXN0cy5zaAotVEVTVF9HRU5fUFJPR1MgOj0gZXhlY3ZlYXQgbm9uLXJlZ3VsYXIgJChBTElHTk1FTlRfVEVTVFMpCi1URVNUX0dFTl9QUk9HU19FWFRFTkRFRCA6PSBmYWxzZSBpbmMgc2V0LWV4ZWMgc2NyaXB0LWV4ZWMuaW5jIHNjcmlwdC1ub2V4ZWMuaW5jCiYjNDM7VEVTVF9QUk9HUyA6PSBiaW5mbXRfc2NyaXB0LnB5IGNoZWNrLWV4ZWMtdGVzdHMuc2ggb3JpZ2luX2ludGVycC5zaAomIzQzO1RFU1RfR0VOX1BST0dTIDo9IGV4ZWN2ZWF0IG5vbi1yZWd1bGFyICQoQUxJR05NRU5UX1RFU1RTKSB0ZXN0X3Byb2cKJiM0MztURVNUX0dFTl9QUk9HU19FWFRFTkRFRCA6PSBmYWxzZSBpbmMgc2V0LWV4ZWMgc2NyaXB0LWV4ZWMuaW5jIHNjcmlwdC1ub2V4ZWMuaW5jIG1vY2tfaW50ZXJwCiBURVNUX0dFTl9GSUxFUyA6PSBleGVjdmVhdC5zeW1saW5rIGV4ZWN2ZWF0LmRlbmF0dXJlZCBzY3JpcHQgc3ViZGlyCiAjIE1ha2VmaWxlIGlzIGEgcnVuLXRpbWUgZGVwZW5kZW5jeSwgc2luY2UgaXQmIzM5O3MgYWNjZXNzZWQgYnkgdGhlIGV4ZWN2ZWF0IHRlc3QKIFRFU1RfRklMRVMgOj0gTWFrZWZpbGUKQEAgLTU1LDMgJiM0Mzs1NSw5IEBAICQoT1VUUFVUKS9zY3JpcHQtZXhlYy5pbmM6ICQoQ0hFQ0tfRVhFQ19TQU1QTEVTKS9zY3JpcHQtZXhlYy5pbmMKIAljcCAkJmx0OyAkQAogJChPVVRQVVQpL3NjcmlwdC1ub2V4ZWMuaW5jOiAkKENIRUNLX0VYRUNfU0FNUExFUykvc2NyaXB0LW5vZXhlYy5pbmMKIAljcCAkJmx0OyAkQAomIzQzOwomIzQzOyQoT1VUUFVUKS9tb2NrX2ludGVycDogbW9ja19pbnRlcnAuYwomIzQzOwkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAtc3RhdGljIC1ub3N0ZGxpYiAtaW5jbHVkZSAuLi8uLi8uLi9pbmNsdWRlL25vbGliYy9ub2xpYmMuaCAkJmx0OyAtbyAkQAomIzQzOwomIzQzOyQoT1VUUFVUKS90ZXN0X3Byb2c6IHRlc3RfcHJvZy5jICQoT1VUUFVUKS9tb2NrX2ludGVycAomIzQzOwkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAtV2wsLWR5bmFtaWMtbGlua2VyLCYjMzk7JCRPUklHSU4vbW9ja19pbnRlcnAmIzM5OyAkJmx0OyAtbyAkQApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9tb2NrX2ludGVycC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9tb2NrX2ludGVycC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi45YzljYTEwOTgxY2NmZgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvbW9ja19pbnRlcnAuYwpAQCAtMCwwICYjNDM7MSw2IEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MztpbnQgbWFpbih2b2lkKQomIzQzO3sKJiM0MzsJd3JpdGUoMSwgJiMzNDtIZWxsbyBmcm9tIG1vY2sgaW50ZXJwcmV0ZXIhXG4mIzM0OywgMjkpOwomIzQzOwlyZXR1cm4gNDI7CiYjNDM7fQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9vcmlnaW5faW50ZXJwLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9vcmlnaW5faW50ZXJwLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwLi42MzVhNDA4Mzk4MDI1MQotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvb3JpZ2luX2ludGVycC5zaApAQCAtMCwwICYjNDM7MSwxNiBAQAomIzQzOyMhL2Jpbi9zaAomIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MzsKJiM0MzsjIEV4ZWN1dGUgdGhlIHRlc3QgcHJvZ3JhbSB3aGljaCBoYXMgaXRzIGludGVycHJldGVyIHNldCB0byAkT1JJR0lOL21vY2tfaW50ZXJwCiYjNDM7IyBOb3RlIHRoYXQgbW9ja19pbnRlcnAgbXVzdCBiZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCiYjNDM7ZGlyPSQoZGlybmFtZSAmIzM0OyQwJiMzNDspCiYjNDM7b3V0PSQoJiMzNDskZGlyJiMzNDsvdGVzdF9wcm9nIDImZ3Q7JmFtcDsxKQomIzQzO2V4aXRfY29kZT0kPwomIzQzOwomIzQzO2lmIFsgJGV4aXRfY29kZSAtZXEgNDIgXSAmYW1wOyZhbXA7IFsgJiMzNDskb3V0JiMzNDsgPSAmIzM0O0hlbGxvIGZyb20gbW9jayBpbnRlcnByZXRlciEmIzM0OyBdOyB0aGVuCiYjNDM7CWVjaG8gJiMzNDtvcmlnaW5faW50ZXJwOiBQQVNTJiMzNDsKJiM0MzsJZXhpdCAwCiYjNDM7ZWxzZQomIzQzOwllY2hvICYjMzQ7b3JpZ2luX2ludGVycDogRkFJTCAoZXhpdF9jb2RlPSRleGl0X2NvZGUsIG91dHB1dD0mIzM5OyRvdXQmIzM5OykmIzM0OwomIzQzOwlleGl0IDEKJiM0MztmaQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy90ZXN0X3Byb2cuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvdGVzdF9wcm9nLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjQ1MTYxNGRlZjNkYjFjCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy90ZXN0X3Byb2cuYwpAQCAtMCwwICYjNDM7MSw1IEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKJiM0MztpbnQgbWFpbih2b2lkKQomIzQzO3sKJiM0MzsJcmV0dXJuIDA7IC8qIFNob3VsZCBuZXZlciBiZSByZWFjaGVkIGlmIGludGVycHJldGVyIGlzIGxvYWRlZCBpbnN0ZWFkICovCiYjNDM7fQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNDo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDYzCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtlcm5lbCBFTEYgSW50ZXJwcmV0ZXIgUGF0aCBSZXNvbHV0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGluIGZyb250IG9mIG1lIHRoYXQgdG91Y2hlcyBzb21lIHByZXR0eSBjcnVjaWFsIGNvZGU6IGBmcy9iaW5mbXRfZWxmLmNgLCBgZnMvYmluZm10X2VsZl9mZHBpYy5jYCwgYW5kIGBmcy9leGVjLmNgLiBSaWdodCBhd2F5LCB0aGUgbWVudGlvbiBvZiBgZXhlY3ZlYCBoYXMgbXkgYXR0ZW50aW9uIOKAkyB0aGF0JiMzOTtzIGRlZmluaXRlbHkgYSBjb3JlIGtlcm5lbCBwYXRoLiBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24sIGByZXNvbHZlX2VsZl9pbnRlcnByZXRlcmAsIGFuZCBmcm9tIHRoZSBkZXNjcmlwdGlvbiwgaXQmIzM5O3MgZm9jdXNlZCBvbiByZXNvbHZpbmcgYCRPUklHSU5gIHdpdGhpbiB0aGUgRUxGIGludGVycHJldGVyIHBhdGguIFRoaXMgaXMgZnVuY3Rpb25hbCwgaXTigJlzIGluIHRoZSBgZXhlY3ZlYCBwYXRoLCB3aGljaCBtZWFucyBpdCYjMzk7cyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBuZWVkIHRvIGZ1enouCgpMZXQmIzM5O3MgZGl2ZSBkZWVwZXIgaW50byB0aGUgY29kZS4gSXQgbG9va3MgbGlrZSBgcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXJgIGlzIGdldHRpbmcgYWRkZWQgdG8gYGZzL2V4ZWMuY2AgYW5kIHRoZW4gZXhwb3J0ZWQuIFRoZSBrZXkgcGFydCBpcyB0aGF0IGl0JiMzOTtzIGJlaW5nICpjYWxsZWQqIGZyb20gYGxvYWRfZWxmX2JpbmFyeWAgaW4gYGZzL2JpbmZtdF9lbGYuY2AgYW5kIGBsb2FkX2VsZl9mZHBpY19iaW5hcnlgIGluIGBmcy9iaW5mbXRfZWxmX2ZkcGljLmNgLiBUaGF0IHRlbGxzIG1lIGhvdyBpdCYjMzk7cyBpbnRlZ3JhdGVkIGludG8gdGhlIGV4aXN0aW5nIEVMRiBsb2FkaW5nIHByb2Nlc3MuCgpOZXh0LCBJIG5lZWQgdG8gY2hlY2sgZm9yIGFueSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gT2theSwgYGZzL2JpbmZtdF9lbGYuY2AgaXMgY29uZGl0aW9uYWwgb24gYENPTkZJR19CSU5GTVRfRUxGYCwgYGZzL2JpbmZtdF9lbGZfZmRwaWMuY2AgZGVwZW5kcyBvbiBgQ09ORklHX0JJTkZNVF9FTEZfRkRQSUNgLCBidXQgYGZzL2V4ZWMuY2AgYW5kIHRoZSBuZXcgZnVuY3Rpb24gYXJlIGFsd2F5cyBjb21waWxlZC4gSXQgc2VlbXMgdGhlIG5ldyBmdW5jdGlvbiBpcyBhbHdheXMgYXZhaWxhYmxlLCBidXQgZGVwZW5kZW50IG9uIHRoZSBFTEYgYmluYXJ5IHN1cHBvcnQuIFNvIHRoYXQgYWZmZWN0cyB0aGUgc2NvcGUgb2YgdGhlIHRlc3RzLiBOb3cgSSBuZWVkIHRvIHZlcmlmeSB3aGljaCBjb25maWdzIGFyZSBhY3R1YWxseSBlbmFibGVkIHRvIGRlY2lkZSB3aGF0IHRvIGNvbmNlbnRyYXRlIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA0OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JJTkZNVF9FTEYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9NYWtlZmlsZT0zNj1vYmotJChDT05GSUdfQklORk1UX1NDUklQVClcdCYjNDM7PSBiaW5mbXRfc2NyaXB0Lm9cbmZzL01ha2VmaWxlOjM3Om9iai0kKENPTkZJR19CSU5GTVRfRUxGKVx0JiM0Mzs9IGJpbmZtdF9lbGYub1xuZnMvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX0NPTVBBVF9CSU5GTVRfRUxGKVx0JiM0Mzs9IGNvbXBhdF9iaW5mbXRfZWxmLm9cbmZzL01ha2VmaWxlOjM5Om9iai0kKENPTkZJR19CSU5GTVRfRUxGX0ZEUElDKVx0JiM0Mzs9IGJpbmZtdF9lbGZfZmRwaWMub1xuZnMvTWFrZWZpbGUtNDAtb2JqLSQoQ09ORklHX0JJTkZNVF9GTEFUKVx0JiM0Mzs9IGJpbmZtdF9mbGF0Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNDo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTA0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqRUxGIGFuZCBGRFBJQzogQ29uZmlndXJhdGlvbiBDb251bmRydW1zKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gRUxGIGJpbmFyaWVzLCBzcGVjaWZpY2FsbHkgdGhlIGZsZXhpYmxlIFBJQyB2YXJpYW50LCBgQ09ORklHX0JJTkZNVF9FTEZfRkRQSUNgLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBgQ09ORklHX0JJTkZNVF9FTEZgIGlzIHRoZSBjb3JlLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoYXQgYW5kIGBDT05GSUdfQklORk1UX0VMRl9GRFBJQ2AgbW9yZSBncmFudWxhcmx5LiBUaGUgcXVlc3Rpb24gbm93IGJlY29tZXM6IGlzIEZEUElDIHVuaXZlcnNhbGx5IGF2YWlsYWJsZSwgb3IgZG9lcyBpdHMgcHJlc2VuY2UgZGVwZW5kIG9uIHNvbWUgYXJjaGl0ZWN0dXJhbCBmZWF0dXJlIG9yIG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9uPyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIEtjb25maWcgZmlsZXMsIG9yIHBlcmhhcHMgc29tZSByZWxldmFudCBkb2N1bWVudGF0aW9uLCB0byBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIGFueSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZGVwZW5kZW5jaWVzIG9yIG90aGVyIHByZXJlcXVpc2l0ZXMgdGhhdCBnb3Zlcm4gdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNwZWNpZmljIEZEUElDIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaGlzIGNvdWxkIGJlIGNydWNpYWwgZm9yIHBvcnRpbmcgb3IgY3VzdG9taXppbmcgdGhlIGtlcm5lbCYjMzk7cyBiaW5hcnkgbG9hZGluZyBjYXBhYmlsaXRpZXMuIExldCYjMzk7cyBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA0OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCSU5GTVRfRUxGX0ZEUElDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvS2NvbmZpZy5iaW5mbXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvS2NvbmZpZy5iaW5mbXQ9NTU9Y29uZmlnIEFSQ0hfVVNFX0dOVV9QUk9QRVJUWVxuLS1cbmZzL0tjb25maWcuYmluZm10LTU3LVxuZnMvS2NvbmZpZy5iaW5mbXQ6NTg6Y29uZmlnIEJJTkZNVF9FTEZfRkRQSUNcbmZzL0tjb25maWcuYmluZm10LTU5LVx0Ym9vbCBcJiMzNDtLZXJuZWwgc3VwcG9ydCBmb3IgRkRQSUMgRUxGIGJpbmFyaWVzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDQ6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjI5NQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXMgQklORk1UX0VMRl9GRFBJQyBkZXBlbmRlbmN5IGFuYWx5c2lzOgoKKipBbmFseXppbmcgdGhlIERlcGVuZGVuY2llcyBvZiBgQklORk1UX0VMRl9GRFBJQ2AqKgoKQWxyaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyB0byBmaWd1cmUgb3V0IHdoYXQgYEJJTkZNVF9FTEZfRkRQSUNgIGFjdHVhbGx5IHJlbGllcyBvbi4gVGhpcyBpcyBnb2luZyB0byBiZSBhIGNydWNpYWwgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIGl0cyBwbGFjZSBpbiB0aGUgYnJvYWRlciBzeXN0ZW0gYW5kIGhvdyBtb2RpZmljYXRpb25zIHRvIHJlbGF0ZWQgY29tcG9uZW50cyBtaWdodCBpbXBhY3QgaXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoaWNoIG90aGVyIG1vZHVsZXMsIGZlYXR1cmVzLCBvciBrZXJuZWwgc3Vic3lzdGVtcyBhcmUgKnByZXJlcXVpc2l0ZXMqIGZvciBgQklORk1UX0VMRl9GRFBJQ2AgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBJcyBpdCBzb21ldGhpbmcgcmVsYXRpdmVseSBzZWxmLWNvbnRhaW5lZCwgb3IgZG9lcyBpdCBoYXZlIGEgbG9uZyBsaXN0IG9mIGRlcGVuZGVuY2llcz8gS25vd2luZyB0aGlzIGxldmVsIG9mIGludGVyY29ubmVjdGl2aXR5IGlzIGtleS4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoaWNoIHBpZWNlcyBvZiB0aGUgRUxGIGZvcm1hdCBpdCB1c2VzIGFuZCByZWxpZXMgb24sIGFuZCB3aGF0IHRoZSBGRFBJQyAoUG9zaXRpb24gSW5kZXBlbmRlbnQgQ29kZSkgYWRkcyB0byB0aGUgbWl4LiBGcm9tIHRoZXJlIEkmIzM5O2xsIHN0YXJ0IGxvb2tpbmcgYXQgdGhvc2UgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA0OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCSU5GTVRfRUxGX0ZEUElDJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvS2NvbmZpZy5iaW5mbXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvS2NvbmZpZy5iaW5mbXQ9NTU9Y29uZmlnIEFSQ0hfVVNFX0dOVV9QUk9QRVJUWVxuLS1cbmZzL0tjb25maWcuYmluZm10LTU3LVxuZnMvS2NvbmZpZy5iaW5mbXQ6NTg6Y29uZmlnIEJJTkZNVF9FTEZfRkRQSUNcbmZzL0tjb25maWcuYmluZm10LTU5LVx0Ym9vbCBcJiMzNDtLZXJuZWwgc3VwcG9ydCBmb3IgRkRQSUMgRUxGIGJpbmFyaWVzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDQ6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjY1NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBEZXBlbmRlbmNpZXM6IEtjb25maWcgRmlyc3QqKgoKQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoaXMgY29uZmlndXJhdGlvbiwgSSBuZWVkIHRvIHBhdXNlIGFuZCBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBsYW5kc2NhcGUuIEp1bXBpbmcgc3RyYWlnaHQgaW50byB0aGUgY29kZSB3b3VsZCBiZSBhIHJvb2tpZSBtb3ZlLCBlc3BlY2lhbGx5IHdpdGggdGhlIHBvdGVudGlhbCBmb3IgY29tcGxleCBpbnRlcmRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIGNvbnN1bHQgdGhlIEtjb25maWcgZmlsZS4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGNvbmRpdGlvbmFsIGxvZ2ljIGFuZCBidWlsZCBvcHRpb25zIHJlbGF0ZWQgdG8gdGhpcyBtb2R1bGUgb3IgZmVhdHVyZS4gSXQmIzM5O3MgdGhlIGJsdWVwcmludCwgdGhlIGRlY2lzaW9uIHRyZWUuIEnigJlsbCBjaGVjayB0aGUgS2NvbmZpZywgYW5kIG9ubHkgdGhlbiB3aWxsIEkgZ3Jhc3AgdGhlIGZ1bGwgaW1wYWN0IG9mIGFueSBtb2RpZmljYXRpb25zIEkmIzM5O20gY29uc2lkZXJpbmcuIFNraXBwaW5nIHRoaXMgc3RlcCBpcyBhc2tpbmcgZm9yIGJ1aWxkIGVycm9ycywgdW5leHBlY3RlZCBiZWhhdmlvciwgYW5kIHVsdGltYXRlbHksIGEgbXVjaCBsb25nZXIgZGVidWdnaW5nIHNlc3Npb24uIExldCYjMzk7cyBzZWUgd2hhdCB0aGF0IEtjb25maWcgaGFzIHRvIHNheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDQ6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9LY29uZmlnLmJpbmZtdCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNTA6XHRcdGJvb2xcbiAgNTE6XHRcbiAgNTI6XHRjb25maWcgQVJDSF9IQVZFX0VMRl9QUk9UXG4gIDUzOlx0XHRib29sXG4gIDU0Olx0XG4gIDU1Olx0Y29uZmlnIEFSQ0hfVVNFX0dOVV9QUk9QRVJUWVxuICA1NjpcdFx0Ym9vbFxuICA1NzpcdFxuICA1ODpcdGNvbmZpZyBCSU5GTVRfRUxGX0ZEUElDXG4gIDU5Olx0XHRib29sIFwmIzM0O0tlcm5lbCBzdXBwb3J0IGZvciBGRFBJQyBFTEYgYmluYXJpZXNcJiMzNDtcbiAgNjA6XHRcdGRlZmF1bHQgeSBpZiAhQklORk1UX0VMRlxuICA2MTpcdFx0ZGVwZW5kcyBvbiBBUk0gfHwgKChNNjhLIHx8IFJJU0NWIHx8IFNVUEVSSCB8fCBYVEVOU0EpIFx1MDAyNlx1MDAyNiAhTU1VKVxuICA2MjpcdFx0c2VsZWN0IEVMRkNPUkVcbiAgNjM6XHRcdGhlbHBcbiAgNjQ6XHRcdCAgRUxGIEZEUElDIGJpbmFyaWVzIGFyZSBiYXNlZCBvbiBFTEYsIGJ1dCBhbGxvdyB0aGUgaW5kaXZpZHVhbCBsb2FkXG4gIDY1Olx0XHQgIHNlZ21lbnRzIG9mIGEgYmluYXJ5IHRvIGJlIGxvY2F0ZWQgaW4gbWVtb3J5IGluZGVwZW5kZW50bHkgb2YgZWFjaFxuICA2NjpcdFx0ICBvdGhlci4gVGhpcyBtYWtlcyB0aGlzIGZvcm1hdCBpZGVhbCBmb3IgdXNlIGluIGVudmlyb25tZW50cyB3aGVyZSBub1xuICA2NzpcdFx0ICBNTVUgaXMgYXZhaWxhYmxlIGFzIGl0IHN0aWxsIHBlcm1pdHMgdGV4dCBzZWdtZW50cyB0byBiZSBzaGFyZWQsXG4gIDY4Olx0XHQgIGV2ZW4gaWYgZGF0YSBzZWdtZW50cyBhcmUgbm90LlxuICA2OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNDo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTUxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqRUxGIEJpbmFyeSBGb3JtYXQgQ29uc2lkZXJhdGlvbnMqKgoKUmlnaHQsIGxldCYjMzk7cyBzZWUuIE15IGluaXRpYWwgdGhvdWdodCBpcyBhYm91dCB0aGF0IGBCSU5GTVRfRUxGX0ZEUElDYCBmZWF0dXJlIOKAkyBJIG5lZWQgdG8gcmVtZW1iZXIgdGhlIGNvbmRpdGlvbnMgZm9yIHRoYXQuIEl0IGxvb2tzIGxpa2UgaXQgaGluZ2VzIG9uIHRoZSBhcmNoaXRlY3R1cmUgYmVpbmcgQVJNLCBvciBpdCBiZWluZyBvbmUgb2YgTTY4SywgUklTQ1YsIFNVUEVSSCwgb3IgWFRFTlNBICp3aXRob3V0KiBhbiBNTVUuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgdGhhdCBpdCYjMzk7cyAqbm90KiBnZW5lcmFsbHkgc29tZXRoaW5nIEkmIzM5O2QgZmluZCBvbiB4ODYsIHdoaWNoIGlzIGltcG9ydGFudCB0byBrZWVwIGluIG1pbmQuCgpTbywgc2luY2UgdGhhdCYjMzk7cyBvdXQsIHRoZSB3b3JraG9yc2UgZm9yIGEgbG90IG9mIHN5c3RlbXMgaXMgZ29pbmcgdG8gYmUgYEJJTkZNVF9FTEZgLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24uIEl0JiMzOTtzIHRoZSBzdGFuZGFyZCwgcmlnaHQ/IExldCYjMzk7cyBkcmlsbCBkb3duIGludG8gdGhhdCBtb2R1bGUgYW5kIHNlZSB3aGF0IHRoZSBlc3NlbnRpYWwgZGV0YWlscyBhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA0OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvS2NvbmZpZy5iaW5mbXQmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRcbiAgIDM6XHRtZW51IFwmIzM0O0V4ZWN1dGFibGUgZmlsZSBmb3JtYXRzXCYjMzQ7XG4gICA0Olx0XG4gICA1Olx0Y29uZmlnIEJJTkZNVF9FTEZcbiAgIDY6XHRcdGJvb2wgXCYjMzQ7S2VybmVsIHN1cHBvcnQgZm9yIEVMRiBiaW5hcmllc1wmIzM0O1xuICAgNzpcdFx0ZGVwZW5kcyBvbiBNTVVcbiAgIDg6XHRcdHNlbGVjdCBFTEZDT1JFXG4gICA5Olx0XHRkZWZhdWx0IHlcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgRUxGIChFeGVjdXRhYmxlIGFuZCBMaW5rYWJsZSBGb3JtYXQpIGlzIGEgZm9ybWF0IGZvciBsaWJyYXJpZXMgYW5kXG4gIDEyOlx0XHQgIGV4ZWN1dGFibGVzIHVzZWQgYWNyb3NzIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzIGFuZCBvcGVyYXRpbmdcbiAgMTM6XHRcdCAgc3lzdGVtcy4gU2F5aW5nIFkgaGVyZSB3aWxsIGVuYWJsZSB5b3VyIGtlcm5lbCB0byBydW4gRUxGIGJpbmFyaWVzXG4gIDE0Olx0XHQgIGFuZCBlbmxhcmdlIGl0IGJ5IGFib3V0IDEzIEtCLiBFTEYgc3VwcG9ydCB1bmRlciBMaW51eCBoYXMgbm93IGFsbFxuICAxNTpcdFx0ICBidXQgcmVwbGFjZWQgdGhlIHRyYWRpdGlvbmFsIExpbnV4IGEub3V0IGZvcm1hdHMgKFFNQUdJQyBhbmQgWk1BR0lDKVxuICAxNjpcdFx0ICBiZWNhdXNlIGl0IGlzIHBvcnRhYmxlICh0aGlzIGRvZXMgKm5vdCogbWVhbiB0aGF0IHlvdSB3aWxsIGJlIGFibGVcbiAgMTc6XHRcdCAgdG8gcnVuIGV4ZWN1dGFibGVzIGZyb20gZGlmZmVyZW50IGFyY2hpdGVjdHVyZXMgb3Igb3BlcmF0aW5nIHN5c3RlbXNcbiAgMTg6XHRcdCAgaG93ZXZlcikgYW5kIG1ha2VzIGJ1aWxkaW5nIHJ1bi10aW1lIGxpYnJhcmllcyB2ZXJ5IGVhc3kuIE1hbnkgbmV3XG4gIDE5Olx0XHQgIGV4ZWN1dGFibGVzIGFyZSBkaXN0cmlidXRlZCBzb2xlbHkgaW4gRUxGIGZvcm1hdC4gWW91IGRlZmluaXRlbHlcbiAgMjA6XHRcdCAgd2FudCB0byBzYXkgWSBoZXJlLlxuICAyMTpcdFxuICAyMjpcdFx0ICBJbmZvcm1hdGlvbiBhYm91dCBFTEYgaXMgY29udGFpbmVkIGluIHRoZSBFTEYgSE9XVE8gYXZhaWxhYmxlIGZyb21cbiAgMjM6XHRcdCAgXHUwMDNjaHR0cDovL3d3dy50bGRwLm9yZy9kb2NzLmh0bWwjaG93dG9cdTAwM2UuXG4gIDI0Olx0XG4gIDI1Olx0XHQgIElmIHlvdSBmaW5kIHRoYXQgYWZ0ZXIgdXBncmFkaW5nIGZyb20gTGludXgga2VybmVsIDEuMiBhbmQgc2F5aW5nIFlcbiAgMjY6XHRcdCAgaGVyZSwgeW91IHN0aWxsIGNhbiYjMzk7dCBydW4gYW55IEVMRiBiaW5hcmllcyAodGhleSBqdXN0IGNyYXNoKSwgdGhlblxuICAyNzpcdFx0ICB5b3UmIzM5O2xsIGhhdmUgdG8gaW5zdGFsbCB0aGUgbmV3ZXN0IEVMRiBydW50aW1lIGxpYnJhcmllcywgaW5jbHVkaW5nXG4gIDI4Olx0XHQgIGxkLnNvIChjaGVjayB0aGUgZmlsZSBcdTAwM2NmaWxlOkRvY3VtZW50YXRpb24vQ2hhbmdlc1x1MDAzZSBmb3IgbG9jYXRpb24gYW5kXG4gIDI5Olx0XHQgIGxhdGVzdCB2ZXJzaW9uKS5cbiAgMzA6XHRcbiAgMzE6XHRjb25maWcgQklORk1UX0VMRl9LVU5JVF9URVNUXG4gIDMyOlx0XHRib29sIFwmIzM0O0J1aWxkIEtVbml0IHRlc3RzIGZvciBFTEYgYmluYXJ5IHN1cHBvcnRcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuICAzMzpcdFx0ZGVwZW5kcyBvbiBLVU5JVD15IFx1MDAyNlx1MDAyNiBCSU5GTVRfRUxGPXlcbiAgMzQ6XHRcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXG4gIDM1Olx0XHRoZWxwXG4gIDM2Olx0XHQgIFRoaXMgYnVpbGRzIHRoZSBFTEYgbG9hZGVyIEtVbml0IHRlc3RzLCB3aGljaCB0cnkgdG8gZ2F0aGVyXG4gIDM3Olx0XHQgIHByaW9yIGJ1ZyBmaXhlcyBpbnRvIGEgcmVncmVzc2lvbiB0ZXN0IGNvbGxlY3Rpb24uIFRoaXMgaXMgcmVhbGx5XG4gIDM4Olx0XHQgIG9ubHkgbmVlZGVkIGZvciBkZWJ1Z2dpbmcuIE5vdGUgdGhhdCB3aXRoIENPTkZJR19DT01QQVQ9eSwgdGhlXG4gIDM5Olx0XHQgIGNvbXBhdF9iaW5mbXRfZWxmIEtVbml0IHRlc3QgaXMgYWxzbyBjcmVhdGVkLlxuICA0MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAwNDo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDkxCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRm9jdXM6IEVMRiBCaW5hcnkgTG9hZGluZyAmYW1wOyBJbnRlcnByZXRhdGlvbioqCgpPa2F5LCBzbyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIGhlcmUgaXMgYEJJTkZNVF9FTEZgLCB0aGF0JiMzOTtzIHRoZSBiYXNlLiBNeSBmb2N1cyBoYXMgdG8gYmUgb24gdGhlIGZ1bmN0aW9ucyB0aGF0IHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcuIEkgc2VlIGBsb2FkX2VsZl9iaW5hcnlgIGFuZCBgbG9hZF9lbGZfZmRwaWNfYmluYXJ5YCBhcmUgbW9kaWZpZWQsIGFsb25nIHdpdGggdGhlIGFkZGl0aW9uIG9mIGByZXNvbHZlX2VsZl9pbnRlcnByZXRlcmAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBgbG9hZF9lbGZfYmluYXJ5YCBpcyBhIG5vdG9yaW91cyBob3QtcGF0aDsgdGhhdCYjMzk7cyBjYWxsZWQgZm9yIGV2ZXJ5IHNpbmdsZSBFTEYgZXhlY3V0aW9uLiBgcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXJgIGlzIG5ldywgYW5kIHRoYXQgaXMgY2FsbGVkIGR1cmluZyB0aGUgZXhlY3V0aW9uIG9mIGR5bmFtaWNhbGx5IGxpbmtlZCBFTEYgYmluYXJpZXMuIEkmIzM5O20gbm90IHN1cmUgaWYgaXQgaXMgYSBob3QtcGF0aCwgYnV0IGl0IGlzIGNhbGxlZCBmb3IgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gZXhlY3V0aW9uLgoKSG93ZXZlciwgSSB0aGluayBgcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXJgIGlzIHRoZSBtb3JlIGNvbXBlbGxpbmcgY2FuZGlkYXRlIGJlY2F1c2UgaXQmIzM5O3MgKm5ldyogbG9naWMsIHRoZSBjb2RlIHdlIHdhbnQgdG8gYmUgZHJpbGxpbmcgaW50by4gQWx0aG91Z2ggYGxvYWRfZWxmX2JpbmFyeWAgYW5kIGBsb2FkX2VsZl9mZHBpY19iaW5hcnlgIGFyZSBtb2RpZmllZCwgSSYjMzk7ZCBzYXkgdGhleSBhcmUgcHJldHR5IGdlbmVyaWMgYW5kIGxlc3Mgc3BlY2lmaWMgdG8gdGhlIGNoYW5nZXMuIFllcywgbGV0JiMzOTtzIGRlZmluaXRlbHkgaW5jbHVkZSBgcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXJgLgoKSG9sZCBvbi4gTm93IHRoYXQgSSB0aGluayBhYm91dCBpdCwgc2luY2UgYHJlc29sdmVfZWxmX2ludGVycHJldGVyYCBpcyBjYWxsZWQgb24gKmV2ZXJ5KiBkeW5hbWljYWxseSBsaW5rZWQgRUxGIGJpbmFyeSBleGVjdXRpb24sIGlmIHdlIGZvY3VzIHRoZSBmdXp6aW5nIG9uICpqdXN0KiB0aGlzLCBhcmUgd2UgZ29pbmcgdG8gYmUgY29uc3RhbnRseSBoaXR0aW5nIGl0IHdpdGggbm9ybWFsIGV4ZWN1dGlvbiBwYXR0ZXJucz8gVGhhdCBzYWlkLCBpdCBpcyAqdGhlKiBuZXdseSBhZGRlZCBmdW5jdGlvbiwgYW5kIHdlIG5lZWQgdG8gcHJvYmUgdGhlIGVkZ2UgY2FzZXMg4oCTIHRoaW5rIGAkT1JJR0lOYCByZXNvbHV0aW9uLCBhbmQgc28gb24uIFllcywgYHJlc29sdmVfZWxmX2ludGVycHJldGVyYCBzZWVtcyBsaWtlIGEgc3Ryb25nIGNvbnRlbmRlci4KCkxldCYjMzk7cyBxdWlja2x5IHNjYW4gdGhlIGNvbmZpZyBvcHRpb25zIGFnYWluLiBIbW0sIHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgYGZzL2V4ZWMuY2AgYW5kIGFkZHMgdGVzdHMgdG8gYGZzL3Rlc3RzL2V4ZWNfa3VuaXQuY2AgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL2AuIEkgc2VlIHRoZSBrdW5pdCB0ZXN0IGlzIHVuZGVyIGBDT05GSUdfRVhFQ19LVU5JVF9URVNUYC4gV2UgcHJvYmFibHkgZG9uJiMzOTt0IG5lZWQgdG8gZW5hYmxlIEtVbml0IHRlc3RzIHNwZWNpZmljYWxseSBmb3IgZnV6emluZyBwdXJwb3Nlcy4KCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGUgY29kZSBmb3IgYHJlc29sdmVfZWxmX2ludGVycHJldGVyYCBpbiBgZnMvZXhlYy5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMDQ6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leGVjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXhlYy5jPTIwMjQ9ZnNfaW5pdGNhbGwoaW5pdF9mc19leGVjX3N5c2N0bHMpO1xuLS1cbmZzL2V4ZWMuYy0yMDI2LVxuZnMvZXhlYy5jOjIwMjc6Y2hhciAqcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSwgY29uc3QgY2hhciAqZWxmX2ludGVycHJldGVyKVxuZnMvZXhlYy5jLTIwMjgte1xuLS1cbmZzL2V4ZWMuYy0yMDY2LX1cbmZzL2V4ZWMuYzoyMDY3OkVYUE9SVF9TWU1CT0wocmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIpO1xuZnMvZXhlYy5jLTIwNjgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA0OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxNDUKCQkJCQkJCW91dHB1dDogMTE5CgkJCQkJCQl0aG91Z2h0czogMjU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIFJlYWNoIGFuZCBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIEkmIzM5O3ZlIHRha2VuIGEgbG9vayBhdCB0aGlzIHBhdGNoLCBhbmQgbXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgaXQmIzM5O3MgZGVmaW5pdGVseSBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUuIFRoaXMgaXMgYmVjYXVzZSBpdCYjMzk7cyBhZGRpbmcgbmV3IGZ1bmN0aW9uYWxpdHkgdG8gcmVzb2x2ZSBgJE9SSUdJTmAgd2l0aGluIHRoZSBFTEYgaW50ZXJwcmV0ZXIgcGF0aCBkdXJpbmcgYGV4ZWN2ZWAuIFRoYXQmIzM5O3MgY29yZSBrZXJuZWwgbG9naWMsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIEVMRiBiaW5hcnkgbG9hZGVyLCBhbmQgdGhhdCYjMzk7cyAqYWx3YXlzKiByZWFjaGFibGUuIFRoZSBrZXkgZnVuY3Rpb24gSSYjMzk7bSBmb2N1c2luZyBvbiBoZXJlIGlzIGByZXNvbHZlX2VsZl9pbnRlcnByZXRlcmAuCgpOb3csIGxldCYjMzk7cyBjb25zaWRlciB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIFdlIGtub3cgdGhpcyBpcyBkZXBlbmRlbnQgb24gYEJJTkZNVF9FTEZgLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIHVzdWFsbHkgZW5hYmxlZCBieSBkZWZhdWx0LiBJJiMzOTtsbCBzdGlsbCBsaXN0IGl0IHRob3VnaCwgZm9yIGNsYXJpdHkuIEFkZGl0aW9uYWxseSwgYEJJTkZNVF9FTEZfRkRQSUNgIGlzIHBvdGVudGlhbGx5IHJlbGV2YW50LCBldmVuIGlmIEZEUElDIG1pZ2h0IG5vdCBiZSBwcmV2YWxlbnQgb24geDg2IGFyY2hpdGVjdHVyZXM7IGl04oCZcyBhIGdvb2QgcHJhY3RpY2UgdG8gaW5jbHVkZSBpdC4KClJlZmluaW5nIG15IGFuYWx5c2lzLCB0aGUgcGF0Y2gmIzM5O3MgY29yZSBpbXBhY3QgaXMgcHJvdmlkaW5nIGAkT1JJR0lOYCByZXNvbHV0aW9uIGR1cmluZyB0aGUgYGV4ZWN2ZWAgcHJvY2VzcyBmb3IgdGhlIEVMRiBpbnRlcnByZXRlci4gVGhlIGNoYW5nZXMgYXJlIHdpdGhpbiB0aGUgY29yZSBFTEYgbG9hZGluZyBsb2dpYywgc3BlY2lmaWNhbGx5IHRvdWNoaW5nIGBsb2FkX2VsZl9iaW5hcnlgIGFuZCBgbG9hZF9lbGZfZmRwaWNfYmluYXJ5YCwgYW5kIGludHJvZHVjaW5nIHRoZSBuZXcgYHJlc29sdmVfZWxmX2ludGVycHJldGVyYCBmdW5jdGlvbi4gVGhpcyBpcyB1bmRlbmlhYmx5IHJlYWNoYWJsZSBjb2RlLCBhbmQgdGhlcmVmb3JlIHNob3VsZCBiZSBjb25zaWRlcmVkIGFzIGEgdGFyZ2V0IGZvciBmdXp6aW5nLgoKTXkgbGlzdCBvZiBjcml0aWNhbCBpdGVtczoKCiogICAqKkZvY3VzIFN5bWJvbHMqKjogYHJlc29sdmVfZWxmX2ludGVycHJldGVyYAoqICAgKipFbmFibGVkIENvbmZpZ3VyYXRpb25zKio6IGBCSU5GTVRfRUxGYCwgYEJJTkZNVF9FTEZfRkRQSUNgCgpJJiMzOTttIGNvbmZpZGVudCBpbiBteSBhc3Nlc3NtZW50IGFuZCBJJiMzOTtsbCBzdWJtaXQgbXkgZmluZGluZ3MgdmlhIHRoZSBgc2V0LXJlc3VsdHNgIGNvbW1hbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDA0OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCSU5GTVRfRUxGJiMzNDssCiAgICAmIzM0O0JJTkZNVF9FTEZfRkRQSUMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZXNvbHZlX2VsZl9pbnRlcnByZXRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHJlc29sdmluZyAmIzM5OyRPUklHSU4mIzM5OyBpbiB0aGUgRUxGIGludGVycHJldGVyIHBhdGggZHVyaW5nIGV4ZWN2ZS4gVGhpcyBtb2RpZmllcyB0aGUgY29yZSBFTEYgYmluYXJ5IGxvYWRpbmcgbG9naWMgYW5kIGludHJvZHVjZXMgYSBuZXcgZnVuY3Rpb24gYHJlc29sdmVfZWxmX2ludGVycHJldGVyYC4gVGhpcyBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgY29kZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgcGF0aCByZXNvbHV0aW9uIGFuZCBtZW1vcnkgbWFuYWdlbWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QklORk1UX0VMRiYjMzQ7LAogICAgJiMzNDtCSU5GTVRfRUxGX0ZEUElDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciByZXNvbHZpbmcgJiMzOTskT1JJR0lOJiMzOTsgaW4gdGhlIEVMRiBpbnRlcnByZXRlciBwYXRoIGR1cmluZyBleGVjdmUuIFRoaXMgbW9kaWZpZXMgdGhlIGNvcmUgRUxGIGJpbmFyeSBsb2FkaW5nIGxvZ2ljIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGByZXNvbHZlX2VsZl9pbnRlcnByZXRlcmAuIFRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IHBhdGggcmVzb2x1dGlvbiBhbmQgbWVtb3J5IG1hbmFnZW1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNDo1NjowOS45OTg1NjM5OTFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDY3OTE4ODc2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCSU5GTVRfRUxGXCIsXG4gICAgXCJCSU5GTVRfRUxGX0ZEUElDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHJlc29sdmluZyAnJE9SSUdJTicgaW4gdGhlIEVMRiBpbnRlcnByZXRlciBwYXRoIGR1cmluZyBleGVjdmUuIFRoaXMgbW9kaWZpZXMgdGhlIGNvcmUgRUxGIGJpbmFyeSBsb2FkaW5nIGxvZ2ljIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGByZXNvbHZlX2VsZl9pbnRlcnByZXRlcmAuIFRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IHBhdGggcmVzb2x1dGlvbiBhbmQgbWVtb3J5IG1hbmFnZW1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA0OjU2OjA5Ljk5ODU3MDY2MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUwNzE2OTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjIyZjRlOTUyNGE5NjVkZWQ1NWYwMzZkNmY2MThlNzUyN2QzZjVkYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1biAyMiAwNDo1NjowOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9iaW5mbXRfZWxmLmMgYi9mcy9iaW5mbXRfZWxmLmNcXG5pbmRleCAxNmE1NmI2YjNmNmNhMS4uYWYxMWY5NmFlMzM3MWQgMTAwNjQ0XFxuLS0tIGEvZnMvYmluZm10X2VsZi5jXFxuKysrIGIvZnMvYmluZm10X2VsZi5jXFxuQEAgLTg3Miw3ICs4NzIsNyBAQCBzdGF0aWMgaW50IGxvYWRfZWxmX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbiBcXG4gXFx0ZWxmX3BwbnQgPSBlbGZfcGhkYXRhO1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZWxmX2V4LVxcdTAwM2VlX3BobnVtOyBpKyssIGVsZl9wcG50KyspIHtcXG4tXFx0XFx0Y2hhciAqZWxmX2ludGVycHJldGVyO1xcbitcXHRcXHRjaGFyICplbGZfaW50ZXJwcmV0ZXIsICpyZXNvbHZlZF9pbnRlcnA7XFxuIFxcbiBcXHRcXHRpZiAoZWxmX3BwbnQtXFx1MDAzZXBfdHlwZSA9PSBQVF9HTlVfUFJPUEVSVFkpIHtcXG4gXFx0XFx0XFx0ZWxmX3Byb3BlcnR5X3BoZGF0YSA9IGVsZl9wcG50O1xcbkBAIC05MDQsOCArOTA0LDE1IEBAIHN0YXRpYyBpbnQgbG9hZF9lbGZfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXFxuIFxcdFxcdGlmIChlbGZfaW50ZXJwcmV0ZXJbZWxmX3BwbnQtXFx1MDAzZXBfZmlsZXN6IC0gMV0gIT0gJ1xcXFwwJylcXG4gXFx0XFx0XFx0Z290byBvdXRfZnJlZV9pbnRlcnA7XFxuIFxcbi1cXHRcXHRpbnRlcnByZXRlciA9IG9wZW5fZXhlYyhlbGZfaW50ZXJwcmV0ZXIpO1xcbitcXHRcXHRyZXNvbHZlZF9pbnRlcnAgPSByZXNvbHZlX2VsZl9pbnRlcnByZXRlcihicHJtLCBlbGZfaW50ZXJwcmV0ZXIpO1xcbiBcXHRcXHRrZnJlZShlbGZfaW50ZXJwcmV0ZXIpO1xcbitcXHRcXHRpZiAoSVNfRVJSKHJlc29sdmVkX2ludGVycCkpIHtcXG4rXFx0XFx0XFx0cmV0dmFsID0gUFRSX0VSUihyZXNvbHZlZF9pbnRlcnApO1xcbitcXHRcXHRcXHRnb3RvIG91dF9mcmVlX3BoO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRpbnRlcnByZXRlciA9IG9wZW5fZXhlYyhyZXNvbHZlZF9pbnRlcnApO1xcbitcXHRcXHRrZnJlZShyZXNvbHZlZF9pbnRlcnApO1xcbiBcXHRcXHRyZXR2YWwgPSBQVFJfRVJSKGludGVycHJldGVyKTtcXG4gXFx0XFx0aWYgKElTX0VSUihpbnRlcnByZXRlcikpXFxuIFxcdFxcdFxcdGdvdG8gb3V0X2ZyZWVfcGg7XFxuZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9lbGZfZmRwaWMuYyBiL2ZzL2JpbmZtdF9lbGZfZmRwaWMuY1xcbmluZGV4IDdlMzEwODQ4OWM4M2NhLi5lODU3MjdkNzEyZTM4MSAxMDA2NDRcXG4tLS0gYS9mcy9iaW5mbXRfZWxmX2ZkcGljLmNcXG4rKysgYi9mcy9iaW5mbXRfZWxmX2ZkcGljLmNcXG5AQCAtMjMwLDcgKzIzMCw5IEBAIHN0YXRpYyBpbnQgbG9hZF9lbGZfZmRwaWNfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZXhlY19wYXJhbXMuaGRyLmVfcGhudW07IGkrKywgcGhkcisrKSB7XFxuIFxcdFxcdHN3aXRjaCAocGhkci1cXHUwMDNlcF90eXBlKSB7XFxuLVxcdFxcdGNhc2UgUFRfSU5URVJQOlxcbitcXHRcXHRjYXNlIFBUX0lOVEVSUDoge1xcbitcXHRcXHRcXHRjaGFyICpyZXNvbHZlZF9pbnRlcnA7XFxuK1xcbiBcXHRcXHRcXHRyZXR2YWwgPSAtRU5PTUVNO1xcbiBcXHRcXHRcXHRpZiAocGhkci1cXHUwMDNlcF9maWxlc3ogXFx1MDAzZSBQQVRIX01BWClcXG4gXFx0XFx0XFx0XFx0Z290byBlcnJvcjtcXG5AQCAtMjU5LDcgKzI2MSwxNSBAQCBzdGF0aWMgaW50IGxvYWRfZWxmX2ZkcGljX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbiBcXHRcXHRcXHRrZGVidWcoXFxcIlVzaW5nIEVMRiBpbnRlcnByZXRlciAlc1xcXCIsIGludGVycHJldGVyX25hbWUpO1xcbiBcXG4gXFx0XFx0XFx0LyogcmVwbGFjZSB0aGUgcHJvZ3JhbSB3aXRoIHRoZSBpbnRlcnByZXRlciAqL1xcbi1cXHRcXHRcXHRpbnRlcnByZXRlciA9IG9wZW5fZXhlYyhpbnRlcnByZXRlcl9uYW1lKTtcXG4rXFx0XFx0XFx0cmVzb2x2ZWRfaW50ZXJwID0gcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIoYnBybSwgaW50ZXJwcmV0ZXJfbmFtZSk7XFxuK1xcdFxcdFxcdGtmcmVlKGludGVycHJldGVyX25hbWUpO1xcbitcXHRcXHRcXHRpZiAoSVNfRVJSKHJlc29sdmVkX2ludGVycCkpIHtcXG4rXFx0XFx0XFx0XFx0cmV0dmFsID0gUFRSX0VSUihyZXNvbHZlZF9pbnRlcnApO1xcbitcXHRcXHRcXHRcXHRnb3RvIGVycm9yO1xcbitcXHRcXHRcXHR9XFxuK1xcbitcXHRcXHRcXHRpbnRlcnByZXRlciA9IG9wZW5fZXhlYyhyZXNvbHZlZF9pbnRlcnApO1xcbitcXHRcXHRcXHRrZnJlZShyZXNvbHZlZF9pbnRlcnApO1xcbiBcXHRcXHRcXHRyZXR2YWwgPSBQVFJfRVJSKGludGVycHJldGVyKTtcXG4gXFx0XFx0XFx0aWYgKElTX0VSUihpbnRlcnByZXRlcikpIHtcXG4gXFx0XFx0XFx0XFx0aW50ZXJwcmV0ZXIgPSBOVUxMO1xcbkBAIC0yODQsNiArMjk0LDcgQEAgc3RhdGljIGludCBsb2FkX2VsZl9mZHBpY19iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4gXFxuIFxcdFxcdFxcdGludGVycF9wYXJhbXMuaGRyID0gKigoc3RydWN0IGVsZmhkciAqKSBicHJtLVxcdTAwM2VidWYpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fVxcbiBcXG4gXFx0XFx0Y2FzZSBQVF9MT0FEOlxcbiAjaWZkZWYgQ09ORklHX01NVVxcbmRpZmYgLS1naXQgYS9mcy9leGVjLmMgYi9mcy9leGVjLmNcXG5pbmRleCBiOTJmZTdkYjE3NmNmZi4uMDk3OGFlNjEzMDRhOTQgMTAwNjQ0XFxuLS0tIGEvZnMvZXhlYy5jXFxuKysrIGIvZnMvZXhlYy5jXFxuQEAgLTIwMjQsNiArMjAyNCw0OCBAQCBzdGF0aWMgaW50IF9faW5pdCBpbml0X2ZzX2V4ZWNfc3lzY3Rscyh2b2lkKVxcbiBmc19pbml0Y2FsbChpbml0X2ZzX2V4ZWNfc3lzY3Rscyk7XFxuICNlbmRpZiAvKiBDT05GSUdfU1lTQ1RMICovXFxuIFxcbitjaGFyICpyZXNvbHZlX2VsZl9pbnRlcnByZXRlcihzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLCBjb25zdCBjaGFyICplbGZfaW50ZXJwcmV0ZXIpXFxuK3tcXG4rXFx0Y2hhciAqcGF0aGJ1ZiwgKnBhdGgsICpzbGFzaCwgKnJlc29sdmVkO1xcbitcXG4rXFx0aWYgKHN0cm5jbXAoZWxmX2ludGVycHJldGVyLCBcXFwiJE9SSUdJTlxcXCIsIDcpICE9IDApIHtcXG4rXFx0XFx0Y2hhciAqcmV0ID0ga3N0cmR1cChlbGZfaW50ZXJwcmV0ZXIsIEdGUF9LRVJORUwpO1xcbitcXG4rXFx0XFx0cmV0dXJuIHJldCA/IHJldCA6IEVSUl9QVFIoLUVOT01FTSk7XFxuK1xcdH1cXG4rXFxuK1xcdHBhdGhidWYgPSBrbWFsbG9jKFBBVEhfTUFYLCBHRlBfS0VSTkVMKTtcXG4rXFx0aWYgKCFwYXRoYnVmKVxcbitcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcXG4rXFxuK1xcdHBhdGggPSBmaWxlX3BhdGgoYnBybS1cXHUwMDNlZmlsZSwgcGF0aGJ1ZiwgUEFUSF9NQVgpO1xcbitcXHRpZiAoSVNfRVJSKHBhdGgpKSB7XFxuK1xcdFxcdGtmcmVlKHBhdGhidWYpO1xcbitcXHRcXHRyZXR1cm4gKGNoYXIgKilwYXRoO1xcbitcXHR9XFxuK1xcbitcXHRzbGFzaCA9IHN0cnJjaHIocGF0aCwgJy8nKTtcXG4rXFx0aWYgKHNsYXNoKSB7XFxuK1xcdFxcdGlmIChzbGFzaCA9PSBwYXRoKVxcbitcXHRcXHRcXHQqKHNsYXNoICsgMSkgPSAnXFxcXDAnO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdCpzbGFzaCA9ICdcXFxcMCc7XFxuK1xcdH0gZWxzZSB7XFxuK1xcdFxcdGtmcmVlKHBhdGhidWYpO1xcbitcXHRcXHRjaGFyICpyZXQgPSBrc3RyZHVwKGVsZl9pbnRlcnByZXRlciwgR0ZQX0tFUk5FTCk7XFxuK1xcbitcXHRcXHRyZXR1cm4gcmV0ID8gcmV0IDogRVJSX1BUUigtRU5PTUVNKTtcXG4rXFx0fVxcbitcXG4rXFx0cmVzb2x2ZWQgPSBrYXNwcmludGYoR0ZQX0tFUk5FTCwgXFxcIiVzJXNcXFwiLCBwYXRoLCBlbGZfaW50ZXJwcmV0ZXIgKyA3KTtcXG4rXFx0a2ZyZWUocGF0aGJ1Zik7XFxuK1xcdGlmICghcmVzb2x2ZWQpXFxuK1xcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xcbitcXG4rXFx0cmV0dXJuIHJlc29sdmVkO1xcbit9XFxuK0VYUE9SVF9TWU1CT0wocmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIpO1xcbitcXG4gI2lmZGVmIENPTkZJR19FWEVDX0tVTklUX1RFU1RcXG4gI2luY2x1ZGUgXFxcInRlc3RzL2V4ZWNfa3VuaXQuY1xcXCJcXG4gI2VuZGlmXFxuZGlmZiAtLWdpdCBhL2ZzL3Rlc3RzL2V4ZWNfa3VuaXQuYyBiL2ZzL3Rlc3RzL2V4ZWNfa3VuaXQuY1xcbmluZGV4IDFjMzJjYWMwOThjZjUxLi45OTFiOWFiYWQzZWVkZiAxMDA2NDRcXG4tLS0gYS9mcy90ZXN0cy9leGVjX2t1bml0LmNcXG4rKysgYi9mcy90ZXN0cy9leGVjX2t1bml0LmNcXG5AQCAtMTE5LDggKzExOSwzNCBAQCBzdGF0aWMgdm9pZCBleGVjX3Rlc3RfYnBybV9zdGFja19saW1pdHMoc3RydWN0IGt1bml0ICp0ZXN0KVxcbiBcXHR9XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIGV4ZWNfdGVzdF9yZXNvbHZlX2VsZl9pbnRlcnByZXRlcihzdHJ1Y3Qga3VuaXQgKnRlc3QpXFxuK3tcXG4rXFx0c3RydWN0IGxpbnV4X2JpbnBybSBicHJtID0geyAuZmlsZSA9IE5VTEwgfTtcXG4rXFx0c3RydWN0IGZpbGUgKmY7XFxuK1xcdGNoYXIgKnJlc29sdmVkO1xcbitcXG4rXFx0Ly8gVGVzdCAxOiBOb24tJE9SSUdJTiBpbnRlcnByZXRlciBwYXRoIHNob3VsZCBqdXN0IGJlIGR1cGxpY2F0ZWRcXG4rXFx0cmVzb2x2ZWQgPSByZXNvbHZlX2VsZl9pbnRlcnByZXRlcihcXHUwMDI2YnBybSwgXFxcIi9saWI2NC9sZC1saW51eC14ODYtNjQuc28uMlxcXCIpO1xcbitcXHRLVU5JVF9BU1NFUlRfTk9UX0VSUl9PUl9OVUxMKHRlc3QsIHJlc29sdmVkKTtcXG4rXFx0S1VOSVRfRVhQRUNUX1NUUkVRKHRlc3QsIHJlc29sdmVkLCBcXFwiL2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yXFxcIik7XFxuK1xcdGtmcmVlKHJlc29sdmVkKTtcXG4rXFxuK1xcdC8vIFRlc3QgMjogJE9SSUdJTiBpbnRlcnByZXRlciBwYXRoXFxuK1xcdGYgPSBmaWxwX29wZW4oXFxcIi9cXFwiLCBPX1JET05MWSwgMCk7XFxuK1xcdEtVTklUX0FTU0VSVF9OT1RfRVJSX09SX05VTEwodGVzdCwgZik7XFxuK1xcdGJwcm0uZmlsZSA9IGY7XFxuK1xcbitcXHRyZXNvbHZlZCA9IHJlc29sdmVfZWxmX2ludGVycHJldGVyKFxcdTAwMjZicHJtLCBcXFwiJE9SSUdJTi8uLi9saWIvbGQuc29cXFwiKTtcXG4rXFx0S1VOSVRfQVNTRVJUX05PVF9FUlJfT1JfTlVMTCh0ZXN0LCByZXNvbHZlZCk7XFxuK1xcdEtVTklUX0VYUEVDVF9TVFJFUSh0ZXN0LCByZXNvbHZlZCwgXFxcIi8vLi4vbGliL2xkLnNvXFxcIik7XFxuK1xcdGtmcmVlKHJlc29sdmVkKTtcXG4rXFxuK1xcdGZpbHBfY2xvc2UoZiwgTlVMTCk7XFxuK31cXG4rXFxuIHN0YXRpYyBzdHJ1Y3Qga3VuaXRfY2FzZSBleGVjX3Rlc3RfY2FzZXNbXSA9IHtcXG4gXFx0S1VOSVRfQ0FTRShleGVjX3Rlc3RfYnBybV9zdGFja19saW1pdHMpLFxcbitcXHRLVU5JVF9DQVNFKGV4ZWNfdGVzdF9yZXNvbHZlX2VsZl9pbnRlcnByZXRlciksXFxuIFxcdHt9LFxcbiB9O1xcbiBcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9iaW5mbXRzLmggYi9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaFxcbmluZGV4IDJjNzdlMzgzZTczNzU3Li4xNzQxOWNkM2RiYzczMyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvYmluZm10cy5oXFxuQEAgLTE1MCw0ICsxNTAsNiBAQCBleHRlcm4gc3NpemVfdCByZWFkX2NvZGUoc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgbG9uZywgbG9mZl90LCBzaXplX3QpO1xcbiBpbnQga2VybmVsX2V4ZWN2ZShjb25zdCBjaGFyICpmaWxlbmFtZSxcXG4gXFx0XFx0ICBjb25zdCBjaGFyICpjb25zdCAqYXJndiwgY29uc3QgY2hhciAqY29uc3QgKmVudnApO1xcbiBcXG4rY2hhciAqcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSwgY29uc3QgY2hhciAqZWxmX2ludGVycHJldGVyKTtcXG4rXFxuICNlbmRpZiAvKiBfTElOVVhfQklORk1UU19IICovXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL01ha2VmaWxlXFxuaW5kZXggNDVhM2NmYzQzNWNmZDcuLjVlMmUzMDVjYjBiYjY4IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvTWFrZWZpbGVcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL01ha2VmaWxlXFxuQEAgLTEwLDkgKzEwLDkgQEAgQUxJR05fUElFUyAgICAgICAgOj0gJChwYXRzdWJzdCAlLGxvYWRfYWRkcmVzcy4lLCQoQUxJR05TKSlcXG4gQUxJR05fU1RBVElDX1BJRVMgOj0gJChwYXRzdWJzdCAlLGxvYWRfYWRkcmVzcy5zdGF0aWMuJSwkKEFMSUdOUykpXFxuIEFMSUdOTUVOVF9URVNUUyAgIDo9ICQoQUxJR05fUElFUykgJChBTElHTl9TVEFUSUNfUElFUylcXG4gXFxuLVRFU1RfUFJPR1MgOj0gYmluZm10X3NjcmlwdC5weSBjaGVjay1leGVjLXRlc3RzLnNoXFxuLVRFU1RfR0VOX1BST0dTIDo9IGV4ZWN2ZWF0IG5vbi1yZWd1bGFyICQoQUxJR05NRU5UX1RFU1RTKVxcbi1URVNUX0dFTl9QUk9HU19FWFRFTkRFRCA6PSBmYWxzZSBpbmMgc2V0LWV4ZWMgc2NyaXB0LWV4ZWMuaW5jIHNjcmlwdC1ub2V4ZWMuaW5jXFxuK1RFU1RfUFJPR1MgOj0gYmluZm10X3NjcmlwdC5weSBjaGVjay1leGVjLXRlc3RzLnNoIG9yaWdpbl9pbnRlcnAuc2hcXG4rVEVTVF9HRU5fUFJPR1MgOj0gZXhlY3ZlYXQgbm9uLXJlZ3VsYXIgJChBTElHTk1FTlRfVEVTVFMpIHRlc3RfcHJvZ1xcbitURVNUX0dFTl9QUk9HU19FWFRFTkRFRCA6PSBmYWxzZSBpbmMgc2V0LWV4ZWMgc2NyaXB0LWV4ZWMuaW5jIHNjcmlwdC1ub2V4ZWMuaW5jIG1vY2tfaW50ZXJwXFxuIFRFU1RfR0VOX0ZJTEVTIDo9IGV4ZWN2ZWF0LnN5bWxpbmsgZXhlY3ZlYXQuZGVuYXR1cmVkIHNjcmlwdCBzdWJkaXJcXG4gIyBNYWtlZmlsZSBpcyBhIHJ1bi10aW1lIGRlcGVuZGVuY3ksIHNpbmNlIGl0J3MgYWNjZXNzZWQgYnkgdGhlIGV4ZWN2ZWF0IHRlc3RcXG4gVEVTVF9GSUxFUyA6PSBNYWtlZmlsZVxcbkBAIC01NSwzICs1NSw5IEBAICQoT1VUUFVUKS9zY3JpcHQtZXhlYy5pbmM6ICQoQ0hFQ0tfRVhFQ19TQU1QTEVTKS9zY3JpcHQtZXhlYy5pbmNcXG4gXFx0Y3AgJFxcdTAwM2MgJEBcXG4gJChPVVRQVVQpL3NjcmlwdC1ub2V4ZWMuaW5jOiAkKENIRUNLX0VYRUNfU0FNUExFUykvc2NyaXB0LW5vZXhlYy5pbmNcXG4gXFx0Y3AgJFxcdTAwM2MgJEBcXG4rXFxuKyQoT1VUUFVUKS9tb2NrX2ludGVycDogbW9ja19pbnRlcnAuY1xcbitcXHQkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAtc3RhdGljIC1ub3N0ZGxpYiAtaW5jbHVkZSAuLi8uLi8uLi9pbmNsdWRlL25vbGliYy9ub2xpYmMuaCAkXFx1MDAzYyAtbyAkQFxcbitcXG4rJChPVVRQVVQpL3Rlc3RfcHJvZzogdGVzdF9wcm9nLmMgJChPVVRQVVQpL21vY2tfaW50ZXJwXFxuK1xcdCQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpIC1XbCwtZHluYW1pYy1saW5rZXIsJyQkT1JJR0lOL21vY2tfaW50ZXJwJyAkXFx1MDAzYyAtbyAkQFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL21vY2tfaW50ZXJwLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL21vY2tfaW50ZXJwLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi45YzljYTEwOTgxY2NmZlxcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL21vY2tfaW50ZXJwLmNcXG5AQCAtMCwwICsxLDYgQEBcXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4raW50IG1haW4odm9pZClcXG4re1xcbitcXHR3cml0ZSgxLCBcXFwiSGVsbG8gZnJvbSBtb2NrIGludGVycHJldGVyIVxcXFxuXFxcIiwgMjkpO1xcbitcXHRyZXR1cm4gNDI7XFxuK31cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9vcmlnaW5faW50ZXJwLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9vcmlnaW5faW50ZXJwLnNoXFxubmV3IGZpbGUgbW9kZSAxMDA3NTVcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNjM1YTQwODM5ODAyNTFcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9vcmlnaW5faW50ZXJwLnNoXFxuQEAgLTAsMCArMSwxNiBAQFxcbisjIS9iaW4vc2hcXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbitcXG4rIyBFeGVjdXRlIHRoZSB0ZXN0IHByb2dyYW0gd2hpY2ggaGFzIGl0cyBpbnRlcnByZXRlciBzZXQgdG8gJE9SSUdJTi9tb2NrX2ludGVycFxcbisjIE5vdGUgdGhhdCBtb2NrX2ludGVycCBtdXN0IGJlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cXG4rZGlyPSQoZGlybmFtZSBcXFwiJDBcXFwiKVxcbitvdXQ9JChcXFwiJGRpclxcXCIvdGVzdF9wcm9nIDJcXHUwMDNlXFx1MDAyNjEpXFxuK2V4aXRfY29kZT0kP1xcbitcXG4raWYgWyAkZXhpdF9jb2RlIC1lcSA0MiBdIFxcdTAwMjZcXHUwMDI2IFsgXFxcIiRvdXRcXFwiID0gXFxcIkhlbGxvIGZyb20gbW9jayBpbnRlcnByZXRlciFcXFwiIF07IHRoZW5cXG4rXFx0ZWNobyBcXFwib3JpZ2luX2ludGVycDogUEFTU1xcXCJcXG4rXFx0ZXhpdCAwXFxuK2Vsc2VcXG4rXFx0ZWNobyBcXFwib3JpZ2luX2ludGVycDogRkFJTCAoZXhpdF9jb2RlPSRleGl0X2NvZGUsIG91dHB1dD0nJG91dCcpXFxcIlxcbitcXHRleGl0IDFcXG4rZmlcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy90ZXN0X3Byb2cuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvdGVzdF9wcm9nLmNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi40NTE2MTRkZWYzZGIxY1xcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL3Rlc3RfcHJvZy5jXFxuQEAgLTAsMCArMSw1IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuK2ludCBtYWluKHZvaWQpXFxuK3tcXG4rXFx0cmV0dXJuIDA7IC8qIFNob3VsZCBuZXZlciBiZSByZWFjaGVkIGlmIGludGVycHJldGVyIGlzIGxvYWRlZCBpbnN0ZWFkICovXFxuK31cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDQ6NTY6MTAuNjUwMjUyNDM4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDAyNzQ5MTQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCSU5GTVRfRUxGXCIsXG4gICAgXCJCSU5GTVRfRUxGX0ZEUElDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHJlc29sdmluZyAnJE9SSUdJTicgaW4gdGhlIEVMRiBpbnRlcnByZXRlciBwYXRoIGR1cmluZyBleGVjdmUuIFRoaXMgbW9kaWZpZXMgdGhlIGNvcmUgRUxGIGJpbmFyeSBsb2FkaW5nIGxvZ2ljIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGByZXNvbHZlX2VsZl9pbnRlcnByZXRlcmAuIFRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IHBhdGggcmVzb2x1dGlvbiBhbmQgbWVtb3J5IG1hbmFnZW1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjIyZjRlOTUyNGE5NjVkZWQ1NWYwMzZkNmY2MThlNzUyN2QzZjVkYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVuIDIyIDA0OjU2OjA4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvYmluZm10X2VsZi5jIGIvZnMvYmluZm10X2VsZi5jXG5pbmRleCAxNmE1NmI2YjNmNmNhMS4uYWYxMWY5NmFlMzM3MWQgMTAwNjQ0XG4tLS0gYS9mcy9iaW5mbXRfZWxmLmNcbisrKyBiL2ZzL2JpbmZtdF9lbGYuY1xuQEAgLTg3Miw3ICs4NzIsNyBAQCBzdGF0aWMgaW50IGxvYWRfZWxmX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuIFxuIFx0ZWxmX3BwbnQgPSBlbGZfcGhkYXRhO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZWxmX2V4LVx1MDAzZWVfcGhudW07IGkrKywgZWxmX3BwbnQrKykge1xuLVx0XHRjaGFyICplbGZfaW50ZXJwcmV0ZXI7XG4rXHRcdGNoYXIgKmVsZl9pbnRlcnByZXRlciwgKnJlc29sdmVkX2ludGVycDtcbiBcbiBcdFx0aWYgKGVsZl9wcG50LVx1MDAzZXBfdHlwZSA9PSBQVF9HTlVfUFJPUEVSVFkpIHtcbiBcdFx0XHRlbGZfcHJvcGVydHlfcGhkYXRhID0gZWxmX3BwbnQ7XG5AQCAtOTA0LDggKzkwNCwxNSBAQCBzdGF0aWMgaW50IGxvYWRfZWxmX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuIFx0XHRpZiAoZWxmX2ludGVycHJldGVyW2VsZl9wcG50LVx1MDAzZXBfZmlsZXN6IC0gMV0gIT0gJ1xcMCcpXG4gXHRcdFx0Z290byBvdXRfZnJlZV9pbnRlcnA7XG4gXG4tXHRcdGludGVycHJldGVyID0gb3Blbl9leGVjKGVsZl9pbnRlcnByZXRlcik7XG4rXHRcdHJlc29sdmVkX2ludGVycCA9IHJlc29sdmVfZWxmX2ludGVycHJldGVyKGJwcm0sIGVsZl9pbnRlcnByZXRlcik7XG4gXHRcdGtmcmVlKGVsZl9pbnRlcnByZXRlcik7XG4rXHRcdGlmIChJU19FUlIocmVzb2x2ZWRfaW50ZXJwKSkge1xuK1x0XHRcdHJldHZhbCA9IFBUUl9FUlIocmVzb2x2ZWRfaW50ZXJwKTtcbitcdFx0XHRnb3RvIG91dF9mcmVlX3BoO1xuK1x0XHR9XG4rXG4rXHRcdGludGVycHJldGVyID0gb3Blbl9leGVjKHJlc29sdmVkX2ludGVycCk7XG4rXHRcdGtmcmVlKHJlc29sdmVkX2ludGVycCk7XG4gXHRcdHJldHZhbCA9IFBUUl9FUlIoaW50ZXJwcmV0ZXIpO1xuIFx0XHRpZiAoSVNfRVJSKGludGVycHJldGVyKSlcbiBcdFx0XHRnb3RvIG91dF9mcmVlX3BoO1xuZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9lbGZfZmRwaWMuYyBiL2ZzL2JpbmZtdF9lbGZfZmRwaWMuY1xuaW5kZXggN2UzMTA4NDg5YzgzY2EuLmU4NTcyN2Q3MTJlMzgxIDEwMDY0NFxuLS0tIGEvZnMvYmluZm10X2VsZl9mZHBpYy5jXG4rKysgYi9mcy9iaW5mbXRfZWxmX2ZkcGljLmNcbkBAIC0yMzAsNyArMjMwLDkgQEAgc3RhdGljIGludCBsb2FkX2VsZl9mZHBpY19iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGV4ZWNfcGFyYW1zLmhkci5lX3BobnVtOyBpKyssIHBoZHIrKykge1xuIFx0XHRzd2l0Y2ggKHBoZHItXHUwMDNlcF90eXBlKSB7XG4tXHRcdGNhc2UgUFRfSU5URVJQOlxuK1x0XHRjYXNlIFBUX0lOVEVSUDoge1xuK1x0XHRcdGNoYXIgKnJlc29sdmVkX2ludGVycDtcbitcbiBcdFx0XHRyZXR2YWwgPSAtRU5PTUVNO1xuIFx0XHRcdGlmIChwaGRyLVx1MDAzZXBfZmlsZXN6IFx1MDAzZSBQQVRIX01BWClcbiBcdFx0XHRcdGdvdG8gZXJyb3I7XG5AQCAtMjU5LDcgKzI2MSwxNSBAQCBzdGF0aWMgaW50IGxvYWRfZWxmX2ZkcGljX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuIFx0XHRcdGtkZWJ1ZyhcIlVzaW5nIEVMRiBpbnRlcnByZXRlciAlc1wiLCBpbnRlcnByZXRlcl9uYW1lKTtcbiBcbiBcdFx0XHQvKiByZXBsYWNlIHRoZSBwcm9ncmFtIHdpdGggdGhlIGludGVycHJldGVyICovXG4tXHRcdFx0aW50ZXJwcmV0ZXIgPSBvcGVuX2V4ZWMoaW50ZXJwcmV0ZXJfbmFtZSk7XG4rXHRcdFx0cmVzb2x2ZWRfaW50ZXJwID0gcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIoYnBybSwgaW50ZXJwcmV0ZXJfbmFtZSk7XG4rXHRcdFx0a2ZyZWUoaW50ZXJwcmV0ZXJfbmFtZSk7XG4rXHRcdFx0aWYgKElTX0VSUihyZXNvbHZlZF9pbnRlcnApKSB7XG4rXHRcdFx0XHRyZXR2YWwgPSBQVFJfRVJSKHJlc29sdmVkX2ludGVycCk7XG4rXHRcdFx0XHRnb3RvIGVycm9yO1xuK1x0XHRcdH1cbitcbitcdFx0XHRpbnRlcnByZXRlciA9IG9wZW5fZXhlYyhyZXNvbHZlZF9pbnRlcnApO1xuK1x0XHRcdGtmcmVlKHJlc29sdmVkX2ludGVycCk7XG4gXHRcdFx0cmV0dmFsID0gUFRSX0VSUihpbnRlcnByZXRlcik7XG4gXHRcdFx0aWYgKElTX0VSUihpbnRlcnByZXRlcikpIHtcbiBcdFx0XHRcdGludGVycHJldGVyID0gTlVMTDtcbkBAIC0yODQsNiArMjk0LDcgQEAgc3RhdGljIGludCBsb2FkX2VsZl9mZHBpY19iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbiBcbiBcdFx0XHRpbnRlcnBfcGFyYW1zLmhkciA9ICooKHN0cnVjdCBlbGZoZHIgKikgYnBybS1cdTAwM2VidWYpO1xuIFx0XHRcdGJyZWFrO1xuK1x0XHR9XG4gXG4gXHRcdGNhc2UgUFRfTE9BRDpcbiAjaWZkZWYgQ09ORklHX01NVVxuZGlmZiAtLWdpdCBhL2ZzL2V4ZWMuYyBiL2ZzL2V4ZWMuY1xuaW5kZXggYjkyZmU3ZGIxNzZjZmYuLjA5NzhhZTYxMzA0YTk0IDEwMDY0NFxuLS0tIGEvZnMvZXhlYy5jXG4rKysgYi9mcy9leGVjLmNcbkBAIC0yMDI0LDYgKzIwMjQsNDggQEAgc3RhdGljIGludCBfX2luaXQgaW5pdF9mc19leGVjX3N5c2N0bHModm9pZClcbiBmc19pbml0Y2FsbChpbml0X2ZzX2V4ZWNfc3lzY3Rscyk7XG4gI2VuZGlmIC8qIENPTkZJR19TWVNDVEwgKi9cbiBcbitjaGFyICpyZXNvbHZlX2VsZl9pbnRlcnByZXRlcihzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLCBjb25zdCBjaGFyICplbGZfaW50ZXJwcmV0ZXIpXG4re1xuK1x0Y2hhciAqcGF0aGJ1ZiwgKnBhdGgsICpzbGFzaCwgKnJlc29sdmVkO1xuK1xuK1x0aWYgKHN0cm5jbXAoZWxmX2ludGVycHJldGVyLCBcIiRPUklHSU5cIiwgNykgIT0gMCkge1xuK1x0XHRjaGFyICpyZXQgPSBrc3RyZHVwKGVsZl9pbnRlcnByZXRlciwgR0ZQX0tFUk5FTCk7XG4rXG4rXHRcdHJldHVybiByZXQgPyByZXQgOiBFUlJfUFRSKC1FTk9NRU0pO1xuK1x0fVxuK1xuK1x0cGF0aGJ1ZiA9IGttYWxsb2MoUEFUSF9NQVgsIEdGUF9LRVJORUwpO1xuK1x0aWYgKCFwYXRoYnVmKVxuK1x0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbitcbitcdHBhdGggPSBmaWxlX3BhdGgoYnBybS1cdTAwM2VmaWxlLCBwYXRoYnVmLCBQQVRIX01BWCk7XG4rXHRpZiAoSVNfRVJSKHBhdGgpKSB7XG4rXHRcdGtmcmVlKHBhdGhidWYpO1xuK1x0XHRyZXR1cm4gKGNoYXIgKilwYXRoO1xuK1x0fVxuK1xuK1x0c2xhc2ggPSBzdHJyY2hyKHBhdGgsICcvJyk7XG4rXHRpZiAoc2xhc2gpIHtcbitcdFx0aWYgKHNsYXNoID09IHBhdGgpXG4rXHRcdFx0KihzbGFzaCArIDEpID0gJ1xcMCc7XG4rXHRcdGVsc2VcbitcdFx0XHQqc2xhc2ggPSAnXFwwJztcbitcdH0gZWxzZSB7XG4rXHRcdGtmcmVlKHBhdGhidWYpO1xuK1x0XHRjaGFyICpyZXQgPSBrc3RyZHVwKGVsZl9pbnRlcnByZXRlciwgR0ZQX0tFUk5FTCk7XG4rXG4rXHRcdHJldHVybiByZXQgPyByZXQgOiBFUlJfUFRSKC1FTk9NRU0pO1xuK1x0fVxuK1xuK1x0cmVzb2x2ZWQgPSBrYXNwcmludGYoR0ZQX0tFUk5FTCwgXCIlcyVzXCIsIHBhdGgsIGVsZl9pbnRlcnByZXRlciArIDcpO1xuK1x0a2ZyZWUocGF0aGJ1Zik7XG4rXHRpZiAoIXJlc29sdmVkKVxuK1x0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbitcbitcdHJldHVybiByZXNvbHZlZDtcbit9XG4rRVhQT1JUX1NZTUJPTChyZXNvbHZlX2VsZl9pbnRlcnByZXRlcik7XG4rXG4gI2lmZGVmIENPTkZJR19FWEVDX0tVTklUX1RFU1RcbiAjaW5jbHVkZSBcInRlc3RzL2V4ZWNfa3VuaXQuY1wiXG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvZnMvdGVzdHMvZXhlY19rdW5pdC5jIGIvZnMvdGVzdHMvZXhlY19rdW5pdC5jXG5pbmRleCAxYzMyY2FjMDk4Y2Y1MS4uOTkxYjlhYmFkM2VlZGYgMTAwNjQ0XG4tLS0gYS9mcy90ZXN0cy9leGVjX2t1bml0LmNcbisrKyBiL2ZzL3Rlc3RzL2V4ZWNfa3VuaXQuY1xuQEAgLTExOSw4ICsxMTksMzQgQEAgc3RhdGljIHZvaWQgZXhlY190ZXN0X2Jwcm1fc3RhY2tfbGltaXRzKHN0cnVjdCBrdW5pdCAqdGVzdClcbiBcdH1cbiB9XG4gXG4rc3RhdGljIHZvaWQgZXhlY190ZXN0X3Jlc29sdmVfZWxmX2ludGVycHJldGVyKHN0cnVjdCBrdW5pdCAqdGVzdClcbit7XG4rXHRzdHJ1Y3QgbGludXhfYmlucHJtIGJwcm0gPSB7IC5maWxlID0gTlVMTCB9O1xuK1x0c3RydWN0IGZpbGUgKmY7XG4rXHRjaGFyICpyZXNvbHZlZDtcbitcbitcdC8vIFRlc3QgMTogTm9uLSRPUklHSU4gaW50ZXJwcmV0ZXIgcGF0aCBzaG91bGQganVzdCBiZSBkdXBsaWNhdGVkXG4rXHRyZXNvbHZlZCA9IHJlc29sdmVfZWxmX2ludGVycHJldGVyKFx1MDAyNmJwcm0sIFwiL2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yXCIpO1xuK1x0S1VOSVRfQVNTRVJUX05PVF9FUlJfT1JfTlVMTCh0ZXN0LCByZXNvbHZlZCk7XG4rXHRLVU5JVF9FWFBFQ1RfU1RSRVEodGVzdCwgcmVzb2x2ZWQsIFwiL2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yXCIpO1xuK1x0a2ZyZWUocmVzb2x2ZWQpO1xuK1xuK1x0Ly8gVGVzdCAyOiAkT1JJR0lOIGludGVycHJldGVyIHBhdGhcbitcdGYgPSBmaWxwX29wZW4oXCIvXCIsIE9fUkRPTkxZLCAwKTtcbitcdEtVTklUX0FTU0VSVF9OT1RfRVJSX09SX05VTEwodGVzdCwgZik7XG4rXHRicHJtLmZpbGUgPSBmO1xuK1xuK1x0cmVzb2x2ZWQgPSByZXNvbHZlX2VsZl9pbnRlcnByZXRlcihcdTAwMjZicHJtLCBcIiRPUklHSU4vLi4vbGliL2xkLnNvXCIpO1xuK1x0S1VOSVRfQVNTRVJUX05PVF9FUlJfT1JfTlVMTCh0ZXN0LCByZXNvbHZlZCk7XG4rXHRLVU5JVF9FWFBFQ1RfU1RSRVEodGVzdCwgcmVzb2x2ZWQsIFwiLy8uLi9saWIvbGQuc29cIik7XG4rXHRrZnJlZShyZXNvbHZlZCk7XG4rXG4rXHRmaWxwX2Nsb3NlKGYsIE5VTEwpO1xuK31cbitcbiBzdGF0aWMgc3RydWN0IGt1bml0X2Nhc2UgZXhlY190ZXN0X2Nhc2VzW10gPSB7XG4gXHRLVU5JVF9DQVNFKGV4ZWNfdGVzdF9icHJtX3N0YWNrX2xpbWl0cyksXG4rXHRLVU5JVF9DQVNFKGV4ZWNfdGVzdF9yZXNvbHZlX2VsZl9pbnRlcnByZXRlciksXG4gXHR7fSxcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYmluZm10cy5oIGIvaW5jbHVkZS9saW51eC9iaW5mbXRzLmhcbmluZGV4IDJjNzdlMzgzZTczNzU3Li4xNzQxOWNkM2RiYzczMyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYmluZm10cy5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2JpbmZtdHMuaFxuQEAgLTE1MCw0ICsxNTAsNiBAQCBleHRlcm4gc3NpemVfdCByZWFkX2NvZGUoc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgbG9uZywgbG9mZl90LCBzaXplX3QpO1xuIGludCBrZXJuZWxfZXhlY3ZlKGNvbnN0IGNoYXIgKmZpbGVuYW1lLFxuIFx0XHQgIGNvbnN0IGNoYXIgKmNvbnN0ICphcmd2LCBjb25zdCBjaGFyICpjb25zdCAqZW52cCk7XG4gXG4rY2hhciAqcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSwgY29uc3QgY2hhciAqZWxmX2ludGVycHJldGVyKTtcbitcbiAjZW5kaWYgLyogX0xJTlVYX0JJTkZNVFNfSCAqL1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL01ha2VmaWxlXG5pbmRleCA0NWEzY2ZjNDM1Y2ZkNy4uNWUyZTMwNWNiMGJiNjggMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL01ha2VmaWxlXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL01ha2VmaWxlXG5AQCAtMTAsOSArMTAsOSBAQCBBTElHTl9QSUVTICAgICAgICA6PSAkKHBhdHN1YnN0ICUsbG9hZF9hZGRyZXNzLiUsJChBTElHTlMpKVxuIEFMSUdOX1NUQVRJQ19QSUVTIDo9ICQocGF0c3Vic3QgJSxsb2FkX2FkZHJlc3Muc3RhdGljLiUsJChBTElHTlMpKVxuIEFMSUdOTUVOVF9URVNUUyAgIDo9ICQoQUxJR05fUElFUykgJChBTElHTl9TVEFUSUNfUElFUylcbiBcbi1URVNUX1BST0dTIDo9IGJpbmZtdF9zY3JpcHQucHkgY2hlY2stZXhlYy10ZXN0cy5zaFxuLVRFU1RfR0VOX1BST0dTIDo9IGV4ZWN2ZWF0IG5vbi1yZWd1bGFyICQoQUxJR05NRU5UX1RFU1RTKVxuLVRFU1RfR0VOX1BST0dTX0VYVEVOREVEIDo9IGZhbHNlIGluYyBzZXQtZXhlYyBzY3JpcHQtZXhlYy5pbmMgc2NyaXB0LW5vZXhlYy5pbmNcbitURVNUX1BST0dTIDo9IGJpbmZtdF9zY3JpcHQucHkgY2hlY2stZXhlYy10ZXN0cy5zaCBvcmlnaW5faW50ZXJwLnNoXG4rVEVTVF9HRU5fUFJPR1MgOj0gZXhlY3ZlYXQgbm9uLXJlZ3VsYXIgJChBTElHTk1FTlRfVEVTVFMpIHRlc3RfcHJvZ1xuK1RFU1RfR0VOX1BST0dTX0VYVEVOREVEIDo9IGZhbHNlIGluYyBzZXQtZXhlYyBzY3JpcHQtZXhlYy5pbmMgc2NyaXB0LW5vZXhlYy5pbmMgbW9ja19pbnRlcnBcbiBURVNUX0dFTl9GSUxFUyA6PSBleGVjdmVhdC5zeW1saW5rIGV4ZWN2ZWF0LmRlbmF0dXJlZCBzY3JpcHQgc3ViZGlyXG4gIyBNYWtlZmlsZSBpcyBhIHJ1bi10aW1lIGRlcGVuZGVuY3ksIHNpbmNlIGl0J3MgYWNjZXNzZWQgYnkgdGhlIGV4ZWN2ZWF0IHRlc3RcbiBURVNUX0ZJTEVTIDo9IE1ha2VmaWxlXG5AQCAtNTUsMyArNTUsOSBAQCAkKE9VVFBVVCkvc2NyaXB0LWV4ZWMuaW5jOiAkKENIRUNLX0VYRUNfU0FNUExFUykvc2NyaXB0LWV4ZWMuaW5jXG4gXHRjcCAkXHUwMDNjICRAXG4gJChPVVRQVVQpL3NjcmlwdC1ub2V4ZWMuaW5jOiAkKENIRUNLX0VYRUNfU0FNUExFUykvc2NyaXB0LW5vZXhlYy5pbmNcbiBcdGNwICRcdTAwM2MgJEBcbitcbiskKE9VVFBVVCkvbW9ja19pbnRlcnA6IG1vY2tfaW50ZXJwLmNcbitcdCQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpIC1zdGF0aWMgLW5vc3RkbGliIC1pbmNsdWRlIC4uLy4uLy4uL2luY2x1ZGUvbm9saWJjL25vbGliYy5oICRcdTAwM2MgLW8gJEBcbitcbiskKE9VVFBVVCkvdGVzdF9wcm9nOiB0ZXN0X3Byb2cuYyAkKE9VVFBVVCkvbW9ja19pbnRlcnBcbitcdCQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpIC1XbCwtZHluYW1pYy1saW5rZXIsJyQkT1JJR0lOL21vY2tfaW50ZXJwJyAkXHUwMDNjIC1vICRAXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9tb2NrX2ludGVycC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9tb2NrX2ludGVycC5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjljOWNhMTA5ODFjY2ZmXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL21vY2tfaW50ZXJwLmNcbkBAIC0wLDAgKzEsNiBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4raW50IG1haW4odm9pZClcbit7XG4rXHR3cml0ZSgxLCBcIkhlbGxvIGZyb20gbW9jayBpbnRlcnByZXRlciFcXG5cIiwgMjkpO1xuK1x0cmV0dXJuIDQyO1xuK31cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL29yaWdpbl9pbnRlcnAuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL29yaWdpbl9pbnRlcnAuc2hcbm5ldyBmaWxlIG1vZGUgMTAwNzU1XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNjM1YTQwODM5ODAyNTFcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvb3JpZ2luX2ludGVycC5zaFxuQEAgLTAsMCArMSwxNiBAQFxuKyMhL2Jpbi9zaFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbitcbisjIEV4ZWN1dGUgdGhlIHRlc3QgcHJvZ3JhbSB3aGljaCBoYXMgaXRzIGludGVycHJldGVyIHNldCB0byAkT1JJR0lOL21vY2tfaW50ZXJwXG4rIyBOb3RlIHRoYXQgbW9ja19pbnRlcnAgbXVzdCBiZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4rZGlyPSQoZGlybmFtZSBcIiQwXCIpXG4rb3V0PSQoXCIkZGlyXCIvdGVzdF9wcm9nIDJcdTAwM2VcdTAwMjYxKVxuK2V4aXRfY29kZT0kP1xuK1xuK2lmIFsgJGV4aXRfY29kZSAtZXEgNDIgXSBcdTAwMjZcdTAwMjYgWyBcIiRvdXRcIiA9IFwiSGVsbG8gZnJvbSBtb2NrIGludGVycHJldGVyIVwiIF07IHRoZW5cbitcdGVjaG8gXCJvcmlnaW5faW50ZXJwOiBQQVNTXCJcbitcdGV4aXQgMFxuK2Vsc2VcbitcdGVjaG8gXCJvcmlnaW5faW50ZXJwOiBGQUlMIChleGl0X2NvZGU9JGV4aXRfY29kZSwgb3V0cHV0PSckb3V0JylcIlxuK1x0ZXhpdCAxXG4rZmlcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9leGVjL3Rlc3RfcHJvZy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy90ZXN0X3Byb2cuY1xubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi40NTE2MTRkZWYzZGIxY1xuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy90ZXN0X3Byb2cuY1xuQEAgLTAsMCArMSw1IEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbitpbnQgbWFpbih2b2lkKVxuK3tcbitcdHJldHVybiAwOyAvKiBTaG91bGQgbmV2ZXIgYmUgcmVhY2hlZCBpZiBpbnRlcnByZXRlciBpcyBsb2FkZWQgaW5zdGVhZCAqL1xuK31cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA0OjU2OjEwLjY1MDI1MzkzOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3NTQ0NDE3NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2VybmVsIEVMRiBJbnRlcnByZXRlciBQYXRoIFJlc29sdXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGluIGZyb250IG9mIG1lIHRoYXQgdG91Y2hlcyBzb21lIHByZXR0eSBjcnVjaWFsIGNvZGU6IGBmcy9iaW5mbXRfZWxmLmNgLCBgZnMvYmluZm10X2VsZl9mZHBpYy5jYCwgYW5kIGBmcy9leGVjLmNgLiBSaWdodCBhd2F5LCB0aGUgbWVudGlvbiBvZiBgZXhlY3ZlYCBoYXMgbXkgYXR0ZW50aW9uIOKAkyB0aGF0J3MgZGVmaW5pdGVseSBhIGNvcmUga2VybmVsIHBhdGguIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiwgYHJlc29sdmVfZWxmX2ludGVycHJldGVyYCwgYW5kIGZyb20gdGhlIGRlc2NyaXB0aW9uLCBpdCdzIGZvY3VzZWQgb24gcmVzb2x2aW5nIGAkT1JJR0lOYCB3aXRoaW4gdGhlIEVMRiBpbnRlcnByZXRlciBwYXRoLiBUaGlzIGlzIGZ1bmN0aW9uYWwsIGl04oCZcyBpbiB0aGUgYGV4ZWN2ZWAgcGF0aCwgd2hpY2ggbWVhbnMgaXQncyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBuZWVkIHRvIGZ1enouXG5cbkxldCdzIGRpdmUgZGVlcGVyIGludG8gdGhlIGNvZGUuIEl0IGxvb2tzIGxpa2UgYHJlc29sdmVfZWxmX2ludGVycHJldGVyYCBpcyBnZXR0aW5nIGFkZGVkIHRvIGBmcy9leGVjLmNgIGFuZCB0aGVuIGV4cG9ydGVkLiBUaGUga2V5IHBhcnQgaXMgdGhhdCBpdCdzIGJlaW5nICpjYWxsZWQqIGZyb20gYGxvYWRfZWxmX2JpbmFyeWAgaW4gYGZzL2JpbmZtdF9lbGYuY2AgYW5kIGBsb2FkX2VsZl9mZHBpY19iaW5hcnlgIGluIGBmcy9iaW5mbXRfZWxmX2ZkcGljLmNgLiBUaGF0IHRlbGxzIG1lIGhvdyBpdCdzIGludGVncmF0ZWQgaW50byB0aGUgZXhpc3RpbmcgRUxGIGxvYWRpbmcgcHJvY2Vzcy5cblxuTmV4dCwgSSBuZWVkIHRvIGNoZWNrIGZvciBhbnkgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIE9rYXksIGBmcy9iaW5mbXRfZWxmLmNgIGlzIGNvbmRpdGlvbmFsIG9uIGBDT05GSUdfQklORk1UX0VMRmAsIGBmcy9iaW5mbXRfZWxmX2ZkcGljLmNgIGRlcGVuZHMgb24gYENPTkZJR19CSU5GTVRfRUxGX0ZEUElDYCwgYnV0IGBmcy9leGVjLmNgIGFuZCB0aGUgbmV3IGZ1bmN0aW9uIGFyZSBhbHdheXMgY29tcGlsZWQuIEl0IHNlZW1zIHRoZSBuZXcgZnVuY3Rpb24gaXMgYWx3YXlzIGF2YWlsYWJsZSwgYnV0IGRlcGVuZGVudCBvbiB0aGUgRUxGIGJpbmFyeSBzdXBwb3J0LiBTbyB0aGF0IGFmZmVjdHMgdGhlIHNjb3BlIG9mIHRoZSB0ZXN0cy4gTm93IEkgbmVlZCB0byB2ZXJpZnkgd2hpY2ggY29uZmlncyBhcmUgYWN0dWFsbHkgZW5hYmxlZCB0byBkZWNpZGUgd2hhdCB0byBjb25jZW50cmF0ZSBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA2MywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA0OjU2OjE2LjQwNDY5ODgxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyMTkzNTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJJTkZNVF9FTEZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvTWFrZWZpbGU9MzY9b2JqLSQoQ09ORklHX0JJTkZNVF9TQ1JJUFQpXFx0Kz0gYmluZm10X3NjcmlwdC5vXFxuZnMvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX0JJTkZNVF9FTEYpXFx0Kz0gYmluZm10X2VsZi5vXFxuZnMvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX0NPTVBBVF9CSU5GTVRfRUxGKVxcdCs9IGNvbXBhdF9iaW5mbXRfZWxmLm9cXG5mcy9NYWtlZmlsZTozOTpvYmotJChDT05GSUdfQklORk1UX0VMRl9GRFBJQylcXHQrPSBiaW5mbXRfZWxmX2ZkcGljLm9cXG5mcy9NYWtlZmlsZS00MC1vYmotJChDT05GSUdfQklORk1UX0ZMQVQpXFx0Kz0gYmluZm10X2ZsYXQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNDo1NjoxNi40OTY5MDEwNjhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTcyNTcxNzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipFTEYgYW5kIEZEUElDOiBDb25maWd1cmF0aW9uIENvbnVuZHJ1bXMqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZm9jdXNpbmcgb24gRUxGIGJpbmFyaWVzLCBzcGVjaWZpY2FsbHkgdGhlIGZsZXhpYmxlIFBJQyB2YXJpYW50LCBgQ09ORklHX0JJTkZNVF9FTEZfRkRQSUNgLiBJdCdzIHByZXR0eSBjbGVhciB0aGF0IGBDT05GSUdfQklORk1UX0VMRmAgaXMgdGhlIGNvcmUsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhhdCBhbmQgYENPTkZJR19CSU5GTVRfRUxGX0ZEUElDYCBtb3JlIGdyYW51bGFybHkuIFRoZSBxdWVzdGlvbiBub3cgYmVjb21lczogaXMgRkRQSUMgdW5pdmVyc2FsbHkgYXZhaWxhYmxlLCBvciBkb2VzIGl0cyBwcmVzZW5jZSBkZXBlbmQgb24gc29tZSBhcmNoaXRlY3R1cmFsIGZlYXR1cmUgb3Igb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb24/IEkgbmVlZCB0byBkaWcgaW50byB0aGUgS2NvbmZpZyBmaWxlcywgb3IgcGVyaGFwcyBzb21lIHJlbGV2YW50IGRvY3VtZW50YXRpb24sIHRvIGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBkZXBlbmRlbmNpZXMgb3Igb3RoZXIgcHJlcmVxdWlzaXRlcyB0aGF0IGdvdmVybiB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc3BlY2lmaWMgRkRQSUMgY29uZmlndXJhdGlvbiBvcHRpb24uIFRoaXMgY291bGQgYmUgY3J1Y2lhbCBmb3IgcG9ydGluZyBvciBjdXN0b21pemluZyB0aGUga2VybmVsJ3MgYmluYXJ5IGxvYWRpbmcgY2FwYWJpbGl0aWVzLiBMZXQncyBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTA0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDQ6NTY6MjAuNjY5NDc1NDkyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDI0ODMxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQklORk1UX0VMRl9GRFBJQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9LY29uZmlnLmJpbmZtdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9LY29uZmlnLmJpbmZtdD01NT1jb25maWcgQVJDSF9VU0VfR05VX1BST1BFUlRZXFxuLS1cXG5mcy9LY29uZmlnLmJpbmZtdC01Ny1cXG5mcy9LY29uZmlnLmJpbmZtdDo1ODpjb25maWcgQklORk1UX0VMRl9GRFBJQ1xcbmZzL0tjb25maWcuYmluZm10LTU5LVxcdGJvb2wgXFxcIktlcm5lbCBzdXBwb3J0IGZvciBGRFBJQyBFTEYgYmluYXJpZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA0OjU2OjIwLjc3MzcyOTg4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk1NzY2Mjg5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpcyBCSU5GTVRfRUxGX0ZEUElDIGRlcGVuZGVuY3kgYW5hbHlzaXM6XG5cbioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgYEJJTkZNVF9FTEZfRkRQSUNgKipcblxuQWxyaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyB0byBmaWd1cmUgb3V0IHdoYXQgYEJJTkZNVF9FTEZfRkRQSUNgIGFjdHVhbGx5IHJlbGllcyBvbi4gVGhpcyBpcyBnb2luZyB0byBiZSBhIGNydWNpYWwgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIGl0cyBwbGFjZSBpbiB0aGUgYnJvYWRlciBzeXN0ZW0gYW5kIGhvdyBtb2RpZmljYXRpb25zIHRvIHJlbGF0ZWQgY29tcG9uZW50cyBtaWdodCBpbXBhY3QgaXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoaWNoIG90aGVyIG1vZHVsZXMsIGZlYXR1cmVzLCBvciBrZXJuZWwgc3Vic3lzdGVtcyBhcmUgKnByZXJlcXVpc2l0ZXMqIGZvciBgQklORk1UX0VMRl9GRFBJQ2AgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBJcyBpdCBzb21ldGhpbmcgcmVsYXRpdmVseSBzZWxmLWNvbnRhaW5lZCwgb3IgZG9lcyBpdCBoYXZlIGEgbG9uZyBsaXN0IG9mIGRlcGVuZGVuY2llcz8gS25vd2luZyB0aGlzIGxldmVsIG9mIGludGVyY29ubmVjdGl2aXR5IGlzIGtleS4gSSdsbCBuZWVkIHRvIGtub3cgd2hpY2ggcGllY2VzIG9mIHRoZSBFTEYgZm9ybWF0IGl0IHVzZXMgYW5kIHJlbGllcyBvbiwgYW5kIHdoYXQgdGhlIEZEUElDIChQb3NpdGlvbiBJbmRlcGVuZGVudCBDb2RlKSBhZGRzIHRvIHRoZSBtaXguIEZyb20gdGhlcmUgSSdsbCBzdGFydCBsb29raW5nIGF0IHRob3NlIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjI5NSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA0OjU2OjIzLjczMTM5NTE4OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjQ5MDYxNjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJJTkZNVF9FTEZfRkRQSUNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvS2NvbmZpZy5iaW5mbXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvS2NvbmZpZy5iaW5mbXQ9NTU9Y29uZmlnIEFSQ0hfVVNFX0dOVV9QUk9QRVJUWVxcbi0tXFxuZnMvS2NvbmZpZy5iaW5mbXQtNTctXFxuZnMvS2NvbmZpZy5iaW5mbXQ6NTg6Y29uZmlnIEJJTkZNVF9FTEZfRkRQSUNcXG5mcy9LY29uZmlnLmJpbmZtdC01OS1cXHRib29sIFxcXCJLZXJuZWwgc3VwcG9ydCBmb3IgRkRQSUMgRUxGIGJpbmFyaWVzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNDo1NjoyMy44NTYzMDc2NDZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODQ5NzE3MDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgRGVwZW5kZW5jaWVzOiBLY29uZmlnIEZpcnN0KipcblxuQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoaXMgY29uZmlndXJhdGlvbiwgSSBuZWVkIHRvIHBhdXNlIGFuZCBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBsYW5kc2NhcGUuIEp1bXBpbmcgc3RyYWlnaHQgaW50byB0aGUgY29kZSB3b3VsZCBiZSBhIHJvb2tpZSBtb3ZlLCBlc3BlY2lhbGx5IHdpdGggdGhlIHBvdGVudGlhbCBmb3IgY29tcGxleCBpbnRlcmRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIGNvbnN1bHQgdGhlIEtjb25maWcgZmlsZS4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgY29uZGl0aW9uYWwgbG9naWMgYW5kIGJ1aWxkIG9wdGlvbnMgcmVsYXRlZCB0byB0aGlzIG1vZHVsZSBvciBmZWF0dXJlLiBJdCdzIHRoZSBibHVlcHJpbnQsIHRoZSBkZWNpc2lvbiB0cmVlLiBJ4oCZbGwgY2hlY2sgdGhlIEtjb25maWcsIGFuZCBvbmx5IHRoZW4gd2lsbCBJIGdyYXNwIHRoZSBmdWxsIGltcGFjdCBvZiBhbnkgbW9kaWZpY2F0aW9ucyBJJ20gY29uc2lkZXJpbmcuIFNraXBwaW5nIHRoaXMgc3RlcCBpcyBhc2tpbmcgZm9yIGJ1aWxkIGVycm9ycywgdW5leHBlY3RlZCBiZWhhdmlvciwgYW5kIHVsdGltYXRlbHksIGEgbXVjaCBsb25nZXIgZGVidWdnaW5nIHNlc3Npb24uIExldCdzIHNlZSB3aGF0IHRoYXQgS2NvbmZpZyBoYXMgdG8gc2F5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjU0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDQ6NTY6MjYuNzA2MDI3NDg4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2MjA3NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvS2NvbmZpZy5iaW5mbXRcIixcbiAgXCJGaXJzdExpbmVcIjogNTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNTA6XFx0XFx0Ym9vbFxcbiAgNTE6XFx0XFxuICA1MjpcXHRjb25maWcgQVJDSF9IQVZFX0VMRl9QUk9UXFxuICA1MzpcXHRcXHRib29sXFxuICA1NDpcXHRcXG4gIDU1OlxcdGNvbmZpZyBBUkNIX1VTRV9HTlVfUFJPUEVSVFlcXG4gIDU2OlxcdFxcdGJvb2xcXG4gIDU3OlxcdFxcbiAgNTg6XFx0Y29uZmlnIEJJTkZNVF9FTEZfRkRQSUNcXG4gIDU5OlxcdFxcdGJvb2wgXFxcIktlcm5lbCBzdXBwb3J0IGZvciBGRFBJQyBFTEYgYmluYXJpZXNcXFwiXFxuICA2MDpcXHRcXHRkZWZhdWx0IHkgaWYgIUJJTkZNVF9FTEZcXG4gIDYxOlxcdFxcdGRlcGVuZHMgb24gQVJNIHx8ICgoTTY4SyB8fCBSSVNDViB8fCBTVVBFUkggfHwgWFRFTlNBKSBcXHUwMDI2XFx1MDAyNiAhTU1VKVxcbiAgNjI6XFx0XFx0c2VsZWN0IEVMRkNPUkVcXG4gIDYzOlxcdFxcdGhlbHBcXG4gIDY0OlxcdFxcdCAgRUxGIEZEUElDIGJpbmFyaWVzIGFyZSBiYXNlZCBvbiBFTEYsIGJ1dCBhbGxvdyB0aGUgaW5kaXZpZHVhbCBsb2FkXFxuICA2NTpcXHRcXHQgIHNlZ21lbnRzIG9mIGEgYmluYXJ5IHRvIGJlIGxvY2F0ZWQgaW4gbWVtb3J5IGluZGVwZW5kZW50bHkgb2YgZWFjaFxcbiAgNjY6XFx0XFx0ICBvdGhlci4gVGhpcyBtYWtlcyB0aGlzIGZvcm1hdCBpZGVhbCBmb3IgdXNlIGluIGVudmlyb25tZW50cyB3aGVyZSBub1xcbiAgNjc6XFx0XFx0ICBNTVUgaXMgYXZhaWxhYmxlIGFzIGl0IHN0aWxsIHBlcm1pdHMgdGV4dCBzZWdtZW50cyB0byBiZSBzaGFyZWQsXFxuICA2ODpcXHRcXHQgIGV2ZW4gaWYgZGF0YSBzZWdtZW50cyBhcmUgbm90LlxcbiAgNjk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDA0OjU2OjI2LjcwOTY1ODQ1OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODU0NDYwOTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipFTEYgQmluYXJ5IEZvcm1hdCBDb25zaWRlcmF0aW9ucyoqXG5cblJpZ2h0LCBsZXQncyBzZWUuIE15IGluaXRpYWwgdGhvdWdodCBpcyBhYm91dCB0aGF0IGBCSU5GTVRfRUxGX0ZEUElDYCBmZWF0dXJlIOKAkyBJIG5lZWQgdG8gcmVtZW1iZXIgdGhlIGNvbmRpdGlvbnMgZm9yIHRoYXQuIEl0IGxvb2tzIGxpa2UgaXQgaGluZ2VzIG9uIHRoZSBhcmNoaXRlY3R1cmUgYmVpbmcgQVJNLCBvciBpdCBiZWluZyBvbmUgb2YgTTY4SywgUklTQ1YsIFNVUEVSSCwgb3IgWFRFTlNBICp3aXRob3V0KiBhbiBNTVUuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgdGhhdCBpdCdzICpub3QqIGdlbmVyYWxseSBzb21ldGhpbmcgSSdkIGZpbmQgb24geDg2LCB3aGljaCBpcyBpbXBvcnRhbnQgdG8ga2VlcCBpbiBtaW5kLlxuXG5Tbywgc2luY2UgdGhhdCdzIG91dCwgdGhlIHdvcmtob3JzZSBmb3IgYSBsb3Qgb2Ygc3lzdGVtcyBpcyBnb2luZyB0byBiZSBgQklORk1UX0VMRmAuIFRoYXQncyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uLiBJdCdzIHRoZSBzdGFuZGFyZCwgcmlnaHQ/IExldCdzIGRyaWxsIGRvd24gaW50byB0aGF0IG1vZHVsZSBhbmQgc2VlIHdoYXQgdGhlIGVzc2VudGlhbCBkZXRhaWxzIGFyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzE1MSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDQ6NTY6MzAuNTY0MTIzMDU5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjIxOTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvS2NvbmZpZy5iaW5mbXRcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdFxcbiAgIDM6XFx0bWVudSBcXFwiRXhlY3V0YWJsZSBmaWxlIGZvcm1hdHNcXFwiXFxuICAgNDpcXHRcXG4gICA1OlxcdGNvbmZpZyBCSU5GTVRfRUxGXFxuICAgNjpcXHRcXHRib29sIFxcXCJLZXJuZWwgc3VwcG9ydCBmb3IgRUxGIGJpbmFyaWVzXFxcIlxcbiAgIDc6XFx0XFx0ZGVwZW5kcyBvbiBNTVVcXG4gICA4OlxcdFxcdHNlbGVjdCBFTEZDT1JFXFxuICAgOTpcXHRcXHRkZWZhdWx0IHlcXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgRUxGIChFeGVjdXRhYmxlIGFuZCBMaW5rYWJsZSBGb3JtYXQpIGlzIGEgZm9ybWF0IGZvciBsaWJyYXJpZXMgYW5kXFxuICAxMjpcXHRcXHQgIGV4ZWN1dGFibGVzIHVzZWQgYWNyb3NzIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzIGFuZCBvcGVyYXRpbmdcXG4gIDEzOlxcdFxcdCAgc3lzdGVtcy4gU2F5aW5nIFkgaGVyZSB3aWxsIGVuYWJsZSB5b3VyIGtlcm5lbCB0byBydW4gRUxGIGJpbmFyaWVzXFxuICAxNDpcXHRcXHQgIGFuZCBlbmxhcmdlIGl0IGJ5IGFib3V0IDEzIEtCLiBFTEYgc3VwcG9ydCB1bmRlciBMaW51eCBoYXMgbm93IGFsbFxcbiAgMTU6XFx0XFx0ICBidXQgcmVwbGFjZWQgdGhlIHRyYWRpdGlvbmFsIExpbnV4IGEub3V0IGZvcm1hdHMgKFFNQUdJQyBhbmQgWk1BR0lDKVxcbiAgMTY6XFx0XFx0ICBiZWNhdXNlIGl0IGlzIHBvcnRhYmxlICh0aGlzIGRvZXMgKm5vdCogbWVhbiB0aGF0IHlvdSB3aWxsIGJlIGFibGVcXG4gIDE3OlxcdFxcdCAgdG8gcnVuIGV4ZWN1dGFibGVzIGZyb20gZGlmZmVyZW50IGFyY2hpdGVjdHVyZXMgb3Igb3BlcmF0aW5nIHN5c3RlbXNcXG4gIDE4OlxcdFxcdCAgaG93ZXZlcikgYW5kIG1ha2VzIGJ1aWxkaW5nIHJ1bi10aW1lIGxpYnJhcmllcyB2ZXJ5IGVhc3kuIE1hbnkgbmV3XFxuICAxOTpcXHRcXHQgIGV4ZWN1dGFibGVzIGFyZSBkaXN0cmlidXRlZCBzb2xlbHkgaW4gRUxGIGZvcm1hdC4gWW91IGRlZmluaXRlbHlcXG4gIDIwOlxcdFxcdCAgd2FudCB0byBzYXkgWSBoZXJlLlxcbiAgMjE6XFx0XFxuICAyMjpcXHRcXHQgIEluZm9ybWF0aW9uIGFib3V0IEVMRiBpcyBjb250YWluZWQgaW4gdGhlIEVMRiBIT1dUTyBhdmFpbGFibGUgZnJvbVxcbiAgMjM6XFx0XFx0ICBcXHUwMDNjaHR0cDovL3d3dy50bGRwLm9yZy9kb2NzLmh0bWwjaG93dG9cXHUwMDNlLlxcbiAgMjQ6XFx0XFxuICAyNTpcXHRcXHQgIElmIHlvdSBmaW5kIHRoYXQgYWZ0ZXIgdXBncmFkaW5nIGZyb20gTGludXgga2VybmVsIDEuMiBhbmQgc2F5aW5nIFlcXG4gIDI2OlxcdFxcdCAgaGVyZSwgeW91IHN0aWxsIGNhbid0IHJ1biBhbnkgRUxGIGJpbmFyaWVzICh0aGV5IGp1c3QgY3Jhc2gpLCB0aGVuXFxuICAyNzpcXHRcXHQgIHlvdSdsbCBoYXZlIHRvIGluc3RhbGwgdGhlIG5ld2VzdCBFTEYgcnVudGltZSBsaWJyYXJpZXMsIGluY2x1ZGluZ1xcbiAgMjg6XFx0XFx0ICBsZC5zbyAoY2hlY2sgdGhlIGZpbGUgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9DaGFuZ2VzXFx1MDAzZSBmb3IgbG9jYXRpb24gYW5kXFxuICAyOTpcXHRcXHQgIGxhdGVzdCB2ZXJzaW9uKS5cXG4gIDMwOlxcdFxcbiAgMzE6XFx0Y29uZmlnIEJJTkZNVF9FTEZfS1VOSVRfVEVTVFxcbiAgMzI6XFx0XFx0Ym9vbCBcXFwiQnVpbGQgS1VuaXQgdGVzdHMgZm9yIEVMRiBiaW5hcnkgc3VwcG9ydFxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbiAgMzM6XFx0XFx0ZGVwZW5kcyBvbiBLVU5JVD15IFxcdTAwMjZcXHUwMDI2IEJJTkZNVF9FTEY9eVxcbiAgMzQ6XFx0XFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcXG4gIDM1OlxcdFxcdGhlbHBcXG4gIDM2OlxcdFxcdCAgVGhpcyBidWlsZHMgdGhlIEVMRiBsb2FkZXIgS1VuaXQgdGVzdHMsIHdoaWNoIHRyeSB0byBnYXRoZXJcXG4gIDM3OlxcdFxcdCAgcHJpb3IgYnVnIGZpeGVzIGludG8gYSByZWdyZXNzaW9uIHRlc3QgY29sbGVjdGlvbi4gVGhpcyBpcyByZWFsbHlcXG4gIDM4OlxcdFxcdCAgb25seSBuZWVkZWQgZm9yIGRlYnVnZ2luZy4gTm90ZSB0aGF0IHdpdGggQ09ORklHX0NPTVBBVD15LCB0aGVcXG4gIDM5OlxcdFxcdCAgY29tcGF0X2JpbmZtdF9lbGYgS1VuaXQgdGVzdCBpcyBhbHNvIGNyZWF0ZWQuXFxuICA0MDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDQ6NTY6MzAuNTY2MzQ5MTU5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1NzM3NDYyMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBGb2N1czogRUxGIEJpbmFyeSBMb2FkaW5nIFx1MDAyNiBJbnRlcnByZXRhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gaGVyZSBpcyBgQklORk1UX0VMRmAsIHRoYXQncyB0aGUgYmFzZS4gTXkgZm9jdXMgaGFzIHRvIGJlIG9uIHRoZSBmdW5jdGlvbnMgdGhhdCB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nLiBJIHNlZSBgbG9hZF9lbGZfYmluYXJ5YCBhbmQgYGxvYWRfZWxmX2ZkcGljX2JpbmFyeWAgYXJlIG1vZGlmaWVkLCBhbG9uZyB3aXRoIHRoZSBhZGRpdGlvbiBvZiBgcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXJgLiBSaWdodCBvZmYgdGhlIGJhdCwgYGxvYWRfZWxmX2JpbmFyeWAgaXMgYSBub3RvcmlvdXMgaG90LXBhdGg7IHRoYXQncyBjYWxsZWQgZm9yIGV2ZXJ5IHNpbmdsZSBFTEYgZXhlY3V0aW9uLiBgcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXJgIGlzIG5ldywgYW5kIHRoYXQgaXMgY2FsbGVkIGR1cmluZyB0aGUgZXhlY3V0aW9uIG9mIGR5bmFtaWNhbGx5IGxpbmtlZCBFTEYgYmluYXJpZXMuIEknbSBub3Qgc3VyZSBpZiBpdCBpcyBhIGhvdC1wYXRoLCBidXQgaXQgaXMgY2FsbGVkIGZvciBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBleGVjdXRpb24uXG5cbkhvd2V2ZXIsIEkgdGhpbmsgYHJlc29sdmVfZWxmX2ludGVycHJldGVyYCBpcyB0aGUgbW9yZSBjb21wZWxsaW5nIGNhbmRpZGF0ZSBiZWNhdXNlIGl0J3MgKm5ldyogbG9naWMsIHRoZSBjb2RlIHdlIHdhbnQgdG8gYmUgZHJpbGxpbmcgaW50by4gQWx0aG91Z2ggYGxvYWRfZWxmX2JpbmFyeWAgYW5kIGBsb2FkX2VsZl9mZHBpY19iaW5hcnlgIGFyZSBtb2RpZmllZCwgSSdkIHNheSB0aGV5IGFyZSBwcmV0dHkgZ2VuZXJpYyBhbmQgbGVzcyBzcGVjaWZpYyB0byB0aGUgY2hhbmdlcy4gWWVzLCBsZXQncyBkZWZpbml0ZWx5IGluY2x1ZGUgYHJlc29sdmVfZWxmX2ludGVycHJldGVyYC5cblxuSG9sZCBvbi4gTm93IHRoYXQgSSB0aGluayBhYm91dCBpdCwgc2luY2UgYHJlc29sdmVfZWxmX2ludGVycHJldGVyYCBpcyBjYWxsZWQgb24gKmV2ZXJ5KiBkeW5hbWljYWxseSBsaW5rZWQgRUxGIGJpbmFyeSBleGVjdXRpb24sIGlmIHdlIGZvY3VzIHRoZSBmdXp6aW5nIG9uICpqdXN0KiB0aGlzLCBhcmUgd2UgZ29pbmcgdG8gYmUgY29uc3RhbnRseSBoaXR0aW5nIGl0IHdpdGggbm9ybWFsIGV4ZWN1dGlvbiBwYXR0ZXJucz8gVGhhdCBzYWlkLCBpdCBpcyAqdGhlKiBuZXdseSBhZGRlZCBmdW5jdGlvbiwgYW5kIHdlIG5lZWQgdG8gcHJvYmUgdGhlIGVkZ2UgY2FzZXMg4oCTIHRoaW5rIGAkT1JJR0lOYCByZXNvbHV0aW9uLCBhbmQgc28gb24uIFllcywgYHJlc29sdmVfZWxmX2ludGVycHJldGVyYCBzZWVtcyBsaWtlIGEgc3Ryb25nIGNvbnRlbmRlci5cblxuTGV0J3MgcXVpY2tseSBzY2FuIHRoZSBjb25maWcgb3B0aW9ucyBhZ2Fpbi4gSG1tLCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIGBmcy9leGVjLmNgIGFuZCBhZGRzIHRlc3RzIHRvIGBmcy90ZXN0cy9leGVjX2t1bml0LmNgIGFuZCBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZXhlYy9gLiBJIHNlZSB0aGUga3VuaXQgdGVzdCBpcyB1bmRlciBgQ09ORklHX0VYRUNfS1VOSVRfVEVTVGAuIFdlIHByb2JhYmx5IGRvbid0IG5lZWQgdG8gZW5hYmxlIEtVbml0IHRlc3RzIHNwZWNpZmljYWxseSBmb3IgZnV6emluZyBwdXJwb3Nlcy5cblxuT2theSwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIGNvZGUgZm9yIGByZXNvbHZlX2VsZl9pbnRlcnByZXRlcmAgaW4gYGZzL2V4ZWMuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwOTEsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQwNDo1NjozOC4xNDAwOTgxNjNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MTIxNDgxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZXNvbHZlX2VsZl9pbnRlcnByZXRlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leGVjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXhlYy5jPTIwMjQ9ZnNfaW5pdGNhbGwoaW5pdF9mc19leGVjX3N5c2N0bHMpO1xcbi0tXFxuZnMvZXhlYy5jLTIwMjYtXFxuZnMvZXhlYy5jOjIwMjc6Y2hhciAqcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXIoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSwgY29uc3QgY2hhciAqZWxmX2ludGVycHJldGVyKVxcbmZzL2V4ZWMuYy0yMDI4LXtcXG4tLVxcbmZzL2V4ZWMuYy0yMDY2LX1cXG5mcy9leGVjLmM6MjA2NzpFWFBPUlRfU1lNQk9MKHJlc29sdmVfZWxmX2ludGVycHJldGVyKTtcXG5mcy9leGVjLmMtMjA2OC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDQ6NTY6MzguMjgxMzE3MTlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjIxMzUzODQzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIFJlYWNoIGFuZCBGdW5jdGlvbmFsaXR5KipcblxuT2theSwgc28gSSd2ZSB0YWtlbiBhIGxvb2sgYXQgdGhpcyBwYXRjaCwgYW5kIG15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IGl0J3MgZGVmaW5pdGVseSBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUuIFRoaXMgaXMgYmVjYXVzZSBpdCdzIGFkZGluZyBuZXcgZnVuY3Rpb25hbGl0eSB0byByZXNvbHZlIGAkT1JJR0lOYCB3aXRoaW4gdGhlIEVMRiBpbnRlcnByZXRlciBwYXRoIGR1cmluZyBgZXhlY3ZlYC4gVGhhdCdzIGNvcmUga2VybmVsIGxvZ2ljLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBFTEYgYmluYXJ5IGxvYWRlciwgYW5kIHRoYXQncyAqYWx3YXlzKiByZWFjaGFibGUuIFRoZSBrZXkgZnVuY3Rpb24gSSdtIGZvY3VzaW5nIG9uIGhlcmUgaXMgYHJlc29sdmVfZWxmX2ludGVycHJldGVyYC5cblxuTm93LCBsZXQncyBjb25zaWRlciB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIFdlIGtub3cgdGhpcyBpcyBkZXBlbmRlbnQgb24gYEJJTkZNVF9FTEZgLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIHVzdWFsbHkgZW5hYmxlZCBieSBkZWZhdWx0LiBJJ2xsIHN0aWxsIGxpc3QgaXQgdGhvdWdoLCBmb3IgY2xhcml0eS4gQWRkaXRpb25hbGx5LCBgQklORk1UX0VMRl9GRFBJQ2AgaXMgcG90ZW50aWFsbHkgcmVsZXZhbnQsIGV2ZW4gaWYgRkRQSUMgbWlnaHQgbm90IGJlIHByZXZhbGVudCBvbiB4ODYgYXJjaGl0ZWN0dXJlczsgaXTigJlzIGEgZ29vZCBwcmFjdGljZSB0byBpbmNsdWRlIGl0LlxuXG5SZWZpbmluZyBteSBhbmFseXNpcywgdGhlIHBhdGNoJ3MgY29yZSBpbXBhY3QgaXMgcHJvdmlkaW5nIGAkT1JJR0lOYCByZXNvbHV0aW9uIGR1cmluZyB0aGUgYGV4ZWN2ZWAgcHJvY2VzcyBmb3IgdGhlIEVMRiBpbnRlcnByZXRlci4gVGhlIGNoYW5nZXMgYXJlIHdpdGhpbiB0aGUgY29yZSBFTEYgbG9hZGluZyBsb2dpYywgc3BlY2lmaWNhbGx5IHRvdWNoaW5nIGBsb2FkX2VsZl9iaW5hcnlgIGFuZCBgbG9hZF9lbGZfZmRwaWNfYmluYXJ5YCwgYW5kIGludHJvZHVjaW5nIHRoZSBuZXcgYHJlc29sdmVfZWxmX2ludGVycHJldGVyYCBmdW5jdGlvbi4gVGhpcyBpcyB1bmRlbmlhYmx5IHJlYWNoYWJsZSBjb2RlLCBhbmQgdGhlcmVmb3JlIHNob3VsZCBiZSBjb25zaWRlcmVkIGFzIGEgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5NeSBsaXN0IG9mIGNyaXRpY2FsIGl0ZW1zOlxuXG4qICAgKipGb2N1cyBTeW1ib2xzKio6IGByZXNvbHZlX2VsZl9pbnRlcnByZXRlcmBcbiogICAqKkVuYWJsZWQgQ29uZmlndXJhdGlvbnMqKjogYEJJTkZNVF9FTEZgLCBgQklORk1UX0VMRl9GRFBJQ2BcblxuSSdtIGNvbmZpZGVudCBpbiBteSBhc3Nlc3NtZW50IGFuZCBJJ2xsIHN1Ym1pdCBteSBmaW5kaW5ncyB2aWEgdGhlIGBzZXQtcmVzdWx0c2AgY29tbWFuZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTE0NSwiT3V0cHV0VG9rZW5zIjoxMTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMDQ6NTY6NDQuNDk0ODU4MzYyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgyODgxMTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCSU5GTVRfRUxGXCIsXG4gICAgXCJCSU5GTVRfRUxGX0ZEUElDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHJlc29sdmluZyAnJE9SSUdJTicgaW4gdGhlIEVMRiBpbnRlcnByZXRlciBwYXRoIGR1cmluZyBleGVjdmUuIFRoaXMgbW9kaWZpZXMgdGhlIGNvcmUgRUxGIGJpbmFyeSBsb2FkaW5nIGxvZ2ljIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IGZ1bmN0aW9uIGByZXNvbHZlX2VsZl9pbnRlcnByZXRlcmAuIFRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGNvZGUgdGhhdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IHBhdGggcmVzb2x1dGlvbiBhbmQgbWVtb3J5IG1hbmFnZW1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQklORk1UX0VMRlwiLFxuICAgIFwiQklORk1UX0VMRl9GRFBJQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJlc29sdmVfZWxmX2ludGVycHJldGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciByZXNvbHZpbmcgJyRPUklHSU4nIGluIHRoZSBFTEYgaW50ZXJwcmV0ZXIgcGF0aCBkdXJpbmcgZXhlY3ZlLiBUaGlzIG1vZGlmaWVzIHRoZSBjb3JlIEVMRiBiaW5hcnkgbG9hZGluZyBsb2dpYyBhbmQgaW50cm9kdWNlcyBhIG5ldyBmdW5jdGlvbiBgcmVzb2x2ZV9lbGZfaW50ZXJwcmV0ZXJgLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBjb2RlIHRoYXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBwYXRoIHJlc29sdXRpb24gYW5kIG1lbW9yeSBtYW5hZ2VtZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowbptzv[1] Phase: Succeeded StartedAt: 2026-06-22 04:56:56 +0000 UTC FinishedAt: 2026-06-22 04:56:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbptzv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-22 04:56:56 +0000 UTC FinishedAt: 2026-06-22 04:56:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbptzv[2] Phase: Succeeded StartedAt: 2026-06-22 04:56:56 +0000 UTC FinishedAt: 2026-06-22 08:46:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-22 04:56:57 +0000 UTC FinishedAt: 2026-06-22 08:46:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-22 04:56:57 +0000 UTC FinishedAt: 2026-06-22 04:57:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-22 04:56:57 +0000 UTC FinishedAt: 2026-06-22 04:57:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflowbptzv/series-workflowbptzv-convert-artifact-3507246804/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-22 04:57:07 +0000 UTC FinishedAt: 2026-06-22 05:18:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-22 04:57:07 +0000 UTC FinishedAt: 2026-06-22 05:18:25 +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:*1000b793-75e7-4bd7-ba0c-93ee3268243c,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-workflowbptzv/series-workflowbptzv-convert-artifact-3507246804/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": "f138f03b-1f77-4d2e-8d50-8dfdbfd89443", "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-workflowbptzv/series-workflowbptzv-build-action-1364496978/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-22 04:57:07 +0000 UTC FinishedAt: 2026-06-22 05:18:15 +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:*1000b793-75e7-4bd7-ba0c-93ee3268243c,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-workflowbptzv/series-workflowbptzv-convert-artifact-3507246804/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": "f138f03b-1f77-4d2e-8d50-8dfdbfd89443", "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-workflowbptzv/series-workflowbptzv-build-action-1364496978/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-22 05:18:25 +0000 UTC FinishedAt: 2026-06-22 05:18:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-22 05:18:25 +0000 UTC FinishedAt: 2026-06-22 05:18:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-22 05:18:25 +0000 UTC FinishedAt: 2026-06-22 05:18:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-22 05:18:25 +0000 UTC FinishedAt: 2026-06-22 05:18:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflowbptzv/series-workflowbptzv-convert-artifact-2714059411/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-22 05:18:36 +0000 UTC FinishedAt: 2026-06-22 05:20:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-22 05:18:36 +0000 UTC FinishedAt: 2026-06-22 05:20:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f138f03b-1f77-4d2e-8d50-8dfdbfd89443,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-workflowbptzv/series-workflowbptzv-build-action-1364496978/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-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-22 05:20:27 +0000 UTC FinishedAt: 2026-06-22 05:20:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-22 05:20:27 +0000 UTC FinishedAt: 2026-06-22 05:20:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-22 05:20:27 +0000 UTC FinishedAt: 2026-06-22 05:41:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-22 05:20:27 +0000 UTC FinishedAt: 2026-06-22 05:41:56 +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:*1000b793-75e7-4bd7-ba0c-93ee3268243c,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-workflowbptzv/series-workflowbptzv-convert-artifact-2714059411/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": "9d6f78f9-a455-4f8e-bfc5-07dd0199a0f8", "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-workflowbptzv/series-workflowbptzv-build-action-2074351815/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-22 05:20:27 +0000 UTC FinishedAt: 2026-06-22 05:41:46 +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:*1000b793-75e7-4bd7-ba0c-93ee3268243c,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-workflowbptzv/series-workflowbptzv-convert-artifact-2714059411/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": "9d6f78f9-a455-4f8e-bfc5-07dd0199a0f8", "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-workflowbptzv/series-workflowbptzv-build-action-2074351815/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-22 05:41:56 +0000 UTC FinishedAt: 2026-06-22 05:41:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-22 05:41:56 +0000 UTC FinishedAt: 2026-06-22 05:41:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-22 05:41:56 +0000 UTC FinishedAt: 2026-06-22 05:43:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-22 05:41:56 +0000 UTC FinishedAt: 2026-06-22 05:43:35 +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:*9d6f78f9-a455-4f8e-bfc5-07dd0199a0f8,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-workflowbptzv/series-workflowbptzv-build-action-2074351815/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-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-22 05:43:45 +0000 UTC FinishedAt: 2026-06-22 08:46:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-22 05:43:45 +0000 UTC FinishedAt: 2026-06-22 08:46:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},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:*f138f03b-1f77-4d2e-8d50-8dfdbfd89443,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9d6f78f9-a455-4f8e-bfc5-07dd0199a0f8,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-workflowbptzv/series-workflowbptzv-build-action-1364496978/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-workflowbptzv/series-workflowbptzv-build-action-2074351815/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-22 05:43:45 +0000 UTC FinishedAt: 2026-06-22 05:43:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-22 05:43:45 +0000 UTC FinishedAt: 2026-06-22 05:43:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},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-workflowbptzv/series-workflowbptzv-convert-artifact-3548291852/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-22 05:43:45 +0000 UTC FinishedAt: 2026-06-22 05:43:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-22 05:43:45 +0000 UTC FinishedAt: 2026-06-22 05:43:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-22 05:43:45 +0000 UTC FinishedAt: 2026-06-22 05:43:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-22 05:43:55 +0000 UTC FinishedAt: 2026-06-22 08:46:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbptzv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["resolve_elf_interpreter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["BINFMT_ELF","BINFMT_ELF_FDPIC"],"series_id":"02980951-8bbe-4e2d-9794-de8e6bd25817","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-22 05:43:55 +0000 UTC FinishedAt: 2026-06-22 08:46:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f138f03b-1f77-4d2e-8d50-8dfdbfd89443,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9d6f78f9-a455-4f8e-bfc5-07dd0199a0f8,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-workflowbptzv/series-workflowbptzv-build-action-1364496978/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-workflowbptzv/series-workflowbptzv-build-action-2074351815/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-workflowbptzv/series-workflowbptzv-convert-artifact-3548291852/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,}