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 1A8CD40E3D for ; Fri, 31 Dec 2021 15:53:47 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 20FE568B00B; Fri, 31 Dec 2021 17:53:45 +0200 (EET) Received: from mail-qk1-f178.google.com (mail-qk1-f178.google.com [209.85.222.178]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A25D568A2D7 for ; Fri, 31 Dec 2021 17:53:39 +0200 (EET) Received: by mail-qk1-f178.google.com with SMTP id e25so19676760qkl.12 for ; Fri, 31 Dec 2021 07:53:39 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=lzV3rSpd+y9W+c/XFnHvnO1vLg1VEEluGLoLbGuKWPA=; b=xX0+NERaQLWAA8DflgnOtBrpVR4aBlZBOdEq+rVpUtg8/Vn6Lwv1xXjODSccPeewAT ZW0HMjadAez/8IaRFwgpjFrZUj/JspSkErVRArnfjUrtnEP5HG0jJyFpXV+JKh09iAp0 MOM40L+625Rl2vcOOZkqyGqhbKEZgkD7+SnWT0bD7eMVxF3zcp5dQqD+G3SPvmnq5JXy F70fxJkrrEbKwZ91PsBrCIY0LbaANd5ExtSrrCaK1uFKigQmBLKxwwGcQ8s8jhITAslG HJV64hjRh6YUmzjmG24as6fYuVUbliwkY3lyuz5PC2c1KmW/3eu2r+VnTt88MM3aYorQ +SSA== X-Gm-Message-State: AOAM531eYKE6yHFkkUezZ9NEAxzjfK1Xe9SQ8ThrA/Q+dsiOBv8b1pUL Xh2sgPUdYkXChSabjcqCsvc= X-Google-Smtp-Source: ABdhPJzONwPsNHayzaJ0iO2zCb/69jWiNbYmahscQ4dapUsZKbQR0HHJi9XuMNYqZJe9FtuFj/vIiQ== X-Received: by 2002:a05:620a:25c8:: with SMTP id y8mr24427565qko.3.1640966017641; Fri, 31 Dec 2021 07:53:37 -0800 (PST) Received: from smtpclient.apple ([172.58.171.222]) by smtp.gmail.com with ESMTPSA id y14sm17024936qkp.27.2021.12.31.07.53.35 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Dec 2021 07:53:37 -0800 (PST) Mime-Version: 1.0 (Mac OS X Mail 15.0 \(3693.40.0.1.81\)) From: Romain Beauxis In-Reply-To: Date: Fri, 31 Dec 2021 09:53:33 -0600 Message-Id: <499FD352-EAEE-4F9C-B220-A62CCF349331@rastageeks.org> References: <7580B1EB-3AD3-4D90-AEDD-43F98F9BBC53@rastageeks.org> To: Aman Karmani X-Mailer: Apple Mail (2.3693.40.0.1.81) Subject: Re: [FFmpeg-devel] [PATCH v6 01/03] libavdevice/avfoundation.m: use AudioConvert, extend supported formats 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: Thilo Borgmann , 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: Cgo+IE9uIERlYyAyOCwgMjAyMSwgYXQgNjo1NCBQTSwgQW1hbiBLYXJtYW5pIDxmZm1wZWdAdG1t MS5uZXQ+IHdyb3RlOgo+IAo+IAo+IAo+IE9uIFR1ZSwgRGVjIDI4LCAyMDIxIGF0IDI6NTAgUE0g Um9tYWluIEJlYXV4aXMgPHRvb3RzQHJhc3RhZ2Vla3Mub3JnPiB3cm90ZToKPiBUaGlzIGlzIHRo ZSBmaXJzdCBwYXRjaCBvZiBhIHNlcmllcyBvZiAzIHRoYXQgZml4LCBjbGVhbnVwIGFuZCBlbmhh bmNlIHRoZQo+IGF2Zm91bmRhdGlvbiBpbXBsZW1lbnRhdGlvbiBmb3IgbGliYXZkZXZpY2UuCj4g Cj4gVGhlIHBhdGNoZXMgaGF2ZSBiZWVuIHN1Ym1pdHRlZCBhIGNvdXBsZSBvZiB0aW1lcyBub3cg YW5kIGhhdmUKPiByZWNlaXZlZCB2ZXJ5IG5pY2UgZmVlZGJhY2sgZm9yIHRoZSBsYXN0IHR3byBo b3dldmVyIGJ1dCB0aGV5IGRvIG5vdCBzZWVtCj4gdG8gaGF2ZSBiZWVuIGNvbnNpZGVyZWQgZm9y IGluY2x1c2lvbiB0aHVzIGZhci4gCj4gCj4gVGhlc2UgcGF0Y2hlcyBjb21lIGZyb20gYW4gYWN0 dWFsIHVzZXItZmFjaW5nIGFwcGxpY2F0aW9uIHJlbHlpbmcgb24KPiBsaWJhdmRldmljZeKAmXMg aW1wbGVtZW50YXRpb24gb2YgYXZmb3VuZGF0aW9uIGF1ZGlvIGlucHV0LiBXaXRob3V0IHRoZW0s Cj4gQXZmb3VuZGF0aW9uIGlzIHByYWN0aWNhbGx5IHVudXNhYmxlIGFzIGl0IHdpbGw6Cj4gKiBS ZWZ1c2UgdG8gcHJvY2VzcyBjZXJ0YWluIHNwZWNpZmljIGF1ZGlvIGlucHV0IGZvcm1hdCB0aGF0 IGFyZSBhY3R1YWxseQo+ICAgcmV0dXJuZWQgYnkgdGhlIE9TIGZvciBzb21lIHVzZXJzIChwYWNr ZWQgUENNIGF1ZGlvKQo+ICogRHJvcCBhdWRpbyBmcmFtZXMsIHJlc3VsdGluZyBpbiBjb3JydXB0 ZWQgYXVkaW8gaW5wdXQuIFRoaXMgbWlnaHQgaGF2ZSBiZWVuCj4gICB1bm5vdGljZWQgd2l0aCB2 aWRlbyBmcmFtZXMgYnV0IHRoaXMgbWFrZXMgYXZmb3VuZGF0aW9uIGVzc2VudGlhbGx5IHVudXNh YmxlCj4gICBmb3IgYXVkaW8uCj4gCj4gVGhlIHBhdGNoZXMgYXJlIG5vdyBiZWluZyBpbmNsdWRl ZCBpbiBvdXIgcHJvZHVjdGlvbiBidWlsZCBzbyB0aGV5IGFyZSB0ZXN0ZWQKPiBhbmQgdXNhYmxl IGluIHByb2R1Y3Rpb24uCj4gCj4gU28sIHRoaXMgYmFyZXMgdGhlIHF1ZXN0aW9uOiBpcyBhdmZv dW5kYXRpb24gc3RpbGwgc3VwcG9ydGVkIGFuZCBhY3RpdmVseSBtYWludGFpbmVkCj4gaW4gbGli YXZkZXZpY2U/IEl0IGZlZWxzIHRoYXQgc3VjaCBpbXBvcnRhbnQgYnVncyBzaG91bGQgaGF2ZSBi ZWVuIG5vdGljZWQgYnkgbm93Cj4gYW5kIGFsc28gZ2VuZXJhdGVkIGEgbGl0dGxlIG1vcmUgaW50 ZXJlc3QgaW4gZml4aW5nIHRoZW0uCj4gCj4gVGhhbmtzIGZvciB3b3JraW5nIG9uIHRoaXMsIGFu ZCBhZGRyZXNzaW5nIGFsbCB0aGUgZmVlZGJhY2sgc28gZmFyLgo+IAo+IFRoZSBwYXRjaHNldCBM R1RNLCBhbmQgSSB0aGluayBpdCBzaG91bGQgYmUgYXBwbGllZC4KPiAKPiBMb29rcyBsaWtlIE1B SU5UQUlORVJTIGxpc3RzIFRoaWxvIGZvciBhdmZvdW5kYXRpb24ubS4gSSdtIG5vdCBzdXJlIGlm IGhlJ3Mgc2VlbiB0aGlzIHlldCwgc28gSSdtIGNjJ2luZyBvbiB0aGlzIHJlcGx5Lgo+IAo+IElm IHdlIGRvbid0IGhlYXIgaW4gdGhlIG5leHQgY291cGxlIHdlZWtzLCBJIGNhbiBhcHBseSB0aGVz ZSBjaGFuZ2VzLgoKClRoYW5rIHlvdSwgdGhpcyBpcyBtdWNoIGFwcHJlY2lhdGVkIQoKV2UgZGlz Y292ZXJlZCBhIGJ1ZyBpbiB0aGUgYXVkaW8gY29udmVydGVyIHBhdGNoLCBJ4oCZbSBwb3N0aW5n IGEgbmV3IHVwZGF0ZWQgc2VyaWVzIHJpZ2h0IGF3YXkgJiB3aWxsIENDIGV2ZXJ5b25lIGhlcmUu CgpUaGFua3MhCgo+IAo+IAo+IFRoYW5rcyBmb3IgeeKAmWFsbCBmZWVkYmFjayEKPiDigJQgUm9t YWluCj4gLS0tLS0KPiAKPiBDaGFuZ2VzOgo+ICogdjI6IE5vbmUKPiAqIHYzOiBOb25lCj4gKiB2 NDogTm9uZQo+ICogdjU6IEZpeCBpbmRlbnRhdGlvbi93cmFwcGluZwo+ICogdjY6IE5vbmUKPiAK PiAqIEltcGxlbWVudCBzdXBwb3J0IGZvciBBdWRpb0NvbnZlcnRlcgo+ICogU3dpdGNoIHRvIEF1 ZGlvQ29udmVydGVyJ3MgQVBJIHRvIGNvbnZlcnQgdW5zdXBwb3J0ZWQgUENNCj4gICBmb3JtYXRz IChub24taW50ZXJsZWF2ZWQsIG5vbi1wYWNrZWQpIHRvIHN1cHBvcnRlZCBmb3JtYXRzCj4gKiBN aW5pbWl6ZSBkYXRhIGNvcHkuCj4gCj4gVGhpcyBmaXhlczogaHR0cHM6Ly90cmFjLmZmbXBlZy5v cmcvdGlja2V0Lzk1MDIKPiAKPiBBUEkgcmVmOgo+IGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNv bS9kb2N1bWVudGF0aW9uL2F1ZGlvdG9vbGJveC9hdWRpb19jb252ZXJ0ZXJfc2VydmljZXMKPiAK PiBTaWduZWQtb2ZmLWJ5OiBSb21haW4gQmVhdXhpcyA8dG9vdHNAcmFzdGFnZWVrcy5vcmc+Cj4g LS0tCj4gbGliYXZkZXZpY2UvYXZmb3VuZGF0aW9uLm0gfCAyNTAgKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLQo+IDEgZmlsZSBjaGFuZ2VkLCAxNDQgaW5zZXJ0aW9ucygrKSwg MTA2IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9saWJhdmRldmljZS9hdmZvdW5kYXRp b24ubSBiL2xpYmF2ZGV2aWNlL2F2Zm91bmRhdGlvbi5tCj4gaW5kZXggMGNkNmU2NDZkNS4uNzlj OTIwN2NmYSAxMDA2NDQKPiAtLS0gYS9saWJhdmRldmljZS9hdmZvdW5kYXRpb24ubQo+ICsrKyBi L2xpYmF2ZGV2aWNlL2F2Zm91bmRhdGlvbi5tCj4gQEAgLTExMSwxNiArMTExLDEwIEBACj4gCj4g ICAgIGludCAgICAgICAgICAgICBudW1fdmlkZW9fZGV2aWNlczsKPiAKPiAtICAgIGludCAgICAg ICAgICAgICBhdWRpb19jaGFubmVsczsKPiAtICAgIGludCAgICAgICAgICAgICBhdWRpb19iaXRz X3Blcl9zYW1wbGU7Cj4gLSAgICBpbnQgICAgICAgICAgICAgYXVkaW9fZmxvYXQ7Cj4gLSAgICBp bnQgICAgICAgICAgICAgYXVkaW9fYmU7Cj4gLSAgICBpbnQgICAgICAgICAgICAgYXVkaW9fc2ln bmVkX2ludGVnZXI7Cj4gLSAgICBpbnQgICAgICAgICAgICAgYXVkaW9fcGFja2VkOwo+IC0gICAg aW50ICAgICAgICAgICAgIGF1ZGlvX25vbl9pbnRlcmxlYXZlZDsKPiAtCj4gLSAgICBpbnQzMl90 ICAgICAgICAgKmF1ZGlvX2J1ZmZlcjsKPiAtICAgIGludCAgICAgICAgICAgICBhdWRpb19idWZm ZXJfc2l6ZTsKPiArICAgIFVJbnQzMiAgICAgICAgICAgIGF1ZGlvX2J1ZmZlcnM7Cj4gKyAgICBV SW50MzIgICAgICAgICAgICBhdWRpb19jaGFubmVsczsKPiArICAgIFVJbnQzMiAgICAgICAgICAg IGJ5dGVzX3Blcl9zYW1wbGU7Cj4gKyAgICBBdWRpb0NvbnZlcnRlclJlZiBhdWRpb19jb252ZXJ0 ZXI7Cj4gCj4gICAgIGVudW0gQVZQaXhlbEZvcm1hdCBwaXhlbF9mb3JtYXQ7Cj4gCj4gQEAgLTI5 OSw3ICsyOTMsMTAgQEAgc3RhdGljIHZvaWQgZGVzdHJveV9jb250ZXh0KEFWRkNvbnRleHQqIGN0 eCkKPiAgICAgY3R4LT5hdmZfZGVsZWdhdGUgICAgPSBOVUxMOwo+ICAgICBjdHgtPmF2Zl9hdWRp b19kZWxlZ2F0ZSA9IE5VTEw7Cj4gCj4gLSAgICBhdl9mcmVlcCgmY3R4LT5hdWRpb19idWZmZXIp Owo+ICsgICAgaWYgKGN0eC0+YXVkaW9fY29udmVydGVyKSB7Cj4gKyAgICAgIEF1ZGlvQ29udmVy dGVyRGlzcG9zZShjdHgtPmF1ZGlvX2NvbnZlcnRlcik7Cj4gKyAgICAgIGN0eC0+YXVkaW9fY29u dmVydGVyID0gTlVMTDsKPiArICAgIH0KPiAKPiAgICAgcHRocmVhZF9tdXRleF9kZXN0cm95KCZj dHgtPmZyYW1lX2xvY2spOwo+IAo+IEBAIC02NzMsNiArNjcwLDEwIEBAIHN0YXRpYyBpbnQgZ2V0 X2F1ZGlvX2NvbmZpZyhBVkZvcm1hdENvbnRleHQgKnMpCj4gICAgIEFWRkNvbnRleHQgKmN0eCA9 IChBVkZDb250ZXh0KilzLT5wcml2X2RhdGE7Cj4gICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYg Zm9ybWF0X2Rlc2M7Cj4gICAgIEFWU3RyZWFtKiBzdHJlYW0gPSBhdmZvcm1hdF9uZXdfc3RyZWFt KHMsIE5VTEwpOwo+ICsgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIG91dHB1dF9mb3Jt YXQgPSB7MH07Cj4gKyAgICBpbnQgYXVkaW9fYml0c19wZXJfc2FtcGxlLCBhdWRpb19mbG9hdCwg YXVkaW9fYmU7Cj4gKyAgICBpbnQgYXVkaW9fc2lnbmVkX2ludGVnZXIsIGF1ZGlvX3BhY2tlZCwg YXVkaW9fbm9uX2ludGVybGVhdmVkOwo+ICsgICAgaW50IG11c3RfY29udmVydCA9IDA7Cj4gCj4g ICAgIGlmICghc3RyZWFtKSB7Cj4gICAgICAgICByZXR1cm4gMTsKPiBAQCAtNjkwLDYwICs2OTEs OTUgQEAgc3RhdGljIGludCBnZXRfYXVkaW9fY29uZmlnKEFWRm9ybWF0Q29udGV4dCAqcykKPiAg ICAgYXZwcml2X3NldF9wdHNfaW5mbyhzdHJlYW0sIDY0LCAxLCBhdmZfdGltZV9iYXNlKTsKPiAK PiAgICAgZm9ybWF0X2Rlc2MgPSBDTVNhbXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9uKGN0 eC0+Y3VycmVudF9hdWRpb19mcmFtZSk7Cj4gLSAgICBjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVz Y3JpcHRpb24gKmJhc2ljX2Rlc2MgPSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRTdHJlYW1C YXNpY0Rlc2NyaXB0aW9uKGZvcm1hdF9kZXNjKTsKPiArICAgIGNvbnN0IEF1ZGlvU3RyZWFtQmFz aWNEZXNjcmlwdGlvbiAqaW5wdXRfZm9ybWF0ID0gQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uR2V0 U3RyZWFtQmFzaWNEZXNjcmlwdGlvbihmb3JtYXRfZGVzYyk7Cj4gCj4gLSAgICBpZiAoIWJhc2lj X2Rlc2MpIHsKPiArICAgIGlmICghaW5wdXRfZm9ybWF0KSB7Cj4gICAgICAgICB1bmxvY2tfZnJh bWVzKGN0eCk7Cj4gICAgICAgICBhdl9sb2cocywgQVZfTE9HX0VSUk9SLCAiYXVkaW8gZm9ybWF0 IG5vdCBhdmFpbGFibGVcbiIpOwo+ICAgICAgICAgcmV0dXJuIDE7Cj4gICAgIH0KPiAKPiArICAg IGlmIChpbnB1dF9mb3JtYXQtPm1Gb3JtYXRJRCAhPSBrQXVkaW9Gb3JtYXRMaW5lYXJQQ00pIHsK PiArICAgICAgICB1bmxvY2tfZnJhbWVzKGN0eCk7Cj4gKyAgICAgICAgYXZfbG9nKHMsIEFWX0xP R19FUlJPUiwgIm9ubHkgUENNIGF1ZGlvIGZvcm1hdCBhcmUgc3VwcG9ydGVkIGF0IHRoZSBtb21l bnRcbiIpOwo+ICsgICAgICAgIHJldHVybiAxOwo+ICsgICAgfQo+ICsKPiAgICAgc3RyZWFtLT5j b2RlY3Bhci0+Y29kZWNfdHlwZSAgICAgPSBBVk1FRElBX1RZUEVfQVVESU87Cj4gLSAgICBzdHJl YW0tPmNvZGVjcGFyLT5zYW1wbGVfcmF0ZSAgICA9IGJhc2ljX2Rlc2MtPm1TYW1wbGVSYXRlOwo+ IC0gICAgc3RyZWFtLT5jb2RlY3Bhci0+Y2hhbm5lbHMgICAgICAgPSBiYXNpY19kZXNjLT5tQ2hh bm5lbHNQZXJGcmFtZTsKPiArICAgIHN0cmVhbS0+Y29kZWNwYXItPnNhbXBsZV9yYXRlICAgID0g aW5wdXRfZm9ybWF0LT5tU2FtcGxlUmF0ZTsKPiArICAgIHN0cmVhbS0+Y29kZWNwYXItPmNoYW5u ZWxzICAgICAgID0gaW5wdXRfZm9ybWF0LT5tQ2hhbm5lbHNQZXJGcmFtZTsKPiAgICAgc3RyZWFt LT5jb2RlY3Bhci0+Y2hhbm5lbF9sYXlvdXQgPSBhdl9nZXRfZGVmYXVsdF9jaGFubmVsX2xheW91 dChzdHJlYW0tPmNvZGVjcGFyLT5jaGFubmVscyk7Cj4gCj4gLSAgICBjdHgtPmF1ZGlvX2NoYW5u ZWxzICAgICAgICA9IGJhc2ljX2Rlc2MtPm1DaGFubmVsc1BlckZyYW1lOwo+IC0gICAgY3R4LT5h dWRpb19iaXRzX3Blcl9zYW1wbGUgPSBiYXNpY19kZXNjLT5tQml0c1BlckNoYW5uZWw7Cj4gLSAg ICBjdHgtPmF1ZGlvX2Zsb2F0ICAgICAgICAgICA9IGJhc2ljX2Rlc2MtPm1Gb3JtYXRGbGFncyAm IGtBdWRpb0Zvcm1hdEZsYWdJc0Zsb2F0Owo+IC0gICAgY3R4LT5hdWRpb19iZSAgICAgICAgICAg ICAgPSBiYXNpY19kZXNjLT5tRm9ybWF0RmxhZ3MgJiBrQXVkaW9Gb3JtYXRGbGFnSXNCaWdFbmRp YW47Cj4gLSAgICBjdHgtPmF1ZGlvX3NpZ25lZF9pbnRlZ2VyICA9IGJhc2ljX2Rlc2MtPm1Gb3Jt YXRGbGFncyAmIGtBdWRpb0Zvcm1hdEZsYWdJc1NpZ25lZEludGVnZXI7Cj4gLSAgICBjdHgtPmF1 ZGlvX3BhY2tlZCAgICAgICAgICA9IGJhc2ljX2Rlc2MtPm1Gb3JtYXRGbGFncyAmIGtBdWRpb0Zv cm1hdEZsYWdJc1BhY2tlZDsKPiAtICAgIGN0eC0+YXVkaW9fbm9uX2ludGVybGVhdmVkID0gYmFz aWNfZGVzYy0+bUZvcm1hdEZsYWdzICYga0F1ZGlvRm9ybWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQ7 Cj4gLQo+IC0gICAgaWYgKGJhc2ljX2Rlc2MtPm1Gb3JtYXRJRCA9PSBrQXVkaW9Gb3JtYXRMaW5l YXJQQ00gJiYKPiAtICAgICAgICBjdHgtPmF1ZGlvX2Zsb2F0ICYmCj4gLSAgICAgICAgY3R4LT5h dWRpb19iaXRzX3Blcl9zYW1wbGUgPT0gMzIgJiYKPiAtICAgICAgICBjdHgtPmF1ZGlvX3BhY2tl ZCkgewo+IC0gICAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkID0gY3R4LT5hdWRpb19i ZSA/IEFWX0NPREVDX0lEX1BDTV9GMzJCRSA6IEFWX0NPREVDX0lEX1BDTV9GMzJMRTsKPiAtICAg IH0gZWxzZSBpZiAoYmFzaWNfZGVzYy0+bUZvcm1hdElEID09IGtBdWRpb0Zvcm1hdExpbmVhclBD TSAmJgo+IC0gICAgICAgIGN0eC0+YXVkaW9fc2lnbmVkX2ludGVnZXIgJiYKPiAtICAgICAgICBj dHgtPmF1ZGlvX2JpdHNfcGVyX3NhbXBsZSA9PSAxNiAmJgo+IC0gICAgICAgIGN0eC0+YXVkaW9f cGFja2VkKSB7Cj4gLSAgICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgPSBjdHgtPmF1 ZGlvX2JlID8gQVZfQ09ERUNfSURfUENNX1MxNkJFIDogQVZfQ09ERUNfSURfUENNX1MxNkxFOwo+ IC0gICAgfSBlbHNlIGlmIChiYXNpY19kZXNjLT5tRm9ybWF0SUQgPT0ga0F1ZGlvRm9ybWF0TGlu ZWFyUENNICYmCj4gLSAgICAgICAgY3R4LT5hdWRpb19zaWduZWRfaW50ZWdlciAmJgo+IC0gICAg ICAgIGN0eC0+YXVkaW9fYml0c19wZXJfc2FtcGxlID09IDI0ICYmCj4gLSAgICAgICAgY3R4LT5h dWRpb19wYWNrZWQpIHsKPiAtICAgICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCA9IGN0 eC0+YXVkaW9fYmUgPyBBVl9DT0RFQ19JRF9QQ01fUzI0QkUgOiBBVl9DT0RFQ19JRF9QQ01fUzI0 TEU7Cj4gLSAgICB9IGVsc2UgaWYgKGJhc2ljX2Rlc2MtPm1Gb3JtYXRJRCA9PSBrQXVkaW9Gb3Jt YXRMaW5lYXJQQ00gJiYKPiAtICAgICAgICBjdHgtPmF1ZGlvX3NpZ25lZF9pbnRlZ2VyICYmCj4g LSAgICAgICAgY3R4LT5hdWRpb19iaXRzX3Blcl9zYW1wbGUgPT0gMzIgJiYKPiAtICAgICAgICBj dHgtPmF1ZGlvX3BhY2tlZCkgewo+IC0gICAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lk ID0gY3R4LT5hdWRpb19iZSA/IEFWX0NPREVDX0lEX1BDTV9TMzJCRSA6IEFWX0NPREVDX0lEX1BD TV9TMzJMRTsKPiArICAgIGF1ZGlvX2JpdHNfcGVyX3NhbXBsZSA9IGlucHV0X2Zvcm1hdC0+bUJp dHNQZXJDaGFubmVsOwo+ICsgICAgYXVkaW9fZmxvYXQgICAgICAgICAgID0gaW5wdXRfZm9ybWF0 LT5tRm9ybWF0RmxhZ3MgJiBrQXVkaW9Gb3JtYXRGbGFnSXNGbG9hdDsKPiArICAgIGF1ZGlvX2Jl ICAgICAgICAgICAgICA9IGlucHV0X2Zvcm1hdC0+bUZvcm1hdEZsYWdzICYga0F1ZGlvRm9ybWF0 RmxhZ0lzQmlnRW5kaWFuOwo+ICsgICAgYXVkaW9fc2lnbmVkX2ludGVnZXIgID0gaW5wdXRfZm9y bWF0LT5tRm9ybWF0RmxhZ3MgJiBrQXVkaW9Gb3JtYXRGbGFnSXNTaWduZWRJbnRlZ2VyOwo+ICsg ICAgYXVkaW9fcGFja2VkICAgICAgICAgID0gaW5wdXRfZm9ybWF0LT5tRm9ybWF0RmxhZ3MgJiBr QXVkaW9Gb3JtYXRGbGFnSXNQYWNrZWQ7Cj4gKyAgICBhdWRpb19ub25faW50ZXJsZWF2ZWQgPSBp bnB1dF9mb3JtYXQtPm1Gb3JtYXRGbGFncyAmIGtBdWRpb0Zvcm1hdEZsYWdJc05vbkludGVybGVh dmVkOwo+ICsKPiArICAgIGN0eC0+Ynl0ZXNfcGVyX3NhbXBsZSA9IGlucHV0X2Zvcm1hdC0+bUJp dHNQZXJDaGFubmVsID4+IDM7Cj4gKyAgICBjdHgtPmF1ZGlvX2NoYW5uZWxzICAgPSBpbnB1dF9m b3JtYXQtPm1DaGFubmVsc1BlckZyYW1lOwo+ICsKPiArICAgIGlmIChhdWRpb19ub25faW50ZXJs ZWF2ZWQpIHsKPiArICAgICAgICBjdHgtPmF1ZGlvX2J1ZmZlcnMgPSBpbnB1dF9mb3JtYXQtPm1D aGFubmVsc1BlckZyYW1lOwo+ICAgICB9IGVsc2Ugewo+IC0gICAgICAgIHVubG9ja19mcmFtZXMo Y3R4KTsKPiAtICAgICAgICBhdl9sb2cocywgQVZfTE9HX0VSUk9SLCAiYXVkaW8gZm9ybWF0IGlz IG5vdCBzdXBwb3J0ZWRcbiIpOwo+IC0gICAgICAgIHJldHVybiAxOwo+ICsgICAgICAgIGN0eC0+ YXVkaW9fYnVmZmVycyA9IDE7Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKGF1ZGlvX25vbl9pbnRl cmxlYXZlZCB8fCAhYXVkaW9fcGFja2VkKSB7Cj4gKyAgICAgIG11c3RfY29udmVydCA9IDE7Cj4g KyAgICB9Cj4gKwo+ICsgICAgb3V0cHV0X2Zvcm1hdC5tQml0c1BlckNoYW5uZWwgICA9IGlucHV0 X2Zvcm1hdC0+bUJpdHNQZXJDaGFubmVsOwo+ICsgICAgb3V0cHV0X2Zvcm1hdC5tQ2hhbm5lbHNQ ZXJGcmFtZSA9IGN0eC0+YXVkaW9fY2hhbm5lbHM7Cj4gKyAgICBvdXRwdXRfZm9ybWF0Lm1GcmFt ZXNQZXJQYWNrZXQgID0gMTsKPiArICAgIG91dHB1dF9mb3JtYXQubUJ5dGVzUGVyRnJhbWUgICAg PSBvdXRwdXRfZm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lICogY3R4LT5ieXRlc19wZXJfc2FtcGxl Owo+ICsgICAgb3V0cHV0X2Zvcm1hdC5tQnl0ZXNQZXJQYWNrZXQgICA9IG91dHB1dF9mb3JtYXQu bUZyYW1lc1BlclBhY2tldCAqIG91dHB1dF9mb3JtYXQubUJ5dGVzUGVyRnJhbWU7Cj4gKyAgICBv dXRwdXRfZm9ybWF0Lm1Gb3JtYXRGbGFncyAgICAgID0ga0F1ZGlvRm9ybWF0RmxhZ0lzUGFja2Vk IHwgYXVkaW9fYmU7Cj4gKyAgICBvdXRwdXRfZm9ybWF0Lm1Gb3JtYXRJRCAgICAgICAgID0ga0F1 ZGlvRm9ybWF0TGluZWFyUENNOwo+ICsgICAgb3V0cHV0X2Zvcm1hdC5tUmVzZXJ2ZWQgICAgICAg ICA9IDA7Cj4gKyAgICBvdXRwdXRfZm9ybWF0Lm1TYW1wbGVSYXRlICAgICAgID0gaW5wdXRfZm9y bWF0LT5tU2FtcGxlUmF0ZTsKPiArCj4gKyAgICBpZiAoYXVkaW9fZmxvYXQgJiYKPiArICAgICAg ICBhdWRpb19iaXRzX3Blcl9zYW1wbGUgPT0gMzIpIHsKPiArICAgICAgICBzdHJlYW0tPmNvZGVj cGFyLT5jb2RlY19pZCA9IGF1ZGlvX2JlID8gQVZfQ09ERUNfSURfUENNX0YzMkJFIDogQVZfQ09E RUNfSURfUENNX0YzMkxFOwo+ICsgICAgICAgIG91dHB1dF9mb3JtYXQubUZvcm1hdEZsYWdzIHw9 IGtBdWRpb0Zvcm1hdEZsYWdJc0Zsb2F0Owo+ICsgICAgfSBlbHNlIGlmIChhdWRpb19mbG9hdCAm Jgo+ICsgICAgICAgIGF1ZGlvX2JpdHNfcGVyX3NhbXBsZSA9PSA2NCkgewo+ICsgICAgICAgIHN0 cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkID0gYXVkaW9fYmUgPyBBVl9DT0RFQ19JRF9QQ01fRjY0 QkUgOiBBVl9DT0RFQ19JRF9QQ01fRjY0TEU7Cj4gKyAgICAgICAgb3V0cHV0X2Zvcm1hdC5tRm9y bWF0RmxhZ3MgfD0ga0F1ZGlvRm9ybWF0RmxhZ0lzRmxvYXQ7Cj4gKyAgICB9IGVsc2UgaWYgKGF1 ZGlvX3NpZ25lZF9pbnRlZ2VyICYmCj4gKyAgICAgICAgYXVkaW9fYml0c19wZXJfc2FtcGxlID09 IDgpIHsKPiArICAgICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCA9IEFWX0NPREVDX0lE X1BDTV9TODsKPiArICAgICAgICBvdXRwdXRfZm9ybWF0Lm1Gb3JtYXRGbGFncyB8PSBrQXVkaW9G b3JtYXRGbGFnSXNTaWduZWRJbnRlZ2VyOwo+ICsgICAgfSBlbHNlIGlmIChhdWRpb19zaWduZWRf aW50ZWdlciAmJgo+ICsgICAgICAgIGF1ZGlvX2JpdHNfcGVyX3NhbXBsZSA9PSAxNikgewo+ICsg ICAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkID0gYXVkaW9fYmUgPyBBVl9DT0RFQ19J RF9QQ01fUzE2QkUgOiBBVl9DT0RFQ19JRF9QQ01fUzE2TEU7Cj4gKyAgICAgICAgb3V0cHV0X2Zv cm1hdC5tRm9ybWF0RmxhZ3MgfD0ga0F1ZGlvRm9ybWF0RmxhZ0lzU2lnbmVkSW50ZWdlcjsKPiAr ICAgIH0gZWxzZSBpZiAoYXVkaW9fc2lnbmVkX2ludGVnZXIgJiYKPiArICAgICAgICBhdWRpb19i aXRzX3Blcl9zYW1wbGUgPT0gMjQpIHsKPiArICAgICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2Rl Y19pZCA9IGF1ZGlvX2JlID8gQVZfQ09ERUNfSURfUENNX1MyNEJFIDogQVZfQ09ERUNfSURfUENN X1MyNExFOwo+ICsgICAgICAgIG91dHB1dF9mb3JtYXQubUZvcm1hdEZsYWdzIHw9IGtBdWRpb0Zv cm1hdEZsYWdJc1NpZ25lZEludGVnZXI7Cj4gKyAgICB9IGVsc2UgaWYgKGF1ZGlvX3NpZ25lZF9p bnRlZ2VyICYmCj4gKyAgICAgICAgYXVkaW9fYml0c19wZXJfc2FtcGxlID09IDMyKSB7Cj4gKyAg ICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgPSBhdWRpb19iZSA/IEFWX0NPREVDX0lE X1BDTV9TMzJCRSA6IEFWX0NPREVDX0lEX1BDTV9TMzJMRTsKPiArICAgICAgICBvdXRwdXRfZm9y bWF0Lm1Gb3JtYXRGbGFncyB8PSBrQXVkaW9Gb3JtYXRGbGFnSXNTaWduZWRJbnRlZ2VyOwo+ICsg ICAgfSBlbHNlIGlmIChhdWRpb19zaWduZWRfaW50ZWdlciAmJgo+ICsgICAgICAgIGF1ZGlvX2Jp dHNfcGVyX3NhbXBsZSA9PSA2NCkgewo+ICsgICAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVj X2lkID0gYXVkaW9fYmUgPyBBVl9DT0RFQ19JRF9QQ01fUzY0QkUgOiBBVl9DT0RFQ19JRF9QQ01f UzY0TEU7Cj4gKyAgICAgICAgb3V0cHV0X2Zvcm1hdC5tRm9ybWF0RmxhZ3MgfD0ga0F1ZGlvRm9y bWF0RmxhZ0lzU2lnbmVkSW50ZWdlcjsKPiArICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgc3RyZWFt LT5jb2RlY3Bhci0+Y29kZWNfaWQgPSBhdWRpb19iZSA/IEFWX0NPREVDX0lEX1BDTV9TMzJCRSA6 IEFWX0NPREVDX0lEX1BDTV9TMzJMRTsKPiArICAgICAgICBvdXRwdXRfZm9ybWF0Lm1CaXRzUGVy Q2hhbm5lbCA9IDMyOwo+ICsgICAgICAgIG91dHB1dF9mb3JtYXQubUZvcm1hdEZsYWdzIHw9IGtB dWRpb0Zvcm1hdEZsYWdJc1NpZ25lZEludGVnZXI7Cj4gKyAgICAgICAgbXVzdF9jb252ZXJ0ID0g MTsKPiAgICAgfQo+IAo+IC0gICAgaWYgKGN0eC0+YXVkaW9fbm9uX2ludGVybGVhdmVkKSB7Cj4g LSAgICAgICAgQ01CbG9ja0J1ZmZlclJlZiBibG9ja19idWZmZXIgPSBDTVNhbXBsZUJ1ZmZlckdl dERhdGFCdWZmZXIoY3R4LT5jdXJyZW50X2F1ZGlvX2ZyYW1lKTsKPiAtICAgICAgICBjdHgtPmF1 ZGlvX2J1ZmZlcl9zaXplICAgICAgICA9IENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoKGJsb2Nr X2J1ZmZlcik7Cj4gLSAgICAgICAgY3R4LT5hdWRpb19idWZmZXIgICAgICAgICAgICAgPSBhdl9t YWxsb2MoY3R4LT5hdWRpb19idWZmZXJfc2l6ZSk7Cj4gLSAgICAgICAgaWYgKCFjdHgtPmF1ZGlv X2J1ZmZlcikgewo+ICsgICAgaWYgKG11c3RfY29udmVydCkgewo+ICsgICAgICAgIE9TU3RhdHVz IHJldCA9IEF1ZGlvQ29udmVydGVyTmV3KGlucHV0X2Zvcm1hdCwgJm91dHB1dF9mb3JtYXQsICZj dHgtPmF1ZGlvX2NvbnZlcnRlcik7Cj4gKyAgICAgICAgaWYgKHJldCAhPSBub0Vycikgewo+ICAg ICAgICAgICAgIHVubG9ja19mcmFtZXMoY3R4KTsKPiAtICAgICAgICAgICAgYXZfbG9nKHMsIEFW X0xPR19FUlJPUiwgImVycm9yIGFsbG9jYXRpbmcgYXVkaW8gYnVmZmVyXG4iKTsKPiArICAgICAg ICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgIkVycm9yIHdoaWxlIGFsbG9jYXRpbmcgYXVk aW8gY29udmVydGVyXG4iKTsKPiAgICAgICAgICAgICByZXR1cm4gMTsKPiAgICAgICAgIH0KPiAg ICAgfQo+IEBAIC0xMDQ4LDYgKzEwODQsNyBAQCBzdGF0aWMgaW50IGNvcHlfY3ZwaXhlbGJ1ZmZl cihBVkZvcm1hdENvbnRleHQgKnMsCj4gCj4gc3RhdGljIGludCBhdmZfcmVhZF9wYWNrZXQoQVZG b3JtYXRDb250ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQo+IHsKPiArICAgIE9TU3RhdHVzIHJldDsK PiAgICAgQVZGQ29udGV4dCogY3R4ID0gKEFWRkNvbnRleHQqKXMtPnByaXZfZGF0YTsKPiAKPiAg ICAgZG8gewo+IEBAIC0xMDkxLDcgKzExMjgsNyBAQCBzdGF0aWMgaW50IGF2Zl9yZWFkX3BhY2tl dChBVkZvcm1hdENvbnRleHQgKnMsIEFWUGFja2V0ICpwa3QpCj4gICAgICAgICAgICAgICAgIHN0 YXR1cyA9IGNvcHlfY3ZwaXhlbGJ1ZmZlcihzLCBpbWFnZV9idWZmZXIsIHBrdCk7Cj4gICAgICAg ICAgICAgfSBlbHNlIHsKPiAgICAgICAgICAgICAgICAgc3RhdHVzID0gMDsKPiAtICAgICAgICAg ICAgICAgIE9TU3RhdHVzIHJldCA9IENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzKGJsb2NrX2J1 ZmZlciwgMCwgcGt0LT5zaXplLCBwa3QtPmRhdGEpOwo+ICsgICAgICAgICAgICAgICAgcmV0ID0g Q01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMoYmxvY2tfYnVmZmVyLCAwLCBwa3QtPnNpemUsIHBr dC0+ZGF0YSk7Cj4gICAgICAgICAgICAgICAgIGlmIChyZXQgIT0ga0NNQmxvY2tCdWZmZXJOb0Vy cikgewo+ICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gQVZFUlJPUihFSU8pOwo+ICAgICAg ICAgICAgICAgICB9Cj4gQEAgLTExMDUsODIgKzExNDIsODMgQEAgc3RhdGljIGludCBhdmZfcmVh ZF9wYWNrZXQoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQo+ICAgICAgICAgICAg IH0KPiAgICAgICAgIH0gZWxzZSBpZiAoY3R4LT5jdXJyZW50X2F1ZGlvX2ZyYW1lICE9IG5pbCkg ewo+ICAgICAgICAgICAgIENNQmxvY2tCdWZmZXJSZWYgYmxvY2tfYnVmZmVyID0gQ01TYW1wbGVC dWZmZXJHZXREYXRhQnVmZmVyKGN0eC0+Y3VycmVudF9hdWRpb19mcmFtZSk7Cj4gLSAgICAgICAg ICAgIGludCBibG9ja19idWZmZXJfc2l6ZSAgICAgICAgID0gQ01CbG9ja0J1ZmZlckdldERhdGFM ZW5ndGgoYmxvY2tfYnVmZmVyKTsKPiAKPiAtICAgICAgICAgICAgaWYgKCFibG9ja19idWZmZXIg fHwgIWJsb2NrX2J1ZmZlcl9zaXplKSB7Cj4gLSAgICAgICAgICAgICAgICB1bmxvY2tfZnJhbWVz KGN0eCk7Cj4gLSAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU8pOwo+IC0gICAgICAg ICAgICB9Cj4gKyAgICAgICAgICAgIHNpemVfdCBpbnB1dF9zaXplID0gQ01CbG9ja0J1ZmZlckdl dERhdGFMZW5ndGgoYmxvY2tfYnVmZmVyKTsKPiArICAgICAgICAgICAgaW50IGJ1ZmZlcl9zaXpl ID0gaW5wdXRfc2l6ZSAvIGN0eC0+YXVkaW9fYnVmZmVyczsKPiArICAgICAgICAgICAgaW50IG5i X3NhbXBsZXMgPSBpbnB1dF9zaXplIC8gKGN0eC0+YXVkaW9fY2hhbm5lbHMgKiBjdHgtPmJ5dGVz X3Blcl9zYW1wbGUpOwo+ICsgICAgICAgICAgICBpbnQgb3V0cHV0X3NpemUgPSBidWZmZXJfc2l6 ZTsKPiAKPiAtICAgICAgICAgICAgaWYgKGN0eC0+YXVkaW9fbm9uX2ludGVybGVhdmVkICYmIGJs b2NrX2J1ZmZlcl9zaXplID4gY3R4LT5hdWRpb19idWZmZXJfc2l6ZSkgewo+ICsgICAgICAgICAg ICBVSW50MzIgc2l6ZSA9IHNpemVvZihvdXRwdXRfc2l6ZSk7Cj4gKyAgICAgICAgICAgIHJldCA9 IEF1ZGlvQ29udmVydGVyR2V0UHJvcGVydHkoY3R4LT5hdWRpb19jb252ZXJ0ZXIsIGtBdWRpb0Nv bnZlcnRlclByb3BlcnR5Q2FsY3VsYXRlT3V0cHV0QnVmZmVyU2l6ZSwgJnNpemUsICZvdXRwdXRf c2l6ZSk7Cj4gKyAgICAgICAgICAgIGlmIChyZXQgIT0gbm9FcnIpIHsKPiAgICAgICAgICAgICAg ICAgdW5sb2NrX2ZyYW1lcyhjdHgpOwo+IC0gICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1Jf QlVGRkVSX1RPT19TTUFMTDsKPiArICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTyk7 Cj4gICAgICAgICAgICAgfQo+IAo+IC0gICAgICAgICAgICBpZiAoYXZfbmV3X3BhY2tldChwa3Qs IGJsb2NrX2J1ZmZlcl9zaXplKSA8IDApIHsKPiArICAgICAgICAgICAgaWYgKGF2X25ld19wYWNr ZXQocGt0LCBvdXRwdXRfc2l6ZSkgPCAwKSB7Cj4gICAgICAgICAgICAgICAgIHVubG9ja19mcmFt ZXMoY3R4KTsKPiAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlPKTsKPiAgICAgICAg ICAgICB9Cj4gCj4gLSAgICAgICAgICAgIENNSXRlbUNvdW50IGNvdW50Owo+IC0gICAgICAgICAg ICBDTVNhbXBsZVRpbWluZ0luZm8gdGltaW5nX2luZm87Cj4gKyAgICAgICAgICAgIGlmIChjdHgt PmF1ZGlvX2NvbnZlcnRlcikgewo+ICsgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0X2J1ZmZl cl9zaXplID0gb2Zmc2V0b2YoQXVkaW9CdWZmZXJMaXN0LCBtQnVmZmVyc1swXSkgKyAoc2l6ZW9m KEF1ZGlvQnVmZmVyKSAqIGN0eC0+YXVkaW9fYnVmZmVycyk7Cj4gKyAgICAgICAgICAgICAgICBB dWRpb0J1ZmZlckxpc3QgKmlucHV0X2J1ZmZlciA9IGF2X21hbGxvYyhpbnB1dF9idWZmZXJfc2l6 ZSk7Cj4gCj4gLSAgICAgICAgICAgIGlmIChDTVNhbXBsZUJ1ZmZlckdldE91dHB1dFNhbXBsZVRp bWluZ0luZm9BcnJheShjdHgtPmN1cnJlbnRfYXVkaW9fZnJhbWUsIDEsICZ0aW1pbmdfaW5mbywg JmNvdW50KSA9PSBub0Vycikgewo+IC0gICAgICAgICAgICAgICAgQVZSYXRpb25hbCB0aW1lYmFz ZV9xID0gYXZfbWFrZV9xKDEsIHRpbWluZ19pbmZvLnByZXNlbnRhdGlvblRpbWVTdGFtcC50aW1l c2NhbGUpOwo+IC0gICAgICAgICAgICAgICAgcGt0LT5wdHMgPSBwa3QtPmR0cyA9IGF2X3Jlc2Nh bGVfcSh0aW1pbmdfaW5mby5wcmVzZW50YXRpb25UaW1lU3RhbXAudmFsdWUsIHRpbWViYXNlX3Es IGF2Zl90aW1lX2Jhc2VfcSk7Cj4gLSAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgIGlu cHV0X2J1ZmZlci0+bU51bWJlckJ1ZmZlcnMgPSBjdHgtPmF1ZGlvX2J1ZmZlcnM7Cj4gCj4gLSAg ICAgICAgICAgIHBrdC0+c3RyZWFtX2luZGV4ICA9IGN0eC0+YXVkaW9fc3RyZWFtX2luZGV4Owo+ IC0gICAgICAgICAgICBwa3QtPmZsYWdzICAgICAgICB8PSBBVl9QS1RfRkxBR19LRVk7Cj4gKyAg ICAgICAgICAgICAgICBmb3IgKGludCBjID0gMDsgYyA8IGN0eC0+YXVkaW9fYnVmZmVyczsgYysr KSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgaW5wdXRfYnVmZmVyLT5tQnVmZmVyc1tjXS5tTnVt YmVyQ2hhbm5lbHMgPSAxOwo+IAo+IC0gICAgICAgICAgICBpZiAoY3R4LT5hdWRpb19ub25faW50 ZXJsZWF2ZWQpIHsKPiAtICAgICAgICAgICAgICAgIGludCBzYW1wbGUsIGMsIHNoaWZ0LCBudW1f c2FtcGxlczsKPiArICAgICAgICAgICAgICAgICAgICByZXQgPSBDTUJsb2NrQnVmZmVyR2V0RGF0 YVBvaW50ZXIoYmxvY2tfYnVmZmVyLCBjICogYnVmZmVyX3NpemUsIChzaXplX3QgKikmaW5wdXRf YnVmZmVyLT5tQnVmZmVyc1tjXS5tRGF0YUJ5dGVTaXplLCBOVUxMLCAodm9pZCAqKSZpbnB1dF9i dWZmZXItPm1CdWZmZXJzW2NdLm1EYXRhKTsKPiAKPiAtICAgICAgICAgICAgICAgIE9TU3RhdHVz IHJldCA9IENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzKGJsb2NrX2J1ZmZlciwgMCwgcGt0LT5z aXplLCBjdHgtPmF1ZGlvX2J1ZmZlcik7Cj4gLSAgICAgICAgICAgICAgICBpZiAocmV0ICE9IGtD TUJsb2NrQnVmZmVyTm9FcnIpIHsKPiAtICAgICAgICAgICAgICAgICAgICB1bmxvY2tfZnJhbWVz KGN0eCk7Cj4gLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlPKTsKPiArICAg ICAgICAgICAgICAgICAgICBpZiAocmV0ICE9IGtDTUJsb2NrQnVmZmVyTm9FcnIpIHsKPiArICAg ICAgICAgICAgICAgICAgICAgICAgYXZfZnJlZShpbnB1dF9idWZmZXIpOwo+ICsgICAgICAgICAg ICAgICAgICAgICAgICB1bmxvY2tfZnJhbWVzKGN0eCk7Cj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiBBVkVSUk9SKEVJTyk7Cj4gKyAgICAgICAgICAgICAgICAgICAgfQo+ICAgICAg ICAgICAgICAgICB9Cj4gCj4gLSAgICAgICAgICAgICAgICBudW1fc2FtcGxlcyA9IHBrdC0+c2l6 ZSAvIChjdHgtPmF1ZGlvX2NoYW5uZWxzICogKGN0eC0+YXVkaW9fYml0c19wZXJfc2FtcGxlID4+ IDMpKTsKPiAtCj4gLSAgICAgICAgICAgICAgICAvLyB0cmFuc2Zvcm0gZGVjb2RlZCBmcmFtZSBp bnRvIG91dHB1dCBmb3JtYXQKPiAtICAgICAgICAgICAgICAgICNkZWZpbmUgSU5URVJMRUFWRV9P VVRQVVQoYnBzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+IC0g ICAgICAgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gLSAgICAgICAgICAgICAgICAgICAgaW50 IyNicHMjI190ICoqc3JjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKPiAtICAgICAgICAgICAgICAgICAgICBpbnQjI2JwcyMjX3QgKmRlc3Q7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+IC0gICAgICAgICAg ICAgICAgICAgIHNyYyA9IGF2X21hbGxvYyhjdHgtPmF1ZGlvX2NoYW5uZWxzICogc2l6ZW9mKGlu dCMjYnBzIyNfdCopKTsgICAgICBcCj4gLSAgICAgICAgICAgICAgICAgICAgaWYgKCFzcmMpIHsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK PiAtICAgICAgICAgICAgICAgICAgICAgICAgdW5sb2NrX2ZyYW1lcyhjdHgpOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+IC0gICAgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gQVZFUlJPUihFSU8pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCj4gLSAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAo+IC0gICAgICAgICAgICAgICAgICAgIGZvciAoYyA9 IDA7IGMgPCBjdHgtPmF1ZGlvX2NoYW5uZWxzOyBjKyspIHsgICAgICAgICAgICAgICAgICAgICAg ICBcCj4gLSAgICAgICAgICAgICAgICAgICAgICAgIHNyY1tjXSA9ICgoaW50IyNicHMjI190Kilj dHgtPmF1ZGlvX2J1ZmZlcikgKyBjICogbnVtX3NhbXBsZXM7IFwKPiAtICAgICAgICAgICAgICAg ICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAo+IC0gICAgICAgICAgICAgICAgICAgIGRlc3QgID0gKGludCMjYnBz IyNfdCopcGt0LT5kYXRhOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gLSAg ICAgICAgICAgICAgICAgICAgc2hpZnQgPSBicHMgLSBjdHgtPmF1ZGlvX2JpdHNfcGVyX3NhbXBs ZTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiAtICAgICAgICAgICAgICAgICAgICBmb3Ig KHNhbXBsZSA9IDA7IHNhbXBsZSA8IG51bV9zYW1wbGVzOyBzYW1wbGUrKykgICAgICAgICAgICAg ICAgICAgXAo+IC0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGMgPSAwOyBjIDwgY3R4LT5h dWRpb19jaGFubmVsczsgYysrKSAgICAgICAgICAgICAgICAgICAgICBcCj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqZGVzdCsrID0gc3JjW2NdW3NhbXBsZV0gPDwgc2hpZnQ7ICAgICAg ICAgICAgICAgICAgICAgICAgIFwKPiAtICAgICAgICAgICAgICAgICAgICBhdl9mcmVlcCgmc3Jj KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ IC0gICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgQXVkaW9CdWZmZXJMaXN0IG91 dHB1dF9idWZmZXIgPSB7Cj4gKyAgICAgICAgICAgICAgICAgICAubU51bWJlckJ1ZmZlcnMgPSAx LAo+ICsgICAgICAgICAgICAgICAgICAgLm1CdWZmZXJzWzBdICAgID0gewo+ICsgICAgICAgICAg ICAgICAgICAgICAgIC5tTnVtYmVyQ2hhbm5lbHMgPSBjdHgtPmF1ZGlvX2NoYW5uZWxzLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgIC5tRGF0YUJ5dGVTaXplICAgPSBwa3QtPnNpemUsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgLm1EYXRhICAgICAgICAgICA9IHBrdC0+ZGF0YQo+ICsgICAg ICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgfTsKPiAKPiAtICAgICAgICAgICAg ICAgIGlmIChjdHgtPmF1ZGlvX2JpdHNfcGVyX3NhbXBsZSA8PSAxNikgewo+IC0gICAgICAgICAg ICAgICAgICAgIElOVEVSTEVBVkVfT1VUUFVUKDE2KQo+IC0gICAgICAgICAgICAgICAgfSBlbHNl IHsKPiAtICAgICAgICAgICAgICAgICAgICBJTlRFUkxFQVZFX09VVFBVVCgzMikKPiAtICAgICAg ICAgICAgICAgIH0KPiAtICAgICAgICAgICAgfSBlbHNlIHsKPiAtICAgICAgICAgICAgICAgIE9T U3RhdHVzIHJldCA9IENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzKGJsb2NrX2J1ZmZlciwgMCwg cGt0LT5zaXplLCBwa3QtPmRhdGEpOwo+IC0gICAgICAgICAgICAgICAgaWYgKHJldCAhPSBrQ01C bG9ja0J1ZmZlck5vRXJyKSB7Cj4gKyAgICAgICAgICAgICAgICByZXQgPSBBdWRpb0NvbnZlcnRl ckNvbnZlcnRDb21wbGV4QnVmZmVyKGN0eC0+YXVkaW9fY29udmVydGVyLCBuYl9zYW1wbGVzLCBp bnB1dF9idWZmZXIsICZvdXRwdXRfYnVmZmVyKTsKPiArICAgICAgICAgICAgICAgIGF2X2ZyZWUo aW5wdXRfYnVmZmVyKTsKPiArCj4gKyAgICAgICAgICAgICAgICBpZiAocmV0ICE9IG5vRXJyKSB7 Cj4gICAgICAgICAgICAgICAgICAgICB1bmxvY2tfZnJhbWVzKGN0eCk7Cj4gICAgICAgICAgICAg ICAgICAgICByZXR1cm4gQVZFUlJPUihFSU8pOwo+ICAgICAgICAgICAgICAgICB9Cj4gKwo+ICsg ICAgICAgICAgICAgICAgcGt0LT5zaXplID0gb3V0cHV0X2J1ZmZlci5tQnVmZmVyc1swXS5tRGF0 YUJ5dGVTaXplOwo+ICsgICAgICAgICAgICB9IGVsc2Ugewo+ICsgICAgICAgICAgICAgICAgIHJl dCA9IENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzKGJsb2NrX2J1ZmZlciwgMCwgcGt0LT5zaXpl LCBwa3QtPmRhdGEpOwo+ICsgICAgICAgICAgICAgICAgIGlmIChyZXQgIT0ga0NNQmxvY2tCdWZm ZXJOb0Vycikgewo+ICsgICAgICAgICAgICAgICAgICAgICB1bmxvY2tfZnJhbWVzKGN0eCk7Cj4g KyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTyk7Cj4gKyAgICAgICAgICAg ICAgICAgfQo+ICAgICAgICAgICAgIH0KPiAKPiArICAgICAgICAgICAgQ01JdGVtQ291bnQgY291 bnQ7Cj4gKyAgICAgICAgICAgIENNU2FtcGxlVGltaW5nSW5mbyB0aW1pbmdfaW5mbzsKPiArCj4g KyAgICAgICAgICAgIGlmIChDTVNhbXBsZUJ1ZmZlckdldE91dHB1dFNhbXBsZVRpbWluZ0luZm9B cnJheShjdHgtPmN1cnJlbnRfYXVkaW9fZnJhbWUsIDEsICZ0aW1pbmdfaW5mbywgJmNvdW50KSA9 PSBub0Vycikgewo+ICsgICAgICAgICAgICAgICAgQVZSYXRpb25hbCB0aW1lYmFzZV9xID0gYXZf bWFrZV9xKDEsIHRpbWluZ19pbmZvLnByZXNlbnRhdGlvblRpbWVTdGFtcC50aW1lc2NhbGUpOwo+ ICsgICAgICAgICAgICAgICAgcGt0LT5wdHMgPSBwa3QtPmR0cyA9IGF2X3Jlc2NhbGVfcSh0aW1p bmdfaW5mby5wcmVzZW50YXRpb25UaW1lU3RhbXAudmFsdWUsIHRpbWViYXNlX3EsIGF2Zl90aW1l X2Jhc2VfcSk7Cj4gKyAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICAgIHBrdC0+c3RyZWFt X2luZGV4ICA9IGN0eC0+YXVkaW9fc3RyZWFtX2luZGV4Owo+ICsgICAgICAgICAgICBwa3QtPmZs YWdzICAgICAgICB8PSBBVl9QS1RfRkxBR19LRVk7Cj4gKwo+ICAgICAgICAgICAgIENGUmVsZWFz ZShjdHgtPmN1cnJlbnRfYXVkaW9fZnJhbWUpOwo+ICAgICAgICAgICAgIGN0eC0+Y3VycmVudF9h dWRpb19mcmFtZSA9IG5pbDsKPiArCj4gKyAgICAgICAgICAgIHVubG9ja19mcmFtZXMoY3R4KTsK PiAgICAgICAgIH0gZWxzZSB7Cj4gICAgICAgICAgICAgcGt0LT5kYXRhID0gTlVMTDsKPiAgICAg ICAgICAgICB1bmxvY2tfZnJhbWVzKGN0eCk7Cj4gLS0gCj4gMi4zMi4wIChBcHBsZSBHaXQtMTMy KQo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4g ZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdAo+IGZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCj4gaHR0 cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCj4gCj4gVG8gdW5z dWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCj4gZmZtcGVnLWRldmVsLXJlcXVl c3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4KCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxp c3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlz dGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3Ig ZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vi c2NyaWJlIi4K