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 21703441A7 for ; Wed, 31 Aug 2022 07:26:03 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8BB8968BB38; Wed, 31 Aug 2022 10:26:01 +0300 (EEST) Received: from mail-oa1-f44.google.com (mail-oa1-f44.google.com [209.85.160.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 27EEA68BAF2 for ; Wed, 31 Aug 2022 10:25:55 +0300 (EEST) Received: by mail-oa1-f44.google.com with SMTP id 586e51a60fabf-11c4d7d4683so22241970fac.8 for ; Wed, 31 Aug 2022 00:25:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc; bh=gNyJpicC+vq64ZZiyKS03eF+QVHeUJ7NADSb+Cr1JrU=; b=pdXgGec9DotORMzji/Cgjac6W31vUZx2gIMN9WlZIqXZkpV/Xo2VDR661XQpU+3JyF 0VE2bqHTkIZ9+yyJa9yyQQMWvTKXR6tqoit6H11RY2QDGnbY3MzOD7kMidCwWUucrLOe HshrIegSEr8y3oT3kVKbzOozcdE5EZ+7evN3Hc2SyyzzGLmSpi4+cgrLQ9wMjFBYQX5d bqKxMDx1SDXiFiF3yM8iKUgdw46vQRzwIbVr1pI2dig5DBwIhFHsEzUtl+kYPKCBHjMG r9rk3WMN+KWtUcwXARhJW+P0TMKTglbPnjAO3+zcKOrHxQn3d638JtWM5veE6YFjIAt4 g7mg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc; bh=gNyJpicC+vq64ZZiyKS03eF+QVHeUJ7NADSb+Cr1JrU=; b=vczwboMqr9lkJ9CpScW3/lDytj/MzgNdqcHxGE/R//wrin//q/dF4rW9KUxc1py+PD M4iNPdX64XBJsAKGm3iQF3gQrLEFCAOhIRXKX5xbFaIj2mQi0aFaspUycXi3kk40X3nf 3/eQYMU5/Q0KTmUOC8T1hneOxLp0Gc+plq0SUMJJFtEH/0oXaD6u8V5c/jgS3zncVIKK PLL/fbo24qrQoSNVgx/QXe5Jv8uyCMr8qIrD6WvYFcULBvXOQfo1AESOWxsMtlOOqHNw Zt725+n6xXGu2dZrBJOnhEZnGTsSufUbz7XAcT//onlGTdmvno3Jh39BDLrcTCsMvF2K S0ew== X-Gm-Message-State: ACgBeo3L4ieNcHxDKqHFO2+h54XAeH3VmkA8ggGV9XUnIXNEnXhp0WD+ wTzei8+/9PxTr9jkMGoyCDDH4BFqrcb8UZHeh1ZmwlsQxoo= X-Google-Smtp-Source: AA6agR44tL4Rc3vrjktuJWxvCVdNI6GhLnSIRt5qPNBPOyBHMgEnrhn7moJizXILSkYCFxRXGme7FzdR4yIN5ESfxms= X-Received: by 2002:a05:6808:1641:b0:345:4f32:b30a with SMTP id az1-20020a056808164100b003454f32b30amr703207oib.189.1661930753354; Wed, 31 Aug 2022 00:25:53 -0700 (PDT) MIME-Version: 1.0 References: <20220823190326.249-1-lukas.fellechner@gmx.net> <20220823190326.249-3-lukas.fellechner@gmx.net> In-Reply-To: From: Steven Liu Date: Wed, 31 Aug 2022 15:25:41 +0800 Message-ID: To: FFmpeg development discussions and patches Subject: Re: [FFmpeg-devel] [PATCH v3 2/3] lavf/dashdec: Multithreaded DASH initialization 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: QW5kcmVhcyBSaGVpbmhhcmR0IDxhbmRyZWFzLnJoZWluaGFyZHRAb3V0bG9vay5jb20+IOS6jjIw MjLlubQ45pyIMzHml6XlkajkuIkgMTA6NTTlhpnpgZPvvJoKPgo+IEx1a2FzIEZlbGxlY2huZXI6 Cj4gPiBUaGlzIHBhdGNoIGFkZHMgYW4gImluaXQtdGhyZWFkcyIgb3B0aW9uLCBzcGVjaWZ5aW5n IHRoZSBtYXgKPiA+IG51bWJlciBvZiB0aHJlYWRzIHRvIHVzZS4gTXVsdGlwbGUgd29ya2VyIHRo cmVhZHMgYXJlIHNwdW4gdXAKPiA+IHRvIG1hc3NpdmVseSBicmluZyBkb3duIGluaXQgdGltZXMu Cj4gPiAtLS0KPiA+ICBsaWJhdmZvcm1hdC9kYXNoZGVjLmMgfCAzNTEgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystCj4gPiAgMSBmaWxlIGNoYW5nZWQsIDM1MCBpbnNl cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gPgo+ID4gZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0 L2Rhc2hkZWMuYyBiL2xpYmF2Zm9ybWF0L2Rhc2hkZWMuYwo+ID4gaW5kZXggZTgyZGE0NWU0My4u MjBmMjU1N2VhMyAxMDA2NDQKPiA+IC0tLSBhL2xpYmF2Zm9ybWF0L2Rhc2hkZWMuYwo+ID4gKysr IGIvbGliYXZmb3JtYXQvZGFzaGRlYy5jCj4gPiBAQCAtMjQsNiArMjQsNyBAQAo+ID4gICNpbmNs dWRlICJsaWJhdnV0aWwvb3B0LmgiCj4gPiAgI2luY2x1ZGUgImxpYmF2dXRpbC90aW1lLmgiCj4g PiAgI2luY2x1ZGUgImxpYmF2dXRpbC9wYXJzZXV0aWxzLmgiCj4gPiArI2luY2x1ZGUgImxpYmF2 dXRpbC90aHJlYWQuaCIKPiA+ICAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKPiA+ICAjaW5jbHVkZSAi YXZpb19pbnRlcm5hbC5oIgo+ID4gICNpbmNsdWRlICJkYXNoLmgiCj4gPiBAQCAtMTUyLDYgKzE1 Myw4IEBAIHR5cGVkZWYgc3RydWN0IERBU0hDb250ZXh0IHsKPiA+ICAgICAgaW50IG1heF91cmxf c2l6ZTsKPiA+ICAgICAgY2hhciAqY2VuY19kZWNyeXB0aW9uX2tleTsKPiA+Cj4gPiArICAgIGlu dCBpbml0X3RocmVhZHM7Cj4gPiArCj4gPiAgICAgIC8qIEZsYWdzIGZvciBpbml0IHNlY3Rpb24q Lwo+ID4gICAgICBpbnQgaXNfaW5pdF9zZWN0aW9uX2NvbW1vbl92aWRlbzsKPiA+ICAgICAgaW50 IGlzX2luaXRfc2VjdGlvbl9jb21tb25fYXVkaW87Cj4gPiBAQCAtMjAzMyw2ICsyMDM2LDMzMSBA QCBzdGF0aWMgdm9pZCBtb3ZlX21ldGFkYXRhKEFWU3RyZWFtICpzdCwgY29uc3QgY2hhciAqa2V5 LCBjaGFyICoqdmFsdWUpCj4gPiAgICAgIH0KPiA+ICB9Cj4gPgo+ID4gKyNpZiBIQVZFX1RIUkVB RFMKPiA+ICsKPiA+ICtzdHJ1Y3Qgd29ya19wb29sX2RhdGEKPiA+ICt7Cj4gPiArICAgIEFWRm9y bWF0Q29udGV4dCAqY3R4Owo+ID4gKyAgICBzdHJ1Y3QgcmVwcmVzZW50YXRpb24gKnBsczsKPiA+ ICsgICAgc3RydWN0IHJlcHJlc2VudGF0aW9uICpjb21tb25fcGxzOwo+ID4gKyAgICBwdGhyZWFk X211dGV4X3QgKmNvbW1vbl9tdXRleDsKPiA+ICsgICAgcHRocmVhZF9jb25kX3QgKmNvbW1vbl9j b25kaXRpb247Cj4gPiArICAgIGludCBpc19jb21tb247Cj4gPiArICAgIGludCBpc19zdGFydGVk Owo+ID4gKyAgICBpbnQgcmVzdWx0Owo+ID4gK307Cj4gPiArCj4gPiArc3RydWN0IHRocmVhZF9k YXRhCj4KPiBUaGlzIGlzIGFnYWluc3Qgb3VyIG5hbWluZyBjb252ZW50aW9uczogQ2FtZWxDYXNl IGZvciBzdHJ1Y3QgdGFncyBhbmQKPiB0eXBlZGVmcywgbG93ZXJjYXNlIG5hbWVzIHdpdGggdW5k ZXJzY29yZSBmb3IgdmFyaWFibGUgbmFtZXMuCj4KPiA+ICt7Cj4gPiArICAgIHB0aHJlYWRfdCB0 aHJlYWQ7Cj4gPiArICAgIHB0aHJlYWRfbXV0ZXhfdCAqbXV0ZXg7Cj4gPiArICAgIHN0cnVjdCB3 b3JrX3Bvb2xfZGF0YSAqd29ya19wb29sOwo+ID4gKyAgICBpbnQgd29ya19wb29sX3NpemU7Cj4g PiArICAgIGludCBpc19zdGFydGVkOwo+ID4gKyAgICBpbnQgaGFzX2Vycm9yOwo+ID4gK307Cj4g PiArCj4gPiArc3RhdGljIHZvaWQgKndvcmtlcl90aHJlYWQodm9pZCAqcHRyKQo+ID4gK3sKPiA+ ICsgICAgaW50IHJldCA9IDA7Cj4gPiArICAgIGludCBpOwo+ID4gKyAgICBzdHJ1Y3QgdGhyZWFk X2RhdGEgKnRocmVhZF9kYXRhID0gKHN0cnVjdCB0aHJlYWRfZGF0YSopcHRyOwo+ID4gKyAgICBz dHJ1Y3Qgd29ya19wb29sX2RhdGEgKndvcmtfcG9vbCA9IE5VTEw7Cj4gPiArICAgIHN0cnVjdCB3 b3JrX3Bvb2xfZGF0YSAqZGF0YSA9IE5VTEw7Cj4gPiArICAgIGZvciAoOzspIHsKPiA+ICsKPiA+ ICsgICAgICAgIC8vIGdldCBuZXh0IHdvcmsgaXRlbSB1bmxlc3MgdGhlcmUgd2FzIGFuIGVycm9y Cj4gPiArICAgICAgICBwdGhyZWFkX211dGV4X2xvY2sodGhyZWFkX2RhdGEtPm11dGV4KTsKPiA+ ICsgICAgICAgIGRhdGEgPSBOVUxMOwo+ID4gKyAgICAgICAgaWYgKCF0aHJlYWRfZGF0YS0+aGFz X2Vycm9yKSB7Cj4gPiArICAgICAgICAgICAgd29ya19wb29sID0gdGhyZWFkX2RhdGEtPndvcmtf cG9vbDsKPiA+ICsgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGhyZWFkX2RhdGEtPndvcmtf cG9vbF9zaXplOyBpKyspIHsKPiA+ICsgICAgICAgICAgICAgICAgaWYgKCF3b3JrX3Bvb2wtPmlz X3N0YXJ0ZWQpIHsKPiA+ICsgICAgICAgICAgICAgICAgICAgIGRhdGEgPSB3b3JrX3Bvb2w7Cj4g PiArICAgICAgICAgICAgICAgICAgICBkYXRhLT5pc19zdGFydGVkID0gMTsKPiA+ICsgICAgICAg ICAgICAgICAgICAgIGJyZWFrOwo+ID4gKyAgICAgICAgICAgICAgICB9Cj4gPiArICAgICAgICAg ICAgICAgIHdvcmtfcG9vbCsrOwo+ID4gKyAgICAgICAgICAgIH0KPiA+ICsgICAgICAgIH0KPiA+ ICsgICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKHRocmVhZF9kYXRhLT5tdXRleCk7Cj4gPiAr Cj4gPiArICAgICAgICBpZiAoIWRhdGEpIHsKPiA+ICsgICAgICAgICAgICAvLyBubyBtb3JlIHdv cmsgdG8gZG8KPiA+ICsgICAgICAgICAgICByZXR1cm4gTlVMTDsKPiA+ICsgICAgICAgIH0KPiA+ ICsKPiA+ICsgICAgICAgIC8vIGlmIHdlIGFyZSBjb21tb24gc2VjdGlvbiBwcm92aWRlciwgaW5p dCBhbmQgc2lnbmFsCj4gPiArICAgICAgICBpZiAoZGF0YS0+aXNfY29tbW9uKSB7Cj4gPiArICAg ICAgICAgICAgZGF0YS0+cGxzLT5wYXJlbnQgPSBkYXRhLT5jdHg7Cj4gPiArICAgICAgICAgICAg cmV0ID0gdXBkYXRlX2luaXRfc2VjdGlvbihkYXRhLT5wbHMpOwo+ID4gKyAgICAgICAgICAgIGlm IChyZXQgPCAwKSB7Cj4gPiArICAgICAgICAgICAgICAgIHB0aHJlYWRfY29uZF9zaWduYWwoZGF0 YS0+Y29tbW9uX2NvbmRpdGlvbik7Cj4gPiArICAgICAgICAgICAgICAgIGdvdG8gZW5kOwo+ID4g KyAgICAgICAgICAgIH0KPiA+ICsgICAgICAgICAgICBlbHNlCj4gPiArICAgICAgICAgICAgICAg IHJldCA9IEFWRVJST1IocHRocmVhZF9jb25kX3NpZ25hbChkYXRhLT5jb21tb25fY29uZGl0aW9u KSk7Cj4gPiArICAgICAgICB9Cj4gPiArCj4gPiArICAgICAgICAvLyBpZiB3ZSBkZXBlbmQgb24g Y29tbW9uIHNlY3Rpb24gcHJvdmlkZXIsIHdhaXQgZm9yIHNpZ25hbCBhbmQgY29weQo+ID4gKyAg ICAgICAgaWYgKGRhdGEtPmNvbW1vbl9wbHMpIHsKPiA+ICsgICAgICAgICAgICByZXQgPSBBVkVS Uk9SKHB0aHJlYWRfY29uZF93YWl0KGRhdGEtPmNvbW1vbl9jb25kaXRpb24sIGRhdGEtPmNvbW1v bl9tdXRleCkpOwo+ID4gKyAgICAgICAgICAgIGlmIChyZXQgPCAwKQo+ID4gKyAgICAgICAgICAg ICAgICBnb3RvIGVuZDsKPiA+ICsKPiA+ICsgICAgICAgICAgICBpZiAoIWRhdGEtPmNvbW1vbl9w bHMtPmluaXRfc2VjX2J1Zikgewo+ID4gKyAgICAgICAgICAgICAgICBnb3RvIGVuZDsKPiA+ICsg ICAgICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFRkFVTFQpOwo+ID4gKyAgICAgICAgICAgIH0K PiA+ICsKPiA+ICsgICAgICAgICAgICByZXQgPSBjb3B5X2luaXRfc2VjdGlvbihkYXRhLT5wbHMs IGRhdGEtPmNvbW1vbl9wbHMpOwo+ID4gKyAgICAgICAgICAgIGlmIChyZXQgPCAwKQo+ID4gKyAg ICAgICAgICAgICAgICBnb3RvIGVuZDsKPiA+ICsgICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAg IHJldCA9IGJlZ2luX29wZW5fZGVtdXhfZm9yX2NvbXBvbmVudChkYXRhLT5jdHgsIGRhdGEtPnBs cyk7Cj4gPiArICAgICAgICBpZiAocmV0IDwgMCkKPiA+ICsgICAgICAgICAgICBnb3RvIGVuZDsK PiA+ICsKPiA+ICsgICAgZW5kOgo+ID4gKyAgICAgICAgZGF0YS0+cmVzdWx0ID0gcmV0Owo+ID4g Kwo+ID4gKyAgICAgICAgLy8gbm90aWZ5IGVycm9yIHRvIG90aGVyIHRocmVhZHMgYW5kIGV4aXQK PiA+ICsgICAgICAgIGlmIChyZXQgPCAwKSB7Cj4gPiArICAgICAgICAgICAgcHRocmVhZF9tdXRl eF9sb2NrKHRocmVhZF9kYXRhLT5tdXRleCk7Cj4gPiArICAgICAgICAgICAgdGhyZWFkX2RhdGEt Pmhhc19lcnJvciA9IDE7Cj4gPiArICAgICAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2sodGhy ZWFkX2RhdGEtPm11dGV4KTsKPiA+ICsgICAgICAgICAgICByZXR1cm4gTlVMTDsKPiA+ICsgICAg ICAgIH0KPiA+ICsgICAgfQo+ID4gKwo+ID4gKwo+ID4gKyAgICByZXR1cm4gTlVMTDsKPiA+ICt9 Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgY3JlYXRlX3dvcmtfcG9vbF9kYXRhKEFWRm9ybWF0Q29u dGV4dCAqY3R4LCBpbnQgc3RyZWFtX2luZGV4LAo+ID4gKyAgICBzdHJ1Y3QgcmVwcmVzZW50YXRp b24gKnBscywgc3RydWN0IHJlcHJlc2VudGF0aW9uICpjb21tb25fcGxzLAo+ID4gKyAgICBzdHJ1 Y3Qgd29ya19wb29sX2RhdGEgKmluaXRfZGF0YSwgcHRocmVhZF9tdXRleF90ICpjb21tb25fbXV0 ZXgsCj4gPiArICAgIHB0aHJlYWRfY29uZF90ICpjb21tb25fY29uZGl0aW9uKQo+ID4gK3sKPiA+ ICsgICAgaW5pdF9kYXRhLT5jdHggPSBjdHg7Cj4gPiArICAgIGluaXRfZGF0YS0+cGxzID0gcGxz Owo+ID4gKyAgICBpbml0X2RhdGEtPnBscy0+c3RyZWFtX2luZGV4ID0gc3RyZWFtX2luZGV4Owo+ ID4gKyAgICBpbml0X2RhdGEtPmNvbW1vbl9jb25kaXRpb24gPSBjb21tb25fY29uZGl0aW9uOwo+ ID4gKyAgICBpbml0X2RhdGEtPmNvbW1vbl9tdXRleCA9IGNvbW1vbl9tdXRleDsKPiA+ICsgICAg aW5pdF9kYXRhLT5yZXN1bHQgPSAtMTsKPiA+ICsKPiA+ICsgICAgaWYgKHBscyA9PSBjb21tb25f cGxzKSB7Cj4gPiArICAgICAgICBpbml0X2RhdGEtPmlzX2NvbW1vbiA9IDE7Cj4gPiArICAgIH0K PiA+ICsgICAgZWxzZSBpZiAoY29tbW9uX3Bscykgewo+ID4gKyAgICAgICAgaW5pdF9kYXRhLT5j b21tb25fcGxzID0gY29tbW9uX3BsczsKPiA+ICsgICAgfQo+ID4gK30KPiA+ICsKPiA+ICtzdGF0 aWMgaW50IHN0YXJ0X3RocmVhZChzdHJ1Y3QgdGhyZWFkX2RhdGEgKnRocmVhZF9kYXRhLAo+ID4g KyAgICBzdHJ1Y3Qgd29ya19wb29sX2RhdGEgKndvcmtfcG9vbCwgaW50IHdvcmtfcG9vbF9zaXpl LCBwdGhyZWFkX211dGV4X3QgKm11dGV4KQo+ID4gK3sKPiA+ICsgICAgaW50IHJldDsKPiA+ICsK PiA+ICsgICAgdGhyZWFkX2RhdGEtPm11dGV4ID0gbXV0ZXg7Cj4gPiArICAgIHRocmVhZF9kYXRh LT53b3JrX3Bvb2wgPSB3b3JrX3Bvb2w7Cj4gPiArICAgIHRocmVhZF9kYXRhLT53b3JrX3Bvb2xf c2l6ZSA9IHdvcmtfcG9vbF9zaXplOwo+ID4gKwo+ID4gKyAgICByZXQgPSBBVkVSUk9SKHB0aHJl YWRfY3JlYXRlKCZ0aHJlYWRfZGF0YS0+dGhyZWFkLCBOVUxMLCB3b3JrZXJfdGhyZWFkLCAodm9p ZCopdGhyZWFkX2RhdGEpKTsKPiA+ICsgICAgaWYgKHJldCA9PSAwKQo+ID4gKyAgICAgICAgdGhy ZWFkX2RhdGEtPmlzX3N0YXJ0ZWQgPSAxOwo+ID4gKwo+ID4gKyAgICByZXR1cm4gcmV0Owo+ID4g K30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IGluaXRfc3RyZWFtc19tdWx0aXRocmVhZGVkKEFWRm9y bWF0Q29udGV4dCAqcywgaW50IG5zdHJlYW1zLCBpbnQgdGhyZWFkcykKPiA+ICt7Cj4gPiArICAg IERBU0hDb250ZXh0ICpjID0gcy0+cHJpdl9kYXRhOwo+ID4gKyAgICBpbnQgcmV0ID0gMDsKPiA+ ICsgICAgaW50IHN0cmVhbV9pbmRleCA9IDA7Cj4gPiArICAgIGludCBpOwo+Cj4gV2UgYWxsb3cg ImZvciAoaW50IGkgPSAwOyIKPgo+ID4gKwo+ID4gKyAgICAvLyBhbGxvYyBkYXRhCj4gPiArICAg IHN0cnVjdCB3b3JrX3Bvb2xfZGF0YSAqaW5pdF9kYXRhID0gKHN0cnVjdCB3b3JrX3Bvb2xfZGF0 YSopYXZfbWFsbG9jeihzaXplb2Yoc3RydWN0IHdvcmtfcG9vbF9kYXRhKSAqIG5zdHJlYW1zKTsK PiA+ICsgICAgaWYgKCFpbml0X2RhdGEpCj4gPiArICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9N RU0pOwo+ID4gKwo+ID4gKyAgICBzdHJ1Y3QgdGhyZWFkX2RhdGEgKnRocmVhZF9kYXRhID0gKHN0 cnVjdCB0aHJlYWRfZGF0YSopYXZfbWFsbG9jeihzaXplb2Yoc3RydWN0IHRocmVhZF9kYXRhKSAq IHRocmVhZHMpOwo+ID4gKyAgICBpZiAoIXRocmVhZF9kYXRhKQo+ID4gKyAgICAgICAgcmV0dXJu IEFWRVJST1IoRU5PTUVNKTsKPgo+IDEuIGluaXRfZGF0YSBsZWFrcyBoZXJlIG9uIGVycm9yLgo+ IDIuIEluIGZhY3QsIGl0IHNlZW1zIHRvIG1lIHRoYXQgYm90aCBpbml0X2RhdGEgYW5kIHRocmVh ZF9kYXRhIGFyZQo+IG5vd2hlcmUgZnJlZWQuCj4KPiA+ICsKPiA+ICsgICAgLy8gYWxsb2MgbXV0 ZXggYW5kIGNvbmRpdGlvbnMKPiA+ICsgICAgcHRocmVhZF9tdXRleF90IHdvcmtfcG9vbF9tdXRl eDsKPiA+ICsKPiA+ICsgICAgcHRocmVhZF9tdXRleF90IGNvbW1vbl92aWRlb19tdXRleDsKPiA+ ICsgICAgcHRocmVhZF9jb25kX3QgY29tbW9uX3ZpZGVvX2NvbmQ7Cj4gPiArCj4gPiArICAgIHB0 aHJlYWRfbXV0ZXhfdCBjb21tb25fYXVkaW9fbXV0ZXg7Cj4gPiArICAgIHB0aHJlYWRfY29uZF90 IGNvbW1vbl9hdWRpb19jb25kOwo+ID4gKwo+ID4gKyAgICBwdGhyZWFkX211dGV4X3QgY29tbW9u X3N1YnRpdGxlX211dGV4Owo+ID4gKyAgICBwdGhyZWFkX2NvbmRfdCBjb21tb25fc3VidGl0bGVf Y29uZDsKPiA+ICsKPiA+ICsgICAgLy8gaW5pdCBtdXRleCBhbmQgY29uZGl0aW9ucwo+ID4gKyAg ICByZXQgPSBBVkVSUk9SKHB0aHJlYWRfbXV0ZXhfaW5pdCgmd29ya19wb29sX211dGV4LCBOVUxM KSk7Cj4gPiArICAgIGlmIChyZXQgPCAwKQo+ID4gKyAgICAgICAgZ290byBjbGVhbnVwOwo+ID4g Kwo+ID4gKyAgICBpZiAoYy0+aXNfaW5pdF9zZWN0aW9uX2NvbW1vbl92aWRlbykgewo+ID4gKyAg ICAgICAgcmV0ID0gQVZFUlJPUihwdGhyZWFkX211dGV4X2luaXQoJmNvbW1vbl92aWRlb19tdXRl eCwgTlVMTCkpOwo+ID4gKyAgICAgICAgaWYgKHJldCA8IDApCj4gPiArICAgICAgICAgICAgZ290 byBjbGVhbnVwOwo+ID4gKwo+ID4gKyAgICAgICAgcmV0ID0gQVZFUlJPUihwdGhyZWFkX2NvbmRf aW5pdCgmY29tbW9uX3ZpZGVvX2NvbmQsIE5VTEwpKTsKPiA+ICsgICAgICAgIGlmIChyZXQgPCAw KQo+ID4gKyAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAg ICBpZiAoYy0+aXNfaW5pdF9zZWN0aW9uX2NvbW1vbl9hdWRpbykgewo+ID4gKyAgICAgICAgcmV0 ID0gQVZFUlJPUihwdGhyZWFkX211dGV4X2luaXQoJmNvbW1vbl9hdWRpb19tdXRleCwgTlVMTCkp Owo+ID4gKyAgICAgICAgaWYgKHJldCA8IDApCj4gPiArICAgICAgICAgICAgZ290byBjbGVhbnVw Owo+ID4gKwo+ID4gKyAgICAgICAgcmV0ID0gQVZFUlJPUihwdGhyZWFkX2NvbmRfaW5pdCgmY29t bW9uX2F1ZGlvX2NvbmQsIE5VTEwpKTsKPiA+ICsgICAgICAgIGlmIChyZXQgPCAwKQo+ID4gKyAg ICAgICAgICAgIGdvdG8gY2xlYW51cDsKPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAgICBpZiAoYy0+ aXNfaW5pdF9zZWN0aW9uX2NvbW1vbl9zdWJ0aXRsZSkgewo+ID4gKyAgICAgICAgcmV0ID0gQVZF UlJPUihwdGhyZWFkX211dGV4X2luaXQoJmNvbW1vbl9zdWJ0aXRsZV9tdXRleCwgTlVMTCkpOwo+ ID4gKyAgICAgICAgaWYgKHJldCA8IDApCj4gPiArICAgICAgICAgICAgZ290byBjbGVhbnVwOwo+ ID4gKwo+ID4gKyAgICAgICAgcmV0ID0gQVZFUlJPUihwdGhyZWFkX2NvbmRfaW5pdCgmY29tbW9u X3N1YnRpdGxlX2NvbmQsIE5VTEwpKTsKPiA+ICsgICAgICAgIGlmIChyZXQgPCAwKQo+ID4gKyAg ICAgICAgICAgIGdvdG8gY2xlYW51cDsKPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAgICAvLyBpbml0 IHdvcmsgcG9vbCBkYXRhCj4gPiArICAgIHN0cnVjdCB3b3JrX3Bvb2xfZGF0YSogY3VycmVudF9k YXRhID0gaW5pdF9kYXRhOwo+ID4gKwo+ID4gKyAgICBmb3IgKGkgPSAwOyBpIDwgYy0+bl92aWRl b3M7IGkrKykgewo+ID4gKyAgICAgICAgY3JlYXRlX3dvcmtfcG9vbF9kYXRhKHMsIHN0cmVhbV9p bmRleCwgYy0+dmlkZW9zW2ldLAo+ID4gKyAgICAgICAgICAgIGMtPmlzX2luaXRfc2VjdGlvbl9j b21tb25fdmlkZW8gPyBjLT52aWRlb3NbMF0gOiBOVUxMLAo+ID4gKyAgICAgICAgICAgIGN1cnJl bnRfZGF0YSwgJmNvbW1vbl92aWRlb19tdXRleCwgJmNvbW1vbl92aWRlb19jb25kKTsKPiA+ICsK PiA+ICsgICAgICAgIHN0cmVhbV9pbmRleCsrOwo+ID4gKyAgICAgICAgY3VycmVudF9kYXRhKys7 Cj4gPiArICAgIH0KPiA+ICsKPiA+ICsgICAgZm9yIChpID0gMDsgaSA8IGMtPm5fYXVkaW9zOyBp KyspIHsKPiA+ICsgICAgICAgIGNyZWF0ZV93b3JrX3Bvb2xfZGF0YShzLCBzdHJlYW1faW5kZXgs IGMtPmF1ZGlvc1tpXSwKPiA+ICsgICAgICAgICAgICBjLT5pc19pbml0X3NlY3Rpb25fY29tbW9u X2F1ZGlvID8gYy0+YXVkaW9zWzBdIDogTlVMTCwKPiA+ICsgICAgICAgICAgICBjdXJyZW50X2Rh dGEsICZjb21tb25fYXVkaW9fbXV0ZXgsICZjb21tb25fYXVkaW9fY29uZCk7Cj4gPiArCj4gPiAr ICAgICAgICBzdHJlYW1faW5kZXgrKzsKPiA+ICsgICAgICAgIGN1cnJlbnRfZGF0YSsrOwo+ID4g KyAgICB9Cj4gPiArCj4gPiArICAgIGZvciAoaSA9IDA7IGkgPCBjLT5uX3N1YnRpdGxlczsgaSsr KSB7Cj4gPiArICAgICAgICBjcmVhdGVfd29ya19wb29sX2RhdGEocywgc3RyZWFtX2luZGV4LCBj LT5zdWJ0aXRsZXNbaV0sCj4gPiArICAgICAgICAgICAgYy0+aXNfaW5pdF9zZWN0aW9uX2NvbW1v bl9zdWJ0aXRsZSA/IGMtPnN1YnRpdGxlc1swXSA6IE5VTEwsCj4gPiArICAgICAgICAgICAgY3Vy cmVudF9kYXRhLCAmY29tbW9uX3N1YnRpdGxlX211dGV4LCAmY29tbW9uX3N1YnRpdGxlX2NvbmQp Owo+ID4gKwo+ID4gKyAgICAgICAgc3RyZWFtX2luZGV4Kys7Cj4gPiArICAgICAgICBjdXJyZW50 X2RhdGErKzsKPiA+ICsgICAgfQo+Cj4gVGhpcyBpcyB2ZXJ5IHJlcGV0aXRpdmUuCj4KPiA+ICsK PiA+ICsgICAgLy8gc3RhcnQgdGhyZWFkcwo+ID4gKyAgICBzdHJ1Y3QgdGhyZWFkX2RhdGEgKmN1 cnJlbnRfdGhyZWFkID0gdGhyZWFkX2RhdGE7Cj4gPiArICAgIGZvciAoaSA9IDA7IGkgPCB0aHJl YWRzOyBpKyspIHsKPiA+ICsgICAgICAgIHJldCA9IHN0YXJ0X3RocmVhZChjdXJyZW50X3RocmVh ZCwgaW5pdF9kYXRhLCBuc3RyZWFtcywgJndvcmtfcG9vbF9tdXRleCk7Cj4gPiArICAgICAgICBp ZiAocmV0IDwgMCkKPiA+ICsgICAgICAgICAgICBnb3RvIGNsZWFudXA7Cj4gPiArCj4gPiArICAg ICAgICBjdXJyZW50X3RocmVhZCsrOwo+ID4gKyAgICB9Cj4gPiArCj4gPiArY2xlYW51cDoKPiA+ ICsgICAgLy8gd2UgbmVlZCB0byBjbGVhbnVwIGV2ZW4gaW4gY2FzZSBvZiBlcnJvcnMsIHNvIHdl IG5lZWQgdG8gc3RvcmUgcmVzdWx0cyBvZiBpbml0LCBydW4gYW5kIGNsZWFudXAKPiA+ICsgICAg aW50IGluaXRSZXN1bHQgPSByZXQ7Cj4gPiArICAgIGludCBydW5SZXN1bHQgPSAwOwo+ID4gKyAg ICBpbnQgY2xlYW51cFJlc3VsdCA9IDA7Cj4gPiArCj4gPiArICAgIC8vIGpvaW4gdGhyZWFkcwo+ ID4gKyAgICBjdXJyZW50X3RocmVhZCA9IHRocmVhZF9kYXRhOwo+ID4gKyAgICBmb3IgKGkgPSAw OyBpIDwgdGhyZWFkczsgaSsrKSB7Cj4gPiArICAgICAgICBpZiAoY3VycmVudF90aHJlYWQtPmlz X3N0YXJ0ZWQpIHsKPiA+ICsgICAgICAgICAgICByZXQgPSBBVkVSUk9SKHB0aHJlYWRfam9pbihj dXJyZW50X3RocmVhZC0+dGhyZWFkLCBOVUxMKSk7Cj4gPiArICAgICAgICAgICAgaWYgKHJldCA8 IDApCj4gPiArICAgICAgICAgICAgICAgIGNsZWFudXBSZXN1bHQgPSByZXQ7Cj4gPiArICAgICAg ICB9Cj4gPiArICAgICAgICBjdXJyZW50X3RocmVhZCsrOwo+ID4gKyAgICB9Cj4gPiArCj4gPiAr ICAgIC8vIGZpbmFsaXplIHN0cmVhbXMgYW5kIGNvbGxlY3QgcmVzdWx0cwo+ID4gKyAgICBjdXJy ZW50X2RhdGEgPSBpbml0X2RhdGE7Cj4gPiArICAgIGZvciAoaSA9IDA7IGkgPCBuc3RyZWFtczsg aSsrKSB7Cj4gPiArICAgICAgICBpZiAoY3VycmVudF9kYXRhLT5yZXN1bHQgPCAwKSB7Cj4gPiAr ICAgICAgICAgICAgLy8gdGhyZWFkIHJhbiBpbnRvIGVycm9yOiBjb2xsZWN0IHJlc3VsdCBhbmQg YnJlYWsKPiA+ICsgICAgICAgICAgICBydW5SZXN1bHQgPSBjdXJyZW50X2RhdGEtPnJlc3VsdDsK PiA+ICsgICAgICAgICAgICBicmVhazsKPiA+ICsgICAgICAgIH0KPiA+ICsgICAgICAgIGVsc2Ug ewo+ID4gKyAgICAgICAgICAgIC8vIHRocmVhZCBzdWNjZXNzOiBjcmVhdGUgc3RyZWFtcyBvbiBB VkZvcm1hdENvbnRleHQKPiA+ICsgICAgICAgICAgICByZXQgPSBlbmRfb3Blbl9kZW11eF9mb3Jf Y29tcG9uZW50KHMsIGN1cnJlbnRfZGF0YS0+cGxzKTsKPiA+ICsgICAgICAgICAgICBpZiAocmV0 IDwgMCkKPiA+ICsgICAgICAgICAgICAgICAgcnVuUmVzdWx0ID0gcmV0Owo+ID4gKyAgICAgICAg fQo+ID4gKyAgICAgICAgY3VycmVudF9kYXRhKys7Cj4gPiArICAgIH0KPiA+ICsKPiA+ICsgICAg Ly8gY2xlYW51cCBtdXRleCBhbmQgY29uZGl0aW9ucwo+ID4gKyAgICByZXQgPSBBVkVSUk9SKHB0 aHJlYWRfbXV0ZXhfZGVzdHJveSgmd29ya19wb29sX211dGV4KSk7Cj4gPiArICAgIGlmIChyZXQg PCAwKQo+ID4gKyAgICAgICAgY2xlYW51cFJlc3VsdCA9IHJldDsKPiA+ICsKPiA+ICsgICAgaWYg KGMtPmlzX2luaXRfc2VjdGlvbl9jb21tb25fdmlkZW8pIHsKPiA+ICsgICAgICAgIHJldCA9IEFW RVJST1IocHRocmVhZF9tdXRleF9kZXN0cm95KCZjb21tb25fdmlkZW9fbXV0ZXgpKTsKPiA+ICsg ICAgICAgIGlmIChyZXQgPCAwKQo+ID4gKyAgICAgICAgICAgIGNsZWFudXBSZXN1bHQgPSByZXQ7 Cj4gPiArCj4gPiArICAgICAgICByZXQgPSBBVkVSUk9SKHB0aHJlYWRfY29uZF9kZXN0cm95KCZj b21tb25fdmlkZW9fY29uZCkpOwo+ID4gKyAgICAgICAgaWYgKHJldCA8IDApCj4gPiArICAgICAg ICAgICAgY2xlYW51cFJlc3VsdCA9IHJldDsKPiA+ICsgICAgfQo+ID4gKwo+ID4gKyAgICBpZiAo Yy0+aXNfaW5pdF9zZWN0aW9uX2NvbW1vbl9hdWRpbykgewo+ID4gKyAgICAgICAgcmV0ID0gQVZF UlJPUihwdGhyZWFkX211dGV4X2Rlc3Ryb3koJmNvbW1vbl9hdWRpb19tdXRleCkpOwo+ID4gKyAg ICAgICAgaWYgKHJldCA8IDApCj4gPiArICAgICAgICAgICAgY2xlYW51cFJlc3VsdCA9IHJldDsK PiA+ICsKPiA+ICsgICAgICAgIHJldCA9IEFWRVJST1IocHRocmVhZF9jb25kX2Rlc3Ryb3koJmNv bW1vbl9hdWRpb19jb25kKSk7Cj4gPiArICAgICAgICBpZiAocmV0IDwgMCkKPiA+ICsgICAgICAg ICAgICBjbGVhbnVwUmVzdWx0ID0gcmV0Owo+ID4gKyAgICB9Cj4gPiArCj4gPiArICAgIGlmIChj LT5pc19pbml0X3NlY3Rpb25fY29tbW9uX3N1YnRpdGxlKSB7Cj4gPiArICAgICAgICByZXQgPSBB VkVSUk9SKHB0aHJlYWRfbXV0ZXhfZGVzdHJveSgmY29tbW9uX3N1YnRpdGxlX211dGV4KSk7Cj4g PiArICAgICAgICBpZiAocmV0IDwgMCkKPiA+ICsgICAgICAgICAgICBjbGVhbnVwUmVzdWx0ID0g cmV0Owo+ID4gKwo+ID4gKyAgICAgICAgcmV0ID0gQVZFUlJPUihwdGhyZWFkX2NvbmRfZGVzdHJv eSgmY29tbW9uX3N1YnRpdGxlX2NvbmQpKTsKPiA+ICsgICAgICAgIGlmIChyZXQgPCAwKQo+ID4g KyAgICAgICAgICAgIGNsZWFudXBSZXN1bHQgPSByZXQ7Cj4gPiArICAgIH0KPiA+ICsKPiA+ICsg ICAgLy8gcmV0dXJuIHJlc3VsdHMgaWYgZXJyb3JzIGhhdmUgb2NjdXJlZCBpbiBvbmUgb2YgdGhl IHBoYXNlcwo+ID4gKyAgICBpZiAoaW5pdFJlc3VsdCA8IDApCj4gPiArICAgICAgICByZXR1cm4g aW5pdFJlc3VsdDsKPiA+ICsKPiA+ICsgICAgaWYgKHJ1blJlc3VsdCA8IDApCj4gPiArICAgICAg ICByZXR1cm4gcnVuUmVzdWx0Owo+ID4gKwo+ID4gKyAgICBpZiAoY2xlYW51cFJlc3VsdCA8IDAp Cj4gPiArICAgICAgICByZXR1cm4gY2xlYW51cFJlc3VsdDsKPiA+ICsKPiA+ICsgICAgcmV0dXJu IDA7Cj4gPiArfQo+ID4gKwo+ID4gKyNlbmRpZgo+ID4gKwo+ID4gIHN0YXRpYyBpbnQgZGFzaF9y ZWFkX2hlYWRlcihBVkZvcm1hdENvbnRleHQgKnMpCj4gPiAgewo+ID4gICAgICBEQVNIQ29udGV4 dCAqYyA9IHMtPnByaXZfZGF0YTsKPiA+IEBAIC0yMDY3LDYgKzIzOTUsMjMgQEAgc3RhdGljIGlu dCBkYXNoX3JlYWRfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCAqcykKPiA+ICAgICAgaWYgKGMtPm5f c3VidGl0bGVzKQo+ID4gICAgICAgICAgYy0+aXNfaW5pdF9zZWN0aW9uX2NvbW1vbl9zdWJ0aXRs ZSA9IGlzX2NvbW1vbl9pbml0X3NlY3Rpb25fZXhpc3QoYy0+c3VidGl0bGVzLCBjLT5uX3N1YnRp dGxlcyk7Cj4gPgo+ID4gKyAgICBpbnQgdGhyZWFkcyA9IDA7Cj4gPiArICAgIGludCBuc3RyZWFt cyA9IGMtPm5fdmlkZW9zICsgYy0+bl9hdWRpb3MgKyBjLT5uX3N1YnRpdGxlczsKPiA+ICsKPiA+ ICsjaWYgSEFWRV9USFJFQURTCj4gPiArICAgIHRocmVhZHMgPSBGRk1JTihuc3RyZWFtcywgYy0+ aW5pdF90aHJlYWRzKTsKPiA+ICsjZW5kaWYKPiA+ICsKPiA+ICsgICAgaWYgKHRocmVhZHMgPiAx KQo+ID4gKyAgICB7Cj4gPiArI2lmIEhBVkVfVEhSRUFEUwo+ID4gKyAgICAgICAgcmV0ID0gaW5p dF9zdHJlYW1zX211bHRpdGhyZWFkZWQocywgbnN0cmVhbXMsIHRocmVhZHMpOwo+ID4gKyAgICAg ICAgaWYgKHJldCA8IDApCj4gPiArICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+ICsjZW5kaWYK PiA+ICsgICAgfQo+ID4gKyAgICBlbHNlCj4gPiArICAgIHsKPiA+ICAgICAgLyogT3BlbiB0aGUg ZGVtdXhlciBmb3IgdmlkZW8gYW5kIGF1ZGlvIGNvbXBvbmVudHMgaWYgYXZhaWxhYmxlICovCj4g PiAgICAgIGZvciAoaSA9IDA7IGkgPCBjLT5uX3ZpZGVvczsgaSsrKSB7Cj4gPiAgICAgICAgICBy ZXAgPSBjLT52aWRlb3NbaV07Cj4gPiBAQCAtMjExNSw2ICsyNDYwLDcgQEAgc3RhdGljIGludCBk YXNoX3JlYWRfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCAqcykKPiA+Cj4gPiAgICAgIGlmICghc3Ry ZWFtX2luZGV4KQo+ID4gICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gPiAr ICAgIH0KPiA+Cj4gPiAgICAgIC8qIENyZWF0ZSBhIHByb2dyYW0gKi8KPiA+ICAgICAgcHJvZ3Jh bSA9IGF2X25ld19wcm9ncmFtKHMsIDApOwo+ID4gQEAgLTIzNjYsNyArMjcxMiwxMCBAQCBzdGF0 aWMgY29uc3QgQVZPcHRpb24gZGFzaF9vcHRpb25zW10gPSB7Cj4gPiAgICAgICAgICBPRkZTRVQo YWxsb3dlZF9leHRlbnNpb25zKSwgQVZfT1BUX1RZUEVfU1RSSU5HLAo+ID4gICAgICAgICAgey5z dHIgPSAiYWFjLG00YSxtNHMsbTR2LG1vdixtcDQsd2VibSx0cyJ9LAo+ID4gICAgICAgICAgSU5U X01JTiwgSU5UX01BWCwgRkxBR1N9LAo+ID4gLSAgICB7ICJjZW5jX2RlY3J5cHRpb25fa2V5Iiwg Ik1lZGlhIGRlY3J5cHRpb24ga2V5IChoZXgpIiwgT0ZGU0VUKGNlbmNfZGVjcnlwdGlvbl9rZXkp LCBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3RyID0gTlVMTH0sIElOVF9NSU4sIElOVF9NQVgsIC5m bGFncyA9IEZMQUdTIH0sCj4gPiArICAgIHsgImNlbmNfZGVjcnlwdGlvbl9rZXkiLCAiTWVkaWEg ZGVjcnlwdGlvbiBrZXkgKGhleCkiLCBPRkZTRVQoY2VuY19kZWNyeXB0aW9uX2tleSksCj4gPiAr ICAgICAgICBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3RyID0gTlVMTH0sIElOVF9NSU4sIElOVF9N QVgsIC5mbGFncyA9IEZMQUdTIH0sCj4gPiArICAgIHsgImluaXRfdGhyZWFkcyIsICJOdW1iZXIg b2YgdGhyZWFkcyB0byB1c2UgZm9yIGluaXRpYWxpemluZyB0aGUgREFTSCBzdHJlYW0iLAo+ID4g KyAgICAgICAgT0ZGU0VUKGluaXRfdGhyZWFkcyksIEFWX09QVF9UWVBFX0lOVCwgey5pNjQgPSAw fSwgMCwgNjQsIEZMQUdTIH0sCj4gPiAgICAgIHtOVUxMfQo+ID4gIH07Cj4gPgo+ID4gLS0KPiA+ IDIuMzEuMS53aW5kb3dzLjEKPiA+Cj4KPiAxLiBXZSBhY3R1YWxseSBoYXZlIGFuIEFQSSB0byBw cm9jZXNzIG11bHRpcGxlIHRhc2tzIGJ5IGRpZmZlcmVudAo+IHRocmVhZHM6IExvb2sgYXQgbGli YXZ1dGlsL3NsaWNldGhyZWFkLmguIFdoeSBjYW4ndCB5b3UgcmV1c2UgdGhhdD8KSSBzYXcgdGhh dCB1c3VhbGx5IGJlIHVzZWQgaW4gYXZmaWx0ZXJzIGZvciBzbGljZSBtdWx0aS10aHJlYWQsIG9y IGkKbWlzdW5kZXJzdGFuZCBzb21ldGhpbmc/Cgo+IDIuIEluIGNhc2UgaW5pdGlhbGl6YXRpb24g b2Ygb25lIG9mIHRoZSBjb25kaXRpb25zL211dGV4ZXMgZmFpbHMsIHlvdQo+IGFyZSBuZXZlcnRo ZWxlc3MgZGVzdHJveWluZyB0aGVtOyB5b3UgYXJlIGV2ZW4gZGVzdHJveWluZyBjb21wbGV0ZWx5 Cj4gdW5pbml0aWFsaXplZCBtdXRleGVzLiBUaGlzIGlzIHVuZGVmaW5lZCBiZWhhdmlvdXIuIENo ZWNraW5nIHRoZSByZXN1bHQKPiBvZiBpdCBkb2VzIG5vdCBmaXggdGhpcy4KPgo+IC0gQW5kcmVh cwoKClRoYW5rcwpTdGV2ZW4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9y ZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVu c3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVz dEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=