Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qVkfs-0016uj-1g for pgsql-hackers@arkaria.postgresql.org; Tue, 15 Aug 2023 03:24:52 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1qVkfq-009sIv-P5 for pgsql-hackers@arkaria.postgresql.org; Tue, 15 Aug 2023 03:24:50 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qVkfq-009sIn-2a for pgsql-hackers@lists.postgresql.org; Tue, 15 Aug 2023 03:24:50 +0000 Received: from mail-oa1-x2f.google.com ([2001:4860:4864:20::2f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qVkfn-000BpC-OO for pgsql-hackers@postgresql.org; Tue, 15 Aug 2023 03:24:49 +0000 Received: by mail-oa1-x2f.google.com with SMTP id 586e51a60fabf-1c10bb168faso2332826fac.3 for ; Mon, 14 Aug 2023 20:24:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1692069887; x=1692674687; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Hnm77u9gq/07JMF6iznA+yuH8hCQkBYES7LvuxmrV9Q=; b=UgnS1fKBov0ZBAtwopezd4chA8EknODHGo5Mmh0yWLhtNBy7FBXaPiC6Y3Mck4Oepb u+6PakzlPuMv7e40jS5fq43O3AM1zB9IMsh/aMXbbnOnFA6l8UVMUV4+MnLXlIZq5VPr KkhPR/6iSUoY7Hw7DwNwLZWGQPt3q6Ba4CfJWdA352MUt1Z9BCdzQmedxo2rteUwCPUL nsIG4krxCtIY+IoJbAcXUyT10rcnSABWuAt5doc4eXaMPWpcP8CuT9enH0gpxAceHViR q49S3/1/yrpNpg3hghj4Y9ybFwrMxz2U8RhBvpCmBd6iXq6LmzVrVyNwKbn0+hHVa7ls hFHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692069887; x=1692674687; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Hnm77u9gq/07JMF6iznA+yuH8hCQkBYES7LvuxmrV9Q=; b=Za3PJZUYJ0b7Wp9aO2hVFumkqOik0FfOv4FCw1ylGegHaGcpksX7DJgky4Rxn0eA7N 62UEU7KZ0Sk02QoIF0mxuGrnpfE/OdST4pIhIDPeFwuJznkZF5dr1j2si9tfBkPmYcmk 0ZHp3JnkpRUON8RQaBcbuR01nKf2d/azXZEq2r0BmnuSUFoZuvkpf9Pin5GH6KQ8jEiv 3PMLbDZxGVxEvUkM7kROs6MpPLzinsdrP/yoyGTG0FRZE3+VUJj1i5NCBMEte1B+3se3 oH3U/EBEfnjEySlbRZtDBA/Upq1bpLHq495jbLd0EtxQSWftaH3ejBpMrH9Tf9vBs/3X Mx2w== X-Gm-Message-State: AOJu0Yx9BwOCIyig9TSgdqTNLxjGLIEPCL2EihDRz8fy/prKjnVZq2b6 vTcVkVeODhwyeiUToGJCUQJkKlG6ARBNL/Ua1r2jMfFIJvop7g== X-Google-Smtp-Source: AGHT+IH/vLVe7orCSUxew8+XwHrmulldwmoF8BO1mM92G2bjStuTLEGfzNjiInQlyasGs0IGm2QM4LW0B7L0xyh4xZE= X-Received: by 2002:a05:6870:65a0:b0:1b7:4521:31f with SMTP id fp32-20020a05687065a000b001b74521031fmr11888356oab.18.1692069886975; Mon, 14 Aug 2023 20:24:46 -0700 (PDT) MIME-Version: 1.0 References: <3507485.1691090027@sss.pgh.pa.us> <900892914fdc3f477b101d699efb40e0@anastigmatix.net> <903341.1692022214@sss.pgh.pa.us> In-Reply-To: From: Andy Fan Date: Tue, 15 Aug 2023 11:24:35 +0800 Message-ID: Subject: Re: Extract numeric filed in JSONB more effectively To: Tom Lane Cc: Chapman Flack , Pavel Stehule , jian he , pgsql-hackers Content-Type: multipart/mixed; boundary="0000000000008c843e0602edb872" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000008c843e0602edb872 Content-Type: multipart/alternative; boundary="0000000000008c843d0602edb870" --0000000000008c843d0602edb870 Content-Type: text/plain; charset="UTF-8" > > > jsonb_extract_xx_type just cares about the argtype, but > 'explain select xx' will still access the const->constvalue. > const->constvalue is 0 which is set by makeNullConst currently, > and it is ok for the current supported type. > The exception is numeric data type, the constvalue can't be 0. so hack it with the below line. maybe not good enough, but I have no better solution now. + Const *target = makeNullConst(fexpr->funcresulttype, + -1, + InvalidOid); + /* + * Since all the above functions are strict, we can't input + * a NULL value. + */ + target->constisnull = false; + + Assert(target->constbyval || target->consttype == NUMERICOID); + + /* Mock a valid datum for !constbyval type. */ + if (fexpr->funcresulttype == NUMERICOID) + target->constvalue = DirectFunctionCall1(numeric_in, CStringGetDatum("0")); -- Best Regards Andy Fan --0000000000008c843d0602edb870 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPjxibG9ja3F1b3RlIGNsYXNz PSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowcHggMHB4IDBweCAwLjhleDtib3JkZXItbGVm dDoxcHggc29saWQgcmdiKDIwNCwyMDQsMjA0KTtwYWRkaW5nLWxlZnQ6MWV4Ij48ZGl2IGRpcj0i bHRyIj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+PGRpdj48YnI+PC9kaXY+PGRpdj7CoGpzb25i X2V4dHJhY3RfeHhfdHlwZSBqdXN0IGNhcmVzIGFib3V0IHRoZSBhcmd0eXBlLCBidXTCoDwvZGl2 PjxkaXY+JiMzOTtleHBsYWluIHNlbGVjdCB4eCYjMzk7wqAgd2lsbCBzdGlsbCBhY2Nlc3MgdGhl IGNvbnN0LSZndDtjb25zdHZhbHVlLjwvZGl2PjxkaXY+Y29uc3QtJmd0O2NvbnN0dmFsdWUgaXMg MCB3aGljaCBpcyBzZXQgYnkgbWFrZU51bGxDb25zdCBjdXJyZW50bHkswqA8L2Rpdj48ZGl2PmFu ZCBpdCBpcyBvayBmb3IgdGhlIGN1cnJlbnQgc3VwcG9ydGVkIHR5cGUuwqA8L2Rpdj48L2Rpdj48 L2Rpdj4NCjwvYmxvY2txdW90ZT48L2Rpdj48ZGl2Pjxicj48L2Rpdj5UaGUgZXhjZXB0aW9uIGlz IG51bWVyaWMgZGF0YSB0eXBlLCB0aGUgY29uc3R2YWx1ZSBjYW4mIzM5O3QgYmUgMC7CoDxkaXY+ c28gaGFjayBpdCB3aXRoIHRoZSBiZWxvdyBsaW5lLsKgIG1heWJlIG5vdCBnb29kIGVub3VnaCzC oCBidXQgSTwvZGl2PjxkaXY+aGF2ZSBubyBiZXR0ZXIgc29sdXRpb27CoG5vdy7CoDwvZGl2Pjxk aXY+PGJyPjwvZGl2PisgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgQ29uc3QgwqAg KnRhcmdldCA9IMKgbWFrZU51bGxDb25zdChmZXhwci0mZ3Q7ZnVuY3Jlc3VsdHR5cGUsPGJyPisg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAtMSw8YnI+KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEludmFsaWRPaWQpOzxi cj4rIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC8qPGJyPisgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAqIFNpbmNlIGFsbCB0aGUgYWJvdmUgZnVuY3Rpb25zIGFy ZSBzdHJpY3QsIHdlIGNhbiYjMzk7dCBpbnB1dDxicj4rIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgKiBhIE5VTEwgdmFsdWUuPGJyPisgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAqLzxicj4rIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRhcmdl dC0mZ3Q7Y29uc3Rpc251bGwgPSBmYWxzZTs8YnI+KyDCoCDCoCDCoDxicj4rIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIEFzc2VydCh0YXJnZXQtJmd0O2NvbnN0Ynl2YWwgfHwgdGFy Z2V0LSZndDtjb25zdHR5cGUgPT0gTlVNRVJJQ09JRCk7PGJyPisgwqAgwqAgwqAgwqAgwqAgwqAg wqA8YnI+KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAvKiBNb2NrIGEgdmFsaWQg ZGF0dW0gZm9yICFjb25zdGJ5dmFsIHR5cGUuICovPGJyPisgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgaWYgKGZleHByLSZndDtmdW5jcmVzdWx0dHlwZSA9PSBOVU1FUklDT0lEKTxi cj4rIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRhcmdldC0m Z3Q7Y29uc3R2YWx1ZSA9IERpcmVjdEZ1bmN0aW9uQ2FsbDEobnVtZXJpY19pbiwgQ1N0cmluZ0dl dERhdHVtKCZxdW90OzAmcXVvdDspKTs8ZGl2Pjxicj48L2Rpdj48ZGl2PjxkaXY+PGRpdj48c3Bh biBjbGFzcz0iZ21haWxfc2lnbmF0dXJlX3ByZWZpeCI+LS0gPC9zcGFuPjxicj48ZGl2IGRpcj0i bHRyIiBjbGFzcz0iZ21haWxfc2lnbmF0dXJlIj48ZGl2IGRpcj0ibHRyIj5CZXN0IFJlZ2FyZHM8 ZGl2PkFuZHkgRmFuPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+DQo= --0000000000008c843d0602edb870-- --0000000000008c843e0602edb872 Content-Type: application/octet-stream; name="v7-0001-optimize-casting-jsonb-to-a-given-type.patch" Content-Disposition: attachment; filename="v7-0001-optimize-casting-jsonb-to-a-given-type.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_llbqo1m10 RnJvbSBjY2IwZTRiMmJlMDFkZmNlZDliNzRkNzJkYThlNzQ1YjgyM2Y1YjQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmR5IEZhbiA8emhpaHVpLmZhbjEyMTNAZ21haWwuY29tPgpE YXRlOiBUaHUsIDEwIEF1ZyAyMDIzIDE1OjE1OjI1ICswODAwClN1YmplY3Q6IFtQQVRDSCB2N10g b3B0aW1pemUgY2FzdGluZyBqc29uYiB0byBhIGdpdmVuIHR5cGUuCgpQcmV2aW91c2x5IGFmdGVy IHdlIGdldCBhIEpzb25iVmFsdWUsIHdlIG5lZWQgdG8gY29udmVydCBpdCB0bwpKc29uYiBmaXJz dCB0aGVuIGNhc3QgdGhlIEpzb25iIHRvIHRoZSBnaXZlbiB0eXBlLiBJbiB0aGlzIHBhdGNoLAp3 ZSBjb3ZlcnQgdGhlIEpzb25iVmFsdWUgdG8gdGhlIGRlc2lyZWQgdHlwZSBkaXJlY3RseS4KLS0t CiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmIuYyAgICAgICB8IDE5MCArKysrKysrKysrKysr KysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMgICB8IDEx NCArKysrKysrKysrKy0tLS0tLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmggICAg fCAgIDIgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgIHwgIDMyICsrKyst CiBzcmMvaW5jbHVkZS91dGlscy9qc29uYi5oICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dCB8IDE2MCArKysrKysrKysrKysrLS0tLS0tLS0tLQog c3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3FsICAgICAgfCAgNDMgKysrKy0tLQogNyBmaWxl cyBjaGFuZ2VkLCA0MTEgaW5zZXJ0aW9ucygrKSwgMTMxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29uYi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2pzb25iLmMKaW5kZXggOTc4MTg1MmIwY2IuLjRkNDI3ZTUwYTk4IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvanNvbmIuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNv bmIuYwpAQCAtMTcsMTEgKzE3LDE0IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgorI2luY2x1 ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgorI2luY2x1ZGUgIm5vZGVzL3N1cHBvcnRub2Rlcy5oIgog I2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5j bHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXRlLmgiCiAjaW5jbHVk ZSAidXRpbHMvZGF0ZXRpbWUuaCIKKyNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgogI2luY2x1 ZGUgInV0aWxzL2pzb24uaCIKICNpbmNsdWRlICJ1dGlscy9qc29uYi5oIgogI2luY2x1ZGUgInV0 aWxzL2pzb25mdW5jcy5oIgpAQCAtMjAzOCw2ICsyMDQxLDE5MyBAQCBjYW5ub3RDYXN0SnNvbmJW YWx1ZShlbnVtIGpidlR5cGUgdHlwZSwgY29uc3QgY2hhciAqc3FsdHlwZSkKIAllbG9nKEVSUk9S LCAidW5rbm93biBqc29uYiB0eXBlOiAlZCIsIChpbnQpIHR5cGUpOwogfQogCitzdGF0aWMgYm9v bAoranNvbmJfY2FzdF9pc19vcHRpbWl6ZWQoT2lkIHRhcmdldF90eXBlKQoreworCXN3aXRjaCh0 YXJnZXRfdHlwZSkKKwl7CisJCWNhc2UgTlVNRVJJQ09JRDoKKwkJY2FzZSBCT09MT0lEOgorCQlj YXNlIElOVDJPSUQ6CisJCWNhc2UgSU5UNE9JRDoKKwkJY2FzZSBJTlQ4T0lEOgorCQljYXNlIEZM T0FUNE9JRDoKKwkJY2FzZSBGTE9BVDhPSUQ6CisJCQlyZXR1cm4gdHJ1ZTsKKwkJZGVmYXVsdDoK KwkJCXJldHVybiBmYWxzZTsKKwl9Cit9CisKK0RhdHVtCitqc29uYl9jYXN0X3N1cHBvcnQoUEdf RlVOQ1RJT05fQVJHUykKK3sKKwlOb2RlCSAgICpyYXdyZXEgPSAoTm9kZSAqKSBQR19HRVRBUkdf UE9JTlRFUigwKTsKKworCWlmIChJc0EocmF3cmVxLCBTdXBwb3J0UmVxdWVzdFNpbXBsaWZ5KSkK Kwl7CisJCVN1cHBvcnRSZXF1ZXN0U2ltcGxpZnkgKnJlcSA9IChTdXBwb3J0UmVxdWVzdFNpbXBs aWZ5ICopIHJhd3JlcTsKKwkJRnVuY0V4cHIJKmZleHByID0gcGFsbG9jKHNpemVvZihGdW5jRXhw cikpOworCQlPcEV4cHIJCSpvcGV4cHI7CisJCU9pZAkJCW5ld19mdW5jX2lkID0gSW52YWxpZE9p ZDsKKworCQltZW1jcHkoZmV4cHIsIHJlcS0+ZmNhbGwsIHNpemVvZihGdW5jRXhwcikpOworCisJ CW9wZXhwciA9IChPcEV4cHIgKikgbGluaXRpYWwoZmV4cHItPmFyZ3MpOworCisJCWlmICghSXNB KG9wZXhwciwgT3BFeHByKSB8fAorCQkJIWpzb25iX2Nhc3RfaXNfb3B0aW1pemVkKGZleHByLT5m dW5jcmVzdWx0dHlwZSkpCisJCXsKKwkJCS8qIG5vdCB0aGUgZGVzaXJlZCBwYXR0ZXJuLiAqLwor CQkJUEdfUkVUVVJOX1BPSU5URVIoZmV4cHIpOworCQl9CisKKwkJaWYgKG9wZXhwci0+b3BmdW5j aWQgID09IEZfSlNPTkJfT0JKRUNUX0ZJRUxEKQorCQkJbmV3X2Z1bmNfaWQgPSBGX0pTT05CX09C SkVDVF9GSUVMRF9UWVBFOworCQllbHNlIGlmIChvcGV4cHItPm9wZnVuY2lkID09IEZfSlNPTkJf QVJSQVlfRUxFTUVOVCkKKwkJCW5ld19mdW5jX2lkID0gRl9KU09OQl9BUlJBWV9FTEVNRU5UX1RZ UEU7CisJCWVsc2UgaWYgKG9wZXhwci0+b3BmdW5jaWQgPT0gRl9KU09OQl9FWFRSQUNUX1BBVEgp CisJCQluZXdfZnVuY19pZCA9IEZfSlNPTkJfRVhUUkFDVF9QQVRIX1RZUEU7CisKKwkJaWYgKE9p ZElzVmFsaWQobmV3X2Z1bmNfaWQpKQorCQl7CisJCQlDb25zdAkqdGFyZ2V0ID0gIG1ha2VOdWxs Q29uc3QoZmV4cHItPmZ1bmNyZXN1bHR0eXBlLAorCQkJCQkJCQkJCQkgLTEsCisJCQkJCQkJCQkJ CSBJbnZhbGlkT2lkKTsKKwkJCS8qCisJCQkgKiBTaW5jZSBhbGwgdGhlIGFib3ZlIGZ1bmN0aW9u cyBhcmUgc3RyaWN0LCB3ZSBjYW4ndCBpbnB1dAorCQkJICogYSBOVUxMIHZhbHVlLgorCQkJICov CisJCQl0YXJnZXQtPmNvbnN0aXNudWxsID0gZmFsc2U7CisKKwkJCUFzc2VydCh0YXJnZXQtPmNv bnN0Ynl2YWwgfHwgdGFyZ2V0LT5jb25zdHR5cGUgPT0gTlVNRVJJQ09JRCk7CisKKwkJCS8qIE1v Y2sgYSB2YWxpZCBkYXR1bSBmb3IgIWNvbnN0Ynl2YWwgdHlwZS4gKi8KKwkJCWlmIChmZXhwci0+ ZnVuY3Jlc3VsdHR5cGUgPT0gTlVNRVJJQ09JRCkKKwkJCQl0YXJnZXQtPmNvbnN0dmFsdWUgPSBE aXJlY3RGdW5jdGlvbkNhbGwxKG51bWVyaWNfaW4sIENTdHJpbmdHZXREYXR1bSgiMCIpKTsKKwor CQkJZmV4cHItPmZ1bmNpZCA9IG5ld19mdW5jX2lkOworCQkJZmV4cHItPmFyZ3MgPSBvcGV4cHIt PmFyZ3M7CisJCQlmZXhwci0+YXJncyA9IGxhcHBlbmQoZmV4cHItPmFyZ3MsIHRhcmdldCk7CisJ CX0KKworCQlQR19SRVRVUk5fUE9JTlRFUihmZXhwcik7CisJfQorCisJUEdfUkVUVVJOX1BPSU5U RVIoTlVMTCk7Cit9CisKK0RhdHVtCitjYXN0X2pzb25idmFsdWVfdG9fdHlwZShKc29uYlZhbHVl ICp2LCBPaWQgdGFyZ2V0T2lkKQoreworCXN3aXRjaCh0YXJnZXRPaWQpCisJeworCQlEYXR1bQly ZXRWYWx1ZTsKKworCQljYXNlIEJPT0xPSUQ6CisJCQlpZiAodi0+dHlwZSAhPSBqYnZCb29sKQor CQkJCWNhbm5vdENhc3RKc29uYlZhbHVlKHYtPnR5cGUsICJib29sIik7CisJCQlQR19SRVRVUk5f Qk9PTCh2LT52YWwuYm9vbGVhbik7CisKKwkJY2FzZSBOVU1FUklDT0lEOgorCQkJaWYgKHYtPnR5 cGUgIT0gamJ2TnVtZXJpYykKKwkJCQljYW5ub3RDYXN0SnNvbmJWYWx1ZSh2LT50eXBlLCAibnVt ZXJpYyIpOworCQkJUEdfUkVUVVJOX05VTUVSSUModi0+dmFsLm51bWVyaWMpOworCQljYXNlIElO VDJPSUQ6CisJCQlpZiAodi0+dHlwZSAhPSBqYnZOdW1lcmljKQorCQkJCWNhbm5vdENhc3RKc29u YlZhbHVlKHYtPnR5cGUsICJzbWFsbGludCIpOworCQkJcmV0VmFsdWUgPSBEaXJlY3RGdW5jdGlv bkNhbGwxKG51bWVyaWNfaW50MiwKKwkJCQkJCQkJCQkgICBOdW1lcmljR2V0RGF0dW0odi0+dmFs Lm51bWVyaWMpKTsKKwkJCVBHX1JFVFVSTl9EQVRVTShyZXRWYWx1ZSk7CisJCWNhc2UgSU5UNE9J RDoKKwkJCWlmICh2LT50eXBlICE9IGpidk51bWVyaWMpCisJCQkJY2Fubm90Q2FzdEpzb25iVmFs dWUodi0+dHlwZSwgImludGVnZXIiKTsKKwkJCXJldFZhbHVlID0gRGlyZWN0RnVuY3Rpb25DYWxs MShudW1lcmljX2ludDQsCisJCQkJCQkJCQkJICAgTnVtZXJpY0dldERhdHVtKHYtPnZhbC5udW1l cmljKSk7CisJCQlQR19SRVRVUk5fREFUVU0ocmV0VmFsdWUpOworCisJCWNhc2UgSU5UOE9JRDoK KwkJCWlmICh2LT50eXBlICE9IGpidk51bWVyaWMpCisJCQkJY2Fubm90Q2FzdEpzb25iVmFsdWUo di0+dHlwZSwgImJpZ2ludCIpOworCQkJcmV0VmFsdWUgPSBEaXJlY3RGdW5jdGlvbkNhbGwxKG51 bWVyaWNfaW50OCwKKwkJCQkJCQkJCQkgICBOdW1lcmljR2V0RGF0dW0odi0+dmFsLm51bWVyaWMp KTsKKwkJCVBHX1JFVFVSTl9EQVRVTShyZXRWYWx1ZSk7CisKKwkJY2FzZSBGTE9BVDRPSUQ6CisJ CQlpZiAodi0+dHlwZSAhPSBqYnZOdW1lcmljKQorCQkJCWNhbm5vdENhc3RKc29uYlZhbHVlKHYt PnR5cGUsICJyZWFsIik7CisJCQlyZXRWYWx1ZSA9IERpcmVjdEZ1bmN0aW9uQ2FsbDEobnVtZXJp Y19mbG9hdDQsCisJCQkJCQkJCQkJICAgTnVtZXJpY0dldERhdHVtKHYtPnZhbC5udW1lcmljKSk7 CisJCQlQR19SRVRVUk5fREFUVU0ocmV0VmFsdWUpOworCisJCWNhc2UgRkxPQVQ4T0lEOgorCQkJ aWYgKHYtPnR5cGUgIT0gamJ2TnVtZXJpYykKKwkJCQljYW5ub3RDYXN0SnNvbmJWYWx1ZSh2LT50 eXBlLCAiZG91YmxlIHByZWNpc2lvbiIpOworCQkJcmV0VmFsdWUgPSBEaXJlY3RGdW5jdGlvbkNh bGwxKG51bWVyaWNfZmxvYXQ4LAorCQkJCQkJCQkJCSAgIE51bWVyaWNHZXREYXR1bSh2LT52YWwu bnVtZXJpYykpOworCQkJUEdfUkVUVVJOX0RBVFVNKHJldFZhbHVlKTsKKworCQlkZWZhdWx0Ogor CQkJQXNzZXJ0KGZhbHNlKTsKKwkJCWJyZWFrOworCX0KKworCVBHX1JFVFVSTl9QT0lOVEVSKE5V TEwpOworfQorCitEYXR1bQoranNvbmJfb2JqZWN0X2ZpZWxkX3R5cGUoUEdfRlVOQ1RJT05fQVJH UykKK3sKKwlKc29uYgkgICAqamIgPSBQR19HRVRBUkdfSlNPTkJfUCgwKTsKKwl0ZXh0CSAgICpr ZXkgPSBQR19HRVRBUkdfVEVYVF9QUCgxKTsKKwlPaWQJCQl0YXJnZXRPaWQgPSBnZXRfZm5fZXhw cl9hcmd0eXBlKGZjaW5mby0+ZmxpbmZvLCAyKTsKKworCUpzb25iVmFsdWUgKnY7CisJSnNvbmJW YWx1ZQl2YnVmOworCisJaWYgKCFKQl9ST09UX0lTX09CSkVDVChqYikpCisJCVBHX1JFVFVSTl9O VUxMKCk7CisKKwl2ID0gZ2V0S2V5SnNvblZhbHVlRnJvbUNvbnRhaW5lcigmamItPnJvb3QsCisJ CQkJCQkJCQkgVkFSREFUQV9BTlkoa2V5KSwKKwkJCQkJCQkJCSBWQVJTSVpFX0FOWV9FWEhEUihr ZXkpLAorCQkJCQkJCQkJICZ2YnVmKTsKKworCWlmICh2ID09IE5VTEwpCisJCVBHX1JFVFVSTl9O VUxMKCk7CisKKwlyZXR1cm4gY2FzdF9qc29uYnZhbHVlX3RvX3R5cGUodiwgdGFyZ2V0T2lkKTsK K30KKworRGF0dW0KK2pzb25iX2FycmF5X2VsZW1lbnRfdHlwZShQR19GVU5DVElPTl9BUkdTKQor eworCUpzb25iCSAgICpqYiA9IFBHX0dFVEFSR19KU09OQl9QKDApOworCWludAkJCWVsZW1lbnQg PSBQR19HRVRBUkdfSU5UMzIoMSk7CisJT2lkCQkJdGFyZ2V0T2lkID0gZ2V0X2ZuX2V4cHJfYXJn dHlwZShmY2luZm8tPmZsaW5mbywgMik7CisJSnNvbmJWYWx1ZSAqdjsKKworCWlmICghSkJfUk9P VF9JU19BUlJBWShqYikpCisJCVBHX1JFVFVSTl9OVUxMKCk7CisKKwkvKiBIYW5kbGUgbmVnYXRp dmUgc3Vic2NyaXB0ICovCisJaWYgKGVsZW1lbnQgPCAwKQorCXsKKwkJdWludDMyCQluZWxlbWVu dHMgPSBKQl9ST09UX0NPVU5UKGpiKTsKKworCQlpZiAoLWVsZW1lbnQgPiBuZWxlbWVudHMpCisJ CQlQR19SRVRVUk5fTlVMTCgpOworCQllbHNlCisJCQllbGVtZW50ICs9IG5lbGVtZW50czsKKwl9 CisKKwl2ID0gZ2V0SXRoSnNvbmJWYWx1ZUZyb21Db250YWluZXIoJmpiLT5yb290LCBlbGVtZW50 KTsKKwlpZiAodiA9PSBOVUxMKQorCQlQR19SRVRVUk5fTlVMTCgpOworCisJcmV0dXJuIGNhc3Rf anNvbmJ2YWx1ZV90b190eXBlKHYsIHRhcmdldE9pZCk7Cit9CisKIERhdHVtCiBqc29uYl9ib29s KFBHX0ZVTkNUSU9OX0FSR1MpCiB7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv anNvbmZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvanNvbmZ1bmNzLmMKaW5kZXggYTRi ZmE1ZTQwNDAuLjY4OTVmODFmYWMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQv anNvbmZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25mdW5jcy5jCkBAIC00 OTIsNiArNDkyLDcgQEAgc3RhdGljIEpzb25QYXJzZUVycm9yVHlwZSB0cmFuc2Zvcm1fc3RyaW5n X3ZhbHVlc19vYmplY3RfZmllbGRfc3RhcnQodm9pZCAqc3RhdGUKIHN0YXRpYyBKc29uUGFyc2VF cnJvclR5cGUgdHJhbnNmb3JtX3N0cmluZ192YWx1ZXNfYXJyYXlfZWxlbWVudF9zdGFydCh2b2lk ICpzdGF0ZSwgYm9vbCBpc251bGwpOwogc3RhdGljIEpzb25QYXJzZUVycm9yVHlwZSB0cmFuc2Zv cm1fc3RyaW5nX3ZhbHVlc19zY2FsYXIodm9pZCAqc3RhdGUsIGNoYXIgKnRva2VuLCBKc29uVG9r ZW5UeXBlIHRva2VudHlwZSk7CiAKK3N0YXRpYyBKc29uYlZhbHVlICpqc29uYl9nZXRfanNvbmJ2 YWx1ZShKc29uYiAqamIsIERhdHVtICpwYXRoLCBpbnQgbnBhdGgsIGJvb2wgKmlzbnVsbCk7CiAK IC8qCiAgKiBwZ19wYXJzZV9qc29uX29yX2VycnNhdmUKQEAgLTE0NzMsNiArMTQ3NCwzOSBAQCBn ZXRfc2NhbGFyKHZvaWQgKnN0YXRlLCBjaGFyICp0b2tlbiwgSnNvblRva2VuVHlwZSB0b2tlbnR5 cGUpCiAJcmV0dXJuIEpTT05fU1VDQ0VTUzsKIH0KIAorRGF0dW0KK2pzb25iX2V4dHJhY3RfcGF0 aF90eXBlKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJSnNvbmIJICAgKmpiID0gUEdfR0VUQVJHX0pT T05CX1AoMCk7CisJQXJyYXlUeXBlICAqcGF0aCA9IFBHX0dFVEFSR19BUlJBWVRZUEVfUCgxKTsK KwlPaWQJCQl0YXJnZXRPaWQgPSBnZXRfZm5fZXhwcl9hcmd0eXBlKGZjaW5mby0+ZmxpbmZvLCAy KTsKKwlKc29uYlZhbHVlICp2OworCisJRGF0dW0JICAgKnBhdGh0ZXh0OworCWJvb2wJICAgKnBh dGhudWxsczsKKwlib29sCQlpc251bGwgPSBmYWxzZTsKKwlpbnQJCQlucGF0aDsKKworCS8qCisJ ICogSWYgdGhlIGFycmF5IGNvbnRhaW5zIGFueSBudWxsIGVsZW1lbnRzLCByZXR1cm4gTlVMTCwg b24gdGhlIGdyb3VuZHMKKwkgKiB0aGF0IHlvdSdkIGhhdmUgZ290dGVuIE5VTEwgaWYgYW55IFJI UyB2YWx1ZSB3ZXJlIE5VTEwgaW4gYSBuZXN0ZWQKKwkgKiBzZXJpZXMgb2YgYXBwbGljYXRpb25z IG9mIHRoZSAtPiBvcGVyYXRvci4gIChOb3RlOiBiZWNhdXNlIHdlIGFsc28KKwkgKiByZXR1cm4g TlVMTCBmb3IgZXJyb3IgY2FzZXMgc3VjaCBhcyBuby1zdWNoLWZpZWxkLCB0aGlzIGlzIHRydWUK KwkgKiByZWdhcmRsZXNzIG9mIHRoZSBjb250ZW50cyBvZiB0aGUgcmVzdCBvZiB0aGUgYXJyYXku KQorCSAqLworCWlmIChhcnJheV9jb250YWluc19udWxscyhwYXRoKSkKKwkJUEdfUkVUVVJOX05V TEwoKTsKKworCWRlY29uc3RydWN0X2FycmF5X2J1aWx0aW4ocGF0aCwgVEVYVE9JRCwgJnBhdGh0 ZXh0LCAmcGF0aG51bGxzLCAmbnBhdGgpOworCisJdiA9IGpzb25iX2dldF9qc29uYnZhbHVlKGpi LCBwYXRodGV4dCwgbnBhdGgsICZpc251bGwpOworCisJaWYgKGlzbnVsbCkKKwkJUEdfUkVUVVJO X1BPSU5URVIoTlVMTCk7CisKKwlyZXR1cm4gY2FzdF9qc29uYnZhbHVlX3RvX3R5cGUodiwgdGFy Z2V0T2lkKTsKK30KKwogRGF0dW0KIGpzb25iX2V4dHJhY3RfcGF0aChQR19GVU5DVElPTl9BUkdT KQogewpAQCAtMTUxNiw1MiArMTU1MCwzNiBAQCBnZXRfanNvbmJfcGF0aF9hbGwoRnVuY3Rpb25D YWxsSW5mbyBmY2luZm8sIGJvb2wgYXNfdGV4dCkKIAkJUEdfUkVUVVJOX0RBVFVNKHJlcyk7CiB9 CiAKLURhdHVtCi1qc29uYl9nZXRfZWxlbWVudChKc29uYiAqamIsIERhdHVtICpwYXRoLCBpbnQg bnBhdGgsIGJvb2wgKmlzbnVsbCwgYm9vbCBhc190ZXh0KQorCitzdGF0aWMgSnNvbmJWYWx1ZSAq Citqc29uYl9nZXRfanNvbmJ2YWx1ZShKc29uYiAqamIsIERhdHVtICpwYXRoLCBpbnQgbnBhdGgs IGJvb2wgKmlzbnVsbCkKIHsKKwlib29sIGhhdmVfb2JqZWN0ID0gZmFsc2UsIGhhdmVfYXJyYXkg PSBmYWxzZTsKIAlKc29uYkNvbnRhaW5lciAqY29udGFpbmVyID0gJmpiLT5yb290OworCWludCBp OwogCUpzb25iVmFsdWUgKmpidnAgPSBOVUxMOwotCWludAkJCWk7Ci0JYm9vbAkJaGF2ZV9vYmpl Y3QgPSBmYWxzZSwKLQkJCQloYXZlX2FycmF5ID0gZmFsc2U7CiAKLQkqaXNudWxsID0gZmFsc2U7 CisJLyoKKwkgKiBJZiB0aGUgYXJyYXkgaXMgZW1wdHksIHJldHVybiB0aGUgZW50aXJlIExIUyBv YmplY3QsIG9uIHRoZSBncm91bmRzCisJICogdGhhdCB3ZSBzaG91bGQgZG8gemVybyBmaWVsZCBv ciBlbGVtZW50IGV4dHJhY3Rpb25zLgorCSAqLworCWlmIChucGF0aCA8PSAwKQorCXsKKwkJSnNv bmJWYWx1ZSAqcmVzID0gTlVMTDsKKwkJaWYgKEpCX1JPT1RfSVNfQVJSQVkoamIpICYmIEpCX1JP T1RfSVNfU0NBTEFSKGpiKSkKKwkJCXJldHVybiBnZXRJdGhKc29uYlZhbHVlRnJvbUNvbnRhaW5l cihjb250YWluZXIsIDApOworCisJCS8qIE5COiByZXMgaXMgYSBqYnZCaW5hcnkgSnNvbmJWYWx1 ZSAqLworCQlyZXMgPSBwYWxsb2MwKHNpemVvZihKc29uYlZhbHVlKSk7CisJCUpzb25iVG9Kc29u YlZhbHVlKGpiLCByZXMpOworCQlyZXR1cm4gcmVzOworCX0KIAogCS8qIElkZW50aWZ5IHdoZXRo ZXIgd2UgaGF2ZSBvYmplY3QsIGFycmF5LCBvciBzY2FsYXIgYXQgdG9wLWxldmVsICovCiAJaWYg KEpCX1JPT1RfSVNfT0JKRUNUKGpiKSkKIAkJaGF2ZV9vYmplY3QgPSB0cnVlOwogCWVsc2UgaWYg KEpCX1JPT1RfSVNfQVJSQVkoamIpICYmICFKQl9ST09UX0lTX1NDQUxBUihqYikpCiAJCWhhdmVf YXJyYXkgPSB0cnVlOwotCWVsc2UKLQl7Ci0JCUFzc2VydChKQl9ST09UX0lTX0FSUkFZKGpiKSAm JiBKQl9ST09UX0lTX1NDQUxBUihqYikpOwotCQkvKiBFeHRyYWN0IHRoZSBzY2FsYXIgdmFsdWUs IGlmIGl0IGlzIHdoYXQgd2UnbGwgcmV0dXJuICovCi0JCWlmIChucGF0aCA8PSAwKQotCQkJamJ2 cCA9IGdldEl0aEpzb25iVmFsdWVGcm9tQ29udGFpbmVyKGNvbnRhaW5lciwgMCk7Ci0JfQotCi0J LyoKLQkgKiBJZiB0aGUgYXJyYXkgaXMgZW1wdHksIHJldHVybiB0aGUgZW50aXJlIExIUyBvYmpl Y3QsIG9uIHRoZSBncm91bmRzCi0JICogdGhhdCB3ZSBzaG91bGQgZG8gemVybyBmaWVsZCBvciBl bGVtZW50IGV4dHJhY3Rpb25zLiAgRm9yIHRoZQotCSAqIG5vbi1zY2FsYXIgY2FzZSB3ZSBjYW4g anVzdCBoYW5kIGJhY2sgdGhlIG9iamVjdCB3aXRob3V0IG11Y2ggd29yay4gRm9yCi0JICogdGhl IHNjYWxhciBjYXNlLCBmYWxsIHRocm91Z2ggYW5kIGRlYWwgd2l0aCB0aGUgdmFsdWUgYmVsb3cg dGhlIGxvb3AuCi0JICogKFRoaXMgaW5jb25zaXN0ZW5jeSBhcmlzZXMgYmVjYXVzZSB0aGVyZSdz IG5vIGVhc3kgd2F5IHRvIGdlbmVyYXRlIGEKLQkgKiBKc29uYlZhbHVlIGRpcmVjdGx5IGZvciBy b290LWxldmVsIGNvbnRhaW5lcnMuKQotCSAqLwotCWlmIChucGF0aCA8PSAwICYmIGpidnAgPT0g TlVMTCkKLQl7Ci0JCWlmIChhc190ZXh0KQotCQl7Ci0JCQlyZXR1cm4gUG9pbnRlckdldERhdHVt KGNzdHJpbmdfdG9fdGV4dChKc29uYlRvQ1N0cmluZyhOVUxMLAotCQkJCQkJCQkJCQkJCQkJCSAg Y29udGFpbmVyLAotCQkJCQkJCQkJCQkJCQkJCSAgVkFSU0laRShqYikpKSk7Ci0JCX0KLQkJZWxz ZQotCQl7Ci0JCQkvKiBub3QgdGV4dCBtb2RlIC0ganVzdCBoYW5kIGJhY2sgdGhlIGpzb25iICov Ci0JCQlQR19SRVRVUk5fSlNPTkJfUChqYik7Ci0JCX0KLQl9CiAKIAlmb3IgKGkgPSAwOyBpIDwg bnBhdGg7IGkrKykKIAl7CkBAIC0xNTg2LDcgKzE2MDQsNyBAQCBqc29uYl9nZXRfZWxlbWVudChK c29uYiAqamIsIERhdHVtICpwYXRoLCBpbnQgbnBhdGgsIGJvb2wgKmlzbnVsbCwgYm9vbCBhc190 ZXh0KQogCQkJaWYgKGVuZHB0ciA9PSBpbmRleHRleHQgfHwgKmVuZHB0ciAhPSAnXDAnIHx8IGVy cm5vICE9IDApCiAJCQl7CiAJCQkJKmlzbnVsbCA9IHRydWU7Ci0JCQkJcmV0dXJuIFBvaW50ZXJH ZXREYXR1bShOVUxMKTsKKwkJCQlyZXR1cm4gTlVMTDsKIAkJCX0KIAogCQkJaWYgKGxpbmRleCA+ PSAwKQpAQCAtMTYwNyw3ICsxNjI1LDcgQEAganNvbmJfZ2V0X2VsZW1lbnQoSnNvbmIgKmpiLCBE YXR1bSAqcGF0aCwgaW50IG5wYXRoLCBib29sICppc251bGwsIGJvb2wgYXNfdGV4dCkKIAkJCQlp ZiAobGluZGV4ID09IElOVF9NSU4gfHwgLWxpbmRleCA+IG5lbGVtZW50cykKIAkJCQl7CiAJCQkJ CSppc251bGwgPSB0cnVlOwotCQkJCQlyZXR1cm4gUG9pbnRlckdldERhdHVtKE5VTEwpOworCQkJ CQlyZXR1cm4gTlVMTDsKIAkJCQl9CiAJCQkJZWxzZQogCQkJCQlpbmRleCA9IG5lbGVtZW50cyAr IGxpbmRleDsKQEAgLTE2MTksMTMgKzE2MzcsMTMgQEAganNvbmJfZ2V0X2VsZW1lbnQoSnNvbmIg KmpiLCBEYXR1bSAqcGF0aCwgaW50IG5wYXRoLCBib29sICppc251bGwsIGJvb2wgYXNfdGV4dCkK IAkJewogCQkJLyogc2NhbGFyLCBleHRyYWN0aW9uIHlpZWxkcyBhIG51bGwgKi8KIAkJCSppc251 bGwgPSB0cnVlOwotCQkJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShOVUxMKTsKKwkJCXJldHVybiBO VUxMOwogCQl9CiAKIAkJaWYgKGpidnAgPT0gTlVMTCkKIAkJewogCQkJKmlzbnVsbCA9IHRydWU7 Ci0JCQlyZXR1cm4gUG9pbnRlckdldERhdHVtKE5VTEwpOworCQkJcmV0dXJuIE5VTEw7CiAJCX0K IAkJZWxzZSBpZiAoaSA9PSBucGF0aCAtIDEpCiAJCQlicmVhazsKQEAgLTE2NDQsNiArMTY2Miwy MiBAQCBqc29uYl9nZXRfZWxlbWVudChKc29uYiAqamIsIERhdHVtICpwYXRoLCBpbnQgbnBhdGgs IGJvb2wgKmlzbnVsbCwgYm9vbCBhc190ZXh0KQogCQkJaGF2ZV9hcnJheSA9IGZhbHNlOwogCQl9 CiAJfQorCXJldHVybiBqYnZwOworfQorCisvKgorICogUmV0dXJuIGpzb25iIGRhdHVtIG9yIGpz b25iLWFzLXRleHQgZGF0dW0uCisgKi8KK0RhdHVtCitqc29uYl9nZXRfZWxlbWVudChKc29uYiAq amIsIERhdHVtICpwYXRoLCBpbnQgbnBhdGgsIGJvb2wgKmlzbnVsbCwgYm9vbCBhc190ZXh0KQor eworCUpzb25iVmFsdWUgKmpidnAgPSBOVUxMOworCSppc251bGwgPSBmYWxzZTsKKworCWpidnAg PSBqc29uYl9nZXRfanNvbmJ2YWx1ZShqYiwgcGF0aCwgbnBhdGgsIGlzbnVsbCk7CisKKwlpZiAo KmlzbnVsbCkKKwkJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShOVUxMKTsKIAogCWlmIChhc190ZXh0 KQogCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmgKaW5kZXggZjUwN2I0OWJiMjguLjhlZDAzYTIw ZWZhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaAorKysgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaApAQCAtNTcsNiArNTcsNiBAQAogICovCiAK IC8qCQkJCQkJCXl5eXltbWRkTiAqLwotI2RlZmluZSBDQVRBTE9HX1ZFUlNJT05fTk8JMjAyMzA3 MjYxCisjZGVmaW5lIENBVEFMT0dfVkVSU0lPTl9OTwkyMDIzMDgxNDEKIAogI2VuZGlmCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wcm9jLmRhdAppbmRleCA2OTk2MDczOTg5YS4uYWY4OWRlYzdkYjggMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wcm9jLmRhdApAQCAtNDU3NSwyNSArNDU3NSwyNiBAQAogICBwcm9uYW1lID0+ICdw Z19sc24nLCBwcm9yZXR0eXBlID0+ICdwZ19sc24nLCBwcm9hcmd0eXBlcyA9PiAnbnVtZXJpYycs CiAgIHByb3NyYyA9PiAnbnVtZXJpY19wZ19sc24nIH0sCiAKLXsgb2lkID0+ICczNTU2JywgZGVz Y3IgPT4gJ2NvbnZlcnQganNvbmIgdG8gYm9vbGVhbicsCit7IG9pZCA9PiAnMzU1NicsIGRlc2Ny ID0+ICdjb252ZXJ0IGpzb25iIHRvIGJvb2xlYW4nLCBwcm9zdXBwb3J0ID0+ICdqc29uYl9jYXN0 X3N1cHBvcnQnLAogICBwcm9uYW1lID0+ICdib29sJywgcHJvcmV0dHlwZSA9PiAnYm9vbCcsIHBy b2FyZ3R5cGVzID0+ICdqc29uYicsCiAgIHByb3NyYyA9PiAnanNvbmJfYm9vbCcgfSwKIHsgb2lk ID0+ICczNDQ5JywgZGVzY3IgPT4gJ2NvbnZlcnQganNvbmIgdG8gbnVtZXJpYycsCi0gIHByb25h bWUgPT4gJ251bWVyaWMnLCBwcm9yZXR0eXBlID0+ICdudW1lcmljJywgcHJvYXJndHlwZXMgPT4g J2pzb25iJywKKyAgcHJvbmFtZSA9PiAnbnVtZXJpYycsIHByb3N1cHBvcnQgPT4gJ2pzb25iX2Nh c3Rfc3VwcG9ydCcsCisgIHByb3JldHR5cGUgPT4gJ251bWVyaWMnLCBwcm9hcmd0eXBlcyA9PiAn anNvbmInLAogICBwcm9zcmMgPT4gJ2pzb25iX251bWVyaWMnIH0sCi17IG9pZCA9PiAnMzQ1MCcs IGRlc2NyID0+ICdjb252ZXJ0IGpzb25iIHRvIGludDInLAoreyBvaWQgPT4gJzM0NTAnLCBkZXNj ciA9PiAnY29udmVydCBqc29uYiB0byBpbnQyJywgcHJvc3VwcG9ydCA9PiAnanNvbmJfY2FzdF9z dXBwb3J0JywKICAgcHJvbmFtZSA9PiAnaW50MicsIHByb3JldHR5cGUgPT4gJ2ludDInLCBwcm9h cmd0eXBlcyA9PiAnanNvbmInLAogICBwcm9zcmMgPT4gJ2pzb25iX2ludDInIH0sCi17IG9pZCA9 PiAnMzQ1MScsIGRlc2NyID0+ICdjb252ZXJ0IGpzb25iIHRvIGludDQnLAoreyBvaWQgPT4gJzM0 NTEnLCBkZXNjciA9PiAnY29udmVydCBqc29uYiB0byBpbnQ0JywgcHJvc3VwcG9ydCA9PiAnanNv bmJfY2FzdF9zdXBwb3J0JywKICAgcHJvbmFtZSA9PiAnaW50NCcsIHByb3JldHR5cGUgPT4gJ2lu dDQnLCBwcm9hcmd0eXBlcyA9PiAnanNvbmInLAogICBwcm9zcmMgPT4gJ2pzb25iX2ludDQnIH0s Ci17IG9pZCA9PiAnMzQ1MicsIGRlc2NyID0+ICdjb252ZXJ0IGpzb25iIHRvIGludDgnLAoreyBv aWQgPT4gJzM0NTInLCBkZXNjciA9PiAnY29udmVydCBqc29uYiB0byBpbnQ4JywgcHJvc3VwcG9y dCA9PiAnanNvbmJfY2FzdF9zdXBwb3J0JywKICAgcHJvbmFtZSA9PiAnaW50OCcsIHByb3JldHR5 cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnanNvbmInLAogICBwcm9zcmMgPT4gJ2pzb25i X2ludDgnIH0sCi17IG9pZCA9PiAnMzQ1MycsIGRlc2NyID0+ICdjb252ZXJ0IGpzb25iIHRvIGZs b2F0NCcsCit7IG9pZCA9PiAnMzQ1MycsIGRlc2NyID0+ICdjb252ZXJ0IGpzb25iIHRvIGZsb2F0 NCcsIHByb3N1cHBvcnQgPT4gJ2pzb25iX2Nhc3Rfc3VwcG9ydCcsCiAgIHByb25hbWUgPT4gJ2Zs b2F0NCcsIHByb3JldHR5cGUgPT4gJ2Zsb2F0NCcsIHByb2FyZ3R5cGVzID0+ICdqc29uYicsCiAg IHByb3NyYyA9PiAnanNvbmJfZmxvYXQ0JyB9LAoteyBvaWQgPT4gJzI1ODAnLCBkZXNjciA9PiAn Y29udmVydCBqc29uYiB0byBmbG9hdDgnLAoreyBvaWQgPT4gJzI1ODAnLCBkZXNjciA9PiAnY29u dmVydCBqc29uYiB0byBmbG9hdDgnLCBwcm9zdXBwb3J0ID0+ICdqc29uYl9jYXN0X3N1cHBvcnQn LAogICBwcm9uYW1lID0+ICdmbG9hdDgnLCBwcm9yZXR0eXBlID0+ICdmbG9hdDgnLCBwcm9hcmd0 eXBlcyA9PiAnanNvbmInLAogICBwcm9zcmMgPT4gJ2pzb25iX2Zsb2F0OCcgfSwKIApAQCAtOTky OCw2ICs5OTI5LDEzIEBACiAgIHByb25hbWUgPT4gJ2pzb25iX29iamVjdF9maWVsZF90ZXh0Jywg cHJvcmV0dHlwZSA9PiAndGV4dCcsCiAgIHByb2FyZ3R5cGVzID0+ICdqc29uYiB0ZXh0JywgcHJv YXJnbmFtZXMgPT4gJ3tmcm9tX2pzb24sIGZpZWxkX25hbWV9JywKICAgcHJvc3JjID0+ICdqc29u Yl9vYmplY3RfZmllbGRfdGV4dCcgfSwKK3sgb2lkID0+ICczODEzJywgZGVzY3IgPT4gJ3JldHVy biBhIGdpdmVuIHR5cGUgc3BlY2lmaWVkIGluIGRlc2lyZWRfdHlwZSBmcm9tIGpzb25iIGZpZWxk JywKKyAgcHJvbmFtZSA9PiAnanNvbmJfb2JqZWN0X2ZpZWxkX3R5cGUnLCBwcm9yZXR0eXBlID0+ ICdhbnllbGVtZW50JywKKyAgcHJvYXJndHlwZXMgPT4gJ2pzb25iIHRleHQgYW55ZWxlbWVudCcs IHByb2FyZ25hbWVzID0+ICd7ZnJvbV9qc29uLCBmaWVsZF9uYW1lLCBkZXNpcmVkX3R5cGV9JywK KyAgcHJvc3JjID0+ICdqc29uYl9vYmplY3RfZmllbGRfdHlwZSd9LAoreyBvaWQgPT4gJzM4MTQn LCBkZXNjciA9PiAncGxhbm5lciBzdXBwb3J0IGZvciBudW1lcmljKGpzb25iKScsCisgIHByb25h bWUgPT4gJ2pzb25iX2Nhc3Rfc3VwcG9ydCcsIHByb3JldHR5cGUgPT4gJ2ludGVybmFsJywKKyAg cHJvYXJndHlwZXMgPT4gJ2ludGVybmFsJywgcHJvc3JjID0+ICdqc29uYl9jYXN0X3N1cHBvcnQn IH0sCiB7IG9pZCA9PiAnMzIxNScsCiAgIHByb25hbWUgPT4gJ2pzb25iX2FycmF5X2VsZW1lbnQn LCBwcm9yZXR0eXBlID0+ICdqc29uYicsCiAgIHByb2FyZ3R5cGVzID0+ICdqc29uYiBpbnQ0Jywg cHJvYXJnbmFtZXMgPT4gJ3tmcm9tX2pzb24sIGVsZW1lbnRfaW5kZXh9JywKQEAgLTk5MzYsNiAr OTk0NCwxMCBAQAogICBwcm9uYW1lID0+ICdqc29uYl9hcnJheV9lbGVtZW50X3RleHQnLCBwcm9y ZXR0eXBlID0+ICd0ZXh0JywKICAgcHJvYXJndHlwZXMgPT4gJ2pzb25iIGludDQnLCBwcm9hcmdu YW1lcyA9PiAne2Zyb21fanNvbiwgZWxlbWVudF9pbmRleH0nLAogICBwcm9zcmMgPT4gJ2pzb25i X2FycmF5X2VsZW1lbnRfdGV4dCcgfSwKK3sgb2lkID0+ICc0NTQ5JywgZGVzY3IgPT4gJ2Nhc3Qg YW4gYXJyYXkgZWxlbWVudCB0byBnaXZlbiB0eXBlJywKKyAgcHJvbmFtZSA9PiAnanNvbmJfYXJy YXlfZWxlbWVudF90eXBlJywgcHJvcmV0dHlwZSA9PiAnYW55ZWxlbWVudCcsCisgIHByb2FyZ3R5 cGVzID0+ICdqc29uYiBpbnQ0IGFueWVsZW1lbnQnLCBwcm9hcmduYW1lcyA9PiAne2Zyb21fanNv biwgZWxlbWVudF9pbmRleCwgZGVzaXJlZF90eXBlfScsCisgIHByb3NyYyA9PiAnanNvbmJfYXJy YXlfZWxlbWVudF90eXBlJyB9LAogeyBvaWQgPT4gJzMyMTcnLCBkZXNjciA9PiAnZ2V0IHZhbHVl IGZyb20ganNvbmIgd2l0aCBwYXRoIGVsZW1lbnRzJywKICAgcHJvbmFtZSA9PiAnanNvbmJfZXh0 cmFjdF9wYXRoJywgcHJvdmFyaWFkaWMgPT4gJ3RleHQnLCBwcm9yZXR0eXBlID0+ICdqc29uYics CiAgIHByb2FyZ3R5cGVzID0+ICdqc29uYiBfdGV4dCcsIHByb2FsbGFyZ3R5cGVzID0+ICd7anNv bmIsX3RleHR9JywKQEAgLTk5NDcsNiArOTk1OSwxMiBAQAogICBwcm9hbGxhcmd0eXBlcyA9PiAn e2pzb25iLF90ZXh0fScsIHByb2FyZ21vZGVzID0+ICd7aSx2fScsCiAgIHByb2FyZ25hbWVzID0+ ICd7ZnJvbV9qc29uLHBhdGhfZWxlbXN9JywKICAgcHJvc3JjID0+ICdqc29uYl9leHRyYWN0X3Bh dGhfdGV4dCcgfSwKK3sgb2lkID0+ICc0NTUxJywgZGVzY3IgPT4gJ2Nhc3QgdmFsdWUgZnJvbSBq c29uYiBhcyB0ZXh0IHdpdGggcGF0aCBlbGVtZW50cyB0byBnaXZlbiB0eXBlJywKKyAgcHJvbmFt ZSA9PiAnanNvbmJfZXh0cmFjdF9wYXRoX3R5cGUnLCBwcm92YXJpYWRpYyA9PiAndGV4dCcsCisg IHByb3JldHR5cGUgPT4gJ2FueWVsZW1lbnQnLCBwcm9hcmd0eXBlcyA9PiAnanNvbmIgX3RleHQg YW55ZWxlbWVudCcsCisgIHByb2FsbGFyZ3R5cGVzID0+ICd7anNvbmIsX3RleHQsYW55ZWxlbWVu dH0nLCBwcm9hcmdtb2RlcyA9PiAne2ksdixpfScsCisgIHByb2FyZ25hbWVzID0+ICd7ZnJvbV9q c29uLHBhdGhfZWxlbXMsdGFyZ2V0X29pZH0nLAorICBwcm9zcmMgPT4gJ2pzb25iX2V4dHJhY3Rf cGF0aF90eXBlJyB9LAogeyBvaWQgPT4gJzMyMTknLCBkZXNjciA9PiAnZWxlbWVudHMgb2YgYSBq c29uYiBhcnJheScsCiAgIHByb25hbWUgPT4gJ2pzb25iX2FycmF5X2VsZW1lbnRzJywgcHJvcm93 cyA9PiAnMTAwJywgcHJvcmV0c2V0ID0+ICd0JywKICAgcHJvcmV0dHlwZSA9PiAnanNvbmInLCBw cm9hcmd0eXBlcyA9PiAnanNvbmInLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvanNv bmIuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2pzb25iLmgKaW5kZXggNjQ5YTE2NDRmMjQuLjUzMjIy NTMxNGE5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9qc29uYi5oCisrKyBiL3NyYy9p bmNsdWRlL3V0aWxzL2pzb25iLmgKQEAgLTQzNSw1ICs0MzUsNiBAQCBleHRlcm4gRGF0dW0ganNv bmJfYnVpbGRfb2JqZWN0X3dvcmtlcihpbnQgbmFyZ3MsIERhdHVtICphcmdzLCBib29sICpudWxs cywKIAkJCQkJCQkJCSAgIGJvb2wgdW5pcXVlX2tleXMpOwogZXh0ZXJuIERhdHVtIGpzb25iX2J1 aWxkX2FycmF5X3dvcmtlcihpbnQgbmFyZ3MsIERhdHVtICphcmdzLCBib29sICpudWxscywKIAkJ CQkJCQkJCSAgT2lkICp0eXBlcywgYm9vbCBhYnNlbnRfb25fbnVsbCk7CitleHRlcm4gRGF0dW0g Y2FzdF9qc29uYnZhbHVlX3RvX3R5cGUoSnNvbmJWYWx1ZSAqdiwgT2lkIHRhcmdldF9vaWQpOwog CiAjZW5kaWYJCQkJCQkJLyogX19KU09OQl9IX18gKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29u Yi5vdXQKaW5kZXggNGExNmQwZGJhZmIuLjljZWFlMDU5NTYwIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2pzb25iLm91dApAQCAtNDU3LDYgKzQ1Nyw3IEBAIENSRUFURSBURU1QIFRBQkxFIHRlc3Rf anNvbmIgKAogKTsKIElOU0VSVCBJTlRPIHRlc3RfanNvbmIgVkFMVUVTCiAoJ3NjYWxhcicsJyJh IHNjYWxhciInKSwKKygnc2NhbGFyaW50JywnMicpLAogKCdhcnJheScsJ1siemVybyIsICJvbmUi LCJ0d28iLG51bGwsImZvdXIiLCJmaXZlIiwgWzEsMiwzXSx7ImYxIjo5fV0nKSwKICgnb2JqZWN0 JywneyJmaWVsZDEiOiJ2YWwxIiwiZmllbGQyIjoidmFsMiIsImZpZWxkMyI6bnVsbCwgImZpZWxk NCI6IDQsICJmaWVsZDUiOiBbMSwyLDNdLCAiZmllbGQ2IjogeyJmMSI6OX19Jyk7CiBTRUxFQ1Qg dGVzdF9qc29uIC0+ICd4JyBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ3NjYWxh cic7CkBAIC01MDEsMTAgKzUwMiwyNSBAQCBTRUxFQ1QgdGVzdF9qc29uIC0+PiAnZmllbGQyJyBG Uk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CiAgdmFsMgogKDEgcm93 KQogCi1TRUxFQ1QgdGVzdF9qc29uIC0+IDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlw ZSA9ICdzY2FsYXInOworU0VMRUNUIHRlc3RfanNvbiAtPiAyLCB0ZXN0X2pzb24gLT4gMCBGUk9N IHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ3NjYWxhcic7CisgP2NvbHVtbj8gfCAgP2Nv bHVtbj8gIAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICB8ICJhIHNjYWxhciIK KygxIHJvdykKKworZXhwbGFpbiAodmVyYm9zZSwgY29zdHMgb2ZmKQorU0VMRUNUICh0ZXN0X2pz b24gLT4gMCk6OmludDQsIHRlc3RfanNvbiAtPiAwIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29u X3R5cGUgPSAnc2NhbGFyaW50JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNl cSBTY2FuIG9uIHBnX3RlbXAudGVzdF9qc29uYgorICAgT3V0cHV0OiBqc29uYl9hcnJheV9lbGVt ZW50X3R5cGUodGVzdF9qc29uLCAwLCAwKSwgKHRlc3RfanNvbiAtPiAwKQorICAgRmlsdGVyOiAo dGVzdF9qc29uYi5qc29uX3R5cGUgPSAnc2NhbGFyaW50Jzo6dGV4dCkKKygzIHJvd3MpCisKK1NF TEVDVCB0ZXN0X2pzb24gLT4gMCBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ3Nj YWxhcmludCc7CiAgP2NvbHVtbj8gCiAtLS0tLS0tLS0tCi0gCisgMgogKDEgcm93KQogCiBTRUxF Q1QgdGVzdF9qc29uIC0+IDIgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdhcnJh eSc7CkBAIC0xNzg2LDYgKzE4MDIsMTIgQEAgc2VsZWN0ICd7ImEiOiB7ImIiOnsiYyI6ICJmb28i fX19Jzo6anNvbmIgIz4gJ3t9JzsKICB7ImEiOiB7ImIiOiB7ImMiOiAiZm9vIn19fQogKDEgcm93 KQogCitzZWxlY3QgKCcyJzo6anNvbmIgIz4gJ3t9Jyk6OmludDIsICgneyJhIjoyfSc6Ompzb25i ICM+ICd7ImIifScpLCAoJ3siYSI6Mn0nOjpqc29uYiAjPiAneyJiIn0nKTo6aW50MjsKKyBpbnQy IHwgP2NvbHVtbj8gfCBpbnQyIAorLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tCisgICAgMiB8ICAg ICAgICAgIHwgICAgIAorKDEgcm93KQorCiBzZWxlY3QgJ1sxLDIsM10nOjpqc29uYiAjPiAne30n OwogID9jb2x1bW4/ICAKIC0tLS0tLS0tLS0tCkBAIC01NDcxLDEwNyArNTQ5MywxMTMgQEAgc2Vs ZWN0IHRzX2hlYWRsaW5lKCdbXSc6Ompzb25iLCB0c3F1ZXJ5KCdhYWEgJiBiYmInKSk7CiAoMSBy b3cpCiAKIC0tIGNhc3RzCi1zZWxlY3QgJ3RydWUnOjpqc29uYjo6Ym9vbDsKLSBib29sIAotLS0t LS0tCi0gdAorc2VsZWN0ICd0cnVlJzo6anNvbmI6OmJvb2wsICgneyJhIjogdHJ1ZX0nOjpqc29u Yi0+J2EnKTo6Ym9vbDsKKyBib29sIHwgYm9vbCAKKy0tLS0tLSstLS0tLS0KKyB0ICAgIHwgdAog KDEgcm93KQogCiBzZWxlY3QgJ1tdJzo6anNvbmI6OmJvb2w7CiBFUlJPUjogIGNhbm5vdCBjYXN0 IGpzb25iIGFycmF5IHRvIHR5cGUgYm9vbGVhbgotc2VsZWN0ICcxLjAnOjpqc29uYjo6ZmxvYXQ7 Ci0gZmxvYXQ4IAotLS0tLS0tLS0KLSAgICAgIDEKK3NlbGVjdCAoJ3siYSI6IFtdfSc6Ompzb25i LT4nYScpOjpib29sOworRVJST1I6ICBjYW5ub3QgY2FzdCBqc29uYiBhcnJheSB0byB0eXBlIGJv b2xlYW4KK3NlbGVjdCAnMS4wJzo6anNvbmI6OmZsb2F0LCAoJ3siYSI6IDEuMH0nOjpqc29uYi0+ J2EnKTo6ZmxvYXQ7CisgZmxvYXQ4IHwgZmxvYXQ4IAorLS0tLS0tLS0rLS0tLS0tLS0KKyAgICAg IDEgfCAgICAgIDEKICgxIHJvdykKIAogc2VsZWN0ICdbMS4wXSc6Ompzb25iOjpmbG9hdDsKIEVS Uk9SOiAgY2Fubm90IGNhc3QganNvbmIgYXJyYXkgdG8gdHlwZSBkb3VibGUgcHJlY2lzaW9uCi1z ZWxlY3QgJzEyMzQ1Jzo6anNvbmI6OmludDQ7Ci0gaW50NCAgCi0tLS0tLS0tCi0gMTIzNDUKK3Nl bGVjdCAoJ3siYSI6IFsxLjBdfSc6Ompzb25iLT4nYScpOjpmbG9hdDsKK0VSUk9SOiAgY2Fubm90 IGNhc3QganNvbmIgYXJyYXkgdG8gdHlwZSBkb3VibGUgcHJlY2lzaW9uCitzZWxlY3QgJzEyMzQ1 Jzo6anNvbmI6OmludDQsICAoJ3siYSI6IDEyMzQ1fSc6Ompzb25iLT4nYScpOjppbnQ0OworIGlu dDQgIHwgaW50NCAgCistLS0tLS0tKy0tLS0tLS0KKyAxMjM0NSB8IDEyMzQ1CiAoMSByb3cpCiAK IHNlbGVjdCAnImhlbGxvIic6Ompzb25iOjppbnQ0OwogRVJST1I6ICBjYW5ub3QgY2FzdCBqc29u YiBzdHJpbmcgdG8gdHlwZSBpbnRlZ2VyCi1zZWxlY3QgJzEyMzQ1Jzo6anNvbmI6Om51bWVyaWM7 Ci0gbnVtZXJpYyAKLS0tLS0tLS0tLQotICAgMTIzNDUKK3NlbGVjdCAoJ3siYSI6ICJoZWxsbyJ9 Jzo6anNvbmItPidhJyk6OmludDQ7CitFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIHN0cmluZyB0 byB0eXBlIGludGVnZXIKK3NlbGVjdCAnMTIzNDUnOjpqc29uYjo6bnVtZXJpYywgKCd7ImEiOiAx MjM0NX0nOjpqc29uYi0+J2EnKTo6bnVtZXJpYzsKKyBudW1lcmljIHwgbnVtZXJpYyAKKy0tLS0t LS0tLSstLS0tLS0tLS0KKyAgIDEyMzQ1IHwgICAxMjM0NQogKDEgcm93KQogCiBzZWxlY3QgJ3t9 Jzo6anNvbmI6Om51bWVyaWM7CiBFUlJPUjogIGNhbm5vdCBjYXN0IGpzb25iIG9iamVjdCB0byB0 eXBlIG51bWVyaWMKLXNlbGVjdCAnMTIzNDUuMDUnOjpqc29uYjo6bnVtZXJpYzsKLSBudW1lcmlj ICAKLS0tLS0tLS0tLS0KLSAxMjM0NS4wNQorc2VsZWN0ICcxMjM0NS4wNSc6Ompzb25iOjpudW1l cmljLCAoJ3siYSI6IDEyMzQ1LjA1fSc6Ompzb25iLT4nYScpOjpudW1lcmljOworIG51bWVyaWMg IHwgbnVtZXJpYyAgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyAxMjM0NS4wNSB8IDEyMzQ1LjA1 CiAoMSByb3cpCiAKLXNlbGVjdCAnMTIzNDUuMDUnOjpqc29uYjo6ZmxvYXQ0OwotICBmbG9hdDQg IAotLS0tLS0tLS0tLQotIDEyMzQ1LjA1CitzZWxlY3QgJzEyMzQ1LjA1Jzo6anNvbmI6OmZsb2F0 NCwgKCd7ImEiOiAxMjM0NS4wNX0nOjpqc29uYi0+J2EnKTo6ZmxvYXQ0OworICBmbG9hdDQgIHwg IGZsb2F0NCAgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyAxMjM0NS4wNSB8IDEyMzQ1LjA1CiAo MSByb3cpCiAKLXNlbGVjdCAnMTIzNDUuMDUnOjpqc29uYjo6ZmxvYXQ4OwotICBmbG9hdDggIAot LS0tLS0tLS0tLQotIDEyMzQ1LjA1CitzZWxlY3QgJzEyMzQ1LjA1Jzo6anNvbmI6OmZsb2F0OCwg KCd7ImEiOiAxMjM0NS4wNX0nOjpqc29uYi0+J2EnKTo6ZmxvYXQ4OworICBmbG9hdDggIHwgIGZs b2F0OCAgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyAxMjM0NS4wNSB8IDEyMzQ1LjA1CiAoMSBy b3cpCiAKLXNlbGVjdCAnMTIzNDUuMDUnOjpqc29uYjo6aW50MjsKLSBpbnQyICAKLS0tLS0tLS0K LSAxMjM0NQorc2VsZWN0ICcxMjM0NS4wNSc6Ompzb25iOjppbnQyLCAoJ3siYSI6IDEyMzQ1LjA1 fSc6Ompzb25iLT4nYScpOjppbnQyOworIGludDIgIHwgaW50MiAgCistLS0tLS0tKy0tLS0tLS0K KyAxMjM0NSB8IDEyMzQ1CiAoMSByb3cpCiAKLXNlbGVjdCAnMTIzNDUuMDUnOjpqc29uYjo6aW50 NDsKLSBpbnQ0ICAKLS0tLS0tLS0KLSAxMjM0NQorc2VsZWN0ICcxMjM0NS4wNSc6Ompzb25iOjpp bnQ0LCAoJ3siYSI6IDEyMzQ1LjA1fSc6Ompzb25iLT4nYScpOjppbnQ0OworIGludDQgIHwgaW50 NCAgCistLS0tLS0tKy0tLS0tLS0KKyAxMjM0NSB8IDEyMzQ1CiAoMSByb3cpCiAKLXNlbGVjdCAn MTIzNDUuMDUnOjpqc29uYjo6aW50ODsKLSBpbnQ4ICAKLS0tLS0tLS0KLSAxMjM0NQorc2VsZWN0 ICcxMjM0NS4wNSc6Ompzb25iOjppbnQ4LCAoJ3siYSI6IDEyMzQ1LjA1fSc6Ompzb25iLT4nYScp OjppbnQ4OworIGludDggIHwgaW50OCAgCistLS0tLS0tKy0tLS0tLS0KKyAxMjM0NSB8IDEyMzQ1 CiAoMSByb3cpCiAKLXNlbGVjdCAnMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwNSc6Ompzb25iOjpudW1lcmljOwotICAgICAgICAgICAgICAgICAgICAg ICBudW1lcmljICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxMjM0NS4wMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1CitzZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpqc29uYjo6bnVtZXJpYywgKCd7 ImEiOiAxMjM0NS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1 fSc6Ompzb25iLT4nYScpOjpudW1lcmljOworICAgICAgICAgICAgICAgICAgICAgICBudW1lcmlj ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgbnVtZXJpYyAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIDEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDUgfCAxMjM0NS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDA1CiAoMSByb3cpCiAKLXNlbGVjdCAnMTIzNDUuMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNSc6Ompzb25iOjpmbG9hdDQ7Ci0gZmxvYXQ0 IAotLS0tLS0tLS0KLSAgMTIzNDUKK3NlbGVjdCAnMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNSc6Ompzb25iOjpmbG9hdDQsICAoJ3siYSI6IDEyMzQ1 LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDV9Jzo6anNvbmIt PidhJyk6OmZsb2F0NDsKKyBmbG9hdDQgfCBmbG9hdDQgCistLS0tLS0tLSstLS0tLS0tLQorICAx MjM0NSB8ICAxMjM0NQogKDEgcm93KQogCi1zZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpqc29uYjo6ZmxvYXQ4OwotIGZsb2F0OCAK LS0tLS0tLS0tCi0gIDEyMzQ1CitzZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpqc29uYjo6ZmxvYXQ4LCAoJ3siYSI6IDEyMzQ1LjAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDV9Jzo6anNvbmItPidh Jyk6OmZsb2F0ODsKKyBmbG9hdDggfCBmbG9hdDggCistLS0tLS0tLSstLS0tLS0tLQorICAxMjM0 NSB8ICAxMjM0NQogKDEgcm93KQogCi1zZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpqc29uYjo6aW50MjsKLSBpbnQyICAKLS0tLS0t LS0KLSAxMjM0NQorc2VsZWN0ICcxMjM0NS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDA1Jzo6anNvbmI6OmludDIsICgneyJhIjogMTIzNDUuMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNX0nOjpqc29uYi0+J2EnKTo6aW50MjsK KyBpbnQyICB8IGludDIgIAorLS0tLS0tLSstLS0tLS0tCisgMTIzNDUgfCAxMjM0NQogKDEgcm93 KQogCi1zZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDUnOjpqc29uYjo6aW50NDsKLSBpbnQ0ICAKLS0tLS0tLS0KLSAxMjM0NQorc2VsZWN0 ICcxMjM0NS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1Jzo6 anNvbmI6OmludDQsICgneyJhIjogMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwNX0nOjpqc29uYi0+J2EnKTo6aW50NDsKKyBpbnQ0ICB8IGludDQgIAor LS0tLS0tLSstLS0tLS0tCisgMTIzNDUgfCAxMjM0NQogKDEgcm93KQogCi1zZWxlY3QgJzEyMzQ1 LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpqc29uYjo6 aW50ODsKLSBpbnQ4ICAKLS0tLS0tLS0KLSAxMjM0NQorc2VsZWN0ICcxMjM0NS4wMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1Jzo6anNvbmI6OmludDgsICgneyJh IjogMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNX0n Ojpqc29uYi0+J2EnKTo6aW50ODsKKyBpbnQ4ICB8IGludDggIAorLS0tLS0tLSstLS0tLS0tCisg MTIzNDUgfCAxMjM0NQogKDEgcm93KQogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9qc29uYi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwKaW5kZXggZTRiN2Nk ZjcwM2QuLjVmZWNlOTg3YmYwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29u Yi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3FsCkBAIC0xNTQsNiArMTU0 LDcgQEAgQ1JFQVRFIFRFTVAgVEFCTEUgdGVzdF9qc29uYiAoCiAKIElOU0VSVCBJTlRPIHRlc3Rf anNvbmIgVkFMVUVTCiAoJ3NjYWxhcicsJyJhIHNjYWxhciInKSwKKygnc2NhbGFyaW50JywnMicp LAogKCdhcnJheScsJ1siemVybyIsICJvbmUiLCJ0d28iLG51bGwsImZvdXIiLCJmaXZlIiwgWzEs MiwzXSx7ImYxIjo5fV0nKSwKICgnb2JqZWN0JywneyJmaWVsZDEiOiJ2YWwxIiwiZmllbGQyIjoi dmFsMiIsImZpZWxkMyI6bnVsbCwgImZpZWxkNCI6IDQsICJmaWVsZDUiOiBbMSwyLDNdLCAiZmll bGQ2IjogeyJmMSI6OX19Jyk7CiAKQEAgLTE2Niw3ICsxNjcsMTAgQEAgU0VMRUNUIHRlc3RfanNv biAtPj4gJ2ZpZWxkMicgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdzY2FsYXIn OwogU0VMRUNUIHRlc3RfanNvbiAtPj4gJ2ZpZWxkMicgRlJPTSB0ZXN0X2pzb25iIFdIRVJFIGpz b25fdHlwZSA9ICdhcnJheSc7CiBTRUxFQ1QgdGVzdF9qc29uIC0+PiAnZmllbGQyJyBGUk9NIHRl c3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ29iamVjdCc7CiAKLVNFTEVDVCB0ZXN0X2pzb24g LT4gMiBGUk9NIHRlc3RfanNvbmIgV0hFUkUganNvbl90eXBlID0gJ3NjYWxhcic7CitTRUxFQ1Qg dGVzdF9qc29uIC0+IDIsIHRlc3RfanNvbiAtPiAwIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29u X3R5cGUgPSAnc2NhbGFyJzsKK2V4cGxhaW4gKHZlcmJvc2UsIGNvc3RzIG9mZikKK1NFTEVDVCAo dGVzdF9qc29uIC0+IDApOjppbnQ0LCB0ZXN0X2pzb24gLT4gMCBGUk9NIHRlc3RfanNvbmIgV0hF UkUganNvbl90eXBlID0gJ3NjYWxhcmludCc7CitTRUxFQ1QgdGVzdF9qc29uIC0+IDAgRlJPTSB0 ZXN0X2pzb25iIFdIRVJFIGpzb25fdHlwZSA9ICdzY2FsYXJpbnQnOwogU0VMRUNUIHRlc3RfanNv biAtPiAyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnYXJyYXknOwogU0VMRUNU IHRlc3RfanNvbiAtPiA5IEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUgPSAnYXJyYXkn OwogU0VMRUNUIHRlc3RfanNvbiAtPiAyIEZST00gdGVzdF9qc29uYiBXSEVSRSBqc29uX3R5cGUg PSAnb2JqZWN0JzsKQEAgLTQ5MSw2ICs0OTUsNyBAQCBTRUxFQ1QgJ3siZjIiOlsiZjMiLDFdLCJm NCI6eyJmNSI6OTksImY2Ijoic3RyaW5neSJ9fSc6Ompzb25iIz4+YXJyYXlbJ2YyJywnMSddOwog CiAtLSBjb3JuZXIgY2FzZXMgZm9yIHNhbWUKIHNlbGVjdCAneyJhIjogeyJiIjp7ImMiOiAiZm9v In19fSc6Ompzb25iICM+ICd7fSc7CitzZWxlY3QgKCcyJzo6anNvbmIgIz4gJ3t9Jyk6OmludDIs ICgneyJhIjoyfSc6Ompzb25iICM+ICd7ImIifScpLCAoJ3siYSI6Mn0nOjpqc29uYiAjPiAneyJi In0nKTo6aW50MjsKIHNlbGVjdCAnWzEsMiwzXSc6Ompzb25iICM+ICd7fSc7CiBzZWxlY3QgJyJm b28iJzo6anNvbmIgIz4gJ3t9JzsKIHNlbGVjdCAnNDInOjpqc29uYiAjPiAne30nOwpAQCAtMTQ5 NiwyMyArMTUwMSwyNyBAQCBzZWxlY3QgdHNfaGVhZGxpbmUoJ3t9Jzo6anNvbmIsIHRzcXVlcnko J2FhYSAmIGJiYicpKTsKIHNlbGVjdCB0c19oZWFkbGluZSgnW10nOjpqc29uYiwgdHNxdWVyeSgn YWFhICYgYmJiJykpOwogCiAtLSBjYXN0cwotc2VsZWN0ICd0cnVlJzo6anNvbmI6OmJvb2w7Citz ZWxlY3QgJ3RydWUnOjpqc29uYjo6Ym9vbCwgKCd7ImEiOiB0cnVlfSc6Ompzb25iLT4nYScpOjpi b29sOwogc2VsZWN0ICdbXSc6Ompzb25iOjpib29sOwotc2VsZWN0ICcxLjAnOjpqc29uYjo6Zmxv YXQ7CitzZWxlY3QgKCd7ImEiOiBbXX0nOjpqc29uYi0+J2EnKTo6Ym9vbDsKK3NlbGVjdCAnMS4w Jzo6anNvbmI6OmZsb2F0LCAoJ3siYSI6IDEuMH0nOjpqc29uYi0+J2EnKTo6ZmxvYXQ7CiBzZWxl Y3QgJ1sxLjBdJzo6anNvbmI6OmZsb2F0Owotc2VsZWN0ICcxMjM0NSc6Ompzb25iOjppbnQ0Owor c2VsZWN0ICgneyJhIjogWzEuMF19Jzo6anNvbmItPidhJyk6OmZsb2F0Oworc2VsZWN0ICcxMjM0 NSc6Ompzb25iOjppbnQ0LCAgKCd7ImEiOiAxMjM0NX0nOjpqc29uYi0+J2EnKTo6aW50NDsKIHNl bGVjdCAnImhlbGxvIic6Ompzb25iOjppbnQ0Owotc2VsZWN0ICcxMjM0NSc6Ompzb25iOjpudW1l cmljOworc2VsZWN0ICgneyJhIjogImhlbGxvIn0nOjpqc29uYi0+J2EnKTo6aW50NDsKKworc2Vs ZWN0ICcxMjM0NSc6Ompzb25iOjpudW1lcmljLCAoJ3siYSI6IDEyMzQ1fSc6Ompzb25iLT4nYScp OjpudW1lcmljOwogc2VsZWN0ICd7fSc6Ompzb25iOjpudW1lcmljOwotc2VsZWN0ICcxMjM0NS4w NSc6Ompzb25iOjpudW1lcmljOwotc2VsZWN0ICcxMjM0NS4wNSc6Ompzb25iOjpmbG9hdDQ7Ci1z ZWxlY3QgJzEyMzQ1LjA1Jzo6anNvbmI6OmZsb2F0ODsKLXNlbGVjdCAnMTIzNDUuMDUnOjpqc29u Yjo6aW50MjsKLXNlbGVjdCAnMTIzNDUuMDUnOjpqc29uYjo6aW50NDsKLXNlbGVjdCAnMTIzNDUu MDUnOjpqc29uYjo6aW50ODsKLXNlbGVjdCAnMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwNSc6Ompzb25iOjpudW1lcmljOwotc2VsZWN0ICcxMjM0NS4w MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1Jzo6anNvbmI6OmZs b2F0NDsKLXNlbGVjdCAnMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwNSc6Ompzb25iOjpmbG9hdDg7Ci1zZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpqc29uYjo6aW50MjsKLXNlbGVjdCAn MTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNSc6Ompz b25iOjppbnQ0Owotc2VsZWN0ICcxMjM0NS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDA1Jzo6anNvbmI6OmludDg7CitzZWxlY3QgJzEyMzQ1LjA1Jzo6anNvbmI6 Om51bWVyaWMsICgneyJhIjogMTIzNDUuMDV9Jzo6anNvbmItPidhJyk6Om51bWVyaWM7CitzZWxl Y3QgJzEyMzQ1LjA1Jzo6anNvbmI6OmZsb2F0NCwgKCd7ImEiOiAxMjM0NS4wNX0nOjpqc29uYi0+ J2EnKTo6ZmxvYXQ0Oworc2VsZWN0ICcxMjM0NS4wNSc6Ompzb25iOjpmbG9hdDgsICgneyJhIjog MTIzNDUuMDV9Jzo6anNvbmItPidhJyk6OmZsb2F0ODsKK3NlbGVjdCAnMTIzNDUuMDUnOjpqc29u Yjo6aW50MiwgKCd7ImEiOiAxMjM0NS4wNX0nOjpqc29uYi0+J2EnKTo6aW50MjsKK3NlbGVjdCAn MTIzNDUuMDUnOjpqc29uYjo6aW50NCwgKCd7ImEiOiAxMjM0NS4wNX0nOjpqc29uYi0+J2EnKTo6 aW50NDsKK3NlbGVjdCAnMTIzNDUuMDUnOjpqc29uYjo6aW50OCwgKCd7ImEiOiAxMjM0NS4wNX0n Ojpqc29uYi0+J2EnKTo6aW50ODsKK3NlbGVjdCAnMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNSc6Ompzb25iOjpudW1lcmljLCAoJ3siYSI6IDEyMzQ1 LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDV9Jzo6anNvbmIt PidhJyk6Om51bWVyaWM7CitzZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpqc29uYjo6ZmxvYXQ0LCAgKCd7ImEiOiAxMjM0NS4wMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1fSc6Ompzb25iLT4nYScp OjpmbG9hdDQ7CitzZWxlY3QgJzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDUnOjpqc29uYjo6ZmxvYXQ4LCAoJ3siYSI6IDEyMzQ1LjAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDV9Jzo6anNvbmItPidhJyk6OmZsb2F0 ODsKK3NlbGVjdCAnMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwNSc6Ompzb25iOjppbnQyLCAoJ3siYSI6IDEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDV9Jzo6anNvbmItPidhJyk6OmludDI7CitzZWxlY3Qg JzEyMzQ1LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUnOjpq c29uYjo6aW50NCwgKCd7ImEiOiAxMjM0NS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDA1fSc6Ompzb25iLT4nYScpOjppbnQ0Oworc2VsZWN0ICcxMjM0NS4wMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1Jzo6anNvbmI6OmludDgs ICgneyJhIjogMTIzNDUuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwNX0nOjpqc29uYi0+J2EnKTo6aW50ODsKLS0gCjIuMjEuMAoK --0000000000008c843e0602edb872--