From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mail.toke.dk (Postfix) with ESMTPS id BB44A9FA143 for ; Thu, 30 Mar 2023 11:51:33 +0200 (CEST) Authentication-Results: mail.toke.dk; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=KtFtfNlZ DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1680169892; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=vARvNHeJ+W89AdgUOlKd7JM+FHzR0dOpHriTAosKSAg=; b=KtFtfNlZ2MlSNW26GfS5hkzUD6jeSLbFyPT88ZDpqh3K6/cbPyvqz9QEau+MbVpwH7AoQZ +M/sLrJIbcoPd2IYAPhwn9uiwfPYWg931wdMlGi9OlcvBJ7AcU6nbk625QgyJQD/aUSrGW Rl/nSyjfbeCZtu9yWn8xiQV7ul0C6RY= Received: from mail-lf1-f72.google.com (mail-lf1-f72.google.com [209.85.167.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-654-AGG4h6exPrGC-Q8dOLD9uA-1; Thu, 30 Mar 2023 05:51:28 -0400 X-MC-Unique: AGG4h6exPrGC-Q8dOLD9uA-1 Received: by mail-lf1-f72.google.com with SMTP id d23-20020a193857000000b004e9d2af9e57so7266143lfj.23 for ; Thu, 30 Mar 2023 02:51:28 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680169887; h=content-transfer-encoding:in-reply-to:references:to :content-language:subject:cc:user-agent:mime-version:date:message-id :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=vARvNHeJ+W89AdgUOlKd7JM+FHzR0dOpHriTAosKSAg=; b=2q6W1KMW3YqdeFWU2xqRueZzWK+6cyi+0d0wqnWmaT56A+tVP0n5EHCT2nSzJQ1WJ/ O2VUQ++qzsyFKWYZYwCDyaVbDdqWkoEYLa++C4OoPIzNzABZSonKAcko/f/tQ0TovHjk 2H0o+/ers4/t+5GTQmWrNGQVTZnAZ5WJMtv4MEzdRE25zAtWxkKS6eouawbWzeoMluEu ctpptMGDkEwKuMJdOoTOxXlJ0AqwLlwXY0ZfgFmjM3T7AWt+3Sa5GHQSKTBd68nwXu1w l+09Uh/NpThxi2tP8/mcIaer/DN5LkS6NXE0ELlbz7j85KjGU7zhqXiloGajRFv/I0+V 28ag== X-Gm-Message-State: AAQBX9fxJ6U0oQnhDCpBTyP8HjVIL2PBFu845ol4DurGpUmopqJ6WOSj RgrXOql3huvGGLhkViScVQyjhXhGw+h8eUOU5rdsQV2ASJI9cbV4HHQkXHwDrprS7/b0DMgJMP2 Bu/du5+T/6krlTd6NhX9S X-Received: by 2002:ac2:4422:0:b0:4dd:9da1:aa82 with SMTP id w2-20020ac24422000000b004dd9da1aa82mr7386856lfl.29.1680169887105; Thu, 30 Mar 2023 02:51:27 -0700 (PDT) X-Google-Smtp-Source: AKy350aYAuHqGLXqNcaucK63lT+y4cBQlu/p1fMHtBQbwRMoCVEpXYJBq5CS5/uG7hjHoGpi3exLyw== X-Received: by 2002:ac2:4422:0:b0:4dd:9da1:aa82 with SMTP id w2-20020ac24422000000b004dd9da1aa82mr7386842lfl.29.1680169886710; Thu, 30 Mar 2023 02:51:26 -0700 (PDT) Received: from [192.168.42.100] (83-90-141-187-cable.dk.customer.tdc.net. [83.90.141.187]) by smtp.gmail.com with ESMTPSA id b16-20020a056512025000b004d85316f2d6sm5790721lfo.118.2023.03.30.02.51.25 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 30 Mar 2023 02:51:26 -0700 (PDT) From: Jesper Dangaard Brouer X-Google-Original-From: Jesper Dangaard Brouer Message-ID: <7ce10be6-bda2-74fc-371b-9791558af5b5@redhat.com> Date: Thu, 30 Mar 2023 11:51:23 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 To: Stanislav Fomichev , Jesper Dangaard Brouer References: <168003451121.3027256.13000250073816770554.stgit@firesoul> <168003455815.3027256.7575362149566382055.stgit@firesoul> <811724e2-cdd6-15fe-b176-9dfcdbd98bad@redhat.com> In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: base64 Message-ID-Hash: YECDJVCYLLCI6QSTZFD5BAWII3S6KASH X-Message-ID-Hash: YECDJVCYLLCI6QSTZFD5BAWII3S6KASH X-MailFrom: jbrouer@redhat.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, bpf@vger.kernel.org, netdev@vger.kernel.org, martin.lau@kernel.org, ast@kernel.org, daniel@iogearbox.net, alexandr.lobakin@intel.com, larysa.zaremba@intel.com, xdp-hints@xdp-project.net, anthony.l.nguyen@intel.com, yoong.siang.song@intel.com, boon.leong.ong@intel.com, intel-wired-lan@lists.osuosl.org, pabeni@redhat.com, jesse.brandeburg@intel.com, kuba@kernel.org, edumazet@google.com, john.fastabend@gmail.com, hawk@kernel.org, davem@davemloft.net X-Mailman-Version: 3.3.8 Precedence: list Subject: [xdp-hints] Re: [PATCH bpf RFC 1/4] xdp: rss hash types representation List-Id: XDP hardware hints design discussion Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: DQpPbiAzMC8wMy8yMDIzIDAxLjE5LCBTdGFuaXNsYXYgRm9taWNoZXYgd3JvdGU6DQo+IE9uIDAz LzI5LCBKZXNwZXIgRGFuZ2FhcmQgQnJvdWVyIHdyb3RlOg0KPiANCj4+IE9uIDI5LzAzLzIwMjMg MTkuMTgsIFN0YW5pc2xhdiBGb21pY2hldiB3cm90ZToNCj4+ID4gT24gMDMvMjksIEplc3BlciBE YW5nYWFyZCBCcm91ZXIgd3JvdGU6DQo+PiA+DQo+PiA+ID4gT24gMjgvMDMvMjAyMyAyMy41OCwg U3RhbmlzbGF2IEZvbWljaGV2IHdyb3RlOg0KPj4gPiA+ID4gT24gMDMvMjgsIEplc3BlciBEYW5n YWFyZCBCcm91ZXIgd3JvdGU6DQo+PiA+ID4gPiA+IFRoZSBSU1MgaGFzaCB0eXBlIHNwZWNpZmll cyB3aGF0IHBvcnRpb24gb2YgcGFja2V0IGRhdGEgTklDIGhhcmR3YXJlIHVzZWQNCj4+ID4gPiA+ ID4gd2hlbiBjYWxjdWxhdGluZyBSU1MgaGFzaCB2YWx1ZS4gVGhlIFJTUyB0eXBlcyBhcmUgZm9j dXNlZCBvbiBJbnRlcm5ldA0KPj4gPiA+ID4gPiB0cmFmZmljIHByb3RvY29scyBhdCBPU0kgbGF5 ZXJzIEwzIGFuZCBMNC4gTDIgKGUuZy4gQVJQKSBvZnRlbiBnZXQgaGFzaA0KPj4gPiA+ID4gPiB2 YWx1ZSB6ZXJvIGFuZCBubyBSU1MgdHlwZS4gRm9yIEwzIGZvY3VzZWQgb24gSVB2NCB2cy4gSVB2 NiwgYW5kIEw0DQo+PiA+ID4gPiA+IHByaW1hcmlseSBUQ1AgdnMgVURQLCBidXQgc29tZSBoYXJk d2FyZSBzdXBwb3J0cyBTQ1RQLg0KPj4gPiA+ID4NCj4+ID4gPiA+ID4gSGFyZHdhcmUgUlNTIHR5 cGVzIGFyZSBkaWZmZXJlbnRseSBlbmNvZGVkIGZvciBlYWNoIGhhcmR3YXJlIE5JQy4gTW9zdA0K Pj4gPiA+ID4gPiBoYXJkd2FyZSByZXByZXNlbnQgUlNTIGhhc2ggdHlwZSBhcyBhIG51bWJlci4g RGV0ZXJtaW5pbmcgTDMgIHZzIEw0IG9mdGVuDQo+PiA+ID4gPiA+IHJlcXVpcmVzIGEgbWFwcGlu ZyB0YWJsZSBhcyB0aGVyZSBvZnRlbiBpc24ndCBhIHBhdHRlcm4gb3Igc29ydGluZw0KPj4gPiA+ ID4gPiBhY2NvcmRpbmcgdG8gSVNPIGxheWVyLg0KPj4gPiA+ID4NCj4+ID4gPiA+ID4gVGhlIHBh dGNoIGludHJvZHVjZSBhIFhEUCBSU1MgaGFzaCB0eXBlICh4ZHBfcnNzX2hhc2hfdHlwZSkgdGhh dCBjYW4gYm90aA0KPj4gPiA+ID4gPiBiZSBzZWVuIGFzIGEgbnVtYmVyIHRoYXQgaXMgb3JkZXJl ZCBhY2NvcmRpbmcgYnkgSVNPIGxheWVyLCBhbmQgY2FuIGJlIGJpdA0KPj4gPiA+ID4gPiBtYXNr ZWQgdG8gc2VwYXJhdGUgSVB2NCBhbmQgSVB2NiB0eXBlcyBmb3IgTDQgcHJvdG9jb2xzLiBSb29t IGlzIGF2YWlsYWJsZQ0KPj4gPiA+ID4gPiBmb3IgZXh0ZW5kaW5nIGxhdGVyIHdoaWxlIGtlZXBp bmcgdGhlc2UgcHJvcGVydGllcy4gVGhpcyBtYXBzIGFuZCB1bmlmaWVzDQo+PiA+ID4gPiA+IGRp ZmZlcmVuY2UgdG8gaGFyZHdhcmUgc3BlY2lmaWMgaGFzaGVzLg0KPj4gPiA+ID4NCj4+ID4gPiA+ IExvb2tzIGdvb2Qgb3ZlcmFsbC4gQW55IHJlYXNvbiB3ZSdyZSBtYWtpbmcgdGhpcyBzcGVjaWZp YyBsYXlvdXQ/DQo+PiA+DQo+PiA+ID4gT25lIGltcG9ydGFudCBnb2FsIGlzIHRvIGhhdmUgYSBz aW1wbGUvZmFzdCB3YXkgdG8gZGV0ZXJtaW5pbmcgTDMgdnMgTDQsDQo+PiA+ID4gYmVjYXVzZSBh IEw0IGhhc2ggY2FuIGJlIHVzZWQgZm9yIGZsb3cgaGFuZGxpbmcgKGUuZy4gbG9hZC1iYWxhbmNp bmcpLg0KPj4gPg0KPj4gPiA+IFdlIGJlbG93IGxheW91dCB5b3UgY2FuOg0KPj4gPg0KPj4gPiA+ IMKgIGlmIChyc3NfdHlwZSAmIFhEUF9SU1NfVFlQRV9MNF9NQVNLKQ0KPj4gPiA+IMKgwqDCoMKg Ym9vbCBod19oYXNoX2RvX0xCID0gdHJ1ZTsNCj4+ID4NCj4+ID4gPiBPciB1c2luZyBpdCBhcyBh IG51bWJlcjoNCj4+ID4NCj4+ID4gPiDCoCBpZiAocnNzX3R5cGUgPiBYRFBfUlNTX1RZUEVfTDQp DQo+PiA+ID4gwqDCoMKgwqBib29sIGh3X2hhc2hfZG9fTEIgPSB0cnVlOw0KPj4gPg0KPj4gPiBX aHkgaXMgaXQgc3RyaWN0bHkgYmV0dGVyIHRoZW4gdGhlIGZvbGxvd2luZz8NCj4+ID4NCj4+ID4g aWYgKHJzc190eXBlICYgKFRZUEVfVURQIHwgVFlQRV9UQ1AgfCBUWVBFX1NDVFApKSB7fQ0KPj4g Pg0KPiANCj4+IFNlZSBWMiBJIGRyb3BwZWQgdGhlIGlkZWEgb2YgdGhpcyBiZWluZyBhIG51bWJl ciAodGhhdCBpZGVhIHdhcyBub3QgYQ0KPj4gZ29vZCBpZGVhKS4NCj4gDQo+IPCfkY0NCj4gDQo+ PiA+IElmIHdlIGFkZCBzb21lIG5ldyBMNCBmb3JtYXQsIHRoZSBicGYgcHJvZ3JhbXMgY2FuIGJl IHVwZGF0ZWQgdG8gc3VwcG9ydA0KPj4gPiBpdD8NCj4+ID4NCj4+ID4gPiBJJ20gdmVyeSBvcGVu IHRvIGNoYW5nZXMgdG8gbXkgInNwZWNpZmljIiBsYXlvdXQuwqAgSSBhbSBpbiBkb3VidCBpZg0K Pj4gPiA+IHVzaW5nIGl0IGFzIGEgbnVtYmVyIGlzIHRoZSByaWdodCBhcHByb2FjaCBhbmQgd29y dGggdGhlIHRyb3VibGUuDQo+PiA+DQo+PiA+ID4gPiBXaHkgbm90IHNpbXBseSB0aGUgZm9sbG93 aW5nPw0KPj4gPiA+ID4NCj4+ID4gPiA+IGVudW0gew0KPj4gPiA+ID7CoCDvv73vv73vv73vv71Y RFBfUlNTX1RZUEVfTk9ORSA9IDAsDQo+PiA+ID4gPsKgIO+/ve+/ve+/ve+/vVhEUF9SU1NfVFlQ RV9JUFY0ID0gQklUKDApLA0KPj4gPiA+ID7CoCDvv73vv73vv73vv71YRFBfUlNTX1RZUEVfSVBW NiA9IEJJVCgxKSwNCj4+ID4gPiA+wqAg77+977+977+977+9LyogSVB2NiB3aXRoIGV4dGVuc2lv biBoZWFkZXIuICovDQo+PiA+ID4gPsKgIO+/ve+/ve+/ve+/vS8qIGxldCdzIG5vdGUgXl5eIGl0 IGluIHRoZSBVQVBJPyAqLw0KPj4gPiA+ID7CoCDvv73vv73vv73vv71YRFBfUlNTX1RZUEVfSVBW Nl9FWCA9IEJJVCgyKSwNCj4+ID4gPiA+wqAg77+977+977+977+9WERQX1JTU19UWVBFX1VEUCA9 IEJJVCgzKSwNCj4+ID4gPiA+wqAg77+977+977+977+9WERQX1JTU19UWVBFX1RDUCA9IEJJVCg0 KSwNCj4+ID4gPiA+wqAg77+977+977+977+9WERQX1JTU19UWVBFX1NDVFAgPSBCSVQoNSksDQo+ PiA+DQo+PiA+ID4gV2Uga25vdyB0aGVzZSBiaXRzIGZvciBVRFAsIFRDUCwgU0NUUCAoYW5kIElQ U0VDKSBhcmUgZXhjbHVzaXZlLCB0aGV5DQo+PiA+ID4gY2Fubm90IGJlIHNldCBhdCB0aGUgc2Ft ZSB0aW1lLCBlLmcuIGFzIGEgcGFja2V0IGNhbm5vdCBib3RoIGJlIFVEUCBhbmQNCj4+ID4gPiBU Q1AuwqAgVGh1cywgdXNpbmcgdGhlc2UgYml0cyBhcyBhIG51bWJlciBtYWtlIHNlbnNlIHRvIG1l LCBhbmQgaXMgbW9yZQ0KPj4gPiA+IGNvbXBhY3QuDQoNClNlZSBiZWxvdywgd2h5IEknbSB3cm9u ZyAoaW4gc3RvcmluZyB0aGlzIGFzIG51bWJlcnMpLg0KDQo+PiA+DQo+PiA+IFsuLl0NCj4+ID4N Cj4+ID4gPiBUaGlzIEJJVCgpIGFwcHJvYWNoIGFsc28gaGF2ZSB0aGUgaXNzdWUgb2YgZXh0ZW5k aW5nIGl0IGxhdGVyIChmb3J3YXJkDQo+PiA+ID4gY29tcGF0aWJpbGl0eSkuwqAgQXMgbWVudGlv bmVkIGEgY29tbW9uIHRhc2sgd2lsbCBiZSB0byBjaGVjayBpZg0KPj4gPiA+IGhhc2gtdHlwZSBp cyBhIEw0IHR5cGUuwqAgU2VlIG1seDUgW3BhdGNoIDQvNF0gbmVlZGVkIHRvIGV4dGVuZCB3aXRo DQo+PiA+ID4gSVBTRUMuIE5vdGljZSBob3cgbXkgWERQX1JTU19UWVBFX0w0X01BU0sgY292ZXJz IGFsbCB0aGUgYml0cyB0aGF0IHRoaXMNCj4+ID4gPiBjYW4gYmUgZXh0ZW5kZWQgd2l0aCBuZXcg TDQgdHlwZXMsIHN1Y2ggdGhhdCBleGlzdGluZyBwcm9ncyB3aWxsIHN0aWxsDQo+PiA+ID4gd29y ayBjaGVja2luZyBmb3IgTDQgY2hlY2suwqAgSXQgY2FuIG9mLWNhdXNlIGJlIHNvbHZlZCBpbiB0 aGUgc2FtZSB3YXkNCj4+ID4gPiBmb3IgdGhpcyBCSVQoKSBhcHByb2FjaCBieSByZXNlcnZpbmcg c29tZSBiaXRzIHVwZnJvbnQgaW4gYSBtYXNrLg0KPj4gPg0KPj4gPiBXZSdyZSB1c2luZyA2IGJp dHMgb3V0IG9mIDY0LCB3ZSBzaG91bGQgYmUgZ29vZCBmb3IgYXdoaWxlPyBJZiB0aGVyZQ0KPj4g PiBpcyBldmVyIGEgZm9yd2FyZCBjb21wYXRpYmlsaXR5IGlzc3VlLCB3ZSBjYW4gYWx3YXlzIGNv bWUgdXAgd2l0aA0KPj4gPiBhIG5ldyBrZnVuYy4NCj4gDQo+PiBJIHdhbnQvbmVlZCBzdG9yZSB0 aGUgUlNTLXR5cGUgaW4gdGhlIHhkcF9mcmFtZSwgZm9yIFhEUF9SRURJUkVDVCBhbmQNCj4+IFNL QiB1c2UtY2FzZXMuwqAgVGh1cywgSSBkb24ndCB3YW50IHRvIHVzZSA2NC1iaXQvOC1ieXRlcywg YXMgeGRwX2ZyYW1lDQo+PiBzaXplIGlzIGxpbWl0ZWQgKGdpdmVuIGl0IHJlZHVjZXMgaGVhZHJv b20gZXhwYW5zaW9uKS4NCj4gDQo+PiA+DQo+PiA+IE9uZSBvdGhlciByZWxhdGVkIHF1ZXN0aW9u IEkgaGF2ZSBpczogc2hvdWxkIHdlIGV4cG9ydCB0aGUgdHlwZQ0KPj4gPiBvdmVyIHNvbWUgYWRk aXRpb25hbCBuZXcga2Z1bmMgYXJndW1lbnQ/IChpbnN0ZWFkIG9mIGFidXNpbmcgdGhlIHJldHVy bg0KPj4gPiB0eXBlKQ0KPiANCj4+IEdvb2QgcXVlc3Rpb24uIEkgd2FzIGFsc28gd29uZGVyaW5n IGlmIGl0IHdvdWxkbid0IGJlIGJldHRlciB0byBhZGQNCj4+IGFub3RoZXIga2Z1bmMgYXJndW1l bnQgd2l0aCB0aGUgcnNzX2hhc2hfdHlwZT8NCj4gDQo+PiBUaGF0IHdpbGwgY2hhbmdlIHRoZSBj YWxsIHNpZ25hdHVyZSwgc28gdGhhdCB3aWxsIG5vdCBiZSBlYXN5IHRvIGhhbmRsZQ0KPj4gYmV0 d2VlbiBrZXJuZWwgcmVsZWFzZXMuDQo+IA0KPiBBZ3JlZSB3aXRoIFRva2Ugb24gYSBzZXBhcmF0 ZSB0aHJlYWQ7IG1pZ2h0IG5vdCBiZSB0b28gbGF0ZSB0byBmaXQgaXQNCj4gaW50byBhbiByYy4u DQo+IA0KPj4gPiBNYXliZSB0aGF0IHdpbGwgbGV0IHVzIGRyb3AgdGhlIGV4cGxpY2l0IEJURl9U WVBFX0VNSVQgYXMgd2VsbD8NCj4gDQo+PiBTdXJlLCBpZiB3ZSBkZWZpbmUgaXQgYXMgYW4gYXJn dW1lbnQsIHRoZW4gaXQgd2lsbCBhdXRvbWF0aWNhbGx5DQo+PiBleHBvcnRlZCBhcyBCVEYuDQo+ IA0KPj4gPiA+ID4gfQ0KPj4gPiA+ID4NCj4+ID4gPiA+IEFuZCB0aGVuIHVzaW5nIFhEUF9SU1Nf VFlQRV9JUFY0fFhEUF9SU1NfVFlQRV9VRFAgdnMNCj4+ID4gPiA+IFhEUF9SU1NfVFlQRV9JUFY2 fFhYWCA/DQo+PiA+DQo+PiA+ID4gRG8gbm90aWNlLCB0aGF0IEkgYWxyZWFkeSBkb2VzIHNvbWUg bGV2ZWwgb2Ygb3InaW5nICgifCIpIGluIHRoaXMNCj4+ID4gPiBwcm9wb3NhbC7CoCBUaGUgbWFp biBkaWZmZXJlbmNlIGlzIHRoYXQgSSBoaWRlIHRoaXMgZnJvbSB0aGUgIGRyaXZlciwgYW5kDQo+ PiA+ID4ga2luZCBvZiBwcmUtY29tYmluZSB0aGUgdmFsaWQgY29tYmluYXRpb24gKGVudW0ncykg ZHJpdmVycyBjYW4gc2VsZWN0DQo+PiA+ID4gZnJvbS4gSSBkbyBnZXQgdGhlIHBvaW50LCBhbmQg SSB0aGluayBJIHdpbGwgY29tZSB1cCB3aXRoIGEgY29tYmluZWQNCj4+ID4gPiBzb2x1dGlvbiBi YXNlZCBvbiB5b3VyIGlucHV0Lg0KPj4gPg0KPj4gPg0KPj4gPiA+IFRoZSBSU1MgaGFzaGluZyB0 eXBlcyBhbmQgY29tYmluYXRpb25zIGNvbWVzIGZyb20gTSQgc3RhbmRhcmRzOg0KPj4gPiA+IMKg IFsxXSANCj4+IGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9lbi11cy93aW5kb3dzLWhhcmR3 YXJlL2RyaXZlcnMvbmV0d29yay9yc3MtaGFzaGluZy10eXBlcyNpcHY0LWhhc2gtdHlwZS1jb21i aW5hdGlvbnMNCj4+ID4NCj4+ID4gTXkgbWFpbiBjb25jZXJuIGhlcmUgaXMgdGhhdCB3ZSdyZSBv dmVyLWNvbXBsaWNhdGluZyBpdCB3aXRoIHRoZSBtYXNrcw0KPj4gPiBhbmQgdGhlIGZvcm1hdC4g V2l0aCB0aGUgZXhwbGljaXQgYml0cyB3ZSBjYW4gZWFzaWx5IG1hcCB0byB0aGF0DQo+PiA+IHNw ZWMgeW91IG1lbnRpb24uDQo+IA0KPj4gU2VlIGlmIHlvdSBsaWtlIG15IFJGQy1WMiBwcm9wb3Nh bCBiZXR0ZXIuDQo+PiBJdCBzaG91bGQgZ28gbW9yZSBpbiB5b3VyIGRpcmVjdGlvbi4NCj4gDQo+ IFllYWgsIEkgbGlrZSBpdCBiZXR0ZXIuIEJ0dywgd2h5IGhhdmUgYSBzZXBhcmF0ZSBiaXQgZm9y IFhEUF9SU1NfQklUX0VYPw0KDQpZZXMsIHdlIGNhbiByZW5hbWUgdGhlIEVYIGJpdCBkZWZpbmUg KHdoaWNoIGlzIGluIFYyKS4gIEkgcmVkdWNlZCB0aGUNCm5hbWUtbGVuZ3RoLCBiZWNhdXNlIGl0 IGFsbG93ZWQgdG8ga2VlcCBjb2RlIG9uLW9uZS1saW5lIHdoZW4gT1InaW5nLg0KDQo+IEFueSBy ZWFzb24gaXQncyBub3QgYSBYRFBfUlNTX0wzX0lQVjZfRVggd2l0aGluIFhEUF9SU1NfTDNfTUFT Sz8NCj4gDQoNCkhtbS4uLiBJIGd1ZXNzIGl0IGJlbG9uZ3Mgd2l0aCBMMy4NCg0KRG8gbm90aWNl IHRoYXQgYm90aCBJUHY0IGFuZCBJUHY2IGhhdmUgYSBmbGV4aWJsZSBoZWFkZXIgY2FsbGVkIGVp dGhlciANCm9wdGlvbnMvZXh0ZW5zaW9ucyBoZWFkZXJzLCBhZnRlciB0aGVpciBmaXhlZCBoZWFk ZXIuIChNbHg0IEhXIGNvbnRhaW5zIA0KdGhpcyBpbmZvIGZvciBJUHY0LCBidXQgSSBkaWRuJ3Qg ZXh0ZW5kIHhkcF9yc3NfaGFzaF90eXBlIGluIHRoYXQgcGF0Y2gpLg0KVGh1cywgd2UgY291bGQg aGF2ZSBhIHNpbmdsZSBCSVQgdGhhdCBpcyB2YWxpZCBmb3IgYm90aCBJUHY0IGFuZCBJUHY2Lg0K KFRoaXMgY2FuIGhlbHAgc3BlZWR1cCBwYWNrZXQgcGFyc2luZyBoYXZpbmcgdGhpcyBpbmZvKS4N Cg0KWy4uLl0NCj4gDQo+PiA+IEZvciBleGFtcGxlLCBmb3IgZm9yd2FyZCBjb21wYXQsIEknbSBu b3Qgc3VyZSB3ZSBjYW4gYXNzdW1lIHRoYXQgdGhlIHBlb3BsZQ0KPj4gPiB3aWxsIGRvOg0KPj4g PsKgIMKgwqDCoMKgInJzc190eXBlICYgWERQX1JTU19UWVBFX0w0X01BU0siDQo+PiA+IGluc3Rl YWQgb2Ygc29tZXRoaW5nIGxpa2U6DQo+PiA+wqAgwqDCoMKgwqAicnNzX3R5cGUgJiAoWERQX1JT U19UWVBFX0w0X0lQVjRfVENQfFhEUF9SU1NfVFlQRV9MNF9JUFY0X1VEUCkiDQo+PiA+DQo+IA0K Pj4gVGhpcyBjb2RlIGlzIGFsbG93ZWQgaW4gVjIgYW5kIHNob3VsZCBiZS4gSXQgaXMgYSBjaG9p Y2Ugb2YNCj4+IEJQRi1wcm9ncmFtbWVyIGluIGxpbmUtMiB0byBub3QgYmUgZm9yd2FyZCBjb21w YXRpYmxlIHdpdGggbmV3ZXIgTDQgDQo+PiB0eXBlcy4NCj4gDQoNClRoZSBhYm92ZSBjb2RlIG1h ZGUgbWUgcmVhbGl6ZSwgSSB3YXMgd3JvbmcgYW5kIHlvdSBhcmUgcmlnaHQsIHdlIHNob3VsZA0K cmVwcmVzZW50IHRoZSBMNCB0eXBlcyBhcyBCSVRzIChhbmQgbm90IGFzIG51bWJlcnMpLg0KRXZl bi10aG91Z2ggYSBzaW5nbGUgcGFja2V0IGNhbm5vdCBiZSBib3RoIFVEUCBhbmQgVENQIGF0IHRo ZSBzYW1lIHRpbWUsDQp0aGVuIGl0IGlzIHJlYXNvbmFibGUgdG8gaGF2ZSBhIGNvZGUgcGF0aCB0 aGF0IHdhbnQgdG8gbWF0Y2ggYm90aCBVRFANCmFuZCBUQ1AuICBJZiBMNCB0eXBlcyBhcmUgQklU cyB0aGVuIGNvZGUgY2FuIGRvIGEgc2luZ2xlIGNvbXBhcmUgKHZpYQ0KT1JpbmcpLCB3aGlsZSBp ZiB0aGV5IGFyZSBudW1iZXJzIHRoZW4gd2UgbmVlZCBtb3JlIGNvbXBhcmVzLg0KVGh1cywgSSds bCBjaGFuZ2Ugc2NoZW1lIGluIFYzIHRvIHVzZSBCSVRzLg0KDQoNCj4+ID4gPiA+ID4gVGhpcyBw cm9wb3NhbCBjaGFuZ2UgdGhlIGtmdW5jIEFQSSBicGZfeGRwX21ldGFkYXRhX3J4X2hhc2goKSAN Cj4+ID4gPiA+ID4gdG8gIHJldHVybiB0aGlzIFJTUyBoYXNoIHR5cGUgb24gc3VjY2Vzcy4NCj4g DQo+PiBUaGlzIGlzIHRoZSByZWFsIHF1ZXN0aW9uIChhcyBhbHNvIHJhaXNlZCBhYm92ZSkuLi4N Cj4+IFNob3VsZCB3ZSB1c2UgcmV0dXJuIHZhbHVlIG9yIGFkZCBhbiBhcmd1bWVudCBmb3IgdHlw ZT8NCj4gDQo+IExldCdzIGZpeCB0aGUgcHJvdG90eXBlIHdoaWxlIGl0J3Mgc3RpbGwgZWFybHkg aW4gdGhlIHJjPw0KDQpPa2F5LCBpbiBWMyBJIHdpbGwgcHJvcG9zZSBhZGRpbmcgYW4gYXJndW1l bnQgZm9yIHRoZSB0eXBlIHRoZW4uDQoNCj4gTWF5YmUgYWxzbyBleHRlbmQgdGhlIHRlc3RzIHRv IGRyb3AvZGVjb2RlL3ZlcmlmeSB0aGUgbWFzaz8NCg0KWWVzLCBJL3dlIG9idmlvdXNseSBuZWVk IHRvIHVwZGF0ZSB0aGUgc2VsZnRlc3RzLg0KDQpPbmUgcHJvYmxlbSB3aXRoIHNlbGZ0ZXN0cyBp cyB0aGF0IGl0J3MgdXNpbmcgdmV0aCBTS0ItYmFzZWQgbW9kZSwgYW5kDQpTS0IncyBoYXZlIGxv c3QgdGhlIFJTUyBoYXNoIGluZm8gYW5kIGNvbnZlcnRlZCB0aGlzIGludG8gYSBzaW5nbGUgQklU DQp0ZWxsaW5nIHVzIGlmIHRoaXMgd2FzIEw0IGJhc2VkLiAgVGh1cywgaXRzIGhhcmQgdG8gZG8g c29tZSBlLmcuIFVEUA0KdHlwZSB2ZXJpZmljYXRpb24sIGJ1dCBJIGd1ZXNzIHdlIGNhbiBjaGVj ayBpZiBleHBlY3RlZCBVRFAgcGFja2V0IGlzDQpSU1MgdHlwZSBMNC4NCg0KSW4geGRwX2h3X21l dGFkYXRhLCBJIHdpbGwgYWRkIHNvbWV0aGluZyB0aGF0IHVzZXMgdGhlIFJTUyB0eXBlIGJpdHMu ICBJDQp3YXMgdGhpbmtpbmcgdG8gbWF0Y2ggYWdhaW5zdCBMNC1VRFAgUlNTIHR5cGUgYXMgcHJv Z3JhbSBvbmx5IEFGX1hEUA0KcmVkaXJlY3QgVURQIHBhY2tldHMsIHNvIHdlIGNhbiB2ZXJpZnkg aXQgd2FzIGEgVURQIHBhY2tldCBieSBIVyBpbmZvLg0KDQotLUplc3Blcg0KDQo=