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 3555C45887 for ; Fri, 24 Feb 2023 13:49:47 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 16C0E68C142; Fri, 24 Feb 2023 15:49:45 +0200 (EET) Received: from mail-ed1-f44.google.com (mail-ed1-f44.google.com [209.85.208.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A485968BF3C for ; Fri, 24 Feb 2023 15:49:38 +0200 (EET) Received: by mail-ed1-f44.google.com with SMTP id cy6so49523612edb.5 for ; Fri, 24 Feb 2023 05:49:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1677246578; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=WsXmY8WM3pP0H8C8jaRmEy9uEO1Mbx4bXI+zrx0huKc=; b=HWt6ysj3CCeT+8u3c9uAIPw459kaSvEqzaidQMxcm30px/KkEJDs6TZ3aJp9qT8jlv 5nUiT7ZsJ7WesWz7zxb8jCco8FgvEnAz1t77vsVUQlaUIsLtn5hjiJ7Uagpy9AqmrIn+ dKRJLfB6YhQyWQVYDQrvhHTFnZpP5vltRtUjoQrW8Q1zv0puZl2EGZrGji06QSzSvAJy hZR3jjGk9OqY/LAmGQdxBDILoSw7xYs7p73HvX79H2J1RfVji4Fy1l1Hn84TceHb6r52 8O8HHptPiTGJOEQqXa3zadBy0RHnu+bPD5UFNKVEJfrN2IG+vocAWmJVR1X2z+Zj4IDc 5FgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677246578; h=content-transfer-encoding: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=WsXmY8WM3pP0H8C8jaRmEy9uEO1Mbx4bXI+zrx0huKc=; b=IBgF8TBCmq3AnJCaR1KCcCVCBGNIMM0KRPmqdciSQBkSLtWtZU6FN5MclJApnjHfoj xyBziFTXqfwPYrJiZcRt8ZRMAq2ZQOlRdB+TZQLjBQ9IjE6g09Gv5zNJ5MLzV+9woSkp bSZSsafYVJ7bTe8h6LmtOc269jM/YRTxkiXekzmW5sv3GBK0yB3pWT7ozaMHaCQNFmKp l0uXZuBjNalpxXK9vfU9h8ct8NUlap4QNIoY04W9GUNyZRBKjnjKqSHapscLMWY/RwtL WJS3/1JI1cptIdGK4LBJWqL5BcpyXAE+6yBk2rJ619vW/9vvskpxnusJ5uCsnXHuILzM M1dA== X-Gm-Message-State: AO0yUKWx1chzdmHfZlDh5qYXCuj4sjg5QFPCI1iV7TRxiUL3DAn1f3rJ ljmHdiByOPkwHweiuanB2TRxEBXs2BbZSw2SEmdHEk6oINU= X-Google-Smtp-Source: AK7set+hPANZgtToQ+6yFP2GIvEZg2hS9qt+i2sIpPvlc7e5GG04XhhzcG7sGwDu7Ka14RT9yMAIXuZfMdpSdx72l1M= X-Received: by 2002:a50:9f28:0:b0:4ad:7ba3:5bce with SMTP id b37-20020a509f28000000b004ad7ba35bcemr7212334edf.7.1677246577920; Fri, 24 Feb 2023 05:49:37 -0800 (PST) MIME-Version: 1.0 References: <20230224122523.143571-1-quinkblack@foxmail.com> In-Reply-To: From: =?UTF-8?B?SmFuIEVrc3Ryw7Zt?= Date: Fri, 24 Feb 2023 15:49:25 +0200 Message-ID: To: FFmpeg development discussions and patches Subject: Re: [FFmpeg-devel] [PATCH 4/6] avformat/mov: parse ISO-14496-12 ChannelLayout 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: T24gRnJpLCBGZWIgMjQsIDIwMjMgYXQgNjoyNSBBTSBaaGFvIFpoaWxpIDxxdWlua2JsYWNrQGZv eG1haWwuY29tPiB3cm90ZToKPgo+IEZyb206IFpoYW8gWmhpbGkgPHpoaWxpemhhb0B0ZW5jZW50 LmNvbT4KPgo+IFNpZ25lZC1vZmYtYnk6IFpoYW8gWmhpbGkgPHpoaWxpemhhb0B0ZW5jZW50LmNv bT4KCkhhaCwgSSBhY3R1YWxseSBoYXBwZW5lZCB0byByZWNlbnRseSBzdGFydCBjb2RpbmcgdW5j b21wcmVzc2VkIGF1ZGlvCnN1cHBvcnQgaW4gbXA0IG15c2VsZiwgYnV0IHdoYXQgdGhpcyBjb21t aXQgaXMgaGFuZGxpbmcgaXMgd2hhdApiYXNpY2FsbHkga2lsbGVkIG15IHZlcnNpb24gb2ZmIHNp bmNlIHRoZSBjaGFubmVsIGxheW91dCBib3ggaXMKcmVxdWlyZWQuCgpJZiB5b3UncmUgaW50ZXJl c3RlZCB5b3UgY2FuIGNoZWNrIG15IHRha2Ugb3ZlciBhdApodHRwczovL2dpdGh1Yi5jb20vamVl Yi9mZm1wZWcvY29tbWl0cy9wY21jX3BhcnNpbmdfaW1wcm92ZW1lbnRzIC4KCldpbGwgY29tbWVu dCBvbiBzb21lIHRoaW5ncy4KCj4gLS0tCj4gIGxpYmF2Zm9ybWF0L21vdi5jICAgICAgfCAgNzkg KysrKysrKysrKystCj4gIGxpYmF2Zm9ybWF0L21vdl9jaGFuLmMgfCAyNjUgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgbGliYXZmb3JtYXQvbW92X2NoYW4uaCB8 ICAyNiArKysrCj4gIDMgZmlsZXMgY2hhbmdlZCwgMzY5IGluc2VydGlvbnMoKyksIDEgZGVsZXRp b24oLSkKPgo+IGRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9tb3YuYyBiL2xpYmF2Zm9ybWF0L21v di5jCj4gaW5kZXggYjEyNTM0M2Y4NC4uMWRiODY5YWEyZSAxMDA2NDQKPiAtLS0gYS9saWJhdmZv cm1hdC9tb3YuYwo+ICsrKyBiL2xpYmF2Zm9ybWF0L21vdi5jCj4gQEAgLTk0MCw2ICs5NDAsODIg QEAgc3RhdGljIGludCBtb3ZfcmVhZF9jaGFuKE1PVkNvbnRleHQgKmMsIEFWSU9Db250ZXh0ICpw YiwgTU9WQXRvbSBhdG9tKQo+ICAgICAgcmV0dXJuIDA7Cj4gIH0KPgo+ICtzdGF0aWMgaW50IG1v dl9yZWFkX2NobmwoTU9WQ29udGV4dCAqYywgQVZJT0NvbnRleHQgKnBiLCBNT1ZBdG9tIGF0b20p Cj4gK3sKPiArICAgIGludDY0X3QgZW5kID0gYXZfc2F0X2FkZDY0KGF2aW9fdGVsbChwYiksIGF0 b20uc2l6ZSk7Cj4gKyAgICBpbnQgc3RyZWFtX3N0cnVjdHVyZTsKPiArICAgIGludCByZXQgPSAw Owo+ICsgICAgQVZTdHJlYW0gKnN0Owo+ICsKPiArICAgIGlmIChjLT5mYy0+bmJfc3RyZWFtcyA8 IDEpCj4gKyAgICAgICAgcmV0dXJuIDA7Cj4gKyAgICBzdCA9IGMtPmZjLT5zdHJlYW1zW2MtPmZj LT5uYl9zdHJlYW1zLTFdOwo+ICsKPiArICAgIC8qIHNraXAgdmVyc2lvbiBhbmQgZmxhZ3MgKi8K PiArICAgIGF2aW9fc2tpcChwYiwgNCk7CgpXZSBzaG91bGQgcmVhbGx5IG5vdCBkbyB0aGlzIGFu eSBtb3JlLiBWYXJpb3VzIEZ1bGxCb3hlcyBoYXZlIG11bHRpcGxlCnZlcnNpb25zIG9yIGRlcGVu ZCBvbiB0aGUgZmxhZ3MuIFNlZSBob3cgSSBoYXZlIGFkZGVkIEZ1bGxCb3ggdGhpbmdzCnJlY2Vu dGx5LCBhbHRob3VnaCBJIHdvdWxkIHByZWZlciB1cyB0byBoYXZlIGEgZ2VuZXJpYyBtYWNyby9m dW5jdGlvbgpzZXR1cCBmb3IgdGhpcyB3aGVyZSB5b3UgdGhlbiBnZXQgdGhlIHZlcnNpb24gYW5k IGZsYWdzIGFzIGFyZ3VtZW50cwpvciB3aGF0ZXZlciBpbiB0aGUgZnV0dXJlLgoKRm9yIHRoaXMg c3BlY2lmaWMgYm94LCB0aGVyZSBhcmUgbm93IHZlcnNpb25zIDAgYW5kIDEgZGVmaW5lZCBzaW5j ZQpjaXJjYSAyMDE4LTIwMTkgb3Igc28gKHZpc2libGUgYXQgbGVhc3QgaW4gMTQ0OTYtMTIgMjAy MikKClNpbmNlIElTTy9JRUMgaGFzIGNoYW5nZWQgdGhlIHJ1bGVzIGZvciBmcmVlIHNwZWNpZmlj YXRpb25zIChhZ2FpbnN0CnRoZSB3aXNoZXMgb2YgdmFyaW91cyBzcGVjIGF1dGhvcnMpIGFuZCBh bGwgdGhhdCBqYXp6LCB0aGlzIGlzIGhvdwppdCdzIGRlZmluZWQgaW4gd2hhdCBJIGhhdmUgb24g aGFuZDoKCjEyLjIuNCAgQ2hhbm5lbCBsYXlvdXQKCjEyLjIuNC4xICBEZWZpbml0aW9uCgpCb3gg VHlwZXM6ICAnY2hubCcKQ29udGFpbmVyOiBBdWRpbyBzYW1wbGUgZW50cnkKTWFuZGF0b3J5OiBO bwpRdWFudGl0eTogWmVybyBvciBvbmUKClRoaXMgYm94IG1heSBhcHBlYXIgaW4gYW4gYXVkaW8g c2FtcGxlIGVudHJ5IHRvIGRvY3VtZW50IHRoZQphc3NpZ25tZW50IG9mIGNoYW5uZWxzIGluIHRo ZSBhdWRpbwpzdHJlYW0uIEl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSB0aGlzIGJveCB0byBjb252 ZXkgdGhlIGJhc2UgY2hhbm5lbApjb3VudCBmb3IgdGhlIERvd25NaXhJbnN0cnVjdGlvbnMKYm94 IGFuZCBvdGhlciBEUkMtcmVsYXRlZCBib3hlcyBzcGVjaWZpZWQgaW4gSVNPL0lFQyAyMzAwMy00 LgpUaGUgY2hhbm5lbCBsYXlvdXQgY2FuIGJlIGFsbCBvciBwYXJ0IG9mIGEgc3RhbmRhcmQgbGF5 b3V0IChmcm9tIGFuCmVudW1lcmF0ZWQgbGlzdCksIG9yIGEgY3VzdG9tIGxheW91dAood2hpY2gg YWxzbyBhbGxvd3MgYSB0cmFjayB0byBjb250cmlidXRlIHBhcnQgb2YgYW4gb3ZlcmFsbCBsYXlv dXQpLgpBIHN0cmVhbSBtYXkgY29udGFpbiBjaGFubmVscywgb2JqZWN0cywgbmVpdGhlciwgb3Ig Ym90aC4gQSBzdHJlYW0KdGhhdCBpcyBuZWl0aGVyIGNoYW5uZWwgbm9yIG9iamVjdApzdHJ1Y3R1 cmVkIGNhbiBpbXBsaWNpdGx5IGJlIHJlbmRlcmVkIGluIGEgdmFyaWV0eSBvZiB3YXlzLgoKMTIu Mi40LjIgIFN5bnRheAoKYWxpZ25lZCg4KSBjbGFzcyBDaGFubmVsTGF5b3V0IGV4dGVuZHMgRnVs bEJveCgnY2hubCcsIHZlcnNpb24sIGZsYWdzPTApIHsKICAgaWYgKHZlcnNpb249PTApIHsKICAg ICAgdW5zaWduZWQgaW50KDgpIHN0cmVhbV9zdHJ1Y3R1cmU7CiAgICAgIGlmIChzdHJlYW1fc3Ry dWN0dXJlICYgY2hhbm5lbFN0cnVjdHVyZWQpIHsKICAgICAgICAgdW5zaWduZWQgaW50KDgpIGRl ZmluZWRMYXlvdXQ7CiAgICAgICAgICBpZiAoZGVmaW5lZExheW91dD09MCkgewogICAgICAgICAg ICBmb3IgKGkgPSAxIDsgaSA8PSBsYXlvdXRfY2hhbm5lbF9jb3VudCA7IGkrKykgewogICAgICAg ICAgICAgICAvLyAgbGF5b3V0X2NoYW5uZWxfY291bnQgY29tZXMgZnJvbSB0aGUgc2FtcGxlIGVu dHJ5CiAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCg4KSBzcGVha2VyX3Bvc2l0aW9uOwogICAg ICAgICAgICAgICBpZiAoc3BlYWtlcl9wb3NpdGlvbiA9PSAxMjYpIHsgICAvLyBleHBsaWNpdCBw b3NpdGlvbgogICAgICAgICAgICAgICAgICBzaWduZWQgaW50ICgxNikgYXppbXV0aDsKICAgICAg ICAgICAgICAgICAgc2lnbmVkIGludCAoOCkgIGVsZXZhdGlvbjsKICAgICAgICAgICAgICAgfQog ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHVuc2lnbmVkIGludCg2 NCkgICBvbWl0dGVkQ2hhbm5lbHNNYXA7CiAgICAgICAgICAgICAgICAgIC8vIGEg4oCYMeKAmSBi aXQgaW5kaWNhdGVzIOKAmG5vdCBpbiB0aGlzIHRyYWNr4oCZCiAgICAgICAgIH0KICAgICAgfQog ICAgICBpZiAoc3RyZWFtX3N0cnVjdHVyZSAmIG9iamVjdFN0cnVjdHVyZWQpIHsKICAgICAgICAg dW5zaWduZWQgaW50KDgpIG9iamVjdF9jb3VudDsKICAgICAgfQogICB9IGVsc2UgewogICAgICB1 bnNpZ25lZCBpbnQoNCkgc3RyZWFtX3N0cnVjdHVyZTsKICAgICAgdW5zaWduZWQgaW50KDQpIGZv cm1hdF9vcmRlcmluZzsKICAgICAgdW5zaWduZWQgaW50KDgpIGJhc2VDaGFubmVsQ291bnQ7CiAg ICAgIGlmIChzdHJlYW1fc3RydWN0dXJlICYgY2hhbm5lbFN0cnVjdHVyZWQpIHsKICAgICAgICAg dW5zaWduZWQgaW50KDgpIGRlZmluZWRMYXlvdXQ7CiAgICAgICAgIGlmIChkZWZpbmVkTGF5b3V0 PT0wKSB7CiAgICAgICAgICAgIHVuc2lnbmVkIGludCg4KSBsYXlvdXRfY2hhbm5lbF9jb3VudDsK ICAgICAgICAgICAgZm9yIChpID0gMSA7IGkgPD0gbGF5b3V0X2NoYW5uZWxfY291bnQgOyBpKysp IHsKICAgICAgICAgICAgICAgdW5zaWduZWQgaW50KDgpIHNwZWFrZXJfcG9zaXRpb247CiAgICAg ICAgICAgICAgIGlmIChzcGVha2VyX3Bvc2l0aW9uID09IDEyNikgeyAgIC8vIGV4cGxpY2l0IHBv c2l0aW9uCiAgICAgICAgICAgICAgICAgIHNpZ25lZCBpbnQgKDE2KSBhemltdXRoOwogICAgICAg ICAgICAgICAgICBzaWduZWQgaW50ICg4KSAgZWxldmF0aW9uOwogICAgICAgICAgICAgICB9CiAg ICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaW50KDQpIHJlc2VydmVk ID0gMDsKICAgICAgICAgICAgdW5zaWduZWQgaW50KDMpIGNoYW5uZWxfb3JkZXJfZGVmaW5pdGlv bjsKICAgICAgICAgICAgdW5zaWduZWQgaW50KDEpIG9taXR0ZWRfY2hhbm5lbHNfcHJlc2VudDsK ICAgICAgICAgICAgaWYgKG9taXR0ZWRfY2hhbm5lbHNfcHJlc2VudCA9PSAxKSB7CiAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCg2NCkgICBvbWl0dGVkQ2hhbm5lbHNNYXA7CiAgICAgICAgICAg ICAgICAgICAgIC8vIGEg4oCYMeKAmSBiaXQgaW5kaWNhdGVzIOKAmG5vdCBpbiB0aGlzIHRyYWNr 4oCZCiAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICB9CiAgICAgIGlmIChzdHJlYW1fc3Ry dWN0dXJlICYgb2JqZWN0U3RydWN0dXJlZCkgewogICAgICAgICAgICAgICAgICAgICAvLyBvYmpl Y3RfY291bnQgaXMgZGVyaXZlZCBmcm9tIGJhc2VDaGFubmVsQ291bnQKICAgICAgfQogICB9Cn0K CjEyLjIuNC4zICBTZW1hbnRpY3MKCnZlcnNpb24gaXMgYW4gaW50ZWdlciB0aGF0IHNwZWNpZmll cyB0aGUgdmVyc2lvbiBvZiB0aGlzIGJveCAoMCBvciAxKS4KV2hlbiBhdXRob3JpbmcsIHZlcnNp b24gMSBzaG91bGQgYmUKICAgICAgICBwcmVmZXJyZWQgb3ZlciB2ZXJzaW9uIDAuIFZlcnNpb24g MSBjb252ZXlzIHRoZSBjaGFubmVsCm9yZGVyaW5nLCB3aGljaCBpcyBub3QgYWx3YXlzIHRoZSBj YXNlIGZvcgogICAgICAgIHZlcnNpb24gMC4gVmVyc2lvbiAxIHNob3VsZCBiZSB1c2VkIHRvIGNv bnZleSB0aGUgYmFzZSBjaGFubmVsCmNvdW50IGZvciBEUkMuCgpzdHJlYW1fc3RydWN0dXJlIGlz IGEgZmllbGQgb2YgZmxhZ3MgdGhhdCBkZWZpbmUgd2hldGhlciB0aGUgc3RyZWFtCmhhcyBjaGFu bmVsIG9yIG9iamVjdCBzdHJ1Y3R1cmUgKG9yCiAgICAgICAgICAgICAgICAgYm90aCwgb3IgbmVp dGhlcik7IHRoZSBmb2xsb3dpbmcgZmxhZ3MgYXJlIGRlZmluZWQsCmFsbCBvdGhlciB2YWx1ZXMg YXJlIHJlc2VydmVkOgogICAxICB0aGUgc3RyZWFtIGNhcnJpZXMgY2hhbm5lbHMKICAgMiAgdGhl IHN0cmVhbSBjYXJyaWVzIG9iamVjdHMKCmZvcm1hdF9vcmRlcmluZyBpbmRpY2F0ZXMgdGhlIG9y ZGVyIG9mIGZvcm1hdHMgaW4gdGhlIHN0cmVhbSBzdGFydGluZwpmcm9tIHRoZSBsb3dlc3QgY2hh bm5lbCBpbmRleAogICAgICAgICAgICAgICAgKHNlZSBUYWJsZSkuIEVhY2ggZm9ybWF0IHNoYWxs IG9ubHkgdXNlIGNvbnRpZ3VvdXMKY2hhbm5lbCBpbmRpY2VzLgogICBmb3JtYXRfb3JkZXJpbmcg T3JkZXIKICAgMCAgICAgICAgICAgICAgIHVua25vd24KICAgMSAgICAgICAgICAgICAgIENoYW5u ZWxzLCBwb3NzaWJseSBmb2xsb3dlZCBieSBPYmplY3RzCiAgIDIgICAgICAgICAgICAgICBPYmpl Y3RzLCBwb3NzaWJseSBmb2xsb3dlZCBieSBDaGFubmVscwogICBSZW1haW5pbmcgdmFsdWVzIGFy ZSByZXNlcnZlZAoKZGVmaW5lZExheW91dCBpcyBhIENoYW5uZWxDb25maWd1cmF0aW9uIGZyb20g SVNPL0lFQyAyMzA5MS0zLgoKc3BlYWtlcl9wb3NpdGlvbiBpcyBhbiBPdXRwdXRDaGFubmVsUG9z aXRpb24gZnJvbSBJU08vSUVDIDIzMDkxLTMuIElmCmFuIGV4cGxpY2l0IHBvc2l0aW9uIGlzIHVz ZWQsCiAgICAgICAgICAgICAgICAgdGhlbiB0aGUgYXppbXV0aCBhbmQgZWxldmF0aW9uIGFyZSBh cyBkZWZpbmVkIGFzIGZvcgpzcGVha2VycyBpbiBJU08vSUVDIDIzMDkxLTMuIFRoZSBjaGFubmVs CiAgICAgICAgICAgICAgICAgb3JkZXIgY29ycmVzcG9uZHMgdG8gdGhlIG9yZGVyIG9mIHNwZWFr ZXIgcG9zaXRpb25zLgoKYXppbXV0aCBpcyBhIHNpZ25lZCB2YWx1ZSBpbiBkZWdyZWVzLCBhcyBk ZWZpbmVkIGZvcgpMb3Vkc3BlYWtlckF6aW11dGggaW4gSVNPL0lFQyAyMzA5MS0zLgoKZWxldmF0 aW9uIGlzIGEgc2lnbmVkIHZhbHVlLCBpbiBkZWdyZWVzLCBhcyBkZWZpbmVkIGZvcgpMb3Vkc3Bl YWtlckVsZXZhdGlvbiBpbiBJU08vSUVDIDIzMDkxLTMuCgpjaGFubmVsX29yZGVyX2RlZmluaXRp b24gaW5kaWNhdGVzIHdoZXJlIHRoZSBvcmRlcmluZyBvZiB0aGUgYXVkaW8KY2hhbm5lbHMgZm9y IHRoZSBkZWZpbmVkTGF5b3V0CiAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgc3BlY2lmaWVk IChzZWUgVGFibGUpLgoKICAgY2hhbm5lbF9vcmRlcl9kZWZpbml0aW9uIENoYW5uZWwgb3JkZXIg c3BlY2lmaWNhdGlvbgogICAwICAgICAgICAgICAgICAgICAgICAgICAgYXMgbGlzdGVkIGZvciB0 aGUgQ2hhbm5lbENvbmZpZ3VyYXRpb25zIGluCklTTy9JRUMgMjMwOTEtMwogICAxICAgICAgICAg ICAgICAgICAgICAgICAgRGVmYXVsdCBvcmRlciBvZiBhdWRpbyBjb2RlYyBzcGVjaWZpY2F0aW9u CiAgIDIgICAgICAgICAgICAgICAgICAgICAgICBDaGFubmVsIG9yZGVyaW5nICMyIG9mIGF1ZGlv IGNvZGVjIHNwZWNpZmljYXRpb24KICAgMyAgICAgICAgICAgICAgICAgICAgICAgIENoYW5uZWwg b3JkZXJpbmcgIzMgb2YgYXVkaW8gY29kZWMgc3BlY2lmaWNhdGlvbgogICA0ICAgICAgICAgICAg ICAgICAgICAgICAgQ2hhbm5lbCBvcmRlcmluZyAjNCBvZiBhdWRpbyBjb2RlYyBzcGVjaWZpY2F0 aW9uCiAgIFJlbWFpbmluZyB2YWx1ZXMgYXJlIHJlc2VydmVkCgpvbWl0dGVkX2NoYW5uZWxzX3By ZXNlbnQgaXMgYSBmbGFnIHRoYXQgaW5kaWNhdGVzIGlmIGl0IGlzIHNldCB0byAxCnRoYXQgdGhl IG9taXR0ZWRDaGFubmVsc01hcCBpcyBwcmVzZW50LgoKb21pdHRlZENoYW5uZWxzTWFwIGlzIGEg Yml0LW1hcCBvZiBvbWl0dGVkIGNoYW5uZWxzOyB0aGUgYml0cyBpbiB0aGUKY2hhbm5lbCBtYXAg YXJlIG51bWJlcmVkIGZyb20KICAgICAgICAgICAgICAgICAgIGxlYXN0LXNpZ25pZmljYW50IHRv IG1vc3Qtc2lnbmlmaWNhbnQsIGFuZApjb3JyZXNwb25kIGluIHRoYXQgb3JkZXJpbmcgd2l0aCB0 aGUgb3JkZXIgb2YgdGhlIGNoYW5uZWxzCiAgICAgICAgICAgICAgICAgICBmb3IgIHRoZSAgY29u ZmlndXJhdGlvbiAgYXMgIGRvY3VtZW50ZWQgIGluCklTTy9JRUMgIDIzMDkxLTMgIENoYW5uZWxD b25maWd1cmF0aW9uLiAgMS1iaXRzICBpbiAgdGhlCiAgICAgICAgICAgICAgICAgICBjaGFubmVs IG1hcCBtZWFuIHRoYXQgYSBjaGFubmVsIGlzIGFic2VudC4gQSB6ZXJvCnZhbHVlIG9mIHRoZSBt YXAgdGhlcmVmb3JlIGFsd2F5cyBtZWFucyB0aGF0CiAgICAgICAgICAgICAgICAgICB0aGUgZ2l2 ZW4gc3RhbmRhcmQgbGF5b3V0IGlzIGZ1bGx5IHByZXNlbnQuIFRoZQpkZWZhdWx0IHZhbHVlIGlz IDAuCgpsYXlvdXRfY2hhbm5lbF9jb3VudCBpcyB0aGUgY291bnQgb2YgY2hhbm5lbHMgZm9yIHRo ZSBjaGFubmVsIGxheW91dC4KVGhlIGRlZmF1bHQgdmFsdWUgaXMgMCBpZiBzdHJlYW1fCiAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdHVyZSBpbmRpY2F0ZXMgdGhhdCBubyBjaGFubmVsIHN0cnVj dHVyZSBpcwpwcmVzZW50LiBPdGhlcndpc2UsIHRoZSB2YWx1ZSBpcyB0aGUgbnVtYmVyIG9mCiAg ICAgICAgICAgICAgICAgICAgIGNoYW5uZWxzIG9mIHRoZSBkZWZpbmVkIGxheW91dCwgaWYgcHJl c2VudCwKb3RoZXJ3aXNlIGl0IGlzIHRoZSB2YWx1ZSBmcm9tIHRoZSBzYW1wbGUgZW50cnkuCm9i amVjdF9jb3VudCBpcyB0aGUgY291bnQgb2YgY2hhbm5lbHMgdGhhdCBjb250YWluIGF1ZGlvIG9i amVjdHMuIFRoZQpkZWZhdWx0IHZhbHVlIGlzIDAuIEZvciB2ZXJzaW9uCiAgICAgICAgICAgICAx IGFuZCBpZiB0aGUgb2JqZWN0U3RydWN0dXJlZCBmbGFnIGlzIHNldCwgdGhlIHZhbHVlIGlzCmNv bXB1dGVkIGFzIGJhc2VDaGFubmVsQ291bnQgIG1pbnVzIHRoZQogICAgICAgICAgICAgY2hhbm5l bCBjb3VudCBvZiB0aGUgY2hhbm5lbCBzdHJ1Y3R1cmUuCgpiYXNlQ2hhbm5lbENvdW50IHJlcHJl c2VudHMgdGhlIGNvbWJpbmVkIGNoYW5uZWwgY291bnQgb2YgdGhlIGNoYW5uZWwKbGF5b3V0IGFu ZCB0aGUgb2JqZWN0IGNvdW50LgogICAgICAgICAgICAgICAgIFRoZSB2YWx1ZSBtdXN0IG1hdGNo IHRoZSBiYXNlIGNoYW5uZWwgY291bnQgZm9yIERSQwooc2VlIElTTy9JRUMgMjMwMDMtNCkuCgoK PiArCj4gKyAgICBzdHJlYW1fc3RydWN0dXJlID0gYXZpb19yOChwYik7Cj4gKwo+ICsgICAgLy8g c3RyZWFtIGNhcnJpZXMgY2hhbm5lbHMKPiArICAgIGlmIChzdHJlYW1fc3RydWN0dXJlICYgMSkg ewo+ICsgICAgICAgIGludCBsYXlvdXQgPSBhdmlvX3I4KHBiKTsKPiArCj4gKyAgICAgICAgYXZf bG9nKGMtPmZjLCBBVl9MT0dfVFJBQ0UsICInY2hubCcgbGF5b3V0ICVkXG4iLCBsYXlvdXQpOwo+ ICsgICAgICAgIGlmICghbGF5b3V0KSB7Cj4gKyAgICAgICAgICAgIHVpbnQ4X3QgcG9zaXRpb25z WzY0XSA9IHt9Owo+ICsgICAgICAgICAgICBpbnQgZW5hYmxlID0gMTsKPiArCj4gKyAgICAgICAg ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3QtPmNvZGVjcGFyLT5jaF9sYXlvdXQubmJfY2hhbm5l bHM7IGkrKykgewo+ICsgICAgICAgICAgICAgICAgaW50IHNwZWFrZXJfcG9zID0gYXZpb19yOChw Yik7Cj4gKwo+ICsgICAgICAgICAgICAgICAgYXZfbG9nKGMtPmZjLCBBVl9MT0dfVFJBQ0UsICJz cGVha2VyX3Bvc2l0aW9uICVkXG4iLCBzcGVha2VyX3Bvcyk7Cj4gKyAgICAgICAgICAgICAgICBp ZiAoc3BlYWtlcl9wb3MgPT0gMTI2KSB7IC8vIGV4cGxpY2l0IHBvc2l0aW9uCj4gKyAgICAgICAg ICAgICAgICAgICAgaW50MTZfdCBhemltdXRoID0gYXZpb19yYjE2KHBiKTsKPiArICAgICAgICAg ICAgICAgICAgICBpbnQ4X3QgZWxldmF0aW9uID0gYXZpb19yOChwYik7Cj4gKwo+ICsgICAgICAg ICAgICAgICAgICAgIGF2X2xvZyhjLT5mYywgQVZfTE9HX1RSQUNFLCAiYXppbXV0aCAlZCwgZWxl dmF0aW9uICVkXG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBhemltdXRoLCBlbGV2 YXRpb24pOwo+ICsgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IHN1cHBvcnQgZXhwbGljaXQg cG9zaXRpb24KPiArICAgICAgICAgICAgICAgICAgICBlbmFibGUgPSAwOwo+ICsgICAgICAgICAg ICAgICAgfSBlbHNlIGlmIChpIDwgRkZfQVJSQVlfRUxFTVMocG9zaXRpb25zKSkgewo+ICsgICAg ICAgICAgICAgICAgICAgIHBvc2l0aW9uc1tpXSA9IHNwZWFrZXJfcG9zOwo+ICsgICAgICAgICAg ICAgICAgfSBlbHNlIHsKPiArICAgICAgICAgICAgICAgICAgICAvLyBudW1iZXIgb2YgY2hhbm5l bCBvdXQgb2Ygb3VyIHN1cHBvcnRlZCByYW5nZQo+ICsgICAgICAgICAgICAgICAgICAgIGVuYWJs ZSA9IDA7Cj4gKyAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgIH0KPiArCj4gKyAgICAg ICAgICAgIGlmIChlbmFibGUpIHsKPiArICAgICAgICAgICAgICAgIHJldCA9IGZmX21vdl9nZXRf bGF5b3V0X2Zyb21fY2hhbm5lbF9wb3NpdGlvbnMocG9zaXRpb25zLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICBzdC0+Y29kZWNwYXItPmNoX2xheW91dC5uYl9jaGFubmVscywKPiArICAgICAg ICAgICAgICAgICAgICAgICAgJnN0LT5jb2RlY3Bhci0+Y2hfbGF5b3V0KTsKPiArICAgICAgICAg ICAgICAgIGlmIChyZXQpIHsKPiArICAgICAgICAgICAgICAgICAgICBhdl9sb2coYy0+ZmMsIEFW X0xPR19XQVJOSU5HLCAidW5zdXBwb3J0ZWQgc3BlYWtlciBwb3NpdGlvbnNcbiIpOwo+ICsgICAg ICAgICAgICAgICAgICAgIHJldCA9IDA7Cj4gKyAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAg ICAgIH0KPiArICAgICAgICB9IGVsc2Ugewo+ICsgICAgICAgICAgICB1aW50NjRfdCBvbWl0dGVk X2NoYW5uZWxfbWFwID0gYXZpb19yYjY0KHBiKTsKPiArCj4gKyAgICAgICAgICAgIGlmIChvbWl0 dGVkX2NoYW5uZWxfbWFwKSB7Cj4gKyAgICAgICAgICAgICAgICBhdnByaXZfcmVxdWVzdF9zYW1w bGUoYy0+ZmMsICJvbWl0dGVkX2NoYW5uZWxfbWFwIDB4JSIgUFJJeDY0ICIgIT0gMCIsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb21pdHRlZF9jaGFubmVsX21hcCk7 Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9QQVRDSFdFTENPTUU7Cj4gKyAgICAg ICAgICAgIH0KPiArICAgICAgICAgICAgZmZfbW92X2dldF9jaGFubmVsX2xheW91dF9mcm9tX2Nv bmZpZyhsYXlvdXQsICZzdC0+Y29kZWNwYXItPmNoX2xheW91dCk7Cj4gKyAgICAgICAgfQo+ICsg ICAgfQo+ICsKPiArICAgIC8vIHN0cmVhbSBjYXJyaWVzIG9iamVjdHMKPiArICAgIGlmIChzdHJl YW1fc3RydWN0dXJlICYgMikgewo+ICsgICAgICAgIGludCBvYmpfY291bnQgPSBhdmlvX3I4KHBi KTsKPiArICAgICAgICBhdl9sb2coYy0+ZmMsIEFWX0xPR19UUkFDRSwgIidjaG5sJyB3aXRoIG9i amVjdF9jb3VudCAlZFxuIiwgb2JqX2NvdW50KTsKPiArICAgIH0KPiArCj4gKyAgICBhdmlvX3Nl ZWsocGIsIGVuZCwgU0VFS19TRVQpOwo+ICsgICAgcmV0dXJuIHJldDsKPiArfQo+ICsKPiAgc3Rh dGljIGludCBtb3ZfcmVhZF93ZmV4KE1PVkNvbnRleHQgKmMsIEFWSU9Db250ZXh0ICpwYiwgTU9W QXRvbSBhdG9tKQo+ICB7Cj4gICAgICBBVlN0cmVhbSAqc3Q7Cj4gQEAgLTc3ODQsNyArNzg2MCw4 IEBAIHN0YXRpYyBjb25zdCBNT1ZQYXJzZVRhYmxlRW50cnkgbW92X2RlZmF1bHRfcGFyc2VfdGFi bGVbXSA9IHsKPiAgeyBNS1RBRygndycsJ2knLCdkJywnZScpLCBtb3ZfcmVhZF93aWRlIH0sIC8q IHBsYWNlIGhvbGRlciAqLwo+ICB7IE1LVEFHKCd3JywnZicsJ2UnLCd4JyksIG1vdl9yZWFkX3dm ZXggfSwKPiAgeyBNS1RBRygnYycsJ20nLCdvJywndicpLCBtb3ZfcmVhZF9jbW92IH0sCj4gLXsg TUtUQUcoJ2MnLCdoJywnYScsJ24nKSwgbW92X3JlYWRfY2hhbiB9LCAvKiBjaGFubmVsIGxheW91 dCAqLwo+ICt7IE1LVEFHKCdjJywnaCcsJ2EnLCduJyksIG1vdl9yZWFkX2NoYW4gfSwgLyogY2hh bm5lbCBsYXlvdXQgZnJvbSBxdWlja3RpbWUgKi8KPiAreyBNS1RBRygnYycsJ2gnLCduJywnbCcp LCBtb3ZfcmVhZF9jaG5sIH0sIC8qIGNoYW5uZWwgbGF5b3V0IGZyb20gSVNPLTE0NDk2LTEyICov Cj4gIHsgTUtUQUcoJ2QnLCd2JywnYycsJzEnKSwgbW92X3JlYWRfZHZjMSB9LAo+ICB7IE1LVEFH KCdzJywnZycsJ3AnLCdkJyksIG1vdl9yZWFkX3NncGQgfSwKPiAgeyBNS1RBRygncycsJ2InLCdn JywncCcpLCBtb3ZfcmVhZF9zYmdwIH0sCj4gZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L21vdl9j aGFuLmMgYi9saWJhdmZvcm1hdC9tb3ZfY2hhbi5jCj4gaW5kZXggZjY2YmYwZGY3Zi4uMTBlYmNk YzA4ZiAxMDA2NDQKPiAtLS0gYS9saWJhdmZvcm1hdC9tb3ZfY2hhbi5jCj4gKysrIGIvbGliYXZm b3JtYXQvbW92X2NoYW4uYwo+IEBAIC01NTEsMyArNTUxLDI2OCBAQCBpbnQgZmZfbW92X3JlYWRf Y2hhbihBVkZvcm1hdENvbnRleHQgKnMsIEFWSU9Db250ZXh0ICpwYiwgQVZTdHJlYW0gKnN0LAo+ Cj4gICAgICByZXR1cm4gMDsKPiAgfQo+ICsKPiArLyogSVNPL0lFQyAyMzAwMS04LCA4LjIgKi8K PiArc3RhdGljIGNvbnN0IEFWQ2hhbm5lbExheW91dCBpc29fY2hhbm5lbF9jb25maWd1cmF0aW9u W10gPSB7Cj4gKyAgICAvLyAwOiBhbnkgc2V0dXAKPiArICAgIHt9LAo+ICsKCkkgdGhpbmsgdGhl IGJldHRlciBuYW1pbmcgZm9yIHRoaXMgd291bGQgYmUgQ0lDUCBjaGFubmVsIGNvbmZpZ3VyYXRp b24Kc2luY2UgdGhlIHNwZWNpZmljYXRpb24gaXMgY2FsbGVkICJjb21tb24gaW5kZXBlbmRlbnQg Y29kaW5nIHBvaW50cyIKKGZvciB2aWRlbyB0aGlzIGlzIHNoYXJlZCB3aXRoIElUVS1UIEguMjcz IHdoaWNoIGlzIGZyZWUpLgoKQWxzbyBkbyBub3RlIHRoYXQgYSB3aG9sZSBidW5jaCBvZiB0aGVz ZSBhcmUgbm90IGluIHRoZSBjaGFubmVsIG9yZGVyCnRoYXQgRkZtcGVnIHdhbnRzIGFmdGVyIHN0 ZXJlbyA6PAoKVGhhbmtmdWxseSB3aXRoIG1hbnVhbCBtYXBwaW5nIEZGbXBlZyBuYXRpdmUgY2hh bm5lbCBsYXlvdXRzJyBjaGFubmVsCm9yZGVyIHNob3VsZCBiZSB3cml0YWJsZSBhbmQgcmVhZGFi bGUuCgpUaGUgY2hhbm5lbCBvcmRlcnMgZm9yIHZhcmlvdXMgQ0lDUCBsYXlvdXRzIGNhbiBiZSBm b3VuZCBib3RoIGluIHRoZQpyZWZlcmVuY2VkIHNwZWNpZmljYXRpb25zLCBhcyB3ZWxsIGFzIGlu IHRoZSBjb21tZW50cyBmcm9tIEFwcGxlJ3MKaGVhZGVycyBmb3IgZXhhbXBsZQoKLy8gSVNPL0lF QyAyMzA5MS0zLCBjaGFubmVscyB3L29yZGVyaW5ncwprQXVkaW9DaGFubmVsTGF5b3V0VGFnX0NJ Q1BfMSAgICAgICAgICAgICAgICAgICA9CmtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfTVBFR18xXzAs ICAgICAgLy8vPCBDCmtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfQ0lDUF8yICAgICAgICAgICAgICAg ICAgID0Ka0F1ZGlvQ2hhbm5lbExheW91dFRhZ19NUEVHXzJfMCwgICAgICAvLy88IEwgUgprQXVk aW9DaGFubmVsTGF5b3V0VGFnX0NJQ1BfMyAgICAgICAgICAgICAgICAgICA9CmtBdWRpb0NoYW5u ZWxMYXlvdXRUYWdfTVBFR18zXzBfQSwgICAgLy8vPCBMIFIgQwprQXVkaW9DaGFubmVsTGF5b3V0 VGFnX0NJQ1BfNCAgICAgICAgICAgICAgICAgICA9CmtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfTVBF R180XzBfQSwgICAgLy8vPCBMIFIgQyBDcwprQXVkaW9DaGFubmVsTGF5b3V0VGFnX0NJQ1BfNSAg ICAgICAgICAgICAgICAgICA9CmtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfTVBFR181XzBfQSwgICAg Ly8vPCBMIFIgQyBMcyBScwprQXVkaW9DaGFubmVsTGF5b3V0VGFnX0NJQ1BfNiAgICAgICAgICAg ICAgICAgICA9CmtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfTVBFR181XzFfQSwgICAgLy8vPCBMIFIg QyBMRkUgTHMgUnMKa0F1ZGlvQ2hhbm5lbExheW91dFRhZ19DSUNQXzcgICAgICAgICAgICAgICAg ICAgPQprQXVkaW9DaGFubmVsTGF5b3V0VGFnX01QRUdfN18xX0IsICAgIC8vLzwgTCBSIEMgTEZF IExzIFJzIExjIFJjCgprQXVkaW9DaGFubmVsTGF5b3V0VGFnX0NJQ1BfOSAgICAgICAgICAgICAg ICAgICA9CmtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfSVRVXzJfMSwgICAgICAgLy8vPCBMIFIgQ3MK a0F1ZGlvQ2hhbm5lbExheW91dFRhZ19DSUNQXzEwICAgICAgICAgICAgICAgICAgPQprQXVkaW9D aGFubmVsTGF5b3V0VGFnX0lUVV8yXzIsICAgICAgIC8vLzwgTCBSIExzIFJzCmtBdWRpb0NoYW5u ZWxMYXlvdXRUYWdfQ0lDUF8xMSAgICAgICAgICAgICAgICAgID0Ka0F1ZGlvQ2hhbm5lbExheW91 dFRhZ19NUEVHXzZfMV9BLCAgICAvLy88IEwgUiBDIExGRSBMcyBScyBDcwprQXVkaW9DaGFubmVs TGF5b3V0VGFnX0NJQ1BfMTIgICAgICAgICAgICAgICAgICA9CmtBdWRpb0NoYW5uZWxMYXlvdXRU YWdfTVBFR183XzFfQywgICAgLy8vPCBMIFIgQyBMRkUgTHMgUnMgUmxzIFJycwprQXVkaW9DaGFu bmVsTGF5b3V0VGFnX0NJQ1BfMTMgICAgICAgICAgICAgICAgICA9ICgyMDRVPDwxNikgfCAyNCwK ICAgICAgICAgICAgICAgICAgIC8vLzwgTGMgUmMgQyBMRkUyIFJscyBScnMgTCBSIENzIExGRTMg THNzIFJzcyBWaGwKVmhyIFZoYyBUcyBMdHIgUnRyIEx0bSBSdG0gQ3RyIENiIExiIFJiCgprQXVk aW9DaGFubmVsTGF5b3V0VGFnX0NJQ1BfMTQgICAgICAgICAgICAgICAgICA9ICgyMDVVPDwxNikg fCA4LAogICAgICAgICAgICAgICAvLy88IEwgUiBDIExGRSBMcyBScyBWaGwgVmhyCmtBdWRpb0No YW5uZWxMYXlvdXRUYWdfQ0lDUF8xNSAgICAgICAgICAgICAgICAgID0gKDIwNlU8PDE2KSB8IDEy LAogICAgICAgICAgICAgICAgICAgLy8vPCBMIFIgQyBMRkUyIFJscyBScnMgTEZFMyBMc3MgUnNz IFZobCBWaHIgQ3RyCgprQXVkaW9DaGFubmVsTGF5b3V0VGFnX0NJQ1BfMTYgICAgICAgICAgICAg ICAgICA9ICgyMDdVPDwxNikgfCAxMCwKICAgICAgICAgICAgICAgICAgIC8vLzwgTCBSIEMgTEZF IExzIFJzIFZobCBWaHIgTHRzIFJ0cwprQXVkaW9DaGFubmVsTGF5b3V0VGFnX0NJQ1BfMTcgICAg ICAgICAgICAgICAgICA9ICgyMDhVPDwxNikgfCAxMiwKICAgICAgICAgICAgICAgICAgIC8vLzwg TCBSIEMgTEZFIExzIFJzIFZobCBWaHIgVmhjIEx0cyBSdHMgVHMKa0F1ZGlvQ2hhbm5lbExheW91 dFRhZ19DSUNQXzE4ICAgICAgICAgICAgICAgICAgPSAoMjA5VTw8MTYpIHwgMTQsCiAgICAgICAg ICAgICAgICAgICAvLy88IEwgUiBDIExGRSBMcyBScyBMYnMgUmJzIFZobCBWaHIgVmhjIEx0cyBS dHMgVHMKCmtBdWRpb0NoYW5uZWxMYXlvdXRUYWdfQ0lDUF8xOSAgICAgICAgICAgICAgICAgID0g KDIxMFU8PDE2KSB8IDEyLAogICAgICAgICAgICAgICAgICAgLy8vPCBMIFIgQyBMRkUgUmxzIFJy cyBMc3MgUnNzIFZobCBWaHIgTHRyIFJ0cgprQXVkaW9DaGFubmVsTGF5b3V0VGFnX0NJQ1BfMjAg ICAgICAgICAgICAgICAgICA9ICgyMTFVPDwxNikgfCAxNCwKICAgICAgICAgICAgICAgICAgIC8v LzwgTCBSIEMgTEZFIFJscyBScnMgTHNzIFJzcyBWaGwgVmhyIEx0ciBSdHIgTGVvcwpSZW9zCgpC ZXN0IHJlZ2FyZHMsCkphbgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3Jn Cmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5z dWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0 QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==