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 5FDE840E68 for ; Fri, 31 Dec 2021 17:44:10 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D8CDC68B058; Fri, 31 Dec 2021 19:44:08 +0200 (EET) Received: from mail-qt1-f174.google.com (mail-qt1-f174.google.com [209.85.160.174]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 57FD06808DF for ; Fri, 31 Dec 2021 19:44:02 +0200 (EET) Received: by mail-qt1-f174.google.com with SMTP id bp39so24407163qtb.6 for ; Fri, 31 Dec 2021 09:44:02 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:content-transfer-encoding:mime-version :subject:message-id:date:cc:to; bh=6yqkIE47KrD3MErtJ+9lWMKB0rcDQ5CoKTvqvhcqfmY=; b=TaJlkwxkgjNcDbxBDpKhczPHx77DiyjwcjPEMNZ7zoJjLREjv8tAqgHIl2vr0h+aFL JKsPj+DkTDLj7c5mXNgNv1SqNrNSN2/VWNcZ7vVJFVpqG94O8e/9Gsb230osOhxiY0wN MEd7Ey4kD4clhprVvFYxzw1gDYTC8FrFfb6Rh5+G3x3Bq78cC19XX5o+nWapQO8569aq B8IryYDL3GSt9jssIN79XLRBwY0TXeReIA6CQPPYGPl3zNEns+jD6zMF3kGitaJKMGXG T9YMtDEh3UI/7w9zgvSXk4wdOLRXN9afNRGuXVTN82zBlcJQzZEikzPCfmbAq+d4veoA GQ0Q== X-Gm-Message-State: AOAM530A0PR/HriF6kPvtRXU1YRZyeh+0E98/nGsQd51F+2VOkSAzQh6 FyUhPO3yp8gM76xfnxClGQq0zeZ5UEp35w== X-Google-Smtp-Source: ABdhPJwYbOJoPsqyAqg7I5jQgVKUfldOFp+A7C4vTsvMFajy0faUBEr1T6CUcSvwa3/9vtvvdJ8FAw== X-Received: by 2002:ac8:5989:: with SMTP id e9mr31362889qte.55.1640972640575; Fri, 31 Dec 2021 09:44:00 -0800 (PST) Received: from smtpclient.apple ([172.58.171.222]) by smtp.gmail.com with ESMTPSA id 137sm20043035qkm.69.2021.12.31.09.43.59 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 31 Dec 2021 09:44:00 -0800 (PST) From: Romain Beauxis Mime-Version: 1.0 (Mac OS X Mail 15.0 \(3693.40.0.1.81\)) Message-Id: Date: Fri, 31 Dec 2021 11:43:57 -0600 To: ffmpeg-devel@ffmpeg.org X-Mailer: Apple Mail (2.3693.40.0.1.81) Subject: [FFmpeg-devel] [PATCH v8 2/3] libavdevice/avfoundation.m: Replace mutex-based concurrency handling in avfoundation.m by a thread-safe fifo queue with maximum length 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 , Aman Karmani 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: KiBVc2UgYSBDTVNpbXBsZVF1ZXVlRW5xdWV1ZSB3aXRoIG1heGltdW0gbGVuZ3RoIHRvIHF1ZXVl IGFuZCBwcm9jZXNzIGluY29taW5nIGF1ZGlvIGFuZCB2aWRlbyBmcmFtZXMuCiogTG9nIGF2Zm91 bmRhdGlvbiBlcnJvcnMuCiogVXNlIEFWRVJST1JfRVhURVJOQUwgaW5zdGVhZCBvZiBBVkVSUk9S KEVJTykgaW4gYXZmb3VuZGF0aW9uIGVycm9ycy4KClNpZ25lZC1vZmYtYnk6IFJvbWFpbiBCZWF1 eGlzIDx0b290c0ByYXN0YWdlZWtzLm9yZz4K4oCUCltTb3JyeSBmb3IgdGhlIG5vaXNlIGJ1dCBh biBpc3N1ZSBjYW1lIHVwIHdpdGggdGhlIHByZXZpb3VzIHNldF0KClRoaXMgaXMgdGhlIHNlY29u ZCBwYXRjaCBvZiBhIHNlcmllcyBvZiAzIHRoYXQgZml4LCBjbGVhbnVwIGFuZCBlbmhhbmNlIHRo ZQphdmZvdW5kYXRpb24gaW1wbGVtZW50YXRpb24gZm9yIGxpYmF2ZGV2aWNlLgoKVGhlc2UgcGF0 Y2hlcyBjb21lIGZyb20gYW4gYWN0dWFsIHVzZXItZmFjaW5nIGFwcGxpY2F0aW9uIHJlbHlpbmcg b24KbGliYXZkZXZpY2XigJlzIGltcGxlbWVudGF0aW9uIG9mIGF2Zm91bmRhdGlvbiBhdWRpbyBp bnB1dC4gV2l0aG91dCB0aGVtLApBdmZvdW5kYXRpb24gaXMgcHJhY3RpY2FsbHkgdW51c2FibGUg YXMgaXQgd2lsbDoKKiBSZWZ1c2UgdG8gcHJvY2VzcyBjZXJ0YWluIHNwZWNpZmljIGF1ZGlvIGlu cHV0IGZvcm1hdCB0aGF0IGFyZSBhY3R1YWxseQpyZXR1cm5lZCBieSB0aGUgT1MgZm9yIHNvbWUg dXNlcnMgKHBhY2tlZCBQQ00gYXVkaW8pCiogRHJvcCBhdWRpbyBmcmFtZXMsIHJlc3VsdGluZyBp biBjb3JydXB0ZWQgYXVkaW8gaW5wdXQuIFRoaXMgbWlnaHQgaGF2ZSBiZWVuCnVubm90aWNlZCB3 aXRoIHZpZGVvIGZyYW1lcyBidXQgdGhpcyBtYWtlcyBhdmZvdW5kYXRpb24gZXNzZW50aWFsbHkg dW51c2FibGUKZm9yIGF1ZGlvLgoKVGhlIHBhdGNoZXMgYXJlIG5vdyBiZWluZyBpbmNsdWRlZCBp biBvdXIgcHJvZHVjdGlvbiBidWlsZCBzbyB0aGV5IGFyZSB0ZXN0ZWQKYW5kIHVzYWJsZSBpbiBw cm9kdWN0aW9uLgoKQ2hhbmdlbG9nIGZvciB0aGlzIHBhdGNoOgoqIHYyOiBOb25lCiogdjM6IE5v bmUKKiB2NDogTm9uZQoqIHY1OiBGaXggaW5kZW50YXRpb24vd3JhcHBpbmcKKiB2NjogTm9uZQoq IHY3OiBSZW1vdmVkIHVzZSBvZiBrQXVkaW9Db252ZXJ0ZXJQcm9wZXJ0eUNhbGN1bGF0ZU91dHB1 dEJ1ZmZlclNpemUKdG8gY2FsY3VsYXRlIG91dHB1dCBidWZmZXIgc2l6ZS4gVGhlIGNhbGN1bGF0 aW9uIGlzIHRyaXZpYWwgYW5kIHRoaXMgY2FsbCB3YXMgCnJhbmRvbWx5IGZhaWxpbmcgZm9yIG5v IHJlYXNvbgoqIHY4OiBGaXggbWVtb3J5IGxlYWsgd2hlbiB2aWRlbyBvciBhdWRpbyBxdWV1ZSBp cyBmdWxsCgpsaWJhdmRldmljZS9hdmZvdW5kYXRpb24ubSB8IDE5NCArKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0tCjEgZmlsZSBjaGFuZ2VkLCAxMDAgaW5zZXJ0aW9ucygrKSwg OTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliYXZkZXZpY2UvYXZmb3VuZGF0aW9uLm0g Yi9saWJhdmRldmljZS9hdmZvdW5kYXRpb24ubQppbmRleCA3MzhjZDkzMzc1Li4zNmY5ZmRjNTNk IDEwMDY0NAotLS0gYS9saWJhdmRldmljZS9hdmZvdW5kYXRpb24ubQorKysgYi9saWJhdmRldmlj ZS9hdmZvdW5kYXRpb24ubQpAQCAtMjYsNyArMjYsNyBAQAogKi8KCiNpbXBvcnQgPEFWRm91bmRh dGlvbi9BVkZvdW5kYXRpb24uaD4KLSNpbmNsdWRlIDxwdGhyZWFkLmg+CisjaW1wb3J0IDxDb3Jl TWVkaWEvQ29yZU1lZGlhLmg+CgojaW5jbHVkZSAibGliYXZ1dGlsL2NoYW5uZWxfbGF5b3V0Lmgi CiNpbmNsdWRlICJsaWJhdnV0aWwvcGl4ZGVzYy5oIgpAQCAtMzksNiArMzksMTEgQEAKI2luY2x1 ZGUgImxpYmF2dXRpbC9pbWd1dGlscy5oIgojaW5jbHVkZSAiYXZkZXZpY2UuaCIKCisjZGVmaW5l IGF2X2xvZ19hdmZvdW5kYXRpb25fZXJyb3Iocywgc3RyLCBlcnIpIFwKKyAgIGF2X2xvZyhzLCBB Vl9MT0dfRVJST1IsICJBdmZvdW5kYXRpb246ICVzLCAlc1xuIiwgc3RyLCBcCisgICAgIFtbW05T RXJyb3IgZXJyb3JXaXRoRG9tYWluOk5TT1NTdGF0dXNFcnJvckRvbWFpbiBjb2RlOmVyciB1c2Vy SW5mbzpuaWxdIGxvY2FsaXplZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5nXSBcCisgICkKKwpzdGF0 aWMgY29uc3QgaW50IGF2Zl90aW1lX2Jhc2UgPSAxMDAwMDAwOwoKc3RhdGljIGNvbnN0IEFWUmF0 aW9uYWwgYXZmX3RpbWVfYmFzZV9xID0gewpAQCAtODAsMTMgKzg1LDEyIEBACiAgICB7IEFWX1BJ WF9GTVRfTk9ORSwgMCB9Cn07CgorI2RlZmluZSBNQVhfUVVFVUVEX0ZSQU1FUyAxMAorCnR5cGVk ZWYgc3RydWN0CnsKICAgIEFWQ2xhc3MqICAgICAgICBjbGFzczsKCi0gICAgaW50ICAgICAgICAg ICAgIGZyYW1lc19jYXB0dXJlZDsKLSAgICBpbnQgICAgICAgICAgICAgYXVkaW9fZnJhbWVzX2Nh cHR1cmVkOwotICAgIHB0aHJlYWRfbXV0ZXhfdCBmcmFtZV9sb2NrOwogICAgaWQgICAgICAgICAg ICAgIGF2Zl9kZWxlZ2F0ZTsKICAgIGlkICAgICAgICAgICAgICBhdmZfYXVkaW9fZGVsZWdhdGU7 CgpAQCAtMTIyLDggKzEyNiw4IEBACiAgICBBVkNhcHR1cmVTZXNzaW9uICAgICAgICAgKmNhcHR1 cmVfc2Vzc2lvbjsKICAgIEFWQ2FwdHVyZVZpZGVvRGF0YU91dHB1dCAqdmlkZW9fb3V0cHV0Owog ICAgQVZDYXB0dXJlQXVkaW9EYXRhT3V0cHV0ICphdWRpb19vdXRwdXQ7Ci0gICAgQ01TYW1wbGVC dWZmZXJSZWYgICAgICAgICBjdXJyZW50X2ZyYW1lOwotICAgIENNU2FtcGxlQnVmZmVyUmVmICAg ICAgICAgY3VycmVudF9hdWRpb19mcmFtZTsKKyAgICBDTVNpbXBsZVF1ZXVlUmVmICAgICAgICAg IGF1ZGlvX2ZyYW1lc19xdWV1ZTsKKyAgICBDTVNpbXBsZVF1ZXVlUmVmICAgICAgICAgIHZpZGVv X2ZyYW1lc19xdWV1ZTsKCiAgICBBVkNhcHR1cmVEZXZpY2UgICAgICAgICAgKm9ic2VydmVkX2Rl dmljZTsKI2lmICFUQVJHRVRfT1NfSVBIT05FICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR VUlSRUQgPj0gMTA3MApAQCAtMTMyLDE2ICsxMzYsNiBAQAogICAgaW50ICAgICAgICAgICAgICAg ICAgICAgIG9ic2VydmVkX3F1aXQ7Cn0gQVZGQ29udGV4dDsKCi1zdGF0aWMgdm9pZCBsb2NrX2Zy YW1lcyhBVkZDb250ZXh0KiBjdHgpCi17Ci0gICAgcHRocmVhZF9tdXRleF9sb2NrKCZjdHgtPmZy YW1lX2xvY2spOwotfQotCi1zdGF0aWMgdm9pZCB1bmxvY2tfZnJhbWVzKEFWRkNvbnRleHQqIGN0 eCkKLXsKLSAgICBwdGhyZWFkX211dGV4X3VubG9jaygmY3R4LT5mcmFtZV9sb2NrKTsKLX0KLQov KiogRnJhbWVSZWNpZXZlciBjbGFzcyAtIGRlbGVnYXRlIGZvciBBVkNhcHR1cmVTZXNzaW9uCiAq LwpAaW50ZXJmYWNlIEFWRkZyYW1lUmVjZWl2ZXIgOiBOU09iamVjdApAQCAtMjE5LDE3ICsyMTMs MTMgQEAgLSAodm9pZCkgIGNhcHR1cmVPdXRwdXQ6KEFWQ2FwdHVyZU91dHB1dCAqKWNhcHR1cmVP dXRwdXQKICBkaWRPdXRwdXRTYW1wbGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKXZpZGVvRnJh bWUKICAgICAgICAgZnJvbUNvbm5lY3Rpb246KEFWQ2FwdHVyZUNvbm5lY3Rpb24gKiljb25uZWN0 aW9uCnsKLSAgICBsb2NrX2ZyYW1lcyhfY29udGV4dCk7CisgICAgT1NTdGF0dXMgcmV0ID0gQ01T aW1wbGVRdWV1ZUVucXVldWUoX2NvbnRleHQtPnZpZGVvX2ZyYW1lc19xdWV1ZSwgdmlkZW9GcmFt ZSk7CgotICAgIGlmIChfY29udGV4dC0+Y3VycmVudF9mcmFtZSAhPSBuaWwpIHsKLSAgICAgICAg Q0ZSZWxlYXNlKF9jb250ZXh0LT5jdXJyZW50X2ZyYW1lKTsKKyAgICBpZiAocmV0ICE9IG5vRXJy KSB7CisgICAgICBhdl9sb2dfYXZmb3VuZGF0aW9uX2Vycm9yKF9jb250ZXh0LCAiRXJyb3Igd2hp bGUgcXVldWVpbmcgdmlkZW8gZnJhbWUiLCByZXQpOwogICAgfQoKLSAgICBfY29udGV4dC0+Y3Vy cmVudF9mcmFtZSA9IChDTVNhbXBsZUJ1ZmZlclJlZilDRlJldGFpbih2aWRlb0ZyYW1lKTsKLQot ICAgIHVubG9ja19mcmFtZXMoX2NvbnRleHQpOwotCi0gICAgKytfY29udGV4dC0+ZnJhbWVzX2Nh cHR1cmVkOworICAgIENGUmV0YWluKHZpZGVvRnJhbWUpOwp9CgpAZW5kCkBAIC0yNjMsMTcgKzI1 MywxMyBAQCAtICh2b2lkKSAgY2FwdHVyZU91dHB1dDooQVZDYXB0dXJlT3V0cHV0ICopY2FwdHVy ZU91dHB1dAogIGRpZE91dHB1dFNhbXBsZUJ1ZmZlcjooQ01TYW1wbGVCdWZmZXJSZWYpYXVkaW9G cmFtZQogICAgICAgICBmcm9tQ29ubmVjdGlvbjooQVZDYXB0dXJlQ29ubmVjdGlvbiAqKWNvbm5l Y3Rpb24KewotICAgIGxvY2tfZnJhbWVzKF9jb250ZXh0KTsKKyAgICBPU1N0YXR1cyByZXQgPSBD TVNpbXBsZVF1ZXVlRW5xdWV1ZShfY29udGV4dC0+YXVkaW9fZnJhbWVzX3F1ZXVlLCBhdWRpb0Zy YW1lKTsKCi0gICAgaWYgKF9jb250ZXh0LT5jdXJyZW50X2F1ZGlvX2ZyYW1lICE9IG5pbCkgewot ICAgICAgICBDRlJlbGVhc2UoX2NvbnRleHQtPmN1cnJlbnRfYXVkaW9fZnJhbWUpOworICAgIGlm IChyZXQgIT0gbm9FcnIpIHsKKyAgICAgIGF2X2xvZ19hdmZvdW5kYXRpb25fZXJyb3IoX2NvbnRl eHQsICJFcnJvciB3aGlsZSBxdWV1ZWluZyBhdWRpbyBmcmFtZSIsIHJldCk7CiAgICB9CgotICAg IF9jb250ZXh0LT5jdXJyZW50X2F1ZGlvX2ZyYW1lID0gKENNU2FtcGxlQnVmZmVyUmVmKUNGUmV0 YWluKGF1ZGlvRnJhbWUpOwotCi0gICAgdW5sb2NrX2ZyYW1lcyhfY29udGV4dCk7Ci0KLSAgICAr K19jb250ZXh0LT5hdWRpb19mcmFtZXNfY2FwdHVyZWQ7CisgICAgQ0ZSZXRhaW4oYXVkaW9GcmFt ZSk7Cn0KCkBlbmQKQEAgLTI4OCw2ICsyNzQsMzAgQEAgc3RhdGljIHZvaWQgZGVzdHJveV9jb250 ZXh0KEFWRkNvbnRleHQqIGN0eCkKICAgIFtjdHgtPmF2Zl9kZWxlZ2F0ZSAgICByZWxlYXNlXTsK ICAgIFtjdHgtPmF2Zl9hdWRpb19kZWxlZ2F0ZSByZWxlYXNlXTsKCisgICAgQ01TYW1wbGVCdWZm ZXJSZWYgZnJhbWU7CisKKyAgICBpZiAoY3R4LT52aWRlb19mcmFtZXNfcXVldWUpIHsKKyAgICAg ICAgZnJhbWUgPSAoQ01TYW1wbGVCdWZmZXJSZWYpQ01TaW1wbGVRdWV1ZURlcXVldWUoY3R4LT52 aWRlb19mcmFtZXNfcXVldWUpOworICAgICAgICB3aGlsZSAoZnJhbWUpIHsKKyAgICAgICAgICBD RlJlbGVhc2UoZnJhbWUpOworICAgICAgICAgIGZyYW1lID0gKENNU2FtcGxlQnVmZmVyUmVmKUNN U2ltcGxlUXVldWVEZXF1ZXVlKGN0eC0+dmlkZW9fZnJhbWVzX3F1ZXVlKTsKKyAgICAgICAgfQor CisgICAgICAgIENGUmVsZWFzZShjdHgtPnZpZGVvX2ZyYW1lc19xdWV1ZSk7CisgICAgICAgIGN0 eC0+dmlkZW9fZnJhbWVzX3F1ZXVlID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoY3R4LT5hdWRp b19mcmFtZXNfcXVldWUpIHsKKyAgICAgICAgZnJhbWUgPSAoQ01TYW1wbGVCdWZmZXJSZWYpQ01T aW1wbGVRdWV1ZURlcXVldWUoY3R4LT5hdWRpb19mcmFtZXNfcXVldWUpOworICAgICAgICB3aGls ZSAoZnJhbWUpIHsKKyAgICAgICAgICBDRlJlbGVhc2UoZnJhbWUpOworICAgICAgICAgIGZyYW1l ID0gKENNU2FtcGxlQnVmZmVyUmVmKUNNU2ltcGxlUXVldWVEZXF1ZXVlKGN0eC0+YXVkaW9fZnJh bWVzX3F1ZXVlKTsKKyAgICAgICAgfQorCisgICAgICAgIENGUmVsZWFzZShjdHgtPmF1ZGlvX2Zy YW1lc19xdWV1ZSk7CisgICAgICAgIGN0eC0+YXVkaW9fZnJhbWVzX3F1ZXVlID0gTlVMTDsKKyAg ICB9CisKICAgIGN0eC0+Y2FwdHVyZV9zZXNzaW9uID0gTlVMTDsKICAgIGN0eC0+dmlkZW9fb3V0 cHV0ICAgID0gTlVMTDsKICAgIGN0eC0+YXVkaW9fb3V0cHV0ICAgID0gTlVMTDsKQEAgLTI5OCwx MiArMzA4LDYgQEAgc3RhdGljIHZvaWQgZGVzdHJveV9jb250ZXh0KEFWRkNvbnRleHQqIGN0eCkK ICAgICAgQXVkaW9Db252ZXJ0ZXJEaXNwb3NlKGN0eC0+YXVkaW9fY29udmVydGVyKTsKICAgICAg Y3R4LT5hdWRpb19jb252ZXJ0ZXIgPSBOVUxMOwogICAgfQotCi0gICAgcHRocmVhZF9tdXRleF9k ZXN0cm95KCZjdHgtPmZyYW1lX2xvY2spOwotCi0gICAgaWYgKGN0eC0+Y3VycmVudF9mcmFtZSkg ewotICAgICAgICBDRlJlbGVhc2UoY3R4LT5jdXJyZW50X2ZyYW1lKTsKLSAgICB9Cn0KCnN0YXRp YyB2b2lkIHBhcnNlX2RldmljZV9uYW1lKEFWRm9ybWF0Q29udGV4dCAqcykKQEAgLTYzMSwxOCAr NjM1LDE4IEBAIHN0YXRpYyBpbnQgZ2V0X3ZpZGVvX2NvbmZpZyhBVkZvcm1hdENvbnRleHQgKnMp CiAgICB9CgogICAgLy8gVGFrZSBzdHJlYW0gaW5mbyBmcm9tIHRoZSBmaXJzdCBmcmFtZS4KLSAg ICB3aGlsZSAoY3R4LT5mcmFtZXNfY2FwdHVyZWQgPCAxKSB7CisgICAgd2hpbGUgKENNU2ltcGxl UXVldWVHZXRDb3VudChjdHgtPnZpZGVvX2ZyYW1lc19xdWV1ZSkgPCAxKSB7CiAgICAgICAgQ0ZS dW5Mb29wUnVuSW5Nb2RlKGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSwgMC4xLCBZRVMpOwogICAgfQoK LSAgICBsb2NrX2ZyYW1lcyhjdHgpOworICAgIENNU2FtcGxlQnVmZmVyUmVmIGZyYW1lID0gKENN U2FtcGxlQnVmZmVyUmVmKUNNU2ltcGxlUXVldWVEZXF1ZXVlKGN0eC0+dmlkZW9fZnJhbWVzX3F1 ZXVlKTsKCiAgICBjdHgtPnZpZGVvX3N0cmVhbV9pbmRleCA9IHN0cmVhbS0+aW5kZXg7CgogICAg YXZwcml2X3NldF9wdHNfaW5mbyhzdHJlYW0sIDY0LCAxLCBhdmZfdGltZV9iYXNlKTsKCi0gICAg aW1hZ2VfYnVmZmVyID0gQ01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlcihjdHgtPmN1cnJlbnRf ZnJhbWUpOwotICAgIGJsb2NrX2J1ZmZlciA9IENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlcihj dHgtPmN1cnJlbnRfZnJhbWUpOworICAgIGltYWdlX2J1ZmZlciA9IENNU2FtcGxlQnVmZmVyR2V0 SW1hZ2VCdWZmZXIoZnJhbWUpOworICAgIGJsb2NrX2J1ZmZlciA9IENNU2FtcGxlQnVmZmVyR2V0 RGF0YUJ1ZmZlcihmcmFtZSk7CgogICAgaWYgKGltYWdlX2J1ZmZlcikgewogICAgICAgIGltYWdl X2J1ZmZlcl9zaXplID0gQ1ZJbWFnZUJ1ZmZlckdldEVuY29kZWRTaXplKGltYWdlX2J1ZmZlcik7 CkBAIC02NTgsMTAgKzY2Miw3IEBAIHN0YXRpYyBpbnQgZ2V0X3ZpZGVvX2NvbmZpZyhBVkZvcm1h dENvbnRleHQgKnMpCiAgICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Zm9ybWF0ICAgICA9IGN0eC0+ cGl4ZWxfZm9ybWF0OwogICAgfQoKLSAgICBDRlJlbGVhc2UoY3R4LT5jdXJyZW50X2ZyYW1lKTsK LSAgICBjdHgtPmN1cnJlbnRfZnJhbWUgPSBuaWw7Ci0KLSAgICB1bmxvY2tfZnJhbWVzKGN0eCk7 CisgICAgQ0ZSZWxlYXNlKGZyYW1lKTsKCiAgICByZXR1cm4gMDsKfQpAQCAtNjgxLDI3ICs2ODIs MjcgQEAgc3RhdGljIGludCBnZXRfYXVkaW9fY29uZmlnKEFWRm9ybWF0Q29udGV4dCAqcykKICAg IH0KCiAgICAvLyBUYWtlIHN0cmVhbSBpbmZvIGZyb20gdGhlIGZpcnN0IGZyYW1lLgotICAgIHdo aWxlIChjdHgtPmF1ZGlvX2ZyYW1lc19jYXB0dXJlZCA8IDEpIHsKKyAgICB3aGlsZSAoQ01TaW1w bGVRdWV1ZUdldENvdW50KGN0eC0+YXVkaW9fZnJhbWVzX3F1ZXVlKSA8IDEpIHsKICAgICAgICBD RlJ1bkxvb3BSdW5Jbk1vZGUoa0NGUnVuTG9vcERlZmF1bHRNb2RlLCAwLjEsIFlFUyk7CiAgICB9 CgotICAgIGxvY2tfZnJhbWVzKGN0eCk7CisgICAgQ01TYW1wbGVCdWZmZXJSZWYgZnJhbWUgPSAo Q01TYW1wbGVCdWZmZXJSZWYpQ01TaW1wbGVRdWV1ZURlcXVldWUoY3R4LT5hdWRpb19mcmFtZXNf cXVldWUpOwoKICAgIGN0eC0+YXVkaW9fc3RyZWFtX2luZGV4ID0gc3RyZWFtLT5pbmRleDsKCiAg ICBhdnByaXZfc2V0X3B0c19pbmZvKHN0cmVhbSwgNjQsIDEsIGF2Zl90aW1lX2Jhc2UpOwoKLSAg ICBmb3JtYXRfZGVzYyA9IENNU2FtcGxlQnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24oY3R4LT5j dXJyZW50X2F1ZGlvX2ZyYW1lKTsKKyAgICBmb3JtYXRfZGVzYyA9IENNU2FtcGxlQnVmZmVyR2V0 Rm9ybWF0RGVzY3JpcHRpb24oZnJhbWUpOwogICAgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2Ny aXB0aW9uICppbnB1dF9mb3JtYXQgPSBDTUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25HZXRTdHJlYW1C YXNpY0Rlc2NyaXB0aW9uKGZvcm1hdF9kZXNjKTsKCiAgICBpZiAoIWlucHV0X2Zvcm1hdCkgewot ICAgICAgICB1bmxvY2tfZnJhbWVzKGN0eCk7CisgICAgICAgIENGUmVsZWFzZShmcmFtZSk7CiAg ICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgImF1ZGlvIGZvcm1hdCBub3QgYXZhaWxhYmxl XG4iKTsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBpZiAoaW5wdXRfZm9ybWF0LT5tRm9y bWF0SUQgIT0ga0F1ZGlvRm9ybWF0TGluZWFyUENNKSB7Ci0gICAgICAgIHVubG9ja19mcmFtZXMo Y3R4KTsKKyAgICAgICAgQ0ZSZWxlYXNlKGZyYW1lKTsKICAgICAgICBhdl9sb2cocywgQVZfTE9H X0VSUk9SLCAib25seSBQQ00gYXVkaW8gZm9ybWF0IGFyZSBzdXBwb3J0ZWQgYXQgdGhlIG1vbWVu dFxuIik7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CkBAIC03ODEsMTYgKzc4MiwxMyBAQCBzdGF0 aWMgaW50IGdldF9hdWRpb19jb25maWcoQVZGb3JtYXRDb250ZXh0ICpzKQogICAgaWYgKG11c3Rf Y29udmVydCkgewogICAgICAgIE9TU3RhdHVzIHJldCA9IEF1ZGlvQ29udmVydGVyTmV3KGlucHV0 X2Zvcm1hdCwgJm91dHB1dF9mb3JtYXQsICZjdHgtPmF1ZGlvX2NvbnZlcnRlcik7CiAgICAgICAg aWYgKHJldCAhPSBub0VycikgewotICAgICAgICAgICAgdW5sb2NrX2ZyYW1lcyhjdHgpOwotICAg ICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgIkVycm9yIHdoaWxlIGFsbG9jYXRpbmcg YXVkaW8gY29udmVydGVyXG4iKTsKKyAgICAgICAgICAgIENGUmVsZWFzZShmcmFtZSk7CisgICAg ICAgICAgICBhdl9sb2dfYXZmb3VuZGF0aW9uX2Vycm9yKHMsICJlcnJvciB3aGlsZSBjcmVhdGlu ZyBhdWRpbyBjb252ZXJ0ZXIiLCByZXQpOwogICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9 CiAgICB9CgotICAgIENGUmVsZWFzZShjdHgtPmN1cnJlbnRfYXVkaW9fZnJhbWUpOwotICAgIGN0 eC0+Y3VycmVudF9hdWRpb19mcmFtZSA9IG5pbDsKLQotICAgIHVubG9ja19mcmFtZXMoY3R4KTsK KyAgICBDRlJlbGVhc2UoZnJhbWUpOwoKICAgIHJldHVybiAwOwp9CkBAIC04MDgsOCArODA2LDYg QEAgc3RhdGljIGludCBhdmZfcmVhZF9oZWFkZXIoQVZGb3JtYXRDb250ZXh0ICpzKQoKICAgIGN0 eC0+bnVtX3ZpZGVvX2RldmljZXMgPSBbZGV2aWNlcyBjb3VudF0gKyBbZGV2aWNlc19tdXhlZCBj b3VudF07CgotICAgIHB0aHJlYWRfbXV0ZXhfaW5pdCgmY3R4LT5mcmFtZV9sb2NrLCBOVUxMKTsK LQojaWYgIVRBUkdFVF9PU19JUEhPTkUgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF RCA+PSAxMDcwCiAgICBDR0dldEFjdGl2ZURpc3BsYXlMaXN0KDAsIE5VTEwsICZudW1fc2NyZWVu cyk7CiNlbmRpZgpAQCAtMTAxMCw2ICsxMDA2LDIxIEBAIHN0YXRpYyBpbnQgYXZmX3JlYWRfaGVh ZGVyKEFWRm9ybWF0Q29udGV4dCAqcykKICAgIC8vIEluaXRpYWxpemUgY2FwdHVyZSBzZXNzaW9u CiAgICBjdHgtPmNhcHR1cmVfc2Vzc2lvbiA9IFtbQVZDYXB0dXJlU2Vzc2lvbiBhbGxvY10gaW5p dF07CgorICAgIE9TU3RhdHVzIHJldDsKKyAgICByZXQgPSBDTVNpbXBsZVF1ZXVlQ3JlYXRlKGtD RkFsbG9jYXRvckRlZmF1bHQsIE1BWF9RVUVVRURfRlJBTUVTLCAmY3R4LT52aWRlb19mcmFtZXNf cXVldWUpOworCisgICAgaWYgKHJldCAhPSBub0VycikgeworICAgICAgICBhdl9sb2dfYXZmb3Vu ZGF0aW9uX2Vycm9yKHMsICJlcnJvciB3aGlsZSBjcmVhdGluZyBmcmFtZSBxdWV1ZSIsIHJldCk7 CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICByZXQgPSBDTVNpbXBsZVF1ZXVlQ3Jl YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIE1BWF9RVUVVRURfRlJBTUVTLCAmY3R4LT5hdWRpb19m cmFtZXNfcXVldWUpOworCisgICAgaWYgKHJldCAhPSBub0VycikgeworICAgICAgICBhdl9sb2df YXZmb3VuZGF0aW9uX2Vycm9yKHMsICJlcnJvciB3aGlsZSBjcmVhdGluZyBmcmFtZSBxdWV1ZSIs IHJldCk7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKICAgIGlmICh2aWRlb19kZXZpY2Ug JiYgYWRkX3ZpZGVvX2RldmljZShzLCB2aWRlb19kZXZpY2UpKSB7CiAgICAgICAgZ290byBmYWls OwogICAgfQpAQCAtMTAzOSw3ICsxMDUwLDggQEAgc3RhdGljIGludCBhdmZfcmVhZF9oZWFkZXIo QVZGb3JtYXRDb250ZXh0ICpzKQpmYWlsOgogICAgW3Bvb2wgcmVsZWFzZV07CiAgICBkZXN0cm95 X2NvbnRleHQoY3R4KTsKLSAgICByZXR1cm4gQVZFUlJPUihFSU8pOworICAgIGF2X2xvZyhzLCBB Vl9MT0dfRVJST1IsICJFcnJvciB3aGlsZSBvcGVuaW5nIEFWZm91bmRhdGlvbiBjYXB0dXJlIHNl c3Npb25cbiIpOworICAgIHJldHVybiBBVkVSUk9SX0VYVEVSTkFMOwp9CgpzdGF0aWMgaW50IGNv cHlfY3ZwaXhlbGJ1ZmZlcihBVkZvcm1hdENvbnRleHQgKnMsCkBAIC0xMDg4LDM4ICsxMTAwLDM1 IEBAIHN0YXRpYyBpbnQgY29weV9jdnBpeGVsYnVmZmVyKEFWRm9ybWF0Q29udGV4dCAqcywKc3Rh dGljIGludCBhdmZfcmVhZF9wYWNrZXQoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlBhY2tldCAqcGt0 KQp7CiAgICBPU1N0YXR1cyByZXQ7CisgICAgaW50IHN0YXR1czsKICAgIEFWRkNvbnRleHQqIGN0 eCA9IChBVkZDb250ZXh0KilzLT5wcml2X2RhdGE7CgogICAgZG8gewotICAgICAgICBDVkltYWdl QnVmZmVyUmVmIGltYWdlX2J1ZmZlcjsKLSAgICAgICAgQ01CbG9ja0J1ZmZlclJlZiBibG9ja19i dWZmZXI7Ci0gICAgICAgIGxvY2tfZnJhbWVzKGN0eCk7Ci0KLSAgICAgICAgaWYgKGN0eC0+Y3Vy cmVudF9mcmFtZSAhPSBuaWwpIHsKLSAgICAgICAgICAgIGludCBzdGF0dXM7CisgICAgICAgIGlm ICgxIDw9IENNU2ltcGxlUXVldWVHZXRDb3VudChjdHgtPnZpZGVvX2ZyYW1lc19xdWV1ZSkpIHsK ICAgICAgICAgICAgaW50IGxlbmd0aCA9IDA7Ci0KLSAgICAgICAgICAgIGltYWdlX2J1ZmZlciA9 IENNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIoY3R4LT5jdXJyZW50X2ZyYW1lKTsKLSAgICAg ICAgICAgIGJsb2NrX2J1ZmZlciA9IENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlcihjdHgtPmN1 cnJlbnRfZnJhbWUpOworICAgICAgICAgICAgQ01TYW1wbGVCdWZmZXJSZWYgdmlkZW9fZnJhbWUg PSAoQ01TYW1wbGVCdWZmZXJSZWYpQ01TaW1wbGVRdWV1ZURlcXVldWUoY3R4LT52aWRlb19mcmFt ZXNfcXVldWUpOworICAgICAgICAgICAgQ1ZJbWFnZUJ1ZmZlclJlZiBpbWFnZV9idWZmZXIgPSBD TVNhbXBsZUJ1ZmZlckdldEltYWdlQnVmZmVyKHZpZGVvX2ZyYW1lKTs7CisgICAgICAgICAgICBD TUJsb2NrQnVmZmVyUmVmIGJsb2NrX2J1ZmZlciA9IENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZl cih2aWRlb19mcmFtZSk7CgogICAgICAgICAgICBpZiAoaW1hZ2VfYnVmZmVyICE9IG5pbCkgewog ICAgICAgICAgICAgICAgbGVuZ3RoID0gKGludClDVlBpeGVsQnVmZmVyR2V0RGF0YVNpemUoaW1h Z2VfYnVmZmVyKTsKICAgICAgICAgICAgfSBlbHNlIGlmIChibG9ja19idWZmZXIgIT0gbmlsKSB7 CiAgICAgICAgICAgICAgICBsZW5ndGggPSAoaW50KUNNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3Ro KGJsb2NrX2J1ZmZlcik7CiAgICAgICAgICAgIH0gZWxzZSAgewotICAgICAgICAgICAgICAgIHVu bG9ja19mcmFtZXMoY3R4KTsKKyAgICAgICAgICAgICAgICBDRlJlbGVhc2UodmlkZW9fZnJhbWUp OwogICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKICAgICAgICAgICAgfQoK LSAgICAgICAgICAgIGlmIChhdl9uZXdfcGFja2V0KHBrdCwgbGVuZ3RoKSA8IDApIHsKLSAgICAg ICAgICAgICAgICB1bmxvY2tfZnJhbWVzKGN0eCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEFW RVJST1IoRUlPKTsKKyAgICAgICAgICAgIHN0YXR1cyA9IGF2X25ld19wYWNrZXQocGt0LCBsZW5n dGgpOworICAgICAgICAgICAgaWYgKHN0YXR1cyA8IDApIHsKKyAgICAgICAgICAgICAgICBDRlJl bGVhc2UodmlkZW9fZnJhbWUpOworICAgICAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CiAgICAg ICAgICAgIH0KCiAgICAgICAgICAgIENNSXRlbUNvdW50IGNvdW50OwogICAgICAgICAgICBDTVNh bXBsZVRpbWluZ0luZm8gdGltaW5nX2luZm87CgotICAgICAgICAgICAgaWYgKENNU2FtcGxlQnVm ZmVyR2V0T3V0cHV0U2FtcGxlVGltaW5nSW5mb0FycmF5KGN0eC0+Y3VycmVudF9mcmFtZSwgMSwg JnRpbWluZ19pbmZvLCAmY291bnQpID09IG5vRXJyKSB7CisgICAgICAgICAgICBpZiAoQ01TYW1w bGVCdWZmZXJHZXRPdXRwdXRTYW1wbGVUaW1pbmdJbmZvQXJyYXkodmlkZW9fZnJhbWUsIDEsICZ0 aW1pbmdfaW5mbywgJmNvdW50KSA9PSBub0VycikgewogICAgICAgICAgICAgICAgQVZSYXRpb25h bCB0aW1lYmFzZV9xID0gYXZfbWFrZV9xKDEsIHRpbWluZ19pbmZvLnByZXNlbnRhdGlvblRpbWVT dGFtcC50aW1lc2NhbGUpOwogICAgICAgICAgICAgICAgcGt0LT5wdHMgPSBwa3QtPmR0cyA9IGF2 X3Jlc2NhbGVfcSh0aW1pbmdfaW5mby5wcmVzZW50YXRpb25UaW1lU3RhbXAudmFsdWUsIHRpbWVi YXNlX3EsIGF2Zl90aW1lX2Jhc2VfcSk7CiAgICAgICAgICAgIH0KQEAgLTExMzMsMTggKzExNDIs MTggQEAgc3RhdGljIGludCBhdmZfcmVhZF9wYWNrZXQoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlBh Y2tldCAqcGt0KQogICAgICAgICAgICAgICAgc3RhdHVzID0gMDsKICAgICAgICAgICAgICAgIHJl dCA9IENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzKGJsb2NrX2J1ZmZlciwgMCwgcGt0LT5zaXpl LCBwa3QtPmRhdGEpOwogICAgICAgICAgICAgICAgaWYgKHJldCAhPSBrQ01CbG9ja0J1ZmZlck5v RXJyKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IEFWRVJST1IoRUlPKTsKKyAgICAg ICAgICAgICAgICAgICAgYXZfbG9nX2F2Zm91bmRhdGlvbl9lcnJvcihzLCAiZXJyb3Igd2hpbGUg Y29weWluZyBidWZmZXIgZGF0YSIsIHJldCk7CisgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9 IEFWRVJST1JfRVhURVJOQUw7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAg ICAgICAgICBDRlJlbGVhc2UoY3R4LT5jdXJyZW50X2ZyYW1lKTsKLSAgICAgICAgICAgIGN0eC0+ Y3VycmVudF9mcmFtZSA9IG5pbDsKKyAgICAgICAgICAgIENGUmVsZWFzZSh2aWRlb19mcmFtZSk7 CgogICAgICAgICAgICBpZiAoc3RhdHVzIDwgMCkgewotICAgICAgICAgICAgICAgIHVubG9ja19m cmFtZXMoY3R4KTsKICAgICAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CiAgICAgICAgICAgIH0K LSAgICAgICAgfSBlbHNlIGlmIChjdHgtPmN1cnJlbnRfYXVkaW9fZnJhbWUgIT0gbmlsKSB7Ci0g ICAgICAgICAgICBDTUJsb2NrQnVmZmVyUmVmIGJsb2NrX2J1ZmZlciA9IENNU2FtcGxlQnVmZmVy R2V0RGF0YUJ1ZmZlcihjdHgtPmN1cnJlbnRfYXVkaW9fZnJhbWUpOworICAgICAgICB9IGVsc2Ug aWYgKDEgPD0gQ01TaW1wbGVRdWV1ZUdldENvdW50KGN0eC0+YXVkaW9fZnJhbWVzX3F1ZXVlKSkg eworICAgICAgICAgICAgQ01TYW1wbGVCdWZmZXJSZWYgYXVkaW9fZnJhbWUgPSAoQ01TYW1wbGVC dWZmZXJSZWYpQ01TaW1wbGVRdWV1ZURlcXVldWUoY3R4LT5hdWRpb19mcmFtZXNfcXVldWUpOwor ICAgICAgICAgICAgQ01CbG9ja0J1ZmZlclJlZiBibG9ja19idWZmZXIgPSBDTVNhbXBsZUJ1ZmZl ckdldERhdGFCdWZmZXIoYXVkaW9fZnJhbWUpOwoKICAgICAgICAgICAgc2l6ZV90IGlucHV0X3Np emUgPSBDTUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aChibG9ja19idWZmZXIpOwogICAgICAgICAg ICBpbnQgYnVmZmVyX3NpemUgPSBpbnB1dF9zaXplIC8gY3R4LT5hdWRpb19idWZmZXJzOwpAQCAt MTE3MCw4ICsxMTc5LDkgQEAgc3RhdGljIGludCBhdmZfcmVhZF9wYWNrZXQoQVZGb3JtYXRDb250 ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQoKICAgICAgICAgICAgICAgICAgICBpZiAocmV0ICE9IGtD TUJsb2NrQnVmZmVyTm9FcnIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYXZfZnJlZShpbnB1 dF9idWZmZXIpOwotICAgICAgICAgICAgICAgICAgICAgICAgdW5sb2NrX2ZyYW1lcyhjdHgpOwot ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlPKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgIENGUmVsZWFzZShhdWRpb19mcmFtZSk7CisgICAgICAgICAgICAgICAgICAg ICAgICBhdl9sb2dfYXZmb3VuZGF0aW9uX2Vycm9yKHMsICJlcnJvciB3aGlsZSBhY2Nlc3Npbmcg YXVkaW8gYnVmZmVyIGRhdGEiLCByZXQpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IEFWRVJST1JfRVhURVJOQUw7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg fQoKQEAgLTExODgsMjMgKzExOTgsMjUgQEAgc3RhdGljIGludCBhdmZfcmVhZF9wYWNrZXQoQVZG b3JtYXRDb250ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQogICAgICAgICAgICAgICAgYXZfZnJlZShp bnB1dF9idWZmZXIpOwoKICAgICAgICAgICAgICAgIGlmIChyZXQgIT0gbm9FcnIpIHsKLSAgICAg ICAgICAgICAgICAgICAgdW5sb2NrX2ZyYW1lcyhjdHgpOwotICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gQVZFUlJPUihFSU8pOworICAgICAgICAgICAgICAgICAgICBDRlJlbGVhc2UoYXVkaW9f ZnJhbWUpOworICAgICAgICAgICAgICAgICAgICBhdl9sb2dfYXZmb3VuZGF0aW9uX2Vycm9yKHMs ICJlcnJvciB3aGlsZSBjb252ZXJ0aW5nIGF1ZGlvIGRhdGEiLCByZXQpOworICAgICAgICAgICAg ICAgICAgICByZXR1cm4gQVZFUlJPUl9FWFRFUk5BTDsKICAgICAgICAgICAgICAgIH0KCiAgICAg ICAgICAgICAgICBwa3QtPnNpemUgPSBvdXRwdXRfYnVmZmVyLm1CdWZmZXJzWzBdLm1EYXRhQnl0 ZVNpemU7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcmV0ID0gQ01CbG9j a0J1ZmZlckNvcHlEYXRhQnl0ZXMoYmxvY2tfYnVmZmVyLCAwLCBwa3QtPnNpemUsIHBrdC0+ZGF0 YSk7CiAgICAgICAgICAgICAgICAgaWYgKHJldCAhPSBrQ01CbG9ja0J1ZmZlck5vRXJyKSB7Ci0g ICAgICAgICAgICAgICAgICAgICB1bmxvY2tfZnJhbWVzKGN0eCk7Ci0gICAgICAgICAgICAgICAg ICAgICByZXR1cm4gQVZFUlJPUihFSU8pOworICAgICAgICAgICAgICAgICAgICAgQ0ZSZWxlYXNl KGF1ZGlvX2ZyYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgIGF2X2xvZ19hdmZvdW5kYXRpb25f ZXJyb3IocywgImVycm9yIHdoaWxlIGNvcHlpbmcgYXVkaW8gZGF0YSIsIHJldCk7CisgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9FWFRFUk5BTDsKICAgICAgICAgICAgICAgICB9 CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIENNSXRlbUNvdW50IGNvdW50OwogICAgICAgICAg ICBDTVNhbXBsZVRpbWluZ0luZm8gdGltaW5nX2luZm87CgotICAgICAgICAgICAgaWYgKENNU2Ft cGxlQnVmZmVyR2V0T3V0cHV0U2FtcGxlVGltaW5nSW5mb0FycmF5KGN0eC0+Y3VycmVudF9hdWRp b19mcmFtZSwgMSwgJnRpbWluZ19pbmZvLCAmY291bnQpID09IG5vRXJyKSB7CisgICAgICAgICAg ICBpZiAoQ01TYW1wbGVCdWZmZXJHZXRPdXRwdXRTYW1wbGVUaW1pbmdJbmZvQXJyYXkoYXVkaW9f ZnJhbWUsIDEsICZ0aW1pbmdfaW5mbywgJmNvdW50KSA9PSBub0VycikgewogICAgICAgICAgICAg ICAgQVZSYXRpb25hbCB0aW1lYmFzZV9xID0gYXZfbWFrZV9xKDEsIHRpbWluZ19pbmZvLnByZXNl bnRhdGlvblRpbWVTdGFtcC50aW1lc2NhbGUpOwogICAgICAgICAgICAgICAgcGt0LT5wdHMgPSBw a3QtPmR0cyA9IGF2X3Jlc2NhbGVfcSh0aW1pbmdfaW5mby5wcmVzZW50YXRpb25UaW1lU3RhbXAu dmFsdWUsIHRpbWViYXNlX3EsIGF2Zl90aW1lX2Jhc2VfcSk7CiAgICAgICAgICAgIH0KQEAgLTEy MTIsMjEgKzEyMjQsMTUgQEAgc3RhdGljIGludCBhdmZfcmVhZF9wYWNrZXQoQVZGb3JtYXRDb250 ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQogICAgICAgICAgICBwa3QtPnN0cmVhbV9pbmRleCAgPSBj dHgtPmF1ZGlvX3N0cmVhbV9pbmRleDsKICAgICAgICAgICAgcGt0LT5mbGFncyAgICAgICAgfD0g QVZfUEtUX0ZMQUdfS0VZOwoKLSAgICAgICAgICAgIENGUmVsZWFzZShjdHgtPmN1cnJlbnRfYXVk aW9fZnJhbWUpOwotICAgICAgICAgICAgY3R4LT5jdXJyZW50X2F1ZGlvX2ZyYW1lID0gbmlsOwot Ci0gICAgICAgICAgICB1bmxvY2tfZnJhbWVzKGN0eCk7CisgICAgICAgICAgICBDRlJlbGVhc2Uo YXVkaW9fZnJhbWUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHBrdC0+ZGF0YSA9IE5V TEw7Ci0gICAgICAgICAgICB1bmxvY2tfZnJhbWVzKGN0eCk7CiAgICAgICAgICAgIGlmIChjdHgt Pm9ic2VydmVkX3F1aXQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0VPRjsKICAg ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVBR0FJTik7 CiAgICAgICAgICAgIH0KICAgICAgICB9Ci0KLSAgICAgICAgdW5sb2NrX2ZyYW1lcyhjdHgpOwog ICAgfSB3aGlsZSAoIXBrdC0+ZGF0YSk7CgogICAgcmV0dXJuIDA7Ci0tIAoyLjMyLjAgKEFwcGxl IEdpdC0xMzIpCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBz Oi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3Jp YmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBl Zy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==