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 7B90146874 for ; Tue, 22 Aug 2023 12:03:42 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E409268C4A6; Tue, 22 Aug 2023 15:03:40 +0300 (EEST) Received: from mail-lj1-f170.google.com (mail-lj1-f170.google.com [209.85.208.170]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9CAFD68C487 for ; Tue, 22 Aug 2023 15:03:34 +0300 (EEST) Received: by mail-lj1-f170.google.com with SMTP id 38308e7fff4ca-2bb97f2c99cso69212071fa.0 for ; Tue, 22 Aug 2023 05:03:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1692705813; x=1693310613; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=Infz3sg0FwTcTRSyv7AIh77HRlGtjdoVo9RaPmaUp/w=; b=jVCOZxDGFup9FOIEzmb/bB4XR7rNDGxxqBLuTEw81WR1OzL0vrw6YVMh2frQGDzKn7 Jb+tm2AAxd+EgBI8F9OsEfNsf6rlZFLVgW+ssa9oQwL/b2xUwiAa1lgBny9T4tF/kSal pFRIzMuXq6f6JNW9xBoF6l1hWpfk0Y9sGK/w2QPpJ+2jaivcg8nJg9JiT4cZdarxYtmY xoxsLAmjCgfD85PmI5dt1vl6Kbh/G7ZqFfFHJGdkYIgoIYl39rQ814VzG8E12ROCf6fz F+bZismO79Uhv0iTf0Wd90v4aXpALC//LtRMX9HsTk2NZIZxFigi7uPN6p5XaoT6cQ0O LuNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692705813; x=1693310613; h=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=Infz3sg0FwTcTRSyv7AIh77HRlGtjdoVo9RaPmaUp/w=; b=PCzqE07DCHaOQsIcRCHy8o5n/qMv3ZyBX+2/TjbtODwdzhHa2suOPd/F5YnuMPTONa D016fpbHynbBocYrVDYZPb03AHdqYc729RF37tgLtmwsoQN/JbfIqP8ENyVXV67I6pHm wYv6qz7mulLonsDG/uJ3l+mxM+S0PmmdvYtQV0Qwj8zyyTsfALubf9TOM77EbRcyrlXw eqntrauWnL2weteFlooc1Rem6mKVY3A5D3uWWQDeSCAYJd680wkOGXVGLCAGG560Tqju haVXzSKcfWwi+aKjpGUBYIvR/alOyhYvYhpJ5OQoddDX5V8IjTfoj/mXzkfiODhQYfL7 L6WQ== X-Gm-Message-State: AOJu0YzVOUaQQ3z0Ue8A4Zk2sa1coi5OM+q+KXrNOBvU5bVyG8EnFxjm Fa0C61RtY2YczorkvejQ8BHETOK3SAN0mgTGZRMiS+ZOQeU= X-Google-Smtp-Source: AGHT+IHchR8FT2v6bEZL8/ZR9WYJLwCJQVdrF9B/mdQJB4qcI74Ra10rEucvQnvnaEP1Y8DbdU9NHQlm2aOMHDterEU= X-Received: by 2002:a19:8c1c:0:b0:4fb:74da:989a with SMTP id o28-20020a198c1c000000b004fb74da989amr6991514lfd.3.1692705813130; Tue, 22 Aug 2023 05:03:33 -0700 (PDT) MIME-Version: 1.0 References: <3964361.O3JupQaQKb@basile.remlab.net> In-Reply-To: <3964361.O3JupQaQKb@basile.remlab.net> From: Nuo Mi Date: Tue, 22 Aug 2023 20:03:30 +0800 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH v4] vvcdec: add thread executor 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 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: T24gVGh1LCBBdWcgMTcsIDIwMjMgYXQgMTI6NDLigK9BTSBSw6ltaSBEZW5pcy1Db3VybW9udCA8 cmVtaUByZW1sYWIubmV0Pgp3cm90ZToKCj4gTGUgdGlpc3RhaW5hIDE1LiBlbG9rdXV0YSAyMDIz LCAxNy41MC4xMyBFRVNUIE51byBNaSBhIMOpY3JpdCA6Cj4gPiBUaGUgZXhlY3V0b3IgZGVzaWdu IHBhdHRlcm4gd2FzIGlucm9kdWNlZCBieSBqYXZhCj4gPiA8Cj4gaHR0cHM6Ly9kb2NzLm9yYWNs ZS5jb20vZW4vamF2YS9qYXZhc2UvMjAvZG9jcy9hcGkvamF2YS5iYXNlL2phdmEvdXRpbC9jb25j Cj4gPiB1cnJlbnQvRXhlY3V0b3IuaHRtbD4gaXQgYWxzbyBhZGFwdGVkIGJ5IHB5dGhvbgo+ID4g PGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS9jb25jdXJyZW50LmZ1dHVyZXMuaHRt bD4KPiA+IENvbXBhcmVkIHRvIGhhbmRjcmFmdGVkIHRocmVhZCBwb29sIG1hbmFnZW1lbnQsIGl0 IGdyZWF0bHkgc2ltcGxpZmllcyB0aGUKPiA+IHRocmVhZCBjb2RlLiAtLS0KPiA+ICBsaWJhdnV0 aWwvTWFrZWZpbGUgICB8ICAgMiArCj4gPiAgbGliYXZ1dGlsL2V4ZWN1dG9yLmMgfCAyMDEgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gIGxpYmF2dXRpbC9l eGVjdXRvci5oIHwgIDY3ICsrKysrKysrKysrKysrKwo+ID4gIDMgZmlsZXMgY2hhbmdlZCwgMjcw IGluc2VydGlvbnMoKykKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZ1dGlsL2V4ZWN1dG9y LmMKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZ1dGlsL2V4ZWN1dG9yLmgKPiA+Cj4gPiBk aWZmIC0tZ2l0IGEvbGliYXZ1dGlsL01ha2VmaWxlIGIvbGliYXZ1dGlsL01ha2VmaWxlCj4gPiBp bmRleCA3ODI4Yzk0ZGM1Li40NzExZjhjZGU4IDEwMDY0NAo+ID4gLS0tIGEvbGliYXZ1dGlsL01h a2VmaWxlCj4gPiArKysgYi9saWJhdnV0aWwvTWFrZWZpbGUKPiA+IEBAIC0zMSw2ICszMSw3IEBA IEhFQURFUlMgPSBhZGxlcjMyLmgKPgo+ID4gICAgICAgICAgICAgIFwgZW5jcnlwdGlvbl9pbmZv LmgKPgo+ID4gIFwgZXJyb3IuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCj4gZXZhbC5oCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgKwo+ID4gZXhlY3V0b3IuaCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIGZpZm8uaAo+Cj4gPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgZmlsZS5o Cj4KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCBmcmFtZS5oCj4K PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgXCBAQCAtMTI3LDYgKzEyOCw3IEBAIE9CSlMg PSBhZGxlcjMyLm8KPgo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcIGVuY3J5cHRpb25faW5mby5vCj4KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXCBlcnJvci5vCj4KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgXCBldmFs Lm8KPgo+ID4gICAgICAgICAgICAgICAgICBcICsgICAgICAgZXhlY3V0b3Iubwo+Cj4gPiAgICAg ICAgICAgICAgICAgXCBmaWZvLm8KPgo+ID4gICAgICAgIFwgZmlsZS5vCj4gIFwKPiA+IGZpbGVf b3Blbi5vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXCBkaWZmCj4gPiAtLWdpdCBhL2xpYmF2dXRpbC9leGVjdXRvci5jIGIvbGliYXZ1dGlsL2V4 ZWN1dG9yLmMKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAwLi42 YjQ3YmEwYmYyCj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi9saWJhdnV0aWwvZXhlY3V0b3Iu Ywo+ID4gQEAgLTAsMCArMSwyMDEgQEAKPiA+ICsvKgo+ID4gKyAqIENvcHlyaWdodCAoQykgMjAy MyBOdW8gTWkKPiA+ICsgKgo+ID4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KPiA+ ICsgKgo+ID4gKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IKPiA+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljCj4gPiArICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCj4gPiArICogdmVyc2lvbiAyLjEgb2Yg dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gPiAr ICoKPiA+ICsgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKPiA+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ID4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4gPiArICogTGVzc2Vy IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiA+ICsgKgo+ID4gKyAq IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMKPiA+ICsgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRl IHRvIHRoZSBGcmVlIFNvZnR3YXJlCj4gPiArICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQQo+IDAyMTEwLTEzMDEKPiA+IFVTQSAr ICovCj4gPiArI2luY2x1ZGUgImludGVybmFsLmgiCj4gPiArI2luY2x1ZGUgIm1lbS5oIgo+ID4g KyNpbmNsdWRlICJ0aHJlYWQuaCIKPiA+ICsKPiA+ICsjaW5jbHVkZSAiZXhlY3V0b3IuaCIKPiA+ ICsKPiA+ICsjaWYgIUhBVkVfVEhSRUFEUwo+ID4gKyNkZWZpbmUgcHRocmVhZF9jcmVhdGUodCwg YSwgcywgYXIpICAgICAwCj4KPiBFcnIsIHRoaXMgc2hvdWxkIHByb2JhYmx5IHJldHVybiBhbiBl cnJvciB2YWx1ZSwgZS5nLiBFTk9TWVMgb3IgRU5PVFNVUC4KPgo+ID4gKyNkZWZpbmUgcHRocmVh ZF9qb2luKHQsIHIpICAgICAgICAgICAgICBkbyB7fSB3aGlsZSgwKQo+Cj4gLi4uYW5kIHRoaXMg c2hvdWxkIGJlIGFuIHVucmVhY2hhYmxlKCksIGFzc2VydCgwKSwgYWJvcnQoKSBvciBzb21ldGhp bmcKPiBhbG9uZwo+IHRob3NlIGxpbmVzLgo+Cj4gPiArCj4gPiArI2RlZmluZSBwdGhyZWFkX2Nv bmRfaW5pdChjLCBhKSAgICAgICAgIDAKPiA+ICsjZGVmaW5lIHB0aHJlYWRfY29uZF9icm9hZGNh c3QoYykgICAgICAgZG8ge30gd2hpbGUoMCkKPiA+ICsjZGVmaW5lIHB0aHJlYWRfY29uZF9zaWdu YWwoYykgICAgICAgICAgZG8ge30gd2hpbGUoMCkKPiA+ICsjZGVmaW5lIHB0aHJlYWRfY29uZF93 YWl0KGMsIG0pICAgICAgICAgZG8ge30gd2hpbGUoMCkKPiA+ICsjZGVmaW5lIHB0aHJlYWRfY29u ZF9kZXN0cm95KGMpICAgICAgICAgZG8ge30gd2hpbGUoMCkKPiA+ICsKPiA+ICsjZGVmaW5lIHB0 aHJlYWRfbXV0ZXhfaW5pdChtLCBhKSAgICAgICAgMAo+ID4gKyNkZWZpbmUgcHRocmVhZF9tdXRl eF9sb2NrKGwpICAgICAgICAgICBkbyB7fSB3aGlsZSgwKQo+ID4gKyNkZWZpbmUgcHRocmVhZF9t dXRleF91bmxvY2sobCkgICAgICAgICBkbyB7fSB3aGlsZSgwKQo+ID4gKyNkZWZpbmUgcHRocmVh ZF9tdXRleF9kZXN0cm95KGwpICAgICAgICBkbyB7fSB3aGlsZSgwKQo+ID4gKyNlbmRpZgo+ID4g Kwo+ID4gK3R5cGVkZWYgc3RydWN0IFRocmVhZEluZm8gewo+ID4gKyAgICBBVkV4ZWN1dG9yICpl Owo+ID4gKyAgICBwdGhyZWFkX3QgdGhyZWFkOwo+Cj4gRG9lcyB0aGlzIGV2ZW4gd29yayBpZiAh SEFWRV9USFJFQUQgPwoKWWVzLiBUaGUgZGVmaW5pdGlvbiBwcm92aWRlZCBieSB0aGUgZm9sbG93 aW5nIGluY2x1ZGUgY2hhaW46CiAibWVtLmgiLT4iYXZ1dGlsLmgiLT4iY29tbW9uLmgiLT4iPHN0 ZGxpYi5oPiItPiI8c3lzL3R5cGVzLmg+Ii0+IjxiaXRzL3B0aHJlYWR0eXBlcy5oPiIKCj4KPiA+ ICt9IFRocmVhZEluZm87Cj4gPiArCj4gPiArc3RydWN0IEFWRXhlY3V0b3Igewo+ID4gKyAgICBB VlRhc2tDYWxsYmFja3MgY2I7Cj4gPiArICAgIGludCB0aHJlYWRfY291bnQ7Cj4gPiArCj4gPiAr ICAgIFRocmVhZEluZm8gKnRocmVhZHM7Cj4gPiArICAgIHVpbnQ4X3QgKmxvY2FsX2NvbnRleHRz Owo+ID4gKwo+ID4gKyAgICBwdGhyZWFkX211dGV4X3QgbG9jazsKPiA+ICsgICAgcHRocmVhZF9j b25kX3QgY29uZDsKPiA+ICsgICAgaW50IGRpZTsKPiA+ICsKPiA+ICsgICAgQVZUYXNrICp0YXNr czsKPiA+ICt9Owo+ID4gKwo+ID4gK3N0YXRpYyBBVlRhc2sqIHJlbW92ZV90YXNrKEFWVGFzayAq KnByZXYsIEFWVGFzayAqdCkKPiA+ICt7Cj4gPiArICAgICpwcmV2ICA9IHQtPm5leHQ7Cj4gPiAr ICAgIHQtPm5leHQgPSBOVUxMOwo+ID4gKyAgICByZXR1cm4gdDsKPiA+ICt9Cj4gPiArCj4gPiAr c3RhdGljIHZvaWQgYWRkX3Rhc2soQVZUYXNrICoqcHJldiwgQVZUYXNrICp0KQo+ID4gK3sKPiA+ ICsgICAgdC0+bmV4dCA9ICpwcmV2Owo+ID4gKyAgICAqcHJldiAgID0gdDsKPiA+ICt9Cj4gPiAr Cj4gPiArc3RhdGljIGludCBydW5fb25lX3Rhc2soQVZFeGVjdXRvciAqZSwgdm9pZCAqbGMpCj4g PiArewo+ID4gKyAgICBBVlRhc2tDYWxsYmFja3MgKmNiID0gJmUtPmNiOwo+ID4gKyAgICBBVlRh c2sgKipwcmV2Owo+ID4gKwo+ID4gKyAgICBmb3IgKHByZXYgPSAmZS0+dGFza3M7ICpwcmV2ICYm ICFjYi0+cmVhZHkoKnByZXYsIGNiLT51c2VyX2RhdGEpOwo+IHByZXYKPiA+ID0gJigqcHJldikt Pm5leHQpCj4gPiArICAgICAgICAvKiBub3RoaW5nICovOwo+ID4gKyAgICBpZiAoKnByZXYpIHsK PiA+ICsgICAgICAgIEFWVGFzayAqdCA9IHJlbW92ZV90YXNrKHByZXYsICpwcmV2KTsKPiA+ICsg ICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZlLT5sb2NrKTsKPiA+ICsgICAgICAgIGNiLT5y dW4odCwgbGMsIGNiLT51c2VyX2RhdGEpOwo+ID4gKyAgICAgICAgcHRocmVhZF9tdXRleF9sb2Nr KCZlLT5sb2NrKTsKPiA+ICsgICAgICAgIHJldHVybiAxOwo+ID4gKyAgICB9Cj4gPiArICAgIHJl dHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICsjaWYgSEFWRV9USFJFQURTCj4gPiArc3RhdGljIHZv aWQgKmV4ZWN1dG9yX3dvcmtlcl90YXNrKHZvaWQgKmRhdGEpCj4gPiArewo+ID4gKyAgICBUaHJl YWRJbmZvICp0aSA9IChUaHJlYWRJbmZvKilkYXRhOwo+ID4gKyAgICBBVkV4ZWN1dG9yICplICA9 IHRpLT5lOwo+ID4gKyAgICB2b2lkICpsYyAgICAgICA9IGUtPmxvY2FsX2NvbnRleHRzCj4gPiAr ICh0aSAtIGUtPnRocmVhZHMpICoKPiA+IGUtPmNiLmxvY2FsX2NvbnRleHRfc2l6ZTsgKwo+ID4g KyAgICBwdGhyZWFkX211dGV4X2xvY2soJmUtPmxvY2spOwo+ID4gKyAgICB3aGlsZSAoMSkgewo+ ID4gKyAgICAgICAgaWYgKGUtPmRpZSkgYnJlYWs7Cj4gPiArCj4gPiArICAgICAgICBpZiAoIXJ1 bl9vbmVfdGFzayhlLCBsYykpIHsKPiA+ICsgICAgICAgICAgICAvL25vIHRhc2sgaW4gb25lIGxv b3AKPiA+ICsgICAgICAgICAgICBwdGhyZWFkX2NvbmRfd2FpdCgmZS0+Y29uZCwgJmUtPmxvY2sp Owo+ID4gKyAgICAgICAgfQo+ID4gKyAgICB9Cj4gPiArICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2Nr KCZlLT5sb2NrKTsKPiA+ICsgICAgcmV0dXJuIE5VTEw7Cj4gPiArfQo+ID4gKyNlbmRpZgo+ID4g Kwo+ID4gK3N0YXRpYyB2b2lkIGV4ZWN1dG9yX2ZyZWUoQVZFeGVjdXRvciAqZSwgY29uc3QgaW50 IGhhc19sb2NrLCBjb25zdCBpbnQKPiA+IGhhc19jb25kKSArewo+ID4gKyAgICBpZiAoZS0+dGhy ZWFkX2NvdW50KSB7Cj4gPiArICAgICAgICAvL3NpZ25hbCBkaWUKPiA+ICsgICAgICAgIHB0aHJl YWRfbXV0ZXhfbG9jaygmZS0+bG9jayk7Cj4gPiArICAgICAgICBlLT5kaWUgPSAxOwo+ID4gKyAg ICAgICAgcHRocmVhZF9jb25kX2Jyb2FkY2FzdCgmZS0+Y29uZCk7Cj4gPiArICAgICAgICBwdGhy ZWFkX211dGV4X3VubG9jaygmZS0+bG9jayk7Cj4gPiArCj4gPiArICAgICAgICBmb3IgKGludCBp ID0gMDsgaSA8IGUtPnRocmVhZF9jb3VudDsgaSsrKQo+ID4gKyAgICAgICAgICAgIHB0aHJlYWRf am9pbihlLT50aHJlYWRzW2ldLnRocmVhZCwgTlVMTCk7Cj4gPiArICAgIH0KPiA+ICsgICAgaWYg KGhhc19jb25kKQo+ID4gKyAgICAgICAgcHRocmVhZF9jb25kX2Rlc3Ryb3koJmUtPmNvbmQpOwo+ ID4gKyAgICBpZiAoaGFzX2xvY2spCj4gPiArICAgICAgICBwdGhyZWFkX211dGV4X2Rlc3Ryb3ko JmUtPmxvY2spOwo+ID4gKwo+ID4gKyAgICBhdl9mcmVlKGUtPnRocmVhZHMpOwo+ID4gKyAgICBh dl9mcmVlKGUtPmxvY2FsX2NvbnRleHRzKTsKPiA+ICsKPiA+ICsgICAgYXZfZnJlZShlKTsKPiA+ ICt9Cj4gPiArCj4gPiArQVZFeGVjdXRvciogYXZfZXhlY3V0b3JfYWxsb2MoY29uc3QgQVZUYXNr Q2FsbGJhY2tzICpjYiwgaW50Cj4gdGhyZWFkX2NvdW50KQo+ID4gK3sKPiA+ICsgICAgQVZFeGVj dXRvciAqZTsKPiA+ICsgICAgaW50IGhhc19sb2NrID0gMCwgaGFzX2NvbmQgPSAwOwo+ID4gKyAg ICBpZiAoIWNiIHx8ICFjYi0+dXNlcl9kYXRhIHx8ICFjYi0+cmVhZHkgfHwgIWNiLT5ydW4gfHwK PiA+ICFjYi0+cHJpb3JpdHlfaGlnaGVyKSArICAgICAgICByZXR1cm4gTlVMTDsKPiA+ICsKPiA+ ICsgICAgZSA9IGF2X2NhbGxvYygxLCBzaXplb2YoKmUpKTsKPiA+ICsgICAgaWYgKCFlKQo+ID4g KyAgICAgICAgcmV0dXJuIE5VTEw7Cj4gPiArICAgIGUtPmNiID0gKmNiOwo+ID4gKwo+ID4gKyAg ICBlLT5sb2NhbF9jb250ZXh0cyA9IGF2X2NhbGxvYyh0aHJlYWRfY291bnQsCj4gZS0+Y2IubG9j YWxfY29udGV4dF9zaXplKTsKPiA+ICsgICAgaWYgKCFlLT5sb2NhbF9jb250ZXh0cykKPiA+ICsg ICAgICAgIGdvdG8gZnJlZV9leGVjdXRvcjsKPiA+ICsKPiA+ICsgICAgZS0+dGhyZWFkcyA9IGF2 X2NhbGxvYyh0aHJlYWRfY291bnQsIHNpemVvZigqZS0+dGhyZWFkcykpOwo+ID4gKyAgICBpZiAo IWUtPnRocmVhZHMpCj4gPiArICAgICAgICBnb3RvIGZyZWVfZXhlY3V0b3I7Cj4gPiArCj4gPiAr ICAgIGhhc19sb2NrID0gIXB0aHJlYWRfbXV0ZXhfaW5pdCgmZS0+bG9jaywgTlVMTCk7Cj4gPiAr ICAgIGhhc19jb25kID0gIXB0aHJlYWRfY29uZF9pbml0KCZlLT5jb25kLCBOVUxMKTsKPiA+ICsK PiA+ICsgICAgaWYgKCFoYXNfbG9jayB8fCAhaGFzX2NvbmQpCj4gPiArICAgICAgICBnb3RvIGZy ZWVfZXhlY3V0b3I7Cj4gPiArCj4gPiArICAgIGZvciAoLyogbm90aGluZyAqLzsgZS0+dGhyZWFk X2NvdW50IDwgdGhyZWFkX2NvdW50Owo+IGUtPnRocmVhZF9jb3VudCsrKQo+ID4geyArICAgICAg ICBUaHJlYWRJbmZvICp0aSA9IGUtPnRocmVhZHMgKyBlLT50aHJlYWRfY291bnQ7Cj4gPiArICAg ICAgICB0aS0+ZSA9IGU7Cj4gPiArICAgICAgICBpZiAocHRocmVhZF9jcmVhdGUoJnRpLT50aHJl YWQsIE5VTEwsIGV4ZWN1dG9yX3dvcmtlcl90YXNrLCB0aSkpCj4gPiArICAgICAgICAgICAgZ290 byBmcmVlX2V4ZWN1dG9yOwo+ID4gKyAgICB9Cj4gPiArICAgIHJldHVybiBlOwo+ID4gKwo+ID4g K2ZyZWVfZXhlY3V0b3I6Cj4gPiArICAgIGV4ZWN1dG9yX2ZyZWUoZSwgaGFzX2xvY2ssIGhhc19j b25kKTsKPiA+ICsgICAgcmV0dXJuIE5VTEw7Cj4gPiArfQo+ID4gKwo+ID4gK3ZvaWQgYXZfZXhl Y3V0b3JfZnJlZShBVkV4ZWN1dG9yICoqZXhlY3V0b3IpCj4gPiArewo+ID4gKyAgICBpZiAoIWV4 ZWN1dG9yIHx8ICEqZXhlY3V0b3IpCj4gPiArICAgICAgICByZXR1cm47Cj4gPiArICAgIGV4ZWN1 dG9yX2ZyZWUoKmV4ZWN1dG9yLCAxLCAxKTsKPiA+ICsgICAgKmV4ZWN1dG9yID0gTlVMTDsKPiA+ ICt9Cj4gPiArCj4gPiArdm9pZCBhdl9leGVjdXRvcl9leGVjdXRlKEFWRXhlY3V0b3IgKmUsIEFW VGFzayAqdCkKPiA+ICt7Cj4gPiArICAgIEFWVGFza0NhbGxiYWNrcyAqY2IgPSAmZS0+Y2I7Cj4g PiArICAgIEFWVGFzayAqKnByZXY7Cj4gPiArCj4gPiArICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygm ZS0+bG9jayk7Cj4gPiArICAgIGlmICh0KSB7Cj4gPiArICAgICAgICBmb3IgKHByZXYgPSAmZS0+ dGFza3M7ICpwcmV2ICYmIGNiLT5wcmlvcml0eV9oaWdoZXIoKnByZXYsIHQpOwo+IHByZXYKPiA+ ID0gJigqcHJldiktPm5leHQpICsgICAgICAgICAgICAvKiBub3RoaW5nICovOwo+ID4gKyAgICAg ICAgYWRkX3Rhc2socHJldiwgdCk7Cj4gPiArICAgIH0KPiA+ICsgICAgcHRocmVhZF9jb25kX3Np Z25hbCgmZS0+Y29uZCk7Cj4gPiArICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZlLT5sb2NrKTsK PiA+ICsKPiA+ICsjaWYgIUhBVkVfVEhSRUFEUwo+ID4gKyAgICAvLyBXZSBhcmUgcnVubmluZyBp biBhIHNpbmdsZS10aHJlYWRlZCBlbnZpcm9ubWVudCwgc28gd2UgbXVzdAo+IGhhbmRsZQo+ID4g YWxsIHRhc2tzIG91cnNlbHZlcwo+ID4gKyAgICB3aGlsZSAocnVuX29uZV90YXNrKGUsIGUtPmxv Y2FsX2NvbnRleHRzKSkKPiA+ICsgICAgICAgIC8qIG5vdGhpbmcgKi87Cj4gPiArI2VuZGlmCj4g PiArfQo+ID4gZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9leGVjdXRvci5oIGIvbGliYXZ1dGlsL2V4 ZWN1dG9yLmgKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAwLi5j M2ZlNDRiZDBlCj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi9saWJhdnV0aWwvZXhlY3V0b3Iu aAo+ID4gQEAgLTAsMCArMSw2NyBAQAo+ID4gKy8qCj4gPiArICogQ29weXJpZ2h0IChDKSAyMDIz IE51byBNaQo+ID4gKyAqCj4gPiArICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgo+ID4g KyAqCj4gPiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgo+ID4gKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiA+ICsgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKPiA+ICsgKiB2ZXJzaW9uIDIuMSBvZiB0 aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiA+ICsg Kgo+ID4gKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAo+ID4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKPiA+ICsgKiBMZXNzZXIg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ID4gKyAqCj4gPiArICog WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs IFB1YmxpYwo+ID4gKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUg dG8gdGhlIEZyZWUgU29mdHdhcmUKPiA+ICsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp biBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BCj4gMDIxMTAtMTMwMQo+ID4gVVNBICsg Ki8KPiA+ICsKPiA+ICsjaWZuZGVmIEFWVVRJTF9FWEVDVVRPUl9ICj4gPiArI2RlZmluZSBBVlVU SUxfRVhFQ1VUT1JfSAo+ID4gKwo+ID4gK3R5cGVkZWYgc3RydWN0IEFWRXhlY3V0b3IgQVZFeGVj dXRvcjsKPiA+ICt0eXBlZGVmIHN0cnVjdCBBVlRhc2sgQVZUYXNrOwo+ID4gKwo+ID4gK3N0cnVj dCBBVlRhc2sgewo+ID4gKyAgICBBVlRhc2sgKm5leHQ7Cj4gPiArfTsKPiA+ICsKPiA+ICt0eXBl ZGVmIHN0cnVjdCBBVlRhc2tDYWxsYmFja3Mgewo+ID4gKyAgICB2b2lkICp1c2VyX2RhdGE7Cj4g PiArCj4gPiArICAgIGludCBsb2NhbF9jb250ZXh0X3NpemU7Cj4gPiArCj4gPiArICAgIC8vIHJl dHVybiAxIGlmIGEncyBwcmlvcml0eSA+IGIncyBwcmlvcml0eQo+ID4gKyAgICBpbnQgKCpwcmlv cml0eV9oaWdoZXIpKGNvbnN0IEFWVGFzayAqYSwgY29uc3QgQVZUYXNrICpiKTsKPiA+ICsKPiA+ ICsgICAgLy8gdGFzayBpcyByZWFkeSBmb3IgcnVuCj4gPiArICAgIGludCAoKnJlYWR5KShjb25z dCBBVlRhc2sgKnQsIHZvaWQgKnVzZXJfZGF0YSk7Cj4gPiArCj4gPiArICAgIC8vIHJ1biB0aGUg dGFzawo+ID4gKyAgICBpbnQgKCpydW4pKEFWVGFzayAqdCwgdm9pZCAqbG9jYWxfY29udGV4dCwg dm9pZCAqdXNlcl9kYXRhKTsKPiA+ICt9IEFWVGFza0NhbGxiYWNrczsKPiA+ICsKPiA+ICsvKioK PiA+ICsgKiBBbGxvYyBleGVjdXRvcgo+ID4gKyAqIEBwYXJhbSBjYWxsYmFja3MgY2FsbGJhY2sg c3RydWN1dHJlIGZvciBleGVjdXRvcgo+ID4gKyAqIEBwYXJhbSB0aHJlYWRfY291bnQgd29ya2Vy IHRocmVhZCBudW1iZXIKPiA+ICsgKiBAcmV0dXJuIHJldHVybiB0aGUgZXhlY3V0b3IKPiA+ICsg Ki8KPiA+ICtBVkV4ZWN1dG9yKiBhdl9leGVjdXRvcl9hbGxvYyhjb25zdCBBVlRhc2tDYWxsYmFj a3MgKmNhbGxiYWNrcywgaW50Cj4gPiB0aHJlYWRfY291bnQpOyArCj4gPiArLyoqCj4gPiArICog RnJlZSBleGVjdXRvcgo+ID4gKyAqIEBwYXJhbSBlICBwb2ludGVyIHRvIGV4ZWN1dG9yCj4gPiAr ICovCj4gPiArdm9pZCBhdl9leGVjdXRvcl9mcmVlKEFWRXhlY3V0b3IgKiplKTsKPiA+ICsKPiA+ ICsvKioKPiA+ICsgKiBBZGQgdGFzayB0byBleGVjdXRvcgo+ID4gKyAqIEBwYXJhbSBlIHBvaW50 ZXIgdG8gZXhlY3V0b3IKPiA+ICsgKiBAcGFyYW0gdCBwb2ludGVyIHRvIHRhc2suIElmIE5VTEws IGl0IHdpbGwgd2FrZXVwIG9uZSB3b3JrIHRocmVhZAo+ID4gKyAqLwo+ID4gK3ZvaWQgYXZfZXhl Y3V0b3JfZXhlY3V0ZShBVkV4ZWN1dG9yICplLCBBVlRhc2sgKnQpOwo+ID4gKwo+ID4gKyNlbmRp ZiAvL0FWVVRJTF9FWEVDVVRPUl9ICj4KPgo+IC0tCj4gUsOpbWkgRGVuaXMtQ291cm1vbnQKPiBo dHRwOi8vd3d3LnJlbWxhYi5uZXQvCj4KPgo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KPiBmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0Cj4gZmZtcGVn LWRldmVsQGZmbXBlZy5vcmcKPiBodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9m Zm1wZWctZGV2ZWwKPgo+IFRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFp bAo+IGZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNj cmliZSIuCj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczov L2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJl LCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcu b3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=