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.129.124]) by mail.toke.dk (Postfix) with ESMTPS id DA2379864A8 for ; Thu, 7 Jul 2022 13:41:56 +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=RFmZx9jH DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1657194114; 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=Hp9kplYxVeJvkCLXKH0+FwQt5V99ulIS4aLbfHs6BEI=; b=RFmZx9jHwb0hGe+xTnP4zzGOIv3HyCnTAd60kLCuM6FgCI/UZzcndvzloZ9ZNgAJJx4v4f Y3IZE2xYGtpDNVf86B7MkQaCIByOrJwHk1xMH4sLqVm5vpRpzZb9ne8/GGPcgpl9J9NaWg Un/iOLpz3v9yR37hL2Raxvm3Q9idgGo= Received: from mail-lf1-f70.google.com (mail-lf1-f70.google.com [209.85.167.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-195-KscTKYixPme3QtYiqahVkg-1; Thu, 07 Jul 2022 07:41:51 -0400 X-MC-Unique: KscTKYixPme3QtYiqahVkg-1 Received: by mail-lf1-f70.google.com with SMTP id i3-20020a056512318300b0047f86b47910so6271024lfe.14 for ; Thu, 07 Jul 2022 04:41:51 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:message-id:date:mime-version:user-agent:cc :subject:content-language:to:references:in-reply-to :content-transfer-encoding; bh=Hp9kplYxVeJvkCLXKH0+FwQt5V99ulIS4aLbfHs6BEI=; b=QyQ9VfwfKfO2uCp/o0liQpzq7aeWh9mNpPJQD+6JHghkg/5tbF/YLuCHvj/X9InQPB a3fJ0ZcZx1cKbnmMfkK+pQtvgDIgD9MGf0JAemzA0OEuW7muIyBryYDxp6AgsFFyKd2k 8YHjTpiq2y5epyGwj6RXO5Oi3VH1GKnRbCSOYfGsefAOjADf+HSHo+i7Zjf3/GgmZXrs Q/HKqKzRtamMQHBkUpMx/g/V+K69+VaC6GkO4ZEBhMb9F9oJsKkn0pmXmKPJP+Fuch0T eYJlwP0CQYgbtaqtJEatNUnUgCnSAoRdgSqMQbiSC+m0bM2ZNxIQ75/SiohdTai2XHn2 ssOA== X-Gm-Message-State: AJIora+TuJDYbPvLP9O/XvEyaluNBhKHmkgEuL2tOrCmZ3x8lj+nUPYP /YvEXhNxUJYzDHRzlMLrgigDxd7c6VhEpmqivFtgvSK+M7/5/QSBR+MjHxe3aPgRZjk8WKqfRZ+ V0yoBGHvRJCGe67g81Fzv X-Received: by 2002:a05:6512:2815:b0:47f:634b:8e8c with SMTP id cf21-20020a056512281500b0047f634b8e8cmr30273562lfb.213.1657194109707; Thu, 07 Jul 2022 04:41:49 -0700 (PDT) X-Google-Smtp-Source: AGRyM1tJvp1yW45Ik/b6uKDWK3rNW6z1PBOcgEu1Fiv4mR++0nJOx9+MEbwWB4l6FhGZ5EGZCX6dxg== X-Received: by 2002:a05:6512:2815:b0:47f:634b:8e8c with SMTP id cf21-20020a056512281500b0047f634b8e8cmr30273536lfb.213.1657194109352; Thu, 07 Jul 2022 04:41:49 -0700 (PDT) Received: from [192.168.0.50] (87-59-106-155-cable.dk.customer.tdc.net. [87.59.106.155]) by smtp.gmail.com with ESMTPSA id o4-20020a056512050400b004785b66a9a4sm3100587lfb.126.2022.07.07.04.41.47 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 07 Jul 2022 04:41:48 -0700 (PDT) From: Jesper Dangaard Brouer X-Google-Original-From: Jesper Dangaard Brouer Message-ID: <29c66391-e229-0692-7072-72bd56aa8da3@redhat.com> Date: Thu, 7 Jul 2022 13:41:47 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.10.0 To: =?UTF-8?Q?Toke_H=c3=b8iland-J=c3=b8rgensen?= , Alexander Lobakin References: <20220628194812.1453059-1-alexandr.lobakin@intel.com> <62bbedf07f44a_2181420830@john.notmuch> <87iloja8ly.fsf@toke.dk> <20220704154440.7567-1-alexandr.lobakin@intel.com> <87a69o94wz.fsf@toke.dk> <20220705154120.22497-1-alexandr.lobakin@intel.com> <87pmij75r1.fsf@toke.dk> <20220706135023.1464979-1-alexandr.lobakin@intel.com> <87edyxaks0.fsf@toke.dk> In-Reply-To: <87edyxaks0.fsf@toke.dk> Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jbrouer@redhat.com 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: SH3OUMGC4MZLZSCHKEXWC255NDPFJXHL X-Message-ID-Hash: SH3OUMGC4MZLZSCHKEXWC255NDPFJXHL 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, John Fastabend , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Larysa Zaremba , Michal Swiatkowski , Jesper Dangaard Brouer , =?UTF-8?B?QmrDtnJuIFTDtnBlbA==?= , Magnus Karlsson , Maciej Fijalkowski , Jonathan Lemon , Lorenzo Bianconi , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Jesse Brandeburg , Yajun Deng , Willem de Bruijn , bpf@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, xdp-hints@xdp-project.net X-Mailman-Version: 3.3.5 Precedence: list Subject: [xdp-hints] Re: [PATCH RFC bpf-next 00/52] bpf, xdp: introduce and use Generic Hints/metadata List-Id: XDP hardware hints design discussion Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: DQoNCk9uIDA3LzA3LzIwMjIgMDEuMjIsIFRva2UgSMO4aWxhbmQtSsO4cmdlbnNlbiB3cm90ZToN Cj4gQWxleGFuZGVyIExvYmFraW4gPGFsZXhhbmRyLmxvYmFraW5AaW50ZWwuY29tPiB3cml0ZXM6 DQo+IA0KPj4gRnJvbTogVG9rZSBIPz9pbGFuZC1KPz9yZ2Vuc2VuIDx0b2tlQHJlZGhhdC5jb20+ DQo+PiBEYXRlOiBUdWUsIDA1IEp1bCAyMDIyIDIwOjUxOjE0ICswMjAwDQo+Pg0KPj4+IEFsZXhh bmRlciBMb2Jha2luIDxhbGV4YW5kci5sb2Jha2luQGludGVsLmNvbT4gd3JpdGVzOg0KPj4+DQo+ Pj4gWy4uLiBzbmlwcGluZyBhIGJpdCBvZiBjb250ZXh0IGhlcmUgLi4uXQ0KPj4+DQo+Pj4+Pj4+ IFllYWgsIEknZCBhZ3JlZSB0aGlzIGtpbmQgb2YgY29uZmlndXJhdGlvbiBpcyBzb21ldGhpbmcg dGhhdCBjYW4gYmUNCj4+Pj4+Pj4gYWRkZWQgbGF0ZXIsIGFuZCBhbHNvIGl0J3Mgc29ydCBvZiBv cnRob2dvbmFsIHRvIHRoZSBjb25zdW1wdGlvbiBvZiB0aGUNCj4+Pj4+Pj4gbWV0YWRhdGEgaXRz ZWxmLg0KPj4+Pj4+Pg0KPj4+Pj4+PiBBbHNvLCB0eWluZyB0aGlzIGNvbmZpZ3VyYXRpb24gaW50 byB0aGUgbG9hZGluZyBvZiBhbiBYRFAgcHJvZ3JhbSBpcyBhDQo+Pj4+Pj4+IHRlcnJpYmxlIGlu dGVyZmFjZTogdGhlc2UgYXJlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgbGV0J3Mg anVzdA0KPj4+Pj4+PiBwdXQgdGhlbSBpbnRvIGV0aHRvb2wgb3IgJ2lwIGxpbmsnIGxpa2UgYW55 IG90aGVyIHBpZWNlIG9mIGRldmljZQ0KPj4+Pj4+PiBjb25maWd1cmF0aW9uLg0KPj4+Pj4+DQo+ Pj4+Pj4gSSBkb24ndCBiZWxpZXZlIGl0IGZpdHMgdGhlcmUsIGVzcGVjaWFsbHkgRXRodG9vbC4g RXRodG9vbCBpcyBmb3INCj4+Pj4+PiBoYXJkd2FyZSBjb25maWd1cmF0aW9uLCBYRFAvQUZfWERQ IGlzIDk1JSBzb2Z0d2FyZSBzdHVmZiAoYXBhcnQgZnJvbQ0KPj4+Pj4+IG9mZmxvYWQgYml0cyB3 aGljaCBpcyBwdXJlbHkgTkZQJ3MgZm9yIG5vdykuDQo+Pj4+Pg0KPj4+Pj4gQnV0IFhEUC1oaW50 cyBpcyBhYm91dCBjb25zdW1pbmcgaGFyZHdhcmUgZmVhdHVyZXMuIFdoZW4geW91J3JlDQo+Pj4+ PiBjb25maWd1cmluZyB3aGljaCBtZXRhZGF0YSBpdGVtcyB5b3Ugd2FudCwgeW91J3JlIHNheWlu ZyAicGxlYXNlIHByb3ZpZGUNCj4+Pj4+IG1lIHdpdGggdGhlc2UgKGhhcmR3YXJlKSBmZWF0dXJl cyIuIFNvIGV0aHRvb2wgaXMgYW4gZXhjZWxsZW50IHBsYWNlIHRvDQo+Pj4+PiBkbyB0aGF0IDop DQo+Pj4+DQo+Pj4+IFdpdGggRXRodG9vbCB5b3UgY29uZmlndXJlIHRoZSBoYXJkd2FyZSwgZS5n LiBpdCB3b24ndCBzdHJpcCBWTEFODQo+Pj4+IHRhZ3MgaWYgeW91IGRpc2FibGUgcngtY3ZsYW4t c3RyaXBwaW5nLiBXaXRoIGNvbmZpZ3VyaW5nIG1ldGFkYXRhDQo+Pj4+IHlvdSBvbmx5IHRlbGwg d2hhdCB5b3Ugd2FudCB0byBzZWUgdGhlcmUsIGRvbid0IHlvdT8NCj4+Pg0KPj4+IEFoLCBJIHRo aW5rIHdlIG1heSBiZSBnZXR0aW5nIGNsb3NlciB0byBpZGVudGlmeWluZyB0aGUgZGlzY29ubmVj dA0KPj4+IGJldHdlZW4gb3VyIHdheSBvZiB0aGlua2luZyBhYm91dCB0aGlzIQ0KPj4+DQo+Pj4g SW4gbXkgbWluZCwgdGhlcmUncyBubyBzZXBhcmF0ZSAiY29uZmlndXJhdGlvbiBvZiB0aGUgbWV0 YWRhdGEiIHN0ZXAuDQo+Pj4gWW91IHNpbXBseSB0ZWxsIHRoZSBoYXJkd2FyZSB3aGF0IGZlYXR1 cmVzIHlvdSB3YW50IChzYXksICJlbmFibGUNCj4+PiB0aW1lc3RhbXBzIGFuZCBWTEFOIG9mZmxv YWQiKSwgYW5kIHRoZSBkcml2ZXIgd2lsbCB0aGVuIHByb3ZpZGUgdGhlDQo+Pj4gaW5mb3JtYXRp b24gcmVsYXRlZCB0byB0aGVzZSBmZWF0dXJlcyBpbiB0aGUgbWV0YWRhdGEgYXJlYQ0KPj4+IHVu Y29uZGl0aW9uYWxseS4gQWxsIFhEUCBoaW50cyBpcyBhYm91dCwgdGhlbiwgaXMgYSB3YXkgZm9y IHRoZSBkcml2ZXINCj4+PiB0byBpbmZvcm0gdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbSBob3cgdGhh dCBpbmZvcm1hdGlvbiBpcyBhY3R1YWxseSBsYWlkDQo+Pj4gb3V0IGluIHRoZSBtZXRhZGF0YSBh cmVhLg0KPj4+DQo+Pj4gSGF2aW5nIGEgc2VwYXJhdGUgY29uZmlndXJhdGlvbiBrbm9iIHRvIHRl bGwgdGhlIGRyaXZlciAicGxlYXNlIGxheSBvdXQNCj4+PiB0aGVzZSBwYXJ0aWN1bGFyIGJpdHMg b2YgbWV0YWRhdGEgdGhpcyB3YXkiIHNlZW1zIGxpa2UgYSB0b3RhbGx5DQo+Pj4gdW5uZWNlc3Nh cnkgKGFuZCBxdWl0ZSBjb21wbGljYXRlZCkgZmVhdHVyZSB0byBoYXZlIHdoZW4gd2UgY2FuIGp1 c3QgbGV0DQo+Pj4gdGhlIGRyaXZlciBkZWNpZGUgYW5kIHVzZSBDTy1SRSB0byBjb25zdW1lIGl0 Pw0KPj4NCj4+IE1hZ251cyAoaGUncyBjdXJyZW50bHkgb24gdmFjYXRpb24pIHRvbGQgbWUgaXQg d291bGQgYmUgdXNlZnVsIGZvcg0KPj4gQUZfWERQIHRvIGVuYWJsZS9kaXNhYmxlIHBhcnRpY3Vs YXIgbWV0YWRhdGEsIGF0IGxlYXN0IGZyb20gcGVyZg0KPj4gcGVyc3BlY3RpdmUuIA0KDQpJIGhh dmUgcmVjZW50bHkgdGFsa2VkIHRvIE1hZ251cyAoaW4gcGVyc29uIGF0IEtlcm5lbCBSZWNpcGVz KSwgd2hlcmUgSQ0KdHJpZWQgdG8gY29udmV5IG15IG9waW5pb24sIHdoaWNoIGlzOiAgQXQgbGVh c3QgZm9yIGV4aXN0aW5nIGhhcmR3YXJlDQpoaW50cywgd2UgbmVlZCB0byByZXNwZWN0IHRoZSBl eGlzdGluZyBMaW51eCBrZXJuZWwncyBjb25maWcgaW50ZXJmYWNlcywNCmFuZCBub3QgaW52ZW50 IHlldC1hbm90aGVyLXdheSB0byBjb25maWd1cmUgdGhlc2UuDQooQXQgbGVhc3QgZm9yIG5vdykg dGhlIGtlcm5lbCBtb2R1bGUgZGVmaW5lZCBzdHJ1Y3RzIGluIEMtY29kZSBpcyB0aGUgDQpzb3Vy Y2Ugb2YgdHJ1dGgsIGFuZCB3ZSBjb25zdW1lIHRoZXNlIGxheW91dHMgdmlhIEJURiBpbmZvcm1h dGlvbiANCnByb3ZpZGVkIGJ5IHRoZSBrZXJuZWwgZm9yIG91ciBYRFAtaGludHMuDQoNCg0KPj4g TGV0J3Mgc2F5LCBqdXN0IGZldGNoaW5nIG9mIG9uZSAiY2hlY2tzdW0gb2siIGJpdCBpbg0KPj4g dGhlIGRyaXZlciBpcyBmYXN0ZXIgdGhhbiB3YWxraW5nIHRocm91Z2ggYWxsIHRoZSBkZXNjcmlw dG9yIHdvcmRzDQo+PiBhbmQgZHJpdmVyIGxvZ2ljcyAoaS5lLiB0aGVyZSdzIHNldmVyYWwgaHVu ZHJlZCBsb2NzIGluIGljZSB3aGljaA0KPj4ganVzdCBwYXJzZSBkZXNjcmlwdG9yIGRhdGEgYW5k IGJ1aWxkIGFuIHNrYiBvciBtZXRhZGF0YSBmcm9tIGl0KS4NCj4+IEJ1dCBpZiB3ZSB3b3VsZCBq dXN0IGVuYWJsZS9kaXNhYmxlIGNvcnJlc3BvbmRpbmcgZmVhdHVyZXMgdGhyb3VnaA0KPj4gRXRo dG9vbCwgdGhhdCB3b3VsZCBodXJ0IFhEUF9QQVNTLiBNYXliZSBpdCdzIGEgYmFkIGV4YW1wbGUs IGJ1dA0KPj4gd2hhdCBpZiBJIHdhbnQgdG8gaGF2ZSBvbmx5IFJTUyBoYXNoIGluIHRoZSBtZXRh ZGF0YSAoYW5kIGRvbid0DQo+PiB3YW50IHRvIHNwZW5kIGN5Y2xlcyBvbiBwYXJzaW5nIHRoZSBy ZXN0KSwgYnV0IGF0IHRoZSBzYW1lIHRpbWUNCj4+IHN0aWxsIHdhbnQgc2tiIHBhdGggdG8gaGF2 ZSBjaGVja3N1bSBzdGF0dXMgdG8gbm90IGRpZSBhdCBDUFUNCj4+IGNoZWNrc3VtIGNhbGN1bGF0 aW9uPw0KPiANCj4gSG1tLCBzbyB0aGlzIGZlZWxzIGEgbGl0dGxlIGxpa2UgYSBkcml2ZXItc3Bl Y2lmaWMgb3B0aW1pc2F0aW9uPyBJLmUuLA0KPiBteSBndWVzcyBpcyB0aGF0IG5vdCBhbGwgZHJp dmVycyBoYXZlIGEgbWVhc3VyYWJsZSBvdmVyaGVhZCBmb3IgcHVsbGluZw0KPiBvdXQgdGhlIG1l dGFkYXRhLiBBbHNvLCBvbmNlIHRoZSBYRFAgbWV0YWRhdGEgYml0cyBhcmUgaW4gcGxhY2UsIHdl IGNhbg0KPiBtb3ZlIGluIHRoZSBkaXJlY3Rpb24gb2YgYnVpbGRpbmcgU0tCcyBmcm9tIHRoZSBz YW1lIHNvdXJjZSwgc28gSSdtIG5vdA0KPiBzdXJlIGl0J3MgYSBnb29kIGlkZWEgdG8gYXNzdW1l IHRoYXQgdGhlIFhEUCBtZXRhZGF0YSBpcyBzZXBhcmF0ZSBmcm9tDQo+IHdoYXQgdGhlIHN0YWNr IGNvbnN1bWVzLi4uDQoNCkkgYWdyZWUuDQoNCj4gSW4gYW55IGNhc2UsIGlmIHN1Y2ggYW4gb3B0 aW1pc2F0aW9uIGRvZXMgdHVybiBvdXQgdG8gYmUgdXNlZnVsLCB3ZSBjYW4NCj4gYWRkIGl0IGxh dGVyIChiYWNrZWQgYnkgcmlnb3JvdXMgYmVuY2htYXJrcywgb2YgY291cnNlKSwgc28gSSB0aGlu ayB3ZQ0KPiBjYW4gc3RpbGwgc3RhcnQgd2l0aCB0aGUgc2ltcGxlIGNhc2UgYW5kIGl0ZXJhdGUg ZnJvbSB0aGVyZT8NCg0KRm9yIGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIGdlbmVyaWMgaGludHMgZGF0 YS1zdHJ1Y3R1cmUsIHdlIGFscmVhZHkgaGF2ZSBhDQpwZXItZWxlbWVudCBlbmFibGUvZGlzYWJs ZSBmYWNpbGl0aWVzLiAgQXMgdGhleSBhcmUgYWxyZWFkeSBjb250cm9sbGVkDQpieSBldGh0b29s LiAgRXhjZXB0IHRoZSB0aW1lc3RhbXBpbmcsIHdoaWNoIGNhbiBiZSBlbmFibGVkIHZpYSBhIHNv Y2tvcHQuDQpJIGRvbid0IHNlZSBhIGJlbmVmaXQgb2YgY3JlYXRpbmcgYW5vdGhlciBsYXllciAo b2YgaWYtc3RhdGVtZW50cykgdGhhdA0KYXJlIGFsc28gcmVxdWlyZWQgdG8gZ2V0IHRoZSBIVyBo aW50IHdyaXR0ZW4gdG8gWERQLWhpbnRzIG1ldGFkYXRhIGFyZWEuDQoNCg0KDQo+Pj4+Pj4gSSBm b2xsb3cgdGhhdCB3YXk6DQo+Pj4+Pj4NCj4+Pj4+PiAxKSB5b3UgcGljayBhIHByb2dyYW0geW91 IHdhbnQgdG8gYXR0YWNoOw0KPj4+Pj4+IDIpIHVzdWFsbHkgdGhleSBhcmUgd3JpdHRlbiBmb3Ig c3BlY2lhbCBuZWVkcyBhbmQgdXNlY2FzZXM7DQo+Pj4+Pj4gMykgc28gbW9zdCBsaWtlbHkgdGhh dCBwcm9ncmFtIHdpbGwgYmUgdGllZCB3aXRoIG1ldGFkYXRhL2RyaXZlci9ldGMNCj4+Pj4+PiAg ICAgaW4gc29tZSB3YXk7DQo+Pj4+Pj4gNCkgc28geW91IHdhbnQgdG8gZW5hYmxlIEhpbnRzIG9m IGEgcGFydGljdWxhciBmb3JtYXQgcHJpbWFyaWx5IGZvcg0KPj4+Pj4+ICAgICB0aGlzIHByb2dy YW0gYW5kIHVzZWNhc2UsIHNhbWUgd2l0aCB0aHJlc2hvbGQgYW5kIGV2ZXJ5dGhpbmcNCj4+Pj4+ PiAgICAgZWxzZS4NCj4+Pj4+Pg0KPj4+Pj4+IFBscyBleHBsYWluIGhvdyB5b3Ugc2VlIGl0LCBJ IG1pZ2h0IGJlIHdyb25nIGZvciBzdXJlLg0KPj4+Pj4NCj4+Pj4+IEFzIGFib3ZlOiBYRFAgaGlu dHMgaXMgYWJvdXQgZ2l2aW5nIFhEUCBwcm9ncmFtcyAoYW5kIEFGX1hEUCBjb25zdW1lcnMpDQo+ Pj4+PiBhY2Nlc3MgdG8gbWV0YWRhdGEgdGhhdCBpcyBub3QgY3VycmVudGx5IGF2YWlsYWJsZS4g VHlpbmcgdGhlIGxpZmV0aW1lDQo+Pj4+PiBvZiB0aGF0IGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24g KGkuZS4sIHdoaWNoIGluZm9ybWF0aW9uIHRvIHByb3ZpZGUpIHRvDQo+Pj4+PiB0aGUgbGlmZXRp bWUgb2YgYW4gWERQIHByb2dyYW0gaXMgbm90IGEgZ29vZCBpbnRlcmZhY2U6IGZvciBvbmUgdGhp bmcsDQo+Pj4+PiBob3cgd2lsbCBpdCBoYW5kbGUgbXVsdGlwbGUgcHJvZ3JhbXM/IFdoYXQgYWJv dXQgd2hlbiBYRFAgaXMgbm90IHVzZWQgYXQNCj4+Pj4NCj4+Pj4gTXVsdGlwbGUgcHJvZ3MgaXMg c3R1ZmYgSSBkaWRuJ3QgY292ZXIsIGJ1dCB3aWxsIGRvIGxhdGVyIChhcyB5b3UNCj4+Pj4gYWxs IHNheSB0byBtZSwgImxldCdzIHN0YXJ0IHdpdGggc29tZXRoaW5nIHNpbXBsZSIgOikpLiBBYWFh bmQNCj4+Pj4gbXVsdGlwbGUgWERQIHByb2dzIChJJ20gbm90IHRhbGtpbmcgYWJvdXQgYXR0YWNo aW5nIHByb2dzIGluDQo+Pj4+IGRpZmZlcmVuZyBtb2RlcykgaXMgbm90IGEga2VybmVsIGZlYXR1 cmUsIHJhdGhlciBhIGxpYnBmIGZlYXR1cmUsDQo+Pj4+IHNvIEkgYmVsaWV2ZSBpdCBzaG91bGQg YmUgaGFuZGxlZCB0aGVyZSBsYXRlci4uLg0KPj4+DQo+Pj4gUmlnaHQsIGJ1dCBldmVuIGlmIHdl IGRvbid0ICppbXBsZW1lbnQqIGl0IHN0cmFpZ2h0IGF3YXkgd2Ugc3RpbGwgbmVlZA0KPj4+IHRv IHRha2UgaXQgaW50byBjb25zaWRlcmF0aW9uIGluIHRoZSBkZXNpZ24uIEFuZCBleHBlY3Rpbmcg bGlieGRwIHRvDQo+Pj4gYXJiaXRyYXRlIGJldHdlZW4gZGlmZmVyZW50IFhEUCBwcm9ncmFtcycg bWV0YWRhdGEgZm9ybWF0cyBzb3VuZHMgbGlrZSBhDQo+Pj4gcm95YWwgUElUQSA6KQ0KPj4+DQo+ Pj4+PiBhbGwgYnV0IHlvdSBzdGlsbCB3YW50IHRvIGNvbmZpZ3VyZSB0aGUgc2FtZSBmZWF0dXJl cz8NCj4+Pj4NCj4+Pj4gV2hhdCdzIHRoZSBwb2ludCBvZiBjb25maWd1cmluZyBtZXRhZGF0YSB3 aGVuIHRoZXJlIGFyZSBubyBwcm9ncw0KPj4+PiBhdHRhY2hlZD8gVG8gY29uZmlndXJlIGl0IG9u Y2UgYW5kIG5vdCBvbiBldmVyeSBwcm9nIGF0dGFjaD8gSSdtDQo+Pj4+IG5vdCBzYXlpbmcgSSBk b24ndCBsaWtlIGl0LCBqdXN0IHdhbnQgdG8gY2xhcmlmeS4NCj4+Pg0KPj4+IFNlZSBhYm92ZTog eW91IHR1cm4gb24gdGhlIGZlYXR1cmVzIGJlY2F1c2UgeW91IHdhbnQgdGhlIHN0YWNrIHRvDQo+ Pj4gY29uc3VtZSB0aGVtLg0KPj4+DQo+Pj4+IE1heWJlIEkgbmVlZCBvcGluaW9ucyBmcm9tIHNv bWUgbW9yZSBwZW9wbGUsIGp1c3QgdG8gaGF2ZSBhbg0KPj4+PiBvdmVydmlldyBvZiBob3cgbW9z dCBvZiBmb2xrcyBzZWUgaXQgYW5kIHdvdWxkIGxpa2UgdG8gY29uZmlndXJlDQo+Pj4+IGl0LiAn Q2F1c2UgSSBoZWFyZCBmcm9tIGF0IGxlYXN0IG9uZSBvZiB0aGUgY29uc3VtZXJzIHRoYXQNCj4+ Pj4gbGlicGYgQVBJIGlzIGEgcGVyZmVjdCBwbGFjZSBmb3IgSGludHMgdG8gaGltIDopDQo+Pj4N Cj4+PiBXZWxsLCBhcyBhIHByb2dyYW0gYXV0aG9yIHdobyB3YW50cyB0byBjb25zdW1lIGhpbnRz LCB5b3UnZCB1c2UNCj4+PiBsaWJ7YnBmLHhkcH0gQVBJcyB0byBkbyBzbyAocHJvYmFibHkgaW4g dGhlIGZvcm0gb2Ygc3VpdGFibGUgQ08tUkUNCj4+PiBtYWNyb3MpLi4uDQo+Pj4NCj4+Pj4+IElu IGFkZGl0aW9uLCBpbiBldmVyeSBvdGhlciBjYXNlIHdoZXJlIHdlIGRvIGR5bmFtaWMgZGF0YSBh Y2Nlc3MgKHdpdGgNCj4+Pj4+IENPLVJFKSB0aGUgQlBGIHByb2dyYW0gaXMgYSBjb25zdW1lciB0 aGF0IG1vZGlmaWVzIGl0c2VsZiB0byBhY2Nlc3MgdGhlDQo+Pj4+PiBkYXRhIHByb3ZpZGVkIGJ5 IHRoZSBrZXJuZWwuIEkgZ2V0IHRoYXQgdGhpcyBpcyBoYXJkZXIgdG8gYWNoaWV2ZSBmb3INCj4+ Pj4+IEFGX1hEUCwgYnV0IHRoZW4gbGV0J3Mgc29sdmUgdGhhdCBpbnN0ZWFkIG9mIG1ha2luZyBh IHRvdGFsbHkNCj4+Pj4+IGluY29uc2lzdGVudCBpbnRlcmZhY2UgZm9yIFhEUC4NCj4+Pj4NCj4+ Pj4gSSBhbHNvIHNlZSBDTy1SRSBtb3JlIGZpdHRpbmcgYW5kIGNvbnZlbmllbnQgd2F5IHRvIHVz ZSB0aGVtLCBidXQNCj4+Pj4gZGlkbid0IG1hbmFnZSB0byBzb2x2ZSB0d28gdGhpbmdzOg0KPj4+ Pg0KPj4+PiAxKSBBRl9YRFAgcHJvZ3JhbXMsIHNvIHdoYXQgdG8gZG8gd2l0aCB0aGVtPyBQcmVw YXJlIHBhdGNoZXMgZm9yDQo+Pj4+ICAgICBMTFZNIHRvIG1ha2UgaXQgYWJsZSB0byBkbyBDTy1S RSBvbiBBRl9YRFAgcHJvZ3JhbSBsb2FkPyBPcg0KPj4+PiAgICAganVzdCBoYXJkY29kZSB0aGVt IGZvciBwYXJ0aWN1bGFyIHVzZWNhc2VzIGFuZCBOSUNzPyBXaGF0IGFib3V0DQo+Pj4+ICAgICAi Z2VuZXJhbC1wdXJwb3NlIiBwcm9ncmFtcz8NCj4+Pg0KPj4+IFlvdSBwcm92aWRlIGEgbGlicmFy eSB0byByZWFkIHRoZSBmaWVsZHMuIEplc3BlciBhY3R1YWxseSBhbHJlYWR5DQo+Pj4gaW1wbGVt ZW50ZWQgdGhpcywgZGlkIHlvdSBsb29rIGF0IGhpcyBjb2RlPw0KPj4+DQo+Pj4gaHR0cHM6Ly9n aXRodWIuY29tL3hkcC1wcm9qZWN0L2JwZi1leGFtcGxlcy90cmVlL21hc3Rlci9BRl9YRFAtaW50 ZXJhY3Rpb24NCj4+Pg0KPj4+IEl0IGJhc2ljYWxseSBidWlsZHMgYSBsb29rdXAgdGFibGUgYXQg bG9hZC10aW1lIHVzaW5nIEJURiBpbmZvcm1hdGlvbg0KPj4+IGZyb20gdGhlIGtlcm5lbCwga2V5 ZWQgb24gQlRGIElEIGFuZCBmaWVsZCBuYW1lLCByZXNvbHZpbmcgdGhlbSBpbnRvDQo+Pj4gb2Zm c2V0cy4gSXQncyBub3QgcXVpdGUgdGhlIHplcm8tb3ZlcmhlYWQgb2YgQ08tUkUsIGJ1dCBpdCdz IGZhaXJseQ0KPj4+IGNsb3NlIGFuZCBjYW4gYmUgaW1wcm92ZWQgdXBvbiAoQ08tUkUgZm9yIHVz ZXJzcGFjZSBiZWluZyBvbmUgd2F5IG9mDQo+Pj4gZG9pbmcgdGhhdCkuDQo+Pg0KPj4gQWFhYWgs IHNvcnJ5LCBJIGNvbXBsZXRlbHkgbWlzc2VkIHRoYXQuIEkgdGhvdWdodCBvZiBzb21ldGhpbmcN Cj4+IHNpbWlsYXIgYXMgd2VsbCwgYnV0IHRoZW4gdGhvdWdodCAidmFyaWFibGUgZmllbGQgb2Zm c2V0cywgdGhhdA0KPj4gd291bGQgYW5uaWhpbGF0ZSBvcHRpbWl6YXRpb24gYW5kIHBlcmZvcm1h bmNlIiwgYW5kIG91ciBYc2sgdGVhbQ0KPj4gaXMgc3VwZXIgY29uY2VybmVkIGFib3V0IHBlcmZv cm1hbmNlIGhpdHMgd2hlbiB1c2luZyBIaW50cy4NCj4+DQo+Pj4NCj4+Pj4gICAgIEFuZCBpZiBo YXJkY29kZSwgd2hhdCdzIHRoZSBwb2ludCB0aGVuIHRvIGRvIEdlbmVyaWMgSGludHMgYXQNCj4+ Pj4gICAgIGFsbD8gVGhlbiBhbGwgaXQgbmVlZHMgaXMgbWFraW5nIGRyaXZlciBidWlsZGluZyBz b21lIG1ldGEgaW4NCj4+Pj4gICAgIGZyb250IG9mIGZyYW1lcyB2aWEgb24tb2ZmIGJ1dHRvbiBh bmQgdGhhdCdzIGl0PyBXaHkgQlRGIElEIGluDQo+Pj4+ICAgICB0aGUgbWV0YSB0aGVuIGlmIGNv bnN1bWVycyB3aWxsIGFjY2VzcyBtZXRhIGhhcmRjb2RlZCAodmlhIENPLVJFDQo+Pj4+ICAgICBv ciBsaXRlcmFsbHkgaGFyZGNvZGVkLCBkb2Vzbid0IG1hdHRlcik/DQo+Pj4NCj4+PiBZb3UncmUg cXVpdGUgcmlnaHQsIHdlIGNvdWxkIHByb2JhYmx5IGltcGxlbWVudCBhbGwgdGhlIGFjY2VzcyB0 bw0KPj4+IGV4aXN0aW5nIChmaXhlZCkgbWV0YWRhdGEgd2l0aG91dCB1c2luZyBhbnkgQlRGIGF0 IGFsbCAtIGp1c3QgZGVmaW5lIGENCj4+PiBjb21tb24gc3RydWN0IGFuZCBzb21lIGZsYWdzIHRv IGRlc2lnbmF0ZSB3aGljaCBmaWVsZHMgYXJlIHNldC4gSW4gbXkNCj4+PiBtaW5kLCB0aGVyZSBh cmUgYSBjb3VwbGUgb2YgcmVhc29ucyBmb3IgZ29pbmcgdGhlIEJURiByb3V0ZSBpbnN0ZWFkOg0K Pj4+DQo+Pj4gLSBXZSBjYW4gbGV2ZXJhZ2UgQ08tUkUgdG8gZ2V0IGNsb3NlIHRvIG9wdGltYWwg ZWZmaWNpZW5jeSBpbiBmaWVsZA0KPj4+ICAgIGFjY2Vzcy4NCj4+Pg0KPj4+IGFuZCwgbW9yZSBp bXBvcnRhbnRseToNCj4+Pg0KPj4+IC0gSXQncyBpbmZpbml0ZWx5IGV4dGVuc2libGUuIFdpdGgg dGhlIGluZnJhc3RydWN0dXJlIGluIHBsYWNlIHRvIG1ha2UNCj4+PiAgICBpdCByZWFsbHkgZWFz eSB0byBjb25zdW1lIG1ldGFkYXRhIGRlc2NyaWJlZCBieSBCVEYsIHdlIGxvd2VyIHRoZSBiYXIN Cj4+PiAgICBmb3IgZnV0dXJlIGlubm92YXRpb24gaW4gaGFyZHdhcmUgb2ZmbG9hZHMuIEJvdGgg Zm9yIGp1c3QgYWRkaW5nIG5ldw0KPj4+ICAgIGZpeGVkLWZ1bmN0aW9uIHN0dWZmIHRvIGhhcmR3 YXJlLCBidXQgZXNwZWNpYWxseSBmb3IgZnVsbHkNCj4+PiAgICBwcm9ncmFtbWFibGUgaGFyZHdh cmUuDQo+Pg0KPj4gQWdyZWUgOikgVGhhdCBsaWJ4ZHAgbG9va3VwIHRyYW5zbGF0b3IgZml4ZWQg bG90cyBvZiBzdHVmZiBpbiBteQ0KPj4gbWluZC4NCj4gDQo+IEdyZWF0ISBMb29rcyBsaWtlIHdl J3JlIHNsb3dseSBjb252ZXJnaW5nIHRvd2FyZHMgYSBzaGFyZWQNCj4gdW5kZXJzdGFuZGluZywg dGhlbiEgOikNCj4gDQo+Pj4+IDIpIEluLWtlcm5lbCBtZXRhZGF0YSBjb25zdW1lcnM/IEFsc28g ZG8gQ08tUkU/IE90aGVyd2lzZSwgd2l0aCBubw0KPj4+PiAgICAgZ2VuZXJpYyBtZXRhZGF0YSBz dHJ1Y3R1cmUgdGhleSB3b24ndCBiZSBhYmxlIHRvIGJlbmVmaXQgZnJvbQ0KPj4+PiAgICAgSGlu dHMuIEJ1dCBJIGd1ZXNzIHdlIHN0aWxsIG5lZWQgdG8gcHJvdmlkZSBrZXJuZWwgd2l0aCBtZXRh Pw0KPj4+PiAgICAgT3Igbm8/DQo+Pj4NCj4+PiBJbiB0aGUgc2hvcnQgdGVybSwgSSB0aGluayB0 aGUgImdlbmVyaWMgc3RydWN0dXJlIiBhcHByb2FjaCBpcyBmaW5lIGZvcg0KPj4+IGxldmVyYWdp bmcgdGhpcyBpbiB0aGUgc3RhY2suIEJvdGggeW91ciBhbmQgSmVzcGVyJ3Mgc2VyaWVzIGluY2x1 ZGUNCj4+PiB0aGlzLCBhbmQgSSB0aGluayB0aGF0J3MgdG90YWxseSBmaW5lLiBMb25nZXIgdGVy bSwgaWYgaXQgdHVybnMgb3V0IHRvDQo+Pj4gYmUgdXNlZnVsIHRvIGhhdmUgc29tZXRoaW5nIG1v cmUgZHluYW1pYyBmb3IgdGhlIHN0YWNrIGNvbnN1bXB0aW9uIGFzDQo+Pj4gd2VsbCwgd2UgY291 bGQgZXh0ZW5kIGl0IHRvIGJlIENPLVJFIGJhc2VkIGFzIHdlbGwgKG1vc3QgbGlrZWx5IGJ5DQo+ Pj4gaGF2aW5nIHRoZSBzdGFjayBsb2FkIGEgInRyYW5zbGF0b3IiIEJQRiBwcm9ncmFtIG9yIHNv bWV0aGluZyBhbG9uZw0KPj4+IHRob3NlIGxpbmVzKS4NCj4+DQo+PiBPaCwgdGhhdCB0cmFuc2xh dG9yIHByb2cgc291bmRzIG5pY2UgQlRXIQ0KPiANCj4gWWVhaCwgaXQncyBvbmx5IGEgcm91Z2gg aWRlYSBKZXNwZXIgYW5kIEkgZGlzY3Vzc2VkIGF0IHNvbWUgcG9pbnQsIGJ1dCBJDQo+IHRoaW5r IGl0IGNvdWxkIGhhdmUgcG90ZW50aWFsIChzZWUgYWxzbyBwb2ludCBhYm92ZSByZTogbWFraW5n IFhEUCBoaW50cw0KPiAqdGhlKiBzb3VyY2Ugb2YgbWV0YWRhdGEgZm9yIHRoZSB3aG9sZSBzdGFj azsgd291bGRuJ3QgaXQgYmUgbmljZSBpZg0KPiBkcml2ZXJzIGRpZG4ndCBoYXZlIHRvIGRlYWwg d2l0aCB0aGUgaW50cmljYWNpZXMgb2YgYXNzZW1ibGluZyBTS0JzPykuDQoNClllcywgdGhpcyBp cyB0aGUgbG9uZ2VyIHRlcm0gZ29hbCwgYnV0IHdlIHNob3VsZCB0YWtlIHRoaXMgaW4gc3RlcHMu DQooVGh1cywgbXkgcGF0Y2hzZXRbMF0gZm9jdXNlcyBvbiB0aGUgZXhpc3RpbmcgeGRwX2hpbnRz X2NvbW1vbikuDQoNCkV2ZW50dWFsbHkgKHBpcGUtZHJlYW0/KSwgSSB3b3VsZCBsaWtlIHRvIGFk ZCBhIG5ldyBCUEYtaG9vayB0aGF0IHJ1bnMNCmluIHRoZSBzdGVwIGNvbnZlcnRpbmcgeGRwX2Zy YW1lIHRvIFNLQiAodG9kYXkgaGFuZGxlZCBpbiBmdW5jdGlvbg0KX194ZHBfYnVpbGRfc2tiX2Zy b21fZnJhbWUpLiAgVGhpcyAidHJhbnNsYXRvciIgQlBGIHByb2dyYW0gc2hvdWxkIGJlDQp0aWVk L2xvYWRlZCBwZXIgbmV0X2RldmljZSwgd2hpY2ggbWFrZXMgaXQgZWFzaWVyIHRvIGNvbnN1bWUg dGhlIGRyaXZlcg0Kc3BlY2lmaWMvZHluYW1pYyBYRFAtaGludHMgbGF5b3V0cyBhbmQgQlBGLWNv ZGUgY2FuIGJlIHNtYWxsZXIgYXMgaXQNCm9ubHkgbmVlZCB0byBDTy1SRSBoYW5kbGUgeGRwLWhp bnRzIHN0cnVjdHMga25vd24gZm9yIHRoaXMgZHJpdmVyLg0KRGVmYXVsdCBCUEYtcHJvZyBzaG91 bGQgYmUgcHJvdmlkZWQgYW5kIG1haW50YWluZWQgYnkgZHJpdmVyDQptYWludGFpbmVycywgYnV0 IGNhbiBiZSByZXBsYWNlZCBieSBlbmQtdXNlcnMuDQoNCi0tSmVzcGVyDQoNClswXSANCmh0dHBz Oi8vbG9yZS5rZXJuZWwub3JnL2JwZi8xNjU2NDMzNzg5NjkuNDQ5NDY3LjEzMjM3MDExODEyNTY5 MTg4Mjk5LnN0Z2l0QGZpcmVzb3VsLw0KDQo=