From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH 2/5] dma-buf: remove kmap_atomic interface Date: Wed, 20 Jun 2018 14:46:19 +0200 Message-ID: References: <20180601120020.11520-1-christian.koenig@amd.com> <20180601120020.11520-2-christian.koenig@amd.com> <20180618081845.GV3438@phenom.ffwll.local> <2bcb34c3-b729-e3ea-fb8c-2471e4ed56d6@amd.com> Reply-To: christian.koenig-5C7GfCeVMHo@public.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Daniel Vetter , =?UTF-8?Q?Christian_K=c3=b6nig?= Cc: "moderated list:DMA BUFFER SHARING FRAMEWORK" , dri-devel , amd-gfx list , "open list:DMA BUFFER SHARING FRAMEWORK" QW0gMTkuMDYuMjAxOCB1bSAxNzozNSBzY2hyaWViIERhbmllbCBWZXR0ZXI6Cj4gT24gVHVlLCBK dW4gMTksIDIwMTggYXQgNDo0NyBQTSwgQ2hyaXN0aWFuIEvDtm5pZwo+IDxjaHJpc3RpYW4ua29l bmlnQGFtZC5jb20+IHdyb3RlOgo+PiBBbSAxOC4wNi4yMDE4IHVtIDEwOjE4IHNjaHJpZWIgRGFu aWVsIFZldHRlcjoKPj4+IE9uIEZyaSwgSnVuIDAxLCAyMDE4IGF0IDAyOjAwOjE3UE0gKzAyMDAs IENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6Cj4+Pj4gTmVpdGhlciB1c2VkIG5vciBjb3JyZWN0bHkg aW1wbGVtZW50ZWQgYW55d2hlcmUuIEp1c3QgY29tcGxldGVseSByZW1vdmUKPj4+PiB0aGUgaW50 ZXJmYWNlLgo+Pj4+Cj4+Pj4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0 aWFuLmtvZW5pZ0BhbWQuY29tPgo+Pj4gSSB3b25kZXIgd2hldGhlciB3ZSBjYW4gbnVrZSB0aGUg bm9ybWFsIGttYXAgc3R1ZmYgdG9vIC4uLiBldmVyeW9uZSBzZWVtcwo+Pj4gdG8gd2FudC91c2Ug dGhlIHZtYXAgc3R1ZmYgZm9yIGtlcm5lbC1pbnRlcm5hbCBtYXBwaW5nIG5lZWRzLgo+Pj4KPj4+ IEFueXdheSwgdGhpcyBsb29rcyBnb29kLgo+Pj4+IC0tLQo+Pj4+ICAgIGRyaXZlcnMvZG1hLWJ1 Zi9kbWEtYnVmLmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNDQKPj4+PiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tCj4+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3By aW1lLmMgICAgICAgICAgfCAgMiAtCj4+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2FybWFkYS9hcm1h ZGFfZ2VtLmMgICAgICAgICAgICAgICAgfCAgMiAtCj4+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2Ry bV9wcmltZS5jICAgICAgICAgICAgICAgICAgICAgICAgfCAyNiAtLS0tLS0tLS0tLS0tCj4+Pj4g ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMgICAgICAgICAgICAgfCAx MSAtLS0tLS0KPj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19kbWFi dWYuYyAgICAgICB8ICAyIC0KPj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2dl bV9kbWFidWYuYyAgICAgICAgICB8ICAyIC0KPj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vdGVncmEv Z2VtLmMgICAgICAgICAgICAgICAgICAgICAgICB8IDE0IC0tLS0tLS0KPj4+PiAgICBkcml2ZXJz L2dwdS9kcm0vdWRsL3VkbF9kbWFidWYuYyAgICAgICAgICAgICAgICAgICB8IDE3IC0tLS0tLS0t LQo+Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3ByaW1lLmMgICAgICAgICAg ICAgIHwgMTMgLS0tLS0tLQo+Pj4+ICAgIC4uLi9tZWRpYS9jb21tb24vdmlkZW9idWYyL3ZpZGVv YnVmMi1kbWEtY29udGlnLmMgIHwgIDEgLQo+Pj4+ICAgIGRyaXZlcnMvbWVkaWEvY29tbW9uL3Zp ZGVvYnVmMi92aWRlb2J1ZjItZG1hLXNnLmMgIHwgIDEgLQo+Pj4+ICAgIGRyaXZlcnMvbWVkaWEv Y29tbW9uL3ZpZGVvYnVmMi92aWRlb2J1ZjItdm1hbGxvYy5jIHwgIDEgLQo+Pj4+ICAgIGRyaXZl cnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9pb24uYyAgICAgICAgICAgICAgICAgIHwgIDIgLQo+Pj4+ ICAgIGRyaXZlcnMvdGVlL3RlZV9zaG0uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDYgLS0tCj4+Pj4gICAgaW5jbHVkZS9kcm0vZHJtX3ByaW1lLmggICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgNCAtLQo+Pj4+ICAgIGluY2x1ZGUvbGludXgvZG1hLWJ1Zi5oICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDQgLS0KPj4+PiAgICAxNyBmaWxlcyBjaGFuZ2VkLCAxNTIg ZGVsZXRpb25zKC0pCj4+Pj4KPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL2RtYS1i dWYuYyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMKPj4+PiBpbmRleCBlOTlhOGQxOTk5MWIu LmU0YzY1N2Q5ZmFkNyAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5j Cj4+Pj4gKysrIGIvZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYwo+Pj4+IEBAIC00MDUsNyArNDA1 LDYgQEAgc3RydWN0IGRtYV9idWYgKmRtYV9idWZfZXhwb3J0KGNvbnN0IHN0cnVjdAo+Pj4+IGRt YV9idWZfZXhwb3J0X2luZm8gKmV4cF9pbmZvKQo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHx8ICFleHBfaW5mby0+b3BzLT5tYXBfZG1hX2J1Zgo+Pj4+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHx8ICFleHBfaW5mby0+b3BzLT51bm1hcF9kbWFfYnVmCj4+Pj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgfHwgIWV4cF9pbmZvLT5vcHMtPnJlbGVhc2UKPj4+PiAtICAgICAg ICAgICAgICAgICAgICAgICAgIHx8ICFleHBfaW5mby0+b3BzLT5tYXBfYXRvbWljCj4+Pj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgfHwgIWV4cF9pbmZvLT5vcHMtPm1hcAo+Pj4+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHx8ICFleHBfaW5mby0+b3BzLT5tbWFwKSkgewo+Pj4+ICAg ICAgICAgICAgICAgICAgcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4+Pj4gQEAgLTY4NywxNCAr Njg2LDYgQEAgRVhQT1JUX1NZTUJPTF9HUEwoZG1hX2J1Zl91bm1hcF9hdHRhY2htZW50KTsKPj4+ PiAgICAgKiAgICAgIHZvaWQgXCpkbWFfYnVmX2ttYXAoc3RydWN0IGRtYV9idWYgXCosIHVuc2ln bmVkIGxvbmcpOwo+Pj4+ICAgICAqICAgICAgdm9pZCBkbWFfYnVmX2t1bm1hcChzdHJ1Y3QgZG1h X2J1ZiBcKiwgdW5zaWduZWQgbG9uZywgdm9pZCBcKik7Cj4+Pj4gICAgICoKPj4+PiAtICogICBU aGVyZSBhcmUgYWxzbyBhdG9taWMgdmFyaWFudHMgb2YgdGhlc2UgaW50ZXJmYWNlcy4gTGlrZSBm b3Iga21hcAo+Pj4+IHRoZXkKPj4+PiAtICogICBmYWNpbGl0YXRlIG5vbi1ibG9ja2luZyBmYXN0 LXBhdGhzLiBOZWl0aGVyIHRoZSBpbXBvcnRlciBub3IgdGhlCj4+Pj4gZXhwb3J0ZXIKPj4+PiAt ICogICAoaW4gdGhlIGNhbGxiYWNrKSBpcyBhbGxvd2VkIHRvIGJsb2NrIHdoZW4gdXNpbmcgdGhl c2UuCj4+Pj4gLSAqCj4+Pj4gLSAqICAgSW50ZXJmYWNlczo6Cj4+Pj4gLSAqICAgICAgdm9pZCBc KmRtYV9idWZfa21hcF9hdG9taWMoc3RydWN0IGRtYV9idWYgXCosIHVuc2lnbmVkIGxvbmcpOwo+ Pj4+IC0gKiAgICAgIHZvaWQgZG1hX2J1Zl9rdW5tYXBfYXRvbWljKHN0cnVjdCBkbWFfYnVmIFwq LCB1bnNpZ25lZCBsb25nLAo+Pj4+IHZvaWQgXCopOwo+Pj4+IC0gKgo+Pj4+ICAgICAqICAgRm9y IGltcG9ydGVycyBhbGwgdGhlIHJlc3RyaWN0aW9ucyBvZiB1c2luZyBrbWFwIGFwcGx5LCBsaWtl IHRoZQo+Pj4+IGxpbWl0ZWQKPj4+PiAgICAgKiAgIHN1cHBseSBvZiBrbWFwX2F0b21pYyBzbG90 cy4gSGVuY2UgYW4gaW1wb3J0ZXIgc2hhbGwgb25seSBob2xkCj4+Pj4gb250byBhdAo+Pj4+ICAg ICAqICAgbWF4IDIgYXRvbWljIGRtYV9idWYga21hcHMgYXQgdGhlIHNhbWUgdGltZSAoaW4gYW55 IGdpdmVuIHByb2Nlc3MKPj4+PiBjb250ZXh0KS4KPj4+IFRoaXMgaXMgYWxzbyBhYm91dCBhdG9t aWMga21hcCAuLi4KPj4+Cj4+PiBBbmQgdGhlIHN1YnNlcXVlbnQgbGFuZ3VhZ2UgYXJvdW5kICJO b3RlIHRoYXQgdGhlc2UgY2FsbHMgbmVlZCB0byBhbHdheXMKPj4+IHN1Y2NlZWQuIiBpcyBhbHNv IG5vdCB0cnVlLCBtaWdodCBiZSBnb29kIHRvIHVwZGF0ZSB0aGF0IHN0YXRpbmcgdGhhdCBrbWFw Cj4+PiBpcyBvcHRpb25hbCAobGlrZSB3ZSBzYXkgYWxyZWFkeSBmb3Igdm1hcCkuCj4+Pgo+Pj4g V2l0aCB0aG9zZSBkb2NzIG5pdHMgYWRkcmVzc2VkOgo+Pj4KPj4+IFJldmlld2VkLWJ5OiBEYW5p ZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+Pgo+PiBJJ3ZlIGZpeGVkIHVwIHBh dGNoICMxIGFuZCAjMiBhbmQgYWRkZWQgeW91ciBSZXZpZXdlZC1ieSB0YWcuCj4+Cj4+IFNpbmNl IEkgZmluYWxseSBoYWQgdGltZSB0byBpbnN0YWxsIGRpbSBkbyB5b3UgaGF2ZSBhbnkgb2JqZWN0 aW9ucyB0aGF0IEkKPj4gbm93IHJ1biAiZGltIHB1c2ggZHJtLW1pc2MtbmV4dCIgd2l0aCB0aG9z ZSB0d28gYXBwbGllZD8KPiBHbyBhaGVhZCwgdGhhdCdzIHRoZSBwb2ludCBvZiBjb21taXQgcmln aHRzLiBkaW0gbWlnaHQgY29tcGxhaW4gaWYgeW91Cj4gY2hlcnJ5IHBpY2tlZCB0aGVtIGFuZCBk aWRuJ3QgcGljayB0aGVtIHVwIHVzaW5nIGRpbSBhcHBseSB0aG91Z2ggLi4uCgpJJ3ZlIGZpeGVk IHVwIHRoZSBMaW5rIHRhZ3MsIGJ1dCB3aGVuIEkgdHJ5ICJkaW0gcHVzaC1icmFuY2ggCmRybS1t aXNjLW5leHQiIEkgb25seSBnZXQgdGhlIGVycm9yIG1lc3NhZ2UgImVycm9yOiBkc3QgcmVmIApy ZWZzL2hlYWRzL2RybS1taXNjLW5leHQgcmVjZWl2ZXMgZnJvbSBtb3JlIHRoYW4gb25lIHNyYy4i CgpBbnkgaWRlYSB3aGF0IGlzIGdvaW5nIHdyb25nIGhlcmU/CgpDaHJpc3RpYW4uCgo+IC1EYW5p ZWwKPgo+Cj4+IFJlZ2FyZHMsCj4+IENocmlzdGlhbi4KPj4KPj4KPj4+PiBAQCAtODU5LDQxICs4 NTAsNiBAQCBpbnQgZG1hX2J1Zl9lbmRfY3B1X2FjY2VzcyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVm LAo+Pj4+ICAgIH0KPj4+PiAgICBFWFBPUlRfU1lNQk9MX0dQTChkbWFfYnVmX2VuZF9jcHVfYWNj ZXNzKTsKPj4+PiAgICAtLyoqCj4+Pj4gLSAqIGRtYV9idWZfa21hcF9hdG9taWMgLSBNYXAgYSBw YWdlIG9mIHRoZSBidWZmZXIgb2JqZWN0IGludG8ga2VybmVsCj4+Pj4gYWRkcmVzcwo+Pj4+IC0g KiBzcGFjZS4gVGhlIHNhbWUgcmVzdHJpY3Rpb25zIGFzIGZvciBrbWFwX2F0b21pYyBhbmQgZnJp ZW5kcyBhcHBseS4KPj4+PiAtICogQGRtYWJ1ZjogICAgW2luXSAgICBidWZmZXIgdG8gbWFwIHBh Z2UgZnJvbS4KPj4+PiAtICogQHBhZ2VfbnVtOiAgW2luXSAgICBwYWdlIGluIFBBR0VfU0laRSB1 bml0cyB0byBtYXAuCj4+Pj4gLSAqCj4+Pj4gLSAqIFRoaXMgY2FsbCBtdXN0IGFsd2F5cyBzdWNj ZWVkLCBhbnkgbmVjZXNzYXJ5IHByZXBhcmF0aW9ucyB0aGF0IG1pZ2h0Cj4+Pj4gZmFpbAo+Pj4+ IC0gKiBuZWVkIHRvIGJlIGRvbmUgaW4gYmVnaW5fY3B1X2FjY2Vzcy4KPj4+PiAtICovCj4+Pj4g LXZvaWQgKmRtYV9idWZfa21hcF9hdG9taWMoc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwgdW5zaWdu ZWQgbG9uZwo+Pj4+IHBhZ2VfbnVtKQo+Pj4+IC17Cj4+Pj4gLSAgICAgICBXQVJOX09OKCFkbWFi dWYpOwo+Pj4+IC0KPj4+PiAtICAgICAgIHJldHVybiBkbWFidWYtPm9wcy0+bWFwX2F0b21pYyhk bWFidWYsIHBhZ2VfbnVtKTsKPj4+PiAtfQo+Pj4+IC1FWFBPUlRfU1lNQk9MX0dQTChkbWFfYnVm X2ttYXBfYXRvbWljKTsKPj4+PiAtCj4+Pj4gLS8qKgo+Pj4+IC0gKiBkbWFfYnVmX2t1bm1hcF9h dG9taWMgLSBVbm1hcCBhIHBhZ2Ugb2J0YWluZWQgYnkgZG1hX2J1Zl9rbWFwX2F0b21pYy4KPj4+ PiAtICogQGRtYWJ1ZjogICAgW2luXSAgICBidWZmZXIgdG8gdW5tYXAgcGFnZSBmcm9tLgo+Pj4+ IC0gKiBAcGFnZV9udW06ICBbaW5dICAgIHBhZ2UgaW4gUEFHRV9TSVpFIHVuaXRzIHRvIHVubWFw Lgo+Pj4+IC0gKiBAdmFkZHI6ICAgICBbaW5dICAgIGtlcm5lbCBzcGFjZSBwb2ludGVyIG9idGFp bmVkIGZyb20KPj4+PiBkbWFfYnVmX2ttYXBfYXRvbWljLgo+Pj4+IC0gKgo+Pj4+IC0gKiBUaGlz IGNhbGwgbXVzdCBhbHdheXMgc3VjY2VlZC4KPj4+PiAtICovCj4+Pj4gLXZvaWQgZG1hX2J1Zl9r dW5tYXBfYXRvbWljKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHVuc2lnbmVkIGxvbmcKPj4+PiBw YWdlX251bSwKPj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp2YWRkcikKPj4+ PiAtewo+Pj4+IC0gICAgICAgV0FSTl9PTighZG1hYnVmKTsKPj4+PiAtCj4+Pj4gLSAgICAgICBp ZiAoZG1hYnVmLT5vcHMtPnVubWFwX2F0b21pYykKPj4+PiAtICAgICAgICAgICAgICAgZG1hYnVm LT5vcHMtPnVubWFwX2F0b21pYyhkbWFidWYsIHBhZ2VfbnVtLCB2YWRkcik7Cj4+Pj4gLX0KPj4+ PiAtRVhQT1JUX1NZTUJPTF9HUEwoZG1hX2J1Zl9rdW5tYXBfYXRvbWljKTsKPj4+PiAtCj4+Pj4g ICAgLyoqCj4+Pj4gICAgICogZG1hX2J1Zl9rbWFwIC0gTWFwIGEgcGFnZSBvZiB0aGUgYnVmZmVy IG9iamVjdCBpbnRvIGtlcm5lbCBhZGRyZXNzCj4+Pj4gc3BhY2UuIFRoZQo+Pj4+ICAgICAqIHNh bWUgcmVzdHJpY3Rpb25zIGFzIGZvciBrbWFwIGFuZCBmcmllbmRzIGFwcGx5Lgo+Pj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcHJpbWUuYwo+Pj4+IGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ByaW1lLmMKPj4+PiBpbmRleCBmMTUw MGYxZWMwZjUuLmExNTZiMzg5MWEzZiAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfcHJpbWUuYwo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9wcmltZS5jCj4+Pj4gQEAgLTI0NCw5ICsyNDQsNyBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IGRtYV9idWZfb3BzIGFtZGdwdV9kbWFidWZfb3BzID0gewo+Pj4+ICAgICAgICAg IC5yZWxlYXNlID0gZHJtX2dlbV9kbWFidWZfcmVsZWFzZSwKPj4+PiAgICAgICAgICAuYmVnaW5f Y3B1X2FjY2VzcyA9IGFtZGdwdV9nZW1fYmVnaW5fY3B1X2FjY2VzcywKPj4+PiAgICAgICAgICAu bWFwID0gZHJtX2dlbV9kbWFidWZfa21hcCwKPj4+PiAtICAgICAgIC5tYXBfYXRvbWljID0gZHJt X2dlbV9kbWFidWZfa21hcF9hdG9taWMsCj4+Pj4gICAgICAgICAgLnVubWFwID0gZHJtX2dlbV9k bWFidWZfa3VubWFwLAo+Pj4+IC0gICAgICAgLnVubWFwX2F0b21pYyA9IGRybV9nZW1fZG1hYnVm X2t1bm1hcF9hdG9taWMsCj4+Pj4gICAgICAgICAgLm1tYXAgPSBkcm1fZ2VtX2RtYWJ1Zl9tbWFw LAo+Pj4+ICAgICAgICAgIC52bWFwID0gZHJtX2dlbV9kbWFidWZfdm1hcCwKPj4+PiAgICAgICAg ICAudnVubWFwID0gZHJtX2dlbV9kbWFidWZfdnVubWFwLAo+Pj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYXJtYWRhL2FybWFkYV9nZW0uYwo+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2Fy bWFkYS9hcm1hZGFfZ2VtLmMKPj4+PiBpbmRleCBhOTdmNTA5NzQzYTUuLjNmYjM3Yzc1YzA2NSAx MDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXJtYWRhL2FybWFkYV9nZW0uYwo+Pj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm1hZGEvYXJtYWRhX2dlbS5jCj4+Pj4gQEAgLTQ5MCw4 ICs0OTAsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRtYV9idWZfb3BzCj4+Pj4gYXJtYWRhX2dl bV9wcmltZV9kbWFidWZfb3BzID0gewo+Pj4+ICAgICAgICAgIC5tYXBfZG1hX2J1ZiAgICA9IGFy bWFkYV9nZW1fcHJpbWVfbWFwX2RtYV9idWYsCj4+Pj4gICAgICAgICAgLnVubWFwX2RtYV9idWYg ID0gYXJtYWRhX2dlbV9wcmltZV91bm1hcF9kbWFfYnVmLAo+Pj4+ICAgICAgICAgIC5yZWxlYXNl ICAgICAgICA9IGRybV9nZW1fZG1hYnVmX3JlbGVhc2UsCj4+Pj4gLSAgICAgICAubWFwX2F0b21p YyAgICAgPSBhcm1hZGFfZ2VtX2RtYWJ1Zl9ub19rbWFwLAo+Pj4+IC0gICAgICAgLnVubWFwX2F0 b21pYyAgID0gYXJtYWRhX2dlbV9kbWFidWZfbm9fa3VubWFwLAo+Pj4+ICAgICAgICAgIC5tYXAg ICAgICAgICAgICA9IGFybWFkYV9nZW1fZG1hYnVmX25vX2ttYXAsCj4+Pj4gICAgICAgICAgLnVu bWFwICAgICAgICAgID0gYXJtYWRhX2dlbV9kbWFidWZfbm9fa3VubWFwLAo+Pj4+ICAgICAgICAg IC5tbWFwICAgICAgICAgICA9IGFybWFkYV9nZW1fZG1hYnVmX21tYXAsCj4+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJp bWUuYwo+Pj4+IGluZGV4IDRhM2EyMzJmZWE2Ny4uYjI4ZmE4ZjQ0YzhiIDEwMDY0NAo+Pj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUuYwo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fcHJpbWUuYwo+Pj4+IEBAIC00MjYsMzAgKzQyNiw2IEBAIHZvaWQgZHJtX2dlbV9kbWFi dWZfdnVubWFwKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLAo+Pj4+IHZvaWQgKnZhZGRyKQo+Pj4+ ICAgIH0KPj4+PiAgICBFWFBPUlRfU1lNQk9MKGRybV9nZW1fZG1hYnVmX3Z1bm1hcCk7Cj4+Pj4g ICAgLS8qKgo+Pj4+IC0gKiBkcm1fZ2VtX2RtYWJ1Zl9rbWFwX2F0b21pYyAtIG1hcF9hdG9taWMg aW1wbGVtZW50YXRpb24gZm9yIEdFTQo+Pj4+IC0gKgo+Pj4+IC0gKiBOb3QgaW1wbGVtZW50ZWQu IFRoaXMgY2FuIGJlIHVzZWQgYXMgdGhlICZkbWFfYnVmX29wcy5tYXBfYXRvbWljCj4+Pj4gY2Fs bGJhY2suCj4+Pj4gLSAqLwo+Pj4+IC12b2lkICpkcm1fZ2VtX2RtYWJ1Zl9rbWFwX2F0b21pYyhz dHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwKPj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBsb25nIHBhZ2VfbnVtKQo+Pj4+IC17Cj4+Pj4gLSAgICAgICByZXR1cm4g TlVMTDsKPj4+PiAtfQo+Pj4+IC1FWFBPUlRfU1lNQk9MKGRybV9nZW1fZG1hYnVmX2ttYXBfYXRv bWljKTsKPj4+PiAtCj4+Pj4gLS8qKgo+Pj4+IC0gKiBkcm1fZ2VtX2RtYWJ1Zl9rdW5tYXBfYXRv bWljIC0gdW5tYXBfYXRvbWljIGltcGxlbWVudGF0aW9uIGZvciBHRU0KPj4+PiAtICoKPj4+PiAt ICogTm90IGltcGxlbWVudGVkLiBUaGlzIGNhbiBiZSB1c2VkIGFzIHRoZSAmZG1hX2J1Zl9vcHMu dW5tYXBfYXRvbWljCj4+Pj4gY2FsbGJhY2suCj4+Pj4gLSAqLwo+Pj4+IC12b2lkIGRybV9nZW1f ZG1hYnVmX2t1bm1hcF9hdG9taWMoc3RydWN0IGRtYV9idWYgKmRtYV9idWYsCj4+Pj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcGFnZV9udW0sIHZvaWQg KmFkZHIpCj4+Pj4gLXsKPj4+PiAtCj4+Pj4gLX0KPj4+PiAtRVhQT1JUX1NZTUJPTChkcm1fZ2Vt X2RtYWJ1Zl9rdW5tYXBfYXRvbWljKTsKPj4+PiAtCj4+Pj4gICAgLyoqCj4+Pj4gICAgICogZHJt X2dlbV9kbWFidWZfa21hcCAtIG1hcCBpbXBsZW1lbnRhdGlvbiBmb3IgR0VNCj4+Pj4gICAgICoK Pj4+PiBAQCAtNTAyLDkgKzQ3OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZG1hX2J1Zl9vcHMK Pj4+PiBkcm1fZ2VtX3ByaW1lX2RtYWJ1Zl9vcHMgPSAgewo+Pj4+ICAgICAgICAgIC51bm1hcF9k bWFfYnVmID0gZHJtX2dlbV91bm1hcF9kbWFfYnVmLAo+Pj4+ICAgICAgICAgIC5yZWxlYXNlID0g ZHJtX2dlbV9kbWFidWZfcmVsZWFzZSwKPj4+PiAgICAgICAgICAubWFwID0gZHJtX2dlbV9kbWFi dWZfa21hcCwKPj4+PiAtICAgICAgIC5tYXBfYXRvbWljID0gZHJtX2dlbV9kbWFidWZfa21hcF9h dG9taWMsCj4+Pj4gICAgICAgICAgLnVubWFwID0gZHJtX2dlbV9kbWFidWZfa3VubWFwLAo+Pj4+ IC0gICAgICAgLnVubWFwX2F0b21pYyA9IGRybV9nZW1fZG1hYnVmX2t1bm1hcF9hdG9taWMsCj4+ Pj4gICAgICAgICAgLm1tYXAgPSBkcm1fZ2VtX2RtYWJ1Zl9tbWFwLAo+Pj4+ICAgICAgICAgIC52 bWFwID0gZHJtX2dlbV9kbWFidWZfdm1hcCwKPj4+PiAgICAgICAgICAudnVubWFwID0gZHJtX2dl bV9kbWFidWZfdnVubWFwLAo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9kbWFidWYuYwo+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1h YnVmLmMKPj4+PiBpbmRleCA2OWE3YWVjNDllODQuLjgyZTJjYTE3YTQ0MSAxMDA2NDQKPj4+PiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuYwo+Pj4+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1Zi5jCj4+Pj4gQEAgLTExMSwxNSArMTEx LDYgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fZG1hYnVmX3Z1bm1hcChzdHJ1Y3QgZG1hX2J1Zgo+ Pj4+ICpkbWFfYnVmLCB2b2lkICp2YWRkcikKPj4+PiAgICAgICAgICBpOTE1X2dlbV9vYmplY3Rf dW5waW5fbWFwKG9iaik7Cj4+Pj4gICAgfQo+Pj4+ICAgIC1zdGF0aWMgdm9pZCAqaTkxNV9nZW1f ZG1hYnVmX2ttYXBfYXRvbWljKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLAo+Pj4+IHVuc2lnbmVk IGxvbmcgcGFnZV9udW0pCj4+Pj4gLXsKPj4+PiAtICAgICAgIHJldHVybiBOVUxMOwo+Pj4+IC19 Cj4+Pj4gLQo+Pj4+IC1zdGF0aWMgdm9pZCBpOTE1X2dlbV9kbWFidWZfa3VubWFwX2F0b21pYyhz dHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwKPj4+PiB1bnNpZ25lZCBsb25nIHBhZ2VfbnVtLCB2b2lk ICphZGRyKQo+Pj4+IC17Cj4+Pj4gLQo+Pj4+IC19Cj4+Pj4gICAgc3RhdGljIHZvaWQgKmk5MTVf Z2VtX2RtYWJ1Zl9rbWFwKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLCB1bnNpZ25lZAo+Pj4+IGxv bmcgcGFnZV9udW0pCj4+Pj4gICAgewo+Pj4+ICAgICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmogPSBkbWFfYnVmX3RvX29iaihkbWFfYnVmKTsKPj4+PiBAQCAtMjI1LDkgKzIx Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZG1hX2J1Zl9vcHMgaTkxNV9kbWFidWZfb3BzID0g IHsKPj4+PiAgICAgICAgICAudW5tYXBfZG1hX2J1ZiA9IGk5MTVfZ2VtX3VubWFwX2RtYV9idWYs Cj4+Pj4gICAgICAgICAgLnJlbGVhc2UgPSBkcm1fZ2VtX2RtYWJ1Zl9yZWxlYXNlLAo+Pj4+ICAg ICAgICAgIC5tYXAgPSBpOTE1X2dlbV9kbWFidWZfa21hcCwKPj4+PiAtICAgICAgIC5tYXBfYXRv bWljID0gaTkxNV9nZW1fZG1hYnVmX2ttYXBfYXRvbWljLAo+Pj4+ICAgICAgICAgIC51bm1hcCA9 IGk5MTVfZ2VtX2RtYWJ1Zl9rdW5tYXAsCj4+Pj4gLSAgICAgICAudW5tYXBfYXRvbWljID0gaTkx NV9nZW1fZG1hYnVmX2t1bm1hcF9hdG9taWMsCj4+Pj4gICAgICAgICAgLm1tYXAgPSBpOTE1X2dl bV9kbWFidWZfbW1hcCwKPj4+PiAgICAgICAgICAudm1hcCA9IGk5MTVfZ2VtX2RtYWJ1Zl92bWFw LAo+Pj4+ICAgICAgICAgIC52dW5tYXAgPSBpOTE1X2dlbV9kbWFidWZfdnVubWFwLAo+Pj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19kbWFidWYuYwo+ Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZG1hYnVmLmMKPj4+PiBp bmRleCAzMDJmN2QxMDM2MzUuLmY4MWZkYThlYTQ1ZSAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19kbWFidWYuYwo+Pj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2RtYWJ1Zi5jCj4+Pj4gQEAgLTEzMCw5ICsxMzAs NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRtYV9idWZfb3BzIG1vY2tfZG1hYnVmX29wcyA9ICB7 Cj4+Pj4gICAgICAgICAgLnVubWFwX2RtYV9idWYgPSBtb2NrX3VubWFwX2RtYV9idWYsCj4+Pj4g ICAgICAgICAgLnJlbGVhc2UgPSBtb2NrX2RtYWJ1Zl9yZWxlYXNlLAo+Pj4+ICAgICAgICAgIC5t YXAgPSBtb2NrX2RtYWJ1Zl9rbWFwLAo+Pj4+IC0gICAgICAgLm1hcF9hdG9taWMgPSBtb2NrX2Rt YWJ1Zl9rbWFwX2F0b21pYywKPj4+PiAgICAgICAgICAudW5tYXAgPSBtb2NrX2RtYWJ1Zl9rdW5t YXAsCj4+Pj4gLSAgICAgICAudW5tYXBfYXRvbWljID0gbW9ja19kbWFidWZfa3VubWFwX2F0b21p YywKPj4+PiAgICAgICAgICAubW1hcCA9IG1vY2tfZG1hYnVmX21tYXAsCj4+Pj4gICAgICAgICAg LnZtYXAgPSBtb2NrX2RtYWJ1Zl92bWFwLAo+Pj4+ICAgICAgICAgIC52dW5tYXAgPSBtb2NrX2Rt YWJ1Zl92dW5tYXAsCj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29t YXBfZ2VtX2RtYWJ1Zi5jCj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2dlbV9k bWFidWYuYwo+Pj4+IGluZGV4IDhlNDFkNjQ5ZTI0OC4uMWEwNzNmOWIyODM0IDEwMDY0NAo+Pj4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZ2VtX2RtYWJ1Zi5jCj4+Pj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9nZW1fZG1hYnVmLmMKPj4+PiBAQCAtMTQ4 LDggKzE0OCw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZG1hX2J1Zl9vcHMgb21hcF9kbWFidWZf b3BzID0gewo+Pj4+ICAgICAgICAgIC5yZWxlYXNlID0gZHJtX2dlbV9kbWFidWZfcmVsZWFzZSwK Pj4+PiAgICAgICAgICAuYmVnaW5fY3B1X2FjY2VzcyA9IG9tYXBfZ2VtX2RtYWJ1Zl9iZWdpbl9j cHVfYWNjZXNzLAo+Pj4+ICAgICAgICAgIC5lbmRfY3B1X2FjY2VzcyA9IG9tYXBfZ2VtX2RtYWJ1 Zl9lbmRfY3B1X2FjY2VzcywKPj4+PiAtICAgICAgIC5tYXBfYXRvbWljID0gb21hcF9nZW1fZG1h YnVmX2ttYXBfYXRvbWljLAo+Pj4+IC0gICAgICAgLnVubWFwX2F0b21pYyA9IG9tYXBfZ2VtX2Rt YWJ1Zl9rdW5tYXBfYXRvbWljLAo+Pj4+ICAgICAgICAgIC5tYXAgPSBvbWFwX2dlbV9kbWFidWZf a21hcCwKPj4+PiAgICAgICAgICAudW5tYXAgPSBvbWFwX2dlbV9kbWFidWZfa3VubWFwLAo+Pj4+ ICAgICAgICAgIC5tbWFwID0gb21hcF9nZW1fZG1hYnVmX21tYXAsCj4+Pj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9nZW0u Ywo+Pj4+IGluZGV4IDhiMGI0ZmY2NGJiNC4uZDc2NjE3MDJjMTFjIDEwMDY0NAo+Pj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9nZW0uYwo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS90 ZWdyYS9nZW0uYwo+Pj4+IEBAIC01OTYsMTggKzU5Niw2IEBAIHN0YXRpYyBpbnQgdGVncmFfZ2Vt X3ByaW1lX2VuZF9jcHVfYWNjZXNzKHN0cnVjdAo+Pj4+IGRtYV9idWYgKmJ1ZiwKPj4+PiAgICAg ICAgICByZXR1cm4gMDsKPj4+PiAgICB9Cj4+Pj4gICAgLXN0YXRpYyB2b2lkICp0ZWdyYV9nZW1f cHJpbWVfa21hcF9hdG9taWMoc3RydWN0IGRtYV9idWYgKmJ1ZiwKPj4+PiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcGFnZSkKPj4+PiAtewo+ Pj4+IC0gICAgICAgcmV0dXJuIE5VTEw7Cj4+Pj4gLX0KPj4+PiAtCj4+Pj4gLXN0YXRpYyB2b2lk IHRlZ3JhX2dlbV9wcmltZV9rdW5tYXBfYXRvbWljKHN0cnVjdCBkbWFfYnVmICpidWYsCj4+Pj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBw YWdlLAo+Pj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQg KmFkZHIpCj4+Pj4gLXsKPj4+PiAtfQo+Pj4+IC0KPj4+PiAgICBzdGF0aWMgdm9pZCAqdGVncmFf Z2VtX3ByaW1lX2ttYXAoc3RydWN0IGRtYV9idWYgKmJ1ZiwgdW5zaWduZWQgbG9uZwo+Pj4+IHBh Z2UpCj4+Pj4gICAgewo+Pj4+ICAgICAgICAgIHJldHVybiBOVUxMOwo+Pj4+IEBAIC02NDgsOCAr NjM2LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkbWFfYnVmX29wcwo+Pj4+IHRlZ3JhX2dlbV9w cmltZV9kbWFidWZfb3BzID0gewo+Pj4+ICAgICAgICAgIC5yZWxlYXNlID0gdGVncmFfZ2VtX3By aW1lX3JlbGVhc2UsCj4+Pj4gICAgICAgICAgLmJlZ2luX2NwdV9hY2Nlc3MgPSB0ZWdyYV9nZW1f cHJpbWVfYmVnaW5fY3B1X2FjY2VzcywKPj4+PiAgICAgICAgICAuZW5kX2NwdV9hY2Nlc3MgPSB0 ZWdyYV9nZW1fcHJpbWVfZW5kX2NwdV9hY2Nlc3MsCj4+Pj4gLSAgICAgICAubWFwX2F0b21pYyA9 IHRlZ3JhX2dlbV9wcmltZV9rbWFwX2F0b21pYywKPj4+PiAtICAgICAgIC51bm1hcF9hdG9taWMg PSB0ZWdyYV9nZW1fcHJpbWVfa3VubWFwX2F0b21pYywKPj4+PiAgICAgICAgICAubWFwID0gdGVn cmFfZ2VtX3ByaW1lX2ttYXAsCj4+Pj4gICAgICAgICAgLnVubWFwID0gdGVncmFfZ2VtX3ByaW1l X2t1bm1hcCwKPj4+PiAgICAgICAgICAubW1hcCA9IHRlZ3JhX2dlbV9wcmltZV9tbWFwLAo+Pj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9kbWFidWYuYwo+Pj4+IGIvZHJp dmVycy9ncHUvZHJtL3VkbC91ZGxfZG1hYnVmLmMKPj4+PiBpbmRleCA1ZmRjOGJkYzIwMjYuLmFl NzIyNWRlZGMzMCAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9kbWFi dWYuYwo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS91ZGwvdWRsX2RtYWJ1Zi5jCj4+Pj4gQEAg LTE1NiwyNyArMTU2LDEyIEBAIHN0YXRpYyB2b2lkICp1ZGxfZG1hYnVmX2ttYXAoc3RydWN0IGRt YV9idWYKPj4+PiAqZG1hX2J1ZiwgdW5zaWduZWQgbG9uZyBwYWdlX251bSkKPj4+PiAgICAgICAg ICByZXR1cm4gTlVMTDsKPj4+PiAgICB9Cj4+Pj4gICAgLXN0YXRpYyB2b2lkICp1ZGxfZG1hYnVm X2ttYXBfYXRvbWljKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLAo+Pj4+IC0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcGFnZV9udW0pCj4+Pj4gLXsKPj4+ PiAtICAgICAgIC8qIFRPRE8gKi8KPj4+PiAtCj4+Pj4gLSAgICAgICByZXR1cm4gTlVMTDsKPj4+ PiAtfQo+Pj4+IC0KPj4+PiAgICBzdGF0aWMgdm9pZCB1ZGxfZG1hYnVmX2t1bm1hcChzdHJ1Y3Qg ZG1hX2J1ZiAqZG1hX2J1ZiwKPj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgbG9uZyBwYWdlX251bSwgdm9pZCAqYWRkcikKPj4+PiAgICB7Cj4+Pj4gICAgICAgICAg LyogVE9ETyAqLwo+Pj4+ICAgIH0KPj4+PiAgICAtc3RhdGljIHZvaWQgdWRsX2RtYWJ1Zl9rdW5t YXBfYXRvbWljKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLAo+Pj4+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBhZ2VfbnVtLAo+Pj4+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphZGRyKQo+Pj4+IC17Cj4+Pj4gLSAg ICAgICAvKiBUT0RPICovCj4+Pj4gLX0KPj4+PiAtCj4+Pj4gICAgc3RhdGljIGludCB1ZGxfZG1h YnVmX21tYXAoc3RydWN0IGRtYV9idWYgKmRtYV9idWYsCj4+Pj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQo+Pj4+ICAgIHsKPj4+PiBAQCAt MTkxLDkgKzE3Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZG1hX2J1Zl9vcHMgdWRsX2RtYWJ1 Zl9vcHMgPSB7Cj4+Pj4gICAgICAgICAgLm1hcF9kbWFfYnVmICAgICAgICAgICAgPSB1ZGxfbWFw X2RtYV9idWYsCj4+Pj4gICAgICAgICAgLnVubWFwX2RtYV9idWYgICAgICAgICAgPSB1ZGxfdW5t YXBfZG1hX2J1ZiwKPj4+PiAgICAgICAgICAubWFwICAgICAgICAgICAgICAgICAgICA9IHVkbF9k bWFidWZfa21hcCwKPj4+PiAtICAgICAgIC5tYXBfYXRvbWljICAgICAgICAgICAgID0gdWRsX2Rt YWJ1Zl9rbWFwX2F0b21pYywKPj4+PiAgICAgICAgICAudW5tYXAgICAgICAgICAgICAgICAgICA9 IHVkbF9kbWFidWZfa3VubWFwLAo+Pj4+IC0gICAgICAgLnVubWFwX2F0b21pYyAgICAgICAgICAg PSB1ZGxfZG1hYnVmX2t1bm1hcF9hdG9taWMsCj4+Pj4gICAgICAgICAgLm1tYXAgICAgICAgICAg ICAgICAgICAgPSB1ZGxfZG1hYnVmX21tYXAsCj4+Pj4gICAgICAgICAgLnJlbGVhc2UgICAgICAg ICAgICAgICAgPSBkcm1fZ2VtX2RtYWJ1Zl9yZWxlYXNlLAo+Pj4+ICAgIH07Cj4+Pj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3ByaW1lLmMKPj4+PiBiL2RyaXZl cnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3ByaW1lLmMKPj4+PiBpbmRleCBmYmZmYjM3Y2NmNDIu LjM3M2JjNmRhMmY4NCAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Zt d2dmeF9wcmltZS5jCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcHJp bWUuYwo+Pj4+IEBAIC03MSwxNyArNzEsNiBAQCBzdGF0aWMgdm9pZCB2bXdfcHJpbWVfZG1hYnVm X3Z1bm1hcChzdHJ1Y3QgZG1hX2J1Zgo+Pj4+ICpkbWFfYnVmLCB2b2lkICp2YWRkcikKPj4+PiAg ICB7Cj4+Pj4gICAgfQo+Pj4+ICAgIC1zdGF0aWMgdm9pZCAqdm13X3ByaW1lX2RtYWJ1Zl9rbWFw X2F0b21pYyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwKPj4+PiAtICAgICAgICAgICAgICAgdW5z aWduZWQgbG9uZyBwYWdlX251bSkKPj4+PiAtewo+Pj4+IC0gICAgICAgcmV0dXJuIE5VTEw7Cj4+ Pj4gLX0KPj4+PiAtCj4+Pj4gLXN0YXRpYyB2b2lkIHZtd19wcmltZV9kbWFidWZfa3VubWFwX2F0 b21pYyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwKPj4+PiAtICAgICAgICAgICAgICAgdW5zaWdu ZWQgbG9uZyBwYWdlX251bSwgdm9pZCAqYWRkcikKPj4+PiAtewo+Pj4+IC0KPj4+PiAtfQo+Pj4+ ICAgIHN0YXRpYyB2b2lkICp2bXdfcHJpbWVfZG1hYnVmX2ttYXAoc3RydWN0IGRtYV9idWYgKmRt YV9idWYsCj4+Pj4gICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBhZ2VfbnVtKQo+Pj4+ ICAgIHsKPj4+PiBAQCAtMTA4LDkgKzk3LDcgQEAgY29uc3Qgc3RydWN0IGRtYV9idWZfb3BzIHZt d19wcmltZV9kbWFidWZfb3BzID0gIHsKPj4+PiAgICAgICAgICAudW5tYXBfZG1hX2J1ZiA9IHZt d19wcmltZV91bm1hcF9kbWFfYnVmLAo+Pj4+ICAgICAgICAgIC5yZWxlYXNlID0gTlVMTCwKPj4+ PiAgICAgICAgICAubWFwID0gdm13X3ByaW1lX2RtYWJ1Zl9rbWFwLAo+Pj4+IC0gICAgICAgLm1h cF9hdG9taWMgPSB2bXdfcHJpbWVfZG1hYnVmX2ttYXBfYXRvbWljLAo+Pj4+ICAgICAgICAgIC51 bm1hcCA9IHZtd19wcmltZV9kbWFidWZfa3VubWFwLAo+Pj4+IC0gICAgICAgLnVubWFwX2F0b21p YyA9IHZtd19wcmltZV9kbWFidWZfa3VubWFwX2F0b21pYywKPj4+PiAgICAgICAgICAubW1hcCA9 IHZtd19wcmltZV9kbWFidWZfbW1hcCwKPj4+PiAgICAgICAgICAudm1hcCA9IHZtd19wcmltZV9k bWFidWZfdm1hcCwKPj4+PiAgICAgICAgICAudnVubWFwID0gdm13X3ByaW1lX2RtYWJ1Zl92dW5t YXAsCj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi92aWRl b2J1ZjItZG1hLWNvbnRpZy5jCj4+Pj4gYi9kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIv dmlkZW9idWYyLWRtYS1jb250aWcuYwo+Pj4+IGluZGV4IDEyZDAwNzJjNTJjMi4uYWZmMGFiN2Jm ODNkIDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi92aWRl b2J1ZjItZG1hLWNvbnRpZy5jCj4+Pj4gKysrIGIvZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9i dWYyL3ZpZGVvYnVmMi1kbWEtY29udGlnLmMKPj4+PiBAQCAtMzU4LDcgKzM1OCw2IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgZG1hX2J1Zl9vcHMgdmIyX2RjX2RtYWJ1Zl9vcHMgPSB7Cj4+Pj4gICAg ICAgICAgLm1hcF9kbWFfYnVmID0gdmIyX2RjX2RtYWJ1Zl9vcHNfbWFwLAo+Pj4+ICAgICAgICAg IC51bm1hcF9kbWFfYnVmID0gdmIyX2RjX2RtYWJ1Zl9vcHNfdW5tYXAsCj4+Pj4gICAgICAgICAg Lm1hcCA9IHZiMl9kY19kbWFidWZfb3BzX2ttYXAsCj4+Pj4gLSAgICAgICAubWFwX2F0b21pYyA9 IHZiMl9kY19kbWFidWZfb3BzX2ttYXAsCj4+Pj4gICAgICAgICAgLnZtYXAgPSB2YjJfZGNfZG1h YnVmX29wc192bWFwLAo+Pj4+ICAgICAgICAgIC5tbWFwID0gdmIyX2RjX2RtYWJ1Zl9vcHNfbW1h cCwKPj4+PiAgICAgICAgICAucmVsZWFzZSA9IHZiMl9kY19kbWFidWZfb3BzX3JlbGVhc2UsCj4+ Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi92aWRlb2J1ZjIt ZG1hLXNnLmMKPj4+PiBiL2RyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi92aWRlb2J1ZjIt ZG1hLXNnLmMKPj4+PiBpbmRleCBjZjk0NzY1ZTU5M2YuLjAxNWU3MzcwOTVjZCAxMDA2NDQKPj4+ PiAtLS0gYS9kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRlb2J1ZjIvdmlkZW9idWYyLWRtYS1zZy5j Cj4+Pj4gKysrIGIvZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL3ZpZGVvYnVmMi1kbWEt c2cuYwo+Pj4+IEBAIC01MDcsNyArNTA3LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkbWFfYnVm X29wcyB2YjJfZG1hX3NnX2RtYWJ1Zl9vcHMKPj4+PiA9IHsKPj4+PiAgICAgICAgICAubWFwX2Rt YV9idWYgPSB2YjJfZG1hX3NnX2RtYWJ1Zl9vcHNfbWFwLAo+Pj4+ICAgICAgICAgIC51bm1hcF9k bWFfYnVmID0gdmIyX2RtYV9zZ19kbWFidWZfb3BzX3VubWFwLAo+Pj4+ICAgICAgICAgIC5tYXAg PSB2YjJfZG1hX3NnX2RtYWJ1Zl9vcHNfa21hcCwKPj4+PiAtICAgICAgIC5tYXBfYXRvbWljID0g dmIyX2RtYV9zZ19kbWFidWZfb3BzX2ttYXAsCj4+Pj4gICAgICAgICAgLnZtYXAgPSB2YjJfZG1h X3NnX2RtYWJ1Zl9vcHNfdm1hcCwKPj4+PiAgICAgICAgICAubW1hcCA9IHZiMl9kbWFfc2dfZG1h YnVmX29wc19tbWFwLAo+Pj4+ICAgICAgICAgIC5yZWxlYXNlID0gdmIyX2RtYV9zZ19kbWFidWZf b3BzX3JlbGVhc2UsCj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVv YnVmMi92aWRlb2J1ZjItdm1hbGxvYy5jCj4+Pj4gYi9kcml2ZXJzL21lZGlhL2NvbW1vbi92aWRl b2J1ZjIvdmlkZW9idWYyLXZtYWxsb2MuYwo+Pj4+IGluZGV4IDI5OGZmYjllY2RhZS4uNDY3YTQw MDUxNjRiIDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi92 aWRlb2J1ZjItdm1hbGxvYy5jCj4+Pj4gKysrIGIvZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9i dWYyL3ZpZGVvYnVmMi12bWFsbG9jLmMKPj4+PiBAQCAtMzQ2LDcgKzM0Niw2IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgZG1hX2J1Zl9vcHMKPj4+PiB2YjJfdm1hbGxvY19kbWFidWZfb3BzID0gewo+ Pj4+ICAgICAgICAgIC5tYXBfZG1hX2J1ZiA9IHZiMl92bWFsbG9jX2RtYWJ1Zl9vcHNfbWFwLAo+ Pj4+ICAgICAgICAgIC51bm1hcF9kbWFfYnVmID0gdmIyX3ZtYWxsb2NfZG1hYnVmX29wc191bm1h cCwKPj4+PiAgICAgICAgICAubWFwID0gdmIyX3ZtYWxsb2NfZG1hYnVmX29wc19rbWFwLAo+Pj4+ IC0gICAgICAgLm1hcF9hdG9taWMgPSB2YjJfdm1hbGxvY19kbWFidWZfb3BzX2ttYXAsCj4+Pj4g ICAgICAgICAgLnZtYXAgPSB2YjJfdm1hbGxvY19kbWFidWZfb3BzX3ZtYXAsCj4+Pj4gICAgICAg ICAgLm1tYXAgPSB2YjJfdm1hbGxvY19kbWFidWZfb3BzX21tYXAsCj4+Pj4gICAgICAgICAgLnJl bGVhc2UgPSB2YjJfdm1hbGxvY19kbWFidWZfb3BzX3JlbGVhc2UsCj4+Pj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9pb24uYwo+Pj4+IGIvZHJpdmVycy9zdGFnaW5n L2FuZHJvaWQvaW9uL2lvbi5jCj4+Pj4gaW5kZXggNTdlMGQ4MDM1YjJlLi5hNDYyMTlmZjVlMTYg MTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvaW9uL2lvbi5jCj4+Pj4g KysrIGIvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvaW9uL2lvbi5jCj4+Pj4gQEAgLTM3NCw4ICsz NzQsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRtYV9idWZfb3BzIGRtYV9idWZfb3BzID0gewo+ Pj4+ICAgICAgICAgIC5kZXRhY2ggPSBpb25fZG1hX2J1Zl9kZXRhdGNoLAo+Pj4+ICAgICAgICAg IC5iZWdpbl9jcHVfYWNjZXNzID0gaW9uX2RtYV9idWZfYmVnaW5fY3B1X2FjY2VzcywKPj4+PiAg ICAgICAgICAuZW5kX2NwdV9hY2Nlc3MgPSBpb25fZG1hX2J1Zl9lbmRfY3B1X2FjY2VzcywKPj4+ PiAtICAgICAgIC5tYXBfYXRvbWljID0gaW9uX2RtYV9idWZfa21hcCwKPj4+PiAtICAgICAgIC51 bm1hcF9hdG9taWMgPSBpb25fZG1hX2J1Zl9rdW5tYXAsCj4+Pj4gICAgICAgICAgLm1hcCA9IGlv bl9kbWFfYnVmX2ttYXAsCj4+Pj4gICAgICAgICAgLnVubWFwID0gaW9uX2RtYV9idWZfa3VubWFw LAo+Pj4+ICAgIH07Cj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGVlL3RlZV9zaG0uYyBiL2Ry aXZlcnMvdGVlL3RlZV9zaG0uYwo+Pj4+IGluZGV4IDU1Njk2MGExYmFiMy4uZGY0YTE1NTNiNzhi IDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvdGVlL3RlZV9zaG0uYwo+Pj4+ICsrKyBiL2RyaXZl cnMvdGVlL3RlZV9zaG0uYwo+Pj4+IEBAIC04MCwxMSArODAsNiBAQCBzdGF0aWMgdm9pZCB0ZWVf c2htX29wX3JlbGVhc2Uoc3RydWN0IGRtYV9idWYgKmRtYWJ1ZikKPj4+PiAgICAgICAgICB0ZWVf c2htX3JlbGVhc2Uoc2htKTsKPj4+PiAgICB9Cj4+Pj4gICAgLXN0YXRpYyB2b2lkICp0ZWVfc2ht X29wX21hcF9hdG9taWMoc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwgdW5zaWduZWQKPj4+PiBsb25n IHBnbnVtKQo+Pj4+IC17Cj4+Pj4gLSAgICAgICByZXR1cm4gTlVMTDsKPj4+PiAtfQo+Pj4+IC0K Pj4+PiAgICBzdGF0aWMgdm9pZCAqdGVlX3NobV9vcF9tYXAoc3RydWN0IGRtYV9idWYgKmRtYWJ1 ZiwgdW5zaWduZWQgbG9uZwo+Pj4+IHBnbnVtKQo+Pj4+ICAgIHsKPj4+PiAgICAgICAgICByZXR1 cm4gTlVMTDsKPj4+PiBAQCAtMTA3LDcgKzEwMiw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZG1h X2J1Zl9vcHMgdGVlX3NobV9kbWFfYnVmX29wcyA9Cj4+Pj4gewo+Pj4+ICAgICAgICAgIC5tYXBf ZG1hX2J1ZiA9IHRlZV9zaG1fb3BfbWFwX2RtYV9idWYsCj4+Pj4gICAgICAgICAgLnVubWFwX2Rt YV9idWYgPSB0ZWVfc2htX29wX3VubWFwX2RtYV9idWYsCj4+Pj4gICAgICAgICAgLnJlbGVhc2Ug PSB0ZWVfc2htX29wX3JlbGVhc2UsCj4+Pj4gLSAgICAgICAubWFwX2F0b21pYyA9IHRlZV9zaG1f b3BfbWFwX2F0b21pYywKPj4+PiAgICAgICAgICAubWFwID0gdGVlX3NobV9vcF9tYXAsCj4+Pj4g ICAgICAgICAgLm1tYXAgPSB0ZWVfc2htX29wX21tYXAsCj4+Pj4gICAgfTsKPj4+PiBkaWZmIC0t Z2l0IGEvaW5jbHVkZS9kcm0vZHJtX3ByaW1lLmggYi9pbmNsdWRlL2RybS9kcm1fcHJpbWUuaAo+ Pj4+IGluZGV4IGVmMzM4MTUxY2VhOC4uZDcxNmQ2NTNiMDk2IDEwMDY0NAo+Pj4+IC0tLSBhL2lu Y2x1ZGUvZHJtL2RybV9wcmltZS5oCj4+Pj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX3ByaW1lLmgK Pj4+PiBAQCAtOTMsMTAgKzkzLDYgQEAgdm9pZCBkcm1fZ2VtX3VubWFwX2RtYV9idWYoc3RydWN0 IGRtYV9idWZfYXR0YWNobWVudAo+Pj4+ICphdHRhY2gsCj4+Pj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcik7Cj4+Pj4gICAgdm9pZCAqZHJt X2dlbV9kbWFidWZfdm1hcChzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1Zik7Cj4+Pj4gICAgdm9pZCBk cm1fZ2VtX2RtYWJ1Zl92dW5tYXAoc3RydWN0IGRtYV9idWYgKmRtYV9idWYsIHZvaWQgKnZhZGRy KTsKPj4+PiAtdm9pZCAqZHJtX2dlbV9kbWFidWZfa21hcF9hdG9taWMoc3RydWN0IGRtYV9idWYg KmRtYV9idWYsCj4+Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg bG9uZyBwYWdlX251bSk7Cj4+Pj4gLXZvaWQgZHJtX2dlbV9kbWFidWZfa3VubWFwX2F0b21pYyhz dHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwKPj4+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgbG9uZyBwYWdlX251bSwgdm9pZCAqYWRkcik7Cj4+Pj4gICAgdm9pZCAq ZHJtX2dlbV9kbWFidWZfa21hcChzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwgdW5zaWduZWQgbG9u Zwo+Pj4+IHBhZ2VfbnVtKTsKPj4+PiAgICB2b2lkIGRybV9nZW1fZG1hYnVmX2t1bm1hcChzdHJ1 Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwgdW5zaWduZWQgbG9uZwo+Pj4+IHBhZ2VfbnVtLAo+Pj4+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphZGRyKTsKPj4+PiBkaWZmIC0tZ2l0IGEv aW5jbHVkZS9saW51eC9kbWEtYnVmLmggYi9pbmNsdWRlL2xpbnV4L2RtYS1idWYuaAo+Pj4+IGlu ZGV4IDM0NmNhZjc3OTM3Zi4uZDE3Y2FkZDc2ODAyIDEwMDY0NAo+Pj4+IC0tLSBhL2luY2x1ZGUv bGludXgvZG1hLWJ1Zi5oCj4+Pj4gKysrIGIvaW5jbHVkZS9saW51eC9kbWEtYnVmLmgKPj4+PiBA QCAtMjA1LDggKzIwNSw2IEBAIHN0cnVjdCBkbWFfYnVmX29wcyB7Cj4+Pj4gICAgICAgICAgICog dG8gYmUgcmVzdGFydGVkLgo+Pj4+ICAgICAgICAgICAqLwo+Pj4+ICAgICAgICAgIGludCAoKmVu ZF9jcHVfYWNjZXNzKShzdHJ1Y3QgZG1hX2J1ZiAqLCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbik7 Cj4+Pj4gLSAgICAgICB2b2lkICooKm1hcF9hdG9taWMpKHN0cnVjdCBkbWFfYnVmICosIHVuc2ln bmVkIGxvbmcpOwo+Pj4+IC0gICAgICAgdm9pZCAoKnVubWFwX2F0b21pYykoc3RydWN0IGRtYV9i dWYgKiwgdW5zaWduZWQgbG9uZywgdm9pZCAqKTsKPj4+PiAgICAgICAgICB2b2lkICooKm1hcCko c3RydWN0IGRtYV9idWYgKiwgdW5zaWduZWQgbG9uZyk7Cj4+Pj4gICAgICAgICAgdm9pZCAoKnVu bWFwKShzdHJ1Y3QgZG1hX2J1ZiAqLCB1bnNpZ25lZCBsb25nLCB2b2lkICopOwo+Pj4+ICAgIEBA IC0zOTQsOCArMzkyLDYgQEAgaW50IGRtYV9idWZfYmVnaW5fY3B1X2FjY2VzcyhzdHJ1Y3QgZG1h X2J1Zgo+Pj4+ICpkbWFfYnVmLAo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVu dW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcik7Cj4+Pj4gICAgaW50IGRtYV9idWZfZW5kX2NwdV9h Y2Nlc3Moc3RydWN0IGRtYV9idWYgKmRtYV9idWYsCj4+Pj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcik7Cj4+Pj4gLXZvaWQgKmRtYV9idWZf a21hcF9hdG9taWMoc3RydWN0IGRtYV9idWYgKiwgdW5zaWduZWQgbG9uZyk7Cj4+Pj4gLXZvaWQg ZG1hX2J1Zl9rdW5tYXBfYXRvbWljKHN0cnVjdCBkbWFfYnVmICosIHVuc2lnbmVkIGxvbmcsIHZv aWQgKik7Cj4+Pj4gICAgdm9pZCAqZG1hX2J1Zl9rbWFwKHN0cnVjdCBkbWFfYnVmICosIHVuc2ln bmVkIGxvbmcpOwo+Pj4+ICAgIHZvaWQgZG1hX2J1Zl9rdW5tYXAoc3RydWN0IGRtYV9idWYgKiwg dW5zaWduZWQgbG9uZywgdm9pZCAqKTsKPj4+Pgo+Pj4+IC0tCj4+Pj4gMi4xNC4xCj4+Pj4KPj4+ PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+Pj4+IGRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKPj4+PiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cj4+Pj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt ZGV2ZWwKPj4KPgo+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK