From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 169134D7E7 for ; Wed, 2 Jul 2025 07:19:08 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id B900568CAFD; Wed, 2 Jul 2025 10:19:04 +0300 (EEST) Received: from mail-pl1-f174.google.com (mail-pl1-f174.google.com [209.85.214.174]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 50C8D68C8D0 for ; Wed, 2 Jul 2025 10:18:53 +0300 (EEST) Received: by mail-pl1-f174.google.com with SMTP id d9443c01a7336-234d366e5f2so57409905ad.1; Wed, 02 Jul 2025 00:18:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751440731; x=1752045531; darn=ffmpeg.org; h=references:to:cc:in-reply-to:date:subject:mime-version:message-id :from:from:to:cc:subject:date:message-id:reply-to; bh=erA0F+7o4hMnTF3jquoIhIpojKhB+6dLlop5HnOPrLA=; b=BbtobggW+hqf695aq04AhW4PJpbS2ToOYOenPL67lahni2vX/u958oHY8ZGeCayNzf A2hoVTvQQ5rHX7gIBAjqZKlMy7VhC79kuwMYHS3snv+4alB0fbHIAPf9FGHt82ig7a6f ffQmGm1kBoucmaHYAFeK0Qdemmj01qAzKGHqyF1ERxA/ggfWCB8KBL04N9yEwctQMVao +2vCW3dmLr+8hFfNpiqLfUpsvWlTjotMElHkZLuricOkhlfLAMaxqOF8DKCIGH+bMNan hPScksc252CA7a7fk8I7nj7gnTNZFb1/OntuOltKSibHxJ0qiv3/jgK1Ut0whsoE7dp1 xCeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751440731; x=1752045531; h=references:to:cc:in-reply-to:date:subject:mime-version:message-id :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=erA0F+7o4hMnTF3jquoIhIpojKhB+6dLlop5HnOPrLA=; b=t9PA+mzYyEN6kark88PORx3tgh3OPrgc5szE4Gp0EJa3dTKFIQomzT/7q0oRbHol2e a9tlpZQyqUtL/6cx5X+9Bhfd6Pbkcl2ZKriURntDHuIGzXOXPHw13T+2SdRiGH8e242Y hi4aNdlMCQtw0icfCe8YipqOQHkCICoyyBAdx7ZCRk98qRF6uh5FEeetzMppgyWdqKZt F9dZa5hdVm6a3FebVe+LEF+ot4MFDF1vWXlZefSdXX7JvUdo1j0gR/XL5pQr+ebly9gD QZajbcS3sVRsty4vd6z8O4s6X18n3rcOMqawR/zprUNQBgDve/0EluRWCU/dtUn1TucB rq4A== X-Gm-Message-State: AOJu0YyfyI9Egx0eY3Z4v6plIWAVaLP0z5lO62ROTYBUaIZBUXqTj+Rk ronDrx3LwtXYlli5GE1A7HzklVOZhwCSWtgQ1dENJRlSw1u3rDjLlIfhwEgnPoFm1A0OGw== X-Gm-Gg: ASbGnctNKgBc3BrrMdt5jcPO+ptxWT8rePq5uEGGjRkt32Is6fR/ooPTAiJIYmuvW/O N5TT9bPxbi2W79FiLoopJHMBcKHgEYG90O4TA5GbrsUbtONVo8EhGzOUAo/g64frAf4jkRDrLEN Kf4rIMe7vOQkEuoXzvQ6WBi8B7+yv20MHCfUYY9e8VmB1d5Fb8lAhr5qAogzQxOzoKArjERhdYv o/wddaYdJrx/jYSWKZMC1CrwcRmsfilsXScssYS4hG18J/YJe91DYN4BWyFNk/6Az6usX8KcitM fjfbEtNaGiyfAcNIIcUvV4syMjTGmFeV7ywpiwuuPijMpSfO1XNQGeErki0lrwmsow== X-Google-Smtp-Source: AGHT+IFH8XyEebMietiZgNlEsLAQ03EJGBjnJTW/1BnmvXSWBRUgGPAji8vRPki7Y72Si72HIchDgA== X-Received: by 2002:a17:902:f78a:b0:235:1706:1fe7 with SMTP id d9443c01a7336-23c6e4d6d09mr24967455ad.4.1751440730898; Wed, 02 Jul 2025 00:18:50 -0700 (PDT) Received: from smtpclient.apple ([5.34.218.79]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-23acb2f0b63sm122020975ad.61.2025.07.02.00.18.49 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 02 Jul 2025 00:18:50 -0700 (PDT) From: Jack Lau Message-Id: <54D00332-0B10-40B1-8D3F-36A4EADFC666@gmail.com> Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.600.51.1.1\)) Date: Wed, 2 Jul 2025 15:18:27 +0800 In-Reply-To: To: FFmpeg development discussions and patches References: <20250702042505.72292-1-jacklau1222@qq.com> <20250702042505.72292-2-jacklau1222@qq.com> <20250702042505.72292-3-jacklau1222@qq.com> <20250702042505.72292-4-jacklau1222@qq.com> <20250702042505.72292-5-jacklau1222@qq.com> <20250702042505.72292-6-jacklau1222@qq.com> <20250702042505.72292-7-jacklau1222@qq.com> X-Mailer: Apple Mail (2.3826.600.51.1.1) X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH 6/6] avformat/whip: implement NACK and RTX suppport 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: lingjiujianke-at-gmail.com@ffmpeg.org 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: Cgo+IE9uIEp1bCAyLCAyMDI1LCBhdCAxMzoxNiwgU3RldmVuIExpdSA8bGluZ2ppdWppYW5rZS1h dC1nbWFpbC5jb21AZmZtcGVnLm9yZz4gd3JvdGU6Cj4gCj4gSmFjayBMYXUgPGphY2tsYXUxMjIy Z20tYXQtZ21haWwuY29tQGZmbXBlZy5vcmcgPG1haWx0bzpqYWNrbGF1MTIyMmdtLWF0LWdtYWls LmNvbUBmZm1wZWcub3JnPj4g5LqOMjAyNeW5tDfmnIgy5pel5ZGo5LiJIDEyOjM15YaZ6YGT77ya Cj4+IAo+PiBSVFAgcmV0cmFuc21pc3Npb24gZGVzY3JpYmVkIGluIFJGQzQ1ODggKFJUWCkgaXMg YW4gZWZmZWN0aXZlIHBhY2tldAo+PiBsb3NzIHJlY292ZXJ5IHRlY2huaXF1ZSBmb3IgcmVhbC10 aW1lIGFwcGxpY2F0aW9ucyB3aXRoIHJlbGF4ZWQgZGVsYXkgYm91bmRzLgo+PiAKPj4gVGhpcyBw YXRjaCBwcm92aWRlcyBhIG1pbmltYWwgaW1wbGVtZW50YXRpb24gZm9yIFJUWCBhbmQgUlRDUCBO QUNLIChSRkMzOTQwKQo+PiBhbmQgaXRzIGFzc29jaWF0ZWQgU0RQIHNpZ25hbGluZyBhbmQgbmVn b3RpYXRpb24uCj4+IAo+PiBDby1hdXRob3JlZC1ieTogU2VyZ2lvIEdhcmNpYSBNdXJpbGxvIDxz ZXJnaW8uZ2FyY2lhLm11cmlsbG9AZ21haWwuY29tPgo+PiBTaWduZWQtb2ZmLWJ5OiBKYWNrIExh dSA8amFja2xhdTEyMjJAcXEuY29tPgo+PiAtLS0KPj4gbGliYXZmb3JtYXQvd2hpcC5jIHwgMTk4 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+PiAxIGZpbGUg Y2hhbmdlZCwgMTk1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCj4+IAo+PiBkaWZmIC0t Z2l0IGEvbGliYXZmb3JtYXQvd2hpcC5jIGIvbGliYXZmb3JtYXQvd2hpcC5jCj4+IGluZGV4IDE1 ZDFkZTY5MWUuLmEzMjE3N2UwYjQgMTAwNjQ0Cj4+IC0tLSBhL2xpYmF2Zm9ybWF0L3doaXAuYwo+ PiArKysgYi9saWJhdmZvcm1hdC93aGlwLmMKPj4gQEAgLTExNCw2ICsxMTQsNyBAQAo+PiAvKiBS ZWZlcnJpbmcgdG8gQ2hyb21lJ3MgZGVmaW5pdGlvbiBvZiBSVFAgcGF5bG9hZCB0eXBlcy4gKi8K Pj4gI2RlZmluZSBXSElQX1JUUF9QQVlMT0FEX1RZUEVfSDI2NCAxMDYKPj4gI2RlZmluZSBXSElQ X1JUUF9QQVlMT0FEX1RZUEVfT1BVUyAxMTEKPj4gKyNkZWZpbmUgV0hJUF9SVFBfUEFZTE9BRF9U WVBFX1JUWCAgMTA1Cj4+IAo+PiAvKioKPj4gICogVGhlIFNUVU4gbWVzc2FnZSBoZWFkZXIsIHdo aWNoIGlzIDIwIGJ5dGVzIGxvbmcsIGNvbXByaXNlcyB0aGUKPj4gQEAgLTE1MCw2ICsxNTEsMTEg QEAKPj4gI2RlZmluZSBXSElQX1NEUF9TRVNTSU9OX0lEICI0NDg5MDQ1MTQxNjkyNzk5MzU5Igo+ PiAjZGVmaW5lIFdISVBfU0RQX0NSRUFUT1JfSVAgIjEyNy4wLjAuMSIKPj4gCj4+ICsvKioKPj4g KyAqIFJldHJhbnNtaXNzaW9uIC8gTkFDSyBzdXBwb3J0Cj4+ICsqLwo+PiArI2RlZmluZSBISVNU T1JZX1NJWkVfREVGQVVMVCA1MTIKPj4gKwo+PiAvKiBDYWxjdWxhdGUgdGhlIGVsYXBzZWQgdGlt ZSBmcm9tIHN0YXJ0dGltZSB0byBlbmR0aW1lIGluIG1pbGxpc2Vjb25kcy4gKi8KPj4gI2RlZmlu ZSBFTEFQU0VEKHN0YXJ0dGltZSwgZW5kdGltZSkgKChpbnQpKGVuZHRpbWUgLSBzdGFydHRpbWUp IC8gMTAwMCkKPj4gCj4+IEBAIC0xOTQsOSArMjAwLDE5IEBAIGVudW0gV0hJUFN0YXRlIHsKPj4g fTsKPj4gCj4+IHR5cGVkZWYgZW51bSBXSElQRmxhZ3Mgewo+PiAtICAgIFdISVBfRkxBR19JR05P UkVfSVBWNiAgPSAoMSA8PCAwKSAvLyBJZ25vcmUgaXB2NiBjYW5kaWRhdGUKPj4gKyAgICBXSElQ X0ZMQUdfSUdOT1JFX0lQVjYgID0gKDEgPDwgMCksIC8vIElnbm9yZSBpcHY2IGNhbmRpZGF0ZQo+ PiArICAgIFdISVBfRkxBR19ESVNBQkxFX1JUWCAgICAgPSAoMSA8PCAxKSAgLy8gRW5hYmxlIE5B Q0sgYW5kIFJUWAo+PiB9IFdISVBGbGFnczsKPj4gCj4+ICt0eXBlZGVmIHN0cnVjdCBSdHBIaXN0 b3J5SXRlbSB7Cj4+ICsgICAgICAgIC8qIG9yaWdpbmFsIFJUUCBzZXEgKi8KPj4gKyAgICAgICAg dWludDE2X3Qgc2VxOwo+PiArICAgICAgICAvKiBsZW5ndGggaW4gYnl0ZXMgKi8KPj4gKyAgICAg ICAgaW50IHNpemU7Cj4+ICsgICAgICAgIC8qIG1hbGxvYy1lZCBjb3B5ICovCj4+ICsgICAgICAg IHVpbnQ4X3QqIHBrdDsKPj4gK30gUnRwSGlzdG9yeUl0ZW07Cj4+ICsKPj4gdHlwZWRlZiBzdHJ1 Y3QgV0hJUENvbnRleHQgewo+PiAgICAgQVZDbGFzcyAqYXZfY2xhc3M7Cj4+IAo+PiBAQCAtMjg1 LDYgKzMwMSw3IEBAIHR5cGVkZWYgc3RydWN0IFdISVBDb250ZXh0IHsKPj4gICAgIC8qIFRoZSBT UlRQIHNlbmQgY29udGV4dCwgdG8gZW5jcnlwdCBvdXRnb2luZyBwYWNrZXRzLiAqLwo+PiAgICAg U1JUUENvbnRleHQgc3J0cF9hdWRpb19zZW5kOwo+PiAgICAgU1JUUENvbnRleHQgc3J0cF92aWRl b19zZW5kOwo+PiArICAgIFNSVFBDb250ZXh0IHNydHBfdmlkZW9fcnR4X3NlbmQ7Cj4+ICAgICBT UlRQQ29udGV4dCBzcnRwX3J0Y3Bfc2VuZDsKPj4gICAgIC8qIFRoZSBTUlRQIHJlY2VpdmUgY29u dGV4dCwgdG8gZGVjcnlwdCBpbmNvbWluZyBwYWNrZXRzLiAqLwo+PiAgICAgU1JUUENvbnRleHQg c3J0cF9yZWN2Owo+PiBAQCAtMzA5LDYgKzMyNiwxNCBAQCB0eXBlZGVmIHN0cnVjdCBXSElQQ29u dGV4dCB7Cj4+ICAgICAvKiBUaGUgY2VydGlmaWNhdGUgYW5kIHByaXZhdGUga2V5IHVzZWQgZm9y IERUTFMgaGFuZHNoYWtlLiAqLwo+PiAgICAgY2hhciogY2VydF9maWxlOwo+PiAgICAgY2hhciog a2V5X2ZpbGU7Cj4+ICsKPj4gKyAgICAvKiBSVFggLyBOQUNLICovCj4+ICsgICAgdWludDhfdCBy dHhfcGF5bG9hZF90eXBlOwo+PiArICAgIHVpbnQzMl90IHZpZGVvX3J0eF9zc3JjOwo+PiArICAg IHVpbnQxNl90IHJ0eF9zZXE7Cj4+ICsgICAgaW50ICBoaXN0b3J5X3NpemU7Cj4+ICsgICAgUnRw SGlzdG9yeUl0ZW0gKmhpc3Rvcnk7ICAvKiByaW5nIGJ1ZmZlciAgKi8KPj4gKyAgICBpbnQgaGlz dF9oZWFkOwo+PiB9IFdISVBDb250ZXh0Owo+PiAKPj4gLyoqCj4+IEBAIC02MDYsNiArNjMxLDE2 IEBAIHN0YXRpYyBpbnQgZ2VuZXJhdGVfc2RwX29mZmVyKEFWRm9ybWF0Q29udGV4dCAqcykKPj4g ICAgIHdoaXAtPmF1ZGlvX3BheWxvYWRfdHlwZSA9IFdISVBfUlRQX1BBWUxPQURfVFlQRV9PUFVT Owo+PiAgICAgd2hpcC0+dmlkZW9fcGF5bG9hZF90eXBlID0gV0hJUF9SVFBfUEFZTE9BRF9UWVBF X0gyNjQ7Cj4+IAo+PiArICAgIC8qIFJUWCBhbmQgTkFDSyBpbml0ICovCj4+ICsgICAgd2hpcC0+ cnR4X3BheWxvYWRfdHlwZSA9IFdISVBfUlRQX1BBWUxPQURfVFlQRV9SVFg7Cj4+ICsgICAgd2hp cC0+dmlkZW9fcnR4X3NzcmMgPSBhdl9sZmdfZ2V0KCZ3aGlwLT5ybmQpOwo+PiArICAgIHdoaXAt PnJ0eF9zZXEgPSAwOwo+PiArICAgIHdoaXAtPmhpc3RfaGVhZCA9IDA7Cj4+ICsgICAgd2hpcC0+ aGlzdG9yeV9zaXplID0gRkZNQVgoNjQsIHdoaXAtPmhpc3Rvcnlfc2l6ZSk7Cj4+ICsgICAgd2hp cC0+aGlzdG9yeSA9IGF2X2NhbGxvYyh3aGlwLT5oaXN0b3J5X3NpemUsIHNpemVvZigqd2hpcC0+ aGlzdG9yeSkpOwo+PiArICAgIGlmICghd2hpcC0+aGlzdG9yeSkKPj4gKyAgICAgICAgICAgIHJl dHVybiBBVkVSUk9SKEVOT01FTSk7Cj4+ICsKPj4gICAgIGF2X2JwcmludGYoJmJwLCAiIgo+PiAg ICAgICAgICJ2PTBcclxuIgo+PiAgICAgICAgICJvPUZGbXBlZyAlcyAyIElOIElQNCAlc1xyXG4i Cj4+IEBAIC02NTYsNyArNjkxLDcgQEAgc3RhdGljIGludCBnZW5lcmF0ZV9zZHBfb2ZmZXIoQVZG b3JtYXRDb250ZXh0ICpzKQo+PiAgICAgICAgIH0KPj4gCj4+ICAgICAgICAgYXZfYnByaW50Zigm YnAsICIiCj4+IC0gICAgICAgICAgICAibT12aWRlbyA5IFVEUC9UTFMvUlRQL1NBVlBGICV1XHJc biIKPj4gKyAgICAgICAgICAgICJtPXZpZGVvIDkgVURQL1RMUy9SVFAvU0FWUEYgJXUgJXVcclxu Igo+PiAgICAgICAgICAgICAiYz1JTiBJUDQgMC4wLjAuMFxyXG4iCj4+ICAgICAgICAgICAgICJh PWljZS11ZnJhZzolc1xyXG4iCj4+ICAgICAgICAgICAgICJhPWljZS1wd2Q6JXNcclxuIgo+PiBA QCAtNjY5LDkgKzcwNCwxNiBAQCBzdGF0aWMgaW50IGdlbmVyYXRlX3NkcF9vZmZlcihBVkZvcm1h dENvbnRleHQgKnMpCj4+ICAgICAgICAgICAgICJhPXJ0Y3AtcnNpemVcclxuIgo+PiAgICAgICAg ICAgICAiYT1ydHBtYXA6JXUgJXMvOTAwMDBcclxuIgo+PiAgICAgICAgICAgICAiYT1mbXRwOiV1 IGxldmVsLWFzeW1tZXRyeS1hbGxvd2VkPTE7cGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1s ZXZlbC1pZD0lMDJ4JTAyeCUwMnhcclxuIgo+PiArICAgICAgICAgICAgImE9cnRjcC1mYjoldSBu YWNrXHJcbiIKPj4gKyAgICAgICAgICAgICJhPXJ0cG1hcDoldSBydHgvOTAwMDBcclxuIgo+PiAr ICAgICAgICAgICAgImE9Zm10cDoldSBhcHQ9JXVcclxuIgo+PiArICAgICAgICAgICAgImE9c3Ny Yy1ncm91cDpGSUQgJXUgJXVcclxuIgo+PiArICAgICAgICAgICAgImE9c3NyYzoldSBjbmFtZTpG Rm1wZWdcclxuIgo+PiArICAgICAgICAgICAgImE9c3NyYzoldSBtc2lkOkZGbXBlZyB2aWRlb1xy XG4iCj4+ICAgICAgICAgICAgICJhPXNzcmM6JXUgY25hbWU6RkZtcGVnXHJcbiIKPj4gICAgICAg ICAgICAgImE9c3NyYzoldSBtc2lkOkZGbXBlZyB2aWRlb1xyXG4iLAo+PiAgICAgICAgICAgICB3 aGlwLT52aWRlb19wYXlsb2FkX3R5cGUsCj4+ICsgICAgICAgICAgICB3aGlwLT5ydHhfcGF5bG9h ZF90eXBlLAo+PiAgICAgICAgICAgICB3aGlwLT5pY2VfdWZyYWdfbG9jYWwsCj4+ICAgICAgICAg ICAgIHdoaXAtPmljZV9wd2RfbG9jYWwsCj4+ICAgICAgICAgICAgIHdoaXAtPmR0bHNfZmluZ2Vy cHJpbnQsCj4+IEBAIC02ODEsOCArNzIzLDE2IEBAIHN0YXRpYyBpbnQgZ2VuZXJhdGVfc2RwX29m ZmVyKEFWRm9ybWF0Q29udGV4dCAqcykKPj4gICAgICAgICAgICAgcHJvZmlsZSwKPj4gICAgICAg ICAgICAgd2hpcC0+Y29uc3RyYWludF9zZXRfZmxhZ3MsCj4+ICAgICAgICAgICAgIGxldmVsLAo+ PiArICAgICAgICAgICAgd2hpcC0+dmlkZW9fcGF5bG9hZF90eXBlLAo+PiArICAgICAgICAgICAg d2hpcC0+cnR4X3BheWxvYWRfdHlwZSwKPj4gKyAgICAgICAgICAgIHdoaXAtPnJ0eF9wYXlsb2Fk X3R5cGUsCj4+ICsgICAgICAgICAgICB3aGlwLT52aWRlb19wYXlsb2FkX3R5cGUsCj4+ICsgICAg ICAgICAgICB3aGlwLT52aWRlb19zc3JjLAo+PiArICAgICAgICAgICAgd2hpcC0+dmlkZW9fcnR4 X3NzcmMsCj4+ICAgICAgICAgICAgIHdoaXAtPnZpZGVvX3NzcmMsCj4+IC0gICAgICAgICAgICB3 aGlwLT52aWRlb19zc3JjKTsKPj4gKyAgICAgICAgICAgIHdoaXAtPnZpZGVvX3NzcmMsCj4+ICsg ICAgICAgICAgICB3aGlwLT52aWRlb19ydHhfc3NyYywKPj4gKyAgICAgICAgICAgIHdoaXAtPnZp ZGVvX3J0eF9zc3JjKTsKPj4gICAgIH0KPj4gCj4+ICAgICBpZiAoIWF2X2JwcmludF9pc19jb21w bGV0ZSgmYnApKSB7Cj4+IEBAIC0xMzk2LDYgKzE0NDYsMTIgQEAgc3RhdGljIGludCBzZXR1cF9z cnRwKEFWRm9ybWF0Q29udGV4dCAqcykKPj4gICAgICAgICBnb3RvIGVuZDsKPj4gICAgIH0KPj4g Cj4+ICsgICAgcmV0ID0gZmZfc3J0cF9zZXRfY3J5cHRvKCZ3aGlwLT5zcnRwX3ZpZGVvX3J0eF9z ZW5kLCBzdWl0ZSwgYnVmKTsKPj4gKyAgICBpZiAocmV0IDwgMCkgewo+PiArICAgICAgICBhdl9s b2cod2hpcCwgQVZfTE9HX0VSUk9SLCAiV0hJUDogRmFpbGVkIHRvIHNldCBjcnlwdG8gZm9yIHZp ZGVvIHJ0eCBzZW5kXG4iKTsKPj4gKyAgICAgICAgZ290byBlbmQ7Cj4+ICsgICAgfQo+PiArCj4+ ICAgICByZXQgPSBmZl9zcnRwX3NldF9jcnlwdG8oJndoaXAtPnNydHBfcnRjcF9zZW5kLCBzdWl0 ZSwgYnVmKTsKPj4gICAgIGlmIChyZXQgPCAwKSB7Cj4+ICAgICAgICAgYXZfbG9nKHdoaXAsIEFW X0xPR19FUlJPUiwgIkZhaWxlZCB0byBzZXQgY3J5cHRvIGZvciBydGNwIHNlbmRcbiIpOwo+PiBA QCAtMTQyNSw2ICsxNDgxLDM3IEBAIGVuZDoKPj4gICAgIHJldHVybiByZXQ7Cj4+IH0KPj4gCj4+ ICsKPj4gKy8qKgo+PiArICogUlRYIGhpc3RvcnkgaGVscGVycwo+PiArICovCj4+ICsgc3RhdGlj IHZvaWQgcnRwX2hpc3Rvcnlfc3RvcmUoV0hJUENvbnRleHQgKndoaXAsIGNvbnN0IHVpbnQ4X3Qg KnBrdCwgaW50IHNpemUpCj4+ICt7Cj4+ICsgICAgaW50IHBvcyA9IHdoaXAtPmhpc3RfaGVhZCAl IHdoaXAtPmhpc3Rvcnlfc2l6ZTsKPj4gKyAgICBSdHBIaXN0b3J5SXRlbSAqaXQgPSAmd2hpcC0+ aGlzdG9yeVtwb3NdOwo+PiArICAgIC8qIGZyZWUgb2xkZXIgZW50cnkgKi8KPj4gKyAgICBhdl9m cmVlKGl0LT5wa3QpOwo+PiArICAgIGl0LT5wa3QgPSBhdl9tYWxsb2Moc2l6ZSk7Cj4+ICsgICAg aWYgKCFpdC0+cGt0KQo+PiArICAgICAgICByZXR1cm47Cj4+ICsKPj4gKyAgICBtZW1jcHkoaXQt PnBrdCwgcGt0LCBzaXplKTsKPiBhdl9wYWNrZXRfY2xvbmU/ClRoaXMgcGt0IGlzIHJ0cCByYXcg ZGF0YSByYXRoZXIgdGhhbiBBVlBhY2tldCwgc28gbWF5YmUgSSBzaG91bGQgbW9kaWZ5IHRoZSB2 YXJpYWJsZSBuYW1lIHRvIGF2b2lkIG1pc3VuZGVyc3RhbmRpbmc/Cj4+ICsgICAgaXQtPnNpemUg PSBzaXplOwo+PiArICAgIGl0LT5zZXEgPSBBVl9SQjE2KHBrdCArIDIpOwo+PiArCj4+ICsgICAg d2hpcC0+aGlzdF9oZWFkID0gKytwb3M7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBSdHBI aXN0b3J5SXRlbSAqcnRwX2hpc3RvcnlfZmluZChjb25zdCBXSElQQ29udGV4dCAqd2hpcCwgdWlu dDE2X3Qgc2VxKQo+PiArewo+PiArICAgIGZvciAoaW50IGkgPSAwOyBpIDwgd2hpcC0+aGlzdG9y eV9zaXplOyBpKyspIHsKPj4gKyAgICAgICAgY29uc3QgUnRwSGlzdG9yeUl0ZW0gKml0ID0gJndo aXAtPmhpc3RvcnlbaV07Cj4+ICsgICAgICAgIGlmIChpdC0+cGt0ICYmIGl0LT5zZXEgPT0gc2Vx KQo+PiArICAgICAgICAgICAgcmV0dXJuIGl0Owo+PiArICAgIH0KPj4gKyAgICByZXR1cm4gTlVM TDsKPj4gK30KPj4gKwo+PiAvKioKPj4gICogQ2FsbGJhY2sgdHJpZ2dlcmVkIGJ5IHRoZSBSVFAg bXV4ZXIgd2hlbiBpdCBjcmVhdGVzIGFuZCBzZW5kcyBvdXQgYW4gUlRQIHBhY2tldC4KPj4gICoK Pj4gQEAgLTE0NjEsNiArMTU0OCwxMCBAQCBzdGF0aWMgaW50IG9uX3J0cF93cml0ZV9wYWNrZXQo dm9pZCAqb3BhcXVlLCBjb25zdCB1aW50OF90ICpidWYsIGludCBidWZfc2l6ZSkKPj4gICAgICAg ICByZXR1cm4gMDsKPj4gICAgIH0KPj4gCj4+ICsgICAgLyogU3RvcmUgb25seSBPUklHSU5BTCB2 aWRlbyBwYWNrZXRzIChub24tUlRYLCBub24tUlRDUCkgKi8KPj4gKyAgICBpZiAoIWlzX3J0Y3Ag JiYgaXNfdmlkZW8pCj4+ICsgICAgICAgIHJ0cF9oaXN0b3J5X3N0b3JlKHdoaXAsIGJ1ZiwgYnVm X3NpemUpOwo+PiArCj4+ICAgICByZXQgPSBmZnVybF93cml0ZSh3aGlwLT51ZHAsIHdoaXAtPmJ1 ZiwgY2lwaGVyX3NpemUpOwo+PiAgICAgaWYgKHJldCA8IDApIHsKPj4gICAgICAgICBhdl9sb2co d2hpcCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIHdyaXRlIHBhY2tldD0lZEIsIHJldD0lZFxu IiwgY2lwaGVyX3NpemUsIHJldCk7Cj4+IEBAIC0xNDY5LDYgKzE1NjAsNDUgQEAgc3RhdGljIGlu dCBvbl9ydHBfd3JpdGVfcGFja2V0KHZvaWQgKm9wYXF1ZSwgY29uc3QgdWludDhfdCAqYnVmLCBp bnQgYnVmX3NpemUpCj4+IAo+PiAgICAgcmV0dXJuIHJldDsKPj4gfQo+PiArLyoqCj4+ICsgKiBT ZWUgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM0NTg4Cj4+ICsgKiBC dWlsZCBhbmQgc2VuZCBhIHNpbmdsZSBSVFggcGFja2V0Cj4+ICsgKi8KPj4gK3N0YXRpYyBpbnQg c2VuZF9ydHhfcGFja2V0KEFWRm9ybWF0Q29udGV4dCAqcywgY29uc3QgdWludDhfdCAqb3JpZ19w a3QsIGludCBvcmlnX3NpemUpCj4+ICt7Cj4+ICsgICAgV0hJUENvbnRleHQgKndoaXAgPSBzLT5w cml2X2RhdGE7Cj4+ICsgICAgaW50IG5ld19zaXplLCBjaXBoZXJfc2l6ZTsKPj4gKyAgICBpZiAo d2hpcC0+ZmxhZ3MgJiBXSElQX0ZMQUdfRElTQUJMRV9SVFgpCj4+ICsgICAgICAgIHJldHVybiAw Owo+PiArCj4+ICsgICAgLyogYWxsb2NhdGUgbmV3IGJ1ZmZlcjogaGVhZGVyICsgMiArIHBheWxv YWQgKi8KPj4gKyAgICBpZiAob3JpZ19zaXplICsgMiA+IHNpemVvZih3aGlwLT5idWYpKQo+PiAr ICAgICAgICByZXR1cm4gMDsKPj4gKwo+PiArICAgIG1lbWNweSh3aGlwLT5idWYsIG9yaWdfcGt0 LCBvcmlnX3NpemUpOwo+PiArCj4+ICsgICAgdWludDhfdCAqaGRyID0gd2hpcC0+YnVmOwo+PiAr ICAgIHVpbnQxNl90IG9yaWdfc2VxID0gQVZfUkIxNihoZHIgKyAyKTsKPj4gKwo+PiArICAgIC8q IHJld3JpdGUgaGVhZGVyICovCj4+ICsgICAgaGRyWzFdID0gKGhkclsxXSAmIDB4ODApIHwgd2hp cC0+cnR4X3BheWxvYWRfdHlwZTsgLyoga2VlcCBNIGJpdCAqLwo+PiArICAgIEFWX1dCMTYoaGRy ICsgMiwgd2hpcC0+cnR4X3NlcSsrKTsKPj4gKyAgICBBVl9XQjMyKGhkciArIDgsIHdoaXAtPnZp ZGVvX3J0eF9zc3JjKTsKPj4gKwo+PiArICAgIC8qIHNoaWZ0IHBheWxvYWQgMiBieXRlcyAqLwo+ PiArICAgIG1lbW1vdmUoaGRyICsgMTIgKyAyLCBoZHIgKyAxMiwgb3JpZ19zaXplIC0gMTIpOwo+ PiArICAgIEFWX1dCMTYoaGRyICsgMTIsIG9yaWdfc2VxKTsKPj4gKwo+PiArICAgIG5ld19zaXpl ID0gb3JpZ19zaXplICsgMjsKPj4gKwo+PiArICAgIC8qIEVuY3J5cHQgYnkgU1JUUCBhbmQgc2Vu ZCBvdXQuICovCj4+ICsgICAgY2lwaGVyX3NpemUgPSBmZl9zcnRwX2VuY3J5cHQoJndoaXAtPnNy dHBfdmlkZW9fcnR4X3NlbmQsIHdoaXAtPmJ1ZiwgbmV3X3NpemUsIHdoaXAtPmJ1Ziwgc2l6ZW9m KHdoaXAtPmJ1ZikpOwo+PiArICAgIGlmIChjaXBoZXJfc2l6ZSA8PSAwIHx8IGNpcGhlcl9zaXpl IDwgbmV3X3NpemUpIHsKPj4gKyAgICAgICAgYXZfbG9nKHdoaXAsIEFWX0xPR19XQVJOSU5HLCAi V0hJUDogRmFpbGVkIHRvIGVuY3J5cHQgcGFja2V0PSVkQiwgY2lwaGVyPSVkQlxuIiwgbmV3X3Np emUsIGNpcGhlcl9zaXplKTsKPj4gKyAgICAgICAgcmV0dXJuIDA7Cj4+ICsgICAgfQo+PiArICAg IHJldHVybiBmZnVybF93cml0ZSh3aGlwLT51ZHAsIHdoaXAtPmJ1ZiwgY2lwaGVyX3NpemUpOwo+ PiArfQo+PiAKPj4gLyoqCj4+ICAqIENyZWF0ZXMgZGVkaWNhdGVkIFJUUCBtdXhlcnMgZm9yIGVh Y2ggc3RyZWFtIGluIHRoZSBBVkZvcm1hdENvbnRleHQgdG8gYnVpbGQgUlRQCj4+IEBAIC0xNzkx LDYgKzE5MjEsNjYgQEAgc3RhdGljIGludCB3aGlwX3dyaXRlX3BhY2tldChBVkZvcm1hdENvbnRl eHQgKnMsIEFWUGFja2V0ICpwa3QpCj4+ICAgICAgICAgICAgICAgICBnb3RvIGVuZDsKPj4gICAg ICAgICAgICAgfQo+PiAgICAgICAgIH0KPj4gKyAgICAgICAgLyoqCj4+ICsgICAgICAgICAqIEhh bmRsZSBSVENQIE5BQ0sKPj4gKyAgICAgICAgICogUmVmZXIgdG8gUkZDIDQ1ODUsIFNlY3Rpb24g Ni4yLjEKPj4gKyAgICAgICAgICogVGhlIEdlbmVyaWMgTkFDSyBtZXNzYWdlIGlzIGlkZW50aWZp ZWQgYnkgUFQ9UlRQRkIgYW5kIEZNVD0xLgo+PiArICAgICAgICAgKiBUT0RPOiBkaXNhYmxlIHJl dHJhbnNtaXNzdGlvbiB3aGVuICItdHVuZSB6ZXJvbGF0ZW5jeSIKPj4gKyAgICAgICAgICovCj4+ ICsgICAgICAgIGlmIChtZWRpYV9pc19ydGNwKHdoaXAtPmJ1ZiwgcmV0KSkgewo+PiArICAgICAg ICAgICAgaW50IHB0ciA9IDA7Cj4+ICsgICAgICAgICAgICB1aW50OF90IHB0ID0gd2hpcC0+YnVm W3B0ciArIDFdOwo+PiArICAgICAgICAgICAgdWludDhfdCBmbXQgPSAod2hpcC0+YnVmW3B0cl0g JiAweDFmKTsKPj4gKyAgICAgICAgICAgIGlmIChwdHIgKyA0IDw9IHJldCAmJiBwdCA9PSAyMDUg JiYgZm10ID09IDEpIHsKPj4gKyAgICAgICAgICAgICAgICAvKioKPj4gKyAgICAgICAgICAgICAg ICAgKiBSZWZlciB0byBSRkMgMzU1MCwgU2VjdGlvbiA2LjQuMS4KPj4gKyAgICAgICAgICAgICAg ICAgKiBUaGUgbGVuZ3RoIG9mIHRoaXMgUlRDUCBwYWNrZXQgaW4gMzItYml0IHdvcmRzIG1pbnVz IG9uZSwKPj4gKyAgICAgICAgICAgICAgICAgKiBpbmNsdWRpbmcgdGhlIGhlYWRlciBhbmQgYW55 IHBhZGRpbmcuCj4+ICsgICAgICAgICAgICAgICAgICovCj4+ICsgICAgICAgICAgICAgICAgaW50 IHJ0Y3BfbGVuID0gKEFWX1JCMTYoJndoaXAtPmJ1ZltwdHIgKyAyXSkgKyAxKSAqIDQ7Cj4+ICsg ICAgICAgICAgICAgICAgLyogU1JUQ1AgaW5kZXgoNCBieXRlcykgKyBITUFDIChTUlRQX0FFUzEy OF9DTV9TSEExXzgwIDEwYnl0ZXMpICovCj4+ICsgICAgICAgICAgICAgICAgaW50IHNydGNwX2xl biA9IHJ0Y3BfbGVuICsgNCArIDEwOwo+PiArICAgICAgICAgICAgICAgIGlmIChzcnRjcF9sZW4g PT0gcmV0ICYmIHJ0Y3BfbGVuID49IDEyKSB7Cj4+ICsgICAgICAgICAgICAgICAgICAgIGludCBp ID0gMDsKPj4gKyAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcGt0ID0gYXZfbWFsbG9jKHNy dGNwX2xlbik7Cj4+ICsgICAgICAgICAgICAgICAgICAgIG1lbWNweShwa3QsIHdoaXAtPmJ1Ziwg c3J0Y3BfbGVuKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgaW50IHJldCA9IGZmX3NydHBfZGVj cnlwdCgmd2hpcC0+c3J0cF9yZWN2LCBwa3QsICZzcnRjcF9sZW4pOwo+PiArICAgICAgICAgICAg ICAgICAgICBpZiAocmV0IDwgMCkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGF2X2xvZyh3 aGlwLCBBVl9MT0dfRVJST1IsICJXSElQOiBTUlRDUCBkZWNyeXB0IGZhaWxlZDogJWRcbiIsIHJl dCk7Cj4+ICsgICAgICAgICAgICAgICAgICAgIHdoaWxlICgxMiArIGkgPCBydGNwX2xlbiAmJiBy ZXQgPT0gMCkgewo+PiArICAgICAgICAgICAgICAgICAgICAgICAgLyoqCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgKiAgU2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0 bWwvcmZjNDU4NSNzZWN0aW9uLTYuMQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICogIEhh bmRsZSBtdWx0aSBOQUNLcyBpbiBidW5kbGVkIHBhY2tldC4KPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAqLwo+PiArICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgcGlkID0gQVZf UkIxNigmcGt0W3B0ciArIDEyICsgaV0pOwo+PiArICAgICAgICAgICAgICAgICAgICAgICAgdWlu dDE2X3QgYmxwID0gQVZfUkIxNigmcGt0W3B0ciArIDE0ICsgaV0pOwo+PiArCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAvKiByZXRyYW5zbWl0IHBpZCArIGFueSBiaXQgc2V0IGluIGJscCAq Lwo+PiArICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgYml0ID0gLTE7IGJpdCA8IDE2 OyBiaXQrKykgewo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IHNlcSA9 IChiaXQgPCAwKSA/IHBpZCA6IHBpZCArIGJpdCArIDE7Cj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKGJpdCA+PSAwICYmICEoYmxwICYgKDEgPDwgYml0KSkpCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+PiArCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgUnRwSGlzdG9yeUl0ZW0gKml0ID0gcnRwX2hpc3RvcnlfZmlu ZCh3aGlwLCBzZXEpOwo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdCkgewo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdl9sb2cod2hpcCwgQVZfTE9HX1ZF UkJPU0UsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV0hJUDogTkFD SywgcGFja2V0IGZvdW5kOiBzaXplOiAlZCwgc2VxPSVkLCBydHggc2l6ZT0lZCwgbGF0ZXNldCBz dG9yZWQgcGFja2V0IHNlcTolZFxuIiwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGl0LT5zaXplLCBzZXEsIHJldCwgd2hpcC0+aGlzdG9yeVt3aGlwLT5oaXN0X2hlYWQt MV0uc2VxKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gc2VuZF9y dHhfcGFja2V0KHMsIGl0LT5wa3QsIGl0LT5zaXplKTsKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaWYgKHJldCA8PSAwICYmICEod2hpcC0+ZmxhZ3MgJiBXSElQX0ZMQUdfRElT QUJMRV9SVFgpKQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZfbG9n KHdoaXAsIEFWX0xPR19FUlJPUiwgIldISVA6IEZhaWxlZCB0byBzZW5kIFJUWCBwYWNrZXRcbiIp Owo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGF2X2xvZyh3aGlwLCBBVl9MT0dfVkVSQk9TRSwKPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXSElQOiBOQUNLLCBwYWNrZXQgbm90 IGZvdW5kLCBzZXE9JWQsIGxhdGVzdCBzdG9yZWQgcGFja2V0IHNlcTogJWQsIGxhdGVzdCBydHgg c2VxOiAlZFxuIiwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcSwg d2hpcC0+aGlzdG9yeVt3aGlwLT5oaXN0X2hlYWQtMV0uc2VxLCB3aGlwLT5ydHhfc2VxKTsKPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICB9Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICBpID0gaSArIDQ7Cj4+ICsgICAgICAgICAg ICAgICAgICAgIH0KPj4gKyAgICAgICAgICAgICAgICAgICAgYXZfZnJlZShwa3QpOwo+PiArICAg ICAgICAgICAgICAgIH0KPj4gKyAgICAgICAgICAgIH0KPj4gKyAgICAgICAgfQo+PiAgICAgfSBl bHNlIGlmIChyZXQgIT0gQVZFUlJPUihFQUdBSU4pKSB7Cj4+ICAgICAgICAgYXZfbG9nKHdoaXAs IEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0byByZWFkIGZyb20gVURQIHNvY2tldFxuIik7Cj4+ICAg ICAgICAgZ290byBlbmQ7Cj4+IEBAIC0xOTAzLDYgKzIwOTMsOCBAQCBzdGF0aWMgY29uc3QgQVZP cHRpb24gb3B0aW9uc1tdID0gewo+PiAgICAgICAgIEFWX09QVF9UWVBFX0ZMQUdTLCAgeyAuaTY0 ID0gMCB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIFVJTlRfTUFYLCBFTkMsIC51bml0 ID0gImZsYWdzIiB9LAo+PiAgICAgeyAiaWdub3JlX2lwdjYiLCAgICAgICAgIklnbm9yZSBhbnkg SVB2NiBJQ0UgY2FuZGlkYXRlIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKPj4gICAg ICAgICBBVl9PUFRfVFlQRV9DT05TVCwgIHsgLmk2NCA9IFdISVBfRkxBR19JR05PUkVfSVBWNiB9 LCAgICAgICAwLCBVSU5UX01BWCwgRU5DLCAudW5pdCA9ICJmbGFncyIgfSwKPj4gKyAgICB7ICJk aXNhYmxlX3J0eCIsICAgICJEaXNhYmxlIFJGQyA0NTg4IFJUWCIsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAwLAo+PiArICAgICAgICBBVl9PUFRfVFlQRV9DT05TVCwg IHsgLmk2NCA9IFdISVBfRkxBR19ESVNBQkxFX1JUWCB9LCAgICAgICAwLCBVSU5UX01BWCwgRU5D LCAudW5pdCA9ICJmbGFncyIgfSwKPj4gICAgIHsgTlVMTCB9LAo+PiB9Owo+PiAKPj4gLS0KPj4g Mi40OS4wCj4+IAo+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+PiBmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0Cj4+IGZmbXBlZy1kZXZlbEBmZm1wZWcu b3JnIDxtYWlsdG86ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmc+Cj4+IGh0dHBzOi8vZmZtcGVnLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAo+PiAKPj4gVG8gdW5zdWJzY3JpYmUsIHZp c2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCj4+IGZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5v cmcgPG1haWx0bzpmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnPiB3aXRoIHN1YmplY3Qg InVuc3Vic2NyaWJlIi4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwo+IGZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKPiBmZm1wZWctZGV2ZWxAZmZtcGVn Lm9yZyA8bWFpbHRvOmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnPgo+IGh0dHBzOi8vZmZtcGVnLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAo+IAo+IFRvIHVuc3Vic2NyaWJlLCB2aXNp dCBsaW5rIGFib3ZlLCBvciBlbWFpbAo+IGZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcg PG1haWx0bzpmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnPiB3aXRoIHN1YmplY3QgInVu c3Vic2NyaWJl4oCdLgpSZWdhcmRzCkphY2sKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVs QGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRl dmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRl dmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K