From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Noralf_Tr=c3=b8nnes?= Subject: Re: [PATCH v2 03/12] drm/i915/fbdev: Move intel_fb_initial_config() to fbdev helper Date: Tue, 23 Apr 2019 16:58:07 +0200 Message-ID: <230818e3-e851-815e-75d8-158077b95331@tronnes.org> References: <20190407165243.54043-1-noralf@tronnes.org> <20190407165243.54043-4-noralf@tronnes.org> <0abcb04b-c0bf-feca-5bd5-2abd0558c9e9@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <0abcb04b-c0bf-feca-5bd5-2abd0558c9e9@suse.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thomas Zimmermann , dri-devel@lists.freedesktop.org Cc: Jani Nikula , daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, Rodrigo Vivi List-Id: dri-devel@lists.freedesktop.org CgpEZW4gMjMuMDQuMjAxOSAxNi4xNywgc2tyZXYgVGhvbWFzIFppbW1lcm1hbm46Cj4gSGkKPiAK PiBBbSAwNy4wNC4xOSB1bSAxODo1MiBzY2hyaWViIE5vcmFsZiBUcsO4bm5lczoKPj4gSXQgaXMg Z2VuZXJpYyBjb2RlIGFuZCBoYXZpbmcgaXQgaW4gdGhlIGhlbHBlciB3aWxsIGxldCBvdGhlciBk cml2ZXJzCj4+IGJlbmVmaXQgZnJvbSBpdC4KPj4KPj4gT25lIGNoYW5nZSB3YXMgbmVjZXNzYXJ5 IGFzc3VtaW5nIHRoaXMgdG8gYmUgdHJ1ZToKPj4gSU5URUxfSU5GTyhkZXZfcHJpdiktPm51bV9w aXBlcyA9PSBkZXYtPm1vZGVfY29uZmlnLm51bV9jcnRjCj4+Cj4+IFN1Z2dlc3RlZC1ieTogRGFu aWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KPj4gQ2M6IEphbmkgTmlrdWxhIDxq YW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb20+Cj4+IENjOiBKb29uYXMgTGFodGluZW4gPGpvb25h cy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+Cj4+IENjOiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28u dml2aUBpbnRlbC5jb20+Cj4+IENjOiBpbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+ IFNpZ25lZC1vZmYtYnk6IE5vcmFsZiBUcsO4bm5lcyA8bm9yYWxmQHRyb25uZXMub3JnPgo+PiBS ZXZpZXdlZC1ieTogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4KPj4gLS0tCj4+ ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jICAgIHwgMTk0ICsrKysrKysrKysrKysr KysrKysrKysrKy0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMgfCAyMTgg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4gIGluY2x1ZGUvZHJtL2RybV9mYl9oZWxw ZXIuaCAgICAgICAgfCAgMjMgLS0tCj4+ICAzIGZpbGVzIGNoYW5nZWQsIDE5MCBpbnNlcnRpb25z KCspLCAyNDUgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX2ZiX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYwo+PiBpbmRl eCBhNmJlMDlhZTg5OWIuLmVkYThiNjNmMzUwZCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2RybV9mYl9oZWxwZXIuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBl ci5jCj4+IEBAIC0yNTU2LDYgKzI1NTYsMTk0IEBAIHN0YXRpYyB2b2lkIGRybV9zZXR1cF9jcnRj X3JvdGF0aW9uKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCj4+ICAJZmJfaGVscGVy LT5zd19yb3RhdGlvbnMgfD0gRFJNX01PREVfUk9UQVRFXzA7Cj4+ICB9Cj4+ICAKPj4gK3N0YXRp YyBzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICoKPj4gK2RybV9mYl9oZWxwZXJfY3J0YyhzdHJ1 Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4+ICt7 Cj4+ICsJaW50IGk7Cj4+ICsKPj4gKwlmb3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5jcnRjX2Nv dW50OyBpKyspCj4+ICsJCWlmIChmYl9oZWxwZXItPmNydGNfaW5mb1tpXS5tb2RlX3NldC5jcnRj ID09IGNydGMpCj4+ICsJCQlyZXR1cm4gJmZiX2hlbHBlci0+Y3J0Y19pbmZvW2ldOwo+PiArCj4+ ICsJcmV0dXJuIE5VTEw7Cj4+ICt9Cj4+ICsKPj4gKy8qIFRyeSB0byByZWFkIHRoZSBCSU9TIGRp c3BsYXkgY29uZmlndXJhdGlvbiBhbmQgdXNlIGl0IGZvciB0aGUgaW5pdGlhbCBjb25maWcgKi8K Pj4gK3N0YXRpYyBib29sIGRybV9mYl9oZWxwZXJfZmlybXdhcmVfY29uZmlnKHN0cnVjdCBkcm1f ZmJfaGVscGVyICpmYl9oZWxwZXIsCj4+ICsJCQkJCSAgc3RydWN0IGRybV9mYl9oZWxwZXJfY3J0 YyAqKmNydGNzLAo+PiArCQkJCQkgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICoqbW9kZXMsCj4+ ICsJCQkJCSAgc3RydWN0IGRybV9mYl9vZmZzZXQgKm9mZnNldHMsCj4+ICsJCQkJCSAgYm9vbCAq ZW5hYmxlZCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQo+PiArewo+PiArCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBmYl9oZWxwZXItPmRldjsKPj4gKwl1bnNpZ25lZCBpbnQgY291bnQgPSBtaW4o ZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQsIEJJVFNfUEVSX0xPTkcpOwo+PiArCXVuc2lnbmVk IGxvbmcgY29ubl9jb25maWd1cmVkLCBjb25uX3NlcTsKPj4gKwlpbnQgaSwgajsKPj4gKwlib29s ICpzYXZlX2VuYWJsZWQ7Cj4+ICsJYm9vbCBmYWxsYmFjayA9IHRydWUsIHJldCA9IHRydWU7Cj4+ ICsJaW50IG51bV9jb25uZWN0b3JzX2VuYWJsZWQgPSAwOwo+PiArCWludCBudW1fY29ubmVjdG9y c19kZXRlY3RlZCA9IDA7Cj4+ICsJc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4IGN0eDsK Pj4gKwo+PiArCXNhdmVfZW5hYmxlZCA9IGtjYWxsb2MoY291bnQsIHNpemVvZihib29sKSwgR0ZQ X0tFUk5FTCk7Cj4+ICsJaWYgKCFzYXZlX2VuYWJsZWQpCj4+ICsJCXJldHVybiBmYWxzZTsKPj4g Kwo+PiArCWRybV9tb2Rlc2V0X2FjcXVpcmVfaW5pdCgmY3R4LCAwKTsKPj4gKwo+PiArCXdoaWxl IChkcm1fbW9kZXNldF9sb2NrX2FsbF9jdHgoZGV2LCAmY3R4KSAhPSAwKQo+PiArCQlkcm1fbW9k ZXNldF9iYWNrb2ZmKCZjdHgpOwo+PiArCj4+ICsJbWVtY3B5KHNhdmVfZW5hYmxlZCwgZW5hYmxl ZCwgY291bnQpOwo+PiArCWNvbm5fc2VxID0gR0VOTUFTSyhjb3VudCAtIDEsIDApOwo+PiArCWNv bm5fY29uZmlndXJlZCA9IDA7Cj4+ICtyZXRyeToKPj4gKwlmb3IgKGkgPSAwOyBpIDwgY291bnQ7 IGkrKykgewo+PiArCQlzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jb25uZWN0b3IgKmZiX2Nvbm47Cj4+ ICsJCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4+ICsJCXN0cnVjdCBkcm1fZW5j b2RlciAqZW5jb2RlcjsKPj4gKwkJc3RydWN0IGRybV9mYl9oZWxwZXJfY3J0YyAqbmV3X2NydGM7 Cj4+ICsKPj4gKwkJZmJfY29ubiA9IGZiX2hlbHBlci0+Y29ubmVjdG9yX2luZm9baV07Cj4+ICsJ CWNvbm5lY3RvciA9IGZiX2Nvbm4tPmNvbm5lY3RvcjsKPj4gKwo+PiArCQlpZiAoY29ubl9jb25m aWd1cmVkICYgQklUKGkpKQo+PiArCQkJY29udGludWU7Cj4+ICsKPj4gKwkJLyogRmlyc3QgcGFz cywgb25seSBjb25zaWRlciB0aWxlZCBjb25uZWN0b3JzICovCj4+ICsJCWlmIChjb25uX3NlcSA9 PSBHRU5NQVNLKGNvdW50IC0gMSwgMCkgJiYgIWNvbm5lY3Rvci0+aGFzX3RpbGUpCj4+ICsJCQlj b250aW51ZTsKPj4gKwo+PiArCQlpZiAoY29ubmVjdG9yLT5zdGF0dXMgPT0gY29ubmVjdG9yX3N0 YXR1c19jb25uZWN0ZWQpCj4+ICsJCQludW1fY29ubmVjdG9yc19kZXRlY3RlZCsrOwo+PiArCj4+ ICsJCWlmICghZW5hYmxlZFtpXSkgewo+PiArCQkJRFJNX0RFQlVHX0tNUygiY29ubmVjdG9yICVz IG5vdCBlbmFibGVkLCBza2lwcGluZ1xuIiwKPj4gKwkJCQkgICAgICBjb25uZWN0b3ItPm5hbWUp Owo+PiArCQkJY29ubl9jb25maWd1cmVkIHw9IEJJVChpKTsKPj4gKwkJCWNvbnRpbnVlOwo+PiAr CQl9Cj4+ICsKPj4gKwkJaWYgKGNvbm5lY3Rvci0+Zm9yY2UgPT0gRFJNX0ZPUkNFX09GRikgewo+ PiArCQkJRFJNX0RFQlVHX0tNUygiY29ubmVjdG9yICVzIGlzIGRpc2FibGVkIGJ5IHVzZXIsIHNr aXBwaW5nXG4iLAo+PiArCQkJCSAgICAgIGNvbm5lY3Rvci0+bmFtZSk7Cj4+ICsJCQllbmFibGVk W2ldID0gZmFsc2U7Cj4+ICsJCQljb250aW51ZTsKPj4gKwkJfQo+PiArCj4+ICsJCWVuY29kZXIg PSBjb25uZWN0b3ItPnN0YXRlLT5iZXN0X2VuY29kZXI7Cj4gCj4gVGhpcyBwYXRjaCBicmVha3Mg YXN0IHJpZ2h0IGhlcmUuIEFzdCBpcyBhIG5vbi1hdG9taWMgZHJpdmVyIGFuZCBoYXMKPiBjb25u ZWN0b3ItPnN0YXRlIHNldCB0byBOVUxMLiBSZWFkaW5nIGJlc3RfZW5jb2RlciBnaXZlcyBhIE5V TEwtcG9pbnRlcgo+IGRlcmVmZXJlbmNlIGFuZCB0aGUgZGlzcGxheSB0dXJucyBibGFjay4gU3Rh Y2sgdHJhY2UgaXMgYmVsb3cuCj4gCgpUaGFua3MgZm9yIHRoZSByZXBvcnQsIEkndmUgc2VudCBh IGZpeC4KCk5vcmFsZi4KCj4gQmVzdCByZWdhcmRzCj4gVGhvbWFzCj4gCj4gCj4gWyAgIDI5LjU4 MzAxMl0gW2RybTpkcm1fZmJfaGVscGVyX2Zpcm13YXJlX2NvbmZpZy5pc3JhLjM3Cj4gW2RybV9r bXNfaGVscGVyXV0gKkVSUk9SKiBkcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jOjI2NDkK PiBjb25uZWN0b3I9MDAwMDAwMDBkYjczZDBiMQo+IFsgICAyOS41ODMwNDhdIFtkcm06ZHJtX2Zi X2hlbHBlcl9maXJtd2FyZV9jb25maWcuaXNyYS4zNwo+IFtkcm1fa21zX2hlbHBlcl1dICpFUlJP UiogZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYzoyNjUwCj4gY29ubmVjdG9yLT5zdGF0 ZT0gICAgICAgICAgKG51bGwpCj4gMG1dIEZvdW5kIGRldmljZVsgICAyOS42MDk1OTNdIEJVRzog dW5hYmxlIHRvIGhhbmRsZSBrZXJuZWwgTlVMTCBwb2ludGVyCj4gZGVyZWZlcmVuY2UgYXQgMDAw MDAwMDAwMDAwMDAxMAo+IFsgICAyOS42MDk1OTRdICNQRiBlcnJvcjogW25vcm1hbCBrZXJuZWwg cmVhZCBmYXVsdF0KPiBbICAgMjkuNjA5NTk1XSBQR0QgMCBQNEQgMAo+IFsgICAyOS42MDk1OTdd IE9vcHM6IDAwMDAgWyMxXSBTTVAgUFRJCj4gWyAgIDI5LjYwOTU5OV0gQ1BVOiAxIFBJRDogMzU0 IENvbW06IHN5c3RlbWQtdWRldmQgVGFpbnRlZDogRwo+ICBFICAgICA1LjEuMC1yYzUtMS1kZWZh dWx0KyAjMTEKPiBbICAgMjkuNjA5NjAwXSBIYXJkd2FyZSBuYW1lOiBTdW4gTWljcm9zeXN0ZW1z IFNVTiBGSVJFIFgyMjcwIE0yL1NVTgo+IEZJUkUgWDIyNzAgTTIsIEJJT1MgMi4wNSAgICAwNy8w MS8yMDEwCj4gWyAgIDI5LjYwOTYwOF0gUklQOgo+IDAwMTA6ZHJtX2ZiX2hlbHBlcl9maXJtd2Fy ZV9jb25maWcuaXNyYS4zNysweDJkNi8weDhhMCBbZHJtX2ttc19oZWxwZXJdCj4gWyAgIDI5LjYw OTYwOV0gQ29kZTogNDggODkgZGUgYmEgNWEgMGEgMDAgMDAgNDggYzcgYzcgNWIgMGIgNDggYzAg ZTggNjAKPiBkMSAxNyAwMCA0OCA4YiA4NSBlMCAwMyAwMCAwMCA0OCA4OSBkZSBiYSA1YiAwYSAw MCAwMCA0OCBjNyBjNyA5MCBlZiA0Nwo+IGMwIDw0OD4gOGIgNDggMTAgZTggNDEgZDEgMTcgMDAg YmEgNWQgMGEgMDAgMDAgNDggODkgZGUgNGMgODkgZWYgNGIKPiBbICAgMjkuNjA5NjEwXSBSU1A6 IDAwMTg6ZmZmZmI2ZjgwMGMzZjg5OCBFRkxBR1M6IDAwMDEwMjk2Cj4gWyAgIDI5LjYwOTYxMl0g UkFYOiAwMDAwMDAwMDAwMDAwMDAwIFJCWDogZmZmZmZmZmZjMDQ3ZWVjMCBSQ1g6Cj4gMDAwMDAw MDAwMDAwMDAwMAo+IFsgICAyOS42MDk2MTJdIFJEWDogMDAwMDAwMDAwMDAwMGE1YiBSU0k6IGZm ZmZmZmZmYzA0N2VlYzAgUkRJOgo+IGZmZmZmZmZmYzA0N2VmOTAKPiBbICAgMjkuNjA5NjEzXSBS QlA6IGZmZmY5ZTc2YjZlNDI4MDAgUjA4OiAwMDAwMDAwMDAwMDAwMDAyIFIwOToKPiAwMDAwMDAw MDAwMDAwMDAwCj4gWyAgIDI5LjYwOTYxNF0gUjEwOiAwMDAwMDAwMDAwOTA1M2UyIFIxMTogMDAw MDAwMDAwMDAwMmFlNyBSMTI6Cj4gMDAwMDAwMDAwMDAwMDAwMAo+IFsgICAyOS42MDk2MTVdIFIx MzogZmZmZmZmZmZjMDQ4MGI0MCBSMTQ6IDAwMDAwMDAwMDAwMDAwMDAgUjE1Ogo+IGZmZmY5ZTc2 YjViY2FjMDAKPiBbICAgMjkuNjA5NjE2XSBGUzogIDAwMDA3ZjE0NzM5N2VmODAoMDAwMCkgR1M6 ZmZmZjllNzZiYjY0MDAwMCgwMDAwKQo+IGtubEdTOjAwMDAwMDAwMDAwMDAwMDAKPiBbICAgMjku NjA5NjE3XSBDUzogIDAwMTAgRFM6IDAwMDAgRVM6IDAwMDAgQ1IwOiAwMDAwMDAwMDgwMDUwMDMz Cj4gWyAgIDI5LjYwOTYxOF0gQ1IyOiAwMDAwMDAwMDAwMDAwMDEwIENSMzogMDAwMDAwMDEzNWJk MjAwMiBDUjQ6Cj4gMDAwMDAwMDAwMDAyMDZlMAo+IFsgICAyOS42MDk2MTldIENhbGwgVHJhY2U6 Cj4gWyAgIDI5LjYwOTYzMF0gID8gZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21v ZGVzKzB4MjdmLzB4NjgwCj4gW2RybV9rbXNfaGVscGVyXQo+IFsgICAyOS42MDk2NDBdICBkcm1f c2V0dXBfY3J0Y3MrMHg0MzEvMHhkODAgW2RybV9rbXNfaGVscGVyXQo+IFsgICAyOS43NTMwNjVd ICBfX2RybV9mYl9oZWxwZXJfaW5pdGlhbF9jb25maWdfYW5kX3VubG9jaysweDZmLzB4NmEwCj4g W2RybV9rbXNfaGVscGVyXQo+IFsgICAyOS43NTMxNjBdICA/IGRybV9tb2Rlc2V0X3VubG9ja19h bGwrMHgzMS8weDUwIFtkcm1dCj4gIFNUMTAwMFsgICAyOS43NjU3NThdICBhc3RfZmJkZXZfaW5p dCsweGE4LzB4YzAgW2FzdF0KPiBbICAgMjkuNzY1NzYyXSAgYXN0X2RyaXZlcl9sb2FkLmNvbGQu NysweDJiMy8weGUxMSBbYXN0XQo+IFsgICAyOS43NjU3NzVdICBkcm1fZGV2X3JlZ2lzdGVyKzB4 MTExLzB4MTUwIFtkcm1dCj4gWyAgIDI5Ljc2NTc5MF0gIGRybV9nZXRfcGNpX2RldisweDk1LzB4 MTkwIFtkcm1dCj4gWyAgIDI5Ljc2NTc5NF0gIGxvY2FsX3BjaV9wcm9iZSsweDQyLzB4ODAKPiBb ICAgMjkuNzY1Nzk2XSAgcGNpX2RldmljZV9wcm9iZSsweGY0LzB4MTcwCj4gWyAgIDI5Ljc2NTgw MF0gIHJlYWxseV9wcm9iZSsweGY4LzB4M2IwCj4gWyAgIDI5Ljc2NTgwMl0gIGRyaXZlcl9wcm9i ZV9kZXZpY2UrMHhiMy8weGYwCj4gWyAgIDI5Ljc2NTgwNV0gIGRldmljZV9kcml2ZXJfYXR0YWNo KzB4NTAvMHg2MAo+IFsgICAyOS44MDUwOTJdICBfX2RyaXZlcl9hdHRhY2grMHg4Ni8weDE0MAo+ IFsgICAyOS44MDUwOTVdICA/IGRldmljZV9kcml2ZXJfYXR0YWNoKzB4NjAvMHg2MAo+IFsgICAy OS44MDUxMzhdICBidXNfZm9yX2VhY2hfZGV2KzB4NjMvMHg5MAo+IERNMDEwLTJFUDEwMiA0ICAg MjkuODE3MjUwXSAgYnVzX2FkZF9kcml2ZXIrMHgxMzEvMHgxZTAKPiBbICAgMjkuODE3MjUyXSAg PyAweGZmZmZmZmZmYzAzZTYwMDAKPiAwbS4KPiBbICAgMjkuODE3MjU0XSAgZHJpdmVyX3JlZ2lz dGVyKzB4NmIvMHhiMAo+IFsgICAyOS44MTcyNTVdICA/IDB4ZmZmZmZmZmZjMDNlNjAwMAo+IFsg ICAyOS44MTcyNThdICBkb19vbmVfaW5pdGNhbGwrMHg0Ni8weDFjOAo+IFsgICAyOS44MTcyNjJd ICA/IF9fdnVubWFwKzB4ODkvMHhjMAo+IFsgICAyOS44MTcyNjVdICBkb19pbml0X21vZHVsZSsw eDVhLzB4MjEwCj4gWyAgIDI5LjgxNzI2Nl0gIGxvYWRfbW9kdWxlKzB4MWFmZi8weDFmNzAKPiBb ICAgMjkuODE3MjcwXSAgPyBfX2RvX3N5c19maW5pdF9tb2R1bGUrMHg4Zi8weGQwCj4gWyAgIDI5 LjgxNzI3MV0gIF9fZG9fc3lzX2Zpbml0X21vZHVsZSsweDhmLzB4ZDAKPiBbICAgMjkuODE3Mjc0 XSAgZG9fc3lzY2FsbF82NCsweDYwLzB4MTEwCj4gWyAgIDI5LjgxNzI3OV0gIGVudHJ5X1NZU0NB TExfNjRfYWZ0ZXJfaHdmcmFtZSsweDQ5LzB4YmUKPiBbICAgMjkuODE3MjgwXSBSSVA6IDAwMzM6 MHg3ZjE0NzQyOGIyZjkKPiBbICAgMjkuODE3MjgyXSBDb2RlOiAwMCBjMyA2NiAyZSAwZiAxZiA4 NCAwMCAwMCAwMCAwMCAwMCAwZiAxZiA0NCAwMCAwMAo+IDQ4IDg5IGY4IDQ4IDg5IGY3IDQ4IDg5 IGQ2IDQ4IDg5IGNhIDRkIDg5IGMyIDRkIDg5IGM4IDRjIDhiIDRjIDI0IDA4IDBmCj4gMDUgPDQ4 PiAzZCAwMSBmMCBmZiBmZiA3MyAwMSBjMyA0OCA4YiAwZCA2ZiA0YiAwYyAwMCBmNyBkOCA2NCA4 OSAwOAo+IFsgICAyOS44MTcyODJdIFJTUDogMDAyYjowMDAwN2ZmZmE4Y2Q0NDc4IEVGTEFHUzog MDAwMDAyNDYgT1JJR19SQVg6Cj4gMDAwMDAwMDAwMDAwMDEzOQo+IFsgICAyOS44MTcyODRdIFJB WDogZmZmZmZmZmZmZmZmZmZkYSBSQlg6IDAwMDA1NjE4MDFmZTYyZTAgUkNYOgo+IDAwMDA3ZjE0 NzQyOGIyZjkKPiBbICAgMjkuODE3Mjg1XSBSRFg6IDAwMDAwMDAwMDAwMDAwMDAgUlNJOiAwMDAw N2YxNDc0NDAwODlkIFJESToKPiAwMDAwMDAwMDAwMDAwMDE2Cj4gWyAgIDI5LjgxNzI4NV0gUkJQ OiAwMDAwMDAwMDAwMDAwMDAwIFIwODogMDAwMDAwMDAwMDAwMDAwMCBSMDk6Cj4gMDAwMDU2MTgw MWZmY2Q1MAo+IFsgICAyOS44MTcyODZdIFIxMDogMDAwMDAwMDAwMDAwMDAxNiBSMTE6IDAwMDAw MDAwMDAwMDAyNDYgUjEyOgo+IDAwMDA3ZjE0NzQ0MDA4OWQKPiBbICAgMjkuODE3Mjg3XSBSMTM6 IDAwMDAwMDAwMDAwMjAwMDAgUjE0OiAwMDAwNTYxODAyMDA2NTEwIFIxNToKPiAwMDAwNTYxODAx ZmU2MmUwCj4gWyAgIDI5LjgxNzI4OF0gTW9kdWxlcyBsaW5rZWQgaW46IGhpZF9nZW5lcmljKEUp IGJ0cmZzKEUpIGxpYmNyYzMyYyhFKQo+IHVzYmhpZChFKSB4b3IoRSkgYXN0KEUrKSBpMmNfYWxn b19iaXQoRSkgZHJtX2ttc19oZWxwZXIoRSkKPiBzeXNjb3B5YXJlYShFKSBzeXNmaWxscmVjdChF KSBzeXNpbWdibHQoRSkgZmJfc3lzX2ZvcHMoRSkgZWhjaV9wY2koRSkKPiBkcm1fdnJhbV9oKQo+ IFsgICAyOS44MTczMDBdIENSMjogMDAwMDAwMDAwMDAwMDAxMAo+IFsgICAyOS44MTczMTFdIC0t LVsgZW5kIHRyYWNlIDY0MGI0NzU0MWNkMmUxMDEgXS0tLQo+IFsgICAyOS44Mjc1NzddIFBNOiBJ bWFnZSBub3QgZm91bmQgKGNvZGUgLTIyKQo+IFsgICAyOS44MzAxMTddIFJJUDoKPiAwMDEwOmRy bV9mYl9oZWxwZXJfZmlybXdhcmVfY29uZmlnLmlzcmEuMzcrMHgyZDYvMHg4YTAgW2RybV9rbXNf aGVscGVyXQo+IFsgICAyOS45ODU4MjhdIENvZGU6IDQ4IDg5IGRlIGJhIDVhIDBhIDAwIDAwIDQ4 IGM3IGM3IDViIDBiIDQ4IGMwIGU4IDYwCj4gZDEgMTcgMDAgNDggOGIgODUgZTAgMDMgMDAgMDAg NDggODkgZGUgYmEgNWIgMGEgMDAgMDAgNDggYzcgYzcgOTAgZWYgNDcKPiBjMCA8NDg+IDhiIDQ4 IDEwIGU4IDQxIGQxIDE3IDAwIGJhIDVkIDBhIDAwIDAwIDQ4IDg5IGRlIDRjIDg5IGVmIDRiCj4g WyAgIDI5Ljk4NTgyOV0gUlNQOiAwMDE4OmZmZmZiNmY4MDBjM2Y4OTggRUZMQUdTOiAwMDAxMDI5 Ngo+IFsgICAyOS45ODU4MzBdIFJBWDogMDAwMDAwMDAwMDAwMDAwMCBSQlg6IGZmZmZmZmZmYzA0 N2VlYzAgUkNYOgo+IDAwMDAwMDAwMDAwMDAwMDAKPiBbICAgMjkuOTg1ODMxXSBSRFg6IDAwMDAw MDAwMDAwMDBhNWIgUlNJOiBmZmZmZmZmZmMwNDdlZWMwIFJESToKPiBmZmZmZmZmZmMwNDdlZjkw Cj4gWyAgIDI5Ljk4NTgzMl0gUkJQOiBmZmZmOWU3NmI2ZTQyODAwIFIwODogMDAwMDAwMDAwMDAw MDAwMiBSMDk6Cj4gMDAwMDAwMDAwMDAwMDAwMAo+IFsgICAyOS45ODU4MzRdIFIxMDogMDAwMDAw MDAwMDkwNTNlMiBSMTE6IDAwMDAwMDAwMDAwMDJhZTcgUjEyOgo+IDAwMDAwMDAwMDAwMDAwMDAK PiBbICAgMzAuMDM4NTg5XSBSMTM6IGZmZmZmZmZmYzA0ODBiNDAgUjE0OiAwMDAwMDAwMDAwMDAw MDAwIFIxNToKPiBmZmZmOWU3NmI1YmNhYzAwCj4gWyAgIDMwLjAzODU5MF0gRlM6ICAwMDAwN2Yx NDczOTdlZjgwKDAwMDApIEdTOmZmZmY5ZTc2YmI2NDAwMDAoMDAwMCkKPiBrbmxHUzowMDAwMDAw MDAwMDAwMDAwCj4gWyAgIDMwLjAzODU5MV0gQ1M6ICAwMDEwIERTOiAwMDAwIEVTOiAwMDAwIENS MDogMDAwMDAwMDA4MDA1MDAzMwo+IFsgICAzMC4wMzg1OTJdIENSMjogMDAwMDAwMDAwMDAwMDAx MCBDUjM6IDAwMDAwMDAxMzViZDIwMDIgQ1I0Ogo+IDAwMDAwMDAwMDAwMjA2ZTAKPiAKPiAKPiAK Pj4gKwkJaWYgKCFlbmNvZGVyIHx8IFdBUk5fT04oIWNvbm5lY3Rvci0+c3RhdGUtPmNydGMpKSB7 Cj4+ICsJCQlpZiAoY29ubmVjdG9yLT5mb3JjZSA+IERSTV9GT1JDRV9PRkYpCj4+ICsJCQkJZ290 byBiYWlsOwo+PiArCj4+ICsJCQlEUk1fREVCVUdfS01TKCJjb25uZWN0b3IgJXMgaGFzIG5vIGVu Y29kZXIgb3IgY3J0Yywgc2tpcHBpbmdcbiIsCj4+ICsJCQkJICAgICAgY29ubmVjdG9yLT5uYW1l KTsKPj4gKwkJCWVuYWJsZWRbaV0gPSBmYWxzZTsKPj4gKwkJCWNvbm5fY29uZmlndXJlZCB8PSBC SVQoaSk7Cj4+ICsJCQljb250aW51ZTsKPj4gKwkJfQo+PiArCj4+ICsJCW51bV9jb25uZWN0b3Jz X2VuYWJsZWQrKzsKPj4gKwo+PiArCQluZXdfY3J0YyA9IGRybV9mYl9oZWxwZXJfY3J0YyhmYl9o ZWxwZXIsIGNvbm5lY3Rvci0+c3RhdGUtPmNydGMpOwo+PiArCj4+ICsJCS8qCj4+ICsJCSAqIE1h a2Ugc3VyZSB3ZSdyZSBub3QgdHJ5aW5nIHRvIGRyaXZlIG11bHRpcGxlIGNvbm5lY3RvcnMKPj4g KwkJICogd2l0aCBhIHNpbmdsZSBDUlRDLCBzaW5jZSBvdXIgY2xvbmluZyBzdXBwb3J0IG1heSBu b3QKPj4gKwkJICogbWF0Y2ggdGhlIEJJT1MuCj4+ICsJCSAqLwo+PiArCQlmb3IgKGogPSAwOyBq IDwgY291bnQ7IGorKykgewo+PiArCQkJaWYgKGNydGNzW2pdID09IG5ld19jcnRjKSB7Cj4+ICsJ CQkJRFJNX0RFQlVHX0tNUygiZmFsbGJhY2s6IGNsb25lZCBjb25maWd1cmF0aW9uXG4iKTsKPj4g KwkJCQlnb3RvIGJhaWw7Cj4+ICsJCQl9Cj4+ICsJCX0KPj4gKwo+PiArCQlEUk1fREVCVUdfS01T KCJsb29raW5nIGZvciBjbWRsaW5lIG1vZGUgb24gY29ubmVjdG9yICVzXG4iLAo+PiArCQkJICAg ICAgY29ubmVjdG9yLT5uYW1lKTsKPj4gKwo+PiArCQkvKiBnbyBmb3IgY29tbWFuZCBsaW5lIG1v ZGUgZmlyc3QgKi8KPj4gKwkJbW9kZXNbaV0gPSBkcm1fcGlja19jbWRsaW5lX21vZGUoZmJfY29u bik7Cj4+ICsKPj4gKwkJLyogdHJ5IGZvciBwcmVmZXJyZWQgbmV4dCAqLwo+PiArCQlpZiAoIW1v ZGVzW2ldKSB7Cj4+ICsJCQlEUk1fREVCVUdfS01TKCJsb29raW5nIGZvciBwcmVmZXJyZWQgbW9k ZSBvbiBjb25uZWN0b3IgJXMgJWRcbiIsCj4+ICsJCQkJICAgICAgY29ubmVjdG9yLT5uYW1lLCBj b25uZWN0b3ItPmhhc190aWxlKTsKPj4gKwkJCW1vZGVzW2ldID0gZHJtX2hhc19wcmVmZXJyZWRf bW9kZShmYl9jb25uLCB3aWR0aCwKPj4gKwkJCQkJCQkgIGhlaWdodCk7Cj4+ICsJCX0KPj4gKwo+ PiArCQkvKiBObyBwcmVmZXJyZWQgbW9kZSBtYXJrZWQgYnkgdGhlIEVESUQ/IEFyZSB0aGVyZSBh bnkgbW9kZXM/ICovCj4+ICsJCWlmICghbW9kZXNbaV0gJiYgIWxpc3RfZW1wdHkoJmNvbm5lY3Rv ci0+bW9kZXMpKSB7Cj4+ICsJCQlEUk1fREVCVUdfS01TKCJ1c2luZyBmaXJzdCBtb2RlIGxpc3Rl ZCBvbiBjb25uZWN0b3IgJXNcbiIsCj4+ICsJCQkJICAgICAgY29ubmVjdG9yLT5uYW1lKTsKPj4g KwkJCW1vZGVzW2ldID0gbGlzdF9maXJzdF9lbnRyeSgmY29ubmVjdG9yLT5tb2RlcywKPj4gKwkJ CQkJCSAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSwKPj4gKwkJCQkJCSAgICBoZWFkKTsKPj4g KwkJfQo+PiArCj4+ICsJCS8qIGxhc3QgcmVzb3J0OiB1c2UgY3VycmVudCBtb2RlICovCj4+ICsJ CWlmICghbW9kZXNbaV0pIHsKPj4gKwkJCS8qCj4+ICsJCQkgKiBJTVBPUlRBTlQ6IFdlIHdhbnQg dG8gdXNlIHRoZSBhZGp1c3RlZCBtb2RlIChpLmUuCj4+ICsJCQkgKiBhZnRlciB0aGUgcGFuZWwg Zml0dGVyIHVwc2NhbGluZykgYXMgdGhlIGluaXRpYWwKPj4gKwkJCSAqIGNvbmZpZywgbm90IHRo ZSBpbnB1dCBtb2RlLCB3aGljaCBpcyB3aGF0IGNydGMtPm1vZGUKPj4gKwkJCSAqIHVzdWFsbHkg Y29udGFpbnMuIEJ1dCBzaW5jZSBvdXIgY3VycmVudAo+PiArCQkJICogY29kZSBwdXRzIGEgbW9k ZSBkZXJpdmVkIGZyb20gdGhlIHBvc3QtcGZpdCB0aW1pbmdzCj4+ICsJCQkgKiBpbnRvIGNydGMt Pm1vZGUgdGhpcyB3b3JrcyBvdXQgY29ycmVjdGx5Lgo+PiArCQkJICoKPj4gKwkJCSAqIFRoaXMg aXMgY3J0Yy0+bW9kZSBhbmQgbm90IGNydGMtPnN0YXRlLT5tb2RlIGZvciB0aGUKPj4gKwkJCSAq IGZhc3Rib290IGNoZWNrIHRvIHdvcmsgY29ycmVjdGx5Lgo+PiArCQkJICovCj4+ICsJCQlEUk1f REVCVUdfS01TKCJsb29raW5nIGZvciBjdXJyZW50IG1vZGUgb24gY29ubmVjdG9yICVzXG4iLAo+ PiArCQkJCSAgICAgIGNvbm5lY3Rvci0+bmFtZSk7Cj4+ICsJCQltb2Rlc1tpXSA9ICZjb25uZWN0 b3ItPnN0YXRlLT5jcnRjLT5tb2RlOwo+PiArCQl9Cj4+ICsJCWNydGNzW2ldID0gbmV3X2NydGM7 Cj4+ICsKPj4gKwkJRFJNX0RFQlVHX0tNUygiY29ubmVjdG9yICVzIG9uIFtDUlRDOiVkOiVzXTog JWR4JWQlc1xuIiwKPj4gKwkJCSAgICAgIGNvbm5lY3Rvci0+bmFtZSwKPj4gKwkJCSAgICAgIGNv bm5lY3Rvci0+c3RhdGUtPmNydGMtPmJhc2UuaWQsCj4+ICsJCQkgICAgICBjb25uZWN0b3ItPnN0 YXRlLT5jcnRjLT5uYW1lLAo+PiArCQkJICAgICAgbW9kZXNbaV0tPmhkaXNwbGF5LCBtb2Rlc1tp XS0+dmRpc3BsYXksCj4+ICsJCQkgICAgICBtb2Rlc1tpXS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFH X0lOVEVSTEFDRSA/ICJpIiA6ICIiKTsKPj4gKwo+PiArCQlmYWxsYmFjayA9IGZhbHNlOwo+PiAr CQljb25uX2NvbmZpZ3VyZWQgfD0gQklUKGkpOwo+PiArCX0KPj4gKwo+PiArCWlmIChjb25uX2Nv bmZpZ3VyZWQgIT0gY29ubl9zZXEpIHsgLyogcmVwZWF0IHVudGlsIG5vIG1vcmUgYXJlIGZvdW5k ICovCj4+ICsJCWNvbm5fc2VxID0gY29ubl9jb25maWd1cmVkOwo+PiArCQlnb3RvIHJldHJ5Owo+ PiArCX0KPj4gKwo+PiArCS8qCj4+ICsJICogSWYgdGhlIEJJT1MgZGlkbid0IGVuYWJsZSBldmVy eXRoaW5nIGl0IGNvdWxkLCBmYWxsIGJhY2sgdG8gaGF2ZSB0aGUKPj4gKwkgKiBzYW1lIHVzZXIg ZXhwZXJpZW5jaW5nIG9mIGxpZ2h0aW5nIHVwIGFzIG11Y2ggYXMgcG9zc2libGUgbGlrZSB0aGUK Pj4gKwkgKiBmYmRldiBoZWxwZXIgbGlicmFyeS4KPj4gKwkgKi8KPj4gKwlpZiAobnVtX2Nvbm5l Y3RvcnNfZW5hYmxlZCAhPSBudW1fY29ubmVjdG9yc19kZXRlY3RlZCAmJgo+PiArCSAgICBudW1f Y29ubmVjdG9yc19lbmFibGVkIDwgZGV2LT5tb2RlX2NvbmZpZy5udW1fY3J0Yykgewo+PiArCQlE Uk1fREVCVUdfS01TKCJmYWxsYmFjazogTm90IGFsbCBvdXRwdXRzIGVuYWJsZWRcbiIpOwo+PiAr CQlEUk1fREVCVUdfS01TKCJFbmFibGVkOiAlaSwgZGV0ZWN0ZWQ6ICVpXG4iLCBudW1fY29ubmVj dG9yc19lbmFibGVkLAo+PiArCQkJICAgICAgbnVtX2Nvbm5lY3RvcnNfZGV0ZWN0ZWQpOwo+PiAr CQlmYWxsYmFjayA9IHRydWU7Cj4+ICsJfQo+PiArCj4+ICsJaWYgKGZhbGxiYWNrKSB7Cj4+ICti YWlsOgo+PiArCQlEUk1fREVCVUdfS01TKCJOb3QgdXNpbmcgZmlybXdhcmUgY29uZmlndXJhdGlv blxuIik7Cj4+ICsJCW1lbWNweShlbmFibGVkLCBzYXZlX2VuYWJsZWQsIGNvdW50KTsKPj4gKwkJ cmV0ID0gZmFsc2U7Cj4+ICsJfQo+PiArCj4+ICsJZHJtX21vZGVzZXRfZHJvcF9sb2NrcygmY3R4 KTsKPj4gKwlkcm1fbW9kZXNldF9hY3F1aXJlX2ZpbmkoJmN0eCk7Cj4+ICsKPj4gKwlrZnJlZShz YXZlX2VuYWJsZWQpOwo+PiArCXJldHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4gIHN0YXRpYyB2b2lk IGRybV9zZXR1cF9jcnRjcyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAo+PiAgCQkJ ICAgIHUzMiB3aWR0aCwgdTMyIGhlaWdodCkKPj4gIHsKPj4gQEAgLTI1ODgsMTAgKzI3NzYsOCBA QCBzdGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0Y3Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hl bHBlciwKPj4gIAkJRFJNX0RFQlVHX0tNUygiTm8gY29ubmVjdG9ycyByZXBvcnRlZCBjb25uZWN0 ZWQgd2l0aCBtb2Rlc1xuIik7Cj4+ICAJZHJtX2VuYWJsZV9jb25uZWN0b3JzKGZiX2hlbHBlciwg ZW5hYmxlZCk7Cj4+ICAKPj4gLQlpZiAoIShmYl9oZWxwZXItPmZ1bmNzLT5pbml0aWFsX2NvbmZp ZyAmJgo+PiAtCSAgICAgIGZiX2hlbHBlci0+ZnVuY3MtPmluaXRpYWxfY29uZmlnKGZiX2hlbHBl ciwgY3J0Y3MsIG1vZGVzLAo+PiAtCQkJCQkgICAgICAgb2Zmc2V0cywKPj4gLQkJCQkJICAgICAg IGVuYWJsZWQsIHdpZHRoLCBoZWlnaHQpKSkgewo+PiArCWlmICghZHJtX2ZiX2hlbHBlcl9maXJt d2FyZV9jb25maWcoZmJfaGVscGVyLCBjcnRjcywgbW9kZXMsIG9mZnNldHMsCj4+ICsJCQkJCSAg IGVuYWJsZWQsIHdpZHRoLCBoZWlnaHQpKSB7Cj4+ICAJCW1lbXNldChtb2RlcywgMCwgZmJfaGVs cGVyLT5jb25uZWN0b3JfY291bnQqc2l6ZW9mKG1vZGVzWzBdKSk7Cj4+ICAJCW1lbXNldChjcnRj cywgMCwgZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQqc2l6ZW9mKGNydGNzWzBdKSk7Cj4+ICAJ CW1lbXNldChvZmZzZXRzLCAwLCBmYl9oZWxwZXItPmNvbm5lY3Rvcl9jb3VudCpzaXplb2Yob2Zm c2V0c1swXSkpOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJk ZXYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMKPj4gaW5kZXggZWY5M2My N2U2MGI0Li5jNGQxN2RkYTMzNTUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2ZiZGV2LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYu Ywo+PiBAQCAtMjg0LDIyNSArMjg0LDcgQEAgc3RhdGljIGludCBpbnRlbGZiX2NyZWF0ZShzdHJ1 Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyLAo+PiAgCXJldHVybiByZXQ7Cj4+ICB9Cj4+ICAKPj4g LXN0YXRpYyBzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICoKPj4gLWludGVsX2ZiX2hlbHBlcl9j cnRjKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsIHN0cnVjdCBkcm1fY3J0YyAqY3J0 YykKPj4gLXsKPj4gLQlpbnQgaTsKPj4gLQo+PiAtCWZvciAoaSA9IDA7IGkgPCBmYl9oZWxwZXIt PmNydGNfY291bnQ7IGkrKykKPj4gLQkJaWYgKGZiX2hlbHBlci0+Y3J0Y19pbmZvW2ldLm1vZGVf c2V0LmNydGMgPT0gY3J0YykKPj4gLQkJCXJldHVybiAmZmJfaGVscGVyLT5jcnRjX2luZm9baV07 Cj4+IC0KPj4gLQlyZXR1cm4gTlVMTDsKPj4gLX0KPj4gLQo+PiAtLyoKPj4gLSAqIFRyeSB0byBy ZWFkIHRoZSBCSU9TIGRpc3BsYXkgY29uZmlndXJhdGlvbiBhbmQgdXNlIGl0IGZvciB0aGUgaW5p dGlhbAo+PiAtICogZmIgY29uZmlndXJhdGlvbi4KPj4gLSAqCj4+IC0gKiBUaGUgQklPUyBvciBi b290IGxvYWRlciB3aWxsIGdlbmVyYWxseSBjcmVhdGUgYW4gaW5pdGlhbCBkaXNwbGF5Cj4+IC0g KiBjb25maWd1cmF0aW9uIGZvciB1cyB0aGF0IGluY2x1ZGVzIHNvbWUgc2V0IG9mIGFjdGl2ZSBw aXBlcyBhbmQgZGlzcGxheXMuCj4+IC0gKiBUaGlzIHJvdXRpbmUgdHJpZXMgdG8gZmlndXJlIG91 dCB3aGljaCBwaXBlcyBhbmQgY29ubmVjdG9ycyBhcmUgYWN0aXZlCj4+IC0gKiBhbmQgc3R1ZmZz IHRoZW0gaW50byB0aGUgY3J0Y3MgYW5kIG1vZGVzIGFycmF5IGdpdmVuIHRvIHVzIGJ5IHRoZQo+ PiAtICogZHJtX2ZiX2hlbHBlciBjb2RlLgo+PiAtICoKPj4gLSAqIFRoZSBvdmVyYWxsIHNlcXVl bmNlIGlzOgo+PiAtICogICBpbnRlbF9mYmRldl9pbml0IC0gZnJvbSBkcml2ZXIgbG9hZAo+PiAt ICogICAgIGludGVsX2ZiZGV2X2luaXRfYmlvcyAtIGluaXRpYWxpemUgdGhlIGludGVsX2ZiZGV2 IHVzaW5nIEJJT1MgZGF0YQo+PiAtICogICAgIGRybV9mYl9oZWxwZXJfaW5pdCAtIGJ1aWxkIGZi IGhlbHBlciBzdHJ1Y3RzCj4+IC0gKiAgICAgZHJtX2ZiX2hlbHBlcl9zaW5nbGVfYWRkX2FsbF9j b25uZWN0b3JzIC0gbW9yZSBmYiBoZWxwZXIgc3RydWN0cwo+PiAtICogICBpbnRlbF9mYmRldl9p bml0aWFsX2NvbmZpZyAtIGFwcGx5IHRoZSBjb25maWcKPj4gLSAqICAgICBkcm1fZmJfaGVscGVy X2luaXRpYWxfY29uZmlnIC0gY2FsbCAtPnByb2JlIHRoZW4gcmVnaXN0ZXJfZnJhbWVidWZmZXIo KQo+PiAtICogICAgICAgICBkcm1fc2V0dXBfY3J0Y3MgLSBidWlsZCBjcnRjIGNvbmZpZyBmb3Ig ZmJkZXYKPj4gLSAqICAgICAgICAgICBpbnRlbF9mYl9pbml0aWFsX2NvbmZpZyAtIGZpbmQgYWN0 aXZlIGNvbm5lY3RvcnMgZXRjCj4+IC0gKiAgICAgICAgIGRybV9mYl9oZWxwZXJfc2luZ2xlX2Zi X3Byb2JlIC0gc2V0IHVwIGZiZGV2Cj4+IC0gKiAgICAgICAgICAgaW50ZWxmYl9jcmVhdGUgLSBy ZS11c2Ugb3IgYWxsb2MgZmIsIGJ1aWxkIG91dCBmYmRldiBzdHJ1Y3RzCj4+IC0gKgo+PiAtICog Tm90ZSB0aGF0IHdlIGRvbid0IG1ha2Ugc3BlY2lhbCBjb25zaWRlcmF0aW9uIHdoZXRoZXIgd2Ug Y291bGQgYWN0dWFsbHkKPj4gLSAqIHN3aXRjaCB0byB0aGUgc2VsZWN0ZWQgbW9kZXMgd2l0aG91 dCBhIGZ1bGwgbW9kZXNldC4gRS5nLiB3aGVuIHRoZSBkaXNwbGF5Cj4+IC0gKiBpcyBpbiBWR0Eg bW9kZSB3ZSBuZWVkIHRvIHJlY2FsY3VsYXRlIHdhdGVybWFya3MgYW5kIHNldCBhIG5ldyBoaWdo LXJlcwo+PiAtICogZnJhbWVidWZmZXIgYW55d2F5Lgo+PiAtICovCj4+IC1zdGF0aWMgYm9vbCBp bnRlbF9mYl9pbml0aWFsX2NvbmZpZyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAo+ PiAtCQkJCSAgICBzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICoqY3J0Y3MsCj4+IC0JCQkJICAg IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICoqbW9kZXMsCj4+IC0JCQkJICAgIHN0cnVjdCBkcm1f ZmJfb2Zmc2V0ICpvZmZzZXRzLAo+PiAtCQkJCSAgICBib29sICplbmFibGVkLCBpbnQgd2lkdGgs IGludCBoZWlnaHQpCj4+IC17Cj4+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShmYl9oZWxwZXItPmRldik7Cj4+IC0JdW5zaWduZWQgaW50IGNvdW50ID0gbWlu KGZiX2hlbHBlci0+Y29ubmVjdG9yX2NvdW50LCBCSVRTX1BFUl9MT05HKTsKPj4gLQl1bnNpZ25l ZCBsb25nIGNvbm5fY29uZmlndXJlZCwgY29ubl9zZXE7Cj4+IC0JaW50IGksIGo7Cj4+IC0JYm9v bCAqc2F2ZV9lbmFibGVkOwo+PiAtCWJvb2wgZmFsbGJhY2sgPSB0cnVlLCByZXQgPSB0cnVlOwo+ PiAtCWludCBudW1fY29ubmVjdG9yc19lbmFibGVkID0gMDsKPj4gLQlpbnQgbnVtX2Nvbm5lY3Rv cnNfZGV0ZWN0ZWQgPSAwOwo+PiAtCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCBjdHg7 Cj4+IC0KPj4gLQlzYXZlX2VuYWJsZWQgPSBrY2FsbG9jKGNvdW50LCBzaXplb2YoYm9vbCksIEdG UF9LRVJORUwpOwo+PiAtCWlmICghc2F2ZV9lbmFibGVkKQo+PiAtCQlyZXR1cm4gZmFsc2U7Cj4+ IC0KPj4gLQlkcm1fbW9kZXNldF9hY3F1aXJlX2luaXQoJmN0eCwgMCk7Cj4+IC0KPj4gLQl3aGls ZSAoZHJtX21vZGVzZXRfbG9ja19hbGxfY3R4KGZiX2hlbHBlci0+ZGV2LCAmY3R4KSAhPSAwKQo+ PiAtCQlkcm1fbW9kZXNldF9iYWNrb2ZmKCZjdHgpOwo+PiAtCj4+IC0JbWVtY3B5KHNhdmVfZW5h YmxlZCwgZW5hYmxlZCwgY291bnQpOwo+PiAtCWNvbm5fc2VxID0gR0VOTUFTSyhjb3VudCAtIDEs IDApOwo+PiAtCWNvbm5fY29uZmlndXJlZCA9IDA7Cj4+IC1yZXRyeToKPj4gLQlmb3IgKGkgPSAw OyBpIDwgY291bnQ7IGkrKykgewo+PiAtCQlzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jb25uZWN0b3Ig KmZiX2Nvbm47Cj4+IC0JCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4+IC0JCXN0 cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKPj4gLQkJc3RydWN0IGRybV9mYl9oZWxwZXJfY3J0 YyAqbmV3X2NydGM7Cj4+IC0KPj4gLQkJZmJfY29ubiA9IGZiX2hlbHBlci0+Y29ubmVjdG9yX2lu Zm9baV07Cj4+IC0JCWNvbm5lY3RvciA9IGZiX2Nvbm4tPmNvbm5lY3RvcjsKPj4gLQo+PiAtCQlp ZiAoY29ubl9jb25maWd1cmVkICYgQklUKGkpKQo+PiAtCQkJY29udGludWU7Cj4+IC0KPj4gLQkJ LyogRmlyc3QgcGFzcywgb25seSBjb25zaWRlciB0aWxlZCBjb25uZWN0b3JzICovCj4+IC0JCWlm IChjb25uX3NlcSA9PSBHRU5NQVNLKGNvdW50IC0gMSwgMCkgJiYgIWNvbm5lY3Rvci0+aGFzX3Rp bGUpCj4+IC0JCQljb250aW51ZTsKPj4gLQo+PiAtCQlpZiAoY29ubmVjdG9yLT5zdGF0dXMgPT0g Y29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQpCj4+IC0JCQludW1fY29ubmVjdG9yc19kZXRlY3Rl ZCsrOwo+PiAtCj4+IC0JCWlmICghZW5hYmxlZFtpXSkgewo+PiAtCQkJRFJNX0RFQlVHX0tNUygi Y29ubmVjdG9yICVzIG5vdCBlbmFibGVkLCBza2lwcGluZ1xuIiwKPj4gLQkJCQkgICAgICBjb25u ZWN0b3ItPm5hbWUpOwo+PiAtCQkJY29ubl9jb25maWd1cmVkIHw9IEJJVChpKTsKPj4gLQkJCWNv bnRpbnVlOwo+PiAtCQl9Cj4+IC0KPj4gLQkJaWYgKGNvbm5lY3Rvci0+Zm9yY2UgPT0gRFJNX0ZP UkNFX09GRikgewo+PiAtCQkJRFJNX0RFQlVHX0tNUygiY29ubmVjdG9yICVzIGlzIGRpc2FibGVk IGJ5IHVzZXIsIHNraXBwaW5nXG4iLAo+PiAtCQkJCSAgICAgIGNvbm5lY3Rvci0+bmFtZSk7Cj4+ IC0JCQllbmFibGVkW2ldID0gZmFsc2U7Cj4+IC0JCQljb250aW51ZTsKPj4gLQkJfQo+PiAtCj4+ IC0JCWVuY29kZXIgPSBjb25uZWN0b3ItPnN0YXRlLT5iZXN0X2VuY29kZXI7Cj4+IC0JCWlmICgh ZW5jb2RlciB8fCBXQVJOX09OKCFjb25uZWN0b3ItPnN0YXRlLT5jcnRjKSkgewo+PiAtCQkJaWYg KGNvbm5lY3Rvci0+Zm9yY2UgPiBEUk1fRk9SQ0VfT0ZGKQo+PiAtCQkJCWdvdG8gYmFpbDsKPj4g LQo+PiAtCQkJRFJNX0RFQlVHX0tNUygiY29ubmVjdG9yICVzIGhhcyBubyBlbmNvZGVyIG9yIGNy dGMsIHNraXBwaW5nXG4iLAo+PiAtCQkJCSAgICAgIGNvbm5lY3Rvci0+bmFtZSk7Cj4+IC0JCQll bmFibGVkW2ldID0gZmFsc2U7Cj4+IC0JCQljb25uX2NvbmZpZ3VyZWQgfD0gQklUKGkpOwo+PiAt CQkJY29udGludWU7Cj4+IC0JCX0KPj4gLQo+PiAtCQludW1fY29ubmVjdG9yc19lbmFibGVkKys7 Cj4+IC0KPj4gLQkJbmV3X2NydGMgPSBpbnRlbF9mYl9oZWxwZXJfY3J0YyhmYl9oZWxwZXIsCj4+ IC0JCQkJCQljb25uZWN0b3ItPnN0YXRlLT5jcnRjKTsKPj4gLQo+PiAtCQkvKgo+PiAtCQkgKiBN YWtlIHN1cmUgd2UncmUgbm90IHRyeWluZyB0byBkcml2ZSBtdWx0aXBsZSBjb25uZWN0b3JzCj4+ IC0JCSAqIHdpdGggYSBzaW5nbGUgQ1JUQywgc2luY2Ugb3VyIGNsb25pbmcgc3VwcG9ydCBtYXkg bm90Cj4+IC0JCSAqIG1hdGNoIHRoZSBCSU9TLgo+PiAtCQkgKi8KPj4gLQkJZm9yIChqID0gMDsg aiA8IGNvdW50OyBqKyspIHsKPj4gLQkJCWlmIChjcnRjc1tqXSA9PSBuZXdfY3J0Yykgewo+PiAt CQkJCURSTV9ERUJVR19LTVMoImZhbGxiYWNrOiBjbG9uZWQgY29uZmlndXJhdGlvblxuIik7Cj4+ IC0JCQkJZ290byBiYWlsOwo+PiAtCQkJfQo+PiAtCQl9Cj4+IC0KPj4gLQkJRFJNX0RFQlVHX0tN UygibG9va2luZyBmb3IgY21kbGluZSBtb2RlIG9uIGNvbm5lY3RvciAlc1xuIiwKPj4gLQkJCSAg ICAgIGNvbm5lY3Rvci0+bmFtZSk7Cj4+IC0KPj4gLQkJLyogZ28gZm9yIGNvbW1hbmQgbGluZSBt b2RlIGZpcnN0ICovCj4+IC0JCW1vZGVzW2ldID0gZHJtX3BpY2tfY21kbGluZV9tb2RlKGZiX2Nv bm4pOwo+PiAtCj4+IC0JCS8qIHRyeSBmb3IgcHJlZmVycmVkIG5leHQgKi8KPj4gLQkJaWYgKCFt b2Rlc1tpXSkgewo+PiAtCQkJRFJNX0RFQlVHX0tNUygibG9va2luZyBmb3IgcHJlZmVycmVkIG1v ZGUgb24gY29ubmVjdG9yICVzICVkXG4iLAo+PiAtCQkJCSAgICAgIGNvbm5lY3Rvci0+bmFtZSwg Y29ubmVjdG9yLT5oYXNfdGlsZSk7Cj4+IC0JCQltb2Rlc1tpXSA9IGRybV9oYXNfcHJlZmVycmVk X21vZGUoZmJfY29ubiwgd2lkdGgsCj4+IC0JCQkJCQkJICBoZWlnaHQpOwo+PiAtCQl9Cj4+IC0K Pj4gLQkJLyogTm8gcHJlZmVycmVkIG1vZGUgbWFya2VkIGJ5IHRoZSBFRElEPyBBcmUgdGhlcmUg YW55IG1vZGVzPyAqLwo+PiAtCQlpZiAoIW1vZGVzW2ldICYmICFsaXN0X2VtcHR5KCZjb25uZWN0 b3ItPm1vZGVzKSkgewo+PiAtCQkJRFJNX0RFQlVHX0tNUygidXNpbmcgZmlyc3QgbW9kZSBsaXN0 ZWQgb24gY29ubmVjdG9yICVzXG4iLAo+PiAtCQkJCSAgICAgIGNvbm5lY3Rvci0+bmFtZSk7Cj4+ IC0JCQltb2Rlc1tpXSA9IGxpc3RfZmlyc3RfZW50cnkoJmNvbm5lY3Rvci0+bW9kZXMsCj4+IC0J CQkJCQkgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUsCj4+IC0JCQkJCQkgICAgaGVhZCk7Cj4+ IC0JCX0KPj4gLQo+PiAtCQkvKiBsYXN0IHJlc29ydDogdXNlIGN1cnJlbnQgbW9kZSAqLwo+PiAt CQlpZiAoIW1vZGVzW2ldKSB7Cj4+IC0JCQkvKgo+PiAtCQkJICogSU1QT1JUQU5UOiBXZSB3YW50 IHRvIHVzZSB0aGUgYWRqdXN0ZWQgbW9kZSAoaS5lLgo+PiAtCQkJICogYWZ0ZXIgdGhlIHBhbmVs IGZpdHRlciB1cHNjYWxpbmcpIGFzIHRoZSBpbml0aWFsCj4+IC0JCQkgKiBjb25maWcsIG5vdCB0 aGUgaW5wdXQgbW9kZSwgd2hpY2ggaXMgd2hhdCBjcnRjLT5tb2RlCj4+IC0JCQkgKiB1c3VhbGx5 IGNvbnRhaW5zLiBCdXQgc2luY2Ugb3VyIGN1cnJlbnQKPj4gLQkJCSAqIGNvZGUgcHV0cyBhIG1v ZGUgZGVyaXZlZCBmcm9tIHRoZSBwb3N0LXBmaXQgdGltaW5ncwo+PiAtCQkJICogaW50byBjcnRj LT5tb2RlIHRoaXMgd29ya3Mgb3V0IGNvcnJlY3RseS4KPj4gLQkJCSAqCj4+IC0JCQkgKiBUaGlz IGlzIGNydGMtPm1vZGUgYW5kIG5vdCBjcnRjLT5zdGF0ZS0+bW9kZSBmb3IgdGhlCj4+IC0JCQkg KiBmYXN0Ym9vdCBjaGVjayB0byB3b3JrIGNvcnJlY3RseS4gY3J0Y19zdGF0ZS0+bW9kZSBoYXMK Pj4gLQkJCSAqIEk5MTVfTU9ERV9GTEFHX0lOSEVSSVRFRCwgd2hpY2ggd2UgY2xlYXIgdG8gZm9y Y2UgY2hlY2sKPj4gLQkJCSAqIHN0YXRlLgo+PiAtCQkJICovCj4+IC0JCQlEUk1fREVCVUdfS01T KCJsb29raW5nIGZvciBjdXJyZW50IG1vZGUgb24gY29ubmVjdG9yICVzXG4iLAo+PiAtCQkJCSAg ICAgIGNvbm5lY3Rvci0+bmFtZSk7Cj4+IC0JCQltb2Rlc1tpXSA9ICZjb25uZWN0b3ItPnN0YXRl LT5jcnRjLT5tb2RlOwo+PiAtCQl9Cj4+IC0JCWNydGNzW2ldID0gbmV3X2NydGM7Cj4+IC0KPj4g LQkJRFJNX0RFQlVHX0tNUygiY29ubmVjdG9yICVzIG9uIFtDUlRDOiVkOiVzXTogJWR4JWQlc1xu IiwKPj4gLQkJCSAgICAgIGNvbm5lY3Rvci0+bmFtZSwKPj4gLQkJCSAgICAgIGNvbm5lY3Rvci0+ c3RhdGUtPmNydGMtPmJhc2UuaWQsCj4+IC0JCQkgICAgICBjb25uZWN0b3ItPnN0YXRlLT5jcnRj LT5uYW1lLAo+PiAtCQkJICAgICAgbW9kZXNbaV0tPmhkaXNwbGF5LCBtb2Rlc1tpXS0+dmRpc3Bs YXksCj4+IC0JCQkgICAgICBtb2Rlc1tpXS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFD RSA/ICJpIiA6IiIpOwo+PiAtCj4+IC0JCWZhbGxiYWNrID0gZmFsc2U7Cj4+IC0JCWNvbm5fY29u ZmlndXJlZCB8PSBCSVQoaSk7Cj4+IC0JfQo+PiAtCj4+IC0JaWYgKGNvbm5fY29uZmlndXJlZCAh PSBjb25uX3NlcSkgeyAvKiByZXBlYXQgdW50aWwgbm8gbW9yZSBhcmUgZm91bmQgKi8KPj4gLQkJ Y29ubl9zZXEgPSBjb25uX2NvbmZpZ3VyZWQ7Cj4+IC0JCWdvdG8gcmV0cnk7Cj4+IC0JfQo+PiAt Cj4+IC0JLyoKPj4gLQkgKiBJZiB0aGUgQklPUyBkaWRuJ3QgZW5hYmxlIGV2ZXJ5dGhpbmcgaXQg Y291bGQsIGZhbGwgYmFjayB0byBoYXZlIHRoZQo+PiAtCSAqIHNhbWUgdXNlciBleHBlcmllbmNp bmcgb2YgbGlnaHRpbmcgdXAgYXMgbXVjaCBhcyBwb3NzaWJsZSBsaWtlIHRoZQo+PiAtCSAqIGZi ZGV2IGhlbHBlciBsaWJyYXJ5Lgo+PiAtCSAqLwo+PiAtCWlmIChudW1fY29ubmVjdG9yc19lbmFi bGVkICE9IG51bV9jb25uZWN0b3JzX2RldGVjdGVkICYmCj4+IC0JICAgIG51bV9jb25uZWN0b3Jz X2VuYWJsZWQgPCBJTlRFTF9JTkZPKGRldl9wcml2KS0+bnVtX3BpcGVzKSB7Cj4+IC0JCURSTV9E RUJVR19LTVMoImZhbGxiYWNrOiBOb3QgYWxsIG91dHB1dHMgZW5hYmxlZFxuIik7Cj4+IC0JCURS TV9ERUJVR19LTVMoIkVuYWJsZWQ6ICVpLCBkZXRlY3RlZDogJWlcbiIsIG51bV9jb25uZWN0b3Jz X2VuYWJsZWQsCj4+IC0JCQkgICAgICBudW1fY29ubmVjdG9yc19kZXRlY3RlZCk7Cj4+IC0JCWZh bGxiYWNrID0gdHJ1ZTsKPj4gLQl9Cj4+IC0KPj4gLQlpZiAoZmFsbGJhY2spIHsKPj4gLWJhaWw6 Cj4+IC0JCURSTV9ERUJVR19LTVMoIk5vdCB1c2luZyBmaXJtd2FyZSBjb25maWd1cmF0aW9uXG4i KTsKPj4gLQkJbWVtY3B5KGVuYWJsZWQsIHNhdmVfZW5hYmxlZCwgY291bnQpOwo+PiAtCQlyZXQg PSBmYWxzZTsKPj4gLQl9Cj4+IC0KPj4gLQlkcm1fbW9kZXNldF9kcm9wX2xvY2tzKCZjdHgpOwo+ PiAtCWRybV9tb2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKPj4gLQo+PiAtCWtmcmVlKHNhdmVf ZW5hYmxlZCk7Cj4+IC0JcmV0dXJuIHJldDsKPj4gLX0KPj4gLQo+PiAgc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1fZmJfaGVscGVyX2Z1bmNzIGludGVsX2ZiX2hlbHBlcl9mdW5jcyA9IHsKPj4gLQku aW5pdGlhbF9jb25maWcgPSBpbnRlbF9mYl9pbml0aWFsX2NvbmZpZywKPj4gIAkuZmJfcHJvYmUg PSBpbnRlbGZiX2NyZWF0ZSwKPj4gIH07Cj4+ICAKPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJt L2RybV9mYl9oZWxwZXIuaCBiL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaAo+PiBpbmRleCA4 MWFlNDhhMGRmNDguLjRkYjdkZTE5YTQ5MSAxMDA2NDQKPj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJt X2ZiX2hlbHBlci5oCj4+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaAo+PiBAQCAt MTAxLDI5ICsxMDEsNiBAQCBzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9mdW5jcyB7Cj4+ICAJICovCj4+ ICAJaW50ICgqZmJfcHJvYmUpKHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIsCj4+ICAJCQlz dHJ1Y3QgZHJtX2ZiX2hlbHBlcl9zdXJmYWNlX3NpemUgKnNpemVzKTsKPj4gLQo+PiAtCS8qKgo+ PiAtCSAqIEBpbml0aWFsX2NvbmZpZzoKPj4gLQkgKgo+PiAtCSAqIERyaXZlciBjYWxsYmFjayB0 byBzZXR1cCBhbiBpbml0aWFsIGZiZGV2IGRpc3BsYXkgY29uZmlndXJhdGlvbi4KPj4gLQkgKiBE cml2ZXJzIGNhbiB1c2UgdGhpcyBjYWxsYmFjayB0byB0ZWxsIHRoZSBmYmRldiBlbXVsYXRpb24g d2hhdCB0aGUKPj4gLQkgKiBwcmVmZXJyZWQgaW5pdGlhbCBjb25maWd1cmF0aW9uIGlzLiBUaGlz IGlzIHVzZWZ1bCB0byBpbXBsZW1lbnQKPj4gLQkgKiBzbW9vdGggYm9vdGluZyB3aGVyZSB0aGUg ZmJkZXYgKGFuZCBzdWJzZXF1ZW50bHkgYWxsIHVzZXJzcGFjZSkgbmV2ZXIKPj4gLQkgKiBjaGFu Z2VzIHRoZSBtb2RlLCBidXQgYWx3YXlzIGluaGVyaXRzIHRoZSBleGlzdGluZyBjb25maWd1cmF0 aW9uLgo+PiAtCSAqCj4+IC0JICogVGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbC4KPj4gLQkgKgo+ PiAtCSAqIFJFVFVSTlM6Cj4+IC0JICoKPj4gLQkgKiBUaGUgZHJpdmVyIHNob3VsZCByZXR1cm4g dHJ1ZSBpZiBhIHN1aXRhYmxlIGluaXRpYWwgY29uZmlndXJhdGlvbiBoYXMKPj4gLQkgKiBiZWVu IGZpbGxlZCBvdXQgYW5kIGZhbHNlIHdoZW4gdGhlIGZiZGV2IGhlbHBlciBzaG91bGQgZmFsbCBi YWNrIHRvCj4+IC0JICogdGhlIGRlZmF1bHQgcHJvYmluZyBsb2dpYy4KPj4gLQkgKi8KPj4gLQli b29sICgqaW5pdGlhbF9jb25maWcpKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCj4+ IC0JCQkgICAgICAgc3RydWN0IGRybV9mYl9oZWxwZXJfY3J0YyAqKmNydGNzLAo+PiAtCQkJICAg ICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICoqbW9kZXMsCj4+IC0JCQkgICAgICAgc3RydWN0 IGRybV9mYl9vZmZzZXQgKm9mZnNldHMsCj4+IC0JCQkgICAgICAgYm9vbCAqZW5hYmxlZCwgaW50 IHdpZHRoLCBpbnQgaGVpZ2h0KTsKPj4gIH07Cj4+ICAKPj4gIHN0cnVjdCBkcm1fZmJfaGVscGVy X2Nvbm5lY3RvciB7Cj4+Cj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbA==