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 AA5FB4FDA4 for ; Wed, 2 Jul 2025 13:46:58 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id E7D3268CF62; Wed, 2 Jul 2025 16:46:54 +0300 (EEST) Received: from mail-vk1-f179.google.com (mail-vk1-f179.google.com [209.85.221.179]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 88B0768C61C for ; Wed, 2 Jul 2025 16:46:48 +0300 (EEST) Received: by mail-vk1-f179.google.com with SMTP id 71dfb90a1353d-51eb1a714bfso4595899e0c.3 for ; Wed, 02 Jul 2025 06:46:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751464007; x=1752068807; darn=ffmpeg.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=xZB3SUSWE0PP8VcRgxJxWlgISdDFmRJ3i5w6cdRSAh8=; b=e9k+5I5VbiQ3hohwY/TRiiCam4d3Y55WTXphMV08f8jgcb0pXJP+nvt4XRxb/Tyt0Z z8Q/zVpUHOKCH6k5ZcAGcUsROZ/wURfbsA63rz1HthFyTobjNi7k2OBLOagYgqsJb8xi QHKUH+yZ//wH5lmjKtw864RpryBh9NWtgrf/amLLFD9Tk4pnuKNl8rgO0k92erEMcFx1 jQY6ySrASsW2cErRi4dK6SNzL2nWeeW12n71rX38yHaw2bi/03joubDdidMeyBtqYxX9 pNpoZ4RuheoKBuu/BT0fURnRYqJNPqwIEd+6p3tuc2N0mBA8/2sMVQBXKLAQBfQPoTp6 zQyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751464007; x=1752068807; h=content-transfer-encoding:cc: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=xZB3SUSWE0PP8VcRgxJxWlgISdDFmRJ3i5w6cdRSAh8=; b=uPcauD8QIAsEAY5SzgYgpwdYxJO7Yglps7SvmwmKDhQRpFQfiiTxmLBwJMLz8UPVj+ xbZeS8WJGY6bI7WAU7hl6p9DZuN4jldvN9hy0/BCSC1Yx56dvZLI6TM5mj/gqQBRMzpv kLtLF9xgtZ91aaUB9hw/N/t6ZlSMzLsTk4SocpDSDOmdO8gWN4uAN9btN3yQYHXpXXxL PZjvK1BRp4PSzvEuRlIYqW2jOtU8zzcoHpKKOYJxVwDaQC4UtFf6Jdi3kVLe+HoloBFa Kld9CBByXQtf3ZroriJX75xX3/JTNC8gHZqrtuBfAQs4Uejm7lX567n3OzK6JWLfYmlh pIrw== X-Gm-Message-State: AOJu0YwUhUJmhO2Rigledm+ooqfhB1bm1VLe9yIdPXByGSvz1cIp8cNJ 7BKn6InH+XPiy4sf77xGyBySzd1HNk1NrOarwvS8HpyD5Bc8GFm9C7qX+qXDYLrquILXA7x+70Y OvlJQUiLFZRCnCWQqtRMv7OCmLDzU3Psekssd X-Gm-Gg: ASbGncvdSww9KNShKY3bC0oThODuagSfElLE530nMcBJ/o/CCEgWSinh0u4AdwzVl3F 178KFEftf0Qnkqrw9PvaB/VJdL5IWUM6a2ss3SjM/bhHREW7wbttLdfn56tG43ftkrsXl3UFI7Y qkvPiEdKhSCh4s/KTAHQib+PbgQD9Los0KZJBdCTYoRQ== X-Google-Smtp-Source: AGHT+IEJ4BwVecDTc5CnXXvzmphbNNU2GWOFwhJCMnDXhOWg4Le5fVZdEEEbDpVV6PQwkugmzf/mivmX9Tu9cKiYhtE= X-Received: by 2002:a05:6122:478e:b0:531:14c4:f695 with SMTP id 71dfb90a1353d-53457c675cdmr1862353e0c.0.1751464006521; Wed, 02 Jul 2025 06:46:46 -0700 (PDT) MIME-Version: 1.0 References: <20250702115955.33922-1-jacklau1222@qq.com> <20250702115955.33922-6-jacklau1222@qq.com> In-Reply-To: <20250702115955.33922-6-jacklau1222@qq.com> From: Steven Liu Date: Wed, 2 Jul 2025 21:46:33 +0800 X-Gm-Features: Ac12FXy7VeuIhwWZwV28sutdX8ykKgbD--nk8dCh4YrlnRWQosk0P7vnzgGu55k Message-ID: To: FFmpeg development discussions and patches Subject: Re: [FFmpeg-devel] [PATCH v2 5/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: Sergio Garcia Murillo , Jack Lau 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: SmFjayBMYXUgPGphY2tsYXUxMjIyZ20tYXQtZ21haWwuY29tQGZmbXBlZy5vcmc+IOS6jjIwMjXl ubQ35pyIMuaXpeWRqOS4iSAyMDowOeWGmemBk++8mgo+Cj4gUlRQIHJldHJhbnNtaXNzaW9uIGRl c2NyaWJlZCBpbiBSRkM0NTg4IChSVFgpIGlzIGFuIGVmZmVjdGl2ZSBwYWNrZXQKPiBsb3NzIHJl Y292ZXJ5IHRlY2huaXF1ZSBmb3IgcmVhbC10aW1lIGFwcGxpY2F0aW9ucyB3aXRoIHJlbGF4ZWQg ZGVsYXkgYm91bmRzLgo+Cj4gVGhpcyBwYXRjaCBwcm92aWRlcyBhIG1pbmltYWwgaW1wbGVtZW50 YXRpb24gZm9yIFJUWCBhbmQgUlRDUCBOQUNLIChSRkMzOTQwKQo+IGFuZCBpdHMgYXNzb2NpYXRl ZCBTRFAgc2lnbmFsaW5nIGFuZCBuZWdvdGlhdGlvbi4KPgo+IENvLWF1dGhvcmVkLWJ5OiBTZXJn aW8gR2FyY2lhIE11cmlsbG8gPHNlcmdpby5nYXJjaWEubXVyaWxsb0BnbWFpbC5jb20+Cj4gU2ln bmVkLW9mZi1ieTogSmFjayBMYXUgPGphY2tsYXUxMjIyQHFxLmNvbT4KPiAtLS0KPiAgbGliYXZm b3JtYXQvd2hpcC5jIHwgMTk4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLQo+ICAxIGZpbGUgY2hhbmdlZCwgMTk1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25z KC0pCj4KPiBkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvd2hpcC5jIGIvbGliYXZmb3JtYXQvd2hp cC5jCj4gaW5kZXggZTI4N2EzMDYyZi4uZmE2ZTM4NTVkMyAxMDA2NDQKPiAtLS0gYS9saWJhdmZv cm1hdC93aGlwLmMKPiArKysgYi9saWJhdmZvcm1hdC93aGlwLmMKPiBAQCAtMTE0LDYgKzExNCw3 IEBACj4gIC8qIFJlZmVycmluZyB0byBDaHJvbWUncyBkZWZpbml0aW9uIG9mIFJUUCBwYXlsb2Fk IHR5cGVzLiAqLwo+ICAjZGVmaW5lIFdISVBfUlRQX1BBWUxPQURfVFlQRV9IMjY0IDEwNgo+ICAj ZGVmaW5lIFdISVBfUlRQX1BBWUxPQURfVFlQRV9PUFVTIDExMQo+ICsjZGVmaW5lIFdISVBfUlRQ X1BBWUxPQURfVFlQRV9SVFggIDEwNQo+Cj4gIC8qKgo+ICAgKiBUaGUgU1RVTiBtZXNzYWdlIGhl YWRlciwgd2hpY2ggaXMgMjAgYnl0ZXMgbG9uZywgY29tcHJpc2VzIHRoZQo+IEBAIC0xNTAsNiAr MTUxLDExIEBACj4gICNkZWZpbmUgV0hJUF9TRFBfU0VTU0lPTl9JRCAiNDQ4OTA0NTE0MTY5Mjc5 OTM1OSIKPiAgI2RlZmluZSBXSElQX1NEUF9DUkVBVE9SX0lQICIxMjcuMC4wLjEiCj4KPiArLyoq Cj4gKyAqIFJldHJhbnNtaXNzaW9uIC8gTkFDSyBzdXBwb3J0Cj4gKyovCj4gKyNkZWZpbmUgSElT VE9SWV9TSVpFX0RFRkFVTFQgNTEyCj4gKwo+ICAvKiBDYWxjdWxhdGUgdGhlIGVsYXBzZWQgdGlt ZSBmcm9tIHN0YXJ0dGltZSB0byBlbmR0aW1lIGluIG1pbGxpc2Vjb25kcy4gKi8KPiAgI2RlZmlu ZSBFTEFQU0VEKHN0YXJ0dGltZSwgZW5kdGltZSkgKChpbnQpKGVuZHRpbWUgLSBzdGFydHRpbWUp IC8gMTAwMCkKPgo+IEBAIC0xOTQsOSArMjAwLDE5IEBAIGVudW0gV0hJUFN0YXRlIHsKPiAgfTsK Pgo+ICB0eXBlZGVmIGVudW0gV0hJUEZsYWdzIHsKPiAtICAgIFdISVBfRkxBR19JR05PUkVfSVBW NiAgPSAoMSA8PCAwKSAvLyBJZ25vcmUgaXB2NiBjYW5kaWRhdGUKPiArICAgIFdISVBfRkxBR19J R05PUkVfSVBWNiAgPSAoMSA8PCAwKSwgLy8gSWdub3JlIGlwdjYgY2FuZGlkYXRlCj4gKyAgICBX SElQX0ZMQUdfRElTQUJMRV9SVFggICAgID0gKDEgPDwgMSkgIC8vIEVuYWJsZSBOQUNLIGFuZCBS VFgKPiAgfSBXSElQRmxhZ3M7Cj4KPiArdHlwZWRlZiBzdHJ1Y3QgUnRwSGlzdG9yeUl0ZW0gewo+ ICsgICAgICAgIC8qIG9yaWdpbmFsIFJUUCBzZXEgKi8KPiArICAgICAgICB1aW50MTZfdCBzZXE7 ICAvKiBvcmlnaW5hbCBSVFAgc2VxICovCj4gKyAgICAgICAgLyogbGVuZ3RoIGluIGJ5dGVzICov Cj4gKyAgICAgICAgaW50IHNpemU7ICAgIC8qIGxlbmd0aCBpbiBieXRlcyAqLwo+ICsgICAgICAg IC8qIG1hbGxvYy1lZCBjb3B5ICovCm1vdmUgdGhlIGNvbW1lbnRzLgo+ICsgICAgICAgIHVpbnQ4 X3QqIGJ1ZjsgLyogbWFsbG9jLWVkIGNvcHkgKi8KPiArfSBSdHBIaXN0b3J5SXRlbTsKCmZvciBl eGFtcGxlOgoKCiAxNzEgdHlwZWRlZiBzdHJ1Y3QgbWt2X2N1ZXBvaW50IHsKIDE3MiAgICAgdWlu dDY0X3QgICAgICAgIHB0czsKIDE3MyAgICAgaW50ICAgICAgICAgICAgIHN0cmVhbV9pZHg7CiAx NzQgICAgIGludDY0X3QgICAgICAgICBjbHVzdGVyX3BvczsgICAgICAgIC8vLzwgb2Zmc2V0IG9m IHRoZQpjbHVzdGVyIGNvbnRhaW5pbmcgdGhlIGJsb2NrIHJlbGF0aXZlIHRvIHRoZSBzZWdtZW50 CiAxNzUgICAgIGludDY0X3QgICAgICAgICByZWxhdGl2ZV9wb3M7ICAgICAgIC8vLzwgcmVsYXRp dmUgb2Zmc2V0IGZyb20KdGhlIHBvc2l0aW9uIG9mIHRoZSBjbHVzdGVyIGNvbnRhaW5pbmcgdGhl IGJsb2NrCiAxNzYgICAgIGludDY0X3QgICAgICAgICBkdXJhdGlvbjsgICAgICAgICAgIC8vLzwg ZHVyYXRpb24gb2YgdGhlCmJsb2NrIGFjY29yZGluZyB0byB0aW1lIGJhc2UKIDE3NyB9IG1rdl9j dWVwb2ludDsKCgoKPiArCj4gIHR5cGVkZWYgc3RydWN0IFdISVBDb250ZXh0IHsKPiAgICAgIEFW Q2xhc3MgKmF2X2NsYXNzOwo+Cj4gQEAgLTI4NSw2ICszMDEsNyBAQCB0eXBlZGVmIHN0cnVjdCBX SElQQ29udGV4dCB7Cj4gICAgICAvKiBUaGUgU1JUUCBzZW5kIGNvbnRleHQsIHRvIGVuY3J5cHQg b3V0Z29pbmcgcGFja2V0cy4gKi8KPiAgICAgIFNSVFBDb250ZXh0IHNydHBfYXVkaW9fc2VuZDsK PiAgICAgIFNSVFBDb250ZXh0IHNydHBfdmlkZW9fc2VuZDsKPiArICAgIFNSVFBDb250ZXh0IHNy dHBfdmlkZW9fcnR4X3NlbmQ7Cj4gICAgICBTUlRQQ29udGV4dCBzcnRwX3J0Y3Bfc2VuZDsKPiAg ICAgIC8qIFRoZSBTUlRQIHJlY2VpdmUgY29udGV4dCwgdG8gZGVjcnlwdCBpbmNvbWluZyBwYWNr ZXRzLiAqLwo+ICAgICAgU1JUUENvbnRleHQgc3J0cF9yZWN2Owo+IEBAIC0zMDksNiArMzI2LDE0 IEBAIHR5cGVkZWYgc3RydWN0IFdISVBDb250ZXh0IHsKPiAgICAgIC8qIFRoZSBjZXJ0aWZpY2F0 ZSBhbmQgcHJpdmF0ZSBrZXkgdXNlZCBmb3IgRFRMUyBoYW5kc2hha2UuICovCj4gICAgICBjaGFy KiBjZXJ0X2ZpbGU7Cj4gICAgICBjaGFyKiBrZXlfZmlsZTsKPiArCj4gKyAgICAvKiBSVFggYW5k IE5BQ0sgKi8KPiArICAgIHVpbnQ4X3QgcnR4X3BheWxvYWRfdHlwZTsKPiArICAgIHVpbnQzMl90 IHZpZGVvX3J0eF9zc3JjOwo+ICsgICAgdWludDE2X3QgcnR4X3NlcTsKPiArICAgIGludCAgaGlz dG9yeV9zaXplOwo+ICsgICAgUnRwSGlzdG9yeUl0ZW0gKmhpc3Rvcnk7ICAvKiByaW5nIGJ1ZmZl ciAgKi8KPiArICAgIGludCBoaXN0X2hlYWQ7Cj4gIH0gV0hJUENvbnRleHQ7Cj4KPiAgLyoqCj4g QEAgLTYwNiw2ICs2MzEsMTYgQEAgc3RhdGljIGludCBnZW5lcmF0ZV9zZHBfb2ZmZXIoQVZGb3Jt YXRDb250ZXh0ICpzKQo+ICAgICAgd2hpcC0+YXVkaW9fcGF5bG9hZF90eXBlID0gV0hJUF9SVFBf UEFZTE9BRF9UWVBFX09QVVM7Cj4gICAgICB3aGlwLT52aWRlb19wYXlsb2FkX3R5cGUgPSBXSElQ X1JUUF9QQVlMT0FEX1RZUEVfSDI2NDsKPgo+ICsgICAgLyogUlRYIGFuZCBOQUNLIGluaXQgKi8K PiArICAgIHdoaXAtPnJ0eF9wYXlsb2FkX3R5cGUgPSBXSElQX1JUUF9QQVlMT0FEX1RZUEVfUlRY Owo+ICsgICAgd2hpcC0+dmlkZW9fcnR4X3NzcmMgPSBhdl9sZmdfZ2V0KCZ3aGlwLT5ybmQpOwo+ ICsgICAgd2hpcC0+cnR4X3NlcSA9IDA7Cj4gKyAgICB3aGlwLT5oaXN0X2hlYWQgPSAwOwo+ICsg ICAgd2hpcC0+aGlzdG9yeV9zaXplID0gRkZNQVgoNjQsIHdoaXAtPmhpc3Rvcnlfc2l6ZSk7Cj4g KyAgICB3aGlwLT5oaXN0b3J5ID0gYXZfY2FsbG9jKHdoaXAtPmhpc3Rvcnlfc2l6ZSwgc2l6ZW9m KCp3aGlwLT5oaXN0b3J5KSk7Cj4gKyAgICBpZiAoIXdoaXAtPmhpc3RvcnkpCj4gKyAgICAgICAg ICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7Cj4gKwo+ICAgICAgYXZfYnByaW50ZigmYnAsICIi Cj4gICAgICAgICAgInY9MFxyXG4iCj4gICAgICAgICAgIm89RkZtcGVnICVzIDIgSU4gSVA0ICVz XHJcbiIKPiBAQCAtNjU2LDcgKzY5MSw3IEBAIHN0YXRpYyBpbnQgZ2VuZXJhdGVfc2RwX29mZmVy KEFWRm9ybWF0Q29udGV4dCAqcykKPiAgICAgICAgICB9Cj4KPiAgICAgICAgICBhdl9icHJpbnRm KCZicCwgIiIKPiAtICAgICAgICAgICAgIm09dmlkZW8gOSBVRFAvVExTL1JUUC9TQVZQRiAldVxy XG4iCj4gKyAgICAgICAgICAgICJtPXZpZGVvIDkgVURQL1RMUy9SVFAvU0FWUEYgJXUgJXVcclxu Igo+ICAgICAgICAgICAgICAiYz1JTiBJUDQgMC4wLjAuMFxyXG4iCj4gICAgICAgICAgICAgICJh PWljZS11ZnJhZzolc1xyXG4iCj4gICAgICAgICAgICAgICJhPWljZS1wd2Q6JXNcclxuIgo+IEBA IC02NjksOSArNzA0LDE2IEBAIHN0YXRpYyBpbnQgZ2VuZXJhdGVfc2RwX29mZmVyKEFWRm9ybWF0 Q29udGV4dCAqcykKPiAgICAgICAgICAgICAgImE9cnRjcC1yc2l6ZVxyXG4iCj4gICAgICAgICAg ICAgICJhPXJ0cG1hcDoldSAlcy85MDAwMFxyXG4iCj4gICAgICAgICAgICAgICJhPWZtdHA6JXUg bGV2ZWwtYXN5bW1ldHJ5LWFsbG93ZWQ9MTtwYWNrZXRpemF0aW9uLW1vZGU9MTtwcm9maWxlLWxl dmVsLWlkPSUwMnglMDJ4JTAyeFxyXG4iCj4gKyAgICAgICAgICAgICJhPXJ0Y3AtZmI6JXUgbmFj a1xyXG4iCj4gKyAgICAgICAgICAgICJhPXJ0cG1hcDoldSBydHgvOTAwMDBcclxuIgo+ICsgICAg ICAgICAgICAiYT1mbXRwOiV1IGFwdD0ldVxyXG4iCj4gKyAgICAgICAgICAgICJhPXNzcmMtZ3Jv dXA6RklEICV1ICV1XHJcbiIKPiArICAgICAgICAgICAgImE9c3NyYzoldSBjbmFtZTpGRm1wZWdc clxuIgo+ICsgICAgICAgICAgICAiYT1zc3JjOiV1IG1zaWQ6RkZtcGVnIHZpZGVvXHJcbiIKPiAg ICAgICAgICAgICAgImE9c3NyYzoldSBjbmFtZTpGRm1wZWdcclxuIgo+ICAgICAgICAgICAgICAi YT1zc3JjOiV1IG1zaWQ6RkZtcGVnIHZpZGVvXHJcbiIsCj4gICAgICAgICAgICAgIHdoaXAtPnZp ZGVvX3BheWxvYWRfdHlwZSwKPiArICAgICAgICAgICAgd2hpcC0+cnR4X3BheWxvYWRfdHlwZSwK PiAgICAgICAgICAgICAgd2hpcC0+aWNlX3VmcmFnX2xvY2FsLAo+ICAgICAgICAgICAgICB3aGlw LT5pY2VfcHdkX2xvY2FsLAo+ICAgICAgICAgICAgICB3aGlwLT5kdGxzX2ZpbmdlcnByaW50LAo+ IEBAIC02ODEsOCArNzIzLDE2IEBAIHN0YXRpYyBpbnQgZ2VuZXJhdGVfc2RwX29mZmVyKEFWRm9y bWF0Q29udGV4dCAqcykKPiAgICAgICAgICAgICAgcHJvZmlsZSwKPiAgICAgICAgICAgICAgd2hp cC0+Y29uc3RyYWludF9zZXRfZmxhZ3MsCj4gICAgICAgICAgICAgIGxldmVsLAo+ICsgICAgICAg ICAgICB3aGlwLT52aWRlb19wYXlsb2FkX3R5cGUsCj4gKyAgICAgICAgICAgIHdoaXAtPnJ0eF9w YXlsb2FkX3R5cGUsCj4gKyAgICAgICAgICAgIHdoaXAtPnJ0eF9wYXlsb2FkX3R5cGUsCj4gKyAg ICAgICAgICAgIHdoaXAtPnZpZGVvX3BheWxvYWRfdHlwZSwKPiArICAgICAgICAgICAgd2hpcC0+ dmlkZW9fc3NyYywKPiArICAgICAgICAgICAgd2hpcC0+dmlkZW9fcnR4X3NzcmMsCj4gICAgICAg ICAgICAgIHdoaXAtPnZpZGVvX3NzcmMsCj4gLSAgICAgICAgICAgIHdoaXAtPnZpZGVvX3NzcmMp Owo+ICsgICAgICAgICAgICB3aGlwLT52aWRlb19zc3JjLAo+ICsgICAgICAgICAgICB3aGlwLT52 aWRlb19ydHhfc3NyYywKPiArICAgICAgICAgICAgd2hpcC0+dmlkZW9fcnR4X3NzcmMpOwo+ICAg ICAgfQo+Cj4gICAgICBpZiAoIWF2X2JwcmludF9pc19jb21wbGV0ZSgmYnApKSB7Cj4gQEAgLTEz OTgsNiArMTQ0OCwxMiBAQCBzdGF0aWMgaW50IHNldHVwX3NydHAoQVZGb3JtYXRDb250ZXh0ICpz KQo+ICAgICAgICAgIGdvdG8gZW5kOwo+ICAgICAgfQo+Cj4gKyAgICByZXQgPSBmZl9zcnRwX3Nl dF9jcnlwdG8oJndoaXAtPnNydHBfdmlkZW9fcnR4X3NlbmQsIHN1aXRlLCBidWYpOwo+ICsgICAg aWYgKHJldCA8IDApIHsKPiArICAgICAgICBhdl9sb2cod2hpcCwgQVZfTE9HX0VSUk9SLCAiV0hJ UDogRmFpbGVkIHRvIHNldCBjcnlwdG8gZm9yIHZpZGVvIHJ0eCBzZW5kXG4iKTsKU2luY2UgYXZf bG9nKHdoaXAsICBoYXMgYmVlbiBzZXQsIHRoZSAiV0hJUDoiIHByZWZpeCBtaWdodCBiZQp1bm5l Y2Vzc2FyeS4gU2FtZSBjb21tZW50IHRvIGJlbGxvdy4KCj4gKyAgICAgICAgZ290byBlbmQ7Cj4g KyAgICB9Cj4gKwo+ICAgICAgcmV0ID0gZmZfc3J0cF9zZXRfY3J5cHRvKCZ3aGlwLT5zcnRwX3J0 Y3Bfc2VuZCwgc3VpdGUsIGJ1Zik7Cj4gICAgICBpZiAocmV0IDwgMCkgewo+ICAgICAgICAgIGF2 X2xvZyh3aGlwLCBBVl9MT0dfRVJST1IsICJGYWlsZWQgdG8gc2V0IGNyeXB0byBmb3IgcnRjcCBz ZW5kXG4iKTsKPiBAQCAtMTQyNyw2ICsxNDgzLDM3IEBAIGVuZDoKPiAgICAgIHJldHVybiByZXQ7 Cj4gIH0KPgo+ICsKPiArLyoqCj4gKyAqIFJUWCBoaXN0b3J5IGhlbHBlcnMKPiArICovCj4gKyBz dGF0aWMgdm9pZCBydHBfaGlzdG9yeV9zdG9yZShXSElQQ29udGV4dCAqd2hpcCwgY29uc3QgdWlu dDhfdCAqYnVmLCBpbnQgc2l6ZSkKcmV0dXJuIHZhbHVlLgo+ICt7Cj4gKyAgICBpbnQgcG9zID0g d2hpcC0+aGlzdF9oZWFkICUgd2hpcC0+aGlzdG9yeV9zaXplOwo+ICsgICAgUnRwSGlzdG9yeUl0 ZW0gKml0ID0gJndoaXAtPmhpc3RvcnlbcG9zXTsKPiArICAgIC8qIGZyZWUgb2xkZXIgZW50cnkg Ki8KPiArICAgIGF2X2ZyZWUoaXQtPmJ1Zik7Cj4gKyAgICBpdC0+YnVmID0gYXZfbWFsbG9jKHNp emUpOwo+ICsgICAgaWYgKCFpdC0+YnVmKQo+ICsgICAgICAgIHJldHVybjsKIHJldHVybiBBVkVS Uk9SKEVOT01FTSkKPiArCj4gKyAgICBtZW1jcHkoaXQtPmJ1ZiwgYnVmLCBzaXplKTsKPiArICAg IGl0LT5zaXplID0gc2l6ZTsKPiArICAgIGl0LT5zZXEgPSBBVl9SQjE2KGJ1ZiArIDIpOwo+ICsK PiArICAgIHdoaXAtPmhpc3RfaGVhZCA9ICsrcG9zOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qg UnRwSGlzdG9yeUl0ZW0gKnJ0cF9oaXN0b3J5X2ZpbmQoY29uc3QgV0hJUENvbnRleHQgKndoaXAs IHVpbnQxNl90IHNlcSkKPiArewo+ICsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB3aGlwLT5oaXN0 b3J5X3NpemU7IGkrKykgewo+ICsgICAgICAgIGNvbnN0IFJ0cEhpc3RvcnlJdGVtICppdCA9ICZ3 aGlwLT5oaXN0b3J5W2ldOwo+ICsgICAgICAgIGlmIChpdC0+YnVmICYmIGl0LT5zZXEgPT0gc2Vx KQo+ICsgICAgICAgICAgICByZXR1cm4gaXQ7Cj4gKyAgICB9Cj4gKyAgICByZXR1cm4gTlVMTDsK PiArfQo+ICsKPiAgLyoqCj4gICAqIENhbGxiYWNrIHRyaWdnZXJlZCBieSB0aGUgUlRQIG11eGVy IHdoZW4gaXQgY3JlYXRlcyBhbmQgc2VuZHMgb3V0IGFuIFJUUCBwYWNrZXQuCj4gICAqCj4gQEAg LTE0NjMsNiArMTU1MCwxMCBAQCBzdGF0aWMgaW50IG9uX3J0cF93cml0ZV9wYWNrZXQodm9pZCAq b3BhcXVlLCBjb25zdCB1aW50OF90ICpidWYsIGludCBidWZfc2l6ZSkKPiAgICAgICAgICByZXR1 cm4gMDsKPiAgICAgIH0KPgo+ICsgICAgLyogU3RvcmUgb25seSBPUklHSU5BTCB2aWRlbyBwYWNr ZXRzIChub24tUlRYLCBub24tUlRDUCkgKi8KPiArICAgIGlmICghaXNfcnRjcCAmJiBpc192aWRl bykKPiArICAgICAgICBydHBfaGlzdG9yeV9zdG9yZSh3aGlwLCBidWYsIGJ1Zl9zaXplKTsKICAg ICAgIHJldCA9IHJ0cF9oaXN0b3J5X3N0b3JlKHdoaXAsIGJ1ZiwgYnVmX3NpemUpOwogICAgICAg aWYgKHJldCA8IDApCiAgICAgICAgICAgcHJvY2VzcyBmYWlsZWQ7CgogPiArCj4gICAgICByZXQg PSBmZnVybF93cml0ZSh3aGlwLT51ZHAsIHdoaXAtPmJ1ZiwgY2lwaGVyX3NpemUpOwo+ICAgICAg aWYgKHJldCA8IDApIHsKPiAgICAgICAgICBhdl9sb2cod2hpcCwgQVZfTE9HX0VSUk9SLCAiRmFp bGVkIHRvIHdyaXRlIHBhY2tldD0lZEIsIHJldD0lZFxuIiwgY2lwaGVyX3NpemUsIHJldCk7Cj4g QEAgLTE0NzEsNiArMTU2Miw0NSBAQCBzdGF0aWMgaW50IG9uX3J0cF93cml0ZV9wYWNrZXQodm9p ZCAqb3BhcXVlLCBjb25zdCB1aW50OF90ICpidWYsIGludCBidWZfc2l6ZSkKPgo+ICAgICAgcmV0 dXJuIHJldDsKPiAgfQo+ICsvKioKPiArICogU2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5v cmcvZG9jL2h0bWwvcmZjNDU4OAo+ICsgKiBCdWlsZCBhbmQgc2VuZCBhIHNpbmdsZSBSVFggcGFj a2V0Cj4gKyAqLwo+ICtzdGF0aWMgaW50IHNlbmRfcnR4X3BhY2tldChBVkZvcm1hdENvbnRleHQg KnMsIGNvbnN0IHVpbnQ4X3QgKm9yaWdfcGt0X2J1ZiwgaW50IG9yaWdfc2l6ZSkKPiArewo+ICsg ICAgV0hJUENvbnRleHQgKndoaXAgPSBzLT5wcml2X2RhdGE7Cj4gKyAgICBpbnQgbmV3X3NpemUs IGNpcGhlcl9zaXplOwo+ICsgICAgaWYgKHdoaXAtPmZsYWdzICYgV0hJUF9GTEFHX0RJU0FCTEVf UlRYKQo+ICsgICAgICAgIHJldHVybiAwOwo+ICsKPiArICAgIC8qIGFsbG9jYXRlIG5ldyBidWZm ZXI6IGhlYWRlciArIDIgKyBwYXlsb2FkICovCj4gKyAgICBpZiAob3JpZ19zaXplICsgMiA+IHNp emVvZih3aGlwLT5idWYpKQo+ICsgICAgICAgIHJldHVybiAwOwo+ICsKPiArICAgIG1lbWNweSh3 aGlwLT5idWYsIG9yaWdfcGt0X2J1Ziwgb3JpZ19zaXplKTsKPiArCj4gKyAgICB1aW50OF90ICpo ZHIgPSB3aGlwLT5idWY7Cj4gKyAgICB1aW50MTZfdCBvcmlnX3NlcSA9IEFWX1JCMTYoaGRyICsg Mik7Cj4gKwo+ICsgICAgLyogcmV3cml0ZSBoZWFkZXIgKi8KPiArICAgIGhkclsxXSA9IChoZHJb MV0gJiAweDgwKSB8IHdoaXAtPnJ0eF9wYXlsb2FkX3R5cGU7IC8qIGtlZXAgTSBiaXQgKi8KPiAr ICAgIEFWX1dCMTYoaGRyICsgMiwgd2hpcC0+cnR4X3NlcSsrKTsKPiArICAgIEFWX1dCMzIoaGRy ICsgOCwgd2hpcC0+dmlkZW9fcnR4X3NzcmMpOwo+ICsKPiArICAgIC8qIHNoaWZ0IHBheWxvYWQg MiBieXRlcyAqLwo+ICsgICAgbWVtbW92ZShoZHIgKyAxMiArIDIsIGhkciArIDEyLCBvcmlnX3Np emUgLSAxMik7Cj4gKyAgICBBVl9XQjE2KGhkciArIDEyLCBvcmlnX3NlcSk7Cj4gKwo+ICsgICAg bmV3X3NpemUgPSBvcmlnX3NpemUgKyAyOwo+ICsKPiArICAgIC8qIEVuY3J5cHQgYnkgU1JUUCBh bmQgc2VuZCBvdXQuICovCj4gKyAgICBjaXBoZXJfc2l6ZSA9IGZmX3NydHBfZW5jcnlwdCgmd2hp cC0+c3J0cF92aWRlb19ydHhfc2VuZCwgd2hpcC0+YnVmLCBuZXdfc2l6ZSwgd2hpcC0+YnVmLCBz aXplb2Yod2hpcC0+YnVmKSk7Cj4gKyAgICBpZiAoY2lwaGVyX3NpemUgPD0gMCB8fCBjaXBoZXJf c2l6ZSA8IG5ld19zaXplKSB7Cj4gKyAgICAgICAgYXZfbG9nKHdoaXAsIEFWX0xPR19XQVJOSU5H LCAiV0hJUDogRmFpbGVkIHRvIGVuY3J5cHQgcGFja2V0PSVkQiwgY2lwaGVyPSVkQlxuIiwgbmV3 X3NpemUsIGNpcGhlcl9zaXplKTsKPiArICAgICAgICByZXR1cm4gMDsKPiArICAgIH0KPiArICAg IHJldHVybiBmZnVybF93cml0ZSh3aGlwLT51ZHAsIHdoaXAtPmJ1ZiwgY2lwaGVyX3NpemUpOwo+ ICt9Cj4KPiAgLyoqCj4gICAqIENyZWF0ZXMgZGVkaWNhdGVkIFJUUCBtdXhlcnMgZm9yIGVhY2gg c3RyZWFtIGluIHRoZSBBVkZvcm1hdENvbnRleHQgdG8gYnVpbGQgUlRQCj4gQEAgLTE3OTMsNiAr MTkyMyw2NiBAQCBzdGF0aWMgaW50IHdoaXBfd3JpdGVfcGFja2V0KEFWRm9ybWF0Q29udGV4dCAq cywgQVZQYWNrZXQgKnBrdCkKPiAgICAgICAgICAgICAgICAgIGdvdG8gZW5kOwo+ICAgICAgICAg ICAgICB9Cj4gICAgICAgICAgfQo+ICsgICAgICAgIC8qKgo+ICsgICAgICAgICAqIEhhbmRsZSBS VENQIE5BQ0sKPiArICAgICAgICAgKiBSZWZlciB0byBSRkMgNDU4NSwgU2VjdGlvbiA2LjIuMQo+ ICsgICAgICAgICAqIFRoZSBHZW5lcmljIE5BQ0sgbWVzc2FnZSBpcyBpZGVudGlmaWVkIGJ5IFBU PVJUUEZCIGFuZCBGTVQ9MS4KPiArICAgICAgICAgKiBUT0RPOiBkaXNhYmxlIHJldHJhbnNtaXNz dGlvbiB3aGVuICItdHVuZSB6ZXJvbGF0ZW5jeSIKPiArICAgICAgICAgKi8KPiArICAgICAgICBp ZiAobWVkaWFfaXNfcnRjcCh3aGlwLT5idWYsIHJldCkpIHsKPiArICAgICAgICAgICAgaW50IHB0 ciA9IDA7Cj4gKyAgICAgICAgICAgIHVpbnQ4X3QgcHQgPSB3aGlwLT5idWZbcHRyICsgMV07Cj4g KyAgICAgICAgICAgIHVpbnQ4X3QgZm10ID0gKHdoaXAtPmJ1ZltwdHJdICYgMHgxZik7Cj4gKyAg ICAgICAgICAgIGlmIChwdHIgKyA0IDw9IHJldCAmJiBwdCA9PSAyMDUgJiYgZm10ID09IDEpIHsK PiArICAgICAgICAgICAgICAgIC8qKgo+ICsgICAgICAgICAgICAgICAgICogUmVmZXIgdG8gUkZD IDM1NTAsIFNlY3Rpb24gNi40LjEuCj4gKyAgICAgICAgICAgICAgICAgKiBUaGUgbGVuZ3RoIG9m IHRoaXMgUlRDUCBwYWNrZXQgaW4gMzItYml0IHdvcmRzIG1pbnVzIG9uZSwKPiArICAgICAgICAg ICAgICAgICAqIGluY2x1ZGluZyB0aGUgaGVhZGVyIGFuZCBhbnkgcGFkZGluZy4KPiArICAgICAg ICAgICAgICAgICAqLwo+ICsgICAgICAgICAgICAgICAgaW50IHJ0Y3BfbGVuID0gKEFWX1JCMTYo JndoaXAtPmJ1ZltwdHIgKyAyXSkgKyAxKSAqIDQ7Cj4gKyAgICAgICAgICAgICAgICAvKiBTUlRD UCBpbmRleCg0IGJ5dGVzKSArIEhNQUMgKFNSVFBfQUVTMTI4X0NNX1NIQTFfODAgMTBieXRlcykg Ki8KPiArICAgICAgICAgICAgICAgIGludCBzcnRjcF9sZW4gPSBydGNwX2xlbiArIDQgKyAxMDsK PiArICAgICAgICAgICAgICAgIGlmIChzcnRjcF9sZW4gPT0gcmV0ICYmIHJ0Y3BfbGVuID49IDEy KSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgaW50IGkgPSAwOwo+ICsgICAgICAgICAgICAgICAg ICAgIHVpbnQ4X3QgKmJ1ZiA9IGF2X21hbGxvYyhzcnRjcF9sZW4pOwppZiAoIWJ1ZikKICAgcHJv Y2VzcyAgQVZFUk9SKEVOT01FTSkKPiArICAgICAgICAgICAgICAgICAgICBtZW1jcHkoYnVmLCB3 aGlwLT5idWYsIHNydGNwX2xlbik7Cj4gKyAgICAgICAgICAgICAgICAgICAgaW50IHJldCA9IGZm X3NydHBfZGVjcnlwdCgmd2hpcC0+c3J0cF9yZWN2LCBidWYsICZzcnRjcF9sZW4pOwo+ICsgICAg ICAgICAgICAgICAgICAgIGlmIChyZXQgPCAwKQppZiBlcnJvciBoZXJlLCBzaG91bGQgZnJlZSBi dWYsIG90aGVyd2lzZSB3aWxsIG1lbWxlYWsuCgo+ICsgICAgICAgICAgICAgICAgICAgICAgICBh dl9sb2cod2hpcCwgQVZfTE9HX0VSUk9SLCAiV0hJUDogU1JUQ1AgZGVjcnlwdCBmYWlsZWQ6ICVk XG4iLCByZXQpOwo+ICsgICAgICAgICAgICAgICAgICAgIHdoaWxlICgxMiArIGkgPCBydGNwX2xl biAmJiAhcmV0KSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIC8qKgo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgKiAgU2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0 bWwvcmZjNDU4NSNzZWN0aW9uLTYuMQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKiAgSGFu ZGxlIG11bHRpIE5BQ0tzIGluIGJ1bmRsZWQgcGFja2V0Lgo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgKi8KPiArICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgcGlkID0gQVZfUkIx NigmYnVmW3B0ciArIDEyICsgaV0pOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZf dCBibHAgPSBBVl9SQjE2KCZidWZbcHRyICsgMTQgKyBpXSk7Cj4gKwo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAvKiByZXRyYW5zbWl0IHBpZCArIGFueSBiaXQgc2V0IGluIGJscCAqLwo+ICsg ICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBiaXQgPSAtMTsgYml0IDwgMTY7IGJpdCsr KSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBzZXEgPSAoYml0IDwg MCkgPyBwaWQgOiBwaWQgKyBiaXQgKyAxOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg aWYgKGJpdCA+PSAwICYmICEoYmxwICYgKDEgPDwgYml0KSkpCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29udGludWU7Cj4gKwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgUnRwSGlzdG9yeUl0ZW0gKml0ID0gcnRwX2hpc3RvcnlfZmluZCh3aGlwLCBzZXEp Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0KSB7Cj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYXZfbG9nKHdoaXAsIEFWX0xPR19WRVJCT1NFLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV0hJUDogTkFDSywgcGFja2V0IGZvdW5k OiBzaXplOiAlZCwgc2VxPSVkLCBydHggc2l6ZT0lZCwgbGF0ZXNldCBzdG9yZWQgcGFja2V0IHNl cTolZFxuIiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPnNpemUs IHNlcSwgcmV0LCB3aGlwLT5oaXN0b3J5W3doaXAtPmhpc3RfaGVhZC0xXS5zZXEpOwo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHNlbmRfcnR4X3BhY2tldChzLCBpdC0+ YnVmLCBpdC0+c2l6ZSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJl dCA8PSAwICYmICEod2hpcC0+ZmxhZ3MgJiBXSElQX0ZMQUdfRElTQUJMRV9SVFgpKQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdl9sb2cod2hpcCwgQVZfTE9HX0VSUk9S LCAiV0hJUDogRmFpbGVkIHRvIHNlbmQgUlRYIHBhY2tldFxuIik7Cj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICB9IGVsc2Ugewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGF2X2xvZyh3aGlwLCBBVl9MT0dfVkVSQk9TRSwKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIldISVA6IE5BQ0ssIHBhY2tldCBub3QgZm91bmQsIHNlcT0lZCwgbGF0ZXN0 IHN0b3JlZCBwYWNrZXQgc2VxOiAlZCwgbGF0ZXN0IHJ0eCBzZXE6ICVkXG4iLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXEsIHdoaXAtPmhpc3Rvcnlbd2hpcC0+aGlz dF9oZWFkLTFdLnNlcSwgd2hpcC0+cnR4X3NlcSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgaSA9IGkgKyA0Owo+ICsgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAg ICAgICAgICBhdl9mcmVlKGJ1Zik7Cj4gKyAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAg IH0KPiArICAgICAgICB9Cj4gICAgICB9IGVsc2UgaWYgKHJldCAhPSBBVkVSUk9SKEVBR0FJTikp IHsKPiAgICAgICAgICBhdl9sb2cod2hpcCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIHJlYWQg ZnJvbSBVRFAgc29ja2V0XG4iKTsKPiAgICAgICAgICBnb3RvIGVuZDsKPiBAQCAtMTg5OCw2ICsy MDg4LDggQEAgc3RhdGljIGNvbnN0IEFWT3B0aW9uIG9wdGlvbnNbXSA9IHsKPiAgICAgIHsgImtl eV9maWxlIiwgICAgICAgICAgICJPcHRpb25hbCBwcml2YXRlIGtleSBmaWxlIHBhdGggZm9yIERU TFMiLCAgICAgICAgICAgICAgT0ZGU0VUKGtleV9maWxlKSwgICAgICBBVl9PUFRfVFlQRV9TVFJJ TkcsIHsgLnN0ciA9IE5VTEwgfSwgICAgIDAsICAgICAgIDAsIEVOQyB9LAo+ICAgICAgeyAid2hp cF9mbGFncyIsICAgICAgICAgIlNldCBmbGFncyBhZmZlY3RpbmcgV0hJUCBjb25uZWN0aW9uIGJl aGF2aW9yIiwgICAgICAgICAgICAgT0ZGU0VUKGZsYWdzKSwgICAgICAgICBBVl9PUFRfVFlQRV9G TEFHUywgIHsgLmk2NCA9IDAgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBVSU5UX01B WCwgRU5DLCAudW5pdCA9ICJmbGFncyIgfSwKPiAgICAgIHsgImlnbm9yZV9pcHY2IiwgICAgICAg ICJJZ25vcmUgYW55IElQdjYgSUNFIGNhbmRpZGF0ZSIsICAgICAgICAgICAgICAgICAwLCAgICAg ICAgICAgICAgICAgICAgIEFWX09QVF9UWVBFX0NPTlNULCAgeyAuaTY0ID0gV0hJUF9GTEFHX0lH Tk9SRV9JUFY2IH0sICAgICAgIDAsIFVJTlRfTUFYLCBFTkMsIC51bml0ID0gImZsYWdzIiB9LAo+ ICsgICAgeyAiZGlzYWJsZV9ydHgiLCAiRGlzYWJsZSBSRkMgNDU4OCBSVFgiLCAwLCBBVl9PUFRf VFlQRV9DT05TVCwgIHsgLmk2NCA9IFdISVBfRkxBR19ESVNBQkxFX1JUWCB9LCAwLCBVSU5UX01B WCwgRU5DLCAudW5pdCA9ICJmbGFncyIgfSwKPiArICAgIHsgInJ0eF9oaXN0b3J5X3NpemUiLCAi UGFja2V0IGhpc3Rvcnkgc2l6ZSIsIE9GRlNFVChoaXN0b3J5X3NpemUpLCBBVl9PUFRfVFlQRV9J TlQsIHsgLmk2NCA9IEhJU1RPUllfU0laRV9ERUZBVUxUIH0sIDY0LCAyMDQ4LCBFTkMgfSwKPiAg ICAgIHsgTlVMTCB9LAo+ICB9Owo+Cj4gLS0KPiAyLjQ5LjAKPgo+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZmZtcGVnLWRldmVsIG1haWxpbmcgbGlz dAo+IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCj4gaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4v bGlzdGluZm8vZmZtcGVnLWRldmVsCj4KPiBUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92 ZSwgb3IgZW1haWwKPiBmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVj dCAidW5zdWJzY3JpYmUiLgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3Jn Cmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5z dWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0 QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==