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 1367544244 for ; Fri, 2 Dec 2022 19:35:28 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B829268B611; Fri, 2 Dec 2022 21:35:26 +0200 (EET) Received: from mail-pf1-f176.google.com (mail-pf1-f176.google.com [209.85.210.176]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6818A68B48E for ; Fri, 2 Dec 2022 21:35:20 +0200 (EET) Received: by mail-pf1-f176.google.com with SMTP id k79so5799953pfd.7 for ; Fri, 02 Dec 2022 11:35:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=zfipxHTnVsxBC1HLUYjX1+Pns6lGbKTKn918hsEVJdQ=; b=m0C8pP667DkIUzKmER6ElnrnFhpwzH5dZQcWicUiLLa/eDUuGFiznHysmjooKBvKfS IBv6b6yq0xgVttVv38zdS1qKvT18co5MdP/SCXwsNvIc/Xgr9TAUhP4oc2JsZB4ysbkN GTauoMd33sI5FZtKacE9Q8ryIM0Ic/oQpj61VRxbsYgw8RnRc9sRKss2SQoal09Q058t W5NLrlB+4lvyOQ2Mpm/O1Fck8i5ozcH9/rHrMMagmZmvwY6/V5gQ6Zb4jzLiseYBV5UG tc26wl8dmN/QtzJ2MpRX0cDK0p1jLCkDqQzJosIapY6xPOmuUjh14A21mmskS8NWTYBJ eIKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=zfipxHTnVsxBC1HLUYjX1+Pns6lGbKTKn918hsEVJdQ=; b=5hFSo5I2LPgFyVRwDAL8bnTOxZVeerEkawW/7wgN1K7abpq1lbGvJqNK0O/0MRnE0S 7hcRRKRq069linhRLlZyLKqyHdKLxIrLkNTApix4xLtYhUnSpbDehquIgmxtP6xHhc3I wnUm7YXGkqgReBZnq0lRLTidoTRzreLqAIbOElBneaHb5KPzHfx4sP07gRehaKa9JhsQ +EKQ9AjANVmpHtIEcQeMgqaBhPkxGiJOEFdrwi3thhRo1fOxkqB1T03g8UXLN60EInaq Cd1OGf2BDBVP2EmRO53wFd70VoKhLVaRIqYTo+xaUvBo1ZGxjKF07rPoiySoiWqjIFG6 aW6Q== X-Gm-Message-State: ANoB5pl2bD9oWmdnQnWOPl6tlHcUeAu9T+SjVtm2Vb5GisWDfkiPB8AN nISwEq9TNlUsN1CHVAmiEHipOqeBrf9OKH2Lr5o5s5G8TaE= X-Google-Smtp-Source: AA0mqf4jPKO8BoHnvVntALnKCh5VJTbA74bcUzh/YP96gJhY973EjbG+m43GA3Y9FOo+9lBbzFXk5d4wnTQZkE8UUCI= X-Received: by 2002:a63:5241:0:b0:478:60d0:7d77 with SMTP id s1-20020a635241000000b0047860d07d77mr11763952pgl.514.1670009718371; Fri, 02 Dec 2022 11:35:18 -0800 (PST) MIME-Version: 1.0 References: <20221202181130.87107-1-etemesicaleb@gmail.com> <6e60f8996f0d4d47cd988b99d7fe6b12d6e92846.camel@haerdin.se> In-Reply-To: From: Caleb Etemesi Date: Fri, 2 Dec 2022 22:35:07 +0300 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH 2/2] avcodec/jpeg2000dec: Add support for HTJ2K decoding. 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: QWxzbyB0aGFua3MgZm9yIHJldmlld2luZwoKT24gRnJpLCBEZWMgMiwgMjAyMiBhdCAxMDozNCBQ TSBDYWxlYiBFdGVtZXNpIDxldGVtZXNpY2FsZWJAZ21haWwuY29tPgp3cm90ZToKCj4gSGkKPgo+ IEZvciBiaXQtcmVhZGluZywKPiAxLiBUaGUgc3BlYyBoYXMgc29tZSBjaHVua3MgcmVhZCBmcm9t IGJhY2sgdG8gZnJvbnQsSSBkaWRuJ3Qgc2VlIHRoYXQKPiBmdW5jdGlvbmFsaXR5IHByZXNlbnQg aW4gZ2V0X2JpdHMuaCh3aGljaCBJIGFzc3VtZWQgY29udGFpbmVkIHRoZSBiaXQKPiByZWFkaW5n IEFQSSkuCj4gMi4gSXQgZG9lc24ndCBoYW5kbGUgdW5zdHVmZmluZyBjb3JyZWN0bHkuCj4gMy4g RG9lc24ndCBoYW5kbGUgRU9CIGNvcnJlY3RseSwgdGhlIHNwZWMgaGFzIHNvbWUgYXJyYXlzIHdo ZW4gdGhlcmUgYXJlCj4gbm8gbW9yZSBieXRlcywgdGhlIGJpdC1yZWFkZXIgc2hvdWxkIGJlICBm aWxsZWQgd2l0aCAwLCBvdGhlcnMgd2l0aCAweEZGLi4KPgo+Cj4gPj4gVGhlc2UgZGl2aXNpYmls aXR5IGNoZWNrcyBsb29rIGxpa2UgdGhleSBjb3VsZCBiZSBldmVuIHNpbXBsZXIgZ2l2ZW4KPiB0 aGF0IHEgYWx3YXlzIGluY3JlYXNlcyBieSAyCj4KPiBIb3cgc28/KEkgbWlnaHQgYmUgZmFpbGlu ZyB0byBzZWUgc29tZXRoaW5nIGNvbW1vbiBoZXJlLikKPgo+ID4+IENvdWxkIHRoaXMgYmUgZG9u ZSBhbGwgaW4gb25lIGdvIGluIHRoZSBsb29wIGFib3ZlPyBXcml0aW5nIHRvIG11IHRoZW4KPiBy ZWFkaW5nIGZyb20gaXQgbGF0ZXIgaXMgbm90IHZlcnkgY2FjaGUgZnJpZW5kbHkuCj4KPiBPcGVu IHRvIGV4cGxvcmluZyB0aGF0IHBhdGgsIGJ1dCB0byBtZSBpdCBzZWVtcyB0byBhZGQgbW9yZSBj b21wbGV4aXR5Cj4gdGhhbiB0aGUgc3BlZWQgdXAgaXQgbWF5IHByb3ZpZGUuCj4KPiBBbHNvIEkg ZG8gYmVsaWV2ZSBpdCdzIHJlYWxseSBub3QgdGhhdCBjYWNoZSB1bmZyaWVuZGx5LCBhY2Nlc3Mg aXMgbGluZWFyCj4gb24gdGhlIHNlY29uZCB3cml0ZSBhbmQgaGlnaGx5IHByZWRpY3RhYmxlLgo+ Cj4KPiBPbiBGcmksIERlYyAyLCAyMDIyIGF0IDk6NDYgUE0gVG9tYXMgSMOkcmRpbiA8Z2l0QGhh ZXJkaW4uc2U+IHdyb3RlOgo+Cj4+IGZyZSAyMDIyLTEyLTAyIGtsb2NrYW4gMjE6MTEgKzAzMDAg c2tyZXYgZXRlbWVzaWNhbGViQGdtYWlsLmNvbToKPj4gPgo+PiA+ICsvKioKPj4gPiArICogIEdp dmVuIGEgcHJlY29tcHV0ZWQgYywgY2hlY2tzIHdoZXRoZXIgbiAlIGQgPT0gMAo+PiA+ICsgKi8K Pj4gPiArc3RhdGljIGF2X2Fsd2F5c19pbmxpbmUgdWludDMyX3QgaXNfZGl2aXNpYmxlKHVpbnQz Ml90IG4sIHVpbnQ2NF90Cj4+ID4gYykKPj4gPiArewo+PiA+ICsgICAgcmV0dXJuIG4gKiBjIDw9 IGMgLSAxOwo+PiA+ICt9Cj4+Cj4+IFRoaXMgbG9va3MgbGlrZSBzb21ldGhpbmcgdGhhdCBjb3Vs ZCBnbyBpbiBsYXZ1LCBzYXkgaW50bWF0aC5oCj4+Cj4+ID4gKwo+PiA+ICsvKioKPj4gPiArICog QGJyaWVmIFJlZmlsbCB0aGUgYnVmZmVyIGJhY2t3YXJkcyBpbiBsaXR0bGUgRW5kaWFuIHdoaWxl Cj4+ID4gc2tpcHBpbmcKPj4gPiArICogb3ZlciBzdHVmZmluZyBiaXRzCj4+ID4gKyAqCj4+ID4g KyAqIFN0dWZmaW5nIGJpdHMgYXJlIHRob3NlIHRoYXQgYXBwZWFyIGluIHRoZSBwb3NpdGlvbiBv ZiBhbnkgYnl0ZQo+PiA+IHdob3NlCj4+ID4gKyAqIExTQnMgYXJlIGFsbCAxJ3MgaWYgdGhlIGxh c3QgY29uc3VtZWQgYnl0ZSB3YXMgbGFyZ2VyIHRoYW4gMHg4Rgo+PiA+ICsgKi8KPj4gPiArc3Rh dGljIGludCBqcGVnMjAwMF9iaXRidWZfcmVmaWxsX2JhY2t3YXJkcyhTdGF0ZVZhcnMgKmJ1ZmZl ciwKPj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCB1aW50OF90ICphcnJheSkKPj4KPj4gRG9uJ3Qgd2UgYWxyZWFkeSBoYXZlIHN1ZmZpY2llbnQg Yml0cmVhZGluZyBjYXBhYmlsaXRpZXMgYWxyZWFkeT8gTWF5YmUKPj4gaXQgZG9lc24ndCBkbyB0 aGUgbmVjZXNzYXJ5IHVuc3R1ZmZpbmcuLgo+Pgo+Pgo+PiA+ICsgICAgLyoKPj4gPiArICAgICAq IEFzIGFuIG9wdGltaXphdGlvbiwgd2UgY2FuIHJlcGxhY2UgbW9kdWxvIG9wZXJhdGlvbnMgd2l0 aAo+PiA+ICsgICAgICogY2hlY2tpbmcgaWYgYSBudW1iZXIgaXMgZGl2aXNpYmxlICwgc2luY2Ug dGhhdCdzIHRoZSBvbmx5Cj4+ID4gdGhpbmcgd2UgbmVlZC4KPj4gPiArICAgICAqIHRoaXMgaXMg cGFpcmVkIHdpdGggaXNfZGl2aXNpYmxlLgo+PiA+ICsgICAgICogQ3JlZGl0cyB0byBEYW5pZWwg TGVtaXJlIGJsb2cgcG9zdDoKPj4gPiArICAgICAqCj4+ID4KPj4gaHR0cHM6Ly9sZW1pcmUubWUv YmxvZy8yMDE5LzAyLzA4L2Zhc3Rlci1yZW1haW5kZXJzLXdoZW4tdGhlLWRpdmlzb3ItaXMtYS1j b25zdGFudC1iZWF0aW5nLWNvbXBpbGVycy1hbmQtbGliZGl2aWRlLwo+PiA+ICsgICAgICogSXQn cyBVQiBvbiB6ZXJvLCBidXQgd2UgY2FuJ3QgaGF2ZSBhIHF1YWQgYmVpbmcgemVybywgdGhlCj4+ ID4gc3BlYyBkb2Vzbid0IGFsbG93LAo+PiA+ICsgICAgICogc28gd2UgZXJyb3Igb3V0IGVhcmx5 IGluIGNhc2UgdGhhdCdzIHRoZSBjYXNlLgo+PiA+ICsgICAgICovCj4+ID4gKwo+PiA+ICsgICAg YyA9IDEgKyBVSU5UNjRfQygweGZmZmZmZmZmZmZmZmZmZmYpIC8gcXVhZF93aWR0aDsKPj4KPj4g SnVzdCAweGZmZmZmZmZmZmZmZmZmZmZVTEwgd291bGQgd29yawo+Pgo+PiA+ICsKPj4gPiArICAg IGZvciAoaW50IHJvdyA9IDE7IHJvdyA8IHF1YWRfaGVpZ2h0OyByb3crKykgewo+PiA+ICsgICAg ICAgIHdoaWxlICgocSAtIChyb3cgKiBxdWFkX3dpZHRoKSkgPCBxdWFkX3dpZHRoIC0gMSAmJiBx IDwKPj4gPiAocXVhZF9oZWlnaHQgKiBxdWFkX3dpZHRoKSkgewo+PiA+ICsgICAgICAgICAgICBx MSA9IHE7Cj4+ID4gKyAgICAgICAgICAgIHEyID0gcSArIDE7Cj4+ID4gKyAgICAgICAgICAgIGNv bnRleHQxID0gc2lnbWFfbls0ICogKHExIC0gcXVhZF93aWR0aCkgKyAxXTsKPj4gPiArICAgICAg ICAgICAgY29udGV4dDEgKz0gc2lnbWFfbls0ICogKHExIC0gcXVhZF93aWR0aCkgKyAzXSA8PCAy OyAvLwo+PiA+IG5lCj4+ID4gKwo+PiA+ICsgICAgICAgICAgICBpZiAoIWlzX2RpdmlzaWJsZShx MSwgYykpIHsKPj4KPj4gVGhlc2UgZGl2aXNpYmlsaXR5IGNoZWNrcyBsb29rIGxpa2UgdGhleSBj b3VsZCBiZSBldmVuIHNpbXBsZXIgZ2l2ZW4KPj4gdGhhdCBxIGFsd2F5cyBpbmNyZWFzZXMgYnkg Mgo+Pgo+PiA+ICsgICAgICAgICAgICAgICAgY29udGV4dDEgfD0gc2lnbWFfbls0ICogKHExIC0g cXVhZF93aWR0aCkgLQo+PiA+IDFdOyAgICAgICAgICAgICAgIC8vIG53Cj4+ID4gKyAgICAgICAg ICAgICAgICBjb250ZXh0MSArPSAoc2lnbWFfbls0ICogcTEgLSAxXSB8IHNpZ21hX25bNCAqIHEx IC0KPj4gPiAyXSkgPDwgMTsgLy8gc3d8IHEKPj4gPiArICAgICAgICAgICAgfQo+PiA+ICsgICAg ICAgICAgICBpZiAoIWlzX2RpdmlzaWJsZShxMSArIDEsIGMpKQo+PiA+ICsgICAgICAgICAgICAg ICAgY29udGV4dDEgfD0gc2lnbWFfbls0ICogKHExIC0gcXVhZF93aWR0aCkgKyA1XSA8PCAyOwo+ PiA+ICsKPj4gPiArICAgICAgICAgICAgaWYgKChyZXQgPSBqcGVnMjAwMF9kZWNvZGVfc2lnX2Vt YihzLCBtZWxfc3RhdGUsCj4+ID4gbWVsX3N0cmVhbSwgdmxjX3N0cmVhbSwKPj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNfQ3h0VkxDX3RhYmxl MSwKPj4gPiBEY3VwLCBzaWdfcGF0LCByZXNfb2ZmLAo+PiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtYl9wYXRfaywgZW1iX3BhdF8xLAo+PiA+IEoy S19RMSwgY29udGV4dDEsIExjdXAsCj4+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUGN1cCkpCj4+ID4gKyAgICAgICAgICAgICAgICA8IDApCj4+ID4g KyAgICAgICAgICAgICAgICBnb3RvIGZyZWU7Cj4+ID4gKwo+PiA+ICsgICAgICAgICAgICBmb3Ig KGludCBpID0gMDsgaSA8IDQ7IGkrKykKPj4gPiArICAgICAgICAgICAgICAgIHNpZ21hX25bNCAq IHExICsgaV0gPSAoc2lnX3BhdFtKMktfUTFdID4+IGkpICYgMTsKPj4gPiArCj4+ID4gKyAgICAg ICAgICAgIGNvbnRleHQyID0gc2lnbWFfbls0ICogKHEyIC0gcXVhZF93aWR0aCkgKyAxXTsKPj4g PiArICAgICAgICAgICAgY29udGV4dDIgKz0gc2lnbWFfbls0ICogKHEyIC0gcXVhZF93aWR0aCkg KyAzXSA8PCAyOwo+PiA+ICsKPj4gPiArICAgICAgICAgICAgaWYgKCFpc19kaXZpc2libGUocTIs IGMpKSB7Cj4+ID4gKyAgICAgICAgICAgICAgICBjb250ZXh0MiB8PSBzaWdtYV9uWzQgKiAocTIg LSBxdWFkX3dpZHRoKSAtIDFdOwo+PiA+ICsgICAgICAgICAgICAgICAgY29udGV4dDIgKz0gKHNp Z21hX25bNCAqIHEyIC0gMV0gfCBzaWdtYV9uWzQgKiBxMiAtCj4+ID4gMl0pIDw8IDE7Cj4+ID4g KyAgICAgICAgICAgIH0KPj4gPiArICAgICAgICAgICAgaWYgKCFpc19kaXZpc2libGUocTIgKyAx LCBjKSkKPj4gPiArICAgICAgICAgICAgICAgIGNvbnRleHQyIHw9IHNpZ21hX25bNCAqIChxMiAt IHF1YWRfd2lkdGgpICsgNV0gPDwgMjsKPj4gPiArCj4+ID4gKyAgICAgICAgICAgIGlmICgocmV0 ID0ganBlZzIwMDBfZGVjb2RlX3NpZ19lbWIocywgbWVsX3N0YXRlLAo+PiA+IG1lbF9zdHJlYW0s IHZsY19zdHJlYW0sCj4+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGVjX0N4dFZMQ190YWJsZTEsCj4+ID4gRGN1cCwgc2lnX3BhdCwgcmVzX29mZiwK Pj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWJf cGF0X2ssIGVtYl9wYXRfMSwKPj4gPiBKMktfUTIsIGNvbnRleHQyLCBMY3VwLAo+PiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBjdXApKQo+PiA+ICsg ICAgICAgICAgICAgICAgPCAwKQo+PiA+ICsgICAgICAgICAgICAgICAgZ290byBmcmVlOwo+PiA+ ICsKPj4gPiArICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspCj4+ID4gKyAg ICAgICAgICAgICAgICBzaWdtYV9uWzQgKiBxMiArIGldID0gKHNpZ19wYXRbSjJLX1EyXSA+PiBp KSAmIDE7Cj4+ID4gKwo+PiA+ICsgICAgICAgICAgICB1W0oyS19RMV0gPSAwOwo+PiA+ICsgICAg ICAgICAgICB1W0oyS19RMl0gPSAwOwo+PiA+ICsKPj4gPiArICAgICAgICAgICAganBlZzIwMDBf Yml0YnVmX3JlZmlsbF9iYWNrd2FyZHModmxjX3N0cmVhbSwgdmxjX2J1Zik7Cj4+ID4gKwo+PiA+ ICsgICAgICAgICAgICBpZiAocmVzX29mZltKMktfUTFdID09IDEgJiYgcmVzX29mZltKMktfUTJd ID09IDEpIHsKPj4gPiArICAgICAgICAgICAgICAgIHVfcGZ4W0oyS19RMV0gPSB2bGNfZGVjb2Rl X3VfcHJlZml4KHZsY19zdHJlYW0sCj4+ID4gdmxjX2J1Zik7Cj4+ID4gKyAgICAgICAgICAgICAg ICB1X3BmeFtKMktfUTJdID0gdmxjX2RlY29kZV91X3ByZWZpeCh2bGNfc3RyZWFtLAo+PiA+IHZs Y19idWYpOwo+PiA+ICsKPj4gPiArICAgICAgICAgICAgICAgIHVfc2Z4W0oyS19RMV0gPSB2bGNf ZGVjb2RlX3Vfc3VmZml4KHZsY19zdHJlYW0sCj4+ID4gdV9wZnhbSjJLX1ExXSwgdmxjX2J1Zik7 Cj4+ID4gKyAgICAgICAgICAgICAgICB1X3NmeFtKMktfUTJdID0gdmxjX2RlY29kZV91X3N1ZmZp eCh2bGNfc3RyZWFtLAo+PiA+IHVfcGZ4W0oyS19RMl0sIHZsY19idWYpOwo+PiA+ICsKPj4gPiAr ICAgICAgICAgICAgICAgIHVfZXh0W0oyS19RMV0gPSB2bGNfZGVjb2RlX3VfZXh0ZW5zaW9uKHZs Y19zdHJlYW0sCj4+ID4gdV9zZnhbSjJLX1ExXSwgdmxjX2J1Zik7Cj4+ID4gKyAgICAgICAgICAg ICAgICB1X2V4dFtKMktfUTJdID0gdmxjX2RlY29kZV91X2V4dGVuc2lvbih2bGNfc3RyZWFtLAo+ PiA+IHVfc2Z4W0oyS19RMl0sIHZsY19idWYpOwo+PiA+ICsKPj4gPiArICAgICAgICAgICAgICAg IHVbSjJLX1ExXSA9IHVfcGZ4W0oyS19RMV0gKyB1X3NmeFtKMktfUTFdICsKPj4gPiAodV9leHRb SjJLX1ExXSA8PCAyKTsKPj4gPiArICAgICAgICAgICAgICAgIHVbSjJLX1EyXSA9IHVfcGZ4W0oy S19RMl0gKyB1X3NmeFtKMktfUTJdICsKPj4gPiAodV9leHRbSjJLX1EyXSA8PCAyKTsKPj4gPiAr Cj4+ID4gKyAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzX29mZltKMktfUTFdID09IDEgfHwgcmVz X29mZltKMktfUTJdID09IDEpCj4+ID4gewo+PiA+ICsgICAgICAgICAgICAgICAgdWludDhfdCBw b3MgPSByZXNfb2ZmW0oyS19RMV0gPT0gMSA/IDAgOiAxOwo+PiA+ICsKPj4gPiArICAgICAgICAg ICAgICAgIHVfcGZ4W3Bvc10gPSB2bGNfZGVjb2RlX3VfcHJlZml4KHZsY19zdHJlYW0sCj4+ID4g dmxjX2J1Zik7Cj4+ID4gKyAgICAgICAgICAgICAgICB1X3NmeFtwb3NdID0gdmxjX2RlY29kZV91 X3N1ZmZpeCh2bGNfc3RyZWFtLAo+PiA+IHVfcGZ4W3Bvc10sIHZsY19idWYpOwo+PiA+ICsgICAg ICAgICAgICAgICAgdV9leHRbcG9zXSA9IHZsY19kZWNvZGVfdV9leHRlbnNpb24odmxjX3N0cmVh bSwKPj4gPiB1X3NmeFtwb3NdLCB2bGNfYnVmKTsKPj4gPiArCj4+ID4gKyAgICAgICAgICAgICAg ICB1W3Bvc10gPSB1X3BmeFtwb3NdICsgdV9zZnhbcG9zXSArICh1X2V4dFtwb3NdIDw8Cj4+ID4g Mik7Cj4+ID4gKyAgICAgICAgICAgIH0KPj4gPiArICAgICAgICAgICAgc3AgPSBzaWdfcGF0W0oy S19RMV07Cj4+ID4gKwo+PiA+ICsgICAgICAgICAgICBnYW1tYVtKMktfUTFdID0gMTsKPj4gPiAr Cj4+ID4gKyAgICAgICAgICAgIGlmIChzcCA9PSAwIHx8IHNwID09IDEgfHwgc3AgPT0gMiB8fCBz cCA9PSA0IHx8IHNwID09IDgpCj4+ID4gKyAgICAgICAgICAgICAgICBnYW1tYVtKMktfUTFdID0g MDsKPj4gPiArCj4+ID4gKyAgICAgICAgICAgIHNwID0gc2lnX3BhdFtKMktfUTJdOwo+PiA+ICsK Pj4gPiArICAgICAgICAgICAgZ2FtbWFbSjJLX1EyXSA9IDE7Cj4+ID4gKwo+PiA+ICsgICAgICAg ICAgICBpZiAoc3AgPT0gMCB8fCBzcCA9PSAxIHx8IHNwID09IDIgfHwgc3AgPT0gNCB8fCBzcCA9 PSA4KQo+PiA+ICsgICAgICAgICAgICAgICAgZ2FtbWFbSjJLX1EyXSA9IDA7Cj4+ID4gKwo+PiA+ ICsgICAgICAgICAgICBFX25bSjJLX1ExXSA9IEVbNCAqIChxMSAtIHF1YWRfd2lkdGgpICsgMV07 Cj4+ID4gKyAgICAgICAgICAgIEVfbltKMktfUTJdID0gRVs0ICogKHEyIC0gcXVhZF93aWR0aCkg KyAxXTsKPj4gPiArCj4+ID4gKyAgICAgICAgICAgIEVfbmVbSjJLX1ExXSA9IEVbNCAqIChxMSAt IHF1YWRfd2lkdGgpICsgM107Cj4+ID4gKyAgICAgICAgICAgIEVfbmVbSjJLX1EyXSA9IEVbNCAq IChxMiAtIHF1YWRfd2lkdGgpICsgM107Cj4+ID4gKwo+PiA+ICsgICAgICAgICAgICBFX253W0oy S19RMV0gPSAoIWlzX2RpdmlzaWJsZShxMSwgYykpICogRVtGRk1BWCgoNCAqIChxMQo+PiA+IC0g cXVhZF93aWR0aCkgLSAxKSwgMCldOwo+PiA+ICsgICAgICAgICAgICBFX253W0oyS19RMl0gPSAo IWlzX2RpdmlzaWJsZShxMiwgYykpICogRVtGRk1BWCgoNCAqIChxMgo+PiA+IC0gcXVhZF93aWR0 aCkgLSAxKSwgMCldOwo+PiA+ICsKPj4gPiArICAgICAgICAgICAgRV9uZltKMktfUTFdID0gKCFp c19kaXZpc2libGUocTEgKyAxLCBjKSkgKiBFWzQgKiAocTEgLQo+PiA+IHF1YWRfd2lkdGgpICsg NV07Cj4+ID4gKyAgICAgICAgICAgIEVfbmZbSjJLX1EyXSA9ICghaXNfZGl2aXNpYmxlKHEyICsg MSwgYykpICogRVs0ICogKHEyIC0KPj4gPiBxdWFkX3dpZHRoKSArIDVdOwo+PiA+ICsKPj4gPiAr ICAgICAgICAgICAgbWF4X2VbSjJLX1ExXSA9IEZGTUFYKEVfbndbSjJLX1ExXSwgRkZNQVgzKEVf bltKMktfUTFdLAo+PiA+IEVfbmVbSjJLX1ExXSwgRV9uZltKMktfUTFdKSk7Cj4+ID4gKyAgICAg ICAgICAgIG1heF9lW0oyS19RMl0gPSBGRk1BWChFX253W0oyS19RMl0sIEZGTUFYMyhFX25bSjJL X1EyXSwKPj4gPiBFX25lW0oyS19RMl0sIEVfbmZbSjJLX1EyXSkpOwo+PiA+ICsKPj4gPiArICAg ICAgICAgICAga2FwcGFbSjJLX1ExXSA9IEZGTUFYKDEsIGdhbW1hW0oyS19RMV0gKiAobWF4X2Vb SjJLX1ExXQo+PiA+IC0gMSkpOwo+PiA+ICsgICAgICAgICAgICBrYXBwYVtKMktfUTJdID0gRkZN QVgoMSwgZ2FtbWFbSjJLX1EyXSAqIChtYXhfZVtKMktfUTJdCj4+ID4gLSAxKSk7Cj4+ID4gKwo+ PiA+ICsgICAgICAgICAgICBVW0oyS19RMV0gPSBrYXBwYVtKMktfUTFdICsgdVtKMktfUTFdOwo+ PiA+ICsgICAgICAgICAgICBVW0oyS19RMl0gPSBrYXBwYVtKMktfUTJdICsgdVtKMktfUTJdOwo+ PiA+ICsKPj4gPiArICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKPj4g PiArICAgICAgICAgICAgICAgIG1bSjJLX1ExXVtpXSA9IHNpZ21hX25bNCAqIHExICsgaV0gKiBV W0oyS19RMV0gLQo+PiA+ICgoZW1iX3BhdF9rW0oyS19RMV0gPj4gaSkgJiAxKTsKPj4gPiArICAg ICAgICAgICAgICAgIG1bSjJLX1EyXVtpXSA9IHNpZ21hX25bNCAqIHEyICsgaV0gKiBVW0oyS19R Ml0gLQo+PiA+ICgoZW1iX3BhdF9rW0oyS19RMl0gPj4gaSkgJiAxKTsKPj4gPiArICAgICAgICAg ICAgfQo+PiA+ICsgICAgICAgICAgICByZWNvdmVyX21hZ19zZ24obWFnX3Nnbl9zdHJlYW0sIEoy S19RMSwgcTEsIG1fbiwKPj4gPiBrbm93bl8xLCBlbWJfcGF0XzEsIHYsIG0sCj4+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBFLCBtdV9uLCBEY3VwLCBQY3VwLCBwTFNCKTsKPj4gPiAr Cj4+ID4gKyAgICAgICAgICAgIHJlY292ZXJfbWFnX3NnbihtYWdfc2duX3N0cmVhbSwgSjJLX1Ey LCBxMiwgbV9uLAo+PiA+IGtub3duXzEsIGVtYl9wYXRfMSwgdiwgbSwKPj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEUsIG11X24sIERjdXAsIFBjdXAsIHBMU0IpOwo+PiA+ICsKPj4g PiArICAgICAgICAgICAgLyogbW92ZSB0byB0aGUgbmV4dCBxdWFkIHBhaXIgKi8KPj4gPiArICAg ICAgICAgICAgcSArPSAyOwo+PiA+ICsgICAgICAgIH0KPj4gPiArICAgICAgICBpZiAocXVhZF93 aWR0aCAlIDIgPT0gMSkgewo+PiA+ICsgICAgICAgICAgICBxMSA9IHE7Cj4+ID4gKyAgICAgICAg ICAgIC8qIGNhbGN1bGF0ZSBjb250ZXh0IGZvciBjdXJyZW50IHF1YWQgKi8KPj4gPiArICAgICAg ICAgICAgY29udGV4dDEgPSBzaWdtYV9uWzQgKiAocTEgLSBxdWFkX3dpZHRoKSArIDFdOwo+PiA+ ICsgICAgICAgICAgICBjb250ZXh0MSArPSAoc2lnbWFfbls0ICogKHExIC0gcXVhZF93aWR0aCkg KyAzXSA8PCAyKTsKPj4gPiArCj4+ID4gKyAgICAgICAgICAgIGlmICghaXNfZGl2aXNpYmxlKHEx LCBjKSkgewo+PiA+ICsgICAgICAgICAgICAgICAgY29udGV4dDEgfD0gc2lnbWFfbls0ICogKHEx IC0gcXVhZF93aWR0aCkgLSAxXTsKPj4gPiArICAgICAgICAgICAgICAgIGNvbnRleHQxICs9IChz aWdtYV9uWzQgKiBxMSAtIDFdIHwgc2lnbWFfbls0ICogcTEgLQo+PiA+IDJdKSA8PCAxOwo+PiA+ ICsgICAgICAgICAgICB9Cj4+ID4gKyAgICAgICAgICAgIGlmICghaXNfZGl2aXNpYmxlKHExICsg MSwgYykpCj4+ID4gKyAgICAgICAgICAgICAgICBjb250ZXh0MSB8PSBzaWdtYV9uWzQgKiAocTEg LSBxdWFkX3dpZHRoKSArIDVdIDw8IDI7Cj4+ID4gKwo+PiA+ICsgICAgICAgICAgICBpZiAoKHJl dCA9IGpwZWcyMDAwX2RlY29kZV9zaWdfZW1iKHMsIG1lbF9zdGF0ZSwKPj4gPiBtZWxfc3RyZWFt LCB2bGNfc3RyZWFtLAo+PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRlY19DeHRWTENfdGFibGUxLAo+PiA+IERjdXAsIHNpZ19wYXQsIHJlc19vZmYs Cj4+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1i X3BhdF9rLCBlbWJfcGF0XzEsCj4+ID4gSjJLX1ExLCBjb250ZXh0MSwgTGN1cCwKPj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQY3VwKSkKPj4gPiAr ICAgICAgICAgICAgICAgIDwgMCkKPj4gPiArICAgICAgICAgICAgICAgIGdvdG8gZnJlZTsKPj4g PiArCj4+ID4gKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKQo+PiA+ICsg ICAgICAgICAgICAgICAgc2lnbWFfbls0ICogcTEgKyBpXSA9IChzaWdfcGF0W0oyS19RMV0gPj4g aSkgJiAxOwo+PiA+ICsKPj4gPiArICAgICAgICAgICAgdVtKMktfUTFdID0gMDsKPj4gPiArCj4+ ID4gKyAgICAgICAgICAgIC8qIFJlY292ZXIgbWFnX3NnbiB2YWx1ZSAqLwo+PiA+ICsgICAgICAg ICAgICBpZiAocmVzX29mZltKMktfUTFdID09IDEpIHsKPj4gPiArICAgICAgICAgICAgICAgIHVf cGZ4W0oyS19RMV0gPSB2bGNfZGVjb2RlX3VfcHJlZml4KHZsY19zdHJlYW0sCj4+ID4gdmxjX2J1 Zik7Cj4+ID4gKyAgICAgICAgICAgICAgICB1X3NmeFtKMktfUTFdID0gdmxjX2RlY29kZV91X3N1 ZmZpeCh2bGNfc3RyZWFtLAo+PiA+IHVfcGZ4W0oyS19RMV0sIHZsY19idWYpOwo+PiA+ICsgICAg ICAgICAgICAgICAgdV9leHRbSjJLX1ExXSA9IHZsY19kZWNvZGVfdV9leHRlbnNpb24odmxjX3N0 cmVhbSwKPj4gPiB1X3NmeFtKMktfUTFdLCB2bGNfYnVmKTsKPj4gPiArCj4+ID4gKyAgICAgICAg ICAgICAgICB1W0oyS19RMV0gPSB1X3BmeFtKMktfUTFdICsgdV9zZnhbSjJLX1ExXSArCj4+ID4g KHVfZXh0W0oyS19RMV0gPDwgMik7Cj4+ID4gKyAgICAgICAgICAgIH0KPj4gPiArCj4+ID4gKyAg ICAgICAgICAgIHNwID0gc2lnX3BhdFtKMktfUTFdOwo+PiA+ICsKPj4gPiArICAgICAgICAgICAg Z2FtbWFbSjJLX1ExXSA9IDE7Cj4+ID4gKwo+PiA+ICsgICAgICAgICAgICBpZiAoc3AgPT0gMCB8 fCBzcCA9PSAxIHx8IHNwID09IDIgfHwgc3AgPT0gNCB8fCBzcCA9PSA4KQo+PiA+ICsgICAgICAg ICAgICAgICAgZ2FtbWFbSjJLX1ExXSA9IDA7Cj4+ID4gKwo+PiA+ICsgICAgICAgICAgICBFX25b SjJLX1ExXSA9IEVbNCAqIChxMSAtIHF1YWRfd2lkdGgpICsgMV07Cj4+ID4gKwo+PiA+ICsgICAg ICAgICAgICBFX25lW0oyS19RMV0gPSBFWzQgKiAocTEgLSBxdWFkX3dpZHRoKSArIDNdOwo+PiA+ ICsKPj4gPiArICAgICAgICAgICAgRV9ud1tKMktfUTFdID0gKCFpc19kaXZpc2libGUocTEsIGMp KSAqIEVbRkZNQVgoKDQgKiAocTEKPj4gPiAtIHF1YWRfd2lkdGgpIC0gMSksIDApXTsKPj4gPiAr Cj4+ID4gKyAgICAgICAgICAgIEVfbmZbSjJLX1ExXSA9ICghaXNfZGl2aXNpYmxlKHExICsgMSwg YykpICogRVs0ICogKHExIC0KPj4gPiBxdWFkX3dpZHRoKSArIDVdOwo+PiA+ICsKPj4gPiArICAg ICAgICAgICAgbWF4X2VbSjJLX1ExXSA9IEZGTUFYKEVfbndbSjJLX1ExXSwgRkZNQVgzKEVfbltK MktfUTFdLAo+PiA+IEVfbmVbSjJLX1ExXSwgRV9uZltKMktfUTFdKSk7Cj4+ID4gKwo+PiA+ICsg ICAgICAgICAgICBrYXBwYVtKMktfUTFdID0gRkZNQVgoMSwgZ2FtbWFbSjJLX1ExXSAqIChtYXhf ZVtKMktfUTFdCj4+ID4gLSAxKSk7Cj4+ID4gKwo+PiA+ICsgICAgICAgICAgICBVW0oyS19RMV0g PSBrYXBwYVtKMktfUTFdICsgdVtKMktfUTFdOwo+PiA+ICsKPj4gPiArICAgICAgICAgICAgZm9y IChpbnQgaSA9IDA7IGkgPCA0OyBpKyspCj4+ID4gKyAgICAgICAgICAgICAgICBtW0oyS19RMV1b aV0gPSBzaWdtYV9uWzQgKiBxMSArIGldICogVVtKMktfUTFdIC0KPj4gPiAoKGVtYl9wYXRfa1tK MktfUTFdID4+IGkpICYgMSk7Cj4+ID4gKwo+PiA+ICsgICAgICAgICAgICByZWNvdmVyX21hZ19z Z24obWFnX3Nnbl9zdHJlYW0sIEoyS19RMSwgcTEsIG1fbiwKPj4gPiBrbm93bl8xLCBlbWJfcGF0 XzEsIHYsIG0sCj4+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFLCBtdV9uLCBEY3Vw LCBQY3VwLCBwTFNCKTsKPj4gPiArICAgICAgICAgICAgcSArPSAxOwo+PiA+ICsgICAgICAgIH0K Pj4gPiArICAgIH0KPj4gPiArICAgIC8vIGNvbnZlcnQgdG8gcmFzdGVyLXNjYW4KPj4KPj4gQ291 bGQgdGhpcyBiZSBkb25lIGFsbCBpbiBvbmUgZ28gaW4gdGhlIGxvb3AgYWJvdmU/IFdyaXRpbmcg dG8gbXUgdGhlbgo+PiByZWFkaW5nIGZyb20gaXQgbGF0ZXIgaXMgbm90IHZlcnkgY2FjaGUgZnJp ZW5kbHkuCj4+Cj4+IE5vIGZ1cnRoZXIgY29tbWVudHMgZm9yIG5vdy4gTWlnaHQgcmUtcmVhZCBp dCBsYXRlci4KPj4KPj4gL1RvbWFzCj4+Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCj4+IGZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKPj4gZmZtcGVn LWRldmVsQGZmbXBlZy5vcmcKPj4gaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8v ZmZtcGVnLWRldmVsCj4+Cj4+IFRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBl bWFpbAo+PiBmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5z dWJzY3JpYmUiLgo+Pgo+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcK aHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1 YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RA ZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K