From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ed1-x52d.google.com (mail-ed1-x52d.google.com [IPv6:2a00:1450:4864:20::52d]) by mail.toke.dk (Postfix) with ESMTPS id 307889DAC86 for ; Sun, 8 Jan 2023 08:38:12 +0100 (CET) Authentication-Results: mail.toke.dk; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=W/1355s7 Received: by mail-ed1-x52d.google.com with SMTP id v30so8048292edb.9 for ; Sat, 07 Jan 2023 23:38:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=17E7SNkC4+xZQbZC8pwtldVjcnZXevjU/YksNvVV8SQ=; b=W/1355s7epCpttI3iuYmJ+kaBKqzhwjjsFgST5cszWIq1P6aj7XSYtR2dOtmtoX23V gYrQpmm6DPjMec4YoQPfy+k9Ij/zqIDQiJWGAV3uJqlJKOFe5tH3wT1Ds0oT/pdYAJK7 Vo0B+yX2r+ul1w6nLoBy+LqZhTLq3+QWpL1vAF+fKlFx9ed2iG+jdCdXnm7nCcvreOmG m6h4K/2+Y1FQZ9kri1qGiq2MYVQJc6co9WC8UCqbj3gSm4MDV2ysI3NiMlU0KyBsbA5A O52ya2KS5oqbF0VHw12sqQANmMJ01RDSmveNqvrVmChXSRXFJIr0argxkjwl5FnAH6Gx 5e7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=17E7SNkC4+xZQbZC8pwtldVjcnZXevjU/YksNvVV8SQ=; b=wFWZR0/3XaMPBlKwkU3F0rDZuQA82x+R8ZNZsPpTE755EaqrdkzZCYYPDFI07YGoYz 7dnC0wIqHqna+C6ZqcccFDX2KqgL/ujBRWb1Ok3RP5cnHANzxhEzE5C1uzwR+MuMqOVG iQzH/HIqDRcpTabuYKeC6KF9YkhAYReQzvi2vwpFhX5rOdBpI3ugs6mktQ5Fzh3kADI0 dfw1neja0ojpVA2hPv4+XqbaUjDVK1C684TVVXQw5Fy0rCL3cb7zvcm+vMBYH3ZXKM7y 0qafqj+UFqMo5l9Rvh6gc9rdYHkTwjmGmnta5IaANJeAQISz+VCZ2482bP3VqCD7Kr7h 4KdA== X-Gm-Message-State: AFqh2ko9Pva/qxJBNRAc+GTyQQkHuZRcUBNZzm6GxmTDEFPVtEbe1MH9 noy1J0uqWa+jAT6asm9NLdE= X-Google-Smtp-Source: AMrXdXtGt7z3a0YlHtF+JxuvS/frNgN0oTnn0vyqeOIzf1jMz/hWAkfv00loglQ5JkNiQG1vPnTDWw== X-Received: by 2002:a05:6402:1f89:b0:47b:16c7:492c with SMTP id c9-20020a0564021f8900b0047b16c7492cmr59339787edc.25.1673163490648; Sat, 07 Jan 2023 23:38:10 -0800 (PST) Received: from [192.168.0.105] ([77.126.9.245]) by smtp.gmail.com with ESMTPSA id o7-20020aa7d3c7000000b0045bd14e241csm2235190edr.76.2023.01.07.23.38.07 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 07 Jan 2023 23:38:10 -0800 (PST) Message-ID: Date: Sun, 8 Jan 2023 09:38:07 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Content-Language: en-US To: Stanislav Fomichev , bpf@vger.kernel.org References: <20230104215949.529093-1-sdf@google.com> <20230104215949.529093-16-sdf@google.com> From: Tariq Toukan In-Reply-To: <20230104215949.529093-16-sdf@google.com> Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: base64 Message-ID-Hash: 2F4FIM56PLWC2FDVUHMF5G5I23PSI7ML X-Message-ID-Hash: 2F4FIM56PLWC2FDVUHMF5G5I23PSI7ML X-MailFrom: ttoukan.linux@gmail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, martin.lau@linux.dev, song@kernel.org, yhs@fb.com, john.fastabend@gmail.com, kpsingh@kernel.org, haoluo@google.com, jolsa@kernel.org, =?UTF-8?Q?Toke_H=c3=b8iland-J=c3=b8rgensen?= , Saeed Mahameed , David Ahern , Jakub Kicinski , Willem de Bruijn , Jesper Dangaard Brouer , Anatoly Burakov , Alexander Lobakin , Magnus Karlsson , Maryam Tahhan , xdp-hints@xdp-project.net, netdev@vger.kernel.org X-Mailman-Version: 3.3.7 Precedence: list Subject: [xdp-hints] Re: [PATCH bpf-next v6 15/17] net/mlx5e: Introduce wrapper for xdp_buff List-Id: XDP hardware hints design discussion Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: DQoNCk9uIDA0LzAxLzIwMjMgMjM6NTksIFN0YW5pc2xhdiBGb21pY2hldiB3cm90ZToNCj4gRnJv bTogVG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2VuIDx0b2tlQHJlZGhhdC5jb20+DQo+IA0KPiBQcmVw YXJhdGlvbiBmb3IgaW1wbGVtZW50aW5nIEhXIG1ldGFkYXRhIGtmdW5jcy4gTm8gZnVuY3Rpb25h bCBjaGFuZ2UuDQo+IA0KPiBDYzogU2FlZWQgTWFoYW1lZWQgPHNhZWVkbUBudmlkaWEuY29tPg0K PiBDYzogSm9obiBGYXN0YWJlbmQgPGpvaG4uZmFzdGFiZW5kQGdtYWlsLmNvbT4NCj4gQ2M6IERh dmlkIEFoZXJuIDxkc2FoZXJuQGdtYWlsLmNvbT4NCj4gQ2M6IE1hcnRpbiBLYUZhaSBMYXUgPG1h cnRpbi5sYXVAbGludXguZGV2Pg0KPiBDYzogSmFrdWIgS2ljaW5za2kgPGt1YmFAa2VybmVsLm9y Zz4NCj4gQ2M6IFdpbGxlbSBkZSBCcnVpam4gPHdpbGxlbWJAZ29vZ2xlLmNvbT4NCj4gQ2M6IEpl c3BlciBEYW5nYWFyZCBCcm91ZXIgPGJyb3VlckByZWRoYXQuY29tPg0KPiBDYzogQW5hdG9seSBC dXJha292IDxhbmF0b2x5LmJ1cmFrb3ZAaW50ZWwuY29tPg0KPiBDYzogQWxleGFuZGVyIExvYmFr aW4gPGFsZXhhbmRyLmxvYmFraW5AaW50ZWwuY29tPg0KPiBDYzogTWFnbnVzIEthcmxzc29uIDxt YWdudXMua2FybHNzb25AZ21haWwuY29tPg0KPiBDYzogTWFyeWFtIFRhaGhhbiA8bXRhaGhhbkBy ZWRoYXQuY29tPg0KPiBDYzogeGRwLWhpbnRzQHhkcC1wcm9qZWN0Lm5ldA0KPiBDYzogbmV0ZGV2 QHZnZXIua2VybmVsLm9yZw0KPiBTaWduZWQtb2ZmLWJ5OiBUb2tlIEjDuGlsYW5kLUrDuHJnZW5z ZW4gPHRva2VAcmVkaGF0LmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogU3RhbmlzbGF2IEZvbWljaGV2 IDxzZGZAZ29vZ2xlLmNvbT4NCj4gLS0tDQoNClRoYW5rcyBmb3IgeW91IHBhdGNoLg0KRmluZCAx IG1pbm9yIGNvbW1lbnQgYmVsb3cuDQoNCj4gICBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5v eC9tbHg1L2NvcmUvZW4uaCAgfCAgMSArDQo+ICAgLi4uL25ldC9ldGhlcm5ldC9tZWxsYW5veC9t bHg1L2NvcmUvZW4veGRwLmMgIHwgIDMgKy0NCj4gICAuLi4vbmV0L2V0aGVybmV0L21lbGxhbm94 L21seDUvY29yZS9lbi94ZHAuaCAgfCAgNiArLQ0KPiAgIC4uLi9ldGhlcm5ldC9tZWxsYW5veC9t bHg1L2NvcmUvZW4veHNrL3J4LmMgICB8IDI1ICsrKysrLS0tLQ0KPiAgIC4uLi9uZXQvZXRoZXJu ZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3J4LmMgICB8IDU2ICsrKysrKysrKy0tLS0tLS0tLS0N Cj4gICA1IGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKyksIDQyIGRlbGV0aW9ucygtKQ0K PiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29y ZS9lbi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgNCj4g aW5kZXggMmQ3N2ZiOGE4YTAxLi5hZjY2Mzk3OGQxYjQgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMv bmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oDQo+ICsrKyBiL2RyaXZlcnMvbmV0 L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oDQo+IEBAIC00NjksNiArNDY5LDcgQEAg c3RydWN0IG1seDVlX3R4cXNxIHsNCj4gICB1bmlvbiBtbHg1ZV9hbGxvY191bml0IHsNCj4gICAJ c3RydWN0IHBhZ2UgKnBhZ2U7DQo+ICAgCXN0cnVjdCB4ZHBfYnVmZiAqeHNrOw0KPiArCXN0cnVj dCBtbHg1ZV94ZHBfYnVmZiAqbXhidWY7DQo+ICAgfTsNCj4gICANCj4gICAvKiBYRFAgcGFja2V0 cyBjYW4gYmUgdHJhbnNtaXR0ZWQgaW4gZGlmZmVyZW50IHdheXMuIE9uIGNvbXBsZXRpb24sIHdl IG5lZWQgdG8NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21s eDUvY29yZS9lbi94ZHAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29y ZS9lbi94ZHAuYw0KPiBpbmRleCAyMDUwN2VmMmY5NTYuLjMxYmI2ODA2YmY1ZCAxMDA2NDQNCj4g LS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jDQo+ ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuYw0K PiBAQCAtMTU4LDggKzE1OCw5IEBAIG1seDVlX3htaXRfeGRwX2J1ZmYoc3RydWN0IG1seDVlX3hk cHNxICpzcSwgc3RydWN0IG1seDVlX3JxICpycSwNCj4gICANCj4gICAvKiByZXR1cm5zIHRydWUg aWYgcGFja2V0IHdhcyBjb25zdW1lZCBieSB4ZHAgKi8NCj4gICBib29sIG1seDVlX3hkcF9oYW5k bGUoc3RydWN0IG1seDVlX3JxICpycSwgc3RydWN0IHBhZ2UgKnBhZ2UsDQo+IC0JCSAgICAgIHN0 cnVjdCBicGZfcHJvZyAqcHJvZywgc3RydWN0IHhkcF9idWZmICp4ZHApDQo+ICsJCSAgICAgIHN0 cnVjdCBicGZfcHJvZyAqcHJvZywgc3RydWN0IG1seDVlX3hkcF9idWZmICpteGJ1ZikNCj4gICB7 DQo+ICsJc3RydWN0IHhkcF9idWZmICp4ZHAgPSAmbXhidWYtPnhkcDsNCj4gICAJdTMyIGFjdDsN Cj4gICAJaW50IGVycjsNCj4gICANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0 L21lbGxhbm94L21seDUvY29yZS9lbi94ZHAuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxh bm94L21seDUvY29yZS9lbi94ZHAuaA0KPiBpbmRleCBiYzJkOTAzNGFmNWIuLjM4OTgxOGJmNjgz MyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3Jl L2VuL3hkcC5oDQo+ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29y ZS9lbi94ZHAuaA0KPiBAQCAtNDQsMTAgKzQ0LDE0IEBADQo+ICAgCShNTFg1RV9YRFBfSU5MSU5F X1dRRV9NQVhfRFNfQ05UICogTUxYNV9TRU5EX1dRRV9EUyAtIFwNCj4gICAJIHNpemVvZihzdHJ1 Y3QgbWx4NV93cWVfaW5saW5lX3NlZykpDQo+ICAgDQo+ICtzdHJ1Y3QgbWx4NWVfeGRwX2J1ZmYg ew0KPiArCXN0cnVjdCB4ZHBfYnVmZiB4ZHA7DQo+ICt9Ow0KPiArDQo+ICAgc3RydWN0IG1seDVl X3hza19wYXJhbTsNCj4gICBpbnQgbWx4NWVfeGRwX21heF9tdHUoc3RydWN0IG1seDVlX3BhcmFt cyAqcGFyYW1zLCBzdHJ1Y3QgbWx4NWVfeHNrX3BhcmFtICp4c2spOw0KPiAgIGJvb2wgbWx4NWVf eGRwX2hhbmRsZShzdHJ1Y3QgbWx4NWVfcnEgKnJxLCBzdHJ1Y3QgcGFnZSAqcGFnZSwNCj4gLQkJ ICAgICAgc3RydWN0IGJwZl9wcm9nICpwcm9nLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCk7DQo+ICsJ CSAgICAgIHN0cnVjdCBicGZfcHJvZyAqcHJvZywgc3RydWN0IG1seDVlX3hkcF9idWZmICptbGN0 eCk7DQo+ICAgdm9pZCBtbHg1ZV94ZHBfbXB3cWVfY29tcGxldGUoc3RydWN0IG1seDVlX3hkcHNx ICpzcSk7DQo+ICAgYm9vbCBtbHg1ZV9wb2xsX3hkcHNxX2NxKHN0cnVjdCBtbHg1ZV9jcSAqY3Ep Ow0KPiAgIHZvaWQgbWx4NWVfZnJlZV94ZHBzcV9kZXNjcyhzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNx KTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29y ZS9lbi94c2svcnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9l bi94c2svcnguYw0KPiBpbmRleCBjOTFiNTRkOWZmMjcuLjljZmY4MmQ3NjRlMyAxMDA2NDQNCj4g LS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay9yeC5j DQo+ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi94c2sv cnguYw0KPiBAQCAtMjIsNiArMjIsNyBAQCBpbnQgbWx4NWVfeHNrX2FsbG9jX3J4X21wd3FlKHN0 cnVjdCBtbHg1ZV9ycSAqcnEsIHUxNiBpeCkNCj4gICAJCWdvdG8gZXJyOw0KPiAgIA0KPiAgIAlC VUlMRF9CVUdfT04oc2l6ZW9mKHdpLT5hbGxvY191bml0c1swXSkgIT0gc2l6ZW9mKHdpLT5hbGxv Y191bml0c1swXS54c2spKTsNCj4gKwlYU0tfQ0hFQ0tfUFJJVl9UWVBFKHN0cnVjdCBtbHg1ZV94 ZHBfYnVmZik7DQo+ICAgCWJhdGNoID0geHNrX2J1ZmZfYWxsb2NfYmF0Y2gocnEtPnhza19wb29s LCAoc3RydWN0IHhkcF9idWZmICoqKXdpLT5hbGxvY191bml0cywNCj4gICAJCQkJICAgICBycS0+ bXB3cWUucGFnZXNfcGVyX3dxZSk7DQo+ICAgDQo+IEBAIC0yMzMsNyArMjM0LDcgQEAgc3RydWN0 IHNrX2J1ZmYgKm1seDVlX3hza19za2JfZnJvbV9jcWVfbXB3cnFfbGluZWFyKHN0cnVjdCBtbHg1 ZV9ycSAqcnEsDQo+ICAgCQkJCQkJICAgIHUzMiBoZWFkX29mZnNldCwNCj4gICAJCQkJCQkgICAg dTMyIHBhZ2VfaWR4KQ0KPiAgIHsNCj4gLQlzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCA9IHdpLT5hbGxv Y191bml0c1twYWdlX2lkeF0ueHNrOw0KPiArCXN0cnVjdCBtbHg1ZV94ZHBfYnVmZiAqbXhidWYg PSB3aS0+YWxsb2NfdW5pdHNbcGFnZV9pZHhdLm14YnVmOw0KPiAgIAlzdHJ1Y3QgYnBmX3Byb2cg KnByb2c7DQo+ICAgDQo+ICAgCS8qIENoZWNrIHBhY2tldCBzaXplLiBOb3RlIExSTyBkb2Vzbid0 IHVzZSBsaW5lYXIgU0tCICovDQo+IEBAIC0yNDksOSArMjUwLDkgQEAgc3RydWN0IHNrX2J1ZmYg Km1seDVlX3hza19za2JfZnJvbV9jcWVfbXB3cnFfbGluZWFyKHN0cnVjdCBtbHg1ZV9ycSAqcnEs DQo+ICAgCSAqLw0KPiAgIAlXQVJOX09OX09OQ0UoaGVhZF9vZmZzZXQpOw0KPiAgIA0KPiAtCXhz a19idWZmX3NldF9zaXplKHhkcCwgY3FlX2JjbnQpOw0KPiAtCXhza19idWZmX2RtYV9zeW5jX2Zv cl9jcHUoeGRwLCBycS0+eHNrX3Bvb2wpOw0KPiAtCW5ldF9wcmVmZXRjaCh4ZHAtPmRhdGEpOw0K PiArCXhza19idWZmX3NldF9zaXplKCZteGJ1Zi0+eGRwLCBjcWVfYmNudCk7DQo+ICsJeHNrX2J1 ZmZfZG1hX3N5bmNfZm9yX2NwdSgmbXhidWYtPnhkcCwgcnEtPnhza19wb29sKTsNCj4gKwluZXRf cHJlZmV0Y2gobXhidWYtPnhkcC5kYXRhKTsNCj4gICANCj4gICAJLyogUG9zc2libGUgZmxvd3M6 DQo+ICAgCSAqIC0gWERQX1JFRElSRUNUIHRvIFhTS01BUDoNCj4gQEAgLTI2OSw3ICsyNzAsNyBA QCBzdHJ1Y3Qgc2tfYnVmZiAqbWx4NWVfeHNrX3NrYl9mcm9tX2NxZV9tcHdycV9saW5lYXIoc3Ry dWN0IG1seDVlX3JxICpycSwNCj4gICAJICovDQo+ICAgDQo+ICAgCXByb2cgPSByY3VfZGVyZWZl cmVuY2UocnEtPnhkcF9wcm9nKTsNCj4gLQlpZiAobGlrZWx5KHByb2cgJiYgbWx4NWVfeGRwX2hh bmRsZShycSwgTlVMTCwgcHJvZywgeGRwKSkpIHsNCj4gKwlpZiAobGlrZWx5KHByb2cgJiYgbWx4 NWVfeGRwX2hhbmRsZShycSwgTlVMTCwgcHJvZywgbXhidWYpKSkgew0KPiAgIAkJaWYgKGxpa2Vs eShfX3Rlc3RfYW5kX2NsZWFyX2JpdChNTFg1RV9SUV9GTEFHX1hEUF9YTUlULCBycS0+ZmxhZ3Mp KSkNCj4gICAJCQlfX3NldF9iaXQocGFnZV9pZHgsIHdpLT54ZHBfeG1pdF9iaXRtYXApOyAvKiBu b24tYXRvbWljICovDQo+ICAgCQlyZXR1cm4gTlVMTDsgLyogcGFnZS9wYWNrZXQgd2FzIGNvbnN1 bWVkIGJ5IFhEUCAqLw0KPiBAQCAtMjc4LDE0ICsyNzksMTQgQEAgc3RydWN0IHNrX2J1ZmYgKm1s eDVlX3hza19za2JfZnJvbV9jcWVfbXB3cnFfbGluZWFyKHN0cnVjdCBtbHg1ZV9ycSAqcnEsDQo+ ICAgCS8qIFhEUF9QQVNTOiBjb3B5IHRoZSBkYXRhIGZyb20gdGhlIFVNRU0gdG8gYSBuZXcgU0tC IGFuZCByZXVzZSB0aGUNCj4gICAJICogZnJhbWUuIE9uIFNLQiBhbGxvY2F0aW9uIGZhaWx1cmUs IE5VTEwgaXMgcmV0dXJuZWQuDQo+ICAgCSAqLw0KPiAtCXJldHVybiBtbHg1ZV94c2tfY29uc3Ry dWN0X3NrYihycSwgeGRwKTsNCj4gKwlyZXR1cm4gbWx4NWVfeHNrX2NvbnN0cnVjdF9za2IocnEs ICZteGJ1Zi0+eGRwKTsNCj4gICB9DQo+ICAgDQo+ICAgc3RydWN0IHNrX2J1ZmYgKm1seDVlX3hz a19za2JfZnJvbV9jcWVfbGluZWFyKHN0cnVjdCBtbHg1ZV9ycSAqcnEsDQo+ICAgCQkJCQkgICAg ICBzdHJ1Y3QgbWx4NWVfd3FlX2ZyYWdfaW5mbyAqd2ksDQo+ICAgCQkJCQkgICAgICB1MzIgY3Fl X2JjbnQpDQo+ICAgew0KPiAtCXN0cnVjdCB4ZHBfYnVmZiAqeGRwID0gd2ktPmF1LT54c2s7DQo+ ICsJc3RydWN0IG1seDVlX3hkcF9idWZmICpteGJ1ZiA9IHdpLT5hdS0+bXhidWY7DQo+ICAgCXN0 cnVjdCBicGZfcHJvZyAqcHJvZzsNCj4gICANCj4gICAJLyogd2ktPm9mZnNldCBpcyBub3QgdXNl ZCBpbiB0aGlzIGZ1bmN0aW9uLCBiZWNhdXNlIHhkcC0+ZGF0YSBhbmQgdGhlDQo+IEBAIC0yOTUs MTcgKzI5NiwxNyBAQCBzdHJ1Y3Qgc2tfYnVmZiAqbWx4NWVfeHNrX3NrYl9mcm9tX2NxZV9saW5l YXIoc3RydWN0IG1seDVlX3JxICpycSwNCj4gICAJICovDQo+ICAgCVdBUk5fT05fT05DRSh3aS0+ b2Zmc2V0KTsNCj4gICANCj4gLQl4c2tfYnVmZl9zZXRfc2l6ZSh4ZHAsIGNxZV9iY250KTsNCj4g LQl4c2tfYnVmZl9kbWFfc3luY19mb3JfY3B1KHhkcCwgcnEtPnhza19wb29sKTsNCj4gLQluZXRf cHJlZmV0Y2goeGRwLT5kYXRhKTsNCj4gKwl4c2tfYnVmZl9zZXRfc2l6ZSgmbXhidWYtPnhkcCwg Y3FlX2JjbnQpOw0KPiArCXhza19idWZmX2RtYV9zeW5jX2Zvcl9jcHUoJm14YnVmLT54ZHAsIHJx LT54c2tfcG9vbCk7DQo+ICsJbmV0X3ByZWZldGNoKG14YnVmLT54ZHAuZGF0YSk7DQo+ICAgDQo+ ICAgCXByb2cgPSByY3VfZGVyZWZlcmVuY2UocnEtPnhkcF9wcm9nKTsNCj4gLQlpZiAobGlrZWx5 KHByb2cgJiYgbWx4NWVfeGRwX2hhbmRsZShycSwgTlVMTCwgcHJvZywgeGRwKSkpDQo+ICsJaWYg KGxpa2VseShwcm9nICYmIG1seDVlX3hkcF9oYW5kbGUocnEsIE5VTEwsIHByb2csIG14YnVmKSkp DQo+ICAgCQlyZXR1cm4gTlVMTDsgLyogcGFnZS9wYWNrZXQgd2FzIGNvbnN1bWVkIGJ5IFhEUCAq Lw0KPiAgIA0KPiAgIAkvKiBYRFBfUEFTUzogY29weSB0aGUgZGF0YSBmcm9tIHRoZSBVTUVNIHRv IGEgbmV3IFNLQi4gVGhlIGZyYW1lIHJldXNlDQo+ICAgCSAqIHdpbGwgYmUgaGFuZGxlZCBieSBt bHg1ZV9mcmVlX3J4X3dxZS4NCj4gICAJICogT24gU0tCIGFsbG9jYXRpb24gZmFpbHVyZSwgTlVM TCBpcyByZXR1cm5lZC4NCj4gICAJICovDQo+IC0JcmV0dXJuIG1seDVlX3hza19jb25zdHJ1Y3Rf c2tiKHJxLCB4ZHApOw0KPiArCXJldHVybiBtbHg1ZV94c2tfY29uc3RydWN0X3NrYihycSwgJm14 YnVmLT54ZHApOw0KPiAgIH0NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21l bGxhbm94L21seDUvY29yZS9lbl9yeC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gv bWx4NS9jb3JlL2VuX3J4LmMNCj4gaW5kZXggYzg4MjBhYjIyMTY5Li5jOGEyYjI2ZGUzNmUgMTAw NjQ0DQo+IC0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9y eC5jDQo+ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9y eC5jDQo+IEBAIC0xNTc2LDEwICsxNTc2LDEwIEBAIHN0cnVjdCBza19idWZmICptbHg1ZV9idWls ZF9saW5lYXJfc2tiKHN0cnVjdCBtbHg1ZV9ycSAqcnEsIHZvaWQgKnZhLA0KPiAgIH0NCj4gICAN Cj4gICBzdGF0aWMgdm9pZCBtbHg1ZV9maWxsX3hkcF9idWZmKHN0cnVjdCBtbHg1ZV9ycSAqcnEs IHZvaWQgKnZhLCB1MTYgaGVhZHJvb20sDQoNClRoaXMgbm93IGFjdHMgb24gYW4gbWx4NWVfeGRw X2J1ZmYgb2JqZWN0LiBIb3cgYWJvdXQgY2hhbmdpbmcgdGhlIGZ1bmMgDQpuYW1lIGFjY29yZGlu Z2x5Pw0KDQpUaGUgb2J2aW91cyByZW5hbWUgdG8gbWx4NWVfZmlsbF9tbHg1ZV94ZHBfYnVmZiBk b2Vzbid0IHdvcmsgaGVyZS4NCk1heWJlIG1seDVlX2ZpbGxfbXhidWYgPw0KDQo+IC0JCQkJdTMy IGxlbiwgc3RydWN0IHhkcF9idWZmICp4ZHApDQo+ICsJCQkJdTMyIGxlbiwgc3RydWN0IG1seDVl X3hkcF9idWZmICpteGJ1ZikNCj4gICB7DQo+IC0JeGRwX2luaXRfYnVmZih4ZHAsIHJxLT5idWZm LmZyYW1lMF9zeiwgJnJxLT54ZHBfcnhxKTsNCj4gLQl4ZHBfcHJlcGFyZV9idWZmKHhkcCwgdmEs IGhlYWRyb29tLCBsZW4sIHRydWUpOw0KPiArCXhkcF9pbml0X2J1ZmYoJm14YnVmLT54ZHAsIHJx LT5idWZmLmZyYW1lMF9zeiwgJnJxLT54ZHBfcnhxKTsNCj4gKwl4ZHBfcHJlcGFyZV9idWZmKCZt eGJ1Zi0+eGRwLCB2YSwgaGVhZHJvb20sIGxlbiwgdHJ1ZSk7DQo+ICAgfQ0KPiAgIA0KPiAgIHN0 YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqDQo+IEBAIC0xNjA2LDE2ICsxNjA2LDE2IEBAIG1seDVlX3Nr Yl9mcm9tX2NxZV9saW5lYXIoc3RydWN0IG1seDVlX3JxICpycSwgc3RydWN0IG1seDVlX3dxZV9m cmFnX2luZm8gKndpLA0KPiAgIA0KPiAgIAlwcm9nID0gcmN1X2RlcmVmZXJlbmNlKHJxLT54ZHBf cHJvZyk7DQo+ICAgCWlmIChwcm9nKSB7DQo+IC0JCXN0cnVjdCB4ZHBfYnVmZiB4ZHA7DQo+ICsJ CXN0cnVjdCBtbHg1ZV94ZHBfYnVmZiBteGJ1ZiA+DQo+ICAgCQluZXRfcHJlZmV0Y2h3KHZhKTsg LyogeGRwX2ZyYW1lIGRhdGEgYXJlYSAqLw0KPiAtCQltbHg1ZV9maWxsX3hkcF9idWZmKHJxLCB2 YSwgcnhfaGVhZHJvb20sIGNxZV9iY250LCAmeGRwKTsNCj4gLQkJaWYgKG1seDVlX3hkcF9oYW5k bGUocnEsIGF1LT5wYWdlLCBwcm9nLCAmeGRwKSkNCj4gKwkJbWx4NWVfZmlsbF94ZHBfYnVmZihy cSwgdmEsIHJ4X2hlYWRyb29tLCBjcWVfYmNudCwgJm14YnVmKTsNCj4gKwkJaWYgKG1seDVlX3hk cF9oYW5kbGUocnEsIGF1LT5wYWdlLCBwcm9nLCAmbXhidWYpKQ0KPiAgIAkJCXJldHVybiBOVUxM OyAvKiBwYWdlL3BhY2tldCB3YXMgY29uc3VtZWQgYnkgWERQICovDQo+ICAgDQo+IC0JCXJ4X2hl YWRyb29tID0geGRwLmRhdGEgLSB4ZHAuZGF0YV9oYXJkX3N0YXJ0Ow0KPiAtCQltZXRhc2l6ZSA9 IHhkcC5kYXRhIC0geGRwLmRhdGFfbWV0YTsNCj4gLQkJY3FlX2JjbnQgPSB4ZHAuZGF0YV9lbmQg LSB4ZHAuZGF0YTsNCj4gKwkJcnhfaGVhZHJvb20gPSBteGJ1Zi54ZHAuZGF0YSAtIG14YnVmLnhk cC5kYXRhX2hhcmRfc3RhcnQ7DQo+ICsJCW1ldGFzaXplID0gbXhidWYueGRwLmRhdGEgLSBteGJ1 Zi54ZHAuZGF0YV9tZXRhOw0KPiArCQljcWVfYmNudCA9IG14YnVmLnhkcC5kYXRhX2VuZCAtIG14 YnVmLnhkcC5kYXRhOw0KPiAgIAl9DQo+ICAgCWZyYWdfc2l6ZSA9IE1MWDVfU0tCX0ZSQUdfU1oo cnhfaGVhZHJvb20gKyBjcWVfYmNudCk7DQo+ICAgCXNrYiA9IG1seDVlX2J1aWxkX2xpbmVhcl9z a2IocnEsIHZhLCBmcmFnX3NpemUsIHJ4X2hlYWRyb29tLCBjcWVfYmNudCwgbWV0YXNpemUpOw0K PiBAQCAtMTYzNyw5ICsxNjM3LDkgQEAgbWx4NWVfc2tiX2Zyb21fY3FlX25vbmxpbmVhcihzdHJ1 Y3QgbWx4NWVfcnEgKnJxLCBzdHJ1Y3QgbWx4NWVfd3FlX2ZyYWdfaW5mbyAqd2kNCj4gICAJdW5p b24gbWx4NWVfYWxsb2NfdW5pdCAqYXUgPSB3aS0+YXU7DQo+ICAgCXUxNiByeF9oZWFkcm9vbSA9 IHJxLT5idWZmLmhlYWRyb29tOw0KPiAgIAlzdHJ1Y3Qgc2tiX3NoYXJlZF9pbmZvICpzaW5mbzsN Cj4gKwlzdHJ1Y3QgbWx4NWVfeGRwX2J1ZmYgbXhidWY7DQo+ICAgCXUzMiBmcmFnX2NvbnN1bWVk X2J5dGVzOw0KPiAgIAlzdHJ1Y3QgYnBmX3Byb2cgKnByb2c7DQo+IC0Jc3RydWN0IHhkcF9idWZm IHhkcDsNCj4gICAJc3RydWN0IHNrX2J1ZmYgKnNrYjsNCj4gICAJZG1hX2FkZHJfdCBhZGRyOw0K PiAgIAl1MzIgdHJ1ZXNpemU7DQo+IEBAIC0xNjU0LDggKzE2NTQsOCBAQCBtbHg1ZV9za2JfZnJv bV9jcWVfbm9ubGluZWFyKHN0cnVjdCBtbHg1ZV9ycSAqcnEsIHN0cnVjdCBtbHg1ZV93cWVfZnJh Z19pbmZvICp3aQ0KPiAgIAluZXRfcHJlZmV0Y2h3KHZhKTsgLyogeGRwX2ZyYW1lIGRhdGEgYXJl YSAqLw0KPiAgIAluZXRfcHJlZmV0Y2godmEgKyByeF9oZWFkcm9vbSk7DQo+ICAgDQo+IC0JbWx4 NWVfZmlsbF94ZHBfYnVmZihycSwgdmEsIHJ4X2hlYWRyb29tLCBmcmFnX2NvbnN1bWVkX2J5dGVz LCAmeGRwKTsNCj4gLQlzaW5mbyA9IHhkcF9nZXRfc2hhcmVkX2luZm9fZnJvbV9idWZmKCZ4ZHAp Ow0KPiArCW1seDVlX2ZpbGxfeGRwX2J1ZmYocnEsIHZhLCByeF9oZWFkcm9vbSwgZnJhZ19jb25z dW1lZF9ieXRlcywgJm14YnVmKTsNCj4gKwlzaW5mbyA9IHhkcF9nZXRfc2hhcmVkX2luZm9fZnJv bV9idWZmKCZteGJ1Zi54ZHApOw0KPiAgIAl0cnVlc2l6ZSA9IDA7DQo+ICAgDQo+ICAgCWNxZV9i Y250IC09IGZyYWdfY29uc3VtZWRfYnl0ZXM7DQo+IEBAIC0xNjczLDEzICsxNjczLDEzIEBAIG1s eDVlX3NrYl9mcm9tX2NxZV9ub25saW5lYXIoc3RydWN0IG1seDVlX3JxICpycSwgc3RydWN0IG1s eDVlX3dxZV9mcmFnX2luZm8gKndpDQo+ICAgCQlkbWFfc3luY19zaW5nbGVfZm9yX2NwdShycS0+ cGRldiwgYWRkciArIHdpLT5vZmZzZXQsDQo+ICAgCQkJCQlmcmFnX2NvbnN1bWVkX2J5dGVzLCBy cS0+YnVmZi5tYXBfZGlyKTsNCj4gICANCj4gLQkJaWYgKCF4ZHBfYnVmZl9oYXNfZnJhZ3MoJnhk cCkpIHsNCj4gKwkJaWYgKCF4ZHBfYnVmZl9oYXNfZnJhZ3MoJm14YnVmLnhkcCkpIHsNCj4gICAJ CQkvKiBJbml0IG9uIHRoZSBmaXJzdCBmcmFnbWVudCB0byBhdm9pZCBjb2xkIGNhY2hlIGFjY2Vz cw0KPiAgIAkJCSAqIHdoZW4gcG9zc2libGUuDQo+ICAgCQkJICovDQo+ICAgCQkJc2luZm8tPm5y X2ZyYWdzID0gMDsNCj4gICAJCQlzaW5mby0+eGRwX2ZyYWdzX3NpemUgPSAwOw0KPiAtCQkJeGRw X2J1ZmZfc2V0X2ZyYWdzX2ZsYWcoJnhkcCk7DQo+ICsJCQl4ZHBfYnVmZl9zZXRfZnJhZ3NfZmxh ZygmbXhidWYueGRwKTsNCj4gICAJCX0NCj4gICANCj4gICAJCWZyYWcgPSAmc2luZm8tPmZyYWdz W3NpbmZvLT5ucl9mcmFncysrXTsNCj4gQEAgLTE2ODgsNyArMTY4OCw3IEBAIG1seDVlX3NrYl9m cm9tX2NxZV9ub25saW5lYXIoc3RydWN0IG1seDVlX3JxICpycSwgc3RydWN0IG1seDVlX3dxZV9m cmFnX2luZm8gKndpDQo+ICAgCQlza2JfZnJhZ19zaXplX3NldChmcmFnLCBmcmFnX2NvbnN1bWVk X2J5dGVzKTsNCj4gICANCj4gICAJCWlmIChwYWdlX2lzX3BmbWVtYWxsb2MoYXUtPnBhZ2UpKQ0K PiAtCQkJeGRwX2J1ZmZfc2V0X2ZyYWdfcGZtZW1hbGxvYygmeGRwKTsNCj4gKwkJCXhkcF9idWZm X3NldF9mcmFnX3BmbWVtYWxsb2MoJm14YnVmLnhkcCk7DQo+ICAgDQo+ICAgCQlzaW5mby0+eGRw X2ZyYWdzX3NpemUgKz0gZnJhZ19jb25zdW1lZF9ieXRlczsNCj4gICAJCXRydWVzaXplICs9IGZy YWdfaW5mby0+ZnJhZ19zdHJpZGU7DQo+IEBAIC0xNzAxLDcgKzE3MDEsNyBAQCBtbHg1ZV9za2Jf ZnJvbV9jcWVfbm9ubGluZWFyKHN0cnVjdCBtbHg1ZV9ycSAqcnEsIHN0cnVjdCBtbHg1ZV93cWVf ZnJhZ19pbmZvICp3aQ0KPiAgIAlhdSA9IGhlYWRfd2ktPmF1Ow0KPiAgIA0KPiAgIAlwcm9nID0g cmN1X2RlcmVmZXJlbmNlKHJxLT54ZHBfcHJvZyk7DQo+IC0JaWYgKHByb2cgJiYgbWx4NWVfeGRw X2hhbmRsZShycSwgYXUtPnBhZ2UsIHByb2csICZ4ZHApKSB7DQo+ICsJaWYgKHByb2cgJiYgbWx4 NWVfeGRwX2hhbmRsZShycSwgYXUtPnBhZ2UsIHByb2csICZteGJ1ZikpIHsNCj4gICAJCWlmICh0 ZXN0X2JpdChNTFg1RV9SUV9GTEFHX1hEUF9YTUlULCBycS0+ZmxhZ3MpKSB7DQo+ICAgCQkJaW50 IGk7DQo+ICAgDQo+IEBAIC0xNzExLDIyICsxNzExLDIyIEBAIG1seDVlX3NrYl9mcm9tX2NxZV9u b25saW5lYXIoc3RydWN0IG1seDVlX3JxICpycSwgc3RydWN0IG1seDVlX3dxZV9mcmFnX2luZm8g KndpDQo+ICAgCQlyZXR1cm4gTlVMTDsgLyogcGFnZS9wYWNrZXQgd2FzIGNvbnN1bWVkIGJ5IFhE UCAqLw0KPiAgIAl9DQo+ICAgDQo+IC0Jc2tiID0gbWx4NWVfYnVpbGRfbGluZWFyX3NrYihycSwg eGRwLmRhdGFfaGFyZF9zdGFydCwgcnEtPmJ1ZmYuZnJhbWUwX3N6LA0KPiAtCQkJCSAgICAgeGRw LmRhdGEgLSB4ZHAuZGF0YV9oYXJkX3N0YXJ0LA0KPiAtCQkJCSAgICAgeGRwLmRhdGFfZW5kIC0g eGRwLmRhdGEsDQo+IC0JCQkJICAgICB4ZHAuZGF0YSAtIHhkcC5kYXRhX21ldGEpOw0KPiArCXNr YiA9IG1seDVlX2J1aWxkX2xpbmVhcl9za2IocnEsIG14YnVmLnhkcC5kYXRhX2hhcmRfc3RhcnQs IHJxLT5idWZmLmZyYW1lMF9zeiwNCj4gKwkJCQkgICAgIG14YnVmLnhkcC5kYXRhIC0gbXhidWYu eGRwLmRhdGFfaGFyZF9zdGFydCwNCj4gKwkJCQkgICAgIG14YnVmLnhkcC5kYXRhX2VuZCAtIG14 YnVmLnhkcC5kYXRhLA0KPiArCQkJCSAgICAgbXhidWYueGRwLmRhdGEgLSBteGJ1Zi54ZHAuZGF0 YV9tZXRhKTsNCj4gICAJaWYgKHVubGlrZWx5KCFza2IpKQ0KPiAgIAkJcmV0dXJuIE5VTEw7DQo+ ICAgDQo+ICAgCXBhZ2VfcmVmX2luYyhhdS0+cGFnZSk7DQo+ICAgDQo+IC0JaWYgKHVubGlrZWx5 KHhkcF9idWZmX2hhc19mcmFncygmeGRwKSkpIHsNCj4gKwlpZiAodW5saWtlbHkoeGRwX2J1ZmZf aGFzX2ZyYWdzKCZteGJ1Zi54ZHApKSkgew0KPiAgIAkJaW50IGk7DQo+ICAgDQo+ICAgCQkvKiBz aW5mby0+bnJfZnJhZ3MgaXMgcmVzZXQgYnkgYnVpbGRfc2tiLCBjYWxjdWxhdGUgYWdhaW4uICov DQo+ICAgCQl4ZHBfdXBkYXRlX3NrYl9zaGFyZWRfaW5mbyhza2IsIHdpIC0gaGVhZF93aSAtIDEs DQo+ICAgCQkJCQkgICBzaW5mby0+eGRwX2ZyYWdzX3NpemUsIHRydWVzaXplLA0KPiAtCQkJCQkg ICB4ZHBfYnVmZl9pc19mcmFnX3BmbWVtYWxsb2MoJnhkcCkpOw0KPiArCQkJCQkgICB4ZHBfYnVm Zl9pc19mcmFnX3BmbWVtYWxsb2MoJm14YnVmLnhkcCkpOw0KPiAgIA0KPiAgIAkJZm9yIChpID0g MDsgaSA8IHNpbmZvLT5ucl9mcmFnczsgaSsrKSB7DQo+ICAgCQkJc2tiX2ZyYWdfdCAqZnJhZyA9 ICZzaW5mby0+ZnJhZ3NbaV07DQo+IEBAIC0yMDA3LDE5ICsyMDA3LDE5IEBAIG1seDVlX3NrYl9m cm9tX2NxZV9tcHdycV9saW5lYXIoc3RydWN0IG1seDVlX3JxICpycSwgc3RydWN0IG1seDVlX21w d19pbmZvICp3aSwNCj4gICANCj4gICAJcHJvZyA9IHJjdV9kZXJlZmVyZW5jZShycS0+eGRwX3By b2cpOw0KPiAgIAlpZiAocHJvZykgew0KPiAtCQlzdHJ1Y3QgeGRwX2J1ZmYgeGRwOw0KPiArCQlz dHJ1Y3QgbWx4NWVfeGRwX2J1ZmYgbXhidWY7DQo+ICAgDQo+ICAgCQluZXRfcHJlZmV0Y2h3KHZh KTsgLyogeGRwX2ZyYW1lIGRhdGEgYXJlYSAqLw0KPiAtCQltbHg1ZV9maWxsX3hkcF9idWZmKHJx LCB2YSwgcnhfaGVhZHJvb20sIGNxZV9iY250LCAmeGRwKTsNCj4gLQkJaWYgKG1seDVlX3hkcF9o YW5kbGUocnEsIGF1LT5wYWdlLCBwcm9nLCAmeGRwKSkgew0KPiArCQltbHg1ZV9maWxsX3hkcF9i dWZmKHJxLCB2YSwgcnhfaGVhZHJvb20sIGNxZV9iY250LCAmbXhidWYpOw0KPiArCQlpZiAobWx4 NWVfeGRwX2hhbmRsZShycSwgYXUtPnBhZ2UsIHByb2csICZteGJ1ZikpIHsNCj4gICAJCQlpZiAo X190ZXN0X2FuZF9jbGVhcl9iaXQoTUxYNUVfUlFfRkxBR19YRFBfWE1JVCwgcnEtPmZsYWdzKSkN Cj4gICAJCQkJX19zZXRfYml0KHBhZ2VfaWR4LCB3aS0+eGRwX3htaXRfYml0bWFwKTsgLyogbm9u LWF0b21pYyAqLw0KPiAgIAkJCXJldHVybiBOVUxMOyAvKiBwYWdlL3BhY2tldCB3YXMgY29uc3Vt ZWQgYnkgWERQICovDQo+ICAgCQl9DQo+ICAgDQo+IC0JCXJ4X2hlYWRyb29tID0geGRwLmRhdGEg LSB4ZHAuZGF0YV9oYXJkX3N0YXJ0Ow0KPiAtCQltZXRhc2l6ZSA9IHhkcC5kYXRhIC0geGRwLmRh dGFfbWV0YTsNCj4gLQkJY3FlX2JjbnQgPSB4ZHAuZGF0YV9lbmQgLSB4ZHAuZGF0YTsNCj4gKwkJ cnhfaGVhZHJvb20gPSBteGJ1Zi54ZHAuZGF0YSAtIG14YnVmLnhkcC5kYXRhX2hhcmRfc3RhcnQ7 DQo+ICsJCW1ldGFzaXplID0gbXhidWYueGRwLmRhdGEgLSBteGJ1Zi54ZHAuZGF0YV9tZXRhOw0K PiArCQljcWVfYmNudCA9IG14YnVmLnhkcC5kYXRhX2VuZCAtIG14YnVmLnhkcC5kYXRhOw0KPiAg IAl9DQo+ICAgCWZyYWdfc2l6ZSA9IE1MWDVfU0tCX0ZSQUdfU1oocnhfaGVhZHJvb20gKyBjcWVf YmNudCk7DQo+ICAgCXNrYiA9IG1seDVlX2J1aWxkX2xpbmVhcl9za2IocnEsIHZhLCBmcmFnX3Np emUsIHJ4X2hlYWRyb29tLCBjcWVfYmNudCwgbWV0YXNpemUpOw0K