ZGlmZiAtLWdpdCBhL2NvcmUvZnhnZS9meF9kaWIuaCBiL2NvcmUvZnhnZS9meF9kaWIuaAppbmRleCBmNjFkMWYyLi5jMjkyZTk5IDEwMDY0NAotLS0gYS9jb3JlL2Z4Z2UvZnhfZGliLmgKKysrIGIvY29yZS9meGdlL2Z4X2RpYi5oCkBAIC05Niw2ICs5NiwxMCBAQAogICByZXR1cm4gKGJnciA+PiAxNikgJiAweGZmOwogfQogCitjb25zdGV4cHIgdW5zaWduZWQgaW50IEZYU1lTX0dldFVuc2lnbmVkQWxwaGEoZmxvYXQgYWxwaGEpIHsKKyAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oYWxwaGEgKiAyNTUuZiArIDAuNWYpOworfQorCiAjZGVmaW5lIEZYU1lTX0dldENWYWx1ZShjbXlrKSAoKHVpbnQ4X3QpKChjbXlrKSA+PiAyNCkgJiAweGZmKQogI2RlZmluZSBGWFNZU19HZXRNVmFsdWUoY215aykgKCh1aW50OF90KSgoY215aykgPj4gMTYpICYgMHhmZikKICNkZWZpbmUgRlhTWVNfR2V0WVZhbHVlKGNteWspICgodWludDhfdCkoKGNteWspID4+IDgpICYgMHhmZikKZGlmZiAtLWdpdCBhL2ZwZGZzZGsvZnBkZl9lZGl0cGFnZS5jcHAgYi9mcGRmc2RrL2ZwZGZfZWRpdHBhZ2UuY3BwCmluZGV4IDgwMmNkOTAuLjA5MTdiNjQgMTAwNjQ0Ci0tLSBhL2ZwZGZzZGsvZnBkZl9lZGl0cGFnZS5jcHAKKysrIGIvZnBkZnNkay9mcGRmX2VkaXRwYWdlLmNwcApAQCAtMTM2LDEwICsxMzYsNiBAQAogICByZXR1cm4gcE1hcmtJdGVtICYmIHBQYWdlT2JqLT5tX0NvbnRlbnRNYXJrcy5Db250YWluc0l0ZW0ocE1hcmtJdGVtKTsKIH0KIAotdW5zaWduZWQgaW50IEdldFVuc2lnbmVkQWxwaGEoZmxvYXQgYWxwaGEpIHsKLSAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oYWxwaGEgKiAyNTUuZiArIDAuNWYpOwotfQotCiBDUERGX0Zvcm1PYmplY3QqIENQREZGb3JtT2JqZWN0RnJvbUZQREZQYWdlT2JqZWN0KEZQREZfUEFHRU9CSkVDVCBwYWdlX29iamVjdCkgewogICBhdXRvKiBwUGFnZU9iaiA9IENQREZQYWdlT2JqZWN0RnJvbUZQREZQYWdlT2JqZWN0KHBhZ2Vfb2JqZWN0KTsKICAgcmV0dXJuIHBQYWdlT2JqID8gcFBhZ2VPYmotPkFzRm9ybSgpIDogbnVsbHB0cjsKQEAgLTcxMSw3ICs3MDcsNyBAQAogICAqUiA9IEZYU1lTX0dldFJWYWx1ZShmaWxsQ29sb3IpOwogICAqRyA9IEZYU1lTX0dldEdWYWx1ZShmaWxsQ29sb3IpOwogICAqQiA9IEZYU1lTX0dldEJWYWx1ZShmaWxsQ29sb3IpOwotICAqQSA9IEdldFVuc2lnbmVkQWxwaGEocFBhZ2VPYmotPm1fR2VuZXJhbFN0YXRlLkdldEZpbGxBbHBoYSgpKTsKKyAgKkEgPSBGWFNZU19HZXRVbnNpZ25lZEFscGhhKHBQYWdlT2JqLT5tX0dlbmVyYWxTdGF0ZS5HZXRGaWxsQWxwaGEoKSk7CiAgIHJldHVybiB0cnVlOwogfQogCkBAIC03NjUsNyArNzYxLDcgQEAKICAgKlIgPSBGWFNZU19HZXRSVmFsdWUoc3Ryb2tlQ29sb3IpOwogICAqRyA9IEZYU1lTX0dldEdWYWx1ZShzdHJva2VDb2xvcik7CiAgICpCID0gRlhTWVNfR2V0QlZhbHVlKHN0cm9rZUNvbG9yKTsKLSAgKkEgPSBHZXRVbnNpZ25lZEFscGhhKHBQYWdlT2JqLT5tX0dlbmVyYWxTdGF0ZS5HZXRTdHJva2VBbHBoYSgpKTsKKyAgKkEgPSBGWFNZU19HZXRVbnNpZ25lZEFscGhhKHBQYWdlT2JqLT5tX0dlbmVyYWxTdGF0ZS5HZXRTdHJva2VBbHBoYSgpKTsKICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL2ZwZGZzZGsvZnBkZl90ZXh0LmNwcCBiL2ZwZGZzZGsvZnBkZl90ZXh0LmNwcAppbmRleCA0ZDI5ZDYxLi5lMjA0NDY1IDEwMDY0NAotLS0gYS9mcGRmc2RrL2ZwZGZfdGV4dC5jcHAKKysrIGIvZnBkZnNkay9mcGRmX3RleHQuY3BwCkBAIC0xNDQsNiArMTQ0LDU3IEBACiAgICAgICBjaGFyaW5mby5tX3BUZXh0T2JqLT5HZXRUZXh0UmVuZGVyTW9kZSgpKTsKIH0KIAorRlBERl9FWFBPUlQgRlBERl9CT09MIEZQREZfQ0FMTENPTlYKK0ZQREZUZXh0X0dldEZpbGxDb2xvcihGUERGX1RFWFRQQUdFIHRleHRfcGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50KiBSLAorICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogRywKKyAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQqIEIsCisgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50KiBBKSB7CisgIENQREZfVGV4dFBhZ2UqIHRleHRwYWdlID0gR2V0VGV4dFBhZ2VGb3JWYWxpZEluZGV4KHRleHRfcGFnZSwgaW5kZXgpOworICBpZiAoIXRleHRwYWdlIHx8ICFSIHx8ICFHIHx8ICFCIHx8ICFBKQorICAgIHJldHVybiBmYWxzZTsKKworICBGUERGX0NIQVJfSU5GTyBjaGFyaW5mbzsKKyAgdGV4dHBhZ2UtPkdldENoYXJJbmZvKGluZGV4LCAmY2hhcmluZm8pOworICBpZiAoIWNoYXJpbmZvLm1fcFRleHRPYmopCisgICAgcmV0dXJuIGZhbHNlOworCisgIEZYX0NPTE9SUkVGIGZpbGxfY29sb3IgPSBjaGFyaW5mby5tX3BUZXh0T2JqLT5tX0NvbG9yU3RhdGUuR2V0RmlsbENvbG9yUmVmKCk7CisgICpSID0gRlhTWVNfR2V0UlZhbHVlKGZpbGxfY29sb3IpOworICAqRyA9IEZYU1lTX0dldEdWYWx1ZShmaWxsX2NvbG9yKTsKKyAgKkIgPSBGWFNZU19HZXRCVmFsdWUoZmlsbF9jb2xvcik7CisgICpBID0gRlhTWVNfR2V0VW5zaWduZWRBbHBoYSgKKyAgICAgIGNoYXJpbmZvLm1fcFRleHRPYmotPm1fR2VuZXJhbFN0YXRlLkdldEZpbGxBbHBoYSgpKTsKKyAgcmV0dXJuIHRydWU7Cit9CisKK0ZQREZfRVhQT1JUIEZQREZfQk9PTCBGUERGX0NBTExDT05WCitGUERGVGV4dF9HZXRTdHJva2VDb2xvcihGUERGX1RFWFRQQUdFIHRleHRfcGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogUiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogRywKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogQiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogQSkgeworICBDUERGX1RleHRQYWdlKiB0ZXh0cGFnZSA9IEdldFRleHRQYWdlRm9yVmFsaWRJbmRleCh0ZXh0X3BhZ2UsIGluZGV4KTsKKyAgaWYgKCF0ZXh0cGFnZSB8fCAhUiB8fCAhRyB8fCAhQiB8fCAhQSkKKyAgICByZXR1cm4gZmFsc2U7CisKKyAgRlBERl9DSEFSX0lORk8gY2hhcmluZm87CisgIHRleHRwYWdlLT5HZXRDaGFySW5mbyhpbmRleCwgJmNoYXJpbmZvKTsKKyAgaWYgKCFjaGFyaW5mby5tX3BUZXh0T2JqKQorICAgIHJldHVybiBmYWxzZTsKKworICBGWF9DT0xPUlJFRiBzdHJva2VfY29sb3IgPQorICAgICAgY2hhcmluZm8ubV9wVGV4dE9iai0+bV9Db2xvclN0YXRlLkdldFN0cm9rZUNvbG9yUmVmKCk7CisgICpSID0gRlhTWVNfR2V0UlZhbHVlKHN0cm9rZV9jb2xvcik7CisgICpHID0gRlhTWVNfR2V0R1ZhbHVlKHN0cm9rZV9jb2xvcik7CisgICpCID0gRlhTWVNfR2V0QlZhbHVlKHN0cm9rZV9jb2xvcik7CisgICpBID0gRlhTWVNfR2V0VW5zaWduZWRBbHBoYSgKKyAgICAgIGNoYXJpbmZvLm1fcFRleHRPYmotPm1fR2VuZXJhbFN0YXRlLkdldFN0cm9rZUFscGhhKCkpOworICByZXR1cm4gdHJ1ZTsKK30KKwogRlBERl9FWFBPUlQgZG91YmxlIEZQREZfQ0FMTENPTlYgRlBERlRleHRfR2V0Q2hhckFuZ2xlKEZQREZfVEVYVFBBR0UgdGV4dF9wYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmRleCkgewogICBDUERGX1RleHRQYWdlKiB0ZXh0cGFnZSA9IEdldFRleHRQYWdlRm9yVmFsaWRJbmRleCh0ZXh0X3BhZ2UsIGluZGV4KTsKZGlmZiAtLWdpdCBhL2ZwZGZzZGsvZnBkZl90ZXh0X2VtYmVkZGVydGVzdC5jcHAgYi9mcGRmc2RrL2ZwZGZfdGV4dF9lbWJlZGRlcnRlc3QuY3BwCmluZGV4IDQwZDBjOTcuLmU0ZDExZWQgMTAwNjQ0Ci0tLSBhL2ZwZGZzZGsvZnBkZl90ZXh0X2VtYmVkZGVydGVzdC5jcHAKKysrIGIvZnBkZnNkay9mcGRmX3RleHRfZW1iZWRkZXJ0ZXN0LmNwcApAQCAtMTI5NywzICsxMjk3LDY5IEBACiAgIEZQREZUZXh0X0Nsb3NlUGFnZSh0ZXh0X3BhZ2UpOwogICBVbmxvYWRQYWdlKHBhZ2UpOwogfQorCitURVNUX0YoRlBERlRleHRFbWJlZGRlclRlc3QsIEdldEZpbGxDb2xvcikgeworICBBU1NFUlRfVFJVRShPcGVuRG9jdW1lbnQoInRleHRfY29sb3IucGRmIikpOworICBGUERGX1BBR0UgcGFnZSA9IExvYWRQYWdlKDApOworICBBU1NFUlRfVFJVRShwYWdlKTsKKworICBGUERGX1RFWFRQQUdFIHRleHRfcGFnZSA9IEZQREZUZXh0X0xvYWRQYWdlKHBhZ2UpOworICBBU1NFUlRfVFJVRSh0ZXh0X3BhZ2UpOworCisgIEFTU0VSVF9FUSgxLCBGUERGVGV4dF9Db3VudENoYXJzKHRleHRfcGFnZSkpOworCisgIEFTU0VSVF9GQUxTRSgKKyAgICAgIEZQREZUZXh0X0dldEZpbGxDb2xvcihudWxscHRyLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKSk7CisgIEFTU0VSVF9GQUxTRSgKKyAgICAgIEZQREZUZXh0X0dldEZpbGxDb2xvcih0ZXh0X3BhZ2UsIC0xLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKSk7CisgIEFTU0VSVF9GQUxTRShGUERGVGV4dF9HZXRGaWxsQ29sb3IodGV4dF9wYWdlLCAzMTQsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cikpOworICBBU1NFUlRfRkFMU0UoCisgICAgICBGUERGVGV4dF9HZXRGaWxsQ29sb3IodGV4dF9wYWdlLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKSk7CisKKyAgdW5zaWduZWQgaW50IHI7CisgIHVuc2lnbmVkIGludCBnOworICB1bnNpZ25lZCBpbnQgYjsKKyAgdW5zaWduZWQgaW50IGE7CisgIEFTU0VSVF9UUlVFKEZQREZUZXh0X0dldEZpbGxDb2xvcih0ZXh0X3BhZ2UsIDAsICZyLCAmZywgJmIsICZhKSk7CisgIEFTU0VSVF9FUSgweGZmdSwgcik7CisgIEFTU0VSVF9FUSgwdSwgZyk7CisgIEFTU0VSVF9FUSgwdSwgYik7CisgIEFTU0VSVF9FUSgweGZmdSwgYSk7CisKKyAgRlBERlRleHRfQ2xvc2VQYWdlKHRleHRfcGFnZSk7CisgIFVubG9hZFBhZ2UocGFnZSk7Cit9CisKK1RFU1RfRihGUERGVGV4dEVtYmVkZGVyVGVzdCwgR2V0U3Ryb2tlQ29sb3IpIHsKKyAgQVNTRVJUX1RSVUUoT3BlbkRvY3VtZW50KCJ0ZXh0X2NvbG9yLnBkZiIpKTsKKyAgRlBERl9QQUdFIHBhZ2UgPSBMb2FkUGFnZSgwKTsKKyAgQVNTRVJUX1RSVUUocGFnZSk7CisKKyAgRlBERl9URVhUUEFHRSB0ZXh0X3BhZ2UgPSBGUERGVGV4dF9Mb2FkUGFnZShwYWdlKTsKKyAgQVNTRVJUX1RSVUUodGV4dF9wYWdlKTsKKworICBBU1NFUlRfRVEoMSwgRlBERlRleHRfQ291bnRDaGFycyh0ZXh0X3BhZ2UpKTsKKworICBBU1NFUlRfRkFMU0UoCisgICAgICBGUERGVGV4dF9HZXRTdHJva2VDb2xvcihudWxscHRyLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKSk7CisgIEFTU0VSVF9GQUxTRShGUERGVGV4dF9HZXRTdHJva2VDb2xvcih0ZXh0X3BhZ2UsIC0xLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cikpOworICBBU1NFUlRfRkFMU0UoRlBERlRleHRfR2V0U3Ryb2tlQ29sb3IodGV4dF9wYWdlLCAzMTQsIG51bGxwdHIsIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCBudWxscHRyKSk7CisgIEFTU0VSVF9GQUxTRShGUERGVGV4dF9HZXRTdHJva2VDb2xvcih0ZXh0X3BhZ2UsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKSk7CisKKyAgdW5zaWduZWQgaW50IHI7CisgIHVuc2lnbmVkIGludCBnOworICB1bnNpZ25lZCBpbnQgYjsKKyAgdW5zaWduZWQgaW50IGE7CisgIEFTU0VSVF9UUlVFKEZQREZUZXh0X0dldFN0cm9rZUNvbG9yKHRleHRfcGFnZSwgMCwgJnIsICZnLCAmYiwgJmEpKTsKKyAgQVNTRVJUX0VRKDB1LCByKTsKKyAgQVNTRVJUX0VRKDB4ZmZ1LCBnKTsKKyAgQVNTRVJUX0VRKDB1LCBiKTsKKyAgQVNTRVJUX0VRKDB4ZmZ1LCBhKTsKKworICBGUERGVGV4dF9DbG9zZVBhZ2UodGV4dF9wYWdlKTsKKyAgVW5sb2FkUGFnZShwYWdlKTsKK30KZGlmZiAtLWdpdCBhL2ZwZGZzZGsvZnBkZl92aWV3X2NfYXBpX3Rlc3QuYyBiL2ZwZGZzZGsvZnBkZl92aWV3X2NfYXBpX3Rlc3QuYwppbmRleCAxZTAwMzQ4Li4wYTdiYWY3IDEwMDY0NAotLS0gYS9mcGRmc2RrL2ZwZGZfdmlld19jX2FwaV90ZXN0LmMKKysrIGIvZnBkZnNkay9mcGRmX3ZpZXdfY19hcGlfdGVzdC5jCkBAIC0zMzYsMTIgKzMzNiwxNCBAQAogICAgIENISyhGUERGVGV4dF9HZXRDaGFyQm94KTsKICAgICBDSEsoRlBERlRleHRfR2V0Q2hhckluZGV4QXRQb3MpOwogICAgIENISyhGUERGVGV4dF9HZXRDaGFyT3JpZ2luKTsKKyAgICBDSEsoRlBERlRleHRfR2V0RmlsbENvbG9yKTsKICAgICBDSEsoRlBERlRleHRfR2V0Rm9udEluZm8pOwogICAgIENISyhGUERGVGV4dF9HZXRGb250U2l6ZSk7CiAgICAgQ0hLKEZQREZUZXh0X0dldEZvbnRXZWlnaHQpOwogICAgIENISyhGUERGVGV4dF9HZXRSZWN0KTsKICAgICBDSEsoRlBERlRleHRfR2V0U2NoQ291bnQpOwogICAgIENISyhGUERGVGV4dF9HZXRTY2hSZXN1bHRJbmRleCk7CisgICAgQ0hLKEZQREZUZXh0X0dldFN0cm9rZUNvbG9yKTsKICAgICBDSEsoRlBERlRleHRfR2V0VGV4dCk7CiAgICAgQ0hLKEZQREZUZXh0X0dldFRleHRSZW5kZXJNb2RlKTsKICAgICBDSEsoRlBERlRleHRfR2V0VW5pY29kZSk7CmRpZmYgLS1naXQgYS9wdWJsaWMvZnBkZl90ZXh0LmggYi9wdWJsaWMvZnBkZl90ZXh0LmgKaW5kZXggYzdlOWQ3MS4uMDQ2NjRiZSAxMDA2NDQKLS0tIGEvcHVibGljL2ZwZGZfdGV4dC5oCisrKyBiL3B1YmxpYy9mcGRmX3RleHQuaApAQCAtMTQyLDYgKzE0Miw2MCBAQAogRlBERlRleHRfR2V0VGV4dFJlbmRlck1vZGUoRlBERl9URVhUUEFHRSB0ZXh0X3BhZ2UsIGludCBpbmRleCk7CiAKIC8vIEV4cGVyaW1lbnRhbCBBUEkuCisvLyBGdW5jdGlvbjogRlBERlRleHRfR2V0RmlsbENvbG9yCisvLyAgICAgICAgICBHZXQgdGhlIGZpbGwgY29sb3Igb2YgYSBwYXJ0aWN1bGFyIGNoYXJhY3Rlci4KKy8vIFBhcmFtZXRlcnM6CisvLyAgICAgICAgICB0ZXh0X3BhZ2UgICAgICAtICAgSGFuZGxlIHRvIGEgdGV4dCBwYWdlIGluZm9ybWF0aW9uIHN0cnVjdHVyZS4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm5lZCBieSBGUERGVGV4dF9Mb2FkUGFnZSBmdW5jdGlvbi4KKy8vICAgICAgICAgIGluZGV4ICAgICAgICAgIC0gICBaZXJvLWJhc2VkIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIuCisvLyAgICAgICAgICBSICAgICAgICAgICAgICAtICAgUG9pbnRlciB0byBhbiB1bnNpZ25lZCBpbnQgbnVtYmVyIHJlY2VpdmluZyB0aGUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWQgdmFsdWUgb2YgdGhlIGZpbGwgY29sb3IuCisvLyAgICAgICAgICBHICAgICAgICAgICAgICAtICAgUG9pbnRlciB0byBhbiB1bnNpZ25lZCBpbnQgbnVtYmVyIHJlY2VpdmluZyB0aGUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmVlbiB2YWx1ZSBvZiB0aGUgZmlsbCBjb2xvci4KKy8vICAgICAgICAgIEIgICAgICAgICAgICAgIC0gICBQb2ludGVyIHRvIGFuIHVuc2lnbmVkIGludCBudW1iZXIgcmVjZWl2aW5nIHRoZQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsdWUgdmFsdWUgb2YgdGhlIGZpbGwgY29sb3IuCisvLyAgICAgICAgICBBICAgICAgICAgICAgICAtICAgUG9pbnRlciB0byBhbiB1bnNpZ25lZCBpbnQgbnVtYmVyIHJlY2VpdmluZyB0aGUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYSB2YWx1ZSBvZiB0aGUgZmlsbCBjb2xvci4KKy8vIFJldHVybiB2YWx1ZToKKy8vICAgICAgICAgIFdoZXRoZXIgdGhlIGNhbGwgc3VjY2VlZGVkLiBJZiBmYWxzZSwgfFJ8LCB8R3wsIHxCfCBhbmQgfEF8IGFyZQorLy8gICAgICAgICAgdW5jaGFuZ2VkLgorLy8KK0ZQREZfRVhQT1JUIEZQREZfQk9PTCBGUERGX0NBTExDT05WCitGUERGVGV4dF9HZXRGaWxsQ29sb3IoRlBERl9URVhUUEFHRSB0ZXh0X3BhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgaW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogUiwKKyAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQqIEcsCisgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50KiBCLAorICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogQSk7CisKKy8vIEV4cGVyaW1lbnRhbCBBUEkuCisvLyBGdW5jdGlvbjogRlBERlRleHRfR2V0U3Ryb2tlQ29sb3IKKy8vICAgICAgICAgIEdldCB0aGUgc3Ryb2tlIGNvbG9yIG9mIGEgcGFydGljdWxhciBjaGFyYWN0ZXIuCisvLyBQYXJhbWV0ZXJzOgorLy8gICAgICAgICAgdGV4dF9wYWdlICAgICAgLSAgIEhhbmRsZSB0byBhIHRleHQgcGFnZSBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmUuCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuZWQgYnkgRlBERlRleHRfTG9hZFBhZ2UgZnVuY3Rpb24uCisvLyAgICAgICAgICBpbmRleCAgICAgICAgICAtICAgWmVyby1iYXNlZCBpbmRleCBvZiB0aGUgY2hhcmFjdGVyLgorLy8gICAgICAgICAgUiAgICAgICAgICAgICAgLSAgIFBvaW50ZXIgdG8gYW4gdW5zaWduZWQgaW50IG51bWJlciByZWNlaXZpbmcgdGhlCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkIHZhbHVlIG9mIHRoZSBzdHJva2UgY29sb3IuCisvLyAgICAgICAgICBHICAgICAgICAgICAgICAtICAgUG9pbnRlciB0byBhbiB1bnNpZ25lZCBpbnQgbnVtYmVyIHJlY2VpdmluZyB0aGUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmVlbiB2YWx1ZSBvZiB0aGUgc3Ryb2tlIGNvbG9yLgorLy8gICAgICAgICAgQiAgICAgICAgICAgICAgLSAgIFBvaW50ZXIgdG8gYW4gdW5zaWduZWQgaW50IG51bWJlciByZWNlaXZpbmcgdGhlCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmx1ZSB2YWx1ZSBvZiB0aGUgc3Ryb2tlIGNvbG9yLgorLy8gICAgICAgICAgQSAgICAgICAgICAgICAgLSAgIFBvaW50ZXIgdG8gYW4gdW5zaWduZWQgaW50IG51bWJlciByZWNlaXZpbmcgdGhlCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGEgdmFsdWUgb2YgdGhlIHN0cm9rZSBjb2xvci4KKy8vIFJldHVybiB2YWx1ZToKKy8vICAgICAgICAgIFdoZXRoZXIgdGhlIGNhbGwgc3VjY2VlZGVkLiBJZiBmYWxzZSwgfFJ8LCB8R3wsIHxCfCBhbmQgfEF8IGFyZQorLy8gICAgICAgICAgdW5jaGFuZ2VkLgorLy8KK0ZQREZfRVhQT1JUIEZQREZfQk9PTCBGUERGX0NBTExDT05WCitGUERGVGV4dF9HZXRTdHJva2VDb2xvcihGUERGX1RFWFRQQUdFIHRleHRfcGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogUiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogRywKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogQiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogQSk7CisKKy8vIEV4cGVyaW1lbnRhbCBBUEkuCiAvLyBGdW5jdGlvbjogRlBERlRleHRfR2V0Q2hhckFuZ2xlCiAvLyAgICAgICAgICBHZXQgY2hhcmFjdGVyIHJvdGF0aW9uIGFuZ2xlLgogLy8gUGFyYW1ldGVyczoKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvcmVzb3VyY2VzL3RleHRfY29sb3IuaW4gYi90ZXN0aW5nL3Jlc291cmNlcy90ZXh0X2NvbG9yLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlNzZhMzkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL3Jlc291cmNlcy90ZXh0X2NvbG9yLmluCkBAIC0wLDAgKzEsNDggQEAKK3t7aGVhZGVyfX0KK3t7b2JqZWN0IDEgMH19IDw8CisgIC9UeXBlIC9DYXRhbG9nCisgIC9QYWdlcyAyIDAgUgorPj4KK2VuZG9iagore3tvYmplY3QgMiAwfX0gPDwKKyAgL1R5cGUgL1BhZ2VzCisgIC9NZWRpYUJveCBbIDAgMCAyMDAgMjAwIF0KKyAgL0NvdW50IDEKKyAgL0tpZHMgWyAzIDAgUiBdCis+PgorZW5kb2JqCit7e29iamVjdCAzIDB9fSA8PAorICAvVHlwZSAvUGFnZQorICAvUGFyZW50IDIgMCBSCisgIC9SZXNvdXJjZXMgPDwKKyAgICAvRm9udCA8PAorICAgICAgL0YxIDQgMCBSCisgICAgPj4KKyAgPj4KKyAgL0NvbnRlbnRzIDUgMCBSCis+PgorZW5kb2JqCit7e29iamVjdCA0IDB9fSA8PAorICAvVHlwZSAvRm9udAorICAvU3VidHlwZSAvVHlwZTEKKyAgL0Jhc2VGb250IC9UaW1lcy1Sb21hbgorPj4KK2VuZG9iagore3tvYmplY3QgNSAwfX0gPDwKKyAge3tzdHJlYW1sZW59fQorPj4KK3N0cmVhbQorQlQKKzEwIDE2MCBUZAorL0YxIDM2IFRmCiswIDEgMCBSRworMSAwIDAgcmcKKzIgVHIKKygwKSBUagorRVQKK2VuZHN0cmVhbQorZW5kb2JqCit7e3hyZWZ9fQore3t0cmFpbGVyfX0KK3t7c3RhcnR4cmVmfX0KKyUlRU9GCmRpZmYgLS1naXQgYS90ZXN0aW5nL3Jlc291cmNlcy90ZXh0X2NvbG9yLnBkZiBiL3Rlc3RpbmcvcmVzb3VyY2VzL3RleHRfY29sb3IucGRmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkYmNkZDEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL3Jlc291cmNlcy90ZXh0X2NvbG9yLnBkZgpAQCAtMCwwICsxLDYwIEBACislUERGLTEuNworJaDypPQKKzEgMCBvYmogPDwKKyAgL1R5cGUgL0NhdGFsb2cKKyAgL1BhZ2VzIDIgMCBSCis+PgorZW5kb2JqCisyIDAgb2JqIDw8CisgIC9UeXBlIC9QYWdlcworICAvTWVkaWFCb3ggWyAwIDAgMjAwIDIwMCBdCisgIC9Db3VudCAxCisgIC9LaWRzIFsgMyAwIFIgXQorPj4KK2VuZG9iagorMyAwIG9iaiA8PAorICAvVHlwZSAvUGFnZQorICAvUGFyZW50IDIgMCBSCisgIC9SZXNvdXJjZXMgPDwKKyAgICAvRm9udCA8PAorICAgICAgL0YxIDQgMCBSCisgICAgPj4KKyAgPj4KKyAgL0NvbnRlbnRzIDUgMCBSCis+PgorZW5kb2JqCis0IDAgb2JqIDw8CisgIC9UeXBlIC9Gb250CisgIC9TdWJ0eXBlIC9UeXBlMQorICAvQmFzZUZvbnQgL1RpbWVzLVJvbWFuCis+PgorZW5kb2JqCis1IDAgb2JqIDw8CisgIC9MZW5ndGggNTYKKz4+CitzdHJlYW0KK0JUCisxMCAxNjAgVGQKKy9GMSAzNiBUZgorMCAxIDAgUkcKKzEgMCAwIHJnCisyIFRyCisoMCkgVGoKK0VUCitlbmRzdHJlYW0KK2VuZG9iagoreHJlZgorMCA2CiswMDAwMDAwMDAwIDY1NTM1IGYgCiswMDAwMDAwMDE1IDAwMDAwIG4gCiswMDAwMDAwMDY4IDAwMDAwIG4gCiswMDAwMDAwMTYxIDAwMDAwIG4gCiswMDAwMDAwMjg3IDAwMDAwIG4gCiswMDAwMDAwMzY1IDAwMDAwIG4gCit0cmFpbGVyIDw8CisgIC9Sb290IDEgMCBSCisgIC9TaXplIDYKKz4+CitzdGFydHhyZWYKKzQ3MgorJSVFT0YK