Name: series-workflowl8q62 Phase: Succeeded StartedAt: 2026-06-29 13:26:50 +0000 UTC FinishedAt: 2026-06-29 15:30:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8q62[0] Phase: Succeeded StartedAt: 2026-06-29 13:26:50 +0000 UTC FinishedAt: 2026-06-29 13:46:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8q62[0].run-triage Phase: Succeeded StartedAt: 2026-06-29 13:26:50 +0000 UTC FinishedAt: 2026-06-29 13:46:05 +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": "babe08404e1993697a523e60bc0f9d096ffe1ef8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_AMD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "babe08404e1993697a523e60bc0f9d096ffe1ef8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_AMD" ], "series_id": "d1d23b17-2df1-453e-afea-44ca7f9ffaea" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "nested_svm_vmexit_update_vmcb12", "nested_svm_exit_handled", "nested_vmcb02_prepare_control", "nested_svm_clear_decode_assists", "nested_svm_copy_decode_assists" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9BTUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyJiMzNDssCiAgICAmIzM0O25lc3RlZF9zdm1fZXhpdF9oYW5kbGVkJiMzNDssCiAgICAmIzM0O25lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sJiMzNDssCiAgICAmIzM0O25lc3RlZF9zdm1fY2xlYXJfZGVjb2RlX2Fzc2lzdHMmIzM0OywKICAgICYjMzQ7bmVzdGVkX3N2bV9jb3B5X2RlY29kZV9hc3Npc3RzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG5lc3RlZCBTVk0gdmlydHVhbGl6YXRpb24gd2hlcmUgRGVjb2RlQXNzaXN0IGRhdGEgY291bGQgYmUgbGVha2VkIGZyb20gYSBwcmV2aW91cyBleGl0IHRvIGEgc3Vic2VxdWVudCBleGl0LiBJdCBtb2RpZmllcyBjb3JlIEtWTSBTVk0gbG9naWMgZm9yIGhhbmRsaW5nIG5lc3RlZCBWTSBleGl0cyBhbmQgcHJlcGFyaW5nIFZNQ0IwMiBjb250cm9scy4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBLVk0gaW9jdGxzIChzcGVjaWZpY2FsbHkgcnVubmluZyBhIG5lc3RlZCBndWVzdCksIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6NDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0ZTNlM2Q5MTZhOTFmNGZlZWRkZDVkZWQ3ZmY0ZGZiYWJjOWMyNTI1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjkgMTM6NDU6MDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYyBiL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNcbmluZGV4IGIzNDBkYzk5OTFhZGI0Li41MGU5ZmZhNWY5ZmQ0ZCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNcbkBAIC0zMyw2ICYjNDM7MzMsMzMgQEBcbiBcbiAjZGVmaW5lIENDIEtWTV9ORVNURURfVk1FTlRFUl9DT05TSVNURU5DWV9DSEVDS1xuIFxuJiM0MztzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHN0cnVjdCB2bWNiICp2bWNiKVxuJiM0Mzt7XG4mIzQzO1x0dm1jYi1cdTAwM2Vjb250cm9sLmluc25fbGVuID0gMDtcbiYjNDM7XHRtZW1zZXQodm1jYi1cdTAwM2Vjb250cm9sLmluc25fYnl0ZXMsIDAsXG4mIzQzO1x0ICAgICAgIHNpemVvZih2bWNiLVx1MDAzZWNvbnRyb2wuaW5zbl9ieXRlcykpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX2NvcHlfZGVjb2RlX2Fzc2lzdHMoc3RydWN0IHZtY2IgKnRvLCBzdHJ1Y3Qgdm1jYiAqZnJvbSlcbiYjNDM7e1xuJiM0MztcdHU4IGluc25fbGVuID0gZnJvbS1cdTAwM2Vjb250cm9sLmluc25fbGVuO1xuJiM0MztcbiYjNDM7XHRuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHRvKTtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBIYXJkd2FyZSBsZWF2ZXMgaW5zbl9sZW4gemVybyB3aGVuIG5vIERlY29kZUFzc2lzdCBkYXRhIGlzIGF2YWlsYWJsZS5cbiYjNDM7XHQgKiBLZWVwIHRoYXQgYXMgdGhlIG5lc3RlZC12aXNpYmxlIFwmIzM0O25vIGRlY29kZSBpbmZvXCYjMzQ7IG1hcmtlci5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoIWluc25fbGVuKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRpZiAoV0FSTl9PTl9PTkNFKGluc25fbGVuIFx1MDAzZSBzaXplb2YoZnJvbS1cdTAwM2Vjb250cm9sLmluc25fYnl0ZXMpKSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0dG8tXHUwMDNlY29udHJvbC5pbnNuX2xlbiA9IGluc25fbGVuO1xuJiM0MztcdG1lbWNweSh0by1cdTAwM2Vjb250cm9sLmluc25fYnl0ZXMsIGZyb20tXHUwMDNlY29udHJvbC5pbnNuX2J5dGVzLCBpbnNuX2xlbik7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgbmVzdGVkX3N2bV9pbmplY3RfbnBmX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuIFx0XHRcdFx0ICAgICAgIHN0cnVjdCB4ODZfZXhjZXB0aW9uICpmYXVsdClcbiB7XG5AQCAtODM4LDcgJiM0Mzs4NjUsMTAgQEAgc3RhdGljIHZvaWQgbmVzdGVkX3ZtY2IwMl9wcmVwYXJlX2NvbnRyb2woc3RydWN0IHZjcHVfc3ZtICpzdm0pXG4gXHQvKlxuIFx0ICogRmlsbGVkIGF0IGV4aXQ6IGV4aXRfY29kZSwgZXhpdF9pbmZvXzEsIGV4aXRfaW5mb18yLCBleGl0X2ludF9pbmZvLFxuIFx0ICogZXhpdF9pbnRfaW5mb19lcnIsIG5leHRfcmlwLCBpbnNuX2xlbiwgaW5zbl9ieXRlcy5cbiYjNDM7XHQgKiBDbGVhciBzdGFsZSBEZWNvZGVBc3Npc3QgZGF0YSBiZWZvcmUgTDIgcnVucy5cbiBcdCAqL1xuJiM0MztcdG5lc3RlZF9zdm1fY2xlYXJfZGVjb2RlX2Fzc2lzdHModm1jYjAyKTtcbiYjNDM7XHRzdm0tXHUwMDNlbmVzdGVkLmRlY29kZV9hc3Npc3RzX3ZhbGlkID0gZmFsc2U7XG4gXG4gXHRpZiAoZ3Vlc3RfY3B1X2NhcF9oYXModmNwdSwgWDg2X0ZFQVRVUkVfVkdJRikgXHUwMDI2XHUwMDI2XG4gXHQgICAgKHZtY2IxMl9jdHJsLVx1MDAzZWludF9jdGwgXHUwMDI2IFZfR0lGX0VOQUJMRV9NQVNLKSlcbkBAIC0xMjUxLDYgJiM0MzsxMjgxLDE4IEBAIHN0YXRpYyBpbnQgbmVzdGVkX3N2bV92bWV4aXRfdXBkYXRlX3ZtY2IxMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRpZiAoZ3Vlc3RfY3B1X2NhcF9oYXModmNwdSwgWDg2X0ZFQVRVUkVfTlJJUFMpKVxuIFx0XHR2bWNiMTItXHUwMDNlY29udHJvbC5uZXh0X3JpcCAgPSB2bWNiMDItXHUwMDNlY29udHJvbC5uZXh0X3JpcDtcbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIENvcHkgRGVjb2RlQXNzaXN0IGRhdGEgb25seSBmb3IgcmVhbCBWTUNCMDIgZXhpdHMuICBLVk0tc3ludGhlc2l6ZWRcbiYjNDM7XHQgKiBleGl0cyByZXBvcnQgbm8gZGVjb2RlIGluZm8gdG8gTDEuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHN2bS1cdTAwM2VuZXN0ZWQuZGVjb2RlX2Fzc2lzdHNfdmFsaWQgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGd1ZXN0X2NwdV9jYXBfaGFzKHZjcHUsIFg4Nl9GRUFUVVJFX0RFQ09ERUFTU0lTVFMpKVxuJiM0MztcdFx0bmVzdGVkX3N2bV9jb3B5X2RlY29kZV9hc3Npc3RzKHZtY2IxMiwgdm1jYjAyKTtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHZtY2IxMik7XG4mIzQzO1xuJiM0MztcdHN2bS1cdTAwM2VuZXN0ZWQuZGVjb2RlX2Fzc2lzdHNfdmFsaWQgPSBmYWxzZTtcbiYjNDM7XG4gXHRpZiAobmVzdGVkX3ZtY2IxMl9oYXNfbGJydih2Y3B1KSlcbiBcdFx0c3ZtX2NvcHlfbGJycyhcdTAwMjZ2bWNiMTItXHUwMDNlc2F2ZSwgXHUwMDI2dm1jYjAyLVx1MDAzZXNhdmUpO1xuIFxuQEAgLTE1OTMsOCAmIzQzOzE2MzUsMTEgQEAgaW50IG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxuIFxuIFx0dm1leGl0ID0gbmVzdGVkX3N2bV9pbnRlcmNlcHQoc3ZtKTtcbiBcbi1cdGlmICh2bWV4aXQgPT0gTkVTVEVEX0VYSVRfRE9ORSlcbiYjNDM7XHRpZiAodm1leGl0ID09IE5FU1RFRF9FWElUX0RPTkUpIHtcbiYjNDM7XHRcdC8qIFRoaXMgcGF0aCByZWZsZWN0cyBhIHJlYWwgVk1DQjAyIGV4aXQgZGlyZWN0bHkgdG8gTDEuICovXG4mIzQzO1x0XHRzdm0tXHUwMDNlbmVzdGVkLmRlY29kZV9hc3Npc3RzX3ZhbGlkID0gdHJ1ZTtcbiBcdFx0bmVzdGVkX3N2bV92bWV4aXQoc3ZtKTtcbiYjNDM7XHR9XG4gXG4gXHRyZXR1cm4gdm1leGl0O1xuIH1cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xuaW5kZXggZTAyYTM4ZGE1Mjk2ZTMuLjM2NmU3ZWY3ODdiMjYwIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xuQEAgLTU0NzAsNiAmIzQzOzU0NzAsOSBAQCBzdGF0aWMgX19pbml0IHZvaWQgc3ZtX3NldF9jcHVfY2Fwcyh2b2lkKVxuIFx0XHQgKi9cbiBcdFx0a3ZtX2NwdV9jYXBfc2V0KFg4Nl9GRUFUVVJFX0ZMVVNIQllBU0lEKTtcbiBcbiYjNDM7XHRcdGlmIChib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfREVDT0RFQVNTSVNUUykpXG4mIzQzO1x0XHRcdGt2bV9jcHVfY2FwX3NldChYODZfRkVBVFVSRV9ERUNPREVBU1NJU1RTKTtcbiYjNDM7XG4gXHRcdGlmIChucmlwcylcbiBcdFx0XHRrdm1fY3B1X2NhcF9zZXQoWDg2X0ZFQVRVUkVfTlJJUFMpO1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmggYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oXG5pbmRleCA1MTM3NDE2YmU1OTNkNy4uYmU3ZmRjZDEyNGI3NDIgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oXG5AQCAtMjM4LDYgJiM0MzsyMzgsMTIgQEAgc3RydWN0IHN2bV9uZXN0ZWRfc3RhdGUge1xuIFx0ICogb24gaXRzIHNpZGUuXG4gXHQgKi9cbiBcdGJvb2wgZm9yY2VfbXNyX2JpdG1hcF9yZWNhbGM7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogVHJ1ZSBvbmx5IHdoaWxlIHJlZmxlY3RpbmcgYSByZWFsIFZNQ0IwMiBleGl0IHdob3NlIERlY29kZUFzc2lzdFxuJiM0MztcdCAqIGZpZWxkcyBtYXkgYmUgY29waWVkIHRvIFZNQ0IxMi4gIEtWTS1zeW50aGVzaXplZCBleGl0cyBsZWF2ZSBpdCBjbGVhci5cbiYjNDM7XHQgKi9cbiYjNDM7XHRib29sIGRlY29kZV9hc3Npc3RzX3ZhbGlkO1xuIH07XG4gXG4gc3RydWN0IHZjcHVfc2V2X2VzX3N0YXRlIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bVxuaW5kZXggOTExOGE1YTUxYjg5ZmQuLjIzYmY1MTA3NDM5MjI4IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bVxuQEAgLTExNCw2ICYjNDM7MTE0LDcgQEAgVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSB4ODYvdm14X3ByZWVtcHRpb25fdGltZXJfdGVzdFxuIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0geDg2L3N2bV92bWNhbGxfdGVzdFxuIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0geDg2L3N2bV9pbnRfY3RsX3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX2NsZWFyX2VmZXJfc3ZtZVxuJiM0MztURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX2RlY29kZV9hc3Npc3RzX3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX3NodXRkb3duX3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX3NvZnRfaW5qZWN0X3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX3ZtY2IxMl9ncGFcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmhcbmluZGV4IDc3ZjU3NmVlNzc4OWQ4Li5lZTQ1MjBmZjJmODkzNyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXG5AQCAtMjAxLDYgJiM0MzsyMDEsNyBAQCBzdHJ1Y3Qga3ZtX3g4Nl9jcHVfZmVhdHVyZSB7XG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfTEJSVlx0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMEEsIDAsIEVEWCwgMSlcbiAjZGVmaW5lXHRYODZfRkVBVFVSRV9OUklQU1x0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMEEsIDAsIEVEWCwgMylcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1RTQ1JBVEVNU1IgICAgICAgICAgS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDBBLCAwLCBFRFgsIDQpXG4mIzQzOyNkZWZpbmUgWDg2X0ZFQVRVUkVfREVDT0RFQVNTSVNUUyAgICAgICBLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMEEsIDAsIEVEWCwgNylcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1BBVVNFRklMVEVSICAgICAgICAgS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDBBLCAwLCBFRFgsIDEwKVxuICNkZWZpbmUgWDg2X0ZFQVRVUkVfUEZUSFJFU0hPTEQgICAgICAgICBLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMEEsIDAsIEVEWCwgMTIpXG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfVl9WTVNBVkVfVk1MT0FEXHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMEEsIDAsIEVEWCwgMTUpXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdm1fbmVzdGVkX2RlY29kZV9hc3Npc3RzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3ZtX25lc3RlZF9kZWNvZGVfYXNzaXN0c190ZXN0LmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNmI1ZDM4ZDlkMzZjNDVcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3ZtX25lc3RlZF9kZWNvZGVfYXNzaXN0c190ZXN0LmNcbkBAIC0wLDAgJiM0MzsxLDk5IEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7dGVzdF91dGlsLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7a3ZtX3V0aWwuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtwcm9jZXNzb3IuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtzdm1fdXRpbC5oXCYjMzQ7XG4mIzQzO1xuJiM0MzsjZGVmaW5lIEwyX0dVRVNUX1NUQUNLX1NJWkUgNjRcbiYjNDM7XG4mIzQzO3N0YXRpYyB1aW50NjRfdCBucGZfdGFyZ2V0IF9fYWxpZ25lZChQQUdFX1NJWkUpO1xuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgbDJfZ3Vlc3RfY29kZSh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0YXNtIHZvbGF0aWxlKFwmIzM0O21vdiAoJTApLCAlJXJheFwmIzM0OyA6IDogXCYjMzQ7clwmIzM0OyhcdTAwMjZucGZfdGFyZ2V0KSA6IFwmIzM0O3JheFwmIzM0OywgXCYjMzQ7bWVtb3J5XCYjMzQ7KTtcbiYjNDM7XHRHVUVTVF9GQUlMKFwmIzM0O0wyIGFjY2VzcyBkaWQgbm90IGNhdXNlIGEgbmVzdGVkIHBhZ2UgZmF1bHRcJiMzNDspO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBsMl92bW1jYWxsX2NvZGUodm9pZClcbiYjNDM7e1xuJiM0MztcdGFzbSB2b2xhdGlsZShcJiMzNDt2bW1jYWxsXCYjMzQ7KTtcbiYjNDM7XHRHVUVTVF9GQUlMKFwmIzM0O0wyIGRpZCBub3QgZXhpdCBvbiBWTU1DQUxMXCYjMzQ7KTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogV2hlbmV2ZXIgaGFyZHdhcmUgcmVwb3J0cyBEZWNvZGVBc3Npc3QgaW5mb3JtYXRpb24gKGluc25fbGVuICE9IDApLCB0aGUgYnl0ZXNcbiYjNDM7ICogS1ZNIHJlZmxlY3RzIGludG8gVk1DQjEyIG11c3QgYmUgdGhlIGluc3RydWN0aW9uIGF0IHRoZSBjdXJyZW50IFJJUCwgbmV2ZXJcbiYjNDM7ICogc3RhbGUgYnl0ZXMgY2FycmllZCBvdmVyIGZyb20gYSBwcmV2aW91cyBMMiBleGl0LlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIHZvaWQgYXNzZXJ0X2RlY29kZV9hc3Npc3RzX3NhbmUoc3RydWN0IHZtY2IgKnZtY2IpXG4mIzQzO3tcbiYjNDM7XHRHVUVTVF9BU1NFUlQodm1jYi1cdTAwM2Vjb250cm9sLmluc25fbGVuIFx1MDAzYz1cbiYjNDM7XHRcdCAgICAgc2l6ZW9mKHZtY2ItXHUwMDNlY29udHJvbC5pbnNuX2J5dGVzKSk7XG4mIzQzO1x0aWYgKHZtY2ItXHUwMDNlY29udHJvbC5pbnNuX2xlbilcbiYjNDM7XHRcdEdVRVNUX0FTU0VSVCghbWVtY21wKHZtY2ItXHUwMDNlY29udHJvbC5pbnNuX2J5dGVzLFxuJiM0MztcdFx0XHRcdCAgICAgKHZvaWQgKil2bWNiLVx1MDAzZXNhdmUucmlwLFxuJiM0MztcdFx0XHRcdCAgICAgdm1jYi1cdTAwM2Vjb250cm9sLmluc25fbGVuKSk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIGwxX2d1ZXN0X2NvZGUoc3RydWN0IHN2bV90ZXN0X2RhdGEgKnN2bSlcbiYjNDM7e1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgbDJfZ3Vlc3Rfc3RhY2tbTDJfR1VFU1RfU1RBQ0tfU0laRV07XG4mIzQzO1x0c3RydWN0IHZtY2IgKnZtY2IgPSBzdm0tXHUwMDNldm1jYjtcbiYjNDM7XG4mIzQzO1x0R1VFU1RfQVNTRVJUKHRoaXNfY3B1X2hhcyhYODZfRkVBVFVSRV9ERUNPREVBU1NJU1RTKSk7XG4mIzQzO1xuJiM0MztcdGdlbmVyaWNfc3ZtX3NldHVwKHN2bSwgbDJfZ3Vlc3RfY29kZSxcbiYjNDM7XHRcdFx0ICBcdTAwMjZsMl9ndWVzdF9zdGFja1tMMl9HVUVTVF9TVEFDS19TSVpFXSk7XG4mIzQzO1xuJiM0MztcdC8qIEEgcmVhbCBuZXN0ZWQgI05QRiBtdXN0IHJlZmxlY3QgdmFsaWQgZGVjb2RlIGluZm9ybWF0aW9uIHRvIEwxLiAqL1xuJiM0MztcdHJ1bl9ndWVzdCh2bWNiLCBzdm0tXHUwMDNldm1jYl9ncGEpO1xuJiM0MztcbiYjNDM7XHRHVUVTVF9BU1NFUlRfRVEodm1jYi1cdTAwM2Vjb250cm9sLmV4aXRfY29kZSwgU1ZNX0VYSVRfTlBGKTtcbiYjNDM7XHRHVUVTVF9BU1NFUlQodm1jYi1cdTAwM2Vjb250cm9sLmluc25fbGVuKTtcbiYjNDM7XHRhc3NlcnRfZGVjb2RlX2Fzc2lzdHNfc2FuZSh2bWNiKTtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBSZWRpcmVjdCBMMiBwYXN0IHRoZSBzdGlsbC1mYXVsdGluZyBhY2Nlc3MgdG8gYSBWTU1DQUxMLiAgS1ZNIHJldXNlc1xuJiM0MztcdCAqIGl0cyBpbnRlcm5hbCBWTUNCMDIsIHdoaWNoIG5vdyBob2xkcyB0aGUgI05QRiYjMzk7cyBkZWNvZGUgYnl0ZXMsIHNvIHRoaXNcbiYjNDM7XHQgKiBleGVyY2lzZXMgdGhlIHBhdGggdGhhdCBtdXN0IGNsZWFyIERlY29kZUFzc2lzdCBzdGF0ZSBhbmQgZW5zdXJlcyB0aGVcbiYjNDM7XHQgKiBwcmlvciBleGl0JiMzOTtzIGJ5dGVzIGFyZSBub3QgbGVha2VkIGludG8gYSBzdWJzZXF1ZW50IGV4aXQuXG4mIzQzO1x0ICovXG4mIzQzO1x0dm1jYi1cdTAwM2VzYXZlLnJpcCA9ICh1NjQpbDJfdm1tY2FsbF9jb2RlO1xuJiM0MztcdHJ1bl9ndWVzdCh2bWNiLCBzdm0tXHUwMDNldm1jYl9ncGEpO1xuJiM0MztcbiYjNDM7XHRHVUVTVF9BU1NFUlRfRVEodm1jYi1cdTAwM2Vjb250cm9sLmV4aXRfY29kZSwgU1ZNX0VYSVRfVk1NQ0FMTCk7XG4mIzQzO1x0YXNzZXJ0X2RlY29kZV9hc3Npc3RzX3NhbmUodm1jYik7XG4mIzQzO1xuJiM0MztcdEdVRVNUX0RPTkUoKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiYjNDM7e1xuJiM0MztcdGd2YV90IHN2bV9ndmEsIG5wZl9ndmE7XG4mIzQzO1x0Z3BhX3QgbnBmX2dwYTtcbiYjNDM7XHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7XG4mIzQzO1x0c3RydWN0IGt2bV92bSAqdm07XG4mIzQzO1x0dTY0ICpwdGU7XG4mIzQzO1xuJiM0MztcdFRFU1RfUkVRVUlSRShrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9TVk0pKTtcbiYjNDM7XHRURVNUX1JFUVVJUkUoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfTlBUKSk7XG4mIzQzO1x0VEVTVF9SRVFVSVJFKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX0RFQ09ERUFTU0lTVFMpKTtcbiYjNDM7XG4mIzQzO1x0dm0gPSB2bV9jcmVhdGVfd2l0aF9vbmVfdmNwdShcdTAwMjZ2Y3B1LCBsMV9ndWVzdF9jb2RlKTtcbiYjNDM7XHR2bV9lbmFibGVfbnB0KHZtKTtcbiYjNDM7XHR2Y3B1X2FsbG9jX3N2bSh2bSwgXHUwMDI2c3ZtX2d2YSk7XG4mIzQzO1x0bnBmX2d2YSA9IChndmFfdClcdTAwMjZucGZfdGFyZ2V0O1xuJiM0MztcdG5wZl9ncGEgPSBhZGRyX2d2YTJncGEodm0sIG5wZl9ndmEpO1xuJiM0MztcbiYjNDM7XHR0ZHBfaWRlbnRpdHlfbWFwX2RlZmF1bHRfbWVtc2xvdHModm0pO1xuJiM0MztcdHB0ZSA9IHRkcF9nZXRfcHRlKHZtLCBucGZfZ3BhKTtcbiYjNDM7XHQqcHRlIFx1MDAyNj0gflBURV9QUkVTRU5UX01BU0soXHUwMDI2dm0tXHUwMDNlc3RhZ2UyX21tdSk7XG4mIzQzO1xuJiM0MztcdHZjcHVfYXJnc19zZXQodmNwdSwgMSwgc3ZtX2d2YSk7XG4mIzQzO1x0dmNwdV9ydW4odmNwdSk7XG4mIzQzO1x0VEVTVF9BU1NFUlRfS1ZNX0VYSVRfUkVBU09OKHZjcHUsIEtWTV9FWElUX0lPKTtcbiYjNDM7XHRURVNUX0FTU0VSVF9FUShnZXRfdWNhbGwodmNwdSwgTlVMTCksIFVDQUxMX0RPTkUpO1xuJiM0MztcbiYjNDM7XHRrdm1fdm1fZnJlZSh2bSk7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzo0NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk1fQU1EJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmVzdGVkX3N2bV92bWV4aXRfdXBkYXRlX3ZtY2IxMiYjMzQ7LAogICAgJiMzNDtuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZCYjMzQ7LAogICAgJiMzNDtuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfY29udHJvbCYjMzQ7LAogICAgJiMzNDtuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzJiMzNDssCiAgICAmIzM0O25lc3RlZF9zdm1fY29weV9kZWNvZGVfYXNzaXN0cyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBuZXN0ZWQgU1ZNIHZpcnR1YWxpemF0aW9uIHdoZXJlIERlY29kZUFzc2lzdCBkYXRhIGNvdWxkIGJlIGxlYWtlZCBmcm9tIGEgcHJldmlvdXMgZXhpdCB0byBhIHN1YnNlcXVlbnQgZXhpdC4gSXQgbW9kaWZpZXMgY29yZSBLVk0gU1ZNIGxvZ2ljIGZvciBoYW5kbGluZyBuZXN0ZWQgVk0gZXhpdHMgYW5kIHByZXBhcmluZyBWTUNCMDIgY29udHJvbHMuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgS1ZNIGlvY3RscyAoc3BlY2lmaWNhbGx5IHJ1bm5pbmcgYSBuZXN0ZWQgZ3Vlc3QpLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0ZTNlM2Q5MTZhOTFmNGZlZWRkZDVkZWQ3ZmY0ZGZiYWJjOWMyNTI1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdW4gMjkgMTM6NDU6MDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jIGIvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYwppbmRleCBiMzQwZGM5OTkxYWRiNC4uNTBlOWZmYTVmOWZkNGQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYwpAQCAtMzMsNiAmIzQzOzMzLDMzIEBACiAKICNkZWZpbmUgQ0MgS1ZNX05FU1RFRF9WTUVOVEVSX0NPTlNJU1RFTkNZX0NIRUNLCiAKJiM0MztzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHN0cnVjdCB2bWNiICp2bWNiKQomIzQzO3sKJiM0MzsJdm1jYi0mZ3Q7Y29udHJvbC5pbnNuX2xlbiA9IDA7CiYjNDM7CW1lbXNldCh2bWNiLSZndDtjb250cm9sLmluc25fYnl0ZXMsIDAsCiYjNDM7CSAgICAgICBzaXplb2Yodm1jYi0mZ3Q7Y29udHJvbC5pbnNuX2J5dGVzKSk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIG5lc3RlZF9zdm1fY29weV9kZWNvZGVfYXNzaXN0cyhzdHJ1Y3Qgdm1jYiAqdG8sIHN0cnVjdCB2bWNiICpmcm9tKQomIzQzO3sKJiM0MzsJdTggaW5zbl9sZW4gPSBmcm9tLSZndDtjb250cm9sLmluc25fbGVuOwomIzQzOwomIzQzOwluZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHRvKTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogSGFyZHdhcmUgbGVhdmVzIGluc25fbGVuIHplcm8gd2hlbiBubyBEZWNvZGVBc3Npc3QgZGF0YSBpcyBhdmFpbGFibGUuCiYjNDM7CSAqIEtlZXAgdGhhdCBhcyB0aGUgbmVzdGVkLXZpc2libGUgJiMzNDtubyBkZWNvZGUgaW5mbyYjMzQ7IG1hcmtlci4KJiM0MzsJICovCiYjNDM7CWlmICghaW5zbl9sZW4pCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWlmIChXQVJOX09OX09OQ0UoaW5zbl9sZW4gJmd0OyBzaXplb2YoZnJvbS0mZ3Q7Y29udHJvbC5pbnNuX2J5dGVzKSkpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CXRvLSZndDtjb250cm9sLmluc25fbGVuID0gaW5zbl9sZW47CiYjNDM7CW1lbWNweSh0by0mZ3Q7Y29udHJvbC5pbnNuX2J5dGVzLCBmcm9tLSZndDtjb250cm9sLmluc25fYnl0ZXMsIGluc25fbGVuKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX2luamVjdF9ucGZfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAJCQkJICAgICAgIHN0cnVjdCB4ODZfZXhjZXB0aW9uICpmYXVsdCkKIHsKQEAgLTgzOCw3ICYjNDM7ODY1LDEwIEBAIHN0YXRpYyB2b2lkIG5lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKQogCS8qCiAJICogRmlsbGVkIGF0IGV4aXQ6IGV4aXRfY29kZSwgZXhpdF9pbmZvXzEsIGV4aXRfaW5mb18yLCBleGl0X2ludF9pbmZvLAogCSAqIGV4aXRfaW50X2luZm9fZXJyLCBuZXh0X3JpcCwgaW5zbl9sZW4sIGluc25fYnl0ZXMuCiYjNDM7CSAqIENsZWFyIHN0YWxlIERlY29kZUFzc2lzdCBkYXRhIGJlZm9yZSBMMiBydW5zLgogCSAqLwomIzQzOwluZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHZtY2IwMik7CiYjNDM7CXN2bS0mZ3Q7bmVzdGVkLmRlY29kZV9hc3Npc3RzX3ZhbGlkID0gZmFsc2U7CiAKIAlpZiAoZ3Vlc3RfY3B1X2NhcF9oYXModmNwdSwgWDg2X0ZFQVRVUkVfVkdJRikgJmFtcDsmYW1wOwogCSAgICAodm1jYjEyX2N0cmwtJmd0O2ludF9jdGwgJmFtcDsgVl9HSUZfRU5BQkxFX01BU0spKQpAQCAtMTI1MSw2ICYjNDM7MTI4MSwxOCBAQCBzdGF0aWMgaW50IG5lc3RlZF9zdm1fdm1leGl0X3VwZGF0ZV92bWNiMTIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCWlmIChndWVzdF9jcHVfY2FwX2hhcyh2Y3B1LCBYODZfRkVBVFVSRV9OUklQUykpCiAJCXZtY2IxMi0mZ3Q7Y29udHJvbC5uZXh0X3JpcCAgPSB2bWNiMDItJmd0O2NvbnRyb2wubmV4dF9yaXA7CiAKJiM0MzsJLyoKJiM0MzsJICogQ29weSBEZWNvZGVBc3Npc3QgZGF0YSBvbmx5IGZvciByZWFsIFZNQ0IwMiBleGl0cy4gIEtWTS1zeW50aGVzaXplZAomIzQzOwkgKiBleGl0cyByZXBvcnQgbm8gZGVjb2RlIGluZm8gdG8gTDEuCiYjNDM7CSAqLwomIzQzOwlpZiAoc3ZtLSZndDtuZXN0ZWQuZGVjb2RlX2Fzc2lzdHNfdmFsaWQgJmFtcDsmYW1wOwomIzQzOwkgICAgZ3Vlc3RfY3B1X2NhcF9oYXModmNwdSwgWDg2X0ZFQVRVUkVfREVDT0RFQVNTSVNUUykpCiYjNDM7CQluZXN0ZWRfc3ZtX2NvcHlfZGVjb2RlX2Fzc2lzdHModm1jYjEyLCB2bWNiMDIpOwomIzQzOwllbHNlCiYjNDM7CQluZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHZtY2IxMik7CiYjNDM7CiYjNDM7CXN2bS0mZ3Q7bmVzdGVkLmRlY29kZV9hc3Npc3RzX3ZhbGlkID0gZmFsc2U7CiYjNDM7CiAJaWYgKG5lc3RlZF92bWNiMTJfaGFzX2xicnYodmNwdSkpCiAJCXN2bV9jb3B5X2xicnMoJmFtcDt2bWNiMTItJmd0O3NhdmUsICZhbXA7dm1jYjAyLSZndDtzYXZlKTsKIApAQCAtMTU5Myw4ICYjNDM7MTYzNSwxMSBAQCBpbnQgbmVzdGVkX3N2bV9leGl0X2hhbmRsZWQoc3RydWN0IHZjcHVfc3ZtICpzdm0pCiAKIAl2bWV4aXQgPSBuZXN0ZWRfc3ZtX2ludGVyY2VwdChzdm0pOwogCi0JaWYgKHZtZXhpdCA9PSBORVNURURfRVhJVF9ET05FKQomIzQzOwlpZiAodm1leGl0ID09IE5FU1RFRF9FWElUX0RPTkUpIHsKJiM0MzsJCS8qIFRoaXMgcGF0aCByZWZsZWN0cyBhIHJlYWwgVk1DQjAyIGV4aXQgZGlyZWN0bHkgdG8gTDEuICovCiYjNDM7CQlzdm0tJmd0O25lc3RlZC5kZWNvZGVfYXNzaXN0c192YWxpZCA9IHRydWU7CiAJCW5lc3RlZF9zdm1fdm1leGl0KHN2bSk7CiYjNDM7CX0KIAogCXJldHVybiB2bWV4aXQ7CiB9CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uYwppbmRleCBlMDJhMzhkYTUyOTZlMy4uMzY2ZTdlZjc4N2IyNjAgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uYwpAQCAtNTQ3MCw2ICYjNDM7NTQ3MCw5IEBAIHN0YXRpYyBfX2luaXQgdm9pZCBzdm1fc2V0X2NwdV9jYXBzKHZvaWQpCiAJCSAqLwogCQlrdm1fY3B1X2NhcF9zZXQoWDg2X0ZFQVRVUkVfRkxVU0hCWUFTSUQpOwogCiYjNDM7CQlpZiAoYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0RFQ09ERUFTU0lTVFMpKQomIzQzOwkJCWt2bV9jcHVfY2FwX3NldChYODZfRkVBVFVSRV9ERUNPREVBU1NJU1RTKTsKJiM0MzsKIAkJaWYgKG5yaXBzKQogCQkJa3ZtX2NwdV9jYXBfc2V0KFg4Nl9GRUFUVVJFX05SSVBTKTsKIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uaCBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmgKaW5kZXggNTEzNzQxNmJlNTkzZDcuLmJlN2ZkY2QxMjRiNzQyIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmgKQEAgLTIzOCw2ICYjNDM7MjM4LDEyIEBAIHN0cnVjdCBzdm1fbmVzdGVkX3N0YXRlIHsKIAkgKiBvbiBpdHMgc2lkZS4KIAkgKi8KIAlib29sIGZvcmNlX21zcl9iaXRtYXBfcmVjYWxjOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBUcnVlIG9ubHkgd2hpbGUgcmVmbGVjdGluZyBhIHJlYWwgVk1DQjAyIGV4aXQgd2hvc2UgRGVjb2RlQXNzaXN0CiYjNDM7CSAqIGZpZWxkcyBtYXkgYmUgY29waWVkIHRvIFZNQ0IxMi4gIEtWTS1zeW50aGVzaXplZCBleGl0cyBsZWF2ZSBpdCBjbGVhci4KJiM0MzsJICovCiYjNDM7CWJvb2wgZGVjb2RlX2Fzc2lzdHNfdmFsaWQ7CiB9OwogCiBzdHJ1Y3QgdmNwdV9zZXZfZXNfc3RhdGUgewpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm0KaW5kZXggOTExOGE1YTUxYjg5ZmQuLjIzYmY1MTA3NDM5MjI4IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm0KQEAgLTExNCw2ICYjNDM7MTE0LDcgQEAgVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSB4ODYvdm14X3ByZWVtcHRpb25fdGltZXJfdGVzdAogVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSB4ODYvc3ZtX3ZtY2FsbF90ZXN0CiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1faW50X2N0bF90ZXN0CiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX2NsZWFyX2VmZXJfc3ZtZQomIzQzO1RFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0geDg2L3N2bV9uZXN0ZWRfZGVjb2RlX2Fzc2lzdHNfdGVzdAogVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSB4ODYvc3ZtX25lc3RlZF9zaHV0ZG93bl90ZXN0CiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX3NvZnRfaW5qZWN0X3Rlc3QKIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0geDg2L3N2bV9uZXN0ZWRfdm1jYjEyX2dwYQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oCmluZGV4IDc3ZjU3NmVlNzc4OWQ4Li5lZTQ1MjBmZjJmODkzNyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaApAQCAtMjAxLDYgJiM0MzsyMDEsNyBAQCBzdHJ1Y3Qga3ZtX3g4Nl9jcHVfZmVhdHVyZSB7CiAjZGVmaW5lCVg4Nl9GRUFUVVJFX0xCUlYJCUtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwQSwgMCwgRURYLCAxKQogI2RlZmluZQlYODZfRkVBVFVSRV9OUklQUwkJS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDBBLCAwLCBFRFgsIDMpCiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1RTQ1JBVEVNU1IgICAgICAgICAgS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDBBLCAwLCBFRFgsIDQpCiYjNDM7I2RlZmluZSBYODZfRkVBVFVSRV9ERUNPREVBU1NJU1RTICAgICAgIEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwQSwgMCwgRURYLCA3KQogI2RlZmluZSBYODZfRkVBVFVSRV9QQVVTRUZJTFRFUiAgICAgICAgIEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwQSwgMCwgRURYLCAxMCkKICNkZWZpbmUgWDg2X0ZFQVRVUkVfUEZUSFJFU0hPTEQgICAgICAgICBLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMEEsIDAsIEVEWCwgMTIpCiAjZGVmaW5lCVg4Nl9GRUFUVVJFX1ZfVk1TQVZFX1ZNTE9BRAlLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMEEsIDAsIEVEWCwgMTUpCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N2bV9uZXN0ZWRfZGVjb2RlX2Fzc2lzdHNfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdm1fbmVzdGVkX2RlY29kZV9hc3Npc3RzX3Rlc3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMC4uNmI1ZDM4ZDlkMzZjNDUKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N2bV9uZXN0ZWRfZGVjb2RlX2Fzc2lzdHNfdGVzdC5jCkBAIC0wLDAgJiM0MzsxLDk5IEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQomIzQzOyNpbmNsdWRlICYjMzQ7dGVzdF91dGlsLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7a3ZtX3V0aWwuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtwcm9jZXNzb3IuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtzdm1fdXRpbC5oJiMzNDsKJiM0MzsKJiM0MzsjZGVmaW5lIEwyX0dVRVNUX1NUQUNLX1NJWkUgNjQKJiM0MzsKJiM0MztzdGF0aWMgdWludDY0X3QgbnBmX3RhcmdldCBfX2FsaWduZWQoUEFHRV9TSVpFKTsKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBsMl9ndWVzdF9jb2RlKHZvaWQpCiYjNDM7ewomIzQzOwlhc20gdm9sYXRpbGUoJiMzNDttb3YgKCUwKSwgJSVyYXgmIzM0OyA6IDogJiMzNDtyJiMzNDsoJmFtcDtucGZfdGFyZ2V0KSA6ICYjMzQ7cmF4JiMzNDssICYjMzQ7bWVtb3J5JiMzNDspOwomIzQzOwlHVUVTVF9GQUlMKCYjMzQ7TDIgYWNjZXNzIGRpZCBub3QgY2F1c2UgYSBuZXN0ZWQgcGFnZSBmYXVsdCYjMzQ7KTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgbDJfdm1tY2FsbF9jb2RlKHZvaWQpCiYjNDM7ewomIzQzOwlhc20gdm9sYXRpbGUoJiMzNDt2bW1jYWxsJiMzNDspOwomIzQzOwlHVUVTVF9GQUlMKCYjMzQ7TDIgZGlkIG5vdCBleGl0IG9uIFZNTUNBTEwmIzM0Oyk7CiYjNDM7fQomIzQzOwomIzQzOy8qCiYjNDM7ICogV2hlbmV2ZXIgaGFyZHdhcmUgcmVwb3J0cyBEZWNvZGVBc3Npc3QgaW5mb3JtYXRpb24gKGluc25fbGVuICE9IDApLCB0aGUgYnl0ZXMKJiM0MzsgKiBLVk0gcmVmbGVjdHMgaW50byBWTUNCMTIgbXVzdCBiZSB0aGUgaW5zdHJ1Y3Rpb24gYXQgdGhlIGN1cnJlbnQgUklQLCBuZXZlcgomIzQzOyAqIHN0YWxlIGJ5dGVzIGNhcnJpZWQgb3ZlciBmcm9tIGEgcHJldmlvdXMgTDIgZXhpdC4KJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCBhc3NlcnRfZGVjb2RlX2Fzc2lzdHNfc2FuZShzdHJ1Y3Qgdm1jYiAqdm1jYikKJiM0Mzt7CiYjNDM7CUdVRVNUX0FTU0VSVCh2bWNiLSZndDtjb250cm9sLmluc25fbGVuICZsdDs9CiYjNDM7CQkgICAgIHNpemVvZih2bWNiLSZndDtjb250cm9sLmluc25fYnl0ZXMpKTsKJiM0MzsJaWYgKHZtY2ItJmd0O2NvbnRyb2wuaW5zbl9sZW4pCiYjNDM7CQlHVUVTVF9BU1NFUlQoIW1lbWNtcCh2bWNiLSZndDtjb250cm9sLmluc25fYnl0ZXMsCiYjNDM7CQkJCSAgICAgKHZvaWQgKil2bWNiLSZndDtzYXZlLnJpcCwKJiM0MzsJCQkJICAgICB2bWNiLSZndDtjb250cm9sLmluc25fbGVuKSk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGwxX2d1ZXN0X2NvZGUoc3RydWN0IHN2bV90ZXN0X2RhdGEgKnN2bSkKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGxvbmcgbDJfZ3Vlc3Rfc3RhY2tbTDJfR1VFU1RfU1RBQ0tfU0laRV07CiYjNDM7CXN0cnVjdCB2bWNiICp2bWNiID0gc3ZtLSZndDt2bWNiOwomIzQzOwomIzQzOwlHVUVTVF9BU1NFUlQodGhpc19jcHVfaGFzKFg4Nl9GRUFUVVJFX0RFQ09ERUFTU0lTVFMpKTsKJiM0MzsKJiM0MzsJZ2VuZXJpY19zdm1fc2V0dXAoc3ZtLCBsMl9ndWVzdF9jb2RlLAomIzQzOwkJCSAgJmFtcDtsMl9ndWVzdF9zdGFja1tMMl9HVUVTVF9TVEFDS19TSVpFXSk7CiYjNDM7CiYjNDM7CS8qIEEgcmVhbCBuZXN0ZWQgI05QRiBtdXN0IHJlZmxlY3QgdmFsaWQgZGVjb2RlIGluZm9ybWF0aW9uIHRvIEwxLiAqLwomIzQzOwlydW5fZ3Vlc3Qodm1jYiwgc3ZtLSZndDt2bWNiX2dwYSk7CiYjNDM7CiYjNDM7CUdVRVNUX0FTU0VSVF9FUSh2bWNiLSZndDtjb250cm9sLmV4aXRfY29kZSwgU1ZNX0VYSVRfTlBGKTsKJiM0MzsJR1VFU1RfQVNTRVJUKHZtY2ItJmd0O2NvbnRyb2wuaW5zbl9sZW4pOwomIzQzOwlhc3NlcnRfZGVjb2RlX2Fzc2lzdHNfc2FuZSh2bWNiKTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogUmVkaXJlY3QgTDIgcGFzdCB0aGUgc3RpbGwtZmF1bHRpbmcgYWNjZXNzIHRvIGEgVk1NQ0FMTC4gIEtWTSByZXVzZXMKJiM0MzsJICogaXRzIGludGVybmFsIFZNQ0IwMiwgd2hpY2ggbm93IGhvbGRzIHRoZSAjTlBGJiMzOTtzIGRlY29kZSBieXRlcywgc28gdGhpcwomIzQzOwkgKiBleGVyY2lzZXMgdGhlIHBhdGggdGhhdCBtdXN0IGNsZWFyIERlY29kZUFzc2lzdCBzdGF0ZSBhbmQgZW5zdXJlcyB0aGUKJiM0MzsJICogcHJpb3IgZXhpdCYjMzk7cyBieXRlcyBhcmUgbm90IGxlYWtlZCBpbnRvIGEgc3Vic2VxdWVudCBleGl0LgomIzQzOwkgKi8KJiM0MzsJdm1jYi0mZ3Q7c2F2ZS5yaXAgPSAodTY0KWwyX3ZtbWNhbGxfY29kZTsKJiM0MzsJcnVuX2d1ZXN0KHZtY2IsIHN2bS0mZ3Q7dm1jYl9ncGEpOwomIzQzOwomIzQzOwlHVUVTVF9BU1NFUlRfRVEodm1jYi0mZ3Q7Y29udHJvbC5leGl0X2NvZGUsIFNWTV9FWElUX1ZNTUNBTEwpOwomIzQzOwlhc3NlcnRfZGVjb2RlX2Fzc2lzdHNfc2FuZSh2bWNiKTsKJiM0MzsKJiM0MzsJR1VFU1RfRE9ORSgpOwomIzQzO30KJiM0MzsKJiM0MztpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQomIzQzO3sKJiM0MzsJZ3ZhX3Qgc3ZtX2d2YSwgbnBmX2d2YTsKJiM0MzsJZ3BhX3QgbnBmX2dwYTsKJiM0MzsJc3RydWN0IGt2bV92Y3B1ICp2Y3B1OwomIzQzOwlzdHJ1Y3Qga3ZtX3ZtICp2bTsKJiM0MzsJdTY0ICpwdGU7CiYjNDM7CiYjNDM7CVRFU1RfUkVRVUlSRShrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9TVk0pKTsKJiM0MzsJVEVTVF9SRVFVSVJFKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX05QVCkpOwomIzQzOwlURVNUX1JFUVVJUkUoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfREVDT0RFQVNTSVNUUykpOwomIzQzOwomIzQzOwl2bSA9IHZtX2NyZWF0ZV93aXRoX29uZV92Y3B1KCZhbXA7dmNwdSwgbDFfZ3Vlc3RfY29kZSk7CiYjNDM7CXZtX2VuYWJsZV9ucHQodm0pOwomIzQzOwl2Y3B1X2FsbG9jX3N2bSh2bSwgJmFtcDtzdm1fZ3ZhKTsKJiM0MzsJbnBmX2d2YSA9IChndmFfdCkmYW1wO25wZl90YXJnZXQ7CiYjNDM7CW5wZl9ncGEgPSBhZGRyX2d2YTJncGEodm0sIG5wZl9ndmEpOwomIzQzOwomIzQzOwl0ZHBfaWRlbnRpdHlfbWFwX2RlZmF1bHRfbWVtc2xvdHModm0pOwomIzQzOwlwdGUgPSB0ZHBfZ2V0X3B0ZSh2bSwgbnBmX2dwYSk7CiYjNDM7CSpwdGUgJmFtcDs9IH5QVEVfUFJFU0VOVF9NQVNLKCZhbXA7dm0tJmd0O3N0YWdlMl9tbXUpOwomIzQzOwomIzQzOwl2Y3B1X2FyZ3Nfc2V0KHZjcHUsIDEsIHN2bV9ndmEpOwomIzQzOwl2Y3B1X3J1bih2Y3B1KTsKJiM0MzsJVEVTVF9BU1NFUlRfS1ZNX0VYSVRfUkVBU09OKHZjcHUsIEtWTV9FWElUX0lPKTsKJiM0MzsJVEVTVF9BU1NFUlRfRVEoZ2V0X3VjYWxsKHZjcHUsIE5VTEwpLCBVQ0FMTF9ET05FKTsKJiM0MzsKJiM0MzsJa3ZtX3ZtX2ZyZWUodm0pOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0MzEKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAzNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS1ZNIFBhdGNoIGZvciBOZXN0ZWQgQU1EIFNWTSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQmIzM5O3MgdG91Y2hpbmcgYGFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNgIGFuZCBgYXJjaC94ODYva3ZtL3N2bS9zdm0uY2AuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyBmb2N1c2VkIG9uIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiB3aXRoIEFNRCYjMzk7cyBTZWN1cmUgVmlydHVhbCBNYWNoaW5lIChTVk0pIHRlY2hub2xvZ3kgd2l0aGluIEtWTS4gU3BlY2lmaWNhbGx5LCBJIHNlZSBpdCYjMzk7cyBpbnRyb2R1Y2luZyBgbmVzdGVkX3N2bV9jbGVhcl9kZWNvZGVfYXNzaXN0c2AgYW5kIGBuZXN0ZWRfc3ZtX2NvcHlfZGVjb2RlX2Fzc2lzdHNgLCBhbmQgbW9kaWZ5aW5nIGBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfY29udHJvbGAsIGBuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyYCwgYW5kIGBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZGAuIFBsdXMsIGl0JiMzOTtzIGFkZGluZyBgWDg2X0ZFQVRVUkVfREVDT0RFQVNTSVNUU2AgdG8gYHN2bV9zZXRfY3B1X2NhcHNgLiBUaGlzIGFsbCBwb2ludHMgdG93YXJkcyBkZWFsaW5nIHdpdGggRGVjb2RlQXNzaXN0IGRhdGEgaW4gYSBuZXN0ZWQgU1ZNIGVudmlyb25tZW50LgoKQWgsIHJpZ2h0LCB0aGlzIGlzIGFib3V0IGZpeGluZyBhIHBvdGVudGlhbCBsZWFrLiBJdCYjMzk7cyBtYWtpbmcgc3VyZSB0aGF0IERlY29kZUFzc2lzdCBpbmZvcm1hdGlvbiwgbGlrZSB0aGUgaW5zdHJ1Y3Rpb24gYnl0ZXMgYW5kIGxlbmd0aHMsIGlzbiYjMzk7dCBiZWluZyBjYXJyaWVkIG92ZXIgaW1wcm9wZXJseSBmcm9tIG9uZSBWTSBleGl0IHRvIHRoZSBuZXh0IGluIHRoZSBuZXN0ZWQgc2NlbmFyaW8uIFNvLCBpdCYjMzk7cyBjbGVhcmluZyB0aGUgYXNzaXN0IGRhdGEgYmVmb3JlIHJ1bm5pbmcgdGhlIExldmVsIDIgVk0gYW5kIGNvcHlpbmcgb25seSB3aGVuIGl0JiMzOTtzIHZhbGlkIGZvciBWTUNCMDIgZXhpdHMuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHJhY2UgY29uZGl0aW9uIG9yIGRhdGEgY29ycnVwdGlvbiBmaXgsIHRyeWluZyB0byBlbnN1cmUgcHJvcGVyIGlzb2xhdGlvbi4KCkZ1bmN0aW9uYWxseSwgdGhpcyBpbXBhY3RzIHRoZSBleGVjdXRpb24gZmxvdywgd2hpY2ggYWx3YXlzIGRlbWFuZHMgY2FyZWZ1bCBzY3J1dGlueS4gVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgY29kZSBwYXRoIGlzIGFjdHVhbGx5ICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCBzZXR1cC4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGxpa2UgR0NFIG9yIFFFTVUuIE5lc3RlZCB2aXJ0dWFsaXphdGlvbiBpcyBkZWZpbml0ZWx5IHN1cHBvcnRlZCBpbiBib3RoLCBzbyBpdCYjMzk7cyB0ZXN0YWJsZSwgYW5kIGlmIGl0JiMzOTtzIHRlc3RhYmxlLCBpdCYjMzk7cyByZWFjaGFibGUuIFdhaXQsIHdhc24mIzM5O3QgdGhlcmUgc29tZXRoaW5nIGFib3V0IHN5emthbGxlcj8gU3l6a2FsbGVyIHJ1bnMgaW4gUUVNVSwgYW5kIFFFTVUgc3VwcG9ydHMgbmVzdGVkIFNWTS4uLiBzbyAqeWVzKiwgdGhpcyBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgcG90ZW50aWFsbHkgZXhwbG9pdGFibGUuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gcHJlcmVxdWlzaXRlcy4gV2UmIzM5O3JlIGdvaW5nIHRvIG5lZWQgYENPTkZJR19LVk1gIGFuZCBgQ09ORklHX0tWTV9BTURgLCBvYnZpb3VzbHkuIFRpbWUgdG8gcHVsbCB1cCB0aGUgc291cmNlIGFuZCBzZWFyY2ggZm9yIHRob3NlIGZ1bmN0aW9uIG5hbWVzLCBgbmVzdGVkX3N2bV92bWV4aXRfdXBkYXRlX3ZtY2IxMmAgYW5kIGBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZGAuIEkgd2FudCB0byBzZWUgdGhlIGNhbGwgZ3JhcGhzIGFuZCB1bmRlcnN0YW5kIHRoZSBleGFjdCBjb250ZXh0cyB0aGlzIGNvZGUgZXhlY3V0ZXMgaW4sIHRoZSBlbnRyeSBhbmQgZXhpdCBwb2ludHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmVzdGVkX3N2bV92bWV4aXRfdXBkYXRlX3ZtY2IxMiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTEyMTg9dm9pZCBzdm1fY29weV92bWxvYWRzYXZlX3N0YXRlKHN0cnVjdCB2bWNiICp0b192bWNiLCBzdHJ1Y3Qgdm1jYiAqZnJvbV92bWNiKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTIzMy1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTIzNDpzdGF0aWMgaW50IG5lc3RlZF9zdm1fdm1leGl0X3VwZGF0ZV92bWNiMTIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMjM1LXtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTEzMTQ9dm9pZCBuZXN0ZWRfc3ZtX3ZtZXhpdChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEzMTktXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEzMjA6XHRpZiAobmVzdGVkX3N2bV92bWV4aXRfdXBkYXRlX3ZtY2IxMih2Y3B1KSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTMyMS1cdFx0a3ZtX21ha2VfcmVxdWVzdChLVk1fUkVRX1RSSVBMRV9GQVVMVCwgdmNwdSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYxNgoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipLVk1fQU1EIENvbmZpZ3VyYXRpb24gUmV2aWV3KioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBzcGVjaWZpY2FsbHkgdGFyZ2V0IHRoZSBgS1ZNX0FNRGAgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaXRzIGN1cnJlbnQgc3RhdGUgYW5kIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0uIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgd29yayBiZWdpbnMsIHRyYWNpbmcgdGhyb3VnaCB0aGUgbmVzdGVkIGNvbmZpZ3VyYXRpb25zLCBsb29raW5nIGZvciBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiBvciBvcHBvcnR1bml0eS4gV2hhdCBhcmUgdGhlIGFzc29jaWF0ZWQgZmVhdHVyZXM/IEFyZSB0aGVyZSBhbnkgbmV3bHkgaW50cm9kdWNlZCBkZXBlbmRlbmNpZXMgb3IgY29uZmxpY3RzIEkgc2hvdWxkIGJlIGF3YXJlIG9mLCBlc3BlY2lhbGx5IGdpdmVuIHRoZSByYXBpZCBwYWNlIG9mIGNoYW5nZSBpbiBib3RoIEFNRCBoYXJkd2FyZSBhbmQgS1ZNIGl0c2VsZj8gSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgd2l0aCBhIGdyZXAgdG8gbWFrZSBzdXJlIEkgZ2V0IGEgY29tcHJlaGVuc2l2ZSBvdmVydmlldy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNX0FNRCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMzQ9Y29uZmlnIEtWTV9JTlRFTF9URFhcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDY6Y29uZmlnIEtWTV9BTURcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cdGJvb2wgXCYjMzQ7QU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5ODgKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipLVk1fQU1EIGFuZCBOZXN0ZWQgU1ZNIENvbmZpZ3VyYXRpb25zKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBLVk0gc2V0dXAgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIGBLVk1fQU1EYC4gVGhhdCBzZWVtcyBsaWtlIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24sIHRoZSBmb3VuZGF0aW9uLiBCdXQgSSBjYW4mIzM5O3QgaGVscCBidXQgd29uZGVyLi4uIGlzIHRoZXJlIGEgKnNwZWNpZmljKiBjb25maWd1cmF0aW9uLCBhIHBhcnRpY3VsYXIgZmxhZywgYSBzcGVjaWFsIHNldHRpbmcsIGZvciBuZXN0ZWQgU1ZNPyBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIHZpcnR1YWxpemF0aW9uIHdpdGhpbiB2aXJ0dWFsaXphdGlvbiBoZXJlLCBhbmQgSSBrbm93IHRoYXQgYWRkcyBhbm90aGVyIGxheWVyIG9mIGNvbXBsZXhpdHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBjcml0aWNhbCBmb3Igb3B0aW1hbCBwZXJmb3JtYW5jZSBhbmQgc3RhYmlsaXR5IHdpdGhpbiB0aGF0IG5lc3RlZCBlbnZpcm9ubWVudC4gVGltZSB0byBkaWcgZGVlcGVyIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBkb2N1bWVudGVkIG9yIHN1Z2dlc3RlZCBjdXN0b21pemF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXN0ZWRfc3ZtJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1MzYgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmM9OT12b2lkIHN2bV9odl9pbmplY3Rfc3ludGhldGljX3ZtZXhpdF9wb3N0X3RsYl9mbHVzaChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuYy0yMS1cdHN2bS1cdTAwM2V2bWNiLVx1MDAzZWNvbnRyb2wuZXhpdF9pbmZvXzIgPSAwO1xuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuYzoyMjpcdG5lc3RlZF9zdm1fdm1leGl0KHN2bSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5jLTIzLX1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oLTE0LSNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaDoxNTpzdGF0aWMgaW5saW5lIHZvaWQgbmVzdGVkX3N2bV9odl91cGRhdGVfdm1fdnBfaWRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmgtMTYte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmgtMjgtXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oOjI5OnN0YXRpYyBpbmxpbmUgYm9vbCBuZXN0ZWRfc3ZtX2wyX3RsYl9mbHVzaF9lbmFibGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmgtMzAte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmgtNDMtXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oOjQ0OnN0YXRpYyBpbmxpbmUgYm9vbCBuZXN0ZWRfc3ZtX2lzX2wyX3RsYl9mbHVzaF9oY2FsbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oLTQ1LXtcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmgtNDYtXHRyZXR1cm4gZ3Vlc3RfaHZfY3B1aWRfaGFzX2wyX3RsYl9mbHVzaCh2Y3B1KSBcdTAwMjZcdTAwMjZcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2Lmg6NDc6XHQgICAgICAgbmVzdGVkX3N2bV9sMl90bGJfZmx1c2hfZW5hYmxlZCh2Y3B1KSBcdTAwMjZcdTAwMjZcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmgtNDgtXHQgICAgICAga3ZtX2h2X2lzX3RsYl9mbHVzaF9oY2FsbCh2Y3B1KTtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oPTUxPXZvaWQgc3ZtX2h2X2luamVjdF9zeW50aGV0aWNfdm1leGl0X3Bvc3RfdGxiX2ZsdXNoKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oLTUyLSNlbHNlIC8qIENPTkZJR19LVk1fSFlQRVJWICovXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oOjUzOnN0YXRpYyBpbmxpbmUgdm9pZCBuZXN0ZWRfc3ZtX2h2X3VwZGF0ZV92bV92cF9pZHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7fVxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaDo1NDpzdGF0aWMgaW5saW5lIGJvb2wgbmVzdGVkX3N2bV9pc19sMl90bGJfZmx1c2hfaGNhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaC01NS17XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0zNS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MzY6c3RhdGljIHZvaWQgbmVzdGVkX3N2bV9jbGVhcl9kZWNvZGVfYXNzaXN0cyhzdHJ1Y3Qgdm1jYiAqdm1jYilcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzcte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNDItXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjQzOnN0YXRpYyB2b2lkIG5lc3RlZF9zdm1fY29weV9kZWNvZGVfYXNzaXN0cyhzdHJ1Y3Qgdm1jYiAqdG8sIHN0cnVjdCB2bWNiICpmcm9tKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy00NC17XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy00Ni1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NDc6XHRuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHRvKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNDgtXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy02Mi1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NjM6c3RhdGljIHZvaWQgbmVzdGVkX3N2bV9pbmplY3RfbnBmX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy02NC1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgeDg2X2V4Y2VwdGlvbiAqZmF1bHQpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy04MS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6ODI6XHRuZXN0ZWRfc3ZtX3ZtZXhpdChzdm0pO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy04My19XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTg0LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo4NTpzdGF0aWMgdTY0IG5lc3RlZF9zdm1fZ2V0X3RkcF9wZHB0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBpbmRleClcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtODYte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTAyLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMDM6c3RhdGljIHVuc2lnbmVkIGxvbmcgbmVzdGVkX3N2bV9nZXRfdGRwX2NyMyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwNC17XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDktXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjExMDpzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX2luaXRfbW11X2NvbnRleHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTEte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTI1LVx0XHRcdFx0c3ZtLVx1MDAzZW5lc3RlZC5jdGwubmVzdGVkX2NyMyk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEyNjpcdHZjcHUtXHUwMDNlYXJjaC5tbXUtXHUwMDNlZ2V0X2d1ZXN0X3BnZCAgICAgPSBuZXN0ZWRfc3ZtX2dldF90ZHBfY3IzO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMjc6XHR2Y3B1LVx1MDAzZWFyY2gubW11LVx1MDAzZWdldF9wZHB0ciAgICAgICAgID0gbmVzdGVkX3N2bV9nZXRfdGRwX3BkcHRyO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMjg6XHR2Y3B1LVx1MDAzZWFyY2gubW11LVx1MDAzZWluamVjdF9wYWdlX2ZhdWx0ID0gbmVzdGVkX3N2bV9pbmplY3RfbnBmX2V4aXQ7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEyOS1cdHZjcHUtXHUwMDNlYXJjaC53YWxrX21tdSAgICAgICAgICAgICAgPSBcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gubmVzdGVkX21tdTtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEzMS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTMyOnN0YXRpYyB2b2lkIG5lc3RlZF9zdm1fdW5pbml0X21tdV9jb250ZXh0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTMzLXtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTE1Mj12b2lkIG5lc3RlZF92bWNiMDJfcmVjYWxjX2ludGVyY2VwdHMoc3RydWN0IHZjcHVfc3ZtICpzdm0pXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMjItICovXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjIyMzpzdGF0aWMgaW50IG5lc3RlZF9zdm1fbXNycG1fbWVyZ2Vfb2Zmc2V0c1sxMF0gX19yb19hZnRlcl9pbml0O1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyMjQ6c3RhdGljIGludCBuZXN0ZWRfc3ZtX25yX21zcnBtX21lcmdlX29mZnNldHMgX19yb19hZnRlcl9pbml0O1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMjUtdHlwZWRlZiB1bnNpZ25lZCBsb25nIG5zdm1fbXNycG1fbWVyZ2VfdDtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMjI2LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyMjc6aW50IF9faW5pdCBuZXN0ZWRfc3ZtX2luaXRfbXNycG1fbWVyZ2Vfb2Zmc2V0cyh2b2lkKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMjgte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMjgyLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyODM6XHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIG5lc3RlZF9zdm1fbnJfbXNycG1fbWVyZ2Vfb2Zmc2V0czsgaiYjNDM7JiM0MzspIHtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6Mjg0Olx0XHRcdGlmIChuZXN0ZWRfc3ZtX21zcnBtX21lcmdlX29mZnNldHNbal0gPT0gb2Zmc2V0KVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yODUtXHRcdFx0XHRicmVhaztcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTI4Ny1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6Mjg4Olx0XHRpZiAoaiBcdTAwM2MgbmVzdGVkX3N2bV9ucl9tc3JwbV9tZXJnZV9vZmZzZXRzKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yODktXHRcdFx0Y29udGludWU7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTI5MC1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MjkxOlx0XHRpZiAoV0FSTl9PTihqIFx1MDAzZT0gQVJSQVlfU0laRShuZXN0ZWRfc3ZtX21zcnBtX21lcmdlX29mZnNldHMpKSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMjkyLVx0XHRcdHJldHVybiAtRUlPO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yOTMtXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjI5NDpcdFx0bmVzdGVkX3N2bV9tc3JwbV9tZXJnZV9vZmZzZXRzW2pdID0gb2Zmc2V0O1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyOTU6XHRcdG5lc3RlZF9zdm1fbnJfbXNycG1fbWVyZ2Vfb2Zmc2V0cyYjNDM7JiM0Mzs7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTI5Ni1cdH1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTMwNS0gKi9cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MzA2OnN0YXRpYyBib29sIG5lc3RlZF9zdm1fbWVyZ2VfbXNycG0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0zMDcte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzM0LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzozMzU6XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBuZXN0ZWRfc3ZtX25yX21zcnBtX21lcmdlX29mZnNldHM7IGkmIzQzOyYjNDM7KSB7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjMzNjpcdFx0Y29uc3QgaW50IHAgPSBuZXN0ZWRfc3ZtX21zcnBtX21lcmdlX29mZnNldHNbaV07XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTMzNy1cdFx0bnN2bV9tc3JwbV9tZXJnZV90IGwxX3ZhbDtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTM2MC0gKi9cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MzYxOnN0YXRpYyBib29sIG5lc3RlZF9zdm1fY2hlY2tfYml0bWFwX3BhKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHBhLCB1MzIgc2l6ZSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzYyLXtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTM2OC1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MzY5OnN0YXRpYyBib29sIG5lc3RlZF9zdm1fZXZlbnRfaW5qX3ZhbGlkX2V4ZXB0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTggdmVjdG9yKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0zNzAte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzk3LSAqL1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzozOTg6c3RhdGljIGJvb2wgbmVzdGVkX3N2bV9jaGVja19ldmVudF9pbmooc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgZXZlbnRfaW5qKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0zOTkte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNDEwLVx0aWYgKHR5cGUgPT0gU1ZNX0VWVElOSl9UWVBFX0VYRVBUIFx1MDAyNlx1MDAyNlxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo0MTE6XHQgICAgIW5lc3RlZF9zdm1fZXZlbnRfaW5qX3ZhbGlkX2V4ZXB0KHZjcHUsIHZlY3RvcikpXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQxMi1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9NDE3PXN0YXRpYyBib29sIG5lc3RlZF92bWNiX2NoZWNrX2NvbnRyb2xzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQyOS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NDMwOlx0aWYgKENDKCFuZXN0ZWRfc3ZtX2NoZWNrX2JpdG1hcF9wYSh2Y3B1LCBjb250cm9sLVx1MDAzZW1zcnBtX2Jhc2VfcGEsXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQzMS1cdFx0XHRcdFx0ICAgTVNSUE1fU0laRSkpKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy00MzItXHRcdHJldHVybiBmYWxzZTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NDMzOlx0aWYgKENDKCFuZXN0ZWRfc3ZtX2NoZWNrX2JpdG1hcF9wYSh2Y3B1LCBjb250cm9sLVx1MDAzZWlvcG1fYmFzZV9wYSxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNDM0LVx0XHRcdFx0XHQgICBJT1BNX1NJWkUpKSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQ0MS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NDQyOlx0aWYgKENDKCFuZXN0ZWRfc3ZtX2NoZWNrX2V2ZW50X2luaih2Y3B1LCBjb250cm9sLVx1MDAzZWV2ZW50X2luaikpKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy00NDMtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTQ0OT1zdGF0aWMgYm9vbCBuZXN0ZWRfdm1jYl9jaGVja19zYXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQ4Ny1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NDg4OmludCBuZXN0ZWRfc3ZtX2NoZWNrX2NhY2hlZF92bWNiMTIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy00ODkte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNTAyLSAqL1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo1MDM6I2RlZmluZSBfX25lc3RlZF9zdm1fc2FuaXRpemVfaW50ZXJjZXB0KF9fdmNwdSwgX19jb250cm9sLCBmbmFtZSwgaW5hbWUpXHRcXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy01MDQtZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTUwOC1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NTA5OiNkZWZpbmUgbmVzdGVkX3N2bV9zYW5pdGl6ZV9pbnRlcmNlcHQoX192Y3B1LCBfX2NvbnRyb2wsIG5hbWUpXHRcdFx0XFxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NTEwOlx0X19uZXN0ZWRfc3ZtX3Nhbml0aXplX2ludGVyY2VwdChfX3ZjcHUsIF9fY29udHJvbCwgbmFtZSwgbmFtZSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNTExLVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9NTEzPXZvaWQgX19uZXN0ZWRfY29weV92bWNiX2NvbnRyb2xfdG9fY2FjaGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNTIxLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo1MjI6XHRfX25lc3RlZF9zdm1fc2FuaXRpemVfaW50ZXJjZXB0KHZjcHUsIHRvLCBYU0FWRSwgWFNFVEJWKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NTIzOlx0bmVzdGVkX3N2bV9zYW5pdGl6ZV9pbnRlcmNlcHQodmNwdSwgdG8sIElOVlBDSUQpO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo1MjQ6XHRuZXN0ZWRfc3ZtX3Nhbml0aXplX2ludGVyY2VwdCh2Y3B1LCB0bywgUkRUU0NQKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NTI1Olx0bmVzdGVkX3N2bV9zYW5pdGl6ZV9pbnRlcmNlcHQodmNwdSwgdG8sIFNLSU5JVCk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjUyNjpcdG5lc3RlZF9zdm1fc2FuaXRpemVfaW50ZXJjZXB0KHZjcHUsIHRvLCBSRFBSVSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTUyNy1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTY1MT1zdGF0aWMgdm9pZCBuZXN0ZWRfc2F2ZV9wZW5kaW5nX2V2ZW50X3RvX3ZtY2IxMihzdHJ1Y3QgdmNwdV9zdm0gKnN2bSxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTY4My1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6Njg0OnN0YXRpYyB2b2lkIG5lc3RlZF9zdm1fdHJhbnNpdGlvbl90bGJfZmx1c2goc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy02ODUte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNzA5LSAqL1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo3MTA6c3RhdGljIGludCBuZXN0ZWRfc3ZtX2xvYWRfY3IzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBjcjMsXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTcxMS1cdFx0XHQgICAgICAgYm9vbCBuZXN0ZWRfbnB0LCBib29sIHJlbG9hZF9wZHB0cnMpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz04NTA9c3RhdGljIHZvaWQgbmVzdGVkX3ZtY2IwMl9wcmVwYXJlX2NvbnRyb2woc3RydWN0IHZjcHVfc3ZtICpzdm0pXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy04NTktXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjg2MDpcdG5lc3RlZF9zdm1fdHJhbnNpdGlvbl90bGJfZmx1c2godmNwdSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTg2MS1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTg2OS1cdCAqL1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo4NzA6XHRuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHZtY2IwMik7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTg3MS1cdHN2bS1cdTAwM2VuZXN0ZWQuZGVjb2RlX2Fzc2lzdHNfdmFsaWQgPSBmYWxzZTtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTkzNy1cdGlmIChuZXN0ZWRfbnB0X2VuYWJsZWQoc3ZtKSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6OTM4Olx0XHRuZXN0ZWRfc3ZtX2luaXRfbW11X2NvbnRleHQodmNwdSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTkzOS1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTk0Ny1cdCAgICBzdm0tXHUwMDNldHNjX3JhdGlvX21zciAhPSBrdm1fY2Fwcy5kZWZhdWx0X3RzY19zY2FsaW5nX3JhdGlvKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo5NDg6XHRcdG5lc3RlZF9zdm1fdXBkYXRlX3RzY19yYXRpb19tc3IodmNwdSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTk0OS1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwMTYtXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEwMTc6c3RhdGljIHZvaWQgbmVzdGVkX3N2bV9jb3B5X2NvbW1vbl9zdGF0ZShzdHJ1Y3Qgdm1jYiAqZnJvbV92bWNiLCBzdHJ1Y3Qgdm1jYiAqdG9fdm1jYilcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTAxOC17XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xMDI5PWludCBlbnRlcl9zdm1fZ3Vlc3RfbW9kZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB2bWNiMTJfZ3BhLCBib29sIGZyb21fdm1ydW4pXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDU3LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMDU4Olx0bmVzdGVkX3N2bV9jb3B5X2NvbW1vbl9zdGF0ZShzdm0tXHUwMDNldm1jYjAxLnB0ciwgc3ZtLVx1MDAzZW5lc3RlZC52bWNiMDIucHRyKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTA1OS1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwNjMtXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEwNjQ6XHRyZXQgPSBuZXN0ZWRfc3ZtX2xvYWRfY3IzKFx1MDAyNnN2bS1cdTAwM2V2Y3B1LCBzdm0tXHUwMDNlbmVzdGVkLnNhdmUuY3IzLFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDY1LVx0XHRcdFx0ICBuZXN0ZWRfbnB0X2VuYWJsZWQoc3ZtKSwgZnJvbV92bXJ1bik7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDc2LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMDc3Olx0bmVzdGVkX3N2bV9odl91cGRhdGVfdm1fdnBfaWRzKHZjcHUpO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDc4LVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTA4MS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTA4MjpzdGF0aWMgaW50IG5lc3RlZF9zdm1fY29weV92bWNiMTJfdG9fY2FjaGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdm1jYjEyX2dwYSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTA4My17XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDk1LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMDk2Olx0aWYgKG5lc3RlZF9zdm1fY2hlY2tfY2FjaGVkX3ZtY2IxMih2Y3B1KSBcdTAwM2MgMCkge1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDk3LVx0XHR2bWNiMTItXHUwMDNlY29udHJvbC5leGl0X2NvZGUgPSBTVk1fRVhJVF9FUlI7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTA5LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMTEwOmludCBuZXN0ZWRfc3ZtX3ZtcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTExMS17XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTQyLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMTQzOlx0cmV0ID0gbmVzdGVkX3N2bV9jb3B5X3ZtY2IxMl90b19jYWNoZSh2Y3B1LCB2bWNiMTJfZ3BhKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTE0NC1cdGlmIChyZXQpIHtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTExNzAtXHRpZiAoZW50ZXJfc3ZtX2d1ZXN0X21vZGUodmNwdSwgdm1jYjEyX2dwYSwgdHJ1ZSkgfHxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTE3MTpcdCAgICAhbmVzdGVkX3N2bV9tZXJnZV9tc3JwbSh2Y3B1KSkge1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTcyLVx0XHR2Y3B1LVx1MDAzZWFyY2gubmVzdGVkX3J1bl9wZW5kaW5nID0gMDtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTExNzktXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjExODA6XHRcdG5lc3RlZF9zdm1fdm1leGl0KHN2bSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTExODEtXHR9XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xMjE4PXZvaWQgc3ZtX2NvcHlfdm1sb2Fkc2F2ZV9zdGF0ZShzdHJ1Y3Qgdm1jYiAqdG9fdm1jYiwgc3RydWN0IHZtY2IgKmZyb21fdm1jYilcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEyMzMtXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEyMzQ6c3RhdGljIGludCBuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTIzNS17XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMjg5LVx0ICAgIGd1ZXN0X2NwdV9jYXBfaGFzKHZjcHUsIFg4Nl9GRUFUVVJFX0RFQ09ERUFTU0lTVFMpKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMjkwOlx0XHRuZXN0ZWRfc3ZtX2NvcHlfZGVjb2RlX2Fzc2lzdHModm1jYjEyLCB2bWNiMDIpO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMjkxLVx0ZWxzZVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMjkyOlx0XHRuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHZtY2IxMik7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEyOTMtXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMzEzLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMzE0OnZvaWQgbmVzdGVkX3N2bV92bWV4aXQoc3RydWN0IHZjcHVfc3ZtICpzdm0pXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEzMTUte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTMxOS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTMyMDpcdGlmIChuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyKHZjcHUpKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMzIxLVx0XHRrdm1fbWFrZV9yZXF1ZXN0KEtWTV9SRVFfVFJJUExFX0ZBVUxULCB2Y3B1KTtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEzNDAtXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEzNDE6XHRuZXN0ZWRfc3ZtX2NvcHlfY29tbW9uX3N0YXRlKHN2bS1cdTAwM2VuZXN0ZWQudm1jYjAyLnB0ciwgc3ZtLVx1MDAzZXZtY2IwMS5wdHIpO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMzQyLVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTQyNy1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTQyODpcdG5lc3RlZF9zdm1fdHJhbnNpdGlvbl90bGJfZmx1c2godmNwdSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE0MjktXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE0MzA6XHRuZXN0ZWRfc3ZtX3VuaW5pdF9tbXVfY29udGV4dCh2Y3B1KTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTQzMS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTQzMjpcdGlmIChuZXN0ZWRfc3ZtX2xvYWRfY3IzKHZjcHUsIHZtY2IwMS1cdTAwM2VzYXZlLmNyMywgZmFsc2UsIHRydWUpKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNDMzLVx0XHRrdm1fbWFrZV9yZXF1ZXN0KEtWTV9SRVFfVFJJUExFX0ZBVUxULCB2Y3B1KTtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE0NjMtXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE0NjQ6c3RhdGljIHZvaWQgbmVzdGVkX3N2bV90cmlwbGVfZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNDY1LXtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE0NzEtXHRrdm1fY2xlYXJfcmVxdWVzdChLVk1fUkVRX1RSSVBMRV9GQVVMVCwgdmNwdSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE0NzI6XHRuZXN0ZWRfc3ZtX3NpbXBsZV92bWV4aXQodG9fc3ZtKHZjcHUpLCBTVk1fRVhJVF9TSFVURE9XTik7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE0NzMtfVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MTUyNj12b2lkIHN2bV9sZWF2ZV9uZXN0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTUzNy1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTUzODpcdFx0bmVzdGVkX3N2bV91bmluaXRfbW11X2NvbnRleHQodmNwdSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE1MzktXHRcdHZtY2JfbWFya19hbGxfZGlydHkoc3ZtLVx1MDAzZXZtY2IpO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTU0OS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTU1MDpzdGF0aWMgaW50IG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkX21zcihzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTU1MS17XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNTc0LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNTc1OnN0YXRpYyBpbnQgbmVzdGVkX3N2bV9pbnRlcmNlcHRfaW9pbyhzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTU3Ni17XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNTk5LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNjAwOnN0YXRpYyBpbnQgbmVzdGVkX3N2bV9pbnRlcmNlcHQoc3RydWN0IHZjcHVfc3ZtICpzdm0pXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2MDEte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTYwOS1cdGNhc2UgU1ZNX0VYSVRfTVNSOlxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNjEwOlx0XHR2bWV4aXQgPSBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZF9tc3Ioc3ZtKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTYxMS1cdFx0YnJlYWs7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2MTItXHRjYXNlIFNWTV9FWElUX0lPSU86XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE2MTM6XHRcdHZtZXhpdCA9IG5lc3RlZF9zdm1faW50ZXJjZXB0X2lvaW8oc3ZtKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTYxNC1cdFx0YnJlYWs7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjE3LVx0XHQgKiBIb3N0LWludGVyY2VwdGVkIGV4Y2VwdGlvbnMgaGF2ZSBiZWVuIGNoZWNrZWQgYWxyZWFkeSBpblxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNjE4Olx0XHQgKiBuZXN0ZWRfc3ZtX2V4aXRfc3BlY2lhbC4gIFRoZXJlIGlzIG5vdGhpbmcgdG8gZG8gaGVyZSxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTYxOS1cdFx0ICogdGhlIHZtZXhpdCBpcyBpbmplY3RlZCBieSBzdm1fY2hlY2tfbmVzdGVkX2V2ZW50cy5cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2MzEtXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE2MzI6aW50IG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjMzLXtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2MzUtXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE2MzY6XHR2bWV4aXQgPSBuZXN0ZWRfc3ZtX2ludGVyY2VwdChzdm0pO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjM3LVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTY0MC1cdFx0c3ZtLVx1MDAzZW5lc3RlZC5kZWNvZGVfYXNzaXN0c192YWxpZCA9IHRydWU7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE2NDE6XHRcdG5lc3RlZF9zdm1fdm1leGl0KHN2bSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2NDItXHR9XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjQ2LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNjQ3OmludCBuZXN0ZWRfc3ZtX2NoZWNrX3Blcm1pc3Npb25zKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTY0OC17XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjYxLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNjYyOnN0YXRpYyBib29sIG5lc3RlZF9zdm1faXNfZXhjZXB0aW9uX3ZtZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU4IHZlY3RvcixcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTY2My1cdFx0XHRcdFx0ICAgdTMyIGVycm9yX2NvZGUpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjY5LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNjcwOnN0YXRpYyB2b2lkIG5lc3RlZF9zdm1faW5qZWN0X2V4Y2VwdGlvbl92bWV4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjcxLXtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE3MDEtXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE3MDI6XHRuZXN0ZWRfc3ZtX3ZtZXhpdChzdm0pO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNzAzLX1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTE3MTA9c3RhdGljIGludCBzdm1fY2hlY2tfbmVzdGVkX2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNzM0LVx0XHRcdHJldHVybiAwO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNzM1Olx0XHRuZXN0ZWRfc3ZtX3NpbXBsZV92bWV4aXQoc3ZtLCBTVk1fRVhJVF9JTklUKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTczNi1cdFx0cmV0dXJuIDA7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNzQxLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUJVU1k7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE3NDI6XHRcdG5lc3RlZF9zdm1faW5qZWN0X2V4Y2VwdGlvbl92bWV4aXQodmNwdSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE3NDMtXHRcdHJldHVybiAwO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc1Ny1cdFx0XHRyZXR1cm4gMDtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTc1ODpcdFx0bmVzdGVkX3N2bV9zaW1wbGVfdm1leGl0KHN2bSwgU1ZNX0VYSVRfU01JKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc1OS1cdFx0cmV0dXJuIDA7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNzY3LVx0XHRcdHJldHVybiAwO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNzY4Olx0XHRuZXN0ZWRfc3ZtX3NpbXBsZV92bWV4aXQoc3ZtLCBTVk1fRVhJVF9OTUkpO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNzY5LVx0XHRyZXR1cm4gMDtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE3NzctXHRcdHRyYWNlX2t2bV9uZXN0ZWRfaW50cl92bWV4aXQoc3ZtLVx1MDAzZXZtY2ItXHUwMDNlc2F2ZS5yaXApO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNzc4Olx0XHRuZXN0ZWRfc3ZtX3NpbXBsZV92bWV4aXQoc3ZtLCBTVk1fRVhJVF9JTlRSKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc3OS1cdFx0cmV0dXJuIDA7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNzg0LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNzg1OmludCBuZXN0ZWRfc3ZtX2V4aXRfc3BlY2lhbChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc4Ni17XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xODA4LVx0XHQvKiBIeXBlci1WIEwyIFRMQiBmbHVzaCBoeXBlcmNhbGwgaXMgaGFuZGxlZCBieSBMMCAqL1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxODA5Olx0XHRpZiAobmVzdGVkX3N2bV9pc19sMl90bGJfZmx1c2hfaGNhbGwodmNwdSkpXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE4MTAtXHRcdFx0cmV0dXJuIE5FU1RFRF9FWElUX0hPU1Q7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xODE4LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxODE5OnZvaWQgbmVzdGVkX3N2bV91cGRhdGVfdHNjX3JhdGlvX21zcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE4MjAte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MTkzMj1zdGF0aWMgaW50IHN2bV9zZXRfbmVzdGVkX3N0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTIwMDYtXHQgKiBWYWxpZGF0ZSBob3N0IHN0YXRlIHNhdmVkIGZyb20gYmVmb3JlIFZNUlVOIChzZWVcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MjAwNzpcdCAqIG5lc3RlZF9zdm1fY2hlY2tfcGVybWlzc2lvbnMpLlxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMDA4LVx0ICovXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMDU1LVx0ICovXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjIwNTY6XHRyZXQgPSBuZXN0ZWRfc3ZtX2xvYWRfY3IzKFx1MDAyNnN2bS1cdTAwM2V2Y3B1LCB2Y3B1LVx1MDAzZWFyY2guY3IzLFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMDU3LVx0XHRcdFx0ICBuZXN0ZWRfbnB0X2VuYWJsZWQoc3ZtKSwgZmFsc2UpO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MjA3NT1zdGF0aWMgYm9vbCBzdm1fZ2V0X25lc3RlZF9zdGF0ZV9wYWdlcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMDg5LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyMDkwOlx0aWYgKCFuZXN0ZWRfc3ZtX21lcmdlX21zcnBtKHZjcHUpKSB7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTIwOTEtXHRcdHZjcHUtXHUwMDNlcnVuLVx1MDAzZWV4aXRfcmVhc29uID0gS1ZNX0VYSVRfSU5URVJOQUxfRVJST1I7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0yMTA0PXN0cnVjdCBrdm1feDg2X25lc3RlZF9vcHMgc3ZtX25lc3RlZF9vcHMgPSB7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTIxMDUtXHQubGVhdmVfbmVzdGVkID0gc3ZtX2xlYXZlX25lc3RlZCxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MjEwNjpcdC5pc19leGNlcHRpb25fdm1leGl0ID0gbmVzdGVkX3N2bV9pc19leGNlcHRpb25fdm1leGl0LFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMTA3LVx0LmNoZWNrX2V2ZW50cyA9IHN2bV9jaGVja19uZXN0ZWRfZXZlbnRzLFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyMTA4Olx0LnRyaXBsZV9mYXVsdCA9IG5lc3RlZF9zdm1fdHJpcGxlX2ZhdWx0LFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMTA5LVx0LmdldF9uZXN0ZWRfc3RhdGVfcGFnZXMgPSBzdm1fZ2V0X25lc3RlZF9zdGF0ZV9wYWdlcyxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTIxOTk9c3RhdGljIGludCB2bWxvYWRfdm1zYXZlX2ludGVyY2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgdm1sb2FkKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjIwNi1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MjIwNzpcdGlmIChuZXN0ZWRfc3ZtX2NoZWNrX3Blcm1pc3Npb25zKHZjcHUpKVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMjA4LVx0XHRyZXR1cm4gMTtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTIyNDY9c3RhdGljIGludCB2bXJ1bl9pbnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMjQ3LXtcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MjI0ODpcdGlmIChuZXN0ZWRfc3ZtX2NoZWNrX3Blcm1pc3Npb25zKHZjcHUpKVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMjQ5LVx0XHRyZXR1cm4gMTtcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjI1MC1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MjI1MTpcdHJldHVybiBuZXN0ZWRfc3ZtX3ZtcnVuKHZjcHUpO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMjUyLX1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTIyODY9c3RhdGljIGludCBncF9pbnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjMwNS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MjMwNjpcdFx0aWYgKG5lc3RlZF9zdm1fY2hlY2tfcGVybWlzc2lvbnModmNwdSkpXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTIzMDctXHRcdFx0cmV0dXJuIDE7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMzE3LVx0XHQgKi9cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MjMxODpcdFx0bmVzdGVkX3N2bV9zaW1wbGVfdm1leGl0KHN2bSwgc3ZtX2V4aXRfY29kZSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTIzMTktXHRcdHJldHVybiAxO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MjM2Nj1zdGF0aWMgaW50IHN0Z2lfaW50ZXJjZXB0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTIzNjktXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjIzNzA6XHRpZiAobmVzdGVkX3N2bV9jaGVja19wZXJtaXNzaW9ucyh2Y3B1KSlcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjM3MS1cdFx0cmV0dXJuIDE7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0yMzc4PXN0YXRpYyBpbnQgY2xnaV9pbnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjM4MS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MjM4MjpcdGlmIChuZXN0ZWRfc3ZtX2NoZWNrX3Blcm1pc3Npb25zKHZjcHUpKVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMzgzLVx0XHRyZXR1cm4gMTtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTIzOTA9c3RhdGljIGludCBpbnZscGdhX2ludGVyY2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMzk0LVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzoyMzk1Olx0aWYgKG5lc3RlZF9zdm1fY2hlY2tfcGVybWlzc2lvbnModmNwdSkpXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTIzOTYtXHRcdHJldHVybiAxO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MjUzMT1zdGF0aWMgYm9vbCBjaGVja19zZWxlY3RpdmVfY3IwX2ludGVyY2VwdGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI1NDYtXHRcdHN2bS1cdTAwM2V2bWNiLVx1MDAzZWNvbnRyb2wuZXhpdF9jb2RlID0gU1ZNX0VYSVRfQ1IwX1NFTF9XUklURTtcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MjU0NzpcdFx0cmV0ID0gKG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkKHN2bSkgPT0gTkVTVEVEX0VYSVRfRE9ORSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI1NDgtXHR9XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0yOTM4PXN0YXRpYyBpbnQgc3ZtX3NldF9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcilcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI5NzUtXHRcdCAgICBpc19ndWVzdF9tb2RlKHZjcHUpKVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzoyOTc2Olx0XHRcdG5lc3RlZF9zdm1fdXBkYXRlX3RzY19yYXRpb19tc3IodmNwdSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI5NzctXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zMDEwLVx0XHQgKiBUaGUgaGFuZGxpbmcgb2YgdGhlIE1TUiBiaXRtYXAgZm9yIEwyIGd1ZXN0cyBpcyBkb25lIGluXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjMwMTE6XHRcdCAqIG5lc3RlZF9zdm1fbWVyZ2VfbXNycG0oKS5cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMzAxMi1cdFx0ICogV2UgdXBkYXRlIHRoZSBMMSBNU1IgYml0IGFzIHdlbGwgc2luY2UgaXQgd2lsbCBlbmQgdXBcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTMyNzA9c3RhdGljIGludCB2bW1jYWxsX2ludGVyY2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zMjc3LVx0ICovXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjMyNzg6XHRpZiAoaXNfZ3Vlc3RfbW9kZSh2Y3B1KSBcdTAwMjZcdTAwMjYgIW5lc3RlZF9zdm1faXNfbDJfdGxiX2ZsdXNoX2hjYWxsKHZjcHUpKSB7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTMyNzktXHRcdGt2bV9xdWV1ZV9leGNlcHRpb24odmNwdSwgVURfVkVDVE9SKTtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTM2NTM9c3RhdGljIGludCBzdm1faGFuZGxlX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBmYXN0cGF0aF90IGV4aXRfZmFzdHBhdGgpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zNjcwLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzozNjcxOlx0XHR2bWV4aXQgPSBuZXN0ZWRfc3ZtX2V4aXRfc3BlY2lhbChzdm0pO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zNjcyLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zNjczLVx0XHRpZiAodm1leGl0ID09IE5FU1RFRF9FWElUX0NPTlRJTlVFKVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzozNjc0Olx0XHRcdHZtZXhpdCA9IG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkKHN2bSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTM2NzUtXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0zOTAzPXN0YXRpYyB2b2lkIHN2bV91cGRhdGVfY3I4X2ludGVyY2VwdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCB0cHIsIGludCBpcnIpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zOTEzLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzozOTE0Olx0aWYgKG5lc3RlZF9zdm1fdmlydHVhbGl6ZV90cHIodmNwdSkpXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTM5MTUtXHRcdHJldHVybjtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTQxOTg9c3RhdGljIGlubGluZSB2b2lkIHN5bmNfY3I4X3RvX2xhcGljKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTQyMDEtXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjQyMDI6XHRpZiAobmVzdGVkX3N2bV92aXJ0dWFsaXplX3Rwcih2Y3B1KSlcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDIwMy1cdFx0cmV0dXJuO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NDIxMT1zdGF0aWMgaW5saW5lIHZvaWQgc3luY19sYXBpY190b19jcjgoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDIxNS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NDIxNjpcdGlmIChuZXN0ZWRfc3ZtX3ZpcnR1YWxpemVfdHByKHZjcHUpKVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy00MjE3LVx0XHRyZXR1cm47XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz00NzU3PXN0YXRpYyBpbnQgc3ZtX2NoZWNrX2ludGVyY2VwdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy00ODgxLVx0dm1jYi1cdTAwM2Vjb250cm9sLmV4aXRfY29kZSA9IGljcHRfaW5mby5leGl0X2NvZGU7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjQ4ODI6XHR2bWV4aXQgPSBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZChzdm0pO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy00ODgzLVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NDkzOT1zdGF0aWMgaW50IHN2bV9lbnRlcl9zbW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bmlvbiBrdm1fc21yYW0gKnNtcmFtKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDk2MS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NDk2MjpcdG5lc3RlZF9zdm1fc2ltcGxlX3ZtZXhpdChzdm0sIFNWTV9FWElUX1NXKTtcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDk2My1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTQ5ODg9c3RhdGljIGludCBzdm1fbGVhdmVfc21tKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3QgdW5pb24ga3ZtX3NtcmFtICpzbXJhbSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTUwMzYtXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjUwMzc6XHRpZiAobmVzdGVkX3N2bV9jaGVja19jYWNoZWRfdm1jYjEyKHZjcHUpIFx1MDAzYyAwKVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01MDM4LVx0XHRnb3RvIHVubWFwX3NhdmU7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz01NTQ1PXN0YXRpYyBfX2luaXQgaW50IHN2bV9oYXJkd2FyZV9zZXR1cCh2b2lkKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTU4OC1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTU4OTpcdFx0ciA9IG5lc3RlZF9zdm1faW5pdF9tc3JwbV9tZXJnZV9vZmZzZXRzKCk7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU1OTAtXHRcdGlmIChyKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg9MjA4PXN0cnVjdCBzdm1fbmVzdGVkX3N0YXRlIHtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTIyNi1cdCAqIE5vdGU6IHRoaXMgc3RydWN0IGlzIG5vdCBrZXB0IHVwLXRvLWRhdGUgd2hpbGUgTDIgcnVuczsgaXQgaXMgb25seVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaDoyMjc6XHQgKiB2YWxpZCB3aXRoaW4gbmVzdGVkX3N2bV92bXJ1bi5cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MzA4CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmVzdGVkIFNWTSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgdG91Y2hpbmcgdGhlIG5lc3RlZCBTVk0gY29kZSwgc3BlY2lmaWNhbGx5IHRoZSBgbmVzdGVkX3N2bV92bWV4aXRfdXBkYXRlX3ZtY2IxMmAgYW5kIGBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZGAgZnVuY3Rpb25zLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGRlc2lnbmVkIHRvIGJlIHJ1biB3aXRoaW4gYSBuZXN0ZWQgU1ZNIGVudmlyb25tZW50LCB3aGljaCBpcyBnb29kLiBUaGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudCBpcyBgS1ZNX0FNRGAsIGFuZCB0aGF0JiMzOTtzIGl0PyBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQuIExldCYjMzk7cyBsb29rIGF0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBLVk1fQU1EYC4gQWgsIGl0IGRlcGVuZHMgb24gYEtWTWAsIG9mIGNvdXJzZS4gU28sIGNvbmZpcm1pbmcgYEtWTV9BTURgIGFsb25lIGlzIGVub3VnaC4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB3aGF0IGZ1bmN0aW9ucyBhcmUgaW1wb3J0YW50IHRvIGZvY3VzIG9uLiBXZSYjMzk7dmUgZ290OgoKKiAgIGBuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyYAoqICAgYG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkYAoqICAgYG5lc3RlZF9zdm1fY2xlYXJfZGVjb2RlX2Fzc2lzdHNgCiogICBgbmVzdGVkX3N2bV9jb3B5X2RlY29kZV9hc3Npc3RzYAoKSG1tLCB3YWl0IGEgbWludXRlLi4uIEkgcmVtZW1iZXIgdGhvc2UgYG5lc3RlZF9zdm1fY2xlYXJfZGVjb2RlX2Fzc2lzdHNgIGFuZCBgbmVzdGVkX3N2bV9jb3B5X2RlY29kZV9hc3Npc3RzYCBmdW5jdGlvbnMuIFRoZXkmIzM5O3JlIGJvdGggc3RhdGljIHdpdGhpbiBgbmVzdGVkLmNgLiBBbmQgbm93IEkgc2VlIGBuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyYCBpcyBhbHNvIHN0YXRpYyB3aXRoaW4gdGhhdCBzYW1lIGZpbGUuIFRoaXMgbWVhbnMgdGhleSBhcmUgbGlrZWx5IGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMgd2l0aGluIHRoYXQgZmlsZS4gQnV0IGBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZGAuLi50aGF0IG9uZSYjMzk7cyBub3Qgc3RhdGljLiBTbyBpdCYjMzk7cyBleHBvcnRlZCBhbmQgY2FuIGJlIGNhbGxlZCBmcm9tIHNvbWV3aGVyZSBlbHNlLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmVzdGVkX3N2bV9leGl0X2hhbmRsZWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xNTI2PXZvaWQgc3ZtX2xlYXZlX25lc3RlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNTQ5LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNTUwOnN0YXRpYyBpbnQgbmVzdGVkX3N2bV9leGl0X2hhbmRsZWRfbXNyKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNTUxLXtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTE2MDA9c3RhdGljIGludCBuZXN0ZWRfc3ZtX2ludGVyY2VwdChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2MDktXHRjYXNlIFNWTV9FWElUX01TUjpcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTYxMDpcdFx0dm1leGl0ID0gbmVzdGVkX3N2bV9leGl0X2hhbmRsZWRfbXNyKHN2bSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2MTEtXHRcdGJyZWFrO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTYzMS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTYzMjppbnQgbmVzdGVkX3N2bV9leGl0X2hhbmRsZWQoc3RydWN0IHZjcHVfc3ZtICpzdm0pXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2MzMte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MjUzMT1zdGF0aWMgYm9vbCBjaGVja19zZWxlY3RpdmVfY3IwX2ludGVyY2VwdGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI1NDYtXHRcdHN2bS1cdTAwM2V2bWNiLVx1MDAzZWNvbnRyb2wuZXhpdF9jb2RlID0gU1ZNX0VYSVRfQ1IwX1NFTF9XUklURTtcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MjU0NzpcdFx0cmV0ID0gKG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkKHN2bSkgPT0gTkVTVEVEX0VYSVRfRE9ORSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI1NDgtXHR9XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0zNjUzPXN0YXRpYyBpbnQgc3ZtX2hhbmRsZV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZmFzdHBhdGhfdCBleGl0X2Zhc3RwYXRoKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMzY3My1cdFx0aWYgKHZtZXhpdCA9PSBORVNURURfRVhJVF9DT05USU5VRSlcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MzY3NDpcdFx0XHR2bWV4aXQgPSBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZChzdm0pO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zNjc1LVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NDc1Nz1zdGF0aWMgaW50IHN2bV9jaGVja19pbnRlcmNlcHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDg4MS1cdHZtY2ItXHUwMDNlY29udHJvbC5leGl0X2NvZGUgPSBpY3B0X2luZm8uZXhpdF9jb2RlO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo0ODgyOlx0dm1leGl0ID0gbmVzdGVkX3N2bV9leGl0X2hhbmRsZWQoc3ZtKTtcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDg4My1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oPTg2NT1zdGF0aWMgaW5saW5lIHZvaWQgbmVzdGVkX3N2bV9zaW1wbGVfdm1leGl0KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtLCB1MzIgZXhpdF9jb2RlKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtODcyLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaDo4NzM6aW50IG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKTtcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtODc0LWludCBuZXN0ZWRfc3ZtX2NoZWNrX3Blcm1pc3Npb25zKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwODQ1CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqQ3VycmVudCBGb2N1czogTmVzdGVkIFNWTSBWTSBFeGl0IEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gaG9uaW5nIGluIG9uIHRoZSBuZXN0ZWQgU1ZNIGV4aXQgaGFuZGxpbmcgY29kZS4gSXQgbG9va3MgbGlrZSBgbmVzdGVkX3N2bV9leGl0X2hhbmRsZWRgIGlzIGEgZ29vZCBwbGFjZSB0byBzdGFydCwgdGhhdCBzZWVtcyB0byBiZSB0aGUgY29yZSBmdW5jdGlvbiBmb3IgZGVhbGluZyB3aXRoIHRoZSBhY3R1YWwgVk0gZXhpdC4gVGhlbiwgZm9sbG93aW5nIHRoYXQgbG9naWMsIEkgbmVlZCB0byBjaGVjayBgbmVzdGVkX3N2bV92bWV4aXRfdXBkYXRlX3ZtY2IxMmAsIGJlY2F1c2UsIHdlbGwsIHRoYXQgbmFtZSBzdWdnZXN0cyBpdCYjMzk7cyBjcnVjaWFsIGZvciBwcm9wZXJseSB1cGRhdGluZyB0aGUgVmlydHVhbCBNYWNoaW5lIENvbnRyb2wgQmxvY2ssIHBvc3QtVk0gZXhpdCwgYnV0IGZvciB0aGUgMS0yIHZDUFUuCgpJIGFsc28gc2VlIHRoYXQgYG5lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sYCBpcyBnZXR0aW5nIG1vZGlmaWVkLiBUaGF0IG9uZSYjMzk7cyBpbnRlcmVzdGluZywgYXMgaXQmIzM5O3MgdGhlIDAtMiB2bWNiLiBMZXQgbWUgcGl2b3QgdGhlcmUgZmlyc3QsIHNpbmNlIGl0IGlzIGEgZnVuZGFtZW50YWwgY29udHJvbCBmdW5jdGlvbi4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqIGl0JiMzOTtzIGJlaW5nIGNoYW5nZWQgYW5kICp3aHkqIGJlZm9yZSBnb2luZyBkZWVwZXIgaW50byB0aGUgZXhpdC1oYW5kbGluZyBwYXRoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzICpiZWluZyogcHJlcHBlZCBmb3IgdGhlIDAtMiB2bWNiLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfY29udHJvbCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTg0MD1zdGF0aWMgYm9vbCBpc19ldnRpbmpfbm1pKHUzMiBldnRpbmopXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy04NDktXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjg1MDpzdGF0aWMgdm9pZCBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfY29udHJvbChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtODUxLXtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTEwMjk9aW50IGVudGVyX3N2bV9ndWVzdF9tb2RlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHZtY2IxMl9ncGEsIGJvb2wgZnJvbV92bXJ1bilcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwNjAtXHRzdm1fc3dpdGNoX3ZtY2Ioc3ZtLCBcdTAwMjZzdm0tXHUwMDNlbmVzdGVkLnZtY2IwMik7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEwNjE6XHRuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfY29udHJvbChzdm0pO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDYyLVx0bmVzdGVkX3ZtY2IwMl9wcmVwYXJlX3NhdmUoc3ZtKTtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTE5MzI9c3RhdGljIGludCBzdm1fc2V0X25lc3RlZF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMDQxLVx0c3ZtX3N3aXRjaF92bWNiKHN2bSwgXHUwMDI2c3ZtLVx1MDAzZW5lc3RlZC52bWNiMDIpO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyMDQyOlx0bmVzdGVkX3ZtY2IwMl9wcmVwYXJlX2NvbnRyb2woc3ZtKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMjA0My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE2MjIKCQkJCQkJCW91dHB1dDogMTc2CgkJCQkJCQl0aG91Z2h0czogMjQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBLVk0vU1ZNIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIEtWTS9TVk0gcGF0Y2guIEl0JiMzOTtzIGNsZWFyIHRoYXQgYG5lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sYCBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uIHRvIGZvY3VzIG9uIGR1cmluZyBmdXp6aW5nIOKAkyB0aGF0IHNlZW1zIGxpa2UgYSBrZXkgZW50cnkgcG9pbnQuIExldCBtZSBkb3VibGUtY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIHBvaW50cyB0byBjb25zaWRlci4gQWhhLCBgS1ZNX0FNRGAgaXMgdGhlIHByaW1hcnkgb25lLiBOb3csIGlzIHRoZXJlIGFueXRoaW5nIGFuYWxvZ291cyB0byBgWDg2X0ZFQVRVUkVfREVDT0RFQVNTSVNUU2AgaW4gdGVybXMgb2YgY29uZmlndXJhdGlvbj8gTm8sIGl0JiMzOTtzIGEgQ1BVIGZlYXR1cmUsIG5vdCBhIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbi4gR290IGl0LgoKTGV0IG1lIHN1bW1hcml6ZSBteSBmaW5kaW5ncy4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIHRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nOiBgV29ydGhGdXp6aW5nOiB0cnVlYC4gSGVyZSYjMzk7cyB0aGUgbGlzdCBvZiBmdW5jdGlvbnMgdGhhdCBhcHBlYXIgbW9zdCByZWxldmFudCBmb3IgZnV6emluZzoKKiAgIGBuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyYAoqICAgYG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkYAoqICAgYG5lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sYAoqICAgYG5lc3RlZF9zdm1fY2xlYXJfZGVjb2RlX2Fzc2lzdHNgCiogICBgbmVzdGVkX3N2bV9jb3B5X2RlY29kZV9hc3Npc3RzYAoKQW5kLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSBgS1ZNX0FNRGAgaXMgZW5hYmxlZCAoYEVuYWJsZUNvbmZpZ3M6IC0gS1ZNX0FNRGApLgoKVGhlIHJlYXNvbiBmb3IgZnV6emluZyBpcyBjbGVhcjogdGhpcyBwYXRjaCByZXNvbHZlcyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IHJlbGF0ZWQgdG8gbmVzdGVkIFNWTSB2aXJ0dWFsaXphdGlvbiwgc3BlY2lmaWNhbGx5IHdpdGggdGhlIHBvc3NpYmlsaXR5IG9mIERlY29kZUFzc2lzdCBkYXRhIGxlYWthZ2UgYmV0d2VlbiBWTSBleGl0cy4gVGhpcyBpbXBhY3RzIGNvcmUgS1ZNIFNWTSBsb2dpYywgdGhlIGNvcmUgZnVuY3Rpb24gaXMgdGhlIGNvZGUgaGFuZGxpbmcgbmVzdGVkIFZNIGV4aXRzIGFuZCBwcmVwYXJpbmcgVk1DQjAyIGNvbnRyb2xzLiBTaW5jZSB0aGlzIGNvZGUgaXMgZGlyZWN0bHkgYWNjZXNzaWJsZSBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIEtWTSBpb2N0bHPigJR0aGF0IGlzLCBydW5uaW5nIGEgbmVzdGVkIGd1ZXN04oCUaXQgaXMgYWJzb2x1dGVseSBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGlzIHBhdGNoIG1vZGlmaWVzIGZ1bmN0aW9uYWwgY29kZSwgcmVhY2hhYmxlIHRocm91Z2ggS1ZNIGlvY3RscywgbWFraW5nIHRoaXMgYSBjbGVhciBhcmVhIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9BTUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyJiMzNDssCiAgICAmIzM0O25lc3RlZF9zdm1fZXhpdF9oYW5kbGVkJiMzNDssCiAgICAmIzM0O25lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sJiMzNDssCiAgICAmIzM0O25lc3RlZF9zdm1fY2xlYXJfZGVjb2RlX2Fzc2lzdHMmIzM0OywKICAgICYjMzQ7bmVzdGVkX3N2bV9jb3B5X2RlY29kZV9hc3Npc3RzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG5lc3RlZCBTVk0gdmlydHVhbGl6YXRpb24gd2hlcmUgRGVjb2RlQXNzaXN0IGRhdGEgY291bGQgYmUgbGVha2VkIGZyb20gYSBwcmV2aW91cyBleGl0IHRvIGEgc3Vic2VxdWVudCBleGl0LiBJdCBtb2RpZmllcyBjb3JlIEtWTSBTVk0gbG9naWMgZm9yIGhhbmRsaW5nIG5lc3RlZCBWTSBleGl0cyBhbmQgcHJlcGFyaW5nIFZNQ0IwMiBjb250cm9scy4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBLVk0gaW9jdGxzIChzcGVjaWZpY2FsbHkgcnVubmluZyBhIG5lc3RlZCBndWVzdCksIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9BTUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyJiMzNDssCiAgICAmIzM0O25lc3RlZF9zdm1fZXhpdF9oYW5kbGVkJiMzNDssCiAgICAmIzM0O25lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sJiMzNDssCiAgICAmIzM0O25lc3RlZF9zdm1fY2xlYXJfZGVjb2RlX2Fzc2lzdHMmIzM0OywKICAgICYjMzQ7bmVzdGVkX3N2bV9jb3B5X2RlY29kZV9hc3Npc3RzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG5lc3RlZCBTVk0gdmlydHVhbGl6YXRpb24gd2hlcmUgRGVjb2RlQXNzaXN0IGRhdGEgY291bGQgYmUgbGVha2VkIGZyb20gYSBwcmV2aW91cyBleGl0IHRvIGEgc3Vic2VxdWVudCBleGl0LiBJdCBtb2RpZmllcyBjb3JlIEtWTSBTVk0gbG9naWMgZm9yIGhhbmRsaW5nIG5lc3RlZCBWTSBleGl0cyBhbmQgcHJlcGFyaW5nIFZNQ0IwMiBjb250cm9scy4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBLVk0gaW9jdGxzIChzcGVjaWZpY2FsbHkgcnVubmluZyBhIG5lc3RlZCBndWVzdCksIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzo0NTowMi4wODY1NTAwMTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTc0OTE2Mzc2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1fQU1EXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmVzdGVkX3N2bV92bWV4aXRfdXBkYXRlX3ZtY2IxMlwiLFxuICAgIFwibmVzdGVkX3N2bV9leGl0X2hhbmRsZWRcIixcbiAgICBcIm5lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sXCIsXG4gICAgXCJuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzXCIsXG4gICAgXCJuZXN0ZWRfc3ZtX2NvcHlfZGVjb2RlX2Fzc2lzdHNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBuZXN0ZWQgU1ZNIHZpcnR1YWxpemF0aW9uIHdoZXJlIERlY29kZUFzc2lzdCBkYXRhIGNvdWxkIGJlIGxlYWtlZCBmcm9tIGEgcHJldmlvdXMgZXhpdCB0byBhIHN1YnNlcXVlbnQgZXhpdC4gSXQgbW9kaWZpZXMgY29yZSBLVk0gU1ZNIGxvZ2ljIGZvciBoYW5kbGluZyBuZXN0ZWQgVk0gZXhpdHMgYW5kIHByZXBhcmluZyBWTUNCMDIgY29udHJvbHMuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgS1ZNIGlvY3RscyAoc3BlY2lmaWNhbGx5IHJ1bm5pbmcgYSBuZXN0ZWQgZ3Vlc3QpLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzo0NTowMi4wODY1NjAwNTlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3OTYxMDMzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDRlM2UzZDkxNmE5MWY0ZmVlZGRkNWRlZDdmZjRkZmJhYmM5YzI1MjVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdW4gMjkgMTM6NDU6MDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYyBiL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNcXG5pbmRleCBiMzQwZGM5OTkxYWRiNC4uNTBlOWZmYTVmOWZkNGQgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY1xcbisrKyBiL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNcXG5AQCAtMzMsNiArMzMsMzMgQEBcXG4gXFxuICNkZWZpbmUgQ0MgS1ZNX05FU1RFRF9WTUVOVEVSX0NPTlNJU1RFTkNZX0NIRUNLXFxuIFxcbitzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHN0cnVjdCB2bWNiICp2bWNiKVxcbit7XFxuK1xcdHZtY2ItXFx1MDAzZWNvbnRyb2wuaW5zbl9sZW4gPSAwO1xcbitcXHRtZW1zZXQodm1jYi1cXHUwMDNlY29udHJvbC5pbnNuX2J5dGVzLCAwLFxcbitcXHQgICAgICAgc2l6ZW9mKHZtY2ItXFx1MDAzZWNvbnRyb2wuaW5zbl9ieXRlcykpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX2NvcHlfZGVjb2RlX2Fzc2lzdHMoc3RydWN0IHZtY2IgKnRvLCBzdHJ1Y3Qgdm1jYiAqZnJvbSlcXG4re1xcbitcXHR1OCBpbnNuX2xlbiA9IGZyb20tXFx1MDAzZWNvbnRyb2wuaW5zbl9sZW47XFxuK1xcbitcXHRuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHRvKTtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIEhhcmR3YXJlIGxlYXZlcyBpbnNuX2xlbiB6ZXJvIHdoZW4gbm8gRGVjb2RlQXNzaXN0IGRhdGEgaXMgYXZhaWxhYmxlLlxcbitcXHQgKiBLZWVwIHRoYXQgYXMgdGhlIG5lc3RlZC12aXNpYmxlIFxcXCJubyBkZWNvZGUgaW5mb1xcXCIgbWFya2VyLlxcbitcXHQgKi9cXG4rXFx0aWYgKCFpbnNuX2xlbilcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0aWYgKFdBUk5fT05fT05DRShpbnNuX2xlbiBcXHUwMDNlIHNpemVvZihmcm9tLVxcdTAwM2Vjb250cm9sLmluc25fYnl0ZXMpKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0dG8tXFx1MDAzZWNvbnRyb2wuaW5zbl9sZW4gPSBpbnNuX2xlbjtcXG4rXFx0bWVtY3B5KHRvLVxcdTAwM2Vjb250cm9sLmluc25fYnl0ZXMsIGZyb20tXFx1MDAzZWNvbnRyb2wuaW5zbl9ieXRlcywgaW5zbl9sZW4pO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX2luamVjdF9ucGZfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuIFxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgeDg2X2V4Y2VwdGlvbiAqZmF1bHQpXFxuIHtcXG5AQCAtODM4LDcgKzg2NSwxMCBAQCBzdGF0aWMgdm9pZCBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfY29udHJvbChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcXG4gXFx0LypcXG4gXFx0ICogRmlsbGVkIGF0IGV4aXQ6IGV4aXRfY29kZSwgZXhpdF9pbmZvXzEsIGV4aXRfaW5mb18yLCBleGl0X2ludF9pbmZvLFxcbiBcXHQgKiBleGl0X2ludF9pbmZvX2VyciwgbmV4dF9yaXAsIGluc25fbGVuLCBpbnNuX2J5dGVzLlxcbitcXHQgKiBDbGVhciBzdGFsZSBEZWNvZGVBc3Npc3QgZGF0YSBiZWZvcmUgTDIgcnVucy5cXG4gXFx0ICovXFxuK1xcdG5lc3RlZF9zdm1fY2xlYXJfZGVjb2RlX2Fzc2lzdHModm1jYjAyKTtcXG4rXFx0c3ZtLVxcdTAwM2VuZXN0ZWQuZGVjb2RlX2Fzc2lzdHNfdmFsaWQgPSBmYWxzZTtcXG4gXFxuIFxcdGlmIChndWVzdF9jcHVfY2FwX2hhcyh2Y3B1LCBYODZfRkVBVFVSRV9WR0lGKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgKHZtY2IxMl9jdHJsLVxcdTAwM2VpbnRfY3RsIFxcdTAwMjYgVl9HSUZfRU5BQkxFX01BU0spKVxcbkBAIC0xMjUxLDYgKzEyODEsMTggQEAgc3RhdGljIGludCBuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0aWYgKGd1ZXN0X2NwdV9jYXBfaGFzKHZjcHUsIFg4Nl9GRUFUVVJFX05SSVBTKSlcXG4gXFx0XFx0dm1jYjEyLVxcdTAwM2Vjb250cm9sLm5leHRfcmlwICA9IHZtY2IwMi1cXHUwMDNlY29udHJvbC5uZXh0X3JpcDtcXG4gXFxuK1xcdC8qXFxuK1xcdCAqIENvcHkgRGVjb2RlQXNzaXN0IGRhdGEgb25seSBmb3IgcmVhbCBWTUNCMDIgZXhpdHMuICBLVk0tc3ludGhlc2l6ZWRcXG4rXFx0ICogZXhpdHMgcmVwb3J0IG5vIGRlY29kZSBpbmZvIHRvIEwxLlxcbitcXHQgKi9cXG4rXFx0aWYgKHN2bS1cXHUwMDNlbmVzdGVkLmRlY29kZV9hc3Npc3RzX3ZhbGlkIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBndWVzdF9jcHVfY2FwX2hhcyh2Y3B1LCBYODZfRkVBVFVSRV9ERUNPREVBU1NJU1RTKSlcXG4rXFx0XFx0bmVzdGVkX3N2bV9jb3B5X2RlY29kZV9hc3Npc3RzKHZtY2IxMiwgdm1jYjAyKTtcXG4rXFx0ZWxzZVxcbitcXHRcXHRuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHZtY2IxMik7XFxuK1xcbitcXHRzdm0tXFx1MDAzZW5lc3RlZC5kZWNvZGVfYXNzaXN0c192YWxpZCA9IGZhbHNlO1xcbitcXG4gXFx0aWYgKG5lc3RlZF92bWNiMTJfaGFzX2xicnYodmNwdSkpXFxuIFxcdFxcdHN2bV9jb3B5X2xicnMoXFx1MDAyNnZtY2IxMi1cXHUwMDNlc2F2ZSwgXFx1MDAyNnZtY2IwMi1cXHUwMDNlc2F2ZSk7XFxuIFxcbkBAIC0xNTkzLDggKzE2MzUsMTEgQEAgaW50IG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxcbiBcXG4gXFx0dm1leGl0ID0gbmVzdGVkX3N2bV9pbnRlcmNlcHQoc3ZtKTtcXG4gXFxuLVxcdGlmICh2bWV4aXQgPT0gTkVTVEVEX0VYSVRfRE9ORSlcXG4rXFx0aWYgKHZtZXhpdCA9PSBORVNURURfRVhJVF9ET05FKSB7XFxuK1xcdFxcdC8qIFRoaXMgcGF0aCByZWZsZWN0cyBhIHJlYWwgVk1DQjAyIGV4aXQgZGlyZWN0bHkgdG8gTDEuICovXFxuK1xcdFxcdHN2bS1cXHUwMDNlbmVzdGVkLmRlY29kZV9hc3Npc3RzX3ZhbGlkID0gdHJ1ZTtcXG4gXFx0XFx0bmVzdGVkX3N2bV92bWV4aXQoc3ZtKTtcXG4rXFx0fVxcbiBcXG4gXFx0cmV0dXJuIHZtZXhpdDtcXG4gfVxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xcbmluZGV4IGUwMmEzOGRhNTI5NmUzLi4zNjZlN2VmNzg3YjI2MCAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xcbkBAIC01NDcwLDYgKzU0NzAsOSBAQCBzdGF0aWMgX19pbml0IHZvaWQgc3ZtX3NldF9jcHVfY2Fwcyh2b2lkKVxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0a3ZtX2NwdV9jYXBfc2V0KFg4Nl9GRUFUVVJFX0ZMVVNIQllBU0lEKTtcXG4gXFxuK1xcdFxcdGlmIChib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfREVDT0RFQVNTSVNUUykpXFxuK1xcdFxcdFxcdGt2bV9jcHVfY2FwX3NldChYODZfRkVBVFVSRV9ERUNPREVBU1NJU1RTKTtcXG4rXFxuIFxcdFxcdGlmIChucmlwcylcXG4gXFx0XFx0XFx0a3ZtX2NwdV9jYXBfc2V0KFg4Nl9GRUFUVVJFX05SSVBTKTtcXG4gXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmggYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oXFxuaW5kZXggNTEzNzQxNmJlNTkzZDcuLmJlN2ZkY2QxMjRiNzQyIDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcXG4rKysgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oXFxuQEAgLTIzOCw2ICsyMzgsMTIgQEAgc3RydWN0IHN2bV9uZXN0ZWRfc3RhdGUge1xcbiBcXHQgKiBvbiBpdHMgc2lkZS5cXG4gXFx0ICovXFxuIFxcdGJvb2wgZm9yY2VfbXNyX2JpdG1hcF9yZWNhbGM7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBUcnVlIG9ubHkgd2hpbGUgcmVmbGVjdGluZyBhIHJlYWwgVk1DQjAyIGV4aXQgd2hvc2UgRGVjb2RlQXNzaXN0XFxuK1xcdCAqIGZpZWxkcyBtYXkgYmUgY29waWVkIHRvIFZNQ0IxMi4gIEtWTS1zeW50aGVzaXplZCBleGl0cyBsZWF2ZSBpdCBjbGVhci5cXG4rXFx0ICovXFxuK1xcdGJvb2wgZGVjb2RlX2Fzc2lzdHNfdmFsaWQ7XFxuIH07XFxuIFxcbiBzdHJ1Y3QgdmNwdV9zZXZfZXNfc3RhdGUge1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bVxcbmluZGV4IDkxMThhNWE1MWI4OWZkLi4yM2JmNTEwNzQzOTIyOCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bVxcbkBAIC0xMTQsNiArMTE0LDcgQEAgVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHg4Ni92bXhfcHJlZW1wdGlvbl90aW1lcl90ZXN0XFxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX3ZtY2FsbF90ZXN0XFxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX2ludF9jdGxfdGVzdFxcbiBURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9uZXN0ZWRfY2xlYXJfZWZlcl9zdm1lXFxuK1RFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX25lc3RlZF9kZWNvZGVfYXNzaXN0c190ZXN0XFxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX25lc3RlZF9zaHV0ZG93bl90ZXN0XFxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX25lc3RlZF9zb2Z0X2luamVjdF90ZXN0XFxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX25lc3RlZF92bWNiMTJfZ3BhXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaFxcbmluZGV4IDc3ZjU3NmVlNzc4OWQ4Li5lZTQ1MjBmZjJmODkzNyAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmhcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmhcXG5AQCAtMjAxLDYgKzIwMSw3IEBAIHN0cnVjdCBrdm1feDg2X2NwdV9mZWF0dXJlIHtcXG4gI2RlZmluZVxcdFg4Nl9GRUFUVVJFX0xCUlZcXHRcXHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMEEsIDAsIEVEWCwgMSlcXG4gI2RlZmluZVxcdFg4Nl9GRUFUVVJFX05SSVBTXFx0XFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDBBLCAwLCBFRFgsIDMpXFxuICNkZWZpbmUgWDg2X0ZFQVRVUkVfVFNDUkFURU1TUiAgICAgICAgICBLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMEEsIDAsIEVEWCwgNClcXG4rI2RlZmluZSBYODZfRkVBVFVSRV9ERUNPREVBU1NJU1RTICAgICAgIEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwQSwgMCwgRURYLCA3KVxcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1BBVVNFRklMVEVSICAgICAgICAgS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDBBLCAwLCBFRFgsIDEwKVxcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1BGVEhSRVNIT0xEICAgICAgICAgS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDBBLCAwLCBFRFgsIDEyKVxcbiAjZGVmaW5lXFx0WDg2X0ZFQVRVUkVfVl9WTVNBVkVfVk1MT0FEXFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDBBLCAwLCBFRFgsIDE1KVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N2bV9uZXN0ZWRfZGVjb2RlX2Fzc2lzdHNfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdm1fbmVzdGVkX2RlY29kZV9hc3Npc3RzX3Rlc3QuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjZiNWQzOGQ5ZDM2YzQ1XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3ZtX25lc3RlZF9kZWNvZGVfYXNzaXN0c190ZXN0LmNcXG5AQCAtMCwwICsxLDk5IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4rI2luY2x1ZGUgXFxcInRlc3RfdXRpbC5oXFxcIlxcbisjaW5jbHVkZSBcXFwia3ZtX3V0aWwuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInByb2Nlc3Nvci5oXFxcIlxcbisjaW5jbHVkZSBcXFwic3ZtX3V0aWwuaFxcXCJcXG4rXFxuKyNkZWZpbmUgTDJfR1VFU1RfU1RBQ0tfU0laRSA2NFxcbitcXG4rc3RhdGljIHVpbnQ2NF90IG5wZl90YXJnZXQgX19hbGlnbmVkKFBBR0VfU0laRSk7XFxuK1xcbitzdGF0aWMgdm9pZCBsMl9ndWVzdF9jb2RlKHZvaWQpXFxuK3tcXG4rXFx0YXNtIHZvbGF0aWxlKFxcXCJtb3YgKCUwKSwgJSVyYXhcXFwiIDogOiBcXFwiclxcXCIoXFx1MDAyNm5wZl90YXJnZXQpIDogXFxcInJheFxcXCIsIFxcXCJtZW1vcnlcXFwiKTtcXG4rXFx0R1VFU1RfRkFJTChcXFwiTDIgYWNjZXNzIGRpZCBub3QgY2F1c2UgYSBuZXN0ZWQgcGFnZSBmYXVsdFxcXCIpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBsMl92bW1jYWxsX2NvZGUodm9pZClcXG4re1xcbitcXHRhc20gdm9sYXRpbGUoXFxcInZtbWNhbGxcXFwiKTtcXG4rXFx0R1VFU1RfRkFJTChcXFwiTDIgZGlkIG5vdCBleGl0IG9uIFZNTUNBTExcXFwiKTtcXG4rfVxcbitcXG4rLypcXG4rICogV2hlbmV2ZXIgaGFyZHdhcmUgcmVwb3J0cyBEZWNvZGVBc3Npc3QgaW5mb3JtYXRpb24gKGluc25fbGVuICE9IDApLCB0aGUgYnl0ZXNcXG4rICogS1ZNIHJlZmxlY3RzIGludG8gVk1DQjEyIG11c3QgYmUgdGhlIGluc3RydWN0aW9uIGF0IHRoZSBjdXJyZW50IFJJUCwgbmV2ZXJcXG4rICogc3RhbGUgYnl0ZXMgY2FycmllZCBvdmVyIGZyb20gYSBwcmV2aW91cyBMMiBleGl0LlxcbisgKi9cXG4rc3RhdGljIHZvaWQgYXNzZXJ0X2RlY29kZV9hc3Npc3RzX3NhbmUoc3RydWN0IHZtY2IgKnZtY2IpXFxuK3tcXG4rXFx0R1VFU1RfQVNTRVJUKHZtY2ItXFx1MDAzZWNvbnRyb2wuaW5zbl9sZW4gXFx1MDAzYz1cXG4rXFx0XFx0ICAgICBzaXplb2Yodm1jYi1cXHUwMDNlY29udHJvbC5pbnNuX2J5dGVzKSk7XFxuK1xcdGlmICh2bWNiLVxcdTAwM2Vjb250cm9sLmluc25fbGVuKVxcbitcXHRcXHRHVUVTVF9BU1NFUlQoIW1lbWNtcCh2bWNiLVxcdTAwM2Vjb250cm9sLmluc25fYnl0ZXMsXFxuK1xcdFxcdFxcdFxcdCAgICAgKHZvaWQgKil2bWNiLVxcdTAwM2VzYXZlLnJpcCxcXG4rXFx0XFx0XFx0XFx0ICAgICB2bWNiLVxcdTAwM2Vjb250cm9sLmluc25fbGVuKSk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIGwxX2d1ZXN0X2NvZGUoc3RydWN0IHN2bV90ZXN0X2RhdGEgKnN2bSlcXG4re1xcbitcXHR1bnNpZ25lZCBsb25nIGwyX2d1ZXN0X3N0YWNrW0wyX0dVRVNUX1NUQUNLX1NJWkVdO1xcbitcXHRzdHJ1Y3Qgdm1jYiAqdm1jYiA9IHN2bS1cXHUwMDNldm1jYjtcXG4rXFxuK1xcdEdVRVNUX0FTU0VSVCh0aGlzX2NwdV9oYXMoWDg2X0ZFQVRVUkVfREVDT0RFQVNTSVNUUykpO1xcbitcXG4rXFx0Z2VuZXJpY19zdm1fc2V0dXAoc3ZtLCBsMl9ndWVzdF9jb2RlLFxcbitcXHRcXHRcXHQgIFxcdTAwMjZsMl9ndWVzdF9zdGFja1tMMl9HVUVTVF9TVEFDS19TSVpFXSk7XFxuK1xcbitcXHQvKiBBIHJlYWwgbmVzdGVkICNOUEYgbXVzdCByZWZsZWN0IHZhbGlkIGRlY29kZSBpbmZvcm1hdGlvbiB0byBMMS4gKi9cXG4rXFx0cnVuX2d1ZXN0KHZtY2IsIHN2bS1cXHUwMDNldm1jYl9ncGEpO1xcbitcXG4rXFx0R1VFU1RfQVNTRVJUX0VRKHZtY2ItXFx1MDAzZWNvbnRyb2wuZXhpdF9jb2RlLCBTVk1fRVhJVF9OUEYpO1xcbitcXHRHVUVTVF9BU1NFUlQodm1jYi1cXHUwMDNlY29udHJvbC5pbnNuX2xlbik7XFxuK1xcdGFzc2VydF9kZWNvZGVfYXNzaXN0c19zYW5lKHZtY2IpO1xcbitcXG4rXFx0LypcXG4rXFx0ICogUmVkaXJlY3QgTDIgcGFzdCB0aGUgc3RpbGwtZmF1bHRpbmcgYWNjZXNzIHRvIGEgVk1NQ0FMTC4gIEtWTSByZXVzZXNcXG4rXFx0ICogaXRzIGludGVybmFsIFZNQ0IwMiwgd2hpY2ggbm93IGhvbGRzIHRoZSAjTlBGJ3MgZGVjb2RlIGJ5dGVzLCBzbyB0aGlzXFxuK1xcdCAqIGV4ZXJjaXNlcyB0aGUgcGF0aCB0aGF0IG11c3QgY2xlYXIgRGVjb2RlQXNzaXN0IHN0YXRlIGFuZCBlbnN1cmVzIHRoZVxcbitcXHQgKiBwcmlvciBleGl0J3MgYnl0ZXMgYXJlIG5vdCBsZWFrZWQgaW50byBhIHN1YnNlcXVlbnQgZXhpdC5cXG4rXFx0ICovXFxuK1xcdHZtY2ItXFx1MDAzZXNhdmUucmlwID0gKHU2NClsMl92bW1jYWxsX2NvZGU7XFxuK1xcdHJ1bl9ndWVzdCh2bWNiLCBzdm0tXFx1MDAzZXZtY2JfZ3BhKTtcXG4rXFxuK1xcdEdVRVNUX0FTU0VSVF9FUSh2bWNiLVxcdTAwM2Vjb250cm9sLmV4aXRfY29kZSwgU1ZNX0VYSVRfVk1NQ0FMTCk7XFxuK1xcdGFzc2VydF9kZWNvZGVfYXNzaXN0c19zYW5lKHZtY2IpO1xcbitcXG4rXFx0R1VFU1RfRE9ORSgpO1xcbit9XFxuK1xcbitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbit7XFxuK1xcdGd2YV90IHN2bV9ndmEsIG5wZl9ndmE7XFxuK1xcdGdwYV90IG5wZl9ncGE7XFxuK1xcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcXG4rXFx0c3RydWN0IGt2bV92bSAqdm07XFxuK1xcdHU2NCAqcHRlO1xcbitcXG4rXFx0VEVTVF9SRVFVSVJFKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX1NWTSkpO1xcbitcXHRURVNUX1JFUVVJUkUoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfTlBUKSk7XFxuK1xcdFRFU1RfUkVRVUlSRShrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9ERUNPREVBU1NJU1RTKSk7XFxuK1xcbitcXHR2bSA9IHZtX2NyZWF0ZV93aXRoX29uZV92Y3B1KFxcdTAwMjZ2Y3B1LCBsMV9ndWVzdF9jb2RlKTtcXG4rXFx0dm1fZW5hYmxlX25wdCh2bSk7XFxuK1xcdHZjcHVfYWxsb2Nfc3ZtKHZtLCBcXHUwMDI2c3ZtX2d2YSk7XFxuK1xcdG5wZl9ndmEgPSAoZ3ZhX3QpXFx1MDAyNm5wZl90YXJnZXQ7XFxuK1xcdG5wZl9ncGEgPSBhZGRyX2d2YTJncGEodm0sIG5wZl9ndmEpO1xcbitcXG4rXFx0dGRwX2lkZW50aXR5X21hcF9kZWZhdWx0X21lbXNsb3RzKHZtKTtcXG4rXFx0cHRlID0gdGRwX2dldF9wdGUodm0sIG5wZl9ncGEpO1xcbitcXHQqcHRlIFxcdTAwMjY9IH5QVEVfUFJFU0VOVF9NQVNLKFxcdTAwMjZ2bS1cXHUwMDNlc3RhZ2UyX21tdSk7XFxuK1xcbitcXHR2Y3B1X2FyZ3Nfc2V0KHZjcHUsIDEsIHN2bV9ndmEpO1xcbitcXHR2Y3B1X3J1bih2Y3B1KTtcXG4rXFx0VEVTVF9BU1NFUlRfS1ZNX0VYSVRfUkVBU09OKHZjcHUsIEtWTV9FWElUX0lPKTtcXG4rXFx0VEVTVF9BU1NFUlRfRVEoZ2V0X3VjYWxsKHZjcHUsIE5VTEwpLCBVQ0FMTF9ET05FKTtcXG4rXFxuK1xcdGt2bV92bV9mcmVlKHZtKTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTM6NDU6MDIuNjY3Mjg4MzgyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTE2ODQxMjk2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1fQU1EXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmVzdGVkX3N2bV92bWV4aXRfdXBkYXRlX3ZtY2IxMlwiLFxuICAgIFwibmVzdGVkX3N2bV9leGl0X2hhbmRsZWRcIixcbiAgICBcIm5lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sXCIsXG4gICAgXCJuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzXCIsXG4gICAgXCJuZXN0ZWRfc3ZtX2NvcHlfZGVjb2RlX2Fzc2lzdHNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBuZXN0ZWQgU1ZNIHZpcnR1YWxpemF0aW9uIHdoZXJlIERlY29kZUFzc2lzdCBkYXRhIGNvdWxkIGJlIGxlYWtlZCBmcm9tIGEgcHJldmlvdXMgZXhpdCB0byBhIHN1YnNlcXVlbnQgZXhpdC4gSXQgbW9kaWZpZXMgY29yZSBLVk0gU1ZNIGxvZ2ljIGZvciBoYW5kbGluZyBuZXN0ZWQgVk0gZXhpdHMgYW5kIHByZXBhcmluZyBWTUNCMDIgY29udHJvbHMuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgS1ZNIGlvY3RscyAoc3BlY2lmaWNhbGx5IHJ1bm5pbmcgYSBuZXN0ZWQgZ3Vlc3QpLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDRlM2UzZDkxNmE5MWY0ZmVlZGRkNWRlZDdmZjRkZmJhYmM5YzI1MjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyOSAxMzo0NTowMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jXG5pbmRleCBiMzQwZGM5OTkxYWRiNC4uNTBlOWZmYTVmOWZkNGQgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jXG4rKysgYi9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jXG5AQCAtMzMsNiArMzMsMzMgQEBcbiBcbiAjZGVmaW5lIENDIEtWTV9ORVNURURfVk1FTlRFUl9DT05TSVNURU5DWV9DSEVDS1xuIFxuK3N0YXRpYyB2b2lkIG5lc3RlZF9zdm1fY2xlYXJfZGVjb2RlX2Fzc2lzdHMoc3RydWN0IHZtY2IgKnZtY2IpXG4re1xuK1x0dm1jYi1cdTAwM2Vjb250cm9sLmluc25fbGVuID0gMDtcbitcdG1lbXNldCh2bWNiLVx1MDAzZWNvbnRyb2wuaW5zbl9ieXRlcywgMCxcbitcdCAgICAgICBzaXplb2Yodm1jYi1cdTAwM2Vjb250cm9sLmluc25fYnl0ZXMpKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgbmVzdGVkX3N2bV9jb3B5X2RlY29kZV9hc3Npc3RzKHN0cnVjdCB2bWNiICp0bywgc3RydWN0IHZtY2IgKmZyb20pXG4re1xuK1x0dTggaW5zbl9sZW4gPSBmcm9tLVx1MDAzZWNvbnRyb2wuaW5zbl9sZW47XG4rXG4rXHRuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHRvKTtcbitcbitcdC8qXG4rXHQgKiBIYXJkd2FyZSBsZWF2ZXMgaW5zbl9sZW4gemVybyB3aGVuIG5vIERlY29kZUFzc2lzdCBkYXRhIGlzIGF2YWlsYWJsZS5cbitcdCAqIEtlZXAgdGhhdCBhcyB0aGUgbmVzdGVkLXZpc2libGUgXCJubyBkZWNvZGUgaW5mb1wiIG1hcmtlci5cbitcdCAqL1xuK1x0aWYgKCFpbnNuX2xlbilcbitcdFx0cmV0dXJuO1xuK1xuK1x0aWYgKFdBUk5fT05fT05DRShpbnNuX2xlbiBcdTAwM2Ugc2l6ZW9mKGZyb20tXHUwMDNlY29udHJvbC5pbnNuX2J5dGVzKSkpXG4rXHRcdHJldHVybjtcbitcbitcdHRvLVx1MDAzZWNvbnRyb2wuaW5zbl9sZW4gPSBpbnNuX2xlbjtcbitcdG1lbWNweSh0by1cdTAwM2Vjb250cm9sLmluc25fYnl0ZXMsIGZyb20tXHUwMDNlY29udHJvbC5pbnNuX2J5dGVzLCBpbnNuX2xlbik7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIG5lc3RlZF9zdm1faW5qZWN0X25wZl9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbiBcdFx0XHRcdCAgICAgICBzdHJ1Y3QgeDg2X2V4Y2VwdGlvbiAqZmF1bHQpXG4ge1xuQEAgLTgzOCw3ICs4NjUsMTAgQEAgc3RhdGljIHZvaWQgbmVzdGVkX3ZtY2IwMl9wcmVwYXJlX2NvbnRyb2woc3RydWN0IHZjcHVfc3ZtICpzdm0pXG4gXHQvKlxuIFx0ICogRmlsbGVkIGF0IGV4aXQ6IGV4aXRfY29kZSwgZXhpdF9pbmZvXzEsIGV4aXRfaW5mb18yLCBleGl0X2ludF9pbmZvLFxuIFx0ICogZXhpdF9pbnRfaW5mb19lcnIsIG5leHRfcmlwLCBpbnNuX2xlbiwgaW5zbl9ieXRlcy5cbitcdCAqIENsZWFyIHN0YWxlIERlY29kZUFzc2lzdCBkYXRhIGJlZm9yZSBMMiBydW5zLlxuIFx0ICovXG4rXHRuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHZtY2IwMik7XG4rXHRzdm0tXHUwMDNlbmVzdGVkLmRlY29kZV9hc3Npc3RzX3ZhbGlkID0gZmFsc2U7XG4gXG4gXHRpZiAoZ3Vlc3RfY3B1X2NhcF9oYXModmNwdSwgWDg2X0ZFQVRVUkVfVkdJRikgXHUwMDI2XHUwMDI2XG4gXHQgICAgKHZtY2IxMl9jdHJsLVx1MDAzZWludF9jdGwgXHUwMDI2IFZfR0lGX0VOQUJMRV9NQVNLKSlcbkBAIC0xMjUxLDYgKzEyODEsMTggQEAgc3RhdGljIGludCBuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdGlmIChndWVzdF9jcHVfY2FwX2hhcyh2Y3B1LCBYODZfRkVBVFVSRV9OUklQUykpXG4gXHRcdHZtY2IxMi1cdTAwM2Vjb250cm9sLm5leHRfcmlwICA9IHZtY2IwMi1cdTAwM2Vjb250cm9sLm5leHRfcmlwO1xuIFxuK1x0LypcbitcdCAqIENvcHkgRGVjb2RlQXNzaXN0IGRhdGEgb25seSBmb3IgcmVhbCBWTUNCMDIgZXhpdHMuICBLVk0tc3ludGhlc2l6ZWRcbitcdCAqIGV4aXRzIHJlcG9ydCBubyBkZWNvZGUgaW5mbyB0byBMMS5cbitcdCAqL1xuK1x0aWYgKHN2bS1cdTAwM2VuZXN0ZWQuZGVjb2RlX2Fzc2lzdHNfdmFsaWQgXHUwMDI2XHUwMDI2XG4rXHQgICAgZ3Vlc3RfY3B1X2NhcF9oYXModmNwdSwgWDg2X0ZFQVRVUkVfREVDT0RFQVNTSVNUUykpXG4rXHRcdG5lc3RlZF9zdm1fY29weV9kZWNvZGVfYXNzaXN0cyh2bWNiMTIsIHZtY2IwMik7XG4rXHRlbHNlXG4rXHRcdG5lc3RlZF9zdm1fY2xlYXJfZGVjb2RlX2Fzc2lzdHModm1jYjEyKTtcbitcbitcdHN2bS1cdTAwM2VuZXN0ZWQuZGVjb2RlX2Fzc2lzdHNfdmFsaWQgPSBmYWxzZTtcbitcbiBcdGlmIChuZXN0ZWRfdm1jYjEyX2hhc19sYnJ2KHZjcHUpKVxuIFx0XHRzdm1fY29weV9sYnJzKFx1MDAyNnZtY2IxMi1cdTAwM2VzYXZlLCBcdTAwMjZ2bWNiMDItXHUwMDNlc2F2ZSk7XG4gXG5AQCAtMTU5Myw4ICsxNjM1LDExIEBAIGludCBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbiBcbiBcdHZtZXhpdCA9IG5lc3RlZF9zdm1faW50ZXJjZXB0KHN2bSk7XG4gXG4tXHRpZiAodm1leGl0ID09IE5FU1RFRF9FWElUX0RPTkUpXG4rXHRpZiAodm1leGl0ID09IE5FU1RFRF9FWElUX0RPTkUpIHtcbitcdFx0LyogVGhpcyBwYXRoIHJlZmxlY3RzIGEgcmVhbCBWTUNCMDIgZXhpdCBkaXJlY3RseSB0byBMMS4gKi9cbitcdFx0c3ZtLVx1MDAzZW5lc3RlZC5kZWNvZGVfYXNzaXN0c192YWxpZCA9IHRydWU7XG4gXHRcdG5lc3RlZF9zdm1fdm1leGl0KHN2bSk7XG4rXHR9XG4gXG4gXHRyZXR1cm4gdm1leGl0O1xuIH1cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xuaW5kZXggZTAyYTM4ZGE1Mjk2ZTMuLjM2NmU3ZWY3ODdiMjYwIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xuKysrIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xuQEAgLTU0NzAsNiArNTQ3MCw5IEBAIHN0YXRpYyBfX2luaXQgdm9pZCBzdm1fc2V0X2NwdV9jYXBzKHZvaWQpXG4gXHRcdCAqL1xuIFx0XHRrdm1fY3B1X2NhcF9zZXQoWDg2X0ZFQVRVUkVfRkxVU0hCWUFTSUQpO1xuIFxuK1x0XHRpZiAoYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0RFQ09ERUFTU0lTVFMpKVxuK1x0XHRcdGt2bV9jcHVfY2FwX3NldChYODZfRkVBVFVSRV9ERUNPREVBU1NJU1RTKTtcbitcbiBcdFx0aWYgKG5yaXBzKVxuIFx0XHRcdGt2bV9jcHVfY2FwX3NldChYODZfRkVBVFVSRV9OUklQUyk7XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uaCBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbmluZGV4IDUxMzc0MTZiZTU5M2Q3Li5iZTdmZGNkMTI0Yjc0MiAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbisrKyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbkBAIC0yMzgsNiArMjM4LDEyIEBAIHN0cnVjdCBzdm1fbmVzdGVkX3N0YXRlIHtcbiBcdCAqIG9uIGl0cyBzaWRlLlxuIFx0ICovXG4gXHRib29sIGZvcmNlX21zcl9iaXRtYXBfcmVjYWxjO1xuK1xuK1x0LypcbitcdCAqIFRydWUgb25seSB3aGlsZSByZWZsZWN0aW5nIGEgcmVhbCBWTUNCMDIgZXhpdCB3aG9zZSBEZWNvZGVBc3Npc3RcbitcdCAqIGZpZWxkcyBtYXkgYmUgY29waWVkIHRvIFZNQ0IxMi4gIEtWTS1zeW50aGVzaXplZCBleGl0cyBsZWF2ZSBpdCBjbGVhci5cbitcdCAqL1xuK1x0Ym9vbCBkZWNvZGVfYXNzaXN0c192YWxpZDtcbiB9O1xuIFxuIHN0cnVjdCB2Y3B1X3Nldl9lc19zdGF0ZSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cbmluZGV4IDkxMThhNWE1MWI4OWZkLi4yM2JmNTEwNzQzOTIyOCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cbkBAIC0xMTQsNiArMTE0LDcgQEAgVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHg4Ni92bXhfcHJlZW1wdGlvbl90aW1lcl90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHg4Ni9zdm1fdm1jYWxsX3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9pbnRfY3RsX3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9uZXN0ZWRfY2xlYXJfZWZlcl9zdm1lXG4rVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHg4Ni9zdm1fbmVzdGVkX2RlY29kZV9hc3Npc3RzX3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9uZXN0ZWRfc2h1dGRvd25fdGVzdFxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX25lc3RlZF9zb2Z0X2luamVjdF90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHg4Ni9zdm1fbmVzdGVkX3ZtY2IxMl9ncGFcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmhcbmluZGV4IDc3ZjU3NmVlNzc4OWQ4Li5lZTQ1MjBmZjJmODkzNyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXG5AQCAtMjAxLDYgKzIwMSw3IEBAIHN0cnVjdCBrdm1feDg2X2NwdV9mZWF0dXJlIHtcbiAjZGVmaW5lXHRYODZfRkVBVFVSRV9MQlJWXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwQSwgMCwgRURYLCAxKVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX05SSVBTXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwQSwgMCwgRURYLCAzKVxuICNkZWZpbmUgWDg2X0ZFQVRVUkVfVFNDUkFURU1TUiAgICAgICAgICBLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMEEsIDAsIEVEWCwgNClcbisjZGVmaW5lIFg4Nl9GRUFUVVJFX0RFQ09ERUFTU0lTVFMgICAgICAgS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDBBLCAwLCBFRFgsIDcpXG4gI2RlZmluZSBYODZfRkVBVFVSRV9QQVVTRUZJTFRFUiAgICAgICAgIEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwQSwgMCwgRURYLCAxMClcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1BGVEhSRVNIT0xEICAgICAgICAgS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDBBLCAwLCBFRFgsIDEyKVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX1ZfVk1TQVZFX1ZNTE9BRFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDBBLCAwLCBFRFgsIDE1KVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3ZtX25lc3RlZF9kZWNvZGVfYXNzaXN0c190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N2bV9uZXN0ZWRfZGVjb2RlX2Fzc2lzdHNfdGVzdC5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjZiNWQzOGQ5ZDM2YzQ1XG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N2bV9uZXN0ZWRfZGVjb2RlX2Fzc2lzdHNfdGVzdC5jXG5AQCAtMCwwICsxLDk5IEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuKyNpbmNsdWRlIFwidGVzdF91dGlsLmhcIlxuKyNpbmNsdWRlIFwia3ZtX3V0aWwuaFwiXG4rI2luY2x1ZGUgXCJwcm9jZXNzb3IuaFwiXG4rI2luY2x1ZGUgXCJzdm1fdXRpbC5oXCJcbitcbisjZGVmaW5lIEwyX0dVRVNUX1NUQUNLX1NJWkUgNjRcbitcbitzdGF0aWMgdWludDY0X3QgbnBmX3RhcmdldCBfX2FsaWduZWQoUEFHRV9TSVpFKTtcbitcbitzdGF0aWMgdm9pZCBsMl9ndWVzdF9jb2RlKHZvaWQpXG4re1xuK1x0YXNtIHZvbGF0aWxlKFwibW92ICglMCksICUlcmF4XCIgOiA6IFwiclwiKFx1MDAyNm5wZl90YXJnZXQpIDogXCJyYXhcIiwgXCJtZW1vcnlcIik7XG4rXHRHVUVTVF9GQUlMKFwiTDIgYWNjZXNzIGRpZCBub3QgY2F1c2UgYSBuZXN0ZWQgcGFnZSBmYXVsdFwiKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgbDJfdm1tY2FsbF9jb2RlKHZvaWQpXG4re1xuK1x0YXNtIHZvbGF0aWxlKFwidm1tY2FsbFwiKTtcbitcdEdVRVNUX0ZBSUwoXCJMMiBkaWQgbm90IGV4aXQgb24gVk1NQ0FMTFwiKTtcbit9XG4rXG4rLypcbisgKiBXaGVuZXZlciBoYXJkd2FyZSByZXBvcnRzIERlY29kZUFzc2lzdCBpbmZvcm1hdGlvbiAoaW5zbl9sZW4gIT0gMCksIHRoZSBieXRlc1xuKyAqIEtWTSByZWZsZWN0cyBpbnRvIFZNQ0IxMiBtdXN0IGJlIHRoZSBpbnN0cnVjdGlvbiBhdCB0aGUgY3VycmVudCBSSVAsIG5ldmVyXG4rICogc3RhbGUgYnl0ZXMgY2FycmllZCBvdmVyIGZyb20gYSBwcmV2aW91cyBMMiBleGl0LlxuKyAqL1xuK3N0YXRpYyB2b2lkIGFzc2VydF9kZWNvZGVfYXNzaXN0c19zYW5lKHN0cnVjdCB2bWNiICp2bWNiKVxuK3tcbitcdEdVRVNUX0FTU0VSVCh2bWNiLVx1MDAzZWNvbnRyb2wuaW5zbl9sZW4gXHUwMDNjPVxuK1x0XHQgICAgIHNpemVvZih2bWNiLVx1MDAzZWNvbnRyb2wuaW5zbl9ieXRlcykpO1xuK1x0aWYgKHZtY2ItXHUwMDNlY29udHJvbC5pbnNuX2xlbilcbitcdFx0R1VFU1RfQVNTRVJUKCFtZW1jbXAodm1jYi1cdTAwM2Vjb250cm9sLmluc25fYnl0ZXMsXG4rXHRcdFx0XHQgICAgICh2b2lkICopdm1jYi1cdTAwM2VzYXZlLnJpcCxcbitcdFx0XHRcdCAgICAgdm1jYi1cdTAwM2Vjb250cm9sLmluc25fbGVuKSk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIGwxX2d1ZXN0X2NvZGUoc3RydWN0IHN2bV90ZXN0X2RhdGEgKnN2bSlcbit7XG4rXHR1bnNpZ25lZCBsb25nIGwyX2d1ZXN0X3N0YWNrW0wyX0dVRVNUX1NUQUNLX1NJWkVdO1xuK1x0c3RydWN0IHZtY2IgKnZtY2IgPSBzdm0tXHUwMDNldm1jYjtcbitcbitcdEdVRVNUX0FTU0VSVCh0aGlzX2NwdV9oYXMoWDg2X0ZFQVRVUkVfREVDT0RFQVNTSVNUUykpO1xuK1xuK1x0Z2VuZXJpY19zdm1fc2V0dXAoc3ZtLCBsMl9ndWVzdF9jb2RlLFxuK1x0XHRcdCAgXHUwMDI2bDJfZ3Vlc3Rfc3RhY2tbTDJfR1VFU1RfU1RBQ0tfU0laRV0pO1xuK1xuK1x0LyogQSByZWFsIG5lc3RlZCAjTlBGIG11c3QgcmVmbGVjdCB2YWxpZCBkZWNvZGUgaW5mb3JtYXRpb24gdG8gTDEuICovXG4rXHRydW5fZ3Vlc3Qodm1jYiwgc3ZtLVx1MDAzZXZtY2JfZ3BhKTtcbitcbitcdEdVRVNUX0FTU0VSVF9FUSh2bWNiLVx1MDAzZWNvbnRyb2wuZXhpdF9jb2RlLCBTVk1fRVhJVF9OUEYpO1xuK1x0R1VFU1RfQVNTRVJUKHZtY2ItXHUwMDNlY29udHJvbC5pbnNuX2xlbik7XG4rXHRhc3NlcnRfZGVjb2RlX2Fzc2lzdHNfc2FuZSh2bWNiKTtcbitcbitcdC8qXG4rXHQgKiBSZWRpcmVjdCBMMiBwYXN0IHRoZSBzdGlsbC1mYXVsdGluZyBhY2Nlc3MgdG8gYSBWTU1DQUxMLiAgS1ZNIHJldXNlc1xuK1x0ICogaXRzIGludGVybmFsIFZNQ0IwMiwgd2hpY2ggbm93IGhvbGRzIHRoZSAjTlBGJ3MgZGVjb2RlIGJ5dGVzLCBzbyB0aGlzXG4rXHQgKiBleGVyY2lzZXMgdGhlIHBhdGggdGhhdCBtdXN0IGNsZWFyIERlY29kZUFzc2lzdCBzdGF0ZSBhbmQgZW5zdXJlcyB0aGVcbitcdCAqIHByaW9yIGV4aXQncyBieXRlcyBhcmUgbm90IGxlYWtlZCBpbnRvIGEgc3Vic2VxdWVudCBleGl0LlxuK1x0ICovXG4rXHR2bWNiLVx1MDAzZXNhdmUucmlwID0gKHU2NClsMl92bW1jYWxsX2NvZGU7XG4rXHRydW5fZ3Vlc3Qodm1jYiwgc3ZtLVx1MDAzZXZtY2JfZ3BhKTtcbitcbitcdEdVRVNUX0FTU0VSVF9FUSh2bWNiLVx1MDAzZWNvbnRyb2wuZXhpdF9jb2RlLCBTVk1fRVhJVF9WTU1DQUxMKTtcbitcdGFzc2VydF9kZWNvZGVfYXNzaXN0c19zYW5lKHZtY2IpO1xuK1xuK1x0R1VFU1RfRE9ORSgpO1xuK31cbitcbitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuK3tcbitcdGd2YV90IHN2bV9ndmEsIG5wZl9ndmE7XG4rXHRncGFfdCBucGZfZ3BhO1xuK1x0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xuK1x0c3RydWN0IGt2bV92bSAqdm07XG4rXHR1NjQgKnB0ZTtcbitcbitcdFRFU1RfUkVRVUlSRShrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9TVk0pKTtcbitcdFRFU1RfUkVRVUlSRShrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9OUFQpKTtcbitcdFRFU1RfUkVRVUlSRShrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9ERUNPREVBU1NJU1RTKSk7XG4rXG4rXHR2bSA9IHZtX2NyZWF0ZV93aXRoX29uZV92Y3B1KFx1MDAyNnZjcHUsIGwxX2d1ZXN0X2NvZGUpO1xuK1x0dm1fZW5hYmxlX25wdCh2bSk7XG4rXHR2Y3B1X2FsbG9jX3N2bSh2bSwgXHUwMDI2c3ZtX2d2YSk7XG4rXHRucGZfZ3ZhID0gKGd2YV90KVx1MDAyNm5wZl90YXJnZXQ7XG4rXHRucGZfZ3BhID0gYWRkcl9ndmEyZ3BhKHZtLCBucGZfZ3ZhKTtcbitcbitcdHRkcF9pZGVudGl0eV9tYXBfZGVmYXVsdF9tZW1zbG90cyh2bSk7XG4rXHRwdGUgPSB0ZHBfZ2V0X3B0ZSh2bSwgbnBmX2dwYSk7XG4rXHQqcHRlIFx1MDAyNj0gflBURV9QUkVTRU5UX01BU0soXHUwMDI2dm0tXHUwMDNlc3RhZ2UyX21tdSk7XG4rXG4rXHR2Y3B1X2FyZ3Nfc2V0KHZjcHUsIDEsIHN2bV9ndmEpO1xuK1x0dmNwdV9ydW4odmNwdSk7XG4rXHRURVNUX0FTU0VSVF9LVk1fRVhJVF9SRUFTT04odmNwdSwgS1ZNX0VYSVRfSU8pO1xuK1x0VEVTVF9BU1NFUlRfRVEoZ2V0X3VjYWxsKHZjcHUsIE5VTEwpLCBVQ0FMTF9ET05FKTtcbitcbitcdGt2bV92bV9mcmVlKHZtKTtcbitcdHJldHVybiAwO1xuK31cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjQ1OjAyLjY2NzI5MjU0MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMjEzNTc2MzY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtWTSBQYXRjaCBmb3IgTmVzdGVkIEFNRCBTVk0qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIHRvdWNoaW5nIGBhcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jYCBhbmQgYGFyY2gveDg2L2t2bS9zdm0vc3ZtLmNgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgZm9jdXNlZCBvbiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gd2l0aCBBTUQncyBTZWN1cmUgVmlydHVhbCBNYWNoaW5lIChTVk0pIHRlY2hub2xvZ3kgd2l0aGluIEtWTS4gU3BlY2lmaWNhbGx5LCBJIHNlZSBpdCdzIGludHJvZHVjaW5nIGBuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzYCBhbmQgYG5lc3RlZF9zdm1fY29weV9kZWNvZGVfYXNzaXN0c2AsIGFuZCBtb2RpZnlpbmcgYG5lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sYCwgYG5lc3RlZF9zdm1fdm1leGl0X3VwZGF0ZV92bWNiMTJgLCBhbmQgYG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkYC4gUGx1cywgaXQncyBhZGRpbmcgYFg4Nl9GRUFUVVJFX0RFQ09ERUFTU0lTVFNgIHRvIGBzdm1fc2V0X2NwdV9jYXBzYC4gVGhpcyBhbGwgcG9pbnRzIHRvd2FyZHMgZGVhbGluZyB3aXRoIERlY29kZUFzc2lzdCBkYXRhIGluIGEgbmVzdGVkIFNWTSBlbnZpcm9ubWVudC5cblxuQWgsIHJpZ2h0LCB0aGlzIGlzIGFib3V0IGZpeGluZyBhIHBvdGVudGlhbCBsZWFrLiBJdCdzIG1ha2luZyBzdXJlIHRoYXQgRGVjb2RlQXNzaXN0IGluZm9ybWF0aW9uLCBsaWtlIHRoZSBpbnN0cnVjdGlvbiBieXRlcyBhbmQgbGVuZ3RocywgaXNuJ3QgYmVpbmcgY2FycmllZCBvdmVyIGltcHJvcGVybHkgZnJvbSBvbmUgVk0gZXhpdCB0byB0aGUgbmV4dCBpbiB0aGUgbmVzdGVkIHNjZW5hcmlvLiBTbywgaXQncyBjbGVhcmluZyB0aGUgYXNzaXN0IGRhdGEgYmVmb3JlIHJ1bm5pbmcgdGhlIExldmVsIDIgVk0gYW5kIGNvcHlpbmcgb25seSB3aGVuIGl0J3MgdmFsaWQgZm9yIFZNQ0IwMiBleGl0cy4gVGhhdCdzIGEgY2xhc3NpYyByYWNlIGNvbmRpdGlvbiBvciBkYXRhIGNvcnJ1cHRpb24gZml4LCB0cnlpbmcgdG8gZW5zdXJlIHByb3BlciBpc29sYXRpb24uXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBpbXBhY3RzIHRoZSBleGVjdXRpb24gZmxvdywgd2hpY2ggYWx3YXlzIGRlbWFuZHMgY2FyZWZ1bCBzY3J1dGlueS4gVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgY29kZSBwYXRoIGlzIGFjdHVhbGx5ICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCBzZXR1cC4gSSdtIHRoaW5raW5nIGFib3V0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbGlrZSBHQ0Ugb3IgUUVNVS4gTmVzdGVkIHZpcnR1YWxpemF0aW9uIGlzIGRlZmluaXRlbHkgc3VwcG9ydGVkIGluIGJvdGgsIHNvIGl0J3MgdGVzdGFibGUsIGFuZCBpZiBpdCdzIHRlc3RhYmxlLCBpdCdzIHJlYWNoYWJsZS4gV2FpdCwgd2Fzbid0IHRoZXJlIHNvbWV0aGluZyBhYm91dCBzeXprYWxsZXI/IFN5emthbGxlciBydW5zIGluIFFFTVUsIGFuZCBRRU1VIHN1cHBvcnRzIG5lc3RlZCBTVk0uLi4gc28gKnllcyosIHRoaXMgaXMgZGVmaW5pdGVseSByZWFjaGFibGUgYW5kIHBvdGVudGlhbGx5IGV4cGxvaXRhYmxlLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgY29uZmlndXJhdGlvbiBwcmVyZXF1aXNpdGVzLiBXZSdyZSBnb2luZyB0byBuZWVkIGBDT05GSUdfS1ZNYCBhbmQgYENPTkZJR19LVk1fQU1EYCwgb2J2aW91c2x5LiBUaW1lIHRvIHB1bGwgdXAgdGhlIHNvdXJjZSBhbmQgc2VhcmNoIGZvciB0aG9zZSBmdW5jdGlvbiBuYW1lcywgYG5lc3RlZF9zdm1fdm1leGl0X3VwZGF0ZV92bWNiMTJgIGFuZCBgbmVzdGVkX3N2bV9leGl0X2hhbmRsZWRgLiBJIHdhbnQgdG8gc2VlIHRoZSBjYWxsIGdyYXBocyBhbmQgdW5kZXJzdGFuZCB0aGUgZXhhY3QgY29udGV4dHMgdGhpcyBjb2RlIGV4ZWN1dGVzIGluLCB0aGUgZW50cnkgYW5kIGV4aXQgcG9pbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDMxLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTM6NDU6MTUuODgwODczNDA4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNTk5MDU4NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmVzdGVkX3N2bV92bWV4aXRfdXBkYXRlX3ZtY2IxMlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTEyMTg9dm9pZCBzdm1fY29weV92bWxvYWRzYXZlX3N0YXRlKHN0cnVjdCB2bWNiICp0b192bWNiLCBzdHJ1Y3Qgdm1jYiAqZnJvbV92bWNiKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMjMzLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTIzNDpzdGF0aWMgaW50IG5lc3RlZF9zdm1fdm1leGl0X3VwZGF0ZV92bWNiMTIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTIzNS17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTEzMTQ9dm9pZCBuZXN0ZWRfc3ZtX3ZtZXhpdChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTMxOS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEzMjA6XFx0aWYgKG5lc3RlZF9zdm1fdm1leGl0X3VwZGF0ZV92bWNiMTIodmNwdSkpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMzIxLVxcdFxcdGt2bV9tYWtlX3JlcXVlc3QoS1ZNX1JFUV9UUklQTEVfRkFVTFQsIHZjcHUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzo0NToxOC45NDA3OTM2MDdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjcyOTA2NzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqS1ZNX0FNRCBDb25maWd1cmF0aW9uIFJldmlldyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHNwZWNpZmljYWxseSB0YXJnZXQgdGhlIGBLVk1fQU1EYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBpdHMgY3VycmVudCBzdGF0ZSBhbmQgZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbS4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCB3b3JrIGJlZ2lucywgdHJhY2luZyB0aHJvdWdoIHRoZSBuZXN0ZWQgY29uZmlndXJhdGlvbnMsIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuIG9yIG9wcG9ydHVuaXR5LiBXaGF0IGFyZSB0aGUgYXNzb2NpYXRlZCBmZWF0dXJlcz8gQXJlIHRoZXJlIGFueSBuZXdseSBpbnRyb2R1Y2VkIGRlcGVuZGVuY2llcyBvciBjb25mbGljdHMgSSBzaG91bGQgYmUgYXdhcmUgb2YsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIHJhcGlkIHBhY2Ugb2YgY2hhbmdlIGluIGJvdGggQU1EIGhhcmR3YXJlIGFuZCBLVk0gaXRzZWxmPyBJJ2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBncmVwIHRvIG1ha2Ugc3VyZSBJIGdldCBhIGNvbXByZWhlbnNpdmUgb3ZlcnZpZXcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MTYsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzo0NToyMi4yMTM3MDM5MjFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAyNjUxNDQ3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNX0FNRFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMzQ9Y29uZmlnIEtWTV9JTlRFTF9URFhcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDY6Y29uZmlnIEtWTV9BTURcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVxcdGJvb2wgXFxcIkFNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjQ1OjI1LjI0MDIyNTg4NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4MTcwNDczMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKktWTV9BTUQgYW5kIE5lc3RlZCBTVk0gQ29uZmlndXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBLVk0gc2V0dXAgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIGBLVk1fQU1EYC4gVGhhdCBzZWVtcyBsaWtlIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24sIHRoZSBmb3VuZGF0aW9uLiBCdXQgSSBjYW4ndCBoZWxwIGJ1dCB3b25kZXIuLi4gaXMgdGhlcmUgYSAqc3BlY2lmaWMqIGNvbmZpZ3VyYXRpb24sIGEgcGFydGljdWxhciBmbGFnLCBhIHNwZWNpYWwgc2V0dGluZywgZm9yIG5lc3RlZCBTVk0/IFdlJ3JlIGRlYWxpbmcgd2l0aCB2aXJ0dWFsaXphdGlvbiB3aXRoaW4gdmlydHVhbGl6YXRpb24gaGVyZSwgYW5kIEkga25vdyB0aGF0IGFkZHMgYW5vdGhlciBsYXllciBvZiBjb21wbGV4aXR5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBjcml0aWNhbCBmb3Igb3B0aW1hbCBwZXJmb3JtYW5jZSBhbmQgc3RhYmlsaXR5IHdpdGhpbiB0aGF0IG5lc3RlZCBlbnZpcm9ubWVudC4gVGltZSB0byBkaWcgZGVlcGVyIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBkb2N1bWVudGVkIG9yIHN1Z2dlc3RlZCBjdXN0b21pemF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk4OCwiT3V0cHV0VG9rZW5zIjoxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjQ1OjI4LjA1NzI3NTc2NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODkzNTIyOTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5lc3RlZF9zdm1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1MzYgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmM9OT12b2lkIHN2bV9odl9pbmplY3Rfc3ludGhldGljX3ZtZXhpdF9wb3N0X3RsYl9mbHVzaChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5jLTIxLVxcdHN2bS1cXHUwMDNldm1jYi1cXHUwMDNlY29udHJvbC5leGl0X2luZm9fMiA9IDA7XFxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuYzoyMjpcXHRuZXN0ZWRfc3ZtX3ZtZXhpdChzdm0pO1xcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmMtMjMtfVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaC0xNC0jaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oOjE1OnN0YXRpYyBpbmxpbmUgdm9pZCBuZXN0ZWRfc3ZtX2h2X3VwZGF0ZV92bV92cF9pZHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmgtMTYte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaC0yOC1cXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oOjI5OnN0YXRpYyBpbmxpbmUgYm9vbCBuZXN0ZWRfc3ZtX2wyX3RsYl9mbHVzaF9lbmFibGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oLTMwLXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmgtNDMtXFxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaDo0NDpzdGF0aWMgaW5saW5lIGJvb2wgbmVzdGVkX3N2bV9pc19sMl90bGJfZmx1c2hfaGNhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmgtNDUte1xcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmgtNDYtXFx0cmV0dXJuIGd1ZXN0X2h2X2NwdWlkX2hhc19sMl90bGJfZmx1c2godmNwdSkgXFx1MDAyNlxcdTAwMjZcXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oOjQ3OlxcdCAgICAgICBuZXN0ZWRfc3ZtX2wyX3RsYl9mbHVzaF9lbmFibGVkKHZjcHUpIFxcdTAwMjZcXHUwMDI2XFxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaC00OC1cXHQgICAgICAga3ZtX2h2X2lzX3RsYl9mbHVzaF9oY2FsbCh2Y3B1KTtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2Lmg9NTE9dm9pZCBzdm1faHZfaW5qZWN0X3N5bnRoZXRpY192bWV4aXRfcG9zdF90bGJfZmx1c2goc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oLTUyLSNlbHNlIC8qIENPTkZJR19LVk1fSFlQRVJWICovXFxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaDo1MzpzdGF0aWMgaW5saW5lIHZvaWQgbmVzdGVkX3N2bV9odl91cGRhdGVfdm1fdnBfaWRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkge31cXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oOjU0OnN0YXRpYyBpbmxpbmUgYm9vbCBuZXN0ZWRfc3ZtX2lzX2wyX3RsYl9mbHVzaF9oY2FsbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaC01NS17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTM1LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MzY6c3RhdGljIHZvaWQgbmVzdGVkX3N2bV9jbGVhcl9kZWNvZGVfYXNzaXN0cyhzdHJ1Y3Qgdm1jYiAqdm1jYilcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTM3LXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNDItXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo0MzpzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX2NvcHlfZGVjb2RlX2Fzc2lzdHMoc3RydWN0IHZtY2IgKnRvLCBzdHJ1Y3Qgdm1jYiAqZnJvbSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQ0LXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNDYtXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo0NzpcXHRuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHRvKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQ4LVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy02Mi1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjYzOnN0YXRpYyB2b2lkIG5lc3RlZF9zdm1faW5qZWN0X25wZl9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTY0LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgeDg2X2V4Y2VwdGlvbiAqZmF1bHQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTgxLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6ODI6XFx0bmVzdGVkX3N2bV92bWV4aXQoc3ZtKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTgzLX1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTg0LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6ODU6c3RhdGljIHU2NCBuZXN0ZWRfc3ZtX2dldF90ZHBfcGRwdHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgaW5kZXgpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy04Ni17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwMi1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEwMzpzdGF0aWMgdW5zaWduZWQgbG9uZyBuZXN0ZWRfc3ZtX2dldF90ZHBfY3IzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwNC17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwOS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjExMDpzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX2luaXRfbW11X2NvbnRleHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTExLXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTI1LVxcdFxcdFxcdFxcdHN2bS1cXHUwMDNlbmVzdGVkLmN0bC5uZXN0ZWRfY3IzKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEyNjpcXHR2Y3B1LVxcdTAwM2VhcmNoLm1tdS1cXHUwMDNlZ2V0X2d1ZXN0X3BnZCAgICAgPSBuZXN0ZWRfc3ZtX2dldF90ZHBfY3IzO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTI3OlxcdHZjcHUtXFx1MDAzZWFyY2gubW11LVxcdTAwM2VnZXRfcGRwdHIgICAgICAgICA9IG5lc3RlZF9zdm1fZ2V0X3RkcF9wZHB0cjtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEyODpcXHR2Y3B1LVxcdTAwM2VhcmNoLm1tdS1cXHUwMDNlaW5qZWN0X3BhZ2VfZmF1bHQgPSBuZXN0ZWRfc3ZtX2luamVjdF9ucGZfZXhpdDtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEyOS1cXHR2Y3B1LVxcdTAwM2VhcmNoLndhbGtfbW11ICAgICAgICAgICAgICA9IFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLm5lc3RlZF9tbXU7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEzMS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEzMjpzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX3VuaW5pdF9tbXVfY29udGV4dChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMzMte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xNTI9dm9pZCBuZXN0ZWRfdm1jYjAyX3JlY2FsY19pbnRlcmNlcHRzKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMjItICovXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyMjM6c3RhdGljIGludCBuZXN0ZWRfc3ZtX21zcnBtX21lcmdlX29mZnNldHNbMTBdIF9fcm9fYWZ0ZXJfaW5pdDtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjIyNDpzdGF0aWMgaW50IG5lc3RlZF9zdm1fbnJfbXNycG1fbWVyZ2Vfb2Zmc2V0cyBfX3JvX2FmdGVyX2luaXQ7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMjUtdHlwZWRlZiB1bnNpZ25lZCBsb25nIG5zdm1fbXNycG1fbWVyZ2VfdDtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTIyNi1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjIyNzppbnQgX19pbml0IG5lc3RlZF9zdm1faW5pdF9tc3JwbV9tZXJnZV9vZmZzZXRzKHZvaWQpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMjgte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yODItXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyODM6XFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIG5lc3RlZF9zdm1fbnJfbXNycG1fbWVyZ2Vfb2Zmc2V0czsgaisrKSB7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyODQ6XFx0XFx0XFx0aWYgKG5lc3RlZF9zdm1fbXNycG1fbWVyZ2Vfb2Zmc2V0c1tqXSA9PSBvZmZzZXQpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yODUtXFx0XFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTI4Ny1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjI4ODpcXHRcXHRpZiAoaiBcXHUwMDNjIG5lc3RlZF9zdm1fbnJfbXNycG1fbWVyZ2Vfb2Zmc2V0cylcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTI4OS1cXHRcXHRcXHRjb250aW51ZTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTI5MC1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjI5MTpcXHRcXHRpZiAoV0FSTl9PTihqIFxcdTAwM2U9IEFSUkFZX1NJWkUobmVzdGVkX3N2bV9tc3JwbV9tZXJnZV9vZmZzZXRzKSkpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yOTItXFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yOTMtXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyOTQ6XFx0XFx0bmVzdGVkX3N2bV9tc3JwbV9tZXJnZV9vZmZzZXRzW2pdID0gb2Zmc2V0O1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6Mjk1OlxcdFxcdG5lc3RlZF9zdm1fbnJfbXNycG1fbWVyZ2Vfb2Zmc2V0cysrO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMjk2LVxcdH1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzA1LSAqL1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MzA2OnN0YXRpYyBib29sIG5lc3RlZF9zdm1fbWVyZ2VfbXNycG0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzA3LXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzM0LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MzM1OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBuZXN0ZWRfc3ZtX25yX21zcnBtX21lcmdlX29mZnNldHM7IGkrKykge1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MzM2OlxcdFxcdGNvbnN0IGludCBwID0gbmVzdGVkX3N2bV9tc3JwbV9tZXJnZV9vZmZzZXRzW2ldO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzM3LVxcdFxcdG5zdm1fbXNycG1fbWVyZ2VfdCBsMV92YWw7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTM2MC0gKi9cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjM2MTpzdGF0aWMgYm9vbCBuZXN0ZWRfc3ZtX2NoZWNrX2JpdG1hcF9wYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBwYSwgdTMyIHNpemUpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0zNjIte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0zNjgtXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzozNjk6c3RhdGljIGJvb2wgbmVzdGVkX3N2bV9ldmVudF9pbmpfdmFsaWRfZXhlcHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1OCB2ZWN0b3IpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0zNzAte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0zOTctICovXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzozOTg6c3RhdGljIGJvb2wgbmVzdGVkX3N2bV9jaGVja19ldmVudF9pbmooc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgZXZlbnRfaW5qKVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzk5LXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNDEwLVxcdGlmICh0eXBlID09IFNWTV9FVlRJTkpfVFlQRV9FWEVQVCBcXHUwMDI2XFx1MDAyNlxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NDExOlxcdCAgICAhbmVzdGVkX3N2bV9ldmVudF9pbmpfdmFsaWRfZXhlcHQodmNwdSwgdmVjdG9yKSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQxMi1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTQxNz1zdGF0aWMgYm9vbCBuZXN0ZWRfdm1jYl9jaGVja19jb250cm9scyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQyOS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjQzMDpcXHRpZiAoQ0MoIW5lc3RlZF9zdm1fY2hlY2tfYml0bWFwX3BhKHZjcHUsIGNvbnRyb2wtXFx1MDAzZW1zcnBtX2Jhc2VfcGEsXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy00MzEtXFx0XFx0XFx0XFx0XFx0ICAgTVNSUE1fU0laRSkpKVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNDMyLVxcdFxcdHJldHVybiBmYWxzZTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjQzMzpcXHRpZiAoQ0MoIW5lc3RlZF9zdm1fY2hlY2tfYml0bWFwX3BhKHZjcHUsIGNvbnRyb2wtXFx1MDAzZWlvcG1fYmFzZV9wYSxcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQzNC1cXHRcXHRcXHRcXHRcXHQgICBJT1BNX1NJWkUpKSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNDQxLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NDQyOlxcdGlmIChDQyghbmVzdGVkX3N2bV9jaGVja19ldmVudF9pbmoodmNwdSwgY29udHJvbC1cXHUwMDNlZXZlbnRfaW5qKSkpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy00NDMtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz00NDk9c3RhdGljIGJvb2wgbmVzdGVkX3ZtY2JfY2hlY2tfc2F2ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQ4Ny1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjQ4ODppbnQgbmVzdGVkX3N2bV9jaGVja19jYWNoZWRfdm1jYjEyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQ4OS17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTUwMi0gKi9cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjUwMzojZGVmaW5lIF9fbmVzdGVkX3N2bV9zYW5pdGl6ZV9pbnRlcmNlcHQoX192Y3B1LCBfX2NvbnRyb2wsIGZuYW1lLCBpbmFtZSlcXHRcXFxcXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy01MDQtZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNTA4LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NTA5OiNkZWZpbmUgbmVzdGVkX3N2bV9zYW5pdGl6ZV9pbnRlcmNlcHQoX192Y3B1LCBfX2NvbnRyb2wsIG5hbWUpXFx0XFx0XFx0XFxcXFxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NTEwOlxcdF9fbmVzdGVkX3N2bV9zYW5pdGl6ZV9pbnRlcmNlcHQoX192Y3B1LCBfX2NvbnRyb2wsIG5hbWUsIG5hbWUpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy01MTEtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTUxMz12b2lkIF9fbmVzdGVkX2NvcHlfdm1jYl9jb250cm9sX3RvX2NhY2hlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNTIxLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NTIyOlxcdF9fbmVzdGVkX3N2bV9zYW5pdGl6ZV9pbnRlcmNlcHQodmNwdSwgdG8sIFhTQVZFLCBYU0VUQlYpO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NTIzOlxcdG5lc3RlZF9zdm1fc2FuaXRpemVfaW50ZXJjZXB0KHZjcHUsIHRvLCBJTlZQQ0lEKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjUyNDpcXHRuZXN0ZWRfc3ZtX3Nhbml0aXplX2ludGVyY2VwdCh2Y3B1LCB0bywgUkRUU0NQKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjUyNTpcXHRuZXN0ZWRfc3ZtX3Nhbml0aXplX2ludGVyY2VwdCh2Y3B1LCB0bywgU0tJTklUKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjUyNjpcXHRuZXN0ZWRfc3ZtX3Nhbml0aXplX2ludGVyY2VwdCh2Y3B1LCB0bywgUkRQUlUpO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNTI3LVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz02NTE9c3RhdGljIHZvaWQgbmVzdGVkX3NhdmVfcGVuZGluZ19ldmVudF90b192bWNiMTIoc3RydWN0IHZjcHVfc3ZtICpzdm0sXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTY4My1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjY4NDpzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX3RyYW5zaXRpb25fdGxiX2ZsdXNoKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTY4NS17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTcwOS0gKi9cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjcxMDpzdGF0aWMgaW50IG5lc3RlZF9zdm1fbG9hZF9jcjMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIGNyMyxcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTcxMS1cXHRcXHRcXHQgICAgICAgYm9vbCBuZXN0ZWRfbnB0LCBib29sIHJlbG9hZF9wZHB0cnMpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTg1MD1zdGF0aWMgdm9pZCBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfY29udHJvbChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtODU5LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6ODYwOlxcdG5lc3RlZF9zdm1fdHJhbnNpdGlvbl90bGJfZmx1c2godmNwdSk7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy04NjEtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTg2OS1cXHQgKi9cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjg3MDpcXHRuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHZtY2IwMik7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy04NzEtXFx0c3ZtLVxcdTAwM2VuZXN0ZWQuZGVjb2RlX2Fzc2lzdHNfdmFsaWQgPSBmYWxzZTtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtOTM3LVxcdGlmIChuZXN0ZWRfbnB0X2VuYWJsZWQoc3ZtKSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjkzODpcXHRcXHRuZXN0ZWRfc3ZtX2luaXRfbW11X2NvbnRleHQodmNwdSk7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy05MzktXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTk0Ny1cXHQgICAgc3ZtLVxcdTAwM2V0c2NfcmF0aW9fbXNyICE9IGt2bV9jYXBzLmRlZmF1bHRfdHNjX3NjYWxpbmdfcmF0aW8pXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo5NDg6XFx0XFx0bmVzdGVkX3N2bV91cGRhdGVfdHNjX3JhdGlvX21zcih2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTk0OS1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTAxNi1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEwMTc6c3RhdGljIHZvaWQgbmVzdGVkX3N2bV9jb3B5X2NvbW1vbl9zdGF0ZShzdHJ1Y3Qgdm1jYiAqZnJvbV92bWNiLCBzdHJ1Y3Qgdm1jYiAqdG9fdm1jYilcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwMTgte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xMDI5PWludCBlbnRlcl9zdm1fZ3Vlc3RfbW9kZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB2bWNiMTJfZ3BhLCBib29sIGZyb21fdm1ydW4pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwNTctXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMDU4OlxcdG5lc3RlZF9zdm1fY29weV9jb21tb25fc3RhdGUoc3ZtLVxcdTAwM2V2bWNiMDEucHRyLCBzdm0tXFx1MDAzZW5lc3RlZC52bWNiMDIucHRyKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwNTktXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwNjMtXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMDY0OlxcdHJldCA9IG5lc3RlZF9zdm1fbG9hZF9jcjMoXFx1MDAyNnN2bS1cXHUwMDNldmNwdSwgc3ZtLVxcdTAwM2VuZXN0ZWQuc2F2ZS5jcjMsXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDY1LVxcdFxcdFxcdFxcdCAgbmVzdGVkX25wdF9lbmFibGVkKHN2bSksIGZyb21fdm1ydW4pO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDc2LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTA3NzpcXHRuZXN0ZWRfc3ZtX2h2X3VwZGF0ZV92bV92cF9pZHModmNwdSk7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDc4LVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDgxLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTA4MjpzdGF0aWMgaW50IG5lc3RlZF9zdm1fY29weV92bWNiMTJfdG9fY2FjaGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdm1jYjEyX2dwYSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwODMte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDk1LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTA5NjpcXHRpZiAobmVzdGVkX3N2bV9jaGVja19jYWNoZWRfdm1jYjEyKHZjcHUpIFxcdTAwM2MgMCkge1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTA5Ny1cXHRcXHR2bWNiMTItXFx1MDAzZWNvbnRyb2wuZXhpdF9jb2RlID0gU1ZNX0VYSVRfRVJSO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTA5LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTExMDppbnQgbmVzdGVkX3N2bV92bXJ1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTExLXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTE0Mi1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjExNDM6XFx0cmV0ID0gbmVzdGVkX3N2bV9jb3B5X3ZtY2IxMl90b19jYWNoZSh2Y3B1LCB2bWNiMTJfZ3BhKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTExNDQtXFx0aWYgKHJldCkge1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTcwLVxcdGlmIChlbnRlcl9zdm1fZ3Vlc3RfbW9kZSh2Y3B1LCB2bWNiMTJfZ3BhLCB0cnVlKSB8fFxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTE3MTpcXHQgICAgIW5lc3RlZF9zdm1fbWVyZ2VfbXNycG0odmNwdSkpIHtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTExNzItXFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSAwO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTc5LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTE4MDpcXHRcXHRuZXN0ZWRfc3ZtX3ZtZXhpdChzdm0pO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTE4MS1cXHR9XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTEyMTg9dm9pZCBzdm1fY29weV92bWxvYWRzYXZlX3N0YXRlKHN0cnVjdCB2bWNiICp0b192bWNiLCBzdHJ1Y3Qgdm1jYiAqZnJvbV92bWNiKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMjMzLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTIzNDpzdGF0aWMgaW50IG5lc3RlZF9zdm1fdm1leGl0X3VwZGF0ZV92bWNiMTIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTIzNS17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEyODktXFx0ICAgIGd1ZXN0X2NwdV9jYXBfaGFzKHZjcHUsIFg4Nl9GRUFUVVJFX0RFQ09ERUFTU0lTVFMpKVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTI5MDpcXHRcXHRuZXN0ZWRfc3ZtX2NvcHlfZGVjb2RlX2Fzc2lzdHModm1jYjEyLCB2bWNiMDIpO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTI5MS1cXHRlbHNlXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMjkyOlxcdFxcdG5lc3RlZF9zdm1fY2xlYXJfZGVjb2RlX2Fzc2lzdHModm1jYjEyKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEyOTMtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEzMTMtXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMzE0OnZvaWQgbmVzdGVkX3N2bV92bWV4aXQoc3RydWN0IHZjcHVfc3ZtICpzdm0pXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMzE1LXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTMxOS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEzMjA6XFx0aWYgKG5lc3RlZF9zdm1fdm1leGl0X3VwZGF0ZV92bWNiMTIodmNwdSkpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMzIxLVxcdFxcdGt2bV9tYWtlX3JlcXVlc3QoS1ZNX1JFUV9UUklQTEVfRkFVTFQsIHZjcHUpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMzQwLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTM0MTpcXHRuZXN0ZWRfc3ZtX2NvcHlfY29tbW9uX3N0YXRlKHN2bS1cXHUwMDNlbmVzdGVkLnZtY2IwMi5wdHIsIHN2bS1cXHUwMDNldm1jYjAxLnB0cik7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMzQyLVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNDI3LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTQyODpcXHRuZXN0ZWRfc3ZtX3RyYW5zaXRpb25fdGxiX2ZsdXNoKHZjcHUpO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTQyOS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE0MzA6XFx0bmVzdGVkX3N2bV91bmluaXRfbW11X2NvbnRleHQodmNwdSk7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNDMxLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTQzMjpcXHRpZiAobmVzdGVkX3N2bV9sb2FkX2NyMyh2Y3B1LCB2bWNiMDEtXFx1MDAzZXNhdmUuY3IzLCBmYWxzZSwgdHJ1ZSkpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNDMzLVxcdFxcdGt2bV9tYWtlX3JlcXVlc3QoS1ZNX1JFUV9UUklQTEVfRkFVTFQsIHZjcHUpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNDYzLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTQ2NDpzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX3RyaXBsZV9mYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNDY1LXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTQ3MS1cXHRrdm1fY2xlYXJfcmVxdWVzdChLVk1fUkVRX1RSSVBMRV9GQVVMVCwgdmNwdSk7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNDcyOlxcdG5lc3RlZF9zdm1fc2ltcGxlX3ZtZXhpdCh0b19zdm0odmNwdSksIFNWTV9FWElUX1NIVVRET1dOKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE0NzMtfVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xNTI2PXZvaWQgc3ZtX2xlYXZlX25lc3RlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE1MzctXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNTM4OlxcdFxcdG5lc3RlZF9zdm1fdW5pbml0X21tdV9jb250ZXh0KHZjcHUpO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTUzOS1cXHRcXHR2bWNiX21hcmtfYWxsX2RpcnR5KHN2bS1cXHUwMDNldm1jYik7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE1NDktXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNTUwOnN0YXRpYyBpbnQgbmVzdGVkX3N2bV9leGl0X2hhbmRsZWRfbXNyKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTU1MS17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE1NzQtXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNTc1OnN0YXRpYyBpbnQgbmVzdGVkX3N2bV9pbnRlcmNlcHRfaW9pbyhzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE1NzYte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNTk5LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTYwMDpzdGF0aWMgaW50IG5lc3RlZF9zdm1faW50ZXJjZXB0KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTYwMS17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2MDktXFx0Y2FzZSBTVk1fRVhJVF9NU1I6XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNjEwOlxcdFxcdHZtZXhpdCA9IG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkX21zcihzdm0pO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTYxMS1cXHRcXHRicmVhaztcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2MTItXFx0Y2FzZSBTVk1fRVhJVF9JT0lPOlxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTYxMzpcXHRcXHR2bWV4aXQgPSBuZXN0ZWRfc3ZtX2ludGVyY2VwdF9pb2lvKHN2bSk7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjE0LVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjE3LVxcdFxcdCAqIEhvc3QtaW50ZXJjZXB0ZWQgZXhjZXB0aW9ucyBoYXZlIGJlZW4gY2hlY2tlZCBhbHJlYWR5IGluXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNjE4OlxcdFxcdCAqIG5lc3RlZF9zdm1fZXhpdF9zcGVjaWFsLiAgVGhlcmUgaXMgbm90aGluZyB0byBkbyBoZXJlLFxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTYxOS1cXHRcXHQgKiB0aGUgdm1leGl0IGlzIGluamVjdGVkIGJ5IHN2bV9jaGVja19uZXN0ZWRfZXZlbnRzLlxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjMxLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTYzMjppbnQgbmVzdGVkX3N2bV9leGl0X2hhbmRsZWQoc3RydWN0IHZjcHVfc3ZtICpzdm0pXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjMzLXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTYzNS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE2MzY6XFx0dm1leGl0ID0gbmVzdGVkX3N2bV9pbnRlcmNlcHQoc3ZtKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2MzctXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2NDAtXFx0XFx0c3ZtLVxcdTAwM2VuZXN0ZWQuZGVjb2RlX2Fzc2lzdHNfdmFsaWQgPSB0cnVlO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTY0MTpcXHRcXHRuZXN0ZWRfc3ZtX3ZtZXhpdChzdm0pO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTY0Mi1cXHR9XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2NDYtXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNjQ3OmludCBuZXN0ZWRfc3ZtX2NoZWNrX3Blcm1pc3Npb25zKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2NDgte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjYxLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTY2MjpzdGF0aWMgYm9vbCBuZXN0ZWRfc3ZtX2lzX2V4Y2VwdGlvbl92bWV4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1OCB2ZWN0b3IsXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjYzLVxcdFxcdFxcdFxcdFxcdCAgIHUzMiBlcnJvcl9jb2RlKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjY5LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTY3MDpzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX2luamVjdF9leGNlcHRpb25fdm1leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2NzEte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNzAxLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTcwMjpcXHRuZXN0ZWRfc3ZtX3ZtZXhpdChzdm0pO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTcwMy19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTE3MTA9c3RhdGljIGludCBzdm1fY2hlY2tfbmVzdGVkX2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE3MzQtXFx0XFx0XFx0cmV0dXJuIDA7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNzM1OlxcdFxcdG5lc3RlZF9zdm1fc2ltcGxlX3ZtZXhpdChzdm0sIFNWTV9FWElUX0lOSVQpO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTczNi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc0MS0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVCVVNZO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTc0MjpcXHRcXHRuZXN0ZWRfc3ZtX2luamVjdF9leGNlcHRpb25fdm1leGl0KHZjcHUpO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc0My1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc1Ny1cXHRcXHRcXHRyZXR1cm4gMDtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE3NTg6XFx0XFx0bmVzdGVkX3N2bV9zaW1wbGVfdm1leGl0KHN2bSwgU1ZNX0VYSVRfU01JKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE3NTktXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE3NjctXFx0XFx0XFx0cmV0dXJuIDA7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNzY4OlxcdFxcdG5lc3RlZF9zdm1fc2ltcGxlX3ZtZXhpdChzdm0sIFNWTV9FWElUX05NSSk7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNzY5LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNzc3LVxcdFxcdHRyYWNlX2t2bV9uZXN0ZWRfaW50cl92bWV4aXQoc3ZtLVxcdTAwM2V2bWNiLVxcdTAwM2VzYXZlLnJpcCk7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNzc4OlxcdFxcdG5lc3RlZF9zdm1fc2ltcGxlX3ZtZXhpdChzdm0sIFNWTV9FWElUX0lOVFIpO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc3OS1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc4NC1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE3ODU6aW50IG5lc3RlZF9zdm1fZXhpdF9zcGVjaWFsKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc4Ni17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE4MDgtXFx0XFx0LyogSHlwZXItViBMMiBUTEIgZmx1c2ggaHlwZXJjYWxsIGlzIGhhbmRsZWQgYnkgTDAgKi9cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE4MDk6XFx0XFx0aWYgKG5lc3RlZF9zdm1faXNfbDJfdGxiX2ZsdXNoX2hjYWxsKHZjcHUpKVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTgxMC1cXHRcXHRcXHRyZXR1cm4gTkVTVEVEX0VYSVRfSE9TVDtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTgxOC1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE4MTk6dm9pZCBuZXN0ZWRfc3ZtX3VwZGF0ZV90c2NfcmF0aW9fbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE4MjAte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xOTMyPXN0YXRpYyBpbnQgc3ZtX3NldF9uZXN0ZWRfc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMDA2LVxcdCAqIFZhbGlkYXRlIGhvc3Qgc3RhdGUgc2F2ZWQgZnJvbSBiZWZvcmUgVk1SVU4gKHNlZVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MjAwNzpcXHQgKiBuZXN0ZWRfc3ZtX2NoZWNrX3Blcm1pc3Npb25zKS5cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTIwMDgtXFx0ICovXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTIwNTUtXFx0ICovXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyMDU2OlxcdHJldCA9IG5lc3RlZF9zdm1fbG9hZF9jcjMoXFx1MDAyNnN2bS1cXHUwMDNldmNwdSwgdmNwdS1cXHUwMDNlYXJjaC5jcjMsXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMDU3LVxcdFxcdFxcdFxcdCAgbmVzdGVkX25wdF9lbmFibGVkKHN2bSksIGZhbHNlKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MjA3NT1zdGF0aWMgYm9vbCBzdm1fZ2V0X25lc3RlZF9zdGF0ZV9wYWdlcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTIwODktXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyMDkwOlxcdGlmICghbmVzdGVkX3N2bV9tZXJnZV9tc3JwbSh2Y3B1KSkge1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMjA5MS1cXHRcXHR2Y3B1LVxcdTAwM2VydW4tXFx1MDAzZWV4aXRfcmVhc29uID0gS1ZNX0VYSVRfSU5URVJOQUxfRVJST1I7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTIxMDQ9c3RydWN0IGt2bV94ODZfbmVzdGVkX29wcyBzdm1fbmVzdGVkX29wcyA9IHtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTIxMDUtXFx0LmxlYXZlX25lc3RlZCA9IHN2bV9sZWF2ZV9uZXN0ZWQsXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyMTA2OlxcdC5pc19leGNlcHRpb25fdm1leGl0ID0gbmVzdGVkX3N2bV9pc19leGNlcHRpb25fdm1leGl0LFxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMjEwNy1cXHQuY2hlY2tfZXZlbnRzID0gc3ZtX2NoZWNrX25lc3RlZF9ldmVudHMsXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyMTA4OlxcdC50cmlwbGVfZmF1bHQgPSBuZXN0ZWRfc3ZtX3RyaXBsZV9mYXVsdCxcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTIxMDktXFx0LmdldF9uZXN0ZWRfc3RhdGVfcGFnZXMgPSBzdm1fZ2V0X25lc3RlZF9zdGF0ZV9wYWdlcyxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MjE5OT1zdGF0aWMgaW50IHZtbG9hZF92bXNhdmVfaW50ZXJjZXB0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCB2bWxvYWQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTIyMDYtXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzoyMjA3OlxcdGlmIChuZXN0ZWRfc3ZtX2NoZWNrX3Blcm1pc3Npb25zKHZjcHUpKVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjIwOC1cXHRcXHRyZXR1cm4gMTtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MjI0Nj1zdGF0aWMgaW50IHZtcnVuX2ludGVyY2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMjQ3LXtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjIyNDg6XFx0aWYgKG5lc3RlZF9zdm1fY2hlY2tfcGVybWlzc2lvbnModmNwdSkpXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMjQ5LVxcdFxcdHJldHVybiAxO1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjI1MC1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjIyNTE6XFx0cmV0dXJuIG5lc3RlZF9zdm1fdm1ydW4odmNwdSk7XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMjUyLX1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MjI4Nj1zdGF0aWMgaW50IGdwX2ludGVyY2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTIzMDUtXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzoyMzA2OlxcdFxcdGlmIChuZXN0ZWRfc3ZtX2NoZWNrX3Blcm1pc3Npb25zKHZjcHUpKVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjMwNy1cXHRcXHRcXHRyZXR1cm4gMTtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjMxNy1cXHRcXHQgKi9cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjIzMTg6XFx0XFx0bmVzdGVkX3N2bV9zaW1wbGVfdm1leGl0KHN2bSwgc3ZtX2V4aXRfY29kZSk7XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMzE5LVxcdFxcdHJldHVybiAxO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0yMzY2PXN0YXRpYyBpbnQgc3RnaV9pbnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMzY5LVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MjM3MDpcXHRpZiAobmVzdGVkX3N2bV9jaGVja19wZXJtaXNzaW9ucyh2Y3B1KSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTIzNzEtXFx0XFx0cmV0dXJuIDE7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTIzNzg9c3RhdGljIGludCBjbGdpX2ludGVyY2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTIzODEtXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzoyMzgyOlxcdGlmIChuZXN0ZWRfc3ZtX2NoZWNrX3Blcm1pc3Npb25zKHZjcHUpKVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjM4My1cXHRcXHRyZXR1cm4gMTtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MjM5MD1zdGF0aWMgaW50IGludmxwZ2FfaW50ZXJjZXB0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjM5NC1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjIzOTU6XFx0aWYgKG5lc3RlZF9zdm1fY2hlY2tfcGVybWlzc2lvbnModmNwdSkpXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMzk2LVxcdFxcdHJldHVybiAxO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0yNTMxPXN0YXRpYyBib29sIGNoZWNrX3NlbGVjdGl2ZV9jcjBfaW50ZXJjZXB0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yNTQ2LVxcdFxcdHN2bS1cXHUwMDNldm1jYi1cXHUwMDNlY29udHJvbC5leGl0X2NvZGUgPSBTVk1fRVhJVF9DUjBfU0VMX1dSSVRFO1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MjU0NzpcXHRcXHRyZXQgPSAobmVzdGVkX3N2bV9leGl0X2hhbmRsZWQoc3ZtKSA9PSBORVNURURfRVhJVF9ET05FKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI1NDgtXFx0fVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0yOTM4PXN0YXRpYyBpbnQgc3ZtX3NldF9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcilcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjk3NS1cXHRcXHQgICAgaXNfZ3Vlc3RfbW9kZSh2Y3B1KSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjI5NzY6XFx0XFx0XFx0bmVzdGVkX3N2bV91cGRhdGVfdHNjX3JhdGlvX21zcih2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI5NzctXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTMwMTAtXFx0XFx0ICogVGhlIGhhbmRsaW5nIG9mIHRoZSBNU1IgYml0bWFwIGZvciBMMiBndWVzdHMgaXMgZG9uZSBpblxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MzAxMTpcXHRcXHQgKiBuZXN0ZWRfc3ZtX21lcmdlX21zcnBtKCkuXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zMDEyLVxcdFxcdCAqIFdlIHVwZGF0ZSB0aGUgTDEgTVNSIGJpdCBhcyB3ZWxsIHNpbmNlIGl0IHdpbGwgZW5kIHVwXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTMyNzA9c3RhdGljIGludCB2bW1jYWxsX2ludGVyY2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTMyNzctXFx0ICovXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzozMjc4OlxcdGlmIChpc19ndWVzdF9tb2RlKHZjcHUpIFxcdTAwMjZcXHUwMDI2ICFuZXN0ZWRfc3ZtX2lzX2wyX3RsYl9mbHVzaF9oY2FsbCh2Y3B1KSkge1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMzI3OS1cXHRcXHRrdm1fcXVldWVfZXhjZXB0aW9uKHZjcHUsIFVEX1ZFQ1RPUik7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTM2NTM9c3RhdGljIGludCBzdm1faGFuZGxlX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBmYXN0cGF0aF90IGV4aXRfZmFzdHBhdGgpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTM2NzAtXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzozNjcxOlxcdFxcdHZtZXhpdCA9IG5lc3RlZF9zdm1fZXhpdF9zcGVjaWFsKHN2bSk7XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zNjcyLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMzY3My1cXHRcXHRpZiAodm1leGl0ID09IE5FU1RFRF9FWElUX0NPTlRJTlVFKVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MzY3NDpcXHRcXHRcXHR2bWV4aXQgPSBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZChzdm0pO1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMzY3NS1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MzkwMz1zdGF0aWMgdm9pZCBzdm1fdXBkYXRlX2NyOF9pbnRlcmNlcHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgdHByLCBpbnQgaXJyKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zOTEzLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MzkxNDpcXHRpZiAobmVzdGVkX3N2bV92aXJ0dWFsaXplX3Rwcih2Y3B1KSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTM5MTUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz00MTk4PXN0YXRpYyBpbmxpbmUgdm9pZCBzeW5jX2NyOF90b19sYXBpYyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTQyMDEtXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo0MjAyOlxcdGlmIChuZXN0ZWRfc3ZtX3ZpcnR1YWxpemVfdHByKHZjcHUpKVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDIwMy1cXHRcXHRyZXR1cm47XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTQyMTE9c3RhdGljIGlubGluZSB2b2lkIHN5bmNfbGFwaWNfdG9fY3I4KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDIxNS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjQyMTY6XFx0aWYgKG5lc3RlZF9zdm1fdmlydHVhbGl6ZV90cHIodmNwdSkpXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy00MjE3LVxcdFxcdHJldHVybjtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NDc1Nz1zdGF0aWMgaW50IHN2bV9jaGVja19pbnRlcmNlcHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy00ODgxLVxcdHZtY2ItXFx1MDAzZWNvbnRyb2wuZXhpdF9jb2RlID0gaWNwdF9pbmZvLmV4aXRfY29kZTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjQ4ODI6XFx0dm1leGl0ID0gbmVzdGVkX3N2bV9leGl0X2hhbmRsZWQoc3ZtKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTQ4ODMtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTQ5Mzk9c3RhdGljIGludCBzdm1fZW50ZXJfc21tKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5pb24ga3ZtX3NtcmFtICpzbXJhbSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDk2MS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjQ5NjI6XFx0bmVzdGVkX3N2bV9zaW1wbGVfdm1leGl0KHN2bSwgU1ZNX0VYSVRfU1cpO1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDk2My1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NDk4OD1zdGF0aWMgaW50IHN2bV9sZWF2ZV9zbW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCB1bmlvbiBrdm1fc21yYW0gKnNtcmFtKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01MDM2LVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTAzNzpcXHRpZiAobmVzdGVkX3N2bV9jaGVja19jYWNoZWRfdm1jYjEyKHZjcHUpIFxcdTAwM2MgMClcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTUwMzgtXFx0XFx0Z290byB1bm1hcF9zYXZlO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz01NTQ1PXN0YXRpYyBfX2luaXQgaW50IHN2bV9oYXJkd2FyZV9zZXR1cCh2b2lkKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NTg4LVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTU4OTpcXHRcXHRyID0gbmVzdGVkX3N2bV9pbml0X21zcnBtX21lcmdlX29mZnNldHMoKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU1OTAtXFx0XFx0aWYgKHIpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oPTIwOD1zdHJ1Y3Qgc3ZtX25lc3RlZF9zdGF0ZSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTIyNi1cXHQgKiBOb3RlOiB0aGlzIHN0cnVjdCBpcyBub3Qga2VwdCB1cC10by1kYXRlIHdoaWxlIEwyIHJ1bnM7IGl0IGlzIG9ubHlcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oOjIyNzpcXHQgKiB2YWxpZCB3aXRoaW4gbmVzdGVkX3N2bV92bXJ1bi5cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTM6NDU6MzAuOTUwODA2MTQzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI3NjY4MDA0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5lc3RlZCBTVk0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgdG91Y2hpbmcgdGhlIG5lc3RlZCBTVk0gY29kZSwgc3BlY2lmaWNhbGx5IHRoZSBgbmVzdGVkX3N2bV92bWV4aXRfdXBkYXRlX3ZtY2IxMmAgYW5kIGBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZGAgZnVuY3Rpb25zLiBJdCBsb29rcyBsaWtlIGl0J3MgZGVzaWduZWQgdG8gYmUgcnVuIHdpdGhpbiBhIG5lc3RlZCBTVk0gZW52aXJvbm1lbnQsIHdoaWNoIGlzIGdvb2QuIFRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50IGlzIGBLVk1fQU1EYCwgYW5kIHRoYXQncyBpdD8gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LiBMZXQncyBsb29rIGF0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBLVk1fQU1EYC4gQWgsIGl0IGRlcGVuZHMgb24gYEtWTWAsIG9mIGNvdXJzZS4gU28sIGNvbmZpcm1pbmcgYEtWTV9BTURgIGFsb25lIGlzIGVub3VnaC5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gd2hhdCBmdW5jdGlvbnMgYXJlIGltcG9ydGFudCB0byBmb2N1cyBvbi4gV2UndmUgZ290OlxuXG4qICAgYG5lc3RlZF9zdm1fdm1leGl0X3VwZGF0ZV92bWNiMTJgXG4qICAgYG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkYFxuKiAgIGBuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzYFxuKiAgIGBuZXN0ZWRfc3ZtX2NvcHlfZGVjb2RlX2Fzc2lzdHNgXG5cbkhtbSwgd2FpdCBhIG1pbnV0ZS4uLiBJIHJlbWVtYmVyIHRob3NlIGBuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzYCBhbmQgYG5lc3RlZF9zdm1fY29weV9kZWNvZGVfYXNzaXN0c2AgZnVuY3Rpb25zLiBUaGV5J3JlIGJvdGggc3RhdGljIHdpdGhpbiBgbmVzdGVkLmNgLiBBbmQgbm93IEkgc2VlIGBuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyYCBpcyBhbHNvIHN0YXRpYyB3aXRoaW4gdGhhdCBzYW1lIGZpbGUuIFRoaXMgbWVhbnMgdGhleSBhcmUgbGlrZWx5IGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMgd2l0aGluIHRoYXQgZmlsZS4gQnV0IGBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZGAuLi50aGF0IG9uZSdzIG5vdCBzdGF0aWMuIFNvIGl0J3MgZXhwb3J0ZWQgYW5kIGNhbiBiZSBjYWxsZWQgZnJvbSBzb21ld2hlcmUgZWxzZS4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkzMDgsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTM6NDU6MzcuMjI3NDkwNDY2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDgyNzE5OTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MTUyNj12b2lkIHN2bV9sZWF2ZV9uZXN0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNTQ5LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTU1MDpzdGF0aWMgaW50IG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkX21zcihzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE1NTEte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xNjAwPXN0YXRpYyBpbnQgbmVzdGVkX3N2bV9pbnRlcmNlcHQoc3RydWN0IHZjcHVfc3ZtICpzdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2MDktXFx0Y2FzZSBTVk1fRVhJVF9NU1I6XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNjEwOlxcdFxcdHZtZXhpdCA9IG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkX21zcihzdm0pO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTYxMS1cXHRcXHRicmVhaztcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTYzMS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE2MzI6aW50IG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTYzMy17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTI1MzE9c3RhdGljIGJvb2wgY2hlY2tfc2VsZWN0aXZlX2NyMF9pbnRlcmNlcHRlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI1NDYtXFx0XFx0c3ZtLVxcdTAwM2V2bWNiLVxcdTAwM2Vjb250cm9sLmV4aXRfY29kZSA9IFNWTV9FWElUX0NSMF9TRUxfV1JJVEU7XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzoyNTQ3OlxcdFxcdHJldCA9IChuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZChzdm0pID09IE5FU1RFRF9FWElUX0RPTkUpO1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjU0OC1cXHR9XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTM2NTM9c3RhdGljIGludCBzdm1faGFuZGxlX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBmYXN0cGF0aF90IGV4aXRfZmFzdHBhdGgpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTM2NzMtXFx0XFx0aWYgKHZtZXhpdCA9PSBORVNURURfRVhJVF9DT05USU5VRSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjM2NzQ6XFx0XFx0XFx0dm1leGl0ID0gbmVzdGVkX3N2bV9leGl0X2hhbmRsZWQoc3ZtKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTM2NzUtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTQ3NTc9c3RhdGljIGludCBzdm1fY2hlY2tfaW50ZXJjZXB0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDg4MS1cXHR2bWNiLVxcdTAwM2Vjb250cm9sLmV4aXRfY29kZSA9IGljcHRfaW5mby5leGl0X2NvZGU7XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo0ODgyOlxcdHZtZXhpdCA9IG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkKHN2bSk7XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy00ODgzLVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaD04NjU9c3RhdGljIGlubGluZSB2b2lkIG5lc3RlZF9zdm1fc2ltcGxlX3ZtZXhpdChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSwgdTMyIGV4aXRfY29kZSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtODcyLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg6ODczOmludCBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSk7XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaC04NzQtaW50IG5lc3RlZF9zdm1fY2hlY2tfcGVybWlzc2lvbnMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTM6NDU6MzkuNzEwMjIxODAyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4ODQ0NjY0MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OlxuXG4qKkN1cnJlbnQgRm9jdXM6IE5lc3RlZCBTVk0gVk0gRXhpdCBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEknbSBob25pbmcgaW4gb24gdGhlIG5lc3RlZCBTVk0gZXhpdCBoYW5kbGluZyBjb2RlLiBJdCBsb29rcyBsaWtlIGBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZGAgaXMgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LCB0aGF0IHNlZW1zIHRvIGJlIHRoZSBjb3JlIGZ1bmN0aW9uIGZvciBkZWFsaW5nIHdpdGggdGhlIGFjdHVhbCBWTSBleGl0LiBUaGVuLCBmb2xsb3dpbmcgdGhhdCBsb2dpYywgSSBuZWVkIHRvIGNoZWNrIGBuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyYCwgYmVjYXVzZSwgd2VsbCwgdGhhdCBuYW1lIHN1Z2dlc3RzIGl0J3MgY3J1Y2lhbCBmb3IgcHJvcGVybHkgdXBkYXRpbmcgdGhlIFZpcnR1YWwgTWFjaGluZSBDb250cm9sIEJsb2NrLCBwb3N0LVZNIGV4aXQsIGJ1dCBmb3IgdGhlIDEtMiB2Q1BVLlxuXG5JIGFsc28gc2VlIHRoYXQgYG5lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sYCBpcyBnZXR0aW5nIG1vZGlmaWVkLiBUaGF0IG9uZSdzIGludGVyZXN0aW5nLCBhcyBpdCdzIHRoZSAwLTIgdm1jYi4gTGV0IG1lIHBpdm90IHRoZXJlIGZpcnN0LCBzaW5jZSBpdCBpcyBhIGZ1bmRhbWVudGFsIGNvbnRyb2wgZnVuY3Rpb24uIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqIGl0J3MgYmVpbmcgY2hhbmdlZCBhbmQgKndoeSogYmVmb3JlIGdvaW5nIGRlZXBlciBpbnRvIHRoZSBleGl0LWhhbmRsaW5nIHBhdGguIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyAqYmVpbmcqIHByZXBwZWQgZm9yIHRoZSAwLTIgdm1jYi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA4NDUsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzo0NTo0My41OTQ2OTI5OTRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NTM1OTEyMDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmVzdGVkX3ZtY2IwMl9wcmVwYXJlX2NvbnRyb2xcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz04NDA9c3RhdGljIGJvb2wgaXNfZXZ0aW5qX25taSh1MzIgZXZ0aW5qKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy04NDktXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo4NTA6c3RhdGljIHZvaWQgbmVzdGVkX3ZtY2IwMl9wcmVwYXJlX2NvbnRyb2woc3RydWN0IHZjcHVfc3ZtICpzdm0pXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy04NTEte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xMDI5PWludCBlbnRlcl9zdm1fZ3Vlc3RfbW9kZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB2bWNiMTJfZ3BhLCBib29sIGZyb21fdm1ydW4pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwNjAtXFx0c3ZtX3N3aXRjaF92bWNiKHN2bSwgXFx1MDAyNnN2bS1cXHUwMDNlbmVzdGVkLnZtY2IwMik7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMDYxOlxcdG5lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sKHN2bSk7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDYyLVxcdG5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlKHN2bSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTE5MzI9c3RhdGljIGludCBzdm1fc2V0X25lc3RlZF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTIwNDEtXFx0c3ZtX3N3aXRjaF92bWNiKHN2bSwgXFx1MDAyNnN2bS1cXHUwMDNlbmVzdGVkLnZtY2IwMik7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyMDQyOlxcdG5lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sKHN2bSk7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMDQzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzo0NTo0Ni4zNDgzMTE1NzRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzMxNzYxNTYyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgS1ZNL1NWTSBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgS1ZNL1NWTSBwYXRjaC4gSXQncyBjbGVhciB0aGF0IGBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfY29udHJvbGAgaXMgYSBjcml0aWNhbCBmdW5jdGlvbiB0byBmb2N1cyBvbiBkdXJpbmcgZnV6emluZyDigJMgdGhhdCBzZWVtcyBsaWtlIGEga2V5IGVudHJ5IHBvaW50LiBMZXQgbWUgZG91YmxlLWNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBwb2ludHMgdG8gY29uc2lkZXIuIEFoYSwgYEtWTV9BTURgIGlzIHRoZSBwcmltYXJ5IG9uZS4gTm93LCBpcyB0aGVyZSBhbnl0aGluZyBhbmFsb2dvdXMgdG8gYFg4Nl9GRUFUVVJFX0RFQ09ERUFTU0lTVFNgIGluIHRlcm1zIG9mIGNvbmZpZ3VyYXRpb24/IE5vLCBpdCdzIGEgQ1BVIGZlYXR1cmUsIG5vdCBhIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbi4gR290IGl0LlxuXG5MZXQgbWUgc3VtbWFyaXplIG15IGZpbmRpbmdzLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmc6IGBXb3J0aEZ1enppbmc6IHRydWVgLiBIZXJlJ3MgdGhlIGxpc3Qgb2YgZnVuY3Rpb25zIHRoYXQgYXBwZWFyIG1vc3QgcmVsZXZhbnQgZm9yIGZ1enppbmc6XG4qICAgYG5lc3RlZF9zdm1fdm1leGl0X3VwZGF0ZV92bWNiMTJgXG4qICAgYG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkYFxuKiAgIGBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfY29udHJvbGBcbiogICBgbmVzdGVkX3N2bV9jbGVhcl9kZWNvZGVfYXNzaXN0c2BcbiogICBgbmVzdGVkX3N2bV9jb3B5X2RlY29kZV9hc3Npc3RzYFxuXG5BbmQsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIGBLVk1fQU1EYCBpcyBlbmFibGVkIChgRW5hYmxlQ29uZmlnczogLSBLVk1fQU1EYCkuXG5cblRoZSByZWFzb24gZm9yIGZ1enppbmcgaXMgY2xlYXI6IHRoaXMgcGF0Y2ggcmVzb2x2ZXMgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSByZWxhdGVkIHRvIG5lc3RlZCBTVk0gdmlydHVhbGl6YXRpb24sIHNwZWNpZmljYWxseSB3aXRoIHRoZSBwb3NzaWJpbGl0eSBvZiBEZWNvZGVBc3Npc3QgZGF0YSBsZWFrYWdlIGJldHdlZW4gVk0gZXhpdHMuIFRoaXMgaW1wYWN0cyBjb3JlIEtWTSBTVk0gbG9naWMsIHRoZSBjb3JlIGZ1bmN0aW9uIGlzIHRoZSBjb2RlIGhhbmRsaW5nIG5lc3RlZCBWTSBleGl0cyBhbmQgcHJlcGFyaW5nIFZNQ0IwMiBjb250cm9scy4gU2luY2UgdGhpcyBjb2RlIGlzIGRpcmVjdGx5IGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCBLVk0gaW9jdGxz4oCUdGhhdCBpcywgcnVubmluZyBhIG5lc3RlZCBndWVzdOKAlGl0IGlzIGFic29sdXRlbHkgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy4gVGhpcyBwYXRjaCBtb2RpZmllcyBmdW5jdGlvbmFsIGNvZGUsIHJlYWNoYWJsZSB0aHJvdWdoIEtWTSBpb2N0bHMsIG1ha2luZyB0aGlzIGEgY2xlYXIgYXJlYSB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNjIyLCJPdXRwdXRUb2tlbnMiOjE3NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzo0NTo1My42NjU5MzE3NDRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjk3NjEwMzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTV9BTURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyXCIsXG4gICAgXCJuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZFwiLFxuICAgIFwibmVzdGVkX3ZtY2IwMl9wcmVwYXJlX2NvbnRyb2xcIixcbiAgICBcIm5lc3RlZF9zdm1fY2xlYXJfZGVjb2RlX2Fzc2lzdHNcIixcbiAgICBcIm5lc3RlZF9zdm1fY29weV9kZWNvZGVfYXNzaXN0c1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG5lc3RlZCBTVk0gdmlydHVhbGl6YXRpb24gd2hlcmUgRGVjb2RlQXNzaXN0IGRhdGEgY291bGQgYmUgbGVha2VkIGZyb20gYSBwcmV2aW91cyBleGl0IHRvIGEgc3Vic2VxdWVudCBleGl0LiBJdCBtb2RpZmllcyBjb3JlIEtWTSBTVk0gbG9naWMgZm9yIGhhbmRsaW5nIG5lc3RlZCBWTSBleGl0cyBhbmQgcHJlcGFyaW5nIFZNQ0IwMiBjb250cm9scy4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBLVk0gaW9jdGxzIChzcGVjaWZpY2FsbHkgcnVubmluZyBhIG5lc3RlZCBndWVzdCksIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNX0FNRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5lc3RlZF9zdm1fdm1leGl0X3VwZGF0ZV92bWNiMTJcIixcbiAgICBcIm5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkXCIsXG4gICAgXCJuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfY29udHJvbFwiLFxuICAgIFwibmVzdGVkX3N2bV9jbGVhcl9kZWNvZGVfYXNzaXN0c1wiLFxuICAgIFwibmVzdGVkX3N2bV9jb3B5X2RlY29kZV9hc3Npc3RzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gbmVzdGVkIFNWTSB2aXJ0dWFsaXphdGlvbiB3aGVyZSBEZWNvZGVBc3Npc3QgZGF0YSBjb3VsZCBiZSBsZWFrZWQgZnJvbSBhIHByZXZpb3VzIGV4aXQgdG8gYSBzdWJzZXF1ZW50IGV4aXQuIEl0IG1vZGlmaWVzIGNvcmUgS1ZNIFNWTSBsb2dpYyBmb3IgaGFuZGxpbmcgbmVzdGVkIFZNIGV4aXRzIGFuZCBwcmVwYXJpbmcgVk1DQjAyIGNvbnRyb2xzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIEtWTSBpb2N0bHMgKHNwZWNpZmljYWxseSBydW5uaW5nIGEgbmVzdGVkIGd1ZXN0KSwgc28gaXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowl8q62[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-29 13:26:50 +0000 UTC FinishedAt: 2026-06-29 13:45:55 +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": "babe08404e1993697a523e60bc0f9d096ffe1ef8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_AMD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "babe08404e1993697a523e60bc0f9d096ffe1ef8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_AMD" ], "series_id": "d1d23b17-2df1-453e-afea-44ca7f9ffaea" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "nested_svm_vmexit_update_vmcb12", "nested_svm_exit_handled", "nested_vmcb02_prepare_control", "nested_svm_clear_decode_assists", "nested_svm_copy_decode_assists" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9BTUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyJiMzNDssCiAgICAmIzM0O25lc3RlZF9zdm1fZXhpdF9oYW5kbGVkJiMzNDssCiAgICAmIzM0O25lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sJiMzNDssCiAgICAmIzM0O25lc3RlZF9zdm1fY2xlYXJfZGVjb2RlX2Fzc2lzdHMmIzM0OywKICAgICYjMzQ7bmVzdGVkX3N2bV9jb3B5X2RlY29kZV9hc3Npc3RzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG5lc3RlZCBTVk0gdmlydHVhbGl6YXRpb24gd2hlcmUgRGVjb2RlQXNzaXN0IGRhdGEgY291bGQgYmUgbGVha2VkIGZyb20gYSBwcmV2aW91cyBleGl0IHRvIGEgc3Vic2VxdWVudCBleGl0LiBJdCBtb2RpZmllcyBjb3JlIEtWTSBTVk0gbG9naWMgZm9yIGhhbmRsaW5nIG5lc3RlZCBWTSBleGl0cyBhbmQgcHJlcGFyaW5nIFZNQ0IwMiBjb250cm9scy4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBLVk0gaW9jdGxzIChzcGVjaWZpY2FsbHkgcnVubmluZyBhIG5lc3RlZCBndWVzdCksIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6NDU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0ZTNlM2Q5MTZhOTFmNGZlZWRkZDVkZWQ3ZmY0ZGZiYWJjOWMyNTI1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjkgMTM6NDU6MDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYyBiL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNcbmluZGV4IGIzNDBkYzk5OTFhZGI0Li41MGU5ZmZhNWY5ZmQ0ZCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNcbkBAIC0zMyw2ICYjNDM7MzMsMzMgQEBcbiBcbiAjZGVmaW5lIENDIEtWTV9ORVNURURfVk1FTlRFUl9DT05TSVNURU5DWV9DSEVDS1xuIFxuJiM0MztzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHN0cnVjdCB2bWNiICp2bWNiKVxuJiM0Mzt7XG4mIzQzO1x0dm1jYi1cdTAwM2Vjb250cm9sLmluc25fbGVuID0gMDtcbiYjNDM7XHRtZW1zZXQodm1jYi1cdTAwM2Vjb250cm9sLmluc25fYnl0ZXMsIDAsXG4mIzQzO1x0ICAgICAgIHNpemVvZih2bWNiLVx1MDAzZWNvbnRyb2wuaW5zbl9ieXRlcykpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX2NvcHlfZGVjb2RlX2Fzc2lzdHMoc3RydWN0IHZtY2IgKnRvLCBzdHJ1Y3Qgdm1jYiAqZnJvbSlcbiYjNDM7e1xuJiM0MztcdHU4IGluc25fbGVuID0gZnJvbS1cdTAwM2Vjb250cm9sLmluc25fbGVuO1xuJiM0MztcbiYjNDM7XHRuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHRvKTtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBIYXJkd2FyZSBsZWF2ZXMgaW5zbl9sZW4gemVybyB3aGVuIG5vIERlY29kZUFzc2lzdCBkYXRhIGlzIGF2YWlsYWJsZS5cbiYjNDM7XHQgKiBLZWVwIHRoYXQgYXMgdGhlIG5lc3RlZC12aXNpYmxlIFwmIzM0O25vIGRlY29kZSBpbmZvXCYjMzQ7IG1hcmtlci5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoIWluc25fbGVuKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRpZiAoV0FSTl9PTl9PTkNFKGluc25fbGVuIFx1MDAzZSBzaXplb2YoZnJvbS1cdTAwM2Vjb250cm9sLmluc25fYnl0ZXMpKSlcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0dG8tXHUwMDNlY29udHJvbC5pbnNuX2xlbiA9IGluc25fbGVuO1xuJiM0MztcdG1lbWNweSh0by1cdTAwM2Vjb250cm9sLmluc25fYnl0ZXMsIGZyb20tXHUwMDNlY29udHJvbC5pbnNuX2J5dGVzLCBpbnNuX2xlbik7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgbmVzdGVkX3N2bV9pbmplY3RfbnBmX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuIFx0XHRcdFx0ICAgICAgIHN0cnVjdCB4ODZfZXhjZXB0aW9uICpmYXVsdClcbiB7XG5AQCAtODM4LDcgJiM0Mzs4NjUsMTAgQEAgc3RhdGljIHZvaWQgbmVzdGVkX3ZtY2IwMl9wcmVwYXJlX2NvbnRyb2woc3RydWN0IHZjcHVfc3ZtICpzdm0pXG4gXHQvKlxuIFx0ICogRmlsbGVkIGF0IGV4aXQ6IGV4aXRfY29kZSwgZXhpdF9pbmZvXzEsIGV4aXRfaW5mb18yLCBleGl0X2ludF9pbmZvLFxuIFx0ICogZXhpdF9pbnRfaW5mb19lcnIsIG5leHRfcmlwLCBpbnNuX2xlbiwgaW5zbl9ieXRlcy5cbiYjNDM7XHQgKiBDbGVhciBzdGFsZSBEZWNvZGVBc3Npc3QgZGF0YSBiZWZvcmUgTDIgcnVucy5cbiBcdCAqL1xuJiM0MztcdG5lc3RlZF9zdm1fY2xlYXJfZGVjb2RlX2Fzc2lzdHModm1jYjAyKTtcbiYjNDM7XHRzdm0tXHUwMDNlbmVzdGVkLmRlY29kZV9hc3Npc3RzX3ZhbGlkID0gZmFsc2U7XG4gXG4gXHRpZiAoZ3Vlc3RfY3B1X2NhcF9oYXModmNwdSwgWDg2X0ZFQVRVUkVfVkdJRikgXHUwMDI2XHUwMDI2XG4gXHQgICAgKHZtY2IxMl9jdHJsLVx1MDAzZWludF9jdGwgXHUwMDI2IFZfR0lGX0VOQUJMRV9NQVNLKSlcbkBAIC0xMjUxLDYgJiM0MzsxMjgxLDE4IEBAIHN0YXRpYyBpbnQgbmVzdGVkX3N2bV92bWV4aXRfdXBkYXRlX3ZtY2IxMihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRpZiAoZ3Vlc3RfY3B1X2NhcF9oYXModmNwdSwgWDg2X0ZFQVRVUkVfTlJJUFMpKVxuIFx0XHR2bWNiMTItXHUwMDNlY29udHJvbC5uZXh0X3JpcCAgPSB2bWNiMDItXHUwMDNlY29udHJvbC5uZXh0X3JpcDtcbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIENvcHkgRGVjb2RlQXNzaXN0IGRhdGEgb25seSBmb3IgcmVhbCBWTUNCMDIgZXhpdHMuICBLVk0tc3ludGhlc2l6ZWRcbiYjNDM7XHQgKiBleGl0cyByZXBvcnQgbm8gZGVjb2RlIGluZm8gdG8gTDEuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHN2bS1cdTAwM2VuZXN0ZWQuZGVjb2RlX2Fzc2lzdHNfdmFsaWQgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGd1ZXN0X2NwdV9jYXBfaGFzKHZjcHUsIFg4Nl9GRUFUVVJFX0RFQ09ERUFTU0lTVFMpKVxuJiM0MztcdFx0bmVzdGVkX3N2bV9jb3B5X2RlY29kZV9hc3Npc3RzKHZtY2IxMiwgdm1jYjAyKTtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHZtY2IxMik7XG4mIzQzO1xuJiM0MztcdHN2bS1cdTAwM2VuZXN0ZWQuZGVjb2RlX2Fzc2lzdHNfdmFsaWQgPSBmYWxzZTtcbiYjNDM7XG4gXHRpZiAobmVzdGVkX3ZtY2IxMl9oYXNfbGJydih2Y3B1KSlcbiBcdFx0c3ZtX2NvcHlfbGJycyhcdTAwMjZ2bWNiMTItXHUwMDNlc2F2ZSwgXHUwMDI2dm1jYjAyLVx1MDAzZXNhdmUpO1xuIFxuQEAgLTE1OTMsOCAmIzQzOzE2MzUsMTEgQEAgaW50IG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxuIFxuIFx0dm1leGl0ID0gbmVzdGVkX3N2bV9pbnRlcmNlcHQoc3ZtKTtcbiBcbi1cdGlmICh2bWV4aXQgPT0gTkVTVEVEX0VYSVRfRE9ORSlcbiYjNDM7XHRpZiAodm1leGl0ID09IE5FU1RFRF9FWElUX0RPTkUpIHtcbiYjNDM7XHRcdC8qIFRoaXMgcGF0aCByZWZsZWN0cyBhIHJlYWwgVk1DQjAyIGV4aXQgZGlyZWN0bHkgdG8gTDEuICovXG4mIzQzO1x0XHRzdm0tXHUwMDNlbmVzdGVkLmRlY29kZV9hc3Npc3RzX3ZhbGlkID0gdHJ1ZTtcbiBcdFx0bmVzdGVkX3N2bV92bWV4aXQoc3ZtKTtcbiYjNDM7XHR9XG4gXG4gXHRyZXR1cm4gdm1leGl0O1xuIH1cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xuaW5kZXggZTAyYTM4ZGE1Mjk2ZTMuLjM2NmU3ZWY3ODdiMjYwIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xuQEAgLTU0NzAsNiAmIzQzOzU0NzAsOSBAQCBzdGF0aWMgX19pbml0IHZvaWQgc3ZtX3NldF9jcHVfY2Fwcyh2b2lkKVxuIFx0XHQgKi9cbiBcdFx0a3ZtX2NwdV9jYXBfc2V0KFg4Nl9GRUFUVVJFX0ZMVVNIQllBU0lEKTtcbiBcbiYjNDM7XHRcdGlmIChib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfREVDT0RFQVNTSVNUUykpXG4mIzQzO1x0XHRcdGt2bV9jcHVfY2FwX3NldChYODZfRkVBVFVSRV9ERUNPREVBU1NJU1RTKTtcbiYjNDM7XG4gXHRcdGlmIChucmlwcylcbiBcdFx0XHRrdm1fY3B1X2NhcF9zZXQoWDg2X0ZFQVRVUkVfTlJJUFMpO1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmggYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oXG5pbmRleCA1MTM3NDE2YmU1OTNkNy4uYmU3ZmRjZDEyNGI3NDIgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oXG5AQCAtMjM4LDYgJiM0MzsyMzgsMTIgQEAgc3RydWN0IHN2bV9uZXN0ZWRfc3RhdGUge1xuIFx0ICogb24gaXRzIHNpZGUuXG4gXHQgKi9cbiBcdGJvb2wgZm9yY2VfbXNyX2JpdG1hcF9yZWNhbGM7XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogVHJ1ZSBvbmx5IHdoaWxlIHJlZmxlY3RpbmcgYSByZWFsIFZNQ0IwMiBleGl0IHdob3NlIERlY29kZUFzc2lzdFxuJiM0MztcdCAqIGZpZWxkcyBtYXkgYmUgY29waWVkIHRvIFZNQ0IxMi4gIEtWTS1zeW50aGVzaXplZCBleGl0cyBsZWF2ZSBpdCBjbGVhci5cbiYjNDM7XHQgKi9cbiYjNDM7XHRib29sIGRlY29kZV9hc3Npc3RzX3ZhbGlkO1xuIH07XG4gXG4gc3RydWN0IHZjcHVfc2V2X2VzX3N0YXRlIHtcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bVxuaW5kZXggOTExOGE1YTUxYjg5ZmQuLjIzYmY1MTA3NDM5MjI4IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bVxuQEAgLTExNCw2ICYjNDM7MTE0LDcgQEAgVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSB4ODYvdm14X3ByZWVtcHRpb25fdGltZXJfdGVzdFxuIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0geDg2L3N2bV92bWNhbGxfdGVzdFxuIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0geDg2L3N2bV9pbnRfY3RsX3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX2NsZWFyX2VmZXJfc3ZtZVxuJiM0MztURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX2RlY29kZV9hc3Npc3RzX3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX3NodXRkb3duX3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX3NvZnRfaW5qZWN0X3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX3ZtY2IxMl9ncGFcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmhcbmluZGV4IDc3ZjU3NmVlNzc4OWQ4Li5lZTQ1MjBmZjJmODkzNyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXG5AQCAtMjAxLDYgJiM0MzsyMDEsNyBAQCBzdHJ1Y3Qga3ZtX3g4Nl9jcHVfZmVhdHVyZSB7XG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfTEJSVlx0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMEEsIDAsIEVEWCwgMSlcbiAjZGVmaW5lXHRYODZfRkVBVFVSRV9OUklQU1x0XHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMEEsIDAsIEVEWCwgMylcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1RTQ1JBVEVNU1IgICAgICAgICAgS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDBBLCAwLCBFRFgsIDQpXG4mIzQzOyNkZWZpbmUgWDg2X0ZFQVRVUkVfREVDT0RFQVNTSVNUUyAgICAgICBLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMEEsIDAsIEVEWCwgNylcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1BBVVNFRklMVEVSICAgICAgICAgS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDBBLCAwLCBFRFgsIDEwKVxuICNkZWZpbmUgWDg2X0ZFQVRVUkVfUEZUSFJFU0hPTEQgICAgICAgICBLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMEEsIDAsIEVEWCwgMTIpXG4gI2RlZmluZVx0WDg2X0ZFQVRVUkVfVl9WTVNBVkVfVk1MT0FEXHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMEEsIDAsIEVEWCwgMTUpXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdm1fbmVzdGVkX2RlY29kZV9hc3Npc3RzX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3ZtX25lc3RlZF9kZWNvZGVfYXNzaXN0c190ZXN0LmNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uNmI1ZDM4ZDlkMzZjNDVcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3ZtX25lc3RlZF9kZWNvZGVfYXNzaXN0c190ZXN0LmNcbkBAIC0wLDAgJiM0MzsxLDk5IEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7dGVzdF91dGlsLmhcJiMzNDtcbiYjNDM7I2luY2x1ZGUgXCYjMzQ7a3ZtX3V0aWwuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtwcm9jZXNzb3IuaFwmIzM0O1xuJiM0MzsjaW5jbHVkZSBcJiMzNDtzdm1fdXRpbC5oXCYjMzQ7XG4mIzQzO1xuJiM0MzsjZGVmaW5lIEwyX0dVRVNUX1NUQUNLX1NJWkUgNjRcbiYjNDM7XG4mIzQzO3N0YXRpYyB1aW50NjRfdCBucGZfdGFyZ2V0IF9fYWxpZ25lZChQQUdFX1NJWkUpO1xuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgbDJfZ3Vlc3RfY29kZSh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0YXNtIHZvbGF0aWxlKFwmIzM0O21vdiAoJTApLCAlJXJheFwmIzM0OyA6IDogXCYjMzQ7clwmIzM0OyhcdTAwMjZucGZfdGFyZ2V0KSA6IFwmIzM0O3JheFwmIzM0OywgXCYjMzQ7bWVtb3J5XCYjMzQ7KTtcbiYjNDM7XHRHVUVTVF9GQUlMKFwmIzM0O0wyIGFjY2VzcyBkaWQgbm90IGNhdXNlIGEgbmVzdGVkIHBhZ2UgZmF1bHRcJiMzNDspO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCBsMl92bW1jYWxsX2NvZGUodm9pZClcbiYjNDM7e1xuJiM0MztcdGFzbSB2b2xhdGlsZShcJiMzNDt2bW1jYWxsXCYjMzQ7KTtcbiYjNDM7XHRHVUVTVF9GQUlMKFwmIzM0O0wyIGRpZCBub3QgZXhpdCBvbiBWTU1DQUxMXCYjMzQ7KTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogV2hlbmV2ZXIgaGFyZHdhcmUgcmVwb3J0cyBEZWNvZGVBc3Npc3QgaW5mb3JtYXRpb24gKGluc25fbGVuICE9IDApLCB0aGUgYnl0ZXNcbiYjNDM7ICogS1ZNIHJlZmxlY3RzIGludG8gVk1DQjEyIG11c3QgYmUgdGhlIGluc3RydWN0aW9uIGF0IHRoZSBjdXJyZW50IFJJUCwgbmV2ZXJcbiYjNDM7ICogc3RhbGUgYnl0ZXMgY2FycmllZCBvdmVyIGZyb20gYSBwcmV2aW91cyBMMiBleGl0LlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIHZvaWQgYXNzZXJ0X2RlY29kZV9hc3Npc3RzX3NhbmUoc3RydWN0IHZtY2IgKnZtY2IpXG4mIzQzO3tcbiYjNDM7XHRHVUVTVF9BU1NFUlQodm1jYi1cdTAwM2Vjb250cm9sLmluc25fbGVuIFx1MDAzYz1cbiYjNDM7XHRcdCAgICAgc2l6ZW9mKHZtY2ItXHUwMDNlY29udHJvbC5pbnNuX2J5dGVzKSk7XG4mIzQzO1x0aWYgKHZtY2ItXHUwMDNlY29udHJvbC5pbnNuX2xlbilcbiYjNDM7XHRcdEdVRVNUX0FTU0VSVCghbWVtY21wKHZtY2ItXHUwMDNlY29udHJvbC5pbnNuX2J5dGVzLFxuJiM0MztcdFx0XHRcdCAgICAgKHZvaWQgKil2bWNiLVx1MDAzZXNhdmUucmlwLFxuJiM0MztcdFx0XHRcdCAgICAgdm1jYi1cdTAwM2Vjb250cm9sLmluc25fbGVuKSk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIGwxX2d1ZXN0X2NvZGUoc3RydWN0IHN2bV90ZXN0X2RhdGEgKnN2bSlcbiYjNDM7e1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgbDJfZ3Vlc3Rfc3RhY2tbTDJfR1VFU1RfU1RBQ0tfU0laRV07XG4mIzQzO1x0c3RydWN0IHZtY2IgKnZtY2IgPSBzdm0tXHUwMDNldm1jYjtcbiYjNDM7XG4mIzQzO1x0R1VFU1RfQVNTRVJUKHRoaXNfY3B1X2hhcyhYODZfRkVBVFVSRV9ERUNPREVBU1NJU1RTKSk7XG4mIzQzO1xuJiM0MztcdGdlbmVyaWNfc3ZtX3NldHVwKHN2bSwgbDJfZ3Vlc3RfY29kZSxcbiYjNDM7XHRcdFx0ICBcdTAwMjZsMl9ndWVzdF9zdGFja1tMMl9HVUVTVF9TVEFDS19TSVpFXSk7XG4mIzQzO1xuJiM0MztcdC8qIEEgcmVhbCBuZXN0ZWQgI05QRiBtdXN0IHJlZmxlY3QgdmFsaWQgZGVjb2RlIGluZm9ybWF0aW9uIHRvIEwxLiAqL1xuJiM0MztcdHJ1bl9ndWVzdCh2bWNiLCBzdm0tXHUwMDNldm1jYl9ncGEpO1xuJiM0MztcbiYjNDM7XHRHVUVTVF9BU1NFUlRfRVEodm1jYi1cdTAwM2Vjb250cm9sLmV4aXRfY29kZSwgU1ZNX0VYSVRfTlBGKTtcbiYjNDM7XHRHVUVTVF9BU1NFUlQodm1jYi1cdTAwM2Vjb250cm9sLmluc25fbGVuKTtcbiYjNDM7XHRhc3NlcnRfZGVjb2RlX2Fzc2lzdHNfc2FuZSh2bWNiKTtcbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBSZWRpcmVjdCBMMiBwYXN0IHRoZSBzdGlsbC1mYXVsdGluZyBhY2Nlc3MgdG8gYSBWTU1DQUxMLiAgS1ZNIHJldXNlc1xuJiM0MztcdCAqIGl0cyBpbnRlcm5hbCBWTUNCMDIsIHdoaWNoIG5vdyBob2xkcyB0aGUgI05QRiYjMzk7cyBkZWNvZGUgYnl0ZXMsIHNvIHRoaXNcbiYjNDM7XHQgKiBleGVyY2lzZXMgdGhlIHBhdGggdGhhdCBtdXN0IGNsZWFyIERlY29kZUFzc2lzdCBzdGF0ZSBhbmQgZW5zdXJlcyB0aGVcbiYjNDM7XHQgKiBwcmlvciBleGl0JiMzOTtzIGJ5dGVzIGFyZSBub3QgbGVha2VkIGludG8gYSBzdWJzZXF1ZW50IGV4aXQuXG4mIzQzO1x0ICovXG4mIzQzO1x0dm1jYi1cdTAwM2VzYXZlLnJpcCA9ICh1NjQpbDJfdm1tY2FsbF9jb2RlO1xuJiM0MztcdHJ1bl9ndWVzdCh2bWNiLCBzdm0tXHUwMDNldm1jYl9ncGEpO1xuJiM0MztcbiYjNDM7XHRHVUVTVF9BU1NFUlRfRVEodm1jYi1cdTAwM2Vjb250cm9sLmV4aXRfY29kZSwgU1ZNX0VYSVRfVk1NQ0FMTCk7XG4mIzQzO1x0YXNzZXJ0X2RlY29kZV9hc3Npc3RzX3NhbmUodm1jYik7XG4mIzQzO1xuJiM0MztcdEdVRVNUX0RPTkUoKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbiYjNDM7e1xuJiM0MztcdGd2YV90IHN2bV9ndmEsIG5wZl9ndmE7XG4mIzQzO1x0Z3BhX3QgbnBmX2dwYTtcbiYjNDM7XHRzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHU7XG4mIzQzO1x0c3RydWN0IGt2bV92bSAqdm07XG4mIzQzO1x0dTY0ICpwdGU7XG4mIzQzO1xuJiM0MztcdFRFU1RfUkVRVUlSRShrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9TVk0pKTtcbiYjNDM7XHRURVNUX1JFUVVJUkUoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfTlBUKSk7XG4mIzQzO1x0VEVTVF9SRVFVSVJFKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX0RFQ09ERUFTU0lTVFMpKTtcbiYjNDM7XG4mIzQzO1x0dm0gPSB2bV9jcmVhdGVfd2l0aF9vbmVfdmNwdShcdTAwMjZ2Y3B1LCBsMV9ndWVzdF9jb2RlKTtcbiYjNDM7XHR2bV9lbmFibGVfbnB0KHZtKTtcbiYjNDM7XHR2Y3B1X2FsbG9jX3N2bSh2bSwgXHUwMDI2c3ZtX2d2YSk7XG4mIzQzO1x0bnBmX2d2YSA9IChndmFfdClcdTAwMjZucGZfdGFyZ2V0O1xuJiM0MztcdG5wZl9ncGEgPSBhZGRyX2d2YTJncGEodm0sIG5wZl9ndmEpO1xuJiM0MztcbiYjNDM7XHR0ZHBfaWRlbnRpdHlfbWFwX2RlZmF1bHRfbWVtc2xvdHModm0pO1xuJiM0MztcdHB0ZSA9IHRkcF9nZXRfcHRlKHZtLCBucGZfZ3BhKTtcbiYjNDM7XHQqcHRlIFx1MDAyNj0gflBURV9QUkVTRU5UX01BU0soXHUwMDI2dm0tXHUwMDNlc3RhZ2UyX21tdSk7XG4mIzQzO1xuJiM0MztcdHZjcHVfYXJnc19zZXQodmNwdSwgMSwgc3ZtX2d2YSk7XG4mIzQzO1x0dmNwdV9ydW4odmNwdSk7XG4mIzQzO1x0VEVTVF9BU1NFUlRfS1ZNX0VYSVRfUkVBU09OKHZjcHUsIEtWTV9FWElUX0lPKTtcbiYjNDM7XHRURVNUX0FTU0VSVF9FUShnZXRfdWNhbGwodmNwdSwgTlVMTCksIFVDQUxMX0RPTkUpO1xuJiM0MztcbiYjNDM7XHRrdm1fdm1fZnJlZSh2bSk7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzo0NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk1fQU1EJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmVzdGVkX3N2bV92bWV4aXRfdXBkYXRlX3ZtY2IxMiYjMzQ7LAogICAgJiMzNDtuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZCYjMzQ7LAogICAgJiMzNDtuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfY29udHJvbCYjMzQ7LAogICAgJiMzNDtuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzJiMzNDssCiAgICAmIzM0O25lc3RlZF9zdm1fY29weV9kZWNvZGVfYXNzaXN0cyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBuZXN0ZWQgU1ZNIHZpcnR1YWxpemF0aW9uIHdoZXJlIERlY29kZUFzc2lzdCBkYXRhIGNvdWxkIGJlIGxlYWtlZCBmcm9tIGEgcHJldmlvdXMgZXhpdCB0byBhIHN1YnNlcXVlbnQgZXhpdC4gSXQgbW9kaWZpZXMgY29yZSBLVk0gU1ZNIGxvZ2ljIGZvciBoYW5kbGluZyBuZXN0ZWQgVk0gZXhpdHMgYW5kIHByZXBhcmluZyBWTUNCMDIgY29udHJvbHMuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgS1ZNIGlvY3RscyAoc3BlY2lmaWNhbGx5IHJ1bm5pbmcgYSBuZXN0ZWQgZ3Vlc3QpLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0ZTNlM2Q5MTZhOTFmNGZlZWRkZDVkZWQ3ZmY0ZGZiYWJjOWMyNTI1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdW4gMjkgMTM6NDU6MDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jIGIvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYwppbmRleCBiMzQwZGM5OTkxYWRiNC4uNTBlOWZmYTVmOWZkNGQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYwpAQCAtMzMsNiAmIzQzOzMzLDMzIEBACiAKICNkZWZpbmUgQ0MgS1ZNX05FU1RFRF9WTUVOVEVSX0NPTlNJU1RFTkNZX0NIRUNLCiAKJiM0MztzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHN0cnVjdCB2bWNiICp2bWNiKQomIzQzO3sKJiM0MzsJdm1jYi0mZ3Q7Y29udHJvbC5pbnNuX2xlbiA9IDA7CiYjNDM7CW1lbXNldCh2bWNiLSZndDtjb250cm9sLmluc25fYnl0ZXMsIDAsCiYjNDM7CSAgICAgICBzaXplb2Yodm1jYi0mZ3Q7Y29udHJvbC5pbnNuX2J5dGVzKSk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIG5lc3RlZF9zdm1fY29weV9kZWNvZGVfYXNzaXN0cyhzdHJ1Y3Qgdm1jYiAqdG8sIHN0cnVjdCB2bWNiICpmcm9tKQomIzQzO3sKJiM0MzsJdTggaW5zbl9sZW4gPSBmcm9tLSZndDtjb250cm9sLmluc25fbGVuOwomIzQzOwomIzQzOwluZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHRvKTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogSGFyZHdhcmUgbGVhdmVzIGluc25fbGVuIHplcm8gd2hlbiBubyBEZWNvZGVBc3Npc3QgZGF0YSBpcyBhdmFpbGFibGUuCiYjNDM7CSAqIEtlZXAgdGhhdCBhcyB0aGUgbmVzdGVkLXZpc2libGUgJiMzNDtubyBkZWNvZGUgaW5mbyYjMzQ7IG1hcmtlci4KJiM0MzsJICovCiYjNDM7CWlmICghaW5zbl9sZW4pCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWlmIChXQVJOX09OX09OQ0UoaW5zbl9sZW4gJmd0OyBzaXplb2YoZnJvbS0mZ3Q7Y29udHJvbC5pbnNuX2J5dGVzKSkpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CXRvLSZndDtjb250cm9sLmluc25fbGVuID0gaW5zbl9sZW47CiYjNDM7CW1lbWNweSh0by0mZ3Q7Y29udHJvbC5pbnNuX2J5dGVzLCBmcm9tLSZndDtjb250cm9sLmluc25fYnl0ZXMsIGluc25fbGVuKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX2luamVjdF9ucGZfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAJCQkJICAgICAgIHN0cnVjdCB4ODZfZXhjZXB0aW9uICpmYXVsdCkKIHsKQEAgLTgzOCw3ICYjNDM7ODY1LDEwIEBAIHN0YXRpYyB2b2lkIG5lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKQogCS8qCiAJICogRmlsbGVkIGF0IGV4aXQ6IGV4aXRfY29kZSwgZXhpdF9pbmZvXzEsIGV4aXRfaW5mb18yLCBleGl0X2ludF9pbmZvLAogCSAqIGV4aXRfaW50X2luZm9fZXJyLCBuZXh0X3JpcCwgaW5zbl9sZW4sIGluc25fYnl0ZXMuCiYjNDM7CSAqIENsZWFyIHN0YWxlIERlY29kZUFzc2lzdCBkYXRhIGJlZm9yZSBMMiBydW5zLgogCSAqLwomIzQzOwluZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHZtY2IwMik7CiYjNDM7CXN2bS0mZ3Q7bmVzdGVkLmRlY29kZV9hc3Npc3RzX3ZhbGlkID0gZmFsc2U7CiAKIAlpZiAoZ3Vlc3RfY3B1X2NhcF9oYXModmNwdSwgWDg2X0ZFQVRVUkVfVkdJRikgJmFtcDsmYW1wOwogCSAgICAodm1jYjEyX2N0cmwtJmd0O2ludF9jdGwgJmFtcDsgVl9HSUZfRU5BQkxFX01BU0spKQpAQCAtMTI1MSw2ICYjNDM7MTI4MSwxOCBAQCBzdGF0aWMgaW50IG5lc3RlZF9zdm1fdm1leGl0X3VwZGF0ZV92bWNiMTIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCWlmIChndWVzdF9jcHVfY2FwX2hhcyh2Y3B1LCBYODZfRkVBVFVSRV9OUklQUykpCiAJCXZtY2IxMi0mZ3Q7Y29udHJvbC5uZXh0X3JpcCAgPSB2bWNiMDItJmd0O2NvbnRyb2wubmV4dF9yaXA7CiAKJiM0MzsJLyoKJiM0MzsJICogQ29weSBEZWNvZGVBc3Npc3QgZGF0YSBvbmx5IGZvciByZWFsIFZNQ0IwMiBleGl0cy4gIEtWTS1zeW50aGVzaXplZAomIzQzOwkgKiBleGl0cyByZXBvcnQgbm8gZGVjb2RlIGluZm8gdG8gTDEuCiYjNDM7CSAqLwomIzQzOwlpZiAoc3ZtLSZndDtuZXN0ZWQuZGVjb2RlX2Fzc2lzdHNfdmFsaWQgJmFtcDsmYW1wOwomIzQzOwkgICAgZ3Vlc3RfY3B1X2NhcF9oYXModmNwdSwgWDg2X0ZFQVRVUkVfREVDT0RFQVNTSVNUUykpCiYjNDM7CQluZXN0ZWRfc3ZtX2NvcHlfZGVjb2RlX2Fzc2lzdHModm1jYjEyLCB2bWNiMDIpOwomIzQzOwllbHNlCiYjNDM7CQluZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHZtY2IxMik7CiYjNDM7CiYjNDM7CXN2bS0mZ3Q7bmVzdGVkLmRlY29kZV9hc3Npc3RzX3ZhbGlkID0gZmFsc2U7CiYjNDM7CiAJaWYgKG5lc3RlZF92bWNiMTJfaGFzX2xicnYodmNwdSkpCiAJCXN2bV9jb3B5X2xicnMoJmFtcDt2bWNiMTItJmd0O3NhdmUsICZhbXA7dm1jYjAyLSZndDtzYXZlKTsKIApAQCAtMTU5Myw4ICYjNDM7MTYzNSwxMSBAQCBpbnQgbmVzdGVkX3N2bV9leGl0X2hhbmRsZWQoc3RydWN0IHZjcHVfc3ZtICpzdm0pCiAKIAl2bWV4aXQgPSBuZXN0ZWRfc3ZtX2ludGVyY2VwdChzdm0pOwogCi0JaWYgKHZtZXhpdCA9PSBORVNURURfRVhJVF9ET05FKQomIzQzOwlpZiAodm1leGl0ID09IE5FU1RFRF9FWElUX0RPTkUpIHsKJiM0MzsJCS8qIFRoaXMgcGF0aCByZWZsZWN0cyBhIHJlYWwgVk1DQjAyIGV4aXQgZGlyZWN0bHkgdG8gTDEuICovCiYjNDM7CQlzdm0tJmd0O25lc3RlZC5kZWNvZGVfYXNzaXN0c192YWxpZCA9IHRydWU7CiAJCW5lc3RlZF9zdm1fdm1leGl0KHN2bSk7CiYjNDM7CX0KIAogCXJldHVybiB2bWV4aXQ7CiB9CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uYwppbmRleCBlMDJhMzhkYTUyOTZlMy4uMzY2ZTdlZjc4N2IyNjAgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uYwpAQCAtNTQ3MCw2ICYjNDM7NTQ3MCw5IEBAIHN0YXRpYyBfX2luaXQgdm9pZCBzdm1fc2V0X2NwdV9jYXBzKHZvaWQpCiAJCSAqLwogCQlrdm1fY3B1X2NhcF9zZXQoWDg2X0ZFQVRVUkVfRkxVU0hCWUFTSUQpOwogCiYjNDM7CQlpZiAoYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0RFQ09ERUFTU0lTVFMpKQomIzQzOwkJCWt2bV9jcHVfY2FwX3NldChYODZfRkVBVFVSRV9ERUNPREVBU1NJU1RTKTsKJiM0MzsKIAkJaWYgKG5yaXBzKQogCQkJa3ZtX2NwdV9jYXBfc2V0KFg4Nl9GRUFUVVJFX05SSVBTKTsKIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uaCBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmgKaW5kZXggNTEzNzQxNmJlNTkzZDcuLmJlN2ZkY2QxMjRiNzQyIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmgKQEAgLTIzOCw2ICYjNDM7MjM4LDEyIEBAIHN0cnVjdCBzdm1fbmVzdGVkX3N0YXRlIHsKIAkgKiBvbiBpdHMgc2lkZS4KIAkgKi8KIAlib29sIGZvcmNlX21zcl9iaXRtYXBfcmVjYWxjOwomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBUcnVlIG9ubHkgd2hpbGUgcmVmbGVjdGluZyBhIHJlYWwgVk1DQjAyIGV4aXQgd2hvc2UgRGVjb2RlQXNzaXN0CiYjNDM7CSAqIGZpZWxkcyBtYXkgYmUgY29waWVkIHRvIFZNQ0IxMi4gIEtWTS1zeW50aGVzaXplZCBleGl0cyBsZWF2ZSBpdCBjbGVhci4KJiM0MzsJICovCiYjNDM7CWJvb2wgZGVjb2RlX2Fzc2lzdHNfdmFsaWQ7CiB9OwogCiBzdHJ1Y3QgdmNwdV9zZXZfZXNfc3RhdGUgewpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm0KaW5kZXggOTExOGE1YTUxYjg5ZmQuLjIzYmY1MTA3NDM5MjI4IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm0KQEAgLTExNCw2ICYjNDM7MTE0LDcgQEAgVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSB4ODYvdm14X3ByZWVtcHRpb25fdGltZXJfdGVzdAogVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSB4ODYvc3ZtX3ZtY2FsbF90ZXN0CiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1faW50X2N0bF90ZXN0CiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX2NsZWFyX2VmZXJfc3ZtZQomIzQzO1RFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0geDg2L3N2bV9uZXN0ZWRfZGVjb2RlX2Fzc2lzdHNfdGVzdAogVEVTVF9HRU5fUFJPR1NfeDg2ICYjNDM7PSB4ODYvc3ZtX25lc3RlZF9zaHV0ZG93bl90ZXN0CiBURVNUX0dFTl9QUk9HU194ODYgJiM0Mzs9IHg4Ni9zdm1fbmVzdGVkX3NvZnRfaW5qZWN0X3Rlc3QKIFRFU1RfR0VOX1BST0dTX3g4NiAmIzQzOz0geDg2L3N2bV9uZXN0ZWRfdm1jYjEyX2dwYQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oCmluZGV4IDc3ZjU3NmVlNzc4OWQ4Li5lZTQ1MjBmZjJmODkzNyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oCiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaApAQCAtMjAxLDYgJiM0MzsyMDEsNyBAQCBzdHJ1Y3Qga3ZtX3g4Nl9jcHVfZmVhdHVyZSB7CiAjZGVmaW5lCVg4Nl9GRUFUVVJFX0xCUlYJCUtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwQSwgMCwgRURYLCAxKQogI2RlZmluZQlYODZfRkVBVFVSRV9OUklQUwkJS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDBBLCAwLCBFRFgsIDMpCiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1RTQ1JBVEVNU1IgICAgICAgICAgS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDBBLCAwLCBFRFgsIDQpCiYjNDM7I2RlZmluZSBYODZfRkVBVFVSRV9ERUNPREVBU1NJU1RTICAgICAgIEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwQSwgMCwgRURYLCA3KQogI2RlZmluZSBYODZfRkVBVFVSRV9QQVVTRUZJTFRFUiAgICAgICAgIEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwQSwgMCwgRURYLCAxMCkKICNkZWZpbmUgWDg2X0ZFQVRVUkVfUEZUSFJFU0hPTEQgICAgICAgICBLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMEEsIDAsIEVEWCwgMTIpCiAjZGVmaW5lCVg4Nl9GRUFUVVJFX1ZfVk1TQVZFX1ZNTE9BRAlLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMEEsIDAsIEVEWCwgMTUpCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N2bV9uZXN0ZWRfZGVjb2RlX2Fzc2lzdHNfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdm1fbmVzdGVkX2RlY29kZV9hc3Npc3RzX3Rlc3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMC4uNmI1ZDM4ZDlkMzZjNDUKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N2bV9uZXN0ZWRfZGVjb2RlX2Fzc2lzdHNfdGVzdC5jCkBAIC0wLDAgJiM0MzsxLDk5IEBACiYjNDM7Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQomIzQzOyNpbmNsdWRlICYjMzQ7dGVzdF91dGlsLmgmIzM0OwomIzQzOyNpbmNsdWRlICYjMzQ7a3ZtX3V0aWwuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtwcm9jZXNzb3IuaCYjMzQ7CiYjNDM7I2luY2x1ZGUgJiMzNDtzdm1fdXRpbC5oJiMzNDsKJiM0MzsKJiM0MzsjZGVmaW5lIEwyX0dVRVNUX1NUQUNLX1NJWkUgNjQKJiM0MzsKJiM0MztzdGF0aWMgdWludDY0X3QgbnBmX3RhcmdldCBfX2FsaWduZWQoUEFHRV9TSVpFKTsKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBsMl9ndWVzdF9jb2RlKHZvaWQpCiYjNDM7ewomIzQzOwlhc20gdm9sYXRpbGUoJiMzNDttb3YgKCUwKSwgJSVyYXgmIzM0OyA6IDogJiMzNDtyJiMzNDsoJmFtcDtucGZfdGFyZ2V0KSA6ICYjMzQ7cmF4JiMzNDssICYjMzQ7bWVtb3J5JiMzNDspOwomIzQzOwlHVUVTVF9GQUlMKCYjMzQ7TDIgYWNjZXNzIGRpZCBub3QgY2F1c2UgYSBuZXN0ZWQgcGFnZSBmYXVsdCYjMzQ7KTsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgbDJfdm1tY2FsbF9jb2RlKHZvaWQpCiYjNDM7ewomIzQzOwlhc20gdm9sYXRpbGUoJiMzNDt2bW1jYWxsJiMzNDspOwomIzQzOwlHVUVTVF9GQUlMKCYjMzQ7TDIgZGlkIG5vdCBleGl0IG9uIFZNTUNBTEwmIzM0Oyk7CiYjNDM7fQomIzQzOwomIzQzOy8qCiYjNDM7ICogV2hlbmV2ZXIgaGFyZHdhcmUgcmVwb3J0cyBEZWNvZGVBc3Npc3QgaW5mb3JtYXRpb24gKGluc25fbGVuICE9IDApLCB0aGUgYnl0ZXMKJiM0MzsgKiBLVk0gcmVmbGVjdHMgaW50byBWTUNCMTIgbXVzdCBiZSB0aGUgaW5zdHJ1Y3Rpb24gYXQgdGhlIGN1cnJlbnQgUklQLCBuZXZlcgomIzQzOyAqIHN0YWxlIGJ5dGVzIGNhcnJpZWQgb3ZlciBmcm9tIGEgcHJldmlvdXMgTDIgZXhpdC4KJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCBhc3NlcnRfZGVjb2RlX2Fzc2lzdHNfc2FuZShzdHJ1Y3Qgdm1jYiAqdm1jYikKJiM0Mzt7CiYjNDM7CUdVRVNUX0FTU0VSVCh2bWNiLSZndDtjb250cm9sLmluc25fbGVuICZsdDs9CiYjNDM7CQkgICAgIHNpemVvZih2bWNiLSZndDtjb250cm9sLmluc25fYnl0ZXMpKTsKJiM0MzsJaWYgKHZtY2ItJmd0O2NvbnRyb2wuaW5zbl9sZW4pCiYjNDM7CQlHVUVTVF9BU1NFUlQoIW1lbWNtcCh2bWNiLSZndDtjb250cm9sLmluc25fYnl0ZXMsCiYjNDM7CQkJCSAgICAgKHZvaWQgKil2bWNiLSZndDtzYXZlLnJpcCwKJiM0MzsJCQkJICAgICB2bWNiLSZndDtjb250cm9sLmluc25fbGVuKSk7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIGwxX2d1ZXN0X2NvZGUoc3RydWN0IHN2bV90ZXN0X2RhdGEgKnN2bSkKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGxvbmcgbDJfZ3Vlc3Rfc3RhY2tbTDJfR1VFU1RfU1RBQ0tfU0laRV07CiYjNDM7CXN0cnVjdCB2bWNiICp2bWNiID0gc3ZtLSZndDt2bWNiOwomIzQzOwomIzQzOwlHVUVTVF9BU1NFUlQodGhpc19jcHVfaGFzKFg4Nl9GRUFUVVJFX0RFQ09ERUFTU0lTVFMpKTsKJiM0MzsKJiM0MzsJZ2VuZXJpY19zdm1fc2V0dXAoc3ZtLCBsMl9ndWVzdF9jb2RlLAomIzQzOwkJCSAgJmFtcDtsMl9ndWVzdF9zdGFja1tMMl9HVUVTVF9TVEFDS19TSVpFXSk7CiYjNDM7CiYjNDM7CS8qIEEgcmVhbCBuZXN0ZWQgI05QRiBtdXN0IHJlZmxlY3QgdmFsaWQgZGVjb2RlIGluZm9ybWF0aW9uIHRvIEwxLiAqLwomIzQzOwlydW5fZ3Vlc3Qodm1jYiwgc3ZtLSZndDt2bWNiX2dwYSk7CiYjNDM7CiYjNDM7CUdVRVNUX0FTU0VSVF9FUSh2bWNiLSZndDtjb250cm9sLmV4aXRfY29kZSwgU1ZNX0VYSVRfTlBGKTsKJiM0MzsJR1VFU1RfQVNTRVJUKHZtY2ItJmd0O2NvbnRyb2wuaW5zbl9sZW4pOwomIzQzOwlhc3NlcnRfZGVjb2RlX2Fzc2lzdHNfc2FuZSh2bWNiKTsKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogUmVkaXJlY3QgTDIgcGFzdCB0aGUgc3RpbGwtZmF1bHRpbmcgYWNjZXNzIHRvIGEgVk1NQ0FMTC4gIEtWTSByZXVzZXMKJiM0MzsJICogaXRzIGludGVybmFsIFZNQ0IwMiwgd2hpY2ggbm93IGhvbGRzIHRoZSAjTlBGJiMzOTtzIGRlY29kZSBieXRlcywgc28gdGhpcwomIzQzOwkgKiBleGVyY2lzZXMgdGhlIHBhdGggdGhhdCBtdXN0IGNsZWFyIERlY29kZUFzc2lzdCBzdGF0ZSBhbmQgZW5zdXJlcyB0aGUKJiM0MzsJICogcHJpb3IgZXhpdCYjMzk7cyBieXRlcyBhcmUgbm90IGxlYWtlZCBpbnRvIGEgc3Vic2VxdWVudCBleGl0LgomIzQzOwkgKi8KJiM0MzsJdm1jYi0mZ3Q7c2F2ZS5yaXAgPSAodTY0KWwyX3ZtbWNhbGxfY29kZTsKJiM0MzsJcnVuX2d1ZXN0KHZtY2IsIHN2bS0mZ3Q7dm1jYl9ncGEpOwomIzQzOwomIzQzOwlHVUVTVF9BU1NFUlRfRVEodm1jYi0mZ3Q7Y29udHJvbC5leGl0X2NvZGUsIFNWTV9FWElUX1ZNTUNBTEwpOwomIzQzOwlhc3NlcnRfZGVjb2RlX2Fzc2lzdHNfc2FuZSh2bWNiKTsKJiM0MzsKJiM0MzsJR1VFU1RfRE9ORSgpOwomIzQzO30KJiM0MzsKJiM0MztpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQomIzQzO3sKJiM0MzsJZ3ZhX3Qgc3ZtX2d2YSwgbnBmX2d2YTsKJiM0MzsJZ3BhX3QgbnBmX2dwYTsKJiM0MzsJc3RydWN0IGt2bV92Y3B1ICp2Y3B1OwomIzQzOwlzdHJ1Y3Qga3ZtX3ZtICp2bTsKJiM0MzsJdTY0ICpwdGU7CiYjNDM7CiYjNDM7CVRFU1RfUkVRVUlSRShrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9TVk0pKTsKJiM0MzsJVEVTVF9SRVFVSVJFKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX05QVCkpOwomIzQzOwlURVNUX1JFUVVJUkUoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfREVDT0RFQVNTSVNUUykpOwomIzQzOwomIzQzOwl2bSA9IHZtX2NyZWF0ZV93aXRoX29uZV92Y3B1KCZhbXA7dmNwdSwgbDFfZ3Vlc3RfY29kZSk7CiYjNDM7CXZtX2VuYWJsZV9ucHQodm0pOwomIzQzOwl2Y3B1X2FsbG9jX3N2bSh2bSwgJmFtcDtzdm1fZ3ZhKTsKJiM0MzsJbnBmX2d2YSA9IChndmFfdCkmYW1wO25wZl90YXJnZXQ7CiYjNDM7CW5wZl9ncGEgPSBhZGRyX2d2YTJncGEodm0sIG5wZl9ndmEpOwomIzQzOwomIzQzOwl0ZHBfaWRlbnRpdHlfbWFwX2RlZmF1bHRfbWVtc2xvdHModm0pOwomIzQzOwlwdGUgPSB0ZHBfZ2V0X3B0ZSh2bSwgbnBmX2dwYSk7CiYjNDM7CSpwdGUgJmFtcDs9IH5QVEVfUFJFU0VOVF9NQVNLKCZhbXA7dm0tJmd0O3N0YWdlMl9tbXUpOwomIzQzOwomIzQzOwl2Y3B1X2FyZ3Nfc2V0KHZjcHUsIDEsIHN2bV9ndmEpOwomIzQzOwl2Y3B1X3J1bih2Y3B1KTsKJiM0MzsJVEVTVF9BU1NFUlRfS1ZNX0VYSVRfUkVBU09OKHZjcHUsIEtWTV9FWElUX0lPKTsKJiM0MzsJVEVTVF9BU1NFUlRfRVEoZ2V0X3VjYWxsKHZjcHUsIE5VTEwpLCBVQ0FMTF9ET05FKTsKJiM0MzsKJiM0MzsJa3ZtX3ZtX2ZyZWUodm0pOwomIzQzOwlyZXR1cm4gMDsKJiM0Mzt9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0MzEKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAzNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS1ZNIFBhdGNoIGZvciBOZXN0ZWQgQU1EIFNWTSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQmIzM5O3MgdG91Y2hpbmcgYGFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNgIGFuZCBgYXJjaC94ODYva3ZtL3N2bS9zdm0uY2AuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyBmb2N1c2VkIG9uIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiB3aXRoIEFNRCYjMzk7cyBTZWN1cmUgVmlydHVhbCBNYWNoaW5lIChTVk0pIHRlY2hub2xvZ3kgd2l0aGluIEtWTS4gU3BlY2lmaWNhbGx5LCBJIHNlZSBpdCYjMzk7cyBpbnRyb2R1Y2luZyBgbmVzdGVkX3N2bV9jbGVhcl9kZWNvZGVfYXNzaXN0c2AgYW5kIGBuZXN0ZWRfc3ZtX2NvcHlfZGVjb2RlX2Fzc2lzdHNgLCBhbmQgbW9kaWZ5aW5nIGBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfY29udHJvbGAsIGBuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyYCwgYW5kIGBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZGAuIFBsdXMsIGl0JiMzOTtzIGFkZGluZyBgWDg2X0ZFQVRVUkVfREVDT0RFQVNTSVNUU2AgdG8gYHN2bV9zZXRfY3B1X2NhcHNgLiBUaGlzIGFsbCBwb2ludHMgdG93YXJkcyBkZWFsaW5nIHdpdGggRGVjb2RlQXNzaXN0IGRhdGEgaW4gYSBuZXN0ZWQgU1ZNIGVudmlyb25tZW50LgoKQWgsIHJpZ2h0LCB0aGlzIGlzIGFib3V0IGZpeGluZyBhIHBvdGVudGlhbCBsZWFrLiBJdCYjMzk7cyBtYWtpbmcgc3VyZSB0aGF0IERlY29kZUFzc2lzdCBpbmZvcm1hdGlvbiwgbGlrZSB0aGUgaW5zdHJ1Y3Rpb24gYnl0ZXMgYW5kIGxlbmd0aHMsIGlzbiYjMzk7dCBiZWluZyBjYXJyaWVkIG92ZXIgaW1wcm9wZXJseSBmcm9tIG9uZSBWTSBleGl0IHRvIHRoZSBuZXh0IGluIHRoZSBuZXN0ZWQgc2NlbmFyaW8uIFNvLCBpdCYjMzk7cyBjbGVhcmluZyB0aGUgYXNzaXN0IGRhdGEgYmVmb3JlIHJ1bm5pbmcgdGhlIExldmVsIDIgVk0gYW5kIGNvcHlpbmcgb25seSB3aGVuIGl0JiMzOTtzIHZhbGlkIGZvciBWTUNCMDIgZXhpdHMuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHJhY2UgY29uZGl0aW9uIG9yIGRhdGEgY29ycnVwdGlvbiBmaXgsIHRyeWluZyB0byBlbnN1cmUgcHJvcGVyIGlzb2xhdGlvbi4KCkZ1bmN0aW9uYWxseSwgdGhpcyBpbXBhY3RzIHRoZSBleGVjdXRpb24gZmxvdywgd2hpY2ggYWx3YXlzIGRlbWFuZHMgY2FyZWZ1bCBzY3J1dGlueS4gVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgY29kZSBwYXRoIGlzIGFjdHVhbGx5ICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCBzZXR1cC4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGxpa2UgR0NFIG9yIFFFTVUuIE5lc3RlZCB2aXJ0dWFsaXphdGlvbiBpcyBkZWZpbml0ZWx5IHN1cHBvcnRlZCBpbiBib3RoLCBzbyBpdCYjMzk7cyB0ZXN0YWJsZSwgYW5kIGlmIGl0JiMzOTtzIHRlc3RhYmxlLCBpdCYjMzk7cyByZWFjaGFibGUuIFdhaXQsIHdhc24mIzM5O3QgdGhlcmUgc29tZXRoaW5nIGFib3V0IHN5emthbGxlcj8gU3l6a2FsbGVyIHJ1bnMgaW4gUUVNVSwgYW5kIFFFTVUgc3VwcG9ydHMgbmVzdGVkIFNWTS4uLiBzbyAqeWVzKiwgdGhpcyBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgcG90ZW50aWFsbHkgZXhwbG9pdGFibGUuCgpOb3csIGxldCYjMzk7cyBuYWlsIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gcHJlcmVxdWlzaXRlcy4gV2UmIzM5O3JlIGdvaW5nIHRvIG5lZWQgYENPTkZJR19LVk1gIGFuZCBgQ09ORklHX0tWTV9BTURgLCBvYnZpb3VzbHkuIFRpbWUgdG8gcHVsbCB1cCB0aGUgc291cmNlIGFuZCBzZWFyY2ggZm9yIHRob3NlIGZ1bmN0aW9uIG5hbWVzLCBgbmVzdGVkX3N2bV92bWV4aXRfdXBkYXRlX3ZtY2IxMmAgYW5kIGBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZGAuIEkgd2FudCB0byBzZWUgdGhlIGNhbGwgZ3JhcGhzIGFuZCB1bmRlcnN0YW5kIHRoZSBleGFjdCBjb250ZXh0cyB0aGlzIGNvZGUgZXhlY3V0ZXMgaW4sIHRoZSBlbnRyeSBhbmQgZXhpdCBwb2ludHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmVzdGVkX3N2bV92bWV4aXRfdXBkYXRlX3ZtY2IxMiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTEyMTg9dm9pZCBzdm1fY29weV92bWxvYWRzYXZlX3N0YXRlKHN0cnVjdCB2bWNiICp0b192bWNiLCBzdHJ1Y3Qgdm1jYiAqZnJvbV92bWNiKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTIzMy1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTIzNDpzdGF0aWMgaW50IG5lc3RlZF9zdm1fdm1leGl0X3VwZGF0ZV92bWNiMTIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMjM1LXtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTEzMTQ9dm9pZCBuZXN0ZWRfc3ZtX3ZtZXhpdChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEzMTktXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEzMjA6XHRpZiAobmVzdGVkX3N2bV92bWV4aXRfdXBkYXRlX3ZtY2IxMih2Y3B1KSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTMyMS1cdFx0a3ZtX21ha2VfcmVxdWVzdChLVk1fUkVRX1RSSVBMRV9GQVVMVCwgdmNwdSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYxNgoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipLVk1fQU1EIENvbmZpZ3VyYXRpb24gUmV2aWV3KioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBzcGVjaWZpY2FsbHkgdGFyZ2V0IHRoZSBgS1ZNX0FNRGAgY29uZmlndXJhdGlvbiBvcHRpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaXRzIGN1cnJlbnQgc3RhdGUgYW5kIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0uIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgd29yayBiZWdpbnMsIHRyYWNpbmcgdGhyb3VnaCB0aGUgbmVzdGVkIGNvbmZpZ3VyYXRpb25zLCBsb29raW5nIGZvciBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2VybiBvciBvcHBvcnR1bml0eS4gV2hhdCBhcmUgdGhlIGFzc29jaWF0ZWQgZmVhdHVyZXM/IEFyZSB0aGVyZSBhbnkgbmV3bHkgaW50cm9kdWNlZCBkZXBlbmRlbmNpZXMgb3IgY29uZmxpY3RzIEkgc2hvdWxkIGJlIGF3YXJlIG9mLCBlc3BlY2lhbGx5IGdpdmVuIHRoZSByYXBpZCBwYWNlIG9mIGNoYW5nZSBpbiBib3RoIEFNRCBoYXJkd2FyZSBhbmQgS1ZNIGl0c2VsZj8gSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgd2l0aCBhIGdyZXAgdG8gbWFrZSBzdXJlIEkgZ2V0IGEgY29tcHJlaGVuc2l2ZSBvdmVydmlldy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNX0FNRCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMzQ9Y29uZmlnIEtWTV9JTlRFTF9URFhcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDY6Y29uZmlnIEtWTV9BTURcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cdGJvb2wgXCYjMzQ7QU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5ODgKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipLVk1fQU1EIGFuZCBOZXN0ZWQgU1ZNIENvbmZpZ3VyYXRpb25zKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBLVk0gc2V0dXAgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIGBLVk1fQU1EYC4gVGhhdCBzZWVtcyBsaWtlIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24sIHRoZSBmb3VuZGF0aW9uLiBCdXQgSSBjYW4mIzM5O3QgaGVscCBidXQgd29uZGVyLi4uIGlzIHRoZXJlIGEgKnNwZWNpZmljKiBjb25maWd1cmF0aW9uLCBhIHBhcnRpY3VsYXIgZmxhZywgYSBzcGVjaWFsIHNldHRpbmcsIGZvciBuZXN0ZWQgU1ZNPyBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIHZpcnR1YWxpemF0aW9uIHdpdGhpbiB2aXJ0dWFsaXphdGlvbiBoZXJlLCBhbmQgSSBrbm93IHRoYXQgYWRkcyBhbm90aGVyIGxheWVyIG9mIGNvbXBsZXhpdHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBjcml0aWNhbCBmb3Igb3B0aW1hbCBwZXJmb3JtYW5jZSBhbmQgc3RhYmlsaXR5IHdpdGhpbiB0aGF0IG5lc3RlZCBlbnZpcm9ubWVudC4gVGltZSB0byBkaWcgZGVlcGVyIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBkb2N1bWVudGVkIG9yIHN1Z2dlc3RlZCBjdXN0b21pemF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXN0ZWRfc3ZtJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1MzYgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmM9OT12b2lkIHN2bV9odl9pbmplY3Rfc3ludGhldGljX3ZtZXhpdF9wb3N0X3RsYl9mbHVzaChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuYy0yMS1cdHN2bS1cdTAwM2V2bWNiLVx1MDAzZWNvbnRyb2wuZXhpdF9pbmZvXzIgPSAwO1xuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuYzoyMjpcdG5lc3RlZF9zdm1fdm1leGl0KHN2bSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5jLTIzLX1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oLTE0LSNpZmRlZiBDT05GSUdfS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaDoxNTpzdGF0aWMgaW5saW5lIHZvaWQgbmVzdGVkX3N2bV9odl91cGRhdGVfdm1fdnBfaWRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmgtMTYte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmgtMjgtXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oOjI5OnN0YXRpYyBpbmxpbmUgYm9vbCBuZXN0ZWRfc3ZtX2wyX3RsYl9mbHVzaF9lbmFibGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmgtMzAte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmgtNDMtXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oOjQ0OnN0YXRpYyBpbmxpbmUgYm9vbCBuZXN0ZWRfc3ZtX2lzX2wyX3RsYl9mbHVzaF9oY2FsbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oLTQ1LXtcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmgtNDYtXHRyZXR1cm4gZ3Vlc3RfaHZfY3B1aWRfaGFzX2wyX3RsYl9mbHVzaCh2Y3B1KSBcdTAwMjZcdTAwMjZcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2Lmg6NDc6XHQgICAgICAgbmVzdGVkX3N2bV9sMl90bGJfZmx1c2hfZW5hYmxlZCh2Y3B1KSBcdTAwMjZcdTAwMjZcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmgtNDgtXHQgICAgICAga3ZtX2h2X2lzX3RsYl9mbHVzaF9oY2FsbCh2Y3B1KTtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oPTUxPXZvaWQgc3ZtX2h2X2luamVjdF9zeW50aGV0aWNfdm1leGl0X3Bvc3RfdGxiX2ZsdXNoKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oLTUyLSNlbHNlIC8qIENPTkZJR19LVk1fSFlQRVJWICovXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oOjUzOnN0YXRpYyBpbmxpbmUgdm9pZCBuZXN0ZWRfc3ZtX2h2X3VwZGF0ZV92bV92cF9pZHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7fVxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaDo1NDpzdGF0aWMgaW5saW5lIGJvb2wgbmVzdGVkX3N2bV9pc19sMl90bGJfZmx1c2hfaGNhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaC01NS17XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0zNS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MzY6c3RhdGljIHZvaWQgbmVzdGVkX3N2bV9jbGVhcl9kZWNvZGVfYXNzaXN0cyhzdHJ1Y3Qgdm1jYiAqdm1jYilcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzcte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNDItXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjQzOnN0YXRpYyB2b2lkIG5lc3RlZF9zdm1fY29weV9kZWNvZGVfYXNzaXN0cyhzdHJ1Y3Qgdm1jYiAqdG8sIHN0cnVjdCB2bWNiICpmcm9tKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy00NC17XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy00Ni1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NDc6XHRuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHRvKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNDgtXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy02Mi1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NjM6c3RhdGljIHZvaWQgbmVzdGVkX3N2bV9pbmplY3RfbnBmX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy02NC1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgeDg2X2V4Y2VwdGlvbiAqZmF1bHQpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy04MS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6ODI6XHRuZXN0ZWRfc3ZtX3ZtZXhpdChzdm0pO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy04My19XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTg0LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo4NTpzdGF0aWMgdTY0IG5lc3RlZF9zdm1fZ2V0X3RkcF9wZHB0cihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBpbmRleClcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtODYte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTAyLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMDM6c3RhdGljIHVuc2lnbmVkIGxvbmcgbmVzdGVkX3N2bV9nZXRfdGRwX2NyMyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwNC17XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDktXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjExMDpzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX2luaXRfbW11X2NvbnRleHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTEte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTI1LVx0XHRcdFx0c3ZtLVx1MDAzZW5lc3RlZC5jdGwubmVzdGVkX2NyMyk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEyNjpcdHZjcHUtXHUwMDNlYXJjaC5tbXUtXHUwMDNlZ2V0X2d1ZXN0X3BnZCAgICAgPSBuZXN0ZWRfc3ZtX2dldF90ZHBfY3IzO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMjc6XHR2Y3B1LVx1MDAzZWFyY2gubW11LVx1MDAzZWdldF9wZHB0ciAgICAgICAgID0gbmVzdGVkX3N2bV9nZXRfdGRwX3BkcHRyO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMjg6XHR2Y3B1LVx1MDAzZWFyY2gubW11LVx1MDAzZWluamVjdF9wYWdlX2ZhdWx0ID0gbmVzdGVkX3N2bV9pbmplY3RfbnBmX2V4aXQ7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEyOS1cdHZjcHUtXHUwMDNlYXJjaC53YWxrX21tdSAgICAgICAgICAgICAgPSBcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gubmVzdGVkX21tdTtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEzMS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTMyOnN0YXRpYyB2b2lkIG5lc3RlZF9zdm1fdW5pbml0X21tdV9jb250ZXh0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTMzLXtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTE1Mj12b2lkIG5lc3RlZF92bWNiMDJfcmVjYWxjX2ludGVyY2VwdHMoc3RydWN0IHZjcHVfc3ZtICpzdm0pXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMjItICovXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjIyMzpzdGF0aWMgaW50IG5lc3RlZF9zdm1fbXNycG1fbWVyZ2Vfb2Zmc2V0c1sxMF0gX19yb19hZnRlcl9pbml0O1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyMjQ6c3RhdGljIGludCBuZXN0ZWRfc3ZtX25yX21zcnBtX21lcmdlX29mZnNldHMgX19yb19hZnRlcl9pbml0O1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMjUtdHlwZWRlZiB1bnNpZ25lZCBsb25nIG5zdm1fbXNycG1fbWVyZ2VfdDtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMjI2LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyMjc6aW50IF9faW5pdCBuZXN0ZWRfc3ZtX2luaXRfbXNycG1fbWVyZ2Vfb2Zmc2V0cyh2b2lkKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMjgte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMjgyLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyODM6XHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIG5lc3RlZF9zdm1fbnJfbXNycG1fbWVyZ2Vfb2Zmc2V0czsgaiYjNDM7JiM0MzspIHtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6Mjg0Olx0XHRcdGlmIChuZXN0ZWRfc3ZtX21zcnBtX21lcmdlX29mZnNldHNbal0gPT0gb2Zmc2V0KVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yODUtXHRcdFx0XHRicmVhaztcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTI4Ny1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6Mjg4Olx0XHRpZiAoaiBcdTAwM2MgbmVzdGVkX3N2bV9ucl9tc3JwbV9tZXJnZV9vZmZzZXRzKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yODktXHRcdFx0Y29udGludWU7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTI5MC1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MjkxOlx0XHRpZiAoV0FSTl9PTihqIFx1MDAzZT0gQVJSQVlfU0laRShuZXN0ZWRfc3ZtX21zcnBtX21lcmdlX29mZnNldHMpKSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMjkyLVx0XHRcdHJldHVybiAtRUlPO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yOTMtXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjI5NDpcdFx0bmVzdGVkX3N2bV9tc3JwbV9tZXJnZV9vZmZzZXRzW2pdID0gb2Zmc2V0O1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyOTU6XHRcdG5lc3RlZF9zdm1fbnJfbXNycG1fbWVyZ2Vfb2Zmc2V0cyYjNDM7JiM0Mzs7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTI5Ni1cdH1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTMwNS0gKi9cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MzA2OnN0YXRpYyBib29sIG5lc3RlZF9zdm1fbWVyZ2VfbXNycG0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0zMDcte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzM0LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzozMzU6XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBuZXN0ZWRfc3ZtX25yX21zcnBtX21lcmdlX29mZnNldHM7IGkmIzQzOyYjNDM7KSB7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjMzNjpcdFx0Y29uc3QgaW50IHAgPSBuZXN0ZWRfc3ZtX21zcnBtX21lcmdlX29mZnNldHNbaV07XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTMzNy1cdFx0bnN2bV9tc3JwbV9tZXJnZV90IGwxX3ZhbDtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTM2MC0gKi9cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MzYxOnN0YXRpYyBib29sIG5lc3RlZF9zdm1fY2hlY2tfYml0bWFwX3BhKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHBhLCB1MzIgc2l6ZSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzYyLXtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTM2OC1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MzY5OnN0YXRpYyBib29sIG5lc3RlZF9zdm1fZXZlbnRfaW5qX3ZhbGlkX2V4ZXB0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTggdmVjdG9yKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0zNzAte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzk3LSAqL1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzozOTg6c3RhdGljIGJvb2wgbmVzdGVkX3N2bV9jaGVja19ldmVudF9pbmooc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgZXZlbnRfaW5qKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0zOTkte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNDEwLVx0aWYgKHR5cGUgPT0gU1ZNX0VWVElOSl9UWVBFX0VYRVBUIFx1MDAyNlx1MDAyNlxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo0MTE6XHQgICAgIW5lc3RlZF9zdm1fZXZlbnRfaW5qX3ZhbGlkX2V4ZXB0KHZjcHUsIHZlY3RvcikpXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQxMi1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9NDE3PXN0YXRpYyBib29sIG5lc3RlZF92bWNiX2NoZWNrX2NvbnRyb2xzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQyOS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NDMwOlx0aWYgKENDKCFuZXN0ZWRfc3ZtX2NoZWNrX2JpdG1hcF9wYSh2Y3B1LCBjb250cm9sLVx1MDAzZW1zcnBtX2Jhc2VfcGEsXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQzMS1cdFx0XHRcdFx0ICAgTVNSUE1fU0laRSkpKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy00MzItXHRcdHJldHVybiBmYWxzZTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NDMzOlx0aWYgKENDKCFuZXN0ZWRfc3ZtX2NoZWNrX2JpdG1hcF9wYSh2Y3B1LCBjb250cm9sLVx1MDAzZWlvcG1fYmFzZV9wYSxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNDM0LVx0XHRcdFx0XHQgICBJT1BNX1NJWkUpKSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQ0MS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NDQyOlx0aWYgKENDKCFuZXN0ZWRfc3ZtX2NoZWNrX2V2ZW50X2luaih2Y3B1LCBjb250cm9sLVx1MDAzZWV2ZW50X2luaikpKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy00NDMtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTQ0OT1zdGF0aWMgYm9vbCBuZXN0ZWRfdm1jYl9jaGVja19zYXZlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQ4Ny1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NDg4OmludCBuZXN0ZWRfc3ZtX2NoZWNrX2NhY2hlZF92bWNiMTIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy00ODkte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNTAyLSAqL1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo1MDM6I2RlZmluZSBfX25lc3RlZF9zdm1fc2FuaXRpemVfaW50ZXJjZXB0KF9fdmNwdSwgX19jb250cm9sLCBmbmFtZSwgaW5hbWUpXHRcXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy01MDQtZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTUwOC1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NTA5OiNkZWZpbmUgbmVzdGVkX3N2bV9zYW5pdGl6ZV9pbnRlcmNlcHQoX192Y3B1LCBfX2NvbnRyb2wsIG5hbWUpXHRcdFx0XFxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NTEwOlx0X19uZXN0ZWRfc3ZtX3Nhbml0aXplX2ludGVyY2VwdChfX3ZjcHUsIF9fY29udHJvbCwgbmFtZSwgbmFtZSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNTExLVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9NTEzPXZvaWQgX19uZXN0ZWRfY29weV92bWNiX2NvbnRyb2xfdG9fY2FjaGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNTIxLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo1MjI6XHRfX25lc3RlZF9zdm1fc2FuaXRpemVfaW50ZXJjZXB0KHZjcHUsIHRvLCBYU0FWRSwgWFNFVEJWKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NTIzOlx0bmVzdGVkX3N2bV9zYW5pdGl6ZV9pbnRlcmNlcHQodmNwdSwgdG8sIElOVlBDSUQpO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo1MjQ6XHRuZXN0ZWRfc3ZtX3Nhbml0aXplX2ludGVyY2VwdCh2Y3B1LCB0bywgUkRUU0NQKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NTI1Olx0bmVzdGVkX3N2bV9zYW5pdGl6ZV9pbnRlcmNlcHQodmNwdSwgdG8sIFNLSU5JVCk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjUyNjpcdG5lc3RlZF9zdm1fc2FuaXRpemVfaW50ZXJjZXB0KHZjcHUsIHRvLCBSRFBSVSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTUyNy1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTY1MT1zdGF0aWMgdm9pZCBuZXN0ZWRfc2F2ZV9wZW5kaW5nX2V2ZW50X3RvX3ZtY2IxMihzdHJ1Y3QgdmNwdV9zdm0gKnN2bSxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTY4My1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6Njg0OnN0YXRpYyB2b2lkIG5lc3RlZF9zdm1fdHJhbnNpdGlvbl90bGJfZmx1c2goc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy02ODUte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNzA5LSAqL1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo3MTA6c3RhdGljIGludCBuZXN0ZWRfc3ZtX2xvYWRfY3IzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyBjcjMsXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTcxMS1cdFx0XHQgICAgICAgYm9vbCBuZXN0ZWRfbnB0LCBib29sIHJlbG9hZF9wZHB0cnMpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz04NTA9c3RhdGljIHZvaWQgbmVzdGVkX3ZtY2IwMl9wcmVwYXJlX2NvbnRyb2woc3RydWN0IHZjcHVfc3ZtICpzdm0pXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy04NTktXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjg2MDpcdG5lc3RlZF9zdm1fdHJhbnNpdGlvbl90bGJfZmx1c2godmNwdSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTg2MS1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTg2OS1cdCAqL1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo4NzA6XHRuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHZtY2IwMik7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTg3MS1cdHN2bS1cdTAwM2VuZXN0ZWQuZGVjb2RlX2Fzc2lzdHNfdmFsaWQgPSBmYWxzZTtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTkzNy1cdGlmIChuZXN0ZWRfbnB0X2VuYWJsZWQoc3ZtKSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6OTM4Olx0XHRuZXN0ZWRfc3ZtX2luaXRfbW11X2NvbnRleHQodmNwdSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTkzOS1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTk0Ny1cdCAgICBzdm0tXHUwMDNldHNjX3JhdGlvX21zciAhPSBrdm1fY2Fwcy5kZWZhdWx0X3RzY19zY2FsaW5nX3JhdGlvKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo5NDg6XHRcdG5lc3RlZF9zdm1fdXBkYXRlX3RzY19yYXRpb19tc3IodmNwdSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTk0OS1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwMTYtXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEwMTc6c3RhdGljIHZvaWQgbmVzdGVkX3N2bV9jb3B5X2NvbW1vbl9zdGF0ZShzdHJ1Y3Qgdm1jYiAqZnJvbV92bWNiLCBzdHJ1Y3Qgdm1jYiAqdG9fdm1jYilcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTAxOC17XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xMDI5PWludCBlbnRlcl9zdm1fZ3Vlc3RfbW9kZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB2bWNiMTJfZ3BhLCBib29sIGZyb21fdm1ydW4pXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDU3LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMDU4Olx0bmVzdGVkX3N2bV9jb3B5X2NvbW1vbl9zdGF0ZShzdm0tXHUwMDNldm1jYjAxLnB0ciwgc3ZtLVx1MDAzZW5lc3RlZC52bWNiMDIucHRyKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTA1OS1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwNjMtXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEwNjQ6XHRyZXQgPSBuZXN0ZWRfc3ZtX2xvYWRfY3IzKFx1MDAyNnN2bS1cdTAwM2V2Y3B1LCBzdm0tXHUwMDNlbmVzdGVkLnNhdmUuY3IzLFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDY1LVx0XHRcdFx0ICBuZXN0ZWRfbnB0X2VuYWJsZWQoc3ZtKSwgZnJvbV92bXJ1bik7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDc2LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMDc3Olx0bmVzdGVkX3N2bV9odl91cGRhdGVfdm1fdnBfaWRzKHZjcHUpO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDc4LVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTA4MS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTA4MjpzdGF0aWMgaW50IG5lc3RlZF9zdm1fY29weV92bWNiMTJfdG9fY2FjaGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdm1jYjEyX2dwYSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTA4My17XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDk1LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMDk2Olx0aWYgKG5lc3RlZF9zdm1fY2hlY2tfY2FjaGVkX3ZtY2IxMih2Y3B1KSBcdTAwM2MgMCkge1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDk3LVx0XHR2bWNiMTItXHUwMDNlY29udHJvbC5leGl0X2NvZGUgPSBTVk1fRVhJVF9FUlI7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTA5LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMTEwOmludCBuZXN0ZWRfc3ZtX3ZtcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTExMS17XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTQyLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMTQzOlx0cmV0ID0gbmVzdGVkX3N2bV9jb3B5X3ZtY2IxMl90b19jYWNoZSh2Y3B1LCB2bWNiMTJfZ3BhKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTE0NC1cdGlmIChyZXQpIHtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTExNzAtXHRpZiAoZW50ZXJfc3ZtX2d1ZXN0X21vZGUodmNwdSwgdm1jYjEyX2dwYSwgdHJ1ZSkgfHxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTE3MTpcdCAgICAhbmVzdGVkX3N2bV9tZXJnZV9tc3JwbSh2Y3B1KSkge1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTcyLVx0XHR2Y3B1LVx1MDAzZWFyY2gubmVzdGVkX3J1bl9wZW5kaW5nID0gMDtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTExNzktXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjExODA6XHRcdG5lc3RlZF9zdm1fdm1leGl0KHN2bSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTExODEtXHR9XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xMjE4PXZvaWQgc3ZtX2NvcHlfdm1sb2Fkc2F2ZV9zdGF0ZShzdHJ1Y3Qgdm1jYiAqdG9fdm1jYiwgc3RydWN0IHZtY2IgKmZyb21fdm1jYilcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEyMzMtXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEyMzQ6c3RhdGljIGludCBuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTIzNS17XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMjg5LVx0ICAgIGd1ZXN0X2NwdV9jYXBfaGFzKHZjcHUsIFg4Nl9GRUFUVVJFX0RFQ09ERUFTU0lTVFMpKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMjkwOlx0XHRuZXN0ZWRfc3ZtX2NvcHlfZGVjb2RlX2Fzc2lzdHModm1jYjEyLCB2bWNiMDIpO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMjkxLVx0ZWxzZVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMjkyOlx0XHRuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHZtY2IxMik7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEyOTMtXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMzEzLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMzE0OnZvaWQgbmVzdGVkX3N2bV92bWV4aXQoc3RydWN0IHZjcHVfc3ZtICpzdm0pXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEzMTUte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTMxOS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTMyMDpcdGlmIChuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyKHZjcHUpKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMzIxLVx0XHRrdm1fbWFrZV9yZXF1ZXN0KEtWTV9SRVFfVFJJUExFX0ZBVUxULCB2Y3B1KTtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEzNDAtXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEzNDE6XHRuZXN0ZWRfc3ZtX2NvcHlfY29tbW9uX3N0YXRlKHN2bS1cdTAwM2VuZXN0ZWQudm1jYjAyLnB0ciwgc3ZtLVx1MDAzZXZtY2IwMS5wdHIpO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMzQyLVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTQyNy1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTQyODpcdG5lc3RlZF9zdm1fdHJhbnNpdGlvbl90bGJfZmx1c2godmNwdSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE0MjktXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE0MzA6XHRuZXN0ZWRfc3ZtX3VuaW5pdF9tbXVfY29udGV4dCh2Y3B1KTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTQzMS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTQzMjpcdGlmIChuZXN0ZWRfc3ZtX2xvYWRfY3IzKHZjcHUsIHZtY2IwMS1cdTAwM2VzYXZlLmNyMywgZmFsc2UsIHRydWUpKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNDMzLVx0XHRrdm1fbWFrZV9yZXF1ZXN0KEtWTV9SRVFfVFJJUExFX0ZBVUxULCB2Y3B1KTtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE0NjMtXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE0NjQ6c3RhdGljIHZvaWQgbmVzdGVkX3N2bV90cmlwbGVfZmF1bHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNDY1LXtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE0NzEtXHRrdm1fY2xlYXJfcmVxdWVzdChLVk1fUkVRX1RSSVBMRV9GQVVMVCwgdmNwdSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE0NzI6XHRuZXN0ZWRfc3ZtX3NpbXBsZV92bWV4aXQodG9fc3ZtKHZjcHUpLCBTVk1fRVhJVF9TSFVURE9XTik7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE0NzMtfVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MTUyNj12b2lkIHN2bV9sZWF2ZV9uZXN0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTUzNy1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTUzODpcdFx0bmVzdGVkX3N2bV91bmluaXRfbW11X2NvbnRleHQodmNwdSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE1MzktXHRcdHZtY2JfbWFya19hbGxfZGlydHkoc3ZtLVx1MDAzZXZtY2IpO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTU0OS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTU1MDpzdGF0aWMgaW50IG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkX21zcihzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTU1MS17XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNTc0LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNTc1OnN0YXRpYyBpbnQgbmVzdGVkX3N2bV9pbnRlcmNlcHRfaW9pbyhzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTU3Ni17XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNTk5LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNjAwOnN0YXRpYyBpbnQgbmVzdGVkX3N2bV9pbnRlcmNlcHQoc3RydWN0IHZjcHVfc3ZtICpzdm0pXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2MDEte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTYwOS1cdGNhc2UgU1ZNX0VYSVRfTVNSOlxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNjEwOlx0XHR2bWV4aXQgPSBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZF9tc3Ioc3ZtKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTYxMS1cdFx0YnJlYWs7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2MTItXHRjYXNlIFNWTV9FWElUX0lPSU86XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE2MTM6XHRcdHZtZXhpdCA9IG5lc3RlZF9zdm1faW50ZXJjZXB0X2lvaW8oc3ZtKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTYxNC1cdFx0YnJlYWs7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjE3LVx0XHQgKiBIb3N0LWludGVyY2VwdGVkIGV4Y2VwdGlvbnMgaGF2ZSBiZWVuIGNoZWNrZWQgYWxyZWFkeSBpblxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNjE4Olx0XHQgKiBuZXN0ZWRfc3ZtX2V4aXRfc3BlY2lhbC4gIFRoZXJlIGlzIG5vdGhpbmcgdG8gZG8gaGVyZSxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTYxOS1cdFx0ICogdGhlIHZtZXhpdCBpcyBpbmplY3RlZCBieSBzdm1fY2hlY2tfbmVzdGVkX2V2ZW50cy5cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2MzEtXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE2MzI6aW50IG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjMzLXtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2MzUtXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE2MzY6XHR2bWV4aXQgPSBuZXN0ZWRfc3ZtX2ludGVyY2VwdChzdm0pO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjM3LVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTY0MC1cdFx0c3ZtLVx1MDAzZW5lc3RlZC5kZWNvZGVfYXNzaXN0c192YWxpZCA9IHRydWU7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE2NDE6XHRcdG5lc3RlZF9zdm1fdm1leGl0KHN2bSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2NDItXHR9XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjQ2LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNjQ3OmludCBuZXN0ZWRfc3ZtX2NoZWNrX3Blcm1pc3Npb25zKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTY0OC17XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjYxLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNjYyOnN0YXRpYyBib29sIG5lc3RlZF9zdm1faXNfZXhjZXB0aW9uX3ZtZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU4IHZlY3RvcixcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTY2My1cdFx0XHRcdFx0ICAgdTMyIGVycm9yX2NvZGUpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjY5LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNjcwOnN0YXRpYyB2b2lkIG5lc3RlZF9zdm1faW5qZWN0X2V4Y2VwdGlvbl92bWV4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjcxLXtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE3MDEtXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE3MDI6XHRuZXN0ZWRfc3ZtX3ZtZXhpdChzdm0pO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNzAzLX1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTE3MTA9c3RhdGljIGludCBzdm1fY2hlY2tfbmVzdGVkX2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNzM0LVx0XHRcdHJldHVybiAwO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNzM1Olx0XHRuZXN0ZWRfc3ZtX3NpbXBsZV92bWV4aXQoc3ZtLCBTVk1fRVhJVF9JTklUKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTczNi1cdFx0cmV0dXJuIDA7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNzQxLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUJVU1k7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE3NDI6XHRcdG5lc3RlZF9zdm1faW5qZWN0X2V4Y2VwdGlvbl92bWV4aXQodmNwdSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE3NDMtXHRcdHJldHVybiAwO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc1Ny1cdFx0XHRyZXR1cm4gMDtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTc1ODpcdFx0bmVzdGVkX3N2bV9zaW1wbGVfdm1leGl0KHN2bSwgU1ZNX0VYSVRfU01JKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc1OS1cdFx0cmV0dXJuIDA7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNzY3LVx0XHRcdHJldHVybiAwO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNzY4Olx0XHRuZXN0ZWRfc3ZtX3NpbXBsZV92bWV4aXQoc3ZtLCBTVk1fRVhJVF9OTUkpO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNzY5LVx0XHRyZXR1cm4gMDtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE3NzctXHRcdHRyYWNlX2t2bV9uZXN0ZWRfaW50cl92bWV4aXQoc3ZtLVx1MDAzZXZtY2ItXHUwMDNlc2F2ZS5yaXApO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNzc4Olx0XHRuZXN0ZWRfc3ZtX3NpbXBsZV92bWV4aXQoc3ZtLCBTVk1fRVhJVF9JTlRSKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc3OS1cdFx0cmV0dXJuIDA7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNzg0LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNzg1OmludCBuZXN0ZWRfc3ZtX2V4aXRfc3BlY2lhbChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc4Ni17XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xODA4LVx0XHQvKiBIeXBlci1WIEwyIFRMQiBmbHVzaCBoeXBlcmNhbGwgaXMgaGFuZGxlZCBieSBMMCAqL1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxODA5Olx0XHRpZiAobmVzdGVkX3N2bV9pc19sMl90bGJfZmx1c2hfaGNhbGwodmNwdSkpXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE4MTAtXHRcdFx0cmV0dXJuIE5FU1RFRF9FWElUX0hPU1Q7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xODE4LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxODE5OnZvaWQgbmVzdGVkX3N2bV91cGRhdGVfdHNjX3JhdGlvX21zcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE4MjAte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MTkzMj1zdGF0aWMgaW50IHN2bV9zZXRfbmVzdGVkX3N0YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTIwMDYtXHQgKiBWYWxpZGF0ZSBob3N0IHN0YXRlIHNhdmVkIGZyb20gYmVmb3JlIFZNUlVOIChzZWVcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MjAwNzpcdCAqIG5lc3RlZF9zdm1fY2hlY2tfcGVybWlzc2lvbnMpLlxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMDA4LVx0ICovXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMDU1LVx0ICovXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjIwNTY6XHRyZXQgPSBuZXN0ZWRfc3ZtX2xvYWRfY3IzKFx1MDAyNnN2bS1cdTAwM2V2Y3B1LCB2Y3B1LVx1MDAzZWFyY2guY3IzLFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMDU3LVx0XHRcdFx0ICBuZXN0ZWRfbnB0X2VuYWJsZWQoc3ZtKSwgZmFsc2UpO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MjA3NT1zdGF0aWMgYm9vbCBzdm1fZ2V0X25lc3RlZF9zdGF0ZV9wYWdlcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMDg5LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyMDkwOlx0aWYgKCFuZXN0ZWRfc3ZtX21lcmdlX21zcnBtKHZjcHUpKSB7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTIwOTEtXHRcdHZjcHUtXHUwMDNlcnVuLVx1MDAzZWV4aXRfcmVhc29uID0gS1ZNX0VYSVRfSU5URVJOQUxfRVJST1I7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0yMTA0PXN0cnVjdCBrdm1feDg2X25lc3RlZF9vcHMgc3ZtX25lc3RlZF9vcHMgPSB7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTIxMDUtXHQubGVhdmVfbmVzdGVkID0gc3ZtX2xlYXZlX25lc3RlZCxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MjEwNjpcdC5pc19leGNlcHRpb25fdm1leGl0ID0gbmVzdGVkX3N2bV9pc19leGNlcHRpb25fdm1leGl0LFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMTA3LVx0LmNoZWNrX2V2ZW50cyA9IHN2bV9jaGVja19uZXN0ZWRfZXZlbnRzLFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyMTA4Olx0LnRyaXBsZV9mYXVsdCA9IG5lc3RlZF9zdm1fdHJpcGxlX2ZhdWx0LFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMTA5LVx0LmdldF9uZXN0ZWRfc3RhdGVfcGFnZXMgPSBzdm1fZ2V0X25lc3RlZF9zdGF0ZV9wYWdlcyxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTIxOTk9c3RhdGljIGludCB2bWxvYWRfdm1zYXZlX2ludGVyY2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgdm1sb2FkKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjIwNi1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MjIwNzpcdGlmIChuZXN0ZWRfc3ZtX2NoZWNrX3Blcm1pc3Npb25zKHZjcHUpKVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMjA4LVx0XHRyZXR1cm4gMTtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTIyNDY9c3RhdGljIGludCB2bXJ1bl9pbnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMjQ3LXtcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MjI0ODpcdGlmIChuZXN0ZWRfc3ZtX2NoZWNrX3Blcm1pc3Npb25zKHZjcHUpKVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMjQ5LVx0XHRyZXR1cm4gMTtcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjI1MC1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MjI1MTpcdHJldHVybiBuZXN0ZWRfc3ZtX3ZtcnVuKHZjcHUpO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMjUyLX1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTIyODY9c3RhdGljIGludCBncF9pbnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjMwNS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MjMwNjpcdFx0aWYgKG5lc3RlZF9zdm1fY2hlY2tfcGVybWlzc2lvbnModmNwdSkpXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTIzMDctXHRcdFx0cmV0dXJuIDE7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMzE3LVx0XHQgKi9cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MjMxODpcdFx0bmVzdGVkX3N2bV9zaW1wbGVfdm1leGl0KHN2bSwgc3ZtX2V4aXRfY29kZSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTIzMTktXHRcdHJldHVybiAxO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MjM2Nj1zdGF0aWMgaW50IHN0Z2lfaW50ZXJjZXB0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTIzNjktXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjIzNzA6XHRpZiAobmVzdGVkX3N2bV9jaGVja19wZXJtaXNzaW9ucyh2Y3B1KSlcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjM3MS1cdFx0cmV0dXJuIDE7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0yMzc4PXN0YXRpYyBpbnQgY2xnaV9pbnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjM4MS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MjM4MjpcdGlmIChuZXN0ZWRfc3ZtX2NoZWNrX3Blcm1pc3Npb25zKHZjcHUpKVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMzgzLVx0XHRyZXR1cm4gMTtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTIzOTA9c3RhdGljIGludCBpbnZscGdhX2ludGVyY2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMzk0LVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzoyMzk1Olx0aWYgKG5lc3RlZF9zdm1fY2hlY2tfcGVybWlzc2lvbnModmNwdSkpXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTIzOTYtXHRcdHJldHVybiAxO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MjUzMT1zdGF0aWMgYm9vbCBjaGVja19zZWxlY3RpdmVfY3IwX2ludGVyY2VwdGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI1NDYtXHRcdHN2bS1cdTAwM2V2bWNiLVx1MDAzZWNvbnRyb2wuZXhpdF9jb2RlID0gU1ZNX0VYSVRfQ1IwX1NFTF9XUklURTtcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MjU0NzpcdFx0cmV0ID0gKG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkKHN2bSkgPT0gTkVTVEVEX0VYSVRfRE9ORSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI1NDgtXHR9XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0yOTM4PXN0YXRpYyBpbnQgc3ZtX3NldF9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcilcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI5NzUtXHRcdCAgICBpc19ndWVzdF9tb2RlKHZjcHUpKVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzoyOTc2Olx0XHRcdG5lc3RlZF9zdm1fdXBkYXRlX3RzY19yYXRpb19tc3IodmNwdSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI5NzctXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zMDEwLVx0XHQgKiBUaGUgaGFuZGxpbmcgb2YgdGhlIE1TUiBiaXRtYXAgZm9yIEwyIGd1ZXN0cyBpcyBkb25lIGluXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjMwMTE6XHRcdCAqIG5lc3RlZF9zdm1fbWVyZ2VfbXNycG0oKS5cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMzAxMi1cdFx0ICogV2UgdXBkYXRlIHRoZSBMMSBNU1IgYml0IGFzIHdlbGwgc2luY2UgaXQgd2lsbCBlbmQgdXBcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTMyNzA9c3RhdGljIGludCB2bW1jYWxsX2ludGVyY2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zMjc3LVx0ICovXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjMyNzg6XHRpZiAoaXNfZ3Vlc3RfbW9kZSh2Y3B1KSBcdTAwMjZcdTAwMjYgIW5lc3RlZF9zdm1faXNfbDJfdGxiX2ZsdXNoX2hjYWxsKHZjcHUpKSB7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTMyNzktXHRcdGt2bV9xdWV1ZV9leGNlcHRpb24odmNwdSwgVURfVkVDVE9SKTtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTM2NTM9c3RhdGljIGludCBzdm1faGFuZGxlX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBmYXN0cGF0aF90IGV4aXRfZmFzdHBhdGgpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zNjcwLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzozNjcxOlx0XHR2bWV4aXQgPSBuZXN0ZWRfc3ZtX2V4aXRfc3BlY2lhbChzdm0pO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zNjcyLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zNjczLVx0XHRpZiAodm1leGl0ID09IE5FU1RFRF9FWElUX0NPTlRJTlVFKVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzozNjc0Olx0XHRcdHZtZXhpdCA9IG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkKHN2bSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTM2NzUtXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0zOTAzPXN0YXRpYyB2b2lkIHN2bV91cGRhdGVfY3I4X2ludGVyY2VwdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCB0cHIsIGludCBpcnIpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zOTEzLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzozOTE0Olx0aWYgKG5lc3RlZF9zdm1fdmlydHVhbGl6ZV90cHIodmNwdSkpXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTM5MTUtXHRcdHJldHVybjtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTQxOTg9c3RhdGljIGlubGluZSB2b2lkIHN5bmNfY3I4X3RvX2xhcGljKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTQyMDEtXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjQyMDI6XHRpZiAobmVzdGVkX3N2bV92aXJ0dWFsaXplX3Rwcih2Y3B1KSlcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDIwMy1cdFx0cmV0dXJuO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NDIxMT1zdGF0aWMgaW5saW5lIHZvaWQgc3luY19sYXBpY190b19jcjgoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDIxNS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NDIxNjpcdGlmIChuZXN0ZWRfc3ZtX3ZpcnR1YWxpemVfdHByKHZjcHUpKVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy00MjE3LVx0XHRyZXR1cm47XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz00NzU3PXN0YXRpYyBpbnQgc3ZtX2NoZWNrX2ludGVyY2VwdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy00ODgxLVx0dm1jYi1cdTAwM2Vjb250cm9sLmV4aXRfY29kZSA9IGljcHRfaW5mby5leGl0X2NvZGU7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjQ4ODI6XHR2bWV4aXQgPSBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZChzdm0pO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy00ODgzLVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NDkzOT1zdGF0aWMgaW50IHN2bV9lbnRlcl9zbW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bmlvbiBrdm1fc21yYW0gKnNtcmFtKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDk2MS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NDk2MjpcdG5lc3RlZF9zdm1fc2ltcGxlX3ZtZXhpdChzdm0sIFNWTV9FWElUX1NXKTtcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDk2My1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTQ5ODg9c3RhdGljIGludCBzdm1fbGVhdmVfc21tKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgY29uc3QgdW5pb24ga3ZtX3NtcmFtICpzbXJhbSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTUwMzYtXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjUwMzc6XHRpZiAobmVzdGVkX3N2bV9jaGVja19jYWNoZWRfdm1jYjEyKHZjcHUpIFx1MDAzYyAwKVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01MDM4LVx0XHRnb3RvIHVubWFwX3NhdmU7XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz01NTQ1PXN0YXRpYyBfX2luaXQgaW50IHN2bV9oYXJkd2FyZV9zZXR1cCh2b2lkKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNTU4OC1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTU4OTpcdFx0ciA9IG5lc3RlZF9zdm1faW5pdF9tc3JwbV9tZXJnZV9vZmZzZXRzKCk7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU1OTAtXHRcdGlmIChyKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg9MjA4PXN0cnVjdCBzdm1fbmVzdGVkX3N0YXRlIHtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTIyNi1cdCAqIE5vdGU6IHRoaXMgc3RydWN0IGlzIG5vdCBrZXB0IHVwLXRvLWRhdGUgd2hpbGUgTDIgcnVuczsgaXQgaXMgb25seVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaDoyMjc6XHQgKiB2YWxpZCB3aXRoaW4gbmVzdGVkX3N2bV92bXJ1bi5cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MzA4CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmVzdGVkIFNWTSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgdG91Y2hpbmcgdGhlIG5lc3RlZCBTVk0gY29kZSwgc3BlY2lmaWNhbGx5IHRoZSBgbmVzdGVkX3N2bV92bWV4aXRfdXBkYXRlX3ZtY2IxMmAgYW5kIGBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZGAgZnVuY3Rpb25zLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGRlc2lnbmVkIHRvIGJlIHJ1biB3aXRoaW4gYSBuZXN0ZWQgU1ZNIGVudmlyb25tZW50LCB3aGljaCBpcyBnb29kLiBUaGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudCBpcyBgS1ZNX0FNRGAsIGFuZCB0aGF0JiMzOTtzIGl0PyBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQuIExldCYjMzk7cyBsb29rIGF0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBLVk1fQU1EYC4gQWgsIGl0IGRlcGVuZHMgb24gYEtWTWAsIG9mIGNvdXJzZS4gU28sIGNvbmZpcm1pbmcgYEtWTV9BTURgIGFsb25lIGlzIGVub3VnaC4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB3aGF0IGZ1bmN0aW9ucyBhcmUgaW1wb3J0YW50IHRvIGZvY3VzIG9uLiBXZSYjMzk7dmUgZ290OgoKKiAgIGBuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyYAoqICAgYG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkYAoqICAgYG5lc3RlZF9zdm1fY2xlYXJfZGVjb2RlX2Fzc2lzdHNgCiogICBgbmVzdGVkX3N2bV9jb3B5X2RlY29kZV9hc3Npc3RzYAoKSG1tLCB3YWl0IGEgbWludXRlLi4uIEkgcmVtZW1iZXIgdGhvc2UgYG5lc3RlZF9zdm1fY2xlYXJfZGVjb2RlX2Fzc2lzdHNgIGFuZCBgbmVzdGVkX3N2bV9jb3B5X2RlY29kZV9hc3Npc3RzYCBmdW5jdGlvbnMuIFRoZXkmIzM5O3JlIGJvdGggc3RhdGljIHdpdGhpbiBgbmVzdGVkLmNgLiBBbmQgbm93IEkgc2VlIGBuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyYCBpcyBhbHNvIHN0YXRpYyB3aXRoaW4gdGhhdCBzYW1lIGZpbGUuIFRoaXMgbWVhbnMgdGhleSBhcmUgbGlrZWx5IGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMgd2l0aGluIHRoYXQgZmlsZS4gQnV0IGBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZGAuLi50aGF0IG9uZSYjMzk7cyBub3Qgc3RhdGljLiBTbyBpdCYjMzk7cyBleHBvcnRlZCBhbmQgY2FuIGJlIGNhbGxlZCBmcm9tIHNvbWV3aGVyZSBlbHNlLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmVzdGVkX3N2bV9leGl0X2hhbmRsZWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xNTI2PXZvaWQgc3ZtX2xlYXZlX25lc3RlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNTQ5LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNTUwOnN0YXRpYyBpbnQgbmVzdGVkX3N2bV9leGl0X2hhbmRsZWRfbXNyKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNTUxLXtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTE2MDA9c3RhdGljIGludCBuZXN0ZWRfc3ZtX2ludGVyY2VwdChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2MDktXHRjYXNlIFNWTV9FWElUX01TUjpcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTYxMDpcdFx0dm1leGl0ID0gbmVzdGVkX3N2bV9leGl0X2hhbmRsZWRfbXNyKHN2bSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2MTEtXHRcdGJyZWFrO1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTYzMS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTYzMjppbnQgbmVzdGVkX3N2bV9leGl0X2hhbmRsZWQoc3RydWN0IHZjcHVfc3ZtICpzdm0pXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2MzMte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MjUzMT1zdGF0aWMgYm9vbCBjaGVja19zZWxlY3RpdmVfY3IwX2ludGVyY2VwdGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI1NDYtXHRcdHN2bS1cdTAwM2V2bWNiLVx1MDAzZWNvbnRyb2wuZXhpdF9jb2RlID0gU1ZNX0VYSVRfQ1IwX1NFTF9XUklURTtcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MjU0NzpcdFx0cmV0ID0gKG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkKHN2bSkgPT0gTkVTVEVEX0VYSVRfRE9ORSk7XG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI1NDgtXHR9XG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0zNjUzPXN0YXRpYyBpbnQgc3ZtX2hhbmRsZV9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZmFzdHBhdGhfdCBleGl0X2Zhc3RwYXRoKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMzY3My1cdFx0aWYgKHZtZXhpdCA9PSBORVNURURfRVhJVF9DT05USU5VRSlcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MzY3NDpcdFx0XHR2bWV4aXQgPSBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZChzdm0pO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zNjc1LVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NDc1Nz1zdGF0aWMgaW50IHN2bV9jaGVja19pbnRlcmNlcHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDg4MS1cdHZtY2ItXHUwMDNlY29udHJvbC5leGl0X2NvZGUgPSBpY3B0X2luZm8uZXhpdF9jb2RlO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo0ODgyOlx0dm1leGl0ID0gbmVzdGVkX3N2bV9leGl0X2hhbmRsZWQoc3ZtKTtcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDg4My1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oPTg2NT1zdGF0aWMgaW5saW5lIHZvaWQgbmVzdGVkX3N2bV9zaW1wbGVfdm1leGl0KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtLCB1MzIgZXhpdF9jb2RlKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtODcyLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaDo4NzM6aW50IG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKTtcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtODc0LWludCBuZXN0ZWRfc3ZtX2NoZWNrX3Blcm1pc3Npb25zKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDEzOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwODQ1CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqQ3VycmVudCBGb2N1czogTmVzdGVkIFNWTSBWTSBFeGl0IEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gaG9uaW5nIGluIG9uIHRoZSBuZXN0ZWQgU1ZNIGV4aXQgaGFuZGxpbmcgY29kZS4gSXQgbG9va3MgbGlrZSBgbmVzdGVkX3N2bV9leGl0X2hhbmRsZWRgIGlzIGEgZ29vZCBwbGFjZSB0byBzdGFydCwgdGhhdCBzZWVtcyB0byBiZSB0aGUgY29yZSBmdW5jdGlvbiBmb3IgZGVhbGluZyB3aXRoIHRoZSBhY3R1YWwgVk0gZXhpdC4gVGhlbiwgZm9sbG93aW5nIHRoYXQgbG9naWMsIEkgbmVlZCB0byBjaGVjayBgbmVzdGVkX3N2bV92bWV4aXRfdXBkYXRlX3ZtY2IxMmAsIGJlY2F1c2UsIHdlbGwsIHRoYXQgbmFtZSBzdWdnZXN0cyBpdCYjMzk7cyBjcnVjaWFsIGZvciBwcm9wZXJseSB1cGRhdGluZyB0aGUgVmlydHVhbCBNYWNoaW5lIENvbnRyb2wgQmxvY2ssIHBvc3QtVk0gZXhpdCwgYnV0IGZvciB0aGUgMS0yIHZDUFUuCgpJIGFsc28gc2VlIHRoYXQgYG5lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sYCBpcyBnZXR0aW5nIG1vZGlmaWVkLiBUaGF0IG9uZSYjMzk7cyBpbnRlcmVzdGluZywgYXMgaXQmIzM5O3MgdGhlIDAtMiB2bWNiLiBMZXQgbWUgcGl2b3QgdGhlcmUgZmlyc3QsIHNpbmNlIGl0IGlzIGEgZnVuZGFtZW50YWwgY29udHJvbCBmdW5jdGlvbi4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqIGl0JiMzOTtzIGJlaW5nIGNoYW5nZWQgYW5kICp3aHkqIGJlZm9yZSBnb2luZyBkZWVwZXIgaW50byB0aGUgZXhpdC1oYW5kbGluZyBwYXRoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzICpiZWluZyogcHJlcHBlZCBmb3IgdGhlIDAtMiB2bWNiLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAxMzo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfY29udHJvbCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTg0MD1zdGF0aWMgYm9vbCBpc19ldnRpbmpfbm1pKHUzMiBldnRpbmopXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy04NDktXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjg1MDpzdGF0aWMgdm9pZCBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfY29udHJvbChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtODUxLXtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTEwMjk9aW50IGVudGVyX3N2bV9ndWVzdF9tb2RlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHZtY2IxMl9ncGEsIGJvb2wgZnJvbV92bXJ1bilcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwNjAtXHRzdm1fc3dpdGNoX3ZtY2Ioc3ZtLCBcdTAwMjZzdm0tXHUwMDNlbmVzdGVkLnZtY2IwMik7XG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEwNjE6XHRuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfY29udHJvbChzdm0pO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDYyLVx0bmVzdGVkX3ZtY2IwMl9wcmVwYXJlX3NhdmUoc3ZtKTtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTE5MzI9c3RhdGljIGludCBzdm1fc2V0X25lc3RlZF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMDQxLVx0c3ZtX3N3aXRjaF92bWNiKHN2bSwgXHUwMDI2c3ZtLVx1MDAzZW5lc3RlZC52bWNiMDIpO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyMDQyOlx0bmVzdGVkX3ZtY2IwMl9wcmVwYXJlX2NvbnRyb2woc3ZtKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMjA0My1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE2MjIKCQkJCQkJCW91dHB1dDogMTc2CgkJCQkJCQl0aG91Z2h0czogMjQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBLVk0vU1ZNIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIEtWTS9TVk0gcGF0Y2guIEl0JiMzOTtzIGNsZWFyIHRoYXQgYG5lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sYCBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uIHRvIGZvY3VzIG9uIGR1cmluZyBmdXp6aW5nIOKAkyB0aGF0IHNlZW1zIGxpa2UgYSBrZXkgZW50cnkgcG9pbnQuIExldCBtZSBkb3VibGUtY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIHBvaW50cyB0byBjb25zaWRlci4gQWhhLCBgS1ZNX0FNRGAgaXMgdGhlIHByaW1hcnkgb25lLiBOb3csIGlzIHRoZXJlIGFueXRoaW5nIGFuYWxvZ291cyB0byBgWDg2X0ZFQVRVUkVfREVDT0RFQVNTSVNUU2AgaW4gdGVybXMgb2YgY29uZmlndXJhdGlvbj8gTm8sIGl0JiMzOTtzIGEgQ1BVIGZlYXR1cmUsIG5vdCBhIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbi4gR290IGl0LgoKTGV0IG1lIHN1bW1hcml6ZSBteSBmaW5kaW5ncy4gRnJvbSB3aGF0IEkgY2FuIHRlbGwsIHRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nOiBgV29ydGhGdXp6aW5nOiB0cnVlYC4gSGVyZSYjMzk7cyB0aGUgbGlzdCBvZiBmdW5jdGlvbnMgdGhhdCBhcHBlYXIgbW9zdCByZWxldmFudCBmb3IgZnV6emluZzoKKiAgIGBuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyYAoqICAgYG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkYAoqICAgYG5lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sYAoqICAgYG5lc3RlZF9zdm1fY2xlYXJfZGVjb2RlX2Fzc2lzdHNgCiogICBgbmVzdGVkX3N2bV9jb3B5X2RlY29kZV9hc3Npc3RzYAoKQW5kLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSBgS1ZNX0FNRGAgaXMgZW5hYmxlZCAoYEVuYWJsZUNvbmZpZ3M6IC0gS1ZNX0FNRGApLgoKVGhlIHJlYXNvbiBmb3IgZnV6emluZyBpcyBjbGVhcjogdGhpcyBwYXRjaCByZXNvbHZlcyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IHJlbGF0ZWQgdG8gbmVzdGVkIFNWTSB2aXJ0dWFsaXphdGlvbiwgc3BlY2lmaWNhbGx5IHdpdGggdGhlIHBvc3NpYmlsaXR5IG9mIERlY29kZUFzc2lzdCBkYXRhIGxlYWthZ2UgYmV0d2VlbiBWTSBleGl0cy4gVGhpcyBpbXBhY3RzIGNvcmUgS1ZNIFNWTSBsb2dpYywgdGhlIGNvcmUgZnVuY3Rpb24gaXMgdGhlIGNvZGUgaGFuZGxpbmcgbmVzdGVkIFZNIGV4aXRzIGFuZCBwcmVwYXJpbmcgVk1DQjAyIGNvbnRyb2xzLiBTaW5jZSB0aGlzIGNvZGUgaXMgZGlyZWN0bHkgYWNjZXNzaWJsZSBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIEtWTSBpb2N0bHPigJR0aGF0IGlzLCBydW5uaW5nIGEgbmVzdGVkIGd1ZXN04oCUaXQgaXMgYWJzb2x1dGVseSBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGlzIHBhdGNoIG1vZGlmaWVzIGZ1bmN0aW9uYWwgY29kZSwgcmVhY2hhYmxlIHRocm91Z2ggS1ZNIGlvY3RscywgbWFraW5nIHRoaXMgYSBjbGVhciBhcmVhIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMTM6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9BTUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyJiMzNDssCiAgICAmIzM0O25lc3RlZF9zdm1fZXhpdF9oYW5kbGVkJiMzNDssCiAgICAmIzM0O25lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sJiMzNDssCiAgICAmIzM0O25lc3RlZF9zdm1fY2xlYXJfZGVjb2RlX2Fzc2lzdHMmIzM0OywKICAgICYjMzQ7bmVzdGVkX3N2bV9jb3B5X2RlY29kZV9hc3Npc3RzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG5lc3RlZCBTVk0gdmlydHVhbGl6YXRpb24gd2hlcmUgRGVjb2RlQXNzaXN0IGRhdGEgY291bGQgYmUgbGVha2VkIGZyb20gYSBwcmV2aW91cyBleGl0IHRvIGEgc3Vic2VxdWVudCBleGl0LiBJdCBtb2RpZmllcyBjb3JlIEtWTSBTVk0gbG9naWMgZm9yIGhhbmRsaW5nIG5lc3RlZCBWTSBleGl0cyBhbmQgcHJlcGFyaW5nIFZNQ0IwMiBjb250cm9scy4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBLVk0gaW9jdGxzIChzcGVjaWZpY2FsbHkgcnVubmluZyBhIG5lc3RlZCBndWVzdCksIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9BTUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyJiMzNDssCiAgICAmIzM0O25lc3RlZF9zdm1fZXhpdF9oYW5kbGVkJiMzNDssCiAgICAmIzM0O25lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sJiMzNDssCiAgICAmIzM0O25lc3RlZF9zdm1fY2xlYXJfZGVjb2RlX2Fzc2lzdHMmIzM0OywKICAgICYjMzQ7bmVzdGVkX3N2bV9jb3B5X2RlY29kZV9hc3Npc3RzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG5lc3RlZCBTVk0gdmlydHVhbGl6YXRpb24gd2hlcmUgRGVjb2RlQXNzaXN0IGRhdGEgY291bGQgYmUgbGVha2VkIGZyb20gYSBwcmV2aW91cyBleGl0IHRvIGEgc3Vic2VxdWVudCBleGl0LiBJdCBtb2RpZmllcyBjb3JlIEtWTSBTVk0gbG9naWMgZm9yIGhhbmRsaW5nIG5lc3RlZCBWTSBleGl0cyBhbmQgcHJlcGFyaW5nIFZNQ0IwMiBjb250cm9scy4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBLVk0gaW9jdGxzIChzcGVjaWZpY2FsbHkgcnVubmluZyBhIG5lc3RlZCBndWVzdCksIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzo0NTowMi4wODY1NTAwMTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTc0OTE2Mzc2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1fQU1EXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmVzdGVkX3N2bV92bWV4aXRfdXBkYXRlX3ZtY2IxMlwiLFxuICAgIFwibmVzdGVkX3N2bV9leGl0X2hhbmRsZWRcIixcbiAgICBcIm5lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sXCIsXG4gICAgXCJuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzXCIsXG4gICAgXCJuZXN0ZWRfc3ZtX2NvcHlfZGVjb2RlX2Fzc2lzdHNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBuZXN0ZWQgU1ZNIHZpcnR1YWxpemF0aW9uIHdoZXJlIERlY29kZUFzc2lzdCBkYXRhIGNvdWxkIGJlIGxlYWtlZCBmcm9tIGEgcHJldmlvdXMgZXhpdCB0byBhIHN1YnNlcXVlbnQgZXhpdC4gSXQgbW9kaWZpZXMgY29yZSBLVk0gU1ZNIGxvZ2ljIGZvciBoYW5kbGluZyBuZXN0ZWQgVk0gZXhpdHMgYW5kIHByZXBhcmluZyBWTUNCMDIgY29udHJvbHMuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgS1ZNIGlvY3RscyAoc3BlY2lmaWNhbGx5IHJ1bm5pbmcgYSBuZXN0ZWQgZ3Vlc3QpLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzo0NTowMi4wODY1NjAwNTlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3OTYxMDMzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDRlM2UzZDkxNmE5MWY0ZmVlZGRkNWRlZDdmZjRkZmJhYmM5YzI1MjVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdW4gMjkgMTM6NDU6MDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYyBiL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNcXG5pbmRleCBiMzQwZGM5OTkxYWRiNC4uNTBlOWZmYTVmOWZkNGQgMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY1xcbisrKyBiL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNcXG5AQCAtMzMsNiArMzMsMzMgQEBcXG4gXFxuICNkZWZpbmUgQ0MgS1ZNX05FU1RFRF9WTUVOVEVSX0NPTlNJU1RFTkNZX0NIRUNLXFxuIFxcbitzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHN0cnVjdCB2bWNiICp2bWNiKVxcbit7XFxuK1xcdHZtY2ItXFx1MDAzZWNvbnRyb2wuaW5zbl9sZW4gPSAwO1xcbitcXHRtZW1zZXQodm1jYi1cXHUwMDNlY29udHJvbC5pbnNuX2J5dGVzLCAwLFxcbitcXHQgICAgICAgc2l6ZW9mKHZtY2ItXFx1MDAzZWNvbnRyb2wuaW5zbl9ieXRlcykpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX2NvcHlfZGVjb2RlX2Fzc2lzdHMoc3RydWN0IHZtY2IgKnRvLCBzdHJ1Y3Qgdm1jYiAqZnJvbSlcXG4re1xcbitcXHR1OCBpbnNuX2xlbiA9IGZyb20tXFx1MDAzZWNvbnRyb2wuaW5zbl9sZW47XFxuK1xcbitcXHRuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHRvKTtcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIEhhcmR3YXJlIGxlYXZlcyBpbnNuX2xlbiB6ZXJvIHdoZW4gbm8gRGVjb2RlQXNzaXN0IGRhdGEgaXMgYXZhaWxhYmxlLlxcbitcXHQgKiBLZWVwIHRoYXQgYXMgdGhlIG5lc3RlZC12aXNpYmxlIFxcXCJubyBkZWNvZGUgaW5mb1xcXCIgbWFya2VyLlxcbitcXHQgKi9cXG4rXFx0aWYgKCFpbnNuX2xlbilcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0aWYgKFdBUk5fT05fT05DRShpbnNuX2xlbiBcXHUwMDNlIHNpemVvZihmcm9tLVxcdTAwM2Vjb250cm9sLmluc25fYnl0ZXMpKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0dG8tXFx1MDAzZWNvbnRyb2wuaW5zbl9sZW4gPSBpbnNuX2xlbjtcXG4rXFx0bWVtY3B5KHRvLVxcdTAwM2Vjb250cm9sLmluc25fYnl0ZXMsIGZyb20tXFx1MDAzZWNvbnRyb2wuaW5zbl9ieXRlcywgaW5zbl9sZW4pO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX2luamVjdF9ucGZfZXhpdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuIFxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgeDg2X2V4Y2VwdGlvbiAqZmF1bHQpXFxuIHtcXG5AQCAtODM4LDcgKzg2NSwxMCBAQCBzdGF0aWMgdm9pZCBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfY29udHJvbChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcXG4gXFx0LypcXG4gXFx0ICogRmlsbGVkIGF0IGV4aXQ6IGV4aXRfY29kZSwgZXhpdF9pbmZvXzEsIGV4aXRfaW5mb18yLCBleGl0X2ludF9pbmZvLFxcbiBcXHQgKiBleGl0X2ludF9pbmZvX2VyciwgbmV4dF9yaXAsIGluc25fbGVuLCBpbnNuX2J5dGVzLlxcbitcXHQgKiBDbGVhciBzdGFsZSBEZWNvZGVBc3Npc3QgZGF0YSBiZWZvcmUgTDIgcnVucy5cXG4gXFx0ICovXFxuK1xcdG5lc3RlZF9zdm1fY2xlYXJfZGVjb2RlX2Fzc2lzdHModm1jYjAyKTtcXG4rXFx0c3ZtLVxcdTAwM2VuZXN0ZWQuZGVjb2RlX2Fzc2lzdHNfdmFsaWQgPSBmYWxzZTtcXG4gXFxuIFxcdGlmIChndWVzdF9jcHVfY2FwX2hhcyh2Y3B1LCBYODZfRkVBVFVSRV9WR0lGKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgKHZtY2IxMl9jdHJsLVxcdTAwM2VpbnRfY3RsIFxcdTAwMjYgVl9HSUZfRU5BQkxFX01BU0spKVxcbkBAIC0xMjUxLDYgKzEyODEsMTggQEAgc3RhdGljIGludCBuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gXFx0aWYgKGd1ZXN0X2NwdV9jYXBfaGFzKHZjcHUsIFg4Nl9GRUFUVVJFX05SSVBTKSlcXG4gXFx0XFx0dm1jYjEyLVxcdTAwM2Vjb250cm9sLm5leHRfcmlwICA9IHZtY2IwMi1cXHUwMDNlY29udHJvbC5uZXh0X3JpcDtcXG4gXFxuK1xcdC8qXFxuK1xcdCAqIENvcHkgRGVjb2RlQXNzaXN0IGRhdGEgb25seSBmb3IgcmVhbCBWTUNCMDIgZXhpdHMuICBLVk0tc3ludGhlc2l6ZWRcXG4rXFx0ICogZXhpdHMgcmVwb3J0IG5vIGRlY29kZSBpbmZvIHRvIEwxLlxcbitcXHQgKi9cXG4rXFx0aWYgKHN2bS1cXHUwMDNlbmVzdGVkLmRlY29kZV9hc3Npc3RzX3ZhbGlkIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBndWVzdF9jcHVfY2FwX2hhcyh2Y3B1LCBYODZfRkVBVFVSRV9ERUNPREVBU1NJU1RTKSlcXG4rXFx0XFx0bmVzdGVkX3N2bV9jb3B5X2RlY29kZV9hc3Npc3RzKHZtY2IxMiwgdm1jYjAyKTtcXG4rXFx0ZWxzZVxcbitcXHRcXHRuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHZtY2IxMik7XFxuK1xcbitcXHRzdm0tXFx1MDAzZW5lc3RlZC5kZWNvZGVfYXNzaXN0c192YWxpZCA9IGZhbHNlO1xcbitcXG4gXFx0aWYgKG5lc3RlZF92bWNiMTJfaGFzX2xicnYodmNwdSkpXFxuIFxcdFxcdHN2bV9jb3B5X2xicnMoXFx1MDAyNnZtY2IxMi1cXHUwMDNlc2F2ZSwgXFx1MDAyNnZtY2IwMi1cXHUwMDNlc2F2ZSk7XFxuIFxcbkBAIC0xNTkzLDggKzE2MzUsMTEgQEAgaW50IG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxcbiBcXG4gXFx0dm1leGl0ID0gbmVzdGVkX3N2bV9pbnRlcmNlcHQoc3ZtKTtcXG4gXFxuLVxcdGlmICh2bWV4aXQgPT0gTkVTVEVEX0VYSVRfRE9ORSlcXG4rXFx0aWYgKHZtZXhpdCA9PSBORVNURURfRVhJVF9ET05FKSB7XFxuK1xcdFxcdC8qIFRoaXMgcGF0aCByZWZsZWN0cyBhIHJlYWwgVk1DQjAyIGV4aXQgZGlyZWN0bHkgdG8gTDEuICovXFxuK1xcdFxcdHN2bS1cXHUwMDNlbmVzdGVkLmRlY29kZV9hc3Npc3RzX3ZhbGlkID0gdHJ1ZTtcXG4gXFx0XFx0bmVzdGVkX3N2bV92bWV4aXQoc3ZtKTtcXG4rXFx0fVxcbiBcXG4gXFx0cmV0dXJuIHZtZXhpdDtcXG4gfVxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xcbmluZGV4IGUwMmEzOGRhNTI5NmUzLi4zNjZlN2VmNzg3YjI2MCAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xcbkBAIC01NDcwLDYgKzU0NzAsOSBAQCBzdGF0aWMgX19pbml0IHZvaWQgc3ZtX3NldF9jcHVfY2Fwcyh2b2lkKVxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0a3ZtX2NwdV9jYXBfc2V0KFg4Nl9GRUFUVVJFX0ZMVVNIQllBU0lEKTtcXG4gXFxuK1xcdFxcdGlmIChib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfREVDT0RFQVNTSVNUUykpXFxuK1xcdFxcdFxcdGt2bV9jcHVfY2FwX3NldChYODZfRkVBVFVSRV9ERUNPREVBU1NJU1RTKTtcXG4rXFxuIFxcdFxcdGlmIChucmlwcylcXG4gXFx0XFx0XFx0a3ZtX2NwdV9jYXBfc2V0KFg4Nl9GRUFUVVJFX05SSVBTKTtcXG4gXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmggYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oXFxuaW5kZXggNTEzNzQxNmJlNTkzZDcuLmJlN2ZkY2QxMjRiNzQyIDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcXG4rKysgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oXFxuQEAgLTIzOCw2ICsyMzgsMTIgQEAgc3RydWN0IHN2bV9uZXN0ZWRfc3RhdGUge1xcbiBcXHQgKiBvbiBpdHMgc2lkZS5cXG4gXFx0ICovXFxuIFxcdGJvb2wgZm9yY2VfbXNyX2JpdG1hcF9yZWNhbGM7XFxuK1xcbitcXHQvKlxcbitcXHQgKiBUcnVlIG9ubHkgd2hpbGUgcmVmbGVjdGluZyBhIHJlYWwgVk1DQjAyIGV4aXQgd2hvc2UgRGVjb2RlQXNzaXN0XFxuK1xcdCAqIGZpZWxkcyBtYXkgYmUgY29waWVkIHRvIFZNQ0IxMi4gIEtWTS1zeW50aGVzaXplZCBleGl0cyBsZWF2ZSBpdCBjbGVhci5cXG4rXFx0ICovXFxuK1xcdGJvb2wgZGVjb2RlX2Fzc2lzdHNfdmFsaWQ7XFxuIH07XFxuIFxcbiBzdHJ1Y3QgdmNwdV9zZXZfZXNfc3RhdGUge1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bVxcbmluZGV4IDkxMThhNWE1MWI4OWZkLi4yM2JmNTEwNzQzOTIyOCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vTWFrZWZpbGUua3ZtXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bVxcbkBAIC0xMTQsNiArMTE0LDcgQEAgVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHg4Ni92bXhfcHJlZW1wdGlvbl90aW1lcl90ZXN0XFxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX3ZtY2FsbF90ZXN0XFxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX2ludF9jdGxfdGVzdFxcbiBURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9uZXN0ZWRfY2xlYXJfZWZlcl9zdm1lXFxuK1RFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX25lc3RlZF9kZWNvZGVfYXNzaXN0c190ZXN0XFxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX25lc3RlZF9zaHV0ZG93bl90ZXN0XFxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX25lc3RlZF9zb2Z0X2luamVjdF90ZXN0XFxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX25lc3RlZF92bWNiMTJfZ3BhXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaFxcbmluZGV4IDc3ZjU3NmVlNzc4OWQ4Li5lZTQ1MjBmZjJmODkzNyAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmhcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmhcXG5AQCAtMjAxLDYgKzIwMSw3IEBAIHN0cnVjdCBrdm1feDg2X2NwdV9mZWF0dXJlIHtcXG4gI2RlZmluZVxcdFg4Nl9GRUFUVVJFX0xCUlZcXHRcXHRLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMEEsIDAsIEVEWCwgMSlcXG4gI2RlZmluZVxcdFg4Nl9GRUFUVVJFX05SSVBTXFx0XFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDBBLCAwLCBFRFgsIDMpXFxuICNkZWZpbmUgWDg2X0ZFQVRVUkVfVFNDUkFURU1TUiAgICAgICAgICBLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMEEsIDAsIEVEWCwgNClcXG4rI2RlZmluZSBYODZfRkVBVFVSRV9ERUNPREVBU1NJU1RTICAgICAgIEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwQSwgMCwgRURYLCA3KVxcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1BBVVNFRklMVEVSICAgICAgICAgS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDBBLCAwLCBFRFgsIDEwKVxcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1BGVEhSRVNIT0xEICAgICAgICAgS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDBBLCAwLCBFRFgsIDEyKVxcbiAjZGVmaW5lXFx0WDg2X0ZFQVRVUkVfVl9WTVNBVkVfVk1MT0FEXFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDBBLCAwLCBFRFgsIDE1KVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N2bV9uZXN0ZWRfZGVjb2RlX2Fzc2lzdHNfdGVzdC5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Ni9zdm1fbmVzdGVkX2RlY29kZV9hc3Npc3RzX3Rlc3QuY1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjZiNWQzOGQ5ZDM2YzQ1XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3ZtX25lc3RlZF9kZWNvZGVfYXNzaXN0c190ZXN0LmNcXG5AQCAtMCwwICsxLDk5IEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4rI2luY2x1ZGUgXFxcInRlc3RfdXRpbC5oXFxcIlxcbisjaW5jbHVkZSBcXFwia3ZtX3V0aWwuaFxcXCJcXG4rI2luY2x1ZGUgXFxcInByb2Nlc3Nvci5oXFxcIlxcbisjaW5jbHVkZSBcXFwic3ZtX3V0aWwuaFxcXCJcXG4rXFxuKyNkZWZpbmUgTDJfR1VFU1RfU1RBQ0tfU0laRSA2NFxcbitcXG4rc3RhdGljIHVpbnQ2NF90IG5wZl90YXJnZXQgX19hbGlnbmVkKFBBR0VfU0laRSk7XFxuK1xcbitzdGF0aWMgdm9pZCBsMl9ndWVzdF9jb2RlKHZvaWQpXFxuK3tcXG4rXFx0YXNtIHZvbGF0aWxlKFxcXCJtb3YgKCUwKSwgJSVyYXhcXFwiIDogOiBcXFwiclxcXCIoXFx1MDAyNm5wZl90YXJnZXQpIDogXFxcInJheFxcXCIsIFxcXCJtZW1vcnlcXFwiKTtcXG4rXFx0R1VFU1RfRkFJTChcXFwiTDIgYWNjZXNzIGRpZCBub3QgY2F1c2UgYSBuZXN0ZWQgcGFnZSBmYXVsdFxcXCIpO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBsMl92bW1jYWxsX2NvZGUodm9pZClcXG4re1xcbitcXHRhc20gdm9sYXRpbGUoXFxcInZtbWNhbGxcXFwiKTtcXG4rXFx0R1VFU1RfRkFJTChcXFwiTDIgZGlkIG5vdCBleGl0IG9uIFZNTUNBTExcXFwiKTtcXG4rfVxcbitcXG4rLypcXG4rICogV2hlbmV2ZXIgaGFyZHdhcmUgcmVwb3J0cyBEZWNvZGVBc3Npc3QgaW5mb3JtYXRpb24gKGluc25fbGVuICE9IDApLCB0aGUgYnl0ZXNcXG4rICogS1ZNIHJlZmxlY3RzIGludG8gVk1DQjEyIG11c3QgYmUgdGhlIGluc3RydWN0aW9uIGF0IHRoZSBjdXJyZW50IFJJUCwgbmV2ZXJcXG4rICogc3RhbGUgYnl0ZXMgY2FycmllZCBvdmVyIGZyb20gYSBwcmV2aW91cyBMMiBleGl0LlxcbisgKi9cXG4rc3RhdGljIHZvaWQgYXNzZXJ0X2RlY29kZV9hc3Npc3RzX3NhbmUoc3RydWN0IHZtY2IgKnZtY2IpXFxuK3tcXG4rXFx0R1VFU1RfQVNTRVJUKHZtY2ItXFx1MDAzZWNvbnRyb2wuaW5zbl9sZW4gXFx1MDAzYz1cXG4rXFx0XFx0ICAgICBzaXplb2Yodm1jYi1cXHUwMDNlY29udHJvbC5pbnNuX2J5dGVzKSk7XFxuK1xcdGlmICh2bWNiLVxcdTAwM2Vjb250cm9sLmluc25fbGVuKVxcbitcXHRcXHRHVUVTVF9BU1NFUlQoIW1lbWNtcCh2bWNiLVxcdTAwM2Vjb250cm9sLmluc25fYnl0ZXMsXFxuK1xcdFxcdFxcdFxcdCAgICAgKHZvaWQgKil2bWNiLVxcdTAwM2VzYXZlLnJpcCxcXG4rXFx0XFx0XFx0XFx0ICAgICB2bWNiLVxcdTAwM2Vjb250cm9sLmluc25fbGVuKSk7XFxuK31cXG4rXFxuK3N0YXRpYyB2b2lkIGwxX2d1ZXN0X2NvZGUoc3RydWN0IHN2bV90ZXN0X2RhdGEgKnN2bSlcXG4re1xcbitcXHR1bnNpZ25lZCBsb25nIGwyX2d1ZXN0X3N0YWNrW0wyX0dVRVNUX1NUQUNLX1NJWkVdO1xcbitcXHRzdHJ1Y3Qgdm1jYiAqdm1jYiA9IHN2bS1cXHUwMDNldm1jYjtcXG4rXFxuK1xcdEdVRVNUX0FTU0VSVCh0aGlzX2NwdV9oYXMoWDg2X0ZFQVRVUkVfREVDT0RFQVNTSVNUUykpO1xcbitcXG4rXFx0Z2VuZXJpY19zdm1fc2V0dXAoc3ZtLCBsMl9ndWVzdF9jb2RlLFxcbitcXHRcXHRcXHQgIFxcdTAwMjZsMl9ndWVzdF9zdGFja1tMMl9HVUVTVF9TVEFDS19TSVpFXSk7XFxuK1xcbitcXHQvKiBBIHJlYWwgbmVzdGVkICNOUEYgbXVzdCByZWZsZWN0IHZhbGlkIGRlY29kZSBpbmZvcm1hdGlvbiB0byBMMS4gKi9cXG4rXFx0cnVuX2d1ZXN0KHZtY2IsIHN2bS1cXHUwMDNldm1jYl9ncGEpO1xcbitcXG4rXFx0R1VFU1RfQVNTRVJUX0VRKHZtY2ItXFx1MDAzZWNvbnRyb2wuZXhpdF9jb2RlLCBTVk1fRVhJVF9OUEYpO1xcbitcXHRHVUVTVF9BU1NFUlQodm1jYi1cXHUwMDNlY29udHJvbC5pbnNuX2xlbik7XFxuK1xcdGFzc2VydF9kZWNvZGVfYXNzaXN0c19zYW5lKHZtY2IpO1xcbitcXG4rXFx0LypcXG4rXFx0ICogUmVkaXJlY3QgTDIgcGFzdCB0aGUgc3RpbGwtZmF1bHRpbmcgYWNjZXNzIHRvIGEgVk1NQ0FMTC4gIEtWTSByZXVzZXNcXG4rXFx0ICogaXRzIGludGVybmFsIFZNQ0IwMiwgd2hpY2ggbm93IGhvbGRzIHRoZSAjTlBGJ3MgZGVjb2RlIGJ5dGVzLCBzbyB0aGlzXFxuK1xcdCAqIGV4ZXJjaXNlcyB0aGUgcGF0aCB0aGF0IG11c3QgY2xlYXIgRGVjb2RlQXNzaXN0IHN0YXRlIGFuZCBlbnN1cmVzIHRoZVxcbitcXHQgKiBwcmlvciBleGl0J3MgYnl0ZXMgYXJlIG5vdCBsZWFrZWQgaW50byBhIHN1YnNlcXVlbnQgZXhpdC5cXG4rXFx0ICovXFxuK1xcdHZtY2ItXFx1MDAzZXNhdmUucmlwID0gKHU2NClsMl92bW1jYWxsX2NvZGU7XFxuK1xcdHJ1bl9ndWVzdCh2bWNiLCBzdm0tXFx1MDAzZXZtY2JfZ3BhKTtcXG4rXFxuK1xcdEdVRVNUX0FTU0VSVF9FUSh2bWNiLVxcdTAwM2Vjb250cm9sLmV4aXRfY29kZSwgU1ZNX0VYSVRfVk1NQ0FMTCk7XFxuK1xcdGFzc2VydF9kZWNvZGVfYXNzaXN0c19zYW5lKHZtY2IpO1xcbitcXG4rXFx0R1VFU1RfRE9ORSgpO1xcbit9XFxuK1xcbitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbit7XFxuK1xcdGd2YV90IHN2bV9ndmEsIG5wZl9ndmE7XFxuK1xcdGdwYV90IG5wZl9ncGE7XFxuK1xcdHN0cnVjdCBrdm1fdmNwdSAqdmNwdTtcXG4rXFx0c3RydWN0IGt2bV92bSAqdm07XFxuK1xcdHU2NCAqcHRlO1xcbitcXG4rXFx0VEVTVF9SRVFVSVJFKGt2bV9jcHVfaGFzKFg4Nl9GRUFUVVJFX1NWTSkpO1xcbitcXHRURVNUX1JFUVVJUkUoa3ZtX2NwdV9oYXMoWDg2X0ZFQVRVUkVfTlBUKSk7XFxuK1xcdFRFU1RfUkVRVUlSRShrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9ERUNPREVBU1NJU1RTKSk7XFxuK1xcbitcXHR2bSA9IHZtX2NyZWF0ZV93aXRoX29uZV92Y3B1KFxcdTAwMjZ2Y3B1LCBsMV9ndWVzdF9jb2RlKTtcXG4rXFx0dm1fZW5hYmxlX25wdCh2bSk7XFxuK1xcdHZjcHVfYWxsb2Nfc3ZtKHZtLCBcXHUwMDI2c3ZtX2d2YSk7XFxuK1xcdG5wZl9ndmEgPSAoZ3ZhX3QpXFx1MDAyNm5wZl90YXJnZXQ7XFxuK1xcdG5wZl9ncGEgPSBhZGRyX2d2YTJncGEodm0sIG5wZl9ndmEpO1xcbitcXG4rXFx0dGRwX2lkZW50aXR5X21hcF9kZWZhdWx0X21lbXNsb3RzKHZtKTtcXG4rXFx0cHRlID0gdGRwX2dldF9wdGUodm0sIG5wZl9ncGEpO1xcbitcXHQqcHRlIFxcdTAwMjY9IH5QVEVfUFJFU0VOVF9NQVNLKFxcdTAwMjZ2bS1cXHUwMDNlc3RhZ2UyX21tdSk7XFxuK1xcbitcXHR2Y3B1X2FyZ3Nfc2V0KHZjcHUsIDEsIHN2bV9ndmEpO1xcbitcXHR2Y3B1X3J1bih2Y3B1KTtcXG4rXFx0VEVTVF9BU1NFUlRfS1ZNX0VYSVRfUkVBU09OKHZjcHUsIEtWTV9FWElUX0lPKTtcXG4rXFx0VEVTVF9BU1NFUlRfRVEoZ2V0X3VjYWxsKHZjcHUsIE5VTEwpLCBVQ0FMTF9ET05FKTtcXG4rXFxuK1xcdGt2bV92bV9mcmVlKHZtKTtcXG4rXFx0cmV0dXJuIDA7XFxuK31cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTM6NDU6MDIuNjY3Mjg4MzgyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTE2ODQxMjk2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1fQU1EXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmVzdGVkX3N2bV92bWV4aXRfdXBkYXRlX3ZtY2IxMlwiLFxuICAgIFwibmVzdGVkX3N2bV9leGl0X2hhbmRsZWRcIixcbiAgICBcIm5lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sXCIsXG4gICAgXCJuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzXCIsXG4gICAgXCJuZXN0ZWRfc3ZtX2NvcHlfZGVjb2RlX2Fzc2lzdHNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBuZXN0ZWQgU1ZNIHZpcnR1YWxpemF0aW9uIHdoZXJlIERlY29kZUFzc2lzdCBkYXRhIGNvdWxkIGJlIGxlYWtlZCBmcm9tIGEgcHJldmlvdXMgZXhpdCB0byBhIHN1YnNlcXVlbnQgZXhpdC4gSXQgbW9kaWZpZXMgY29yZSBLVk0gU1ZNIGxvZ2ljIGZvciBoYW5kbGluZyBuZXN0ZWQgVk0gZXhpdHMgYW5kIHByZXBhcmluZyBWTUNCMDIgY29udHJvbHMuIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgS1ZNIGlvY3RscyAoc3BlY2lmaWNhbGx5IHJ1bm5pbmcgYSBuZXN0ZWQgZ3Vlc3QpLCBzbyBpdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDRlM2UzZDkxNmE5MWY0ZmVlZGRkNWRlZDdmZjRkZmJhYmM5YzI1MjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1biAyOSAxMzo0NTowMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jXG5pbmRleCBiMzQwZGM5OTkxYWRiNC4uNTBlOWZmYTVmOWZkNGQgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jXG4rKysgYi9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jXG5AQCAtMzMsNiArMzMsMzMgQEBcbiBcbiAjZGVmaW5lIENDIEtWTV9ORVNURURfVk1FTlRFUl9DT05TSVNURU5DWV9DSEVDS1xuIFxuK3N0YXRpYyB2b2lkIG5lc3RlZF9zdm1fY2xlYXJfZGVjb2RlX2Fzc2lzdHMoc3RydWN0IHZtY2IgKnZtY2IpXG4re1xuK1x0dm1jYi1cdTAwM2Vjb250cm9sLmluc25fbGVuID0gMDtcbitcdG1lbXNldCh2bWNiLVx1MDAzZWNvbnRyb2wuaW5zbl9ieXRlcywgMCxcbitcdCAgICAgICBzaXplb2Yodm1jYi1cdTAwM2Vjb250cm9sLmluc25fYnl0ZXMpKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgbmVzdGVkX3N2bV9jb3B5X2RlY29kZV9hc3Npc3RzKHN0cnVjdCB2bWNiICp0bywgc3RydWN0IHZtY2IgKmZyb20pXG4re1xuK1x0dTggaW5zbl9sZW4gPSBmcm9tLVx1MDAzZWNvbnRyb2wuaW5zbl9sZW47XG4rXG4rXHRuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHRvKTtcbitcbitcdC8qXG4rXHQgKiBIYXJkd2FyZSBsZWF2ZXMgaW5zbl9sZW4gemVybyB3aGVuIG5vIERlY29kZUFzc2lzdCBkYXRhIGlzIGF2YWlsYWJsZS5cbitcdCAqIEtlZXAgdGhhdCBhcyB0aGUgbmVzdGVkLXZpc2libGUgXCJubyBkZWNvZGUgaW5mb1wiIG1hcmtlci5cbitcdCAqL1xuK1x0aWYgKCFpbnNuX2xlbilcbitcdFx0cmV0dXJuO1xuK1xuK1x0aWYgKFdBUk5fT05fT05DRShpbnNuX2xlbiBcdTAwM2Ugc2l6ZW9mKGZyb20tXHUwMDNlY29udHJvbC5pbnNuX2J5dGVzKSkpXG4rXHRcdHJldHVybjtcbitcbitcdHRvLVx1MDAzZWNvbnRyb2wuaW5zbl9sZW4gPSBpbnNuX2xlbjtcbitcdG1lbWNweSh0by1cdTAwM2Vjb250cm9sLmluc25fYnl0ZXMsIGZyb20tXHUwMDNlY29udHJvbC5pbnNuX2J5dGVzLCBpbnNuX2xlbik7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIG5lc3RlZF9zdm1faW5qZWN0X25wZl9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbiBcdFx0XHRcdCAgICAgICBzdHJ1Y3QgeDg2X2V4Y2VwdGlvbiAqZmF1bHQpXG4ge1xuQEAgLTgzOCw3ICs4NjUsMTAgQEAgc3RhdGljIHZvaWQgbmVzdGVkX3ZtY2IwMl9wcmVwYXJlX2NvbnRyb2woc3RydWN0IHZjcHVfc3ZtICpzdm0pXG4gXHQvKlxuIFx0ICogRmlsbGVkIGF0IGV4aXQ6IGV4aXRfY29kZSwgZXhpdF9pbmZvXzEsIGV4aXRfaW5mb18yLCBleGl0X2ludF9pbmZvLFxuIFx0ICogZXhpdF9pbnRfaW5mb19lcnIsIG5leHRfcmlwLCBpbnNuX2xlbiwgaW5zbl9ieXRlcy5cbitcdCAqIENsZWFyIHN0YWxlIERlY29kZUFzc2lzdCBkYXRhIGJlZm9yZSBMMiBydW5zLlxuIFx0ICovXG4rXHRuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHZtY2IwMik7XG4rXHRzdm0tXHUwMDNlbmVzdGVkLmRlY29kZV9hc3Npc3RzX3ZhbGlkID0gZmFsc2U7XG4gXG4gXHRpZiAoZ3Vlc3RfY3B1X2NhcF9oYXModmNwdSwgWDg2X0ZFQVRVUkVfVkdJRikgXHUwMDI2XHUwMDI2XG4gXHQgICAgKHZtY2IxMl9jdHJsLVx1MDAzZWludF9jdGwgXHUwMDI2IFZfR0lGX0VOQUJMRV9NQVNLKSlcbkBAIC0xMjUxLDYgKzEyODEsMTggQEAgc3RhdGljIGludCBuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbiBcdGlmIChndWVzdF9jcHVfY2FwX2hhcyh2Y3B1LCBYODZfRkVBVFVSRV9OUklQUykpXG4gXHRcdHZtY2IxMi1cdTAwM2Vjb250cm9sLm5leHRfcmlwICA9IHZtY2IwMi1cdTAwM2Vjb250cm9sLm5leHRfcmlwO1xuIFxuK1x0LypcbitcdCAqIENvcHkgRGVjb2RlQXNzaXN0IGRhdGEgb25seSBmb3IgcmVhbCBWTUNCMDIgZXhpdHMuICBLVk0tc3ludGhlc2l6ZWRcbitcdCAqIGV4aXRzIHJlcG9ydCBubyBkZWNvZGUgaW5mbyB0byBMMS5cbitcdCAqL1xuK1x0aWYgKHN2bS1cdTAwM2VuZXN0ZWQuZGVjb2RlX2Fzc2lzdHNfdmFsaWQgXHUwMDI2XHUwMDI2XG4rXHQgICAgZ3Vlc3RfY3B1X2NhcF9oYXModmNwdSwgWDg2X0ZFQVRVUkVfREVDT0RFQVNTSVNUUykpXG4rXHRcdG5lc3RlZF9zdm1fY29weV9kZWNvZGVfYXNzaXN0cyh2bWNiMTIsIHZtY2IwMik7XG4rXHRlbHNlXG4rXHRcdG5lc3RlZF9zdm1fY2xlYXJfZGVjb2RlX2Fzc2lzdHModm1jYjEyKTtcbitcbitcdHN2bS1cdTAwM2VuZXN0ZWQuZGVjb2RlX2Fzc2lzdHNfdmFsaWQgPSBmYWxzZTtcbitcbiBcdGlmIChuZXN0ZWRfdm1jYjEyX2hhc19sYnJ2KHZjcHUpKVxuIFx0XHRzdm1fY29weV9sYnJzKFx1MDAyNnZtY2IxMi1cdTAwM2VzYXZlLCBcdTAwMjZ2bWNiMDItXHUwMDNlc2F2ZSk7XG4gXG5AQCAtMTU5Myw4ICsxNjM1LDExIEBAIGludCBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbiBcbiBcdHZtZXhpdCA9IG5lc3RlZF9zdm1faW50ZXJjZXB0KHN2bSk7XG4gXG4tXHRpZiAodm1leGl0ID09IE5FU1RFRF9FWElUX0RPTkUpXG4rXHRpZiAodm1leGl0ID09IE5FU1RFRF9FWElUX0RPTkUpIHtcbitcdFx0LyogVGhpcyBwYXRoIHJlZmxlY3RzIGEgcmVhbCBWTUNCMDIgZXhpdCBkaXJlY3RseSB0byBMMS4gKi9cbitcdFx0c3ZtLVx1MDAzZW5lc3RlZC5kZWNvZGVfYXNzaXN0c192YWxpZCA9IHRydWU7XG4gXHRcdG5lc3RlZF9zdm1fdm1leGl0KHN2bSk7XG4rXHR9XG4gXG4gXHRyZXR1cm4gdm1leGl0O1xuIH1cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xuaW5kZXggZTAyYTM4ZGE1Mjk2ZTMuLjM2NmU3ZWY3ODdiMjYwIDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xuKysrIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xuQEAgLTU0NzAsNiArNTQ3MCw5IEBAIHN0YXRpYyBfX2luaXQgdm9pZCBzdm1fc2V0X2NwdV9jYXBzKHZvaWQpXG4gXHRcdCAqL1xuIFx0XHRrdm1fY3B1X2NhcF9zZXQoWDg2X0ZFQVRVUkVfRkxVU0hCWUFTSUQpO1xuIFxuK1x0XHRpZiAoYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0RFQ09ERUFTU0lTVFMpKVxuK1x0XHRcdGt2bV9jcHVfY2FwX3NldChYODZfRkVBVFVSRV9ERUNPREVBU1NJU1RTKTtcbitcbiBcdFx0aWYgKG5yaXBzKVxuIFx0XHRcdGt2bV9jcHVfY2FwX3NldChYODZfRkVBVFVSRV9OUklQUyk7XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uaCBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbmluZGV4IDUxMzc0MTZiZTU5M2Q3Li5iZTdmZGNkMTI0Yjc0MiAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbisrKyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbkBAIC0yMzgsNiArMjM4LDEyIEBAIHN0cnVjdCBzdm1fbmVzdGVkX3N0YXRlIHtcbiBcdCAqIG9uIGl0cyBzaWRlLlxuIFx0ICovXG4gXHRib29sIGZvcmNlX21zcl9iaXRtYXBfcmVjYWxjO1xuK1xuK1x0LypcbitcdCAqIFRydWUgb25seSB3aGlsZSByZWZsZWN0aW5nIGEgcmVhbCBWTUNCMDIgZXhpdCB3aG9zZSBEZWNvZGVBc3Npc3RcbitcdCAqIGZpZWxkcyBtYXkgYmUgY29waWVkIHRvIFZNQ0IxMi4gIEtWTS1zeW50aGVzaXplZCBleGl0cyBsZWF2ZSBpdCBjbGVhci5cbitcdCAqL1xuK1x0Ym9vbCBkZWNvZGVfYXNzaXN0c192YWxpZDtcbiB9O1xuIFxuIHN0cnVjdCB2Y3B1X3Nldl9lc19zdGF0ZSB7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL01ha2VmaWxlLmt2bSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cbmluZGV4IDkxMThhNWE1MWI4OWZkLi4yM2JmNTEwNzQzOTIyOCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9NYWtlZmlsZS5rdm1cbkBAIC0xMTQsNiArMTE0LDcgQEAgVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHg4Ni92bXhfcHJlZW1wdGlvbl90aW1lcl90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHg4Ni9zdm1fdm1jYWxsX3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9pbnRfY3RsX3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9uZXN0ZWRfY2xlYXJfZWZlcl9zdm1lXG4rVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHg4Ni9zdm1fbmVzdGVkX2RlY29kZV9hc3Npc3RzX3Rlc3RcbiBURVNUX0dFTl9QUk9HU194ODYgKz0geDg2L3N2bV9uZXN0ZWRfc2h1dGRvd25fdGVzdFxuIFRFU1RfR0VOX1BST0dTX3g4NiArPSB4ODYvc3ZtX25lc3RlZF9zb2Z0X2luamVjdF90ZXN0XG4gVEVTVF9HRU5fUFJPR1NfeDg2ICs9IHg4Ni9zdm1fbmVzdGVkX3ZtY2IxMl9ncGFcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vaW5jbHVkZS94ODYvcHJvY2Vzc29yLmhcbmluZGV4IDc3ZjU3NmVlNzc4OWQ4Li5lZTQ1MjBmZjJmODkzNyAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS9pbmNsdWRlL3g4Ni9wcm9jZXNzb3IuaFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL2luY2x1ZGUveDg2L3Byb2Nlc3Nvci5oXG5AQCAtMjAxLDYgKzIwMSw3IEBAIHN0cnVjdCBrdm1feDg2X2NwdV9mZWF0dXJlIHtcbiAjZGVmaW5lXHRYODZfRkVBVFVSRV9MQlJWXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwQSwgMCwgRURYLCAxKVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX05SSVBTXHRcdEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwQSwgMCwgRURYLCAzKVxuICNkZWZpbmUgWDg2X0ZFQVRVUkVfVFNDUkFURU1TUiAgICAgICAgICBLVk1fWDg2X0NQVV9GRUFUVVJFKDB4ODAwMDAwMEEsIDAsIEVEWCwgNClcbisjZGVmaW5lIFg4Nl9GRUFUVVJFX0RFQ09ERUFTU0lTVFMgICAgICAgS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDBBLCAwLCBFRFgsIDcpXG4gI2RlZmluZSBYODZfRkVBVFVSRV9QQVVTRUZJTFRFUiAgICAgICAgIEtWTV9YODZfQ1BVX0ZFQVRVUkUoMHg4MDAwMDAwQSwgMCwgRURYLCAxMClcbiAjZGVmaW5lIFg4Nl9GRUFUVVJFX1BGVEhSRVNIT0xEICAgICAgICAgS1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDBBLCAwLCBFRFgsIDEyKVxuICNkZWZpbmVcdFg4Nl9GRUFUVVJFX1ZfVk1TQVZFX1ZNTE9BRFx0S1ZNX1g4Nl9DUFVfRkVBVFVSRSgweDgwMDAwMDBBLCAwLCBFRFgsIDE1KVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvc3ZtX25lc3RlZF9kZWNvZGVfYXNzaXN0c190ZXN0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N2bV9uZXN0ZWRfZGVjb2RlX2Fzc2lzdHNfdGVzdC5jXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjZiNWQzOGQ5ZDM2YzQ1XG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0veDg2L3N2bV9uZXN0ZWRfZGVjb2RlX2Fzc2lzdHNfdGVzdC5jXG5AQCAtMCwwICsxLDk5IEBAXG4rLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuKyNpbmNsdWRlIFwidGVzdF91dGlsLmhcIlxuKyNpbmNsdWRlIFwia3ZtX3V0aWwuaFwiXG4rI2luY2x1ZGUgXCJwcm9jZXNzb3IuaFwiXG4rI2luY2x1ZGUgXCJzdm1fdXRpbC5oXCJcbitcbisjZGVmaW5lIEwyX0dVRVNUX1NUQUNLX1NJWkUgNjRcbitcbitzdGF0aWMgdWludDY0X3QgbnBmX3RhcmdldCBfX2FsaWduZWQoUEFHRV9TSVpFKTtcbitcbitzdGF0aWMgdm9pZCBsMl9ndWVzdF9jb2RlKHZvaWQpXG4re1xuK1x0YXNtIHZvbGF0aWxlKFwibW92ICglMCksICUlcmF4XCIgOiA6IFwiclwiKFx1MDAyNm5wZl90YXJnZXQpIDogXCJyYXhcIiwgXCJtZW1vcnlcIik7XG4rXHRHVUVTVF9GQUlMKFwiTDIgYWNjZXNzIGRpZCBub3QgY2F1c2UgYSBuZXN0ZWQgcGFnZSBmYXVsdFwiKTtcbit9XG4rXG4rc3RhdGljIHZvaWQgbDJfdm1tY2FsbF9jb2RlKHZvaWQpXG4re1xuK1x0YXNtIHZvbGF0aWxlKFwidm1tY2FsbFwiKTtcbitcdEdVRVNUX0ZBSUwoXCJMMiBkaWQgbm90IGV4aXQgb24gVk1NQ0FMTFwiKTtcbit9XG4rXG4rLypcbisgKiBXaGVuZXZlciBoYXJkd2FyZSByZXBvcnRzIERlY29kZUFzc2lzdCBpbmZvcm1hdGlvbiAoaW5zbl9sZW4gIT0gMCksIHRoZSBieXRlc1xuKyAqIEtWTSByZWZsZWN0cyBpbnRvIFZNQ0IxMiBtdXN0IGJlIHRoZSBpbnN0cnVjdGlvbiBhdCB0aGUgY3VycmVudCBSSVAsIG5ldmVyXG4rICogc3RhbGUgYnl0ZXMgY2FycmllZCBvdmVyIGZyb20gYSBwcmV2aW91cyBMMiBleGl0LlxuKyAqL1xuK3N0YXRpYyB2b2lkIGFzc2VydF9kZWNvZGVfYXNzaXN0c19zYW5lKHN0cnVjdCB2bWNiICp2bWNiKVxuK3tcbitcdEdVRVNUX0FTU0VSVCh2bWNiLVx1MDAzZWNvbnRyb2wuaW5zbl9sZW4gXHUwMDNjPVxuK1x0XHQgICAgIHNpemVvZih2bWNiLVx1MDAzZWNvbnRyb2wuaW5zbl9ieXRlcykpO1xuK1x0aWYgKHZtY2ItXHUwMDNlY29udHJvbC5pbnNuX2xlbilcbitcdFx0R1VFU1RfQVNTRVJUKCFtZW1jbXAodm1jYi1cdTAwM2Vjb250cm9sLmluc25fYnl0ZXMsXG4rXHRcdFx0XHQgICAgICh2b2lkICopdm1jYi1cdTAwM2VzYXZlLnJpcCxcbitcdFx0XHRcdCAgICAgdm1jYi1cdTAwM2Vjb250cm9sLmluc25fbGVuKSk7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIGwxX2d1ZXN0X2NvZGUoc3RydWN0IHN2bV90ZXN0X2RhdGEgKnN2bSlcbit7XG4rXHR1bnNpZ25lZCBsb25nIGwyX2d1ZXN0X3N0YWNrW0wyX0dVRVNUX1NUQUNLX1NJWkVdO1xuK1x0c3RydWN0IHZtY2IgKnZtY2IgPSBzdm0tXHUwMDNldm1jYjtcbitcbitcdEdVRVNUX0FTU0VSVCh0aGlzX2NwdV9oYXMoWDg2X0ZFQVRVUkVfREVDT0RFQVNTSVNUUykpO1xuK1xuK1x0Z2VuZXJpY19zdm1fc2V0dXAoc3ZtLCBsMl9ndWVzdF9jb2RlLFxuK1x0XHRcdCAgXHUwMDI2bDJfZ3Vlc3Rfc3RhY2tbTDJfR1VFU1RfU1RBQ0tfU0laRV0pO1xuK1xuK1x0LyogQSByZWFsIG5lc3RlZCAjTlBGIG11c3QgcmVmbGVjdCB2YWxpZCBkZWNvZGUgaW5mb3JtYXRpb24gdG8gTDEuICovXG4rXHRydW5fZ3Vlc3Qodm1jYiwgc3ZtLVx1MDAzZXZtY2JfZ3BhKTtcbitcbitcdEdVRVNUX0FTU0VSVF9FUSh2bWNiLVx1MDAzZWNvbnRyb2wuZXhpdF9jb2RlLCBTVk1fRVhJVF9OUEYpO1xuK1x0R1VFU1RfQVNTRVJUKHZtY2ItXHUwMDNlY29udHJvbC5pbnNuX2xlbik7XG4rXHRhc3NlcnRfZGVjb2RlX2Fzc2lzdHNfc2FuZSh2bWNiKTtcbitcbitcdC8qXG4rXHQgKiBSZWRpcmVjdCBMMiBwYXN0IHRoZSBzdGlsbC1mYXVsdGluZyBhY2Nlc3MgdG8gYSBWTU1DQUxMLiAgS1ZNIHJldXNlc1xuK1x0ICogaXRzIGludGVybmFsIFZNQ0IwMiwgd2hpY2ggbm93IGhvbGRzIHRoZSAjTlBGJ3MgZGVjb2RlIGJ5dGVzLCBzbyB0aGlzXG4rXHQgKiBleGVyY2lzZXMgdGhlIHBhdGggdGhhdCBtdXN0IGNsZWFyIERlY29kZUFzc2lzdCBzdGF0ZSBhbmQgZW5zdXJlcyB0aGVcbitcdCAqIHByaW9yIGV4aXQncyBieXRlcyBhcmUgbm90IGxlYWtlZCBpbnRvIGEgc3Vic2VxdWVudCBleGl0LlxuK1x0ICovXG4rXHR2bWNiLVx1MDAzZXNhdmUucmlwID0gKHU2NClsMl92bW1jYWxsX2NvZGU7XG4rXHRydW5fZ3Vlc3Qodm1jYiwgc3ZtLVx1MDAzZXZtY2JfZ3BhKTtcbitcbitcdEdVRVNUX0FTU0VSVF9FUSh2bWNiLVx1MDAzZWNvbnRyb2wuZXhpdF9jb2RlLCBTVk1fRVhJVF9WTU1DQUxMKTtcbitcdGFzc2VydF9kZWNvZGVfYXNzaXN0c19zYW5lKHZtY2IpO1xuK1xuK1x0R1VFU1RfRE9ORSgpO1xuK31cbitcbitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuK3tcbitcdGd2YV90IHN2bV9ndmEsIG5wZl9ndmE7XG4rXHRncGFfdCBucGZfZ3BhO1xuK1x0c3RydWN0IGt2bV92Y3B1ICp2Y3B1O1xuK1x0c3RydWN0IGt2bV92bSAqdm07XG4rXHR1NjQgKnB0ZTtcbitcbitcdFRFU1RfUkVRVUlSRShrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9TVk0pKTtcbitcdFRFU1RfUkVRVUlSRShrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9OUFQpKTtcbitcdFRFU1RfUkVRVUlSRShrdm1fY3B1X2hhcyhYODZfRkVBVFVSRV9ERUNPREVBU1NJU1RTKSk7XG4rXG4rXHR2bSA9IHZtX2NyZWF0ZV93aXRoX29uZV92Y3B1KFx1MDAyNnZjcHUsIGwxX2d1ZXN0X2NvZGUpO1xuK1x0dm1fZW5hYmxlX25wdCh2bSk7XG4rXHR2Y3B1X2FsbG9jX3N2bSh2bSwgXHUwMDI2c3ZtX2d2YSk7XG4rXHRucGZfZ3ZhID0gKGd2YV90KVx1MDAyNm5wZl90YXJnZXQ7XG4rXHRucGZfZ3BhID0gYWRkcl9ndmEyZ3BhKHZtLCBucGZfZ3ZhKTtcbitcbitcdHRkcF9pZGVudGl0eV9tYXBfZGVmYXVsdF9tZW1zbG90cyh2bSk7XG4rXHRwdGUgPSB0ZHBfZ2V0X3B0ZSh2bSwgbnBmX2dwYSk7XG4rXHQqcHRlIFx1MDAyNj0gflBURV9QUkVTRU5UX01BU0soXHUwMDI2dm0tXHUwMDNlc3RhZ2UyX21tdSk7XG4rXG4rXHR2Y3B1X2FyZ3Nfc2V0KHZjcHUsIDEsIHN2bV9ndmEpO1xuK1x0dmNwdV9ydW4odmNwdSk7XG4rXHRURVNUX0FTU0VSVF9LVk1fRVhJVF9SRUFTT04odmNwdSwgS1ZNX0VYSVRfSU8pO1xuK1x0VEVTVF9BU1NFUlRfRVEoZ2V0X3VjYWxsKHZjcHUsIE5VTEwpLCBVQ0FMTF9ET05FKTtcbitcbitcdGt2bV92bV9mcmVlKHZtKTtcbitcdHJldHVybiAwO1xuK31cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjQ1OjAyLjY2NzI5MjU0MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMjEzNTc2MzY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtWTSBQYXRjaCBmb3IgTmVzdGVkIEFNRCBTVk0qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIHRvdWNoaW5nIGBhcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jYCBhbmQgYGFyY2gveDg2L2t2bS9zdm0vc3ZtLmNgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgZm9jdXNlZCBvbiBuZXN0ZWQgdmlydHVhbGl6YXRpb24gd2l0aCBBTUQncyBTZWN1cmUgVmlydHVhbCBNYWNoaW5lIChTVk0pIHRlY2hub2xvZ3kgd2l0aGluIEtWTS4gU3BlY2lmaWNhbGx5LCBJIHNlZSBpdCdzIGludHJvZHVjaW5nIGBuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzYCBhbmQgYG5lc3RlZF9zdm1fY29weV9kZWNvZGVfYXNzaXN0c2AsIGFuZCBtb2RpZnlpbmcgYG5lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sYCwgYG5lc3RlZF9zdm1fdm1leGl0X3VwZGF0ZV92bWNiMTJgLCBhbmQgYG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkYC4gUGx1cywgaXQncyBhZGRpbmcgYFg4Nl9GRUFUVVJFX0RFQ09ERUFTU0lTVFNgIHRvIGBzdm1fc2V0X2NwdV9jYXBzYC4gVGhpcyBhbGwgcG9pbnRzIHRvd2FyZHMgZGVhbGluZyB3aXRoIERlY29kZUFzc2lzdCBkYXRhIGluIGEgbmVzdGVkIFNWTSBlbnZpcm9ubWVudC5cblxuQWgsIHJpZ2h0LCB0aGlzIGlzIGFib3V0IGZpeGluZyBhIHBvdGVudGlhbCBsZWFrLiBJdCdzIG1ha2luZyBzdXJlIHRoYXQgRGVjb2RlQXNzaXN0IGluZm9ybWF0aW9uLCBsaWtlIHRoZSBpbnN0cnVjdGlvbiBieXRlcyBhbmQgbGVuZ3RocywgaXNuJ3QgYmVpbmcgY2FycmllZCBvdmVyIGltcHJvcGVybHkgZnJvbSBvbmUgVk0gZXhpdCB0byB0aGUgbmV4dCBpbiB0aGUgbmVzdGVkIHNjZW5hcmlvLiBTbywgaXQncyBjbGVhcmluZyB0aGUgYXNzaXN0IGRhdGEgYmVmb3JlIHJ1bm5pbmcgdGhlIExldmVsIDIgVk0gYW5kIGNvcHlpbmcgb25seSB3aGVuIGl0J3MgdmFsaWQgZm9yIFZNQ0IwMiBleGl0cy4gVGhhdCdzIGEgY2xhc3NpYyByYWNlIGNvbmRpdGlvbiBvciBkYXRhIGNvcnJ1cHRpb24gZml4LCB0cnlpbmcgdG8gZW5zdXJlIHByb3BlciBpc29sYXRpb24uXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBpbXBhY3RzIHRoZSBleGVjdXRpb24gZmxvdywgd2hpY2ggYWx3YXlzIGRlbWFuZHMgY2FyZWZ1bCBzY3J1dGlueS4gVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgY29kZSBwYXRoIGlzIGFjdHVhbGx5ICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCBzZXR1cC4gSSdtIHRoaW5raW5nIGFib3V0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbGlrZSBHQ0Ugb3IgUUVNVS4gTmVzdGVkIHZpcnR1YWxpemF0aW9uIGlzIGRlZmluaXRlbHkgc3VwcG9ydGVkIGluIGJvdGgsIHNvIGl0J3MgdGVzdGFibGUsIGFuZCBpZiBpdCdzIHRlc3RhYmxlLCBpdCdzIHJlYWNoYWJsZS4gV2FpdCwgd2Fzbid0IHRoZXJlIHNvbWV0aGluZyBhYm91dCBzeXprYWxsZXI/IFN5emthbGxlciBydW5zIGluIFFFTVUsIGFuZCBRRU1VIHN1cHBvcnRzIG5lc3RlZCBTVk0uLi4gc28gKnllcyosIHRoaXMgaXMgZGVmaW5pdGVseSByZWFjaGFibGUgYW5kIHBvdGVudGlhbGx5IGV4cGxvaXRhYmxlLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgY29uZmlndXJhdGlvbiBwcmVyZXF1aXNpdGVzLiBXZSdyZSBnb2luZyB0byBuZWVkIGBDT05GSUdfS1ZNYCBhbmQgYENPTkZJR19LVk1fQU1EYCwgb2J2aW91c2x5LiBUaW1lIHRvIHB1bGwgdXAgdGhlIHNvdXJjZSBhbmQgc2VhcmNoIGZvciB0aG9zZSBmdW5jdGlvbiBuYW1lcywgYG5lc3RlZF9zdm1fdm1leGl0X3VwZGF0ZV92bWNiMTJgIGFuZCBgbmVzdGVkX3N2bV9leGl0X2hhbmRsZWRgLiBJIHdhbnQgdG8gc2VlIHRoZSBjYWxsIGdyYXBocyBhbmQgdW5kZXJzdGFuZCB0aGUgZXhhY3QgY29udGV4dHMgdGhpcyBjb2RlIGV4ZWN1dGVzIGluLCB0aGUgZW50cnkgYW5kIGV4aXQgcG9pbnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDMxLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTM6NDU6MTUuODgwODczNDA4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNTk5MDU4NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmVzdGVkX3N2bV92bWV4aXRfdXBkYXRlX3ZtY2IxMlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTEyMTg9dm9pZCBzdm1fY29weV92bWxvYWRzYXZlX3N0YXRlKHN0cnVjdCB2bWNiICp0b192bWNiLCBzdHJ1Y3Qgdm1jYiAqZnJvbV92bWNiKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMjMzLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTIzNDpzdGF0aWMgaW50IG5lc3RlZF9zdm1fdm1leGl0X3VwZGF0ZV92bWNiMTIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTIzNS17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTEzMTQ9dm9pZCBuZXN0ZWRfc3ZtX3ZtZXhpdChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTMxOS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEzMjA6XFx0aWYgKG5lc3RlZF9zdm1fdm1leGl0X3VwZGF0ZV92bWNiMTIodmNwdSkpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMzIxLVxcdFxcdGt2bV9tYWtlX3JlcXVlc3QoS1ZNX1JFUV9UUklQTEVfRkFVTFQsIHZjcHUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzo0NToxOC45NDA3OTM2MDdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjcyOTA2NzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqS1ZNX0FNRCBDb25maWd1cmF0aW9uIFJldmlldyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHNwZWNpZmljYWxseSB0YXJnZXQgdGhlIGBLVk1fQU1EYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBpdHMgY3VycmVudCBzdGF0ZSBhbmQgZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbS4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCB3b3JrIGJlZ2lucywgdHJhY2luZyB0aHJvdWdoIHRoZSBuZXN0ZWQgY29uZmlndXJhdGlvbnMsIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuIG9yIG9wcG9ydHVuaXR5LiBXaGF0IGFyZSB0aGUgYXNzb2NpYXRlZCBmZWF0dXJlcz8gQXJlIHRoZXJlIGFueSBuZXdseSBpbnRyb2R1Y2VkIGRlcGVuZGVuY2llcyBvciBjb25mbGljdHMgSSBzaG91bGQgYmUgYXdhcmUgb2YsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIHJhcGlkIHBhY2Ugb2YgY2hhbmdlIGluIGJvdGggQU1EIGhhcmR3YXJlIGFuZCBLVk0gaXRzZWxmPyBJJ2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBncmVwIHRvIG1ha2Ugc3VyZSBJIGdldCBhIGNvbXByZWhlbnNpdmUgb3ZlcnZpZXcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MTYsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzo0NToyMi4yMTM3MDM5MjFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAyNjUxNDQ3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNX0FNRFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMzQ9Y29uZmlnIEtWTV9JTlRFTF9URFhcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDY6Y29uZmlnIEtWTV9BTURcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVxcdGJvb2wgXFxcIkFNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjQ1OjI1LjI0MDIyNTg4NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4MTcwNDczMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKktWTV9BTUQgYW5kIE5lc3RlZCBTVk0gQ29uZmlndXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBLVk0gc2V0dXAgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIGBLVk1fQU1EYC4gVGhhdCBzZWVtcyBsaWtlIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24sIHRoZSBmb3VuZGF0aW9uLiBCdXQgSSBjYW4ndCBoZWxwIGJ1dCB3b25kZXIuLi4gaXMgdGhlcmUgYSAqc3BlY2lmaWMqIGNvbmZpZ3VyYXRpb24sIGEgcGFydGljdWxhciBmbGFnLCBhIHNwZWNpYWwgc2V0dGluZywgZm9yIG5lc3RlZCBTVk0/IFdlJ3JlIGRlYWxpbmcgd2l0aCB2aXJ0dWFsaXphdGlvbiB3aXRoaW4gdmlydHVhbGl6YXRpb24gaGVyZSwgYW5kIEkga25vdyB0aGF0IGFkZHMgYW5vdGhlciBsYXllciBvZiBjb21wbGV4aXR5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBjcml0aWNhbCBmb3Igb3B0aW1hbCBwZXJmb3JtYW5jZSBhbmQgc3RhYmlsaXR5IHdpdGhpbiB0aGF0IG5lc3RlZCBlbnZpcm9ubWVudC4gVGltZSB0byBkaWcgZGVlcGVyIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBkb2N1bWVudGVkIG9yIHN1Z2dlc3RlZCBjdXN0b21pemF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk4OCwiT3V0cHV0VG9rZW5zIjoxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDEzOjQ1OjI4LjA1NzI3NTc2NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODkzNTIyOTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5lc3RlZF9zdm1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1MzYgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmM9OT12b2lkIHN2bV9odl9pbmplY3Rfc3ludGhldGljX3ZtZXhpdF9wb3N0X3RsYl9mbHVzaChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5jLTIxLVxcdHN2bS1cXHUwMDNldm1jYi1cXHUwMDNlY29udHJvbC5leGl0X2luZm9fMiA9IDA7XFxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuYzoyMjpcXHRuZXN0ZWRfc3ZtX3ZtZXhpdChzdm0pO1xcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmMtMjMtfVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaC0xNC0jaWZkZWYgQ09ORklHX0tWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oOjE1OnN0YXRpYyBpbmxpbmUgdm9pZCBuZXN0ZWRfc3ZtX2h2X3VwZGF0ZV92bV92cF9pZHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmgtMTYte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaC0yOC1cXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oOjI5OnN0YXRpYyBpbmxpbmUgYm9vbCBuZXN0ZWRfc3ZtX2wyX3RsYl9mbHVzaF9lbmFibGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oLTMwLXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmgtNDMtXFxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaDo0NDpzdGF0aWMgaW5saW5lIGJvb2wgbmVzdGVkX3N2bV9pc19sMl90bGJfZmx1c2hfaGNhbGwoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmgtNDUte1xcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LmgtNDYtXFx0cmV0dXJuIGd1ZXN0X2h2X2NwdWlkX2hhc19sMl90bGJfZmx1c2godmNwdSkgXFx1MDAyNlxcdTAwMjZcXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oOjQ3OlxcdCAgICAgICBuZXN0ZWRfc3ZtX2wyX3RsYl9mbHVzaF9lbmFibGVkKHZjcHUpIFxcdTAwMjZcXHUwMDI2XFxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaC00OC1cXHQgICAgICAga3ZtX2h2X2lzX3RsYl9mbHVzaF9oY2FsbCh2Y3B1KTtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2Lmg9NTE9dm9pZCBzdm1faHZfaW5qZWN0X3N5bnRoZXRpY192bWV4aXRfcG9zdF90bGJfZmx1c2goc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oLTUyLSNlbHNlIC8qIENPTkZJR19LVk1fSFlQRVJWICovXFxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaDo1MzpzdGF0aWMgaW5saW5lIHZvaWQgbmVzdGVkX3N2bV9odl91cGRhdGVfdm1fdnBfaWRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkge31cXG5hcmNoL3g4Ni9rdm0vc3ZtL2h5cGVydi5oOjU0OnN0YXRpYyBpbmxpbmUgYm9vbCBuZXN0ZWRfc3ZtX2lzX2wyX3RsYl9mbHVzaF9oY2FsbChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC94ODYva3ZtL3N2bS9oeXBlcnYuaC01NS17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTM1LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MzY6c3RhdGljIHZvaWQgbmVzdGVkX3N2bV9jbGVhcl9kZWNvZGVfYXNzaXN0cyhzdHJ1Y3Qgdm1jYiAqdm1jYilcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTM3LXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNDItXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo0MzpzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX2NvcHlfZGVjb2RlX2Fzc2lzdHMoc3RydWN0IHZtY2IgKnRvLCBzdHJ1Y3Qgdm1jYiAqZnJvbSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQ0LXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNDYtXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo0NzpcXHRuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHRvKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQ4LVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy02Mi1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjYzOnN0YXRpYyB2b2lkIG5lc3RlZF9zdm1faW5qZWN0X25wZl9leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTY0LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgeDg2X2V4Y2VwdGlvbiAqZmF1bHQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTgxLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6ODI6XFx0bmVzdGVkX3N2bV92bWV4aXQoc3ZtKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTgzLX1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTg0LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6ODU6c3RhdGljIHU2NCBuZXN0ZWRfc3ZtX2dldF90ZHBfcGRwdHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgaW5kZXgpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy04Ni17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwMi1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEwMzpzdGF0aWMgdW5zaWduZWQgbG9uZyBuZXN0ZWRfc3ZtX2dldF90ZHBfY3IzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwNC17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwOS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjExMDpzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX2luaXRfbW11X2NvbnRleHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTExLXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTI1LVxcdFxcdFxcdFxcdHN2bS1cXHUwMDNlbmVzdGVkLmN0bC5uZXN0ZWRfY3IzKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEyNjpcXHR2Y3B1LVxcdTAwM2VhcmNoLm1tdS1cXHUwMDNlZ2V0X2d1ZXN0X3BnZCAgICAgPSBuZXN0ZWRfc3ZtX2dldF90ZHBfY3IzO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTI3OlxcdHZjcHUtXFx1MDAzZWFyY2gubW11LVxcdTAwM2VnZXRfcGRwdHIgICAgICAgICA9IG5lc3RlZF9zdm1fZ2V0X3RkcF9wZHB0cjtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEyODpcXHR2Y3B1LVxcdTAwM2VhcmNoLm1tdS1cXHUwMDNlaW5qZWN0X3BhZ2VfZmF1bHQgPSBuZXN0ZWRfc3ZtX2luamVjdF9ucGZfZXhpdDtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEyOS1cXHR2Y3B1LVxcdTAwM2VhcmNoLndhbGtfbW11ICAgICAgICAgICAgICA9IFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLm5lc3RlZF9tbXU7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEzMS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEzMjpzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX3VuaW5pdF9tbXVfY29udGV4dChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMzMte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xNTI9dm9pZCBuZXN0ZWRfdm1jYjAyX3JlY2FsY19pbnRlcmNlcHRzKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMjItICovXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyMjM6c3RhdGljIGludCBuZXN0ZWRfc3ZtX21zcnBtX21lcmdlX29mZnNldHNbMTBdIF9fcm9fYWZ0ZXJfaW5pdDtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjIyNDpzdGF0aWMgaW50IG5lc3RlZF9zdm1fbnJfbXNycG1fbWVyZ2Vfb2Zmc2V0cyBfX3JvX2FmdGVyX2luaXQ7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMjUtdHlwZWRlZiB1bnNpZ25lZCBsb25nIG5zdm1fbXNycG1fbWVyZ2VfdDtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTIyNi1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjIyNzppbnQgX19pbml0IG5lc3RlZF9zdm1faW5pdF9tc3JwbV9tZXJnZV9vZmZzZXRzKHZvaWQpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMjgte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yODItXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyODM6XFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIG5lc3RlZF9zdm1fbnJfbXNycG1fbWVyZ2Vfb2Zmc2V0czsgaisrKSB7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyODQ6XFx0XFx0XFx0aWYgKG5lc3RlZF9zdm1fbXNycG1fbWVyZ2Vfb2Zmc2V0c1tqXSA9PSBvZmZzZXQpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yODUtXFx0XFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTI4Ny1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjI4ODpcXHRcXHRpZiAoaiBcXHUwMDNjIG5lc3RlZF9zdm1fbnJfbXNycG1fbWVyZ2Vfb2Zmc2V0cylcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTI4OS1cXHRcXHRcXHRjb250aW51ZTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTI5MC1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjI5MTpcXHRcXHRpZiAoV0FSTl9PTihqIFxcdTAwM2U9IEFSUkFZX1NJWkUobmVzdGVkX3N2bV9tc3JwbV9tZXJnZV9vZmZzZXRzKSkpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yOTItXFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yOTMtXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyOTQ6XFx0XFx0bmVzdGVkX3N2bV9tc3JwbV9tZXJnZV9vZmZzZXRzW2pdID0gb2Zmc2V0O1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6Mjk1OlxcdFxcdG5lc3RlZF9zdm1fbnJfbXNycG1fbWVyZ2Vfb2Zmc2V0cysrO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMjk2LVxcdH1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzA1LSAqL1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MzA2OnN0YXRpYyBib29sIG5lc3RlZF9zdm1fbWVyZ2VfbXNycG0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzA3LXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzM0LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MzM1OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBuZXN0ZWRfc3ZtX25yX21zcnBtX21lcmdlX29mZnNldHM7IGkrKykge1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MzM2OlxcdFxcdGNvbnN0IGludCBwID0gbmVzdGVkX3N2bV9tc3JwbV9tZXJnZV9vZmZzZXRzW2ldO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzM3LVxcdFxcdG5zdm1fbXNycG1fbWVyZ2VfdCBsMV92YWw7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTM2MC0gKi9cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjM2MTpzdGF0aWMgYm9vbCBuZXN0ZWRfc3ZtX2NoZWNrX2JpdG1hcF9wYShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCBwYSwgdTMyIHNpemUpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0zNjIte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0zNjgtXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzozNjk6c3RhdGljIGJvb2wgbmVzdGVkX3N2bV9ldmVudF9pbmpfdmFsaWRfZXhlcHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1OCB2ZWN0b3IpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0zNzAte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0zOTctICovXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzozOTg6c3RhdGljIGJvb2wgbmVzdGVkX3N2bV9jaGVja19ldmVudF9pbmooc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgZXZlbnRfaW5qKVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMzk5LXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNDEwLVxcdGlmICh0eXBlID09IFNWTV9FVlRJTkpfVFlQRV9FWEVQVCBcXHUwMDI2XFx1MDAyNlxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NDExOlxcdCAgICAhbmVzdGVkX3N2bV9ldmVudF9pbmpfdmFsaWRfZXhlcHQodmNwdSwgdmVjdG9yKSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQxMi1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTQxNz1zdGF0aWMgYm9vbCBuZXN0ZWRfdm1jYl9jaGVja19jb250cm9scyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQyOS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjQzMDpcXHRpZiAoQ0MoIW5lc3RlZF9zdm1fY2hlY2tfYml0bWFwX3BhKHZjcHUsIGNvbnRyb2wtXFx1MDAzZW1zcnBtX2Jhc2VfcGEsXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy00MzEtXFx0XFx0XFx0XFx0XFx0ICAgTVNSUE1fU0laRSkpKVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNDMyLVxcdFxcdHJldHVybiBmYWxzZTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjQzMzpcXHRpZiAoQ0MoIW5lc3RlZF9zdm1fY2hlY2tfYml0bWFwX3BhKHZjcHUsIGNvbnRyb2wtXFx1MDAzZWlvcG1fYmFzZV9wYSxcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQzNC1cXHRcXHRcXHRcXHRcXHQgICBJT1BNX1NJWkUpKSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNDQxLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NDQyOlxcdGlmIChDQyghbmVzdGVkX3N2bV9jaGVja19ldmVudF9pbmoodmNwdSwgY29udHJvbC1cXHUwMDNlZXZlbnRfaW5qKSkpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy00NDMtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz00NDk9c3RhdGljIGJvb2wgbmVzdGVkX3ZtY2JfY2hlY2tfc2F2ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQ4Ny1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjQ4ODppbnQgbmVzdGVkX3N2bV9jaGVja19jYWNoZWRfdm1jYjEyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTQ4OS17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTUwMi0gKi9cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjUwMzojZGVmaW5lIF9fbmVzdGVkX3N2bV9zYW5pdGl6ZV9pbnRlcmNlcHQoX192Y3B1LCBfX2NvbnRyb2wsIGZuYW1lLCBpbmFtZSlcXHRcXFxcXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy01MDQtZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNTA4LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NTA5OiNkZWZpbmUgbmVzdGVkX3N2bV9zYW5pdGl6ZV9pbnRlcmNlcHQoX192Y3B1LCBfX2NvbnRyb2wsIG5hbWUpXFx0XFx0XFx0XFxcXFxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NTEwOlxcdF9fbmVzdGVkX3N2bV9zYW5pdGl6ZV9pbnRlcmNlcHQoX192Y3B1LCBfX2NvbnRyb2wsIG5hbWUsIG5hbWUpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy01MTEtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTUxMz12b2lkIF9fbmVzdGVkX2NvcHlfdm1jYl9jb250cm9sX3RvX2NhY2hlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNTIxLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NTIyOlxcdF9fbmVzdGVkX3N2bV9zYW5pdGl6ZV9pbnRlcmNlcHQodmNwdSwgdG8sIFhTQVZFLCBYU0VUQlYpO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6NTIzOlxcdG5lc3RlZF9zdm1fc2FuaXRpemVfaW50ZXJjZXB0KHZjcHUsIHRvLCBJTlZQQ0lEKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjUyNDpcXHRuZXN0ZWRfc3ZtX3Nhbml0aXplX2ludGVyY2VwdCh2Y3B1LCB0bywgUkRUU0NQKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjUyNTpcXHRuZXN0ZWRfc3ZtX3Nhbml0aXplX2ludGVyY2VwdCh2Y3B1LCB0bywgU0tJTklUKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjUyNjpcXHRuZXN0ZWRfc3ZtX3Nhbml0aXplX2ludGVyY2VwdCh2Y3B1LCB0bywgUkRQUlUpO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNTI3LVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz02NTE9c3RhdGljIHZvaWQgbmVzdGVkX3NhdmVfcGVuZGluZ19ldmVudF90b192bWNiMTIoc3RydWN0IHZjcHVfc3ZtICpzdm0sXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTY4My1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjY4NDpzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX3RyYW5zaXRpb25fdGxiX2ZsdXNoKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTY4NS17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTcwOS0gKi9cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjcxMDpzdGF0aWMgaW50IG5lc3RlZF9zdm1fbG9hZF9jcjMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIGNyMyxcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTcxMS1cXHRcXHRcXHQgICAgICAgYm9vbCBuZXN0ZWRfbnB0LCBib29sIHJlbG9hZF9wZHB0cnMpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTg1MD1zdGF0aWMgdm9pZCBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfY29udHJvbChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtODU5LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6ODYwOlxcdG5lc3RlZF9zdm1fdHJhbnNpdGlvbl90bGJfZmx1c2godmNwdSk7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy04NjEtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTg2OS1cXHQgKi9cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjg3MDpcXHRuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzKHZtY2IwMik7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy04NzEtXFx0c3ZtLVxcdTAwM2VuZXN0ZWQuZGVjb2RlX2Fzc2lzdHNfdmFsaWQgPSBmYWxzZTtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtOTM3LVxcdGlmIChuZXN0ZWRfbnB0X2VuYWJsZWQoc3ZtKSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjkzODpcXHRcXHRuZXN0ZWRfc3ZtX2luaXRfbW11X2NvbnRleHQodmNwdSk7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy05MzktXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTk0Ny1cXHQgICAgc3ZtLVxcdTAwM2V0c2NfcmF0aW9fbXNyICE9IGt2bV9jYXBzLmRlZmF1bHRfdHNjX3NjYWxpbmdfcmF0aW8pXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo5NDg6XFx0XFx0bmVzdGVkX3N2bV91cGRhdGVfdHNjX3JhdGlvX21zcih2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTk0OS1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTAxNi1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEwMTc6c3RhdGljIHZvaWQgbmVzdGVkX3N2bV9jb3B5X2NvbW1vbl9zdGF0ZShzdHJ1Y3Qgdm1jYiAqZnJvbV92bWNiLCBzdHJ1Y3Qgdm1jYiAqdG9fdm1jYilcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwMTgte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xMDI5PWludCBlbnRlcl9zdm1fZ3Vlc3RfbW9kZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB2bWNiMTJfZ3BhLCBib29sIGZyb21fdm1ydW4pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwNTctXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMDU4OlxcdG5lc3RlZF9zdm1fY29weV9jb21tb25fc3RhdGUoc3ZtLVxcdTAwM2V2bWNiMDEucHRyLCBzdm0tXFx1MDAzZW5lc3RlZC52bWNiMDIucHRyKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwNTktXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwNjMtXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMDY0OlxcdHJldCA9IG5lc3RlZF9zdm1fbG9hZF9jcjMoXFx1MDAyNnN2bS1cXHUwMDNldmNwdSwgc3ZtLVxcdTAwM2VuZXN0ZWQuc2F2ZS5jcjMsXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDY1LVxcdFxcdFxcdFxcdCAgbmVzdGVkX25wdF9lbmFibGVkKHN2bSksIGZyb21fdm1ydW4pO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDc2LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTA3NzpcXHRuZXN0ZWRfc3ZtX2h2X3VwZGF0ZV92bV92cF9pZHModmNwdSk7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDc4LVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDgxLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTA4MjpzdGF0aWMgaW50IG5lc3RlZF9zdm1fY29weV92bWNiMTJfdG9fY2FjaGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1NjQgdm1jYjEyX2dwYSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwODMte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDk1LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTA5NjpcXHRpZiAobmVzdGVkX3N2bV9jaGVja19jYWNoZWRfdm1jYjEyKHZjcHUpIFxcdTAwM2MgMCkge1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTA5Ny1cXHRcXHR2bWNiMTItXFx1MDAzZWNvbnRyb2wuZXhpdF9jb2RlID0gU1ZNX0VYSVRfRVJSO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTA5LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTExMDppbnQgbmVzdGVkX3N2bV92bXJ1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTExLXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTE0Mi1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjExNDM6XFx0cmV0ID0gbmVzdGVkX3N2bV9jb3B5X3ZtY2IxMl90b19jYWNoZSh2Y3B1LCB2bWNiMTJfZ3BhKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTExNDQtXFx0aWYgKHJldCkge1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTcwLVxcdGlmIChlbnRlcl9zdm1fZ3Vlc3RfbW9kZSh2Y3B1LCB2bWNiMTJfZ3BhLCB0cnVlKSB8fFxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTE3MTpcXHQgICAgIW5lc3RlZF9zdm1fbWVyZ2VfbXNycG0odmNwdSkpIHtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTExNzItXFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5uZXN0ZWRfcnVuX3BlbmRpbmcgPSAwO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMTc5LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTE4MDpcXHRcXHRuZXN0ZWRfc3ZtX3ZtZXhpdChzdm0pO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTE4MS1cXHR9XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTEyMTg9dm9pZCBzdm1fY29weV92bWxvYWRzYXZlX3N0YXRlKHN0cnVjdCB2bWNiICp0b192bWNiLCBzdHJ1Y3Qgdm1jYiAqZnJvbV92bWNiKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMjMzLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTIzNDpzdGF0aWMgaW50IG5lc3RlZF9zdm1fdm1leGl0X3VwZGF0ZV92bWNiMTIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTIzNS17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEyODktXFx0ICAgIGd1ZXN0X2NwdV9jYXBfaGFzKHZjcHUsIFg4Nl9GRUFUVVJFX0RFQ09ERUFTU0lTVFMpKVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTI5MDpcXHRcXHRuZXN0ZWRfc3ZtX2NvcHlfZGVjb2RlX2Fzc2lzdHModm1jYjEyLCB2bWNiMDIpO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTI5MS1cXHRlbHNlXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMjkyOlxcdFxcdG5lc3RlZF9zdm1fY2xlYXJfZGVjb2RlX2Fzc2lzdHModm1jYjEyKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEyOTMtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEzMTMtXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMzE0OnZvaWQgbmVzdGVkX3N2bV92bWV4aXQoc3RydWN0IHZjcHVfc3ZtICpzdm0pXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMzE1LXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTMxOS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEzMjA6XFx0aWYgKG5lc3RlZF9zdm1fdm1leGl0X3VwZGF0ZV92bWNiMTIodmNwdSkpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMzIxLVxcdFxcdGt2bV9tYWtlX3JlcXVlc3QoS1ZNX1JFUV9UUklQTEVfRkFVTFQsIHZjcHUpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMzQwLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTM0MTpcXHRuZXN0ZWRfc3ZtX2NvcHlfY29tbW9uX3N0YXRlKHN2bS1cXHUwMDNlbmVzdGVkLnZtY2IwMi5wdHIsIHN2bS1cXHUwMDNldm1jYjAxLnB0cik7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMzQyLVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNDI3LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTQyODpcXHRuZXN0ZWRfc3ZtX3RyYW5zaXRpb25fdGxiX2ZsdXNoKHZjcHUpO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTQyOS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE0MzA6XFx0bmVzdGVkX3N2bV91bmluaXRfbW11X2NvbnRleHQodmNwdSk7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNDMxLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTQzMjpcXHRpZiAobmVzdGVkX3N2bV9sb2FkX2NyMyh2Y3B1LCB2bWNiMDEtXFx1MDAzZXNhdmUuY3IzLCBmYWxzZSwgdHJ1ZSkpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNDMzLVxcdFxcdGt2bV9tYWtlX3JlcXVlc3QoS1ZNX1JFUV9UUklQTEVfRkFVTFQsIHZjcHUpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNDYzLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTQ2NDpzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX3RyaXBsZV9mYXVsdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNDY1LXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTQ3MS1cXHRrdm1fY2xlYXJfcmVxdWVzdChLVk1fUkVRX1RSSVBMRV9GQVVMVCwgdmNwdSk7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNDcyOlxcdG5lc3RlZF9zdm1fc2ltcGxlX3ZtZXhpdCh0b19zdm0odmNwdSksIFNWTV9FWElUX1NIVVRET1dOKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE0NzMtfVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xNTI2PXZvaWQgc3ZtX2xlYXZlX25lc3RlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE1MzctXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNTM4OlxcdFxcdG5lc3RlZF9zdm1fdW5pbml0X21tdV9jb250ZXh0KHZjcHUpO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTUzOS1cXHRcXHR2bWNiX21hcmtfYWxsX2RpcnR5KHN2bS1cXHUwMDNldm1jYik7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE1NDktXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNTUwOnN0YXRpYyBpbnQgbmVzdGVkX3N2bV9leGl0X2hhbmRsZWRfbXNyKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTU1MS17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE1NzQtXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNTc1OnN0YXRpYyBpbnQgbmVzdGVkX3N2bV9pbnRlcmNlcHRfaW9pbyhzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE1NzYte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNTk5LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTYwMDpzdGF0aWMgaW50IG5lc3RlZF9zdm1faW50ZXJjZXB0KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTYwMS17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2MDktXFx0Y2FzZSBTVk1fRVhJVF9NU1I6XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNjEwOlxcdFxcdHZtZXhpdCA9IG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkX21zcihzdm0pO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTYxMS1cXHRcXHRicmVhaztcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2MTItXFx0Y2FzZSBTVk1fRVhJVF9JT0lPOlxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTYxMzpcXHRcXHR2bWV4aXQgPSBuZXN0ZWRfc3ZtX2ludGVyY2VwdF9pb2lvKHN2bSk7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjE0LVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjE3LVxcdFxcdCAqIEhvc3QtaW50ZXJjZXB0ZWQgZXhjZXB0aW9ucyBoYXZlIGJlZW4gY2hlY2tlZCBhbHJlYWR5IGluXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNjE4OlxcdFxcdCAqIG5lc3RlZF9zdm1fZXhpdF9zcGVjaWFsLiAgVGhlcmUgaXMgbm90aGluZyB0byBkbyBoZXJlLFxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTYxOS1cXHRcXHQgKiB0aGUgdm1leGl0IGlzIGluamVjdGVkIGJ5IHN2bV9jaGVja19uZXN0ZWRfZXZlbnRzLlxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjMxLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTYzMjppbnQgbmVzdGVkX3N2bV9leGl0X2hhbmRsZWQoc3RydWN0IHZjcHVfc3ZtICpzdm0pXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjMzLXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTYzNS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE2MzY6XFx0dm1leGl0ID0gbmVzdGVkX3N2bV9pbnRlcmNlcHQoc3ZtKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2MzctXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2NDAtXFx0XFx0c3ZtLVxcdTAwM2VuZXN0ZWQuZGVjb2RlX2Fzc2lzdHNfdmFsaWQgPSB0cnVlO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTY0MTpcXHRcXHRuZXN0ZWRfc3ZtX3ZtZXhpdChzdm0pO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTY0Mi1cXHR9XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2NDYtXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNjQ3OmludCBuZXN0ZWRfc3ZtX2NoZWNrX3Blcm1pc3Npb25zKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2NDgte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjYxLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTY2MjpzdGF0aWMgYm9vbCBuZXN0ZWRfc3ZtX2lzX2V4Y2VwdGlvbl92bWV4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1OCB2ZWN0b3IsXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjYzLVxcdFxcdFxcdFxcdFxcdCAgIHUzMiBlcnJvcl9jb2RlKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNjY5LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTY3MDpzdGF0aWMgdm9pZCBuZXN0ZWRfc3ZtX2luamVjdF9leGNlcHRpb25fdm1leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2NzEte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNzAxLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTcwMjpcXHRuZXN0ZWRfc3ZtX3ZtZXhpdChzdm0pO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTcwMy19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTE3MTA9c3RhdGljIGludCBzdm1fY2hlY2tfbmVzdGVkX2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE3MzQtXFx0XFx0XFx0cmV0dXJuIDA7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNzM1OlxcdFxcdG5lc3RlZF9zdm1fc2ltcGxlX3ZtZXhpdChzdm0sIFNWTV9FWElUX0lOSVQpO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTczNi1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc0MS0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVCVVNZO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTc0MjpcXHRcXHRuZXN0ZWRfc3ZtX2luamVjdF9leGNlcHRpb25fdm1leGl0KHZjcHUpO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc0My1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc1Ny1cXHRcXHRcXHRyZXR1cm4gMDtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE3NTg6XFx0XFx0bmVzdGVkX3N2bV9zaW1wbGVfdm1leGl0KHN2bSwgU1ZNX0VYSVRfU01JKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE3NTktXFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE3NjctXFx0XFx0XFx0cmV0dXJuIDA7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNzY4OlxcdFxcdG5lc3RlZF9zdm1fc2ltcGxlX3ZtZXhpdChzdm0sIFNWTV9FWElUX05NSSk7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNzY5LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNzc3LVxcdFxcdHRyYWNlX2t2bV9uZXN0ZWRfaW50cl92bWV4aXQoc3ZtLVxcdTAwM2V2bWNiLVxcdTAwM2VzYXZlLnJpcCk7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNzc4OlxcdFxcdG5lc3RlZF9zdm1fc2ltcGxlX3ZtZXhpdChzdm0sIFNWTV9FWElUX0lOVFIpO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc3OS1cXHRcXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc4NC1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE3ODU6aW50IG5lc3RlZF9zdm1fZXhpdF9zcGVjaWFsKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTc4Ni17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE4MDgtXFx0XFx0LyogSHlwZXItViBMMiBUTEIgZmx1c2ggaHlwZXJjYWxsIGlzIGhhbmRsZWQgYnkgTDAgKi9cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE4MDk6XFx0XFx0aWYgKG5lc3RlZF9zdm1faXNfbDJfdGxiX2ZsdXNoX2hjYWxsKHZjcHUpKVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTgxMC1cXHRcXHRcXHRyZXR1cm4gTkVTVEVEX0VYSVRfSE9TVDtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTgxOC1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE4MTk6dm9pZCBuZXN0ZWRfc3ZtX3VwZGF0ZV90c2NfcmF0aW9fbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE4MjAte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xOTMyPXN0YXRpYyBpbnQgc3ZtX3NldF9uZXN0ZWRfc3RhdGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMDA2LVxcdCAqIFZhbGlkYXRlIGhvc3Qgc3RhdGUgc2F2ZWQgZnJvbSBiZWZvcmUgVk1SVU4gKHNlZVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MjAwNzpcXHQgKiBuZXN0ZWRfc3ZtX2NoZWNrX3Blcm1pc3Npb25zKS5cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTIwMDgtXFx0ICovXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTIwNTUtXFx0ICovXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyMDU2OlxcdHJldCA9IG5lc3RlZF9zdm1fbG9hZF9jcjMoXFx1MDAyNnN2bS1cXHUwMDNldmNwdSwgdmNwdS1cXHUwMDNlYXJjaC5jcjMsXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMDU3LVxcdFxcdFxcdFxcdCAgbmVzdGVkX25wdF9lbmFibGVkKHN2bSksIGZhbHNlKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MjA3NT1zdGF0aWMgYm9vbCBzdm1fZ2V0X25lc3RlZF9zdGF0ZV9wYWdlcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTIwODktXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyMDkwOlxcdGlmICghbmVzdGVkX3N2bV9tZXJnZV9tc3JwbSh2Y3B1KSkge1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMjA5MS1cXHRcXHR2Y3B1LVxcdTAwM2VydW4tXFx1MDAzZWV4aXRfcmVhc29uID0gS1ZNX0VYSVRfSU5URVJOQUxfRVJST1I7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTIxMDQ9c3RydWN0IGt2bV94ODZfbmVzdGVkX29wcyBzdm1fbmVzdGVkX29wcyA9IHtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTIxMDUtXFx0LmxlYXZlX25lc3RlZCA9IHN2bV9sZWF2ZV9uZXN0ZWQsXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyMTA2OlxcdC5pc19leGNlcHRpb25fdm1leGl0ID0gbmVzdGVkX3N2bV9pc19leGNlcHRpb25fdm1leGl0LFxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMjEwNy1cXHQuY2hlY2tfZXZlbnRzID0gc3ZtX2NoZWNrX25lc3RlZF9ldmVudHMsXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyMTA4OlxcdC50cmlwbGVfZmF1bHQgPSBuZXN0ZWRfc3ZtX3RyaXBsZV9mYXVsdCxcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTIxMDktXFx0LmdldF9uZXN0ZWRfc3RhdGVfcGFnZXMgPSBzdm1fZ2V0X25lc3RlZF9zdGF0ZV9wYWdlcyxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MjE5OT1zdGF0aWMgaW50IHZtbG9hZF92bXNhdmVfaW50ZXJjZXB0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCB2bWxvYWQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTIyMDYtXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzoyMjA3OlxcdGlmIChuZXN0ZWRfc3ZtX2NoZWNrX3Blcm1pc3Npb25zKHZjcHUpKVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjIwOC1cXHRcXHRyZXR1cm4gMTtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MjI0Nj1zdGF0aWMgaW50IHZtcnVuX2ludGVyY2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMjQ3LXtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjIyNDg6XFx0aWYgKG5lc3RlZF9zdm1fY2hlY2tfcGVybWlzc2lvbnModmNwdSkpXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMjQ5LVxcdFxcdHJldHVybiAxO1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjI1MC1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjIyNTE6XFx0cmV0dXJuIG5lc3RlZF9zdm1fdm1ydW4odmNwdSk7XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMjUyLX1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MjI4Nj1zdGF0aWMgaW50IGdwX2ludGVyY2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTIzMDUtXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzoyMzA2OlxcdFxcdGlmIChuZXN0ZWRfc3ZtX2NoZWNrX3Blcm1pc3Npb25zKHZjcHUpKVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjMwNy1cXHRcXHRcXHRyZXR1cm4gMTtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjMxNy1cXHRcXHQgKi9cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjIzMTg6XFx0XFx0bmVzdGVkX3N2bV9zaW1wbGVfdm1leGl0KHN2bSwgc3ZtX2V4aXRfY29kZSk7XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMzE5LVxcdFxcdHJldHVybiAxO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0yMzY2PXN0YXRpYyBpbnQgc3RnaV9pbnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMzY5LVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MjM3MDpcXHRpZiAobmVzdGVkX3N2bV9jaGVja19wZXJtaXNzaW9ucyh2Y3B1KSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTIzNzEtXFx0XFx0cmV0dXJuIDE7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTIzNzg9c3RhdGljIGludCBjbGdpX2ludGVyY2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTIzODEtXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzoyMzgyOlxcdGlmIChuZXN0ZWRfc3ZtX2NoZWNrX3Blcm1pc3Npb25zKHZjcHUpKVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjM4My1cXHRcXHRyZXR1cm4gMTtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MjM5MD1zdGF0aWMgaW50IGludmxwZ2FfaW50ZXJjZXB0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjM5NC1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjIzOTU6XFx0aWYgKG5lc3RlZF9zdm1fY2hlY2tfcGVybWlzc2lvbnModmNwdSkpXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yMzk2LVxcdFxcdHJldHVybiAxO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0yNTMxPXN0YXRpYyBib29sIGNoZWNrX3NlbGVjdGl2ZV9jcjBfaW50ZXJjZXB0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0yNTQ2LVxcdFxcdHN2bS1cXHUwMDNldm1jYi1cXHUwMDNlY29udHJvbC5leGl0X2NvZGUgPSBTVk1fRVhJVF9DUjBfU0VMX1dSSVRFO1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MjU0NzpcXHRcXHRyZXQgPSAobmVzdGVkX3N2bV9leGl0X2hhbmRsZWQoc3ZtKSA9PSBORVNURURfRVhJVF9ET05FKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI1NDgtXFx0fVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz0yOTM4PXN0YXRpYyBpbnQgc3ZtX3NldF9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcilcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjk3NS1cXHRcXHQgICAgaXNfZ3Vlc3RfbW9kZSh2Y3B1KSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjI5NzY6XFx0XFx0XFx0bmVzdGVkX3N2bV91cGRhdGVfdHNjX3JhdGlvX21zcih2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI5NzctXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTMwMTAtXFx0XFx0ICogVGhlIGhhbmRsaW5nIG9mIHRoZSBNU1IgYml0bWFwIGZvciBMMiBndWVzdHMgaXMgZG9uZSBpblxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MzAxMTpcXHRcXHQgKiBuZXN0ZWRfc3ZtX21lcmdlX21zcnBtKCkuXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zMDEyLVxcdFxcdCAqIFdlIHVwZGF0ZSB0aGUgTDEgTVNSIGJpdCBhcyB3ZWxsIHNpbmNlIGl0IHdpbGwgZW5kIHVwXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTMyNzA9c3RhdGljIGludCB2bW1jYWxsX2ludGVyY2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTMyNzctXFx0ICovXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzozMjc4OlxcdGlmIChpc19ndWVzdF9tb2RlKHZjcHUpIFxcdTAwMjZcXHUwMDI2ICFuZXN0ZWRfc3ZtX2lzX2wyX3RsYl9mbHVzaF9oY2FsbCh2Y3B1KSkge1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMzI3OS1cXHRcXHRrdm1fcXVldWVfZXhjZXB0aW9uKHZjcHUsIFVEX1ZFQ1RPUik7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTM2NTM9c3RhdGljIGludCBzdm1faGFuZGxlX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBmYXN0cGF0aF90IGV4aXRfZmFzdHBhdGgpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTM2NzAtXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzozNjcxOlxcdFxcdHZtZXhpdCA9IG5lc3RlZF9zdm1fZXhpdF9zcGVjaWFsKHN2bSk7XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zNjcyLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMzY3My1cXHRcXHRpZiAodm1leGl0ID09IE5FU1RFRF9FWElUX0NPTlRJTlVFKVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MzY3NDpcXHRcXHRcXHR2bWV4aXQgPSBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZChzdm0pO1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMzY3NS1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9MzkwMz1zdGF0aWMgdm9pZCBzdm1fdXBkYXRlX2NyOF9pbnRlcmNlcHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgdHByLCBpbnQgaXJyKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zOTEzLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MzkxNDpcXHRpZiAobmVzdGVkX3N2bV92aXJ0dWFsaXplX3Rwcih2Y3B1KSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTM5MTUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz00MTk4PXN0YXRpYyBpbmxpbmUgdm9pZCBzeW5jX2NyOF90b19sYXBpYyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTQyMDEtXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo0MjAyOlxcdGlmIChuZXN0ZWRfc3ZtX3ZpcnR1YWxpemVfdHByKHZjcHUpKVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDIwMy1cXHRcXHRyZXR1cm47XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTQyMTE9c3RhdGljIGlubGluZSB2b2lkIHN5bmNfbGFwaWNfdG9fY3I4KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDIxNS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjQyMTY6XFx0aWYgKG5lc3RlZF9zdm1fdmlydHVhbGl6ZV90cHIodmNwdSkpXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy00MjE3LVxcdFxcdHJldHVybjtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NDc1Nz1zdGF0aWMgaW50IHN2bV9jaGVja19pbnRlcmNlcHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy00ODgxLVxcdHZtY2ItXFx1MDAzZWNvbnRyb2wuZXhpdF9jb2RlID0gaWNwdF9pbmZvLmV4aXRfY29kZTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjQ4ODI6XFx0dm1leGl0ID0gbmVzdGVkX3N2bV9leGl0X2hhbmRsZWQoc3ZtKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTQ4ODMtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTQ5Mzk9c3RhdGljIGludCBzdm1fZW50ZXJfc21tKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5pb24ga3ZtX3NtcmFtICpzbXJhbSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDk2MS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjQ5NjI6XFx0bmVzdGVkX3N2bV9zaW1wbGVfdm1leGl0KHN2bSwgU1ZNX0VYSVRfU1cpO1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDk2My1cXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9NDk4OD1zdGF0aWMgaW50IHN2bV9sZWF2ZV9zbW0oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBjb25zdCB1bmlvbiBrdm1fc21yYW0gKnNtcmFtKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01MDM2LVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTAzNzpcXHRpZiAobmVzdGVkX3N2bV9jaGVja19jYWNoZWRfdm1jYjEyKHZjcHUpIFxcdTAwM2MgMClcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTUwMzgtXFx0XFx0Z290byB1bm1hcF9zYXZlO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYz01NTQ1PXN0YXRpYyBfX2luaXQgaW50IHN2bV9oYXJkd2FyZV9zZXR1cCh2b2lkKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy01NTg4LVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6NTU4OTpcXHRcXHRyID0gbmVzdGVkX3N2bV9pbml0X21zcnBtX21lcmdlX29mZnNldHMoKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTU1OTAtXFx0XFx0aWYgKHIpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oPTIwOD1zdHJ1Y3Qgc3ZtX25lc3RlZF9zdGF0ZSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oLTIyNi1cXHQgKiBOb3RlOiB0aGlzIHN0cnVjdCBpcyBub3Qga2VwdCB1cC10by1kYXRlIHdoaWxlIEwyIHJ1bnM7IGl0IGlzIG9ubHlcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oOjIyNzpcXHQgKiB2YWxpZCB3aXRoaW4gbmVzdGVkX3N2bV92bXJ1bi5cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTM6NDU6MzAuOTUwODA2MTQzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI3NjY4MDA0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5lc3RlZCBTVk0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgdG91Y2hpbmcgdGhlIG5lc3RlZCBTVk0gY29kZSwgc3BlY2lmaWNhbGx5IHRoZSBgbmVzdGVkX3N2bV92bWV4aXRfdXBkYXRlX3ZtY2IxMmAgYW5kIGBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZGAgZnVuY3Rpb25zLiBJdCBsb29rcyBsaWtlIGl0J3MgZGVzaWduZWQgdG8gYmUgcnVuIHdpdGhpbiBhIG5lc3RlZCBTVk0gZW52aXJvbm1lbnQsIHdoaWNoIGlzIGdvb2QuIFRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50IGlzIGBLVk1fQU1EYCwgYW5kIHRoYXQncyBpdD8gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LiBMZXQncyBsb29rIGF0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBLVk1fQU1EYC4gQWgsIGl0IGRlcGVuZHMgb24gYEtWTWAsIG9mIGNvdXJzZS4gU28sIGNvbmZpcm1pbmcgYEtWTV9BTURgIGFsb25lIGlzIGVub3VnaC5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gd2hhdCBmdW5jdGlvbnMgYXJlIGltcG9ydGFudCB0byBmb2N1cyBvbi4gV2UndmUgZ290OlxuXG4qICAgYG5lc3RlZF9zdm1fdm1leGl0X3VwZGF0ZV92bWNiMTJgXG4qICAgYG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkYFxuKiAgIGBuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzYFxuKiAgIGBuZXN0ZWRfc3ZtX2NvcHlfZGVjb2RlX2Fzc2lzdHNgXG5cbkhtbSwgd2FpdCBhIG1pbnV0ZS4uLiBJIHJlbWVtYmVyIHRob3NlIGBuZXN0ZWRfc3ZtX2NsZWFyX2RlY29kZV9hc3Npc3RzYCBhbmQgYG5lc3RlZF9zdm1fY29weV9kZWNvZGVfYXNzaXN0c2AgZnVuY3Rpb25zLiBUaGV5J3JlIGJvdGggc3RhdGljIHdpdGhpbiBgbmVzdGVkLmNgLiBBbmQgbm93IEkgc2VlIGBuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyYCBpcyBhbHNvIHN0YXRpYyB3aXRoaW4gdGhhdCBzYW1lIGZpbGUuIFRoaXMgbWVhbnMgdGhleSBhcmUgbGlrZWx5IGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMgd2l0aGluIHRoYXQgZmlsZS4gQnV0IGBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZGAuLi50aGF0IG9uZSdzIG5vdCBzdGF0aWMuIFNvIGl0J3MgZXhwb3J0ZWQgYW5kIGNhbiBiZSBjYWxsZWQgZnJvbSBzb21ld2hlcmUgZWxzZS4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkzMDgsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTM6NDU6MzcuMjI3NDkwNDY2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDgyNzE5OTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MTUyNj12b2lkIHN2bV9sZWF2ZV9uZXN0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xNTQ5LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTU1MDpzdGF0aWMgaW50IG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkX21zcihzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE1NTEte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xNjAwPXN0YXRpYyBpbnQgbmVzdGVkX3N2bV9pbnRlcmNlcHQoc3RydWN0IHZjcHVfc3ZtICpzdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTE2MDktXFx0Y2FzZSBTVk1fRVhJVF9NU1I6XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxNjEwOlxcdFxcdHZtZXhpdCA9IG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkX21zcihzdm0pO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTYxMS1cXHRcXHRicmVhaztcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTYzMS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjE2MzI6aW50IG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTYzMy17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTI1MzE9c3RhdGljIGJvb2wgY2hlY2tfc2VsZWN0aXZlX2NyMF9pbnRlcmNlcHRlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTI1NDYtXFx0XFx0c3ZtLVxcdTAwM2V2bWNiLVxcdTAwM2Vjb250cm9sLmV4aXRfY29kZSA9IFNWTV9FWElUX0NSMF9TRUxfV1JJVEU7XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzoyNTQ3OlxcdFxcdHJldCA9IChuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZChzdm0pID09IE5FU1RFRF9FWElUX0RPTkUpO1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtMjU0OC1cXHR9XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTM2NTM9c3RhdGljIGludCBzdm1faGFuZGxlX2V4aXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBmYXN0cGF0aF90IGV4aXRfZmFzdHBhdGgpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTM2NzMtXFx0XFx0aWYgKHZtZXhpdCA9PSBORVNURURfRVhJVF9DT05USU5VRSlcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jOjM2NzQ6XFx0XFx0XFx0dm1leGl0ID0gbmVzdGVkX3N2bV9leGl0X2hhbmRsZWQoc3ZtKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTM2NzUtXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTQ3NTc9c3RhdGljIGludCBzdm1fY2hlY2tfaW50ZXJjZXB0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtNDg4MS1cXHR2bWNiLVxcdTAwM2Vjb250cm9sLmV4aXRfY29kZSA9IGljcHRfaW5mby5leGl0X2NvZGU7XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo0ODgyOlxcdHZtZXhpdCA9IG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkKHN2bSk7XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy00ODgzLVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaD04NjU9c3RhdGljIGlubGluZSB2b2lkIG5lc3RlZF9zdm1fc2ltcGxlX3ZtZXhpdChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSwgdTMyIGV4aXRfY29kZSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtODcyLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmg6ODczOmludCBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSk7XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaC04NzQtaW50IG5lc3RlZF9zdm1fY2hlY2tfcGVybWlzc2lvbnMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMTM6NDU6MzkuNzEwMjIxODAyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4ODQ0NjY0MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OlxuXG4qKkN1cnJlbnQgRm9jdXM6IE5lc3RlZCBTVk0gVk0gRXhpdCBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEknbSBob25pbmcgaW4gb24gdGhlIG5lc3RlZCBTVk0gZXhpdCBoYW5kbGluZyBjb2RlLiBJdCBsb29rcyBsaWtlIGBuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZGAgaXMgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LCB0aGF0IHNlZW1zIHRvIGJlIHRoZSBjb3JlIGZ1bmN0aW9uIGZvciBkZWFsaW5nIHdpdGggdGhlIGFjdHVhbCBWTSBleGl0LiBUaGVuLCBmb2xsb3dpbmcgdGhhdCBsb2dpYywgSSBuZWVkIHRvIGNoZWNrIGBuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyYCwgYmVjYXVzZSwgd2VsbCwgdGhhdCBuYW1lIHN1Z2dlc3RzIGl0J3MgY3J1Y2lhbCBmb3IgcHJvcGVybHkgdXBkYXRpbmcgdGhlIFZpcnR1YWwgTWFjaGluZSBDb250cm9sIEJsb2NrLCBwb3N0LVZNIGV4aXQsIGJ1dCBmb3IgdGhlIDEtMiB2Q1BVLlxuXG5JIGFsc28gc2VlIHRoYXQgYG5lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sYCBpcyBnZXR0aW5nIG1vZGlmaWVkLiBUaGF0IG9uZSdzIGludGVyZXN0aW5nLCBhcyBpdCdzIHRoZSAwLTIgdm1jYi4gTGV0IG1lIHBpdm90IHRoZXJlIGZpcnN0LCBzaW5jZSBpdCBpcyBhIGZ1bmRhbWVudGFsIGNvbnRyb2wgZnVuY3Rpb24uIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqIGl0J3MgYmVpbmcgY2hhbmdlZCBhbmQgKndoeSogYmVmb3JlIGdvaW5nIGRlZXBlciBpbnRvIHRoZSBleGl0LWhhbmRsaW5nIHBhdGguIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyAqYmVpbmcqIHByZXBwZWQgZm9yIHRoZSAwLTIgdm1jYi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA4NDUsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzo0NTo0My41OTQ2OTI5OTRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NTM1OTEyMDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmVzdGVkX3ZtY2IwMl9wcmVwYXJlX2NvbnRyb2xcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz04NDA9c3RhdGljIGJvb2wgaXNfZXZ0aW5qX25taSh1MzIgZXZ0aW5qKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy04NDktXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo4NTA6c3RhdGljIHZvaWQgbmVzdGVkX3ZtY2IwMl9wcmVwYXJlX2NvbnRyb2woc3RydWN0IHZjcHVfc3ZtICpzdm0pXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy04NTEte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xMDI5PWludCBlbnRlcl9zdm1fZ3Vlc3RfbW9kZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB2bWNiMTJfZ3BhLCBib29sIGZyb21fdm1ydW4pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwNjAtXFx0c3ZtX3N3aXRjaF92bWNiKHN2bSwgXFx1MDAyNnN2bS1cXHUwMDNlbmVzdGVkLnZtY2IwMik7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMDYxOlxcdG5lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sKHN2bSk7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0xMDYyLVxcdG5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlKHN2bSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTE5MzI9c3RhdGljIGludCBzdm1fc2V0X25lc3RlZF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTIwNDEtXFx0c3ZtX3N3aXRjaF92bWNiKHN2bSwgXFx1MDAyNnN2bS1cXHUwMDNlbmVzdGVkLnZtY2IwMik7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoyMDQyOlxcdG5lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sKHN2bSk7XFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy0yMDQzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzo0NTo0Ni4zNDgzMTE1NzRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzMxNzYxNTYyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgS1ZNL1NWTSBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgS1ZNL1NWTSBwYXRjaC4gSXQncyBjbGVhciB0aGF0IGBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfY29udHJvbGAgaXMgYSBjcml0aWNhbCBmdW5jdGlvbiB0byBmb2N1cyBvbiBkdXJpbmcgZnV6emluZyDigJMgdGhhdCBzZWVtcyBsaWtlIGEga2V5IGVudHJ5IHBvaW50LiBMZXQgbWUgZG91YmxlLWNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBwb2ludHMgdG8gY29uc2lkZXIuIEFoYSwgYEtWTV9BTURgIGlzIHRoZSBwcmltYXJ5IG9uZS4gTm93LCBpcyB0aGVyZSBhbnl0aGluZyBhbmFsb2dvdXMgdG8gYFg4Nl9GRUFUVVJFX0RFQ09ERUFTU0lTVFNgIGluIHRlcm1zIG9mIGNvbmZpZ3VyYXRpb24/IE5vLCBpdCdzIGEgQ1BVIGZlYXR1cmUsIG5vdCBhIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbi4gR290IGl0LlxuXG5MZXQgbWUgc3VtbWFyaXplIG15IGZpbmRpbmdzLiBGcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmc6IGBXb3J0aEZ1enppbmc6IHRydWVgLiBIZXJlJ3MgdGhlIGxpc3Qgb2YgZnVuY3Rpb25zIHRoYXQgYXBwZWFyIG1vc3QgcmVsZXZhbnQgZm9yIGZ1enppbmc6XG4qICAgYG5lc3RlZF9zdm1fdm1leGl0X3VwZGF0ZV92bWNiMTJgXG4qICAgYG5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkYFxuKiAgIGBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfY29udHJvbGBcbiogICBgbmVzdGVkX3N2bV9jbGVhcl9kZWNvZGVfYXNzaXN0c2BcbiogICBgbmVzdGVkX3N2bV9jb3B5X2RlY29kZV9hc3Npc3RzYFxuXG5BbmQsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIGBLVk1fQU1EYCBpcyBlbmFibGVkIChgRW5hYmxlQ29uZmlnczogLSBLVk1fQU1EYCkuXG5cblRoZSByZWFzb24gZm9yIGZ1enppbmcgaXMgY2xlYXI6IHRoaXMgcGF0Y2ggcmVzb2x2ZXMgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSByZWxhdGVkIHRvIG5lc3RlZCBTVk0gdmlydHVhbGl6YXRpb24sIHNwZWNpZmljYWxseSB3aXRoIHRoZSBwb3NzaWJpbGl0eSBvZiBEZWNvZGVBc3Npc3QgZGF0YSBsZWFrYWdlIGJldHdlZW4gVk0gZXhpdHMuIFRoaXMgaW1wYWN0cyBjb3JlIEtWTSBTVk0gbG9naWMsIHRoZSBjb3JlIGZ1bmN0aW9uIGlzIHRoZSBjb2RlIGhhbmRsaW5nIG5lc3RlZCBWTSBleGl0cyBhbmQgcHJlcGFyaW5nIFZNQ0IwMiBjb250cm9scy4gU2luY2UgdGhpcyBjb2RlIGlzIGRpcmVjdGx5IGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCBLVk0gaW9jdGxz4oCUdGhhdCBpcywgcnVubmluZyBhIG5lc3RlZCBndWVzdOKAlGl0IGlzIGFic29sdXRlbHkgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy4gVGhpcyBwYXRjaCBtb2RpZmllcyBmdW5jdGlvbmFsIGNvZGUsIHJlYWNoYWJsZSB0aHJvdWdoIEtWTSBpb2N0bHMsIG1ha2luZyB0aGlzIGEgY2xlYXIgYXJlYSB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNjIyLCJPdXRwdXRUb2tlbnMiOjE3NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQxMzo0NTo1My42NjU5MzE3NDRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjk3NjEwMzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTV9BTURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZXN0ZWRfc3ZtX3ZtZXhpdF91cGRhdGVfdm1jYjEyXCIsXG4gICAgXCJuZXN0ZWRfc3ZtX2V4aXRfaGFuZGxlZFwiLFxuICAgIFwibmVzdGVkX3ZtY2IwMl9wcmVwYXJlX2NvbnRyb2xcIixcbiAgICBcIm5lc3RlZF9zdm1fY2xlYXJfZGVjb2RlX2Fzc2lzdHNcIixcbiAgICBcIm5lc3RlZF9zdm1fY29weV9kZWNvZGVfYXNzaXN0c1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG5lc3RlZCBTVk0gdmlydHVhbGl6YXRpb24gd2hlcmUgRGVjb2RlQXNzaXN0IGRhdGEgY291bGQgYmUgbGVha2VkIGZyb20gYSBwcmV2aW91cyBleGl0IHRvIGEgc3Vic2VxdWVudCBleGl0LiBJdCBtb2RpZmllcyBjb3JlIEtWTSBTVk0gbG9naWMgZm9yIGhhbmRsaW5nIG5lc3RlZCBWTSBleGl0cyBhbmQgcHJlcGFyaW5nIFZNQ0IwMiBjb250cm9scy4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBLVk0gaW9jdGxzIChzcGVjaWZpY2FsbHkgcnVubmluZyBhIG5lc3RlZCBndWVzdCksIHNvIGl0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNX0FNRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5lc3RlZF9zdm1fdm1leGl0X3VwZGF0ZV92bWNiMTJcIixcbiAgICBcIm5lc3RlZF9zdm1fZXhpdF9oYW5kbGVkXCIsXG4gICAgXCJuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfY29udHJvbFwiLFxuICAgIFwibmVzdGVkX3N2bV9jbGVhcl9kZWNvZGVfYXNzaXN0c1wiLFxuICAgIFwibmVzdGVkX3N2bV9jb3B5X2RlY29kZV9hc3Npc3RzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gbmVzdGVkIFNWTSB2aXJ0dWFsaXphdGlvbiB3aGVyZSBEZWNvZGVBc3Npc3QgZGF0YSBjb3VsZCBiZSBsZWFrZWQgZnJvbSBhIHByZXZpb3VzIGV4aXQgdG8gYSBzdWJzZXF1ZW50IGV4aXQuIEl0IG1vZGlmaWVzIGNvcmUgS1ZNIFNWTSBsb2dpYyBmb3IgaGFuZGxpbmcgbmVzdGVkIFZNIGV4aXRzIGFuZCBwcmVwYXJpbmcgVk1DQjAyIGNvbnRyb2xzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIEtWTSBpb2N0bHMgKHNwZWNpZmljYWxseSBydW5uaW5nIGEgbmVzdGVkIGd1ZXN0KSwgc28gaXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowl8q62[1] Phase: Succeeded StartedAt: 2026-06-29 13:46:05 +0000 UTC FinishedAt: 2026-06-29 13:46:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8q62[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-29 13:46:05 +0000 UTC FinishedAt: 2026-06-29 13:46:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8q62[2] Phase: Succeeded StartedAt: 2026-06-29 13:46:05 +0000 UTC FinishedAt: 2026-06-29 15:30:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-29 13:46:05 +0000 UTC FinishedAt: 2026-06-29 15:30:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","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-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-29 13:46:05 +0000 UTC FinishedAt: 2026-06-29 13:47:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","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-06-29 13:46:05 +0000 UTC FinishedAt: 2026-06-29 13:46:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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-workflowl8q62/series-workflowl8q62-convert-artifact-991280732/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-29 13:47:29 +0000 UTC FinishedAt: 2026-06-29 14:19:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","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-06-29 13:47:29 +0000 UTC FinishedAt: 2026-06-29 14:19:34 +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:*208b866e-6d2d-4da3-8478-03d620ef56ae,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-workflowl8q62/series-workflowl8q62-convert-artifact-991280732/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": "be421ebb-de6e-45f7-b251-0adbd741aec9", "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-workflowl8q62/series-workflowl8q62-build-action-2313679242/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","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-06-29 13:47:29 +0000 UTC FinishedAt: 2026-06-29 14:19:24 +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:*208b866e-6d2d-4da3-8478-03d620ef56ae,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-workflowl8q62/series-workflowl8q62-convert-artifact-991280732/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": "be421ebb-de6e-45f7-b251-0adbd741aec9", "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-workflowl8q62/series-workflowl8q62-build-action-2313679242/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-29 14:19:34 +0000 UTC FinishedAt: 2026-06-29 14:19:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","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-06-29 14:19:34 +0000 UTC FinishedAt: 2026-06-29 14:19:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-29 14:19:34 +0000 UTC FinishedAt: 2026-06-29 14:19:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","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-06-29 14:19:34 +0000 UTC FinishedAt: 2026-06-29 14:19:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","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-workflowl8q62/series-workflowl8q62-convert-artifact-3799154075/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-29 14:19:54 +0000 UTC FinishedAt: 2026-06-29 14:22:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","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-06-29 14:19:54 +0000 UTC FinishedAt: 2026-06-29 14:22:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*be421ebb-de6e-45f7-b251-0adbd741aec9,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-workflowl8q62/series-workflowl8q62-build-action-2313679242/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-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-29 14:22:28 +0000 UTC FinishedAt: 2026-06-29 14:22:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","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-06-29 14:22:28 +0000 UTC FinishedAt: 2026-06-29 14:22:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-29 14:22:28 +0000 UTC FinishedAt: 2026-06-29 14:53:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","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-06-29 14:22:28 +0000 UTC FinishedAt: 2026-06-29 14:53:21 +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:*208b866e-6d2d-4da3-8478-03d620ef56ae,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-workflowl8q62/series-workflowl8q62-convert-artifact-3799154075/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": "2d80898e-0793-4b70-8df7-1bd871a072d9", "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-workflowl8q62/series-workflowl8q62-build-action-1153558847/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","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-06-29 14:22:28 +0000 UTC FinishedAt: 2026-06-29 14:53:11 +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:*208b866e-6d2d-4da3-8478-03d620ef56ae,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-workflowl8q62/series-workflowl8q62-convert-artifact-3799154075/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": "2d80898e-0793-4b70-8df7-1bd871a072d9", "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-workflowl8q62/series-workflowl8q62-build-action-1153558847/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-29 14:53:21 +0000 UTC FinishedAt: 2026-06-29 14:53:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","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-06-29 14:53:21 +0000 UTC FinishedAt: 2026-06-29 14:53:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-29 14:53:21 +0000 UTC FinishedAt: 2026-06-29 14:55:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","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-06-29 14:53:21 +0000 UTC FinishedAt: 2026-06-29 14:55:12 +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:*2d80898e-0793-4b70-8df7-1bd871a072d9,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-workflowl8q62/series-workflowl8q62-build-action-1153558847/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-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-29 14:55:22 +0000 UTC FinishedAt: 2026-06-29 15:30:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","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-06-29 14:55:22 +0000 UTC FinishedAt: 2026-06-29 15:30:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"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:*be421ebb-de6e-45f7-b251-0adbd741aec9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*2d80898e-0793-4b70-8df7-1bd871a072d9,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-workflowl8q62/series-workflowl8q62-build-action-2313679242/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-workflowl8q62/series-workflowl8q62-build-action-1153558847/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","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-06-29 14:55:22 +0000 UTC FinishedAt: 2026-06-29 14:55:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","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-06-29 14:55:22 +0000 UTC FinishedAt: 2026-06-29 14:55:28 +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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"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-workflowl8q62/series-workflowl8q62-convert-artifact-1469425300/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","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-06-29 14:55:22 +0000 UTC FinishedAt: 2026-06-29 14:55:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-29 14:55:22 +0000 UTC FinishedAt: 2026-06-29 14:55:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","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-06-29 14:55:22 +0000 UTC FinishedAt: 2026-06-29 14:55:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","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-06-29 14:55:32 +0000 UTC FinishedAt: 2026-06-29 15:30:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl8q62[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"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":["nested_svm_vmexit_update_vmcb12","nested_svm_exit_handled","nested_vmcb02_prepare_control","nested_svm_clear_decode_assists","nested_svm_copy_decode_assists"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"d1d23b17-2df1-453e-afea-44ca7f9ffaea","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-06-29 14:55:32 +0000 UTC FinishedAt: 2026-06-29 15:30:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*be421ebb-de6e-45f7-b251-0adbd741aec9,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*2d80898e-0793-4b70-8df7-1bd871a072d9,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-workflowl8q62/series-workflowl8q62-build-action-2313679242/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-workflowl8q62/series-workflowl8q62-build-action-1153558847/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-workflowl8q62/series-workflowl8q62-convert-artifact-1469425300/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,}