ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvc2VxX2ZpbGUudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9zZXFfZmlsZS50eHQKaW5kZXggY2M2Y2RiOS4uN2ZiOGU2ZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9zZXFfZmlsZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9zZXFfZmlsZS50eHQKQEAgLTkyLDcgKzkyLDcgQEAKICJwYXN0IGVuZCBvZiBmaWxlIiBjb25kaXRpb24gYW5kIHJldHVybiBOVUxMIGlmIG5lZWQgYmUuCiAKIEZvciBtb3JlIGNvbXBsaWNhdGVkIGFwcGxpY2F0aW9ucywgdGhlIHByaXZhdGUgZmllbGQgb2YgdGhlIHNlcV9maWxlCi1zdHJ1Y3R1cmUgY2FuIGJlIHVzZWQuIFRoZXJlIGlzIGFsc28gYSBzcGVjaWFsIHZhbHVlIHdoY2ggY2FuIGJlIHJldHVybmVkCitzdHJ1Y3R1cmUgY2FuIGJlIHVzZWQuIFRoZXJlIGlzIGFsc28gYSBzcGVjaWFsIHZhbHVlIHdoaWNoIGNhbiBiZSByZXR1cm5lZAogYnkgdGhlIHN0YXJ0KCkgZnVuY3Rpb24gY2FsbGVkIFNFUV9TVEFSVF9UT0tFTjsgaXQgY2FuIGJlIHVzZWQgaWYgeW91IHdpc2gKIHRvIGluc3RydWN0IHlvdXIgc2hvdygpIGZ1bmN0aW9uIChkZXNjcmliZWQgYmVsb3cpIHRvIHByaW50IGEgaGVhZGVyIGF0IHRoZQogdG9wIG9mIHRoZSBvdXRwdXQuIFNFUV9TVEFSVF9UT0tFTiBzaG91bGQgb25seSBiZSB1c2VkIGlmIHRoZSBvZmZzZXQgaXMKQEAgLTE0Niw3ICsxNDYsNyBAQAogVGhpcyBzdHJ1Y3R1cmUgd2lsbCBiZSBuZWVkZWQgdG8gdGllIG91ciBpdGVyYXRvciB0byB0aGUgL3Byb2MgZmlsZSBpbgogYSBsaXR0bGUgYml0LgogCi1JdCdzIHdvcnRoIG5vdGluZyB0aGF0IHRoZSBpbnRlcmF0b3IgdmFsdWUgcmV0dXJuZWQgYnkgc3RhcnQoKSBhbmQKK0l0J3Mgd29ydGggbm90aW5nIHRoYXQgdGhlIGl0ZXJhdG9yIHZhbHVlIHJldHVybmVkIGJ5IHN0YXJ0KCkgYW5kCiBtYW5pcHVsYXRlZCBieSB0aGUgb3RoZXIgZnVuY3Rpb25zIGlzIGNvbnNpZGVyZWQgdG8gYmUgY29tcGxldGVseSBvcGFxdWUgYnkKIHRoZSBzZXFfZmlsZSBjb2RlLiBJdCBjYW4gdGh1cyBiZSBhbnl0aGluZyB0aGF0IGlzIHVzZWZ1bCBpbiBzdGVwcGluZwogdGhyb3VnaCB0aGUgZGF0YSB0byBiZSBvdXRwdXQuIENvdW50ZXJzIGNhbiBiZSB1c2VmdWwsIGJ1dCBpdCBjb3VsZCBhbHNvIGJlCkBAIC0yNjIsNyArMjYyLDcgQEAKIAogVGhlc2UgaGVscGVycyB3aWxsIGludGVycHJldCBwb3MgYXMgYSBwb3NpdGlvbiB3aXRoaW4gdGhlIGxpc3QgYW5kIGl0ZXJhdGUKIGFjY29yZGluZ2x5LiAgWW91ciBzdGFydCgpIGFuZCBuZXh0KCkgZnVuY3Rpb25zIG5lZWQgb25seSBpbnZva2UgdGhlCi1zZXFfbGlzdF8qIGhlbHBlcnMgd2l0aCBhIHBvaW50ZXIgdG8gdGhlIGFwcHJvcHJpYXRlIGxpc3RfaGVhZCBzdHJ1Y3R1cmUuICAKK3NlcV9saXN0XyogaGVscGVycyB3aXRoIGEgcG9pbnRlciB0byB0aGUgYXBwcm9wcmlhdGUgbGlzdF9oZWFkIHN0cnVjdHVyZS4KIAogCiBUaGUgZXh0cmEtc2ltcGxlIHZlcnNpb24KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9jYW4udHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2Nhbi50eHQKaW5kZXggZjFiMmRlMS4uNjQxZDJhZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2Nhbi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2Nhbi50eHQKQEAgLTI4MSwxMCArMjgxLDEwIEBACiAgICAgICAgICAgICBzYV9mYW1pbHlfdCBjYW5fZmFtaWx5OwogICAgICAgICAgICAgaW50ICAgICAgICAgY2FuX2lmaW5kZXg7CiAgICAgICAgICAgICB1bmlvbiB7Ci0gICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7IGNhbmlkX3QgcnhfaWQsIHR4X2lkOyB9IHRwMTY7Ci0gICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7IGNhbmlkX3QgcnhfaWQsIHR4X2lkOyB9IHRwMjA7Ci0gICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7IGNhbmlkX3QgcnhfaWQsIHR4X2lkOyB9IG1jbmV0OwotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyBjYW5pZF90IHJ4X2lkLCB0eF9pZDsgfSBpc290cDsKKyAgICAgICAgICAgICAgICAgICAgLyogdHJhbnNwb3J0IHByb3RvY29sIGNsYXNzIGFkZHJlc3MgaW5mbyAoZS5nLiBJU09UUCkgKi8KKyAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgY2FuaWRfdCByeF9pZCwgdHhfaWQ7IH0gdHA7CisKKyAgICAgICAgICAgICAgICAgICAgLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSBDQU4gcHJvdG9jb2xzIGFkZHJlc3MgaW5mb3JtYXRpb24gKi8KICAgICAgICAgICAgIH0gY2FuX2FkZHI7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92bS9odWdldGxicGFnZS50eHQgYi9Eb2N1bWVudGF0aW9uL3ZtL2h1Z2V0bGJwYWdlLnR4dAppbmRleCBmOTYyZDAxLi4zMTAyYjgxIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3ZtL2h1Z2V0bGJwYWdlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3ZtL2h1Z2V0bGJwYWdlLnR4dApAQCAtODgsMTAgKzg4LDkgQEAKIHRoZXNlIHN1cnBsdXMgaHVnZXBhZ2VzIGdvIG91dCBvZiB1c2UsIHRoZXkgYXJlIGZyZWVkIGJhY2sgdG8gdGhlIGJ1ZGR5CiBhbGxvY2F0b3IuCiAKLUNhdmVhdDogU2hyaW5raW5nIHRoZSBwb29sIHZpYSBucl9odWdlcGFnZXMgd2hpbGUgYSBzdXJwbHVzIGlzIGluIGVmZmVjdAotd2lsbCBhbGxvdyB0aGUgbnVtYmVyIG9mIHN1cnBsdXMgaHVnZSBwYWdlcyB0byBleGNlZWQgdGhlIG92ZXJjb21taXQKLXZhbHVlLCBhcyB0aGUgcG9vbCBodWdlcGFnZXMgKHdoaWNoIG11c3QgaGF2ZSBiZWVuIGluIHVzZSBmb3IgYSBzdXJwbHVzCi1odWdlcGFnZXMgdG8gYmUgYWxsb2NhdGVkKSB3aWxsIGJlY29tZSBzdXJwbHVzIGh1Z2VwYWdlcy4gIEFzIGxvbmcgYXMKK0NhdmVhdDogU2hyaW5raW5nIHRoZSBwb29sIHZpYSBucl9odWdlcGFnZXMgc3VjaCB0aGF0IGl0IGJlY29tZXMgbGVzcwordGhhbiB0aGUgbnVtYmVyIG9mIGh1Z2VwYWdlcyBpbiB1c2Ugd2lsbCBjb252ZXJ0IHRoZSBiYWxhbmNlIHRvIHN1cnBsdXMKK2h1Z2UgcGFnZXMgZXZlbiBpZiBpdCB3b3VsZCBleGNlZWQgdGhlIG92ZXJjb21taXQgdmFsdWUuICBBcyBsb25nIGFzCiB0aGlzIGNvbmRpdGlvbiBob2xkcywgaG93ZXZlciwgbm8gbW9yZSBzdXJwbHVzIGh1Z2UgcGFnZXMgd2lsbCBiZQogYWxsb3dlZCBvbiB0aGUgc3lzdGVtIHVudGlsIG9uZSBvZiB0aGUgdHdvIHN5c2N0bHMgYXJlIGluY3JlYXNlZAogc3VmZmljaWVudGx5LCBvciB0aGUgc3VycGx1cyBodWdlIHBhZ2VzIGdvIG91dCBvZiB1c2UgYW5kIGFyZSBmcmVlZC4KZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggOTBkY2JiYy4uZTQ2Nzc1OCAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKKysrIGIvTUFJTlRBSU5FUlMKQEAgLTIxMTYsNyArMjExNiw3IEBACiBMOglsaW51eC13aXJlbGVzc0B2Z2VyLmtlcm5lbC5vcmcKIEw6CWlwdzM5NDUtZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0CiBXOglodHRwOi8vaW50ZWxsaW51eHdpcmVsZXNzLm9yZwotVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9yY2hhdHJlL2l3bHdpZmktMi42LmdpdAorVDoJZ2l0IGtlcm5lbC5vcmc6L3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9pd2x3aWZpL2l3bHdpZmktMi42LmdpdAogUzoJU3VwcG9ydGVkCiAKIElPQzMgRVRIRVJORVQgRFJJVkVSCkBAIC0yMTk3LDcgKzIxOTcsNyBAQAogSVNETiBTVUJTWVNURU0KIFA6CUthcnN0ZW4gS2VpbAogTToJa2tlaWxAc3VzZS5kZQotTDoJaXNkbjRsaW51eEBsaXN0c2Vydi5pc2RuNGxpbnV4LmRlCitMOglpc2RuNGxpbnV4QGxpc3RzZXJ2LmlzZG40bGludXguZGUgKHN1YnNjcmliZXJzLW9ubHkpCiBXOglodHRwOi8vd3d3LmlzZG40bGludXguZGUKIFQ6CWdpdCBrZXJuZWwub3JnOi9wdWIvc2NtL2xpbnV4L2tlcm5lbC9ra2VpbC9pc2RuLTIuNi5naXQKIFM6CU1haW50YWluZWQKQEAgLTIyMDUsNyArMjIwNSw3IEBACiBJU0ROIFNVQlNZU1RFTSAoRWljb24gYWN0aXZlIGNhcmQgZHJpdmVyKQogUDoJQXJtaW4gU2NoaW5kbGVyCiBNOgltYWNAbWVsd2FyZS5kZQotTDoJaXNkbjRsaW51eEBsaXN0c2Vydi5pc2RuNGxpbnV4LmRlCitMOglpc2RuNGxpbnV4QGxpc3RzZXJ2LmlzZG40bGludXguZGUgKHN1YnNjcmliZXJzLW9ubHkpCiBXOglodHRwOi8vd3d3Lm1lbHdhcmUuZGUKIFM6CU1haW50YWluZWQKIApAQCAtMzI4MCw2ICszMjgwLDcgQEAKIEw6CXJ0MjQwMC1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKIFc6CWh0dHA6Ly9ydDJ4MDAuc2VyaWFsbW9ua2V5LmNvbS8KIFM6CU1haW50YWluZWQKK1Q6CWdpdCBrZXJuZWwub3JnOi9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvaXZkL3J0MngwMC5naXQKIEY6CWRyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC8KIAogUkFNRElTSyBSQU0gQkxPQ0sgREVWSUNFIERSSVZFUgpAQCAtMzM0Miw2ICszMzQzLDEzIEBACiBXOglodHRwOi8vd3d3Lm5hbWVzeXMuY29tCiBTOglTdXBwb3J0ZWQKIAorUkZLSUxMCitQOglJdm8gdmFuIERvb3JuCitNOglJdkRvb3JuQGdtYWlsLmNvbQorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJbmV0L3Jma2lsbAorCiBST0NLRVRQT1JUIERSSVZFUgogUDoJQ29tdHJvbCBDb3JwLgogVzoJaHR0cDovL3d3dy5jb210cm9sLmNvbQpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQppbmRleCAyMWM3NmY3Li4zOTUxNmJmIDEwMDY0NAotLS0gYS9NYWtlZmlsZQorKysgYi9NYWtlZmlsZQpAQCAtMSw3ICsxLDcgQEAKIFZFUlNJT04gPSAyCiBQQVRDSExFVkVMID0gNgogU1VCTEVWRUwgPSAyNQotRVhUUkFWRVJTSU9OID0gLXJjOQorRVhUUkFWRVJTSU9OID0KIE5BTUUgPSBGdW5reSBXZWFzZWwgaXMgSmlnZ3kgd2l0IGl0CiAKICMgKkRPQ1VNRU5UQVRJT04qCmRpZmYgLS1naXQgYS9hcmNoL2F2cjMyL0tjb25maWcgYi9hcmNoL2F2cjMyL0tjb25maWcKaW5kZXggYzc1ZDcwOC4uMjhlMGNhZiAxMDA2NDQKLS0tIGEvYXJjaC9hdnIzMi9LY29uZmlnCisrKyBiL2FyY2gvYXZyMzIvS2NvbmZpZwpAQCAtMTAsNyArMTAsNiBAQAogCSMgV2l0aCBFTUJFRERFRD1uLCB3ZSBnZXQgbG90cyBvZiBzdHVmZiBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkCiAJIyB0aGF0IHdlIHVzdWFsbHkgZG9uJ3QgbmVlZCBvbiBBVlIzMi4KIAlzZWxlY3QgRU1CRURERUQKLQlzZWxlY3QgSEFWRV9JREUKIAlzZWxlY3QgSEFWRV9PUFJPRklMRQogCXNlbGVjdCBIQVZFX0tQUk9CRVMKIAloZWxwCmRpZmYgLS1naXQgYS9hcmNoL2Zydi9rZXJuZWwvdHJhcHMuYyBiL2FyY2gvZnJ2L2tlcm5lbC90cmFwcy5jCmluZGV4IDJmN2U2NjguLjcwODljMjQgMTAwNjQ0Ci0tLSBhL2FyY2gvZnJ2L2tlcm5lbC90cmFwcy5jCisrKyBiL2FyY2gvZnJ2L2tlcm5lbC90cmFwcy5jCkBAIC03Myw3ICs3Myw3IEBACiAJCSAgICAgIGVwY3IwLCBlc3IwLCBlc2ZyMSk7CiAKIAlpbmZvLnNpX2Vycm5vCT0gMDsKLQlpbmZvLnNpX2FkZHIJPSAodm9pZCAqKSAoKGVwY3IwICYgRVBDUjBfUEMpID8gKGVwY3IwICYgRVBDUjBfUEMpIDogX19mcmFtZS0+cGMpOworCWluZm8uc2lfYWRkcgk9ICh2b2lkICopICgoZXBjcjAgJiBFUENSMF9WKSA/IChlcGNyMCAmIEVQQ1IwX1BDKSA6IF9fZnJhbWUtPnBjKTsKIAogCXN3aXRjaCAoX19mcmFtZS0+dGJyICYgVEJSX1RUKSB7CiAJY2FzZSBUQlJfVFRfSUxMRUdBTF9JTlNUUjoKZGlmZiAtLWdpdCBhL2FyY2gvaWE2NC9wY2kvcGNpLmMgYi9hcmNoL2lhNjQvcGNpL3BjaS5jCmluZGV4IGUyODJjMzQuLjUzZDBhOGUgMTAwNjQ0Ci0tLSBhL2FyY2gvaWE2NC9wY2kvcGNpLmMKKysrIGIvYXJjaC9pYTY0L3BjaS9wY2kuYwpAQCAtMzYyLDcgKzM2MiwxMiBAQAogCWluZm8ubmFtZSA9IG5hbWU7CiAJYWNwaV93YWxrX3Jlc291cmNlcyhkZXZpY2UtPmhhbmRsZSwgTUVUSE9EX05BTUVfX0NSUywgYWRkX3dpbmRvdywKIAkJCSZpbmZvKTsKLQorCS8qCisJICogU2VlIGFyY2gveDg2L3BjaS9hY3BpLmMuCisJICogVGhlIGRlc2lyZWQgcGNpIGJ1cyBtaWdodCBhbHJlYWR5IGJlIHNjYW5uZWQgaW4gYSBxdWlyay4gV2UKKwkgKiBzaG91bGQgaGFuZGxlIHRoZSBjYXNlIGhlcmUsIGJ1dCBpdCBhcHBlYXJzIHRoYXQgSUE2NCBoYXNuJ3QKKwkgKiBzdWNoIHF1aXJrLiBTbyB3ZSBqdXN0IGlnbm9yZSB0aGUgY2FzZSBub3cuCisJICovCiAJcGJ1cyA9IHBjaV9zY2FuX2J1c19wYXJlbnRlZChOVUxMLCBidXMsICZwY2lfcm9vdF9vcHMsIGNvbnRyb2xsZXIpOwogCWlmIChwYnVzKQogCQlwY2liaW9zX3NldHVwX3Jvb3Rfd2luZG93cyhwYnVzLCBjb250cm9sbGVyKTsKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9hdTEwMDAvY29tbW9uL3BsYXRmb3JtLmMgYi9hcmNoL21pcHMvYXUxMDAwL2NvbW1vbi9wbGF0Zm9ybS5jCmluZGV4IDg0MTkwNGMuLjM5ZDY4MTIgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9hdTEwMDAvY29tbW9uL3BsYXRmb3JtLmMKKysrIGIvYXJjaC9taXBzL2F1MTAwMC9jb21tb24vcGxhdGZvcm0uYwpAQCAtMTg5LDcgKzE4OSw3IEBACiBzdGF0aWMgc3RydWN0IHJlc291cmNlIGF1MTIwMF9pZGUwX3Jlc291cmNlc1tdID0gewogCVswXSA9IHsKIAkJLnN0YXJ0CQk9IEFVMVhYWF9BVEFfUEhZU19BRERSLAotCQkuZW5kIAkJPSBBVTFYWFhfQVRBX1BIWVNfQUREUiArIEFVMVhYWF9BVEFfUEhZU19MRU4sCisJCS5lbmQgCQk9IEFVMVhYWF9BVEFfUEhZU19BRERSICsgQVUxWFhYX0FUQV9QSFlTX0xFTiAtIDEsCiAJCS5mbGFncwkJPSBJT1JFU09VUkNFX01FTSwKIAl9LAogCVsxXSA9IHsKZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL2tlcm5lbC9zaWduYWwuYyBiL2FyY2gvcGFyaXNjL2tlcm5lbC9zaWduYWwuYwppbmRleCA1OGZjY2M5Li4wNjIxM2QxIDEwMDY0NAotLS0gYS9hcmNoL3BhcmlzYy9rZXJuZWwvc2lnbmFsLmMKKysrIGIvYXJjaC9wYXJpc2Mva2VybmVsL3NpZ25hbC5jCkBAIC01MzQsNyArNTM0LDggQEAKIAkJICogRmx1c2hpbmcgb25lIGNhY2hlbGluZSBpcyBjaGVhcC4KIAkJICogInN5bmMiIG9uIGJpZ2dlciAoPiA0IHdheSkgYm94ZXMgaXMgbm90LgogCQkgKi8KLQkJZmx1c2hfaWNhY2hlX3JhbmdlKHJlZ3MtPmdyWzMwXSwgcmVncy0+Z3JbMzBdICsgNCk7CisJCWZsdXNoX3VzZXJfZGNhY2hlX3JhbmdlKHJlZ3MtPmdyWzMwXSwgcmVncy0+Z3JbMzBdICsgNCk7CisJCWZsdXNoX3VzZXJfaWNhY2hlX3JhbmdlKHJlZ3MtPmdyWzMwXSwgcmVncy0+Z3JbMzBdICsgNCk7CiAKIAkJcmVncy0+Z3JbMzFdID0gcmVncy0+Z3JbMzBdICsgODsKIAkJLyogUHJlc2VydmUgb3JpZ2luYWwgcjI4LiAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9zaC9ib290L2NvbXByZXNzZWQvaGVhZF8zMi5TIGIvYXJjaC9zaC9ib290L2NvbXByZXNzZWQvaGVhZF8zMi5TCmluZGV4IGE4Mzk5YjAuLjA2YWMzMWYgMTAwNjQ0Ci0tLSBhL2FyY2gvc2gvYm9vdC9jb21wcmVzc2VkL2hlYWRfMzIuUworKysgYi9hcmNoL3NoL2Jvb3QvY29tcHJlc3NlZC9oZWFkXzMyLlMKQEAgLTcsNyArNyw2IEBACiAKIC50ZXh0CiAKLSNpbmNsdWRlIDxsaW51eC9saW5rYWdlLmg+CiAjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KIAogCS5nbG9iYWwJc3RhcnR1cApkaWZmIC0tZ2l0IGEvYXJjaC9zaC9ib290L2NvbXByZXNzZWQvaGVhZF82NC5TIGIvYXJjaC9zaC9ib290L2NvbXByZXNzZWQvaGVhZF82NC5TCmluZGV4IDFkNGVjYmYuLmY3MmMxOTggMTAwNjQ0Ci0tLSBhL2FyY2gvc2gvYm9vdC9jb21wcmVzc2VkL2hlYWRfNjQuUworKysgYi9hcmNoL3NoL2Jvb3QvY29tcHJlc3NlZC9oZWFkXzY0LlMKQEAgLTEzLDcgKzEzLDYgQEAKICAqIE1vZGlmaWNhdGlvbiBmb3IgY29tcHJlc3NlZCBsb2FkZXI6CiAgKiAgIENvcHlyaWdodCAoQykgMjAwMiBTdHVhcnQgTWVuZWZ5IChzdHVhcnQubWVuZWZ5QHN0LmNvbSkKICAqLwotI2luY2x1ZGUgPGxpbnV4L2xpbmthZ2UuaD4KICNpbmNsdWRlIDxhc20vY2FjaGUuaD4KICNpbmNsdWRlIDxhc20vY3B1L21tdV9jb250ZXh0Lmg+CiAjaW5jbHVkZSA8YXNtL2NwdS9yZWdpc3RlcnMuaD4KZGlmZiAtLWdpdCBhL2FyY2gvc2gva2VybmVsL3Byb2Nlc3NfNjQuYyBiL2FyY2gvc2gva2VybmVsL3Byb2Nlc3NfNjQuYwppbmRleCAwNDY5OTliLi4wMjgzZDgxIDEwMDY0NAotLS0gYS9hcmNoL3NoL2tlcm5lbC9wcm9jZXNzXzY0LmMKKysrIGIvYXJjaC9zaC9rZXJuZWwvcHJvY2Vzc182NC5jCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KICNpbmNsdWRlIDxhc20vcGd0YWJsZS5oPgogI2luY2x1ZGUgPGFzbS9tbXVfY29udGV4dC5oPgorI2luY2x1ZGUgPGFzbS9mcHUuaD4KIAogc3RydWN0IHRhc2tfc3RydWN0ICpsYXN0X3Rhc2tfdXNlZF9tYXRoID0gTlVMTDsKIApkaWZmIC0tZ2l0IGEvYXJjaC9zaC9rZXJuZWwvcHRyYWNlXzY0LmMgYi9hcmNoL3NoL2tlcm5lbC9wdHJhY2VfNjQuYwppbmRleCBmNmZiZGZhLi5kNDUzYzQ3IDEwMDY0NAotLS0gYS9hcmNoL3NoL2tlcm5lbC9wdHJhY2VfNjQuYworKysgYi9hcmNoL3NoL2tlcm5lbC9wdHJhY2VfNjQuYwpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4KICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CiAjaW5jbHVkZSA8YXNtL21tdV9jb250ZXh0Lmg+CisjaW5jbHVkZSA8YXNtL2ZwdS5oPgogCiAvKiBUaGlzIG1hc2sgZGVmaW5lcyB0aGUgYml0cyBvZiB0aGUgU1Igd2hpY2ggdGhlIHVzZXIgaXMgbm90IGFsbG93ZWQgdG8KICAgIGNoYW5nZSwgd2hpY2ggYXJlIGV2ZXJ5dGhpbmcgZXhjZXB0IFMsIFEsIE0sIFBSLCBTWiwgRlIuICovCmRpZmYgLS1naXQgYS9hcmNoL3NoL2tlcm5lbC9zaF9rc3ltc18zMi5jIGIvYXJjaC9zaC9rZXJuZWwvc2hfa3N5bXNfMzIuYwppbmRleCBkODBkZTM5Li40NWJiMzMzIDEwMDY0NAotLS0gYS9hcmNoL3NoL2tlcm5lbC9zaF9rc3ltc18zMi5jCisrKyBiL2FyY2gvc2gva2VybmVsL3NoX2tzeW1zXzMyLmMKQEAgLTE0OSwzICsxNDksNCBAQAogRVhQT1JUX1NZTUJPTChjb3B5X3BhZ2UpOwogRVhQT1JUX1NZTUJPTChfX2NsZWFyX3VzZXIpOwogRVhQT1JUX1NZTUJPTChfZWJzcyk7CitFWFBPUlRfU1lNQk9MKGVtcHR5X3plcm9fcGFnZSk7CmRpZmYgLS1naXQgYS9hcmNoL3NoL2tlcm5lbC9zaF9rc3ltc182NC5jIGIvYXJjaC9zaC9rZXJuZWwvc2hfa3N5bXNfNjQuYwppbmRleCBkZDM4YTY4Li5iNjQxMGNlIDEwMDY0NAotLS0gYS9hcmNoL3NoL2tlcm5lbC9zaF9rc3ltc182NC5jCisrKyBiL2FyY2gvc2gva2VybmVsL3NoX2tzeW1zXzY0LmMKQEAgLTQ0LDYgKzQ0LDcgQEAKIEVYUE9SVF9TWU1CT0woX19nZXRfdXNlcl9hc21fbCk7CiBFWFBPUlRfU1lNQk9MKGNvcHlfcGFnZSk7CiBFWFBPUlRfU1lNQk9MKF9fY29weV91c2VyKTsKK0VYUE9SVF9TWU1CT0woZW1wdHlfemVyb19wYWdlKTsKIEVYUE9SVF9TWU1CT0wobWVtY3B5KTsKIEVYUE9SVF9TWU1CT0woX191ZGVsYXkpOwogRVhQT1JUX1NZTUJPTChfX25kZWxheSk7CmRpZmYgLS1naXQgYS9hcmNoL3NoL2tlcm5lbC9zaWduYWxfNjQuYyBiL2FyY2gvc2gva2VybmVsL3NpZ25hbF82NC5jCmluZGV4IDgwYmRlMTkuLjU1MmViODEgMTAwNjQ0Ci0tLSBhL2FyY2gvc2gva2VybmVsL3NpZ25hbF82NC5jCisrKyBiL2FyY2gvc2gva2VybmVsL3NpZ25hbF82NC5jCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KICNpbmNsdWRlIDxhc20vcGd0YWJsZS5oPgogI2luY2x1ZGUgPGFzbS9jYWNoZWZsdXNoLmg+CisjaW5jbHVkZSA8YXNtL2ZwdS5oPgogCiAjZGVmaW5lIFJFR19SRVQgOQogI2RlZmluZSBSRUdfQVJHMSAyCmRpZmYgLS1naXQgYS9hcmNoL3NoL2tlcm5lbC90cmFwc18zMi5jIGIvYXJjaC9zaC9rZXJuZWwvdHJhcHNfMzIuYwppbmRleCBiYWE0ZmEzLi5lMDhiM2JmIDEwMDY0NAotLS0gYS9hcmNoL3NoL2tlcm5lbC90cmFwc18zMi5jCisrKyBiL2FyY2gvc2gva2VybmVsL3RyYXBzXzMyLmMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlIDxsaW51eC9saW1pdHMuaD4KICNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KKyNpbmNsdWRlIDxhc20vZnB1Lmg+CiAKICNpZmRlZiBDT05GSUdfU0hfS0dEQgogI2luY2x1ZGUgPGFzbS9rZ2RiLmg+CmRpZmYgLS1naXQgYS9hcmNoL3NoL2tlcm5lbC90cmFwc182NC5jIGIvYXJjaC9zaC9rZXJuZWwvdHJhcHNfNjQuYwppbmRleCAxYjU4YTc0Li5hODU4MzFjIDEwMDY0NAotLS0gYS9hcmNoL3NoL2tlcm5lbC90cmFwc182NC5jCisrKyBiL2FyY2gvc2gva2VybmVsL3RyYXBzXzY0LmMKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDxhc20vYXRvbWljLmg+CiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgogI2luY2x1ZGUgPGFzbS9wZ3RhYmxlLmg+CisjaW5jbHVkZSA8YXNtL2ZwdS5oPgogCiAjdW5kZWYgREVCVUdfRVhDRVBUSU9OCiAjaWZkZWYgREVCVUdfRVhDRVBUSU9OCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9wY2kvYWNwaS5jIGIvYXJjaC94ODYvcGNpL2FjcGkuYwppbmRleCAwMjM0ZjI4Li4zNzgxMzZmIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9wY2kvYWNwaS5jCisrKyBiL2FyY2gveDg2L3BjaS9hY3BpLmMKQEAgLTIxOSw4ICsyMTksMjEgQEAKIAlpZiAocHhtID49IDApCiAJCXNkLT5ub2RlID0gcHhtX3RvX25vZGUocHhtKTsKICNlbmRpZgorCS8qCisJICogTWF5YmUgdGhlIGRlc2lyZWQgcGNpIGJ1cyBoYXMgYmVlbiBhbHJlYWR5IHNjYW5uZWQuIEluIHN1Y2ggY2FzZQorCSAqIGl0IGlzIHVubmVjZXNzYXJ5IHRvIHNjYW4gdGhlIHBjaSBidXMgd2l0aCB0aGUgZ2l2ZW4gZG9tYWluLGJ1c251bS4KKwkgKi8KKwlidXMgPSBwY2lfZmluZF9idXMoZG9tYWluLCBidXNudW0pOworCWlmIChidXMpIHsKKwkJLyoKKwkJICogSWYgdGhlIGRlc2lyZWQgYnVzIGV4aXRzLCB0aGUgY29udGVudCBvZiBidXMtPnN5c2RhdGEgd2lsbAorCQkgKiBiZSByZXBsYWNlZCBieSBzZC4KKwkJICovCisJCW1lbWNweShidXMtPnN5c2RhdGEsIHNkLCBzaXplb2YoKnNkKSk7CisJCWtmcmVlKHNkKTsKKwl9IGVsc2UKKwkJYnVzID0gcGNpX3NjYW5fYnVzX3BhcmVudGVkKE5VTEwsIGJ1c251bSwgJnBjaV9yb290X29wcywgc2QpOwogCi0JYnVzID0gcGNpX3NjYW5fYnVzX3BhcmVudGVkKE5VTEwsIGJ1c251bSwgJnBjaV9yb290X29wcywgc2QpOwogCWlmICghYnVzKQogCQlrZnJlZShzZCk7CiAKQEAgLTIyOCw3ICsyNDEsNyBAQAogCWlmIChidXMgIT0gTlVMTCkgewogCQlpZiAocHhtID49IDApIHsKIAkJCXByaW50aygiYnVzICVkIC0+IHB4bSAlZCAtPiBub2RlICVkXG4iLAotCQkJCWJ1c251bSwgcHhtLCBzZC0+bm9kZSk7CisJCQkJYnVzbnVtLCBweG0sIHB4bV90b19ub2RlKHB4bSkpOwogCQl9CiAJfQogI2VuZGlmCmRpZmYgLS1naXQgYS9ibG9jay9LY29uZmlnIGIvYmxvY2svS2NvbmZpZwppbmRleCA5YmRhN2JjLi43ZGI5YTQxIDEwMDY0NAotLS0gYS9ibG9jay9LY29uZmlnCisrKyBiL2Jsb2NrL0tjb25maWcKQEAgLTM4LDcgKzM4LDcgQEAKIAkgIG9uIGEgYmxvY2sgZGV2aWNlIHF1ZXVlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiAoYW5kIHRoZSB1c2VyIHNwYWNlCiAJICBzdXBwb3J0IHRvb2xzIG5lZWRlZCksIGZldGNoIHRoZSBibGt0cmFjZSBhcHAgZnJvbToKIAotCSAgZ2l0Oi8vYnJpY2sua2VybmVsLmRrL2RhdGEvZ2l0L2Jsa3RyYWNlLmdpdAorCSAgZ2l0Oi8vZ2l0Lmtlcm5lbC5kay9ibGt0cmFjZS5naXQKIAogY29uZmlnIExTRgogCWJvb2wgIlN1cHBvcnQgZm9yIExhcmdlIFNpbmdsZSBGaWxlcyIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9idXMuYyBiL2RyaXZlcnMvYWNwaS9idXMuYwppbmRleCA1YjY3NjBlLi4yZDE5NTVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjcGkvYnVzLmMKKysrIGIvZHJpdmVycy9hY3BpL2J1cy5jCkBAIC0zNzMsMTAgKzM3MywxMSBAQAogCX0KIAogCXNwaW5fbG9ja19pcnFzYXZlKCZhY3BpX2J1c19ldmVudF9sb2NrLCBmbGFncyk7Ci0JZW50cnkgPQotCSAgICBsaXN0X2VudHJ5KGFjcGlfYnVzX2V2ZW50X2xpc3QubmV4dCwgc3RydWN0IGFjcGlfYnVzX2V2ZW50LCBub2RlKTsKLQlpZiAoZW50cnkpCisJaWYgKCFsaXN0X2VtcHR5KCZhY3BpX2J1c19ldmVudF9saXN0KSkgeworCQllbnRyeSA9IGxpc3RfZW50cnkoYWNwaV9idXNfZXZlbnRfbGlzdC5uZXh0LAorCQkJCSAgIHN0cnVjdCBhY3BpX2J1c19ldmVudCwgbm9kZSk7CiAJCWxpc3RfZGVsKCZlbnRyeS0+bm9kZSk7CisJfQogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFjcGlfYnVzX2V2ZW50X2xvY2ssIGZsYWdzKTsKIAogCWlmICghZW50cnkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9wYXRhX2FsaS5jIGIvZHJpdmVycy9hdGEvcGF0YV9hbGkuYwppbmRleCBjZTgzMGZlLi41MTFhODMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9wYXRhX2FsaS5jCisrKyBiL2RyaXZlcnMvYXRhL3BhdGFfYWxpLmMKQEAgLTM2LDcgKzM2LDcgQEAKICNkZWZpbmUgRFJWX05BTUUgInBhdGFfYWxpIgogI2RlZmluZSBEUlZfVkVSU0lPTiAiMC43LjUiCiAKLWludCBhbGlfYXRhcGlfZG1hID0gMDsKK3N0YXRpYyBpbnQgYWxpX2F0YXBpX2RtYSA9IDA7CiBtb2R1bGVfcGFyYW1fbmFtZWQoYXRhcGlfZG1hLCBhbGlfYXRhcGlfZG1hLCBpbnQsIDA2NDQpOwogTU9EVUxFX1BBUk1fREVTQyhhdGFwaV9kbWEsICJFbmFibGUgQVRBUEkgRE1BICgwPWRpc2FibGUsIDE9ZW5hYmxlKSIpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9zYXRhX3N2dy5jIGIvZHJpdmVycy9hdGEvc2F0YV9zdncuYwppbmRleCA4NDBkMWM0Li4wMTllMzY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9zYXRhX3N2dy5jCisrKyBiL2RyaXZlcnMvYXRhL3NhdGFfc3Z3LmMKQEAgLTUzMSw4ICs1MzEsOCBAQAogICogKi8KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBrMl9zYXRhX3BjaV90YmxbXSA9IHsKIAl7IFBDSV9WREVWSUNFKFNFUlZFUldPUktTLCAweDAyNDApLCBjaGlwX3N2dzQgfSwKLQl7IFBDSV9WREVWSUNFKFNFUlZFUldPUktTLCAweDAyNDEpLCBjaGlwX3N2dzQgfSwKLQl7IFBDSV9WREVWSUNFKFNFUlZFUldPUktTLCAweDAyNDIpLCBjaGlwX3N2dzggfSwKKwl7IFBDSV9WREVWSUNFKFNFUlZFUldPUktTLCAweDAyNDEpLCBjaGlwX3N2dzggfSwKKwl7IFBDSV9WREVWSUNFKFNFUlZFUldPUktTLCAweDAyNDIpLCBjaGlwX3N2dzQgfSwKIAl7IFBDSV9WREVWSUNFKFNFUlZFUldPUktTLCAweDAyNGEpLCBjaGlwX3N2dzQgfSwKIAl7IFBDSV9WREVWSUNFKFNFUlZFUldPUktTLCAweDAyNGIpLCBjaGlwX3N2dzQgfSwKIAl7IFBDSV9WREVWSUNFKFNFUlZFUldPUktTLCAweDA0MTApLCBjaGlwX3N2dzQyIH0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lkZS9taXBzL2F1MXh4eC1pZGUuYyBiL2RyaXZlcnMvaWRlL21pcHMvYXUxeHh4LWlkZS5jCmluZGV4IDBmNGJmNWQuLjg1YzAxNmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWRlL21pcHMvYXUxeHh4LWlkZS5jCisrKyBiL2RyaXZlcnMvaWRlL21pcHMvYXUxeHh4LWlkZS5jCkBAIC0zMiwxOSArMzIsMTIgQEAKICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgogI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgotCiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgogI2luY2x1ZGUgPGxpbnV4L2lkZS5oPgotI2luY2x1ZGUgPGxpbnV4L3N5c2Rldi5oPgorI2luY2x1ZGUgPGxpbnV4L3NjYXR0ZXJsaXN0Lmg+CiAKLSNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgotCi0jaW5jbHVkZSAiaWRlLXRpbWluZy5oIgotCi0jaW5jbHVkZSA8YXNtL2lvLmg+CiAjaW5jbHVkZSA8YXNtL21hY2gtYXUxeDAwL2F1MXh4eC5oPgogI2luY2x1ZGUgPGFzbS9tYWNoLWF1MXgwMC9hdTF4eHhfZGJkbWEuaD4KLQogI2luY2x1ZGUgPGFzbS9tYWNoLWF1MXgwMC9hdTF4eHhfaWRlLmg+CiAKICNkZWZpbmUgRFJWX05BTUUJImF1MTIwMC1pZGUiCkBAIC01Niw2ICs0OSw4IEBACiBzdGF0aWMgX2F1aWRlX2h3aWYgYXVpZGVfaHdpZjsKIHN0YXRpYyBpbnQgZGJkbWFfaW5pdF9kb25lOwogCitzdGF0aWMgaW50IGF1aWRlX2RkbWFfaW5pdChfYXVpZGVfaHdpZiAqYXVpZGUpOworCiAjaWYgZGVmaW5lZChDT05GSUdfQkxLX0RFVl9JREVfQVUxWFhYX1BJT19EQkRNQSkKIAogdm9pZCBhdWlkZV9pbnN3KHVuc2lnbmVkIGxvbmcgcG9ydCwgdm9pZCAqYWRkciwgdTMyIGNvdW50KQpAQCAtNTkxLDEzICs1ODYsMTQgQEAKIAkJZ290byBvdXQ7CiAJfQogCi0JaWYgKCFyZXF1ZXN0X21lbV9yZWdpb24gKHJlcy0+c3RhcnQsIHJlcy0+ZW5kLXJlcy0+c3RhcnQsIHBkZXYtPm5hbWUpKSB7CisJaWYgKCFyZXF1ZXN0X21lbV9yZWdpb24ocmVzLT5zdGFydCwgcmVzLT5lbmQgLSByZXMtPnN0YXJ0ICsgMSwKKwkJCQlwZGV2LT5uYW1lKSkgewogCQlwcl9kZWJ1ZygiJXM6IHJlcXVlc3RfbWVtX3JlZ2lvbiBmYWlsZWRcbiIsIERSVl9OQU1FKTsKIAkJcmV0ID0gIC1FQlVTWTsKIAkJZ290byBvdXQ7CiAJfQogCi0JYWh3aWYtPnJlZ2Jhc2UgPSAodTMyKWlvcmVtYXAocmVzLT5zdGFydCwgcmVzLT5lbmQtcmVzLT5zdGFydCk7CisJYWh3aWYtPnJlZ2Jhc2UgPSAodTMyKWlvcmVtYXAocmVzLT5zdGFydCwgcmVzLT5lbmQgLSByZXMtPnN0YXJ0ICsgMSk7CiAJaWYgKGFod2lmLT5yZWdiYXNlID09IDApIHsKIAkJcmV0ID0gLUVOT01FTTsKIAkJZ290byBvdXQ7CkBAIC02ODIsNyArNjc4LDcgQEAKIAlpb3VubWFwKCh2b2lkICopYWh3aWYtPnJlZ2Jhc2UpOwogCiAJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKLQlyZWxlYXNlX21lbV9yZWdpb24ocmVzLT5zdGFydCwgcmVzLT5lbmQgLSByZXMtPnN0YXJ0KTsKKwlyZWxlYXNlX21lbV9yZWdpb24ocmVzLT5zdGFydCwgcmVzLT5lbmQgLSByZXMtPnN0YXJ0ICsgMSk7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL3BjaS9pdDgyMXguYyBiL2RyaXZlcnMvaWRlL3BjaS9pdDgyMXguYwppbmRleCAxNTk3ZjBjLi5kOGExNjc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9wY2kvaXQ4MjF4LmMKKysrIGIvZHJpdmVycy9pZGUvcGNpL2l0ODIxeC5jCkBAIC02NjcsNyArNjY3LDcgQEAKIG1vZHVsZV9pbml0KGl0ODIxeF9pZGVfaW5pdCk7CiAKIG1vZHVsZV9wYXJhbV9uYW1lZChub3JhaWQsIGl0ODIxMl9ub3JhaWQsIGludCwgU19JUlVHTyk7Ci1NT0RVTEVfUEFSTV9ERVNDKGl0ODIxMl9ub3JhaWQsICJGb3JjZSBjYXJkIGludG8gYnlwYXNzIG1vZGUiKTsKK01PRFVMRV9QQVJNX0RFU0Mobm9yYWlkLCAiRm9yY2UgY2FyZCBpbnRvIGJ5cGFzcyBtb2RlIik7CiAKIE1PRFVMRV9BVVRIT1IoIkFsYW4gQ294Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlBDSSBkcml2ZXIgbW9kdWxlIGZvciB0aGUgSVRFIDgyMXgiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9pNGwvaXNkbl9uZXQuYyBiL2RyaXZlcnMvaXNkbi9pNGwvaXNkbl9uZXQuYwppbmRleCBjZWQ4M2MyLi5lZjFhMzAwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fbmV0LmMKKysrIGIvZHJpdmVycy9pc2RuL2k0bC9pc2RuX25ldC5jCkBAIC0yMDEwLDYgKzIwMTAsNyBAQAogCW5kZXYtPmZsYWdzID0gSUZGX05PQVJQfElGRl9QT0lOVE9QT0lOVDsKIAluZGV2LT50eXBlID0gQVJQSFJEX0VUSEVSOwogCW5kZXYtPmFkZHJfbGVuID0gRVRIX0FMRU47CisJbmRldi0+dmFsaWRhdGVfYWRkciA9IE5VTEw7CiAKIAkvKiBmb3IgY2xpZW50cyB3aXRoIE1QUFAgbWF5YmUgaGlnaGVyIHZhbHVlcyBiZXR0ZXIgKi8KIAluZGV2LT50eF9xdWV1ZV9sZW4gPSAzMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbGVkcy9sZWRzLWFtcy1kZWx0YS5jIGIvZHJpdmVycy9sZWRzL2xlZHMtYW1zLWRlbHRhLmMKaW5kZXggOWUzMDc3NC4uYzM3YmIwZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9sZWRzL2xlZHMtYW1zLWRlbHRhLmMKKysrIGIvZHJpdmVycy9sZWRzL2xlZHMtYW1zLWRlbHRhLmMKQEAgLTE0MCw2ICsxNDAsNyBAQAogCS5yZXN1bWUJCT0gYW1zX2RlbHRhX2xlZF9yZXN1bWUsCiAJLmRyaXZlcgkJPSB7CiAJCS5uYW1lID0gImFtcy1kZWx0YS1sZWQiLAorCQkub3duZXIgPSBUSElTX01PRFVMRSwKIAl9LAogfTsKIApAQCAtMTU5LDMgKzE2MCw0IEBACiBNT0RVTEVfQVVUSE9SKCJKb25hdGhhbiBNY0Rvd2VsbCA8bm9vZGxlc0BlYXJ0aC5saT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiQW1zdHJhZCBEZWx0YSBMRUQgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOmFtcy1kZWx0YS1sZWQiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbGVkcy9sZWRzLWF0bWVsLXB3bS5jIGIvZHJpdmVycy9sZWRzL2xlZHMtYXRtZWwtcHdtLmMKaW5kZXggYWY2MWY1NS4uMjhkYjZjMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9sZWRzL2xlZHMtYXRtZWwtcHdtLmMKKysrIGIvZHJpdmVycy9sZWRzL2xlZHMtYXRtZWwtcHdtLmMKQEAgLTEzMiw2ICsxMzIsOSBAQAogCXJldHVybiAwOwogfQogCisvKiB3b3JrIHdpdGggaG90cGx1ZyBhbmQgY29sZHBsdWcgKi8KK01PRFVMRV9BTElBUygicGxhdGZvcm06bGVkcy1hdG1lbC1wd20iKTsKKwogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcHdtbGVkX2RyaXZlciA9IHsKIAkuZHJpdmVyID0gewogCQkubmFtZSA9CQkibGVkcy1hdG1lbC1wd20iLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9sZWRzL2xlZHMtY2xldm8tbWFpbC5jIGIvZHJpdmVycy9sZWRzL2xlZHMtY2xldm8tbWFpbC5jCmluZGV4IDZjM2QzM2IuLjU3NTBiMDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbGVkcy9sZWRzLWNsZXZvLW1haWwuYworKysgYi9kcml2ZXJzL2xlZHMvbGVkcy1jbGV2by1tYWlsLmMKQEAgLTE3MCw2ICsxNzAsNyBAQAogCS5yZXN1bWUJCT0gY2xldm9fbWFpbF9sZWRfcmVzdW1lLAogCS5kcml2ZXIJCT0gewogCQkubmFtZQkJPSBLQlVJTERfTU9ETkFNRSwKKwkJLm93bmVyCQk9IFRISVNfTU9EVUxFLAogCX0sCiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2xlZHMvbGVkcy1jbS14MjcwLmMgYi9kcml2ZXJzL2xlZHMvbGVkcy1jbS14MjcwLmMKaW5kZXggOWFlYmVmMC4uYWNjYzdlZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9sZWRzL2xlZHMtY20teDI3MC5jCisrKyBiL2RyaXZlcnMvbGVkcy9sZWRzLWNtLXgyNzAuYwpAQCAtMTAxLDYgKzEwMSw3IEBACiAjZW5kaWYKIAkuZHJpdmVyCQk9IHsKIAkJLm5hbWUJCT0gImNtLXgyNzAtbGVkIiwKKwkJLm93bmVyCQk9IFRISVNfTU9EVUxFLAogCX0sCiB9OwogCkBAIC0xMjAsMyArMTIxLDQgQEAKIE1PRFVMRV9BVVRIT1IoIk1pa2UgUmFwb3BvcnQgPG1pa2VAY29tcHVsYWIuY28uaWw+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkNNLXgyNzAgTEVEIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpjbS14MjcwLWxlZCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9sZWRzL2xlZHMtY29iYWx0LXF1YmUuYyBiL2RyaXZlcnMvbGVkcy9sZWRzLWNvYmFsdC1xdWJlLmMKaW5kZXggZDJiNTRiNS4uMDk2ODgxYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9sZWRzL2xlZHMtY29iYWx0LXF1YmUuYworKysgYi9kcml2ZXJzL2xlZHMvbGVkcy1jb2JhbHQtcXViZS5jCkBAIC03NSw2ICs3NSw5IEBACiAJcmV0dXJuIDA7CiB9CiAKKy8qIHdvcmsgd2l0aCBob3RwbHVnIGFuZCBjb2xkcGx1ZyAqLworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpjb2JhbHQtcXViZS1sZWRzIik7CisKIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGNvYmFsdF9xdWJlX2xlZF9kcml2ZXIgPSB7CiAJLnByb2JlCT0gY29iYWx0X3F1YmVfbGVkX3Byb2JlLAogCS5yZW1vdmUJPSBfX2RldmV4aXRfcChjb2JhbHRfcXViZV9sZWRfcmVtb3ZlKSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbGVkcy9sZWRzLWNvcmdpLmMgYi9kcml2ZXJzL2xlZHMvbGVkcy1jb3JnaS5jCmluZGV4IGU0NWY2YzQuLjI5ZTkzMWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbGVkcy9sZWRzLWNvcmdpLmMKKysrIGIvZHJpdmVycy9sZWRzL2xlZHMtY29yZ2kuYwpAQCAtOTksNiArOTksNyBAQAogI2VuZGlmCiAJLmRyaXZlcgkJPSB7CiAJCS5uYW1lCQk9ICJjb3JnaS1sZWQiLAorCQkub3duZXIJCT0gVEhJU19NT0RVTEUsCiAJfSwKIH07CiAKQEAgLTExOCwzICsxMTksNCBAQAogTU9EVUxFX0FVVEhPUigiUmljaGFyZCBQdXJkaWUgPHJwdXJkaWVAb3BlbmVkaGFuZC5jb20+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkNvcmdpIExFRCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06Y29yZ2ktbGVkIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2xlZHMvbGVkcy1ncGlvLmMgYi9kcml2ZXJzL2xlZHMvbGVkcy1ncGlvLmMKaW5kZXggNGMwYjA1OC4uMWFhZThiMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9sZWRzL2xlZHMtZ3Bpby5jCisrKyBiL2RyaXZlcnMvbGVkcy9sZWRzLWdwaW8uYwpAQCAtMTk5LDMgKzE5OSw0IEBACiBNT0RVTEVfQVVUSE9SKCJSYXBoYWVsIEFzc2VuYXQgPHJhcGhAOGQuY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJHUElPIExFRCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06bGVkcy1ncGlvIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2xlZHMvbGVkcy1oMTk0MC5jIGIvZHJpdmVycy9sZWRzL2xlZHMtaDE5NDAuYwppbmRleCA2NzdjOTkzLi42ZTUxYzliIDEwMDY0NAotLS0gYS9kcml2ZXJzL2xlZHMvbGVkcy1oMTk0MC5jCisrKyBiL2RyaXZlcnMvbGVkcy9sZWRzLWgxOTQwLmMKQEAgLTEzOSw2ICsxMzksNyBAQAogc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaDE5NDBsZWRzX2RyaXZlciA9IHsKIAkuZHJpdmVyCQk9IHsKIAkJLm5hbWUJPSAiaDE5NDAtbGVkcyIsCisJCS5vd25lcgk9IFRISVNfTU9EVUxFLAogCX0sCiAJLnByb2JlCQk9IGgxOTQwbGVkc19wcm9iZSwKIAkucmVtb3ZlCQk9IGgxOTQwbGVkc19yZW1vdmUsCkBAIC0xNjEsMyArMTYyLDQgQEAKIE1PRFVMRV9BVVRIT1IoIkFybmF1ZCBQYXRhcmQgPGFybmF1ZC5wYXRhcmRAcnRwLW5ldC5vcmc+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkxFRCBkcml2ZXIgZm9yIHRoZSBpUEFRIEgxOTQwIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOmgxOTQwLWxlZHMiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbGVkcy9sZWRzLWhwNnh4LmMgYi9kcml2ZXJzL2xlZHMvbGVkcy1ocDZ4eC5jCmluZGV4IDgyZDRlYzMuLjg3MGY1YTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbGVkcy9sZWRzLWhwNnh4LmMKKysrIGIvZHJpdmVycy9sZWRzL2xlZHMtaHA2eHguYwpAQCAtOTAsNiArOTAsOSBAQAogCXJldHVybiAwOwogfQogCisvKiB3b3JrIHdpdGggaG90cGx1ZyBhbmQgY29sZHBsdWcgKi8KK01PRFVMRV9BTElBUygicGxhdGZvcm06aHA2eHgtbGVkIik7CisKIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGhwNnh4bGVkX2RyaXZlciA9IHsKIAkucHJvYmUJCT0gaHA2eHhsZWRfcHJvYmUsCiAJLnJlbW92ZQkJPSBocDZ4eGxlZF9yZW1vdmUsCkBAIC05OSw2ICsxMDIsNyBAQAogI2VuZGlmCiAJLmRyaXZlcgkJPSB7CiAJCS5uYW1lCQk9ICJocDZ4eC1sZWQiLAorCQkub3duZXIJCT0gVEhJU19NT0RVTEUsCiAJfSwKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbGVkcy9sZWRzLXMzYzI0eHguYyBiL2RyaXZlcnMvbGVkcy9sZWRzLXMzYzI0eHguYwppbmRleCAwZmQ2NDA3Li4wZDEwZTExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2xlZHMvbGVkcy1zM2MyNHh4LmMKKysrIGIvZHJpdmVycy9sZWRzL2xlZHMtczNjMjR4eC5jCkBAIC0xNjAsMyArMTYwLDQgQEAKIE1PRFVMRV9BVVRIT1IoIkJlbiBEb29rcyA8YmVuQHNpbXRlYy5jby51az4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiUzNDMjRYWCBMRUQgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOnMzYzI0eHhfbGVkIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2xlZHMvbGVkcy1zcGl0ei5jIGIvZHJpdmVycy9sZWRzL2xlZHMtc3BpdHouYwppbmRleCA5M2UxMDEyLi44NzAwN2NjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2xlZHMvbGVkcy1zcGl0ei5jCisrKyBiL2RyaXZlcnMvbGVkcy9sZWRzLXNwaXR6LmMKQEAgLTEwNSw2ICsxMDUsNyBAQAogI2VuZGlmCiAJLmRyaXZlcgkJPSB7CiAJCS5uYW1lCQk9ICJzcGl0ei1sZWQiLAorCQkub3duZXIJCT0gVEhJU19NT0RVTEUsCiAJfSwKIH07CiAKQEAgLTEyNCwzICsxMjUsNCBAQAogTU9EVUxFX0FVVEhPUigiUmljaGFyZCBQdXJkaWUgPHJwdXJkaWVAb3BlbmVkaGFuZC5jb20+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlNwaXR6IExFRCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06c3BpdHotbGVkIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2xlZHMvbGVkcy10b3NhLmMgYi9kcml2ZXJzL2xlZHMvbGVkcy10b3NhLmMKaW5kZXggOWUwYTE4OC4uN2ViZWNjNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9sZWRzL2xlZHMtdG9zYS5jCisrKyBiL2RyaXZlcnMvbGVkcy9sZWRzLXRvc2EuYwpAQCAtMTA5LDYgKzEwOSw3IEBACiAJLnJlc3VtZQkJPSB0b3NhbGVkX3Jlc3VtZSwKIAkuZHJpdmVyCQk9IHsKIAkJLm5hbWUJCT0gInRvc2EtbGVkIiwKKwkJLm93bmVyCQk9IFRISVNfTU9EVUxFLAogCX0sCiB9OwogCkBAIC0xMjgsMyArMTI5LDQgQEAKIE1PRFVMRV9BVVRIT1IoIkRpcmsgT3BmZXIgPERpcmtAT3BmZXItT25saW5lLmRlPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJUb3NhIExFRCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06dG9zYS1sZWQiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9hdG1lbC1zc2MuYyBiL2RyaXZlcnMvbWlzYy9hdG1lbC1zc2MuYwppbmRleCAwNThjY2FjLi5lMTcxNjUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL21pc2MvYXRtZWwtc3NjLmMKKysrIGIvZHJpdmVycy9taXNjL2F0bWVsLXNzYy5jCkBAIC0xNTQsNiArMTU0LDcgQEAKIAkucmVtb3ZlCQk9IF9fZGV2ZXhpdF9wKHNzY19yZW1vdmUpLAogCS5kcml2ZXIJCT0gewogCQkubmFtZQkJPSAic3NjIiwKKwkJLm93bmVyCQk9IFRISVNfTU9EVUxFLAogCX0sCiB9OwogCkBAIC0xNzIsMyArMTczLDQgQEAKIE1PRFVMRV9BVVRIT1IoIkhhbnMtQ2hyaXN0aWFuIEVndHZlZHQgPGhjZWd0dmVkdEBhdG1lbC5jb20+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlNTQyBkcml2ZXIgZm9yIEF0bWVsIEFWUjMyIGFuZCBBVDkxIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOnNzYyIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL2F0bWVsX3B3bS5jIGIvZHJpdmVycy9taXNjL2F0bWVsX3B3bS5jCmluZGV4IGY4ZDNiOWEuLjBkNWNlMDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWlzYy9hdG1lbF9wd20uYworKysgYi9kcml2ZXJzL21pc2MvYXRtZWxfcHdtLmMKQEAgLTQwNywzICs0MDcsNCBAQAogCiBNT0RVTEVfREVTQ1JJUFRJT04oIkRyaXZlciBmb3IgQVQzMi9BVDkxIFBXTSBtb2R1bGUiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06YXRtZWxfcHdtIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvaGRwdWZ0cnMvaGRwdV9jcHVzdGF0ZS5jIGIvZHJpdmVycy9taXNjL2hkcHVmdHJzL2hkcHVfY3B1c3RhdGUuYwppbmRleCBhYThjZTdhLi4zMDJlOTI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL21pc2MvaGRwdWZ0cnMvaGRwdV9jcHVzdGF0ZS5jCisrKyBiL2RyaXZlcnMvbWlzYy9oZHB1ZnRycy9oZHB1X2NwdXN0YXRlLmMKQEAgLTE2NCw2ICsxNjQsNyBAQAogCS5yZW1vdmUgPSBoZHB1X2NwdXN0YXRlX3JlbW92ZSwKIAkuZHJpdmVyID0gewogCQkubmFtZSA9IEhEUFVfQ1BVU1RBVEVfTkFNRSwKKwkJLm93bmVyID0gVEhJU19NT0RVTEUsCiAJfSwKIH07CiAKQEAgLTI0OCwzICsyNDksNCBAQAogCiBNT0RVTEVfQVVUSE9SKCJCcmlhbiBXYWl0ZSIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybToiIEhEUFVfQ1BVU1RBVEVfTkFNRSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvaGRwdWZ0cnMvaGRwdV9uZXh1cy5jIGIvZHJpdmVycy9taXNjL2hkcHVmdHJzL2hkcHVfbmV4dXMuYwppbmRleCAyODg3YjIxLi4yZmEzNmY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL21pc2MvaGRwdWZ0cnMvaGRwdV9uZXh1cy5jCisrKyBiL2RyaXZlcnMvbWlzYy9oZHB1ZnRycy9oZHB1X25leHVzLmMKQEAgLTU1LDYgKzU1LDcgQEAKIAkucmVtb3ZlID0gaGRwdV9uZXh1c19yZW1vdmUsCiAJLmRyaXZlciA9IHsKIAkJLm5hbWUgPSBIRFBVX05FWFVTX05BTUUsCisJCS5vd25lciA9IFRISVNfTU9EVUxFLAogCX0sCiB9OwogCkBAIC0xNTEsMyArMTUyLDQgQEAKIAogTU9EVUxFX0FVVEhPUigiQnJpYW4gV2FpdGUiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06IiBIRFBVX05FWFVTX05BTUUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvaG9zdC9hdDkxX21jaS5jIGIvZHJpdmVycy9tbWMvaG9zdC9hdDkxX21jaS5jCmluZGV4IDIxYWNlY2MuLmEyOGZjMmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL2hvc3QvYXQ5MV9tY2kuYworKysgYi9kcml2ZXJzL21tYy9ob3N0L2F0OTFfbWNpLmMKQEAgLTEwNzUsMyArMTA3NSw0IEBACiBNT0RVTEVfREVTQ1JJUFRJT04oIkFUOTEgTXVsdGltZWRpYSBDYXJkIEludGVyZmFjZSBkcml2ZXIiKTsKIE1PRFVMRV9BVVRIT1IoIk5pY2sgUmFuZGVsbCIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTphdDkxX21jaSIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvaG9zdC9hdTF4bW1jLmMgYi9kcml2ZXJzL21tYy9ob3N0L2F1MXhtbWMuYwppbmRleCBjMzkyNmViLi5jYzVmN2JjIDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9ob3N0L2F1MXhtbWMuYworKysgYi9kcml2ZXJzL21tYy9ob3N0L2F1MXhtbWMuYwpAQCAtOTk4LDYgKzk5OCw3IEBACiAJLnJlc3VtZSAgICAgICAgPSBOVUxMLAogCS5kcml2ZXIgICAgICAgID0gewogCQkubmFtZSAgPSBEUklWRVJfTkFNRSwKKwkJLm93bmVyID0gVEhJU19NT0RVTEUsCiAJfSwKIH07CiAKQEAgLTEwMTgsNSArMTAxOSw2IEBACiBNT0RVTEVfQVVUSE9SKCJBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMiKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTU1DL1NEIGRyaXZlciBmb3IgdGhlIEFsY2hlbXkgQXUxWFhYIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOmF1MXh4eC1tbWMiKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9ob3N0L2lteG1tYy5jIGIvZHJpdmVycy9tbWMvaG9zdC9pbXhtbWMuYwppbmRleCBmMjA3MGExLi45NWYzM2U4IDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9ob3N0L2lteG1tYy5jCisrKyBiL2RyaXZlcnMvbW1jL2hvc3QvaW14bW1jLmMKQEAgLTExMjgsNiArMTEyOCw3IEBACiAJLnJlc3VtZQkJPSBpbXhtY2lfcmVzdW1lLAogCS5kcml2ZXIJCT0gewogCQkubmFtZQkJPSBEUklWRVJfTkFNRSwKKwkJLm93bmVyCQk9IFRISVNfTU9EVUxFLAogCX0KIH07CiAKQEAgLTExNDcsMyArMTE0OCw0IEBACiBNT0RVTEVfREVTQ1JJUFRJT04oImkuTVggTXVsdGltZWRpYSBDYXJkIEludGVyZmFjZSBEcml2ZXIiKTsKIE1PRFVMRV9BVVRIT1IoIlNhc2NoYSBIYXVlciwgUGVuZ3V0cm9uaXgiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06aW14LW1tYyIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvaG9zdC9vbWFwLmMgYi9kcml2ZXJzL21tYy9ob3N0L29tYXAuYwppbmRleCBjOWRmZWIxLi45MGMzNThiIDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9ob3N0L29tYXAuYworKysgYi9kcml2ZXJzL21tYy9ob3N0L29tYXAuYwpAQCAtMTI1NSw2ICsxMjU1LDcgQEAKIAkucmVzdW1lCQk9IG1tY19vbWFwX3Jlc3VtZSwKIAkuZHJpdmVyCQk9IHsKIAkJLm5hbWUJPSBEUklWRVJfTkFNRSwKKwkJLm93bmVyCT0gVEhJU19NT0RVTEUsCiAJfSwKIH07CiAKQEAgLTEyNzMsNSArMTI3NCw1IEBACiAKIE1PRFVMRV9ERVNDUklQVElPTigiT01BUCBNdWx0aW1lZGlhIENhcmQgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci1NT0RVTEVfQUxJQVMoRFJJVkVSX05BTUUpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybToiIERSSVZFUl9OQU1FKTsKIE1PRFVMRV9BVVRIT1IoIkp1aGEgWXJq9mzkIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9ob3N0L3B4YW1jaS5jIGIvZHJpdmVycy9tbWMvaG9zdC9weGFtY2kuYwppbmRleCAxZWE4NDgyLi42NTIxMGZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9ob3N0L3B4YW1jaS5jCisrKyBiL2RyaXZlcnMvbW1jL2hvc3QvcHhhbWNpLmMKQEAgLTY5Myw2ICs2OTMsNyBAQAogCS5yZXN1bWUJCT0gcHhhbWNpX3Jlc3VtZSwKIAkuZHJpdmVyCQk9IHsKIAkJLm5hbWUJPSBEUklWRVJfTkFNRSwKKwkJLm93bmVyCT0gVEhJU19NT0RVTEUsCiAJfSwKIH07CiAKQEAgLTcxMSwzICs3MTIsNCBAQAogCiBNT0RVTEVfREVTQ1JJUFRJT04oIlBYQSBNdWx0aW1lZGlhIENhcmQgSW50ZXJmYWNlIERyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpweGEyeHgtbWNpIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9ob3N0L3dic2QuYyBiL2RyaXZlcnMvbW1jL2hvc3Qvd2JzZC5jCmluZGV4IDRkNWYzNzQuLmJlNjI0YTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL2hvc3Qvd2JzZC5jCisrKyBiL2RyaXZlcnMvbW1jL2hvc3Qvd2JzZC5jCkBAIC0xOTQ4LDYgKzE5NDgsNyBAQAogCS5yZXN1bWUJCT0gd2JzZF9wbGF0Zm9ybV9yZXN1bWUsCiAJLmRyaXZlcgkJPSB7CiAJCS5uYW1lCT0gRFJJVkVSX05BTUUsCisJCS5vd25lcgk9IFRISVNfTU9EVUxFLAogCX0sCiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9iNDQuYyBiL2RyaXZlcnMvbmV0L2I0NC5jCmluZGV4IDI1ZjEzMzcuLjU5ZGNlNmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2I0NC5jCisrKyBiL2RyaXZlcnMvbmV0L2I0NC5jCkBAIC0xNDgsNyArMTQ4LDcgQEAKIAkJCQkJCXVuc2lnbmVkIGxvbmcgb2Zmc2V0LAogCQkJCQkJZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyKQogewotCWRtYV9zeW5jX3NpbmdsZV9yYW5nZV9mb3JfZGV2aWNlKHNkZXYtPmRldiwgZG1hX2Jhc2UsCisJZG1hX3N5bmNfc2luZ2xlX3JhbmdlX2Zvcl9kZXZpY2Uoc2Rldi0+ZG1hX2RldiwgZG1hX2Jhc2UsCiAJCQkJCSBvZmZzZXQgJiBkbWFfZGVzY19hbGlnbl9tYXNrLAogCQkJCQkgZG1hX2Rlc2Nfc3luY19zaXplLCBkaXIpOwogfQpAQCAtMTU4LDcgKzE1OCw3IEBACiAJCQkJCSAgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQsCiAJCQkJCSAgICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyKQogewotCWRtYV9zeW5jX3NpbmdsZV9yYW5nZV9mb3JfY3B1KHNkZXYtPmRldiwgZG1hX2Jhc2UsCisJZG1hX3N5bmNfc2luZ2xlX3JhbmdlX2Zvcl9jcHUoc2Rldi0+ZG1hX2RldiwgZG1hX2Jhc2UsCiAJCQkJICAgICAgb2Zmc2V0ICYgZG1hX2Rlc2NfYWxpZ25fbWFzaywKIAkJCQkgICAgICBkbWFfZGVzY19zeW5jX3NpemUsIGRpcik7CiB9CkBAIC02MTMsNyArNjEzLDcgQEAKIAogCQlCVUdfT04oc2tiID09IE5VTEwpOwogCi0JCWRtYV91bm1hcF9zaW5nbGUoYnAtPnNkZXYtPmRldiwKKwkJZG1hX3VubWFwX3NpbmdsZShicC0+c2Rldi0+ZG1hX2RldiwKIAkJCQkgcnAtPm1hcHBpbmcsCiAJCQkJIHNrYi0+bGVuLAogCQkJCSBETUFfVE9fREVWSUNFKTsKQEAgLTY1Myw3ICs2NTMsNyBAQAogCWlmIChza2IgPT0gTlVMTCkKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQltYXBwaW5nID0gZG1hX21hcF9zaW5nbGUoYnAtPnNkZXYtPmRldiwgc2tiLT5kYXRhLAorCW1hcHBpbmcgPSBkbWFfbWFwX3NpbmdsZShicC0+c2Rldi0+ZG1hX2Rldiwgc2tiLT5kYXRhLAogCQkJCSBSWF9QS1RfQlVGX1NaLAogCQkJCSBETUFfRlJPTV9ERVZJQ0UpOwogCkBAIC02NjMsMTkgKzY2MywxOSBAQAogCQltYXBwaW5nICsgUlhfUEtUX0JVRl9TWiA+IERNQV8zMEJJVF9NQVNLKSB7CiAJCS8qIFNpZ2guLi4gKi8KIAkJaWYgKCFkbWFfbWFwcGluZ19lcnJvcihtYXBwaW5nKSkKLQkJCWRtYV91bm1hcF9zaW5nbGUoYnAtPnNkZXYtPmRldiwgbWFwcGluZywKKwkJCWRtYV91bm1hcF9zaW5nbGUoYnAtPnNkZXYtPmRtYV9kZXYsIG1hcHBpbmcsCiAJCQkJCVJYX1BLVF9CVUZfU1osIERNQV9GUk9NX0RFVklDRSk7CiAJCWRldl9rZnJlZV9za2JfYW55KHNrYik7CiAJCXNrYiA9IF9fbmV0ZGV2X2FsbG9jX3NrYihicC0+ZGV2LCBSWF9QS1RfQlVGX1NaLCBHRlBfQVRPTUlDfEdGUF9ETUEpOwogCQlpZiAoc2tiID09IE5VTEwpCiAJCQlyZXR1cm4gLUVOT01FTTsKLQkJbWFwcGluZyA9IGRtYV9tYXBfc2luZ2xlKGJwLT5zZGV2LT5kZXYsIHNrYi0+ZGF0YSwKKwkJbWFwcGluZyA9IGRtYV9tYXBfc2luZ2xlKGJwLT5zZGV2LT5kbWFfZGV2LCBza2ItPmRhdGEsCiAJCQkJCSBSWF9QS1RfQlVGX1NaLAogCQkJCQkgRE1BX0ZST01fREVWSUNFKTsKIAkJaWYgKGRtYV9tYXBwaW5nX2Vycm9yKG1hcHBpbmcpIHx8CiAJCQltYXBwaW5nICsgUlhfUEtUX0JVRl9TWiA+IERNQV8zMEJJVF9NQVNLKSB7CiAJCQlpZiAoIWRtYV9tYXBwaW5nX2Vycm9yKG1hcHBpbmcpKQotCQkJCWRtYV91bm1hcF9zaW5nbGUoYnAtPnNkZXYtPmRldiwgbWFwcGluZywgUlhfUEtUX0JVRl9TWixETUFfRlJPTV9ERVZJQ0UpOworCQkJCWRtYV91bm1hcF9zaW5nbGUoYnAtPnNkZXYtPmRtYV9kZXYsIG1hcHBpbmcsIFJYX1BLVF9CVUZfU1osRE1BX0ZST01fREVWSUNFKTsKIAkJCWRldl9rZnJlZV9za2JfYW55KHNrYik7CiAJCQlyZXR1cm4gLUVOT01FTTsKIAkJfQpAQCAtNzUwLDcgKzc1MCw3IEBACiAJCQkJCSAgICAgZGVzdF9pZHggKiBzaXplb2YoZGVzdF9kZXNjKSwKIAkJCQkJICAgICBETUFfQklESVJFQ1RJT05BTCk7CiAKLQlkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZShicC0+c2Rldi0+ZGV2LCBsZTMyX3RvX2NwdShzcmNfZGVzYy0+YWRkciksCisJZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2UoYnAtPnNkZXYtPmRtYV9kZXYsIGxlMzJfdG9fY3B1KHNyY19kZXNjLT5hZGRyKSwKIAkJCQkgICBSWF9QS1RfQlVGX1NaLAogCQkJCSAgIERNQV9GUk9NX0RFVklDRSk7CiB9CkBAIC03NzIsNyArNzcyLDcgQEAKIAkJc3RydWN0IHJ4X2hlYWRlciAqcmg7CiAJCXUxNiBsZW47CiAKLQkJZG1hX3N5bmNfc2luZ2xlX2Zvcl9jcHUoYnAtPnNkZXYtPmRldiwgbWFwLAorCQlkbWFfc3luY19zaW5nbGVfZm9yX2NwdShicC0+c2Rldi0+ZG1hX2RldiwgbWFwLAogCQkJCQkgICAgUlhfUEtUX0JVRl9TWiwKIAkJCQkJICAgIERNQV9GUk9NX0RFVklDRSk7CiAJCXJoID0gKHN0cnVjdCByeF9oZWFkZXIgKikgc2tiLT5kYXRhOwpAQCAtODA2LDcgKzgwNiw3IEBACiAJCQlza2Jfc2l6ZSA9IGI0NF9hbGxvY19yeF9za2IoYnAsIGNvbnMsIGJwLT5yeF9wcm9kKTsKIAkJCWlmIChza2Jfc2l6ZSA8IDApCiAJCQkJZ290byBkcm9wX2l0OwotCQkJZG1hX3VubWFwX3NpbmdsZShicC0+c2Rldi0+ZGV2LCBtYXAsCisJCQlkbWFfdW5tYXBfc2luZ2xlKGJwLT5zZGV2LT5kbWFfZGV2LCBtYXAsCiAJCQkJCSBza2Jfc2l6ZSwgRE1BX0ZST01fREVWSUNFKTsKIAkJCS8qIExlYXZlIG91dCByeF9oZWFkZXIgKi8KICAgICAgICAgICAgICAgICAJc2tiX3B1dChza2IsIGxlbiArIFJYX1BLVF9PRkZTRVQpOwpAQCAtOTY2LDI0ICs5NjYsMjQgQEAKIAkJZ290byBlcnJfb3V0OwogCX0KIAotCW1hcHBpbmcgPSBkbWFfbWFwX3NpbmdsZShicC0+c2Rldi0+ZGV2LCBza2ItPmRhdGEsIGxlbiwgRE1BX1RPX0RFVklDRSk7CisJbWFwcGluZyA9IGRtYV9tYXBfc2luZ2xlKGJwLT5zZGV2LT5kbWFfZGV2LCBza2ItPmRhdGEsIGxlbiwgRE1BX1RPX0RFVklDRSk7CiAJaWYgKGRtYV9tYXBwaW5nX2Vycm9yKG1hcHBpbmcpIHx8IG1hcHBpbmcgKyBsZW4gPiBETUFfMzBCSVRfTUFTSykgewogCQlzdHJ1Y3Qgc2tfYnVmZiAqYm91bmNlX3NrYjsKIAogCQkvKiBDaGlwIGNhbid0IGhhbmRsZSBETUEgdG8vZnJvbSA+MUdCLCB1c2UgYm91bmNlIGJ1ZmZlciAqLwogCQlpZiAoIWRtYV9tYXBwaW5nX2Vycm9yKG1hcHBpbmcpKQotCQkJZG1hX3VubWFwX3NpbmdsZShicC0+c2Rldi0+ZGV2LCBtYXBwaW5nLCBsZW4sCisJCQlkbWFfdW5tYXBfc2luZ2xlKGJwLT5zZGV2LT5kbWFfZGV2LCBtYXBwaW5nLCBsZW4sCiAJCQkJCURNQV9UT19ERVZJQ0UpOwogCiAJCWJvdW5jZV9za2IgPSBfX2Rldl9hbGxvY19za2IobGVuLCBHRlBfQVRPTUlDIHwgR0ZQX0RNQSk7CiAJCWlmICghYm91bmNlX3NrYikKIAkJCWdvdG8gZXJyX291dDsKIAotCQltYXBwaW5nID0gZG1hX21hcF9zaW5nbGUoYnAtPnNkZXYtPmRldiwgYm91bmNlX3NrYi0+ZGF0YSwKKwkJbWFwcGluZyA9IGRtYV9tYXBfc2luZ2xlKGJwLT5zZGV2LT5kbWFfZGV2LCBib3VuY2Vfc2tiLT5kYXRhLAogCQkJCQkgbGVuLCBETUFfVE9fREVWSUNFKTsKIAkJaWYgKGRtYV9tYXBwaW5nX2Vycm9yKG1hcHBpbmcpIHx8IG1hcHBpbmcgKyBsZW4gPiBETUFfMzBCSVRfTUFTSykgewogCQkJaWYgKCFkbWFfbWFwcGluZ19lcnJvcihtYXBwaW5nKSkKLQkJCQlkbWFfdW5tYXBfc2luZ2xlKGJwLT5zZGV2LT5kZXYsIG1hcHBpbmcsCisJCQkJZG1hX3VubWFwX3NpbmdsZShicC0+c2Rldi0+ZG1hX2RldiwgbWFwcGluZywKIAkJCQkJIGxlbiwgRE1BX1RPX0RFVklDRSk7CiAJCQlkZXZfa2ZyZWVfc2tiX2FueShib3VuY2Vfc2tiKTsKIAkJCWdvdG8gZXJyX291dDsKQEAgLTEwODIsNyArMTA4Miw3IEBACiAKIAkJaWYgKHJwLT5za2IgPT0gTlVMTCkKIAkJCWNvbnRpbnVlOwotCQlkbWFfdW5tYXBfc2luZ2xlKGJwLT5zZGV2LT5kZXYsIHJwLT5tYXBwaW5nLCBSWF9QS1RfQlVGX1NaLAorCQlkbWFfdW5tYXBfc2luZ2xlKGJwLT5zZGV2LT5kbWFfZGV2LCBycC0+bWFwcGluZywgUlhfUEtUX0JVRl9TWiwKIAkJCQkJRE1BX0ZST01fREVWSUNFKTsKIAkJZGV2X2tmcmVlX3NrYl9hbnkocnAtPnNrYik7CiAJCXJwLT5za2IgPSBOVUxMOwpAQCAtMTA5NCw3ICsxMDk0LDcgQEAKIAogCQlpZiAocnAtPnNrYiA9PSBOVUxMKQogCQkJY29udGludWU7Ci0JCWRtYV91bm1hcF9zaW5nbGUoYnAtPnNkZXYtPmRldiwgcnAtPm1hcHBpbmcsIHJwLT5za2ItPmxlbiwKKwkJZG1hX3VubWFwX3NpbmdsZShicC0+c2Rldi0+ZG1hX2RldiwgcnAtPm1hcHBpbmcsIHJwLT5za2ItPmxlbiwKIAkJCQkJRE1BX1RPX0RFVklDRSk7CiAJCWRldl9rZnJlZV9za2JfYW55KHJwLT5za2IpOwogCQlycC0+c2tiID0gTlVMTDsKQEAgLTExMTcsMTIgKzExMTcsMTIgQEAKIAltZW1zZXQoYnAtPnR4X3JpbmcsIDAsIEI0NF9UWF9SSU5HX0JZVEVTKTsKIAogCWlmIChicC0+ZmxhZ3MgJiBCNDRfRkxBR19SWF9SSU5HX0hBQ0spCi0JCWRtYV9zeW5jX3NpbmdsZV9mb3JfZGV2aWNlKGJwLT5zZGV2LT5kZXYsIGJwLT5yeF9yaW5nX2RtYSwKKwkJZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2UoYnAtPnNkZXYtPmRtYV9kZXYsIGJwLT5yeF9yaW5nX2RtYSwKIAkJCSAgICAgICAgICAgICAgICAgIERNQV9UQUJMRV9CWVRFUywKIAkJCSAgICAgICAgICAgICAgICAgIERNQV9CSURJUkVDVElPTkFMKTsKIAogCWlmIChicC0+ZmxhZ3MgJiBCNDRfRkxBR19UWF9SSU5HX0hBQ0spCi0JCWRtYV9zeW5jX3NpbmdsZV9mb3JfZGV2aWNlKGJwLT5zZGV2LT5kZXYsIGJwLT50eF9yaW5nX2RtYSwKKwkJZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2UoYnAtPnNkZXYtPmRtYV9kZXYsIGJwLT50eF9yaW5nX2RtYSwKIAkJCSAgICAgICAgICAgICAgICAgIERNQV9UQUJMRV9CWVRFUywKIAkJCSAgICAgICAgICAgICAgICAgIERNQV9UT19ERVZJQ0UpOwogCkBAIC0xMTQ0LDI0ICsxMTQ0LDI0IEBACiAJYnAtPnR4X2J1ZmZlcnMgPSBOVUxMOwogCWlmIChicC0+cnhfcmluZykgewogCQlpZiAoYnAtPmZsYWdzICYgQjQ0X0ZMQUdfUlhfUklOR19IQUNLKSB7Ci0JCQlkbWFfdW5tYXBfc2luZ2xlKGJwLT5zZGV2LT5kZXYsIGJwLT5yeF9yaW5nX2RtYSwKKwkJCWRtYV91bm1hcF9zaW5nbGUoYnAtPnNkZXYtPmRtYV9kZXYsIGJwLT5yeF9yaW5nX2RtYSwKIAkJCQkJRE1BX1RBQkxFX0JZVEVTLAogCQkJCQlETUFfQklESVJFQ1RJT05BTCk7CiAJCQlrZnJlZShicC0+cnhfcmluZyk7CiAJCX0gZWxzZQotCQkJZG1hX2ZyZWVfY29oZXJlbnQoYnAtPnNkZXYtPmRldiwgRE1BX1RBQkxFX0JZVEVTLAorCQkJZG1hX2ZyZWVfY29oZXJlbnQoYnAtPnNkZXYtPmRtYV9kZXYsIERNQV9UQUJMRV9CWVRFUywKIAkJCQkJICAgIGJwLT5yeF9yaW5nLCBicC0+cnhfcmluZ19kbWEpOwogCQlicC0+cnhfcmluZyA9IE5VTEw7CiAJCWJwLT5mbGFncyAmPSB+QjQ0X0ZMQUdfUlhfUklOR19IQUNLOwogCX0KIAlpZiAoYnAtPnR4X3JpbmcpIHsKIAkJaWYgKGJwLT5mbGFncyAmIEI0NF9GTEFHX1RYX1JJTkdfSEFDSykgewotCQkJZG1hX3VubWFwX3NpbmdsZShicC0+c2Rldi0+ZGV2LCBicC0+dHhfcmluZ19kbWEsCisJCQlkbWFfdW5tYXBfc2luZ2xlKGJwLT5zZGV2LT5kbWFfZGV2LCBicC0+dHhfcmluZ19kbWEsCiAJCQkJCURNQV9UQUJMRV9CWVRFUywKIAkJCQkJRE1BX1RPX0RFVklDRSk7CiAJCQlrZnJlZShicC0+dHhfcmluZyk7CiAJCX0gZWxzZQotCQkJZG1hX2ZyZWVfY29oZXJlbnQoYnAtPnNkZXYtPmRldiwgRE1BX1RBQkxFX0JZVEVTLAorCQkJZG1hX2ZyZWVfY29oZXJlbnQoYnAtPnNkZXYtPmRtYV9kZXYsIERNQV9UQUJMRV9CWVRFUywKIAkJCQkJICAgIGJwLT50eF9yaW5nLCBicC0+dHhfcmluZ19kbWEpOwogCQlicC0+dHhfcmluZyA9IE5VTEw7CiAJCWJwLT5mbGFncyAmPSB+QjQ0X0ZMQUdfVFhfUklOR19IQUNLOwpAQCAtMTE4Nyw3ICsxMTg3LDcgQEAKIAkJZ290byBvdXRfZXJyOwogCiAJc2l6ZSA9IERNQV9UQUJMRV9CWVRFUzsKLQlicC0+cnhfcmluZyA9IGRtYV9hbGxvY19jb2hlcmVudChicC0+c2Rldi0+ZGV2LCBzaXplLCAmYnAtPnJ4X3JpbmdfZG1hLCBnZnApOworCWJwLT5yeF9yaW5nID0gZG1hX2FsbG9jX2NvaGVyZW50KGJwLT5zZGV2LT5kbWFfZGV2LCBzaXplLCAmYnAtPnJ4X3JpbmdfZG1hLCBnZnApOwogCWlmICghYnAtPnJ4X3JpbmcpIHsKIAkJLyogQWxsb2NhdGlvbiBtYXkgaGF2ZSBmYWlsZWQgZHVlIHRvIHBjaV9hbGxvY19jb25zaXN0ZW50CiAJCSAgIGluc2lzdGluZyBvbiB1c2Ugb2YgR0ZQX0RNQSwgd2hpY2ggaXMgbW9yZSByZXN0cmljdGl2ZQpAQCAtMTE5OSw3ICsxMTk5LDcgQEAKIAkJaWYgKCFyeF9yaW5nKQogCQkJZ290byBvdXRfZXJyOwogCi0JCXJ4X3JpbmdfZG1hID0gZG1hX21hcF9zaW5nbGUoYnAtPnNkZXYtPmRldiwgcnhfcmluZywKKwkJcnhfcmluZ19kbWEgPSBkbWFfbWFwX3NpbmdsZShicC0+c2Rldi0+ZG1hX2RldiwgcnhfcmluZywKIAkJCSAgICAgICAgICAgICAgICAgICAgRE1BX1RBQkxFX0JZVEVTLAogCQkJICAgICAgICAgICAgICAgICAgICBETUFfQklESVJFQ1RJT05BTCk7CiAKQEAgLTEyMTQsNyArMTIxNCw3IEBACiAJCWJwLT5mbGFncyB8PSBCNDRfRkxBR19SWF9SSU5HX0hBQ0s7CiAJfQogCi0JYnAtPnR4X3JpbmcgPSBkbWFfYWxsb2NfY29oZXJlbnQoYnAtPnNkZXYtPmRldiwgc2l6ZSwgJmJwLT50eF9yaW5nX2RtYSwgZ2ZwKTsKKwlicC0+dHhfcmluZyA9IGRtYV9hbGxvY19jb2hlcmVudChicC0+c2Rldi0+ZG1hX2Rldiwgc2l6ZSwgJmJwLT50eF9yaW5nX2RtYSwgZ2ZwKTsKIAlpZiAoIWJwLT50eF9yaW5nKSB7CiAJCS8qIEFsbG9jYXRpb24gbWF5IGhhdmUgZmFpbGVkIGR1ZSB0byBkbWFfYWxsb2NfY29oZXJlbnQKIAkJICAgaW5zaXN0aW5nIG9uIHVzZSBvZiBHRlBfRE1BLCB3aGljaCBpcyBtb3JlIHJlc3RyaWN0aXZlCkBAIC0xMjI2LDcgKzEyMjYsNyBAQAogCQlpZiAoIXR4X3JpbmcpCiAJCQlnb3RvIG91dF9lcnI7CiAKLQkJdHhfcmluZ19kbWEgPSBkbWFfbWFwX3NpbmdsZShicC0+c2Rldi0+ZGV2LCB0eF9yaW5nLAorCQl0eF9yaW5nX2RtYSA9IGRtYV9tYXBfc2luZ2xlKGJwLT5zZGV2LT5kbWFfZGV2LCB0eF9yaW5nLAogCQkJICAgICAgICAgICAgICAgICAgICBETUFfVEFCTEVfQllURVMsCiAJCQkgICAgICAgICAgICAgICAgICAgIERNQV9UT19ERVZJQ0UpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9laGVhL2VoZWEuaCBiL2RyaXZlcnMvbmV0L2VoZWEvZWhlYS5oCmluZGV4IDkzYjdmYjIuLmE4ZDMyODAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2VoZWEvZWhlYS5oCisrKyBiL2RyaXZlcnMvbmV0L2VoZWEvZWhlYS5oCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSA8YXNtL2lvLmg+CiAKICNkZWZpbmUgRFJWX05BTUUJImVoZWEiCi0jZGVmaW5lIERSVl9WRVJTSU9OCSJFSEVBXzAwODkiCisjZGVmaW5lIERSVl9WRVJTSU9OCSJFSEVBXzAwOTAiCiAKIC8qIGVIRUEgY2FwYWJpbGl0eSBmbGFncyAqLwogI2RlZmluZSBETFBBUl9QT1JUX0FERF9SRU0gMQpAQCAtMzcxLDYgKzM3MSw3IEBACiAJc3RydWN0IGVoZWFfcV9za2JfYXJyIHJxMl9za2JhOwogCXN0cnVjdCBlaGVhX3Ffc2tiX2FyciBycTNfc2tiYTsKIAlzdHJ1Y3QgZWhlYV9xX3NrYl9hcnIgc3Ffc2tiYTsKKwlpbnQgc3Ffc2tiYV9zaXplOwogCXNwaW5sb2NrX3QgbmV0aWZfcXVldWU7CiAJaW50IHF1ZXVlX3N0b3BwZWQ7CiAJaW50IHN3cWVfcmVmaWxsX3RoOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZWhlYS9laGVhX21haW4uYyBiL2RyaXZlcnMvbmV0L2VoZWEvZWhlYV9tYWluLmMKaW5kZXggMDdjNzQyZC4uZjQ2MGI2MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZWhlYS9laGVhX21haW4uYworKysgYi9kcml2ZXJzL25ldC9laGVhL2VoZWFfbWFpbi5jCkBAIC0zNDksNyArMzQ5LDggQEAKIAlwci0+cnExX3NrYmEub3Nfc2ticyA9IDA7CiAKIAlpZiAodW5saWtlbHkodGVzdF9iaXQoX19FSEVBX1NUT1BfWEZFUiwgJmVoZWFfZHJpdmVyX2ZsYWdzKSkpIHsKLQkJcHItPnJxMV9za2JhLmluZGV4ID0gaW5kZXg7CisJCWlmIChucl9vZl93cWVzID4gMCkKKwkJCXByLT5ycTFfc2tiYS5pbmRleCA9IGluZGV4OwogCQlwci0+cnExX3NrYmEub3Nfc2ticyA9IGZpbGxfd3FlczsKIAkJcmV0dXJuOwogCX0KQEAgLTE0NjQsNyArMTQ2NSw5IEBACiAJCQkgIGluaXRfYXR0ci0+YWN0X25yX3J3cWVzX3JxMiwKIAkJCSAgaW5pdF9hdHRyLT5hY3RfbnJfcndxZXNfcnEzKTsKIAotCXJldCA9IGVoZWFfaW5pdF9xX3NrYmEoJnByLT5zcV9za2JhLCBpbml0X2F0dHItPmFjdF9ucl9zZW5kX3dxZXMgKyAxKTsKKwlwci0+c3Ffc2tiYV9zaXplID0gaW5pdF9hdHRyLT5hY3RfbnJfc2VuZF93cWVzICsgMTsKKworCXJldCA9IGVoZWFfaW5pdF9xX3NrYmEoJnByLT5zcV9za2JhLCBwci0+c3Ffc2tiYV9zaXplKTsKIAlyZXQgfD0gZWhlYV9pbml0X3Ffc2tiYSgmcHItPnJxMV9za2JhLCBpbml0X2F0dHItPmFjdF9ucl9yd3Flc19ycTEgKyAxKTsKIAlyZXQgfD0gZWhlYV9pbml0X3Ffc2tiYSgmcHItPnJxMl9za2JhLCBpbml0X2F0dHItPmFjdF9ucl9yd3Flc19ycTIgKyAxKTsKIAlyZXQgfD0gZWhlYV9pbml0X3Ffc2tiYSgmcHItPnJxM19za2JhLCBpbml0X2F0dHItPmFjdF9ucl9yd3Flc19ycTMgKyAxKTsKQEAgLTI2MjEsNiArMjYyNCwyMiBAQAogCX0KIH0KIAordm9pZCBlaGVhX2ZsdXNoX3NxKHN0cnVjdCBlaGVhX3BvcnQgKnBvcnQpCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgcG9ydC0+bnVtX2RlZl9xcHMgKyBwb3J0LT5udW1fYWRkX3R4X3FwczsgaSsrKSB7CisJCXN0cnVjdCBlaGVhX3BvcnRfcmVzICpwciA9ICZwb3J0LT5wb3J0X3Jlc1tpXTsKKwkJaW50IHN3cWVfbWF4ID0gcHItPnNxX3NrYmFfc2l6ZSAtIDIgLSBwci0+c3dxZV9sbF9jb3VudDsKKwkJaW50IGsgPSAwOworCQl3aGlsZSAoYXRvbWljX3JlYWQoJnByLT5zd3FlX2F2YWlsKSA8IHN3cWVfbWF4KSB7CisJCQltc2xlZXAoNSk7CisJCQlpZiAoKytrID09IDIwKQorCQkJCWJyZWFrOworCQl9CisJfQorfQorCiBpbnQgZWhlYV9zdG9wX3FwcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewogCXN0cnVjdCBlaGVhX3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihkZXYpOwpAQCAtMjg0NSw2ICsyODY0LDcgQEAKIAkJCQkJaWYgKGRldi0+ZmxhZ3MgJiBJRkZfVVApIHsKIAkJCQkJCWRvd24oJnBvcnQtPnBvcnRfbG9jayk7CiAJCQkJCQluZXRpZl9zdG9wX3F1ZXVlKGRldik7CisJCQkJCQllaGVhX2ZsdXNoX3NxKHBvcnQpOwogCQkJCQkJcmV0ID0gZWhlYV9zdG9wX3FwcyhkZXYpOwogCQkJCQkJaWYgKHJldCkgewogCQkJCQkJCXVwKCZwb3J0LT5wb3J0X2xvY2spOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZm9yY2VkZXRoLmMgYi9kcml2ZXJzL25ldC9mb3JjZWRldGguYwppbmRleCA0MTlmNTMzLi45ZjA4OGE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9mb3JjZWRldGguYworKysgYi9kcml2ZXJzL25ldC9mb3JjZWRldGguYwpAQCAtNTMxNiw4ICs1MzE2LDcgQEAKIAogCS8qIGNoZWNrIHRoZSB3b3JrYXJvdW5kIGJpdCBmb3IgY29ycmVjdCBtYWMgYWRkcmVzcyBvcmRlciAqLwogCXR4cmVnID0gcmVhZGwoYmFzZSArIE52UmVnVHJhbnNtaXRQb2xsKTsKLQlpZiAoKHR4cmVnICYgTlZSRUdfVFJBTlNNSVRQT0xMX01BQ19BRERSX1JFVikgfHwKLQkgICAgKGlkLT5kcml2ZXJfZGF0YSAmIERFVl9IQVNfQ09SUkVDVF9NQUNBRERSKSkgeworCWlmIChpZC0+ZHJpdmVyX2RhdGEgJiBERVZfSEFTX0NPUlJFQ1RfTUFDQUREUikgewogCQkvKiBtYWMgYWRkcmVzcyBpcyBhbHJlYWR5IGluIGNvcnJlY3Qgb3JkZXIgKi8KIAkJZGV2LT5kZXZfYWRkclswXSA9IChucC0+b3JpZ19tYWNbMF0gPj4gIDApICYgMHhmZjsKIAkJZGV2LT5kZXZfYWRkclsxXSA9IChucC0+b3JpZ19tYWNbMF0gPj4gIDgpICYgMHhmZjsKQEAgLTUzMjUsNiArNTMyNCwyMiBAQAogCQlkZXYtPmRldl9hZGRyWzNdID0gKG5wLT5vcmlnX21hY1swXSA+PiAyNCkgJiAweGZmOwogCQlkZXYtPmRldl9hZGRyWzRdID0gKG5wLT5vcmlnX21hY1sxXSA+PiAgMCkgJiAweGZmOwogCQlkZXYtPmRldl9hZGRyWzVdID0gKG5wLT5vcmlnX21hY1sxXSA+PiAgOCkgJiAweGZmOworCX0gZWxzZSBpZiAodHhyZWcgJiBOVlJFR19UUkFOU01JVFBPTExfTUFDX0FERFJfUkVWKSB7CisJCS8qIG1hYyBhZGRyZXNzIGlzIGFscmVhZHkgaW4gY29ycmVjdCBvcmRlciAqLworCQlkZXYtPmRldl9hZGRyWzBdID0gKG5wLT5vcmlnX21hY1swXSA+PiAgMCkgJiAweGZmOworCQlkZXYtPmRldl9hZGRyWzFdID0gKG5wLT5vcmlnX21hY1swXSA+PiAgOCkgJiAweGZmOworCQlkZXYtPmRldl9hZGRyWzJdID0gKG5wLT5vcmlnX21hY1swXSA+PiAxNikgJiAweGZmOworCQlkZXYtPmRldl9hZGRyWzNdID0gKG5wLT5vcmlnX21hY1swXSA+PiAyNCkgJiAweGZmOworCQlkZXYtPmRldl9hZGRyWzRdID0gKG5wLT5vcmlnX21hY1sxXSA+PiAgMCkgJiAweGZmOworCQlkZXYtPmRldl9hZGRyWzVdID0gKG5wLT5vcmlnX21hY1sxXSA+PiAgOCkgJiAweGZmOworCQkvKgorCQkgKiBTZXQgb3JpZyBtYWMgYWRkcmVzcyBiYWNrIHRvIHRoZSByZXZlcnNlZCB2ZXJzaW9uLgorCQkgKiBUaGlzIGZsYWcgd2lsbCBiZSBjbGVhcmVkIGR1cmluZyBsb3cgcG93ZXIgdHJhbnNpdGlvbi4KKwkJICogVGhlcmVmb3JlLCB3ZSBzaG91bGQgYWx3YXlzIHB1dCBiYWNrIHRoZSByZXZlcnNlZCBhZGRyZXNzLgorCQkgKi8KKwkJbnAtPm9yaWdfbWFjWzBdID0gKGRldi0+ZGV2X2FkZHJbNV0gPDwgMCkgKyAoZGV2LT5kZXZfYWRkcls0XSA8PCA4KSArCisJCQkoZGV2LT5kZXZfYWRkclszXSA8PCAxNikgKyAoZGV2LT5kZXZfYWRkclsyXSA8PCAyNCk7CisJCW5wLT5vcmlnX21hY1sxXSA9IChkZXYtPmRldl9hZGRyWzFdIDw8IDApICsgKGRldi0+ZGV2X2FkZHJbMF0gPDwgOCk7CiAJfSBlbHNlIHsKIAkJLyogbmVlZCB0byByZXZlcnNlIG1hYyBhZGRyZXNzIHRvIGNvcnJlY3Qgb3JkZXIgKi8KIAkJZGV2LT5kZXZfYWRkclswXSA9IChucC0+b3JpZ19tYWNbMV0gPj4gIDgpICYgMHhmZjsKQEAgLTU1OTUsNyArNTYxMCw5IEBACiBzdGF0aWMgaW50IG52X3Jlc3VtZShzdHJ1Y3QgcGNpX2RldiAqcGRldikKIHsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpOworCXU4IF9faW9tZW0gKmJhc2UgPSBnZXRfaHdiYXNlKGRldik7CiAJaW50IHJjID0gMDsKKwl1MzIgdHhyZWc7CiAKIAlpZiAoIW5ldGlmX3J1bm5pbmcoZGV2KSkKIAkJZ290byBvdXQ7CkBAIC01NjA2LDYgKzU2MjMsMTEgQEAKIAlwY2lfcmVzdG9yZV9zdGF0ZShwZGV2KTsKIAlwY2lfZW5hYmxlX3dha2UocGRldiwgUENJX0QwLCAwKTsKIAorCS8qIHJlc3RvcmUgbWFjIGFkZHJlc3MgcmV2ZXJzZSBmbGFnICovCisJdHhyZWcgPSByZWFkbChiYXNlICsgTnZSZWdUcmFuc21pdFBvbGwpOworCXR4cmVnIHw9IE5WUkVHX1RSQU5TTUlUUE9MTF9NQUNfQUREUl9SRVY7CisJd3JpdGVsKHR4cmVnLCBiYXNlICsgTnZSZWdUcmFuc21pdFBvbGwpOworCiAJcmMgPSBudl9vcGVuKGRldik7CiBvdXQ6CiAJcmV0dXJuIHJjOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZnNfZW5ldC9mc19lbmV0LW1haW4uYyBiL2RyaXZlcnMvbmV0L2ZzX2VuZXQvZnNfZW5ldC1tYWluLmMKaW5kZXggYWY4NjljZi4uOTQwZTIwNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZnNfZW5ldC9mc19lbmV0LW1haW4uYworKysgYi9kcml2ZXJzL25ldC9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jCkBAIC04MzUsNyArODM1LDggQEAKIAogCW5ldGlmX3N0b3BfcXVldWUoZGV2KTsKIAluZXRpZl9jYXJyaWVyX29mZihkZXYpOwotCW5hcGlfZGlzYWJsZSgmZmVwLT5uYXBpKTsKKwlpZiAoZmVwLT5mcGktPnVzZV9uYXBpKQorCQluYXBpX2Rpc2FibGUoJmZlcC0+bmFwaSk7CiAJcGh5X3N0b3AoZmVwLT5waHlkZXYpOwogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmZlcC0+bG9jaywgZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWFjYi5jIGIvZHJpdmVycy9uZXQvbWFjYi5jCmluZGV4IDFkMjEwZWQuLjQ4OWM3YzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L21hY2IuYworKysgYi9kcml2ZXJzL25ldC9tYWNiLmMKQEAgLTI0MiwxMiArMjQyLDEyIEBACiAJLyogRW5hYmxlIG1hbmFnbWVudCBwb3J0ICovCiAJbWFjYl93cml0ZWwoYnAsIE5DUiwgTUFDQl9CSVQoTVBFKSk7CiAKLQlicC0+bWlpX2J1cy5uYW1lID0gIk1BQ0JfbWlpX2J1cyIsCi0JYnAtPm1paV9idXMucmVhZCA9ICZtYWNiX21kaW9fcmVhZCwKLQlicC0+bWlpX2J1cy53cml0ZSA9ICZtYWNiX21kaW9fd3JpdGUsCi0JYnAtPm1paV9idXMucmVzZXQgPSAmbWFjYl9tZGlvX3Jlc2V0LAotCWJwLT5taWlfYnVzLmlkID0gYnAtPnBkZXYtPmlkLAotCWJwLT5taWlfYnVzLnByaXYgPSBicCwKKwlicC0+bWlpX2J1cy5uYW1lID0gIk1BQ0JfbWlpX2J1cyI7CisJYnAtPm1paV9idXMucmVhZCA9ICZtYWNiX21kaW9fcmVhZDsKKwlicC0+bWlpX2J1cy53cml0ZSA9ICZtYWNiX21kaW9fd3JpdGU7CisJYnAtPm1paV9idXMucmVzZXQgPSAmbWFjYl9tZGlvX3Jlc2V0OworCWJwLT5taWlfYnVzLmlkID0gYnAtPnBkZXYtPmlkOworCWJwLT5taWlfYnVzLnByaXYgPSBicDsKIAlicC0+bWlpX2J1cy5kZXYgPSAmYnAtPmRldi0+ZGV2OwogCXBkYXRhID0gYnAtPnBkZXYtPmRldi5wbGF0Zm9ybV9kYXRhOwogCkBAIC0xMjU3LDYgKzEyNTcsOCBAQAogCiAJaWYgKGRldikgewogCQlicCA9IG5ldGRldl9wcml2KGRldik7CisJCWlmIChicC0+cGh5X2RldikKKwkJCXBoeV9kaXNjb25uZWN0KGJwLT5waHlfZGV2KTsKIAkJbWRpb2J1c191bnJlZ2lzdGVyKCZicC0+bWlpX2J1cyk7CiAJCWtmcmVlKGJwLT5taWlfYnVzLmlycSk7CiAJCXVucmVnaXN0ZXJfbmV0ZGV2KGRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZXRjb25zb2xlLmMgYi9kcml2ZXJzL25ldC9uZXRjb25zb2xlLmMKaW5kZXggNTAxZTQ1MS4uNjY1MzQxZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbmV0Y29uc29sZS5jCisrKyBiL2RyaXZlcnMvbmV0L25ldGNvbnNvbGUuYwpAQCAtNzMwLDcgKzczMCw3IEBACiAKIHN0YXRpYyBzdHJ1Y3QgY29uc29sZSBuZXRjb25zb2xlID0gewogCS5uYW1lCT0gIm5ldGNvbiIsCi0JLmZsYWdzCT0gQ09OX0VOQUJMRUQgfCBDT05fUFJJTlRCVUZGRVIsCisJLmZsYWdzCT0gQ09OX0VOQUJMRUQsCiAJLndyaXRlCT0gd3JpdGVfbXNnLAogfTsKIApAQCAtNzQ5LDYgKzc0OSw5IEBACiAJCQkJZXJyID0gUFRSX0VSUihudCk7CiAJCQkJZ290byBmYWlsOwogCQkJfQorCQkJLyogRHVtcCBleGlzdGluZyBwcmludGtzIHdoZW4gd2UgcmVnaXN0ZXIgKi8KKwkJCW5ldGNvbnNvbGUuZmxhZ3MgfD0gQ09OX1BSSU5UQlVGRkVSOworCiAJCQlzcGluX2xvY2tfaXJxc2F2ZSgmdGFyZ2V0X2xpc3RfbG9jaywgZmxhZ3MpOwogCQkJbGlzdF9hZGQoJm50LT5saXN0LCAmdGFyZ2V0X2xpc3QpOwogCQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdGFyZ2V0X2xpc3RfbG9jaywgZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHMzX2dlbGljX3dpcmVsZXNzLmMgYi9kcml2ZXJzL25ldC9wczNfZ2VsaWNfd2lyZWxlc3MuYwppbmRleCBkZGJjNmU0Li5jMTZkZTUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wczNfZ2VsaWNfd2lyZWxlc3MuYworKysgYi9kcml2ZXJzL25ldC9wczNfZ2VsaWNfd2lyZWxlc3MuYwpAQCAtNTEyLDEzICs1MTIsMTggQEAKIAkJIGRhdGEsIGxlbik7CiAJbWVtc2V0KGllX2luZm8sIDAsIHNpemVvZihzdHJ1Y3QgaWVfaW5mbykpOwogCi0Jd2hpbGUgKDAgPCBkYXRhX2xlZnQpIHsKKwl3aGlsZSAoMiA8PSBkYXRhX2xlZnQpIHsKIAkJaXRlbV9pZCA9ICpwb3MrKzsKIAkJaXRlbV9sZW4gPSAqcG9zKys7CisJCWRhdGFfbGVmdCAtPSAyOworCisJCWlmIChkYXRhX2xlZnQgPCBpdGVtX2xlbikKKwkJCWJyZWFrOwogCiAJCXN3aXRjaCAoaXRlbV9pZCkgewogCQljYXNlIE1GSUVfVFlQRV9HRU5FUklDOgotCQkJaWYgKCFtZW1jbXAocG9zLCB3cGFfb3VpLCBPVUlfTEVOKSAmJgorCQkJaWYgKChPVUlfTEVOICsgMSA8PSBpdGVtX2xlbikgJiYKKwkJCSAgICAhbWVtY21wKHBvcywgd3BhX291aSwgT1VJX0xFTikgJiYKIAkJCSAgICBwb3NbT1VJX0xFTl0gPT0gMHgwMSkgewogCQkJCWllX2luZm8tPndwYS5kYXRhID0gcG9zIC0gMjsKIAkJCQlpZV9pbmZvLT53cGEubGVuID0gaXRlbV9sZW4gKyAyOwpAQCAtNTM1LDcgKzU0MCw3IEBACiAJCQlicmVhazsKIAkJfQogCQlwb3MgKz0gaXRlbV9sZW47Ci0JCWRhdGFfbGVmdCAtPSBpdGVtX2xlbiArIDI7CisJCWRhdGFfbGVmdCAtPSBpdGVtX2xlbjsKIAl9CiAJcHJfZGVidWcoIiVzOiB3cGE9JXAsJWQgd3BhMj0lcCwlZFxuIiwgX19mdW5jX18sCiAJCSBpZV9pbmZvLT53cGEuZGF0YSwgaWVfaW5mby0+d3BhLmxlbiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3NjOTIwMzEuYyBiL2RyaXZlcnMvbmV0L3NjOTIwMzEuYwppbmRleCAzN2I0MjM5Li4xNWZjZWU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9zYzkyMDMxLmMKKysrIGIvZHJpdmVycy9uZXQvc2M5MjAzMS5jCkBAIC0xNDQ2LDYgKzE0NDYsNyBAQAogCX0KIAogCXBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBkZXYpOworCVNFVF9ORVRERVZfREVWKGRldiwgJnBkZXYtPmRldik7CiAKICNpZiBTQzkyMDMxX1VTRV9CQVIgPT0gMAogCWRldi0+bWVtX3N0YXJ0ID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBkZXYsIFNDOTIwMzFfVVNFX0JBUik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9za3kyLmMgYi9kcml2ZXJzL25ldC9za3kyLmMKaW5kZXggODUzYmNlMC4uZjIyNmJjYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2t5Mi5jCisrKyBiL2RyaXZlcnMvbmV0L3NreTIuYwpAQCAtMTU0LDYgKzE1NCw3IEBACiAJIkVDIiwJCS8qIDB4YjYgKi8KIAkiRkUiLAkJLyogMHhiNyAqLwogCSJGRSsiLAkJLyogMHhiOCAqLworCSJTdXByZW1lIiwJLyogMHhiOSAqLwogfTsKIAogc3RhdGljIHZvaWQgc2t5Ml9zZXRfbXVsdGljYXN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc21jOTF4LmMgYi9kcml2ZXJzL25ldC9zbWM5MXguYwppbmRleCA0MDIwZTllLi42M2E1NGUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9zbWM5MXguYworKysgYi9kcml2ZXJzL25ldC9zbWM5MXguYwpAQCAtMTMyNiw5ICsxMzI2LDExIEBACiAJU01DX1NFVF9JTlRfTUFTSyhtYXNrKTsKIAlzcGluX3VubG9jaygmbHAtPmxvY2spOwogCisjaWZuZGVmIENPTkZJR19ORVRfUE9MTF9DT05UUk9MTEVSCiAJaWYgKHRpbWVvdXQgPT0gTUFYX0lSUV9MT09QUykKIAkJUFJJTlRLKCIlczogc3B1cmlvdXMgaW50ZXJydXB0IChtYXNrID0gMHglMDJ4KVxuIiwKIAkJICAgICAgIGRldi0+bmFtZSwgbWFzayk7CisjZW5kaWYKIAlEQkcoMywgIiVzOiBJbnRlcnJ1cHQgZG9uZSAoJWQgbG9vcHMpXG4iLAogCSAgICAgICBkZXYtPm5hbWUsIE1BWF9JUlFfTE9PUFMgLSB0aW1lb3V0KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdGczLmMgYi9kcml2ZXJzL25ldC90ZzMuYwppbmRleCBkNDY1NWIyLi45NjA0M2M1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90ZzMuYworKysgYi9kcml2ZXJzL25ldC90ZzMuYwpAQCAtNjQsOCArNjQsOCBAQAogCiAjZGVmaW5lIERSVl9NT0RVTEVfTkFNRQkJInRnMyIKICNkZWZpbmUgUEZYIERSVl9NT0RVTEVfTkFNRQkiOiAiCi0jZGVmaW5lIERSVl9NT0RVTEVfVkVSU0lPTgkiMy44OSIKLSNkZWZpbmUgRFJWX01PRFVMRV9SRUxEQVRFCSJBcHJpbCAwMywgMjAwOCIKKyNkZWZpbmUgRFJWX01PRFVMRV9WRVJTSU9OCSIzLjkwIgorI2RlZmluZSBEUlZfTU9EVUxFX1JFTERBVEUJIkFwcmlsIDEyLCAyMDA4IgogCiAjZGVmaW5lIFRHM19ERUZfTUFDX01PREUJMAogI2RlZmluZSBURzNfREVGX1JYX01PREUJCTAKQEAgLTEyNTc4LDcgKzEyNTc4LDggQEAKIAkJCQkgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpCiB7CiAJc3RhdGljIGludCB0ZzNfdmVyc2lvbl9wcmludGVkID0gMDsKLQl1bnNpZ25lZCBsb25nIHRnM3JlZ19iYXNlLCB0ZzNyZWdfbGVuOworCXJlc291cmNlX3NpemVfdCB0ZzNyZWdfYmFzZTsKKwl1bnNpZ25lZCBsb25nIHRnM3JlZ19sZW47CiAJc3RydWN0IG5ldF9kZXZpY2UgKmRldjsKIAlzdHJ1Y3QgdGczICp0cDsKIAlpbnQgZXJyLCBwbV9jYXA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90dW4uYyBiL2RyaXZlcnMvbmV0L3R1bi5jCmluZGV4IDdiODE2YTAuLjViNWQ4NzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3R1bi5jCisrKyBiL2RyaXZlcnMvbmV0L3R1bi5jCkBAIC02NywxMCArNjcsNDMgQEAKICNpbmNsdWRlIDxhc20vc3lzdGVtLmg+CiAjaW5jbHVkZSA8YXNtL3VhY2Nlc3MuaD4KIAorLyogVW5jb21tZW50IHRvIGVuYWJsZSBkZWJ1Z2dpbmcgKi8KKy8qICNkZWZpbmUgVFVOX0RFQlVHIDEgKi8KKwogI2lmZGVmIFRVTl9ERUJVRwogc3RhdGljIGludCBkZWJ1ZzsKKworI2RlZmluZSBEQkcgIGlmKHR1bi0+ZGVidWcpcHJpbnRrCisjZGVmaW5lIERCRzEgaWYoZGVidWc9PTIpcHJpbnRrCisjZWxzZQorI2RlZmluZSBEQkcoIGEuLi4gKQorI2RlZmluZSBEQkcxKCBhLi4uICkKICNlbmRpZgogCitzdHJ1Y3QgdHVuX3N0cnVjdCB7CisJc3RydWN0IGxpc3RfaGVhZCAgICAgICAgbGlzdDsKKwl1bnNpZ25lZCBsb25nIAkJZmxhZ3M7CisJaW50CQkJYXR0YWNoZWQ7CisJdWlkX3QJCQlvd25lcjsKKwlnaWRfdAkJCWdyb3VwOworCisJd2FpdF9xdWV1ZV9oZWFkX3QJcmVhZF93YWl0OworCXN0cnVjdCBza19idWZmX2hlYWQJcmVhZHE7CisKKwlzdHJ1Y3QgbmV0X2RldmljZQkqZGV2OworCisJc3RydWN0IGZhc3luY19zdHJ1Y3QgICAgKmZhc3luYzsKKworCXVuc2lnbmVkIGxvbmcgaWZfZmxhZ3M7CisJdTggZGV2X2FkZHJbRVRIX0FMRU5dOworCXUzMiBjaHJfZmlsdGVyWzJdOworCXUzMiBuZXRfZmlsdGVyWzJdOworCisjaWZkZWYgVFVOX0RFQlVHCisJaW50IGRlYnVnOworI2VuZGlmCit9OworCiAvKiBOZXR3b3JrIGRldmljZSBwYXJ0IG9mIHRoZSBkcml2ZXIgKi8KIAogc3RhdGljIExJU1RfSEVBRCh0dW5fZGV2X2xpc3QpOwpAQCAtMjUzLDggKzI4NiwxMSBAQAogCQkJcmV0dXJuIC1FRkFVTFQ7CiAJfQogCi0JaWYgKCh0dW4tPmZsYWdzICYgVFVOX1RZUEVfTUFTSykgPT0gVFVOX1RBUF9ERVYpCisJaWYgKCh0dW4tPmZsYWdzICYgVFVOX1RZUEVfTUFTSykgPT0gVFVOX1RBUF9ERVYpIHsKIAkJYWxpZ24gPSBORVRfSVBfQUxJR047CisJCWlmICh1bmxpa2VseShsZW4gPCBFVEhfSExFTikpCisJCQlyZXR1cm4gLUVJTlZBTDsKKwl9CiAKIAlpZiAoIShza2IgPSBhbGxvY19za2IobGVuICsgYWxpZ24sIEdGUF9LRVJORUwpKSkgewogCQl0dW4tPmRldi0+c3RhdHMucnhfZHJvcHBlZCsrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdWNjX2dldGguYyBiL2RyaXZlcnMvbmV0L3VjY19nZXRoLmMKaW5kZXggOGNjMzE2Ni4uMGVlNGMxNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdWNjX2dldGguYworKysgYi9kcml2ZXJzL25ldC91Y2NfZ2V0aC5jCkBAIC0zODMzLDYgKzM4MzMsNyBAQAogCXN0cnVjdCBkZXZpY2Vfbm9kZSAqcGh5OwogCWludCBlcnIsIHVjY19udW0sIG1heF9zcGVlZCA9IDA7CiAJY29uc3QgcGhhbmRsZSAqcGg7CisJY29uc3QgdTMyICpmaXhlZF9saW5rOwogCWNvbnN0IHVuc2lnbmVkIGludCAqcHJvcDsKIAljb25zdCBjaGFyICpzcHJvcDsKIAljb25zdCB2b2lkICptYWNfYWRkcjsKQEAgLTM5MjMsMTggKzM5MjQsMzggQEAKIAogCXVnX2luZm8tPnVmX2luZm8ucmVncyA9IHJlcy5zdGFydDsKIAl1Z19pbmZvLT51Zl9pbmZvLmlycSA9IGlycV9vZl9wYXJzZV9hbmRfbWFwKG5wLCAwKTsKKwlmaXhlZF9saW5rID0gb2ZfZ2V0X3Byb3BlcnR5KG5wLCAiZml4ZWQtbGluayIsIE5VTEwpOworCWlmIChmaXhlZF9saW5rKSB7CisJCXVnX2luZm8tPm1kaW9fYnVzID0gMDsKKwkJdWdfaW5mby0+cGh5X2FkZHJlc3MgPSBmaXhlZF9saW5rWzBdOworCQlwaHkgPSBOVUxMOworCX0gZWxzZSB7CisJCXBoID0gb2ZfZ2V0X3Byb3BlcnR5KG5wLCAicGh5LWhhbmRsZSIsIE5VTEwpOworCQlwaHkgPSBvZl9maW5kX25vZGVfYnlfcGhhbmRsZSgqcGgpOwogCi0JcGggPSBvZl9nZXRfcHJvcGVydHkobnAsICJwaHktaGFuZGxlIiwgTlVMTCk7Ci0JcGh5ID0gb2ZfZmluZF9ub2RlX2J5X3BoYW5kbGUoKnBoKTsKKwkJaWYgKHBoeSA9PSBOVUxMKQorCQkJcmV0dXJuIC1FTk9ERVY7CiAKLQlpZiAocGh5ID09IE5VTEwpCi0JCXJldHVybiAtRU5PREVWOworCQkvKiBzZXQgdGhlIFBIWSBhZGRyZXNzICovCisJCXByb3AgPSBvZl9nZXRfcHJvcGVydHkocGh5LCAicmVnIiwgTlVMTCk7CisJCWlmIChwcm9wID09IE5VTEwpCisJCQlyZXR1cm4gLTE7CisJCXVnX2luZm8tPnBoeV9hZGRyZXNzID0gKnByb3A7CiAKLQkvKiBzZXQgdGhlIFBIWSBhZGRyZXNzICovCi0JcHJvcCA9IG9mX2dldF9wcm9wZXJ0eShwaHksICJyZWciLCBOVUxMKTsKLQlpZiAocHJvcCA9PSBOVUxMKQotCQlyZXR1cm4gLTE7Ci0JdWdfaW5mby0+cGh5X2FkZHJlc3MgPSAqcHJvcDsKKwkJLyogU2V0IHRoZSBidXMgaWQgKi8KKwkJbWRpbyA9IG9mX2dldF9wYXJlbnQocGh5KTsKKworCQlpZiAobWRpbyA9PSBOVUxMKQorCQkJcmV0dXJuIC0xOworCisJCWVyciA9IG9mX2FkZHJlc3NfdG9fcmVzb3VyY2UobWRpbywgMCwgJnJlcyk7CisJCW9mX25vZGVfcHV0KG1kaW8pOworCisJCWlmIChlcnIpCisJCQlyZXR1cm4gLTE7CisKKwkJdWdfaW5mby0+bWRpb19idXMgPSByZXMuc3RhcnQ7CisJfQogCiAJLyogZ2V0IHRoZSBwaHkgaW50ZXJmYWNlIHR5cGUsIG9yIGRlZmF1bHQgdG8gTUlJICovCiAJcHJvcCA9IG9mX2dldF9wcm9wZXJ0eShucCwgInBoeS1jb25uZWN0aW9uLXR5cGUiLCBOVUxMKTsKQEAgLTM5NzksMjAgKzQwMDAsNiBAQAogCQl1Z19pbmZvLT5udW1UaHJlYWRzUnggPSBVQ0NfR0VUSF9OVU1fT0ZfVEhSRUFEU180OwogCX0KIAotCS8qIFNldCB0aGUgYnVzIGlkICovCi0JbWRpbyA9IG9mX2dldF9wYXJlbnQocGh5KTsKLQotCWlmIChtZGlvID09IE5VTEwpCi0JCXJldHVybiAtMTsKLQotCWVyciA9IG9mX2FkZHJlc3NfdG9fcmVzb3VyY2UobWRpbywgMCwgJnJlcyk7Ci0Jb2Zfbm9kZV9wdXQobWRpbyk7Ci0KLQlpZiAoZXJyKQotCQlyZXR1cm4gLTE7Ci0KLQl1Z19pbmZvLT5tZGlvX2J1cyA9IHJlcy5zdGFydDsKLQogCWlmIChuZXRpZl9tc2dfcHJvYmUoJmRlYnVnKSkKIAkJcHJpbnRrKEtFUk5fSU5GTyAidWNjX2dldGg6IFVDQyUxZCBhdCAweCU4eCAoaXJxID0gJWQpIFxuIiwKIAkJCXVnX2luZm8tPnVmX2luZm8udWNjX251bSArIDEsIHVnX2luZm8tPnVmX2luZm8ucmVncywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dhbi9LY29uZmlnIGIvZHJpdmVycy9uZXQvd2FuL0tjb25maWcKaW5kZXggYTNkZjA5ZS4uODAwNWRkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2FuL0tjb25maWcKKysrIGIvZHJpdmVycy9uZXQvd2FuL0tjb25maWcKQEAgLTE1MCw5ICsxNTAsMTMgQEAKIAogY29uZmlnIEhETENfUFBQCiAJdHJpc3RhdGUgIlN5bmNocm9ub3VzIFBvaW50LXRvLVBvaW50IFByb3RvY29sIChQUFApIHN1cHBvcnQiCi0JZGVwZW5kcyBvbiBIRExDCisJZGVwZW5kcyBvbiBIRExDICYmIEJST0tFTgogCWhlbHAKIAkgIEdlbmVyaWMgSERMQyBkcml2ZXIgc3VwcG9ydGluZyBQUFAgb3ZlciBXQU4gY29ubmVjdGlvbnMuCisJICBUaGlzIG1vZHVsZSBpcyBjdXJyZW50bHkgYnJva2VuIGFuZCB3aWxsIGNhdXNlIGEga2VybmVsIHBhbmljCisJICB3aGVuIGEgZGV2aWNlIGNvbmZpZ3VyZWQgaW4gUFBQIG1vZGUgaXMgYWN0aXZhdGVkLgorCisJICBJdCB3aWxsIGJlIHJlcGxhY2VkIGJ5IG5ldyBQUFAgaW1wbGVtZW50YXRpb24gaW4gTGludXggMi42LjI2LgogCiAJICBJZiB1bnN1cmUsIHNheSBOLgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvZG1hLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvZG1hLmMKaW5kZXggOTQ4ZWIxZi4uNDhlOTEyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL2RtYS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9kbWEuYwpAQCAtMzczLDEwICszNzMsMTAgQEAKIAlkbWFfYWRkcl90IGRtYWFkZHI7CiAKIAlpZiAodHgpIHsKLQkJZG1hYWRkciA9IGRtYV9tYXBfc2luZ2xlKHJpbmctPmRldi0+ZGV2LT5kZXYsCisJCWRtYWFkZHIgPSBkbWFfbWFwX3NpbmdsZShyaW5nLT5kZXYtPmRldi0+ZG1hX2RldiwKIAkJCQkJIGJ1ZiwgbGVuLCBETUFfVE9fREVWSUNFKTsKIAl9IGVsc2UgewotCQlkbWFhZGRyID0gZG1hX21hcF9zaW5nbGUocmluZy0+ZGV2LT5kZXYtPmRldiwKKwkJZG1hYWRkciA9IGRtYV9tYXBfc2luZ2xlKHJpbmctPmRldi0+ZGV2LT5kbWFfZGV2LAogCQkJCQkgYnVmLCBsZW4sIERNQV9GUk9NX0RFVklDRSk7CiAJfQogCkBAIC0zODgsOSArMzg4LDEwIEBACiAJCQkgIGRtYV9hZGRyX3QgYWRkciwgc2l6ZV90IGxlbiwgaW50IHR4KQogewogCWlmICh0eCkgewotCQlkbWFfdW5tYXBfc2luZ2xlKHJpbmctPmRldi0+ZGV2LT5kZXYsIGFkZHIsIGxlbiwgRE1BX1RPX0RFVklDRSk7CisJCWRtYV91bm1hcF9zaW5nbGUocmluZy0+ZGV2LT5kZXYtPmRtYV9kZXYsCisJCQkJIGFkZHIsIGxlbiwgRE1BX1RPX0RFVklDRSk7CiAJfSBlbHNlIHsKLQkJZG1hX3VubWFwX3NpbmdsZShyaW5nLT5kZXYtPmRldi0+ZGV2LAorCQlkbWFfdW5tYXBfc2luZ2xlKHJpbmctPmRldi0+ZGV2LT5kbWFfZGV2LAogCQkJCSBhZGRyLCBsZW4sIERNQV9GUk9NX0RFVklDRSk7CiAJfQogfQpAQCAtNDAwLDcgKzQwMSw3IEBACiAJCQkJIGRtYV9hZGRyX3QgYWRkciwgc2l6ZV90IGxlbikKIHsKIAlCNDNfV0FSTl9PTihyaW5nLT50eCk7Ci0JZG1hX3N5bmNfc2luZ2xlX2Zvcl9jcHUocmluZy0+ZGV2LT5kZXYtPmRldiwKKwlkbWFfc3luY19zaW5nbGVfZm9yX2NwdShyaW5nLT5kZXYtPmRldi0+ZG1hX2RldiwKIAkJCQlhZGRyLCBsZW4sIERNQV9GUk9NX0RFVklDRSk7CiB9CiAKQEAgLTQwOSw3ICs0MTAsNyBAQAogCQkJCSAgICBkbWFfYWRkcl90IGFkZHIsIHNpemVfdCBsZW4pCiB7CiAJQjQzX1dBUk5fT04ocmluZy0+dHgpOwotCWRtYV9zeW5jX3NpbmdsZV9mb3JfZGV2aWNlKHJpbmctPmRldi0+ZGV2LT5kZXYsCisJZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2UocmluZy0+ZGV2LT5kZXYtPmRtYV9kZXYsCiAJCQkJICAgYWRkciwgbGVuLCBETUFfRlJPTV9ERVZJQ0UpOwogfQogCkBAIC00MjUsNyArNDI2LDcgQEAKIAogc3RhdGljIGludCBhbGxvY19yaW5nbWVtb3J5KHN0cnVjdCBiNDNfZG1hcmluZyAqcmluZykKIHsKLQlzdHJ1Y3QgZGV2aWNlICpkZXYgPSByaW5nLT5kZXYtPmRldi0+ZGV2OworCXN0cnVjdCBkZXZpY2UgKmRtYV9kZXYgPSByaW5nLT5kZXYtPmRldi0+ZG1hX2RldjsKIAlnZnBfdCBmbGFncyA9IEdGUF9LRVJORUw7CiAKIAkvKiBUaGUgc3BlY3MgY2FsbCBmb3IgNEsgYnVmZmVycyBmb3IgMzAtIGFuZCAzMi1iaXQgRE1BIHdpdGggNEsKQEAgLTQzOSw3ICs0NDAsNyBAQAogCSAqLwogCWlmIChyaW5nLT50eXBlID09IEI0M19ETUFfNjRCSVQpCiAJCWZsYWdzIHw9IEdGUF9ETUE7Ci0JcmluZy0+ZGVzY2Jhc2UgPSBkbWFfYWxsb2NfY29oZXJlbnQoZGV2LCBCNDNfRE1BX1JJTkdNRU1TSVpFLAorCXJpbmctPmRlc2NiYXNlID0gZG1hX2FsbG9jX2NvaGVyZW50KGRtYV9kZXYsIEI0M19ETUFfUklOR01FTVNJWkUsCiAJCQkJCSAgICAmKHJpbmctPmRtYWJhc2UpLCBmbGFncyk7CiAJaWYgKCFyaW5nLT5kZXNjYmFzZSkgewogCQliNDNlcnIocmluZy0+ZGV2LT53bCwgIkRNQSByaW5nbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkXG4iKTsKQEAgLTQ1Miw5ICs0NTMsOSBAQAogCiBzdGF0aWMgdm9pZCBmcmVlX3JpbmdtZW1vcnkoc3RydWN0IGI0M19kbWFyaW5nICpyaW5nKQogewotCXN0cnVjdCBkZXZpY2UgKmRldiA9IHJpbmctPmRldi0+ZGV2LT5kZXY7CisJc3RydWN0IGRldmljZSAqZG1hX2RldiA9IHJpbmctPmRldi0+ZGV2LT5kbWFfZGV2OwogCi0JZG1hX2ZyZWVfY29oZXJlbnQoZGV2LCBCNDNfRE1BX1JJTkdNRU1TSVpFLAorCWRtYV9mcmVlX2NvaGVyZW50KGRtYV9kZXYsIEI0M19ETUFfUklOR01FTVNJWkUsCiAJCQkgIHJpbmctPmRlc2NiYXNlLCByaW5nLT5kbWFiYXNlKTsKIH0KIApAQCAtODU0LDcgKzg1NSw3IEBACiAJCQlnb3RvIGVycl9rZnJlZV9tZXRhOwogCiAJCS8qIHRlc3QgZm9yIGFiaWxpdHkgdG8gZG1hIHRvIHR4aGRyX2NhY2hlICovCi0JCWRtYV90ZXN0ID0gZG1hX21hcF9zaW5nbGUoZGV2LT5kZXYtPmRldiwKKwkJZG1hX3Rlc3QgPSBkbWFfbWFwX3NpbmdsZShkZXYtPmRldi0+ZG1hX2RldiwKIAkJCQkJICByaW5nLT50eGhkcl9jYWNoZSwKIAkJCQkJICBiNDNfdHhoZHJfc2l6ZShkZXYpLAogCQkJCQkgIERNQV9UT19ERVZJQ0UpOwpAQCAtODY5LDcgKzg3MCw3IEBACiAJCQlpZiAoIXJpbmctPnR4aGRyX2NhY2hlKQogCQkJCWdvdG8gZXJyX2tmcmVlX21ldGE7CiAKLQkJCWRtYV90ZXN0ID0gZG1hX21hcF9zaW5nbGUoZGV2LT5kZXYtPmRldiwKKwkJCWRtYV90ZXN0ID0gZG1hX21hcF9zaW5nbGUoZGV2LT5kZXYtPmRtYV9kZXYsCiAJCQkJCQkgIHJpbmctPnR4aGRyX2NhY2hlLAogCQkJCQkJICBiNDNfdHhoZHJfc2l6ZShkZXYpLAogCQkJCQkJICBETUFfVE9fREVWSUNFKTsKQEAgLTg4Myw3ICs4ODQsNyBAQAogCQkJfQogCQl9CiAKLQkJZG1hX3VubWFwX3NpbmdsZShkZXYtPmRldi0+ZGV2LAorCQlkbWFfdW5tYXBfc2luZ2xlKGRldi0+ZGV2LT5kbWFfZGV2LAogCQkJCSBkbWFfdGVzdCwgYjQzX3R4aGRyX3NpemUoZGV2KSwKIAkJCQkgRE1BX1RPX0RFVklDRSk7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzbGVnYWN5L2RtYS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzbGVnYWN5L2RtYS5jCmluZGV4IGU4N2I0MjcuLmM5OTBmODcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0M2xlZ2FjeS9kbWEuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDNsZWdhY3kvZG1hLmMKQEAgLTM5MywxMSArMzkzLDExIEBACiAJZG1hX2FkZHJfdCBkbWFhZGRyOwogCiAJaWYgKHR4KQotCQlkbWFhZGRyID0gZG1hX21hcF9zaW5nbGUocmluZy0+ZGV2LT5kZXYtPmRldiwKKwkJZG1hYWRkciA9IGRtYV9tYXBfc2luZ2xlKHJpbmctPmRldi0+ZGV2LT5kbWFfZGV2LAogCQkJCQkgYnVmLCBsZW4sCiAJCQkJCSBETUFfVE9fREVWSUNFKTsKIAllbHNlCi0JCWRtYWFkZHIgPSBkbWFfbWFwX3NpbmdsZShyaW5nLT5kZXYtPmRldi0+ZGV2LAorCQlkbWFhZGRyID0gZG1hX21hcF9zaW5nbGUocmluZy0+ZGV2LT5kZXYtPmRtYV9kZXYsCiAJCQkJCSBidWYsIGxlbiwKIAkJCQkJIERNQV9GUk9NX0RFVklDRSk7CiAKQEAgLTQxMSwxMSArNDExLDExIEBACiAJCSAgICAgIGludCB0eCkKIHsKIAlpZiAodHgpCi0JCWRtYV91bm1hcF9zaW5nbGUocmluZy0+ZGV2LT5kZXYtPmRldiwKKwkJZG1hX3VubWFwX3NpbmdsZShyaW5nLT5kZXYtPmRldi0+ZG1hX2RldiwKIAkJCQkgYWRkciwgbGVuLAogCQkJCSBETUFfVE9fREVWSUNFKTsKIAllbHNlCi0JCWRtYV91bm1hcF9zaW5nbGUocmluZy0+ZGV2LT5kZXYtPmRldiwKKwkJZG1hX3VubWFwX3NpbmdsZShyaW5nLT5kZXYtPmRldi0+ZG1hX2RldiwKIAkJCQkgYWRkciwgbGVuLAogCQkJCSBETUFfRlJPTV9ERVZJQ0UpOwogfQpAQCAtNDI3LDcgKzQyNyw3IEBACiB7CiAJQjQzbGVnYWN5X1dBUk5fT04ocmluZy0+dHgpOwogCi0JZG1hX3N5bmNfc2luZ2xlX2Zvcl9jcHUocmluZy0+ZGV2LT5kZXYtPmRldiwKKwlkbWFfc3luY19zaW5nbGVfZm9yX2NwdShyaW5nLT5kZXYtPmRldi0+ZG1hX2RldiwKIAkJCQlhZGRyLCBsZW4sIERNQV9GUk9NX0RFVklDRSk7CiB9CiAKQEAgLTQzOCw3ICs0MzgsNyBAQAogewogCUI0M2xlZ2FjeV9XQVJOX09OKHJpbmctPnR4KTsKIAotCWRtYV9zeW5jX3NpbmdsZV9mb3JfZGV2aWNlKHJpbmctPmRldi0+ZGV2LT5kZXYsCisJZG1hX3N5bmNfc2luZ2xlX2Zvcl9kZXZpY2UocmluZy0+ZGV2LT5kZXYtPmRtYV9kZXYsCiAJCQkJICAgYWRkciwgbGVuLCBETUFfRlJPTV9ERVZJQ0UpOwogfQogCkBAIC00NTgsOSArNDU4LDkgQEAKIAogc3RhdGljIGludCBhbGxvY19yaW5nbWVtb3J5KHN0cnVjdCBiNDNsZWdhY3lfZG1hcmluZyAqcmluZykKIHsKLQlzdHJ1Y3QgZGV2aWNlICpkZXYgPSByaW5nLT5kZXYtPmRldi0+ZGV2OworCXN0cnVjdCBkZXZpY2UgKmRtYV9kZXYgPSByaW5nLT5kZXYtPmRldi0+ZG1hX2RldjsKIAotCXJpbmctPmRlc2NiYXNlID0gZG1hX2FsbG9jX2NvaGVyZW50KGRldiwgQjQzbGVnYWN5X0RNQV9SSU5HTUVNU0laRSwKKwlyaW5nLT5kZXNjYmFzZSA9IGRtYV9hbGxvY19jb2hlcmVudChkbWFfZGV2LCBCNDNsZWdhY3lfRE1BX1JJTkdNRU1TSVpFLAogCQkJCQkgICAgJihyaW5nLT5kbWFiYXNlKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFyaW5nLT5kZXNjYmFzZSkgewogCQliNDNsZWdhY3llcnIocmluZy0+ZGV2LT53bCwgIkRNQSByaW5nbWVtb3J5IGFsbG9jYXRpb24iCkBAIC00NzQsOSArNDc0LDkgQEAKIAogc3RhdGljIHZvaWQgZnJlZV9yaW5nbWVtb3J5KHN0cnVjdCBiNDNsZWdhY3lfZG1hcmluZyAqcmluZykKIHsKLQlzdHJ1Y3QgZGV2aWNlICpkZXYgPSByaW5nLT5kZXYtPmRldi0+ZGV2OworCXN0cnVjdCBkZXZpY2UgKmRtYV9kZXYgPSByaW5nLT5kZXYtPmRldi0+ZG1hX2RldjsKIAotCWRtYV9mcmVlX2NvaGVyZW50KGRldiwgQjQzbGVnYWN5X0RNQV9SSU5HTUVNU0laRSwKKwlkbWFfZnJlZV9jb2hlcmVudChkbWFfZGV2LCBCNDNsZWdhY3lfRE1BX1JJTkdNRU1TSVpFLAogCQkJICByaW5nLT5kZXNjYmFzZSwgcmluZy0+ZG1hYmFzZSk7CiB9CiAKQEAgLTU4NSw4ICs1ODUsOSBAQAogCiAvKiBDaGVjayBpZiBhIERNQSBtYXBwaW5nIGFkZHJlc3MgaXMgaW52YWxpZC4gKi8KIHN0YXRpYyBib29sIGI0M2xlZ2FjeV9kbWFfbWFwcGluZ19lcnJvcihzdHJ1Y3QgYjQzbGVnYWN5X2RtYXJpbmcgKnJpbmcsCi0JCQkJCWRtYV9hZGRyX3QgYWRkciwKLQkJCQkJc2l6ZV90IGJ1ZmZlcnNpemUpCisJCQkJCSBkbWFfYWRkcl90IGFkZHIsCisJCQkJCSBzaXplX3QgYnVmZmVyc2l6ZSwKKwkJCQkJIGJvb2wgZG1hX3RvX2RldmljZSkKIHsKIAlpZiAodW5saWtlbHkoZG1hX21hcHBpbmdfZXJyb3IoYWRkcikpKQogCQlyZXR1cm4gMTsKQEAgLTU5NCwxMSArNTk1LDExIEBACiAJc3dpdGNoIChyaW5nLT50eXBlKSB7CiAJY2FzZSBCNDNsZWdhY3lfRE1BXzMwQklUOgogCQlpZiAoKHU2NClhZGRyICsgYnVmZmVyc2l6ZSA+ICgxVUxMIDw8IDMwKSkKLQkJCXJldHVybiAxOworCQkJZ290byBhZGRyZXNzX2Vycm9yOwogCQlicmVhazsKIAljYXNlIEI0M2xlZ2FjeV9ETUFfMzJCSVQ6CiAJCWlmICgodTY0KWFkZHIgKyBidWZmZXJzaXplID4gKDFVTEwgPDwgMzIpKQotCQkJcmV0dXJuIDE7CisJCQlnb3RvIGFkZHJlc3NfZXJyb3I7CiAJCWJyZWFrOwogCWNhc2UgQjQzbGVnYWN5X0RNQV82NEJJVDoKIAkJLyogQ3VycmVudGx5IHdlIGNhbid0IGhhdmUgYWRkcmVzc2VzIGJleW9uZCA2NCBiaXRzIGluIHRoZSBrZXJuZWwuICovCkBAIC02MDcsNiArNjA4LDEyIEBACiAKIAkvKiBUaGUgYWRkcmVzcyBpcyBPSy4gKi8KIAlyZXR1cm4gMDsKKworYWRkcmVzc19lcnJvcjoKKwkvKiBXZSBjYW4ndCBzdXBwb3J0IHRoaXMgYWRkcmVzcy4gVW5tYXAgaXQgYWdhaW4uICovCisJdW5tYXBfZGVzY2J1ZmZlcihyaW5nLCBhZGRyLCBidWZmZXJzaXplLCBkbWFfdG9fZGV2aWNlKTsKKworCXJldHVybiAxOwogfQogCiBzdGF0aWMgaW50IHNldHVwX3J4X2Rlc2NidWZmZXIoc3RydWN0IGI0M2xlZ2FjeV9kbWFyaW5nICpyaW5nLApAQCAtNjI2LDcgKzYzMyw3IEBACiAJCXJldHVybiAtRU5PTUVNOwogCWRtYWFkZHIgPSBtYXBfZGVzY2J1ZmZlcihyaW5nLCBza2ItPmRhdGEsCiAJCQkJIHJpbmctPnJ4X2J1ZmZlcnNpemUsIDApOwotCWlmIChiNDNsZWdhY3lfZG1hX21hcHBpbmdfZXJyb3IocmluZywgZG1hYWRkciwgcmluZy0+cnhfYnVmZmVyc2l6ZSkpIHsKKwlpZiAoYjQzbGVnYWN5X2RtYV9tYXBwaW5nX2Vycm9yKHJpbmcsIGRtYWFkZHIsIHJpbmctPnJ4X2J1ZmZlcnNpemUsIDApKSB7CiAJCS8qIHVnaC4gdHJ5IHRvIHJlYWxsb2MgaW4gem9uZV9kbWEgKi8KIAkJZ2ZwX2ZsYWdzIHw9IEdGUF9ETUE7CiAKQEAgLTYzOSw3ICs2NDYsNyBAQAogCQkJCQkgcmluZy0+cnhfYnVmZmVyc2l6ZSwgMCk7CiAJfQogCi0JaWYgKGI0M2xlZ2FjeV9kbWFfbWFwcGluZ19lcnJvcihyaW5nLCBkbWFhZGRyLCByaW5nLT5yeF9idWZmZXJzaXplKSkgeworCWlmIChiNDNsZWdhY3lfZG1hX21hcHBpbmdfZXJyb3IocmluZywgZG1hYWRkciwgcmluZy0+cnhfYnVmZmVyc2l6ZSwgMCkpIHsKIAkJZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTsKIAkJcmV0dXJuIC1FSU87CiAJfQpAQCAtODg2LDEyICs4OTMsMTIgQEAKIAkJCWdvdG8gZXJyX2tmcmVlX21ldGE7CiAKIAkJLyogdGVzdCBmb3IgYWJpbGl0eSB0byBkbWEgdG8gdHhoZHJfY2FjaGUgKi8KLQkJZG1hX3Rlc3QgPSBkbWFfbWFwX3NpbmdsZShkZXYtPmRldi0+ZGV2LCByaW5nLT50eGhkcl9jYWNoZSwKKwkJZG1hX3Rlc3QgPSBkbWFfbWFwX3NpbmdsZShkZXYtPmRldi0+ZG1hX2RldiwgcmluZy0+dHhoZHJfY2FjaGUsCiAJCQkJCSAgc2l6ZW9mKHN0cnVjdCBiNDNsZWdhY3lfdHhoZHJfZnczKSwKIAkJCQkJICBETUFfVE9fREVWSUNFKTsKIAogCQlpZiAoYjQzbGVnYWN5X2RtYV9tYXBwaW5nX2Vycm9yKHJpbmcsIGRtYV90ZXN0LAotCQkJCQlzaXplb2Yoc3RydWN0IGI0M2xlZ2FjeV90eGhkcl9mdzMpKSkgeworCQkJCQlzaXplb2Yoc3RydWN0IGI0M2xlZ2FjeV90eGhkcl9mdzMpLCAxKSkgewogCQkJLyogdWdoIHJlYWxsb2MgKi8KIAkJCWtmcmVlKHJpbmctPnR4aGRyX2NhY2hlKTsKIAkJCXJpbmctPnR4aGRyX2NhY2hlID0ga2NhbGxvYyhucl9zbG90cywKQEAgLTkwMCwxNyArOTA3LDE3IEBACiAJCQlpZiAoIXJpbmctPnR4aGRyX2NhY2hlKQogCQkJCWdvdG8gZXJyX2tmcmVlX21ldGE7CiAKLQkJCWRtYV90ZXN0ID0gZG1hX21hcF9zaW5nbGUoZGV2LT5kZXYtPmRldiwKKwkJCWRtYV90ZXN0ID0gZG1hX21hcF9zaW5nbGUoZGV2LT5kZXYtPmRtYV9kZXYsCiAJCQkJCXJpbmctPnR4aGRyX2NhY2hlLAogCQkJCQlzaXplb2Yoc3RydWN0IGI0M2xlZ2FjeV90eGhkcl9mdzMpLAogCQkJCQlETUFfVE9fREVWSUNFKTsKIAogCQkJaWYgKGI0M2xlZ2FjeV9kbWFfbWFwcGluZ19lcnJvcihyaW5nLCBkbWFfdGVzdCwKLQkJCQkJc2l6ZW9mKHN0cnVjdCBiNDNsZWdhY3lfdHhoZHJfZnczKSkpCisJCQkJCXNpemVvZihzdHJ1Y3QgYjQzbGVnYWN5X3R4aGRyX2Z3MyksIDEpKQogCQkJCWdvdG8gZXJyX2tmcmVlX3R4aGRyX2NhY2hlOwogCQl9CiAKLQkJZG1hX3VubWFwX3NpbmdsZShkZXYtPmRldi0+ZGV2LAorCQlkbWFfdW5tYXBfc2luZ2xlKGRldi0+ZGV2LT5kbWFfZGV2LAogCQkJCSBkbWFfdGVzdCwgc2l6ZW9mKHN0cnVjdCBiNDNsZWdhY3lfdHhoZHJfZnczKSwKIAkJCQkgRE1BX1RPX0RFVklDRSk7CiAJfQpAQCAtMTIzNSw3ICsxMjQyLDcgQEAKIAltZXRhX2hkci0+ZG1hYWRkciA9IG1hcF9kZXNjYnVmZmVyKHJpbmcsICh1bnNpZ25lZCBjaGFyICopaGVhZGVyLAogCQkJCQkgICBzaXplb2Yoc3RydWN0IGI0M2xlZ2FjeV90eGhkcl9mdzMpLCAxKTsKIAlpZiAoYjQzbGVnYWN5X2RtYV9tYXBwaW5nX2Vycm9yKHJpbmcsIG1ldGFfaGRyLT5kbWFhZGRyLAotCQkJCQlzaXplb2Yoc3RydWN0IGI0M2xlZ2FjeV90eGhkcl9mdzMpKSkgeworCQkJCQlzaXplb2Yoc3RydWN0IGI0M2xlZ2FjeV90eGhkcl9mdzMpLCAxKSkgewogCQlyaW5nLT5jdXJyZW50X3Nsb3QgPSBvbGRfdG9wX3Nsb3Q7CiAJCXJpbmctPnVzZWRfc2xvdHMgPSBvbGRfdXNlZF9zbG90czsKIAkJcmV0dXJuIC1FSU87CkBAIC0xMjU0LDcgKzEyNjEsNyBAQAogCiAJbWV0YS0+ZG1hYWRkciA9IG1hcF9kZXNjYnVmZmVyKHJpbmcsIHNrYi0+ZGF0YSwgc2tiLT5sZW4sIDEpOwogCS8qIGNyZWF0ZSBhIGJvdW5jZSBidWZmZXIgaW4gem9uZV9kbWEgb24gbWFwcGluZyBmYWlsdXJlLiAqLwotCWlmIChiNDNsZWdhY3lfZG1hX21hcHBpbmdfZXJyb3IocmluZywgbWV0YS0+ZG1hYWRkciwgc2tiLT5sZW4pKSB7CisJaWYgKGI0M2xlZ2FjeV9kbWFfbWFwcGluZ19lcnJvcihyaW5nLCBtZXRhLT5kbWFhZGRyLCBza2ItPmxlbiwgMSkpIHsKIAkJYm91bmNlX3NrYiA9IF9fZGV2X2FsbG9jX3NrYihza2ItPmxlbiwgR0ZQX0FUT01JQyB8IEdGUF9ETUEpOwogCQlpZiAoIWJvdW5jZV9za2IpIHsKIAkJCXJpbmctPmN1cnJlbnRfc2xvdCA9IG9sZF90b3Bfc2xvdDsKQEAgLTEyNjgsNyArMTI3NSw3IEBACiAJCXNrYiA9IGJvdW5jZV9za2I7CiAJCW1ldGEtPnNrYiA9IHNrYjsKIAkJbWV0YS0+ZG1hYWRkciA9IG1hcF9kZXNjYnVmZmVyKHJpbmcsIHNrYi0+ZGF0YSwgc2tiLT5sZW4sIDEpOwotCQlpZiAoYjQzbGVnYWN5X2RtYV9tYXBwaW5nX2Vycm9yKHJpbmcsIG1ldGEtPmRtYWFkZHIsIHNrYi0+bGVuKSkgeworCQlpZiAoYjQzbGVnYWN5X2RtYV9tYXBwaW5nX2Vycm9yKHJpbmcsIG1ldGEtPmRtYWFkZHIsIHNrYi0+bGVuLCAxKSkgewogCQkJcmluZy0+Y3VycmVudF9zbG90ID0gb2xkX3RvcF9zbG90OwogCQkJcmluZy0+dXNlZF9zbG90cyA9IG9sZF91c2VkX3Nsb3RzOwogCQkJZXJyID0gLUVJTzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0M2xlZ2FjeS9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDNsZWdhY3kvbWFpbi5jCmluZGV4IDVmM2YzNGUuLjBmN2E2ZTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0M2xlZ2FjeS9tYWluLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzbGVnYWN5L21haW4uYwpAQCAtMTQ4OCw2ICsxNDg4LDcgQEAKIAl9CiAJaWYgKCFmdy0+aW5pdHZhbHMpIHsKIAkJc3dpdGNoIChkZXYtPnBoeS50eXBlKSB7CisJCWNhc2UgQjQzbGVnYWN5X1BIWVRZUEVfQjoKIAkJY2FzZSBCNDNsZWdhY3lfUEhZVFlQRV9HOgogCQkJaWYgKChyZXYgPj0gNSkgJiYgKHJldiA8PSAxMCkpCiAJCQkJZmlsZW5hbWUgPSAiYjBnMGluaXR2YWxzNSI7CkBAIC0xNTA1LDYgKzE1MDYsNyBAQAogCX0KIAlpZiAoIWZ3LT5pbml0dmFsc19iYW5kKSB7CiAJCXN3aXRjaCAoZGV2LT5waHkudHlwZSkgeworCQljYXNlIEI0M2xlZ2FjeV9QSFlUWVBFX0I6CiAJCWNhc2UgQjQzbGVnYWN5X1BIWVRZUEVfRzoKIAkJCWlmICgocmV2ID49IDUpICYmIChyZXYgPD0gMTApKQogCQkJCWZpbGVuYW1lID0gImIwZzBic2luaXR2YWxzNSI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGw4MTg3X2Rldi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsODE4N19kZXYuYwppbmRleCBmNDQ1MDU5Li4xMzNiM2YzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGw4MTg3X2Rldi5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bDgxODdfZGV2LmMKQEAgLTUwOSw2ICs1MDksOCBAQAogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAJfQogCisJcHJpdi0+dmlmID0gY29uZi0+dmlmOworCiAJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5FRVBST01fQ01ELCBSVEw4MThYX0VFUFJPTV9DTURfQ09ORklHKTsKIAlmb3IgKGkgPSAwOyBpIDwgRVRIX0FMRU47IGkrKykKIAkJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5NQUNbaV0sCkBAIC01MjMsNiArNTI1LDcgQEAKIHsKIAlzdHJ1Y3QgcnRsODE4N19wcml2ICpwcml2ID0gZGV2LT5wcml2OwogCXByaXYtPm1vZGUgPSBJRUVFODAyMTFfSUZfVFlQRV9NTlRSOworCXByaXYtPnZpZiA9IE5VTEw7CiB9CiAKIHN0YXRpYyBpbnQgcnRsODE4N19jb25maWcoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBzdHJ1Y3QgaWVlZTgwMjExX2NvbmYgKmNvbmYpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjbWNpYS9hdDkxX2NmLmMgYi9kcml2ZXJzL3BjbWNpYS9hdDkxX2NmLmMKaW5kZXggMzg1ZTE0NS4uNjg0OTY4NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY21jaWEvYXQ5MV9jZi5jCisrKyBiL2RyaXZlcnMvcGNtY2lhL2F0OTFfY2YuYwpAQCAtNDE5LDMgKzQxOSw0IEBACiBNT0RVTEVfREVTQ1JJUFRJT04oIkFUOTEgQ29tcGFjdCBGbGFzaCBEcml2ZXIiKTsKIE1PRFVMRV9BVVRIT1IoIkRhdmlkIEJyb3duZWxsIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOmF0OTFfY2YiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNtY2lhL29tYXBfY2YuYyBiL2RyaXZlcnMvcGNtY2lhL29tYXBfY2YuYwppbmRleCAyZGYyMTZiLi5iYjZkYjNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjbWNpYS9vbWFwX2NmLmMKKysrIGIvZHJpdmVycy9wY21jaWEvb21hcF9jZi5jCkBAIC0zNDQsNiArMzQ0LDcgQEAKIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG9tYXBfY2ZfZHJpdmVyID0gewogCS5kcml2ZXIgPSB7CiAJCS5uYW1lCT0gKGNoYXIgKikgZHJpdmVyX25hbWUsCisJCS5vd25lcgk9IFRISVNfTU9EVUxFLAogCX0sCiAJLnJlbW92ZQkJPSBfX2V4aXRfcChvbWFwX2NmX3JlbW92ZSksCiAJLnN1c3BlbmQJPSBvbWFwX2NmX3N1c3BlbmQsCkBAIC0zNjgsMyArMzY5LDQgQEAKIAogTU9EVUxFX0RFU0NSSVBUSU9OKCJPTUFQIENGIERyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpvbWFwX2NmIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjbWNpYS9weGEyeHhfYmFzZS5jIGIvZHJpdmVycy9wY21jaWEvcHhhMnh4X2Jhc2UuYwppbmRleCBlNDM5MDQ0Li45NDE0MTYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjbWNpYS9weGEyeHhfYmFzZS5jCisrKyBiL2RyaXZlcnMvcGNtY2lhL3B4YTJ4eF9iYXNlLmMKQEAgLTIzOSw2ICsyMzksNyBAQAogCS5yZXN1bWUgCT0gcHhhMnh4X2Rydl9wY21jaWFfcmVzdW1lLAogCS5kcml2ZXIJCT0gewogCQkubmFtZQk9ICJweGEyeHgtcGNtY2lhIiwKKwkJLm93bmVyCT0gVEhJU19NT0RVTEUsCiAJfSwKIH07CiAKQEAgLTI1OCwzICsyNTksNCBAQAogTU9EVUxFX0FVVEhPUigiU3RlZmFuIEVsZXR6aG9mZXIgPHN0ZWZhbi5lbGV0emhvZmVyQGlucXVhbnQuZGU+IGFuZCBJYW4gTW9sdG9uIDxzcHlyb0BmMnMuY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJMaW51eCBQQ01DSUEgQ2FyZCBTZXJ2aWNlczogUFhBMnh4IGNvcmUgc29ja2V0IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpweGEyeHgtcGNtY2lhIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3J0Yy9ydGMtY21vcy5jIGIvZHJpdmVycy9ydGMvcnRjLWNtb3MuYwppbmRleCBiNDg1MTcwLi5kY2RjMTQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3J0Yy9ydGMtY21vcy5jCisrKyBiL2RyaXZlcnMvcnRjL3J0Yy1jbW9zLmMKQEAgLTE5OCw5ICsxOTgsOCBAQAogCiAJLyogV3JpdGluZyAweGZmIG1lYW5zICJkb24ndCBjYXJlIiBvciAibWF0Y2ggYWxsIi4gICovCiAKLQltb24gPSB0LT50aW1lLnRtX21vbjsKLQltb24gPSAobW9uIDwgMTIpID8gQklOMkJDRChtb24pIDogMHhmZjsKLQltb24rKzsKKwltb24gPSB0LT50aW1lLnRtX21vbiArIDE7CisJbW9uID0gKG1vbiA8PSAxMikgPyBCSU4yQkNEKG1vbikgOiAweGZmOwogCiAJbWRheSA9IHQtPnRpbWUudG1fbWRheTsKIAltZGF5ID0gKG1kYXkgPj0gMSAmJiBtZGF5IDw9IDMxKSA/IEJJTjJCQ0QobWRheSkgOiAweGZmOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zZXJpYWwvYXRtZWxfc2VyaWFsLmMgYi9kcml2ZXJzL3NlcmlhbC9hdG1lbF9zZXJpYWwuYwppbmRleCA0MzA5OTdlLi41NTQ5MmZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3NlcmlhbC9hdG1lbF9zZXJpYWwuYworKysgYi9kcml2ZXJzL3NlcmlhbC9hdG1lbF9zZXJpYWwuYwpAQCAtMTU3NywzICsxNTc3LDQgQEAKIE1PRFVMRV9BVVRIT1IoIlJpY2sgQnJvbnNvbiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJBdG1lbCBBVDkxIC8gQVQzMiBzZXJpYWwgcG9ydCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06YXRtZWxfdXNhcnQiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2VyaWFsL2JmaW5fNXh4LmMgYi9kcml2ZXJzL3NlcmlhbC9iZmluXzV4eC5jCmluZGV4IDBhYTM0NWIuLjQ2YmI0N2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2VyaWFsL2JmaW5fNXh4LmMKKysrIGIvZHJpdmVycy9zZXJpYWwvYmZpbl81eHguYwpAQCAtMTI0Myw2ICsxMjQzLDcgQEAKIAkucmVzdW1lCQk9IGJmaW5fc2VyaWFsX3Jlc3VtZSwKIAkuZHJpdmVyCQk9IHsKIAkJLm5hbWUJPSAiYmZpbi11YXJ0IiwKKwkJLm93bmVyCT0gVEhJU19NT0RVTEUsCiAJfSwKIH07CiAKQEAgLTEzMDEsMyArMTMwMiw0IEBACiBNT0RVTEVfREVTQ1JJUFRJT04oIkJsYWNrZmluIGdlbmVyaWMgc2VyaWFsIHBvcnQgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiBNT0RVTEVfQUxJQVNfQ0hBUkRFVl9NQUpPUihCRklOX1NFUklBTF9NQUpPUik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOmJmaW4tdWFydCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zZXJpYWwvaW14LmMgYi9kcml2ZXJzL3NlcmlhbC9pbXguYwppbmRleCA1NmFmMWY1Li4xNmJhOWFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3NlcmlhbC9pbXguYworKysgYi9kcml2ZXJzL3NlcmlhbC9pbXguYwpAQCAtMTA5MCw2ICsxMDkwLDcgQEAKIAkucmVzdW1lCQk9IHNlcmlhbF9pbXhfcmVzdW1lLAogCS5kcml2ZXIJCT0gewogCSAgICAgICAgLm5hbWUJPSAiaW14LXVhcnQiLAorCQkub3duZXIJPSBUSElTX01PRFVMRSwKIAl9LAogfTsKIApAQCAtMTEyNCwzICsxMTI1LDQgQEAKIE1PRFVMRV9BVVRIT1IoIlNhc2NoYSBIYXVlciIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJJTVggZ2VuZXJpYyBzZXJpYWwgcG9ydCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06aW14LXVhcnQiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2VyaWFsL21jZi5jIGIvZHJpdmVycy9zZXJpYWwvbWNmLmMKaW5kZXggZTc2ZmM3Mi4uN2UxNjRlMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zZXJpYWwvbWNmLmMKKysrIGIvZHJpdmVycy9zZXJpYWwvbWNmLmMKQEAgLTY0OSw1ICs2NDksNiBAQAogTU9EVUxFX0FVVEhPUigiR3JlZyBVbmdlcmVyIDxnZXJnQHNuYXBnZWFyLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiRnJlZXNjYWxlIENvbGRGaXJlIFVBUlQgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOm1jZnVhcnQiKTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NlcmlhbC9tcGM1Mnh4X3VhcnQuYyBiL2RyaXZlcnMvc2VyaWFsL21wYzUyeHhfdWFydC5jCmluZGV4IGE2MzhmMjMuLmQ5M2IzNTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2VyaWFsL21wYzUyeHhfdWFydC5jCisrKyBiL2RyaXZlcnMvc2VyaWFsL21wYzUyeHhfdWFydC5jCkBAIC0xMTg4LDYgKzExODgsOCBAQAogfQogI2VuZGlmCiAKKy8qIHdvcmsgd2l0aCBob3RwbHVnIGFuZCBjb2xkcGx1ZyAqLworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTptcGM1Mnh4LXBzYyIpOwogCiBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtcGM1Mnh4X3VhcnRfcGxhdGZvcm1fZHJpdmVyID0gewogCS5wcm9iZQkJPSBtcGM1Mnh4X3VhcnRfcHJvYmUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NlcmlhbC9tcHNjLmMgYi9kcml2ZXJzL3NlcmlhbC9tcHNjLmMKaW5kZXggY2IzYTkxOS4uZTg4MTljNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zZXJpYWwvbXBzYy5jCisrKyBiL2RyaXZlcnMvc2VyaWFsL21wc2MuYwpAQCAtMTk2NCw2ICsxOTY0LDcgQEAKIAkucmVtb3ZlCT0gbXBzY19kcnZfcmVtb3ZlLAogCS5kcml2ZXIJPSB7CiAJCS5uYW1lCT0gTVBTQ19DVExSX05BTUUsCisJCS5vd25lcgk9IFRISVNfTU9EVUxFLAogCX0sCiB9OwogCkBAIC0yMDA3LDMgKzIwMDgsNCBAQAogTU9EVUxFX1ZFUlNJT04oTVBTQ19WRVJTSU9OKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIE1PRFVMRV9BTElBU19DSEFSREVWX01BSk9SKE1QU0NfTUFKT1IpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybToiIE1QU0NfQ1RMUl9OQU1FKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2VyaWFsL25ldHgtc2VyaWFsLmMgYi9kcml2ZXJzL3NlcmlhbC9uZXR4LXNlcmlhbC5jCmluZGV4IGI1NmY3ZGIuLjMxMjNmZmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2VyaWFsL25ldHgtc2VyaWFsLmMKKysrIGIvZHJpdmVycy9zZXJpYWwvbmV0eC1zZXJpYWwuYwpAQCAtNzEzLDYgKzcxMyw3IEBACiAKIAkuZHJpdmVyCQk9IHsKIAkJLm5hbWUgICA9IERSSVZFUl9OQU1FLAorCQkub3duZXIJPSBUSElTX01PRFVMRSwKIAl9LAogfTsKIApAQCAtNzQ1LDMgKzc0Niw0IEBACiBNT0RVTEVfQVVUSE9SKCJTYXNjaGEgSGF1ZXIiKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTmV0WCBzZXJpYWwgcG9ydCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06IiBEUklWRVJfTkFNRSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3NlcmlhbC9wbng4eHh4X3VhcnQuYyBiL2RyaXZlcnMvc2VyaWFsL3BueDh4eHhfdWFydC5jCmluZGV4IDhkMDFjNTkuLmQwZTVhNzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2VyaWFsL3BueDh4eHhfdWFydC5jCisrKyBiL2RyaXZlcnMvc2VyaWFsL3BueDh4eHhfdWFydC5jCkBAIC04NTAsMyArODUwLDQgQEAKIE1PRFVMRV9ERVNDUklQVElPTigiUE5YOFhYWCBTb0NzIHNlcmlhbCBwb3J0IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwogTU9EVUxFX0FMSUFTX0NIQVJERVZfTUFKT1IoU0VSSUFMX1BOWDhYWFhfTUFKT1IpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpwbng4eHh4LXVhcnQiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2VyaWFsL3B4YS5jIGIvZHJpdmVycy9zZXJpYWwvcHhhLmMKaW5kZXggMzUyZmNiOC4uYjRmN2ZmYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zZXJpYWwvcHhhLmMKKysrIGIvZHJpdmVycy9zZXJpYWwvcHhhLmMKQEAgLTgzMyw2ICs4MzMsNyBAQAogCS5yZXN1bWUJCT0gc2VyaWFsX3B4YV9yZXN1bWUsCiAJLmRyaXZlcgkJPSB7CiAJICAgICAgICAubmFtZQk9ICJweGEyeHgtdWFydCIsCisJCS5vd25lcgk9IFRISVNfTU9EVUxFLAogCX0sCiB9OwogCkBAIC04NjEsNCArODYyLDQgQEAKIG1vZHVsZV9leGl0KHNlcmlhbF9weGFfZXhpdCk7CiAKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQorTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpweGEyeHgtdWFydCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zZXJpYWwvczNjMjQxMC5jIGIvZHJpdmVycy9zZXJpYWwvczNjMjQxMC5jCmluZGV4IDQ1ZGUxOTMuLjRmZmEyNTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2VyaWFsL3MzYzI0MTAuYworKysgYi9kcml2ZXJzL3NlcmlhbC9zM2MyNDEwLmMKQEAgLTE5MzUsMyArMTkzNSw3IEBACiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiBNT0RVTEVfQVVUSE9SKCJCZW4gRG9va3MgPGJlbkBzaW10ZWMuY28udWs+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlNhbXN1bmcgUzNDMjQxMC9TM0MyNDQwL1MzQzI0MTIgU2VyaWFsIHBvcnQgZHJpdmVyIik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOnMzYzI0MDAtdWFydCIpOworTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTpzM2MyNDEwLXVhcnQiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06czNjMjQxMi11YXJ0Iik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOnMzYzI0NDAtdWFydCIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zZXJpYWwvc2ExMTAwLmMgYi9kcml2ZXJzL3NlcmlhbC9zYTExMDAuYwppbmRleCA1OGE4M2MyLi42N2IyMzM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3NlcmlhbC9zYTExMDAuYworKysgYi9kcml2ZXJzL3NlcmlhbC9zYTExMDAuYwpAQCAtODg0LDYgKzg4NCw3IEBACiAJLnJlc3VtZQkJPSBzYTExMDBfc2VyaWFsX3Jlc3VtZSwKIAkuZHJpdmVyCQk9IHsKIAkJLm5hbWUJPSAic2ExMXgwLXVhcnQiLAorCQkub3duZXIJPSBUSElTX01PRFVMRSwKIAl9LAogfTsKIApAQCAtOTE3LDMgKzkxOCw0IEBACiBNT0RVTEVfREVTQ1JJUFRJT04oIlNBMTEwMCBnZW5lcmljIHNlcmlhbCBwb3J0IGRyaXZlciAkUmV2aXNpb246IDEuNTAgJCIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwogTU9EVUxFX0FMSUFTX0NIQVJERVZfTUFKT1IoU0VSSUFMX1NBMTEwMF9NQUpPUik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOnNhMTF4MC11YXJ0Iik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3NlcmlhbC9zYzI2eHguYyBiL2RyaXZlcnMvc2VyaWFsL3NjMjZ4eC5jCmluZGV4IGEzNTBiNmQuLmFlMmE5ZTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2VyaWFsL3NjMjZ4eC5jCisrKyBiL2RyaXZlcnMvc2VyaWFsL3NjMjZ4eC5jCkBAIC03MzIsNiArNzMyLDcgQEAKIAkucmVtb3ZlCT0gX19kZXZleGl0X3Aoc2MyNnh4X2RyaXZlcl9yZW1vdmUpLAogCS5kcml2ZXIJPSB7CiAJCS5uYW1lCT0gIlNDMjZ4eCIsCisJCS5vd25lcgk9IFRISVNfTU9EVUxFLAogCX0sCiB9OwogCkBAIC03NTMsMyArNzU0LDQgQEAKIE1PRFVMRV9ERVNDUklQVElPTigiU0M2ODEvU0MyNjkyIHNlcmlhbCBkcml2ZXIiKTsKIE1PRFVMRV9WRVJTSU9OKCIxLjAiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06U0MyNnh4Iik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3NlcmlhbC9zaC1zY2kuYyBiL2RyaXZlcnMvc2VyaWFsL3NoLXNjaS5jCmluZGV4IDlkMjQ0ZDEuLmVmZjU5MzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2VyaWFsL3NoLXNjaS5jCisrKyBiL2RyaXZlcnMvc2VyaWFsL3NoLXNjaS5jCkBAIC0xNTUyLDMgKzE1NTIsNCBAQAogbW9kdWxlX2V4aXQoc2NpX2V4aXQpOwogCiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOnNoLXNjaSIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zZXJpYWwvdWFydGxpdGUuYyBiL2RyaXZlcnMvc2VyaWFsL3VhcnRsaXRlLmMKaW5kZXggNGUwNmFiNi4uYjU2NWQ1YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zZXJpYWwvdWFydGxpdGUuYworKysgYi9kcml2ZXJzL3NlcmlhbC91YXJ0bGl0ZS5jCkBAIC01NjEsNiArNTYxLDkgQEAKIAlyZXR1cm4gdWxpdGVfcmVsZWFzZSgmcGRldi0+ZGV2KTsKIH0KIAorLyogd29yayB3aXRoIGhvdHBsdWcgYW5kIGNvbGRwbHVnICovCitNT0RVTEVfQUxJQVMoInBsYXRmb3JtOnVhcnRsaXRlIik7CisKIHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHVsaXRlX3BsYXRmb3JtX2RyaXZlciA9IHsKIAkucHJvYmUJPSB1bGl0ZV9wcm9iZSwKIAkucmVtb3ZlCT0gX19kZXZleGl0X3AodWxpdGVfcmVtb3ZlKSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2VyaWFsL3ZyNDF4eF9zaXUuYyBiL2RyaXZlcnMvc2VyaWFsL3ZyNDF4eF9zaXUuYwppbmRleCA2ZmQ1MWIwLi45OGFiNjQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3NlcmlhbC92cjQxeHhfc2l1LmMKKysrIGIvZHJpdmVycy9zZXJpYWwvdnI0MXh4X3NpdS5jCkBAIC05NjAsMyArOTYwLDYgQEAKIAogbW9kdWxlX2luaXQodnI0MXh4X3NpdV9pbml0KTsKIG1vZHVsZV9leGl0KHZyNDF4eF9zaXVfZXhpdCk7CisKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06U0lVIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9zcGlfczNjMjR4eC5jIGIvZHJpdmVycy9zcGkvc3BpX3MzYzI0eHguYwppbmRleCBlNzUxMDNhLi5iNzQ3NmI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3NwaS9zcGlfczNjMjR4eC5jCisrKyBiL2RyaXZlcnMvc3BpL3NwaV9zM2MyNHh4LmMKQEAgLTE5Miw4ICsxOTIsMTEgQEAKIAlody0+bGVuID0gdC0+bGVuOwogCWh3LT5jb3VudCA9IDA7CiAKKwlpbml0X2NvbXBsZXRpb24oJmh3LT5kb25lKTsKKwogCS8qIHNlbmQgdGhlIGZpcnN0IGJ5dGUgKi8KIAl3cml0ZWIoaHdfdHhieXRlKGh3LCAwKSwgaHctPnJlZ3MgKyBTM0MyNDEwX1NQVERBVCk7CisKIAl3YWl0X2Zvcl9jb21wbGV0aW9uKCZody0+ZG9uZSk7CiAKIAlyZXR1cm4gaHctPmNvdW50OwpAQCAtMjM1LDYgKzIzOCw3IEBACiAKIHN0YXRpYyBpbnQgX19pbml0IHMzYzI0eHhfc3BpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiB7CisJc3RydWN0IHMzYzI0MTBfc3BpX2luZm8gKnBkYXRhOwogCXN0cnVjdCBzM2MyNHh4X3NwaSAqaHc7CiAJc3RydWN0IHNwaV9tYXN0ZXIgKm1hc3RlcjsKIAlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKQEAgLTI1MSwxMCArMjU1LDEwIEBACiAJbWVtc2V0KGh3LCAwLCBzaXplb2Yoc3RydWN0IHMzYzI0eHhfc3BpKSk7CiAKIAlody0+bWFzdGVyID0gc3BpX21hc3Rlcl9nZXQobWFzdGVyKTsKLQlody0+cGRhdGEgPSBwZGV2LT5kZXYucGxhdGZvcm1fZGF0YTsKKwlody0+cGRhdGEgPSBwZGF0YSA9IHBkZXYtPmRldi5wbGF0Zm9ybV9kYXRhOwogCWh3LT5kZXYgPSAmcGRldi0+ZGV2OwogCi0JaWYgKGh3LT5wZGF0YSA9PSBOVUxMKSB7CisJaWYgKHBkYXRhID09IE5VTEwpIHsKIAkJZGV2X2VycigmcGRldi0+ZGV2LCAiTm8gcGxhdGZvcm0gZGF0YSBzdXBwbGllZFxuIik7CiAJCWVyciA9IC1FTk9FTlQ7CiAJCWdvdG8gZXJyX25vX3BkYXRhOwpAQCAtMjYzLDYgKzI2NywxMCBAQAogCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGh3KTsKIAlpbml0X2NvbXBsZXRpb24oJmh3LT5kb25lKTsKIAorCS8qIHNldHVwIHRoZSBtYXN0ZXIgc3RhdGUuICovCisKKwltYXN0ZXItPm51bV9jaGlwc2VsZWN0ID0gaHctPnBkYXRhLT5udW1fY3M7CisKIAkvKiBzZXR1cCB0aGUgc3RhdGUgZm9yIHRoZSBiaXRiYW5nIGRyaXZlciAqLwogCiAJaHctPmJpdGJhbmcubWFzdGVyICAgICAgICAgPSBody0+bWFzdGVyOwpAQCAtMzMwLDEzICszMzgsMTMgQEAKIAogCS8qIHNldHVwIGFueSBncGlvIHdlIGNhbiAqLwogCi0JaWYgKCFody0+cGRhdGEtPnNldF9jcykgeworCWlmICghcGRhdGEtPnNldF9jcykgewogCQlody0+c2V0X2NzID0gczNjMjR4eF9zcGlfZ3Bpb2NzOwogCi0JCXMzYzI0MTBfZ3Bpb19zZXRwaW4oaHctPnBkYXRhLT5waW5fY3MsIDEpOwotCQlzM2MyNDEwX2dwaW9fY2ZncGluKGh3LT5wZGF0YS0+cGluX2NzLCBTM0MyNDEwX0dQSU9fT1VUUFVUKTsKKwkJczNjMjQxMF9ncGlvX3NldHBpbihwZGF0YS0+cGluX2NzLCAxKTsKKwkJczNjMjQxMF9ncGlvX2NmZ3BpbihwZGF0YS0+cGluX2NzLCBTM0MyNDEwX0dQSU9fT1VUUFVUKTsKIAl9IGVsc2UKLQkJaHctPnNldF9jcyA9IGh3LT5wZGF0YS0+c2V0X2NzOworCQlody0+c2V0X2NzID0gcGRhdGEtPnNldF9jczsKIAogCS8qIHJlZ2lzdGVyIG91ciBzcGkgY29udHJvbGxlciAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NzYi9tYWluLmMgYi9kcml2ZXJzL3NzYi9tYWluLmMKaW5kZXggNzIwMTdiZi4uODAwM2E5ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zc2IvbWFpbi5jCisrKyBiL2RyaXZlcnMvc3NiL21haW4uYwpAQCAtNDM2LDE1ICs0MzYsMTggQEAKICNpZmRlZiBDT05GSUdfU1NCX1BDSUhPU1QKIAkJCXNkZXYtPmlycSA9IGJ1cy0+aG9zdF9wY2ktPmlycTsKIAkJCWRldi0+cGFyZW50ID0gJmJ1cy0+aG9zdF9wY2ktPmRldjsKKwkJCXNkZXYtPmRtYV9kZXYgPSAmYnVzLT5ob3N0X3BjaS0+ZGV2OwogI2VuZGlmCiAJCQlicmVhazsKIAkJY2FzZSBTU0JfQlVTVFlQRV9QQ01DSUE6CiAjaWZkZWYgQ09ORklHX1NTQl9QQ01DSUFIT1NUCiAJCQlzZGV2LT5pcnEgPSBidXMtPmhvc3RfcGNtY2lhLT5pcnEuQXNzaWduZWRJUlE7CiAJCQlkZXYtPnBhcmVudCA9ICZidXMtPmhvc3RfcGNtY2lhLT5kZXY7CisJCQlzZGV2LT5kbWFfZGV2ID0gJmJ1cy0+aG9zdF9wY21jaWEtPmRldjsKICNlbmRpZgogCQkJYnJlYWs7CiAJCWNhc2UgU1NCX0JVU1RZUEVfU1NCOgorCQkJc2Rldi0+ZG1hX2RldiA9IGRldjsKIAkJCWJyZWFrOwogCQl9CiAKQEAgLTEwMTgsMTUgKzEwMjEsMTQgQEAKIAogaW50IHNzYl9kbWFfc2V0X21hc2soc3RydWN0IHNzYl9kZXZpY2UgKnNzYl9kZXYsIHU2NCBtYXNrKQogewotCXN0cnVjdCBkZXZpY2UgKmRldiA9IHNzYl9kZXYtPmRldjsKKwlzdHJ1Y3QgZGV2aWNlICpkbWFfZGV2ID0gc3NiX2Rldi0+ZG1hX2RldjsKIAogI2lmZGVmIENPTkZJR19TU0JfUENJSE9TVAotCWlmIChzc2JfZGV2LT5idXMtPmJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfUENJICYmCi0JICAgICFkbWFfc3VwcG9ydGVkKGRldiwgbWFzaykpCi0JCXJldHVybiAtRUlPOworCWlmIChzc2JfZGV2LT5idXMtPmJ1c3R5cGUgPT0gU1NCX0JVU1RZUEVfUENJKQorCQlyZXR1cm4gZG1hX3NldF9tYXNrKGRtYV9kZXYsIG1hc2spOwogI2VuZGlmCi0JZGV2LT5jb2hlcmVudF9kbWFfbWFzayA9IG1hc2s7Ci0JZGV2LT5kbWFfbWFzayA9ICZkZXYtPmNvaGVyZW50X2RtYV9tYXNrOworCWRtYV9kZXYtPmNvaGVyZW50X2RtYV9tYXNrID0gbWFzazsKKwlkbWFfZGV2LT5kbWFfbWFzayA9ICZkbWFfZGV2LT5jb2hlcmVudF9kbWFfbWFzazsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy90aGVybWFsL3RoZXJtYWwuYyBiL2RyaXZlcnMvdGhlcm1hbC90aGVybWFsLmMKaW5kZXggOGI4NmU1My4uN2Y3OWJiZiAxMDA2NDQKLS0tIGEvZHJpdmVycy90aGVybWFsL3RoZXJtYWwuYworKysgYi9kcml2ZXJzL3RoZXJtYWwvdGhlcm1hbC5jCkBAIC0xOTYsNiArMTk2LDEwIEBACiAJX19BVFRSKHRyaXBfcG9pbnRfOF90ZW1wLCAwNDQ0LCB0cmlwX3BvaW50X3RlbXBfc2hvdywgTlVMTCksCiAJX19BVFRSKHRyaXBfcG9pbnRfOV90eXBlLCAwNDQ0LCB0cmlwX3BvaW50X3R5cGVfc2hvdywgTlVMTCksCiAJX19BVFRSKHRyaXBfcG9pbnRfOV90ZW1wLCAwNDQ0LCB0cmlwX3BvaW50X3RlbXBfc2hvdywgTlVMTCksCisJX19BVFRSKHRyaXBfcG9pbnRfMTBfdHlwZSwgMDQ0NCwgdHJpcF9wb2ludF90eXBlX3Nob3csIE5VTEwpLAorCV9fQVRUUih0cmlwX3BvaW50XzEwX3RlbXAsIDA0NDQsIHRyaXBfcG9pbnRfdGVtcF9zaG93LCBOVUxMKSwKKwlfX0FUVFIodHJpcF9wb2ludF8xMV90eXBlLCAwNDQ0LCB0cmlwX3BvaW50X3R5cGVfc2hvdywgTlVMTCksCisJX19BVFRSKHRyaXBfcG9pbnRfMTFfdGVtcCwgMDQ0NCwgdHJpcF9wb2ludF90ZW1wX3Nob3csIE5VTEwpLAogfTsKIAogI2RlZmluZSBUUklQX1BPSU5UX0FUVFJfQUREKF9kZXYsIF9pbmRleCwgcmVzdWx0KSAgICAgXApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL29wdGlvbi5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL29wdGlvbi5jCmluZGV4IGEzOTZmYmIuLmQxMDEwMjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9vcHRpb24uYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvb3B0aW9uLmMKQEAgLTEwOSw2ICsxMDksMjIgQEAKICNkZWZpbmUgSFVBV0VJX1BST0RVQ1RfRTYwMAkJCTB4MTAwMQogI2RlZmluZSBIVUFXRUlfUFJPRFVDVF9FMjIwCQkJMHgxMDAzCiAjZGVmaW5lIEhVQVdFSV9QUk9EVUNUX0UyMjBCSVMJCQkweDEwMDQKKyNkZWZpbmUgSFVBV0VJX1BST0RVQ1RfRTE0MDEJCQkweDE0MDEKKyNkZWZpbmUgSFVBV0VJX1BST0RVQ1RfRTE0MDMJCQkweDE0MDMKKyNkZWZpbmUgSFVBV0VJX1BST0RVQ1RfRTE0MDUJCQkweDE0MDUKKyNkZWZpbmUgSFVBV0VJX1BST0RVQ1RfRTE0MDYJCQkweDE0MDYKKyNkZWZpbmUgSFVBV0VJX1BST0RVQ1RfRTE0MDgJCQkweDE0MDgKKyNkZWZpbmUgSFVBV0VJX1BST0RVQ1RfRTE0MDkJCQkweDE0MDkKKyNkZWZpbmUgSFVBV0VJX1BST0RVQ1RfRTE0MTAJCQkweDE0MTAKKyNkZWZpbmUgSFVBV0VJX1BST0RVQ1RfRTE0MTEJCQkweDE0MTEKKyNkZWZpbmUgSFVBV0VJX1BST0RVQ1RfRTE0MTIJCQkweDE0MTIKKyNkZWZpbmUgSFVBV0VJX1BST0RVQ1RfRTE0MTMJCQkweDE0MTMKKyNkZWZpbmUgSFVBV0VJX1BST0RVQ1RfRTE0MTQJCQkweDE0MTQKKyNkZWZpbmUgSFVBV0VJX1BST0RVQ1RfRTE0MTUJCQkweDE0MTUKKyNkZWZpbmUgSFVBV0VJX1BST0RVQ1RfRTE0MTYJCQkweDE0MTYKKyNkZWZpbmUgSFVBV0VJX1BST0RVQ1RfRTE0MTcJCQkweDE0MTcKKyNkZWZpbmUgSFVBV0VJX1BST0RVQ1RfRTE0MTgJCQkweDE0MTgKKyNkZWZpbmUgSFVBV0VJX1BST0RVQ1RfRTE0MTkJCQkweDE0MTkKIAogI2RlZmluZSBOT1ZBVEVMV0lSRUxFU1NfVkVORE9SX0lECQkweDE0MTAKIApAQCAtMTI5LDYgKzE0NSw3IEBACiAjZGVmaW5lIE5PVkFURUxXSVJFTEVTU19QUk9EVUNUX0VWNjIwCQkweDIxMDAKICNkZWZpbmUgTk9WQVRFTFdJUkVMRVNTX1BST0RVQ1RfRVM3MjAJCTB4MjExMAogI2RlZmluZSBOT1ZBVEVMV0lSRUxFU1NfUFJPRFVDVF9FNzI1CQkweDIxMjAKKyNkZWZpbmUgTk9WQVRFTFdJUkVMRVNTX1BST0RVQ1RfRVM2MjAJCTB4MjEzMAogI2RlZmluZSBOT1ZBVEVMV0lSRUxFU1NfUFJPRFVDVF9FVTczMAkJMHgyNDAwCiAjZGVmaW5lIE5PVkFURUxXSVJFTEVTU19QUk9EVUNUX0VVNzQwCQkweDI0MTAKICNkZWZpbmUgTk9WQVRFTFdJUkVMRVNTX1BST0RVQ1RfRVU4NzBECQkweDI0MjAKQEAgLTEzNyw2ICsxNTQsOCBAQAogI2RlZmluZSBOT1ZBVEVMV0lSRUxFU1NfUFJPRFVDVF9NQzcyNwkJMHg0MTAwCiAjZGVmaW5lIE5PVkFURUxXSVJFTEVTU19QUk9EVUNUX01DOTUwRAkJMHg0NDAwCiAKKyNkZWZpbmUgTk9WQVRFTFdJUkVMRVNTX1BST0RVQ1RfVTcyNwkJMHg1MDEwCisKIC8qIEZVVFVSRSBOT1ZBVEVMIFBST0RVQ1RTICovCiAjZGVmaW5lIE5PVkFURUxXSVJFTEVTU19QUk9EVUNUX0VWRE9fMQkJMHg2MDAwCiAjZGVmaW5lIE5PVkFURUxXSVJFTEVTU19QUk9EVUNUX0hTUEFfMQkJMHg3MDAwCkBAIC0xNDcsNiArMTY2LDEyIEBACiAjZGVmaW5lIE5PVkFURUxXSVJFTEVTU19QUk9EVUNUX0VNQkVEREVEXzIJMHg4MDAxCiAjZGVmaW5lIE5PVkFURUxXSVJFTEVTU19QUk9EVUNUX0dMT0JBTF8yCTB4OTAwMQogCisvKiBBTU9JIFBST0RVQ1RTICovCisjZGVmaW5lIEFNT0lfVkVORE9SX0lECQkJCTB4MTYxNAorI2RlZmluZSBBTU9JX1BST0RVQ1RfSDAxCQkJMHgwODAwCisjZGVmaW5lIEFNT0lfUFJPRFVDVF9IMDFBCQkJMHg3MDAyCisjZGVmaW5lIEFNT0lfUFJPRFVDVF9IMDIJCQkweDA4MDIKKwogI2RlZmluZSBERUxMX1ZFTkRPUl9JRAkJCQkweDQxM0MKIAogI2RlZmluZSBLWU9DRVJBX1ZFTkRPUl9JRAkJCTB4MGM4OApAQCAtMTYzLDggKzE4OCwxMyBAQAogI2RlZmluZSBCQU5EUklDSF9QUk9EVUNUX0MxMDBfMQkJCTB4MTAwMgogI2RlZmluZSBCQU5EUklDSF9QUk9EVUNUX0MxMDBfMgkJCTB4MTAwMwogCisjZGVmaW5lIEFNT0lfVkVORE9SX0lECQkJMHgxNjE0CisjZGVmaW5lIEFNT0lfUFJPRFVDVF85NTA4CQkJMHgwODAwCisKICNkZWZpbmUgUVVBTENPTU1fVkVORE9SX0lECQkJMHgwNUM2CiAKKyNkZWZpbmUgTUFYT05fVkVORE9SX0lECQkJCTB4MTZkOAorCiBzdGF0aWMgc3RydWN0IHVzYl9kZXZpY2VfaWQgb3B0aW9uX2lkc1tdID0gewogCXsgVVNCX0RFVklDRShPUFRJT05fVkVORE9SX0lELCBPUFRJT05fUFJPRFVDVF9DT0xUKSB9LAogCXsgVVNCX0RFVklDRShPUFRJT05fVkVORE9SX0lELCBPUFRJT05fUFJPRFVDVF9SSUNPTEEpIH0sCkBAIC0yMDQsNiArMjM0LDIzIEBACiAJeyBVU0JfREVWSUNFKEhVQVdFSV9WRU5ET1JfSUQsIEhVQVdFSV9QUk9EVUNUX0U2MDApIH0sCiAJeyBVU0JfREVWSUNFX0FORF9JTlRFUkZBQ0VfSU5GTyhIVUFXRUlfVkVORE9SX0lELCBIVUFXRUlfUFJPRFVDVF9FMjIwLCAweGZmLCAweGZmLCAweGZmKSB9LAogCXsgVVNCX0RFVklDRV9BTkRfSU5URVJGQUNFX0lORk8oSFVBV0VJX1ZFTkRPUl9JRCwgSFVBV0VJX1BST0RVQ1RfRTIyMEJJUywgMHhmZiwgMHhmZiwgMHhmZikgfSwKKwl7IFVTQl9ERVZJQ0UoSFVBV0VJX1ZFTkRPUl9JRCwgSFVBV0VJX1BST0RVQ1RfRTE0MDEpIH0sCisJeyBVU0JfREVWSUNFKEhVQVdFSV9WRU5ET1JfSUQsIEhVQVdFSV9QUk9EVUNUX0UxNDAzKSB9LAorCXsgVVNCX0RFVklDRShIVUFXRUlfVkVORE9SX0lELCBIVUFXRUlfUFJPRFVDVF9FMTQwNSkgfSwKKwl7IFVTQl9ERVZJQ0UoSFVBV0VJX1ZFTkRPUl9JRCwgSFVBV0VJX1BST0RVQ1RfRTE0MDYpIH0sCisJeyBVU0JfREVWSUNFKEhVQVdFSV9WRU5ET1JfSUQsIEhVQVdFSV9QUk9EVUNUX0UxNDA4KSB9LAorCXsgVVNCX0RFVklDRShIVUFXRUlfVkVORE9SX0lELCBIVUFXRUlfUFJPRFVDVF9FMTQwOSkgfSwKKwl7IFVTQl9ERVZJQ0UoSFVBV0VJX1ZFTkRPUl9JRCwgSFVBV0VJX1BST0RVQ1RfRTE0MTApIH0sCisJeyBVU0JfREVWSUNFKEhVQVdFSV9WRU5ET1JfSUQsIEhVQVdFSV9QUk9EVUNUX0UxNDExKSB9LAorCXsgVVNCX0RFVklDRShIVUFXRUlfVkVORE9SX0lELCBIVUFXRUlfUFJPRFVDVF9FMTQxMikgfSwKKwl7IFVTQl9ERVZJQ0UoSFVBV0VJX1ZFTkRPUl9JRCwgSFVBV0VJX1BST0RVQ1RfRTE0MTMpIH0sCisJeyBVU0JfREVWSUNFKEhVQVdFSV9WRU5ET1JfSUQsIEhVQVdFSV9QUk9EVUNUX0UxNDE0KSB9LAorCXsgVVNCX0RFVklDRShIVUFXRUlfVkVORE9SX0lELCBIVUFXRUlfUFJPRFVDVF9FMTQxNSkgfSwKKwl7IFVTQl9ERVZJQ0UoSFVBV0VJX1ZFTkRPUl9JRCwgSFVBV0VJX1BST0RVQ1RfRTE0MTYpIH0sCisJeyBVU0JfREVWSUNFKEhVQVdFSV9WRU5ET1JfSUQsIEhVQVdFSV9QUk9EVUNUX0UxNDE3KSB9LAorCXsgVVNCX0RFVklDRShIVUFXRUlfVkVORE9SX0lELCBIVUFXRUlfUFJPRFVDVF9FMTQxOCkgfSwKKwl7IFVTQl9ERVZJQ0UoSFVBV0VJX1ZFTkRPUl9JRCwgSFVBV0VJX1BST0RVQ1RfRTE0MTkpIH0sCisJeyBVU0JfREVWSUNFKEFNT0lfVkVORE9SX0lELCBBTU9JX1BST0RVQ1RfOTUwOCkgfSwKIAl7IFVTQl9ERVZJQ0UoTk9WQVRFTFdJUkVMRVNTX1ZFTkRPUl9JRCwgTk9WQVRFTFdJUkVMRVNTX1BST0RVQ1RfVjY0MCkgfSwgLyogTm92YXRlbCBNZXJsaW4gVjY0MC9YVjYyMCAqLwogCXsgVVNCX0RFVklDRShOT1ZBVEVMV0lSRUxFU1NfVkVORE9SX0lELCBOT1ZBVEVMV0lSRUxFU1NfUFJPRFVDVF9WNjIwKSB9LCAvKiBOb3ZhdGVsIE1lcmxpbiBWNjIwL1M2MjAgKi8KIAl7IFVTQl9ERVZJQ0UoTk9WQVRFTFdJUkVMRVNTX1ZFTkRPUl9JRCwgTk9WQVRFTFdJUkVMRVNTX1BST0RVQ1RfVjc0MCkgfSwgLyogTm92YXRlbCBNZXJsaW4gRVg3MjAvVjc0MC9YNzIwICovCkBAIC0yMTYsMTMgKzI2MywxMyBAQAogCXsgVVNCX0RFVklDRShOT1ZBVEVMV0lSRUxFU1NfVkVORE9SX0lELCBOT1ZBVEVMV0lSRUxFU1NfUFJPRFVDVF9FVjYyMCkgfSwgLyogTm92YXRlbCBFVjYyMC9FUzYyMCBDRE1BL0VWLURPICovCiAJeyBVU0JfREVWSUNFKE5PVkFURUxXSVJFTEVTU19WRU5ET1JfSUQsIE5PVkFURUxXSVJFTEVTU19QUk9EVUNUX0VTNzIwKSB9LCAvKiBOb3ZhdGVsIEVTNjIwL0VTNzIwL1U3MjAvVVNCNzIwICovCiAJeyBVU0JfREVWSUNFKE5PVkFURUxXSVJFTEVTU19WRU5ET1JfSUQsIE5PVkFURUxXSVJFTEVTU19QUk9EVUNUX0U3MjUpIH0sIC8qIE5vdmF0ZWwgRTcyNS9FNzI2ICovCi0JeyBVU0JfREVWSUNFKE5PVkFURUxXSVJFTEVTU19WRU5ET1JfSUQsIDB4MjEzMCkgfSwgLyogTm92YXRlbCBNZXJsaW4gRVM2MjAgU00gQnVzICovCisJeyBVU0JfREVWSUNFKE5PVkFURUxXSVJFTEVTU19WRU5ET1JfSUQsIE5PVkFURUxXSVJFTEVTU19QUk9EVUNUX0VTNjIwKSB9LCAvKiBOb3ZhdGVsIE1lcmxpbiBFUzYyMCBTTSBCdXMgKi8KIAl7IFVTQl9ERVZJQ0UoTk9WQVRFTFdJUkVMRVNTX1ZFTkRPUl9JRCwgTk9WQVRFTFdJUkVMRVNTX1BST0RVQ1RfRVU3MzApIH0sIC8qIE5vdmF0ZWwgRVU3MzAgYW5kIFZvZGFmb25lIEVVNzQwICovCiAJeyBVU0JfREVWSUNFKE5PVkFURUxXSVJFTEVTU19WRU5ET1JfSUQsIE5PVkFURUxXSVJFTEVTU19QUk9EVUNUX0VVNzQwKSB9LCAvKiBOb3ZhdGVsIG5vbi1Wb2RhZm9uZSBFVTc0MCAqLwogCXsgVVNCX0RFVklDRShOT1ZBVEVMV0lSRUxFU1NfVkVORE9SX0lELCBOT1ZBVEVMV0lSRUxFU1NfUFJPRFVDVF9FVTg3MEQpIH0sIC8qIE5vdmF0ZWwgRVU4NTBEL0VVODYwRC9FVTg3MEQgKi8KIAl7IFVTQl9ERVZJQ0UoTk9WQVRFTFdJUkVMRVNTX1ZFTkRPUl9JRCwgTk9WQVRFTFdJUkVMRVNTX1BST0RVQ1RfTUM5NTBEKSB9LCAvKiBOb3ZhdGVsIE1DOTMwRC9NQzk1MEQgKi8KIAl7IFVTQl9ERVZJQ0UoTk9WQVRFTFdJUkVMRVNTX1ZFTkRPUl9JRCwgTk9WQVRFTFdJUkVMRVNTX1BST0RVQ1RfTUM3MjcpIH0sIC8qIE5vdmF0ZWwgTUM3MjcvVTcyNy9VU0I3MjcgKi8KLQl7IFVTQl9ERVZJQ0UoTk9WQVRFTFdJUkVMRVNTX1ZFTkRPUl9JRCwgMHg1MDEwKSB9LCAvKiBOb3ZhdGVsIFU3MjcgKi8KKwl7IFVTQl9ERVZJQ0UoTk9WQVRFTFdJUkVMRVNTX1ZFTkRPUl9JRCwgTk9WQVRFTFdJUkVMRVNTX1BST0RVQ1RfVTcyNykgfSwgLyogTm92YXRlbCBVNzI3ICovCiAJeyBVU0JfREVWSUNFKE5PVkFURUxXSVJFTEVTU19WRU5ET1JfSUQsIE5PVkFURUxXSVJFTEVTU19QUk9EVUNUX0VWRE9fMSkgfSwgLyogTm92YXRlbCBFVkRPIHByb2R1Y3QgKi8KIAl7IFVTQl9ERVZJQ0UoTk9WQVRFTFdJUkVMRVNTX1ZFTkRPUl9JRCwgTk9WQVRFTFdJUkVMRVNTX1BST0RVQ1RfSFNQQV8xKSB9LCAvKiBOb3ZhdGVsIEhTUEEgcHJvZHVjdCAqLwogCXsgVVNCX0RFVklDRShOT1ZBVEVMV0lSRUxFU1NfVkVORE9SX0lELCBOT1ZBVEVMV0lSRUxFU1NfUFJPRFVDVF9FTUJFRERFRF8xKSB9LCAvKiBOb3ZhdGVsIEVtYmVkZGVkIHByb2R1Y3QgKi8KQEAgLTIzMiw2ICsyNzksMTAgQEAKIAl7IFVTQl9ERVZJQ0UoTk9WQVRFTFdJUkVMRVNTX1ZFTkRPUl9JRCwgTk9WQVRFTFdJUkVMRVNTX1BST0RVQ1RfRU1CRURERURfMikgfSwgLyogTm92YXRlbCBFbWJlZGRlZCBwcm9kdWN0ICovCiAJeyBVU0JfREVWSUNFKE5PVkFURUxXSVJFTEVTU19WRU5ET1JfSUQsIE5PVkFURUxXSVJFTEVTU19QUk9EVUNUX0dMT0JBTF8yKSB9LCAvKiBOb3ZhdGVsIEdsb2JhbCBwcm9kdWN0ICovCiAKKwl7IFVTQl9ERVZJQ0UoQU1PSV9WRU5ET1JfSUQsIEFNT0lfUFJPRFVDVF9IMDEpIH0sCisJeyBVU0JfREVWSUNFKEFNT0lfVkVORE9SX0lELCBBTU9JX1BST0RVQ1RfSDAxQSkgfSwKKwl7IFVTQl9ERVZJQ0UoQU1PSV9WRU5ET1JfSUQsIEFNT0lfUFJPRFVDVF9IMDIpIH0sCisKIAl7IFVTQl9ERVZJQ0UoREVMTF9WRU5ET1JfSUQsIDB4ODExNCkgfSwJLyogRGVsbCBXaXJlbGVzcyA1NzAwIE1vYmlsZSBCcm9hZGJhbmQgQ0RNQS9FVkRPIE1pbmktQ2FyZCA9PSBOb3ZhdGVsIEV4cGVkaXRlIEVWNjIwIENETUEvRVYtRE8gKi8KIAl7IFVTQl9ERVZJQ0UoREVMTF9WRU5ET1JfSUQsIDB4ODExNSkgfSwJLyogRGVsbCBXaXJlbGVzcyA1NTAwIE1vYmlsZSBCcm9hZGJhbmQgSFNEUEEgTWluaS1DYXJkID09IE5vdmF0ZWwgRXhwZWRpdGUgRVU3NDAgSFNEUEEvM0cgKi8KIAl7IFVTQl9ERVZJQ0UoREVMTF9WRU5ET1JfSUQsIDB4ODExNikgfSwJLyogRGVsbCBXaXJlbGVzcyA1NTA1IE1vYmlsZSBCcm9hZGJhbmQgSFNEUEEgTWluaS1DYXJkID09IE5vdmF0ZWwgRXhwZWRpdGUgRVU3NDAgSFNEUEEvM0cgKi8KQEAgLTI0OSw2ICszMDAsNyBAQAogCXsgVVNCX0RFVklDRShCQU5EUklDSF9WRU5ET1JfSUQsIEJBTkRSSUNIX1BST0RVQ1RfQzEwMF8yKSB9LAogCXsgVVNCX0RFVklDRShLWU9DRVJBX1ZFTkRPUl9JRCwgS1lPQ0VSQV9QUk9EVUNUX0tQQzY4MCkgfSwKIAl7IFVTQl9ERVZJQ0UoUVVBTENPTU1fVkVORE9SX0lELCAweDY2MTMpfSwgLyogT25kYSBINjAwL1pURSBNRjMzMCAqLworCXsgVVNCX0RFVklDRShNQVhPTl9WRU5ET1JfSUQsIDB4NjI4MCkgfSwgLyogQlAzLVVTQiAmIEJQMy1FWFQgSFNEUEEgKi8KIAl7IH0gLyogVGVybWluYXRpbmcgZW50cnkgKi8KIH07CiBNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgb3B0aW9uX2lkcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvdXNiLXNlcmlhbC5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL3VzYi1zZXJpYWwuYwppbmRleCAzY2U5OGU4Li4yMTM4YmE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvdXNiLXNlcmlhbC5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC91c2Itc2VyaWFsLmMKQEAgLTg1NCw2ICs4NTQsNyBAQAogCXNlcmlhbC0+bnVtX2ludGVycnVwdF9pbiA9IG51bV9pbnRlcnJ1cHRfaW47CiAJc2VyaWFsLT5udW1faW50ZXJydXB0X291dCA9IG51bV9pbnRlcnJ1cHRfb3V0OwogCisjaWYgMAogCS8qIGNoZWNrIHRoYXQgdGhlIGRldmljZSBtZWV0cyB0aGUgZHJpdmVyJ3MgcmVxdWlyZW1lbnRzICovCiAJaWYgKCh0eXBlLT5udW1faW50ZXJydXB0X2luICE9IE5VTV9ET05UX0NBUkUgJiYKIAkJCQl0eXBlLT5udW1faW50ZXJydXB0X2luICE9IG51bV9pbnRlcnJ1cHRfaW4pCkBAIC04NjcsNiArODY4LDcgQEAKIAkJa2ZyZWUoc2VyaWFsKTsKIAkJcmV0dXJuIC1FSU87CiAJfQorI2VuZGlmCiAKIAkvKiBmb3VuZCBhbGwgdGhhdCB3ZSBuZWVkICovCiAJZGV2X2luZm8oJmludGVyZmFjZS0+ZGV2LCAiJXMgY29udmVydGVyIGRldGVjdGVkXG4iLApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc3RvcmFnZS91bnVzdWFsX2RldnMuaCBiL2RyaXZlcnMvdXNiL3N0b3JhZ2UvdW51c3VhbF9kZXZzLmgKaW5kZXggZTUyMTlhNS4uOTEyNTIwNyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc3RvcmFnZS91bnVzdWFsX2RldnMuaAorKysgYi9kcml2ZXJzL3VzYi9zdG9yYWdlL3VudXN1YWxfZGV2cy5oCkBAIC0xNTMwLDE2ICsxNTMwLDEwNCBAQAogCQlVU19TQ19ERVZJQ0UsIFVTX1BSX0RFVklDRSwgTlVMTCwKIAkJVVNfRkxfSUdOT1JFX1JFU0lEVUUgKSwKIAotLyogUmVwb3J0ZWQgYnkgZmFuZ3hpYW96aGkgPGZhbmd4aWFvemhpNjA2NzVAaHVhd2VpLmNvbT4KLSAqIGFuZCBieSBsaW5sZWkgPGxpbmxlaTgzQGh1YXdlaS5jb20+Ci0gKiBQYXRjaCByZXdvcmtlZCBieSBKb2hhbm4gV2lsaGVsbSA8am9oYW5uLndpbGhlbG1Ac3R1ZGVudC50dWdyYXouYXQ+Ci0gKiBUaGlzIGJyaW5ncyB0aGUgSFVBV0VJIEUyMjAgZGV2aWNlcyBpbnRvIG11bHRpLXBvcnQgbW9kZQorLyogUmVwb3J0ZWQgYnkgZmFuZ3hpYW96aGkgPGh1YW5hbmh1QGh1YXdlaS5jb20+CisgKiBUaGlzIGJyaW5ncyB0aGUgSFVBV0VJIGRhdGEgY2FyZCBkZXZpY2VzIGludG8gbXVsdGktcG9ydCBtb2RlCiAgKi8KK1VOVVNVQUxfREVWKCAweDEyZDEsIDB4MTAwMSwgMHgwMDAwLCAweDAwMDAsCisJCSJIVUFXRUkgTU9CSUxFIiwKKwkJIk1hc3MgU3RvcmFnZSIsCisJCVVTX1NDX0RFVklDRSwgVVNfUFJfREVWSUNFLCB1c2Jfc3Rvcl9odWF3ZWlfZTIyMF9pbml0LAorCQkwKSwKIFVOVVNVQUxfREVWKCAweDEyZDEsIDB4MTAwMywgMHgwMDAwLCAweDAwMDAsCiAJCSJIVUFXRUkgTU9CSUxFIiwKIAkJIk1hc3MgU3RvcmFnZSIsCiAJCVVTX1NDX0RFVklDRSwgVVNfUFJfREVWSUNFLCB1c2Jfc3Rvcl9odWF3ZWlfZTIyMF9pbml0LAogCQkwKSwKK1VOVVNVQUxfREVWKCAweDEyZDEsIDB4MTAwNCwgMHgwMDAwLCAweDAwMDAsCisJCSJIVUFXRUkgTU9CSUxFIiwKKwkJIk1hc3MgU3RvcmFnZSIsCisJCVVTX1NDX0RFVklDRSwgVVNfUFJfREVWSUNFLCB1c2Jfc3Rvcl9odWF3ZWlfZTIyMF9pbml0LAorCQkwKSwKK1VOVVNVQUxfREVWKCAweDEyZDEsIDB4MTQwMSwgMHgwMDAwLCAweDAwMDAsCisJCSJIVUFXRUkgTU9CSUxFIiwKKwkJIk1hc3MgU3RvcmFnZSIsCisJCVVTX1NDX0RFVklDRSwgVVNfUFJfREVWSUNFLCB1c2Jfc3Rvcl9odWF3ZWlfZTIyMF9pbml0LAorCQkwKSwKK1VOVVNVQUxfREVWKCAweDEyZDEsIDB4MTQwMywgMHgwMDAwLCAweDAwMDAsCisJCSJIVUFXRUkgTU9CSUxFIiwKKwkJIk1hc3MgU3RvcmFnZSIsCisJCVVTX1NDX0RFVklDRSwgVVNfUFJfREVWSUNFLCB1c2Jfc3Rvcl9odWF3ZWlfZTIyMF9pbml0LAorCQkwKSwKK1VOVVNVQUxfREVWKCAweDEyZDEsIDB4MTQwNSwgMHgwMDAwLCAweDAwMDAsCisJCSJIVUFXRUkgTU9CSUxFIiwKKwkJIk1hc3MgU3RvcmFnZSIsCisJCVVTX1NDX0RFVklDRSwgVVNfUFJfREVWSUNFLCB1c2Jfc3Rvcl9odWF3ZWlfZTIyMF9pbml0LAorCQkwKSwKK1VOVVNVQUxfREVWKCAweDEyZDEsIDB4MTQwNiwgMHgwMDAwLCAweDAwMDAsCisJCSJIVUFXRUkgTU9CSUxFIiwKKwkJIk1hc3MgU3RvcmFnZSIsCisJCVVTX1NDX0RFVklDRSwgVVNfUFJfREVWSUNFLCB1c2Jfc3Rvcl9odWF3ZWlfZTIyMF9pbml0LAorCQkwKSwKK1VOVVNVQUxfREVWKCAweDEyZDEsIDB4MTQwOCwgMHgwMDAwLCAweDAwMDAsCisJCSJIVUFXRUkgTU9CSUxFIiwKKwkJIk1hc3MgU3RvcmFnZSIsCisJCVVTX1NDX0RFVklDRSwgVVNfUFJfREVWSUNFLCB1c2Jfc3Rvcl9odWF3ZWlfZTIyMF9pbml0LAorCQkwKSwKK1VOVVNVQUxfREVWKCAweDEyZDEsIDB4MTQwOSwgMHgwMDAwLCAweDAwMDAsCisJCSJIVUFXRUkgTU9CSUxFIiwKKwkJIk1hc3MgU3RvcmFnZSIsCisJCVVTX1NDX0RFVklDRSwgVVNfUFJfREVWSUNFLCB1c2Jfc3Rvcl9odWF3ZWlfZTIyMF9pbml0LAorCQkwKSwKK1VOVVNVQUxfREVWKCAweDEyZDEsIDB4MTQxMCwgMHgwMDAwLCAweDAwMDAsCisJCSJIVUFXRUkgTU9CSUxFIiwKKwkJIk1hc3MgU3RvcmFnZSIsCisJCVVTX1NDX0RFVklDRSwgVVNfUFJfREVWSUNFLCB1c2Jfc3Rvcl9odWF3ZWlfZTIyMF9pbml0LAorCQkwKSwKK1VOVVNVQUxfREVWKCAweDEyZDEsIDB4MTQxMSwgMHgwMDAwLCAweDAwMDAsCisJCSJIVUFXRUkgTU9CSUxFIiwKKwkJIk1hc3MgU3RvcmFnZSIsCisJCVVTX1NDX0RFVklDRSwgVVNfUFJfREVWSUNFLCB1c2Jfc3Rvcl9odWF3ZWlfZTIyMF9pbml0LAorCQkwKSwKK1VOVVNVQUxfREVWKCAweDEyZDEsIDB4MTQxMiwgMHgwMDAwLCAweDAwMDAsCisJCSJIVUFXRUkgTU9CSUxFIiwKKwkJIk1hc3MgU3RvcmFnZSIsCisJCVVTX1NDX0RFVklDRSwgVVNfUFJfREVWSUNFLCB1c2Jfc3Rvcl9odWF3ZWlfZTIyMF9pbml0LAorCQkwKSwKK1VOVVNVQUxfREVWKCAweDEyZDEsIDB4MTQxMywgMHgwMDAwLCAweDAwMDAsCisJCSJIVUFXRUkgTU9CSUxFIiwKKwkJIk1hc3MgU3RvcmFnZSIsCisJCVVTX1NDX0RFVklDRSwgVVNfUFJfREVWSUNFLCB1c2Jfc3Rvcl9odWF3ZWlfZTIyMF9pbml0LAorCQkwKSwKK1VOVVNVQUxfREVWKCAweDEyZDEsIDB4MTQxNCwgMHgwMDAwLCAweDAwMDAsCisJCSJIVUFXRUkgTU9CSUxFIiwKKwkJIk1hc3MgU3RvcmFnZSIsCisJCVVTX1NDX0RFVklDRSwgVVNfUFJfREVWSUNFLCB1c2Jfc3Rvcl9odWF3ZWlfZTIyMF9pbml0LAorCQkwKSwKK1VOVVNVQUxfREVWKCAweDEyZDEsIDB4MTQxNSwgMHgwMDAwLCAweDAwMDAsCisJCSJIVUFXRUkgTU9CSUxFIiwKKwkJIk1hc3MgU3RvcmFnZSIsCisJCVVTX1NDX0RFVklDRSwgVVNfUFJfREVWSUNFLCB1c2Jfc3Rvcl9odWF3ZWlfZTIyMF9pbml0LAorCQkwKSwKK1VOVVNVQUxfREVWKCAweDEyZDEsIDB4MTQxNiwgMHgwMDAwLCAweDAwMDAsCisJCSJIVUFXRUkgTU9CSUxFIiwKKwkJIk1hc3MgU3RvcmFnZSIsCisJCVVTX1NDX0RFVklDRSwgVVNfUFJfREVWSUNFLCB1c2Jfc3Rvcl9odWF3ZWlfZTIyMF9pbml0LAorCQkwKSwKK1VOVVNVQUxfREVWKCAweDEyZDEsIDB4MTQxNywgMHgwMDAwLCAweDAwMDAsCisJCSJIVUFXRUkgTU9CSUxFIiwKKwkJIk1hc3MgU3RvcmFnZSIsCisJCVVTX1NDX0RFVklDRSwgVVNfUFJfREVWSUNFLCB1c2Jfc3Rvcl9odWF3ZWlfZTIyMF9pbml0LAorCQkwKSwKK1VOVVNVQUxfREVWKCAweDEyZDEsIDB4MTQxOCwgMHgwMDAwLCAweDAwMDAsCisJCSJIVUFXRUkgTU9CSUxFIiwKKwkJIk1hc3MgU3RvcmFnZSIsCisJCVVTX1NDX0RFVklDRSwgVVNfUFJfREVWSUNFLCB1c2Jfc3Rvcl9odWF3ZWlfZTIyMF9pbml0LAorCQkwKSwKK1VOVVNVQUxfREVWKCAweDEyZDEsIDB4MTQxOSwgMHgwMDAwLCAweDAwMDAsCisJCSJIVUFXRUkgTU9CSUxFIiwKKwkJIk1hc3MgU3RvcmFnZSIsCisJCVVTX1NDX0RFVklDRSwgVVNfUFJfREVWSUNFLCB1c2Jfc3Rvcl9odWF3ZWlfZTIyMF9pbml0LAorCQkwKSwKIAogLyogUmVwb3J0ZWQgYnkgVmlsaXVzIEJpbGlua2V2aWNpdXMgPHZpbGlzYXMgQVQgeHh4IERPVCBsdCkgKi8KIFVOVVNVQUxfREVWKCAgMHgxMzJiLCAweDAwMGIsIDB4MDAwMSwgMHgwMDAxLApkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYm1lbS5jIGIvZHJpdmVycy92aWRlby9mYm1lbS5jCmluZGV4IDExOTRmNWUuLjAxMDcyZjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vZmJtZW0uYworKysgYi9kcml2ZXJzL3ZpZGVvL2ZibWVtLmMKQEAgLTE1MjEsNiArMTUyMSw3IEBACiBzdGF0aWMgdm9pZCBfX2V4aXQKIGZibWVtX2V4aXQodm9pZCkKIHsKKwlyZW1vdmVfcHJvY19lbnRyeSgiZmIiLCBOVUxMKTsKIAljbGFzc19kZXN0cm95KGZiX2NsYXNzKTsKIAl1bnJlZ2lzdGVyX2NocmRldihGQl9NQUpPUiwgImZiIik7CiB9CmRpZmYgLS1naXQgYS9mcy9hZnMvbWFpbi5jIGIvZnMvYWZzL21haW4uYwppbmRleCAwZjYwZjZiLi4yZDNlNWQ0IDEwMDY0NAotLS0gYS9mcy9hZnMvbWFpbi5jCisrKyBiL2ZzL2Fmcy9tYWluLmMKQEAgLTIyLDcgKzIyLDcgQEAKIAogdW5zaWduZWQgYWZzX2RlYnVnOwogbW9kdWxlX3BhcmFtX25hbWVkKGRlYnVnLCBhZnNfZGVidWcsIHVpbnQsIFNfSVdVU1IgfCBTX0lSVUdPKTsKLU1PRFVMRV9QQVJNX0RFU0MoYWZzX2RlYnVnLCAiQUZTIGRlYnVnZ2luZyBtYXNrIik7CitNT0RVTEVfUEFSTV9ERVNDKGRlYnVnLCAiQUZTIGRlYnVnZ2luZyBtYXNrIik7CiAKIHN0YXRpYyBjaGFyICpyb290Y2VsbDsKIApkaWZmIC0tZ2l0IGEvZnMvZXh0Mi94YXR0ci5jIGIvZnMvZXh0Mi94YXR0ci5jCmluZGV4IDNlODY4M2QuLmE5OWQ0NmYgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDIveGF0dHIuYworKysgYi9mcy9leHQyL3hhdHRyLmMKQEAgLTgzNSw3ICs4MzUsNyBAQAogCXN0cnVjdCBtYl9jYWNoZV9lbnRyeSAqY2U7CiAJaW50IGVycm9yOwogCi0JY2UgPSBtYl9jYWNoZV9lbnRyeV9hbGxvYyhleHQyX3hhdHRyX2NhY2hlKTsKKwljZSA9IG1iX2NhY2hlX2VudHJ5X2FsbG9jKGV4dDJfeGF0dHJfY2FjaGUsIEdGUF9OT0ZTKTsKIAlpZiAoIWNlKQogCQlyZXR1cm4gLUVOT01FTTsKIAllcnJvciA9IG1iX2NhY2hlX2VudHJ5X2luc2VydChjZSwgYmgtPmJfYmRldiwgYmgtPmJfYmxvY2tuciwgJmhhc2gpOwpkaWZmIC0tZ2l0IGEvZnMvZXh0My94YXR0ci5jIGIvZnMvZXh0My94YXR0ci5jCmluZGV4IGE2ZWE0ZDYuLjQyODU2NTQgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDMveGF0dHIuYworKysgYi9mcy9leHQzL3hhdHRyLmMKQEAgLTExMjYsNyArMTEyNiw3IEBACiAJc3RydWN0IG1iX2NhY2hlX2VudHJ5ICpjZTsKIAlpbnQgZXJyb3I7CiAKLQljZSA9IG1iX2NhY2hlX2VudHJ5X2FsbG9jKGV4dDNfeGF0dHJfY2FjaGUpOworCWNlID0gbWJfY2FjaGVfZW50cnlfYWxsb2MoZXh0M194YXR0cl9jYWNoZSwgR0ZQX05PRlMpOwogCWlmICghY2UpIHsKIAkJZWFfYmRlYnVnKGJoLCAib3V0IG9mIG1lbW9yeSIpOwogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9mcy9leHQ0L3hhdHRyLmMgYi9mcy9leHQ0L3hhdHRyLmMKaW5kZXggZDc5NjIxMy4uZTkwNTRjMSAxMDA2NDQKLS0tIGEvZnMvZXh0NC94YXR0ci5jCisrKyBiL2ZzL2V4dDQveGF0dHIuYwpAQCAtMTM4Niw3ICsxMzg2LDcgQEAKIAlzdHJ1Y3QgbWJfY2FjaGVfZW50cnkgKmNlOwogCWludCBlcnJvcjsKIAotCWNlID0gbWJfY2FjaGVfZW50cnlfYWxsb2MoZXh0NF94YXR0cl9jYWNoZSk7CisJY2UgPSBtYl9jYWNoZV9lbnRyeV9hbGxvYyhleHQ0X3hhdHRyX2NhY2hlLCBHRlBfTk9GUyk7CiAJaWYgKCFjZSkgewogCQllYV9iZGVidWcoYmgsICJvdXQgb2YgbWVtb3J5Iik7CiAJCXJldHVybjsKZGlmZiAtLWdpdCBhL2ZzL2pmZnMyL2ZpbGUuYyBiL2ZzL2pmZnMyL2ZpbGUuYwppbmRleCBmOWM1ZGQ2Li5kY2MyNzM0IDEwMDY0NAotLS0gYS9mcy9qZmZzMi9maWxlLmMKKysrIGIvZnMvamZmczIvZmlsZS5jCkBAIC0xMjksNyArMTI5LDcgQEAKIAlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gbWFwcGluZy0+aG9zdDsKIAlzdHJ1Y3QgamZmczJfaW5vZGVfaW5mbyAqZiA9IEpGRlMyX0lOT0RFX0lORk8oaW5vZGUpOwogCXBnb2ZmX3QgaW5kZXggPSBwb3MgPj4gUEFHRV9DQUNIRV9TSElGVDsKLQl1aW50MzJfdCBwYWdlb2ZzID0gcG9zICYgKFBBR0VfQ0FDSEVfU0laRSAtIDEpOworCXVpbnQzMl90IHBhZ2VvZnMgPSBpbmRleCA8PCBQQUdFX0NBQ0hFX1NISUZUOwogCWludCByZXQgPSAwOwogCiAJcGcgPSBfX2dyYWJfY2FjaGVfcGFnZShtYXBwaW5nLCBpbmRleCk7CmRpZmYgLS1naXQgYS9mcy9sb2Nrcy5jIGIvZnMvbG9ja3MuYwppbmRleCBkODNmYWIxLi40M2MwYWYyIDEwMDY0NAotLS0gYS9mcy9sb2Nrcy5jCisrKyBiL2ZzL2xvY2tzLmMKQEAgLTE4MDEsMTcgKzE4MDEsMjEgQEAKIAlpZiAoZXJyb3IpCiAJCWdvdG8gb3V0OwogCi0JZm9yICg7OykgewotCQllcnJvciA9IHZmc19sb2NrX2ZpbGUoZmlscCwgY21kLCBmaWxlX2xvY2ssIE5VTEwpOwotCQlpZiAoZXJyb3IgIT0gLUVBR0FJTiB8fCBjbWQgPT0gRl9TRVRMSykKLQkJCWJyZWFrOwotCQllcnJvciA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZShmaWxlX2xvY2stPmZsX3dhaXQsCi0JCQkJIWZpbGVfbG9jay0+ZmxfbmV4dCk7Ci0JCWlmICghZXJyb3IpCi0JCQljb250aW51ZTsKKwlpZiAoZmlscC0+Zl9vcCAmJiBmaWxwLT5mX29wLT5sb2NrICE9IE5VTEwpCisJCWVycm9yID0gZmlscC0+Zl9vcC0+bG9jayhmaWxwLCBjbWQsIGZpbGVfbG9jayk7CisJZWxzZSB7CisJCWZvciAoOzspIHsKKwkJCWVycm9yID0gcG9zaXhfbG9ja19maWxlKGZpbHAsIGZpbGVfbG9jaywgTlVMTCk7CisJCQlpZiAoZXJyb3IgIT0gLUVBR0FJTiB8fCBjbWQgPT0gRl9TRVRMSykKKwkJCQlicmVhazsKKwkJCWVycm9yID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGZpbGVfbG9jay0+Zmxfd2FpdCwKKwkJCQkJIWZpbGVfbG9jay0+ZmxfbmV4dCk7CisJCQlpZiAoIWVycm9yKQorCQkJCWNvbnRpbnVlOwogCi0JCWxvY2tzX2RlbGV0ZV9ibG9jayhmaWxlX2xvY2spOwotCQlicmVhazsKKwkJCWxvY2tzX2RlbGV0ZV9ibG9jayhmaWxlX2xvY2spOworCQkJYnJlYWs7CisJCX0KIAl9CiAKIAkvKgpAQCAtMTkyNSwxNyArMTkyOSwyMSBAQAogCWlmIChlcnJvcikKIAkJZ290byBvdXQ7CiAKLQlmb3IgKDs7KSB7Ci0JCWVycm9yID0gdmZzX2xvY2tfZmlsZShmaWxwLCBjbWQsIGZpbGVfbG9jaywgTlVMTCk7Ci0JCWlmIChlcnJvciAhPSAtRUFHQUlOIHx8IGNtZCA9PSBGX1NFVExLNjQpCi0JCQlicmVhazsKLQkJZXJyb3IgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoZmlsZV9sb2NrLT5mbF93YWl0LAotCQkJCSFmaWxlX2xvY2stPmZsX25leHQpOwotCQlpZiAoIWVycm9yKQotCQkJY29udGludWU7CisJaWYgKGZpbHAtPmZfb3AgJiYgZmlscC0+Zl9vcC0+bG9jayAhPSBOVUxMKQorCQllcnJvciA9IGZpbHAtPmZfb3AtPmxvY2soZmlscCwgY21kLCBmaWxlX2xvY2spOworCWVsc2UgeworCQlmb3IgKDs7KSB7CisJCQllcnJvciA9IHBvc2l4X2xvY2tfZmlsZShmaWxwLCBmaWxlX2xvY2ssIE5VTEwpOworCQkJaWYgKGVycm9yICE9IC1FQUdBSU4gfHwgY21kID09IEZfU0VUTEs2NCkKKwkJCQlicmVhazsKKwkJCWVycm9yID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKGZpbGVfbG9jay0+Zmxfd2FpdCwKKwkJCQkJIWZpbGVfbG9jay0+ZmxfbmV4dCk7CisJCQlpZiAoIWVycm9yKQorCQkJCWNvbnRpbnVlOwogCi0JCWxvY2tzX2RlbGV0ZV9ibG9jayhmaWxlX2xvY2spOwotCQlicmVhazsKKwkJCWxvY2tzX2RlbGV0ZV9ibG9jayhmaWxlX2xvY2spOworCQkJYnJlYWs7CisJCX0KIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvZnMvbWJjYWNoZS5jIGIvZnMvbWJjYWNoZS5jCmluZGV4IGViMzFiNzMuLmVjODhmZjMgMTAwNjQ0Ci0tLSBhL2ZzL21iY2FjaGUuYworKysgYi9mcy9tYmNhY2hlLmMKQEAgLTM5OSwxMSArMzk5LDExIEBACiAgKiBpZiBubyBtb3JlIG1lbW9yeSB3YXMgYXZhaWxhYmxlLgogICovCiBzdHJ1Y3QgbWJfY2FjaGVfZW50cnkgKgotbWJfY2FjaGVfZW50cnlfYWxsb2Moc3RydWN0IG1iX2NhY2hlICpjYWNoZSkKK21iX2NhY2hlX2VudHJ5X2FsbG9jKHN0cnVjdCBtYl9jYWNoZSAqY2FjaGUsIGdmcF90IGdmcF9mbGFncykKIHsKIAlzdHJ1Y3QgbWJfY2FjaGVfZW50cnkgKmNlOwogCi0JY2UgPSBrbWVtX2NhY2hlX2FsbG9jKGNhY2hlLT5jX2VudHJ5X2NhY2hlLCBHRlBfS0VSTkVMKTsKKwljZSA9IGttZW1fY2FjaGVfYWxsb2MoY2FjaGUtPmNfZW50cnlfY2FjaGUsIGdmcF9mbGFncyk7CiAJaWYgKGNlKSB7CiAJCWF0b21pY19pbmMoJmNhY2hlLT5jX2VudHJ5X2NvdW50KTsKIAkJSU5JVF9MSVNUX0hFQUQoJmNlLT5lX2xydV9saXN0KTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvc3BpLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNDEwL3NwaS5oCmluZGV4IDdjYTBlZDkuLjM1MmQzMzggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0MTAvc3BpLmgKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjQxMC9zcGkuaApAQCAtMTUsNiArMTUsNyBAQAogCiBzdHJ1Y3QgczNjMjQxMF9zcGlfaW5mbyB7CiAJdW5zaWduZWQgbG9uZwkJIHBpbl9jczsJLyogc2ltcGxlIGdwaW8gY3MgKi8KKwl1bnNpZ25lZCBpbnQJCSBudW1fY3M7CS8qIHRvdGFsIGNoaXBzZWxlY3RzICovCiAKIAl2b2lkICgqc2V0X2NzKShzdHJ1Y3QgczNjMjQxMF9zcGlfaW5mbyAqc3BpLCBpbnQgY3MsIGludCBwb2wpOwogfTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLW1pcHMvbWFjaC1hdTF4MDAvYXUxeHh4X2lkZS5oIGIvaW5jbHVkZS9hc20tbWlwcy9tYWNoLWF1MXgwMC9hdTF4eHhfaWRlLmgKaW5kZXggZTRmZTI2Yy4uODk2NTVjMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tbWlwcy9tYWNoLWF1MXgwMC9hdTF4eHhfaWRlLmgKKysrIGIvaW5jbHVkZS9hc20tbWlwcy9tYWNoLWF1MXgwMC9hdTF4eHhfaWRlLmgKQEAgLTEyMiwyNCArMTIyLDYgQEAKIH07CiAjZW5kaWYKIAotLyogZnVuY3Rpb24gcHJvdG90eXBpbmcgKi8KLXU4IGF1aWRlX2luYih1bnNpZ25lZCBsb25nIHBvcnQpOwotdTE2IGF1aWRlX2ludyh1bnNpZ25lZCBsb25nIHBvcnQpOwotdTMyIGF1aWRlX2lubCh1bnNpZ25lZCBsb25nIHBvcnQpOwotdm9pZCBhdWlkZV9pbnN3KHVuc2lnbmVkIGxvbmcgcG9ydCwgdm9pZCAqYWRkciwgdTMyIGNvdW50KTsKLXZvaWQgYXVpZGVfaW5zbCh1bnNpZ25lZCBsb25nIHBvcnQsIHZvaWQgKmFkZHIsIHUzMiBjb3VudCk7Ci12b2lkIGF1aWRlX291dGIodTggYWRkciwgdW5zaWduZWQgbG9uZyBwb3J0KTsKLXZvaWQgYXVpZGVfb3V0YnN5bmMoaWRlX2RyaXZlX3QgKmRyaXZlLCB1OCBhZGRyLCB1bnNpZ25lZCBsb25nIHBvcnQpOwotdm9pZCBhdWlkZV9vdXR3KHUxNiBhZGRyLCB1bnNpZ25lZCBsb25nIHBvcnQpOwotdm9pZCBhdWlkZV9vdXRsKHUzMiBhZGRyLCB1bnNpZ25lZCBsb25nIHBvcnQpOwotdm9pZCBhdWlkZV9vdXRzdyh1bnNpZ25lZCBsb25nIHBvcnQsIHZvaWQgKmFkZHIsIHUzMiBjb3VudCk7Ci12b2lkIGF1aWRlX291dHNsKHVuc2lnbmVkIGxvbmcgcG9ydCwgdm9pZCAqYWRkciwgdTMyIGNvdW50KTsKLXN0YXRpYyB2b2lkIGF1aWRlX3R1bmVfZHJpdmUoaWRlX2RyaXZlX3QgKmRyaXZlLCBieXRlIHBpbyk7Ci1zdGF0aWMgaW50IGF1aWRlX3R1bmVfY2hpcHNldChpZGVfZHJpdmVfdCAqZHJpdmUsIHU4IHNwZWVkKTsKLXN0YXRpYyBpbnQgYXVpZGVfZGRtYV9pbml0KCBfYXVpZGVfaHdpZiAqYXVpZGUgKTsKLXN0YXRpYyB2b2lkIGF1aWRlX3NldHVwX3BvcnRzKGh3X3JlZ3NfdCAqaHcsIF9hdWlkZV9od2lmICphaHdpZik7Ci1pbnQgX19pbml0IGF1aWRlX3Byb2JlKHZvaWQpOwotCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBQSU8gTW9kZSB0aW1pbmcgY2FsY3VsYXRpb24gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1taXBzL21hY2gtZGIxeDAwL2RiMTIwMC5oIGIvaW5jbHVkZS9hc20tbWlwcy9tYWNoLWRiMXgwMC9kYjEyMDAuaAppbmRleCBhNmJkYWM2Li5kMmUyOGU2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1taXBzL21hY2gtZGIxeDAwL2RiMTIwMC5oCisrKyBiL2luY2x1ZGUvYXNtLW1pcHMvbWFjaC1kYjF4MDAvZGIxMjAwLmgKQEAgLTE3Myw4ICsxNzMsOCBAQAogI2RlZmluZSBBVTFYWFhfU01DOTExMTFfSVJRCQkJREIxMjAwX0VUSF9JTlQKIAogI2RlZmluZSBBVTFYWFhfQVRBX1BIWVNfQUREUgkJKDB4MTg4MDAwMDApCi0jZGVmaW5lIEFVMVhYWF9BVEFfUEhZU19MRU4JCQkoMHgxMDApCi0jZGVmaW5lIEFVMVhYWF9BVEFfUkVHX09GRlNFVAkoNSkKKyNkZWZpbmUgQVUxWFhYX0FUQV9SRUdfT0ZGU0VUCQkoNSkKKyNkZWZpbmUgQVUxWFhYX0FUQV9QSFlTX0xFTgkJKDE2IDw8IEFVMVhYWF9BVEFfUkVHX09GRlNFVCkKICNkZWZpbmUgQVUxWFhYX0FUQV9JTlQJCQlEQjEyMDBfSURFX0lOVAogI2RlZmluZSBBVTFYWFhfQVRBX0RETUFfUkVRCQlEU0NSX0NNRDBfRE1BX1JFUTE7CiAjZGVmaW5lIEFVMVhYWF9BVEFfUlFTSVpFCQkxMjgKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLW1pcHMvbWFjaC1wYjF4MDAvcGIxMjAwLmggYi9pbmNsdWRlL2FzbS1taXBzL21hY2gtcGIxeDAwL3BiMTIwMC5oCmluZGV4IDcyMjEzZTMuLmVkYWE0ODkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLW1pcHMvbWFjaC1wYjF4MDAvcGIxMjAwLmgKKysrIGIvaW5jbHVkZS9hc20tbWlwcy9tYWNoLXBiMXgwMC9wYjEyMDAuaApAQCAtMTg2LDggKzE4Niw4IEBACiAjZGVmaW5lIEFVMVhYWF9TTUM5MTExMV9JUlEJCQlQQjEyMDBfRVRIX0lOVAogCiAjZGVmaW5lIEFVMVhYWF9BVEFfUEhZU19BRERSCQkoMHgwQzgwMDAwMCkKLSNkZWZpbmUgQVUxWFhYX0FUQV9QSFlTX0xFTgkJCSgweDEwMCkKLSNkZWZpbmUgQVUxWFhYX0FUQV9SRUdfT0ZGU0VUCSg1KQorI2RlZmluZSBBVTFYWFhfQVRBX1JFR19PRkZTRVQJCSg1KQorI2RlZmluZSBBVTFYWFhfQVRBX1BIWVNfTEVOCQkoMTYgPDwgQVUxWFhYX0FUQV9SRUdfT0ZGU0VUKQogI2RlZmluZSBBVTFYWFhfQVRBX0lOVAkJCVBCMTIwMF9JREVfSU5UCiAjZGVmaW5lIEFVMVhYWF9BVEFfRERNQV9SRVEJCURTQ1JfQ01EMF9ETUFfUkVRMTsKICNkZWZpbmUgQVUxWFhYX0FUQV9SUVNJWkUJCTEyOApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tdW0vdGxiLmggYi9pbmNsdWRlL2FzbS11bS90bGIuaAppbmRleCAzOWZjNDc1Li41MjQwZmExIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS11bS90bGIuaAorKysgYi9pbmNsdWRlL2FzbS11bS90bGIuaApAQCAtMSw2ICsxLDcgQEAKICNpZm5kZWYgX19VTV9UTEJfSAogI2RlZmluZSBfX1VNX1RMQl9ICiAKKyNpbmNsdWRlIDxsaW51eC9wYWdlbWFwLmg+CiAjaW5jbHVkZSA8bGludXgvc3dhcC5oPgogI2luY2x1ZGUgPGFzbS9wZXJjcHUuaD4KICNpbmNsdWRlIDxhc20vcGdhbGxvYy5oPgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9LYnVpbGQgYi9pbmNsdWRlL2xpbnV4L0tidWlsZAppbmRleCA5Y2RkMTJhLi5jZWRiYmQ4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L0tidWlsZAorKysgYi9pbmNsdWRlL2xpbnV4L0tidWlsZApAQCAtODYsNiArODYsNyBAQAogaGVhZGVyLXkgKz0gaWZfcHBwLmgKIGhlYWRlci15ICs9IGlmX3NsaXAuaAogaGVhZGVyLXkgKz0gaWZfc3RyaXAuaAoraGVhZGVyLXkgKz0gaWZfdHVuLmgKIGhlYWRlci15ICs9IGlmX3R1bm5lbC5oCiBoZWFkZXIteSArPSBpbjYuaAogaGVhZGVyLXkgKz0gaW5fcm91dGUuaApAQCAtMjI5LDcgKzIzMCw2IEBACiB1bmlmZGVmLXkgKz0gaWZfcHBwb2wydHAuaAogdW5pZmRlZi15ICs9IGlmX3BwcG94LmgKIHVuaWZkZWYteSArPSBpZl90ci5oCi11bmlmZGVmLXkgKz0gaWZfdHVuLmgKIHVuaWZkZWYteSArPSBpZl92bGFuLmgKIHVuaWZkZWYteSArPSBpZl93YW5waXBlLmgKIHVuaWZkZWYteSArPSBpZ21wLmgKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaWZfdHVuLmggYi9pbmNsdWRlL2xpbnV4L2lmX3R1bi5oCmluZGV4IDcyZjFjNWYuLjhjNzFmZTIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvaWZfdHVuLmgKKysrIGIvaW5jbHVkZS9saW51eC9pZl90dW4uaApAQCAtMTgsNDcgKzE4LDggQEAKICNpZm5kZWYgX19JRl9UVU5fSAogI2RlZmluZSBfX0lGX1RVTl9ICiAKLS8qIFVuY29tbWVudCB0byBlbmFibGUgZGVidWdnaW5nICovCi0vKiAjZGVmaW5lIFRVTl9ERUJVRyAxICovCi0KICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgogCi0jaWZkZWYgX19LRVJORUxfXwotCi0jaWZkZWYgVFVOX0RFQlVHCi0jZGVmaW5lIERCRyAgaWYodHVuLT5kZWJ1ZylwcmludGsKLSNkZWZpbmUgREJHMSBpZihkZWJ1Zz09MilwcmludGsKLSNlbHNlCi0jZGVmaW5lIERCRyggYS4uLiApCi0jZGVmaW5lIERCRzEoIGEuLi4gKQotI2VuZGlmCi0KLXN0cnVjdCB0dW5fc3RydWN0IHsKLQlzdHJ1Y3QgbGlzdF9oZWFkICAgICAgICBsaXN0OwotCXVuc2lnbmVkIGxvbmcgCQlmbGFnczsKLQlpbnQJCQlhdHRhY2hlZDsKLQl1aWRfdAkJCW93bmVyOwotCWdpZF90CQkJZ3JvdXA7Ci0KLQl3YWl0X3F1ZXVlX2hlYWRfdAlyZWFkX3dhaXQ7Ci0Jc3RydWN0IHNrX2J1ZmZfaGVhZAlyZWFkcTsKLQotCXN0cnVjdCBuZXRfZGV2aWNlCSpkZXY7Ci0KLQlzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAgICAqZmFzeW5jOwotCi0JdW5zaWduZWQgbG9uZyBpZl9mbGFnczsKLQl1OCBkZXZfYWRkcltFVEhfQUxFTl07Ci0JdTMyIGNocl9maWx0ZXJbMl07Ci0JdTMyIG5ldF9maWx0ZXJbMl07Ci0KLSNpZmRlZiBUVU5fREVCVUcJCi0JaW50IGRlYnVnOwotI2VuZGlmICAKLX07Ci0KLSNlbmRpZiAvKiBfX0tFUk5FTF9fICovCi0KIC8qIFJlYWQgcXVldWUgc2l6ZSAqLwogI2RlZmluZSBUVU5fUkVBRFFfU0laRQk1MDAKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9pb2NvbnRleHQuaCBiL2luY2x1ZGUvbGludXgvaW9jb250ZXh0LmgKaW5kZXggY2FjNGIzNi4uMmI3YTExOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9pb2NvbnRleHQuaAorKysgYi9pbmNsdWRlL2xpbnV4L2lvY29udGV4dC5oCkBAIC05MSw4ICs5MSwxMCBAQAogCSAqIGlmIHJlZiBjb3VudCBpcyB6ZXJvLCBkb24ndCBhbGxvdyBzaGFyaW5nIChpb2MgaXMgZ29pbmcgYXdheSwgaXQncwogCSAqIGEgcmFjZSkuCiAJICovCi0JaWYgKGlvYyAmJiBhdG9taWNfaW5jX25vdF96ZXJvKCZpb2MtPnJlZmNvdW50KSkKKwlpZiAoaW9jICYmIGF0b21pY19pbmNfbm90X3plcm8oJmlvYy0+cmVmY291bnQpKSB7CisJCWF0b21pY19pbmMoJmlvYy0+bnJfdGFza3MpOwogCQlyZXR1cm4gaW9jOworCX0KIAogCXJldHVybiBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9pcHY2LmggYi9pbmNsdWRlL2xpbnV4L2lwdjYuaAppbmRleCA0YWFlZmMzLi4xMzRjOGU1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2lwdjYuaAorKysgYi9pbmNsdWRlL2xpbnV4L2lwdjYuaApAQCAtNTMsNyArNTMsNyBAQAogCS8qIAogCSAqIFRMViBlbmNvZGVkIG9wdGlvbiBkYXRhIGZvbGxvd3MuCiAJICovCi19OworfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CS8qIHJlcXVpcmVkIGZvciBzb21lIGFyY2hzICovCiAKICNkZWZpbmUgaXB2Nl9kZXN0b3B0X2hkciBpcHY2X29wdF9oZHIKICNkZWZpbmUgaXB2Nl9ob3BvcHRfaGRyICBpcHY2X29wdF9oZHIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbWJjYWNoZS5oIGIvaW5jbHVkZS9saW51eC9tYmNhY2hlLmgKaW5kZXggOTllMDQ0Yi4uYTA5Yjg0ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tYmNhY2hlLmgKKysrIGIvaW5jbHVkZS9saW51eC9tYmNhY2hlLmgKQEAgLTM0LDcgKzM0LDcgQEAKIAogLyogRnVuY3Rpb25zIG9uIGNhY2hlIGVudHJpZXMgKi8KIAotc3RydWN0IG1iX2NhY2hlX2VudHJ5ICptYl9jYWNoZV9lbnRyeV9hbGxvYyhzdHJ1Y3QgbWJfY2FjaGUgKik7CitzdHJ1Y3QgbWJfY2FjaGVfZW50cnkgKm1iX2NhY2hlX2VudHJ5X2FsbG9jKHN0cnVjdCBtYl9jYWNoZSAqLCBnZnBfdCk7CiBpbnQgbWJfY2FjaGVfZW50cnlfaW5zZXJ0KHN0cnVjdCBtYl9jYWNoZV9lbnRyeSAqLCBzdHJ1Y3QgYmxvY2tfZGV2aWNlICosCiAJCQkgIHNlY3Rvcl90LCB1bnNpZ25lZCBpbnRbXSk7CiB2b2lkIG1iX2NhY2hlX2VudHJ5X3JlbGVhc2Uoc3RydWN0IG1iX2NhY2hlX2VudHJ5ICopOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zc2Ivc3NiLmggYi9pbmNsdWRlL2xpbnV4L3NzYi9zc2IuaAppbmRleCAyMGFkZDY1Li5kYjUzZGVmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3NzYi9zc2IuaAorKysgYi9pbmNsdWRlL2xpbnV4L3NzYi9zc2IuaApAQCAtMTI5LDYgKzEyOSwxMCBAQAogCWNvbnN0IHN0cnVjdCBzc2JfYnVzX29wcyAqb3BzOwogCiAJc3RydWN0IGRldmljZSAqZGV2OworCS8qIFBvaW50ZXIgdG8gdGhlIGRldmljZSB0aGF0IGhhcyB0byBiZSB1c2VkIGZvcgorCSAqIGFueSBETUEgcmVsYXRlZCBvcGVyYXRpb24uICovCisJc3RydWN0IGRldmljZSAqZG1hX2RldjsKKwogCXN0cnVjdCBzc2JfYnVzICpidXM7CiAJc3RydWN0IHNzYl9kZXZpY2VfaWQgaWQ7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdGhlcm1hbC5oIGIvaW5jbHVkZS9saW51eC90aGVybWFsLmgKaW5kZXggODE4Y2ExYy4uOTBjMWMxOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC90aGVybWFsLmgKKysrIGIvaW5jbHVkZS9saW51eC90aGVybWFsLmgKQEAgLTUwLDcgKzUwLDcgQEAKIH07CiAKICNkZWZpbmUgVEhFUk1BTF9UUklQU19OT05FIC0xCi0jZGVmaW5lIFRIRVJNQUxfTUFYX1RSSVBTIDEwCisjZGVmaW5lIFRIRVJNQUxfTUFYX1RSSVBTIDEyCiAjZGVmaW5lIFRIRVJNQUxfTkFNRV9MRU5HVEggMjAKIHN0cnVjdCB0aGVybWFsX2Nvb2xpbmdfZGV2aWNlIHsKIAlpbnQgaWQ7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pbmV0X2Vjbi5oIGIvaW5jbHVkZS9uZXQvaW5ldF9lY24uaAppbmRleCBiYTMzZGIwLi43MDQwYTc4IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9pbmV0X2Vjbi5oCisrKyBiL2luY2x1ZGUvbmV0L2luZXRfZWNuLmgKQEAgLTQ3LDcgKzQ3LDcgQEAKICAgICB9IHdoaWxlICgwKQogCiAjZGVmaW5lCUlQNl9FQ05fZmxvd194bWl0KHNrLCBsYWJlbCkgZG8gewkJCQlcCi0JaWYgKElORVRfRUNOX2lzX2NhcGFibGUoaW5ldF9zayhzayktPnRvcykpCQkJXAorCWlmIChJTkVUX0VDTl9pc19jYXBhYmxlKGluZXQ2X3NrKHNrKS0+dGNsYXNzKSkJCQlcCiAJCShsYWJlbCkgfD0gaHRvbmwoSU5FVF9FQ05fRUNUXzAgPDwgMjApOwkJCVwKICAgICB9IHdoaWxlICgwKQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9zY3RwL2NvbW1hbmQuaCBiL2luY2x1ZGUvbmV0L3NjdHAvY29tbWFuZC5oCmluZGV4IDEwYWUyZGEuLjM1YjFlODMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L3NjdHAvY29tbWFuZC5oCisrKyBiL2luY2x1ZGUvbmV0L3NjdHAvY29tbWFuZC5oCkBAIC0xMDQsNiArMTA0LDcgQEAKIAlTQ1RQX0NNRF9BREFQVEFUSU9OX0lORCwgLyogZ2VuZXJhdGUgYW5kIHNlbmQgYWRhcHRhdGlvbiBldmVudCAqLwogCVNDVFBfQ01EX0FTU09DX1NIS0VZLCAgICAvKiBnZW5lcmF0ZSB0aGUgYXNzb2NpYXRpb24gc2hhcmVkIGtleXMgKi8KIAlTQ1RQX0NNRF9UMV9SRVRSQU4sCSAvKiBNYXJrIGZvciByZXRyYW5zbWlzc2lvbiBhZnRlciBUMSB0aW1lb3V0ICAqLworCVNDVFBfQ01EX1VQREFURV9JTklUVEFHLCAvKiBVcGRhdGUgcGVlciBpbml0dGFnICovCiAJU0NUUF9DTURfTEFTVAogfSBzY3RwX3ZlcmJfdDsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvc2N0cC91bHBldmVudC5oIGIvaW5jbHVkZS9uZXQvc2N0cC91bHBldmVudC5oCmluZGV4IDliY2ZjMTIuLjdlYTEyZTggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L3NjdHAvdWxwZXZlbnQuaAorKysgYi9pbmNsdWRlL25ldC9zY3RwL3VscGV2ZW50LmgKQEAgLTY3LDcgKzY3LDcgQEAKIH07CiAKIC8qIFJldHJpZXZlIHRoZSBza2IgdGhpcyBldmVudCBzaXRzIGluc2lkZSBvZi4gKi8KLXN0YXRpYyBpbmxpbmUgc3RydWN0IHNrX2J1ZmYgKnNjdHBfZXZlbnQyc2tiKHN0cnVjdCBzY3RwX3VscGV2ZW50ICpldikKK3N0YXRpYyBpbmxpbmUgc3RydWN0IHNrX2J1ZmYgKnNjdHBfZXZlbnQyc2tiKGNvbnN0IHN0cnVjdCBzY3RwX3VscGV2ZW50ICpldikKIHsKIAlyZXR1cm4gY29udGFpbmVyX29mKCh2b2lkICopZXYsIHN0cnVjdCBza19idWZmLCBjYik7CiB9CmRpZmYgLS1naXQgYS9rZXJuZWwvY2dyb3VwLmMgYi9rZXJuZWwvY2dyb3VwLmMKaW5kZXggMjcyN2Y5Mi4uNmQ4ZGUwNSAxMDA2NDQKLS0tIGEva2VybmVsL2Nncm91cC5jCisrKyBiL2tlcm5lbC9jZ3JvdXAuYwpAQCAtMTcyMiw3ICsxNzIyLDEyIEBACiAJdXNlX3Rhc2tfY3NzX3NldF9saW5rcyA9IDE7CiAJZG9fZWFjaF90aHJlYWQoZywgcCkgewogCQl0YXNrX2xvY2socCk7Ci0JCWlmIChsaXN0X2VtcHR5KCZwLT5jZ19saXN0KSkKKwkJLyoKKwkJICogV2Ugc2hvdWxkIGNoZWNrIGlmIHRoZSBwcm9jZXNzIGlzIGV4aXRpbmcsIG90aGVyd2lzZQorCQkgKiBpdCB3aWxsIHJhY2Ugd2l0aCBjZ3JvdXBfZXhpdCgpIGluIHRoYXQgdGhlIGxpc3QKKwkJICogZW50cnkgd29uJ3QgYmUgZGVsZXRlZCB0aG91Z2ggdGhlIHByb2Nlc3MgaGFzIGV4aXRlZC4KKwkJICovCisJCWlmICghKHAtPmZsYWdzICYgUEZfRVhJVElORykgJiYgbGlzdF9lbXB0eSgmcC0+Y2dfbGlzdCkpCiAJCQlsaXN0X2FkZCgmcC0+Y2dfbGlzdCwgJnAtPmNncm91cHMtPnRhc2tzKTsKIAkJdGFza191bmxvY2socCk7CiAJfSB3aGlsZV9lYWNoX3RocmVhZChnLCBwKTsKZGlmZiAtLWdpdCBhL2tlcm5lbC9wcmludGsuYyBiL2tlcm5lbC9wcmludGsuYwppbmRleCBjNDZhMjBhLi5iZGQ0ZWE4IDEwMDY0NAotLS0gYS9rZXJuZWwvcHJpbnRrLmMKKysrIGIva2VybmVsL3ByaW50ay5jCkBAIC02NDMsOCArNjQzLDIxIEBACiB7CiAJaW50IHJldHZhbCA9IDA7CiAKLQlpZiAoY2FuX3VzZV9jb25zb2xlKGNwdSkpCi0JCXJldHZhbCA9ICF0cnlfYWNxdWlyZV9jb25zb2xlX3NlbSgpOworCWlmICghdHJ5X2FjcXVpcmVfY29uc29sZV9zZW0oKSkgeworCQlyZXR2YWwgPSAxOworCisJCS8qCisJCSAqIElmIHdlIGNhbid0IHVzZSB0aGUgY29uc29sZSwgd2UgbmVlZCB0byByZWxlYXNlCisJCSAqIHRoZSBjb25zb2xlIHNlbWFwaG9yZSBieSBoYW5kIHRvIGF2b2lkIGZsdXNoaW5nCisJCSAqIHRoZSBidWZmZXIuIFdlIG5lZWQgdG8gaG9sZCB0aGUgY29uc29sZSBzZW1hcGhvcmUKKwkJICogaW4gb3JkZXIgdG8gZG8gdGhpcyB0ZXN0IHNhZmVseS4KKwkJICovCisJCWlmICghY2FuX3VzZV9jb25zb2xlKGNwdSkpIHsKKwkJCWNvbnNvbGVfbG9ja2VkID0gMDsKKwkJCXVwKCZjb25zb2xlX3NlbSk7CisJCQlyZXR2YWwgPSAwOworCQl9CisJfQogCXByaW50a19jcHUgPSBVSU5UX01BWDsKIAlzcGluX3VubG9jaygmbG9nYnVmX2xvY2spOwogCXJldHVybiByZXR2YWw7CmRpZmYgLS1naXQgYS9rZXJuZWwvc2NoZWRfZmFpci5jIGIva2VybmVsL3NjaGVkX2ZhaXIuYwppbmRleCA4NmE5MzM3Li4wMDgwOTY4IDEwMDY0NAotLS0gYS9rZXJuZWwvc2NoZWRfZmFpci5jCisrKyBiL2tlcm5lbC9zY2hlZF9mYWlyLmMKQEAgLTUxMCwxMCArNTEwLDggQEAKIAogCWlmICghaW5pdGlhbCkgewogCQkvKiBzbGVlcHMgdXB0byBhIHNpbmdsZSBsYXRlbmN5IGRvbid0IGNvdW50LiAqLwotCQlpZiAoc2NoZWRfZmVhdChORVdfRkFJUl9TTEVFUEVSUykpIHsKLQkJCXZydW50aW1lIC09IGNhbGNfZGVsdGFfZmFpcihzeXNjdGxfc2NoZWRfbGF0ZW5jeSwKLQkJCQkJCSAgICAmY2ZzX3JxLT5sb2FkKTsKLQkJfQorCQlpZiAoc2NoZWRfZmVhdChORVdfRkFJUl9TTEVFUEVSUykpCisJCQl2cnVudGltZSAtPSBzeXNjdGxfc2NoZWRfbGF0ZW5jeTsKIAogCQkvKiBlbnN1cmUgd2UgbmV2ZXIgZ2FpbiB0aW1lIGJ5IGJlaW5nIHBsYWNlZCBiYWNrd2FyZHMuICovCiAJCXZydW50aW1lID0gbWF4X3ZydW50aW1lKHNlLT52cnVudGltZSwgdnJ1bnRpbWUpOwpkaWZmIC0tZ2l0IGEva2VybmVsL3NpZ25hbC5jIGIva2VybmVsL3NpZ25hbC5jCmluZGV4IDZhZjEyMTAuLmNjODMwM2MgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9zaWduYWwuYworKysgYi9rZXJuZWwvc2lnbmFsLmMKQEAgLTE3NTcsNiArMTc1Nyw0NSBAQAogCXJldHVybiAxOwogfQogCitzdGF0aWMgaW50IHB0cmFjZV9zaWduYWwoaW50IHNpZ25yLCBzaWdpbmZvX3QgKmluZm8sCisJCQkgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHZvaWQgKmNvb2tpZSkKK3sKKwlpZiAoIShjdXJyZW50LT5wdHJhY2UgJiBQVF9QVFJBQ0VEKSkKKwkJcmV0dXJuIHNpZ25yOworCisJcHRyYWNlX3NpZ25hbF9kZWxpdmVyKHJlZ3MsIGNvb2tpZSk7CisKKwkvKiBMZXQgdGhlIGRlYnVnZ2VyIHJ1bi4gICovCisJcHRyYWNlX3N0b3Aoc2lnbnIsIDAsIGluZm8pOworCisJLyogV2UncmUgYmFjay4gIERpZCB0aGUgZGVidWdnZXIgY2FuY2VsIHRoZSBzaWc/ICAqLworCXNpZ25yID0gY3VycmVudC0+ZXhpdF9jb2RlOworCWlmIChzaWduciA9PSAwKQorCQlyZXR1cm4gc2lnbnI7CisKKwljdXJyZW50LT5leGl0X2NvZGUgPSAwOworCisJLyogVXBkYXRlIHRoZSBzaWdpbmZvIHN0cnVjdHVyZSBpZiB0aGUgc2lnbmFsIGhhcworCSAgIGNoYW5nZWQuICBJZiB0aGUgZGVidWdnZXIgd2FudGVkIHNvbWV0aGluZworCSAgIHNwZWNpZmljIGluIHRoZSBzaWdpbmZvIHN0cnVjdHVyZSB0aGVuIGl0IHNob3VsZAorCSAgIGhhdmUgdXBkYXRlZCAqaW5mbyB2aWEgUFRSQUNFX1NFVFNJR0lORk8uICAqLworCWlmIChzaWduciAhPSBpbmZvLT5zaV9zaWdubykgeworCQlpbmZvLT5zaV9zaWdubyA9IHNpZ25yOworCQlpbmZvLT5zaV9lcnJubyA9IDA7CisJCWluZm8tPnNpX2NvZGUgPSBTSV9VU0VSOworCQlpbmZvLT5zaV9waWQgPSB0YXNrX3BpZF92bnIoY3VycmVudC0+cGFyZW50KTsKKwkJaW5mby0+c2lfdWlkID0gY3VycmVudC0+cGFyZW50LT51aWQ7CisJfQorCisJLyogSWYgdGhlIChuZXcpIHNpZ25hbCBpcyBub3cgYmxvY2tlZCwgcmVxdWV1ZSBpdC4gICovCisJaWYgKHNpZ2lzbWVtYmVyKCZjdXJyZW50LT5ibG9ja2VkLCBzaWducikpIHsKKwkJc3BlY2lmaWNfc2VuZF9zaWdfaW5mbyhzaWduciwgaW5mbywgY3VycmVudCk7CisJCXNpZ25yID0gMDsKKwl9CisKKwlyZXR1cm4gc2lnbnI7Cit9CisKIGludCBnZXRfc2lnbmFsX3RvX2RlbGl2ZXIoc2lnaW5mb190ICppbmZvLCBzdHJ1Y3Qga19zaWdhY3Rpb24gKnJldHVybl9rYSwKIAkJCSAgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHZvaWQgKmNvb2tpZSkKIHsKQEAgLTE3ODUsMzYgKzE4MjQsMTAgQEAKIAkJaWYgKCFzaWducikKIAkJCWJyZWFrOyAvKiB3aWxsIHJldHVybiAwICovCiAKLQkJaWYgKChjdXJyZW50LT5wdHJhY2UgJiBQVF9QVFJBQ0VEKSAmJiBzaWduciAhPSBTSUdLSUxMKSB7Ci0JCQlwdHJhY2Vfc2lnbmFsX2RlbGl2ZXIocmVncywgY29va2llKTsKLQotCQkJLyogTGV0IHRoZSBkZWJ1Z2dlciBydW4uICAqLwotCQkJcHRyYWNlX3N0b3Aoc2lnbnIsIDAsIGluZm8pOwotCi0JCQkvKiBXZSdyZSBiYWNrLiAgRGlkIHRoZSBkZWJ1Z2dlciBjYW5jZWwgdGhlIHNpZz8gICovCi0JCQlzaWduciA9IGN1cnJlbnQtPmV4aXRfY29kZTsKLQkJCWlmIChzaWduciA9PSAwKQorCQlpZiAoc2lnbnIgIT0gU0lHS0lMTCkgeworCQkJc2lnbnIgPSBwdHJhY2Vfc2lnbmFsKHNpZ25yLCBpbmZvLCByZWdzLCBjb29raWUpOworCQkJaWYgKCFzaWducikKIAkJCQljb250aW51ZTsKLQotCQkJY3VycmVudC0+ZXhpdF9jb2RlID0gMDsKLQotCQkJLyogVXBkYXRlIHRoZSBzaWdpbmZvIHN0cnVjdHVyZSBpZiB0aGUgc2lnbmFsIGhhcwotCQkJICAgY2hhbmdlZC4gIElmIHRoZSBkZWJ1Z2dlciB3YW50ZWQgc29tZXRoaW5nCi0JCQkgICBzcGVjaWZpYyBpbiB0aGUgc2lnaW5mbyBzdHJ1Y3R1cmUgdGhlbiBpdCBzaG91bGQKLQkJCSAgIGhhdmUgdXBkYXRlZCAqaW5mbyB2aWEgUFRSQUNFX1NFVFNJR0lORk8uICAqLwotCQkJaWYgKHNpZ25yICE9IGluZm8tPnNpX3NpZ25vKSB7Ci0JCQkJaW5mby0+c2lfc2lnbm8gPSBzaWducjsKLQkJCQlpbmZvLT5zaV9lcnJubyA9IDA7Ci0JCQkJaW5mby0+c2lfY29kZSA9IFNJX1VTRVI7Ci0JCQkJaW5mby0+c2lfcGlkID0gdGFza19waWRfdm5yKGN1cnJlbnQtPnBhcmVudCk7Ci0JCQkJaW5mby0+c2lfdWlkID0gY3VycmVudC0+cGFyZW50LT51aWQ7Ci0JCQl9Ci0KLQkJCS8qIElmIHRoZSAobmV3KSBzaWduYWwgaXMgbm93IGJsb2NrZWQsIHJlcXVldWUgaXQuICAqLwotCQkJaWYgKHNpZ2lzbWVtYmVyKCZjdXJyZW50LT5ibG9ja2VkLCBzaWducikpIHsKLQkJCQlzcGVjaWZpY19zZW5kX3NpZ19pbmZvKHNpZ25yLCBpbmZvLCBjdXJyZW50KTsKLQkJCQljb250aW51ZTsKLQkJCX0KIAkJfQogCiAJCWthID0gJmN1cnJlbnQtPnNpZ2hhbmQtPmFjdGlvbltzaWduci0xXTsKZGlmZiAtLWdpdCBhL21tL29vbV9raWxsLmMgYi9tbS9vb21fa2lsbC5jCmluZGV4IGYyNTVlZGEuLmJlYjU5MmYgMTAwNjQ0Ci0tLSBhL21tL29vbV9raWxsLmMKKysrIGIvbW0vb29tX2tpbGwuYwpAQCAtNDIzLDcgKzQyMyw3IEBACiAJc3RydWN0IHRhc2tfc3RydWN0ICpwOwogCiAJY2dyb3VwX2xvY2soKTsKLQlyY3VfcmVhZF9sb2NrKCk7CisJcmVhZF9sb2NrKCZ0YXNrbGlzdF9sb2NrKTsKIHJldHJ5OgogCXAgPSBzZWxlY3RfYmFkX3Byb2Nlc3MoJnBvaW50cywgbWVtKTsKIAlpZiAoUFRSX0VSUihwKSA9PSAtMVVMKQpAQCAtNDM2LDcgKzQzNiw3IEBACiAJCQkJIk1lbW9yeSBjZ3JvdXAgb3V0IG9mIG1lbW9yeSIpKQogCQlnb3RvIHJldHJ5Owogb3V0OgotCXJjdV9yZWFkX3VubG9jaygpOworCXJlYWRfdW5sb2NrKCZ0YXNrbGlzdF9sb2NrKTsKIAljZ3JvdXBfdW5sb2NrKCk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL21tL3NwYXJzZS5jIGIvbW0vc3BhcnNlLmMKaW5kZXggZjZhNDNjMC4uOThkNmIzOWMgMTAwNjQ0Ci0tLSBhL21tL3NwYXJzZS5jCisrKyBiL21tL3NwYXJzZS5jCkBAIC0xNDksOCArMTQ5LDE4IEBACiAvKiBSZWNvcmQgYSBtZW1vcnkgYXJlYSBhZ2FpbnN0IGEgbm9kZS4gKi8KIHZvaWQgX19pbml0IG1lbW9yeV9wcmVzZW50KGludCBuaWQsIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQogeworCXVuc2lnbmVkIGxvbmcgbWF4X2FyY2hfcGZuID0gMVVMIDw8IChNQVhfUEhZU01FTV9CSVRTLVBBR0VfU0hJRlQpOwogCXVuc2lnbmVkIGxvbmcgcGZuOwogCisJLyoKKwkgKiBTYW5pdHkgY2hlY2tzIC0gZG8gbm90IGFsbG93IGFuIGFyY2hpdGVjdHVyZSB0byBwYXNzCisJICogaW4gbGFyZ2VyIHBmbnMgdGhhbiB0aGUgbWF4aW11bSBzY29wZSBvZiBzcGFyc2VtZW06CisJICovCisJaWYgKHN0YXJ0ID49IG1heF9hcmNoX3BmbikKKwkJcmV0dXJuOworCWlmIChlbmQgPj0gbWF4X2FyY2hfcGZuKQorCQllbmQgPSBtYXhfYXJjaF9wZm47CisKIAlzdGFydCAmPSBQQUdFX1NFQ1RJT05fTUFTSzsKIAlmb3IgKHBmbiA9IHN0YXJ0OyBwZm4gPCBlbmQ7IHBmbiArPSBQQUdFU19QRVJfU0VDVElPTikgewogCQl1bnNpZ25lZCBsb25nIHNlY3Rpb24gPSBwZm5fdG9fc2VjdGlvbl9ucihwZm4pOwpkaWZmIC0tZ2l0IGEvbW0vdm1zdGF0LmMgYi9tbS92bXN0YXQuYwppbmRleCA0MjJkOTYwLi43YzcyODZlIDEwMDY0NAotLS0gYS9tbS92bXN0YXQuYworKysgYi9tbS92bXN0YXQuYwpAQCAtMzg4LDYgKzM4OCw3IEBACiAJIlJlY2xhaW1hYmxlIiwKIAkiTW92YWJsZSIsCiAJIlJlc2VydmUiLAorCSJJc29sYXRlIiwKIH07CiAKIHN0YXRpYyB2b2lkICpmcmFnX3N0YXJ0KHN0cnVjdCBzZXFfZmlsZSAqbSwgbG9mZl90ICpwb3MpCmRpZmYgLS1naXQgYS9uZXQvYXgyNS9heDI1X3VpZC5jIGIvbmV0L2F4MjUvYXgyNV91aWQuYwppbmRleCA1ZjRlYjczLi41N2FlYmE3IDEwMDY0NAotLS0gYS9uZXQvYXgyNS9heDI1X3VpZC5jCisrKyBiL25ldC9heDI1L2F4MjVfdWlkLmMKQEAgLTIxOCw5ICsyMTgsMTEgQEAKIAlzdHJ1Y3QgaGxpc3Rfbm9kZSAqbm9kZTsKIAogCXdyaXRlX2xvY2soJmF4MjVfdWlkX2xvY2spOworYWdhaW46CiAJYXgyNV91aWRfZm9yX2VhY2goYXgyNV91aWQsIG5vZGUsICZheDI1X3VpZF9saXN0KSB7CiAJCWhsaXN0X2RlbF9pbml0KCZheDI1X3VpZC0+dWlkX25vZGUpOwogCQlheDI1X3VpZF9wdXQoYXgyNV91aWQpOworCQlnb3RvIGFnYWluOwogCX0KIAl3cml0ZV91bmxvY2soJmF4MjVfdWlkX2xvY2spOwogfQpkaWZmIC0tZ2l0IGEvbmV0L2JyaWRnZS9icl9uZXRmaWx0ZXIuYyBiL25ldC9icmlkZ2UvYnJfbmV0ZmlsdGVyLmMKaW5kZXggMWMwZWZkOC4uYWY3ZThiZSAxMDA2NDQKLS0tIGEvbmV0L2JyaWRnZS9icl9uZXRmaWx0ZXIuYworKysgYi9uZXQvYnJpZGdlL2JyX25ldGZpbHRlci5jCkBAIC0xMTAsNyArMTEwLDggQEAKICAqIGlwdF9SRUpFQ1QgbmVlZHMgaXQuICBGdXR1cmUgbmV0ZmlsdGVyIG1vZHVsZXMgbWlnaHQKICAqIHJlcXVpcmUgdXMgdG8gZmlsbCBhZGRpdGlvbmFsIGZpZWxkcy4gKi8KIHN0YXRpYyBzdHJ1Y3QgbmV0X2RldmljZSBfX2Zha2VfbmV0X2RldmljZSA9IHsKLQkuaGFyZF9oZWFkZXJfbGVuCT0gRVRIX0hMRU4KKwkuaGFyZF9oZWFkZXJfbGVuCT0gRVRIX0hMRU4sCisJLm5kX25ldAkJCT0gJmluaXRfbmV0LAogfTsKIAogc3RhdGljIHN0cnVjdCBydGFibGUgX19mYWtlX3J0YWJsZSA9IHsKZGlmZiAtLWdpdCBhL25ldC9jb3JlL3NrYnVmZi5jIGIvbmV0L2NvcmUvc2tidWZmLmMKaW5kZXggMGQwZmQyOC4uNjA4NzAxMyAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvc2tidWZmLmMKKysrIGIvbmV0L2NvcmUvc2tidWZmLmMKQEAgLTIxMzEsOCArMjEzMSw4IEBACiAgKglAZmVhdHVyZXM6IGZlYXR1cmVzIGZvciB0aGUgb3V0cHV0IHBhdGggKHNlZSBkZXYtPmZlYXR1cmVzKQogICoKICAqCVRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgc2VnbWVudGF0aW9uIG9uIHRoZSBnaXZlbiBza2IuICBJdCByZXR1cm5zCi0gKgl0aGUgc2VnbWVudCBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24uICBJdCByZXR1cm5zIE5VTEwgaWYgdGhlcmUgYXJlCi0gKglubyBtb3JlIHNlZ21lbnRzIHRvIGdlbmVyYXRlLCBvciB3aGVuIGFuIGVycm9yIGlzIGVuY291bnRlcmVkLgorICoJYSBwb2ludGVyIHRvIHRoZSBmaXJzdCBpbiBhIGxpc3Qgb2YgbmV3IHNrYnMgZm9yIHRoZSBzZWdtZW50cy4KKyAqCUluIGNhc2Ugb2YgZXJyb3IgaXQgcmV0dXJucyBFUlJfUFRSKGVycikuCiAgKi8KIHN0cnVjdCBza19idWZmICpza2Jfc2VnbWVudChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgZmVhdHVyZXMpCiB7CmRpZmYgLS1naXQgYS9uZXQvY29yZS9zb2NrLmMgYi9uZXQvY29yZS9zb2NrLmMKaW5kZXggMjY1NGMxNC4uN2EwNTY3YiAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvc29jay5jCisrKyBiL25ldC9jb3JlL3NvY2suYwpAQCAtMTcyNSw3ICsxNzI1LDcgQEAKIAlzay0+c2tfcmN2dGltZW8JCT0JTUFYX1NDSEVEVUxFX1RJTUVPVVQ7CiAJc2stPnNrX3NuZHRpbWVvCQk9CU1BWF9TQ0hFRFVMRV9USU1FT1VUOwogCi0Jc2stPnNrX3N0YW1wID0ga3RpbWVfc2V0KC0xTCwgLTFMKTsKKwlzay0+c2tfc3RhbXAgPSBrdGltZV9zZXQoLTFMLCAwKTsKIAogCWF0b21pY19zZXQoJnNrLT5za19yZWZjbnQsIDEpOwogCWF0b21pY19zZXQoJnNrLT5za19kcm9wcywgMCk7CmRpZmYgLS1naXQgYS9uZXQvZGNjcC9kY2NwLmggYi9uZXQvZGNjcC9kY2NwLmgKaW5kZXggMjg3YTYyYi4uYmEyZWY5NCAxMDA2NDQKLS0tIGEvbmV0L2RjY3AvZGNjcC5oCisrKyBiL25ldC9kY2NwL2RjY3AuaApAQCAtMzI1LDYgKzMyNSwxMiBAQAogICogVGhpcyBpcyB1c2VkIGZvciB0cmFuc21pc3Npb24gYXMgd2VsbCBhcyBmb3IgcmVjZXB0aW9uLgogICovCiBzdHJ1Y3QgZGNjcF9za2JfY2IgeworCXVuaW9uIHsKKwkJc3RydWN0IGluZXRfc2tiX3Bhcm0JaDQ7CisjaWYgZGVmaW5lZChDT05GSUdfSVBWNikgfHwgZGVmaW5lZCAoQ09ORklHX0lQVjZfTU9EVUxFKQorCQlzdHJ1Y3QgaW5ldDZfc2tiX3Bhcm0JaDY7CisjZW5kaWYKKwl9IGhlYWRlcjsKIAlfX3U4ICBkY2NwZF90eXBlOjQ7CiAJX191OCAgZGNjcGRfY2N2YWw6NDsKIAlfX3U4ICBkY2NwZF9yZXNldF9jb2RlLApkaWZmIC0tZ2l0IGEvbmV0L2RjY3AvaXB2NC5jIGIvbmV0L2RjY3AvaXB2NC5jCmluZGV4IDQ3NDA3NWEuLmIzMzcwNDQgMTAwNjQ0Ci0tLSBhL25ldC9kY2NwL2lwdjQuYworKysgYi9uZXQvZGNjcC9pcHY0LmMKQEAgLTQ4OSw3ICs0ODksNiBAQAogCiAJCWRoLT5kY2NwaF9jaGVja3N1bSA9IGRjY3BfdjRfY3N1bV9maW5pc2goc2tiLCBpcmVxLT5sb2NfYWRkciwKIAkJCQkJCQkgICAgICBpcmVxLT5ybXRfYWRkcik7Ci0JCW1lbXNldCgmKElQQ0Ioc2tiKS0+b3B0KSwgMCwgc2l6ZW9mKElQQ0Ioc2tiKS0+b3B0KSk7CiAJCWVyciA9IGlwX2J1aWxkX2FuZF9zZW5kX3BrdChza2IsIHNrLCBpcmVxLT5sb2NfYWRkciwKIAkJCQkJICAgIGlyZXEtPnJtdF9hZGRyLAogCQkJCQkgICAgaXJlcS0+b3B0KTsKZGlmZiAtLWdpdCBhL25ldC9kY2NwL291dHB1dC5jIGIvbmV0L2RjY3Avb3V0cHV0LmMKaW5kZXggM2I3NjNkYi4uM2Q3ZDYyOCAxMDA2NDQKLS0tIGEvbmV0L2RjY3Avb3V0cHV0LmMKKysrIGIvbmV0L2RjY3Avb3V0cHV0LmMKQEAgLTEyNiw3ICsxMjYsNiBAQAogCiAJCURDQ1BfSU5DX1NUQVRTKERDQ1BfTUlCX09VVFNFR1MpOwogCi0JCW1lbXNldCgmKElQQ0Ioc2tiKS0+b3B0KSwgMCwgc2l6ZW9mKElQQ0Ioc2tiKS0+b3B0KSk7CiAJCWVyciA9IGljc2stPmljc2tfYWZfb3BzLT5xdWV1ZV94bWl0KHNrYiwgMCk7CiAJCXJldHVybiBuZXRfeG1pdF9ldmFsKGVycik7CiAJfQpkaWZmIC0tZ2l0IGEvbmV0L2RjY3AvcHJvdG8uYyBiL25ldC9kY2NwL3Byb3RvLmMKaW5kZXggZTNmNWQzNy4uYzkxZDNjMSAxMDA2NDQKLS0tIGEvbmV0L2RjY3AvcHJvdG8uYworKysgYi9uZXQvZGNjcC9wcm90by5jCkBAIC0xMDU3LDYgKzEwNTcsOSBAQAogCWludCBlaGFzaF9vcmRlciwgYmhhc2hfb3JkZXIsIGk7CiAJaW50IHJjID0gLUVOT0JVRlM7CiAKKwlCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBkY2NwX3NrYl9jYikgPgorCQkgICAgIEZJRUxEX1NJWkVPRihzdHJ1Y3Qgc2tfYnVmZiwgY2IpKTsKKwogCWRjY3BfaGFzaGluZm8uYmluZF9idWNrZXRfY2FjaGVwID0KIAkJa21lbV9jYWNoZV9jcmVhdGUoImRjY3BfYmluZF9idWNrZXQiLAogCQkJCSAgc2l6ZW9mKHN0cnVjdCBpbmV0X2JpbmRfYnVja2V0KSwgMCwKZGlmZiAtLWdpdCBhL25ldC9ldGhlcm5ldC9ldGguYyBiL25ldC9ldGhlcm5ldC9ldGguYwppbmRleCBhN2I0MTc1Li5hODA4MzliIDEwMDY0NAotLS0gYS9uZXQvZXRoZXJuZXQvZXRoLmMKKysrIGIvbmV0L2V0aGVybmV0L2V0aC5jCkBAIC0zMDEsNyArMzAxLDcgQEAKIHN0YXRpYyBpbnQgZXRoX3ZhbGlkYXRlX2FkZHIoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKIAlpZiAoIWlzX3ZhbGlkX2V0aGVyX2FkZHIoZGV2LT5kZXZfYWRkcikpCi0JCXJldHVybiAtRUlOVkFMOworCQlyZXR1cm4gLUVBRERSTk9UQVZBSUw7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL25ldC9pcHY0L25ldGZpbHRlci9pcHRfQ0xVU1RFUklQLmMgYi9uZXQvaXB2NC9uZXRmaWx0ZXIvaXB0X0NMVVNURVJJUC5jCmluZGV4IDUyOTI2YzguLmExMmRkMzIgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L25ldGZpbHRlci9pcHRfQ0xVU1RFUklQLmMKKysrIGIvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwdF9DTFVTVEVSSVAuYwpAQCAtODIsOCArODIsOCBAQAogc3RhdGljIGlubGluZSB2b2lkCiBjbHVzdGVyaXBfY29uZmlnX2VudHJ5X3B1dChzdHJ1Y3QgY2x1c3RlcmlwX2NvbmZpZyAqYykKIHsKKwl3cml0ZV9sb2NrX2JoKCZjbHVzdGVyaXBfbG9jayk7CiAJaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJmMtPmVudHJpZXMpKSB7Ci0JCXdyaXRlX2xvY2tfYmgoJmNsdXN0ZXJpcF9sb2NrKTsKIAkJbGlzdF9kZWwoJmMtPmxpc3QpOwogCQl3cml0ZV91bmxvY2tfYmgoJmNsdXN0ZXJpcF9sb2NrKTsKIApAQCAtOTYsNyArOTYsOSBAQAogI2lmZGVmIENPTkZJR19QUk9DX0ZTCiAJCXJlbW92ZV9wcm9jX2VudHJ5KGMtPnBkZS0+bmFtZSwgYy0+cGRlLT5wYXJlbnQpOwogI2VuZGlmCisJCXJldHVybjsKIAl9CisJd3JpdGVfdW5sb2NrX2JoKCZjbHVzdGVyaXBfbG9jayk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgY2x1c3RlcmlwX2NvbmZpZyAqCmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaW5wdXQuYyBiL25ldC9pcHY0L3RjcF9pbnB1dC5jCmluZGV4IDUxMTk4NTYuLmJiYjdkODggMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9pbnB1dC5jCisrKyBiL25ldC9pcHY0L3RjcF9pbnB1dC5jCkBAIC0zODQxLDggKzM4NDEsMjggQEAKIAl9CiB9CiAKK3N0YXRpYyBpbnQgdGNwX3BydW5lX29mb19xdWV1ZShzdHJ1Y3Qgc29jayAqc2spOwogc3RhdGljIGludCB0Y3BfcHJ1bmVfcXVldWUoc3RydWN0IHNvY2sgKnNrKTsKIAorc3RhdGljIGlubGluZSBpbnQgdGNwX3RyeV9ybWVtX3NjaGVkdWxlKHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgaW50IHNpemUpCit7CisJaWYgKGF0b21pY19yZWFkKCZzay0+c2tfcm1lbV9hbGxvYykgPiBzay0+c2tfcmN2YnVmIHx8CisJICAgICFza19ybWVtX3NjaGVkdWxlKHNrLCBzaXplKSkgeworCisJCWlmICh0Y3BfcHJ1bmVfcXVldWUoc2spIDwgMCkKKwkJCXJldHVybiAtMTsKKworCQlpZiAoIXNrX3JtZW1fc2NoZWR1bGUoc2ssIHNpemUpKSB7CisJCQlpZiAoIXRjcF9wcnVuZV9vZm9fcXVldWUoc2spKQorCQkJCXJldHVybiAtMTsKKworCQkJaWYgKCFza19ybWVtX3NjaGVkdWxlKHNrLCBzaXplKSkKKwkJCQlyZXR1cm4gLTE7CisJCX0KKwl9CisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyB2b2lkIHRjcF9kYXRhX3F1ZXVlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlzdHJ1Y3QgdGNwaGRyICp0aCA9IHRjcF9oZHIoc2tiKTsKQEAgLTM4OTIsMTIgKzM5MTIsOSBAQAogCQlpZiAoZWF0ZW4gPD0gMCkgewogcXVldWVfYW5kX291dDoKIAkJCWlmIChlYXRlbiA8IDAgJiYKLQkJCSAgICAoYXRvbWljX3JlYWQoJnNrLT5za19ybWVtX2FsbG9jKSA+IHNrLT5za19yY3ZidWYgfHwKLQkJCSAgICAgIXNrX3JtZW1fc2NoZWR1bGUoc2ssIHNrYi0+dHJ1ZXNpemUpKSkgewotCQkJCWlmICh0Y3BfcHJ1bmVfcXVldWUoc2spIDwgMCB8fAotCQkJCSAgICAhc2tfcm1lbV9zY2hlZHVsZShzaywgc2tiLT50cnVlc2l6ZSkpCi0JCQkJCWdvdG8gZHJvcDsKLQkJCX0KKwkJCSAgICB0Y3BfdHJ5X3JtZW1fc2NoZWR1bGUoc2ssIHNrYi0+dHJ1ZXNpemUpKQorCQkJCWdvdG8gZHJvcDsKKwogCQkJc2tiX3NldF9vd25lcl9yKHNrYiwgc2spOwogCQkJX19za2JfcXVldWVfdGFpbCgmc2stPnNrX3JlY2VpdmVfcXVldWUsIHNrYik7CiAJCX0KQEAgLTM5NjYsMTIgKzM5ODMsOCBAQAogCiAJVENQX0VDTl9jaGVja19jZSh0cCwgc2tiKTsKIAotCWlmIChhdG9taWNfcmVhZCgmc2stPnNrX3JtZW1fYWxsb2MpID4gc2stPnNrX3JjdmJ1ZiB8fAotCSAgICAhc2tfcm1lbV9zY2hlZHVsZShzaywgc2tiLT50cnVlc2l6ZSkpIHsKLQkJaWYgKHRjcF9wcnVuZV9xdWV1ZShzaykgPCAwIHx8Ci0JCSAgICAhc2tfcm1lbV9zY2hlZHVsZShzaywgc2tiLT50cnVlc2l6ZSkpCi0JCQlnb3RvIGRyb3A7Ci0JfQorCWlmICh0Y3BfdHJ5X3JtZW1fc2NoZWR1bGUoc2ssIHNrYi0+dHJ1ZXNpemUpKQorCQlnb3RvIGRyb3A7CiAKIAkvKiBEaXNhYmxlIGhlYWRlciBwcmVkaWN0aW9uLiAqLwogCXRwLT5wcmVkX2ZsYWdzID0gMDsKQEAgLTQxOTgsNiArNDIxMSwzMiBAQAogCX0KIH0KIAorLyoKKyAqIFB1cmdlIHRoZSBvdXQtb2Ytb3JkZXIgcXVldWUuCisgKiBSZXR1cm4gdHJ1ZSBpZiBxdWV1ZSB3YXMgcHJ1bmVkLgorICovCitzdGF0aWMgaW50IHRjcF9wcnVuZV9vZm9fcXVldWUoc3RydWN0IHNvY2sgKnNrKQoreworCXN0cnVjdCB0Y3Bfc29jayAqdHAgPSB0Y3Bfc2soc2spOworCWludCByZXMgPSAwOworCisJaWYgKCFza2JfcXVldWVfZW1wdHkoJnRwLT5vdXRfb2Zfb3JkZXJfcXVldWUpKSB7CisJCU5FVF9JTkNfU1RBVFNfQkgoTElOVVhfTUlCX09GT1BSVU5FRCk7CisJCV9fc2tiX3F1ZXVlX3B1cmdlKCZ0cC0+b3V0X29mX29yZGVyX3F1ZXVlKTsKKworCQkvKiBSZXNldCBTQUNLIHN0YXRlLiAgQSBjb25mb3JtaW5nIFNBQ0sgaW1wbGVtZW50YXRpb24gd2lsbAorCQkgKiBkbyB0aGUgc2FtZSBhdCBhIHRpbWVvdXQgYmFzZWQgcmV0cmFuc21pdC4gIFdoZW4gYSBjb25uZWN0aW9uCisJCSAqIGlzIGluIGEgc2FkIHN0YXRlIGxpa2UgdGhpcywgd2UgY2FyZSBvbmx5IGFib3V0IGludGVncml0eQorCQkgKiBvZiB0aGUgY29ubmVjdGlvbiBub3QgcGVyZm9ybWFuY2UuCisJCSAqLworCQlpZiAodHAtPnJ4X29wdC5zYWNrX29rKQorCQkJdGNwX3NhY2tfcmVzZXQoJnRwLT5yeF9vcHQpOworCQlza19tZW1fcmVjbGFpbShzayk7CisJCXJlcyA9IDE7CisJfQorCXJldHVybiByZXM7Cit9CisKIC8qIFJlZHVjZSBhbGxvY2F0ZWQgbWVtb3J5IGlmIHdlIGNhbiwgdHJ5aW5nIHRvIGdldAogICogdGhlIHNvY2tldCB3aXRoaW4gaXRzIG1lbW9yeSBsaW1pdHMgYWdhaW4uCiAgKgpAQCAtNDIzMSwyMCArNDI3MCw3IEBACiAJLyogQ29sbGFwc2luZyBkaWQgbm90IGhlbHAsIGRlc3RydWN0aXZlIGFjdGlvbnMgZm9sbG93LgogCSAqIFRoaXMgbXVzdCBub3QgZXZlciBvY2N1ci4gKi8KIAotCS8qIEZpcnN0LCBwdXJnZSB0aGUgb3V0X29mX29yZGVyIHF1ZXVlLiAqLwotCWlmICghc2tiX3F1ZXVlX2VtcHR5KCZ0cC0+b3V0X29mX29yZGVyX3F1ZXVlKSkgewotCQlORVRfSU5DX1NUQVRTX0JIKExJTlVYX01JQl9PRk9QUlVORUQpOwotCQlfX3NrYl9xdWV1ZV9wdXJnZSgmdHAtPm91dF9vZl9vcmRlcl9xdWV1ZSk7Ci0KLQkJLyogUmVzZXQgU0FDSyBzdGF0ZS4gIEEgY29uZm9ybWluZyBTQUNLIGltcGxlbWVudGF0aW9uIHdpbGwKLQkJICogZG8gdGhlIHNhbWUgYXQgYSB0aW1lb3V0IGJhc2VkIHJldHJhbnNtaXQuICBXaGVuIGEgY29ubmVjdGlvbgotCQkgKiBpcyBpbiBhIHNhZCBzdGF0ZSBsaWtlIHRoaXMsIHdlIGNhcmUgb25seSBhYm91dCBpbnRlZ3JpdHkKLQkJICogb2YgdGhlIGNvbm5lY3Rpb24gbm90IHBlcmZvcm1hbmNlLgotCQkgKi8KLQkJaWYgKHRjcF9pc19zYWNrKHRwKSkKLQkJCXRjcF9zYWNrX3Jlc2V0KCZ0cC0+cnhfb3B0KTsKLQkJc2tfbWVtX3JlY2xhaW0oc2spOwotCX0KKwl0Y3BfcHJ1bmVfb2ZvX3F1ZXVlKHNrKTsKIAogCWlmIChhdG9taWNfcmVhZCgmc2stPnNrX3JtZW1fYWxsb2MpIDw9IHNrLT5za19yY3ZidWYpCiAJCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvYWRkcmNvbmYuYyBiL25ldC9pcHY2L2FkZHJjb25mLmMKaW5kZXggYTY1OTM1YS4uZTA4OTU1YiAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvYWRkcmNvbmYuYworKysgYi9uZXQvaXB2Ni9hZGRyY29uZi5jCkBAIC0zNzEsMjUgKzM3MSwyNiBAQAogCSAqLwogCWluNl9kZXZfaG9sZChuZGV2KTsKIAorI2lmIGRlZmluZWQoQ09ORklHX0lQVjZfU0lUKSB8fCBkZWZpbmVkKENPTkZJR19JUFY2X1NJVF9NT0RVTEUpCisJaWYgKGRldi0+dHlwZSA9PSBBUlBIUkRfU0lUICYmIChkZXYtPnByaXZfZmxhZ3MgJiBJRkZfSVNBVEFQKSkgeworCQlwcmludGsoS0VSTl9JTkZPCisJCSAgICAgICAiJXM6IERpc2FibGVkIE11bHRpY2FzdCBSU1xuIiwKKwkJICAgICAgIGRldi0+bmFtZSk7CisJCW5kZXYtPmNuZi5ydHJfc29saWNpdHMgPSAwOworCX0KKyNlbmRpZgorCiAjaWZkZWYgQ09ORklHX0lQVjZfUFJJVkFDWQogCXNldHVwX3RpbWVyKCZuZGV2LT5yZWdlbl90aW1lciwgaXB2Nl9yZWdlbl9ybmRpZCwgKHVuc2lnbmVkIGxvbmcpbmRldik7CiAJaWYgKChkZXYtPmZsYWdzJklGRl9MT09QQkFDSykgfHwKIAkgICAgZGV2LT50eXBlID09IEFSUEhSRF9UVU5ORUwgfHwKLSNpZiBkZWZpbmVkKENPTkZJR19JUFY2X1NJVCkgfHwgZGVmaW5lZChDT05GSUdfSVBWNl9TSVRfTU9EVUxFKQorCSAgICBkZXYtPnR5cGUgPT0gQVJQSFJEX1RVTk5FTDYgfHwKIAkgICAgZGV2LT50eXBlID09IEFSUEhSRF9TSVQgfHwKLSNlbmRpZgogCSAgICBkZXYtPnR5cGUgPT0gQVJQSFJEX05PTkUpIHsKIAkJcHJpbnRrKEtFUk5fSU5GTwogCQkgICAgICAgIiVzOiBEaXNhYmxlZCBQcml2YWN5IEV4dGVuc2lvbnNcbiIsCiAJCSAgICAgICBkZXYtPm5hbWUpOwogCQluZGV2LT5jbmYudXNlX3RlbXBhZGRyID0gLTE7Ci0KLQkJaWYgKGRldi0+dHlwZSA9PSBBUlBIUkRfU0lUICYmIChkZXYtPnByaXZfZmxhZ3MgJiBJRkZfSVNBVEFQKSkgewotCQkJcHJpbnRrKEtFUk5fSU5GTwotCQkJICAgICAgICIlczogRGlzYWJsZWQgTXVsdGljYXN0IFJTXG4iLAotCQkJICAgICAgIGRldi0+bmFtZSk7Ci0JCQluZGV2LT5jbmYucnRyX3NvbGljaXRzID0gMDsKLQkJfQogCX0gZWxzZSB7CiAJCWluNl9kZXZfaG9sZChuZGV2KTsKIAkJaXB2Nl9yZWdlbl9ybmRpZCgodW5zaWduZWQgbG9uZykgbmRldik7CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yYXcuYyBiL25ldC9pcHY2L3Jhdy5jCmluZGV4IDg4OTdjY2YuLjBhNmZiYzEgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3Jhdy5jCisrKyBiL25ldC9pcHY2L3Jhdy5jCkBAIC0zNzIsOCArMzcyLDEwIEBACiAJcmVhZF9sb2NrKCZyYXdfdjZfaGFzaGluZm8ubG9jayk7CiAJc2sgPSBza19oZWFkKCZyYXdfdjZfaGFzaGluZm8uaHRbaGFzaF0pOwogCWlmIChzayAhPSBOVUxMKSB7Ci0JCXNhZGRyID0gJmlwdjZfaGRyKHNrYiktPnNhZGRyOwotCQlkYWRkciA9ICZpcHY2X2hkcihza2IpLT5kYWRkcjsKKwkJc3RydWN0IGlwdjZoZHIgKmhkciA9IChzdHJ1Y3QgaXB2NmhkciAqKSBza2ItPmRhdGE7CisKKwkJc2FkZHIgPSAmaGRyLT5zYWRkcjsKKwkJZGFkZHIgPSAmaGRyLT5kYWRkcjsKIAkJbmV0ID0gc2tiLT5kZXYtPm5kX25ldDsKIAogCQl3aGlsZSAoKHNrID0gX19yYXdfdjZfbG9va3VwKG5ldCwgc2ssIG5leHRoZHIsIHNhZGRyLCBkYWRkciwKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9yeC5jIGIvbmV0L21hYzgwMjExL3J4LmMKaW5kZXggNTM1NDA3ZC4uYThhNDBhYiAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL3J4LmMKKysrIGIvbmV0L21hYzgwMjExL3J4LmMKQEAgLTEwNTAsMTIgKzEwNTAsOSBAQAogCWlmICh1bmxpa2VseSghKHJ4LT5mYyAmIElFRUU4MDIxMV9GQ1RMX1BST1RFQ1RFRCkgJiYKIAkJICAgICAocngtPmZjICYgSUVFRTgwMjExX0ZDVExfRlRZUEUpID09IElFRUU4MDIxMV9GVFlQRV9EQVRBICYmCiAJCSAgICAgKHJ4LT5mYyAmIElFRUU4MDIxMV9GQ1RMX1NUWVBFKSAhPSBJRUVFODAyMTFfU1RZUEVfTlVMTEZVTkMgJiYKLQkJICAgICAocngtPmtleSB8fCByeC0+c2RhdGEtPmRyb3BfdW5lbmNyeXB0ZWQpKSkgewotCQlpZiAobmV0X3JhdGVsaW1pdCgpKQotCQkJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBSWCBub24tV0VQIGZyYW1lLCBidXQgZXhwZWN0ZWQgIgotCQkJICAgICAgICJlbmNyeXB0aW9uXG4iLCByeC0+ZGV2LT5uYW1lKTsKKwkJICAgICAocngtPmtleSB8fCByeC0+c2RhdGEtPmRyb3BfdW5lbmNyeXB0ZWQpKSkKIAkJcmV0dXJuIC1FQUNDRVM7Ci0JfQorCiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL25ldC9yZmtpbGwvcmZraWxsLmMgYi9uZXQvcmZraWxsL3Jma2lsbC5jCmluZGV4IDE0MGEwYTguLjRlMTBhOTUgMTAwNjQ0Ci0tLSBhL25ldC9yZmtpbGwvcmZraWxsLmMKKysrIGIvbmV0L3Jma2lsbC9yZmtpbGwuYwpAQCAtOTIsNyArOTIsNyBAQAogCXJma2lsbF9zdGF0ZXNbdHlwZV0gPSBzdGF0ZTsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnkocmZraWxsLCAmcmZraWxsX2xpc3QsIG5vZGUpIHsKLQkJaWYgKCFyZmtpbGwtPnVzZXJfY2xhaW0pCisJCWlmICgoIXJma2lsbC0+dXNlcl9jbGFpbSkgJiYgKHJma2lsbC0+dHlwZSA9PSB0eXBlKSkKIAkJCXJma2lsbF90b2dnbGVfcmFkaW8ocmZraWxsLCBzdGF0ZSk7CiAJfQogCmRpZmYgLS1naXQgYS9uZXQvcnhycGMvYWZfcnhycGMuYyBiL25ldC9yeHJwYy9hZl9yeHJwYy5jCmluZGV4IDJkMGMyOWMuLjRiMjY4MmYgMTAwNjQ0Ci0tLSBhL25ldC9yeHJwYy9hZl9yeHJwYy5jCisrKyBiL25ldC9yeHJwYy9hZl9yeHJwYy5jCkBAIC0yNyw3ICsyNyw3IEBACiAKIHVuc2lnbmVkIHJ4cnBjX2RlYnVnOyAvLyA9IFJYUlBDX0RFQlVHX0tQUk9UTzsKIG1vZHVsZV9wYXJhbV9uYW1lZChkZWJ1ZywgcnhycGNfZGVidWcsIHVpbnQsIFNfSVdVU1IgfCBTX0lSVUdPKTsKLU1PRFVMRV9QQVJNX0RFU0MocnhycGNfZGVidWcsICJSeFJQQyBkZWJ1Z2dpbmcgbWFzayIpOworTU9EVUxFX1BBUk1fREVTQyhkZWJ1ZywgIlJ4UlBDIGRlYnVnZ2luZyBtYXNrIik7CiAKIHN0YXRpYyBpbnQgc3lzY3RsX3J4cnBjX21heF9xbGVuIF9fcmVhZF9tb3N0bHkgPSAxMDsKIApkaWZmIC0tZ2l0IGEvbmV0L3J4cnBjL3J4a2FkLmMgYi9uZXQvcnhycGMvcnhrYWQuYwppbmRleCBkMWMyOTZmLi42ZDM4YTgxIDEwMDY0NAotLS0gYS9uZXQvcnhycGMvcnhrYWQuYworKysgYi9uZXQvcnhycGMvcnhrYWQuYwpAQCAtMzEsNyArMzEsNyBAQAogCiB1bnNpZ25lZCByeHJwY19kZWJ1ZzsKIG1vZHVsZV9wYXJhbV9uYW1lZChkZWJ1ZywgcnhycGNfZGVidWcsIHVpbnQsIFNfSVdVU1IgfCBTX0lSVUdPKTsKLU1PRFVMRV9QQVJNX0RFU0MocnhycGNfZGVidWcsICJyeGthZCBkZWJ1Z2dpbmcgbWFzayIpOworTU9EVUxFX1BBUk1fREVTQyhkZWJ1ZywgInJ4a2FkIGRlYnVnZ2luZyBtYXNrIik7CiAKIHN0cnVjdCByeGthZF9sZXZlbDFfaGRyIHsKIAlfX2JlMzIJZGF0YV9zaXplOwkvKiB0cnVlIGRhdGEgc2l6ZSAoZXhjbHVkaW5nIHBhZGRpbmcpICovCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvY2xzX3UzMi5jIGIvbmV0L3NjaGVkL2Nsc191MzIuYwppbmRleCBjNWMxNmI0Li40ZDc1NTQ0IDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvY2xzX3UzMi5jCisrKyBiL25ldC9zY2hlZC9jbHNfdTMyLmMKQEAgLTQxMSw4ICs0MTEsMTAgQEAKIAkJCX0KIAkJfQogCi0JCWZvciAoaHQ9dHBfYy0+aGxpc3Q7IGh0OyBodCA9IGh0LT5uZXh0KQorCQlmb3IgKGh0ID0gdHBfYy0+aGxpc3Q7IGh0OyBodCA9IGh0LT5uZXh0KSB7CisJCQlodC0+cmVmY250LS07CiAJCQl1MzJfY2xlYXJfaG5vZGUodHAsIGh0KTsKKwkJfQogCiAJCXdoaWxlICgoaHQgPSB0cF9jLT5obGlzdCkgIT0gTlVMTCkgewogCQkJdHBfYy0+aGxpc3QgPSBodC0+bmV4dDsKQEAgLTQ0MSw4ICs0NDMsMTIgQEAKIAlpZiAodHAtPnJvb3QgPT0gaHQpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JaWYgKC0taHQtPnJlZmNudCA9PSAwKQorCWlmIChodC0+cmVmY250ID09IDEpIHsKKwkJaHQtPnJlZmNudC0tOwogCQl1MzJfZGVzdHJveV9obm9kZSh0cCwgaHQpOworCX0gZWxzZSB7CisJCXJldHVybiAtRUJVU1k7CisJfQogCiAJcmV0dXJuIDA7CiB9CkBAIC01NjgsNyArNTc0LDcgQEAKIAkJaWYgKGh0ID09IE5VTEwpCiAJCQlyZXR1cm4gLUVOT0JVRlM7CiAJCWh0LT50cF9jID0gdHBfYzsKLQkJaHQtPnJlZmNudCA9IDA7CisJCWh0LT5yZWZjbnQgPSAxOwogCQlodC0+ZGl2aXNvciA9IGRpdmlzb3I7CiAJCWh0LT5oYW5kbGUgPSBoYW5kbGU7CiAJCWh0LT5wcmlvID0gdHAtPnByaW87CmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2FwaS5jIGIvbmV0L3NjaGVkL3NjaF9hcGkuYwppbmRleCA3ZTNjMDQ4Li5mYzg3MDhhIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX2FwaS5jCisrKyBiL25ldC9zY2hlZC9zY2hfYXBpLmMKQEAgLTM4Niw2ICszODYsOSBAQAogCWlmIChuID09IDApCiAJCXJldHVybjsKIAl3aGlsZSAoKHBhcmVudGlkID0gc2NoLT5wYXJlbnQpKSB7CisJCWlmIChUQ19IX01BSihwYXJlbnRpZCkgPT0gVENfSF9NQUooVENfSF9JTkdSRVNTKSkKKwkJCXJldHVybjsKKwogCQlzY2ggPSBxZGlzY19sb29rdXAoc2NoLT5kZXYsIFRDX0hfTUFKKHBhcmVudGlkKSk7CiAJCWlmIChzY2ggPT0gTlVMTCkgewogCQkJV0FSTl9PTihwYXJlbnRpZCAhPSBUQ19IX1JPT1QpOwpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvaXB2Ni5jIGIvbmV0L3NjdHAvaXB2Ni5jCmluZGV4IGIxZTA1ZDcuLjg1ZjE0OTUgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL2lwdjYuYworKysgYi9uZXQvc2N0cC9pcHY2LmMKQEAgLTExMCw4ICsxMTAsOSBAQAogCQlzcGluX2xvY2tfYmgoJnNjdHBfbG9jYWxfYWRkcl9sb2NrKTsKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGFkZHIsIHRlbXAsCiAJCQkJCSZzY3RwX2xvY2FsX2FkZHJfbGlzdCwgbGlzdCkgewotCQkJaWYgKGlwdjZfYWRkcl9lcXVhbCgmYWRkci0+YS52Ni5zaW42X2FkZHIsCi0JCQkJCSAgICAgJmlmYS0+YWRkcikpIHsKKwkJCWlmIChhZGRyLT5hLnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUNiAmJgorCQkJCQlpcHY2X2FkZHJfZXF1YWwoJmFkZHItPmEudjYuc2luNl9hZGRyLAorCQkJCQkJJmlmYS0+YWRkcikpIHsKIAkJCQlmb3VuZCA9IDE7CiAJCQkJYWRkci0+dmFsaWQgPSAwOwogCQkJCWxpc3RfZGVsX3JjdSgmYWRkci0+bGlzdCk7CmRpZmYgLS1naXQgYS9uZXQvc2N0cC9vdXRxdWV1ZS5jIGIvbmV0L3NjdHAvb3V0cXVldWUuYwppbmRleCAxYmIzYzVjLi5jMDcxNDQ2IDEwMDY0NAotLS0gYS9uZXQvc2N0cC9vdXRxdWV1ZS5jCisrKyBiL25ldC9zY3RwL291dHF1ZXVlLmMKQEAgLTc5Myw2ICs3OTMsOSBAQAogCQkJYnJlYWs7CiAKIAkJY2FzZSBTQ1RQX0NJRF9BQk9SVDoKKwkJCWlmIChzY3RwX3Rlc3RfVF9iaXQoY2h1bmspKSB7CisJCQkJcGFja2V0LT52dGFnID0gYXNvYy0+Yy5teV92dGFnOworCQkJfQogCQljYXNlIFNDVFBfQ0lEX1NBQ0s6CiAJCWNhc2UgU0NUUF9DSURfSEVBUlRCRUFUOgogCQljYXNlIFNDVFBfQ0lEX0hFQVJUQkVBVF9BQ0s6CmRpZmYgLS1naXQgYS9uZXQvc2N0cC9wcm90b2NvbC5jIGIvbmV0L3NjdHAvcHJvdG9jb2wuYwppbmRleCBmOTAwOTFhLi5jMmRkNjVkIDEwMDY0NAotLS0gYS9uZXQvc2N0cC9wcm90b2NvbC5jCisrKyBiL25ldC9zY3RwL3Byb3RvY29sLmMKQEAgLTY0Nyw3ICs2NDcsOSBAQAogCQlzcGluX2xvY2tfYmgoJnNjdHBfbG9jYWxfYWRkcl9sb2NrKTsKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGFkZHIsIHRlbXAsCiAJCQkJCSZzY3RwX2xvY2FsX2FkZHJfbGlzdCwgbGlzdCkgewotCQkJaWYgKGFkZHItPmEudjQuc2luX2FkZHIuc19hZGRyID09IGlmYS0+aWZhX2xvY2FsKSB7CisJCQlpZiAoYWRkci0+YS5zYS5zYV9mYW1pbHkgPT0gQUZfSU5FVCAmJgorCQkJCQlhZGRyLT5hLnY0LnNpbl9hZGRyLnNfYWRkciA9PQorCQkJCQlpZmEtPmlmYV9sb2NhbCkgewogCQkJCWZvdW5kID0gMTsKIAkJCQlhZGRyLT52YWxpZCA9IDA7CiAJCQkJbGlzdF9kZWxfcmN1KCZhZGRyLT5saXN0KTsKZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYyBiL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYwppbmRleCA1Nzg2MzBlLi4zNmViYjM5IDEwMDY0NAotLS0gYS9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMKKysrIGIvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jCkBAIC0xOTgyLDcgKzE5ODIsMTAgQEAKIAkJCQkJc3RydWN0IHNjdHBfY2h1bmsgKmNodW5rLAogCQkJCQlzdHJ1Y3Qgc2N0cF9jaHVuayAqKmVycl9jaHVuaykKIHsKKwlzdHJ1Y3Qgc2N0cF9obWFjX2FsZ29fcGFyYW0gKmhtYWNzOwogCWludCByZXR2YWwgPSBTQ1RQX0lFUlJPUl9OT19FUlJPUjsKKwlfX3UxNiBuX2VsdCwgaWQgPSAwOworCWludCBpOwogCiAJLyogRklYTUUgLSBUaGlzIHJvdXRpbmUgaXMgbm90IGxvb2tpbmcgYXQgZWFjaCBwYXJhbWV0ZXIgcGVyIHRoZQogCSAqIGNodW5rIHR5cGUsIGkuZS4sIHVucmVjb2duaXplZCBwYXJhbWV0ZXJzIHNob3VsZCBiZSBmdXJ0aGVyCkBAIC0yMDU2LDkgKzIwNTksMjkgQEAKIAkJYnJlYWs7CiAKIAljYXNlIFNDVFBfUEFSQU1fSE1BQ19BTEdPOgotCQlpZiAoc2N0cF9hdXRoX2VuYWJsZSkKLQkJCWJyZWFrOwotCQkvKiBGYWxsIFRocm91Z2ggKi8KKwkJaWYgKCFzY3RwX2F1dGhfZW5hYmxlKQorCQkJZ290byBmYWxsdGhyb3VnaDsKKworCQlobWFjcyA9IChzdHJ1Y3Qgc2N0cF9obWFjX2FsZ29fcGFyYW0gKilwYXJhbS5wOworCQluX2VsdCA9IChudG9ocyhwYXJhbS5wLT5sZW5ndGgpIC0gc2l6ZW9mKHNjdHBfcGFyYW1oZHJfdCkpID4+IDE7CisKKwkJLyogU0NUUC1BVVRIOiBTZWN0aW9uIDYuMQorCQkgKiBUaGUgSE1BQyBhbGdvcml0aG0gYmFzZWQgb24gU0hBLTEgTVVTVCBiZSBzdXBwb3J0ZWQgYW5kCisJCSAqIGluY2x1ZGVkIGluIHRoZSBITUFDLUFMR08gcGFyYW1ldGVyLgorCQkgKi8KKwkJZm9yIChpID0gMDsgaSA8IG5fZWx0OyBpKyspIHsKKwkJCWlkID0gbnRvaHMoaG1hY3MtPmhtYWNfaWRzW2ldKTsKKworCQkJaWYgKGlkID09IFNDVFBfQVVUSF9ITUFDX0lEX1NIQTEpCisJCQkJYnJlYWs7CisJCX0KKworCQlpZiAoaWQgIT0gU0NUUF9BVVRIX0hNQUNfSURfU0hBMSkgeworCQkJc2N0cF9wcm9jZXNzX2ludl9wYXJhbWxlbmd0aChhc29jLCBwYXJhbS5wLCBjaHVuaywKKwkJCQkJCSAgICAgZXJyX2NodW5rKTsKKwkJCXJldHZhbCA9IFNDVFBfSUVSUk9SX0FCT1JUOworCQl9CisJCWJyZWFrOwogZmFsbHRocm91Z2g6CiAJZGVmYXVsdDoKIAkJU0NUUF9ERUJVR19QUklOVEsoIlVucmVjb2duaXplZCBwYXJhbTogJWQgZm9yIGNodW5rICVkLlxuIiwKZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NtX3NpZGVlZmZlY3QuYyBiL25ldC9zY3RwL3NtX3NpZGVlZmZlY3QuYwppbmRleCAyOGViMzhlLi5hNDc2M2ZkIDEwMDY0NAotLS0gYS9uZXQvc2N0cC9zbV9zaWRlZWZmZWN0LmMKKysrIGIvbmV0L3NjdHAvc21fc2lkZWVmZmVjdC5jCkBAIC0xNTM2LDYgKzE1MzYsOSBAQAogCQkJZXJyb3IgPSBzY3RwX2F1dGhfYXNvY19pbml0X2FjdGl2ZV9rZXkoYXNvYywKIAkJCQkJCUdGUF9BVE9NSUMpOwogCQkJYnJlYWs7CisJCWNhc2UgU0NUUF9DTURfVVBEQVRFX0lOSVRUQUc6CisJCQlhc29jLT5wZWVyLmkuaW5pdF90YWcgPSBjbWQtPm9iai51MzI7CisJCQlicmVhazsKIAogCQlkZWZhdWx0OgogCQkJcHJpbnRrKEtFUk5fV0FSTklORyAiSW1wb3NzaWJsZSBjb21tYW5kOiAldSwgJXBcbiIsCmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jCmluZGV4IGYyZWQ2NDcuLjA3MTk0YzIgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jCisrKyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jCkBAIC00MTQ0LDYgKzQxNDQsMjQgQEAKIAkJZ290byBub21lbTsKIAogCWlmIChhc29jKSB7CisJCS8qIFRyZWF0IElOSVQtQUNLIGFzIGEgc3BlY2lhbCBjYXNlIGR1cmluZyBDT09LSUUtV0FJVC4gKi8KKwkJaWYgKGNodW5rLT5jaHVua19oZHItPnR5cGUgPT0gU0NUUF9DSURfSU5JVF9BQ0sgJiYKKwkJICAgICFhc29jLT5wZWVyLmkuaW5pdF90YWcpIHsKKwkJCXNjdHBfaW5pdGFja19jaHVua190ICppbml0YWNrOworCisJCQlpbml0YWNrID0gKHNjdHBfaW5pdGFja19jaHVua190ICopY2h1bmstPmNodW5rX2hkcjsKKwkJCWlmICghc2N0cF9jaHVua19sZW5ndGhfdmFsaWQoY2h1bmssCisJCQkJCQkgICAgIHNpemVvZihzY3RwX2luaXRhY2tfY2h1bmtfdCkpKQorCQkJCWFib3J0LT5jaHVua19oZHItPmZsYWdzIHw9IFNDVFBfQ0hVTktfRkxBR19UOworCQkJZWxzZSB7CisJCQkJdW5zaWduZWQgaW50IGluaXR0YWc7CisKKwkJCQlpbml0dGFnID0gbnRvaGwoaW5pdGFjay0+aW5pdF9oZHIuaW5pdF90YWcpOworCQkJCXNjdHBfYWRkX2NtZF9zZihjb21tYW5kcywgU0NUUF9DTURfVVBEQVRFX0lOSVRUQUcsCisJCQkJCQlTQ1RQX1UzMihpbml0dGFnKSk7CisJCQl9CisJCX0KKwogCQlzY3RwX2FkZF9jbWRfc2YoY29tbWFuZHMsIFNDVFBfQ01EX1JFUExZLCBTQ1RQX0NIVU5LKGFib3J0KSk7CiAJCVNDVFBfSU5DX1NUQVRTKFNDVFBfTUlCX09VVENUUkxDSFVOS1MpOwogCkBAIC00MzQ5LDYgKzQzNjcsNyBAQAogCQkJCSAgICAgICBzY3RwX2NtZF9zZXFfdCAqY29tbWFuZHMpCiB7CiAJc3RydWN0IHNjdHBfY2h1bmsgKnJlcGw7CisJc3RydWN0IHNjdHBfYXNzb2NpYXRpb24qIG15X2Fzb2M7CiAKIAkvKiBUaGUgY29tbWVudCBiZWxvdyBzYXlzIHRoYXQgd2UgZW50ZXIgQ09PS0lFLVdBSVQgQUZURVIKIAkgKiBzZW5kaW5nIHRoZSBJTklULCBidXQgdGhhdCBkb2Vzbid0IGFjdHVhbGx5IHdvcmsgaW4gb3VyCkBAIC00MzcyLDggKzQzOTEsOCBAQAogCS8qIENhc3QgYXdheSB0aGUgY29uc3QgbW9kaWZpZXIsIGFzIHdlIHdhbnQgdG8ganVzdAogCSAqIHJlcnVuIGl0IHRocm91Z2ggYXMgYSBzaWRlZmZlY3QuCiAJICovCi0Jc2N0cF9hZGRfY21kX3NmKGNvbW1hbmRzLCBTQ1RQX0NNRF9ORVdfQVNPQywKLQkJCVNDVFBfQVNPQygoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKikgYXNvYykpOworCW15X2Fzb2MgPSAoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKilhc29jOworCXNjdHBfYWRkX2NtZF9zZihjb21tYW5kcywgU0NUUF9DTURfTkVXX0FTT0MsIFNDVFBfQVNPQyhteV9hc29jKSk7CiAKIAkvKiBDaG9vc2UgdHJhbnNwb3J0IGZvciBJTklULiAqLwogCXNjdHBfYWRkX2NtZF9zZihjb21tYW5kcywgU0NUUF9DTURfSU5JVF9DSE9PU0VfVFJBTlNQT1JULApkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvc29ja2V0LmMgYi9uZXQvc2N0cC9zb2NrZXQuYwppbmRleCBkOTk0ZDgyLi45OThlNjNhIDEwMDY0NAotLS0gYS9uZXQvc2N0cC9zb2NrZXQuYworKysgYi9uZXQvc2N0cC9zb2NrZXQuYwpAQCAtNTg2OCwxMSArNTg2OCwxMiBAQAogCQkJCSAgc2N0cF9jbXNnc190ICpjbXNncykKIHsKIAlzdHJ1Y3QgY21zZ2hkciAqY21zZzsKKwlzdHJ1Y3QgbXNnaGRyICpteV9tc2cgPSAoc3RydWN0IG1zZ2hkciAqKW1zZzsKIAogCWZvciAoY21zZyA9IENNU0dfRklSU1RIRFIobXNnKTsKIAkgICAgIGNtc2cgIT0gTlVMTDsKLQkgICAgIGNtc2cgPSBDTVNHX05YVEhEUigoc3RydWN0IG1zZ2hkciopbXNnLCBjbXNnKSkgewotCQlpZiAoIUNNU0dfT0sobXNnLCBjbXNnKSkKKwkgICAgIGNtc2cgPSBDTVNHX05YVEhEUihteV9tc2csIGNtc2cpKSB7CisJCWlmICghQ01TR19PSyhteV9tc2csIGNtc2cpKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAKIAkJLyogU2hvdWxkIHdlIHBhcnNlIHRoaXMgaGVhZGVyIG9yIGlnbm9yZT8gICovCmRpZmYgLS1naXQgYS9uZXQvc2N0cC91bHBldmVudC5jIGIvbmV0L3NjdHAvdWxwZXZlbnQuYwppbmRleCBiNDNmMWYxLi5jZTZjZGE2IDEwMDY0NAotLS0gYS9uZXQvc2N0cC91bHBldmVudC5jCisrKyBiL25ldC9zY3RwL3VscGV2ZW50LmMKQEAgLTg1OSw3ICs4NTksNyBAQAogCXVuaW9uIHNjdHBfbm90aWZpY2F0aW9uICpub3RpZmljYXRpb247CiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsKIAotCXNrYiA9IHNjdHBfZXZlbnQyc2tiKChzdHJ1Y3Qgc2N0cF91bHBldmVudCAqKWV2ZW50KTsKKwlza2IgPSBzY3RwX2V2ZW50MnNrYihldmVudCk7CiAJbm90aWZpY2F0aW9uID0gKHVuaW9uIHNjdHBfbm90aWZpY2F0aW9uICopIHNrYi0+ZGF0YTsKIAlyZXR1cm4gbm90aWZpY2F0aW9uLT5zbl9oZWFkZXIuc25fdHlwZTsKIH0K