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 C00D149E13 for ; Thu, 11 Apr 2024 14:04:49 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8F1B668D113; Thu, 11 Apr 2024 17:04:46 +0300 (EEST) Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4A0C168C09C for ; Thu, 11 Apr 2024 17:04:40 +0300 (EEST) Received: by mail-pj1-f42.google.com with SMTP id 98e67ed59e1d1-2a2cced7482so2108758a91.0 for ; Thu, 11 Apr 2024 07:04:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1712844278; x=1713449078; darn=ffmpeg.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=vPKoIy/Qq2Uc8MXY0gIbWaSjD35lYDv4VkkZaVVPf4w=; b=fqRlUrqTG0wkihU/ydb1TFt5d9cojzBI//KiSh08k4VlOkXwbgiQxq24/tUvhtxrc/ hsphOEJB+JqifXIEagGkY4bt7U+lp+ScUB4s1jbKJ1Zvim/Zo+dqWgUEh7jg3zNU43bt 11gtoTgtGLmlKrjguCV6vIW6tesrl2hgvqF4j0D2LjgphHHHOO1jjEpo0lXs20L5p8wA UCBNWm3mIMY9RHk3BPoeyVhT4R57xaPb/OnUpF++ZUegOcRto7HzLnt94fGKn0v57/C6 1KuaXpkVLYtF+/NT1OVmucGS6kU6C73vE/RjO5bDFAMPj4p5hun4PQpTbLex1tWU9oKh XOtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712844278; x=1713449078; h=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=vPKoIy/Qq2Uc8MXY0gIbWaSjD35lYDv4VkkZaVVPf4w=; b=ggtgB7Fp9ViFnD1YUEAu1d6seNBSMpHwts6UoR/kORH32RtIephMsD2Zqr/wC2kbg9 p0GeY39OEhnivp/VOZXVGL7yQlB5R7fqqmkM8w2YYXUH4RKtx7KwHujR1nSsXTBPr/I4 nOiu96cpRDvV+cV4rLN2Z1sNjKCY8FTLxfKQb+/BTEiLX9EYwiCCB9+yVimS4oO1GsnF Vpmq/JWLEWZFyVb/uOmTFqDPCU2Uh33sm+nuXrK3LXI4bEOAU4n8VtJvBGSqdqVkX2GO BIFP2eX2FG+Dma8hK5hqUAFRfifa9a50kv964np8wOpZEqvpY8TF20lOOvrW7I9oTgrY eWCA== X-Gm-Message-State: AOJu0YwoSl6flKLO4sopEMIIEKEZ5KElwDDE5WomkKzuxd1cLcNUAjWp XbklrnqRWSKz5QWw+AsQjkzSw297tad/OwXDX+ePk8mvv1l5vGJZcQ0DbDVtvXy6vE0J1XXXjom Op5AmDpyfj2I9gtZJBzkFeJgYMx7vieGT X-Google-Smtp-Source: AGHT+IGx1qmTMg3FMnDs6OAaMFqUzPXABreQto4Uivt1vctCSG328jLHGJdSYRtI82z/+Sn0aED02wrwraRtyDmDXEs= X-Received: by 2002:a17:90a:550b:b0:2a5:395e:8677 with SMTP id b11-20020a17090a550b00b002a5395e8677mr5304209pji.2.1712844277846; Thu, 11 Apr 2024 07:04:37 -0700 (PDT) MIME-Version: 1.0 References: <20240326005639.27000-1-toots@rastageeks.org> In-Reply-To: From: Romain Beauxis Date: Thu, 11 Apr 2024 09:04:26 -0500 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH 1/2] libavformat/hls.c: support in-stream ID3 metadata update. 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: Steven Liu 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: SGkgYWxsLAoKTGUgZGltLiA3IGF2ci4gMjAyNCDDoCAwOTo0NiwgUm9tYWluIEJlYXV4aXMgPHJv bWFpbi5iZWF1eGlzQGdtYWlsLmNvbT4gYQrDqWNyaXQgOgoKPgo+Cj4gTGUgZGltLiA3IGF2ci4g MjAyNCDDoCAwNTo0NCwgU3RldmVuIExpdSA8bGluZ2ppdWppYW5rZUBnbWFpbC5jb20+IGEKPiDD qWNyaXQgOgo+Cj4+IFJvbWFpbiBCZWF1eGlzIDx0b290c0ByYXN0YWdlZWtzLm9yZz4g5LqOMjAy NOW5tDPmnIgyNuaXpeWRqOS6jCAwODo1OOWGmemBk++8mgo+PiA+Cj4+ID4gVGhpcyBwYXRjaCBh ZGRzIHN1cHBvcnQgZm9yIHVwZGF0aW5nIEhMUyBtZXRhZGF0YSBwYXNzZWQgYXMgSUQzIGZyYW1l cy4KPj4gPgo+PiA+IFRoaXMgc2VlbXMgbGlrZSBhIHByZXR0eSBzdHJhaWdodC1mb3J3YXJkIGlt cHJvdmVtZW50LiBVcGRhdGluZyB0aGUKPj4gPiBtZXRhZGFhdGEgb2YgdGhlIGZpcnN0IHN0cmVh bSBzZWVtcyB0byBiZSB0aGUgbWVjaGFuaXNtIGlzIG90aGVyIHBsYWNlcwo+PiA+IGluIHRoZSBj b2RlIGFuZCB3b3JrcyBhcyBleHBlY3RlZC4KPj4KPj4KV291bGQgaXQgYmUgcG9zc2libGUgdG8g Z2V0IHRoaXMgcGF0Y2ggY29tbWl0dGVkPyBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQKaXQgaGFz IGJlZW4gcmV2aWV3ZWQgc28gdGhpcyBzaG91bGQgYmUgdGhlIG5leHQgc3RlcD8KClRoZSBzZWNv bmQgcGF0Y2ggYWRkaW5nIEZBVEUgdGVzdHMgY291bGQgYmUgY29tbWl0dGVkIHNlcGFyYXRlbHkg aWYgaXQKY2F1c2VzIGlzc3Vlcy4gVGhlIHNhbXBsZXMgZm9yIGl0IGFyZSBoZXJlOgpodHRwczov L3d3dy5kcm9wYm94LmNvbS9zY2wvZm8vMXg3NHp0b2E2eW85cTQ5aWduZm50L2g/cmxrZXk9eHZn NW5oZ2pyNTE1Z202YjM3NWV2bThuNCZkbD0wCmFuZApzaG91bGQgYmUgcGxhY2VkIGludG8gYSAk RkFURV9TQU1QTEVTL2hscy1hZHRzLW1ldGEgZGlyZWN0b3J5LgoKVGhhbmtzIQoKCj4gPiAtLS0K Pj4gPiAgbGliYXZmb3JtYXQvaGxzLmMgfCA1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tLQo+PiA+ICAxIGZpbGUgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygr KSwgMjIgZGVsZXRpb25zKC0pCj4+ID4KPj4gPiBkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvaGxz LmMgYi9saWJhdmZvcm1hdC9obHMuYwo+PiA+IGluZGV4IGY2YjQ0YzJlMzUuLmJhNjYzNGQ1N2Eg MTAwNjQ0Cj4+ID4gLS0tIGEvbGliYXZmb3JtYXQvaGxzLmMKPj4gPiArKysgYi9saWJhdmZvcm1h dC9obHMuYwo+PiA+IEBAIC05Myw2ICs5MywxMiBAQCBlbnVtIFBsYXlsaXN0VHlwZSB7Cj4+ID4g ICAgICBQTFNfVFlQRV9WT0QKPj4gPiAgfTsKPj4gPgo+PiA+ICsjZGVmaW5lIElEM19QUklWX09X TkVSX1RTCj4+ICJjb20uYXBwbGUuc3RyZWFtaW5nLnRyYW5zcG9ydFN0cmVhbVRpbWVzdGFtcCIK Pj4gPiArI2RlZmluZSBJRDNfUFJJVl9PV05FUl9BVURJT19TRVRVUAo+PiAiY29tLmFwcGxlLnN0 cmVhbWluZy5hdWRpb0Rlc2NyaXB0aW9uIgo+PiA+ICsKPj4gPiArI2RlZmluZSBJRDN2Ml9QUklW X09XTkVSX1RTIElEM3YyX1BSSVZfTUVUQURBVEFfUFJFRklYCj4+IElEM19QUklWX09XTkVSX1RT Cj4+ID4gKyNkZWZpbmUgSUQzdjJfUFJJVl9PV05FUl9BVURJT19TRVRVUCBJRDN2Ml9QUklWX01F VEFEQVRBX1BSRUZJWAo+PiBJRDNfUFJJVl9PV05FUl9BVURJT19TRVRVUAo+PiA+ICsKPj4gPiAg LyoKPj4gPiAgICogRWFjaCBwbGF5bGlzdCBoYXMgaXRzIG93biBkZW11eGVyLiBJZiBpdCBjdXJy ZW50bHkgaXMgYWN0aXZlLAo+PiA+ICAgKiBpdCBoYXMgYW4gb3BlbiBBVklPQ29udGV4dCB0b28s IGFuZCBwb3RlbnRpYWxseSBhbiBBVlBhY2tldAo+PiA+IEBAIC0xNTAsOSArMTU2LDcgQEAgc3Ry dWN0IHBsYXlsaXN0IHsKPj4gPiAgICAgIGludDY0X3QgaWQzX29mZnNldDsgLyogaW4gc3RyZWFt IG9yaWdpbmFsIHRiICovCj4+ID4gICAgICB1aW50OF90KiBpZDNfYnVmOyAvKiB0ZW1wIGJ1ZmZl ciBmb3IgaWQzIHBhcnNpbmcgKi8KPj4gPiAgICAgIHVuc2lnbmVkIGludCBpZDNfYnVmX3NpemU7 Cj4+ID4gLSAgICBBVkRpY3Rpb25hcnkgKmlkM19pbml0aWFsOyAvKiBkYXRhIGZyb20gZmlyc3Qg aWQzIHRhZyAqLwo+PiA+IC0gICAgaW50IGlkM19mb3VuZDsgLyogSUQzIHRhZyBmb3VuZCBhdCBz b21lIHBvaW50ICovCj4+ID4gLSAgICBpbnQgaWQzX2NoYW5nZWQ7IC8qIElEMyB0YWcgZGF0YSBo YXMgY2hhbmdlZCBhdCBzb21lIHBvaW50ICovCj4+ID4gKyAgICBBVkRpY3Rpb25hcnkgKmxhc3Rf aWQzOyAvKiBkYXRhIGZyb20gdGhlIGxhc3QgaWQzIHRhZyAqLwo+PiA+ICAgICAgSUQzdjJFeHRy YU1ldGEgKmlkM19kZWZlcnJlZF9leHRyYTsgLyogc3RvcmVkIGhlcmUgdW50aWwKPj4gc3ViZGVt dXhlciBpcyBvcGVuZWQgKi8KPj4gPgo+PiA+ICAgICAgSExTQXVkaW9TZXR1cEluZm8gYXVkaW9f c2V0dXBfaW5mbzsKPj4gPiBAQCAtMjcwLDcgKzI3NCw3IEBAIHN0YXRpYyB2b2lkIGZyZWVfcGxh eWxpc3RfbGlzdChITFNDb250ZXh0ICpjKQo+PiA+ICAgICAgICAgIGF2X2ZyZWVwKCZwbHMtPm1h aW5fc3RyZWFtcyk7Cj4+ID4gICAgICAgICAgYXZfZnJlZXAoJnBscy0+cmVuZGl0aW9ucyk7Cj4+ ID4gICAgICAgICAgYXZfZnJlZXAoJnBscy0+aWQzX2J1Zik7Cj4+ID4gLSAgICAgICAgYXZfZGlj dF9mcmVlKCZwbHMtPmlkM19pbml0aWFsKTsKPj4gPiArICAgICAgICBhdl9kaWN0X2ZyZWUoJnBs cy0+bGFzdF9pZDMpOwo+PiA+ICAgICAgICAgIGZmX2lkM3YyX2ZyZWVfZXh0cmFfbWV0YSgmcGxz LT5pZDNfZGVmZXJyZWRfZXh0cmEpOwo+PiA+ICAgICAgICAgIGF2X2ZyZWVwKCZwbHMtPmluaXRf c2VjX2J1Zik7Cj4+ID4gICAgICAgICAgYXZfcGFja2V0X2ZyZWUoJnBscy0+cGt0KTsKPj4gPiBA QCAtMTA4MywxNSArMTA4NywxMyBAQCBzdGF0aWMgdm9pZCBwYXJzZV9pZDMoQVZGb3JtYXRDb250 ZXh0ICpzLAo+PiBBVklPQ29udGV4dCAqcGIsCj4+ID4gICAgICAgICAgICAgICAgICAgICAgICBB VkRpY3Rpb25hcnkgKiptZXRhZGF0YSwgaW50NjRfdCAqZHRzLAo+PiBITFNBdWRpb1NldHVwSW5m byAqYXVkaW9fc2V0dXBfaW5mbywKPj4gPiAgICAgICAgICAgICAgICAgICAgICAgIElEM3YyRXh0 cmFNZXRhQVBJQyAqKmFwaWMsIElEM3YyRXh0cmFNZXRhCj4+ICoqZXh0cmFfbWV0YSkKPj4gPiAg ewo+PiA+IC0gICAgc3RhdGljIGNvbnN0IGNoYXIgaWQzX3ByaXZfb3duZXJfdHNbXSA9Cj4+ICJj b20uYXBwbGUuc3RyZWFtaW5nLnRyYW5zcG9ydFN0cmVhbVRpbWVzdGFtcCI7Cj4+ID4gLSAgICBz dGF0aWMgY29uc3QgY2hhciBpZDNfcHJpdl9vd25lcl9hdWRpb19zZXR1cFtdID0KPj4gImNvbS5h cHBsZS5zdHJlYW1pbmcuYXVkaW9EZXNjcmlwdGlvbiI7Cj4+ID4gICAgICBJRDN2MkV4dHJhTWV0 YSAqbWV0YTsKPj4gPgo+PiA+ICAgICAgZmZfaWQzdjJfcmVhZF9kaWN0KHBiLCBtZXRhZGF0YSwg SUQzdjJfREVGQVVMVF9NQUdJQywgZXh0cmFfbWV0YSk7Cj4+ID4gICAgICBmb3IgKG1ldGEgPSAq ZXh0cmFfbWV0YTsgbWV0YTsgbWV0YSA9IG1ldGEtPm5leHQpIHsKPj4gPiAgICAgICAgICBpZiAo IXN0cmNtcChtZXRhLT50YWcsICJQUklWIikpIHsKPj4gPiAgICAgICAgICAgICAgSUQzdjJFeHRy YU1ldGFQUklWICpwcml2ID0gJm1ldGEtPmRhdGEucHJpdjsKPj4gPiAtICAgICAgICAgICAgaWYg KHByaXYtPmRhdGFzaXplID09IDggJiYgIWF2X3N0cm5jYXNlY21wKHByaXYtPm93bmVyLAo+PiBp ZDNfcHJpdl9vd25lcl90cywgNDQpKSB7Cj4+ID4gKyAgICAgICAgICAgIGlmIChwcml2LT5kYXRh c2l6ZSA9PSA4ICYmICFhdl9zdHJuY2FzZWNtcChwcml2LT5vd25lciwKPj4gSUQzX1BSSVZfT1dO RVJfVFMsIHN0cmxlbihJRDNfUFJJVl9PV05FUl9UUykpKSB7Cj4+ID4gICAgICAgICAgICAgICAg ICAvKiAzMy1iaXQgTVBFRyB0aW1lc3RhbXAgKi8KPj4gPiAgICAgICAgICAgICAgICAgIGludDY0 X3QgdHMgPSBBVl9SQjY0KHByaXYtPmRhdGEpOwo+PiA+ICAgICAgICAgICAgICAgICAgYXZfbG9n KHMsIEFWX0xPR19ERUJVRywgIkhMUyBJRDMgYXVkaW8gdGltZXN0YW1wCj4+ICUiUFJJZDY0Ilxu IiwgdHMpOwo+PiA+IEBAIC0xMDk5LDcgKzExMDEsOSBAQCBzdGF0aWMgdm9pZCBwYXJzZV9pZDMo QVZGb3JtYXRDb250ZXh0ICpzLAo+PiBBVklPQ29udGV4dCAqcGIsCj4+ID4gICAgICAgICAgICAg ICAgICAgICAgKmR0cyA9IHRzOwo+PiA+ICAgICAgICAgICAgICAgICAgZWxzZQo+PiA+ICAgICAg ICAgICAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfRVJST1IsICJJbnZhbGlkIEhMUyBJRDMg YXVkaW8KPj4gdGltZXN0YW1wICUiUFJJZDY0IlxuIiwgdHMpOwo+PiA+IC0gICAgICAgICAgICB9 IGVsc2UgaWYgKHByaXYtPmRhdGFzaXplID49IDggJiYKPj4gIWF2X3N0cm5jYXNlY21wKHByaXYt Pm93bmVyLCBpZDNfcHJpdl9vd25lcl9hdWRpb19zZXR1cCwgMzYpKSB7Cj4+ID4gKyAgICAgICAg ICAgIH0gZWxzZSBpZiAocHJpdi0+ZGF0YXNpemUgPj0gOCAmJgo+PiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICFhdl9zdHJuY2FzZWNtcChwcml2LT5vd25lciwKPj4gSUQzX1BSSVZfT1dORVJf QVVESU9fU0VUVVAsIDM2KSAmJgo+PiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3Nl dHVwX2luZm8pIHsKPj4gPiAgICAgICAgICAgICAgICAgIGZmX2hsc19zZW5jX3JlYWRfYXVkaW9f c2V0dXBfaW5mbyhhdWRpb19zZXR1cF9pbmZvLAo+PiBwcml2LT5kYXRhLCBwcml2LT5kYXRhc2l6 ZSk7Cj4+ID4gICAgICAgICAgICAgIH0KPj4gPiAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAo bWV0YS0+dGFnLCAiQVBJQyIpICYmIGFwaWMpCj4+ID4gQEAgLTExMTMsOSArMTExNywxMCBAQCBz dGF0aWMgaW50IGlkM19oYXNfY2hhbmdlZF92YWx1ZXMoc3RydWN0Cj4+IHBsYXlsaXN0ICpwbHMs IEFWRGljdGlvbmFyeSAqbWV0YWRhdGEsCj4+ID4gIHsKPj4gPiAgICAgIGNvbnN0IEFWRGljdGlv bmFyeUVudHJ5ICplbnRyeSA9IE5VTEw7Cj4+ID4gICAgICBjb25zdCBBVkRpY3Rpb25hcnlFbnRy eSAqb2xkZW50cnk7Cj4+ID4gKwo+PiA+ICAgICAgLyogY2hlY2sgdGhhdCBubyBrZXlzIGhhdmUg Y2hhbmdlZCB2YWx1ZXMgKi8KPj4gPiAgICAgIHdoaWxlICgoZW50cnkgPSBhdl9kaWN0X2l0ZXJh dGUobWV0YWRhdGEsIGVudHJ5KSkpIHsKPj4gPiAtICAgICAgICBvbGRlbnRyeSA9IGF2X2RpY3Rf Z2V0KHBscy0+aWQzX2luaXRpYWwsIGVudHJ5LT5rZXksIE5VTEwsCj4+IEFWX0RJQ1RfTUFUQ0hf Q0FTRSk7Cj4+ID4gKyAgICAgICAgb2xkZW50cnkgPSBhdl9kaWN0X2dldChwbHMtPmxhc3RfaWQz LCBlbnRyeS0+a2V5LCBOVUxMLAo+PiBBVl9ESUNUX01BVENIX0NBU0UpOwo+PiA+ICAgICAgICAg IGlmICghb2xkZW50cnkgfHwgc3RyY21wKG9sZGVudHJ5LT52YWx1ZSwgZW50cnktPnZhbHVlKSAh PSAwKQo+PiA+ICAgICAgICAgICAgICByZXR1cm4gMTsKPj4gPiAgICAgIH0KPj4gPiBAQCAtMTE0 MywzNSArMTE0OCw0MCBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfaWQzKEFWSU9Db250ZXh0ICpwYiwg c3RydWN0Cj4+IHBsYXlsaXN0ICpwbHMpCj4+ID4gICAgICBJRDN2MkV4dHJhTWV0YUFQSUMgKmFw aWMgPSBOVUxMOwo+PiA+ICAgICAgSUQzdjJFeHRyYU1ldGEgKmV4dHJhX21ldGEgPSBOVUxMOwo+ PiA+ICAgICAgaW50NjRfdCB0aW1lc3RhbXAgPSBBVl9OT1BUU19WQUxVRTsKPj4gPiArICAgIC8v IE9ubHkgc2V0IGF1ZGlvX3NldHVwX2luZm8gb24gZmlyc3QgaWQzIGNodW5rLgo+PiA+ICsgICAg SExTQXVkaW9TZXR1cEluZm8gKmF1ZGlvX3NldHVwX2luZm8gPSBwbHMtPmxhc3RfaWQzID8gTlVM TCA6Cj4+ICZwbHMtPmF1ZGlvX3NldHVwX2luZm87Cj4+ID4KPj4gPiAtICAgIHBhcnNlX2lkMyhw bHMtPmN0eCwgcGIsICZtZXRhZGF0YSwgJnRpbWVzdGFtcCwKPj4gJnBscy0+YXVkaW9fc2V0dXBf aW5mbywgJmFwaWMsICZleHRyYV9tZXRhKTsKPj4gPiArICAgIHBhcnNlX2lkMyhwbHMtPmN0eCwg cGIsICZtZXRhZGF0YSwgJnRpbWVzdGFtcCwgYXVkaW9fc2V0dXBfaW5mbywKPj4gJmFwaWMsICZl eHRyYV9tZXRhKTsKPj4gPgo+PiA+IC0gICAgaWYgKHRpbWVzdGFtcCAhPSBBVl9OT1BUU19WQUxV RSkgewo+PiA+ICsgICAgaWYgKHBscy0+aWQzX21wZWd0c190aW1lc3RhbXAgPT0gQVZfTk9QVFNf VkFMVUUgJiYgdGltZXN0YW1wICE9Cj4+IEFWX05PUFRTX1ZBTFVFKSB7Cj4+ID4gICAgICAgICAg cGxzLT5pZDNfbXBlZ3RzX3RpbWVzdGFtcCA9IHRpbWVzdGFtcDsKPj4gPiAgICAgICAgICBwbHMt PmlkM19vZmZzZXQgPSAwOwo+PiA+ICAgICAgfQo+PiA+Cj4+ID4gLSAgICBpZiAoIXBscy0+aWQz X2ZvdW5kKSB7Cj4+ID4gLSAgICAgICAgLyogaW5pdGlhbCBJRDMgdGFncyAqLwo+PiA+IC0gICAg ICAgIGF2X2Fzc2VydDAoIXBscy0+aWQzX2RlZmVycmVkX2V4dHJhKTsKPj4gPiAtICAgICAgICBw bHMtPmlkM19mb3VuZCA9IDE7Cj4+ID4gLQo+PiA+ICsgICAgaWYgKGlkM19oYXNfY2hhbmdlZF92 YWx1ZXMocGxzLCBtZXRhZGF0YSwgYXBpYykpIHsKPj4gPiAgICAgICAgICAvKiBnZXQgcGljdHVy ZSBhdHRhY2htZW50IGFuZCBzZXQgdGV4dCBtZXRhZGF0YSAqLwo+PiA+ICAgICAgICAgIGlmIChw bHMtPmN0eC0+bmJfc3RyZWFtcykKPj4gPiAgICAgICAgICAgICAgZmZfaWQzdjJfcGFyc2VfYXBp YyhwbHMtPmN0eCwgZXh0cmFfbWV0YSk7Cj4+ID4gLSAgICAgICAgZWxzZQo+PiA+ICsgICAgICAg IGVsc2Ugewo+PiA+ICsgICAgICAgICAgICBhdl9hc3NlcnQwKCFwbHMtPmlkM19kZWZlcnJlZF9l eHRyYSk7Cj4+ID4gICAgICAgICAgICAgIC8qIGRlbXV4ZXIgbm90IHlldCBvcGVuZWQsIGRlZmVy IHBpY3R1cmUgYXR0YWNobWVudCAqLwo+PiA+ICAgICAgICAgICAgICBwbHMtPmlkM19kZWZlcnJl ZF9leHRyYSA9IGV4dHJhX21ldGE7Cj4+ID4gKyAgICAgICAgfQo+PiA+Cj4+ID4gICAgICAgICAg ZmZfaWQzdjJfcGFyc2VfcHJpdl9kaWN0KCZtZXRhZGF0YSwgZXh0cmFfbWV0YSk7Cj4+ID4gKwo+ PiA+ICsgICAgICAgIGF2X2RpY3Rfc2V0KCZtZXRhZGF0YSwgSUQzdjJfUFJJVl9PV05FUl9UUywg TlVMTCwgMCk7Cj4+ID4gKyAgICAgICAgYXZfZGljdF9zZXQoJm1ldGFkYXRhLCBJRDN2Ml9QUklW X09XTkVSX0FVRElPX1NFVFVQLCBOVUxMLCAwKTsKPj4gPiArCj4+ID4gKyAgICAgICAgYXZfZGlj dF9mcmVlKCZwbHMtPmN0eC0+bWV0YWRhdGEpOwo+PiA+ICAgICAgICAgIGF2X2RpY3RfY29weSgm cGxzLT5jdHgtPm1ldGFkYXRhLCBtZXRhZGF0YSwgMCk7Cj4+ID4gLSAgICAgICAgcGxzLT5pZDNf aW5pdGlhbCA9IG1ldGFkYXRhOwo+PiA+Cj4+ID4gKyAgICAgICAgaWYgKHBscy0+bl9tYWluX3N0 cmVhbXMpCj4+ID4gKyAgICAgICAgICAgIGF2X2RpY3RfY29weSgmcGxzLT5tYWluX3N0cmVhbXNb MF0tPm1ldGFkYXRhLCBtZXRhZGF0YSwgMCk7Cj4+ID4gKwo+PiA+ICsgICAgICAgIGlmIChwbHMt Pmxhc3RfaWQzKSBhdl9kaWN0X2ZyZWUoJnBscy0+bGFzdF9pZDMpOwo+PiA+ICsgICAgICAgIHBs cy0+bGFzdF9pZDMgPSBtZXRhZGF0YTsKPj4gPiAgICAgIH0gZWxzZSB7Cj4+ID4gLSAgICAgICAg aWYgKCFwbHMtPmlkM19jaGFuZ2VkICYmIGlkM19oYXNfY2hhbmdlZF92YWx1ZXMocGxzLCBtZXRh ZGF0YSwKPj4gYXBpYykpIHsKPj4gPiAtICAgICAgICAgICAgYXZwcml2X3JlcG9ydF9taXNzaW5n X2ZlYXR1cmUocGxzLT5wYXJlbnQsICJDaGFuZ2luZyBJRDMKPj4gbWV0YWRhdGEgaW4gSExTIGF1 ZGlvIGVsZW1lbnRhcnkgc3RyZWFtIik7Cj4+ID4gLSAgICAgICAgICAgIHBscy0+aWQzX2NoYW5n ZWQgPSAxOwo+PiA+IC0gICAgICAgIH0KPj4gPiAgICAgICAgICBhdl9kaWN0X2ZyZWUoJm1ldGFk YXRhKTsKPj4gPiAgICAgIH0KPj4gPgo+PiA+IC0tCj4+ID4gMi4zOS4zIChBcHBsZSBHaXQtMTQ1 KQo+PiA+Cj4+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KPj4gPiBmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0Cj4+ID4gZmZtcGVnLWRldmVsQGZmbXBl Zy5vcmcKPj4gPiBodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2 ZWwKPj4gPgo+PiA+IFRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbAo+ PiA+IGZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNj cmliZSIuCj4+Cj4+IEkgbG9vayBhdCB0aGUgc2Vjb25kIHBhdGNoIHJlc3VsdDoKPj4KPj4gbWFr ZTogKioqIFtmYXRlLWhscy1hZHRzLW1ldGEtZGVtdXhdIEVycm9yIDEKPj4gY3B1X2ZsYWdzKHJh dykgPSAweDAwMDgxM0RCCj4+IGNwdV9mbGFnc19zdHIocmF3KSA9IG1teCBtbXhleHQgc3NlIHNz ZTIgc3NlMyBzc3NlMyBzc2U0LjEgc3NlNC4yIGNtb3YKPj4gYWVzbmkKPj4gY3B1X2ZsYWdzKGVm ZmVjdGl2ZSkgPSAweDAwMDgxM0RCCj4+IGNwdV9mbGFnc19zdHIoZWZmZWN0aXZlKSA9IG1teCBt bXhleHQgc3NlIHNzZTIgc3NlMyBzc3NlMyBzc2U0LjEKPj4gc3NlNC4yIGNtb3YgYWVzbmkKPj4g dGhyZWFkcyA9IDEgKGNwdV9jb3VudCA9IDUpCj4+IG1ha2U6IFRhcmdldCAnZmF0ZScgbm90IHJl bWFkZSBiZWNhdXNlIG9mIGVycm9ycy4KPj4KPj4KPj4KPj4KPj4gaHR0cHM6Ly9wYXRjaHdvcmsu ZmZtcGVnLm9yZy9wcm9qZWN0L2ZmbXBlZy9wYXRjaC8yMDI0MDMyNjAwNTYzOS4yNzAwMC0yLXRv b3RzQHJhc3RhZ2Vla3Mub3JnLwo+Pgo+Pgo+IE9rLiBUaGUgc2FtcGxlcyBhcmUgaGVyZToKPiBo dHRwczovL3d3dy5kcm9wYm94LmNvbS9zY2wvZm8vMXg3NHp0b2E2eW85cTQ5aWduZm50L2g/cmxr ZXk9eHZnNW5oZ2pyNTE1Z202YjM3NWV2bThuNCZkbD0wCj4KPiBJZiB5b3UgcGxhY2UgdGhlbSB1 bmRlciAkRkFURV9TQU1QTEVTL2hscy1hZHRzLW1ldGEgdGhlIHRlc3Qgc3VpdGUgc2hvdWxkCj4g cGFzcy4KPgo+IEFyZSB5b3UgdGhlIHJpZ2h0IHBlcnNvbiB0byBhbHNvIHVwbG9hZCB0aGUgc2Ft cGxlcz8KPgo+IFRoYW5rcyBmb3IgeW91ciB0aW1lIG9uIHRoaXMhCj4KPgo+Pgo+PiBUaGFua3MK Pj4gU3RldmVuCj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4+IGZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKPj4gZmZtcGVnLWRldmVsQGZmbXBlZy5v cmcKPj4gaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCj4+ Cj4+IFRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbAo+PiBmZm1wZWct ZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo+Pgo+ Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1k ZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcu b3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQg bGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRo IHN1YmplY3QgInVuc3Vic2NyaWJlIi4K