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 3904947BC2 for ; Fri, 3 Nov 2023 14:08:53 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0252D68CD39; Fri, 3 Nov 2023 16:08:50 +0200 (EET) Received: from mail-pj1-f44.google.com (mail-pj1-f44.google.com [209.85.216.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 280BB68CC66 for ; Fri, 3 Nov 2023 16:08:44 +0200 (EET) Received: by mail-pj1-f44.google.com with SMTP id 98e67ed59e1d1-2809748bdb0so467880a91.0 for ; Fri, 03 Nov 2023 07:08:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1699020522; x=1699625322; 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=5EK2Mx+/4x0oCMx7J7rGbSnAkFF6DIPji15Y2xxgw+0=; b=TLl0dRHxOHm4h7npbBkTbuJzQydkLARPT0ruz17Jo/0A6cZyAFR6ceBWw8wHmpz0yd wWeBhYuljyWLCnJCln/rT9dT0uojo+Lq15Pic0J2aOazE7kqEEaEGVDlQk9IU8m4BBv7 7ZNDcDU3wtyPhxRfDf/yc/CxziX/wF+WifzlTncHtcDAh760N6MNVpzN5LawJYjFNHcC leFV0ghwda2C43vVEhRryVAniLfZw76lugFaZEqa8K6mFh+aDrX/BEOxYqCfVBrB1LU7 muLUeU0FuaPP/sF882ruZ6gIJhznp8RbaADugc1qZwWgj3PYE1CzRNA+ZOrTojXfLXm6 aUWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699020522; x=1699625322; 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=5EK2Mx+/4x0oCMx7J7rGbSnAkFF6DIPji15Y2xxgw+0=; b=kWOMMFiDY8rJGgT+6brH/nKhSM/nyhJ2iEnX4XHCnrEPErpC0jlVe5GrIvs75WJfcJ CNJ12WAf7rsxahAyGld8BvCSDa7tIZjcanLFUaLqXAsrsjs+QklarpUkCyecvSRkb9Qv RwavfufoeGPahwN561y4zhBZrcHcwulbcubKASBdsSg1OkMlUOhFExKdh3ykJC3UIHlS FoMY5aD8YKGVdCNfuMtqpnG9CJ1yXPKXLnj/WegrWgTnnqfUfJsOFtNWJT1PVt7uhLzl nmrz76uQ/7bZ/SKqjbtL9jruiDO5TL44kUNO/RwFCG4b7HAGguBArJGdFoLjs1JTu1j7 G4pQ== X-Gm-Message-State: AOJu0YydLjhQzOBPDX8uvTQYtGKWUMRlywZp2dQbnWB5JIEsbXYw+N8U sIdSLGDJaouiIsRpH1mV7T5NGF1JRe3L2cQoICc= X-Google-Smtp-Source: AGHT+IG+Zta5G7Y+bF0Xz7Harwgow6nHOquYHaegdS+QomU5lyYayGYrTRO+szIb4Wzj2AVjPUwWZ0zVSOPXXbs4z6k= X-Received: by 2002:a17:90b:3597:b0:274:60c7:e15a with SMTP id mm23-20020a17090b359700b0027460c7e15amr21110416pjb.4.1699020521739; Fri, 03 Nov 2023 07:08:41 -0700 (PDT) MIME-Version: 1.0 References: <20231103051757.7702-1-toots@rastageeks.org> In-Reply-To: From: Romain Beauxis Date: Fri, 3 Nov 2023 09:08:30 -0500 Message-ID: To: andreas.rheinhardt@outlook.com Subject: Re: [FFmpeg-devel] [PATCH v2] Extract av_hls_codec_attr 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: ffmpeg-devel@ffmpeg.org 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: TGUgdmVuLiAzIG5vdi4gMjAyMyDDoCAwMzowMCwgQW5kcmVhcyBSaGVpbmhhcmR0CjxhbmRyZWFz LnJoZWluaGFyZHRAb3V0bG9vay5jb20+IGEgw6ljcml0IDoKPgo+IFJvbWFpbiBCZWF1eGlzOgo+ ID4gVGhlIGxvZ2ljIGZvciBleHRyYWN0aW5nIEhMUyBjb2RlYyBhdHRyaWJ1dGUgc3RyaW5ncyBp cyB2ZXJ5IHVzZWZ1bCBhbmQKPiA+IGNhbiBiZSByZS11c2VkIGluIG1hbnkgZGlmZmVyZW50IHNp dHVhdGlvbnMgd2hlbiB3b3JraW5nIHdpdGggSExTCj4gPiBzdHJlYW1zIHVzaW5nIGxpYmF2Y29k ZWMvbGliYXZmb3JtYXQuCj4gPgo+ID4gVGhpcyBwYXRjaCBleHRyYWN0cyB0aGUgZnVuY3Rpb24n cyBjb2RlIGFuZCBwbGFjZXMgaXQgaW50byBhIHB1YmxpY2x5Cj4gPiBhdmFpbGFibGUgZnVuY3Rp b24uCj4gPgo+ID4gRGlmZmVyZW5jZXMgc2luY2UgdjE6Cj4gPiAtIGZmX25hbF91bml0X2V4dHJh Y3RfcmJzcCByZW5hbWVkIGludG8gYXZwcml2X25hbF91bml0X2V4dHJhY3RfcmJzcCB0bwo+ID4g ICBmb2xsb3cgdGhlIGFwcHJvcHJpYXRlIGxpYnJhcnkgY3Jvc3MtbGlua2luZyBjb252ZW50aW9u Lgo+ID4KPiA+IC0tLQo+ID4gIGxpYmF2Y29kZWMvTWFrZWZpbGUgIHwgICAyICsKPiA+ICBsaWJh dmNvZGVjL2hscy5jICAgICB8IDEwNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCj4gPiAgbGliYXZjb2RlYy9obHMuaCAgICAgfCAgNDIgKysrKysrKysrKysrKysr KysKPiA+ICBsaWJhdmZvcm1hdC9hdmMuYyAgICB8ICAgNCArLQo+ID4gIGxpYmF2Zm9ybWF0L2F2 Yy5oICAgIHwgICAyICstCj4gPiAgbGliYXZmb3JtYXQvaGV2Yy5jICAgfCAgIDIgKy0KPiA+ICBs aWJhdmZvcm1hdC9obHNlbmMuYyB8ICA4MyArKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCj4gPiAgNyBmaWxlcyBjaGFuZ2VkLCAxNTkgaW5zZXJ0aW9ucygrKSwgODEgZGVsZXRpb25z KC0pCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvaGxzLmMKPiA+ICBjcmVhdGUg bW9kZSAxMDA2NDQgbGliYXZjb2RlYy9obHMuaAo+ID4KPiA+IGRpZmYgLS1naXQgYS9saWJhdmNv ZGVjL01ha2VmaWxlIGIvbGliYXZjb2RlYy9NYWtlZmlsZQo+ID4gaW5kZXggNTgwYThkNmI1NC4u YjNiMmIxODk4MCAxMDA2NDQKPiA+IC0tLSBhL2xpYmF2Y29kZWMvTWFrZWZpbGUKPiA+ICsrKyBi L2xpYmF2Y29kZWMvTWFrZWZpbGUKPiA+IEBAIC0xNiw2ICsxNiw3IEBAIEhFQURFUlMgPSBhYzNf cGFyc2VyLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKPiA+ICAgICAgICAgICAgZGlyYWMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCj4gPiAgICAgICAgICAgIGR2X3Byb2ZpbGUuaCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ID4gICAgICAg ICAgICBkeHZhMi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKPiA+ICsgICAgICAgICAgaGxzLmggICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gPiAgICAgICAgICAgIGpuaS5oICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ ID4gICAgICAgICAgICBtZWRpYWNvZGVjLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKPiA+ICAgICAgICAgICAgcGFja2V0LmggICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gPiBAQCAtNDcsNiAr NDgsNyBAQCBPQkpTID0gYWMzX3BhcnNlci5vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCj4gPiAgICAgICAgIGdldF9idWZmZXIubyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ID4gICAgICAg ICBpbWdjb252ZXJ0Lm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKPiA+ICAgICAgICAgam5pLm8gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gPiArICAgICAgIGhscy5vICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+ ID4gICAgICAgICBtYXRodGFibGVzLm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKPiA+ICAgICAgICAgbWVkaWFjb2RlYy5vICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gPiAgICAgICAgIG1w ZWcxMmZyYW1lcmF0ZS5vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAo+ID4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvaGxzLmMgYi9saWJhdmNvZGVjL2hs cy5jCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAwMC4uMDVhNjI3 N2RiYwo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvbGliYXZjb2RlYy9obHMuYwo+ID4gQEAg LTAsMCArMSwxMDUgQEAKPiA+ICsvKgo+ID4gKyAqIEhMUyBwdWJsaWMgQVBJCj4gPiArICoKPiA+ ICsgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCj4gPiArICoKPiA+ICsgKiBGRm1wZWcg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCj4gPiArICog bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp Ywo+ID4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlcgo+ID4gKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ID4gKyAqCj4gPiArICogRkZtcGVnIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4gPiArICog YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKPiA+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlIEdOVQo+ID4gKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCj4gPiArICoKPiA+ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gPiArICogTGlj ZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy ZQo+ID4gKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv b3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKPiA+ICsgKi8KPiA+ICsKPiA+ICsjaW5jbHVk ZSAiaGxzLmgiCj4gPiArI2luY2x1ZGUgImxpYmF2dXRpbC9pbnRyZWFkd3JpdGUuaCIKPiA+ICsj aW5jbHVkZSAibGliYXZmb3JtYXQvYXZjLmgiCj4gPiArCj4gPiAraW50IGF2X2hsc19jb2RlY19h dHRyKEFWU3RyZWFtICpzdCwgY2hhciAqYXR0ciwgc2l6ZV90IGF0dHJfbGVuKSB7Cj4gPiArICBp ZiAoc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IMjY0KSB7Cj4gPiArICAg ICAgdWludDhfdCAqZGF0YSA9IHN0LT5jb2RlY3Bhci0+ZXh0cmFkYXRhOwo+ID4gKyAgICAgIGlm IChkYXRhKSB7Cj4gPiArICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnA7Cj4gPiArCj4gPiArICAg ICAgICAgIGlmIChBVl9SQjMyKGRhdGEpID09IDB4MDEgJiYgKGRhdGFbNF0gJiAweDFGKSA9PSA3 KQo+ID4gKyAgICAgICAgICAgICAgcCA9ICZkYXRhWzVdOwo+ID4gKyAgICAgICAgICBlbHNlIGlm IChBVl9SQjI0KGRhdGEpID09IDB4MDEgJiYgKGRhdGFbM10gJiAweDFGKSA9PSA3KQo+ID4gKyAg ICAgICAgICAgICAgcCA9ICZkYXRhWzRdOwo+ID4gKyAgICAgICAgICBlbHNlIGlmIChkYXRhWzBd ID09IDB4MDEpICAvKiBhdmNDICovCj4gPiArICAgICAgICAgICAgICBwID0gJmRhdGFbMV07Cj4g PiArICAgICAgICAgIGVsc2UKPiA+ICsgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFM SUREQVRBOwo+ID4gKyAgICAgICAgICBzbnByaW50ZihhdHRyLCBhdHRyX2xlbiwKPiA+ICsgICAg ICAgICAgICAgICAgICAgImF2YzEuJTAyeCUwMnglMDJ4IiwgcFswXSwgcFsxXSwgcFsyXSk7Cj4g PiArICAgICAgfSBlbHNlIHsKPiA+ICsgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERB VEE7Cj4gPiArICAgICAgfQo+ID4gKyAgfSBlbHNlIGlmIChzdC0+Y29kZWNwYXItPmNvZGVjX2lk ID09IEFWX0NPREVDX0lEX0hFVkMpIHsKPiA+ICsgICAgICB1aW50OF90ICpkYXRhID0gc3QtPmNv ZGVjcGFyLT5leHRyYWRhdGE7Cj4gPiArICAgICAgaW50IHByb2ZpbGUgPSBBVl9QUk9GSUxFX1VO S05PV047Cj4gPiArICAgICAgaW50IGxldmVsID0gQVZfTEVWRUxfVU5LTk9XTjsKPiA+ICsKPiA+ ICsgICAgICBpZiAoc3QtPmNvZGVjcGFyLT5wcm9maWxlICE9IEFWX1BST0ZJTEVfVU5LTk9XTikK PiA+ICsgICAgICAgICAgcHJvZmlsZSA9IHN0LT5jb2RlY3Bhci0+cHJvZmlsZTsKPiA+ICsgICAg ICBpZiAoc3QtPmNvZGVjcGFyLT5sZXZlbCAhPSBBVl9MRVZFTF9VTktOT1dOKQo+ID4gKyAgICAg ICAgICBsZXZlbCA9IHN0LT5jb2RlY3Bhci0+bGV2ZWw7Cj4gPiArCj4gPiArICAgICAgLyogY2hl Y2sgdGhlIGJvdW5kYXJ5IG9mIGRhdGEgd2hpY2ggZnJvbSBjdXJyZW50IHBvc2l0aW9uIGlzIHNt YWxsIHRoYW4gZXh0cmFkYXRhX3NpemUgKi8KPiA+ICsgICAgICB3aGlsZSAoZGF0YSAmJiAoZGF0 YSAtIHN0LT5jb2RlY3Bhci0+ZXh0cmFkYXRhICsgMTkpIDwgc3QtPmNvZGVjcGFyLT5leHRyYWRh dGFfc2l6ZSkgewo+ID4gKyAgICAgICAgICAvKiBnZXQgSEVWQyBTUFMgTkFMIGFuZCBzZWVrIHRv IHByb2ZpbGVfdGllcl9sZXZlbCAqLwo+ID4gKyAgICAgICAgICBpZiAoIShkYXRhWzBdIHwgZGF0 YVsxXSB8IGRhdGFbMl0pICYmIGRhdGFbM10gPT0gMSAmJiAoKGRhdGFbNF0gJiAweDdFKSA9PSAw eDQyKSkgewo+ID4gKyAgICAgICAgICAgICAgdWludDhfdCAqcmJzcF9idWY7Cj4gPiArICAgICAg ICAgICAgICBpbnQgcmVtYWluX3NpemUgPSAwOwo+ID4gKyAgICAgICAgICAgICAgaW50IHJic3Bf c2l6ZSA9IDA7Cj4gPiArICAgICAgICAgICAgICAvKiBza2lwIHN0YXJ0IGNvZGUgKyBuYWx1IGhl YWRlciAqLwo+ID4gKyAgICAgICAgICAgICAgZGF0YSArPSA2Owo+ID4gKyAgICAgICAgICAgICAg LyogcHJvY2VzcyBieSByZWZlcmVuY2UgR2VuZXJhbCBOQUwgdW5pdCBzeW50YXggKi8KPiA+ICsg ICAgICAgICAgICAgIHJlbWFpbl9zaXplID0gc3QtPmNvZGVjcGFyLT5leHRyYWRhdGFfc2l6ZSAt IChkYXRhIC0gc3QtPmNvZGVjcGFyLT5leHRyYWRhdGEpOwo+ID4gKyAgICAgICAgICAgICAgcmJz cF9idWYgPSBhdnByaXZfbmFsX3VuaXRfZXh0cmFjdF9yYnNwKGRhdGEsIHJlbWFpbl9zaXplLCAm cmJzcF9zaXplLCAwKTsKPiA+ICsgICAgICAgICAgICAgIGlmICghcmJzcF9idWYpCj4gPiArICAg ICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gPiArICAgICAgICAg ICAgICBpZiAocmJzcF9zaXplIDwgMTMpIHsKPiA+ICsgICAgICAgICAgICAgICAgICBhdl9mcmVl cCgmcmJzcF9idWYpOwo+ID4gKyAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gKyAgICAgICAg ICAgICAgfQo+ID4gKyAgICAgICAgICAgICAgLyogc2tpcCBzcHNfdmlkZW9fcGFyYW1ldGVyX3Nl dF9pZCAgIHUoNCksCj4gPiArICAgICAgICAgICAgICAgKiAgICAgIHNwc19tYXhfc3ViX2xheWVy c19taW51czEgICAgdSgzKSwKPiA+ICsgICAgICAgICAgICAgICAqICBhbmQgc3BzX3RlbXBvcmFs X2lkX25lc3RpbmdfZmxhZyB1KDEpICovCj4gPiArICAgICAgICAgICAgICBwcm9maWxlID0gcmJz cF9idWZbMV0gJiAweDFmOwo+ID4gKyAgICAgICAgICAgICAgLyogc2tpcCA4ICsgOCArIDMyICsg NCArIDQzICsgMSBiaXQgKi8KPiA+ICsgICAgICAgICAgICAgIGxldmVsID0gcmJzcF9idWZbMTJd Owo+ID4gKyAgICAgICAgICAgICAgYXZfZnJlZXAoJnJic3BfYnVmKTsKPiA+ICsgICAgICAgICAg ICAgIGJyZWFrOwo+ID4gKyAgICAgICAgICB9Cj4gPiArICAgICAgICAgIGRhdGErKzsKPiA+ICsg ICAgICB9Cj4gPiArICAgICAgaWYgKHN0LT5jb2RlY3Bhci0+Y29kZWNfdGFnID09IE1LVEFHKCdo JywndicsJ2MnLCcxJykgJiYKPiA+ICsgICAgICAgICAgcHJvZmlsZSAhPSBBVl9QUk9GSUxFX1VO S05PV04gJiYKPiA+ICsgICAgICAgICAgbGV2ZWwgIT0gQVZfTEVWRUxfVU5LTk9XTikgewo+ID4g KyAgICAgICAgICBzbnByaW50ZihhdHRyLCBhdHRyX2xlbiwgIiVzLiVkLjQuTCVkLkIwMSIsIGF2 X2ZvdXJjYzJzdHIoc3QtPmNvZGVjcGFyLT5jb2RlY190YWcpLCBwcm9maWxlLCBsZXZlbCk7Cj4g PiArICAgICAgfSBlbHNlCj4gPiArICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRB Owo+ID4gKyAgfSBlbHNlIGlmIChzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lE X01QMikgewo+ID4gKyAgICAgIHNucHJpbnRmKGF0dHIsIGF0dHJfbGVuLCAibXA0YS40MC4zMyIp Owo+ID4gKyAgfSBlbHNlIGlmIChzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lE X01QMykgewo+ID4gKyAgICAgIHNucHJpbnRmKGF0dHIsIGF0dHJfbGVuLCAibXA0YS40MC4zNCIp Owo+ID4gKyAgfSBlbHNlIGlmIChzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lE X0FBQykgewo+ID4gKyAgICAgIC8qIFRPRE8gOiBGb3IgSEUtQUFDLCBIRS1BQUN2MiwgdGhlIGxh c3QgZGlnaXQgbmVlZHMgdG8gYmUgc2V0IHRvIDUgYW5kIDI5IHJlc3BlY3RpdmVseSAqLwo+ID4g KyAgICAgIHNucHJpbnRmKGF0dHIsIGF0dHJfbGVuLCAibXA0YS40MC4yIik7Cj4gPiArICB9IGVs c2UgaWYgKHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQUMzKSB7Cj4gPiAr ICAgICAgc25wcmludGYoYXR0ciwgYXR0cl9sZW4sICJhYy0zIik7Cj4gPiArICB9IGVsc2UgaWYg KHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfRUFDMykgewo+ID4gKyAgICAg IHNucHJpbnRmKGF0dHIsIGF0dHJfbGVuLCAiZWMtMyIpOwo+ID4gKyAgfSBlbHNlIHsKPiA+ICsg ICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiA+ICsgIH0KPiA+ICsKPiA+ICsgIHJl dHVybiAwOwo+ID4gK30KPiA+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2hscy5oIGIvbGliYXZj b2RlYy9obHMuaAo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAwMDAu LjE2MGUzMWRlMTMKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2xpYmF2Y29kZWMvaGxzLmgK PiA+IEBAIC0wLDAgKzEsNDIgQEAKPiA+ICsvKgo+ID4gKyAqIEhMUyBwdWJsaWMgQVBJCj4gPiAr ICoKPiA+ICsgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCj4gPiArICoKPiA+ICsgKiBG Rm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCj4g PiArICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs IFB1YmxpYwo+ID4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlcgo+ID4gKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBv ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ID4gKyAqCj4gPiArICogRkZt cGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4g PiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKPiA+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQo+ID4gKyAqIExlc3NlciBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gPiArICoKPiA+ICsgKiBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gPiAr ICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZQo+ID4gKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm dGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKPiA+ICsgKi8KPiA+ICsKPiA+ICsv KioKPiA+ICsgKiBAZmlsZQo+ID4gKyAqIEEgcHVibGljIEFQSSBmb3IgSExTIGNvZGVjIGluZm9y bWF0aW9uCj4gPiArICovCj4gPiArCj4gPiArI2lmbmRlZiBBVkNPREVDX0hMU19ICj4gPiArI2Rl ZmluZSBBVkNPREVDX0hMU19ICj4gPiArCj4gPiArI2luY2x1ZGUgImxpYmF2Zm9ybWF0L2F2Zm9y bWF0LmgiCj4gPiArCj4gPiArLyoqCj4gPiArICogV3JpdGUgYSBOVUxMLXRlcm1pbmF0ZWQgc3Ry aW5nIHJlcHJlc2VudGluZyB0aGUgY29kZWMgYXR0cmlidXRlcwo+ID4gKyAqIGFzc29jaWF0ZWQg d2l0aCB0aGUgZ2l2ZW4gQVZTdHJlYW0uCj4gPiArICoKPiA+ICsgKiBAcGFyYW0gc3QgICAgICAg c3RyZWFtIHRvIGV4dHJhY3QgY29kZWMgYXR0cmlidXRlcyBmcm9tCj4gPiArICogQHBhcmFtIGF0 dHIgICAgIGJ1ZmZlciB0byB3cml0ZSB0aGUgY29kZWMgYXR0cmlidXRlcyB0bwo+ID4gKyAqIEBw YXJhbSBhdHRyX2xlbiBzaXplIG9mIHRoZSBidWZmZXIKPiA+ICsgKiBAcmV0dXJuIDAgb24gc3Vj Y2VzcywgYSBuZWdhdGl2ZSBBVkVSUk9SIGNvZGUgb24gZmFpbHVyZQo+ID4gKyAqLwo+ID4gK2lu dCBhdl9obHNfY29kZWNfYXR0cihBVlN0cmVhbSAqc3QsIGNoYXIgKmF0dHIsIHNpemVfdCBhdHRy X2xlbik7Cj4gPiArCj4gPiArI2VuZGlmCj4gPiBkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvYXZj LmMgYi9saWJhdmZvcm1hdC9hdmMuYwo+ID4gaW5kZXggYjBjZWIxZDJkOC4uZjg1NDgzMjcxYiAx MDA2NDQKPiA+IC0tLSBhL2xpYmF2Zm9ybWF0L2F2Yy5jCj4gPiArKysgYi9saWJhdmZvcm1hdC9h dmMuYwo+ID4gQEAgLTMwMCw3ICszMDAsNyBAQCBjb25zdCB1aW50OF90ICpmZl9hdmNfbXA0X2Zp bmRfc3RhcnRjb2RlKGNvbnN0IHVpbnQ4X3QgKnN0YXJ0LAo+ID4gICAgICByZXR1cm4gc3RhcnQg KyByZXM7Cj4gPiAgfQo+ID4KPiA+IC11aW50OF90ICpmZl9uYWxfdW5pdF9leHRyYWN0X3Jic3Ao Y29uc3QgdWludDhfdCAqc3JjLCB1aW50MzJfdCBzcmNfbGVuLAo+ID4gK3VpbnQ4X3QgKmF2cHJp dl9uYWxfdW5pdF9leHRyYWN0X3Jic3AoY29uc3QgdWludDhfdCAqc3JjLCB1aW50MzJfdCBzcmNf bGVuLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqZHN0 X2xlbiwgaW50IGhlYWRlcl9sZW4pCj4gPiAgewo+ID4gICAgICB1aW50OF90ICpkc3Q7Cj4gPiBA QCAtMzc0LDcgKzM3NCw3IEBAIGludCBmZl9hdmNfZGVjb2RlX3NwcyhIMjY0U1BTICpzcHMsIGNv bnN0IHVpbnQ4X3QgKmJ1ZiwgaW50IGJ1Zl9zaXplKQo+ID4gICAgICBHZXRCaXRDb250ZXh0IGdi Owo+ID4gICAgICB1aW50OF90ICpyYnNwX2J1ZjsKPiA+Cj4gPiAtICAgIHJic3BfYnVmID0gZmZf bmFsX3VuaXRfZXh0cmFjdF9yYnNwKGJ1ZiwgYnVmX3NpemUsICZyYnNwX3NpemUsIDApOwo+ID4g KyAgICByYnNwX2J1ZiA9IGF2cHJpdl9uYWxfdW5pdF9leHRyYWN0X3Jic3AoYnVmLCBidWZfc2l6 ZSwgJnJic3Bfc2l6ZSwgMCk7Cj4gPiAgICAgIGlmICghcmJzcF9idWYpCj4gPiAgICAgICAgICBy ZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+ID4KPiA+IGRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9h dmMuaCBiL2xpYmF2Zm9ybWF0L2F2Yy5oCj4gPiBpbmRleCAwY2U5NWMxOTRlLi4wYmRhYmExNjJi IDEwMDY0NAo+ID4gLS0tIGEvbGliYXZmb3JtYXQvYXZjLmgKPiA+ICsrKyBiL2xpYmF2Zm9ybWF0 L2F2Yy5oCj4gPiBAQCAtNjMsNyArNjMsNyBAQCBpbnQgZmZfYXZjX3dyaXRlX2FubmV4Yl9leHRy YWRhdGEoY29uc3QgdWludDhfdCAqaW4sIHVpbnQ4X3QgKipidWYsIGludCAqc2l6ZSk7Cj4gPiAg Y29uc3QgdWludDhfdCAqZmZfYXZjX21wNF9maW5kX3N0YXJ0Y29kZShjb25zdCB1aW50OF90ICpz dGFydCwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHVpbnQ4X3QgKmVuZCwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludCBuYWxfbGVuZ3RoX3NpemUpOwo+ID4gLXVpbnQ4X3QgKmZmX25hbF91bml0X2V4dHJh Y3RfcmJzcChjb25zdCB1aW50OF90ICpzcmMsIHVpbnQzMl90IHNyY19sZW4sCj4gPiArdWludDhf dCAqYXZwcml2X25hbF91bml0X2V4dHJhY3RfcmJzcChjb25zdCB1aW50OF90ICpzcmMsIHVpbnQz Ml90IHNyY19sZW4sCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz Ml90ICpkc3RfbGVuLCBpbnQgaGVhZGVyX2xlbik7Cj4gPgo+ID4gIHR5cGVkZWYgc3RydWN0IHsK PiA+IGRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9oZXZjLmMgYi9saWJhdmZvcm1hdC9oZXZjLmMK PiA+IGluZGV4IGNhNTE4N2E5MmUuLjVlYTQyODBlYmUgMTAwNjQ0Cj4gPiAtLS0gYS9saWJhdmZv cm1hdC9oZXZjLmMKPiA+ICsrKyBiL2xpYmF2Zm9ybWF0L2hldmMuYwo+ID4gQEAgLTcwOCw3ICs3 MDgsNyBAQCBzdGF0aWMgaW50IGh2Y2NfYWRkX25hbF91bml0KHVpbnQ4X3QgKm5hbF9idWYsIHVp bnQzMl90IG5hbF9zaXplLAo+ID4gICAgICB1aW50OF90ICpyYnNwX2J1ZjsKPiA+ICAgICAgdWlu dDMyX3QgcmJzcF9zaXplOwo+ID4KPiA+IC0gICAgcmJzcF9idWYgPSBmZl9uYWxfdW5pdF9leHRy YWN0X3Jic3AobmFsX2J1ZiwgbmFsX3NpemUsICZyYnNwX3NpemUsIDIpOwo+ID4gKyAgICByYnNw X2J1ZiA9IGF2cHJpdl9uYWxfdW5pdF9leHRyYWN0X3Jic3AobmFsX2J1ZiwgbmFsX3NpemUsICZy YnNwX3NpemUsIDIpOwo+ID4gICAgICBpZiAoIXJic3BfYnVmKSB7Cj4gPiAgICAgICAgICByZXQg PSBBVkVSUk9SKEVOT01FTSk7Cj4gPiAgICAgICAgICBnb3RvIGVuZDsKPiA+IGRpZmYgLS1naXQg YS9saWJhdmZvcm1hdC9obHNlbmMuYyBiL2xpYmF2Zm9ybWF0L2hsc2VuYy5jCj4gPiBpbmRleCA0 ZWY4NGMwNWMxLi4xYzBhMzVjMzZkIDEwMDY0NAo+ID4gLS0tIGEvbGliYXZmb3JtYXQvaGxzZW5j LmMKPiA+ICsrKyBiL2xpYmF2Zm9ybWF0L2hsc2VuYy5jCj4gPiBAQCAtNDAsNiArNDAsNyBAQAo+ ID4gICNpbmNsdWRlICJsaWJhdnV0aWwvdGltZV9pbnRlcm5hbC5oIgo+ID4KPiA+ICAjaW5jbHVk ZSAibGliYXZjb2RlYy9kZWZzLmgiCj4gPiArI2luY2x1ZGUgImxpYmF2Y29kZWMvaGxzLmgiCj4g Pgo+ID4gICNpbmNsdWRlICJhdmZvcm1hdC5oIgo+ID4gICNpbmNsdWRlICJhdmlvX2ludGVybmFs LmgiCj4gPiBAQCAtMzQ0LDg5ICszNDUsMTcgQEAgc3RhdGljIHZvaWQgd3JpdGVfY29kZWNfYXR0 cihBVlN0cmVhbSAqc3QsIFZhcmlhbnRTdHJlYW0gKnZzKQo+ID4gIHsKPiA+ICAgICAgaW50IGNv ZGVjX3N0cmxlbiA9IHN0cmxlbih2cy0+Y29kZWNfYXR0cik7Cj4gPiAgICAgIGNoYXIgYXR0clsz Ml07Cj4gPiArICAgIGludCByZXQ7Cj4gPgo+ID4gICAgICBpZiAoc3QtPmNvZGVjcGFyLT5jb2Rl Y190eXBlID09IEFWTUVESUFfVFlQRV9TVUJUSVRMRSkKPiA+ICAgICAgICAgIHJldHVybjsKPiA+ ICAgICAgaWYgKHZzLT5hdHRyX3N0YXR1cyA9PSBDT0RFQ19BVFRSSUJVVEVfV0lMTF9OT1RfQkVf V1JJVFRFTikKPiA+ICAgICAgICAgIHJldHVybjsKPiA+Cj4gPiAtICAgIGlmIChzdC0+Y29kZWNw YXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQpIHsKPiA+IC0gICAgICAgIHVpbnQ4X3Qg KmRhdGEgPSBzdC0+Y29kZWNwYXItPmV4dHJhZGF0YTsKPiA+IC0gICAgICAgIGlmIChkYXRhKSB7 Cj4gPiAtICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcDsKPiA+IC0KPiA+IC0gICAgICAgICAg ICBpZiAoQVZfUkIzMihkYXRhKSA9PSAweDAxICYmIChkYXRhWzRdICYgMHgxRikgPT0gNykKPiA+ IC0gICAgICAgICAgICAgICAgcCA9ICZkYXRhWzVdOwo+ID4gLSAgICAgICAgICAgIGVsc2UgaWYg KEFWX1JCMjQoZGF0YSkgPT0gMHgwMSAmJiAoZGF0YVszXSAmIDB4MUYpID09IDcpCj4gPiAtICAg ICAgICAgICAgICAgIHAgPSAmZGF0YVs0XTsKPiA+IC0gICAgICAgICAgICBlbHNlIGlmIChkYXRh WzBdID09IDB4MDEpICAvKiBhdmNDICovCj4gPiAtICAgICAgICAgICAgICAgIHAgPSAmZGF0YVsx XTsKPiA+IC0gICAgICAgICAgICBlbHNlCj4gPiAtICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsK PiA+IC0gICAgICAgICAgICBzbnByaW50ZihhdHRyLCBzaXplb2YoYXR0ciksCj4gPiAtICAgICAg ICAgICAgICAgICAgICAgImF2YzEuJTAyeCUwMnglMDJ4IiwgcFswXSwgcFsxXSwgcFsyXSk7Cj4g PiAtICAgICAgICB9IGVsc2Ugewo+ID4gLSAgICAgICAgICAgIGdvdG8gZmFpbDsKPiA+IC0gICAg ICAgIH0KPiA+IC0gICAgfSBlbHNlIGlmIChzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NP REVDX0lEX0hFVkMpIHsKPiA+IC0gICAgICAgIHVpbnQ4X3QgKmRhdGEgPSBzdC0+Y29kZWNwYXIt PmV4dHJhZGF0YTsKPiA+IC0gICAgICAgIGludCBwcm9maWxlID0gQVZfUFJPRklMRV9VTktOT1dO Owo+ID4gLSAgICAgICAgaW50IGxldmVsID0gQVZfTEVWRUxfVU5LTk9XTjsKPiA+IC0KPiA+IC0g ICAgICAgIGlmIChzdC0+Y29kZWNwYXItPnByb2ZpbGUgIT0gQVZfUFJPRklMRV9VTktOT1dOKQo+ ID4gLSAgICAgICAgICAgIHByb2ZpbGUgPSBzdC0+Y29kZWNwYXItPnByb2ZpbGU7Cj4gPiAtICAg ICAgICBpZiAoc3QtPmNvZGVjcGFyLT5sZXZlbCAhPSBBVl9MRVZFTF9VTktOT1dOKQo+ID4gLSAg ICAgICAgICAgIGxldmVsID0gc3QtPmNvZGVjcGFyLT5sZXZlbDsKPiA+IC0KPiA+IC0gICAgICAg IC8qIGNoZWNrIHRoZSBib3VuZGFyeSBvZiBkYXRhIHdoaWNoIGZyb20gY3VycmVudCBwb3NpdGlv biBpcyBzbWFsbCB0aGFuIGV4dHJhZGF0YV9zaXplICovCj4gPiAtICAgICAgICB3aGlsZSAoZGF0 YSAmJiAoZGF0YSAtIHN0LT5jb2RlY3Bhci0+ZXh0cmFkYXRhICsgMTkpIDwgc3QtPmNvZGVjcGFy LT5leHRyYWRhdGFfc2l6ZSkgewo+ID4gLSAgICAgICAgICAgIC8qIGdldCBIRVZDIFNQUyBOQUwg YW5kIHNlZWsgdG8gcHJvZmlsZV90aWVyX2xldmVsICovCj4gPiAtICAgICAgICAgICAgaWYgKCEo ZGF0YVswXSB8IGRhdGFbMV0gfCBkYXRhWzJdKSAmJiBkYXRhWzNdID09IDEgJiYgKChkYXRhWzRd ICYgMHg3RSkgPT0gMHg0MikpIHsKPiA+IC0gICAgICAgICAgICAgICAgdWludDhfdCAqcmJzcF9i dWY7Cj4gPiAtICAgICAgICAgICAgICAgIGludCByZW1haW5fc2l6ZSA9IDA7Cj4gPiAtICAgICAg ICAgICAgICAgIGludCByYnNwX3NpemUgPSAwOwo+ID4gLSAgICAgICAgICAgICAgICAvKiBza2lw IHN0YXJ0IGNvZGUgKyBuYWx1IGhlYWRlciAqLwo+ID4gLSAgICAgICAgICAgICAgICBkYXRhICs9 IDY7Cj4gPiAtICAgICAgICAgICAgICAgIC8qIHByb2Nlc3MgYnkgcmVmZXJlbmNlIEdlbmVyYWwg TkFMIHVuaXQgc3ludGF4ICovCj4gPiAtICAgICAgICAgICAgICAgIHJlbWFpbl9zaXplID0gc3Qt PmNvZGVjcGFyLT5leHRyYWRhdGFfc2l6ZSAtIChkYXRhIC0gc3QtPmNvZGVjcGFyLT5leHRyYWRh dGEpOwo+ID4gLSAgICAgICAgICAgICAgICByYnNwX2J1ZiA9IGZmX25hbF91bml0X2V4dHJhY3Rf cmJzcChkYXRhLCByZW1haW5fc2l6ZSwgJnJic3Bfc2l6ZSwgMCk7Cj4gPiAtICAgICAgICAgICAg ICAgIGlmICghcmJzcF9idWYpCj4gPiAtICAgICAgICAgICAgICAgICAgICByZXR1cm47Cj4gPiAt ICAgICAgICAgICAgICAgIGlmIChyYnNwX3NpemUgPCAxMykgewo+ID4gLSAgICAgICAgICAgICAg ICAgICAgYXZfZnJlZXAoJnJic3BfYnVmKTsKPiA+IC0gICAgICAgICAgICAgICAgICAgIGJyZWFr Owo+ID4gLSAgICAgICAgICAgICAgICB9Cj4gPiAtICAgICAgICAgICAgICAgIC8qIHNraXAgc3Bz X3ZpZGVvX3BhcmFtZXRlcl9zZXRfaWQgICB1KDQpLAo+ID4gLSAgICAgICAgICAgICAgICAgKiAg ICAgIHNwc19tYXhfc3ViX2xheWVyc19taW51czEgICAgdSgzKSwKPiA+IC0gICAgICAgICAgICAg ICAgICogIGFuZCBzcHNfdGVtcG9yYWxfaWRfbmVzdGluZ19mbGFnIHUoMSkgKi8KPiA+IC0gICAg ICAgICAgICAgICAgcHJvZmlsZSA9IHJic3BfYnVmWzFdICYgMHgxZjsKPiA+IC0gICAgICAgICAg ICAgICAgLyogc2tpcCA4ICsgOCArIDMyICsgNCArIDQzICsgMSBiaXQgKi8KPiA+IC0gICAgICAg ICAgICAgICAgbGV2ZWwgPSByYnNwX2J1ZlsxMl07Cj4gPiAtICAgICAgICAgICAgICAgIGF2X2Zy ZWVwKCZyYnNwX2J1Zik7Cj4gPiAtICAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gLSAgICAgICAg ICAgIH0KPiA+IC0gICAgICAgICAgICBkYXRhKys7Cj4gPiAtICAgICAgICB9Cj4gPiAtICAgICAg ICBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY190YWcgPT0gTUtUQUcoJ2gnLCd2JywnYycsJzEnKSAm Jgo+ID4gLSAgICAgICAgICAgIHByb2ZpbGUgIT0gQVZfUFJPRklMRV9VTktOT1dOICYmCj4gPiAt ICAgICAgICAgICAgbGV2ZWwgIT0gQVZfTEVWRUxfVU5LTk9XTikgewo+ID4gLSAgICAgICAgICAg IHNucHJpbnRmKGF0dHIsIHNpemVvZihhdHRyKSwgIiVzLiVkLjQuTCVkLkIwMSIsIGF2X2ZvdXJj YzJzdHIoc3QtPmNvZGVjcGFyLT5jb2RlY190YWcpLCBwcm9maWxlLCBsZXZlbCk7Cj4gPiAtICAg ICAgICB9IGVsc2UKPiA+IC0gICAgICAgICAgICBnb3RvIGZhaWw7Cj4gPiAtICAgIH0gZWxzZSBp ZiAoc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9NUDIpIHsKPiA+IC0gICAg ICAgIHNucHJpbnRmKGF0dHIsIHNpemVvZihhdHRyKSwgIm1wNGEuNDAuMzMiKTsKPiA+IC0gICAg fSBlbHNlIGlmIChzdC0+Y29kZWNwYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX01QMykgewo+ ID4gLSAgICAgICAgc25wcmludGYoYXR0ciwgc2l6ZW9mKGF0dHIpLCAibXA0YS40MC4zNCIpOwo+ ID4gLSAgICB9IGVsc2UgaWYgKHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURf QUFDKSB7Cj4gPiAtICAgICAgICAvKiBUT0RPIDogRm9yIEhFLUFBQywgSEUtQUFDdjIsIHRoZSBs YXN0IGRpZ2l0IG5lZWRzIHRvIGJlIHNldCB0byA1IGFuZCAyOSByZXNwZWN0aXZlbHkgKi8KPiA+ IC0gICAgICAgIHNucHJpbnRmKGF0dHIsIHNpemVvZihhdHRyKSwgIm1wNGEuNDAuMiIpOwo+ID4g LSAgICB9IGVsc2UgaWYgKHN0LT5jb2RlY3Bhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQUMz KSB7Cj4gPiAtICAgICAgICBzbnByaW50ZihhdHRyLCBzaXplb2YoYXR0ciksICJhYy0zIik7Cj4g PiAtICAgIH0gZWxzZSBpZiAoc3QtPmNvZGVjcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9F QUMzKSB7Cj4gPiAtICAgICAgICBzbnByaW50ZihhdHRyLCBzaXplb2YoYXR0ciksICJlYy0zIik7 Cj4gPiAtICAgIH0gZWxzZSB7Cj4gPiAtICAgICAgICBnb3RvIGZhaWw7Cj4gPiAtICAgIH0KPiA+ ICsgICAgcmV0ID0gYXZfaGxzX2NvZGVjX2F0dHIoc3QsIGF0dHIsIHNpemVvZihhdHRyKSk7Cj4g PiArICAgIGlmIChyZXQgPCAwKQo+ID4gKyAgICAgIGdvdG8gZmFpbDsKPiA+ICsKPiA+ICAgICAg Ly8gRG9uJ3Qgd3JpdGUgdGhlIHNhbWUgYXR0cmlidXRlIG11bHRpcGxlIHRpbWVzCj4gPiAgICAg IGlmICghYXZfc3RyaXN0cih2cy0+Y29kZWNfYXR0ciwgYXR0cikpIHsKPiA+ICAgICAgICAgIHNu cHJpbnRmKHZzLT5jb2RlY19hdHRyICsgY29kZWNfc3RybGVuLAo+Cj4gMS4gSSBhZ3JlZSB3aXRo IFpoYW8gdGhhdCB0aGlzIHNob3VsZCBub3QgYmUgcHVibGljLgoKV29yZC4KCj4gMi4gRGlkIHlv dSB0ZXN0IHRoaXMgd2l0aCBzaGFyZWQgYnVpbGRzPyBJdCBzaG91bGQgc3RpbGwgZmFpbCwgYmVj YXVzZQo+IGxhdmMgZG9lcyBub3QgbGluayB0byBsYXZmLiBJdCBpcyB0aGUgb3RoZXIgd2F5IGFy b3VuZC4KPiAzLiBXaHkgZGlkIHlvdSBwdXQgdGhpcyBpbiBsYXZjIGFueXdheT8KClNpbmNlIHRo ZSBmdW5jdGlvbiB0YWxrcyBhYm91dCBjb2RlYyBhdHRyaWJ1dGVzIGl0IGZlbHQgbW9yZSBuYXR1 cmFsCnRvIGhhdmUgaXQgdGhlcmUgYnV0IHNpbmNlIGhscyBsaXZlcyBpbiBsaWJhdmZvcm1hdCB0 aGVuIGl0IGNvdWxkIGFsc28KYmUgdGhlcmUsIGVzcGVjaWFsbHkgaWYgdGhhdCBmaXRzIHRoZSBs aW5raW5nIG1vZGVsIGJldHRlci4KCkkgc2VudCBhbiB1cGRhdGVkIHBhdGNoLCB0aGFua3MgZm9y IHRoZSByZXZpZXdzLgoKU2VlbXMgbGlrZSB0aGUgY29uc2Vuc3VzIGlzIHRoYXQgdGhlIGZ1bmN0 aW9uIGlzIG5vdCByZWFkeSBmb3IgaXQgeWV0LgpJcyB0aGVyZSBhbnl0aGluZyBlbHNlIEkgY291 bGQgZG8gdG8gaGVscCBtb3ZlIHRoaW5ncyBmb3J3YXJkIG5leHQ/CgotLSBSb21haW4KX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1h aWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFp bG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFi b3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVj dCAidW5zdWJzY3JpYmUiLgo=