From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id A3B634ADBA for ; Sat, 22 Jun 2024 22:39:35 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3F04868D4B6; Sun, 23 Jun 2024 01:39:32 +0300 (EEST) Received: from haasn.dev (haasn.dev [78.46.187.166]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 36E6968D1BC for ; Sun, 23 Jun 2024 01:39:25 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=haasn.xyz; s=mail; t=1719095964; bh=nAAmDuPyRMZkGbudwEtsMiFNtMy2IAX0YDslcPCkiDY=; h=Date:From:To:Subject:In-Reply-To:References:From; b=WrItTpr1SkLb57ojDIpqlyhx8dn2Krgj80xpZ9YuKoZeV7F4MuN46Vf/dWHxKCiTR V/ZyxSZUz6JokDvJ6/gthGAKmf0l1gabh33QuDmF0nJIJKfargpjQhIwT6Vp9TSk6D UXZ7fLm0IuMvMKbBTSjsLvSRPXdLywre1vLyRCRs= Received: from haasn.dev (unknown [10.30.0.2]) by haasn.dev (Postfix) with ESMTP id E2FA6403F0 for ; Sun, 23 Jun 2024 00:39:24 +0200 (CEST) Date: Sun, 23 Jun 2024 00:39:24 +0200 Message-ID: <20240623003924.GD4285@haasn.xyz> From: Niklas Haas To: FFmpeg development discussions and patches In-Reply-To: References: <20240622151334.GD14140@haasn.xyz> MIME-Version: 1.0 Content-Disposition: inline Subject: Re: [FFmpeg-devel] [RFC]] swscale modernization proposal X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: T24gU3VuLCAyMyBKdW4gMjAyNCAwMDoxOToxMyArMDIwMCBWaXR0b3JpbyBHaW92YXJhIDx2aXR0 b3Jpby5naW92YXJhQGdtYWlsLmNvbT4gd3JvdGU6Cj4gT24gU2F0LCBKdW4gMjIsIDIwMjQgYXQg MzoyMuKAr1BNIE5pa2xhcyBIYWFzIDxmZm1wZWdAaGFhc24ueHl6PiB3cm90ZToKPiAKPiA+IEhl eSwKPiA+Cj4gPiBBcyBzb21lIG9mIHlvdSBrbm93LCBJIGdvdCBjb250cmFjdGVkIChieSBTVEYg MjAyNCkgdG8gd29yayBvbiBpbXByb3ZpbmcKPiA+IHN3c2NhbGUsIG92ZXIgdGhlIGNvdXJzZSBv ZiB0aGUgbmV4dCBjb3VwbGUgb2YgbW9udGhzLiBJIHdhbnQgdG8gc2hhcmUgbXkKPiA+IGN1cnJl bnQgcGxhbnMgYW5kIGdhdGhlciBmZWVkYmFjayArIG1lYXN1cmUgc2VudGltZW50Lgo+ID4KPiA+ ICMjIFByb2JsZW0gc3RhdGVtZW50Cj4gPgo+ID4gVGhlIHR3byBpc3N1ZXMgSSdkIGxpa2UgdG8g Zm9jdXMgb24gZm9yIG5vdyBhcmU6Cj4gPgo+ID4gMS4gTGFjayBvZiBzdXBwb3J0IGZvciBhIGxv dCBvZiBtb2Rlcm4gZm9ybWF0cyBhbmQgY29udmVyc2lvbnMgKEhEUiwgSUN0Q3AsCj4gPiAgICBJ UFRjMiwgQlQuMjAyMC1DTCwgWFlaLCBZQ2dDbywgRG9sYnkgVmlzaW9uLCAuLi4pCj4gPiAyLiBD b21wbGljYXRlZCBjb250ZXh0IG1hbmFnZW1lbnQsIHdpdGggY2FzY2FkZWQgY29udGV4dHMsIHRo cmVhZGluZywKPiA+IHN0YXRlZnVsCj4gPiAgICBjb25maWd1cmF0aW9uLCBtdWx0aS1zdGVwIGlu aXQgcHJvY2VkdXJlcywgZXRjOyBhbmQgcmVsYXRlZCBidWdzCj4gPgo+ID4gSW4gb3JkZXIgdG8g bWFrZSB0aGVzZSBmZWFzaWJsZSwgc29tZSBhbW91bnQgb2YgaW50ZXJuYWwgcmUtb3JnYW5pemF0 aW9uIG9mCj4gPiBkdXRpZXMgaW5zaWRlIHN3c2NhbGUgaXMgcHJ1ZGVudC4KPiA+Cj4gPiAjIyBQ cm9wb3NlZCBhcHByb2FjaAo+ID4KPiA+IFRoZSBmaXJzdCBzdGVwIGlzIHRvIGNyZWF0ZSBhIG5l dyBBUEksIHdoaWNoIHdpbGwgKHRlbnRhdGl2ZWx5KSBsaXZlIGluCj4gPiA8bGlic3dzY2FsZS9h dnNjYWxlLmg+LiBUaGlzIEFQSSB3aWxsIGluaXRpYWxseSBzdGFydCBvZmYgYXMgYSBuZWFyLWNv cHkKPiA+IG9mIHRoZQo+ID4gY3VycmVudCBzd3NjYWxlIHB1YmxpYyBBUEksIGJ1dCB3aXRoIHRo ZSBtYWpvciBkaWZmZXJlbmNlIHRoYXQgSSB3YW50IGl0Cj4gPiB0byBiZQo+ID4gc3RhdGUtZnJl ZSBhbmQgb25seSBhY2Nlc3MgbWV0YWRhdGEgaW4gdGVybXMgb2YgQVZGcmFtZSBwcm9wZXJ0aWVz LiBTbwo+ID4gdGhlcmUKPiA+IHdpbGwgYmUgbm8gaW5kZXBlbmRlbnQgY29uZmlndXJhdGlvbiBv ZiB0aGUgaW5wdXQgY2hyb21hIGxvY2F0aW9uIGV0Yy4gbGlrZQo+ID4gdGhlcmUgaXMgY3VycmVu dGx5LCBhbmQgbm8gbmVlZCB0byByZS1jb25maWd1cmUgb3IgcmUtaW5pdCB0aGUgY29udGV4dCB3 aGVuCj4gPiBmZWVkaW5nIGl0IGZyYW1lcyB3aXRoIGRpZmZlcmVudCBwcm9wZXJ0aWVzLiBUaGUg Z29hbCBpcyBmb3IgdXNlcnMgdG8gYmUKPiA+IGFibGUKPiA+IHRvIGp1c3QgZmVlZCBpdCBBVkZy YW1lIHBhaXJzIGFuZCBoYXZlIGl0IGludGVybmFsbHkgY2FjaGUgZXhwZW5zaXZlCj4gPiBwcmUt cHJvY2Vzc2luZyBzdGVwcyBhcyBuZWVkZWQuIEZpbmFsbHksIGF2c2NhbGVfKiBzaG91bGQgdWx0 aW1hdGVseSBhbHNvCj4gPiBzdXBwb3J0IGhhcmR3YXJlIGZyYW1lcyBkaXJlY3RseSwgaW4gd2hp Y2ggY2FzZSBpdCB3aWxsIGRpc3BhdGNoIHRvIHNvbWUKPiA+IGVxdWl2YWxlbnQgb2Ygc2NhbGVf dnVsa2FuL3ZhYXBpL2N1ZGEgb3IgcG9zc2libHkgZXZlbiBsaWJwbGFjZWJvLiAoQnV0IEkKPiA+ IHdpbGwKPiA+IGRlZmVyIHRoaXMgdG8gYSBmdXR1cmUgbWlsZXN0b25lKQo+ID4KPiA+IEFmdGVy IHRoaXMgQVBJIGlzIGVzdGFibGlzaGVkLCBJIHdhbnQgdG8gc3RhcnQgZXhwYW5kaW5nIHRoZSBm dW5jdGlvbmFsaXR5Cj4gPiBpbgo+ID4gdGhlIGZvbGxvd2luZyBtYW5uZXI6Cj4gPgo+ID4gIyMj IFBoYXNlIDEKPiA+Cj4gPiBGb3IgYmFzaWMgb3BlcmF0aW9uLCBhdnNjYWxlXyogd2lsbCBqdXN0 IGRpc3BhdGNoIHRvIGEgc2VxdWVuY2Ugb2YKPiA+IHN3c2NhbGVfKgo+ID4gaW52b2NhdGlvbnMu IEluIHRoZSBiYXNpYyBjYXNlLCBpdCB3aWxsIGp1c3QgZGlyZWN0bHkgaW52b2tlIHN3c2NhbGUg d2l0aAo+ID4gbWluaW1hbCBvdmVyaGVhZC4gSW4gbW9yZSBhZHZhbmNlZCBjYXNlcywgaXQgbWln aHQgcmVzb2x2ZSB0byBhICpzZXF1ZW5jZSoKPiA+IG9mCj4gPiBzd3NjYWxlIG9wZXJhdGlvbnMs IHdpdGggb3RoZXIgb3BlcmF0aW9ucyAoZS5nLiBjb2xvcnNwYWNlIGNvbnZlcnNpb25zIGEgbGEK PiA+IHZmX2NvbG9yc3BhY2UpIG1peGVkIGluLgo+ID4KPiA+IFRoaXMgd2lsbCBhbGxvdyB1cyB0 byBnYWluIG5ldyBmdW5jdGlvbmFsaXR5IGluIGEgbWluaW1hbGx5IGludmFzaXZlIHdheSwKPiA+ IGFuZAo+ID4gd2lsbCBsZXQgQVBJIHVzZXJzIHN0YXJ0IHBvcnRpbmcgdG8gdGhlIG5ldyBBUEku IFRoaXMgd2lsbCBhbHNvIHNlcnZlIGFzIGEKPiA+IGdvb2QKPiA+ICJzZWxsaW5nIHBvaW50IiBm b3IgdGhlIG5ldyBBUEksIGFsbG93aW5nIHVzIHRvIGhvcGVmdWxseSBicmVhayB1cCB0aGUKPiA+ IGxlZ2FjeQo+ID4gc3dzY2FsZSBBUEkgYWZ0ZXJ3YXJkcy4KPiA+Cj4gPiAjIyMgUGhhc2UgMgo+ ID4KPiA+IEFmdGVyIHRoaXMgaXMgd29ya2luZywgSSB3YW50IHRvIGNsZWFubHkgc2VwYXJhdGUg c3dzY2FsZSBpbnRvIHR3byBkaXN0aW5jdAo+ID4gY29tcG9uZW50czoKPiA+Cj4gPiAxLiB2ZXJ0 aWNhbC9ob3Jpem9udGFsIHNjYWxpbmcKPiA+IDIuIGlucHV0L291dHB1dCBjb252ZXJzaW9ucwo+ ID4KPiA+IFJpZ2h0IG5vdywgdGhlc2Ugb3BlcmF0aW9ucyBib3RoIGxpdmUgaW5zaWRlIHRoZSBt YWluIFN3c0NvbnRleHQsIGV2ZW4KPiA+IHRob3VnaAo+ID4gdGhleSBhcmUgY29uY2VwdHVhbGx5 IG9ydGhvZ29uYWwuIElucHV0IGhhbmRsaW5nIGlzIGRvbmUgZW50aXJlbHkgYnkgdGhlCj4gPiBh YnN0cmFjdCBjYWxsYmFja3MgbHVtVG9ZVjEyIGV0Yy4sIHdoaWxlIG91dHB1dCBjb252ZXJzaW9u IGlzIGN1cnJlbnRseQo+ID4gIm1lcmdlZCIgd2l0aCB2ZXJ0aWNhbCBzY2FsaW5nICh5dXYycGxh bmVYIGV0Yy4pLgo+ID4KPiA+IEkgd2FudCB0byBjbGVhbmx5IHNlcGFyYXRlIHRoZXNlIGNvbXBv bmVudHMgc28gdGhleSBjYW4gbGl2ZSBpbnNpZGUKPiA+IGluZGVwZW5kZW50Cj4gPiBjb250ZXh0 cywgYW5kIGJlIGNvbnNpZGVyZWQgYXMgc2VtYW50aWNhbGx5IGRpc3RpbmN0IHN0ZXBzLiAoSW4g cGFydGljdWxhciwKPiA+IHRoZXJlIHNob3VsZCBpZGVhbGx5IGJlIG5vIG1vcmUgInVuc2NhbGVk IHNwZWNpYWwgY29udmVydGVycyIsIGluc3RlYWQKPiA+IHRoaXMgY2FuCj4gPiBiZSBzZWVuIGFz IGEgc3BlY2lhbCBjYXNlIHdoZXJlIHRoZXJlIHNpbXBseSBpcyBubyB2ZXJ0aWNhbC9ob3Jpem9u dGFsCj4gPiBzY2FsaW5nCj4gPiBzdGVwKQo+ID4KPiA+IFRoZSBpZGVhIGlzIGZvciB0aGUgY29s b3JzcGFjZSBjb252ZXJzaW9uIGxheWVyIHRvIHNpdCBpbiBiZXR3ZWVuIHRoZQo+ID4gaW5wdXQv b3V0cHV0IGNvbnZlcnRlcnMgYW5kIHRoZSBob3Jpem9udGFsL3ZlcnRpY2FsIHNjYWxlcnMuIFRo aXMgYWxsCj4gPiB3b3VsZCBiZQo+ID4gb3JjaGVzdHJhdGVkIGJ5IHRoZSBhdnNjYWxlXyogYWJz dHJhY3Rpb24uCj4gPgo+ID4gIyMgSW1wbGVtZW50YXRpb24gZGV0YWlscwo+ID4KPiA+IFRvIGF2 b2lkIHBlcmZvcm1hbmNlIGxvc3MgZnJvbSBzZXBhcmF0aW5nICJtZXJnZWQiIGZ1bmN0aW9ucyBp bnRvIHRoZWlyCj4gPiBjb25zdGl0dWVudHMsIGNhcmUgbmVlZHMgdG8gYmUgdGFrZW4gc3VjaCB0 aGF0IGFsbCBpbnRlcm1lZGlhdGUgZGF0YSwgaW4KPiA+IGFkZGl0aW9uIHRvIGFsbCBpbnZvbHZl ZCBsb29rLXVwIHRhYmxlcywgd2lsbCBmaXQgY29tZm9ydGFibHkgaW5zaWRlIHRoZSBMMQo+ID4g Y2FjaGUuIFRoZSBhcHByb2FjaCBJIHByb3Bvc2UsIHdoaWNoIGlzIGFsc28gKGFmYWljdCkgdXNl ZCBieSB6c2NhbGUsIGlzIHRvCj4gPiBsb29wIG92ZXIgbGluZSBzZWdtZW50cywgYXBwbHlpbmcg ZWFjaCBvcGVyYXRpb24gaW4gc2VxdWVuY2UsIG9uIGEgc21hbGwKPiA+IHRlbXBvcmFyeSBidWZm ZXIuCj4gPgo+ID4gZS5nLgo+ID4KPiA+IGhzY2FsZV9yb3cocGl4ZWwgKmRzdCwgY29uc3QgcGl4 ZWwgKnNyYywgaW50IGltZ193aWR0aCkKPiA+IHsKPiA+ICAgICBjb25zdCBpbnQgU0laRSA9IDI1 NjsgLy8gb3Igc29tZSBvdGhlciBzbWFsbC1pc2ggZmlndXJlLCBwb3NzaWJseSBhCj4gPiBkZXNp Z24KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc3RhbnQgb2YgdGhlIEFQSSBz byB0aGF0IFNJTUQKPiA+IGltcGxlbWVudGF0aW9ucwo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgICAvLyBjYW4gYmUgYXBwcm9wcmlhdGVseSB1bnJvbGxlZAo+ID4KPiA+ICAgICBwaXhlbCB0 bXBbU0laRV07Cj4gPiAgICAgZm9yIChpID0gMDsgaSA8IGltZ193aWR0aDsgaSArPSBTSVpFKSB7 Cj4gPiAgICAgICAgIGludCBwaXhlbHMgPSBtaW4oU0laRSwgaW1nX3dpZHRoIC0gaSk7Cj4gPgo+ ID4gICAgICAgICB7IC8qIGluc2lkZSByZWFkIGlucHV0IGNhbGxiYWNrICovCj4gPiAgICAgICAg ICAgICB1bnBhY2tfaW5wdXQodG1wLCBzcmMsIHBpeGVscyk7Cj4gPiAgICAgICAgICAgICAvLyB0 aGUgYW1vdW50IG9mIHNlcGFyYXRpb24gaGVyZSB3aWxsIGRlcGVuZCBvbiB0aGUgcGVyZm9ybWFu Y2UKPiA+ICAgICAgICAgICAgIGFwcGx5X21hdHJpeDN4Myh0bXAsIHl1djJyZ2IsIHBpeGVscyk7 Cj4gPiAgICAgICAgICAgICBhcHBseV9sdXQzeDFkKHRtcCwgZ2FtbWFfbHV0LCBwaXhlbHMpOwo+ ID4gICAgICAgICAgICAgLi4uCj4gPiAgICAgICAgIH0KPiA+Cj4gPiAgICAgICAgIGhzY2FsZShk c3QsIHRtcCwgZmlsdGVyLCBwaXhlbHMpOwo+ID4KPiA+ICAgICAgICAgc3JjICs9IHBpeGVsczsK PiA+ICAgICAgICAgZHN0ICs9IHNjYWxlX2ZhY3RvcihwaXhlbHMpOwo+ID4gICAgIH0KPiA+IH0K PiA+Cj4gPiBUaGlzIGZ1bmN0aW9uIGNhbiB0aGVuIG91dHB1dCByb3dzIGludG8gYSByaW5nIGJ1 ZmZlciBmb3IgdXNlIGluc2lkZSB0aGUKPiA+IHZlcnRpY2FsIHNjYWxlciwgYWZ0ZXIgd2hpY2gg dGhlIHNhbWUgcHJvY2VkdXJlIGhhcHBlbnMgKGluIHJldmVyc2UpIGZvcgo+ID4gdGhlCj4gPiBm aW5hbCBvdXRwdXQgcGFzcy4KPiA+Cj4gPiBQb3NzaWJseSwgd2UgYWxzbyB3YW50IHRvIGFkZGl0 aW9uYWxseSBsaW1pdCB0aGUgc2l6ZSBvZiBhIHJvdyBmb3IgdGhlCj4gPiBob3Jpem9udGFsIHNj YWxlciwgdG8gYWxsb3cgYXJiaXRyYXJ5IGxhcmdlIGlucHV0IGltYWdlcy4KPiA+Cj4gPiAjIyBD b21tZW50cyAvIGZlZWRiYWNrPwo+ID4KPiA+IERvZXMgdGhlIGFib3ZlIGFwcHJvYWNoIHNlZW0g cmVhc29uYWJsZT8gSG93IGRvIHBlb3BsZSBmZWVsIGFib3V0Cj4gPiBpbnRyb2R1Y2luZwo+ID4g YSBuZXcgQVBJIHZzLiB0cnlpbmcgdG8gaGFtbWVyIHRoZSBleGlzdGluZyBBUEkgaW50byB0aGUg c2hhcGUgSSB3YW50IGl0Cj4gPiB0byBiZT8KPiA+Cj4gPiBJJ3ZlIGF0dGFjaGVkIGFuIGV4YW1w bGUgb2Ygd2hhdCA8YXZzY2FsZS5oPiBjb3VsZCBlbmQgdXAgbG9va2luZyBsaWtlLiBJZgo+ID4g dGhlcmUgaXMgYnJvYWQgYWdyZWVtZW50IG9uIHRoaXMgZGVzaWduLCBJIHdpbGwgbW92ZSBvbiB0 byBhbgo+ID4gaW1wbGVtZW50YXRpb24uCj4gPgo+IAo+IFdoYXQgZG8geW91IHRoaW5rIG9mIHRo ZSBjb25jZXB0IG9mIGtlcm5lbHMgbGlrZQo+IGh0dHBzOi8vZ2l0aHViLmNvbS9sdS16ZXJvL2F2 c2NhbGUvYmxvYi9tYXN0ZXIva2VybmVscy9yZ2IyeXV2LmMKPiBUaGUgaWRlYSBpcyB0aGF0IHRo ZXJlIGlzIGEgYml0IG9mIGFuYWx5c2lzIG9uIGlucHV0IGFuZCBvdXRwdXQgZm9ybWF0Cj4gcmVx dWVzdGVkLCBhbmQgZWl0aGVyIGEgc3BlY2lhbGl6ZWQga2VybmVsIGlzIHVzZWQsIG9yIGEgY2hh aW4gb2Yga2VybmVscwo+IGlzIGJ1aWx0IGFuZCBkYXRhIGlzIHBhc3NlZCBhbG9uZy4KPiBBbW9u ZyB0aGUgZGVzaWduIGdvYWxzIG9mIHRoYXQgbGlicmFyeSwgdGhlcmUgd2FzIGFsc28gcmVhZGFi aWxpdHkgKHNvIHRoYXQKPiB0aGUgZmxvdyB3YXMgYWx3YXlzIHVuZGVyIGNvbnRyb2wpIGFuZCB0 aGUgZWFzZSBvZiB3cml0aW5nIGFzc2VtYmx5IGFuZC9vcgo+IHNoYWRlciBmb3IgYW55IHNpbmds ZSBrZXJuZWwuCgpZZXMsIHRoaXMgaXMgZXhhY3RseSB0aGUgcGxhbiAtIHRoZSBoaWdoLWxldmVs IHdyYXBwaW5nIGxvZ2ljIHdpbGwKZXNzZW50aWFsbHkgZGVjb21wb3NlIHRoZSBkZXNpcmVkIGlu aXRpYWwgYW5kIGZpbmFsIHN0YXRlIGludG8KYSBzZXF1ZW5jZSBvZiBwcmltaXRpdmVzIGZvciBn ZXR0aW5nIGZyb20gQSB0byBCLiAoUXVpdGUgcG9zc2libHkgZXZlbgphICpsaXRlcmFsKiBsaXN0 IGluIG1lbW9yeSwgdGhhdCB3ZSBjYW4gaW5zcGVjdCBhbmQgYXBwbHkKbWVyZ2Utb3B0aW1pemF0 aW9ucyB0bykKClRoYXQncyB0aGUgbWFpbiByZWFzb24gSSBhbSBzbyBrZWVuIG9uIHNwbGl0dGlu ZyBpdCBvZmYgZnJvbSBTd3NDb250ZXh0CmFzIG11Y2ggYXMgcG9zc2libGUgLSBpbiBpbXBsZW1l bnRhdGlvbiwgaWYgbm90IGluIG5hbWUgLSBzbyB0aGF0IGl0IGNhbgpncm93IGZyb20gYSBjbGVh biBzbGF0ZS4KCkluY2lkZW50YWxseSwgaXQgd291bGQgYmUgcHJldHR5IHVzZWZ1bCB0byBhcnJp dmUgYXQgYSBwb2ludCB3aGVyZSB3ZQpoYXZlIGEgc21hbGwgKH4xMCkgc2V0IG9mICJhdG9taWMi IHByaW1pdGl2ZXMsIHRoZSBzdW0gb2Ygd2hpY2ggYWxsb3dzCnN1cHBvcnRpbmcgYWxsIHBvc3Np YmxlIGNvbnZlcnNpb25zIGluIHByaW5jaXBsZSwgc28gdGhhdCB3aXRoIGp1c3QKdGhlc2UgU0lN RCBpbXBsZW1lbnRhdGlvbnMgeW91IGNhbiBnZXQgYWNjZXB0YWJsZSBwZXJmb3JtYW5jZSBhY3Jv c3MgYW55CnBsYXRmb3JtLiBBbmQgdGhlbiBwbGF0Zm9ybXMgdGhhdCByZWFsbHkgY2FyZSBhYm91 dCBmaW5lLXR1bmluZyBjYW4KcHJvdmlkZSBtb3JlIHNwZWNpYWxpemVkLCAiaW5saW5lZCIga2Vy bmVscyBmb3IgcG9wdWxhciBvciBzbG93Cm9wZXJhdGlvbnMuCgo+IE5lZWRsZXNzIHRvIHNheSBJ IHN1cHBvcnQgdGhlIHBsYW4gb2YgcmVuYW1pbmcgdGhlIGxpYnJhcnkgc28gdGhhdCBpdCBjYW4K PiBiZSBpbmxpbmUgd2l0aCB0aGUgb3RoZXIgbGlicmFyaWVzIG5hbWVzLCBhbmQgdGhlIHVzZSBv ZiBhIHNlcGFyYXRlIGhlYWRlcgo+IHNpbmNlIGRvd25zdHJlYW0gYXBwbGljYXRpb25zIHdpbGwg bmVlZCB0byB1cGRhdGUgYSBsb3QgdG8gdXNlIHRoZSBuZXcKPiBsaWJyYXJ5IChvciB0aGUgbmV3 IGFwaXMgaW4gdGhlIGV4aXN0aW5nIGxpYnJhcnkpIGFuZC9vciB3ZSBjb3VsZCBwcm92aWRlIGEK PiB0aGluIGNvbnZlcnNpb24gbGF5ZXIgd2hlbiB0aGUgbmV3IGxpYiBpcyBmaW5hbGl6ZWQuCj4g LS0gCj4gVml0dG9yaW8KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwo+IGZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKPiBmZm1wZWctZGV2ZWxAZmZtcGVn Lm9yZwo+IGh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAo+ IAo+IFRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbAo+IGZmbXBlZy1k ZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBt YWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21h aWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBh Ym92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1Ympl Y3QgInVuc3Vic2NyaWJlIi4K