Name: series-workflowkd56w Phase: Succeeded StartedAt: 2026-07-06 08:18:40 +0000 UTC FinishedAt: 2026-07-06 13:14:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkd56w[0] Phase: Succeeded StartedAt: 2026-07-06 08:18:40 +0000 UTC FinishedAt: 2026-07-06 08:34:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkd56w[0].run-triage Phase: Succeeded StartedAt: 2026-07-06 08:18:40 +0000 UTC FinishedAt: 2026-07-06 08:34:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_XEN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_XEN" ], "series_id": "5eabd43b-6e2c-4aa1-a8ae-32030d7d6055" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_xen_eventfd_update", "kvm_xen_eventfd_assign", "kvm_xen_eventfd_deassign", "kvm_xen_eventfd_reset", "kvm_xen_hcall_evtchn_send" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fWEVOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3hlbl9ldmVudGZkX3VwZGF0ZSYjMzQ7LAogICAgJiMzNDtrdm1feGVuX2V2ZW50ZmRfYXNzaWduJiMzNDssCiAgICAmIzM0O2t2bV94ZW5fZXZlbnRmZF9kZWFzc2lnbiYjMzQ7LAogICAgJiMzNDtrdm1feGVuX2V2ZW50ZmRfcmVzZXQmIzM0OywKICAgICYjMzQ7a3ZtX3hlbl9oY2FsbF9ldnRjaG5fc2VuZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyB0aGUgSURSIGRhdGEgc3RydWN0dXJlIHdpdGggWEFycmF5IGZvciBtYW5hZ2luZyBYZW4gZXZlbnQgY2hhbm5lbCBwb3J0cyBpbiBLVk0uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgS1ZNIFhlbiBlbXVsYXRpb24gY29kZSwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIGFuZCBoeXBlcmNhbGxzLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgbmV3IFhBcnJheSBpbXBsZW1lbnRhdGlvbiB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBidWdzIGxpa2UgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGxlYWtzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjMzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjhhZDA0YzIwNjRhYmQ2OTlmYjY1ZjI4M2I2NTJiYzM5NTVkN2E2NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDYgMDg6MzM6MjIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbmluZGV4IGI1MTcyNTdhNjMxNTMyLi4wNjQwODM3NTVmYWIwZCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbkBAIC0xNiw2ICYjNDM7MTYsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lycV93b3JrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pcnEuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3dvcmtxdWV1ZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3hhcnJheS5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva3ZtLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rdm1fcGFyYS5oXHUwMDNlXG5AQCAtMTI4Niw3ICYjNDM7MTI4Nyw3IEBAIHN0cnVjdCBrdm1feGVuIHtcbiBcdGJvb2wgcnVuc3RhdGVfdXBkYXRlX2ZsYWc7XG4gXHR1OCB1cGNhbGxfdmVjdG9yO1xuIFx0c3RydWN0IGdmbl90b19wZm5fY2FjaGUgc2hpbmZvX2NhY2hlO1xuLVx0c3RydWN0IGlkciBldnRjaG5fcG9ydHM7XG4mIzQzO1x0c3RydWN0IHhhcnJheSBldnRjaG5fcG9ydHM7XG4gXHR1bnNpZ25lZCBsb25nIHBvbGxfbWFza1tCSVRTX1RPX0xPTkdTKEtWTV9NQVhfVkNQVVMpXTtcbiBcbiBcdHN0cnVjdCBrdm1feGVuX2h2bV9jb25maWcgaHZtX2NvbmZpZztcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veGVuLmMgYi9hcmNoL3g4Ni9rdm0veGVuLmNcbmluZGV4IDY5NGIzMWMxZmNjOWFmLi43NTQxOTFlM2JlZjdhYSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS94ZW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3hlbi5jXG5AQCAtMjA3Miw3ICYjNDM7MjA3Miw3IEBAIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3VwZGF0ZShzdHJ1Y3Qga3ZtICprdm0sXG4gXG4gXHQvKiBQcm90ZWN0IHdyaXRlcyB0byBldnRjaG5mZCBhcyB3ZWxsIGFzIHRoZSBpZHIgbG9va3VwLiAgKi9cbiBcdG11dGV4X2xvY2soXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLnhlbl9sb2NrKTtcbi1cdGV2dGNobmZkID0gaWRyX2ZpbmQoXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgcG9ydCk7XG4mIzQzO1x0ZXZ0Y2huZmQgPSB4YV9sb2FkKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIHBvcnQpO1xuIFxuIFx0cmV0ID0gLUVOT0VOVDtcbiBcdGlmICghZXZ0Y2huZmQpXG5AQCAtMjE2NiwxMyAmIzQzOzIxNjYsMTMgQEAgc3RhdGljIGludCBrdm1feGVuX2V2ZW50ZmRfYXNzaWduKHN0cnVjdCBrdm0gKmt2bSxcbiBcdH1cbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLnhlbl9sb2NrKTtcbi1cdHJldCA9IGlkcl9hbGxvYyhcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBldnRjaG5mZCwgcG9ydCwgcG9ydCAmIzQzOyAxLFxuJiM0MztcdHJldCA9IHhhX2luc2VydChcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBwb3J0LCBldnRjaG5mZCxcbiBcdFx0XHRHRlBfS0VSTkVMKTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4ueGVuX2xvY2spO1xuLVx0aWYgKHJldCBcdTAwM2U9IDApXG4mIzQzO1x0aWYgKCFyZXQpXG4gXHRcdHJldHVybiAwO1xuIFxuLVx0aWYgKHJldCA9PSAtRU5PU1BDKVxuJiM0MztcdGlmIChyZXQgPT0gLUVCVVNZKVxuIFx0XHRyZXQgPSAtRUVYSVNUO1xuIG91dDpcbiBcdGlmIChldmVudGZkKVxuQEAgLTIxODcsNyAmIzQzOzIxODcsNyBAQCBzdGF0aWMgaW50IGt2bV94ZW5fZXZlbnRmZF9kZWFzc2lnbihzdHJ1Y3Qga3ZtICprdm0sIHUzMiBwb3J0KVxuIFx0c3RydWN0IGV2dGNobmZkICpldnRjaG5mZDtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLnhlbl9sb2NrKTtcbi1cdGV2dGNobmZkID0gaWRyX3JlbW92ZShcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBwb3J0KTtcbiYjNDM7XHRldnRjaG5mZCA9IHhhX2VyYXNlKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIHBvcnQpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi54ZW5fbG9jayk7XG4gXG4gXHRpZiAoIWV2dGNobmZkKVxuQEAgLTIyMDMsNyAmIzQzOzIyMDMsNyBAQCBzdGF0aWMgaW50IGt2bV94ZW5fZXZlbnRmZF9kZWFzc2lnbihzdHJ1Y3Qga3ZtICprdm0sIHUzMiBwb3J0KVxuIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3Jlc2V0KHN0cnVjdCBrdm0gKmt2bSlcbiB7XG4gXHRzdHJ1Y3QgZXZ0Y2huZmQgKmV2dGNobmZkLCAqKmFsbF9ldnRjaG5mZHM7XG4tXHRpbnQgaTtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIGk7XG4gXHRpbnQgbiA9IDA7XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi54ZW5fbG9jayk7XG5AQCAtMjIxMyw3ICYjNDM7MjIxMyw3IEBAIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3Jlc2V0KHN0cnVjdCBrdm0gKmt2bSlcbiBcdCAqIGNyaXRpY2FsIHNlY3Rpb24sIGZpcnN0IGNvbGxlY3QgYWxsIHRoZSBldnRjaG5mZCBvYmplY3RzXG4gXHQgKiBpbiBhbiBhcnJheSBhcyB0aGV5IGFyZSByZW1vdmVkIGZyb20gZXZ0Y2huX3BvcnRzLlxuIFx0ICovXG4tXHRpZHJfZm9yX2VhY2hfZW50cnkoXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgZXZ0Y2huZmQsIGkpXG4mIzQzO1x0eGFfZm9yX2VhY2goXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgaSwgZXZ0Y2huZmQpXG4gXHRcdG4mIzQzOyYjNDM7O1xuIFxuIFx0YWxsX2V2dGNobmZkcyA9IGttYWxsb2Nfb2JqcyhzdHJ1Y3QgZXZ0Y2huZmQgKiwgbik7XG5AQCAtMjIyMyw5ICYjNDM7MjIyMyw5IEBAIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3Jlc2V0KHN0cnVjdCBrdm0gKmt2bSlcbiBcdH1cbiBcbiBcdG4gPSAwO1xuLVx0aWRyX2Zvcl9lYWNoX2VudHJ5KFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIGV2dGNobmZkLCBpKSB7XG4mIzQzO1x0eGFfZm9yX2VhY2goXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgaSwgZXZ0Y2huZmQpIHtcbiBcdFx0YWxsX2V2dGNobmZkc1tuJiM0MzsmIzQzO10gPSBldnRjaG5mZDtcbi1cdFx0aWRyX3JlbW92ZShcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBldnRjaG5mZC1cdTAwM2VzZW5kX3BvcnQpO1xuJiM0MztcdFx0eGFfZXJhc2UoXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgZXZ0Y2huZmQtXHUwMDNlc2VuZF9wb3J0KTtcbiBcdH1cbiBcdG11dGV4X3VubG9jayhcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4ueGVuX2xvY2spO1xuIFxuQEAgLTIyNzYsMTIgJiM0MzsyMjc2LDEwIEBAIHN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgcGFyYW0sIHU2NCAqcilcbiBcdH1cbiBcbiBcdC8qXG4tXHQgKiBldnRjaG5mZCBpcyBwcm90ZWN0ZWQgYnkga3ZtLVx1MDAzZXNyY3U7IHRoZSBpZHIgbG9va3VwIGluc3RlYWRcbi1cdCAqIGlzIHByb3RlY3RlZCBieSBSQ1UuXG4mIzQzO1x0ICogZXZ0Y2huZmQgaXMgcHJvdGVjdGVkIGJ5IGt2bS1cdTAwM2VzcmN1OyB0aGUgeGFfbG9hZCBpcyBSQ1Utc2FmZVxuJiM0MztcdCAqIGludGVybmFsbHksIG5vIGV4cGxpY2l0IHJjdV9yZWFkX2xvY2soKSBuZWVkZWQuXG4gXHQgKi9cbi1cdHJjdV9yZWFkX2xvY2soKTtcbi1cdGV2dGNobmZkID0gaWRyX2ZpbmQoXHUwMDI2dmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBzZW5kLnBvcnQpO1xuLVx0cmN1X3JlYWRfdW5sb2NrKCk7XG4mIzQzO1x0ZXZ0Y2huZmQgPSB4YV9sb2FkKFx1MDAyNnZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgc2VuZC5wb3J0KTtcbiBcdGlmICghZXZ0Y2huZmQpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbkBAIC0yMzI4LDIzICYjNDM7MjMyNiwyMyBAQCB2b2lkIGt2bV94ZW5fZGVzdHJveV92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB2b2lkIGt2bV94ZW5faW5pdF92bShzdHJ1Y3Qga3ZtICprdm0pXG4ge1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4ueGVuX2xvY2spO1xuLVx0aWRyX2luaXQoXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cyk7XG4mIzQzO1x0eGFfaW5pdChcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzKTtcbiBcdGt2bV9ncGNfaW5pdChcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uc2hpbmZvX2NhY2hlLCBrdm0pO1xuIH1cbiBcbiB2b2lkIGt2bV94ZW5fZGVzdHJveV92bShzdHJ1Y3Qga3ZtICprdm0pXG4ge1xuIFx0c3RydWN0IGV2dGNobmZkICpldnRjaG5mZDtcbi1cdGludCBpO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgaTtcbiBcbiBcdGt2bV9ncGNfZGVhY3RpdmF0ZShcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uc2hpbmZvX2NhY2hlKTtcbiBcbi1cdGlkcl9mb3JfZWFjaF9lbnRyeShcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBldnRjaG5mZCwgaSkge1xuJiM0MztcdHhhX2Zvcl9lYWNoKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIGksIGV2dGNobmZkKSB7XG4gXHRcdGlmICghZXZ0Y2huZmQtXHUwMDNlZGVsaXZlci5wb3J0LnBvcnQpXG4gXHRcdFx0ZXZlbnRmZF9jdHhfcHV0KGV2dGNobmZkLVx1MDAzZWRlbGl2ZXIuZXZlbnRmZC5jdHgpO1xuIFx0XHRrZnJlZShldnRjaG5mZCk7XG4gXHR9XG4tXHRpZHJfZGVzdHJveShcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzKTtcbiYjNDM7XHR4YV9kZXN0cm95KFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMpO1xuIFxuIFx0aWYgKGt2bS1cdTAwM2VhcmNoLnhlbi5odm1fY29uZmlnLm1zcilcbiBcdFx0c3RhdGljX2JyYW5jaF9zbG93X2RlY19kZWZlcnJlZChcdTAwMjZrdm1feGVuX2VuYWJsZWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjMzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fWEVOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3hlbl9ldmVudGZkX3VwZGF0ZSYjMzQ7LAogICAgJiMzNDtrdm1feGVuX2V2ZW50ZmRfYXNzaWduJiMzNDssCiAgICAmIzM0O2t2bV94ZW5fZXZlbnRmZF9kZWFzc2lnbiYjMzQ7LAogICAgJiMzNDtrdm1feGVuX2V2ZW50ZmRfcmVzZXQmIzM0OywKICAgICYjMzQ7a3ZtX3hlbl9oY2FsbF9ldnRjaG5fc2VuZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyB0aGUgSURSIGRhdGEgc3RydWN0dXJlIHdpdGggWEFycmF5IGZvciBtYW5hZ2luZyBYZW4gZXZlbnQgY2hhbm5lbCBwb3J0cyBpbiBLVk0uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgS1ZNIFhlbiBlbXVsYXRpb24gY29kZSwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIGFuZCBoeXBlcmNhbGxzLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgbmV3IFhBcnJheSBpbXBsZW1lbnRhdGlvbiB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBidWdzIGxpa2UgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGxlYWtzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2OGFkMDRjMjA2NGFiZDY5OWZiNjVmMjgzYjY1MmJjMzk1NWQ3YTY1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgNiAwODozMzoyMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCmluZGV4IGI1MTcyNTdhNjMxNTMyLi4wNjQwODM3NTVmYWIwZCAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCkBAIC0xNiw2ICYjNDM7MTYsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2lycV93b3JrLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaXJxLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvd29ya3F1ZXVlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3hhcnJheS5oJmd0OwogCiAjaW5jbHVkZSAmbHQ7bGludXgva3ZtLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgva3ZtX3BhcmEuaCZndDsKQEAgLTEyODYsNyAmIzQzOzEyODcsNyBAQCBzdHJ1Y3Qga3ZtX3hlbiB7CiAJYm9vbCBydW5zdGF0ZV91cGRhdGVfZmxhZzsKIAl1OCB1cGNhbGxfdmVjdG9yOwogCXN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlIHNoaW5mb19jYWNoZTsKLQlzdHJ1Y3QgaWRyIGV2dGNobl9wb3J0czsKJiM0MzsJc3RydWN0IHhhcnJheSBldnRjaG5fcG9ydHM7CiAJdW5zaWduZWQgbG9uZyBwb2xsX21hc2tbQklUU19UT19MT05HUyhLVk1fTUFYX1ZDUFVTKV07CiAKIAlzdHJ1Y3Qga3ZtX3hlbl9odm1fY29uZmlnIGh2bV9jb25maWc7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veGVuLmMgYi9hcmNoL3g4Ni9rdm0veGVuLmMKaW5kZXggNjk0YjMxYzFmY2M5YWYuLjc1NDE5MWUzYmVmN2FhIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0veGVuLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3hlbi5jCkBAIC0yMDcyLDcgJiM0MzsyMDcyLDcgQEAgc3RhdGljIGludCBrdm1feGVuX2V2ZW50ZmRfdXBkYXRlKHN0cnVjdCBrdm0gKmt2bSwKIAogCS8qIFByb3RlY3Qgd3JpdGVzIHRvIGV2dGNobmZkIGFzIHdlbGwgYXMgdGhlIGlkciBsb29rdXAuICAqLwogCW11dGV4X2xvY2soJmFtcDtrdm0tJmd0O2FyY2gueGVuLnhlbl9sb2NrKTsKLQlldnRjaG5mZCA9IGlkcl9maW5kKCZhbXA7a3ZtLSZndDthcmNoLnhlbi5ldnRjaG5fcG9ydHMsIHBvcnQpOwomIzQzOwlldnRjaG5mZCA9IHhhX2xvYWQoJmFtcDtrdm0tJmd0O2FyY2gueGVuLmV2dGNobl9wb3J0cywgcG9ydCk7CiAKIAlyZXQgPSAtRU5PRU5UOwogCWlmICghZXZ0Y2huZmQpCkBAIC0yMTY2LDEzICYjNDM7MjE2NiwxMyBAQCBzdGF0aWMgaW50IGt2bV94ZW5fZXZlbnRmZF9hc3NpZ24oc3RydWN0IGt2bSAqa3ZtLAogCX0KIAogCW11dGV4X2xvY2soJmFtcDtrdm0tJmd0O2FyY2gueGVuLnhlbl9sb2NrKTsKLQlyZXQgPSBpZHJfYWxsb2MoJmFtcDtrdm0tJmd0O2FyY2gueGVuLmV2dGNobl9wb3J0cywgZXZ0Y2huZmQsIHBvcnQsIHBvcnQgJiM0MzsgMSwKJiM0MzsJcmV0ID0geGFfaW5zZXJ0KCZhbXA7a3ZtLSZndDthcmNoLnhlbi5ldnRjaG5fcG9ydHMsIHBvcnQsIGV2dGNobmZkLAogCQkJR0ZQX0tFUk5FTCk7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7a3ZtLSZndDthcmNoLnhlbi54ZW5fbG9jayk7Ci0JaWYgKHJldCAmZ3Q7PSAwKQomIzQzOwlpZiAoIXJldCkKIAkJcmV0dXJuIDA7CiAKLQlpZiAocmV0ID09IC1FTk9TUEMpCiYjNDM7CWlmIChyZXQgPT0gLUVCVVNZKQogCQlyZXQgPSAtRUVYSVNUOwogb3V0OgogCWlmIChldmVudGZkKQpAQCAtMjE4Nyw3ICYjNDM7MjE4Nyw3IEBAIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX2RlYXNzaWduKHN0cnVjdCBrdm0gKmt2bSwgdTMyIHBvcnQpCiAJc3RydWN0IGV2dGNobmZkICpldnRjaG5mZDsKIAogCW11dGV4X2xvY2soJmFtcDtrdm0tJmd0O2FyY2gueGVuLnhlbl9sb2NrKTsKLQlldnRjaG5mZCA9IGlkcl9yZW1vdmUoJmFtcDtrdm0tJmd0O2FyY2gueGVuLmV2dGNobl9wb3J0cywgcG9ydCk7CiYjNDM7CWV2dGNobmZkID0geGFfZXJhc2UoJmFtcDtrdm0tJmd0O2FyY2gueGVuLmV2dGNobl9wb3J0cywgcG9ydCk7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7a3ZtLSZndDthcmNoLnhlbi54ZW5fbG9jayk7CiAKIAlpZiAoIWV2dGNobmZkKQpAQCAtMjIwMyw3ICYjNDM7MjIwMyw3IEBAIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX2RlYXNzaWduKHN0cnVjdCBrdm0gKmt2bSwgdTMyIHBvcnQpCiBzdGF0aWMgaW50IGt2bV94ZW5fZXZlbnRmZF9yZXNldChzdHJ1Y3Qga3ZtICprdm0pCiB7CiAJc3RydWN0IGV2dGNobmZkICpldnRjaG5mZCwgKiphbGxfZXZ0Y2huZmRzOwotCWludCBpOwomIzQzOwl1bnNpZ25lZCBsb25nIGk7CiAJaW50IG4gPSAwOwogCiAJbXV0ZXhfbG9jaygmYW1wO2t2bS0mZ3Q7YXJjaC54ZW4ueGVuX2xvY2spOwpAQCAtMjIxMyw3ICYjNDM7MjIxMyw3IEBAIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3Jlc2V0KHN0cnVjdCBrdm0gKmt2bSkKIAkgKiBjcml0aWNhbCBzZWN0aW9uLCBmaXJzdCBjb2xsZWN0IGFsbCB0aGUgZXZ0Y2huZmQgb2JqZWN0cwogCSAqIGluIGFuIGFycmF5IGFzIHRoZXkgYXJlIHJlbW92ZWQgZnJvbSBldnRjaG5fcG9ydHMuCiAJICovCi0JaWRyX2Zvcl9lYWNoX2VudHJ5KCZhbXA7a3ZtLSZndDthcmNoLnhlbi5ldnRjaG5fcG9ydHMsIGV2dGNobmZkLCBpKQomIzQzOwl4YV9mb3JfZWFjaCgmYW1wO2t2bS0mZ3Q7YXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBpLCBldnRjaG5mZCkKIAkJbiYjNDM7JiM0Mzs7CiAKIAlhbGxfZXZ0Y2huZmRzID0ga21hbGxvY19vYmpzKHN0cnVjdCBldnRjaG5mZCAqLCBuKTsKQEAgLTIyMjMsOSAmIzQzOzIyMjMsOSBAQCBzdGF0aWMgaW50IGt2bV94ZW5fZXZlbnRmZF9yZXNldChzdHJ1Y3Qga3ZtICprdm0pCiAJfQogCiAJbiA9IDA7Ci0JaWRyX2Zvcl9lYWNoX2VudHJ5KCZhbXA7a3ZtLSZndDthcmNoLnhlbi5ldnRjaG5fcG9ydHMsIGV2dGNobmZkLCBpKSB7CiYjNDM7CXhhX2Zvcl9lYWNoKCZhbXA7a3ZtLSZndDthcmNoLnhlbi5ldnRjaG5fcG9ydHMsIGksIGV2dGNobmZkKSB7CiAJCWFsbF9ldnRjaG5mZHNbbiYjNDM7JiM0MztdID0gZXZ0Y2huZmQ7Ci0JCWlkcl9yZW1vdmUoJmFtcDtrdm0tJmd0O2FyY2gueGVuLmV2dGNobl9wb3J0cywgZXZ0Y2huZmQtJmd0O3NlbmRfcG9ydCk7CiYjNDM7CQl4YV9lcmFzZSgmYW1wO2t2bS0mZ3Q7YXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBldnRjaG5mZC0mZ3Q7c2VuZF9wb3J0KTsKIAl9CiAJbXV0ZXhfdW5sb2NrKCZhbXA7a3ZtLSZndDthcmNoLnhlbi54ZW5fbG9jayk7CiAKQEAgLTIyNzYsMTIgJiM0MzsyMjc2LDEwIEBAIHN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgcGFyYW0sIHU2NCAqcikKIAl9CiAKIAkvKgotCSAqIGV2dGNobmZkIGlzIHByb3RlY3RlZCBieSBrdm0tJmd0O3NyY3U7IHRoZSBpZHIgbG9va3VwIGluc3RlYWQKLQkgKiBpcyBwcm90ZWN0ZWQgYnkgUkNVLgomIzQzOwkgKiBldnRjaG5mZCBpcyBwcm90ZWN0ZWQgYnkga3ZtLSZndDtzcmN1OyB0aGUgeGFfbG9hZCBpcyBSQ1Utc2FmZQomIzQzOwkgKiBpbnRlcm5hbGx5LCBubyBleHBsaWNpdCByY3VfcmVhZF9sb2NrKCkgbmVlZGVkLgogCSAqLwotCXJjdV9yZWFkX2xvY2soKTsKLQlldnRjaG5mZCA9IGlkcl9maW5kKCZhbXA7dmNwdS0mZ3Q7a3ZtLSZndDthcmNoLnhlbi5ldnRjaG5fcG9ydHMsIHNlbmQucG9ydCk7Ci0JcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CWV2dGNobmZkID0geGFfbG9hZCgmYW1wO3ZjcHUtJmd0O2t2bS0mZ3Q7YXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBzZW5kLnBvcnQpOwogCWlmICghZXZ0Y2huZmQpCiAJCXJldHVybiBmYWxzZTsKIApAQCAtMjMyOCwyMyAmIzQzOzIzMjYsMjMgQEAgdm9pZCBrdm1feGVuX2Rlc3Ryb3lfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB2b2lkIGt2bV94ZW5faW5pdF92bShzdHJ1Y3Qga3ZtICprdm0pCiB7CiAJbXV0ZXhfaW5pdCgmYW1wO2t2bS0mZ3Q7YXJjaC54ZW4ueGVuX2xvY2spOwotCWlkcl9pbml0KCZhbXA7a3ZtLSZndDthcmNoLnhlbi5ldnRjaG5fcG9ydHMpOwomIzQzOwl4YV9pbml0KCZhbXA7a3ZtLSZndDthcmNoLnhlbi5ldnRjaG5fcG9ydHMpOwogCWt2bV9ncGNfaW5pdCgmYW1wO2t2bS0mZ3Q7YXJjaC54ZW4uc2hpbmZvX2NhY2hlLCBrdm0pOwogfQogCiB2b2lkIGt2bV94ZW5fZGVzdHJveV92bShzdHJ1Y3Qga3ZtICprdm0pCiB7CiAJc3RydWN0IGV2dGNobmZkICpldnRjaG5mZDsKLQlpbnQgaTsKJiM0MzsJdW5zaWduZWQgbG9uZyBpOwogCiAJa3ZtX2dwY19kZWFjdGl2YXRlKCZhbXA7a3ZtLSZndDthcmNoLnhlbi5zaGluZm9fY2FjaGUpOwogCi0JaWRyX2Zvcl9lYWNoX2VudHJ5KCZhbXA7a3ZtLSZndDthcmNoLnhlbi5ldnRjaG5fcG9ydHMsIGV2dGNobmZkLCBpKSB7CiYjNDM7CXhhX2Zvcl9lYWNoKCZhbXA7a3ZtLSZndDthcmNoLnhlbi5ldnRjaG5fcG9ydHMsIGksIGV2dGNobmZkKSB7CiAJCWlmICghZXZ0Y2huZmQtJmd0O2RlbGl2ZXIucG9ydC5wb3J0KQogCQkJZXZlbnRmZF9jdHhfcHV0KGV2dGNobmZkLSZndDtkZWxpdmVyLmV2ZW50ZmQuY3R4KTsKIAkJa2ZyZWUoZXZ0Y2huZmQpOwogCX0KLQlpZHJfZGVzdHJveSgmYW1wO2t2bS0mZ3Q7YXJjaC54ZW4uZXZ0Y2huX3BvcnRzKTsKJiM0MzsJeGFfZGVzdHJveSgmYW1wO2t2bS0mZ3Q7YXJjaC54ZW4uZXZ0Y2huX3BvcnRzKTsKIAogCWlmIChrdm0tJmd0O2FyY2gueGVuLmh2bV9jb25maWcubXNyKQogCQlzdGF0aWNfYnJhbmNoX3Nsb3dfZGVjX2RlZmVycmVkKCZhbXA7a3ZtX3hlbl9lbmFibGVkKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDg6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcwNAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIHhhcnJheS1CYXNlZCBFdnRjaG4gUG9ydCBSZXBsYWNlbWVudCBpbiBLVk0vWGVuKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBzd2FwcGluZyBvdXQgdGhlIGBpZHJgIGRhdGEgc3RydWN0dXJlIGZvciBgeGFycmF5YCBpbiB0aGUgS1ZNL1hlbiBlbXVsYXRpb24gY29kZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgYXJjaC94ODYva3ZtL3hlbi5jYC4gVGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSwgYWZmZWN0aW5nIGhvdyB3ZSBtYW5hZ2UgZXZlbnQgY2hhbm5lbCBwb3J0cy4gVGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBkaXJlY3RseSBpbXBhY3RlZCBhcmUgYGt2bV94ZW5fZXZlbnRmZF91cGRhdGVgLCBga3ZtX3hlbl9ldmVudGZkX2Fzc2lnbmAsIGBrdm1feGVuX2V2ZW50ZmRfZGVhc3NpZ25gLCBga3ZtX3hlbl9ldmVudGZkX3Jlc2V0YCwgYGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmRgLCBga3ZtX3hlbl9pbml0X3ZtYCwgYW5kIGBrdm1feGVuX2Rlc3Ryb3lfdm1gLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHZlcmlmeSB0aGF0IHRoaXMgY29kZSBwYXRoIGlzIGFjdHVhbGx5IGhpdCB1bmRlciByZWFsaXN0aWMgY29uZGl0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb25zIG5lY2Vzc2FyeSB0byBnZXQgdGhpcyBhY3RpdmUuICBJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyBpZiB0aGlzIGlzIGVuYWJsZWQgdmlhIGNvbmZpZyBvcHRpb25zLiBTbyBJIGFtIGdvaW5nIHRvIHNlYXJjaCBmb3IgY2FsbHMgdG8gYGt2bV94ZW5fZXZlbnRmZF9hc3NpZ25gIG9yIGBrdm1feGVuX2V2ZW50ZmRfdXBkYXRlYCBpbiB0aGUgY29kZWJhc2UuIFRoYXQgd2lsbCBnaXZlIG1lIHNvbWUgaW5zaWdodCBpbnRvIHdoZXJlIHRoaXMgY29kZSBpcyBjYWxsZWQgZnJvbSBhbmQgd2hhdCB0cmlnZ2VycyBpdHMgZXhlY3V0aW9uLiAgVGhpcyBpcyBhIGNyaXRpY2FsIGZpcnN0IHN0ZXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgYmVmb3JlIEkgY2FuIGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBzd2l0Y2ggdG8gYHhhcnJheWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDg6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3hlbl9ldmVudGZkX2Fzc2lnbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3hlbi5jPTIwNjY9c3RhdGljIGludCBrdm1feGVuX2V2ZW50ZmRfdXBkYXRlKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjExMi0gKi9cbmFyY2gveDg2L2t2bS94ZW4uYzoyMTEzOnN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX2Fzc2lnbihzdHJ1Y3Qga3ZtICprdm0sXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjExNC1cdFx0XHRcdCAgc3RydWN0IGt2bV94ZW5faHZtX2F0dHIgKmRhdGEpXG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jPTIyNDU9c3RhdGljIGludCBrdm1feGVuX3NldGF0dHJfZXZ0Y2huKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV94ZW5faHZtX2F0dHIgKmRhdGEpXG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jLTIyNjEtXG5hcmNoL3g4Ni9rdm0veGVuLmM6MjI2MjpcdHJldHVybiBrdm1feGVuX2V2ZW50ZmRfYXNzaWduKGt2bSwgZGF0YSk7XG5hcmNoL3g4Ni9rdm0veGVuLmMtMjI2My19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDg6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU0NgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQuCgoqKkFuYWx5emluZyB0aGUgRnVuY3Rpb24gQ2FsbCBQYXRoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IHNlZW1zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBmdW5jdGlvbiBuYW1lZCBga3ZtX3hlbl9zZXRhdHRyX2V2dGNobmAuIFRoZSBrZXkgaGVyZSBpcyB0aGF0ICYjMzQ7ZXZ0Y2huJiMzNDsgc3Ryb25nbHkgc3VnZ2VzdHMgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aGluIHRoZSBjb250ZXh0IG9mIFhlbiBldmVudCBjaGFubmVscywgd2hpY2ggbWVhbnMgaXQmIzM5O3MgbGlrZWx5IGRlYWxpbmcgd2l0aCBjb21tdW5pY2F0aW9uIG9yIGludGVycnVwdHMgd2l0aGluIGEgWGVuIHZpcnR1YWwgbWFjaGluZSBlbnZpcm9ubWVudC4gTm93LCB0aGUgaGludCB0aGF0IHRoaXMgbWlnaHQgYmUgY29ubmVjdGVkIHRvIGFuIGBpb2N0bGAgY2FsbCBpcyBjcnVjaWFsLiBJb2N0bHMgYXJlIHRoZSBjbGFzc2ljIG1lY2hhbmlzbSBmb3IgdXNlci1zcGFjZSBwcm9ncmFtcyB0byBpc3N1ZSBkZXZpY2Utc3BlY2lmaWMgY29tbWFuZHMgdG8gdGhlIGtlcm5lbC4gU28sIHRoZSBsaWtlbHkgc2NlbmFyaW8gaXMgdGhhdCBhIHVzZXItc3BhY2UgcHJvZ3JhbSBpcyBpc3N1aW5nIGEgY29tbWFuZCB0aHJvdWdoIGFuIGBpb2N0bGAsIGFuZCB0aGlzLCBpbiB0dXJuLCBpcyBjYWxsaW5nIGBrdm1feGVuX3NldGF0dHJfZXZ0Y2huYCBhdCBzb21lIHBvaW50IGluIHRoZSBjaGFpbi4gSSBuZWVkIHRvIHRyYWNlIHRoZSBwYXRoIGFuZCB2ZXJpZnkgdGhpcyBhc3N1bXB0aW9uLiBXZSBzaG91bGQgYmUgYWJsZSB0byBsb29rIGF0IHRoZSBrZXJuZWwgY29kZSBmb3IgdGhlIGBrdm1feGVuX3NldGF0dHJfZXZ0Y2huYCBmdW5jdGlvbiB0byB1bmRlcnN0YW5kIG1vcmUgYWJvdXQgaXRzIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV94ZW5fc2V0YXR0cl9ldnRjaG4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS94ZW4uYz0zMj1zdGF0aWMgaW50IGt2bV94ZW5fc2V0X2V2dGNobihzdHJ1Y3Qga3ZtX3hlbl9ldnRjaG4gKnhlLCBzdHJ1Y3Qga3ZtICprdm0pO1xuYXJjaC94ODYva3ZtL3hlbi5jOjMzOnN0YXRpYyBpbnQga3ZtX3hlbl9zZXRhdHRyX2V2dGNobihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1feGVuX2h2bV9hdHRyICpkYXRhKTtcbmFyY2gveDg2L2t2bS94ZW4uYy0zNC1zdGF0aWMgYm9vbCBrdm1feGVuX2hjYWxsX2V2dGNobl9zZW5kKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHBhcmFtLCB1NjQgKnIpO1xuLS1cbmFyY2gveDg2L2t2bS94ZW4uYz03NDY9aW50IGt2bV94ZW5faHZtX3NldF9hdHRyKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV94ZW5faHZtX2F0dHIgKmRhdGEpXG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jLTgyMi1cdGNhc2UgS1ZNX1hFTl9BVFRSX1RZUEVfRVZUQ0hOOlxuYXJjaC94ODYva3ZtL3hlbi5jOjgyMzpcdFx0ciA9IGt2bV94ZW5fc2V0YXR0cl9ldnRjaG4oa3ZtLCBkYXRhKTtcbmFyY2gveDg2L2t2bS94ZW4uYy04MjQtXHRcdGJyZWFrO1xuLS1cbmFyY2gveDg2L2t2bS94ZW4uYz0yMjAzPXN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3Jlc2V0KHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjI0NC1cbmFyY2gveDg2L2t2bS94ZW4uYzoyMjQ1OnN0YXRpYyBpbnQga3ZtX3hlbl9zZXRhdHRyX2V2dGNobihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1feGVuX2h2bV9hdHRyICpkYXRhKVxuYXJjaC94ODYva3ZtL3hlbi5jLTIyNDYte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNzUKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgS1ZNLVhlbiBIVk0gQXR0cmlidXRlIFNldHRpbmcqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBrdm1feGVuX2h2bV9zZXRfYXR0cmAgaXMgYmVpbmcgaW52b2tlZC4gVGhlIGNvbnRleHQgc3VnZ2VzdHMgaXQmIzM5O3MgYmVpbmcgY2FsbGVkLCBvciBjb3VsZCBiZSBjYWxsZWQsIGZyb20gYGt2bV9hcmNoX3ZtX2lvY3RsYCBvciBzb21ldGhpbmcgc2ltaWxhciwgbGlrZWx5IHdpdGhpbiB0aGUgS1ZNIGFyY2hpdGVjdHVyZS4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgY2FsbC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIGNvcmUgeDg2IEtWTSBjb2RlLCBzaW5jZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHg4NiB2aXJ0dWFsaXphdGlvbiBhbmQgc29tZXRoaW5nIFhlbi1yZWxhdGVkLiBTcGVjaWZpY2FsbHksIHRoZSBmaWxlIEkmIzM5O20gZ29pbmcgdG8gbG9vayBhdCBpcyBgYXJjaC94ODYva3ZtL3g4Ni5jYC4gVGhhdCYjMzk7cyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0byBmaW5kIHRoZSBkZWZpbml0aW9uIG9yIHJlZmVyZW5jZSB0byBgS1ZNX1hFTl9IVk1fU0VUX0FUVFJgLCBhbmQgdGh1cyB0aGUgY29udGV4dCBJIGFtIGxvb2tpbmcgZm9yLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGRpZyB1cCB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwODozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtLVk1fWEVOX0hWTV9TRVRfQVRUUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jPTQzNTQ9aW50IGt2bV9hcmNoX3ZtX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy00NjAzLVx0fVxuYXJjaC94ODYva3ZtL3g4Ni5jOjQ2MDQ6XHRjYXNlIEtWTV9YRU5fSFZNX1NFVF9BVFRSOiB7XG5hcmNoL3g4Ni9rdm0veDg2LmMtNDYwNS1cdFx0c3RydWN0IGt2bV94ZW5faHZtX2F0dHIgeGhhO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3NDEKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLVk0gWGVuIEVtdWxhdGlvbiBDb25maWd1cmF0aW9uIC0gSW5pdGlhbCBUaG91Z2h0cyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIHBvaW50ZWQgdG93YXJkcyBgS1ZNX1hFTl9IVk1fU0VUX0FUVFJgLCB3aGljaCBsb29rcyBsaWtlIHRoZSBlbnRyeSBwb2ludCBmb3IgY29uZmlndXJpbmcgS1ZNJiMzOTtzIFhlbiBIVk0gZW11bGF0aW9uLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIHdoYXQgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBrbm9icyBhcmUgZXZlbiAqYXZhaWxhYmxlKj8gV2hhdCBkb2VzIHRoZSBzeXN0ZW0gbmVlZCB0byBjb25zaWRlcj8gSSYjMzk7bSB0aGlua2luZyBJJiMzOTtsbCBuZWVkIHRvIGRyaWxsIGRvd24gaW50byB0aGUga2VybmVsIHNvdXJjZSBjb2RlIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjaGVjayBlaXRoZXIgYGFyY2gveDg2L2t2bS9LY29uZmlnYCBvciBwb3NzaWJseSB0aGUgYE1ha2VmaWxlYCBpbiB0aGUgc2FtZSBkaXJlY3RvcnksIGBhcmNoL3g4Ni9rdm0vYC4gVGhlc2UgYXJlIHVzdWFsbHkgd2hlcmUgdGhlIGJ1aWxkLXRpbWUgYW5kIGRlcGVuZGVuY3kgc2V0dGluZ3MgcmVzaWRlLCB3aGljaCB3b3VsZCBnaXZlIG1lIGEgZnJhbWV3b3JrIGZvciB0aGUgb3B0aW9ucyBhdmFpbGFibGUgZm9yIHRoaXMgc2V0dXAuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDg6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGVuXFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL01ha2VmaWxlPTEzPWt2bS0kKENPTkZJR19LVk1fSFlQRVJWKSAmIzQzOz0gaHlwZXJ2Lm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZToxNDprdm0tJChDT05GSUdfS1ZNX1hFTilcdCYjNDM7PSB4ZW4ub1xuYXJjaC94ODYva3ZtL01ha2VmaWxlLTE1LWt2bS0kKENPTkZJR19LVk1fU01NKVx0JiM0Mzs9IHNtbS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxMjUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgY3JhZnRlZCB3aXRoIGFuIGV4cGVydCYjMzk7cyBtaW5kOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgdGhlIGNvcmUgaXNzdWUgc2VlbXMgdG8gcmV2b2x2ZSBhcm91bmQga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgc3BlY2lmaWNhbGx5IHRob3NlIHJlbGF0ZWQgdG8gS1ZNIGFuZCBYZW4uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBDT05GSUdfS1ZNX1hFTmAgaXMgZGVmaW5pdGVseSBhIGtleSByZXF1aXJlbWVudC4gVGhhdOKAmXMgcHJvYmFibHkgdGhlIGJyaWRnZSwgb3IgdGhlIHNwZWNpZmljIGVuYWJsaW5nIGNvbXBvbmVudCB0aGF0IHRpZXMgdGhlIEtWTSBtb2R1bGUgdG8gWGVuIGZ1bmN0aW9uYWxpdHkuIE5hdHVyYWxseSwgYENPTkZJR19LVk1gIGl0c2VsZiBpcyBhbHNvIGVzc2VudGlhbDsgdGhhdCYjMzk7cyB0aGUgYmFzZSBLVk0gc3VwcG9ydC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhpcyBwYXJ0aWN1bGFyIEtWTV9YRU4gY29uZmlnIGludGVyYWN0cyBpbiB0aGUgeDg2IGFyY2hpdGVjdHVyZSwgc28gbXkgbmV4dCBzdGVwIGlzIGNsZWFyIC0gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBjaGVjayBgYXJjaC94ODYva3ZtL0tjb25maWdgIHRvIHNlZSB0aGUgY29uZGl0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGFzc29jaWF0ZWQgd2l0aCBgS1ZNX1hFTmAuIFRoYXQgZmlsZSBpcyB0aGUgbW9zdCBsaWtlbHkgcGxhY2UgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGFuZCBhbnkgcG90ZW50aWFsIHByZS1yZXF1aXNpdGVzIGZvciB0aGlzIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk1fWEVOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOTM9Y29uZmlnIEtWTV9IWVBFUlZcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDYtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDc6Y29uZmlnIEtWTV9YRU5cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwOC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgWGVuIGh5cGVyY2FsbCBpbnRlcmZhY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDg6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUyNgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDEzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtWTS1YZW4gQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBrZXlpbmcgaW4gb24gYEtWTV9YRU5gLiBUaGF0JiMzOTtzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gc2V0dGluZyBpbiBwbGF5IGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBpbXBhY3RlZCBmdW5jdGlvbnMsIHNvIEkgY2FuIHNlZSBob3cgZGVlcGx5IHRoaXMgY2hhbmdlIHJpcHBsZXMuIEl0IHNlZW1zIHRoZXNlIGZ1bmN0aW9ucyBoYXZlIGJlZW4gbW9kaWZpZWQ6IGBrdm1feGVuX2V2ZW50ZmRfdXBkYXRlYCwgYGt2bV94ZW5fZXZlbnRmZF9hc3NpZ25gLCBga3ZtX3hlbl9ldmVudGZkX2RlYXNzaWduYCwgYGt2bV94ZW5fZXZlbnRmZF9yZXNldGAsIGBrdm1feGVuX2hjYWxsX2V2dGNobl9zZW5kYCwgYGt2bV94ZW5faW5pdF92bWAsIGFuZCBga3ZtX3hlbl9kZXN0cm95X3ZtYC4gTm93LCBJIHdhbnQgdG8gY29uZmlybSBob3cgYGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmRgIGlzIHV0aWxpemVkLiBJcyB0aGVyZSBhIGNhbGwgcGF0aCB0byB0aGlzIGZ1bmN0aW9uLCBvciBhcmUgd2UgZGVhbGluZyB3aXRoIGRlYWQgY29kZT8gVGltZSB0byBjaGVjayBmb3IgcmVhY2hhYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwODozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1feGVuX2hjYWxsX2V2dGNobl9zZW5kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veGVuLmM9MzM9c3RhdGljIGludCBrdm1feGVuX3NldGF0dHJfZXZ0Y2huKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV94ZW5faHZtX2F0dHIgKmRhdGEpO1xuYXJjaC94ODYva3ZtL3hlbi5jOjM0OnN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgcGFyYW0sIHU2NCAqcik7XG5hcmNoL3g4Ni9rdm0veGVuLmMtMzUtXG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jPTE2NzQ9aW50IGt2bV94ZW5faHlwZXJjYWxsKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmMtMTcyOS1cdFx0aWYgKHBhcmFtc1swXSA9PSBFVlRDSE5PUF9zZW5kKVxuYXJjaC94ODYva3ZtL3hlbi5jOjE3MzA6XHRcdFx0aGFuZGxlZCA9IGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmQodmNwdSwgcGFyYW1zWzFdLCBcdTAwMjZyKTtcbmFyY2gveDg2L2t2bS94ZW4uYy0xNzMxLVx0XHRicmVhaztcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmM9MjI0NT1zdGF0aWMgaW50IGt2bV94ZW5fc2V0YXR0cl9ldnRjaG4oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3hlbl9odm1fYXR0ciAqZGF0YSlcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjI2NC1cbmFyY2gveDg2L2t2bS94ZW4uYzoyMjY1OnN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgcGFyYW0sIHU2NCAqcilcbmFyY2gveDg2L2t2bS94ZW4uYy0yMjY2LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDg6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzMyOAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDEzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBga3ZtX3hlbl9oeXBlcmNhbGxgIGlzIGluZGVlZCB0aGUgZW50cnkgcG9pbnQuIEV4Y2VsbGVudCwgdGhpcyBsb29rcyBsaWtlIGEgcHJvbWlzaW5nIGF2ZW51ZSBmb3IgZnV6emluZywgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHplcm8gaW4gb24gc3BlY2lmaWMgc3ltYm9scyB3aXRoaW4gdGhpcyBhcmVhLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBtb3N0IGxpa2VseSBjYW5kaWRhdGVzIGZvciBpbnRlcmVzdGluZyBiZWhhdmlvciBzZWVtIHRvIGJlOiBga3ZtX3hlbl9ldmVudGZkX3VwZGF0ZWAsIGBrdm1feGVuX2V2ZW50ZmRfYXNzaWduYCwgYGt2bV94ZW5fZXZlbnRmZF9kZWFzc2lnbmAsIGBrdm1feGVuX2V2ZW50ZmRfcmVzZXRgLCBhbmQgYGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmRgLiBUaG9zZSB3aWxsIGJlIG15IHByaW1hcnkgZm9jdXMuCgpOb3csIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGJ1aWxkIGNvbmZpZ3MgYXJlIGNvcnJlY3QuIEkga25vdyBJIG5lZWQgYEtWTV9YRU5gLCBvYnZpb3VzbHksIGJ1dCBJJiMzOTtsbCBhbHNvIGRvdWJsZS1jaGVjayB0aGF0IGBLVk1gIGlzIHByZXNlbnQuIEl04oCZcyBhbHdheXMgZ29vZCBwcmFjdGljZSB0byB2ZXJpZnkgdGhlIGRlcGVuZGVuY2llcy4gSSBoYXZlIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIGBLVk1fWEVOYCBpcyB0aGUgb25seSByZWxldmFudCBjb25maWcuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoYXQgdG9vLCBqdXN0IGluIGNhc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24uKktWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnPTY5PWNvbmZpZyBLVk1fV0VSUk9SXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctNzYtXHQjIHRoZSBrZXJuZWwtd2lkZSBXRVJST1I9eS5cbmFyY2gveDg2L2t2bS9LY29uZmlnOjc3Olx0ZGVwZW5kcyBvbiBLVk1fWDg2IFx1MDAyNlx1MDAyNiAoKEVYUEVSVCBcdTAwMjZcdTAwMjYgIUtBU0FOKSB8fCBXRVJST1IpXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03OC1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz04Mz1jb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTg1LVx0ZGVwZW5kcyBvbiBFWFBFUlRcbmFyY2gveDg2L2t2bS9LY29uZmlnOjg2Olx0ZGVwZW5kcyBvbiBLVk1fWDg2IFx1MDAyNlx1MDAyNiBYODZfNjRcbmFyY2gveDg2L2t2bS9LY29uZmlnLTg3LVx0c2VsZWN0IEtWTV9HRU5FUklDX01FTU9SWV9BVFRSSUJVVEVTXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9OTY9Y29uZmlnIEtWTV9JTlRFTFxuYXJjaC94ODYva3ZtL0tjb25maWctOTctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5ODpcdGRlcGVuZHMgb24gS1ZNIFx1MDAyNlx1MDAyNiBJQTMyX0ZFQVRfQ1RMXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05OS1cdHNlbGVjdCBYODZfRlJFRCBpZiBYODZfNjRcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMDc9Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxuYXJjaC94ODYva3ZtL0tjb25maWctMTA4LSAgICAgICAgYm9vbCBcJiMzNDtDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1wmIzM0O1xuYXJjaC94ODYva3ZtL0tjb25maWc6MTA5OiAgICAgICAgZGVwZW5kcyBvbiBLVk1fSU5URUwgXHUwMDI2XHUwMDI2IEVYUEVSVFxuYXJjaC94ODYva3ZtL0tjb25maWctMTEwLSAgICAgICAgaGVscFxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMj1jb25maWcgWDg2X1NHWF9LVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEyMy1cdGJvb2wgXCYjMzQ7U29mdHdhcmUgR3VhcmQgZVh0ZW5zaW9ucyAoU0dYKSBWaXJ0dWFsaXphdGlvblwmIzM0O1xuYXJjaC94ODYva3ZtL0tjb25maWc6MTI0Olx0ZGVwZW5kcyBvbiBYODZfU0dYIFx1MDAyNlx1MDAyNiBLVk1fSU5URUxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEyNS1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xNDY9Y29uZmlnIEtWTV9BTURcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ4Olx0ZGVwZW5kcyBvbiBLVk0gXHUwMDI2XHUwMDI2IChDUFVfU1VQX0FNRCB8fCBDUFVfU1VQX0hZR09OKVxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ5LVx0aGVscFxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTE1Nj1jb25maWcgS1ZNX0FNRF9TRVZcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTgtXHRkZWZhdWx0IHlcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1OTpcdGRlcGVuZHMgb24gS1ZNX0FNRCBcdTAwMjZcdTAwMjYgWDg2XzY0XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNjA6XHRkZXBlbmRzIG9uIENSWVBUT19ERVZfU1BfUFNQIFx1MDAyNlx1MDAyNiAhKEtWTV9BTUQ9eSBcdTAwMjZcdTAwMjYgQ1JZUFRPX0RFVl9DQ1BfREQ9bSlcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE2MS1cdHNlbGVjdCBBUkNIX0hBU19DQ19QTEFURk9STVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTE3Mj1jb25maWcgS1ZNX0lPQVBJQ1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3NC1cdGRlZmF1bHQgeVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTc1Olx0ZGVwZW5kcyBvbiBLVk1fWDg2XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzYtXHRoZWxwXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTgyPWNvbmZpZyBLVk1fU01NXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTg0LVx0ZGVmYXVsdCB5XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODU6XHRkZXBlbmRzIG9uIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4Ni1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOTM9Y29uZmlnIEtWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXCYjMzQ7XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTU6XHRkZXBlbmRzIG9uIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5Ni1cdGRlZmF1bHQgeVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTIwNz1jb25maWcgS1ZNX1hFTlxuYXJjaC94ODYva3ZtL0tjb25maWctMjA4LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBYZW4gaHlwZXJjYWxsIGludGVyZmFjZVwmIzM0O1xuYXJjaC94ODYva3ZtL0tjb25maWc6MjA5Olx0ZGVwZW5kcyBvbiBLVk1fWDg2XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTAtXHRoZWxwXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MjE2PWNvbmZpZyBLVk1fUFJPVkVfTU1VXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjE4LVx0ZGVwZW5kcyBvbiBERUJVR19LRVJORUxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxOTpcdGRlcGVuZHMgb24gS1ZNX1g4NlxuYXJjaC94ODYva3ZtL0tjb25maWctMjIwLVx0ZGVwZW5kcyBvbiBFWFBFUlRcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0yMzI9Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMy1cdGludCBcJiMzNDtNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XCYjMzQ7XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzQ6XHRkZXBlbmRzIG9uIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzNS1cdHJhbmdlIDEwMjQgNDA5NlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwODozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTU4CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biByZWFzb25pbmc6CgoqKkRlcGVuZGVuY3kgQ2hlY2s6IEtWTV9YRU4gYW5kIEtWTV9YODYqKgoKQWxyaWdodCwgc28gdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGlzIHNldHVwIHN1Z2dlc3RzIGBLVk1fWEVOYCBpcyBidWlsdCBvbiB0b3Agb2YgYEtWTV9YODZgLiBUaGlzIGlzbiYjMzk7dCB1bmV4cGVjdGVkLCBidXQgaXQmIzM5O3MgaW1wb3J0YW50IHRvIHZlcmlmeS4gQmVmb3JlIEkgcHJvY2VlZCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgS1ZNX1g4NmAgaXMgcHJvcGVybHkgY29uZmlndXJlZCBhbmQgZnVuY3Rpb25pbmcgYXMgZXhwZWN0ZWQuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2suIExldCBtZSB0YWtlIGEgbG9vayBhdCB0aGUgc3RhdHVzIG9mIGBLVk1fWDg2YCBmaXJzdC4gVGhpcyBpcyBhIGNyaXRpY2FsIHByZXJlcXVpc2l0ZSwgYW5kIEkgbmVlZCB0byBjb25maXJtIGl0cyBpbnRlZ3JpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk1fWDg2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxLVx0ZGVmX3RyaXN0YXRlIEtWTSBpZiAoS1ZNX0lOVEVMICE9IG4gfHwgS1ZNX0FNRCAhPSBuKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwODozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDg2CgkJCQkJCQlvdXRwdXQ6IDE4MgoJCQkJCQkJdGhvdWdodHM6IDEwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIGluZm9ybWF0aW9uLCB0aGlua2luZyBpdCB0aHJvdWdoIGZyb20gYSB0ZWNobmljYWwgcGVyc3BlY3RpdmUuCgoqKktWTS9YZW4gRXZlbnRmZCBDb25maWd1cmF0aW9uIC0gQSBRdWljayBPdmVydmlldyoqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBLVk0gYW5kIEtWTV9YRU4gY29uZmlndXJhdGlvbnMgYXJlIGhhbmRsZWQuIFNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHRoZSBjb3JlIGVsZW1lbnRzIEkgbmVlZCB0byBmb2N1cyBvbiBhcmUgdGhlc2Ugc3BlY2lmaWMgZnVuY3Rpb25zIHRoYXQgZGVhbCBkaXJlY3RseSB3aXRoIGV2ZW50ZmRzLiBJIG5lZWQgdG8gYmUgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIHR3by4KCkl0JiMzOTtzIGNsZWFyIHRoYXQgdGhlc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zOiBga3ZtX3hlbl9ldmVudGZkX3VwZGF0ZWAsIGBrdm1feGVuX2V2ZW50ZmRfYXNzaWduYCwgYGt2bV94ZW5fZXZlbnRmZF9kZWFzc2lnbmAsIGBrdm1feGVuX2V2ZW50ZmRfcmVzZXRgLCBhbmQgYGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmRgLiBJJiMzOTttIGFscmVhZHkgdmlzdWFsaXppbmcgaG93IHRoZXNlIGZ1bmN0aW9ucyBtYXAgb3V0IHRoZSBsaWZlY3ljbGUgb2YgdGhlIGV2ZW50ZmRzIGluIHRoZSBzeXN0ZW0uIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gc3BlY2lmeSB0aGUgbmF0dXJlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGluIHRoZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwODozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O0tWTV9YRU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1feGVuX2V2ZW50ZmRfdXBkYXRlJiMzNDssCiAgICAmIzM0O2t2bV94ZW5fZXZlbnRmZF9hc3NpZ24mIzM0OywKICAgICYjMzQ7a3ZtX3hlbl9ldmVudGZkX2RlYXNzaWduJiMzNDssCiAgICAmIzM0O2t2bV94ZW5fZXZlbnRmZF9yZXNldCYjMzQ7LAogICAgJiMzNDtrdm1feGVuX2hjYWxsX2V2dGNobl9zZW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIHRoZSBJRFIgZGF0YSBzdHJ1Y3R1cmUgd2l0aCBYQXJyYXkgZm9yIG1hbmFnaW5nIFhlbiBldmVudCBjaGFubmVsIHBvcnRzIGluIEtWTS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gWGVuIGVtdWxhdGlvbiBjb2RlLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMgYW5kIGh5cGVyY2FsbHMuIEZ1enppbmcgaXMgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHRoZSBuZXcgWEFycmF5IGltcGxlbWVudGF0aW9uIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGJ1Z3MgbGlrZSB1c2UtYWZ0ZXItZnJlZSBvciBtZW1vcnkgbGVha3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fWEVOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3hlbl9ldmVudGZkX3VwZGF0ZSYjMzQ7LAogICAgJiMzNDtrdm1feGVuX2V2ZW50ZmRfYXNzaWduJiMzNDssCiAgICAmIzM0O2t2bV94ZW5fZXZlbnRmZF9kZWFzc2lnbiYjMzQ7LAogICAgJiMzNDtrdm1feGVuX2V2ZW50ZmRfcmVzZXQmIzM0OywKICAgICYjMzQ7a3ZtX3hlbl9oY2FsbF9ldnRjaG5fc2VuZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyB0aGUgSURSIGRhdGEgc3RydWN0dXJlIHdpdGggWEFycmF5IGZvciBtYW5hZ2luZyBYZW4gZXZlbnQgY2hhbm5lbCBwb3J0cyBpbiBLVk0uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgS1ZNIFhlbiBlbXVsYXRpb24gY29kZSwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIGFuZCBoeXBlcmNhbGxzLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgbmV3IFhBcnJheSBpbXBsZW1lbnRhdGlvbiB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBidWdzIGxpa2UgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGxlYWtzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDZUMDg6MzM6MjMuODkzMzIyMjY1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc2NzU2MDE0MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJLVk1fWEVOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3hlbl9ldmVudGZkX3VwZGF0ZVwiLFxuICAgIFwia3ZtX3hlbl9ldmVudGZkX2Fzc2lnblwiLFxuICAgIFwia3ZtX3hlbl9ldmVudGZkX2RlYXNzaWduXCIsXG4gICAgXCJrdm1feGVuX2V2ZW50ZmRfcmVzZXRcIixcbiAgICBcImt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyB0aGUgSURSIGRhdGEgc3RydWN0dXJlIHdpdGggWEFycmF5IGZvciBtYW5hZ2luZyBYZW4gZXZlbnQgY2hhbm5lbCBwb3J0cyBpbiBLVk0uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgS1ZNIFhlbiBlbXVsYXRpb24gY29kZSwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIGFuZCBoeXBlcmNhbGxzLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgbmV3IFhBcnJheSBpbXBsZW1lbnRhdGlvbiB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBidWdzIGxpa2UgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGxlYWtzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODozMzoyMy44OTMzMjg1MzVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzI1NTg4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDY4YWQwNGMyMDY0YWJkNjk5ZmI2NWYyODNiNjUyYmMzOTU1ZDdhNjVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgNiAwODozMzoyMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxcbmluZGV4IGI1MTcyNTdhNjMxNTMyLi4wNjQwODM3NTVmYWIwZCAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxcbkBAIC0xNiw2ICsxNiw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pcnFfd29yay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaXJxLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC93b3JrcXVldWUuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3hhcnJheS5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2t2bS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva3ZtX3BhcmEuaFxcdTAwM2VcXG5AQCAtMTI4Niw3ICsxMjg3LDcgQEAgc3RydWN0IGt2bV94ZW4ge1xcbiBcXHRib29sIHJ1bnN0YXRlX3VwZGF0ZV9mbGFnO1xcbiBcXHR1OCB1cGNhbGxfdmVjdG9yO1xcbiBcXHRzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSBzaGluZm9fY2FjaGU7XFxuLVxcdHN0cnVjdCBpZHIgZXZ0Y2huX3BvcnRzO1xcbitcXHRzdHJ1Y3QgeGFycmF5IGV2dGNobl9wb3J0cztcXG4gXFx0dW5zaWduZWQgbG9uZyBwb2xsX21hc2tbQklUU19UT19MT05HUyhLVk1fTUFYX1ZDUFVTKV07XFxuIFxcbiBcXHRzdHJ1Y3Qga3ZtX3hlbl9odm1fY29uZmlnIGh2bV9jb25maWc7XFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ZW4uYyBiL2FyY2gveDg2L2t2bS94ZW4uY1xcbmluZGV4IDY5NGIzMWMxZmNjOWFmLi43NTQxOTFlM2JlZjdhYSAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0veGVuLmNcXG4rKysgYi9hcmNoL3g4Ni9rdm0veGVuLmNcXG5AQCAtMjA3Miw3ICsyMDcyLDcgQEAgc3RhdGljIGludCBrdm1feGVuX2V2ZW50ZmRfdXBkYXRlKHN0cnVjdCBrdm0gKmt2bSxcXG4gXFxuIFxcdC8qIFByb3RlY3Qgd3JpdGVzIHRvIGV2dGNobmZkIGFzIHdlbGwgYXMgdGhlIGlkciBsb29rdXAuICAqL1xcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gueGVuLnhlbl9sb2NrKTtcXG4tXFx0ZXZ0Y2huZmQgPSBpZHJfZmluZChcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIHBvcnQpO1xcbitcXHRldnRjaG5mZCA9IHhhX2xvYWQoXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBwb3J0KTtcXG4gXFxuIFxcdHJldCA9IC1FTk9FTlQ7XFxuIFxcdGlmICghZXZ0Y2huZmQpXFxuQEAgLTIxNjYsMTMgKzIxNjYsMTMgQEAgc3RhdGljIGludCBrdm1feGVuX2V2ZW50ZmRfYXNzaWduKHN0cnVjdCBrdm0gKmt2bSxcXG4gXFx0fVxcbiBcXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLnhlbi54ZW5fbG9jayk7XFxuLVxcdHJldCA9IGlkcl9hbGxvYyhcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIGV2dGNobmZkLCBwb3J0LCBwb3J0ICsgMSxcXG4rXFx0cmV0ID0geGFfaW5zZXJ0KFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgcG9ydCwgZXZ0Y2huZmQsXFxuIFxcdFxcdFxcdEdGUF9LRVJORUwpO1xcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC54ZW4ueGVuX2xvY2spO1xcbi1cXHRpZiAocmV0IFxcdTAwM2U9IDApXFxuK1xcdGlmICghcmV0KVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuLVxcdGlmIChyZXQgPT0gLUVOT1NQQylcXG4rXFx0aWYgKHJldCA9PSAtRUJVU1kpXFxuIFxcdFxcdHJldCA9IC1FRVhJU1Q7XFxuIG91dDpcXG4gXFx0aWYgKGV2ZW50ZmQpXFxuQEAgLTIxODcsNyArMjE4Nyw3IEBAIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX2RlYXNzaWduKHN0cnVjdCBrdm0gKmt2bSwgdTMyIHBvcnQpXFxuIFxcdHN0cnVjdCBldnRjaG5mZCAqZXZ0Y2huZmQ7XFxuIFxcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gueGVuLnhlbl9sb2NrKTtcXG4tXFx0ZXZ0Y2huZmQgPSBpZHJfcmVtb3ZlKFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgcG9ydCk7XFxuK1xcdGV2dGNobmZkID0geGFfZXJhc2UoXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBwb3J0KTtcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gueGVuLnhlbl9sb2NrKTtcXG4gXFxuIFxcdGlmICghZXZ0Y2huZmQpXFxuQEAgLTIyMDMsNyArMjIwMyw3IEBAIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX2RlYXNzaWduKHN0cnVjdCBrdm0gKmt2bSwgdTMyIHBvcnQpXFxuIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3Jlc2V0KHN0cnVjdCBrdm0gKmt2bSlcXG4ge1xcbiBcXHRzdHJ1Y3QgZXZ0Y2huZmQgKmV2dGNobmZkLCAqKmFsbF9ldnRjaG5mZHM7XFxuLVxcdGludCBpO1xcbitcXHR1bnNpZ25lZCBsb25nIGk7XFxuIFxcdGludCBuID0gMDtcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC54ZW4ueGVuX2xvY2spO1xcbkBAIC0yMjEzLDcgKzIyMTMsNyBAQCBzdGF0aWMgaW50IGt2bV94ZW5fZXZlbnRmZF9yZXNldChzdHJ1Y3Qga3ZtICprdm0pXFxuIFxcdCAqIGNyaXRpY2FsIHNlY3Rpb24sIGZpcnN0IGNvbGxlY3QgYWxsIHRoZSBldnRjaG5mZCBvYmplY3RzXFxuIFxcdCAqIGluIGFuIGFycmF5IGFzIHRoZXkgYXJlIHJlbW92ZWQgZnJvbSBldnRjaG5fcG9ydHMuXFxuIFxcdCAqL1xcbi1cXHRpZHJfZm9yX2VhY2hfZW50cnkoXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBldnRjaG5mZCwgaSlcXG4rXFx0eGFfZm9yX2VhY2goXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBpLCBldnRjaG5mZClcXG4gXFx0XFx0bisrO1xcbiBcXG4gXFx0YWxsX2V2dGNobmZkcyA9IGttYWxsb2Nfb2JqcyhzdHJ1Y3QgZXZ0Y2huZmQgKiwgbik7XFxuQEAgLTIyMjMsOSArMjIyMyw5IEBAIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3Jlc2V0KHN0cnVjdCBrdm0gKmt2bSlcXG4gXFx0fVxcbiBcXG4gXFx0biA9IDA7XFxuLVxcdGlkcl9mb3JfZWFjaF9lbnRyeShcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIGV2dGNobmZkLCBpKSB7XFxuK1xcdHhhX2Zvcl9lYWNoKFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgaSwgZXZ0Y2huZmQpIHtcXG4gXFx0XFx0YWxsX2V2dGNobmZkc1tuKytdID0gZXZ0Y2huZmQ7XFxuLVxcdFxcdGlkcl9yZW1vdmUoXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBldnRjaG5mZC1cXHUwMDNlc2VuZF9wb3J0KTtcXG4rXFx0XFx0eGFfZXJhc2UoXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBldnRjaG5mZC1cXHUwMDNlc2VuZF9wb3J0KTtcXG4gXFx0fVxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC54ZW4ueGVuX2xvY2spO1xcbiBcXG5AQCAtMjI3NiwxMiArMjI3NiwxMCBAQCBzdGF0aWMgYm9vbCBrdm1feGVuX2hjYWxsX2V2dGNobl9zZW5kKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHBhcmFtLCB1NjQgKnIpXFxuIFxcdH1cXG4gXFxuIFxcdC8qXFxuLVxcdCAqIGV2dGNobmZkIGlzIHByb3RlY3RlZCBieSBrdm0tXFx1MDAzZXNyY3U7IHRoZSBpZHIgbG9va3VwIGluc3RlYWRcXG4tXFx0ICogaXMgcHJvdGVjdGVkIGJ5IFJDVS5cXG4rXFx0ICogZXZ0Y2huZmQgaXMgcHJvdGVjdGVkIGJ5IGt2bS1cXHUwMDNlc3JjdTsgdGhlIHhhX2xvYWQgaXMgUkNVLXNhZmVcXG4rXFx0ICogaW50ZXJuYWxseSwgbm8gZXhwbGljaXQgcmN1X3JlYWRfbG9jaygpIG5lZWRlZC5cXG4gXFx0ICovXFxuLVxcdHJjdV9yZWFkX2xvY2soKTtcXG4tXFx0ZXZ0Y2huZmQgPSBpZHJfZmluZChcXHUwMDI2dmNwdS1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIHNlbmQucG9ydCk7XFxuLVxcdHJjdV9yZWFkX3VubG9jaygpO1xcbitcXHRldnRjaG5mZCA9IHhhX2xvYWQoXFx1MDAyNnZjcHUtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBzZW5kLnBvcnQpO1xcbiBcXHRpZiAoIWV2dGNobmZkKVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbkBAIC0yMzI4LDIzICsyMzI2LDIzIEBAIHZvaWQga3ZtX3hlbl9kZXN0cm95X3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiB2b2lkIGt2bV94ZW5faW5pdF92bShzdHJ1Y3Qga3ZtICprdm0pXFxuIHtcXG4gXFx0bXV0ZXhfaW5pdChcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLnhlbi54ZW5fbG9jayk7XFxuLVxcdGlkcl9pbml0KFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cyk7XFxuK1xcdHhhX2luaXQoXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzKTtcXG4gXFx0a3ZtX2dwY19pbml0KFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gueGVuLnNoaW5mb19jYWNoZSwga3ZtKTtcXG4gfVxcbiBcXG4gdm9pZCBrdm1feGVuX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKVxcbiB7XFxuIFxcdHN0cnVjdCBldnRjaG5mZCAqZXZ0Y2huZmQ7XFxuLVxcdGludCBpO1xcbitcXHR1bnNpZ25lZCBsb25nIGk7XFxuIFxcbiBcXHRrdm1fZ3BjX2RlYWN0aXZhdGUoXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC54ZW4uc2hpbmZvX2NhY2hlKTtcXG4gXFxuLVxcdGlkcl9mb3JfZWFjaF9lbnRyeShcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIGV2dGNobmZkLCBpKSB7XFxuK1xcdHhhX2Zvcl9lYWNoKFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgaSwgZXZ0Y2huZmQpIHtcXG4gXFx0XFx0aWYgKCFldnRjaG5mZC1cXHUwMDNlZGVsaXZlci5wb3J0LnBvcnQpXFxuIFxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dChldnRjaG5mZC1cXHUwMDNlZGVsaXZlci5ldmVudGZkLmN0eCk7XFxuIFxcdFxcdGtmcmVlKGV2dGNobmZkKTtcXG4gXFx0fVxcbi1cXHRpZHJfZGVzdHJveShcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMpO1xcbitcXHR4YV9kZXN0cm95KFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cyk7XFxuIFxcbiBcXHRpZiAoa3ZtLVxcdTAwM2VhcmNoLnhlbi5odm1fY29uZmlnLm1zcilcXG4gXFx0XFx0c3RhdGljX2JyYW5jaF9zbG93X2RlY19kZWZlcnJlZChcXHUwMDI2a3ZtX3hlbl9lbmFibGVkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDg6MzM6MjQuMzI3NDY5ODkzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzI0MTQ0MjQyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIktWTV9YRU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1feGVuX2V2ZW50ZmRfdXBkYXRlXCIsXG4gICAgXCJrdm1feGVuX2V2ZW50ZmRfYXNzaWduXCIsXG4gICAgXCJrdm1feGVuX2V2ZW50ZmRfZGVhc3NpZ25cIixcbiAgICBcImt2bV94ZW5fZXZlbnRmZF9yZXNldFwiLFxuICAgIFwia3ZtX3hlbl9oY2FsbF9ldnRjaG5fc2VuZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIHRoZSBJRFIgZGF0YSBzdHJ1Y3R1cmUgd2l0aCBYQXJyYXkgZm9yIG1hbmFnaW5nIFhlbiBldmVudCBjaGFubmVsIHBvcnRzIGluIEtWTS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gWGVuIGVtdWxhdGlvbiBjb2RlLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMgYW5kIGh5cGVyY2FsbHMuIEZ1enppbmcgaXMgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHRoZSBuZXcgWEFycmF5IGltcGxlbWVudGF0aW9uIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGJ1Z3MgbGlrZSB1c2UtYWZ0ZXItZnJlZSBvciBtZW1vcnkgbGVha3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNjhhZDA0YzIwNjRhYmQ2OTlmYjY1ZjI4M2I2NTJiYzM5NTVkN2E2NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDYgMDg6MzM6MjIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuaW5kZXggYjUxNzI1N2E2MzE1MzIuLjA2NDA4Mzc1NWZhYjBkIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuQEAgLTE2LDYgKzE2LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pcnFfd29yay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaXJxLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC93b3JrcXVldWUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3hhcnJheS5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva3ZtLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rdm1fcGFyYS5oXHUwMDNlXG5AQCAtMTI4Niw3ICsxMjg3LDcgQEAgc3RydWN0IGt2bV94ZW4ge1xuIFx0Ym9vbCBydW5zdGF0ZV91cGRhdGVfZmxhZztcbiBcdHU4IHVwY2FsbF92ZWN0b3I7XG4gXHRzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSBzaGluZm9fY2FjaGU7XG4tXHRzdHJ1Y3QgaWRyIGV2dGNobl9wb3J0cztcbitcdHN0cnVjdCB4YXJyYXkgZXZ0Y2huX3BvcnRzO1xuIFx0dW5zaWduZWQgbG9uZyBwb2xsX21hc2tbQklUU19UT19MT05HUyhLVk1fTUFYX1ZDUFVTKV07XG4gXG4gXHRzdHJ1Y3Qga3ZtX3hlbl9odm1fY29uZmlnIGh2bV9jb25maWc7XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3hlbi5jIGIvYXJjaC94ODYva3ZtL3hlbi5jXG5pbmRleCA2OTRiMzFjMWZjYzlhZi4uNzU0MTkxZTNiZWY3YWEgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0veGVuLmNcbisrKyBiL2FyY2gveDg2L2t2bS94ZW4uY1xuQEAgLTIwNzIsNyArMjA3Miw3IEBAIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3VwZGF0ZShzdHJ1Y3Qga3ZtICprdm0sXG4gXG4gXHQvKiBQcm90ZWN0IHdyaXRlcyB0byBldnRjaG5mZCBhcyB3ZWxsIGFzIHRoZSBpZHIgbG9va3VwLiAgKi9cbiBcdG11dGV4X2xvY2soXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLnhlbl9sb2NrKTtcbi1cdGV2dGNobmZkID0gaWRyX2ZpbmQoXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgcG9ydCk7XG4rXHRldnRjaG5mZCA9IHhhX2xvYWQoXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgcG9ydCk7XG4gXG4gXHRyZXQgPSAtRU5PRU5UO1xuIFx0aWYgKCFldnRjaG5mZClcbkBAIC0yMTY2LDEzICsyMTY2LDEzIEBAIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX2Fzc2lnbihzdHJ1Y3Qga3ZtICprdm0sXG4gXHR9XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi54ZW5fbG9jayk7XG4tXHRyZXQgPSBpZHJfYWxsb2MoXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgZXZ0Y2huZmQsIHBvcnQsIHBvcnQgKyAxLFxuK1x0cmV0ID0geGFfaW5zZXJ0KFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIHBvcnQsIGV2dGNobmZkLFxuIFx0XHRcdEdGUF9LRVJORUwpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi54ZW5fbG9jayk7XG4tXHRpZiAocmV0IFx1MDAzZT0gMClcbitcdGlmICghcmV0KVxuIFx0XHRyZXR1cm4gMDtcbiBcbi1cdGlmIChyZXQgPT0gLUVOT1NQQylcbitcdGlmIChyZXQgPT0gLUVCVVNZKVxuIFx0XHRyZXQgPSAtRUVYSVNUO1xuIG91dDpcbiBcdGlmIChldmVudGZkKVxuQEAgLTIxODcsNyArMjE4Nyw3IEBAIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX2RlYXNzaWduKHN0cnVjdCBrdm0gKmt2bSwgdTMyIHBvcnQpXG4gXHRzdHJ1Y3QgZXZ0Y2huZmQgKmV2dGNobmZkO1xuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4ueGVuX2xvY2spO1xuLVx0ZXZ0Y2huZmQgPSBpZHJfcmVtb3ZlKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIHBvcnQpO1xuK1x0ZXZ0Y2huZmQgPSB4YV9lcmFzZShcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBwb3J0KTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4ueGVuX2xvY2spO1xuIFxuIFx0aWYgKCFldnRjaG5mZClcbkBAIC0yMjAzLDcgKzIyMDMsNyBAQCBzdGF0aWMgaW50IGt2bV94ZW5fZXZlbnRmZF9kZWFzc2lnbihzdHJ1Y3Qga3ZtICprdm0sIHUzMiBwb3J0KVxuIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3Jlc2V0KHN0cnVjdCBrdm0gKmt2bSlcbiB7XG4gXHRzdHJ1Y3QgZXZ0Y2huZmQgKmV2dGNobmZkLCAqKmFsbF9ldnRjaG5mZHM7XG4tXHRpbnQgaTtcbitcdHVuc2lnbmVkIGxvbmcgaTtcbiBcdGludCBuID0gMDtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLnhlbl9sb2NrKTtcbkBAIC0yMjEzLDcgKzIyMTMsNyBAQCBzdGF0aWMgaW50IGt2bV94ZW5fZXZlbnRmZF9yZXNldChzdHJ1Y3Qga3ZtICprdm0pXG4gXHQgKiBjcml0aWNhbCBzZWN0aW9uLCBmaXJzdCBjb2xsZWN0IGFsbCB0aGUgZXZ0Y2huZmQgb2JqZWN0c1xuIFx0ICogaW4gYW4gYXJyYXkgYXMgdGhleSBhcmUgcmVtb3ZlZCBmcm9tIGV2dGNobl9wb3J0cy5cbiBcdCAqL1xuLVx0aWRyX2Zvcl9lYWNoX2VudHJ5KFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIGV2dGNobmZkLCBpKVxuK1x0eGFfZm9yX2VhY2goXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgaSwgZXZ0Y2huZmQpXG4gXHRcdG4rKztcbiBcbiBcdGFsbF9ldnRjaG5mZHMgPSBrbWFsbG9jX29ianMoc3RydWN0IGV2dGNobmZkICosIG4pO1xuQEAgLTIyMjMsOSArMjIyMyw5IEBAIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3Jlc2V0KHN0cnVjdCBrdm0gKmt2bSlcbiBcdH1cbiBcbiBcdG4gPSAwO1xuLVx0aWRyX2Zvcl9lYWNoX2VudHJ5KFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIGV2dGNobmZkLCBpKSB7XG4rXHR4YV9mb3JfZWFjaChcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBpLCBldnRjaG5mZCkge1xuIFx0XHRhbGxfZXZ0Y2huZmRzW24rK10gPSBldnRjaG5mZDtcbi1cdFx0aWRyX3JlbW92ZShcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBldnRjaG5mZC1cdTAwM2VzZW5kX3BvcnQpO1xuK1x0XHR4YV9lcmFzZShcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBldnRjaG5mZC1cdTAwM2VzZW5kX3BvcnQpO1xuIFx0fVxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi54ZW5fbG9jayk7XG4gXG5AQCAtMjI3NiwxMiArMjI3NiwxMCBAQCBzdGF0aWMgYm9vbCBrdm1feGVuX2hjYWxsX2V2dGNobl9zZW5kKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHBhcmFtLCB1NjQgKnIpXG4gXHR9XG4gXG4gXHQvKlxuLVx0ICogZXZ0Y2huZmQgaXMgcHJvdGVjdGVkIGJ5IGt2bS1cdTAwM2VzcmN1OyB0aGUgaWRyIGxvb2t1cCBpbnN0ZWFkXG4tXHQgKiBpcyBwcm90ZWN0ZWQgYnkgUkNVLlxuK1x0ICogZXZ0Y2huZmQgaXMgcHJvdGVjdGVkIGJ5IGt2bS1cdTAwM2VzcmN1OyB0aGUgeGFfbG9hZCBpcyBSQ1Utc2FmZVxuK1x0ICogaW50ZXJuYWxseSwgbm8gZXhwbGljaXQgcmN1X3JlYWRfbG9jaygpIG5lZWRlZC5cbiBcdCAqL1xuLVx0cmN1X3JlYWRfbG9jaygpO1xuLVx0ZXZ0Y2huZmQgPSBpZHJfZmluZChcdTAwMjZ2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIHNlbmQucG9ydCk7XG4tXHRyY3VfcmVhZF91bmxvY2soKTtcbitcdGV2dGNobmZkID0geGFfbG9hZChcdTAwMjZ2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIHNlbmQucG9ydCk7XG4gXHRpZiAoIWV2dGNobmZkKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG5AQCAtMjMyOCwyMyArMjMyNiwyMyBAQCB2b2lkIGt2bV94ZW5fZGVzdHJveV92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB2b2lkIGt2bV94ZW5faW5pdF92bShzdHJ1Y3Qga3ZtICprdm0pXG4ge1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4ueGVuX2xvY2spO1xuLVx0aWRyX2luaXQoXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cyk7XG4rXHR4YV9pbml0KFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMpO1xuIFx0a3ZtX2dwY19pbml0KFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi5zaGluZm9fY2FjaGUsIGt2bSk7XG4gfVxuIFxuIHZvaWQga3ZtX3hlbl9kZXN0cm95X3ZtKHN0cnVjdCBrdm0gKmt2bSlcbiB7XG4gXHRzdHJ1Y3QgZXZ0Y2huZmQgKmV2dGNobmZkO1xuLVx0aW50IGk7XG4rXHR1bnNpZ25lZCBsb25nIGk7XG4gXG4gXHRrdm1fZ3BjX2RlYWN0aXZhdGUoXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLnNoaW5mb19jYWNoZSk7XG4gXG4tXHRpZHJfZm9yX2VhY2hfZW50cnkoXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgZXZ0Y2huZmQsIGkpIHtcbitcdHhhX2Zvcl9lYWNoKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIGksIGV2dGNobmZkKSB7XG4gXHRcdGlmICghZXZ0Y2huZmQtXHUwMDNlZGVsaXZlci5wb3J0LnBvcnQpXG4gXHRcdFx0ZXZlbnRmZF9jdHhfcHV0KGV2dGNobmZkLVx1MDAzZWRlbGl2ZXIuZXZlbnRmZC5jdHgpO1xuIFx0XHRrZnJlZShldnRjaG5mZCk7XG4gXHR9XG4tXHRpZHJfZGVzdHJveShcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzKTtcbitcdHhhX2Rlc3Ryb3koXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cyk7XG4gXG4gXHRpZiAoa3ZtLVx1MDAzZWFyY2gueGVuLmh2bV9jb25maWcubXNyKVxuIFx0XHRzdGF0aWNfYnJhbmNoX3Nsb3dfZGVjX2RlZmVycmVkKFx1MDAyNmt2bV94ZW5fZW5hYmxlZCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODozMzoyNC4zMjc0NzE3MjNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjU1OTQzMzUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgeGFycmF5LUJhc2VkIEV2dGNobiBQb3J0IFJlcGxhY2VtZW50IGluIEtWTS9YZW4qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCBsb29rcyBsaWtlIHdlJ3JlIHN3YXBwaW5nIG91dCB0aGUgYGlkcmAgZGF0YSBzdHJ1Y3R1cmUgZm9yIGB4YXJyYXlgIGluIHRoZSBLVk0vWGVuIGVtdWxhdGlvbiBjb2RlLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBhcmNoL3g4Ni9rdm0veGVuLmNgLiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlLCBhZmZlY3RpbmcgaG93IHdlIG1hbmFnZSBldmVudCBjaGFubmVsIHBvcnRzLiBUaGUgZnVuY3Rpb25zIHRoYXQgYXJlIGRpcmVjdGx5IGltcGFjdGVkIGFyZSBga3ZtX3hlbl9ldmVudGZkX3VwZGF0ZWAsIGBrdm1feGVuX2V2ZW50ZmRfYXNzaWduYCwgYGt2bV94ZW5fZXZlbnRmZF9kZWFzc2lnbmAsIGBrdm1feGVuX2V2ZW50ZmRfcmVzZXRgLCBga3ZtX3hlbl9oY2FsbF9ldnRjaG5fc2VuZGAsIGBrdm1feGVuX2luaXRfdm1gLCBhbmQgYGt2bV94ZW5fZGVzdHJveV92bWAuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byB2ZXJpZnkgdGhhdCB0aGlzIGNvZGUgcGF0aCBpcyBhY3R1YWxseSBoaXQgdW5kZXIgcmVhbGlzdGljIGNvbmRpdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9ucyBuZWNlc3NhcnkgdG8gZ2V0IHRoaXMgYWN0aXZlLiAgSSdsbCBzdGFydCBieSBjaGVja2luZyBpZiB0aGlzIGlzIGVuYWJsZWQgdmlhIGNvbmZpZyBvcHRpb25zLiBTbyBJIGFtIGdvaW5nIHRvIHNlYXJjaCBmb3IgY2FsbHMgdG8gYGt2bV94ZW5fZXZlbnRmZF9hc3NpZ25gIG9yIGBrdm1feGVuX2V2ZW50ZmRfdXBkYXRlYCBpbiB0aGUgY29kZWJhc2UuIFRoYXQgd2lsbCBnaXZlIG1lIHNvbWUgaW5zaWdodCBpbnRvIHdoZXJlIHRoaXMgY29kZSBpcyBjYWxsZWQgZnJvbSBhbmQgd2hhdCB0cmlnZ2VycyBpdHMgZXhlY3V0aW9uLiAgVGhpcyBpcyBhIGNyaXRpY2FsIGZpcnN0IHN0ZXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgYmVmb3JlIEkgY2FuIGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBzd2l0Y2ggdG8gYHhhcnJheWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MDQsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODozMzoyOS41ODM0MTY4MzZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAxNDQ1NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3hlbl9ldmVudGZkX2Fzc2lnblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS94ZW4uYz0yMDY2PXN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3VwZGF0ZShzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjExMi0gKi9cXG5hcmNoL3g4Ni9rdm0veGVuLmM6MjExMzpzdGF0aWMgaW50IGt2bV94ZW5fZXZlbnRmZF9hc3NpZ24oc3RydWN0IGt2bSAqa3ZtLFxcbmFyY2gveDg2L2t2bS94ZW4uYy0yMTE0LVxcdFxcdFxcdFxcdCAgc3RydWN0IGt2bV94ZW5faHZtX2F0dHIgKmRhdGEpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmM9MjI0NT1zdGF0aWMgaW50IGt2bV94ZW5fc2V0YXR0cl9ldnRjaG4oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3hlbl9odm1fYXR0ciAqZGF0YSlcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYy0yMjYxLVxcbmFyY2gveDg2L2t2bS94ZW4uYzoyMjYyOlxcdHJldHVybiBrdm1feGVuX2V2ZW50ZmRfYXNzaWduKGt2bSwgZGF0YSk7XFxuYXJjaC94ODYva3ZtL3hlbi5jLTIyNjMtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODozMzoyOS42NDM1NzE1NDJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzEwODI5OTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdC5cblxuKipBbmFseXppbmcgdGhlIEZ1bmN0aW9uIENhbGwgUGF0aCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSXQgc2VlbXMgd2UncmUgZGVhbGluZyB3aXRoIGEgZnVuY3Rpb24gbmFtZWQgYGt2bV94ZW5fc2V0YXR0cl9ldnRjaG5gLiBUaGUga2V5IGhlcmUgaXMgdGhhdCBcImV2dGNoblwiIHN0cm9uZ2x5IHN1Z2dlc3RzIHdlJ3JlIHdvcmtpbmcgd2l0aGluIHRoZSBjb250ZXh0IG9mIFhlbiBldmVudCBjaGFubmVscywgd2hpY2ggbWVhbnMgaXQncyBsaWtlbHkgZGVhbGluZyB3aXRoIGNvbW11bmljYXRpb24gb3IgaW50ZXJydXB0cyB3aXRoaW4gYSBYZW4gdmlydHVhbCBtYWNoaW5lIGVudmlyb25tZW50LiBOb3csIHRoZSBoaW50IHRoYXQgdGhpcyBtaWdodCBiZSBjb25uZWN0ZWQgdG8gYW4gYGlvY3RsYCBjYWxsIGlzIGNydWNpYWwuIElvY3RscyBhcmUgdGhlIGNsYXNzaWMgbWVjaGFuaXNtIGZvciB1c2VyLXNwYWNlIHByb2dyYW1zIHRvIGlzc3VlIGRldmljZS1zcGVjaWZpYyBjb21tYW5kcyB0byB0aGUga2VybmVsLiBTbywgdGhlIGxpa2VseSBzY2VuYXJpbyBpcyB0aGF0IGEgdXNlci1zcGFjZSBwcm9ncmFtIGlzIGlzc3VpbmcgYSBjb21tYW5kIHRocm91Z2ggYW4gYGlvY3RsYCwgYW5kIHRoaXMsIGluIHR1cm4sIGlzIGNhbGxpbmcgYGt2bV94ZW5fc2V0YXR0cl9ldnRjaG5gIGF0IHNvbWUgcG9pbnQgaW4gdGhlIGNoYWluLiBJIG5lZWQgdG8gdHJhY2UgdGhlIHBhdGggYW5kIHZlcmlmeSB0aGlzIGFzc3VtcHRpb24uIFdlIHNob3VsZCBiZSBhYmxlIHRvIGxvb2sgYXQgdGhlIGtlcm5lbCBjb2RlIGZvciB0aGUgYGt2bV94ZW5fc2V0YXR0cl9ldnRjaG5gIGZ1bmN0aW9uIHRvIHVuZGVyc3RhbmQgbW9yZSBhYm91dCBpdHMgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1NDYsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODozMzozMi45NTQ0MDQzMThaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY3NTUyMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3hlbl9zZXRhdHRyX2V2dGNoblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS94ZW4uYz0zMj1zdGF0aWMgaW50IGt2bV94ZW5fc2V0X2V2dGNobihzdHJ1Y3Qga3ZtX3hlbl9ldnRjaG4gKnhlLCBzdHJ1Y3Qga3ZtICprdm0pO1xcbmFyY2gveDg2L2t2bS94ZW4uYzozMzpzdGF0aWMgaW50IGt2bV94ZW5fc2V0YXR0cl9ldnRjaG4oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3hlbl9odm1fYXR0ciAqZGF0YSk7XFxuYXJjaC94ODYva3ZtL3hlbi5jLTM0LXN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgcGFyYW0sIHU2NCAqcik7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmM9NzQ2PWludCBrdm1feGVuX2h2bV9zZXRfYXR0cihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1feGVuX2h2bV9hdHRyICpkYXRhKVxcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jLTgyMi1cXHRjYXNlIEtWTV9YRU5fQVRUUl9UWVBFX0VWVENITjpcXG5hcmNoL3g4Ni9rdm0veGVuLmM6ODIzOlxcdFxcdHIgPSBrdm1feGVuX3NldGF0dHJfZXZ0Y2huKGt2bSwgZGF0YSk7XFxuYXJjaC94ODYva3ZtL3hlbi5jLTgyNC1cXHRcXHRicmVhaztcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYz0yMjAzPXN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3Jlc2V0KHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYy0yMjQ0LVxcbmFyY2gveDg2L2t2bS94ZW4uYzoyMjQ1OnN0YXRpYyBpbnQga3ZtX3hlbl9zZXRhdHRyX2V2dGNobihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1feGVuX2h2bV9hdHRyICpkYXRhKVxcbmFyY2gveDg2L2t2bS94ZW4uYy0yMjQ2LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDg6MzM6MzMuMDExMTY1Njc0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQxNTMwNTM1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIEtWTS1YZW4gSFZNIEF0dHJpYnV0ZSBTZXR0aW5nKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBrdm1feGVuX2h2bV9zZXRfYXR0cmAgaXMgYmVpbmcgaW52b2tlZC4gVGhlIGNvbnRleHQgc3VnZ2VzdHMgaXQncyBiZWluZyBjYWxsZWQsIG9yIGNvdWxkIGJlIGNhbGxlZCwgZnJvbSBga3ZtX2FyY2hfdm1faW9jdGxgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBsaWtlbHkgd2l0aGluIHRoZSBLVk0gYXJjaGl0ZWN0dXJlLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBjYWxsLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgY29yZSB4ODYgS1ZNIGNvZGUsIHNpbmNlIHdlJ3JlIGRlYWxpbmcgd2l0aCB4ODYgdmlydHVhbGl6YXRpb24gYW5kIHNvbWV0aGluZyBYZW4tcmVsYXRlZC4gU3BlY2lmaWNhbGx5LCB0aGUgZmlsZSBJJ20gZ29pbmcgdG8gbG9vayBhdCBpcyBgYXJjaC94ODYva3ZtL3g4Ni5jYC4gVGhhdCdzIHdoZXJlIEkgd291bGQgZXhwZWN0IHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb3IgcmVmZXJlbmNlIHRvIGBLVk1fWEVOX0hWTV9TRVRfQVRUUmAsIGFuZCB0aHVzIHRoZSBjb250ZXh0IEkgYW0gbG9va2luZyBmb3IuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBkaWcgdXAgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNzUsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODozMzozNi40MjY0NzMxOTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkzODI1NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiS1ZNX1hFTl9IVk1fU0VUX0FUVFJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0veDg2LmM9NDM1ND1pbnQga3ZtX2FyY2hfdm1faW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNDYwMy1cXHR9XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjQ2MDQ6XFx0Y2FzZSBLVk1fWEVOX0hWTV9TRVRfQVRUUjoge1xcbmFyY2gveDg2L2t2bS94ODYuYy00NjA1LVxcdFxcdHN0cnVjdCBrdm1feGVuX2h2bV9hdHRyIHhoYTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDg6MzM6MzYuNDg1ODYwNjc4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM1NjUxNzE1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLVk0gWGVuIEVtdWxhdGlvbiBDb25maWd1cmF0aW9uIC0gSW5pdGlhbCBUaG91Z2h0cyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBwb2ludGVkIHRvd2FyZHMgYEtWTV9YRU5fSFZNX1NFVF9BVFRSYCwgd2hpY2ggbG9va3MgbGlrZSB0aGUgZW50cnkgcG9pbnQgZm9yIGNvbmZpZ3VyaW5nIEtWTSdzIFhlbiBIVk0gZW11bGF0aW9uLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIHdoYXQgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBrbm9icyBhcmUgZXZlbiAqYXZhaWxhYmxlKj8gV2hhdCBkb2VzIHRoZSBzeXN0ZW0gbmVlZCB0byBjb25zaWRlcj8gSSdtIHRoaW5raW5nIEknbGwgbmVlZCB0byBkcmlsbCBkb3duIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgY29kZSB0byBnZXQgYSBoYW5kbGUgb24gdGhpcy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gY2hlY2sgZWl0aGVyIGBhcmNoL3g4Ni9rdm0vS2NvbmZpZ2Agb3IgcG9zc2libHkgdGhlIGBNYWtlZmlsZWAgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LCBgYXJjaC94ODYva3ZtL2AuIFRoZXNlIGFyZSB1c3VhbGx5IHdoZXJlIHRoZSBidWlsZC10aW1lIGFuZCBkZXBlbmRlbmN5IHNldHRpbmdzIHJlc2lkZSwgd2hpY2ggd291bGQgZ2l2ZSBtZSBhIGZyYW1ld29yayBmb3IgdGhlIG9wdGlvbnMgYXZhaWxhYmxlIGZvciB0aGlzIHNldHVwLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc0MSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA4OjMzOjM5Ljg0MjM4MDg5MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMzMDE5MjUxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZW5cXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vTWFrZWZpbGU9MTM9a3ZtLSQoQ09ORklHX0tWTV9IWVBFUlYpICs9IGh5cGVydi5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlOjE0Omt2bS0kKENPTkZJR19LVk1fWEVOKVxcdCs9IHhlbi5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlLTE1LWt2bS0kKENPTkZJR19LVk1fU01NKVxcdCs9IHNtbS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA4OjMzOjQxLjE3MjU4NTY2M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTUzNTA3MjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCBhbiBleHBlcnQncyBtaW5kOlxuXG4qKktlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHRoZSBjb3JlIGlzc3VlIHNlZW1zIHRvIHJldm9sdmUgYXJvdW5kIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHNwZWNpZmljYWxseSB0aG9zZSByZWxhdGVkIHRvIEtWTSBhbmQgWGVuLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgQ09ORklHX0tWTV9YRU5gIGlzIGRlZmluaXRlbHkgYSBrZXkgcmVxdWlyZW1lbnQuIFRoYXTigJlzIHByb2JhYmx5IHRoZSBicmlkZ2UsIG9yIHRoZSBzcGVjaWZpYyBlbmFibGluZyBjb21wb25lbnQgdGhhdCB0aWVzIHRoZSBLVk0gbW9kdWxlIHRvIFhlbiBmdW5jdGlvbmFsaXR5LiBOYXR1cmFsbHksIGBDT05GSUdfS1ZNYCBpdHNlbGYgaXMgYWxzbyBlc3NlbnRpYWw7IHRoYXQncyB0aGUgYmFzZSBLVk0gc3VwcG9ydC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhpcyBwYXJ0aWN1bGFyIEtWTV9YRU4gY29uZmlnIGludGVyYWN0cyBpbiB0aGUgeDg2IGFyY2hpdGVjdHVyZSwgc28gbXkgbmV4dCBzdGVwIGlzIGNsZWFyIC0gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBjaGVjayBgYXJjaC94ODYva3ZtL0tjb25maWdgIHRvIHNlZSB0aGUgY29uZGl0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGFzc29jaWF0ZWQgd2l0aCBgS1ZNX1hFTmAuIFRoYXQgZmlsZSBpcyB0aGUgbW9zdCBsaWtlbHkgcGxhY2UgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGFuZCBhbnkgcG90ZW50aWFsIHByZS1yZXF1aXNpdGVzIGZvciB0aGlzIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMjUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODozMzo0NC43MjYwOTU0MDJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MjAxMDA5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNX1hFTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnPTE5Mz1jb25maWcgS1ZNX0hZUEVSVlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA2LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwNzpjb25maWcgS1ZNX1hFTlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwOC1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBYZW4gaHlwZXJjYWxsIGludGVyZmFjZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDg6MzM6NDUuMTE4MTEyNDUzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MTY5MDQxNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0tWGVuIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IGtleWluZyBpbiBvbiBgS1ZNX1hFTmAuIFRoYXQncyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIHNldHRpbmcgaW4gcGxheSBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgaW1wYWN0ZWQgZnVuY3Rpb25zLCBzbyBJIGNhbiBzZWUgaG93IGRlZXBseSB0aGlzIGNoYW5nZSByaXBwbGVzLiBJdCBzZWVtcyB0aGVzZSBmdW5jdGlvbnMgaGF2ZSBiZWVuIG1vZGlmaWVkOiBga3ZtX3hlbl9ldmVudGZkX3VwZGF0ZWAsIGBrdm1feGVuX2V2ZW50ZmRfYXNzaWduYCwgYGt2bV94ZW5fZXZlbnRmZF9kZWFzc2lnbmAsIGBrdm1feGVuX2V2ZW50ZmRfcmVzZXRgLCBga3ZtX3hlbl9oY2FsbF9ldnRjaG5fc2VuZGAsIGBrdm1feGVuX2luaXRfdm1gLCBhbmQgYGt2bV94ZW5fZGVzdHJveV92bWAuIE5vdywgSSB3YW50IHRvIGNvbmZpcm0gaG93IGBrdm1feGVuX2hjYWxsX2V2dGNobl9zZW5kYCBpcyB1dGlsaXplZC4gSXMgdGhlcmUgYSBjYWxsIHBhdGggdG8gdGhpcyBmdW5jdGlvbiwgb3IgYXJlIHdlIGRlYWxpbmcgd2l0aCBkZWFkIGNvZGU/IFRpbWUgdG8gY2hlY2sgZm9yIHJlYWNoYWJpbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjUyNiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODozMzo0OC43MzUwMTg2MTdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MjY1NjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0veGVuLmM9MzM9c3RhdGljIGludCBrdm1feGVuX3NldGF0dHJfZXZ0Y2huKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV94ZW5faHZtX2F0dHIgKmRhdGEpO1xcbmFyY2gveDg2L2t2bS94ZW4uYzozNDpzdGF0aWMgYm9vbCBrdm1feGVuX2hjYWxsX2V2dGNobl9zZW5kKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHBhcmFtLCB1NjQgKnIpO1xcbmFyY2gveDg2L2t2bS94ZW4uYy0zNS1cXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYz0xNjc0PWludCBrdm1feGVuX2h5cGVyY2FsbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmMtMTcyOS1cXHRcXHRpZiAocGFyYW1zWzBdID09IEVWVENITk9QX3NlbmQpXFxuYXJjaC94ODYva3ZtL3hlbi5jOjE3MzA6XFx0XFx0XFx0aGFuZGxlZCA9IGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmQodmNwdSwgcGFyYW1zWzFdLCBcXHUwMDI2cik7XFxuYXJjaC94ODYva3ZtL3hlbi5jLTE3MzEtXFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmM9MjI0NT1zdGF0aWMgaW50IGt2bV94ZW5fc2V0YXR0cl9ldnRjaG4oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3hlbl9odm1fYXR0ciAqZGF0YSlcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYy0yMjY0LVxcbmFyY2gveDg2L2t2bS94ZW4uYzoyMjY1OnN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgcGFyYW0sIHU2NCAqcilcXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjI2Ni17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA4OjMzOjQ4Ljc5MTI4OTU1M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjE1Mzg0MjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCBga3ZtX3hlbl9oeXBlcmNhbGxgIGlzIGluZGVlZCB0aGUgZW50cnkgcG9pbnQuIEV4Y2VsbGVudCwgdGhpcyBsb29rcyBsaWtlIGEgcHJvbWlzaW5nIGF2ZW51ZSBmb3IgZnV6emluZywgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHplcm8gaW4gb24gc3BlY2lmaWMgc3ltYm9scyB3aXRoaW4gdGhpcyBhcmVhLiBMZXQncyBzZWUuLi4gdGhlIG1vc3QgbGlrZWx5IGNhbmRpZGF0ZXMgZm9yIGludGVyZXN0aW5nIGJlaGF2aW9yIHNlZW0gdG8gYmU6IGBrdm1feGVuX2V2ZW50ZmRfdXBkYXRlYCwgYGt2bV94ZW5fZXZlbnRmZF9hc3NpZ25gLCBga3ZtX3hlbl9ldmVudGZkX2RlYXNzaWduYCwgYGt2bV94ZW5fZXZlbnRmZF9yZXNldGAsIGFuZCBga3ZtX3hlbl9oY2FsbF9ldnRjaG5fc2VuZGAuIFRob3NlIHdpbGwgYmUgbXkgcHJpbWFyeSBmb2N1cy5cblxuTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBidWlsZCBjb25maWdzIGFyZSBjb3JyZWN0LiBJIGtub3cgSSBuZWVkIGBLVk1fWEVOYCwgb2J2aW91c2x5LCBidXQgSSdsbCBhbHNvIGRvdWJsZS1jaGVjayB0aGF0IGBLVk1gIGlzIHByZXNlbnQuIEl04oCZcyBhbHdheXMgZ29vZCBwcmFjdGljZSB0byB2ZXJpZnkgdGhlIGRlcGVuZGVuY2llcy4gSSBoYXZlIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIGBLVk1fWEVOYCBpcyB0aGUgb25seSByZWxldmFudCBjb25maWcuIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhhdCB0b28sIGp1c3QgaW4gY2FzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzMyOCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODozMzo1My40MDY2NzYwNzNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2MTU0MTEwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uLipLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWc9Njk9Y29uZmlnIEtWTV9XRVJST1JcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTc2LVxcdCMgdGhlIGtlcm5lbC13aWRlIFdFUlJPUj15LlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjc3OlxcdGRlcGVuZHMgb24gS1ZNX1g4NiBcXHUwMDI2XFx1MDAyNiAoKEVYUEVSVCBcXHUwMDI2XFx1MDAyNiAhS0FTQU4pIHx8IFdFUlJPUilcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03OC1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz04Mz1jb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctODUtXFx0ZGVwZW5kcyBvbiBFWFBFUlRcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4NjpcXHRkZXBlbmRzIG9uIEtWTV9YODYgXFx1MDAyNlxcdTAwMjYgWDg2XzY0XFxuYXJjaC94ODYva3ZtL0tjb25maWctODctXFx0c2VsZWN0IEtWTV9HRU5FUklDX01FTU9SWV9BVFRSSUJVVEVTXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz05Nj1jb25maWcgS1ZNX0lOVEVMXFxuYXJjaC94ODYva3ZtL0tjb25maWctOTctXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgSW50ZWwgKGFuZCBjb21wYXRpYmxlKSBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuYXJjaC94ODYva3ZtL0tjb25maWc6OTg6XFx0ZGVwZW5kcyBvbiBLVk0gXFx1MDAyNlxcdTAwMjYgSUEzMl9GRUFUX0NUTFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk5LVxcdHNlbGVjdCBYODZfRlJFRCBpZiBYODZfNjRcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTEwNz1jb25maWcgS1ZNX0lOVEVMX1BST1ZFX1ZFXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTA4LSAgICAgICAgYm9vbCBcXFwiQ2hlY2sgdGhhdCBndWVzdHMgZG8gbm90IHJlY2VpdmUgI1ZFIGV4Y2VwdGlvbnNcXFwiXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTA5OiAgICAgICAgZGVwZW5kcyBvbiBLVk1fSU5URUwgXFx1MDAyNlxcdTAwMjYgRVhQRVJUXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTEwLSAgICAgICAgaGVscFxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEyMy1cXHRib29sIFxcXCJTb2Z0d2FyZSBHdWFyZCBlWHRlbnNpb25zIChTR1gpIFZpcnR1YWxpemF0aW9uXFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEyNDpcXHRkZXBlbmRzIG9uIFg4Nl9TR1ggXFx1MDAyNlxcdTAwMjYgS1ZNX0lOVEVMXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTI1LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTE0Nj1jb25maWcgS1ZNX0FNRFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0ODpcXHRkZXBlbmRzIG9uIEtWTSBcXHUwMDI2XFx1MDAyNiAoQ1BVX1NVUF9BTUQgfHwgQ1BVX1NVUF9IWUdPTilcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDktXFx0aGVscFxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTU2PWNvbmZpZyBLVk1fQU1EX1NFVlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU4LVxcdGRlZmF1bHQgeVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1OTpcXHRkZXBlbmRzIG9uIEtWTV9BTUQgXFx1MDAyNlxcdTAwMjYgWDg2XzY0XFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTYwOlxcdGRlcGVuZHMgb24gQ1JZUFRPX0RFVl9TUF9QU1AgXFx1MDAyNlxcdTAwMjYgIShLVk1fQU1EPXkgXFx1MDAyNlxcdTAwMjYgQ1JZUFRPX0RFVl9DQ1BfREQ9bSlcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNjEtXFx0c2VsZWN0IEFSQ0hfSEFTX0NDX1BMQVRGT1JNXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xNzI9Y29uZmlnIEtWTV9JT0FQSUNcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3NC1cXHRkZWZhdWx0IHlcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzU6XFx0ZGVwZW5kcyBvbiBLVk1fWDg2XFxuYXJjaC94ODYva3ZtL0tjb25maWctMTc2LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTE4Mj1jb25maWcgS1ZNX1NNTVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTg0LVxcdGRlZmF1bHQgeVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4NTpcXHRkZXBlbmRzIG9uIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODYtXFx0aGVscFxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTkzPWNvbmZpZyBLVk1fSFlQRVJWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTk0LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIE1pY3Jvc29mdCBIeXBlci1WIGVtdWxhdGlvblxcXCJcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTU6XFx0ZGVwZW5kcyBvbiBLVk1fWDg2XFxuYXJjaC94ODYva3ZtL0tjb25maWctMTk2LVxcdGRlZmF1bHQgeVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MjA3PWNvbmZpZyBLVk1fWEVOXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA4LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwOTpcXHRkZXBlbmRzIG9uIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTAtXFx0aGVscFxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MjE2PWNvbmZpZyBLVk1fUFJPVkVfTU1VXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTgtXFx0ZGVwZW5kcyBvbiBERUJVR19LRVJORUxcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMTk6XFx0ZGVwZW5kcyBvbiBLVk1fWDg2XFxuYXJjaC94ODYva3ZtL0tjb25maWctMjIwLVxcdGRlcGVuZHMgb24gRVhQRVJUXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0yMzI9Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzMtXFx0aW50IFxcXCJNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzNDpcXHRkZXBlbmRzIG9uIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzUtXFx0cmFuZ2UgMTAyNCA0MDk2XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA4OjMzOjUzLjc2ODIyNzY4N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODYzMTYzMTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biByZWFzb25pbmc6XG5cbioqRGVwZW5kZW5jeSBDaGVjazogS1ZNX1hFTiBhbmQgS1ZNX1g4NioqXG5cbkFscmlnaHQsIHNvIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhpcyBzZXR1cCBzdWdnZXN0cyBgS1ZNX1hFTmAgaXMgYnVpbHQgb24gdG9wIG9mIGBLVk1fWDg2YC4gVGhpcyBpc24ndCB1bmV4cGVjdGVkLCBidXQgaXQncyBpbXBvcnRhbnQgdG8gdmVyaWZ5LiBCZWZvcmUgSSBwcm9jZWVkLCBJIG5lZWQgdG8gbWFrZSBzdXJlIGBLVk1fWDg2YCBpcyBwcm9wZXJseSBjb25maWd1cmVkIGFuZCBmdW5jdGlvbmluZyBhcyBleHBlY3RlZC4gSXQncyBhIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrLiBMZXQgbWUgdGFrZSBhIGxvb2sgYXQgdGhlIHN0YXR1cyBvZiBgS1ZNX1g4NmAgZmlyc3QuIFRoaXMgaXMgYSBjcml0aWNhbCBwcmVyZXF1aXNpdGUsIGFuZCBJIG5lZWQgdG8gY29uZmlybSBpdHMgaW50ZWdyaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTU4LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDg6MzM6NTYuNjMxMzkyOTU2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjgyMTM3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNX1g4NlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1fWDg2XFxuYXJjaC94ODYva3ZtL0tjb25maWctMjEtXFx0ZGVmX3RyaXN0YXRlIEtWTSBpZiAoS1ZNX0lOVEVMICE9IG4gfHwgS1ZNX0FNRCAhPSBuKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODozMzo1Ni42OTQyMjMxMTFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc5MTUwNjUzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoaXMgaW5mb3JtYXRpb24sIHRoaW5raW5nIGl0IHRocm91Z2ggZnJvbSBhIHRlY2huaWNhbCBwZXJzcGVjdGl2ZS5cblxuKipLVk0vWGVuIEV2ZW50ZmQgQ29uZmlndXJhdGlvbiAtIEEgUXVpY2sgT3ZlcnZpZXcqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgaG93IEtWTSBhbmQgS1ZNX1hFTiBjb25maWd1cmF0aW9ucyBhcmUgaGFuZGxlZC4gU2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhlIGNvcmUgZWxlbWVudHMgSSBuZWVkIHRvIGZvY3VzIG9uIGFyZSB0aGVzZSBzcGVjaWZpYyBmdW5jdGlvbnMgdGhhdCBkZWFsIGRpcmVjdGx5IHdpdGggZXZlbnRmZHMuIEkgbmVlZCB0byBiZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgdHdvLlxuXG5JdCdzIGNsZWFyIHRoYXQgdGhlc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zOiBga3ZtX3hlbl9ldmVudGZkX3VwZGF0ZWAsIGBrdm1feGVuX2V2ZW50ZmRfYXNzaWduYCwgYGt2bV94ZW5fZXZlbnRmZF9kZWFzc2lnbmAsIGBrdm1feGVuX2V2ZW50ZmRfcmVzZXRgLCBhbmQgYGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmRgLiBJJ20gYWxyZWFkeSB2aXN1YWxpemluZyBob3cgdGhlc2UgZnVuY3Rpb25zIG1hcCBvdXQgdGhlIGxpZmVjeWNsZSBvZiB0aGUgZXZlbnRmZHMgaW4gdGhlIHN5c3RlbS4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRvIHNwZWNpZnkgdGhlIG5hdHVyZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpbiB0aGUgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTQ4NiwiT3V0cHV0VG9rZW5zIjoxODIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDg6MzQ6MDEuNDg1NzMyMTU5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODMxNzQyNTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiS1ZNX1hFTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV94ZW5fZXZlbnRmZF91cGRhdGVcIixcbiAgICBcImt2bV94ZW5fZXZlbnRmZF9hc3NpZ25cIixcbiAgICBcImt2bV94ZW5fZXZlbnRmZF9kZWFzc2lnblwiLFxuICAgIFwia3ZtX3hlbl9ldmVudGZkX3Jlc2V0XCIsXG4gICAgXCJrdm1feGVuX2hjYWxsX2V2dGNobl9zZW5kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgdGhlIElEUiBkYXRhIHN0cnVjdHVyZSB3aXRoIFhBcnJheSBmb3IgbWFuYWdpbmcgWGVuIGV2ZW50IGNoYW5uZWwgcG9ydHMgaW4gS1ZNLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEtWTSBYZW4gZW11bGF0aW9uIGNvZGUsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyBhbmQgaHlwZXJjYWxscy4gRnV6emluZyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIG5ldyBYQXJyYXkgaW1wbGVtZW50YXRpb24gd29ya3MgY29ycmVjdGx5IGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYnVncyBsaWtlIHVzZS1hZnRlci1mcmVlIG9yIG1lbW9yeSBsZWFrcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIktWTV9YRU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1feGVuX2V2ZW50ZmRfdXBkYXRlXCIsXG4gICAgXCJrdm1feGVuX2V2ZW50ZmRfYXNzaWduXCIsXG4gICAgXCJrdm1feGVuX2V2ZW50ZmRfZGVhc3NpZ25cIixcbiAgICBcImt2bV94ZW5fZXZlbnRmZF9yZXNldFwiLFxuICAgIFwia3ZtX3hlbl9oY2FsbF9ldnRjaG5fc2VuZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIHRoZSBJRFIgZGF0YSBzdHJ1Y3R1cmUgd2l0aCBYQXJyYXkgZm9yIG1hbmFnaW5nIFhlbiBldmVudCBjaGFubmVsIHBvcnRzIGluIEtWTS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gWGVuIGVtdWxhdGlvbiBjb2RlLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMgYW5kIGh5cGVyY2FsbHMuIEZ1enppbmcgaXMgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHRoZSBuZXcgWEFycmF5IGltcGxlbWVudGF0aW9uIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGJ1Z3MgbGlrZSB1c2UtYWZ0ZXItZnJlZSBvciBtZW1vcnkgbGVha3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkd56w[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-06 08:18:40 +0000 UTC FinishedAt: 2026-07-06 08:34:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_XEN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "a204badd8432f93b7e862e7dac6db0fe3d65f370", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM", "KVM_XEN" ], "series_id": "5eabd43b-6e2c-4aa1-a8ae-32030d7d6055" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_xen_eventfd_update", "kvm_xen_eventfd_assign", "kvm_xen_eventfd_deassign", "kvm_xen_eventfd_reset", "kvm_xen_hcall_evtchn_send" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fWEVOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3hlbl9ldmVudGZkX3VwZGF0ZSYjMzQ7LAogICAgJiMzNDtrdm1feGVuX2V2ZW50ZmRfYXNzaWduJiMzNDssCiAgICAmIzM0O2t2bV94ZW5fZXZlbnRmZF9kZWFzc2lnbiYjMzQ7LAogICAgJiMzNDtrdm1feGVuX2V2ZW50ZmRfcmVzZXQmIzM0OywKICAgICYjMzQ7a3ZtX3hlbl9oY2FsbF9ldnRjaG5fc2VuZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyB0aGUgSURSIGRhdGEgc3RydWN0dXJlIHdpdGggWEFycmF5IGZvciBtYW5hZ2luZyBYZW4gZXZlbnQgY2hhbm5lbCBwb3J0cyBpbiBLVk0uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgS1ZNIFhlbiBlbXVsYXRpb24gY29kZSwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIGFuZCBoeXBlcmNhbGxzLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgbmV3IFhBcnJheSBpbXBsZW1lbnRhdGlvbiB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBidWdzIGxpa2UgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGxlYWtzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjMzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjhhZDA0YzIwNjRhYmQ2OTlmYjY1ZjI4M2I2NTJiYzM5NTVkN2E2NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDYgMDg6MzM6MjIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbmluZGV4IGI1MTcyNTdhNjMxNTMyLi4wNjQwODM3NTVmYWIwZCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmhcbkBAIC0xNiw2ICYjNDM7MTYsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lycV93b3JrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pcnEuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3dvcmtxdWV1ZS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3hhcnJheS5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva3ZtLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rdm1fcGFyYS5oXHUwMDNlXG5AQCAtMTI4Niw3ICYjNDM7MTI4Nyw3IEBAIHN0cnVjdCBrdm1feGVuIHtcbiBcdGJvb2wgcnVuc3RhdGVfdXBkYXRlX2ZsYWc7XG4gXHR1OCB1cGNhbGxfdmVjdG9yO1xuIFx0c3RydWN0IGdmbl90b19wZm5fY2FjaGUgc2hpbmZvX2NhY2hlO1xuLVx0c3RydWN0IGlkciBldnRjaG5fcG9ydHM7XG4mIzQzO1x0c3RydWN0IHhhcnJheSBldnRjaG5fcG9ydHM7XG4gXHR1bnNpZ25lZCBsb25nIHBvbGxfbWFza1tCSVRTX1RPX0xPTkdTKEtWTV9NQVhfVkNQVVMpXTtcbiBcbiBcdHN0cnVjdCBrdm1feGVuX2h2bV9jb25maWcgaHZtX2NvbmZpZztcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veGVuLmMgYi9hcmNoL3g4Ni9rdm0veGVuLmNcbmluZGV4IDY5NGIzMWMxZmNjOWFmLi43NTQxOTFlM2JlZjdhYSAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS94ZW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3hlbi5jXG5AQCAtMjA3Miw3ICYjNDM7MjA3Miw3IEBAIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3VwZGF0ZShzdHJ1Y3Qga3ZtICprdm0sXG4gXG4gXHQvKiBQcm90ZWN0IHdyaXRlcyB0byBldnRjaG5mZCBhcyB3ZWxsIGFzIHRoZSBpZHIgbG9va3VwLiAgKi9cbiBcdG11dGV4X2xvY2soXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLnhlbl9sb2NrKTtcbi1cdGV2dGNobmZkID0gaWRyX2ZpbmQoXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgcG9ydCk7XG4mIzQzO1x0ZXZ0Y2huZmQgPSB4YV9sb2FkKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIHBvcnQpO1xuIFxuIFx0cmV0ID0gLUVOT0VOVDtcbiBcdGlmICghZXZ0Y2huZmQpXG5AQCAtMjE2NiwxMyAmIzQzOzIxNjYsMTMgQEAgc3RhdGljIGludCBrdm1feGVuX2V2ZW50ZmRfYXNzaWduKHN0cnVjdCBrdm0gKmt2bSxcbiBcdH1cbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLnhlbl9sb2NrKTtcbi1cdHJldCA9IGlkcl9hbGxvYyhcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBldnRjaG5mZCwgcG9ydCwgcG9ydCAmIzQzOyAxLFxuJiM0MztcdHJldCA9IHhhX2luc2VydChcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBwb3J0LCBldnRjaG5mZCxcbiBcdFx0XHRHRlBfS0VSTkVMKTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4ueGVuX2xvY2spO1xuLVx0aWYgKHJldCBcdTAwM2U9IDApXG4mIzQzO1x0aWYgKCFyZXQpXG4gXHRcdHJldHVybiAwO1xuIFxuLVx0aWYgKHJldCA9PSAtRU5PU1BDKVxuJiM0MztcdGlmIChyZXQgPT0gLUVCVVNZKVxuIFx0XHRyZXQgPSAtRUVYSVNUO1xuIG91dDpcbiBcdGlmIChldmVudGZkKVxuQEAgLTIxODcsNyAmIzQzOzIxODcsNyBAQCBzdGF0aWMgaW50IGt2bV94ZW5fZXZlbnRmZF9kZWFzc2lnbihzdHJ1Y3Qga3ZtICprdm0sIHUzMiBwb3J0KVxuIFx0c3RydWN0IGV2dGNobmZkICpldnRjaG5mZDtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLnhlbl9sb2NrKTtcbi1cdGV2dGNobmZkID0gaWRyX3JlbW92ZShcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBwb3J0KTtcbiYjNDM7XHRldnRjaG5mZCA9IHhhX2VyYXNlKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIHBvcnQpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi54ZW5fbG9jayk7XG4gXG4gXHRpZiAoIWV2dGNobmZkKVxuQEAgLTIyMDMsNyAmIzQzOzIyMDMsNyBAQCBzdGF0aWMgaW50IGt2bV94ZW5fZXZlbnRmZF9kZWFzc2lnbihzdHJ1Y3Qga3ZtICprdm0sIHUzMiBwb3J0KVxuIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3Jlc2V0KHN0cnVjdCBrdm0gKmt2bSlcbiB7XG4gXHRzdHJ1Y3QgZXZ0Y2huZmQgKmV2dGNobmZkLCAqKmFsbF9ldnRjaG5mZHM7XG4tXHRpbnQgaTtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIGk7XG4gXHRpbnQgbiA9IDA7XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi54ZW5fbG9jayk7XG5AQCAtMjIxMyw3ICYjNDM7MjIxMyw3IEBAIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3Jlc2V0KHN0cnVjdCBrdm0gKmt2bSlcbiBcdCAqIGNyaXRpY2FsIHNlY3Rpb24sIGZpcnN0IGNvbGxlY3QgYWxsIHRoZSBldnRjaG5mZCBvYmplY3RzXG4gXHQgKiBpbiBhbiBhcnJheSBhcyB0aGV5IGFyZSByZW1vdmVkIGZyb20gZXZ0Y2huX3BvcnRzLlxuIFx0ICovXG4tXHRpZHJfZm9yX2VhY2hfZW50cnkoXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgZXZ0Y2huZmQsIGkpXG4mIzQzO1x0eGFfZm9yX2VhY2goXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgaSwgZXZ0Y2huZmQpXG4gXHRcdG4mIzQzOyYjNDM7O1xuIFxuIFx0YWxsX2V2dGNobmZkcyA9IGttYWxsb2Nfb2JqcyhzdHJ1Y3QgZXZ0Y2huZmQgKiwgbik7XG5AQCAtMjIyMyw5ICYjNDM7MjIyMyw5IEBAIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3Jlc2V0KHN0cnVjdCBrdm0gKmt2bSlcbiBcdH1cbiBcbiBcdG4gPSAwO1xuLVx0aWRyX2Zvcl9lYWNoX2VudHJ5KFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIGV2dGNobmZkLCBpKSB7XG4mIzQzO1x0eGFfZm9yX2VhY2goXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgaSwgZXZ0Y2huZmQpIHtcbiBcdFx0YWxsX2V2dGNobmZkc1tuJiM0MzsmIzQzO10gPSBldnRjaG5mZDtcbi1cdFx0aWRyX3JlbW92ZShcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBldnRjaG5mZC1cdTAwM2VzZW5kX3BvcnQpO1xuJiM0MztcdFx0eGFfZXJhc2UoXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgZXZ0Y2huZmQtXHUwMDNlc2VuZF9wb3J0KTtcbiBcdH1cbiBcdG11dGV4X3VubG9jayhcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4ueGVuX2xvY2spO1xuIFxuQEAgLTIyNzYsMTIgJiM0MzsyMjc2LDEwIEBAIHN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgcGFyYW0sIHU2NCAqcilcbiBcdH1cbiBcbiBcdC8qXG4tXHQgKiBldnRjaG5mZCBpcyBwcm90ZWN0ZWQgYnkga3ZtLVx1MDAzZXNyY3U7IHRoZSBpZHIgbG9va3VwIGluc3RlYWRcbi1cdCAqIGlzIHByb3RlY3RlZCBieSBSQ1UuXG4mIzQzO1x0ICogZXZ0Y2huZmQgaXMgcHJvdGVjdGVkIGJ5IGt2bS1cdTAwM2VzcmN1OyB0aGUgeGFfbG9hZCBpcyBSQ1Utc2FmZVxuJiM0MztcdCAqIGludGVybmFsbHksIG5vIGV4cGxpY2l0IHJjdV9yZWFkX2xvY2soKSBuZWVkZWQuXG4gXHQgKi9cbi1cdHJjdV9yZWFkX2xvY2soKTtcbi1cdGV2dGNobmZkID0gaWRyX2ZpbmQoXHUwMDI2dmNwdS1cdTAwM2Vrdm0tXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBzZW5kLnBvcnQpO1xuLVx0cmN1X3JlYWRfdW5sb2NrKCk7XG4mIzQzO1x0ZXZ0Y2huZmQgPSB4YV9sb2FkKFx1MDAyNnZjcHUtXHUwMDNla3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgc2VuZC5wb3J0KTtcbiBcdGlmICghZXZ0Y2huZmQpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbkBAIC0yMzI4LDIzICYjNDM7MjMyNiwyMyBAQCB2b2lkIGt2bV94ZW5fZGVzdHJveV92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB2b2lkIGt2bV94ZW5faW5pdF92bShzdHJ1Y3Qga3ZtICprdm0pXG4ge1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4ueGVuX2xvY2spO1xuLVx0aWRyX2luaXQoXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cyk7XG4mIzQzO1x0eGFfaW5pdChcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzKTtcbiBcdGt2bV9ncGNfaW5pdChcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uc2hpbmZvX2NhY2hlLCBrdm0pO1xuIH1cbiBcbiB2b2lkIGt2bV94ZW5fZGVzdHJveV92bShzdHJ1Y3Qga3ZtICprdm0pXG4ge1xuIFx0c3RydWN0IGV2dGNobmZkICpldnRjaG5mZDtcbi1cdGludCBpO1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgaTtcbiBcbiBcdGt2bV9ncGNfZGVhY3RpdmF0ZShcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uc2hpbmZvX2NhY2hlKTtcbiBcbi1cdGlkcl9mb3JfZWFjaF9lbnRyeShcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBldnRjaG5mZCwgaSkge1xuJiM0MztcdHhhX2Zvcl9lYWNoKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIGksIGV2dGNobmZkKSB7XG4gXHRcdGlmICghZXZ0Y2huZmQtXHUwMDNlZGVsaXZlci5wb3J0LnBvcnQpXG4gXHRcdFx0ZXZlbnRmZF9jdHhfcHV0KGV2dGNobmZkLVx1MDAzZWRlbGl2ZXIuZXZlbnRmZC5jdHgpO1xuIFx0XHRrZnJlZShldnRjaG5mZCk7XG4gXHR9XG4tXHRpZHJfZGVzdHJveShcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzKTtcbiYjNDM7XHR4YV9kZXN0cm95KFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMpO1xuIFxuIFx0aWYgKGt2bS1cdTAwM2VhcmNoLnhlbi5odm1fY29uZmlnLm1zcilcbiBcdFx0c3RhdGljX2JyYW5jaF9zbG93X2RlY19kZWZlcnJlZChcdTAwMjZrdm1feGVuX2VuYWJsZWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjMzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fWEVOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3hlbl9ldmVudGZkX3VwZGF0ZSYjMzQ7LAogICAgJiMzNDtrdm1feGVuX2V2ZW50ZmRfYXNzaWduJiMzNDssCiAgICAmIzM0O2t2bV94ZW5fZXZlbnRmZF9kZWFzc2lnbiYjMzQ7LAogICAgJiMzNDtrdm1feGVuX2V2ZW50ZmRfcmVzZXQmIzM0OywKICAgICYjMzQ7a3ZtX3hlbl9oY2FsbF9ldnRjaG5fc2VuZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyB0aGUgSURSIGRhdGEgc3RydWN0dXJlIHdpdGggWEFycmF5IGZvciBtYW5hZ2luZyBYZW4gZXZlbnQgY2hhbm5lbCBwb3J0cyBpbiBLVk0uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgS1ZNIFhlbiBlbXVsYXRpb24gY29kZSwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIGFuZCBoeXBlcmNhbGxzLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgbmV3IFhBcnJheSBpbXBsZW1lbnRhdGlvbiB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBidWdzIGxpa2UgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGxlYWtzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2OGFkMDRjMjA2NGFiZDY5OWZiNjVmMjgzYjY1MmJjMzk1NWQ3YTY1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgNiAwODozMzoyMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCmluZGV4IGI1MTcyNTdhNjMxNTMyLi4wNjQwODM3NTVmYWIwZCAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCkBAIC0xNiw2ICYjNDM7MTYsNyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2lycV93b3JrLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaXJxLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvd29ya3F1ZXVlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L3hhcnJheS5oJmd0OwogCiAjaW5jbHVkZSAmbHQ7bGludXgva3ZtLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgva3ZtX3BhcmEuaCZndDsKQEAgLTEyODYsNyAmIzQzOzEyODcsNyBAQCBzdHJ1Y3Qga3ZtX3hlbiB7CiAJYm9vbCBydW5zdGF0ZV91cGRhdGVfZmxhZzsKIAl1OCB1cGNhbGxfdmVjdG9yOwogCXN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlIHNoaW5mb19jYWNoZTsKLQlzdHJ1Y3QgaWRyIGV2dGNobl9wb3J0czsKJiM0MzsJc3RydWN0IHhhcnJheSBldnRjaG5fcG9ydHM7CiAJdW5zaWduZWQgbG9uZyBwb2xsX21hc2tbQklUU19UT19MT05HUyhLVk1fTUFYX1ZDUFVTKV07CiAKIAlzdHJ1Y3Qga3ZtX3hlbl9odm1fY29uZmlnIGh2bV9jb25maWc7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veGVuLmMgYi9hcmNoL3g4Ni9rdm0veGVuLmMKaW5kZXggNjk0YjMxYzFmY2M5YWYuLjc1NDE5MWUzYmVmN2FhIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0veGVuLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3hlbi5jCkBAIC0yMDcyLDcgJiM0MzsyMDcyLDcgQEAgc3RhdGljIGludCBrdm1feGVuX2V2ZW50ZmRfdXBkYXRlKHN0cnVjdCBrdm0gKmt2bSwKIAogCS8qIFByb3RlY3Qgd3JpdGVzIHRvIGV2dGNobmZkIGFzIHdlbGwgYXMgdGhlIGlkciBsb29rdXAuICAqLwogCW11dGV4X2xvY2soJmFtcDtrdm0tJmd0O2FyY2gueGVuLnhlbl9sb2NrKTsKLQlldnRjaG5mZCA9IGlkcl9maW5kKCZhbXA7a3ZtLSZndDthcmNoLnhlbi5ldnRjaG5fcG9ydHMsIHBvcnQpOwomIzQzOwlldnRjaG5mZCA9IHhhX2xvYWQoJmFtcDtrdm0tJmd0O2FyY2gueGVuLmV2dGNobl9wb3J0cywgcG9ydCk7CiAKIAlyZXQgPSAtRU5PRU5UOwogCWlmICghZXZ0Y2huZmQpCkBAIC0yMTY2LDEzICYjNDM7MjE2NiwxMyBAQCBzdGF0aWMgaW50IGt2bV94ZW5fZXZlbnRmZF9hc3NpZ24oc3RydWN0IGt2bSAqa3ZtLAogCX0KIAogCW11dGV4X2xvY2soJmFtcDtrdm0tJmd0O2FyY2gueGVuLnhlbl9sb2NrKTsKLQlyZXQgPSBpZHJfYWxsb2MoJmFtcDtrdm0tJmd0O2FyY2gueGVuLmV2dGNobl9wb3J0cywgZXZ0Y2huZmQsIHBvcnQsIHBvcnQgJiM0MzsgMSwKJiM0MzsJcmV0ID0geGFfaW5zZXJ0KCZhbXA7a3ZtLSZndDthcmNoLnhlbi5ldnRjaG5fcG9ydHMsIHBvcnQsIGV2dGNobmZkLAogCQkJR0ZQX0tFUk5FTCk7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7a3ZtLSZndDthcmNoLnhlbi54ZW5fbG9jayk7Ci0JaWYgKHJldCAmZ3Q7PSAwKQomIzQzOwlpZiAoIXJldCkKIAkJcmV0dXJuIDA7CiAKLQlpZiAocmV0ID09IC1FTk9TUEMpCiYjNDM7CWlmIChyZXQgPT0gLUVCVVNZKQogCQlyZXQgPSAtRUVYSVNUOwogb3V0OgogCWlmIChldmVudGZkKQpAQCAtMjE4Nyw3ICYjNDM7MjE4Nyw3IEBAIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX2RlYXNzaWduKHN0cnVjdCBrdm0gKmt2bSwgdTMyIHBvcnQpCiAJc3RydWN0IGV2dGNobmZkICpldnRjaG5mZDsKIAogCW11dGV4X2xvY2soJmFtcDtrdm0tJmd0O2FyY2gueGVuLnhlbl9sb2NrKTsKLQlldnRjaG5mZCA9IGlkcl9yZW1vdmUoJmFtcDtrdm0tJmd0O2FyY2gueGVuLmV2dGNobl9wb3J0cywgcG9ydCk7CiYjNDM7CWV2dGNobmZkID0geGFfZXJhc2UoJmFtcDtrdm0tJmd0O2FyY2gueGVuLmV2dGNobl9wb3J0cywgcG9ydCk7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7a3ZtLSZndDthcmNoLnhlbi54ZW5fbG9jayk7CiAKIAlpZiAoIWV2dGNobmZkKQpAQCAtMjIwMyw3ICYjNDM7MjIwMyw3IEBAIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX2RlYXNzaWduKHN0cnVjdCBrdm0gKmt2bSwgdTMyIHBvcnQpCiBzdGF0aWMgaW50IGt2bV94ZW5fZXZlbnRmZF9yZXNldChzdHJ1Y3Qga3ZtICprdm0pCiB7CiAJc3RydWN0IGV2dGNobmZkICpldnRjaG5mZCwgKiphbGxfZXZ0Y2huZmRzOwotCWludCBpOwomIzQzOwl1bnNpZ25lZCBsb25nIGk7CiAJaW50IG4gPSAwOwogCiAJbXV0ZXhfbG9jaygmYW1wO2t2bS0mZ3Q7YXJjaC54ZW4ueGVuX2xvY2spOwpAQCAtMjIxMyw3ICYjNDM7MjIxMyw3IEBAIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3Jlc2V0KHN0cnVjdCBrdm0gKmt2bSkKIAkgKiBjcml0aWNhbCBzZWN0aW9uLCBmaXJzdCBjb2xsZWN0IGFsbCB0aGUgZXZ0Y2huZmQgb2JqZWN0cwogCSAqIGluIGFuIGFycmF5IGFzIHRoZXkgYXJlIHJlbW92ZWQgZnJvbSBldnRjaG5fcG9ydHMuCiAJICovCi0JaWRyX2Zvcl9lYWNoX2VudHJ5KCZhbXA7a3ZtLSZndDthcmNoLnhlbi5ldnRjaG5fcG9ydHMsIGV2dGNobmZkLCBpKQomIzQzOwl4YV9mb3JfZWFjaCgmYW1wO2t2bS0mZ3Q7YXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBpLCBldnRjaG5mZCkKIAkJbiYjNDM7JiM0Mzs7CiAKIAlhbGxfZXZ0Y2huZmRzID0ga21hbGxvY19vYmpzKHN0cnVjdCBldnRjaG5mZCAqLCBuKTsKQEAgLTIyMjMsOSAmIzQzOzIyMjMsOSBAQCBzdGF0aWMgaW50IGt2bV94ZW5fZXZlbnRmZF9yZXNldChzdHJ1Y3Qga3ZtICprdm0pCiAJfQogCiAJbiA9IDA7Ci0JaWRyX2Zvcl9lYWNoX2VudHJ5KCZhbXA7a3ZtLSZndDthcmNoLnhlbi5ldnRjaG5fcG9ydHMsIGV2dGNobmZkLCBpKSB7CiYjNDM7CXhhX2Zvcl9lYWNoKCZhbXA7a3ZtLSZndDthcmNoLnhlbi5ldnRjaG5fcG9ydHMsIGksIGV2dGNobmZkKSB7CiAJCWFsbF9ldnRjaG5mZHNbbiYjNDM7JiM0MztdID0gZXZ0Y2huZmQ7Ci0JCWlkcl9yZW1vdmUoJmFtcDtrdm0tJmd0O2FyY2gueGVuLmV2dGNobl9wb3J0cywgZXZ0Y2huZmQtJmd0O3NlbmRfcG9ydCk7CiYjNDM7CQl4YV9lcmFzZSgmYW1wO2t2bS0mZ3Q7YXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBldnRjaG5mZC0mZ3Q7c2VuZF9wb3J0KTsKIAl9CiAJbXV0ZXhfdW5sb2NrKCZhbXA7a3ZtLSZndDthcmNoLnhlbi54ZW5fbG9jayk7CiAKQEAgLTIyNzYsMTIgJiM0MzsyMjc2LDEwIEBAIHN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgcGFyYW0sIHU2NCAqcikKIAl9CiAKIAkvKgotCSAqIGV2dGNobmZkIGlzIHByb3RlY3RlZCBieSBrdm0tJmd0O3NyY3U7IHRoZSBpZHIgbG9va3VwIGluc3RlYWQKLQkgKiBpcyBwcm90ZWN0ZWQgYnkgUkNVLgomIzQzOwkgKiBldnRjaG5mZCBpcyBwcm90ZWN0ZWQgYnkga3ZtLSZndDtzcmN1OyB0aGUgeGFfbG9hZCBpcyBSQ1Utc2FmZQomIzQzOwkgKiBpbnRlcm5hbGx5LCBubyBleHBsaWNpdCByY3VfcmVhZF9sb2NrKCkgbmVlZGVkLgogCSAqLwotCXJjdV9yZWFkX2xvY2soKTsKLQlldnRjaG5mZCA9IGlkcl9maW5kKCZhbXA7dmNwdS0mZ3Q7a3ZtLSZndDthcmNoLnhlbi5ldnRjaG5fcG9ydHMsIHNlbmQucG9ydCk7Ci0JcmN1X3JlYWRfdW5sb2NrKCk7CiYjNDM7CWV2dGNobmZkID0geGFfbG9hZCgmYW1wO3ZjcHUtJmd0O2t2bS0mZ3Q7YXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBzZW5kLnBvcnQpOwogCWlmICghZXZ0Y2huZmQpCiAJCXJldHVybiBmYWxzZTsKIApAQCAtMjMyOCwyMyAmIzQzOzIzMjYsMjMgQEAgdm9pZCBrdm1feGVuX2Rlc3Ryb3lfdmNwdShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB2b2lkIGt2bV94ZW5faW5pdF92bShzdHJ1Y3Qga3ZtICprdm0pCiB7CiAJbXV0ZXhfaW5pdCgmYW1wO2t2bS0mZ3Q7YXJjaC54ZW4ueGVuX2xvY2spOwotCWlkcl9pbml0KCZhbXA7a3ZtLSZndDthcmNoLnhlbi5ldnRjaG5fcG9ydHMpOwomIzQzOwl4YV9pbml0KCZhbXA7a3ZtLSZndDthcmNoLnhlbi5ldnRjaG5fcG9ydHMpOwogCWt2bV9ncGNfaW5pdCgmYW1wO2t2bS0mZ3Q7YXJjaC54ZW4uc2hpbmZvX2NhY2hlLCBrdm0pOwogfQogCiB2b2lkIGt2bV94ZW5fZGVzdHJveV92bShzdHJ1Y3Qga3ZtICprdm0pCiB7CiAJc3RydWN0IGV2dGNobmZkICpldnRjaG5mZDsKLQlpbnQgaTsKJiM0MzsJdW5zaWduZWQgbG9uZyBpOwogCiAJa3ZtX2dwY19kZWFjdGl2YXRlKCZhbXA7a3ZtLSZndDthcmNoLnhlbi5zaGluZm9fY2FjaGUpOwogCi0JaWRyX2Zvcl9lYWNoX2VudHJ5KCZhbXA7a3ZtLSZndDthcmNoLnhlbi5ldnRjaG5fcG9ydHMsIGV2dGNobmZkLCBpKSB7CiYjNDM7CXhhX2Zvcl9lYWNoKCZhbXA7a3ZtLSZndDthcmNoLnhlbi5ldnRjaG5fcG9ydHMsIGksIGV2dGNobmZkKSB7CiAJCWlmICghZXZ0Y2huZmQtJmd0O2RlbGl2ZXIucG9ydC5wb3J0KQogCQkJZXZlbnRmZF9jdHhfcHV0KGV2dGNobmZkLSZndDtkZWxpdmVyLmV2ZW50ZmQuY3R4KTsKIAkJa2ZyZWUoZXZ0Y2huZmQpOwogCX0KLQlpZHJfZGVzdHJveSgmYW1wO2t2bS0mZ3Q7YXJjaC54ZW4uZXZ0Y2huX3BvcnRzKTsKJiM0MzsJeGFfZGVzdHJveSgmYW1wO2t2bS0mZ3Q7YXJjaC54ZW4uZXZ0Y2huX3BvcnRzKTsKIAogCWlmIChrdm0tJmd0O2FyY2gueGVuLmh2bV9jb25maWcubXNyKQogCQlzdGF0aWNfYnJhbmNoX3Nsb3dfZGVjX2RlZmVycmVkKCZhbXA7a3ZtX3hlbl9lbmFibGVkKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDg6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcwNAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIHhhcnJheS1CYXNlZCBFdnRjaG4gUG9ydCBSZXBsYWNlbWVudCBpbiBLVk0vWGVuKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBzd2FwcGluZyBvdXQgdGhlIGBpZHJgIGRhdGEgc3RydWN0dXJlIGZvciBgeGFycmF5YCBpbiB0aGUgS1ZNL1hlbiBlbXVsYXRpb24gY29kZSwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgYXJjaC94ODYva3ZtL3hlbi5jYC4gVGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZSwgYWZmZWN0aW5nIGhvdyB3ZSBtYW5hZ2UgZXZlbnQgY2hhbm5lbCBwb3J0cy4gVGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBkaXJlY3RseSBpbXBhY3RlZCBhcmUgYGt2bV94ZW5fZXZlbnRmZF91cGRhdGVgLCBga3ZtX3hlbl9ldmVudGZkX2Fzc2lnbmAsIGBrdm1feGVuX2V2ZW50ZmRfZGVhc3NpZ25gLCBga3ZtX3hlbl9ldmVudGZkX3Jlc2V0YCwgYGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmRgLCBga3ZtX3hlbl9pbml0X3ZtYCwgYW5kIGBrdm1feGVuX2Rlc3Ryb3lfdm1gLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHZlcmlmeSB0aGF0IHRoaXMgY29kZSBwYXRoIGlzIGFjdHVhbGx5IGhpdCB1bmRlciByZWFsaXN0aWMgY29uZGl0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb25zIG5lY2Vzc2FyeSB0byBnZXQgdGhpcyBhY3RpdmUuICBJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyBpZiB0aGlzIGlzIGVuYWJsZWQgdmlhIGNvbmZpZyBvcHRpb25zLiBTbyBJIGFtIGdvaW5nIHRvIHNlYXJjaCBmb3IgY2FsbHMgdG8gYGt2bV94ZW5fZXZlbnRmZF9hc3NpZ25gIG9yIGBrdm1feGVuX2V2ZW50ZmRfdXBkYXRlYCBpbiB0aGUgY29kZWJhc2UuIFRoYXQgd2lsbCBnaXZlIG1lIHNvbWUgaW5zaWdodCBpbnRvIHdoZXJlIHRoaXMgY29kZSBpcyBjYWxsZWQgZnJvbSBhbmQgd2hhdCB0cmlnZ2VycyBpdHMgZXhlY3V0aW9uLiAgVGhpcyBpcyBhIGNyaXRpY2FsIGZpcnN0IHN0ZXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgYmVmb3JlIEkgY2FuIGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBzd2l0Y2ggdG8gYHhhcnJheWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDg6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3hlbl9ldmVudGZkX2Fzc2lnbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3hlbi5jPTIwNjY9c3RhdGljIGludCBrdm1feGVuX2V2ZW50ZmRfdXBkYXRlKHN0cnVjdCBrdm0gKmt2bSxcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjExMi0gKi9cbmFyY2gveDg2L2t2bS94ZW4uYzoyMTEzOnN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX2Fzc2lnbihzdHJ1Y3Qga3ZtICprdm0sXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjExNC1cdFx0XHRcdCAgc3RydWN0IGt2bV94ZW5faHZtX2F0dHIgKmRhdGEpXG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jPTIyNDU9c3RhdGljIGludCBrdm1feGVuX3NldGF0dHJfZXZ0Y2huKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV94ZW5faHZtX2F0dHIgKmRhdGEpXG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jLTIyNjEtXG5hcmNoL3g4Ni9rdm0veGVuLmM6MjI2MjpcdHJldHVybiBrdm1feGVuX2V2ZW50ZmRfYXNzaWduKGt2bSwgZGF0YSk7XG5hcmNoL3g4Ni9rdm0veGVuLmMtMjI2My19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDg6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU0NgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQuCgoqKkFuYWx5emluZyB0aGUgRnVuY3Rpb24gQ2FsbCBQYXRoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IHNlZW1zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBmdW5jdGlvbiBuYW1lZCBga3ZtX3hlbl9zZXRhdHRyX2V2dGNobmAuIFRoZSBrZXkgaGVyZSBpcyB0aGF0ICYjMzQ7ZXZ0Y2huJiMzNDsgc3Ryb25nbHkgc3VnZ2VzdHMgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aGluIHRoZSBjb250ZXh0IG9mIFhlbiBldmVudCBjaGFubmVscywgd2hpY2ggbWVhbnMgaXQmIzM5O3MgbGlrZWx5IGRlYWxpbmcgd2l0aCBjb21tdW5pY2F0aW9uIG9yIGludGVycnVwdHMgd2l0aGluIGEgWGVuIHZpcnR1YWwgbWFjaGluZSBlbnZpcm9ubWVudC4gTm93LCB0aGUgaGludCB0aGF0IHRoaXMgbWlnaHQgYmUgY29ubmVjdGVkIHRvIGFuIGBpb2N0bGAgY2FsbCBpcyBjcnVjaWFsLiBJb2N0bHMgYXJlIHRoZSBjbGFzc2ljIG1lY2hhbmlzbSBmb3IgdXNlci1zcGFjZSBwcm9ncmFtcyB0byBpc3N1ZSBkZXZpY2Utc3BlY2lmaWMgY29tbWFuZHMgdG8gdGhlIGtlcm5lbC4gU28sIHRoZSBsaWtlbHkgc2NlbmFyaW8gaXMgdGhhdCBhIHVzZXItc3BhY2UgcHJvZ3JhbSBpcyBpc3N1aW5nIGEgY29tbWFuZCB0aHJvdWdoIGFuIGBpb2N0bGAsIGFuZCB0aGlzLCBpbiB0dXJuLCBpcyBjYWxsaW5nIGBrdm1feGVuX3NldGF0dHJfZXZ0Y2huYCBhdCBzb21lIHBvaW50IGluIHRoZSBjaGFpbi4gSSBuZWVkIHRvIHRyYWNlIHRoZSBwYXRoIGFuZCB2ZXJpZnkgdGhpcyBhc3N1bXB0aW9uLiBXZSBzaG91bGQgYmUgYWJsZSB0byBsb29rIGF0IHRoZSBrZXJuZWwgY29kZSBmb3IgdGhlIGBrdm1feGVuX3NldGF0dHJfZXZ0Y2huYCBmdW5jdGlvbiB0byB1bmRlcnN0YW5kIG1vcmUgYWJvdXQgaXRzIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV94ZW5fc2V0YXR0cl9ldnRjaG4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS94ZW4uYz0zMj1zdGF0aWMgaW50IGt2bV94ZW5fc2V0X2V2dGNobihzdHJ1Y3Qga3ZtX3hlbl9ldnRjaG4gKnhlLCBzdHJ1Y3Qga3ZtICprdm0pO1xuYXJjaC94ODYva3ZtL3hlbi5jOjMzOnN0YXRpYyBpbnQga3ZtX3hlbl9zZXRhdHRyX2V2dGNobihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1feGVuX2h2bV9hdHRyICpkYXRhKTtcbmFyY2gveDg2L2t2bS94ZW4uYy0zNC1zdGF0aWMgYm9vbCBrdm1feGVuX2hjYWxsX2V2dGNobl9zZW5kKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHBhcmFtLCB1NjQgKnIpO1xuLS1cbmFyY2gveDg2L2t2bS94ZW4uYz03NDY9aW50IGt2bV94ZW5faHZtX3NldF9hdHRyKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV94ZW5faHZtX2F0dHIgKmRhdGEpXG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jLTgyMi1cdGNhc2UgS1ZNX1hFTl9BVFRSX1RZUEVfRVZUQ0hOOlxuYXJjaC94ODYva3ZtL3hlbi5jOjgyMzpcdFx0ciA9IGt2bV94ZW5fc2V0YXR0cl9ldnRjaG4oa3ZtLCBkYXRhKTtcbmFyY2gveDg2L2t2bS94ZW4uYy04MjQtXHRcdGJyZWFrO1xuLS1cbmFyY2gveDg2L2t2bS94ZW4uYz0yMjAzPXN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3Jlc2V0KHN0cnVjdCBrdm0gKmt2bSlcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjI0NC1cbmFyY2gveDg2L2t2bS94ZW4uYzoyMjQ1OnN0YXRpYyBpbnQga3ZtX3hlbl9zZXRhdHRyX2V2dGNobihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1feGVuX2h2bV9hdHRyICpkYXRhKVxuYXJjaC94ODYva3ZtL3hlbi5jLTIyNDYte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyNzUKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgS1ZNLVhlbiBIVk0gQXR0cmlidXRlIFNldHRpbmcqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBrdm1feGVuX2h2bV9zZXRfYXR0cmAgaXMgYmVpbmcgaW52b2tlZC4gVGhlIGNvbnRleHQgc3VnZ2VzdHMgaXQmIzM5O3MgYmVpbmcgY2FsbGVkLCBvciBjb3VsZCBiZSBjYWxsZWQsIGZyb20gYGt2bV9hcmNoX3ZtX2lvY3RsYCBvciBzb21ldGhpbmcgc2ltaWxhciwgbGlrZWx5IHdpdGhpbiB0aGUgS1ZNIGFyY2hpdGVjdHVyZS4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgY2FsbC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIGNvcmUgeDg2IEtWTSBjb2RlLCBzaW5jZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHg4NiB2aXJ0dWFsaXphdGlvbiBhbmQgc29tZXRoaW5nIFhlbi1yZWxhdGVkLiBTcGVjaWZpY2FsbHksIHRoZSBmaWxlIEkmIzM5O20gZ29pbmcgdG8gbG9vayBhdCBpcyBgYXJjaC94ODYva3ZtL3g4Ni5jYC4gVGhhdCYjMzk7cyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0byBmaW5kIHRoZSBkZWZpbml0aW9uIG9yIHJlZmVyZW5jZSB0byBgS1ZNX1hFTl9IVk1fU0VUX0FUVFJgLCBhbmQgdGh1cyB0aGUgY29udGV4dCBJIGFtIGxvb2tpbmcgZm9yLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGRpZyB1cCB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwODozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtLVk1fWEVOX0hWTV9TRVRfQVRUUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jPTQzNTQ9aW50IGt2bV9hcmNoX3ZtX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy00NjAzLVx0fVxuYXJjaC94ODYva3ZtL3g4Ni5jOjQ2MDQ6XHRjYXNlIEtWTV9YRU5fSFZNX1NFVF9BVFRSOiB7XG5hcmNoL3g4Ni9rdm0veDg2LmMtNDYwNS1cdFx0c3RydWN0IGt2bV94ZW5faHZtX2F0dHIgeGhhO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3NDEKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLVk0gWGVuIEVtdWxhdGlvbiBDb25maWd1cmF0aW9uIC0gSW5pdGlhbCBUaG91Z2h0cyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIHBvaW50ZWQgdG93YXJkcyBgS1ZNX1hFTl9IVk1fU0VUX0FUVFJgLCB3aGljaCBsb29rcyBsaWtlIHRoZSBlbnRyeSBwb2ludCBmb3IgY29uZmlndXJpbmcgS1ZNJiMzOTtzIFhlbiBIVk0gZW11bGF0aW9uLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIHdoYXQgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBrbm9icyBhcmUgZXZlbiAqYXZhaWxhYmxlKj8gV2hhdCBkb2VzIHRoZSBzeXN0ZW0gbmVlZCB0byBjb25zaWRlcj8gSSYjMzk7bSB0aGlua2luZyBJJiMzOTtsbCBuZWVkIHRvIGRyaWxsIGRvd24gaW50byB0aGUga2VybmVsIHNvdXJjZSBjb2RlIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjaGVjayBlaXRoZXIgYGFyY2gveDg2L2t2bS9LY29uZmlnYCBvciBwb3NzaWJseSB0aGUgYE1ha2VmaWxlYCBpbiB0aGUgc2FtZSBkaXJlY3RvcnksIGBhcmNoL3g4Ni9rdm0vYC4gVGhlc2UgYXJlIHVzdWFsbHkgd2hlcmUgdGhlIGJ1aWxkLXRpbWUgYW5kIGRlcGVuZGVuY3kgc2V0dGluZ3MgcmVzaWRlLCB3aGljaCB3b3VsZCBnaXZlIG1lIGEgZnJhbWV3b3JrIGZvciB0aGUgb3B0aW9ucyBhdmFpbGFibGUgZm9yIHRoaXMgc2V0dXAuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDg6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGVuXFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL01ha2VmaWxlPTEzPWt2bS0kKENPTkZJR19LVk1fSFlQRVJWKSAmIzQzOz0gaHlwZXJ2Lm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZToxNDprdm0tJChDT05GSUdfS1ZNX1hFTilcdCYjNDM7PSB4ZW4ub1xuYXJjaC94ODYva3ZtL01ha2VmaWxlLTE1LWt2bS0kKENPTkZJR19LVk1fU01NKVx0JiM0Mzs9IHNtbS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxMjUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgY3JhZnRlZCB3aXRoIGFuIGV4cGVydCYjMzk7cyBtaW5kOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgdGhlIGNvcmUgaXNzdWUgc2VlbXMgdG8gcmV2b2x2ZSBhcm91bmQga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgc3BlY2lmaWNhbGx5IHRob3NlIHJlbGF0ZWQgdG8gS1ZNIGFuZCBYZW4uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBDT05GSUdfS1ZNX1hFTmAgaXMgZGVmaW5pdGVseSBhIGtleSByZXF1aXJlbWVudC4gVGhhdOKAmXMgcHJvYmFibHkgdGhlIGJyaWRnZSwgb3IgdGhlIHNwZWNpZmljIGVuYWJsaW5nIGNvbXBvbmVudCB0aGF0IHRpZXMgdGhlIEtWTSBtb2R1bGUgdG8gWGVuIGZ1bmN0aW9uYWxpdHkuIE5hdHVyYWxseSwgYENPTkZJR19LVk1gIGl0c2VsZiBpcyBhbHNvIGVzc2VudGlhbDsgdGhhdCYjMzk7cyB0aGUgYmFzZSBLVk0gc3VwcG9ydC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhpcyBwYXJ0aWN1bGFyIEtWTV9YRU4gY29uZmlnIGludGVyYWN0cyBpbiB0aGUgeDg2IGFyY2hpdGVjdHVyZSwgc28gbXkgbmV4dCBzdGVwIGlzIGNsZWFyIC0gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBjaGVjayBgYXJjaC94ODYva3ZtL0tjb25maWdgIHRvIHNlZSB0aGUgY29uZGl0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGFzc29jaWF0ZWQgd2l0aCBgS1ZNX1hFTmAuIFRoYXQgZmlsZSBpcyB0aGUgbW9zdCBsaWtlbHkgcGxhY2UgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGFuZCBhbnkgcG90ZW50aWFsIHByZS1yZXF1aXNpdGVzIGZvciB0aGlzIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk1fWEVOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOTM9Y29uZmlnIEtWTV9IWVBFUlZcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDYtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDc6Y29uZmlnIEtWTV9YRU5cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwOC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgWGVuIGh5cGVyY2FsbCBpbnRlcmZhY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDg6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUyNgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDEzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtWTS1YZW4gQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBrZXlpbmcgaW4gb24gYEtWTV9YRU5gLiBUaGF0JiMzOTtzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gc2V0dGluZyBpbiBwbGF5IGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBpbXBhY3RlZCBmdW5jdGlvbnMsIHNvIEkgY2FuIHNlZSBob3cgZGVlcGx5IHRoaXMgY2hhbmdlIHJpcHBsZXMuIEl0IHNlZW1zIHRoZXNlIGZ1bmN0aW9ucyBoYXZlIGJlZW4gbW9kaWZpZWQ6IGBrdm1feGVuX2V2ZW50ZmRfdXBkYXRlYCwgYGt2bV94ZW5fZXZlbnRmZF9hc3NpZ25gLCBga3ZtX3hlbl9ldmVudGZkX2RlYXNzaWduYCwgYGt2bV94ZW5fZXZlbnRmZF9yZXNldGAsIGBrdm1feGVuX2hjYWxsX2V2dGNobl9zZW5kYCwgYGt2bV94ZW5faW5pdF92bWAsIGFuZCBga3ZtX3hlbl9kZXN0cm95X3ZtYC4gTm93LCBJIHdhbnQgdG8gY29uZmlybSBob3cgYGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmRgIGlzIHV0aWxpemVkLiBJcyB0aGVyZSBhIGNhbGwgcGF0aCB0byB0aGlzIGZ1bmN0aW9uLCBvciBhcmUgd2UgZGVhbGluZyB3aXRoIGRlYWQgY29kZT8gVGltZSB0byBjaGVjayBmb3IgcmVhY2hhYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwODozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1feGVuX2hjYWxsX2V2dGNobl9zZW5kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veGVuLmM9MzM9c3RhdGljIGludCBrdm1feGVuX3NldGF0dHJfZXZ0Y2huKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV94ZW5faHZtX2F0dHIgKmRhdGEpO1xuYXJjaC94ODYva3ZtL3hlbi5jOjM0OnN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgcGFyYW0sIHU2NCAqcik7XG5hcmNoL3g4Ni9rdm0veGVuLmMtMzUtXG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jPTE2NzQ9aW50IGt2bV94ZW5faHlwZXJjYWxsKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmMtMTcyOS1cdFx0aWYgKHBhcmFtc1swXSA9PSBFVlRDSE5PUF9zZW5kKVxuYXJjaC94ODYva3ZtL3hlbi5jOjE3MzA6XHRcdFx0aGFuZGxlZCA9IGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmQodmNwdSwgcGFyYW1zWzFdLCBcdTAwMjZyKTtcbmFyY2gveDg2L2t2bS94ZW4uYy0xNzMxLVx0XHRicmVhaztcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmM9MjI0NT1zdGF0aWMgaW50IGt2bV94ZW5fc2V0YXR0cl9ldnRjaG4oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3hlbl9odm1fYXR0ciAqZGF0YSlcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjI2NC1cbmFyY2gveDg2L2t2bS94ZW4uYzoyMjY1OnN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgcGFyYW0sIHU2NCAqcilcbmFyY2gveDg2L2t2bS94ZW4uYy0yMjY2LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDYgMDg6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzMyOAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDEzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBga3ZtX3hlbl9oeXBlcmNhbGxgIGlzIGluZGVlZCB0aGUgZW50cnkgcG9pbnQuIEV4Y2VsbGVudCwgdGhpcyBsb29rcyBsaWtlIGEgcHJvbWlzaW5nIGF2ZW51ZSBmb3IgZnV6emluZywgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHplcm8gaW4gb24gc3BlY2lmaWMgc3ltYm9scyB3aXRoaW4gdGhpcyBhcmVhLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBtb3N0IGxpa2VseSBjYW5kaWRhdGVzIGZvciBpbnRlcmVzdGluZyBiZWhhdmlvciBzZWVtIHRvIGJlOiBga3ZtX3hlbl9ldmVudGZkX3VwZGF0ZWAsIGBrdm1feGVuX2V2ZW50ZmRfYXNzaWduYCwgYGt2bV94ZW5fZXZlbnRmZF9kZWFzc2lnbmAsIGBrdm1feGVuX2V2ZW50ZmRfcmVzZXRgLCBhbmQgYGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmRgLiBUaG9zZSB3aWxsIGJlIG15IHByaW1hcnkgZm9jdXMuCgpOb3csIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGJ1aWxkIGNvbmZpZ3MgYXJlIGNvcnJlY3QuIEkga25vdyBJIG5lZWQgYEtWTV9YRU5gLCBvYnZpb3VzbHksIGJ1dCBJJiMzOTtsbCBhbHNvIGRvdWJsZS1jaGVjayB0aGF0IGBLVk1gIGlzIHByZXNlbnQuIEl04oCZcyBhbHdheXMgZ29vZCBwcmFjdGljZSB0byB2ZXJpZnkgdGhlIGRlcGVuZGVuY2llcy4gSSBoYXZlIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIGBLVk1fWEVOYCBpcyB0aGUgb25seSByZWxldmFudCBjb25maWcuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoYXQgdG9vLCBqdXN0IGluIGNhc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24uKktWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnPTY5PWNvbmZpZyBLVk1fV0VSUk9SXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctNzYtXHQjIHRoZSBrZXJuZWwtd2lkZSBXRVJST1I9eS5cbmFyY2gveDg2L2t2bS9LY29uZmlnOjc3Olx0ZGVwZW5kcyBvbiBLVk1fWDg2IFx1MDAyNlx1MDAyNiAoKEVYUEVSVCBcdTAwMjZcdTAwMjYgIUtBU0FOKSB8fCBXRVJST1IpXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03OC1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz04Mz1jb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTg1LVx0ZGVwZW5kcyBvbiBFWFBFUlRcbmFyY2gveDg2L2t2bS9LY29uZmlnOjg2Olx0ZGVwZW5kcyBvbiBLVk1fWDg2IFx1MDAyNlx1MDAyNiBYODZfNjRcbmFyY2gveDg2L2t2bS9LY29uZmlnLTg3LVx0c2VsZWN0IEtWTV9HRU5FUklDX01FTU9SWV9BVFRSSUJVVEVTXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9OTY9Y29uZmlnIEtWTV9JTlRFTFxuYXJjaC94ODYva3ZtL0tjb25maWctOTctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5ODpcdGRlcGVuZHMgb24gS1ZNIFx1MDAyNlx1MDAyNiBJQTMyX0ZFQVRfQ1RMXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05OS1cdHNlbGVjdCBYODZfRlJFRCBpZiBYODZfNjRcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMDc9Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxuYXJjaC94ODYva3ZtL0tjb25maWctMTA4LSAgICAgICAgYm9vbCBcJiMzNDtDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1wmIzM0O1xuYXJjaC94ODYva3ZtL0tjb25maWc6MTA5OiAgICAgICAgZGVwZW5kcyBvbiBLVk1fSU5URUwgXHUwMDI2XHUwMDI2IEVYUEVSVFxuYXJjaC94ODYva3ZtL0tjb25maWctMTEwLSAgICAgICAgaGVscFxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMj1jb25maWcgWDg2X1NHWF9LVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEyMy1cdGJvb2wgXCYjMzQ7U29mdHdhcmUgR3VhcmQgZVh0ZW5zaW9ucyAoU0dYKSBWaXJ0dWFsaXphdGlvblwmIzM0O1xuYXJjaC94ODYva3ZtL0tjb25maWc6MTI0Olx0ZGVwZW5kcyBvbiBYODZfU0dYIFx1MDAyNlx1MDAyNiBLVk1fSU5URUxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEyNS1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xNDY9Y29uZmlnIEtWTV9BTURcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ4Olx0ZGVwZW5kcyBvbiBLVk0gXHUwMDI2XHUwMDI2IChDUFVfU1VQX0FNRCB8fCBDUFVfU1VQX0hZR09OKVxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ5LVx0aGVscFxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTE1Nj1jb25maWcgS1ZNX0FNRF9TRVZcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTgtXHRkZWZhdWx0IHlcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1OTpcdGRlcGVuZHMgb24gS1ZNX0FNRCBcdTAwMjZcdTAwMjYgWDg2XzY0XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNjA6XHRkZXBlbmRzIG9uIENSWVBUT19ERVZfU1BfUFNQIFx1MDAyNlx1MDAyNiAhKEtWTV9BTUQ9eSBcdTAwMjZcdTAwMjYgQ1JZUFRPX0RFVl9DQ1BfREQ9bSlcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE2MS1cdHNlbGVjdCBBUkNIX0hBU19DQ19QTEFURk9STVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTE3Mj1jb25maWcgS1ZNX0lPQVBJQ1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3NC1cdGRlZmF1bHQgeVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTc1Olx0ZGVwZW5kcyBvbiBLVk1fWDg2XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzYtXHRoZWxwXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTgyPWNvbmZpZyBLVk1fU01NXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTg0LVx0ZGVmYXVsdCB5XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODU6XHRkZXBlbmRzIG9uIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4Ni1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOTM9Y29uZmlnIEtWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXCYjMzQ7XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTU6XHRkZXBlbmRzIG9uIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5Ni1cdGRlZmF1bHQgeVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTIwNz1jb25maWcgS1ZNX1hFTlxuYXJjaC94ODYva3ZtL0tjb25maWctMjA4LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBYZW4gaHlwZXJjYWxsIGludGVyZmFjZVwmIzM0O1xuYXJjaC94ODYva3ZtL0tjb25maWc6MjA5Olx0ZGVwZW5kcyBvbiBLVk1fWDg2XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTAtXHRoZWxwXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MjE2PWNvbmZpZyBLVk1fUFJPVkVfTU1VXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjE4LVx0ZGVwZW5kcyBvbiBERUJVR19LRVJORUxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxOTpcdGRlcGVuZHMgb24gS1ZNX1g4NlxuYXJjaC94ODYva3ZtL0tjb25maWctMjIwLVx0ZGVwZW5kcyBvbiBFWFBFUlRcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0yMzI9Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMy1cdGludCBcJiMzNDtNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XCYjMzQ7XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzQ6XHRkZXBlbmRzIG9uIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzNS1cdHJhbmdlIDEwMjQgNDA5NlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwODozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MTU4CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biByZWFzb25pbmc6CgoqKkRlcGVuZGVuY3kgQ2hlY2s6IEtWTV9YRU4gYW5kIEtWTV9YODYqKgoKQWxyaWdodCwgc28gdGhlIGFyY2hpdGVjdHVyZSBvZiB0aGlzIHNldHVwIHN1Z2dlc3RzIGBLVk1fWEVOYCBpcyBidWlsdCBvbiB0b3Agb2YgYEtWTV9YODZgLiBUaGlzIGlzbiYjMzk7dCB1bmV4cGVjdGVkLCBidXQgaXQmIzM5O3MgaW1wb3J0YW50IHRvIHZlcmlmeS4gQmVmb3JlIEkgcHJvY2VlZCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgS1ZNX1g4NmAgaXMgcHJvcGVybHkgY29uZmlndXJlZCBhbmQgZnVuY3Rpb25pbmcgYXMgZXhwZWN0ZWQuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2suIExldCBtZSB0YWtlIGEgbG9vayBhdCB0aGUgc3RhdHVzIG9mIGBLVk1fWDg2YCBmaXJzdC4gVGhpcyBpcyBhIGNyaXRpY2FsIHByZXJlcXVpc2l0ZSwgYW5kIEkgbmVlZCB0byBjb25maXJtIGl0cyBpbnRlZ3JpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA2IDA4OjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk1fWDg2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxLVx0ZGVmX3RyaXN0YXRlIEtWTSBpZiAoS1ZNX0lOVEVMICE9IG4gfHwgS1ZNX0FNRCAhPSBuKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwODozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDg2CgkJCQkJCQlvdXRwdXQ6IDE4MgoJCQkJCQkJdGhvdWdodHM6IDEwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIGluZm9ybWF0aW9uLCB0aGlua2luZyBpdCB0aHJvdWdoIGZyb20gYSB0ZWNobmljYWwgcGVyc3BlY3RpdmUuCgoqKktWTS9YZW4gRXZlbnRmZCBDb25maWd1cmF0aW9uIC0gQSBRdWljayBPdmVydmlldyoqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBLVk0gYW5kIEtWTV9YRU4gY29uZmlndXJhdGlvbnMgYXJlIGhhbmRsZWQuIFNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHRoZSBjb3JlIGVsZW1lbnRzIEkgbmVlZCB0byBmb2N1cyBvbiBhcmUgdGhlc2Ugc3BlY2lmaWMgZnVuY3Rpb25zIHRoYXQgZGVhbCBkaXJlY3RseSB3aXRoIGV2ZW50ZmRzLiBJIG5lZWQgdG8gYmUgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIHR3by4KCkl0JiMzOTtzIGNsZWFyIHRoYXQgdGhlc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zOiBga3ZtX3hlbl9ldmVudGZkX3VwZGF0ZWAsIGBrdm1feGVuX2V2ZW50ZmRfYXNzaWduYCwgYGt2bV94ZW5fZXZlbnRmZF9kZWFzc2lnbmAsIGBrdm1feGVuX2V2ZW50ZmRfcmVzZXRgLCBhbmQgYGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmRgLiBJJiMzOTttIGFscmVhZHkgdmlzdWFsaXppbmcgaG93IHRoZXNlIGZ1bmN0aW9ucyBtYXAgb3V0IHRoZSBsaWZlY3ljbGUgb2YgdGhlIGV2ZW50ZmRzIGluIHRoZSBzeXN0ZW0uIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gc3BlY2lmeSB0aGUgbmF0dXJlIG9mIHRoaXMgcmVsYXRpb25zaGlwIGluIHRoZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNiAwODozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDssCiAgICAmIzM0O0tWTV9YRU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1feGVuX2V2ZW50ZmRfdXBkYXRlJiMzNDssCiAgICAmIzM0O2t2bV94ZW5fZXZlbnRmZF9hc3NpZ24mIzM0OywKICAgICYjMzQ7a3ZtX3hlbl9ldmVudGZkX2RlYXNzaWduJiMzNDssCiAgICAmIzM0O2t2bV94ZW5fZXZlbnRmZF9yZXNldCYjMzQ7LAogICAgJiMzNDtrdm1feGVuX2hjYWxsX2V2dGNobl9zZW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIHRoZSBJRFIgZGF0YSBzdHJ1Y3R1cmUgd2l0aCBYQXJyYXkgZm9yIG1hbmFnaW5nIFhlbiBldmVudCBjaGFubmVsIHBvcnRzIGluIEtWTS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gWGVuIGVtdWxhdGlvbiBjb2RlLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMgYW5kIGh5cGVyY2FsbHMuIEZ1enppbmcgaXMgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHRoZSBuZXcgWEFycmF5IGltcGxlbWVudGF0aW9uIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGJ1Z3MgbGlrZSB1c2UtYWZ0ZXItZnJlZSBvciBtZW1vcnkgbGVha3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7LAogICAgJiMzNDtLVk1fWEVOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3hlbl9ldmVudGZkX3VwZGF0ZSYjMzQ7LAogICAgJiMzNDtrdm1feGVuX2V2ZW50ZmRfYXNzaWduJiMzNDssCiAgICAmIzM0O2t2bV94ZW5fZXZlbnRmZF9kZWFzc2lnbiYjMzQ7LAogICAgJiMzNDtrdm1feGVuX2V2ZW50ZmRfcmVzZXQmIzM0OywKICAgICYjMzQ7a3ZtX3hlbl9oY2FsbF9ldnRjaG5fc2VuZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyB0aGUgSURSIGRhdGEgc3RydWN0dXJlIHdpdGggWEFycmF5IGZvciBtYW5hZ2luZyBYZW4gZXZlbnQgY2hhbm5lbCBwb3J0cyBpbiBLVk0uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgS1ZNIFhlbiBlbXVsYXRpb24gY29kZSwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIGFuZCBoeXBlcmNhbGxzLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgbmV3IFhBcnJheSBpbXBsZW1lbnRhdGlvbiB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBidWdzIGxpa2UgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGxlYWtzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDZUMDg6MzM6MjMuODkzMzIyMjY1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc2NzU2MDE0MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCIsXG4gICAgXCJLVk1fWEVOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3hlbl9ldmVudGZkX3VwZGF0ZVwiLFxuICAgIFwia3ZtX3hlbl9ldmVudGZkX2Fzc2lnblwiLFxuICAgIFwia3ZtX3hlbl9ldmVudGZkX2RlYXNzaWduXCIsXG4gICAgXCJrdm1feGVuX2V2ZW50ZmRfcmVzZXRcIixcbiAgICBcImt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyB0aGUgSURSIGRhdGEgc3RydWN0dXJlIHdpdGggWEFycmF5IGZvciBtYW5hZ2luZyBYZW4gZXZlbnQgY2hhbm5lbCBwb3J0cyBpbiBLVk0uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgS1ZNIFhlbiBlbXVsYXRpb24gY29kZSwgd2hpY2ggaXMgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIGFuZCBoeXBlcmNhbGxzLiBGdXp6aW5nIGlzIHJlY29tbWVuZGVkIHRvIGVuc3VyZSB0aGUgbmV3IFhBcnJheSBpbXBsZW1lbnRhdGlvbiB3b3JrcyBjb3JyZWN0bHkgYW5kIGRvZXMgbm90IGludHJvZHVjZSBidWdzIGxpa2UgdXNlLWFmdGVyLWZyZWUgb3IgbWVtb3J5IGxlYWtzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODozMzoyMy44OTMzMjg1MzVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzI1NTg4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDY4YWQwNGMyMDY0YWJkNjk5ZmI2NWYyODNiNjUyYmMzOTU1ZDdhNjVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgNiAwODozMzoyMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxcbmluZGV4IGI1MTcyNTdhNjMxNTMyLi4wNjQwODM3NTVmYWIwZCAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oXFxuKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxcbkBAIC0xNiw2ICsxNiw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pcnFfd29yay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaXJxLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC93b3JrcXVldWUuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3hhcnJheS5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2t2bS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgva3ZtX3BhcmEuaFxcdTAwM2VcXG5AQCAtMTI4Niw3ICsxMjg3LDcgQEAgc3RydWN0IGt2bV94ZW4ge1xcbiBcXHRib29sIHJ1bnN0YXRlX3VwZGF0ZV9mbGFnO1xcbiBcXHR1OCB1cGNhbGxfdmVjdG9yO1xcbiBcXHRzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSBzaGluZm9fY2FjaGU7XFxuLVxcdHN0cnVjdCBpZHIgZXZ0Y2huX3BvcnRzO1xcbitcXHRzdHJ1Y3QgeGFycmF5IGV2dGNobl9wb3J0cztcXG4gXFx0dW5zaWduZWQgbG9uZyBwb2xsX21hc2tbQklUU19UT19MT05HUyhLVk1fTUFYX1ZDUFVTKV07XFxuIFxcbiBcXHRzdHJ1Y3Qga3ZtX3hlbl9odm1fY29uZmlnIGh2bV9jb25maWc7XFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ZW4uYyBiL2FyY2gveDg2L2t2bS94ZW4uY1xcbmluZGV4IDY5NGIzMWMxZmNjOWFmLi43NTQxOTFlM2JlZjdhYSAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0veGVuLmNcXG4rKysgYi9hcmNoL3g4Ni9rdm0veGVuLmNcXG5AQCAtMjA3Miw3ICsyMDcyLDcgQEAgc3RhdGljIGludCBrdm1feGVuX2V2ZW50ZmRfdXBkYXRlKHN0cnVjdCBrdm0gKmt2bSxcXG4gXFxuIFxcdC8qIFByb3RlY3Qgd3JpdGVzIHRvIGV2dGNobmZkIGFzIHdlbGwgYXMgdGhlIGlkciBsb29rdXAuICAqL1xcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gueGVuLnhlbl9sb2NrKTtcXG4tXFx0ZXZ0Y2huZmQgPSBpZHJfZmluZChcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIHBvcnQpO1xcbitcXHRldnRjaG5mZCA9IHhhX2xvYWQoXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBwb3J0KTtcXG4gXFxuIFxcdHJldCA9IC1FTk9FTlQ7XFxuIFxcdGlmICghZXZ0Y2huZmQpXFxuQEAgLTIxNjYsMTMgKzIxNjYsMTMgQEAgc3RhdGljIGludCBrdm1feGVuX2V2ZW50ZmRfYXNzaWduKHN0cnVjdCBrdm0gKmt2bSxcXG4gXFx0fVxcbiBcXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLnhlbi54ZW5fbG9jayk7XFxuLVxcdHJldCA9IGlkcl9hbGxvYyhcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIGV2dGNobmZkLCBwb3J0LCBwb3J0ICsgMSxcXG4rXFx0cmV0ID0geGFfaW5zZXJ0KFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgcG9ydCwgZXZ0Y2huZmQsXFxuIFxcdFxcdFxcdEdGUF9LRVJORUwpO1xcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC54ZW4ueGVuX2xvY2spO1xcbi1cXHRpZiAocmV0IFxcdTAwM2U9IDApXFxuK1xcdGlmICghcmV0KVxcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFxuLVxcdGlmIChyZXQgPT0gLUVOT1NQQylcXG4rXFx0aWYgKHJldCA9PSAtRUJVU1kpXFxuIFxcdFxcdHJldCA9IC1FRVhJU1Q7XFxuIG91dDpcXG4gXFx0aWYgKGV2ZW50ZmQpXFxuQEAgLTIxODcsNyArMjE4Nyw3IEBAIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX2RlYXNzaWduKHN0cnVjdCBrdm0gKmt2bSwgdTMyIHBvcnQpXFxuIFxcdHN0cnVjdCBldnRjaG5mZCAqZXZ0Y2huZmQ7XFxuIFxcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gueGVuLnhlbl9sb2NrKTtcXG4tXFx0ZXZ0Y2huZmQgPSBpZHJfcmVtb3ZlKFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgcG9ydCk7XFxuK1xcdGV2dGNobmZkID0geGFfZXJhc2UoXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBwb3J0KTtcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gueGVuLnhlbl9sb2NrKTtcXG4gXFxuIFxcdGlmICghZXZ0Y2huZmQpXFxuQEAgLTIyMDMsNyArMjIwMyw3IEBAIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX2RlYXNzaWduKHN0cnVjdCBrdm0gKmt2bSwgdTMyIHBvcnQpXFxuIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3Jlc2V0KHN0cnVjdCBrdm0gKmt2bSlcXG4ge1xcbiBcXHRzdHJ1Y3QgZXZ0Y2huZmQgKmV2dGNobmZkLCAqKmFsbF9ldnRjaG5mZHM7XFxuLVxcdGludCBpO1xcbitcXHR1bnNpZ25lZCBsb25nIGk7XFxuIFxcdGludCBuID0gMDtcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC54ZW4ueGVuX2xvY2spO1xcbkBAIC0yMjEzLDcgKzIyMTMsNyBAQCBzdGF0aWMgaW50IGt2bV94ZW5fZXZlbnRmZF9yZXNldChzdHJ1Y3Qga3ZtICprdm0pXFxuIFxcdCAqIGNyaXRpY2FsIHNlY3Rpb24sIGZpcnN0IGNvbGxlY3QgYWxsIHRoZSBldnRjaG5mZCBvYmplY3RzXFxuIFxcdCAqIGluIGFuIGFycmF5IGFzIHRoZXkgYXJlIHJlbW92ZWQgZnJvbSBldnRjaG5fcG9ydHMuXFxuIFxcdCAqL1xcbi1cXHRpZHJfZm9yX2VhY2hfZW50cnkoXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBldnRjaG5mZCwgaSlcXG4rXFx0eGFfZm9yX2VhY2goXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBpLCBldnRjaG5mZClcXG4gXFx0XFx0bisrO1xcbiBcXG4gXFx0YWxsX2V2dGNobmZkcyA9IGttYWxsb2Nfb2JqcyhzdHJ1Y3QgZXZ0Y2huZmQgKiwgbik7XFxuQEAgLTIyMjMsOSArMjIyMyw5IEBAIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3Jlc2V0KHN0cnVjdCBrdm0gKmt2bSlcXG4gXFx0fVxcbiBcXG4gXFx0biA9IDA7XFxuLVxcdGlkcl9mb3JfZWFjaF9lbnRyeShcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIGV2dGNobmZkLCBpKSB7XFxuK1xcdHhhX2Zvcl9lYWNoKFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgaSwgZXZ0Y2huZmQpIHtcXG4gXFx0XFx0YWxsX2V2dGNobmZkc1tuKytdID0gZXZ0Y2huZmQ7XFxuLVxcdFxcdGlkcl9yZW1vdmUoXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBldnRjaG5mZC1cXHUwMDNlc2VuZF9wb3J0KTtcXG4rXFx0XFx0eGFfZXJhc2UoXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBldnRjaG5mZC1cXHUwMDNlc2VuZF9wb3J0KTtcXG4gXFx0fVxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC54ZW4ueGVuX2xvY2spO1xcbiBcXG5AQCAtMjI3NiwxMiArMjI3NiwxMCBAQCBzdGF0aWMgYm9vbCBrdm1feGVuX2hjYWxsX2V2dGNobl9zZW5kKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHBhcmFtLCB1NjQgKnIpXFxuIFxcdH1cXG4gXFxuIFxcdC8qXFxuLVxcdCAqIGV2dGNobmZkIGlzIHByb3RlY3RlZCBieSBrdm0tXFx1MDAzZXNyY3U7IHRoZSBpZHIgbG9va3VwIGluc3RlYWRcXG4tXFx0ICogaXMgcHJvdGVjdGVkIGJ5IFJDVS5cXG4rXFx0ICogZXZ0Y2huZmQgaXMgcHJvdGVjdGVkIGJ5IGt2bS1cXHUwMDNlc3JjdTsgdGhlIHhhX2xvYWQgaXMgUkNVLXNhZmVcXG4rXFx0ICogaW50ZXJuYWxseSwgbm8gZXhwbGljaXQgcmN1X3JlYWRfbG9jaygpIG5lZWRlZC5cXG4gXFx0ICovXFxuLVxcdHJjdV9yZWFkX2xvY2soKTtcXG4tXFx0ZXZ0Y2huZmQgPSBpZHJfZmluZChcXHUwMDI2dmNwdS1cXHUwMDNla3ZtLVxcdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIHNlbmQucG9ydCk7XFxuLVxcdHJjdV9yZWFkX3VubG9jaygpO1xcbitcXHRldnRjaG5mZCA9IHhhX2xvYWQoXFx1MDAyNnZjcHUtXFx1MDAzZWt2bS1cXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBzZW5kLnBvcnQpO1xcbiBcXHRpZiAoIWV2dGNobmZkKVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcbkBAIC0yMzI4LDIzICsyMzI2LDIzIEBAIHZvaWQga3ZtX3hlbl9kZXN0cm95X3ZjcHUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiB2b2lkIGt2bV94ZW5faW5pdF92bShzdHJ1Y3Qga3ZtICprdm0pXFxuIHtcXG4gXFx0bXV0ZXhfaW5pdChcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLnhlbi54ZW5fbG9jayk7XFxuLVxcdGlkcl9pbml0KFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cyk7XFxuK1xcdHhhX2luaXQoXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzKTtcXG4gXFx0a3ZtX2dwY19pbml0KFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gueGVuLnNoaW5mb19jYWNoZSwga3ZtKTtcXG4gfVxcbiBcXG4gdm9pZCBrdm1feGVuX2Rlc3Ryb3lfdm0oc3RydWN0IGt2bSAqa3ZtKVxcbiB7XFxuIFxcdHN0cnVjdCBldnRjaG5mZCAqZXZ0Y2huZmQ7XFxuLVxcdGludCBpO1xcbitcXHR1bnNpZ25lZCBsb25nIGk7XFxuIFxcbiBcXHRrdm1fZ3BjX2RlYWN0aXZhdGUoXFx1MDAyNmt2bS1cXHUwMDNlYXJjaC54ZW4uc2hpbmZvX2NhY2hlKTtcXG4gXFxuLVxcdGlkcl9mb3JfZWFjaF9lbnRyeShcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIGV2dGNobmZkLCBpKSB7XFxuK1xcdHhhX2Zvcl9lYWNoKFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgaSwgZXZ0Y2huZmQpIHtcXG4gXFx0XFx0aWYgKCFldnRjaG5mZC1cXHUwMDNlZGVsaXZlci5wb3J0LnBvcnQpXFxuIFxcdFxcdFxcdGV2ZW50ZmRfY3R4X3B1dChldnRjaG5mZC1cXHUwMDNlZGVsaXZlci5ldmVudGZkLmN0eCk7XFxuIFxcdFxcdGtmcmVlKGV2dGNobmZkKTtcXG4gXFx0fVxcbi1cXHRpZHJfZGVzdHJveShcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMpO1xcbitcXHR4YV9kZXN0cm95KFxcdTAwMjZrdm0tXFx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cyk7XFxuIFxcbiBcXHRpZiAoa3ZtLVxcdTAwM2VhcmNoLnhlbi5odm1fY29uZmlnLm1zcilcXG4gXFx0XFx0c3RhdGljX2JyYW5jaF9zbG93X2RlY19kZWZlcnJlZChcXHUwMDI2a3ZtX3hlbl9lbmFibGVkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDg6MzM6MjQuMzI3NDY5ODkzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzI0MTQ0MjQyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIktWTV9YRU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1feGVuX2V2ZW50ZmRfdXBkYXRlXCIsXG4gICAgXCJrdm1feGVuX2V2ZW50ZmRfYXNzaWduXCIsXG4gICAgXCJrdm1feGVuX2V2ZW50ZmRfZGVhc3NpZ25cIixcbiAgICBcImt2bV94ZW5fZXZlbnRmZF9yZXNldFwiLFxuICAgIFwia3ZtX3hlbl9oY2FsbF9ldnRjaG5fc2VuZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIHRoZSBJRFIgZGF0YSBzdHJ1Y3R1cmUgd2l0aCBYQXJyYXkgZm9yIG1hbmFnaW5nIFhlbiBldmVudCBjaGFubmVsIHBvcnRzIGluIEtWTS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gWGVuIGVtdWxhdGlvbiBjb2RlLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMgYW5kIGh5cGVyY2FsbHMuIEZ1enppbmcgaXMgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHRoZSBuZXcgWEFycmF5IGltcGxlbWVudGF0aW9uIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGJ1Z3MgbGlrZSB1c2UtYWZ0ZXItZnJlZSBvciBtZW1vcnkgbGVha3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNjhhZDA0YzIwNjRhYmQ2OTlmYjY1ZjI4M2I2NTJiYzM5NTVkN2E2NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDYgMDg6MzM6MjIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuaW5kZXggYjUxNzI1N2E2MzE1MzIuLjA2NDA4Mzc1NWZhYjBkIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaFxuQEAgLTE2LDYgKzE2LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pcnFfd29yay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaXJxLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC93b3JrcXVldWUuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3hhcnJheS5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva3ZtLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rdm1fcGFyYS5oXHUwMDNlXG5AQCAtMTI4Niw3ICsxMjg3LDcgQEAgc3RydWN0IGt2bV94ZW4ge1xuIFx0Ym9vbCBydW5zdGF0ZV91cGRhdGVfZmxhZztcbiBcdHU4IHVwY2FsbF92ZWN0b3I7XG4gXHRzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSBzaGluZm9fY2FjaGU7XG4tXHRzdHJ1Y3QgaWRyIGV2dGNobl9wb3J0cztcbitcdHN0cnVjdCB4YXJyYXkgZXZ0Y2huX3BvcnRzO1xuIFx0dW5zaWduZWQgbG9uZyBwb2xsX21hc2tbQklUU19UT19MT05HUyhLVk1fTUFYX1ZDUFVTKV07XG4gXG4gXHRzdHJ1Y3Qga3ZtX3hlbl9odm1fY29uZmlnIGh2bV9jb25maWc7XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3hlbi5jIGIvYXJjaC94ODYva3ZtL3hlbi5jXG5pbmRleCA2OTRiMzFjMWZjYzlhZi4uNzU0MTkxZTNiZWY3YWEgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0veGVuLmNcbisrKyBiL2FyY2gveDg2L2t2bS94ZW4uY1xuQEAgLTIwNzIsNyArMjA3Miw3IEBAIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3VwZGF0ZShzdHJ1Y3Qga3ZtICprdm0sXG4gXG4gXHQvKiBQcm90ZWN0IHdyaXRlcyB0byBldnRjaG5mZCBhcyB3ZWxsIGFzIHRoZSBpZHIgbG9va3VwLiAgKi9cbiBcdG11dGV4X2xvY2soXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLnhlbl9sb2NrKTtcbi1cdGV2dGNobmZkID0gaWRyX2ZpbmQoXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgcG9ydCk7XG4rXHRldnRjaG5mZCA9IHhhX2xvYWQoXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgcG9ydCk7XG4gXG4gXHRyZXQgPSAtRU5PRU5UO1xuIFx0aWYgKCFldnRjaG5mZClcbkBAIC0yMTY2LDEzICsyMTY2LDEzIEBAIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX2Fzc2lnbihzdHJ1Y3Qga3ZtICprdm0sXG4gXHR9XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi54ZW5fbG9jayk7XG4tXHRyZXQgPSBpZHJfYWxsb2MoXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgZXZ0Y2huZmQsIHBvcnQsIHBvcnQgKyAxLFxuK1x0cmV0ID0geGFfaW5zZXJ0KFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIHBvcnQsIGV2dGNobmZkLFxuIFx0XHRcdEdGUF9LRVJORUwpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi54ZW5fbG9jayk7XG4tXHRpZiAocmV0IFx1MDAzZT0gMClcbitcdGlmICghcmV0KVxuIFx0XHRyZXR1cm4gMDtcbiBcbi1cdGlmIChyZXQgPT0gLUVOT1NQQylcbitcdGlmIChyZXQgPT0gLUVCVVNZKVxuIFx0XHRyZXQgPSAtRUVYSVNUO1xuIG91dDpcbiBcdGlmIChldmVudGZkKVxuQEAgLTIxODcsNyArMjE4Nyw3IEBAIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX2RlYXNzaWduKHN0cnVjdCBrdm0gKmt2bSwgdTMyIHBvcnQpXG4gXHRzdHJ1Y3QgZXZ0Y2huZmQgKmV2dGNobmZkO1xuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4ueGVuX2xvY2spO1xuLVx0ZXZ0Y2huZmQgPSBpZHJfcmVtb3ZlKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIHBvcnQpO1xuK1x0ZXZ0Y2huZmQgPSB4YV9lcmFzZShcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBwb3J0KTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4ueGVuX2xvY2spO1xuIFxuIFx0aWYgKCFldnRjaG5mZClcbkBAIC0yMjAzLDcgKzIyMDMsNyBAQCBzdGF0aWMgaW50IGt2bV94ZW5fZXZlbnRmZF9kZWFzc2lnbihzdHJ1Y3Qga3ZtICprdm0sIHUzMiBwb3J0KVxuIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3Jlc2V0KHN0cnVjdCBrdm0gKmt2bSlcbiB7XG4gXHRzdHJ1Y3QgZXZ0Y2huZmQgKmV2dGNobmZkLCAqKmFsbF9ldnRjaG5mZHM7XG4tXHRpbnQgaTtcbitcdHVuc2lnbmVkIGxvbmcgaTtcbiBcdGludCBuID0gMDtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLnhlbl9sb2NrKTtcbkBAIC0yMjEzLDcgKzIyMTMsNyBAQCBzdGF0aWMgaW50IGt2bV94ZW5fZXZlbnRmZF9yZXNldChzdHJ1Y3Qga3ZtICprdm0pXG4gXHQgKiBjcml0aWNhbCBzZWN0aW9uLCBmaXJzdCBjb2xsZWN0IGFsbCB0aGUgZXZ0Y2huZmQgb2JqZWN0c1xuIFx0ICogaW4gYW4gYXJyYXkgYXMgdGhleSBhcmUgcmVtb3ZlZCBmcm9tIGV2dGNobl9wb3J0cy5cbiBcdCAqL1xuLVx0aWRyX2Zvcl9lYWNoX2VudHJ5KFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIGV2dGNobmZkLCBpKVxuK1x0eGFfZm9yX2VhY2goXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgaSwgZXZ0Y2huZmQpXG4gXHRcdG4rKztcbiBcbiBcdGFsbF9ldnRjaG5mZHMgPSBrbWFsbG9jX29ianMoc3RydWN0IGV2dGNobmZkICosIG4pO1xuQEAgLTIyMjMsOSArMjIyMyw5IEBAIHN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3Jlc2V0KHN0cnVjdCBrdm0gKmt2bSlcbiBcdH1cbiBcbiBcdG4gPSAwO1xuLVx0aWRyX2Zvcl9lYWNoX2VudHJ5KFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIGV2dGNobmZkLCBpKSB7XG4rXHR4YV9mb3JfZWFjaChcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBpLCBldnRjaG5mZCkge1xuIFx0XHRhbGxfZXZ0Y2huZmRzW24rK10gPSBldnRjaG5mZDtcbi1cdFx0aWRyX3JlbW92ZShcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBldnRjaG5mZC1cdTAwM2VzZW5kX3BvcnQpO1xuK1x0XHR4YV9lcmFzZShcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzLCBldnRjaG5mZC1cdTAwM2VzZW5kX3BvcnQpO1xuIFx0fVxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi54ZW5fbG9jayk7XG4gXG5AQCAtMjI3NiwxMiArMjI3NiwxMCBAQCBzdGF0aWMgYm9vbCBrdm1feGVuX2hjYWxsX2V2dGNobl9zZW5kKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHBhcmFtLCB1NjQgKnIpXG4gXHR9XG4gXG4gXHQvKlxuLVx0ICogZXZ0Y2huZmQgaXMgcHJvdGVjdGVkIGJ5IGt2bS1cdTAwM2VzcmN1OyB0aGUgaWRyIGxvb2t1cCBpbnN0ZWFkXG4tXHQgKiBpcyBwcm90ZWN0ZWQgYnkgUkNVLlxuK1x0ICogZXZ0Y2huZmQgaXMgcHJvdGVjdGVkIGJ5IGt2bS1cdTAwM2VzcmN1OyB0aGUgeGFfbG9hZCBpcyBSQ1Utc2FmZVxuK1x0ICogaW50ZXJuYWxseSwgbm8gZXhwbGljaXQgcmN1X3JlYWRfbG9jaygpIG5lZWRlZC5cbiBcdCAqL1xuLVx0cmN1X3JlYWRfbG9jaygpO1xuLVx0ZXZ0Y2huZmQgPSBpZHJfZmluZChcdTAwMjZ2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIHNlbmQucG9ydCk7XG4tXHRyY3VfcmVhZF91bmxvY2soKTtcbitcdGV2dGNobmZkID0geGFfbG9hZChcdTAwMjZ2Y3B1LVx1MDAzZWt2bS1cdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIHNlbmQucG9ydCk7XG4gXHRpZiAoIWV2dGNobmZkKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG5AQCAtMjMyOCwyMyArMjMyNiwyMyBAQCB2b2lkIGt2bV94ZW5fZGVzdHJveV92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiB2b2lkIGt2bV94ZW5faW5pdF92bShzdHJ1Y3Qga3ZtICprdm0pXG4ge1xuIFx0bXV0ZXhfaW5pdChcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4ueGVuX2xvY2spO1xuLVx0aWRyX2luaXQoXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cyk7XG4rXHR4YV9pbml0KFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMpO1xuIFx0a3ZtX2dwY19pbml0KFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi5zaGluZm9fY2FjaGUsIGt2bSk7XG4gfVxuIFxuIHZvaWQga3ZtX3hlbl9kZXN0cm95X3ZtKHN0cnVjdCBrdm0gKmt2bSlcbiB7XG4gXHRzdHJ1Y3QgZXZ0Y2huZmQgKmV2dGNobmZkO1xuLVx0aW50IGk7XG4rXHR1bnNpZ25lZCBsb25nIGk7XG4gXG4gXHRrdm1fZ3BjX2RlYWN0aXZhdGUoXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLnNoaW5mb19jYWNoZSk7XG4gXG4tXHRpZHJfZm9yX2VhY2hfZW50cnkoXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cywgZXZ0Y2huZmQsIGkpIHtcbitcdHhhX2Zvcl9lYWNoKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi5ldnRjaG5fcG9ydHMsIGksIGV2dGNobmZkKSB7XG4gXHRcdGlmICghZXZ0Y2huZmQtXHUwMDNlZGVsaXZlci5wb3J0LnBvcnQpXG4gXHRcdFx0ZXZlbnRmZF9jdHhfcHV0KGV2dGNobmZkLVx1MDAzZWRlbGl2ZXIuZXZlbnRmZC5jdHgpO1xuIFx0XHRrZnJlZShldnRjaG5mZCk7XG4gXHR9XG4tXHRpZHJfZGVzdHJveShcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uZXZ0Y2huX3BvcnRzKTtcbitcdHhhX2Rlc3Ryb3koXHUwMDI2a3ZtLVx1MDAzZWFyY2gueGVuLmV2dGNobl9wb3J0cyk7XG4gXG4gXHRpZiAoa3ZtLVx1MDAzZWFyY2gueGVuLmh2bV9jb25maWcubXNyKVxuIFx0XHRzdGF0aWNfYnJhbmNoX3Nsb3dfZGVjX2RlZmVycmVkKFx1MDAyNmt2bV94ZW5fZW5hYmxlZCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODozMzoyNC4zMjc0NzE3MjNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjU1OTQzMzUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgeGFycmF5LUJhc2VkIEV2dGNobiBQb3J0IFJlcGxhY2VtZW50IGluIEtWTS9YZW4qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCBsb29rcyBsaWtlIHdlJ3JlIHN3YXBwaW5nIG91dCB0aGUgYGlkcmAgZGF0YSBzdHJ1Y3R1cmUgZm9yIGB4YXJyYXlgIGluIHRoZSBLVk0vWGVuIGVtdWxhdGlvbiBjb2RlLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBhcmNoL3g4Ni9rdm0veGVuLmNgLiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlLCBhZmZlY3RpbmcgaG93IHdlIG1hbmFnZSBldmVudCBjaGFubmVsIHBvcnRzLiBUaGUgZnVuY3Rpb25zIHRoYXQgYXJlIGRpcmVjdGx5IGltcGFjdGVkIGFyZSBga3ZtX3hlbl9ldmVudGZkX3VwZGF0ZWAsIGBrdm1feGVuX2V2ZW50ZmRfYXNzaWduYCwgYGt2bV94ZW5fZXZlbnRmZF9kZWFzc2lnbmAsIGBrdm1feGVuX2V2ZW50ZmRfcmVzZXRgLCBga3ZtX3hlbl9oY2FsbF9ldnRjaG5fc2VuZGAsIGBrdm1feGVuX2luaXRfdm1gLCBhbmQgYGt2bV94ZW5fZGVzdHJveV92bWAuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byB2ZXJpZnkgdGhhdCB0aGlzIGNvZGUgcGF0aCBpcyBhY3R1YWxseSBoaXQgdW5kZXIgcmVhbGlzdGljIGNvbmRpdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9ucyBuZWNlc3NhcnkgdG8gZ2V0IHRoaXMgYWN0aXZlLiAgSSdsbCBzdGFydCBieSBjaGVja2luZyBpZiB0aGlzIGlzIGVuYWJsZWQgdmlhIGNvbmZpZyBvcHRpb25zLiBTbyBJIGFtIGdvaW5nIHRvIHNlYXJjaCBmb3IgY2FsbHMgdG8gYGt2bV94ZW5fZXZlbnRmZF9hc3NpZ25gIG9yIGBrdm1feGVuX2V2ZW50ZmRfdXBkYXRlYCBpbiB0aGUgY29kZWJhc2UuIFRoYXQgd2lsbCBnaXZlIG1lIHNvbWUgaW5zaWdodCBpbnRvIHdoZXJlIHRoaXMgY29kZSBpcyBjYWxsZWQgZnJvbSBhbmQgd2hhdCB0cmlnZ2VycyBpdHMgZXhlY3V0aW9uLiAgVGhpcyBpcyBhIGNyaXRpY2FsIGZpcnN0IHN0ZXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgYmVmb3JlIEkgY2FuIGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBzd2l0Y2ggdG8gYHhhcnJheWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MDQsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODozMzoyOS41ODM0MTY4MzZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAxNDQ1NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3hlbl9ldmVudGZkX2Fzc2lnblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS94ZW4uYz0yMDY2PXN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3VwZGF0ZShzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjExMi0gKi9cXG5hcmNoL3g4Ni9rdm0veGVuLmM6MjExMzpzdGF0aWMgaW50IGt2bV94ZW5fZXZlbnRmZF9hc3NpZ24oc3RydWN0IGt2bSAqa3ZtLFxcbmFyY2gveDg2L2t2bS94ZW4uYy0yMTE0LVxcdFxcdFxcdFxcdCAgc3RydWN0IGt2bV94ZW5faHZtX2F0dHIgKmRhdGEpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmM9MjI0NT1zdGF0aWMgaW50IGt2bV94ZW5fc2V0YXR0cl9ldnRjaG4oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3hlbl9odm1fYXR0ciAqZGF0YSlcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYy0yMjYxLVxcbmFyY2gveDg2L2t2bS94ZW4uYzoyMjYyOlxcdHJldHVybiBrdm1feGVuX2V2ZW50ZmRfYXNzaWduKGt2bSwgZGF0YSk7XFxuYXJjaC94ODYva3ZtL3hlbi5jLTIyNjMtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODozMzoyOS42NDM1NzE1NDJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzEwODI5OTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdC5cblxuKipBbmFseXppbmcgdGhlIEZ1bmN0aW9uIENhbGwgUGF0aCoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSXQgc2VlbXMgd2UncmUgZGVhbGluZyB3aXRoIGEgZnVuY3Rpb24gbmFtZWQgYGt2bV94ZW5fc2V0YXR0cl9ldnRjaG5gLiBUaGUga2V5IGhlcmUgaXMgdGhhdCBcImV2dGNoblwiIHN0cm9uZ2x5IHN1Z2dlc3RzIHdlJ3JlIHdvcmtpbmcgd2l0aGluIHRoZSBjb250ZXh0IG9mIFhlbiBldmVudCBjaGFubmVscywgd2hpY2ggbWVhbnMgaXQncyBsaWtlbHkgZGVhbGluZyB3aXRoIGNvbW11bmljYXRpb24gb3IgaW50ZXJydXB0cyB3aXRoaW4gYSBYZW4gdmlydHVhbCBtYWNoaW5lIGVudmlyb25tZW50LiBOb3csIHRoZSBoaW50IHRoYXQgdGhpcyBtaWdodCBiZSBjb25uZWN0ZWQgdG8gYW4gYGlvY3RsYCBjYWxsIGlzIGNydWNpYWwuIElvY3RscyBhcmUgdGhlIGNsYXNzaWMgbWVjaGFuaXNtIGZvciB1c2VyLXNwYWNlIHByb2dyYW1zIHRvIGlzc3VlIGRldmljZS1zcGVjaWZpYyBjb21tYW5kcyB0byB0aGUga2VybmVsLiBTbywgdGhlIGxpa2VseSBzY2VuYXJpbyBpcyB0aGF0IGEgdXNlci1zcGFjZSBwcm9ncmFtIGlzIGlzc3VpbmcgYSBjb21tYW5kIHRocm91Z2ggYW4gYGlvY3RsYCwgYW5kIHRoaXMsIGluIHR1cm4sIGlzIGNhbGxpbmcgYGt2bV94ZW5fc2V0YXR0cl9ldnRjaG5gIGF0IHNvbWUgcG9pbnQgaW4gdGhlIGNoYWluLiBJIG5lZWQgdG8gdHJhY2UgdGhlIHBhdGggYW5kIHZlcmlmeSB0aGlzIGFzc3VtcHRpb24uIFdlIHNob3VsZCBiZSBhYmxlIHRvIGxvb2sgYXQgdGhlIGtlcm5lbCBjb2RlIGZvciB0aGUgYGt2bV94ZW5fc2V0YXR0cl9ldnRjaG5gIGZ1bmN0aW9uIHRvIHVuZGVyc3RhbmQgbW9yZSBhYm91dCBpdHMgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1NDYsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODozMzozMi45NTQ0MDQzMThaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY3NTUyMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3hlbl9zZXRhdHRyX2V2dGNoblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS94ZW4uYz0zMj1zdGF0aWMgaW50IGt2bV94ZW5fc2V0X2V2dGNobihzdHJ1Y3Qga3ZtX3hlbl9ldnRjaG4gKnhlLCBzdHJ1Y3Qga3ZtICprdm0pO1xcbmFyY2gveDg2L2t2bS94ZW4uYzozMzpzdGF0aWMgaW50IGt2bV94ZW5fc2V0YXR0cl9ldnRjaG4oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3hlbl9odm1fYXR0ciAqZGF0YSk7XFxuYXJjaC94ODYva3ZtL3hlbi5jLTM0LXN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgcGFyYW0sIHU2NCAqcik7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmM9NzQ2PWludCBrdm1feGVuX2h2bV9zZXRfYXR0cihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1feGVuX2h2bV9hdHRyICpkYXRhKVxcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jLTgyMi1cXHRjYXNlIEtWTV9YRU5fQVRUUl9UWVBFX0VWVENITjpcXG5hcmNoL3g4Ni9rdm0veGVuLmM6ODIzOlxcdFxcdHIgPSBrdm1feGVuX3NldGF0dHJfZXZ0Y2huKGt2bSwgZGF0YSk7XFxuYXJjaC94ODYva3ZtL3hlbi5jLTgyNC1cXHRcXHRicmVhaztcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYz0yMjAzPXN0YXRpYyBpbnQga3ZtX3hlbl9ldmVudGZkX3Jlc2V0KHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYy0yMjQ0LVxcbmFyY2gveDg2L2t2bS94ZW4uYzoyMjQ1OnN0YXRpYyBpbnQga3ZtX3hlbl9zZXRhdHRyX2V2dGNobihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1feGVuX2h2bV9hdHRyICpkYXRhKVxcbmFyY2gveDg2L2t2bS94ZW4uYy0yMjQ2LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDg6MzM6MzMuMDExMTY1Njc0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQxNTMwNTM1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIEtWTS1YZW4gSFZNIEF0dHJpYnV0ZSBTZXR0aW5nKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBrdm1feGVuX2h2bV9zZXRfYXR0cmAgaXMgYmVpbmcgaW52b2tlZC4gVGhlIGNvbnRleHQgc3VnZ2VzdHMgaXQncyBiZWluZyBjYWxsZWQsIG9yIGNvdWxkIGJlIGNhbGxlZCwgZnJvbSBga3ZtX2FyY2hfdm1faW9jdGxgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBsaWtlbHkgd2l0aGluIHRoZSBLVk0gYXJjaGl0ZWN0dXJlLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBjYWxsLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgY29yZSB4ODYgS1ZNIGNvZGUsIHNpbmNlIHdlJ3JlIGRlYWxpbmcgd2l0aCB4ODYgdmlydHVhbGl6YXRpb24gYW5kIHNvbWV0aGluZyBYZW4tcmVsYXRlZC4gU3BlY2lmaWNhbGx5LCB0aGUgZmlsZSBJJ20gZ29pbmcgdG8gbG9vayBhdCBpcyBgYXJjaC94ODYva3ZtL3g4Ni5jYC4gVGhhdCdzIHdoZXJlIEkgd291bGQgZXhwZWN0IHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb3IgcmVmZXJlbmNlIHRvIGBLVk1fWEVOX0hWTV9TRVRfQVRUUmAsIGFuZCB0aHVzIHRoZSBjb250ZXh0IEkgYW0gbG9va2luZyBmb3IuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBkaWcgdXAgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNzUsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODozMzozNi40MjY0NzMxOTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkzODI1NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiS1ZNX1hFTl9IVk1fU0VUX0FUVFJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0veDg2LmM9NDM1ND1pbnQga3ZtX2FyY2hfdm1faW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNDYwMy1cXHR9XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjQ2MDQ6XFx0Y2FzZSBLVk1fWEVOX0hWTV9TRVRfQVRUUjoge1xcbmFyY2gveDg2L2t2bS94ODYuYy00NjA1LVxcdFxcdHN0cnVjdCBrdm1feGVuX2h2bV9hdHRyIHhoYTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDg6MzM6MzYuNDg1ODYwNjc4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM1NjUxNzE1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLVk0gWGVuIEVtdWxhdGlvbiBDb25maWd1cmF0aW9uIC0gSW5pdGlhbCBUaG91Z2h0cyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBwb2ludGVkIHRvd2FyZHMgYEtWTV9YRU5fSFZNX1NFVF9BVFRSYCwgd2hpY2ggbG9va3MgbGlrZSB0aGUgZW50cnkgcG9pbnQgZm9yIGNvbmZpZ3VyaW5nIEtWTSdzIFhlbiBIVk0gZW11bGF0aW9uLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIHdoYXQgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBrbm9icyBhcmUgZXZlbiAqYXZhaWxhYmxlKj8gV2hhdCBkb2VzIHRoZSBzeXN0ZW0gbmVlZCB0byBjb25zaWRlcj8gSSdtIHRoaW5raW5nIEknbGwgbmVlZCB0byBkcmlsbCBkb3duIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgY29kZSB0byBnZXQgYSBoYW5kbGUgb24gdGhpcy4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gY2hlY2sgZWl0aGVyIGBhcmNoL3g4Ni9rdm0vS2NvbmZpZ2Agb3IgcG9zc2libHkgdGhlIGBNYWtlZmlsZWAgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LCBgYXJjaC94ODYva3ZtL2AuIFRoZXNlIGFyZSB1c3VhbGx5IHdoZXJlIHRoZSBidWlsZC10aW1lIGFuZCBkZXBlbmRlbmN5IHNldHRpbmdzIHJlc2lkZSwgd2hpY2ggd291bGQgZ2l2ZSBtZSBhIGZyYW1ld29yayBmb3IgdGhlIG9wdGlvbnMgYXZhaWxhYmxlIGZvciB0aGlzIHNldHVwLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc0MSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA4OjMzOjM5Ljg0MjM4MDg5MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMzMDE5MjUxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZW5cXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vTWFrZWZpbGU9MTM9a3ZtLSQoQ09ORklHX0tWTV9IWVBFUlYpICs9IGh5cGVydi5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlOjE0Omt2bS0kKENPTkZJR19LVk1fWEVOKVxcdCs9IHhlbi5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlLTE1LWt2bS0kKENPTkZJR19LVk1fU01NKVxcdCs9IHNtbS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA4OjMzOjQxLjE3MjU4NTY2M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTUzNTA3MjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCBhbiBleHBlcnQncyBtaW5kOlxuXG4qKktlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIHRoZSBjb3JlIGlzc3VlIHNlZW1zIHRvIHJldm9sdmUgYXJvdW5kIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHNwZWNpZmljYWxseSB0aG9zZSByZWxhdGVkIHRvIEtWTSBhbmQgWGVuLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgQ09ORklHX0tWTV9YRU5gIGlzIGRlZmluaXRlbHkgYSBrZXkgcmVxdWlyZW1lbnQuIFRoYXTigJlzIHByb2JhYmx5IHRoZSBicmlkZ2UsIG9yIHRoZSBzcGVjaWZpYyBlbmFibGluZyBjb21wb25lbnQgdGhhdCB0aWVzIHRoZSBLVk0gbW9kdWxlIHRvIFhlbiBmdW5jdGlvbmFsaXR5LiBOYXR1cmFsbHksIGBDT05GSUdfS1ZNYCBpdHNlbGYgaXMgYWxzbyBlc3NlbnRpYWw7IHRoYXQncyB0aGUgYmFzZSBLVk0gc3VwcG9ydC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhpcyBwYXJ0aWN1bGFyIEtWTV9YRU4gY29uZmlnIGludGVyYWN0cyBpbiB0aGUgeDg2IGFyY2hpdGVjdHVyZSwgc28gbXkgbmV4dCBzdGVwIGlzIGNsZWFyIC0gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBjaGVjayBgYXJjaC94ODYva3ZtL0tjb25maWdgIHRvIHNlZSB0aGUgY29uZGl0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGFzc29jaWF0ZWQgd2l0aCBgS1ZNX1hFTmAuIFRoYXQgZmlsZSBpcyB0aGUgbW9zdCBsaWtlbHkgcGxhY2UgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGFuZCBhbnkgcG90ZW50aWFsIHByZS1yZXF1aXNpdGVzIGZvciB0aGlzIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMjUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODozMzo0NC43MjYwOTU0MDJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MjAxMDA5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNX1hFTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnPTE5Mz1jb25maWcgS1ZNX0hZUEVSVlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA2LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwNzpjb25maWcgS1ZNX1hFTlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwOC1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBYZW4gaHlwZXJjYWxsIGludGVyZmFjZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDg6MzM6NDUuMTE4MTEyNDUzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MTY5MDQxNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0tWGVuIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IGtleWluZyBpbiBvbiBgS1ZNX1hFTmAuIFRoYXQncyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIHNldHRpbmcgaW4gcGxheSBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgaW1wYWN0ZWQgZnVuY3Rpb25zLCBzbyBJIGNhbiBzZWUgaG93IGRlZXBseSB0aGlzIGNoYW5nZSByaXBwbGVzLiBJdCBzZWVtcyB0aGVzZSBmdW5jdGlvbnMgaGF2ZSBiZWVuIG1vZGlmaWVkOiBga3ZtX3hlbl9ldmVudGZkX3VwZGF0ZWAsIGBrdm1feGVuX2V2ZW50ZmRfYXNzaWduYCwgYGt2bV94ZW5fZXZlbnRmZF9kZWFzc2lnbmAsIGBrdm1feGVuX2V2ZW50ZmRfcmVzZXRgLCBga3ZtX3hlbl9oY2FsbF9ldnRjaG5fc2VuZGAsIGBrdm1feGVuX2luaXRfdm1gLCBhbmQgYGt2bV94ZW5fZGVzdHJveV92bWAuIE5vdywgSSB3YW50IHRvIGNvbmZpcm0gaG93IGBrdm1feGVuX2hjYWxsX2V2dGNobl9zZW5kYCBpcyB1dGlsaXplZC4gSXMgdGhlcmUgYSBjYWxsIHBhdGggdG8gdGhpcyBmdW5jdGlvbiwgb3IgYXJlIHdlIGRlYWxpbmcgd2l0aCBkZWFkIGNvZGU/IFRpbWUgdG8gY2hlY2sgZm9yIHJlYWNoYWJpbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjUyNiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODozMzo0OC43MzUwMTg2MTdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MjY1NjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0veGVuLmM9MzM9c3RhdGljIGludCBrdm1feGVuX3NldGF0dHJfZXZ0Y2huKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV94ZW5faHZtX2F0dHIgKmRhdGEpO1xcbmFyY2gveDg2L2t2bS94ZW4uYzozNDpzdGF0aWMgYm9vbCBrdm1feGVuX2hjYWxsX2V2dGNobl9zZW5kKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHBhcmFtLCB1NjQgKnIpO1xcbmFyY2gveDg2L2t2bS94ZW4uYy0zNS1cXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYz0xNjc0PWludCBrdm1feGVuX2h5cGVyY2FsbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmMtMTcyOS1cXHRcXHRpZiAocGFyYW1zWzBdID09IEVWVENITk9QX3NlbmQpXFxuYXJjaC94ODYva3ZtL3hlbi5jOjE3MzA6XFx0XFx0XFx0aGFuZGxlZCA9IGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmQodmNwdSwgcGFyYW1zWzFdLCBcXHUwMDI2cik7XFxuYXJjaC94ODYva3ZtL3hlbi5jLTE3MzEtXFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmM9MjI0NT1zdGF0aWMgaW50IGt2bV94ZW5fc2V0YXR0cl9ldnRjaG4oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3hlbl9odm1fYXR0ciAqZGF0YSlcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYy0yMjY0LVxcbmFyY2gveDg2L2t2bS94ZW4uYzoyMjY1OnN0YXRpYyBib29sIGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgcGFyYW0sIHU2NCAqcilcXG5hcmNoL3g4Ni9rdm0veGVuLmMtMjI2Ni17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA4OjMzOjQ4Ljc5MTI4OTU1M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjE1Mzg0MjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCBga3ZtX3hlbl9oeXBlcmNhbGxgIGlzIGluZGVlZCB0aGUgZW50cnkgcG9pbnQuIEV4Y2VsbGVudCwgdGhpcyBsb29rcyBsaWtlIGEgcHJvbWlzaW5nIGF2ZW51ZSBmb3IgZnV6emluZywgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHplcm8gaW4gb24gc3BlY2lmaWMgc3ltYm9scyB3aXRoaW4gdGhpcyBhcmVhLiBMZXQncyBzZWUuLi4gdGhlIG1vc3QgbGlrZWx5IGNhbmRpZGF0ZXMgZm9yIGludGVyZXN0aW5nIGJlaGF2aW9yIHNlZW0gdG8gYmU6IGBrdm1feGVuX2V2ZW50ZmRfdXBkYXRlYCwgYGt2bV94ZW5fZXZlbnRmZF9hc3NpZ25gLCBga3ZtX3hlbl9ldmVudGZkX2RlYXNzaWduYCwgYGt2bV94ZW5fZXZlbnRmZF9yZXNldGAsIGFuZCBga3ZtX3hlbl9oY2FsbF9ldnRjaG5fc2VuZGAuIFRob3NlIHdpbGwgYmUgbXkgcHJpbWFyeSBmb2N1cy5cblxuTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBidWlsZCBjb25maWdzIGFyZSBjb3JyZWN0LiBJIGtub3cgSSBuZWVkIGBLVk1fWEVOYCwgb2J2aW91c2x5LCBidXQgSSdsbCBhbHNvIGRvdWJsZS1jaGVjayB0aGF0IGBLVk1gIGlzIHByZXNlbnQuIEl04oCZcyBhbHdheXMgZ29vZCBwcmFjdGljZSB0byB2ZXJpZnkgdGhlIGRlcGVuZGVuY2llcy4gSSBoYXZlIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIGBLVk1fWEVOYCBpcyB0aGUgb25seSByZWxldmFudCBjb25maWcuIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhhdCB0b28sIGp1c3QgaW4gY2FzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzMyOCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODozMzo1My40MDY2NzYwNzNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2MTU0MTEwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uLipLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWc9Njk9Y29uZmlnIEtWTV9XRVJST1JcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTc2LVxcdCMgdGhlIGtlcm5lbC13aWRlIFdFUlJPUj15LlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjc3OlxcdGRlcGVuZHMgb24gS1ZNX1g4NiBcXHUwMDI2XFx1MDAyNiAoKEVYUEVSVCBcXHUwMDI2XFx1MDAyNiAhS0FTQU4pIHx8IFdFUlJPUilcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03OC1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz04Mz1jb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctODUtXFx0ZGVwZW5kcyBvbiBFWFBFUlRcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4NjpcXHRkZXBlbmRzIG9uIEtWTV9YODYgXFx1MDAyNlxcdTAwMjYgWDg2XzY0XFxuYXJjaC94ODYva3ZtL0tjb25maWctODctXFx0c2VsZWN0IEtWTV9HRU5FUklDX01FTU9SWV9BVFRSSUJVVEVTXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz05Nj1jb25maWcgS1ZNX0lOVEVMXFxuYXJjaC94ODYva3ZtL0tjb25maWctOTctXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgSW50ZWwgKGFuZCBjb21wYXRpYmxlKSBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuYXJjaC94ODYva3ZtL0tjb25maWc6OTg6XFx0ZGVwZW5kcyBvbiBLVk0gXFx1MDAyNlxcdTAwMjYgSUEzMl9GRUFUX0NUTFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk5LVxcdHNlbGVjdCBYODZfRlJFRCBpZiBYODZfNjRcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTEwNz1jb25maWcgS1ZNX0lOVEVMX1BST1ZFX1ZFXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTA4LSAgICAgICAgYm9vbCBcXFwiQ2hlY2sgdGhhdCBndWVzdHMgZG8gbm90IHJlY2VpdmUgI1ZFIGV4Y2VwdGlvbnNcXFwiXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTA5OiAgICAgICAgZGVwZW5kcyBvbiBLVk1fSU5URUwgXFx1MDAyNlxcdTAwMjYgRVhQRVJUXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTEwLSAgICAgICAgaGVscFxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEyMy1cXHRib29sIFxcXCJTb2Z0d2FyZSBHdWFyZCBlWHRlbnNpb25zIChTR1gpIFZpcnR1YWxpemF0aW9uXFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEyNDpcXHRkZXBlbmRzIG9uIFg4Nl9TR1ggXFx1MDAyNlxcdTAwMjYgS1ZNX0lOVEVMXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTI1LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTE0Nj1jb25maWcgS1ZNX0FNRFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0ODpcXHRkZXBlbmRzIG9uIEtWTSBcXHUwMDI2XFx1MDAyNiAoQ1BVX1NVUF9BTUQgfHwgQ1BVX1NVUF9IWUdPTilcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDktXFx0aGVscFxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTU2PWNvbmZpZyBLVk1fQU1EX1NFVlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU4LVxcdGRlZmF1bHQgeVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1OTpcXHRkZXBlbmRzIG9uIEtWTV9BTUQgXFx1MDAyNlxcdTAwMjYgWDg2XzY0XFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTYwOlxcdGRlcGVuZHMgb24gQ1JZUFRPX0RFVl9TUF9QU1AgXFx1MDAyNlxcdTAwMjYgIShLVk1fQU1EPXkgXFx1MDAyNlxcdTAwMjYgQ1JZUFRPX0RFVl9DQ1BfREQ9bSlcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNjEtXFx0c2VsZWN0IEFSQ0hfSEFTX0NDX1BMQVRGT1JNXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xNzI9Y29uZmlnIEtWTV9JT0FQSUNcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3NC1cXHRkZWZhdWx0IHlcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzU6XFx0ZGVwZW5kcyBvbiBLVk1fWDg2XFxuYXJjaC94ODYva3ZtL0tjb25maWctMTc2LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTE4Mj1jb25maWcgS1ZNX1NNTVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTg0LVxcdGRlZmF1bHQgeVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4NTpcXHRkZXBlbmRzIG9uIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODYtXFx0aGVscFxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTkzPWNvbmZpZyBLVk1fSFlQRVJWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTk0LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIE1pY3Jvc29mdCBIeXBlci1WIGVtdWxhdGlvblxcXCJcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTU6XFx0ZGVwZW5kcyBvbiBLVk1fWDg2XFxuYXJjaC94ODYva3ZtL0tjb25maWctMTk2LVxcdGRlZmF1bHQgeVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MjA3PWNvbmZpZyBLVk1fWEVOXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA4LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwOTpcXHRkZXBlbmRzIG9uIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTAtXFx0aGVscFxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MjE2PWNvbmZpZyBLVk1fUFJPVkVfTU1VXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTgtXFx0ZGVwZW5kcyBvbiBERUJVR19LRVJORUxcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMTk6XFx0ZGVwZW5kcyBvbiBLVk1fWDg2XFxuYXJjaC94ODYva3ZtL0tjb25maWctMjIwLVxcdGRlcGVuZHMgb24gRVhQRVJUXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0yMzI9Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzMtXFx0aW50IFxcXCJNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzNDpcXHRkZXBlbmRzIG9uIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzUtXFx0cmFuZ2UgMTAyNCA0MDk2XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA2VDA4OjMzOjUzLjc2ODIyNzY4N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODYzMTYzMTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biByZWFzb25pbmc6XG5cbioqRGVwZW5kZW5jeSBDaGVjazogS1ZNX1hFTiBhbmQgS1ZNX1g4NioqXG5cbkFscmlnaHQsIHNvIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhpcyBzZXR1cCBzdWdnZXN0cyBgS1ZNX1hFTmAgaXMgYnVpbHQgb24gdG9wIG9mIGBLVk1fWDg2YC4gVGhpcyBpc24ndCB1bmV4cGVjdGVkLCBidXQgaXQncyBpbXBvcnRhbnQgdG8gdmVyaWZ5LiBCZWZvcmUgSSBwcm9jZWVkLCBJIG5lZWQgdG8gbWFrZSBzdXJlIGBLVk1fWDg2YCBpcyBwcm9wZXJseSBjb25maWd1cmVkIGFuZCBmdW5jdGlvbmluZyBhcyBleHBlY3RlZC4gSXQncyBhIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrLiBMZXQgbWUgdGFrZSBhIGxvb2sgYXQgdGhlIHN0YXR1cyBvZiBgS1ZNX1g4NmAgZmlyc3QuIFRoaXMgaXMgYSBjcml0aWNhbCBwcmVyZXF1aXNpdGUsIGFuZCBJIG5lZWQgdG8gY29uZmlybSBpdHMgaW50ZWdyaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTU4LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDg6MzM6NTYuNjMxMzkyOTU2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MjgyMTM3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNX1g4NlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1fWDg2XFxuYXJjaC94ODYva3ZtL0tjb25maWctMjEtXFx0ZGVmX3RyaXN0YXRlIEtWTSBpZiAoS1ZNX0lOVEVMICE9IG4gfHwgS1ZNX0FNRCAhPSBuKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNlQwODozMzo1Ni42OTQyMjMxMTFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc5MTUwNjUzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoaXMgaW5mb3JtYXRpb24sIHRoaW5raW5nIGl0IHRocm91Z2ggZnJvbSBhIHRlY2huaWNhbCBwZXJzcGVjdGl2ZS5cblxuKipLVk0vWGVuIEV2ZW50ZmQgQ29uZmlndXJhdGlvbiAtIEEgUXVpY2sgT3ZlcnZpZXcqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgaG93IEtWTSBhbmQgS1ZNX1hFTiBjb25maWd1cmF0aW9ucyBhcmUgaGFuZGxlZC4gU2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhlIGNvcmUgZWxlbWVudHMgSSBuZWVkIHRvIGZvY3VzIG9uIGFyZSB0aGVzZSBzcGVjaWZpYyBmdW5jdGlvbnMgdGhhdCBkZWFsIGRpcmVjdGx5IHdpdGggZXZlbnRmZHMuIEkgbmVlZCB0byBiZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgdHdvLlxuXG5JdCdzIGNsZWFyIHRoYXQgdGhlc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zOiBga3ZtX3hlbl9ldmVudGZkX3VwZGF0ZWAsIGBrdm1feGVuX2V2ZW50ZmRfYXNzaWduYCwgYGt2bV94ZW5fZXZlbnRmZF9kZWFzc2lnbmAsIGBrdm1feGVuX2V2ZW50ZmRfcmVzZXRgLCBhbmQgYGt2bV94ZW5faGNhbGxfZXZ0Y2huX3NlbmRgLiBJJ20gYWxyZWFkeSB2aXN1YWxpemluZyBob3cgdGhlc2UgZnVuY3Rpb25zIG1hcCBvdXQgdGhlIGxpZmVjeWNsZSBvZiB0aGUgZXZlbnRmZHMgaW4gdGhlIHN5c3RlbS4gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRvIHNwZWNpZnkgdGhlIG5hdHVyZSBvZiB0aGlzIHJlbGF0aW9uc2hpcCBpbiB0aGUgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTQ4NiwiT3V0cHV0VG9rZW5zIjoxODIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDZUMDg6MzQ6MDEuNDg1NzMyMTU5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODMxNzQyNTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiLFxuICAgIFwiS1ZNX1hFTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV94ZW5fZXZlbnRmZF91cGRhdGVcIixcbiAgICBcImt2bV94ZW5fZXZlbnRmZF9hc3NpZ25cIixcbiAgICBcImt2bV94ZW5fZXZlbnRmZF9kZWFzc2lnblwiLFxuICAgIFwia3ZtX3hlbl9ldmVudGZkX3Jlc2V0XCIsXG4gICAgXCJrdm1feGVuX2hjYWxsX2V2dGNobl9zZW5kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgdGhlIElEUiBkYXRhIHN0cnVjdHVyZSB3aXRoIFhBcnJheSBmb3IgbWFuYWdpbmcgWGVuIGV2ZW50IGNoYW5uZWwgcG9ydHMgaW4gS1ZNLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEtWTSBYZW4gZW11bGF0aW9uIGNvZGUsIHdoaWNoIGlzIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyBhbmQgaHlwZXJjYWxscy4gRnV6emluZyBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIG5ldyBYQXJyYXkgaW1wbGVtZW50YXRpb24gd29ya3MgY29ycmVjdGx5IGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYnVncyBsaWtlIHVzZS1hZnRlci1mcmVlIG9yIG1lbW9yeSBsZWFrcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIixcbiAgICBcIktWTV9YRU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1feGVuX2V2ZW50ZmRfdXBkYXRlXCIsXG4gICAgXCJrdm1feGVuX2V2ZW50ZmRfYXNzaWduXCIsXG4gICAgXCJrdm1feGVuX2V2ZW50ZmRfZGVhc3NpZ25cIixcbiAgICBcImt2bV94ZW5fZXZlbnRmZF9yZXNldFwiLFxuICAgIFwia3ZtX3hlbl9oY2FsbF9ldnRjaG5fc2VuZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIHRoZSBJRFIgZGF0YSBzdHJ1Y3R1cmUgd2l0aCBYQXJyYXkgZm9yIG1hbmFnaW5nIFhlbiBldmVudCBjaGFubmVsIHBvcnRzIGluIEtWTS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gWGVuIGVtdWxhdGlvbiBjb2RlLCB3aGljaCBpcyByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMgYW5kIGh5cGVyY2FsbHMuIEZ1enppbmcgaXMgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHRoZSBuZXcgWEFycmF5IGltcGxlbWVudGF0aW9uIHdvcmtzIGNvcnJlY3RseSBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGJ1Z3MgbGlrZSB1c2UtYWZ0ZXItZnJlZSBvciBtZW1vcnkgbGVha3MuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkd56w[1] Phase: Succeeded StartedAt: 2026-07-06 08:34:43 +0000 UTC FinishedAt: 2026-07-06 08:34:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkd56w[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-06 08:34:43 +0000 UTC FinishedAt: 2026-07-06 08:34:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkd56w[2] Phase: Succeeded StartedAt: 2026-07-06 08:34:43 +0000 UTC FinishedAt: 2026-07-06 13:14:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-06 08:34:43 +0000 UTC FinishedAt: 2026-07-06 13:14:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-06 08:34:43 +0000 UTC FinishedAt: 2026-07-06 08:34:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-06 08:34:43 +0000 UTC FinishedAt: 2026-07-06 08:34:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowkd56w/series-workflowkd56w-convert-artifact-2176821743/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-06 08:34:53 +0000 UTC FinishedAt: 2026-07-06 09:08:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-06 08:34:53 +0000 UTC FinishedAt: 2026-07-06 09:08:39 +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:*c6d1687c-33ea-43c4-9e32-b90baa289b68,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-workflowkd56w/series-workflowkd56w-convert-artifact-2176821743/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": "c985bee1-14f6-4f2f-be61-626ce691cae6", "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-workflowkd56w/series-workflowkd56w-build-action-4190004917/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-06 08:34:53 +0000 UTC FinishedAt: 2026-07-06 09:08:29 +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:*c6d1687c-33ea-43c4-9e32-b90baa289b68,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-workflowkd56w/series-workflowkd56w-convert-artifact-2176821743/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": "c985bee1-14f6-4f2f-be61-626ce691cae6", "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-workflowkd56w/series-workflowkd56w-build-action-4190004917/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-06 09:08:39 +0000 UTC FinishedAt: 2026-07-06 09:08:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-06 09:08:39 +0000 UTC FinishedAt: 2026-07-06 09:08:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-06 09:08:39 +0000 UTC FinishedAt: 2026-07-06 09:09:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-06 09:08:39 +0000 UTC FinishedAt: 2026-07-06 09:08:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowkd56w/series-workflowkd56w-convert-artifact-1241061182/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-06 09:09:00 +0000 UTC FinishedAt: 2026-07-06 09:10:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-06 09:09:00 +0000 UTC FinishedAt: 2026-07-06 09:10:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c985bee1-14f6-4f2f-be61-626ce691cae6,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-workflowkd56w/series-workflowkd56w-build-action-4190004917/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-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-06 09:10:59 +0000 UTC FinishedAt: 2026-07-06 09:10:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-06 09:10:59 +0000 UTC FinishedAt: 2026-07-06 09:10:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-06 09:10:59 +0000 UTC FinishedAt: 2026-07-06 10:10:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-06 09:10:59 +0000 UTC FinishedAt: 2026-07-06 10:10:01 +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:*c6d1687c-33ea-43c4-9e32-b90baa289b68,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-workflowkd56w/series-workflowkd56w-convert-artifact-1241061182/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": "826fde2a-1e0e-45be-9e15-538a26e54dd5", "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-workflowkd56w/series-workflowkd56w-build-action-3293827218/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-06 09:10:59 +0000 UTC FinishedAt: 2026-07-06 10:09:34 +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:*c6d1687c-33ea-43c4-9e32-b90baa289b68,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-workflowkd56w/series-workflowkd56w-convert-artifact-1241061182/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": "826fde2a-1e0e-45be-9e15-538a26e54dd5", "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-workflowkd56w/series-workflowkd56w-build-action-3293827218/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-06 10:10:01 +0000 UTC FinishedAt: 2026-07-06 10:10:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-06 10:10:01 +0000 UTC FinishedAt: 2026-07-06 10:10:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-06 10:10:01 +0000 UTC FinishedAt: 2026-07-06 10:12:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-06 10:10:01 +0000 UTC FinishedAt: 2026-07-06 10:11:55 +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:*826fde2a-1e0e-45be-9e15-538a26e54dd5,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-workflowkd56w/series-workflowkd56w-build-action-3293827218/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-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-06 10:12:04 +0000 UTC FinishedAt: 2026-07-06 13:14:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-06 10:12:04 +0000 UTC FinishedAt: 2026-07-06 13:14:57 +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"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*c985bee1-14f6-4f2f-be61-626ce691cae6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*826fde2a-1e0e-45be-9e15-538a26e54dd5,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-workflowkd56w/series-workflowkd56w-build-action-4190004917/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-workflowkd56w/series-workflowkd56w-build-action-3293827218/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-06 10:12:04 +0000 UTC FinishedAt: 2026-07-06 10:12:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-06 10:12:04 +0000 UTC FinishedAt: 2026-07-06 10:12:11 +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"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowkd56w/series-workflowkd56w-convert-artifact-180755523/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-06 10:12:04 +0000 UTC FinishedAt: 2026-07-06 10:12:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-06 10:12:04 +0000 UTC FinishedAt: 2026-07-06 10:12:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-06 10:12:04 +0000 UTC FinishedAt: 2026-07-06 10:12:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-06 10:12:14 +0000 UTC FinishedAt: 2026-07-06 13:14:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkd56w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_xen_eventfd_update","kvm_xen_eventfd_assign","kvm_xen_eventfd_deassign","kvm_xen_eventfd_reset","kvm_xen_hcall_evtchn_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a204badd8432f93b7e862e7dac6db0fe3d65f370","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM","KVM_XEN"],"series_id":"5eabd43b-6e2c-4aa1-a8ae-32030d7d6055","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-06 10:12:14 +0000 UTC FinishedAt: 2026-07-06 13:14:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c985bee1-14f6-4f2f-be61-626ce691cae6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*826fde2a-1e0e-45be-9e15-538a26e54dd5,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-workflowkd56w/series-workflowkd56w-build-action-4190004917/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-workflowkd56w/series-workflowkd56w-build-action-3293827218/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-workflowkd56w/series-workflowkd56w-convert-artifact-180755523/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,}