Re: [f2fs-dev] [PATCH v5] f2fs: support dynamic reserve/release for device aliasing
Chao Yu via Linux-f2fs-devel <[email protected]> Thu, 30 Jul 2026 14:32:23 +0800
| Newsgroups | net.sourceforge.lists.linux-f2fs-devel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
T24gNy8zMC8yNiAwMDo0MywgRGFlaG8gSmVvbmcgd3JvdGU6Cj4gT24gV2VkLCBKdWwgMjksIDIw MjYgYXQgMjowOeKAr0FNIENoYW8gWXUgPGNoYW9Aa2VybmVsLm9yZz4gd3JvdGU6Cj4+Cj4+IE9u IDcvMjQvMjYgMDQ6MjAsIERhZWhvIEplb25nIHdyb3RlOgo+Pj4gRnJvbTogRGFlaG8gSmVvbmcg PGRhZWhvamVvbmdAZ29vZ2xlLmNvbT4KPj4+Cj4+PiBUaGlzIHBhdGNoIGFkZHMgYSBkeW5hbWlj IG1hbmFnZW1lbnQgZmVhdHVyZSB0byB0aGUgZXhpc3RpbmcgZGV2aWNlCj4+PiBhbGlhc2luZyBm dW5jdGlvbmFsaXR5LiBJdCBhbGxvd3MgdXNlcnMgdG8gZHluYW1pY2FsbHkgcmVzZXJ2ZSBvcgo+ Pj4gcmVsZWFzZSBzcGVjaWZpYyBkZXZpY2VzIGZyb20gdGhlIGZpbGVzeXN0ZW0ncyBmcmVlIHBv b2wgYXQgcnVudGltZQo+Pj4gdGhyb3VnaCBuZXcgaW9jdGxzLgo+Pj4KPj4+IFRvIHN1cHBvcnQg dGhpcywgdGhyZWUgbmV3IGlvY3RscyBhcmUgaW50cm9kdWNlZDoKPj4+IC0gRjJGU19JT0NfUkVT RVJWRV9ERVZfQUxJQVM6IFRoaXMgcmVjbGFpbXMgdGhlIHNwYWNlIG9jY3VwaWVkIGJ5IGEKPj4+ ICAgZGV2aWNlIGFsaWFzaW5nIGZpbGUuIEl0IGZpcnN0IHBlcmZvcm1zIGEgY2FwYWNpdHkgY2hl Y2ssIHJlc2V0cyBHQwo+Pj4gICB2aWN0aW0gaW5mb3JtYXRpb24gZm9yIHRoZSB0YXJnZXQgcmFu Z2UsIG1hcmtzIHRoZSBzZWdtZW50cyBhcyBpbi11c2UKPj4+ICAgdG8gcHJldmVudCBuZXcgYWxs b2NhdGlvbnMsIGFuZCB0aGVuIHRyaWdnZXJzIEdDIHRvIG1pZ3JhdGUgZXhpc3RpbmcKPj4+ICAg dmFsaWQgZGF0YSBvdXQgb2YgdGhlIHJhbmdlLiBGaW5hbGx5LCBpdCByZXNlcnZlcyB0aGVzZSBi bG9ja3MgaW4gdGhlCj4+PiAgIFNJVCB0byBlZmZlY3RpdmVseSBleGNsdWRlIHRoZSBkZXZpY2Ug ZnJvbSB0aGUgdXNhYmxlIGNhcGFjaXR5Lgo+Pj4KPj4+IC0gRjJGU19JT0NfUkVMRUFTRV9ERVZf QUxJQVM6IFRoaXMgcmVsZWFzZXMgdGhlIHJlc2VydmVkIHNwYWNlIG9mIGEKPj4+ICAgcHJldmlv dXNseSByZXNlcnZlZCBkZXZpY2UgYWxpYXNpbmcgZmlsZS4gSXQgdHJ1bmNhdGVzIHRoZSBibG9j a3MKPj4+ICAgYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWxlLCB3aGljaCBtYWtlcyB0aGVtIGF2YWls YWJsZSBmb3IgZ2VuZXJhbAo+Pj4gICBmaWxlc3lzdGVtIGFsbG9jYXRpb24gYWdhaW4uCj4+Pgo+ Pj4gLSBGMkZTX0lPQ19HRVRfREVWX0FMSUFTX1NUQVRVUzogVGhpcyByZXRyaWV2ZXMgdGhlIGN1 cnJlbnQgYWxpYXNpbmcKPj4+ICAgc3RhdHVzIG9mIGEgZGV2aWNlIGFsaWFzaW5nIGZpbGUsIHJl dHVybmluZyB3aGV0aGVyIHRoZSBmaWxlIGlzCj4+PiAgIHJlbGVhc2VkIChpbmFjdGl2ZSBhbGlh cykgb3IgcmVzZXJ2ZWQgKGFjdGl2ZSBhbGlhcywgd2l0aCBibG9ja3MKPj4+ICAgZnVsbHkgYWxs b2NhdGVkIG9uIHRoZSBkZXZpY2UpLgo+Pj4KPj4+IFNpZ25lZC1vZmYtYnk6IERhZWhvIEplb25n IDxkYWVob2plb25nQGdvb2dsZS5jb20+Cj4+PiAtLS0KPj4+IHY1OiBwcmV2ZW50ZWQgbmV3IHNl Z21lbnQgYWxsb2NhdGlvbiBvbiBkZXZpY2VzIHVuZGVyZ29pbmcgcmVzZXJ2YXRpb24KPj4+ICAg ICBvciB3aXRoIGFjdGl2ZSBhbGlhc2VzLgo+Pj4gICAgIHVzZWQgaW4tbWVtb3J5IHN0cnVjdCB0 byByZXNlcnZlIGJsb2NrcyBmb3IgZGV2aWNlIGFsaWFzaW5nLgo+Pj4gICAgIGNsZWFyZWQgcHJl ZnJlZSAoUFJFKSBkaXJ0eSBzZWdtZW50IGJpdG1hcC4KPj4+IHY0OiByZW5hbWVkIGludGVyZmFj ZXMuCj4+PiAgICAgZml4ZWQgcmFjZSBjb25kaXRpb25zIGJldHdlZW4gY2hlY2twb2ludD1kaXNh YmxlIG1vdW50IGFuZCBpb2N0bHMuCj4+PiAgICAgcmVmYWN0b3JlZCBzZWdtZW50IHJlc2VydmF0 aW9uIHBhcnQuCj4+PiAgICAgbW9kaWZpZWQgbG9jayB1c2FnZS4KPj4+IHYzOiBhZGQgQ0FQX1NZ U19BRE1JTiBhbmQgY2hlY2twb2ludD1kaXNhYmxlZCBjaGVjay4KPj4+ICAgICByZW1vdmUgYSBm MmZzIHNwZWNpZmljIGZsYWcgZXhwb3NlZCB3aXRoIGdldGZsYWdzLgo+Pj4gdjI6IHByZXZlbnQg b3BlcmF0aW9ucyBkdXJpbmcgY2hlY2twb2ludD1kaXNhYmxlZC4KPj4+IC0tLQo+Pj4gLS0tCj4+ PiAgRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mMmZzLnJzdCB8ICAzNSArKysrCj4+PiAgZnMv ZjJmcy9mMmZzLmggICAgICAgICAgICAgICAgICAgICB8ICAxMCArLQo+Pj4gIGZzL2YyZnMvZmls ZS5jICAgICAgICAgICAgICAgICAgICAgfCAyNzggKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0KPj4+ICBmcy9mMmZzL2djLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDMwICsrLS0KPj4+ ICBmcy9mMmZzL25hbWVpLmMgICAgICAgICAgICAgICAgICAgIHwgIDE0ICsrCj4+PiAgZnMvZjJm cy9zZWdtZW50LmMgICAgICAgICAgICAgICAgICB8IDE3NCArKysrKysrKysrKysrLS0tLS0KPj4+ ICBmcy9mMmZzL3NlZ21lbnQuaCAgICAgICAgICAgICAgICAgIHwgIDIyICsrKwo+Pj4gIGZzL2Yy ZnMvc3VwZXIuYyAgICAgICAgICAgICAgICAgICAgfCAgMzUgKysrKwo+Pj4gIGluY2x1ZGUvdWFw aS9saW51eC9mMmZzLmggICAgICAgICAgfCAgIDcgKwo+Pj4gIDkgZmlsZXMgY2hhbmdlZCwgNTQy IGluc2VydGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9Eb2N1 bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2YyZnMucnN0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVt cy9mMmZzLnJzdAo+Pj4gaW5kZXggOGM0YTE0YWU0NDRmLi4xYTVmZDRhZmU2MDkgMTAwNjQ0Cj4+ PiAtLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2YyZnMucnN0Cj4+PiArKysgYi9Eb2N1 bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2YyZnMucnN0Cj4+PiBAQCAtMTA0NSw2ICsxMDQ1LDQxIEBA IFNvLCB0aGUga2V5IGlkZWEgaXMsIHVzZXIgY2FuIGRvIGFueSBmaWxlIG9wZXJhdGlvbnMgb24g L2Rldi92ZGMsIGFuZAo+Pj4gIHJlY2xhaW0gdGhlIHNwYWNlIGFmdGVyIHRoZSB1c2UsIHdoaWxl IHRoZSBzcGFjZSBpcyBjb3VudGVkIGFzIC9kYXRhLgo+Pj4gIFRoYXQgZG9lc24ndCByZXF1aXJl IG1vZGlmeWluZyBwYXJ0aXRpb24gc2l6ZSBhbmQgZmlsZXN5c3RlbSBmb3JtYXQuCj4+Pgo+Pj4g K0R5bmFtaWMgRGV2aWNlIEFsaWFzaW5nIE1hbmFnZW1lbnQKPj4+ICstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCj4+PiArCj4+PiArSW4gYWRkaXRpb24gdG8gc3RhdGljIGRldmlj ZSBhbGlhc2luZyBieSBkZWxldGluZyB0aGUgYWxpYXNpbmcgZmlsZSwgRjJGUwo+Pj4gK3N1cHBv cnRzIGR5bmFtaWMgbWFuYWdlbWVudCBvZiBkZXZpY2UgYWxpYXNpbmcuIFRoaXMgbWVjaGFuaXNt IGFsbG93cyB0aGUgc3lzdGVtCj4+PiArdG8gZHluYW1pY2FsbHkgdHJhbnNpdGlvbiBwYXJ0aXRp b24gb3duZXJzaGlwIGJldHdlZW4gRjJGUyB1c2VyZGF0YSBhbmQgZXh0ZXJuYWwKPj4+ICtlbnRp dGllcyAoZS5nLiwgelJBTSwgcmF3IHBhcnRpdGlvbikgYmFzZWQgb24gc3lzdGVtIHJlcXVpcmVt ZW50cyB3aXRob3V0Cj4+PiArZGVsZXRpbmcgdGhlIG1hc3RlciBhbGlhc2luZyBmaWxlIG9yIHJl cXVpcmluZyB1bm1vdW50L3JlbW91bnQuCj4+PiArCj4+PiArVGhlIG1hc3RlciBhbGlhc2luZyBm aWxlIGlzIGNyZWF0ZWQgZHVyaW5nIHRoZSBpbml0aWFsIGZvcm1hdCBvZiB0aGUgZmlsZSBzeXN0 ZW0KPj4+ICthbmQgcmVtYWlucyBhcyBhIHBlcnNpc3RlbnQgY29udHJvbCBlbnRpdHkgKGlvY3Rs IGdhdGV3YXkpIGluIHRoZSByb290IGRpcmVjdG9yeS4KPj4+ICsKPj4+ICstIFBhcnRpdGlvbiBS ZXNlcnZhdGlvbiAoSW4tc2VydmljZSB0byBBbGlhc2VkKQo+Pj4gKyAgV2hlbiBhIHNwZWNpZmlj IHBhcnRpdGlvbiBuZWVkcyB0byBiZSBkZWRpY2F0ZWQgdG8gZXh0ZXJuYWwgc2VydmljZXMgKGUu Zy4sIHpSQU0pLAo+Pj4gKyAgYSB1c2VyIGNhbiByZXNlcnZlIHRoZSBkZXZpY2UgYWxpYXMgcmFu Z2UgdmlhIGlvY3RsLiBUaGUga2VybmVsIHJlc2V0cyBHQyB2aWN0aW0KPj4+ICsgIGluZm9ybWF0 aW9uIGZvciB0aGUgdGFyZ2V0IHJhbmdlLCBtYXJrcyBzZWdtZW50cyBhcyBpbi11c2UgdG8gcHJl dmVudCBuZXcKPj4+ICsgIGFsbG9jYXRpb25zLCBhbmQgdHJpZ2dlcnMgZm9yY2VkIEdDIHRvIG1p Z3JhdGUgZXhpc3RpbmcgdmFsaWQgZGF0YSBvdXQgb2YgdGhlCj4+PiArICByYW5nZS4gRmluYWxs eSwgaXQgcmVzZXJ2ZXMgdGhlc2UgYmxvY2tzIGluIHRoZSBTSVQgdG8gZWZmZWN0aXZlbHkgZXhj bHVkZSB0aGUKPj4+ICsgIGRldmljZSBmcm9tIHRoZSB1c2FibGUgY2FwYWNpdHkuCj4+PiArCj4+ PiArLSBQYXJ0aXRpb24gUmVsZWFzZSAoQWxpYXNlZCB0byBJbi1zZXJ2aWNlKQo+Pj4gKyAgV2hl biBleHRlcm5hbCB1c2FnZSBjb25jbHVkZXMsIHRoZSBzcGFjZSBpcyByZWNsYWltZWQgbm90IGJ5 IGRlbGV0aW5nIHRoZSBmaWxlLAo+Pj4gKyAgYnV0IHRocm91Z2ggdGhlIHJlbGVhc2UgaW9jdGwu IFRoZSBrZXJuZWwgdHJ1bmNhdGVzIGJsb2NrcyBhc3NvY2lhdGVkIHdpdGgKPj4+ICsgIHRoZSBm aWxlLCByZWxlYXNpbmcgdGhlbSBiYWNrIHRvIGdlbmVyYWwgZmlsZXN5c3RlbSBhbGxvY2F0aW9u Lgo+Pj4gKwo+Pj4gKy4uIGNvZGUtYmxvY2s6Ogo+Pj4gKwo+Pj4gKyAgICMgZjJmc19pbyBkZXZf YWxpYXMgcmVsZWFzZSAvbW50L2YyZnMvdmRjLmZpbGUKPj4+ICsgICAjIGRmIC1oCj4+PiArICAg L2Rldi92ZGIgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjRHICA3NTNNICAgNjRHICAgMiUg L21udC9mMmZzCj4+PiArCj4+PiArICAgIyBmMmZzX2lvIGRldl9hbGlhcyByZXNlcnZlIC9tbnQv ZjJmcy92ZGMuZmlsZQo+Pj4gKyAgICMgZGYgLWgKPj4+ICsgICAvZGV2L3ZkYiAgICAgICAgICAg ICAgICAgICAgICAgICAgICA2NEcgICAzM0cgICAzMkcgIDUyJSAvbW50L2YyZnMKPj4+ICsKPj4+ ICBQZXItZmlsZSBSZWFkLU9ubHkgTGFyZ2UgRm9saW8gU3VwcG9ydAo+Pj4gIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2ZzL2YyZnMv ZjJmcy5oIGIvZnMvZjJmcy9mMmZzLmgKPj4+IGluZGV4IGYxNzc0ZDRlMThkMi4uNzRjMmQ1OGNl MjcxIDEwMDY0NAo+Pj4gLS0tIGEvZnMvZjJmcy9mMmZzLmgKPj4+ICsrKyBiL2ZzL2YyZnMvZjJm cy5oCj4+PiBAQCAtMTQwNCw2ICsxNDA0LDggQEAgc3RydWN0IGYyZnNfZGV2X2luZm8gewo+Pj4g ICAgICAgdW5zaWduZWQgaW50IHRvdGFsX3NlZ21lbnRzOwo+Pj4gICAgICAgYmxvY2tfdCBzdGFy dF9ibGs7Cj4+PiAgICAgICBibG9ja190IGVuZF9ibGs7Cj4+PiArICAgICBib29sIGhhc19hbGlh czsKPj4+ICsgICAgIGJvb2wgaXNfcmVzZXJ2aW5nOwo+Pj4gICNpZmRlZiBDT05GSUdfQkxLX0RF Vl9aT05FRAo+Pj4gICAgICAgdW5zaWduZWQgaW50IG5yX2Jsa3o7ICAgICAgICAgICAvKiBUb3Rh bCBudW1iZXIgb2Ygem9uZXMgKi8KPj4+ICAgICAgIHVuc2lnbmVkIGxvbmcgKmJsa3pfc2VxOyAg ICAgICAgLyogQml0bWFwIGluZGljYXRpbmcgc2VxdWVudGlhbCB6b25lcyAqLwo+Pj4gQEAgLTE4 NTcsNiArMTg1OSw3IEBAIHN0cnVjdCBmMmZzX3NiX2luZm8gewo+Pj4gICAgICAgYmxvY2tfdCBs YXN0X3ZhbGlkX2Jsb2NrX2NvdW50OyAgICAgICAgIC8qIGZvciByZWNvdmVyeSAqLwo+Pj4gICAg ICAgYmxvY2tfdCByZXNlcnZlZF9ibG9ja3M7ICAgICAgICAgICAgICAgIC8qIGNvbmZpZ3VyYWJs ZSByZXNlcnZlZCBibG9ja3MgKi8KPj4+ICAgICAgIGJsb2NrX3QgY3VycmVudF9yZXNlcnZlZF9i bG9ja3M7ICAgICAgICAvKiBjdXJyZW50IHJlc2VydmVkIGJsb2NrcyAqLwo+Pj4gKyAgICAgYmxv Y2tfdCBhbGlhc19yZXNlcnZlZF9ibG9ja3M7ICAgICAgICAgIC8qIHJlc2VydmVkIGJsb2NrcyBm b3IgZGV2aWNlIGFsaWFzICovCj4+Pgo+Pj4gICAgICAgLyogQWRkaXRpb25hbCB0cmFja2luZyBm b3Igbm8gY2hlY2twb2ludCBtb2RlICovCj4+PiAgICAgICBibG9ja190IHVudXNhYmxlX2Jsb2Nr X2NvdW50OyAgICAgICAgICAgLyogIyBvZiBibG9ja3Mgc2F2ZWQgYnkgbGFzdCBjcCAqLwo+Pj4g QEAgLTI1NTksNyArMjU2Miw4IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGdldF9hdmFp bGFibGVfYmxvY2tfY291bnQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+Pj4gICAgICAgYmxv Y2tfdCBhdmFpbF91c2VyX2Jsb2NrX2NvdW50Owo+Pj4KPj4+ICAgICAgIGF2YWlsX3VzZXJfYmxv Y2tfY291bnQgPSBzYmktPnVzZXJfYmxvY2tfY291bnQgLQo+Pj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzYmktPmN1cnJlbnRfcmVzZXJ2ZWRfYmxvY2tzOwo+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYmktPmN1cnJlbnRfcmVzZXJ2ZWRf YmxvY2tzIC0KPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2JpLT5h bGlhc19yZXNlcnZlZF9ibG9ja3M7Cj4+Pgo+Pj4gICAgICAgaWYgKHRlc3Rfb3B0KHNiaSwgUkVT RVJWRV9ST09UKSAmJiAhX19hbGxvd19yZXNlcnZlZF9yb290KHNiaSwgaW5vZGUsIGNhcCkpCj4+ PiAgICAgICAgICAgICAgIGF2YWlsX3VzZXJfYmxvY2tfY291bnQgLT0gRjJGU19PUFRJT04oc2Jp KS5yb290X3Jlc2VydmVkX2Jsb2NrczsKPj4+IEBAIC00MDEwLDYgKzQwMTQsOCBAQCBpbnQgZjJm c19mbHVzaF9kZXZpY2VfY2FjaGUoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKTsKPj4+ICB2b2lk IGYyZnNfZGVzdHJveV9mbHVzaF9jbWRfY29udHJvbChzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmks IGJvb2wgZnJlZSk7Cj4+PiAgdm9pZCBmMmZzX2ludmFsaWRhdGVfYmxvY2tzKHN0cnVjdCBmMmZz X3NiX2luZm8gKnNiaSwgYmxvY2tfdCBhZGRyLAo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsZW4pOwo+Pj4gK3ZvaWQgZjJmc19y ZXNlcnZlX2RldmljZV9hbGlhcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGJsb2NrX3QgYWRk ciwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgbGVuKTsKPj4+ICBib29sIGYyZnNfaXNfY2hlY2twb2ludGVkX2RhdGEoc3RydWN0 IGYyZnNfc2JfaW5mbyAqc2JpLCBibG9ja190IGJsa2FkZHIpOwo+Pj4gIGludCBmMmZzX3N0YXJ0 X2Rpc2NhcmRfdGhyZWFkKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSk7Cj4+PiAgdm9pZCBmMmZz X2Ryb3BfZGlzY2FyZF9jbWQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpKTsKPj4+IEBAIC00MjMx LDYgKzQyMzcsOCBAQCB2b2lkIGYyZnNfYnVpbGRfZ2NfbWFuYWdlcihzdHJ1Y3QgZjJmc19zYl9p bmZvICpzYmkpOwo+Pj4gIGludCBmMmZzX2djX3JhbmdlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi aSwKPj4+ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHN0YXJ0X3NlZywgdW5zaWduZWQgaW50 IGVuZF9zZWcsCj4+PiAgICAgICAgICAgICAgIGJvb2wgZHJ5X3J1biwgdW5zaWduZWQgaW50IGRy eV9ydW5fc2VjdGlvbnMpOwo+Pj4gK3ZvaWQgZjJmc19yZXNldF9nY192aWN0aW1fcmVzb3VyY2Uo c3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+Pj4gKyAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg c3RhcnQsIHVuc2lnbmVkIGludCBlbmQpOwo+Pj4gIGludCBmMmZzX3Jlc2l6ZV9mcyhzdHJ1Y3Qg ZmlsZSAqZmlscCwgX191NjQgYmxvY2tfY291bnQpOwo+Pj4gIGludCBfX2luaXQgZjJmc19jcmVh dGVfZ2FyYmFnZV9jb2xsZWN0aW9uX2NhY2hlKHZvaWQpOwo+Pj4gIHZvaWQgZjJmc19kZXN0cm95 X2dhcmJhZ2VfY29sbGVjdGlvbl9jYWNoZSh2b2lkKTsKPj4+IGRpZmYgLS1naXQgYS9mcy9mMmZz L2ZpbGUuYyBiL2ZzL2YyZnMvZmlsZS5jCj4+PiBpbmRleCA0YjUyYzU2ZDcxZjAuLjY0MmYwNmYy ZmFlYSAxMDA2NDQKPj4+IC0tLSBhL2ZzL2YyZnMvZmlsZS5jCj4+PiArKysgYi9mcy9mMmZzL2Zp bGUuYwo+Pj4gQEAgLTgxMywxMyArODEzLDE5IEBAIGludCBmMmZzX2RvX3RydW5jYXRlX2Jsb2Nr cyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1NjQgZnJvbSwgYm9vbCBsb2NrKQo+Pj4KPj4+ICAgICAg IGlmIChJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKSB7Cj4+PiAgICAgICAgICAgICAgIHN0cnVj dCBleHRlbnRfdHJlZSAqZXQgPSBGMkZTX0koaW5vZGUpLT5leHRlbnRfdHJlZVtFWF9SRUFEXTsK Pj4+IC0gICAgICAgICAgICAgc3RydWN0IGV4dGVudF9pbmZvIGVpID0gZXQtPmxhcmdlc3Q7Cj4+ PiArICAgICAgICAgICAgIHN0cnVjdCBleHRlbnRfaW5mbyBlaTsKPj4+ICsKPj4+ICsgICAgICAg ICAgICAgcmVhZF9sb2NrKCZldC0+bG9jayk7Cj4+PiArICAgICAgICAgICAgIGVpID0gZXQtPmxh cmdlc3Q7Cj4+PiArICAgICAgICAgICAgIHJlYWRfdW5sb2NrKCZldC0+bG9jayk7Cj4+Pgo+Pj4g ICAgICAgICAgICAgICBmMmZzX2ludmFsaWRhdGVfYmxvY2tzKHNiaSwgZWkuYmxrLCBlaS5sZW4p Owo+Pj4KPj4+ICAgICAgICAgICAgICAgZGVjX3ZhbGlkX2Jsb2NrX2NvdW50KHNiaSwgaW5vZGUs IGVpLmxlbik7Cj4+PiAgICAgICAgICAgICAgIGYyZnNfdXBkYXRlX3RpbWUoc2JpLCBSRVFfVElN RSk7Cj4+Pgo+Pj4gKyAgICAgICAgICAgICBmMmZzX2Ryb3BfZXh0ZW50X3RyZWUoaW5vZGUpOwo+ Pj4gKwo+Pj4gICAgICAgICAgICAgICBmMmZzX2ZvbGlvX3B1dChpZm9saW8sIHRydWUpOwo+Pj4g ICAgICAgICAgICAgICBnb3RvIG91dDsKPj4+ICAgICAgIH0KPj4+IEBAIC0xMTAwLDggKzExMDYs OSBAQCBpbnQgZjJmc19zZXRhdHRyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgZGVu dHJ5ICpkZW50cnksCj4+PiAgICAgICBpZiAoKGF0dHItPmlhX3ZhbGlkICYgQVRUUl9TSVpFKSkg ewo+Pj4gICAgICAgICAgICAgICBpZiAobWFwcGluZ19sYXJnZV9mb2xpb19zdXBwb3J0KGlub2Rl LT5pX21hcHBpbmcpKQo+Pj4gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRU9QTk9UU1VQ UDsKPj4+IC0gICAgICAgICAgICAgaWYgKCFmMmZzX2lzX2NvbXByZXNzX2JhY2tlbmRfcmVhZHko aW5vZGUpIHx8Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJU19ERVZJQ0VfQUxJ QVNJTkcoaW5vZGUpKQo+Pj4gKyAgICAgICAgICAgICBpZiAoSVNfREVWSUNFX0FMSUFTSU5HKGlu b2RlKSkKPj4+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwo+Pj4gKyAgICAg ICAgICAgICBpZiAoIWYyZnNfaXNfY29tcHJlc3NfYmFja2VuZF9yZWFkeShpbm9kZSkpCj4+PiAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwo+Pj4gICAgICAgICAgICAg ICBpZiAoaXNfaW5vZGVfZmxhZ19zZXQoaW5vZGUsIEZJX0NPTVBSRVNTX1JFTEVBU0VEKSAmJgo+ Pj4gICAgICAgICAgICAgICAgICAgICAgICFJU19BTElHTkVEKGF0dHItPmlhX3NpemUsCj4+PiBA QCAtMjEzMCw2ICsyMTM3LDkgQEAgc3RhdGljIGludCBmMmZzX3NldGZsYWdzX2NvbW1vbihzdHJ1 Y3QgaW5vZGUgKmlub2RlLCB1MzIgaWZsYWdzLCB1MzIgbWFzaykKPj4+ICAgICAgIGlmIChJU19O T1FVT1RBKGlub2RlKSkKPj4+ICAgICAgICAgICAgICAgcmV0dXJuIC1FUEVSTTsKPj4+Cj4+PiAr ICAgICBpZiAoSVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkKPj4+ICsgICAgICAgICAgICAgcmV0 dXJuIC1FUEVSTTsKPj4+ICsKPj4+ICAgICAgIGlmICgoaWZsYWdzIF4gbWFza2VkX2ZsYWdzKSAm IEYyRlNfQ0FTRUZPTERfRkwpIHsKPj4+ICAgICAgICAgICAgICAgaWYgKCFmMmZzX3NiX2hhc19j YXNlZm9sZChGMkZTX0lfU0IoaW5vZGUpKSkKPj4+ICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gLUVPUE5PVFNVUFA7Cj4+PiBAQCAtMjY3OCw2ICsyNjg4LDE3IEBAIHN0YXRpYyBpbnQgZjJm c19pb2NfZ2V0X2VuY3J5cHRpb25fcG9saWN5KHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBs b25nIGFyZykKPj4+ICAgICAgIHJldHVybiBmc2NyeXB0X2lvY3RsX2dldF9wb2xpY3koZmlscCwg KHZvaWQgX191c2VyICopYXJnKTsKPj4+ICB9Cj4+Pgo+Pj4gK3N0YXRpYyBpbnQgZjJmc19pb2Nf Z2V0X2Rldl9hbGlhc19zdGF0dXMoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGxvbmcgYXJn KQo+Pj4gK3sKPj4+ICsgICAgIHN0cnVjdCBpbm9kZSAqaW5vZGUgPSBmaWxlX2lub2RlKGZpbHAp Owo+Pj4gKwo+Pj4gKyAgICAgaWYgKCFJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKQo+Pj4gKyAg ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4+ICsKPj4+ICsgICAgIHJldHVybiBwdXRfdXNl cihGMkZTX0hBU19CTE9DS1MoaW5vZGUpID8gRjJGU19ERVZfQUxJQVNfU1RBVFVTX1JFU0VSVkVE IDoKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEYyRlNfREVWX0FMSUFTX1NUQVRV U19SRUxFQVNFRCwgKHUzMiBfX3VzZXIgKilhcmcpOwo+Pj4gK30KPj4+ICsKPj4+ICBzdGF0aWMg aW50IGYyZnNfaW9jX2dldF9lbmNyeXB0aW9uX3B3c2FsdChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5z aWduZWQgbG9uZyBhcmcpCj4+PiAgewo+Pj4gICAgICAgc3RydWN0IGlub2RlICppbm9kZSA9IGZp bGVfaW5vZGUoZmlscCk7Cj4+PiBAQCAtMzYxNiw2ICszNjM3LDI0OCBAQCBzdGF0aWMgaW50IGYy ZnNfaW9jX2dldF9kZXZfYWxpYXNfZmlsZShzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgbG9u ZyBhcmcpCj4+PiAgICAgICAgICAgICAgICAgICAgICAgKHUzMiBfX3VzZXIgKilhcmcpOwo+Pj4g IH0KPj4+Cj4+PiArc3RhdGljIGJvb2wgZjJmc19nZXRfZGV2X2FsaWFzX2V4dGVudChzdHJ1Y3Qg ZjJmc19zYl9pbmZvICpzYmksCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGRlbnRyeSAqZGVudHJ5LAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBleHRlbnRfaW5mbyAqZWkpCj4+PiArewo+Pj4gKyAgICAgaW50IGk7 Cj4+PiArCj4+PiArICAgICBmb3IgKGkgPSAxOyBpIDwgc2JpLT5zX25kZXZzOyBpKyspIHsKPj4+ ICsgICAgICAgICAgICAgY2hhciAqbmFtZSA9IHN0cnJjaHIoRkRFVihpKS5wYXRoLCAnLycpOwo+ Pj4gKwo+Pj4gKyAgICAgICAgICAgICBuYW1lID0gbmFtZSA/IG5hbWUgKyAxIDogRkRFVihpKS5w YXRoOwo+Pj4gKyAgICAgICAgICAgICBpZiAoIXN0cmNtcChuYW1lLCBkZW50cnktPmRfbmFtZS5u YW1lKSkgewo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGVpLT5ibGsgPSBGREVWKGkpLnN0YXJ0 X2JsazsKPj4+ICsgICAgICAgICAgICAgICAgICAgICBlaS0+bGVuID0gRkRFVihpKS50b3RhbF9z ZWdtZW50cyA8PCBzYmktPmxvZ19ibG9ja3NfcGVyX3NlZzsKPj4+ICsgICAgICAgICAgICAgICAg ICAgICBlaS0+Zm9mcyA9IDA7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7 Cj4+PiArICAgICAgICAgICAgIH0KPj4KPj4gVHJpdmlhbCBjbGVhbnVwIHRvIGF2b2lkIGxvbmcg bGluZToKPj4KPj4gICAgICAgICAgICAgICAgIGlmIChzdHJjbXAobmFtZSwgZGVudHJ5LT5kX25h bWUubmFtZSkpCj4+ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+Pgo+PiAgICAg ICAgICAgICAgICAgZWktPmJsayA9IEZERVYoaSkuc3RhcnRfYmxrOwo+PiAgICAgICAgICAgICAg ICAgZWktPmxlbiA9IEZERVYoaSkudG90YWxfc2VnbWVudHMgPDwgc2JpLT5sb2dfYmxvY2tzX3Bl cl9zZWc7Cj4+ICAgICAgICAgICAgICAgICBlaS0+Zm9mcyA9IDA7Cj4+ICAgICAgICAgICAgICAg ICByZXR1cm4gdHJ1ZTsKPj4KPj4+ICsgICAgIH0KPj4+ICsgICAgIHJldHVybiBmYWxzZTsKPj4+ ICt9Cj4+PiArCj4+PiArc3RhdGljIGludCBmMmZzX2lvY19yZXNlcnZlX2Rldl9hbGlhcyhzdHJ1 Y3QgZmlsZSAqZmlscCkKPj4+ICt7Cj4+PiArICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmls ZV9pbm9kZShmaWxwKTsKPj4+ICsgICAgIHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSA9IEYyRlNf SV9TQihpbm9kZSk7Cj4+PiArICAgICBzdHJ1Y3QgZXh0ZW50X3RyZWUgKmV0ID0gRjJGU19JKGlu b2RlKS0+ZXh0ZW50X3RyZWVbRVhfUkVBRF07Cj4+PiArICAgICBzdHJ1Y3QgZXh0ZW50X2luZm8g ZWk7Cj4+PiArICAgICBzdHJ1Y3QgY3BfY29udHJvbCBjcGMgPSB7IENQX1NZTkMsIDAsIDAsIDAg fTsKPj4+ICsgICAgIHN0cnVjdCBmMmZzX2xvY2tfY29udGV4dCBsYywgZ2xjOwo+Pj4gKyAgICAg YmxrY250X3QgY291bnQ7Cj4+PiArICAgICB1bnNpZ25lZCBpbnQgc3RhcnQsIGVuZDsKPj4+ICsg ICAgIGludCB0eXBlLCBlcnI7Cj4+PiArCj4+PiArICAgICBpZiAoIWNhcGFibGUoQ0FQX1NZU19B RE1JTikpCj4+PiArICAgICAgICAgICAgIHJldHVybiAtRVBFUk07Cj4+PiArCj4+PiArICAgICBp ZiAodW5saWtlbHkoaXNfc2JpX2ZsYWdfc2V0KHNiaSwgU0JJX0NQX0RJU0FCTEVEKSkpCj4+PiAr ICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Pj4gKwo+Pj4gKyAgICAgZXJyID0gbW50X3dh bnRfd3JpdGVfZmlsZShmaWxwKTsKPj4+ICsgICAgIGlmIChlcnIpCj4+PiArICAgICAgICAgICAg IHJldHVybiBlcnI7Cj4+PiArCj4+PiArICAgICBpbm9kZV9sb2NrKGlub2RlKTsKPj4+ICsKPj4+ ICsgICAgIGlmICghSVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkgewo+Pj4gKyAgICAgICAgICAg ICBlcnIgPSAtRUlOVkFMOwo+Pj4gKyAgICAgICAgICAgICBnb3RvIG91dF9pbm9kZV91bmxvY2s7 Cj4+PiArICAgICB9Cj4+PiArCj4+PiArICAgICBpZiAoRjJGU19IQVNfQkxPQ0tTKGlub2RlKSkg ewo+Pj4gKyAgICAgICAgICAgICBlcnIgPSAwOwo+Pj4gKyAgICAgICAgICAgICBnb3RvIG91dF9p bm9kZV91bmxvY2s7Cj4+PiArICAgICB9Cj4+PiArCj4+PiArICAgICBpZiAoIWYyZnNfZ2V0X2Rl dl9hbGlhc19leHRlbnQoc2JpLCBmaWxwLT5mX3BhdGguZGVudHJ5LCAmZWkpKSB7Cj4+PiArICAg ICAgICAgICAgIGYyZnNfd2FybihzYmksICJkZXZpY2UgYWxpYXMgZmlsZSAoJXMsIGlubz0lbGx1 KSBoYXMgbm8gbWF0Y2hpbmcgZGV2aWNlIiwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGZp bHAtPmZfcGF0aC5kZW50cnktPmRfbmFtZS5uYW1lLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgKHVuc2lnbmVkIGxvbmcgbG9uZylpbm9kZS0+aV9pbm8pOwo+Pj4gKyAgICAgICAgICAgICBz ZXRfc2JpX2ZsYWcoc2JpLCBTQklfTkVFRF9GU0NLKTsKPj4+ICsgICAgICAgICAgICAgZjJmc19o YW5kbGVfZXJyb3Ioc2JpLCBFUlJPUl9DT1JSVVBURURfSU5PREUpOwo+Pj4gKyAgICAgICAgICAg ICBlcnIgPSAtRUZTQ09SUlVQVEVEOwo+Pj4gKyAgICAgICAgICAgICBnb3RvIG91dF9pbm9kZV91 bmxvY2s7Cj4+PiArICAgICB9Cj4+PiArCj4+PiArICAgICBzcGluX2xvY2soJnNiaS0+c3RhdF9s b2NrKTsKPj4+ICsgICAgIGlmIChzYmktPnRvdGFsX3ZhbGlkX2Jsb2NrX2NvdW50ICsgZWkubGVu ID4KPj4+ICsgICAgICAgICAgICAgICAgICAgICBnZXRfYXZhaWxhYmxlX2Jsb2NrX2NvdW50KHNi aSwgaW5vZGUsIHRydWUpKSB7Cj4+PiArICAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZzYmktPnN0 YXRfbG9jayk7Cj4+PiArICAgICAgICAgICAgIGVyciA9IC1FTk9TUEM7Cj4+PiArICAgICAgICAg ICAgIGdvdG8gb3V0X2lub2RlX3VubG9jazsKPj4+ICsgICAgIH0KPj4+ICsgICAgIHNiaS0+YWxp YXNfcmVzZXJ2ZWRfYmxvY2tzICs9IGVpLmxlbjsKPj4+ICsgICAgIHNwaW5fdW5sb2NrKCZzYmkt PnN0YXRfbG9jayk7Cj4+PiArCj4+PiArICAgICBzcGluX2xvY2soJkZSRUVfSShzYmkpLT5zZWdt YXBfbG9jayk7Cj4+PiArICAgICBGREVWKGYyZnNfdGFyZ2V0X2RldmljZV9pbmRleChzYmksIGVp LmJsaykpLmlzX3Jlc2VydmluZyA9IHRydWU7Cj4+PiArICAgICBzcGluX3VubG9jaygmRlJFRV9J KHNiaSktPnNlZ21hcF9sb2NrKTsKPj4+ICsKPj4+ICsgICAgIHN0YXJ0ID0gR0VUX1NFR05PKHNi aSwgZWkuYmxrKTsKPj4+ICsgICAgIGVuZCA9IEdFVF9TRUdOTyhzYmksIGVpLmJsayArIGVpLmxl biAtIDEpOwo+Pj4gKwo+Pj4gKyAgICAgLyogQWNxdWlyZSBnY19sb2NrIGZvciB2aWN0aW0gcmVz ZXQsIGN1cnNlZyByZXNpemUsIGFuZCByYW5nZSBHQyAqLwo+Pj4gKyAgICAgZjJmc19kb3duX3dy aXRlX3RyYWNlKCZzYmktPmdjX2xvY2ssICZnbGMpOwo+Pj4gKwo+Pj4gKyAgICAgLyogUmVzZXQg dGhlIHZpY3RpbSBpbmZvcm1hdGlvbiB0byBwcmV2ZW50IEdDIGZyb20gdGFyZ2V0aW5nIHRoZSBy YW5nZSAqLwo+Pj4gKyAgICAgZjJmc19yZXNldF9nY192aWN0aW1fcmVzb3VyY2Uoc2JpLCBzdGFy dCwgZW5kKTsKPj4+ICsKPj4+ICsgICAgIC8qIE1vdmUgb3V0IGN1cnNlZ3MgZnJvbSB0aGUgdGFy Z2V0IHJhbmdlICovCj4+PiArICAgICBmb3IgKHR5cGUgPSBDVVJTRUdfSE9UX0RBVEE7IHR5cGUg PCBOUl9DVVJTRUdfUEVSU0lTVF9UWVBFOyB0eXBlKyspIHsKPj4+ICsgICAgICAgICAgICAgZXJy ID0gZjJmc19hbGxvY2F0ZV9zZWdtZW50X2Zvcl9yZXNpemUoc2JpLCB0eXBlLCBzdGFydCwgZW5k KTsKPj4+ICsgICAgICAgICAgICAgaWYgKGVycikKPj4+ICsgICAgICAgICAgICAgICAgICAgICBn b3RvIG91dF9nY191bmxvY2s7Cj4+PiArICAgICB9Cj4+PiArCj4+PiArICAgICBmMmZzX2xvY2tf b3Aoc2JpLCAmbGMpOwo+Pj4gKwo+Pj4gKyAgICAgaWYgKHVubGlrZWx5KGlzX3NiaV9mbGFnX3Nl dChzYmksIFNCSV9DUF9ESVNBQkxFRCkpKSB7Cj4+PiArICAgICAgICAgICAgIGVyciA9IC1FSU5W QUw7Cj4+PiArICAgICAgICAgICAgIGYyZnNfdW5sb2NrX29wKHNiaSwgJmxjKTsKPj4+ICsgICAg ICAgICAgICAgZ290byBvdXRfZ2NfdW5sb2NrOwo+Pj4gKyAgICAgfQo+Pj4gKwo+Pj4gKyAgICAg LyogZG8gR0MgdG8gbW92ZSBvdXQgdmFsaWQgYmxvY2tzIGluIHRoZSByYW5nZSBhbGwgYXQgb25j ZSEgKi8KPj4+ICsgICAgIGVyciA9IGYyZnNfZ2NfcmFuZ2Uoc2JpLCBzdGFydCwgZW5kLCBmYWxz ZSwgMCk7Cj4+PiArICAgICBpZiAoZXJyKSB7Cj4+PiArICAgICAgICAgICAgIGYyZnNfdW5sb2Nr X29wKHNiaSwgJmxjKTsKPj4+ICsgICAgICAgICAgICAgZ290byBvdXRfZ2NfdW5sb2NrOwo+Pj4g KyAgICAgfQo+Pj4gKwo+Pj4gKyAgICAgY291bnQgPSBlaS5sZW47Cj4+PiArICAgICBlcnIgPSBp bmNfdmFsaWRfYmxvY2tfY291bnQoc2JpLCBpbm9kZSwgJmNvdW50LCBmYWxzZSk7Cj4+Cj4+IEht bS4uIHNlZW1zIGlmIGRldmljZSBhbGlhcyBmaWxlIGlzIDRHQiwgd2UgaGF2ZSByZXNlcnZlZCA0 R0IgYnkgc2V0Cj4+IGFsaWFzX3Jlc2VydmVkX2Jsb2NrcyB0byA0R0IsIGhlcmUgd2Ugd2FudCB0 byBhbGxvY2F0ZSBhbm90aGVyIDRHQj8KPj4gSXQgd2lsbCBmYWlsIGlmIHRoZSBsZWZ0IHNwYWNl IGlzIGxlc3MgdGhhbiA0R0IsIHNlZW1zIG5vdCBtYWtlIHNlbnNlLgo+Pgo+PiBNYXliZSB3ZSBj YW4gYWRkIGFub3RoZXIgcGFyYW1ldGVyIHRvIGxldCBpbmNfdmFsaWRfYmxvY2tfY291bnQgdG8g MSkKPj4gaW5jcmVhc2UgdG90YWxfdmFsaWRfYmxvY2tfY291bnQgYW5kIDIpIGRlY3JlYXNlIGFs aWFzX3Jlc2VydmVkX2Jsb2Nrcwo+PiBhdG9taWNhbGx5IHVuZGVyIHByb3RldGlvbiBvZiBzdGF0 X2xvY2s/IFRob3VnaHRzPwo+Pgo+Pgo+Pj4gKyAgICAgaWYgKGVycikgewo+Pj4gKyAgICAgICAg ICAgICBmMmZzX3VubG9ja19vcChzYmksICZsYyk7Cj4+PiArICAgICAgICAgICAgIGdvdG8gb3V0 X2djX3VubG9jazsKPj4+ICsgICAgIH0KPj4+ICsKPj4+ICsgICAgIHNwaW5fbG9jaygmc2JpLT5z dGF0X2xvY2spOwo+Pj4gKyAgICAgc2JpLT5hbGlhc19yZXNlcnZlZF9ibG9ja3MgLT0gZWkubGVu Owo+Pj4gKyAgICAgc3Bpbl91bmxvY2soJnNiaS0+c3RhdF9sb2NrKTsKPj4+ICsKPj4+ICsgICAg IGlmIChldCkgewo+Pgo+PiBBbnkgY2FzZSB0aGF0IGV0IGlzIE5VTEw/Cj4+Cj4+PiArICAgICAg ICAgICAgIHdyaXRlX2xvY2soJmV0LT5sb2NrKTsKPj4+ICsgICAgICAgICAgICAgZXQtPmxhcmdl c3QgPSBlaTsKPj4+ICsgICAgICAgICAgICAgd3JpdGVfdW5sb2NrKCZldC0+bG9jayk7Cj4+PiAr ICAgICB9Cj4+PiArICAgICBjbGVhcl9pbm9kZV9mbGFnKGlub2RlLCBGSV9OT19FWFRFTlQpOwo+ Pj4gKwo+Pj4gKyAgICAgZjJmc19yZXNlcnZlX2RldmljZV9hbGlhcyhzYmksIGVpLmJsaywgZWku bGVuKTsKPj4+ICsKPj4+ICsgICAgIGlfc2l6ZV93cml0ZShpbm9kZSwgKGxvZmZfdCllaS5sZW4g PDwgUEFHRV9TSElGVCk7Cj4+Cj4+IDw8IHNiaS0+YmxvY2tzaXplPyBpbiBjYXNlIHBhZ2Vfc2l6 ZSBpcyBub3QgZXF1YWxzIHRvIGJsb2Nrc2l6ZS4KPj4KPj4+ICsgICAgIGYyZnNfdXBkYXRlX2lu b2RlX3BhZ2UoaW5vZGUpOwo+Pj4gKwo+Pj4gKyAgICAgc3Bpbl9sb2NrKCZGUkVFX0koc2JpKS0+ c2VnbWFwX2xvY2spOwo+Pj4gKyAgICAgRkRFVihmMmZzX3RhcmdldF9kZXZpY2VfaW5kZXgoc2Jp LCBlaS5ibGspKS5pc19yZXNlcnZpbmcgPSBmYWxzZTsKPj4+ICsgICAgIHNwaW5fdW5sb2NrKCZG UkVFX0koc2JpKS0+c2VnbWFwX2xvY2spOwo+Pj4gKwo+Pj4gKyAgICAgZjJmc191bmxvY2tfb3Ao c2JpLCAmbGMpOwo+Pj4gKyAgICAgZjJmc191cF93cml0ZV90cmFjZSgmc2JpLT5nY19sb2NrLCAm Z2xjKTsKPj4+ICsKPj4+ICsgICAgIGlub2RlX3VubG9jayhpbm9kZSk7Cj4+PiArICAgICBtbnRf ZHJvcF93cml0ZV9maWxlKGZpbHApOwo+Pj4gKwo+Pj4gKyAgICAgZXJyID0gZjJmc193cml0ZV9j aGVja3BvaW50KHNiaSwgJmNwYyk7Cj4+PiArICAgICByZXR1cm4gZXJyOwo+Pj4gKwo+Pj4gK291 dF9nY191bmxvY2s6Cj4+PiArICAgICBzcGluX2xvY2soJnNiaS0+c3RhdF9sb2NrKTsKPj4+ICsg ICAgIHNiaS0+YWxpYXNfcmVzZXJ2ZWRfYmxvY2tzIC09IGVpLmxlbjsKPj4+ICsgICAgIHNwaW5f dW5sb2NrKCZzYmktPnN0YXRfbG9jayk7Cj4+PiArCj4+PiArICAgICBzcGluX2xvY2soJkZSRUVf SShzYmkpLT5zZWdtYXBfbG9jayk7Cj4+PiArICAgICBGREVWKGYyZnNfdGFyZ2V0X2RldmljZV9p bmRleChzYmksIGVpLmJsaykpLmlzX3Jlc2VydmluZyA9IGZhbHNlOwo+Pj4gKyAgICAgc3Bpbl91 bmxvY2soJkZSRUVfSShzYmkpLT5zZWdtYXBfbG9jayk7Cj4+PiArICAgICBmMmZzX3VwX3dyaXRl X3RyYWNlKCZzYmktPmdjX2xvY2ssICZnbGMpOwo+Pj4gKwo+Pgo+PiBvdXRfaW5vZGVfdW5sb2Nr Ogo+Pgo+Pj4gKyAgICAgaW5vZGVfdW5sb2NrKGlub2RlKTsKPj4+ICsgICAgIG1udF9kcm9wX3dy aXRlX2ZpbGUoZmlscCk7Cj4+PiArICAgICByZXR1cm4gZXJyOwo+Pj4gKwo+Pj4gK291dF9pbm9k ZV91bmxvY2s6Cj4+PiArICAgICBpbm9kZV91bmxvY2soaW5vZGUpOwo+Pj4gKyAgICAgbW50X2Ry b3Bfd3JpdGVfZmlsZShmaWxwKTsKPj4+ICsgICAgIHJldHVybiBlcnI7Cj4+Cj4+IENhbiBiZSBy ZW1vdmVkLgo+Pgo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW50IGYyZnNfaW9jX3JlbGVhc2Vf ZGV2X2FsaWFzKHN0cnVjdCBmaWxlICpmaWxwKQo+Pj4gK3sKPj4+ICsgICAgIHN0cnVjdCBpbm9k ZSAqaW5vZGUgPSBmaWxlX2lub2RlKGZpbHApOwo+Pj4gKyAgICAgc3RydWN0IGYyZnNfc2JfaW5m byAqc2JpID0gRjJGU19JX1NCKGlub2RlKTsKPj4+ICsgICAgIHN0cnVjdCBleHRlbnRfdHJlZSAq ZXQgPSBGMkZTX0koaW5vZGUpLT5leHRlbnRfdHJlZVtFWF9SRUFEXTsKPj4+ICsgICAgIHN0cnVj dCBleHRlbnRfaW5mbyBlaSA9IHswLCB9Owo+Pj4gKyAgICAgc3RydWN0IGNwX2NvbnRyb2wgY3Bj ID0geyBDUF9TWU5DLCAwLCAwLCAwIH07Cj4+PiArICAgICBzdHJ1Y3QgZjJmc19sb2NrX2NvbnRl eHQgbGMsIGdsYzsKPj4+ICsgICAgIGludCBlcnI7Cj4+PiArCj4+PiArICAgICBpZiAoIWNhcGFi bGUoQ0FQX1NZU19BRE1JTikpCj4+PiArICAgICAgICAgICAgIHJldHVybiAtRVBFUk07Cj4+PiAr Cj4+PiArICAgICBpZiAodW5saWtlbHkoaXNfc2JpX2ZsYWdfc2V0KHNiaSwgU0JJX0NQX0RJU0FC TEVEKSkpCj4+PiArICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Pj4gKwo+Pj4gKyAgICAg ZXJyID0gbW50X3dhbnRfd3JpdGVfZmlsZShmaWxwKTsKPj4+ICsgICAgIGlmIChlcnIpCj4+PiAr ICAgICAgICAgICAgIHJldHVybiBlcnI7Cj4+PiArCj4+PiArICAgICBpbm9kZV9sb2NrKGlub2Rl KTsKPj4+ICsKPj4+ICsgICAgIGlmICghSVNfREVWSUNFX0FMSUFTSU5HKGlub2RlKSkgewo+Pj4g KyAgICAgICAgICAgICBlcnIgPSAtRUlOVkFMOwo+Pj4gKyAgICAgICAgICAgICBnb3RvIG91dF9p bm9kZV91bmxvY2s7Cj4+PiArICAgICB9Cj4+PiArCj4+PiArICAgICBpZiAoIUYyRlNfSEFTX0JM T0NLUyhpbm9kZSkpIHsKPj4+ICsgICAgICAgICAgICAgZXJyID0gMDsKPj4+ICsgICAgICAgICAg ICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+Pj4gKyAgICAgfQo+Pj4gKwo+Pj4gKyAgICAgZXJy ID0gZmlsZW1hcF93cml0ZV9hbmRfd2FpdChpbm9kZS0+aV9tYXBwaW5nKTsKPj4+ICsgICAgIGlm IChlcnIpCj4+PiArICAgICAgICAgICAgIGdvdG8gb3V0X2lub2RlX3VubG9jazsKPj4+ICsKPj4+ ICsgICAgIHJlYWRfbG9jaygmZXQtPmxvY2spOwo+Pj4gKyAgICAgZWkgPSBldC0+bGFyZ2VzdDsK Pj4+ICsgICAgIHJlYWRfdW5sb2NrKCZldC0+bG9jayk7Cj4+Cj4+IERvIHdlIG5lZWQgdG8gZG8g c2FuaXR5IGNoZWNrIG9uIHdoZXRoZXIgc3RhcnQvZW5kIG9mIGRldmljZSBhbGlhcyBmaWxlCj4+ IGFyZSBhbGlnbmVkIHRvIHNlY3Rpb24tc2l6ZT8gbWF5IGJlIGluIHNhbml0eV9jaGVja19leHRl bnRfY2FjaGUoKT8KPiAKPiBUaGFua3MgZm9yIGFsbCB0aGUgY29tbWVudHMuIEkgYWNjZXB0ZWQg YWxsIG90aGVyIGNvbW1lbnRzLgo+IAo+IEluIHNhbml0eV9jaGVja19leHRlbnRfY2FjaGUoKSwg d2UgYWxyZWFkeSB2ZXJpZnkgdGhhdCB0aGUgZXh0ZW50Cj4gcmFuZ2Ugb2YgYSBkZXZpY2UgYWxp YXMgaW5vZGUgKGVpLmJsayBhbmQgZWkubGVuKSBtYXRjaGVzIHRoZSBleGFjdAo+IHN0YXJ0IGFu ZCBlbmQgYmxvY2sgb2YgYSBzZWNvbmRhcnkgZGV2aWNlIChGREVWKGRldmkpLnN0YXJ0X2JsayBh bmQKPiBGREVWKGRldmkpLmVuZF9ibGspOgo+IFNpbmNlIGV2ZXJ5IHNlY29uZGFyeSBibG9jayBk ZXZpY2UgaW4gRjJGUyBpcyBhbHJlYWR5IGd1YXJhbnRlZWQgdG8gYmUKPiBhbGlnbmVkIHRvIHNl Y3Rpb24gYm91bmRhcmllcywgbWF0Y2hpbmcgdGhlIGV4dGVudCBhZ2FpbnN0IEZERVYoZGV2aSkK PiBpbmhlcmVudGx5IGd1YXJhbnRlZXMgc2VjdGlvbiBhbGlnbm1lbnQgZm9yIHRoZSBkZXZpY2Ug YWxpYXMgZmlsZSBhcwo+IHdlbGwuCgpJSVVDLCBmb3IgdGhlIHdvcnN0IGNhc2UsIHdlIG1heSBz dWZmZXIgaXNzdWUgKHBvdGVudGlhbGx5IEdDIG9uIHVuYWxpZ25lZApwaW5maWxlcykgd2hlbiBt b3VudGluZyBhbiBpbWFnZSBjb250YWluaW5nIHVuYWxpZ25lZCBkZXZpY2UgYWxpYXMgZmlsZSB3 aGljaAppcyBmdXp6ZWQgYnkgc3l6a2FsbGVyPwoKQWxzbywgSSdtIHdvcnJ5IGFib3V0IHdoZXRo ZXIgdGhlcmUgaXMgYW55IGNvZGUgZmxhdyBjYW4gY2F1c2UgdG8gbWlzcyB0byBrZWVwCnRoZSBh bGlnbm1lbnQsIHNpbmNlIHJlY2VudGx5IEkgZm91bmQgYSBidWcgdGhhdCBwaW5maWxlIG1heSBu b3QgYmUgYWxpbmdlZAp0byBzZWN0aW9uLCBzZWUgZGV0YWlscyBpbiBjb21taXQgZDBhNDgxZmFk NWM3ICgiZjJmczogZml4IHRvIGF2b2lkIHBvdGVudGlhbApzZWN0aW9uLXVuYWxpZ25lZCBwaW5m aWxlIiksIHNvIEkgcHJvcG9zZWQgdG8gYWRkIHN1Y2ggc2FuaXR5IGNoZWNrIHRvIGRldGVjdApp dC4gOikKClRob3VnaHRzPwoKVGhhbmtzLAoKPiAKPiBUaGVyZWZvcmUsIGFkZGluZyBhbiBleHBs aWNpdCBzZWN0aW9uIGFsaWdubWVudCBjaGVjayBpbgo+IHNhbml0eV9jaGVja19leHRlbnRfY2Fj aGUoKSBzZWVtcyByZWR1bmRhbnQuCj4gCj4+Cj4+PiArCj4+PiArICAgICBmMmZzX2Rvd25fd3Jp dGVfdHJhY2UoJnNiaS0+Z2NfbG9jaywgJmdsYyk7Cj4+PiArICAgICBmMmZzX2xvY2tfb3Aoc2Jp LCAmbGMpOwo+Pj4gKwo+Pj4gKyAgICAgaWYgKHVubGlrZWx5KGlzX3NiaV9mbGFnX3NldChzYmks IFNCSV9DUF9ESVNBQkxFRCkpKSB7Cj4+PiArICAgICAgICAgICAgIGVyciA9IC1FSU5WQUw7Cj4+ PiArICAgICAgICAgICAgIGYyZnNfdW5sb2NrX29wKHNiaSwgJmxjKTsKPj4+ICsgICAgICAgICAg ICAgZjJmc191cF93cml0ZV90cmFjZSgmc2JpLT5nY19sb2NrLCAmZ2xjKTsKPj4+ICsgICAgICAg ICAgICAgZ290byBvdXRfaW5vZGVfdW5sb2NrOwo+Pj4gKyAgICAgfQo+Pj4gKwo+Pj4gKyAgICAg dHJ1bmNhdGVfc2V0c2l6ZShpbm9kZSwgMCk7Cj4+PiArCj4+Cj4+IFRvIGF2b2lkIHJhY2luZyB3 LyBtbWFwPwo+Pgo+PiBmaWxlbWFwX2ludmFsaWRhdGVfbG9jayhpbm9kZS0+aV9tYXBwaW5nKTsK Pj4KPj4+ICsgICAgIGVyciA9IGYyZnNfdHJ1bmNhdGVfYmxvY2tzKGlub2RlLCAwLCBmYWxzZSk7 Cj4+Cj4+IGZpbGVtYXBfaW52YWxpZGF0ZV91bmxvY2soaW5vZGUtPmlfbWFwcGluZyk7Cj4+Cj4+ PiArICAgICBpZiAoZXJyKSB7Cj4+PiArICAgICAgICAgICAgIGlfc2l6ZV93cml0ZShpbm9kZSwg KGxvZmZfdCllaS5sZW4gPDwgUEFHRV9TSElGVCk7Cj4+Cj4+IDw8IHNiaS0+YmxvY2tzaXplPyBp biBjYXNlIHBhZ2Vfc2l6ZSBpcyBub3QgZXF1YWxzIHRvIGJsb2Nrc2l6ZS4KPj4KPj4+ICsgICAg ICAgICAgICAgZjJmc191bmxvY2tfb3Aoc2JpLCAmbGMpOwo+Pj4gKyAgICAgICAgICAgICBmMmZz X3VwX3dyaXRlX3RyYWNlKCZzYmktPmdjX2xvY2ssICZnbGMpOwo+Pj4gKyAgICAgICAgICAgICBn b3RvIG91dF9pbm9kZV91bmxvY2s7Cj4+PiArICAgICB9Cj4+PiArCj4+PiArICAgICBmMmZzX3Vw ZGF0ZV9pbm9kZV9wYWdlKGlub2RlKTsKPj4+ICsKPj4+ICsgICAgIGYyZnNfdW5sb2NrX29wKHNi aSwgJmxjKTsKPj4+ICsgICAgIGYyZnNfdXBfd3JpdGVfdHJhY2UoJnNiaS0+Z2NfbG9jaywgJmds Yyk7Cj4+PiArCj4+PiArICAgICBpbm9kZV91bmxvY2soaW5vZGUpOwo+Pj4gKyAgICAgbW50X2Ry b3Bfd3JpdGVfZmlsZShmaWxwKTsKPj4+ICsKPj4+ICsgICAgIGVyciA9IGYyZnNfd3JpdGVfY2hl Y2twb2ludChzYmksICZjcGMpOwo+Pgo+PiByZXR1cm4gZjJmc193cml0ZV9jaGVja3BvaW50KHNi aSwgJmNwYyk7Cj4+Cj4+PiArICAgICByZXR1cm4gZXJyOwo+Pj4gKwo+Pj4gK291dF9pbm9kZV91 bmxvY2s6Cj4+PiArICAgICBpbm9kZV91bmxvY2soaW5vZGUpOwo+Pj4gKyAgICAgbW50X2Ryb3Bf d3JpdGVfZmlsZShmaWxwKTsKPj4+ICsgICAgIHJldHVybiBlcnI7Cj4+PiArfQo+Pj4gKwo+Pj4g IHN0YXRpYyBpbnQgZjJmc19pb2NfaW9fcHJpbyhzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQg bG9uZyBhcmcpCj4+PiAgewo+Pj4gICAgICAgc3RydWN0IGlub2RlICppbm9kZSA9IGZpbGVfaW5v ZGUoZmlscCk7Cj4+PiBAQCAtNDc0Miw4ICs1MDA1LDE0IEBAIHN0YXRpYyBsb25nIF9fZjJmc19p b2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBh cmcpCj4+PiAgICAgICAgICAgICAgIHJldHVybiBmMmZzX2lvY19jb21wcmVzc19maWxlKGZpbHAp Owo+Pj4gICAgICAgY2FzZSBGMkZTX0lPQ19HRVRfREVWX0FMSUFTX0ZJTEU6Cj4+PiAgICAgICAg ICAgICAgIHJldHVybiBmMmZzX2lvY19nZXRfZGV2X2FsaWFzX2ZpbGUoZmlscCwgYXJnKTsKPj4+ ICsgICAgIGNhc2UgRjJGU19JT0NfR0VUX0RFVl9BTElBU19TVEFUVVM6Cj4+PiArICAgICAgICAg ICAgIHJldHVybiBmMmZzX2lvY19nZXRfZGV2X2FsaWFzX3N0YXR1cyhmaWxwLCBhcmcpOwo+Pj4g ICAgICAgY2FzZSBGMkZTX0lPQ19JT19QUklPOgo+Pj4gICAgICAgICAgICAgICByZXR1cm4gZjJm c19pb2NfaW9fcHJpbyhmaWxwLCBhcmcpOwo+Pj4gKyAgICAgY2FzZSBGMkZTX0lPQ19SRVNFUlZF X0RFVl9BTElBUzoKPj4+ICsgICAgICAgICAgICAgcmV0dXJuIGYyZnNfaW9jX3Jlc2VydmVfZGV2 X2FsaWFzKGZpbHApOwo+Pj4gKyAgICAgY2FzZSBGMkZTX0lPQ19SRUxFQVNFX0RFVl9BTElBUzoK Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIGYyZnNfaW9jX3JlbGVhc2VfZGV2X2FsaWFzKGZpbHAp Owo+Pj4gICAgICAgZGVmYXVsdDoKPj4+ICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9UVFk7Cj4+ PiAgICAgICB9Cj4+PiBAQCAtNTUzMCw3ICs1Nzk5LDEwIEBAIGxvbmcgZjJmc19jb21wYXRfaW9j dGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJn KQo+Pj4gICAgICAgY2FzZSBGMkZTX0lPQ19ERUNPTVBSRVNTX0ZJTEU6Cj4+PiAgICAgICBjYXNl IEYyRlNfSU9DX0NPTVBSRVNTX0ZJTEU6Cj4+PiAgICAgICBjYXNlIEYyRlNfSU9DX0dFVF9ERVZf QUxJQVNfRklMRToKPj4+ICsgICAgIGNhc2UgRjJGU19JT0NfR0VUX0RFVl9BTElBU19TVEFUVVM6 Cj4+PiAgICAgICBjYXNlIEYyRlNfSU9DX0lPX1BSSU86Cj4+PiArICAgICBjYXNlIEYyRlNfSU9D X1JFU0VSVkVfREVWX0FMSUFTOgo+Pj4gKyAgICAgY2FzZSBGMkZTX0lPQ19SRUxFQVNFX0RFVl9B TElBUzoKPj4+ICAgICAgICAgICAgICAgYnJlYWs7Cj4+PiAgICAgICBkZWZhdWx0Ogo+Pj4gICAg ICAgICAgICAgICByZXR1cm4gLUVOT0lPQ1RMQ01EOwo+Pj4gZGlmZiAtLWdpdCBhL2ZzL2YyZnMv Z2MuYyBiL2ZzL2YyZnMvZ2MuYwo+Pj4gaW5kZXggZmZhYTdiYTc2YTFiLi45M2JjYjM1YTViNWQg MTAwNjQ0Cj4+PiAtLS0gYS9mcy9mMmZzL2djLmMKPj4+ICsrKyBiL2ZzL2YyZnMvZ2MuYwo+Pj4g QEAgLTIxOTcsMjkgKzIxOTcsMzcgQEAgaW50IGYyZnNfZ2NfcmFuZ2Uoc3RydWN0IGYyZnNfc2Jf aW5mbyAqc2JpLAo+Pj4gICAgICAgcmV0dXJuIDA7Cj4+PiAgfQo+Pj4KPj4+ICt2b2lkIGYyZnNf cmVzZXRfZ2NfdmljdGltX3Jlc291cmNlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPj4+ICsg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc3RhcnQsIHVuc2lnbmVkIGludCBlbmQp Cj4+PiArewo+Pj4gKyAgICAgaW50IGk7Cj4+PiArCj4+PiArICAgICBtdXRleF9sb2NrKCZESVJU WV9JKHNiaSktPnNlZ2xpc3RfbG9jayk7Cj4+PiArICAgICBmb3IgKGkgPSAwOyBpIDwgTUFYX0dD X1BPTElDWTsgaSsrKQo+Pj4gKyAgICAgICAgICAgICBpZiAoU0lUX0koc2JpKS0+bGFzdF92aWN0 aW1baV0gPj0gc3RhcnQgJiYKPj4+ICsgICAgICAgICAgICAgICAgICAgICBTSVRfSShzYmkpLT5s YXN0X3ZpY3RpbVtpXSA8PSBlbmQpCj4+PiArICAgICAgICAgICAgICAgICAgICAgU0lUX0koc2Jp KS0+bGFzdF92aWN0aW1baV0gPSAwOwo+Pj4gKwo+Pj4gKyAgICAgZm9yIChpID0gQkdfR0M7IGkg PD0gRkdfR0M7IGkrKykKPj4+ICsgICAgICAgICAgICAgaWYgKHNiaS0+bmV4dF92aWN0aW1fc2Vn W2ldID49IHN0YXJ0ICYmCj4+PiArICAgICAgICAgICAgICAgICAgICAgc2JpLT5uZXh0X3ZpY3Rp bV9zZWdbaV0gPD0gZW5kKQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHNiaS0+bmV4dF92aWN0 aW1fc2VnW2ldID0gTlVMTF9TRUdOTzsKPj4+ICsgICAgIG11dGV4X3VubG9jaygmRElSVFlfSShz YmkpLT5zZWdsaXN0X2xvY2spOwo+Pj4gK30KPj4+ICsKPj4+ICBzdGF0aWMgaW50IGZyZWVfc2Vn bWVudF9yYW5nZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4+PiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2VjcywgYm9vbCBkcnlfcnVuKQo+Pj4gIHsKPj4+ ICAgICAgIHVuc2lnbmVkIGludCBuZXh0X2ludXNlLCBzdGFydCwgZW5kOwo+Pj4gICAgICAgc3Ry dWN0IGNwX2NvbnRyb2wgY3BjID0geyBDUF9SRVNJWkUsIDAsIDAsIDAgfTsKPj4+IC0gICAgIGlu dCBnY19tb2RlLCBnY190eXBlOwo+Pj4gICAgICAgaW50IGVyciA9IDA7Cj4+PiAgICAgICBpbnQg dHlwZTsKPj4+Cj4+PiAtICAgICAvKiBGb3JjZSBibG9jayBhbGxvY2F0aW9uIGZvciBHQyAqLwo+ Pj4gICAgICAgTUFJTl9TRUNTKHNiaSkgLT0gc2VjczsKPj4+ICAgICAgIHN0YXJ0ID0gTUFJTl9T RUNTKHNiaSkgKiBTRUdTX1BFUl9TRUMoc2JpKTsKPj4+ICAgICAgIGVuZCA9IE1BSU5fU0VHUyhz YmkpIC0gMTsKPj4+Cj4+PiAtICAgICBtdXRleF9sb2NrKCZESVJUWV9JKHNiaSktPnNlZ2xpc3Rf bG9jayk7Cj4+PiAtICAgICBmb3IgKGdjX21vZGUgPSAwOyBnY19tb2RlIDwgTUFYX0dDX1BPTElD WTsgZ2NfbW9kZSsrKQo+Pj4gLSAgICAgICAgICAgICBpZiAoU0lUX0koc2JpKS0+bGFzdF92aWN0 aW1bZ2NfbW9kZV0gPj0gc3RhcnQpCj4+PiAtICAgICAgICAgICAgICAgICAgICAgU0lUX0koc2Jp KS0+bGFzdF92aWN0aW1bZ2NfbW9kZV0gPSAwOwo+Pj4gLQo+Pj4gLSAgICAgZm9yIChnY190eXBl ID0gQkdfR0M7IGdjX3R5cGUgPD0gRkdfR0M7IGdjX3R5cGUrKykKPj4+IC0gICAgICAgICAgICAg aWYgKHNiaS0+bmV4dF92aWN0aW1fc2VnW2djX3R5cGVdID49IHN0YXJ0KQo+Pj4gLSAgICAgICAg ICAgICAgICAgICAgIHNiaS0+bmV4dF92aWN0aW1fc2VnW2djX3R5cGVdID0gTlVMTF9TRUdOTzsK Pj4+IC0gICAgIG11dGV4X3VubG9jaygmRElSVFlfSShzYmkpLT5zZWdsaXN0X2xvY2spOwo+Pj4g KyAgICAgZjJmc19yZXNldF9nY192aWN0aW1fcmVzb3VyY2Uoc2JpLCBzdGFydCwgZW5kKTsKPj4+ Cj4+PiAgICAgICAvKiBNb3ZlIG91dCBjdXJzZWdzIGZyb20gdGhlIHRhcmdldCByYW5nZSAqLwo+ Pj4gICAgICAgZm9yICh0eXBlID0gQ1VSU0VHX0hPVF9EQVRBOyB0eXBlIDwgTlJfQ1VSU0VHX1BF UlNJU1RfVFlQRTsgdHlwZSsrKSB7Cj4+PiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9uYW1laS5jIGIv ZnMvZjJmcy9uYW1laS5jCj4+PiBpbmRleCBjYWMwM2I4ZTkxYTEuLjhjM2I1Nzk4N2Y2YyAxMDA2 NDQKPj4+IC0tLSBhL2ZzL2YyZnMvbmFtZWkuYwo+Pj4gKysrIGIvZnMvZjJmcy9uYW1laS5jCj4+ PiBAQCAtNDI1LDYgKzQyNSw5IEBAIHN0YXRpYyBpbnQgZjJmc19saW5rKHN0cnVjdCBkZW50cnkg Km9sZF9kZW50cnksIHN0cnVjdCBpbm9kZSAqZGlyLAo+Pj4gICAgICAgaWYgKCFmMmZzX2lzX2No ZWNrcG9pbnRfcmVhZHkoc2JpKSkKPj4+ICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9TUEM7Cj4+ Pgo+Pj4gKyAgICAgaWYgKElTX0RFVklDRV9BTElBU0lORyhpbm9kZSkpCj4+PiArICAgICAgICAg ICAgIHJldHVybiAtRVBFUk07Cj4+PiArCj4+PiAgICAgICBlcnIgPSBmc2NyeXB0X3ByZXBhcmVf bGluayhvbGRfZGVudHJ5LCBkaXIsIGRlbnRyeSk7Cj4+PiAgICAgICBpZiAoZXJyKQo+Pj4gICAg ICAgICAgICAgICByZXR1cm4gZXJyOwo+Pj4gQEAgLTU2OCw2ICs1NzEsOSBAQCBzdGF0aWMgaW50 IGYyZnNfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCj4+ Pgo+Pj4gICAgICAgdHJhY2VfZjJmc191bmxpbmtfZW50ZXIoZGlyLCBkZW50cnkpOwo+Pj4KPj4+ ICsgICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcoaW5vZGUpKQo+Pj4gKyAgICAgICAgICAgICBy ZXR1cm4gLUVQRVJNOwo+Pj4gKwo+Pj4gICAgICAgaWYgKHVubGlrZWx5KGYyZnNfY3BfZXJyb3Io c2JpKSkpIHsKPj4+ICAgICAgICAgICAgICAgZXJyID0gLUVJTzsKPj4+ICAgICAgICAgICAgICAg Z290byBvdXQ7Cj4+PiBAQCAtOTQ2LDYgKzk1Miw5IEBAIHN0YXRpYyBpbnQgZjJmc19yZW5hbWUo c3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqb2xkX2RpciwKPj4+ICAgICAg IGJvb2wgb2xkX2lzX2RpciA9IFNfSVNESVIob2xkX2lub2RlLT5pX21vZGUpOwo+Pj4gICAgICAg aW50IGVycjsKPj4+Cj4+PiArICAgICBpZiAoSVNfREVWSUNFX0FMSUFTSU5HKG9sZF9pbm9kZSkp Cj4+PiArICAgICAgICAgICAgIHJldHVybiAtRVBFUk07Cj4+PiArCj4+PiAgICAgICBpZiAodW5s aWtlbHkoZjJmc19jcF9lcnJvcihzYmkpKSkKPj4+ICAgICAgICAgICAgICAgcmV0dXJuIC1FSU87 Cj4+PiAgICAgICBpZiAoIWYyZnNfaXNfY2hlY2twb2ludF9yZWFkeShzYmkpKQo+Pj4gQEAgLTEw MTYsNiArMTAyNSw4IEBAIHN0YXRpYyBpbnQgZjJmc19yZW5hbWUoc3RydWN0IG1udF9pZG1hcCAq aWRtYXAsIHN0cnVjdCBpbm9kZSAqb2xkX2RpciwKPj4+ICAgICAgIH0KPj4+Cj4+PiAgICAgICBp ZiAobmV3X2lub2RlKSB7Cj4+PiArICAgICAgICAgICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkco bmV3X2lub2RlKSkKPj4+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwo+Pj4K Pj4+ICAgICAgICAgICAgICAgZXJyID0gLUVOT1RFTVBUWTsKPj4+ICAgICAgICAgICAgICAgaWYg KG9sZF9pc19kaXIgJiYgIWYyZnNfZW1wdHlfZGlyKG5ld19pbm9kZSkpCj4+PiBAQCAtMTE0Myw2 ICsxMTU0LDkgQEAgc3RhdGljIGludCBmMmZzX2Nyb3NzX3JlbmFtZShzdHJ1Y3QgaW5vZGUgKm9s ZF9kaXIsIHN0cnVjdCBkZW50cnkgKm9sZF9kZW50cnksCj4+PiAgICAgICBpbnQgb2xkX25saW5r ID0gMCwgbmV3X25saW5rID0gMDsKPj4+ICAgICAgIGludCBlcnI7Cj4+Pgo+Pj4gKyAgICAgaWYg KElTX0RFVklDRV9BTElBU0lORyhvbGRfaW5vZGUpIHx8IElTX0RFVklDRV9BTElBU0lORyhuZXdf aW5vZGUpKQo+Pj4gKyAgICAgICAgICAgICByZXR1cm4gLUVQRVJNOwo+Pj4gKwo+Pj4gICAgICAg aWYgKHVubGlrZWx5KGYyZnNfY3BfZXJyb3Ioc2JpKSkpCj4+PiAgICAgICAgICAgICAgIHJldHVy biAtRUlPOwo+Pj4gICAgICAgaWYgKCFmMmZzX2lzX2NoZWNrcG9pbnRfcmVhZHkoc2JpKSkKPj4+ IGRpZmYgLS1naXQgYS9mcy9mMmZzL3NlZ21lbnQuYyBiL2ZzL2YyZnMvc2VnbWVudC5jCj4+PiBp bmRleCBkNzFkZGIzZWU5MTguLjEyMDJiZGUzMzkwYSAxMDA2NDQKPj4+IC0tLSBhL2ZzL2YyZnMv c2VnbWVudC5jCj4+PiArKysgYi9mcy9mMmZzL3NlZ21lbnQuYwo+Pj4gQEAgLTI1MDIsMzUgKzI1 MDIsNDIgQEAgc3RhdGljIGludCB1cGRhdGVfc2l0X2VudHJ5X2Zvcl9hbGxvYyhzdHJ1Y3QgZjJm c19zYl9pbmZvICpzYmksIHN0cnVjdCBzZWdfZW50cnkKPj4+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGludCBzZWdubywgYmxvY2tfdCBibGthZGRyLCB1bnNpZ25lZCBp bnQgb2Zmc2V0LCBpbnQgZGVsKQo+Pj4gIHsKPj4+ICAgICAgIGJvb2wgZXhpc3Q7Cj4+PiArICAg ICBpbnQgZGVsX2NvdW50ID0gZGVsOwo+Pj4gKyAgICAgaW50IGk7Cj4+Pgo+Pj4gLSAgICAgZXhp c3QgPSBmMmZzX3Rlc3RfYW5kX3NldF9iaXQob2Zmc2V0LCBzZS0+Y3VyX3ZhbGlkX21hcCk7Cj4+ PiAtICAgICBpZiAodW5saWtlbHkoZXhpc3QpKSB7Cj4+PiAtICAgICAgICAgICAgIGYyZnNfZXJy KHNiaSwgIkJpdG1hcCB3YXMgd3JvbmdseSBzZXQsIGJsazoldSIsIGJsa2FkZHIpOwo+Pj4gLSAg ICAgICAgICAgICBmMmZzX2J1Z19vbihzYmksIDEpOwo+Pj4gLSAgICAgICAgICAgICBzZS0+dmFs aWRfYmxvY2tzLS07Cj4+PiAtICAgICAgICAgICAgIGRlbCA9IDA7Cj4+PiAtICAgICB9Cj4+PiAr ICAgICBmMmZzX2J1Z19vbihzYmksIEdFVF9TRUdOTyhzYmksIGJsa2FkZHIpICE9IEdFVF9TRUdO TyhzYmksIGJsa2FkZHIgKyBkZWxfY291bnQgLSAxKSk7Cj4+Pgo+Pj4gLSAgICAgaWYgKGYyZnNf YmxvY2tfdW5pdF9kaXNjYXJkKHNiaSkgJiYKPj4+IC0gICAgICAgICAgICAgICAgICAgICAhZjJm c190ZXN0X2FuZF9zZXRfYml0KG9mZnNldCwgc2UtPmRpc2NhcmRfbWFwKSkKPj4+IC0gICAgICAg ICAgICAgc2JpLT5kaXNjYXJkX2Jsa3MtLTsKPj4+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBkZWxf Y291bnQ7IGkrKykgewo+Pj4gKyAgICAgICAgICAgICBleGlzdCA9IGYyZnNfdGVzdF9hbmRfc2V0 X2JpdChvZmZzZXQgKyBpLCBzZS0+Y3VyX3ZhbGlkX21hcCk7Cj4+PiArICAgICAgICAgICAgIGlm ICh1bmxpa2VseShleGlzdCkpIHsKPj4+ICsgICAgICAgICAgICAgICAgICAgICBmMmZzX2Vycihz YmksICJCaXRtYXAgd2FzIHdyb25nbHkgc2V0LCBibGs6JXUiLCBibGthZGRyICsgaSk7Cj4+PiAr ICAgICAgICAgICAgICAgICAgICAgZjJmc19idWdfb24oc2JpLCAxKTsKPj4+ICsgICAgICAgICAg ICAgICAgICAgICBzZS0+dmFsaWRfYmxvY2tzLS07Cj4+PiArICAgICAgICAgICAgICAgICAgICAg ZGVsIC09IDE7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4+PiArICAgICAg ICAgICAgIH0KPj4+Cj4+PiAtICAgICAvKgo+Pj4gLSAgICAgICogU1NSIHNob3VsZCBuZXZlciBy ZXVzZSBibG9jayB3aGljaCBpcyBjaGVja3BvaW50ZWQKPj4+IC0gICAgICAqIG9yIG5ld2x5IGlu dmFsaWRhdGVkLgo+Pj4gLSAgICAgICovCj4+PiAtICAgICBpZiAoIWlzX3NiaV9mbGFnX3NldChz YmksIFNCSV9DUF9ESVNBQkxFRCkpIHsKPj4+IC0gICAgICAgICAgICAgaWYgKCFmMmZzX3Rlc3Rf YW5kX3NldF9iaXQob2Zmc2V0LCBzZS0+Y2twdF92YWxpZF9tYXApKSB7Cj4+PiAtICAgICAgICAg ICAgICAgICAgICAgc2UtPmNrcHRfdmFsaWRfYmxvY2tzKys7Cj4+PiAtICAgICAgICAgICAgICAg ICAgICAgaWYgKF9faXNfbGFyZ2Vfc2VjdGlvbihzYmkpKQo+Pj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ2V0X3NlY19lbnRyeShzYmksIHNlZ25vKS0+Y2twdF92YWxpZF9ibG9ja3Mr KzsKPj4+ICsgICAgICAgICAgICAgaWYgKGYyZnNfYmxvY2tfdW5pdF9kaXNjYXJkKHNiaSkgJiYK Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFmMmZzX3Rlc3RfYW5kX3NldF9iaXQo b2Zmc2V0ICsgaSwgc2UtPmRpc2NhcmRfbWFwKSkKPj4+ICsgICAgICAgICAgICAgICAgICAgICBz YmktPmRpc2NhcmRfYmxrcy0tOwo+Pj4gKwo+Pj4gKyAgICAgICAgICAgICAvKgo+Pj4gKyAgICAg ICAgICAgICAgKiBTU1Igc2hvdWxkIG5ldmVyIHJldXNlIGJsb2NrIHdoaWNoIGlzIGNoZWNrcG9p bnRlZAo+Pj4gKyAgICAgICAgICAgICAgKiBvciBuZXdseSBpbnZhbGlkYXRlZC4KPj4+ICsgICAg ICAgICAgICAgICovCj4+PiArICAgICAgICAgICAgIGlmICghaXNfc2JpX2ZsYWdfc2V0KHNiaSwg U0JJX0NQX0RJU0FCTEVEKSkgewo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGlmICghZjJmc190 ZXN0X2FuZF9zZXRfYml0KG9mZnNldCArIGksIHNlLT5ja3B0X3ZhbGlkX21hcCkpIHsKPj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlLT5ja3B0X3ZhbGlkX2Jsb2NrcysrOwo+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9faXNfbGFyZ2Vfc2VjdGlvbihzYmkp KQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfc2VjX2VudHJ5 KHNiaSwgc2Vnbm8pLT5ja3B0X3ZhbGlkX2Jsb2NrcysrOwo+Pj4gKyAgICAgICAgICAgICAgICAg ICAgIH0KPj4+ICAgICAgICAgICAgICAgfQo+Pj4gLSAgICAgfQo+Pj4KPj4+IC0gICAgIGlmICgh ZjJmc190ZXN0X2JpdChvZmZzZXQsIHNlLT5ja3B0X3ZhbGlkX21hcCkpIHsKPj4+IC0gICAgICAg ICAgICAgc2UtPmNrcHRfdmFsaWRfYmxvY2tzICs9IGRlbDsKPj4+IC0gICAgICAgICAgICAgaWYg KF9faXNfbGFyZ2Vfc2VjdGlvbihzYmkpKQo+Pj4gLSAgICAgICAgICAgICAgICAgICAgIGdldF9z ZWNfZW50cnkoc2JpLCBzZWdubyktPmNrcHRfdmFsaWRfYmxvY2tzICs9IGRlbDsKPj4+ICsgICAg ICAgICAgICAgaWYgKCFmMmZzX3Rlc3RfYml0KG9mZnNldCArIGksIHNlLT5ja3B0X3ZhbGlkX21h cCkpIHsKPj4+ICsgICAgICAgICAgICAgICAgICAgICBzZS0+Y2twdF92YWxpZF9ibG9ja3MgKz0g MTsKPj4+ICsgICAgICAgICAgICAgICAgICAgICBpZiAoX19pc19sYXJnZV9zZWN0aW9uKHNiaSkp Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfc2VjX2VudHJ5KHNiaSwgc2Vn bm8pLT5ja3B0X3ZhbGlkX2Jsb2NrcyArPSAxOwo+Pj4gKyAgICAgICAgICAgICB9Cj4+PiAgICAg ICB9Cj4+Pgo+Pj4gICAgICAgaWYgKF9faXNfbGFyZ2Vfc2VjdGlvbihzYmkpKQo+Pj4gQEAgLTI1 ODUsOSArMjU5MiwxNCBAQCB2b2lkIGYyZnNfaW52YWxpZGF0ZV9ibG9ja3Moc3RydWN0IGYyZnNf c2JfaW5mbyAqc2JpLCBibG9ja190IGFkZHIsCj4+PiAgICAgICB1bnNpZ25lZCBpbnQgc2Vnbm8g PSBHRVRfU0VHTk8oc2JpLCBhZGRyKTsKPj4+ICAgICAgIHN0cnVjdCBzaXRfaW5mbyAqc2l0X2kg PSBTSVRfSShzYmkpOwo+Pj4gICAgICAgYmxvY2tfdCBhZGRyX3N0YXJ0ID0gYWRkciwgYWRkcl9l bmQgPSBhZGRyICsgbGVuIC0gMTsKPj4+IC0gICAgIHVuc2lnbmVkIGludCBzZWdfbnVtID0gR0VU X1NFR05PKHNiaSwgYWRkcl9lbmQpIC0gc2Vnbm8gKyAxOwo+Pj4gKyAgICAgdW5zaWduZWQgaW50 IHNlZ19udW07Cj4+PiAgICAgICB1bnNpZ25lZCBpbnQgaSA9IDEsIG1heF9ibG9ja3MgPSBzYmkt PmJsb2Nrc19wZXJfc2VnLCBjbnQ7Cj4+Pgo+Pj4gKyAgICAgaWYgKGxlbiA9PSAwKQo+Pj4gKyAg ICAgICAgICAgICByZXR1cm47Cj4+PiArCj4+PiArICAgICBzZWdfbnVtID0gR0VUX1NFR05PKHNi aSwgYWRkcl9lbmQpIC0gc2Vnbm8gKyAxOwo+Pj4gKwo+Pj4gICAgICAgZjJmc19idWdfb24oc2Jp LCBhZGRyID09IE5VTExfQUREUik7Cj4+PiAgICAgICBpZiAoYWRkciA9PSBORVdfQUREUiB8fCBh ZGRyID09IENPTVBSRVNTX0FERFIpCj4+PiAgICAgICAgICAgICAgIHJldHVybjsKPj4+IEBAIC0y NjIwLDYgKzI2MzIsNTIgQEAgdm9pZCBmMmZzX2ludmFsaWRhdGVfYmxvY2tzKHN0cnVjdCBmMmZz X3NiX2luZm8gKnNiaSwgYmxvY2tfdCBhZGRyLAo+Pj4gICAgICAgdXBfd3JpdGUoJnNpdF9pLT5z ZW50cnlfbG9jayk7Cj4+PiAgfQo+Pj4KPj4+ICt2b2lkIGYyZnNfcmVzZXJ2ZV9kZXZpY2VfYWxp YXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLCBibG9ja190IGFkZHIsCj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGVuKQo+Pj4gK3sKPj4+ICsgICAgIHVu c2lnbmVkIGludCBzZWdubyA9IEdFVF9TRUdOTyhzYmksIGFkZHIpOwo+Pj4gKyAgICAgc3RydWN0 IHNpdF9pbmZvICpzaXRfaSA9IFNJVF9JKHNiaSk7Cj4+PiArICAgICBibG9ja190IGFkZHJfc3Rh cnQgPSBhZGRyLCBhZGRyX2VuZCA9IGFkZHIgKyBsZW4gLSAxOwo+Pj4gKyAgICAgdW5zaWduZWQg aW50IHNlZ19udW07Cj4+PiArICAgICB1bnNpZ25lZCBpbnQgaSA9IDEsIG1heF9ibG9ja3MgPSBz YmktPmJsb2Nrc19wZXJfc2VnLCBjbnQ7Cj4+PiArCj4+PiArICAgICBpZiAobGVuID09IDApCj4+ PiArICAgICAgICAgICAgIHJldHVybjsKPj4+ICsKPj4+ICsgICAgIHNlZ19udW0gPSBHRVRfU0VH Tk8oc2JpLCBhZGRyX2VuZCkgLSBzZWdubyArIDE7Cj4+PiArCj4+PiArICAgICBkb3duX3dyaXRl KCZzaXRfaS0+c2VudHJ5X2xvY2spOwo+Pj4gKwo+Pj4gKyAgICAgaWYgKHNlZ19udW0gPT0gMSkK Pj4+ICsgICAgICAgICAgICAgY250ID0gbGVuOwo+Pj4gKyAgICAgZWxzZQo+Pj4gKyAgICAgICAg ICAgICBjbnQgPSBtYXhfYmxvY2tzIC0gR0VUX0JMS09GRl9GUk9NX1NFRzAoc2JpLCBhZGRyKTsK Pj4+ICsKPj4+ICsgICAgIGRvIHsKPj4+ICsgICAgICAgICAgICAgdXBkYXRlX3NlZ21lbnRfbXRp bWUoc2JpLCBhZGRyX3N0YXJ0LCAwKTsKPj4+ICsgICAgICAgICAgICAgdXBkYXRlX3NpdF9lbnRy eShzYmksIGFkZHJfc3RhcnQsIGNudCk7Cj4+PiArICAgICAgICAgICAgIF9fc2V0X3Rlc3RfYW5k X2ludXNlKHNiaSwgc2Vnbm8pOwo+Pj4gKwo+Pj4gKyAgICAgICAgICAgICAvKiBSZW1vdmUgdGhl IHNlZ21lbnQgZnJvbSBQUkUgKHByZWZyZWUpIHRvIHByZXZlbnQgY2hlY2twb2ludCBmcm9tIGZy ZWVpbmcgaXQhICovCj4+PiArICAgICAgICAgICAgIG11dGV4X2xvY2soJkRJUlRZX0koc2JpKS0+ c2VnbGlzdF9sb2NrKTsKPj4+ICsgICAgICAgICAgICAgaWYgKHRlc3RfYW5kX2NsZWFyX2JpdChz ZWdubywgRElSVFlfSShzYmkpLT5kaXJ0eV9zZWdtYXBbUFJFXSkpCj4+PiArICAgICAgICAgICAg ICAgICAgICAgRElSVFlfSShzYmkpLT5ucl9kaXJ0eVtQUkVdLS07Cj4+PiArICAgICAgICAgICAg IG11dGV4X3VubG9jaygmRElSVFlfSShzYmkpLT5zZWdsaXN0X2xvY2spOwo+Pj4gKwo+Pj4gKyAg ICAgICAgICAgICAvKiBhZGQgaXQgaW50byBkaXJ0eSBzZWdsaXN0ICovCj4+PiArICAgICAgICAg ICAgIGxvY2F0ZV9kaXJ0eV9zZWdtZW50KHNiaSwgc2Vnbm8pOwo+Pj4gKwo+Pj4gKyAgICAgICAg ICAgICAvKiB1cGRhdGUgQGFkZHJfc3RhcnQgYW5kIEBjbnQgYW5kIEBzZWdubyAqLwo+Pj4gKyAg ICAgICAgICAgICBhZGRyX3N0YXJ0ID0gU1RBUlRfQkxPQ0soc2JpLCArK3NlZ25vKTsKPj4+ICsg ICAgICAgICAgICAgaWYgKCsraSA9PSBzZWdfbnVtKQo+Pj4gKyAgICAgICAgICAgICAgICAgICAg IGNudCA9IEdFVF9CTEtPRkZfRlJPTV9TRUcwKHNiaSwgYWRkcl9lbmQpICsgMTsKPj4+ICsgICAg ICAgICAgICAgZWxzZQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGNudCA9IG1heF9ibG9ja3M7 Cj4+PiArICAgICB9IHdoaWxlIChpIDw9IHNlZ19udW0pOwo+Pj4gKwo+Pj4gKyAgICAgdXBfd3Jp dGUoJnNpdF9pLT5zZW50cnlfbG9jayk7Cj4+PiArfQo+Pj4gKwo+Pj4gIGJvb2wgZjJmc19pc19j aGVja3BvaW50ZWRfZGF0YShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGJsb2NrX3QgYmxrYWRk cikKPj4+ICB7Cj4+PiAgICAgICBzdHJ1Y3Qgc2l0X2luZm8gKnNpdF9pID0gU0lUX0koc2JpKTsK Pj4+IEBAIC0yNzU4LDggKzI4MTYsMTMgQEAgc3RhdGljIGludCBpc19uZXh0X3NlZ21lbnRfZnJl ZShzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksCj4+PiAgICAgICB1bnNpZ25lZCBpbnQgc2Vnbm8g PSBjdXJzZWctPnNlZ25vICsgMTsKPj4+ICAgICAgIHN0cnVjdCBmcmVlX3NlZ21hcF9pbmZvICpm cmVlX2kgPSBGUkVFX0koc2JpKTsKPj4+Cj4+PiAtICAgICBpZiAoc2Vnbm8gPCBNQUlOX1NFR1Mo c2JpKSAmJiBzZWdubyAlIFNFR1NfUEVSX1NFQyhzYmkpKQo+Pj4gKyAgICAgaWYgKHNlZ25vIDwg TUFJTl9TRUdTKHNiaSkgJiYgc2Vnbm8gJSBTRUdTX1BFUl9TRUMoc2JpKSkgewo+Pj4gKyAgICAg ICAgICAgICBpbnQgZGV2aSA9IGYyZnNfdGFyZ2V0X2RldmljZV9pbmRleChzYmksIFNUQVJUX0JM T0NLKHNiaSwgc2Vnbm8pKTsKPj4+ICsKPj4+ICsgICAgICAgICAgICAgaWYgKGYyZnNfZGV2X2lz X3Jlc2VydmluZyhzYmksIGRldmkpKQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAw Owo+Pj4gICAgICAgICAgICAgICByZXR1cm4gIXRlc3RfYml0KHNlZ25vLCBmcmVlX2ktPmZyZWVf c2VnbWFwKTsKPj4+ICsgICAgIH0KPj4+ICAgICAgIHJldHVybiAwOwo+Pj4gIH0KPj4+Cj4+PiBA QCAtMjc3OCw3ICsyODQxLDggQEAgc3RhdGljIGludCBnZXRfbmV3X3NlZ21lbnQoc3RydWN0IGYy ZnNfc2JfaW5mbyAqc2JpLAo+Pj4gICAgICAgdW5zaWduZWQgaW50IGFsbG9jX3BvbGljeSA9IHNi aS0+YWxsb2NhdGVfc2VjdGlvbl9wb2xpY3k7Cj4+PiAgICAgICB1bnNpZ25lZCBpbnQgYWxsb2Nf aGludCA9IHNiaS0+YWxsb2NhdGVfc2VjdGlvbl9oaW50Owo+Pj4gICAgICAgYm9vbCBpbml0ID0g dHJ1ZTsKPj4+IC0gICAgIGludCBpOwo+Pj4gKyAgICAgYm9vbCBsb29wZWQgPSBmYWxzZTsKPj4+ ICsgICAgIGludCBpLCBkZXZpOwo+Pj4gICAgICAgaW50IHJldCA9IDA7Cj4+Pgo+Pj4gICAgICAg c3Bpbl9sb2NrKCZmcmVlX2ktPnNlZ21hcF9sb2NrKTsKPj4+IEBAIC0yNzkxLDggKzI4NTUsMTMg QEAgc3RhdGljIGludCBnZXRfbmV3X3NlZ21lbnQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ Pj4gICAgICAgaWYgKCFuZXdfc2VjICYmICgoKm5ld3NlZyArIDEpICUgU0VHU19QRVJfU0VDKHNi aSkpKSB7Cj4+PiAgICAgICAgICAgICAgIHNlZ25vID0gZmluZF9uZXh0X3plcm9fYml0KGZyZWVf aS0+ZnJlZV9zZWdtYXAsCj4+PiAgICAgICAgICAgICAgICAgICAgICAgR0VUX1NFR19GUk9NX1NF QyhzYmksIGhpbnQgKyAxKSwgKm5ld3NlZyArIDEpOwo+Pj4gLSAgICAgICAgICAgICBpZiAoc2Vn bm8gPCBHRVRfU0VHX0ZST01fU0VDKHNiaSwgaGludCArIDEpKQo+Pj4gKyAgICAgICAgICAgICBp ZiAoc2Vnbm8gPCBHRVRfU0VHX0ZST01fU0VDKHNiaSwgaGludCArIDEpKSB7Cj4+PiArICAgICAg ICAgICAgICAgICAgICAgZGV2aSA9IGYyZnNfdGFyZ2V0X2RldmljZV9pbmRleChzYmksIFNUQVJU X0JMT0NLKHNiaSwgc2Vnbm8pKTsKPj4+ICsKPj4+ICsgICAgICAgICAgICAgICAgICAgICBpZiAo ZjJmc19kZXZfaXNfYWxsb2NfYmxvY2tlZChzYmksIGRldmksIHBpbm5pbmcpKQo+Pj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmaW5kX290aGVyX3pvbmU7Cj4+PiAgICAgICAg ICAgICAgICAgICAgICAgZ290byBnb3RfaXQ7Cj4+PiArICAgICAgICAgICAgIH0KPj4+ICAgICAg IH0KPj4+Cj4+PiAgI2lmZGVmIENPTkZJR19CTEtfREVWX1pPTkVECj4+PiBAQCAtMjgyOCwzMyAr Mjg5Nyw0MiBAQCBzdGF0aWMgaW50IGdldF9uZXdfc2VnbWVudChzdHJ1Y3QgZjJmc19zYl9pbmZv ICpzYmksCj4+PiAgZmluZF9vdGhlcl96b25lOgo+Pj4gICAgICAgc2Vjbm8gPSBmaW5kX25leHRf emVyb19iaXQoZnJlZV9pLT5mcmVlX3NlY21hcCwgTUFJTl9TRUNTKHNiaSksIGhpbnQpOwo+Pj4K Pj4+IC0jaWZkZWYgQ09ORklHX0JMS19ERVZfWk9ORUQKPj4+IC0gICAgIGlmIChzZWNubyA+PSBN QUlOX1NFQ1Moc2JpKSAmJiBmMmZzX3NiX2hhc19ibGt6b25lZChzYmkpKSB7Cj4+PiAtICAgICAg ICAgICAgIC8qIFdyaXRlIG9ubHkgdG8gc2VxdWVudGlhbCB6b25lcyAqLwo+Pj4gLSAgICAgICAg ICAgICBpZiAoc2JpLT5ibGt6b25lX2FsbG9jX3BvbGljeSA9PSBCTEtaT05FX0FMTE9DX09OTFlf U0VRKSB7Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgaGludCA9IEdFVF9TRUNfRlJPTV9TRUco c2JpLCBzYmktPmZpcnN0X3NlcV96b25lX3NlZ25vKTsKPj4+IC0gICAgICAgICAgICAgICAgICAg ICBzZWNubyA9IGZpbmRfbmV4dF96ZXJvX2JpdChmcmVlX2ktPmZyZWVfc2VjbWFwLCBNQUlOX1NF Q1Moc2JpKSwgaGludCk7Cj4+PiAtICAgICAgICAgICAgIH0gZWxzZQo+Pj4gLSAgICAgICAgICAg ICAgICAgICAgIHNlY25vID0gZmluZF9maXJzdF96ZXJvX2JpdChmcmVlX2ktPmZyZWVfc2VjbWFw LAo+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBNQUlOX1NFQ1Moc2JpKSk7Cj4+PiAtICAgICAgICAgICAgIGlmIChzZWNubyA+ PSBNQUlOX1NFQ1Moc2JpKSkgewo+Pj4gLSAgICAgICAgICAgICAgICAgICAgIHJldCA9IC1FTk9T UEM7Cj4+PiAtICAgICAgICAgICAgICAgICAgICAgZjJmc19idWdfb24oc2JpLCAxKTsKPj4+IC0g ICAgICAgICAgICAgICAgICAgICBnb3RvIG91dF91bmxvY2s7Cj4+PiAtICAgICAgICAgICAgIH0K Pj4+IC0gICAgIH0KPj4+IC0jZW5kaWYKPj4+IC0KPj4+ICAgICAgIGlmIChzZWNubyA+PSBNQUlO X1NFQ1Moc2JpKSkgewo+Pj4gLSAgICAgICAgICAgICBzZWNubyA9IGZpbmRfZmlyc3RfemVyb19i aXQoZnJlZV9pLT5mcmVlX3NlY21hcCwKPj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE1BSU5fU0VDUyhzYmkpKTsKPj4+IC0gICAgICAgICAg ICAgaWYgKHNlY25vID49IE1BSU5fU0VDUyhzYmkpKSB7Cj4+PiArICAgICAgICAgICAgIGlmIChs b29wZWQpIHsKPj4+ICAgICAgICAgICAgICAgICAgICAgICByZXQgPSAtRU5PU1BDOwo+Pj4gICAg ICAgICAgICAgICAgICAgICAgIGYyZnNfYnVnX29uKHNiaSwgIXBpbm5pbmcpOwo+Pj4gICAgICAg ICAgICAgICAgICAgICAgIGdvdG8gb3V0X3VubG9jazsKPj4+ICAgICAgICAgICAgICAgfQo+Pj4g KyAgICAgICAgICAgICBoaW50ID0gMDsKPj4+ICsjaWZkZWYgQ09ORklHX0JMS19ERVZfWk9ORUQK Pj4+ICsgICAgICAgICAgICAgLyogV3JpdGUgb25seSB0byBzZXF1ZW50aWFsIHpvbmVzICovCj4+ PiArICAgICAgICAgICAgIGlmIChmMmZzX3NiX2hhc19ibGt6b25lZChzYmkpICYmCj4+PiArICAg ICAgICAgICAgICAgICAgICAgc2JpLT5ibGt6b25lX2FsbG9jX3BvbGljeSA9PSBCTEtaT05FX0FM TE9DX09OTFlfU0VRKQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGhpbnQgPSBHRVRfU0VDX0ZS T01fU0VHKHNiaSwgc2JpLT5maXJzdF9zZXFfem9uZV9zZWdubyk7Cj4+PiArI2VuZGlmCj4+PiAr ICAgICAgICAgICAgIGxvb3BlZCA9IHRydWU7Cj4+PiArICAgICAgICAgICAgIGdvdG8gZmluZF9v dGhlcl96b25lOwo+Pj4gICAgICAgfQo+Pj4gKwo+Pj4gICAgICAgc2Vnbm8gPSBHRVRfU0VHX0ZS T01fU0VDKHNiaSwgc2Vjbm8pOwo+Pj4gKwo+Pj4gKyAgICAgZGV2aSA9IGYyZnNfdGFyZ2V0X2Rl dmljZV9pbmRleChzYmksIFNUQVJUX0JMT0NLKHNiaSwgc2Vnbm8pKTsKPj4+ICsKPj4+ICsgICAg IGlmIChmMmZzX2Rldl9pc19hbGxvY19ibG9ja2VkKHNiaSwgZGV2aSwgcGlubmluZykpIHsKPj4+ ICsgICAgICAgICAgICAgd2hpbGUgKGRldmkgPCBzYmktPnNfbmRldnMgJiYKPj4+ICsgICAgICAg ICAgICAgICAgICAgICBmMmZzX2Rldl9pc19hbGxvY19ibG9ja2VkKHNiaSwgZGV2aSwgcGlubmlu ZykpIHsKPj4+ICsgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZW5kX3NlZ25vID0g R0VUX1NFR05PKHNiaSwgRkRFVihkZXZpKS5lbmRfYmxrKTsKPj4+ICsKPj4+ICsgICAgICAgICAg ICAgICAgICAgICBoaW50ID0gR0VUX1NFQ19GUk9NX1NFRyhzYmksIGVuZF9zZWdubykgKyAxOwo+ Pj4gKyAgICAgICAgICAgICAgICAgICAgIGRldmkrKzsKPj4+ICsgICAgICAgICAgICAgfQo+Pj4g KyAgICAgICAgICAgICBnb3RvIGZpbmRfb3RoZXJfem9uZTsKPj4+ICsgICAgIH0KPj4+ICsKPj4+ ICsgICAgIGlmIChzZWNfdXNhZ2VfY2hlY2soc2JpLCBzZWNubykpIHsKPj4+ICsgICAgICAgICAg ICAgaGludCA9IHNlY25vICsgMTsKPj4+ICsgICAgICAgICAgICAgZ290byBmaW5kX290aGVyX3pv bmU7Cj4+PiArICAgICB9Cj4+PiAgICAgICB6b25lbm8gPSBHRVRfWk9ORV9GUk9NX1NFQyhzYmks IHNlY25vKTsKPj4+Cj4+PiAgICAgICAvKiBnaXZlIHVwIG9uIGZpbmRpbmcgYW5vdGhlciB6b25l ICovCj4+PiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9zZWdtZW50LmggYi9mcy9mMmZzL3NlZ21lbnQu aAo+Pj4gaW5kZXggYjBjMDZiMzU4MGI0Li4xMDc1MDhhZTdlYjMgMTAwNjQ0Cj4+PiAtLS0gYS9m cy9mMmZzL3NlZ21lbnQuaAo+Pj4gKysrIGIvZnMvZjJmcy9zZWdtZW50LmgKPj4+IEBAIC05NTQs MTAgKzk1NCwzMiBAQCBzdGF0aWMgaW5saW5lIGJsb2NrX3Qgc3VtX2Jsa19hZGRyKHN0cnVjdCBm MmZzX3NiX2luZm8gKnNiaSwgaW50IGJhc2UsIGludCB0eXBlKQo+Pj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLSAoYmFzZSArIDEpICsgdHlwZTsKPj4+ICB9Cj4+Pgo+Pj4gK3N0YXRp YyBpbmxpbmUgYm9vbCBmMmZzX2Rldl9pc19yZXNlcnZpbmcoc3RydWN0IGYyZnNfc2JfaW5mbyAq c2JpLCBpbnQgZGV2aSkKPj4+ICt7Cj4+PiArICAgICBpZiAoIWYyZnNfc2JfaGFzX2RldmljZV9h bGlhcyhzYmkpKQo+Pj4gKyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4+PiArICAgICByZXR1 cm4gRkRFVihkZXZpKS5pc19yZXNlcnZpbmc7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbmxp bmUgYm9vbCBmMmZzX2Rldl9pc19hbGxvY19ibG9ja2VkKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNi aSwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRldmksIGJv b2wgcGlubmluZykKPj4+ICt7Cj4+PiArICAgICBpZiAoIWYyZnNfc2JfaGFzX2RldmljZV9hbGlh cyhzYmkpKQo+Pj4gKyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4+PiArICAgICByZXR1cm4g KHBpbm5pbmcgJiYgRkRFVihkZXZpKS5oYXNfYWxpYXMpIHx8IEZERVYoZGV2aSkuaXNfcmVzZXJ2 aW5nOwo+Pj4gK30KPj4+ICsKPj4+ICBzdGF0aWMgaW5saW5lIGJvb2wgc2VjX3VzYWdlX2NoZWNr KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgdW5zaWduZWQgaW50IHNlY25vKQo+Pj4gIHsKPj4+ ICAgICAgIGlmIChpc19jdXJzZWMoc2JpLCBzZWNubykgfHwgKHNiaS0+Y3VyX3ZpY3RpbV9zZWMg PT0gc2Vjbm8pKQo+Pj4gICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKPj4+ICsgICAgIGlmIChm MmZzX3NiX2hhc19kZXZpY2VfYWxpYXMoc2JpKSkgewo+Pj4gKyAgICAgICAgICAgICBibG9ja190 IHN0YXJ0X2JsayA9IFNUQVJUX0JMT0NLKHNiaSwgR0VUX1NFR19GUk9NX1NFQyhzYmksIHNlY25v KSk7Cj4+PiArICAgICAgICAgICAgIGludCBkZXZpID0gZjJmc190YXJnZXRfZGV2aWNlX2luZGV4 KHNiaSwgc3RhcnRfYmxrKTsKPj4+ICsKPj4+ICsgICAgICAgICAgICAgaWYgKGYyZnNfZGV2X2lz X3Jlc2VydmluZyhzYmksIGRldmkpKQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0 cnVlOwo+Pj4gKyAgICAgfQo+Pj4gICAgICAgcmV0dXJuIGZhbHNlOwo+Pj4gIH0KPj4+Cj4+PiBk aWZmIC0tZ2l0IGEvZnMvZjJmcy9zdXBlci5jIGIvZnMvZjJmcy9zdXBlci5jCj4+PiBpbmRleCBj NDQ4ZDk5MmZmMmEuLmJjYTE0NzVjYjU3MyAxMDA2NDQKPj4+IC0tLSBhL2ZzL2YyZnMvc3VwZXIu Ywo+Pj4gKysrIGIvZnMvZjJmcy9zdXBlci5jCj4+PiBAQCAtNTAwMSw2ICs1MDAxLDM4IEBAIHN0 YXRpYyB2b2lkIGYyZnNfdHVuaW5nX3BhcmFtZXRlcnMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2Jp KQo+Pj4gICAgICAgc2JpLT5yZWFkZGlyX3JhID0gdHJ1ZTsKPj4+ICB9Cj4+Pgo+Pj4gK3N0YXRp YyB2b2lkIGYyZnNfcmVzdG9yZV9kZXZpY2VfYWxpYXMoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2Jp KQo+Pj4gK3sKPj4+ICsgICAgIHN0cnVjdCBpbm9kZSAqcm9vdCA9IGRfaW5vZGUoc2JpLT5zYi0+ c19yb290KTsKPj4+ICsgICAgIHN0cnVjdCBmMmZzX2Rpcl9lbnRyeSAqZGU7Cj4+PiArICAgICBz dHJ1Y3QgZm9saW8gKmZvbGlvOwo+Pj4gKyAgICAgaW50IGk7Cj4+PiArCj4+PiArICAgICBpZiAo IWYyZnNfc2JfaGFzX2RldmljZV9hbGlhcyhzYmkpKQo+Pj4gKyAgICAgICAgICAgICByZXR1cm47 Cj4+PiArCj4+PiArICAgICBmb3IgKGkgPSAxOyBpIDwgc2JpLT5zX25kZXZzOyBpKyspIHsKPj4+ ICsgICAgICAgICAgICAgY2hhciAqbmFtZSA9IHN0cnJjaHIoRkRFVihpKS5wYXRoLCAnLycpOwo+ Pj4gKyAgICAgICAgICAgICBzdHJ1Y3QgcXN0ciBxc3RyOwo+Pj4gKwo+Pj4gKyAgICAgICAgICAg ICBuYW1lID0gbmFtZSA/IG5hbWUgKyAxIDogRkRFVihpKS5wYXRoOwo+Pj4gKyAgICAgICAgICAg ICBxc3RyLm5hbWUgPSBuYW1lOwo+Pj4gKyAgICAgICAgICAgICBxc3RyLmxlbiA9IHN0cmxlbihu YW1lKTsKPj4+ICsKPj4+ICsgICAgICAgICAgICAgZGUgPSBmMmZzX2ZpbmRfZW50cnkocm9vdCwg JnFzdHIsICZmb2xpbyk7Cj4+PiArICAgICAgICAgICAgIGlmIChkZSkgewo+Pgo+PiBUcml2aWFs IGNsZWF1cCB0byBhdm9pZCBsb25nIGxpbmUuCj4+Cj4+IGlmICghZGUpCj4+ICAgICAgICAgY29u dGludWU7Cj4+Cj4+IFRoYW5rcywKPj4KPj4+ICsgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg aW5vZGUgKmlub2RlID0gZjJmc19pZ2V0KHNiaS0+c2IsIGxlMzJfdG9fY3B1KGRlLT5pbm8pKTsK Pj4+ICsKPj4+ICsgICAgICAgICAgICAgICAgICAgICBpZiAoIUlTX0VSUihpbm9kZSkpIHsKPj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChJU19ERVZJQ0VfQUxJQVNJTkcoaW5v ZGUpKQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGREVWKGkpLmhh c19hbGlhcyA9IHRydWU7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHV0KGlu b2RlKTsKPj4+ICsgICAgICAgICAgICAgICAgICAgICB9Cj4+PiArICAgICAgICAgICAgICAgICAg ICAgZjJmc19mb2xpb19wdXQoZm9saW8sIDApOwo+Pj4gKyAgICAgICAgICAgICB9Cj4+PiArICAg ICB9Cj4+PiArfQo+Pj4gKwo+Pj4gIHN0YXRpYyBpbnQgZjJmc19maWxsX3N1cGVyKHN0cnVjdCBz dXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYykKPj4+ICB7Cj4+PiAgICAgICBz dHJ1Y3QgZjJmc19mc19jb250ZXh0ICpjdHggPSBmYy0+ZnNfcHJpdmF0ZTsKPj4+IEBAIC01MjA5 LDYgKzUyNDEsNyBAQCBzdGF0aWMgaW50IGYyZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxv Y2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCj4+PiAgICAgICBzYmktPmxhc3RfdmFsaWRf YmxvY2tfY291bnQgPSBzYmktPnRvdGFsX3ZhbGlkX2Jsb2NrX2NvdW50Owo+Pj4gICAgICAgc2Jp LT5yZXNlcnZlZF9ibG9ja3MgPSAwOwo+Pj4gICAgICAgc2JpLT5jdXJyZW50X3Jlc2VydmVkX2Js b2NrcyA9IDA7Cj4+PiArICAgICBzYmktPmFsaWFzX3Jlc2VydmVkX2Jsb2NrcyA9IDA7Cj4+PiAg ICAgICBsaW1pdF9yZXNlcnZlX3Jvb3Qoc2JpKTsKPj4+ICAgICAgIGFkanVzdF91bnVzYWJsZV9j YXBfcGVyYyhzYmkpOwo+Pj4KPj4+IEBAIC01NDM2LDYgKzU0NjksOCBAQCBzdGF0aWMgaW50IGYy ZnNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAq ZmMpCj4+PiAgICAgICBmMmZzX3VwZGF0ZV90aW1lKHNiaSwgUkVRX1RJTUUpOwo+Pj4gICAgICAg Y2xlYXJfc2JpX2ZsYWcoc2JpLCBTQklfQ1BfRElTQUJMRURfUVVJQ0spOwo+Pj4KPj4+ICsgICAg IGYyZnNfcmVzdG9yZV9kZXZpY2VfYWxpYXMoc2JpKTsKPj4+ICsKPj4+ICAgICAgIHNiaS0+dW1v dW50X2xvY2tfaG9sZGVyID0gTlVMTDsKPj4+ICAgICAgIHJldHVybiAwOwo+Pj4KPj4+IGRpZmYg LS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvZjJmcy5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2Yy ZnMuaAo+Pj4gaW5kZXggNzk1ZTI2MjU4MzU1Li40NDA5YWRhMmZlY2IgMTAwNjQ0Cj4+PiAtLS0g YS9pbmNsdWRlL3VhcGkvbGludXgvZjJmcy5oCj4+PiArKysgYi9pbmNsdWRlL3VhcGkvbGludXgv ZjJmcy5oCj4+PiBAQCAtNDUsNiArNDUsOSBAQAo+Pj4gICNkZWZpbmUgRjJGU19JT0NfU1RBUlRf QVRPTUlDX1JFUExBQ0UgICAgICAgIF9JTyhGMkZTX0lPQ1RMX01BR0lDLCAyNSkKPj4+ICAjZGVm aW5lIEYyRlNfSU9DX0dFVF9ERVZfQUxJQVNfRklMRSAgX0lPUihGMkZTX0lPQ1RMX01BR0lDLCAy NiwgX191MzIpCj4+PiAgI2RlZmluZSBGMkZTX0lPQ19JT19QUklPICAgICAgICAgICAgIF9JT1co RjJGU19JT0NUTF9NQUdJQywgMjcsIF9fdTMyKQo+Pj4gKyNkZWZpbmUgRjJGU19JT0NfUkVTRVJW RV9ERVZfQUxJQVMgICBfSU8oRjJGU19JT0NUTF9NQUdJQywgMjgpCj4+PiArI2RlZmluZSBGMkZT X0lPQ19SRUxFQVNFX0RFVl9BTElBUyAgIF9JTyhGMkZTX0lPQ1RMX01BR0lDLCAyOSkKPj4+ICsj ZGVmaW5lIEYyRlNfSU9DX0dFVF9ERVZfQUxJQVNfU1RBVFVTICAgICAgICBfSU9SKEYyRlNfSU9D VExfTUFHSUMsIDMwLCBfX3UzMikKPj4+Cj4+PiAgLyoKPj4+ICAgKiBzaG91bGQgYmUgc2FtZSBh cyBYRlNfSU9DX0dPSU5HRE9XTi4KPj4+IEBAIC03MCw2ICs3MywxMCBAQCBlbnVtIHsKPj4+ICAg ICAgIEYyRlNfSU9QUklPX01BWCwKPj4+ICB9Owo+Pj4KPj4+ICsvKiBmb3IgRjJGU19JT0NfR0VU X0RFVl9BTElBU19TVEFUVVMgKi8KPj4+ICsjZGVmaW5lIEYyRlNfREVWX0FMSUFTX1NUQVRVU19S RUxFQVNFRCAgICAgICAwCj4+PiArI2RlZmluZSBGMkZTX0RFVl9BTElBU19TVEFUVVNfUkVTRVJW RUQgICAgICAgMQo+Pj4gKwo+Pj4gIHN0cnVjdCBmMmZzX2djX3JhbmdlIHsKPj4+ICAgICAgIF9f dTMyIHN5bmM7Cj4+PiAgICAgICBfX3U2NCBzdGFydDsKPj4KCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgtZjJmcy1kZXZlbCBtYWlsaW5nIGxp c3QKTGludXgtZjJmcy1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKaHR0cHM6Ly9saXN0cy5z b3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vbGludXgtZjJmcy1kZXZlbAo=