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 1049949BA9 for ; Mon, 4 Mar 2024 13:08:00 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B1C2C68D472; Mon, 4 Mar 2024 15:07:18 +0200 (EET) Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C7CFE68D3B7 for ; Mon, 4 Mar 2024 15:07:08 +0200 (EET) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=PEj8CgDl; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id 793BA10B9 for ; Mon, 4 Mar 2024 14:07:08 +0100 (CET) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id UNuDM3gZ2MEZ for ; Mon, 4 Mar 2024 14:07:07 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1709557626; bh=1nnSBeXZB2NrORqw4Soo2vE3oc+yacZHR+w9qaT4cOE=; h=From:To:Subject:Date:In-Reply-To:References:From; b=PEj8CgDl6lYN5m+Buw3Gt4bXJiHqcMc4L1efursR6AvCxGnMkBmDrR/aJTI/AZfrq DJkgNsK6hoE8ESbSqFey7BG4EAAgeyNi1GAdPHMJ2JrbFIM6Gf4dgjzIsDnrYizEPM shF7N2sd8cHcTn2A+BteadNf/ZlHfW8RIsMFfVvQyijW+++FpgFviPPoIjqKtLR18s yuivdsAcsF3ZDqj98pBLQUh8pBE5Sty3MleB2+kJmHzfb7ZFRRsGDX1x05mIKUTKvS MoFKbGOAFlCb6RP4RbQ0+JFraYlIvHCKNfw8qZ6fnTDGdDZMw1x5Njq/PlGfGkbAQ9 /CdDJ7zk+3BDA== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id 384A84D3E for ; Mon, 4 Mar 2024 14:07:06 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 1F4163A0C79 for ; Mon, 4 Mar 2024 14:07:00 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Mon, 4 Mar 2024 14:06:21 +0100 Message-ID: <20240304130657.30631-6-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240304130657.30631-1-anton@khirnov.net> References: <20240304130657.30631-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 06/29] lavu/opt: add array options 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: LS0tCiBkb2MvQVBJY2hhbmdlcyAgICAgICAgfCAgIDMgKwogbGliYXZ1dGlsL29wdC5jICAgICAg IHwgMzYyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQogbGliYXZ1 dGlsL29wdC5oICAgICAgIHwgIDYyICsrKysrKystCiBsaWJhdnV0aWwvdGVzdHMvb3B0LmMgfCAg NTEgKysrKysrCiB0ZXN0cy9yZWYvZmF0ZS9vcHQgICAgfCAgMzUgKysrLQogNSBmaWxlcyBjaGFu Z2VkLCA0NjggaW5zZXJ0aW9ucygrKSwgNDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9j L0FQSWNoYW5nZXMgYi9kb2MvQVBJY2hhbmdlcwppbmRleCA3ZDQ2ZWJiMDA2Li4zMjA5NjE0ZWQ2 IDEwMDY0NAotLS0gYS9kb2MvQVBJY2hhbmdlcworKysgYi9kb2MvQVBJY2hhbmdlcwpAQCAtMiw2 ICsyLDkgQEAgVGhlIGxhc3QgdmVyc2lvbiBpbmNyZWFzZXMgb2YgYWxsIGxpYnJhcmllcyB3ZXJl IG9uIDIwMjMtMDItMDkKIAogQVBJIGNoYW5nZXMsIG1vc3QgcmVjZW50IGZpcnN0OgogCisyMDI0 LTAyLXh4IC0geHh4eHh4eHh4eCAtIGxhdnUgNTgueHguMTAwIC0gb3B0LmgKKyAgQWRkIEFWX09Q VF9UWVBFX0ZMQUdfQVJSQVkgYW5kIEFWT3B0aW9uQXJyYXlEZWYuCisKIDIwMjQtMDItMjggLSB4 eHh4eHh4eHh4IC0gc3dyICAgNC4xNC4xMDAgLSBzd3Jlc2FtcGxlLmgKICAgc3dyX2NvbnZlcnQo KSBub3cgYWNjZXB0cyBhcnJheXMgb2YgY29uc3QgcG9pbnRlcnMgKHRvIGlucHV0IGFuZCBvdXRw dXQpLgogCmRpZmYgLS1naXQgYS9saWJhdnV0aWwvb3B0LmMgYi9saWJhdnV0aWwvb3B0LmMKaW5k ZXggZDE4YTFjNjNiNy4uNmE1ZTNjNzE3NCAxMDA2NDQKLS0tIGEvbGliYXZ1dGlsL29wdC5jCisr KyBiL2xpYmF2dXRpbC9vcHQuYwpAQCAtNDMsNiArNDMsOCBAQAogCiAjaW5jbHVkZSA8ZmxvYXQu aD4KIAorI2RlZmluZSBUWVBFX0JBU0UodHlwZSkgKCh0eXBlKSAmIH5BVl9PUFRfVFlQRV9GTEFH X0FSUkFZKQorCiBjb25zdCBBVk9wdGlvbiAqYXZfb3B0X25leHQoY29uc3Qgdm9pZCAqb2JqLCBj b25zdCBBVk9wdGlvbiAqbGFzdCkKIHsKICAgICBjb25zdCBBVkNsYXNzICpjbGFzczsKQEAgLTEw Niw2ICsxMDgsNTQgQEAgc3RhdGljIGludCBvcHRfaXNfcG9kKGVudW0gQVZPcHRpb25UeXBlIHR5 cGUpCiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB1aW50OF90IG9wdF9hcnJheV9zZXAoY29u c3QgQVZPcHRpb24gKm8pCit7CisgICAgY29uc3QgQVZPcHRpb25BcnJheURlZiAqZCA9IG8tPmRl ZmF1bHRfdmFsLmFycjsKKyAgICBhdl9hc3NlcnQxKG8tPnR5cGUgJiBBVl9PUFRfVFlQRV9GTEFH X0FSUkFZKTsKKyAgICByZXR1cm4gKGQgJiYgZC0+c2VwKSA/IGQtPnNlcCA6ICcsJzsKK30KKwor c3RhdGljIHZvaWQgKm9wdF9hcnJheV9wZWxlbShjb25zdCBBVk9wdGlvbiAqbywgdm9pZCAqYXJy YXksIHVuc2lnbmVkIGlkeCkKK3sKKyAgICBhdl9hc3NlcnQxKG8tPnR5cGUgJiBBVl9PUFRfVFlQ RV9GTEFHX0FSUkFZKTsKKyAgICByZXR1cm4gKHVpbnQ4X3QgKilhcnJheSArIGlkeCAqIG9wdF9l bGVtX3NpemVbVFlQRV9CQVNFKG8tPnR5cGUpXTsKK30KKworc3RhdGljIHVuc2lnbmVkICpvcHRf YXJyYXlfcGNvdW50KGNvbnN0IHZvaWQgKnBhcnJheSkKK3sKKyAgICByZXR1cm4gKHVuc2lnbmVk ICopKChjb25zdCB2b2lkICogY29uc3QgKilwYXJyYXkgKyAxKTsKK30KKworc3RhdGljIHZvaWQg b3B0X2ZyZWVfZWxlbShjb25zdCBBVk9wdGlvbiAqbywgdm9pZCAqcHRyKQoreworICAgIHN3aXRj aCAoVFlQRV9CQVNFKG8tPnR5cGUpKSB7CisgICAgY2FzZSBBVl9PUFRfVFlQRV9TVFJJTkc6Cisg ICAgY2FzZSBBVl9PUFRfVFlQRV9CSU5BUlk6CisgICAgICAgIGF2X2ZyZWVwKHB0cik7CisgICAg ICAgIGJyZWFrOworCisgICAgY2FzZSBBVl9PUFRfVFlQRV9ESUNUOgorICAgICAgICBhdl9kaWN0 X2ZyZWUoKEFWRGljdGlvbmFyeSAqKilwdHIpOworICAgICAgICBicmVhazsKKworICAgIGNhc2Ug QVZfT1BUX1RZUEVfQ0hMQVlPVVQ6CisgICAgICAgIGF2X2NoYW5uZWxfbGF5b3V0X3VuaW5pdCgo QVZDaGFubmVsTGF5b3V0ICopcHRyKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0Ogor ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIG9wdF9mcmVlX2FycmF5KGNv bnN0IEFWT3B0aW9uICpvLCB2b2lkICpwYXJyYXksIHVuc2lnbmVkICpjb3VudCkKK3sKKyAgICBm b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgKmNvdW50OyBpKyspCisgICAgICAgIG9wdF9mcmVlX2Vs ZW0obywgb3B0X2FycmF5X3BlbGVtKG8sICoodm9pZCAqKilwYXJyYXksIGkpKTsKKworICAgIGF2 X2ZyZWVwKHBhcnJheSk7CisgICAgKmNvdW50ID0gMDsKK30KKwogc3RhdGljIGludCByZWFkX251 bWJlcihjb25zdCBBVk9wdGlvbiAqbywgY29uc3Qgdm9pZCAqZHN0LCBkb3VibGUgKm51bSwgaW50 ICpkZW4sIGludDY0X3QgKmludG51bSkKIHsKICAgICBzd2l0Y2ggKG8tPnR5cGUpIHsKQEAgLTE1 MSwxNCArMjAxLDE2IEBAIEZGX0VOQUJMRV9ERVBSRUNBVElPTl9XQVJOSU5HUwogCiBzdGF0aWMg aW50IHdyaXRlX251bWJlcih2b2lkICpvYmosIGNvbnN0IEFWT3B0aW9uICpvLCB2b2lkICpkc3Qs IGRvdWJsZSBudW0sIGludCBkZW4sIGludDY0X3QgaW50bnVtKQogewotICAgIGlmIChvLT50eXBl ICE9IEFWX09QVF9UWVBFX0ZMQUdTICYmCisgICAgY29uc3QgZW51bSBBVk9wdGlvblR5cGUgdHlw ZSA9IFRZUEVfQkFTRShvLT50eXBlKTsKKworICAgIGlmICh0eXBlICE9IEFWX09QVF9UWVBFX0ZM QUdTICYmCiAgICAgICAgICghZGVuIHx8IG8tPm1heCAqIGRlbiA8IG51bSAqIGludG51bSB8fCBv LT5taW4gKiBkZW4gPiBudW0gKiBpbnRudW0pKSB7CiAgICAgICAgIG51bSA9IGRlbiA/IG51bSAq IGludG51bSAvIGRlbiA6IChudW0gJiYgaW50bnVtID8gSU5GSU5JVFkgOiBOQU4pOwogICAgICAg ICBhdl9sb2cob2JqLCBBVl9MT0dfRVJST1IsICJWYWx1ZSAlZiBmb3IgcGFyYW1ldGVyICclcycg b3V0IG9mIHJhbmdlIFslZyAtICVnXVxuIiwKICAgICAgICAgICAgICAgIG51bSwgby0+bmFtZSwg by0+bWluLCBvLT5tYXgpOwogICAgICAgICByZXR1cm4gQVZFUlJPUihFUkFOR0UpOwogICAgIH0K LSAgICBpZiAoby0+dHlwZSA9PSBBVl9PUFRfVFlQRV9GTEFHUykgeworICAgIGlmICh0eXBlID09 IEFWX09QVF9UWVBFX0ZMQUdTKSB7CiAgICAgICAgIGRvdWJsZSBkID0gbnVtKmludG51bS9kZW47 CiAgICAgICAgIGlmIChkIDwgLTEuNSB8fCBkID4gMHhGRkZGRkZGRiswLjUgfHwgKGxscmludChk KjI1NikgJiAyNTUpKSB7CiAgICAgICAgICAgICBhdl9sb2cob2JqLCBBVl9MT0dfRVJST1IsCkBA IC0xNjgsNyArMjIwLDcgQEAgc3RhdGljIGludCB3cml0ZV9udW1iZXIodm9pZCAqb2JqLCBjb25z dCBBVk9wdGlvbiAqbywgdm9pZCAqZHN0LCBkb3VibGUgbnVtLCBpbnQKICAgICAgICAgfQogICAg IH0KIAotICAgIHN3aXRjaCAoby0+dHlwZSkgeworICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNh c2UgQVZfT1BUX1RZUEVfUElYRUxfRk1UOgogICAgICAgICAqKGVudW0gQVZQaXhlbEZvcm1hdCAq KWRzdCA9IGxscmludChudW0gLyBkZW4pICogaW50bnVtOwogICAgICAgICBicmVhazsKQEAgLTI4 Nyw5ICszMzksMTAgQEAgc3RhdGljIGludCBzZXRfc3RyaW5nKHZvaWQgKm9iaiwgY29uc3QgQVZP cHRpb24gKm8sIGNvbnN0IGNoYXIgKnZhbCwgdWludDhfdCAqKmQKIAogc3RhdGljIGludCBzZXRf c3RyaW5nX251bWJlcih2b2lkICpvYmosIHZvaWQgKnRhcmdldF9vYmosIGNvbnN0IEFWT3B0aW9u ICpvLCBjb25zdCBjaGFyICp2YWwsIHZvaWQgKmRzdCkKIHsKKyAgICBjb25zdCBlbnVtIEFWT3B0 aW9uVHlwZSB0eXBlID0gVFlQRV9CQVNFKG8tPnR5cGUpOwogICAgIGludCByZXQgPSAwOwogCi0g ICAgaWYgKG8tPnR5cGUgPT0gQVZfT1BUX1RZUEVfUkFUSU9OQUwgfHwgby0+dHlwZSA9PSBBVl9P UFRfVFlQRV9WSURFT19SQVRFKSB7CisgICAgaWYgKHR5cGUgPT0gQVZfT1BUX1RZUEVfUkFUSU9O QUwgfHwgdHlwZSA9PSBBVl9PUFRfVFlQRV9WSURFT19SQVRFKSB7CiAgICAgICAgIGludCBudW0s IGRlbjsKICAgICAgICAgY2hhciBjOwogICAgICAgICBpZiAoc3NjYW5mKHZhbCwgIiVkJSoxWzov XSVkJWMiLCAmbnVtLCAmZGVuLCAmYykgPT0gMikgewpAQCAtMzA2LDcgKzM1OSw3IEBAIHN0YXRp YyBpbnQgc2V0X3N0cmluZ19udW1iZXIodm9pZCAqb2JqLCB2b2lkICp0YXJnZXRfb2JqLCBjb25z dCBBVk9wdGlvbiAqbywgY29uCiAgICAgICAgIGRvdWJsZSBkOwogICAgICAgICBpbnQ2NF90IGlu dG51bSA9IDE7CiAKLSAgICAgICAgaWYgKG8tPnR5cGUgPT0gQVZfT1BUX1RZUEVfRkxBR1MpIHsK KyAgICAgICAgaWYgKHR5cGUgPT0gQVZfT1BUX1RZUEVfRkxBR1MpIHsKICAgICAgICAgICAgIGlm ICgqdmFsID09ICcrJyB8fCAqdmFsID09ICctJykKICAgICAgICAgICAgICAgICBjbWQgPSAqKHZh bCsrKTsKICAgICAgICAgICAgIGZvciAoOyBpIDwgc2l6ZW9mKGJ1ZikgLSAxICYmIHZhbFtpXSAm JiB2YWxbaV0gIT0gJysnICYmIHZhbFtpXSAhPSAnLSc7IGkrKykKQEAgLTM2Miw3ICs0MTUsNyBA QCBzdGF0aWMgaW50IHNldF9zdHJpbmdfbnVtYmVyKHZvaWQgKm9iaiwgdm9pZCAqdGFyZ2V0X29i aiwgY29uc3QgQVZPcHRpb24gKm8sIGNvbgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg IH0KICAgICAgICAgfQotICAgICAgICBpZiAoby0+dHlwZSA9PSBBVl9PUFRfVFlQRV9GTEFHUykg eworICAgICAgICBpZiAodHlwZSA9PSBBVl9PUFRfVFlQRV9GTEFHUykgewogICAgICAgICAgICAg aW50bnVtID0gKih1bnNpZ25lZCBpbnQqKWRzdDsKICAgICAgICAgICAgIGlmIChjbWQgPT0gJysn KQogICAgICAgICAgICAgICAgIGQgPSBpbnRudW0gfCAoaW50NjRfdClkOwpAQCAtNTQ3LDIxICs2 MDAsMjIgQEAgc3RhdGljIGludCBzZXRfc3RyaW5nX2NoYW5uZWxfbGF5b3V0KHZvaWQgKm9iaiwg Y29uc3QgQVZPcHRpb24gKm8sCiBzdGF0aWMgaW50IG9wdF9zZXRfZWxlbSh2b2lkICpvYmosIHZv aWQgKnRhcmdldF9vYmosIGNvbnN0IEFWT3B0aW9uICpvLAogICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqdmFsLCB2b2lkICpkc3QpCiB7CisgICAgY29uc3QgZW51bSBBVk9wdGlv blR5cGUgdHlwZSA9IFRZUEVfQkFTRShvLT50eXBlKTsKICAgICBpbnQgcmV0OwogCiBGRl9ESVNB QkxFX0RFUFJFQ0FUSU9OX1dBUk5JTkdTCi0gICAgaWYgKCF2YWwgJiYgKG8tPnR5cGUgIT0gQVZf T1BUX1RZUEVfU1RSSU5HICYmCi0gICAgICAgICAgICAgICAgIG8tPnR5cGUgIT0gQVZfT1BUX1RZ UEVfUElYRUxfRk1UICYmIG8tPnR5cGUgIT0gQVZfT1BUX1RZUEVfU0FNUExFX0ZNVCAmJgotICAg ICAgICAgICAgICAgICBvLT50eXBlICE9IEFWX09QVF9UWVBFX0lNQUdFX1NJWkUgJiYKLSAgICAg ICAgICAgICAgICAgby0+dHlwZSAhPSBBVl9PUFRfVFlQRV9EVVJBVElPTiAmJiBvLT50eXBlICE9 IEFWX09QVF9UWVBFX0NPTE9SICYmCisgICAgaWYgKCF2YWwgJiYgKHR5cGUgIT0gQVZfT1BUX1RZ UEVfU1RSSU5HICYmCisgICAgICAgICAgICAgICAgIHR5cGUgIT0gQVZfT1BUX1RZUEVfUElYRUxf Rk1UICYmIHR5cGUgIT0gQVZfT1BUX1RZUEVfU0FNUExFX0ZNVCAmJgorICAgICAgICAgICAgICAg ICB0eXBlICE9IEFWX09QVF9UWVBFX0lNQUdFX1NJWkUgJiYKKyAgICAgICAgICAgICAgICAgdHlw ZSAhPSBBVl9PUFRfVFlQRV9EVVJBVElPTiAmJiB0eXBlICE9IEFWX09QVF9UWVBFX0NPTE9SICYm CiAjaWYgRkZfQVBJX09MRF9DSEFOTkVMX0xBWU9VVAotICAgICAgICAgICAgICAgICBvLT50eXBl ICE9IEFWX09QVF9UWVBFX0NIQU5ORUxfTEFZT1VUICYmCisgICAgICAgICAgICAgICAgIHR5cGUg IT0gQVZfT1BUX1RZUEVfQ0hBTk5FTF9MQVlPVVQgJiYKICNlbmRpZgotICAgICAgICAgICAgICAg ICBvLT50eXBlICE9IEFWX09QVF9UWVBFX0JPT0wpKQorICAgICAgICAgICAgICAgICB0eXBlICE9 IEFWX09QVF9UWVBFX0JPT0wpKQogICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwogRkZf RU5BQkxFX0RFUFJFQ0FUSU9OX1dBUk5JTkdTCiAKLSAgICBzd2l0Y2ggKG8tPnR5cGUpIHsKKyAg ICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEFWX09QVF9UWVBFX0JPT0w6CiAgICAgICAgIHJl dHVybiBzZXRfc3RyaW5nX2Jvb2wob2JqLCBvLCB2YWwsIGRzdCk7CiAgICAgY2FzZSBBVl9PUFRf VFlQRV9TVFJJTkc6CkBAIC02NDAsNiArNjk0LDg1IEBAIEZGX0VOQUJMRV9ERVBSRUNBVElPTl9X QVJOSU5HUwogICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CiB9CiAKK3N0YXRpYyBpbnQgb3B0 X3NldF9hcnJheSh2b2lkICpvYmosIHZvaWQgKnRhcmdldF9vYmosIGNvbnN0IEFWT3B0aW9uICpv LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnZhbCwgdm9pZCAqZHN0KQor eworICAgIGNvbnN0IEFWT3B0aW9uQXJyYXlEZWYgKmFyciA9IG8tPmRlZmF1bHRfdmFsLmFycjsK KyAgICBjb25zdCBzaXplX3QgICAgICBlbGVtX3NpemUgPSBvcHRfZWxlbV9zaXplW1RZUEVfQkFT RShvLT50eXBlKV07CisgICAgY29uc3QgdWludDhfdCAgICAgICAgICAgc2VwID0gb3B0X2FycmF5 X3NlcChvKTsKKyAgICB1aW50OF90ICAgICAgICAgICAgICAgICpzdHIgPSBOVUxMOworCisgICAg dm9pZCAgICAgICAqZWxlbXMgPSBOVUxMOworICAgIHVuc2lnbmVkIG5iX2VsZW1zID0gMDsKKyAg ICBpbnQgcmV0OworCisgICAgaWYgKHZhbCAmJiAqdmFsKSB7CisgICAgICAgIHN0ciA9IGF2X21h bGxvYyhzdHJsZW4odmFsKSArIDEpOworICAgICAgICBpZiAoIXN0cikKKyAgICAgICAgICAgIHJl dHVybiBBVkVSUk9SKEVOT01FTSk7CisgICAgfQorCisgICAgLy8gc3BsaXQgYW5kIHVuZXNjYXBl IHRoZSBzdHJpbmcKKyAgICB3aGlsZSAodmFsICYmICp2YWwpIHsKKyAgICAgICAgdWludDhfdCAq cCA9IHN0cjsKKyAgICAgICAgdm9pZCAqdG1wOworCisgICAgICAgIGlmIChhcnIgJiYgYXJyLT5z aXplX21heCAmJiBuYl9lbGVtcyA+PSBhcnItPnNpemVfbWF4KSB7CisgICAgICAgICAgICBhdl9s b2cob2JqLCBBVl9MT0dfRVJST1IsCisgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBhc3NpZ24g bW9yZSB0aGFuICV1IGVsZW1lbnRzIHRvIGFycmF5IG9wdGlvbiAlc1xuIiwKKyAgICAgICAgICAg ICAgICAgICBhcnItPnNpemVfbWF4LCBvLT5uYW1lKTsKKyAgICAgICAgICAgIHJldCA9IEFWRVJS T1IoRUlOVkFMKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorCisgICAgICAg IGZvciAoOyAqdmFsOyB2YWwrKywgcCsrKSB7CisgICAgICAgICAgICBpZiAoKnZhbCA9PSAnXFwn ICYmIHZhbFsxXSkKKyAgICAgICAgICAgICAgICB2YWwrKzsKKyAgICAgICAgICAgIGVsc2UgaWYg KCp2YWwgPT0gc2VwKSB7CisgICAgICAgICAgICAgICAgdmFsKys7CisgICAgICAgICAgICAgICAg YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqcCA9ICp2YWw7CisgICAgICAgIH0K KyAgICAgICAgKnAgPSAwOworCisgICAgICAgIHRtcCA9IGF2X3JlYWxsb2NfYXJyYXkoZWxlbXMs IG5iX2VsZW1zICsgMSwgZWxlbV9zaXplKTsKKyAgICAgICAgaWYgKCF0bXApIHsKKyAgICAgICAg ICAgIHJldCA9IEFWRVJST1IoRU5PTUVNKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAg ICAgfQorICAgICAgICBlbGVtcyA9IHRtcDsKKworICAgICAgICB0bXAgPSBvcHRfYXJyYXlfcGVs ZW0obywgZWxlbXMsIG5iX2VsZW1zKTsKKyAgICAgICAgbWVtc2V0KHRtcCwgMCwgZWxlbV9zaXpl KTsKKworICAgICAgICByZXQgPSBvcHRfc2V0X2VsZW0ob2JqLCB0YXJnZXRfb2JqLCBvLCBzdHIs IHRtcCk7CisgICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAgZ290byBmYWlsOworICAg ICAgICBuYl9lbGVtcysrOworICAgIH0KKyAgICBhdl9mcmVlcCgmc3RyKTsKKworICAgIG9wdF9m cmVlX2FycmF5KG8sIGRzdCwgb3B0X2FycmF5X3Bjb3VudChkc3QpKTsKKworICAgIGlmIChhcnIg JiYgbmJfZWxlbXMgPCBhcnItPnNpemVfbWluKSB7CisgICAgICAgIGF2X2xvZyhvYmosIEFWX0xP R19FUlJPUiwKKyAgICAgICAgICAgICAgICJDYW5ub3QgYXNzaWduIGZld2VyIHRoYW4gJXUgZWxl bWVudHMgdG8gYXJyYXkgb3B0aW9uICVzXG4iLAorICAgICAgICAgICAgICAgYXJyLT5zaXplX21p biwgby0+bmFtZSk7CisgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKKyAgICAgICAgZ290 byBmYWlsOworICAgIH0KKworICAgICooKHZvaWQgKiopZHN0KSAgICAgICAgPSBlbGVtczsKKyAg ICAqb3B0X2FycmF5X3Bjb3VudChkc3QpID0gbmJfZWxlbXM7CisKKyAgICByZXR1cm4gMDsKK2Zh aWw6CisgICAgYXZfZnJlZXAoJnN0cik7CisgICAgb3B0X2ZyZWVfYXJyYXkobywgJmVsZW1zLCAm bmJfZWxlbXMpOworICAgIHJldHVybiByZXQ7Cit9CisKIGludCBhdl9vcHRfc2V0KHZvaWQgKm9i aiwgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsLCBpbnQgc2VhcmNoX2ZsYWdzKQog ewogICAgIHZvaWQgKmRzdCwgKnRhcmdldF9vYmo7CkBAIC02NTUsNyArNzg4LDggQEAgaW50IGF2 X29wdF9zZXQodm9pZCAqb2JqLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWwsIGlu dCBzZWFyY2hfZmxhZ3MpCiAKICAgICBkc3QgPSAoKHVpbnQ4X3QgKil0YXJnZXRfb2JqKSArIG8t Pm9mZnNldDsKIAotICAgIHJldHVybiBvcHRfc2V0X2VsZW0ob2JqLCB0YXJnZXRfb2JqLCBvLCB2 YWwsIGRzdCk7CisgICAgcmV0dXJuICgoby0+dHlwZSAmIEFWX09QVF9UWVBFX0ZMQUdfQVJSQVkp ID8KKyAgICAgICAgICAgIG9wdF9zZXRfYXJyYXkgOiBvcHRfc2V0X2VsZW0pKG9iaiwgdGFyZ2V0 X29iaiwgbywgdmFsLCBkc3QpOwogfQogCiAjZGVmaW5lIE9QVF9FVkFMX05VTUJFUihuYW1lLCBv cHR0eXBlLCB2YXJ0eXBlKSAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC02ODMsNyArODE3 LDcgQEAgc3RhdGljIGludCBzZXRfbnVtYmVyKHZvaWQgKm9iaiwgY29uc3QgY2hhciAqbmFtZSwg ZG91YmxlIG51bSwgaW50IGRlbiwgaW50NjRfdAogICAgIGlmICghbyB8fCAhdGFyZ2V0X29iaikK ICAgICAgICAgcmV0dXJuIEFWRVJST1JfT1BUSU9OX05PVF9GT1VORDsKIAotICAgIGlmIChvLT5m bGFncyAmIEFWX09QVF9GTEFHX1JFQURPTkxZKQorICAgIGlmICgoby0+ZmxhZ3MgJiBBVl9PUFRf RkxBR19SRUFET05MWSkgfHwgKG8tPnR5cGUgJiBBVl9PUFRfVFlQRV9GTEFHX0FSUkFZKSkKICAg ICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKIAogICAgIGRzdCA9ICgodWludDhfdCAqKXRh cmdldF9vYmopICsgby0+b2Zmc2V0OwpAQCAtNzY2LDcgKzkwMCw4IEBAIGludCBhdl9vcHRfc2V0 X3ZpZGVvX3JhdGUodm9pZCAqb2JqLCBjb25zdCBjaGFyICpuYW1lLCBBVlJhdGlvbmFsIHZhbCwg aW50IHNlYXJjCiAgICAgICAgIHJldHVybiBBVkVSUk9SX09QVElPTl9OT1RfRk9VTkQ7CiAgICAg aWYgKG8tPnR5cGUgIT0gQVZfT1BUX1RZUEVfVklERU9fUkFURSkgewogICAgICAgICBhdl9sb2co b2JqLCBBVl9MT0dfRVJST1IsCi0gICAgICAgICAgICAgICAiVGhlIHZhbHVlIHNldCBieSBvcHRp b24gJyVzJyBpcyBub3QgYSB2aWRlbyByYXRlLlxuIiwgby0+bmFtZSk7CisgICAgICAgICAgICAg ICAiVGhlIHZhbHVlIHNldCBieSBvcHRpb24gJyVzJyBpcyBub3QgYSB2aWRlbyByYXRlLlxuIiwK KyAgICAgICAgICAgICAgIG8tPm5hbWUpOwogICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwp OwogICAgIH0KICAgICBpZiAodmFsLm51bSA8PSAwIHx8IHZhbC5kZW4gPD0gMCkKQEAgLTkwOCw3 ICsxMDQzLDcgQEAgc3RhdGljIGludCBvcHRfZ2V0X2VsZW0oY29uc3QgQVZPcHRpb24gKm8sIHVp bnQ4X3QgKipwYnVmLCBzaXplX3QgYnVmX2xlbiwKIHsKICAgICBpbnQgcmV0OwogCi0gICAgc3dp dGNoIChvLT50eXBlKSB7CisgICAgc3dpdGNoIChUWVBFX0JBU0Uoby0+dHlwZSkpIHsKICAgICBj YXNlIEFWX09QVF9UWVBFX0JPT0w6CiAgICAgICAgIHJldCA9IHNucHJpbnRmKCpwYnVmLCBidWZf bGVuLCAiJXMiLCBnZXRfYm9vbF9uYW1lKCooaW50ICopZHN0KSk7CiAgICAgICAgIGJyZWFrOwpA QCAtMTAxNCw2ICsxMTQ5LDY2IEBAIEZGX0VOQUJMRV9ERVBSRUNBVElPTl9XQVJOSU5HUwogICAg IHJldHVybiByZXQ7CiB9CiAKK3N0YXRpYyBpbnQgb3B0X2dldF9hcnJheShjb25zdCBBVk9wdGlv biAqbywgdm9pZCAqZHN0LCB1aW50OF90ICoqb3V0X3ZhbCkKK3sKKyAgICBjb25zdCB1bnNpZ25l ZCBjb3VudCA9ICpvcHRfYXJyYXlfcGNvdW50KGRzdCk7CisgICAgY29uc3QgdWludDhfdCAgICBz ZXAgPSBvcHRfYXJyYXlfc2VwKG8pOworCisgICAgdWludDhfdCAqc3RyICAgICA9IE5VTEw7Cisg ICAgc2l6ZV90ICAgc3RyX2xlbiA9IDA7CisgICAgaW50IHJldDsKKworICAgICpvdXRfdmFsID0g TlVMTDsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAg ICAgIHVpbnQ4X3QgYnVmWzEyOF0sICpvdXQgPSBidWY7CisgICAgICAgIHNpemVfdCBvdXRfbGVu OworCisgICAgICAgIHJldCA9IG9wdF9nZXRfZWxlbShvLCAmb3V0LCBzaXplb2YoYnVmKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIG9wdF9hcnJheV9wZWxlbShvLCAqKHZvaWQgKiopZHN0 LCBpKSwgMCk7CisgICAgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgICAgZ290byBmYWlsOwor CisgICAgICAgIG91dF9sZW4gPSBzdHJsZW4ob3V0KTsKKyAgICAgICAgaWYgKG91dF9sZW4gPiBT SVpFX01BWCAvIDIgLSAhIWkgfHwKKyAgICAgICAgICAgICEhaSArIG91dF9sZW4gKiAyID4gU0la RV9NQVggLSBzdHJfbGVuIC0gMSkgeworICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFUkFOR0Up OworICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisKKyAgICAgICAgLy8gICAgICAg ICAgICAgICAgICAgICAgICAgdGVybWluYXRvciAgICAgZXNjYXBpbmcgIHNlcGFyYXRvcgorICAg ICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaTICAgICAgICAgICAgIOKG kyAgICAg4oaTCisgICAgICAgIHJldCA9IGF2X3JlYWxsb2NwKCZzdHIsIHN0cl9sZW4gKyAxICsg b3V0X2xlbiAqIDIgKyAhIWkpOworICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgICAgIGdv dG8gZmFpbDsKKworICAgICAgICAvLyBhZGQgc2VwYXJhdG9yIGlmIG5lZWRlZAorICAgICAgICBp ZiAoaSkKKyAgICAgICAgICAgIHN0cltzdHJfbGVuKytdID0gc2VwOworCisgICAgICAgIC8vIGVz Y2FwZSB0aGUgZWxlbWVudAorICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgb3V0X2xl bjsgaisrKSB7CisgICAgICAgICAgICB1aW50OF90IHZhbCA9IG91dFtqXTsKKyAgICAgICAgICAg IGlmICh2YWwgPT0gc2VwIHx8IHZhbCA9PSAnXFwnKQorICAgICAgICAgICAgICAgIHN0cltzdHJf bGVuKytdID0gJ1xcJzsKKyAgICAgICAgICAgIHN0cltzdHJfbGVuKytdID0gdmFsOworICAgICAg ICB9CisgICAgICAgIHN0cltzdHJfbGVuXSA9IDA7CisKK2ZhaWw6CisgICAgICAgIGlmIChvdXQg IT0gYnVmKQorICAgICAgICAgICAgYXZfZnJlZXAoJm91dCk7CisgICAgICAgIGlmIChyZXQgPCAw KSB7CisgICAgICAgICAgICBhdl9mcmVlcCgmc3RyKTsKKyAgICAgICAgICAgIHJldHVybiByZXQ7 CisgICAgICAgIH0KKyAgICB9CisKKyAgICAqb3V0X3ZhbCA9IHN0cjsKKworICAgIHJldHVybiAw OworfQorCiBpbnQgYXZfb3B0X2dldCh2b2lkICpvYmosIGNvbnN0IGNoYXIgKm5hbWUsIGludCBz ZWFyY2hfZmxhZ3MsIHVpbnQ4X3QgKipvdXRfdmFsKQogewogICAgIHZvaWQgKmRzdCwgKnRhcmdl dF9vYmo7CkBAIC0xMDI5LDggKzEyMjQsMTkgQEAgaW50IGF2X29wdF9nZXQodm9pZCAqb2JqLCBj b25zdCBjaGFyICpuYW1lLCBpbnQgc2VhcmNoX2ZsYWdzLCB1aW50OF90ICoqb3V0X3ZhbCkKIAog ICAgIGRzdCA9ICh1aW50OF90ICopdGFyZ2V0X29iaiArIG8tPm9mZnNldDsKIAotICAgIGJ1Zlsw XSA9IDA7CisgICAgaWYgKG8tPnR5cGUgJiBBVl9PUFRfVFlQRV9GTEFHX0FSUkFZKSB7CisgICAg ICAgIHJldCA9IG9wdF9nZXRfYXJyYXkobywgZHN0LCBvdXRfdmFsKTsKKyAgICAgICAgaWYgKHJl dCA8IDApCisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICBpZiAoISpvdXRfdmFsICYm ICEoc2VhcmNoX2ZsYWdzICYgQVZfT1BUX0FMTE9XX05VTEwpKSB7CisgICAgICAgICAgICAqb3V0 X3ZhbCA9IGF2X3N0cmR1cCgiIik7CisgICAgICAgICAgICBpZiAoISpvdXRfdmFsKQorICAgICAg ICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKKyAgICAgICAgfQorICAgICAgICByZXR1 cm4gMDsKKyAgICB9CiAKKyAgICBidWZbMF0gPSAwOwogICAgIG91dCA9IGJ1ZjsKICAgICByZXQg PSBvcHRfZ2V0X2VsZW0obywgJm91dCwgc2l6ZW9mKGJ1ZiksIGRzdCwgc2VhcmNoX2ZsYWdzKTsK ICAgICBpZiAocmV0IDwgMCkKQEAgLTEwNTMsNiArMTI1OSw4IEBAIHN0YXRpYyBpbnQgZ2V0X251 bWJlcih2b2lkICpvYmosIGNvbnN0IGNoYXIgKm5hbWUsIGRvdWJsZSAqbnVtLCBpbnQgKmRlbiwg aW50NjRfCiAgICAgY29uc3QgQVZPcHRpb24gKm8gPSBhdl9vcHRfZmluZDIob2JqLCBuYW1lLCBO VUxMLCAwLCBzZWFyY2hfZmxhZ3MsICZ0YXJnZXRfb2JqKTsKICAgICBpZiAoIW8gfHwgIXRhcmdl dF9vYmopCiAgICAgICAgIHJldHVybiBBVkVSUk9SX09QVElPTl9OT1RfRk9VTkQ7CisgICAgaWYg KG8tPnR5cGUgJiBBVl9PUFRfVFlQRV9GTEFHX0FSUkFZKQorICAgICAgICByZXR1cm4gQVZFUlJP UihFSU5WQUwpOwogCiAgICAgZHN0ID0gKCh1aW50OF90ICopdGFyZ2V0X29iaikgKyBvLT5vZmZz ZXQ7CiAKQEAgLTExMTAsNyArMTMxOCw3IEBAIGludCBhdl9vcHRfZ2V0X2ltYWdlX3NpemUodm9p ZCAqb2JqLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgc2VhcmNoX2ZsYWdzLCBpbnQgKndfCiAgICAg ICAgIHJldHVybiBBVkVSUk9SX09QVElPTl9OT1RfRk9VTkQ7CiAgICAgaWYgKG8tPnR5cGUgIT0g QVZfT1BUX1RZUEVfSU1BR0VfU0laRSkgewogICAgICAgICBhdl9sb2cob2JqLCBBVl9MT0dfRVJS T1IsCi0gICAgICAgICAgICAgICAiVGhlIHZhbHVlIGZvciBvcHRpb24gJyVzJyBpcyBub3QgYW4g aW1hZ2Ugc2l6ZS5cbiIsIG5hbWUpOworICAgICAgICAgICAgICAgIlRoZSB2YWx1ZSBmb3Igb3B0 aW9uICclcycgaXMgbm90IGEgaW1hZ2Ugc2l6ZS5cbiIsIG5hbWUpOwogICAgICAgICByZXR1cm4g QVZFUlJPUihFSU5WQUwpOwogICAgIH0KIApAQCAtMTE3NCw3ICsxMzgyLDcgQEAgaW50IGF2X29w dF9nZXRfY2hhbm5lbF9sYXlvdXQodm9pZCAqb2JqLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgc2Vh cmNoX2ZsYWdzLCBpbnQKICAgICAgICAgcmV0dXJuIEFWRVJST1JfT1BUSU9OX05PVF9GT1VORDsK ICAgICBpZiAoby0+dHlwZSAhPSBBVl9PUFRfVFlQRV9DSEFOTkVMX0xBWU9VVCkgewogICAgICAg ICBhdl9sb2cob2JqLCBBVl9MT0dfRVJST1IsCi0gICAgICAgICAgICAgICAiVGhlIHZhbHVlIGZv ciBvcHRpb24gJyVzJyBpcyBub3QgYSBjaGFubmVsIGxheW91dC5cbiIsIG5hbWUpOworICAgICAg ICAgICAgICAgIlRoZSB2YWx1ZSBmb3Igb3B0aW9uICclcycgaXMgbm90IGEgc2NhbGFyIGNoYW5u ZWwgbGF5b3V0LlxuIiwgbmFtZSk7CiAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CiAg ICAgfQogCkBAIC0xMzQxLDExICsxNTQ5LDE2IEBAIHN0YXRpYyB2b2lkIGxvZ190eXBlKHZvaWQg KmF2X2xvZ19vYmosIGNvbnN0IEFWT3B0aW9uICpvLAogICAgICAgICBbQVZfT1BUX1RZUEVfQ0hM QVlPVVRdICAgICAgPSAiPGNoYW5uZWxfbGF5b3V0PiIsCiAgICAgICAgIFtBVl9PUFRfVFlQRV9C T09MXSAgICAgICAgICA9ICI8Ym9vbGVhbj4iLAogICAgIH07CisgICAgY29uc3QgZW51bSBBVk9w dGlvblR5cGUgdHlwZSA9IFRZUEVfQkFTRShvLT50eXBlKTsKIAotICAgIGlmIChvLT50eXBlID09 IEFWX09QVF9UWVBFX0NPTlNUICYmIHBhcmVudF90eXBlID09IEFWX09QVF9UWVBFX0lOVCkKKyAg ICBpZiAoby0+dHlwZSA9PSBBVl9PUFRfVFlQRV9DT05TVCAmJiBUWVBFX0JBU0UocGFyZW50X3R5 cGUpID09IEFWX09QVF9UWVBFX0lOVCkKICAgICAgICAgYXZfbG9nKGF2X2xvZ19vYmosIEFWX0xP R19JTkZPLCAiJS0xMiJQUklkNjQiICIsIG8tPmRlZmF1bHRfdmFsLmk2NCk7Ci0gICAgZWxzZSBp ZiAoby0+dHlwZSA8IEZGX0FSUkFZX0VMRU1TKGRlc2MpICYmIGRlc2Nbby0+dHlwZV0pCi0gICAg ICAgIGF2X2xvZyhhdl9sb2dfb2JqLCBBVl9MT0dfSU5GTywgIiUtMTJzICIsIGRlc2Nbby0+dHlw ZV0pOworICAgIGVsc2UgaWYgKHR5cGUgPCBGRl9BUlJBWV9FTEVNUyhkZXNjKSAmJiBkZXNjW3R5 cGVdKSB7CisgICAgICAgIGlmIChvLT50eXBlICYgQVZfT1BUX1RZUEVfRkxBR19BUlJBWSkKKyAg ICAgICAgICAgIGF2X2xvZyhhdl9sb2dfb2JqLCBBVl9MT0dfSU5GTywgIlslLTEwc10iLCBkZXNj W3R5cGVdKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXZfbG9nKGF2X2xvZ19vYmosIEFW X0xPR19JTkZPLCAiJS0xMnMgIiwgZGVzY1t0eXBlXSk7CisgICAgfQogICAgIGVsc2UKICAgICAg ICAgYXZfbG9nKGF2X2xvZ19vYmosIEFWX0xPR19JTkZPLCAiJS0xMnMgIiwgIiIpOwogfQpAQCAt MTM2Myw2ICsxNTc2LDEzIEBAIHN0YXRpYyB2b2lkIGxvZ19kZWZhdWx0KHZvaWQgKm9iaiwgdm9p ZCAqYXZfbG9nX29iaiwgY29uc3QgQVZPcHRpb24gKm9wdCkKICAgICAgICAgIW9wdC0+ZGVmYXVs dF92YWwuc3RyKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAob3B0LT50eXBlICYgQVZfT1BU X1RZUEVfRkxBR19BUlJBWSkgeworICAgICAgICBjb25zdCBBVk9wdGlvbkFycmF5RGVmICphcnIg PSBvcHQtPmRlZmF1bHRfdmFsLmFycjsKKyAgICAgICAgaWYgKGFyciAmJiBhcnItPmRlZikKKyAg ICAgICAgICAgIGF2X2xvZyhhdl9sb2dfb2JqLCBBVl9MT0dfSU5GTywgIiAoZGVmYXVsdCAlcyki LCBhcnItPmRlZik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBhdl9sb2coYXZfbG9n X29iaiwgQVZfTE9HX0lORk8sICIgKGRlZmF1bHQgIik7CiAgICAgc3dpdGNoIChvcHQtPnR5cGUp IHsKICAgICBjYXNlIEFWX09QVF9UWVBFX0JPT0w6CkBAIC0xNTMwLDYgKzE3NTAsMjEgQEAgdm9p ZCBhdl9vcHRfc2V0X2RlZmF1bHRzMih2b2lkICpzLCBpbnQgbWFzaywgaW50IGZsYWdzKQogICAg ICAgICBpZiAob3B0LT5mbGFncyAmIEFWX09QVF9GTEFHX1JFQURPTkxZKQogICAgICAgICAgICAg Y29udGludWU7CiAKKyAgICAgICAgaWYgKG9wdC0+dHlwZSAmIEFWX09QVF9UWVBFX0ZMQUdfQVJS QVkpIHsKKyAgICAgICAgICAgIGNvbnN0IEFWT3B0aW9uQXJyYXlEZWYgKmFyciA9IG9wdC0+ZGVm YXVsdF92YWwuYXJyOworICAgICAgICAgICAgY29uc3QgY2hhciAgICAgICAgICAgICAgc2VwID0g b3B0X2FycmF5X3NlcChvcHQpOworCisgICAgICAgICAgICBhdl9hc3NlcnQwKHNlcCAmJiBzZXAg IT0gJ1xcJyAmJgorICAgICAgICAgICAgICAgICAgICAgICAoc2VwIDwgJ2EnIHx8IHNlcCA+ICd6 JykgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgKHNlcCA8ICdBJyB8fCBzZXAgPiAnWicpICYm CisgICAgICAgICAgICAgICAgICAgICAgIChzZXAgPCAnMCcgfHwgc2VwID4gJzknKSk7CisKKyAg ICAgICAgICAgIGlmIChhcnIgJiYgYXJyLT5kZWYpCisgICAgICAgICAgICAgICAgb3B0X3NldF9h cnJheShzLCBzLCBvcHQsIGFyci0+ZGVmLCBkc3QpOworCisgICAgICAgICAgICBjb250aW51ZTsK KyAgICAgICAgfQorCiAgICAgICAgIHN3aXRjaCAob3B0LT50eXBlKSB7CiAgICAgICAgICAgICBj YXNlIEFWX09QVF9UWVBFX0NPTlNUOgogICAgICAgICAgICAgICAgIC8qIE5vdGhpbmcgdG8gYmUg ZG9uZSBoZXJlICovCkBAIC0xNzc3LDIzICsyMDEyLDEyIEBAIHZvaWQgYXZfb3B0X2ZyZWUodm9p ZCAqb2JqKQogewogICAgIGNvbnN0IEFWT3B0aW9uICpvID0gTlVMTDsKICAgICB3aGlsZSAoKG8g PSBhdl9vcHRfbmV4dChvYmosIG8pKSkgewotICAgICAgICBzd2l0Y2ggKG8tPnR5cGUpIHsKLSAg ICAgICAgY2FzZSBBVl9PUFRfVFlQRV9TVFJJTkc6Ci0gICAgICAgIGNhc2UgQVZfT1BUX1RZUEVf QklOQVJZOgotICAgICAgICAgICAgYXZfZnJlZXAoKHVpbnQ4X3QgKilvYmogKyBvLT5vZmZzZXQp OwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHZvaWQgKnBpdGVtID0gKHVpbnQ4X3QgKilv YmogKyBvLT5vZmZzZXQ7CiAKLSAgICAgICAgY2FzZSBBVl9PUFRfVFlQRV9ESUNUOgotICAgICAg ICAgICAgYXZfZGljdF9mcmVlKChBVkRpY3Rpb25hcnkgKiopKCgodWludDhfdCAqKW9iaikgKyBv LT5vZmZzZXQpKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQVZfT1BUX1RZ UEVfQ0hMQVlPVVQ6Ci0gICAgICAgICAgICBhdl9jaGFubmVsX2xheW91dF91bmluaXQoKEFWQ2hh bm5lbExheW91dCAqKSgoKHVpbnQ4X3QgKilvYmopICsgby0+b2Zmc2V0KSk7Ci0gICAgICAgICAg ICBicmVhazsKLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg IH0KKyAgICAgICAgaWYgKG8tPnR5cGUgJiBBVl9PUFRfVFlQRV9GTEFHX0FSUkFZKQorICAgICAg ICAgICAgb3B0X2ZyZWVfYXJyYXkobywgcGl0ZW0sIG9wdF9hcnJheV9wY291bnQocGl0ZW0pKTsK KyAgICAgICAgZWxzZQorICAgICAgICAgICAgb3B0X2ZyZWVfZWxlbShvLCBwaXRlbSk7CiAgICAg fQogfQogCkBAIC0xODk1LDcgKzIxMTksOSBAQCBjb25zdCBBVkNsYXNzICphdl9vcHRfY2hpbGRf Y2xhc3NfaXRlcmF0ZShjb25zdCBBVkNsYXNzICpwYXJlbnQsIHZvaWQgKippdGVyKQogdm9pZCAq YXZfb3B0X3B0cihjb25zdCBBVkNsYXNzICpjbGFzcywgdm9pZCAqb2JqLCBjb25zdCBjaGFyICpu YW1lKQogewogICAgIGNvbnN0IEFWT3B0aW9uICpvcHQ9IGF2X29wdF9maW5kMigmY2xhc3MsIG5h bWUsIE5VTEwsIDAsIEFWX09QVF9TRUFSQ0hfRkFLRV9PQkosIE5VTEwpOwotICAgIGlmKCFvcHQp CisKKyAgICAvLyBubyBkaXJlY3QgYWNjZXNzIHRvIGFycmF5LXR5cGUgb3B0aW9ucworICAgIGlm ICghb3B0IHx8IChvcHQtPnR5cGUgJiBBVl9PUFRfVFlQRV9GTEFHX0FSUkFZKSkKICAgICAgICAg cmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuICh1aW50OF90KilvYmogKyBvcHQtPm9mZnNldDsKIH0K QEAgLTE5NDUsNiArMjE3MSw0MCBAQCBzdGF0aWMgaW50IG9wdF9jb3B5X2VsZW0odm9pZCAqbG9n Y3R4LCBlbnVtIEFWT3B0aW9uVHlwZSB0eXBlLAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMg aW50IG9wdF9jb3B5X2FycmF5KHZvaWQgKmxvZ2N0eCwgY29uc3QgQVZPcHRpb24gKm8sCisgICAg ICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipwZHN0LCBjb25zdCB2b2lkICogY29uc3QgKnBz cmMpCit7CisgICAgdW5zaWduZWQgbmJfZWxlbXMgPSAqb3B0X2FycmF5X3Bjb3VudChwc3JjKTsK KyAgICB2b2lkICAgICAgICAgKmRzdCA9IE5VTEw7CisgICAgaW50IHJldDsKKworICAgIGlmICgq cGRzdCA9PSAqcHNyYykgeworICAgICAgICAqcGRzdCAgICAgICAgICAgICAgICAgICA9IE5VTEw7 CisgICAgICAgICpvcHRfYXJyYXlfcGNvdW50KHBkc3QpID0gMDsKKyAgICB9CisKKyAgICBvcHRf ZnJlZV9hcnJheShvLCBwZHN0LCBvcHRfYXJyYXlfcGNvdW50KHBkc3QpKTsKKworICAgIGRzdCA9 IGF2X2NhbGxvYyhuYl9lbGVtcywgb3B0X2VsZW1fc2l6ZVtUWVBFX0JBU0Uoby0+dHlwZSldKTsK KyAgICBpZiAoIWRzdCkKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKKworICAgIGZv ciAodW5zaWduZWQgaSA9IDA7IGkgPCBuYl9lbGVtczsgaSsrKSB7CisgICAgICAgIHJldCA9IG9w dF9jb3B5X2VsZW0obG9nY3R4LCBUWVBFX0JBU0Uoby0+dHlwZSksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgb3B0X2FycmF5X3BlbGVtKG8sIGRzdCwgaSksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgb3B0X2FycmF5X3BlbGVtKG8sICoodm9pZCoqKXBzcmMsIGkpKTsKKyAgICAg ICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgICAgIG9wdF9mcmVlX2FycmF5KG8sICZkc3QsICZu Yl9lbGVtcyk7CisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9CisgICAgfQorCisg ICAgKnBkc3QgICAgICAgICAgICAgICAgICAgPSBkc3Q7CisgICAgKm9wdF9hcnJheV9wY291bnQo cGRzdCkgPSBuYl9lbGVtczsKKworICAgIHJldHVybiAwOworfQorCiBpbnQgYXZfb3B0X2NvcHko dm9pZCAqZHN0LCBjb25zdCB2b2lkICpzcmMpCiB7CiAgICAgY29uc3QgQVZPcHRpb24gKm8gPSBO VUxMOwpAQCAtMTk2Miw3ICsyMjIyLDkgQEAgaW50IGF2X29wdF9jb3B5KHZvaWQgKmRzdCwgY29u c3Qgdm9pZCAqc3JjKQogICAgICAgICB2b2lkICpmaWVsZF9kc3QgPSAodWludDhfdCAqKWRzdCAr IG8tPm9mZnNldDsKICAgICAgICAgdm9pZCAqZmllbGRfc3JjID0gKHVpbnQ4X3QgKilzcmMgKyBv LT5vZmZzZXQ7CiAKLSAgICAgICAgaW50IGVyciA9IG9wdF9jb3B5X2VsZW0oZHN0LCBvLT50eXBl LCBmaWVsZF9kc3QsIGZpZWxkX3NyYyk7CisgICAgICAgIGludCBlcnIgPSAoby0+dHlwZSAmIEFW X09QVF9UWVBFX0ZMQUdfQVJSQVkpICAgICAgICAgICAgICAgICA/CisgICAgICAgICAgICAgICAg ICBvcHRfY29weV9hcnJheShkc3QsIG8sICAgICAgIGZpZWxkX2RzdCwgZmllbGRfc3JjKSA6Cisg ICAgICAgICAgICAgICAgICBvcHRfY29weV9lbGVtIChkc3QsIG8tPnR5cGUsIGZpZWxkX2RzdCwg ZmllbGRfc3JjKTsKICAgICAgICAgaWYgKGVyciA8IDApCiAgICAgICAgICAgICByZXQgPSBlcnI7 CiAgICAgfQpAQCAtMjA5Niw2ICsyMzU4LDI0IEBAIGludCBhdl9vcHRfaXNfc2V0X3RvX2RlZmF1 bHQodm9pZCAqb2JqLCBjb25zdCBBVk9wdGlvbiAqbykKIAogICAgIGRzdCA9ICgodWludDhfdCop b2JqKSArIG8tPm9mZnNldDsKIAorICAgIGlmIChvLT50eXBlICYgQVZfT1BUX1RZUEVfRkxBR19B UlJBWSkgeworICAgICAgICBjb25zdCBjaGFyICpkZWYgPSBvLT5kZWZhdWx0X3ZhbC5hcnIgPyBv LT5kZWZhdWx0X3ZhbC5hcnItPmRlZiA6IE5VTEw7CisgICAgICAgIHVpbnQ4X3QgKnZhbDsKKwor ICAgICAgICByZXQgPSBvcHRfZ2V0X2FycmF5KG8sIGRzdCwgJnZhbCk7CisgICAgICAgIGlmIChy ZXQgPCAwKQorICAgICAgICAgICAgcmV0dXJuIHJldDsKKworICAgICAgICBpZiAoISF2YWwgIT0g ISFkZWYpCisgICAgICAgICAgICByZXQgPSAwOworICAgICAgICBlbHNlIGlmICh2YWwpCisgICAg ICAgICAgICByZXQgPSAhc3RyY21wKHZhbCwgZGVmKTsKKworICAgICAgICBhdl9mcmVlcCgmdmFs KTsKKworICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKwogICAgIHN3aXRjaCAoby0+dHlwZSkg ewogICAgIGNhc2UgQVZfT1BUX1RZUEVfQ09OU1Q6CiAgICAgICAgIHJldHVybiAxOwpkaWZmIC0t Z2l0IGEvbGliYXZ1dGlsL29wdC5oIGIvbGliYXZ1dGlsL29wdC5oCmluZGV4IGU0MDJmNmEwYTAu Ljc3Nzk3YjNmYmUgMTAwNjQ0Ci0tLSBhL2xpYmF2dXRpbC9vcHQuaAorKysgYi9saWJhdnV0aWwv b3B0LmgKQEAgLTI1Myw2ICsyNTMsMTcgQEAgZW51bSBBVk9wdGlvblR5cGV7CiAjZW5kaWYKICAg ICBBVl9PUFRfVFlQRV9CT09MLAogICAgIEFWX09QVF9UWVBFX0NITEFZT1VULAorCisgICAgLyoq CisgICAgICogTWF5IGJlIGNvbWJpbmVkIHdpdGggYW5vdGhlciByZWd1bGFyIG9wdGlvbiB0eXBl IHRvIGRlY2xhcmUgYW4gYXJyYXkKKyAgICAgKiBvcHRpb24uCisgICAgICoKKyAgICAgKiBGb3Ig YXJyYXkgb3B0aW9ucywgQHJlZiBBVk9wdGlvbi5vZmZzZXQgc2hvdWxkIHJlZmVyIHRvIGEgcG9p bnRlcgorICAgICAqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG9wdGlvbiB0eXBlLiBUaGUgcG9pbnRl ciBzaG91bGQgYmUgaW1tZWRpYXRlbHkKKyAgICAgKiBmb2xsb3dlZCBieSBhbiB1bnNpZ25lZCBp bnQgdGhhdCB3aWxsIHN0b3JlIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlCisgICAgICog YXJyYXkuCisgICAgICovCisgICAgQVZfT1BUX1RZUEVfRkxBR19BUlJBWSA9ICgxIDw8IDE2KSwK IH07CiAKIC8qKgpAQCAtMjk4LDYgKzMwOSw0NiBAQCBlbnVtIEFWT3B0aW9uVHlwZXsKICAqLwog I2RlZmluZSBBVl9PUFRfRkxBR19DSElMRF9DT05TVFMgICAgKDEgPDwgMTgpCiAKKy8qKgorICog TXVzdCBiZSBzZXQgYXMgZGVmYXVsdF92YWwgZm9yIEFWX09QVF9UWVBFX0ZMQUdfQVJSQVkgb3B0 aW9ucy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgQVZPcHRpb25BcnJheURlZiB7CisgICAgLyoqCisg ICAgICogTXVzdCBiZSBzZXQgdG8gc2l6ZW9mKEFWT3B0aW9uQXJyYXlEZWYpLCBpbiBvcmRlciB0 byBhbGxvdyBleHRlbmRpbmcgdGhpcworICAgICAqIHN0cnVjdCB3aXRob3V0IGJyZWFraW5nIEFC SS4KKyAgICAgKi8KKyAgICBzaXplX3QgICAgICAgICAgICAgIHNpemVvZl9zZWxmOworCisgICAg LyoqCisgICAgICogTmF0aXZlIGFjY2VzcyBvbmx5LgorICAgICAqCisgICAgICogRGVmYXVsdCB2 YWx1ZSBvZiB0aGUgb3B0aW9uLCBhcyB3b3VsZCBiZSBzZXJpYWxpemVkIGJ5IGF2X29wdF9nZXQo KSAoaS5lLgorICAgICAqIHVzaW5nIHRoZSB2YWx1ZSBvZiBzZXAgYXMgdGhlIHNlcGFyYXRvciku CisgICAgICovCisgICAgY29uc3QgY2hhciAgICAgICAgICpkZWY7CisKKyAgICAvKioKKyAgICAg KiBNaW5pbXVtIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgYXJyYXkuIFdoZW4gdGhpcyBmaWVs ZCBpcyBub24temVybywgZGVmCisgICAgICogbXVzdCBiZSBub24tTlVMTCBhbmQgY29udGFpbiBh dCBsZWFzdCB0aGlzIG51bWJlciBvZiBlbGVtZW50cy4KKyAgICAgKi8KKyAgICB1bnNpZ25lZCAg ICAgICAgICAgIHNpemVfbWluOworICAgIC8qKgorICAgICAqIE1heGltdW0gbnVtYmVyIG9mIGVs ZW1lbnRzIGluIHRoZSBhcnJheSwgMCB3aGVuIHVubGltaXRlZC4KKyAgICAgKi8KKyAgICB1bnNp Z25lZCAgICAgICAgICAgIHNpemVfbWF4OworCisgICAgLyoqCisgICAgICogU2VwYXJhdG9yIGJl dHdlZW4gYXJyYXkgZWxlbWVudHMgaW4gc3RyaW5nIHJlcHJlc2VudGF0aW9ucyBvZiB0aGlzCisg ICAgICogb3B0aW9uLCB1c2VkIGJ5IGF2X29wdF9zZXQoKSBhbmQgYXZfb3B0X2dldCgpLiBJdCBt dXN0IGJlIGEgcHJpbnRhYmxlCisgICAgICogQVNDSUkgY2hhcmFjdGVyLCBleGNsdWRpbmcgYWxw aGFudW1lcmljIGFuZCB0aGUgYmFja3NsYXNoLiBBIGNvbW1hIGlzCisgICAgICogdXNlZCB3aGVu IHNlcD0wLgorICAgICAqCisgICAgICogVGhlIHNlcGFyYXRvciBhbmQgdGhlIGJhY2tzbGFzaCBt dXN0IGJlIGJhY2tzbGFzaC1lc2NhcGVkIGluIG9yZGVyIHRvCisgICAgICogYXBwZWFyIGluIHN0 cmluZyByZXByZXNlbnRhdGlvbnMgb2YgdGhlIG9wdGlvbiB2YWx1ZS4KKyAgICAgKi8KKyAgICB1 aW50OF90ICAgICAgICAgICAgIHNlcDsKK30gQVZPcHRpb25BcnJheURlZjsKKwogLyoqCiAgKiBB Vk9wdGlvbgogICovCkBAIC0zMjAsOCArMzcxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQVZPcHRpb24g ewogICAgIGVudW0gQVZPcHRpb25UeXBlIHR5cGU7CiAKICAgICAvKioKLSAgICAgKiBOYXRpdmUg YWNjZXNzIG9ubHkuCi0gICAgICoKKyAgICAgKiBOYXRpdmUgYWNjZXNzIG9ubHksIGV4Y2VwdCB3 aGVuIGRvY3VtZW50ZWQgb3RoZXJ3aXNlLgogICAgICAqIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBz Y2FsYXIgb3B0aW9ucwogICAgICAqLwogICAgIHVuaW9uIHsKQEAgLTMzMCw2ICszODAsMTQgQEAg dHlwZWRlZiBzdHJ1Y3QgQVZPcHRpb24gewogICAgICAgICBjb25zdCBjaGFyICpzdHI7CiAgICAg ICAgIC8qIFRPRE8gdGhvc2UgYXJlIHVudXNlZCBub3cgKi8KICAgICAgICAgQVZSYXRpb25hbCBx OworCisgICAgICAgIC8qKgorICAgICAgICAgKiBVc2VkIGZvciBBVl9PUFRfVFlQRV9GTEFHX0FS UkFZIG9wdGlvbnMuIE1heSBiZSBOVUxMLgorICAgICAgICAgKgorICAgICAgICAgKiBGb3JlaWdu IGFjY2VzcyB0byBzb21lIG1lbWJlcnMgYWxsb3dlZCwgYXMgbm90ZWQgaW4gQVZPcHRpb25BcnJh eURlZgorICAgICAgICAgKiBkb2N1bWVudGF0aW9uLgorICAgICAgICAgKi8KKyAgICAgICAgY29u c3QgQVZPcHRpb25BcnJheURlZiAqYXJyOwogICAgIH0gZGVmYXVsdF92YWw7CiAgICAgZG91Ymxl IG1pbjsgICAgICAgICAgICAgICAgIC8vLzwgbWluaW11bSB2YWxpZCB2YWx1ZSBmb3IgdGhlIG9w dGlvbgogICAgIGRvdWJsZSBtYXg7ICAgICAgICAgICAgICAgICAvLy88IG1heGltdW0gdmFsaWQg dmFsdWUgZm9yIHRoZSBvcHRpb24KZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC90ZXN0cy9vcHQuYyBi L2xpYmF2dXRpbC90ZXN0cy9vcHQuYwppbmRleCBlMjU4MmNjOTNkLi4zNzQzNzMyMGNmIDEwMDY0 NAotLS0gYS9saWJhdnV0aWwvdGVzdHMvb3B0LmMKKysrIGIvbGliYXZ1dGlsL3Rlc3RzL29wdC5j CkBAIC01Nyw2ICs1NywxNSBAQCB0eXBlZGVmIHN0cnVjdCBUZXN0Q29udGV4dCB7CiAgICAgaW50 IGJvb2wzOwogICAgIEFWRGljdGlvbmFyeSAqZGljdDE7CiAgICAgQVZEaWN0aW9uYXJ5ICpkaWN0 MjsKKworICAgIGludCAgICAgICAgICAgKiphcnJheV9pbnQ7CisgICAgdW5zaWduZWQgICAgIG5i X2FycmF5X2ludDsKKworICAgIGNoYXIgICAgICAgICAgKiphcnJheV9zdHI7CisgICAgdW5zaWdu ZWQgICAgIG5iX2FycmF5X3N0cjsKKworICAgIEFWRGljdGlvbmFyeSAgKiphcnJheV9kaWN0Owor ICAgIHVuc2lnbmVkICAgICBuYl9hcnJheV9kaWN0OwogfSBUZXN0Q29udGV4dDsKIAogI2RlZmlu ZSBPRkZTRVQoeCkgb2Zmc2V0b2YoVGVzdENvbnRleHQsIHgpCkBAIC02NSw2ICs3NCwxNyBAQCB0 eXBlZGVmIHN0cnVjdCBUZXN0Q29udGV4dCB7CiAjZGVmaW5lIFRFU1RfRkxBR19MQU1FIDAyCiAj ZGVmaW5lIFRFU1RfRkxBR19NVSAgIDA0CiAKK3N0YXRpYyBjb25zdCBBVk9wdGlvbkFycmF5RGVm IGFycmF5X3N0ciA9IHsKKyAgICAuc2l6ZW9mX3NlbGYgPSBzaXplb2YoQVZPcHRpb25BcnJheURl ZiksCisgICAgLnNlcCAgICAgICAgID0gJ3wnLAorICAgIC5kZWYgICAgICAgICA9ICJzdHIwfHN0 clxcfDF8c3RyXFxcXDIiLAorfTsKKworc3RhdGljIGNvbnN0IEFWT3B0aW9uQXJyYXlEZWYgYXJy YXlfZGljdCA9IHsKKyAgICAuc2l6ZW9mX3NlbGYgPSBzaXplb2YoQVZPcHRpb25BcnJheURlZiks CisgICAgLmRlZiAgICAgICAgID0gImswMD12XFxcXFxcXFwwMDprMDE9dlxcLDAxLGsxMD12XFxc XD0xXFxcXDowIiwKK307CisKIHN0YXRpYyBjb25zdCBBVk9wdGlvbiB0ZXN0X29wdGlvbnNbXT0g ewogICAgIHsibnVtIiwgICAgICAgICJzZXQgbnVtIiwgICAgICAgICAgICBPRkZTRVQobnVtKSwg ICAgICAgICAgICBBVl9PUFRfVFlQRV9JTlQsICAgICAgICAgICAgeyAuaTY0ID0gMCB9LCAgICAg ICAgICAgICAgICAgICAgICAwLCAgICAgICAxMDAsIDEgfSwKICAgICB7InRvZ2dsZSIsICAgICAi c2V0IHRvZ2dsZSIsICAgICAgICAgT0ZGU0VUKHRvZ2dsZSksICAgICAgICAgQVZfT1BUX1RZUEVf SU5ULCAgICAgICAgICAgIHsgLmk2NCA9IDEgfSwgICAgICAgICAgICAgICAgICAgICAgMCwgICAg ICAgICAxLCAxIH0sCkBAIC05Myw2ICsxMTMsMTAgQEAgc3RhdGljIGNvbnN0IEFWT3B0aW9uIHRl c3Rfb3B0aW9uc1tdPSB7CiAgICAgeyJib29sMyIsICAgICAgInNldCBib29sZWFuIHZhbHVlIiwg IE9GRlNFVChib29sMyksICAgICAgICAgIEFWX09QVF9UWVBFX0JPT0wsICAgICAgICAgICB7IC5p NjQgPSAwIH0sICAgICAgICAgICAgICAgICAgICAgIDAsICAgICAgICAgMSwgMSB9LAogICAgIHsi ZGljdDEiLCAgICAgICJzZXQgZGljdGlvbmFyeSB2YWx1ZSIsIE9GRlNFVChkaWN0MSksICAgICAg ICBBVl9PUFRfVFlQRV9ESUNULCAgICAgICAgICAgeyAuc3RyID0gTlVMTH0sICAgICAgICAgICAg ICAgICAgICAwLCAgICAgICAgIDAsIDEgfSwKICAgICB7ImRpY3QyIiwgICAgICAic2V0IGRpY3Rp b25hcnkgdmFsdWUiLCBPRkZTRVQoZGljdDIpLCAgICAgICAgQVZfT1BUX1RZUEVfRElDVCwgICAg ICAgICAgIHsgLnN0ciA9ICJoYXBweT0nOi0pJyJ9LCAgICAgICAgICAgMCwgICAgICAgICAwLCAx IH0sCisgICAgeyJhcnJheV9pbnQiLCAgImFycmF5IG9mIGludHMiLCAgICAgICAgT0ZGU0VUKGFy cmF5X2ludCksICAgIEFWX09QVF9UWVBFX0lOVCB8IEFWX09QVF9UWVBFX0ZMQUdfQVJSQVksIC5t YXggPSBJTlRfTUFYLCAgICAgICAgICAgLmZsYWdzID0gQVZfT1BUX0ZMQUdfUlVOVElNRV9QQVJB TSB9LAorICAgIHsiYXJyYXlfc3RyIiwgICJhcnJheSBvZiBzdHJpbmdzIiwgICAgIE9GRlNFVChh cnJheV9zdHIpLCAgICBBVl9PUFRfVFlQRV9TVFJJTkcgfCBBVl9PUFRfVFlQRV9GTEFHX0FSUkFZ LCB7IC5hcnIgPSAmYXJyYXlfc3RyIH0sIC5mbGFncyA9IEFWX09QVF9GTEFHX1JVTlRJTUVfUEFS QU0gfSwKKyAgICAvLyB0aGVyZSBhcmUgdGhyZWUgbGV2ZWxzIG9mIGVzY2FwaW5nIC0gQyBzdHJp bmcsIGFycmF5IG9wdGlvbiwgZGljdCAtIHNvIDggYmFja3NsYXNoZXMgYXJlIG5lZWRlZCB0byBn ZXQgYSBsaXRlcmFsIG9uZSBpbnNpZGUgYSBkaWN0IGtleS92YWwKKyAgICB7ImFycmF5X2RpY3Qi LCAiYXJyYXkgb2YgZGljdHMiLCAgICAgICBPRkZTRVQoYXJyYXlfZGljdCksICAgQVZfT1BUX1RZ UEVfRElDVCB8IEFWX09QVF9UWVBFX0ZMQUdfQVJSQVksIHsgLmFyciA9ICZhcnJheV9kaWN0IH0s ICAuZmxhZ3MgPSBBVl9PUFRfRkxBR19SVU5USU1FX1BBUkFNIH0sCiAgICAgeyBOVUxMIH0sCiB9 OwogCkBAIC0xNDYsNiArMTcwLDE3IEBAIGludCBtYWluKHZvaWQpCiAgICAgICAgIHByaW50Zigi Zmx0PSUuNmZcbiIsIHRlc3RfY3R4LmZsdCk7CiAgICAgICAgIHByaW50ZigiZGJsPSUuNmZcbiIs IHRlc3RfY3R4LmRibCk7CiAKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRlc3Rf Y3R4Lm5iX2FycmF5X3N0cjsgaSsrKQorICAgICAgICAgICAgcHJpbnRmKCJhcnJheV9zdHJbJXVd PSVzXG4iLCBpLCB0ZXN0X2N0eC5hcnJheV9zdHJbaV0pOworCisgICAgICAgIGZvciAodW5zaWdu ZWQgaSA9IDA7IGkgPCB0ZXN0X2N0eC5uYl9hcnJheV9kaWN0OyBpKyspIHsKKyAgICAgICAgICAg IEFWRGljdGlvbmFyeSAgICAgICAgICAgICpkID0gdGVzdF9jdHguYXJyYXlfZGljdFtpXTsKKyAg ICAgICAgICAgIGNvbnN0IEFWRGljdGlvbmFyeUVudHJ5ICplID0gTlVMTDsKKworICAgICAgICAg ICAgd2hpbGUgKChlID0gYXZfZGljdF9pdGVyYXRlKGQsIGUpKSkKKyAgICAgICAgICAgICAgICBw cmludGYoImFycmF5X2RpY3RbJXVdOiAlc1x0JXNcbiIsIGksIGUtPmtleSwgZS0+dmFsdWUpOwor ICAgICAgICB9CisKICAgICAgICAgYXZfb3B0X3Nob3cyKCZ0ZXN0X2N0eCwgTlVMTCwgLTEsIDAp OwogCiAgICAgICAgIGF2X29wdF9mcmVlKCZ0ZXN0X2N0eCk7CkBAIC0xNzcsNiArMjEyLDkgQEAg aW50IG1haW4odm9pZCkKICAgICAgICAgVGVzdENvbnRleHQgdGVzdF9jdHggPSB7IDAgfTsKICAg ICAgICAgVGVzdENvbnRleHQgdGVzdDJfY3R4ID0geyAwIH07CiAgICAgICAgIGNvbnN0IEFWT3B0 aW9uICpvID0gTlVMTDsKKyAgICAgICAgY2hhciAqdmFsID0gTlVMTDsKKyAgICAgICAgaW50IHJl dDsKKwogICAgICAgICB0ZXN0X2N0eC5jbGFzcyA9ICZ0ZXN0X2NsYXNzOwogICAgICAgICB0ZXN0 Ml9jdHguY2xhc3MgPSAmdGVzdF9jbGFzczsKIApAQCAtMjA5LDYgKzI0NywxNyBAQCBpbnQgbWFp bih2b2lkKQogICAgICAgICAgICAgYXZfZnJlZSh2YWx1ZTEpOwogICAgICAgICAgICAgYXZfZnJl ZSh2YWx1ZTIpOwogICAgICAgICB9CisKKyAgICAgICAgLy8gYXZfb3B0X3NldChOVUxMKSB3aXRo IGFuIGFycmF5IG9wdGlvbiByZXNldHMgaXQKKyAgICAgICAgcmV0ID0gYXZfb3B0X3NldCgmdGVz dF9jdHgsICJhcnJheV9kaWN0IiwgTlVMTCwgMCk7CisgICAgICAgIHByaW50ZigiYXZfb3B0X3Nl dChcImFycmF5X2RpY3RcIiwgTlVMTCkgLT4gJWRcbiIsIHJldCk7CisgICAgICAgIHByaW50Zigi YXJyYXlfZGljdD0lc05VTEw7IG5iX2FycmF5X2RpY3Q9JXVcbiIsCisgICAgICAgICAgICAgICB0 ZXN0X2N0eC5hcnJheV9kaWN0ID8gIm5vbi0iIDogIiIsIHRlc3RfY3R4Lm5iX2FycmF5X2RpY3Qp OworCisgICAgICAgIC8vIGF2X29wdF9nZXQoKSBvbiBhbiBlbXB0eSBhcnJheSBzaG91bGQgcmV0 dXJuIGEgTlVMTCBzdHJpbmcKKyAgICAgICAgcmV0ID0gYXZfb3B0X2dldCgmdGVzdF9jdHgsICJh cnJheV9kaWN0IiwgQVZfT1BUX0FMTE9XX05VTEwsICh1aW50OF90KiopJnZhbCk7CisgICAgICAg IHByaW50ZigiYXZfb3B0X2dldChcImFycmF5X2RpY3RcIikgLT4gJXNcbiIsIHZhbCA/IHZhbCA6 ICJOVUxMIik7CisKICAgICAgICAgYXZfb3B0X2ZyZWUoJnRlc3RfY3R4KTsKICAgICAgICAgYXZf b3B0X2ZyZWUoJnRlc3QyX2N0eCk7CiAgICAgfQpAQCAtMzAzLDYgKzM1Miw4IEBAIGludCBtYWlu KHZvaWQpCiAgICAgICAgICAgICAiYm9vbDE9dHJ1ZSIsCiAgICAgICAgICAgICAiYm9vbDI9YXV0 byIsCiAgICAgICAgICAgICAiZGljdDE9J2hhcHB5PVxcOi0pOnNhZD1cXDotKCciLAorICAgICAg ICAgICAgImFycmF5X2ludD0wLDMyLDIxNDc0ODM2NDciLAorICAgICAgICAgICAgImFycmF5X2lu dD0yMTQ3NDgzNjQ4IiwgLy8gb3V0IG9mIHJhbmdlLCBzaG91bGQgZmFpbAogICAgICAgICB9Owog CiAgICAgICAgIHRlc3RfY3R4LmNsYXNzID0gJnRlc3RfY2xhc3M7CmRpZmYgLS1naXQgYS90ZXN0 cy9yZWYvZmF0ZS9vcHQgYi90ZXN0cy9yZWYvZmF0ZS9vcHQKaW5kZXggODMyZjljYzhhOS4uZjRm Y2UxYmQ0OSAxMDA2NDQKLS0tIGEvdGVzdHMvcmVmL2ZhdGUvb3B0CisrKyBiL3Rlc3RzL3JlZi9m YXRlL29wdApAQCAtMTcsNiArMTcsMTIgQEAgYmluYXJ5X3NpemU9NAogbnVtNjQ9MQogZmx0PTAu MzMzMzMzCiBkYmw9MC4zMzMzMzMKK2FycmF5X3N0clswXT1zdHIwCithcnJheV9zdHJbMV09c3Ry fDEKK2FycmF5X3N0clsyXT1zdHJcMgorYXJyYXlfZGljdFswXTogazAwCXZcMDAKK2FycmF5X2Rp Y3RbMF06IGswMQl2LDAxCithcnJheV9kaWN0WzFdOiBrMTAJdj0xOjAKIFRlc3RDb250ZXh0IEFW T3B0aW9uczoKICAgLW51bSAgICAgICAgICAgICAgIDxpbnQ+ICAgICAgICBFLi4uLi4uLi4uLiBz ZXQgbnVtIChmcm9tIDAgdG8gMTAwKSAoZGVmYXVsdCAwKQogICAtdG9nZ2xlICAgICAgICAgICAg PGludD4gICAgICAgIEUuLi4uLi4uLi4uIHNldCB0b2dnbGUgKGZyb20gMCB0byAxKSAoZGVmYXVs dCAxKQpAQCAtNDUsNiArNTEsOSBAQCBUZXN0Q29udGV4dCBBVk9wdGlvbnM6CiAgIC1ib29sMyAg ICAgICAgICAgICA8Ym9vbGVhbj4gICAgRS4uLi4uLi4uLi4gc2V0IGJvb2xlYW4gdmFsdWUgKGRl ZmF1bHQgZmFsc2UpCiAgIC1kaWN0MSAgICAgICAgICAgICA8ZGljdGlvbmFyeT4gRS4uLi4uLi4u Li4gc2V0IGRpY3Rpb25hcnkgdmFsdWUKICAgLWRpY3QyICAgICAgICAgICAgIDxkaWN0aW9uYXJ5 PiBFLi4uLi4uLi4uLiBzZXQgZGljdGlvbmFyeSB2YWx1ZSAoZGVmYXVsdCAiaGFwcHk9JzotKSci KQorICAtYXJyYXlfaW50ICAgICAgICAgWzxpbnQ+ICAgICBdLi4uLi4uLi4uVC4gYXJyYXkgb2Yg aW50cworICAtYXJyYXlfc3RyICAgICAgICAgWzxzdHJpbmc+ICBdLi4uLi4uLi4uVC4gYXJyYXkg b2Ygc3RyaW5ncyAoZGVmYXVsdCBzdHIwfHN0clx8MXxzdHJcXDIpCisgIC1hcnJheV9kaWN0ICAg ICAgICBbPGRpY3Rpb25hcnk+XS4uLi4uLi4uLlQuIGFycmF5IG9mIGRpY3RzIChkZWZhdWx0IGsw MD12XFxcXDAwOmswMT12XCwwMSxrMTA9dlxcPTFcXDowKQogCiBUZXN0aW5nIGF2X29wdF9pc19z ZXRfdG9fZGVmYXVsdCgpCiBuYW1lOiAgICAgICBudW0gZGVmYXVsdDoxIGVycm9yOgpAQCAtNzQs NiArODMsOSBAQCBuYW1lOiAgICAgYm9vbDIgZGVmYXVsdDowIGVycm9yOgogbmFtZTogICAgIGJv b2wzIGRlZmF1bHQ6MSBlcnJvcjoKIG5hbWU6ICAgICBkaWN0MSBkZWZhdWx0OjEgZXJyb3I6CiBu YW1lOiAgICAgZGljdDIgZGVmYXVsdDowIGVycm9yOgorbmFtZTogYXJyYXlfaW50IGRlZmF1bHQ6 MCBlcnJvcjoKK25hbWU6IGFycmF5X3N0ciBkZWZhdWx0OjAgZXJyb3I6CituYW1lOmFycmF5X2Rp Y3QgZGVmYXVsdDowIGVycm9yOgogbmFtZTogICAgICAgbnVtIGRlZmF1bHQ6MSBlcnJvcjoKIG5h bWU6ICAgIHRvZ2dsZSBkZWZhdWx0OjEgZXJyb3I6CiBuYW1lOiAgcmF0aW9uYWwgZGVmYXVsdDox IGVycm9yOgpAQCAtMTAxLDYgKzExMyw5IEBAIG5hbWU6ICAgICBib29sMiBkZWZhdWx0OjEgZXJy b3I6CiBuYW1lOiAgICAgYm9vbDMgZGVmYXVsdDoxIGVycm9yOgogbmFtZTogICAgIGRpY3QxIGRl ZmF1bHQ6MSBlcnJvcjoKIG5hbWU6ICAgICBkaWN0MiBkZWZhdWx0OjEgZXJyb3I6CituYW1lOiBh cnJheV9pbnQgZGVmYXVsdDowIGVycm9yOgorbmFtZTogYXJyYXlfc3RyIGRlZmF1bHQ6MSBlcnJv cjoKK25hbWU6YXJyYXlfZGljdCBkZWZhdWx0OjEgZXJyb3I6CiAKIFRlc3RpbmcgYXZfb3B0X2dl dC9hdl9vcHRfc2V0KCkKIG5hbWU6IG51bSAgICAgICAgIGdldDogMCAgICAgICAgICAgICAgICBz ZXQ6IE9LICAgICAgICAgICAgICAgZ2V0OiAwICAgICAgICAgICAgICAgIE9LCkBAIC0xMjcsOSAr MTQyLDE1IEBAIG5hbWU6IGJvb2wyICAgICAgIGdldDogdHJ1ZSAgICAgICAgICAgICBzZXQ6IE9L ICAgICAgICAgICAgICAgZ2V0OiB0cnVlCiBuYW1lOiBib29sMyAgICAgICBnZXQ6IGZhbHNlICAg ICAgICAgICAgc2V0OiBPSyAgICAgICAgICAgICAgIGdldDogZmFsc2UgICAgICAgICAgICBPSwog bmFtZTogZGljdDEgICAgICAgZ2V0OiAgICAgICAgICAgICAgICAgIHNldDogT0sgICAgICAgICAg ICAgICBnZXQ6ICAgICAgICAgICAgICAgICAgT0sKIG5hbWU6IGRpY3QyICAgICAgIGdldDogaGFw cHk9XDotKSAgICAgICBzZXQ6IE9LICAgICAgICAgICAgICAgZ2V0OiBoYXBweT1cOi0pICAgICAg IE9LCituYW1lOiBhcnJheV9pbnQgICBnZXQ6ICAgICAgICAgICAgICAgICAgc2V0OiBPSyAgICAg ICAgICAgICAgIGdldDogICAgICAgICAgICAgICAgICBPSworbmFtZTogYXJyYXlfc3RyICAgZ2V0 OiBzdHIwfHN0clx8MXxzdHJcXDIgc2V0OiBPSyAgICAgICAgICAgICAgIGdldDogc3RyMHxzdHJc fDF8c3RyXFwyIE9LCituYW1lOiBhcnJheV9kaWN0ICBnZXQ6IGswMD12XFxcXDAwOmswMT12XCww MSxrMTA9dlxcPTFcXDowIHNldDogT0sgICAgICAgICAgICAgICBnZXQ6IGswMD12XFxcXDAwOmsw MT12XCwwMSxrMTA9dlxcPTFcXDowIE9LCithdl9vcHRfc2V0KCJhcnJheV9kaWN0IiwgTlVMTCkg LT4gMAorYXJyYXlfZGljdD1OVUxMOyBuYl9hcnJheV9kaWN0PTAKK2F2X29wdF9nZXQoImFycmF5 X2RpY3QiKSAtPiBOVUxMCiAKIFRlc3QgYXZfb3B0X3NlcmlhbGl6ZSgpCi1udW09MCx0b2dnbGU9 MSxyYXRpb25hbD0xLzEsc3RyaW5nPWRlZmF1bHQsZXNjYXBlPVxcXD1cLCxmbGFncz0weDAwMDAw MDAxLHNpemU9MjAweDMwMCxwaXhfZm10PTBiZ3Isc2FtcGxlX2ZtdD1zMTYsdmlkZW9fcmF0ZT0y NS8xLGR1cmF0aW9uPTAuMDAxLGNvbG9yPTB4ZmZjMGNiZmYsY2w9aGV4YWdvbmFsLGJpbj02MjY5 NkUwMCxiaW4xPSxiaW4yPSxudW02ND0xLGZsdD0wLjMzMzMzMyxkYmw9MC4zMzMzMzMsYm9vbDE9 YXV0byxib29sMj10cnVlLGJvb2wzPWZhbHNlLGRpY3QxPSxkaWN0Mj1oYXBweVw9XFw6LSkKK251 bT0wLHRvZ2dsZT0xLHJhdGlvbmFsPTEvMSxzdHJpbmc9ZGVmYXVsdCxlc2NhcGU9XFxcPVwsLGZs YWdzPTB4MDAwMDAwMDEsc2l6ZT0yMDB4MzAwLHBpeF9mbXQ9MGJncixzYW1wbGVfZm10PXMxNix2 aWRlb19yYXRlPTI1LzEsZHVyYXRpb249MC4wMDEsY29sb3I9MHhmZmMwY2JmZixjbD1oZXhhZ29u YWwsYmluPTYyNjk2RTAwLGJpbjE9LGJpbjI9LG51bTY0PTEsZmx0PTAuMzMzMzMzLGRibD0wLjMz MzMzMyxib29sMT1hdXRvLGJvb2wyPXRydWUsYm9vbDM9ZmFsc2UsZGljdDE9LGRpY3QyPWhhcHB5 XD1cXDotKSxhcnJheV9pbnQ9LGFycmF5X3N0cj1zdHIwfHN0clxcfDF8c3RyXFxcXDIsYXJyYXlf ZGljdD1rMDBcPXZcXFxcXFxcXDAwOmswMVw9dlxcXCwwMVwsazEwXD12XFxcXFw9MVxcXFw6MAog U2V0dGluZyBlbnRyeSB3aXRoIGtleSAnbnVtJyB0byB2YWx1ZSAnMCcKIFNldHRpbmcgZW50cnkg d2l0aCBrZXkgJ3RvZ2dsZScgdG8gdmFsdWUgJzEnCiBTZXR0aW5nIGVudHJ5IHdpdGgga2V5ICdy YXRpb25hbCcgdG8gdmFsdWUgJzEvMScKQEAgLTE1NCw3ICsxNzUsMTAgQEAgU2V0dGluZyBlbnRy eSB3aXRoIGtleSAnYm9vbDInIHRvIHZhbHVlICd0cnVlJwogU2V0dGluZyBlbnRyeSB3aXRoIGtl eSAnYm9vbDMnIHRvIHZhbHVlICdmYWxzZScKIFNldHRpbmcgZW50cnkgd2l0aCBrZXkgJ2RpY3Qx JyB0byB2YWx1ZSAnJwogU2V0dGluZyBlbnRyeSB3aXRoIGtleSAnZGljdDInIHRvIHZhbHVlICdo YXBweT1cOi0pJwotbnVtPTAsdG9nZ2xlPTEscmF0aW9uYWw9MS8xLHN0cmluZz1kZWZhdWx0LGVz Y2FwZT1cXFw9XCwsZmxhZ3M9MHgwMDAwMDAwMSxzaXplPTIwMHgzMDAscGl4X2ZtdD0wYmdyLHNh bXBsZV9mbXQ9czE2LHZpZGVvX3JhdGU9MjUvMSxkdXJhdGlvbj0wLjAwMSxjb2xvcj0weGZmYzBj YmZmLGNsPWhleGFnb25hbCxiaW49NjI2OTZFMDAsYmluMT0sYmluMj0sbnVtNjQ9MSxmbHQ9MC4z MzMzMzMsZGJsPTAuMzMzMzMzLGJvb2wxPWF1dG8sYm9vbDI9dHJ1ZSxib29sMz1mYWxzZSxkaWN0 MT0sZGljdDI9aGFwcHlcPVxcOi0pCitTZXR0aW5nIGVudHJ5IHdpdGgga2V5ICdhcnJheV9pbnQn IHRvIHZhbHVlICcnCitTZXR0aW5nIGVudHJ5IHdpdGgga2V5ICdhcnJheV9zdHInIHRvIHZhbHVl ICdzdHIwfHN0clx8MXxzdHJcXDInCitTZXR0aW5nIGVudHJ5IHdpdGgga2V5ICdhcnJheV9kaWN0 JyB0byB2YWx1ZSAnazAwPXZcXFxcMDA6azAxPXZcLDAxLGsxMD12XFw9MVxcOjAnCitudW09MCx0 b2dnbGU9MSxyYXRpb25hbD0xLzEsc3RyaW5nPWRlZmF1bHQsZXNjYXBlPVxcXD1cLCxmbGFncz0w eDAwMDAwMDAxLHNpemU9MjAweDMwMCxwaXhfZm10PTBiZ3Isc2FtcGxlX2ZtdD1zMTYsdmlkZW9f cmF0ZT0yNS8xLGR1cmF0aW9uPTAuMDAxLGNvbG9yPTB4ZmZjMGNiZmYsY2w9aGV4YWdvbmFsLGJp bj02MjY5NkUwMCxiaW4xPSxiaW4yPSxudW02ND0xLGZsdD0wLjMzMzMzMyxkYmw9MC4zMzMzMzMs Ym9vbDE9YXV0byxib29sMj10cnVlLGJvb2wzPWZhbHNlLGRpY3QxPSxkaWN0Mj1oYXBweVw9XFw6 LSksYXJyYXlfaW50PSxhcnJheV9zdHI9c3RyMHxzdHJcXHwxfHN0clxcXFwyLGFycmF5X2RpY3Q9 azAwXD12XFxcXFxcXFwwMDprMDFcPXZcXFwsMDFcLGsxMFw9dlxcXFxcPTFcXFxcOjAKIAogVGVz dGluZyBhdl9zZXRfb3B0aW9uc19zdHJpbmcoKQogU2V0dGluZyBvcHRpb25zIHN0cmluZyAnJwpA QCAtMzc4LDYgKzQwMiwxMyBAQCBPSyAgICAnYm9vbDI9YXV0bycKIFNldHRpbmcgb3B0aW9ucyBz dHJpbmcgJ2RpY3QxPSdoYXBweT1cOi0pOnNhZD1cOi0oJycKIFNldHRpbmcgZW50cnkgd2l0aCBr ZXkgJ2RpY3QxJyB0byB2YWx1ZSAnaGFwcHk9XDotKTpzYWQ9XDotKCcKIE9LICAgICdkaWN0MT0n aGFwcHk9XDotKTpzYWQ9XDotKCcnCitTZXR0aW5nIG9wdGlvbnMgc3RyaW5nICdhcnJheV9pbnQ9 MCwzMiwyMTQ3NDgzNjQ3JworU2V0dGluZyBlbnRyeSB3aXRoIGtleSAnYXJyYXlfaW50JyB0byB2 YWx1ZSAnMCwzMiwyMTQ3NDgzNjQ3JworT0sgICAgJ2FycmF5X2ludD0wLDMyLDIxNDc0ODM2NDcn CitTZXR0aW5nIG9wdGlvbnMgc3RyaW5nICdhcnJheV9pbnQ9MjE0NzQ4MzY0OCcKK1NldHRpbmcg ZW50cnkgd2l0aCBrZXkgJ2FycmF5X2ludCcgdG8gdmFsdWUgJzIxNDc0ODM2NDgnCitWYWx1ZSAy MTQ3NDgzNjQ4LjAwMDAwMCBmb3IgcGFyYW1ldGVyICdhcnJheV9pbnQnIG91dCBvZiByYW5nZSBb MCAtIDIuMTQ3NDhlKzA5XQorRXJyb3IgJ2FycmF5X2ludD0yMTQ3NDgzNjQ4JwogCiBUZXN0aW5n IGF2X29wdF9zZXRfZnJvbV9zdHJpbmcoKQogU2V0dGluZyBvcHRpb25zIHN0cmluZyAnJwotLSAK Mi40My4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpm Zm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8v ZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUs IHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5v cmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==