Name: series-workflow6bzws Phase: Succeeded StartedAt: 2026-07-16 22:54:31 +0000 UTC FinishedAt: 2026-07-17 00:50:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6bzws[0] Phase: Succeeded StartedAt: 2026-07-16 22:54:31 +0000 UTC FinishedAt: 2026-07-16 23:23:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6bzws[0].run-triage Phase: Succeeded StartedAt: 2026-07-16 22:54:31 +0000 UTC FinishedAt: 2026-07-16 23:23:19 +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": "25f744ffa0c8e799e06250ce2e618367b166b0d4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VFIO_PCI_ZDEV_KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "25f744ffa0c8e799e06250ce2e618367b166b0d4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VFIO_PCI_ZDEV_KVM" ], "series_id": "ffa2b561-c1df-4197-851e-64b3d0958b2d" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_s390_pci_aif_enable", "kvm_s390_pci_aif_disable", "kvm_s390_pci_zpci_reg_aen", "kvm_s390_pci_zpci_op" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE2IDIzOjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZGSU9fUENJX1pERVZfS1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3MzOTBfcGNpX2FpZl9lbmFibGUmIzM0OywKICAgICYjMzQ7a3ZtX3MzOTBfcGNpX2FpZl9kaXNhYmxlJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW4mIzM0OywKICAgICYjMzQ7a3ZtX3MzOTBfcGNpX3pwY2lfb3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgczM5MHggS1ZNIFBDSSBwYXNzdGhyb3VnaCBsb2dpYywgc3BlY2lmaWNhbGx5IG1lbW9yeSBhY2NvdW50aW5nIGFuZCBjbGVhbnVwIHBhdGhzIGR1cmluZyBBSUYgKEFkYXB0ZXIgSW50ZXJydXB0aW9uIEZhY2lsaXR5KSBlbmFibGUvZGlzYWJsZS4gVGhlc2UgYXJlIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyAoS1ZNX1MzOTBfWlBDSU9QX1JFR0FFTiBhbmQgS1ZNX1MzOTBfWlBDSU9QX0RFUkVHX0FFTikgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIG1lbW9yeSBsZWFrcyBvciByZWZlcmVuY2UgY291bnRpbmcgaXNzdWVzIG9jY3VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIzOjIwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZmQ3ZDU2YjNlNTVjYWRhNDg4ZDNjNzkyYzEzMWFhODk1YzBlNDBlOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDE2IDIzOjIwOjM0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vcGNpLmMgYi9hcmNoL3MzOTAva3ZtL3BjaS5jXG5pbmRleCA3MjBiYjU4Y2FiZTJlOS4uZjg1ZDg1NmI1OGM2NWMgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL3BjaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAva3ZtL3BjaS5jXG5AQCAtMTkwLDMzICYjNDM7MTkwLDUxIEBAIHN0YXRpYyBpbnQga3ZtX3pwY2lfY2xlYXJfYWlycShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpXG4gXHRyZXR1cm4gY2MgPyAtRUlPIDogMDtcbiB9XG4gXG4tc3RhdGljIGlubGluZSB2b2lkIHVuYWNjb3VudF9tZW0odW5zaWduZWQgbG9uZyBucl9wYWdlcylcbiYjNDM7c3RhdGljIGlubGluZSB2b2lkIHVuYWNjb3VudF9tZW0oc3RydWN0IGt2bV96ZGV2ICpremRldiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcylcbiB7XG4tXHRzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIgPSBnZXRfdWlkKGN1cnJlbnRfdXNlcigpKTtcbiYjNDM7XHRzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIgPSBremRldi1cdTAwM2V1c2VyX2FjY291bnQ7XG4mIzQzO1x0c3RydWN0IG1tX3N0cnVjdCAqbW1fYWNjb3VudCA9IGt6ZGV2LVx1MDAzZW1tX2FjY291bnQ7XG4gXG4tXHRpZiAodXNlcilcbiYjNDM7XHRpZiAodXNlcikge1xuIFx0XHRhdG9taWNfbG9uZ19zdWIobnJfcGFnZXMsIFx1MDAyNnVzZXItXHUwMDNlbG9ja2VkX3ZtKTtcbi1cdGlmIChjdXJyZW50LVx1MDAzZW1tKVxuLVx0XHRhdG9taWM2NF9zdWIobnJfcGFnZXMsIFx1MDAyNmN1cnJlbnQtXHUwMDNlbW0tXHUwMDNlcGlubmVkX3ZtKTtcbiYjNDM7XHRcdGZyZWVfdWlkKHVzZXIpO1xuJiM0MztcdFx0a3pkZXYtXHUwMDNldXNlcl9hY2NvdW50ID0gTlVMTDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChtbV9hY2NvdW50KSB7XG4mIzQzO1x0XHRhdG9taWM2NF9zdWIobnJfcGFnZXMsIFx1MDAyNm1tX2FjY291bnQtXHUwMDNlcGlubmVkX3ZtKTtcbiYjNDM7XHRcdG1tZHJvcChtbV9hY2NvdW50KTtcbiYjNDM7XHRcdGt6ZGV2LVx1MDAzZW1tX2FjY291bnQgPSBOVUxMO1xuJiM0MztcdH1cbiB9XG4gXG4tc3RhdGljIGlubGluZSBpbnQgYWNjb3VudF9tZW0odW5zaWduZWQgbG9uZyBucl9wYWdlcylcbiYjNDM7c3RhdGljIGlubGluZSBpbnQgYWNjb3VudF9tZW0oc3RydWN0IGt2bV96ZGV2ICpremRldiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcylcbiB7XG4gXHRzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIgPSBnZXRfdWlkKGN1cnJlbnRfdXNlcigpKTtcbiBcdHVuc2lnbmVkIGxvbmcgcGFnZV9saW1pdCwgY3VyX3BhZ2VzLCBuZXdfcGFnZXM7XG4mIzQzO1x0aW50IHJjID0gMDtcbiBcbiBcdHBhZ2VfbGltaXQgPSBybGltaXQoUkxJTUlUX01FTUxPQ0spIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUO1xuIFxuIFx0Y3VyX3BhZ2VzID0gYXRvbWljX2xvbmdfcmVhZChcdTAwMjZ1c2VyLVx1MDAzZWxvY2tlZF92bSk7XG4gXHRkbyB7XG4gXHRcdG5ld19wYWdlcyA9IGN1cl9wYWdlcyAmIzQzOyBucl9wYWdlcztcbi1cdFx0aWYgKG5ld19wYWdlcyBcdTAwM2UgcGFnZV9saW1pdClcbi1cdFx0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XHRcdGlmIChuZXdfcGFnZXMgXHUwMDNlIHBhZ2VfbGltaXQpIHtcbiYjNDM7XHRcdFx0cmMgPSAgLUVOT01FTTtcbiYjNDM7XHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHR9XG4gXHR9IHdoaWxlICghYXRvbWljX2xvbmdfdHJ5X2NtcHhjaGcoXHUwMDI2dXNlci1cdTAwM2Vsb2NrZWRfdm0sIFx1MDAyNmN1cl9wYWdlcywgbmV3X3BhZ2VzKSk7XG4gXG4mIzQzO1x0bW1ncmFiKGN1cnJlbnQtXHUwMDNlbW0pO1xuIFx0YXRvbWljNjRfYWRkKG5yX3BhZ2VzLCBcdTAwMjZjdXJyZW50LVx1MDAzZW1tLVx1MDAzZXBpbm5lZF92bSk7XG4mIzQzO1x0a3pkZXYtXHUwMDNldXNlcl9hY2NvdW50ID0gdXNlcjtcbiYjNDM7XHRremRldi1cdTAwM2VtbV9hY2NvdW50ID0gY3VycmVudC1cdTAwM2VtbTtcbiBcbiBcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7b3V0OlxuJiM0MztcdGZyZWVfdWlkKHVzZXIpO1xuJiM0MztcdHJldHVybiByYztcbiB9XG4gXG4gc3RhdGljIGludCBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsIHN0cnVjdCB6cGNpX2ZpYiAqZmliLFxuQEAgLTI3NSwyMCAmIzQzOzI5MywyOCBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlKHN0cnVjdCB6cGNpX2RldiAqemRldiwgc3RydWN0IHpwY2lfZmliICpmaWIsXG4gXHR9XG4gXG4gXHQvKiBBY2NvdW50IGZvciBwaW5uZWQgcGFnZXMsIHJvbGwgYmFjayBvbiBmYWlsdXJlICovXG4tXHRpZiAoYWNjb3VudF9tZW0ocGNvdW50KSlcbiYjNDM7XHRyYyA9IGFjY291bnRfbWVtKHpkZXYtXHUwMDNla3pkZXYsIHBjb3VudCk7XG4mIzQzO1x0aWYgKHJjKVxuIFx0XHRnb3RvIHVucGluMjtcbiBcbiBcdC8qIEFJU0IgbXVzdCBiZSBhbGxvY2F0ZWQgYmVmb3JlIHdlIGNhbiBmaWxsIGluIEdBSVRFICovXG4gXHRtdXRleF9sb2NrKFx1MDAyNmFpZnQtXHUwMDNlYWlmdF9sb2NrKTtcbiBcdGJpdCA9IGFpcnFfaXZfYWxsb2NfYml0KGFpZnQtXHUwMDNlc2J2KTtcbi1cdGlmIChiaXQgPT0gLTFVTClcbiYjNDM7XHRpZiAoYml0ID09IC0xVUwpIHtcbiYjNDM7XHRcdHJjID0gLUVOT01FTTtcbiBcdFx0Z290byB1bmxvY2s7XG4mIzQzO1x0fVxuIFx0emRldi1cdTAwM2VhaXNiID0gYml0OyAvKiBzdG9yZSB0aGUgc3VtbWFyeSBiaXQgbnVtYmVyICovXG4gXHR6ZGV2LVx1MDAzZWFpYnYgPSBhaXJxX2l2X2NyZWF0ZShtc2lfdmVjcywgQUlSUV9JVl9EQVRBIHxcbiBcdFx0XHRcdCAgICBBSVJRX0lWX0JJVExPQ0sgfFxuIFx0XHRcdFx0ICAgIEFJUlFfSVZfR1VFU1RWRUMsXG4gXHRcdFx0XHQgICAgcGh5c190b192aXJ0KGZpYi1cdTAwM2VmbXQwLmFpYnYpKTtcbiBcbiYjNDM7XHRpZiAoIXpkZXYtXHUwMDNlYWlidikge1xuJiM0MztcdFx0cmMgPSAtRU5PTUVNO1xuJiM0MztcdFx0Z290byBmcmVlX2Fpc2I7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHNwaW5fbG9ja19pcnEoXHUwMDI2YWlmdC1cdTAwM2VnYWl0X2xvY2spO1xuIFx0Z2FpdGUgPSBhaWZ0LVx1MDAzZWdhaXQgJiM0MzsgemRldi1cdTAwM2VhaXNiO1xuIFxuQEAgLTMxOSwxMyAmIzQzOzM0NSwzNiBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlKHN0cnVjdCB6cGNpX2RldiAqemRldiwgc3RydWN0IHpwY2lfZmliICpmaWIsXG4gXHQvKiBTYXZlIHNvbWUgZ3Vlc3QgZmliIHZhbHVlcyBpbiB0aGUgaG9zdCBmb3IgbGF0ZXIgdXNlICovXG4gXHR6ZGV2LVx1MDAzZWt6ZGV2LVx1MDAzZWZpYi5mbXQwLmlzYyA9IGZpYi1cdTAwM2VmbXQwLmlzYztcbiBcdHpkZXYtXHUwMDNla3pkZXYtXHUwMDNlZmliLmZtdDAuYWlidiA9IGZpYi1cdTAwM2VmbXQwLmFpYnY7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2YWlmdC1cdTAwM2VhaWZ0X2xvY2spO1xuIFxuIFx0LyogSXNzdWUgdGhlIGNscCB0byBzZXR1cCB0aGUgaXJxIG5vdyAqL1xuIFx0cmMgPSBrdm1fenBjaV9zZXRfYWlycSh6ZGV2KTtcbi1cdHJldHVybiByYztcbiYjNDM7XHRpZiAoIXJjKSB7XG4mIzQzO1x0XHRtdXRleF91bmxvY2soXHUwMDI2YWlmdC1cdTAwM2VhaWZ0X2xvY2spO1xuJiM0MztcdFx0cmV0dXJuIHJjO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LyogU3RhcnQgY2xlYW51cCAqL1xuJiM0MztcdHpkZXYtXHUwMDNla3pkZXYtXHUwMDNlZmliLmZtdDAuaXNjID0gMDtcbiYjNDM7XHR6ZGV2LVx1MDAzZWt6ZGV2LVx1MDAzZWZpYi5mbXQwLmFpYnYgPSAwO1xuIFxuJiM0MztcdHNwaW5fbG9ja19pcnEoXHUwMDI2YWlmdC1cdTAwM2VnYWl0X2xvY2spO1xuJiM0MztcdGdhaXRlLVx1MDAzZWNvdW50LS07XG4mIzQzO1x0Z2FpdGUtXHUwMDNlYWlzYiA9IDA7XG4mIzQzO1x0Z2FpdGUtXHUwMDNlZ2lzYyA9IDA7XG4mIzQzO1x0Z2FpdGUtXHUwMDNlYWlzYm8gPSAwO1xuJiM0MztcdGdhaXRlLVx1MDAzZWdpc2EgPSAwO1xuJiM0MztcdGFpZnQtXHUwMDNla3pkZXZbemRldi1cdTAwM2VhaXNiXSA9IE5VTEw7XG4mIzQzO1x0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNmFpZnQtXHUwMDNlZ2FpdF9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0YWlycV9pdl9yZWxlYXNlKHpkZXYtXHUwMDNlYWlidik7XG4mIzQzO1x0emRldi1cdTAwM2VhaWJ2ID0gTlVMTDtcbiYjNDM7XG4mIzQzO2ZyZWVfYWlzYjpcbiYjNDM7XHRhaXJxX2l2X2ZyZWVfYml0KGFpZnQtXHUwMDNlc2J2LCB6ZGV2LVx1MDAzZWFpc2IpO1xuJiM0MztcdHpkZXYtXHUwMDNlYWlzYiA9IDA7XG4gdW5sb2NrOlxuJiM0MztcdGlmIChwY291bnQgXHUwMDNlIDApXG4mIzQzO1x0XHR1bmFjY291bnRfbWVtKHpkZXYtXHUwMDNla3pkZXYsIHBjb3VudCk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2YWlmdC1cdTAwM2VhaWZ0X2xvY2spO1xuIHVucGluMjpcbiBcdGlmIChmaWItXHUwMDNlZm10MC5zdW0gPT0gMSlcbkBAIC0zOTYsNyAmIzQzOzQ0NSw3IEBAIHN0YXRpYyBpbnQga3ZtX3MzOTBfcGNpX2FpZl9kaXNhYmxlKHN0cnVjdCB6cGNpX2RldiAqemRldiwgYm9vbCBmb3JjZSlcbiBcdFx0cGNvdW50JiM0MzsmIzQzOztcbiBcdH1cbiBcdGlmIChwY291bnQgXHUwMDNlIDApXG4tXHRcdHVuYWNjb3VudF9tZW0ocGNvdW50KTtcbiYjNDM7XHRcdHVuYWNjb3VudF9tZW0oa3pkZXYsIHBjb3VudCk7XG4gb3V0OlxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmFpZnQtXHUwMDNlYWlmdF9sb2NrKTtcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3BjaS5oIGIvYXJjaC9zMzkwL2t2bS9wY2kuaFxuaW5kZXggZmYwOTcyZGQ1ZTcxZGMuLjU0NGU2YWE3NWUzODhjIDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9wY2kuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2t2bS9wY2kuaFxuQEAgLTIxLDYgJiM0MzsyMSw4IEBAIHN0cnVjdCBrdm1femRldiB7XG4gXHRzdHJ1Y3QgenBjaV9kZXYgKnpkZXY7XG4gXHRzdHJ1Y3Qga3ZtICprdm07XG4gXHRzdHJ1Y3QgenBjaV9maWIgZmliO1xuJiM0MztcdHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcl9hY2NvdW50O1xuJiM0MztcdHN0cnVjdCBtbV9zdHJ1Y3QgKm1tX2FjY291bnQ7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIGVudHJ5O1xuIH07XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjM6MjA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkZJT19QQ0lfWkRFVl9LVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fczM5MF9wY2lfYWlmX2VuYWJsZSYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGUmIzM0OywKICAgICYjMzQ7a3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbiYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9wY2lfenBjaV9vcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBzMzkweCBLVk0gUENJIHBhc3N0aHJvdWdoIGxvZ2ljLCBzcGVjaWZpY2FsbHkgbWVtb3J5IGFjY291bnRpbmcgYW5kIGNsZWFudXAgcGF0aHMgZHVyaW5nIEFJRiAoQWRhcHRlciBJbnRlcnJ1cHRpb24gRmFjaWxpdHkpIGVuYWJsZS9kaXNhYmxlLiBUaGVzZSBhcmUgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIChLVk1fUzM5MF9aUENJT1BfUkVHQUVOIGFuZCBLVk1fUzM5MF9aUENJT1BfREVSRUdfQUVOKSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gbWVtb3J5IGxlYWtzIG9yIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZXMgb2NjdXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZkN2Q1NmIzZTU1Y2FkYTQ4OGQzYzc5MmMxMzFhYTg5NWMwZTQwZTkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAxNiAyMzoyMDozNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vcGNpLmMgYi9hcmNoL3MzOTAva3ZtL3BjaS5jCmluZGV4IDcyMGJiNThjYWJlMmU5Li5mODVkODU2YjU4YzY1YyAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2t2bS9wY2kuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAva3ZtL3BjaS5jCkBAIC0xOTAsMzMgJiM0MzsxOTAsNTEgQEAgc3RhdGljIGludCBrdm1fenBjaV9jbGVhcl9haXJxKHN0cnVjdCB6cGNpX2RldiAqemRldikKIAlyZXR1cm4gY2MgPyAtRUlPIDogMDsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHVuYWNjb3VudF9tZW0odW5zaWduZWQgbG9uZyBucl9wYWdlcykKJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgdW5hY2NvdW50X21lbShzdHJ1Y3Qga3ZtX3pkZXYgKmt6ZGV2LCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKQogewotCXN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlciA9IGdldF91aWQoY3VycmVudF91c2VyKCkpOwomIzQzOwlzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIgPSBremRldi0mZ3Q7dXNlcl9hY2NvdW50OwomIzQzOwlzdHJ1Y3QgbW1fc3RydWN0ICptbV9hY2NvdW50ID0ga3pkZXYtJmd0O21tX2FjY291bnQ7CiAKLQlpZiAodXNlcikKJiM0MzsJaWYgKHVzZXIpIHsKIAkJYXRvbWljX2xvbmdfc3ViKG5yX3BhZ2VzLCAmYW1wO3VzZXItJmd0O2xvY2tlZF92bSk7Ci0JaWYgKGN1cnJlbnQtJmd0O21tKQotCQlhdG9taWM2NF9zdWIobnJfcGFnZXMsICZhbXA7Y3VycmVudC0mZ3Q7bW0tJmd0O3Bpbm5lZF92bSk7CiYjNDM7CQlmcmVlX3VpZCh1c2VyKTsKJiM0MzsJCWt6ZGV2LSZndDt1c2VyX2FjY291bnQgPSBOVUxMOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChtbV9hY2NvdW50KSB7CiYjNDM7CQlhdG9taWM2NF9zdWIobnJfcGFnZXMsICZhbXA7bW1fYWNjb3VudC0mZ3Q7cGlubmVkX3ZtKTsKJiM0MzsJCW1tZHJvcChtbV9hY2NvdW50KTsKJiM0MzsJCWt6ZGV2LSZndDttbV9hY2NvdW50ID0gTlVMTDsKJiM0MzsJfQogfQogCi1zdGF0aWMgaW5saW5lIGludCBhY2NvdW50X21lbSh1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKQomIzQzO3N0YXRpYyBpbmxpbmUgaW50IGFjY291bnRfbWVtKHN0cnVjdCBrdm1femRldiAqa3pkZXYsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpCiB7CiAJc3RydWN0IHVzZXJfc3RydWN0ICp1c2VyID0gZ2V0X3VpZChjdXJyZW50X3VzZXIoKSk7CiAJdW5zaWduZWQgbG9uZyBwYWdlX2xpbWl0LCBjdXJfcGFnZXMsIG5ld19wYWdlczsKJiM0MzsJaW50IHJjID0gMDsKIAogCXBhZ2VfbGltaXQgPSBybGltaXQoUkxJTUlUX01FTUxPQ0spICZndDsmZ3Q7IFBBR0VfU0hJRlQ7CiAKIAljdXJfcGFnZXMgPSBhdG9taWNfbG9uZ19yZWFkKCZhbXA7dXNlci0mZ3Q7bG9ja2VkX3ZtKTsKIAlkbyB7CiAJCW5ld19wYWdlcyA9IGN1cl9wYWdlcyAmIzQzOyBucl9wYWdlczsKLQkJaWYgKG5ld19wYWdlcyAmZ3Q7IHBhZ2VfbGltaXQpCi0JCQlyZXR1cm4gLUVOT01FTTsKJiM0MzsJCWlmIChuZXdfcGFnZXMgJmd0OyBwYWdlX2xpbWl0KSB7CiYjNDM7CQkJcmMgPSAgLUVOT01FTTsKJiM0MzsJCQlnb3RvIG91dDsKJiM0MzsJCX0KIAl9IHdoaWxlICghYXRvbWljX2xvbmdfdHJ5X2NtcHhjaGcoJmFtcDt1c2VyLSZndDtsb2NrZWRfdm0sICZhbXA7Y3VyX3BhZ2VzLCBuZXdfcGFnZXMpKTsKIAomIzQzOwltbWdyYWIoY3VycmVudC0mZ3Q7bW0pOwogCWF0b21pYzY0X2FkZChucl9wYWdlcywgJmFtcDtjdXJyZW50LSZndDttbS0mZ3Q7cGlubmVkX3ZtKTsKJiM0MzsJa3pkZXYtJmd0O3VzZXJfYWNjb3VudCA9IHVzZXI7CiYjNDM7CWt6ZGV2LSZndDttbV9hY2NvdW50ID0gY3VycmVudC0mZ3Q7bW07CiAKIAlyZXR1cm4gMDsKJiM0MzsKJiM0MztvdXQ6CiYjNDM7CWZyZWVfdWlkKHVzZXIpOwomIzQzOwlyZXR1cm4gcmM7CiB9CiAKIHN0YXRpYyBpbnQga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGUoc3RydWN0IHpwY2lfZGV2ICp6ZGV2LCBzdHJ1Y3QgenBjaV9maWIgKmZpYiwKQEAgLTI3NSwyMCAmIzQzOzI5MywyOCBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlKHN0cnVjdCB6cGNpX2RldiAqemRldiwgc3RydWN0IHpwY2lfZmliICpmaWIsCiAJfQogCiAJLyogQWNjb3VudCBmb3IgcGlubmVkIHBhZ2VzLCByb2xsIGJhY2sgb24gZmFpbHVyZSAqLwotCWlmIChhY2NvdW50X21lbShwY291bnQpKQomIzQzOwlyYyA9IGFjY291bnRfbWVtKHpkZXYtJmd0O2t6ZGV2LCBwY291bnQpOwomIzQzOwlpZiAocmMpCiAJCWdvdG8gdW5waW4yOwogCiAJLyogQUlTQiBtdXN0IGJlIGFsbG9jYXRlZCBiZWZvcmUgd2UgY2FuIGZpbGwgaW4gR0FJVEUgKi8KIAltdXRleF9sb2NrKCZhbXA7YWlmdC0mZ3Q7YWlmdF9sb2NrKTsKIAliaXQgPSBhaXJxX2l2X2FsbG9jX2JpdChhaWZ0LSZndDtzYnYpOwotCWlmIChiaXQgPT0gLTFVTCkKJiM0MzsJaWYgKGJpdCA9PSAtMVVMKSB7CiYjNDM7CQlyYyA9IC1FTk9NRU07CiAJCWdvdG8gdW5sb2NrOwomIzQzOwl9CiAJemRldi0mZ3Q7YWlzYiA9IGJpdDsgLyogc3RvcmUgdGhlIHN1bW1hcnkgYml0IG51bWJlciAqLwogCXpkZXYtJmd0O2FpYnYgPSBhaXJxX2l2X2NyZWF0ZShtc2lfdmVjcywgQUlSUV9JVl9EQVRBIHwKIAkJCQkgICAgQUlSUV9JVl9CSVRMT0NLIHwKIAkJCQkgICAgQUlSUV9JVl9HVUVTVFZFQywKIAkJCQkgICAgcGh5c190b192aXJ0KGZpYi0mZ3Q7Zm10MC5haWJ2KSk7CiAKJiM0MzsJaWYgKCF6ZGV2LSZndDthaWJ2KSB7CiYjNDM7CQlyYyA9IC1FTk9NRU07CiYjNDM7CQlnb3RvIGZyZWVfYWlzYjsKJiM0MzsJfQomIzQzOwogCXNwaW5fbG9ja19pcnEoJmFtcDthaWZ0LSZndDtnYWl0X2xvY2spOwogCWdhaXRlID0gYWlmdC0mZ3Q7Z2FpdCAmIzQzOyB6ZGV2LSZndDthaXNiOwogCkBAIC0zMTksMTMgJiM0MzszNDUsMzYgQEAgc3RhdGljIGludCBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsIHN0cnVjdCB6cGNpX2ZpYiAqZmliLAogCS8qIFNhdmUgc29tZSBndWVzdCBmaWIgdmFsdWVzIGluIHRoZSBob3N0IGZvciBsYXRlciB1c2UgKi8KIAl6ZGV2LSZndDtremRldi0mZ3Q7ZmliLmZtdDAuaXNjID0gZmliLSZndDtmbXQwLmlzYzsKIAl6ZGV2LSZndDtremRldi0mZ3Q7ZmliLmZtdDAuYWlidiA9IGZpYi0mZ3Q7Zm10MC5haWJ2OwotCW11dGV4X3VubG9jaygmYW1wO2FpZnQtJmd0O2FpZnRfbG9jayk7CiAKIAkvKiBJc3N1ZSB0aGUgY2xwIHRvIHNldHVwIHRoZSBpcnEgbm93ICovCiAJcmMgPSBrdm1fenBjaV9zZXRfYWlycSh6ZGV2KTsKLQlyZXR1cm4gcmM7CiYjNDM7CWlmICghcmMpIHsKJiM0MzsJCW11dGV4X3VubG9jaygmYW1wO2FpZnQtJmd0O2FpZnRfbG9jayk7CiYjNDM7CQlyZXR1cm4gcmM7CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyogU3RhcnQgY2xlYW51cCAqLwomIzQzOwl6ZGV2LSZndDtremRldi0mZ3Q7ZmliLmZtdDAuaXNjID0gMDsKJiM0MzsJemRldi0mZ3Q7a3pkZXYtJmd0O2ZpYi5mbXQwLmFpYnYgPSAwOwogCiYjNDM7CXNwaW5fbG9ja19pcnEoJmFtcDthaWZ0LSZndDtnYWl0X2xvY2spOwomIzQzOwlnYWl0ZS0mZ3Q7Y291bnQtLTsKJiM0MzsJZ2FpdGUtJmd0O2Fpc2IgPSAwOwomIzQzOwlnYWl0ZS0mZ3Q7Z2lzYyA9IDA7CiYjNDM7CWdhaXRlLSZndDthaXNibyA9IDA7CiYjNDM7CWdhaXRlLSZndDtnaXNhID0gMDsKJiM0MzsJYWlmdC0mZ3Q7a3pkZXZbemRldi0mZ3Q7YWlzYl0gPSBOVUxMOwomIzQzOwlzcGluX3VubG9ja19pcnEoJmFtcDthaWZ0LSZndDtnYWl0X2xvY2spOwomIzQzOwomIzQzOwlhaXJxX2l2X3JlbGVhc2UoemRldi0mZ3Q7YWlidik7CiYjNDM7CXpkZXYtJmd0O2FpYnYgPSBOVUxMOwomIzQzOwomIzQzO2ZyZWVfYWlzYjoKJiM0MzsJYWlycV9pdl9mcmVlX2JpdChhaWZ0LSZndDtzYnYsIHpkZXYtJmd0O2Fpc2IpOwomIzQzOwl6ZGV2LSZndDthaXNiID0gMDsKIHVubG9jazoKJiM0MzsJaWYgKHBjb3VudCAmZ3Q7IDApCiYjNDM7CQl1bmFjY291bnRfbWVtKHpkZXYtJmd0O2t6ZGV2LCBwY291bnQpOwogCW11dGV4X3VubG9jaygmYW1wO2FpZnQtJmd0O2FpZnRfbG9jayk7CiB1bnBpbjI6CiAJaWYgKGZpYi0mZ3Q7Zm10MC5zdW0gPT0gMSkKQEAgLTM5Niw3ICYjNDM7NDQ1LDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGUoc3RydWN0IHpwY2lfZGV2ICp6ZGV2LCBib29sIGZvcmNlKQogCQlwY291bnQmIzQzOyYjNDM7OwogCX0KIAlpZiAocGNvdW50ICZndDsgMCkKLQkJdW5hY2NvdW50X21lbShwY291bnQpOwomIzQzOwkJdW5hY2NvdW50X21lbShremRldiwgcGNvdW50KTsKIG91dDoKIAltdXRleF91bmxvY2soJmFtcDthaWZ0LSZndDthaWZ0X2xvY2spOwogCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3BjaS5oIGIvYXJjaC9zMzkwL2t2bS9wY2kuaAppbmRleCBmZjA5NzJkZDVlNzFkYy4uNTQ0ZTZhYTc1ZTM4OGMgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9rdm0vcGNpLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2t2bS9wY2kuaApAQCAtMjEsNiAmIzQzOzIxLDggQEAgc3RydWN0IGt2bV96ZGV2IHsKIAlzdHJ1Y3QgenBjaV9kZXYgKnpkZXY7CiAJc3RydWN0IGt2bSAqa3ZtOwogCXN0cnVjdCB6cGNpX2ZpYiBmaWI7CiYjNDM7CXN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcl9hY2NvdW50OwomIzQzOwlzdHJ1Y3QgbW1fc3RydWN0ICptbV9hY2NvdW50OwogCXN0cnVjdCBsaXN0X2hlYWQgZW50cnk7CiB9OwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIzOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MDIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBzMzkwIEtWTSBQQ0kgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2gg4oCTIGl0JiMzOTtzIHRvdWNoaW5nIGBhcmNoL3MzOTAva3ZtL3BjaS5jYCBhbmQgYGFyY2gvczM5MC9rdm0vcGNpLmhgLiBTZWVtcyBsaWtlIGl0JiMzOTtzIGFkZHJlc3Npbmcgc29tZSBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZXMgd2l0aGluIHRoZSBzMzkwIEtWTSBQQ0kgY29kZS4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBtb2RpZnlpbmcgdGhlIGB1bmFjY291bnRfbWVtYCBhbmQgYGFjY291bnRfbWVtYCBmdW5jdGlvbnMgdG8gaGFuZGxlIGB1c2VyX3N0cnVjdGAgYW5kIGBtbV9zdHJ1Y3RgIHJlZmVyZW5jZXMgcHJvcGVybHkgd2l0aGluIGBrdm1femRldmAuIEdvb2QgY2F0Y2g7IHRoZXNlIGFyZSB0aGUga2luZHMgb2YgbGVha3MgdGhhdCBjYW4gYml0ZSB5b3UgbGF0ZXIuIEFsc28sIGl0IGxvb2tzIGxpa2UgdGhlcmUgYXJlIHNvbWUgYWRkZWQgY2xlYW51cCBwYXRocyBpbiBga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGVgIHRvIGdyYWNlZnVsbHkgaGFuZGxlIGZhaWx1cmVzLCB3aGljaCBpcyBhbHdheXMgYSBnb29kIHByYWN0aWNlIGZvciByZXNpbGllbmNlLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgY29kZSBpcyBldmVuICpyZWFjaGFibGUqIGFuZCBpZiB0aGUgZml4IGlzIGZ1bmN0aW9uYWwuIEl0JiMzOTtzIG9idmlvdXNseSByZWxhdGVkIHRvIEtWTSBvbiB0aGUgczM5MCBhcmNoaXRlY3R1cmUsIGFuZCBpdCYjMzk7cyBtb2RpZnlpbmcgYGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlYCBhbmQgYGt2bV9zMzkwX3BjaV9haWZfZGlzYWJsZWAuIFNvLCB0aGVzZSBhcmUgZnVuY3Rpb25hbCBmaXhlcyBmb3IgbWVtb3J5IG9yIHJlZmVyZW5jZSBsZWFrcy4gVGhlIHJlYWwgdGVzdCBpczogY2FuIHdlIGFjdHVhbGx5ICpydW4qIHRoaXM/IElzIHMzOTAgS1ZNIGVhc2lseSB0ZXN0YWJsZT8gVGhlbiwgSSByZW1lbWJlciEgU3l6a2FsbGVyIGRvZXMgaGF2ZSBzMzkweCBLVk0gZnV6emluZy4gVGhhdCYjMzk7cyBmYW50YXN0aWMuCgpOb3csIGxldCYjMzk7cyBmaXJlIHVwIHRoZSB0b29scy4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIEtjb25maWcgb3B0aW9ucyBhcmUgcmVsZXZhbnQgYW5kIHRoZSBzeW1ib2xzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvZGUgdG8gZnVsbHkgYXNzZXNzIHRoZSBwYXRjaCYjMzk7cyBpbnRlZ3JhdGlvbiBhbmQgaW1wYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zMzkwX3BjaV9haWZfZW5hYmxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vcGNpLmM9MjExPXN0YXRpYyBpbmxpbmUgaW50IGFjY291bnRfbWVtKHN0cnVjdCBrdm1femRldiAqa3pkZXYsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpXG4tLVxuYXJjaC9zMzkwL2t2bS9wY2kuYy0yMzktXG5hcmNoL3MzOTAva3ZtL3BjaS5jOjI0MDpzdGF0aWMgaW50IGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlKHN0cnVjdCB6cGNpX2RldiAqemRldiwgc3RydWN0IHpwY2lfZmliICpmaWIsXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTI0MS1cdFx0XHRcdCAgIGJvb2wgYXNzaXN0KVxuLS1cbmFyY2gvczM5MC9rdm0vcGNpLmM9NjQ1PXN0YXRpYyBpbnQga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbihzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsXG4tLVxuYXJjaC9zMzkwL2t2bS9wY2kuYy02NjQtXHRob3N0ZmxhZyA9ICEoYXJncy1cdTAwM2V1LnJlZ19hZW4uZmxhZ3MgXHUwMDI2IEtWTV9TMzkwX1pQQ0lPUF9SRUdBRU5fSE9TVCk7XG5hcmNoL3MzOTAva3ZtL3BjaS5jOjY2NTpcdHJldHVybiBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZSh6ZGV2LCBcdTAwMjZmaWIsIGhvc3RmbGFnKTtcbmFyY2gvczM5MC9rdm0vcGNpLmMtNjY2LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTgwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHJlcXVlc3RlZDoKCioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBmb3IgczM5MCBLVk0gUENJIFN1cHBvcnQqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY29uZmlndXJhdGlvbiBvcHRpb25zLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgYnVpbGQgc3lzdGVtLCBhcmUgcmVzcG9uc2libGUgZm9yIGVuYWJsaW5nIHRoZSBpbmNsdXNpb24gb2YgYGFyY2gvczM5MC9rdm0vcGNpLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhpcyBwYXJ0aWN1bGFyIGZpbGUgaXMgYnJvdWdodCBpbnRvIHRoZSBidWlsZC4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aGUgY29uZmlndXJhdGlvbiBmbGFncyBhc3NvY2lhdGVkIHdpdGggdGhlIEtWTSBzdWJzeXN0ZW0gb24gczM5MCwgZm9jdXNpbmcgb24gdGhlIFBDSSBhc3BlY3RzIHdpdGhpbiB0aGF0IGFyY2hpdGVjdHVyZS4gSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUgcmVsZXZhbnQgYEtjb25maWdgIGZpbGVzIGFuZCBgTWFrZWZpbGVgIGVudHJpZXMgd2l0aGluIHRoZSBzMzkwIGFuZCBLVk0gZGlyZWN0b3JpZXMuIE15IGV4cGVjdGF0aW9uIGlzIHRoZSBjb25maWd1cmF0aW9uIHdpbGwgbGlrZWx5IGJlIGRyaXZlbiBieSBhIGNvbWJpbmF0aW9uIG9mIGdlbmVyYWwgS1ZNIHNldHRpbmdzIGFuZCBzMzkwLXNwZWNpZmljIGFyY2hpdGVjdHVyYWwgY29uc2lkZXJhdGlvbnMsIHBvc3NpYmx5IGludm9sdmluZyB0aGluZ3MgbGlrZSB2aXJ0dWFsaXphdGlvbiBmZWF0dXJlcywgZGV2aWNlIGFzc2lnbm1lbnQsIG9yIHNwZWNpZmljIFBDSSBkZXZpY2Ugc3VwcG9ydCBvbiB0aGF0IHBsYXRmb3JtLiBJ4oCZbGwgYmUgbG9va2luZyBmb3Iga2V5d29yZHMgbGlrZSAmIzM0O0tWTSYjMzQ7LCAmIzM0O1BDSSYjMzQ7LCAmIzM0O3MzOTAmIzM0OywgJiMzNDtDT05GSUdfJiMzNDssIGFuZCBhbnl0aGluZyByZWxhdGVkIHRvIGRldmljZSBkcml2ZXJzIG9yIHZpcnR1YWxpemF0aW9uLiBVbHRpbWF0ZWx5LCBJIHdhbnQgdG8gaXNvbGF0ZSB0aGUgZXhhY3QgY29uZGl0aW9uYWwgc3RhdGVtZW50cyB0aGF0IHRyaWdnZXIgdGhlIGNvbXBpbGF0aW9uIG9mIGBwY2kuY2AsIHNvIEkgY2FuIHVuZGVyc3RhbmQgdGhlIGxvZ2ljYWwgcGF0aCBmb3IgaXRzIGluY2x1c2lvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL01ha2VmaWxlPTEyPWt2bS15ICYjNDM7PSBkYXQubyBnbWFwLm8gZmF1bHRpbi5vXG5hcmNoL3MzOTAva3ZtL01ha2VmaWxlLTEzLVxuYXJjaC9zMzkwL2t2bS9NYWtlZmlsZToxNDprdm0tJChDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk0pICYjNDM7PSBwY2kub1xuYXJjaC9zMzkwL2t2bS9NYWtlZmlsZS0xNS1vYmotJChDT05GSUdfS1ZNKSAmIzQzOz0ga3ZtLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDM0CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQsIGFuZCB3cml0aW5nIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkludmVzdGlnYXRpbmcgdGhlIGBWRklPX1BDSV9aREVWX0tWTWAgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gdGhlIGNvbmZpZ3VyYXRpb24gaW4gcXVlc3Rpb24gaXMgYFZGSU9fUENJX1pERVZfS1ZNYC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGNoZWNrIGBLVk1gIGdlbmVyYWxseSwgYXMgaXQmIzM5O3MgZGlyZWN0bHkgcmVmZXJlbmNlZC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoaXMgYFpERVZgIGZlYXR1cmUgYW5kIHRoZSBicm9hZGVyIEtWTSBmcmFtZXdvcmsuIElzIHRoaXMgYSBzcGVjaWZpYyBLVk0gZmVhdHVyZSwgb3IgZG9lcyBpdCBsZXZlcmFnZSBLVk0gaW4gYSBtb3JlIGdlbmVyYWwgc2Vuc2U/CgpUbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUsIG15IG5leHQgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZm9yIGBWRklPX1BDSV9aREVWX0tWTWAuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIHRoZSBkZXBlbmRlbmNpZXMsIGhlbHAgdGV4dCwgYW5kIGFueXRoaW5nIGVsc2UgdGhhdCBtaWdodCBpbGx1bWluYXRlIHdoYXQgdGhpcyBjb25maWd1cmF0aW9uIGFjdHVhbGx5ICpkb2VzKi4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgJiMzNDt3aHkmIzM0OyBhbmQgJiMzNDtob3cmIzM0OyBiZWhpbmQgdGhpcy4gV2hhdCBvdGhlciBvcHRpb25zIGFyZSByZWxhdGVkPyBXaGF0IHByZXJlcXVpc2l0ZXMgYXJlIHRoZXJlPyBEb2VzIGl0IGJ1aWxkIGEgbW9kdWxlPyBJcyBpdCBhbiBpbnRyaW5zaWMgcGFydCBvZiB0aGUga2VybmVsPyBXaGF0JiMzOTtzIHRoZSBjb250ZXh0LCB0aGUgdHJhZGUgb2ZmcywgYW5kIHNvIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIzOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWRklPX1BDSV9aREVWX0tWTSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc9NDU9ZW5kaWZcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00Ni1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzo0Nzpjb25maWcgVkZJT19QQ0lfWkRFVl9LVk1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7VkZJTyBQQ0kgZXh0ZW5zaW9ucyBmb3IgczM5MHggS1ZNIHBhc3N0aHJvdWdoXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjM6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ0NwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBDYWxsZXJzIG9mIGBrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcm9sZSBvZiBga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbmAuIEZpcnN0LCBsZXQmIzM5O3MgdHJhY2UgaXRzIHVzYWdlLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXQgdGhlIGNyb3NzLXJlZmVyZW5jZXMuIEkgd2FudCB0byBzZWUgd2hpY2ggZnVuY3Rpb25zIGFyZSBjYWxsaW5nIHRoaXMgc3BlY2lmaWMgcm91dGluZS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY29udGV4dCBJIG5lZWQuIFRoaXMgd2lsbCBwb2ludCBtZSB0b3dhcmRzIHRoZSBzcGVjaWZpYyBzY2VuYXJpb3MgYW5kIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIHdoZXJlIHRoaXMgQUVOIChBc3luY2hyb25vdXMgRXZlbnQgTm90aWZpY2F0aW9uKSBoYW5kbGluZyBpcyB0cmlnZ2VyZWQsIGFsbG93aW5nIG1lIHRvIGJldHRlciB1bmRlcnN0YW5kIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBaIFBDSSBkZXZpY2VzIGFuZCB0aGUgS1ZNIHMzOTAgZ3Vlc3QuIEhvcGVmdWxseSwgdGhlIGNhbGxpbmcgZnVuY3Rpb25zIHdpbGwgc2hlZCBsaWdodCBvbiB3aGF0IHRyaWdnZXJzIHRoZXNlIEFFTnMgYW5kIHdoYXQgdGhlIGV4cGVjdGVkIHN5c3RlbSBiZWhhdmlvciBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjM6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL3BjaS5jPTYyOD1zdGF0aWMgc3RydWN0IHpwY2lfZGV2ICpnZXRfemRldl9mcm9tX2t2bV9ieV9maChzdHJ1Y3Qga3ZtICprdm0sIHUzMiBmaClcbi0tXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTY0NC1cbmFyY2gvczM5MC9rdm0vcGNpLmM6NjQ1OnN0YXRpYyBpbnQga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbihzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTY0Ni1cdFx0XHRcdCAgICAgc3RydWN0IGt2bV9zMzkwX3pwY2lfb3AgKmFyZ3MpXG4tLVxuYXJjaC9zMzkwL2t2bS9wY2kuYz02Njg9aW50IGt2bV9zMzkwX3BjaV96cGNpX29wKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zMzkwX3pwY2lfb3AgKmFyZ3MpXG4tLVxuYXJjaC9zMzkwL2t2bS9wY2kuYy02OTctXHRcdH1cbmFyY2gvczM5MC9rdm0vcGNpLmM6Njk4Olx0XHRyID0ga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2Flbih6ZGV2LCBhcmdzKTtcbmFyY2gvczM5MC9rdm0vcGNpLmMtNjk5LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjM6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjAyOAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipOYXZpZ2F0aW5nIHRoZSBQQ0kgUGFzc3Rocm91Z2ggTGFuZHNjYXBlIGluIEtWTS9zMzkwKioKCkFscmlnaHQsIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoZSBLVk0vczM5MCBjb2RlIGFnYWluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIFBDSSBwYXNzdGhyb3VnaCBpbXBsZW1lbnRhdGlvbiBiZXR0ZXIuIEkgc2VlIHRoYXQgYGt2bV9zMzkwX3BjaV96cGNpX29wYCBmdW5jdGlvbiBpcyBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLiBUaGUgbmF0dXJhbCBuZXh0IHF1ZXN0aW9uIGlzICp3aGVyZSogaXMgaXQgYmVpbmcgaW52b2tlZD8gVW5kZXJzdGFuZGluZyBpdHMgY2FsbCBncmFwaCBpcyBjcnVjaWFsIHRvIGdyYXNwIGhvdyB0aGUgelBDSSBvcGVyYXRpb25zIGFyZSBiZWluZyByb3V0ZWQgYW5kIG1hbmFnZWQgd2l0aGluIHRoZSBLVk0gZnJhbWV3b3JrIG9uIHMzOTB4LiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgZnVuY3Rpb24gdG8gc2VlIHRoZSBkaWZmZXJlbnQgcGF0aHdheXMgdGhhdCBsZWFkIHRvIGl0LiBLbm93aW5nIHRoZSBjYWxsZXJzIHdpbGwgZXhwb3NlIHRoZSBzdXJyb3VuZGluZyBsb2dpYyBhbmQgdGhlIHNjZW5hcmlvcyB0aGF0IHRyaWdnZXIgdGhlc2UgY3J1Y2lhbCB6UENJIG9wZXJhdGlvbnMuIFRoYXQgY2FsbCBzdGFjayBpcyB3aGF0JiMzOTtzIGdvaW5nIHRvIHNoZWQgbGlnaHQgb24gaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fczM5MF9wY2lfenBjaV9vcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MjkyNT1pbnQga3ZtX2FyY2hfdm1faW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTMwOTItXHRcdH1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzozMDkzOlx0XHRyID0ga3ZtX3MzOTBfcGNpX3pwY2lfb3Aoa3ZtLCBcdTAwMjZhcmdzKTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMDk0LVx0XHRicmVhaztcbi0tXG5hcmNoL3MzOTAva3ZtL3BjaS5jPTY0NT1zdGF0aWMgaW50IGt2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW4oc3RydWN0IHpwY2lfZGV2ICp6ZGV2LFxuLS1cbmFyY2gvczM5MC9rdm0vcGNpLmMtNjY3LVxuYXJjaC9zMzkwL2t2bS9wY2kuYzo2Njg6aW50IGt2bV9zMzkwX3BjaV96cGNpX29wKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zMzkwX3pwY2lfb3AgKmFyZ3MpXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTY2OS17XG4tLVxuYXJjaC9zMzkwL2t2bS9wY2kuaD02MT12b2lkIGt2bV9zMzkwX3BjaV9jbGVhcl9saXN0KHN0cnVjdCBrdm0gKmt2bSk7XG5hcmNoL3MzOTAva3ZtL3BjaS5oLTYyLVxuYXJjaC9zMzkwL2t2bS9wY2kuaDo2MzppbnQga3ZtX3MzOTBfcGNpX3pwY2lfb3Aoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3MzOTBfenBjaV9vcCAqYXJncyk7XG5hcmNoL3MzOTAva3ZtL3BjaS5oLTY0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzQ5CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTS9WRklPLVBDSSBaREVWIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhpcyBaREVWIGZ1bmN0aW9uYWxpdHkgaXMgZXhwb3NlZC4gSXQgbG9va3MgbGlrZSB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBpcyB0aHJvdWdoIEtWTSBpb2N0bHMsIHdoaWNoIGlzIHRoZSBleHBlY3RlZCBhcHByb2FjaC4gVGhlIGtlcm5lbCBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gdmVyaWZ5IGFyZSBgS1ZNYCBhbmQgYFZGSU9fUENJX1pERVZfS1ZNYC4gR29vZCwgdGhhdCBtYWtlcyBzZW5zZS4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgY3JpdGljYWwgc3ltYm9scy4gSXQgYXBwZWFycyB0aGUgbWFpbiBmb2N1cyBpcyBvbiBga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGVgLCBga3ZtX3MzOTBfcGNpX2FpZl9kaXNhYmxlYCwgYGt2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW5gLCBhbmQgYGt2bV9zMzkwX3BjaV96cGNpX29wYC4gSSYjMzk7bGwgd2FudCB0byBmb2N1cyBvbiB0aGVzZSBmdW5jdGlvbnMgdG8gZ2V0IGEgZ29vZCBoYW5kbGUgb24gdGhlIGNvbnRyb2wgZmxvdy4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgd2FudCB0byBzZWUgaWYgYW55IG90aGVyIGZ1bmN0aW9ucyBoYXZlIGJlZW4gbW9kaWZpZWQgb3IgYXJlIGludm9sdmVkLiBBaCwgaGVyZSB3ZSBhcmU7IGl0IGxvb2tzIGxpa2UgYGFjY291bnRfbWVtYCBhbmQgYHVuYWNjb3VudF9tZW1gIGFyZSBzdGF0aWMgaW5saW5lLiBUaGlzIG1lYW5zIHRoZXkmIzM5O2xsIGJlIGludGVncmF0ZWQgZGlyZWN0bHkgaW50byB0aGUgYGVuYWJsZWAgYW5kIGBkaXNhYmxlYCBmdW5jdGlvbnMsIHNvIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCB3aGVuIEkmIzM5O20gdHJhY2luZyBleGVjdXRpb24uIExldCYjMzk7cyBzdGFydCBieSBsb29raW5nIGF0IGBrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGVgIHRvIHN0YXJ0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9wY2kuYz0yNDA9c3RhdGljIGludCBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsIHN0cnVjdCB6cGNpX2ZpYiAqZmliLFxuLS1cbmFyY2gvczM5MC9rdm0vcGNpLmMtMzg4LVxuYXJjaC9zMzkwL2t2bS9wY2kuYzozODk6c3RhdGljIGludCBrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGUoc3RydWN0IHpwY2lfZGV2ICp6ZGV2LCBib29sIGZvcmNlKVxuYXJjaC9zMzkwL2t2bS9wY2kuYy0zOTAte1xuLS1cbmFyY2gvczM5MC9rdm0vcGNpLmM9NTYwPXN0YXRpYyB2b2lkIGt2bV9zMzkwX3BjaV91bnJlZ2lzdGVyX2t2bSh2b2lkICpvcGFxdWUpXG4tLVxuYXJjaC9zMzkwL2t2bS9wY2kuYy01ODYtXHRpZiAoemRldi1cdTAwM2VremRldi1cdTAwM2VmaWIuZm10MC5haWJ2ICE9IDApXG5hcmNoL3MzOTAva3ZtL3BjaS5jOjU4NzpcdFx0a3ZtX3MzOTBfcGNpX2FpZl9kaXNhYmxlKHpkZXYsIHRydWUpO1xuYXJjaC9zMzkwL2t2bS9wY2kuYy01ODgtXG4tLVxuYXJjaC9zMzkwL2t2bS9wY2kuYz02Njg9aW50IGt2bV9zMzkwX3BjaV96cGNpX29wKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zMzkwX3pwY2lfb3AgKmFyZ3MpXG4tLVxuYXJjaC9zMzkwL2t2bS9wY2kuYy03MDAtXHRjYXNlIEtWTV9TMzkwX1pQQ0lPUF9ERVJFR19BRU46XG5hcmNoL3MzOTAva3ZtL3BjaS5jOjcwMTpcdFx0ciA9IGt2bV9zMzkwX3BjaV9haWZfZGlzYWJsZSh6ZGV2LCBmYWxzZSk7XG5hcmNoL3MzOTAva3ZtL3BjaS5jLTcwMi1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIzOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3NjUKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDdXJyZW50IFRyYWluIG9mIFRob3VnaHQqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBga3ZtX3MzOTBfcGNpX2FpZl9kaXNhYmxlYCBmdW5jdGlvbiBhbmQgcmVhbGl6aW5nIGl0JiMzOTtzIGFsc28gYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBgS1ZNX1MzOTBfWlBDSU9QX0RFUkVHX0FFTmAgaW9jdGwuIEludGVyZXN0aW5nLiBJIG5lZWQgdG8gbWFrZSBhIG1lbnRhbCBub3RlIG9mIHRoYXQgY29ubmVjdGlvbiwgYXMgaXQgY291bGQgaGF2ZSBicm9hZGVyIGltcGxpY2F0aW9ucy4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gc2VlIGlmIHdvcmtpbmcgd2l0aCBgVkZJT19QQ0lfWkRFVl9LVk1gIHJlcXVpcmVzIGFueSBvdGhlciBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb25zIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBJIHNob3VsZCBjb25zaWRlciByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIzOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWRklPX1BDSV9aREVWX0tWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wY2kvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc9NDU9ZW5kaWZcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00Ni1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzo0Nzpjb25maWcgVkZJT19QQ0lfWkRFVl9LVk1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7VkZJTyBQQ0kgZXh0ZW5zaW9ucyBmb3IgczM5MHggS1ZNIHBhc3N0aHJvdWdoXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIzOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxMDcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OgoKKipEZWx2aW5nIGludG8gdGhlIFZGSU8gS2NvbmZpZyBmb3IgVW5kZXJzdGFuZGluZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnYCBmaWxlLiBJJiMzOTttIHNwZWNpZmljYWxseSBpbnRlcmVzdGVkIGluIGxpbmUgNDcsIGFzIHRoYXQgYXJlYSB1c3VhbGx5IGhvbGRzIHNvbWUgY3JpdGljYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQgb3B0aW9ucyBhcmUgY29udHJvbGxlZCBoZXJlIGZvciB0aGUgVkZJTy1QQ0kgZHJpdmVyLiBJcyBpdCB0aGUgZmVhdHVyZSBmbGFncywgcGxhdGZvcm0gc3VwcG9ydCBvciBzcGVjaWZpYyBoYXJkd2FyZSByZXF1aXJlbWVudHMgSSBuZWVkIHRvIHJlbWVtYmVyPyBMZXQmIzM5O3MgcmVmcmVzaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjM6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQwOlx0XHQgIGFzc2lnbm1lbnQgdG8gdmlydHVhbCBtYWNoaW5lcy4gIFRoaXMgaW5jbHVkZXMgZXhwb3NpbmcgYW4gSUdEXG4gIDQxOlx0XHQgIHNwZWNpZmljIGZpcm13YXJlIHRhYmxlIGFuZCByZWFkLW9ubHkgY29waWVzIG9mIHRoZSBob3N0IGJyaWRnZVxuICA0MjpcdFx0ICBhbmQgTFBDIGJyaWRnZSBjb25maWcgc3BhY2UuXG4gIDQzOlx0XG4gIDQ0Olx0XHQgIFRvIGVuYWJsZSBJbnRlbCBJR0QgYXNzaWdubWVudCB0aHJvdWdoIHZmaW8tcGNpLCBzYXkgWS5cbiAgNDU6XHRlbmRpZlxuICA0NjpcdFxuICA0NzpcdGNvbmZpZyBWRklPX1BDSV9aREVWX0tWTVxuICA0ODpcdFx0Ym9vbCBcJiMzNDtWRklPIFBDSSBleHRlbnNpb25zIGZvciBzMzkweCBLVk0gcGFzc3Rocm91Z2hcJiMzNDtcbiAgNDk6XHRcdGRlcGVuZHMgb24gUzM5MCBcdTAwMjZcdTAwMjYgS1ZNXG4gIDUwOlx0XHRkZWZhdWx0IHlcbiAgNTE6XHRcdGhlbHBcbiAgNTI6XHRcdCAgU3VwcG9ydCBzMzkweC1zcGVjaWZpYyBleHRlbnNpb25zIHRvIGVuYWJsZSBzdXBwb3J0IGZvciBlbmhhbmNlbWVudHNcbiAgNTM6XHRcdCAgdG8gS1ZNIHBhc3N0aHJvdWdoIGNhcGFiaWxpdGllcywgc3VjaCBhcyBpbnRlcnByZXRpdmUgZXhlY3V0aW9uIG9mXG4gIDU0Olx0XHQgIHpQQ0kgaW5zdHJ1Y3Rpb25zLlxuICA1NTpcdFxuICA1NjpcdFx0ICBUbyBlbmFibGUgczM5MHggS1ZNIHZmaW8tcGNpIGV4dGVuc2lvbnMsIHNheSBZLlxuICA1NzpcdFxuICA1ODpcdGNvbmZpZyBWRklPX1BDSV9ETUFCVUZcbiAgNTk6XHRcdGRlZl9ib29sIHkgaWYgVkZJT19QQ0lfQ09SRSBcdTAwMjZcdTAwMjYgUENJX1AyUERNQSBcdTAwMjZcdTAwMjYgRE1BX1NIQVJFRF9CVUZGRVJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjM6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODU4NgoJCQkJCQkJb3V0cHV0OiAyMTMKCQkJCQkJCXRob3VnaHRzOiAyNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEZ1enppbmcgU3RyYXRlZ3kqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYW5kIGl0JiMzOTtzIHByZXR0eSBjbGVhciB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgZnV6emluZyBzdHJhdGVneSBmb2N1c2VkIG9uIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGBTMzkwYCBhbmQgYEtWTWAsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBgVkZJT19QQ0lfWkRFVl9LVk1gIGNvbmZpZ3VyYXRpb24uIExldCBtZSBicmVhayBpdCBkb3duLgoKRXNzZW50aWFsbHksIHdlJiMzOTtyZSB0YXJnZXRpbmcgdGhlIGNoYW5nZXMgaW4gdGhlIHMzOTB4IEtWTSBQQ0kgcGFzc3Rocm91Z2ggbG9naWMuIFdlJiMzOTtyZSB6ZXJvaW5nIGluIG9uIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBjbGVhbnVwIHdpdGhpbiB0aGUgQUlGIGVuYWJsZS9kaXNhYmxlIHBhdGhzLiBUaGlzIGlzIHdoZXJlIHRoZSB2dWxuZXJhYmlsaXR5IGlzIGxpa2VseSB0byBiZS4KCldlJiMzOTt2ZSBnb3Qgb3VyIHRhcmdldHMgY2xlYXJseSBkZWZpbmVkOiBga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGVgLCBga3ZtX3MzOTBfcGNpX2FpZl9kaXNhYmxlYCwgYGt2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW5gLCBhbmQgYGt2bV9zMzkwX3BjaV96cGNpX29wYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgdGhyb3VnaCBLVk0gaW9jdGxzLCBzcGVjaWZpY2FsbHkgdGhlIGBLVk1fUzM5MF9aUENJT1BfUkVHQUVOYCBhbmQgYEtWTV9TMzkwX1pQQ0lPUF9ERVJFR19BRU5gIGlvY3Rscy4gVGhhdCBtYWtlcyBzZW5zZSwgdGhvc2UgYXJlIHRoZSBpbnRlcmZhY2VzIHdlIG5lZWQgdG8gc2NydXRpbml6ZS4KClRoZSByZWFzb25pbmcgaXMgc29saWQsIHdlIG5lZWQgdG8gZnV6eiB0aGVzZSB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG1lbW9yeSBsZWFrcyBvciByZWZlcmVuY2UgY291bnRpbmcgZXJyb3JzIGhhcHBlbmluZy4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgcmVsZXZhbnQgZ2l2ZW4gdGhlIGNvbXBsZXggaW50ZXJhY3Rpb25zIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGlzIHN0cmF0ZWd5IGlzIGRlZmluaXRlbHkgd29ydGh3aGlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjM6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZGSU9fUENJX1pERVZfS1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3MzOTBfcGNpX2FpZl9lbmFibGUmIzM0OywKICAgICYjMzQ7a3ZtX3MzOTBfcGNpX2FpZl9kaXNhYmxlJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW4mIzM0OywKICAgICYjMzQ7a3ZtX3MzOTBfcGNpX3pwY2lfb3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgczM5MHggS1ZNIFBDSSBwYXNzdGhyb3VnaCBsb2dpYywgc3BlY2lmaWNhbGx5IG1lbW9yeSBhY2NvdW50aW5nIGFuZCBjbGVhbnVwIHBhdGhzIGR1cmluZyBBSUYgKEFkYXB0ZXIgSW50ZXJydXB0aW9uIEZhY2lsaXR5KSBlbmFibGUvZGlzYWJsZS4gVGhlc2UgYXJlIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyAoS1ZNX1MzOTBfWlBDSU9QX1JFR0FFTiBhbmQgS1ZNX1MzOTBfWlBDSU9QX0RFUkVHX0FFTikgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIG1lbW9yeSBsZWFrcyBvciByZWZlcmVuY2UgY291bnRpbmcgaXNzdWVzIG9jY3VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWRklPX1BDSV9aREVWX0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9zMzkwX3BjaV9haWZfZW5hYmxlJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX3BjaV9haWZfZGlzYWJsZSYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX3BjaV96cGNpX29wJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHMzOTB4IEtWTSBQQ0kgcGFzc3Rocm91Z2ggbG9naWMsIHNwZWNpZmljYWxseSBtZW1vcnkgYWNjb3VudGluZyBhbmQgY2xlYW51cCBwYXRocyBkdXJpbmcgQUlGIChBZGFwdGVyIEludGVycnVwdGlvbiBGYWNpbGl0eSkgZW5hYmxlL2Rpc2FibGUuIFRoZXNlIGFyZSByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMgKEtWTV9TMzkwX1pQQ0lPUF9SRUdBRU4gYW5kIEtWTV9TMzkwX1pQQ0lPUF9ERVJFR19BRU4pIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyBtZW1vcnkgbGVha3Mgb3IgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlcyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIzOjIwOjM3LjA0NjQyODgzNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTgzNTQ0NTgzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWRklPX1BDSV9aREVWX0tWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9zMzkwX3BjaV9haWZfZW5hYmxlXCIsXG4gICAgXCJrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGVcIixcbiAgICBcImt2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW5cIixcbiAgICBcImt2bV9zMzkwX3BjaV96cGNpX29wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgczM5MHggS1ZNIFBDSSBwYXNzdGhyb3VnaCBsb2dpYywgc3BlY2lmaWNhbGx5IG1lbW9yeSBhY2NvdW50aW5nIGFuZCBjbGVhbnVwIHBhdGhzIGR1cmluZyBBSUYgKEFkYXB0ZXIgSW50ZXJydXB0aW9uIEZhY2lsaXR5KSBlbmFibGUvZGlzYWJsZS4gVGhlc2UgYXJlIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyAoS1ZNX1MzOTBfWlBDSU9QX1JFR0FFTiBhbmQgS1ZNX1MzOTBfWlBDSU9QX0RFUkVHX0FFTikgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIG1lbW9yeSBsZWFrcyBvciByZWZlcmVuY2UgY291bnRpbmcgaXNzdWVzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMDozNy4wNDY0MzM4MjVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5MTUxODMxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGZkN2Q1NmIzZTU1Y2FkYTQ4OGQzYzc5MmMxMzFhYTg5NWMwZTQwZTlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMTYgMjM6MjA6MzQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9wY2kuYyBiL2FyY2gvczM5MC9rdm0vcGNpLmNcXG5pbmRleCA3MjBiYjU4Y2FiZTJlOS4uZjg1ZDg1NmI1OGM2NWMgMTAwNjQ0XFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9wY2kuY1xcbisrKyBiL2FyY2gvczM5MC9rdm0vcGNpLmNcXG5AQCAtMTkwLDMzICsxOTAsNTEgQEAgc3RhdGljIGludCBrdm1fenBjaV9jbGVhcl9haXJxKHN0cnVjdCB6cGNpX2RldiAqemRldilcXG4gXFx0cmV0dXJuIGNjID8gLUVJTyA6IDA7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbmxpbmUgdm9pZCB1bmFjY291bnRfbWVtKHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCB1bmFjY291bnRfbWVtKHN0cnVjdCBrdm1femRldiAqa3pkZXYsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpXFxuIHtcXG4tXFx0c3RydWN0IHVzZXJfc3RydWN0ICp1c2VyID0gZ2V0X3VpZChjdXJyZW50X3VzZXIoKSk7XFxuK1xcdHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlciA9IGt6ZGV2LVxcdTAwM2V1c2VyX2FjY291bnQ7XFxuK1xcdHN0cnVjdCBtbV9zdHJ1Y3QgKm1tX2FjY291bnQgPSBremRldi1cXHUwMDNlbW1fYWNjb3VudDtcXG4gXFxuLVxcdGlmICh1c2VyKVxcbitcXHRpZiAodXNlcikge1xcbiBcXHRcXHRhdG9taWNfbG9uZ19zdWIobnJfcGFnZXMsIFxcdTAwMjZ1c2VyLVxcdTAwM2Vsb2NrZWRfdm0pO1xcbi1cXHRpZiAoY3VycmVudC1cXHUwMDNlbW0pXFxuLVxcdFxcdGF0b21pYzY0X3N1Yihucl9wYWdlcywgXFx1MDAyNmN1cnJlbnQtXFx1MDAzZW1tLVxcdTAwM2VwaW5uZWRfdm0pO1xcbitcXHRcXHRmcmVlX3VpZCh1c2VyKTtcXG4rXFx0XFx0a3pkZXYtXFx1MDAzZXVzZXJfYWNjb3VudCA9IE5VTEw7XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChtbV9hY2NvdW50KSB7XFxuK1xcdFxcdGF0b21pYzY0X3N1Yihucl9wYWdlcywgXFx1MDAyNm1tX2FjY291bnQtXFx1MDAzZXBpbm5lZF92bSk7XFxuK1xcdFxcdG1tZHJvcChtbV9hY2NvdW50KTtcXG4rXFx0XFx0a3pkZXYtXFx1MDAzZW1tX2FjY291bnQgPSBOVUxMO1xcbitcXHR9XFxuIH1cXG4gXFxuLXN0YXRpYyBpbmxpbmUgaW50IGFjY291bnRfbWVtKHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpXFxuK3N0YXRpYyBpbmxpbmUgaW50IGFjY291bnRfbWVtKHN0cnVjdCBrdm1femRldiAqa3pkZXYsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpXFxuIHtcXG4gXFx0c3RydWN0IHVzZXJfc3RydWN0ICp1c2VyID0gZ2V0X3VpZChjdXJyZW50X3VzZXIoKSk7XFxuIFxcdHVuc2lnbmVkIGxvbmcgcGFnZV9saW1pdCwgY3VyX3BhZ2VzLCBuZXdfcGFnZXM7XFxuK1xcdGludCByYyA9IDA7XFxuIFxcbiBcXHRwYWdlX2xpbWl0ID0gcmxpbWl0KFJMSU1JVF9NRU1MT0NLKSBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUO1xcbiBcXG4gXFx0Y3VyX3BhZ2VzID0gYXRvbWljX2xvbmdfcmVhZChcXHUwMDI2dXNlci1cXHUwMDNlbG9ja2VkX3ZtKTtcXG4gXFx0ZG8ge1xcbiBcXHRcXHRuZXdfcGFnZXMgPSBjdXJfcGFnZXMgKyBucl9wYWdlcztcXG4tXFx0XFx0aWYgKG5ld19wYWdlcyBcXHUwMDNlIHBhZ2VfbGltaXQpXFxuLVxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXHRcXHRpZiAobmV3X3BhZ2VzIFxcdTAwM2UgcGFnZV9saW1pdCkge1xcbitcXHRcXHRcXHRyYyA9ICAtRU5PTUVNO1xcbitcXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0fVxcbiBcXHR9IHdoaWxlICghYXRvbWljX2xvbmdfdHJ5X2NtcHhjaGcoXFx1MDAyNnVzZXItXFx1MDAzZWxvY2tlZF92bSwgXFx1MDAyNmN1cl9wYWdlcywgbmV3X3BhZ2VzKSk7XFxuIFxcbitcXHRtbWdyYWIoY3VycmVudC1cXHUwMDNlbW0pO1xcbiBcXHRhdG9taWM2NF9hZGQobnJfcGFnZXMsIFxcdTAwMjZjdXJyZW50LVxcdTAwM2VtbS1cXHUwMDNlcGlubmVkX3ZtKTtcXG4rXFx0a3pkZXYtXFx1MDAzZXVzZXJfYWNjb3VudCA9IHVzZXI7XFxuK1xcdGt6ZGV2LVxcdTAwM2VtbV9hY2NvdW50ID0gY3VycmVudC1cXHUwMDNlbW07XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4rXFxuK291dDpcXG4rXFx0ZnJlZV91aWQodXNlcik7XFxuK1xcdHJldHVybiByYztcXG4gfVxcbiBcXG4gc3RhdGljIGludCBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsIHN0cnVjdCB6cGNpX2ZpYiAqZmliLFxcbkBAIC0yNzUsMjAgKzI5MywyOCBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlKHN0cnVjdCB6cGNpX2RldiAqemRldiwgc3RydWN0IHpwY2lfZmliICpmaWIsXFxuIFxcdH1cXG4gXFxuIFxcdC8qIEFjY291bnQgZm9yIHBpbm5lZCBwYWdlcywgcm9sbCBiYWNrIG9uIGZhaWx1cmUgKi9cXG4tXFx0aWYgKGFjY291bnRfbWVtKHBjb3VudCkpXFxuK1xcdHJjID0gYWNjb3VudF9tZW0oemRldi1cXHUwMDNla3pkZXYsIHBjb3VudCk7XFxuK1xcdGlmIChyYylcXG4gXFx0XFx0Z290byB1bnBpbjI7XFxuIFxcbiBcXHQvKiBBSVNCIG11c3QgYmUgYWxsb2NhdGVkIGJlZm9yZSB3ZSBjYW4gZmlsbCBpbiBHQUlURSAqL1xcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZhaWZ0LVxcdTAwM2VhaWZ0X2xvY2spO1xcbiBcXHRiaXQgPSBhaXJxX2l2X2FsbG9jX2JpdChhaWZ0LVxcdTAwM2VzYnYpO1xcbi1cXHRpZiAoYml0ID09IC0xVUwpXFxuK1xcdGlmIChiaXQgPT0gLTFVTCkge1xcbitcXHRcXHRyYyA9IC1FTk9NRU07XFxuIFxcdFxcdGdvdG8gdW5sb2NrO1xcbitcXHR9XFxuIFxcdHpkZXYtXFx1MDAzZWFpc2IgPSBiaXQ7IC8qIHN0b3JlIHRoZSBzdW1tYXJ5IGJpdCBudW1iZXIgKi9cXG4gXFx0emRldi1cXHUwMDNlYWlidiA9IGFpcnFfaXZfY3JlYXRlKG1zaV92ZWNzLCBBSVJRX0lWX0RBVEEgfFxcbiBcXHRcXHRcXHRcXHQgICAgQUlSUV9JVl9CSVRMT0NLIHxcXG4gXFx0XFx0XFx0XFx0ICAgIEFJUlFfSVZfR1VFU1RWRUMsXFxuIFxcdFxcdFxcdFxcdCAgICBwaHlzX3RvX3ZpcnQoZmliLVxcdTAwM2VmbXQwLmFpYnYpKTtcXG4gXFxuK1xcdGlmICghemRldi1cXHUwMDNlYWlidikge1xcbitcXHRcXHRyYyA9IC1FTk9NRU07XFxuK1xcdFxcdGdvdG8gZnJlZV9haXNiO1xcbitcXHR9XFxuK1xcbiBcXHRzcGluX2xvY2tfaXJxKFxcdTAwMjZhaWZ0LVxcdTAwM2VnYWl0X2xvY2spO1xcbiBcXHRnYWl0ZSA9IGFpZnQtXFx1MDAzZWdhaXQgKyB6ZGV2LVxcdTAwM2VhaXNiO1xcbiBcXG5AQCAtMzE5LDEzICszNDUsMzYgQEAgc3RhdGljIGludCBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsIHN0cnVjdCB6cGNpX2ZpYiAqZmliLFxcbiBcXHQvKiBTYXZlIHNvbWUgZ3Vlc3QgZmliIHZhbHVlcyBpbiB0aGUgaG9zdCBmb3IgbGF0ZXIgdXNlICovXFxuIFxcdHpkZXYtXFx1MDAzZWt6ZGV2LVxcdTAwM2VmaWIuZm10MC5pc2MgPSBmaWItXFx1MDAzZWZtdDAuaXNjO1xcbiBcXHR6ZGV2LVxcdTAwM2VremRldi1cXHUwMDNlZmliLmZtdDAuYWlidiA9IGZpYi1cXHUwMDNlZm10MC5haWJ2O1xcbi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmFpZnQtXFx1MDAzZWFpZnRfbG9jayk7XFxuIFxcbiBcXHQvKiBJc3N1ZSB0aGUgY2xwIHRvIHNldHVwIHRoZSBpcnEgbm93ICovXFxuIFxcdHJjID0ga3ZtX3pwY2lfc2V0X2FpcnEoemRldik7XFxuLVxcdHJldHVybiByYztcXG4rXFx0aWYgKCFyYykge1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmFpZnQtXFx1MDAzZWFpZnRfbG9jayk7XFxuK1xcdFxcdHJldHVybiByYztcXG4rXFx0fVxcbitcXG4rXFx0LyogU3RhcnQgY2xlYW51cCAqL1xcbitcXHR6ZGV2LVxcdTAwM2VremRldi1cXHUwMDNlZmliLmZtdDAuaXNjID0gMDtcXG4rXFx0emRldi1cXHUwMDNla3pkZXYtXFx1MDAzZWZpYi5mbXQwLmFpYnYgPSAwO1xcbiBcXG4rXFx0c3Bpbl9sb2NrX2lycShcXHUwMDI2YWlmdC1cXHUwMDNlZ2FpdF9sb2NrKTtcXG4rXFx0Z2FpdGUtXFx1MDAzZWNvdW50LS07XFxuK1xcdGdhaXRlLVxcdTAwM2VhaXNiID0gMDtcXG4rXFx0Z2FpdGUtXFx1MDAzZWdpc2MgPSAwO1xcbitcXHRnYWl0ZS1cXHUwMDNlYWlzYm8gPSAwO1xcbitcXHRnYWl0ZS1cXHUwMDNlZ2lzYSA9IDA7XFxuK1xcdGFpZnQtXFx1MDAzZWt6ZGV2W3pkZXYtXFx1MDAzZWFpc2JdID0gTlVMTDtcXG4rXFx0c3Bpbl91bmxvY2tfaXJxKFxcdTAwMjZhaWZ0LVxcdTAwM2VnYWl0X2xvY2spO1xcbitcXG4rXFx0YWlycV9pdl9yZWxlYXNlKHpkZXYtXFx1MDAzZWFpYnYpO1xcbitcXHR6ZGV2LVxcdTAwM2VhaWJ2ID0gTlVMTDtcXG4rXFxuK2ZyZWVfYWlzYjpcXG4rXFx0YWlycV9pdl9mcmVlX2JpdChhaWZ0LVxcdTAwM2VzYnYsIHpkZXYtXFx1MDAzZWFpc2IpO1xcbitcXHR6ZGV2LVxcdTAwM2VhaXNiID0gMDtcXG4gdW5sb2NrOlxcbitcXHRpZiAocGNvdW50IFxcdTAwM2UgMClcXG4rXFx0XFx0dW5hY2NvdW50X21lbSh6ZGV2LVxcdTAwM2VremRldiwgcGNvdW50KTtcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZhaWZ0LVxcdTAwM2VhaWZ0X2xvY2spO1xcbiB1bnBpbjI6XFxuIFxcdGlmIChmaWItXFx1MDAzZWZtdDAuc3VtID09IDEpXFxuQEAgLTM5Niw3ICs0NDUsNyBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX3BjaV9haWZfZGlzYWJsZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsIGJvb2wgZm9yY2UpXFxuIFxcdFxcdHBjb3VudCsrO1xcbiBcXHR9XFxuIFxcdGlmIChwY291bnQgXFx1MDAzZSAwKVxcbi1cXHRcXHR1bmFjY291bnRfbWVtKHBjb3VudCk7XFxuK1xcdFxcdHVuYWNjb3VudF9tZW0oa3pkZXYsIHBjb3VudCk7XFxuIG91dDpcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZhaWZ0LVxcdTAwM2VhaWZ0X2xvY2spO1xcbiBcXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9wY2kuaCBiL2FyY2gvczM5MC9rdm0vcGNpLmhcXG5pbmRleCBmZjA5NzJkZDVlNzFkYy4uNTQ0ZTZhYTc1ZTM4OGMgMTAwNjQ0XFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9wY2kuaFxcbisrKyBiL2FyY2gvczM5MC9rdm0vcGNpLmhcXG5AQCAtMjEsNiArMjEsOCBAQCBzdHJ1Y3Qga3ZtX3pkZXYge1xcbiBcXHRzdHJ1Y3QgenBjaV9kZXYgKnpkZXY7XFxuIFxcdHN0cnVjdCBrdm0gKmt2bTtcXG4gXFx0c3RydWN0IHpwY2lfZmliIGZpYjtcXG4rXFx0c3RydWN0IHVzZXJfc3RydWN0ICp1c2VyX2FjY291bnQ7XFxuK1xcdHN0cnVjdCBtbV9zdHJ1Y3QgKm1tX2FjY291bnQ7XFxuIFxcdHN0cnVjdCBsaXN0X2hlYWQgZW50cnk7XFxuIH07XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMDozOC4wMzg1MDI2MDVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0ODg0MzM1ODM2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWRklPX1BDSV9aREVWX0tWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9zMzkwX3BjaV9haWZfZW5hYmxlXCIsXG4gICAgXCJrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGVcIixcbiAgICBcImt2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW5cIixcbiAgICBcImt2bV9zMzkwX3BjaV96cGNpX29wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgczM5MHggS1ZNIFBDSSBwYXNzdGhyb3VnaCBsb2dpYywgc3BlY2lmaWNhbGx5IG1lbW9yeSBhY2NvdW50aW5nIGFuZCBjbGVhbnVwIHBhdGhzIGR1cmluZyBBSUYgKEFkYXB0ZXIgSW50ZXJydXB0aW9uIEZhY2lsaXR5KSBlbmFibGUvZGlzYWJsZS4gVGhlc2UgYXJlIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyAoS1ZNX1MzOTBfWlBDSU9QX1JFR0FFTiBhbmQgS1ZNX1MzOTBfWlBDSU9QX0RFUkVHX0FFTikgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIG1lbW9yeSBsZWFrcyBvciByZWZlcmVuY2UgY291bnRpbmcgaXNzdWVzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZkN2Q1NmIzZTU1Y2FkYTQ4OGQzYzc5MmMxMzFhYTg5NWMwZTQwZTlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAxNiAyMzoyMDozNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vcGNpLmMgYi9hcmNoL3MzOTAva3ZtL3BjaS5jXG5pbmRleCA3MjBiYjU4Y2FiZTJlOS4uZjg1ZDg1NmI1OGM2NWMgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL3BjaS5jXG4rKysgYi9hcmNoL3MzOTAva3ZtL3BjaS5jXG5AQCAtMTkwLDMzICsxOTAsNTEgQEAgc3RhdGljIGludCBrdm1fenBjaV9jbGVhcl9haXJxKHN0cnVjdCB6cGNpX2RldiAqemRldilcbiBcdHJldHVybiBjYyA/IC1FSU8gOiAwO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIHZvaWQgdW5hY2NvdW50X21lbSh1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKVxuK3N0YXRpYyBpbmxpbmUgdm9pZCB1bmFjY291bnRfbWVtKHN0cnVjdCBrdm1femRldiAqa3pkZXYsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpXG4ge1xuLVx0c3RydWN0IHVzZXJfc3RydWN0ICp1c2VyID0gZ2V0X3VpZChjdXJyZW50X3VzZXIoKSk7XG4rXHRzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIgPSBremRldi1cdTAwM2V1c2VyX2FjY291bnQ7XG4rXHRzdHJ1Y3QgbW1fc3RydWN0ICptbV9hY2NvdW50ID0ga3pkZXYtXHUwMDNlbW1fYWNjb3VudDtcbiBcbi1cdGlmICh1c2VyKVxuK1x0aWYgKHVzZXIpIHtcbiBcdFx0YXRvbWljX2xvbmdfc3ViKG5yX3BhZ2VzLCBcdTAwMjZ1c2VyLVx1MDAzZWxvY2tlZF92bSk7XG4tXHRpZiAoY3VycmVudC1cdTAwM2VtbSlcbi1cdFx0YXRvbWljNjRfc3ViKG5yX3BhZ2VzLCBcdTAwMjZjdXJyZW50LVx1MDAzZW1tLVx1MDAzZXBpbm5lZF92bSk7XG4rXHRcdGZyZWVfdWlkKHVzZXIpO1xuK1x0XHRremRldi1cdTAwM2V1c2VyX2FjY291bnQgPSBOVUxMO1xuK1x0fVxuK1xuK1x0aWYgKG1tX2FjY291bnQpIHtcbitcdFx0YXRvbWljNjRfc3ViKG5yX3BhZ2VzLCBcdTAwMjZtbV9hY2NvdW50LVx1MDAzZXBpbm5lZF92bSk7XG4rXHRcdG1tZHJvcChtbV9hY2NvdW50KTtcbitcdFx0a3pkZXYtXHUwMDNlbW1fYWNjb3VudCA9IE5VTEw7XG4rXHR9XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgaW50IGFjY291bnRfbWVtKHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpXG4rc3RhdGljIGlubGluZSBpbnQgYWNjb3VudF9tZW0oc3RydWN0IGt2bV96ZGV2ICpremRldiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcylcbiB7XG4gXHRzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIgPSBnZXRfdWlkKGN1cnJlbnRfdXNlcigpKTtcbiBcdHVuc2lnbmVkIGxvbmcgcGFnZV9saW1pdCwgY3VyX3BhZ2VzLCBuZXdfcGFnZXM7XG4rXHRpbnQgcmMgPSAwO1xuIFxuIFx0cGFnZV9saW1pdCA9IHJsaW1pdChSTElNSVRfTUVNTE9DSykgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQ7XG4gXG4gXHRjdXJfcGFnZXMgPSBhdG9taWNfbG9uZ19yZWFkKFx1MDAyNnVzZXItXHUwMDNlbG9ja2VkX3ZtKTtcbiBcdGRvIHtcbiBcdFx0bmV3X3BhZ2VzID0gY3VyX3BhZ2VzICsgbnJfcGFnZXM7XG4tXHRcdGlmIChuZXdfcGFnZXMgXHUwMDNlIHBhZ2VfbGltaXQpXG4tXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4rXHRcdGlmIChuZXdfcGFnZXMgXHUwMDNlIHBhZ2VfbGltaXQpIHtcbitcdFx0XHRyYyA9ICAtRU5PTUVNO1xuK1x0XHRcdGdvdG8gb3V0O1xuK1x0XHR9XG4gXHR9IHdoaWxlICghYXRvbWljX2xvbmdfdHJ5X2NtcHhjaGcoXHUwMDI2dXNlci1cdTAwM2Vsb2NrZWRfdm0sIFx1MDAyNmN1cl9wYWdlcywgbmV3X3BhZ2VzKSk7XG4gXG4rXHRtbWdyYWIoY3VycmVudC1cdTAwM2VtbSk7XG4gXHRhdG9taWM2NF9hZGQobnJfcGFnZXMsIFx1MDAyNmN1cnJlbnQtXHUwMDNlbW0tXHUwMDNlcGlubmVkX3ZtKTtcbitcdGt6ZGV2LVx1MDAzZXVzZXJfYWNjb3VudCA9IHVzZXI7XG4rXHRremRldi1cdTAwM2VtbV9hY2NvdW50ID0gY3VycmVudC1cdTAwM2VtbTtcbiBcbiBcdHJldHVybiAwO1xuK1xuK291dDpcbitcdGZyZWVfdWlkKHVzZXIpO1xuK1x0cmV0dXJuIHJjO1xuIH1cbiBcbiBzdGF0aWMgaW50IGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlKHN0cnVjdCB6cGNpX2RldiAqemRldiwgc3RydWN0IHpwY2lfZmliICpmaWIsXG5AQCAtMjc1LDIwICsyOTMsMjggQEAgc3RhdGljIGludCBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsIHN0cnVjdCB6cGNpX2ZpYiAqZmliLFxuIFx0fVxuIFxuIFx0LyogQWNjb3VudCBmb3IgcGlubmVkIHBhZ2VzLCByb2xsIGJhY2sgb24gZmFpbHVyZSAqL1xuLVx0aWYgKGFjY291bnRfbWVtKHBjb3VudCkpXG4rXHRyYyA9IGFjY291bnRfbWVtKHpkZXYtXHUwMDNla3pkZXYsIHBjb3VudCk7XG4rXHRpZiAocmMpXG4gXHRcdGdvdG8gdW5waW4yO1xuIFxuIFx0LyogQUlTQiBtdXN0IGJlIGFsbG9jYXRlZCBiZWZvcmUgd2UgY2FuIGZpbGwgaW4gR0FJVEUgKi9cbiBcdG11dGV4X2xvY2soXHUwMDI2YWlmdC1cdTAwM2VhaWZ0X2xvY2spO1xuIFx0Yml0ID0gYWlycV9pdl9hbGxvY19iaXQoYWlmdC1cdTAwM2VzYnYpO1xuLVx0aWYgKGJpdCA9PSAtMVVMKVxuK1x0aWYgKGJpdCA9PSAtMVVMKSB7XG4rXHRcdHJjID0gLUVOT01FTTtcbiBcdFx0Z290byB1bmxvY2s7XG4rXHR9XG4gXHR6ZGV2LVx1MDAzZWFpc2IgPSBiaXQ7IC8qIHN0b3JlIHRoZSBzdW1tYXJ5IGJpdCBudW1iZXIgKi9cbiBcdHpkZXYtXHUwMDNlYWlidiA9IGFpcnFfaXZfY3JlYXRlKG1zaV92ZWNzLCBBSVJRX0lWX0RBVEEgfFxuIFx0XHRcdFx0ICAgIEFJUlFfSVZfQklUTE9DSyB8XG4gXHRcdFx0XHQgICAgQUlSUV9JVl9HVUVTVFZFQyxcbiBcdFx0XHRcdCAgICBwaHlzX3RvX3ZpcnQoZmliLVx1MDAzZWZtdDAuYWlidikpO1xuIFxuK1x0aWYgKCF6ZGV2LVx1MDAzZWFpYnYpIHtcbitcdFx0cmMgPSAtRU5PTUVNO1xuK1x0XHRnb3RvIGZyZWVfYWlzYjtcbitcdH1cbitcbiBcdHNwaW5fbG9ja19pcnEoXHUwMDI2YWlmdC1cdTAwM2VnYWl0X2xvY2spO1xuIFx0Z2FpdGUgPSBhaWZ0LVx1MDAzZWdhaXQgKyB6ZGV2LVx1MDAzZWFpc2I7XG4gXG5AQCAtMzE5LDEzICszNDUsMzYgQEAgc3RhdGljIGludCBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsIHN0cnVjdCB6cGNpX2ZpYiAqZmliLFxuIFx0LyogU2F2ZSBzb21lIGd1ZXN0IGZpYiB2YWx1ZXMgaW4gdGhlIGhvc3QgZm9yIGxhdGVyIHVzZSAqL1xuIFx0emRldi1cdTAwM2VremRldi1cdTAwM2VmaWIuZm10MC5pc2MgPSBmaWItXHUwMDNlZm10MC5pc2M7XG4gXHR6ZGV2LVx1MDAzZWt6ZGV2LVx1MDAzZWZpYi5mbXQwLmFpYnYgPSBmaWItXHUwMDNlZm10MC5haWJ2O1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmFpZnQtXHUwMDNlYWlmdF9sb2NrKTtcbiBcbiBcdC8qIElzc3VlIHRoZSBjbHAgdG8gc2V0dXAgdGhlIGlycSBub3cgKi9cbiBcdHJjID0ga3ZtX3pwY2lfc2V0X2FpcnEoemRldik7XG4tXHRyZXR1cm4gcmM7XG4rXHRpZiAoIXJjKSB7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZhaWZ0LVx1MDAzZWFpZnRfbG9jayk7XG4rXHRcdHJldHVybiByYztcbitcdH1cbitcbitcdC8qIFN0YXJ0IGNsZWFudXAgKi9cbitcdHpkZXYtXHUwMDNla3pkZXYtXHUwMDNlZmliLmZtdDAuaXNjID0gMDtcbitcdHpkZXYtXHUwMDNla3pkZXYtXHUwMDNlZmliLmZtdDAuYWlidiA9IDA7XG4gXG4rXHRzcGluX2xvY2tfaXJxKFx1MDAyNmFpZnQtXHUwMDNlZ2FpdF9sb2NrKTtcbitcdGdhaXRlLVx1MDAzZWNvdW50LS07XG4rXHRnYWl0ZS1cdTAwM2VhaXNiID0gMDtcbitcdGdhaXRlLVx1MDAzZWdpc2MgPSAwO1xuK1x0Z2FpdGUtXHUwMDNlYWlzYm8gPSAwO1xuK1x0Z2FpdGUtXHUwMDNlZ2lzYSA9IDA7XG4rXHRhaWZ0LVx1MDAzZWt6ZGV2W3pkZXYtXHUwMDNlYWlzYl0gPSBOVUxMO1xuK1x0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNmFpZnQtXHUwMDNlZ2FpdF9sb2NrKTtcbitcbitcdGFpcnFfaXZfcmVsZWFzZSh6ZGV2LVx1MDAzZWFpYnYpO1xuK1x0emRldi1cdTAwM2VhaWJ2ID0gTlVMTDtcbitcbitmcmVlX2Fpc2I6XG4rXHRhaXJxX2l2X2ZyZWVfYml0KGFpZnQtXHUwMDNlc2J2LCB6ZGV2LVx1MDAzZWFpc2IpO1xuK1x0emRldi1cdTAwM2VhaXNiID0gMDtcbiB1bmxvY2s6XG4rXHRpZiAocGNvdW50IFx1MDAzZSAwKVxuK1x0XHR1bmFjY291bnRfbWVtKHpkZXYtXHUwMDNla3pkZXYsIHBjb3VudCk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2YWlmdC1cdTAwM2VhaWZ0X2xvY2spO1xuIHVucGluMjpcbiBcdGlmIChmaWItXHUwMDNlZm10MC5zdW0gPT0gMSlcbkBAIC0zOTYsNyArNDQ1LDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGUoc3RydWN0IHpwY2lfZGV2ICp6ZGV2LCBib29sIGZvcmNlKVxuIFx0XHRwY291bnQrKztcbiBcdH1cbiBcdGlmIChwY291bnQgXHUwMDNlIDApXG4tXHRcdHVuYWNjb3VudF9tZW0ocGNvdW50KTtcbitcdFx0dW5hY2NvdW50X21lbShremRldiwgcGNvdW50KTtcbiBvdXQ6XG4gXHRtdXRleF91bmxvY2soXHUwMDI2YWlmdC1cdTAwM2VhaWZ0X2xvY2spO1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vcGNpLmggYi9hcmNoL3MzOTAva3ZtL3BjaS5oXG5pbmRleCBmZjA5NzJkZDVlNzFkYy4uNTQ0ZTZhYTc1ZTM4OGMgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL3BjaS5oXG4rKysgYi9hcmNoL3MzOTAva3ZtL3BjaS5oXG5AQCAtMjEsNiArMjEsOCBAQCBzdHJ1Y3Qga3ZtX3pkZXYge1xuIFx0c3RydWN0IHpwY2lfZGV2ICp6ZGV2O1xuIFx0c3RydWN0IGt2bSAqa3ZtO1xuIFx0c3RydWN0IHpwY2lfZmliIGZpYjtcbitcdHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcl9hY2NvdW50O1xuK1x0c3RydWN0IG1tX3N0cnVjdCAqbW1fYWNjb3VudDtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgZW50cnk7XG4gfTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIzOjIwOjM4LjAzODUwNDE5NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MDE1NDAxMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBzMzkwIEtWTSBQQ0kgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIOKAkyBpdCdzIHRvdWNoaW5nIGBhcmNoL3MzOTAva3ZtL3BjaS5jYCBhbmQgYGFyY2gvczM5MC9rdm0vcGNpLmhgLiBTZWVtcyBsaWtlIGl0J3MgYWRkcmVzc2luZyBzb21lIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlcyB3aXRoaW4gdGhlIHMzOTAgS1ZNIFBDSSBjb2RlLiBTcGVjaWZpY2FsbHksIGl0J3MgbW9kaWZ5aW5nIHRoZSBgdW5hY2NvdW50X21lbWAgYW5kIGBhY2NvdW50X21lbWAgZnVuY3Rpb25zIHRvIGhhbmRsZSBgdXNlcl9zdHJ1Y3RgIGFuZCBgbW1fc3RydWN0YCByZWZlcmVuY2VzIHByb3Blcmx5IHdpdGhpbiBga3ZtX3pkZXZgLiBHb29kIGNhdGNoOyB0aGVzZSBhcmUgdGhlIGtpbmRzIG9mIGxlYWtzIHRoYXQgY2FuIGJpdGUgeW91IGxhdGVyLiBBbHNvLCBpdCBsb29rcyBsaWtlIHRoZXJlIGFyZSBzb21lIGFkZGVkIGNsZWFudXAgcGF0aHMgaW4gYGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlYCB0byBncmFjZWZ1bGx5IGhhbmRsZSBmYWlsdXJlcywgd2hpY2ggaXMgYWx3YXlzIGEgZ29vZCBwcmFjdGljZSBmb3IgcmVzaWxpZW5jZS5cblxuTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgY29kZSBpcyBldmVuICpyZWFjaGFibGUqIGFuZCBpZiB0aGUgZml4IGlzIGZ1bmN0aW9uYWwuIEl0J3Mgb2J2aW91c2x5IHJlbGF0ZWQgdG8gS1ZNIG9uIHRoZSBzMzkwIGFyY2hpdGVjdHVyZSwgYW5kIGl0J3MgbW9kaWZ5aW5nIGBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZWAgYW5kIGBrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGVgLiBTbywgdGhlc2UgYXJlIGZ1bmN0aW9uYWwgZml4ZXMgZm9yIG1lbW9yeSBvciByZWZlcmVuY2UgbGVha3MuIFRoZSByZWFsIHRlc3QgaXM6IGNhbiB3ZSBhY3R1YWxseSAqcnVuKiB0aGlzPyBJcyBzMzkwIEtWTSBlYXNpbHkgdGVzdGFibGU/IFRoZW4sIEkgcmVtZW1iZXIhIFN5emthbGxlciBkb2VzIGhhdmUgczM5MHggS1ZNIGZ1enppbmcuIFRoYXQncyBmYW50YXN0aWMuXG5cbk5vdywgbGV0J3MgZmlyZSB1cCB0aGUgdG9vbHMuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIEtjb25maWcgb3B0aW9ucyBhcmUgcmVsZXZhbnQgYW5kIHRoZSBzeW1ib2xzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvZGUgdG8gZnVsbHkgYXNzZXNzIHRoZSBwYXRjaCdzIGludGVncmF0aW9uIGFuZCBpbXBhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MDIsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMDo0NC40NDAwNDYzODRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMxNDY3NzU0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fczM5MF9wY2lfYWlmX2VuYWJsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL3BjaS5jPTIxMT1zdGF0aWMgaW5saW5lIGludCBhY2NvdW50X21lbShzdHJ1Y3Qga3ZtX3pkZXYgKmt6ZGV2LCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9wY2kuYy0yMzktXFxuYXJjaC9zMzkwL2t2bS9wY2kuYzoyNDA6c3RhdGljIGludCBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsIHN0cnVjdCB6cGNpX2ZpYiAqZmliLFxcbmFyY2gvczM5MC9rdm0vcGNpLmMtMjQxLVxcdFxcdFxcdFxcdCAgIGJvb2wgYXNzaXN0KVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9wY2kuYz02NDU9c3RhdGljIGludCBrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuKHN0cnVjdCB6cGNpX2RldiAqemRldixcXG4tLVxcbmFyY2gvczM5MC9rdm0vcGNpLmMtNjY0LVxcdGhvc3RmbGFnID0gIShhcmdzLVxcdTAwM2V1LnJlZ19hZW4uZmxhZ3MgXFx1MDAyNiBLVk1fUzM5MF9aUENJT1BfUkVHQUVOX0hPU1QpO1xcbmFyY2gvczM5MC9rdm0vcGNpLmM6NjY1OlxcdHJldHVybiBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZSh6ZGV2LCBcXHUwMDI2ZmliLCBob3N0ZmxhZyk7XFxuYXJjaC9zMzkwL2t2bS9wY2kuYy02NjYtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMDo0OC43NTQ3MzIxMjVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxOTA3Mzg4OTQxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyByZXF1ZXN0ZWQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBmb3IgczM5MCBLVk0gUENJIFN1cHBvcnQqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byBmaWd1cmUgb3V0IHdoaWNoIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUga2VybmVsJ3MgYnVpbGQgc3lzdGVtLCBhcmUgcmVzcG9uc2libGUgZm9yIGVuYWJsaW5nIHRoZSBpbmNsdXNpb24gb2YgYGFyY2gvczM5MC9rdm0vcGNpLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhpcyBwYXJ0aWN1bGFyIGZpbGUgaXMgYnJvdWdodCBpbnRvIHRoZSBidWlsZC4gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBjb25maWd1cmF0aW9uIGZsYWdzIGFzc29jaWF0ZWQgd2l0aCB0aGUgS1ZNIHN1YnN5c3RlbSBvbiBzMzkwLCBmb2N1c2luZyBvbiB0aGUgUENJIGFzcGVjdHMgd2l0aGluIHRoYXQgYXJjaGl0ZWN0dXJlLiBJJ2xsIHByb2JhYmx5IHN0YXJ0IGJ5IGxvb2tpbmcgYXQgdGhlIHJlbGV2YW50IGBLY29uZmlnYCBmaWxlcyBhbmQgYE1ha2VmaWxlYCBlbnRyaWVzIHdpdGhpbiB0aGUgczM5MCBhbmQgS1ZNIGRpcmVjdG9yaWVzLiBNeSBleHBlY3RhdGlvbiBpcyB0aGUgY29uZmlndXJhdGlvbiB3aWxsIGxpa2VseSBiZSBkcml2ZW4gYnkgYSBjb21iaW5hdGlvbiBvZiBnZW5lcmFsIEtWTSBzZXR0aW5ncyBhbmQgczM5MC1zcGVjaWZpYyBhcmNoaXRlY3R1cmFsIGNvbnNpZGVyYXRpb25zLCBwb3NzaWJseSBpbnZvbHZpbmcgdGhpbmdzIGxpa2UgdmlydHVhbGl6YXRpb24gZmVhdHVyZXMsIGRldmljZSBhc3NpZ25tZW50LCBvciBzcGVjaWZpYyBQQ0kgZGV2aWNlIHN1cHBvcnQgb24gdGhhdCBwbGF0Zm9ybS4gSeKAmWxsIGJlIGxvb2tpbmcgZm9yIGtleXdvcmRzIGxpa2UgXCJLVk1cIiwgXCJQQ0lcIiwgXCJzMzkwXCIsIFwiQ09ORklHX1wiLCBhbmQgYW55dGhpbmcgcmVsYXRlZCB0byBkZXZpY2UgZHJpdmVycyBvciB2aXJ0dWFsaXphdGlvbi4gVWx0aW1hdGVseSwgSSB3YW50IHRvIGlzb2xhdGUgdGhlIGV4YWN0IGNvbmRpdGlvbmFsIHN0YXRlbWVudHMgdGhhdCB0cmlnZ2VyIHRoZSBjb21waWxhdGlvbiBvZiBgcGNpLmNgLCBzbyBJIGNhbiB1bmRlcnN0YW5kIHRoZSBsb2dpY2FsIHBhdGggZm9yIGl0cyBpbmNsdXNpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1ODAsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMTowNy44Mjg2MjM1OTRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQwNDI1NzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaVxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAva3ZtL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vTWFrZWZpbGU9MTI9a3ZtLXkgKz0gZGF0Lm8gZ21hcC5vIGZhdWx0aW4ub1xcbmFyY2gvczM5MC9rdm0vTWFrZWZpbGUtMTMtXFxuYXJjaC9zMzkwL2t2bS9NYWtlZmlsZToxNDprdm0tJChDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk0pICs9IHBjaS5vXFxuYXJjaC9zMzkwL2t2bS9NYWtlZmlsZS0xNS1vYmotJChDT05GSUdfS1ZNKSArPSBrdm0ub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMTowOC4zNjkwNjUyOTNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTk5NjAzMjcyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQsIGFuZCB3cml0aW5nIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYFZGSU9fUENJX1pERVZfS1ZNYCBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIHRoZSBjb25maWd1cmF0aW9uIGluIHF1ZXN0aW9uIGlzIGBWRklPX1BDSV9aREVWX0tWTWAuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBjaGVjayBgS1ZNYCBnZW5lcmFsbHksIGFzIGl0J3MgZGlyZWN0bHkgcmVmZXJlbmNlZC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoaXMgYFpERVZgIGZlYXR1cmUgYW5kIHRoZSBicm9hZGVyIEtWTSBmcmFtZXdvcmsuIElzIHRoaXMgYSBzcGVjaWZpYyBLVk0gZmVhdHVyZSwgb3IgZG9lcyBpdCBsZXZlcmFnZSBLVk0gaW4gYSBtb3JlIGdlbmVyYWwgc2Vuc2U/XG5cblRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSwgbXkgbmV4dCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmb3IgYFZGSU9fUENJX1pERVZfS1ZNYC4gSSdsbCBuZWVkIHRvIHNlZSB0aGUgZGVwZW5kZW5jaWVzLCBoZWxwIHRleHQsIGFuZCBhbnl0aGluZyBlbHNlIHRoYXQgbWlnaHQgaWxsdW1pbmF0ZSB3aGF0IHRoaXMgY29uZmlndXJhdGlvbiBhY3R1YWxseSAqZG9lcyouIEknbSBsb29raW5nIGZvciB0aGUgXCJ3aHlcIiBhbmQgXCJob3dcIiBiZWhpbmQgdGhpcy4gV2hhdCBvdGhlciBvcHRpb25zIGFyZSByZWxhdGVkPyBXaGF0IHByZXJlcXVpc2l0ZXMgYXJlIHRoZXJlPyBEb2VzIGl0IGJ1aWxkIGEgbW9kdWxlPyBJcyBpdCBhbiBpbnRyaW5zaWMgcGFydCBvZiB0aGUga2VybmVsPyBXaGF0J3MgdGhlIGNvbnRleHQsIHRoZSB0cmFkZSBvZmZzLCBhbmQgc28gb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMzQsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMTozNC4zNjUxMDExMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTg4MzYzNjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWRklPX1BDSV9aREVWX0tWTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc9NDU9ZW5kaWZcXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNDYtXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjQ3OmNvbmZpZyBWRklPX1BDSV9aREVWX0tWTVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00OC1cXHRib29sIFxcXCJWRklPIFBDSSBleHRlbnNpb25zIGZvciBzMzkweCBLVk0gcGFzc3Rocm91Z2hcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIzOjIxOjM3LjM1MzQ2OTg5OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4MDE0MTQwNzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgQ2FsbGVycyBvZiBga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbmAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcm9sZSBvZiBga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbmAuIEZpcnN0LCBsZXQncyB0cmFjZSBpdHMgdXNhZ2UuIEknbSBnb2luZyB0byBsb29rIGF0IHRoZSBjcm9zcy1yZWZlcmVuY2VzLiBJIHdhbnQgdG8gc2VlIHdoaWNoIGZ1bmN0aW9ucyBhcmUgY2FsbGluZyB0aGlzIHNwZWNpZmljIHJvdXRpbmUuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkLiBUaGlzIHdpbGwgcG9pbnQgbWUgdG93YXJkcyB0aGUgc3BlY2lmaWMgc2NlbmFyaW9zIGFuZCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucyB3aGVyZSB0aGlzIEFFTiAoQXN5bmNocm9ub3VzIEV2ZW50IE5vdGlmaWNhdGlvbikgaGFuZGxpbmcgaXMgdHJpZ2dlcmVkLCBhbGxvd2luZyBtZSB0byBiZXR0ZXIgdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgWiBQQ0kgZGV2aWNlcyBhbmQgdGhlIEtWTSBzMzkwIGd1ZXN0LiBIb3BlZnVsbHksIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucyB3aWxsIHNoZWQgbGlnaHQgb24gd2hhdCB0cmlnZ2VycyB0aGVzZSBBRU5zIGFuZCB3aGF0IHRoZSBleHBlY3RlZCBzeXN0ZW0gYmVoYXZpb3IgaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NDcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMTo1NS4zNjc2MTMwNzlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MzU0OTMwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL3BjaS5jPTYyOD1zdGF0aWMgc3RydWN0IHpwY2lfZGV2ICpnZXRfemRldl9mcm9tX2t2bV9ieV9maChzdHJ1Y3Qga3ZtICprdm0sIHUzMiBmaClcXG4tLVxcbmFyY2gvczM5MC9rdm0vcGNpLmMtNjQ0LVxcbmFyY2gvczM5MC9rdm0vcGNpLmM6NjQ1OnN0YXRpYyBpbnQga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbihzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsXFxuYXJjaC9zMzkwL2t2bS9wY2kuYy02NDYtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qga3ZtX3MzOTBfenBjaV9vcCAqYXJncylcXG4tLVxcbmFyY2gvczM5MC9rdm0vcGNpLmM9NjY4PWludCBrdm1fczM5MF9wY2lfenBjaV9vcChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczM5MF96cGNpX29wICphcmdzKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9wY2kuYy02OTctXFx0XFx0fVxcbmFyY2gvczM5MC9rdm0vcGNpLmM6Njk4OlxcdFxcdHIgPSBrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuKHpkZXYsIGFyZ3MpO1xcbmFyY2gvczM5MC9rdm0vcGNpLmMtNjk5LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMTo1Ny44MDMxMTI4ODlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI3MTExNTIyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIFBDSSBQYXNzdGhyb3VnaCBMYW5kc2NhcGUgaW4gS1ZNL3MzOTAqKlxuXG5BbHJpZ2h0LCBJJ20gZGlnZ2luZyBpbnRvIHRoZSBLVk0vczM5MCBjb2RlIGFnYWluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIFBDSSBwYXNzdGhyb3VnaCBpbXBsZW1lbnRhdGlvbiBiZXR0ZXIuIEkgc2VlIHRoYXQgYGt2bV9zMzkwX3BjaV96cGNpX29wYCBmdW5jdGlvbiBpcyBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLiBUaGUgbmF0dXJhbCBuZXh0IHF1ZXN0aW9uIGlzICp3aGVyZSogaXMgaXQgYmVpbmcgaW52b2tlZD8gVW5kZXJzdGFuZGluZyBpdHMgY2FsbCBncmFwaCBpcyBjcnVjaWFsIHRvIGdyYXNwIGhvdyB0aGUgelBDSSBvcGVyYXRpb25zIGFyZSBiZWluZyByb3V0ZWQgYW5kIG1hbmFnZWQgd2l0aGluIHRoZSBLVk0gZnJhbWV3b3JrIG9uIHMzOTB4LiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgZnVuY3Rpb24gdG8gc2VlIHRoZSBkaWZmZXJlbnQgcGF0aHdheXMgdGhhdCBsZWFkIHRvIGl0LiBLbm93aW5nIHRoZSBjYWxsZXJzIHdpbGwgZXhwb3NlIHRoZSBzdXJyb3VuZGluZyBsb2dpYyBhbmQgdGhlIHNjZW5hcmlvcyB0aGF0IHRyaWdnZXIgdGhlc2UgY3J1Y2lhbCB6UENJIG9wZXJhdGlvbnMuIFRoYXQgY2FsbCBzdGFjayBpcyB3aGF0J3MgZ29pbmcgdG8gc2hlZCBsaWdodCBvbiBpdHMgcm9sZSB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwMjgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMjowMS4wNzQyMzEyODJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMTQwMzM5NjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3MzOTBfcGNpX3pwY2lfb3BcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTI5MjU9aW50IGt2bV9hcmNoX3ZtX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTMwOTItXFx0XFx0fVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzozMDkzOlxcdFxcdHIgPSBrdm1fczM5MF9wY2lfenBjaV9vcChrdm0sIFxcdTAwMjZhcmdzKTtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzA5NC1cXHRcXHRicmVhaztcXG4tLVxcbmFyY2gvczM5MC9rdm0vcGNpLmM9NjQ1PXN0YXRpYyBpbnQga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbihzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTY2Ny1cXG5hcmNoL3MzOTAva3ZtL3BjaS5jOjY2ODppbnQga3ZtX3MzOTBfcGNpX3pwY2lfb3Aoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3MzOTBfenBjaV9vcCAqYXJncylcXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTY2OS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL3BjaS5oPTYxPXZvaWQga3ZtX3MzOTBfcGNpX2NsZWFyX2xpc3Qoc3RydWN0IGt2bSAqa3ZtKTtcXG5hcmNoL3MzOTAva3ZtL3BjaS5oLTYyLVxcbmFyY2gvczM5MC9rdm0vcGNpLmg6NjM6aW50IGt2bV9zMzkwX3BjaV96cGNpX29wKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zMzkwX3pwY2lfb3AgKmFyZ3MpO1xcbmFyY2gvczM5MC9rdm0vcGNpLmgtNjQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIzOjIyOjAzLjM4ODI3MTc5NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4ODU5MzE3NjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTS9WRklPLVBDSSBaREVWIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoaXMgWkRFViBmdW5jdGlvbmFsaXR5IGlzIGV4cG9zZWQuIEl0IGxvb2tzIGxpa2UgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQgaXMgdGhyb3VnaCBLVk0gaW9jdGxzLCB3aGljaCBpcyB0aGUgZXhwZWN0ZWQgYXBwcm9hY2guIFRoZSBrZXJuZWwgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIHZlcmlmeSBhcmUgYEtWTWAgYW5kIGBWRklPX1BDSV9aREVWX0tWTWAuIEdvb2QsIHRoYXQgbWFrZXMgc2Vuc2UuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBjcml0aWNhbCBzeW1ib2xzLiBJdCBhcHBlYXJzIHRoZSBtYWluIGZvY3VzIGlzIG9uIGBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZWAsIGBrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGVgLCBga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbmAsIGFuZCBga3ZtX3MzOTBfcGNpX3pwY2lfb3BgLiBJJ2xsIHdhbnQgdG8gZm9jdXMgb24gdGhlc2UgZnVuY3Rpb25zIHRvIGdldCBhIGdvb2QgaGFuZGxlIG9uIHRoZSBjb250cm9sIGZsb3cuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgd2FudCB0byBzZWUgaWYgYW55IG90aGVyIGZ1bmN0aW9ucyBoYXZlIGJlZW4gbW9kaWZpZWQgb3IgYXJlIGludm9sdmVkLiBBaCwgaGVyZSB3ZSBhcmU7IGl0IGxvb2tzIGxpa2UgYGFjY291bnRfbWVtYCBhbmQgYHVuYWNjb3VudF9tZW1gIGFyZSBzdGF0aWMgaW5saW5lLiBUaGlzIG1lYW5zIHRoZXknbGwgYmUgaW50ZWdyYXRlZCBkaXJlY3RseSBpbnRvIHRoZSBgZW5hYmxlYCBhbmQgYGRpc2FibGVgIGZ1bmN0aW9ucywgc28gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgd2hlbiBJJ20gdHJhY2luZyBleGVjdXRpb24uIExldCdzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYGt2bV9zMzkwX3BjaV9haWZfZGlzYWJsZWAgdG8gc3RhcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NDksIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjM6MjI6MTIuMjQ3NTkxNjQzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjk5ODExMTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9zMzkwX3BjaV9haWZfZGlzYWJsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL3BjaS5jPTI0MD1zdGF0aWMgaW50IGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlKHN0cnVjdCB6cGNpX2RldiAqemRldiwgc3RydWN0IHpwY2lfZmliICpmaWIsXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTM4OC1cXG5hcmNoL3MzOTAva3ZtL3BjaS5jOjM4OTpzdGF0aWMgaW50IGt2bV9zMzkwX3BjaV9haWZfZGlzYWJsZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsIGJvb2wgZm9yY2UpXFxuYXJjaC9zMzkwL2t2bS9wY2kuYy0zOTAte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9wY2kuYz01NjA9c3RhdGljIHZvaWQga3ZtX3MzOTBfcGNpX3VucmVnaXN0ZXJfa3ZtKHZvaWQgKm9wYXF1ZSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vcGNpLmMtNTg2LVxcdGlmICh6ZGV2LVxcdTAwM2VremRldi1cXHUwMDNlZmliLmZtdDAuYWlidiAhPSAwKVxcbmFyY2gvczM5MC9rdm0vcGNpLmM6NTg3OlxcdFxcdGt2bV9zMzkwX3BjaV9haWZfZGlzYWJsZSh6ZGV2LCB0cnVlKTtcXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTU4OC1cXG4tLVxcbmFyY2gvczM5MC9rdm0vcGNpLmM9NjY4PWludCBrdm1fczM5MF9wY2lfenBjaV9vcChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczM5MF96cGNpX29wICphcmdzKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9wY2kuYy03MDAtXFx0Y2FzZSBLVk1fUzM5MF9aUENJT1BfREVSRUdfQUVOOlxcbmFyY2gvczM5MC9rdm0vcGNpLmM6NzAxOlxcdFxcdHIgPSBrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGUoemRldiwgZmFsc2UpO1xcbmFyY2gvczM5MC9rdm0vcGNpLmMtNzAyLVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMjoxNC41NDc0MDc4NzZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIxNzI2MTI0OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ3VycmVudCBUcmFpbiBvZiBUaG91Z2h0KipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGVgIGZ1bmN0aW9uIGFuZCByZWFsaXppbmcgaXQncyBhbHNvIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgYEtWTV9TMzkwX1pQQ0lPUF9ERVJFR19BRU5gIGlvY3RsLiBJbnRlcmVzdGluZy4gSSBuZWVkIHRvIG1ha2UgYSBtZW50YWwgbm90ZSBvZiB0aGF0IGNvbm5lY3Rpb24sIGFzIGl0IGNvdWxkIGhhdmUgYnJvYWRlciBpbXBsaWNhdGlvbnMuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHNlZSBpZiB3b3JraW5nIHdpdGggYFZGSU9fUENJX1pERVZfS1ZNYCByZXF1aXJlcyBhbnkgb3RoZXIgcGFydGljdWxhciBjb25maWd1cmF0aW9ucyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gSSBzaG91bGQgY29uc2lkZXIgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzY1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjM6MjI6MjYuNzIwMDIzMTg3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTI3MzkxODkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWRklPX1BDSV9aREVWX0tWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW8vcGNpL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnPTQ1PWVuZGlmXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTQ2LVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzo0Nzpjb25maWcgVkZJT19QQ0lfWkRFVl9LVk1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiVkZJTyBQQ0kgZXh0ZW5zaW9ucyBmb3IgczM5MHggS1ZNIHBhc3N0aHJvdWdoXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMjoyOC42NDc0MjA3OTdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTc4ODk4MjM3MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OlxuXG4qKkRlbHZpbmcgaW50byB0aGUgVkZJTyBLY29uZmlnIGZvciBVbmRlcnN0YW5kaW5nKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnYCBmaWxlLiBJJ20gc3BlY2lmaWNhbGx5IGludGVyZXN0ZWQgaW4gbGluZSA0NywgYXMgdGhhdCBhcmVhIHVzdWFsbHkgaG9sZHMgc29tZSBjcml0aWNhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3IgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCBvcHRpb25zIGFyZSBjb250cm9sbGVkIGhlcmUgZm9yIHRoZSBWRklPLVBDSSBkcml2ZXIuIElzIGl0IHRoZSBmZWF0dXJlIGZsYWdzLCBwbGF0Zm9ybSBzdXBwb3J0IG9yIHNwZWNpZmljIGhhcmR3YXJlIHJlcXVpcmVtZW50cyBJIG5lZWQgdG8gcmVtZW1iZXI/IExldCdzIHJlZnJlc2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxMDcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMjo0Ni41MzcyNDYxN1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjUzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3ZmaW8vcGNpL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDA6XFx0XFx0ICBhc3NpZ25tZW50IHRvIHZpcnR1YWwgbWFjaGluZXMuICBUaGlzIGluY2x1ZGVzIGV4cG9zaW5nIGFuIElHRFxcbiAgNDE6XFx0XFx0ICBzcGVjaWZpYyBmaXJtd2FyZSB0YWJsZSBhbmQgcmVhZC1vbmx5IGNvcGllcyBvZiB0aGUgaG9zdCBicmlkZ2VcXG4gIDQyOlxcdFxcdCAgYW5kIExQQyBicmlkZ2UgY29uZmlnIHNwYWNlLlxcbiAgNDM6XFx0XFxuICA0NDpcXHRcXHQgIFRvIGVuYWJsZSBJbnRlbCBJR0QgYXNzaWdubWVudCB0aHJvdWdoIHZmaW8tcGNpLCBzYXkgWS5cXG4gIDQ1OlxcdGVuZGlmXFxuICA0NjpcXHRcXG4gIDQ3OlxcdGNvbmZpZyBWRklPX1BDSV9aREVWX0tWTVxcbiAgNDg6XFx0XFx0Ym9vbCBcXFwiVkZJTyBQQ0kgZXh0ZW5zaW9ucyBmb3IgczM5MHggS1ZNIHBhc3N0aHJvdWdoXFxcIlxcbiAgNDk6XFx0XFx0ZGVwZW5kcyBvbiBTMzkwIFxcdTAwMjZcXHUwMDI2IEtWTVxcbiAgNTA6XFx0XFx0ZGVmYXVsdCB5XFxuICA1MTpcXHRcXHRoZWxwXFxuICA1MjpcXHRcXHQgIFN1cHBvcnQgczM5MHgtc3BlY2lmaWMgZXh0ZW5zaW9ucyB0byBlbmFibGUgc3VwcG9ydCBmb3IgZW5oYW5jZW1lbnRzXFxuICA1MzpcXHRcXHQgIHRvIEtWTSBwYXNzdGhyb3VnaCBjYXBhYmlsaXRpZXMsIHN1Y2ggYXMgaW50ZXJwcmV0aXZlIGV4ZWN1dGlvbiBvZlxcbiAgNTQ6XFx0XFx0ICB6UENJIGluc3RydWN0aW9ucy5cXG4gIDU1OlxcdFxcbiAgNTY6XFx0XFx0ICBUbyBlbmFibGUgczM5MHggS1ZNIHZmaW8tcGNpIGV4dGVuc2lvbnMsIHNheSBZLlxcbiAgNTc6XFx0XFxuICA1ODpcXHRjb25maWcgVkZJT19QQ0lfRE1BQlVGXFxuICA1OTpcXHRcXHRkZWZfYm9vbCB5IGlmIFZGSU9fUENJX0NPUkUgXFx1MDAyNlxcdTAwMjYgUENJX1AyUERNQSBcXHUwMDI2XFx1MDAyNiBETUFfU0hBUkVEX0JVRkZFUlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMjo0Ni41MzczMDQzNVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDIwNjE5MjU3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgRnV6emluZyBTdHJhdGVneSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYW5kIGl0J3MgcHJldHR5IGNsZWFyIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGZ1enppbmcgc3RyYXRlZ3kgZm9jdXNlZCBvbiB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBgUzM5MGAgYW5kIGBLVk1gLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgYFZGSU9fUENJX1pERVZfS1ZNYCBjb25maWd1cmF0aW9uLiBMZXQgbWUgYnJlYWsgaXQgZG93bi5cblxuRXNzZW50aWFsbHksIHdlJ3JlIHRhcmdldGluZyB0aGUgY2hhbmdlcyBpbiB0aGUgczM5MHggS1ZNIFBDSSBwYXNzdGhyb3VnaCBsb2dpYy4gV2UncmUgemVyb2luZyBpbiBvbiBtZW1vcnkgbWFuYWdlbWVudCBhbmQgY2xlYW51cCB3aXRoaW4gdGhlIEFJRiBlbmFibGUvZGlzYWJsZSBwYXRocy4gVGhpcyBpcyB3aGVyZSB0aGUgdnVsbmVyYWJpbGl0eSBpcyBsaWtlbHkgdG8gYmUuXG5cbldlJ3ZlIGdvdCBvdXIgdGFyZ2V0cyBjbGVhcmx5IGRlZmluZWQ6IGBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZWAsIGBrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGVgLCBga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbmAsIGFuZCBga3ZtX3MzOTBfcGNpX3pwY2lfb3BgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB0aHJvdWdoIEtWTSBpb2N0bHMsIHNwZWNpZmljYWxseSB0aGUgYEtWTV9TMzkwX1pQQ0lPUF9SRUdBRU5gIGFuZCBgS1ZNX1MzOTBfWlBDSU9QX0RFUkVHX0FFTmAgaW9jdGxzLiBUaGF0IG1ha2VzIHNlbnNlLCB0aG9zZSBhcmUgdGhlIGludGVyZmFjZXMgd2UgbmVlZCB0byBzY3J1dGluaXplLlxuXG5UaGUgcmVhc29uaW5nIGlzIHNvbGlkLCB3ZSBuZWVkIHRvIGZ1enogdGhlc2UgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBtZW1vcnkgbGVha3Mgb3IgcmVmZXJlbmNlIGNvdW50aW5nIGVycm9ycyBoYXBwZW5pbmcuIFRoaXMgaXMgcGFydGljdWxhcmx5IHJlbGV2YW50IGdpdmVuIHRoZSBjb21wbGV4IGludGVyYWN0aW9ucyB3aXRoaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBzdHJhdGVneSBpcyBkZWZpbml0ZWx5IHdvcnRod2hpbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1ODYsIk91dHB1dFRva2VucyI6MjEzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjM6MjM6MDYuNzQzNDk4NDk1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM4MzU1MzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWRklPX1BDSV9aREVWX0tWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9zMzkwX3BjaV9haWZfZW5hYmxlXCIsXG4gICAgXCJrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGVcIixcbiAgICBcImt2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW5cIixcbiAgICBcImt2bV9zMzkwX3BjaV96cGNpX29wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgczM5MHggS1ZNIFBDSSBwYXNzdGhyb3VnaCBsb2dpYywgc3BlY2lmaWNhbGx5IG1lbW9yeSBhY2NvdW50aW5nIGFuZCBjbGVhbnVwIHBhdGhzIGR1cmluZyBBSUYgKEFkYXB0ZXIgSW50ZXJydXB0aW9uIEZhY2lsaXR5KSBlbmFibGUvZGlzYWJsZS4gVGhlc2UgYXJlIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyAoS1ZNX1MzOTBfWlBDSU9QX1JFR0FFTiBhbmQgS1ZNX1MzOTBfWlBDSU9QX0RFUkVHX0FFTikgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIG1lbW9yeSBsZWFrcyBvciByZWZlcmVuY2UgY291bnRpbmcgaXNzdWVzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZGSU9fUENJX1pERVZfS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3MzOTBfcGNpX2FpZl9lbmFibGVcIixcbiAgICBcImt2bV9zMzkwX3BjaV9haWZfZGlzYWJsZVwiLFxuICAgIFwia3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlblwiLFxuICAgIFwia3ZtX3MzOTBfcGNpX3pwY2lfb3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBzMzkweCBLVk0gUENJIHBhc3N0aHJvdWdoIGxvZ2ljLCBzcGVjaWZpY2FsbHkgbWVtb3J5IGFjY291bnRpbmcgYW5kIGNsZWFudXAgcGF0aHMgZHVyaW5nIEFJRiAoQWRhcHRlciBJbnRlcnJ1cHRpb24gRmFjaWxpdHkpIGVuYWJsZS9kaXNhYmxlLiBUaGVzZSBhcmUgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIChLVk1fUzM5MF9aUENJT1BfUkVHQUVOIGFuZCBLVk1fUzM5MF9aUENJT1BfREVSRUdfQUVOKSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gbWVtb3J5IGxlYWtzIG9yIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZXMgb2NjdXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6bzws[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-16 22:54:31 +0000 UTC FinishedAt: 2026-07-16 23:23:09 +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": "25f744ffa0c8e799e06250ce2e618367b166b0d4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VFIO_PCI_ZDEV_KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "25f744ffa0c8e799e06250ce2e618367b166b0d4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VFIO_PCI_ZDEV_KVM" ], "series_id": "ffa2b561-c1df-4197-851e-64b3d0958b2d" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_s390_pci_aif_enable", "kvm_s390_pci_aif_disable", "kvm_s390_pci_zpci_reg_aen", "kvm_s390_pci_zpci_op" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE2IDIzOjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZGSU9fUENJX1pERVZfS1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3MzOTBfcGNpX2FpZl9lbmFibGUmIzM0OywKICAgICYjMzQ7a3ZtX3MzOTBfcGNpX2FpZl9kaXNhYmxlJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW4mIzM0OywKICAgICYjMzQ7a3ZtX3MzOTBfcGNpX3pwY2lfb3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgczM5MHggS1ZNIFBDSSBwYXNzdGhyb3VnaCBsb2dpYywgc3BlY2lmaWNhbGx5IG1lbW9yeSBhY2NvdW50aW5nIGFuZCBjbGVhbnVwIHBhdGhzIGR1cmluZyBBSUYgKEFkYXB0ZXIgSW50ZXJydXB0aW9uIEZhY2lsaXR5KSBlbmFibGUvZGlzYWJsZS4gVGhlc2UgYXJlIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyAoS1ZNX1MzOTBfWlBDSU9QX1JFR0FFTiBhbmQgS1ZNX1MzOTBfWlBDSU9QX0RFUkVHX0FFTikgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIG1lbW9yeSBsZWFrcyBvciByZWZlcmVuY2UgY291bnRpbmcgaXNzdWVzIG9jY3VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIzOjIwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZmQ3ZDU2YjNlNTVjYWRhNDg4ZDNjNzkyYzEzMWFhODk1YzBlNDBlOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDE2IDIzOjIwOjM0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vcGNpLmMgYi9hcmNoL3MzOTAva3ZtL3BjaS5jXG5pbmRleCA3MjBiYjU4Y2FiZTJlOS4uZjg1ZDg1NmI1OGM2NWMgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL3BjaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAva3ZtL3BjaS5jXG5AQCAtMTkwLDMzICYjNDM7MTkwLDUxIEBAIHN0YXRpYyBpbnQga3ZtX3pwY2lfY2xlYXJfYWlycShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYpXG4gXHRyZXR1cm4gY2MgPyAtRUlPIDogMDtcbiB9XG4gXG4tc3RhdGljIGlubGluZSB2b2lkIHVuYWNjb3VudF9tZW0odW5zaWduZWQgbG9uZyBucl9wYWdlcylcbiYjNDM7c3RhdGljIGlubGluZSB2b2lkIHVuYWNjb3VudF9tZW0oc3RydWN0IGt2bV96ZGV2ICpremRldiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcylcbiB7XG4tXHRzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIgPSBnZXRfdWlkKGN1cnJlbnRfdXNlcigpKTtcbiYjNDM7XHRzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIgPSBremRldi1cdTAwM2V1c2VyX2FjY291bnQ7XG4mIzQzO1x0c3RydWN0IG1tX3N0cnVjdCAqbW1fYWNjb3VudCA9IGt6ZGV2LVx1MDAzZW1tX2FjY291bnQ7XG4gXG4tXHRpZiAodXNlcilcbiYjNDM7XHRpZiAodXNlcikge1xuIFx0XHRhdG9taWNfbG9uZ19zdWIobnJfcGFnZXMsIFx1MDAyNnVzZXItXHUwMDNlbG9ja2VkX3ZtKTtcbi1cdGlmIChjdXJyZW50LVx1MDAzZW1tKVxuLVx0XHRhdG9taWM2NF9zdWIobnJfcGFnZXMsIFx1MDAyNmN1cnJlbnQtXHUwMDNlbW0tXHUwMDNlcGlubmVkX3ZtKTtcbiYjNDM7XHRcdGZyZWVfdWlkKHVzZXIpO1xuJiM0MztcdFx0a3pkZXYtXHUwMDNldXNlcl9hY2NvdW50ID0gTlVMTDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChtbV9hY2NvdW50KSB7XG4mIzQzO1x0XHRhdG9taWM2NF9zdWIobnJfcGFnZXMsIFx1MDAyNm1tX2FjY291bnQtXHUwMDNlcGlubmVkX3ZtKTtcbiYjNDM7XHRcdG1tZHJvcChtbV9hY2NvdW50KTtcbiYjNDM7XHRcdGt6ZGV2LVx1MDAzZW1tX2FjY291bnQgPSBOVUxMO1xuJiM0MztcdH1cbiB9XG4gXG4tc3RhdGljIGlubGluZSBpbnQgYWNjb3VudF9tZW0odW5zaWduZWQgbG9uZyBucl9wYWdlcylcbiYjNDM7c3RhdGljIGlubGluZSBpbnQgYWNjb3VudF9tZW0oc3RydWN0IGt2bV96ZGV2ICpremRldiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcylcbiB7XG4gXHRzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIgPSBnZXRfdWlkKGN1cnJlbnRfdXNlcigpKTtcbiBcdHVuc2lnbmVkIGxvbmcgcGFnZV9saW1pdCwgY3VyX3BhZ2VzLCBuZXdfcGFnZXM7XG4mIzQzO1x0aW50IHJjID0gMDtcbiBcbiBcdHBhZ2VfbGltaXQgPSBybGltaXQoUkxJTUlUX01FTUxPQ0spIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUO1xuIFxuIFx0Y3VyX3BhZ2VzID0gYXRvbWljX2xvbmdfcmVhZChcdTAwMjZ1c2VyLVx1MDAzZWxvY2tlZF92bSk7XG4gXHRkbyB7XG4gXHRcdG5ld19wYWdlcyA9IGN1cl9wYWdlcyAmIzQzOyBucl9wYWdlcztcbi1cdFx0aWYgKG5ld19wYWdlcyBcdTAwM2UgcGFnZV9saW1pdClcbi1cdFx0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XHRcdGlmIChuZXdfcGFnZXMgXHUwMDNlIHBhZ2VfbGltaXQpIHtcbiYjNDM7XHRcdFx0cmMgPSAgLUVOT01FTTtcbiYjNDM7XHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHR9XG4gXHR9IHdoaWxlICghYXRvbWljX2xvbmdfdHJ5X2NtcHhjaGcoXHUwMDI2dXNlci1cdTAwM2Vsb2NrZWRfdm0sIFx1MDAyNmN1cl9wYWdlcywgbmV3X3BhZ2VzKSk7XG4gXG4mIzQzO1x0bW1ncmFiKGN1cnJlbnQtXHUwMDNlbW0pO1xuIFx0YXRvbWljNjRfYWRkKG5yX3BhZ2VzLCBcdTAwMjZjdXJyZW50LVx1MDAzZW1tLVx1MDAzZXBpbm5lZF92bSk7XG4mIzQzO1x0a3pkZXYtXHUwMDNldXNlcl9hY2NvdW50ID0gdXNlcjtcbiYjNDM7XHRremRldi1cdTAwM2VtbV9hY2NvdW50ID0gY3VycmVudC1cdTAwM2VtbTtcbiBcbiBcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7b3V0OlxuJiM0MztcdGZyZWVfdWlkKHVzZXIpO1xuJiM0MztcdHJldHVybiByYztcbiB9XG4gXG4gc3RhdGljIGludCBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsIHN0cnVjdCB6cGNpX2ZpYiAqZmliLFxuQEAgLTI3NSwyMCAmIzQzOzI5MywyOCBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlKHN0cnVjdCB6cGNpX2RldiAqemRldiwgc3RydWN0IHpwY2lfZmliICpmaWIsXG4gXHR9XG4gXG4gXHQvKiBBY2NvdW50IGZvciBwaW5uZWQgcGFnZXMsIHJvbGwgYmFjayBvbiBmYWlsdXJlICovXG4tXHRpZiAoYWNjb3VudF9tZW0ocGNvdW50KSlcbiYjNDM7XHRyYyA9IGFjY291bnRfbWVtKHpkZXYtXHUwMDNla3pkZXYsIHBjb3VudCk7XG4mIzQzO1x0aWYgKHJjKVxuIFx0XHRnb3RvIHVucGluMjtcbiBcbiBcdC8qIEFJU0IgbXVzdCBiZSBhbGxvY2F0ZWQgYmVmb3JlIHdlIGNhbiBmaWxsIGluIEdBSVRFICovXG4gXHRtdXRleF9sb2NrKFx1MDAyNmFpZnQtXHUwMDNlYWlmdF9sb2NrKTtcbiBcdGJpdCA9IGFpcnFfaXZfYWxsb2NfYml0KGFpZnQtXHUwMDNlc2J2KTtcbi1cdGlmIChiaXQgPT0gLTFVTClcbiYjNDM7XHRpZiAoYml0ID09IC0xVUwpIHtcbiYjNDM7XHRcdHJjID0gLUVOT01FTTtcbiBcdFx0Z290byB1bmxvY2s7XG4mIzQzO1x0fVxuIFx0emRldi1cdTAwM2VhaXNiID0gYml0OyAvKiBzdG9yZSB0aGUgc3VtbWFyeSBiaXQgbnVtYmVyICovXG4gXHR6ZGV2LVx1MDAzZWFpYnYgPSBhaXJxX2l2X2NyZWF0ZShtc2lfdmVjcywgQUlSUV9JVl9EQVRBIHxcbiBcdFx0XHRcdCAgICBBSVJRX0lWX0JJVExPQ0sgfFxuIFx0XHRcdFx0ICAgIEFJUlFfSVZfR1VFU1RWRUMsXG4gXHRcdFx0XHQgICAgcGh5c190b192aXJ0KGZpYi1cdTAwM2VmbXQwLmFpYnYpKTtcbiBcbiYjNDM7XHRpZiAoIXpkZXYtXHUwMDNlYWlidikge1xuJiM0MztcdFx0cmMgPSAtRU5PTUVNO1xuJiM0MztcdFx0Z290byBmcmVlX2Fpc2I7XG4mIzQzO1x0fVxuJiM0MztcbiBcdHNwaW5fbG9ja19pcnEoXHUwMDI2YWlmdC1cdTAwM2VnYWl0X2xvY2spO1xuIFx0Z2FpdGUgPSBhaWZ0LVx1MDAzZWdhaXQgJiM0MzsgemRldi1cdTAwM2VhaXNiO1xuIFxuQEAgLTMxOSwxMyAmIzQzOzM0NSwzNiBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlKHN0cnVjdCB6cGNpX2RldiAqemRldiwgc3RydWN0IHpwY2lfZmliICpmaWIsXG4gXHQvKiBTYXZlIHNvbWUgZ3Vlc3QgZmliIHZhbHVlcyBpbiB0aGUgaG9zdCBmb3IgbGF0ZXIgdXNlICovXG4gXHR6ZGV2LVx1MDAzZWt6ZGV2LVx1MDAzZWZpYi5mbXQwLmlzYyA9IGZpYi1cdTAwM2VmbXQwLmlzYztcbiBcdHpkZXYtXHUwMDNla3pkZXYtXHUwMDNlZmliLmZtdDAuYWlidiA9IGZpYi1cdTAwM2VmbXQwLmFpYnY7XG4tXHRtdXRleF91bmxvY2soXHUwMDI2YWlmdC1cdTAwM2VhaWZ0X2xvY2spO1xuIFxuIFx0LyogSXNzdWUgdGhlIGNscCB0byBzZXR1cCB0aGUgaXJxIG5vdyAqL1xuIFx0cmMgPSBrdm1fenBjaV9zZXRfYWlycSh6ZGV2KTtcbi1cdHJldHVybiByYztcbiYjNDM7XHRpZiAoIXJjKSB7XG4mIzQzO1x0XHRtdXRleF91bmxvY2soXHUwMDI2YWlmdC1cdTAwM2VhaWZ0X2xvY2spO1xuJiM0MztcdFx0cmV0dXJuIHJjO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LyogU3RhcnQgY2xlYW51cCAqL1xuJiM0MztcdHpkZXYtXHUwMDNla3pkZXYtXHUwMDNlZmliLmZtdDAuaXNjID0gMDtcbiYjNDM7XHR6ZGV2LVx1MDAzZWt6ZGV2LVx1MDAzZWZpYi5mbXQwLmFpYnYgPSAwO1xuIFxuJiM0MztcdHNwaW5fbG9ja19pcnEoXHUwMDI2YWlmdC1cdTAwM2VnYWl0X2xvY2spO1xuJiM0MztcdGdhaXRlLVx1MDAzZWNvdW50LS07XG4mIzQzO1x0Z2FpdGUtXHUwMDNlYWlzYiA9IDA7XG4mIzQzO1x0Z2FpdGUtXHUwMDNlZ2lzYyA9IDA7XG4mIzQzO1x0Z2FpdGUtXHUwMDNlYWlzYm8gPSAwO1xuJiM0MztcdGdhaXRlLVx1MDAzZWdpc2EgPSAwO1xuJiM0MztcdGFpZnQtXHUwMDNla3pkZXZbemRldi1cdTAwM2VhaXNiXSA9IE5VTEw7XG4mIzQzO1x0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNmFpZnQtXHUwMDNlZ2FpdF9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0YWlycV9pdl9yZWxlYXNlKHpkZXYtXHUwMDNlYWlidik7XG4mIzQzO1x0emRldi1cdTAwM2VhaWJ2ID0gTlVMTDtcbiYjNDM7XG4mIzQzO2ZyZWVfYWlzYjpcbiYjNDM7XHRhaXJxX2l2X2ZyZWVfYml0KGFpZnQtXHUwMDNlc2J2LCB6ZGV2LVx1MDAzZWFpc2IpO1xuJiM0MztcdHpkZXYtXHUwMDNlYWlzYiA9IDA7XG4gdW5sb2NrOlxuJiM0MztcdGlmIChwY291bnQgXHUwMDNlIDApXG4mIzQzO1x0XHR1bmFjY291bnRfbWVtKHpkZXYtXHUwMDNla3pkZXYsIHBjb3VudCk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2YWlmdC1cdTAwM2VhaWZ0X2xvY2spO1xuIHVucGluMjpcbiBcdGlmIChmaWItXHUwMDNlZm10MC5zdW0gPT0gMSlcbkBAIC0zOTYsNyAmIzQzOzQ0NSw3IEBAIHN0YXRpYyBpbnQga3ZtX3MzOTBfcGNpX2FpZl9kaXNhYmxlKHN0cnVjdCB6cGNpX2RldiAqemRldiwgYm9vbCBmb3JjZSlcbiBcdFx0cGNvdW50JiM0MzsmIzQzOztcbiBcdH1cbiBcdGlmIChwY291bnQgXHUwMDNlIDApXG4tXHRcdHVuYWNjb3VudF9tZW0ocGNvdW50KTtcbiYjNDM7XHRcdHVuYWNjb3VudF9tZW0oa3pkZXYsIHBjb3VudCk7XG4gb3V0OlxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmFpZnQtXHUwMDNlYWlmdF9sb2NrKTtcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3BjaS5oIGIvYXJjaC9zMzkwL2t2bS9wY2kuaFxuaW5kZXggZmYwOTcyZGQ1ZTcxZGMuLjU0NGU2YWE3NWUzODhjIDEwMDY0NFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9wY2kuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2t2bS9wY2kuaFxuQEAgLTIxLDYgJiM0MzsyMSw4IEBAIHN0cnVjdCBrdm1femRldiB7XG4gXHRzdHJ1Y3QgenBjaV9kZXYgKnpkZXY7XG4gXHRzdHJ1Y3Qga3ZtICprdm07XG4gXHRzdHJ1Y3QgenBjaV9maWIgZmliO1xuJiM0MztcdHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcl9hY2NvdW50O1xuJiM0MztcdHN0cnVjdCBtbV9zdHJ1Y3QgKm1tX2FjY291bnQ7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIGVudHJ5O1xuIH07XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjM6MjA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkZJT19QQ0lfWkRFVl9LVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fczM5MF9wY2lfYWlmX2VuYWJsZSYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGUmIzM0OywKICAgICYjMzQ7a3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbiYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9wY2lfenBjaV9vcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBzMzkweCBLVk0gUENJIHBhc3N0aHJvdWdoIGxvZ2ljLCBzcGVjaWZpY2FsbHkgbWVtb3J5IGFjY291bnRpbmcgYW5kIGNsZWFudXAgcGF0aHMgZHVyaW5nIEFJRiAoQWRhcHRlciBJbnRlcnJ1cHRpb24gRmFjaWxpdHkpIGVuYWJsZS9kaXNhYmxlLiBUaGVzZSBhcmUgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIChLVk1fUzM5MF9aUENJT1BfUkVHQUVOIGFuZCBLVk1fUzM5MF9aUENJT1BfREVSRUdfQUVOKSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gbWVtb3J5IGxlYWtzIG9yIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZXMgb2NjdXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZkN2Q1NmIzZTU1Y2FkYTQ4OGQzYzc5MmMxMzFhYTg5NWMwZTQwZTkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAxNiAyMzoyMDozNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vcGNpLmMgYi9hcmNoL3MzOTAva3ZtL3BjaS5jCmluZGV4IDcyMGJiNThjYWJlMmU5Li5mODVkODU2YjU4YzY1YyAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2t2bS9wY2kuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3MzOTAva3ZtL3BjaS5jCkBAIC0xOTAsMzMgJiM0MzsxOTAsNTEgQEAgc3RhdGljIGludCBrdm1fenBjaV9jbGVhcl9haXJxKHN0cnVjdCB6cGNpX2RldiAqemRldikKIAlyZXR1cm4gY2MgPyAtRUlPIDogMDsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHVuYWNjb3VudF9tZW0odW5zaWduZWQgbG9uZyBucl9wYWdlcykKJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgdW5hY2NvdW50X21lbShzdHJ1Y3Qga3ZtX3pkZXYgKmt6ZGV2LCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKQogewotCXN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlciA9IGdldF91aWQoY3VycmVudF91c2VyKCkpOwomIzQzOwlzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIgPSBremRldi0mZ3Q7dXNlcl9hY2NvdW50OwomIzQzOwlzdHJ1Y3QgbW1fc3RydWN0ICptbV9hY2NvdW50ID0ga3pkZXYtJmd0O21tX2FjY291bnQ7CiAKLQlpZiAodXNlcikKJiM0MzsJaWYgKHVzZXIpIHsKIAkJYXRvbWljX2xvbmdfc3ViKG5yX3BhZ2VzLCAmYW1wO3VzZXItJmd0O2xvY2tlZF92bSk7Ci0JaWYgKGN1cnJlbnQtJmd0O21tKQotCQlhdG9taWM2NF9zdWIobnJfcGFnZXMsICZhbXA7Y3VycmVudC0mZ3Q7bW0tJmd0O3Bpbm5lZF92bSk7CiYjNDM7CQlmcmVlX3VpZCh1c2VyKTsKJiM0MzsJCWt6ZGV2LSZndDt1c2VyX2FjY291bnQgPSBOVUxMOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChtbV9hY2NvdW50KSB7CiYjNDM7CQlhdG9taWM2NF9zdWIobnJfcGFnZXMsICZhbXA7bW1fYWNjb3VudC0mZ3Q7cGlubmVkX3ZtKTsKJiM0MzsJCW1tZHJvcChtbV9hY2NvdW50KTsKJiM0MzsJCWt6ZGV2LSZndDttbV9hY2NvdW50ID0gTlVMTDsKJiM0MzsJfQogfQogCi1zdGF0aWMgaW5saW5lIGludCBhY2NvdW50X21lbSh1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKQomIzQzO3N0YXRpYyBpbmxpbmUgaW50IGFjY291bnRfbWVtKHN0cnVjdCBrdm1femRldiAqa3pkZXYsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpCiB7CiAJc3RydWN0IHVzZXJfc3RydWN0ICp1c2VyID0gZ2V0X3VpZChjdXJyZW50X3VzZXIoKSk7CiAJdW5zaWduZWQgbG9uZyBwYWdlX2xpbWl0LCBjdXJfcGFnZXMsIG5ld19wYWdlczsKJiM0MzsJaW50IHJjID0gMDsKIAogCXBhZ2VfbGltaXQgPSBybGltaXQoUkxJTUlUX01FTUxPQ0spICZndDsmZ3Q7IFBBR0VfU0hJRlQ7CiAKIAljdXJfcGFnZXMgPSBhdG9taWNfbG9uZ19yZWFkKCZhbXA7dXNlci0mZ3Q7bG9ja2VkX3ZtKTsKIAlkbyB7CiAJCW5ld19wYWdlcyA9IGN1cl9wYWdlcyAmIzQzOyBucl9wYWdlczsKLQkJaWYgKG5ld19wYWdlcyAmZ3Q7IHBhZ2VfbGltaXQpCi0JCQlyZXR1cm4gLUVOT01FTTsKJiM0MzsJCWlmIChuZXdfcGFnZXMgJmd0OyBwYWdlX2xpbWl0KSB7CiYjNDM7CQkJcmMgPSAgLUVOT01FTTsKJiM0MzsJCQlnb3RvIG91dDsKJiM0MzsJCX0KIAl9IHdoaWxlICghYXRvbWljX2xvbmdfdHJ5X2NtcHhjaGcoJmFtcDt1c2VyLSZndDtsb2NrZWRfdm0sICZhbXA7Y3VyX3BhZ2VzLCBuZXdfcGFnZXMpKTsKIAomIzQzOwltbWdyYWIoY3VycmVudC0mZ3Q7bW0pOwogCWF0b21pYzY0X2FkZChucl9wYWdlcywgJmFtcDtjdXJyZW50LSZndDttbS0mZ3Q7cGlubmVkX3ZtKTsKJiM0MzsJa3pkZXYtJmd0O3VzZXJfYWNjb3VudCA9IHVzZXI7CiYjNDM7CWt6ZGV2LSZndDttbV9hY2NvdW50ID0gY3VycmVudC0mZ3Q7bW07CiAKIAlyZXR1cm4gMDsKJiM0MzsKJiM0MztvdXQ6CiYjNDM7CWZyZWVfdWlkKHVzZXIpOwomIzQzOwlyZXR1cm4gcmM7CiB9CiAKIHN0YXRpYyBpbnQga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGUoc3RydWN0IHpwY2lfZGV2ICp6ZGV2LCBzdHJ1Y3QgenBjaV9maWIgKmZpYiwKQEAgLTI3NSwyMCAmIzQzOzI5MywyOCBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlKHN0cnVjdCB6cGNpX2RldiAqemRldiwgc3RydWN0IHpwY2lfZmliICpmaWIsCiAJfQogCiAJLyogQWNjb3VudCBmb3IgcGlubmVkIHBhZ2VzLCByb2xsIGJhY2sgb24gZmFpbHVyZSAqLwotCWlmIChhY2NvdW50X21lbShwY291bnQpKQomIzQzOwlyYyA9IGFjY291bnRfbWVtKHpkZXYtJmd0O2t6ZGV2LCBwY291bnQpOwomIzQzOwlpZiAocmMpCiAJCWdvdG8gdW5waW4yOwogCiAJLyogQUlTQiBtdXN0IGJlIGFsbG9jYXRlZCBiZWZvcmUgd2UgY2FuIGZpbGwgaW4gR0FJVEUgKi8KIAltdXRleF9sb2NrKCZhbXA7YWlmdC0mZ3Q7YWlmdF9sb2NrKTsKIAliaXQgPSBhaXJxX2l2X2FsbG9jX2JpdChhaWZ0LSZndDtzYnYpOwotCWlmIChiaXQgPT0gLTFVTCkKJiM0MzsJaWYgKGJpdCA9PSAtMVVMKSB7CiYjNDM7CQlyYyA9IC1FTk9NRU07CiAJCWdvdG8gdW5sb2NrOwomIzQzOwl9CiAJemRldi0mZ3Q7YWlzYiA9IGJpdDsgLyogc3RvcmUgdGhlIHN1bW1hcnkgYml0IG51bWJlciAqLwogCXpkZXYtJmd0O2FpYnYgPSBhaXJxX2l2X2NyZWF0ZShtc2lfdmVjcywgQUlSUV9JVl9EQVRBIHwKIAkJCQkgICAgQUlSUV9JVl9CSVRMT0NLIHwKIAkJCQkgICAgQUlSUV9JVl9HVUVTVFZFQywKIAkJCQkgICAgcGh5c190b192aXJ0KGZpYi0mZ3Q7Zm10MC5haWJ2KSk7CiAKJiM0MzsJaWYgKCF6ZGV2LSZndDthaWJ2KSB7CiYjNDM7CQlyYyA9IC1FTk9NRU07CiYjNDM7CQlnb3RvIGZyZWVfYWlzYjsKJiM0MzsJfQomIzQzOwogCXNwaW5fbG9ja19pcnEoJmFtcDthaWZ0LSZndDtnYWl0X2xvY2spOwogCWdhaXRlID0gYWlmdC0mZ3Q7Z2FpdCAmIzQzOyB6ZGV2LSZndDthaXNiOwogCkBAIC0zMTksMTMgJiM0MzszNDUsMzYgQEAgc3RhdGljIGludCBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsIHN0cnVjdCB6cGNpX2ZpYiAqZmliLAogCS8qIFNhdmUgc29tZSBndWVzdCBmaWIgdmFsdWVzIGluIHRoZSBob3N0IGZvciBsYXRlciB1c2UgKi8KIAl6ZGV2LSZndDtremRldi0mZ3Q7ZmliLmZtdDAuaXNjID0gZmliLSZndDtmbXQwLmlzYzsKIAl6ZGV2LSZndDtremRldi0mZ3Q7ZmliLmZtdDAuYWlidiA9IGZpYi0mZ3Q7Zm10MC5haWJ2OwotCW11dGV4X3VubG9jaygmYW1wO2FpZnQtJmd0O2FpZnRfbG9jayk7CiAKIAkvKiBJc3N1ZSB0aGUgY2xwIHRvIHNldHVwIHRoZSBpcnEgbm93ICovCiAJcmMgPSBrdm1fenBjaV9zZXRfYWlycSh6ZGV2KTsKLQlyZXR1cm4gcmM7CiYjNDM7CWlmICghcmMpIHsKJiM0MzsJCW11dGV4X3VubG9jaygmYW1wO2FpZnQtJmd0O2FpZnRfbG9jayk7CiYjNDM7CQlyZXR1cm4gcmM7CiYjNDM7CX0KJiM0MzsKJiM0MzsJLyogU3RhcnQgY2xlYW51cCAqLwomIzQzOwl6ZGV2LSZndDtremRldi0mZ3Q7ZmliLmZtdDAuaXNjID0gMDsKJiM0MzsJemRldi0mZ3Q7a3pkZXYtJmd0O2ZpYi5mbXQwLmFpYnYgPSAwOwogCiYjNDM7CXNwaW5fbG9ja19pcnEoJmFtcDthaWZ0LSZndDtnYWl0X2xvY2spOwomIzQzOwlnYWl0ZS0mZ3Q7Y291bnQtLTsKJiM0MzsJZ2FpdGUtJmd0O2Fpc2IgPSAwOwomIzQzOwlnYWl0ZS0mZ3Q7Z2lzYyA9IDA7CiYjNDM7CWdhaXRlLSZndDthaXNibyA9IDA7CiYjNDM7CWdhaXRlLSZndDtnaXNhID0gMDsKJiM0MzsJYWlmdC0mZ3Q7a3pkZXZbemRldi0mZ3Q7YWlzYl0gPSBOVUxMOwomIzQzOwlzcGluX3VubG9ja19pcnEoJmFtcDthaWZ0LSZndDtnYWl0X2xvY2spOwomIzQzOwomIzQzOwlhaXJxX2l2X3JlbGVhc2UoemRldi0mZ3Q7YWlidik7CiYjNDM7CXpkZXYtJmd0O2FpYnYgPSBOVUxMOwomIzQzOwomIzQzO2ZyZWVfYWlzYjoKJiM0MzsJYWlycV9pdl9mcmVlX2JpdChhaWZ0LSZndDtzYnYsIHpkZXYtJmd0O2Fpc2IpOwomIzQzOwl6ZGV2LSZndDthaXNiID0gMDsKIHVubG9jazoKJiM0MzsJaWYgKHBjb3VudCAmZ3Q7IDApCiYjNDM7CQl1bmFjY291bnRfbWVtKHpkZXYtJmd0O2t6ZGV2LCBwY291bnQpOwogCW11dGV4X3VubG9jaygmYW1wO2FpZnQtJmd0O2FpZnRfbG9jayk7CiB1bnBpbjI6CiAJaWYgKGZpYi0mZ3Q7Zm10MC5zdW0gPT0gMSkKQEAgLTM5Niw3ICYjNDM7NDQ1LDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGUoc3RydWN0IHpwY2lfZGV2ICp6ZGV2LCBib29sIGZvcmNlKQogCQlwY291bnQmIzQzOyYjNDM7OwogCX0KIAlpZiAocGNvdW50ICZndDsgMCkKLQkJdW5hY2NvdW50X21lbShwY291bnQpOwomIzQzOwkJdW5hY2NvdW50X21lbShremRldiwgcGNvdW50KTsKIG91dDoKIAltdXRleF91bmxvY2soJmFtcDthaWZ0LSZndDthaWZ0X2xvY2spOwogCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3BjaS5oIGIvYXJjaC9zMzkwL2t2bS9wY2kuaAppbmRleCBmZjA5NzJkZDVlNzFkYy4uNTQ0ZTZhYTc1ZTM4OGMgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9rdm0vcGNpLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9zMzkwL2t2bS9wY2kuaApAQCAtMjEsNiAmIzQzOzIxLDggQEAgc3RydWN0IGt2bV96ZGV2IHsKIAlzdHJ1Y3QgenBjaV9kZXYgKnpkZXY7CiAJc3RydWN0IGt2bSAqa3ZtOwogCXN0cnVjdCB6cGNpX2ZpYiBmaWI7CiYjNDM7CXN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcl9hY2NvdW50OwomIzQzOwlzdHJ1Y3QgbW1fc3RydWN0ICptbV9hY2NvdW50OwogCXN0cnVjdCBsaXN0X2hlYWQgZW50cnk7CiB9OwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIzOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MDIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBzMzkwIEtWTSBQQ0kgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2gg4oCTIGl0JiMzOTtzIHRvdWNoaW5nIGBhcmNoL3MzOTAva3ZtL3BjaS5jYCBhbmQgYGFyY2gvczM5MC9rdm0vcGNpLmhgLiBTZWVtcyBsaWtlIGl0JiMzOTtzIGFkZHJlc3Npbmcgc29tZSBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZXMgd2l0aGluIHRoZSBzMzkwIEtWTSBQQ0kgY29kZS4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBtb2RpZnlpbmcgdGhlIGB1bmFjY291bnRfbWVtYCBhbmQgYGFjY291bnRfbWVtYCBmdW5jdGlvbnMgdG8gaGFuZGxlIGB1c2VyX3N0cnVjdGAgYW5kIGBtbV9zdHJ1Y3RgIHJlZmVyZW5jZXMgcHJvcGVybHkgd2l0aGluIGBrdm1femRldmAuIEdvb2QgY2F0Y2g7IHRoZXNlIGFyZSB0aGUga2luZHMgb2YgbGVha3MgdGhhdCBjYW4gYml0ZSB5b3UgbGF0ZXIuIEFsc28sIGl0IGxvb2tzIGxpa2UgdGhlcmUgYXJlIHNvbWUgYWRkZWQgY2xlYW51cCBwYXRocyBpbiBga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGVgIHRvIGdyYWNlZnVsbHkgaGFuZGxlIGZhaWx1cmVzLCB3aGljaCBpcyBhbHdheXMgYSBnb29kIHByYWN0aWNlIGZvciByZXNpbGllbmNlLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgY29kZSBpcyBldmVuICpyZWFjaGFibGUqIGFuZCBpZiB0aGUgZml4IGlzIGZ1bmN0aW9uYWwuIEl0JiMzOTtzIG9idmlvdXNseSByZWxhdGVkIHRvIEtWTSBvbiB0aGUgczM5MCBhcmNoaXRlY3R1cmUsIGFuZCBpdCYjMzk7cyBtb2RpZnlpbmcgYGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlYCBhbmQgYGt2bV9zMzkwX3BjaV9haWZfZGlzYWJsZWAuIFNvLCB0aGVzZSBhcmUgZnVuY3Rpb25hbCBmaXhlcyBmb3IgbWVtb3J5IG9yIHJlZmVyZW5jZSBsZWFrcy4gVGhlIHJlYWwgdGVzdCBpczogY2FuIHdlIGFjdHVhbGx5ICpydW4qIHRoaXM/IElzIHMzOTAgS1ZNIGVhc2lseSB0ZXN0YWJsZT8gVGhlbiwgSSByZW1lbWJlciEgU3l6a2FsbGVyIGRvZXMgaGF2ZSBzMzkweCBLVk0gZnV6emluZy4gVGhhdCYjMzk7cyBmYW50YXN0aWMuCgpOb3csIGxldCYjMzk7cyBmaXJlIHVwIHRoZSB0b29scy4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIEtjb25maWcgb3B0aW9ucyBhcmUgcmVsZXZhbnQgYW5kIHRoZSBzeW1ib2xzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvZGUgdG8gZnVsbHkgYXNzZXNzIHRoZSBwYXRjaCYjMzk7cyBpbnRlZ3JhdGlvbiBhbmQgaW1wYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIzOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9zMzkwX3BjaV9haWZfZW5hYmxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvczM5MC9rdm0vcGNpLmM9MjExPXN0YXRpYyBpbmxpbmUgaW50IGFjY291bnRfbWVtKHN0cnVjdCBrdm1femRldiAqa3pkZXYsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpXG4tLVxuYXJjaC9zMzkwL2t2bS9wY2kuYy0yMzktXG5hcmNoL3MzOTAva3ZtL3BjaS5jOjI0MDpzdGF0aWMgaW50IGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlKHN0cnVjdCB6cGNpX2RldiAqemRldiwgc3RydWN0IHpwY2lfZmliICpmaWIsXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTI0MS1cdFx0XHRcdCAgIGJvb2wgYXNzaXN0KVxuLS1cbmFyY2gvczM5MC9rdm0vcGNpLmM9NjQ1PXN0YXRpYyBpbnQga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbihzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsXG4tLVxuYXJjaC9zMzkwL2t2bS9wY2kuYy02NjQtXHRob3N0ZmxhZyA9ICEoYXJncy1cdTAwM2V1LnJlZ19hZW4uZmxhZ3MgXHUwMDI2IEtWTV9TMzkwX1pQQ0lPUF9SRUdBRU5fSE9TVCk7XG5hcmNoL3MzOTAva3ZtL3BjaS5jOjY2NTpcdHJldHVybiBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZSh6ZGV2LCBcdTAwMjZmaWIsIGhvc3RmbGFnKTtcbmFyY2gvczM5MC9rdm0vcGNpLmMtNjY2LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTgwCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHJlcXVlc3RlZDoKCioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBmb3IgczM5MCBLVk0gUENJIFN1cHBvcnQqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSBnb2FsIGlzIHRvIGZpZ3VyZSBvdXQgd2hpY2ggY29uZmlndXJhdGlvbiBvcHRpb25zLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgYnVpbGQgc3lzdGVtLCBhcmUgcmVzcG9uc2libGUgZm9yIGVuYWJsaW5nIHRoZSBpbmNsdXNpb24gb2YgYGFyY2gvczM5MC9rdm0vcGNpLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhpcyBwYXJ0aWN1bGFyIGZpbGUgaXMgYnJvdWdodCBpbnRvIHRoZSBidWlsZC4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aGUgY29uZmlndXJhdGlvbiBmbGFncyBhc3NvY2lhdGVkIHdpdGggdGhlIEtWTSBzdWJzeXN0ZW0gb24gczM5MCwgZm9jdXNpbmcgb24gdGhlIFBDSSBhc3BlY3RzIHdpdGhpbiB0aGF0IGFyY2hpdGVjdHVyZS4gSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUgcmVsZXZhbnQgYEtjb25maWdgIGZpbGVzIGFuZCBgTWFrZWZpbGVgIGVudHJpZXMgd2l0aGluIHRoZSBzMzkwIGFuZCBLVk0gZGlyZWN0b3JpZXMuIE15IGV4cGVjdGF0aW9uIGlzIHRoZSBjb25maWd1cmF0aW9uIHdpbGwgbGlrZWx5IGJlIGRyaXZlbiBieSBhIGNvbWJpbmF0aW9uIG9mIGdlbmVyYWwgS1ZNIHNldHRpbmdzIGFuZCBzMzkwLXNwZWNpZmljIGFyY2hpdGVjdHVyYWwgY29uc2lkZXJhdGlvbnMsIHBvc3NpYmx5IGludm9sdmluZyB0aGluZ3MgbGlrZSB2aXJ0dWFsaXphdGlvbiBmZWF0dXJlcywgZGV2aWNlIGFzc2lnbm1lbnQsIG9yIHNwZWNpZmljIFBDSSBkZXZpY2Ugc3VwcG9ydCBvbiB0aGF0IHBsYXRmb3JtLiBJ4oCZbGwgYmUgbG9va2luZyBmb3Iga2V5d29yZHMgbGlrZSAmIzM0O0tWTSYjMzQ7LCAmIzM0O1BDSSYjMzQ7LCAmIzM0O3MzOTAmIzM0OywgJiMzNDtDT05GSUdfJiMzNDssIGFuZCBhbnl0aGluZyByZWxhdGVkIHRvIGRldmljZSBkcml2ZXJzIG9yIHZpcnR1YWxpemF0aW9uLiBVbHRpbWF0ZWx5LCBJIHdhbnQgdG8gaXNvbGF0ZSB0aGUgZXhhY3QgY29uZGl0aW9uYWwgc3RhdGVtZW50cyB0aGF0IHRyaWdnZXIgdGhlIGNvbXBpbGF0aW9uIG9mIGBwY2kuY2AsIHNvIEkgY2FuIHVuZGVyc3RhbmQgdGhlIGxvZ2ljYWwgcGF0aCBmb3IgaXRzIGluY2x1c2lvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL01ha2VmaWxlPTEyPWt2bS15ICYjNDM7PSBkYXQubyBnbWFwLm8gZmF1bHRpbi5vXG5hcmNoL3MzOTAva3ZtL01ha2VmaWxlLTEzLVxuYXJjaC9zMzkwL2t2bS9NYWtlZmlsZToxNDprdm0tJChDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk0pICYjNDM7PSBwY2kub1xuYXJjaC9zMzkwL2t2bS9NYWtlZmlsZS0xNS1vYmotJChDT05GSUdfS1ZNKSAmIzQzOz0ga3ZtLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDM0CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQsIGFuZCB3cml0aW5nIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkludmVzdGlnYXRpbmcgdGhlIGBWRklPX1BDSV9aREVWX0tWTWAgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gdGhlIGNvbmZpZ3VyYXRpb24gaW4gcXVlc3Rpb24gaXMgYFZGSU9fUENJX1pERVZfS1ZNYC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGNoZWNrIGBLVk1gIGdlbmVyYWxseSwgYXMgaXQmIzM5O3MgZGlyZWN0bHkgcmVmZXJlbmNlZC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoaXMgYFpERVZgIGZlYXR1cmUgYW5kIHRoZSBicm9hZGVyIEtWTSBmcmFtZXdvcmsuIElzIHRoaXMgYSBzcGVjaWZpYyBLVk0gZmVhdHVyZSwgb3IgZG9lcyBpdCBsZXZlcmFnZSBLVk0gaW4gYSBtb3JlIGdlbmVyYWwgc2Vuc2U/CgpUbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUsIG15IG5leHQgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZm9yIGBWRklPX1BDSV9aREVWX0tWTWAuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIHRoZSBkZXBlbmRlbmNpZXMsIGhlbHAgdGV4dCwgYW5kIGFueXRoaW5nIGVsc2UgdGhhdCBtaWdodCBpbGx1bWluYXRlIHdoYXQgdGhpcyBjb25maWd1cmF0aW9uIGFjdHVhbGx5ICpkb2VzKi4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgJiMzNDt3aHkmIzM0OyBhbmQgJiMzNDtob3cmIzM0OyBiZWhpbmQgdGhpcy4gV2hhdCBvdGhlciBvcHRpb25zIGFyZSByZWxhdGVkPyBXaGF0IHByZXJlcXVpc2l0ZXMgYXJlIHRoZXJlPyBEb2VzIGl0IGJ1aWxkIGEgbW9kdWxlPyBJcyBpdCBhbiBpbnRyaW5zaWMgcGFydCBvZiB0aGUga2VybmVsPyBXaGF0JiMzOTtzIHRoZSBjb250ZXh0LCB0aGUgdHJhZGUgb2ZmcywgYW5kIHNvIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIzOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWRklPX1BDSV9aREVWX0tWTSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc9NDU9ZW5kaWZcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00Ni1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzo0Nzpjb25maWcgVkZJT19QQ0lfWkRFVl9LVk1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7VkZJTyBQQ0kgZXh0ZW5zaW9ucyBmb3IgczM5MHggS1ZNIHBhc3N0aHJvdWdoXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjM6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ0NwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBDYWxsZXJzIG9mIGBrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcm9sZSBvZiBga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbmAuIEZpcnN0LCBsZXQmIzM5O3MgdHJhY2UgaXRzIHVzYWdlLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXQgdGhlIGNyb3NzLXJlZmVyZW5jZXMuIEkgd2FudCB0byBzZWUgd2hpY2ggZnVuY3Rpb25zIGFyZSBjYWxsaW5nIHRoaXMgc3BlY2lmaWMgcm91dGluZS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY29udGV4dCBJIG5lZWQuIFRoaXMgd2lsbCBwb2ludCBtZSB0b3dhcmRzIHRoZSBzcGVjaWZpYyBzY2VuYXJpb3MgYW5kIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIHdoZXJlIHRoaXMgQUVOIChBc3luY2hyb25vdXMgRXZlbnQgTm90aWZpY2F0aW9uKSBoYW5kbGluZyBpcyB0cmlnZ2VyZWQsIGFsbG93aW5nIG1lIHRvIGJldHRlciB1bmRlcnN0YW5kIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBaIFBDSSBkZXZpY2VzIGFuZCB0aGUgS1ZNIHMzOTAgZ3Vlc3QuIEhvcGVmdWxseSwgdGhlIGNhbGxpbmcgZnVuY3Rpb25zIHdpbGwgc2hlZCBsaWdodCBvbiB3aGF0IHRyaWdnZXJzIHRoZXNlIEFFTnMgYW5kIHdoYXQgdGhlIGV4cGVjdGVkIHN5c3RlbSBiZWhhdmlvciBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjM6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL3BjaS5jPTYyOD1zdGF0aWMgc3RydWN0IHpwY2lfZGV2ICpnZXRfemRldl9mcm9tX2t2bV9ieV9maChzdHJ1Y3Qga3ZtICprdm0sIHUzMiBmaClcbi0tXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTY0NC1cbmFyY2gvczM5MC9rdm0vcGNpLmM6NjQ1OnN0YXRpYyBpbnQga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbihzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTY0Ni1cdFx0XHRcdCAgICAgc3RydWN0IGt2bV9zMzkwX3pwY2lfb3AgKmFyZ3MpXG4tLVxuYXJjaC9zMzkwL2t2bS9wY2kuYz02Njg9aW50IGt2bV9zMzkwX3BjaV96cGNpX29wKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zMzkwX3pwY2lfb3AgKmFyZ3MpXG4tLVxuYXJjaC9zMzkwL2t2bS9wY2kuYy02OTctXHRcdH1cbmFyY2gvczM5MC9rdm0vcGNpLmM6Njk4Olx0XHRyID0ga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2Flbih6ZGV2LCBhcmdzKTtcbmFyY2gvczM5MC9rdm0vcGNpLmMtNjk5LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjM6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjAyOAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipOYXZpZ2F0aW5nIHRoZSBQQ0kgUGFzc3Rocm91Z2ggTGFuZHNjYXBlIGluIEtWTS9zMzkwKioKCkFscmlnaHQsIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoZSBLVk0vczM5MCBjb2RlIGFnYWluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIFBDSSBwYXNzdGhyb3VnaCBpbXBsZW1lbnRhdGlvbiBiZXR0ZXIuIEkgc2VlIHRoYXQgYGt2bV9zMzkwX3BjaV96cGNpX29wYCBmdW5jdGlvbiBpcyBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLiBUaGUgbmF0dXJhbCBuZXh0IHF1ZXN0aW9uIGlzICp3aGVyZSogaXMgaXQgYmVpbmcgaW52b2tlZD8gVW5kZXJzdGFuZGluZyBpdHMgY2FsbCBncmFwaCBpcyBjcnVjaWFsIHRvIGdyYXNwIGhvdyB0aGUgelBDSSBvcGVyYXRpb25zIGFyZSBiZWluZyByb3V0ZWQgYW5kIG1hbmFnZWQgd2l0aGluIHRoZSBLVk0gZnJhbWV3b3JrIG9uIHMzOTB4LiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgZnVuY3Rpb24gdG8gc2VlIHRoZSBkaWZmZXJlbnQgcGF0aHdheXMgdGhhdCBsZWFkIHRvIGl0LiBLbm93aW5nIHRoZSBjYWxsZXJzIHdpbGwgZXhwb3NlIHRoZSBzdXJyb3VuZGluZyBsb2dpYyBhbmQgdGhlIHNjZW5hcmlvcyB0aGF0IHRyaWdnZXIgdGhlc2UgY3J1Y2lhbCB6UENJIG9wZXJhdGlvbnMuIFRoYXQgY2FsbCBzdGFjayBpcyB3aGF0JiMzOTtzIGdvaW5nIHRvIHNoZWQgbGlnaHQgb24gaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fczM5MF9wY2lfenBjaV9vcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmM9MjkyNT1pbnQga3ZtX2FyY2hfdm1faW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpXG4tLVxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTMwOTItXHRcdH1cbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzozMDkzOlx0XHRyID0ga3ZtX3MzOTBfcGNpX3pwY2lfb3Aoa3ZtLCBcdTAwMjZhcmdzKTtcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYy0zMDk0LVx0XHRicmVhaztcbi0tXG5hcmNoL3MzOTAva3ZtL3BjaS5jPTY0NT1zdGF0aWMgaW50IGt2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW4oc3RydWN0IHpwY2lfZGV2ICp6ZGV2LFxuLS1cbmFyY2gvczM5MC9rdm0vcGNpLmMtNjY3LVxuYXJjaC9zMzkwL2t2bS9wY2kuYzo2Njg6aW50IGt2bV9zMzkwX3BjaV96cGNpX29wKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zMzkwX3pwY2lfb3AgKmFyZ3MpXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTY2OS17XG4tLVxuYXJjaC9zMzkwL2t2bS9wY2kuaD02MT12b2lkIGt2bV9zMzkwX3BjaV9jbGVhcl9saXN0KHN0cnVjdCBrdm0gKmt2bSk7XG5hcmNoL3MzOTAva3ZtL3BjaS5oLTYyLVxuYXJjaC9zMzkwL2t2bS9wY2kuaDo2MzppbnQga3ZtX3MzOTBfcGNpX3pwY2lfb3Aoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3MzOTBfenBjaV9vcCAqYXJncyk7XG5hcmNoL3MzOTAva3ZtL3BjaS5oLTY0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzQ5CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTS9WRklPLVBDSSBaREVWIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhpcyBaREVWIGZ1bmN0aW9uYWxpdHkgaXMgZXhwb3NlZC4gSXQgbG9va3MgbGlrZSB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBpcyB0aHJvdWdoIEtWTSBpb2N0bHMsIHdoaWNoIGlzIHRoZSBleHBlY3RlZCBhcHByb2FjaC4gVGhlIGtlcm5lbCBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gdmVyaWZ5IGFyZSBgS1ZNYCBhbmQgYFZGSU9fUENJX1pERVZfS1ZNYC4gR29vZCwgdGhhdCBtYWtlcyBzZW5zZS4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgY3JpdGljYWwgc3ltYm9scy4gSXQgYXBwZWFycyB0aGUgbWFpbiBmb2N1cyBpcyBvbiBga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGVgLCBga3ZtX3MzOTBfcGNpX2FpZl9kaXNhYmxlYCwgYGt2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW5gLCBhbmQgYGt2bV9zMzkwX3BjaV96cGNpX29wYC4gSSYjMzk7bGwgd2FudCB0byBmb2N1cyBvbiB0aGVzZSBmdW5jdGlvbnMgdG8gZ2V0IGEgZ29vZCBoYW5kbGUgb24gdGhlIGNvbnRyb2wgZmxvdy4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgd2FudCB0byBzZWUgaWYgYW55IG90aGVyIGZ1bmN0aW9ucyBoYXZlIGJlZW4gbW9kaWZpZWQgb3IgYXJlIGludm9sdmVkLiBBaCwgaGVyZSB3ZSBhcmU7IGl0IGxvb2tzIGxpa2UgYGFjY291bnRfbWVtYCBhbmQgYHVuYWNjb3VudF9tZW1gIGFyZSBzdGF0aWMgaW5saW5lLiBUaGlzIG1lYW5zIHRoZXkmIzM5O2xsIGJlIGludGVncmF0ZWQgZGlyZWN0bHkgaW50byB0aGUgYGVuYWJsZWAgYW5kIGBkaXNhYmxlYCBmdW5jdGlvbnMsIHNvIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCB3aGVuIEkmIzM5O20gdHJhY2luZyBleGVjdXRpb24uIExldCYjMzk7cyBzdGFydCBieSBsb29raW5nIGF0IGBrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGVgIHRvIHN0YXJ0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAyMzoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9zMzkwL2t2bS9wY2kuYz0yNDA9c3RhdGljIGludCBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsIHN0cnVjdCB6cGNpX2ZpYiAqZmliLFxuLS1cbmFyY2gvczM5MC9rdm0vcGNpLmMtMzg4LVxuYXJjaC9zMzkwL2t2bS9wY2kuYzozODk6c3RhdGljIGludCBrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGUoc3RydWN0IHpwY2lfZGV2ICp6ZGV2LCBib29sIGZvcmNlKVxuYXJjaC9zMzkwL2t2bS9wY2kuYy0zOTAte1xuLS1cbmFyY2gvczM5MC9rdm0vcGNpLmM9NTYwPXN0YXRpYyB2b2lkIGt2bV9zMzkwX3BjaV91bnJlZ2lzdGVyX2t2bSh2b2lkICpvcGFxdWUpXG4tLVxuYXJjaC9zMzkwL2t2bS9wY2kuYy01ODYtXHRpZiAoemRldi1cdTAwM2VremRldi1cdTAwM2VmaWIuZm10MC5haWJ2ICE9IDApXG5hcmNoL3MzOTAva3ZtL3BjaS5jOjU4NzpcdFx0a3ZtX3MzOTBfcGNpX2FpZl9kaXNhYmxlKHpkZXYsIHRydWUpO1xuYXJjaC9zMzkwL2t2bS9wY2kuYy01ODgtXG4tLVxuYXJjaC9zMzkwL2t2bS9wY2kuYz02Njg9aW50IGt2bV9zMzkwX3BjaV96cGNpX29wKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zMzkwX3pwY2lfb3AgKmFyZ3MpXG4tLVxuYXJjaC9zMzkwL2t2bS9wY2kuYy03MDAtXHRjYXNlIEtWTV9TMzkwX1pQQ0lPUF9ERVJFR19BRU46XG5hcmNoL3MzOTAva3ZtL3BjaS5jOjcwMTpcdFx0ciA9IGt2bV9zMzkwX3BjaV9haWZfZGlzYWJsZSh6ZGV2LCBmYWxzZSk7XG5hcmNoL3MzOTAva3ZtL3BjaS5jLTcwMi1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIzOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3NjUKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDdXJyZW50IFRyYWluIG9mIFRob3VnaHQqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBga3ZtX3MzOTBfcGNpX2FpZl9kaXNhYmxlYCBmdW5jdGlvbiBhbmQgcmVhbGl6aW5nIGl0JiMzOTtzIGFsc28gYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBgS1ZNX1MzOTBfWlBDSU9QX0RFUkVHX0FFTmAgaW9jdGwuIEludGVyZXN0aW5nLiBJIG5lZWQgdG8gbWFrZSBhIG1lbnRhbCBub3RlIG9mIHRoYXQgY29ubmVjdGlvbiwgYXMgaXQgY291bGQgaGF2ZSBicm9hZGVyIGltcGxpY2F0aW9ucy4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gc2VlIGlmIHdvcmtpbmcgd2l0aCBgVkZJT19QQ0lfWkRFVl9LVk1gIHJlcXVpcmVzIGFueSBvdGhlciBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb25zIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBJIHNob3VsZCBjb25zaWRlciByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIzOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWRklPX1BDSV9aREVWX0tWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wY2kvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc9NDU9ZW5kaWZcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00Ni1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzo0Nzpjb25maWcgVkZJT19QQ0lfWkRFVl9LVk1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7VkZJTyBQQ0kgZXh0ZW5zaW9ucyBmb3IgczM5MHggS1ZNIHBhc3N0aHJvdWdoXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDIzOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxMDcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OgoKKipEZWx2aW5nIGludG8gdGhlIFZGSU8gS2NvbmZpZyBmb3IgVW5kZXJzdGFuZGluZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnYCBmaWxlLiBJJiMzOTttIHNwZWNpZmljYWxseSBpbnRlcmVzdGVkIGluIGxpbmUgNDcsIGFzIHRoYXQgYXJlYSB1c3VhbGx5IGhvbGRzIHNvbWUgY3JpdGljYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQgb3B0aW9ucyBhcmUgY29udHJvbGxlZCBoZXJlIGZvciB0aGUgVkZJTy1QQ0kgZHJpdmVyLiBJcyBpdCB0aGUgZmVhdHVyZSBmbGFncywgcGxhdGZvcm0gc3VwcG9ydCBvciBzcGVjaWZpYyBoYXJkd2FyZSByZXF1aXJlbWVudHMgSSBuZWVkIHRvIHJlbWVtYmVyPyBMZXQmIzM5O3MgcmVmcmVzaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjM6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQwOlx0XHQgIGFzc2lnbm1lbnQgdG8gdmlydHVhbCBtYWNoaW5lcy4gIFRoaXMgaW5jbHVkZXMgZXhwb3NpbmcgYW4gSUdEXG4gIDQxOlx0XHQgIHNwZWNpZmljIGZpcm13YXJlIHRhYmxlIGFuZCByZWFkLW9ubHkgY29waWVzIG9mIHRoZSBob3N0IGJyaWRnZVxuICA0MjpcdFx0ICBhbmQgTFBDIGJyaWRnZSBjb25maWcgc3BhY2UuXG4gIDQzOlx0XG4gIDQ0Olx0XHQgIFRvIGVuYWJsZSBJbnRlbCBJR0QgYXNzaWdubWVudCB0aHJvdWdoIHZmaW8tcGNpLCBzYXkgWS5cbiAgNDU6XHRlbmRpZlxuICA0NjpcdFxuICA0NzpcdGNvbmZpZyBWRklPX1BDSV9aREVWX0tWTVxuICA0ODpcdFx0Ym9vbCBcJiMzNDtWRklPIFBDSSBleHRlbnNpb25zIGZvciBzMzkweCBLVk0gcGFzc3Rocm91Z2hcJiMzNDtcbiAgNDk6XHRcdGRlcGVuZHMgb24gUzM5MCBcdTAwMjZcdTAwMjYgS1ZNXG4gIDUwOlx0XHRkZWZhdWx0IHlcbiAgNTE6XHRcdGhlbHBcbiAgNTI6XHRcdCAgU3VwcG9ydCBzMzkweC1zcGVjaWZpYyBleHRlbnNpb25zIHRvIGVuYWJsZSBzdXBwb3J0IGZvciBlbmhhbmNlbWVudHNcbiAgNTM6XHRcdCAgdG8gS1ZNIHBhc3N0aHJvdWdoIGNhcGFiaWxpdGllcywgc3VjaCBhcyBpbnRlcnByZXRpdmUgZXhlY3V0aW9uIG9mXG4gIDU0Olx0XHQgIHpQQ0kgaW5zdHJ1Y3Rpb25zLlxuICA1NTpcdFxuICA1NjpcdFx0ICBUbyBlbmFibGUgczM5MHggS1ZNIHZmaW8tcGNpIGV4dGVuc2lvbnMsIHNheSBZLlxuICA1NzpcdFxuICA1ODpcdGNvbmZpZyBWRklPX1BDSV9ETUFCVUZcbiAgNTk6XHRcdGRlZl9ib29sIHkgaWYgVkZJT19QQ0lfQ09SRSBcdTAwMjZcdTAwMjYgUENJX1AyUERNQSBcdTAwMjZcdTAwMjYgRE1BX1NIQVJFRF9CVUZGRVJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjM6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODU4NgoJCQkJCQkJb3V0cHV0OiAyMTMKCQkJCQkJCXRob3VnaHRzOiAyNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIEZ1enppbmcgU3RyYXRlZ3kqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYW5kIGl0JiMzOTtzIHByZXR0eSBjbGVhciB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgZnV6emluZyBzdHJhdGVneSBmb2N1c2VkIG9uIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGBTMzkwYCBhbmQgYEtWTWAsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBgVkZJT19QQ0lfWkRFVl9LVk1gIGNvbmZpZ3VyYXRpb24uIExldCBtZSBicmVhayBpdCBkb3duLgoKRXNzZW50aWFsbHksIHdlJiMzOTtyZSB0YXJnZXRpbmcgdGhlIGNoYW5nZXMgaW4gdGhlIHMzOTB4IEtWTSBQQ0kgcGFzc3Rocm91Z2ggbG9naWMuIFdlJiMzOTtyZSB6ZXJvaW5nIGluIG9uIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBjbGVhbnVwIHdpdGhpbiB0aGUgQUlGIGVuYWJsZS9kaXNhYmxlIHBhdGhzLiBUaGlzIGlzIHdoZXJlIHRoZSB2dWxuZXJhYmlsaXR5IGlzIGxpa2VseSB0byBiZS4KCldlJiMzOTt2ZSBnb3Qgb3VyIHRhcmdldHMgY2xlYXJseSBkZWZpbmVkOiBga3ZtX3MzOTBfcGNpX2FpZl9lbmFibGVgLCBga3ZtX3MzOTBfcGNpX2FpZl9kaXNhYmxlYCwgYGt2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW5gLCBhbmQgYGt2bV9zMzkwX3BjaV96cGNpX29wYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgdGhyb3VnaCBLVk0gaW9jdGxzLCBzcGVjaWZpY2FsbHkgdGhlIGBLVk1fUzM5MF9aUENJT1BfUkVHQUVOYCBhbmQgYEtWTV9TMzkwX1pQQ0lPUF9ERVJFR19BRU5gIGlvY3Rscy4gVGhhdCBtYWtlcyBzZW5zZSwgdGhvc2UgYXJlIHRoZSBpbnRlcmZhY2VzIHdlIG5lZWQgdG8gc2NydXRpbml6ZS4KClRoZSByZWFzb25pbmcgaXMgc29saWQsIHdlIG5lZWQgdG8gZnV6eiB0aGVzZSB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG1lbW9yeSBsZWFrcyBvciByZWZlcmVuY2UgY291bnRpbmcgZXJyb3JzIGhhcHBlbmluZy4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgcmVsZXZhbnQgZ2l2ZW4gdGhlIGNvbXBsZXggaW50ZXJhY3Rpb25zIHdpdGhpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGlzIHN0cmF0ZWd5IGlzIGRlZmluaXRlbHkgd29ydGh3aGlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMjM6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZGSU9fUENJX1pERVZfS1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3MzOTBfcGNpX2FpZl9lbmFibGUmIzM0OywKICAgICYjMzQ7a3ZtX3MzOTBfcGNpX2FpZl9kaXNhYmxlJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW4mIzM0OywKICAgICYjMzQ7a3ZtX3MzOTBfcGNpX3pwY2lfb3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgczM5MHggS1ZNIFBDSSBwYXNzdGhyb3VnaCBsb2dpYywgc3BlY2lmaWNhbGx5IG1lbW9yeSBhY2NvdW50aW5nIGFuZCBjbGVhbnVwIHBhdGhzIGR1cmluZyBBSUYgKEFkYXB0ZXIgSW50ZXJydXB0aW9uIEZhY2lsaXR5KSBlbmFibGUvZGlzYWJsZS4gVGhlc2UgYXJlIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyAoS1ZNX1MzOTBfWlBDSU9QX1JFR0FFTiBhbmQgS1ZNX1MzOTBfWlBDSU9QX0RFUkVHX0FFTikgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIG1lbW9yeSBsZWFrcyBvciByZWZlcmVuY2UgY291bnRpbmcgaXNzdWVzIG9jY3VyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWRklPX1BDSV9aREVWX0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9zMzkwX3BjaV9haWZfZW5hYmxlJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX3BjaV9haWZfZGlzYWJsZSYjMzQ7LAogICAgJiMzNDtrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuJiMzNDssCiAgICAmIzM0O2t2bV9zMzkwX3BjaV96cGNpX29wJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHMzOTB4IEtWTSBQQ0kgcGFzc3Rocm91Z2ggbG9naWMsIHNwZWNpZmljYWxseSBtZW1vcnkgYWNjb3VudGluZyBhbmQgY2xlYW51cCBwYXRocyBkdXJpbmcgQUlGIChBZGFwdGVyIEludGVycnVwdGlvbiBGYWNpbGl0eSkgZW5hYmxlL2Rpc2FibGUuIFRoZXNlIGFyZSByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMgKEtWTV9TMzkwX1pQQ0lPUF9SRUdBRU4gYW5kIEtWTV9TMzkwX1pQQ0lPUF9ERVJFR19BRU4pIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBubyBtZW1vcnkgbGVha3Mgb3IgcmVmZXJlbmNlIGNvdW50aW5nIGlzc3VlcyBvY2N1ci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIzOjIwOjM3LjA0NjQyODgzNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTgzNTQ0NTgzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWRklPX1BDSV9aREVWX0tWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9zMzkwX3BjaV9haWZfZW5hYmxlXCIsXG4gICAgXCJrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGVcIixcbiAgICBcImt2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW5cIixcbiAgICBcImt2bV9zMzkwX3BjaV96cGNpX29wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgczM5MHggS1ZNIFBDSSBwYXNzdGhyb3VnaCBsb2dpYywgc3BlY2lmaWNhbGx5IG1lbW9yeSBhY2NvdW50aW5nIGFuZCBjbGVhbnVwIHBhdGhzIGR1cmluZyBBSUYgKEFkYXB0ZXIgSW50ZXJydXB0aW9uIEZhY2lsaXR5KSBlbmFibGUvZGlzYWJsZS4gVGhlc2UgYXJlIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyAoS1ZNX1MzOTBfWlBDSU9QX1JFR0FFTiBhbmQgS1ZNX1MzOTBfWlBDSU9QX0RFUkVHX0FFTikgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIG1lbW9yeSBsZWFrcyBvciByZWZlcmVuY2UgY291bnRpbmcgaXNzdWVzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMDozNy4wNDY0MzM4MjVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5MTUxODMxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGZkN2Q1NmIzZTU1Y2FkYTQ4OGQzYzc5MmMxMzFhYTg5NWMwZTQwZTlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMTYgMjM6MjA6MzQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9wY2kuYyBiL2FyY2gvczM5MC9rdm0vcGNpLmNcXG5pbmRleCA3MjBiYjU4Y2FiZTJlOS4uZjg1ZDg1NmI1OGM2NWMgMTAwNjQ0XFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9wY2kuY1xcbisrKyBiL2FyY2gvczM5MC9rdm0vcGNpLmNcXG5AQCAtMTkwLDMzICsxOTAsNTEgQEAgc3RhdGljIGludCBrdm1fenBjaV9jbGVhcl9haXJxKHN0cnVjdCB6cGNpX2RldiAqemRldilcXG4gXFx0cmV0dXJuIGNjID8gLUVJTyA6IDA7XFxuIH1cXG4gXFxuLXN0YXRpYyBpbmxpbmUgdm9pZCB1bmFjY291bnRfbWVtKHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCB1bmFjY291bnRfbWVtKHN0cnVjdCBrdm1femRldiAqa3pkZXYsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpXFxuIHtcXG4tXFx0c3RydWN0IHVzZXJfc3RydWN0ICp1c2VyID0gZ2V0X3VpZChjdXJyZW50X3VzZXIoKSk7XFxuK1xcdHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlciA9IGt6ZGV2LVxcdTAwM2V1c2VyX2FjY291bnQ7XFxuK1xcdHN0cnVjdCBtbV9zdHJ1Y3QgKm1tX2FjY291bnQgPSBremRldi1cXHUwMDNlbW1fYWNjb3VudDtcXG4gXFxuLVxcdGlmICh1c2VyKVxcbitcXHRpZiAodXNlcikge1xcbiBcXHRcXHRhdG9taWNfbG9uZ19zdWIobnJfcGFnZXMsIFxcdTAwMjZ1c2VyLVxcdTAwM2Vsb2NrZWRfdm0pO1xcbi1cXHRpZiAoY3VycmVudC1cXHUwMDNlbW0pXFxuLVxcdFxcdGF0b21pYzY0X3N1Yihucl9wYWdlcywgXFx1MDAyNmN1cnJlbnQtXFx1MDAzZW1tLVxcdTAwM2VwaW5uZWRfdm0pO1xcbitcXHRcXHRmcmVlX3VpZCh1c2VyKTtcXG4rXFx0XFx0a3pkZXYtXFx1MDAzZXVzZXJfYWNjb3VudCA9IE5VTEw7XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChtbV9hY2NvdW50KSB7XFxuK1xcdFxcdGF0b21pYzY0X3N1Yihucl9wYWdlcywgXFx1MDAyNm1tX2FjY291bnQtXFx1MDAzZXBpbm5lZF92bSk7XFxuK1xcdFxcdG1tZHJvcChtbV9hY2NvdW50KTtcXG4rXFx0XFx0a3pkZXYtXFx1MDAzZW1tX2FjY291bnQgPSBOVUxMO1xcbitcXHR9XFxuIH1cXG4gXFxuLXN0YXRpYyBpbmxpbmUgaW50IGFjY291bnRfbWVtKHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpXFxuK3N0YXRpYyBpbmxpbmUgaW50IGFjY291bnRfbWVtKHN0cnVjdCBrdm1femRldiAqa3pkZXYsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpXFxuIHtcXG4gXFx0c3RydWN0IHVzZXJfc3RydWN0ICp1c2VyID0gZ2V0X3VpZChjdXJyZW50X3VzZXIoKSk7XFxuIFxcdHVuc2lnbmVkIGxvbmcgcGFnZV9saW1pdCwgY3VyX3BhZ2VzLCBuZXdfcGFnZXM7XFxuK1xcdGludCByYyA9IDA7XFxuIFxcbiBcXHRwYWdlX2xpbWl0ID0gcmxpbWl0KFJMSU1JVF9NRU1MT0NLKSBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUO1xcbiBcXG4gXFx0Y3VyX3BhZ2VzID0gYXRvbWljX2xvbmdfcmVhZChcXHUwMDI2dXNlci1cXHUwMDNlbG9ja2VkX3ZtKTtcXG4gXFx0ZG8ge1xcbiBcXHRcXHRuZXdfcGFnZXMgPSBjdXJfcGFnZXMgKyBucl9wYWdlcztcXG4tXFx0XFx0aWYgKG5ld19wYWdlcyBcXHUwMDNlIHBhZ2VfbGltaXQpXFxuLVxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXHRcXHRpZiAobmV3X3BhZ2VzIFxcdTAwM2UgcGFnZV9saW1pdCkge1xcbitcXHRcXHRcXHRyYyA9ICAtRU5PTUVNO1xcbitcXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0fVxcbiBcXHR9IHdoaWxlICghYXRvbWljX2xvbmdfdHJ5X2NtcHhjaGcoXFx1MDAyNnVzZXItXFx1MDAzZWxvY2tlZF92bSwgXFx1MDAyNmN1cl9wYWdlcywgbmV3X3BhZ2VzKSk7XFxuIFxcbitcXHRtbWdyYWIoY3VycmVudC1cXHUwMDNlbW0pO1xcbiBcXHRhdG9taWM2NF9hZGQobnJfcGFnZXMsIFxcdTAwMjZjdXJyZW50LVxcdTAwM2VtbS1cXHUwMDNlcGlubmVkX3ZtKTtcXG4rXFx0a3pkZXYtXFx1MDAzZXVzZXJfYWNjb3VudCA9IHVzZXI7XFxuK1xcdGt6ZGV2LVxcdTAwM2VtbV9hY2NvdW50ID0gY3VycmVudC1cXHUwMDNlbW07XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4rXFxuK291dDpcXG4rXFx0ZnJlZV91aWQodXNlcik7XFxuK1xcdHJldHVybiByYztcXG4gfVxcbiBcXG4gc3RhdGljIGludCBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsIHN0cnVjdCB6cGNpX2ZpYiAqZmliLFxcbkBAIC0yNzUsMjAgKzI5MywyOCBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlKHN0cnVjdCB6cGNpX2RldiAqemRldiwgc3RydWN0IHpwY2lfZmliICpmaWIsXFxuIFxcdH1cXG4gXFxuIFxcdC8qIEFjY291bnQgZm9yIHBpbm5lZCBwYWdlcywgcm9sbCBiYWNrIG9uIGZhaWx1cmUgKi9cXG4tXFx0aWYgKGFjY291bnRfbWVtKHBjb3VudCkpXFxuK1xcdHJjID0gYWNjb3VudF9tZW0oemRldi1cXHUwMDNla3pkZXYsIHBjb3VudCk7XFxuK1xcdGlmIChyYylcXG4gXFx0XFx0Z290byB1bnBpbjI7XFxuIFxcbiBcXHQvKiBBSVNCIG11c3QgYmUgYWxsb2NhdGVkIGJlZm9yZSB3ZSBjYW4gZmlsbCBpbiBHQUlURSAqL1xcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZhaWZ0LVxcdTAwM2VhaWZ0X2xvY2spO1xcbiBcXHRiaXQgPSBhaXJxX2l2X2FsbG9jX2JpdChhaWZ0LVxcdTAwM2VzYnYpO1xcbi1cXHRpZiAoYml0ID09IC0xVUwpXFxuK1xcdGlmIChiaXQgPT0gLTFVTCkge1xcbitcXHRcXHRyYyA9IC1FTk9NRU07XFxuIFxcdFxcdGdvdG8gdW5sb2NrO1xcbitcXHR9XFxuIFxcdHpkZXYtXFx1MDAzZWFpc2IgPSBiaXQ7IC8qIHN0b3JlIHRoZSBzdW1tYXJ5IGJpdCBudW1iZXIgKi9cXG4gXFx0emRldi1cXHUwMDNlYWlidiA9IGFpcnFfaXZfY3JlYXRlKG1zaV92ZWNzLCBBSVJRX0lWX0RBVEEgfFxcbiBcXHRcXHRcXHRcXHQgICAgQUlSUV9JVl9CSVRMT0NLIHxcXG4gXFx0XFx0XFx0XFx0ICAgIEFJUlFfSVZfR1VFU1RWRUMsXFxuIFxcdFxcdFxcdFxcdCAgICBwaHlzX3RvX3ZpcnQoZmliLVxcdTAwM2VmbXQwLmFpYnYpKTtcXG4gXFxuK1xcdGlmICghemRldi1cXHUwMDNlYWlidikge1xcbitcXHRcXHRyYyA9IC1FTk9NRU07XFxuK1xcdFxcdGdvdG8gZnJlZV9haXNiO1xcbitcXHR9XFxuK1xcbiBcXHRzcGluX2xvY2tfaXJxKFxcdTAwMjZhaWZ0LVxcdTAwM2VnYWl0X2xvY2spO1xcbiBcXHRnYWl0ZSA9IGFpZnQtXFx1MDAzZWdhaXQgKyB6ZGV2LVxcdTAwM2VhaXNiO1xcbiBcXG5AQCAtMzE5LDEzICszNDUsMzYgQEAgc3RhdGljIGludCBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsIHN0cnVjdCB6cGNpX2ZpYiAqZmliLFxcbiBcXHQvKiBTYXZlIHNvbWUgZ3Vlc3QgZmliIHZhbHVlcyBpbiB0aGUgaG9zdCBmb3IgbGF0ZXIgdXNlICovXFxuIFxcdHpkZXYtXFx1MDAzZWt6ZGV2LVxcdTAwM2VmaWIuZm10MC5pc2MgPSBmaWItXFx1MDAzZWZtdDAuaXNjO1xcbiBcXHR6ZGV2LVxcdTAwM2VremRldi1cXHUwMDNlZmliLmZtdDAuYWlidiA9IGZpYi1cXHUwMDNlZm10MC5haWJ2O1xcbi1cXHRtdXRleF91bmxvY2soXFx1MDAyNmFpZnQtXFx1MDAzZWFpZnRfbG9jayk7XFxuIFxcbiBcXHQvKiBJc3N1ZSB0aGUgY2xwIHRvIHNldHVwIHRoZSBpcnEgbm93ICovXFxuIFxcdHJjID0ga3ZtX3pwY2lfc2V0X2FpcnEoemRldik7XFxuLVxcdHJldHVybiByYztcXG4rXFx0aWYgKCFyYykge1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmFpZnQtXFx1MDAzZWFpZnRfbG9jayk7XFxuK1xcdFxcdHJldHVybiByYztcXG4rXFx0fVxcbitcXG4rXFx0LyogU3RhcnQgY2xlYW51cCAqL1xcbitcXHR6ZGV2LVxcdTAwM2VremRldi1cXHUwMDNlZmliLmZtdDAuaXNjID0gMDtcXG4rXFx0emRldi1cXHUwMDNla3pkZXYtXFx1MDAzZWZpYi5mbXQwLmFpYnYgPSAwO1xcbiBcXG4rXFx0c3Bpbl9sb2NrX2lycShcXHUwMDI2YWlmdC1cXHUwMDNlZ2FpdF9sb2NrKTtcXG4rXFx0Z2FpdGUtXFx1MDAzZWNvdW50LS07XFxuK1xcdGdhaXRlLVxcdTAwM2VhaXNiID0gMDtcXG4rXFx0Z2FpdGUtXFx1MDAzZWdpc2MgPSAwO1xcbitcXHRnYWl0ZS1cXHUwMDNlYWlzYm8gPSAwO1xcbitcXHRnYWl0ZS1cXHUwMDNlZ2lzYSA9IDA7XFxuK1xcdGFpZnQtXFx1MDAzZWt6ZGV2W3pkZXYtXFx1MDAzZWFpc2JdID0gTlVMTDtcXG4rXFx0c3Bpbl91bmxvY2tfaXJxKFxcdTAwMjZhaWZ0LVxcdTAwM2VnYWl0X2xvY2spO1xcbitcXG4rXFx0YWlycV9pdl9yZWxlYXNlKHpkZXYtXFx1MDAzZWFpYnYpO1xcbitcXHR6ZGV2LVxcdTAwM2VhaWJ2ID0gTlVMTDtcXG4rXFxuK2ZyZWVfYWlzYjpcXG4rXFx0YWlycV9pdl9mcmVlX2JpdChhaWZ0LVxcdTAwM2VzYnYsIHpkZXYtXFx1MDAzZWFpc2IpO1xcbitcXHR6ZGV2LVxcdTAwM2VhaXNiID0gMDtcXG4gdW5sb2NrOlxcbitcXHRpZiAocGNvdW50IFxcdTAwM2UgMClcXG4rXFx0XFx0dW5hY2NvdW50X21lbSh6ZGV2LVxcdTAwM2VremRldiwgcGNvdW50KTtcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZhaWZ0LVxcdTAwM2VhaWZ0X2xvY2spO1xcbiB1bnBpbjI6XFxuIFxcdGlmIChmaWItXFx1MDAzZWZtdDAuc3VtID09IDEpXFxuQEAgLTM5Niw3ICs0NDUsNyBAQCBzdGF0aWMgaW50IGt2bV9zMzkwX3BjaV9haWZfZGlzYWJsZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsIGJvb2wgZm9yY2UpXFxuIFxcdFxcdHBjb3VudCsrO1xcbiBcXHR9XFxuIFxcdGlmIChwY291bnQgXFx1MDAzZSAwKVxcbi1cXHRcXHR1bmFjY291bnRfbWVtKHBjb3VudCk7XFxuK1xcdFxcdHVuYWNjb3VudF9tZW0oa3pkZXYsIHBjb3VudCk7XFxuIG91dDpcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZhaWZ0LVxcdTAwM2VhaWZ0X2xvY2spO1xcbiBcXG5kaWZmIC0tZ2l0IGEvYXJjaC9zMzkwL2t2bS9wY2kuaCBiL2FyY2gvczM5MC9rdm0vcGNpLmhcXG5pbmRleCBmZjA5NzJkZDVlNzFkYy4uNTQ0ZTZhYTc1ZTM4OGMgMTAwNjQ0XFxuLS0tIGEvYXJjaC9zMzkwL2t2bS9wY2kuaFxcbisrKyBiL2FyY2gvczM5MC9rdm0vcGNpLmhcXG5AQCAtMjEsNiArMjEsOCBAQCBzdHJ1Y3Qga3ZtX3pkZXYge1xcbiBcXHRzdHJ1Y3QgenBjaV9kZXYgKnpkZXY7XFxuIFxcdHN0cnVjdCBrdm0gKmt2bTtcXG4gXFx0c3RydWN0IHpwY2lfZmliIGZpYjtcXG4rXFx0c3RydWN0IHVzZXJfc3RydWN0ICp1c2VyX2FjY291bnQ7XFxuK1xcdHN0cnVjdCBtbV9zdHJ1Y3QgKm1tX2FjY291bnQ7XFxuIFxcdHN0cnVjdCBsaXN0X2hlYWQgZW50cnk7XFxuIH07XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMDozOC4wMzg1MDI2MDVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0ODg0MzM1ODM2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWRklPX1BDSV9aREVWX0tWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9zMzkwX3BjaV9haWZfZW5hYmxlXCIsXG4gICAgXCJrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGVcIixcbiAgICBcImt2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW5cIixcbiAgICBcImt2bV9zMzkwX3BjaV96cGNpX29wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgczM5MHggS1ZNIFBDSSBwYXNzdGhyb3VnaCBsb2dpYywgc3BlY2lmaWNhbGx5IG1lbW9yeSBhY2NvdW50aW5nIGFuZCBjbGVhbnVwIHBhdGhzIGR1cmluZyBBSUYgKEFkYXB0ZXIgSW50ZXJydXB0aW9uIEZhY2lsaXR5KSBlbmFibGUvZGlzYWJsZS4gVGhlc2UgYXJlIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyAoS1ZNX1MzOTBfWlBDSU9QX1JFR0FFTiBhbmQgS1ZNX1MzOTBfWlBDSU9QX0RFUkVHX0FFTikgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIG1lbW9yeSBsZWFrcyBvciByZWZlcmVuY2UgY291bnRpbmcgaXNzdWVzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZkN2Q1NmIzZTU1Y2FkYTQ4OGQzYzc5MmMxMzFhYTg5NWMwZTQwZTlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAxNiAyMzoyMDozNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vcGNpLmMgYi9hcmNoL3MzOTAva3ZtL3BjaS5jXG5pbmRleCA3MjBiYjU4Y2FiZTJlOS4uZjg1ZDg1NmI1OGM2NWMgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL3BjaS5jXG4rKysgYi9hcmNoL3MzOTAva3ZtL3BjaS5jXG5AQCAtMTkwLDMzICsxOTAsNTEgQEAgc3RhdGljIGludCBrdm1fenBjaV9jbGVhcl9haXJxKHN0cnVjdCB6cGNpX2RldiAqemRldilcbiBcdHJldHVybiBjYyA/IC1FSU8gOiAwO1xuIH1cbiBcbi1zdGF0aWMgaW5saW5lIHZvaWQgdW5hY2NvdW50X21lbSh1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKVxuK3N0YXRpYyBpbmxpbmUgdm9pZCB1bmFjY291bnRfbWVtKHN0cnVjdCBrdm1femRldiAqa3pkZXYsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpXG4ge1xuLVx0c3RydWN0IHVzZXJfc3RydWN0ICp1c2VyID0gZ2V0X3VpZChjdXJyZW50X3VzZXIoKSk7XG4rXHRzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIgPSBremRldi1cdTAwM2V1c2VyX2FjY291bnQ7XG4rXHRzdHJ1Y3QgbW1fc3RydWN0ICptbV9hY2NvdW50ID0ga3pkZXYtXHUwMDNlbW1fYWNjb3VudDtcbiBcbi1cdGlmICh1c2VyKVxuK1x0aWYgKHVzZXIpIHtcbiBcdFx0YXRvbWljX2xvbmdfc3ViKG5yX3BhZ2VzLCBcdTAwMjZ1c2VyLVx1MDAzZWxvY2tlZF92bSk7XG4tXHRpZiAoY3VycmVudC1cdTAwM2VtbSlcbi1cdFx0YXRvbWljNjRfc3ViKG5yX3BhZ2VzLCBcdTAwMjZjdXJyZW50LVx1MDAzZW1tLVx1MDAzZXBpbm5lZF92bSk7XG4rXHRcdGZyZWVfdWlkKHVzZXIpO1xuK1x0XHRremRldi1cdTAwM2V1c2VyX2FjY291bnQgPSBOVUxMO1xuK1x0fVxuK1xuK1x0aWYgKG1tX2FjY291bnQpIHtcbitcdFx0YXRvbWljNjRfc3ViKG5yX3BhZ2VzLCBcdTAwMjZtbV9hY2NvdW50LVx1MDAzZXBpbm5lZF92bSk7XG4rXHRcdG1tZHJvcChtbV9hY2NvdW50KTtcbitcdFx0a3pkZXYtXHUwMDNlbW1fYWNjb3VudCA9IE5VTEw7XG4rXHR9XG4gfVxuIFxuLXN0YXRpYyBpbmxpbmUgaW50IGFjY291bnRfbWVtKHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpXG4rc3RhdGljIGlubGluZSBpbnQgYWNjb3VudF9tZW0oc3RydWN0IGt2bV96ZGV2ICpremRldiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcylcbiB7XG4gXHRzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIgPSBnZXRfdWlkKGN1cnJlbnRfdXNlcigpKTtcbiBcdHVuc2lnbmVkIGxvbmcgcGFnZV9saW1pdCwgY3VyX3BhZ2VzLCBuZXdfcGFnZXM7XG4rXHRpbnQgcmMgPSAwO1xuIFxuIFx0cGFnZV9saW1pdCA9IHJsaW1pdChSTElNSVRfTUVNTE9DSykgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQ7XG4gXG4gXHRjdXJfcGFnZXMgPSBhdG9taWNfbG9uZ19yZWFkKFx1MDAyNnVzZXItXHUwMDNlbG9ja2VkX3ZtKTtcbiBcdGRvIHtcbiBcdFx0bmV3X3BhZ2VzID0gY3VyX3BhZ2VzICsgbnJfcGFnZXM7XG4tXHRcdGlmIChuZXdfcGFnZXMgXHUwMDNlIHBhZ2VfbGltaXQpXG4tXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4rXHRcdGlmIChuZXdfcGFnZXMgXHUwMDNlIHBhZ2VfbGltaXQpIHtcbitcdFx0XHRyYyA9ICAtRU5PTUVNO1xuK1x0XHRcdGdvdG8gb3V0O1xuK1x0XHR9XG4gXHR9IHdoaWxlICghYXRvbWljX2xvbmdfdHJ5X2NtcHhjaGcoXHUwMDI2dXNlci1cdTAwM2Vsb2NrZWRfdm0sIFx1MDAyNmN1cl9wYWdlcywgbmV3X3BhZ2VzKSk7XG4gXG4rXHRtbWdyYWIoY3VycmVudC1cdTAwM2VtbSk7XG4gXHRhdG9taWM2NF9hZGQobnJfcGFnZXMsIFx1MDAyNmN1cnJlbnQtXHUwMDNlbW0tXHUwMDNlcGlubmVkX3ZtKTtcbitcdGt6ZGV2LVx1MDAzZXVzZXJfYWNjb3VudCA9IHVzZXI7XG4rXHRremRldi1cdTAwM2VtbV9hY2NvdW50ID0gY3VycmVudC1cdTAwM2VtbTtcbiBcbiBcdHJldHVybiAwO1xuK1xuK291dDpcbitcdGZyZWVfdWlkKHVzZXIpO1xuK1x0cmV0dXJuIHJjO1xuIH1cbiBcbiBzdGF0aWMgaW50IGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlKHN0cnVjdCB6cGNpX2RldiAqemRldiwgc3RydWN0IHpwY2lfZmliICpmaWIsXG5AQCAtMjc1LDIwICsyOTMsMjggQEAgc3RhdGljIGludCBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsIHN0cnVjdCB6cGNpX2ZpYiAqZmliLFxuIFx0fVxuIFxuIFx0LyogQWNjb3VudCBmb3IgcGlubmVkIHBhZ2VzLCByb2xsIGJhY2sgb24gZmFpbHVyZSAqL1xuLVx0aWYgKGFjY291bnRfbWVtKHBjb3VudCkpXG4rXHRyYyA9IGFjY291bnRfbWVtKHpkZXYtXHUwMDNla3pkZXYsIHBjb3VudCk7XG4rXHRpZiAocmMpXG4gXHRcdGdvdG8gdW5waW4yO1xuIFxuIFx0LyogQUlTQiBtdXN0IGJlIGFsbG9jYXRlZCBiZWZvcmUgd2UgY2FuIGZpbGwgaW4gR0FJVEUgKi9cbiBcdG11dGV4X2xvY2soXHUwMDI2YWlmdC1cdTAwM2VhaWZ0X2xvY2spO1xuIFx0Yml0ID0gYWlycV9pdl9hbGxvY19iaXQoYWlmdC1cdTAwM2VzYnYpO1xuLVx0aWYgKGJpdCA9PSAtMVVMKVxuK1x0aWYgKGJpdCA9PSAtMVVMKSB7XG4rXHRcdHJjID0gLUVOT01FTTtcbiBcdFx0Z290byB1bmxvY2s7XG4rXHR9XG4gXHR6ZGV2LVx1MDAzZWFpc2IgPSBiaXQ7IC8qIHN0b3JlIHRoZSBzdW1tYXJ5IGJpdCBudW1iZXIgKi9cbiBcdHpkZXYtXHUwMDNlYWlidiA9IGFpcnFfaXZfY3JlYXRlKG1zaV92ZWNzLCBBSVJRX0lWX0RBVEEgfFxuIFx0XHRcdFx0ICAgIEFJUlFfSVZfQklUTE9DSyB8XG4gXHRcdFx0XHQgICAgQUlSUV9JVl9HVUVTVFZFQyxcbiBcdFx0XHRcdCAgICBwaHlzX3RvX3ZpcnQoZmliLVx1MDAzZWZtdDAuYWlidikpO1xuIFxuK1x0aWYgKCF6ZGV2LVx1MDAzZWFpYnYpIHtcbitcdFx0cmMgPSAtRU5PTUVNO1xuK1x0XHRnb3RvIGZyZWVfYWlzYjtcbitcdH1cbitcbiBcdHNwaW5fbG9ja19pcnEoXHUwMDI2YWlmdC1cdTAwM2VnYWl0X2xvY2spO1xuIFx0Z2FpdGUgPSBhaWZ0LVx1MDAzZWdhaXQgKyB6ZGV2LVx1MDAzZWFpc2I7XG4gXG5AQCAtMzE5LDEzICszNDUsMzYgQEAgc3RhdGljIGludCBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsIHN0cnVjdCB6cGNpX2ZpYiAqZmliLFxuIFx0LyogU2F2ZSBzb21lIGd1ZXN0IGZpYiB2YWx1ZXMgaW4gdGhlIGhvc3QgZm9yIGxhdGVyIHVzZSAqL1xuIFx0emRldi1cdTAwM2VremRldi1cdTAwM2VmaWIuZm10MC5pc2MgPSBmaWItXHUwMDNlZm10MC5pc2M7XG4gXHR6ZGV2LVx1MDAzZWt6ZGV2LVx1MDAzZWZpYi5mbXQwLmFpYnYgPSBmaWItXHUwMDNlZm10MC5haWJ2O1xuLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNmFpZnQtXHUwMDNlYWlmdF9sb2NrKTtcbiBcbiBcdC8qIElzc3VlIHRoZSBjbHAgdG8gc2V0dXAgdGhlIGlycSBub3cgKi9cbiBcdHJjID0ga3ZtX3pwY2lfc2V0X2FpcnEoemRldik7XG4tXHRyZXR1cm4gcmM7XG4rXHRpZiAoIXJjKSB7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZhaWZ0LVx1MDAzZWFpZnRfbG9jayk7XG4rXHRcdHJldHVybiByYztcbitcdH1cbitcbitcdC8qIFN0YXJ0IGNsZWFudXAgKi9cbitcdHpkZXYtXHUwMDNla3pkZXYtXHUwMDNlZmliLmZtdDAuaXNjID0gMDtcbitcdHpkZXYtXHUwMDNla3pkZXYtXHUwMDNlZmliLmZtdDAuYWlidiA9IDA7XG4gXG4rXHRzcGluX2xvY2tfaXJxKFx1MDAyNmFpZnQtXHUwMDNlZ2FpdF9sb2NrKTtcbitcdGdhaXRlLVx1MDAzZWNvdW50LS07XG4rXHRnYWl0ZS1cdTAwM2VhaXNiID0gMDtcbitcdGdhaXRlLVx1MDAzZWdpc2MgPSAwO1xuK1x0Z2FpdGUtXHUwMDNlYWlzYm8gPSAwO1xuK1x0Z2FpdGUtXHUwMDNlZ2lzYSA9IDA7XG4rXHRhaWZ0LVx1MDAzZWt6ZGV2W3pkZXYtXHUwMDNlYWlzYl0gPSBOVUxMO1xuK1x0c3Bpbl91bmxvY2tfaXJxKFx1MDAyNmFpZnQtXHUwMDNlZ2FpdF9sb2NrKTtcbitcbitcdGFpcnFfaXZfcmVsZWFzZSh6ZGV2LVx1MDAzZWFpYnYpO1xuK1x0emRldi1cdTAwM2VhaWJ2ID0gTlVMTDtcbitcbitmcmVlX2Fpc2I6XG4rXHRhaXJxX2l2X2ZyZWVfYml0KGFpZnQtXHUwMDNlc2J2LCB6ZGV2LVx1MDAzZWFpc2IpO1xuK1x0emRldi1cdTAwM2VhaXNiID0gMDtcbiB1bmxvY2s6XG4rXHRpZiAocGNvdW50IFx1MDAzZSAwKVxuK1x0XHR1bmFjY291bnRfbWVtKHpkZXYtXHUwMDNla3pkZXYsIHBjb3VudCk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2YWlmdC1cdTAwM2VhaWZ0X2xvY2spO1xuIHVucGluMjpcbiBcdGlmIChmaWItXHUwMDNlZm10MC5zdW0gPT0gMSlcbkBAIC0zOTYsNyArNDQ1LDcgQEAgc3RhdGljIGludCBrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGUoc3RydWN0IHpwY2lfZGV2ICp6ZGV2LCBib29sIGZvcmNlKVxuIFx0XHRwY291bnQrKztcbiBcdH1cbiBcdGlmIChwY291bnQgXHUwMDNlIDApXG4tXHRcdHVuYWNjb3VudF9tZW0ocGNvdW50KTtcbitcdFx0dW5hY2NvdW50X21lbShremRldiwgcGNvdW50KTtcbiBvdXQ6XG4gXHRtdXRleF91bmxvY2soXHUwMDI2YWlmdC1cdTAwM2VhaWZ0X2xvY2spO1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rdm0vcGNpLmggYi9hcmNoL3MzOTAva3ZtL3BjaS5oXG5pbmRleCBmZjA5NzJkZDVlNzFkYy4uNTQ0ZTZhYTc1ZTM4OGMgMTAwNjQ0XG4tLS0gYS9hcmNoL3MzOTAva3ZtL3BjaS5oXG4rKysgYi9hcmNoL3MzOTAva3ZtL3BjaS5oXG5AQCAtMjEsNiArMjEsOCBAQCBzdHJ1Y3Qga3ZtX3pkZXYge1xuIFx0c3RydWN0IHpwY2lfZGV2ICp6ZGV2O1xuIFx0c3RydWN0IGt2bSAqa3ZtO1xuIFx0c3RydWN0IHpwY2lfZmliIGZpYjtcbitcdHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcl9hY2NvdW50O1xuK1x0c3RydWN0IG1tX3N0cnVjdCAqbW1fYWNjb3VudDtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgZW50cnk7XG4gfTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIzOjIwOjM4LjAzODUwNDE5NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MDE1NDAxMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBzMzkwIEtWTSBQQ0kgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIOKAkyBpdCdzIHRvdWNoaW5nIGBhcmNoL3MzOTAva3ZtL3BjaS5jYCBhbmQgYGFyY2gvczM5MC9rdm0vcGNpLmhgLiBTZWVtcyBsaWtlIGl0J3MgYWRkcmVzc2luZyBzb21lIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlcyB3aXRoaW4gdGhlIHMzOTAgS1ZNIFBDSSBjb2RlLiBTcGVjaWZpY2FsbHksIGl0J3MgbW9kaWZ5aW5nIHRoZSBgdW5hY2NvdW50X21lbWAgYW5kIGBhY2NvdW50X21lbWAgZnVuY3Rpb25zIHRvIGhhbmRsZSBgdXNlcl9zdHJ1Y3RgIGFuZCBgbW1fc3RydWN0YCByZWZlcmVuY2VzIHByb3Blcmx5IHdpdGhpbiBga3ZtX3pkZXZgLiBHb29kIGNhdGNoOyB0aGVzZSBhcmUgdGhlIGtpbmRzIG9mIGxlYWtzIHRoYXQgY2FuIGJpdGUgeW91IGxhdGVyLiBBbHNvLCBpdCBsb29rcyBsaWtlIHRoZXJlIGFyZSBzb21lIGFkZGVkIGNsZWFudXAgcGF0aHMgaW4gYGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlYCB0byBncmFjZWZ1bGx5IGhhbmRsZSBmYWlsdXJlcywgd2hpY2ggaXMgYWx3YXlzIGEgZ29vZCBwcmFjdGljZSBmb3IgcmVzaWxpZW5jZS5cblxuTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgY29kZSBpcyBldmVuICpyZWFjaGFibGUqIGFuZCBpZiB0aGUgZml4IGlzIGZ1bmN0aW9uYWwuIEl0J3Mgb2J2aW91c2x5IHJlbGF0ZWQgdG8gS1ZNIG9uIHRoZSBzMzkwIGFyY2hpdGVjdHVyZSwgYW5kIGl0J3MgbW9kaWZ5aW5nIGBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZWAgYW5kIGBrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGVgLiBTbywgdGhlc2UgYXJlIGZ1bmN0aW9uYWwgZml4ZXMgZm9yIG1lbW9yeSBvciByZWZlcmVuY2UgbGVha3MuIFRoZSByZWFsIHRlc3QgaXM6IGNhbiB3ZSBhY3R1YWxseSAqcnVuKiB0aGlzPyBJcyBzMzkwIEtWTSBlYXNpbHkgdGVzdGFibGU/IFRoZW4sIEkgcmVtZW1iZXIhIFN5emthbGxlciBkb2VzIGhhdmUgczM5MHggS1ZNIGZ1enppbmcuIFRoYXQncyBmYW50YXN0aWMuXG5cbk5vdywgbGV0J3MgZmlyZSB1cCB0aGUgdG9vbHMuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIEtjb25maWcgb3B0aW9ucyBhcmUgcmVsZXZhbnQgYW5kIHRoZSBzeW1ib2xzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvZGUgdG8gZnVsbHkgYXNzZXNzIHRoZSBwYXRjaCdzIGludGVncmF0aW9uIGFuZCBpbXBhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MDIsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMDo0NC40NDAwNDYzODRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMxNDY3NzU0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fczM5MF9wY2lfYWlmX2VuYWJsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL3BjaS5jPTIxMT1zdGF0aWMgaW5saW5lIGludCBhY2NvdW50X21lbShzdHJ1Y3Qga3ZtX3pkZXYgKmt6ZGV2LCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9wY2kuYy0yMzktXFxuYXJjaC9zMzkwL2t2bS9wY2kuYzoyNDA6c3RhdGljIGludCBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsIHN0cnVjdCB6cGNpX2ZpYiAqZmliLFxcbmFyY2gvczM5MC9rdm0vcGNpLmMtMjQxLVxcdFxcdFxcdFxcdCAgIGJvb2wgYXNzaXN0KVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9wY2kuYz02NDU9c3RhdGljIGludCBrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuKHN0cnVjdCB6cGNpX2RldiAqemRldixcXG4tLVxcbmFyY2gvczM5MC9rdm0vcGNpLmMtNjY0LVxcdGhvc3RmbGFnID0gIShhcmdzLVxcdTAwM2V1LnJlZ19hZW4uZmxhZ3MgXFx1MDAyNiBLVk1fUzM5MF9aUENJT1BfUkVHQUVOX0hPU1QpO1xcbmFyY2gvczM5MC9rdm0vcGNpLmM6NjY1OlxcdHJldHVybiBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZSh6ZGV2LCBcXHUwMDI2ZmliLCBob3N0ZmxhZyk7XFxuYXJjaC9zMzkwL2t2bS9wY2kuYy02NjYtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMDo0OC43NTQ3MzIxMjVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxOTA3Mzg4OTQxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyByZXF1ZXN0ZWQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBmb3IgczM5MCBLVk0gUENJIFN1cHBvcnQqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgZ29hbCBpcyB0byBmaWd1cmUgb3V0IHdoaWNoIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUga2VybmVsJ3MgYnVpbGQgc3lzdGVtLCBhcmUgcmVzcG9uc2libGUgZm9yIGVuYWJsaW5nIHRoZSBpbmNsdXNpb24gb2YgYGFyY2gvczM5MC9rdm0vcGNpLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhpcyBwYXJ0aWN1bGFyIGZpbGUgaXMgYnJvdWdodCBpbnRvIHRoZSBidWlsZC4gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBjb25maWd1cmF0aW9uIGZsYWdzIGFzc29jaWF0ZWQgd2l0aCB0aGUgS1ZNIHN1YnN5c3RlbSBvbiBzMzkwLCBmb2N1c2luZyBvbiB0aGUgUENJIGFzcGVjdHMgd2l0aGluIHRoYXQgYXJjaGl0ZWN0dXJlLiBJJ2xsIHByb2JhYmx5IHN0YXJ0IGJ5IGxvb2tpbmcgYXQgdGhlIHJlbGV2YW50IGBLY29uZmlnYCBmaWxlcyBhbmQgYE1ha2VmaWxlYCBlbnRyaWVzIHdpdGhpbiB0aGUgczM5MCBhbmQgS1ZNIGRpcmVjdG9yaWVzLiBNeSBleHBlY3RhdGlvbiBpcyB0aGUgY29uZmlndXJhdGlvbiB3aWxsIGxpa2VseSBiZSBkcml2ZW4gYnkgYSBjb21iaW5hdGlvbiBvZiBnZW5lcmFsIEtWTSBzZXR0aW5ncyBhbmQgczM5MC1zcGVjaWZpYyBhcmNoaXRlY3R1cmFsIGNvbnNpZGVyYXRpb25zLCBwb3NzaWJseSBpbnZvbHZpbmcgdGhpbmdzIGxpa2UgdmlydHVhbGl6YXRpb24gZmVhdHVyZXMsIGRldmljZSBhc3NpZ25tZW50LCBvciBzcGVjaWZpYyBQQ0kgZGV2aWNlIHN1cHBvcnQgb24gdGhhdCBwbGF0Zm9ybS4gSeKAmWxsIGJlIGxvb2tpbmcgZm9yIGtleXdvcmRzIGxpa2UgXCJLVk1cIiwgXCJQQ0lcIiwgXCJzMzkwXCIsIFwiQ09ORklHX1wiLCBhbmQgYW55dGhpbmcgcmVsYXRlZCB0byBkZXZpY2UgZHJpdmVycyBvciB2aXJ0dWFsaXphdGlvbi4gVWx0aW1hdGVseSwgSSB3YW50IHRvIGlzb2xhdGUgdGhlIGV4YWN0IGNvbmRpdGlvbmFsIHN0YXRlbWVudHMgdGhhdCB0cmlnZ2VyIHRoZSBjb21waWxhdGlvbiBvZiBgcGNpLmNgLCBzbyBJIGNhbiB1bmRlcnN0YW5kIHRoZSBsb2dpY2FsIHBhdGggZm9yIGl0cyBpbmNsdXNpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1ODAsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMTowNy44Mjg2MjM1OTRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQwNDI1NzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaVxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3MzOTAva3ZtL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvczM5MC9rdm0vTWFrZWZpbGU9MTI9a3ZtLXkgKz0gZGF0Lm8gZ21hcC5vIGZhdWx0aW4ub1xcbmFyY2gvczM5MC9rdm0vTWFrZWZpbGUtMTMtXFxuYXJjaC9zMzkwL2t2bS9NYWtlZmlsZToxNDprdm0tJChDT05GSUdfVkZJT19QQ0lfWkRFVl9LVk0pICs9IHBjaS5vXFxuYXJjaC9zMzkwL2t2bS9NYWtlZmlsZS0xNS1vYmotJChDT05GSUdfS1ZNKSArPSBrdm0ub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMTowOC4zNjkwNjUyOTNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTk5NjAzMjcyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGluIHRoaXMgZmllbGQsIGFuZCB3cml0aW5nIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYFZGSU9fUENJX1pERVZfS1ZNYCBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIHRoZSBjb25maWd1cmF0aW9uIGluIHF1ZXN0aW9uIGlzIGBWRklPX1BDSV9aREVWX0tWTWAuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBjaGVjayBgS1ZNYCBnZW5lcmFsbHksIGFzIGl0J3MgZGlyZWN0bHkgcmVmZXJlbmNlZC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoaXMgYFpERVZgIGZlYXR1cmUgYW5kIHRoZSBicm9hZGVyIEtWTSBmcmFtZXdvcmsuIElzIHRoaXMgYSBzcGVjaWZpYyBLVk0gZmVhdHVyZSwgb3IgZG9lcyBpdCBsZXZlcmFnZSBLVk0gaW4gYSBtb3JlIGdlbmVyYWwgc2Vuc2U/XG5cblRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSwgbXkgbmV4dCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmb3IgYFZGSU9fUENJX1pERVZfS1ZNYC4gSSdsbCBuZWVkIHRvIHNlZSB0aGUgZGVwZW5kZW5jaWVzLCBoZWxwIHRleHQsIGFuZCBhbnl0aGluZyBlbHNlIHRoYXQgbWlnaHQgaWxsdW1pbmF0ZSB3aGF0IHRoaXMgY29uZmlndXJhdGlvbiBhY3R1YWxseSAqZG9lcyouIEknbSBsb29raW5nIGZvciB0aGUgXCJ3aHlcIiBhbmQgXCJob3dcIiBiZWhpbmQgdGhpcy4gV2hhdCBvdGhlciBvcHRpb25zIGFyZSByZWxhdGVkPyBXaGF0IHByZXJlcXVpc2l0ZXMgYXJlIHRoZXJlPyBEb2VzIGl0IGJ1aWxkIGEgbW9kdWxlPyBJcyBpdCBhbiBpbnRyaW5zaWMgcGFydCBvZiB0aGUga2VybmVsPyBXaGF0J3MgdGhlIGNvbnRleHQsIHRoZSB0cmFkZSBvZmZzLCBhbmQgc28gb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMzQsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMTozNC4zNjUxMDExMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTg4MzYzNjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWRklPX1BDSV9aREVWX0tWTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc9NDU9ZW5kaWZcXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNDYtXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjQ3OmNvbmZpZyBWRklPX1BDSV9aREVWX0tWTVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00OC1cXHRib29sIFxcXCJWRklPIFBDSSBleHRlbnNpb25zIGZvciBzMzkweCBLVk0gcGFzc3Rocm91Z2hcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIzOjIxOjM3LjM1MzQ2OTg5OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4MDE0MTQwNzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgQ2FsbGVycyBvZiBga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbmAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcm9sZSBvZiBga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbmAuIEZpcnN0LCBsZXQncyB0cmFjZSBpdHMgdXNhZ2UuIEknbSBnb2luZyB0byBsb29rIGF0IHRoZSBjcm9zcy1yZWZlcmVuY2VzLiBJIHdhbnQgdG8gc2VlIHdoaWNoIGZ1bmN0aW9ucyBhcmUgY2FsbGluZyB0aGlzIHNwZWNpZmljIHJvdXRpbmUuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkLiBUaGlzIHdpbGwgcG9pbnQgbWUgdG93YXJkcyB0aGUgc3BlY2lmaWMgc2NlbmFyaW9zIGFuZCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucyB3aGVyZSB0aGlzIEFFTiAoQXN5bmNocm9ub3VzIEV2ZW50IE5vdGlmaWNhdGlvbikgaGFuZGxpbmcgaXMgdHJpZ2dlcmVkLCBhbGxvd2luZyBtZSB0byBiZXR0ZXIgdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgWiBQQ0kgZGV2aWNlcyBhbmQgdGhlIEtWTSBzMzkwIGd1ZXN0LiBIb3BlZnVsbHksIHRoZSBjYWxsaW5nIGZ1bmN0aW9ucyB3aWxsIHNoZWQgbGlnaHQgb24gd2hhdCB0cmlnZ2VycyB0aGVzZSBBRU5zIGFuZCB3aGF0IHRoZSBleHBlY3RlZCBzeXN0ZW0gYmVoYXZpb3IgaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NDcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMTo1NS4zNjc2MTMwNzlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MzU0OTMwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL3BjaS5jPTYyOD1zdGF0aWMgc3RydWN0IHpwY2lfZGV2ICpnZXRfemRldl9mcm9tX2t2bV9ieV9maChzdHJ1Y3Qga3ZtICprdm0sIHUzMiBmaClcXG4tLVxcbmFyY2gvczM5MC9rdm0vcGNpLmMtNjQ0LVxcbmFyY2gvczM5MC9rdm0vcGNpLmM6NjQ1OnN0YXRpYyBpbnQga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbihzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsXFxuYXJjaC9zMzkwL2t2bS9wY2kuYy02NDYtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qga3ZtX3MzOTBfenBjaV9vcCAqYXJncylcXG4tLVxcbmFyY2gvczM5MC9rdm0vcGNpLmM9NjY4PWludCBrdm1fczM5MF9wY2lfenBjaV9vcChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczM5MF96cGNpX29wICphcmdzKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9wY2kuYy02OTctXFx0XFx0fVxcbmFyY2gvczM5MC9rdm0vcGNpLmM6Njk4OlxcdFxcdHIgPSBrdm1fczM5MF9wY2lfenBjaV9yZWdfYWVuKHpkZXYsIGFyZ3MpO1xcbmFyY2gvczM5MC9rdm0vcGNpLmMtNjk5LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMTo1Ny44MDMxMTI4ODlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI3MTExNTIyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIFBDSSBQYXNzdGhyb3VnaCBMYW5kc2NhcGUgaW4gS1ZNL3MzOTAqKlxuXG5BbHJpZ2h0LCBJJ20gZGlnZ2luZyBpbnRvIHRoZSBLVk0vczM5MCBjb2RlIGFnYWluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIFBDSSBwYXNzdGhyb3VnaCBpbXBsZW1lbnRhdGlvbiBiZXR0ZXIuIEkgc2VlIHRoYXQgYGt2bV9zMzkwX3BjaV96cGNpX29wYCBmdW5jdGlvbiBpcyBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLiBUaGUgbmF0dXJhbCBuZXh0IHF1ZXN0aW9uIGlzICp3aGVyZSogaXMgaXQgYmVpbmcgaW52b2tlZD8gVW5kZXJzdGFuZGluZyBpdHMgY2FsbCBncmFwaCBpcyBjcnVjaWFsIHRvIGdyYXNwIGhvdyB0aGUgelBDSSBvcGVyYXRpb25zIGFyZSBiZWluZyByb3V0ZWQgYW5kIG1hbmFnZWQgd2l0aGluIHRoZSBLVk0gZnJhbWV3b3JrIG9uIHMzOTB4LiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgZnVuY3Rpb24gdG8gc2VlIHRoZSBkaWZmZXJlbnQgcGF0aHdheXMgdGhhdCBsZWFkIHRvIGl0LiBLbm93aW5nIHRoZSBjYWxsZXJzIHdpbGwgZXhwb3NlIHRoZSBzdXJyb3VuZGluZyBsb2dpYyBhbmQgdGhlIHNjZW5hcmlvcyB0aGF0IHRyaWdnZXIgdGhlc2UgY3J1Y2lhbCB6UENJIG9wZXJhdGlvbnMuIFRoYXQgY2FsbCBzdGFjayBpcyB3aGF0J3MgZ29pbmcgdG8gc2hlZCBsaWdodCBvbiBpdHMgcm9sZSB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwMjgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMjowMS4wNzQyMzEyODJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMTQwMzM5NjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3MzOTBfcGNpX3pwY2lfb3BcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jPTI5MjU9aW50IGt2bV9hcmNoX3ZtX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jLTMwOTItXFx0XFx0fVxcbmFyY2gvczM5MC9rdm0va3ZtLXMzOTAuYzozMDkzOlxcdFxcdHIgPSBrdm1fczM5MF9wY2lfenBjaV9vcChrdm0sIFxcdTAwMjZhcmdzKTtcXG5hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMtMzA5NC1cXHRcXHRicmVhaztcXG4tLVxcbmFyY2gvczM5MC9rdm0vcGNpLmM9NjQ1PXN0YXRpYyBpbnQga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbihzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTY2Ny1cXG5hcmNoL3MzOTAva3ZtL3BjaS5jOjY2ODppbnQga3ZtX3MzOTBfcGNpX3pwY2lfb3Aoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3MzOTBfenBjaV9vcCAqYXJncylcXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTY2OS17XFxuLS1cXG5hcmNoL3MzOTAva3ZtL3BjaS5oPTYxPXZvaWQga3ZtX3MzOTBfcGNpX2NsZWFyX2xpc3Qoc3RydWN0IGt2bSAqa3ZtKTtcXG5hcmNoL3MzOTAva3ZtL3BjaS5oLTYyLVxcbmFyY2gvczM5MC9rdm0vcGNpLmg6NjM6aW50IGt2bV9zMzkwX3BjaV96cGNpX29wKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9zMzkwX3pwY2lfb3AgKmFyZ3MpO1xcbmFyY2gvczM5MC9rdm0vcGNpLmgtNjQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDIzOjIyOjAzLjM4ODI3MTc5NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4ODU5MzE3NjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtWTS9WRklPLVBDSSBaREVWIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoaXMgWkRFViBmdW5jdGlvbmFsaXR5IGlzIGV4cG9zZWQuIEl0IGxvb2tzIGxpa2UgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQgaXMgdGhyb3VnaCBLVk0gaW9jdGxzLCB3aGljaCBpcyB0aGUgZXhwZWN0ZWQgYXBwcm9hY2guIFRoZSBrZXJuZWwgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIHZlcmlmeSBhcmUgYEtWTWAgYW5kIGBWRklPX1BDSV9aREVWX0tWTWAuIEdvb2QsIHRoYXQgbWFrZXMgc2Vuc2UuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBjcml0aWNhbCBzeW1ib2xzLiBJdCBhcHBlYXJzIHRoZSBtYWluIGZvY3VzIGlzIG9uIGBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZWAsIGBrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGVgLCBga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbmAsIGFuZCBga3ZtX3MzOTBfcGNpX3pwY2lfb3BgLiBJJ2xsIHdhbnQgdG8gZm9jdXMgb24gdGhlc2UgZnVuY3Rpb25zIHRvIGdldCBhIGdvb2QgaGFuZGxlIG9uIHRoZSBjb250cm9sIGZsb3cuXG5cbkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgd2FudCB0byBzZWUgaWYgYW55IG90aGVyIGZ1bmN0aW9ucyBoYXZlIGJlZW4gbW9kaWZpZWQgb3IgYXJlIGludm9sdmVkLiBBaCwgaGVyZSB3ZSBhcmU7IGl0IGxvb2tzIGxpa2UgYGFjY291bnRfbWVtYCBhbmQgYHVuYWNjb3VudF9tZW1gIGFyZSBzdGF0aWMgaW5saW5lLiBUaGlzIG1lYW5zIHRoZXknbGwgYmUgaW50ZWdyYXRlZCBkaXJlY3RseSBpbnRvIHRoZSBgZW5hYmxlYCBhbmQgYGRpc2FibGVgIGZ1bmN0aW9ucywgc28gSSdsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgd2hlbiBJJ20gdHJhY2luZyBleGVjdXRpb24uIExldCdzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYGt2bV9zMzkwX3BjaV9haWZfZGlzYWJsZWAgdG8gc3RhcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NDksIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjM6MjI6MTIuMjQ3NTkxNjQzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjk5ODExMTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9zMzkwX3BjaV9haWZfZGlzYWJsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3MzOTAva3ZtL3BjaS5jPTI0MD1zdGF0aWMgaW50IGt2bV9zMzkwX3BjaV9haWZfZW5hYmxlKHN0cnVjdCB6cGNpX2RldiAqemRldiwgc3RydWN0IHpwY2lfZmliICpmaWIsXFxuLS1cXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTM4OC1cXG5hcmNoL3MzOTAva3ZtL3BjaS5jOjM4OTpzdGF0aWMgaW50IGt2bV9zMzkwX3BjaV9haWZfZGlzYWJsZShzdHJ1Y3QgenBjaV9kZXYgKnpkZXYsIGJvb2wgZm9yY2UpXFxuYXJjaC9zMzkwL2t2bS9wY2kuYy0zOTAte1xcbi0tXFxuYXJjaC9zMzkwL2t2bS9wY2kuYz01NjA9c3RhdGljIHZvaWQga3ZtX3MzOTBfcGNpX3VucmVnaXN0ZXJfa3ZtKHZvaWQgKm9wYXF1ZSlcXG4tLVxcbmFyY2gvczM5MC9rdm0vcGNpLmMtNTg2LVxcdGlmICh6ZGV2LVxcdTAwM2VremRldi1cXHUwMDNlZmliLmZtdDAuYWlidiAhPSAwKVxcbmFyY2gvczM5MC9rdm0vcGNpLmM6NTg3OlxcdFxcdGt2bV9zMzkwX3BjaV9haWZfZGlzYWJsZSh6ZGV2LCB0cnVlKTtcXG5hcmNoL3MzOTAva3ZtL3BjaS5jLTU4OC1cXG4tLVxcbmFyY2gvczM5MC9rdm0vcGNpLmM9NjY4PWludCBrdm1fczM5MF9wY2lfenBjaV9vcChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fczM5MF96cGNpX29wICphcmdzKVxcbi0tXFxuYXJjaC9zMzkwL2t2bS9wY2kuYy03MDAtXFx0Y2FzZSBLVk1fUzM5MF9aUENJT1BfREVSRUdfQUVOOlxcbmFyY2gvczM5MC9rdm0vcGNpLmM6NzAxOlxcdFxcdHIgPSBrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGUoemRldiwgZmFsc2UpO1xcbmFyY2gvczM5MC9rdm0vcGNpLmMtNzAyLVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMjoxNC41NDc0MDc4NzZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIxNzI2MTI0OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ3VycmVudCBUcmFpbiBvZiBUaG91Z2h0KipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGVgIGZ1bmN0aW9uIGFuZCByZWFsaXppbmcgaXQncyBhbHNvIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgYEtWTV9TMzkwX1pQQ0lPUF9ERVJFR19BRU5gIGlvY3RsLiBJbnRlcmVzdGluZy4gSSBuZWVkIHRvIG1ha2UgYSBtZW50YWwgbm90ZSBvZiB0aGF0IGNvbm5lY3Rpb24sIGFzIGl0IGNvdWxkIGhhdmUgYnJvYWRlciBpbXBsaWNhdGlvbnMuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHNlZSBpZiB3b3JraW5nIHdpdGggYFZGSU9fUENJX1pERVZfS1ZNYCByZXF1aXJlcyBhbnkgb3RoZXIgcGFydGljdWxhciBjb25maWd1cmF0aW9ucyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gSSBzaG91bGQgY29uc2lkZXIgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzY1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjM6MjI6MjYuNzIwMDIzMTg3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTI3MzkxODkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWRklPX1BDSV9aREVWX0tWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW8vcGNpL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnPTQ1PWVuZGlmXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTQ2LVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzo0Nzpjb25maWcgVkZJT19QQ0lfWkRFVl9LVk1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiVkZJTyBQQ0kgZXh0ZW5zaW9ucyBmb3IgczM5MHggS1ZNIHBhc3N0aHJvdWdoXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMjoyOC42NDc0MjA3OTdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTc4ODk4MjM3MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OlxuXG4qKkRlbHZpbmcgaW50byB0aGUgVkZJTyBLY29uZmlnIGZvciBVbmRlcnN0YW5kaW5nKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnYCBmaWxlLiBJJ20gc3BlY2lmaWNhbGx5IGludGVyZXN0ZWQgaW4gbGluZSA0NywgYXMgdGhhdCBhcmVhIHVzdWFsbHkgaG9sZHMgc29tZSBjcml0aWNhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3IgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCBvcHRpb25zIGFyZSBjb250cm9sbGVkIGhlcmUgZm9yIHRoZSBWRklPLVBDSSBkcml2ZXIuIElzIGl0IHRoZSBmZWF0dXJlIGZsYWdzLCBwbGF0Zm9ybSBzdXBwb3J0IG9yIHNwZWNpZmljIGhhcmR3YXJlIHJlcXVpcmVtZW50cyBJIG5lZWQgdG8gcmVtZW1iZXI/IExldCdzIHJlZnJlc2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxMDcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMjo0Ni41MzcyNDYxN1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjUzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3ZmaW8vcGNpL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDA6XFx0XFx0ICBhc3NpZ25tZW50IHRvIHZpcnR1YWwgbWFjaGluZXMuICBUaGlzIGluY2x1ZGVzIGV4cG9zaW5nIGFuIElHRFxcbiAgNDE6XFx0XFx0ICBzcGVjaWZpYyBmaXJtd2FyZSB0YWJsZSBhbmQgcmVhZC1vbmx5IGNvcGllcyBvZiB0aGUgaG9zdCBicmlkZ2VcXG4gIDQyOlxcdFxcdCAgYW5kIExQQyBicmlkZ2UgY29uZmlnIHNwYWNlLlxcbiAgNDM6XFx0XFxuICA0NDpcXHRcXHQgIFRvIGVuYWJsZSBJbnRlbCBJR0QgYXNzaWdubWVudCB0aHJvdWdoIHZmaW8tcGNpLCBzYXkgWS5cXG4gIDQ1OlxcdGVuZGlmXFxuICA0NjpcXHRcXG4gIDQ3OlxcdGNvbmZpZyBWRklPX1BDSV9aREVWX0tWTVxcbiAgNDg6XFx0XFx0Ym9vbCBcXFwiVkZJTyBQQ0kgZXh0ZW5zaW9ucyBmb3IgczM5MHggS1ZNIHBhc3N0aHJvdWdoXFxcIlxcbiAgNDk6XFx0XFx0ZGVwZW5kcyBvbiBTMzkwIFxcdTAwMjZcXHUwMDI2IEtWTVxcbiAgNTA6XFx0XFx0ZGVmYXVsdCB5XFxuICA1MTpcXHRcXHRoZWxwXFxuICA1MjpcXHRcXHQgIFN1cHBvcnQgczM5MHgtc3BlY2lmaWMgZXh0ZW5zaW9ucyB0byBlbmFibGUgc3VwcG9ydCBmb3IgZW5oYW5jZW1lbnRzXFxuICA1MzpcXHRcXHQgIHRvIEtWTSBwYXNzdGhyb3VnaCBjYXBhYmlsaXRpZXMsIHN1Y2ggYXMgaW50ZXJwcmV0aXZlIGV4ZWN1dGlvbiBvZlxcbiAgNTQ6XFx0XFx0ICB6UENJIGluc3RydWN0aW9ucy5cXG4gIDU1OlxcdFxcbiAgNTY6XFx0XFx0ICBUbyBlbmFibGUgczM5MHggS1ZNIHZmaW8tcGNpIGV4dGVuc2lvbnMsIHNheSBZLlxcbiAgNTc6XFx0XFxuICA1ODpcXHRjb25maWcgVkZJT19QQ0lfRE1BQlVGXFxuICA1OTpcXHRcXHRkZWZfYm9vbCB5IGlmIFZGSU9fUENJX0NPUkUgXFx1MDAyNlxcdTAwMjYgUENJX1AyUERNQSBcXHUwMDI2XFx1MDAyNiBETUFfU0hBUkVEX0JVRkZFUlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQyMzoyMjo0Ni41MzczMDQzNVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDIwNjE5MjU3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgRnV6emluZyBTdHJhdGVneSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYW5kIGl0J3MgcHJldHR5IGNsZWFyIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGZ1enppbmcgc3RyYXRlZ3kgZm9jdXNlZCBvbiB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBgUzM5MGAgYW5kIGBLVk1gLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgYFZGSU9fUENJX1pERVZfS1ZNYCBjb25maWd1cmF0aW9uLiBMZXQgbWUgYnJlYWsgaXQgZG93bi5cblxuRXNzZW50aWFsbHksIHdlJ3JlIHRhcmdldGluZyB0aGUgY2hhbmdlcyBpbiB0aGUgczM5MHggS1ZNIFBDSSBwYXNzdGhyb3VnaCBsb2dpYy4gV2UncmUgemVyb2luZyBpbiBvbiBtZW1vcnkgbWFuYWdlbWVudCBhbmQgY2xlYW51cCB3aXRoaW4gdGhlIEFJRiBlbmFibGUvZGlzYWJsZSBwYXRocy4gVGhpcyBpcyB3aGVyZSB0aGUgdnVsbmVyYWJpbGl0eSBpcyBsaWtlbHkgdG8gYmUuXG5cbldlJ3ZlIGdvdCBvdXIgdGFyZ2V0cyBjbGVhcmx5IGRlZmluZWQ6IGBrdm1fczM5MF9wY2lfYWlmX2VuYWJsZWAsIGBrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGVgLCBga3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlbmAsIGFuZCBga3ZtX3MzOTBfcGNpX3pwY2lfb3BgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB0aHJvdWdoIEtWTSBpb2N0bHMsIHNwZWNpZmljYWxseSB0aGUgYEtWTV9TMzkwX1pQQ0lPUF9SRUdBRU5gIGFuZCBgS1ZNX1MzOTBfWlBDSU9QX0RFUkVHX0FFTmAgaW9jdGxzLiBUaGF0IG1ha2VzIHNlbnNlLCB0aG9zZSBhcmUgdGhlIGludGVyZmFjZXMgd2UgbmVlZCB0byBzY3J1dGluaXplLlxuXG5UaGUgcmVhc29uaW5nIGlzIHNvbGlkLCB3ZSBuZWVkIHRvIGZ1enogdGhlc2UgdG8gbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBtZW1vcnkgbGVha3Mgb3IgcmVmZXJlbmNlIGNvdW50aW5nIGVycm9ycyBoYXBwZW5pbmcuIFRoaXMgaXMgcGFydGljdWxhcmx5IHJlbGV2YW50IGdpdmVuIHRoZSBjb21wbGV4IGludGVyYWN0aW9ucyB3aXRoaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBzdHJhdGVneSBpcyBkZWZpbml0ZWx5IHdvcnRod2hpbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1ODYsIk91dHB1dFRva2VucyI6MjEzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMjM6MjM6MDYuNzQzNDk4NDk1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM4MzU1MzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWRklPX1BDSV9aREVWX0tWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9zMzkwX3BjaV9haWZfZW5hYmxlXCIsXG4gICAgXCJrdm1fczM5MF9wY2lfYWlmX2Rpc2FibGVcIixcbiAgICBcImt2bV9zMzkwX3BjaV96cGNpX3JlZ19hZW5cIixcbiAgICBcImt2bV9zMzkwX3BjaV96cGNpX29wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgczM5MHggS1ZNIFBDSSBwYXNzdGhyb3VnaCBsb2dpYywgc3BlY2lmaWNhbGx5IG1lbW9yeSBhY2NvdW50aW5nIGFuZCBjbGVhbnVwIHBhdGhzIGR1cmluZyBBSUYgKEFkYXB0ZXIgSW50ZXJydXB0aW9uIEZhY2lsaXR5KSBlbmFibGUvZGlzYWJsZS4gVGhlc2UgYXJlIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyAoS1ZNX1MzOTBfWlBDSU9QX1JFR0FFTiBhbmQgS1ZNX1MzOTBfWlBDSU9QX0RFUkVHX0FFTikgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIG5vIG1lbW9yeSBsZWFrcyBvciByZWZlcmVuY2UgY291bnRpbmcgaXNzdWVzIG9jY3VyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZGSU9fUENJX1pERVZfS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3MzOTBfcGNpX2FpZl9lbmFibGVcIixcbiAgICBcImt2bV9zMzkwX3BjaV9haWZfZGlzYWJsZVwiLFxuICAgIFwia3ZtX3MzOTBfcGNpX3pwY2lfcmVnX2FlblwiLFxuICAgIFwia3ZtX3MzOTBfcGNpX3pwY2lfb3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBzMzkweCBLVk0gUENJIHBhc3N0aHJvdWdoIGxvZ2ljLCBzcGVjaWZpY2FsbHkgbWVtb3J5IGFjY291bnRpbmcgYW5kIGNsZWFudXAgcGF0aHMgZHVyaW5nIEFJRiAoQWRhcHRlciBJbnRlcnJ1cHRpb24gRmFjaWxpdHkpIGVuYWJsZS9kaXNhYmxlLiBUaGVzZSBhcmUgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIChLVk1fUzM5MF9aUENJT1BfUkVHQUVOIGFuZCBLVk1fUzM5MF9aUENJT1BfREVSRUdfQUVOKSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgbm8gbWVtb3J5IGxlYWtzIG9yIHJlZmVyZW5jZSBjb3VudGluZyBpc3N1ZXMgb2NjdXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6bzws[1] Phase: Succeeded StartedAt: 2026-07-16 23:23:19 +0000 UTC FinishedAt: 2026-07-16 23:23:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6bzws[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-16 23:23:19 +0000 UTC FinishedAt: 2026-07-16 23:23:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6bzws[2] Phase: Succeeded StartedAt: 2026-07-16 23:23:19 +0000 UTC FinishedAt: 2026-07-17 00:50:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-16 23:23:19 +0000 UTC FinishedAt: 2026-07-17 00:50:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","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-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-16 23:23:19 +0000 UTC FinishedAt: 2026-07-16 23:23:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-16 23:23:19 +0000 UTC FinishedAt: 2026-07-16 23:23:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"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-workflow6bzws/series-workflow6bzws-convert-artifact-3824822234/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-16 23:23:29 +0000 UTC FinishedAt: 2026-07-17 00:05:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-16 23:23:29 +0000 UTC FinishedAt: 2026-07-17 00:05: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:*2cf675a0-2db1-4895-ac8d-016ae465a091,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-workflow6bzws/series-workflow6bzws-convert-artifact-3824822234/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": "abcecaa8-26d8-4a6a-a4d0-79aabea4d082", "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-workflow6bzws/series-workflow6bzws-build-action-2166905992/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-16 23:23:29 +0000 UTC FinishedAt: 2026-07-17 00:05: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:*2cf675a0-2db1-4895-ac8d-016ae465a091,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-workflow6bzws/series-workflow6bzws-convert-artifact-3824822234/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": "abcecaa8-26d8-4a6a-a4d0-79aabea4d082", "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-workflow6bzws/series-workflow6bzws-build-action-2166905992/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-17 00:05:34 +0000 UTC FinishedAt: 2026-07-17 00:05:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-17 00:05:34 +0000 UTC FinishedAt: 2026-07-17 00:05:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-17 00:05:34 +0000 UTC FinishedAt: 2026-07-17 00:05:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-17 00:05:34 +0000 UTC FinishedAt: 2026-07-17 00:05:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","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-workflow6bzws/series-workflow6bzws-convert-artifact-1422732085/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-17 00:05:44 +0000 UTC FinishedAt: 2026-07-17 00:07:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-17 00:05:44 +0000 UTC FinishedAt: 2026-07-17 00:07:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*abcecaa8-26d8-4a6a-a4d0-79aabea4d082,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-workflow6bzws/series-workflow6bzws-build-action-2166905992/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-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-17 00:07:48 +0000 UTC FinishedAt: 2026-07-17 00:07:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-17 00:07:48 +0000 UTC FinishedAt: 2026-07-17 00:07:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-17 00:07:48 +0000 UTC FinishedAt: 2026-07-17 00:44:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-17 00:07:48 +0000 UTC FinishedAt: 2026-07-17 00:44:31 +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:*2cf675a0-2db1-4895-ac8d-016ae465a091,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-workflow6bzws/series-workflow6bzws-convert-artifact-1422732085/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": "08d5b71a-2db5-43b9-9dba-c0b385bccb19", "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-workflow6bzws/series-workflow6bzws-build-action-3914947649/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-17 00:07:48 +0000 UTC FinishedAt: 2026-07-17 00:44: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:*2cf675a0-2db1-4895-ac8d-016ae465a091,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-workflow6bzws/series-workflow6bzws-convert-artifact-1422732085/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": "08d5b71a-2db5-43b9-9dba-c0b385bccb19", "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-workflow6bzws/series-workflow6bzws-build-action-3914947649/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-17 00:44:31 +0000 UTC FinishedAt: 2026-07-17 00:44:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-17 00:44:31 +0000 UTC FinishedAt: 2026-07-17 00:44:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-17 00:44:31 +0000 UTC FinishedAt: 2026-07-17 00:46:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-17 00:44:31 +0000 UTC FinishedAt: 2026-07-17 00:46:47 +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:*08d5b71a-2db5-43b9-9dba-c0b385bccb19,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-workflow6bzws/series-workflow6bzws-build-action-3914947649/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-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-17 00:46:57 +0000 UTC FinishedAt: 2026-07-17 00:50:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-17 00:46:57 +0000 UTC FinishedAt: 2026-07-17 00:50:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"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:*abcecaa8-26d8-4a6a-a4d0-79aabea4d082,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*08d5b71a-2db5-43b9-9dba-c0b385bccb19,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-workflow6bzws/series-workflow6bzws-build-action-2166905992/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-workflow6bzws/series-workflow6bzws-build-action-3914947649/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-17 00:46:57 +0000 UTC FinishedAt: 2026-07-17 00:47:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-17 00:46:57 +0000 UTC FinishedAt: 2026-07-17 00:47:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"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-workflow6bzws/series-workflow6bzws-convert-artifact-3307872794/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-17 00:46:57 +0000 UTC FinishedAt: 2026-07-17 00:46:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-17 00:46:57 +0000 UTC FinishedAt: 2026-07-17 00:46:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-17 00:46:57 +0000 UTC FinishedAt: 2026-07-17 00:46:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-17 00:47:21 +0000 UTC FinishedAt: 2026-07-17 00:50:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6bzws[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_s390_pci_aif_enable","kvm_s390_pci_aif_disable","kvm_s390_pci_zpci_reg_aen","kvm_s390_pci_zpci_op"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"25f744ffa0c8e799e06250ce2e618367b166b0d4","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO_PCI_ZDEV_KVM"],"series_id":"ffa2b561-c1df-4197-851e-64b3d0958b2d","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-17 00:47:21 +0000 UTC FinishedAt: 2026-07-17 00:50:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*abcecaa8-26d8-4a6a-a4d0-79aabea4d082,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*08d5b71a-2db5-43b9-9dba-c0b385bccb19,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-workflow6bzws/series-workflow6bzws-build-action-2166905992/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-workflow6bzws/series-workflow6bzws-build-action-3914947649/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-workflow6bzws/series-workflow6bzws-convert-artifact-3307872794/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,}