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 CCC8D40938 for ; Sun, 3 Apr 2022 18:01:54 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0117068B277; Sun, 3 Apr 2022 21:01:52 +0300 (EEST) Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 620E868B253 for ; Sun, 3 Apr 2022 21:01:45 +0300 (EEST) Received: by mail-wm1-f44.google.com with SMTP id l9-20020a05600c4f0900b0038ccd1b8642so5359424wmq.0 for ; Sun, 03 Apr 2022 11:01:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=UGQTe8vBQ9NEhDIaAluUPhN8kLELrpUwHUlZYYufm2A=; b=lPCASMqe9a+R4wUr6a3pOOqhpqCAKqxMw9G0oM6YY8hXmoUmV2UVsCBGfSRDFap2w4 0jKtXH2Qg2HovITibPOHLaCvz3/vQb2v+nOy//JW/NO8ipJK7osiToBbc/aHf5zIg6be IgFdvMRfDqnksVTSP+1/H0VT+rpmIbPSQKrbIl5iSneldZzN9JspdiGl7KjowHAgBK8m xAuOJhB1lci+ev5DapsKKq3rlIoDucBcLAk9uV2B08DPBzp4zBarJGx65ji+MBpZPhA2 bS/r9wyKa+45MypI7Rh2LHkYrE0cN6TMoWv9Fi0P12fk2aewlcOWh+JO3mCi022p7Znt t/eA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=UGQTe8vBQ9NEhDIaAluUPhN8kLELrpUwHUlZYYufm2A=; b=4ug50kgtxqwu5mICigSTE2+yCO6onDkQYNZVx9M1etuKELEB4EEtSCU2hCp+yCPhbf eGfASGxy/vQofoJ6OAx4s8U+Q+uVyWkM71sN6FSD7Oa7lDYZC0LHMl+HlcDO7ASQHV4q HAKVXRzLyr6SsxIOyJ4oMhxkvmAVH0qZ9tY9UmarRSGgNBGh9ki9fbbx1gELgFlGMhty BjfDpG6Zv2nyyQjvzkTyatfGLceJXQ++dHiXYGOGeGCU/YwdneQ27OOC8o7gl9V4GX8p FOh/6QSfeSabPlJ8udmU6flPPa0guE7tVTSrH7ow/XJsnsYzoDI7so0E2/W7Veyiol3/ 7eyw== X-Gm-Message-State: AOAM533+DEzW6VbJ3pq5s+DHJciFLH2tqOmX90RheifIO/UHGZqWP16l wGRjvEw71Mn6K1LpuMl6BFqYJeu1YheB5lgTWDSedTyLj2Y= X-Google-Smtp-Source: ABdhPJyZG3dMXYYT9MbaSOkmhJ27+dRQ8ZIAIwauIRfUvYGpJcpXMHvrlfNSPf4ZJM/fi5lxWfq3ZRwDifb7ywvIJlU= X-Received: by 2002:a05:600c:4401:b0:38c:8df8:9797 with SMTP id u1-20020a05600c440100b0038c8df89797mr16260787wmn.13.1649008903976; Sun, 03 Apr 2022 11:01:43 -0700 (PDT) MIME-Version: 1.0 References: <20220401000852.156566-1-markg85@gmail.com> <20220401000852.156566-2-markg85@gmail.com> <20220401153906.GQ2829255@pb2> In-Reply-To: From: Mark Gaiser Date: Sun, 3 Apr 2022 20:00:32 +0200 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH v11 1/1] avformat: Add IPFS protocol support. 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 Cc: michael@niedermayer.cc 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: T24gU3VuLCBBcHIgMywgMjAyMiBhdCA3OjU0IFBNIE1hcmsgR2Fpc2VyIDxtYXJrZzg1QGdtYWls LmNvbT4gd3JvdGU6Cgo+IE9uIEZyaSwgQXByIDEsIDIwMjIgYXQgNTozOSBQTSBNaWNoYWVsIE5p ZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgo+IHdyb3RlOgo+Cj4+IE9uIEZyaSwg QXByIDAxLCAyMDIyIGF0IDAyOjIzOjIzQU0gKzAyMDAsIE1hcmsgR2Fpc2VyIHdyb3RlOgo+PiA+ IE9uIEZyaSwgQXByIDEsIDIwMjIgYXQgMjowOSBBTSBNYXJrIEdhaXNlciA8bWFya2c4NUBnbWFp bC5jb20+IHdyb3RlOgo+PiA+Cj4+ID4gPiBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3I6Cj4+ ID4gPiAtIGZmcGxheSBpcGZzOi8vPGNpZD4KPj4gPiA+IC0gZmZwbGF5IGlwbnM6Ly88Y2lkPgo+ PiA+ID4KPj4gPiA+IElQRlMgZGF0YSBjYW4gYmUgcGxheWVkIGZyb20gc28gY2FsbGVkICJpcGZz IGdhdGV3YXlzIi4KPj4gPiA+IEEgZ2F0ZXdheSBpcyBlc3NlbnRpYWxseSBhIHdlYnNlcnZlciB0 aGF0IGdpdmVzIGFjY2VzcyB0byB0aGUKPj4gPiA+IGRpc3RyaWJ1dGVkIElQRlMgbmV0d29yay4K Pj4gPiA+Cj4+ID4gPiBUaGlzIHByb3RvY29sIHN1cHBvcnQgKGlwZnMgYW5kIGlwbnMpIHRoZXJl Zm9yZSB0cmFuc2xhdGVzCj4+ID4gPiBpcGZzOi8vIGFuZCBpcG5zOi8vIHRvIGEgaHR0cDovLyB1 cmwuIFRoaXMgcmVzdWx0aW5nIHVybCBpcwo+PiA+ID4gdGhlbiBoYW5kbGVkIGJ5IHRoZSBodHRw IHByb3RvY29sLiBJdCBjb3VsZCBhbHNvIGJlIGh0dHBzCj4+ID4gPiBkZXBlbmRpbmcgb24gdGhl IGdhdGV3YXkgcHJvdmlkZWQuCj4+ID4gPgo+PiA+ID4gVG8gdXNlIHRoaXMgcHJvdG9jb2wsIGEg Z2F0ZXdheSBtdXN0IGJlIHByb3ZpZGVkLgo+PiA+ID4gSWYgeW91IGRvIG5vdGhpbmcgaXQgd2ls bCB0cnkgdG8gZmluZCBpdCBpbiB5b3VyCj4+ID4gPiAkSE9NRS8uaXBmcy9nYXRld2F5IGZpbGUu IFRoZSB3YXlzIHRvIHNldCBpdCBtYW51YWxseSBhcmU6Cj4+ID4gPiAxLiBEZWZpbmUgYSAtZ2F0 ZXdheSA8dXJsPiB0byB0aGUgZ2F0ZXdheS4KPj4gPiA+IDIuIERlZmluZSAkSVBGU19HQVRFV0FZ IHdpdGggdGhlIGZ1bGwgaHR0cCBsaW5rIHRvIHRoZSBnYXRld2F5Lgo+PiA+ID4gMy4gRGVmaW5l ICRJUEZTX1BBVEggYW5kIHBvaW50IGl0IHRvIHRoZSBJUEZTIGRhdGEgcGF0aC4KPj4gPiA+IDQu IEhhdmUgSVBGUyBydW5uaW5nIGluIHlvdXIgbG9jYWwgdXNlciBmb2xkZXIgKHVuZGVyICRIT01F Ly5pcGZzKS4KPj4gPiA+Cj4+ID4gPiBTaWduZWQtb2ZmLWJ5OiBNYXJrIEdhaXNlciA8bWFya2c4 NUBnbWFpbC5jb20+Cj4+ID4gPiAtLS0KPj4gPiA+ICBjb25maWd1cmUgICAgICAgICAgICAgICAg IHwgICAyICsKPj4gPiA+ICBkb2MvcHJvdG9jb2xzLnRleGkgICAgICAgIHwgIDMwICsrKysKPj4g PiA+ICBsaWJhdmZvcm1hdC9NYWtlZmlsZSAgICAgIHwgICAyICsKPj4gPiA+ICBsaWJhdmZvcm1h dC9pcGZzZ2F0ZXdheS5jIHwgMzI4Cj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCj4+ID4gPiAgbGliYXZmb3JtYXQvcHJvdG9jb2xzLmMgICB8ICAgMiArCj4+ID4gPiAg NSBmaWxlcyBjaGFuZ2VkLCAzNjQgaW5zZXJ0aW9ucygrKQo+PiA+ID4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBsaWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jCj4+ID4gPgo+PiA+ID4gZGlmZiAtLWdpdCBh L2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQo+PiA+ID4gaW5kZXggZTRkMzZhYTYzOS4uNTVhZjkwOTU3 YSAxMDA3NTUKPj4gPiA+IC0tLSBhL2NvbmZpZ3VyZQo+PiA+ID4gKysrIGIvY29uZmlndXJlCj4+ ID4gPiBAQCAtMzU3OSw2ICszNTc5LDggQEAgdWRwX3Byb3RvY29sX3NlbGVjdD0ibmV0d29yayIK Pj4gPiA+ICB1ZHBsaXRlX3Byb3RvY29sX3NlbGVjdD0ibmV0d29yayIKPj4gPiA+ICB1bml4X3By b3RvY29sX2RlcHM9InN5c191bl9oIgo+PiA+ID4gIHVuaXhfcHJvdG9jb2xfc2VsZWN0PSJuZXR3 b3JrIgo+PiA+ID4gK2lwZnNfcHJvdG9jb2xfc2VsZWN0PSJodHRwc19wcm90b2NvbCIKPj4gPiA+ ICtpcG5zX3Byb3RvY29sX3NlbGVjdD0iaHR0cHNfcHJvdG9jb2wiCj4+ID4gPgo+PiA+ID4gICMg ZXh0ZXJuYWwgbGlicmFyeSBwcm90b2NvbHMKPj4gPiA+ICBsaWJhbXFwX3Byb3RvY29sX2RlcHM9 ImxpYnJhYmJpdG1xIgo+PiA+ID4gZGlmZiAtLWdpdCBhL2RvYy9wcm90b2NvbHMudGV4aSBiL2Rv Yy9wcm90b2NvbHMudGV4aQo+PiA+ID4gaW5kZXggZDIwN2RmMGI1Mi4uN2M5YzBhNDgwOCAxMDA2 NDQKPj4gPiA+IC0tLSBhL2RvYy9wcm90b2NvbHMudGV4aQo+PiA+ID4gKysrIGIvZG9jL3Byb3Rv Y29scy50ZXhpCj4+ID4gPiBAQCAtMjAyNSw1ICsyMDI1LDM1IEBAIGRlY29kaW5nIGVycm9ycy4K Pj4gPiA+Cj4+ID4gPiAgQGVuZCB0YWJsZQo+PiA+ID4KPj4gPiA+ICtAc2VjdGlvbiBpcGZzCj4+ ID4gPiArCj4+ID4gPiArSW50ZXJQbGFuZXRhcnkgRmlsZSBTeXN0ZW0gKElQRlMpIHByb3RvY29s IHN1cHBvcnQuIE9uZSBjYW4gYWNjZXNzCj4+IGZpbGVzCj4+ID4gPiBzdG9yZWQKPj4gPiA+ICtv biB0aGUgSVBGUyBuZXR3b3JrIHRocm91Z2ggc28gY2FsbGVkIGdhdGV3YXlzLiBUaG9zZSBhcmUg aHR0cChzKQo+PiA+ID4gZW5kcG9pbnRzLgo+PiA+ID4gK1RoaXMgcHJvdG9jb2wgd3JhcHMgdGhl IElQRlMgbmF0aXZlIHByb3RvY29scyAoaXBmczovLyBhbmQgaXBuczovLykKPj4gdG8gYmUKPj4g PiA+IHNlbmQKPj4gPiA+ICt0byBzdWNoIGEgZ2F0ZXdheS4gVXNlcnMgY2FuIChhbmQgc2hvdWxk KSBob3N0IHRoZWlyIG93biBub2RlIHdoaWNoCj4+IG1lYW5zCj4+ID4gPiB0aGlzCj4+ID4gPiAr cHJvdG9jb2wgd2lsbCB1c2UgeW91ciBsb2NhbCBtYWNoaW5lIGdhdGV3YXkgdG8gYWNjZXNzIGZp bGVzIG9uIHRoZQo+PiBJUEZTCj4+ID4gPiBuZXR3b3JrLgo+PiA+ID4gKwo+PiA+ID4gK0lmIGEg dXNlciBkb2Vzbid0IGhhdmUgYSBub2RlIG9mIHRoZWlyIG93biB0aGVuIHRoZSBwdWJsaWMgZ2F0 ZXdheQo+PiA+ID4gZHdlYi5saW5rIGlzCj4+ID4gPiArdXNlZCBieSBkZWZhdWx0Lgo+PiA+ID4g Kwo+PiA+ID4gK1lvdSBjYW4gdXNlIHRoaXMgcHJvdG9jb2wgaW4gMiB3YXlzLiBVc2luZyBJUEZT Ogo+PiA+ID4gK0BleGFtcGxlCj4+ID4gPiArZmZwbGF5IGlwZnM6Ly9RbWJHdEpnMjNza2h2Rm11 OW1KaWVQVkJ5aGZ6dTVyd283NE1Fa1ZEWUFtRjVUCj4+ID4gPiArQGVuZCBleGFtcGxlCj4+ID4g PiArCj4+ID4gPiArT3IgdGhlIElQTlMgcHJvdG9jb2wgKElQTlMgaXMgbXV0YWJsZSBJUEZTKToK Pj4gPiA+ICtAZXhhbXBsZQo+PiA+ID4gK2ZmcGxheSBpcG5zOi8vUW1iR3RKZzIzc2todkZtdTlt SmllUFZCeWhmenU1cndvNzRNRWtWRFlBbUY1VAo+PiA+ID4gK0BlbmQgZXhhbXBsZQo+PiA+ID4g Kwo+PiA+ID4gK1lvdSBjYW4gYWxzbyBjaGFuZ2UgdGhlIGdhdGV3YXkgdG8gYmUgdXNlZDoKPj4g PiA+ICsKPj4gPiA+ICtAdGFibGUgQG9wdGlvbgo+PiA+ID4gKwo+PiA+ID4gK0BpdGVtIGdhdGV3 YXkKPj4gPiA+ICtEZWZpbmVzIHRoZSBnYXRld2F5IHRvIHVzZS4gV2hlbiBub3RoaW5nIGlzIHBy b3ZpZGVkIHRoZSBwcm90b2NvbAo+PiB3aWxsCj4+ID4gPiBmaXJzdCB0cnkKPj4gPiA+ICt5b3Vy IGxvY2FsIGdhdGV3YXkuIElmIHRoYXQgZmFpbHMgZHdlYi5saW5rIHdpbGwgYmUgdXNlZC4KPj4g PiA+ICsKPj4gPiA+ICtAZW5kIHRhYmxlCj4+ID4gPgo+PiA+ID4gIEBjIG1hbiBlbmQgUFJPVE9D T0xTCj4+ID4gPiBkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvTWFrZWZpbGUgYi9saWJhdmZvcm1h dC9NYWtlZmlsZQo+PiA+ID4gaW5kZXggZDcxODJkNmJkOC4uZTMyMzNmZDdhYyAxMDA2NDQKPj4g PiA+IC0tLSBhL2xpYmF2Zm9ybWF0L01ha2VmaWxlCj4+ID4gPiArKysgYi9saWJhdmZvcm1hdC9N YWtlZmlsZQo+PiA+ID4gQEAgLTY2MCw2ICs2NjAsOCBAQCBPQkpTLSQoQ09ORklHX1NSVFBfUFJP VE9DT0wpICAgICAgICAgICAgICs9Cj4+ID4gPiBzcnRwcHJvdG8ubyBzcnRwLm8KPj4gPiA+ICBP QkpTLSQoQ09ORklHX1NVQkZJTEVfUFJPVE9DT0wpICAgICAgICAgICs9IHN1YmZpbGUubwo+PiA+ ID4gIE9CSlMtJChDT05GSUdfVEVFX1BST1RPQ09MKSAgICAgICAgICAgICAgKz0gdGVlcHJvdG8u byB0ZWVfY29tbW9uLm8KPj4gPiA+ICBPQkpTLSQoQ09ORklHX1RDUF9QUk9UT0NPTCkgICAgICAg ICAgICAgICs9IHRjcC5vCj4+ID4gPiArT0JKUy0kKENPTkZJR19JUEZTX1BST1RPQ09MKSAgICAg ICAgICAgICArPSBpcGZzZ2F0ZXdheS5vCj4+ID4gPiArT0JKUy0kKENPTkZJR19JUE5TX1BST1RP Q09MKSAgICAgICAgICAgICArPSBpcGZzZ2F0ZXdheS5vCj4+ID4gPiAgVExTLU9CSlMtJChDT05G SUdfR05VVExTKSAgICAgICAgICAgICAgICArPSB0bHNfZ251dGxzLm8KPj4gPiA+ICBUTFMtT0JK Uy0kKENPTkZJR19MSUJUTFMpICAgICAgICAgICAgICAgICs9IHRsc19saWJ0bHMubwo+PiA+ID4g IFRMUy1PQkpTLSQoQ09ORklHX01CRURUTFMpICAgICAgICAgICAgICAgKz0gdGxzX21iZWR0bHMu bwo+PiA+ID4gZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2lwZnNnYXRld2F5LmMgYi9saWJhdmZv cm1hdC9pcGZzZ2F0ZXdheS5jCj4+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiA+ID4gaW5k ZXggMDAwMDAwMDAwMC4uNzI1Y2M1ZTQ3NAo+PiA+ID4gLS0tIC9kZXYvbnVsbAo+PiA+ID4gKysr IGIvbGliYXZmb3JtYXQvaXBmc2dhdGV3YXkuYwo+PiA+ID4gQEAgLTAsMCArMSwzMjggQEAKPj4g PiA+ICsvKgo+PiA+ID4gKyAqIElQRlMgYW5kIElQTlMgcHJvdG9jb2wgc3VwcG9ydCB0aHJvdWdo IElQRlMgR2F0ZXdheS4KPj4gPiA+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjIgTWFyayBHYWlzZXIK Pj4gPiA+ICsgKgo+PiA+ID4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KPj4gPiA+ ICsgKgo+PiA+ID4gKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IKPj4gPiA+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4+ID4gPiArICogTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCj4+ID4gPiArICogdmVy c2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCj4+ID4gPiArICoKPj4gPiA+ICsgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPj4gPiA+ICsgKiBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+PiA+ID4gKyAq IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUgR05VCj4+ID4gPiArICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KPj4gPiA+ICsgKgo+PiA+ID4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPj4gPiA+ICsgKiBMaWNl bnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl Cj4+ID4gPiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG bG9vciwgQm9zdG9uLCBNQQo+PiA+ID4gMDIxMTAtMTMwMSBVU0EKPj4gPiA+ICsgKi8KPj4gPiA+ ICsKPj4gPiA+ICsjaW5jbHVkZSAibGliYXZ1dGlsL2F2c3RyaW5nLmgiCj4+ID4gPiArI2luY2x1 ZGUgImxpYmF2dXRpbC9vcHQuaCIKPj4gPiA+ICsjaW5jbHVkZSAidXJsLmgiCj4+ID4gPiArI2lu Y2x1ZGUgPHN5cy9zdGF0Lmg+Cj4+ID4gPiArCj4+ID4gPiArdHlwZWRlZiBzdHJ1Y3QgSVBGU0dh dGV3YXlDb250ZXh0IHsKPj4gPiA+ICsgICAgQVZDbGFzcyAqY2xhc3M7Cj4+ID4gPiArICAgIFVS TENvbnRleHQgKmlubmVyOwo+PiA+ID4gKyAgICAvLyBJcyBmaWxsZWQgYnkgdGhlIC1nYXRld2F5 IGFyZ3VtZW50IGFuZCBub3QgY2hhbmdlZCBhZnRlci4KPj4gPiA+ICsgICAgY2hhciAqZ2F0ZXdh eTsKPj4gPiA+ICsgICAgLy8gSWYgdGhlIGFib3ZlIGdhdGV3YXkgaXMgbm9uIG51bGwsIGl0IHdp bGwgYmUgY29waWVkIGludG8gdGhpcwo+PiA+ID4gYnVmZmVyLgo+PiA+ID4gKyAgICAvLyBFbHNl IHRoaXMgYnVmZmVyIHdpbGwgY29udGFpbiB0aGUgYXV0byBkZXRlY3RlZCBnYXRld2F5Lgo+PiA+ ID4gKyAgICAvLyBJbiBlaXRoZXIgY2FzZSwgdGhlIGdhdGV3YXkgdG8gdXNlIHdpbGwgYmUgaW4g dGhpcyBidWZmZXIuCj4+ID4gPiArICAgIGNoYXIgZ2F0ZXdheV9idWZmZXJbUEFUSF9NQVhdOwo+ PiA+ID4gK30gSVBGU0dhdGV3YXlDb250ZXh0Owo+PiA+ID4gKwo+PiA+ID4gKy8vIEEgYmVzdC1l ZmZvcnQgd2F5IHRvIGZpbmQgdGhlIElQRlMgZ2F0ZXdheS4KPj4gPiA+ICsvLyBPbmx5IHRoZSBt b3N0IGFwcHJvcGlhdGUgZ2F0ZXdheSBpcyBzZXQuIEl0J3Mgbm90IGFjdHVhbGx5Cj4+IHJlcXVl c3RlZAo+PiA+ID4gKy8vIChodHRwIGNhbGwpIHRvIHByZXZlbnQgYSBwb3RlbnRpYWwgc2xvd2Rv d24gaW4gc3RhcnR1cC4gQQo+PiBwb3RlbnRpYWwKPj4gPiA+IHRpbWVvdXQKPj4gPiA+ICsvLyBp cyBoYW5kbGVkIGJ5IHRoZSBIVFRQIHByb3RvY29sLgo+PiA+ID4gK3N0YXRpYyBpbnQgcG9wdWxh dGVfaXBmc19nYXRld2F5KFVSTENvbnRleHQgKmgpCj4+ID4gPiArewo+PiA+ID4gKyAgICBJUEZT R2F0ZXdheUNvbnRleHQgKmMgPSBoLT5wcml2X2RhdGE7Cj4+ID4gPiArICAgIGNoYXIgaXBmc19m dWxsX2RhdGFfZm9sZGVyW1BBVEhfTUFYXTsKPj4gPiA+ICsgICAgY2hhciBpcGZzX2dhdGV3YXlf ZmlsZVtQQVRIX01BWF07Cj4+ID4gPiArICAgIHN0cnVjdCBzdGF0IHN0Owo+PiA+ID4gKyAgICBp bnQgc3RhdF9yZXQgPSAwOwo+PiA+ID4gKyAgICBpbnQgcmV0ID0gQVZFUlJPUihFSU5WQUwpOwo+ PiA+ID4gKyAgICBGSUxFICpnYXRld2F5X2ZpbGUgPSBOVUxMOwo+PiA+ID4gKwo+PiA+ID4gKyAg ICAvLyBUZXN0ICRJUEZTX0dBVEVXQVkuCj4+ID4gPiArICAgIGlmIChnZXRlbnYoIklQRlNfR0FU RVdBWSIpICE9IE5VTEwpIHsKPj4gPiA+ICsgICAgICAgIGlmIChzbnByaW50ZihjLT5nYXRld2F5 X2J1ZmZlciwgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSwKPj4gIiVzIiwKPj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICBnZXRlbnYoIklQRlNfR0FURVdBWSIpKSA+PQo+PiA+ID4gc2l6ZW9m KGMtPmdhdGV3YXlfYnVmZmVyKSkgewo+PiA+ID4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9M T0dfV0FSTklORywgIlRoZSBJUEZTX0dBVEVXQVkgZW52aXJvbm1lbnQKPj4gPiA+IHZhcmlhYmxl ICIKPj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNlZWRz IHRoZSBtYXhpbXVtIGxlbmd0aC4gIgo+PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIldlIGFsbG93IGEgbWF4IG9mICV6dQo+PiA+ID4gY2hhcmFjdGVyc1xuIiwK Pj4gPiA+ICsgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSk7Cj4+ ID4gPiArICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFSU5WQUwpOwo+PiA+ID4gKyAgICAgICAg ICAgIGdvdG8gZXJyOwo+PiA+ID4gKyAgICAgICAgfQo+PiA+ID4gKwo+PiA+ID4gKyAgICAgICAg cmV0ID0gMTsKPj4gPiA+ICsgICAgICAgIGdvdG8gZXJyOwo+PiA+ID4gKyAgICB9IGVsc2UKPj4g PiA+ICsgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfREVCVUcsICIkSVBGU19HQVRFV0FZIGlzIGVt cHR5LlxuIik7Cj4+ID4gPiArCj4+ID4gPiArICAgIC8vIFdlIG5lZWQgdG8ga25vdyB0aGUgSVBG UyBmb2xkZXIgdG8gLSBldmVudHVhbGx5IC0gcmVhZCB0aGUKPj4gPiA+IGNvbnRlbnRzIG9mCj4+ ID4gPiArICAgIC8vIHRoZSAiZ2F0ZXdheSIgZmlsZSB3aGljaCB3b3VsZCB0ZWxsIHVzIHRoZSBn YXRld2F5IHRvIHVzZS4KPj4gPiA+ICsgICAgaWYgKGdldGVudigiSVBGU19QQVRIIikgPT0gTlVM TCkgewo+PiA+ID4gKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19ERUJVRywgIiRJUEZTX1BBVEgg aXMgZW1wdHkuXG4iKTsKPj4gPiA+ICsKPj4gPiA+ICsgICAgICAgIC8vIFRyeSB2aWEgdGhlIGhv bWUgZm9sZGVyLgo+PiA+ID4gKyAgICAgICAgaWYgKGdldGVudigiSE9NRSIpID09IE5VTEwpIHsK Pj4gPiA+ICsgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICIkSE9NRSBhcHBl YXJzIHRvIGJlCj4+IGVtcHR5LlxuIik7Cj4+ID4gPiArICAgICAgICAgICAgcmV0ID0gQVZFUlJP UihFSU5WQUwpOwo+PiA+ID4gKyAgICAgICAgICAgIGdvdG8gZXJyOwo+PiA+ID4gKyAgICAgICAg fQo+PiA+ID4gKwo+PiA+ID4gKyAgICAgICAgLy8gVmVyaWZ5IHRoZSBjb21wb3NlZCBwYXRoIGZp dHMuCj4+ID4gPiArICAgICAgICBpZiAoc25wcmludGYoaXBmc19mdWxsX2RhdGFfZm9sZGVyLAo+ PiBzaXplb2YoaXBmc19mdWxsX2RhdGFfZm9sZGVyKSwKPj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAiJXMvLmlwZnMvIiwgZ2V0ZW52KCJIT01FIikpID49Cj4+ID4gPiBzaXplb2YoaXBmc19m dWxsX2RhdGFfZm9sZGVyKSkgewo+PiA+ID4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0df V0FSTklORywgIlRoZSBJUEZTIGRhdGEgcGF0aCBleGNlZWRzCj4+IHRoZSAiCj4+ID4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWF4IHBhdGggbGVuZ3RoICglenUp XG4iLAo+PiA+ID4gKyAgICAgICAgICAgICAgICAgICBzaXplb2YoaXBmc19mdWxsX2RhdGFfZm9s ZGVyKSk7Cj4+ID4gPiArICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFSU5WQUwpOwo+PiA+ID4g KyAgICAgICAgICAgIGdvdG8gZXJyOwo+PiA+ID4gKyAgICAgICAgfQo+PiA+ID4gKwo+PiA+ID4g KyAgICAgICAgLy8gU3RhdCB0aGUgZm9sZGVyLgo+PiA+ID4gKyAgICAgICAgLy8gSXQgc2hvdWxk IGV4aXN0IGluIGEgZGVmYXVsdCBJUEZTIHNldHVwIHdoZW4gcnVuIGFzIGxvY2FsCj4+IHVzZXIu Cj4+ID4gPiArI2lmbmRlZiBfV0lOMzIKPj4gPiA+ICsgICAgICAgIHN0YXRfcmV0ID0gc3RhdChp cGZzX2Z1bGxfZGF0YV9mb2xkZXIsICZzdCk7Cj4+ID4gPiArI2Vsc2UKPj4gPiA+ICsgICAgICAg IHN0YXRfcmV0ID0gd2luMzJfc3RhdChpcGZzX2Z1bGxfZGF0YV9mb2xkZXIsICZzdCk7Cj4+ID4g PiArI2VuZGlmCj4+ID4gPiArICAgICAgICBpZiAoc3RhdF9yZXQgPCAwKSB7Cj4+ID4gPiArICAg ICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19JTkZPLCAiVW5hYmxlIHRvIGZpbmQgSVBGUyBmb2xk ZXIuIFdlCj4+ID4gPiB0cmllZDpcbiIpOwo+PiA+ID4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBB Vl9MT0dfSU5GTywgIi0gJElQRlNfUEFUSCwgd2hpY2ggd2FzCj4+IGVtcHR5LlxuIik7Cj4+ID4g PiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19JTkZPLCAiLSAkSE9NRS8uaXBmcyAoZnVs bCB1cmk6ICVzKQo+PiB3aGljaAo+PiA+ID4gZG9lc24ndCBleGlzdC5cbiIsIGlwZnNfZnVsbF9k YXRhX2ZvbGRlcik7Cj4+ID4gPiArICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFTk9FTlQpOwo+ PiA+ID4gKyAgICAgICAgICAgIGdvdG8gZXJyOwo+PiA+ID4gKyAgICAgICAgfQo+PiA+ID4gKyAg ICB9IGVsc2Ugewo+PiA+ID4gKyAgICAgICAgaWYgKHNucHJpbnRmKGlwZnNfZnVsbF9kYXRhX2Zv bGRlciwKPj4gPiA+IHNpemVvZihpcGZzX2Z1bGxfZGF0YV9mb2xkZXIpLCAiJXMiLAo+PiA+ID4g KyAgICAgICAgICAgICAgICAgZ2V0ZW52KCJJUEZTX1BBVEgiKSkgPj0KPj4gc2l6ZW9mKGlwZnNf ZnVsbF9kYXRhX2ZvbGRlcikpIHsKPj4gPiA+ICsgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9H X1dBUk5JTkcsICJUaGUgSVBGU19QQVRIIGVudmlyb25tZW50Cj4+IHZhcmlhYmxlCj4+ID4gPiAi Cj4+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjZWVkcyB0 aGUgbWF4aW11bSBsZW5ndGguICIKPj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJXZSBhbGxvdyBhIG1heCBvZiAlenUKPj4gPiA+IGNoYXJhY3RlcnNcbiIsCj4+ ID4gPiArICAgICAgICAgICAgICAgICAgIHNpemVvZihjLT5nYXRld2F5X2J1ZmZlcikpOwo+PiA+ ID4gKyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKPj4gPiA+ICsgICAgICAgICAg ICBnb3RvIGVycjsKPj4gPiA+ICsgICAgICAgIH0KPj4gPiA+ICsKPj4gPiA+ICsgICAgfQo+PiA+ ID4gKwo+PiA+ID4gKyAgICAvLyBDb3B5IHRoZSBmdWxseSBjb21wb3NlZCBnYXRld2F5IHBhdGgg aW50byBpcGZzX2dhdGV3YXlfZmlsZS4KPj4gPiA+ICsgICAgaWYgKHNucHJpbnRmKGlwZnNfZ2F0 ZXdheV9maWxlLCBzaXplb2YoaXBmc19nYXRld2F5X2ZpbGUpLAo+PiA+ID4gIiVzZ2F0ZXdheSIs Cj4+ID4gPiArICAgICAgICAgICAgICAgICBpcGZzX2Z1bGxfZGF0YV9mb2xkZXIpID49Cj4+IHNp emVvZihpcGZzX2dhdGV3YXlfZmlsZSkpIHsKPj4gPiA+ICsgICAgICAgIGF2X2xvZyhoLCBBVl9M T0dfV0FSTklORywgIlRoZSBJUEZTIGdhdGV3YXkgZmlsZSBwYXRoCj4+IGV4Y2VlZHMgIgo+PiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIG1heCBwYXRoIGxlbmd0 aCAoJXp1KVxuIiwKPj4gPiA+ICsgICAgICAgICAgICAgICBzaXplb2YoaXBmc19nYXRld2F5X2Zp bGUpKTsKPj4gPiA+ICsgICAgICAgIHJldCA9IEFWRVJST1IoRU5PRU5UKTsKPj4gPiA+ICsgICAg ICAgIGdvdG8gZXJyOwo+PiA+ID4gKyAgICB9Cj4+ID4gPiArCj4+ID4gPiArICAgIC8vIEdldCB0 aGUgY29udGVudHMgb2YgdGhlIGdhdGV3YXkgZmlsZS4KPj4gPiA+ICsgICAgZ2F0ZXdheV9maWxl ID0gYXZfZm9wZW5fdXRmOChpcGZzX2dhdGV3YXlfZmlsZSwgInIiKTsKPj4gPiA+ICsgICAgaWYg KCFnYXRld2F5X2ZpbGUpIHsKPj4gPiA+ICsgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklO RywgIlRoZSBJUEZTIGdhdGV3YXkgZmlsZSAoZnVsbCB1cmk6Cj4+ICVzKQo+PiA+ID4gZG9lc24n dCBleGlzdC4gIgo+PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSXMg dGhlIGdhdGV3YXkgZW5hYmxlZD9cbiIsCj4+ID4gPiArICAgICAgICAgICAgICAgaXBmc19nYXRl d2F5X2ZpbGUpOwo+PiA+ID4gKyAgICAgICAgcmV0ID0gQVZFUlJPUihFTk9FTlQpOwo+PiA+ID4g KyAgICAgICAgZ290byBlcnI7Cj4+ID4gPiArICAgIH0KPj4gPiA+ICsKPj4gPiA+ICsgICAgLy8g UmVhZCBhIHNpbmdsZSBsaW5lIChmZ2V0cyBzdG9wcyBhdCBuZXcgbGluZSBtYXJrKS4KPj4gPiA+ ICsgICAgaWYgKCFmZ2V0cyhjLT5nYXRld2F5X2J1ZmZlciwgc2l6ZW9mKGMtPmdhdGV3YXlfYnVm ZmVyKSAtIDEsCj4+ID4gPiBnYXRld2F5X2ZpbGUpKSB7Cj4+ID4gPiArICAgICAgYXZfbG9nKGgs IEFWX0xPR19XQVJOSU5HLCAiVW5hYmxlIHRvIHJlYWQgZnJvbSBmaWxlIChmdWxsIHVyaToKPj4g PiA+ICVzKS5cbiIsCj4+ID4gPiArICAgICAgICAgICAgIGlwZnNfZ2F0ZXdheV9maWxlKTsKPj4g PiA+ICsgICAgICByZXQgPSBBVkVSUk9SKEVOT0VOVCk7Cj4+ID4gPiArICAgICAgZ290byBlcnI7 Cj4+ID4gPiArICAgIH0KPj4gPiA+ICsKPj4gPiA+ICsgICAgLy8gUmVwbGFjZSBmaXJzdCBvY2N1 cmVuY2Ugb2YgZW5kIG9mIGxpbmUgd2l0aCBcMAo+PiA+ID4gKyAgICBjLT5nYXRld2F5X2J1ZmZl cltzdHJjc3BuKGMtPmdhdGV3YXlfYnVmZmVyLCAiXHJcbiIpXSA9IDA7Cj4+ID4gPiArCj4+ID4g PiArICAgIC8vIElmIHN0cmxlbiBmaW5kcyBhbnl0aGluZyBsb25nZXIgdGhlbiAwIGNoYXJhY3Rl cnMgdGhlbiB3ZQo+PiBoYXZlIGEKPj4gPiA+ICsgICAgLy8gcG90ZW50aWFsIGdhdGV3YXkgdXJs Lgo+PiA+ID4gKyAgICBpZiAoKmMtPmdhdGV3YXlfYnVmZmVyID09ICdcMCcpIHsKPj4gPiA+ICsg ICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSBJUEZTIGdhdGV3YXkgZmlsZSAo ZnVsbCB1cmk6Cj4+ICVzKQo+PiA+ID4gYXBwZWFycyB0byBiZSBlbXB0eS4gIgo+PiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSXMgdGhlIGdhdGV3YXkgc3RhcnRlZD9c biIsCj4+ID4gPiArICAgICAgICAgICAgICAgaXBmc19nYXRld2F5X2ZpbGUpOwo+PiA+ID4gKyAg ICAgICAgcmV0ID0gQVZFUlJPUihFSUxTRVEpOwo+PiA+ID4gKyAgICAgICAgZ290byBlcnI7Cj4+ ID4gPiArICAgIH0gZWxzZSB7Cj4+ID4gPiArICAgICAgICAvLyBXZSdyZSBkb25lLCB0aGUgYy0+ Z2F0ZXdheV9idWZmZXIgaGFzIHNvbWV0aGluZyB0aGF0IGxvb2tzCj4+ID4gPiB2YWxpZC4KPj4g PiA+ICsgICAgICAgIHJldCA9IDE7Cj4+ID4gPiArICAgICAgICBnb3RvIGVycjsKPj4gPiA+ICsg ICAgfQo+PiA+ID4gKwo+PiA+ID4gK2VycjoKPj4gPiA+ICsgICAgaWYgKGdhdGV3YXlfZmlsZSkK Pj4gPiA+ICsgICAgICAgIGZjbG9zZShnYXRld2F5X2ZpbGUpOwo+PiA+ID4gKwo+PiA+ID4gKyAg ICByZXR1cm4gcmV0Owo+PiA+ID4gK30KPj4gPiA+ICsKPj4gPiA+ICtzdGF0aWMgaW50IHRyYW5z bGF0ZV9pcGZzX3RvX2h0dHAoVVJMQ29udGV4dCAqaCwgY29uc3QgY2hhciAqdXJpLAo+PiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MsIEFWRGljdGlvbmFy eSAqKm9wdGlvbnMpCj4+ID4gPiArewo+PiA+ID4gKyAgICBjb25zdCBjaGFyICppcGZzX2NpZDsK Pj4gPiA+ICsgICAgY2hhciAqZnVsbHVyaSA9IE5VTEw7Cj4+ID4gPiArICAgIGludCByZXQ7Cj4+ ID4gPiArICAgIElQRlNHYXRld2F5Q29udGV4dCAqYyA9IGgtPnByaXZfZGF0YTsKPj4gPiA+ICsK Pj4gPiA+ICsgICAgLy8gVGVzdCBmb3IgaXBmczovLywgaXBmczosIGlwbnM6Ly8gYW5kIGlwbnM6 LiBUaGlzIHByZWZpeCBpcwo+PiA+ID4gc3RyaXBwZWQgZnJvbQo+PiA+ID4gKyAgICAvLyB0aGUg c3RyaW5nIGxlYXZpbmcganVzdCB0aGUgQ0lEIGluIGlwZnNfY2lkLgo+PiA+ID4gKyAgICBpbnQg aXNfaXBmcyA9IGF2X3N0cmlzdGFydCh1cmksICJpcGZzOi8vIiwgJmlwZnNfY2lkKTsKPj4gPiA+ ICsgICAgaW50IGlzX2lwbnMgPSBhdl9zdHJpc3RhcnQodXJpLCAiaXBuczovLyIsICZpcGZzX2Np ZCk7Cj4+ID4gPiArCj4+ID4gPiArICAgIC8vIFdlIG11c3QgaGF2ZSBlaXRoZXIgaXBucyBvciBp cGZzLgo+PiA+ID4gKyAgICBpZiAoIWlzX2lwZnMgJiYgIWlzX2lwbnMpIHsKPj4gPiA+ICsgICAg ICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKPj4gPiA+ICsgICAgICAgIGF2X2xvZyhoLCBBVl9M T0dfV0FSTklORywgIlVuc3VwcG9ydGVkIHVybCAlc1xuIiwgdXJpKTsKPj4gPiA+ICsgICAgICAg IGdvdG8gZXJyOwo+PiA+ID4gKyAgICB9Cj4+ID4gPiArCj4+ID4gPiArICAgIC8vIElmIHRoZSBD SUQgaGFzIGEgbGVuZ3RoIGdyZWF0ZXIgdGhlbiAwIHRoZW4gd2UgYXNzdW1lIHdlIGhhdmUKPj4g YQo+PiA+ID4gcHJvcGVyIHdvcmtpbmcgb25lLgo+PiA+ID4gKyAgICAvLyBJdCBjb3VsZCBzdGls bCBiZSB3cm9uZyBidXQgaW4gdGhhdCBjYXNlIHRoZSBnYXRld2F5IHNob3VsZAo+PiBzYXZlCj4+ ID4gPiB1cyBhbmQKPj4gPiA+ICsgICAgLy8gcnV0dXJuIGEgNDAzIGVycm9yLiBUaGUgaHR0cCBw cm90b2NvbCBoYW5kbGVzIHRoaXMuCj4+ID4gPiArICAgIGlmIChzdHJsZW4oaXBmc19jaWQpIDwg MSkgewo+PiA+ID4gKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiQSBDSUQgbXVz dCBiZSBwcm92aWRlZC5cbiIpOwo+PiA+ID4gKyAgICAgICAgcmV0ID0gQVZFUlJPUihFSUxTRVEp Owo+PiA+ID4gKyAgICAgICAgZ290byBlcnI7Cj4+ID4gPiArICAgIH0KPj4gPiA+ICsKPj4gPiA+ ICsgICAgLy8gUG9wdWxhdGUgYy0+Z2F0ZXdheV9idWZmZXIgd2l0aCB3aGF0ZXZlciBpcyBpbiBj LT5nYXRld2F5Cj4+ID4gPiArICAgIGlmIChjLT5nYXRld2F5ICE9IE5VTEwpIHsKPj4gPiA+ICsg ICAgICAgIGlmIChzbnByaW50ZihjLT5nYXRld2F5X2J1ZmZlciwgc2l6ZW9mKGMtPmdhdGV3YXlf YnVmZmVyKSwKPj4gIiVzIiwKPj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBjLT5nYXRld2F5 KSA+PSBzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpKSB7Cj4+ID4gPiArICAgICAgICAgICAgYXZf bG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiVGhlIC1nYXRld2F5IHBhcmFtZXRlciBpcyB0b28KPj4g PiA+IGxvbmcuICIKPj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJXZSBhbGxvdyBhIG1heCBvZiAlenUKPj4gPiA+IGNoYXJhY3RlcnNcbiIsCj4+ID4gPiArICAg ICAgICAgICAgICAgICAgIHNpemVvZihjLT5nYXRld2F5X2J1ZmZlcikpOwo+PiA+ID4gKyAgICAg ICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKPj4gPiA+ICsgICAgICAgICAgICBnb3RvIGVy cjsKPj4gPiA+ICsgICAgICAgIH0KPj4gPiA+ICsgICAgfSBlbHNlIHsKPj4gPiA+ICsgICAgICAg IC8vIFBvcHVsYXRlIHRoZSBJUEZTIGdhdGV3YXkgaWYgd2UgaGF2ZSBhbnkuCj4+ID4gPiArICAg ICAgICAvLyBJZiBub3QsIGluZm9ybSB0aGUgdXNlciBob3cgdG8gcHJvcGVybHkgc2V0IG9uZS4K Pj4gPiA+ICsgICAgICAgIHJldCA9IHBvcHVsYXRlX2lwZnNfZ2F0ZXdheShoKTsKPj4gPiA+ICsK Pj4gPiA+ICsgICAgICAgIGlmIChyZXQgPCAxKSB7Cj4+ID4gPiArICAgICAgICAgICAgLy8gV2Ug ZmFsbGJhY2sgb24gZHdlYi5saW5rIChtYW5hZ2VkIGJ5IFByb3RvY29sIExhYnMpLgo+PiA+ID4g KyAgICAgICAgICAgIHNucHJpbnRmKGMtPmdhdGV3YXlfYnVmZmVyLCBzaXplb2YoYy0+Z2F0ZXdh eV9idWZmZXIpLCAiCj4+ID4gPiBodHRwczovL2R3ZWIubGluayIpOwo+PiA+ID4gKwo+PiA+ID4g KyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIklQRlMgZG9lcyBub3QgYXBw ZWFyIHRvIGJlCj4+ID4gPiBydW5uaW5nLiAiCj4+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiWW914oCZcmUgbm93IHVzaW5nIHRoZSBwdWJsaWMKPj4gPiA+IGdh dGV3YXkgYXQgZHdlYi5saW5rLlxuIik7Cj4+ID4gPiArICAgICAgICAgICAgYXZfbG9nKGgsIEFW X0xPR19JTkZPLCAiSW5zdGFsbGluZyBJUEZTIGxvY2FsbHkgaXMKPj4gPiA+IHJlY29tbWVuZGVk IHRvICIKPj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXByb3Zl IHBlcmZvcm1hbmNlIGFuZAo+PiByZWxpYWJpbGl0eSwgIgo+PiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgImFuZCBub3Qgc2hhcmUgYWxsIHlvdXIgYWN0aXZpdHkKPj4g d2l0aAo+PiA+ID4gYSBzaW5nbGUgSVBGUyBnYXRld2F5LlxuIgo+PiA+ID4gKyAgICAgICAgICAg ICAgICAgICAiVGhlcmUgYXJlIG11bHRpcGxlIG9wdGlvbnMgdG8gZGVmaW5lIHRoaXMKPj4gZ2F0 ZXdheS5cbiIKPj4gPiA+ICsgICAgICAgICAgICAgICAgICAgIjEuIENhbGwgZmZtcGVnIHdpdGgg YSBnYXRld2F5IHBhcmFtLCAiCj4+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAid2l0aG91dCBhIHRyYWlsaW5nIHNsYXNoOgo+PiAtZ2F0ZXdheQo+PiA+ID4gPHVybD4u XG4iCj4+ID4gPiArICAgICAgICAgICAgICAgICAgICIyLiBEZWZpbmUgYW4gJElQRlNfR0FURVdB WSBlbnZpcm9ubWVudCB2YXJpYWJsZQo+PiB3aXRoCj4+ID4gPiB0aGUgIgo+PiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1bGwgSFRUUCBVUkwgdG8gdGhlIGdhdGV3 YXkgIgo+PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpdGhvdXQg dHJhaWxpbmcgZm9yd2FyZAo+PiBzbGFzaC5cbiIKPj4gPiA+ICsgICAgICAgICAgICAgICAgICAg IjMuIERlZmluZSBhbiAkSVBGU19QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlICIKPj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmQgcG9pbnQgaXQgdG8gdGhlIElQ RlMgZGF0YQo+PiBwYXRoICIKPj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICItIHRoaXMgaXMgdHlwaWNhbGx5IH4vLmlwZnNcbiIpOwo+PiA+ID4gKyAgICAgICAgfQo+ PiA+ID4gKyAgICB9Cj4+ID4gPiArCj4+ID4gPiArICAgIC8vIFRlc3QgaWYgdGhlIGdhdGV3YXkg c3RhcnRzIHdpdGggZWl0aGVyIGh0dHA6Ly8gb3IgaHR0cHM6Ly8KPj4gPiA+ICsgICAgaWYgKGF2 X3N0cmlzdGFydChjLT5nYXRld2F5X2J1ZmZlciwgImh0dHA6Ly8iLCBOVUxMKSA9PSAwCj4+ID4g PiArICAgICAgICAmJiBhdl9zdHJpc3RhcnQoYy0+Z2F0ZXdheV9idWZmZXIsICJodHRwczovLyIs IE5VTEwpID09IDApIHsKPj4gPiA+ICsgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywg IlRoZSBnYXRld2F5IFVSTCBkaWRuJ3Qgc3RhcnQgd2l0aAo+PiA+ID4gaHR0cDovLyBvciAiCj4+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwczovLyBhbmQgaXMg dGhlcmVmb3JlCj4+ID4gPiBpbnZhbGlkLlxuIik7Cj4+ID4gPiArICAgICAgICByZXQgPSBBVkVS Uk9SKEVJTFNFUSk7Cj4+ID4gPiArICAgICAgICBnb3RvIGVycjsKPj4gPiA+ICsgICAgfQo+PiA+ ID4gKwo+PiA+ID4gKyAgICAvLyBDb25jYXRlbmF0ZSB0aGUgdXJsLgo+PiA+ID4gKyAgICAvLyBU aGlzIGVuZHMgdXAgd2l0aCBzb21ldGhpbmcgbGlrZToKPj4gaHR0cDovL2xvY2FsaG9zdDo4MDgw L2lwZnMvUW0uLi4KPj4gPiA+IC4uCj4+ID4gPiArICAgIC8vIFRoZSBmb3JtYXQgb2YgIiVzJXMl cyVzIiBpcyB0aGUgZm9sbG93aW5nOgo+PiA+ID4gKyAgICAvLyAxc3QgJXMgPSBUaGUgZ2F0ZXdh eS4KPj4gPiA+ICsgICAgLy8gMm5kICVzID0gSWYgdGhlIGdhdGV3YXkgZGlkbid0IGVuZCBpbiBh IHNsYXNoLCBhZGQgYSAiLyIuCj4+ID4gPiBPdGhlcndpc2UgaXQncyBhbiBlbXB0eSBzdHJpbmcK Pj4gPiA+ICsgICAgLy8gM3JkICVzID0gRWl0aGVyIGlwbnMvIG9yIGlwZnMvLgo+PiA+ID4gKyAg ICAvLyA0dGggJXMgPSBUaGUgSVBGUyBDSUQgKFFtLi4uLCBiYWZ5Li4uLCAuLi4pLgo+PiA+ID4g KyAgICBmdWxsdXJpID0gYXZfYXNwcmludGYoIiVzJXMlcyVzIiwKPj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgIGMtPmdhdGV3YXlfYnVmZmVyLAo+PiA+ID4gKwo+PiAoYy0+Z2F0ZXdh eV9idWZmZXJbc3RybGVuKGMtPmdhdGV3YXlfYnVmZmVyKSAtCj4+ID4gPiAxXSA9PSAnLycpID8g IiIgOiAiLyIsCj4+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNfaXBucykgPyAi aXBucy8iIDogImlwZnMvIiwKPj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGlwZnNf Y2lkKTsKPj4gPiA+ICsKPj4gPiA+ICsgICAgaWYgKCFmdWxsdXJpKSB7Cj4+ID4gPiArICAgICAg YXZfbG9nKGgsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0byBjb21wb3NlIHRoZSBVUkxcbiIpOwo+ PiA+ID4gKyAgICAgIHJldCA9IEFWRVJST1IoRU5PTUVNKTsKPj4gPiA+ICsgICAgICBnb3RvIGVy cjsKPj4gPiA+ICsgICAgfQo+PiA+ID4gKwo+PiA+ID4gKyAgICAvLyBQYXNzIHRoZSBVUkwgYmFj ayB0byBGRk1wZWcncyBwcm90b2NvbCBoYW5kbGVyLgo+PiA+ID4gKyAgICByZXQgPSBmZnVybF9v cGVuX3doaXRlbGlzdCgmYy0+aW5uZXIsIGZ1bGx1cmksIGZsYWdzLAo+PiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmaC0+aW50ZXJydXB0X2NhbGxiYWNrLCBvcHRpb25zLAo+ PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLT5wcm90b2NvbF93aGl0ZWxp c3QsCj4+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgtPnByb3RvY29sX2Js YWNrbGlzdCwgaCk7Cj4+ID4gPiArICAgIGlmIChyZXQgPCAwKSB7Cj4+ID4gPiArICAgICAgICBh dl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJVbmFibGUgdG8gb3BlbiByZXNvdXJjZTogJXNcbiIs Cj4+ID4gPiBmdWxsdXJpKTsKPj4gPiA+ICsgICAgICAgIGdvdG8gZXJyOwo+PiA+ID4gKyAgICB9 Cj4+ID4gPiArCj4+ID4gPiArZXJyOgo+PiA+ID4gKyAgICBhdl9mcmVlKGZ1bGx1cmkpOwo+PiA+ ID4gKyAgICByZXR1cm4gcmV0Owo+PiA+ID4gK30KPj4gPiA+ICsKPj4gPiA+ICtzdGF0aWMgaW50 IGlwZnNfcmVhZChVUkxDb250ZXh0ICpoLCB1bnNpZ25lZCBjaGFyICpidWYsIGludCBzaXplKQo+ PiA+ID4gK3sKPj4gPiA+ICsgICAgSVBGU0dhdGV3YXlDb250ZXh0ICpjID0gaC0+cHJpdl9kYXRh Owo+PiA+ID4gKyAgICByZXR1cm4gZmZ1cmxfcmVhZChjLT5pbm5lciwgYnVmLCBzaXplKTsKPj4g PiA+ICt9Cj4+ID4gPiArCj4+ID4gPiArc3RhdGljIGludDY0X3QgaXBmc19zZWVrKFVSTENvbnRl eHQgKmgsIGludDY0X3QgcG9zLCBpbnQgd2hlbmNlKQo+PiA+ID4gK3sKPj4gPiA+ICsgICAgSVBG U0dhdGV3YXlDb250ZXh0ICpjID0gaC0+cHJpdl9kYXRhOwo+PiA+ID4gKyAgICByZXR1cm4gZmZ1 cmxfc2VlayhjLT5pbm5lciwgcG9zLCB3aGVuY2UpOwo+PiA+ID4gK30KPj4gPiA+ICsKPj4gPiA+ ICtzdGF0aWMgaW50IGlwZnNfY2xvc2UoVVJMQ29udGV4dCAqaCkKPj4gPiA+ICt7Cj4+ID4gPiAr ICAgIElQRlNHYXRld2F5Q29udGV4dCAqYyA9IGgtPnByaXZfZGF0YTsKPj4gPiA+ICsgICAgcmV0 dXJuIGZmdXJsX2Nsb3NlcCgmYy0+aW5uZXIpOwo+PiA+ID4gK30KPj4gPiA+ICsKPj4gPiA+ICsj ZGVmaW5lIE9GRlNFVCh4KSBvZmZzZXRvZihJUEZTR2F0ZXdheUNvbnRleHQsIHgpCj4+ID4gPiAr Cj4+ID4gPiArc3RhdGljIGNvbnN0IEFWT3B0aW9uIG9wdGlvbnNbXSA9IHsKPj4gPiA+ICsgICAg eyJnYXRld2F5IiwgIlRoZSBnYXRld2F5IHRvIGFzayBmb3IgSVBGUyBkYXRhLiIsIE9GRlNFVChn YXRld2F5KSwKPj4gPiA+IEFWX09QVF9UWVBFX1NUUklORywgey5zdHIgPSBOVUxMfSwgMCwgMCwg QVZfT1BUX0ZMQUdfREVDT0RJTkdfUEFSQU19LAo+PiA+ID4gKyAgICB7TlVMTH0sCj4+ID4gPiAr fTsKPj4gPiA+ICsKPj4gPiA+ICtzdGF0aWMgY29uc3QgQVZDbGFzcyBpcGZzX2NvbnRleHRfY2xh c3MgPSB7Cj4+ID4gPiArICAgIC5jbGFzc19uYW1lICAgPSAiSVBGUyIsCj4+ID4gPiArICAgIC5p dGVtX25hbWUgICAgPSBhdl9kZWZhdWx0X2l0ZW1fbmFtZSwKPj4gPiA+ICsgICAgLm9wdGlvbiAg ICAgICA9IG9wdGlvbnMsCj4+ID4gPiArICAgIC52ZXJzaW9uICAgICAgPSBMSUJBVlVUSUxfVkVS U0lPTl9JTlQsCj4+ID4gPiArfTsKPj4gPiA+ICsKPj4gPiA+ICtjb25zdCBVUkxQcm90b2NvbCBm Zl9pcGZzX3Byb3RvY29sID0gewo+PiA+ID4gKyAgICAubmFtZSAgICAgICAgICAgICA9ICJpcGZz IiwKPj4gPiA+ICsgICAgLnVybF9vcGVuMiAgICAgICAgPSB0cmFuc2xhdGVfaXBmc190b19odHRw LAo+PiA+ID4gKyAgICAudXJsX3JlYWQgICAgICAgICA9IGlwZnNfcmVhZCwKPj4gPiA+ICsgICAg LnVybF9zZWVrICAgICAgICAgPSBpcGZzX3NlZWssCj4+ID4gPiArICAgIC51cmxfY2xvc2UgICAg ICAgID0gaXBmc19jbG9zZSwKPj4gPiA+ICsgICAgLnByaXZfZGF0YV9zaXplICAgPSBzaXplb2Yo SVBGU0dhdGV3YXlDb250ZXh0KSwKPj4gPiA+ICsgICAgLnByaXZfZGF0YV9jbGFzcyAgPSAmaXBm c19jb250ZXh0X2NsYXNzLAo+PiA+ID4gK307Cj4+ID4gPiArCj4+ID4gPiArY29uc3QgVVJMUHJv dG9jb2wgZmZfaXBuc19wcm90b2NvbCA9IHsKPj4gPiA+ICsgICAgLm5hbWUgICAgICAgICAgICAg PSAiaXBucyIsCj4+ID4gPiArICAgIC51cmxfb3BlbjIgICAgICAgID0gdHJhbnNsYXRlX2lwZnNf dG9faHR0cCwKPj4gPiA+ICsgICAgLnVybF9yZWFkICAgICAgICAgPSBpcGZzX3JlYWQsCj4+ID4g PiArICAgIC51cmxfc2VlayAgICAgICAgID0gaXBmc19zZWVrLAo+PiA+ID4gKyAgICAudXJsX2Ns b3NlICAgICAgICA9IGlwZnNfY2xvc2UsCj4+ID4gPiArICAgIC5wcml2X2RhdGFfc2l6ZSAgID0g c2l6ZW9mKElQRlNHYXRld2F5Q29udGV4dCksCj4+ID4gPiArICAgIC5wcml2X2RhdGFfY2xhc3Mg ID0gJmlwZnNfY29udGV4dF9jbGFzcywKPj4gPiA+ICt9Owo+PiA+ID4gZGlmZiAtLWdpdCBhL2xp YmF2Zm9ybWF0L3Byb3RvY29scy5jIGIvbGliYXZmb3JtYXQvcHJvdG9jb2xzLmMKPj4gPiA+IGlu ZGV4IGQwNzU2M2NkMGMuLjZlZTYyYTU5OGEgMTAwNjQ0Cj4+ID4gPiAtLS0gYS9saWJhdmZvcm1h dC9wcm90b2NvbHMuYwo+PiA+ID4gKysrIGIvbGliYXZmb3JtYXQvcHJvdG9jb2xzLmMKPj4gPiA+ IEBAIC03MSw2ICs3MSw4IEBAIGV4dGVybiBjb25zdCBVUkxQcm90b2NvbCBmZl9saWJzcnRfcHJv dG9jb2w7Cj4+ID4gPiAgZXh0ZXJuIGNvbnN0IFVSTFByb3RvY29sIGZmX2xpYnNzaF9wcm90b2Nv bDsKPj4gPiA+ICBleHRlcm4gY29uc3QgVVJMUHJvdG9jb2wgZmZfbGlic21iY2xpZW50X3Byb3Rv Y29sOwo+PiA+ID4gIGV4dGVybiBjb25zdCBVUkxQcm90b2NvbCBmZl9saWJ6bXFfcHJvdG9jb2w7 Cj4+ID4gPiArZXh0ZXJuIGNvbnN0IFVSTFByb3RvY29sIGZmX2lwZnNfcHJvdG9jb2w7Cj4+ID4g PiArZXh0ZXJuIGNvbnN0IFVSTFByb3RvY29sIGZmX2lwbnNfcHJvdG9jb2w7Cj4+ID4gPgo+PiA+ ID4gICNpbmNsdWRlICJsaWJhdmZvcm1hdC9wcm90b2NvbF9saXN0LmMiCj4+ID4gPgo+PiA+ID4g LS0KPj4gPiA+IDIuMzUuMQo+PiA+ID4KPj4gPiA+Cj4+ID4gUGluZywgZXZlbiB0aG91Z2ggdGhl IG1lc3NhZ2UgaXMganVzdCBoZXJlIGZvciBtZXJlIG1pbnV0ZXMuCj4+ID4KPj4gPiBBcyBvZiB0 aGUgdmVyeSBkYXkgaSdtIG5vdyBzZW5kaW5nIHVwZGF0ZWQgcGF0Y2hlcyBmb3IgdGhpcyBmb3Ig ZXhhY3RseQo+PiAyCj4+ID4gbW9udGhzLiBJIHN0YXJ0ZWQgb24gRmViLiAxc3QuCj4+ID4gV2l0 aCB0aGUgbGFzdCByb3VuZCBvZiBjaGFuZ2VzIChUaGFueCBBbmRyZWFzISkgSSBmZWVsIHJlYWxs eSBjb25maWRlbnQKPj4gPiB0aGF0IHRoaXMgaXMgbm93IGF0IHRoZSB2ZXJ5IGxlYXN0IGdvb2Qg cXVhbGl0eSBjb2RlIHJlYWR5IGZvciBwcmltZQo+PiB0aW1lIQo+PiA+IElQRlMgc3VwcG9ydCBp cyBub3cgYWxzbyB3b3JraW5nIGJ5IGRlZmF1bHQsIGV2ZW4gd2hlbiB5b3UgZG9uJ3QgaGF2ZQo+ PiBJUEZTCj4+ID4gYXQgYWxsIChpbiBoZXJlIHNpbmNlIGEgZmV3IHBhdGNoZXMgYWdvKS4KPj4g PiBZZWFoLCBJIGZlZWwgcmVhbGx5IGdvb2QgYWJvdXQgaXQgbm93IQo+PiA+Cj4+ID4gSSdkIHZl cnkgbXVjaCBhcHByZWNpYXRlIGl0IGlmIHRoaXMgY291bGQgZmluYWxseSBiZSBtZXJnZWQuIEkg cHJvbWlzZQo+PiBJJ20KPj4gPiBzdGF5aW5nIGFyb3VuZCB0byBmaXggYnVncyBpZiB0aGVyZSBh cmUgc3RpbGwgYnVncyB0byBiZSBmaXhlZCBhbmQgd2lsbAo+PiA+IHJlc3BvbmQgc3dpZnRseSA6 KQo+PiA+Cj4+ID4gQnV0Li4uIEknZCByZWFsbHkgcmVhbGx5IHJlYWxseSBsaWtlIHRvIGJlIGRv bmUgd2l0aCBpdCBmb3Igbm93Lgo+PiA+IEkgZG9uJ3Qga25vdyB3aGVuIGZmbXBlZyA1LjEgaXMg Z29pbmcgdG8gYmUgcmVsZWFzZWQgYnV0IGhhdmluZyBJUEZTCj4+ID4gc3VwcG9ydCBpbiB0aGVy ZSB3b3VsZCBiZSBhYnNvbHV0ZWx5IGF3ZXNvbWUhIEFuZCB3b3VsZCBoZWxwIG1lIGdyZWF0bHkK Pj4gaW4KPj4gPiBjb250aW51aW5nIHRoZSBkZXZlbG9wbWVudCB0byBzdXBwb3J0IElQRlMgaW4g bXB2LCBLT0RJIGFuZCBWTEMuCj4+Cj4+IE5vdCBidWlsZGluZyBvbiBtaW5ndzY0Cj4+Cj4+IEND ICAgICAgbGliYXZmb3JtYXQvaXBmc2dhdGV3YXkubwo+PiBzcmMvbGliYXZmb3JtYXQvaXBmc2dh dGV3YXkuYzogSW4gZnVuY3Rpb24g4oCYcG9wdWxhdGVfaXBmc19nYXRld2F54oCZOgo+PiBzcmMv bGliYXZmb3JtYXQvaXBmc2dhdGV3YXkuYzo5NjoyMDogZXJyb3I6IGltcGxpY2l0IGRlY2xhcmF0 aW9uIG9mCj4+IGZ1bmN0aW9uIOKAmHdpbjMyX3N0YXTigJk7IGRpZCB5b3UgbWVhbiDigJh3c3Rh dOKAmT8KPj4gWy1XZXJyb3I9aW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb25dCj4+ICAgICAg ICAgIHN0YXRfcmV0ID0gd2luMzJfc3RhdChpcGZzX2Z1bGxfZGF0YV9mb2xkZXIsICZzdCk7Cj4+ ICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fgo+PiAgICAgICAgICAgICAgICAgICAgIHdz dGF0Cj4+IGNjMTogc29tZSB3YXJuaW5ncyBiZWluZyB0cmVhdGVkIGFzIGVycm9ycwo+PiBzcmMv ZmZidWlsZC9jb21tb24ubWFrOjc4OiByZWNpcGUgZm9yIHRhcmdldCAnbGliYXZmb3JtYXQvaXBm c2dhdGV3YXkubycKPj4gZmFpbGVkCj4+IG1ha2U6ICoqKiBbbGliYXZmb3JtYXQvaXBmc2dhdGV3 YXkub10gRXJyb3IgMQo+Pgo+PiBtYXliZSB5b3UgcmVtb3ZlZCBzb21lICNpbmNsdWRlIHRoYXQg d2FzIGFjdHVhbGx5IG5lZWRlZCA/IChpZiB0aGlzIGNvZGUKPj4gZGlkbnQKPj4gY2hhbmVnIGJl Y2F1c2UgaXQgZGlkIGJ1aWxkIHByZXZpb3N1bHkpCj4+Cj4KPiBVZ2guLi4KPgo+IFlvdSBmb3Vu ZCBhIGJ1dCB0aGF0IG5laXRoZXIgSSBub3IgcGF0Y2h3b3JrIGRpZG4ndCBmaW5kLiBOaWNlIHdv cmsgb24KPiB5b3VyIGVuZCA6KQo+IE5vdyBJJ20gbm90IGNvbXBpbGluZyBvbiBtaW5ndyBidXQg YXBwYXJlbnRseSBwYXRjaHdvcmsgaXNuJ3QgZWl0aGVyLiBJdAo+IGN1cnJlbnRseSBoYXMgOCBi dWlsZHMgZm9yIHRoaXMgcGF0Y2ggdGhhdCBhbGwgcGFzcyBqdXN0IGZpbmUuCj4KPiBJJ2xsIHNl bmQgYSBWMTIgd2l0aGluIGEgZmV3IGhvdXJzIG9mIHRoaXMgbWFpbCB0aGF0IGhvcGVmdWxseSBm aXhlcyBpdC4KPiBJdCdzIGEgYml0IG9mIGEgc2hvdCBpbiB0aGUgZGFyayBhcyBJIGRvbid0IGhh dmUgd2luZG93cyBub3QgbWluZ3cgaGVyZSB0bwo+IHRlc3Qgc28gSSBob3BlIHlvdSBjb3VsZCBn aXZlIGl0IGEgY29tcGlsZSB0ZXN0IG9uIHlvdXIgZW5kLgo+CgoKT24gYSBzZWNvbmQgdGhvdWdo dC4uCkFuZCBJJ2QgbGlrZSB5b3VyIG9waW5pb24gb24gdGhpcy4KClRoZSBzdGF0IGlzIG9ubHkg YmVpbmcgdXNlZCBhcyBhICJmaWxlIGV4aXN0cyIgY2hlY2suIFRoZSBzdGF0IHJlc3VsdCBpc24n dApiZWluZyB1c2VkIG90aGVyIHRoYW4gZm9yIGEgbnVsbCBjaGVjay4KQXMgSSBkb24ndCBuZWVk IHRoZSBzdGF0IGNvbnRlbnQgSSBkb24ndCBuZWVkIHRvIGNhcmUgYWJvdXQgT1MKaW5jb25zaXN0 ZW5jaWVzIGF0IGFsbCB0aGVyZS4KU28gaW4gb3RoZXIgdGVybXMsIGRvIHlvdSB0aGluayBpdCdz IGZpbmUgdG8ganVzdCB1c2UgdGhlIHN0YXQoKSBjYWxsCihyZW1vdmUgdGhlIGlmZGVmIGFuZCBq dXN0IGdvIGZvciB0aGUgbm9uIHdpbjMyIHByZWZpeGVkIG9uZSk/CgoKPgo+Cj4+IHRoeAo+Pgo+ Pgo+PiBbLi4uXQo+Pgo+PiAtLQo+PiBNaWNoYWVsICAgICBHbnVQRyBmaW5nZXJwcmludDogOUZG MjEyOEIxNDdFRjY3MzBCQURGMTMzNjExRUM3ODcwNDBCMEZBQgo+Pgo+PiBUaGUgYnJhdmVzdCBh cmUgc3VyZWx5IHRob3NlIHdobyBoYXZlIHRoZSBjbGVhcmVzdCB2aXNpb24KPj4gb2Ygd2hhdCBp cyBiZWZvcmUgdGhlbSwgZ2xvcnkgYW5kIGRhbmdlciBhbGlrZSwgYW5kIHlldAo+PiBub3R3aXRo c3RhbmRpbmcgZ28gb3V0IHRvIG1lZXQgaXQuIC0tIFRodWN5ZGlkZXMKPj4gX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gZmZtcGVnLWRldmVsIG1haWxp bmcgbGlzdAo+PiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwo+PiBodHRwczovL2ZmbXBlZy5vcmcv bWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKPj4KPj4gVG8gdW5zdWJzY3JpYmUsIHZpc2l0 IGxpbmsgYWJvdmUsIG9yIGVtYWlsCj4+IGZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcg d2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCj4+Cj4KX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWct ZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1w ZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1w ZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=