From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-lf1-x12d.google.com (mail-lf1-x12d.google.com [IPv6:2a00:1450:4864:20::12d]) by mail.toke.dk (Postfix) with ESMTPS id 2A6DCA11D7E for ; Thu, 22 Jun 2023 11:11:04 +0200 (CEST) Authentication-Results: mail.toke.dk; dkim=pass (2048-bit key; unprotected) header.d=brouer-com.20221208.gappssmtp.com header.i=@brouer-com.20221208.gappssmtp.com header.a=rsa-sha256 header.s=20221208 header.b=eXUIsg4H Received: by mail-lf1-x12d.google.com with SMTP id 2adb3069b0e04-4f86a7a5499so7122294e87.2 for ; Thu, 22 Jun 2023 02:11:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brouer-com.20221208.gappssmtp.com; s=20221208; t=1687425063; x=1690017063; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:cc:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=i68QhW4jCBgd/NtsI2qPa46H1bMJZjISzdeu9Mv7K80=; b=eXUIsg4HCOoUA0sni5zGY/9riTsJ0Epc64IYMXshP1UJwyTc3JRasP09a8sPoyIbLx 4Z6U5i26+5lAgJ8zRf38Ifyu44hrNqzFMEFYh3h+9NsgxtlzDqMyIrHIYF0Ykjx7oBNz NBYE3adbiVy7n3MRR3WcvaY7CWQFCGmTR/8voXc2phGZBdi77SpzfdE5ECPvuiAwltnu zijjpIUgpz/HMI66rlLNqAKm0GerIPN/ptc7bKamEXz6cyhSSrLZYNZfenrQJNXfR8Iz 6RPOH1GqxCOLIypR6XtuP4SzWBsanu/HzVbeS7qnjHtEhL1OAVP6znIU0D+fAFFxvVqc nWYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687425063; x=1690017063; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:cc:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=i68QhW4jCBgd/NtsI2qPa46H1bMJZjISzdeu9Mv7K80=; b=MLkLpBr3aEQ39gNy3XUrpFFYbITrtZ8XtN2w3HF4WXhXyXL7oxg/sc/dxHi90IIFYj 2stl9KGn0vs63O0sA6DN1Dn1cCBsrFxF2a8B08J0s8F2PKq9a3UWgmIaO7EL1BL4yvfb Ka76lumy68PkheqDn68qmbXRsdz57Zqe2RGh8HSOOejfRXzfayoz1cJwG2nAEjB0XmQk v/FwKTa+Lpunv8BasQQKNovwOtcAVr+FvTnuwJpBDMPVbhPL8XqBVr41csTs/tQ32Qda O/yD7cXs7Jt45dm+RyqRx6u3vsQN4vaUL+RCxCwroGkjSfi6PkpKDGHBPCluTQw29wp/ cCxg== X-Gm-Message-State: AC+VfDzsp5efibCqo7E9vb0JuFoI8vMtnWuO1CsGRUcRgOxFZ5gNTUPm IjkQ18pK3bIpk60D2Qp6+crykw== X-Google-Smtp-Source: ACHHUZ5Qq793/Bbh160b9m80rrV0j9sd5ebnGHfSQeiL8zJ9Q1llTbiB9VBgGECuwfIckL1bsRJn7w== X-Received: by 2002:ac2:5b0c:0:b0:4f8:666b:9de8 with SMTP id v12-20020ac25b0c000000b004f8666b9de8mr9364113lfn.13.1687425062684; Thu, 22 Jun 2023 02:11:02 -0700 (PDT) Received: from [192.168.42.222] (194-45-78-10.static.kviknet.net. [194.45.78.10]) by smtp.gmail.com with ESMTPSA id j11-20020a5d604b000000b003078681a1e8sm6552550wrt.54.2023.06.22.02.11.01 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 22 Jun 2023 02:11:02 -0700 (PDT) Message-ID: <57b9fc14-c02e-f0e5-148d-a549ebab6cf6@brouer.com> Date: Thu, 22 Jun 2023 11:11:00 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.10.0 Content-Language: en-US To: Stanislav Fomichev , bpf@vger.kernel.org References: <20230621170244.1283336-1-sdf@google.com> <20230621170244.1283336-4-sdf@google.com> From: "Jesper D. Brouer" In-Reply-To: <20230621170244.1283336-4-sdf@google.com> Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: base64 Message-ID-Hash: O5NASIUXMQ3LUBAL3TLR3PBYIZP2RLUP X-Message-ID-Hash: O5NASIUXMQ3LUBAL3TLR3PBYIZP2RLUP X-MailFrom: netdev@brouer.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: brouer@redhat.com, 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?B?QmrDtnJuIFTDtnBlbA==?= , "Karlsson, Magnus" , "xdp-hints@xdp-project.net" X-Mailman-Version: 3.3.8 Precedence: list Subject: [xdp-hints] Re: [RFC bpf-next v2 03/11] xsk: Support XDP_TX_METADATA_LEN List-Id: XDP hardware hints design discussion Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: DQpUaGlzIG5lZWRzIHRvIGJlIHJldmlld2VkIGJ5IEFGX1hEUCBtYWludGFpbmVycyBNYWdudXMg YW5kIEJqw7hybiAoQ2MpDQoNCk9uIDIxLzA2LzIwMjMgMTkuMDIsIFN0YW5pc2xhdiBGb21pY2hl diB3cm90ZToNCj4gRm9yIHplcm9jb3B5IG1vZGUsIHR4X2Rlc2MtPmFkZHIgY2FuIHBvaW50IHRv IHRoZSBhcmJpdHJhcnkgb2Zmc2V0DQo+IGFuZCBjYXJyeSBzb21lIFRYIG1ldGFkYXRhIGluIHRo ZSBoZWFkcm9vbS4gRm9yIGNvcHkgbW9kZSwgdGhlcmUNCj4gaXMgbm8gd2F5IGN1cnJlbnRseSB0 byBwb3B1bGF0ZSBza2IgbWV0YWRhdGEuDQo+IA0KPiBJbnRyb2R1Y2UgbmV3IFhEUF9UWF9NRVRB REFUQV9MRU4gdGhhdCBpbmRpY2F0ZXMgaG93IG1hbnkgYnl0ZXMNCj4gdG8gdHJlYXQgYXMgbWV0 YWRhdGEuIE1ldGFkYXRhIGJ5dGVzIGNvbWUgcHJpb3IgdG8gdHhfZGVzYyBhZGRyZXNzDQo+IChz YW1lIGFzIGluIFJYIGNhc2UpLg0KDQogRnJvbSBsb29raW5nIGF0IHRoZSBjb2RlLCB0aGlzIGlu dHJvZHVjZXMgYSBzb2NrZXQgb3B0aW9uIGZvciB0aGlzIFRYIA0KbWV0YWRhdGEgbGVuZ3RoICh0 eF9tZXRhZGF0YV9sZW4pLg0KVGhpcyBpbXBsaWVzIHRoZSBzYW1lIGZpeGVkIFRYIG1ldGFkYXRh IHNpemUgaXMgdXNlZCBmb3IgYWxsIHBhY2tldHMuDQpNYXliZSBkZXNjcmliZSB0aGlzIGluIHBh dGNoIGRlc2MuDQoNCldoYXQgaXMgdGhlIHBsYW4gZm9yIGRlYWxpbmcgd2l0aCBjYXNlcyB0aGF0 IGRvZXNuJ3QgcG9wdWxhdGUgc2FtZS9mdWxsDQpUWCBtZXRhZGF0YSBzaXplID8NCg0KDQo+IA0K PiBTaWduZWQtb2ZmLWJ5OiBTdGFuaXNsYXYgRm9taWNoZXYgPHNkZkBnb29nbGUuY29tPg0KPiAt LS0NCj4gICBpbmNsdWRlL25ldC94ZHBfc29jay5oICAgICAgfCAgMSArDQo+ICAgaW5jbHVkZS9u ZXQveHNrX2J1ZmZfcG9vbC5oIHwgIDEgKw0KPiAgIGluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAu aCB8ICAxICsNCj4gICBuZXQveGRwL3hzay5jICAgICAgICAgICAgICAgfCAzMSArKysrKysrKysr KysrKysrKysrKysrKysrKysrKystDQo+ICAgbmV0L3hkcC94c2tfYnVmZl9wb29sLmMgICAgIHwg IDEgKw0KPiAgIG5ldC94ZHAveHNrX3F1ZXVlLmggICAgICAgICB8ICA3ICsrKystLS0NCj4gICA2 IGZpbGVzIGNoYW5nZWQsIDM4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pDQo+IA0KPiBk aWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQveGRwX3NvY2suaCBiL2luY2x1ZGUvbmV0L3hkcF9zb2Nr LmgNCj4gaW5kZXggZTk2YTExNTFlYzc1Li4zMDAxOGIzYjg2MmQgMTAwNjQ0DQo+IC0tLSBhL2lu Y2x1ZGUvbmV0L3hkcF9zb2NrLmgNCj4gKysrIGIvaW5jbHVkZS9uZXQveGRwX3NvY2suaA0KPiBA QCAtNTEsNiArNTEsNyBAQCBzdHJ1Y3QgeGRwX3NvY2sgew0KPiAgIAlzdHJ1Y3QgbGlzdF9oZWFk IGZsdXNoX25vZGU7DQo+ICAgCXN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sOw0KPiAgIAl1MTYg cXVldWVfaWQ7DQo+ICsJdTggdHhfbWV0YWRhdGFfbGVuOw0KPiAgIAlib29sIHpjOw0KPiAgIAll bnVtIHsNCj4gICAJCVhTS19SRUFEWSA9IDAsDQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC94 c2tfYnVmZl9wb29sLmggYi9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmgNCj4gaW5kZXggYThk N2I4YTM2ODhhLi43NTFmZWE1MWE2YWYgMTAwNjQ0DQo+IC0tLSBhL2luY2x1ZGUvbmV0L3hza19i dWZmX3Bvb2wuaA0KPiArKysgYi9pbmNsdWRlL25ldC94c2tfYnVmZl9wb29sLmgNCj4gQEAgLTc1 LDYgKzc1LDcgQEAgc3RydWN0IHhza19idWZmX3Bvb2wgew0KPiAgIAl1MzIgY2h1bmtfc2l6ZTsN Cj4gICAJdTMyIGNodW5rX3NoaWZ0Ow0KPiAgIAl1MzIgZnJhbWVfbGVuOw0KPiArCXU4IHR4X21l dGFkYXRhX2xlbjsgLyogaW5oZXJpdGVkIGZyb20geHNrX3NvY2sgKi8NCj4gICAJdTggY2FjaGVk X25lZWRfd2FrZXVwOw0KPiAgIAlib29sIHVzZXNfbmVlZF93YWtldXA7DQo+ICAgCWJvb2wgZG1h X25lZWRfc3luYzsNCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaCBi L2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaA0KPiBpbmRleCBhNzhhODA5NmY0Y2UuLjIzNzRl YWZmZjdkYiAxMDA2NDQNCj4gLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2lmX3hkcC5oDQo+ICsr KyBiL2luY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaA0KPiBAQCAtNjMsNiArNjMsNyBAQCBzdHJ1 Y3QgeGRwX21tYXBfb2Zmc2V0cyB7DQo+ICAgI2RlZmluZSBYRFBfVU1FTV9DT01QTEVUSU9OX1JJ TkcJNg0KPiAgICNkZWZpbmUgWERQX1NUQVRJU1RJQ1MJCQk3DQo+ICAgI2RlZmluZSBYRFBfT1BU SU9OUwkJCTgNCj4gKyNkZWZpbmUgWERQX1RYX01FVEFEQVRBX0xFTgkJOQ0KPiAgIA0KPiAgIHN0 cnVjdCB4ZHBfdW1lbV9yZWcgew0KPiAgIAlfX3U2NCBhZGRyOyAvKiBTdGFydCBvZiBwYWNrZXQg ZGF0YSBhcmVhICovDQo+IGRpZmYgLS1naXQgYS9uZXQveGRwL3hzay5jIGIvbmV0L3hkcC94c2su Yw0KPiBpbmRleCBjYzFlN2YxNWZhNzMuLmM5YjJkYWJhN2I2ZCAxMDA2NDQNCj4gLS0tIGEvbmV0 L3hkcC94c2suYw0KPiArKysgYi9uZXQveGRwL3hzay5jDQo+IEBAIC00ODUsNiArNDg1LDcgQEAg c3RhdGljIHN0cnVjdCBza19idWZmICp4c2tfYnVpbGRfc2tiKHN0cnVjdCB4ZHBfc29jayAqeHMs DQo+ICAgCQlpbnQgZXJyOw0KPiAgIA0KPiAgIAkJaHIgPSBtYXgoTkVUX1NLQl9QQUQsIEwxX0NB Q0hFX0FMSUdOKGRldi0+bmVlZGVkX2hlYWRyb29tKSk7DQo+ICsJCWhyID0gbWF4KGhyLCBMMV9D QUNIRV9BTElHTigodTMyKXhzLT50eF9tZXRhZGF0YV9sZW4pKTsNCj4gICAJCXRyID0gZGV2LT5u ZWVkZWRfdGFpbHJvb207DQo+ICAgCQlsZW4gPSBkZXNjLT5sZW47DQo+ICAgDQo+IEBAIC00OTMs MTQgKzQ5NCwyMSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnhza19idWlsZF9za2Ioc3RydWN0 IHhkcF9zb2NrICp4cywNCj4gICAJCQlyZXR1cm4gRVJSX1BUUihlcnIpOw0KPiAgIA0KPiAgIAkJ c2tiX3Jlc2VydmUoc2tiLCBocik7DQo+IC0JCXNrYl9wdXQoc2tiLCBsZW4pOw0KPiArCQlza2Jf cHV0KHNrYiwgbGVuICsgeHMtPnR4X21ldGFkYXRhX2xlbik7DQo+ICAgDQo+ICAgCQlidWZmZXIg PSB4c2tfYnVmZl9yYXdfZ2V0X2RhdGEoeHMtPnBvb2wsIGRlc2MtPmFkZHIpOw0KPiArCQlidWZm ZXIgLT0geHMtPnR4X21ldGFkYXRhX2xlbjsNCj4gKw0KPiAgIAkJZXJyID0gc2tiX3N0b3JlX2Jp dHMoc2tiLCAwLCBidWZmZXIsIGxlbik7DQo+ICAgCQlpZiAodW5saWtlbHkoZXJyKSkgew0KPiAg IAkJCWtmcmVlX3NrYihza2IpOw0KPiAgIAkJCXJldHVybiBFUlJfUFRSKGVycik7DQo+ICAgCQl9 DQo+ICsNCj4gKwkJaWYgKHhzLT50eF9tZXRhZGF0YV9sZW4pIHsNCj4gKwkJCXNrYl9tZXRhZGF0 YV9zZXQoc2tiLCB4cy0+dHhfbWV0YWRhdGFfbGVuKTsNCj4gKwkJCV9fc2tiX3B1bGwoc2tiLCB4 cy0+dHhfbWV0YWRhdGFfbGVuKTsNCj4gKwkJfQ0KPiAgIAl9DQo+ICAgDQo+ICAgCXNrYi0+ZGV2 ID0gZGV2Ow0KPiBAQCAtMTEzNyw2ICsxMTQ1LDI3IEBAIHN0YXRpYyBpbnQgeHNrX3NldHNvY2tv cHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwNCj4gICAJCW11 dGV4X3VubG9jaygmeHMtPm11dGV4KTsNCj4gICAJCXJldHVybiBlcnI7DQo+ICAgCX0NCj4gKwlj YXNlIFhEUF9UWF9NRVRBREFUQV9MRU46DQo+ICsJew0KPiArCQlpbnQgdmFsOw0KPiArDQo+ICsJ CWlmIChvcHRsZW4gPCBzaXplb2YodmFsKSkNCj4gKwkJCXJldHVybiAtRUlOVkFMOw0KPiArCQlp ZiAoY29weV9mcm9tX3NvY2twdHIoJnZhbCwgb3B0dmFsLCBzaXplb2YodmFsKSkpDQo+ICsJCQly ZXR1cm4gLUVGQVVMVDsNCj4gKw0KPiArCQlpZiAodmFsID49IDI1NikNCj4gKwkJCXJldHVybiAt RUlOVkFMOw0KPiArDQo+ICsJCW11dGV4X2xvY2soJnhzLT5tdXRleCk7DQo+ICsJCWlmICh4cy0+ c3RhdGUgIT0gWFNLX1JFQURZKSB7DQo+ICsJCQltdXRleF91bmxvY2soJnhzLT5tdXRleCk7DQo+ ICsJCQlyZXR1cm4gLUVCVVNZOw0KPiArCQl9DQo+ICsJCXhzLT50eF9tZXRhZGF0YV9sZW4gPSB2 YWw7DQo+ICsJCW11dGV4X3VubG9jaygmeHMtPm11dGV4KTsNCj4gKwkJcmV0dXJuIGVycjsNCj4g Kwl9DQo+ICAgCWRlZmF1bHQ6DQo+ICAgCQlicmVhazsNCj4gICAJfQ0KPiBkaWZmIC0tZ2l0IGEv bmV0L3hkcC94c2tfYnVmZl9wb29sLmMgYi9uZXQveGRwL3hza19idWZmX3Bvb2wuYw0KPiBpbmRl eCAyNmY2ZDMwNDQ1MWUuLjY2ZmY5YzM0NWE2NyAxMDA2NDQNCj4gLS0tIGEvbmV0L3hkcC94c2tf YnVmZl9wb29sLmMNCj4gKysrIGIvbmV0L3hkcC94c2tfYnVmZl9wb29sLmMNCj4gQEAgLTg1LDYg Kzg1LDcgQEAgc3RydWN0IHhza19idWZmX3Bvb2wgKnhwX2NyZWF0ZV9hbmRfYXNzaWduX3VtZW0o c3RydWN0IHhkcF9zb2NrICp4cywNCj4gICAJCVhEUF9QQUNLRVRfSEVBRFJPT007DQo+ICAgCXBv b2wtPnVtZW0gPSB1bWVtOw0KPiAgIAlwb29sLT5hZGRycyA9IHVtZW0tPmFkZHJzOw0KPiArCXBv b2wtPnR4X21ldGFkYXRhX2xlbiA9IHhzLT50eF9tZXRhZGF0YV9sZW47DQo+ICAgCUlOSVRfTElT VF9IRUFEKCZwb29sLT5mcmVlX2xpc3QpOw0KPiAgIAlJTklUX0xJU1RfSEVBRCgmcG9vbC0+eHNr X3R4X2xpc3QpOw0KPiAgIAlzcGluX2xvY2tfaW5pdCgmcG9vbC0+eHNrX3R4X2xpc3RfbG9jayk7 DQo+IGRpZmYgLS1naXQgYS9uZXQveGRwL3hza19xdWV1ZS5oIGIvbmV0L3hkcC94c2tfcXVldWUu aA0KPiBpbmRleCA2ZDQwYTc3ZmNjYmUuLmM4ZDI4N2MxOGQ2NCAxMDA2NDQNCj4gLS0tIGEvbmV0 L3hkcC94c2tfcXVldWUuaA0KPiArKysgYi9uZXQveGRwL3hza19xdWV1ZS5oDQo+IEBAIC0xMzMs MTIgKzEzMywxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgeHNrcV9jb25zX3JlYWRfYWRkcl91bmNo ZWNrZWQoc3RydWN0IHhza19xdWV1ZSAqcSwgdTY0ICphZGRyKQ0KPiAgIHN0YXRpYyBpbmxpbmUg Ym9vbCB4cF9hbGlnbmVkX3ZhbGlkYXRlX2Rlc2Moc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2ws DQo+ICAgCQkJCQkgICAgc3RydWN0IHhkcF9kZXNjICpkZXNjKQ0KPiAgIHsNCj4gLQl1NjQgb2Zm c2V0ID0gZGVzYy0+YWRkciAmIChwb29sLT5jaHVua19zaXplIC0gMSk7DQo+ICsJdTY0IGFkZHIg PSBkZXNjLT5hZGRyIC0gcG9vbC0+dHhfbWV0YWRhdGFfbGVuOw0KPiArCXU2NCBvZmZzZXQgPSBh ZGRyICYgKHBvb2wtPmNodW5rX3NpemUgLSAxKTsNCj4gICANCj4gICAJaWYgKG9mZnNldCArIGRl c2MtPmxlbiA+IHBvb2wtPmNodW5rX3NpemUpDQo+ICAgCQlyZXR1cm4gZmFsc2U7DQo+ICAgDQo+ IC0JaWYgKGRlc2MtPmFkZHIgPj0gcG9vbC0+YWRkcnNfY250KQ0KPiArCWlmIChhZGRyID49IHBv b2wtPmFkZHJzX2NudCkNCj4gICAJCXJldHVybiBmYWxzZTsNCj4gICANCj4gICAJaWYgKGRlc2Mt Pm9wdGlvbnMpDQo+IEBAIC0xNDksNyArMTUwLDcgQEAgc3RhdGljIGlubGluZSBib29sIHhwX2Fs aWduZWRfdmFsaWRhdGVfZGVzYyhzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwNCj4gICBzdGF0 aWMgaW5saW5lIGJvb2wgeHBfdW5hbGlnbmVkX3ZhbGlkYXRlX2Rlc2Moc3RydWN0IHhza19idWZm X3Bvb2wgKnBvb2wsDQo+ICAgCQkJCQkgICAgICBzdHJ1Y3QgeGRwX2Rlc2MgKmRlc2MpDQo+ICAg ew0KPiAtCXU2NCBhZGRyID0geHBfdW5hbGlnbmVkX2FkZF9vZmZzZXRfdG9fYWRkcihkZXNjLT5h ZGRyKTsNCj4gKwl1NjQgYWRkciA9IHhwX3VuYWxpZ25lZF9hZGRfb2Zmc2V0X3RvX2FkZHIoZGVz Yy0+YWRkcikgLSBwb29sLT50eF9tZXRhZGF0YV9sZW47DQo+ICAgDQo+ICAgCWlmIChkZXNjLT5s ZW4gPiBwb29sLT5jaHVua19zaXplKQ0KPiAgIAkJcmV0dXJuIGZhbHNlOw0K