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 1rKU4j-002sJx-J8 for pgsql-hackers@arkaria.postgresql.org; Tue, 02 Jan 2024 02:00:14 +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 1rKU4h-00DjuD-Jj for pgsql-hackers@arkaria.postgresql.org; Tue, 02 Jan 2024 02:00:11 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rKU4g-00Dju4-Gm for pgsql-hackers@lists.postgresql.org; Tue, 02 Jan 2024 02:00:10 +0000 Received: from mail-oi1-x229.google.com ([2607:f8b0:4864:20::229]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rKU4Q-00F4sB-Mj for pgsql-hackers@lists.postgresql.org; Tue, 02 Jan 2024 02:00:09 +0000 Received: by mail-oi1-x229.google.com with SMTP id 5614622812f47-3bbd6e3795eso3128873b6e.2 for ; Mon, 01 Jan 2024 17:59:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=illuminatedcomputing-com.20230601.gappssmtp.com; s=20230601; t=1704160792; x=1704765592; darn=lists.postgresql.org; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=RA3VqZOwZcl9gjlSaNBHQrHxXclVVnZ/C3pkYn04SV8=; b=RUiqahrVwxCTNMD0yQQyrSthHWRYbMiIGdc0iDdUwiovIxrsqqMULbiAiEfbsTLmLI JtuCwPi6DvD5qYQBA/mUpve+Zl7QuaPv5XGtzo2HhLWtbvMZXXT7dvZqM/PDCmGDaPJg Gc/JkCCPuh954YYfeVOA7Hk9Jqh+aU4eLsftEyZQ1XpockmzlGPYTgi0yT0amfykOxKr 8rlZ2l4LSeU4EkdgdjcJtPpjlGa5o0KJcKDZ37AKa7PQVJg+FoR2DpfQvuVh3anO6TZr JNjFR/SlPLHElLiG78rEmetnqk5WnxNGomBPABUnF1pJypNZk7KEIVEUIim3sRU+Bf0E CmpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704160792; x=1704765592; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=RA3VqZOwZcl9gjlSaNBHQrHxXclVVnZ/C3pkYn04SV8=; b=oaDAfpUGBkaGqKlk5hxxcJnZpHLO00N9/RyfkU4llBMxl5ZdQf7Um9K3aKKqhzI8jC VrDI18AVwt0nPd4DW151U6FQ9O5mMSt+VyVCRKEJrU9t0HOH/vUnP3+CGZmRQcN0as+y /9qzg0LvnQd0JsrM9skEdHKUB5wuBnRnUtJ8fYo7bzMsQgyEpMN5rLCsv47NXKcaM9o5 FEyxQTw5G3N0fKAV0+xIktgqJ2Iza9ZPxmaz0nmB71cW3luBKMuAssKPsc4N1Jyz7SO2 WUhDLXgcrCY6Fhfo40zyQ4y3YSeGf1hgfJKcAYp1br9zKLarqr/cF1C++cND95lsxK71 B4IQ== X-Gm-Message-State: AOJu0YwXp+LsFXZD4yNOqRyGGDOO9odkLfh5oqpOhK9tMDorQsuw/owy 8HjCsxM8wW0oCIdGpkKXkzoO0UVMOkP9Uw== X-Google-Smtp-Source: AGHT+IHPMNdMDd2qPdZd57VkMoBePxnNwYDcTvIpPO2sXofH+5OJ7bu9PL9IRwmqaGdTx9jGfFPdsg== X-Received: by 2002:a05:6808:1381:b0:3bc:1163:9da8 with SMTP id c1-20020a056808138100b003bc11639da8mr1554605oiw.56.1704160791557; Mon, 01 Jan 2024 17:59:51 -0800 (PST) Received: from [192.168.2.139] ([50.53.98.191]) by smtp.googlemail.com with ESMTPSA id k188-20020a633dc5000000b005ce033f3b54sm15826841pga.27.2024.01.01.17.59.48 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 01 Jan 2024 17:59:50 -0800 (PST) Content-Type: multipart/mixed; boundary="------------F56VWTQ0Ck05qER7bvQmfAru" Message-ID: <159ba553-43c7-4557-bf05-74447cc6013b@illuminatedcomputing.com> Date: Mon, 1 Jan 2024 17:59:47 -0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: SQL:2011 application time Content-Language: en-US From: Paul Jungwirth To: Peter Eisentraut , jian he Cc: PostgreSQL Hackers References: <2d9740ad-3bb7-473c-8441-344351caa8ee@illuminatedcomputing.com> <596fefdd-6202-4228-b7c6-f240b1cbe06e@eisentraut.org> <35400587-6865-4a2c-9ea4-4761669478ea@eisentraut.org> <71b45adb-b496-4e58-b134-0a091014e63f@illuminatedcomputing.com> In-Reply-To: <71b45adb-b496-4e58-b134-0a091014e63f@illuminatedcomputing.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------F56VWTQ0Ck05qER7bvQmfAru Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 12/31/23 00:51, Paul Jungwirth wrote: > That's it for now. Here is another update. I fixed FOR PORTION OF on partitioned tables, in particular when the attnums are different from the root partition. Rebased to cea89c93a1. -- Paul ~{:-) pj@illuminatedcomputing.com --------------F56VWTQ0Ck05qER7bvQmfAru Content-Type: text/x-patch; charset=UTF-8; name="v21-0001-Add-stratnum-GiST-support-function.patch" Content-Disposition: attachment; filename="v21-0001-Add-stratnum-GiST-support-function.patch" Content-Transfer-Encoding: base64 RnJvbSA0YzhjYjI5NWE1Nzc5NmJjYzY2OTRkMzdiMGMwYjY4OTVlMmFjODhhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFdlZCwgMTMgRGVjIDIwMjMgMjE6MTc6NTMgLTA4 MDAKU3ViamVjdDogW1BBVENIIHYyMSAxLzhdIEFkZCBzdHJhdG51bSBHaVNUIHN1cHBvcnQg ZnVuY3Rpb24KClRoaXMgaXMgc3VwcG9ydCBmdW5jdGlvbiAxMiBmb3IgdGhlIEdpU1QgQU0g YW5kIHRyYW5zbGF0ZXMgIndlbGwta25vd24iClJUKlN0cmF0ZWd5TnVtYmVyIHZhbHVlcyBp bnRvIHdoYXRldmVyIHN0cmF0ZWd5IG51bWJlciBpcyB1c2VkIGJ5IHRoZQpvcGNsYXNzIChz aW5jZSBubyBwYXJ0aWN1bGFyIG51bWJlcnMgYXJlIGFjdHVhbGx5IHJlcXVpcmVkKS4gV2Ug d2lsbCB1c2UKdGhpcyB0byBzdXBwb3J0IHRlbXBvcmFsIFBSSU1BUlkgS0VZL1VOSVFVRS9G T1JFSUdOIEtFWS9GT1IgUE9SVElPTiBPRgpmdW5jdGlvbmFsaXR5LgoKVGhpcyBjb21taXQg YWRkcyB0d28gaW1wbGVtZW50YXRpb25zLCBvbmUgZm9yIGludGVybmFsIEdpU1Qgb3BjbGFz c2VzCihqdXN0IGFuIGlkZW50aXR5IGZ1bmN0aW9uKSBhbmQgYW5vdGhlciBmb3IgYnRyZWVf Z2lzdCBvcGNsYXNzZXMuIEl0CnVwZGF0ZXMgYnRyZWVfZ2lzdCBmcm9tIDEuNyB0byAxLjgs IGFkZGluZyB0aGUgc3VwcG9ydCBmdW5jdGlvbiBmb3IgYWxsCml0cyBvcGNsYXNzZXMuCi0t LQogY29udHJpYi9idHJlZV9naXN0L01ha2VmaWxlICAgICAgICAgICAgICAgICAgfCAgMyAr LQogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuNy0tMS44LnNxbCAgfCA4NyAr KysrKysrKysrKysrKysrKysrKwogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QuY29u dHJvbCAgICAgICAgfCAgMiArLQogZG9jL3NyYy9zZ21sL2dpc3Quc2dtbCAgICAgICAgICAg ICAgICAgICAgICAgfCA2NiArKysrKysrKysrKysrKy0KIGRvYy9zcmMvc2dtbC94aW5kZXgu c2dtbCAgICAgICAgICAgICAgICAgICAgIHwgIDggKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9n aXN0L2dpc3R1dGlsLmMgICAgICAgICAgIHwgNDIgKysrKysrKysrKwogc3JjL2JhY2tlbmQv YWNjZXNzL2dpc3QvZ2lzdHZhbGlkYXRlLmMgICAgICAgfCAgOCArLQogc3JjL2luY2x1ZGUv YWNjZXNzL2dpc3QuaCAgICAgICAgICAgICAgICAgICAgfCAgMyArLQogc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19hbXByb2MuZGF0ICAgICAgICAgICAgfCAxOCArKysrCiBzcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICB8IDEwICsrKwogc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9taXNjX2Z1bmN0aW9ucy5vdXQgfCAyNSArKysrKysKIHNyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL21pc2NfZnVuY3Rpb25zLnNxbCAgICAgIHwgIDYgKysKIDEyIGZp bGVzIGNoYW5nZWQsIDI3MiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IGNvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0LS0xLjctLTEuOC5z cWwKCmRpZmYgLS1naXQgYS9jb250cmliL2J0cmVlX2dpc3QvTWFrZWZpbGUgYi9jb250cmli L2J0cmVlX2dpc3QvTWFrZWZpbGUKaW5kZXggMDczZGNjNzQ1Yy4uZmExYjk4N2IzOSAxMDA2 NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L01ha2VmaWxlCisrKyBiL2NvbnRyaWIvYnRy ZWVfZ2lzdC9NYWtlZmlsZQpAQCAtMzMsNyArMzMsOCBAQCBFWFRFTlNJT04gPSBidHJlZV9n aXN0CiBEQVRBID0gYnRyZWVfZ2lzdC0tMS4wLS0xLjEuc3FsIFwKICAgICAgICBidHJlZV9n aXN0LS0xLjEtLTEuMi5zcWwgYnRyZWVfZ2lzdC0tMS4yLnNxbCBidHJlZV9naXN0LS0xLjIt LTEuMy5zcWwgXAogICAgICAgIGJ0cmVlX2dpc3QtLTEuMy0tMS40LnNxbCBidHJlZV9naXN0 LS0xLjQtLTEuNS5zcWwgXAotICAgICAgIGJ0cmVlX2dpc3QtLTEuNS0tMS42LnNxbCBidHJl ZV9naXN0LS0xLjYtLTEuNy5zcWwKKyAgICAgICBidHJlZV9naXN0LS0xLjUtLTEuNi5zcWwg YnRyZWVfZ2lzdC0tMS42LS0xLjcuc3FsIFwKKwkJCSBidHJlZV9naXN0LS0xLjctLTEuOC5z cWwKIFBHRklMRURFU0MgPSAiYnRyZWVfZ2lzdCAtIEItdHJlZSBlcXVpdmFsZW50IEdpU1Qg b3BlcmF0b3IgY2xhc3NlcyIKIAogUkVHUkVTUyA9IGluaXQgaW50MiBpbnQ0IGludDggZmxv YXQ0IGZsb2F0OCBjYXNoIG9pZCB0aW1lc3RhbXAgdGltZXN0YW1wdHogXApkaWZmIC0tZ2l0 IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuNy0tMS44LnNxbCBiL2NvbnRy aWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0LS0xLjctLTEuOC5zcWwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMTJjMmU2YzE0YgotLS0gL2Rldi9udWxsCisrKyBi L2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0LS0xLjctLTEuOC5zcWwKQEAgLTAsMCAr MSw4NyBAQAorLyogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuNy0tMS44LnNx bCAqLworCistLSBjb21wbGFpbiBpZiBzY3JpcHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRo ZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVOU0lPTgorXGVjaG8gVXNlICJBTFRFUiBFWFRFTlNJ T04gYnRyZWVfZ2lzdCBVUERBVEUgVE8gJzEuOCciIHRvIGxvYWQgdGhpcyBmaWxlLiBccXVp dAorCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9vaWRfb3BzIFVTSU5HIGdpc3QgQURE CisJRlVOQ1RJT04gIDEyIChvaWQsIG9pZCkgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50Mikg OworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9pbnQyX29wcyBVU0lORyBnaXN0IEFE RAorCUZVTkNUSU9OICAxMiAoaW50MiwgaW50MikgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50 MikgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9pbnQ0X29wcyBVU0lORyBnaXN0 IEFERAorCUZVTkNUSU9OICAxMiAoaW50NCwgaW50NCkgZ2lzdF9zdHJhdG51bV9idHJlZSAo aW50MikgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9pbnQ4X29wcyBVU0lORyBn aXN0IEFERAorCUZVTkNUSU9OICAxMiAoaW50OCwgaW50OCkgZ2lzdF9zdHJhdG51bV9idHJl ZSAoaW50MikgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9mbG9hdDRfb3BzIFVT SU5HIGdpc3QgQURECisJRlVOQ1RJT04gIDEyIChmbG9hdDQsIGZsb2F0NCkgZ2lzdF9zdHJh dG51bV9idHJlZSAoaW50MikgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9mbG9h dDhfb3BzIFVTSU5HIGdpc3QgQURECisJRlVOQ1RJT04gIDEyIChmbG9hdDgsIGZsb2F0OCkg Z2lzdF9zdHJhdG51bV9idHJlZSAoaW50MikgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkg Z2lzdF90aW1lc3RhbXBfb3BzIFVTSU5HIGdpc3QgQURECisJRlVOQ1RJT04gIDEyICh0aW1l c3RhbXAsIHRpbWVzdGFtcCkgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50MikgOworCitBTFRF UiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF90aW1lc3RhbXB0el9vcHMgVVNJTkcgZ2lzdCBBREQK KwlGVU5DVElPTiAgMTIgKHRpbWVzdGFtcHR6LCB0aW1lc3RhbXB0eikgZ2lzdF9zdHJhdG51 bV9idHJlZSAoaW50MikgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF90aW1lX29w cyBVU0lORyBnaXN0IEFERAorCUZVTkNUSU9OICAxMiAodGltZSwgdGltZSkgZ2lzdF9zdHJh dG51bV9idHJlZSAoaW50MikgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9kYXRl X29wcyBVU0lORyBnaXN0IEFERAorCUZVTkNUSU9OICAxMiAoZGF0ZSwgZGF0ZSkgZ2lzdF9z dHJhdG51bV9idHJlZSAoaW50MikgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9p bnRlcnZhbF9vcHMgVVNJTkcgZ2lzdCBBREQKKwlGVU5DVElPTiAgMTIgKGludGVydmFsLCBp bnRlcnZhbCkgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50MikgOworCitBTFRFUiBPUEVSQVRP UiBGQU1JTFkgZ2lzdF9jYXNoX29wcyBVU0lORyBnaXN0IEFERAorCUZVTkNUSU9OICAxMiAo bW9uZXksIG1vbmV5KSBnaXN0X3N0cmF0bnVtX2J0cmVlIChpbnQyKSA7CisKK0FMVEVSIE9Q RVJBVE9SIEZBTUlMWSBnaXN0X21hY2FkZHJfb3BzIFVTSU5HIGdpc3QgQURECisJRlVOQ1RJ T04gIDEyIChtYWNhZGRyLCBtYWNhZGRyKSBnaXN0X3N0cmF0bnVtX2J0cmVlIChpbnQyKSA7 CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X3RleHRfb3BzIFVTSU5HIGdpc3QgQURE CisJRlVOQ1RJT04gIDEyICh0ZXh0LCB0ZXh0KSBnaXN0X3N0cmF0bnVtX2J0cmVlIChpbnQy KSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X2JwY2hhcl9vcHMgVVNJTkcgZ2lz dCBBREQKKwlGVU5DVElPTiAgMTIgKGJwY2hhciwgYnBjaGFyKSBnaXN0X3N0cmF0bnVtX2J0 cmVlIChpbnQyKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X2J5dGVhX29wcyBV U0lORyBnaXN0IEFERAorCUZVTkNUSU9OICAxMiAoYnl0ZWEsIGJ5dGVhKSBnaXN0X3N0cmF0 bnVtX2J0cmVlIChpbnQyKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X251bWVy aWNfb3BzIFVTSU5HIGdpc3QgQURECisJRlVOQ1RJT04gIDEyIChudW1lcmljLCBudW1lcmlj KSBnaXN0X3N0cmF0bnVtX2J0cmVlIChpbnQyKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlM WSBnaXN0X2JpdF9vcHMgVVNJTkcgZ2lzdCBBREQKKwlGVU5DVElPTiAgMTIgKGJpdCwgYml0 KSBnaXN0X3N0cmF0bnVtX2J0cmVlIChpbnQyKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlM WSBnaXN0X3ZiaXRfb3BzIFVTSU5HIGdpc3QgQURECisJRlVOQ1RJT04gIDEyICh2YXJiaXQs IHZhcmJpdCkgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50MikgOworCitBTFRFUiBPUEVSQVRP UiBGQU1JTFkgZ2lzdF9pbmV0X29wcyBVU0lORyBnaXN0IEFERAorCUZVTkNUSU9OICAxMiAo aW5ldCwgaW5ldCkgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50MikgOworCitBTFRFUiBPUEVS QVRPUiBGQU1JTFkgZ2lzdF9jaWRyX29wcyBVU0lORyBnaXN0IEFERAorCUZVTkNUSU9OICAx MiAoY2lkciwgY2lkcikgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50MikgOworCistLSBhZGRl ZCBpbiAxLjI6CitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF90aW1ldHpfb3BzIFVTSU5H IGdpc3QgQURECisJRlVOQ1RJT04gIDEyICh0aW1ldHosIHRpbWV0eikgZ2lzdF9zdHJhdG51 bV9idHJlZSAoaW50MikgOworCistLSBhZGRlZCBpbiAxLjM6CitBTFRFUiBPUEVSQVRPUiBG QU1JTFkgZ2lzdF91dWlkX29wcyBVU0lORyBnaXN0IEFERAorCUZVTkNUSU9OICAxMiAodXVp ZCwgdXVpZCkgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50MikgOworCistLSBhZGRlZCBpbiAx LjQ6CitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9tYWNhZGRyOF9vcHMgVVNJTkcgZ2lz dCBBREQKKwlGVU5DVElPTiAgMTIgKG1hY2FkZHI4LCBtYWNhZGRyOCkgZ2lzdF9zdHJhdG51 bV9idHJlZSAoaW50MikgOworCistLSBhZGRlZCBpbiAxLjU6CitBTFRFUiBPUEVSQVRPUiBG QU1JTFkgZ2lzdF9lbnVtX29wcyBVU0lORyBnaXN0IEFERAorCUZVTkNUSU9OICAxMiAoYW55 ZW51bSwgYW55ZW51bSkgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50MikgOworCistLSBhZGRl ZCBpbiAxLjc6CitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9ib29sX29wcyBVU0lORyBn aXN0IEFERAorCUZVTkNUSU9OICAxMiAoYm9vbCwgYm9vbCkgZ2lzdF9zdHJhdG51bV9idHJl ZSAoaW50MikgOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3Qu Y29udHJvbCBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0LmNvbnRyb2wKaW5kZXgg ZmE5MTcxYTgwYS4uYWJmNjY1MzhmMyAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0 L2J0cmVlX2dpc3QuY29udHJvbAorKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lz dC5jb250cm9sCkBAIC0xLDYgKzEsNiBAQAogIyBidHJlZV9naXN0IGV4dGVuc2lvbgogY29t bWVudCA9ICdzdXBwb3J0IGZvciBpbmRleGluZyBjb21tb24gZGF0YXR5cGVzIGluIEdpU1Qn Ci1kZWZhdWx0X3ZlcnNpb24gPSAnMS43JworZGVmYXVsdF92ZXJzaW9uID0gJzEuOCcKIG1v ZHVsZV9wYXRobmFtZSA9ICckbGliZGlyL2J0cmVlX2dpc3QnCiByZWxvY2F0YWJsZSA9IHRy dWUKIHRydXN0ZWQgPSB0cnVlCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZ2lzdC5zZ21s IGIvZG9jL3NyYy9zZ21sL2dpc3Quc2dtbAppbmRleCA5YWM2YjAzZTZlLi5iYWEyNmM2NWNj IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZ2lzdC5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9naXN0LnNnbWwKQEAgLTI3Miw3ICsyNzIsNyBAQCBDUkVBVEUgSU5ERVggT04gbXlfdGFi bGUgVVNJTkcgR0lTVCAobXlfaW5ldF9jb2x1bW4gaW5ldF9vcHMpOwogCiAgPHBhcmE+CiAg ICBUaGVyZSBhcmUgZml2ZSBtZXRob2RzIHRoYXQgYW4gaW5kZXggb3BlcmF0b3IgY2xhc3Mg Zm9yCi0gICA8YWNyb255bT5HaVNUPC9hY3JvbnltPiBtdXN0IHByb3ZpZGUsIGFuZCBzaXgg dGhhdCBhcmUgb3B0aW9uYWwuCisgICA8YWNyb255bT5HaVNUPC9hY3JvbnltPiBtdXN0IHBy b3ZpZGUsIGFuZCBzZXZlbiB0aGF0IGFyZSBvcHRpb25hbC4KICAgIENvcnJlY3RuZXNzIG9m IHRoZSBpbmRleCBpcyBlbnN1cmVkCiAgICBieSBwcm9wZXIgaW1wbGVtZW50YXRpb24gb2Yg dGhlIDxmdW5jdGlvbj5zYW1lPC9mdW5jdGlvbj4sIDxmdW5jdGlvbj5jb25zaXN0ZW50PC9m dW5jdGlvbj4KICAgIGFuZCA8ZnVuY3Rpb24+dW5pb248L2Z1bmN0aW9uPiBtZXRob2RzLCB3 aGlsZSBlZmZpY2llbmN5IChzaXplIGFuZCBzcGVlZCkgb2YgdGhlCkBAIC0yOTUsNiArMjk1 LDEwIEBAIENSRUFURSBJTkRFWCBPTiBteV90YWJsZSBVU0lORyBHSVNUIChteV9pbmV0X2Nv bHVtbiBpbmV0X29wcyk7CiAgICB1c2VyLXNwZWNpZmllZCBwYXJhbWV0ZXJzLgogICAgVGhl IG9wdGlvbmFsIGVsZXZlbnRoIG1ldGhvZCA8ZnVuY3Rpb24+c29ydHN1cHBvcnQ8L2Z1bmN0 aW9uPiBpcyB1c2VkIHRvCiAgICBzcGVlZCB1cCBidWlsZGluZyBhIDxhY3JvbnltPkdpU1Q8 L2Fjcm9ueW0+IGluZGV4LgorICAgVGhlIG9wdGlvbmFsIHR3ZWxmdGggbWV0aG9kIDxmdW5j dGlvbj5zdHJhdG51bTwvZnVuY3Rpb24+IGlzIHVzZWQgdG8gdHJhbnNsYXRlCisgICB3ZWxs LWtub3duIDxsaXRlcmFsPlJUKlN0cmF0ZWd5TnVtYmVyczwvbGl0ZXJhbD4gKGZyb20KKyAg IDxmaWxlbmFtZT5zcmMvaW5jbHVkZS9hY2Nlc3Mvc3RyYXRudW0uaDwvZmlsZW5hbWU+KSBp bnRvIHN0cmF0ZWd5IG51bWJlcnMKKyAgIHVzZWQgYnkgdGhlIG9wY2xhc3MuCiAgPC9wYXJh PgogCiAgPHZhcmlhYmxlbGlzdD4KQEAgLTExNjksNiArMTE3Myw2NiBAQCBteV9zb3J0c3Vw cG9ydChQR19GVU5DVElPTl9BUkdTKQogICAgICAgPC9wYXJhPgogICAgICA8L2xpc3RpdGVt PgogICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDx2YXJsaXN0ZW50cnk+CisgICAgIDx0ZXJt PjxmdW5jdGlvbj5zdHJhdG51bTwvZnVuY3Rpb24+PC90ZXJtPgorICAgICA8bGlzdGl0ZW0+ CisgICAgICA8cGFyYT4KKyAgICAgICBHaXZlbiBhbiA8bGl0ZXJhbD5SVCpTdHJhdGVneU51 bWJlcjwvbGl0ZXJhbD4gdmFsdWUgZnJvbQorICAgICAgIDxmaWxlbmFtZT5zcmMvaW5jbHVk ZS9hY2Nlc3Mvc3RyYXRudW0uaDwvZmlsZW5hbWU+LAorICAgICAgIHJldHVybnMgYSBzdHJh dGVneSBudW1iZXIgdXNlZCBieSB0aGlzIG9wY2xhc3MgZm9yIG1hdGNoaW5nIGZ1bmN0aW9u YWxpdHkuCisgICAgICAgVGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gPGxpdGVyYWw+SW52 YWxpZFN0cmF0ZWd5PC9saXRlcmFsPgorICAgICAgIGlmIHRoZSBvcGNsYXNzIGhhcyBubyBt YXRjaGluZyBzdHJhdGVneSwKKyAgICAgICBvciBhdCBsZWFzdCBhIHN0cmF0ZWd5IG51bWJl ciB0aGF0IGlzbid0IHVzZWQgYnkgdGhpcyBvcGNsYXNzLgorICAgICAgPC9wYXJhPgorCisg ICAgICA8cGFyYT4KKyAgICAgICBUaGUgPGFjcm9ueW0+U1FMPC9hY3JvbnltPiBkZWNsYXJh dGlvbiBvZiB0aGUgZnVuY3Rpb24gbXVzdCBsb29rIGxpa2UKKyAgICAgICB0aGlzOgorCis8 cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBteV9zdHJhdG51 bShpbnRlZ2VyKQorUkVUVVJOUyBpbnRlZ2VyCitBUyAnTU9EVUxFX1BBVEhOQU1FJworTEFO R1VBR0UgQyBTVFJJQ1Q7Cis8L3Byb2dyYW1saXN0aW5nPgorICAgICAgPC9wYXJhPgorCisg ICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBtYXRjaGluZyBjb2RlIGluIHRoZSBDIG1vZHVs ZSBjb3VsZCB0aGVuIGZvbGxvdyB0aGlzIHNrZWxldG9uOgorCis8cHJvZ3JhbWxpc3Rpbmc+ CitQR19GVU5DVElPTl9JTkZPX1YxKG15X3N0cmF0bnVtKTsKKworRGF0dW0KK215X3N0cmF0 bnVtKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisgICAgU3RyYXRlZ3lOdW1iZXIgc3RyYXRlZ3kg PSAoU3RyYXRlZ3lOdW1iZXIpIFBHX0dFVEFSR19VSU5UMTYoMSk7CisgICAgU3RyYXRlZ3lO dW1iZXIgcmV0ID0gSW52YWxpZFN0cmF0ZWd5OworCisgICAgc3dpdGNoIChzdHJhdGVneSkK KyAgICB7CisgICAgICAgIGNhc2UgUlRFcXVhbFN0cmF0ZWd5TnVtYmVyOgorICAgICAgICAg ICAgcmV0ID0gQlRFcXVhbFN0cmF0ZWd5TnVtYmVyOworICAgIH0KKworICAgIFBHX1JFVFVS Tl9VSU5UMTYocmV0KTsKK30KKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICA8L3BhcmE+CisK KyAgICAgIDxwYXJhPgorICAgICAgIFR3byB0cmFuc2xhdGlvbiBmdW5jdGlvbnMgYXJlIHBy b3ZpZGVkIGJ5IFBvc3RncmVzOgorICAgICAgIDxsaXRlcmFsPmdpc3Rfc3RyYXRudW1faWRl bnRpdHk8L2xpdGVyYWw+IGlzIGZvciBvcGNsYXNzZXMgdGhhdAorICAgICAgIGFscmVhZHkg dXNlIHRoZSA8bGl0ZXJhbD5SVCpTdHJhdGVneU51bWJlcjwvbGl0ZXJhbD4gY29uc3RhbnRz LgorICAgICAgIEl0IHJldHVybnMgd2hhdGV2ZXIgaXMgcGFzc2VkIHRvIGl0LgorICAgICAg IDxsaXRlcmFsPmdpc3Rfc3RyYXRudW1fYnRyZWU8L2xpdGVyYWw+IGlzIGZvciBvcGNsYXNz ZXMgdGhhdAorICAgICAgIHVzZSB0aGUgPGxpdGVyYWw+QlQqU3RyYXRlZ3lOdW1iZXI8L2xp dGVyYWw+IGNvbnN0YW50cworICAgICAgIChsaWtlIHRob3NlIGluIDxsaXRlcmFsPmJ0cmVl X2dpc3Q8L2xpdGVyYWw+KS4KKyAgICAgICBJdCByZXR1cm5zIDxsaXRlcmFsPkJURXF1YWxT dHJhdGVneU51bWJlcjwvbGl0ZXJhbD4gZm9yIGVxdWFscywKKyAgICAgICBhbmQgPGxpdGVy YWw+SW52YWxpZFN0cmF0ZWd5PC9saXRlcmFsPiBmb3IgZXZlcnl0aGluZyBlbHNlLgorICAg ICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5PgogICA8 L3ZhcmlhYmxlbGlzdD4KIAogICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC94 aW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC94aW5kZXguc2dtbAppbmRleCAyMmQ4YWQxYWFj Li44YzRlZGUzMTA1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwveGluZGV4LnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL3hpbmRleC5zZ21sCkBAIC01MDgsNyArNTA4LDcgQEAKICAgIDwv dGFibGU+CiAKICAgPHBhcmE+Ci0gICBHaVNUIGluZGV4ZXMgaGF2ZSBlbGV2ZW4gc3VwcG9y dCBmdW5jdGlvbnMsIHNpeCBvZiB3aGljaCBhcmUgb3B0aW9uYWwsCisgICBHaVNUIGluZGV4 ZXMgaGF2ZSB0d2VsdmUgc3VwcG9ydCBmdW5jdGlvbnMsIHNldmVuIG9mIHdoaWNoIGFyZSBv cHRpb25hbCwKICAgIGFzIHNob3duIGluIDx4cmVmIGxpbmtlbmQ9InhpbmRleC1naXN0LXN1 cHBvcnQtdGFibGUiLz4uCiAgICAoRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIDx4cmVmIGxp bmtlbmQ9Imdpc3QiLz4uKQogICA8L3BhcmE+CkBAIC01OTAsNiArNTkwLDEyIEBACiAgICAg ICAgIChvcHRpb25hbCk8L2VudHJ5PgogICAgICAgIDxlbnRyeT4xMTwvZW50cnk+CiAgICAg ICA8L3Jvdz4KKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5PjxmdW5jdGlvbj5zdHJhdG51 bTwvZnVuY3Rpb24+PC9lbnRyeT4KKyAgICAgICA8ZW50cnk+dHJhbnNsYXRlIHdlbGwta25v d24gc3RyYXRlZ3kgbnVtYmVycyB0byBvbmVzCisgICAgICAgIHVzZWQgYnkgdGhlIG9wY2xh c3MgKG9wdGlvbmFsKTwvZW50cnk+CisgICAgICAgPGVudHJ5PjEyPC9lbnRyeT4KKyAgICAg IDwvcm93PgogICAgICA8L3Rib2R5PgogICAgIDwvdGdyb3VwPgogICAgPC90YWJsZT4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGlsLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvZ2lzdC9naXN0dXRpbC5jCmluZGV4IDljZTM2ODdkYmYuLmZiOGM2MjY0 NDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGlsLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYwpAQCAtMjMsNiArMjMsNyBA QAogI2luY2x1ZGUgInN0b3JhZ2UvaW5kZXhmc20uaCIKICNpbmNsdWRlICJzdG9yYWdlL2xt Z3IuaCIKICNpbmNsdWRlICJ1dGlscy9mbG9hdC5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3Jw cm90b3MuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGls cy9zbmFwbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKQEAgLTEwNTYsMyAr MTA1Nyw0NCBAQCBnaXN0R2V0RmFrZUxTTihSZWxhdGlvbiByZWwpCiAJCXJldHVybiBHZXRG YWtlTFNORm9yVW5sb2dnZWRSZWwoKTsKIAl9CiB9CisKKy8qCisgKiBSZXR1cm5zIHRoZSBz YW1lIG51bWJlciB0aGF0IHdhcyByZWNlaXZlZC4KKyAqCisgKiBUaGlzIGlzIGZvciBHaVNU IG9wY2xhc3NlcyB0aGF0IHVzZSB0aGUgUlQqU3RyYXRlZ3lOdW1iZXIgY29uc3RhbnRzLgor ICovCitEYXR1bQorZ2lzdF9zdHJhdG51bV9pZGVudGl0eShQR19GVU5DVElPTl9BUkdTKQor eworCVN0cmF0ZWd5TnVtYmVyIHN0cmF0ID0gUEdfR0VUQVJHX1VJTlQxNigwKTsKKworCVBH X1JFVFVSTl9VSU5UMTYoc3RyYXQpOworfQorCisvKgorICogUmV0dXJucyB0aGUgYnRyZWUg bnVtYmVyIGZvciBlcXVhbHMsIG90aGVyd2lzZSBpbnZhbGlkLgorICoKKyAqIFRoaXMgaXMg Zm9yIEdpU1Qgb3BjbGFzc2VzIGluIGJ0cmVlX2dpc3QgKGFuZCBtYXliZSBlbHNld2hlcmUp CisgKiB0aGF0IHVzZSB0aGUgQlQqU3RyYXRlZ3lOdW1iZXIgY29uc3RhbnRzLgorICovCitE YXR1bQorZ2lzdF9zdHJhdG51bV9idHJlZShQR19GVU5DVElPTl9BUkdTKQoreworCVN0cmF0 ZWd5TnVtYmVyIHN0cmF0ID0gUEdfR0VUQVJHX1VJTlQxNigwKTsKKworCXN3aXRjaCAoc3Ry YXQpCisJeworCQljYXNlIFJURXF1YWxTdHJhdGVneU51bWJlcjoKKwkJCVBHX1JFVFVSTl9V SU5UMTYoQlRFcXVhbFN0cmF0ZWd5TnVtYmVyKTsKKwkJY2FzZSBSVExlc3NTdHJhdGVneU51 bWJlcjoKKwkJCVBHX1JFVFVSTl9VSU5UMTYoQlRMZXNzU3RyYXRlZ3lOdW1iZXIpOworCQlj YXNlIFJUTGVzc0VxdWFsU3RyYXRlZ3lOdW1iZXI6CisJCQlQR19SRVRVUk5fVUlOVDE2KEJU TGVzc0VxdWFsU3RyYXRlZ3lOdW1iZXIpOworCQljYXNlIFJUR3JlYXRlclN0cmF0ZWd5TnVt YmVyOgorCQkJUEdfUkVUVVJOX1VJTlQxNihCVEdyZWF0ZXJTdHJhdGVneU51bWJlcik7CisJ CWNhc2UgUlRHcmVhdGVyRXF1YWxTdHJhdGVneU51bWJlcjoKKwkJCVBHX1JFVFVSTl9VSU5U MTYoQlRHcmVhdGVyRXF1YWxTdHJhdGVneU51bWJlcik7CisJCWRlZmF1bHQ6CisJCQlQR19S RVRVUk5fVUlOVDE2KEludmFsaWRTdHJhdGVneSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHZhbGlkYXRlLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0dmFsaWRhdGUuYwppbmRleCA0YzcxMWVjZmE4Li40ZDFiMmM0NDAwIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dmFsaWRhdGUuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dmFsaWRhdGUuYwpAQCAtMTQ3LDYgKzE0 NywxMCBAQCBnaXN0dmFsaWRhdGUoT2lkIG9wY2xhc3NvaWQpCiAJCQkJb2sgPSBjaGVja19h bXByb2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5hbXByb2MsIFZPSURPSUQsIHRydWUsCiAJCQkJ CQkJCQkJCTEsIDEsIElOVEVSTkFMT0lEKTsKIAkJCQlicmVhazsKKwkJCWNhc2UgR0lTVF9T VFJBVE5VTV9QUk9DOgorCQkJCW9rID0gY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9y bS0+YW1wcm9jLCBJTlQyT0lELCB0cnVlLAorCQkJCQkJCQkJCQkxLCAxLCBJTlQyT0lEKTsK KwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJZXJlcG9ydChJTkZPLAogCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKQEAgLTI2Nyw3ICsy NzEsOCBAQCBnaXN0dmFsaWRhdGUoT2lkIG9wY2xhc3NvaWQpCiAJCQljb250aW51ZTsJCQkv KiBnb3QgaXQgKi8KIAkJaWYgKGkgPT0gR0lTVF9ESVNUQU5DRV9QUk9DIHx8IGkgPT0gR0lT VF9GRVRDSF9QUk9DIHx8CiAJCQlpID09IEdJU1RfQ09NUFJFU1NfUFJPQyB8fCBpID09IEdJ U1RfREVDT01QUkVTU19QUk9DIHx8Ci0JCQlpID09IEdJU1RfT1BUSU9OU19QUk9DIHx8IGkg PT0gR0lTVF9TT1JUU1VQUE9SVF9QUk9DKQorCQkJaSA9PSBHSVNUX09QVElPTlNfUFJPQyB8 fCBpID09IEdJU1RfU09SVFNVUFBPUlRfUFJPQyB8fAorCQkJaSA9PSBHSVNUX1NUUkFUTlVN X1BST0MpCiAJCQljb250aW51ZTsJCQkvKiBvcHRpb25hbCBtZXRob2RzICovCiAJCWVyZXBv cnQoSU5GTywKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJ T04pLApAQCAtMzM5LDYgKzM0NCw3IEBAIGdpc3RhZGp1c3RtZW1iZXJzKE9pZCBvcGZhbWls eW9pZCwKIAkJCWNhc2UgR0lTVF9GRVRDSF9QUk9DOgogCQkJY2FzZSBHSVNUX09QVElPTlNf UFJPQzoKIAkJCWNhc2UgR0lTVF9TT1JUU1VQUE9SVF9QUk9DOgorCQkJY2FzZSBHSVNUX1NU UkFUTlVNX1BST0M6CiAJCQkJLyogT3B0aW9uYWwsIHNvIGZvcmNlIGl0IHRvIGJlIGEgc29m dCBmYW1pbHkgZGVwZW5kZW5jeSAqLwogCQkJCW9wLT5yZWZfaXNfaGFyZCA9IGZhbHNlOwog CQkJCW9wLT5yZWZfaXNfZmFtaWx5ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9naXN0LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdC5oCmluZGV4IDAyMzU3 MTZjMDYuLjE4MTYzNTJiOTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0 LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3QuaApAQCAtMzgsNyArMzgsOCBAQAog I2RlZmluZSBHSVNUX0ZFVENIX1BST0MJCQkJCTkKICNkZWZpbmUgR0lTVF9PUFRJT05TX1BS T0MJCQkJMTAKICNkZWZpbmUgR0lTVF9TT1JUU1VQUE9SVF9QUk9DCQkJMTEKLSNkZWZpbmUg R0lTVE5Qcm9jcwkJCQkJMTEKKyNkZWZpbmUgR0lTVF9TVFJBVE5VTV9QUk9DCQkJCTEyCisj ZGVmaW5lIEdJU1ROUHJvY3MJCQkJCTEyCiAKIC8qCiAgKiBQYWdlIG9wYXF1ZSBkYXRhIGlu IGEgR2lTVCBpbmRleCBwYWdlLgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19hbXByb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0CmluZGV4 IDRjNzBkYTQxZGUuLjg1ZDNiODc2YWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfYW1wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5k YXQKQEAgLTUwNyw2ICs1MDcsOSBAQAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2JveCcsIGFt cHJvY251bSA9PiAnNycsIGFtcHJvYyA9PiAnZ2lzdF9ib3hfc2FtZScgfSwKIHsgYW1wcm9j ZmFtaWx5ID0+ICdnaXN0L2JveF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYm94JywKICAg YW1wcm9jcmlnaHR0eXBlID0+ICdib3gnLCBhbXByb2NudW0gPT4gJzgnLCBhbXByb2MgPT4g J2dpc3RfYm94X2Rpc3RhbmNlJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2dpc3QvYm94X29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICdib3gnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2Jv eCcsIGFtcHJvY251bSA9PiAnMTInLAorICBhbXByb2MgPT4gJ2dpc3Rfc3RyYXRudW1faWRl bnRpdHknIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9wb2x5X29wcycsIGFtcHJvY2xl ZnR0eXBlID0+ICdwb2x5Z29uJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdwb2x5Z29uJywg YW1wcm9jbnVtID0+ICcxJywKICAgYW1wcm9jID0+ICdnaXN0X3BvbHlfY29uc2lzdGVudCcg fSwKQEAgLTUyNiw2ICs1MjksOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2dpc3QvcG9seV9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAncG9seWdvbicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9 PiAncG9seWdvbicsIGFtcHJvY251bSA9PiAnOCcsCiAgIGFtcHJvYyA9PiAnZ2lzdF9wb2x5 X2Rpc3RhbmNlJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2dpc3QvcG9seV9vcHMnLCBhbXBy b2NsZWZ0dHlwZSA9PiAncG9seWdvbicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAncG9seWdv bicsIGFtcHJvY251bSA9PiAnMTInLAorICBhbXByb2MgPT4gJ2dpc3Rfc3RyYXRudW1faWRl bnRpdHknIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9jaXJjbGVfb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ2NpcmNsZScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnY2lyY2xlJywg YW1wcm9jbnVtID0+ICcxJywKICAgYW1wcm9jID0+ICdnaXN0X2NpcmNsZV9jb25zaXN0ZW50 JyB9LApAQCAtNTQ0LDYgKzU1MCw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9jaXJj bGVfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2NpcmNsZScsCiAgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAnY2lyY2xlJywgYW1wcm9jbnVtID0+ICc4JywKICAgYW1wcm9jID0+ICdnaXN0X2Np cmNsZV9kaXN0YW5jZScgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L2NpcmNsZV9vcHMn LCBhbXByb2NsZWZ0dHlwZSA9PiAnY2lyY2xlJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdj aXJjbGUnLCBhbXByb2NudW0gPT4gJzEyJywKKyAgYW1wcm9jID0+ICdnaXN0X3N0cmF0bnVt X2lkZW50aXR5JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2dpc3QvdHN2ZWN0b3Jfb3BzJywg YW1wcm9jbGVmdHR5cGUgPT4gJ3RzdmVjdG9yJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0 c3ZlY3RvcicsIGFtcHJvY251bSA9PiAnMScsCiAgIGFtcHJvYyA9PiAnZ3RzdmVjdG9yX2Nv bnNpc3RlbnQoaW50ZXJuYWwsdHN2ZWN0b3IsaW50MixvaWQsaW50ZXJuYWwpJyB9LApAQCAt NTk4LDYgKzYwNyw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9yYW5nZV9vcHMnLCBh bXByb2NsZWZ0dHlwZSA9PiAnYW55cmFuZ2UnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2Fu eXJhbmdlJywgYW1wcm9jbnVtID0+ICc3JywKICAgYW1wcm9jID0+ICdyYW5nZV9naXN0X3Nh bWUnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9yYW5nZV9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAnYW55cmFuZ2UnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2FueXJhbmdlJywg YW1wcm9jbnVtID0+ICcxMicsCisgIGFtcHJvYyA9PiAnZ2lzdF9zdHJhdG51bV9pZGVudGl0 eScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L25ldHdvcmtfb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ2luZXQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2luZXQnLCBhbXByb2Nu dW0gPT4gJzEnLAogICBhbXByb2MgPT4gJ2luZXRfZ2lzdF9jb25zaXN0ZW50JyB9LApAQCAt NjE0LDYgKzYyNiw5IEBACiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW5ldCcsIGFtcHJvY251 bSA9PiAnNycsIGFtcHJvYyA9PiAnaW5ldF9naXN0X3NhbWUnIH0sCiB7IGFtcHJvY2ZhbWls eSA9PiAnZ2lzdC9uZXR3b3JrX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbmV0JywKICAg YW1wcm9jcmlnaHR0eXBlID0+ICdpbmV0JywgYW1wcm9jbnVtID0+ICc5JywgYW1wcm9jID0+ ICdpbmV0X2dpc3RfZmV0Y2gnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9uZXR3b3Jr X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbmV0JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ ICdpbmV0JywgYW1wcm9jbnVtID0+ICcxMicsCisgIGFtcHJvYyA9PiAnZ2lzdF9zdHJhdG51 bV9pZGVudGl0eScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L211bHRpcmFuZ2Vfb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ2FueW11bHRpcmFuZ2UnLAogICBhbXByb2NyaWdodHR5 cGUgPT4gJ2FueW11bHRpcmFuZ2UnLCBhbXByb2NudW0gPT4gJzEnLAogICBhbXByb2MgPT4g J211bHRpcmFuZ2VfZ2lzdF9jb25zaXN0ZW50JyB9LApAQCAtNjMyLDYgKzY0Nyw5IEBACiB7 IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9tdWx0aXJhbmdlX29wcycsIGFtcHJvY2xlZnR0eXBl ID0+ICdhbnltdWx0aXJhbmdlJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdhbnltdWx0aXJh bmdlJywgYW1wcm9jbnVtID0+ICc3JywKICAgYW1wcm9jID0+ICdyYW5nZV9naXN0X3NhbWUn IH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9tdWx0aXJhbmdlX29wcycsIGFtcHJvY2xl ZnR0eXBlID0+ICdhbnltdWx0aXJhbmdlJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdhbnlt dWx0aXJhbmdlJywgYW1wcm9jbnVtID0+ICcxMicsCisgIGFtcHJvYyA9PiAnZ2lzdF9zdHJh dG51bV9pZGVudGl0eScgfSwKIAogIyBnaW4KIHsgYW1wcm9jZmFtaWx5ID0+ICdnaW4vYXJy YXlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2FueWFycmF5JywKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0CmluZGV4IDkwNTJmNTI2MmEuLjE3ODdhZmJhNzQgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdApAQCAtMTIxMzMsNCArMTIxMzMsMTQgQEAKICAgcHJvYXJnbmFtZXMg PT4gJ3t0bGksc3RhcnRfbHNuLGVuZF9sc24scmVsZmlsZW5vZGUscmVsdGFibGVzcGFjZSxy ZWxkYXRhYmFzZSxyZWxmb3JrbnVtYmVyLHJlbGJsb2NrbnVtYmVyLGlzX2xpbWl0X2Jsb2Nr fScsCiAgIHByb3NyYyA9PiAncGdfd2FsX3N1bW1hcnlfY29udGVudHMnIH0sCiAKKyMgR2lT VCBzdHJhdG51bSBpbXBsZW1lbnRhdGlvbnMKK3sgb2lkID0+ICc4MDQ3JywgZGVzY3IgPT4g J0dpU1Qgc3VwcG9ydCcsCisgIHByb25hbWUgPT4gJ2dpc3Rfc3RyYXRudW1faWRlbnRpdHkn LCBwcm9yZXR0eXBlID0+ICdpbnQyJywKKyAgcHJvYXJndHlwZXMgPT4gJ2ludDInLAorICBw cm9zcmMgPT4gJ2dpc3Rfc3RyYXRudW1faWRlbnRpdHknIH0sCit7IG9pZCA9PiAnODA0OCcs IGRlc2NyID0+ICdHaVNUIHN1cHBvcnQnLAorICBwcm9uYW1lID0+ICdnaXN0X3N0cmF0bnVt X2J0cmVlJywgcHJvcmV0dHlwZSA9PiAnaW50MicsCisgIHByb2FyZ3R5cGVzID0+ICdpbnQy JywKKyAgcHJvc3JjID0+ICdnaXN0X3N0cmF0bnVtX2J0cmVlJyB9LAorCiBdCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21pc2NfZnVuY3Rpb25zLm91dCBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlzY19mdW5jdGlvbnMub3V0CmluZGV4IDkzMDIx MzQwNzcuLjU0N2FmODk0YWEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvbWlzY19mdW5jdGlvbnMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv bWlzY19mdW5jdGlvbnMub3V0CkBAIC02NzAsMyArNjcwLDI4IEBAIEZST00gcGdfd2FsZmls ZV9uYW1lX29mZnNldCgnMC8wJzo6cGdfbHNuICsgOnNlZ21lbnRfc2l6ZSAtIDEpLAogICAg ICAgICAgICAgICAwIHwgdAogKDEgcm93KQogCistLSB0ZXN0IHN0cmF0bnVtIHN1cHBvcnQg ZnVuY3MKK1NFTEVDVCBnaXN0X3N0cmF0bnVtX2lkZW50aXR5KDM6OnNtYWxsaW50KTsKKyBn aXN0X3N0cmF0bnVtX2lkZW50aXR5IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgICAgICAgICAgMworKDEgcm93KQorCitTRUxFQ1QgZ2lzdF9zdHJhdG51bV9p ZGVudGl0eSgxODo6c21hbGxpbnQpOworIGdpc3Rfc3RyYXRudW1faWRlbnRpdHkgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgIDE4CisoMSByb3cp CisKK1NFTEVDVCBnaXN0X3N0cmF0bnVtX2J0cmVlKDM6OnNtYWxsaW50KTsKKyBnaXN0X3N0 cmF0bnVtX2J0cmVlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAg ICAgMAorKDEgcm93KQorCitTRUxFQ1QgZ2lzdF9zdHJhdG51bV9idHJlZSgxODo6c21hbGxp bnQpOworIGdpc3Rfc3RyYXRudW1fYnRyZWUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAgICAgICAzCisoMSByb3cpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL21pc2NfZnVuY3Rpb25zLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL21p c2NfZnVuY3Rpb25zLnNxbAppbmRleCBkM2RjNTkxMTczLi40YTlhOWNmYTVkIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9taXNjX2Z1bmN0aW9ucy5zcWwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvbWlzY19mdW5jdGlvbnMuc3FsCkBAIC0yNTAsMyArMjUwLDkg QEAgRlJPTSBwZ193YWxmaWxlX25hbWVfb2Zmc2V0KCcwLzAnOjpwZ19sc24gKyA6c2VnbWVu dF9zaXplICsgMSksCiBTRUxFQ1Qgc2VnbWVudF9udW1iZXIsIGZpbGVfb2Zmc2V0ID0gOnNl Z21lbnRfc2l6ZSAtIDEKIEZST00gcGdfd2FsZmlsZV9uYW1lX29mZnNldCgnMC8wJzo6cGdf bHNuICsgOnNlZ21lbnRfc2l6ZSAtIDEpLAogICAgICBwZ19zcGxpdF93YWxmaWxlX25hbWUo ZmlsZV9uYW1lKTsKKworLS0gdGVzdCBzdHJhdG51bSBzdXBwb3J0IGZ1bmNzCitTRUxFQ1Qg Z2lzdF9zdHJhdG51bV9pZGVudGl0eSgzOjpzbWFsbGludCk7CitTRUxFQ1QgZ2lzdF9zdHJh dG51bV9pZGVudGl0eSgxODo6c21hbGxpbnQpOworU0VMRUNUIGdpc3Rfc3RyYXRudW1fYnRy ZWUoMzo6c21hbGxpbnQpOworU0VMRUNUIGdpc3Rfc3RyYXRudW1fYnRyZWUoMTg6OnNtYWxs aW50KTsKLS0gCjIuNDIuMAoK --------------F56VWTQ0Ck05qER7bvQmfAru Content-Type: text/x-patch; charset=UTF-8; name="v21-0002-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.patch" Content-Disposition: attachment; filename*0="v21-0002-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.pat"; filename*1="ch" Content-Transfer-Encoding: base64 RnJvbSA4YjVkMGRmNjkxMWFmN2VkMGNmMzQ3YTUxODM3NzMwYTliNjQ0ZDVkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IE1vbiwgMjggSnVuIDIwMjEgMTc6MzM6MjcgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYyMSAyLzhdIEFkZCB0ZW1wb3JhbCBQUklNQVJZIEtFWSBh bmQgVU5JUVVFIGNvbnN0cmFpbnRzCgotIEFkZGVkIFdJVEhPVVQgT1ZFUkxBUFMgdG8gdGhl IGJpc29uIGdyYW1tYXIuIFdlIHBlcm1pdCBvbmx5IHJhbmdlCiAgY29sdW1ucywgbm90IHll dCBQRVJJT0RzICh3aGljaCB3ZSdsbCBhZGQgc29vbikuCi0gVGVtcG9yYWwgUFJJTUFSWSBL RVlzIGFuZCBVTklRVUUgY29uc3RyYWludHMgYXJlIGJhY2tlZCBieSBHaVNUCiAgaW5kZXhl cyBpbnN0ZWFkIG9mIEItdHJlZSBpbmRleGVzLCBzaW5jZSB0aGV5IGFyZSBlc3NlbnRpYWxs eQogIGV4Y2x1c2lvbiBjb25zdHJhaW50cyB3aXRoID0gZm9yIHRoZSBzY2FsYXIgcGFydHMg b2YgdGhlIGtleSBhbmQgJiYKICBmb3IgdGhlIHRlbXBvcmFsIHBhcnQuCi0gQWRkZWQgcGdf Y29uc3RyYWludC5jb250ZW1wb3JhbCB0byBzYXkgd2hldGhlciBhIGNvbnN0cmFpbnQgaXMg YQogIHRlbXBvcmFsIGNvbnN0cmFpbnQuCi0gQWRkZWQgZG9jcyBhbmQgdGVzdHMuCi0gQWRk ZWQgcGdfZHVtcCBzdXBwb3J0LgotLS0KIGNvbnRyaWIvYnRyZWVfZ2lzdC9NYWtlZmlsZSAg ICAgICAgICAgICAgICAgICB8ICAgMyArLQogLi4uL2J0cmVlX2dpc3QvZXhwZWN0ZWQvd2l0 aG91dF9vdmVybGFwcy5vdXQgIHwgIDMxICsrCiBjb250cmliL2J0cmVlX2dpc3Qvc3FsL3dp dGhvdXRfb3ZlcmxhcHMuc3FsICAgfCAgMTMgKwogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNn bWwgICAgICAgICAgICAgICAgICAgIHwgIDEwICsKIGRvYy9zcmMvc2dtbC9naXN0LnNnbWwg ICAgICAgICAgICAgICAgICAgICAgICB8ICAxOCArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfdGFibGUuc2dtbCAgICAgICAgICAgIHwgIDM5ICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC9naXN0dXRpbC5jICAgICAgICAgICAgfCAgMjkgKysKIHNyYy9iYWNrZW5kL2NhdGFs b2cvaGVhcC5jICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9jYXRh bG9nL2luZGV4LmMgICAgICAgICAgICAgICAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19jb25zdHJhaW50LmMgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL2luZGV4Y21kcy5jICAgICAgICAgICAgICB8IDE1NyArKysrKystCiBzcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv YmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jICAgICAgICAgICAgICAgfCAgIDEgKwogc3Jj L2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNy Yy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAgICAgICAgICAgICAgICB8ICAgMiArCiBz cmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAgMjkgKy0K IHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAgICAgICAgICB8ICAyOCAr LQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAgICAgICAgIHwgIDE0 ICstCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jICAgICAgICAgICAgfCAg MTggKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8 ICAxNiArLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCAgICAgICAgICAgICAgICAgICAg IHwgICAxICsKIHNyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsICAgICAgICAgICAg ICB8ICA0MCArKwogc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgICAgICAgICAgICAgICAgICAg ICAgIHwgIDEyICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdF9wcml2YXRlLmggICAgICAg ICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNzL3N0cmF0bnVtLmggICAgICAgICAg ICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAgICAgICAgICAg ICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCAg ICAgICAgICAgfCAgMTAgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oICAgICAg ICAgICAgICAgICB8ICAgNyArLQogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAg ICAgICAgICAgICAgIHwgICAyICsKIC4uLi9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3Zl cmxhcHMub3V0ICAgICB8IDM5NSArKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jl c3MvcGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgMiArLQogc3JjL3Rlc3QvcmVn cmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwgICAgIHwgMjkwICsrKysrKysrKysrKysK IDMzIGZpbGVzIGNoYW5nZWQsIDExMzEgaW5zZXJ0aW9ucygrKSwgNTYgZGVsZXRpb25zKC0p CiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9idHJlZV9naXN0L2V4cGVjdGVkL3dpdGhv dXRfb3ZlcmxhcHMub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9idHJlZV9naXN0 L3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAoKZGlmZiAt LWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9NYWtlZmlsZSBiL2NvbnRyaWIvYnRyZWVfZ2lz dC9NYWtlZmlsZQppbmRleCBmYTFiOTg3YjM5Li42MmFlZmFkZDgxIDEwMDY0NAotLS0gYS9j b250cmliL2J0cmVlX2dpc3QvTWFrZWZpbGUKKysrIGIvY29udHJpYi9idHJlZV9naXN0L01h a2VmaWxlCkBAIC0zOSw3ICszOSw4IEBAIFBHRklMRURFU0MgPSAiYnRyZWVfZ2lzdCAtIEIt dHJlZSBlcXVpdmFsZW50IEdpU1Qgb3BlcmF0b3IgY2xhc3NlcyIKIAogUkVHUkVTUyA9IGlu aXQgaW50MiBpbnQ0IGludDggZmxvYXQ0IGZsb2F0OCBjYXNoIG9pZCB0aW1lc3RhbXAgdGlt ZXN0YW1wdHogXAogICAgICAgICB0aW1lIHRpbWV0eiBkYXRlIGludGVydmFsIG1hY2FkZHIg bWFjYWRkcjggaW5ldCBjaWRyIHRleHQgdmFyY2hhciBjaGFyIFwKLSAgICAgICAgYnl0ZWEg Yml0IHZhcmJpdCBudW1lcmljIHV1aWQgbm90X2VxdWFsIGVudW0gYm9vbCBwYXJ0aXRpb25z CisgICAgICAgIGJ5dGVhIGJpdCB2YXJiaXQgbnVtZXJpYyB1dWlkIG5vdF9lcXVhbCBlbnVt IGJvb2wgcGFydGl0aW9ucyBcCisgICAgICAgIHdpdGhvdXRfb3ZlcmxhcHMKIAogU0hMSUJf TElOSyArPSAkKGZpbHRlciAtbG0sICQoTElCUykpCiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIv YnRyZWVfZ2lzdC9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dCBiL2NvbnRyaWIvYnRy ZWVfZ2lzdC9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwLi4wNjkyNzI2ODhmCi0tLSAvZGV2L251bGwKKysrIGIv Y29udHJpYi9idHJlZV9naXN0L2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CkBAIC0w LDAgKzEsMzEgQEAKKy0tIENvcmUgbXVzdCB0ZXN0IFdJVEhPVVQgT1ZFUkxBUFMKKy0tIHdp dGggYW4gaW50NHJhbmdlICsgdHNyYW5nZSwKKy0tIHNvIGhlcmUgd2UgZG8gc29tZSBzaW1w bGUgdGVzdHMKKy0tIHRvIG1ha2Ugc3VyZSBpbnQgKyB0c3JhbmdlIHdvcmtzIHRvbywKKy0t IHNpbmNlIHRoYXQgaXMgdGhlIGV4cGVjdGVkIHVzZS1jYXNlLgorQ1JFQVRFIFRBQkxFIHRl bXBvcmFsX3JuZyAoCisgIGlkIGludGVnZXIsCisgIHZhbGlkX2F0IHRzcmFuZ2UsCisgIENP TlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUykKKyk7CitcZCB0ZW1wb3JhbF9ybmcKKyAgICAgICAgICAgICBUYWJs ZSAicHVibGljLnRlbXBvcmFsX3JuZyIKKyAgQ29sdW1uICB8ICBUeXBlICAgfCBDb2xsYXRp b24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkICAgICAgIHwgaW50ZWdlciB8ICAgICAg ICAgICB8IG5vdCBudWxsIHwgCisgdmFsaWRfYXQgfCB0c3JhbmdlIHwgICAgICAgICAgIHwg bm90IG51bGwgfCAKK0luZGV4ZXM6CisgICAgInRlbXBvcmFsX3JuZ19wayIgUFJJTUFSWSBL RVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorCitTRUxFQ1QgcGdfZ2V0X2Nv bnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0 ZW1wb3JhbF9ybmdfcGsnOworICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisoMSBy b3cpCisKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00g cGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZ19wayc7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9pbmRleGRlZiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JF QVRFIFVOSVFVRSBJTkRFWCB0ZW1wb3JhbF9ybmdfcGsgT04gdGVtcG9yYWxfcm5nIFVTSU5H IGdpc3QgKGlkLCB2YWxpZF9hdCkKKygxIHJvdykKKwpkaWZmIC0tZ2l0IGEvY29udHJpYi9i dHJlZV9naXN0L3NxbC93aXRob3V0X292ZXJsYXBzLnNxbCBiL2NvbnRyaWIvYnRyZWVfZ2lz dC9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uOTg2NjVkYmI5ZQotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvYnRy ZWVfZ2lzdC9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKQEAgLTAsMCArMSwxMyBAQAorLS0g Q29yZSBtdXN0IHRlc3QgV0lUSE9VVCBPVkVSTEFQUworLS0gd2l0aCBhbiBpbnQ0cmFuZ2Ug KyB0c3JhbmdlLAorLS0gc28gaGVyZSB3ZSBkbyBzb21lIHNpbXBsZSB0ZXN0cworLS0gdG8g bWFrZSBzdXJlIGludCArIHRzcmFuZ2Ugd29ya3MgdG9vLAorLS0gc2luY2UgdGhhdCBpcyB0 aGUgZXhwZWN0ZWQgdXNlLWNhc2UuCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgKKyAg aWQgaW50ZWdlciwKKyAgdmFsaWRfYXQgdHNyYW5nZSwKKyAgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQor KTsKK1xkIHRlbXBvcmFsX3JuZworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkg RlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nX3BrJzsK K1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00gcGdfY29u c3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZ19wayc7CmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5z Z21sCmluZGV4IDNlYzczOTFlYzUuLjYxOGEwNWFjODkgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBA IC0yNzA5LDYgKzI3MDksMTYgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0 ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAg IDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIAorICAgICA8cm93PgorICAgICAgPGVu dHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZp bml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+Y29ud2l0aG91dG92ZXJsYXBzPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJh PgorICAgICAgIFRoaXMgY29uc3RyYWludCBpcyBkZWZpbmVkIHdpdGggPGxpdGVyYWw+V0lU SE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4KKyAgICAgICAoZm9yIHByaW1hcnkga2V5cyBhbmQg dW5pcXVlIGNvbnN0cmFpbnRzKS4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jv dz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50 cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KICAgICAgICA8c3RydWN0Zmll bGQ+Y29ua2V5PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50MltdPC90eXBlPgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL2dpc3Quc2dtbCBiL2RvYy9zcmMvc2dtbC9naXN0LnNnbWwKaW5k ZXggYmFhMjZjNjVjYy4uZjA1ODc1ZDM2YyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2dp c3Quc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZ2lzdC5zZ21sCkBAIC0yOTgsNyArMjk4LDgg QEAgQ1JFQVRFIElOREVYIE9OIG15X3RhYmxlIFVTSU5HIEdJU1QgKG15X2luZXRfY29sdW1u IGluZXRfb3BzKTsKICAgIFRoZSBvcHRpb25hbCB0d2VsZnRoIG1ldGhvZCA8ZnVuY3Rpb24+ c3RyYXRudW08L2Z1bmN0aW9uPiBpcyB1c2VkIHRvIHRyYW5zbGF0ZQogICAgd2VsbC1rbm93 biA8bGl0ZXJhbD5SVCpTdHJhdGVneU51bWJlcnM8L2xpdGVyYWw+IChmcm9tCiAgICA8Zmls ZW5hbWU+c3JjL2luY2x1ZGUvYWNjZXNzL3N0cmF0bnVtLmg8L2ZpbGVuYW1lPikgaW50byBz dHJhdGVneSBudW1iZXJzCi0gICB1c2VkIGJ5IHRoZSBvcGNsYXNzLgorICAgdXNlZCBieSB0 aGUgb3BjbGFzcy4gVGhpcyBsZXRzIHRoZSBjb3JlIGNvZGUgbG9vayB1cCBvcGVyYXRvcnMg Zm9yIHRlbXBvcmFsCisgICBjb25zdHJhaW50IGluZGV4ZXMuCiAgPC9wYXJhPgogCiAgPHZh cmlhYmxlbGlzdD4KQEAgLTExODQsNiArMTE4NSwyMSBAQCBteV9zb3J0c3VwcG9ydChQR19G VU5DVElPTl9BUkdTKQogICAgICAgIGlmIHRoZSBvcGNsYXNzIGhhcyBubyBtYXRjaGluZyBz dHJhdGVneSwKICAgICAgICBvciBhdCBsZWFzdCBhIHN0cmF0ZWd5IG51bWJlciB0aGF0IGlz bid0IHVzZWQgYnkgdGhpcyBvcGNsYXNzLgogICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+ CisgICAgICAgVGhpcyBpcyB1c2VkIGZvciB0ZW1wb3JhbCBpbmRleCBjb25zdHJhaW50cwor ICAgICAgIChpLmUuIDxsaXRlcmFsPlBSSU1BUlkgS0VZPC9saXRlcmFsPiBhbmQgPGxpdGVy YWw+VU5JUVVFPC9saXRlcmFsPikuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAg ICAgICBJZiB0aGUgb3BjbGFzcyBwcm92aWRlcyB0aGlzIGZ1bmN0aW9uIGFuZCBpdCByZXR1 cm5zIHJlc3VsdHMKKyAgICAgICBmb3IgPGxpdGVyYWw+UlRFcXVhbFN0cmF0ZWd5TnVtYmVy PC9saXRlcmFsPiwgaXQgY2FuIGJlIHVzZWQKKyAgICAgICBpbiB0aGUgbm9uLTxsaXRlcmFs PldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+IHBhcnQocykgb2YgYW4KKyAgICAgICBpbmRl eCBjb25zdHJhaW50LgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgSWYg aXQgcmV0dXJucyByZXN1bHRzIGZvciA8bGl0ZXJhbD5SVE92ZXJsYXBTdHJhdGVneU51bWJl cjwvbGl0ZXJhbD4sCisgICAgICAgdGhlIG9wY2xhc3MgY2FuIGJlIHVzZWQgaW4gdGhlIDxs aXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+CisgICAgICAgcGFydCBvZiBhbiBp bmRleCBjb25zdHJhaW50LgorICAgICAgPC9wYXJhPgogCiAgICAgICA8cGFyYT4KICAgICAg ICBUaGUgPGFjcm9ueW0+U1FMPC9hY3JvbnltPiBkZWNsYXJhdGlvbiBvZiB0aGUgZnVuY3Rp b24gbXVzdCBsb29rIGxpa2UKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCmluZGV4 IGUwNGEwNjkyYzQuLmEwYmQyYjhhZGMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlX3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUu c2dtbApAQCAtNzgsOCArNzgsOCBAQCBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FMIF0geyBU RU1QT1JBUlkgfCBURU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVYSQogWyBD T05TVFJBSU5UIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25zdHJhaW50X25h bWU8L3JlcGxhY2VhYmxlPiBdCiB7IENIRUNLICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIFsgTk8gSU5IRVJJVCBdIHwKICAg Tk9UIE5VTEwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9y ZXBsYWNlYWJsZT4gWyBOTyBJTkhFUklUIF0gfAotICBVTklRVUUgWyBOVUxMUyBbIE5PVCBd IERJU1RJTkNUIF0gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25h bWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gfAotICBQUklNQVJZIEtFWSAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFi bGU+IFssIC4uLiBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3Bh cmFtZXRlcnM8L3JlcGxhY2VhYmxlPiB8CisgIFVOSVFVRSBbIE5VTExTIFsgTk9UIF0gRElT VElOQ1QgXSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwv cmVwbGFjZWFibGU+IFssIC4uLiBdIFssIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFdJVEhPVVQgT1ZFUkxBUFMgXSApIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJs ZT4gfAorICBQUklNQVJZIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5j b2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFdJVEhPVVQgT1ZFUkxB UFMgXSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJz PC9yZXBsYWNlYWJsZT4gfAogICBFWENMVURFIFsgVVNJTkcgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmluZGV4X21ldGhvZDwvcmVwbGFjZWFibGU+IF0gKCA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+ZXhjbHVkZV9lbGVtZW50PC9yZXBsYWNlYWJsZT4gV0lU SCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3BlcmF0b3I8L3JlcGxhY2VhYmxl PiBbLCAuLi4gXSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9wYXJh bWV0ZXJzPC9yZXBsYWNlYWJsZT4gWyBXSEVSRSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wcmVkaWNhdGU8L3JlcGxhY2VhYmxlPiApIF0gfAogICBGT1JFSUdOIEtFWSAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFi bGU+IFssIC4uLiBdICkgUkVGRVJFTkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cmVmdGFibGU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnJlZmNvbHVtbjwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQogICAgIFsgTUFU Q0ggRlVMTCB8IE1BVENIIFBBUlRJQUwgfCBNQVRDSCBTSU1QTEUgXSBbIE9OIERFTEVURSA8 cmVwbGFjZWFibGUKQEAgLTk2NSw3ICs5NjUsNyBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4s IFJFTQogCiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRldGFibGUtcGFybXMtdW5p cXVlIj4KICAgICA8dGVybT48bGl0ZXJhbD5VTklRVUUgWyBOVUxMUyBbIE5PVCBdIERJU1RJ TkNUIF08L2xpdGVyYWw+IChjb2x1bW4gY29uc3RyYWludCk8L3Rlcm0+Ci0gICAgPHRlcm0+ PGxpdGVyYWw+VU5JUVVFIFsgTlVMTFMgWyBOT1QgXSBESVNUSU5DVCBdICggPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4u IF0gKTwvbGl0ZXJhbD4KKyAgICA8dGVybT48bGl0ZXJhbD5VTklRVUUgWyBOVUxMUyBbIE5P VCBdIERJU1RJTkNUIF0gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1u X25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBbLCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBXSVRIT1VUIE9WRVJMQVBTIF0g KTwvbGl0ZXJhbD4KICAgICA8b3B0aW9uYWw+IDxsaXRlcmFsPklOQ0xVREUgKCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAu Li5dKTwvbGl0ZXJhbD4gPC9vcHRpb25hbD4gKHRhYmxlIGNvbnN0cmFpbnQpPC90ZXJtPgog CiAgICAgPGxpc3RpdGVtPgpAQCAtOTc5LDYgKzk3OSwyNiBAQCBXSVRIICggTU9EVUxVUyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNl YWJsZT4sIFJFTQogICAgICAgb2YgdGhlc2UgY29sdW1ucy4KICAgICAgPC9wYXJhPgogCisg ICAgIDxwYXJhPgorICAgICAgSWYgdGhlIDxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xp dGVyYWw+IG9wdGlvbiBpcyBzcGVjaWZpZWQgZm9yIHRoZQorICAgICAgbGFzdCBjb2x1bW4s IHRoZW4gdGhhdCBjb2x1bW4gaXMgY2hlY2tlZCBmb3Igb3ZlcmxhcHMgaW5zdGVhZCBvZgor ICAgICAgZXF1YWxpdHkuICBJbiB0aGF0IGNhc2UsIHRoZSBvdGhlciBjb2x1bW5zIG9mIHRo ZSBjb25zdHJhaW50IHdpbGwgYWxsb3cKKyAgICAgIGR1cGxpY2F0ZXMgc28gbG9uZyBhcyB0 aGUgZHVwbGljYXRlcyBkb24ndCBvdmVybGFwIGluIHRoZQorICAgICAgPGxpdGVyYWw+V0lU SE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4gY29sdW1uLiAgKFRoaXMgaXMgc29tZXRpbWVzIGNh bGxlZCBhCisgICAgICB0ZW1wb3JhbCBrZXksIGlmIHRoZSBjb2x1bW4gaXMgYSByYW5nZSBv ZiBkYXRlcyBvciB0aW1lc3RhbXBzLCBidXQKKyAgICAgIFBvc3RncmVTUUwgYWxsb3dzIHJh bmdlcyBvdmVyIGFueSBiYXNlIHR5cGUuKSAgSW4gZWZmZWN0LCBzdWNoIGEKKyAgICAgIGNv bnN0cmFpbnQgaXMgZW5mb3JjZWQgd2l0aCBhbiA8bGl0ZXJhbD5FWENMVURFPC9saXRlcmFs PiBjb25zdHJhaW50CisgICAgICByYXRoZXIgdGhhbiBhIDxsaXRlcmFsPlVOSVFVRTwvbGl0 ZXJhbD4gY29uc3RyYWludC4gIFNvIGZvciBleGFtcGxlCisgICAgICA8bGl0ZXJhbD5VTklR VUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKTwvbGl0ZXJhbD4gYmVoYXZlcyBs aWtlCisgICAgICA8bGl0ZXJhbD5FWENMVURFIFVTSU5HIEdJU1QgKGlkIFdJVEggPSwgdmFs aWRfYXQgV0lUSAorICAgICAgJmFtcDsmYW1wOyk8L2xpdGVyYWw+LiAgVGhlIDxsaXRlcmFs PldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+IGNvbHVtbgorICAgICAgbXVzdCBoYXZlIGEg cmFuZ2UgdHlwZS4gIFRoZSBub24tPGxpdGVyYWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJh bD4KKyAgICAgIGNvbHVtbnMgb2YgdGhlIGNvbnN0cmFpbnQgY2FuIGJlIGFueSB0eXBlIHRo YXQgY2FuIGJlIGNvbXBhcmVkIGZvcgorICAgICAgZXF1YWxpdHkgaW4gYSBHaVNUIGluZGV4 LiBCeSBkZWZhdWx0IG9ubHkgcmFuZ2UgdHlwZXMgYXJlIHN1cHBvcnRlZCwgYnV0CisgICAg ICB5b3UgY2FuIHVzZSBvdGhlciB0eXBlcyBieSBhZGRpbmcgdGhlIDx4cmVmIGxpbmtlbmQ9 ImJ0cmVlLWdpc3QiLz4KKyAgICAgIGV4dGVuc2lvbiAod2hpY2ggaXMgdGhlIGV4cGVjdGVk IHdheSB0byB1c2UgdGhpcyBmZWF0dXJlKS4KKyAgICAgPC9wYXJhPgorCiAgICAgIDxwYXJh PgogICAgICAgRm9yIHRoZSBwdXJwb3NlIG9mIGEgdW5pcXVlIGNvbnN0cmFpbnQsIG51bGwg dmFsdWVzIGFyZSBub3QKICAgICAgIGNvbnNpZGVyZWQgZXF1YWwsIHVubGVzcyA8bGl0ZXJh bD5OVUxMUyBOT1QgRElTVElOQ1Q8L2xpdGVyYWw+IGlzCkBAIC0xMDAxLDcgKzEwMjEsOSBA QCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJp Y19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogCiAgICAgIDxwYXJhPgogICAgICAgQWRk aW5nIGEgdW5pcXVlIGNvbnN0cmFpbnQgd2lsbCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhIHVu aXF1ZSBidHJlZQotICAgICAgaW5kZXggb24gdGhlIGNvbHVtbiBvciBncm91cCBvZiBjb2x1 bW5zIHVzZWQgaW4gdGhlIGNvbnN0cmFpbnQuCisgICAgICBpbmRleCBvbiB0aGUgY29sdW1u IG9yIGdyb3VwIG9mIGNvbHVtbnMgdXNlZCBpbiB0aGUgY29uc3RyYWludC4gQnV0IGlmCisg ICAgICB0aGUgY29uc3RyYWludCBpbmNsdWRlcyBhIDxsaXRlcmFsPldJVEhPVVQgT1ZFUkxB UFM8L2xpdGVyYWw+IGNsYXVzZSwKKyAgICAgIGl0IHdpbGwgdXNlIGEgR2lTVCBpbmRleC4K ICAgICAgPC9wYXJhPgogCiAgICAgIDxwYXJhPgpAQCAtMTAxOSw3ICsxMDQxLDcgQEAgV0lU SCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0 ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KIAogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNy ZWF0ZXRhYmxlLXBhcm1zLXByaW1hcnkta2V5Ij4KICAgICA8dGVybT48bGl0ZXJhbD5QUklN QVJZIEtFWTwvbGl0ZXJhbD4gKGNvbHVtbiBjb25zdHJhaW50KTwvdGVybT4KLSAgICA8dGVy bT48bGl0ZXJhbD5QUklNQVJZIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICk8L2xpdGVyYWw+CisgICAg PHRlcm0+PGxpdGVyYWw+UFJJTUFSWSBLRVkgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBbLCA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBXSVRIT1VU IE9WRVJMQVBTIF0gKTwvbGl0ZXJhbD4KICAgICA8b3B0aW9uYWw+IDxsaXRlcmFsPklOQ0xV REUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxh Y2VhYmxlPiBbLCAuLi5dKTwvbGl0ZXJhbD4gPC9vcHRpb25hbD4gKHRhYmxlIGNvbnN0cmFp bnQpPC90ZXJtPgogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+CkBAIC0xMDUyLDkgKzEw NzQsMTAgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgPC9wYXJhPgogCiAg ICAgIDxwYXJhPgotICAgICAgQWRkaW5nIGEgPGxpdGVyYWw+UFJJTUFSWSBLRVk8L2xpdGVy YWw+IGNvbnN0cmFpbnQgd2lsbCBhdXRvbWF0aWNhbGx5Ci0gICAgICBjcmVhdGUgYSB1bmlx dWUgYnRyZWUgaW5kZXggb24gdGhlIGNvbHVtbiBvciBncm91cCBvZiBjb2x1bW5zIHVzZWQg aW4gdGhlCi0gICAgICBjb25zdHJhaW50LgorICAgICAgQXMgd2l0aCBhIDxsaXRlcmFsPlVO SVFVRTwvbGl0ZXJhbD4gY29uc3RyYWludCwgYWRkaW5nIGEKKyAgICAgIDxsaXRlcmFsPlBS SU1BUlkgS0VZPC9saXRlcmFsPiBjb25zdHJhaW50IHdpbGwgYXV0b21hdGljYWxseSBjcmVh dGUgYQorICAgICAgdW5pcXVlIGJ0cmVlIGluZGV4LCBvciBHaVNUIGlmIDxsaXRlcmFsPldJ VEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+IHdhcworICAgICAgc3BlY2lmaWVkLCBvbiB0aGUg Y29sdW1uIG9yIGdyb3VwIG9mIGNvbHVtbnMgdXNlZCBpbiB0aGUgY29uc3RyYWludC4KICAg ICAgPC9wYXJhPgogCiAgICAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdHV0aWwuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGls LmMKaW5kZXggZmI4YzYyNjQ0MS4uNzhmZTM2MDU1NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lz dC9naXN0dXRpbC5jCkBAIC0xMDk4LDMgKzEwOTgsMzIgQEAgZ2lzdF9zdHJhdG51bV9idHJl ZShQR19GVU5DVElPTl9BUkdTKQogCQkJUEdfUkVUVVJOX1VJTlQxNihJbnZhbGlkU3RyYXRl Z3kpOwogCX0KIH0KKworLyoKKyAqIFJldHVybnMgdGhlIG9wY2xhc3MncyBwcml2YXRlIHN0 cmF0bnVtIHVzZWQgZm9yIHRoZSBnaXZlbiBzdHJhdGVneS4KKyAqCisgKiBDYWxscyB0aGUg b3BjbGFzcydzIEdJU1RfU1RSQVROVU1fUFJPQyBzdXBwb3J0IGZ1bmN0aW9uLCBpZiBhbnks CisgKiBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LgorICogUmV0dXJucyBJbnZhbGlkU3RyYXRl Z3kgaWYgdGhlIGZ1bmN0aW9uIGlzIG5vdCBkZWZpbmVkLgorICovCitTdHJhdGVneU51bWJl cgorZ2lzdFRyYW5zbGF0ZVN0cmF0bnVtKE9pZCBvcGNsYXNzLCBTdHJhdGVneU51bWJlciBz dHJhdCkKK3sKKwlPaWQJb3BmYW1pbHk7CisJT2lkCW9wY2ludHlwZTsKKwlPaWQJZnVuY2lk OworCURhdHVtIHJlc3VsdDsKKworCS8qIExvb2sgdXAgdGhlIG9wY2xhc3MgZmFtaWx5IGFu ZCBpbnB1dCBkYXRhdHlwZS4gKi8KKwlpZiAoIWdldF9vcGNsYXNzX29wZmFtaWx5X2FuZF9p bnB1dF90eXBlKG9wY2xhc3MsICZvcGZhbWlseSwgJm9wY2ludHlwZSkpCisJCXJldHVybiBJ bnZhbGlkU3RyYXRlZ3k7CisKKwkvKiBDaGVjayB3aGV0aGVyIHRoZSBmdW5jdGlvbiBpcyBw cm92aWRlZC4gKi8KKwlmdW5jaWQgPSBnZXRfb3BmYW1pbHlfcHJvYyhvcGZhbWlseSwgb3Bj aW50eXBlLCBvcGNpbnR5cGUsIEdJU1RfU1RSQVROVU1fUFJPQyk7CisJaWYgKCFPaWRJc1Zh bGlkKGZ1bmNpZCkpCisJCXJldHVybiBJbnZhbGlkU3RyYXRlZ3k7CisKKwkvKiBBc2sgdGhl IHRyYW5zbGF0aW9uIGZ1bmN0aW9uICovCisJcmVzdWx0ID0gT2lkRnVuY3Rpb25DYWxsMUNv bGwoZnVuY2lkLCBJbnZhbGlkT2lkLCBVSW50MTZHZXREYXR1bShzdHJhdCkpOworCXJldHVy biBEYXR1bUdldFVJbnQxNihyZXN1bHQpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9oZWFwLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYwppbmRleCBiOTM4 OTQ4ODlkLi4xZTU1YjM0MTljIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2hl YXAuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYwpAQCAtMjE0Myw2ICsyMTQz LDcgQEAgU3RvcmVSZWxDaGVjayhSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNjbmFtZSwg Tm9kZSAqZXhwciwKIAkJCQkJCQkgIGlzX2xvY2FsLCAvKiBjb25pc2xvY2FsICovCiAJCQkJ CQkJICBpbmhjb3VudCwgLyogY29uaW5oY291bnQgKi8KIAkJCQkJCQkgIGlzX25vX2luaGVy aXQsCS8qIGNvbm5vaW5oZXJpdCAqLworCQkJCQkJCSAgZmFsc2UsCS8qIGNvbndpdGhvdXRv dmVybGFwcyAqLwogCQkJCQkJCSAgaXNfaW50ZXJuYWwpOyAvKiBpbnRlcm5hbGx5IGNvbnN0 cnVjdGVkPyAqLwogCiAJcGZyZWUoY2NiaW4pOwpAQCAtMjE5Myw2ICsyMTk0LDcgQEAgU3Rv cmVSZWxOb3ROdWxsKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqbm5uYW1lLCBBdHRyTnVt YmVyIGF0dG51bSwKIAkJCQkJCQkgIGlzX2xvY2FsLAogCQkJCQkJCSAgaW5oY291bnQsCiAJ CQkJCQkJICBpc19ub19pbmhlcml0LAorCQkJCQkJCSAgZmFsc2UsCS8qIGNvbndpdGhvdXRv dmVybGFwcyAqLwogCQkJCQkJCSAgZmFsc2UpOwogCXJldHVybiBjb25zdHJPaWQ7CiB9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9j YXRhbG9nL2luZGV4LmMKaW5kZXggN2IxODZjMDIyMC4uMTRjMjAzMjg3NiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvaW5kZXguYwpAQCAtMTg5NSw2ICsxODk1LDcgQEAgaW5kZXhfY29uY3VycmVudGx5X3Nl dF9kZWFkKE9pZCBoZWFwSWQsIE9pZCBpbmRleElkKQogICoJCUlOREVYX0NPTlNUUl9DUkVB VEVfVVBEQVRFX0lOREVYOiB1cGRhdGUgdGhlIHBnX2luZGV4IHJvdwogICoJCUlOREVYX0NP TlNUUl9DUkVBVEVfUkVNT1ZFX09MRF9ERVBTOiByZW1vdmUgZXhpc3RpbmcgZGVwZW5kZW5j aWVzCiAgKgkJCW9mIGluZGV4IG9uIHRhYmxlJ3MgY29sdW1ucworICoJCUlOREVYX0NPTlNU Ul9DUkVBVEVfV0lUSE9VVF9PVkVSTEFQUzogY29uc3RyYWludCB1c2VzIFdJVEhPVVQgT1ZF UkxBUFMKICAqIGFsbG93X3N5c3RlbV90YWJsZV9tb2RzOiBhbGxvdyB0YWJsZSB0byBiZSBh IHN5c3RlbSBjYXRhbG9nCiAgKiBpc19pbnRlcm5hbDogaW5kZXggaXMgY29uc3RydWN0ZWQg ZHVlIHRvIGludGVybmFsIHByb2Nlc3MKICAqLwpAQCAtMTkxOCwxMSArMTkxOSwxMyBAQCBp bmRleF9jb25zdHJhaW50X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJYm9vbAkJ bWFya19hc19wcmltYXJ5OwogCWJvb2wJCWlzbG9jYWw7CiAJYm9vbAkJbm9pbmhlcml0Owor CWJvb2wJCWlzX3dpdGhvdXRfb3ZlcmxhcHM7CiAJaW50CQkJaW5oY291bnQ7CiAKIAlkZWZl cnJhYmxlID0gKGNvbnN0cl9mbGFncyAmIElOREVYX0NPTlNUUl9DUkVBVEVfREVGRVJSQUJM RSkgIT0gMDsKIAlpbml0ZGVmZXJyZWQgPSAoY29uc3RyX2ZsYWdzICYgSU5ERVhfQ09OU1RS X0NSRUFURV9JTklUX0RFRkVSUkVEKSAhPSAwOwogCW1hcmtfYXNfcHJpbWFyeSA9IChjb25z dHJfZmxhZ3MgJiBJTkRFWF9DT05TVFJfQ1JFQVRFX01BUktfQVNfUFJJTUFSWSkgIT0gMDsK Kwlpc193aXRob3V0X292ZXJsYXBzID0gKGNvbnN0cl9mbGFncyAmIElOREVYX0NPTlNUUl9D UkVBVEVfV0lUSE9VVF9PVkVSTEFQUykgIT0gMDsKIAogCS8qIGNvbnN0cmFpbnQgY3JlYXRp b24gc3VwcG9ydCBkb2Vzbid0IHdvcmsgd2hpbGUgYm9vdHN0cmFwcGluZyAqLwogCUFzc2Vy dCghSXNCb290c3RyYXBQcm9jZXNzaW5nTW9kZSgpKTsKQEAgLTE5OTksNiArMjAwMiw3IEBA IGluZGV4X2NvbnN0cmFpbnRfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJ CQkJICAgaXNsb2NhbCwKIAkJCQkJCQkJICAgaW5oY291bnQsCiAJCQkJCQkJCSAgIG5vaW5o ZXJpdCwKKwkJCQkJCQkJICAgaXNfd2l0aG91dF9vdmVybGFwcywKIAkJCQkJCQkJICAgaXNf aW50ZXJuYWwpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf Y29uc3RyYWludC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMKaW5k ZXggZTlkNGQ2MDA2ZS4uZmZkMzQwYTJlNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19jb25zdHJhaW50LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25z dHJhaW50LmMKQEAgLTc4LDYgKzc4LDcgQEAgQ3JlYXRlQ29uc3RyYWludEVudHJ5KGNvbnN0 IGNoYXIgKmNvbnN0cmFpbnROYW1lLAogCQkJCQkgIGJvb2wgY29uSXNMb2NhbCwKIAkJCQkJ ICBpbnQgY29uSW5oQ291bnQsCiAJCQkJCSAgYm9vbCBjb25Ob0luaGVyaXQsCisJCQkJCSAg Ym9vbCBjb25XaXRob3V0T3ZlcmxhcHMsCiAJCQkJCSAgYm9vbCBpc19pbnRlcm5hbCkKIHsK IAlSZWxhdGlvbgljb25EZXNjOwpAQCAtMTkzLDYgKzE5NCw3IEBAIENyZWF0ZUNvbnN0cmFp bnRFbnRyeShjb25zdCBjaGFyICpjb25zdHJhaW50TmFtZSwKIAl2YWx1ZXNbQW51bV9wZ19j b25zdHJhaW50X2NvbmlzbG9jYWwgLSAxXSA9IEJvb2xHZXREYXR1bShjb25Jc0xvY2FsKTsK IAl2YWx1ZXNbQW51bV9wZ19jb25zdHJhaW50X2NvbmluaGNvdW50IC0gMV0gPSBJbnQxNkdl dERhdHVtKGNvbkluaENvdW50KTsKIAl2YWx1ZXNbQW51bV9wZ19jb25zdHJhaW50X2Nvbm5v aW5oZXJpdCAtIDFdID0gQm9vbEdldERhdHVtKGNvbk5vSW5oZXJpdCk7CisJdmFsdWVzW0Fu dW1fcGdfY29uc3RyYWludF9jb253aXRob3V0b3ZlcmxhcHMgLSAxXSA9IEJvb2xHZXREYXR1 bShjb25XaXRob3V0T3ZlcmxhcHMpOwogCiAJaWYgKGNvbmtleUFycmF5KQogCQl2YWx1ZXNb QW51bV9wZ19jb25zdHJhaW50X2NvbmtleSAtIDFdID0gUG9pbnRlckdldERhdHVtKGNvbmtl eUFycmF5KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggZTU2MjA1YWJkOC4u OGMwNmFhMDk1NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRz LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTE2LDYgKzE2 LDcgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiYWNjZXNzL2FtYXBp LmgiCisjaW5jbHVkZSAiYWNjZXNzL2dpc3RfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImFjY2Vz cy9oZWFwYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVk ZSAiYWNjZXNzL3JlbG9wdGlvbnMuaCIKQEAgLTg2LDYgKzg3LDcgQEAgc3RhdGljIHZvaWQg Q29tcHV0ZUluZGV4QXR0cnMoSW5kZXhJbmZvICppbmRleEluZm8sCiAJCQkJCQkJICBPaWQg YWNjZXNzTWV0aG9kSWQsCiAJCQkJCQkJICBib29sIGFtY2Fub3JkZXIsCiAJCQkJCQkJICBi b29sIGlzY29uc3RyYWludCwKKwkJCQkJCQkgIGJvb2wgaXN3aXRob3V0b3ZlcmxhcHMsCiAJ CQkJCQkJICBPaWQgZGRsX3VzZXJpZCwKIAkJCQkJCQkgIGludCBkZGxfc2VjX2NvbnRleHQs CiAJCQkJCQkJICBpbnQgKmRkbF9zYXZlX25lc3RsZXZlbCk7CkBAIC0xNDQsNiArMTQ2LDcg QEAgdHlwZWRlZiBzdHJ1Y3QgUmVpbmRleEVycm9ySW5mbwogICoJCXRvIGluZGV4IG9uLgog ICogJ2V4Y2x1c2lvbk9wTmFtZXMnOiBsaXN0IG9mIG5hbWVzIG9mIGV4Y2x1c2lvbi1jb25z dHJhaW50IG9wZXJhdG9ycywKICAqCQlvciBOSUwgaWYgbm90IGFuIGV4Y2x1c2lvbiBjb25z dHJhaW50LgorICogJ2lzV2l0aG91dE92ZXJsYXBzJzogdHJ1ZSBpZmYgdGhpcyBpbmRleCBo YXMgYSBXSVRIT1VUIE9WRVJMQVBTIGNsYXVzZS4KICAqCiAgKiBUaGlzIGlzIHRhaWxvcmVk IHRvIHRoZSBuZWVkcyBvZiBBTFRFUiBUQUJMRSBBTFRFUiBUWVBFLCB3aGljaCByZWNyZWF0 ZXMKICAqIGFueSBpbmRleGVzIHRoYXQgZGVwZW5kZWQgb24gYSBjaGFuZ2luZyBjb2x1bW4g ZnJvbSB0aGVpciBwZ19nZXRfaW5kZXhkZWYKQEAgLTE3Myw3ICsxNzYsOCBAQCBib29sCiBD aGVja0luZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJCQkJCSBjb25zdCBjaGFyICphY2Nl c3NNZXRob2ROYW1lLAogCQkJCQkgY29uc3QgTGlzdCAqYXR0cmlidXRlTGlzdCwKLQkJCQkJ IGNvbnN0IExpc3QgKmV4Y2x1c2lvbk9wTmFtZXMpCisJCQkJCSBjb25zdCBMaXN0ICpleGNs dXNpb25PcE5hbWVzLAorCQkJCQkgYm9vbCBpc1dpdGhvdXRPdmVybGFwcykKIHsKIAlib29s CQlpc2NvbnN0cmFpbnQ7CiAJT2lkCQkgICAqdHlwZUlkczsKQEAgLTI0OCw4ICsyNTIsOCBA QCBDaGVja0luZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJCQkJCSAgY29sb3B0aW9ucywg YXR0cmlidXRlTGlzdCwKIAkJCQkJICBleGNsdXNpb25PcE5hbWVzLCByZWxhdGlvbklkLAog CQkJCQkgIGFjY2Vzc01ldGhvZE5hbWUsIGFjY2Vzc01ldGhvZElkLAotCQkJCQkgIGFtY2Fu b3JkZXIsIGlzY29uc3RyYWludCwgSW52YWxpZE9pZCwgMCwgTlVMTCk7Ci0KKwkJCQkJICBh bWNhbm9yZGVyLCBpc2NvbnN0cmFpbnQsIGlzV2l0aG91dE92ZXJsYXBzLCBJbnZhbGlkT2lk LAorCQkJCQkgIDAsIE5VTEwpOwogCiAJLyogR2V0IHRoZSBzb29uLW9ic29sZXRlIHBnX2lu ZGV4IHR1cGxlLiAqLwogCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKElOREVYUkVMSUQsIE9i amVjdElkR2V0RGF0dW0ob2xkSWQpKTsKQEAgLTU1OSw2ICs1NjMsNyBAQCBEZWZpbmVJbmRl eChPaWQgdGFibGVJZCwKIAlib29sCQlhbWNhbm9yZGVyOwogCWJvb2wJCWFtaXNzdW1tYXJp emluZzsKIAlhbW9wdGlvbnNfZnVuY3Rpb24gYW1vcHRpb25zOworCWJvb2wJCWV4Y2x1c2lv bjsKIAlib29sCQlwYXJ0aXRpb25lZDsKIAlib29sCQlzYWZlX2luZGV4OwogCURhdHVtCQly ZWxvcHRpb25zOwpAQCAtNjc3LDYgKzY4MiwxMiBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJ ZCwKIAogCW5hbWVzcGFjZUlkID0gUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKTsKIAorCS8q CisJICogSXQgaGFzIGV4Y2x1c2lvbiBjb25zdHJhaW50IGJlaGF2aW9yIGlmIGl0J3MgYW4g RVhDTFVERSBjb25zdHJhaW50CisJICogb3IgYSB0ZW1wb3JhbCBQUklNQVJZIEtFWS9VTklR VUUgY29uc3RyYWludAorCSAqLworCWV4Y2x1c2lvbiA9IHN0bXQtPmV4Y2x1ZGVPcE5hbWVz IHx8IHN0bXQtPmlzd2l0aG91dG92ZXJsYXBzOworCiAJLyogRW5zdXJlIHRoYXQgaXQgbWFr ZXMgc2Vuc2UgdG8gaW5kZXggdGhpcyBraW5kIG9mIHJlbGF0aW9uICovCiAJc3dpdGNoIChy ZWwtPnJkX3JlbC0+cmVsa2luZCkKIAl7CkBAIC04NDUsNyArODU2LDcgQEAgRGVmaW5lSW5k ZXgoT2lkIHRhYmxlSWQsCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVT U19DUkVBVEVJRFhfQUNDRVNTX01FVEhPRF9PSUQsCiAJCQkJCQkJCSBhY2Nlc3NNZXRob2RJ ZCk7CiAKLQlpZiAoc3RtdC0+dW5pcXVlICYmICFhbVJvdXRpbmUtPmFtY2FudW5pcXVlKQor CWlmIChzdG10LT51bmlxdWUgJiYgIXN0bXQtPmlzd2l0aG91dG92ZXJsYXBzICYmICFhbVJv dXRpbmUtPmFtY2FudW5pcXVlKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVS UkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkgZXJybXNnKCJhY2Nlc3MgbWV0 aG9kIFwiJXNcIiBkb2VzIG5vdCBzdXBwb3J0IHVuaXF1ZSBpbmRleGVzIiwKQEAgLTg2MCw3 ICs4NzEsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJIGVycm1zZygiYWNjZXNzIG1ldGhv ZCBcIiVzXCIgZG9lcyBub3Qgc3VwcG9ydCBtdWx0aWNvbHVtbiBpbmRleGVzIiwKIAkJCQkJ CWFjY2Vzc01ldGhvZE5hbWUpKSk7Ci0JaWYgKHN0bXQtPmV4Y2x1ZGVPcE5hbWVzICYmIGFt Um91dGluZS0+YW1nZXR0dXBsZSA9PSBOVUxMKQorCWlmIChleGNsdXNpb24gJiYgYW1Sb3V0 aW5lLT5hbWdldHR1cGxlID09IE5VTEwpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJtc2coImFjY2Vz cyBtZXRob2QgXCIlc1wiIGRvZXMgbm90IHN1cHBvcnQgZXhjbHVzaW9uIGNvbnN0cmFpbnRz IiwKQEAgLTkxMyw4ICs5MjQsOSBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkJCQkJ ICBjb2xvcHRpb25zLCBhbGxJbmRleFBhcmFtcywKIAkJCQkJICBzdG10LT5leGNsdWRlT3BO YW1lcywgdGFibGVJZCwKIAkJCQkJICBhY2Nlc3NNZXRob2ROYW1lLCBhY2Nlc3NNZXRob2RJ ZCwKLQkJCQkJICBhbWNhbm9yZGVyLCBzdG10LT5pc2NvbnN0cmFpbnQsIHJvb3Rfc2F2ZV91 c2VyaWQsCi0JCQkJCSAgcm9vdF9zYXZlX3NlY19jb250ZXh0LCAmcm9vdF9zYXZlX25lc3Rs ZXZlbCk7CisJCQkJCSAgYW1jYW5vcmRlciwgc3RtdC0+aXNjb25zdHJhaW50LCBzdG10LT5p c3dpdGhvdXRvdmVybGFwcywKKwkJCQkJICByb290X3NhdmVfdXNlcmlkLCByb290X3NhdmVf c2VjX2NvbnRleHQsCisJCQkJCSAgJnJvb3Rfc2F2ZV9uZXN0bGV2ZWwpOwogCiAJLyoKIAkg KiBFeHRyYSBjaGVja3Mgd2hlbiBjcmVhdGluZyBhIFBSSU1BUlkgS0VZIGluZGV4LgpAQCAt OTMyLDcgKzk0NCw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCSAqIFdlIGNvdWxk IGxpZnQgdGhpcyBsaW1pdGF0aW9uIGlmIHdlIGhhZCBnbG9iYWwgaW5kZXhlcywgYnV0IHRo b3NlIGhhdmUKIAkgKiB0aGVpciBvd24gcHJvYmxlbXMsIHNvIHRoaXMgaXMgYSB1c2VmdWwg ZmVhdHVyZSBjb21iaW5hdGlvbi4KIAkgKi8KLQlpZiAocGFydGl0aW9uZWQgJiYgKHN0bXQt PnVuaXF1ZSB8fCBzdG10LT5leGNsdWRlT3BOYW1lcykpCisJaWYgKHBhcnRpdGlvbmVkICYm IChzdG10LT51bmlxdWUgfHwgZXhjbHVzaW9uKSkKIAl7CiAJCVBhcnRpdGlvbktleSBrZXkg PSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShyZWwpOwogCQljb25zdCBjaGFyICpjb25zdHJh aW50X3R5cGU7CkBAIC05ODYsMTAgKzk5OCwxMCBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJ ZCwKIAkJCSAqIGFzc29jaWF0ZWQgd2l0aCBpbmRleCBjb2x1bW5zLCB0b28uICBXZSBrbm93 IHdoYXQgdG8gZG8gd2l0aAogCQkJICogYnRyZWUgb3BjbGFzc2VzOyBpZiB0aGVyZSBhcmUg ZXZlciBhbnkgb3RoZXIgaW5kZXggdHlwZXMgdGhhdAogCQkJICogc3VwcG9ydCB1bmlxdWUg aW5kZXhlcywgdGhpcyBsb2dpYyB3aWxsIG5lZWQgZXh0ZW5zaW9uLiBCdXQgaWYKLQkJCSAq IHdlIGhhdmUgYW4gZXhjbHVzaW9uIGNvbnN0cmFpbnQsIGl0IGFscmVhZHkga25vd3MgdGhl Ci0JCQkgKiBvcGVyYXRvcnMsIHNvIHdlIGRvbid0IGhhdmUgdG8gaW5mZXIgdGhlbS4KKwkJ CSAqIHdlIGhhdmUgYW4gZXhjbHVzaW9uIGNvbnN0cmFpbnQgKG9yIGEgdGVtcG9yYWwgUEsp LCBpdCBhbHJlYWR5CisJCQkgKiBrbm93cyB0aGUgb3BlcmF0b3JzLCBzbyB3ZSBkb24ndCBo YXZlIHRvIGluZmVyIHRoZW0uCiAJCQkgKi8KLQkJCWlmIChzdG10LT51bmlxdWUgJiYgYWNj ZXNzTWV0aG9kSWQgIT0gQlRSRUVfQU1fT0lEKQorCQkJaWYgKHN0bXQtPnVuaXF1ZSAmJiAh c3RtdC0+aXN3aXRob3V0b3ZlcmxhcHMgJiYgYWNjZXNzTWV0aG9kSWQgIT0gQlRSRUVfQU1f T0lEKQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRV UkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJCQkgZXJybXNnKCJjYW5ub3QgbWF0Y2ggcGFydGl0 aW9uIGtleSB0byBhbiBpbmRleCB1c2luZyBhY2Nlc3MgbWV0aG9kIFwiJXNcIiIsCkBAIC0x MDI4LDEyICsxMDQwLDEyIEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQkJCQl7CiAJ CQkJCQlPaWQJCQlpZHhfZXFvcCA9IEludmFsaWRPaWQ7CiAKLQkJCQkJCWlmIChzdG10LT51 bmlxdWUpCisJCQkJCQlpZiAoc3RtdC0+dW5pcXVlICYmICFzdG10LT5pc3dpdGhvdXRvdmVy bGFwcykKIAkJCQkJCQlpZHhfZXFvcCA9IGdldF9vcGZhbWlseV9tZW1iZXIoaWR4X29wZmFt aWx5LAogCQkJCQkJCQkJCQkJCQkgICBpZHhfb3BjaW50eXBlLAogCQkJCQkJCQkJCQkJCQkg ICBpZHhfb3BjaW50eXBlLAogCQkJCQkJCQkJCQkJCQkgICBCVEVxdWFsU3RyYXRlZ3lOdW1i ZXIpOwotCQkJCQkJZWxzZSBpZiAoc3RtdC0+ZXhjbHVkZU9wTmFtZXMpCisJCQkJCQllbHNl IGlmIChleGNsdXNpb24pCiAJCQkJCQkJaWR4X2Vxb3AgPSBpbmRleEluZm8tPmlpX0V4Y2x1 c2lvbk9wc1tqXTsKIAkJCQkJCUFzc2VydChpZHhfZXFvcCk7CiAKQEAgLTEwNDIsNyArMTA1 NCw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQkJCQkJCWZvdW5kID0gdHJ1ZTsK IAkJCQkJCQlicmVhazsKIAkJCQkJCX0KLQkJCQkJCWVsc2UgaWYgKHN0bXQtPmV4Y2x1ZGVP cE5hbWVzKQorCQkJCQkJZWxzZSBpZiAoZXhjbHVzaW9uKQogCQkJCQkJewogCQkJCQkJCS8q CiAJCQkJCQkJICogV2UgZm91bmQgYSBtYXRjaCwgYnV0IGl0J3Mgbm90IGFuIGVxdWFsaXR5 CkBAIC0xMTg2LDYgKzExOTgsOCBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkJY29u c3RyX2ZsYWdzIHw9IElOREVYX0NPTlNUUl9DUkVBVEVfREVGRVJSQUJMRTsKIAlpZiAoc3Rt dC0+aW5pdGRlZmVycmVkKQogCQljb25zdHJfZmxhZ3MgfD0gSU5ERVhfQ09OU1RSX0NSRUFU RV9JTklUX0RFRkVSUkVEOworCWlmIChzdG10LT5pc3dpdGhvdXRvdmVybGFwcykKKwkJY29u c3RyX2ZsYWdzIHw9IElOREVYX0NPTlNUUl9DUkVBVEVfV0lUSE9VVF9PVkVSTEFQUzsKIAog CWluZGV4UmVsYXRpb25JZCA9CiAJCWluZGV4X2NyZWF0ZShyZWwsIGluZGV4UmVsYXRpb25O YW1lLCBpbmRleFJlbGF0aW9uSWQsIHBhcmVudEluZGV4SWQsCkBAIC0xODUwLDYgKzE4NjQs NyBAQCBDb21wdXRlSW5kZXhBdHRycyhJbmRleEluZm8gKmluZGV4SW5mbywKIAkJCQkgIE9p ZCBhY2Nlc3NNZXRob2RJZCwKIAkJCQkgIGJvb2wgYW1jYW5vcmRlciwKIAkJCQkgIGJvb2wg aXNjb25zdHJhaW50LAorCQkJCSAgYm9vbCBpc3dpdGhvdXRvdmVybGFwcywKIAkJCQkgIE9p ZCBkZGxfdXNlcmlkLAogCQkJCSAgaW50IGRkbF9zZWNfY29udGV4dCwKIAkJCQkgIGludCAq ZGRsX3NhdmVfbmVzdGxldmVsKQpAQCAtMTg3Myw2ICsxODg4LDE0IEBAIENvbXB1dGVJbmRl eEF0dHJzKEluZGV4SW5mbyAqaW5kZXhJbmZvLAogCWVsc2UKIAkJbmV4dEV4Y2xPcCA9IE5V TEw7CiAKKwkvKiBleGNsdXNpb25PcE5hbWVzIGNhbiBiZSBub24tTklMIGlmIHdlIGFyZSBj cmVhdGluZyBhIHBhcnRpdGlvbiAqLworCWlmIChpc3dpdGhvdXRvdmVybGFwcyAmJiBleGNs dXNpb25PcE5hbWVzID09IE5JTCkKKwl7CisJCWluZGV4SW5mby0+aWlfRXhjbHVzaW9uT3Bz ID0gcGFsbG9jX2FycmF5KE9pZCwgbmtleWNvbHMpOworCQlpbmRleEluZm8tPmlpX0V4Y2x1 c2lvblByb2NzID0gcGFsbG9jX2FycmF5KE9pZCwgbmtleWNvbHMpOworCQlpbmRleEluZm8t PmlpX0V4Y2x1c2lvblN0cmF0cyA9IHBhbGxvY19hcnJheSh1aW50MTYsIG5rZXljb2xzKTsK Kwl9CisKIAlpZiAoT2lkSXNWYWxpZChkZGxfdXNlcmlkKSkKIAkJR2V0VXNlcklkQW5kU2Vj Q29udGV4dCgmc2F2ZV91c2VyaWQsICZzYXZlX3NlY19jb250ZXh0KTsKIApAQCAtMjE0OSw2 ICsyMTcyLDMxIEBAIENvbXB1dGVJbmRleEF0dHJzKEluZGV4SW5mbyAqaW5kZXhJbmZvLAog CQkJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25TdHJhdHNbYXR0bl0gPSBzdHJhdDsKIAkJCW5l eHRFeGNsT3AgPSBsbmV4dChleGNsdXNpb25PcE5hbWVzLCBuZXh0RXhjbE9wKTsKIAkJfQor CQllbHNlIGlmIChpc3dpdGhvdXRvdmVybGFwcykKKwkJeworCQkJU3RyYXRlZ3lOdW1iZXIg c3RyYXQ7CisJCQlPaWQgb3BpZDsKKwkJCWNoYXIgKm9wbmFtZTsKKworCQkJaWYgKGF0dG4g PT0gbmtleWNvbHMgLSAxKQorCQkJeworCQkJCXN0cmF0ID0gUlRPdmVybGFwU3RyYXRlZ3lO dW1iZXI7CisJCQkJb3BuYW1lID0gIm92ZXJsYXBzIjsKKwkJCX0KKwkJCWVsc2UKKwkJCXsK KwkJCQlzdHJhdCA9IFJURXF1YWxTdHJhdGVneU51bWJlcjsKKwkJCQlvcG5hbWUgPSAiZXF1 YWxzIjsKKwkJCX0KKwkJCUdldE9wZXJhdG9yRnJvbUNhbm9uaWNhbFN0cmF0ZWd5KG9wY2xh c3NPaWRzW2F0dG5dLAorCQkJCQkJCQkJCQkgYXR0dHlwZSwKKwkJCQkJCQkJCQkJIG9wbmFt ZSwKKwkJCQkJCQkJCQkJICZvcGlkLAorCQkJCQkJCQkJCQkgJnN0cmF0KTsKKwkJCWluZGV4 SW5mby0+aWlfRXhjbHVzaW9uT3BzW2F0dG5dID0gb3BpZDsKKwkJCWluZGV4SW5mby0+aWlf RXhjbHVzaW9uUHJvY3NbYXR0bl0gPSBnZXRfb3Bjb2RlKG9waWQpOworCQkJaW5kZXhJbmZv LT5paV9FeGNsdXNpb25TdHJhdHNbYXR0bl0gPSBzdHJhdDsKKwkJfQogCiAJCS8qCiAJCSAq IFNldCB1cCB0aGUgcGVyLWNvbHVtbiBvcHRpb25zIChpbmRvcHRpb24gZmllbGQpLiAgRm9y IG5vdywgdGhpcyBpcwpAQCAtMjM3OSw2ICsyNDI3LDg3IEBAIEdldERlZmF1bHRPcENsYXNz KE9pZCB0eXBlX2lkLCBPaWQgYW1faWQpCiAJcmV0dXJuIEludmFsaWRPaWQ7CiB9CiAKKy8q CisgKiBHZXRPcGVyYXRvckZyb21DYW5vbmljYWxTdHJhdGVneQorICoKKyAqIG9wY2xhc3Mg LSB0aGUgb3BjbGFzcyB0byB1c2UKKyAqIGF0dHR5cGUgLSB0aGUgdHlwZSB0byBhc2sgYWJv dXQKKyAqIG9wbmFtZSAtIHVzZWQgdG8gYnVpbGQgZXJyb3IgbWVzc2FnZXMKKyAqIG9waWQg LSBob2xkcyB0aGUgb3BlcmF0b3Igd2UgZm91bmQKKyAqIHN0cmF0IC0gaG9sZHMgdGhlIGlu cHV0IGFuZCBvdXRwdXQgc3RyYXRlZ3kgbnVtYmVyCisgKgorICogRmluZHMgYW4gb3BlcmF0 b3IgZnJvbSBhICJ3ZWxsLWtub3duIiBzdHJhdGVneSBudW1iZXIuCisgKiBUaGlzIGlzIHVz ZWQgZm9yIHRlbXBvcmFsIGluZGV4IGNvbnN0cmFpbnRzCisgKiAoYW5kIG90aGVyIHRlbXBv cmFsIGZlYXR1cmVzKQorICogdG8gbG9vayB1cCBlcXVhbGl0eSBhbmQgb3ZlcmxhcHMgb3Bl cmF0b3JzLCBzaW5jZQorICogdGhlIHN0cmF0ZWd5IG51bWJlcnMgZm9yIG5vbi1idHJlZSBp bmRleGFtcyBuZWVkIG5vdAorICogZm9sbG93IGFueSBmaXhlZCBzY2hlbWUuIFdlIGFzayBh biBvcGNsYXNzIHN1cHBvcnQKKyAqIGZ1bmN0aW9uIHRvIHRyYW5zbGF0ZSBmcm9tIHRoZSB3 ZWxsLWtub3duIG51bWJlcgorICogdG8gdGhlIGludGVybmFsIHZhbHVlLiBJZiB0aGUgZnVu Y3Rpb24gaXNuJ3QgZGVmaW5lZAorICogb3IgaXQgZ2l2ZXMgbm8gcmVzdWx0LCB3ZSByZXRy dW4gSW52YWxpZFN0cmF0ZWd5LgorICovCit2b2lkCitHZXRPcGVyYXRvckZyb21DYW5vbmlj YWxTdHJhdGVneShPaWQgb3BjbGFzcywKKwkJCQkJCQkJIE9pZCBhdHR0eXBlLAorCQkJCQkJ CQkgY29uc3QgY2hhciAqb3BuYW1lLAorCQkJCQkJCQkgT2lkICpvcGlkLAorCQkJCQkJCQkg U3RyYXRlZ3lOdW1iZXIgKnN0cmF0KQoreworCU9pZCBvcGZhbWlseTsKKwlPaWQgb3BjaW50 eXBlOworCVN0cmF0ZWd5TnVtYmVyIG9wc3RyYXQgPSAqc3RyYXQ7CisKKwkqb3BpZCA9IElu dmFsaWRPaWQ7CisKKwlpZiAoZ2V0X29wY2xhc3Nfb3BmYW1pbHlfYW5kX2lucHV0X3R5cGUo b3BjbGFzcywKKwkJCQkJCQkJCQkJJm9wZmFtaWx5LAorCQkJCQkJCQkJCQkmb3BjaW50eXBl KSkKKwl7CisJCS8qCisJCSAqIEFzayB0aGUgb3BjbGFzcyB0byB0cmFuc2xhdGUgdG8gaXRz IGludGVybmFsIHN0cmF0bnVtCisJCSAqCisJCSAqIEZvciBub3cgd2Ugb25seSBuZWVkIEdp U1Qgc3VwcG9ydCwgYnV0IHRoaXMgY291bGQgc3VwcG9ydAorCQkgKiBvdGhlciBpbmRleGFt cyBpZiB3ZSB3YW50ZWQuCisJCSAqLworCQkqc3RyYXQgPSBnaXN0VHJhbnNsYXRlU3RyYXRu dW0ob3BjbGFzcywgb3BzdHJhdCk7CisJCWlmICghU3RyYXRlZ3lJc1ZhbGlkKCpzdHJhdCkp CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9P QkpFQ1QpLAorCQkJCQkgZXJybXNnKCJubyAlcyBvcGVyYXRvciBmb3VuZCBmb3IgV0lUSE9V VCBPVkVSTEFQUyBjb25zdHJhaW50Iiwgb3BuYW1lKSwKKwkJCQkJIGVycmRldGFpbCgiQ291 bGQgbm90IHRyYW5zbGF0ZSBzdHJhdGVneSBudW1iZXIgJXUgZm9yIG9wY2xhc3MgJWQuIiwK KwkJCQkJCSBvcHN0cmF0LCBvcGNsYXNzKSwKKwkJCQkJIGVycmhpbnQoIkRlZmluZSBhIHN0 cmF0bnVtIHN1cHBvcnQgZnVuY3Rpb24gZm9yIHlvdXIgR2lTVCBvcGNsYXNzLiIpKSk7CisK KwkJKm9waWQgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBvcGNpbnR5cGUsIG9w Y2ludHlwZSwgKnN0cmF0KTsKKwl9CisKKwlpZiAoIU9pZElzVmFsaWQoKm9waWQpKQorCXsK KwkJSGVhcFR1cGxlCW9wZnR1cGxlOworCQlGb3JtX3BnX29wZmFtaWx5IG9wZmZvcm07CisK KwkJLyoKKwkJICogYXR0cmlidXRlLT5vcGNsYXNzIG1pZ2h0IG5vdCBleHBsaWNpdGx5IG5h bWUgdGhlIG9wZmFtaWx5LAorCQkgKiBzbyBmZXRjaCB0aGUgbmFtZSBvZiB0aGUgc2VsZWN0 ZWQgb3BmYW1pbHkgZm9yIHVzZSBpbiB0aGUKKwkJICogZXJyb3IgbWVzc2FnZS4KKwkJICov CisJCW9wZnR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKE9QRkFNSUxZT0lELAorCQkJCQkJCQkg ICBPYmplY3RJZEdldERhdHVtKG9wZmFtaWx5KSk7CisJCWlmICghSGVhcFR1cGxlSXNWYWxp ZChvcGZ0dXBsZSkpCisJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Ig b3BmYW1pbHkgJXUiLAorCQkJCSBvcGZhbWlseSk7CisJCW9wZmZvcm0gPSAoRm9ybV9wZ19v cGZhbWlseSkgR0VUU1RSVUNUKG9wZnR1cGxlKTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJIGVycm1zZygibm8g JXMgb3BlcmF0b3IgZm91bmQgZm9yIFdJVEhPVVQgT1ZFUkxBUFMgY29uc3RyYWludCIsIG9w bmFtZSksCisJCQkJIGVycmRldGFpbCgiVGhlcmUgbXVzdCBiZSBhbiAlcyBvcGVyYXRvciB3 aXRoaW4gb3BmYW1pbHkgXCIlc1wiIGZvciB0eXBlIFwiJXNcIi4iLAorCQkJCQkJICAgb3Bu YW1lLAorCQkJCQkJICAgTmFtZVN0cihvcGZmb3JtLT5vcGZuYW1lKSwKKwkJCQkJCSAgIGZv cm1hdF90eXBlX2JlKGF0dHR5cGUpKSkpOworCX0KK30KKwogLyoKICAqCW1ha2VPYmplY3RO YW1lKCkKICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IGVmZDYwNzhmOGIu LjhkMTY1OGQyNmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21k cy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC0xMDA5Myw2 ICsxMDA5Myw3IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jZWQoTGlzdCAqKndxdWV1ZSwgQ29u c3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkgIGNvbmlz bG9jYWwsCS8qIGlzbG9jYWwgKi8KIAkJCQkJCQkJCSAgY29uaW5oY291bnQsCS8qIGluaGNv dW50ICovCiAJCQkJCQkJCQkgIGNvbm5vaW5oZXJpdCwgLyogY29uTm9Jbmhlcml0ICovCisJ CQkJCQkJCQkgIGZhbHNlLAkvKiBjb25XaXRob3V0T3ZlcmxhcHMgKi8KIAkJCQkJCQkJCSAg ZmFsc2UpOwkvKiBpc19pbnRlcm5hbCAqLwogCiAJT2JqZWN0QWRkcmVzc1NldChhZGRyZXNz LCBDb25zdHJhaW50UmVsYXRpb25JZCwgY29uc3RyT2lkKTsKQEAgLTEwMzkxLDYgKzEwMzky LDcgQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWlu dCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkgIGZhbHNlLAogCQkJ CQkJCQkJICAxLAogCQkJCQkJCQkJICBmYWxzZSwKKwkJCQkJCQkJCSAgZmFsc2UsCS8qIGNv bldpdGhvdXRPdmVybGFwcyAqLwogCQkJCQkJCQkJICBmYWxzZSk7CiAKIAkJCS8qCkBAIC0x MDg5Niw2ICsxMDg5OCw3IEBAIENsb25lRmtSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBS ZWxhdGlvbiBwYXJlbnRSZWwsIFJlbGF0aW9uIHBhcnRSZWwpCiAJCQkJCQkJCSAgZmFsc2Us CS8qIGlzbG9jYWwgKi8KIAkJCQkJCQkJICAxLAkvKiBpbmhjb3VudCAqLwogCQkJCQkJCQkg IGZhbHNlLAkvKiBjb25Ob0luaGVyaXQgKi8KKwkJCQkJCQkJICBmYWxzZSwJLyogY29uV2l0 aG91dE92ZXJsYXBzICovCiAJCQkJCQkJCSAgdHJ1ZSk7CiAKIAkJLyogU2V0IHVwIHBhcnRp dGlvbiBkZXBlbmRlbmNpZXMgZm9yIHRoZSBuZXcgY29uc3RyYWludCAqLwpAQCAtMTQyODQs NyArMTQyODcsOCBAQCBUcnlSZXVzZUluZGV4KE9pZCBvbGRJZCwgSW5kZXhTdG10ICpzdG10 KQogCWlmIChDaGVja0luZGV4Q29tcGF0aWJsZShvbGRJZCwKIAkJCQkJCQkgc3RtdC0+YWNj ZXNzTWV0aG9kLAogCQkJCQkJCSBzdG10LT5pbmRleFBhcmFtcywKLQkJCQkJCQkgc3RtdC0+ ZXhjbHVkZU9wTmFtZXMpKQorCQkJCQkJCSBzdG10LT5leGNsdWRlT3BOYW1lcywKKwkJCQkJ CQkgc3RtdC0+aXN3aXRob3V0b3ZlcmxhcHMpKQogCXsKIAkJUmVsYXRpb24JaXJlbCA9IGlu ZGV4X29wZW4ob2xkSWQsIE5vTG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwppbmRl eCA1MjE3Nzc1OWFiLi5hMTBhNDJiOTdmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCkBA IC04NDEsNiArODQxLDcgQEAgQ3JlYXRlVHJpZ2dlckZpcmluZ09uKENyZWF0ZVRyaWdTdG10 ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJCQkJCQkJICB0cnVlLCAv KiBpc2xvY2FsICovCiAJCQkJCQkJCQkJCSAgMCwJLyogaW5oY291bnQgKi8KIAkJCQkJCQkJ CQkJICB0cnVlLCAvKiBub2luaGVyaXQgKi8KKwkJCQkJCQkJCQkJICBmYWxzZSwgLyogY29u d2l0aG91dG92ZXJsYXBzICovCiAJCQkJCQkJCQkJCSAgaXNJbnRlcm5hbCk7CS8qIGlzX2lu dGVybmFsICovCiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBl Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYwppbmRleCBhYWY5NzI4 Njk3Li4yNDcwMDE5ODE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBl Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKQEAgLTM1NDQs NiArMzU0NCw3IEBAIGRvbWFpbkFkZENvbnN0cmFpbnQoT2lkIGRvbWFpbk9pZCwgT2lkIGRv bWFpbk5hbWVzcGFjZSwgT2lkIGJhc2VUeXBlT2lkLAogCQkJCQkJCSAgdHJ1ZSwgLyogaXMg bG9jYWwgKi8KIAkJCQkJCQkgIDAsCS8qIGluaGNvdW50ICovCiAJCQkJCQkJICBmYWxzZSwJ LyogY29ubm9pbmhlcml0ICovCisJCQkJCQkJICBmYWxzZSwJLyogY29ud2l0aG91dG92ZXJs YXBzICovCiAJCQkJCQkJICBmYWxzZSk7CS8qIGlzX2ludGVybmFsICovCiAJaWYgKGNvbnN0 ckFkZHIpCiAJCU9iamVjdEFkZHJlc3NTZXQoKmNvbnN0ckFkZHIsIENvbnN0cmFpbnRSZWxh dGlvbklkLCBjY29pZCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5j cy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwppbmRleCBlNjZhOTkyNDdlLi5m NTJhZTNmYzk3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCisr KyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKQEAgLTc1Niw2ICs3NTYsNyBAQCBf b3V0Q29uc3RyYWludChTdHJpbmdJbmZvIHN0ciwgY29uc3QgQ29uc3RyYWludCAqbm9kZSkK IAkJY2FzZSBDT05TVFJfUFJJTUFSWToKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoc3Ry LCAiUFJJTUFSWV9LRVkiKTsKIAkJCVdSSVRFX05PREVfRklFTEQoa2V5cyk7CisJCQlXUklU RV9CT09MX0ZJRUxEKHdpdGhvdXRfb3ZlcmxhcHMpOwogCQkJV1JJVEVfTk9ERV9GSUVMRChp bmNsdWRpbmcpOwogCQkJV1JJVEVfTk9ERV9GSUVMRChvcHRpb25zKTsKIAkJCVdSSVRFX1NU UklOR19GSUVMRChpbmRleG5hbWUpOwpAQCAtNzY4LDYgKzc2OSw3IEBAIF9vdXRDb25zdHJh aW50KFN0cmluZ0luZm8gc3RyLCBjb25zdCBDb25zdHJhaW50ICpub2RlKQogCQkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZyhzdHIsICJVTklRVUUiKTsKIAkJCVdSSVRFX0JPT0xfRklFTEQo bnVsbHNfbm90X2Rpc3RpbmN0KTsKIAkJCVdSSVRFX05PREVfRklFTEQoa2V5cyk7CisJCQlX UklURV9CT09MX0ZJRUxEKHdpdGhvdXRfb3ZlcmxhcHMpOwogCQkJV1JJVEVfTk9ERV9GSUVM RChpbmNsdWRpbmcpOwogCQkJV1JJVEVfTk9ERV9GSUVMRChvcHRpb25zKTsKIAkJCVdSSVRF X1NUUklOR19GSUVMRChpbmRleG5hbWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9k ZXMvcmVhZGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwppbmRleCBj YzIwMjFjMWY3Li5iNmVmMzBjZTBkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9y ZWFkZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwpAQCAtNDI3 LDYgKzQyNyw3IEBAIF9yZWFkQ29uc3RyYWludCh2b2lkKQogCiAJCWNhc2UgQ09OU1RSX1BS SU1BUlk6CiAJCQlSRUFEX05PREVfRklFTEQoa2V5cyk7CisJCQlSRUFEX0JPT0xfRklFTEQo d2l0aG91dF9vdmVybGFwcyk7CiAJCQlSRUFEX05PREVfRklFTEQoaW5jbHVkaW5nKTsKIAkJ CVJFQURfTk9ERV9GSUVMRChvcHRpb25zKTsKIAkJCVJFQURfU1RSSU5HX0ZJRUxEKGluZGV4 bmFtZSk7CkBAIC00MzgsNiArNDM5LDcgQEAgX3JlYWRDb25zdHJhaW50KHZvaWQpCiAJCWNh c2UgQ09OU1RSX1VOSVFVRToKIAkJCVJFQURfQk9PTF9GSUVMRChudWxsc19ub3RfZGlzdGlu Y3QpOwogCQkJUkVBRF9OT0RFX0ZJRUxEKGtleXMpOworCQkJUkVBRF9CT09MX0ZJRUxEKHdp dGhvdXRfb3ZlcmxhcHMpOwogCQkJUkVBRF9OT0RFX0ZJRUxEKGluY2x1ZGluZyk7CiAJCQlS RUFEX05PREVfRklFTEQob3B0aW9ucyk7CiAJCQlSRUFEX1NUUklOR19GSUVMRChpbmRleG5h bWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggNjNmMTcyZTE3NS4uMDJhZGE0M2E5MCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJz ZXIvZ3JhbS55CkBAIC01MjgsNyArNTI4LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNp dmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5 KTsKIAkJCQljb2x1bW5yZWYgaW5fZXhwciBoYXZpbmdfY2xhdXNlIGZ1bmNfdGFibGUgeG1s dGFibGUgYXJyYXlfZXhwcgogCQkJCU9wdFdoZXJlQ2xhdXNlIG9wZXJhdG9yX2RlZl9hcmcK ICV0eXBlIDxsaXN0Pglyb3dzZnJvbV9pdGVtIHJvd3Nmcm9tX2xpc3Qgb3B0X2NvbF9kZWZf bGlzdAotJXR5cGUgPGJvb2xlYW4+IG9wdF9vcmRpbmFsaXR5CisldHlwZSA8Ym9vbGVhbj4g b3B0X29yZGluYWxpdHkgb3B0X3dpdGhvdXRfb3ZlcmxhcHMKICV0eXBlIDxsaXN0PglFeGNs dXNpb25Db25zdHJhaW50TGlzdCBFeGNsdXNpb25Db25zdHJhaW50RWxlbQogJXR5cGUgPGxp c3Q+CWZ1bmNfYXJnX2xpc3QgZnVuY19hcmdfbGlzdF9vcHQKICV0eXBlIDxub2RlPglmdW5j X2FyZ19leHByCkBAIC00MTE3LDcgKzQxMTcsNyBAQCBDb25zdHJhaW50RWxlbToKIAkJCQkJ bi0+aW5pdGlhbGx5X3ZhbGlkID0gdHJ1ZTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJ CX0KLQkJCXwgVU5JUVVFIG9wdF91bmlxdWVfbnVsbF90cmVhdG1lbnQgJygnIGNvbHVtbkxp c3QgJyknIG9wdF9jX2luY2x1ZGUgb3B0X2RlZmluaXRpb24gT3B0Q29uc1RhYmxlU3BhY2UK KwkJCXwgVU5JUVVFIG9wdF91bmlxdWVfbnVsbF90cmVhdG1lbnQgJygnIGNvbHVtbkxpc3Qg b3B0X3dpdGhvdXRfb3ZlcmxhcHMgJyknIG9wdF9jX2luY2x1ZGUgb3B0X2RlZmluaXRpb24g T3B0Q29uc1RhYmxlU3BhY2UKIAkJCQlDb25zdHJhaW50QXR0cmlidXRlU3BlYwogCQkJCXsK IAkJCQkJQ29uc3RyYWludCAqbiA9IG1ha2VOb2RlKENvbnN0cmFpbnQpOwpAQCAtNDEyNiwx MSArNDEyNiwxMiBAQCBDb25zdHJhaW50RWxlbToKIAkJCQkJbi0+bG9jYXRpb24gPSBAMTsK IAkJCQkJbi0+bnVsbHNfbm90X2Rpc3RpbmN0ID0gISQyOwogCQkJCQluLT5rZXlzID0gJDQ7 Ci0JCQkJCW4tPmluY2x1ZGluZyA9ICQ2OwotCQkJCQluLT5vcHRpb25zID0gJDc7CisJCQkJ CW4tPndpdGhvdXRfb3ZlcmxhcHMgPSAkNTsKKwkJCQkJbi0+aW5jbHVkaW5nID0gJDc7CisJ CQkJCW4tPm9wdGlvbnMgPSAkODsKIAkJCQkJbi0+aW5kZXhuYW1lID0gTlVMTDsKLQkJCQkJ bi0+aW5kZXhzcGFjZSA9ICQ4OwotCQkJCQlwcm9jZXNzQ0FTYml0cygkOSwgQDksICJVTklR VUUiLAorCQkJCQluLT5pbmRleHNwYWNlID0gJDk7CisJCQkJCXByb2Nlc3NDQVNiaXRzKCQx MCwgQDEwLCAiVU5JUVVFIiwKIAkJCQkJCQkJICAgJm4tPmRlZmVycmFibGUsICZuLT5pbml0 ZGVmZXJyZWQsIE5VTEwsCiAJCQkJCQkJCSAgIE5VTEwsIHl5c2Nhbm5lcik7CiAJCQkJCSQk ID0gKE5vZGUgKikgbjsKQEAgLTQxNTEsNyArNDE1Miw3IEBAIENvbnN0cmFpbnRFbGVtOgog CQkJCQkJCQkgICBOVUxMLCB5eXNjYW5uZXIpOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJ CQkJfQotCQkJfCBQUklNQVJZIEtFWSAnKCcgY29sdW1uTGlzdCAnKScgb3B0X2NfaW5jbHVk ZSBvcHRfZGVmaW5pdGlvbiBPcHRDb25zVGFibGVTcGFjZQorCQkJfCBQUklNQVJZIEtFWSAn KCcgY29sdW1uTGlzdCBvcHRfd2l0aG91dF9vdmVybGFwcyAnKScgb3B0X2NfaW5jbHVkZSBv cHRfZGVmaW5pdGlvbiBPcHRDb25zVGFibGVTcGFjZQogCQkJCUNvbnN0cmFpbnRBdHRyaWJ1 dGVTcGVjCiAJCQkJewogCQkJCQlDb25zdHJhaW50ICpuID0gbWFrZU5vZGUoQ29uc3RyYWlu dCk7CkBAIC00MTU5LDExICs0MTYwLDEyIEBAIENvbnN0cmFpbnRFbGVtOgogCQkJCQluLT5j b250eXBlID0gQ09OU1RSX1BSSU1BUlk7CiAJCQkJCW4tPmxvY2F0aW9uID0gQDE7CiAJCQkJ CW4tPmtleXMgPSAkNDsKLQkJCQkJbi0+aW5jbHVkaW5nID0gJDY7Ci0JCQkJCW4tPm9wdGlv bnMgPSAkNzsKKwkJCQkJbi0+d2l0aG91dF9vdmVybGFwcyA9ICQ1OworCQkJCQluLT5pbmNs dWRpbmcgPSAkNzsKKwkJCQkJbi0+b3B0aW9ucyA9ICQ4OwogCQkJCQluLT5pbmRleG5hbWUg PSBOVUxMOwotCQkJCQluLT5pbmRleHNwYWNlID0gJDg7Ci0JCQkJCXByb2Nlc3NDQVNiaXRz KCQ5LCBAOSwgIlBSSU1BUlkgS0VZIiwKKwkJCQkJbi0+aW5kZXhzcGFjZSA9ICQ5OworCQkJ CQlwcm9jZXNzQ0FTYml0cygkMTAsIEAxMCwgIlBSSU1BUlkgS0VZIiwKIAkJCQkJCQkJICAg Jm4tPmRlZmVycmFibGUsICZuLT5pbml0ZGVmZXJyZWQsIE5VTEwsCiAJCQkJCQkJCSAgIE5V TEwsIHl5c2Nhbm5lcik7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKQEAgLTQyMzEsNiArNDIz MywxMSBAQCBvcHRfbm9faW5oZXJpdDoJTk8gSU5IRVJJVAkJCQkJCQl7ICAkJCA9IHRydWU7 IH0KIAkJCXwgLyogRU1QVFkgKi8JCQkJCQkJeyAgJCQgPSBmYWxzZTsgfQogCQk7CiAKK29w dF93aXRob3V0X292ZXJsYXBzOgorCQkJV0lUSE9VVCBPVkVSTEFQUwkJCQkJCXsgJCQgPSB0 cnVlOyB9CisJCQl8IC8qRU1QVFkqLwkJCQkJCQkJeyAkJCA9IGZhbHNlOyB9CisJOworCiBv cHRfY29sdW1uX2xpc3Q6CiAJCQknKCcgY29sdW1uTGlzdCAnKScJCQkJCQl7ICQkID0gJDI7 IH0KIAkJCXwgLypFTVBUWSovCQkJCQkJCQl7ICQkID0gTklMOyB9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3V0aWxjbWQuYwppbmRleCBjZjBkNDMyYWIxLi5hNWJiNDVkZjFlIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCisrKyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKQEAgLTE3MTYsNiArMTcxNiw3IEBAIGdlbmVy YXRlQ2xvbmVkSW5kZXhTdG10KFJhbmdlVmFyICpoZWFwUmVsLCBSZWxhdGlvbiBzb3VyY2Vf aWR4LAogCWluZGV4LT51bmlxdWUgPSBpZHhyZWMtPmluZGlzdW5pcXVlOwogCWluZGV4LT5u dWxsc19ub3RfZGlzdGluY3QgPSBpZHhyZWMtPmluZG51bGxzbm90ZGlzdGluY3Q7CiAJaW5k ZXgtPnByaW1hcnkgPSBpZHhyZWMtPmluZGlzcHJpbWFyeTsKKwlpbmRleC0+aXN3aXRob3V0 b3ZlcmxhcHMgPSAoaWR4cmVjLT5pbmRpc3ByaW1hcnkgfHwgaWR4cmVjLT5pbmRpc3VuaXF1 ZSkgJiYgaWR4cmVjLT5pbmRpc2V4Y2x1c2lvbjsKIAlpbmRleC0+dHJhbnNmb3JtZWQgPSB0 cnVlOwkvKiBkb24ndCBuZWVkIHRyYW5zZm9ybUluZGV4U3RtdCAqLwogCWluZGV4LT5jb25j dXJyZW50ID0gZmFsc2U7CiAJaW5kZXgtPmlmX25vdF9leGlzdHMgPSBmYWxzZTsKQEAgLTE3 NjUsNyArMTc2Niw5IEBAIGdlbmVyYXRlQ2xvbmVkSW5kZXhTdG10KFJhbmdlVmFyICpoZWFw UmVsLCBSZWxhdGlvbiBzb3VyY2VfaWR4LAogCQkJCWludAkJCW5FbGVtczsKIAkJCQlpbnQJ CQlpOwogCi0JCQkJQXNzZXJ0KGNvbnJlYy0+Y29udHlwZSA9PSBDT05TVFJBSU5UX0VYQ0xV U0lPTik7CisJCQkJQXNzZXJ0KGNvbnJlYy0+Y29udHlwZSA9PSBDT05TVFJBSU5UX0VYQ0xV U0lPTiB8fAorCQkJCQkJKGluZGV4LT5pc3dpdGhvdXRvdmVybGFwcyAmJgorCQkJCQkJIChj b25yZWMtPmNvbnR5cGUgPT0gQ09OU1RSQUlOVF9QUklNQVJZIHx8IGNvbnJlYy0+Y29udHlw ZSA9PSBDT05TVFJBSU5UX1VOSVFVRSkpKTsKIAkJCQkvKiBFeHRyYWN0IG9wZXJhdG9yIE9J RHMgZnJvbSB0aGUgcGdfY29uc3RyYWludCB0dXBsZSAqLwogCQkJCWRhdHVtID0gU3lzQ2Fj aGVHZXRBdHRyTm90TnVsbChDT05TVFJPSUQsIGh0X2NvbnN0ciwKIAkJCQkJCQkJCQkJICAg QW51bV9wZ19jb25zdHJhaW50X2NvbmV4Y2xvcCk7CkBAIC0yMzA1LDYgKzIzMDgsNyBAQCB0 cmFuc2Zvcm1JbmRleENvbnN0cmFpbnQoQ29uc3RyYWludCAqY29uc3RyYWludCwgQ3JlYXRl U3RtdENvbnRleHQgKmN4dCkKIAl9CiAJaW5kZXgtPm51bGxzX25vdF9kaXN0aW5jdCA9IGNv bnN0cmFpbnQtPm51bGxzX25vdF9kaXN0aW5jdDsKIAlpbmRleC0+aXNjb25zdHJhaW50ID0g dHJ1ZTsKKwlpbmRleC0+aXN3aXRob3V0b3ZlcmxhcHMgPSBjb25zdHJhaW50LT53aXRob3V0 X292ZXJsYXBzOwogCWluZGV4LT5kZWZlcnJhYmxlID0gY29uc3RyYWludC0+ZGVmZXJyYWJs ZTsKIAlpbmRleC0+aW5pdGRlZmVycmVkID0gY29uc3RyYWludC0+aW5pdGRlZmVycmVkOwog CkBAIC0yMzk3LDYgKzI0MDEsMTEgQEAgdHJhbnNmb3JtSW5kZXhDb25zdHJhaW50KENvbnN0 cmFpbnQgKmNvbnN0cmFpbnQsIENyZWF0ZVN0bXRDb250ZXh0ICpjeHQpCiAJCQkJCSBlcnJt c2coImluZGV4IFwiJXNcIiBpcyBub3QgdmFsaWQiLCBpbmRleF9uYW1lKSwKIAkJCQkJIHBh cnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwgY29uc3RyYWludC0+bG9jYXRpb24pKSk7 CiAKKwkJLyoKKwkJICogVG9kYXkgd2UgZm9yYmlkIG5vbi11bmlxdWUgaW5kZXhlcywgYnV0 IHdlIGNvdWxkIHBlcm1pdCBHaVNUCisJCSAqIGluZGV4ZXMgd2hvc2UgbGFzdCBlbnRyeSBp cyBhIHJhbmdlIHR5cGUgYW5kIHVzZSB0aGF0IHRvIGNyZWF0ZSBhCisJCSAqIFdJVEhPVVQg T1ZFUkxBUFMgY29uc3RyYWludCAoaS5lLiBhIHRlbXBvcmFsIGNvbnN0cmFpbnQpLgorCQkg Ki8KIAkJaWYgKCFpbmRleF9mb3JtLT5pbmRpc3VuaXF1ZSkKIAkJCWVyZXBvcnQoRVJST1Is CiAJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLApAQCAtMjY3Myw2 ICsyNjgyLDIzIEBAIHRyYW5zZm9ybUluZGV4Q29uc3RyYWludChDb25zdHJhaW50ICpjb25z dHJhaW50LCBDcmVhdGVTdG10Q29udGV4dCAqY3h0KQogCQkJCW5vdG51bGxjbWRzID0gbGFw cGVuZChub3RudWxsY21kcywgbm90bnVsbGNtZCk7CiAJCQl9CiAJCX0KKworCQlpZiAoY29u c3RyYWludC0+d2l0aG91dF9vdmVybGFwcykKKwkJeworCQkJLyoKKwkJCSAqIFRoaXMgZW5m b3JjZXMgdGhhdCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgZXF1YWxpdHkgY29sdW1uIGJlc2lk ZXMKKwkJCSAqIHRoZSBXSVRIT1VUIE9WRVJMQVBTIGNvbHVtbnMuICBUaGlzIGlzIHBlciBT UUwgc3RhbmRhcmQuICBYWFgKKwkJCSAqIERvIHdlIG5lZWQgdGhpcz8KKwkJCSAqLworCQkJ aWYgKGxpc3RfbGVuZ3RoKGNvbnN0cmFpbnQtPmtleXMpIDwgMikKKwkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQllcnJt c2coImNvbnN0cmFpbnQgdXNpbmcgV0lUSE9VVCBPVkVSTEFQUyBuZWVkcyBhdCBsZWFzdCB0 d28gY29sdW1ucyIpKTsKKworCQkJLyogV0lUSE9VVCBPVkVSTEFQUyByZXF1aXJlcyBhIEdp U1QgaW5kZXggKi8KKwkJCWluZGV4LT5hY2Nlc3NNZXRob2QgPSAiZ2lzdCI7CisJCX0KKwog CX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxz LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggZWQ3ZjQwZjA1 My4uMjVhYzBhZDFiYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1 dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMzM5 LDcgKzMzOSw3IEBAIHN0YXRpYyBjaGFyICpwZ19nZXRfdmlld2RlZl93b3JrZXIoT2lkIHZp ZXdvaWQsCiAJCQkJCQkJCSAgIGludCBwcmV0dHlGbGFncywgaW50IHdyYXBDb2x1bW4pOwog c3RhdGljIGNoYXIgKnBnX2dldF90cmlnZ2VyZGVmX3dvcmtlcihPaWQgdHJpZ2lkLCBib29s IHByZXR0eSk7CiBzdGF0aWMgaW50CWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkoRGF0 dW0gY29sdW1uX2luZGV4X2FycmF5LCBPaWQgcmVsSWQsCi0JCQkJCQkJCQkJIFN0cmluZ0lu Zm8gYnVmKTsKKwkJCQkJCQkJCQkgYm9vbCB3aXRob3V0T3ZlcmxhcHMsIFN0cmluZ0luZm8g YnVmKTsKIHN0YXRpYyBjaGFyICpwZ19nZXRfcnVsZWRlZl93b3JrZXIoT2lkIHJ1bGVvaWQs IGludCBwcmV0dHlGbGFncyk7CiBzdGF0aWMgY2hhciAqcGdfZ2V0X2luZGV4ZGVmX3dvcmtl cihPaWQgaW5kZXhyZWxpZCwgaW50IGNvbG5vLAogCQkJCQkJCQkJY29uc3QgT2lkICpleGNs dWRlT3BzLApAQCAtMjI0Nyw3ICsyMjQ3LDcgQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29y a2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJdmFsID0gU3lz Q2FjaGVHZXRBdHRyTm90TnVsbChDT05TVFJPSUQsIHR1cCwKIAkJCQkJCQkJCQkJIEFudW1f cGdfY29uc3RyYWludF9jb25rZXkpOwogCi0JCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9h cnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCAmYnVmKTsKKwkJCQlkZWNvbXBpbGVfY29s dW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsIGZhbHNlLCAmYnVmKTsK IAogCQkJCS8qIGFkZCBmb3JlaWduIHJlbGF0aW9uIG5hbWUgKi8KIAkJCQlhcHBlbmRTdHJp bmdJbmZvKCZidWYsICIpIFJFRkVSRU5DRVMgJXMoIiwKQEAgLTIyNTgsNyArMjI1OCw3IEBA IHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3RyYWludElkLCBib29sIGZ1 bGxDb21tYW5kLAogCQkJCXZhbCA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoQ09OU1RST0lE LCB0dXAsCiAJCQkJCQkJCQkJCSBBbnVtX3BnX2NvbnN0cmFpbnRfY29uZmtleSk7CiAKLQkJ CQlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29uZnJlbGlk LCAmYnVmKTsKKwkJCQlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9y bS0+Y29uZnJlbGlkLCBmYWxzZSwgJmJ1Zik7CiAKIAkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hh cigmYnVmLCAnKScpOwogCkBAIC0yMzQ0LDcgKzIzNDQsNyBAQCBwZ19nZXRfY29uc3RyYWlu dGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKIAkJCQlp ZiAoIWlzbnVsbCkKIAkJCQl7CiAJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1Ziwg IiAoIik7Ci0JCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3Jt LT5jb25yZWxpZCwgJmJ1Zik7CisJCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXko dmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgZmFsc2UsICZidWYpOwogCQkJCQlhcHBlbmRTdHJp bmdJbmZvQ2hhcigmYnVmLCAnKScpOwogCQkJCX0KIApAQCAtMjM3OSw3ICsyMzc5LDcgQEAg cGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVs bENvbW1hbmQsCiAJCQkJdmFsID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChDT05TVFJPSUQs IHR1cCwKIAkJCQkJCQkJCQkJIEFudW1fcGdfY29uc3RyYWludF9jb25rZXkpOwogCi0JCQkJ a2V5YXR0cyA9IGRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5j b25yZWxpZCwgJmJ1Zik7CisJCQkJa2V5YXR0cyA9IGRlY29tcGlsZV9jb2x1bW5faW5kZXhf YXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgY29uRm9ybS0+Y29ud2l0aG91dG92ZXJs YXBzLCAmYnVmKTsKIAogCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICcpJyk7CiAK QEAgLTI1NzUsNyArMjU3NSw3IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQg Y29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogICovCiBzdGF0aWMgaW50CiBkZWNv bXBpbGVfY29sdW1uX2luZGV4X2FycmF5KERhdHVtIGNvbHVtbl9pbmRleF9hcnJheSwgT2lk IHJlbElkLAotCQkJCQkJCSBTdHJpbmdJbmZvIGJ1ZikKKwkJCQkJCQkgYm9vbCB3aXRob3V0 T3ZlcmxhcHMsIFN0cmluZ0luZm8gYnVmKQogewogCURhdHVtCSAgICprZXlzOwogCWludAkJ CW5LZXlzOwpAQCAtMjU5Niw2ICsyNTk2LDggQEAgZGVjb21waWxlX2NvbHVtbl9pbmRleF9h cnJheShEYXR1bSBjb2x1bW5faW5kZXhfYXJyYXksIE9pZCByZWxJZCwKIAkJZWxzZQogCQkJ YXBwZW5kU3RyaW5nSW5mbyhidWYsICIsICVzIiwgcXVvdGVfaWRlbnRpZmllcihjb2xOYW1l KSk7CiAJfQorCWlmICh3aXRob3V0T3ZlcmxhcHMpCisJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoYnVmLCAiIFdJVEhPVVQgT1ZFUkxBUFMiKTsKIAogCXJldHVybiBuS2V5czsKIH0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCmluZGV4IGIzZmFjY2JlZmUuLmYzNDFjNWMz NzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAtNTU2OCwxMSArNTU2 OCwxNCBAQCBSZWxhdGlvbkdldElkZW50aXR5S2V5Qml0bWFwKFJlbGF0aW9uIHJlbGF0aW9u KQogLyoKICAqIFJlbGF0aW9uR2V0RXhjbHVzaW9uSW5mbyAtLSBnZXQgaW5mbyBhYm91dCBp bmRleCdzIGV4Y2x1c2lvbiBjb25zdHJhaW50CiAgKgotICogVGhpcyBzaG91bGQgYmUgY2Fs bGVkIG9ubHkgZm9yIGFuIGluZGV4IHRoYXQgaXMga25vd24gdG8gaGF2ZSBhbgotICogYXNz b2NpYXRlZCBleGNsdXNpb24gY29uc3RyYWludC4gIEl0IHJldHVybnMgYXJyYXlzIChwYWxs b2MnZCBpbiBjYWxsZXIncwotICogY29udGV4dCkgb2YgdGhlIGV4Y2x1c2lvbiBvcGVyYXRv ciBPSURzLCB0aGVpciB1bmRlcmx5aW5nIGZ1bmN0aW9ucycKLSAqIE9JRHMsIGFuZCB0aGVp ciBzdHJhdGVneSBudW1iZXJzIGluIHRoZSBpbmRleCdzIG9wY2xhc3Nlcy4gIFdlIGNhY2hl Ci0gKiBhbGwgdGhpcyBpbmZvcm1hdGlvbiBzaW5jZSBpdCByZXF1aXJlcyBhIGZhaXIgYW1v dW50IG9mIHdvcmsgdG8gZ2V0LgorICogVGhpcyBzaG91bGQgYmUgY2FsbGVkIG9ubHkgZm9y IGFuIGluZGV4IHRoYXQgaXMga25vd24gdG8gaGF2ZSBhbiBhc3NvY2lhdGVkCisgKiBleGNs dXNpb24gY29uc3RyYWludCBvciBwcmltYXJ5IGtleS91bmlxdWUgY29uc3RyYWludCB1c2lu ZyBXSVRIT1VUCisgKiBPVkVSTEFQUy4KKworICogSXQgcmV0dXJucyBhcnJheXMgKHBhbGxv YydkIGluIGNhbGxlcidzIGNvbnRleHQpIG9mIHRoZSBleGNsdXNpb24gb3BlcmF0b3IKKyAq IE9JRHMsIHRoZWlyIHVuZGVybHlpbmcgZnVuY3Rpb25zJyBPSURzLCBhbmQgdGhlaXIgc3Ry YXRlZ3kgbnVtYmVycyBpbiB0aGUKKyAqIGluZGV4J3Mgb3BjbGFzc2VzLiAgV2UgY2FjaGUg YWxsIHRoaXMgaW5mb3JtYXRpb24gc2luY2UgaXQgcmVxdWlyZXMgYSBmYWlyCisgKiBhbW91 bnQgb2Ygd29yayB0byBnZXQuCiAgKi8KIHZvaWQKIFJlbGF0aW9uR2V0RXhjbHVzaW9uSW5m byhSZWxhdGlvbiBpbmRleFJlbGF0aW9uLApAQCAtNTYzNiw3ICs1NjM5LDEwIEBAIFJlbGF0 aW9uR2V0RXhjbHVzaW9uSW5mbyhSZWxhdGlvbiBpbmRleFJlbGF0aW9uLAogCQlpbnQJCQlu ZWxlbTsKIAogCQkvKiBXZSB3YW50IHRoZSBleGNsdXNpb24gY29uc3RyYWludCBvd25pbmcg dGhlIGluZGV4ICovCi0JCWlmIChjb25mb3JtLT5jb250eXBlICE9IENPTlNUUkFJTlRfRVhD TFVTSU9OIHx8CisJCWlmICgoY29uZm9ybS0+Y29udHlwZSAhPSBDT05TVFJBSU5UX0VYQ0xV U0lPTiAmJgorCQkJCQkhKGNvbmZvcm0tPmNvbndpdGhvdXRvdmVybGFwcyAmJiAoCisJCQkJ CQkJY29uZm9ybS0+Y29udHlwZSA9PSBDT05TVFJBSU5UX1BSSU1BUlkKKwkJCQkJCQl8fCBj b25mb3JtLT5jb250eXBlID09IENPTlNUUkFJTlRfVU5JUVVFKSkpIHx8CiAJCQljb25mb3Jt LT5jb25pbmRpZCAhPSBSZWxhdGlvbkdldFJlbGlkKGluZGV4UmVsYXRpb24pKQogCQkJY29u dGludWU7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDA1MGE4MzEyMjYuLjYzZmM3YzQ4ODAgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuYwpAQCAtNzAxNCw2ICs3MDE0LDcgQEAgZ2V0SW5kZXhlcyhBcmNoaXZl ICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCQkJCWlfY29u bmFtZSwKIAkJCQlpX2NvbmRlZmVycmFibGUsCiAJCQkJaV9jb25kZWZlcnJlZCwKKwkJCQlp X2NvbndpdGhvdXRvdmVybGFwcywKIAkJCQlpX2NvbnRhYmxlb2lkLAogCQkJCWlfY29ub2lk LAogCQkJCWlfY29uZGVmLApAQCAtNzA5NSwxMCArNzA5NiwxNyBAQCBnZXRJbmRleGVzKEFy Y2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAKIAlp ZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNTAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKHF1ZXJ5LAotCQkJCQkJCSAiaS5pbmRudWxsc25vdGRpc3RpbmN0ICIpOworCQkJCQkJ CSAiaS5pbmRudWxsc25vdGRpc3RpbmN0LCAiKTsKIAllbHNlCiAJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHF1ZXJ5LAotCQkJCQkJCSAiZmFsc2UgQVMgaW5kbnVsbHNub3RkaXN0aW5jdCAi KTsKKwkJCQkJCQkgImZhbHNlIEFTIGluZG51bGxzbm90ZGlzdGluY3QsICIpOworCisJaWYg KGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTcwMDAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cihxdWVyeSwKKwkJCQkJCQkgImMuY29ud2l0aG91dG92ZXJsYXBzICIpOworCWVsc2UKKwkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCisJCQkJCQkJICJOVUxMIEFTIGNvbndpdGhv dXRvdmVybGFwcyAiKTsKIAogCS8qCiAJICogVGhlIHBvaW50IG9mIHRoZSBtZXNzeS1sb29r aW5nIG91dGVyIGpvaW4gaXMgdG8gZmluZCBhIGNvbnN0cmFpbnQgdGhhdApAQCAtNzE2Niw2 ICs3MTc0LDcgQEAgZ2V0SW5kZXhlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5m b1tdLCBpbnQgbnVtVGFibGVzKQogCWlfY29ubmFtZSA9IFBRZm51bWJlcihyZXMsICJjb25u YW1lIik7CiAJaV9jb25kZWZlcnJhYmxlID0gUFFmbnVtYmVyKHJlcywgImNvbmRlZmVycmFi bGUiKTsKIAlpX2NvbmRlZmVycmVkID0gUFFmbnVtYmVyKHJlcywgImNvbmRlZmVycmVkIik7 CisJaV9jb253aXRob3V0b3ZlcmxhcHMgPSBQUWZudW1iZXIocmVzLCAiY29ud2l0aG91dG92 ZXJsYXBzIik7CiAJaV9jb250YWJsZW9pZCA9IFBRZm51bWJlcihyZXMsICJjb250YWJsZW9p ZCIpOwogCWlfY29ub2lkID0gUFFmbnVtYmVyKHJlcywgImNvbm9pZCIpOwogCWlfY29uZGVm ID0gUFFmbnVtYmVyKHJlcywgImNvbmRlZiIpOwpAQCAtNzI3Myw2ICs3MjgyLDcgQEAgZ2V0 SW5kZXhlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFi bGVzKQogCQkJCWNvbnN0cmluZm8tPmNvbmluZGV4ID0gaW5keGluZm9bal0uZG9iai5kdW1w SWQ7CiAJCQkJY29uc3RyaW5mby0+Y29uZGVmZXJyYWJsZSA9ICooUFFnZXR2YWx1ZShyZXMs IGosIGlfY29uZGVmZXJyYWJsZSkpID09ICd0JzsKIAkJCQljb25zdHJpbmZvLT5jb25kZWZl cnJlZCA9ICooUFFnZXR2YWx1ZShyZXMsIGosIGlfY29uZGVmZXJyZWQpKSA9PSAndCc7CisJ CQkJY29uc3RyaW5mby0+Y29ud2l0aG91dG92ZXJsYXBzID0gKihQUWdldHZhbHVlKHJlcywg aiwgaV9jb253aXRob3V0b3ZlcmxhcHMpKSA9PSAndCc7CiAJCQkJY29uc3RyaW5mby0+Y29u aXNsb2NhbCA9IHRydWU7CiAJCQkJY29uc3RyaW5mby0+c2VwYXJhdGUgPSB0cnVlOwogCkBA IC0xNjk3OCw2ICsxNjk4OCw4IEBAIGR1bXBDb25zdHJhaW50KEFyY2hpdmUgKmZvdXQsIGNv bnN0IENvbnN0cmFpbnRJbmZvICpjb25pbmZvKQogCQkJCQkJCQkgIChrID09IDApID8gIiIg OiAiLCAiLAogCQkJCQkJCQkgIGZtdElkKGF0dG5hbWUpKTsKIAkJCX0KKwkJCWlmIChjb25p bmZvLT5jb253aXRob3V0b3ZlcmxhcHMpCisJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwg IiBXSVRIT1VUIE9WRVJMQVBTIik7CiAKIAkJCWlmIChpbmR4aW5mby0+aW5kbmtleWF0dHJz IDwgaW5keGluZm8tPmluZG5hdHRycykKIAkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxLCAi KSBJTkNMVURFICgiKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgg Yi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IDY3M2NhNWM5MmQuLjEwNjA1ZWNh YzUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtNDg4LDYgKzQ4OCw3IEBAIHR5cGVkZWYgc3RydWN0 IF9jb25zdHJhaW50SW5mbwogCUR1bXBJZAkJY29uaW5kZXg7CQkvKiBpZGVudGlmaWVzIGFz c29jaWF0ZWQgaW5kZXggaWYgYW55ICovCiAJYm9vbAkJY29uZGVmZXJyYWJsZTsJLyogdHJ1 ZSBpZiBjb25zdHJhaW50IGlzIERFRkVSUkFCTEUgKi8KIAlib29sCQljb25kZWZlcnJlZDsJ LyogdHJ1ZSBpZiBjb25zdHJhaW50IGlzIElOSVRJQUxMWSBERUZFUlJFRCAqLworCWJvb2wJ CWNvbndpdGhvdXRvdmVybGFwczsJLyogdHJ1ZSBpZiB0aGUgY29uc3RyYWludCBpcyBXSVRI T1VUIE9WRVJMQVBTICovCiAJYm9vbAkJY29uaXNsb2NhbDsJCS8qIHRydWUgaWYgY29uc3Ry YWludCBoYXMgbG9jYWwgZGVmaW5pdGlvbiAqLwogCWJvb2wJCXNlcGFyYXRlOwkJLyogdHJ1 ZSBpZiBtdXN0IGR1bXAgYXMgc2VwYXJhdGUgaXRlbSAqLwogfSBDb25zdHJhaW50SW5mbzsK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsIGIvc3JjL2Jp bi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKaW5kZXggMTYzOWJkZDlmYy4uNjYxMzQyNWQ2 MyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKKysrIGIv c3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKQEAgLTEwMTUsNiArMTAxNSw0NiBA QCBteSAldGVzdHMgPSAoCiAJCX0sCiAJfSwKIAorCSdDT05TVFJBSU5UIFBSSU1BUlkgS0VZ IC8gV0lUSE9VVCBPVkVSTEFQUycgPT4geworCQljcmVhdGVfc3FsICA9PiAnQ1JFQVRFIFRB QkxFIGR1bXBfdGVzdC50ZXN0X3RhYmxlX3RwayAoCisJCQkJCQkJY29sMSBpbnQ0cmFuZ2Us CisJCQkJCQkJY29sMiB0c3R6cmFuZ2UsCisJCQkJCQkJQ09OU1RSQUlOVCB0ZXN0X3RhYmxl X3Rwa19wa2V5IFBSSU1BUlkgS0VZIChjb2wxLCBjb2wyIFdJVEhPVVQgT1ZFUkxBUFMpKTsn LAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFBTFRFUiBUQUJMRSBPTkxZIGR1bXBfdGVzdC50 ZXN0X3RhYmxlX3Rwa1xFIFxuXlxzKworCQkJXFFBREQgQ09OU1RSQUlOVCB0ZXN0X3RhYmxl X3Rwa19wa2V5IFBSSU1BUlkgS0VZIChjb2wxLCBjb2wyIFdJVEhPVVQgT1ZFUkxBUFMpO1xF CisJCQkveG0sCisJCWxpa2UgPT4geworCQkJJWZ1bGxfcnVucywKKwkJCSVkdW1wX3Rlc3Rf c2NoZW1hX3J1bnMsCisJCQlzZWN0aW9uX3Bvc3RfZGF0YSAgPT4gMSwKKwkJfSwKKwkJdW5s aWtlID0+IHsKKwkJCWV4Y2x1ZGVfZHVtcF90ZXN0X3NjaGVtYSA9PiAxLAorCQkJb25seV9k dW1wX21lYXN1cmVtZW50ICAgID0+IDEsCisJCX0sCisJfSwKKworCSdDT05TVFJBSU5UIFVO SVFVRSAvIFdJVEhPVVQgT1ZFUkxBUFMnID0+IHsKKwkJY3JlYXRlX3NxbCAgPT4gJ0NSRUFU RSBUQUJMRSBkdW1wX3Rlc3QudGVzdF90YWJsZV90dXEgKAorCQkJCQkJCWNvbDEgaW50NHJh bmdlLAorCQkJCQkJCWNvbDIgdHN0enJhbmdlLAorCQkJCQkJCUNPTlNUUkFJTlQgdGVzdF90 YWJsZV90dXFfdXEgVU5JUVVFIChjb2wxLCBjb2wyIFdJVEhPVVQgT1ZFUkxBUFMpKTsnLAor CQlyZWdleHAgPT4gcXIvXgorCQkJXFFBTFRFUiBUQUJMRSBPTkxZIGR1bXBfdGVzdC50ZXN0 X3RhYmxlX3R1cVxFIFxuXlxzKworCQkJXFFBREQgQ09OU1RSQUlOVCB0ZXN0X3RhYmxlX3R1 cV91cSBVTklRVUUgKGNvbDEsIGNvbDIgV0lUSE9VVCBPVkVSTEFQUyk7XEUKKwkJCS94bSwK KwkJbGlrZSA9PiB7CisJCQklZnVsbF9ydW5zLAorCQkJJWR1bXBfdGVzdF9zY2hlbWFfcnVu cywKKwkJCXNlY3Rpb25fcG9zdF9kYXRhICA9PiAxLAorCQl9LAorCQl1bmxpa2UgPT4gewor CQkJZXhjbHVkZV9kdW1wX3Rlc3Rfc2NoZW1hID0+IDEsCisJCQlvbmx5X2R1bXBfbWVhc3Vy ZW1lbnQgICAgPT4gMSwKKwkJfSwKKwl9LAorCiAJJ0FMVEVSIFRBQkxFIChwYXJ0aXRpb25l ZCkgQUREIENPTlNUUkFJTlQgLi4uIEZPUkVJR04gS0VZJyA9PiB7CiAJCWNyZWF0ZV9vcmRl ciA9PiA0LAogCQljcmVhdGVfc3FsID0+ICdDUkVBVEUgVEFCTEUgZHVtcF90ZXN0LnRlc3Rf dGFibGVfZmsgKApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMv YmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCA1MDc3ZTdiMzU4Li42MWQ2NDUyYjUzIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVz Y3JpYmUuYwpAQCAtMjM3OSw2ICsyMzc5LDEwIEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxz KGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQllbHNlCiAJCQkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIoJmJ1ZiwgIiwgZmFsc2UgQVMgaW5kaXNyZXBsaWRlbnQiKTsKIAkJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKCZidWYsICIsIGMyLnJlbHRhYmxlc3BhY2UiKTsKKwkJCWlmIChwc2V0 LnN2ZXJzaW9uID49IDE3MDAwMCkKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAi LCBjb24uY29ud2l0aG91dG92ZXJsYXBzIik7CisJCQllbHNlCisJCQkJYXBwZW5kUFFFeHBC dWZmZXJTdHIoJmJ1ZiwgIiwgZmFsc2UgQVMgY29ud2l0aG91dG92ZXJsYXBzIik7CiAJCQlh cHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJCSAgIlxuRlJPTSBwZ19jYXRhbG9nLnBn X2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfY2xhc3MgYzIsIHBnX2NhdGFsb2cucGdfaW5kZXgg aVxuIgogCQkJCQkJCSAgIiAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfY29uc3RyYWludCBj b24gT04gKGNvbnJlbGlkID0gaS5pbmRyZWxpZCBBTkQgY29uaW5kaWQgPSBpLmluZGV4cmVs aWQgQU5EIGNvbnR5cGUgSU4gKCdwJywndScsJ3gnKSlcbiIKQEAgLTI0MDAsOCArMjQwNCwx MiBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAog CQkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiICAgIFwiJXNcIiIsCiAJCQkJCQkJCQkg IFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAwKSk7CiAKLQkJCQkJLyogSWYgZXhjbHVzaW9uIGNv bnN0cmFpbnQsIHByaW50IHRoZSBjb25zdHJhaW50ZGVmICovCi0JCQkJCWlmIChzdHJjbXAo UFFnZXR2YWx1ZShyZXN1bHQsIGksIDcpLCAieCIpID09IDApCisJCQkJCS8qCisJCQkJCSAq IElmIGV4Y2x1c2lvbiBjb25zdHJhaW50IG9yIFBLL1VOSVFVRSBjb25zdHJhaW50IFdJVEhP VVQKKwkJCQkJICogT1ZFUkxBUFMsIHByaW50IHRoZSBjb25zdHJhaW50ZGVmCisJCQkJCSAq LworCQkJCQlpZiAoc3RyY21wKFBRZ2V0dmFsdWUocmVzdWx0LCBpLCA3KSwgIngiKSA9PSAw IHx8CisJCQkJCQkJc3RyY21wKFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAxMiksICJ0IikgPT0g MCkKIAkJCQkJewogCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIiAlcyIsCiAJCQkJ CQkJCQkJICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgNikpOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3Rf cHJpdmF0ZS5oCmluZGV4IDgyZWI3YjRiZDguLjI4MjczZmI5ODYgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9naXN0X3ByaXZhdGUuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nl c3MvZ2lzdF9wcml2YXRlLmgKQEAgLTUzMiw2ICs1MzIsNyBAQCBleHRlcm4gdm9pZCBnaXN0 TWFrZVVuaW9uS2V5KEdJU1RTVEFURSAqZ2lzdHN0YXRlLCBpbnQgYXR0bm8sCiAJCQkJCQkJ IERhdHVtICpkc3QsIGJvb2wgKmRzdGlzbnVsbCk7CiAKIGV4dGVybiBYTG9nUmVjUHRyIGdp c3RHZXRGYWtlTFNOKFJlbGF0aW9uIHJlbCk7CitleHRlcm4gU3RyYXRlZ3lOdW1iZXIgZ2lz dFRyYW5zbGF0ZVN0cmF0bnVtKE9pZCBvcGNsYXNzLCBTdHJhdGVneU51bWJlciBzdHJhdCk7 CiAKIC8qIGdpc3R2YWN1dW0uYyAqLwogZXh0ZXJuIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAq Z2lzdGJ1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvYWNjZXNzL3N0cmF0bnVtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3RyYXRu dW0uaAppbmRleCAxYjI5NjUzYThhLi43ODQ1ZDU0MDEyIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9hY2Nlc3Mvc3RyYXRudW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3RyYXRu dW0uaApAQCAtMjIsNiArMjIsNyBAQAogdHlwZWRlZiB1aW50MTYgU3RyYXRlZ3lOdW1iZXI7 CiAKICNkZWZpbmUgSW52YWxpZFN0cmF0ZWd5ICgoU3RyYXRlZ3lOdW1iZXIpIDApCisjZGVm aW5lIFN0cmF0ZWd5SXNWYWxpZChzdHJhdG51bSkgKChib29sKSAoKHN0cmF0bnVtKSAhPSBJ bnZhbGlkU3RyYXRlZ3kpKQogCiAvKgogICogU3RyYXRlZ3kgbnVtYmVycyBmb3IgQi10cmVl IGluZGV4ZXMuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmggYi9z cmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKaW5kZXggNDFhMGI5YWVlMS4uNzM5ZDg0M2Ey YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCisrKyBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvaW5kZXguaApAQCAtOTIsNiArOTIsNyBAQCBleHRlcm4gT2lkCWlu ZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAjZGVmaW5lCUlOREVYX0NPTlNU Ul9DUkVBVEVfSU5JVF9ERUZFUlJFRAkoMSA8PCAyKQogI2RlZmluZQlJTkRFWF9DT05TVFJf Q1JFQVRFX1VQREFURV9JTkRFWAkoMSA8PCAzKQogI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JF QVRFX1JFTU9WRV9PTERfREVQUwkoMSA8PCA0KQorI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JF QVRFX1dJVEhPVVRfT1ZFUkxBUFMgKDEgPDwgNSkKIAogZXh0ZXJuIE9pZAlpbmRleF9jb25j dXJyZW50bHlfY3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJCQkJ CSAgIE9pZCBvbGRJbmRleElkLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19jb25zdHJhaW50LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaApp bmRleCBhMDI2YjQyNTE1Li5jMTdiMWU5ZDMxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX2NvbnN0cmFpbnQuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Nv bnN0cmFpbnQuaApAQCAtMTA3LDYgKzEwNywxMiBAQCBDQVRBTE9HKHBnX2NvbnN0cmFpbnQs MjYwNixDb25zdHJhaW50UmVsYXRpb25JZCkKIAkvKiBIYXMgYSBsb2NhbCBkZWZpbml0aW9u IGFuZCBjYW5ub3QgYmUgaW5oZXJpdGVkICovCiAJYm9vbAkJY29ubm9pbmhlcml0OwogCisJ LyoKKwkgKiBGb3IgcHJpbWFyeSBrZXlzIGFuZCB1bmlxdWUgY29uc3RyYWludHMsIHNpZ25p ZmllcyB0aGUgbGFzdCBjb2x1bW4gdXNlcworCSAqIG92ZXJsYXBzIGluc3RlYWQgb2YgZXF1 YWxzLgorCSAqLworCWJvb2wJCWNvbndpdGhvdXRvdmVybGFwczsKKwogI2lmZGVmIENBVEFM T0dfVkFSTEVOCQkJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCiAK IAkvKgpAQCAtMTQ2LDcgKzE1Miw4IEBAIENBVEFMT0cocGdfY29uc3RyYWludCwyNjA2LENv bnN0cmFpbnRSZWxhdGlvbklkKQogCiAJLyoKIAkgKiBJZiBhbiBleGNsdXNpb24gY29uc3Ry YWludCwgdGhlIE9JRHMgb2YgdGhlIGV4Y2x1c2lvbiBvcGVyYXRvcnMgZm9yCi0JICogZWFj aCBjb2x1bW4gb2YgdGhlIGNvbnN0cmFpbnQKKwkgKiBlYWNoIGNvbHVtbiBvZiB0aGUgY29u c3RyYWludC4gIEFsc28gc2V0IGZvciB1bmlxdWUgY29uc3RyYWludHMvcHJpbWFyeQorCSAq IGtleXMgdXNpbmcgV0lUSE9VVCBPVkVSTEFQUy4KIAkgKi8KIAlPaWQJCQljb25leGNsb3Bb MV0gQktJX0xPT0tVUChwZ19vcGVyYXRvcik7CiAKQEAgLTIzNiw2ICsyNDMsNyBAQCBleHRl cm4gT2lkCUNyZWF0ZUNvbnN0cmFpbnRFbnRyeShjb25zdCBjaGFyICpjb25zdHJhaW50TmFt ZSwKIAkJCQkJCQkJICBib29sIGNvbklzTG9jYWwsCiAJCQkJCQkJCSAgaW50IGNvbkluaENv dW50LAogCQkJCQkJCQkgIGJvb2wgY29uTm9Jbmhlcml0LAorCQkJCQkJCQkgIGJvb2wgY29u V2l0aG91dE92ZXJsYXBzLAogCQkJCQkJCQkgIGJvb2wgaXNfaW50ZXJuYWwpOwogCiBleHRl cm4gYm9vbCBDb25zdHJhaW50TmFtZUlzVXNlZChDb25zdHJhaW50Q2F0ZWdvcnkgY29uQ2F0 LCBPaWQgb2JqSWQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0u aCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCmluZGV4IDE3OWViOTkwMWYuLjFm NzM4YjAxMjkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCisr KyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCkBAIC0xNCw2ICsxNCw3IEBACiAj aWZuZGVmIERFRlJFTV9ICiAjZGVmaW5lIERFRlJFTV9ICiAKKyNpbmNsdWRlICJhY2Nlc3Mv c3RyYXRudW0uaCIKICNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFkZHJlc3MuaCIKICNpbmNs dWRlICJub2Rlcy9wYXJhbXMuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2Vfbm9kZS5oIgpA QCAtNDQsMTAgKzQ1LDE0IEBAIGV4dGVybiBjaGFyICpDaG9vc2VSZWxhdGlvbk5hbWUoY29u c3QgY2hhciAqbmFtZTEsIGNvbnN0IGNoYXIgKm5hbWUyLAogZXh0ZXJuIGJvb2wgQ2hlY2tJ bmRleENvbXBhdGlibGUoT2lkIG9sZElkLAogCQkJCQkJCQkgY29uc3QgY2hhciAqYWNjZXNz TWV0aG9kTmFtZSwKIAkJCQkJCQkJIGNvbnN0IExpc3QgKmF0dHJpYnV0ZUxpc3QsCi0JCQkJ CQkJCSBjb25zdCBMaXN0ICpleGNsdXNpb25PcE5hbWVzKTsKKwkJCQkJCQkJIGNvbnN0IExp c3QgKmV4Y2x1c2lvbk9wTmFtZXMsCisJCQkJCQkJCSBib29sIGlzV2l0aG91dE92ZXJsYXBz KTsKIGV4dGVybiBPaWQJR2V0RGVmYXVsdE9wQ2xhc3MoT2lkIHR5cGVfaWQsIE9pZCBhbV9p ZCk7CiBleHRlcm4gT2lkCVJlc29sdmVPcENsYXNzKGNvbnN0IExpc3QgKm9wY2xhc3MsIE9p ZCBhdHRyVHlwZSwKIAkJCQkJCSAgIGNvbnN0IGNoYXIgKmFjY2Vzc01ldGhvZE5hbWUsIE9p ZCBhY2Nlc3NNZXRob2RJZCk7CitleHRlcm4gdm9pZCBHZXRPcGVyYXRvckZyb21DYW5vbmlj YWxTdHJhdGVneShPaWQgb3BjbGFzcywgT2lkIGF0dHR5cGUsCisJCQkJCQkJCQkJCSBjb25z dCBjaGFyICpvcG5hbWUsIE9pZCAqb3BpZCwKKwkJCQkJCQkJCQkJIFN0cmF0ZWd5TnVtYmVy ICpzdHJhdCk7CiAKIC8qIGNvbW1hbmRzL2Z1bmN0aW9uY21kcy5jICovCiBleHRlcm4gT2Jq ZWN0QWRkcmVzcyBDcmVhdGVGdW5jdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZUZ1 bmN0aW9uU3RtdCAqc3RtdCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggZTQ5NDMw OWRhOC4uMDk4OTkwZGQxNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMjU4OSw2 ICsyNTg5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29uc3RyYWludAogCWJvb2wJCW51bGxzX25v dF9kaXN0aW5jdDsgLyogbnVsbCB0cmVhdG1lbnQgZm9yIFVOSVFVRSBjb25zdHJhaW50cyAq LwogCUxpc3QJICAgKmtleXM7CQkJLyogU3RyaW5nIG5vZGVzIG5hbWluZyByZWZlcmVuY2Vk IGtleQogCQkJCQkJCQkgKiBjb2x1bW4ocyk7IGFsc28gdXNlZCBmb3IgTk9UIE5VTEwgKi8K Kwlib29sCQl3aXRob3V0X292ZXJsYXBzOwkvKiBXSVRIT1VUIE9WRVJMQVBTIHNwZWNpZmll ZCAqLwogCUxpc3QJICAgKmluY2x1ZGluZzsJCS8qIFN0cmluZyBub2RlcyBuYW1pbmcgcmVm ZXJlbmNlZCBub25rZXkKIAkJCQkJCQkJICogY29sdW1uKHMpICovCiAKQEAgLTMyMTgsNiAr MzIxOSw3IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4U3RtdAogCWJvb2wJCW51bGxzX25vdF9k aXN0aW5jdDsgLyogbnVsbCB0cmVhdG1lbnQgZm9yIFVOSVFVRSBjb25zdHJhaW50cyAqLwog CWJvb2wJCXByaW1hcnk7CQkvKiBpcyBpbmRleCBhIHByaW1hcnkga2V5PyAqLwogCWJvb2wJ CWlzY29uc3RyYWludDsJLyogaXMgaXQgZm9yIGEgcGtleS91bmlxdWUgY29uc3RyYWludD8g Ki8KKwlib29sCQlpc3dpdGhvdXRvdmVybGFwczsJLyogaXMgdGhlIGNvbnN0cmFpbnQgV0lU SE9VVCBPVkVSTEFQUz8gKi8KIAlib29sCQlkZWZlcnJhYmxlOwkJLyogaXMgdGhlIGNvbnN0 cmFpbnQgREVGRVJSQUJMRT8gKi8KIAlib29sCQlpbml0ZGVmZXJyZWQ7CS8qIGlzIHRoZSBj b25zdHJhaW50IElOSVRJQUxMWSBERUZFUlJFRD8gKi8KIAlib29sCQl0cmFuc2Zvcm1lZDsJ LyogdHJ1ZSB3aGVuIHRyYW5zZm9ybUluZGV4U3RtdCBpcyBmaW5pc2hlZCAqLwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNzI2ZTk0MTAyYgotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5v dXQKQEAgLTAsMCArMSwzOTUgQEAKKy0tIFRlc3RzIGZvciBXSVRIT1VUIE9WRVJMQVBTLgor LS0KKy0tIFdlIGxlYXZlIGJlaGluZCBzZXZlcmFsIHRhYmxlcyB0byB0ZXN0IHBnX2R1bXAg ZXRjOgorLS0gdGVtcG9yYWxfcm5nLCB0ZW1wb3JhbF9ybmcyLAorLS0gdGVtcG9yYWxfZmtf cm5nMnJuZy4KKy0tCistLSB0ZXN0IGlucHV0IHBhcnNlcgorLS0KKy0tIFBLIHdpdGggbm8g Y29sdW1ucyBqdXN0IFdJVEhPVVQgT1ZFUkxBUFM6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxf cm5nICgKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3Br IFBSSU1BUlkgS0VZICh2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0VSUk9SOiAg Y29uc3RyYWludCB1c2luZyBXSVRIT1VUIE9WRVJMQVBTIG5lZWRzIGF0IGxlYXN0IHR3byBj b2x1bW5zCistLSBQSyB3aXRoIGEgcmFuZ2UgY29sdW1uL1BFUklPRCB0aGF0IGlzbid0IHRo ZXJlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJaWQgSU5URUdFUiwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpCispOworRVJST1I6ICBjb2x1bW4gInZhbGlkX2F0IiBuYW1lZCBpbiBr ZXkgZG9lcyBub3QgZXhpc3QKK0xJTkUgMzogIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3Br IFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VLi4uCisgICAgICAgICBeCistLSBQ SyB3aXRoIGEgbm9uLXJhbmdlIGNvbHVtbjoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcg KAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBURVhULAorCUNPTlNUUkFJTlQgdGVtcG9y YWxfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykK Kyk7CitFUlJPUjogIGRhdGEgdHlwZSB0ZXh0IGhhcyBubyBkZWZhdWx0IG9wZXJhdG9yIGNs YXNzIGZvciBhY2Nlc3MgbWV0aG9kICJnaXN0IgorSElOVDogIFlvdSBtdXN0IHNwZWNpZnkg YW4gb3BlcmF0b3IgY2xhc3MgZm9yIHRoZSBpbmRleCBvciBkZWZpbmUgYSBkZWZhdWx0IG9w ZXJhdG9yIGNsYXNzIGZvciB0aGUgZGF0YSB0eXBlLgorLS0gUEsgd2l0aCBvbmUgY29sdW1u IHBsdXMgYSByYW5nZToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcgKAorCS0tIFNpbmNl IHdlIGNhbid0IGRlcGVuZCBvbiBoYXZpbmcgYnRyZWVfZ2lzdCBoZXJlLAorCS0tIHVzZSBh biBpbnQ0cmFuZ2UgaW5zdGVhZCBvZiBhbiBpbnQuCisJLS0gKFRoZSByYW5nZXR5cGVzIHJl Z3Jlc3Npb24gdGVzdCB1c2VzIHRoZSBzYW1lIHRyaWNrLikKKwlpZCBpbnQ0cmFuZ2UsCisJ dmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxf cm5nCisgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMudGVtcG9yYWxfcm5nIgorICBDb2x1 bW4gIHwgICBUeXBlICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQor IGlkICAgICAgIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKKyB2YWxp ZF9hdCB8IHRzcmFuZ2UgICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCitJbmRleGVzOgor ICAgICJ0ZW1wb3JhbF9ybmdfcGsiIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUykKKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBw Z19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nX3BrJzsKKyAgICAg ICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUFJJTUFSWSBLRVkgKGlkLCB2 YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2lu ZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29u bmFtZSA9ICd0ZW1wb3JhbF9ybmdfcGsnOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwZ19nZXRfaW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBVTklRVUUgSU5ERVggdGVtcG9y YWxfcm5nX3BrIE9OIHRlbXBvcmFsX3JuZyBVU0lORyBnaXN0IChpZCwgdmFsaWRfYXQpCiso MSByb3cpCisKKy0tIFBLIHdpdGggdHdvIGNvbHVtbnMgcGx1cyBhIHJhbmdlOgorLS0gV2Ug ZG9uJ3QgZHJvcCB0aGlzIHRhYmxlIGJlY2F1c2UgdGVzdHMgYmVsb3cgYWxzbyBuZWVkIG11 bHRpcGxlIHNjYWxhciBjb2x1bW5zLgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzIgKAor CWlkMSBpbnQ0cmFuZ2UsCisJaWQyIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nMl9wayBQUklNQVJZIEtFWSAoaWQxLCBpZDIsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxfcm5nMgorICAgICAg ICAgICAgIFRhYmxlICJwdWJsaWMudGVtcG9yYWxfcm5nMiIKKyAgQ29sdW1uICB8ICAgVHlw ZSAgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZDEgICAgICB8 IGludDRyYW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgaWQyICAgICAgfCBpbnQ0 cmFuZ2UgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IAorIHZhbGlkX2F0IHwgdHNyYW5nZSAg IHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKK0luZGV4ZXM6CisgICAgInRlbXBvcmFsX3Ju ZzJfcGsiIFBSSU1BUlkgS0VZIChpZDEsIGlkMiwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UykKKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJh aW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nMl9wayc7CisgICAgICAgICAgICAg ICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFBSSU1BUlkgS0VZIChp ZDEsIGlkMiwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKygxIHJvdykKKworU0VMRUNU IHBnX2dldF9pbmRleGRlZihjb25pbmRpZCwgMCwgdHJ1ZSkgRlJPTSBwZ19jb25zdHJhaW50 IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nMl9wayc7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwZ19nZXRfaW5kZXhkZWYgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IENSRUFURSBVTklRVUUgSU5ERVggdGVtcG9yYWxfcm5nMl9wayBPTiB0ZW1wb3JhbF9ybmcy IFVTSU5HIGdpc3QgKGlkMSwgaWQyLCB2YWxpZF9hdCkKKygxIHJvdykKKworLS0gUEsgd2l0 aCBhIGN1c3RvbSByYW5nZSB0eXBlOgorQ1JFQVRFIFRZUEUgdGV4dHJhbmdlMiBBUyByYW5n ZSAoc3VidHlwZT10ZXh0LCBjb2xsYXRpb249IkMiKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3Jh bF9ybmczICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdGV4dHJhbmdlMiwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX3JuZzNfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3JuZzMgRFJPUCBDT05T VFJBSU5UIHRlbXBvcmFsX3JuZzNfcGs7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CitE Uk9QIFRZUEUgdGV4dHJhbmdlMjsKKy0tIFBLIHdpdGggYSBtdWx0aXJhbmdlOgorQ1JFQVRF IFRBQkxFIHRlbXBvcmFsX21sdHJuZyAoCisgIGlkIGludDRyYW5nZSwKKyAgdmFsaWRfYXQg dHNtdWx0aXJhbmdlLAorICBDT05TVFJBSU5UIHRlbXBvcmFsX21sdHJuZ19wayBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxf bWx0cm5nCisgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMudGVtcG9yYWxfbWx0cm5nIgor ICBDb2x1bW4gIHwgICAgIFR5cGUgICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZh dWx0IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLQorIGlkICAgICAgIHwgaW50NHJhbmdlICAgIHwgICAgICAgICAgIHwgbm90 IG51bGwgfCAKKyB2YWxpZF9hdCB8IHRzbXVsdGlyYW5nZSB8ICAgICAgICAgICB8IG5vdCBu dWxsIHwgCitJbmRleGVzOgorICAgICJ0ZW1wb3JhbF9tbHRybmdfcGsiIFBSSU1BUlkgS0VZ IChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKworLS0gVU5JUVVFIHdpdGggbm8g Y29sdW1ucyBqdXN0IFdJVEhPVVQgT1ZFUkxBUFM6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxf cm5nMyAoCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNf dXEgVU5JUVVFICh2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0VSUk9SOiAgY29u c3RyYWludCB1c2luZyBXSVRIT1VUIE9WRVJMQVBTIG5lZWRzIGF0IGxlYXN0IHR3byBjb2x1 bW5zCistLSBVTklRVUUgd2l0aCBhIHJhbmdlIGNvbHVtbi9QRVJJT0QgdGhhdCBpc24ndCB0 aGVyZToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKKwlpZCBJTlRFR0VSLAorCUNP TlNUUkFJTlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKQorKTsKK0VSUk9SOiAgY29sdW1uICJ2YWxpZF9hdCIgbmFtZWQgaW4ga2V5 IGRvZXMgbm90IGV4aXN0CitMSU5FIDM6ICBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNfdXEg VU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVi4uLgorICAgICAgICAgXgorLS0gVU5J UVVFIHdpdGggYSBub24tcmFuZ2UgY29sdW1uOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3Ju ZzMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBURVhULAorCUNPTlNUUkFJTlQgdGVt cG9yYWxfcm5nM191cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQor KTsKK0VSUk9SOiAgZGF0YSB0eXBlIHRleHQgaGFzIG5vIGRlZmF1bHQgb3BlcmF0b3IgY2xh c3MgZm9yIGFjY2VzcyBtZXRob2QgImdpc3QiCitISU5UOiAgWW91IG11c3Qgc3BlY2lmeSBh biBvcGVyYXRvciBjbGFzcyBmb3IgdGhlIGluZGV4IG9yIGRlZmluZSBhIGRlZmF1bHQgb3Bl cmF0b3IgY2xhc3MgZm9yIHRoZSBkYXRhIHR5cGUuCistLSBVTklRVUUgd2l0aCBvbmUgY29s dW1uIHBsdXMgYSByYW5nZToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKKwlpZCBp bnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3Ju ZzNfdXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0 ZW1wb3JhbF9ybmczCisgICAgICAgICAgICAgVGFibGUgInB1YmxpYy50ZW1wb3JhbF9ybmcz IgorICBDb2x1bW4gIHwgICBUeXBlICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZh dWx0IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLQorIGlkICAgICAgIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgICAgICAgICAg fCAKKyB2YWxpZF9hdCB8IHRzcmFuZ2UgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJ bmRleGVzOgorICAgICJ0ZW1wb3JhbF9ybmczX3VxIiBVTklRVUUgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKQorCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBG Uk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmczX3VxJzsK KyAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBVTklRVUUgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKQorKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNv bmluZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0 ZW1wb3JhbF9ybmczX3VxJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBn X2dldF9pbmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIFVOSVFVRSBJTkRFWCB0ZW1wb3JhbF9y bmczX3VxIE9OIHRlbXBvcmFsX3JuZzMgVVNJTkcgZ2lzdCAoaWQsIHZhbGlkX2F0KQorKDEg cm93KQorCitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CistLSBVTklRVUUgd2l0aCB0d28g Y29sdW1ucyBwbHVzIGEgcmFuZ2U6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMyAoCisJ aWQxIGludDRyYW5nZSwKKwlpZDIgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFVRSAoaWQxLCBpZDIsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxfcm5nMworICAgICAgICAgICAg IFRhYmxlICJwdWJsaWMudGVtcG9yYWxfcm5nMyIKKyAgQ29sdW1uICB8ICAgVHlwZSAgICB8 IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZDEgICAgICB8IGludDRy YW5nZSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgaWQyICAgICAgfCBpbnQ0cmFuZ2Ug fCAgICAgICAgICAgfCAgICAgICAgICB8IAorIHZhbGlkX2F0IHwgdHNyYW5nZSAgIHwgICAg ICAgICAgIHwgICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgInRlbXBvcmFsX3JuZzNfdXEi IFVOSVFVRSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisKK1NFTEVD VCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBj b25uYW1lID0gJ3RlbXBvcmFsX3JuZzNfdXEnOworICAgICAgICAgICAgIHBnX2dldF9jb25z dHJhaW50ZGVmICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFVOSVFVRSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQs IDAsIHRydWUpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFs X3JuZzNfdXEnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0 X2luZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgVU5JUVVFIElOREVYIHRlbXBv cmFsX3JuZzNfdXEgT04gdGVtcG9yYWxfcm5nMyBVU0lORyBnaXN0IChpZDEsIGlkMiwgdmFs aWRfYXQpCisoMSByb3cpCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nMzsKKy0tIFVOSVFV RSB3aXRoIGEgY3VzdG9tIHJhbmdlIHR5cGU6CitDUkVBVEUgVFlQRSB0ZXh0cmFuZ2UyIEFT IHJhbmdlIChzdWJ0eXBlPXRleHQsIGNvbGxhdGlvbj0iQyIpOworQ1JFQVRFIFRBQkxFIHRl bXBvcmFsX3JuZzMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0ZXh0cmFuZ2UyLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3JuZzMgRFJPUCBDT05T VFJBSU5UIHRlbXBvcmFsX3JuZzNfdXE7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CitE Uk9QIFRZUEUgdGV4dHJhbmdlMjsKKy0tCistLSB0ZXN0IEFMVEVSIFRBQkxFIEFERCBDT05T VFJBSU5UCistLQorRFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmc7CitDUkVBVEUgVEFCTEUgdGVt cG9yYWxfcm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZQorKTsKK0FM VEVSIFRBQkxFIHRlbXBvcmFsX3JuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19w aworCVBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CistLSBQ SyB3aXRoIFVTSU5HIElOREVYIChub3QgcG9zc2libGUpOgorQ1JFQVRFIFRBQkxFIHRlbXBv cmFsMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UKKyk7CitDUkVBVEUg SU5ERVggaWR4X3RlbXBvcmFsM191cSBPTiB0ZW1wb3JhbDMgVVNJTkcgZ2lzdCAoaWQsIHZh bGlkX2F0KTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMworCUFERCBDT05TVFJBSU5UIHRlbXBv cmFsM19waworCVBSSU1BUlkgS0VZIFVTSU5HIElOREVYIGlkeF90ZW1wb3JhbDNfdXE7CitF UlJPUjogICJpZHhfdGVtcG9yYWwzX3VxIiBpcyBub3QgYSB1bmlxdWUgaW5kZXgKK0xJTkUg MjogIEFERCBDT05TVFJBSU5UIHRlbXBvcmFsM19waworICAgICAgICAgICAgIF4KK0RFVEFJ TDogIENhbm5vdCBjcmVhdGUgYSBwcmltYXJ5IGtleSBvciB1bmlxdWUgY29uc3RyYWludCB1 c2luZyBzdWNoIGFuIGluZGV4LgorRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CistLSBVTklRVUUg d2l0aCBVU0lORyBJTkRFWCAobm90IHBvc3NpYmxlKToKK0NSRUFURSBUQUJMRSB0ZW1wb3Jh bDMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlCispOworQ1JFQVRFIElO REVYIGlkeF90ZW1wb3JhbDNfdXEgT04gdGVtcG9yYWwzIFVTSU5HIGdpc3QgKGlkLCB2YWxp ZF9hdCk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3Jh bDNfdXEKKwlVTklRVUUgVVNJTkcgSU5ERVggaWR4X3RlbXBvcmFsM191cTsKK0VSUk9SOiAg ImlkeF90ZW1wb3JhbDNfdXEiIGlzIG5vdCBhIHVuaXF1ZSBpbmRleAorTElORSAyOiAgQURE IENPTlNUUkFJTlQgdGVtcG9yYWwzX3VxCisgICAgICAgICAgICAgXgorREVUQUlMOiAgQ2Fu bm90IGNyZWF0ZSBhIHByaW1hcnkga2V5IG9yIHVuaXF1ZSBjb25zdHJhaW50IHVzaW5nIHN1 Y2ggYW4gaW5kZXguCitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKy0tIFVOSVFVRSB3aXRoIFVT SU5HIFtVTklRVUVdIElOREVYIChwb3NzaWJsZSBidXQgbm90IGEgdGVtcG9yYWwgY29uc3Ry YWludCk6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFs aWRfYXQgdHNyYW5nZQorKTsKK0NSRUFURSBVTklRVUUgSU5ERVggaWR4X3RlbXBvcmFsM191 cSBPTiB0ZW1wb3JhbDMgKGlkLCB2YWxpZF9hdCk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMK KwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbDNfdXEKKwlVTklRVUUgVVNJTkcgSU5ERVggaWR4 X3RlbXBvcmFsM191cTsKK05PVElDRTogIEFMVEVSIFRBQkxFIC8gQUREIENPTlNUUkFJTlQg VVNJTkcgSU5ERVggd2lsbCByZW5hbWUgaW5kZXggImlkeF90ZW1wb3JhbDNfdXEiIHRvICJ0 ZW1wb3JhbDNfdXEiCitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKy0tIEFkZCByYW5nZSBjb2x1 bW4gYW5kIHRoZSBQSyBhdCB0aGUgc2FtZSB0aW1lCitDUkVBVEUgVEFCTEUgdGVtcG9yYWwz ICgKKwlpZCBpbnQ0cmFuZ2UKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMKKwlBREQgQ09M VU1OIHZhbGlkX2F0IHRzcmFuZ2UsCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3BrCisJ UFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKTsKK0RST1AgVEFC TEUgdGVtcG9yYWwzOworLS0gQWRkIHJhbmdlIGNvbHVtbiBhbmQgVU5JUVVFIGNvbnN0cmFp bnQgYXQgdGhlIHNhbWUgdGltZQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsMyAoCisJaWQgaW50 NHJhbmdlCispOworQUxURVIgVEFCTEUgdGVtcG9yYWwzCisJQUREIENPTFVNTiB2YWxpZF9h dCB0c3JhbmdlLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsM191cQorCVVOSVFVRSAoaWQs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpOworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7Cist LQorLS0gdGVzdCBQSyBpbnNlcnRzCistLQorLS0gb2theToKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0w Mi0wMycpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRz cmFuZ2UoJzIwMTgtMDMtMDMnLCAnMjAxOC0wNC0wNCcpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0w MS0wNScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMywzXScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCBOVUxMKSk7CistLSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAxOC0wMS0wNScpKTsKK0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xh dGVzIGV4Y2x1c2lvbiBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ybmdfcGsiCitERVRBSUw6ICBL ZXkgKGlkLCB2YWxpZF9hdCk9KFsxLDIpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIs IkZyaSBKYW4gMDUgMDA6MDA6MDAgMjAxOCIpKSBjb25mbGljdHMgd2l0aCBleGlzdGluZyBr ZXkgKGlkLCB2YWxpZF9hdCk9KFsxLDIpLCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIs IlNhdCBGZWIgMDMgMDA6MDA6MDAgMjAxOCIpKS4KK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKE5VTEwsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScpKTsK K0VSUk9SOiAgbnVsbCB2YWx1ZSBpbiBjb2x1bW4gImlkIiBvZiByZWxhdGlvbiAidGVtcG9y YWxfcm5nIiB2aW9sYXRlcyBub3QtbnVsbCBjb25zdHJhaW50CitERVRBSUw6ICBGYWlsaW5n IHJvdyBjb250YWlucyAobnVsbCwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJGcmkg SmFuIDA1IDAwOjAwOjAwIDIwMTgiKSkuCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFM VUVTICgnWzMsM10nLCBOVUxMKTsKK0VSUk9SOiAgbnVsbCB2YWx1ZSBpbiBjb2x1bW4gInZh bGlkX2F0IiBvZiByZWxhdGlvbiAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBub3QtbnVsbCBj b25zdHJhaW50CitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoWzMsNCksIG51bGwp LgorLS0KKy0tIHRlc3QgYSByYW5nZSB3aXRoIGJvdGggYSBQSyBhbmQgYSBVTklRVUUgY29u c3RyYWludAorLS0KK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorICBpZCBpbnQ0cmFuZ2Us CisgIHZhbGlkX2F0IGRhdGVyYW5nZSwKKyAgaWQyIGludDhyYW5nZSwKKyAgbmFtZSBURVhU LAorICBDT05TVFJBSU5UIHRlbXBvcmFsM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpLAorICBDT05TVFJBSU5UIHRlbXBvcmFsM191bmlxIFVOSVFV RSAoaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUpCisgIFZBTFVFUworICAoJ1sxLDFd JywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ1s3LDddJywgJ2Zv bycpLAorICAoJ1syLDJdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEn KSwgJ1s5LDldJywgJ2JhcicpCis7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKy0tCistLSB0 ZXN0IGNoYW5naW5nIHRoZSBQSydzIGRlcGVuZGVuY2llcworLS0KK0NSRUFURSBUQUJMRSB0 ZW1wb3JhbDMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNU UkFJTlQgdGVtcG9yYWwzX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUykKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgQUxURVIgQ09MVU1OIHZhbGlk X2F0IERST1AgTk9UIE5VTEw7CitFUlJPUjogIGNvbHVtbiAidmFsaWRfYXQiIGlzIGluIGEg cHJpbWFyeSBrZXkKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBBTFRFUiBDT0xVTU4gdmFsaWRf YXQgVFlQRSB0c3R6cmFuZ2UgVVNJTkcgdHN0enJhbmdlKGxvd2VyKHZhbGlkX2F0KSwgdXBw ZXIodmFsaWRfYXQpKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBSRU5BTUUgQ09MVU1OIHZh bGlkX2F0IFRPIHZhbGlkX3RocnU7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgRFJPUCBDT0xV TU4gdmFsaWRfdGhydTsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworLS0KKy0tIHRlc3QgUEFS VElUSU9OIEJZIGZvciByYW5nZXMKKy0tCistLSB0ZW1wb3JhbCBQUklNQVJZIEtFWToKK0NS RUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCAoCisJaWQgaW50NHJhbmdlLAorCXZh bGlkX2F0IGRhdGVyYW5nZSwKKyAgbmFtZSB0ZXh0LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxf cGFyaXRpb25lZF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpCispIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7CitDUkVBVEUgVEFCTEUgdHAxIFBBUlRJ VElPTiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTIElOICgnWzEsMV0nLCAn WzIsMl0nKTsKK0NSRUFURSBUQUJMRSB0cDIgUEFSVElUSU9OIE9GIHRlbXBvcmFsX3BhcnRp dGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbMywzXScsICdbNCw0XScpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWQgVkFMVUVTCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIw MDAtMDEtMDEnLCAnMjAwMC0wMi0wMScpLCAnb25lJyksCisgICgnWzEsMV0nLCBkYXRlcmFu Z2UoJzIwMDAtMDItMDEnLCAnMjAwMC0wMy0wMScpLCAnb25lJyksCisgICgnWzMsM10nLCBk YXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAndGhyZWUnKTsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0Owor ICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1lICAKKy0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tCisgWzEsMikgfCBbMDEtMDEtMjAwMCww Mi0wMS0yMDAwKSB8IG9uZQorIFsxLDIpIHwgWzAyLTAxLTIwMDAsMDMtMDEtMjAwMCkgfCBv bmUKKyBbMyw0KSB8IFswMS0wMS0yMDAwLDAxLTAxLTIwMTApIHwgdGhyZWUKKygzIHJvd3Mp CisKK1NFTEVDVCAqIEZST00gdHAxIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8 ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgbmFtZSAKKy0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0KKyBbMSwyKSB8IFswMS0wMS0yMDAwLDAyLTAxLTIwMDAp IHwgb25lCisgWzEsMikgfCBbMDItMDEtMjAwMCwwMy0wMS0yMDAwKSB8IG9uZQorKDIgcm93 cykKKworU0VMRUNUICogRlJPTSB0cDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAg IHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1lICAKKy0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tCisgWzMsNCkgfCBbMDEtMDEtMjAwMCwwMS0wMS0y MDEwKSB8IHRocmVlCisoMSByb3cpCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9u ZWQ7CistLSB0ZW1wb3JhbCBVTklRVUU6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0 aW9uZWQgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIG5hbWUg dGV4dCwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3Bhcml0aW9uZWRfdXEgVU5JUVVFIChpZCwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKykgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsK K0NSRUFURSBUQUJMRSB0cDEgUEFSVElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZP UiBWQUxVRVMgSU4gKCdbMSwxXScsICdbMiwyXScpOworQ1JFQVRFIFRBQkxFIHRwMiBQQVJU SVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1szLDNdJywg J1s0LDRdJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBWQUxVRVMKKyAg KCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTAxJyksICdvbmUn KSwKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMi0wMScsICcyMDAwLTAzLTAxJyks ICdvbmUnKSwKKyAgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAx LTAxJyksICd0aHJlZScpOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBP UkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAg ICB8IG5hbWUgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0K KyBbMSwyKSB8IFswMS0wMS0yMDAwLDAyLTAxLTIwMDApIHwgb25lCisgWzEsMikgfCBbMDIt MDEtMjAwMCwwMy0wMS0yMDAwKSB8IG9uZQorIFszLDQpIHwgWzAxLTAxLTIwMDAsMDEtMDEt MjAxMCkgfCB0aHJlZQorKDMgcm93cykKKworU0VMRUNUICogRlJPTSB0cDEgT1JERVIgQlkg aWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1l IAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIFsxLDIpIHwg WzAxLTAxLTIwMDAsMDItMDEtMjAwMCkgfCBvbmUKKyBbMSwyKSB8IFswMi0wMS0yMDAwLDAz LTAxLTIwMDApIHwgb25lCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBC WSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5h bWUgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBbMyw0 KSB8IFswMS0wMS0yMDAwLDAxLTAxLTIwMTApIHwgdGhyZWUKKygxIHJvdykKKworRFJPUCBU QUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVk dWxlCmluZGV4IGYwOTg3ZmY1MzcuLmIwOGFhYWU0NGIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJh bGxlbF9zY2hlZHVsZQpAQCAtNzgsNyArNzgsNyBAQCB0ZXN0OiBicmluX2Jsb29tIGJyaW5f bXVsdGkKICMgcHNxbCBkZXBlbmRzIG9uIGNyZWF0ZV9hbQogIyBhbXV0aWxzIGRlcGVuZHMg b24gZ2VvbWV0cnksIGNyZWF0ZV9pbmRleF9zcGdpc3QsIGhhc2hfaW5kZXgsIGJyaW4KICMg LS0tLS0tLS0tLQotdGVzdDogY3JlYXRlX3RhYmxlX2xpa2UgYWx0ZXJfZ2VuZXJpYyBhbHRl cl9vcGVyYXRvciBtaXNjIGFzeW5jIGRic2l6ZSBtZXJnZSBtaXNjX2Z1bmN0aW9ucyBzeXN2 aWV3cyB0c3JmIHRpZCB0aWRzY2FuIHRpZHJhbmdlc2NhbiBjb2xsYXRlLmljdS51dGY4IGlu Y3JlbWVudGFsX3NvcnQgY3JlYXRlX3JvbGUKK3Rlc3Q6IGNyZWF0ZV90YWJsZV9saWtlIGFs dGVyX2dlbmVyaWMgYWx0ZXJfb3BlcmF0b3IgbWlzYyBhc3luYyBkYnNpemUgbWVyZ2UgbWlz Y19mdW5jdGlvbnMgc3lzdmlld3MgdHNyZiB0aWQgdGlkc2NhbiB0aWRyYW5nZXNjYW4gY29s bGF0ZS5pY3UudXRmOCBpbmNyZW1lbnRhbF9zb3J0IGNyZWF0ZV9yb2xlIHdpdGhvdXRfb3Zl cmxhcHMKIAogIyBjb2xsYXRlLioudXRmOCB0ZXN0cyBjYW5ub3QgYmUgcnVuIGluIHBhcmFs bGVsIHdpdGggZWFjaCBvdGhlcgogdGVzdDogcnVsZXMgcHNxbCBwc3FsX2Nyb3NzdGFiIGFt dXRpbHMgc3RhdHNfZXh0IGNvbGxhdGUubGludXgudXRmOCBjb2xsYXRlLndpbmRvd3Mud2lu MTI1MgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFw cy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5jOGU4YWI5OTRhCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwK QEAgLTAsMCArMSwyOTAgQEAKKy0tIFRlc3RzIGZvciBXSVRIT1VUIE9WRVJMQVBTLgorLS0K Ky0tIFdlIGxlYXZlIGJlaGluZCBzZXZlcmFsIHRhYmxlcyB0byB0ZXN0IHBnX2R1bXAgZXRj OgorLS0gdGVtcG9yYWxfcm5nLCB0ZW1wb3JhbF9ybmcyLAorLS0gdGVtcG9yYWxfZmtfcm5n MnJuZy4KKworLS0KKy0tIHRlc3QgaW5wdXQgcGFyc2VyCistLQorCistLSBQSyB3aXRoIG5v IGNvbHVtbnMganVzdCBXSVRIT1VUIE9WRVJMQVBTOgorCitDUkVBVEUgVEFCTEUgdGVtcG9y YWxfcm5nICgKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5n X3BrIFBSSU1BUlkgS0VZICh2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKKworLS0g UEsgd2l0aCBhIHJhbmdlIGNvbHVtbi9QRVJJT0QgdGhhdCBpc24ndCB0aGVyZToKKworQ1JF QVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJaWQgSU5URUdFUiwKKwlDT05TVFJBSU5UIHRl bXBvcmFsX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpCispOworCistLSBQSyB3aXRoIGEgbm9uLXJhbmdlIGNvbHVtbjoKKworQ1JFQVRFIFRB QkxFIHRlbXBvcmFsX3JuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IFRFWFQsCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKQorKTsKKworLS0gUEsgd2l0aCBvbmUgY29sdW1uIHBsdXMgYSBy YW5nZToKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJLS0gU2luY2Ugd2UgY2Fu J3QgZGVwZW5kIG9uIGhhdmluZyBidHJlZV9naXN0IGhlcmUsCisJLS0gdXNlIGFuIGludDRy YW5nZSBpbnN0ZWFkIG9mIGFuIGludC4KKwktLSAoVGhlIHJhbmdldHlwZXMgcmVncmVzc2lv biB0ZXN0IHVzZXMgdGhlIHNhbWUgdHJpY2suKQorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9h dCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0ZW1wb3JhbF9ybmcKK1NF TEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVS RSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZ19wayc7CitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVm KGNvbmluZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9 ICd0ZW1wb3JhbF9ybmdfcGsnOworCistLSBQSyB3aXRoIHR3byBjb2x1bW5zIHBsdXMgYSBy YW5nZToKKy0tIFdlIGRvbid0IGRyb3AgdGhpcyB0YWJsZSBiZWNhdXNlIHRlc3RzIGJlbG93 IGFsc28gbmVlZCBtdWx0aXBsZSBzY2FsYXIgY29sdW1ucy4KK0NSRUFURSBUQUJMRSB0ZW1w b3JhbF9ybmcyICgKKwlpZDEgaW50NHJhbmdlLAorCWlkMiBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJfcGsgUFJJTUFSWSBLRVkg KGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK1xkIHRlbXBvcmFs X3JuZzIKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3Ry YWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZzJfcGsnOworU0VMRUNUIHBnX2dl dF9pbmRleGRlZihjb25pbmRpZCwgMCwgdHJ1ZSkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJF IGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nMl9wayc7CisKKworLS0gUEsgd2l0aCBhIGN1c3Rv bSByYW5nZSB0eXBlOgorQ1JFQVRFIFRZUEUgdGV4dHJhbmdlMiBBUyByYW5nZSAoc3VidHlw ZT10ZXh0LCBjb2xsYXRpb249IkMiKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgK KwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdGV4dHJhbmdlMiwKKwlDT05TVFJBSU5UIHRl bXBvcmFsX3JuZzNfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3JuZzMgRFJPUCBDT05TVFJBSU5UIHRl bXBvcmFsX3JuZzNfcGs7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CitEUk9QIFRZUEUg dGV4dHJhbmdlMjsKKworLS0gUEsgd2l0aCBhIG11bHRpcmFuZ2U6CitDUkVBVEUgVEFCTEUg dGVtcG9yYWxfbWx0cm5nICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxpZF9hdCB0c211bHRp cmFuZ2UsCisgIENPTlNUUkFJTlQgdGVtcG9yYWxfbWx0cm5nX3BrIFBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0ZW1wb3JhbF9tbHRybmcK KworLS0gVU5JUVVFIHdpdGggbm8gY29sdW1ucyBqdXN0IFdJVEhPVVQgT1ZFUkxBUFM6CisK K0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNP TlNUUkFJTlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUgKHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpCispOworCistLSBVTklRVUUgd2l0aCBhIHJhbmdlIGNvbHVtbi9QRVJJT0QgdGhh dCBpc24ndCB0aGVyZToKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMgKAorCWlkIElO VEVHRVIsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFVRSAoaWQsIHZhbGlk X2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworCistLSBVTklRVUUgd2l0aCBhIG5vbi1yYW5n ZSBjb2x1bW46CisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKKwlpZCBpbnQ0cmFu Z2UsCisJdmFsaWRfYXQgVEVYVCwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNfdXEgVU5J UVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CisKKy0tIFVOSVFVRSB3 aXRoIG9uZSBjb2x1bW4gcGx1cyBhIHJhbmdlOgorCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxf cm5nMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlO VCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpCispOworXGQgdGVtcG9yYWxfcm5nMworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVm KG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5n M191cSc7CitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVlKSBGUk9N IHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmczX3VxJzsKK0RS T1AgVEFCTEUgdGVtcG9yYWxfcm5nMzsKKworLS0gVU5JUVVFIHdpdGggdHdvIGNvbHVtbnMg cGx1cyBhIHJhbmdlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMgKAorCWlkMSBpbnQ0 cmFuZ2UsCisJaWQyIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJ TlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUgKGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKQorKTsKK1xkIHRlbXBvcmFsX3JuZzMKK1NFTEVDVCBwZ19nZXRfY29uc3Ry YWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBv cmFsX3JuZzNfdXEnOworU0VMRUNUIHBnX2dldF9pbmRleGRlZihjb25pbmRpZCwgMCwgdHJ1 ZSkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nM191 cSc7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CisKKy0tIFVOSVFVRSB3aXRoIGEgY3Vz dG9tIHJhbmdlIHR5cGU6CitDUkVBVEUgVFlQRSB0ZXh0cmFuZ2UyIEFTIHJhbmdlIChzdWJ0 eXBlPXRleHQsIGNvbGxhdGlvbj0iQyIpOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMg KAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0ZXh0cmFuZ2UyLAorCUNPTlNUUkFJTlQg dGVtcG9yYWxfcm5nM191cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBT KQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3JuZzMgRFJPUCBDT05TVFJBSU5UIHRlbXBv cmFsX3JuZzNfdXE7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CitEUk9QIFRZUEUgdGV4 dHJhbmdlMjsKKworLS0KKy0tIHRlc3QgQUxURVIgVEFCTEUgQUREIENPTlNUUkFJTlQKKy0t CisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3Ju ZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UKKyk7CitBTFRFUiBUQUJM RSB0ZW1wb3JhbF9ybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsKKwlQUklN QVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpOworCistLSBQSyB3aXRo IFVTSU5HIElOREVYIChub3QgcG9zc2libGUpOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsMyAo CisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UKKyk7CitDUkVBVEUgSU5ERVgg aWR4X3RlbXBvcmFsM191cSBPTiB0ZW1wb3JhbDMgVVNJTkcgZ2lzdCAoaWQsIHZhbGlkX2F0 KTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsM19w aworCVBSSU1BUlkgS0VZIFVTSU5HIElOREVYIGlkeF90ZW1wb3JhbDNfdXE7CitEUk9QIFRB QkxFIHRlbXBvcmFsMzsKKworLS0gVU5JUVVFIHdpdGggVVNJTkcgSU5ERVggKG5vdCBwb3Nz aWJsZSk6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFs aWRfYXQgdHNyYW5nZQorKTsKK0NSRUFURSBJTkRFWCBpZHhfdGVtcG9yYWwzX3VxIE9OIHRl bXBvcmFsMyBVU0lORyBnaXN0IChpZCwgdmFsaWRfYXQpOworQUxURVIgVEFCTEUgdGVtcG9y YWwzCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3VxCisJVU5JUVVFIFVTSU5HIElOREVY IGlkeF90ZW1wb3JhbDNfdXE7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKworLS0gVU5JUVVF IHdpdGggVVNJTkcgW1VOSVFVRV0gSU5ERVggKHBvc3NpYmxlIGJ1dCBub3QgYSB0ZW1wb3Jh bCBjb25zdHJhaW50KToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRyYW5n ZSwKKwl2YWxpZF9hdCB0c3JhbmdlCispOworQ1JFQVRFIFVOSVFVRSBJTkRFWCBpZHhfdGVt cG9yYWwzX3VxIE9OIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0KTsKK0FMVEVSIFRBQkxFIHRl bXBvcmFsMworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsM191cQorCVVOSVFVRSBVU0lORyBJ TkRFWCBpZHhfdGVtcG9yYWwzX3VxOworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CisKKy0tIEFk ZCByYW5nZSBjb2x1bW4gYW5kIHRoZSBQSyBhdCB0aGUgc2FtZSB0aW1lCitDUkVBVEUgVEFC TEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bDMKKwlBREQgQ09MVU1OIHZhbGlkX2F0IHRzcmFuZ2UsCisJQUREIENPTlNUUkFJTlQgdGVt cG9yYWwzX3BrCisJUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBT KTsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworCistLSBBZGQgcmFuZ2UgY29sdW1uIGFuZCBV TklRVUUgY29uc3RyYWludCBhdCB0aGUgc2FtZSB0aW1lCitDUkVBVEUgVEFCTEUgdGVtcG9y YWwzICgKKwlpZCBpbnQ0cmFuZ2UKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMKKwlBREQg Q09MVU1OIHZhbGlkX2F0IHRzcmFuZ2UsCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3Vx CisJVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CitEUk9QIFRBQkxF IHRlbXBvcmFsMzsKKworLS0KKy0tIHRlc3QgUEsgaW5zZXJ0cworLS0KKworLS0gb2theToK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIw MTgtMDEtMDInLCAnMjAxOC0wMi0wMycpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBW QUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDMtMDMnLCAnMjAxOC0wNC0wNCcpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMS0wNScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBW QUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCBOVUxMKSk7CisKKy0tIHNo b3VsZCBmYWlsOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxLDFdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAxLTA1JykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nIFZBTFVFUyAoTlVMTCwgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAx LTA1JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1szLDNdJywgTlVM TCk7CisKKy0tCistLSB0ZXN0IGEgcmFuZ2Ugd2l0aCBib3RoIGEgUEsgYW5kIGEgVU5JUVVF IGNvbnN0cmFpbnQKKy0tCisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorICBpZCBpbnQ0 cmFuZ2UsCisgIHZhbGlkX2F0IGRhdGVyYW5nZSwKKyAgaWQyIGludDhyYW5nZSwKKyAgbmFt ZSBURVhULAorICBDT05TVFJBSU5UIHRlbXBvcmFsM19wayBQUklNQVJZIEtFWSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorICBDT05TVFJBSU5UIHRlbXBvcmFsM191bmlx IFVOSVFVRSAoaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUpCisgIFZBTFVFUworICAo J1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ1s3LDdd JywgJ2ZvbycpLAorICAoJ1syLDJdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAt MDEtMDEnKSwgJ1s5LDldJywgJ2JhcicpCis7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKwor LS0KKy0tIHRlc3QgY2hhbmdpbmcgdGhlIFBLJ3MgZGVwZW5kZW5jaWVzCistLQorCitDUkVB VEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5n ZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpCispOworCitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgQUxURVIg Q09MVU1OIHZhbGlkX2F0IERST1AgTk9UIE5VTEw7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMg QUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZUEUgdHN0enJhbmdlIFVTSU5HIHRzdHpyYW5nZShs b3dlcih2YWxpZF9hdCksIHVwcGVyKHZhbGlkX2F0KSk7CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bDMgUkVOQU1FIENPTFVNTiB2YWxpZF9hdCBUTyB2YWxpZF90aHJ1OworQUxURVIgVEFCTEUg dGVtcG9yYWwzIERST1AgQ09MVU1OIHZhbGlkX3RocnU7CitEUk9QIFRBQkxFIHRlbXBvcmFs MzsKKworLS0KKy0tIHRlc3QgUEFSVElUSU9OIEJZIGZvciByYW5nZXMKKy0tCisKKy0tIHRl bXBvcmFsIFBSSU1BUlkgS0VZOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVk ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAorICBuYW1lIHRleHQs CisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJpdGlvbmVkX3BrIFBSSU1BUlkgS0VZIChpZCwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKykgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsK K0NSRUFURSBUQUJMRSB0cDEgUEFSVElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZP UiBWQUxVRVMgSU4gKCdbMSwxXScsICdbMiwyXScpOworQ1JFQVRFIFRBQkxFIHRwMiBQQVJU SVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1szLDNdJywg J1s0LDRdJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBWQUxVRVMKKyAg KCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTAxJyksICdvbmUn KSwKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMi0wMScsICcyMDAwLTAzLTAxJyks ICdvbmUnKSwKKyAgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAx LTAxJyksICd0aHJlZScpOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBP UkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitTRUxFQ1QgKiBGUk9NIHRwMSBPUkRFUiBCWSBpZCwg dmFsaWRfYXQ7CitTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitE Uk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOworCistLSB0ZW1wb3JhbCBVTklRVUU6 CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgKAorCWlkIGludDRyYW5nZSwK Kwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIG5hbWUgdGV4dCwKKwlDT05TVFJBSU5UIHRlbXBv cmFsX3Bhcml0aW9uZWRfdXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UykKKykgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKK0NSRUFURSBUQUJMRSB0cDEgUEFSVElU SU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbMSwxXScsICdb MiwyXScpOworQ1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0 aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1szLDNdJywgJ1s0LDRdJyk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZCBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAw MC0wMS0wMScsICcyMDAwLTAyLTAxJyksICdvbmUnKSwKKyAgKCdbMSwxXScsIGRhdGVyYW5n ZSgnMjAwMC0wMi0wMScsICcyMDAwLTAzLTAxJyksICdvbmUnKSwKKyAgKCdbMywzXScsIGRh dGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICd0aHJlZScpOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitT RUxFQ1QgKiBGUk9NIHRwMSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitTRUxFQ1QgKiBGUk9N IHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRp dGlvbmVkOwotLSAKMi40Mi4wCgo= --------------F56VWTQ0Ck05qER7bvQmfAru Content-Type: text/x-patch; charset=UTF-8; name="v21-0003-Add-GiST-referencedagg-support-func.patch" Content-Disposition: attachment; filename="v21-0003-Add-GiST-referencedagg-support-func.patch" Content-Transfer-Encoding: base64 RnJvbSA3ODNiYTczYWFkNjNlNmRkYWU3Nzk5ODIzMmQ5MWU2MTc5YmVkMWFmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IEZyaSwgMjkgRGVjIDIwMjMgMTQ6MzY6MjcgLTA4 MDAKU3ViamVjdDogW1BBVENIIHYyMSAzLzhdIEFkZCBHaVNUIHJlZmVyZW5jZWRhZ2cgc3Vw cG9ydCBmdW5jCgpUaGlzIGlzIHRoZSB0aGlydGVlbnRoIHN1cHBvcnQgZnVuY3Rpb24gYW5k IGxldHMgdXMgaW1wbGVtZW50IHRlbXBvcmFsCmZvcmVpZ24ga2V5cyB3aXRob3V0IGhhcmRj b2RpbmcgdGhlIHJhbmdlX2FnZyBmdW5jdGlvbi4gVGhlIHN1cHBvcnQKZnVuY3Rpb24gc2hv dWxkIGJlIGFuIGFnZ3JlZ2F0ZSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgdHlwZSBtYXRjaGlu ZyB0aGUKZm9yZWlnbiBrZXkncyBQRVJJT0QgZWxlbWVudCBhbmQgcmV0dXJucyBhIHR5cGUg dGhhdCBjYW4gYXBwZWFyIG9uIHRoZQpyaWdodGhhbmQgc2lkZSBvZiBhIENvbnRhaW5lZEJ5 IG9wZXJhdG9yLCBzbyB0aGF0IGZvciBleGFtcGxlIHdlIGNhbiBzYXkKYGZrcGVyaW9kIDxA IHJhbmdlX2FnZyhwa3BlcmlvZClgLgotLS0KIGRvYy9zcmMvc2dtbC9naXN0LnNnbWwgICAg ICAgICAgICAgICAgIHwgMTEyICsrKysrKysrKysrKysrKysrKysrKysrKysKIGRvYy9zcmMv c2dtbC94aW5kZXguc2dtbCAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0dmFsaWRhdGUuYyB8ICAgNyArLQogc3JjL2JhY2tlbmQvYWNjZXNz L2luZGV4L2FtdmFsaWRhdGUuYyAgfCAgIDggKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9naXN0 LmggICAgICAgICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJv Yy5kYXQgICAgICB8ICAgNiArKwogNiBmaWxlcyBjaGFuZ2VkLCAxMzggaW5zZXJ0aW9ucygr KSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZ2lzdC5zZ21s IGIvZG9jL3NyYy9zZ21sL2dpc3Quc2dtbAppbmRleCBmMDU4NzVkMzZjLi5jNDkwOWU2ZDhh IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZ2lzdC5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9naXN0LnNnbWwKQEAgLTMwMCw2ICszMDAsMTAgQEAgQ1JFQVRFIElOREVYIE9OIG15X3Rh YmxlIFVTSU5HIEdJU1QgKG15X2luZXRfY29sdW1uIGluZXRfb3BzKTsKICAgIDxmaWxlbmFt ZT5zcmMvaW5jbHVkZS9hY2Nlc3Mvc3RyYXRudW0uaDwvZmlsZW5hbWU+KSBpbnRvIHN0cmF0 ZWd5IG51bWJlcnMKICAgIHVzZWQgYnkgdGhlIG9wY2xhc3MuIFRoaXMgbGV0cyB0aGUgY29y ZSBjb2RlIGxvb2sgdXAgb3BlcmF0b3JzIGZvciB0ZW1wb3JhbAogICAgY29uc3RyYWludCBp bmRleGVzLgorICAgVGhlIG9wdGlvbmFsIHRoaXJ0ZWVudGggbWV0aG9kIDxmdW5jdGlvbj5y ZWZlcmVuY2VkYWdnPC9mdW5jdGlvbj4gaXMgdXNlZCBieQorICAgdGVtcG9yYWwgZm9yZWln biBrZXlzIHRvIGNvbWJpbmVkIHJlZmVyZW5jZWQgcm93cyB3aXRoIHRoZSBzYW1lCisgICBu b24tPGxpdGVyYWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4gaW50byBvbmUgPGxpdGVy YWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4KKyAgIHNwYW4gdG8gY29tcGFyZSBhZ2Fp bnN0IHJlZmVyZW5jaW5nIHJvd3MuCiAgPC9wYXJhPgogCiAgPHZhcmlhYmxlbGlzdD4KQEAg LTEyNDksNiArMTI1MywxMTQgQEAgbXlfc3RyYXRudW0oUEdfRlVOQ1RJT05fQVJHUykKICAg ICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAg ICA8dmFybGlzdGVudHJ5PgorICAgICA8dGVybT48ZnVuY3Rpb24+cmVmZXJlbmNlZGFnZzwv ZnVuY3Rpb24+PC90ZXJtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAg ICBBbiBhZ2dyZWdhdGUgZnVuY3Rpb24uIEdpdmVuIHZhbHVlcyBvZiB0aGlzIG9wY2xhc3Ms CisgICAgICAgaXQgcmV0dXJucyBhIHZhbHVlIGNvbWJpbmluZyB0aGVtIGFsbC4gVGhlIHJl dHVybiB2YWx1ZQorICAgICAgIG5lZWQgbm90IGJlIHRoZSBzYW1lIHR5cGUgYXMgdGhlIGlu cHV0LCBidXQgaXQgbXVzdCBiZSBhCisgICAgICAgdHlwZSB0aGF0IGNhbiBhcHBlYXIgb24g dGhlIHJpZ2h0IGhhbmQgc2lkZSBvZiB0aGUgImNvbnRhaW5lZCBieSIKKyAgICAgICBvcGVy YXRvci4gRm9yIGV4YW1wbGUgdGhlIGJ1aWx0LWluIDxsaXRlcmFsPnJhbmdlX29wczwvbGl0 ZXJhbD4KKyAgICAgICBvcGNsYXNzIHVzZXMgPGxpdGVyYWw+cmFuZ2VfYWdnPC9saXRlcmFs PiBoZXJlLCBzbyB0aGF0IGZvcmVpZ24KKyAgICAgICBrZXlzIGNhbiBjaGVjayA8bGl0ZXJh bD5ma3BlcmlvZCBAPiByYW5nZV9hZ2cocGtwZXJpb2QpPC9saXRlcmFsPi4KKyAgICAgIDwv cGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoaXMgaXMgdXNlZCBmb3IgdGVtcG9yYWwg Zm9yZWlnbiBrZXkgY29uc3RyYWludHMuCisgICAgICAgSWYgeW91IG9taXQgdGhpcyBzdXBw b3J0IGZ1bmN0aW9uLCB5b3VyIHR5cGUgY2Fubm90IGJlIHVzZWQKKyAgICAgICBhcyB0aGUg PGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPiBwYXJ0IG9mIGEgZm9yZWlnbiBrZXkuCisgICAg ICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSA8YWNyb255bT5TUUw8L2Fj cm9ueW0+IGRlY2xhcmF0aW9uIG9mIHRoZSBmdW5jdGlvbiBtdXN0IGxvb2sgbGlrZQorICAg ICAgIHRoaXMgKHVzaW5nIDxsaXRlcmFsPm15X3JhbmdlX2FnZzwvbGl0ZXJhbD4gYXMgYW4g ZXhhbXBsZSk6CisKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNU SU9OIG15X3JhbmdlX2FnZ190cmFuc2ZuKGludGVybmFsLCBhbnlyYW5nZSkKK1JFVFVSTlMg aW50ZXJuYWwKK0FTICdNT0RVTEVfUEFUSE5BTUUnCitMQU5HVUFHRSBDIFNUUklDVDsKKwor Q1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gbXlfcmFuZ2VfYWdnX2ZpbmFsZm4oaW50ZXJu YWwsIGFueXJhbmdlKQorUkVUVVJOUyBhbnltdWx0aXJhbmdlCitBUyAnTU9EVUxFX1BBVEhO QU1FJworTEFOR1VBR0UgQyBTVFJJQ1Q7CisKK0NSRUFURSBBR0dSRUdBVEUgbXlfcmFuZ2Vf YWdnKGFueXJhbmdlKSB7CisgIFNGVU5DID0gbXlfcmFuZ2VfYWdnX3RyYW5zZm4sCisgIFNU WVBFID0gaW50ZXJuYWwsCisgIEZJTkFMRlVOQyA9IG15X3JhbmdlX2FnZ19maW5hbGZuCit9 OworPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJhPgor ICAgICAgICBUaGUgbWF0Y2hpbmcgY29kZSBpbiB0aGUgQyBtb2R1bGUgY291bGQgdGhlbiBm b2xsb3cgdGhpcyBleGFtcGxlOgorCis8cHJvZ3JhbWxpc3Rpbmc+CitEYXR1bQorbXlfcmFu Z2VfYWdnX3RyYW5zZm4oUEdfRlVOQ1RJT05fQVJHUykKK3sKKyAgICBNZW1vcnlDb250ZXh0 ICAgIGFnZ0NvbnRleHQ7CisgICAgT2lkICAgICAgICAgICAgICBybmd0eXBvaWQ7CisgICAg QXJyYXlCdWlsZFN0YXRlICpzdGF0ZTsKKworICAgIGlmICghQWdnQ2hlY2tDYWxsQ29udGV4 dChmY2luZm8sICZhbXA7YWdnQ29udGV4dCkpCisgICAgICAgIGVsb2coRVJST1IsICJyYW5n ZV9hZ2dfdHJhbnNmbiBjYWxsZWQgaW4gbm9uLWFnZ3JlZ2F0ZSBjb250ZXh0Iik7CisKKyAg ICBybmd0eXBvaWQgPSBnZXRfZm5fZXhwcl9hcmd0eXBlKGZjaW5mby0mZ3Q7ZmxpbmZvLCAx KTsKKyAgICBpZiAoIXR5cGVfaXNfcmFuZ2Uocm5ndHlwb2lkKSkKKyAgICAgICAgZWxvZyhF UlJPUiwgInJhbmdlX2FnZyBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgcmFuZ2UiKTsKKworICAg IGlmIChQR19BUkdJU05VTEwoMCkpCisgICAgICAgIHN0YXRlID0gaW5pdEFycmF5UmVzdWx0 KHJuZ3R5cG9pZCwgYWdnQ29udGV4dCwgZmFsc2UpOworICAgIGVsc2UKKyAgICAgICAgc3Rh dGUgPSAoQXJyYXlCdWlsZFN0YXRlICopIFBHX0dFVEFSR19QT0lOVEVSKDApOworCisgICAg Lyogc2tpcCBOVUxMcyAqLworICAgIGlmICghUEdfQVJHSVNOVUxMKDEpKQorICAgICAgICBh Y2N1bUFycmF5UmVzdWx0KHN0YXRlLCBQR19HRVRBUkdfREFUVU0oMSksIGZhbHNlLCBybmd0 eXBvaWQsIGFnZ0NvbnRleHQpOworCisgICAgUEdfUkVUVVJOX1BPSU5URVIoc3RhdGUpOwor fQorCitEYXR1bQorbXlfcmFuZ2VfYWdnX2ZpbmFsZm4oUEdfRlVOQ1RJT05fQVJHUykKK3sK KyAgICBNZW1vcnlDb250ZXh0ICAgIGFnZ0NvbnRleHQ7CisgICAgT2lkICAgICAgICAgICAg ICBtbHRybmd0eXBvaWQ7CisgICAgVHlwZUNhY2hlRW50cnkgICp0eXBjYWNoZTsKKyAgICBB cnJheUJ1aWxkU3RhdGUgKnN0YXRlOworICAgIGludDMyICAgICAgICAgICAgcmFuZ2VfY291 bnQ7CisgICAgUmFuZ2VUeXBlICAgICAgKipyYW5nZXM7CisgICAgaW50ICAgICAgICAgICAg ICBpOworCisgICAgaWYgKCFBZ2dDaGVja0NhbGxDb250ZXh0KGZjaW5mbywgJmFtcDthZ2dD b250ZXh0KSkKKyAgICAgICAgZWxvZyhFUlJPUiwgInJhbmdlX2FnZ19maW5hbGZuIGNhbGxl ZCBpbiBub24tYWdncmVnYXRlIGNvbnRleHQiKTsKKworICAgIHN0YXRlID0gUEdfQVJHSVNO VUxMKDApID8gTlVMTCA6IChBcnJheUJ1aWxkU3RhdGUgKikgUEdfR0VUQVJHX1BPSU5URVIo MCk7CisgICAgaWYgKHN0YXRlID09IE5VTEwpCisgICAgICAgIC8qIFRoaXMgc2hvdWxkbid0 IGJlIHBvc3NpYmxlLCBidXQganVzdCBpbiBjYXNlLi4uLiAqLworICAgICAgICBQR19SRVRV Uk5fTlVMTCgpOworCisgICAgLyogQWxzbyByZXR1cm4gTlVMTCBpZiB3ZSBoYWQgemVybyBp bnB1dHMsIGxpa2Ugb3RoZXIgYWdncmVnYXRlcyAqLworICAgIHJhbmdlX2NvdW50ID0gc3Rh dGUtJmd0O25lbGVtczsKKyAgICBpZiAocmFuZ2VfY291bnQgPT0gMCkKKyAgICAgICAgUEdf UkVUVVJOX05VTEwoKTsKKworICAgIG1sdHJuZ3R5cG9pZCA9IGdldF9mbl9leHByX3JldHR5 cGUoZmNpbmZvLSZndDtmbGluZm8pOworICAgIHR5cGNhY2hlID0gbXVsdGlyYW5nZV9nZXRf dHlwY2FjaGUoZmNpbmZvLCBtbHRybmd0eXBvaWQpOworCisgICAgcmFuZ2VzID0gcGFsbG9j MChyYW5nZV9jb3VudCAqIHNpemVvZihSYW5nZVR5cGUgKikpOworICAgIGZvciAoaSA9IDA7 IGkgJmx0OyByYW5nZV9jb3VudDsgaSsrKQorICAgICAgICByYW5nZXNbaV0gPSBEYXR1bUdl dFJhbmdlVHlwZVAoc3RhdGUtJmd0O2R2YWx1ZXNbaV0pOworCisgICAgUEdfUkVUVVJOX01V TFRJUkFOR0VfUChtYWtlX211bHRpcmFuZ2UobWx0cm5ndHlwb2lkLCB0eXBjYWNoZS0mZ3Q7 cm5ndHlwZSwgcmFuZ2VfY291bnQsIHJhbmdlcykpOworfQorPC9wcm9ncmFtbGlzdGluZz4K KyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4K ICAgPC92YXJpYWJsZWxpc3Q+CiAKICAgPHBhcmE+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwveGluZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwveGluZGV4LnNnbWwKaW5kZXggOGM0ZWRl MzEwNS4uM2VlMTM2MTcxNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3hpbmRleC5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC94aW5kZXguc2dtbApAQCAtNTA4LDcgKzUwOCw3IEBACiAg ICA8L3RhYmxlPgogCiAgIDxwYXJhPgotICAgR2lTVCBpbmRleGVzIGhhdmUgdHdlbHZlIHN1 cHBvcnQgZnVuY3Rpb25zLCBzZXZlbiBvZiB3aGljaCBhcmUgb3B0aW9uYWwsCisgICBHaVNU IGluZGV4ZXMgaGF2ZSB0aGlydGVlbiBzdXBwb3J0IGZ1bmN0aW9ucywgZWlnaHQgb2Ygd2hp Y2ggYXJlIG9wdGlvbmFsLAogICAgYXMgc2hvd24gaW4gPHhyZWYgbGlua2VuZD0ieGluZGV4 LWdpc3Qtc3VwcG9ydC10YWJsZSIvPi4KICAgIChGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUg PHhyZWYgbGlua2VuZD0iZ2lzdCIvPi4pCiAgIDwvcGFyYT4KQEAgLTU5Niw2ICs1OTYsMTIg QEAKICAgICAgICAgdXNlZCBieSB0aGUgb3BjbGFzcyAob3B0aW9uYWwpPC9lbnRyeT4KICAg ICAgICA8ZW50cnk+MTI8L2VudHJ5PgogICAgICAgPC9yb3c+CisgICAgICA8cm93PgorICAg ICAgIDxlbnRyeT48ZnVuY3Rpb24+cmVmZXJlbmNlZGFnZzwvZnVuY3Rpb24+PC9lbnRyeT4K KyAgICAgICA8ZW50cnk+YWdncmVnYXRlcyByZWZlcmVuY2VkIHJvd3MnIDxsaXRlcmFsPldJ VEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+CisgICAgICAgIHBhcnQ8L2VudHJ5PgorICAgICAg IDxlbnRyeT4xMzwvZW50cnk+CisgICAgICA8L3Jvdz4KICAgICAgPC90Ym9keT4KICAgICA8 L3Rncm91cD4KICAgIDwvdGFibGU+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC9naXN0dmFsaWRhdGUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R2YWxp ZGF0ZS5jCmluZGV4IDRkMWIyYzQ0MDAuLmFiZmNkZTZjYmEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R2YWxpZGF0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9naXN0L2dpc3R2YWxpZGF0ZS5jCkBAIC0xNTEsNiArMTUxLDExIEBAIGdpc3R2YWxp ZGF0ZShPaWQgb3BjbGFzc29pZCkKIAkJCQlvayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUo cHJvY2Zvcm0tPmFtcHJvYywgSU5UMk9JRCwgdHJ1ZSwKIAkJCQkJCQkJCQkJMSwgMSwgSU5U Mk9JRCk7CiAJCQkJYnJlYWs7CisJCQljYXNlIEdJU1RfUkVGRVJFTkNFRF9BR0dfUFJPQzoK KwkJCQlvayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgSW52 YWxpZE9pZCwgZmFsc2UsCisJCQkJCQkJCQkJCSAgIDEsIDEsIG9wY2ludHlwZSk7CisJCQkJ Ly8gVE9ETzogbXVzdCBiZSBhZ2dyZWdhdGUKKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJ CQkJZXJlcG9ydChJTkZPLAogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVD VF9ERUZJTklUSU9OKSwKQEAgLTI3Miw3ICsyNzcsNyBAQCBnaXN0dmFsaWRhdGUoT2lkIG9w Y2xhc3NvaWQpCiAJCWlmIChpID09IEdJU1RfRElTVEFOQ0VfUFJPQyB8fCBpID09IEdJU1Rf RkVUQ0hfUFJPQyB8fAogCQkJaSA9PSBHSVNUX0NPTVBSRVNTX1BST0MgfHwgaSA9PSBHSVNU X0RFQ09NUFJFU1NfUFJPQyB8fAogCQkJaSA9PSBHSVNUX09QVElPTlNfUFJPQyB8fCBpID09 IEdJU1RfU09SVFNVUFBPUlRfUFJPQyB8fAotCQkJaSA9PSBHSVNUX1NUUkFUTlVNX1BST0Mp CisJCQlpID09IEdJU1RfU1RSQVROVU1fUFJPQyB8fCBpID09IEdJU1RfUkVGRVJFTkNFRF9B R0dfUFJPQykKIAkJCWNvbnRpbnVlOwkJCS8qIG9wdGlvbmFsIG1ldGhvZHMgKi8KIAkJZXJl cG9ydChJTkZPLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5J VElPTiksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvYW12YWxpZGF0 ZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2FtdmFsaWRhdGUuYwppbmRleCA1YzJk NzdlOTA4Li44ZWI5OWU5YjFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5k ZXgvYW12YWxpZGF0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9hbXZhbGlk YXRlLmMKQEAgLTE0Niw3ICsxNDYsOCBAQCBpZGVudGlmeV9vcGZhbWlseV9ncm91cHMoQ2F0 Q0xpc3QgKm9wcmxpc3QsIENhdENMaXN0ICpwcm9jbGlzdCkKICAqCiAgKiBUaGUgIi4uLiIg cmVwcmVzZW50cyBtYXhhcmdzIGFyZ3VtZW50LXR5cGUgT0lEcy4gIElmICJleGFjdCIgaXMg dHJ1ZSwgdGhleQogICogbXVzdCBtYXRjaCB0aGUgZnVuY3Rpb24gYXJnIHR5cGVzIGV4YWN0 bHksIGVsc2Ugb25seSBiaW5hcnktY29lcmNpYmx5LgotICogSW4gYW55IGNhc2UgdGhlIGZ1 bmN0aW9uIHJlc3VsdCB0eXBlIG11c3QgbWF0Y2ggcmVzdHlwZSBleGFjdGx5LgorICogSW4g YW55IGNhc2UgdGhlIGZ1bmN0aW9uIHJlc3VsdCB0eXBlIG11c3QgbWF0Y2ggcmVzdHlwZSBl eGFjdGx5LAorICogdW5sZXNzIGl0IGlzIEludmFsaWRPaWQuCiAgKi8KIGJvb2wKIGNoZWNr X2FtcHJvY19zaWduYXR1cmUoT2lkIGZ1bmNpZCwgT2lkIHJlc3R5cGUsIGJvb2wgZXhhY3Qs CkBAIC0xNjMsOCArMTY0LDkgQEAgY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShPaWQgZnVuY2lk LCBPaWQgcmVzdHlwZSwgYm9vbCBleGFjdCwKIAkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1 cCBmYWlsZWQgZm9yIGZ1bmN0aW9uICV1IiwgZnVuY2lkKTsKIAlwcm9jZm9ybSA9IChGb3Jt X3BnX3Byb2MpIEdFVFNUUlVDVCh0cCk7CiAKLQlpZiAocHJvY2Zvcm0tPnByb3JldHR5cGUg IT0gcmVzdHlwZSB8fCBwcm9jZm9ybS0+cHJvcmV0c2V0IHx8Ci0JCXByb2Nmb3JtLT5wcm9u YXJncyA8IG1pbmFyZ3MgfHwgcHJvY2Zvcm0tPnByb25hcmdzID4gbWF4YXJncykKKwlpZiAo KHByb2Nmb3JtLT5wcm9yZXR0eXBlICE9IHJlc3R5cGUgJiYgT2lkSXNWYWxpZChyZXN0eXBl KSkKKwkJfHwgcHJvY2Zvcm0tPnByb3JldHNldCB8fCBwcm9jZm9ybS0+cHJvbmFyZ3MgPCBt aW5hcmdzCisJCXx8IHByb2Nmb3JtLT5wcm9uYXJncyA+IG1heGFyZ3MpCiAJCXJlc3VsdCA9 IGZhbHNlOwogCiAJdmFfc3RhcnQoYXAsIG1heGFyZ3MpOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2dpc3QuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0LmgKaW5kZXgg MTgxNjM1MmI5NC4uYTljNGVhOTY0MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNz L2dpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdC5oCkBAIC0zOSw3ICszOSw4 IEBACiAjZGVmaW5lIEdJU1RfT1BUSU9OU19QUk9DCQkJCTEwCiAjZGVmaW5lIEdJU1RfU09S VFNVUFBPUlRfUFJPQwkJCTExCiAjZGVmaW5lIEdJU1RfU1RSQVROVU1fUFJPQwkJCQkxMgot I2RlZmluZSBHSVNUTlByb2NzCQkJCQkxMgorI2RlZmluZSBHSVNUX1JFRkVSRU5DRURfQUdH X1BST0MJCTEzCisjZGVmaW5lIEdJU1ROUHJvY3MJCQkJCTEzCiAKIC8qCiAgKiBQYWdlIG9w YXF1ZSBkYXRhIGluIGEgR2lTVCBpbmRleCBwYWdlLgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbXBy b2MuZGF0CmluZGV4IDg1ZDNiODc2YWUuLmFlMGFiYmUzOGMgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX2FtcHJvYy5kYXQKQEAgLTYxMCw2ICs2MTAsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4g J2dpc3QvcmFuZ2Vfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2FueXJhbmdlJywKICAgYW1w cm9jcmlnaHR0eXBlID0+ICdhbnlyYW5nZScsIGFtcHJvY251bSA9PiAnMTInLAogICBhbXBy b2MgPT4gJ2dpc3Rfc3RyYXRudW1faWRlbnRpdHknIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAn Z2lzdC9yYW5nZV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYW55cmFuZ2UnLAorICBhbXBy b2NyaWdodHR5cGUgPT4gJ2FueXJhbmdlJywgYW1wcm9jbnVtID0+ICcxMycsCisgIGFtcHJv YyA9PiAncmFuZ2VfYWdnKGFueXJhbmdlKScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdnaXN0 L25ldHdvcmtfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2luZXQnLAogICBhbXByb2NyaWdo dHR5cGUgPT4gJ2luZXQnLCBhbXByb2NudW0gPT4gJzEnLAogICBhbXByb2MgPT4gJ2luZXRf Z2lzdF9jb25zaXN0ZW50JyB9LApAQCAtNjUwLDYgKzY1Myw5IEBACiB7IGFtcHJvY2ZhbWls eSA9PiAnZ2lzdC9tdWx0aXJhbmdlX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdhbnltdWx0 aXJhbmdlJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdhbnltdWx0aXJhbmdlJywgYW1wcm9j bnVtID0+ICcxMicsCiAgIGFtcHJvYyA9PiAnZ2lzdF9zdHJhdG51bV9pZGVudGl0eScgfSwK K3sgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L211bHRpcmFuZ2Vfb3BzJywgYW1wcm9jbGVmdHR5 cGUgPT4gJ2FueW11bHRpcmFuZ2UnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2FueW11bHRp cmFuZ2UnLCBhbXByb2NudW0gPT4gJzEzJywKKyAgYW1wcm9jID0+ICdyYW5nZV9hZ2coYW55 bXVsdGlyYW5nZSknIH0sCiAKICMgZ2luCiB7IGFtcHJvY2ZhbWlseSA9PiAnZ2luL2FycmF5 X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdhbnlhcnJheScsCi0tIAoyLjQyLjAKCg== --------------F56VWTQ0Ck05qER7bvQmfAru Content-Type: text/x-patch; charset=UTF-8; name="v21-0004-Add-temporal-FOREIGN-KEYs.patch" Content-Disposition: attachment; filename="v21-0004-Add-temporal-FOREIGN-KEYs.patch" Content-Transfer-Encoding: base64 RnJvbSAxZmFhZGY1NzEzYmM0NjQwZGNkMWJjN2FjM2YyN2MwMjViZmY2YzVlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFN1biwgMjcgSnVuIDIwMjEgMTI6NTg6NTEgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYyMSA0LzhdIEFkZCB0ZW1wb3JhbCBGT1JFSUdOIEtFWXMK Ci0gQWRkZWQgYmlzb24gc3VwcG9ydCBmb3IgdGVtcG9yYWwgRk9SRUlHTiBLRVlzLiBUaGV5 IHNob3VsZCBoYXZlIGEKICByYW5nZSBjb2x1bW4gZm9yIHRoZSB0ZW1wb3JhbCBjb21wb25l bnQuCi0gQWRkZWQgdGVtcG9yYWwgdHJpZ2dlciBmdW5jdGlvbnMgYWtpbiB0byBleGlzdGlu ZyBSSSB0cmlnZ2VyCiAgZnVuY3Rpb25zLgotIERvbid0IHlldCBzdXBwb3J0IE9OIHtVUERB VEUsREVMRVRFfSB7Q0FTQ0FERSxTRVQgTlVMTCxTRVQgREVGQVVMVH0uCi0gQWRkZWQgcGdf ZHVtcCBzdXBwb3J0LgotIFNob3cgdGhlIGNvcnJlY3Qgc3ludGF4IGluIHBzcWwgXGQgb3V0 cHV0IGZvciBmb3JlaWduIGtleXMuCi0gQWRkZWQgdGVzdHMgYW5kIGRvY3VtZW50YXRpb24u Ci0tLQogLi4uL2J0cmVlX2dpc3QvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgIHwg IDI3ICsKIGNvbnRyaWIvYnRyZWVfZ2lzdC9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwgICB8 ICAxMiArCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sICAgICAgICAgICAg fCAgNDggKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jICAgICAgICAgICAg ICB8ICAyNiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAg ICAgIHwgODY0ICsrKysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVu Y3MuYyAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL25vZGVzL3JlYWRm dW5jcy5jICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55ICAgICAgICAgICAgICAgICAgICAgfCAgMzcgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9yaV90cmlnZ2Vycy5jICAgICAgICAgICB8IDQwNCArKysrKysrLQogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAgICAgICAgIHwgIDE5ICstCiBzcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyAgICAgICAgICAgfCAgMzEgKwogc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmggICAgICAgICAgIHwgICA4ICstCiBzcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgMjQgKwogc3JjL2lu Y2x1ZGUvY29tbWFuZHMvZGVmcmVtLmggICAgICAgICAgICAgICAgIHwgICA2ICstCiBzcmMv aW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMuaCAgICAgICAgICAgICAgfCAgIDMgKwogc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgICA2ICsKIHNy Yy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBz cmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwog Li4uL3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgICAgIHwgNTUxICsr KysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbCAg ICAgfCA1MjYgKysrKysrKysrKysKIDIwIGZpbGVzIGNoYW5nZWQsIDIyNDUgaW5zZXJ0aW9u cygrKSwgMzUzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lz dC9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dCBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9l eHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dAppbmRleCAwNjkyNzI2ODhmLi5kMTE2MDFl NTcwIDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvZXhwZWN0ZWQvd2l0aG91dF9v dmVybGFwcy5vdXQKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2V4cGVjdGVkL3dpdGhvdXRf b3ZlcmxhcHMub3V0CkBAIC0yOSwzICsyOSwzMCBAQCBTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVm KGNvbmluZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9 ICd0ZQogIENSRUFURSBVTklRVUUgSU5ERVggdGVtcG9yYWxfcm5nX3BrIE9OIHRlbXBvcmFs X3JuZyBVU0lORyBnaXN0IChpZCwgdmFsaWRfYXQpCiAoMSByb3cpCiAKKy0tIEZvcmVpZ24g a2V5CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisgIGlkIGludGVnZXIs CisgIHZhbGlkX2F0IHRzcmFuZ2UsCisgIHBhcmVudF9pZCBpbnRlZ2VyLAorICBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKSwKKyAgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2Zr IEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKyAgICBSRUZFUkVO Q0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7CitcZCB0ZW1wb3Jh bF9ma19ybmcycm5nCisgICAgICAgICAgVGFibGUgInB1YmxpYy50ZW1wb3JhbF9ma19ybmcy cm5nIgorICBDb2x1bW4gICB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERl ZmF1bHQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0KKyBpZCAgICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwg fCAKKyB2YWxpZF9hdCAgfCB0c3JhbmdlIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKKyBw YXJlbnRfaWQgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK0luZGV4ZXM6 CisgICAgInRlbXBvcmFsX2ZrX3JuZzJybmdfcGsiIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUykKK0ZvcmVpZ24ta2V5IGNvbnN0cmFpbnRzOgorICAgICJ0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpIFJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nKGlkLCBQRVJJT0QgdmFsaWRfYXQp CisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWlu dCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX2ZrX3JuZzJybmdfZmsnOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpIFJFRkVS RU5DRVMgdGVtcG9yYWxfcm5nKGlkLCBQRVJJT0QgdmFsaWRfYXQpCisoMSByb3cpCisKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwg Yi9jb250cmliL2J0cmVlX2dpc3Qvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCmluZGV4IDk4 NjY1ZGJiOWUuLjAzNmVlMGE3NjAgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9z cWwvd2l0aG91dF9vdmVybGFwcy5zcWwKKysrIGIvY29udHJpYi9idHJlZV9naXN0L3NxbC93 aXRob3V0X292ZXJsYXBzLnNxbApAQCAtMTEsMyArMTEsMTUgQEAgQ1JFQVRFIFRBQkxFIHRl bXBvcmFsX3JuZyAoCiBcZCB0ZW1wb3JhbF9ybmcKIFNFTEVDVCBwZ19nZXRfY29uc3RyYWlu dGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFs X3JuZ19wayc7CiBTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVlKSBG Uk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmdfcGsnOwor CistLSBGb3JlaWduIGtleQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAor ICBpZCBpbnRlZ2VyLAorICB2YWxpZF9hdCB0c3JhbmdlLAorICBwYXJlbnRfaWQgaW50ZWdl ciwKKyAgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisgIENPTlNUUkFJTlQgdGVtcG9yYWxf Zmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQp CisgICAgUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCisp OworXGQgdGVtcG9yYWxfZmtfcm5nMnJuZworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVm KG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfZmtf cm5nMnJuZ19mayc7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJs ZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbAppbmRleCBhMGJk MmI4YWRjLi5iNWY0ODUyNWRlIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwK QEAgLTgxLDcgKzgxLDcgQEAgQ1JFQVRFIFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9S QVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJMRSBbIElGIE5PVCBFWEkKICAgVU5JUVVF IFsgTlVMTFMgWyBOT1QgXSBESVNUSU5DVCBdICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gV0lUSE9V VCBPVkVSTEFQUyBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3Bh cmFtZXRlcnM8L3JlcGxhY2VhYmxlPiB8CiAgIFBSSU1BUlkgS0VZICggPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0g WywgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNl YWJsZT4gV0lUSE9VVCBPVkVSTEFQUyBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiB8CiAgIEVYQ0xVREUgWyBVU0lO RyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhfbWV0aG9kPC9yZXBsYWNl YWJsZT4gXSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNsdWRlX2VsZW1l bnQ8L3JlcGxhY2VhYmxlPiBXSVRIIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5v cGVyYXRvcjwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiBbIFdIRVJFICggPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnByZWRpY2F0ZTwvcmVwbGFjZWFibGU+ICkg XSB8Ci0gIEZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNv bHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBSRUZFUkVOQ0VTIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gWywg Li4uIF0gKSBdCisgIEZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgUEVSSU9EIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZhbDwvcmVwbGFjZWFi bGU+IF0gKSBSRUZFUkVOQ0VTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZ0 YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgUEVSSU9EIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZhbDwvcmVwbGFjZWFibGU+IF0g KSBdCiAgICAgWyBNQVRDSCBGVUxMIHwgTUFUQ0ggUEFSVElBTCB8IE1BVENIIFNJTVBMRSBd IFsgT04gREVMRVRFIDxyZXBsYWNlYWJsZQogY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRp YWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSBbIE9OIFVQREFURSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSB9CiBb IERFRkVSUkFCTEUgfCBOT1QgREVGRVJSQUJMRSBdIFsgSU5JVElBTExZIERFRkVSUkVEIHwg SU5JVElBTExZIElNTUVESUFURSBdCkBAIC0xMTQ2LDggKzExNDYsOCBAQCBXSVRIICggTU9E VUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9y ZXBsYWNlYWJsZT4sIFJFTQogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXRhYmxl LXBhcm1zLXJlZmVyZW5jZXMiPgogICAgIDx0ZXJtPjxsaXRlcmFsPlJFRkVSRU5DRVMgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZnRhYmxlPC9yZXBsYWNlYWJsZT4gWyAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZjb2x1bW48L3JlcGxhY2VhYmxl PiApIF0gWyBNQVRDSCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bWF0Y2h0eXBl PC9yZXBsYWNlYWJsZT4gXSBbIE9OIERFTEVURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSBbIE9OIFVQREFURSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBs YWNlYWJsZT4gXTwvbGl0ZXJhbD4gKGNvbHVtbiBjb25zdHJhaW50KTwvdGVybT4KIAotICAg PHRlcm0+PGxpdGVyYWw+Rk9SRUlHTiBLRVkgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApCi0gICAgUkVGRVJF TkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3JlcGxhY2Vh YmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVw bGFjZWFibGU+IFssIC4uLiBdICkgXQorICAgPHRlcm0+PGxpdGVyYWw+Rk9SRUlHTiBLRVkg KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2Vh YmxlPiBbLCAuLi4gXSBbLCBQRVJJT0QgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4gXSApCisgICAgUkVGRVJFTkNFUyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3JlcGxhY2VhYmxlPiBb ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVwbGFjZWFi bGU+IFssIC4uLiBdIFssIFBFUklPRCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ dGVtcG9yYWxfaW50ZXJ2YWw8L3JlcGxhY2VhYmxlPiBdICkgXQogICAgIFsgTUFUQ0ggPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm1hdGNodHlwZTwvcmVwbGFjZWFibGU+IF0K ICAgICBbIE9OIERFTEVURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJl bnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXQogICAgIFsgT04gVVBEQVRFIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZlcmVudGlhbF9hY3Rpb248L3JlcGxhY2VhYmxl PiBdPC9saXRlcmFsPgpAQCAtMTE1OCwxMSArMTE1OCwyOSBAQCBXSVRIICggTU9EVUxVUyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNl YWJsZT4sIFJFTQogICAgICAgVGhlc2UgY2xhdXNlcyBzcGVjaWZ5IGEgZm9yZWlnbiBrZXkg Y29uc3RyYWludCwgd2hpY2ggcmVxdWlyZXMKICAgICAgIHRoYXQgYSBncm91cCBvZiBvbmUg b3IgbW9yZSBjb2x1bW5zIG9mIHRoZSBuZXcgdGFibGUgbXVzdCBvbmx5CiAgICAgICBjb250 YWluIHZhbHVlcyB0aGF0IG1hdGNoIHZhbHVlcyBpbiB0aGUgcmVmZXJlbmNlZAotICAgICAg Y29sdW1uKHMpIG9mIHNvbWUgcm93IG9mIHRoZSByZWZlcmVuY2VkIHRhYmxlLiAgSWYgdGhl IDxyZXBsYWNlYWJsZQorICAgICAgY29sdW1uKHMpIG9mIHNvbWUgcm93IG9mIHRoZSByZWZl cmVuY2VkIHRhYmxlLgorICAgICAgSWYgdGhlIDxyZXBsYWNlYWJsZQogICAgICAgY2xhc3M9 InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gbGlzdCBpcyBvbWl0dGVkLCB0 aGUKICAgICAgIHByaW1hcnkga2V5IG9mIHRoZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cmVmdGFibGU8L3JlcGxhY2VhYmxlPgogICAgICAgaXMgdXNlZC4gIFRoZSByZWZl cmVuY2VkIGNvbHVtbnMgbXVzdCBiZSB0aGUgY29sdW1ucyBvZiBhIG5vbi1kZWZlcnJhYmxl Ci0gICAgICB1bmlxdWUgb3IgcHJpbWFyeSBrZXkgY29uc3RyYWludCBpbiB0aGUgcmVmZXJl bmNlZCB0YWJsZS4gIFRoZSB1c2VyCisgICAgICB1bmlxdWUgb3IgcHJpbWFyeSBrZXkgY29u c3RyYWludCBpbiB0aGUgcmVmZXJlbmNlZCB0YWJsZS4KKyAgICAgPC9wYXJhPgorCisgICAg IDxwYXJhPgorICAgICAgSWYgdGhlIGxhc3QgY29sdW1uIGlzIG1hcmtlZCB3aXRoIDxsaXRl cmFsPlBFUklPRDwvbGl0ZXJhbD4sCisgICAgICBpdCBtdXN0IGJlIGEgcGVyaW9kIG9yIHJh bmdlIGNvbHVtbiwgYW5kIHRoZSByZWZlcmVuY2VkIHRhYmxlCisgICAgICBtdXN0IGhhdmUg YSB0ZW1wb3JhbCBwcmltYXJ5IGtleS4KKyAgICAgIFRoZSBub24tPGxpdGVyYWw+UEVSSU9E PC9saXRlcmFsPiBjb2x1bW5zIGFyZSB0cmVhdGVkIG5vcm1hbGx5CisgICAgICAoYW5kIHRo ZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIG9mIHRoZW0pLAorICAgICAgYnV0IHRoZSA8bGl0 ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+IGNvbHVtbiBpcyBub3QgY29tcGFyZWQgZm9yIGVxdWFs aXR5LgorICAgICAgSW5zdGVhZCB0aGUgY29uc3RyYWludCBpcyBjb25zaWRlcmVkIHNhdGlz ZmllZAorICAgICAgaWYgdGhlIHJlZmVyZW5jZWQgdGFibGUgaGFzIG1hdGNoaW5nIHJlY29y ZHMgd2hvc2UgY29tYmluZWQgcmFuZ2VzIGNvbXBsZXRlbHkgY292ZXIKKyAgICAgIHRoZSBy ZWZlcmVuY2luZyByZWNvcmQuCisgICAgICBJbiBvdGhlciB3b3JkcywgdGhlIHJlZmVyZW5j ZSBtdXN0IGhhdmUgYSByZWZlcmVudCBmb3IgaXRzIGVudGlyZSBkdXJhdGlvbi4KKyAgICAg PC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgVGhlIHVzZXIKICAgICAgIG11c3QgaGF2 ZSA8bGl0ZXJhbD5SRUZFUkVOQ0VTPC9saXRlcmFsPiBwZXJtaXNzaW9uIG9uIHRoZSByZWZl cmVuY2VkIHRhYmxlCiAgICAgICAoZWl0aGVyIHRoZSB3aG9sZSB0YWJsZSwgb3IgdGhlIHNw ZWNpZmljIHJlZmVyZW5jZWQgY29sdW1ucykuICBUaGUKICAgICAgIGFkZGl0aW9uIG9mIGEg Zm9yZWlnbiBrZXkgY29uc3RyYWludCByZXF1aXJlcyBhCkBAIC0xMjM2LDYgKzEyNTQsMTIg QEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVy aWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgICAgICB2YWx1ZXMgb2YgdGhl IHJlZmVyZW5jaW5nIGNvbHVtbihzKSB0byB0aGUgbmV3IHZhbHVlcyBvZiB0aGUKICAgICAg ICAgICByZWZlcmVuY2VkIGNvbHVtbnMsIHJlc3BlY3RpdmVseS4KICAgICAgICAgIDwvcGFy YT4KKworICAgICAgICAgPHBhcmE+CisgICAgICAgICAgSW4gYSB0ZW1wb3JhbCBmb3JlaWdu IGtleSwgdGhlIGRlbGV0ZS91cGRhdGUgd2lsbCB1c2UKKyAgICAgICAgICA8bGl0ZXJhbD5G T1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gc2VtYW50aWNzIHRvIGNvbnN0cmFpbiB0aGUKKyAg ICAgICAgICBlZmZlY3QgdG8gdGhlIGJvdW5kcyBiZWluZyBkZWxldGVkL3VwZGF0ZWQgaW4g dGhlIHJlZmVyZW5jZWQgcm93LgorICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3Rp dGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgogCkBAIC0xMjQ3LDYgKzEyNzEsMTMgQEAg V0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNf bGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgICAgICByZWZlcmVuY2luZyBjb2x1 bW5zLCB0byBudWxsLiBBIHN1YnNldCBvZiBjb2x1bW5zIGNhbiBvbmx5IGJlCiAgICAgICAg ICAgc3BlY2lmaWVkIGZvciA8bGl0ZXJhbD5PTiBERUxFVEU8L2xpdGVyYWw+IGFjdGlvbnMu CiAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIEluIGEg dGVtcG9yYWwgZm9yZWlnbiBrZXksIHRoZSBjaGFuZ2Ugd2lsbCB1c2UgPGxpdGVyYWw+Rk9S IFBPUlRJT04KKyAgICAgICAgICBPRjwvbGl0ZXJhbD4gc2VtYW50aWNzIHRvIGNvbnN0cmFp biB0aGUgZWZmZWN0IHRvIHRoZSBib3VuZHMgYmVpbmcKKyAgICAgICAgICBkZWxldGVkL3Vw ZGF0ZWQgaW4gdGhlIHJlZmVyZW5jZWQgcm93LiBUaGUgY29sdW1uIG1ha2VkIHdpdGgKKyAg ICAgICAgICA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+IHdpbGwgbm90IGJlIHNldCB0byBu dWxsLgorICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwv dmFybGlzdGVudHJ5PgogCkBAIC0xMjYwLDYgKzEyOTEsMTMgQEAgV0lUSCAoIE1PRFVMVVMg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFj ZWFibGU+LCBSRU0KICAgICAgICAgICAoVGhlcmUgbXVzdCBiZSBhIHJvdyBpbiB0aGUgcmVm ZXJlbmNlZCB0YWJsZSBtYXRjaGluZyB0aGUgZGVmYXVsdAogICAgICAgICAgIHZhbHVlcywg aWYgdGhleSBhcmUgbm90IG51bGwsIG9yIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsLikKICAg ICAgICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+CisgICAgICAgICAgSW4gYSB0ZW1w b3JhbCBmb3JlaWduIGtleSwgdGhlIGNoYW5nZSB3aWxsIHVzZSA8bGl0ZXJhbD5GT1IgUE9S VElPTgorICAgICAgICAgIE9GPC9saXRlcmFsPiBzZW1hbnRpY3MgdG8gY29uc3RyYWluIHRo ZSBlZmZlY3QgdG8gdGhlIGJvdW5kcyBiZWluZworICAgICAgICAgIGRlbGV0ZWQvdXBkYXRl ZCBpbiB0aGUgcmVmZXJlbmNlZCByb3cuIFRoZSBjb2x1bW4gbWFya2VkIHdpdGgKKyAgICAg ICAgICA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+IHdpdGggbm90IGJlIHNldCB0byBhIGRl ZmF1bHQgdmFsdWUuCisgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAg ICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICA8L3ZhcmlhYmxlbGlzdD4KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggOGMwNmFhMDk1Ni4uOGQ0OGI3OWNlYSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTIxODksOCArMjE4OSw5IEBAIENvbXB1dGVJ bmRleEF0dHJzKEluZGV4SW5mbyAqaW5kZXhJbmZvLAogCQkJCW9wbmFtZSA9ICJlcXVhbHMi OwogCQkJfQogCQkJR2V0T3BlcmF0b3JGcm9tQ2Fub25pY2FsU3RyYXRlZ3kob3BjbGFzc09p ZHNbYXR0bl0sCi0JCQkJCQkJCQkJCSBhdHR0eXBlLAorCQkJCQkJCQkJCQkgSW52YWxpZE9p ZCwKIAkJCQkJCQkJCQkJIG9wbmFtZSwKKwkJCQkJCQkJCQkJICJXSVRIT1VUIE9WRVJMQVBT IGNvbnN0cmFpbnQiLAogCQkJCQkJCQkJCQkgJm9waWQsCiAJCQkJCQkJCQkJCSAmc3RyYXQp OwogCQkJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25PcHNbYXR0bl0gPSBvcGlkOwpAQCAtMjQz MSw4ICsyNDMyLDkgQEAgR2V0RGVmYXVsdE9wQ2xhc3MoT2lkIHR5cGVfaWQsIE9pZCBhbV9p ZCkKICAqIEdldE9wZXJhdG9yRnJvbUNhbm9uaWNhbFN0cmF0ZWd5CiAgKgogICogb3BjbGFz cyAtIHRoZSBvcGNsYXNzIHRvIHVzZQotICogYXR0dHlwZSAtIHRoZSB0eXBlIHRvIGFzayBh Ym91dAorICogcmhzdHlwZSAtIHRoZSB0eXBlIGZvciB0aGUgcmlnaHQtaGFuZCBzaWRlCiAg KiBvcG5hbWUgLSB1c2VkIHRvIGJ1aWxkIGVycm9yIG1lc3NhZ2VzCisgKiBjb250ZXh0IC0g dXNlZCB0byBidWlsZCBlcnJvciBtZXNzYWdlcwogICogb3BpZCAtIGhvbGRzIHRoZSBvcGVy YXRvciB3ZSBmb3VuZAogICogc3RyYXQgLSBob2xkcyB0aGUgaW5wdXQgYW5kIG91dHB1dCBz dHJhdGVneSBudW1iZXIKICAqCkBAIC0yNDQ1LDExICsyNDQ3LDE0IEBAIEdldERlZmF1bHRP cENsYXNzKE9pZCB0eXBlX2lkLCBPaWQgYW1faWQpCiAgKiBmdW5jdGlvbiB0byB0cmFuc2xh dGUgZnJvbSB0aGUgd2VsbC1rbm93biBudW1iZXIKICAqIHRvIHRoZSBpbnRlcm5hbCB2YWx1 ZS4gSWYgdGhlIGZ1bmN0aW9uIGlzbid0IGRlZmluZWQKICAqIG9yIGl0IGdpdmVzIG5vIHJl c3VsdCwgd2UgcmV0cnVuIEludmFsaWRTdHJhdGVneS4KKyAqCisgKiByaHN0eXBlIGNhbiBi ZSBJbnZhbGlkT2lkIHRvIHVzZSB0aGUgb3BjaW50eXBlIGluc3RlYWQuCiAgKi8KIHZvaWQK IEdldE9wZXJhdG9yRnJvbUNhbm9uaWNhbFN0cmF0ZWd5KE9pZCBvcGNsYXNzLAotCQkJCQkJ CQkgT2lkIGF0dHR5cGUsCisJCQkJCQkJCSBPaWQgcmhzdHlwZSwKIAkJCQkJCQkJIGNvbnN0 IGNoYXIgKm9wbmFtZSwKKwkJCQkJCQkJIGNvbnN0IGNoYXIgKmNvbnRleHQsCiAJCQkJCQkJ CSBPaWQgKm9waWQsCiAJCQkJCQkJCSBTdHJhdGVneU51bWJlciAqc3RyYXQpCiB7CkBAIC0y NDczLDEyICsyNDc4LDE5IEBAIEdldE9wZXJhdG9yRnJvbUNhbm9uaWNhbFN0cmF0ZWd5KE9p ZCBvcGNsYXNzLAogCQlpZiAoIVN0cmF0ZWd5SXNWYWxpZCgqc3RyYXQpKQogCQkJZXJlcG9y dChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKLQkJ CQkJIGVycm1zZygibm8gJXMgb3BlcmF0b3IgZm91bmQgZm9yIFdJVEhPVVQgT1ZFUkxBUFMg Y29uc3RyYWludCIsIG9wbmFtZSksCisJCQkJCSBlcnJtc2coIm5vICVzIG9wZXJhdG9yIGZv dW5kIGZvciAlcyIsIG9wbmFtZSwgY29udGV4dCksCiAJCQkJCSBlcnJkZXRhaWwoIkNvdWxk IG5vdCB0cmFuc2xhdGUgc3RyYXRlZ3kgbnVtYmVyICV1IGZvciBvcGNsYXNzICVkLiIsCiAJ CQkJCQkgb3BzdHJhdCwgb3BjbGFzcyksCiAJCQkJCSBlcnJoaW50KCJEZWZpbmUgYSBzdHJh dG51bSBzdXBwb3J0IGZ1bmN0aW9uIGZvciB5b3VyIEdpU1Qgb3BjbGFzcy4iKSkpOwogCi0J CSpvcGlkID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgb3BjaW50eXBlLCBvcGNp bnR5cGUsICpzdHJhdCk7CisJCS8qCisJCSAqIFdlIHBhcmFtZXRlcml6ZSByaHN0eXBlIHNv IGZvcmVpZ24ga2V5cyBjYW4gYXNrIGZvciBhIDxAIG9wZXJhdG9yCisJCSAqIHdob3NlIHJo cyBtYXRjaGVzIHRoZSBhZ2dyZWdhdGUgZnVuY3Rpb24uIEZvciBleGFtcGxlIHJhbmdlX2Fn ZworCQkgKiByZXR1cm5zIGFueW11bHRpcmFuZ2UuCisJCSAqLworCQlpZiAoIU9pZElzVmFs aWQocmhzdHlwZSkpCisJCQlyaHN0eXBlID0gb3BjaW50eXBlOworCQkqb3BpZCA9IGdldF9v cGZhbWlseV9tZW1iZXIob3BmYW1pbHksIG9wY2ludHlwZSwgcmhzdHlwZSwgKnN0cmF0KTsK IAl9CiAKIAlpZiAoIU9pZElzVmFsaWQoKm9waWQpKQpAQCAtMjUwMCwxMSArMjUxMiwxMSBA QCBHZXRPcGVyYXRvckZyb21DYW5vbmljYWxTdHJhdGVneShPaWQgb3BjbGFzcywKIAogCQll cmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCks Ci0JCQkJIGVycm1zZygibm8gJXMgb3BlcmF0b3IgZm91bmQgZm9yIFdJVEhPVVQgT1ZFUkxB UFMgY29uc3RyYWludCIsIG9wbmFtZSksCisJCQkJIGVycm1zZygibm8gJXMgb3BlcmF0b3Ig Zm91bmQgZm9yICVzIiwgb3BuYW1lLCBjb250ZXh0KSwKIAkJCQkgZXJyZGV0YWlsKCJUaGVy ZSBtdXN0IGJlIGFuICVzIG9wZXJhdG9yIHdpdGhpbiBvcGZhbWlseSBcIiVzXCIgZm9yIHR5 cGUgXCIlc1wiLiIsCiAJCQkJCQkgICBvcG5hbWUsCiAJCQkJCQkgICBOYW1lU3RyKG9wZmZv cm0tPm9wZm5hbWUpLAotCQkJCQkJICAgZm9ybWF0X3R5cGVfYmUoYXR0dHlwZSkpKSk7CisJ CQkJCQkgICBmb3JtYXRfdHlwZV9iZShvcGNpbnR5cGUpKSkpOwogCX0KIH0KIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYwppbmRleCA4ZDE2NThkMjZiLi5hZjQ5MWU0YjU4IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVk ZSAiYWNjZXNzL2F0dG1hcC5oIgogI2luY2x1ZGUgImFjY2Vzcy9nZW5hbS5oIgorI2luY2x1 ZGUgImFjY2Vzcy9naXN0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgi CiAjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbV94bG9nLmgiCiAjaW5jbHVkZSAiYWNjZXNzL211 bHRpeGFjdC5oIgpAQCAtMjExLDggKzIxMiwxMSBAQCB0eXBlZGVmIHN0cnVjdCBOZXdDb25z dHJhaW50CiAJQ29uc3RyVHlwZQljb250eXBlOwkJLyogQ0hFQ0sgb3IgRk9SRUlHTiAqLwog CU9pZAkJCXJlZnJlbGlkOwkJLyogUEsgcmVsLCBpZiBGT1JFSUdOICovCiAJT2lkCQkJcmVm aW5kaWQ7CQkvKiBPSUQgb2YgUEsncyBpbmRleCwgaWYgRk9SRUlHTiAqLworCWJvb2wJCWNv bndpdGhwZXJpb2Q7CS8qIFdoZXRoZXIgdGhlIG5ldyBGT1JFSUdOIEtFWSB1c2VzIFBFUklP RCAqLwogCU9pZAkJCWNvbmlkOwkJCS8qIE9JRCBvZiBwZ19jb25zdHJhaW50IGVudHJ5LCBp ZiBGT1JFSUdOICovCiAJTm9kZQkgICAqcXVhbDsJCQkvKiBDaGVjayBleHByIG9yIENPTlNU Ul9GT1JFSUdOIENvbnN0cmFpbnQgKi8KKwlPaWQJCSAgICpvcGVyb2lkczsJCS8qIG9wZXIg b2lkcyBmb3IgRk9SRUlHTiBLRVkgd2l0aCBQRVJJT0QgKi8KKwlPaWQJCSAgICpwcm9jb2lk czsJCS8qIHByb2Mgb2lkcyBmb3IgRk9SRUlHTiBLRVkgd2l0aCBQRVJJT0QgKi8KIAlFeHBy U3RhdGUgICpxdWFsc3RhdGU7CQkvKiBFeGVjdXRpb24gc3RhdGUgZm9yIENIRUNLIGV4cHIg Ki8KIH0gTmV3Q29uc3RyYWludDsKIApAQCAtMzgzLDE3ICszODcsMjAgQEAgc3RhdGljIGlu dAl0cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChPaWQgcmVsSWQsIExpc3QgKmNvbExpc3QsCiAJ CQkJCQkJCQlpbnQxNiAqYXR0bnVtcywgT2lkICphdHR0eXBpZHMpOwogc3RhdGljIGludAl0 cmFuc2Zvcm1Ga2V5R2V0UHJpbWFyeUtleShSZWxhdGlvbiBwa3JlbCwgT2lkICppbmRleE9p ZCwKIAkJCQkJCQkJCSAgIExpc3QgKiphdHRuYW1lbGlzdCwKKwkJCQkJCQkJCSAgIE5vZGUg Kipwa19wZXJpb2QsCiAJCQkJCQkJCQkgICBpbnQxNiAqYXR0bnVtcywgT2lkICphdHR0eXBp ZHMsCisJCQkJCQkJCQkgICBpbnQxNiAqcGVyaW9kYXR0bnVtcywgT2lkICpwZXJpb2RhdHR0 eXBpZHMsCiAJCQkJCQkJCQkgICBPaWQgKm9wY2xhc3Nlcyk7CiBzdGF0aWMgT2lkCXRyYW5z Zm9ybUZrZXlDaGVja0F0dHJzKFJlbGF0aW9uIHBrcmVsLAogCQkJCQkJCQkJaW50IG51bWF0 dHJzLCBpbnQxNiAqYXR0bnVtcywKKwkJCQkJCQkJCWJvb2wgaXNfdGVtcG9yYWwsIGludDE2 IHBlcmlvZGF0dG51bSwKIAkJCQkJCQkJCU9pZCAqb3BjbGFzc2VzKTsKIHN0YXRpYyB2b2lk IGNoZWNrRmtleVBlcm1pc3Npb25zKFJlbGF0aW9uIHJlbCwgaW50MTYgKmF0dG51bXMsIGlu dCBuYXR0cyk7CiBzdGF0aWMgQ29lcmNpb25QYXRoVHlwZSBmaW5kRmtleUNhc3QoT2lkIHRh cmdldFR5cGVJZCwgT2lkIHNvdXJjZVR5cGVJZCwKIAkJCQkJCQkJCSBPaWQgKmZ1bmNpZCk7 CiBzdGF0aWMgdm9pZCB2YWxpZGF0ZUZvcmVpZ25LZXlDb25zdHJhaW50KGNoYXIgKmNvbm5h bWUsCiAJCQkJCQkJCQkJIFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gcGtyZWwsCi0JCQkJCQkJ CQkJIE9pZCBwa2luZE9pZCwgT2lkIGNvbnN0cmFpbnRPaWQpOworCQkJCQkJCQkJCSBPaWQg cGtpbmRPaWQsIE9pZCBjb25zdHJhaW50T2lkLCBib29sIHRlbXBvcmFsKTsKIHN0YXRpYyB2 b2lkIEFUQ29udHJvbGxlcihBbHRlclRhYmxlU3RtdCAqcGFyc2V0cmVlLAogCQkJCQkJIFJl bGF0aW9uIHJlbCwgTGlzdCAqY21kcywgYm9vbCByZWN1cnNlLCBMT0NLTU9ERSBsb2NrbW9k ZSwKIAkJCQkJCSBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpOwpAQCAtNTAz LDcgKzUxMCw4IEBAIHN0YXRpYyBPYmplY3RBZGRyZXNzIGFkZEZrUmVjdXJzZVJlZmVyZW5j ZWQoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhCiAJCQkJCQkJCQkJCU9p ZCAqcGZlcW9wZXJhdG9ycywgT2lkICpwcGVxb3BlcmF0b3JzLCBPaWQgKmZmZXFvcGVyYXRv cnMsCiAJCQkJCQkJCQkJCWludCBudW1ma2RlbHNldGNvbHMsIGludDE2ICpma2RlbHNldGNv bHMsCiAJCQkJCQkJCQkJCWJvb2wgb2xkX2NoZWNrX29rLAotCQkJCQkJCQkJCQlPaWQgcGFy ZW50RGVsVHJpZ2dlciwgT2lkIHBhcmVudFVwZFRyaWdnZXIpOworCQkJCQkJCQkJCQlPaWQg cGFyZW50RGVsVHJpZ2dlciwgT2lkIHBhcmVudFVwZFRyaWdnZXIsCisJCQkJCQkJCQkJCWJv b2wgaXNfdGVtcG9yYWwpOwogc3RhdGljIHZvaWQgdmFsaWRhdGVGa09uRGVsZXRlU2V0Q29s dW1ucyhpbnQgbnVtZmtzLCBjb25zdCBpbnQxNiAqZmthdHRudW1zLAogCQkJCQkJCQkJCSBp bnQgbnVtZmtzZXRjb2xzLCBjb25zdCBpbnQxNiAqZmtzZXRjb2xzYXR0bnVtcywKIAkJCQkJ CQkJCQkgTGlzdCAqZmtzZXRjb2xzKTsKQEAgLTUxMyw3ICs1MjEsOSBAQCBzdGF0aWMgdm9p ZCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpm a2NvbnN0cmFpbnQsCiAJCQkJCQkJCQlPaWQgKnBmZXFvcGVyYXRvcnMsIE9pZCAqcHBlcW9w ZXJhdG9ycywgT2lkICpmZmVxb3BlcmF0b3JzLAogCQkJCQkJCQkJaW50IG51bWZrZGVsc2V0 Y29scywgaW50MTYgKmZrZGVsc2V0Y29scywKIAkJCQkJCQkJCWJvb2wgb2xkX2NoZWNrX29r LCBMT0NLTU9ERSBsb2NrbW9kZSwKLQkJCQkJCQkJCU9pZCBwYXJlbnRJbnNUcmlnZ2VyLCBP aWQgcGFyZW50VXBkVHJpZ2dlcik7CisJCQkJCQkJCQlPaWQgcGFyZW50SW5zVHJpZ2dlciwg T2lkIHBhcmVudFVwZFRyaWdnZXIsCisJCQkJCQkJCQlib29sIGlzX3RlbXBvcmFsKTsKKwog c3RhdGljIHZvaWQgQ2xvbmVGb3JlaWduS2V5Q29uc3RyYWludHMoTGlzdCAqKndxdWV1ZSwg UmVsYXRpb24gcGFyZW50UmVsLAogCQkJCQkJCQkJICAgUmVsYXRpb24gcGFydGl0aW9uUmVs KTsKIHN0YXRpYyB2b2lkIENsb25lRmtSZWZlcmVuY2VkKFJlbGF0aW9uIHBhcmVudFJlbCwg UmVsYXRpb24gcGFydGl0aW9uUmVsKTsKQEAgLTU0NSw2ICs1NTUsMTIgQEAgc3RhdGljIHZv aWQgR2V0Rm9yZWlnbktleUNoZWNrVHJpZ2dlcnMoUmVsYXRpb24gdHJpZ3JlbCwKIAkJCQkJ CQkJCSAgIE9pZCBjb25vaWQsIE9pZCBjb25mcmVsaWQsIE9pZCBjb25yZWxpZCwKIAkJCQkJ CQkJCSAgIE9pZCAqaW5zZXJ0VHJpZ2dlck9pZCwKIAkJCQkJCQkJCSAgIE9pZCAqdXBkYXRl VHJpZ2dlck9pZCk7CitzdGF0aWMgdm9pZCBGaW5kRktDb21wYXJpc29uT3BlcmF0b3JzKENv bnN0cmFpbnQgKmZrY29uc3RyYWludCwKKwkJCQkJQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBp bnQgaSwgaW50MTYgKmZrYXR0bnVtLAorCQkJCQlib29sICpvbGRfY2hlY2tfb2ssIExpc3RD ZWxsICoqb2xkX3BmZXFvcF9pdGVtLAorCQkJCQlPaWQgcGt0eXBlLCBPaWQgZmt0eXBlLCBP aWQgb3BjbGFzcywKKwkJCQkJYm9vbCBpc190ZW1wb3JhbCwgYm9vbCBmb3Jfb3ZlcmxhcHMs CisJCQkJCU9pZCAqcGZlcW9wT3V0LCBPaWQgKnBwZXFvcE91dCwgT2lkICpmZmVxb3BPdXQp Owogc3RhdGljIHZvaWQgQVRFeGVjRHJvcENvbnN0cmFpbnQoUmVsYXRpb24gcmVsLCBjb25z dCBjaGFyICpjb25zdHJOYW1lLAogCQkJCQkJCQkgRHJvcEJlaGF2aW9yIGJlaGF2aW9yLCBi b29sIHJlY3Vyc2UsCiAJCQkJCQkJCSBib29sIG1pc3Npbmdfb2ssIExPQ0tNT0RFIGxvY2tt b2RlKTsKQEAgLTU4OTgsNyArNTkxNCw4IEBAIEFUUmV3cml0ZVRhYmxlcyhBbHRlclRhYmxl U3RtdCAqcGFyc2V0cmVlLCBMaXN0ICoqd3F1ZXVlLCBMT0NLTU9ERSBsb2NrbW9kZSwKIAog CQkJCXZhbGlkYXRlRm9yZWlnbktleUNvbnN0cmFpbnQoZmtjb25zdHJhaW50LT5jb25uYW1l LCByZWwsIHJlZnJlbCwKIAkJCQkJCQkJCQkJIGNvbi0+cmVmaW5kaWQsCi0JCQkJCQkJCQkJ CSBjb24tPmNvbmlkKTsKKwkJCQkJCQkJCQkJIGNvbi0+Y29uaWQsCisJCQkJCQkJCQkJCSBj b24tPmNvbndpdGhwZXJpb2QpOwogCiAJCQkJLyoKIAkJCQkgKiBObyBuZWVkIHRvIG1hcmsg dGhlIGNvbnN0cmFpbnQgcm93IGFzIHZhbGlkYXRlZCwgd2UgZGlkCkBAIC05NTI3LDYgKzk1 NDQsMTMgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRl cmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAlPaWQJCQlwcGVxb3BlcmF0b3Jz W0lOREVYX01BWF9LRVlTXSA9IHswfTsKIAlPaWQJCQlmZmVxb3BlcmF0b3JzW0lOREVYX01B WF9LRVlTXSA9IHswfTsKIAlpbnQxNgkJZmtkZWxzZXRjb2xzW0lOREVYX01BWF9LRVlTXSA9 IHswfTsKKwlib29sCQlpc190ZW1wb3JhbCA9IChma2NvbnN0cmFpbnQtPmZrX3BlcmlvZCAh PSBOVUxMKTsKKwlpbnQxNgkJcGtwZXJpb2RhdHRudW1zWzFdID0gezB9OworCWludDE2CQlm a3BlcmlvZGF0dG51bXNbMV0gPSB7MH07CisJT2lkCQkJcGtwZXJpb2R0eXBvaWRzWzFdID0g ezB9OworCU9pZAkJCWZrcGVyaW9kdHlwb2lkc1sxXSA9IHswfTsKKwlPaWQJCQlwZXJpb2Rv cGVyb2lkOworCU9pZAkJCXBlcmlvZHByb2NvaWQ7CiAJaW50CQkJaTsKIAlpbnQJCQludW1m a3MsCiAJCQkJbnVtcGtzLApAQCAtOTYyMSw2ICs5NjQ1LDE1IEBAIEFUQWRkRm9yZWlnbktl eUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxh dGlvbiByZWwsCiAJbnVtZmtzID0gdHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QoUmVsYXRpb25H ZXRSZWxpZChyZWwpLAogCQkJCQkJCQkJIGZrY29uc3RyYWludC0+ZmtfYXR0cnMsCiAJCQkJ CQkJCQkgZmthdHRudW0sIGZrdHlwb2lkKTsKKwlpZiAoaXNfdGVtcG9yYWwpCisJCXRyYW5z Zm9ybUNvbHVtbk5hbWVMaXN0KFJlbGF0aW9uR2V0UmVsaWQocmVsKSwKKwkJCQkJCQkgIGxp c3RfbWFrZTEoZmtjb25zdHJhaW50LT5ma19wZXJpb2QpLAorCQkJCQkJCSAgZmtwZXJpb2Rh dHRudW1zLCBma3BlcmlvZHR5cG9pZHMpOworCWVsc2UKKwkJaWYgKGZrY29uc3RyYWludC0+ cGtfcGVyaW9kKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9J TlZBTElEX0ZPUkVJR05fS0VZKSwKKwkJCQkJZXJybXNnKCJmb3JlaWduIGtleSB1c2VzIFBF UklPRCBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZSBidXQgbm90IHRoZSByZWZlcmVuY2luZyB0 YWJsZSIpKSk7CiAKIAludW1ma2RlbHNldGNvbHMgPSB0cmFuc2Zvcm1Db2x1bW5OYW1lTGlz dChSZWxhdGlvbkdldFJlbGlkKHJlbCksCiAJCQkJCQkJCQkJCSAgZmtjb25zdHJhaW50LT5m a19kZWxfc2V0X2NvbHMsCkBAIC05NjM5LDcgKzk2NzIsOSBAQCBBVEFkZEZvcmVpZ25LZXlD b25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRp b24gcmVsLAogCXsKIAkJbnVtcGtzID0gdHJhbnNmb3JtRmtleUdldFByaW1hcnlLZXkocGty ZWwsICZpbmRleE9pZCwKIAkJCQkJCQkJCQkJJmZrY29uc3RyYWludC0+cGtfYXR0cnMsCisJ CQkJCQkJCQkJCSZma2NvbnN0cmFpbnQtPnBrX3BlcmlvZCwKIAkJCQkJCQkJCQkJcGthdHRu dW0sIHBrdHlwb2lkLAorCQkJCQkJCQkJCQlwa3BlcmlvZGF0dG51bXMsIHBrcGVyaW9kdHlw b2lkcywKIAkJCQkJCQkJCQkJb3BjbGFzc2VzKTsKIAl9CiAJZWxzZQpAQCAtOTY0Nyw4ICs5 NjgyLDIyIEBAIEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0 ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCW51bXBrcyA9IHRyYW5zZm9y bUNvbHVtbk5hbWVMaXN0KFJlbGF0aW9uR2V0UmVsaWQocGtyZWwpLAogCQkJCQkJCQkJCSBm a2NvbnN0cmFpbnQtPnBrX2F0dHJzLAogCQkJCQkJCQkJCSBwa2F0dG51bSwgcGt0eXBvaWQp OworCQlpZiAoaXNfdGVtcG9yYWwpCisJCXsKKwkJCS8qIFNpbmNlIHdlIGdvdCBwa19hdHRy cywgd2Ugc2hvdWxkIGhhdmUgcGtfcGVyaW9kIHRvby4gKi8KKwkJCWlmICghZmtjb25zdHJh aW50LT5wa19wZXJpb2QpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9GT1JFSUdOX0tFWSksCisJCQkJCQllcnJtc2coImZvcmVpZ24ga2V5 IHVzZXMgUEVSSU9EIG9uIHRoZSByZWZlcmVuY2luZyB0YWJsZSBidXQgbm90IHRoZSByZWZl cmVuY2VkIHRhYmxlIikpKTsKKworCQkJdHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QoUmVsYXRp b25HZXRSZWxpZChwa3JlbCksCisJCQkJCQkJCQlsaXN0X21ha2UxKGZrY29uc3RyYWludC0+ cGtfcGVyaW9kKSwKKwkJCQkJCQkJCXBrcGVyaW9kYXR0bnVtcywgcGtwZXJpb2R0eXBvaWRz KTsKKwkJfQorCiAJCS8qIExvb2sgZm9yIGFuIGluZGV4IG1hdGNoaW5nIHRoZSBjb2x1bW4g bGlzdCAqLwogCQlpbmRleE9pZCA9IHRyYW5zZm9ybUZrZXlDaGVja0F0dHJzKHBrcmVsLCBu dW1wa3MsIHBrYXR0bnVtLAorCQkJCQkJCQkJCSAgIGlzX3RlbXBvcmFsLCBwa3BlcmlvZGF0 dG51bXNbMF0sCiAJCQkJCQkJCQkJICAgb3BjbGFzc2VzKTsKIAl9CiAKQEAgLTk3MDcsMTg5 ICs5NzU2LDQwIEBAIEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwg QWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAKIAlmb3IgKGkgPSAwOyBp IDwgbnVtcGtzOyBpKyspCiAJewotCQlPaWQJCQlwa3R5cGUgPSBwa3R5cG9pZFtpXTsKLQkJ T2lkCQkJZmt0eXBlID0gZmt0eXBvaWRbaV07Ci0JCU9pZAkJCWZrdHlwZWQ7Ci0JCUhlYXBU dXBsZQljbGFfaHQ7Ci0JCUZvcm1fcGdfb3BjbGFzcyBjbGFfdHVwOwotCQlPaWQJCQlhbWlk OwotCQlPaWQJCQlvcGZhbWlseTsKLQkJT2lkCQkJb3BjaW50eXBlOwotCQlPaWQJCQlwZmVx b3A7Ci0JCU9pZAkJCXBwZXFvcDsKLQkJT2lkCQkJZmZlcW9wOwotCQlpbnQxNgkJZXFzdHJh dGVneTsKLQkJT2lkCQkJcGZlcW9wX3JpZ2h0OwotCi0JCS8qIFdlIG5lZWQgc2V2ZXJhbCBm aWVsZHMgb3V0IG9mIHRoZSBwZ19vcGNsYXNzIGVudHJ5ICovCi0JCWNsYV9odCA9IFNlYXJj aFN5c0NhY2hlMShDTEFPSUQsIE9iamVjdElkR2V0RGF0dW0ob3BjbGFzc2VzW2ldKSk7Ci0J CWlmICghSGVhcFR1cGxlSXNWYWxpZChjbGFfaHQpKQotCQkJZWxvZyhFUlJPUiwgImNhY2hl IGxvb2t1cCBmYWlsZWQgZm9yIG9wY2xhc3MgJXUiLCBvcGNsYXNzZXNbaV0pOwotCQljbGFf dHVwID0gKEZvcm1fcGdfb3BjbGFzcykgR0VUU1RSVUNUKGNsYV9odCk7Ci0JCWFtaWQgPSBj bGFfdHVwLT5vcGNtZXRob2Q7Ci0JCW9wZmFtaWx5ID0gY2xhX3R1cC0+b3BjZmFtaWx5Owot CQlvcGNpbnR5cGUgPSBjbGFfdHVwLT5vcGNpbnR5cGU7Ci0JCVJlbGVhc2VTeXNDYWNoZShj bGFfaHQpOwotCi0JCS8qCi0JCSAqIENoZWNrIGl0J3MgYSBidHJlZTsgY3VycmVudGx5IHRo aXMgY2FuIG5ldmVyIGZhaWwgc2luY2Ugbm8gb3RoZXIKLQkJICogaW5kZXggQU1zIHN1cHBv cnQgdW5pcXVlIGluZGV4ZXMuICBJZiB3ZSBldmVyIGRpZCBoYXZlIG90aGVyIHR5cGVzCi0J CSAqIG9mIHVuaXF1ZSBpbmRleGVzLCB3ZSdkIG5lZWQgYSB3YXkgdG8gZGV0ZXJtaW5lIHdo aWNoIG9wZXJhdG9yCi0JCSAqIHN0cmF0ZWd5IG51bWJlciBpcyBlcXVhbGl0eS4gIChJcyBp dCByZWFzb25hYmxlIHRvIGluc2lzdCB0aGF0Ci0JCSAqIGV2ZXJ5IHN1Y2ggaW5kZXggQU0g dXNlIGJ0cmVlJ3MgbnVtYmVyIGZvciBlcXVhbGl0eT8pCi0JCSAqLwotCQlpZiAoYW1pZCAh PSBCVFJFRV9BTV9PSUQpCi0JCQllbG9nKEVSUk9SLCAib25seSBiLXRyZWUgaW5kZXhlcyBh cmUgc3VwcG9ydGVkIGZvciBmb3JlaWduIGtleXMiKTsKLQkJZXFzdHJhdGVneSA9IEJURXF1 YWxTdHJhdGVneU51bWJlcjsKLQotCQkvKgotCQkgKiBUaGVyZSBoYWQgYmV0dGVyIGJlIGEg cHJpbWFyeSBlcXVhbGl0eSBvcGVyYXRvciBmb3IgdGhlIGluZGV4LgotCQkgKiBXZSdsbCB1 c2UgaXQgZm9yIFBLID0gUEsgY29tcGFyaXNvbnMuCi0JCSAqLwotCQlwcGVxb3AgPSBnZXRf b3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBvcGNpbnR5cGUsIG9wY2ludHlwZSwKLQkJCQkJ CQkJCSBlcXN0cmF0ZWd5KTsKLQotCQlpZiAoIU9pZElzVmFsaWQocHBlcW9wKSkKLQkJCWVs b2coRVJST1IsICJtaXNzaW5nIG9wZXJhdG9yICVkKCV1LCV1KSBpbiBvcGZhbWlseSAldSIs Ci0JCQkJIGVxc3RyYXRlZ3ksIG9wY2ludHlwZSwgb3BjaW50eXBlLCBvcGZhbWlseSk7Ci0K LQkJLyoKLQkJICogQXJlIHRoZXJlIGVxdWFsaXR5IG9wZXJhdG9ycyB0aGF0IHRha2UgZXhh Y3RseSB0aGUgRksgdHlwZT8gQXNzdW1lCi0JCSAqIHdlIHNob3VsZCBsb29rIHRocm91Z2gg YW55IGRvbWFpbiBoZXJlLgotCQkgKi8KLQkJZmt0eXBlZCA9IGdldEJhc2VUeXBlKGZrdHlw ZSk7Ci0KLQkJcGZlcW9wID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgb3BjaW50 eXBlLCBma3R5cGVkLAotCQkJCQkJCQkJIGVxc3RyYXRlZ3kpOwotCQlpZiAoT2lkSXNWYWxp ZChwZmVxb3ApKQotCQl7Ci0JCQlwZmVxb3BfcmlnaHQgPSBma3R5cGVkOwotCQkJZmZlcW9w ID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgZmt0eXBlZCwgZmt0eXBlZCwKLQkJ CQkJCQkJCQkgZXFzdHJhdGVneSk7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQkvKiBrZWVwIGNv bXBpbGVyIHF1aWV0ICovCi0JCQlwZmVxb3BfcmlnaHQgPSBJbnZhbGlkT2lkOwotCQkJZmZl cW9wID0gSW52YWxpZE9pZDsKLQkJfQotCi0JCWlmICghKE9pZElzVmFsaWQocGZlcW9wKSAm JiBPaWRJc1ZhbGlkKGZmZXFvcCkpKQotCQl7Ci0JCQkvKgotCQkJICogT3RoZXJ3aXNlLCBs b29rIGZvciBhbiBpbXBsaWNpdCBjYXN0IGZyb20gdGhlIEZLIHR5cGUgdG8gdGhlCi0JCQkg KiBvcGNpbnR5cGUsIGFuZCBpZiBmb3VuZCwgdXNlIHRoZSBwcmltYXJ5IGVxdWFsaXR5IG9w ZXJhdG9yLgotCQkJICogVGhpcyBpcyBhIGJpdCB0cmlja3kgYmVjYXVzZSBvcGNpbnR5cGUg bWlnaHQgYmUgYSBwb2x5bW9ycGhpYwotCQkJICogdHlwZSBzdWNoIGFzIEFOWUFSUkFZIG9y IEFOWUVOVU07IHNvIHdoYXQgd2UgaGF2ZSB0byB0ZXN0IGlzCi0JCQkgKiB3aGV0aGVyIHRo ZSB0d28gYWN0dWFsIGNvbHVtbiB0eXBlcyBjYW4gYmUgY29uY3VycmVudGx5IGNhc3QgdG8K LQkJCSAqIHRoYXQgdHlwZS4gIChPdGhlcndpc2UsIHdlJ2QgZmFpbCB0byByZWplY3QgY29t YmluYXRpb25zIHN1Y2gKLQkJCSAqIGFzIGludFtdIGFuZCBwb2ludFtdLikKLQkJCSAqLwot CQkJT2lkCQkJaW5wdXRfdHlwZWlkc1syXTsKLQkJCU9pZAkJCXRhcmdldF90eXBlaWRzWzJd OwotCi0JCQlpbnB1dF90eXBlaWRzWzBdID0gcGt0eXBlOwotCQkJaW5wdXRfdHlwZWlkc1sx XSA9IGZrdHlwZTsKLQkJCXRhcmdldF90eXBlaWRzWzBdID0gb3BjaW50eXBlOwotCQkJdGFy Z2V0X3R5cGVpZHNbMV0gPSBvcGNpbnR5cGU7Ci0JCQlpZiAoY2FuX2NvZXJjZV90eXBlKDIs IGlucHV0X3R5cGVpZHMsIHRhcmdldF90eXBlaWRzLAotCQkJCQkJCQlDT0VSQ0lPTl9JTVBM SUNJVCkpCi0JCQl7Ci0JCQkJcGZlcW9wID0gZmZlcW9wID0gcHBlcW9wOwotCQkJCXBmZXFv cF9yaWdodCA9IG9wY2ludHlwZTsKLQkJCX0KLQkJfQotCi0JCWlmICghKE9pZElzVmFsaWQo cGZlcW9wKSAmJiBPaWRJc1ZhbGlkKGZmZXFvcCkpKQotCQkJZXJlcG9ydChFUlJPUiwKLQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCi0JCQkJCSBlcnJtc2co ImZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgXCIlc1wiIGNhbm5vdCBiZSBpbXBsZW1lbnRlZCIs Ci0JCQkJCQkJZmtjb25zdHJhaW50LT5jb25uYW1lKSwKLQkJCQkJIGVycmRldGFpbCgiS2V5 IGNvbHVtbnMgXCIlc1wiIGFuZCBcIiVzXCIgIgotCQkJCQkJCSAgICJhcmUgb2YgaW5jb21w YXRpYmxlIHR5cGVzOiAlcyBhbmQgJXMuIiwKLQkJCQkJCQkgICBzdHJWYWwobGlzdF9udGgo Zmtjb25zdHJhaW50LT5ma19hdHRycywgaSkpLAotCQkJCQkJCSAgIHN0clZhbChsaXN0X250 aChma2NvbnN0cmFpbnQtPnBrX2F0dHJzLCBpKSksCi0JCQkJCQkJICAgZm9ybWF0X3R5cGVf YmUoZmt0eXBlKSwKLQkJCQkJCQkgICBmb3JtYXRfdHlwZV9iZShwa3R5cGUpKSkpOwotCi0J CWlmIChvbGRfY2hlY2tfb2spCi0JCXsKLQkJCS8qCi0JCQkgKiBXaGVuIGEgcGZlcW9wIGNo YW5nZXMsIHJldmFsaWRhdGUgdGhlIGNvbnN0cmFpbnQuICBXZSBjb3VsZAotCQkJICogcGVy bWl0IGludHJhLW9wZmFtaWx5IGNoYW5nZXMsIGJ1dCB0aGF0IGFkZHMgc3VidGxlIGNvbXBs ZXhpdHkKLQkJCSAqIHdpdGhvdXQgYW55IGNvbmNyZXRlIGJlbmVmaXQgZm9yIGNvcmUgdHlw ZXMuICBXZSBuZWVkIG5vdAotCQkJICogYXNzZXNzIHBwZXFvcCBvciBmZmVxb3AsIHdoaWNo IFJJX0luaXRpYWxfQ2hlY2soKSBkb2VzIG5vdCB1c2UuCi0JCQkgKi8KLQkJCW9sZF9jaGVj a19vayA9IChwZmVxb3AgPT0gbGZpcnN0X29pZChvbGRfcGZlcW9wX2l0ZW0pKTsKLQkJCW9s ZF9wZmVxb3BfaXRlbSA9IGxuZXh0KGZrY29uc3RyYWludC0+b2xkX2NvbnBmZXFvcCwKLQkJ CQkJCQkJCW9sZF9wZmVxb3BfaXRlbSk7Ci0JCX0KLQkJaWYgKG9sZF9jaGVja19vaykKLQkJ ewotCQkJT2lkCQkJb2xkX2ZrdHlwZTsKLQkJCU9pZAkJCW5ld19ma3R5cGU7Ci0JCQlDb2Vy Y2lvblBhdGhUeXBlIG9sZF9wYXRodHlwZTsKLQkJCUNvZXJjaW9uUGF0aFR5cGUgbmV3X3Bh dGh0eXBlOwotCQkJT2lkCQkJb2xkX2Nhc3RmdW5jOwotCQkJT2lkCQkJbmV3X2Nhc3RmdW5j OwotCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIodGFiLT5vbGRE ZXNjLAotCQkJCQkJCQkJCQkJICAgZmthdHRudW1baV0gLSAxKTsKLQotCQkJLyoKLQkJCSAq IElkZW50aWZ5IGNvZXJjaW9uIHBhdGh3YXlzIGZyb20gZWFjaCBvZiB0aGUgb2xkIGFuZCBu ZXcgRkstc2lkZQotCQkJICogY29sdW1uIHR5cGVzIHRvIHRoZSByaWdodCAoZm9yZWlnbikg b3BlcmFuZCB0eXBlIG9mIHRoZSBwZmVxb3AuCi0JCQkgKiBXZSBtYXkgYXNzdW1lIHRoYXQg cGdfY29uc3RyYWludC5jb25rZXkgaXMgbm90IGNoYW5naW5nLgotCQkJICovCi0JCQlvbGRf Zmt0eXBlID0gYXR0ci0+YXR0dHlwaWQ7Ci0JCQluZXdfZmt0eXBlID0gZmt0eXBlOwotCQkJ b2xkX3BhdGh0eXBlID0gZmluZEZrZXlDYXN0KHBmZXFvcF9yaWdodCwgb2xkX2ZrdHlwZSwK LQkJCQkJCQkJCQkmb2xkX2Nhc3RmdW5jKTsKLQkJCW5ld19wYXRodHlwZSA9IGZpbmRGa2V5 Q2FzdChwZmVxb3BfcmlnaHQsIG5ld19ma3R5cGUsCi0JCQkJCQkJCQkJJm5ld19jYXN0ZnVu Yyk7Ci0KLQkJCS8qCi0JCQkgKiBVcG9uIGEgY2hhbmdlIHRvIHRoZSBjYXN0IGZyb20gdGhl IEZLIGNvbHVtbiB0byBpdHMgcGZlcW9wCi0JCQkgKiBvcGVyYW5kLCByZXZhbGlkYXRlIHRo ZSBjb25zdHJhaW50LiAgRm9yIHRoaXMgZXZhbHVhdGlvbiwgYQotCQkJICogYmluYXJ5IGNv ZXJjaW9uIGNhc3QgaXMgZXF1aXZhbGVudCB0byBubyBjYXN0IGF0IGFsbC4gIFdoaWxlCi0J CQkgKiB0eXBlIGltcGxlbWVudG9ycyBzaG91bGQgZGVzaWduIGltcGxpY2l0IGNhc3RzIHdp dGggYW4gZXllCi0JCQkgKiB0b3dhcmQgY29uc2lzdGVuY3kgb2Ygb3BlcmF0aW9ucyBsaWtl IGVxdWFsaXR5LCB3ZSBjYW5ub3QKLQkJCSAqIGFzc3VtZSBoZXJlIHRoYXQgdGhleSBoYXZl IGRvbmUgc28uCi0JCQkgKgotCQkJICogQSBmdW5jdGlvbiB3aXRoIGEgcG9seW1vcnBoaWMg YXJndW1lbnQgY291bGQgY2hhbmdlIGJlaGF2aW9yCi0JCQkgKiBhcmJpdHJhcmlseSBpbiBy ZXNwb25zZSB0byBnZXRfZm5fZXhwcl9hcmd0eXBlKCkuICBUaGVyZWZvcmUsCi0JCQkgKiB3 aGVuIHRoZSBjYXN0IGRlc3RpbmF0aW9uIGlzIHBvbHltb3JwaGljLCB3ZSBvbmx5IGF2b2lk Ci0JCQkgKiByZXZhbGlkYXRpb24gaWYgdGhlIGlucHV0IHR5cGUgaGFzIG5vdCBjaGFuZ2Vk IGF0IGFsbC4gIEdpdmVuCi0JCQkgKiBqdXN0IHRoZSBjb3JlIGRhdGEgdHlwZXMgYW5kIG9w ZXJhdG9yIGNsYXNzZXMsIHRoaXMgcmVxdWlyZW1lbnQKLQkJCSAqIHByZXZlbnRzIG5vIHdv dWxkLWJlIG9wdGltaXphdGlvbnMuCi0JCQkgKgotCQkJICogSWYgdGhlIGNhc3QgY29udmVy dHMgZnJvbSBhIGJhc2UgdHlwZSB0byBhIGRvbWFpbiB0aGVyZW9uLCB0aGVuCi0JCQkgKiB0 aGF0IGRvbWFpbiB0eXBlIG11c3QgYmUgdGhlIG9wY2ludHlwZSBvZiB0aGUgdW5pcXVlIGlu ZGV4LgotCQkJICogTmVjZXNzYXJpbHksIHRoZSBwcmltYXJ5IGtleSBjb2x1bW4gbXVzdCB0 aGVuIGJlIG9mIHRoZSBkb21haW4KLQkJCSAqIHR5cGUuICBTaW5jZSB0aGUgY29uc3RyYWlu dCB3YXMgcHJldmlvdXNseSB2YWxpZCwgYWxsIHZhbHVlcyBvbgotCQkJICogdGhlIGZvcmVp Z24gc2lkZSBuZWNlc3NhcmlseSBleGlzdCBvbiB0aGUgcHJpbWFyeSBzaWRlIGFuZCBpbgot CQkJICogdHVybiBjb25mb3JtIHRvIHRoZSBkb21haW4uICBDb25zZXF1ZW50bHksIHdlIG5l ZWQgbm90IHRyZWF0Ci0JCQkgKiBkb21haW5zIHNwZWNpYWxseSBoZXJlLgotCQkJICoKLQkJ CSAqIFNpbmNlIHdlIHJlcXVpcmUgdGhhdCBhbGwgY29sbGF0aW9ucyBzaGFyZSB0aGUgc2Ft ZSBub3Rpb24gb2YKLQkJCSAqIGVxdWFsaXR5ICh3aGljaCB0aGV5IGRvLCBiZWNhdXNlIHRl eHRlcSByZWR1Y2VzIHRvIGJpdHdpc2UKLQkJCSAqIGVxdWFsaXR5KSwgd2UgZG9uJ3QgY29t cGFyZSBjb2xsYXRpb24gaGVyZS4KLQkJCSAqCi0JCQkgKiBXZSBuZWVkIG5vdCBkaXJlY3Rs eSBjb25zaWRlciB0aGUgUEsgdHlwZS4gIEl0J3MgbmVjZXNzYXJpbHkKLQkJCSAqIGJpbmFy eSBjb2VyY2libGUgdG8gdGhlIG9wY2ludHlwZSBvZiB0aGUgdW5pcXVlIGluZGV4IGNvbHVt biwKLQkJCSAqIGFuZCByaV90cmlnZ2Vycy5jIHdpbGwgb25seSBkZWFsIHdpdGggUEsgZGF0 dW1zIGluIHRlcm1zIG9mCi0JCQkgKiB0aGF0IG9wY2ludHlwZS4gIENoYW5naW5nIHRoZSBv cGNpbnR5cGUgYWxzbyBjaGFuZ2VzIHBmZXFvcC4KLQkJCSAqLwotCQkJb2xkX2NoZWNrX29r ID0gKG5ld19wYXRodHlwZSA9PSBvbGRfcGF0aHR5cGUgJiYKLQkJCQkJCQluZXdfY2FzdGZ1 bmMgPT0gb2xkX2Nhc3RmdW5jICYmCi0JCQkJCQkJKCFJc1BvbHltb3JwaGljVHlwZShwZmVx b3BfcmlnaHQpIHx8Ci0JCQkJCQkJIG5ld19ma3R5cGUgPT0gb2xkX2ZrdHlwZSkpOwotCQl9 CisJCUZpbmRGS0NvbXBhcmlzb25PcGVyYXRvcnMoCisJCQkJZmtjb25zdHJhaW50LCB0YWIs IGksIGZrYXR0bnVtLAorCQkJCSZvbGRfY2hlY2tfb2ssICZvbGRfcGZlcW9wX2l0ZW0sCisJ CQkJcGt0eXBvaWRbaV0sIGZrdHlwb2lkW2ldLCBvcGNsYXNzZXNbaV0sCisJCQkJaXNfdGVt cG9yYWwsIGZhbHNlLAorCQkJCSZwZmVxb3BlcmF0b3JzW2ldLCAmcHBlcW9wZXJhdG9yc1tp XSwgJmZmZXFvcGVyYXRvcnNbaV0pOworCX0KKwlpZiAoaXNfdGVtcG9yYWwpIHsKKwkJcGth dHRudW1bbnVtcGtzXSA9IHBrcGVyaW9kYXR0bnVtc1swXTsKKwkJcGt0eXBvaWRbbnVtcGtz XSA9IHBrcGVyaW9kdHlwb2lkc1swXTsKKwkJZmthdHRudW1bbnVtcGtzXSA9IGZrcGVyaW9k YXR0bnVtc1swXTsKKwkJZmt0eXBvaWRbbnVtcGtzXSA9IGZrcGVyaW9kdHlwb2lkc1swXTsK IAotCQlwZmVxb3BlcmF0b3JzW2ldID0gcGZlcW9wOwotCQlwcGVxb3BlcmF0b3JzW2ldID0g cHBlcW9wOwotCQlmZmVxb3BlcmF0b3JzW2ldID0gZmZlcW9wOworCQlGaW5kRktDb21wYXJp c29uT3BlcmF0b3JzKAorCQkJCWZrY29uc3RyYWludCwgdGFiLCBudW1wa3MsIGZrYXR0bnVt LAorCQkJCSZvbGRfY2hlY2tfb2ssICZvbGRfcGZlcW9wX2l0ZW0sCisJCQkJcGtwZXJpb2R0 eXBvaWRzWzBdLCBma3BlcmlvZHR5cG9pZHNbMF0sIG9wY2xhc3Nlc1tudW1wa3NdLAorCQkJ CWlzX3RlbXBvcmFsLCB0cnVlLAorCQkJCSZwZmVxb3BlcmF0b3JzW251bXBrc10sICZwcGVx b3BlcmF0b3JzW251bXBrc10sICZmZmVxb3BlcmF0b3JzW251bXBrc10pOworCQludW1ma3Mg Kz0gMTsKKwkJbnVtcGtzICs9IDE7CiAJfQogCisJLyoKKwkgKiBGb3IgRktzIHdpdGggUEVS SU9EIHdlIG5lZWQgYW4gb3BlcmF0b3IgYW5kIGFnZ3JlZ2F0ZSBmdW5jdGlvbgorCSAqIHRv IGNoZWNrIHdoZXRoZXIgdGhlIHJlZmVyZW5jaW5nIHJvdydzIHJhbmdlIGlzIGNvbnRhaW5l ZAorCSAqIGJ5IHRoZSBhZ2dyZWdhdGVkIHJhbmdlcyBvZiB0aGUgcmVmZXJlbmNlZCByb3co cykuCisJICogRm9yIHJhbmdldHlwZXMgdGhpcyBpcyBmay5wZXJpb2RhdHQgPEAgcmFuZ2Vf YWdnKHBrLnBlcmlvZGF0dCkuCisJICogRktzIHdpbGwgbG9vayB0aGVzZSB1cCBhdCAicnVu dGltZSIsIGJ1dCB3ZSBzaG91bGQgbWFrZSBzdXJlCisJICogdGhlIGxvb2t1cCB3b3JrcyBo ZXJlLgorCSAqLworCWlmIChpc190ZW1wb3JhbCkKKwkJRmluZEZLUGVyaW9kT3BlcnNBbmRQ cm9jcyhvcGNsYXNzZXNbbnVtcGtzIC0gMV0sICZwZXJpb2RvcGVyb2lkLCAmcGVyaW9kcHJv Y29pZCk7CisKIAkvKgogCSAqIENyZWF0ZSBhbGwgdGhlIGNvbnN0cmFpbnQgYW5kIHRyaWdn ZXIgb2JqZWN0cywgcmVjdXJzaW5nIHRvIHBhcnRpdGlvbnMKIAkgKiBhcyBuZWNlc3Nhcnku ICBGaXJzdCBoYW5kbGUgdGhlIHJlZmVyZW5jZWQgc2lkZS4KQEAgLTk5MDYsNyArOTgwNiw4 IEBAIEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRh YmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkgbnVtZmtkZWxzZXRjb2xz LAogCQkJCQkJCQkJIGZrZGVsc2V0Y29scywKIAkJCQkJCQkJCSBvbGRfY2hlY2tfb2ssCi0J CQkJCQkJCQkgSW52YWxpZE9pZCwgSW52YWxpZE9pZCk7CisJCQkJCQkJCQkgSW52YWxpZE9p ZCwgSW52YWxpZE9pZCwKKwkJCQkJCQkJCSBpc190ZW1wb3JhbCk7CiAKIAkvKiBOb3cgaGFu ZGxlIHRoZSByZWZlcmVuY2luZyBzaWRlLiAqLwogCWFkZEZrUmVjdXJzZVJlZmVyZW5jaW5n KHdxdWV1ZSwgZmtjb25zdHJhaW50LCByZWwsIHBrcmVsLApAQCAtOTkyMiw3ICs5ODIzLDgg QEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFi bGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQlma2RlbHNldGNvbHMsCiAJCQkJ CQkJb2xkX2NoZWNrX29rLAogCQkJCQkJCWxvY2ttb2RlLAotCQkJCQkJCUludmFsaWRPaWQs IEludmFsaWRPaWQpOworCQkJCQkJCUludmFsaWRPaWQsIEludmFsaWRPaWQsCisJCQkJCQkJ aXNfdGVtcG9yYWwpOwogCiAJLyoKIAkgKiBEb25lLiAgQ2xvc2UgcGsgdGFibGUsIGJ1dCBr ZWVwIGxvY2sgdW50aWwgd2UndmUgY29tbWl0dGVkLgpAQCAtMTAwMDcsNyArOTkwOSw4IEBA IGFkZEZrUmVjdXJzZVJlZmVyZW5jZWQoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtj b25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJCSAgIE9pZCAqcHBlcW9wZXJhdG9ycywg T2lkICpmZmVxb3BlcmF0b3JzLAogCQkJCQkgICBpbnQgbnVtZmtkZWxzZXRjb2xzLCBpbnQx NiAqZmtkZWxzZXRjb2xzLAogCQkJCQkgICBib29sIG9sZF9jaGVja19vaywKLQkJCQkJICAg T2lkIHBhcmVudERlbFRyaWdnZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2VyKQorCQkJCQkgICBP aWQgcGFyZW50RGVsVHJpZ2dlciwgT2lkIHBhcmVudFVwZFRyaWdnZXIsCisJCQkJCSAgIGJv b2wgaXNfdGVtcG9yYWwpCiB7CiAJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOwogCU9pZAkJCWNv bnN0ck9pZDsKQEAgLTEwMDkzLDcgKzk5OTYsNyBAQCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2Vk KExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwgUmVsYXRpb24gcmVs LAogCQkJCQkJCQkJICBjb25pc2xvY2FsLAkvKiBpc2xvY2FsICovCiAJCQkJCQkJCQkgIGNv bmluaGNvdW50LAkvKiBpbmhjb3VudCAqLwogCQkJCQkJCQkJICBjb25ub2luaGVyaXQsIC8q IGNvbk5vSW5oZXJpdCAqLwotCQkJCQkJCQkJICBmYWxzZSwJLyogY29uV2l0aG91dE92ZXJs YXBzICovCisJCQkJCQkJCQkgIGlzX3RlbXBvcmFsLAkvKiBjb25XaXRob3V0T3ZlcmxhcHMg Ki8KIAkJCQkJCQkJCSAgZmFsc2UpOwkvKiBpc19pbnRlcm5hbCAqLwogCiAJT2JqZWN0QWRk cmVzc1NldChhZGRyZXNzLCBDb25zdHJhaW50UmVsYXRpb25JZCwgY29uc3RyT2lkKTsKQEAg LTEwMTY5LDcgKzEwMDcyLDggQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNlZChMaXN0ICoqd3F1 ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJ ICAgcGZlcW9wZXJhdG9ycywgcHBlcW9wZXJhdG9ycywgZmZlcW9wZXJhdG9ycywKIAkJCQkJ CQkJICAgbnVtZmtkZWxzZXRjb2xzLCBma2RlbHNldGNvbHMsCiAJCQkJCQkJCSAgIG9sZF9j aGVja19vaywKLQkJCQkJCQkJICAgZGVsZXRlVHJpZ2dlck9pZCwgdXBkYXRlVHJpZ2dlck9p ZCk7CisJCQkJCQkJCSAgIGRlbGV0ZVRyaWdnZXJPaWQsIHVwZGF0ZVRyaWdnZXJPaWQsCisJ CQkJCQkJCSAgIGlzX3RlbXBvcmFsKTsKIAogCQkJLyogRG9uZSAtLSBjbGVhbiB1cCAoYnV0 IGtlZXAgdGhlIGxvY2spICovCiAJCQl0YWJsZV9jbG9zZShwYXJ0UmVsLCBOb0xvY2spOwpA QCAtMTAyMjcsNyArMTAxMzEsOCBAQCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyhMaXN0ICoq d3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCQkJ CU9pZCAqcGZlcW9wZXJhdG9ycywgT2lkICpwcGVxb3BlcmF0b3JzLCBPaWQgKmZmZXFvcGVy YXRvcnMsCiAJCQkJCQlpbnQgbnVtZmtkZWxzZXRjb2xzLCBpbnQxNiAqZmtkZWxzZXRjb2xz LAogCQkJCQkJYm9vbCBvbGRfY2hlY2tfb2ssIExPQ0tNT0RFIGxvY2ttb2RlLAotCQkJCQkJ T2lkIHBhcmVudEluc1RyaWdnZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2VyKQorCQkJCQkJT2lk IHBhcmVudEluc1RyaWdnZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2VyLAorCQkJCQkJYm9vbCBp c190ZW1wb3JhbCkKIHsKIAlPaWQJCQlpbnNlcnRUcmlnZ2VyT2lkLAogCQkJCXVwZGF0ZVRy aWdnZXJPaWQ7CkBAIC0xMDI3NSw2ICsxMDE4MCw3IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5j aW5nKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwgUmVsYXRpb24g cmVsLAogCQkJbmV3Y29uLT5yZWZyZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQocGtyZWwpOwog CQkJbmV3Y29uLT5yZWZpbmRpZCA9IGluZGV4T2lkOwogCQkJbmV3Y29uLT5jb25pZCA9IHBh cmVudENvbnN0cjsKKwkJCW5ld2Nvbi0+Y29ud2l0aHBlcmlvZCA9IGZrY29uc3RyYWludC0+ ZmtfcGVyaW9kICE9IE5VTEw7CiAJCQluZXdjb24tPnF1YWwgPSAoTm9kZSAqKSBma2NvbnN0 cmFpbnQ7CiAKIAkJCXRhYi0+Y29uc3RyYWludHMgPSBsYXBwZW5kKHRhYi0+Y29uc3RyYWlu dHMsIG5ld2Nvbik7CkBAIC0xMDM5Miw3ICsxMDI5OCw3IEBAIGFkZEZrUmVjdXJzZVJlZmVy ZW5jaW5nKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwgUmVsYXRp b24gcmVsLAogCQkJCQkJCQkJICBmYWxzZSwKIAkJCQkJCQkJCSAgMSwKIAkJCQkJCQkJCSAg ZmFsc2UsCi0JCQkJCQkJCQkgIGZhbHNlLAkvKiBjb25XaXRob3V0T3ZlcmxhcHMgKi8KKwkJ CQkJCQkJCSAgaXNfdGVtcG9yYWwsCS8qIGNvbldpdGhvdXRPdmVybGFwcyAqLwogCQkJCQkJ CQkJICBmYWxzZSk7CiAKIAkJCS8qCkBAIC0xMDQyMyw3ICsxMDMyOSw4IEBAIGFkZEZrUmVj dXJzZVJlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWlu dCwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJb2xkX2NoZWNrX29rLAogCQkJCQkJCQkJbG9j a21vZGUsCiAJCQkJCQkJCQlpbnNlcnRUcmlnZ2VyT2lkLAotCQkJCQkJCQkJdXBkYXRlVHJp Z2dlck9pZCk7CisJCQkJCQkJCQl1cGRhdGVUcmlnZ2VyT2lkLAorCQkJCQkJCQkJaXNfdGVt cG9yYWwpOwogCiAJCQl0YWJsZV9jbG9zZShwYXJ0aXRpb24sIE5vTG9jayk7CiAJCX0KQEAg LTEwNjU5LDcgKzEwNTY2LDggQEAgQ2xvbmVGa1JlZmVyZW5jZWQoUmVsYXRpb24gcGFyZW50 UmVsLCBSZWxhdGlvbiBwYXJ0aXRpb25SZWwpCiAJCQkJCQkJICAgY29uZmRlbHNldGNvbHMs CiAJCQkJCQkJICAgdHJ1ZSwKIAkJCQkJCQkgICBkZWxldGVUcmlnZ2VyT2lkLAotCQkJCQkJ CSAgIHVwZGF0ZVRyaWdnZXJPaWQpOworCQkJCQkJCSAgIHVwZGF0ZVRyaWdnZXJPaWQsCisJ CQkJCQkJICAgY29uc3RyRm9ybS0+Y29ud2l0aG91dG92ZXJsYXBzKTsKIAogCQl0YWJsZV9j bG9zZShma1JlbCwgTm9Mb2NrKTsKIAkJUmVsZWFzZVN5c0NhY2hlKHR1cGxlKTsKQEAgLTEw NzUyLDYgKzEwNjYwLDcgQEAgQ2xvbmVGa1JlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIFJl bGF0aW9uIHBhcmVudFJlbCwgUmVsYXRpb24gcGFydFJlbCkKIAkJTGlzdENlbGwgICAqbGM7 CiAJCU9pZAkJCWluc2VydFRyaWdnZXJPaWQsCiAJCQkJCXVwZGF0ZVRyaWdnZXJPaWQ7CisJ CWJvb2wJCWlzX3RlbXBvcmFsOwogCiAJCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKENPTlNU Uk9JRCwgT2JqZWN0SWRHZXREYXR1bShwYXJlbnRDb25zdHJPaWQpKTsKIAkJaWYgKCFIZWFw VHVwbGVJc1ZhbGlkKHR1cGxlKSkKQEAgLTEwODY3LDYgKzEwNzc2LDcgQEAgQ2xvbmVGa1Jl ZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHBhcmVudFJlbCwgUmVsYXRpb24g cGFydFJlbCkKIAkJCWZrY29uc3RyYWludC0+Y29ubmFtZSA9IHBzdHJkdXAoTmFtZVN0cihj b25zdHJGb3JtLT5jb25uYW1lKSk7CiAKIAkJaW5kZXhPaWQgPSBjb25zdHJGb3JtLT5jb25p bmRpZDsKKwkJaXNfdGVtcG9yYWwgPSBjb25zdHJGb3JtLT5jb253aXRob3V0b3ZlcmxhcHM7 CiAJCWNvbnN0ck9pZCA9CiAJCQlDcmVhdGVDb25zdHJhaW50RW50cnkoZmtjb25zdHJhaW50 LT5jb25uYW1lLAogCQkJCQkJCQkgIGNvbnN0ckZvcm0tPmNvbm5hbWVzcGFjZSwKQEAgLTEw ODk4LDcgKzEwODA4LDcgQEAgQ2xvbmVGa1JlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIFJl bGF0aW9uIHBhcmVudFJlbCwgUmVsYXRpb24gcGFydFJlbCkKIAkJCQkJCQkJICBmYWxzZSwJ LyogaXNsb2NhbCAqLwogCQkJCQkJCQkgIDEsCS8qIGluaGNvdW50ICovCiAJCQkJCQkJCSAg ZmFsc2UsCS8qIGNvbk5vSW5oZXJpdCAqLwotCQkJCQkJCQkgIGZhbHNlLAkvKiBjb25XaXRo b3V0T3ZlcmxhcHMgKi8KKwkJCQkJCQkJICBpc190ZW1wb3JhbCwJLyogY29uV2l0aG91dE92 ZXJsYXBzICovCiAJCQkJCQkJCSAgdHJ1ZSk7CiAKIAkJLyogU2V0IHVwIHBhcnRpdGlvbiBk ZXBlbmRlbmNpZXMgZm9yIHRoZSBuZXcgY29uc3RyYWludCAqLwpAQCAtMTA5MzIsMTMgKzEw ODQyLDMwMCBAQCBDbG9uZUZrUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24g cGFyZW50UmVsLCBSZWxhdGlvbiBwYXJ0UmVsKQogCQkJCQkJCQlmYWxzZSwJLyogbm8gb2xk IGNoZWNrIGV4aXN0cyAqLwogCQkJCQkJCQlBY2Nlc3NFeGNsdXNpdmVMb2NrLAogCQkJCQkJ CQlpbnNlcnRUcmlnZ2VyT2lkLAotCQkJCQkJCQl1cGRhdGVUcmlnZ2VyT2lkKTsKKwkJCQkJ CQkJdXBkYXRlVHJpZ2dlck9pZCwKKwkJCQkJCQkJaXNfdGVtcG9yYWwpOwogCQl0YWJsZV9j bG9zZShwa3JlbCwgTm9Mb2NrKTsKIAl9CiAKIAl0YWJsZV9jbG9zZSh0cmlncmVsLCBSb3dF eGNsdXNpdmVMb2NrKTsKIH0KIAorc3RhdGljIHZvaWQKK0ZpbmRGS0NvbXBhcmlzb25PcGVy YXRvcnMoQ29uc3RyYWludCAqZmtjb25zdHJhaW50LAorCQlBbHRlcmVkVGFibGVJbmZvICp0 YWIsCisJCWludCBpLAorCQlpbnQxNiAqZmthdHRudW0sCisJCWJvb2wgKm9sZF9jaGVja19v aywKKwkJTGlzdENlbGwgKipvbGRfcGZlcW9wX2l0ZW0sCisJCU9pZCBwa3R5cGUsIE9pZCBm a3R5cGUsIE9pZCBvcGNsYXNzLAorCQlib29sIGlzX3RlbXBvcmFsLCBib29sIGZvcl9vdmVy bGFwcywKKwkJT2lkICpwZmVxb3BPdXQsIE9pZCAqcHBlcW9wT3V0LCBPaWQgKmZmZXFvcE91 dCkKK3sKKwlPaWQJCQlma3R5cGVkOworCUhlYXBUdXBsZQljbGFfaHQ7CisJRm9ybV9wZ19v cGNsYXNzIGNsYV90dXA7CisJT2lkCQkJYW1pZDsKKwlPaWQJCQlvcGZhbWlseTsKKwlPaWQJ CQlvcGNpbnR5cGU7CisJT2lkCQkJcGZlcW9wOworCU9pZAkJCXBwZXFvcDsKKwlPaWQJCQlm ZmVxb3A7CisJU3RyYXRlZ3lOdW1iZXIJcnRzdHJhdGVneTsKKwlpbnQxNgkJZXFzdHJhdGVn eTsKKwlPaWQJCQlwZmVxb3BfcmlnaHQ7CisJY2hhcgkgICAqc3RyYXRuYW1lOworCisJLyog V2UgbmVlZCBzZXZlcmFsIGZpZWxkcyBvdXQgb2YgdGhlIHBnX29wY2xhc3MgZW50cnkgKi8K KwljbGFfaHQgPSBTZWFyY2hTeXNDYWNoZTEoQ0xBT0lELCBPYmplY3RJZEdldERhdHVtKG9w Y2xhc3MpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoY2xhX2h0KSkKKwkJZWxvZyhFUlJP UiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIG9wY2xhc3MgJXUiLCBvcGNsYXNzKTsKKwlj bGFfdHVwID0gKEZvcm1fcGdfb3BjbGFzcykgR0VUU1RSVUNUKGNsYV9odCk7CisJYW1pZCA9 IGNsYV90dXAtPm9wY21ldGhvZDsKKwlvcGZhbWlseSA9IGNsYV90dXAtPm9wY2ZhbWlseTsK KwlvcGNpbnR5cGUgPSBjbGFfdHVwLT5vcGNpbnR5cGU7CisJUmVsZWFzZVN5c0NhY2hlKGNs YV9odCk7CisKKwlpZiAoaXNfdGVtcG9yYWwpCisJeworCQlpZiAoYW1pZCAhPSBHSVNUX0FN X09JRCkKKwkJCWVsb2coRVJST1IsICJvbmx5IEdpU1QgaW5kZXhlcyBhcmUgc3VwcG9ydGVk IGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMiKTsKKwkJLyoKKwkJICogRm9yIHRoZSBub24t b3ZlcmxhcHMgcGFydHMsIHdlIHdhbnQgZWl0aGVyIFJURXF1YWxTdHJhdGVneU51bWJlciAo d2l0aG91dCBidHJlZV9naXN0KQorCQkgKiBvciBCVEVxdWFsU3RyYXRlZ3lOdW1iZXIgKHdp dGggYnRyZWVfZ2lzdCkuIFdlJ2xsIHRyeSB0aGUgbGF0dGVyIGZpcnN0LgorCQkgKi8KKwkJ aWYgKGZvcl9vdmVybGFwcykKKwkJeworCQkJc3RyYXRuYW1lID0gIm92ZXJsYXBzIjsKKwkJ CXJ0c3RyYXRlZ3kgPSBSVE92ZXJsYXBTdHJhdGVneU51bWJlcjsKKwkJfQorCQllbHNlCisJ CXsKKwkJCXN0cmF0bmFtZSA9ICJlcXVhbGl0eSI7CisJCQlydHN0cmF0ZWd5ID0gUlRFcXVh bFN0cmF0ZWd5TnVtYmVyOworCQl9CisJCWVxc3RyYXRlZ3kgPSBnaXN0VHJhbnNsYXRlU3Ry YXRudW0ob3BjbGFzcywgcnRzdHJhdGVneSk7CisJCWlmICghU3RyYXRlZ3lJc1ZhbGlkKGVx c3RyYXRlZ3kpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9V TkRFRklORURfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygibm8gJXMgb3BlcmF0b3IgZm91bmQg Zm9yIGZvcmVpZ24ga2V5Iiwgc3RyYXRuYW1lKSwKKwkJCQkJIGVycmRldGFpbCgiQ291bGQg bm90IHRyYW5zbGF0ZSBzdHJhdGVneSBudW1iZXIgJWQgZm9yIG9wY2xhc3MgJWQuIiwKKwkJ CQkJCSBydHN0cmF0ZWd5LCBvcGNsYXNzKSwKKwkJCQkJIGVycmhpbnQoIkRlZmluZSBhIHN0 cmF0bnVtIHN1cHBvcnQgZnVuY3Rpb24gZm9yIHlvdXIgR2lTVCBvcGNsYXNzLiIpKSk7CisJ fQorCWVsc2UKKwl7CisJCS8qCisJCSAqIENoZWNrIGl0J3MgYSBidHJlZTsgY3VycmVudGx5 IHRoaXMgY2FuIG5ldmVyIGZhaWwgc2luY2Ugbm8gb3RoZXIKKwkJICogaW5kZXggQU1zIHN1 cHBvcnQgdW5pcXVlIGluZGV4ZXMuICBJZiB3ZSBldmVyIGRpZCBoYXZlIG90aGVyIHR5cGVz CisJCSAqIG9mIHVuaXF1ZSBpbmRleGVzLCB3ZSdkIG5lZWQgYSB3YXkgdG8gZGV0ZXJtaW5l IHdoaWNoIG9wZXJhdG9yCisJCSAqIHN0cmF0ZWd5IG51bWJlciBpcyBlcXVhbGl0eS4gIChJ cyBpdCByZWFzb25hYmxlIHRvIGluc2lzdCB0aGF0CisJCSAqIGV2ZXJ5IHN1Y2ggaW5kZXgg QU0gdXNlIGJ0cmVlJ3MgbnVtYmVyIGZvciBlcXVhbGl0eT8pCisJCSAqLworCQlpZiAoYW1p ZCAhPSBCVFJFRV9BTV9PSUQpCisJCQllbG9nKEVSUk9SLCAib25seSBiLXRyZWUgaW5kZXhl cyBhcmUgc3VwcG9ydGVkIGZvciBmb3JlaWduIGtleXMiKTsKKwkJZXFzdHJhdGVneSA9IEJU RXF1YWxTdHJhdGVneU51bWJlcjsKKwl9CisKKwkvKgorCSAqIFRoZXJlIGhhZCBiZXR0ZXIg YmUgYSBwcmltYXJ5IGVxdWFsaXR5IG9wZXJhdG9yIGZvciB0aGUgaW5kZXguCisJICogV2Un bGwgdXNlIGl0IGZvciBQSyA9IFBLIGNvbXBhcmlzb25zLgorCSAqLworCXBwZXFvcCA9IGdl dF9vcGZhbWlseV9tZW1iZXIob3BmYW1pbHksIG9wY2ludHlwZSwgb3BjaW50eXBlLAorCQkJ CQkJCQkgZXFzdHJhdGVneSk7CisKKwlpZiAoIU9pZElzVmFsaWQocHBlcW9wKSkKKwkJZWxv ZyhFUlJPUiwgIm1pc3Npbmcgb3BlcmF0b3IgJWQoJXUsJXUpIGluIG9wZmFtaWx5ICV1IiwK KwkJCSBlcXN0cmF0ZWd5LCBvcGNpbnR5cGUsIG9wY2ludHlwZSwgb3BmYW1pbHkpOworCisJ LyoKKwkgKiBBcmUgdGhlcmUgZXF1YWxpdHkgb3BlcmF0b3JzIHRoYXQgdGFrZSBleGFjdGx5 IHRoZSBGSyB0eXBlPyBBc3N1bWUKKwkgKiB3ZSBzaG91bGQgbG9vayB0aHJvdWdoIGFueSBk b21haW4gaGVyZS4KKwkgKi8KKwlma3R5cGVkID0gZ2V0QmFzZVR5cGUoZmt0eXBlKTsKKwor CXBmZXFvcCA9IGdldF9vcGZhbWlseV9tZW1iZXIob3BmYW1pbHksIG9wY2ludHlwZSwgZmt0 eXBlZCwKKwkJCQkJCQkJIGVxc3RyYXRlZ3kpOworCWlmIChPaWRJc1ZhbGlkKHBmZXFvcCkp CisJeworCQlwZmVxb3BfcmlnaHQgPSBma3R5cGVkOworCQlmZmVxb3AgPSBnZXRfb3BmYW1p bHlfbWVtYmVyKG9wZmFtaWx5LCBma3R5cGVkLCBma3R5cGVkLAorCQkJCQkJCQkJIGVxc3Ry YXRlZ3kpOworCX0KKwllbHNlCisJeworCQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCisJ CXBmZXFvcF9yaWdodCA9IEludmFsaWRPaWQ7CisJCWZmZXFvcCA9IEludmFsaWRPaWQ7CisJ fQorCisJaWYgKCEoT2lkSXNWYWxpZChwZmVxb3ApICYmIE9pZElzVmFsaWQoZmZlcW9wKSkp CisJeworCQkvKgorCQkgKiBPdGhlcndpc2UsIGxvb2sgZm9yIGFuIGltcGxpY2l0IGNhc3Qg ZnJvbSB0aGUgRksgdHlwZSB0byB0aGUKKwkJICogb3BjaW50eXBlLCBhbmQgaWYgZm91bmQs IHVzZSB0aGUgcHJpbWFyeSBlcXVhbGl0eSBvcGVyYXRvci4KKwkJICogVGhpcyBpcyBhIGJp dCB0cmlja3kgYmVjYXVzZSBvcGNpbnR5cGUgbWlnaHQgYmUgYSBwb2x5bW9ycGhpYworCQkg KiB0eXBlIHN1Y2ggYXMgQU5ZQVJSQVkgb3IgQU5ZRU5VTTsgc28gd2hhdCB3ZSBoYXZlIHRv IHRlc3QgaXMKKwkJICogd2hldGhlciB0aGUgdHdvIGFjdHVhbCBjb2x1bW4gdHlwZXMgY2Fu IGJlIGNvbmN1cnJlbnRseSBjYXN0IHRvCisJCSAqIHRoYXQgdHlwZS4gIChPdGhlcndpc2Us IHdlJ2QgZmFpbCB0byByZWplY3QgY29tYmluYXRpb25zIHN1Y2gKKwkJICogYXMgaW50W10g YW5kIHBvaW50W10uKQorCQkgKi8KKwkJT2lkCQkJaW5wdXRfdHlwZWlkc1syXTsKKwkJT2lk CQkJdGFyZ2V0X3R5cGVpZHNbMl07CisKKwkJaW5wdXRfdHlwZWlkc1swXSA9IHBrdHlwZTsK KwkJaW5wdXRfdHlwZWlkc1sxXSA9IGZrdHlwZTsKKwkJdGFyZ2V0X3R5cGVpZHNbMF0gPSBv cGNpbnR5cGU7CisJCXRhcmdldF90eXBlaWRzWzFdID0gb3BjaW50eXBlOworCQlpZiAoY2Fu X2NvZXJjZV90eXBlKDIsIGlucHV0X3R5cGVpZHMsIHRhcmdldF90eXBlaWRzLAorCQkJCQkJ CUNPRVJDSU9OX0lNUExJQ0lUKSkKKwkJeworCQkJcGZlcW9wID0gZmZlcW9wID0gcHBlcW9w OworCQkJcGZlcW9wX3JpZ2h0ID0gb3BjaW50eXBlOworCQl9CisJfQorCisJaWYgKCEoT2lk SXNWYWxpZChwZmVxb3ApICYmIE9pZElzVmFsaWQoZmZlcW9wKSkpCisJeworCQljaGFyICpm a2F0dHJfbmFtZTsKKwkJY2hhciAqcGthdHRyX25hbWU7CisKKwkJaWYgKGZvcl9vdmVybGFw cykKKwkJeworCQkJZmthdHRyX25hbWUgPSBzdHJWYWwoZmtjb25zdHJhaW50LT5ma19wZXJp b2QpOworCQkJcGthdHRyX25hbWUgPSBzdHJWYWwoZmtjb25zdHJhaW50LT5wa19wZXJpb2Qp OworCQl9CisJCWVsc2UKKwkJeworCQkJZmthdHRyX25hbWUgPSBzdHJWYWwobGlzdF9udGgo Zmtjb25zdHJhaW50LT5ma19hdHRycywgaSkpOworCQkJcGthdHRyX25hbWUgPSBzdHJWYWwo bGlzdF9udGgoZmtjb25zdHJhaW50LT5wa19hdHRycywgaSkpOworCQl9CisKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJ CQkgZXJybXNnKCJmb3JlaWduIGtleSBjb25zdHJhaW50IFwiJXNcIiBjYW5ub3QgYmUgaW1w bGVtZW50ZWQiLAorCQkJCQkJZmtjb25zdHJhaW50LT5jb25uYW1lKSwKKwkJCQkgZXJyZGV0 YWlsKCJLZXkgY29sdW1ucyBcIiVzXCIgYW5kIFwiJXNcIiAiCisJCQkJCQkgICAiYXJlIG9m IGluY29tcGF0aWJsZSB0eXBlczogJXMgYW5kICVzLiIsCisJCQkJCQkgICBma2F0dHJfbmFt ZSwKKwkJCQkJCSAgIHBrYXR0cl9uYW1lLAorCQkJCQkJICAgZm9ybWF0X3R5cGVfYmUoZmt0 eXBlKSwKKwkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKHBrdHlwZSkpKSk7CisJfQorCisJaWYg KCpvbGRfY2hlY2tfb2spCisJeworCQkvKgorCQkgKiBXaGVuIGEgcGZlcW9wIGNoYW5nZXMs IHJldmFsaWRhdGUgdGhlIGNvbnN0cmFpbnQuICBXZSBjb3VsZAorCQkgKiBwZXJtaXQgaW50 cmEtb3BmYW1pbHkgY2hhbmdlcywgYnV0IHRoYXQgYWRkcyBzdWJ0bGUgY29tcGxleGl0eQor CQkgKiB3aXRob3V0IGFueSBjb25jcmV0ZSBiZW5lZml0IGZvciBjb3JlIHR5cGVzLiAgV2Ug bmVlZCBub3QKKwkJICogYXNzZXNzIHBwZXFvcCBvciBmZmVxb3AsIHdoaWNoIFJJX0luaXRp YWxfQ2hlY2soKSBkb2VzIG5vdCB1c2UuCisJCSAqLworCQkqb2xkX2NoZWNrX29rID0gKHBm ZXFvcCA9PSBsZmlyc3Rfb2lkKCpvbGRfcGZlcW9wX2l0ZW0pKTsKKwkJKm9sZF9wZmVxb3Bf aXRlbSA9IGxuZXh0KGZrY29uc3RyYWludC0+b2xkX2NvbnBmZXFvcCwKKwkJCQkJCQkJKm9s ZF9wZmVxb3BfaXRlbSk7CisJfQorCWlmICgqb2xkX2NoZWNrX29rKQorCXsKKwkJT2lkCQkJ b2xkX2ZrdHlwZTsKKwkJT2lkCQkJbmV3X2ZrdHlwZTsKKwkJQ29lcmNpb25QYXRoVHlwZSBv bGRfcGF0aHR5cGU7CisJCUNvZXJjaW9uUGF0aFR5cGUgbmV3X3BhdGh0eXBlOworCQlPaWQJ CQlvbGRfY2FzdGZ1bmM7CisJCU9pZAkJCW5ld19jYXN0ZnVuYzsKKwkJRm9ybV9wZ19hdHRy aWJ1dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIodGFiLT5vbGREZXNjLAorCQkJCQkJCQkJCQkg ICBma2F0dG51bVtpXSAtIDEpOworCisJCS8qCisJCSAqIElkZW50aWZ5IGNvZXJjaW9uIHBh dGh3YXlzIGZyb20gZWFjaCBvZiB0aGUgb2xkIGFuZCBuZXcgRkstc2lkZQorCQkgKiBjb2x1 bW4gdHlwZXMgdG8gdGhlIHJpZ2h0IChmb3JlaWduKSBvcGVyYW5kIHR5cGUgb2YgdGhlIHBm ZXFvcC4KKwkJICogV2UgbWF5IGFzc3VtZSB0aGF0IHBnX2NvbnN0cmFpbnQuY29ua2V5IGlz IG5vdCBjaGFuZ2luZy4KKwkJICovCisJCW9sZF9ma3R5cGUgPSBhdHRyLT5hdHR0eXBpZDsK KwkJbmV3X2ZrdHlwZSA9IGZrdHlwZTsKKwkJb2xkX3BhdGh0eXBlID0gZmluZEZrZXlDYXN0 KHBmZXFvcF9yaWdodCwgb2xkX2ZrdHlwZSwKKwkJCQkJCQkJCSZvbGRfY2FzdGZ1bmMpOwor CQluZXdfcGF0aHR5cGUgPSBmaW5kRmtleUNhc3QocGZlcW9wX3JpZ2h0LCBuZXdfZmt0eXBl LAorCQkJCQkJCQkJJm5ld19jYXN0ZnVuYyk7CisKKwkJLyoKKwkJICogVXBvbiBhIGNoYW5n ZSB0byB0aGUgY2FzdCBmcm9tIHRoZSBGSyBjb2x1bW4gdG8gaXRzIHBmZXFvcAorCQkgKiBv cGVyYW5kLCByZXZhbGlkYXRlIHRoZSBjb25zdHJhaW50LiAgRm9yIHRoaXMgZXZhbHVhdGlv biwgYQorCQkgKiBiaW5hcnkgY29lcmNpb24gY2FzdCBpcyBlcXVpdmFsZW50IHRvIG5vIGNh c3QgYXQgYWxsLiAgV2hpbGUKKwkJICogdHlwZSBpbXBsZW1lbnRvcnMgc2hvdWxkIGRlc2ln biBpbXBsaWNpdCBjYXN0cyB3aXRoIGFuIGV5ZQorCQkgKiB0b3dhcmQgY29uc2lzdGVuY3kg b2Ygb3BlcmF0aW9ucyBsaWtlIGVxdWFsaXR5LCB3ZSBjYW5ub3QKKwkJICogYXNzdW1lIGhl cmUgdGhhdCB0aGV5IGhhdmUgZG9uZSBzby4KKwkJICoKKwkJICogQSBmdW5jdGlvbiB3aXRo IGEgcG9seW1vcnBoaWMgYXJndW1lbnQgY291bGQgY2hhbmdlIGJlaGF2aW9yCisJCSAqIGFy Yml0cmFyaWx5IGluIHJlc3BvbnNlIHRvIGdldF9mbl9leHByX2FyZ3R5cGUoKS4gIFRoZXJl Zm9yZSwKKwkJICogd2hlbiB0aGUgY2FzdCBkZXN0aW5hdGlvbiBpcyBwb2x5bW9ycGhpYywg d2Ugb25seSBhdm9pZAorCQkgKiByZXZhbGlkYXRpb24gaWYgdGhlIGlucHV0IHR5cGUgaGFz IG5vdCBjaGFuZ2VkIGF0IGFsbC4gIEdpdmVuCisJCSAqIGp1c3QgdGhlIGNvcmUgZGF0YSB0 eXBlcyBhbmQgb3BlcmF0b3IgY2xhc3NlcywgdGhpcyByZXF1aXJlbWVudAorCQkgKiBwcmV2 ZW50cyBubyB3b3VsZC1iZSBvcHRpbWl6YXRpb25zLgorCQkgKgorCQkgKiBJZiB0aGUgY2Fz dCBjb252ZXJ0cyBmcm9tIGEgYmFzZSB0eXBlIHRvIGEgZG9tYWluIHRoZXJlb24sIHRoZW4K KwkJICogdGhhdCBkb21haW4gdHlwZSBtdXN0IGJlIHRoZSBvcGNpbnR5cGUgb2YgdGhlIHVu aXF1ZSBpbmRleC4KKwkJICogTmVjZXNzYXJpbHksIHRoZSBwcmltYXJ5IGtleSBjb2x1bW4g bXVzdCB0aGVuIGJlIG9mIHRoZSBkb21haW4KKwkJICogdHlwZS4gIFNpbmNlIHRoZSBjb25z dHJhaW50IHdhcyBwcmV2aW91c2x5IHZhbGlkLCBhbGwgdmFsdWVzIG9uCisJCSAqIHRoZSBm b3JlaWduIHNpZGUgbmVjZXNzYXJpbHkgZXhpc3Qgb24gdGhlIHByaW1hcnkgc2lkZSBhbmQg aW4KKwkJICogdHVybiBjb25mb3JtIHRvIHRoZSBkb21haW4uICBDb25zZXF1ZW50bHksIHdl IG5lZWQgbm90IHRyZWF0CisJCSAqIGRvbWFpbnMgc3BlY2lhbGx5IGhlcmUuCisJCSAqCisJ CSAqIFNpbmNlIHdlIHJlcXVpcmUgdGhhdCBhbGwgY29sbGF0aW9ucyBzaGFyZSB0aGUgc2Ft ZSBub3Rpb24gb2YKKwkJICogZXF1YWxpdHkgKHdoaWNoIHRoZXkgZG8sIGJlY2F1c2UgdGV4 dGVxIHJlZHVjZXMgdG8gYml0d2lzZQorCQkgKiBlcXVhbGl0eSksIHdlIGRvbid0IGNvbXBh cmUgY29sbGF0aW9uIGhlcmUuCisJCSAqCisJCSAqIFdlIG5lZWQgbm90IGRpcmVjdGx5IGNv bnNpZGVyIHRoZSBQSyB0eXBlLiAgSXQncyBuZWNlc3NhcmlseQorCQkgKiBiaW5hcnkgY29l cmNpYmxlIHRvIHRoZSBvcGNpbnR5cGUgb2YgdGhlIHVuaXF1ZSBpbmRleCBjb2x1bW4sCisJ CSAqIGFuZCByaV90cmlnZ2Vycy5jIHdpbGwgb25seSBkZWFsIHdpdGggUEsgZGF0dW1zIGlu IHRlcm1zIG9mCisJCSAqIHRoYXQgb3BjaW50eXBlLiAgQ2hhbmdpbmcgdGhlIG9wY2ludHlw ZSBhbHNvIGNoYW5nZXMgcGZlcW9wLgorCQkgKi8KKwkJKm9sZF9jaGVja19vayA9IChuZXdf cGF0aHR5cGUgPT0gb2xkX3BhdGh0eXBlICYmCisJCQkJCQluZXdfY2FzdGZ1bmMgPT0gb2xk X2Nhc3RmdW5jICYmCisJCQkJCQkoIUlzUG9seW1vcnBoaWNUeXBlKHBmZXFvcF9yaWdodCkg fHwKKwkJCQkJCSBuZXdfZmt0eXBlID09IG9sZF9ma3R5cGUpKTsKKworCX0KKworCSpwZmVx b3BPdXQgPSBwZmVxb3A7CisJKnBwZXFvcE91dCA9IHBwZXFvcDsKKwkqZmZlcW9wT3V0ID0g ZmZlcW9wOworfQorCisvKgorICogRmluZEZrUGVyaW9kT3BlcnNBbmRQcm9jcyAtCisgKgor ICogTG9va3MgdXAgdGhlIG9wZXIgYW5kIHByb2Mgb2lkcyBmb3IgY29uZmtwZXJpb2RvcGVy b2lkcyBhbmQgY29uZmtwZXJpb2Rwcm9jb2lkcy4KKyAqIFRoZXNlIGFyZSB1c2VkIGJ5IGZv cmVpZ24ga2V5cyB3aXRoIGEgUEVSSU9EIGVsZW1lbnQuCisgKi8KK3ZvaWQKK0ZpbmRGS1Bl cmlvZE9wZXJzQW5kUHJvY3MoT2lkIG9wY2xhc3MsCisJCQkJCQkgIE9pZCAqcGVyaW9kb3Bl cm9pZCwKKwkJCQkJCSAgT2lkICpwZXJpb2Rwcm9jb2lkKQoreworCU9pZAlvcGZhbWlseTsK KwlPaWQJb3BjaW50eXBlOworCU9pZAlhZ2dyZXR0eXBlOworCU9pZAlmdW5jaWQgPSBJbnZh bGlkT2lkOworCVN0cmF0ZWd5TnVtYmVyIHN0cmF0ID0gUlRDb250YWluZWRCeVN0cmF0ZWd5 TnVtYmVyOworCisJLyogRmlyc3QgbG9vayB1cCB0aGUgc3VwcG9ydCBwcm9jIGZvciBhZ2dy ZWdhdGlvbi4gKi8KKwlpZiAoZ2V0X29wY2xhc3Nfb3BmYW1pbHlfYW5kX2lucHV0X3R5cGUo b3BjbGFzcywgJm9wZmFtaWx5LCAmb3BjaW50eXBlKSkKKwkJZnVuY2lkID0gZ2V0X29wZmFt aWx5X3Byb2Mob3BmYW1pbHksIG9wY2ludHlwZSwgb3BjaW50eXBlLCBHSVNUX1JFRkVSRU5D RURfQUdHX1BST0MpOworCisJaWYgKCFPaWRJc1ZhbGlkKGZ1bmNpZCkpCisJCWVyZXBvcnQo RVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkg ZXJybXNnKCJubyBzdXBwb3J0IGZ1bmMgJXUgZm91bmQgZm9yIEZPUkVJR04gS0VZIGNvbnN0 cmFpbnQiLCBHSVNUX1JFRkVSRU5DRURfQUdHX1BST0MpLAorCQkJCSBlcnJoaW50KCJEZWZp bmUgYSByZWZlcmVuY2VkYWdnIHN1cHBvcnQgZnVuY3Rpb24gZm9yIHlvdXIgR2lTVCBvcGNs YXNzLiIpKSk7CisKKwkqcGVyaW9kcHJvY29pZCA9IGZ1bmNpZDsKKworCS8qIExvb2sgdXAg dGhlIGZ1bmN0aW9uJ3MgcmV0dHlwZS4gKi8KKwlhZ2dyZXR0eXBlID0gZ2V0X2Z1bmNfcmV0 dHlwZShmdW5jaWQpOworCisJLyoKKwkgKiBOb3cgbG9vayB1cCB0aGUgQ29udGFpbmVkQnkg b3BlcmF0b3IuCisJICogSXRzIGxlZnQgYXJnIG11c3QgYmUgdGhlIHR5cGUgb2YgdGhlIGNv bHVtbiAob3IgcmF0aGVyIG9mIHRoZSBvcGNsYXNzKS4KKwkgKiBJdHMgcmlnaHQgYXJnIG11 c3QgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIHRoZSBzdXBwb3J0IHByb2MuCisJICovCisJ R2V0T3BlcmF0b3JGcm9tQ2Fub25pY2FsU3RyYXRlZ3kob3BjbGFzcywKKwkJCQkJCQkJCSBh Z2dyZXR0eXBlLAorCQkJCQkJCQkJICJjb250YWluZWQgYnkiLAorCQkJCQkJCQkJICJGT1JF SUdOIEtFWSBjb25zdHJhaW50IiwKKwkJCQkJCQkJCSBwZXJpb2RvcGVyb2lkLAorCQkJCQkJ CQkJICZzdHJhdCk7Cit9CisKIC8qCiAgKiBXaGVuIHRoZSBwYXJlbnQgb2YgYSBwYXJ0aXRp b24gcmVjZWl2ZXMgW3RoZSByZWZlcmVuY2luZyBzaWRlIG9mXSBhIGZvcmVpZ24KICAqIGtl eSwgd2UgbXVzdCBwcm9wYWdhdGUgdGhhdCBmb3JlaWduIGtleSB0byB0aGUgcGFydGl0aW9u LiAgSG93ZXZlciwgdGhlCkBAIC0xMTQzNiw3ICsxMTYzMywxMSBAQCBBVEV4ZWNBbHRlckNv bnN0clJlY3Vyc2UoQ29uc3RyYWludCAqY21kY29uLCBSZWxhdGlvbiBjb25yZWwsIFJlbGF0 aW9uIHRncmVsLAogCQkJaWYgKHRnZm9ybS0+dGdmb2lkICE9IEZfUklfRktFWV9OT0FDVElP Tl9ERUwgJiYKIAkJCQl0Z2Zvcm0tPnRnZm9pZCAhPSBGX1JJX0ZLRVlfTk9BQ1RJT05fVVBE ICYmCiAJCQkJdGdmb3JtLT50Z2ZvaWQgIT0gRl9SSV9GS0VZX0NIRUNLX0lOUyAmJgotCQkJ CXRnZm9ybS0+dGdmb2lkICE9IEZfUklfRktFWV9DSEVDS19VUEQpCisJCQkJdGdmb3JtLT50 Z2ZvaWQgIT0gRl9SSV9GS0VZX0NIRUNLX1VQRCAmJgorCQkJCXRnZm9ybS0+dGdmb2lkICE9 IEZfVFJJX0ZLRVlfTk9BQ1RJT05fREVMICYmCisJCQkJdGdmb3JtLT50Z2ZvaWQgIT0gRl9U UklfRktFWV9OT0FDVElPTl9VUEQgJiYKKwkJCQl0Z2Zvcm0tPnRnZm9pZCAhPSBGX1RSSV9G S0VZX0NIRUNLX0lOUyAmJgorCQkJCXRnZm9ybS0+dGdmb2lkICE9IEZfVFJJX0ZLRVlfQ0hF Q0tfVVBEKQogCQkJCWNvbnRpbnVlOwogCiAJCQl0Z0NvcHlUdXBsZSA9IGhlYXBfY29weXR1 cGxlKHRndHVwbGUpOwpAQCAtMTE2ODMsNyArMTE4ODQsNiBAQCBBVEV4ZWNWYWxpZGF0ZUNv bnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBjaGFyICpjb25zdHJOYW1l LAogCXJldHVybiBhZGRyZXNzOwogfQogCi0KIC8qCiAgKiB0cmFuc2Zvcm1Db2x1bW5OYW1l TGlzdCAtIHRyYW5zZm9ybSBsaXN0IG9mIGNvbHVtbiBuYW1lcwogICoKQEAgLTExNzQ5LDcg KzExOTQ5LDkgQEAgdHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QoT2lkIHJlbElkLCBMaXN0ICpj b2xMaXN0LAogc3RhdGljIGludAogdHJhbnNmb3JtRmtleUdldFByaW1hcnlLZXkoUmVsYXRp b24gcGtyZWwsIE9pZCAqaW5kZXhPaWQsCiAJCQkJCQkgICBMaXN0ICoqYXR0bmFtZWxpc3Qs CisJCQkJCQkgICBOb2RlICoqcGtfcGVyaW9kLAogCQkJCQkJICAgaW50MTYgKmF0dG51bXMs IE9pZCAqYXR0dHlwaWRzLAorCQkJCQkJICAgaW50MTYgKnBlcmlvZGF0dG51bXMsIE9pZCAq cGVyaW9kYXR0dHlwaWRzLAogCQkJCQkJICAgT2lkICpvcGNsYXNzZXMpCiB7CiAJTGlzdAkg ICAqaW5kZXhvaWRsaXN0OwpAQCAtMTE4MTQsMzYgKzEyMDE2LDU1IEBAIHRyYW5zZm9ybUZr ZXlHZXRQcmltYXJ5S2V5KFJlbGF0aW9uIHBrcmVsLCBPaWQgKmluZGV4T2lkLAogCiAJLyoK IAkgKiBOb3cgYnVpbGQgdGhlIGxpc3Qgb2YgUEsgYXR0cmlidXRlcyBmcm9tIHRoZSBpbmRr ZXkgZGVmaW5pdGlvbiAod2UKLQkgKiBhc3N1bWUgYSBwcmltYXJ5IGtleSBjYW5ub3QgaGF2 ZSBleHByZXNzaW9uYWwgZWxlbWVudHMpCisJICogYXNzdW1lIGEgcHJpbWFyeSBrZXkgY2Fu bm90IGhhdmUgZXhwcmVzc2lvbmFsIGVsZW1lbnRzLCB1bmxlc3MgaXQKKwkgKiBoYXMgYSBQ RVJJT0QpCiAJICovCiAJKmF0dG5hbWVsaXN0ID0gTklMOwogCWZvciAoaSA9IDA7IGkgPCBp bmRleFN0cnVjdC0+aW5kbmtleWF0dHM7IGkrKykKIAl7CiAJCWludAkJCXBrYXR0bm8gPSBp bmRleFN0cnVjdC0+aW5ka2V5LnZhbHVlc1tpXTsKIAotCQlhdHRudW1zW2ldID0gcGthdHRu bzsKLQkJYXR0dHlwaWRzW2ldID0gYXR0bnVtVHlwZUlkKHBrcmVsLCBwa2F0dG5vKTsKLQkJ b3BjbGFzc2VzW2ldID0gaW5kY2xhc3MtPnZhbHVlc1tpXTsKLQkJKmF0dG5hbWVsaXN0ID0g bGFwcGVuZCgqYXR0bmFtZWxpc3QsCi0JCQkJCQkJICAgbWFrZVN0cmluZyhwc3RyZHVwKE5h bWVTdHIoKmF0dG51bUF0dE5hbWUocGtyZWwsIHBrYXR0bm8pKSkpKTsKKwkJaWYgKGkgPT0g aW5kZXhTdHJ1Y3QtPmluZG5rZXlhdHRzIC0gMSAmJiBpbmRleFN0cnVjdC0+aW5kaXNleGNs dXNpb24pCisJCXsKKwkJCS8qIHdlIGhhdmUgYSByYW5nZSAqLworCQkJLyogVGhlIGNhbGxl ciB3aWxsIHNldCBhdHRudW1zW2ldICovCisJCQlwZXJpb2RhdHRudW1zWzBdID0gcGthdHRu bzsKKwkJCXBlcmlvZGF0dHR5cGlkc1swXSA9IGF0dG51bVR5cGVJZChwa3JlbCwgcGthdHRu byk7CisJCQlvcGNsYXNzZXNbaV0gPSBpbmRjbGFzcy0+dmFsdWVzW2ldOworCisJCQlBc3Nl cnQoKnBrX3BlcmlvZCA9PSBOVUxMKTsKKwkJCSpwa19wZXJpb2QgPSAoTm9kZSAqKSBtYWtl U3RyaW5nKHBzdHJkdXAoTmFtZVN0cigqYXR0bnVtQXR0TmFtZShwa3JlbCwgcGthdHRubykp KSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlhdHRudW1zW2ldID0gcGthdHRubzsKKwkJCWF0 dHR5cGlkc1tpXSA9IGF0dG51bVR5cGVJZChwa3JlbCwgcGthdHRubyk7CisJCQlvcGNsYXNz ZXNbaV0gPSBpbmRjbGFzcy0+dmFsdWVzW2ldOworCQkJKmF0dG5hbWVsaXN0ID0gbGFwcGVu ZCgqYXR0bmFtZWxpc3QsCisJCQkJCQkJCSAgbWFrZVN0cmluZyhwc3RyZHVwKE5hbWVTdHIo KmF0dG51bUF0dE5hbWUocGtyZWwsIHBrYXR0bm8pKSkpKTsKKwkJfQogCX0KIAogCVJlbGVh c2VTeXNDYWNoZShpbmRleFR1cGxlKTsKIAotCXJldHVybiBpOworCWlmIChpbmRleFN0cnVj dC0+aW5kaXNleGNsdXNpb24pIHJldHVybiBpIC0gMTsKKwllbHNlIHJldHVybiBpOwogfQog CiAvKgogICogdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMgLQogICoKICAqCU1ha2Ugc3VyZSB0 aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIGEgcmVmZXJlbmNlZCB0YWJsZSBiZWxvbmcgdG8gYSB1 bmlxdWUKLSAqCShvciBwcmltYXJ5IGtleSkgY29uc3RyYWludC4gIFJldHVybiB0aGUgT0lE IG9mIHRoZSBpbmRleCBzdXBwb3J0aW5nCi0gKgl0aGUgY29uc3RyYWludCwgYXMgd2VsbCBh cyB0aGUgb3BjbGFzc2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgaW5kZXgKKyAqCShvciBwcmlt YXJ5IGtleSkgY29uc3RyYWludC4gIE9yIGlmIHRoaXMgaXMgYSB0ZW1wb3JhbCBmb3JlaWdu IGtleQorICoJdGhlIHByaW1hcnkga2V5IHNob3VsZCBiZSBhbiBleGNsdXNpb24gY29uc3Ry YWludCBpbnN0ZWFkLgorICoJUmV0dXJuIHRoZSBPSUQgb2YgdGhlIGluZGV4IHN1cHBvcnRp bmcgdGhlIGNvbnN0cmFpbnQsCisgKglhcyB3ZWxsIGFzIHRoZSBvcGNsYXNzZXMgYXNzb2Np YXRlZCB3aXRoIHRoZSBpbmRleAogICoJY29sdW1ucy4KICAqLwogc3RhdGljIE9pZAogdHJh bnNmb3JtRmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJCQkJCQlpbnQgbnVtYXR0 cnMsIGludDE2ICphdHRudW1zLAorCQkJCQkJYm9vbCBpc190ZW1wb3JhbCwgaW50MTYgcGVy aW9kYXR0bnVtLAogCQkJCQkJT2lkICpvcGNsYXNzZXMpIC8qIG91dHB1dCBwYXJhbWV0ZXIg Ki8KIHsKIAlPaWQJCQlpbmRleG9pZCA9IEludmFsaWRPaWQ7CkBAIC0xMTg3MCw2ICsxMjA5 MSwxMCBAQCB0cmFuc2Zvcm1Ga2V5Q2hlY2tBdHRycyhSZWxhdGlvbiBwa3JlbCwKIAkJCQkJ CShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9GT1JFSUdOX0tFWSksCiAJCQkJCQkgZXJybXNn KCJmb3JlaWduIGtleSByZWZlcmVuY2VkLWNvbHVtbnMgbGlzdCBtdXN0IG5vdCBjb250YWlu IGR1cGxpY2F0ZXMiKSkpOwogCQl9CisJCWlmIChpc190ZW1wb3JhbCAmJiBhdHRudW1zW2ld ID09IHBlcmlvZGF0dG51bSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9GT1JFSUdOX0tFWSksCisJCQkJCSBlcnJtc2coImZvcmVpZ24ga2V5 IHJlZmVyZW5jZWQtY29sdW1ucyBsaXN0IG11c3Qgbm90IGNvbnRhaW4gZHVwbGljYXRlcyIp KSk7CiAJfQogCiAJLyoKQEAgLTExODkxLDEyICsxMjExNiwxNiBAQCB0cmFuc2Zvcm1Ga2V5 Q2hlY2tBdHRycyhSZWxhdGlvbiBwa3JlbCwKIAkJaW5kZXhTdHJ1Y3QgPSAoRm9ybV9wZ19p bmRleCkgR0VUU1RSVUNUKGluZGV4VHVwbGUpOwogCiAJCS8qCi0JCSAqIE11c3QgaGF2ZSB0 aGUgcmlnaHQgbnVtYmVyIG9mIGNvbHVtbnM7IG11c3QgYmUgdW5pcXVlIGFuZCBub3QgYQot CQkgKiBwYXJ0aWFsIGluZGV4OyBmb3JnZXQgaXQgaWYgdGhlcmUgYXJlIGFueSBleHByZXNz aW9ucywgdG9vLiBJbnZhbGlkCi0JCSAqIGluZGV4ZXMgYXJlIG91dCBhcyB3ZWxsLgorCQkg KiBNdXN0IGhhdmUgdGhlIHJpZ2h0IG51bWJlciBvZiBjb2x1bW5zOyBtdXN0IGJlIHVuaXF1 ZQorCQkgKiAob3IgaWYgdGVtcG9yYWwgdGhlbiBleGNsdXNpb24gaW5zdGVhZCkgYW5kIG5v dCBhCisJCSAqIHBhcnRpYWwgaW5kZXg7IGZvcmdldCBpdCBpZiB0aGVyZSBhcmUgYW55IGV4 cHJlc3Npb25zLCB0b28uCisJCSAqIEludmFsaWQgaW5kZXhlcyBhcmUgb3V0IGFzIHdlbGwu CiAJCSAqLwotCQlpZiAoaW5kZXhTdHJ1Y3QtPmluZG5rZXlhdHRzID09IG51bWF0dHJzICYm Ci0JCQlpbmRleFN0cnVjdC0+aW5kaXN1bmlxdWUgJiYKKwkJaWYgKChpc190ZW1wb3JhbAor CQkJICA/IChpbmRleFN0cnVjdC0+aW5kbmtleWF0dHMgPT0gbnVtYXR0cnMgKyAxICYmCisJ CQkJIGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbikKKwkJCSAgOiAoaW5kZXhTdHJ1Y3Qt PmluZG5rZXlhdHRzID09IG51bWF0dHJzICYmCisJCQkJIGluZGV4U3RydWN0LT5pbmRpc3Vu aXF1ZSkpICYmCiAJCQlpbmRleFN0cnVjdC0+aW5kaXN2YWxpZCAmJgogCQkJaGVhcF9hdHRp c251bGwoaW5kZXhUdXBsZSwgQW51bV9wZ19pbmRleF9pbmRwcmVkLCBOVUxMKSAmJgogCQkJ aGVhcF9hdHRpc251bGwoaW5kZXhUdXBsZSwgQW51bV9wZ19pbmRleF9pbmRleHBycywgTlVM TCkpCkBAIC0xMTkzNCw2ICsxMjE2MywxOSBAQCB0cmFuc2Zvcm1Ga2V5Q2hlY2tBdHRycyhS ZWxhdGlvbiBwa3JlbCwKIAkJCQlpZiAoIWZvdW5kKQogCQkJCQlicmVhazsKIAkJCX0KKwkJ CWlmIChmb3VuZCAmJiBpc190ZW1wb3JhbCkKKwkJCXsKKwkJCQlmb3VuZCA9IGZhbHNlOwor CQkJCWZvciAoaiA9IDA7IGogPCBudW1hdHRycyArIDE7IGorKykKKwkJCQl7CisJCQkJCWlm IChwZXJpb2RhdHRudW0gPT0gaW5kZXhTdHJ1Y3QtPmluZGtleS52YWx1ZXNbal0pCisJCQkJ CXsKKwkJCQkJCW9wY2xhc3Nlc1tudW1hdHRyc10gPSBpbmRjbGFzcy0+dmFsdWVzW2pdOwor CQkJCQkJZm91bmQgPSB0cnVlOworCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQl9CisJCQl9 CiAKIAkJCS8qCiAJCQkgKiBSZWZ1c2UgdG8gdXNlIGEgZGVmZXJyYWJsZSB1bmlxdWUvcHJp bWFyeSBrZXkuICBUaGlzIGlzIHBlciBTUUwKQEAgLTEyMDQzLDcgKzEyMjg1LDggQEAgdmFs aWRhdGVGb3JlaWduS2V5Q29uc3RyYWludChjaGFyICpjb25uYW1lLAogCQkJCQkJCSBSZWxh dGlvbiByZWwsCiAJCQkJCQkJIFJlbGF0aW9uIHBrcmVsLAogCQkJCQkJCSBPaWQgcGtpbmRP aWQsCi0JCQkJCQkJIE9pZCBjb25zdHJhaW50T2lkKQorCQkJCQkJCSBPaWQgY29uc3RyYWlu dE9pZCwKKwkJCQkJCQkgYm9vbCB0ZW1wb3JhbCkKIHsKIAlUdXBsZVRhYmxlU2xvdCAqc2xv dDsKIAlUYWJsZVNjYW5EZXNjIHNjYW47CkBAIC0xMjA3Miw4ICsxMjMxNSwxMCBAQCB2YWxp ZGF0ZUZvcmVpZ25LZXlDb25zdHJhaW50KGNoYXIgKmNvbm5hbWUsCiAJLyoKIAkgKiBTZWUg aWYgd2UgY2FuIGRvIGl0IHdpdGggYSBzaW5nbGUgTEVGVCBKT0lOIHF1ZXJ5LiAgQSBmYWxz ZSByZXN1bHQKIAkgKiBpbmRpY2F0ZXMgd2UgbXVzdCBwcm9jZWVkIHdpdGggdGhlIGZpcmUt dGhlLXRyaWdnZXIgbWV0aG9kLgorCSAqIFdlIGNhbid0IGRvIGEgTEVGVCBKT0lOIGZvciB0 ZW1wb3JhbCBGS3MgeWV0LAorCSAqIGJ1dCB3ZSBjYW4gb25jZSB3ZSBzdXBwb3J0IHRlbXBv cmFsIGxlZnQgam9pbnMuCiAJICovCi0JaWYgKFJJX0luaXRpYWxfQ2hlY2soJnRyaWcsIHJl bCwgcGtyZWwpKQorCWlmICghdGVtcG9yYWwgJiYgUklfSW5pdGlhbF9DaGVjaygmdHJpZywg cmVsLCBwa3JlbCkpCiAJCXJldHVybjsKIAogCS8qCkBAIC0xMjE0Miw2ICsxMjM4Nyw3IEBA IENyZWF0ZUZLQ2hlY2tUcmlnZ2VyKE9pZCBteVJlbE9pZCwgT2lkIHJlZlJlbE9pZCwgQ29u c3RyYWludCAqZmtjb25zdHJhaW50LAogewogCU9iamVjdEFkZHJlc3MgdHJpZ0FkZHJlc3M7 CiAJQ3JlYXRlVHJpZ1N0bXQgKmZrX3RyaWdnZXI7CisJYm9vbCBpc190ZW1wb3JhbCA9IGZr Y29uc3RyYWludC0+ZmtfcGVyaW9kOwogCiAJLyoKIAkgKiBOb3RlOiBmb3IgYSBzZWxmLXJl ZmVyZW50aWFsIEZLIChyZWZlcmVuY2luZyBhbmQgcmVmZXJlbmNlZCB0YWJsZXMgYXJlCkBA IC0xMjE2MSwxMiArMTI0MDcsMTggQEAgQ3JlYXRlRktDaGVja1RyaWdnZXIoT2lkIG15UmVs T2lkLCBPaWQgcmVmUmVsT2lkLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsCiAJLyogRWl0 aGVyIE9OIElOU0VSVCBvciBPTiBVUERBVEUgKi8KIAlpZiAob25faW5zZXJ0KQogCXsKLQkJ ZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9jaGVja19p bnMiKTsKKwkJaWYgKGlzX3RlbXBvcmFsKQorCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBT eXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfY2hlY2tfaW5zIik7CisJCWVsc2UKKwkJCWZrX3Ry aWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfY2hlY2tfaW5zIik7 CiAJCWZrX3RyaWdnZXItPmV2ZW50cyA9IFRSSUdHRVJfVFlQRV9JTlNFUlQ7CiAJfQogCWVs c2UKIAl7Ci0JCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZL ZXlfY2hlY2tfdXBkIik7CisJCWlmIChpc190ZW1wb3JhbCkKKwkJCWZrX3RyaWdnZXItPmZ1 bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X2NoZWNrX3VwZCIpOworCQllbHNl CisJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X2No ZWNrX3VwZCIpOwogCQlma190cmlnZ2VyLT5ldmVudHMgPSBUUklHR0VSX1RZUEVfVVBEQVRF OwogCX0KIApAQCAtMTIyMjQsMzcgKzEyNDc2LDY4IEBAIGNyZWF0ZUZvcmVpZ25LZXlBY3Rp b25UcmlnZ2VycyhSZWxhdGlvbiByZWwsIE9pZCByZWZSZWxPaWQsIENvbnN0cmFpbnQgKmZr Y29uc3RyCiAJZmtfdHJpZ2dlci0+d2hlbkNsYXVzZSA9IE5VTEw7CiAJZmtfdHJpZ2dlci0+ dHJhbnNpdGlvblJlbHMgPSBOSUw7CiAJZmtfdHJpZ2dlci0+Y29uc3RycmVsID0gTlVMTDsK LQlzd2l0Y2ggKGZrY29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbikKKwlpZiAoZmtjb25zdHJh aW50LT5ma19wZXJpb2QgIT0gTlVMTCkKIAl7Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9OX05P QUNUSU9OOgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZrY29uc3RyYWludC0+ZGVm ZXJyYWJsZTsKLQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZrY29uc3RyYWludC0+ aW5pdGRlZmVycmVkOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFt ZSgiUklfRktleV9ub2FjdGlvbl9kZWwiKTsKLQkJCWJyZWFrOwotCQljYXNlIEZLQ09OU1RS X0FDVElPTl9SRVNUUklDVDoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsK LQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9yZXN0cmljdF9kZWwiKTsKLQkJ CWJyZWFrOwotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9DQVNDQURFOgotCQkJZmtfdHJpZ2dl ci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0g ZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9G S2V5X2Nhc2NhZGVfZGVsIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05f U0VUTlVMTDoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKLQkJCWZrX3Ry aWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUg PSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9zZXRudWxsX2RlbCIpOwotCQkJYnJlYWs7Ci0J CWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6Ci0JCQlma190cmlnZ2VyLT5kZWZl cnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsK LQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0 ZGVmYXVsdF9kZWwiKTsKLQkJCWJyZWFrOwotCQlkZWZhdWx0OgotCQkJZWxvZyhFUlJPUiwg InVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLAotCQkJCSAoaW50KSBma2NvbnN0 cmFpbnQtPmZrX2RlbF9hY3Rpb24pOwotCQkJYnJlYWs7CisJCS8qIFRlbXBvcmFsIGZvcmVp Z24ga2V5cyAqLworCQlzd2l0Y2ggKGZrY29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbikKKwkJ eworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fTk9BQ1RJT046CisJCQkJZmtfdHJpZ2dlci0+ ZGVmZXJyYWJsZSA9IGZrY29uc3RyYWludC0+ZGVmZXJyYWJsZTsKKwkJCQlma190cmlnZ2Vy LT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJlZDsKKwkJCQlma190 cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklfRktleV9ub2FjdGlvbl9k ZWwiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1JFU1RSSUNUOgor CQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5p bml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3Rl bUZ1bmNOYW1lKCJUUklfRktleV9yZXN0cmljdF9kZWwiKTsKKwkJCQlicmVhazsKKwkJCWNh c2UgRktDT05TVFJfQUNUSU9OX0NBU0NBREU6CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9T RVROVUxMOgorCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUREVGQVVMVDoKKwkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAorCQkJCQkJIGVycm1zZygiYWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFs IGZvcmVpZ24ga2V5cyIpKSk7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2co RVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwKKwkJCQkJIChpbnQp IGZrY29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbik7CisJCQkJYnJlYWs7CisJCX0KKwl9CisJ ZWxzZQorCXsKKwkJc3dpdGNoIChma2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rpb24pCisJCXsK KwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX05PQUNUSU9OOgorCQkJCWZrX3RyaWdnZXItPmRl ZmVycmFibGUgPSBma2NvbnN0cmFpbnQtPmRlZmVycmFibGU7CisJCQkJZmtfdHJpZ2dlci0+ aW5pdGRlZmVycmVkID0gZmtjb25zdHJhaW50LT5pbml0ZGVmZXJyZWQ7CisJCQkJZmtfdHJp Z2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9ub2FjdGlvbl9kZWwi KTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1JFU1RSSUNUOgorCQkJ CWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0 ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1 bmNOYW1lKCJSSV9GS2V5X3Jlc3RyaWN0X2RlbCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBG S0NPTlNUUl9BQ1RJT05fQ0FTQ0FERToKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0g ZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtf dHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9jYXNjYWRlX2Rl bCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUTlVMTDoKKwkJ CQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5p dGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1G dW5jTmFtZSgiUklfRktleV9zZXRudWxsX2RlbCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBG S0NPTlNUUl9BQ1RJT05fU0VUREVGQVVMVDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxl ID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJ ZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9zZXRkZWZh dWx0X2RlbCIpOworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAi dW5yZWNvZ25pemVkIEZLIGFjdGlvbiB0eXBlOiAlZCIsCisJCQkJCSAoaW50KSBma2NvbnN0 cmFpbnQtPmZrX2RlbF9hY3Rpb24pOworCQkJCWJyZWFrOworCQl9CiAJfQogCiAJdHJpZ0Fk ZHJlc3MgPSBDcmVhdGVUcmlnZ2VyKGZrX3RyaWdnZXIsIE5VTEwsIHJlZlJlbE9pZCwKQEAg LTEyMjg0LDM3ICsxMjU2Nyw2OCBAQCBjcmVhdGVGb3JlaWduS2V5QWN0aW9uVHJpZ2dlcnMo UmVsYXRpb24gcmVsLCBPaWQgcmVmUmVsT2lkLCBDb25zdHJhaW50ICpma2NvbnN0cgogCWZr X3RyaWdnZXItPndoZW5DbGF1c2UgPSBOVUxMOwogCWZrX3RyaWdnZXItPnRyYW5zaXRpb25S ZWxzID0gTklMOwogCWZrX3RyaWdnZXItPmNvbnN0cnJlbCA9IE5VTEw7Ci0Jc3dpdGNoIChm a2NvbnN0cmFpbnQtPmZrX3VwZF9hY3Rpb24pCisJaWYgKGZrY29uc3RyYWludC0+ZmtfcGVy aW9kICE9IE5VTEwpCiAJewotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9OT0FDVElPTjoKLQkJ CWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBma2NvbnN0cmFpbnQtPmRlZmVycmFibGU7Ci0J CQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJl ZDsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlf bm9hY3Rpb25fdXBkIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fUkVT VFJJQ1Q6Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmln Z2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0g U3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfcmVzdHJpY3RfdXBkIik7Ci0JCQlicmVhazsKLQkJ Y2FzZSBGS0NPTlNUUl9BQ1RJT05fQ0FTQ0FERToKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFi bGUgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJ ZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9jYXNjYWRl X3VwZCIpOwotCQkJYnJlYWs7Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6Ci0J CQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0 ZGVmZXJyZWQgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVu Y05hbWUoIlJJX0ZLZXlfc2V0bnVsbF91cGQiKTsKLQkJCWJyZWFrOwotCQljYXNlIEZLQ09O U1RSX0FDVElPTl9TRVRERUZBVUxUOgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZh bHNlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7Ci0JCQlma190cmln Z2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3NldGRlZmF1bHRfdXBk Iik7Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6 ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwKLQkJCQkgKGludCkgZmtjb25zdHJhaW50LT5ma191 cGRfYWN0aW9uKTsKLQkJCWJyZWFrOworCQkvKiBUZW1wb3JhbCBmb3JlaWduIGtleXMgKi8K KwkJc3dpdGNoIChma2NvbnN0cmFpbnQtPmZrX3VwZF9hY3Rpb24pCisJCXsKKwkJCWNhc2Ug RktDT05TVFJfQUNUSU9OX05PQUNUSU9OOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUg PSBma2NvbnN0cmFpbnQtPmRlZmVycmFibGU7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVy cmVkID0gZmtjb25zdHJhaW50LT5pbml0ZGVmZXJyZWQ7CisJCQkJZmtfdHJpZ2dlci0+ZnVu Y25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfbm9hY3Rpb25fdXBkIik7CisJCQkJ YnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9SRVNUUklDVDoKKwkJCQlma190cmln Z2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVk ID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgi VFJJX0ZLZXlfcmVzdHJpY3RfdXBkIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RS X0FDVElPTl9DQVNDQURFOgorCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUTlVMTDoKKwkJ CWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6CisJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJ CSBlcnJtc2coImFjdGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtl eXMiKSkpOworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAidW5y ZWNvZ25pemVkIEZLIGFjdGlvbiB0eXBlOiAlZCIsCisJCQkJCSAoaW50KSBma2NvbnN0cmFp bnQtPmZrX3VwZF9hY3Rpb24pOworCQkJCWJyZWFrOworCQl9CisJfQorCWVsc2UKKwl7CisJ CXN3aXRjaCAoZmtjb25zdHJhaW50LT5ma191cGRfYWN0aW9uKQorCQl7CisJCQljYXNlIEZL Q09OU1RSX0FDVElPTl9OT0FDVElPTjoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0g Zmtjb25zdHJhaW50LT5kZWZlcnJhYmxlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJl ZCA9IGZrY29uc3RyYWludC0+aW5pdGRlZmVycmVkOworCQkJCWZrX3RyaWdnZXItPmZ1bmNu YW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfbm9hY3Rpb25fdXBkIik7CisJCQkJYnJl YWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9SRVNUUklDVDoKKwkJCQlma190cmlnZ2Vy LT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0g ZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklf RktleV9yZXN0cmljdF91cGQiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNU SU9OX0NBU0NBREU6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJ CWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1 bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfY2FzY2FkZV91cGQiKTsKKwkJCQli cmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6CisJCQkJZmtfdHJpZ2dl ci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9 IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJ X0ZLZXlfc2V0bnVsbF91cGQiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNU SU9OX1NFVERFRkFVTFQ6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwor CQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXIt PmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0ZGVmYXVsdF91cGQiKTsK KwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXpl ZCBGSyBhY3Rpb24gdHlwZTogJWQiLAorCQkJCQkgKGludCkgZmtjb25zdHJhaW50LT5ma191 cGRfYWN0aW9uKTsKKwkJCQlicmVhazsKKwkJfQogCX0KIAogCXRyaWdBZGRyZXNzID0gQ3Jl YXRlVHJpZ2dlcihma190cmlnZ2VyLCBOVUxMLCByZWZSZWxPaWQsCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVu Y3MuYwppbmRleCBmNTJhZTNmYzk3Li4zYmRkNDZhNDEzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9ub2Rlcy9vdXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNz LmMKQEAgLTc5NCw3ICs3OTQsOSBAQCBfb3V0Q29uc3RyYWludChTdHJpbmdJbmZvIHN0ciwg Y29uc3QgQ29uc3RyYWludCAqbm9kZSkKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoc3Ry LCAiRk9SRUlHTl9LRVkiKTsKIAkJCVdSSVRFX05PREVfRklFTEQocGt0YWJsZSk7CiAJCQlX UklURV9OT0RFX0ZJRUxEKGZrX2F0dHJzKTsKKwkJCVdSSVRFX05PREVfRklFTEQoZmtfcGVy aW9kKTsKIAkJCVdSSVRFX05PREVfRklFTEQocGtfYXR0cnMpOworCQkJV1JJVEVfTk9ERV9G SUVMRChwa19wZXJpb2QpOwogCQkJV1JJVEVfQ0hBUl9GSUVMRChma19tYXRjaHR5cGUpOwog CQkJV1JJVEVfQ0hBUl9GSUVMRChma191cGRfYWN0aW9uKTsKIAkJCVdSSVRFX0NIQVJfRklF TEQoZmtfZGVsX2FjdGlvbik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFk ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCmluZGV4IGI2ZWYzMGNl MGQuLjE5MGVjMTRlZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5j cy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCkBAIC00NjIsNyArNDYy LDkgQEAgX3JlYWRDb25zdHJhaW50KHZvaWQpCiAJCWNhc2UgQ09OU1RSX0ZPUkVJR046CiAJ CQlSRUFEX05PREVfRklFTEQocGt0YWJsZSk7CiAJCQlSRUFEX05PREVfRklFTEQoZmtfYXR0 cnMpOworCQkJUkVBRF9OT0RFX0ZJRUxEKGZrX3BlcmlvZCk7CiAJCQlSRUFEX05PREVfRklF TEQocGtfYXR0cnMpOworCQkJUkVBRF9OT0RFX0ZJRUxEKHBrX3BlcmlvZCk7CiAJCQlSRUFE X0NIQVJfRklFTEQoZmtfbWF0Y2h0eXBlKTsKIAkJCVJFQURfQ0hBUl9GSUVMRChma191cGRf YWN0aW9uKTsKIAkJCVJFQURfQ0hBUl9GSUVMRChma19kZWxfYWN0aW9uKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55CmluZGV4IDAyYWRhNDNhOTAuLmM1NjNhNWI3OWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAt NTIxLDEyICs1MjEsMTMgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0 KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJCQkgU2V0 UmVzZXRDbGF1c2UgRnVuY3Rpb25TZXRSZXNldENsYXVzZQogCiAldHlwZSA8bm9kZT4JVGFi bGVFbGVtZW50IFR5cGVkVGFibGVFbGVtZW50IENvbnN0cmFpbnRFbGVtIFRhYmxlRnVuY0Vs ZW1lbnQKLSV0eXBlIDxub2RlPgljb2x1bW5EZWYgY29sdW1uT3B0aW9ucworJXR5cGUgPG5v ZGU+CWNvbHVtbkRlZiBjb2x1bW5PcHRpb25zIG9wdGlvbmFsUGVyaW9kTmFtZQogJXR5cGUg PGRlZmVsdD4JZGVmX2VsZW0gcmVsb3B0aW9uX2VsZW0gb2xkX2FnZ3JfZWxlbSBvcGVyYXRv cl9kZWZfZWxlbQogJXR5cGUgPG5vZGU+CWRlZl9hcmcgY29sdW1uRWxlbSB3aGVyZV9jbGF1 c2Ugd2hlcmVfb3JfY3VycmVudF9jbGF1c2UKIAkJCQlhX2V4cHIgYl9leHByIGNfZXhwciBB ZXhwckNvbnN0IGluZGlyZWN0aW9uX2VsIG9wdF9zbGljZV9ib3VuZAogCQkJCWNvbHVtbnJl ZiBpbl9leHByIGhhdmluZ19jbGF1c2UgZnVuY190YWJsZSB4bWx0YWJsZSBhcnJheV9leHBy CiAJCQkJT3B0V2hlcmVDbGF1c2Ugb3BlcmF0b3JfZGVmX2FyZworJXR5cGUgPGxpc3Q+CW9w dF9jb2x1bW5fYW5kX3BlcmlvZF9saXN0CiAldHlwZSA8bGlzdD4Jcm93c2Zyb21faXRlbSBy b3dzZnJvbV9saXN0IG9wdF9jb2xfZGVmX2xpc3QKICV0eXBlIDxib29sZWFuPiBvcHRfb3Jk aW5hbGl0eSBvcHRfd2l0aG91dF9vdmVybGFwcwogJXR5cGUgPGxpc3Q+CUV4Y2x1c2lvbkNv bnN0cmFpbnRMaXN0IEV4Y2x1c2lvbkNvbnN0cmFpbnRFbGVtCkBAIC03NDQsNyArNzQ1LDcg QEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUs IExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlPVkVSIE9WRVJMQVBTIE9WRVJMQVkg T1ZFUlJJRElORyBPV05FRCBPV05FUgogCiAJUEFSQUxMRUwgUEFSQU1FVEVSIFBBUlNFUiBQ QVJUSUFMIFBBUlRJVElPTiBQQVNTSU5HIFBBU1NXT1JECi0JUExBQ0lORyBQTEFOUyBQT0xJ Q1kKKwlQRVJJT0QgUExBQ0lORyBQTEFOUyBQT0xJQ1kKIAlQT1NJVElPTiBQUkVDRURJTkcg UFJFQ0lTSU9OIFBSRVNFUlZFIFBSRVBBUkUgUFJFUEFSRUQgUFJJTUFSWQogCVBSSU9SIFBS SVZJTEVHRVMgUFJPQ0VEVVJBTCBQUk9DRURVUkUgUFJPQ0VEVVJFUyBQUk9HUkFNIFBVQkxJ Q0FUSU9OCiAKQEAgLTQyMDYsMjEgKzQyMDcsMjMgQEAgQ29uc3RyYWludEVsZW06CiAJCQkJ CQkJCSAgIE5VTEwsIHl5c2Nhbm5lcik7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9 Ci0JCQl8IEZPUkVJR04gS0VZICcoJyBjb2x1bW5MaXN0ICcpJyBSRUZFUkVOQ0VTIHF1YWxp ZmllZF9uYW1lCi0JCQkJb3B0X2NvbHVtbl9saXN0IGtleV9tYXRjaCBrZXlfYWN0aW9ucyBD b25zdHJhaW50QXR0cmlidXRlU3BlYworCQkJfCBGT1JFSUdOIEtFWSAnKCcgY29sdW1uTGlz dCBvcHRpb25hbFBlcmlvZE5hbWUgJyknIFJFRkVSRU5DRVMgcXVhbGlmaWVkX25hbWUKKwkJ CQlvcHRfY29sdW1uX2FuZF9wZXJpb2RfbGlzdCBrZXlfbWF0Y2gga2V5X2FjdGlvbnMgQ29u c3RyYWludEF0dHJpYnV0ZVNwZWMKIAkJCQl7CiAJCQkJCUNvbnN0cmFpbnQgKm4gPSBtYWtl Tm9kZShDb25zdHJhaW50KTsKIAogCQkJCQluLT5jb250eXBlID0gQ09OU1RSX0ZPUkVJR047 CiAJCQkJCW4tPmxvY2F0aW9uID0gQDE7Ci0JCQkJCW4tPnBrdGFibGUgPSAkNzsKKwkJCQkJ bi0+cGt0YWJsZSA9ICQ4OwogCQkJCQluLT5ma19hdHRycyA9ICQ0OwotCQkJCQluLT5wa19h dHRycyA9ICQ4OwotCQkJCQluLT5ma19tYXRjaHR5cGUgPSAkOTsKLQkJCQkJbi0+ZmtfdXBk X2FjdGlvbiA9ICgkMTApLT51cGRhdGVBY3Rpb24tPmFjdGlvbjsKLQkJCQkJbi0+ZmtfZGVs X2FjdGlvbiA9ICgkMTApLT5kZWxldGVBY3Rpb24tPmFjdGlvbjsKLQkJCQkJbi0+ZmtfZGVs X3NldF9jb2xzID0gKCQxMCktPmRlbGV0ZUFjdGlvbi0+Y29sczsKLQkJCQkJcHJvY2Vzc0NB U2JpdHMoJDExLCBAMTEsICJGT1JFSUdOIEtFWSIsCisJCQkJCW4tPmZrX3BlcmlvZCA9ICQ1 OworCQkJCQluLT5wa19hdHRycyA9IGxpbml0aWFsKCQ5KTsKKwkJCQkJbi0+cGtfcGVyaW9k ID0gbHNlY29uZCgkOSk7CisJCQkJCW4tPmZrX21hdGNodHlwZSA9ICQxMDsKKwkJCQkJbi0+ ZmtfdXBkX2FjdGlvbiA9ICgkMTEpLT51cGRhdGVBY3Rpb24tPmFjdGlvbjsKKwkJCQkJbi0+ ZmtfZGVsX2FjdGlvbiA9ICgkMTEpLT5kZWxldGVBY3Rpb24tPmFjdGlvbjsKKwkJCQkJbi0+ ZmtfZGVsX3NldF9jb2xzID0gKCQxMSktPmRlbGV0ZUFjdGlvbi0+Y29sczsKKwkJCQkJcHJv Y2Vzc0NBU2JpdHMoJDEyLCBAMTIsICJGT1JFSUdOIEtFWSIsCiAJCQkJCQkJCSAgICZuLT5k ZWZlcnJhYmxlLCAmbi0+aW5pdGRlZmVycmVkLAogCQkJCQkJCQkgICAmbi0+c2tpcF92YWxp ZGF0aW9uLCBOVUxMLAogCQkJCQkJCQkgICB5eXNjYW5uZXIpOwpAQCAtNDI0OCw2ICs0MjUx LDE2IEBAIGNvbHVtbkxpc3Q6CiAJCQl8IGNvbHVtbkxpc3QgJywnIGNvbHVtbkVsZW0JCQkJ eyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQogCQk7CiAKK29wdGlvbmFsUGVyaW9kTmFtZToK KwkJCScsJyBQRVJJT0QgY29sdW1uRWxlbSB7ICQkID0gJDM7IH0KKwkJCXwgLypFTVBUWSov ICAgICAgICAgICAgICAgeyAkJCA9IE5VTEw7IH0KKwk7CisKK29wdF9jb2x1bW5fYW5kX3Bl cmlvZF9saXN0OgorCQkJJygnIGNvbHVtbkxpc3Qgb3B0aW9uYWxQZXJpb2ROYW1lICcpJwkJ CXsgJCQgPSBsaXN0X21ha2UyKCQyLCAkMyk7IH0KKwkJCXwgLypFTVBUWSovCQkJCQkJCQl7 ICQkID0gbGlzdF9tYWtlMihOSUwsIE5VTEwpOyB9CisJCTsKKwogY29sdW1uRWxlbTogQ29s SWQKIAkJCQl7CiAJCQkJCSQkID0gKE5vZGUgKikgbWFrZVN0cmluZygkMSk7CkBAIC0xNzYw Miw2ICsxNzYxNSw3IEBAIHJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IE9OTFkKIAkJCXwgT1IK IAkJCXwgT1JERVIKKwkJCXwgUEVSSU9ECiAJCQl8IFBMQUNJTkcKIAkJCXwgUFJJTUFSWQog CQkJfCBSRUZFUkVOQ0VTCkBAIC0xNzkxMSw2ICsxNzkyNSw3IEBAIGJhcmVfbGFiZWxfa2V5 d29yZDoKIAkJCXwgUEFSVElUSU9OCiAJCQl8IFBBU1NJTkcKIAkJCXwgUEFTU1dPUkQKKwkJ CXwgUEVSSU9ECiAJCQl8IFBMQUNJTkcKIAkJCXwgUExBTlMKIAkJCXwgUE9MSUNZCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCmluZGV4IDY5NDVkOTliM2QuLmRlYzdiMDg2 NDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCkBAIC0zMSw3ICszMSw5 IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24uaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX2NvbnN0cmFpbnQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZXJhdG9yLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ19yYW5nZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf dHlwZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlY21kcy5oIgogI2luY2x1ZGUgImNv bW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2lu Y2x1ZGUgImV4ZWN1dG9yL3NwaS5oIgpAQCAtNDgsNiArNTAsNyBAQAogI2luY2x1ZGUgInV0 aWxzL2ludmFsLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAi dXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9yYW5nZXR5cGVzLmgiCiAjaW5j bHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvcmxzLmgiCiAjaW5jbHVkZSAi dXRpbHMvcnVsZXV0aWxzLmgiCkBAIC0xMTgsMTIgKzEyMSwxNSBAQCB0eXBlZGVmIHN0cnVj dCBSSV9Db25zdHJhaW50SW5mbwogCWludDE2CQljb25mZGVsc2V0Y29sc1tSSV9NQVhfTlVN S0VZU107IC8qIGF0dG51bXMgb2YgY29scyB0byBzZXQgb24KIAkJCQkJCQkJCQkJCSAqIGRl bGV0ZSAqLwogCWNoYXIJCWNvbmZtYXRjaHR5cGU7CS8qIGZvcmVpZ24ga2V5J3MgbWF0Y2gg dHlwZSAqLworCWJvb2wJCXRlbXBvcmFsOwkJLyogaWYgdGhlIGZvcmVpZ24ga2V5IGlzIHRl bXBvcmFsICovCiAJaW50CQkJbmtleXM7CQkJLyogbnVtYmVyIG9mIGtleSBjb2x1bW5zICov CiAJaW50MTYJCXBrX2F0dG51bXNbUklfTUFYX05VTUtFWVNdOyAvKiBhdHRudW1zIG9mIHJl ZmVyZW5jZWQgY29scyAqLwogCWludDE2CQlma19hdHRudW1zW1JJX01BWF9OVU1LRVlTXTsg LyogYXR0bnVtcyBvZiByZWZlcmVuY2luZyBjb2xzICovCiAJT2lkCQkJcGZfZXFfb3Byc1tS SV9NQVhfTlVNS0VZU107IC8qIGVxdWFsaXR5IG9wZXJhdG9ycyAoUEsgPSBGSykgKi8KIAlP aWQJCQlwcF9lcV9vcHJzW1JJX01BWF9OVU1LRVlTXTsgLyogZXF1YWxpdHkgb3BlcmF0b3Jz IChQSyA9IFBLKSAqLwogCU9pZAkJCWZmX2VxX29wcnNbUklfTUFYX05VTUtFWVNdOyAvKiBl cXVhbGl0eSBvcGVyYXRvcnMgKEZLID0gRkspICovCisJT2lkCQkJcGVyaW9kX2NvbnRhaW5l ZF9ieV9vcGVyOwkvKiBvcGVyYXRvciBmb3IgUEVST0lEIFNRTCAqLworCU9pZAkJCXBlcmlv ZF9yZWZlcmVuY2VkX2FnZ19wcm9jOwkvKiBwcm9jIGZvciBQRVJJT0QgU1FMICovCiAJZGxp c3Rfbm9kZQl2YWxpZF9saW5rOwkJLyogTGluayBpbiBsaXN0IG9mIHZhbGlkIGVudHJpZXMg Ki8KIH0gUklfQ29uc3RyYWludEluZm87CiAKQEAgLTIwMCw4ICsyMDYsOSBAQCBzdGF0aWMg aW50CXJpX051bGxDaGVjayhUdXBsZURlc2MgdHVwRGVzYywgVHVwbGVUYWJsZVNsb3QgKnNs b3QsCiBzdGF0aWMgdm9pZCByaV9CdWlsZFF1ZXJ5S2V5KFJJX1F1ZXJ5S2V5ICprZXksCiAJ CQkJCQkJIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJCQkJCQkJIGludDMy IGNvbnN0cl9xdWVyeW5vKTsKLXN0YXRpYyBib29sIHJpX0tleXNFcXVhbChSZWxhdGlvbiBy ZWwsIFR1cGxlVGFibGVTbG90ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdCwK K3N0YXRpYyBib29sIHJpX0tleXNTdGFibGUoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xv dCAqb2xkc2xvdCwgVHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3QsCiAJCQkJCQkgY29uc3QgUklf Q29uc3RyYWludEluZm8gKnJpaW5mbywgYm9vbCByZWxfaXNfcGspOworc3RhdGljIGJvb2wg cmlfUmFuZ2VBdHRyaWJ1dGVOZWVkc0NoZWNrKGJvb2wgcmVsX2lzX3BrLCBEYXR1bSBvbGR2 YWx1ZSwgRGF0dW0gbmV3dmFsdWUpOwogc3RhdGljIGJvb2wgcmlfQXR0cmlidXRlc0VxdWFs KE9pZCBlcV9vcHIsIE9pZCB0eXBlaWQsCiAJCQkJCQkJICAgRGF0dW0gb2xkdmFsdWUsIERh dHVtIG5ld3ZhbHVlKTsKIApAQCAtMjMxLDYgKzIzOCw4IEBAIHN0YXRpYyB2b2lkIHJpX1Jl cG9ydFZpb2xhdGlvbihjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQkJCQkJ CSAgIFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRpb24gZmtfcmVsLAogCQkJCQkJCSAgIFR1cGxl VGFibGVTbG90ICp2aW9sYXRvcnNsb3QsIFR1cGxlRGVzYyB0dXBkZXNjLAogCQkJCQkJCSAg IGludCBxdWVyeW5vLCBib29sIHBhcnRnb25lKSBwZ19hdHRyaWJ1dGVfbm9yZXR1cm4oKTsK K3N0YXRpYyB2b2lkIGxvb2t1cFRSSU9wZXJBbmRQcm9jKGNvbnN0IFJJX0NvbnN0cmFpbnRJ bmZvICpyaWluZm8sCisJCQkJCQkJCSBjaGFyICoqb3BuYW1lLCBjaGFyICoqYWdnbmFtZSk7 CiAKIAogLyoKQEAgLTM2MSwyNiArMzcwLDU4IEBAIFJJX0ZLZXlfY2hlY2soVHJpZ2dlckRh dGEgKnRyaWdkYXRhKQogCiAJCS8qIC0tLS0tLS0tLS0KIAkJICogVGhlIHF1ZXJ5IHN0cmlu ZyBidWlsdCBpcwotCQkgKglTRUxFQ1QgMSBGUk9NIFtPTkxZXSA8cGt0YWJsZT4geCBXSEVS RSBwa2F0dDEgPSAkMSBbQU5EIC4uLl0KLQkJICoJCSAgIEZPUiBLRVkgU0hBUkUgT0YgeAor CQkgKglTRUxFQ1QgMQorCQkgKglGUk9NIFtPTkxZXSA8cGt0YWJsZT4geCBXSEVSRSBwa2F0 dDEgPSAkMSBbQU5EIC4uLl0KKwkJICoJRk9SIEtFWSBTSEFSRSBPRiB4CiAJCSAqIFRoZSB0 eXBlIGlkJ3MgZm9yIHRoZSAkIHBhcmFtZXRlcnMgYXJlIHRob3NlIG9mIHRoZQogCQkgKiBj b3JyZXNwb25kaW5nIEZLIGF0dHJpYnV0ZXMuCisJCSAqCisJCSAqIEJ1dCBmb3IgdGVtcG9y YWwgRktzIHdlIG5lZWQgdG8gbWFrZSBzdXJlCisJCSAqIHRoZSBGSydzIHJhbmdlIGlzIGNv bXBsZXRlbHkgY292ZXJlZC4KKwkJICogU28gd2UgdXNlIHRoaXMgcXVlcnkgaW5zdGVhZDoK KwkJICogIFNFTEVDVCAxCisJCSAqCUZST00JKAorCQkgKgkJU0VMRUNUIHBrcGVyaW9kYXR0 IEFTIHIKKwkJICoJCUZST00gICBbT05MWV0gcGt0YWJsZSB4CisJCSAqCQlXSEVSRSAgcGth dHQxID0gJDEgW0FORCAuLi5dCisJCSAqCQlBTkQgICAgcGtwZXJpb2RhdHQgJiYgJG4KKwkJ ICoJCUZPUiBLRVkgU0hBUkUgT0YgeAorCQkgKgkpIHgxCisJCSAqICBIQVZJTkcgJG4gPEAg cmFuZ2VfYWdnKHgxLnIpCisJCSAqIE5vdGUgaWYgRk9SIEtFWSBTSEFSRSBldmVyIGFsbG93 cyBHUk9VUCBCWSBhbmQgSEFWSU5HCisJCSAqIHdlIGNhbiBtYWtlIHRoaXMgYSBiaXQgc2lt cGxlci4KIAkJICogLS0tLS0tLS0tLQogCQkgKi8KIAkJaW5pdFN0cmluZ0luZm8oJnF1ZXJ5 YnVmKTsKIAkJcGtfb25seSA9IHBrX3JlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRf UEFSVElUSU9ORURfVEFCTEUgPwogCQkJIiIgOiAiT05MWSAiOwogCQlxdW90ZVJlbGF0aW9u TmFtZShwa3JlbG5hbWUsIHBrX3JlbCk7Ci0JCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVm LCAiU0VMRUNUIDEgRlJPTSAlcyVzIHgiLAotCQkJCQkJIHBrX29ubHksIHBrcmVsbmFtZSk7 CisJCWlmIChyaWluZm8tPnRlbXBvcmFsKQorCQl7CisJCQlxdW90ZU9uZU5hbWUoYXR0bmFt ZSwKKwkJCQkJUklBdHROYW1lKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW3JpaW5mby0+ bmtleXMgLSAxXSkpOworCisJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwKKwkJCQkJ IlNFTEVDVCAxIEZST00gKFNFTEVDVCAlcyBBUyByIEZST00gJXMlcyB4IiwKKwkJCQkJYXR0 bmFtZSwgcGtfb25seSwgcGtyZWxuYW1lKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWFwcGVu ZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAiU0VMRUNUIDEgRlJPTSAlcyVzIHgiLAorCQkJCQkJ CSBwa19vbmx5LCBwa3JlbG5hbWUpOworCQl9CiAJCXF1ZXJ5c2VwID0gIldIRVJFIjsKIAkJ Zm9yIChpbnQgaSA9IDA7IGkgPCByaWluZm8tPm5rZXlzOyBpKyspCiAJCXsKLQkJCU9pZAkJ CXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOwot CQkJT2lkCQkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVt c1tpXSk7CisJCQlPaWQJcGtfdHlwZTsKKwkJCU9pZAlma190eXBlOwogCisJCQlwa190eXBl ID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKIAkJCXF1b3Rl T25lTmFtZShhdHRuYW1lLAogCQkJCQkJIFJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtf YXR0bnVtc1tpXSkpOworCisJCQlma190eXBlID0gUklBdHRUeXBlKGZrX3JlbCwgcmlpbmZv LT5ma19hdHRudW1zW2ldKTsKKwogCQkJc3ByaW50ZihwYXJhbW5hbWUsICIkJWQiLCBpICsg MSk7CiAJCQlyaV9HZW5lcmF0ZVF1YWwoJnF1ZXJ5YnVmLCBxdWVyeXNlcCwKIAkJCQkJCQlh dHRuYW1lLCBwa190eXBlLApAQCAtMzkwLDYgKzQzMSwxNSBAQCBSSV9GS2V5X2NoZWNrKFRy aWdnZXJEYXRhICp0cmlnZGF0YSkKIAkJCXF1ZXJ5b2lkc1tpXSA9IGZrX3R5cGU7CiAJCX0K IAkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmcXVlcnlidWYsICIgRk9SIEtFWSBTSEFSRSBP RiB4Iik7CisJCWlmIChyaWluZm8tPnRlbXBvcmFsKQorCQl7CisJCQljaGFyICpvcG5hbWU7 CisJCQljaGFyICphZ2duYW1lOworCQkJbG9va3VwVFJJT3BlckFuZFByb2MocmlpbmZvLCAm b3BuYW1lLCAmYWdnbmFtZSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIikg eDEgSEFWSU5HICQlZCAlcyAlcyh4MS5yKSIsIHJpaW5mby0+bmtleXMsIG9wbmFtZSwgYWdn bmFtZSk7CisJCQlwZnJlZShvcG5hbWUpOworCQkJcGZyZWUoYWdnbmFtZSk7CisJCX0KIAog CQkvKiBQcmVwYXJlIGFuZCBzYXZlIHRoZSBwbGFuICovCiAJCXFwbGFuID0gcmlfUGxhbkNo ZWNrKHF1ZXJ5YnVmLmRhdGEsIHJpaW5mby0+bmtleXMsIHF1ZXJ5b2lkcywKQEAgLTQ5Nywy MSArNTQ3LDQ5IEBAIHJpX0NoZWNrX1BrX01hdGNoKFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRp b24gZmtfcmVsLAogCQkgKgkJICAgRk9SIEtFWSBTSEFSRSBPRiB4CiAJCSAqIFRoZSB0eXBl IGlkJ3MgZm9yIHRoZSAkIHBhcmFtZXRlcnMgYXJlIHRob3NlIG9mIHRoZQogCQkgKiBQSyBh dHRyaWJ1dGVzIHRoZW1zZWx2ZXMuCisJCSAqIEJ1dCBmb3IgdGVtcG9yYWwgRktzIHdlIG5l ZWQgdG8gbWFrZSBzdXJlCisJCSAqIHRoZSBGSydzIHJhbmdlIGlzIGNvbXBsZXRlbHkgY292 ZXJlZC4KKwkJICogU28gd2UgdXNlIHRoaXMgcXVlcnkgaW5zdGVhZDoKKwkJICogIFNFTEVD VCAxCisJCSAqICBGUk9NICAgICgKKwkJICoJICBTRUxFQ1QgcGtwZXJpb2RhdHQgQVMgcgor CQkgKgkgIEZST00gICBbT05MWV0gcGt0YWJsZSB4CisJCSAqCSAgV0hFUkUgIHBrYXR0MSA9 ICQxIFtBTkQgLi4uXQorCQkgKgkgIEFORCAgICBwa3BlcmlvZGF0dCAmJiAkbgorCQkgKgkg IEZPUiBLRVkgU0hBUkUgT0YgeAorCQkgKiAgKSB4MQorCQkgKiAgSEFWSU5HICRuIDxAIHJh bmdlX2FnZyh4MS5yKQorCQkgKiBOb3RlIGlmIEZPUiBLRVkgU0hBUkUgZXZlciBhbGxvd3Mg R1JPVVAgQlkgYW5kIEhBVklORworCQkgKiB3ZSBjYW4gbWFrZSB0aGlzIGEgYml0IHNpbXBs ZXIuCiAJCSAqIC0tLS0tLS0tLS0KIAkJICovCiAJCWluaXRTdHJpbmdJbmZvKCZxdWVyeWJ1 Zik7CiAJCXBrX29ubHkgPSBwa19yZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BB UlRJVElPTkVEX1RBQkxFID8KIAkJCSIiIDogIk9OTFkgIjsKIAkJcXVvdGVSZWxhdGlvbk5h bWUocGtyZWxuYW1lLCBwa19yZWwpOwotCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1Ziwg IlNFTEVDVCAxIEZST00gJXMlcyB4IiwKLQkJCQkJCSBwa19vbmx5LCBwa3JlbG5hbWUpOwor CQlpZiAocmlpbmZvLT50ZW1wb3JhbCkKKwkJeworCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUs IFJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0g MV0pKTsKKworCQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsCisJCQkJCSJTRUxFQ1Qg MSBGUk9NIChTRUxFQ1QgJXMgQVMgciBGUk9NICVzJXMgeCIsCisJCQkJCWF0dG5hbWUsIHBr X29ubHksIHBrcmVsbmFtZSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlhcHBlbmRTdHJpbmdJ bmZvKCZxdWVyeWJ1ZiwgIlNFTEVDVCAxIEZST00gJXMlcyB4IiwKKwkJCQkJcGtfb25seSwg cGtyZWxuYW1lKTsKKwkJfQorCiAJCXF1ZXJ5c2VwID0gIldIRVJFIjsKIAkJZm9yIChpbnQg aSA9IDA7IGkgPCByaWluZm8tPm5rZXlzOyBpKyspCiAJCXsKLQkJCU9pZAkJCXBrX3R5cGUg PSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOworCQkJT2lkCQlw a190eXBlOwogCisJCQlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19h dHRudW1zW2ldKTsKIAkJCXF1b3RlT25lTmFtZShhdHRuYW1lLAogCQkJCQkJIFJJQXR0TmFt ZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSkpOworCiAJCQlzcHJpbnRmKHBhcmFt bmFtZSwgIiQlZCIsIGkgKyAxKTsKIAkJCXJpX0dlbmVyYXRlUXVhbCgmcXVlcnlidWYsIHF1 ZXJ5c2VwLAogCQkJCQkJCWF0dG5hbWUsIHBrX3R5cGUsCkBAIC01MjEsNiArNTk5LDE1IEBA IHJpX0NoZWNrX1BrX01hdGNoKFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRpb24gZmtfcmVsLAog CQkJcXVlcnlvaWRzW2ldID0gcGtfdHlwZTsKIAkJfQogCQlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKCZxdWVyeWJ1ZiwgIiBGT1IgS0VZIFNIQVJFIE9GIHgiKTsKKwkJaWYgKHJpaW5mby0+ dGVtcG9yYWwpCisJCXsKKwkJCWNoYXIgKm9wbmFtZTsKKwkJCWNoYXIgKmFnZ25hbWU7CisJ CQlsb29rdXBUUklPcGVyQW5kUHJvYyhyaWluZm8sICZvcG5hbWUsICZhZ2duYW1lKTsKKwkJ CWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAiKSB4MSBIQVZJTkcgJCVkICVzICVzKHgx LnIpIiwgcmlpbmZvLT5ua2V5cywgb3BuYW1lLCBhZ2duYW1lKTsKKwkJCXBmcmVlKG9wbmFt ZSk7CisJCQlwZnJlZShhZ2duYW1lKTsKKwkJfQogCiAJCS8qIFByZXBhcmUgYW5kIHNhdmUg dGhlIHBsYW4gKi8KIAkJcXBsYW4gPSByaV9QbGFuQ2hlY2socXVlcnlidWYuZGF0YSwgcmlp bmZvLT5ua2V5cywgcXVlcnlvaWRzLApAQCAtNjk1LDEwICs3ODIsMTYgQEAgcmlfcmVzdHJp Y3QoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX25vX2FjdGlvbikKIAkJcXVlcnlz ZXAgPSAiV0hFUkUiOwogCQlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkr KykKIAkJewotCQkJT2lkCQkJcGtfdHlwZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+ cGtfYXR0bnVtc1tpXSk7Ci0JCQlPaWQJCQlma190eXBlID0gUklBdHRUeXBlKGZrX3JlbCwg cmlpbmZvLT5ma19hdHRudW1zW2ldKTsKLQkJCU9pZAkJCXBrX2NvbGwgPSBSSUF0dENvbGxh dGlvbihwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7Ci0JCQlPaWQJCQlma19jb2xs ID0gUklBdHRDb2xsYXRpb24oZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQkJ T2lkCQlwa190eXBlOworCQkJT2lkCQlma190eXBlOworCQkJT2lkCQlwa19jb2xsOworCQkJ T2lkCQlma19jb2xsOworCisJCQlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZv LT5wa19hdHRudW1zW2ldKTsKKwkJCXBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWws IHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CisKKwkJCWZrX3R5cGUgPSBSSUF0dFR5cGUoZmtf cmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQkJZmtfY29sbCA9IFJJQXR0Q29sbGF0 aW9uKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKIAogCQkJcXVvdGVPbmVOYW1l KGF0dG5hbWUsCiAJCQkJCQkgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1z W2ldKSk7CkBAIC0xMjEzLDYgKzEzMDYsMTI2IEBAIHJpX3NldChUcmlnZ2VyRGF0YSAqdHJp Z2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGludCB0Z2tpbmQpCiAJfQogfQogCisvKiAtLS0t LS0tLS0tCisgKiBUUklfRktleV9jaGVja19pbnMgLQorICoKKyAqCUNoZWNrIHRlbXBvcmFs IGZvcmVpZ24ga2V5IGV4aXN0ZW5jZSBhdCBpbnNlcnQgZXZlbnQgb24gRksgdGFibGUuCisg KiAtLS0tLS0tLS0tCisgKi8KK0RhdHVtCitUUklfRktleV9jaGVja19pbnMoUEdfRlVOQ1RJ T05fQVJHUykKK3sKKwkvKgorCSAqIENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdn ZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZlbnQuCisJICovCisJcmlfQ2hlY2tU cmlnZ2VyKGZjaW5mbywgIlJJX0ZLZXlfY2hlY2tfaW5zIiwgUklfVFJJR1RZUEVfSU5TRVJU KTsKKworCS8qCisJICogU2hhcmUgY29kZSB3aXRoIFVQREFURSBjYXNlLgorCSAqLworCXJl dHVybiBSSV9GS2V5X2NoZWNrKChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQpOwor fQorCisKKy8qIC0tLS0tLS0tLS0KKyAqIFRSSV9GS2V5X2NoZWNrX3VwZCAtCisgKgorICoJ Q2hlY2sgdGVtcG9yYWwgZm9yZWlnbiBrZXkgZXhpc3RlbmNlIGF0IHVwZGF0ZSBldmVudCBv biBGSyB0YWJsZS4KKyAqIC0tLS0tLS0tLS0KKyAqLworRGF0dW0KK1RSSV9GS2V5X2NoZWNr X3VwZChQR19GVU5DVElPTl9BUkdTKQoreworCS8qCisJICogQ2hlY2sgdGhhdCB0aGlzIGlz IGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4KKwkg Ki8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiUklfRktleV9jaGVja191cGQiLCBSSV9U UklHVFlQRV9VUERBVEUpOworCisJLyoKKwkgKiBTaGFyZSBjb2RlIHdpdGggSU5TRVJUIGNh c2UuCisJICovCisJcmV0dXJuIFJJX0ZLZXlfY2hlY2soKFRyaWdnZXJEYXRhICopIGZjaW5m by0+Y29udGV4dCk7Cit9CisKKworLyogLS0tLS0tLS0tLQorICogVFJJX0ZLZXlfbm9hY3Rp b25fZGVsIC0KKyAqCisgKglHaXZlIGFuIGVycm9yIGFuZCByb2xsIGJhY2sgdGhlIGN1cnJl bnQgdHJhbnNhY3Rpb24gaWYgdGhlCisgKglkZWxldGUgaGFzIHJlc3VsdGVkIGluIGEgdmlv bGF0aW9uIG9mIHRoZSBnaXZlbiB0ZW1wb3JhbAorICoJcmVmZXJlbnRpYWwgaW50ZWdyaXR5 IGNvbnN0cmFpbnQuCisgKiAtLS0tLS0tLS0tCisgKi8KK0RhdHVtCitUUklfRktleV9ub2Fj dGlvbl9kZWwoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvKgorCSAqIENoZWNrIHRoYXQgdGhp cyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZlbnQu CisJICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X25vYWN0aW9uX2Rl bCIsIFJJX1RSSUdUWVBFX0RFTEVURSk7CisKKwkvKgorCSAqIFNoYXJlIGNvZGUgd2l0aCBS RVNUUklDVC9VUERBVEUgY2FzZXMuCisJICovCisJcmV0dXJuIHJpX3Jlc3RyaWN0KChUcmln Z2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIHRydWUpOworfQorCisvKgorICogVFJJX0ZL ZXlfcmVzdHJpY3RfZGVsIC0KKyAqCisgKiBSZXN0cmljdCBkZWxldGUgZnJvbSBQSyB0YWJs ZSB0byByb3dzIHVucmVmZXJlbmNlZCBieSBmb3JlaWduIGtleS4KKyAqCisgKiBUaGUgU1FM IHN0YW5kYXJkIGludGVuZHMgdGhhdCB0aGlzIHJlZmVyZW50aWFsIGFjdGlvbiBvY2N1ciBl eGFjdGx5IHdoZW4KKyAqIHRoZSBkZWxldGUgaXMgcGVyZm9ybWVkLCByYXRoZXIgdGhhbiBh ZnRlci4gIFRoaXMgYXBwZWFycyB0byBiZQorICogdGhlIG9ubHkgZGlmZmVyZW5jZSBiZXR3 ZWVuICJOTyBBQ1RJT04iIGFuZCAiUkVTVFJJQ1QiLiAgSW4gUG9zdGdyZXMKKyAqIHdlIHN0 aWxsIGltcGxlbWVudCB0aGlzIGFzIGFuIEFGVEVSIHRyaWdnZXIsIGJ1dCBpdCdzIG5vbi1k ZWZlcnJhYmxlLgorICovCitEYXR1bQorVFJJX0ZLZXlfcmVzdHJpY3RfZGVsKFBHX0ZVTkNU SU9OX0FSR1MpCit7CisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBj YWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIo ZmNpbmZvLCAiVFJJX0ZLZXlfcmVzdHJpY3RfZGVsIiwgUklfVFJJR1RZUEVfREVMRVRFKTsK KworCS8qIFNoYXJlIGNvZGUgd2l0aCBOTyBBQ1RJT04vVVBEQVRFIGNhc2VzLiAqLworCXJl dHVybiByaV9yZXN0cmljdCgoVHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0LCBmYWxz ZSk7Cit9CisKKy8qCisgKiBUUklfRktleV9ub2FjdGlvbl91cGQgLQorICoKKyAqIEdpdmUg YW4gZXJyb3IgYW5kIHJvbGwgYmFjayB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBpZiB0aGUK KyAqIHVwZGF0ZSBoYXMgcmVzdWx0ZWQgaW4gYSB2aW9sYXRpb24gb2YgdGhlIGdpdmVuIHJl ZmVyZW50aWFsCisgKiBpbnRlZ3JpdHkgY29uc3RyYWludC4KKyAqLworRGF0dW0KK1RSSV9G S2V5X25vYWN0aW9uX3VwZChQR19GVU5DVElPTl9BUkdTKQoreworCS8qIENoZWNrIHRoYXQg dGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZl bnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X25vYWN0aW9uX3Vw ZCIsIFJJX1RSSUdUWVBFX1VQREFURSk7CisKKwkvKiBTaGFyZSBjb2RlIHdpdGggUkVTVFJJ Q1QvREVMRVRFIGNhc2VzLiAqLworCXJldHVybiByaV9yZXN0cmljdCgoVHJpZ2dlckRhdGEg KikgZmNpbmZvLT5jb250ZXh0LCB0cnVlKTsKK30KKworLyoKKyAqIFRSSV9GS2V5X3Jlc3Ry aWN0X3VwZCAtCisgKgorICogUmVzdHJpY3QgdXBkYXRlIG9mIFBLIHRvIHJvd3MgdW5yZWZl cmVuY2VkIGJ5IGZvcmVpZ24ga2V5LgorICoKKyAqIFRoZSBTUUwgc3RhbmRhcmQgaW50ZW5k cyB0aGF0IHRoaXMgcmVmZXJlbnRpYWwgYWN0aW9uIG9jY3VyIGV4YWN0bHkgd2hlbgorICog dGhlIHVwZGF0ZSBpcyBwZXJmb3JtZWQsIHJhdGhlciB0aGFuIGFmdGVyLiAgVGhpcyBhcHBl YXJzIHRvIGJlCisgKiB0aGUgb25seSBkaWZmZXJlbmNlIGJldHdlZW4gIk5PIEFDVElPTiIg YW5kICJSRVNUUklDVCIuICBJbiBQb3N0Z3JlcworICogd2Ugc3RpbGwgaW1wbGVtZW50IHRo aXMgYXMgYW4gQUZURVIgdHJpZ2dlciwgYnV0IGl0J3Mgbm9uLWRlZmVycmFibGUuCisgKi8K K0RhdHVtCitUUklfRktleV9yZXN0cmljdF91cGQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkv KiBDaGVjayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0 IHRpbWUgYW5kIGV2ZW50LiAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktl eV9yZXN0cmljdF91cGQiLCBSSV9UUklHVFlQRV9VUERBVEUpOworCisJLyogU2hhcmUgY29k ZSB3aXRoIE5PIEFDVElPTi9ERUxFVEUgY2FzZXMuICovCisJcmV0dXJuIHJpX3Jlc3RyaWN0 KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIGZhbHNlKTsKK30KIAogLyoKICAq IFJJX0ZLZXlfcGtfdXBkX2NoZWNrX3JlcXVpcmVkIC0KQEAgLTEyNDEsNyArMTQ1NCw3IEBA IFJJX0ZLZXlfcGtfdXBkX2NoZWNrX3JlcXVpcmVkKFRyaWdnZXIgKnRyaWdnZXIsIFJlbGF0 aW9uIHBrX3JlbCwKIAkJcmV0dXJuIGZhbHNlOwogCiAJLyogSWYgYWxsIG9sZCBhbmQgbmV3 IGtleSB2YWx1ZXMgYXJlIGVxdWFsLCBubyBjaGVjayBpcyBuZWVkZWQgKi8KLQlpZiAobmV3 c2xvdCAmJiByaV9LZXlzRXF1YWwocGtfcmVsLCBvbGRzbG90LCBuZXdzbG90LCByaWluZm8s IHRydWUpKQorCWlmIChuZXdzbG90ICYmIHJpX0tleXNTdGFibGUocGtfcmVsLCBvbGRzbG90 LCBuZXdzbG90LCByaWluZm8sIHRydWUpKQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBFbHNl IHdlIG5lZWQgdG8gZmlyZSB0aGUgdHJpZ2dlci4gKi8KQEAgLTEzNDAsNyArMTU1Myw3IEBA IFJJX0ZLZXlfZmtfdXBkX2NoZWNrX3JlcXVpcmVkKFRyaWdnZXIgKnRyaWdnZXIsIFJlbGF0 aW9uIGZrX3JlbCwKIAkJcmV0dXJuIHRydWU7CiAKIAkvKiBJZiBhbGwgb2xkIGFuZCBuZXcg a2V5IHZhbHVlcyBhcmUgZXF1YWwsIG5vIGNoZWNrIGlzIG5lZWRlZCAqLwotCWlmIChyaV9L ZXlzRXF1YWwoZmtfcmVsLCBvbGRzbG90LCBuZXdzbG90LCByaWluZm8sIGZhbHNlKSkKKwlp ZiAocmlfS2V5c1N0YWJsZShma19yZWwsIG9sZHNsb3QsIG5ld3Nsb3QsIHJpaW5mbywgZmFs c2UpKQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBFbHNlIHdlIG5lZWQgdG8gZmlyZSB0aGUg dHJpZ2dlci4gKi8KQEAgLTE0ODgsMTUgKzE3MDEsMTcgQEAgUklfSW5pdGlhbF9DaGVjayhU cmlnZ2VyICp0cmlnZ2VyLCBSZWxhdGlvbiBma19yZWwsIFJlbGF0aW9uIHBrX3JlbCkKIAlz ZXAgPSAiKCI7CiAJZm9yIChpbnQgaSA9IDA7IGkgPCByaWluZm8tPm5rZXlzOyBpKyspCiAJ ewotCQlPaWQJCQlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRu dW1zW2ldKTsKLQkJT2lkCQkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ ZmtfYXR0bnVtc1tpXSk7Ci0JCU9pZAkJCXBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19y ZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7Ci0JCU9pZAkJCWZrX2NvbGwgPSBSSUF0dENv bGxhdGlvbihma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisJCU9pZAlwa190eXBl ID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJT2lkCWZr X3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQlP aWQJcGtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1z W2ldKTsKKwkJT2lkCWZrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihma19yZWwsIHJpaW5mby0+ ZmtfYXR0bnVtc1tpXSk7CiAKIAkJcXVvdGVPbmVOYW1lKHBrYXR0bmFtZSArIDMsCiAJCQkJ CSBSSUF0dE5hbWUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pKTsKKwogCQlxdW90 ZU9uZU5hbWUoZmthdHRuYW1lICsgMywKIAkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5m by0+ZmtfYXR0bnVtc1tpXSkpOworCiAJCXJpX0dlbmVyYXRlUXVhbCgmcXVlcnlidWYsIHNl cCwKIAkJCQkJCXBrYXR0bmFtZSwgcGtfdHlwZSwKIAkJCQkJCXJpaW5mby0+cGZfZXFfb3By c1tpXSwKQEAgLTIxMzcsNiArMjM1Miw3IEBAIHJpX0xvYWRDb25zdHJhaW50SW5mbyhPaWQg Y29uc3RyYWludE9pZCkKIAlyaWluZm8gPSAoUklfQ29uc3RyYWludEluZm8gKikgaGFzaF9z ZWFyY2gocmlfY29uc3RyYWludF9jYWNoZSwKIAkJCQkJCQkJCQkJICAgJmNvbnN0cmFpbnRP aWQsCiAJCQkJCQkJCQkJCSAgIEhBU0hfRU5URVIsICZmb3VuZCk7CisKIAlpZiAoIWZvdW5k KQogCQlyaWluZm8tPnZhbGlkID0gZmFsc2U7CiAJZWxzZSBpZiAocmlpbmZvLT52YWxpZCkK QEAgLTIxNzEsNiArMjM4Nyw3IEBAIHJpX0xvYWRDb25zdHJhaW50SW5mbyhPaWQgY29uc3Ry YWludE9pZCkKIAlyaWluZm8tPmNvbmZ1cGR0eXBlID0gY29uRm9ybS0+Y29uZnVwZHR5cGU7 CiAJcmlpbmZvLT5jb25mZGVsdHlwZSA9IGNvbkZvcm0tPmNvbmZkZWx0eXBlOwogCXJpaW5m by0+Y29uZm1hdGNodHlwZSA9IGNvbkZvcm0tPmNvbmZtYXRjaHR5cGU7CisJcmlpbmZvLT50 ZW1wb3JhbCA9IGNvbkZvcm0tPmNvbndpdGhvdXRvdmVybGFwczsKIAogCURlY29uc3RydWN0 RmtDb25zdHJhaW50Um93KHR1cCwKIAkJCQkJCQkgICAmcmlpbmZvLT5ua2V5cywKQEAgLTIx ODIsNiArMjM5OSwxOCBAQCByaV9Mb2FkQ29uc3RyYWludEluZm8oT2lkIGNvbnN0cmFpbnRP aWQpCiAJCQkJCQkJICAgJnJpaW5mby0+bmRlbHNldGNvbHMsCiAJCQkJCQkJICAgcmlpbmZv LT5jb25mZGVsc2V0Y29scyk7CiAKKwkvKgorCSAqIEZvciB0ZW1wb3JhbCBGS3MsIGdldCB0 aGUgb3BlcmF0b3IgYW5kIGFnZ3JlZ2F0ZSBmdW5jdGlvbiB3ZSBuZWVkLgorCSAqIFdlIGFz ayB0aGUgb3BjbGFzcyBvZiB0aGUgUEsgZWxlbWVudCBmb3IgdGhpcy4KKwkgKiBUaGlzIGFs bCBnZXRzIGNhY2hlZCAoYXMgZG9lcyB0aGUgZ2VuZXJhdGVkIHBsYW4pLAorCSAqIHNvIHRo ZXJlJ3Mgbm8gcGVyZm9ybWFuY2UgaXNzdWUuCisJICovCisJaWYgKHJpaW5mby0+dGVtcG9y YWwpCisJeworCQlPaWQJb3BjbGFzcyA9IGdldF9pbmRleF9jb2x1bW5fb3BjbGFzcyhjb25G b3JtLT5jb25pbmRpZCwgcmlpbmZvLT5ua2V5cyk7CisJCUZpbmRGS1BlcmlvZE9wZXJzQW5k UHJvY3Mob3BjbGFzcywgJnJpaW5mby0+cGVyaW9kX2NvbnRhaW5lZF9ieV9vcGVyLCAmcmlp bmZvLT5wZXJpb2RfcmVmZXJlbmNlZF9hZ2dfcHJvYyk7CisJfQorCiAJUmVsZWFzZVN5c0Nh Y2hlKHR1cCk7CiAKIAkvKgpAQCAtMjc5MSw5ICszMDIwLDEyIEBAIHJpX0hhc2hQcmVwYXJl ZFBsYW4oUklfUXVlcnlLZXkgKmtleSwgU1BJUGxhblB0ciBwbGFuKQogCiAKIC8qCi0gKiBy aV9LZXlzRXF1YWwgLQorICogcmlfS2V5c1N0YWJsZSAtCiAgKgotICogQ2hlY2sgaWYgYWxs IGtleSB2YWx1ZXMgaW4gT0xEIGFuZCBORVcgYXJlIGVxdWFsLgorICogQ2hlY2sgaWYgYWxs IGtleSB2YWx1ZXMgaW4gT0xEIGFuZCBORVcgYXJlICJlcXVpdmFsZW50IjoKKyAqIEZvciBu b3JtYWwgRktzIHdlIGNoZWNrIGZvciBlcXVhbGl0eS4KKyAqIEZvciB0ZW1wb3JhbCBGS3Mg d2UgY2hlY2sgdGhhdCB0aGUgUEsgc2lkZSBpcyBhIHN1cGVyc2V0IG9mIGl0cyBvbGQgdmFs dWUsCisgKiBvciB0aGUgRksgc2lkZSBpcyBhIHN1YnNldC4KICAqCiAgKiBOb3RlOiBhdCBz b21lIHBvaW50IHdlIG1pZ2h0IHdpc2ggdG8gcmVkZWZpbmUgdGhpcyBhcyBjaGVja2luZyBm b3IKICAqICJJUyBOT1QgRElTVElOQ1QiIHJhdGhlciB0aGFuICI9IiwgdGhhdCBpcywgYWxs b3cgdHdvIG51bGxzIHRvIGJlCkBAIC0yODAxLDcgKzMwMzMsNyBAQCByaV9IYXNoUHJlcGFy ZWRQbGFuKFJJX1F1ZXJ5S2V5ICprZXksIFNQSVBsYW5QdHIgcGxhbikKICAqIHByZXZpb3Vz bHkgZm91bmQgYXQgbGVhc3Qgb25lIG9mIHRoZSByb3dzIHRvIGNvbnRhaW4gbm8gbnVsbHMu CiAgKi8KIHN0YXRpYyBib29sCi1yaV9LZXlzRXF1YWwoUmVsYXRpb24gcmVsLCBUdXBsZVRh YmxlU2xvdCAqb2xkc2xvdCwgVHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3QsCityaV9LZXlzU3Rh YmxlKFJlbGF0aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3QsIFR1cGxlVGFibGVT bG90ICpuZXdzbG90LAogCQkJIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sIGJv b2wgcmVsX2lzX3BrKQogewogCWNvbnN0IGludDE2ICphdHRudW1zOwpAQCAtMjgzNCwzNSAr MzA2Niw4NiBAQCByaV9LZXlzRXF1YWwoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAq b2xkc2xvdCwgVHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3QsCiAKIAkJaWYgKHJlbF9pc19waykK IAkJewotCQkJLyoKLQkJCSAqIElmIHdlIGFyZSBsb29raW5nIGF0IHRoZSBQSyB0YWJsZSwg dGhlbiBkbyBhIGJ5dGV3aXNlCi0JCQkgKiBjb21wYXJpc29uLiAgV2UgbXVzdCBwcm9wYWdh dGUgUEsgY2hhbmdlcyBpZiB0aGUgdmFsdWUgaXMKLQkJCSAqIGNoYW5nZWQgdG8gb25lIHRo YXQgImxvb2tzIiBkaWZmZXJlbnQgYnV0IHdvdWxkIGNvbXBhcmUgYXMKLQkJCSAqIGVxdWFs IHVzaW5nIHRoZSBlcXVhbGl0eSBvcGVyYXRvci4gIFRoaXMgb25seSBtYWtlcyBhCi0JCQkg KiBkaWZmZXJlbmNlIGZvciBPTiBVUERBVEUgQ0FTQ0FERSwgYnV0IGZvciBjb25zaXN0ZW5j eSB3ZSB0cmVhdAotCQkJICogYWxsIGNoYW5nZXMgdG8gdGhlIFBLIHRoZSBzYW1lLgotCQkJ ICovCi0JCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHQgPSBUdXBsZURlc2NBdHRyKG9sZHNsb3Qt PnR0c190dXBsZURlc2NyaXB0b3IsIGF0dG51bXNbaV0gLSAxKTsKKwkJCWlmIChyaWluZm8t PnRlbXBvcmFsICYmIGkgPT0gcmlpbmZvLT5ua2V5cyAtIDEpCisJCQl7CisJCQkJaWYgKHJp X1JhbmdlQXR0cmlidXRlTmVlZHNDaGVjayh0cnVlLCBvbGR2YWx1ZSwgbmV3dmFsdWUpKQor CQkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJLyoKKwkJCQkg KiBJZiB3ZSBhcmUgbG9va2luZyBhdCB0aGUgUEsgdGFibGUsIHRoZW4gZG8gYSBieXRld2lz ZQorCQkJCSAqIGNvbXBhcmlzb24uICBXZSBtdXN0IHByb3BhZ2F0ZSBQSyBjaGFuZ2VzIGlm IHRoZSB2YWx1ZSBpcworCQkJCSAqIGNoYW5nZWQgdG8gb25lIHRoYXQgImxvb2tzIiBkaWZm ZXJlbnQgYnV0IHdvdWxkIGNvbXBhcmUgYXMKKwkJCQkgKiBlcXVhbCB1c2luZyB0aGUgZXF1 YWxpdHkgb3BlcmF0b3IuICBUaGlzIG9ubHkgbWFrZXMgYQorCQkJCSAqIGRpZmZlcmVuY2Ug Zm9yIE9OIFVQREFURSBDQVNDQURFLCBidXQgZm9yIGNvbnNpc3RlbmN5IHdlIHRyZWF0CisJ CQkJICogYWxsIGNoYW5nZXMgdG8gdGhlIFBLIHRoZSBzYW1lLgorCQkJCSAqLworCQkJCUZv cm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIob2xkc2xvdC0+dHRzX3R1cGxl RGVzY3JpcHRvciwgYXR0bnVtc1tpXSAtIDEpOwogCi0JCQlpZiAoIWRhdHVtX2ltYWdlX2Vx KG9sZHZhbHVlLCBuZXd2YWx1ZSwgYXR0LT5hdHRieXZhbCwgYXR0LT5hdHRsZW4pKQotCQkJ CXJldHVybiBmYWxzZTsKKwkJCQlpZiAoIWRhdHVtX2ltYWdlX2VxKG9sZHZhbHVlLCBuZXd2 YWx1ZSwgYXR0LT5hdHRieXZhbCwgYXR0LT5hdHRsZW4pKQorCQkJCQlyZXR1cm4gZmFsc2U7 CisJCQl9CiAJCX0KIAkJZWxzZQogCQl7Ci0JCQkvKgotCQkJICogRm9yIHRoZSBGSyB0YWJs ZSwgY29tcGFyZSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBlcXVhbGl0eQotCQkJICogb3BlcmF0 b3IuICBDaGFuZ2VzIHRoYXQgY29tcGFyZSBlcXVhbCB3aWxsIHN0aWxsIHNhdGlzZnkgdGhl Ci0JCQkgKiBjb25zdHJhaW50IGFmdGVyIHRoZSB1cGRhdGUuCi0JCQkgKi8KLQkJCWlmICgh cmlfQXR0cmlidXRlc0VxdWFsKHJpaW5mby0+ZmZfZXFfb3Byc1tpXSwgUklBdHRUeXBlKHJl bCwgYXR0bnVtc1tpXSksCi0JCQkJCQkJCQlvbGR2YWx1ZSwgbmV3dmFsdWUpKQotCQkJCXJl dHVybiBmYWxzZTsKKwkJCWlmIChyaWluZm8tPnRlbXBvcmFsICYmIGkgPT0gcmlpbmZvLT5u a2V5cyAtIDEpCisJCQl7CisJCQkJaWYgKHJpX1JhbmdlQXR0cmlidXRlTmVlZHNDaGVjayhm YWxzZSwgb2xkdmFsdWUsIG5ld3ZhbHVlKSkKKwkJCQkJcmV0dXJuIGZhbHNlOworCQkJfQor CQkJZWxzZQorCQkJeworCQkJCS8qCisJCQkJICogRm9yIHRoZSBGSyB0YWJsZSwgY29tcGFy ZSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBlcXVhbGl0eQorCQkJCSAqIG9wZXJhdG9yLiAgQ2hh bmdlcyB0aGF0IGNvbXBhcmUgZXF1YWwgd2lsbCBzdGlsbCBzYXRpc2Z5IHRoZQorCQkJCSAq IGNvbnN0cmFpbnQgYWZ0ZXIgdGhlIHVwZGF0ZS4KKwkJCQkgKi8KKwkJCQlpZiAoIXJpX0F0 dHJpYnV0ZXNFcXVhbChyaWluZm8tPmZmX2VxX29wcnNbaV0sIFJJQXR0VHlwZShyZWwsIGF0 dG51bXNbaV0pLAorCQkJCQkJCQkJCW9sZHZhbHVlLCBuZXd2YWx1ZSkpCisJCQkJCXJldHVy biBmYWxzZTsKKwkJCX0KIAkJfQogCX0KIAogCXJldHVybiB0cnVlOwogfQogCisvKgorICog cmlfUmFuZ2VBdHRyaWJ1dGVOZWVkc0NoZWNrIC0KKyAqCisgKiBDb21wYXJlIG9sZCBhbmQg bmV3IHZhbHVlcywgYW5kIHJldHVybiB0cnVlIGlmIHdlIG5lZWQgdG8gY2hlY2sgdGhlIEZL LgorICoKKyAqIE5COiB3ZSBoYXZlIGFscmVhZHkgY2hlY2tlZCB0aGF0IG5laXRoZXIgdmFs dWUgaXMgbnVsbC4KKyAqLworc3RhdGljIGJvb2wKK3JpX1JhbmdlQXR0cmlidXRlTmVlZHND aGVjayhib29sIHJlbF9pc19waywgRGF0dW0gb2xkdmFsdWUsIERhdHVtIG5ld3ZhbHVlKQor eworCVJhbmdlVHlwZSAqb2xkcmFuZ2UsICpuZXdyYW5nZTsKKwlPaWQgb2xkcm5ndHlwZSwg bmV3cm5ndHlwZTsKKwlUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGU7CisKKwlvbGRyYW5nZSA9 IERhdHVtR2V0UmFuZ2VUeXBlUChvbGR2YWx1ZSk7CisJbmV3cmFuZ2UgPSBEYXR1bUdldFJh bmdlVHlwZVAobmV3dmFsdWUpOworCW9sZHJuZ3R5cGUgPSBSYW5nZVR5cGVHZXRPaWQob2xk cmFuZ2UpOworCW5ld3JuZ3R5cGUgPSBSYW5nZVR5cGVHZXRPaWQobmV3cmFuZ2UpOworCisJ aWYgKG9sZHJuZ3R5cGUgIT0gbmV3cm5ndHlwZSkKKwkJZWxvZyhFUlJPUiwgInJhbmdlIHR5 cGVzIGFyZSBpbmNvbnNpc3RlbnQiKTsKKworCXR5cGNhY2hlID0gbG9va3VwX3R5cGVfY2Fj aGUob2xkcm5ndHlwZSwgVFlQRUNBQ0hFX1JBTkdFX0lORk8pOworCWlmICh0eXBjYWNoZS0+ cm5nZWxlbXR5cGUgPT0gTlVMTCkKKwkJZWxvZyhFUlJPUiwgInR5cGUgJXUgaXMgbm90IGEg cmFuZ2UgdHlwZSIsIG9sZHJuZ3R5cGUpOworCisJaWYgKHJlbF9pc19waykKKwkJLyogSWYg dGhlIFBLJ3MgcmFuZ2Ugc2hydW5rLCBhIGNvbmZsaWN0IGlzIHBvc3NpYmxlLiAqLworCQly ZXR1cm4gIXJhbmdlX2VxX2ludGVybmFsKHR5cGNhY2hlLCBvbGRyYW5nZSwgbmV3cmFuZ2Up ICYmCisJCQkhcmFuZ2VfY29udGFpbnNfaW50ZXJuYWwodHlwY2FjaGUsIG5ld3JhbmdlLCBv bGRyYW5nZSk7CisJZWxzZQorCQkvKiBJZiB0aGUgRksncyByYW5nZSBncmV3LCBhIGNvbmZs aWN0IGlzIHBvc3NpYmxlLiAqLworCQlyZXR1cm4gIXJhbmdlX2VxX2ludGVybmFsKHR5cGNh Y2hlLCBvbGRyYW5nZSwgbmV3cmFuZ2UpICYmCisJCQlyYW5nZV9jb250YWluc19pbnRlcm5h bCh0eXBjYWNoZSwgbmV3cmFuZ2UsIG9sZHJhbmdlKTsKK30KIAogLyoKICAqIHJpX0F0dHJp YnV0ZXNFcXVhbCAtCkBAIC0zMDIxLDEyICszMzA0LDQ5IEBAIFJJX0ZLZXlfdHJpZ2dlcl90 eXBlKE9pZCB0Z2ZvaWQpCiAJCWNhc2UgRl9SSV9GS0VZX1NFVERFRkFVTFRfVVBEOgogCQlj YXNlIEZfUklfRktFWV9OT0FDVElPTl9ERUw6CiAJCWNhc2UgRl9SSV9GS0VZX05PQUNUSU9O X1VQRDoKKwkJY2FzZSBGX1RSSV9GS0VZX1JFU1RSSUNUX0RFTDoKKwkJY2FzZSBGX1RSSV9G S0VZX1JFU1RSSUNUX1VQRDoKKwkJY2FzZSBGX1RSSV9GS0VZX05PQUNUSU9OX0RFTDoKKwkJ Y2FzZSBGX1RSSV9GS0VZX05PQUNUSU9OX1VQRDoKIAkJCXJldHVybiBSSV9UUklHR0VSX1BL OwogCiAJCWNhc2UgRl9SSV9GS0VZX0NIRUNLX0lOUzoKIAkJY2FzZSBGX1JJX0ZLRVlfQ0hF Q0tfVVBEOgorCQljYXNlIEZfVFJJX0ZLRVlfQ0hFQ0tfSU5TOgorCQljYXNlIEZfVFJJX0ZL RVlfQ0hFQ0tfVVBEOgogCQkJcmV0dXJuIFJJX1RSSUdHRVJfRks7CiAJfQogCiAJcmV0dXJu IFJJX1RSSUdHRVJfTk9ORTsKIH0KKworLyoKKyAqIGxvb2t1cFRSSU9wZXJBbmRQcm9jIC0K KyAqCisgKiBHZXRzIHRoZSBuYW1lcyBvZiB0aGUgb3BlcmF0b3IgYW5kIGFnZ3JlZ2F0ZSBm dW5jdGlvbgorICogdXNlZCB0byBidWlsZCB0aGUgU1FMIGZvciBUUkkgY29uc3RyYWludHMu CisgKiBSYWlzZXMgYW4gZXJyb3IgaWYgZWl0aGVyIGlzIG5vdCBmb3VuZC4KKyAqLworc3Rh dGljIHZvaWQKK2xvb2t1cFRSSU9wZXJBbmRQcm9jKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZv ICpyaWluZm8sIGNoYXIgKipvcG5hbWUsIGNoYXIgKiphZ2duYW1lKQoreworCU9pZAlvaWQ7 CisKKwlvaWQgPSByaWluZm8tPnBlcmlvZF9jb250YWluZWRfYnlfb3BlcjsKKwlpZiAoIU9p ZElzVmFsaWQob2lkKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCSBlcnJtc2coIm5vIENvbnRhaW5lZEJ5IG9wZXJh dG9yIGZvciBmb3JlaWduIGtleSBjb25zdHJhaW50IFwiJXNcIiIsCisJCQkJCQlOYW1lU3Ry KHJpaW5mby0+Y29ubmFtZSkpLAorCQkJCSBlcnJoaW50KCJZb3UgbXVzdCB1c2UgYW4gb3Bl cmF0b3IgY2xhc3Mgd2l0aCBhIG1hdGNoaW5nIENvbnRhaW5lZEJ5IG9wZXJhdG9yLiIpKSk7 CisJKm9wbmFtZSA9IGdldF9vcG5hbWUob2lkKTsKKworCW9pZCA9IHJpaW5mby0+cGVyaW9k X3JlZmVyZW5jZWRfYWdnX3Byb2M7CisJaWYgKCFPaWRJc1ZhbGlkKG9pZCkpCisJCWVyZXBv cnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJ CQkgZXJybXNnKCJubyByZWZlcmVuY2VkYWdnIHN1cHBvcnQgZnVuY3Rpb24gZm9yIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgXCIlc1wiIiwKKwkJCQkJCU5hbWVTdHIocmlpbmZvLT5jb25u YW1lKSksCisJCQkJIGVycmhpbnQoIllvdSBtdXN0IHVzZSBhbiBvcGVyYXRvciBjbGFzcyB3 aXRoIGEgcmVmZXJlbmNlZGFnZyBzdXBwb3J0IGZ1bmN0aW9uLiIpKSk7CisJKmFnZ25hbWUg PSBnZXRfZnVuY19uYW1lX2FuZF9uYW1lc3BhY2Uob2lkKTsKK30KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ydWxldXRpbHMuYwppbmRleCAyNWFjMGFkMWJjLi4xYmYzYWViMzQyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC0zMzksNyArMzM5LDcgQEAgc3RhdGljIGNoYXIg KnBnX2dldF92aWV3ZGVmX3dvcmtlcihPaWQgdmlld29pZCwKIAkJCQkJCQkJICAgaW50IHBy ZXR0eUZsYWdzLCBpbnQgd3JhcENvbHVtbik7CiBzdGF0aWMgY2hhciAqcGdfZ2V0X3RyaWdn ZXJkZWZfd29ya2VyKE9pZCB0cmlnaWQsIGJvb2wgcHJldHR5KTsKIHN0YXRpYyBpbnQJZGVj b21waWxlX2NvbHVtbl9pbmRleF9hcnJheShEYXR1bSBjb2x1bW5faW5kZXhfYXJyYXksIE9p ZCByZWxJZCwKLQkJCQkJCQkJCQkgYm9vbCB3aXRob3V0T3ZlcmxhcHMsIFN0cmluZ0luZm8g YnVmKTsKKwkJCQkJCQkJCQkgYm9vbCB3aXRob3V0T3ZlcmxhcHMsIGJvb2wgd2l0aFBlcmlv ZCwgU3RyaW5nSW5mbyBidWYpOwogc3RhdGljIGNoYXIgKnBnX2dldF9ydWxlZGVmX3dvcmtl cihPaWQgcnVsZW9pZCwgaW50IHByZXR0eUZsYWdzKTsKIHN0YXRpYyBjaGFyICpwZ19nZXRf aW5kZXhkZWZfd29ya2VyKE9pZCBpbmRleHJlbGlkLCBpbnQgY29sbm8sCiAJCQkJCQkJCQlj b25zdCBPaWQgKmV4Y2x1ZGVPcHMsCkBAIC0yMjQ3LDcgKzIyNDcsOSBAQCBwZ19nZXRfY29u c3RyYWludGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwK IAkJCQl2YWwgPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKENPTlNUUk9JRCwgdHVwLAogCQkJ CQkJCQkJCQkgQW51bV9wZ19jb25zdHJhaW50X2NvbmtleSk7CiAKLQkJCQlkZWNvbXBpbGVf Y29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsIGZhbHNlLCAmYnVm KTsKKwkJCQkvKiBJZiBpdCBpcyBhIHRlbXBvcmFsIGZvcmVpZ24ga2V5IHRoZW4gaXQgdXNl cyBQRVJJT0QuICovCisJCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNv bkZvcm0tPmNvbnJlbGlkLCBmYWxzZSwKKwkJCQkJCQkJCQkJIGNvbkZvcm0tPmNvbndpdGhv dXRvdmVybGFwcywgJmJ1Zik7CiAKIAkJCQkvKiBhZGQgZm9yZWlnbiByZWxhdGlvbiBuYW1l ICovCiAJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmLCAiKSBSRUZFUkVOQ0VTICVzKCIsCkBA IC0yMjU4LDcgKzIyNjAsOCBAQCBwZ19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoT2lkIGNv bnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKIAkJCQl2YWwgPSBTeXNDYWNoZUdldEF0 dHJOb3ROdWxsKENPTlNUUk9JRCwgdHVwLAogCQkJCQkJCQkJCQkgQW51bV9wZ19jb25zdHJh aW50X2NvbmZrZXkpOwogCi0JCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWws IGNvbkZvcm0tPmNvbmZyZWxpZCwgZmFsc2UsICZidWYpOworCQkJCWRlY29tcGlsZV9jb2x1 bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25mcmVsaWQsIGZhbHNlLAorCQkJCQkJ CQkJCQkgY29uRm9ybS0+Y29ud2l0aG91dG92ZXJsYXBzLCAmYnVmKTsKIAogCQkJCWFwcGVu ZFN0cmluZ0luZm9DaGFyKCZidWYsICcpJyk7CiAKQEAgLTIzNDQsNyArMjM0Nyw3IEBAIHBn X2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3RyYWludElkLCBib29sIGZ1bGxD b21tYW5kLAogCQkJCWlmICghaXNudWxsKQogCQkJCXsKIAkJCQkJYXBwZW5kU3RyaW5nSW5m b1N0cmluZygmYnVmLCAiICgiKTsKLQkJCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJh eSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCBmYWxzZSwgJmJ1Zik7CisJCQkJCWRlY29tcGls ZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgZmFsc2UsIGZh bHNlLCAmYnVmKTsKIAkJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmJ1ZiwgJyknKTsKIAkJ CQl9CiAKQEAgLTIzNzksNyArMjM4Miw3IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtl cihPaWQgY29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJCXZhbCA9IFN5c0Nh Y2hlR2V0QXR0ck5vdE51bGwoQ09OU1RST0lELCB0dXAsCiAJCQkJCQkJCQkJCSBBbnVtX3Bn X2NvbnN0cmFpbnRfY29ua2V5KTsKIAotCQkJCWtleWF0dHMgPSBkZWNvbXBpbGVfY29sdW1u X2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsIGNvbkZvcm0tPmNvbndpdGhv dXRvdmVybGFwcywgJmJ1Zik7CisJCQkJa2V5YXR0cyA9IGRlY29tcGlsZV9jb2x1bW5faW5k ZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgY29uRm9ybS0+Y29ud2l0aG91dG92 ZXJsYXBzLCBmYWxzZSwgJmJ1Zik7CiAKIAkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcigmYnVm LCAnKScpOwogCkBAIC0yNTc1LDcgKzI1NzgsNyBAQCBwZ19nZXRfY29uc3RyYWludGRlZl93 b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKICAqLwogc3RhdGlj IGludAogZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheShEYXR1bSBjb2x1bW5faW5kZXhf YXJyYXksIE9pZCByZWxJZCwKLQkJCQkJCQkgYm9vbCB3aXRob3V0T3ZlcmxhcHMsIFN0cmlu Z0luZm8gYnVmKQorCQkJCQkJCSBib29sIHdpdGhvdXRPdmVybGFwcywgYm9vbCB3aXRoUGVy aW9kLCBTdHJpbmdJbmZvIGJ1ZikKIHsKIAlEYXR1bQkgICAqa2V5czsKIAlpbnQJCQluS2V5 czsKQEAgLTI1OTQsNyArMjU5Nyw5IEBAIGRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXko RGF0dW0gY29sdW1uX2luZGV4X2FycmF5LCBPaWQgcmVsSWQsCiAJCWlmIChqID09IDApCiAJ CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgcXVvdGVfaWRlbnRpZmllcihjb2xOYW1l KSk7CiAJCWVsc2UKLQkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiLCAlcyIsIHF1b3RlX2lk ZW50aWZpZXIoY29sTmFtZSkpOworCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIsICVzJXMi LAorCQkJCQkJCSAod2l0aFBlcmlvZCAmJiBqID09IG5LZXlzIC0gMSkgPyAiUEVSSU9EICIg OiAiIiwKKwkJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihjb2xOYW1lKSk7CiAJfQogCWlmICh3 aXRob3V0T3ZlcmxhcHMpCiAJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiIFdJVEhP VVQgT1ZFUkxBUFMiKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xz eXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKaW5kZXgg ZmM2ZDI2N2U0NC4uMTJhZWRlNWRhOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvbHN5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2Nh Y2hlLmMKQEAgLTE2MjcsNiArMTYyNywzNyBAQCBnZXRfZnVuY19uYW1lKE9pZCBmdW5jaWQp CiAJCXJldHVybiBOVUxMOwogfQogCisvKgorICogZ2V0X2Z1bmNfbmFtZV9hbmRfbmFtZXNw YWNlCisgKgkgIHJldHVybnMgdGhlIHNjaGVtYS1xdWFsaWZpZWQgbmFtZSBvZiB0aGUgZnVu Y3Rpb24gd2l0aCB0aGUgZ2l2ZW4gZnVuY2lkCisgKgorICogTm90ZTogcmV0dXJucyBhIHBh bGxvYydkIGNvcHkgb2YgdGhlIHN0cmluZywgb3IgTlVMTCBpZiBubyBzdWNoIGZ1bmN0aW9u LgorICovCitjaGFyICoKK2dldF9mdW5jX25hbWVfYW5kX25hbWVzcGFjZShPaWQgZnVuY2lk KQoreworCUhlYXBUdXBsZQl0cDsKKworCXRwID0gU2VhcmNoU3lzQ2FjaGUxKFBST0NPSUQs IE9iamVjdElkR2V0RGF0dW0oZnVuY2lkKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHAp KQorCXsKKwkJRm9ybV9wZ19wcm9jIGZ1bmN0dXAgPSAoRm9ybV9wZ19wcm9jKSBHRVRTVFJV Q1QodHApOworCQljaGFyCSAgICpuYW1lc3AgPSBnZXRfbmFtZXNwYWNlX25hbWUoZnVuY3R1 cC0+cHJvbmFtZXNwYWNlKTsKKwkJY2hhcgkgICAqZnVuYyA9IE5hbWVTdHIoZnVuY3R1cC0+ cHJvbmFtZSk7CisJCWNoYXIJICAgKnJlc3VsdDsKKwkJaW50CQkJbGVuID0gc3RybGVuKG5h bWVzcCkgKyBzdHJsZW4oZnVuYykgKyAyOworCisJCXJlc3VsdCA9IHBhbGxvYyhsZW4gKiBz aXplb2YoY2hhcikpOworCQlzbnByaW50ZihyZXN1bHQsIGxlbiwgIiVzLiVzIiwgbmFtZXNw LCBmdW5jKTsKKworCQlwZnJlZShuYW1lc3ApOworCQlSZWxlYXNlU3lzQ2FjaGUodHApOwor CQlyZXR1cm4gcmVzdWx0OworCX0KKwllbHNlCisJCXJldHVybiBOVUxMOworfQorCiAvKgog ICogZ2V0X2Z1bmNfbmFtZXNwYWNlCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19jb25zdHJhaW50LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFp bnQuaAppbmRleCBjMTdiMWU5ZDMxLi4wY2MxNWE1MGQ3IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX2NvbnN0cmFpbnQuaApAQCAtMTI3LDE5ICsxMjcsMTkgQEAgQ0FUQUxPRyhwZ19jb25z dHJhaW50LDI2MDYsQ29uc3RyYWludFJlbGF0aW9uSWQpCiAJaW50MTYJCWNvbmZrZXlbMV07 CiAKIAkvKgotCSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRoZSBQSyA9IEZL IGVxdWFsaXR5IG9wZXJhdG9ycyBmb3IgZWFjaAorCSAqIElmIGEgZm9yZWlnbiBrZXksIHRo ZSBPSURzIG9mIHRoZSBQSyA9IEZLIGNvbXBhcmlzb24gb3BlcmF0b3JzIGZvciBlYWNoCiAJ ICogY29sdW1uIG9mIHRoZSBjb25zdHJhaW50CiAJICovCiAJT2lkCQkJY29ucGZlcW9wWzFd IEJLSV9MT09LVVAocGdfb3BlcmF0b3IpOwogCiAJLyoKLQkgKiBJZiBhIGZvcmVpZ24ga2V5 LCB0aGUgT0lEcyBvZiB0aGUgUEsgPSBQSyBlcXVhbGl0eSBvcGVyYXRvcnMgZm9yIGVhY2gK KwkgKiBJZiBhIGZvcmVpZ24ga2V5LCB0aGUgT0lEcyBvZiB0aGUgUEsgPSBQSyBjb21wYXJp c29uIG9wZXJhdG9ycyBmb3IgZWFjaAogCSAqIGNvbHVtbiBvZiB0aGUgY29uc3RyYWludCAo aS5lLiwgZXF1YWxpdHkgZm9yIHRoZSByZWZlcmVuY2VkIGNvbHVtbnMpCiAJICovCiAJT2lk CQkJY29ucHBlcW9wWzFdIEJLSV9MT09LVVAocGdfb3BlcmF0b3IpOwogCiAJLyoKLQkgKiBJ ZiBhIGZvcmVpZ24ga2V5LCB0aGUgT0lEcyBvZiB0aGUgRksgPSBGSyBlcXVhbGl0eSBvcGVy YXRvcnMgZm9yIGVhY2gKKwkgKiBJZiBhIGZvcmVpZ24ga2V5LCB0aGUgT0lEcyBvZiB0aGUg RksgPSBGSyBjb21wYXJpc29uIG9wZXJhdG9ycyBmb3IgZWFjaAogCSAqIGNvbHVtbiBvZiB0 aGUgY29uc3RyYWludCAoaS5lLiwgZXF1YWxpdHkgZm9yIHRoZSByZWZlcmVuY2luZyBjb2x1 bW5zKQogCSAqLwogCU9pZAkJCWNvbmZmZXFvcFsxXSBCS0lfTE9PS1VQKHBnX29wZXJhdG9y KTsKQEAgLTE4MSw3ICsxODEsNyBAQCBERUNMQVJFX0lOREVYKHBnX2NvbnN0cmFpbnRfY29u cGFyZW50aWRfaW5kZXgsIDI1NzksIENvbnN0cmFpbnRQYXJlbnRJbmRleElkLCBwZwogCiAv KiBjb25rZXkgY2FuIGNvbnRhaW4gemVybyAoSW52YWxpZEF0dHJOdW1iZXIpIGlmIGEgd2hv bGUtcm93IFZhciBpcyB1c2VkICovCiBERUNMQVJFX0FSUkFZX0ZPUkVJR05fS0VZX09QVCgo Y29ucmVsaWQsIGNvbmtleSksIHBnX2F0dHJpYnV0ZSwgKGF0dHJlbGlkLCBhdHRudW0pKTsK LURFQ0xBUkVfQVJSQVlfRk9SRUlHTl9LRVkoKGNvbmZyZWxpZCwgY29uZmtleSksIHBnX2F0 dHJpYnV0ZSwgKGF0dHJlbGlkLCBhdHRudW0pKTsKK0RFQ0xBUkVfQVJSQVlfRk9SRUlHTl9L RVlfT1BUKChjb25mcmVsaWQsIGNvbmZrZXkpLCBwZ19hdHRyaWJ1dGUsIChhdHRyZWxpZCwg YXR0bnVtKSk7CiAKICNpZmRlZiBFWFBPU0VfVE9fQ0xJRU5UX0NPREUKIApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQKaW5kZXggMTc4N2FmYmE3NC4uODc0Y2E5OGVkNiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0zOTQ1LDYgKzM5NDUsMzAgQEAKICAgcHJvcmV0dHlw ZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAogICBwcm9zcmMgPT4gJ1JJX0ZL ZXlfbm9hY3Rpb25fdXBkJyB9LAogCisjIFRlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0 eSBjb25zdHJhaW50IHRyaWdnZXJzCit7IG9pZCA9PiAnNjEyMicsIGRlc2NyID0+ICd0ZW1w b3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgRk9SRUlHTiBLRVkgLi4uIFJFRkVSRU5DRVMn LAorICBwcm9uYW1lID0+ICdUUklfRktleV9jaGVja19pbnMnLCBwcm92b2xhdGlsZSA9PiAn dicsIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLAorICBwcm9hcmd0eXBlcyA9PiAnJywgcHJv c3JjID0+ICdUUklfRktleV9jaGVja19pbnMnIH0sCit7IG9pZCA9PiAnNjEyMycsIGRlc2Ny ID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgRk9SRUlHTiBLRVkgLi4uIFJF RkVSRU5DRVMnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9jaGVja191cGQnLCBwcm92b2xh dGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLAorICBwcm9hcmd0eXBlcyA9 PiAnJywgcHJvc3JjID0+ICdUUklfRktleV9jaGVja191cGQnIH0sCit7IG9pZCA9PiAnNjEy NicsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gREVMRVRF IFJFU1RSSUNUJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfcmVzdHJpY3RfZGVsJywgcHJv dm9sYXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywgcHJvYXJndHlw ZXMgPT4gJycsCisgIHByb3NyYyA9PiAnVFJJX0ZLZXlfcmVzdHJpY3RfZGVsJyB9LAoreyBv aWQgPT4gJzYxMjcnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5 IE9OIFVQREFURSBSRVNUUklDVCcsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3Jlc3RyaWN0 X3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKKyAgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcics IHByb2FyZ3R5cGVzID0+ICcnLAorICBwcm9zcmMgPT4gJ1RSSV9GS2V5X3Jlc3RyaWN0X3Vw ZCcgfSwKK3sgb2lkID0+ICc2MTMyJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFs IGludGVncml0eSBPTiBERUxFVEUgTk8gQUNUSU9OJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZL ZXlfbm9hY3Rpb25fZGVsJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4gJycsCisgIHByb3NyYyA9PiAnVFJJX0ZLZXlf bm9hY3Rpb25fZGVsJyB9LAoreyBvaWQgPT4gJzYxMzMnLCBkZXNjciA9PiAndGVtcG9yYWwg cmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIFVQREFURSBOTyBBQ1RJT04nLAorICBwcm9uYW1l ID0+ICdUUklfRktleV9ub2FjdGlvbl91cGQnLCBwcm92b2xhdGlsZSA9PiAndicsCisgIHBy b3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKKyAgcHJvc3JjID0+ ICdUUklfRktleV9ub2FjdGlvbl91cGQnIH0sCisKIHsgb2lkID0+ICcxNjY2JywKICAgcHJv bmFtZSA9PiAndmFyYml0ZXEnLCBwcm9sZWFrcHJvb2YgPT4gJ3QnLCBwcm9yZXR0eXBlID0+ ICdib29sJywKICAgcHJvYXJndHlwZXMgPT4gJ3ZhcmJpdCB2YXJiaXQnLCBwcm9zcmMgPT4g J2JpdGVxJyB9LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmgg Yi9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaAppbmRleCAxZjczOGIwMTI5Li5lMmI5 ZGNhMWUwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaAorKysg Yi9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaApAQCAtNTAsOCArNTAsMTAgQEAgZXh0 ZXJuIGJvb2wgQ2hlY2tJbmRleENvbXBhdGlibGUoT2lkIG9sZElkLAogZXh0ZXJuIE9pZAlH ZXREZWZhdWx0T3BDbGFzcyhPaWQgdHlwZV9pZCwgT2lkIGFtX2lkKTsKIGV4dGVybiBPaWQJ UmVzb2x2ZU9wQ2xhc3MoY29uc3QgTGlzdCAqb3BjbGFzcywgT2lkIGF0dHJUeXBlLAogCQkJ CQkJICAgY29uc3QgY2hhciAqYWNjZXNzTWV0aG9kTmFtZSwgT2lkIGFjY2Vzc01ldGhvZElk KTsKLWV4dGVybiB2b2lkIEdldE9wZXJhdG9yRnJvbUNhbm9uaWNhbFN0cmF0ZWd5KE9pZCBv cGNsYXNzLCBPaWQgYXR0dHlwZSwKLQkJCQkJCQkJCQkJIGNvbnN0IGNoYXIgKm9wbmFtZSwg T2lkICpvcGlkLAorZXh0ZXJuIHZvaWQgR2V0T3BlcmF0b3JGcm9tQ2Fub25pY2FsU3RyYXRl Z3koT2lkIG9wY2xhc3MsIE9pZCByaHN0eXBlLAorCQkJCQkJCQkJCQkgY29uc3QgY2hhciAq b3BuYW1lLAorCQkJCQkJCQkJCQkgY29uc3QgY2hhciAqY29udGV4dCwKKwkJCQkJCQkJCQkJ IE9pZCAqb3BpZCwKIAkJCQkJCQkJCQkJIFN0cmF0ZWd5TnVtYmVyICpzdHJhdCk7CiAKIC8q IGNvbW1hbmRzL2Z1bmN0aW9uY21kcy5jICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j b21tYW5kcy90YWJsZWNtZHMuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5o CmluZGV4IGE5YzY4MjU2MDEuLjgyYTE0NDRkMzQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NvbW1hbmRzL3RhYmxlY21kcy5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxl Y21kcy5oCkBAIC0xMDUsNSArMTA1LDggQEAgZXh0ZXJuIHZvaWQgUmFuZ2VWYXJDYWxsYmFj a093bnNSZWxhdGlvbihjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCiAJCQkJCQkJCQkJIE9p ZCByZWxJZCwgT2lkIG9sZFJlbElkLCB2b2lkICphcmcpOwogZXh0ZXJuIGJvb2wgUGFydENv bnN0cmFpbnRJbXBsaWVkQnlSZWxDb25zdHJhaW50KFJlbGF0aW9uIHNjYW5yZWwsCiAJCQkJ CQkJCQkJCQkgTGlzdCAqcGFydENvbnN0cmFpbnQpOworZXh0ZXJuIHZvaWQgRmluZEZLUGVy aW9kT3BlcnNBbmRQcm9jcyhPaWQgb3BjbGFzcywKKwkJCQkJCQkJCSAgT2lkICpwZXJpb2Rv cGVyb2lkLAorCQkJCQkJCQkJICBPaWQgKnBlcmlvZHByb2NvaWQpOwogCiAjZW5kaWYJCQkJ CQkJLyogVEFCTEVDTURTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCAwOTg5 OTBkZDE2Li4wM2M1ZTcwN2I5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0yNTYz LDYgKzI1NjMsMTAgQEAgdHlwZWRlZiBlbnVtIENvbnN0clR5cGUJCQkvKiB0eXBlcyBvZiBj b25zdHJhaW50cyAqLwogI2RlZmluZSBGS0NPTlNUUl9NQVRDSF9QQVJUSUFMCQkncCcKICNk ZWZpbmUgRktDT05TVFJfTUFUQ0hfU0lNUExFCQkncycKIAorLyogRm9yZWlnbiBrZXkgd2l0 aCBQRVJJT0QgcG9zaXRpb25zICovCisjZGVmaW5lIEZLQ09OU1RSX1BFUklPRF9PUF9DT05U QUlORURfQlkJMAorI2RlZmluZSBGS0NPTlNUUl9QRVJJT0RfUFJPQ19SRUZFUkVOQ0VEX0FH RyAwCisKIHR5cGVkZWYgc3RydWN0IENvbnN0cmFpbnQKIHsKIAlwZ19ub2RlX2F0dHIoY3Vz dG9tX3JlYWRfd3JpdGUpCkBAIC0yNjA5LDcgKzI2MTMsOSBAQCB0eXBlZGVmIHN0cnVjdCBD b25zdHJhaW50CiAJLyogRmllbGRzIHVzZWQgZm9yIEZPUkVJR04gS0VZIGNvbnN0cmFpbnRz OiAqLwogCVJhbmdlVmFyICAgKnBrdGFibGU7CQkvKiBQcmltYXJ5IGtleSB0YWJsZSAqLwog CUxpc3QJICAgKmZrX2F0dHJzOwkJLyogQXR0cmlidXRlcyBvZiBmb3JlaWduIGtleSAqLwor CU5vZGUJICAgKmZrX3BlcmlvZDsJCS8qIFN0cmluZyBub2RlIG5hbWluZyBQZXJpb2Qgb3Ig cmFuZ2UgY29sdW1uICovCiAJTGlzdAkgICAqcGtfYXR0cnM7CQkvKiBDb3JyZXNwb25kaW5n IGF0dHJzIGluIFBLIHRhYmxlICovCisJTm9kZQkgICAqcGtfcGVyaW9kOwkJLyogU3RyaW5n IG5vZGUgbmFtaW5nIFBlcmlvZCBvciByYW5nZSBjb2x1bW4gKi8KIAljaGFyCQlma19tYXRj aHR5cGU7CS8qIEZVTEwsIFBBUlRJQUwsIFNJTVBMRSAqLwogCWNoYXIJCWZrX3VwZF9hY3Rp b247CS8qIE9OIFVQREFURSBhY3Rpb24gKi8KIAljaGFyCQlma19kZWxfYWN0aW9uOwkvKiBP TiBERUxFVEUgYWN0aW9uICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIva3ds aXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKaW5kZXggNTk4NGRjZmE0Yi4u Y2NmNWJmOGFhNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisr KyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaApAQCAtMzI2LDYgKzMyNiw3IEBAIFBH X0tFWVdPUkQoInBhcnRpYWwiLCBQQVJUSUFMLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCiBQR19LRVlXT1JEKCJwYXJ0aXRpb24iLCBQQVJUSVRJT04sIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhc3NpbmciLCBQQVNTSU5HLCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXNzd29yZCIs IFBBU1NXT1JELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JE KCJwZXJpb2QiLCBQRVJJT0QsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJwbGFjaW5nIiwgUExBQ0lORywgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoInBsYW5zIiwgUExBTlMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKIFBHX0tFWVdPUkQoInBvbGljeSIsIFBPTElDWSwgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2Nh Y2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAppbmRleCBjMjJjYWJkZjQy Li5lODJmYjZmNDI1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUu aAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApAQCAtMTIwLDYgKzEyMCw3 IEBAIGV4dGVybiBPaWQJZ2V0X25lZ2F0b3IoT2lkIG9wbm8pOwogZXh0ZXJuIFJlZ1Byb2Nl ZHVyZSBnZXRfb3BycmVzdChPaWQgb3Bubyk7CiBleHRlcm4gUmVnUHJvY2VkdXJlIGdldF9v cHJqb2luKE9pZCBvcG5vKTsKIGV4dGVybiBjaGFyICpnZXRfZnVuY19uYW1lKE9pZCBmdW5j aWQpOworZXh0ZXJuIGNoYXIgKmdldF9mdW5jX25hbWVfYW5kX25hbWVzcGFjZShPaWQgZnVu Y2lkKTsKIGV4dGVybiBPaWQJZ2V0X2Z1bmNfbmFtZXNwYWNlKE9pZCBmdW5jaWQpOwogZXh0 ZXJuIE9pZAlnZXRfZnVuY19yZXR0eXBlKE9pZCBmdW5jaWQpOwogZXh0ZXJuIGludAlnZXRf ZnVuY19uYXJncyhPaWQgZnVuY2lkKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CmluZGV4IDcyNmU5NDEwMmIuLjM0ZjBlN2IzYmUg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFw cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBz Lm91dApAQCAtMzkzLDMgKzM5Myw1NTQgQEAgU0VMRUNUICogRlJPTSB0cDIgT1JERVIgQlkg aWQsIHZhbGlkX2F0OwogKDEgcm93KQogCiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlv bmVkOworLS0KKy0tIHRlc3QgRksgZGVwZW5kZW5jaWVzCistLQorLS0gY2FuJ3QgZHJvcCBh IHJhbmdlIHJlZmVyZW5jZWQgYnkgYW4gRkssIHVubGVzcyB3aXRoIENBU0NBREUKK0NSRUFU RSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3Jhbmdl LAorCUNPTlNUUkFJTlQgdGVtcG9yYWwzX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQg V0lUSE9VVCBPVkVSTEFQUykKKyk7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJu ZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGlu dDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBL RVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBv cmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlk X2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsMyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7 CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgRFJPUCBDT0xVTU4gdmFsaWRfYXQ7CitFUlJPUjog IGNhbm5vdCBkcm9wIGNvbHVtbiB2YWxpZF9hdCBvZiB0YWJsZSB0ZW1wb3JhbDMgYmVjYXVz ZSBvdGhlciBvYmplY3RzIGRlcGVuZCBvbiBpdAorREVUQUlMOiAgY29uc3RyYWludCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrIG9uIHRhYmxlIHRlbXBvcmFsX2ZrX3JuZzJybmcgZGVwZW5k cyBvbiBjb2x1bW4gdmFsaWRfYXQgb2YgdGFibGUgdGVtcG9yYWwzCitISU5UOiAgVXNlIERS T1AgLi4uIENBU0NBREUgdG8gZHJvcCB0aGUgZGVwZW5kZW50IG9iamVjdHMgdG9vLgorQUxU RVIgVEFCTEUgdGVtcG9yYWwzIERST1AgQ09MVU1OIHZhbGlkX2F0IENBU0NBREU7CitOT1RJ Q0U6ICBkcm9wIGNhc2NhZGVzIHRvIGNvbnN0cmFpbnQgdGVtcG9yYWxfZmtfcm5nMnJuZ19m ayBvbiB0YWJsZSB0ZW1wb3JhbF9ma19ybmcycm5nCitEUk9QIFRBQkxFIHRlbXBvcmFsX2Zr X3JuZzJybmc7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKy0tCistLSB0ZXN0IEZPUkVJR04g S0VZLCByYW5nZSByZWZlcmVuY2VzIHJhbmdlCistLQorLS0gQ2FuJ3QgY3JlYXRlIGEgRksg d2l0aCBhIG1pc21hdGNoZWQgcmFuZ2UgdHlwZQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2Zr X3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBpbnQ0cmFuZ2UsCisJcGFy ZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsy IFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrMiBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9E IHZhbGlkX2F0KQorKTsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9y YWxfZmtfcm5nMnJuZ19mazIiIGNhbm5vdCBiZSBpbXBsZW1lbnRlZAorREVUQUlMOiAgS2V5 IGNvbHVtbnMgInZhbGlkX2F0IiBhbmQgInZhbGlkX2F0IiBhcmUgb2YgaW5jb21wYXRpYmxl IHR5cGVzOiBpbnQ0cmFuZ2UgYW5kIHRzcmFuZ2UuCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxf Zmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFy ZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsg UFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2 YWxpZF9hdCkKKyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmc7CistLSB3aXRo IG1pc21hdGNoZWQgUEVSSU9EIGNvbHVtbnM6CistLSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpIFJFRkVSRU5DRVMgKGlkLCB2YWxpZF9hdCkKK0NSRUFURSBUQUJMRSB0ZW1wb3Jh bF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlw YXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19w ayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgdmFsaWRf YXQpCispOworRVJST1I6ICBmb3JlaWduIGtleSB1c2VzIFBFUklPRCBvbiB0aGUgcmVmZXJl bmNpbmcgdGFibGUgYnV0IG5vdCB0aGUgcmVmZXJlbmNlZCB0YWJsZQorLS0gKHBhcmVudF9p ZCwgdmFsaWRfYXQpIFJFRkVSRU5DRVMgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCitDUkVBVEUg VEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0 IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFs X2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwg UEVSSU9EIHZhbGlkX2F0KQorKTsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgdXNlcyBQRVJJT0Qg b24gdGhlIHJlZmVyZW5jZWQgdGFibGUgYnV0IG5vdCB0aGUgcmVmZXJlbmNpbmcgdGFibGUK Ky0tIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkgUkVGRVJFTkNFUyAoaWQpCitDUkVB VEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlk X2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBv cmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBL RVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFs X3JuZyAoaWQpCispOworRVJST1I6ICBmb3JlaWduIGtleSB1c2VzIFBFUklPRCBvbiB0aGUg cmVmZXJlbmNpbmcgdGFibGUgYnV0IG5vdCB0aGUgcmVmZXJlbmNlZCB0YWJsZQorLS0gKHBh cmVudF9pZCkgUkVGRVJFTkNFUyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKK0NSRUFURSBUQUJM RSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNy YW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtf cm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFy ZW50X2lkKQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9h dCkKKyk7CitFUlJPUjogIGZvcmVpZ24ga2V5IHVzZXMgUEVSSU9EIG9uIHRoZSByZWZlcmVu Y2VkIHRhYmxlIGJ1dCBub3QgdGhlIHJlZmVyZW5jaW5nIHRhYmxlCistLSB3aXRoIGluZmVy cmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBh cmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3Br IFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKyk7CitEUk9QIFRB QkxFIHRlbXBvcmFsX2ZrX3JuZzJybmc7CistLSBzaG91bGQgZmFpbCBiZWNhdXNlIG9mIGR1 cGxpY2F0ZSByZWZlcmVuY2VkIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50 X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJ TUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5U IHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHBhcmVudF9pZCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgaWQp CispOworRVJST1I6ICBmb3JlaWduIGtleSByZWZlcmVuY2VkLWNvbHVtbnMgbGlzdCBtdXN0 IG5vdCBjb250YWluIGR1cGxpY2F0ZXMKKy0tIFR3byBzY2FsYXIgY29sdW1ucworQ1JFQVRF IFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQxIGludDRyYW5nZSwKKwlwYXJlbnRfaWQyIGludDRy YW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX3BrIFBSSU1BUlkgS0VZ IChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3Jh bF9mazJfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwg UEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIgKGlkMSwgaWQy LCBQRVJJT0QgdmFsaWRfYXQpCispOworXGQgdGVtcG9yYWxfZmsyX3JuZzJybmcKKyAgICAg ICAgICAgVGFibGUgInB1YmxpYy50ZW1wb3JhbF9mazJfcm5nMnJuZyIKKyAgIENvbHVtbiAg IHwgICBUeXBlICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisg aWQgICAgICAgICB8IGludDRyYW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgdmFs aWRfYXQgICB8IHRzcmFuZ2UgICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgcGFyZW50 X2lkMSB8IGludDRyYW5nZSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgcGFyZW50X2lk MiB8IGludDRyYW5nZSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJbmRleGVzOgorICAg ICJ0ZW1wb3JhbF9mazJfcm5nMnJuZ19wayIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKQorRm9yZWlnbi1rZXkgY29uc3RyYWludHM6CisgICAgInRlbXBv cmFsX2ZrMl9ybmcycm5nX2ZrIiBGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lk MiwgUEVSSU9EIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIoaWQxLCBpZDIs IFBFUklPRCB2YWxpZF9hdCkKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZzsK Ky0tCistLSB0ZXN0IEFMVEVSIFRBQkxFIEFERCBDT05TVFJBSU5UCistLQorQ1JFQVRFIFRB QkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0 c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UykKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2 YWxpZF9hdCk7CistLSBUd28gc2NhbGFyIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgdGVtcG9y YWxfZmsyX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAor CXBhcmVudF9pZDEgaW50NHJhbmdlLAorCXBhcmVudF9pZDIgaW50NHJhbmdlLAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcy cm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsKKwlGT1JFSUdO IEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVS RU5DRVMgdGVtcG9yYWxfcm5nMiAoaWQxLCBpZDIsIFBFUklPRCB2YWxpZF9hdCk7CitcZCB0 ZW1wb3JhbF9mazJfcm5nMnJuZworICAgICAgICAgICBUYWJsZSAicHVibGljLnRlbXBvcmFs X2ZrMl9ybmcycm5nIgorICAgQ29sdW1uICAgfCAgIFR5cGUgICAgfCBDb2xsYXRpb24gfCBO dWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZCAgICAgICAgIHwgaW50NHJhbmdlIHwgICAg ICAgICAgIHwgbm90IG51bGwgfCAKKyB2YWxpZF9hdCAgIHwgdHNyYW5nZSAgIHwgICAgICAg ICAgIHwgbm90IG51bGwgfCAKKyBwYXJlbnRfaWQxIHwgaW50NHJhbmdlIHwgICAgICAgICAg IHwgICAgICAgICAgfCAKKyBwYXJlbnRfaWQyIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwg ICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgInRlbXBvcmFsX2ZrMl9ybmcycm5nX3BrIiBQ UklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCitGb3JlaWduLWtl eSBjb25zdHJhaW50czoKKyAgICAidGVtcG9yYWxfZmsyX3JuZzJybmdfZmsiIEZPUkVJR04g S0VZIChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpIFJFRkVSRU5D RVMgdGVtcG9yYWxfcm5nMihpZDEsIGlkMiwgUEVSSU9EIHZhbGlkX2F0KQorCistLSB3aXRo IGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlLCBhbmQgd3JvbmcgY29sdW1u IHR5cGU6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCisJQUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZ UEUgZGF0ZXJhbmdlIFVTSU5HIGRhdGVyYW5nZShsb3dlcih2YWxpZF9hdCk6OmRhdGUsIHVw cGVyKHZhbGlkX2F0KTo6ZGF0ZSk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n CisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Ju ZzsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJu Z19mayIgY2Fubm90IGJlIGltcGxlbWVudGVkCitERVRBSUw6ICBLZXkgY29sdW1ucyAidmFs aWRfYXQiIGFuZCAidmFsaWRfYXQiIGFyZSBvZiBpbmNvbXBhdGlibGUgdHlwZXM6IGRhdGVy YW5nZSBhbmQgdHNyYW5nZS4KK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlB TFRFUiBDT0xVTU4gdmFsaWRfYXQgVFlQRSB0c3JhbmdlIFVTSU5HIHRzcmFuZ2UobG93ZXIo dmFsaWRfYXQpLCB1cHBlcih2YWxpZF9hdCkpOworLS0gd2l0aCBpbmZlcnJlZCBQSyBvbiB0 aGUgcmVmZXJlbmNlZCB0YWJsZToKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcK KwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5n OworLS0gc2hvdWxkIGZhaWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1 bW5zOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5U IHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsyCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHBhcmVudF9pZCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCBp ZCk7CitFUlJPUjogIGZvcmVpZ24ga2V5IHJlZmVyZW5jZWQtY29sdW1ucyBsaXN0IG11c3Qg bm90IGNvbnRhaW4gZHVwbGljYXRlcworLS0KKy0tIHRlc3Qgd2l0aCByb3dzIGFscmVhZHkK Ky0tCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nOworQUxURVIgVEFCTEUgdGVt cG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X2ZrOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMSwxXScs IHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMScpLCAnWzEsMV0nKTsKK0FMVEVS IFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0 KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWls OgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmc7CitFUlJPUjogIGluc2VydCBv ciB1cGRhdGUgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciIHZpb2xhdGVzIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBL ZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShbMSwyKSwgWyJUdWUgSmFuIDAyIDAwOjAwOjAw IDIwMTgiLCJTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgbm90IHByZXNlbnQgaW4g dGFibGUgInRlbXBvcmFsX3JuZyIuCistLSBva2F5IGFnYWluOgorREVMRVRFIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlB REQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBh cmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOwor LS0KKy0tIHRlc3QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYKKy0tCitTRUxFQ1QgcGdfZ2V0X2Nv bnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyhp ZCwgUEVSSU9EIHZhbGlkX2F0KQorKDEgcm93KQorCistLQorLS0gdGVzdCBGSyBjaGlsZCBp bnNlcnRzCistLQorSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdb MSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMScpLCAnWzEsMV0nKTsK Ky0tIHNob3VsZCBmYWlsOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxV RVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScpLCAnWzEs MV0nKTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidGVtcG9yYWxfZmtf cm5nMnJuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtf cm5nMnJuZ19mayIKK0RFVEFJTDogIEtleSAocGFyZW50X2lkLCB2YWxpZF9hdCk9KFsxLDIp LCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIlN1biBBcHIgMDEgMDA6MDA6MDAgMjAx OCIpKSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAidGVtcG9yYWxfcm5nIi4KKy0tIG5vdyBp dCBzaG91bGQgd29yazoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMSwx XScsIHRzcmFuZ2UoJzIwMTgtMDItMDMnLCAnMjAxOC0wMy0wMycpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAx LTAyJywgJzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7CistLQorLS0gdGVzdCBGSyBjaGlsZCB1 cGRhdGVzCistLQorVVBEQVRFIHRlbXBvcmFsX2ZrX3JuZzJybmcgU0VUIHZhbGlkX2F0ID0g dHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAzLTAxJykgV0hFUkUgaWQgPSAnWzEsMV0n OworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUgdGVtcG9yYWxfZmtfcm5nMnJuZyBTRVQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDUtMDEnKSBXSEVSRSBpZCA9 ICdbMSwxXSc7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRlbXBvcmFs X2ZrX3JuZzJybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFs X2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShb MSwyKSwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJUdWUgTWF5IDAxIDAwOjAwOjAw IDIwMTgiKSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX3JuZyIuCitVUERB VEUgdGVtcG9yYWxfZmtfcm5nMnJuZyBTRVQgcGFyZW50X2lkID0gJ1s4LDhdJyBXSEVSRSBp ZCA9ICdbMSwxXSc7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRlbXBv cmFsX2ZrX3JuZzJybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBv cmFsX2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQp PShbOCw5KSwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDAwOjAw OjAwIDIwMTgiKSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX3JuZyIuCist LSBBTFRFUiBGSyBERUZFUlJBQkxFCitCRUdJTjsKKyAgSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nIFZBTFVFUworICAgICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgt MDItMDEnKSksCisgICAgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0w My0wMScpKTsKKyAgSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMKKyAg ICAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1 XScpOworICBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisgICAgQUxURVIgQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisgICAgREVGRVJSQUJMRSBJTklUSUFM TFkgREVGRVJSRUQ7CisgIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdb NSw1XSc7IC0tc2hvdWxkIG5vdCBmYWlsIHlldC4KK0NPTU1JVDsgLS0gc2hvdWxkIGZhaWwg aGVyZS4KK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5n IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5n X2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQs IHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZl YiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAi dGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBO TyBBQ1RJT04KKy0tCistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhl IG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp KTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0w MS0wMScsICcyMDE2LTAyLTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyB1cGRh dGUgdGhhdCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVu Y2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlzbid0OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5n IFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMg KCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDIt MDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcg VkFMVUVTICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwg J1s1LDVdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTYtMDItMDEnLCAnMjAxNi0wMy0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZh bGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBL IHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFU RSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcy MDE2LTAyLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0 ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJh aW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5n MnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAw MSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxs IHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSBjaGFu Z2luZyB0aGUgc2NhbGFyIHBhcnQgZmFpbHM6CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBp ZCA9ICdbNyw3XScKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0 ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJh aW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5n MnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAw MSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxs IHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSB0aGVu IGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRl IHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbMywzXSc7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZh bGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVh biB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lk ID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1 XSc7CistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBSRVNUUklDVAorLS0KK0FMVEVS IFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxf Zmtfcm5nMnJuZ19mazsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQg Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJT04g REVMRVRFIFJFU1RSSUNUOworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNl IHRoZSBudW1lcmljIGlkIGlzbid0IHJlZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDIt MDEnKSk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsg dXBkYXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVm ZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFM VUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4 LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcy cm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEw JyksICdbNSw1XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3Jh bmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0g YSBQSyB1cGRhdGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitV UERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEn LCAnMjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBk ZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29u c3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2Zr X3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBK YW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBz dGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0g Y2hhbmdpbmcgdGhlIHNjYWxhciBwYXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBT RVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBk ZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29u c3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2Zr X3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBK YW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBz dGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0g dGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVw ZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUg aWQgPSAnWzMsM10nOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3Jh bmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0g Y2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIHBhcmVu dF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAn WzUsNV0nOworLS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCistLQor QUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZwor CUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAo cGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmc7 CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQg aXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb NSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0 aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQg YmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFM VUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4 LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcy cm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEw JyksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEn KTsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVu Y2VkOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQg dmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9S OiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBm b3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJs ZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0o WzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDow MCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtf cm5nMnJuZyIuCistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQg dGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcg V0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAxOC0wMi0wMScpOworLS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgUkVTVFJJ Q1QKKy0tCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19y bmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJ R04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBv cmFsX3JuZworCU9OIERFTEVURSBSRVNUUklDVDsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp KTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBh IFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlz IHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgt MDItMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0 c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScs ICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdI RVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywg JzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3Ro IGFyZSByZWZlcmVuY2VkOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDIt MDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5n IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5n X2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQs IHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZl YiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAi dGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZL IHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00g dGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0KKy0tIHRlc3QgT04gVVBEQVRFL0RF TEVURSBvcHRpb25zCistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcy cm5nIFZBTFVFUyAoJ1s0LDRdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAx JyksICdbNiw2XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1Ag Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCQlPTiBERUxFVEUgQ0FT Q0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKK0VSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQg Zm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBT RVQgTlVMTAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s5LDldJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzksOV0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJy bmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKKwlBREQgQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRf aWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwkJT04g REVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBTRVQgTlVMTDsKK0VSUk9SOiAgYWN0aW9uIG5v dCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gdGVzdCBGSyBwYXJl bnQgdXBkYXRlcyBTRVQgREVGQVVMVAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1stMSwtMV0nLCB0c3JhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbMTIsMTJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdb OCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzEyLDEyXScp OworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworICBBTFRFUiBDT0xVTU4gcGFy ZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9y YWxfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVG RVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwkJT04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFU RSBTRVQgREVGQVVMVDsKK0VSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBv cmFsIGZvcmVpZ24ga2V5cworLS0gRksgYmV0d2VlbiBwYXJ0aXRpb25lZCB0YWJsZXMKK0NS RUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKAorCWlkIGludDRyYW5nZSwK Kwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIG5hbWUgdGV4dCwKKwlDT05TVFJBSU5UIHRlbXBv cmFsX3Bhcml0aW9uZWRfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUykKKykgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKK0NSRUFURSBUQUJMRSB0 cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElO ICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0nLCAnWzExLDEx XScpOworQ1JFQVRFIFRBQkxFIHRwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMiwyXScsICdbNCw0XScsICdbNiw2XScsICdbOCw4 XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScs ICcyMDAwLTAyLTAxJyksICdvbmUnKSwKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0w Mi0wMScsICcyMDAwLTAzLTAxJyksICdvbmUnKSwKKyAgKCdbMiwyXScsIGRhdGVyYW5nZSgn MjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICd0d28nKTsKK0NSRUFURSBUQUJMRSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgZGF0ZXJhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9h dCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKGlkLCBQRVJJT0Qg dmFsaWRfYXQpCispIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7CitDUkVBVEUgVEFCTEUgdGZr cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZB TFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywg J1sxMSwxMV0nKTsKK0NSRUFURSBUQUJMRSB0ZmtwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyBGT1IgVkFMVUVTIElOICgnWzIsMl0nLCAnWzQsNF0n LCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJyk7CistLSBwYXJ0aXRp b25lZCBGSyBjaGlsZCBpbnNlcnRzCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nIFZBTFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAx JywgJzIwMDAtMDItMTUnKSwgJ1sxLDFdJyksCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIw MDEtMDEtMDEnLCAnMjAwMi0wMS0wMScpLCAnWzIsMl0nKSwKKyAgKCdbMiwyXScsIGRhdGVy YW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTE1JyksICdbMSwxXScpOworLS0gc2hvdWxk IGZhaWw6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZB TFVFUworICAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDEwLTAxLTAxJywgJzIwMTAtMDItMTUn KSwgJ1sxLDFdJyk7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRma3Ax IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nX2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0o WzEsMiksIFswMS0wMS0yMDEwLDAyLTE1LTIwMTApKSBpcyBub3QgcHJlc2VudCBpbiB0YWJs ZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIi4KK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTCisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIw MDAtMDEtMDEnLCAnMjAwMC0wMi0xNScpLCAnWzMsM10nKTsKK0VSUk9SOiAgaW5zZXJ0IG9y IHVwZGF0ZSBvbiB0YWJsZSAidGZrcDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFp bnQgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBLZXkg KHBhcmVudF9pZCwgdmFsaWRfYXQpPShbMyw0KSwgWzAxLTAxLTIwMDAsMDItMTUtMjAwMCkp IGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmciLgor LS0gcGFydGl0aW9uZWQgRksgY2hpbGQgdXBkYXRlcworVVBEQVRFIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDAwLTAxLTAx JywgJzIwMDAtMDItMTMnKSBXSEVSRSBpZCA9ICdbMiwyXSc7CistLSBtb3ZlIGEgcm93IGZy b20gdGhlIGZpcnN0IHBhcnRpdGlvbiB0byB0aGUgc2Vjb25kCitVUERBVEUgdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyBTRVQgaWQgPSAnWzQsNF0nIFdIRVJFIGlkID0gJ1sx LDFdJzsKKy0tIG1vdmUgYSByb3cgZnJvbSB0aGUgc2Vjb25kIHBhcnRpdGlvbiB0byB0aGUg Zmlyc3QKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFNFVCBpZCA9 ICdbMSwxXScgV0hFUkUgaWQgPSAnWzQsNF0nOworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUg dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFu Z2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wNC0wMScpIFdIRVJFIGlkID0gJ1sxLDFdJzsKK0VS Uk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBjb25zdHJh aW50ICJ0ZmtwMV9wa2V5IgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbMSwyKSwg WzAxLTAxLTIwMDAsMDQtMDEtMjAwMCkpIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAo aWQsIHZhbGlkX2F0KT0oWzEsMiksIFswMS0wMS0yMDAwLDA0LTAxLTIwMDApKS4KKy0tIHBh cnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIE5PIEFDVElPTgorSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE2 LTAxLTAxJywgJzIwMTYtMDItMDEnKSk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAx JykgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgt MDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n IFZBTFVFUyAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAn KSwgJ1s1LDVdJyk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxp ZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMi0wMScsICcyMDE2LTAzLTAxJykKKyAgV0hFUkUg aWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcy MDE4LTAzLTAxJyk7CistLSBzaG91bGQgZmFpbDoKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYt MDItMDEnKQorICBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0 ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5IiBvbiB0YWJsZSAi dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZh bGlkX2F0KT0oWzUsNiksIFswMS0wMS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCByZWZl cmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciLgor LS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gcGFydGl0aW9uZWQgRksg cGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAx OC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxV RVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdb MywzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScp OworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0w MScpOworLS0gc2hvdWxkIGZhaWw6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24g dGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIgb24gdGFibGUgInRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9h dCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMgc3RpbGwgcmVmZXJlbmNl ZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIi4KKy0tIGNs ZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBX SEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVu dCB1cGRhdGVzIFJFU1RSSUNUCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n CisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mawor CUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VT IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZworCU9OIERFTEVURSBSRVNUUklDVDsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVy YW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykpOworVVBEQVRFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAxOC0wMi0wMScpIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMi0w MScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcy MDE4LTAxLTEwJyksICdbNSw1XScpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0wMScp CisgIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgt MDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMS0w MScsICcyMDE2LTAyLTAxJykKKyAgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9 IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0 ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3Ry YWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIg b24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCitERVRBSUw6ICBL ZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMg c3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nIi4KKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIHBhcnRp dGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIFJFU1RSSUNUCitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAz LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBW QUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyks ICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJF IGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAn MjAxOC0wMy0wMScpOworLS0gc2hvdWxkIGZhaWw6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBk ZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAi dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIgb24gdGFi bGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlk LCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMgc3RpbGwg cmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n Ii4KKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUKK0FMVEVSIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQg dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJl bnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcKKwkJT04gREVMRVRFIENBU0NBREUgT04gVVBEQVRFIENBU0NBREU7CitFUlJP UjogIGFjdGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMKKy0t IHBhcnRpdGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIENBU0NBREUKKy0tIHBhcnRpdGlvbmVk IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCisJCU9OIERF TEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7CitFUlJPUjogIGFjdGlvbiBub3Qg c3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMKKy0tIHBhcnRpdGlvbmVkIEZL IHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBk YXRlcyBTRVQgREVGQVVMVAorQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZworICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFd JywKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19m aywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2Zr CisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJF TkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKKwkJT04gREVMRVRFIFNFVCBERUZBVUxU IE9OIFVQREFURSBTRVQgREVGQVVMVDsKK0VSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQg Zm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRl bGV0ZXMgU0VUIERFRkFVTFQKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZzsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAppbmRleCBjOGU4YWI5OTRh Li5lMzYyNjgzNDZkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0 X292ZXJsYXBzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJs YXBzLnNxbApAQCAtMjg4LDMgKzI4OCw1MjkgQEAgU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMSBP UkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwg dmFsaWRfYXQ7CiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOworCistLQorLS0g dGVzdCBGSyBkZXBlbmRlbmNpZXMKKy0tCisKKy0tIGNhbid0IGRyb3AgYSByYW5nZSByZWZl cmVuY2VkIGJ5IGFuIEZLLCB1bmxlc3Mgd2l0aCBDQVNDQURFCitDUkVBVEUgVEFCTEUgdGVt cG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJB SU5UIHRlbXBvcmFsM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpCispOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGlu dDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFs aWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVG RVJFTkNFUyB0ZW1wb3JhbDMgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworQUxURVIgVEFC TEUgdGVtcG9yYWwzIERST1AgQ09MVU1OIHZhbGlkX2F0OworQUxURVIgVEFCTEUgdGVtcG9y YWwzIERST1AgQ09MVU1OIHZhbGlkX2F0IENBU0NBREU7CitEUk9QIFRBQkxFIHRlbXBvcmFs X2ZrX3JuZzJybmc7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKworLS0KKy0tIHRlc3QgRk9S RUlHTiBLRVksIHJhbmdlIHJlZmVyZW5jZXMgcmFuZ2UKKy0tCisKKy0tIENhbid0IGNyZWF0 ZSBhIEZLIHdpdGggYSBtaXNtYXRjaGVkIHJhbmdlIHR5cGUKK0NSRUFURSBUQUJMRSB0ZW1w b3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgaW50NHJhbmdl LAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX3BrMiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazIgRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQs IFBFUklPRCB2YWxpZF9hdCkKKyk7CisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcy cm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQg aW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0 KQorKTsKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZzsKKworLS0gd2l0aCBtaXNt YXRjaGVkIFBFUklPRCBjb2x1bW5zOgorLS0gKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0 KSBSRUZFUkVOQ0VTIChpZCwgdmFsaWRfYXQpCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50 X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJ TUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5U IHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIHZhbGlkX2F0KQor KTsKKy0tIChwYXJlbnRfaWQsIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIChpZCwgUEVSSU9EIHZh bGlkX2F0KQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRy YW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRl bXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7CistLSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpIFJFRkVSRU5DRVMgKGlkKQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBh cmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3Br IFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkKQorKTsKKy0t IChwYXJlbnRfaWQpIFJFRkVSRU5DRVMgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCitDUkVBVEUg VEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0 IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFs X2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkg KHBhcmVudF9pZCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgdmFs aWRfYXQpCispOworCistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRh YmxlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5n ZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQg V0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2Zr IEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNF UyB0ZW1wb3JhbF9ybmcKKyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmc7CisK Ky0tIHNob3VsZCBmYWlsIGJlY2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVyZW5jZWQgY29sdW1u czoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2Us CisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJ TlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBG T1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgcGFyZW50X2lkKQorCQlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCBpZCkKKyk7CisKKy0tIFR3byBzY2FsYXIgY29s dW1ucworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nICgKKwlpZCBpbnQ0cmFu Z2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQxIGludDRyYW5nZSwKKwlwYXJl bnRfaWQyIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX3Br IFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RS QUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwg cGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Ju ZzIgKGlkMSwgaWQyLCBQRVJJT0QgdmFsaWRfYXQpCispOworXGQgdGVtcG9yYWxfZmsyX3Ju ZzJybmcKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmc7CisKKy0tCistLSB0ZXN0 IEFMVEVSIFRBQkxFIEFERCBDT05TVFJBSU5UCistLQorCitDUkVBVEUgVEFCTEUgdGVtcG9y YWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJ cGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdf cGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FM VEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlk X2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KTsK Ky0tIFR3byBzY2FsYXIgY29sdW1uczoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9mazJfcm5n MnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lk MSBpbnQ0cmFuZ2UsCisJcGFyZW50X2lkMiBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1w b3JhbF9mazJfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCispOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKwlBREQg Q09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJl bnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1w b3JhbF9ybmcyIChpZDEsIGlkMiwgUEVSSU9EIHZhbGlkX2F0KTsKK1xkIHRlbXBvcmFsX2Zr Ml9ybmcycm5nCisKKy0tIHdpdGggaW5mZXJyZWQgUEsgb24gdGhlIHJlZmVyZW5jZWQgdGFi bGUsIGFuZCB3cm9uZyBjb2x1bW4gdHlwZToKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3Ju ZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKKwlBTFRF UiBDT0xVTU4gdmFsaWRfYXQgVFlQRSBkYXRlcmFuZ2UgVVNJTkcgZGF0ZXJhbmdlKGxvd2Vy KHZhbGlkX2F0KTo6ZGF0ZSwgdXBwZXIodmFsaWRfYXQpOjpkYXRlKTsKK0FMVEVSIFRBQkxF IHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJF RkVSRU5DRVMgdGVtcG9yYWxfcm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJu ZworCUFMVEVSIENPTFVNTiB2YWxpZF9hdCBUWVBFIHRzcmFuZ2UgVVNJTkcgdHNyYW5nZShs b3dlcih2YWxpZF9hdCksIHVwcGVyKHZhbGlkX2F0KSk7CisKKy0tIHdpdGggaW5mZXJyZWQg UEsgb24gdGhlIHJlZmVyZW5jZWQgdGFibGU6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19y bmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJ R04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBv cmFsX3JuZzsKKworLS0gc2hvdWxkIGZhaWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJl bmNlZCBjb2x1bW5zOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBD T05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsyCisJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHBhcmVudF9pZCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQs IFBFUklPRCBpZCk7CisKKy0tCistLSB0ZXN0IHdpdGggcm93cyBhbHJlYWR5CistLQorCitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxf Zmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFu Z2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMScpLCAnWzEsMV0nKTsKK0FMVEVSIFRBQkxF IHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJF RkVSRU5DRVMgdGVtcG9yYWxfcm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJu ZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworSU5TRVJUIElO VE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgt MDEtMDInLCAnMjAxOC0wNC0wMScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorQUxU RVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFs X2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRf YXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmc7CistLSBva2F5IGFnYWluOgorREVMRVRF IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3Ju ZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlH TiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9y YWxfcm5nOworCistLQorLS0gdGVzdCBwZ19nZXRfY29uc3RyYWludGRlZgorLS0KKworU0VM RUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJF IGNvbm5hbWUgPSAndGVtcG9yYWxfZmtfcm5nMnJuZ19mayc7CisKKy0tCistLSB0ZXN0IEZL IGNoaWxkIGluc2VydHMKKy0tCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcg VkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDEnKSwg J1sxLDFdJyk7CistLSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgVkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDQt MDEnKSwgJ1sxLDFdJyk7CistLSBub3cgaXQgc2hvdWxkIHdvcms6CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAzJywgJzIw MTgtMDMtMDMnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAo J1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTA0LTAxJyksICdbMSwxXScp OworCistLQorLS0gdGVzdCBGSyBjaGlsZCB1cGRhdGVzCistLQorCitVUERBVEUgdGVtcG9y YWxfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIw MTgtMDMtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CistLSBzaG91bGQgZmFpbDoKK1VQREFU RSB0ZW1wb3JhbF9ma19ybmcycm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEt MDInLCAnMjAxOC0wNS0wMScpIFdIRVJFIGlkID0gJ1sxLDFdJzsKK1VQREFURSB0ZW1wb3Jh bF9ma19ybmcycm5nIFNFVCBwYXJlbnRfaWQgPSAnWzgsOF0nIFdIRVJFIGlkID0gJ1sxLDFd JzsKKworLS0gQUxURVIgRksgREVGRVJSQUJMRQorCitCRUdJTjsKKyAgSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nIFZBTFVFUworICAgICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKSksCisgICAgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEn LCAnMjAxOC0wMy0wMScpKTsKKyAgSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBW QUxVRVMKKyAgICAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEw JyksICdbNSw1XScpOworICBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisgICAg QUxURVIgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisgICAgREVGRVJSQUJM RSBJTklUSUFMTFkgREVGRVJSRUQ7CisKKyAgREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdI RVJFIGlkID0gJ1s1LDVdJzsgLS1zaG91bGQgbm90IGZhaWwgeWV0LgorQ09NTUlUOyAtLSBz aG91bGQgZmFpbCBoZXJlLgorCistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBOTyBB Q1RJT04KKy0tCisKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUg bnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2VkOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykp OworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAx LTAxJywgJzIwMTYtMDItMDEnKSBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0 ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5j ZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcg V0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAo J1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0w MScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBW QUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAn WzUsNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgn MjAxNi0wMi0wMScsICcyMDE2LTAzLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsg dXBkYXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorVVBEQVRF IHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIw MTYtMDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2hhbmdpbmcgdGhlIHNjYWxhciBw YXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nCitXSEVS RSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJyk7CistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBh bmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNF VCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitXSEVS RSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tCistLSB0ZXN0IEZLIHBhcmVudCB1cGRh dGVzIFJFU1RSSUNUCistLQorCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJ RFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJu Z19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZF UkVOQ0VTIHRlbXBvcmFsX3JuZworCU9OIERFTEVURSBSRVNUUklDVDsKKy0tIGEgUEsgdXBk YXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVu Y2VkOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBT RVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSBXSEVS RSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhv dWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNu J3Q6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK1VQREFURSB0ZW1wb3Jh bF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMi0wMScsICcyMDE2LTAzLTAx JykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAy LTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgZmFpbHMgYmVjYXVz ZSBib3RoIGFyZSByZWZlcmVuY2VkOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRf YXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorV0hFUkUgaWQgPSAn WzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0w MScpOworLS0gY2hhbmdpbmcgdGhlIHNjYWxhciBwYXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBv cmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSB0aGVuIGRl bGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1 Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdb MywzXSc7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1 cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0g J1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7 CistLQorLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBOTyBBQ1RJT04KKy0tCitBTFRFUiBU QUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2Zr X3JuZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENP TlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRf aWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKKy0tIGEg UEsgZGVsZXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCBy ZWZlcmVuY2VkOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworREVMRVRFIEZST00gdGVt cG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgc3Vj Y2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNl IHRoZSByYW5nZSBpc24ndDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb NSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEn LCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFM VUVTICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1 LDVdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0g YSBQSyBkZWxldGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9h dCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gdGhlbiBkZWxl dGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNj ZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMs M10nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQg dmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKworLS0K Ky0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgUkVTVFJJQ1QKKy0tCisKK0FMVEVSIFRBQkxF IHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5n MnJuZ19mazsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwg UEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJT04gREVMRVRF IFJFU1RSSUNUOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworREVMRVRFIEZST00gdGVt cG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgc3Vj Y2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNl IHRoZSByYW5nZSBpc24ndDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb NSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEn LCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFM VUVTICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1 LDVdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0g YSBQSyBkZWxldGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9h dCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gdGhlbiBkZWxl dGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNj ZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMs M10nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQg dmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKworLS0K Ky0tIHRlc3QgT04gVVBEQVRFL0RFTEVURSBvcHRpb25zCistLQorCistLSB0ZXN0IEZLIHBh cmVudCB1cGRhdGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMg KCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzQsNF0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CitBTFRFUiBUQUJMRSB0ZW1w b3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdf ZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCQlGT1JFSUdO IEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9y YWxfcm5nCisJCU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOworCistLSB0 ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcgVkFMVUVTICgnWzksOV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s2LDZdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOSw5XScpOworQUxURVIg VEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsK KwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVO Q0VTIHRlbXBvcmFsX3JuZworCQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBO VUxMOworCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxUCitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWy0xLC0xXScsIHRzcmFuZ2UobnVsbCwgbnVs bCkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxMiwxMl0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ma19ybmcycm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJyksICdbMTIsMTJdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcy cm5nCisgIEFMVEVSIENPTFVNTiBwYXJlbnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAor CURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwg UEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCQlPTiBERUxF VEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNFVCBERUZBVUxUOworCistLSBGSyBiZXR3ZWVu IHBhcnRpdGlvbmVkIHRhYmxlcworCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAorICBuYW1l IHRleHQsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJpdGlvbmVkX3JuZ19wayBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispIFBBUlRJVElPTiBCWSBM SVNUIChpZCk7CitDUkVBVEUgVEFCTEUgdHAxIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywg J1s3LDddJywgJ1s5LDldJywgJ1sxMSwxMV0nKTsKK0NSRUFURSBUQUJMRSB0cDIgcGFydGl0 aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgnWzIsMl0n LCAnWzQsNF0nLCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJyk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTCisgICgnWzEsMV0n LCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0wMScpLCAnb25lJyksCisgICgn WzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDItMDEnLCAnMjAwMC0wMy0wMScpLCAnb25lJyks CisgICgnWzIsMl0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAn dHdvJyk7CisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAorCXBhcmVudF9pZCBp bnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n X3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09O U1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispIFBBUlRJVElPTiBCWSBM SVNUIChpZCk7CitDUkVBVEUgVEFCTEUgdGZrcDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNdJywg J1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sxMSwxMV0nKTsKK0NSRUFURSBUQUJMRSB0 ZmtwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBGT1Ig VkFMVUVTIElOICgnWzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEw XScsICdbMTIsMTJdJyk7CisKKy0tIHBhcnRpdGlvbmVkIEZLIGNoaWxkIGluc2VydHMKKwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMKKyAg KCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTE1JyksICdbMSwx XScpLAorICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAxLTAxLTAxJywgJzIwMDItMDEtMDEn KSwgJ1syLDJdJyksCisgICgnWzIsMl0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAw MC0wMi0xNScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMKKyAgKCdbMywzXScsIGRhdGVy YW5nZSgnMjAxMC0wMS0wMScsICcyMDEwLTAyLTE1JyksICdbMSwxXScpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMKKyAgKCdbMywzXScs IGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTE1JyksICdbMywzXScpOworCist LSBwYXJ0aXRpb25lZCBGSyBjaGlsZCB1cGRhdGVzCisKK1VQREFURSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAwMC0wMS0w MScsICcyMDAwLTAyLTEzJykgV0hFUkUgaWQgPSAnWzIsMl0nOworLS0gbW92ZSBhIHJvdyBm cm9tIHRoZSBmaXJzdCBwYXJ0aXRpb24gdG8gdGhlIHNlY29uZAorVVBEQVRFIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgU0VUIGlkID0gJ1s0LDRdJyBXSEVSRSBpZCA9ICdb MSwxXSc7CistLSBtb3ZlIGEgcm93IGZyb20gdGhlIHNlY29uZCBwYXJ0aXRpb24gdG8gdGhl IGZpcnN0CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBTRVQgaWQg PSAnWzEsMV0nIFdIRVJFIGlkID0gJ1s0LDRdJzsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRF IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJh bmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDQtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CisK Ky0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIE5PIEFDVElPTgorCitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFu Z2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIw MTgtMDItMDEnKSBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDItMDEn LCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAx OC0wMS0xMCcpLCAnWzUsNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg U0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtMDEnKQor ICBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAy LTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRFIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEn LCAnMjAxNi0wMi0wMScpCisgIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIHBhcmVu dF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg V0hFUkUgaWQgPSAnWzUsNV0nOworCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRl cyBOTyBBQ1RJT04KKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZB TFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0n LCBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCBkYXRl cmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZh bGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIHNo b3VsZCBmYWlsOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJF IGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworCist LSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBSRVNUUklDVAorCitBTFRFUiBUQUJM RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZworCU9O IERFTEVURSBSRVNUUklDVDsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAx JykpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpIFdIRVJFIGlkID0gJ1s1LDVd JzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1 XScsIGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRh dGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworVVBEQVRF IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIw MTYtMDItMDEnLCAnMjAxNi0wMy0wMScpCisgIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFs aWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gc2hv dWxkIGZhaWw6CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9h dCA9IGRhdGVyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKKyAgV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4 LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tIHBh cnRpdGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIFJFU1RSSUNUCisKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIw MTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nIFZBTFVFUyAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEt MTAnKSwgJ1s1LDVdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg V0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0w MScsICcyMDE4LTAzLTAxJyk7CistLSBzaG91bGQgZmFpbDoKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0g ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKworLS0gcGFydGl0aW9u ZWQgRksgcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERQorCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCisJCU9O IERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOworCistLSBwYXJ0aXRpb25lZCBG SyBwYXJlbnQgZGVsZXRlcyBDQVNDQURFCisKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1 cGRhdGVzIFNFVCBOVUxMCisKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJ UkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKKwkJT04gREVMRVRFIFNFVCBO VUxMIE9OIFVQREFURSBTRVQgTlVMTDsKKworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRl bGV0ZXMgU0VUIE5VTEwKKworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgU0VU IERFRkFVTFQKKworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZworICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKwlE Uk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maywKKwlB REQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrCisJCUZP UkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKKwkJT04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQ REFURSBTRVQgREVGQVVMVDsKKworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMg U0VUIERFRkFVTFQKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nOworRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmc7Ci0tIAoyLjQyLjAK Cg== --------------F56VWTQ0Ck05qER7bvQmfAru Content-Type: text/x-patch; charset=UTF-8; name="v21-0005-Add-multi-range_without_portion-proc-operator.patch" Content-Disposition: attachment; filename*0="v21-0005-Add-multi-range_without_portion-proc-operator.patch" Content-Transfer-Encoding: base64 RnJvbSBlNDFmMjkzNGVmNGE5ODQzZDRkZjg2YzRkZjUzMjE3MjhjNzM0NTgwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgMzAgRGVjIDIwMjMgMjM6MTA6NTkgLTA4 MDAKU3ViamVjdDogW1BBVENIIHYyMSA1LzhdIEFkZCB7bXVsdGksfXJhbmdlX3dpdGhvdXRf cG9ydGlvbiBwcm9jICYgb3BlcmF0b3IKClRoZXNlIHJldHVybiBhbiBhcnJheSBvZiB0aGVp ciBpbnB1dCB0eXBlIGFyZSB3b3JrIGxpa2UgbWludXMgYnV0IGRvbid0CmZhaWwgb24gc3Bs aXRzLiBUaGV5IG5ldmVyIGNvbnRhaW4gZW1wdHkgZWxlbWVudHMuIFdlIHdpbGwgdXNlIHRo aXMgdG8Kc3VwcG9ydCBGT1IgUE9SVElPTiBPRi4KLS0tCiBzcmMvYmFja2VuZC91dGlscy9h ZHQvbXVsdGlyYW5nZXR5cGVzLmMgICAgICAgfCAgNDkgKysrKysrKwogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3JhbmdldHlwZXMuYyAgICAgICAgICAgIHwgMTI0ICsrKysrKysrKysrKysr KysrKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGVyYXRvci5kYXQgICAgICAgICAgIHwg ICA2ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8 ICAgNiArCiBzcmMvaW5jbHVkZS91dGlscy9yYW5nZXR5cGVzLmggICAgICAgICAgICAgICAg fCAgIDIgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9tdWx0aXJhbmdldHlwZXMub3V0 IHwgMTIxICsrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jh bmdldHlwZXMub3V0ICAgICAgfCAgNTQgKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L211bHRpcmFuZ2V0eXBlcy5zcWwgICAgICB8ICAyMiArKysrCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9yYW5nZXR5cGVzLnNxbCAgICAgICAgICAgfCAgMTAgKysKIDkgZmlsZXMgY2hhbmdl ZCwgMzk0IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvbXVsdGlyYW5nZXR5cGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbXVsdGlyYW5n ZXR5cGVzLmMKaW5kZXggOTQ0M2MyYjg4NC4uMDkwNjM0NTE1OSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L211bHRpcmFuZ2V0eXBlcy5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9tdWx0aXJhbmdldHlwZXMuYwpAQCAtMTIyNiw2ICsxMjI2LDU1IEBAIG11 bHRpcmFuZ2VfbWludXNfaW50ZXJuYWwoT2lkIG1sdHJuZ3R5cG9pZCwgVHlwZUNhY2hlRW50 cnkgKnJhbmdldHlwLAogCXJldHVybiBtYWtlX211bHRpcmFuZ2UobWx0cm5ndHlwb2lkLCBy YW5nZXR5cCwgcmFuZ2VfY291bnQzLCByYW5nZXMzKTsKIH0KIAorLyoKKyAqIG11bHRpcmFu Z2UgbWludXMgYnV0IHJldHVybmluZyBhbiBhcnJheSBvZiBvbmUsCisgKiBvciB6ZXJvIGlm IHRoZSByZXN1bHQgd291bGQgYmUgZW1wdHkuCisgKi8KKworRGF0dW0KK211bHRpcmFuZ2Vf d2l0aG91dF9wb3J0aW9uKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJTXVsdGlyYW5nZVR5cGUg Km1yMSA9IFBHX0dFVEFSR19NVUxUSVJBTkdFX1AoMCk7CisJTXVsdGlyYW5nZVR5cGUgKm1y MiA9IFBHX0dFVEFSR19NVUxUSVJBTkdFX1AoMSk7CisJT2lkCQkJbWx0cm5ndHlwb2lkID0g TXVsdGlyYW5nZVR5cGVHZXRPaWQobXIxKTsKKwlUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGU7 CisJVHlwZUNhY2hlRW50cnkgKnJhbmdldHlwOworCWludDMyCQlyYW5nZV9jb3VudDE7CisJ aW50MzIJCXJhbmdlX2NvdW50MjsKKwlSYW5nZVR5cGUgKipyYW5nZXMxOworCVJhbmdlVHlw ZSAqKnJhbmdlczI7CisJTXVsdGlyYW5nZVR5cGUgKm1yOworCURhdHVtCWRhdHVtc1sxXTsK KwlBcnJheVR5cGUgKnJldDsKKworCXR5cGNhY2hlID0gbXVsdGlyYW5nZV9nZXRfdHlwY2Fj aGUoZmNpbmZvLCBtbHRybmd0eXBvaWQpOworCXJhbmdldHlwID0gdHlwY2FjaGUtPnJuZ3R5 cGU7CisKKwlpZiAoTXVsdGlyYW5nZUlzRW1wdHkobXIxKSB8fCBNdWx0aXJhbmdlSXNFbXB0 eShtcjIpKQorCQltciA9IG1yMTsKKwllbHNlCisJeworCQltdWx0aXJhbmdlX2Rlc2VyaWFs aXplKHR5cGNhY2hlLT5ybmd0eXBlLCBtcjEsICZyYW5nZV9jb3VudDEsICZyYW5nZXMxKTsK KwkJbXVsdGlyYW5nZV9kZXNlcmlhbGl6ZSh0eXBjYWNoZS0+cm5ndHlwZSwgbXIyLCAmcmFu Z2VfY291bnQyLCAmcmFuZ2VzMik7CisKKwkJbXIgPSBtdWx0aXJhbmdlX21pbnVzX2ludGVy bmFsKG1sdHJuZ3R5cG9pZCwKKwkJCQkJCQkJCSAgIHJhbmdldHlwLAorCQkJCQkJCQkJICAg cmFuZ2VfY291bnQxLAorCQkJCQkJCQkJICAgcmFuZ2VzMSwKKwkJCQkJCQkJCSAgIHJhbmdl X2NvdW50MiwKKwkJCQkJCQkJCSAgIHJhbmdlczIpOworCX0KKworCWlmIChNdWx0aXJhbmdl SXNFbXB0eShtcikpCisJCVBHX1JFVFVSTl9BUlJBWVRZUEVfUChjb25zdHJ1Y3RfZW1wdHlf YXJyYXkodHlwY2FjaGUtPnR5cGVfaWQpKTsKKwllbHNlCisJeworCQlkYXR1bXNbMF0gPSBN dWx0aXJhbmdlVHlwZVBHZXREYXR1bShtcik7CisJCXJldCA9IGNvbnN0cnVjdF9hcnJheShk YXR1bXMsIDEsIHR5cGNhY2hlLT50eXBlX2lkLCB0eXBjYWNoZS0+dHlwbGVuLCB0eXBjYWNo ZS0+dHlwYnl2YWwsIHR5cGNhY2hlLT50eXBhbGlnbik7CisJCVBHX1JFVFVSTl9BUlJBWVRZ UEVfUChyZXQpOworCX0KK30KKwogLyogbXVsdGlyYW5nZSBpbnRlcnNlY3Rpb24gKi8KIERh dHVtCiBtdWx0aXJhbmdlX2ludGVyc2VjdChQR19GVU5DVElPTl9BUkdTKQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXMuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9yYW5nZXR5cGVzLmMKaW5kZXggMjRiYWQ1MjkyMy4uNGVkYTM5Njc2YiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXMuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlcy5jCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j bHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWlzY25vZGVzLmgiCiAjaW5j bHVkZSAicG9ydC9wZ19iaXR1dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCiAj aW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXRlLmgiCiAj aW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCkBAIC0xMjA2LDYgKzEyMDcsMTI5IEBAIHJh bmdlX3NwbGl0X2ludGVybmFsKFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwgY29uc3QgUmFu Z2VUeXBlICpyMSwgY29uc3QgUmFuZ2VUCiAJcmV0dXJuIGZhbHNlOwogfQogCisvKiBzdWJ0 cmFjdGlvbiBidXQgcmV0dXJuaW5nIGFuIGFycmF5IHRvIGFjY29tbW9kYXRlIHNwbGl0cyAq LworRGF0dW0KK3JhbmdlX3dpdGhvdXRfcG9ydGlvbihQR19GVU5DVElPTl9BUkdTKQorewor CVJhbmdlVHlwZSAgKnIxID0gUEdfR0VUQVJHX1JBTkdFX1AoMCk7CisJUmFuZ2VUeXBlICAq cjIgPSBQR19HRVRBUkdfUkFOR0VfUCgxKTsKKwlSYW5nZVR5cGUgICpyc1syXTsKKwlpbnQJ CQluOworCVR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZTsKKworCS8qIERpZmZlcmVudCB0eXBl cyBzaG91bGQgYmUgcHJldmVudGVkIGJ5IEFOWVJBTkdFIG1hdGNoaW5nIHJ1bGVzICovCisJ aWYgKFJhbmdlVHlwZUdldE9pZChyMSkgIT0gUmFuZ2VUeXBlR2V0T2lkKHIyKSkKKwkJZWxv ZyhFUlJPUiwgInJhbmdlIHR5cGVzIGRvIG5vdCBtYXRjaCIpOworCisJdHlwY2FjaGUgPSBy YW5nZV9nZXRfdHlwY2FjaGUoZmNpbmZvLCBSYW5nZVR5cGVHZXRPaWQocjEpKTsKKworCXJh bmdlX3dpdGhvdXRfcG9ydGlvbl9pbnRlcm5hbCh0eXBjYWNoZSwgcjEsIHIyLCBycywgJm4p OworCisJaWYgKG4gPT0gMCkKKwkJUEdfUkVUVVJOX0FSUkFZVFlQRV9QKGNvbnN0cnVjdF9l bXB0eV9hcnJheSh0eXBjYWNoZS0+dHlwZV9pZCkpOworCWVsc2UKKwl7CisJCURhdHVtCQl4 c1syXTsKKwkJaW50CQkJaTsKKwkJQXJyYXlUeXBlCSpyZXQ7CisKKwkJZm9yIChpID0gMDsg aSA8IG47IGkrKykKKwkJCXhzW2ldID0gUmFuZ2VUeXBlUEdldERhdHVtKHJzW2ldKTsKKwkJ CisJCXJldCA9IGNvbnN0cnVjdF9hcnJheSh4cywgbiwgdHlwY2FjaGUtPnR5cGVfaWQsIHR5 cGNhY2hlLT50eXBsZW4sIHR5cGNhY2hlLT50eXBieXZhbCwgdHlwY2FjaGUtPnR5cGFsaWdu KTsKKwkJUEdfUkVUVVJOX0FSUkFZVFlQRV9QKHJldCk7CisJfQorfQorCisvKgorICogcmFu Z2Vfd2l0aG91dF9wb3J0aW9uX2ludGVybmFsIC0gU2V0cyBvdXRwdXRzIGFuZCBvdXRwdXRu IHRvIHRoZSByYW5nZXMKKyAqIHJlbWFpbmluZyBhbmQgdGhlaXIgY291bnQgKHJlc3BlY3Rp dmVseSkgYWZ0ZXIgc3VidHJhY3RpbmcgcjIgZnJvbSByMS4KKyAqIFRoZSBhcnJheSBzaG91 bGQgbmV2ZXIgY29udGFpbiBlbXB0eSByYW5nZXMuCisgKiBUaGUgb3V0cHV0cyB3aWxsIGJl IG9yZGVyZWQuIFdlIGV4cGVjdCB0aGF0IG91dHB1dHMgaXMgYW4gYXJyYXkgb2YKKyAqIFJh bmdlVHlwZSBwb2ludGVycywgYWxyZWFkeSBhbGxvY2F0ZWQgd2l0aCB0d28gc2xvdHMuCisg Ki8KK3ZvaWQKK3JhbmdlX3dpdGhvdXRfcG9ydGlvbl9pbnRlcm5hbChUeXBlQ2FjaGVFbnRy eSAqdHlwY2FjaGUsIFJhbmdlVHlwZSAqcjEsCisJCQkJCQkJICAgUmFuZ2VUeXBlICpyMiwg UmFuZ2VUeXBlICoqb3V0cHV0cywgaW50ICpvdXRwdXRuKQoreworCWludAkJCWNtcF9sMWwy LAorCQkJCWNtcF9sMXUyLAorCQkJCWNtcF91MWwyLAorCQkJCWNtcF91MXUyOworCVJhbmdl Qm91bmQJbG93ZXIxLAorCQkJCWxvd2VyMjsKKwlSYW5nZUJvdW5kCXVwcGVyMSwKKwkJCQl1 cHBlcjI7CisJYm9vbAkJZW1wdHkxLAorCQkJCWVtcHR5MjsKKworCXJhbmdlX2Rlc2VyaWFs aXplKHR5cGNhY2hlLCByMSwgJmxvd2VyMSwgJnVwcGVyMSwgJmVtcHR5MSk7CisJcmFuZ2Vf ZGVzZXJpYWxpemUodHlwY2FjaGUsIHIyLCAmbG93ZXIyLCAmdXBwZXIyLCAmZW1wdHkyKTsK KworCWlmIChlbXB0eTEpCisJeworCQkvKiBpZiByMSBpcyBlbXB0eSB0aGVuIHIxIC0gcjIg aXMgZW1wdHksIHNvIHJldHVybiB6ZXJvIHJlc3VsdHMgKi8KKwkJKm91dHB1dG4gPSAwOwor CQlyZXR1cm47CisJfQorCWVsc2UgaWYgKGVtcHR5MikKKwl7CisJCS8qIHIyIGlzIGVtcHR5 IHNvIHRoZSByZXN1bHQgaXMganVzdCByMSAod2hpY2ggd2Uga25vdyBpcyBub3QgZW1wdHkp ICovCisJCW91dHB1dHNbMF0gPSByMTsKKwkJKm91dHB1dG4gPSAxOworCQlyZXR1cm47CisJ fQorCisJLyoKKwkgKiBVc2UgdGhlIHNhbWUgbG9naWMgYXMgcmFuZ2VfbWludXNfaW50ZXJu YWwsCisJICogYnV0IHN1cHBvcnQgdGhlIHNwbGl0IGNhc2UKKwkgKi8KKwljbXBfbDFsMiA9 IHJhbmdlX2NtcF9ib3VuZHModHlwY2FjaGUsICZsb3dlcjEsICZsb3dlcjIpOworCWNtcF9s MXUyID0gcmFuZ2VfY21wX2JvdW5kcyh0eXBjYWNoZSwgJmxvd2VyMSwgJnVwcGVyMik7CisJ Y21wX3UxbDIgPSByYW5nZV9jbXBfYm91bmRzKHR5cGNhY2hlLCAmdXBwZXIxLCAmbG93ZXIy KTsKKwljbXBfdTF1MiA9IHJhbmdlX2NtcF9ib3VuZHModHlwY2FjaGUsICZ1cHBlcjEsICZ1 cHBlcjIpOworCisJaWYgKGNtcF9sMWwyIDwgMCAmJiBjbXBfdTF1MiA+IDApCisJeworCQls b3dlcjIuaW5jbHVzaXZlID0gIWxvd2VyMi5pbmNsdXNpdmU7CisJCWxvd2VyMi5sb3dlciA9 IGZhbHNlOwkvKiBpdCB3aWxsIGJlY29tZSB0aGUgdXBwZXIgYm91bmQgKi8KKwkJb3V0cHV0 c1swXSA9IG1ha2VfcmFuZ2UodHlwY2FjaGUsICZsb3dlcjEsICZsb3dlcjIsIGZhbHNlLCBO VUxMKTsKKworCQl1cHBlcjIuaW5jbHVzaXZlID0gIXVwcGVyMi5pbmNsdXNpdmU7CisJCXVw cGVyMi5sb3dlciA9IHRydWU7CS8qIGl0IHdpbGwgYmVjb21lIHRoZSBsb3dlciBib3VuZCAq LworCQlvdXRwdXRzWzFdID0gbWFrZV9yYW5nZSh0eXBjYWNoZSwgJnVwcGVyMiwgJnVwcGVy MSwgZmFsc2UsIE5VTEwpOworCisJCSpvdXRwdXRuID0gMjsKKwl9CisJZWxzZSBpZiAoY21w X2wxdTIgPiAwIHx8IGNtcF91MWwyIDwgMCkKKwl7CisJCW91dHB1dHNbMF0gPSByMTsKKwkJ Km91dHB1dG4gPSAxOworCX0KKwllbHNlIGlmIChjbXBfbDFsMiA+PSAwICYmIGNtcF91MXUy IDw9IDApCisJeworCQkqb3V0cHV0biA9IDA7CisJfQorCWVsc2UgaWYgKGNtcF9sMWwyIDw9 IDAgJiYgY21wX3UxbDIgPj0gMCAmJiBjbXBfdTF1MiA8PSAwKQorCXsKKwkJbG93ZXIyLmlu Y2x1c2l2ZSA9ICFsb3dlcjIuaW5jbHVzaXZlOworCQlsb3dlcjIubG93ZXIgPSBmYWxzZTsJ LyogaXQgd2lsbCBiZWNvbWUgdGhlIHVwcGVyIGJvdW5kICovCisJCW91dHB1dHNbMF0gPSBt YWtlX3JhbmdlKHR5cGNhY2hlLCAmbG93ZXIxLCAmbG93ZXIyLCBmYWxzZSwgTlVMTCk7CisJ CSpvdXRwdXRuID0gMTsKKwl9CisJZWxzZSBpZiAoY21wX2wxbDIgPj0gMCAmJiBjbXBfdTF1 MiA+PSAwICYmIGNtcF9sMXUyIDw9IDApCisJeworCQl1cHBlcjIuaW5jbHVzaXZlID0gIXVw cGVyMi5pbmNsdXNpdmU7CisJCXVwcGVyMi5sb3dlciA9IHRydWU7CS8qIGl0IHdpbGwgYmVj b21lIHRoZSBsb3dlciBib3VuZCAqLworCQlvdXRwdXRzWzBdID0gbWFrZV9yYW5nZSh0eXBj YWNoZSwgJnVwcGVyMiwgJnVwcGVyMSwgZmFsc2UsIE5VTEwpOworCQkqb3V0cHV0biA9IDE7 CisJfQorCWVsc2UKKwl7CisJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIGNhc2UgaW4gcmFu Z2Vfd2l0aG91dF9wb3J0aW9uIik7CisJfQorfQorCiAvKiByYW5nZSAtPiByYW5nZSBhZ2dy ZWdhdGUgZnVuY3Rpb25zICovCiAKIERhdHVtCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX29wZXJhdG9yLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BlcmF0 b3IuZGF0CmluZGV4IGIyY2RlYTY2YzQuLjliNzgzY2UzMjYgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfb3BlcmF0b3IuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfb3BlcmF0b3IuZGF0CkBAIC0zNDU3LDUgKzM0NTcsMTEgQEAKICAgb3BycmVzdWx0 ID0+ICdib29sJywgb3ByY29tID0+ICc8PChhbnltdWx0aXJhbmdlLGFueW11bHRpcmFuZ2Up JywKICAgb3ByY29kZSA9PiAnbXVsdGlyYW5nZV9hZnRlcl9tdWx0aXJhbmdlJywgb3BycmVz dCA9PiAnbXVsdGlyYW5nZXNlbCcsCiAgIG9wcmpvaW4gPT4gJ3NjYWxhcmd0am9pbnNlbCcg fSwKK3sgb2lkID0+ICc4NDA1JywgZGVzY3IgPT4gJ3JhbmdlIHdpdGhvdXQgcG9ydGlvbics CisgIG9wcm5hbWUgPT4gJ0AtJywgb3BybGVmdCA9PiAnYW55cmFuZ2UnLCBvcHJyaWdodCA9 PiAnYW55cmFuZ2UnLAorICBvcHJyZXN1bHQgPT4gJ2FueWFycmF5Jywgb3ByY29kZSA9PiAn cmFuZ2Vfd2l0aG91dF9wb3J0aW9uJyB9LAoreyBvaWQgPT4gJzg0MDcnLCBkZXNjciA9PiAn bXVsdGlyYW5nZSB3aXRob3V0IHBvcnRpb24nLAorICBvcHJuYW1lID0+ICdALScsIG9wcmxl ZnQgPT4gJ2FueW11bHRpcmFuZ2UnLCBvcHJyaWdodCA9PiAnYW55bXVsdGlyYW5nZScsCisg IG9wcnJlc3VsdCA9PiAnYW55YXJyYXknLCBvcHJjb2RlID0+ICdtdWx0aXJhbmdlX3dpdGhv dXRfcG9ydGlvbicgfSwKIAogXQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggODc0 Y2E5OGVkNi4uNzI3ZWIzNTA4NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0x MDU3MCw2ICsxMDU3MCw5IEBACiB7IG9pZCA9PiAnMzg2OScsCiAgIHByb25hbWUgPT4gJ3Jh bmdlX21pbnVzJywgcHJvcmV0dHlwZSA9PiAnYW55cmFuZ2UnLAogICBwcm9hcmd0eXBlcyA9 PiAnYW55cmFuZ2UgYW55cmFuZ2UnLCBwcm9zcmMgPT4gJ3JhbmdlX21pbnVzJyB9LAoreyBv aWQgPT4gJzg0MDQnLAorICBwcm9uYW1lID0+ICdyYW5nZV93aXRob3V0X3BvcnRpb24nLCBw cm9yZXR0eXBlID0+ICdhbnlhcnJheScsCisgIHByb2FyZ3R5cGVzID0+ICdhbnlyYW5nZSBh bnlyYW5nZScsIHByb3NyYyA9PiAncmFuZ2Vfd2l0aG91dF9wb3J0aW9uJyB9LAogeyBvaWQg PT4gJzM4NzAnLCBkZXNjciA9PiAnbGVzcy1lcXVhbC1ncmVhdGVyJywKICAgcHJvbmFtZSA9 PiAncmFuZ2VfY21wJywgcHJvcmV0dHlwZSA9PiAnaW50NCcsCiAgIHByb2FyZ3R5cGVzID0+ ICdhbnlyYW5nZSBhbnlyYW5nZScsIHByb3NyYyA9PiAncmFuZ2VfY21wJyB9LApAQCAtMTA4 NTcsNiArMTA4NjAsOSBAQAogeyBvaWQgPT4gJzQyNzEnLAogICBwcm9uYW1lID0+ICdtdWx0 aXJhbmdlX21pbnVzJywgcHJvcmV0dHlwZSA9PiAnYW55bXVsdGlyYW5nZScsCiAgIHByb2Fy Z3R5cGVzID0+ICdhbnltdWx0aXJhbmdlIGFueW11bHRpcmFuZ2UnLCBwcm9zcmMgPT4gJ211 bHRpcmFuZ2VfbWludXMnIH0sCit7IG9pZCA9PiAnODQwNicsCisgIHByb25hbWUgPT4gJ211 bHRpcmFuZ2Vfd2l0aG91dF9wb3J0aW9uJywgcHJvcmV0dHlwZSA9PiAnYW55YXJyYXknLAor ICBwcm9hcmd0eXBlcyA9PiAnYW55bXVsdGlyYW5nZSBhbnltdWx0aXJhbmdlJywgcHJvc3Jj ID0+ICdtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbicgfSwKIHsgb2lkID0+ICc0MjcyJywK ICAgcHJvbmFtZSA9PiAnbXVsdGlyYW5nZV9pbnRlcnNlY3QnLCBwcm9yZXR0eXBlID0+ICdh bnltdWx0aXJhbmdlJywKICAgcHJvYXJndHlwZXMgPT4gJ2FueW11bHRpcmFuZ2UgYW55bXVs dGlyYW5nZScsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9yYW5nZXR5cGVzLmgg Yi9zcmMvaW5jbHVkZS91dGlscy9yYW5nZXR5cGVzLmgKaW5kZXggNmI0MjBhODYxOC4uZTFi NTFhMTAxNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmFuZ2V0eXBlcy5oCisr KyBiL3NyYy9pbmNsdWRlL3V0aWxzL3JhbmdldHlwZXMuaApAQCAtMTY0LDUgKzE2NCw3IEBA IGV4dGVybiBSYW5nZVR5cGUgKm1ha2VfZW1wdHlfcmFuZ2UoVHlwZUNhY2hlRW50cnkgKnR5 cGNhY2hlKTsKIGV4dGVybiBib29sIHJhbmdlX3NwbGl0X2ludGVybmFsKFR5cGVDYWNoZUVu dHJ5ICp0eXBjYWNoZSwgY29uc3QgUmFuZ2VUeXBlICpyMSwKIAkJCQkJCQkJIGNvbnN0IFJh bmdlVHlwZSAqcjIsIFJhbmdlVHlwZSAqKm91dHB1dDEsCiAJCQkJCQkJCSBSYW5nZVR5cGUg KipvdXRwdXQyKTsKK2V4dGVybiB2b2lkIHJhbmdlX3dpdGhvdXRfcG9ydGlvbl9pbnRlcm5h bChUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUsIFJhbmdlVHlwZSAqcjEsCisJCQkJCQkJCQlS YW5nZVR5cGUgKnIyLCBSYW5nZVR5cGUgKipvdXRwdXRzLCBpbnQgKm91dHB1dG4pOwogCiAj ZW5kaWYJCQkJCQkJLyogUkFOR0VUWVBFU19IICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL211bHRpcmFuZ2V0eXBlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL211bHRpcmFuZ2V0eXBlcy5vdXQKaW5kZXggYTBjYjg3NTQ5Mi4uMjk3YWEw Y2M4NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9tdWx0aXJhbmdl dHlwZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbXVsdGlyYW5nZXR5 cGVzLm91dApAQCAtMjIwMCw2ICsyMjAwLDEyNyBAQCBTRUxFQ1QgbnVtbXVsdGlyYW5nZShu dW1yYW5nZSgxLDIpLCBudW1yYW5nZSg0LDUpKSAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2Uo LTIsMAogIHtbMSwyKSxbNCw1KX0KICgxIHJvdykKIAorLS0gd2l0aG91dF9wb3J0aW9uCitT RUxFQ1QgbnVtbXVsdGlyYW5nZSgpIEAtIG51bW11bHRpcmFuZ2UoKTsKKyA/Y29sdW1uPyAK Ky0tLS0tLS0tLS0KKyB7fQorKDEgcm93KQorCitTRUxFQ1QgbnVtbXVsdGlyYW5nZSgpIEAt IG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSk7CisgP2NvbHVtbj8gCistLS0tLS0tLS0t Cisge30KKygxIHJvdykKKworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSkg QC0gbnVtbXVsdGlyYW5nZSgpOworICA/Y29sdW1uPyAgIAorLS0tLS0tLS0tLS0tLQorIHsi e1sxLDIpfSJ9CisoMSByb3cpCisKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEs MiksIG51bXJhbmdlKDMsNCkpIEAtIG51bW11bHRpcmFuZ2UoKTsKKyAgICAgP2NvbHVtbj8g ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7IntbMSwyKSxbMyw0KX0ifQorKDEgcm93 KQorCitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpKSBALSBudW1tdWx0aXJh bmdlKG51bXJhbmdlKDEsMikpOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHt9CisoMSBy b3cpCisKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMikpIEAtIG51bW11bHRp cmFuZ2UobnVtcmFuZ2UoMiw0KSk7CisgID9jb2x1bW4/ICAgCistLS0tLS0tLS0tLS0tCisg eyJ7WzEsMil9In0KKygxIHJvdykKKworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2Uo MSwyKSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgzLDQpKTsKKyAgP2NvbHVtbj8gICAK Ky0tLS0tLS0tLS0tLS0KKyB7IntbMSwyKX0ifQorKDEgcm93KQorCitTRUxFQ1QgbnVtbXVs dGlyYW5nZShudW1yYW5nZSgxLDQpKSBALSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMikp OworICA/Y29sdW1uPyAgIAorLS0tLS0tLS0tLS0tLQorIHsie1syLDQpfSJ9CisoMSByb3cp CisKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsNCkpIEAtIG51bW11bHRpcmFu Z2UobnVtcmFuZ2UoMiwzKSk7CisgICAgID9jb2x1bW4/ICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tCisgeyJ7WzEsMiksWzMsNCl9In0KKygxIHJvdykKKworU0VMRUNUIG51bW11bHRp cmFuZ2UobnVtcmFuZ2UoMSw0KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgwLDgpKTsK KyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB7fQorKDEgcm93KQorCitTRUxFQ1QgbnVtbXVs dGlyYW5nZShudW1yYW5nZSgxLDQpKSBALSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDAsMikp OworICA/Y29sdW1uPyAgIAorLS0tLS0tLS0tLS0tLQorIHsie1syLDQpfSJ9CisoMSByb3cp CisKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsOCkpIEAtIG51bW11bHRpcmFu Z2UobnVtcmFuZ2UoMCwyKSwgbnVtcmFuZ2UoMyw0KSk7CisgICAgID9jb2x1bW4/ICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJ7WzIsMyksWzQsOCl9In0KKygxIHJvdykKKwor U0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSw4KSkgQC0gbnVtbXVsdGlyYW5nZShu dW1yYW5nZSgyLDMpLCBudW1yYW5nZSg1LG51bGwpKTsKKyAgICAgP2NvbHVtbj8gICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7IntbMSwyKSxbMyw1KX0ifQorKDEgcm93KQorCitT RUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSg0LDUpKSBALSBu dW1tdWx0aXJhbmdlKG51bXJhbmdlKC0yLDApKTsKKyAgICAgP2NvbHVtbj8gICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0KKyB7IntbMSwyKSxbNCw1KX0ifQorKDEgcm93KQorCitTRUxF Q1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSg0LDUpKSBALSBudW1t dWx0aXJhbmdlKG51bXJhbmdlKDIsNCkpOworICAgICA/Y29sdW1uPyAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLQorIHsie1sxLDIpLFs0LDUpfSJ9CisoMSByb3cpCisKK1NFTEVDVCBu dW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMiksIG51bXJhbmdlKDQsNSkpIEAtIG51bW11bHRp cmFuZ2UobnVtcmFuZ2UoMyw1KSk7CisgID9jb2x1bW4/ICAgCistLS0tLS0tLS0tLS0tCisg eyJ7WzEsMil9In0KKygxIHJvdykKKworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2Uo MSwyKSwgbnVtcmFuZ2UoNCw1KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgwLDkpKTsK KyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB7fQorKDEgcm93KQorCitTRUxFQ1QgbnVtbXVs dGlyYW5nZShudW1yYW5nZSgxLDMpLCBudW1yYW5nZSg0LDUpKSBALSBudW1tdWx0aXJhbmdl KG51bXJhbmdlKDIsOSkpOworICA/Y29sdW1uPyAgIAorLS0tLS0tLS0tLS0tLQorIHsie1sx LDIpfSJ9CisoMSByb3cpCisKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMiks IG51bXJhbmdlKDQsNSkpIEAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoOCw5KSk7CisgICAg ID9jb2x1bW4/ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJ7WzEsMiksWzQsNSl9 In0KKygxIHJvdykKKworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSwgbnVt cmFuZ2UoNCw1KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgtMiwwKSwgbnVtcmFuZ2Uo OCw5KSk7CisgICAgID9jb2x1bW4/ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJ7 WzEsMiksWzQsNSl9In0KKygxIHJvdykKKwogLS0gaW50ZXJzZWN0aW9uCiBTRUxFQ1QgbnVt bXVsdGlyYW5nZSgpICogbnVtbXVsdGlyYW5nZSgpOwogID9jb2x1bW4/IApkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yYW5nZXR5cGVzLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcmFuZ2V0eXBlcy5vdXQKaW5kZXggZWUwMmZmMDE2My4uMWYx NGU5NjgwMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yYW5nZXR5 cGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3JhbmdldHlwZXMub3V0 CkBAIC00ODEsNiArNDgxLDYwIEBAIHNlbGVjdCByYW5nZV9taW51cyhudW1yYW5nZSgxMC4x LDEyLjIsJ1tdJyksIG51bXJhbmdlKDAuMCwxMjAuMiwnKF0nKSk7CiAgZW1wdHkKICgxIHJv dykKIAorc2VsZWN0ICdlbXB0eSc6Om51bXJhbmdlIEAtIG51bXJhbmdlKDIuMCwgMy4wKTsK KyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB7fQorKDEgcm93KQorCitzZWxlY3QgbnVtcmFu Z2UoMS4xLCAyLjIpIEAtICdlbXB0eSc6Om51bXJhbmdlOworICAgP2NvbHVtbj8gICAgCist LS0tLS0tLS0tLS0tLS0KKyB7IlsxLjEsMi4yKSJ9CisoMSByb3cpCisKK3NlbGVjdCBudW1y YW5nZSgxLjEsIDIuMikgQC0gbnVtcmFuZ2UoMi4wLCAzLjApOworICAgP2NvbHVtbj8gICAg CistLS0tLS0tLS0tLS0tLS0KKyB7IlsxLjEsMi4wKSJ9CisoMSByb3cpCisKK3NlbGVjdCBu dW1yYW5nZSgxLjEsIDIuMikgQC0gbnVtcmFuZ2UoMi4yLCAzLjApOworICAgP2NvbHVtbj8g ICAgCistLS0tLS0tLS0tLS0tLS0KKyB7IlsxLjEsMi4yKSJ9CisoMSByb3cpCisKK3NlbGVj dCBudW1yYW5nZSgxLjEsIDIuMiwnW10nKSBALSBudW1yYW5nZSgyLjAsIDMuMCk7CisgICA/ Y29sdW1uPyAgICAKKy0tLS0tLS0tLS0tLS0tLQorIHsiWzEuMSwyLjApIn0KKygxIHJvdykK Kworc2VsZWN0IG51bXJhbmdlKDEuMCwgMy4wKSBALSBudW1yYW5nZSgxLjUsIDIuMCk7Cisg ICAgICAgICA/Y29sdW1uPyAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIHsiWzEuMCwxLjUpIiwiWzIuMCwzLjApIn0KKygxIHJvdykKKworc2VsZWN0IHJhbmdl X3dpdGhvdXRfcG9ydGlvbihudW1yYW5nZSgxMC4xLDEyLjIsJ1tdJyksIG51bXJhbmdlKDEx MC4wLDEyMC4yLCcoXScpKTsKKyByYW5nZV93aXRob3V0X3BvcnRpb24gCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHsiWzEwLjEsMTIuMl0ifQorKDEgcm93KQorCitzZWxlY3QgcmFu Z2Vfd2l0aG91dF9wb3J0aW9uKG51bXJhbmdlKDEwLjEsMTIuMiwnW10nKSwgbnVtcmFuZ2Uo MC4wLDEyMC4yLCcoXScpKTsKKyByYW5nZV93aXRob3V0X3BvcnRpb24gCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHt9CisoMSByb3cpCisKK3NlbGVjdCByYW5nZV93aXRob3V0X3Bv cnRpb24obnVtcmFuZ2UoMS4wLDMuMCwnW10nKSwgbnVtcmFuZ2UoMS41LDIuMCwnKF0nKSk7 CisgICByYW5nZV93aXRob3V0X3BvcnRpb24gICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIHsiWzEuMCwxLjVdIiwiKDIuMCwzLjBdIn0KKygxIHJvdykKKwogc2VsZWN0IG51 bXJhbmdlKDQuNSwgNS41LCAnW10nKSAmJiBudW1yYW5nZSg1LjUsIDYuNSk7CiAgP2NvbHVt bj8gCiAtLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9tdWx0 aXJhbmdldHlwZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbXVsdGlyYW5nZXR5cGVz LnNxbAppbmRleCBmZWZiNGI0ZDQyLi42NTkyNzI3OTFiIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9tdWx0aXJhbmdldHlwZXMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL211bHRpcmFuZ2V0eXBlcy5zcWwKQEAgLTQxNCw2ICs0MTQsMjggQEAgU0VMRUNU IG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwzKSwgbnVtcmFuZ2UoNCw1KSkgLSBudW1tdWx0 aXJhbmdlKG51bXJhbmdlKDIsOSkKIFNFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEs MiksIG51bXJhbmdlKDQsNSkpIC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSg4LDkpKTsKIFNF TEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMiksIG51bXJhbmdlKDQsNSkpIC0gbnVt bXVsdGlyYW5nZShudW1yYW5nZSgtMiwwKSwgbnVtcmFuZ2UoOCw5KSk7CiAKKy0tIHdpdGhv dXRfcG9ydGlvbgorU0VMRUNUIG51bW11bHRpcmFuZ2UoKSBALSBudW1tdWx0aXJhbmdlKCk7 CitTRUxFQ1QgbnVtbXVsdGlyYW5nZSgpIEAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwy KSk7CitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpKSBALSBudW1tdWx0aXJh bmdlKCk7CitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSgz LDQpKSBALSBudW1tdWx0aXJhbmdlKCk7CitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5n ZSgxLDIpKSBALSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMikpOworU0VMRUNUIG51bW11 bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgyLDQp KTsKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMikpIEAtIG51bW11bHRpcmFu Z2UobnVtcmFuZ2UoMyw0KSk7CitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDQp KSBALSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMikpOworU0VMRUNUIG51bW11bHRpcmFu Z2UobnVtcmFuZ2UoMSw0KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgyLDMpKTsKK1NF TEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsNCkpIEAtIG51bW11bHRpcmFuZ2UobnVt cmFuZ2UoMCw4KSk7CitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDQpKSBALSBu dW1tdWx0aXJhbmdlKG51bXJhbmdlKDAsMikpOworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVt cmFuZ2UoMSw4KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgwLDIpLCBudW1yYW5nZSgz LDQpKTsKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsOCkpIEAtIG51bW11bHRp cmFuZ2UobnVtcmFuZ2UoMiwzKSwgbnVtcmFuZ2UoNSxudWxsKSk7CitTRUxFQ1QgbnVtbXVs dGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSg0LDUpKSBALSBudW1tdWx0aXJhbmdl KG51bXJhbmdlKC0yLDApKTsKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMiks IG51bXJhbmdlKDQsNSkpIEAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMiw0KSk7CitTRUxF Q1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSg0LDUpKSBALSBudW1t dWx0aXJhbmdlKG51bXJhbmdlKDMsNSkpOworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFu Z2UoMSwyKSwgbnVtcmFuZ2UoNCw1KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgwLDkp KTsKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMyksIG51bXJhbmdlKDQsNSkp IEAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMiw5KSk7CitTRUxFQ1QgbnVtbXVsdGlyYW5n ZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSg0LDUpKSBALSBudW1tdWx0aXJhbmdlKG51bXJh bmdlKDgsOSkpOworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSwgbnVtcmFu Z2UoNCw1KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgtMiwwKSwgbnVtcmFuZ2UoOCw5 KSk7CisKIC0tIGludGVyc2VjdGlvbgogU0VMRUNUIG51bW11bHRpcmFuZ2UoKSAqIG51bW11 bHRpcmFuZ2UoKTsKIFNFTEVDVCBudW1tdWx0aXJhbmdlKCkgKiBudW1tdWx0aXJhbmdlKG51 bXJhbmdlKDEsMikpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcmFuZ2V0 eXBlcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9yYW5nZXR5cGVzLnNxbAppbmRleCBj MjNiZTkyOGMzLi41NjJkNDZjNWRhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9yYW5nZXR5cGVzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9yYW5nZXR5cGVz LnNxbApAQCAtMTA3LDYgKzEwNywxNiBAQCBzZWxlY3QgbnVtcmFuZ2UoMS4xLCAyLjIsJ1td JykgLSBudW1yYW5nZSgyLjAsIDMuMCk7CiBzZWxlY3QgcmFuZ2VfbWludXMobnVtcmFuZ2Uo MTAuMSwxMi4yLCdbXScpLCBudW1yYW5nZSgxMTAuMCwxMjAuMiwnKF0nKSk7CiBzZWxlY3Qg cmFuZ2VfbWludXMobnVtcmFuZ2UoMTAuMSwxMi4yLCdbXScpLCBudW1yYW5nZSgwLjAsMTIw LjIsJyhdJykpOwogCitzZWxlY3QgJ2VtcHR5Jzo6bnVtcmFuZ2UgQC0gbnVtcmFuZ2UoMi4w LCAzLjApOworc2VsZWN0IG51bXJhbmdlKDEuMSwgMi4yKSBALSAnZW1wdHknOjpudW1yYW5n ZTsKK3NlbGVjdCBudW1yYW5nZSgxLjEsIDIuMikgQC0gbnVtcmFuZ2UoMi4wLCAzLjApOwor c2VsZWN0IG51bXJhbmdlKDEuMSwgMi4yKSBALSBudW1yYW5nZSgyLjIsIDMuMCk7CitzZWxl Y3QgbnVtcmFuZ2UoMS4xLCAyLjIsJ1tdJykgQC0gbnVtcmFuZ2UoMi4wLCAzLjApOworc2Vs ZWN0IG51bXJhbmdlKDEuMCwgMy4wKSBALSBudW1yYW5nZSgxLjUsIDIuMCk7CitzZWxlY3Qg cmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bXJhbmdlKDEwLjEsMTIuMiwnW10nKSwgbnVtcmFu Z2UoMTEwLjAsMTIwLjIsJyhdJykpOworc2VsZWN0IHJhbmdlX3dpdGhvdXRfcG9ydGlvbihu dW1yYW5nZSgxMC4xLDEyLjIsJ1tdJyksIG51bXJhbmdlKDAuMCwxMjAuMiwnKF0nKSk7Citz ZWxlY3QgcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bXJhbmdlKDEuMCwzLjAsJ1tdJyksIG51 bXJhbmdlKDEuNSwyLjAsJyhdJykpOworCiBzZWxlY3QgbnVtcmFuZ2UoNC41LCA1LjUsICdb XScpICYmIG51bXJhbmdlKDUuNSwgNi41KTsKIHNlbGVjdCBudW1yYW5nZSgxLjAsIDIuMCkg PDwgbnVtcmFuZ2UoMy4wLCA0LjApOwogc2VsZWN0IG51bXJhbmdlKDEuMCwgMy4wLCdbXScp IDw8IG51bXJhbmdlKDMuMCwgNC4wLCdbXScpOwotLSAKMi40Mi4wCgo= --------------F56VWTQ0Ck05qER7bvQmfAru Content-Type: text/x-patch; charset=UTF-8; name="v21-0006-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Disposition: attachment; filename="v21-0006-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Transfer-Encoding: base64 RnJvbSBhMGI0NGU4NGUxMDA2MDg1NGVjOWNiZjE4NTUyNWM4MjI1MzAwODNlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IEZyaSwgMjUgSnVuIDIwMjEgMTg6NTQ6MzUgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYyMSA2LzhdIEFkZCBVUERBVEUvREVMRVRFIEZPUiBQT1JU SU9OIE9GCgotIEFkZGVkIGJpc29uIHN1cHBvcnQgZm9yIEZPUiBQT1JUSU9OIE9GIHN5bnRh eC4gVGhlIGJvdW5kcyBtdXN0IGJlCiAgY29uc3RhbnQsIHNvIHdlIGZvcmJpZCBjb2x1bW4g cmVmZXJlbmNlcywgc3VicXVlcmllcywgZXRjLiBCdXQgd2UKICBwZXJtaXQgdGhlIG1hZ2lj IFVOQk9VTkRFRCBrZXl3b3JkIGFzIHRoZSBGUk9NIG9yIHRoZSBUTyAob3IgYm90aCkKICB0 byBwZXJmb3JtIGFuIHVuYm91bmRlZCB1cGRhdGUvZGVsZXRlLiBXZSBhbHNvIGFjY2VwdCBm dW5jdGlvbnMgbGlrZQogIE5PVygpLgotIEFkZGVkIGxvZ2ljIHRvIGV4ZWN1dG9yIHRvIGlu c2VydCBuZXcgcm93cyBmb3IgdGhlICJsZWZ0b3ZlciIgcGFydCBvZgogIGEgcmVjb3JkIHRv dWNoZWQgYnkgYSBGT1IgUE9SVElPTiBPRiBxdWVyeS4KLSBBZGRlZCB0Z190ZW1wb3JhbCBk ZXNjcmlwdG9yIHRvIHRoZSBUcmlnZ2VyRGF0YSBzdHJ1Y3QgdGhhdCB3ZSBwYXNzIHRvCiAg dHJpZ2dlciBmdW5jdGlvbnMuIE91ciB0cmlnZ2VycyB1c2UgdGhpcyB0byBsZWFybiB3aGF0 IGJvdW5kcyB3ZXJlCiAgZ2l2ZW4gaW4gdGhlIEZPUiBQT1JUSU9OIE9GIGNsYXVzZS4KLSBE b2N1bWVudGVkIEZPUiBQT1JUSU9OIE9GLgotIERvY3VtZW50ZWQgdGdfdGVtcG9yYWwgc3Ry dWN0LgotIEFkZGVkIHRlc3RzLgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAg ICAgICAgICAgICAgICAgICB8ICAxOSArLQogZG9jL3NyYy9zZ21sL3JlZi9kZWxldGUuc2dt bCAgICAgICAgICAgICAgICAgIHwgIDcwICsrKwogZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUu c2dtbCAgICAgICAgICAgICAgICAgIHwgIDg4ICsrKwogZG9jL3NyYy9zZ21sL3RyaWdnZXIu c2dtbCAgICAgICAgICAgICAgICAgICAgIHwgIDYwICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC9naXN0dmFsaWRhdGUuYyAgICAgICAgfCAgMzkgKy0KIHNyYy9iYWNrZW5kL2NvbW1h bmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21t YW5kcy90cmlnZ2VyLmMgICAgICAgICAgICAgICAgfCAgNDkgKysKIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyAgICAgICAgfCAyNjMgKysrKysrKy0KIHNyYy9i YWNrZW5kL25vZGVzL25vZGVGdW5jcy5jICAgICAgICAgICAgICAgICB8ICAyNCArCiBzcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgICAgICAgfCAgIDggKy0KIHNy Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyAgICAgICAgICB8ICAgMSArCiBz cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jICAgICAgICAgfCAgIDQgKy0K IHNyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMgICAgICAgICAgICAgICAgICB8IDIwMyAr KysrKystCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAg fCAgNTYgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYyAgICAgICAgICAgICAg ICB8ICAxMCArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY29sbGF0ZS5jICAgICAgICAg ICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgICAgICAgICAg ICAgIHwgICA4ICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgICAgICAgICAg ICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfbWVyZ2UuYyAgICAgICAg ICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYyAg ICAgICAgICB8ICA0MCArKwogc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgICAgICAgICAg ICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvTWFrZWZpbGUgICAg ICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BlcmlvZC5jICAg ICAgICAgICAgICAgIHwgIDU2ICsrCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dl cnMuYyAgICAgICAgICAgfCAgNzQgKysrCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lz Y2FjaGUuYyAgICAgICAgICAgfCAgNTMgKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy9zdHJhdG51 bS5oICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19h bW9wLmRhdCAgICAgICAgICAgICAgIHwgIDE1ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdf YW1vcC5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jb21tYW5kcy90 cmlnZ2VyLmggICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmggICAgICAgICAgICAgICAgIHwgIDI2ICsKIHNyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8ICA0NiArLQogc3JjL2luY2x1ZGUvbm9kZXMv cGF0aG5vZGVzLmggICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVz L3BsYW5ub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rl cy9wcmltbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgMjYgKwogc3JjL2luY2x1ZGUvb3B0 aW1pemVyL3BhdGhub2RlLmggICAgICAgICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9w YXJzZXIvYW5hbHl6ZS5oICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRl L3BhcnNlci9rd2xpc3QuaCAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVk ZS9wYXJzZXIvcGFyc2Vfbm9kZS5oICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1 ZGUvdXRpbHMvbHN5c2NhY2hlLmggICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNs dWRlL3V0aWxzL3BlcmlvZC5oICAgICAgICAgICAgICAgICAgICB8ICAxOSArCiBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91dCAgfCA1NjIgKysrKysrKysr KysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0ICAg ICAgfCAgIDYgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdlcy5vdXQg ICAgICB8ICAxOCArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3 cy5vdXQgfCAgMzIgKwogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5v dXQgICAgIHwgMTQ0ICsrKystCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl ICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9u X29mLnNxbCAgICAgICB8IDQyMyArKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC9vcHJfc2FuaXR5LnNxbCAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9z cWwvcHJpdmlsZWdlcy5zcWwgICAgICAgICAgIHwgIDE4ICsKIHNyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3VwZGF0YWJsZV92aWV3cy5zcWwgICAgICB8ICAxNCArCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC93aXRob3V0X292ZXJsYXBzLnNxbCAgICAgfCAgOTMgKystCiA1MiBmaWxlcyBjaGFu Z2VkLCAyNTI3IGluc2VydGlvbnMoKyksIDcyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZXJpb2QuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy9pbmNsdWRlL3V0aWxzL3BlcmlvZC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JfcG9ydGlvbl9vZi5zcWwKCmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRh bG9ncy5zZ21sCmluZGV4IDYxOGEwNWFjODkuLjQ2MTcwYzA3NDkgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5z Z21sCkBAIC03NTcsMTIgKzc1NywxNCBAQAogICAgVGhlIGNhdGFsb2cgPHN0cnVjdG5hbWU+ cGdfYW1vcDwvc3RydWN0bmFtZT4gc3RvcmVzIGluZm9ybWF0aW9uIGFib3V0CiAgICBvcGVy YXRvcnMgYXNzb2NpYXRlZCB3aXRoIGFjY2VzcyBtZXRob2Qgb3BlcmF0b3IgZmFtaWxpZXMu ICBUaGVyZSBpcyBvbmUKICAgIHJvdyBmb3IgZWFjaCBvcGVyYXRvciB0aGF0IGlzIGEgbWVt YmVyIG9mIGFuIG9wZXJhdG9yIGZhbWlseS4gIEEgZmFtaWx5Ci0gICBtZW1iZXIgY2FuIGJl IGVpdGhlciBhIDxmaXJzdHRlcm0+c2VhcmNoPC9maXJzdHRlcm0+IG9wZXJhdG9yIG9yIGFu Ci0gICA8Zmlyc3R0ZXJtPm9yZGVyaW5nPC9maXJzdHRlcm0+IG9wZXJhdG9yLiAgQW4gb3Bl cmF0b3IKLSAgIGNhbiBhcHBlYXIgaW4gbW9yZSB0aGFuIG9uZSBmYW1pbHksIGJ1dCBjYW5u b3QgYXBwZWFyIGluIG1vcmUgdGhhbiBvbmUKLSAgIHNlYXJjaCBwb3NpdGlvbiBub3IgbW9y ZSB0aGFuIG9uZSBvcmRlcmluZyBwb3NpdGlvbiB3aXRoaW4gYSBmYW1pbHkuCi0gICAoSXQg aXMgYWxsb3dlZCwgdGhvdWdoIHVubGlrZWx5LCBmb3IgYW4gb3BlcmF0b3IgdG8gYmUgdXNl ZCBmb3IgYm90aAotICAgc2VhcmNoIGFuZCBvcmRlcmluZyBwdXJwb3Nlcy4pCisgICBtZW1i ZXIgY2FuIGJlIGVpdGhlciBhIDxmaXJzdHRlcm0+c2VhcmNoPC9maXJzdHRlcm0+IG9wZXJh dG9yLCBhbgorICAgPGZpcnN0dGVybT5vcmRlcmluZzwvZmlyc3R0ZXJtPiBvcGVyYXRvciwg b3IgYQorICAgPGZpcnN0dGVybT5wb3J0aW9uPC9maXJzdHRlcm0+IG9wZXJhdG9yLiBBCisg ICA8Zmlyc3R0ZXJtPnBvcnRpb248L2ZpcnN0dGVybT4gb3BlcmF0b3IgaXMgdXNlZCBmb3Ig Y29tcHV0aW5nCisgICA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gcmVzdWx0 cy4gQW4gb3BlcmF0b3IgY2FuIGFwcGVhciBpbiBtb3JlCisgICB0aGFuIG9uZSBmYW1pbHks IGJ1dCBjYW5ub3QgYXBwZWFyIGluIG1vcmUgdGhhbiBvbmUgc2VhcmNoLCBvcmRlcmluZywg b3IKKyAgIHBvcnRpb24gcG9zaXRpb24gd2l0aGluIGEgZmFtaWx5LiAoSXQgaXMgYWxsb3dl ZCwgdGhvdWdoIHVubGlrZWx5LCBmb3IgYW4KKyAgIG9wZXJhdG9yIHRvIGJlIHVzZWQgZm9y IG1vcmUgdGhhbiBvbmUgcHVycG9zZS4pCiAgIDwvcGFyYT4KIAogICA8dGFibGU+CkBAIC04 MzMsOCArODM1LDkgQEAKICAgICAgICA8c3RydWN0ZmllbGQ+YW1vcHB1cnBvc2U8L3N0cnVj dGZpZWxkPiA8dHlwZT5jaGFyPC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+ Ci0gICAgICAgT3BlcmF0b3IgcHVycG9zZSwgZWl0aGVyIDxsaXRlcmFsPnM8L2xpdGVyYWw+ IGZvciBzZWFyY2ggb3IKLSAgICAgICA8bGl0ZXJhbD5vPC9saXRlcmFsPiBmb3Igb3JkZXJp bmcKKyAgICAgICBPcGVyYXRvciBwdXJwb3NlLCBlaXRoZXIgPGxpdGVyYWw+czwvbGl0ZXJh bD4gZm9yIHNlYXJjaCwKKyAgICAgICA8bGl0ZXJhbD5vPC9saXRlcmFsPiBmb3Igb3JkZXJp bmcsCisgICAgICAgb3IgPGxpdGVyYWw+cDwvbGl0ZXJhbD4gZm9yIHBvcnRpb24KICAgICAg IDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL3JlZi9kZWxldGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvZGVsZXRlLnNnbWwKaW5k ZXggMWI4MWI0ZTdkNy4uMzg5ZGU1YmMwNiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Jl Zi9kZWxldGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2RlbGV0ZS5zZ21sCkBAIC0y Myw2ICsyMyw3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogPHN5bm9wc2lzPgogWyBX SVRIIFsgUkVDVVJTSVZFIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPndpdGhf cXVlcnk8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIF0KIERFTEVURSBGUk9NIFsgT05MWSBdIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4g WyAqIF0gWyBbIEFTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFsaWFzPC9y ZXBsYWNlYWJsZT4gXQorICAgIFsgRk9SIFBPUlRJT04gT0YgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4gRlJPTSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3RhcnRfdGltZTwvcmVwbGFjZWFibGU+ IFRPIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lbmRfdGltZTwvcmVwbGFjZWFi bGU+IF0KICAgICBbIFVTSU5HIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5mcm9t X2l0ZW08L3JlcGxhY2VhYmxlPiBbLCAuLi5dIF0KICAgICBbIFdIRVJFIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5jb25kaXRpb248L3JlcGxhY2VhYmxlPiB8IFdIRVJFIENV UlJFTlQgT0YgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmN1cnNvcl9uYW1lPC9y ZXBsYWNlYWJsZT4gXQogICAgIFsgUkVUVVJOSU5HICogfCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+b3V0cHV0X2V4cHJlc3Npb248L3JlcGxhY2VhYmxlPiBbIFsgQVMgXSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3V0cHV0X25hbWU8L3JlcGxhY2VhYmxl PiBdIFssIC4uLl0gXQpAQCAtNTQsNiArNTUsNDAgQEAgREVMRVRFIEZST00gWyBPTkxZIF0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxl PiBbICoKICAgIGNpcmN1bXN0YW5jZXMuCiAgIDwvcGFyYT4KIAorICA8cGFyYT4KKyAgIElm IHRoZSB0YWJsZSBoYXMgYSByYW5nZSBjb2x1bW4gb3IKKyAgIDxsaW5rIGxpbmtlbmQ9ImRk bC1wZXJpb2RzLWFwcGxpY2F0aW9uLXBlcmlvZHMiPjxsaXRlcmFsPlBFUklPRDwvbGl0ZXJh bD48L2xpbms+LAorICAgeW91IG1heSBzdXBwbHkgYSA8bGl0ZXJhbD5GT1IgUE9SVElPTiBP RjwvbGl0ZXJhbD4gY2xhdXNlLCBhbmQgeW91ciBkZWxldGUgd2lsbAorICAgb25seSBhZmZl Y3Qgcm93cyB0aGF0IG92ZXJsYXAgdGhlIGdpdmVuIGludGVydmFsLiBGdXJ0aGVybW9yZSwg aWYgYSByb3cncyBzcGFuCisgICBleHRlbmRzIG91dHNpZGUgdGhlIDxsaXRlcmFsPkZPUiBQ T1JUSU9OIE9GPC9saXRlcmFsPiBib3VuZHMsIHRoZW4geW91ciBkZWxldGUKKyAgIHdpbGwg b25seSBjaGFuZ2UgdGhlIHNwYW4gd2l0aGluIHRob3NlIGJvdW5kcy4gSW4gZWZmZWN0IHlv dSBhcmUgZGVsZXRpbmcgYW55CisgICBtb21lbnQgdGFyZ2V0ZWQgYnkgPGxpdGVyYWw+Rk9S IFBPUlRJT04gT0Y8L2xpdGVyYWw+IGFuZCBubyBtb21lbnRzIG91dHNpZGUuCisgIDwvcGFy YT4KKworICA8cGFyYT4KKyAgIFNwZWNpZmljYWxseSwgYWZ0ZXIgPHByb2R1Y3RuYW1lPlBv c3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBkZWxldGVzIHRoZSBleGlzdGluZyByb3csCisgICBp dCB3aWxsIDxsaXRlcmFsPklOU0VSVDwvbGl0ZXJhbD4KKyAgIG5ldyByb3dzIHdob3NlIHJh bmdlIG9yIHN0YXJ0L2VuZCBjb2x1bW4ocykgcmVjZWl2ZSB0aGUgcmVtYWluaW5nIHNwYW4g b3V0c2lkZQorICAgdGhlIHRhcmdldGVkIGJvdW5kcywgY29udGFpbmluZyB0aGUgb3JpZ2lu YWwgdmFsdWVzIGluIG90aGVyIGNvbHVtbnMuCisgICBUaGVyZSB3aWxsIGJlIHplcm8gdG8g dHdvIGluc2VydGVkIHJlY29yZHMsCisgICBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgb3Jp Z2luYWwgc3BhbiBleHRlbmRlZCBiZWZvcmUgdGhlIHRhcmdldGVkCisgICA8bGl0ZXJhbD5G Uk9NPC9saXRlcmFsPiwgYWZ0ZXIgdGhlIHRhcmdldGVkIDxsaXRlcmFsPlRPPC9saXRlcmFs PiwgYm90aCwgb3IgbmVpdGhlci4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVGhlc2Ug c2Vjb25kYXJ5IGluc2VydHMgZmlyZSA8bGl0ZXJhbD5JTlNFUlQ8L2xpdGVyYWw+IHRyaWdn ZXJzLiBGaXJzdAorICAgPGxpdGVyYWw+QkVGT1JFIERFTEVURTwvbGl0ZXJhbD4gdHJpZ2dl cnMgZmlyc3QsIHRoZW4KKyAgIDxsaXRlcmFsPkJFRk9SRSBJTlNFUlQ8L2xpdGVyYWw+LCB0 aGVuIDxsaXRlcmFsPkFGVEVSIElOU0VSVDwvbGl0ZXJhbD4sCisgICB0aGVuIDxsaXRlcmFs PkFGVEVSIERFTEVURTwvbGl0ZXJhbD4uCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRo ZXNlIHNlY29uZGFyeSBpbnNlcnRzIGRvIG5vdCByZXF1aXJlIDxsaXRlcmFsPklOU0VSVDwv bGl0ZXJhbD4gcHJpdmlsZWdlIG9uIHRoZSB0YWJsZS4KKyAgIFRoaXMgaXMgYmVjYXVzZSBj b25jZXB0dWFsbHkgbm8gbmV3IGluZm9ybWF0aW9uIGhhcyBiZWVuIGFkZGVkLiBUaGUgaW5z ZXJ0ZWQgcm93cyBvbmx5IHByZXNlcnZlCisgICBleGlzdGluZyBkYXRhIGFib3V0IHRoZSB1 bnRhcmdldGVkIHRpbWUgcGVyaW9kLiBOb3RlIHRoaXMgbWF5IHJlc3VsdCBpbiB1c2VycyBm aXJpbmcgPGxpdGVyYWw+SU5TRVJUPC9saXRlcmFsPgorICAgdHJpZ2dlcnMgd2hvIGRvbid0 IGhhdmUgaW5zZXJ0IHByaXZpbGVnZXMsIHNvIGJlIGNhcmVmdWwgYWJvdXQgPGxpdGVyYWw+ U0VDVVJJVFkgREVGSU5FUjwvbGl0ZXJhbD4gdHJpZ2dlciBmdW5jdGlvbnMhCisgIDwvcGFy YT4KKwogICA8cGFyYT4KICAgIFRoZSBvcHRpb25hbCA8bGl0ZXJhbD5SRVRVUk5JTkc8L2xp dGVyYWw+IGNsYXVzZSBjYXVzZXMgPGNvbW1hbmQ+REVMRVRFPC9jb21tYW5kPgogICAgdG8g Y29tcHV0ZSBhbmQgcmV0dXJuIHZhbHVlKHMpIGJhc2VkIG9uIGVhY2ggcm93IGFjdHVhbGx5 IGRlbGV0ZWQuCkBAIC0xMTYsNiArMTUxLDQxIEBAIERFTEVURSBGUk9NIFsgT05MWSBdIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4g WyAqCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlz dGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yYW5n ZV9vcl9wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4K KyAgICAgPHBhcmE+CisgICAgICBUaGUgcmFuZ2UgY29sdW1uIG9yIHBlcmlvZCB0byB1c2Ug d2hlbiBwZXJmb3JtaW5nIGEgdGVtcG9yYWwgZGVsZXRlLgorICAgICA8L3BhcmE+CisgICAg PC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5Pgor ICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdGFydF90aW1lPC9y ZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAg IFRoZSBlYXJsaWVzdCB0aW1lIChpbmNsdXNpdmUpIHRvIGNoYW5nZSBpbiBhIHRlbXBvcmFs IGRlbGV0ZS4KKyAgICAgIFRoaXMgbXVzdCBiZSBhIHZhbHVlIG1hdGNoaW5nIHRoZSBiYXNl IHR5cGUgb2YgdGhlIHJhbmdlIG9yIHBlcmlvZCBmcm9tCisgICAgICA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPi4g QQorICAgICAgPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4gaGVyZSBpbmRpY2F0ZXMgYSBkZWxl dGUgd2hvc2UgYmVnaW5uaW5nIGlzCisgICAgICB1bmJvdW5kZWQgKGFzIHdpdGggcmFuZ2Ug dHlwZXMpLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVu dHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5lbmRfdGltZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0 aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgbGF0ZXN0IHRpbWUgKGV4Y2x1c2l2ZSkg dG8gY2hhbmdlIGluIGEgdGVtcG9yYWwgZGVsZXRlLgorICAgICAgVGhpcyBtdXN0IGJlIGEg dmFsdWUgbWF0Y2hpbmcgdGhlIGJhc2UgdHlwZSBvZiB0aGUgcmFuZ2Ugb3IgcGVyaW9kIGZy b20KKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yYW5nZV9vcl9wZXJp b2RfbmFtZTwvcmVwbGFjZWFibGU+LiBBCisgICAgICA8bGl0ZXJhbD5OVUxMPC9saXRlcmFs PiBoZXJlIGluZGljYXRlcyBhIGRlbGV0ZSB3aG9zZSBlbmQgaXMgdW5ib3VuZGVkCisgICAg ICAoYXMgd2l0aCByYW5nZSB0eXBlcykuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVt PgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+ PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmZyb21faXRlbTwvcmVwbGFjZWFibGU+ PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYv dXBkYXRlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3VwZGF0ZS5zZ21sCmluZGV4IDJhYjI0 YjA1MjMuLmM1MWFlZjIxNzUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvdXBkYXRl LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUuc2dtbApAQCAtMjMsNiArMjMs NyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIDxzeW5vcHNpcz4KIFsgV0lUSCBbIFJF Q1VSU0lWRSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj53aXRoX3F1ZXJ5PC9y ZXBsYWNlYWJsZT4gWywgLi4uXSBdCiBVUERBVEUgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXSBbIFsgQVMg XSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+YWxpYXM8L3JlcGxhY2VhYmxlPiBd CisgICAgWyBGT1IgUE9SVElPTiBPRiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+Zm9yX3BvcnRpb25fb2ZfdGFyZ2V0PC9yZXBsYWNlYWJsZT4gXQogICAg IFNFVCB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVw bGFjZWFibGU+ID0geyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lv bjwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9IHwKICAgICAgICAgICAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0g KSA9IFsgUk9XIF0gKCB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNz aW9uPC9yZXBsYWNlYWJsZT4gfCBERUZBVUxUIH0gWywgLi4uXSApIHwKICAgICAgICAgICAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFi bGU+IFssIC4uLl0gKSA9ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1Yi1T RUxFQ1Q8L3JlcGxhY2VhYmxlPiApCkBAIC01MSw2ICs1Miw0MiBAQCBVUERBVEUgWyBPTkxZ IF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2Vh YmxlPiBbICogXSBbCiAgICBjaXJjdW1zdGFuY2VzLgogICA8L3BhcmE+CiAKKyAgPHBhcmE+ CisgICBJZiB0aGUgdGFibGUgaGFzIGEgcmFuZ2UgY29sdW1uIG9yCisgICA8bGluayBsaW5r ZW5kPSJkZGwtcGVyaW9kcy1hcHBsaWNhdGlvbi1wZXJpb2RzIj48bGl0ZXJhbD5QRVJJT0Q8 L2xpdGVyYWw+PC9saW5rPiwKKyAgIHlvdSBtYXkgc3VwcGx5IGEgPGxpdGVyYWw+Rk9SIFBP UlRJT04gT0Y8L2xpdGVyYWw+IGNsYXVzZSwgYW5kIHlvdXIgdXBkYXRlIHdpbGwKKyAgIG9u bHkgYWZmZWN0IHJvd3MgdGhhdCBvdmVybGFwIHRoZSBnaXZlbiBpbnRlcnZhbC4gRnVydGhl cm1vcmUsIGlmIGEgcm93J3Mgc3BhbgorICAgZXh0ZW5kcyBvdXRzaWRlIHRoZSA8bGl0ZXJh bD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gYm91bmRzLCB0aGVuIHlvdXIgdXBkYXRlCisg ICB3aWxsIG9ubHkgY2hhbmdlIHRoZSBzcGFuIHdpdGhpbiB0aG9zZSBib3VuZHMuIEluIGVm ZmVjdCB5b3UgYXJlIHVwZGF0aW5nIGFueQorICAgbW9tZW50IHRhcmdldGVkIGJ5IDxsaXRl cmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiBhbmQgbm8gbW9tZW50cyBvdXRzaWRlLgor ICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBTcGVjaWZpY2FsbHksIHdoZW4gPHByb2R1Y3Ru YW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiB1cGRhdGVzIHRoZSBleGlzdGluZyByb3cs CisgICBpdCB3aWxsIGFsc28gY2hhbmdlIHRoZSByYW5nZSBvciBzdGFydC9lbmQgY29sdW1u KHMpIHNvIHRoYXQgdGhlaXIgaW50ZXJ2YWwKKyAgIG5vIGxvbmdlciBleHRlbmRzIGJleW9u ZCB0aGUgdGFyZ2V0ZWQgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+IGJvdW5k cy4KKyAgIFRoZW4gPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiB3aWxs IDxsaXRlcmFsPklOU0VSVDwvbGl0ZXJhbD4KKyAgIG5ldyByb3dzIHdob3NlIHJhbmdlIG9y IHN0YXJ0L2VuZCBjb2x1bW4ocykgcmVjZWl2ZSB0aGUgcmVtYWluaW5nIHNwYW4gb3V0c2lk ZQorICAgdGhlIHRhcmdldGVkIGJvdW5kcywgY29udGFpbmluZyB0aGUgdW4tdXBkYXRlZCB2 YWx1ZXMgaW4gb3RoZXIgY29sdW1ucy4KKyAgIFRoZXJlIHdpbGwgYmUgemVybyB0byB0d28g aW5zZXJ0ZWQgcmVjb3JkcywKKyAgIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBvcmlnaW5h bCBzcGFuIGV4dGVuZGVkIGJlZm9yZSB0aGUgdGFyZ2V0ZWQKKyAgIDxsaXRlcmFsPkZST008 L2xpdGVyYWw+LCBhZnRlciB0aGUgdGFyZ2V0ZWQgPGxpdGVyYWw+VE88L2xpdGVyYWw+LCBi b3RoLCBvciBuZWl0aGVyLgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGVzZSBzZWNv bmRhcnkgaW5zZXJ0cyBmaXJlIDxsaXRlcmFsPklOU0VSVDwvbGl0ZXJhbD4gdHJpZ2dlcnMu IEZpcnN0CisgICA8bGl0ZXJhbD5CRUZPUkUgVVBEQVRFPC9saXRlcmFsPiB0cmlnZ2VycyBm aXJzdCwgdGhlbgorICAgPGxpdGVyYWw+QkVGT1JFIElOU0VSVDwvbGl0ZXJhbD4sIHRoZW4g PGxpdGVyYWw+QUZURVIgSU5TRVJUPC9saXRlcmFsPiwKKyAgIHRoZW4gPGxpdGVyYWw+QUZU RVIgVVBEQVRFPC9saXRlcmFsPi4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVGhlc2Ug c2Vjb25kYXJ5IGluc2VydHMgZG8gbm90IHJlcXVpcmUgPGxpdGVyYWw+SU5TRVJUPC9saXRl cmFsPiBwcml2aWxlZ2Ugb24gdGhlIHRhYmxlLgorICAgVGhpcyBpcyBiZWNhdXNlIGNvbmNl cHR1YWxseSBubyBuZXcgaW5mb3JtYXRpb24gaGFzIGJlZW4gYWRkZWQuIFRoZSBpbnNlcnRl ZCByb3dzIG9ubHkgcHJlc2VydmUKKyAgIGV4aXN0aW5nIGRhdGEgYWJvdXQgdGhlIHVudGFy Z2V0ZWQgdGltZSBwZXJpb2QuIE5vdGUgdGhpcyBtYXkgcmVzdWx0IGluIHVzZXJzIGZpcmlu ZyA8bGl0ZXJhbD5JTlNFUlQ8L2xpdGVyYWw+CisgICB0cmlnZ2VycyB3aG8gZG9uJ3QgaGF2 ZSBpbnNlcnQgcHJpdmlsZWdlcywgc28gYmUgY2FyZWZ1bCBhYm91dCA8bGl0ZXJhbD5TRUNV UklUWSBERUZJTkVSPC9saXRlcmFsPiB0cmlnZ2VyIGZ1bmN0aW9ucyEKKyAgPC9wYXJhPgor CiAgIDxwYXJhPgogICAgVGhlIG9wdGlvbmFsIDxsaXRlcmFsPlJFVFVSTklORzwvbGl0ZXJh bD4gY2xhdXNlIGNhdXNlcyA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+CiAgICB0byBjb21w dXRlIGFuZCByZXR1cm4gdmFsdWUocykgYmFzZWQgb24gZWFjaCByb3cgYWN0dWFsbHkgdXBk YXRlZC4KQEAgLTExNCw2ICsxNTEsNTcgQEAgVVBEQVRFIFsgT05MWSBdIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWwog ICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRy eT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmFuZ2Vfb3Jf cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAg IDxwYXJhPgorICAgICAgVGhlIHJhbmdlIGNvbHVtbiBvciBwZXJpb2QgdG8gdXNlIHdoZW4g cGVyZm9ybWluZyBhIHRlbXBvcmFsIHVwZGF0ZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlz dGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8 dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Zm9yX3BvcnRpb25fb2ZfdGFy Z2V0PC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4K KyAgICAgIFRoZSBpbnRlcnZhbCB0byB1cGRhdGUuIElmIHlvdSBhcmUgdGFyZ2V0aW5nIGEg cmFuZ2UgY29sdW1uIG9yIDxsaXRlcmFsPlBFUklPRDwvbGl0ZXJhbD4sCisgICAgICB5b3Ug bWF5IGdpdmUgdGhpcyBpbiB0aGUgZm9ybSA8bGl0ZXJhbD5GUk9NPC9saXRlcmFsPgorICAg ICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN0YXJ0X3RpbWU8L3JlcGxhY2Vh YmxlPiA8bGl0ZXJhbD5UTzwvbGl0ZXJhbD4KKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5lbmRfdGltZTwvcmVwbGFjZWFibGU+LgorICAgICAgT3RoZXJ3aXNlIHlv dSBtdXN0IHVzZQorICAgICAgPGxpdGVyYWw+KDwvbGl0ZXJhbD48cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+PGxpdGVyYWw+KTwvbGl0 ZXJhbD4KKyAgICAgIHdoZXJlIHRoZSBleHByZXNzaW9uIHlpZWxkcyBhIHZhbHVlIGZvciB0 aGUgc2FtZSB0eXBlIGFzCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPi4KKyAgICAgPC9wYXJhPgorICAg IDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4K KyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3RhcnRfdGltZTwv cmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAg ICBUaGUgZWFybGllc3QgdGltZSAoaW5jbHVzaXZlKSB0byBjaGFuZ2UgaW4gYSB0ZW1wb3Jh bCB1cGRhdGUuCisgICAgICBUaGlzIG11c3QgYmUgYSB2YWx1ZSBtYXRjaGluZyB0aGUgYmFz ZSB0eXBlIG9mIHRoZSByYW5nZSBvciBwZXJpb2QgZnJvbQorICAgICAgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4u IEEKKyAgICAgIDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IGhlcmUgaW5kaWNhdGVzIGFuIHVw ZGF0ZSB3aG9zZSBiZWdpbm5pbmcgaXMKKyAgICAgIHVuYm91bmRlZCAoYXMgd2l0aCByYW5n ZSB0eXBlcykuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0 ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmVuZF90aW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxp c3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBsYXRlc3QgdGltZSAoZXhjbHVzaXZl KSB0byBjaGFuZ2UgaW4gYSB0ZW1wb3JhbCB1cGRhdGUuCisgICAgICBUaGlzIG11c3QgYmUg YSB2YWx1ZSBtYXRjaGluZyB0aGUgYmFzZSB0eXBlIG9mIHRoZSByYW5nZSBvciBwZXJpb2Qg ZnJvbQorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3Bl cmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4uIEEKKyAgICAgIDxsaXRlcmFsPk5VTEw8L2xpdGVy YWw+IGhlcmUgaW5kaWNhdGVzIGFuIHVwZGF0ZSB3aG9zZSBlbmQgaXMgdW5ib3VuZGVkCisg ICAgICAoYXMgd2l0aCByYW5nZSB0eXBlcykuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3Rp dGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRl cm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNl YWJsZT48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3RyaWdnZXIuc2dtbCBiL2RvYy9zcmMvc2dtbC90cmlnZ2VyLnNnbWwKaW5kZXggYTUzOTBm ZjY0NC4uNTM4YTFlMDc4ZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3RyaWdnZXIuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvdHJpZ2dlci5zZ21sCkBAIC01MzUsMTcgKzUzNSwxOCBA QCBDQUxMRURfQVNfVFJJR0dFUihmY2luZm8pCiA8cHJvZ3JhbWxpc3Rpbmc+CiB0eXBlZGVm IHN0cnVjdCBUcmlnZ2VyRGF0YQogewotICAgIE5vZGVUYWcgICAgICAgICAgdHlwZTsKLSAg ICBUcmlnZ2VyRXZlbnQgICAgIHRnX2V2ZW50OwotICAgIFJlbGF0aW9uICAgICAgICAgdGdf cmVsYXRpb247Ci0gICAgSGVhcFR1cGxlICAgICAgICB0Z190cmlndHVwbGU7Ci0gICAgSGVh cFR1cGxlICAgICAgICB0Z19uZXd0dXBsZTsKLSAgICBUcmlnZ2VyICAgICAgICAgKnRnX3Ry aWdnZXI7Ci0gICAgVHVwbGVUYWJsZVNsb3QgICp0Z190cmlnc2xvdDsKLSAgICBUdXBsZVRh YmxlU2xvdCAgKnRnX25ld3Nsb3Q7Ci0gICAgVHVwbGVzdG9yZXN0YXRlICp0Z19vbGR0YWJs ZTsKLSAgICBUdXBsZXN0b3Jlc3RhdGUgKnRnX25ld3RhYmxlOwotICAgIGNvbnN0IEJpdG1h cHNldCAqdGdfdXBkYXRlZGNvbHM7CisgICAgTm9kZVRhZyAgICAgICAgICAgIHR5cGU7Cisg ICAgVHJpZ2dlckV2ZW50ICAgICAgIHRnX2V2ZW50OworICAgIFJlbGF0aW9uICAgICAgICAg ICB0Z19yZWxhdGlvbjsKKyAgICBIZWFwVHVwbGUgICAgICAgICAgdGdfdHJpZ3R1cGxlOwor ICAgIEhlYXBUdXBsZSAgICAgICAgICB0Z19uZXd0dXBsZTsKKyAgICBUcmlnZ2VyICAgICAg ICAgICAqdGdfdHJpZ2dlcjsKKyAgICBUdXBsZVRhYmxlU2xvdCAgICAqdGdfdHJpZ3Nsb3Q7 CisgICAgVHVwbGVUYWJsZVNsb3QgICAgKnRnX25ld3Nsb3Q7CisgICAgVHVwbGVzdG9yZXN0 YXRlICAgKnRnX29sZHRhYmxlOworICAgIFR1cGxlc3RvcmVzdGF0ZSAgICp0Z19uZXd0YWJs ZTsKKyAgICBjb25zdCBCaXRtYXBzZXQgICAqdGdfdXBkYXRlZGNvbHM7CisgICAgRm9yUG9y dGlvbk9mU3RhdGUgKnRnX3RlbXBvcmFsOwogfSBUcmlnZ2VyRGF0YTsKIDwvcHJvZ3JhbWxp c3Rpbmc+CiAKQEAgLTgxMyw2ICs4MTQsNDMgQEAgdHlwZWRlZiBzdHJ1Y3QgVHJpZ2dlcgog ICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5 PgorCisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT48c3RydWN0ZmllbGQ+dGdf dGVtcG9yYWw8L3N0cnVjdGZpZWxkPjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAg ICA8cGFyYT4KKyAgICAgICAgU2V0IGZvciA8bGl0ZXJhbD5VUERBVEU8L2xpdGVyYWw+IGFu ZCA8bGl0ZXJhbD5ERUxFVEU8L2xpdGVyYWw+IHF1ZXJpZXMKKyAgICAgICAgdGhhdCB1c2Ug PGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+LCBvdGhlcndpc2UgPHN5bWJvbD5O VUxMPC9zeW1ib2w+LgorICAgICAgICBDb250YWlucyBhIHBvaW50ZXIgdG8gYSBzdHJ1Y3R1 cmUgb2YgdHlwZQorICAgICAgICA8c3RydWN0bmFtZT5Gb3JQb3J0aW9uT2ZTdGF0ZTwvc3Ry dWN0bmFtZT4sIGRlZmluZWQgaW4KKyAgICAgICAgPGZpbGVuYW1lPm5vZGVzL2V4ZWNub2Rl cy5oPC9maWxlbmFtZT46CisKKzxwcm9ncmFtbGlzdGluZz4KK3R5cGVkZWYgc3RydWN0IEZv clBvcnRpb25PZlN0YXRlCit7CisgICAgTm9kZVRhZyB0eXBlOworCisgICAgY2hhciAgICpm cF9yYW5nZU5hbWU7ICAgICAgIC8qIHRoZSBjb2x1bW4vUEVSSU9EIG5hbWVkIGluIEZPUiBQ T1JUSU9OIE9GICovCisgICAgT2lkICAgICBmcF9yYW5nZVR5cGU7ICAgICAgIC8qIHRoZSB0 eXBlIG9mIHRoZSBGT1IgUE9SVElPTiBPRiBleHByZXNzaW9uICovCisgICAgYm9vbCAgICBm cF9oYXNQZXJpb2Q7ICAgICAgIC8qIHRydWUgaWZmIHRoaXMgaXMgYSBQRVJJT0Qgbm90IGEg cmFuZ2UgKi8KKyAgICBjaGFyICAgKmZwX3BlcmlvZFN0YXJ0TmFtZTsgLyogdGhlIFBFUklP RCdzIHN0YXJ0IGNvbHVtbiAqLworICAgIGNoYXIgICAqZnBfcGVyaW9kRW5kTmFtZTsgICAv KiB0aGUgUEVSSU9EJ3MgZW5kIGNvbHVtbiAqLworICAgIERhdHVtICAgZnBfdGFyZ2V0UmFu Z2U7ICAgICAvKiB0aGUgcmFuZ2UgZnJvbSBGT1IgUE9SVElPTiBPRiAqLworfSBGb3JQb3J0 aW9uT2ZTdGF0ZTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisKKyAgICAgICB3aGVyZSA8c3RydWN0 ZmllbGQ+ZnBfcmFuZ2VOYW1lPC9zdHJ1Y3RmaWVsZD4gaXMgdGhlIHBlcmlvZCBvciByYW5n ZQorICAgICAgIGNvbHVtbiBuYW1lZCBpbiB0aGUgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8 L2xpdGVyYWw+IGNsYXVzZSwKKyAgICAgICA8c3RydWN0ZmllbGQ+ZnBfcmFuZ2VUeXBlPC9z dHJ1Y3RmaWVsZD4gaXMgaXRzIHJhbmdlIHR5cGUsCisgICAgICAgPHN0cnVjdGZpZWxkPmZw X2hhc1BlcmlvZDwvc3RydWN0ZmllbGQ+IGluZGljYXRlcyB3aGV0aGVyIGEgcGVyaW9kIHdh cyB1c2VkCisgICAgICAgb3IgYSByYW5nZSBjb2x1bW4sIDxzdHJ1Y3RmaWVsZD5mcF9wZXJp b2RTdGFydE5hbWU8L3N0cnVjdGZpZWxkPiBhbmQKKyAgICAgICA8c3RydWN0ZmllbGQ+ZnBf cGVyaW9kRW5kTmFtZTwvc3RydWN0ZmllbGQ+IGFyZSB0aGUgbmFtZXMgb2YgdGhlIHBlcmlv ZCdzCisgICAgICAgc3RhcnQgYW5kIGVuZCBjb2x1bW5zIChvciA8c3ltYm9sPk5VTEw8L3N5 bWJvbD4gaWYgYSByYW5nZSBjb2x1bW4gd2FzIHVzZWQpLAorICAgICAgIGFuZCA8c3RydWN0 ZmllbGQ+ZnBfdGFyZ2V0UmFuZ2U8L3N0cnVjdGZpZWxkPiBpcyBhIHJhbmdldHlwZSB2YWx1 ZSBjcmVhdGVkCisgICAgICAgYnkgZXZhbHVhdGluZyB0aGUgPGxpdGVyYWw+Rk9SIFBPUlRJ T04gT0Y8L2xpdGVyYWw+IGJvdW5kcy4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3Rp dGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgIDwv cGFyYT4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHZhbGlk YXRlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dmFsaWRhdGUuYwppbmRleCBh YmZjZGU2Y2JhLi4xZjA1YjA5MTRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC9naXN0dmFsaWRhdGUuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0 dmFsaWRhdGUuYwpAQCAtMTk5LDcgKzE5OSw3IEBAIGdpc3R2YWxpZGF0ZShPaWQgb3BjbGFz c29pZCkKIAkJfQogCiAJCS8qIEdpU1Qgc3VwcG9ydHMgT1JERVIgQlkgb3BlcmF0b3JzICov Ci0JCWlmIChvcHJmb3JtLT5hbW9wcHVycG9zZSAhPSBBTU9QX1NFQVJDSCkKKwkJaWYgKG9w cmZvcm0tPmFtb3BwdXJwb3NlID09IEFNT1BfT1JERVIpCiAJCXsKIAkJCS8qIC4uLiBidXQg bXVzdCBoYXZlIG1hdGNoaW5nIGRpc3RhbmNlIHByb2MgKi8KIAkJCWlmICghT2lkSXNWYWxp ZChnZXRfb3BmYW1pbHlfcHJvYyhvcGZhbWlseW9pZCwKQEAgLTIyNiwyNCArMjI2LDQzIEBA IGdpc3R2YWxpZGF0ZShPaWQgb3BjbGFzc29pZCkKIAkJCQlyZXN1bHQgPSBmYWxzZTsKIAkJ CX0KIAkJfQotCQllbHNlCisJCWVsc2UgaWYgKG9wcmZvcm0tPmFtb3BwdXJwb3NlID09IEFN T1BfU0VBUkNIKQogCQl7CiAJCQkvKiBTZWFyY2ggb3BlcmF0b3JzIG11c3QgYWx3YXlzIHJl dHVybiBib29sICovCiAJCQlvcF9yZXR0eXBlID0gQk9PTE9JRDsKIAkJfQotCi0JCS8qIENo ZWNrIG9wZXJhdG9yIHNpZ25hdHVyZSAqLwotCQlpZiAoIWNoZWNrX2Ftb3Bfc2lnbmF0dXJl KG9wcmZvcm0tPmFtb3BvcHIsIG9wX3JldHR5cGUsCi0JCQkJCQkJCSAgb3ByZm9ybS0+YW1v cGxlZnR0eXBlLAotCQkJCQkJCQkgIG9wcmZvcm0tPmFtb3ByaWdodHR5cGUpKQorCQllbHNl IGlmIChvcHJmb3JtLT5hbW9wcHVycG9zZSA9PSBBTU9QX1BPUlRJT04pCiAJCXsKKwkJCS8q IE5vIHJlc3RyaWN0aW9ucyBvbiBQT1JUSU9OICovCisJCQlvcF9yZXR0eXBlID0gSW52YWxp ZE9pZDsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qIE5vdGhpbmcgZWxzZSBpdCBjb3VsZCBi ZSAqLwogCQkJZXJlcG9ydChJTkZPLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURf T0JKRUNUX0RFRklOSVRJT04pLAotCQkJCQkgZXJybXNnKCJvcGVyYXRvciBmYW1pbHkgXCIl c1wiIG9mIGFjY2VzcyBtZXRob2QgJXMgY29udGFpbnMgb3BlcmF0b3IgJXMgd2l0aCB3cm9u ZyBzaWduYXR1cmUiLAotCQkJCQkJCW9wZmFtaWx5bmFtZSwgImdpc3QiLAotCQkJCQkJCWZv cm1hdF9vcGVyYXRvcihvcHJmb3JtLT5hbW9wb3ByKSkpKTsKKwkJCQkJIGVycm1zZygib3Bl cmF0b3IgZmFtaWx5IFwiJXNcIiBvZiBhY2Nlc3MgbWV0aG9kICVzIGNvbnRhaW5zIHVua25v d24gcHVycG9zZSAlYyBmb3Igb3BlcmF0b3IgJXMiLAorCQkJCQkJIG9wZmFtaWx5bmFtZSwg Imdpc3QiLCBvcHJmb3JtLT5hbW9wcHVycG9zZSwKKwkJCQkJCSBmb3JtYXRfb3BlcmF0b3Io b3ByZm9ybS0+YW1vcG9wcikpKSk7CisJCQlvcF9yZXR0eXBlID0gSW52YWxpZE9pZDsKIAkJ CXJlc3VsdCA9IGZhbHNlOwogCQl9CisKKwkJLyogQ2hlY2sgb3BlcmF0b3Igc2lnbmF0dXJl ICovCisJCWlmIChPaWRJc1ZhbGlkKG9wX3JldHR5cGUpKQorCQl7CisJCQlpZiAoIWNoZWNr X2Ftb3Bfc2lnbmF0dXJlKG9wcmZvcm0tPmFtb3BvcHIsIG9wX3JldHR5cGUsCisJCQkJCQkJ CQkgIG9wcmZvcm0tPmFtb3BsZWZ0dHlwZSwKKwkJCQkJCQkJCSAgb3ByZm9ybS0+YW1vcHJp Z2h0dHlwZSkpCisJCQl7CisJCQkJZXJlcG9ydChJTkZPLAorCQkJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkJCSBlcnJtc2coIm9wZXJh dG9yIGZhbWlseSBcIiVzXCIgb2YgYWNjZXNzIG1ldGhvZCAlcyBjb250YWlucyBvcGVyYXRv ciAlcyB3aXRoIHdyb25nIHNpZ25hdHVyZSIsCisJCQkJCQkJCW9wZmFtaWx5bmFtZSwgImdp c3QiLAorCQkJCQkJCQlmb3JtYXRfb3BlcmF0b3Iob3ByZm9ybS0+YW1vcG9wcikpKSk7CisJ CQkJcmVzdWx0ID0gZmFsc2U7CisJCQl9CisJCX0KIAl9CiAKIAkvKiBOb3cgY2hlY2sgZm9y IGluY29uc2lzdGVudCBncm91cHMgb2Ygb3BlcmF0b3JzL2Z1bmN0aW9ucyAqLwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBhZjQ5MWU0YjU4Li5hZDVkYzYxNjM4IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMTIzNTgsNiArMTIzNTgsNyBAQCB2YWxp ZGF0ZUZvcmVpZ25LZXlDb25zdHJhaW50KGNoYXIgKmNvbm5hbWUsCiAJCXRyaWdkYXRhLnRn X3RyaWd0dXBsZSA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGUoc2xvdCwgZmFsc2UsIE5VTEwp OwogCQl0cmlnZGF0YS50Z190cmlnc2xvdCA9IHNsb3Q7CiAJCXRyaWdkYXRhLnRnX3RyaWdn ZXIgPSAmdHJpZzsKKwkJdHJpZ2RhdGEudGdfdGVtcG9yYWwgPSBOVUxMOwogCiAJCWZjaW5m by0+Y29udGV4dCA9IChOb2RlICopICZ0cmlnZGF0YTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dl ci5jCmluZGV4IGExMGE0MmI5N2YuLjA2OWMyMmIzOGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90cmln Z2VyLmMKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNs dWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2J5dGVhLmgiCisjaW5j bHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgogI2lu Y2x1ZGUgInV0aWxzL2d1Y19ob29rcy5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCkBA IC0yNjM4LDYgKzI2MzksNyBAQCBFeGVjQlNEZWxldGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0 ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbykKIAlMb2NUcmlnZ2VyRGF0YS50Z19ldmVudCA9 IFRSSUdHRVJfRVZFTlRfREVMRVRFIHwKIAkJVFJJR0dFUl9FVkVOVF9CRUZPUkU7CiAJTG9j VHJpZ2dlckRhdGEudGdfcmVsYXRpb24gPSByZWxpbmZvLT5yaV9SZWxhdGlvbkRlc2M7CisJ TG9jVHJpZ2dlckRhdGEudGdfdGVtcG9yYWwgPSByZWxpbmZvLT5yaV9mb3JQb3J0aW9uT2Y7 CiAJZm9yIChpID0gMDsgaSA8IHRyaWdkZXNjLT5udW10cmlnZ2VyczsgaSsrKQogCXsKIAkJ VHJpZ2dlciAgICAqdHJpZ2dlciA9ICZ0cmlnZGVzYy0+dHJpZ2dlcnNbaV07CkBAIC0yNzM3 LDYgKzI3MzksNyBAQCBFeGVjQlJEZWxldGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgRVBR U3RhdGUgKmVwcXN0YXRlLAogCQlUUklHR0VSX0VWRU5UX1JPVyB8CiAJCVRSSUdHRVJfRVZF TlRfQkVGT1JFOwogCUxvY1RyaWdnZXJEYXRhLnRnX3JlbGF0aW9uID0gcmVsaW5mby0+cmlf UmVsYXRpb25EZXNjOworCUxvY1RyaWdnZXJEYXRhLnRnX3RlbXBvcmFsID0gcmVsaW5mby0+ cmlfZm9yUG9ydGlvbk9mOwogCWZvciAoaSA9IDA7IGkgPCB0cmlnZGVzYy0+bnVtdHJpZ2dl cnM7IGkrKykKIAl7CiAJCUhlYXBUdXBsZQluZXd0dXBsZTsKQEAgLTI4MjgsNiArMjgzMSw3 IEBAIEV4ZWNJUkRlbGV0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZv ICpyZWxpbmZvLAogCQlUUklHR0VSX0VWRU5UX1JPVyB8CiAJCVRSSUdHRVJfRVZFTlRfSU5T VEVBRDsKIAlMb2NUcmlnZ2VyRGF0YS50Z19yZWxhdGlvbiA9IHJlbGluZm8tPnJpX1JlbGF0 aW9uRGVzYzsKKwlMb2NUcmlnZ2VyRGF0YS50Z190ZW1wb3JhbCA9IHJlbGluZm8tPnJpX2Zv clBvcnRpb25PZjsKIAogCUV4ZWNGb3JjZVN0b3JlSGVhcFR1cGxlKHRyaWd0dXBsZSwgc2xv dCwgZmFsc2UpOwogCkBAIC0yODkxLDYgKzI4OTUsNyBAQCBFeGVjQlNVcGRhdGVUcmlnZ2Vy cyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbykKIAkJVFJJR0dFUl9F VkVOVF9CRUZPUkU7CiAJTG9jVHJpZ2dlckRhdGEudGdfcmVsYXRpb24gPSByZWxpbmZvLT5y aV9SZWxhdGlvbkRlc2M7CiAJTG9jVHJpZ2dlckRhdGEudGdfdXBkYXRlZGNvbHMgPSB1cGRh dGVkQ29sczsKKwlMb2NUcmlnZ2VyRGF0YS50Z190ZW1wb3JhbCA9IHJlbGluZm8tPnJpX2Zv clBvcnRpb25PZjsKIAlmb3IgKGkgPSAwOyBpIDwgdHJpZ2Rlc2MtPm51bXRyaWdnZXJzOyBp KyspCiAJewogCQlUcmlnZ2VyICAgICp0cmlnZ2VyID0gJnRyaWdkZXNjLT50cmlnZ2Vyc1tp XTsKQEAgLTMwMDgsNiArMzAxMyw3IEBAIEV4ZWNCUlVwZGF0ZVRyaWdnZXJzKEVTdGF0ZSAq ZXN0YXRlLCBFUFFTdGF0ZSAqZXBxc3RhdGUsCiAJCVRSSUdHRVJfRVZFTlRfUk9XIHwKIAkJ VFJJR0dFUl9FVkVOVF9CRUZPUkU7CiAJTG9jVHJpZ2dlckRhdGEudGdfcmVsYXRpb24gPSBy ZWxpbmZvLT5yaV9SZWxhdGlvbkRlc2M7CisJTG9jVHJpZ2dlckRhdGEudGdfdGVtcG9yYWwg PSByZWxpbmZvLT5yaV9mb3JQb3J0aW9uT2Y7CiAJdXBkYXRlZENvbHMgPSBFeGVjR2V0QWxs VXBkYXRlZENvbHMocmVsaW5mbywgZXN0YXRlKTsKIAlMb2NUcmlnZ2VyRGF0YS50Z191cGRh dGVkY29scyA9IHVwZGF0ZWRDb2xzOwogCWZvciAoaSA9IDA7IGkgPCB0cmlnZGVzYy0+bnVt dHJpZ2dlcnM7IGkrKykKQEAgLTMxNTcsNiArMzE2Myw3IEBAIEV4ZWNJUlVwZGF0ZVRyaWdn ZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAogCQlUUklHR0VS X0VWRU5UX1JPVyB8CiAJCVRSSUdHRVJfRVZFTlRfSU5TVEVBRDsKIAlMb2NUcmlnZ2VyRGF0 YS50Z19yZWxhdGlvbiA9IHJlbGluZm8tPnJpX1JlbGF0aW9uRGVzYzsKKwlMb2NUcmlnZ2Vy RGF0YS50Z190ZW1wb3JhbCA9IHJlbGluZm8tPnJpX2ZvclBvcnRpb25PZjsKIAogCUV4ZWNG b3JjZVN0b3JlSGVhcFR1cGxlKHRyaWd0dXBsZSwgb2xkc2xvdCwgZmFsc2UpOwogCkBAIC0z NjIzLDYgKzM2MzAsNyBAQCB0eXBlZGVmIHN0cnVjdCBBZnRlclRyaWdnZXJTaGFyZWREYXRh CiAJT2lkCQkJYXRzX3Rnb2lkOwkJLyogdGhlIHRyaWdnZXIncyBJRCAqLwogCU9pZAkJCWF0 c19yZWxpZDsJCS8qIHRoZSByZWxhdGlvbiBpdCdzIG9uICovCiAJQ29tbWFuZElkCWF0c19m aXJpbmdfaWQ7CS8qIElEIGZvciBmaXJpbmcgY3ljbGUgKi8KKwlGb3JQb3J0aW9uT2ZTdGF0 ZSAqZm9yX3BvcnRpb25fb2Y7CS8qIHRoZSBGT1IgUE9SVElPTiBPRiBjbGF1c2UgKi8KIAlz dHJ1Y3QgQWZ0ZXJUcmlnZ2Vyc1RhYmxlRGF0YSAqYXRzX3RhYmxlOwkvKiB0cmFuc2l0aW9u IHRhYmxlIGFjY2VzcyAqLwogCUJpdG1hcHNldCAgKmF0c19tb2RpZmllZGNvbHM7CS8qIG1v ZGlmaWVkIGNvbHVtbnMgKi8KIH0gQWZ0ZXJUcmlnZ2VyU2hhcmVkRGF0YTsKQEAgLTM4OTYs NiArMzkwNCw3IEBAIHN0YXRpYyBTZXRDb25zdHJhaW50U3RhdGUgU2V0Q29uc3RyYWludFN0 YXRlQ3JlYXRlKGludCBudW1hbGxvYyk7CiBzdGF0aWMgU2V0Q29uc3RyYWludFN0YXRlIFNl dENvbnN0cmFpbnRTdGF0ZUNvcHkoU2V0Q29uc3RyYWludFN0YXRlIG9yaWdzdGF0ZSk7CiBz dGF0aWMgU2V0Q29uc3RyYWludFN0YXRlIFNldENvbnN0cmFpbnRTdGF0ZUFkZEl0ZW0oU2V0 Q29uc3RyYWludFN0YXRlIHN0YXRlLAogCQkJCQkJCQkJCQkJCU9pZCB0Z29pZCwgYm9vbCB0 Z2lzZGVmZXJyZWQpOworc3RhdGljIEZvclBvcnRpb25PZlN0YXRlICpDb3B5Rm9yUG9ydGlv bk9mU3RhdGUoRm9yUG9ydGlvbk9mU3RhdGUgKnNyYyk7CiBzdGF0aWMgdm9pZCBjYW5jZWxf cHJpb3Jfc3RtdF90cmlnZ2VycyhPaWQgcmVsaWQsIENtZFR5cGUgY21kVHlwZSwgaW50IHRn ZXZlbnQpOwogCiAKQEAgLTQxMDUsNiArNDExNCw3IEBAIGFmdGVyVHJpZ2dlckFkZEV2ZW50 KEFmdGVyVHJpZ2dlckV2ZW50TGlzdCAqZXZlbnRzLAogCQkJbmV3c2hhcmVkLT5hdHNfcmVs aWQgPT0gZXZ0c2hhcmVkLT5hdHNfcmVsaWQgJiYKIAkJCW5ld3NoYXJlZC0+YXRzX2V2ZW50 ID09IGV2dHNoYXJlZC0+YXRzX2V2ZW50ICYmCiAJCQluZXdzaGFyZWQtPmF0c190YWJsZSA9 PSBldnRzaGFyZWQtPmF0c190YWJsZSAmJgorCQkJbmV3c2hhcmVkLT5mb3JfcG9ydGlvbl9v ZiA9PSBldnRzaGFyZWQtPmZvcl9wb3J0aW9uX29mICYmCiAJCQluZXdzaGFyZWQtPmF0c19m aXJpbmdfaWQgPT0gMCkKIAkJCWJyZWFrOwogCX0KQEAgLTQ0NjksNiArNDQ3OSw3IEBAIEFm dGVyVHJpZ2dlckV4ZWN1dGUoRVN0YXRlICplc3RhdGUsCiAJTG9jVHJpZ2dlckRhdGEudGdf cmVsYXRpb24gPSByZWw7CiAJaWYgKFRSSUdHRVJfRk9SX1VQREFURShMb2NUcmlnZ2VyRGF0 YS50Z190cmlnZ2VyLT50Z3R5cGUpKQogCQlMb2NUcmlnZ2VyRGF0YS50Z191cGRhdGVkY29s cyA9IGV2dHNoYXJlZC0+YXRzX21vZGlmaWVkY29sczsKKwlMb2NUcmlnZ2VyRGF0YS50Z190 ZW1wb3JhbCA9IGV2dHNoYXJlZC0+Zm9yX3BvcnRpb25fb2Y7CiAKIAlNZW1vcnlDb250ZXh0 UmVzZXQocGVyX3R1cGxlX2NvbnRleHQpOwogCkBAIC02MDA1LDYgKzYwMTYsNDMgQEAgQWZ0 ZXJUcmlnZ2VyUGVuZGluZ09uUmVsKE9pZCByZWxpZCkKIAlyZXR1cm4gZmFsc2U7CiB9CiAK Ky8qIC0tLS0tLS0tLS0KKyAqIEZvclBvcnRpb25PZlN0YXRlKCkKKyAqCisgKiBDb3BpZXMg YSBGb3JQb3J0aW9uT2ZTdGF0ZSBpbnRvIHRoZSBjdXJyZW50IG1lbW9yeSBjb250ZXh0Lgor ICovCitzdGF0aWMgRm9yUG9ydGlvbk9mU3RhdGUgKgorQ29weUZvclBvcnRpb25PZlN0YXRl KEZvclBvcnRpb25PZlN0YXRlICpzcmMpCit7CisJRm9yUG9ydGlvbk9mU3RhdGUgKmRzdCA9 IE5VTEw7CisJaWYgKHNyYykgeworCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwkJUmFuZ2VU eXBlICpyOworCQlUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGU7CisKKwkJLyoKKwkJICogTmVl ZCB0byBsaWZ0IHRoZSBGT1IgUE9SVElPTiBPRiBkZXRhaWxzIGludG8gYSBoaWdoZXIgbWVt b3J5IGNvbnRleHQKKwkJICogYmVjYXVzZSBjYXNjYWRpbmcgZm9yZWlnbiBrZXkgdXBkYXRl L2RlbGV0ZXMgY2FuIGNhdXNlIHRyaWdnZXJzIHRvIGZpcmUKKwkJICogdHJpZ2dlcnMsIGFu ZCB0aGUgQWZ0ZXJUcmlnZ2VyRXZlbnRzIHdpbGwgb3V0bGl2ZSB0aGUgRlBPCisJCSAqIGRl dGFpbHMgb2YgdGhlIG9yaWdpbmFsIHF1ZXJ5LgorCQkgKi8KKwkJb2xkY3R4ID0gTWVtb3J5 Q29udGV4dFN3aXRjaFRvKFRvcFRyYW5zYWN0aW9uQ29udGV4dCk7CisJCWRzdCA9IG1ha2VO b2RlKEZvclBvcnRpb25PZlN0YXRlKTsKKwkJZHN0LT5mcF9yYW5nZU5hbWUgPSBwc3RyZHVw KHNyYy0+ZnBfcmFuZ2VOYW1lKTsKKwkJZHN0LT5mcF9yYW5nZVR5cGUgPSBzcmMtPmZwX3Jh bmdlVHlwZTsKKwkJZHN0LT5mcF9oYXNQZXJpb2QgPSBzcmMtPmZwX2hhc1BlcmlvZDsKKwkJ ZHN0LT5mcF9yYW5nZUF0dG5vID0gc3JjLT5mcF9yYW5nZUF0dG5vOworCQlkc3QtPmZwX3Bl cmlvZFN0YXJ0QXR0bm8gPSBzcmMtPmZwX3BlcmlvZFN0YXJ0QXR0bm87CisJCWRzdC0+ZnBf cGVyaW9kRW5kQXR0bm8gPSBzcmMtPmZwX3BlcmlvZEVuZEF0dG5vOworCisJCXIgPSBEYXR1 bUdldFJhbmdlVHlwZVAoc3JjLT5mcF90YXJnZXRSYW5nZSk7CisJCXR5cGNhY2hlID0gbG9v a3VwX3R5cGVfY2FjaGUoUmFuZ2VUeXBlR2V0T2lkKHIpLCBUWVBFQ0FDSEVfUkFOR0VfSU5G Tyk7CisJCWRzdC0+ZnBfdGFyZ2V0UmFuZ2UgPSBkYXR1bUNvcHkoc3JjLT5mcF90YXJnZXRS YW5nZSwgdHlwY2FjaGUtPnR5cGJ5dmFsLCB0eXBjYWNoZS0+dHlwbGVuKTsKKwkJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJfQorCXJldHVybiBkc3Q7Cit9CisKIC8qIC0t LS0tLS0tLS0KICAqIEFmdGVyVHJpZ2dlclNhdmVFdmVudCgpCiAgKgpAQCAtNjQyMCw2ICs2 NDY4LDcgQEAgQWZ0ZXJUcmlnZ2VyU2F2ZUV2ZW50KEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRS ZWxJbmZvICpyZWxpbmZvLAogCQllbHNlCiAJCQluZXdfc2hhcmVkLmF0c190YWJsZSA9IE5V TEw7CiAJCW5ld19zaGFyZWQuYXRzX21vZGlmaWVkY29scyA9IGFmdGVyVHJpZ2dlckNvcHlC aXRtYXAobW9kaWZpZWRDb2xzKTsKKwkJbmV3X3NoYXJlZC5mb3JfcG9ydGlvbl9vZiA9IENv cHlGb3JQb3J0aW9uT2ZTdGF0ZShyZWxpbmZvLT5yaV9mb3JQb3J0aW9uT2YpOwogCiAJCWFm dGVyVHJpZ2dlckFkZEV2ZW50KCZhZnRlclRyaWdnZXJzLnF1ZXJ5X3N0YWNrW2FmdGVyVHJp Z2dlcnMucXVlcnlfZGVwdGhdLmV2ZW50cywKIAkJCQkJCQkgJm5ld19ldmVudCwgJm5ld19z aGFyZWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggNGM1YTdiYmY2Mi4uNjkw OTZjYmVmYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC0xMjc0LDYgKzEyNzQs NyBAQCBJbml0UmVzdWx0UmVsSW5mbyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAog CXJlc3VsdFJlbEluZm8tPnJpX3Byb2plY3RSZXR1cm5pbmcgPSBOVUxMOwogCXJlc3VsdFJl bEluZm8tPnJpX29uQ29uZmxpY3RBcmJpdGVySW5kZXhlcyA9IE5JTDsKIAlyZXN1bHRSZWxJ bmZvLT5yaV9vbkNvbmZsaWN0ID0gTlVMTDsKKwlyZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0 aW9uT2YgPSBOVUxMOwogCXJlc3VsdFJlbEluZm8tPnJpX1JldHVybmluZ1Nsb3QgPSBOVUxM OwogCXJlc3VsdFJlbEluZm8tPnJpX1RyaWdPbGRTbG90ID0gTlVMTDsKIAlyZXN1bHRSZWxJ bmZvLT5yaV9UcmlnTmV3U2xvdCA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVN b2RpZnlUYWJsZS5jCmluZGV4IGVlN2U2NjYxNzEuLjBjNjBmNmRiY2UgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCkBAIC01OCw5ICs1OCwxMiBAQAogI2lu Y2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1 Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgorI2luY2x1ZGUgInV0aWxzL2Fy cmF5LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9k YXR1bS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMv cGVyaW9kLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRp bHMvcmVsLmgiCiAKIApAQCAtMTQxLDYgKzE0NCwxMCBAQCBzdGF0aWMgYm9vbCBFeGVjT25D b25mbGljdFVwZGF0ZShNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsCiAJCQkJCQkJCSBU dXBsZVRhYmxlU2xvdCAqZXhjbHVkZWRTbG90LAogCQkJCQkJCQkgYm9vbCBjYW5TZXRUYWcs CiAJCQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAqKnJldHVybmluZyk7CitzdGF0aWMgdm9pZCBF eGVjRm9yUG9ydGlvbk9mTGVmdG92ZXJzKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwK KwkJCQkJCQkJCSAgRVN0YXRlICplc3RhdGUsCisJCQkJCQkJCQkgIFJlc3VsdFJlbEluZm8g KnJlc3VsdFJlbEluZm8sCisJCQkJCQkJCQkgIEl0ZW1Qb2ludGVyIHR1cGxlaWQpOwogc3Rh dGljIFR1cGxlVGFibGVTbG90ICpFeGVjUHJlcGFyZVR1cGxlUm91dGluZyhNb2RpZnlUYWJs ZVN0YXRlICptdHN0YXRlLAogCQkJCQkJCQkJCQkgICBFU3RhdGUgKmVzdGF0ZSwKIAkJCQkJ CQkJCQkJICAgUGFydGl0aW9uVHVwbGVSb3V0aW5nICpwcm91dGUsCkBAIC0xMjA1LDYgKzEy MTIsMTMxIEBAIEV4ZWNJbnNlcnQoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LAogCXJl dHVybiByZXN1bHQ7CiB9CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCQlFeGVjRm9yUG9ydGlvbk9m TGVmdG92ZXJzCisgKgorICoJCUluc2VydCB0dXBsZXMgZm9yIHRoZSB1bnRvdWNoZWQgdGlt ZXN0YW1wIG9mIGEgcm93IGluIGEgRk9SCisgKgkJUE9SVElPTiBPRiBVUERBVEUvREVMRVRF CisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKi8KK3N0YXRpYyB2b2lkCitFeGVjRm9yUG9ydGlvbk9mTGVm dG92ZXJzKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKKwkJCQkJCSAgRVN0YXRlICpl c3RhdGUsCisJCQkJCQkgIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCisJCQkJCQkg IEl0ZW1Qb2ludGVyIHR1cGxlaWQpCit7CisJTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSA9 IGNvbnRleHQtPm10c3RhdGU7CisJTW9kaWZ5VGFibGUgKm5vZGUgPSAoTW9kaWZ5VGFibGUg KikgbXRzdGF0ZS0+cHMucGxhbjsKKwlGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2Yg PSAoRm9yUG9ydGlvbk9mRXhwciAqKSBub2RlLT5mb3JQb3J0aW9uT2Y7CisJQXR0ck51bWJl cglyYW5nZUF0dG5vOworCURhdHVtCW9sZFJhbmdlOworCURhdHVtCWFsbExlZnRvdmVyczsK KwlEYXR1bQkqbGVmdG92ZXJzOworCWludAkJbmxlZnRvdmVyczsKKwlib29sIGlzTnVsbCA9 IGZhbHNlOworCVR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZTsKKwlGb3JQb3J0aW9uT2ZTdGF0 ZSAqZnBvU3RhdGUgPSByZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2Y7CisJVHVwbGVU YWJsZVNsb3QgKm9sZHR1cGxlU2xvdCA9IGZwb1N0YXRlLT5mcF9FeGlzdGluZzsKKwlUdXBs ZVRhYmxlU2xvdCAqbGVmdG92ZXJTbG90ID0gZnBvU3RhdGUtPmZwX0xlZnRvdmVyOworCVR1 cGxlQ29udmVyc2lvbk1hcCAqbWFwID0gTlVMTDsKKwlIZWFwVHVwbGUgb2xkdHVwbGUgPSBO VUxMOworCisJLyoKKwkgKiBHZXQgdGhlIHJhbmdlIG9mIHRoZSBvbGQgcHJlLVVQREFURS9E RUxFVEUgdHVwbGUsCisJICogc28gd2UgY2FuIGludGVyc2VjdCBpdCB3aXRoIHRoZSBGT1Ig UE9SVElPTiBPRiB0YXJnZXQKKwkgKiBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgImxlZnRv dmVycyIgdG8gaW5zZXJ0LgorCSAqCisJICogV2UgaGF2ZSBhbHJlYWR5IGxvY2tlZCB0aGUg dHVwbGUgaW4gRXhlY1VwZGF0ZS9FeGVjRGVsZXRlCisJICogKFRPRE86IGlmIGl0IHdhcyAq bm90KiBjb25jdXJyZW50bHkgdXBkYXRlZCwgZG9lcyB0YWJsZV90dXBsZV91cGRhdGUgbG9j ayB0aGUgdHVwbGUgaXRzZWxmPworCSAqIEkgZG9uJ3QgZm91bmQgdGhlIGNvZGUgZm9yIHRo YXQgeWV0LCBhbmQgbWF5YmUgaXQgZGVwZW5kcyBvbiB0aGUgQU0/KQorCSAqIGFuZCBpdCBo YXMgcGFzc2VkIEV2YWxQbGFuUXVhbC4KKwkgKiBNYWtlIHN1cmUgd2UncmUgbG9va2luZyBh dCB0aGUgbW9zdCByZWNlbnQgdmVyc2lvbi4KKwkgKiBPdGhlcndpc2UgY29uY3VycmVudCB1 cGRhdGVzIG9mIHRoZSBzYW1lIHR1cGxlIGluIFJFQUQgQ09NTUlUVEVECisJICogY291bGQg aW5zZXJ0IGNvbmZsaWN0aW5nICJsZWZ0b3ZlcnMiLgorCSAqLworCWlmICghdGFibGVfdHVw bGVfZmV0Y2hfcm93X3ZlcnNpb24ocmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjLCB0 dXBsZWlkLCBTbmFwc2hvdEFueSwgb2xkdHVwbGVTbG90KSkKKwkJZWxvZyhFUlJPUiwgImZh aWxlZCB0byBmZXRjaCB0dXBsZSBmb3IgRk9SIFBPUlRJT04gT0YiKTsKKworCS8qCisJICog R2V0IHRoZSBvbGQgcmFuZ2Ugb2YgdGhlIHJlY29yZCBiZWluZyB1cGRhdGVkLgorCSAqIE11 c3QgcmVhZCB3aXRoIHRoZSBhdHRubyBvZiB0aGUgbGVhZiBwYXJ0aXRpb24gYmVpbmcgdXBk YXRlZAorCSAqLworCisJcmFuZ2VBdHRubyA9IGZvclBvcnRpb25PZi0+cmFuZ2VWYXItPnZh cmF0dG5vOworCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9Sb290UmVzdWx0UmVsSW5mbykKKwkJ bWFwID0gRXhlY0dldENoaWxkVG9Sb290TWFwKHJlc3VsdFJlbEluZm8pOworCWlmIChtYXAg IT0gTlVMTCkKKwkJcmFuZ2VBdHRubyA9IG1hcC0+YXR0ck1hcC0+YXR0bnVtc1tyYW5nZUF0 dG5vIC0gMV07CisJb2xkUmFuZ2UgPSBzbG90X2dldGF0dHIob2xkdHVwbGVTbG90LCByYW5n ZUF0dG5vLCAmaXNOdWxsKTsKKworCWlmIChpc051bGwpCisJCWVsb2coRVJST1IsICJmb3Vu ZCBhIE5VTEwgcmFuZ2UgaW4gYSB0ZW1wb3JhbCB0YWJsZSIpOworCisJLyoKKwkgKiBHZXQg dGhlIHJhbmdlJ3MgdHlwZSBjYWNoZSBlbnRyeS4gVGhpcyBpcyB3b3J0aCBjYWNoaW5nIGZv ciB0aGUgd2hvbGUgVVBEQVRFCisJICogYXMgcmFuZ2UgZnVuY3Rpb25zIGRvLgorCSAqLwor CisJdHlwY2FjaGUgPSBmcG9TdGF0ZS0+ZnBfbGVmdG92ZXJzdHlwY2FjaGU7CisJaWYgKHR5 cGNhY2hlID09IE5VTEwpCisJeworCQl0eXBjYWNoZSA9IGxvb2t1cF90eXBlX2NhY2hlKGZv clBvcnRpb25PZi0+cmFuZ2VUeXBlLCAwKTsKKwkJZnBvU3RhdGUtPmZwX2xlZnRvdmVyc3R5 cGNhY2hlID0gdHlwY2FjaGU7CisJfQorCisJLyogR2V0IHRoZSByYW5nZXMgdG8gdGhlIGxl ZnQvcmlnaHQgb2YgdGhlIHRhcmdldGVkIHJhbmdlLiAqLworCisJYWxsTGVmdG92ZXJzID0g T2lkRnVuY3Rpb25DYWxsMkNvbGwoZm9yUG9ydGlvbk9mLT53aXRob3V0UG9ydGlvblByb2Ms CisJCQkJCQkJCQkJSW52YWxpZE9pZCwgb2xkUmFuZ2UsIGZwb1N0YXRlLT5mcF90YXJnZXRS YW5nZSk7CisKKwlkZWNvbnN0cnVjdF9hcnJheShEYXR1bUdldEFycmF5VHlwZVAoYWxsTGVm dG92ZXJzKSwgdHlwY2FjaGUtPnR5cGVfaWQsIHR5cGNhY2hlLT50eXBsZW4sCisJCQkJCSAg dHlwY2FjaGUtPnR5cGJ5dmFsLCB0eXBjYWNoZS0+dHlwYWxpZ24sICZsZWZ0b3ZlcnMsIE5V TEwsICZubGVmdG92ZXJzKTsKKworCWlmIChubGVmdG92ZXJzID4gMCkKKwl7CisJCWJvb2wg c2hvdWxkRnJlZSA9IGZhbHNlOworCQlpbnQgaTsKKworCQkvKgorCQkgKiBNYWtlIGEgY29w eSBvZiB0aGUgcHJlLVVQREFURSByb3cuCisJCSAqIFRoZW4gd2UnbGwgb3ZlcndyaXRlIHRo ZSByYW5nZSBjb2x1bW4gYmVsb3cuCisJCSAqIENvbnZlcnQgb2xkdHVwbGUgdG8gdGhlIGJh c2UgdGFibGUncyBmb3JtYXQgaWYgbmVjZXNzYXJ5LgorCQkgKiBXZSBuZWVkIHRvIGluc2Vy dCBsZWZ0b3ZlcnMgdGhyb3VnaCB0aGUgcm9vdCBwYXJ0aXRpb24KKwkJICogc28gdGhleSBn ZXQgcm91dGVkIGNvcnJlY3RseS4KKwkJICovCisJCWlmIChtYXAgIT0gTlVMTCkKKwkJCWxl ZnRvdmVyU2xvdCA9IGV4ZWN1dGVfYXR0cl9tYXBfc2xvdChtYXAtPmF0dHJNYXAsCisJCQkJ CQkJCQkJCQkgb2xkdHVwbGVTbG90LAorCQkJCQkJCQkJCQkJIGxlZnRvdmVyU2xvdCk7CisJ CWVsc2UKKwkJeworCQkJb2xkdHVwbGUgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlKG9sZHR1 cGxlU2xvdCwgZmFsc2UsICZzaG91bGRGcmVlKTsKKwkJCUV4ZWNGb3JjZVN0b3JlSGVhcFR1 cGxlKG9sZHR1cGxlLCBsZWZ0b3ZlclNsb3QsIGZhbHNlKTsKKwkJfQorCisJCWZvciAoaSA9 IDA7IGkgPCBubGVmdG92ZXJzOyBpKyspCisJCXsKKwkJCS8qIHN0b3JlIHRoZSBuZXcgcmFu Z2UgKi8KKwkJCWxlZnRvdmVyU2xvdC0+dHRzX3ZhbHVlc1tmb3JQb3J0aW9uT2YtPnJhbmdl VmFyLT52YXJhdHRubyAtIDFdID0gbGVmdG92ZXJzW2ldOworCQkJbGVmdG92ZXJTbG90LT50 dHNfaXNudWxsW2ZvclBvcnRpb25PZi0+cmFuZ2VWYXItPnZhcmF0dG5vIC0gMV0gPSBmYWxz ZTsKKwkJCUV4ZWNNYXRlcmlhbGl6ZVNsb3QobGVmdG92ZXJTbG90KTsKKworCQkJLyoKKwkJ CSAqIElmIHRoZXJlIGFyZSBwYXJ0aXRpb25zLCB3ZSBtdXN0IGluc2VydCBpbnRvIHRoZSBy b290IHRhYmxlLAorCQkJICogc28gd2UgZ2V0IHR1cGxlIHJvdXRpbmcuIFdlIGFscmVhZHkg c2V0IHVwIGxlZnRvdmVyU2xvdAorCQkJICogd2l0aCB0aGUgcm9vdCB0dXBsZSBkZXNjcmlw dG9yLgorCQkJICovCisJCQlpZiAocmVzdWx0UmVsSW5mby0+cmlfUm9vdFJlc3VsdFJlbElu Zm8pCisJCQkJcmVzdWx0UmVsSW5mbyA9IHJlc3VsdFJlbEluZm8tPnJpX1Jvb3RSZXN1bHRS ZWxJbmZvOworCQkJLy8gVE9ETzogTmVlZCB0byBzYXZlIGNvbnRleHQtPm10c3RhdGUtPm10 X3RyYW5zaXRpb25fY2FwdHVyZT8gKFNlZSBjb21tZW50IG9uIEV4ZWNJbnNlcnQpCisJCQlF eGVjSW5zZXJ0KGNvbnRleHQsIHJlc3VsdFJlbEluZm8sIGxlZnRvdmVyU2xvdCwgbm9kZS0+ Y2FuU2V0VGFnLCBOVUxMLCBOVUxMKTsKKwkJfQorCisJCWlmIChzaG91bGRGcmVlKQorCQkJ aGVhcF9mcmVldHVwbGUob2xkdHVwbGUpOworCX0KK30KKwogLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJ CUV4ZWNCYXRjaEluc2VydAogICoKQEAgLTEzNTcsNyArMTQ4OSw4IEBAIEV4ZWNEZWxldGVB Y3QoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBSZXN1bHRSZWxJbmZvICpyZXN1bHRS ZWxJbmZvLAogICoKICAqIENsb3Npbmcgc3RlcHMgb2YgdHVwbGUgZGVsZXRpb247IHRoaXMg aW52b2tlcyBBRlRFUiBGT1IgRUFDSCBST1cgdHJpZ2dlcnMsCiAgKiBpbmNsdWRpbmcgdGhl IFVQREFURSB0cmlnZ2VycyBpZiB0aGUgZGVsZXRpb24gaXMgYmVpbmcgZG9uZSBhcyBwYXJ0 IG9mIGEKLSAqIGNyb3NzLXBhcnRpdGlvbiB0dXBsZSBtb3ZlLgorICogY3Jvc3MtcGFydGl0 aW9uIHR1cGxlIG1vdmUuIEl0IGFsc28gaW5zZXJ0cyBsZWZ0b3ZlcnMgZnJvbSBhIEZPUiBQ T1JUSU9OIE9GCisgKiBkZWxldGUuCiAgKi8KIHN0YXRpYyB2b2lkCiBFeGVjRGVsZXRlRXBp bG9ndWUoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBSZXN1bHRSZWxJbmZvICpyZXN1 bHRSZWxJbmZvLApAQCAtMTM5MCw2ICsxNTIzLDExIEBAIEV4ZWNEZWxldGVFcGlsb2d1ZShN b2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbElu Zm8sCiAJCWFyX2RlbGV0ZV90cmlnX3RjcyA9IE5VTEw7CiAJfQogCisJLyogQ29tcHV0ZSBs ZWZ0b3ZlcnMgaW4gRk9SIFBPUlRJT04gT0YgKi8KKwkvLyBUT0RPOiBTa2lwIHRoaXMgZm9y IEZEVyBkZWxldGVzPworCWlmICgoKE1vZGlmeVRhYmxlICopIGNvbnRleHQtPm10c3RhdGUt PnBzLnBsYW4pLT5mb3JQb3J0aW9uT2YpCisJCUV4ZWNGb3JQb3J0aW9uT2ZMZWZ0b3ZlcnMo Y29udGV4dCwgZXN0YXRlLCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkKTsKKwogCS8qIEFGVEVS IFJPVyBERUxFVEUgVHJpZ2dlcnMgKi8KIAlFeGVjQVJEZWxldGVUcmlnZ2Vycyhlc3RhdGUs IHJlc3VsdFJlbEluZm8sIHR1cGxlaWQsIG9sZHR1cGxlLAogCQkJCQkJIGFyX2RlbGV0ZV90 cmlnX3RjcywgY2hhbmdpbmdQYXJ0KTsKQEAgLTE3NzAsNyArMTkwOCwxMSBAQCBFeGVjQ3Jv c3NQYXJ0aXRpb25VcGRhdGUoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LAogCWlmIChy ZXN1bHRSZWxJbmZvID09IG10c3RhdGUtPnJvb3RSZXN1bHRSZWxJbmZvKQogCQlFeGVjUGFy dGl0aW9uQ2hlY2tFbWl0RXJyb3IocmVzdWx0UmVsSW5mbywgc2xvdCwgZXN0YXRlKTsKIAot CS8qIEluaXRpYWxpemUgdHVwbGUgcm91dGluZyBpbmZvIGlmIG5vdCBhbHJlYWR5IGRvbmUu ICovCisJLyoKKwkgKiBJbml0aWFsaXplIHR1cGxlIHJvdXRpbmcgaW5mbyBpZiBub3QgYWxy ZWFkeSBkb25lLgorCSAqIE5vdGUgd2hhdGV2ZXIgd2UgZG8gaGVyZSBtdXN0IGJlIGRvbmUg aW4gRXhlY0luaXRNb2RpZnlUYWJsZQorCSAqIGZvciBGT1IgUE9SVElPTiBPRiBhcyB3ZWxs LgorCSAqLwogCWlmIChtdHN0YXRlLT5tdF9wYXJ0aXRpb25fdHVwbGVfcm91dGluZyA9PSBO VUxMKQogCXsKIAkJUmVsYXRpb24Jcm9vdFJlbCA9IG10c3RhdGUtPnJvb3RSZXN1bHRSZWxJ bmZvLT5yaV9SZWxhdGlvbkRlc2M7CkBAIC0yMTM5LDYgKzIyODEsMTEgQEAgRXhlY1VwZGF0 ZUVwaWxvZ3VlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgVXBkYXRlQ29udGV4dCAq dXBkYXRlQ3h0LAogCQkJCQkJCQkJCQkgICBOVUxMLCBOSUwsCiAJCQkJCQkJCQkJCSAgICh1 cGRhdGVDeHQtPnVwZGF0ZUluZGV4ZXMgPT0gVFVfU3VtbWFyaXppbmcpKTsKIAorCS8qIENv bXB1dGUgbGVmdG92ZXJzIGluIEZPUiBQT1JUSU9OIE9GICovCisJLy8gVE9ETzogU2tpcCB0 aGlzIGZvciBGRFcgdXBkYXRlcz8KKwlpZiAoKChNb2RpZnlUYWJsZSAqKSBjb250ZXh0LT5t dHN0YXRlLT5wcy5wbGFuKS0+Zm9yUG9ydGlvbk9mKQorCQlFeGVjRm9yUG9ydGlvbk9mTGVm dG92ZXJzKGNvbnRleHQsIGNvbnRleHQtPmVzdGF0ZSwgcmVzdWx0UmVsSW5mbywgdHVwbGVp ZCk7CisKIAkvKiBBRlRFUiBST1cgVVBEQVRFIFRyaWdnZXJzICovCiAJRXhlY0FSVXBkYXRl VHJpZ2dlcnMoY29udGV4dC0+ZXN0YXRlLCByZXN1bHRSZWxJbmZvLAogCQkJCQkJIE5VTEws IE5VTEwsCkBAIC0zNjMwLDYgKzM3NzcsNyBAQCBFeGVjTW9kaWZ5VGFibGUoUGxhblN0YXRl ICpwc3RhdGUpCiAJCSAqIFJlc2V0IHBlci10dXBsZSBtZW1vcnkgY29udGV4dCB1c2VkIGZv ciBwcm9jZXNzaW5nIG9uIGNvbmZsaWN0IGFuZAogCQkgKiByZXR1cm5pbmcgY2xhdXNlcywg dG8gZnJlZSBhbnkgZXhwcmVzc2lvbiBldmFsdWF0aW9uIHN0b3JhZ2UKIAkJICogYWxsb2Nh dGVkIGluIHRoZSBwcmV2aW91cyBjeWNsZS4KKwkJICogVE9ETzogSXQgc291bmRzIGxpa2Ug Rk9SIFBPUlRJT04gT0YgbWlnaHQgbmVlZCB0byBkbyBzb21ldGhpbmcgaGVyZSB0b28/CiAJ CSAqLwogCQlpZiAocHN0YXRlLT5wc19FeHByQ29udGV4dCkKIAkJCVJlc2V0RXhwckNvbnRl eHQocHN0YXRlLT5wc19FeHByQ29udGV4dCk7CkBAIC00MzAzLDYgKzQ0NTEsMTE3IEBAIEV4 ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBp bnQgZWZsYWdzKQogCQl9CiAJfQogCisJLyoKKwkgKiBJZiBuZWVkZWQsIGluaXRpYWxpemUg dGhlIHRhcmdldCByYW5nZSBmb3IgRk9SIFBPUlRJT04gT0YuCisJICovCisJaWYgKG5vZGUt PmZvclBvcnRpb25PZikKKwl7CisJCVR1cGxlRGVzYyB0dXBEZXNjOworCQlGb3JQb3J0aW9u T2ZFeHByICpmb3JQb3J0aW9uT2Y7CisJCURhdHVtCXRhcmdldFJhbmdlOworCQlib29sCWlz TnVsbDsKKwkJRXhwckNvbnRleHQgKmVjb250ZXh0OworCQlFeHByU3RhdGUgKmV4cHJTdGF0 ZTsKKwkJRm9yUG9ydGlvbk9mU3RhdGUgKmZwb1N0YXRlOworCisJCXJlc3VsdFJlbEluZm8g PSBtdHN0YXRlLT5yZXN1bHRSZWxJbmZvOworCQlpZiAocmVzdWx0UmVsSW5mby0+cmlfUm9v dFJlc3VsdFJlbEluZm8pCisJCQlyZXN1bHRSZWxJbmZvID0gcmVzdWx0UmVsSW5mby0+cmlf Um9vdFJlc3VsdFJlbEluZm87CisKKwkJdHVwRGVzYyA9IHJlc3VsdFJlbEluZm8tPnJpX1Jl bGF0aW9uRGVzYy0+cmRfYXR0OworCQlmb3JQb3J0aW9uT2YgPSAoRm9yUG9ydGlvbk9mRXhw ciAqKSBub2RlLT5mb3JQb3J0aW9uT2Y7CisKKwkJLyogRXZhbCB0aGUgRk9SIFBPUlRJT04g T0YgdGFyZ2V0ICovCisJCWlmIChtdHN0YXRlLT5wcy5wc19FeHByQ29udGV4dCA9PSBOVUxM KQorCQkJRXhlY0Fzc2lnbkV4cHJDb250ZXh0KGVzdGF0ZSwgJm10c3RhdGUtPnBzKTsKKwkJ ZWNvbnRleHQgPSBtdHN0YXRlLT5wcy5wc19FeHByQ29udGV4dDsKKworCQlleHByU3RhdGUg PSBFeGVjUHJlcGFyZUV4cHIoKEV4cHIgKikgZm9yUG9ydGlvbk9mLT50YXJnZXRSYW5nZSwg ZXN0YXRlKTsKKwkJdGFyZ2V0UmFuZ2UgPSBFeGVjRXZhbEV4cHIoZXhwclN0YXRlLCBlY29u dGV4dCwgJmlzTnVsbCk7CisJCWlmIChpc051bGwpCisJCQllbG9nKEVSUk9SLCAiR290IGEg TlVMTCBGT1IgUE9SVElPTiBPRiB0YXJnZXQgcmFuZ2UiKTsKKworCQkvKiBDcmVhdGUgc3Rh dGUgZm9yIEZPUiBQT1JUSU9OIE9GIG9wZXJhdGlvbiAqLworCisJCWZwb1N0YXRlID0gbWFr ZU5vZGUoRm9yUG9ydGlvbk9mU3RhdGUpOworCQlmcG9TdGF0ZS0+ZnBfcmFuZ2VOYW1lID0g Zm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lOworCQlmcG9TdGF0ZS0+ZnBfcmFuZ2VUeXBlID0g Zm9yUG9ydGlvbk9mLT5yYW5nZVR5cGU7CisJCWZwb1N0YXRlLT5mcF9yYW5nZUF0dG5vID0g Zm9yUG9ydGlvbk9mLT5yYW5nZVZhci0+dmFyYXR0bm87CisJCWZwb1N0YXRlLT5mcF90YXJn ZXRSYW5nZSA9IHRhcmdldFJhbmdlOworCisJCS8qIEluaXRpYWxpemUgc2xvdCBmb3IgdGhl IGV4aXN0aW5nIHR1cGxlICovCisKKwkJZnBvU3RhdGUtPmZwX0V4aXN0aW5nID0KKwkJCXRh YmxlX3Nsb3RfY3JlYXRlKHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYywKKwkJCQkJ CQkgICZtdHN0YXRlLT5wcy5zdGF0ZS0+ZXNfdHVwbGVUYWJsZSk7CisKKwkJLyogQ3JlYXRl IHRoZSB0dXBsZSBzbG90IGZvciBJTlNFUlRpbmcgdGhlIGxlZnRvdmVycyAqLworCisJCWZw b1N0YXRlLT5mcF9MZWZ0b3ZlciA9CisJCQlFeGVjSW5pdEV4dHJhVHVwbGVTbG90KG10c3Rh dGUtPnBzLnN0YXRlLCB0dXBEZXNjLCAmVFRTT3BzVmlydHVhbCk7CisKKwkJLyoKKwkJICog V2UgbXVzdCBhdHRhY2ggdGhlIEZvclBvcnRpb25PZlN0YXRlIHRvIGFsbCByZXN1bHQgcmVs cywKKwkJICogaW4gY2FzZSBvZiBhIGNyb3NzLXBhcnRpdGlvbiB1cGRhdGUgb3IgdHJpZ2dl cnMgZmlyaW5nCisJCSAqIG9uIHBhcnRpdGlvbnMuCisJCSAqLworCQlmb3IgKGkgPSAwOyBp IDwgbnJlbHM7IGkrKykKKwkJeworCQkJRm9yUG9ydGlvbk9mU3RhdGUJKmxlYWZTdGF0ZTsK KwkJCXJlc3VsdFJlbEluZm8gPSAmbXRzdGF0ZS0+cmVzdWx0UmVsSW5mb1tpXTsKKworCQkJ bGVhZlN0YXRlID0gbWFrZU5vZGUoRm9yUG9ydGlvbk9mU3RhdGUpOworCQkJbGVhZlN0YXRl LT5mcF9yYW5nZU5hbWUgPSBmcG9TdGF0ZS0+ZnBfcmFuZ2VOYW1lOworCQkJbGVhZlN0YXRl LT5mcF9yYW5nZVR5cGUgPSBmcG9TdGF0ZS0+ZnBfcmFuZ2VUeXBlOworCQkJbGVhZlN0YXRl LT5mcF9yYW5nZUF0dG5vID0gZnBvU3RhdGUtPmZwX3JhbmdlQXR0bm87CisJCQlsZWFmU3Rh dGUtPmZwX3RhcmdldFJhbmdlID0gZnBvU3RhdGUtPmZwX3RhcmdldFJhbmdlOworCQkJbGVh ZlN0YXRlLT5mcF9MZWZ0b3ZlciA9IGZwb1N0YXRlLT5mcF9MZWZ0b3ZlcjsKKwkJCS8qIEVh Y2ggcGFydGl0aW9uIG5lZWRzIGEgc2xvdCBtYXRjaGluZyBpdHMgdHVwbGUgZGVzY3JpcHRv ciAqLworCQkJbGVhZlN0YXRlLT5mcF9FeGlzdGluZyA9CisJCQkJdGFibGVfc2xvdF9jcmVh dGUocmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjLAorCQkJCQkJCQkgICZtdHN0YXRl LT5wcy5zdGF0ZS0+ZXNfdHVwbGVUYWJsZSk7CisKKwkJCXJlc3VsdFJlbEluZm8tPnJpX2Zv clBvcnRpb25PZiA9IGxlYWZTdGF0ZTsKKwkJfQorCisJCS8qIE1ha2Ugc3VyZSB0aGUgcm9v dCByZWxhdGlvbiBoYXMgdGhlIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSB0b28uICovCisJCWlm IChub2RlLT5yb290UmVsYXRpb24gPiAwKQorCQkJbXRzdGF0ZS0+cm9vdFJlc3VsdFJlbElu Zm8tPnJpX2ZvclBvcnRpb25PZiA9IGZwb1N0YXRlOworCisJCWlmIChyZWwtPnJkX3JlbC0+ cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFICYmCisJCQkJbXRzdGF0ZS0+ bXRfcGFydGl0aW9uX3R1cGxlX3JvdXRpbmcgPT0gTlVMTCkKKwkJeworCQkJLyoKKwkJCSAq IFdlIHdpbGwgbmVlZCB0dXBsZSByb3V0aW5nIHRvIGluc2VydCBsZWZ0b3ZlcnMuCisJCQkg KiBTaW5jZSB3ZSBhcmUgaW5pdGlhbGl6aW5nIHRoaW5ncyBiZWZvcmUgRXhlY0Nyb3NzUGFy dGl0aW9uVXBkYXRlIHJ1bnMsCisJCQkgKiB3ZSBtdXN0IGRvIGV2ZXJ5dGhpbmcgaXQgbmVl ZHMgYXMgd2VsbC4KKwkJCSAqLworCQkJaWYgKG10c3RhdGUtPm10X3BhcnRpdGlvbl90dXBs ZV9yb3V0aW5nID09IE5VTEwpCisJCQl7CisJCQkJUmVsYXRpb24Jcm9vdFJlbCA9IG10c3Rh dGUtPnJvb3RSZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2M7CisJCQkJTWVtb3J5Q29u dGV4dCBvbGRjeHQ7CisKKwkJCQkvKiBUaGluZ3MgYnVpbHQgaGVyZSBoYXZlIHRvIGxhc3Qg Zm9yIHRoZSBxdWVyeSBkdXJhdGlvbi4gKi8KKwkJCQlvbGRjeHQgPSBNZW1vcnlDb250ZXh0 U3dpdGNoVG8oZXN0YXRlLT5lc19xdWVyeV9jeHQpOworCisJCQkJbXRzdGF0ZS0+bXRfcGFy dGl0aW9uX3R1cGxlX3JvdXRpbmcgPQorCQkJCQlFeGVjU2V0dXBQYXJ0aXRpb25UdXBsZVJv dXRpbmcoZXN0YXRlLCByb290UmVsKTsKKworCQkJCS8qCisJCQkJICogQmVmb3JlIGEgcGFy dGl0aW9uJ3MgdHVwbGUgY2FuIGJlIHJlLXJvdXRlZCwgaXQgbXVzdCBmaXJzdCBiZQorCQkJ CSAqIGNvbnZlcnRlZCB0byB0aGUgcm9vdCdzIGZvcm1hdCwgc28gd2UnbGwgbmVlZCBhIHNs b3QgZm9yIHN0b3JpbmcKKwkJCQkgKiBzdWNoIHR1cGxlcy4KKwkJCQkgKi8KKwkJCQlBc3Nl cnQobXRzdGF0ZS0+bXRfcm9vdF90dXBsZV9zbG90ID09IE5VTEwpOworCQkJCW10c3RhdGUt Pm10X3Jvb3RfdHVwbGVfc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJvb3RSZWwsIE5VTEwp OworCisJCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CisJCQl9CisJCX0KKwor CQkvKiBEb24ndCBmcmVlIHRoZSBFeHByQ29udGV4dCBoZXJlIGJlY2F1c2UgdGhlIHJlc3Vs dCBtdXN0IGxhc3QgZm9yIHRoZSB3aG9sZSBxdWVyeSAqLworCX0KKwogCS8qCiAJICogSWYg d2UgaGF2ZSBhbnkgc2Vjb25kYXJ5IHJlbGF0aW9ucyBpbiBhbiBVUERBVEUgb3IgREVMRVRF LCB0aGV5IG5lZWQgdG8KIAkgKiBiZSB0cmVhdGVkIGxpa2Ugbm9uLWxvY2tlZCByZWxhdGlv bnMgaW4gU0VMRUNUIEZPUiBVUERBVEUsIGkuZS4sIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3Mu YwppbmRleCBjMDNmNGYyM2UyLi42MmNjYmY5ZDNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9ub2Rlcy9ub2RlRnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3Mu YwpAQCAtMjQ0Miw2ICsyNDQyLDE0IEBAIGV4cHJlc3Npb25fdHJlZV93YWxrZXJfaW1wbChO b2RlICpub2RlLAogCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNl IFRfRm9yUG9ydGlvbk9mRXhwcjoKKwkJCXsKKwkJCQlGb3JQb3J0aW9uT2ZFeHByICpmb3JQ b3J0aW9uT2YgPSAoRm9yUG9ydGlvbk9mRXhwciAqKSBub2RlOworCisJCQkJaWYgKFdBTEso Zm9yUG9ydGlvbk9mLT50YXJnZXRSYW5nZSkpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQor CQkJYnJlYWs7CiAJCWNhc2UgVF9QYXJ0aXRpb25QcnVuZVN0ZXBPcDoKIAkJCXsKIAkJCQlQ YXJ0aXRpb25QcnVuZVN0ZXBPcCAqb3BzdGVwID0gKFBhcnRpdGlvblBydW5lU3RlcE9wICop IG5vZGU7CkBAIC0yNTgyLDYgKzI1OTAsOCBAQCBxdWVyeV90cmVlX3dhbGtlcl9pbXBsKFF1 ZXJ5ICpxdWVyeSwKIAkJcmV0dXJuIHRydWU7CiAJaWYgKFdBTEsocXVlcnktPm1lcmdlQWN0 aW9uTGlzdCkpCiAJCXJldHVybiB0cnVlOworCWlmIChXQUxLKHF1ZXJ5LT5mb3JQb3J0aW9u T2YpKQorCQlyZXR1cm4gdHJ1ZTsKIAlpZiAoV0FMSyhxdWVyeS0+cmV0dXJuaW5nTGlzdCkp CiAJCXJldHVybiB0cnVlOwogCWlmIChXQUxLKHF1ZXJ5LT5qb2ludHJlZSkpCkBAIC0zNDI1 LDYgKzM0MzUsMTkgQEAgZXhwcmVzc2lvbl90cmVlX211dGF0b3JfaW1wbChOb2RlICpub2Rl LAogCQkJCXJldHVybiAoTm9kZSAqKSBuZXdub2RlOwogCQkJfQogCQkJYnJlYWs7CisJCWNh c2UgVF9Gb3JQb3J0aW9uT2ZFeHByOgorCQkJeworCQkJCUZvclBvcnRpb25PZkV4cHIgKmZw byA9IChGb3JQb3J0aW9uT2ZFeHByICopIG5vZGU7CisJCQkJRm9yUG9ydGlvbk9mRXhwciAq bmV3bm9kZTsKKworCQkJCUZMQVRDT1BZKG5ld25vZGUsIGZwbywgRm9yUG9ydGlvbk9mRXhw cik7CisJCQkJTVVUQVRFKG5ld25vZGUtPnJhbmdlVmFyLCBmcG8tPnJhbmdlVmFyLCBWYXIg Kik7CisJCQkJTVVUQVRFKG5ld25vZGUtPnRhcmdldFJhbmdlLCBmcG8tPnRhcmdldFJhbmdl LCBOb2RlICopOworCQkJCU1VVEFURShuZXdub2RlLT5yYW5nZVNldCwgZnBvLT5yYW5nZVNl dCwgTGlzdCAqKTsKKworCQkJCXJldHVybiAoTm9kZSAqKSBuZXdub2RlOworCQkJfQorCQkJ YnJlYWs7CiAJCWNhc2UgVF9QYXJ0aXRpb25QcnVuZVN0ZXBPcDoKIAkJCXsKIAkJCQlQYXJ0 aXRpb25QcnVuZVN0ZXBPcCAqb3BzdGVwID0gKFBhcnRpdGlvblBydW5lU3RlcE9wICopIG5v ZGU7CkBAIC0zNjAzLDYgKzM2MjYsNyBAQCBxdWVyeV90cmVlX211dGF0b3JfaW1wbChRdWVy eSAqcXVlcnksCiAJTVVUQVRFKHF1ZXJ5LT53aXRoQ2hlY2tPcHRpb25zLCBxdWVyeS0+d2l0 aENoZWNrT3B0aW9ucywgTGlzdCAqKTsKIAlNVVRBVEUocXVlcnktPm9uQ29uZmxpY3QsIHF1 ZXJ5LT5vbkNvbmZsaWN0LCBPbkNvbmZsaWN0RXhwciAqKTsKIAlNVVRBVEUocXVlcnktPm1l cmdlQWN0aW9uTGlzdCwgcXVlcnktPm1lcmdlQWN0aW9uTGlzdCwgTGlzdCAqKTsKKwlNVVRB VEUocXVlcnktPmZvclBvcnRpb25PZiwgcXVlcnktPmZvclBvcnRpb25PZiwgRm9yUG9ydGlv bk9mRXhwciAqKTsKIAlNVVRBVEUocXVlcnktPnJldHVybmluZ0xpc3QsIHF1ZXJ5LT5yZXR1 cm5pbmdMaXN0LCBMaXN0ICopOwogCU1VVEFURShxdWVyeS0+am9pbnRyZWUsIHF1ZXJ5LT5q b2ludHJlZSwgRnJvbUV4cHIgKik7CiAJTVVUQVRFKHF1ZXJ5LT5zZXRPcGVyYXRpb25zLCBx dWVyeS0+c2V0T3BlcmF0aW9ucywgTm9kZSAqKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL2NyZWF0ZXBsYW4uYwppbmRleCAzNGNhNmQ0YWMyLi45NTRlYjRkYTgzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKKysrIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCkBAIC0zMTEsNyArMzExLDgg QEAgc3RhdGljIE1vZGlmeVRhYmxlICptYWtlX21vZGlmeXRhYmxlKFBsYW5uZXJJbmZvICpy b290LCBQbGFuICpzdWJwbGFuLAogCQkJCQkJCQkJIExpc3QgKnVwZGF0ZUNvbG5vc0xpc3Rz LAogCQkJCQkJCQkJIExpc3QgKndpdGhDaGVja09wdGlvbkxpc3RzLCBMaXN0ICpyZXR1cm5p bmdMaXN0cywKIAkJCQkJCQkJCSBMaXN0ICpyb3dNYXJrcywgT25Db25mbGljdEV4cHIgKm9u Y29uZmxpY3QsCi0JCQkJCQkJCQkgTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywgaW50IGVwcVBh cmFtKTsKKwkJCQkJCQkJCSBMaXN0ICptZXJnZUFjdGlvbkxpc3RzLCBGb3JQb3J0aW9uT2ZF eHByICpmb3JQb3J0aW9uT2YsCisJCQkJCQkJCQkgaW50IGVwcVBhcmFtKTsKIHN0YXRpYyBH YXRoZXJNZXJnZSAqY3JlYXRlX2dhdGhlcl9tZXJnZV9wbGFuKFBsYW5uZXJJbmZvICpyb290 LAogCQkJCQkJCQkJCQkgR2F0aGVyTWVyZ2VQYXRoICpiZXN0X3BhdGgpOwogCkBAIC0yODM1 LDYgKzI4MzYsNyBAQCBjcmVhdGVfbW9kaWZ5dGFibGVfcGxhbihQbGFubmVySW5mbyAqcm9v dCwgTW9kaWZ5VGFibGVQYXRoICpiZXN0X3BhdGgpCiAJCQkJCQkJYmVzdF9wYXRoLT5yb3dN YXJrcywKIAkJCQkJCQliZXN0X3BhdGgtPm9uY29uZmxpY3QsCiAJCQkJCQkJYmVzdF9wYXRo LT5tZXJnZUFjdGlvbkxpc3RzLAorCQkJCQkJCWJlc3RfcGF0aC0+Zm9yUG9ydGlvbk9mLAog CQkJCQkJCWJlc3RfcGF0aC0+ZXBxUGFyYW0pOwogCiAJY29weV9nZW5lcmljX3BhdGhfaW5m bygmcGxhbi0+cGxhbiwgJmJlc3RfcGF0aC0+cGF0aCk7CkBAIC03MDA1LDcgKzcwMDcsOCBA QCBtYWtlX21vZGlmeXRhYmxlKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpzdWJwbGFuLAog CQkJCSBMaXN0ICp1cGRhdGVDb2xub3NMaXN0cywKIAkJCQkgTGlzdCAqd2l0aENoZWNrT3B0 aW9uTGlzdHMsIExpc3QgKnJldHVybmluZ0xpc3RzLAogCQkJCSBMaXN0ICpyb3dNYXJrcywg T25Db25mbGljdEV4cHIgKm9uY29uZmxpY3QsCi0JCQkJIExpc3QgKm1lcmdlQWN0aW9uTGlz dHMsIGludCBlcHFQYXJhbSkKKwkJCQkgTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywgRm9yUG9y dGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mLAorCQkJCSBpbnQgZXBxUGFyYW0pCiB7CiAJTW9k aWZ5VGFibGUgKm5vZGUgPSBtYWtlTm9kZShNb2RpZnlUYWJsZSk7CiAJTGlzdAkgICAqZmR3 X3ByaXZhdGVfbGlzdDsKQEAgLTcwNzEsNiArNzA3NCw3IEBAIG1ha2VfbW9kaWZ5dGFibGUo UGxhbm5lckluZm8gKnJvb3QsIFBsYW4gKnN1YnBsYW4sCiAJCW5vZGUtPmV4Y2xSZWxUbGlz dCA9IG9uY29uZmxpY3QtPmV4Y2xSZWxUbGlzdDsKIAl9CiAJbm9kZS0+dXBkYXRlQ29sbm9z TGlzdHMgPSB1cGRhdGVDb2xub3NMaXN0czsKKwlub2RlLT5mb3JQb3J0aW9uT2YgPSAoTm9k ZSAqKSBmb3JQb3J0aW9uT2Y7CiAJbm9kZS0+d2l0aENoZWNrT3B0aW9uTGlzdHMgPSB3aXRo Q2hlY2tPcHRpb25MaXN0czsKIAlub2RlLT5yZXR1cm5pbmdMaXN0cyA9IHJldHVybmluZ0xp c3RzOwogCW5vZGUtPnJvd01hcmtzID0gcm93TWFya3M7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9wbGFubmVyLmMKaW5kZXggNmY0NWVmZGUyMS4uYzRiNzAzYTVhMyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtMTk2Myw2ICsxOTYzLDcgQEAgZ3Jv dXBpbmdfcGxhbm5lcihQbGFubmVySW5mbyAqcm9vdCwgZG91YmxlIHR1cGxlX2ZyYWN0aW9u KQogCQkJCQkJCQkJCXJvd01hcmtzLAogCQkJCQkJCQkJCXBhcnNlLT5vbkNvbmZsaWN0LAog CQkJCQkJCQkJCW1lcmdlQWN0aW9uTGlzdHMsCisJCQkJCQkJCQkJcGFyc2UtPmZvclBvcnRp b25PZiwKIAkJCQkJCQkJCQlhc3NpZ25fc3BlY2lhbF9leGVjX3BhcmFtKHJvb3QpKTsKIAkJ fQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5j IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYwppbmRleCAwYjFkMTdi OWQzLi4wZTA0NDkwNzk2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRp bC9wYXRobm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2Rl LmMKQEAgLTM2ODYsNyArMzY4Niw4IEBAIGNyZWF0ZV9tb2RpZnl0YWJsZV9wYXRoKFBsYW5u ZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJCQkJCQlMaXN0ICp1cGRhdGVDb2xu b3NMaXN0cywKIAkJCQkJCUxpc3QgKndpdGhDaGVja09wdGlvbkxpc3RzLCBMaXN0ICpyZXR1 cm5pbmdMaXN0cywKIAkJCQkJCUxpc3QgKnJvd01hcmtzLCBPbkNvbmZsaWN0RXhwciAqb25j b25mbGljdCwKLQkJCQkJCUxpc3QgKm1lcmdlQWN0aW9uTGlzdHMsIGludCBlcHFQYXJhbSkK KwkJCQkJCUxpc3QgKm1lcmdlQWN0aW9uTGlzdHMsIEZvclBvcnRpb25PZkV4cHIgKmZvclBv cnRpb25PZiwKKwkJCQkJCWludCBlcHFQYXJhbSkKIHsKIAlNb2RpZnlUYWJsZVBhdGggKnBh dGhub2RlID0gbWFrZU5vZGUoTW9kaWZ5VGFibGVQYXRoKTsKIApAQCAtMzc1Miw2ICszNzUz LDcgQEAgY3JlYXRlX21vZGlmeXRhYmxlX3BhdGgoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKnJlbCwKIAlwYXRobm9kZS0+cmV0dXJuaW5nTGlzdHMgPSByZXR1cm5pbmdMaXN0 czsKIAlwYXRobm9kZS0+cm93TWFya3MgPSByb3dNYXJrczsKIAlwYXRobm9kZS0+b25jb25m bGljdCA9IG9uY29uZmxpY3Q7CisJcGF0aG5vZGUtPmZvclBvcnRpb25PZiA9IGZvclBvcnRp b25PZjsKIAlwYXRobm9kZS0+ZXBxUGFyYW0gPSBlcHFQYXJhbTsKIAlwYXRobm9kZS0+bWVy Z2VBY3Rpb25MaXN0cyA9IG1lcmdlQWN0aW9uTGlzdHM7CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3BhcnNlci9hbmFseXplLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5j CmluZGV4IDdhMWRmYjYzNjQuLjVmZWExNzRhZDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3BhcnNlci9hbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwpA QCAtMjQsNyArMjQsOSBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUg ImFjY2Vzcy9zdHJhdG51bS5oIgogI2luY2x1ZGUgImFjY2Vzcy9zeXNhdHRyLmgiCisjaW5j bHVkZSAiY2F0YWxvZy9wZ19hbS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJl bS5oIgpAQCAtNDcsMTEgKzQ5LDEzIEBACiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0 aW9uLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3RhcmdldC5oIgogI2luY2x1ZGUgInBh cnNlci9wYXJzZV90eXBlLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlci5oIgogI2luY2x1 ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVNYW5p cC5oIgogI2luY2x1ZGUgInV0aWxzL2JhY2tlbmRfc3RhdHVzLmgiCiAjaW5jbHVkZSAidXRp bHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKKyNpbmNsdWRlICJ1dGls cy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGls cy9zeXNjYWNoZS5oIgogCkBAIC02MCwxMCArNjQsMTYgQEAKIHBvc3RfcGFyc2VfYW5hbHl6 ZV9ob29rX3R5cGUgcG9zdF9wYXJzZV9hbmFseXplX2hvb2sgPSBOVUxMOwogCiBzdGF0aWMg UXVlcnkgKnRyYW5zZm9ybU9wdGlvbmFsU2VsZWN0SW50byhQYXJzZVN0YXRlICpwc3RhdGUs IE5vZGUgKnBhcnNlVHJlZSk7CitzdGF0aWMgTm9kZSAqYWRkRm9yUG9ydGlvbk9mV2hlcmVD b25kaXRpb25zKFF1ZXJ5ICpxcnksIEZvclBvcnRpb25PZkNsYXVzZSAqZm9yUG9ydGlvbk9m LAorCQkJCQkJCQkJCQlOb2RlICp3aGVyZUNsYXVzZSk7CiBzdGF0aWMgUXVlcnkgKnRyYW5z Zm9ybURlbGV0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBEZWxldGVTdG10ICpzdG10KTsK IHN0YXRpYyBRdWVyeSAqdHJhbnNmb3JtSW5zZXJ0U3RtdChQYXJzZVN0YXRlICpwc3RhdGUs IEluc2VydFN0bXQgKnN0bXQpOwogc3RhdGljIE9uQ29uZmxpY3RFeHByICp0cmFuc2Zvcm1P bkNvbmZsaWN0Q2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJCQkJCSBPbkNv bmZsaWN0Q2xhdXNlICpvbkNvbmZsaWN0Q2xhdXNlKTsKK3N0YXRpYyBGb3JQb3J0aW9uT2ZF eHByICp0cmFuc2Zvcm1Gb3JQb3J0aW9uT2ZDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLAor CQkJCQkJCQkJCQkJCSBpbnQgcnRpbmRleCwKKwkJCQkJCQkJCQkJCQkgRm9yUG9ydGlvbk9m Q2xhdXNlICpmb3JQb3J0aW9uT2ZDbGF1c2UsCisJCQkJCQkJCQkJCQkJIGJvb2wgaXNVcGRh dGUpOwogc3RhdGljIGludAljb3VudF9yb3dleHByX2NvbHVtbnMoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBOb2RlICpleHByKTsKIHN0YXRpYyBRdWVyeSAqdHJhbnNmb3JtU2VsZWN0U3RtdChQ YXJzZVN0YXRlICpwc3RhdGUsIFNlbGVjdFN0bXQgKnN0bXQpOwogc3RhdGljIFF1ZXJ5ICp0 cmFuc2Zvcm1WYWx1ZXNDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTZWxlY3RTdG10ICpz dG10KTsKQEAgLTQ3OSw2ICs0ODksMjAgQEAgc3RtdF9yZXF1aXJlc19wYXJzZV9hbmFseXNp cyhSYXdTdG10ICpwYXJzZVRyZWUpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIE5v ZGUgKgorYWRkRm9yUG9ydGlvbk9mV2hlcmVDb25kaXRpb25zKFF1ZXJ5ICpxcnksIEZvclBv cnRpb25PZkNsYXVzZSAqZm9yUG9ydGlvbk9mLCBOb2RlICp3aGVyZUNsYXVzZSkKK3sKKwlp ZiAoZm9yUG9ydGlvbk9mKQorCXsKKwkJaWYgKHdoZXJlQ2xhdXNlKQorCQkJcmV0dXJuIChO b2RlICopIG1ha2VCb29sRXhwcihBTkRfRVhQUiwgbGlzdF9tYWtlMihxcnktPmZvclBvcnRp b25PZi0+b3ZlcmxhcHNFeHByLCB3aGVyZUNsYXVzZSksIC0xKTsKKwkJZWxzZQorCQkJcmV0 dXJuIHFyeS0+Zm9yUG9ydGlvbk9mLT5vdmVybGFwc0V4cHI7CisJfQorCWVsc2UKKwkJcmV0 dXJuIHdoZXJlQ2xhdXNlOworfQorCiAvKgogICogYW5hbHl6ZV9yZXF1aXJlc19zbmFwc2hv dAogICoJCVJldHVybnMgdHJ1ZSBpZiBhIHNuYXBzaG90IG11c3QgYmUgc2V0IGJlZm9yZSBk b2luZyBwYXJzZSBhbmFseXNpcwpAQCAtNTEyLDYgKzUzNiw3IEBAIHRyYW5zZm9ybURlbGV0 ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBEZWxldGVTdG10ICpzdG10KQogewogCVF1ZXJ5 CSAgICpxcnkgPSBtYWtlTm9kZShRdWVyeSk7CiAJUGFyc2VOYW1lc3BhY2VJdGVtICpuc2l0 ZW07CisJTm9kZQkgICAqd2hlcmVDbGF1c2U7CiAJTm9kZQkgICAqcXVhbDsKIAogCXFyeS0+ Y29tbWFuZFR5cGUgPSBDTURfREVMRVRFOwpAQCAtNTUwLDcgKzU3NSwxMSBAQCB0cmFuc2Zv cm1EZWxldGVTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgRGVsZXRlU3RtdCAqc3RtdCkKIAlu c2l0ZW0tPnBfbGF0ZXJhbF9vbmx5ID0gZmFsc2U7CiAJbnNpdGVtLT5wX2xhdGVyYWxfb2sg PSB0cnVlOwogCi0JcXVhbCA9IHRyYW5zZm9ybVdoZXJlQ2xhdXNlKHBzdGF0ZSwgc3RtdC0+ d2hlcmVDbGF1c2UsCisJaWYgKHN0bXQtPmZvclBvcnRpb25PZikKKwkJcXJ5LT5mb3JQb3J0 aW9uT2YgPSB0cmFuc2Zvcm1Gb3JQb3J0aW9uT2ZDbGF1c2UocHN0YXRlLCBxcnktPnJlc3Vs dFJlbGF0aW9uLCBzdG10LT5mb3JQb3J0aW9uT2YsIGZhbHNlKTsKKworCXdoZXJlQ2xhdXNl ID0gYWRkRm9yUG9ydGlvbk9mV2hlcmVDb25kaXRpb25zKHFyeSwgc3RtdC0+Zm9yUG9ydGlv bk9mLCBzdG10LT53aGVyZUNsYXVzZSk7CisJcXVhbCA9IHRyYW5zZm9ybVdoZXJlQ2xhdXNl KHBzdGF0ZSwgd2hlcmVDbGF1c2UsCiAJCQkJCQkJCUVYUFJfS0lORF9XSEVSRSwgIldIRVJF Iik7CiAKIAlxcnktPnJldHVybmluZ0xpc3QgPSB0cmFuc2Zvcm1SZXR1cm5pbmdMaXN0KHBz dGF0ZSwgc3RtdC0+cmV0dXJuaW5nTGlzdCk7CkBAIC0xMTczLDcgKzEyMDIsNyBAQCB0cmFu c2Zvcm1PbkNvbmZsaWN0Q2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJICogTm93IHRy YW5zZm9ybSB0aGUgVVBEQVRFIHN1YmV4cHJlc3Npb25zLgogCQkgKi8KIAkJb25Db25mbGlj dFNldCA9Ci0JCQl0cmFuc2Zvcm1VcGRhdGVUYXJnZXRMaXN0KHBzdGF0ZSwgb25Db25mbGlj dENsYXVzZS0+dGFyZ2V0TGlzdCk7CisJCQl0cmFuc2Zvcm1VcGRhdGVUYXJnZXRMaXN0KHBz dGF0ZSwgb25Db25mbGljdENsYXVzZS0+dGFyZ2V0TGlzdCwgTlVMTCk7CiAKIAkJb25Db25m bGljdFdoZXJlID0gdHJhbnNmb3JtV2hlcmVDbGF1c2UocHN0YXRlLAogCQkJCQkJCQkJCQkg ICBvbkNvbmZsaWN0Q2xhdXNlLT53aGVyZUNsYXVzZSwKQEAgLTEyMDMsNiArMTIzMiwxNDkg QEAgdHJhbnNmb3JtT25Db25mbGljdENsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsCiAJcmV0 dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIHRyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZQor ICoKKyAqCSAgVHJhbnNmb3JtcyBhIEZvclBvcnRpb25PZkNsYXVzZSBpbiBhbiBVUERBVEUv REVMRVRFIHN0YXRlbWVudC4KKyAqCisgKgkgIC0gTG9vayB1cCB0aGUgcmFuZ2UvcGVyaW9k IHJlcXVlc3RlZC4KKyAqCSAgLSBCdWlsZCBhIGNvbXBhdGlibGUgcmFuZ2UgdmFsdWUgZnJv bSB0aGUgRlJPTSBhbmQgVE8gZXhwcmVzc2lvbnMuCisgKgkgIC0gQnVpbGQgYW4gIm92ZXJs YXBzIiBleHByZXNzaW9uIGZvciBmaWx0ZXJpbmcuCisgKgkgIC0gRm9yIFVQREFURXMsIGJ1 aWxkIGFuICJpbnRlcnNlY3RzIiBleHByZXNzaW9uIHRoZSByZXdyaXRlciBjYW4gYWRkCisg KgkJdG8gdGhlIHRhcmdldExpc3QgdG8gY2hhbmdlIHRoZSB0ZW1wb3JhbCBib3VuZHMuCisg Ki8KK3N0YXRpYyBGb3JQb3J0aW9uT2ZFeHByICoKK3RyYW5zZm9ybUZvclBvcnRpb25PZkNs YXVzZShQYXJzZVN0YXRlICpwc3RhdGUsCisJCQkJCQkJaW50IHJ0aW5kZXgsCisJCQkJCQkJ Rm9yUG9ydGlvbk9mQ2xhdXNlICpmb3JQb3J0aW9uT2YsCisJCQkJCQkJYm9vbCBpc1VwZGF0 ZSkKK3sKKwlSZWxhdGlvbiB0YXJnZXRyZWwgPSBwc3RhdGUtPnBfdGFyZ2V0X3JlbGF0aW9u OworCVJURVBlcm1pc3Npb25JbmZvICp0YXJnZXRfcGVybWluZm8gPSBwc3RhdGUtPnBfdGFy Z2V0X25zaXRlbS0+cF9wZXJtaW5mbzsKKwljaGFyICpyYW5nZV9uYW1lID0gZm9yUG9ydGlv bk9mLT5yYW5nZV9uYW1lOworCWNoYXIgKnJhbmdlX3R5cGVfbmFtZXNwYWNlID0gTlVMTDsK KwljaGFyICpyYW5nZV90eXBlX25hbWUgPSBOVUxMOworCWludCByYW5nZV9hdHRubyA9IElu dmFsaWRBdHRyTnVtYmVyOworCUZvcm1fcGdfYXR0cmlidXRlIGF0dHI7CisJT2lkCW9wY2xh c3M7CisJU3RyYXRlZ3lOdW1iZXIgc3RyYXQ7CisJT2lkCW9waWQ7CisJRm9yUG9ydGlvbk9m RXhwciAqcmVzdWx0OworCVZhciAqcmFuZ2VWYXI7CisJTm9kZSAqdGFyZ2V0RXhwcjsKKwor CXJlc3VsdCA9IG1ha2VOb2RlKEZvclBvcnRpb25PZkV4cHIpOworCisJLyogTG9vayB1cCB0 aGUgRk9SIFBPUlRJT04gT0YgbmFtZSByZXF1ZXN0ZWQuICovCisJcmFuZ2VfYXR0bm8gPSBh dHRuYW1lQXR0TnVtKHRhcmdldHJlbCwgcmFuZ2VfbmFtZSwgZmFsc2UpOworCWlmIChyYW5n ZV9hdHRubyA9PSBJbnZhbGlkQXR0ck51bWJlcikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9DT0xVTU4pLAorCQkJCSBlcnJtc2coImNvbHVt biBvciBwZXJpb2QgXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIs CisJCQkJCQlyYW5nZV9uYW1lLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodGFy Z2V0cmVsKSksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGZvclBvcnRpb25P Zi0+cmFuZ2VfbmFtZV9sb2NhdGlvbikpKTsKKwlhdHRyID0gVHVwbGVEZXNjQXR0cih0YXJn ZXRyZWwtPnJkX2F0dCwgcmFuZ2VfYXR0bm8gLSAxKTsKKworCS8qIE1ha2Ugc3VyZSBpdCdz IGEgcmFuZ2UgY29sdW1uICovCisJaWYgKCF0eXBlX2lzX3JhbmdlKGF0dHItPmF0dHR5cGlk KSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfQ09M VU1OX1JFRkVSRU5DRSksCisJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiBvZiByZWxhdGlv biBcIiVzXCIgaXMgbm90IGEgcmFuZ2UgdHlwZSIsCisJCQkJCQlyYW5nZV9uYW1lLAorCQkJ CQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSksCisJCQkJIHBhcnNlcl9l cnJwb3NpdGlvbihwc3RhdGUsIGZvclBvcnRpb25PZi0+cmFuZ2VfbmFtZV9sb2NhdGlvbikp KTsKKworCXJhbmdlVmFyID0gbWFrZVZhcigKKwkJCXJ0aW5kZXgsCisJCQlyYW5nZV9hdHRu bywKKwkJCWF0dHItPmF0dHR5cGlkLAorCQkJYXR0ci0+YXR0dHlwbW9kLAorCQkJYXR0ci0+ YXR0Y29sbGF0aW9uLAorCQkJMCk7CisJcmFuZ2VWYXItPmxvY2F0aW9uID0gZm9yUG9ydGlv bk9mLT5yYW5nZV9uYW1lX2xvY2F0aW9uOworCXJlc3VsdC0+cmFuZ2VWYXIgPSByYW5nZVZh cjsKKwlyZXN1bHQtPnJhbmdlVHlwZSA9IGF0dHItPmF0dHR5cGlkOworCWlmICghZ2V0X3R5 cG5hbWVfYW5kX25hbWVzcGFjZShhdHRyLT5hdHR0eXBpZCwgJnJhbmdlX3R5cGVfbmFtZSwg JnJhbmdlX3R5cGVfbmFtZXNwYWNlKSkKKwkJZWxvZyhFUlJPUiwgIm1pc3NpbmcgcmFuZ2Ug dHlwZSAlZCIsIGF0dHItPmF0dHR5cGlkKTsKKworCisJaWYgKGZvclBvcnRpb25PZi0+dGFy Z2V0KQorCQkvKgorCQkgKiBXZSB3ZXJlIGFscmVhZHkgZ2l2ZW4gYW4gZXhwcmVzc2lvbiBm b3IgdGhlIHRhcmdldCwKKwkJICogc28gd2UgZG9uJ3QgaGF2ZSB0byBidWlsZCBhbnl0aGlu Zy4KKwkJICovCisJCXRhcmdldEV4cHIgPSBmb3JQb3J0aW9uT2YtPnRhcmdldDsKKwllbHNl CisJeworCQkvKgorCQkgKiBCdWlsZCBhIHJhbmdlIGZyb20gdGhlIEZST00gLi4uIFRPIC4u Li4gYm91bmRzLgorCQkgKiBUaGlzIHNob3VsZCBnaXZlIGEgY29uc3RhbnQgcmVzdWx0LCBz byB3ZSBhY2NlcHQgZnVuY3Rpb25zIGxpa2UgTk9XKCkKKwkJICogYnV0IG5vdCBjb2x1bW4g cmVmZXJlbmNlcywgc3VicXVlcmllcywgZXRjLgorCQkgKgorCQkgKiBJdCBhbHNvIHBlcm1p dHMgVU5CT1VOREVEIGluIGVpdGhlciBwbGFjZS4KKwkJICovCisJCXRhcmdldEV4cHIgPSAo Tm9kZSAqKSBtYWtlRnVuY0NhbGwoCisJCQkJbGlzdF9tYWtlMihtYWtlU3RyaW5nKHJhbmdl X3R5cGVfbmFtZXNwYWNlKSwgbWFrZVN0cmluZyhyYW5nZV90eXBlX25hbWUpKSwKKwkJCQls aXN0X21ha2UyKGZvclBvcnRpb25PZi0+dGFyZ2V0X3N0YXJ0LCBmb3JQb3J0aW9uT2YtPnRh cmdldF9lbmQpLAorCQkJCUNPRVJDRV9FWFBMSUNJVF9DQUxMLAorCQkJCWZvclBvcnRpb25P Zi0+cmFuZ2VfbmFtZV9sb2NhdGlvbik7CisJfQorCXJlc3VsdC0+dGFyZ2V0UmFuZ2UgPSB0 cmFuc2Zvcm1FeHByKHBzdGF0ZSwgdGFyZ2V0RXhwciwgRVhQUl9LSU5EX1VQREFURV9QT1JU SU9OKTsKKworCS8qCisJICogQnVpbGQgb3ZlcmxhcHNFeHByIHRvIHVzZSBpbiB0aGUgd2hl cmVDbGF1c2UuCisJICogVGhpcyBtZWFucyB3ZSBvbmx5IGhpdCByb3dzIG1hdGNoaW5nIHRo ZSBGUk9NICYgVE8gYm91bmRzLgorCSAqIFdlIG11c3QgbG9vayB1cCB0aGUgb3ZlcmxhcHMg b3BlcmF0b3IgKHVzdWFsbHkgIiYmIikuCisJICovCisJb3BjbGFzcyA9IEdldERlZmF1bHRP cENsYXNzKGF0dHItPmF0dHR5cGlkLCBHSVNUX0FNX09JRCk7CisJc3RyYXQgPSBSVE92ZXJs YXBTdHJhdGVneU51bWJlcjsKKwlHZXRPcGVyYXRvckZyb21DYW5vbmljYWxTdHJhdGVneShv cGNsYXNzLCBJbnZhbGlkT2lkLCAib3ZlcmxhcHMiLCAiRk9SIFBPUlRJT04gT0YiLCAmb3Bp ZCwgJnN0cmF0KTsKKwlyZXN1bHQtPm92ZXJsYXBzRXhwciA9IChOb2RlICopIG1ha2VTaW1w bGVBX0V4cHIoQUVYUFJfT1AsIGdldF9vcG5hbWUob3BpZCksCisJCQkoTm9kZSAqKSBjb3B5 T2JqZWN0KHJhbmdlVmFyKSwgdGFyZ2V0RXhwciwKKwkJCWZvclBvcnRpb25PZi0+cmFuZ2Vf bmFtZV9sb2NhdGlvbik7CisKKwkvKgorCSAqIExvb2sgdXAgdGhlIHdpdGhvdXRQb3J0aW9u T3BlciBzbyB3ZSBjYW4gY29tcHV0ZSB0aGUgbGVmdG92ZXJzLgorCSAqIExlZnRvdmVycyB3 aWxsIGJlIG9sZF9yYW5nZSBALSB0YXJnZXRfcmFuZ2UKKwkgKiAob25lIHBlciBlbGVtZW50 IG9mIHRoZSByZXN1bHQpLgorCSAqLworCXN0cmF0ID0gUlRXaXRob3V0UG9ydGlvblN0cmF0 ZWd5TnVtYmVyOworCUdldE9wZXJhdG9yRnJvbUNhbm9uaWNhbFN0cmF0ZWd5KG9wY2xhc3Ms IEludmFsaWRPaWQsICJ3aXRob3V0IHBvcnRpb24iLCAiRk9SIFBPUlRJT04gT0YiLCAmb3Bp ZCwgJnN0cmF0KTsKKwlyZXN1bHQtPndpdGhvdXRQb3J0aW9uUHJvYyA9IGdldF9vcGNvZGUo b3BpZCk7CisKKwlpZiAoaXNVcGRhdGUpCisJeworCQkvKgorCQkgKiBOb3cgbWFrZSBzdXJl IHdlIHVwZGF0ZSB0aGUgc3RhcnQvZW5kIHRpbWUgb2YgdGhlIHJlY29yZC4KKwkJICogRm9y IGEgcmFuZ2UgY29sIChyKSB0aGlzIGlzIGByID0gciAqIHRhcmdldFJhbmdlYC4KKwkJICov CisJCUV4cHIgKnJhbmdlU2V0RXhwcjsKKwkJVGFyZ2V0RW50cnkgKnRsZTsKKworCQlzdHJh dCA9IFJUSW50ZXJzZWN0U3RyYXRlZ3lOdW1iZXI7CisJCUdldE9wZXJhdG9yRnJvbUNhbm9u aWNhbFN0cmF0ZWd5KG9wY2xhc3MsIEludmFsaWRPaWQsICJpbnRlcnNlY3RzIiwgIkZPUiBQ T1JUSU9OIE9GIiwgJm9waWQsICZzdHJhdCk7CisJCXJhbmdlU2V0RXhwciA9IChFeHByICop IG1ha2VTaW1wbGVBX0V4cHIoQUVYUFJfT1AsIGdldF9vcG5hbWUob3BpZCksCisJCQkJKE5v ZGUgKikgY29weU9iamVjdChyYW5nZVZhciksIHRhcmdldEV4cHIsCisJCQkJZm9yUG9ydGlv bk9mLT5yYW5nZV9uYW1lX2xvY2F0aW9uKTsKKwkJcmFuZ2VTZXRFeHByID0gKEV4cHIgKikg dHJhbnNmb3JtRXhwcihwc3RhdGUsIChOb2RlICopIHJhbmdlU2V0RXhwciwgRVhQUl9LSU5E X1VQREFURV9QT1JUSU9OKTsKKworCQkvKiBNYWtlIGEgVExFIHRvIHNldCB0aGUgcmFuZ2Ug Y29sdW1uICovCisJCXJlc3VsdC0+cmFuZ2VTZXQgPSBOSUw7CisJCXRsZSA9IG1ha2VUYXJn ZXRFbnRyeShyYW5nZVNldEV4cHIsIHJhbmdlX2F0dG5vLCByYW5nZV9uYW1lLCBmYWxzZSk7 CisJCXJlc3VsdC0+cmFuZ2VTZXQgPSBsYXBwZW5kKHJlc3VsdC0+cmFuZ2VTZXQsIHRsZSk7 CisKKwkJLyogTWFyayB0aGUgcmFuZ2UgY29sdW1uIGFzIHJlcXVpcmluZyB1cGRhdGUgcGVy bWlzc2lvbnMgKi8KKwkJdGFyZ2V0X3Blcm1pbmZvLT51cGRhdGVkQ29scyA9IGJtc19hZGRf bWVtYmVyKHRhcmdldF9wZXJtaW5mby0+dXBkYXRlZENvbHMsCisJCQkJCQkJCQkJCQkJICBy YW5nZV9hdHRubyAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOworCX0K KwllbHNlCisJCXJlc3VsdC0+cmFuZ2VTZXQgPSBOSUw7CisKKwlyZXN1bHQtPnJhbmdlX25h bWUgPSByYW5nZV9uYW1lOworCisJcmV0dXJuIHJlc3VsdDsKK30KIAogLyoKICAqIEJ1aWxk T25Db25mbGljdEV4Y2x1ZGVkVGFyZ2V0bGlzdApAQCAtMjQwOSw2ICsyNTgxLDcgQEAgdHJh bnNmb3JtVXBkYXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0bXQp CiB7CiAJUXVlcnkJICAgKnFyeSA9IG1ha2VOb2RlKFF1ZXJ5KTsKIAlQYXJzZU5hbWVzcGFj ZUl0ZW0gKm5zaXRlbTsKKwlOb2RlCSAgICp3aGVyZUNsYXVzZTsKIAlOb2RlCSAgICpxdWFs OwogCiAJcXJ5LT5jb21tYW5kVHlwZSA9IENNRF9VUERBVEU7CkBAIC0yNDI2LDYgKzI1OTks MTAgQEAgdHJhbnNmb3JtVXBkYXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0 bXQgKnN0bXQpCiAJCQkJCQkJCQkJIHN0bXQtPnJlbGF0aW9uLT5pbmgsCiAJCQkJCQkJCQkJ IHRydWUsCiAJCQkJCQkJCQkJIEFDTF9VUERBVEUpOworCisJaWYgKHN0bXQtPmZvclBvcnRp b25PZikKKwkJcXJ5LT5mb3JQb3J0aW9uT2YgPSB0cmFuc2Zvcm1Gb3JQb3J0aW9uT2ZDbGF1 c2UocHN0YXRlLCBxcnktPnJlc3VsdFJlbGF0aW9uLCBzdG10LT5mb3JQb3J0aW9uT2YsIHRy dWUpOworCiAJbnNpdGVtID0gcHN0YXRlLT5wX3RhcmdldF9uc2l0ZW07CiAKIAkvKiBzdWJx dWVyaWVzIGluIEZST00gY2Fubm90IGFjY2VzcyB0aGUgcmVzdWx0IHJlbGF0aW9uICovCkBA IC0yNDQyLDcgKzI2MTksOCBAQCB0cmFuc2Zvcm1VcGRhdGVTdG10KFBhcnNlU3RhdGUgKnBz dGF0ZSwgVXBkYXRlU3RtdCAqc3RtdCkKIAluc2l0ZW0tPnBfbGF0ZXJhbF9vbmx5ID0gZmFs c2U7CiAJbnNpdGVtLT5wX2xhdGVyYWxfb2sgPSB0cnVlOwogCi0JcXVhbCA9IHRyYW5zZm9y bVdoZXJlQ2xhdXNlKHBzdGF0ZSwgc3RtdC0+d2hlcmVDbGF1c2UsCisJd2hlcmVDbGF1c2Ug PSBhZGRGb3JQb3J0aW9uT2ZXaGVyZUNvbmRpdGlvbnMocXJ5LCBzdG10LT5mb3JQb3J0aW9u T2YsIHN0bXQtPndoZXJlQ2xhdXNlKTsKKwlxdWFsID0gdHJhbnNmb3JtV2hlcmVDbGF1c2Uo cHN0YXRlLCB3aGVyZUNsYXVzZSwKIAkJCQkJCQkJRVhQUl9LSU5EX1dIRVJFLCAiV0hFUkUi KTsKIAogCXFyeS0+cmV0dXJuaW5nTGlzdCA9IHRyYW5zZm9ybVJldHVybmluZ0xpc3QocHN0 YXRlLCBzdG10LT5yZXR1cm5pbmdMaXN0KTsKQEAgLTI0NTEsNyArMjYyOSw3IEBAIHRyYW5z Zm9ybVVwZGF0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBVcGRhdGVTdG10ICpzdG10KQog CSAqIE5vdyB3ZSBhcmUgZG9uZSB3aXRoIFNFTEVDVC1saWtlIHByb2Nlc3NpbmcsIGFuZCBj YW4gZ2V0IG9uIHdpdGgKIAkgKiB0cmFuc2Zvcm1pbmcgdGhlIHRhcmdldCBsaXN0IHRvIG1h dGNoIHRoZSBVUERBVEUgdGFyZ2V0IGNvbHVtbnMuCiAJICovCi0JcXJ5LT50YXJnZXRMaXN0 ID0gdHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChwc3RhdGUsIHN0bXQtPnRhcmdldExpc3Qp OworCXFyeS0+dGFyZ2V0TGlzdCA9IHRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3QocHN0YXRl LCBzdG10LT50YXJnZXRMaXN0LCBxcnktPmZvclBvcnRpb25PZik7CiAKIAlxcnktPnJ0YWJs ZSA9IHBzdGF0ZS0+cF9ydGFibGU7CiAJcXJ5LT5ydGVwZXJtaW5mb3MgPSBwc3RhdGUtPnBf cnRlcGVybWluZm9zOwpAQCAtMjQ3MCw3ICsyNjQ4LDcgQEAgdHJhbnNmb3JtVXBkYXRlU3Rt dChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0bXQpCiAgKgloYW5kbGUgU0VU IGNsYXVzZSBpbiBVUERBVEUvTUVSR0UvSU5TRVJUIC4uLiBPTiBDT05GTElDVCBVUERBVEUK ICAqLwogTGlzdCAqCi10cmFuc2Zvcm1VcGRhdGVUYXJnZXRMaXN0KFBhcnNlU3RhdGUgKnBz dGF0ZSwgTGlzdCAqb3JpZ1RsaXN0KQordHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChQYXJz ZVN0YXRlICpwc3RhdGUsIExpc3QgKm9yaWdUbGlzdCwgRm9yUG9ydGlvbk9mRXhwciAqZm9y UG9ydGlvbk9mKQogewogCUxpc3QJICAgKnRsaXN0ID0gTklMOwogCVJURVBlcm1pc3Npb25J bmZvICp0YXJnZXRfcGVybWluZm87CkBAIC0yNTIwLDYgKzI2OTgsMjEgQEAgdHJhbnNmb3Jt VXBkYXRlVGFyZ2V0TGlzdChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm9yaWdUbGlzdCkK IAkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwc3RhdGUtPnBfdGFyZ2V0X3JlbGF0 aW9uKSksCiAJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvcmlnVGFyZ2V0LT5s b2NhdGlvbikpKTsKIAorCQkvKgorCQkgKiBJZiB0aGlzIGlzIGEgRk9SIFBPUlRJT04gT0Yg dXBkYXRlLAorCQkgKiBmb3JiaWQgZGlyZWN0bHkgc2V0dGluZyB0aGUgcmFuZ2UgY29sdW1u LAorCQkgKiBzaW5jZSB0aGF0IHdvdWxkIGNvbmZsaWN0IHdpdGggdGhlIGltcGxpY2l0IHVw ZGF0ZXMuCisJCSAqLworCQlpZiAoZm9yUG9ydGlvbk9mICE9IE5VTEwpCisJCXsKKwkJCWlm IChhdHRybm8gPT0gZm9yUG9ydGlvbk9mLT5yYW5nZVZhci0+dmFyYXR0bm8pCisJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJ CQkJCSBlcnJtc2coImNhbid0IGRpcmVjdGx5IGFzc2lnbiB0byBcIiVzXCIgaW4gYSBGT1Ig UE9SVElPTiBPRiB1cGRhdGUiLAorCQkJCQkJCQlvcmlnVGFyZ2V0LT5uYW1lKSwKKwkJCQkJ CSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvcmlnVGFyZ2V0LT5sb2NhdGlvbikpKTsK KwkJfQorCiAJCXVwZGF0ZVRhcmdldExpc3RFbnRyeShwc3RhdGUsIHRsZSwgb3JpZ1Rhcmdl dC0+bmFtZSwKIAkJCQkJCQkgIGF0dHJubywKIAkJCQkJCQkgIG9yaWdUYXJnZXQtPmluZGly ZWN0aW9uLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggYzU2M2E1Yjc5Yi4uYTg5MDRiMjczNiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55CkBAIC0yNTgsNiArMjU4LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1 cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1 ZXJ5KTsKIAlSYW5nZVZhciAgICpyYW5nZTsKIAlJbnRvQ2xhdXNlICppbnRvOwogCVdpdGhD bGF1c2UgKndpdGg7CisJRm9yUG9ydGlvbk9mQ2xhdXNlICpmb3Jwb3J0aW9ub2Y7CiAJSW5m ZXJDbGF1c2UJKmluZmVyOwogCU9uQ29uZmxpY3RDbGF1c2UgKm9uY29uZmxpY3Q7CiAJQV9J bmRpY2VzICAqYWluZDsKQEAgLTU1MCw2ICs1NTEsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJl Y3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAq cXVlcnkpOwogJXR5cGUgPHJhbmdlPglyZWxhdGlvbl9leHByCiAldHlwZSA8cmFuZ2U+CWV4 dGVuZGVkX3JlbGF0aW9uX2V4cHIKICV0eXBlIDxyYW5nZT4JcmVsYXRpb25fZXhwcl9vcHRf YWxpYXMKKyV0eXBlIDxmb3Jwb3J0aW9ub2Y+IGZvcl9wb3J0aW9uX29mX2NsYXVzZQogJXR5 cGUgPG5vZGU+CXRhYmxlc2FtcGxlX2NsYXVzZSBvcHRfcmVwZWF0YWJsZV9jbGF1c2UKICV0 eXBlIDx0YXJnZXQ+CXRhcmdldF9lbCBzZXRfdGFyZ2V0IGluc2VydF9jb2x1bW5faXRlbQog CkBAIC03NDYsNyArNzQ4LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2Vs ZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAogCVBB UkFMTEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQQVJUSVRJT04gUEFTU0lORyBQQVNT V09SRAogCVBFUklPRCBQTEFDSU5HIFBMQU5TIFBPTElDWQotCVBPU0lUSU9OIFBSRUNFRElO RyBQUkVDSVNJT04gUFJFU0VSVkUgUFJFUEFSRSBQUkVQQVJFRCBQUklNQVJZCisJUE9SVElP TiBQT1NJVElPTiBQUkVDRURJTkcgUFJFQ0lTSU9OIFBSRVNFUlZFIFBSRVBBUkUgUFJFUEFS RUQgUFJJTUFSWQogCVBSSU9SIFBSSVZJTEVHRVMgUFJPQ0VEVVJBTCBQUk9DRURVUkUgUFJP Q0VEVVJFUyBQUk9HUkFNIFBVQkxJQ0FUSU9OCiAKIAlRVU9URQpAQCAtODY0LDYgKzg2Niwx NyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFt ZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogICoganNvbl9wcmVkaWNhdGVfdHlw ZV9jb25zdHJhaW50IGFuZCBqc29uX2tleV91bmlxdWVuZXNzX2NvbnN0cmFpbnRfb3B0CiAg KiBwcm9kdWN0aW9ucyAoc2VlIGNvbW1lbnRzIHRoZXJlKS4KICAqLworLyoKKyAqIFdlIG5l ZWQgdG8gaGFuZGxlIHRoaXMgc2hpZnQvcmVkdWNlIGNvbmZsaWN0OgorICogRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSBJTlRFUlZBTCBZRUFSIFRPIE1PTlRIIFRPIGZvby4KKyAq IFRoaXMgaXMgYmFzaWNhbGx5IHRoZSBjbGFzc2ljICJkYW5nbGluZyBlbHNlIiBwcm9ibGVt LCBhbmQgd2Ugd2FudCBhCisgKiBzaW1pbGFyIHJlc29sdXRpb246IHRyZWF0IHRoZSBUTyBh cyBwYXJ0IG9mIHRoZSBJTlRFUlZBTCwgbm90IGFzIHBhcnQgb2YKKyAqIHRoZSBGUk9NIC4u LiBUTyAuLi4uIFVzZXJzIGNhbiBhZGQgcGFyZW50aGVzZXMgaWYgdGhhdCdzIGEgcHJvYmxl bS4KKyAqIFRPIGp1c3QgbmVlZHMgdG8gYmUgaGlnaGVyIHByZWNlZGVuY2UgdGhhbiBZRUFS X1AgZXRjLgorICogVE9ETzogSSBuZWVkIHRvIGZpZ3VyZSBvdXQgYSAlcHJlYyBzb2x1dGlv biBiZWZvcmUgdGhpcyBnZXRzIGNvbW1pdHRlZCEKKyAqLworJW5vbmFzc29jIFlFQVJfUCBN T05USF9QIERBWV9QIEhPVVJfUCBNSU5VVEVfUAorJW5vbmFzc29jIFRPCiAlbm9uYXNzb2MJ VU5CT1VOREVECQkvKiBpZGVhbGx5IHdvdWxkIGhhdmUgc2FtZSBwcmVjZWRlbmNlIGFzIElE RU5UICovCiAlbm9uYXNzb2MJSURFTlQgUEFSVElUSU9OIFJBTkdFIFJPV1MgR1JPVVBTIFBS RUNFRElORyBGT0xMT1dJTkcgQ1VCRSBST0xMVVAKIAkJCVNFVCBLRVlTIE9CSkVDVF9QIFND QUxBUiBWQUxVRV9QIFdJVEggV0lUSE9VVApAQCAtMTIyMTUsMTQgKzEyMjI4LDE2IEBAIHJl dHVybmluZ19jbGF1c2U6CiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIERlbGV0ZVN0 bXQ6IG9wdF93aXRoX2NsYXVzZSBERUxFVEVfUCBGUk9NIHJlbGF0aW9uX2V4cHJfb3B0X2Fs aWFzCisJCQlmb3JfcG9ydGlvbl9vZl9jbGF1c2UKIAkJCXVzaW5nX2NsYXVzZSB3aGVyZV9v cl9jdXJyZW50X2NsYXVzZSByZXR1cm5pbmdfY2xhdXNlCiAJCQkJewogCQkJCQlEZWxldGVT dG10ICpuID0gbWFrZU5vZGUoRGVsZXRlU3RtdCk7CiAKIAkJCQkJbi0+cmVsYXRpb24gPSAk NDsKLQkJCQkJbi0+dXNpbmdDbGF1c2UgPSAkNTsKLQkJCQkJbi0+d2hlcmVDbGF1c2UgPSAk NjsKLQkJCQkJbi0+cmV0dXJuaW5nTGlzdCA9ICQ3OworCQkJCQluLT5mb3JQb3J0aW9uT2Yg PSAkNTsKKwkJCQkJbi0+dXNpbmdDbGF1c2UgPSAkNjsKKwkJCQkJbi0+d2hlcmVDbGF1c2Ug PSAkNzsKKwkJCQkJbi0+cmV0dXJuaW5nTGlzdCA9ICQ4OwogCQkJCQluLT53aXRoQ2xhdXNl ID0gJDE7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CkBAIC0xMjI4NSw2ICsxMjMw MCw3IEBAIG9wdF9ub3dhaXRfb3Jfc2tpcDoKICAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K IAogVXBkYXRlU3RtdDogb3B0X3dpdGhfY2xhdXNlIFVQREFURSByZWxhdGlvbl9leHByX29w dF9hbGlhcworCQkJZm9yX3BvcnRpb25fb2ZfY2xhdXNlCiAJCQlTRVQgc2V0X2NsYXVzZV9s aXN0CiAJCQlmcm9tX2NsYXVzZQogCQkJd2hlcmVfb3JfY3VycmVudF9jbGF1c2UKQEAgLTEy MjkzLDEwICsxMjMwOSwxMSBAQCBVcGRhdGVTdG10OiBvcHRfd2l0aF9jbGF1c2UgVVBEQVRF IHJlbGF0aW9uX2V4cHJfb3B0X2FsaWFzCiAJCQkJCVVwZGF0ZVN0bXQgKm4gPSBtYWtlTm9k ZShVcGRhdGVTdG10KTsKIAogCQkJCQluLT5yZWxhdGlvbiA9ICQzOwotCQkJCQluLT50YXJn ZXRMaXN0ID0gJDU7Ci0JCQkJCW4tPmZyb21DbGF1c2UgPSAkNjsKLQkJCQkJbi0+d2hlcmVD bGF1c2UgPSAkNzsKLQkJCQkJbi0+cmV0dXJuaW5nTGlzdCA9ICQ4OworCQkJCQluLT5mb3JQ b3J0aW9uT2YgPSAkNDsKKwkJCQkJbi0+dGFyZ2V0TGlzdCA9ICQ2OworCQkJCQluLT5mcm9t Q2xhdXNlID0gJDc7CisJCQkJCW4tPndoZXJlQ2xhdXNlID0gJDg7CisJCQkJCW4tPnJldHVy bmluZ0xpc3QgPSAkOTsKIAkJCQkJbi0+d2l0aENsYXVzZSA9ICQxOwogCQkJCQkkJCA9IChO b2RlICopIG47CiAJCQkJfQpAQCAtMTM3MzIsNiArMTM3NDksMjcgQEAgcmVsYXRpb25fZXhw cl9vcHRfYWxpYXM6IHJlbGF0aW9uX2V4cHIJCQkJCSVwcmVjIFVNSU5VUwogCQkJCX0KIAkJ OwogCitmb3JfcG9ydGlvbl9vZl9jbGF1c2U6CisJCQlGT1IgUE9SVElPTiBPRiBDb2xJZCAn KCcgYV9leHByICcpJworCQkJCXsKKwkJCQkJRm9yUG9ydGlvbk9mQ2xhdXNlICpuID0gbWFr ZU5vZGUoRm9yUG9ydGlvbk9mQ2xhdXNlKTsKKwkJCQkJbi0+cmFuZ2VfbmFtZSA9ICQ0Owor CQkJCQluLT5yYW5nZV9uYW1lX2xvY2F0aW9uID0gQDQ7CisJCQkJCW4tPnRhcmdldCA9ICQ2 OworCQkJCQkkJCA9IG47CisJCQkJfQorCQkJfCBGT1IgUE9SVElPTiBPRiBDb2xJZCBGUk9N IGFfZXhwciBUTyBhX2V4cHIKKwkJCQl7CisJCQkJCUZvclBvcnRpb25PZkNsYXVzZSAqbiA9 IG1ha2VOb2RlKEZvclBvcnRpb25PZkNsYXVzZSk7CisJCQkJCW4tPnJhbmdlX25hbWUgPSAk NDsKKwkJCQkJbi0+cmFuZ2VfbmFtZV9sb2NhdGlvbiA9IEA0OworCQkJCQluLT50YXJnZXRf c3RhcnQgPSAkNjsKKwkJCQkJbi0+dGFyZ2V0X2VuZCA9ICQ4OworCQkJCQkkJCA9IG47CisJ CQkJfQorCQkJfCAvKkVNUFRZKi8JCQkJCXsgJCQgPSBOVUxMOyB9CisJCTsKKwogLyoKICAq IFRBQkxFU0FNUExFIGRlY29yYXRpb24gaW4gYSBGUk9NIGl0ZW0KICAqLwpAQCAtMTczMjUs NiArMTczNjMsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFBBU1NXT1JECiAJCQl8 IFBMQU5TCiAJCQl8IFBPTElDWQorCQkJfCBQT1JUSU9OCiAJCQl8IFBSRUNFRElORwogCQkJ fCBQUkVQQVJFCiAJCQl8IFBSRVBBUkVECkBAIC0xNzkyOSw2ICsxNzk2OCw3IEBAIGJhcmVf bGFiZWxfa2V5d29yZDoKIAkJCXwgUExBQ0lORwogCQkJfCBQTEFOUwogCQkJfCBQT0xJQ1kK KwkJCXwgUE9SVElPTgogCQkJfCBQT1NJVElPTgogCQkJfCBQUkVDRURJTkcKIAkJCXwgUFJF UEFSRQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCmluZGV4IDliYmFkMzNmYmQuLmJmZjEwYzlj NzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYworKysgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKQEAgLTU3NCw2ICs1NzQsMTMgQEAgY2hl Y2tfYWdnbGV2ZWxzX2FuZF9jb25zdHJhaW50cyhQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUg KmV4cHIpCiAJCWNhc2UgRVhQUl9LSU5EX0NZQ0xFX01BUks6CiAJCQllcnJraW5kID0gdHJ1 ZTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9VUERBVEVfUE9SVElPTjoKKwkJCWlm IChpc0FnZykKKwkJCQllcnIgPSBfKCJhZ2dyZWdhdGUgZnVuY3Rpb25zIGFyZSBub3QgYWxs b3dlZCBpbiBGT1IgUE9SVElPTiBPRiBleHByZXNzaW9ucyIpOworCQkJZWxzZQorCQkJCWVy ciA9IF8oImdyb3VwaW5nIG9wZXJhdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIEZPUiBQT1JU SU9OIE9GIGV4cHJlc3Npb25zIik7CisKKwkJCWJyZWFrOwogCiAJCQkvKgogCQkJICogVGhl cmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQgdGhl CkBAIC05NjQsNiArOTcxLDkgQEAgdHJhbnNmb3JtV2luZG93RnVuY0NhbGwoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBXaW5kb3dGdW5jICp3ZnVuYywKIAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVf TUFSSzoKIAkJCWVycmtpbmQgPSB0cnVlOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5E X1VQREFURV9QT1JUSU9OOgorCQkJZXJyID0gXygid2luZG93IGZ1bmN0aW9ucyBhcmUgbm90 IGFsbG93ZWQgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbnMiKTsKKwkJCWJyZWFrOwog CiAJCQkvKgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNl IGhlcmUsIHNvIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfY29sbGF0ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUuYwppbmRl eCBjNDgwY2UzNjgyLi5jNjMzMDFmMGY3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfY29sbGF0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xs YXRlLmMKQEAgLTQ4NCw2ICs0ODQsNyBAQCBhc3NpZ25fY29sbGF0aW9uc193YWxrZXIoTm9k ZSAqbm9kZSwgYXNzaWduX2NvbGxhdGlvbnNfY29udGV4dCAqY29udGV4dCkKIAkJY2FzZSBU X0pvaW5FeHByOgogCQljYXNlIFRfRnJvbUV4cHI6CiAJCWNhc2UgVF9PbkNvbmZsaWN0RXhw cjoKKwkJY2FzZSBUX0ZvclBvcnRpb25PZkV4cHI6CiAJCWNhc2UgVF9Tb3J0R3JvdXBDbGF1 c2U6CiAJCWNhc2UgVF9NZXJnZUFjdGlvbjoKIAkJCSh2b2lkKSBleHByZXNzaW9uX3RyZWVf d2Fsa2VyKG5vZGUsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhw ci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCA2NGM1ODJjMzQ0 Li5mZWU2YmQ5MDJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhw ci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAgLTU2Niw2ICs1 NjYsOSBAQCB0cmFuc2Zvcm1Db2x1bW5SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5S ZWYgKmNyZWYpCiAJCWNhc2UgRVhQUl9LSU5EX1BBUlRJVElPTl9CT1VORDoKIAkJCWVyciA9 IF8oImNhbm5vdCB1c2UgY29sdW1uIHJlZmVyZW5jZSBpbiBwYXJ0aXRpb24gYm91bmQgZXhw cmVzc2lvbiIpOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX1VQREFURV9QT1JUSU9O OgorCQkJZXJyID0gXygiY2Fubm90IHVzZSBjb2x1bW4gcmVmZXJlbmNlIGluIEZPUiBQT1JU SU9OIE9GIGV4cHJlc3Npb24iKTsKKwkJCWJyZWFrOwogCiAJCQkvKgogCQkJICogVGhlcmUg aXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQgdGhlCkBA IC0xODEzLDYgKzE4MTYsOSBAQCB0cmFuc2Zvcm1TdWJMaW5rKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgU3ViTGluayAqc3VibGluaykKIAkJY2FzZSBFWFBSX0tJTkRfR0VORVJBVEVEX0NPTFVN TjoKIAkJCWVyciA9IF8oImNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gY29sdW1uIGdlbmVyYXRp b24gZXhwcmVzc2lvbiIpOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX1VQREFURV9Q T1JUSU9OOgorCQkJZXJyID0gXygiY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBGT1IgUE9SVElP TiBPRiBleHByZXNzaW9uIik7CisJCQlicmVhazsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlz IGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpAQCAt MzEwNCw2ICszMTEwLDggQEAgUGFyc2VFeHByS2luZE5hbWUoUGFyc2VFeHByS2luZCBleHBy S2luZCkKIAkJCXJldHVybiAiVVBEQVRFIjsKIAkJY2FzZSBFWFBSX0tJTkRfTUVSR0VfV0hF TjoKIAkJCXJldHVybiAiTUVSR0UgV0hFTiI7CisJCWNhc2UgRVhQUl9LSU5EX1VQREFURV9Q T1JUSU9OOgorCQkJcmV0dXJuICJGT1IgUE9SVElPTiBPRiI7CiAJCWNhc2UgRVhQUl9LSU5E X0dST1VQX0JZOgogCQkJcmV0dXJuICJHUk9VUCBCWSI7CiAJCWNhc2UgRVhQUl9LSU5EX09S REVSX0JZOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKaW5kZXggNmMyOTQ3MWJiMy4uY2Vm MGJlYzQ2ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYwor KysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCkBAIC0yNjU2LDYgKzI2NTYs OSBAQCBjaGVja19zcmZfY2FsbF9wbGFjZW1lbnQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2Rl ICpsYXN0X3NyZiwgaW50IGxvY2F0aW9uKQogCQljYXNlIEVYUFJfS0lORF9DWUNMRV9NQVJL OgogCQkJZXJya2luZCA9IHRydWU7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfVVBE QVRFX1BPUlRJT046CisJCQllcnIgPSBfKCJzZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucyBhcmUg bm90IGFsbG93ZWQgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbnMiKTsKKwkJCWJyZWFr OwogCiAJCQkvKgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBj YXNlIGhlcmUsIHNvIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfbWVyZ2UuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9tZXJnZS5jCmluZGV4 IDkxYjExNTZkOTkuLmMwMDgwMmFlMjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9tZXJnZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9tZXJnZS5j CkBAIC0zNzIsNyArMzcyLDcgQEAgdHJhbnNmb3JtTWVyZ2VTdG10KFBhcnNlU3RhdGUgKnBz dGF0ZSwgTWVyZ2VTdG10ICpzdG10KQogCQkJCQlwc3RhdGUtPnBfaXNfaW5zZXJ0ID0gZmFs c2U7CiAJCQkJCWFjdGlvbi0+dGFyZ2V0TGlzdCA9CiAJCQkJCQl0cmFuc2Zvcm1VcGRhdGVU YXJnZXRMaXN0KHBzdGF0ZSwKLQkJCQkJCQkJCQkJCSAgbWVyZ2VXaGVuQ2xhdXNlLT50YXJn ZXRMaXN0KTsKKwkJCQkJCQkJCQkJCSAgbWVyZ2VXaGVuQ2xhdXNlLT50YXJnZXRMaXN0LCBO VUxMKTsKIAkJCQl9CiAJCQkJYnJlYWs7CiAJCQljYXNlIENNRF9ERUxFVEU6CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMgYi9zcmMvYmFja2Vu ZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKaW5kZXggNDFhMzYyMzEwYS4uMjY2MmFkODRj ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCisr KyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYwpAQCAtMzQ1OSw2ICsz NDU5LDMwIEBAIHJld3JpdGVUYXJnZXRWaWV3KFF1ZXJ5ICpwYXJzZXRyZWUsIFJlbGF0aW9u IHZpZXcpCiAJCQkJCQkJCQkgICZwYXJzZXRyZWUtPmhhc1N1YkxpbmtzKTsKIAl9CiAKKwlp ZiAocGFyc2V0cmVlLT5mb3JQb3J0aW9uT2YgJiYgcGFyc2V0cmVlLT5jb21tYW5kVHlwZSA9 PSBDTURfVVBEQVRFKQorCXsKKwkJLyoKKwkJICogTGlrZSB0aGUgSU5TRVJUL1VQREFURSBj b2RlIGFib3ZlLCB1cGRhdGUgdGhlIHJlc25vcyBpbiB0aGUKKwkJICogYXV4aWxpYXJ5IFVQ REFURSB0YXJnZXRsaXN0IHRvIHJlZmVyIHRvIGNvbHVtbnMgb2YgdGhlIGJhc2UKKwkJICog cmVsYXRpb24uCisJCSAqLworCQlmb3JlYWNoKGxjLCBwYXJzZXRyZWUtPmZvclBvcnRpb25P Zi0+cmFuZ2VTZXQpCisJCXsKKwkJCVRhcmdldEVudHJ5ICp0bGUgPSAoVGFyZ2V0RW50cnkg KikgbGZpcnN0KGxjKTsKKwkJCVRhcmdldEVudHJ5ICp2aWV3X3RsZTsKKworCQkJaWYgKHRs ZS0+cmVzanVuaykKKwkJCQljb250aW51ZTsKKworCQkJdmlld190bGUgPSBnZXRfdGxlX2J5 X3Jlc25vKHZpZXdfdGFyZ2V0bGlzdCwgdGxlLT5yZXNubyk7CisJCQlpZiAodmlld190bGUg IT0gTlVMTCAmJiAhdmlld190bGUtPnJlc2p1bmsgJiYgSXNBKHZpZXdfdGxlLT5leHByLCBW YXIpKQorCQkJCXRsZS0+cmVzbm8gPSAoKFZhciAqKSB2aWV3X3RsZS0+ZXhwciktPnZhcmF0 dG5vOworCQkJZWxzZQorCQkJCWVsb2coRVJST1IsICJhdHRyaWJ1dGUgbnVtYmVyICVkIG5v dCBmb3VuZCBpbiB2aWV3IHRhcmdldGxpc3QiLAorCQkJCQkgdGxlLT5yZXNubyk7CisJCX0K Kwl9CisKIAkvKgogCSAqIEZvciBVUERBVEUvREVMRVRFLCBwdWxsIHVwIGFueSBXSEVSRSBx dWFscyBmcm9tIHRoZSB2aWV3LiAgV2Uga25vdyB0aGF0CiAJICogYW55IFZhcnMgaW4gdGhl IHF1YWxzIG11c3QgcmVmZXJlbmNlIHRoZSBvbmUgYmFzZSByZWxhdGlvbiwgc28gd2UgbmVl ZApAQCAtMzc5Nyw2ICszODIxLDIyIEBAIFJld3JpdGVRdWVyeShRdWVyeSAqcGFyc2V0cmVl LCBMaXN0ICpyZXdyaXRlX2V2ZW50cywgaW50IG9yaWdfcnRfbGVuZ3RoKQogCQllbHNlIGlm IChldmVudCA9PSBDTURfVVBEQVRFKQogCQl7CiAJCQlBc3NlcnQocGFyc2V0cmVlLT5vdmVy cmlkZSA9PSBPVkVSUklESU5HX05PVF9TRVQpOworCQkJLyoKKwkJCSAqIFVwZGF0ZSBGT1Ig UE9SVElPTiBPRiBjb2x1bW4ocykgYXV0b21hdGljYWxseS4gRG9uJ3QKKwkJCSAqIGRvIHRo aXMgdW50aWwgd2UncmUgZG9uZSByZXdyaXRpbmcgYSB2aWV3IHVwZGF0ZSwgc28KKwkJCSAq IHRoYXQgd2UgZG9uJ3QgYWRkIHRoZSBzYW1lIHVwZGF0ZSBvbiB0aGUgcmVjdXJzaW9uLgor CQkJICovCisJCQlpZiAocGFyc2V0cmVlLT5mb3JQb3J0aW9uT2YgJiYKKwkJCQlydF9lbnRy eV9yZWxhdGlvbi0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfVklFVykKKwkJCXsKKwkJ CQlMaXN0Q2VsbCAqdGw7CisJCQkJZm9yZWFjaCh0bCwgcGFyc2V0cmVlLT5mb3JQb3J0aW9u T2YtPnJhbmdlU2V0KQorCQkJCXsKKwkJCQkJVGFyZ2V0RW50cnkgKnRsZSA9IChUYXJnZXRF bnRyeSAqKSBsZmlyc3QodGwpOworCQkJCQlwYXJzZXRyZWUtPnRhcmdldExpc3QgPSBsYXBw ZW5kKHBhcnNldHJlZS0+dGFyZ2V0TGlzdCwgdGxlKTsKKwkJCQl9CisJCQl9CisKIAkJCXBh cnNldHJlZS0+dGFyZ2V0TGlzdCA9CiAJCQkJcmV3cml0ZVRhcmdldExpc3RJVShwYXJzZXRy ZWUtPnRhcmdldExpc3QsCiAJCQkJCQkJCQlwYXJzZXRyZWUtPmNvbW1hbmRUeXBlLApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgYi9zcmMvYmFja2VuZC90Y29w L3V0aWxpdHkuYwppbmRleCAzNjZhMjdhZThlLi4yYTI5ODIxOTVlIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxp dHkuYwpAQCAtMTU1Niw3ICsxNTU2LDcgQEAgUHJvY2Vzc1V0aWxpdHlTbG93KFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAkJCQkJCQkJCXRydWUsCS8qIGNoZWNrX3JpZ2h0cyAqLwogCQkJCQkJ CQkJdHJ1ZSwJLyogY2hlY2tfbm90X2luX3VzZSAqLwogCQkJCQkJCQkJZmFsc2UsCS8qIHNr aXBfYnVpbGQgKi8KLQkJCQkJCQkJCWZhbHNlKTsgLyogcXVpZXQgKi8KKwkJCQkJCQkJCWZh bHNlKTsJLyogcXVpZXQgKi8KIAogCQkJCQkvKgogCQkJCQkgKiBBZGQgdGhlIENSRUFURSBJ TkRFWCBub2RlIGl0c2VsZiB0byBzdGFzaCByaWdodCBhd2F5OwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L01h a2VmaWxlCmluZGV4IDE5OWVhZTUyNWQuLmQwNGM3NWIzOTggMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv TWFrZWZpbGUKQEAgLTc4LDYgKzc4LDcgQEAgT0JKUyA9IFwKIAlvcmFjbGVfY29tcGF0Lm8g XAogCW9yZGVyZWRzZXRhZ2dzLm8gXAogCXBhcnRpdGlvbmZ1bmNzLm8gXAorCXBlcmlvZC5v IFwKIAlwZ19sb2NhbGUubyBcCiAJcGdfbHNuLm8gXAogCXBnX3VwZ3JhZGVfc3VwcG9ydC5v IFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZXJpb2QuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9wZXJpb2QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi4wZWQ0MzA0ZTE2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3BlcmlvZC5jCkBAIC0wLDAgKzEsNTYgQEAKKy8qLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICoKKyAqIHBlcmlvZC5jCisgKgkgIEZ1bmN0aW9ucyB0byBzdXBwb3J0IHBlcmlv ZHMuCisgKgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIyLCBQb3N0 Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0 IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAq CisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bl cmlvZC5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0 Z3Jlcy5oIgorCisjaW5jbHVkZSAiZXhlY3V0b3IvdHVwdGFibGUuaCIKKyNpbmNsdWRlICJm bWdyLmgiCisjaW5jbHVkZSAibm9kZXMvcHJpbW5vZGVzLmgiCisjaW5jbHVkZSAidXRpbHMv Zm1ncnByb3Rvcy5oIgorI2luY2x1ZGUgInV0aWxzL3BlcmlvZC5oIgorI2luY2x1ZGUgInV0 aWxzL3JhbmdldHlwZXMuaCIKKworRGF0dW0gcGVyaW9kX3RvX3JhbmdlKFR1cGxlVGFibGVT bG90ICpzbG90LCBpbnQgc3RhcnRhdHRubywgaW50IGVuZGF0dG5vLCBPaWQgcmFuZ2V0eXBl KQoreworCURhdHVtIHN0YXJ0dmFsdWU7CisJRGF0dW0gZW5kdmFsdWU7CisJRGF0dW0gcmVz dWx0OworCWJvb2wJc3RhcnRpc251bGw7CisJYm9vbAllbmRpc251bGw7CisJTE9DQUxfRkNJ TkZPKGZjaW5mbywgMik7CisJRm1nckluZm8JZmxpbmZvOworCUZ1bmNFeHByICAgKmY7CisK KwlJbml0RnVuY3Rpb25DYWxsSW5mb0RhdGEoKmZjaW5mbywgJmZsaW5mbywgMiwgSW52YWxp ZE9pZCwgTlVMTCwgTlVMTCk7CisJZiA9IG1ha2VOb2RlKEZ1bmNFeHByKTsKKwlmLT5mdW5j cmVzdWx0dHlwZSA9IHJhbmdldHlwZTsKKwlmbGluZm8uZm5fZXhwciA9IChOb2RlICopIGY7 CisJZmxpbmZvLmZuX2V4dHJhID0gTlVMTDsKKworCS8qIGNvbXB1dGUgb2xkdmFsdWUgKi8K KwlzdGFydHZhbHVlID0gc2xvdF9nZXRhdHRyKHNsb3QsIHN0YXJ0YXR0bm8sICZzdGFydGlz bnVsbCk7CisJZW5kdmFsdWUgPSBzbG90X2dldGF0dHIoc2xvdCwgZW5kYXR0bm8sICZlbmRp c251bGwpOworCisJZmNpbmZvLT5hcmdzWzBdLnZhbHVlID0gc3RhcnR2YWx1ZTsKKwlmY2lu Zm8tPmFyZ3NbMF0uaXNudWxsID0gc3RhcnRpc251bGw7CisJZmNpbmZvLT5hcmdzWzFdLnZh bHVlID0gZW5kdmFsdWU7CisJZmNpbmZvLT5hcmdzWzFdLmlzbnVsbCA9IGVuZGlzbnVsbDsK KworCXJlc3VsdCA9IHJhbmdlX2NvbnN0cnVjdG9yMihmY2luZm8pOworCWlmIChmY2luZm8t PmlzbnVsbCkKKwkJZWxvZyhFUlJPUiwgImZ1bmN0aW9uICV1IHJldHVybmVkIE5VTEwiLCBm bGluZm8uZm5fb2lkKTsKKworCXJldHVybiByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9yaV90cmlnZ2Vycy5jCmluZGV4IGRlYzdiMDg2NDQuLjFhMmI5Y2Y2ODMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCkBAIC0yMzAsNiArMjMwLDcgQEAgc3RhdGlj IGJvb2wgcmlfUGVyZm9ybUNoZWNrKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8s CiAJCQkJCQkJUklfUXVlcnlLZXkgKnFrZXksIFNQSVBsYW5QdHIgcXBsYW4sCiAJCQkJCQkJ UmVsYXRpb24gZmtfcmVsLCBSZWxhdGlvbiBwa19yZWwsCiAJCQkJCQkJVHVwbGVUYWJsZVNs b3QgKm9sZHNsb3QsIFR1cGxlVGFibGVTbG90ICpuZXdzbG90LAorCQkJCQkJCWludCBmb3JQ b3J0aW9uT2ZQYXJhbSwgRGF0dW0gZm9yUG9ydGlvbk9mLAogCQkJCQkJCWJvb2wgZGV0ZWN0 TmV3Um93cywgaW50IGV4cGVjdF9PSyk7CiBzdGF0aWMgdm9pZCByaV9FeHRyYWN0VmFsdWVz KFJlbGF0aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJCQkJIGNvbnN0IFJJ X0NvbnN0cmFpbnRJbmZvICpyaWluZm8sIGJvb2wgcmVsX2lzX3BrLApAQCAtMjQwLDYgKzI0 MSwxMSBAQCBzdGF0aWMgdm9pZCByaV9SZXBvcnRWaW9sYXRpb24oY29uc3QgUklfQ29uc3Ry YWludEluZm8gKnJpaW5mbywKIAkJCQkJCQkgICBpbnQgcXVlcnlubywgYm9vbCBwYXJ0Z29u ZSkgcGdfYXR0cmlidXRlX25vcmV0dXJuKCk7CiBzdGF0aWMgdm9pZCBsb29rdXBUUklPcGVy QW5kUHJvYyhjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQkJCQkJCQkgY2hh ciAqKm9wbmFtZSwgY2hhciAqKmFnZ25hbWUpOworc3RhdGljIGJvb2wgZnBvX3RhcmdldHNf cGtfcmFuZ2UoY29uc3QgRm9yUG9ydGlvbk9mU3RhdGUgKnRnX3RlbXBvcmFsLAorCQkJCQkJ CQkgY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbyk7CitzdGF0aWMgRGF0dW0gcmVz dHJpY3RfY2FzY2FkaW5nX3JhbmdlKGNvbnN0IEZvclBvcnRpb25PZlN0YXRlICp0Z190ZW1w b3JhbCwKKwkJCQkJCQkJCSAgY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKKwkJ CQkJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3QpOwogCiAKIC8qCkBAIC00NTYsNiAr NDYyLDcgQEAgUklfRktleV9jaGVjayhUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEpCiAJcmlfUGVy Zm9ybUNoZWNrKHJpaW5mbywgJnFrZXksIHFwbGFuLAogCQkJCQlma19yZWwsIHBrX3JlbCwK IAkJCQkJTlVMTCwgbmV3c2xvdCwKKwkJCQkJLTEsIDAsCiAJCQkJCXBrX3JlbC0+cmRfcmVs LT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUsCiAJCQkJCVNQSV9PS19T RUxFQ1QpOwogCkBAIC02MjAsNiArNjI3LDcgQEAgcmlfQ2hlY2tfUGtfTWF0Y2goUmVsYXRp b24gcGtfcmVsLCBSZWxhdGlvbiBma19yZWwsCiAJcmVzdWx0ID0gcmlfUGVyZm9ybUNoZWNr KHJpaW5mbywgJnFrZXksIHFwbGFuLAogCQkJCQkJCSBma19yZWwsIHBrX3JlbCwKIAkJCQkJ CQkgb2xkc2xvdCwgTlVMTCwKKwkJCQkJCQkgLTEsIDAsCiAJCQkJCQkJIHRydWUsCS8qIHRy ZWF0IGxpa2UgdXBkYXRlICovCiAJCQkJCQkJIFNQSV9PS19TRUxFQ1QpOwogCkBAIC03MTks NiArNzI3LDggQEAgcmlfcmVzdHJpY3QoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlz X25vX2FjdGlvbikKIAlUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdDsKIAlSSV9RdWVyeUtleSBx a2V5OwogCVNQSVBsYW5QdHIJcXBsYW47CisJaW50CQkJdGFyZ2V0UmFuZ2VQYXJhbSA9IC0x OworCURhdHVtCQl0YXJnZXRSYW5nZSA9IDA7CiAKIAlyaWluZm8gPSByaV9GZXRjaENvbnN0 cmFpbnRJbmZvKHRyaWdkYXRhLT50Z190cmlnZ2VyLAogCQkJCQkJCQkJdHJpZ2RhdGEtPnRn X3JlbGF0aW9uLCB0cnVlKTsKQEAgLTgxNSw5ICs4MjUsMTYgQEAgcmlfcmVzdHJpY3QoVHJp Z2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX25vX2FjdGlvbikKIAkvKgogCSAqIFdlIGhh dmUgYSBwbGFuIG5vdy4gUnVuIGl0IHRvIGNoZWNrIGZvciBleGlzdGluZyByZWZlcmVuY2Vz LgogCSAqLworCWlmICh0cmlnZGF0YS0+dGdfdGVtcG9yYWwpCisJeworCQl0YXJnZXRSYW5n ZVBhcmFtID0gcmlpbmZvLT5ua2V5cyAtIDE7CisJCXRhcmdldFJhbmdlID0gcmVzdHJpY3Rf Y2FzY2FkaW5nX3JhbmdlKHRyaWdkYXRhLT50Z190ZW1wb3JhbCwgcmlpbmZvLCBvbGRzbG90 KTsKKwl9CisKIAlyaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBsYW4sCiAJCQkJ CWZrX3JlbCwgcGtfcmVsLAogCQkJCQlvbGRzbG90LCBOVUxMLAorCQkJCQl0YXJnZXRSYW5n ZVBhcmFtLCB0YXJnZXRSYW5nZSwKIAkJCQkJdHJ1ZSwJCS8qIG11c3QgZGV0ZWN0IG5ldyBy b3dzICovCiAJCQkJCVNQSV9PS19TRUxFQ1QpOwogCkBAIC05MjQsNiArOTQxLDcgQEAgUklf RktleV9jYXNjYWRlX2RlbChQR19GVU5DVElPTl9BUkdTKQogCXJpX1BlcmZvcm1DaGVjayhy aWluZm8sICZxa2V5LCBxcGxhbiwKIAkJCQkJZmtfcmVsLCBwa19yZWwsCiAJCQkJCW9sZHNs b3QsIE5VTEwsCisJCQkJCS0xLCAwLAogCQkJCQl0cnVlLAkJLyogbXVzdCBkZXRlY3QgbmV3 IHJvd3MgKi8KIAkJCQkJU1BJX09LX0RFTEVURSk7CiAKQEAgLTEwNDUsNiArMTA2Myw3IEBA IFJJX0ZLZXlfY2FzY2FkZV91cGQoUEdfRlVOQ1RJT05fQVJHUykKIAlyaV9QZXJmb3JtQ2hl Y2socmlpbmZvLCAmcWtleSwgcXBsYW4sCiAJCQkJCWZrX3JlbCwgcGtfcmVsLAogCQkJCQlv bGRzbG90LCBuZXdzbG90LAorCQkJCQktMSwgMCwKIAkJCQkJdHJ1ZSwJCS8qIG11c3QgZGV0 ZWN0IG5ldyByb3dzICovCiAJCQkJCVNQSV9PS19VUERBVEUpOwogCkBAIC0xMjc3LDYgKzEy OTYsNyBAQCByaV9zZXQoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX3NldF9udWxs LCBpbnQgdGdraW5kKQogCXJpX1BlcmZvcm1DaGVjayhyaWluZm8sICZxa2V5LCBxcGxhbiwK IAkJCQkJZmtfcmVsLCBwa19yZWwsCiAJCQkJCW9sZHNsb3QsIE5VTEwsCisJCQkJCS0xLCAw LAogCQkJCQl0cnVlLAkJLyogbXVzdCBkZXRlY3QgbmV3IHJvd3MgKi8KIAkJCQkJU1BJX09L X1VQREFURSk7CiAKQEAgLTI1NTEsNiArMjU3MSw3IEBAIHJpX1BlcmZvcm1DaGVjayhjb25z dCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQkJCVJJX1F1ZXJ5S2V5ICpxa2V5LCBT UElQbGFuUHRyIHFwbGFuLAogCQkJCVJlbGF0aW9uIGZrX3JlbCwgUmVsYXRpb24gcGtfcmVs LAogCQkJCVR1cGxlVGFibGVTbG90ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xv dCwKKwkJCQlpbnQgZm9yUG9ydGlvbk9mUGFyYW0sIERhdHVtIGZvclBvcnRpb25PZiwKIAkJ CQlib29sIGRldGVjdE5ld1Jvd3MsIGludCBleHBlY3RfT0spCiB7CiAJUmVsYXRpb24JcXVl cnlfcmVsLApAQCAtMjYwNiw2ICsyNjI3LDEyIEBAIHJpX1BlcmZvcm1DaGVjayhjb25zdCBS SV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQlyaV9FeHRyYWN0VmFsdWVzKHNvdXJjZV9y ZWwsIG9sZHNsb3QsIHJpaW5mbywgc291cmNlX2lzX3BrLAogCQkJCQkJIHZhbHMsIG51bGxz KTsKIAl9CisJLyogQWRkIG9uZSBtb3JlIHF1ZXJ5IHBhcmFtIGlmIHdlIGFyZSB1c2luZyBG T1IgUE9SVElPTiBPRiAqLworCWlmIChmb3JQb3J0aW9uT2YpCisJeworCQl2YWxzW2ZvclBv cnRpb25PZlBhcmFtXSA9IGZvclBvcnRpb25PZjsKKwkJbnVsbHNbZm9yUG9ydGlvbk9mUGFy YW1dID0gJyAnOworCX0KIAogCS8qCiAJICogSW4gUkVBRCBDT01NSVRURUQgbW9kZSwgd2Ug anVzdCBuZWVkIHRvIHVzZSBhbiB1cC10by1kYXRlIHJlZ3VsYXIKQEAgLTMzNTAsMyArMzM3 Nyw1MCBAQCBsb29rdXBUUklPcGVyQW5kUHJvYyhjb25zdCBSSV9Db25zdHJhaW50SW5mbyAq cmlpbmZvLCBjaGFyICoqb3BuYW1lLCBjaGFyICoqYWdnbgogCQkJCSBlcnJoaW50KCJZb3Ug bXVzdCB1c2UgYW4gb3BlcmF0b3IgY2xhc3Mgd2l0aCBhIHJlZmVyZW5jZWRhZ2cgc3VwcG9y dCBmdW5jdGlvbi4iKSkpOwogCSphZ2duYW1lID0gZ2V0X2Z1bmNfbmFtZV9hbmRfbmFtZXNw YWNlKG9pZCk7CiB9CisKKy8qCisgKiBmcG9fdGFyZ2V0c19wa19yYW5nZQorICoKKyAqIFJl dHVybnMgdHJ1ZSBpZmYgdGhlIHByaW1hcnkga2V5IHJlZmVyZW5jZWQgYnkgcmlpbmZvIGlu Y2x1ZGVzIHRoZSByYW5nZQorICogY29sdW1uIHRhcmdldGVkIGJ5IHRoZSBGT1IgUE9SVElP TiBPRiBjbGF1c2UgKGFjY29yZGluZyB0byB0Z190ZW1wb3JhbCkuCisgKi8KK3N0YXRpYyBi b29sCitmcG9fdGFyZ2V0c19wa19yYW5nZShjb25zdCBGb3JQb3J0aW9uT2ZTdGF0ZSAqdGdf dGVtcG9yYWwsIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8pCit7CisJaWYgKHRn X3RlbXBvcmFsID09IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiByaWluZm8t PnBrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdID09IHRnX3RlbXBvcmFsLT5mcF9yYW5n ZUF0dG5vOworfQorCisvKgorICogcmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlIC0KKyAqCisg KiBSZXR1cm5zIGEgRGF0dW0gb2YgUmFuZ2VUeXBlUCBob2xkaW5nIHRoZSBhcHByb3ByaWF0 ZSB0aW1lc3BhbgorICogdG8gdGFyZ2V0IGNoaWxkIHJlY29yZHMgd2hlbiB3ZSBDQVNDQURF L1NFVCBOVUxML1NFVCBERUZBVUxULgorICoKKyAqIEluIGEgbm9ybWFsIFVQREFURS9ERUxF VEUgdGhpcyBzaG91bGQgYmUgdGhlIHBhcmVudCdzIG93biB2YWxpZCB0aW1lLAorICogYnV0 IGlmIHRoZXJlIHdhcyBhIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSwgdGhlbiB3ZSBzaG91bGQg dXNlIHRoYXQgdG8KKyAqIHRyaW0gZG93biB0aGUgcGFyZW50J3Mgc3BhbiBmdXJ0aGVyLgor ICovCitzdGF0aWMgRGF0dW0KK3Jlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZShjb25zdCBGb3JQ b3J0aW9uT2ZTdGF0ZSAqdGdfdGVtcG9yYWwsIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpy aWluZm8sIFR1cGxlVGFibGVTbG90ICpvbGRzbG90KQoreworCURhdHVtCXBrUmVjb3JkUmFu Z2U7CisJYm9vbAlpc251bGw7CisKKwlwa1JlY29yZFJhbmdlID0gc2xvdF9nZXRhdHRyKG9s ZHNsb3QsIHJpaW5mby0+cGtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0sICZpc251bGwp OworCWlmIChpc251bGwpCisJCWVsb2coRVJST1IsICJhcHBsaWNhdGlvbiB0aW1lIHNob3Vs ZCBub3QgYmUgbnVsbCIpOworCisJaWYgKGZwb190YXJnZXRzX3BrX3JhbmdlKHRnX3RlbXBv cmFsLCByaWluZm8pKQorCXsKKwkJUmFuZ2VUeXBlICpyMSA9IERhdHVtR2V0UmFuZ2VUeXBl UChwa1JlY29yZFJhbmdlKTsKKwkJUmFuZ2VUeXBlICpyMiA9IERhdHVtR2V0UmFuZ2VUeXBl UCh0Z190ZW1wb3JhbC0+ZnBfdGFyZ2V0UmFuZ2UpOworCQlPaWQgcm5ndHlwaWQgPSBSYW5n ZVR5cGVHZXRPaWQocjEpOworCQlUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUgPSBsb29rdXBf dHlwZV9jYWNoZShybmd0eXBpZCwgVFlQRUNBQ0hFX1JBTkdFX0lORk8pOworCQlyZXR1cm4g UmFuZ2VUeXBlUEdldERhdHVtKHJhbmdlX2ludGVyc2VjdF9pbnRlcm5hbCh0eXBjYWNoZSwg cjEsIHIyKSk7CisJfQorCWVsc2UKKwkJcmV0dXJuIHBrUmVjb3JkUmFuZ2U7Cit9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCmluZGV4IDEyYWVkZTVkYTkuLmI4ODEzMDQy ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCkBAIC0yMjAxLDYgKzIy MDEsNTkgQEAgZ2V0X3R5cGlzZGVmaW5lZChPaWQgdHlwaWQpCiAJCXJldHVybiBmYWxzZTsK IH0KIAorLyoKKyAqIGdldF90eXBuYW1lCisgKgorICoJICBSZXR1cm5zIHRoZSBuYW1lIG9m IGEgZ2l2ZW4gdHlwZQorICoKKyAqIFJldHVybnMgYSBwYWxsb2MnZCBjb3B5IG9mIHRoZSBz dHJpbmcsIG9yIE5VTEwgaWYgbm8gc3VjaCB0eXBlLgorICovCitjaGFyICoKK2dldF90eXBu YW1lKE9pZCB0eXBpZCkKK3sKKwlIZWFwVHVwbGUgICB0cDsKKworCXRwID0gU2VhcmNoU3lz Q2FjaGUxKFRZUEVPSUQsIE9iamVjdElkR2V0RGF0dW0odHlwaWQpKTsKKwlpZiAoSGVhcFR1 cGxlSXNWYWxpZCh0cCkpCisJeworCQlGb3JtX3BnX3R5cGUgdHlwdHVwID0gKEZvcm1fcGdf dHlwZSkgR0VUU1RSVUNUKHRwKTsKKwkJY2hhcgkgICAqcmVzdWx0OworCisJCXJlc3VsdCA9 IHBzdHJkdXAoTmFtZVN0cih0eXB0dXAtPnR5cG5hbWUpKTsKKwkJUmVsZWFzZVN5c0NhY2hl KHRwKTsKKwkJcmV0dXJuIHJlc3VsdDsKKwl9CisJZWxzZQorCQlyZXR1cm4gTlVMTDsKK30K KworLyoKKyAqIGdldF90eXBuYW1lX2FuZF9uYW1lc3BhY2UKKyAqCisgKgkgIFJldHVybnMg dGhlIG5hbWUgYW5kIG5hbWVzcGFjZSBvZiBhIGdpdmVuIHR5cGUKKyAqCisgKiBSZXR1cm5z IHRydWUgaWYgb25lIGZvdW5kLCBvciBmYWxzZSBpZiBub3QuCisgKi8KK2Jvb2wKK2dldF90 eXBuYW1lX2FuZF9uYW1lc3BhY2UoT2lkIHR5cGlkLCBjaGFyICoqdHlwbmFtZSwgY2hhciAq KnR5cG5hbWVzcGFjZSkKK3sKKwlIZWFwVHVwbGUJdHA7CisKKwl0cCA9IFNlYXJjaFN5c0Nh Y2hlMShUWVBFT0lELCBPYmplY3RJZEdldERhdHVtKHR5cGlkKSk7CisJaWYgKEhlYXBUdXBs ZUlzVmFsaWQodHApKQorCXsKKwkJRm9ybV9wZ190eXBlIHR5cHR1cCA9IChGb3JtX3BnX3R5 cGUpIEdFVFNUUlVDVCh0cCk7CisKKwkJKnR5cG5hbWUgPSBwc3RyZHVwKE5hbWVTdHIodHlw dHVwLT50eXBuYW1lKSk7CisJCSp0eXBuYW1lc3BhY2UgPSBnZXRfbmFtZXNwYWNlX25hbWUo dHlwdHVwLT50eXBuYW1lc3BhY2UpOworCQlSZWxlYXNlU3lzQ2FjaGUodHApOworCQkvKiAq dHlwbmFtZXNwYWNlIGlzIE5VTEwgaWYgaXQgd2Fzbid0IGZvdW5kOiAqLworCQlyZXR1cm4g KnR5cG5hbWVzcGFjZTsKKwl9CisJZWxzZQorCQlyZXR1cm4gZmFsc2U7Cit9CisKIC8qCiAg KiBnZXRfdHlwbGVuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3N0cmF0 bnVtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3RyYXRudW0uaAppbmRleCA3ODQ1ZDU0MDEy Li5kM2ZkZjhkOGU3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3RyYXRudW0u aAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3RyYXRudW0uaApAQCAtNzksOCArNzksMTAg QEAgdHlwZWRlZiB1aW50MTYgU3RyYXRlZ3lOdW1iZXI7CiAjZGVmaW5lIFJUUHJlZml4U3Ry YXRlZ3lOdW1iZXIJCQkyOAkvKiBmb3IgdGV4dCBeQCAqLwogI2RlZmluZSBSVE9sZEJlbG93 U3RyYXRlZ3lOdW1iZXIJCTI5CS8qIGZvciBvbGQgc3BlbGxpbmcgb2YgPDx8ICovCiAjZGVm aW5lIFJUT2xkQWJvdmVTdHJhdGVneU51bWJlcgkJMzAJLyogZm9yIG9sZCBzcGVsbGluZyBv ZiB8Pj4gKi8KKyNkZWZpbmUgUlRJbnRlcnNlY3RTdHJhdGVneU51bWJlcgkJMzEJLyogZm9y ICogKi8KKyNkZWZpbmUgUlRXaXRob3V0UG9ydGlvblN0cmF0ZWd5TnVtYmVyCTMyCS8qIGZv ciBALSAqLwogCi0jZGVmaW5lIFJUTWF4U3RyYXRlZ3lOdW1iZXIJCQkJMzAKKyNkZWZpbmUg UlRNYXhTdHJhdGVneU51bWJlcgkJCQkzMgogCiAKICNlbmRpZgkJCQkJCQkvKiBTVFJBVE5V TV9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Ftb3AuZGF0IGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbW9wLmRhdAppbmRleCBjNGQ2YWRjZDNlLi5iYWFm NThmM2UxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Ftb3AuZGF0Cisr KyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1vcC5kYXQKQEAgLTExMDgsNiArMTEwOCw5 IEBACiB7IGFtb3BmYW1pbHkgPT4gJ2dpc3QvYm94X29wcycsIGFtb3BsZWZ0dHlwZSA9PiAn Ym94JywgYW1vcHJpZ2h0dHlwZSA9PiAncG9pbnQnLAogICBhbW9wc3RyYXRlZ3kgPT4gJzE1 JywgYW1vcHB1cnBvc2UgPT4gJ28nLCBhbW9wb3ByID0+ICc8LT4oYm94LHBvaW50KScsCiAg IGFtb3BtZXRob2QgPT4gJ2dpc3QnLCBhbW9wc29ydGZhbWlseSA9PiAnYnRyZWUvZmxvYXRf b3BzJyB9LAoreyBhbW9wZmFtaWx5ID0+ICdnaXN0L2JveF9vcHMnLCBhbW9wbGVmdHR5cGUg PT4gJ2JveCcsIGFtb3ByaWdodHR5cGUgPT4gJ2JveCcsCisgIGFtb3BzdHJhdGVneSA9PiAn MzEnLCBhbW9wcHVycG9zZSA9PiAncCcsIGFtb3BvcHIgPT4gJyMoYm94LGJveCknLAorICBh bW9wbWV0aG9kID0+ICdnaXN0JyB9LAogCiAjIGdpc3QgcG9pbnRfb3BzCiB7IGFtb3BmYW1p bHkgPT4gJ2dpc3QvcG9pbnRfb3BzJywgYW1vcGxlZnR0eXBlID0+ICdwb2ludCcsCkBAIC0x Mzk3LDYgKzE0MDAsMTIgQEAKIHsgYW1vcGZhbWlseSA9PiAnZ2lzdC9yYW5nZV9vcHMnLCBh bW9wbGVmdHR5cGUgPT4gJ2FueXJhbmdlJywKICAgYW1vcHJpZ2h0dHlwZSA9PiAnYW55cmFu Z2UnLCBhbW9wc3RyYXRlZ3kgPT4gJzE4JywKICAgYW1vcG9wciA9PiAnPShhbnlyYW5nZSxh bnlyYW5nZSknLCBhbW9wbWV0aG9kID0+ICdnaXN0JyB9LAoreyBhbW9wZmFtaWx5ID0+ICdn aXN0L3JhbmdlX29wcycsIGFtb3BsZWZ0dHlwZSA9PiAnYW55cmFuZ2UnLAorICBhbW9wcmln aHR0eXBlID0+ICdhbnlyYW5nZScsIGFtb3BzdHJhdGVneSA9PiAnMzEnLCBhbW9wcHVycG9z ZSA9PiAncCcsCisgIGFtb3BvcHIgPT4gJyooYW55cmFuZ2UsYW55cmFuZ2UpJywgYW1vcG1l dGhvZCA9PiAnZ2lzdCcgfSwKK3sgYW1vcGZhbWlseSA9PiAnZ2lzdC9yYW5nZV9vcHMnLCBh bW9wbGVmdHR5cGUgPT4gJ2FueXJhbmdlJywKKyAgYW1vcHJpZ2h0dHlwZSA9PiAnYW55cmFu Z2UnLCBhbW9wc3RyYXRlZ3kgPT4gJzMyJywgYW1vcHB1cnBvc2UgPT4gJ3AnLAorICBhbW9w b3ByID0+ICdALShhbnlyYW5nZSxhbnlyYW5nZSknLCBhbW9wbWV0aG9kID0+ICdnaXN0JyB9 LAogCiAjIEdpU1QgbXVsdGlyYW5nZV9vcHMKIHsgYW1vcGZhbWlseSA9PiAnZ2lzdC9tdWx0 aXJhbmdlX29wcycsIGFtb3BsZWZ0dHlwZSA9PiAnYW55bXVsdGlyYW5nZScsCkBAIC0xNDUz LDYgKzE0NjIsMTIgQEAKIHsgYW1vcGZhbWlseSA9PiAnZ2lzdC9tdWx0aXJhbmdlX29wcycs IGFtb3BsZWZ0dHlwZSA9PiAnYW55bXVsdGlyYW5nZScsCiAgIGFtb3ByaWdodHR5cGUgPT4g J2FueW11bHRpcmFuZ2UnLCBhbW9wc3RyYXRlZ3kgPT4gJzE4JywKICAgYW1vcG9wciA9PiAn PShhbnltdWx0aXJhbmdlLGFueW11bHRpcmFuZ2UpJywgYW1vcG1ldGhvZCA9PiAnZ2lzdCcg fSwKK3sgYW1vcGZhbWlseSA9PiAnZ2lzdC9tdWx0aXJhbmdlX29wcycsIGFtb3BsZWZ0dHlw ZSA9PiAnYW55bXVsdGlyYW5nZScsCisgIGFtb3ByaWdodHR5cGUgPT4gJ2FueW11bHRpcmFu Z2UnLCBhbW9wc3RyYXRlZ3kgPT4gJzMxJywgYW1vcHB1cnBvc2UgPT4gJ3AnLAorICBhbW9w b3ByID0+ICcqKGFueW11bHRpcmFuZ2UsYW55bXVsdGlyYW5nZSknLCBhbW9wbWV0aG9kID0+ ICdnaXN0JyB9LAoreyBhbW9wZmFtaWx5ID0+ICdnaXN0L211bHRpcmFuZ2Vfb3BzJywgYW1v cGxlZnR0eXBlID0+ICdhbnltdWx0aXJhbmdlJywKKyAgYW1vcHJpZ2h0dHlwZSA9PiAnYW55 bXVsdGlyYW5nZScsIGFtb3BzdHJhdGVneSA9PiAnMzInLCBhbW9wcHVycG9zZSA9PiAncCcs CisgIGFtb3BvcHIgPT4gJ0AtKGFueW11bHRpcmFuZ2UsYW55bXVsdGlyYW5nZSknLCBhbW9w bWV0aG9kID0+ICdnaXN0JyB9LAogCiAjIGJ0cmVlIG11bHRpcmFuZ2Vfb3BzCiB7IGFtb3Bm YW1pbHkgPT4gJ2J0cmVlL211bHRpcmFuZ2Vfb3BzJywgYW1vcGxlZnR0eXBlID0+ICdhbnlt dWx0aXJhbmdlJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1vcC5o IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbW9wLmgKaW5kZXggYzliYjdiNDc4Ny4uZjhi OTRhZjZmZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbW9wLmgKKysr IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbW9wLmgKQEAgLTk2LDYgKzk2LDcgQEAgREVD TEFSRV9VTklRVUVfSU5ERVhfUEtFWShwZ19hbW9wX29pZF9pbmRleCwgMjc1NiwgQWNjZXNz TWV0aG9kT3BlcmF0b3JPaWRJbmRleEkKIC8qIGFsbG93ZWQgdmFsdWVzIG9mIGFtb3BwdXJw b3NlOiAqLwogI2RlZmluZSBBTU9QX1NFQVJDSAkJJ3MnCQkvKiBvcGVyYXRvciBpcyBmb3Ig c2VhcmNoICovCiAjZGVmaW5lIEFNT1BfT1JERVIJCSdvJwkJLyogb3BlcmF0b3IgaXMgZm9y IG9yZGVyaW5nICovCisjZGVmaW5lIEFNT1BfUE9SVElPTgkncCcJCS8qIG9wZXJhdG9yIGlz IGZvciBGT1IgUE9SVElPTiBPRiAqLwogCiAjZW5kaWYJCQkJCQkJLyogRVhQT1NFX1RPX0NM SUVOVF9DT0RFICovCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdn ZXIuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaAppbmRleCA0MzBlM2NhN2Rk Li5iM2Q5MGRlYWE3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2Vy LmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oCkBAIC00MSw2ICs0MSw3 IEBAIHR5cGVkZWYgc3RydWN0IFRyaWdnZXJEYXRhCiAJVHVwbGVzdG9yZXN0YXRlICp0Z19v bGR0YWJsZTsKIAlUdXBsZXN0b3Jlc3RhdGUgKnRnX25ld3RhYmxlOwogCWNvbnN0IEJpdG1h cHNldCAqdGdfdXBkYXRlZGNvbHM7CisJRm9yUG9ydGlvbk9mU3RhdGUgKnRnX3RlbXBvcmFs OwogfSBUcmlnZ2VyRGF0YTsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVz L2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggNWQ3 ZjE3ZGVlMC4uYjk0MDJkMjlkNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTQxLDEy ICs0MSwxNCBAQAogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAj aW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxzL3F1ZXJ5ZW52aXJv bm1lbnQuaCIKKyNpbmNsdWRlICJ1dGlscy9yYW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRp bHMvcmVsdHJpZ2dlci5oIgogI2luY2x1ZGUgInV0aWxzL3NoYXJlZHR1cGxlc3RvcmUuaCIK ICNpbmNsdWRlICJ1dGlscy9zbmFwc2hvdC5oIgogI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBw b3J0LmgiCiAjaW5jbHVkZSAidXRpbHMvdHVwbGVzb3J0LmgiCiAjaW5jbHVkZSAidXRpbHMv dHVwbGVzdG9yZS5oIgorI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCiAKIHN0cnVjdCBQ bGFuU3RhdGU7CQkJCS8qIGZvcndhcmQgcmVmZXJlbmNlcyBpbiB0aGlzIGZpbGUgKi8KIHN0 cnVjdCBQYXJhbGxlbEhhc2hKb2luU3RhdGU7CkBAIC00MjEsNiArNDIzLDI3IEBAIHR5cGVk ZWYgc3RydWN0IE1lcmdlQWN0aW9uU3RhdGUKIAlFeHByU3RhdGUgICptYXNfd2hlbnF1YWw7 CS8qIFdIRU4gW05PVF0gTUFUQ0hFRCBBTkQgY29uZGl0aW9ucyAqLwogfSBNZXJnZUFjdGlv blN0YXRlOwogCisvKgorICogRm9yUG9ydGlvbk9mU3RhdGUKKyAqCisgKiBFeGVjdXRvciBz dGF0ZSBvZiBhIEZPUiBQT1JUSU9OIE9GIG9wZXJhdGlvbi4KKyAqLwordHlwZWRlZiBzdHJ1 Y3QgRm9yUG9ydGlvbk9mU3RhdGUKK3sKKwlOb2RlVGFnCQl0eXBlOworCisJY2hhciAgICpm cF9yYW5nZU5hbWU7CQkvKiB0aGUgY29sdW1uL1BFUklPRCBuYW1lZCBpbiBGT1IgUE9SVElP TiBPRiAqLworCU9pZAkJZnBfcmFuZ2VUeXBlOwkJLyogdGhlIHR5cGUgb2YgdGhlIEZPUiBQ T1JUSU9OIE9GIGV4cHJlc3Npb24gKi8KKwlib29sCWZwX2hhc1BlcmlvZDsJCS8qIHRydWUg aWZmIHRoaXMgaXMgYSBQRVJJT0Qgbm90IGEgcmFuZ2UgKi8KKwlpbnQJCWZwX3JhbmdlQXR0 bm87CQkvKiB0aGUgYXR0bm8gb2YgdGhlIHJhbmdlIGNvbHVtbiAob3IgMCBmb3IgYSBQRVJJ T0QpICovCisJaW50CQlmcF9wZXJpb2RTdGFydEF0dG5vOwkvKiB0aGUgYXR0bm8gb2YgdGhl IFBFUklPRCBzdGFydCBjb2x1bW4gKG9yIDAgZm9yIGEgcmFuZ2UpICovCisJaW50CQlmcF9w ZXJpb2RFbmRBdHRubzsJCS8qIHRoZSBhdHRubyBvZiB0aGUgUEVSSU9EIGVuZCBjb2x1bW4g KG9yIDAgZm9yIGEgcmFuZ2UpICovCisJRGF0dW0JZnBfdGFyZ2V0UmFuZ2U7CQkvKiB0aGUg cmFuZ2UgZnJvbSBGT1IgUE9SVElPTiBPRiAqLworCVR5cGVDYWNoZUVudHJ5ICpmcF9sZWZ0 b3ZlcnN0eXBjYWNoZTsJLyogdHlwZSBjYWNoZSBlbnRyeSBvZiB0aGUgcmFuZ2UgKi8KKwlU dXBsZVRhYmxlU2xvdCAqZnBfRXhpc3Rpbmc7CQkvKiBzbG90IHRvIHN0b3JlIGV4aXN0aW5n IHRhcmdldCB0dXBsZSBpbiAqLworCVR1cGxlVGFibGVTbG90ICpmcF9MZWZ0b3ZlcjsJCS8q IHNsb3QgdG8gc3RvcmUgbGVmdG92ZXIgKi8KK30gRm9yUG9ydGlvbk9mU3RhdGU7CisKIC8q CiAgKiBSZXN1bHRSZWxJbmZvCiAgKgpAQCAtNTQxLDYgKzU2NCw5IEBAIHR5cGVkZWYgc3Ry dWN0IFJlc3VsdFJlbEluZm8KIAlMaXN0CSAgICpyaV9tYXRjaGVkTWVyZ2VBY3Rpb247CiAJ TGlzdAkgICAqcmlfbm90TWF0Y2hlZE1lcmdlQWN0aW9uOwogCisJLyogRk9SIFBPUlRJT04g T0YgZXZhbHVhdGlvbiBzdGF0ZSAqLworCUZvclBvcnRpb25PZlN0YXRlICpyaV9mb3JQb3J0 aW9uT2Y7CisKIAkvKiBwYXJ0aXRpb24gY2hlY2sgZXhwcmVzc2lvbiBzdGF0ZSAoTlVMTCBp ZiBub3Qgc2V0IHVwIHlldCkgKi8KIAlFeHByU3RhdGUgICpyaV9QYXJ0aXRpb25DaGVja0V4 cHI7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3Ny Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCAwM2M1ZTcwN2I5Li5kMTMwNDQ1 ODAwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIv c3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0xNDEsNiArMTQxLDkgQEAgdHlw ZWRlZiBzdHJ1Y3QgUXVlcnkKIAkgKi8KIAlpbnQJCQlyZXN1bHRSZWxhdGlvbiBwZ19ub2Rl X2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiAKKwkvKiBGT1IgUE9SVElPTiBPRiBjbGF1 c2UgZm9yIFVQREFURS9ERUxFVEUgKi8KKwlGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9u T2Y7CisKIAkvKiBoYXMgYWdncmVnYXRlcyBpbiB0bGlzdCBvciBoYXZpbmdRdWFsICovCiAJ Ym9vbAkJaGFzQWdncyBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiAJLyog aGFzIHdpbmRvdyBmdW5jdGlvbnMgaW4gdGxpc3QgKi8KQEAgLTE1MzAsNiArMTUzMywyMSBA QCB0eXBlZGVmIHN0cnVjdCBSb3dNYXJrQ2xhdXNlCiAJYm9vbAkJcHVzaGVkRG93bjsJCS8q IHB1c2hlZCBkb3duIGZyb20gaGlnaGVyIHF1ZXJ5IGxldmVsPyAqLwogfSBSb3dNYXJrQ2xh dXNlOwogCisvKgorICogRm9yUG9ydGlvbk9mQ2xhdXNlCisgKgkJcmVwcmVzZW50YXRpb24g b2YgRk9SIFBPUlRJT04gT0YgPHBlcmlvZC1uYW1lPiBGUk9NIDx0cz4gVE8gPHRlPgorICoJ CW9yIEZPUiBQT1JUSU9OIE9GIDxwZXJpb2QtbmFtZT4gKDx0YXJnZXQ+KQorICovCit0eXBl ZGVmIHN0cnVjdCBGb3JQb3J0aW9uT2ZDbGF1c2UKK3sKKwlOb2RlVGFnCQl0eXBlOworCWNo YXIJICAgKnJhbmdlX25hbWU7CisJaW50CQkJcmFuZ2VfbmFtZV9sb2NhdGlvbjsKKwlOb2Rl CSAgICp0YXJnZXQ7CisJTm9kZQkgICAqdGFyZ2V0X3N0YXJ0OworCU5vZGUJICAgKnRhcmdl dF9lbmQ7Cit9IEZvclBvcnRpb25PZkNsYXVzZTsKKwogLyoKICAqIFdpdGhDbGF1c2UgLQog ICoJICAgcmVwcmVzZW50YXRpb24gb2YgV0lUSCBjbGF1c2UKQEAgLTE4OTMsMTIgKzE5MTEs MTMgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5zZXJ0U3RtdAogICovCiB0eXBlZGVmIHN0cnVjdCBE ZWxldGVTdG10CiB7Ci0JTm9kZVRhZwkJdHlwZTsKLQlSYW5nZVZhciAgICpyZWxhdGlvbjsJ CS8qIHJlbGF0aW9uIHRvIGRlbGV0ZSBmcm9tICovCi0JTGlzdAkgICAqdXNpbmdDbGF1c2U7 CS8qIG9wdGlvbmFsIHVzaW5nIGNsYXVzZSBmb3IgbW9yZSB0YWJsZXMgKi8KLQlOb2RlCSAg ICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlvbnMgKi8KLQlMaXN0CSAgICpyZXR1cm5p bmdMaXN0OwkvKiBsaXN0IG9mIGV4cHJlc3Npb25zIHRvIHJldHVybiAqLwotCVdpdGhDbGF1 c2UgKndpdGhDbGF1c2U7CQkvKiBXSVRIIGNsYXVzZSAqLworCU5vZGVUYWcJCQkJdHlwZTsK KwlSYW5nZVZhcgkJICAgKnJlbGF0aW9uOwkJLyogcmVsYXRpb24gdG8gZGVsZXRlIGZyb20g Ki8KKwlGb3JQb3J0aW9uT2ZDbGF1c2UgKmZvclBvcnRpb25PZjsJLyogRk9SIFBPUlRJT04g T0YgY2xhdXNlICovCisJTGlzdAkJCSAgICp1c2luZ0NsYXVzZTsJLyogb3B0aW9uYWwgdXNp bmcgY2xhdXNlIGZvciBtb3JlIHRhYmxlcyAqLworCU5vZGUJCQkgICAqd2hlcmVDbGF1c2U7 CS8qIHF1YWxpZmljYXRpb25zICovCisJTGlzdAkJCSAgICpyZXR1cm5pbmdMaXN0OwkvKiBs aXN0IG9mIGV4cHJlc3Npb25zIHRvIHJldHVybiAqLworCVdpdGhDbGF1c2UJCSAgICp3aXRo Q2xhdXNlOwkJLyogV0lUSCBjbGF1c2UgKi8KIH0gRGVsZXRlU3RtdDsKIAogLyogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQpAQCAtMTkwNywxMyArMTkyNiwxNCBAQCB0eXBlZGVmIHN0cnVj dCBEZWxldGVTdG10CiAgKi8KIHR5cGVkZWYgc3RydWN0IFVwZGF0ZVN0bXQKIHsKLQlOb2Rl VGFnCQl0eXBlOwotCVJhbmdlVmFyICAgKnJlbGF0aW9uOwkJLyogcmVsYXRpb24gdG8gdXBk YXRlICovCi0JTGlzdAkgICAqdGFyZ2V0TGlzdDsJCS8qIHRoZSB0YXJnZXQgbGlzdCAob2Yg UmVzVGFyZ2V0KSAqLwotCU5vZGUJICAgKndoZXJlQ2xhdXNlOwkvKiBxdWFsaWZpY2F0aW9u cyAqLwotCUxpc3QJICAgKmZyb21DbGF1c2U7CQkvKiBvcHRpb25hbCBmcm9tIGNsYXVzZSBm b3IgbW9yZSB0YWJsZXMgKi8KLQlMaXN0CSAgICpyZXR1cm5pbmdMaXN0OwkvKiBsaXN0IG9m IGV4cHJlc3Npb25zIHRvIHJldHVybiAqLwotCVdpdGhDbGF1c2UgKndpdGhDbGF1c2U7CQkv KiBXSVRIIGNsYXVzZSAqLworCU5vZGVUYWcJCQkJdHlwZTsKKwlSYW5nZVZhcgkJICAgKnJl bGF0aW9uOwkJLyogcmVsYXRpb24gdG8gdXBkYXRlICovCisJRm9yUG9ydGlvbk9mQ2xhdXNl ICpmb3JQb3J0aW9uT2Y7CS8qIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSAqLworCUxpc3QJCQkg ICAqdGFyZ2V0TGlzdDsJCS8qIHRoZSB0YXJnZXQgbGlzdCAob2YgUmVzVGFyZ2V0KSAqLwor CU5vZGUJCQkgICAqd2hlcmVDbGF1c2U7CS8qIHF1YWxpZmljYXRpb25zICovCisJTGlzdAkJ CSAgICpmcm9tQ2xhdXNlOwkJLyogb3B0aW9uYWwgZnJvbSBjbGF1c2UgZm9yIG1vcmUgdGFi bGVzICovCisJTGlzdAkJCSAgICpyZXR1cm5pbmdMaXN0OwkvKiBsaXN0IG9mIGV4cHJlc3Np b25zIHRvIHJldHVybiAqLworCVdpdGhDbGF1c2UJCSAgICp3aXRoQ2xhdXNlOwkJLyogV0lU SCBjbGF1c2UgKi8KIH0gVXBkYXRlU3RtdDsKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggYi9zcmMvaW5j bHVkZS9ub2Rlcy9wYXRobm9kZXMuaAppbmRleCBlZDg1ZGM3NDE0Li41NGFjYWRjOGZjIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAorKysgYi9zcmMvaW5j bHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAtMjM1Miw2ICsyMzUyLDcgQEAgdHlwZWRlZiBz dHJ1Y3QgTW9kaWZ5VGFibGVQYXRoCiAJTGlzdAkgICAqcmV0dXJuaW5nTGlzdHM7IC8qIHBl ci10YXJnZXQtdGFibGUgUkVUVVJOSU5HIHRsaXN0cyAqLwogCUxpc3QJICAgKnJvd01hcmtz OwkJLyogUGxhblJvd01hcmtzIChub24tbG9ja2luZyBvbmx5KSAqLwogCU9uQ29uZmxpY3RF eHByICpvbmNvbmZsaWN0OyAvKiBPTiBDT05GTElDVCBjbGF1c2UsIG9yIE5VTEwgKi8KKwlG b3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2Y7CS8qIEZPUiBQT1JUSU9OIE9GIGNsYXVz ZSBmb3IgVVBEQVRFL0RFTEVURSAqLwogCWludAkJCWVwcVBhcmFtOwkJLyogSUQgb2YgUGFy YW0gZm9yIEV2YWxQbGFuUXVhbCByZS1ldmFsICovCiAJTGlzdAkgICAqbWVyZ2VBY3Rpb25M aXN0czsJLyogcGVyLXRhcmdldC10YWJsZSBsaXN0cyBvZiBhY3Rpb25zIGZvcgogCQkJCQkJ CQkJICogTUVSR0UgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rl cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggZDQwYWY4ZTU5Zi4u ZWQ4ZmY3MzE4ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTI0Myw2ICsyNDMsNyBA QCB0eXBlZGVmIHN0cnVjdCBNb2RpZnlUYWJsZQogCUxpc3QJICAgKnJvd01hcmtzOwkJLyog UGxhblJvd01hcmtzIChub24tbG9ja2luZyBvbmx5KSAqLwogCWludAkJCWVwcVBhcmFtOwkJ LyogSUQgb2YgUGFyYW0gZm9yIEV2YWxQbGFuUXVhbCByZS1ldmFsICovCiAJT25Db25mbGlj dEFjdGlvbiBvbkNvbmZsaWN0QWN0aW9uOwkvKiBPTiBDT05GTElDVCBhY3Rpb24gKi8KKwlO b2RlCSAgICpmb3JQb3J0aW9uT2Y7CS8qIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSBmb3IgVVBE QVRFL0RFTEVURSAqLwogCUxpc3QJICAgKmFyYml0ZXJJbmRleGVzOyAvKiBMaXN0IG9mIE9O IENPTkZMSUNUIGFyYml0ZXIgaW5kZXggT0lEcyAgKi8KIAlMaXN0CSAgICpvbkNvbmZsaWN0 U2V0OwkvKiBJTlNFUlQgT04gQ09ORkxJQ1QgRE8gVVBEQVRFIHRhcmdldGxpc3QgKi8KIAlM aXN0CSAgICpvbkNvbmZsaWN0Q29sczsgLyogdGFyZ2V0IGNvbHVtbiBudW1iZXJzIGZvciBv bkNvbmZsaWN0U2V0ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9k ZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCmluZGV4IGJiOTMwYWZiNTIu LmM2MThlM2Q1NTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5o CisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCkBAIC0yMDY4LDQgKzIwNjgs MzAgQEAgdHlwZWRlZiBzdHJ1Y3QgT25Db25mbGljdEV4cHIKIAlMaXN0CSAgICpleGNsUmVs VGxpc3Q7CS8qIHRsaXN0IG9mIHRoZSBFWENMVURFRCBwc2V1ZG8gcmVsYXRpb24gKi8KIH0g T25Db25mbGljdEV4cHI7CiAKKy8qLS0tLS0tLS0tLQorICogRm9yUG9ydGlvbk9mRXhwciAt IHJlcHJlc2VudHMgYSBGT1IgUE9SVElPTiBPRiAuLi4gZXhwcmVzc2lvbgorICoKKyAqIFdl IHNldCB1cCBhbiBleHByZXNzaW9uIHRvIG1ha2UgYSByYW5nZSBmcm9tIHRoZSBGUk9NL1RP IGJvdW5kcywKKyAqIHNvIHRoYXQgd2UgY2FuIHVzZSByYW5nZSBvcGVyYXRvcnMgd2l0aCBp dC4KKyAqCisgKiBUaGVuIHdlIHNldCB1cCBhbiBvdmVybGFwcyBleHByZXNzaW9uIGJldHdl ZW4gdGhhdCBhbmQgdGhlIHJhbmdlIGNvbHVtbiwKKyAqIHNvIHRoYXQgd2UgY2FuIGZpbmQg dGhlIHJvd3Mgd2UgbmVlZCB0byB1cGRhdGUvZGVsZXRlLgorICoKKyAqIEluIHRoZSBleGVj dXRvciB3ZSdsbCBhbHNvIGJ1aWxkIGFuIGludGVyc2VjdCBleHByZXNzaW9uIGJldHdlZW4g dGhlCisgKiB0YXJnZXRlZCByYW5nZSBhbmQgdGhlIHJhbmdlIGNvbHVtbiwgc28gdGhhdCB3 ZSBjYW4gdXBkYXRlIHRoZSBzdGFydC9lbmQKKyAqIGJvdW5kcyBvZiB0aGUgVVBEQVRFJ2Qg cmVjb3JkLgorICotLS0tLS0tLS0tCisgKi8KK3R5cGVkZWYgc3RydWN0IEZvclBvcnRpb25P ZkV4cHIKK3sKKwlOb2RlVGFnCQl0eXBlOworCVZhcgkJICAgKnJhbmdlVmFyOwkJCS8qIFJh bmdlIGNvbHVtbiAqLworCWNoYXIJICAgKnJhbmdlX25hbWU7CQkJLyogUmFuZ2UgbmFtZSAq LworCU5vZGUJICAgKnRhcmdldFJhbmdlOwkJLyogRk9SIFBPUlRJT04gT0YgYm91bmRzIGFz IGEgcmFuZ2UgKi8KKwlPaWQJCQlyYW5nZVR5cGU7CQkJLyogdHlwZSBvZiB0YXJnZXRSYW5n ZSAqLworCU5vZGUJICAgKm92ZXJsYXBzRXhwcjsJCS8qIHJhbmdlICYmIHRhcmdldFJhbmdl ICovCisJTGlzdAkgICAqcmFuZ2VTZXQ7CQkJLyogTGlzdCBvZiBUYXJnZXRFbnRyeXMgdG8g c2V0IHRoZSB0aW1lIGNvbHVtbihzKSAqLworCU9pZAkJCXdpdGhvdXRQb3J0aW9uUHJvYzsJ LyogcHJvYyBmb3Igb2xkX3JhbmdlIEAtIHRhcmdldF9yYW5nZSAqLworfSBGb3JQb3J0aW9u T2ZFeHByOworCiAjZW5kaWYJCQkJCQkJLyogUFJJTU5PREVTX0ggKi8KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oIGIvc3JjL2luY2x1ZGUvb3B0aW1p emVyL3BhdGhub2RlLmgKaW5kZXggNmU1NTdiZWJjNC4uYzkzMmQxMjA0YyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUv b3B0aW1pemVyL3BhdGhub2RlLmgKQEAgLTI4Myw3ICsyODMsOCBAQCBleHRlcm4gTW9kaWZ5 VGFibGVQYXRoICpjcmVhdGVfbW9kaWZ5dGFibGVfcGF0aChQbGFubmVySW5mbyAqcm9vdCwK IAkJCQkJCQkJCQkJCUxpc3QgKnVwZGF0ZUNvbG5vc0xpc3RzLAogCQkJCQkJCQkJCQkJTGlz dCAqd2l0aENoZWNrT3B0aW9uTGlzdHMsIExpc3QgKnJldHVybmluZ0xpc3RzLAogCQkJCQkJ CQkJCQkJTGlzdCAqcm93TWFya3MsIE9uQ29uZmxpY3RFeHByICpvbmNvbmZsaWN0LAotCQkJ CQkJCQkJCQkJTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywgaW50IGVwcVBhcmFtKTsKKwkJCQkJ CQkJCQkJCUxpc3QgKm1lcmdlQWN0aW9uTGlzdHMsCisJCQkJCQkJCQkJCQlGb3JQb3J0aW9u T2ZFeHByICpmb3JQb3J0aW9uT2YsIGludCBlcHFQYXJhbSk7CiBleHRlcm4gTGltaXRQYXRo ICpjcmVhdGVfbGltaXRfcGF0aChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVs LAogCQkJCQkJCQkJUGF0aCAqc3VicGF0aCwKIAkJCQkJCQkJCU5vZGUgKmxpbWl0T2Zmc2V0 LCBOb2RlICpsaW1pdENvdW50LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2Fu YWx5emUuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9hbmFseXplLmgKaW5kZXggYzk2NDgzYWU3 OC4uYjZkNTA2NWUxMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUu aAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvYW5hbHl6ZS5oCkBAIC00Myw3ICs0Myw4IEBA IGV4dGVybiBMaXN0ICp0cmFuc2Zvcm1JbnNlcnRSb3coUGFyc2VTdGF0ZSAqcHN0YXRlLCBM aXN0ICpleHBybGlzdCwKIAkJCQkJCQkJTGlzdCAqc3RtdGNvbHMsIExpc3QgKmljb2x1bW5z LCBMaXN0ICphdHRybm9zLAogCQkJCQkJCQlib29sIHN0cmlwX2luZGlyZWN0aW9uKTsKIGV4 dGVybiBMaXN0ICp0cmFuc2Zvcm1VcGRhdGVUYXJnZXRMaXN0KFBhcnNlU3RhdGUgKnBzdGF0 ZSwKLQkJCQkJCQkJCSAgIExpc3QgKm9yaWdUbGlzdCk7CisJCQkJCQkJCQkgICBMaXN0ICpv cmlnVGxpc3QsCisJCQkJCQkJCQkgICBGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2Yp OwogZXh0ZXJuIFF1ZXJ5ICp0cmFuc2Zvcm1Ub3BMZXZlbFN0bXQoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBSYXdTdG10ICpwYXJzZVRyZWUpOwogZXh0ZXJuIFF1ZXJ5ICp0cmFuc2Zvcm1TdG10 KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqcGFyc2VUcmVlKTsKIApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlz dC5oCmluZGV4IGNjZjViZjhhYTYuLmM4OWNlZWE5ZjYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3BhcnNlci9rd2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgK QEAgLTMzMCw2ICszMzAsNyBAQCBQR19LRVlXT1JEKCJwZXJpb2QiLCBQRVJJT0QsIFJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwbGFjaW5nIiwgUExBQ0lO RywgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBsYW5zIiwg UExBTlMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBv bGljeSIsIFBPTElDWSwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZ V09SRCgicG9ydGlvbiIsIFBPUlRJT04sIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoInBvc2l0aW9uIiwgUE9TSVRJT04sIENPTF9OQU1FX0tFWVdPUkQs IEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwcmVjZWRpbmciLCBQUkVDRURJTkcsIFVOUkVT RVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInByZWNpc2lvbiIsIFBS RUNJU0lPTiwgQ09MX05BTUVfS0VZV09SRCwgQVNfTEFCRUwpCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNl X25vZGUuaAppbmRleCBmNTg5MTEyZDVlLi4wZDYwMWYzNGE1IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9w YXJzZV9ub2RlLmgKQEAgLTU2LDYgKzU2LDcgQEAgdHlwZWRlZiBlbnVtIFBhcnNlRXhwcktp bmQKIAlFWFBSX0tJTkRfVVBEQVRFX1NPVVJDRSwJLyogVVBEQVRFIGFzc2lnbm1lbnQgc291 cmNlIGl0ZW0gKi8KIAlFWFBSX0tJTkRfVVBEQVRFX1RBUkdFVCwJLyogVVBEQVRFIGFzc2ln bm1lbnQgdGFyZ2V0IGl0ZW0gKi8KIAlFWFBSX0tJTkRfTUVSR0VfV0hFTiwJCS8qIE1FUkdF IFdIRU4gW05PVF0gTUFUQ0hFRCBjb25kaXRpb24gKi8KKwlFWFBSX0tJTkRfVVBEQVRFX1BP UlRJT04sCS8qIFVQREFURSBGT1IgUE9SVElPTiBPRiBpdGVtICovCiAJRVhQUl9LSU5EX0dS T1VQX0JZLAkJCS8qIEdST1VQIEJZICovCiAJRVhQUl9LSU5EX09SREVSX0JZLAkJCS8qIE9S REVSIEJZICovCiAJRVhQUl9LSU5EX0RJU1RJTkNUX09OLAkJLyogRElTVElOQ1QgT04gKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oIGIvc3JjL2luY2x1 ZGUvdXRpbHMvbHN5c2NhY2hlLmgKaW5kZXggZTgyZmI2ZjQyNS4uNGI1MmUyZGZkZSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKKysrIGIvc3JjL2luY2x1 ZGUvdXRpbHMvbHN5c2NhY2hlLmgKQEAgLTE0NCw2ICsxNDQsOCBAQCBleHRlcm4gY2hhciBn ZXRfcmVsX3BlcnNpc3RlbmNlKE9pZCByZWxpZCk7CiBleHRlcm4gT2lkCWdldF90cmFuc2Zv cm1fZnJvbXNxbChPaWQgdHlwaWQsIE9pZCBsYW5naWQsIExpc3QgKnRyZnR5cGVzKTsKIGV4 dGVybiBPaWQJZ2V0X3RyYW5zZm9ybV90b3NxbChPaWQgdHlwaWQsIE9pZCBsYW5naWQsIExp c3QgKnRyZnR5cGVzKTsKIGV4dGVybiBib29sIGdldF90eXBpc2RlZmluZWQoT2lkIHR5cGlk KTsKK2V4dGVybiBjaGFyICpnZXRfdHlwbmFtZShPaWQgdHlwaWQpOworZXh0ZXJuIGJvb2wg Z2V0X3R5cG5hbWVfYW5kX25hbWVzcGFjZShPaWQgdHlwaWQsIGNoYXIgKip0eXBuYW1lLCBj aGFyICoqdHlwbmFtZXNwYWNlKTsKIGV4dGVybiBpbnQxNiBnZXRfdHlwbGVuKE9pZCB0eXBp ZCk7CiBleHRlcm4gYm9vbCBnZXRfdHlwYnl2YWwoT2lkIHR5cGlkKTsKIGV4dGVybiB2b2lk IGdldF90eXBsZW5ieXZhbChPaWQgdHlwaWQsIGludDE2ICp0eXBsZW4sIGJvb2wgKnR5cGJ5 dmFsKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BlcmlvZC5oIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvcGVyaW9kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uMGE4YWYzZWRiMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxz L3BlcmlvZC5oCkBAIC0wLDAgKzEsMTkgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoK KyAqIHBlcmlvZC5oCisgKgkgIHN1cHBvcnQgZm9yIFBvc3RncmVzIHBlcmlvZHMuCisgKgor ICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIyLCBQb3N0Z3JlU1FMIEds b2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0 LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBzcmMv aW5jbHVkZS91dGlscy9wZXJpb2QuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICov CisjaWZuZGVmIFBFUklPRF9ICisjZGVmaW5lIFBFUklPRF9ICisKK2V4dGVybiBEYXR1bSBw ZXJpb2RfdG9fcmFuZ2UoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIGludCBzdGFydGF0dG5vLCBp bnQgZW5kYXR0bm8sIE9pZCByYW5nZXR5cGUpOworCisjZW5kaWYJCQkJCQkJLyogUEVSSU9E X0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRp b25fb2Yub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5v dXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNDM3NmJjZWQ0ZAot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRp b25fb2Yub3V0CkBAIC0wLDAgKzEsNTYyIEBACistLSBUZXN0cyBmb3IgVVBEQVRFL0RFTEVU RSBGT1IgUE9SVElPTiBPRgorLS0gV29ya3Mgb24gbm9uLVBLIGNvbHVtbnMKK0NSRUFURSBU QUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0ICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxpZF9h dCB0c3JhbmdlLAorICBuYW1lIHRleHQgTk9UIE5VTEwKKyk7CitJTlNFUlQgSU5UTyBmb3Jf cG9ydGlvbl9vZl90ZXN0IFZBTFVFUworKCdbMSwxXScsICdbMjAxOC0wMS0wMiwyMDIwLTAx LTAxKScsICdvbmUnKTsKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyAnMjAxOS0wMS0wMScKK1NFVCBu YW1lID0gJ2Zvbyc7CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTE1JyBUTyBOVUxMOworU0VMRUNUICog RlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworICBpZCAgIHwgICAgICAgICAgICAgICAgICAg ICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IG5hbWUgCistLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0KKyBbMSwyKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IiwiVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBmb28KKyBbMSwyKSB8IFsiVHVlIEphbiAwMiAw MDowMDowMCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBvbmUKKyBbMSwy KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiVHVlIEphbiAxNSAwMDowMDowMCAy MDE5IikgfCBvbmUKKygzIHJvd3MpCisKKy0tIFdvcmtzIG9uIG1vcmUgdGhhbiBvbmUgcmFu Z2UKK0RST1AgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdDsKK0NSRUFURSBUQUJMRSBmb3Jf cG9ydGlvbl9vZl90ZXN0ICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxpZDFfYXQgdHNyYW5n ZSwKKyAgdmFsaWQyX2F0IHRzcmFuZ2UsCisgIG5hbWUgdGV4dCBOT1QgTlVMTAorKTsKK0lO U0VSVCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rlc3QgVkFMVUVTCisoJ1sxLDFdJywgJ1syMDE4 LTAxLTAyLDIwMTgtMDItMDMpJywgJ1syMDE1LTAxLTAxLDIwMjUtMDEtMDEpJywgJ29uZScp OworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkMV9h dCBGUk9NICcyMDE4LTAxLTE1JyBUTyBOVUxMCitTRVQgbmFtZSA9ICdmb28nOworU0VMRUNU ICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworICBpZCAgIHwgICAgICAgICAgICAgICAg ICAgICAgICB2YWxpZDFfYXQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg ICAgICAgICAgICAgdmFsaWQyX2F0ICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1lIAor LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIFsxLDIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAw IDIwMTgiLCJTYXQgRmViIDAzIDAwOjAwOjAwIDIwMTgiKSB8IFsiVGh1IEphbiAwMSAwMDow MDowMCAyMDE1IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikgfCBmb28KKyBbMSwyKSB8 IFsiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4 IikgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIldlZCBKYW4gMDEgMDA6MDA6MDAg MjAyNSIpIHwgb25lCisoMiByb3dzKQorCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWQyX2F0IEZST00gJzIwMTgtMDEtMTUnIFRPIE5VTEwKK1NF VCBuYW1lID0gJ2Jhcic7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7Cisg IGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkMV9hdCAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZDJfYXQgICAgICAgICAg ICAgICAgICAgICAgICB8IG5hbWUgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tCisgWzEsMikg fCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBGZWIgMDMgMDA6MDA6MDAgMjAx OCIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjUiKSB8IGJhcgorIFsxLDIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJT YXQgRmViIDAzIDAwOjAwOjAwIDIwMTgiKSB8IFsiVGh1IEphbiAwMSAwMDowMDowMCAyMDE1 IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBmb28KKyBbMSwyKSB8IFsiVHVlIEph biAwMiAwMDowMDowMCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBbIk1v biBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIHwg YmFyCisgWzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIk1vbiBKYW4gMTUg MDA6MDA6MDAgMjAxOCIpIHwgWyJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJNb24gSmFu IDE1IDAwOjAwOjAwIDIwMTgiKSB8IG9uZQorKDQgcm93cykKKworREVMRVRFIEZST00gZm9y X3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWQxX2F0IEZST00gJzIwMTgt MDEtMjAnIFRPIE5VTEw7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7Cisg IGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkMV9hdCAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZDJfYXQgICAgICAgICAg ICAgICAgICAgICAgICB8IG5hbWUgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tCisgWzEsMikg fCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAx OCIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjUiKSB8IGJhcgorIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJN b24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IFsiVGh1IEphbiAwMSAwMDowMDowMCAyMDE1 IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBvbmUKKyBbMSwyKSB8IFsiTW9uIEph biAxNSAwMDowMDowMCAyMDE4IiwiU2F0IEphbiAyMCAwMDowMDowMCAyMDE4IikgfCBbIk1v biBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIHwg YmFyCisgWzEsMikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBKYW4gMjAg MDA6MDA6MDAgMjAxOCIpIHwgWyJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJNb24gSmFu IDE1IDAwOjAwOjAwIDIwMTgiKSB8IGZvbworKDQgcm93cykKKworREVMRVRFIEZST00gZm9y X3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWQyX2F0IEZST00gJzIwMTgt MDEtMjAnIFRPIE5VTEw7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7Cisg IGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkMV9hdCAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZDJfYXQgICAgICAgICAg ICAgICAgICAgICAgICB8IG5hbWUgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tCisgWzEsMikg fCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAx OCIpIHwgWyJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJNb24gSmFuIDE1IDAwOjAwOjAw IDIwMTgiKSB8IG9uZQorIFsxLDIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJT YXQgSmFuIDIwIDAwOjAwOjAwIDIwMTgiKSB8IFsiVGh1IEphbiAwMSAwMDowMDowMCAyMDE1 IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBmb28KKyBbMSwyKSB8IFsiVHVlIEph biAwMiAwMDowMDowMCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBbIk1v biBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBKYW4gMjAgMDA6MDA6MDAgMjAxOCIpIHwg YmFyCisgWzEsMikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBKYW4gMjAg MDA6MDA6MDAgMjAxOCIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJTYXQgSmFu IDIwIDAwOjAwOjAwIDIwMTgiKSB8IGJhcgorKDQgcm93cykKKworLS0gVGVzdCB3aXRoIE5V TExzIGluIHRoZSBzY2FsYXIvcmFuZ2Uga2V5IGNvbHVtbnMuCistLSBUaGlzIHdvbid0IGhh cHBlbiBpZiB0aGVyZSBpcyBhIFBSSU1BUlkgS0VZIG9yIFVOSVFVRSBjb25zdHJhaW50Cist LSBidXQgRk9SIFBPUlRJT04gT0Ygc2hvdWxkbid0IHJlcXVpcmUgdGhhdC4KK0RST1AgVEFC TEUgZm9yX3BvcnRpb25fb2ZfdGVzdDsKK0NSRUFURSBVTkxPR0dFRCBUQUJMRSBmb3JfcG9y dGlvbl9vZl90ZXN0ICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxpZF9hdCB0c3JhbmdlLAor ICBuYW1lIHRleHQKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0IFZBTFVF UworICAoJ1sxLDFdJywgTlVMTCwgJzEgbnVsbCcpLAorICAoJ1sxLDFdJywgJygsKScsICcx IHVuYm91bmRlZCcpLAorICAoJ1sxLDFdJywgJ2VtcHR5JywgJzEgZW1wdHknKSwKKyAgKE5V TEwsIE5VTEwsIE5VTEwpLAorICAoTlVMTCwgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE5 LTAxLTAxJyksICdudWxsIGtleScpOworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAg Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPIE5VTEwKKyAgU0VUIG5hbWUg PSAnTlVMTCB0byBOVUxMJzsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsK KyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgbmFtZSAgICAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LQorIFsxLDIpIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDEgbnVsbAorIFsxLDIpIHwgZW1wdHkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEgZW1wdHkKKyAgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAKKyBbMSwyKSB8ICgsKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCBOVUxMIHRvIE5VTEwKKyAgICAgICB8IFsiTW9uIEphbiAw MSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBOVUxMIHRv IE5VTEwKKyg1IHJvd3MpCisKK0RST1AgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdDsKK0NS RUFURSBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0ICgKKyAgaWQgaW50NHJhbmdlIE5PVCBO VUxMLAorICB2YWxpZF9hdCB0c3JhbmdlIE5PVCBOVUxMLAorICBuYW1lIHRleHQgTk9UIE5V TEwsCisJQ09OU1RSQUlOVCBmb3JfcG9ydGlvbl9vZl9wayBQUklNQVJZIEtFWSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8gZm9yX3BvcnRpb25f b2ZfdGVzdAorVkFMVUVTCisoJ1sxLDFdJywgJ1syMDE4LTAxLTAyLDIwMTgtMDItMDMpJywg J29uZScpLAorKCdbMSwxXScsICdbMjAxOC0wMi0wMywyMDE4LTAzLTAzKScsICdvbmUnKSwK KygnWzEsMV0nLCAnWzIwMTgtMDMtMDMsMjAxOC0wNC0wNCknLCAnb25lJyksCisoJ1syLDJd JywgJ1syMDE4LTAxLTAxLDIwMTgtMDEtMDUpJywgJ3R3bycpLAorKCdbMywzXScsICdbMjAx OC0wMS0wMSwpJywgJ3RocmVlJyksCisoJ1s0LDRdJywgJygsMjAxOC0wNC0wMSknLCAnZm91 cicpLAorKCdbNSw1XScsICcoLCknLCAnZml2ZScpCis7CistLQorLS0gVVBEQVRFIHRlc3Rz CistLQorLS0gU2V0dGluZyB3aXRoIGEgbWlzc2luZyBjb2x1bW4gZmFpbHMKK1VQREFURSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiBpbnZhbGlkX2F0IEZST00gJzIw MTgtMDYtMDEnIFRPIE5VTEwKK1NFVCBuYW1lID0gJ2ZvbycKK1dIRVJFIGlkID0gJ1s1LDVd JzsKK0VSUk9SOiAgY29sdW1uIG9yIHBlcmlvZCAiaW52YWxpZF9hdCIgb2YgcmVsYXRpb24g ImZvcl9wb3J0aW9uX29mX3Rlc3QiIGRvZXMgbm90IGV4aXN0CitMSU5FIDI6IEZPUiBQT1JU SU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTlVMTAorICAgICAgICAg ICAgICAgICAgICAgICBeCistLSBTZXR0aW5nIHRoZSByYW5nZSBmYWlscworVVBEQVRFIGZv cl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgt MDYtMDEnIFRPIE5VTEwKK1NFVCB2YWxpZF9hdCA9ICdbMTk5MC0wMS0wMSwxOTk5LTAxLTAx KScKK1dIRVJFIGlkID0gJ1s1LDVdJzsKK0VSUk9SOiAgY2FuJ3QgZGlyZWN0bHkgYXNzaWdu IHRvICJ2YWxpZF9hdCIgaW4gYSBGT1IgUE9SVElPTiBPRiB1cGRhdGUKK0xJTkUgMzogU0VU IHZhbGlkX2F0ID0gJ1sxOTkwLTAxLTAxLDE5OTktMDEtMDEpJworICAgICAgICAgICAgXgor LS0gVGhlIHdyb25nIHR5cGUgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIDEgVE8gNAorU0VUIG5hbWUgPSAnbm9wZScK K1dIRVJFIGlkID0gJ1szLDNdJzsKK0VSUk9SOiAgZnVuY3Rpb24gcGdfY2F0YWxvZy50c3Jh bmdlKGludGVnZXIsIGludGVnZXIpIGRvZXMgbm90IGV4aXN0CitMSU5FIDI6IEZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gMSBUTyA0CisgICAgICAgICAgICAgICAgICAgICAgIF4K K0hJTlQ6ICBObyBmdW5jdGlvbiBtYXRjaGVzIHRoZSBnaXZlbiBuYW1lIGFuZCBhcmd1bWVu dCB0eXBlcy4gWW91IG1pZ2h0IG5lZWQgdG8gYWRkIGV4cGxpY2l0IHR5cGUgY2FzdHMuCist LSBTZXR0aW5nIHdpdGggdGltZXN0YW1wcyByZXZlcnNlZCBmYWlscworVVBEQVRFIGZvcl9w b3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYt MDEnIFRPICcyMDE4LTAxLTAxJworU0VUIG5hbWUgPSAndGhyZWVeMScKK1dIRVJFIGlkID0g J1szLDNdJzsKK0VSUk9SOiAgcmFuZ2UgbG93ZXIgYm91bmQgbXVzdCBiZSBsZXNzIHRoYW4g b3IgZXF1YWwgdG8gcmFuZ2UgdXBwZXIgYm91bmQKKy0tIFNldHRpbmcgd2l0aCBhIHN1YnF1 ZXJ5IGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAoU0VMRUNUICcyMDE4LTAxLTAxJykgVE8gJzIwMTgtMDYtMDEnCitT RVQgbmFtZSA9ICdub3BlJworV0hFUkUgaWQgPSAnWzMsM10nOworRVJST1I6ICBjYW5ub3Qg dXNlIHN1YnF1ZXJ5IGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb24KK0xJTkUgMjogRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAoU0VMRUNUICcyMDE4LTAxLTAxJykgVE8gJzIw MTgtLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gU2V0 dGluZyB3aXRoIGEgY29sdW1uIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBsb3dlcih2YWxpZF9hdCkgVE8gTlVMTAor U0VUIG5hbWUgPSAnbm9wZScKK1dIRVJFIGlkID0gJ1szLDNdJzsKK0VSUk9SOiAgY2Fubm90 IHVzZSBjb2x1bW4gcmVmZXJlbmNlIGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb24KK0xJ TkUgMjogRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBsb3dlcih2YWxpZF9hdCkgVE8g TlVMTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0t IFNldHRpbmcgd2l0aCB0aW1lc3RhbXBzIGVxdWFsIGRvZXMgbm90aGluZworVVBEQVRFIGZv cl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgt MDQtMDEnIFRPICcyMDE4LTA0LTAxJworU0VUIG5hbWUgPSAndGhyZWVeMCcKK1dIRVJFIGlk ID0gJ1szLDNdJzsKKy0tIFVwZGF0aW5nIGEgZmluaXRlL29wZW4gcG9ydGlvbiB3aXRoIGEg ZmluaXRlL29wZW4gdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTlVMTAorU0VUIG5hbWUg PSAndGhyZWVeMScKK1dIRVJFIGlkID0gJ1szLDNdJzsKKy0tIFVwZGF0aW5nIGEgZmluaXRl L29wZW4gcG9ydGlvbiB3aXRoIGFuIG9wZW4vZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9w b3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyAn MjAxOC0wMy0wMScKK1NFVCBuYW1lID0gJ3RocmVlXjInCitXSEVSRSBpZCA9ICdbMywzXSc7 CistLSBVcGRhdGluZyBhbiBvcGVuL2Zpbml0ZSBwb3J0aW9uIHdpdGggYW4gb3Blbi9maW5p dGUgdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSBOVUxMIFRPICcyMDE4LTAyLTAxJworU0VUIG5hbWUgPSAnZm91cl4x JworV0hFUkUgaWQgPSAnWzQsNF0nOworLS0gVXBkYXRpbmcgYW4gb3Blbi9maW5pdGUgcG9y dGlvbiB3aXRoIGEgZmluaXRlL29wZW4gdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gTlVM TAorU0VUIG5hbWUgPSAnZm91cl4yJworV0hFUkUgaWQgPSAnWzQsNF0nOworLS0gVXBkYXRp bmcgYSBmaW5pdGUvZmluaXRlIHBvcnRpb24gd2l0aCBhbiBleGFjdCBmaXQKK1VQREFURSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE3 LTAxLTAxJyBUTyAnMjAxOC0wMi0wMScKK1NFVCBuYW1lID0gJ2ZvdXJeMycKK1dIRVJFIGlk ID0gJ1s0LDRdJzsKKy0tIFVwZGF0aW5nIGFuIGVuY2xvc2VkIHNwYW4KK1VQREFURSBmb3Jf cG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8g TlVMTAorU0VUIG5hbWUgPSAndHdvXjInCitXSEVSRSBpZCA9ICdbMiwyXSc7CistLSBVcGRh dGluZyBhbiBvcGVuL29wZW4gcG9ydGlvbiB3aXRoIGEgZmluaXRlL2Zpbml0ZSB0YXJnZXQK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE4LTAxLTAxJyBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ2ZpdmVeMicK K1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIFVwZGF0aW5nIGFuIGVuY2xvc2VkIHNwYW4gd2l0 aCBzZXBhcmF0ZSBwcm90cnVkaW5nIHNwYW5zCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVz dAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gJzIwMjAt MDEtMDEnCitTRVQgbmFtZSA9ICdmaXZlXjMnCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBV cGRhdGluZyBtdWx0aXBsZSBlbmNsb3NlZCBzcGFucworVVBEQVRFIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyBOVUxMCitTRVQg bmFtZSA9ICdvbmVeMicKK1dIRVJFIGlkID0gJ1sxLDFdJzsKKy0tIFVwZGF0aW5nIHdpdGgg YSBzaGlmdC9yZWR1Y2UgY29uZmxpY3QKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdAorICBGUk9NICcyMDE4LTAzLTAxJyBBVCBUSU1FIFpP TkUgSU5URVJWQUwgJzEnIEhPVVIgVE8gTUlOVVRFCisgIFRPICcyMDE5LTAxLTAxJworU0VU IG5hbWUgPSAnb25lXjMnCitXSEVSRSBpZCA9ICdbMSwxXSc7CitVUERBVEUgZm9yX3BvcnRp b25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQKKyAgRlJPTSAnMjAxOC0wMy0w MScgQVQgVElNRSBaT05FIElOVEVSVkFMICcyJyBIT1VSCisgIFRPICcyMDE5LTAxLTAxJwor U0VUIG5hbWUgPSAnb25lXjQnCitXSEVSRSBpZCA9ICdbMSwxXSc7CitFUlJPUjogIHN5bnRh eCBlcnJvciBhdCBvciBuZWFyICInMjAxOS0wMS0wMSciCitMSU5FIDQ6ICAgVE8gJzIwMTkt MDEtMDEnCisgICAgICAgICAgICAgXgorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0CisgIEZST00gKCcyMDE4LTAzLTAxJyBBVCBUSU1FIFpP TkUgSU5URVJWQUwgJzInIEhPVVIpCisgIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAn b25lXjQnCitXSEVSRSBpZCA9ICdbMSwxXSc7CistLSBXaXRoIGEgZGlyZWN0IHRhcmdldAor VVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0ICh0 c3JhbmdlKCcyMDE4LTAzLTEwJywgJzIwMTgtMDMtMTcnKSkKK1NFVCBuYW1lID0gJ29uZV41 JworV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gVXBkYXRpbmcgdGhlIG5vbi1yYW5nZSBwYXJ0 IG9mIHRoZSBQSzoKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDE4LTAyLTE1JyBUTyBOVUxMCitTRVQgaWQgPSAnWzYsNl0n CitXSEVSRSBpZCA9ICdbMSwxXSc7CistLSBVUERBVEUgd2l0aCBubyBXSEVSRSBjbGF1c2UK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDMwLTAxLTAxJyBUTyBOVUxMCitTRVQgbmFtZSA9IG5hbWUgfHwgJyonOworU0VM RUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsK KyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIG5hbWUgICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyBbMSwy KSB8IFsiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiU2F0IEZlYiAwMyAwMDowMDowMCAy MDE4IikgfCBvbmVeMgorIFsxLDIpIHwgWyJTYXQgRmViIDAzIDAwOjAwOjAwIDIwMTgiLCJU aHUgRmViIDE1IDAwOjAwOjAwIDIwMTgiKSB8IG9uZV4yCisgWzIsMykgfCBbIk1vbiBKYW4g MDEgMDA6MDA6MDAgMjAxOCIsIkZyaSBKYW4gMDUgMDA6MDA6MDAgMjAxOCIpIHwgdHdvXjIK KyBbMyw0KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IE1hciAwMSAwMDow MDowMCAyMDE4IikgfCB0aHJlZV4yCisgWzMsNCkgfCBbIlRodSBNYXIgMDEgMDA6MDA6MDAg MjAxOCIsIkZyaSBKdW4gMDEgMDA6MDA6MDAgMjAxOCIpIHwgdGhyZWUKKyBbMyw0KSB8IFsi RnJpIEp1biAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDMwIikg fCB0aHJlZV4xCisgWzMsNCkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAzMCIsKSAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgdGhyZWVeMSoKKyBbNCw1KSB8ICgsIlN1biBKYW4g MDEgMDA6MDA6MDAgMjAxNyIpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmb3VyXjEK KyBbNCw1KSB8IFsiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IiwiVGh1IEZlYiAwMSAwMDow MDowMCAyMDE4IikgfCBmb3VyXjMKKyBbNCw1KSB8IFsiVGh1IEZlYiAwMSAwMDowMDowMCAy MDE4IiwiU3VuIEFwciAwMSAwMDowMDowMCAyMDE4IikgfCBmb3VyXjIKKyBbNSw2KSB8ICgs IlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIpICAgICAgICAgICAgICAgICAgICAgICAgICAg fCBmaXZlCisgWzUsNikgfCBbIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIsIk1vbiBKYW4g MDEgMDA6MDA6MDAgMjAxOCIpIHwgZml2ZV4zCisgWzUsNikgfCBbIk1vbiBKYW4gMDEgMDA6 MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgZml2ZV4zCisgWzUs NikgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAg MjAyMCIpIHwgZml2ZV4zCisgWzUsNikgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIs IlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAzMCIpIHwgZml2ZQorIFs1LDYpIHwgWyJUdWUgSmFu IDAxIDAwOjAwOjAwIDIwMzAiLCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZpdmUq CisgWzYsNykgfCBbIlRodSBGZWIgMTUgMDA6MDA6MDAgMjAxOCIsIlRodSBNYXIgMDEgMDg6 MDE6MDAgMjAxOCIpIHwgb25lXjIKKyBbNiw3KSB8IFsiVGh1IE1hciAwMSAwODowMTowMCAy MDE4IiwiVGh1IE1hciAwMSAxMDowMDowMCAyMDE4IikgfCBvbmVeMworIFs2LDcpIHwgWyJU aHUgTWFyIDAxIDEwOjAwOjAwIDIwMTgiLCJTYXQgTWFyIDAzIDAwOjAwOjAwIDIwMTgiKSB8 IG9uZV40CisgWzYsNykgfCBbIlNhdCBNYXIgMDMgMDA6MDA6MDAgMjAxOCIsIlNhdCBNYXIg MTAgMDA6MDA6MDAgMjAxOCIpIHwgb25lXjQKKyBbNiw3KSB8IFsiU2F0IE1hciAxMCAwMDow MDowMCAyMDE4IiwiU2F0IE1hciAxNyAwMDowMDowMCAyMDE4IikgfCBvbmVeNQorIFs2LDcp IHwgWyJTYXQgTWFyIDE3IDAwOjAwOjAwIDIwMTgiLCJXZWQgQXByIDA0IDAwOjAwOjAwIDIw MTgiKSB8IG9uZV40CisoMjIgcm93cykKKworLS0KKy0tIERFTEVURSB0ZXN0cworLS0KKy0t IERlbGV0aW5nIHdpdGggYSBtaXNzaW5nIGNvbHVtbiBmYWlscworREVMRVRFIEZST00gZm9y X3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgaW52YWxpZF9hdCBGUk9NICcyMDE4 LTA2LTAxJyBUTyBOVUxMCitXSEVSRSBpZCA9ICdbNSw1XSc7CitFUlJPUjogIGNvbHVtbiBv ciBwZXJpb2QgImludmFsaWRfYXQiIG9mIHJlbGF0aW9uICJmb3JfcG9ydGlvbl9vZl90ZXN0 IiBkb2VzIG5vdCBleGlzdAorTElORSAyOiBGT1IgUE9SVElPTiBPRiBpbnZhbGlkX2F0IEZS T00gJzIwMTgtMDYtMDEnIFRPIE5VTEwKKyAgICAgICAgICAgICAgICAgICAgICAgXgorLS0g RGVsZXRpbmcgd2l0aCB0aW1lc3RhbXBzIHJldmVyc2VkIGZhaWxzCitERUxFVEUgRlJPTSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4 LTA2LTAxJyBUTyAnMjAxOC0wMS0wMScKK1dIRVJFIGlkID0gJ1szLDNdJzsKK0VSUk9SOiAg cmFuZ2UgbG93ZXIgYm91bmQgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gcmFuZ2Ug dXBwZXIgYm91bmQKKy0tIERlbGV0aW5nIHdpdGggdGltZXN0YW1wcyBlcXVhbCBkb2VzIG5v dGhpbmcKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEnIFRPICcyMDE4LTA0LTAxJworV0hFUkUgaWQg PSAnWzMsM10nOworLS0gRGVsZXRpbmcgd2l0aCBhIGNsb3NlZC9jbG9zZWQgdGFyZ2V0CitE RUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE4LTA2LTAxJyBUTyAnMjAyMC0wNi0wMScKK1dIRVJFIGlkID0gJ1s1LDVd JzsKKy0tIERlbGV0aW5nIHdpdGggYSBjbG9zZWQvb3BlbiB0YXJnZXQKK0RFTEVURSBGUk9N IGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MTgtMDQtMDEnIFRPIE5VTEwKK1dIRVJFIGlkID0gJ1szLDNdJzsKKy0tIERlbGV0aW5nIHdp dGggYW4gb3Blbi9jbG9zZWQgdGFyZ2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90 ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gJzIwMTgtMDItMDgn CitXSEVSRSBpZCA9ICdbMSwxXSc7CistLSBEZWxldGluZyB3aXRoIGFuIG9wZW4vb3BlbiB0 YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gTlVMTCBUTyBOVUxMCitXSEVSRSBpZCA9ICdbNiw2XSc7CistLSBE RUxFVEUgd2l0aCBubyBXSEVSRSBjbGF1c2UKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMjUtMDEtMDEnIFRPIE5V TEw7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QgT1JERVIgQlkgaWQsIHZh bGlkX2F0OworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAg ICAgICAgICAgICAgICAgICAgICB8ICBuYW1lICAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0K KyBbMSwyKSB8IFsiVGh1IEZlYiAwOCAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAxNSAwMDow MDowMCAyMDE4IikgfCBvbmVeMgorIFsyLDMpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIw MTgiLCJGcmkgSmFuIDA1IDAwOjAwOjAwIDIwMTgiKSB8IHR3b14yCisgWzMsNCkgfCBbIk1v biBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBNYXIgMDEgMDA6MDA6MDAgMjAxOCIpIHwg dGhyZWVeMgorIFszLDQpIHwgWyJUaHUgTWFyIDAxIDAwOjAwOjAwIDIwMTgiLCJTdW4gQXBy IDAxIDAwOjAwOjAwIDIwMTgiKSB8IHRocmVlCisgWzQsNSkgfCAoLCJTdW4gSmFuIDAxIDAw OjAwOjAwIDIwMTciKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZm91cl4xCisgWzQs NSkgfCBbIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIsIlRodSBGZWIgMDEgMDA6MDA6MDAg MjAxOCIpIHwgZm91cl4zCisgWzQsNSkgfCBbIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIs IlN1biBBcHIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgZm91cl4yCisgWzUsNikgfCAoLCJTdW4g SmFuIDAxIDAwOjAwOjAwIDIwMTciKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZml2 ZQorIFs1LDYpIHwgWyJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciLCJNb24gSmFuIDAxIDAw OjAwOjAwIDIwMTgiKSB8IGZpdmVeMworIFs1LDYpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAw IDIwMTgiLCJGcmkgSnVuIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZpdmVeMworIFs1LDYpIHwg WyJNb24gSnVuIDAxIDAwOjAwOjAwIDIwMjAiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUi KSB8IGZpdmUKKygxMSByb3dzKQorCistLSBVUERBVEUgLi4uIFJFVFVSTklORyByZXR1cm5z IG9ubHkgdGhlIHVwZGF0ZWQgdmFsdWVzIChub3QgdGhlIGluc2VydGVkIHNpZGUgdmFsdWVz KQorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTgtMDItMDEnIFRPICcyMDE4LTAyLTE1JworU0VUIG5hbWUgPSAndGhyZWVe MycKK1dIRVJFIGlkID0gJ1szLDNdJworUkVUVVJOSU5HICo7CisgIGlkICAgfCAgICAgICAg ICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIG5h bWUgICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLQorIFszLDQpIHwgWyJUaHUgRmViIDAxIDAw OjAwOjAwIDIwMTgiLCJUaHUgRmViIDE1IDAwOjAwOjAwIDIwMTgiKSB8IHRocmVlXjMKKygx IHJvdykKKworLS0gdGVzdCB0aGF0IHdlIHJ1biB0cmlnZ2VycyBvbiB0aGUgVVBEQVRFL0RF TEVURWQgcm93IGFuZCB0aGUgSU5TRVJUZWQgcm93cworQ1JFQVRFIEZVTkNUSU9OIGZvcl9w b3J0aW9uX29mX3RyaWdnZXIoKQorUkVUVVJOUyB0cmlnZ2VyCitBUworJCQKK0JFR0lOCisg IFJBSVNFIE5PVElDRSAnJSAlICUgb2YgJScsIFRHX1dIRU4sIFRHX09QLCBORVcudmFsaWRf YXQsIE9MRC52YWxpZF9hdDsKKyAgSUYgVEdfT1AgPSAnREVMRVRFJyBUSEVOCisgICAgUkVU VVJOIE9MRDsKKyAgRUxTRQorICAgIFJFVFVSTiBORVc7CisgIEVORCBJRjsKK0VORDsKKyQk CitMQU5HVUFHRSBwbHBnc3FsOworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29m X2JlZm9yZQorICBCRUZPUkUgSU5TRVJUIE9SIFVQREFURSBPUiBERUxFVEUgT04gZm9yX3Bv cnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3Jf cG9ydGlvbl9vZl90cmlnZ2VyKCk7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25f b2ZfYWZ0ZXIKKyAgQUZURVIgSU5TRVJUIE9SIFVQREFURSBPUiBERUxFVEUgT04gZm9yX3Bv cnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3Jf cG9ydGlvbl9vZl90cmlnZ2VyKCk7CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAyMS0wMS0wMScgVE8gJzIwMjItMDEtMDEn CitTRVQgbmFtZSA9ICdmaXZlXjQnCitXSEVSRSBpZCA9ICdbNSw1XSc7CitOT1RJQ0U6ICBC RUZPUkUgVVBEQVRFIFsiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIiwiU2F0IEphbiAwMSAw MDowMDowMCAyMDIyIikgb2YgWyJNb24gSnVuIDAxIDAwOjAwOjAwIDIwMjAiLCJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjUiKQorTk9USUNFOiAgQkVGT1JFIElOU0VSVCBbIk1vbiBKdW4g MDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIG9mIDxOVUxM PgorTk9USUNFOiAgQkVGT1JFIElOU0VSVCBbIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIs IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIG9mIDxOVUxMPgorTk9USUNFOiAgQUZURVIg SU5TRVJUIFsiTW9uIEp1biAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDow MCAyMDIxIikgb2YgPE5VTEw+CitOT1RJQ0U6ICBBRlRFUiBJTlNFUlQgWyJTYXQgSmFuIDAx IDAwOjAwOjAwIDIwMjIiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKSBvZiA8TlVMTD4K K05PVElDRTogIEFGVEVSIFVQREFURSBbIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIsIlNh dCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIpIG9mIFsiTW9uIEp1biAwMSAwMDowMDowMCAyMDIw IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9u X29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMjMtMDEtMDEnIFRP ICcyMDI0LTAxLTAxJworV0hFUkUgaWQgPSAnWzUsNV0nOworTk9USUNFOiAgQkVGT1JFIERF TEVURSA8TlVMTD4gb2YgWyJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiLCJXZWQgSmFuIDAx IDAwOjAwOjAwIDIwMjUiKQorTk9USUNFOiAgQkVGT1JFIElOU0VSVCBbIlNhdCBKYW4gMDEg MDA6MDA6MDAgMjAyMiIsIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAyMyIpIG9mIDxOVUxMPgor Tk9USUNFOiAgQkVGT1JFIElOU0VSVCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAyNCIsIldl ZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIG9mIDxOVUxMPgorTk9USUNFOiAgQUZURVIgSU5T RVJUIFsiU2F0IEphbiAwMSAwMDowMDowMCAyMDIyIiwiU3VuIEphbiAwMSAwMDowMDowMCAy MDIzIikgb2YgPE5VTEw+CitOT1RJQ0U6ICBBRlRFUiBJTlNFUlQgWyJNb24gSmFuIDAxIDAw OjAwOjAwIDIwMjQiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKSBvZiA8TlVMTD4KK05P VElDRTogIEFGVEVSIERFTEVURSA8TlVMTD4gb2YgWyJTYXQgSmFuIDAxIDAwOjAwOjAwIDIw MjIiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKQorU0VMRUNUICogRlJPTSBmb3JfcG9y dGlvbl9vZl90ZXN0IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgbmFt ZSAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tCisgWzEsMikgfCBbIlRodSBGZWIgMDggMDA6 MDA6MDAgMjAxOCIsIlRodSBGZWIgMTUgMDA6MDA6MDAgMjAxOCIpIHwgb25lXjIKKyBbMiwz KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEphbiAwNSAwMDowMDowMCAy MDE4IikgfCB0d29eMgorIFszLDQpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJU aHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSB8IHRocmVlXjIKKyBbMyw0KSB8IFsiVGh1IEZl YiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IikgfCB0aHJl ZV4zCisgWzMsNCkgfCBbIlRodSBGZWIgMTUgMDA6MDA6MDAgMjAxOCIsIlRodSBNYXIgMDEg MDA6MDA6MDAgMjAxOCIpIHwgdGhyZWVeMgorIFszLDQpIHwgWyJUaHUgTWFyIDAxIDAwOjAw OjAwIDIwMTgiLCJTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSB8IHRocmVlCisgWzQsNSkg fCAoLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciKSAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgZm91cl4xCisgWzQsNSkgfCBbIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIsIlRo dSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgZm91cl4zCisgWzQsNSkgfCBbIlRodSBGZWIg MDEgMDA6MDA6MDAgMjAxOCIsIlN1biBBcHIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgZm91cl4y CisgWzUsNikgfCAoLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciKSAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgZml2ZQorIFs1LDYpIHwgWyJTdW4gSmFuIDAxIDAwOjAwOjAwIDIw MTciLCJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZpdmVeMworIFs1LDYpIHwgWyJN b24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJGcmkgSnVuIDAxIDAwOjAwOjAwIDIwMTgiKSB8 IGZpdmVeMworIFs1LDYpIHwgWyJNb24gSnVuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFu IDAxIDAwOjAwOjAwIDIwMjEiKSB8IGZpdmUKKyBbNSw2KSB8IFsiRnJpIEphbiAwMSAwMDow MDowMCAyMDIxIiwiU2F0IEphbiAwMSAwMDowMDowMCAyMDIyIikgfCBmaXZlXjQKKyBbNSw2 KSB8IFsiU2F0IEphbiAwMSAwMDowMDowMCAyMDIyIiwiU3VuIEphbiAwMSAwMDowMDowMCAy MDIzIikgfCBmaXZlCisgWzUsNikgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAyNCIsIldl ZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIHwgZml2ZQorKDE2IHJvd3MpCisKKy0tIFRlc3Qg d2l0aCBhIGN1c3RvbSByYW5nZSB0eXBlCitDUkVBVEUgVFlQRSBteWRhdGVyYW5nZSBBUyBy YW5nZShzdWJ0eXBlPWRhdGUpOworQ1JFQVRFIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3Qy ICgKKyAgaWQgaW50NHJhbmdlIE5PVCBOVUxMLAorICB2YWxpZF9hdCBteWRhdGVyYW5nZSBO T1QgTlVMTCwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMLAorCUNPTlNUUkFJTlQgZm9yX3BvcnRp b25fb2ZfdGVzdDJfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKQorKTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rlc3QyCitWQUxVRVMKKygn WzEsMV0nLCAnWzIwMTgtMDEtMDIsMjAxOC0wMi0wMyknLCAnb25lJyksCisoJ1sxLDFdJywg J1syMDE4LTAyLTAzLDIwMTgtMDMtMDMpJywgJ29uZScpLAorKCdbMSwxXScsICdbMjAxOC0w My0wMywyMDE4LTA0LTA0KScsICdvbmUnKSwKKygnWzIsMl0nLCAnWzIwMTgtMDEtMDEsMjAx OC0wNS0wMSknLCAndHdvJyksCisoJ1szLDNdJywgJ1syMDE4LTAxLTAxLCknLCAndGhyZWUn KTsKKzsKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0MgorRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOC0wMS0xMCcgVE8gJzIwMTgtMDItMTAnCitTRVQgbmFtZSA9ICdv bmVeMScKK1dIRVJFIGlkID0gJ1sxLDFdJzsKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29m X3Rlc3QyCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyAn MjAxOC0wMi0xNScKK1dIRVJFIGlkID0gJ1syLDJdJzsKK1NFTEVDVCAqIEZST00gZm9yX3Bv cnRpb25fb2ZfdGVzdDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAg IHZhbGlkX2F0ICAgICAgICAgfCBuYW1lICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tCisgWzEsMikgfCBbMDEtMDItMjAxOCwwMS0xMC0yMDE4KSB8IG9u ZQorIFsxLDIpIHwgWzAxLTEwLTIwMTgsMDItMDMtMjAxOCkgfCBvbmVeMQorIFsxLDIpIHwg WzAyLTAzLTIwMTgsMDItMTAtMjAxOCkgfCBvbmVeMQorIFsxLDIpIHwgWzAyLTEwLTIwMTgs MDMtMDMtMjAxOCkgfCBvbmUKKyBbMSwyKSB8IFswMy0wMy0yMDE4LDA0LTA0LTIwMTgpIHwg b25lCisgWzIsMykgfCBbMDEtMDEtMjAxOCwwMS0xNS0yMDE4KSB8IHR3bworIFsyLDMpIHwg WzAyLTE1LTIwMTgsMDUtMDEtMjAxOCkgfCB0d28KKyBbMyw0KSB8IFswMS0wMS0yMDE4LCkg ICAgICAgICAgIHwgdGhyZWUKKyg4IHJvd3MpCisKK0RST1AgVEFCTEUgZm9yX3BvcnRpb25f b2ZfdGVzdDI7CitEUk9QIFRZUEUgbXlkYXRlcmFuZ2U7CistLSBUZXN0IEZPUiBQT1JUSU9O IE9GIGFnYWluc3QgYSBwYXJ0aXRpb25lZCB0YWJsZS4KKy0tIHRlbXBvcmFsX3BhcnRpdGlv bmVkXzEgaGFzIHRoZSBzYW1lIGF0dG51bXMgYXMgdGhlIHJvb3QKKy0tIHRlbXBvcmFsX3Bh cnRpdGlvbmVkXzMgaGFzIHRoZSBkaWZmZXJlbnQgYXR0bnVtcyBmcm9tIHRoZSByb290Cist LSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IGhhcyB0aGUgZGlmZmVyZW50IGF0dG51bXMgdG9v LCBidXQgcmV2ZXJzZWQKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCAoCisJ aWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVyYW5nZSwKKyAgbmFtZSB0ZXh0LAorCUNP TlNUUkFJTlQgdGVtcG9yYWxfcGFyaXRpb25lZF91cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKQorKSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOworQ1JFQVRFIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzEgUEFSVElUSU9OIE9GIHRlbXBvcmFsX3BhcnRp dGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbMSwxXScsICdbMiwyXScpOworQ1JFQVRFIFRBQkxF IHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMgUEFSVElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlv bmVkIEZPUiBWQUxVRVMgSU4gKCdbMywzXScsICdbNCw0XScpOworQ1JFQVRFIFRBQkxFIHRl bXBvcmFsX3BhcnRpdGlvbmVkXzUgUEFSVElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVk IEZPUiBWQUxVRVMgSU4gKCdbNSw1XScsICdbNiw2XScpOworQUxURVIgVEFCTEUgdGVtcG9y YWxfcGFydGl0aW9uZWQgREVUQUNIIFBBUlRJVElPTiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8z OworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBEUk9QIENPTFVNTiBpZCwg RFJPUCBDT0xVTU4gdmFsaWRfYXQ7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF8zIEFERCBDT0xVTU4gaWQgaW50NHJhbmdlIE5PVCBOVUxMLCBBREQgQ09MVU1OIHZhbGlk X2F0IGRhdGVyYW5nZSBOT1QgTlVMTDsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlv bmVkIEFUVEFDSCBQQVJUSVRJT04gdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBGT1IgVkFMVUVT IElOICgnWzMsM10nLCAnWzQsNF0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlv bmVkIERFVEFDSCBQQVJUSVRJT04gdGVtcG9yYWxfcGFydGl0aW9uZWRfNTsKK0FMVEVSIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgRFJPUCBDT0xVTU4gaWQsIERST1AgQ09MVU1O IHZhbGlkX2F0OworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBBREQgQ09M VU1OIHZhbGlkX2F0IGRhdGVyYW5nZSBOT1QgTlVMTCwgQUREIENPTFVNTiBpZCBpbnQ0cmFu Z2UgTk9UIE5VTEw7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBBVFRBQ0gg UEFSVElUSU9OIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgRk9SIFZBTFVFUyBJTiAoJ1s1LDVd JywgJ1s2LDZdJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBWQUxVRVMK KyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdv bmUnKSwKKyAgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAx JyksICd0aHJlZScpLAorICAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIw MTAtMDEtMDEnKSwgJ2ZpdmUnKTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9u ZWQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5hbWUgIAorLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBbMSwyKSB8IFswMS0wMS0y MDAwLDAxLTAxLTIwMTApIHwgb25lCisgWzMsNCkgfCBbMDEtMDEtMjAwMCwwMS0wMS0yMDEw KSB8IHRocmVlCisgWzUsNikgfCBbMDEtMDEtMjAwMCwwMS0wMS0yMDEwKSB8IGZpdmUKKygz IHJvd3MpCisKKy0tIFVwZGF0ZSB3aXRob3V0IG1vdmluZyB3aXRoaW4gcGFydGl0aW9uIDEK K1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDAwLTAzLTAxJyBUTyAnMjAwMC0wNC0wMScKKyAgU0VUIG5hbWUgPSAnb25lXjEn CisgIFdIRVJFIGlkID0gJ1sxLDFdJzsKKy0tIFVwZGF0ZSB3aXRob3V0IG1vdmluZyB3aXRo aW4gcGFydGl0aW9uIDMKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAzLTAxJyBUTyAnMjAwMC0wNC0wMScKKyAgU0VU IG5hbWUgPSAndGhyZWVeMScKKyAgV0hFUkUgaWQgPSAnWzMsM10nOworLS0gVXBkYXRlIHdp dGhvdXQgbW92aW5nIHdpdGhpbiBwYXJ0aXRpb24gNQorVVBEQVRFIHRlbXBvcmFsX3BhcnRp dGlvbmVkIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDMtMDEnIFRPICcy MDAwLTA0LTAxJworICBTRVQgbmFtZSA9ICdmaXZlXjEnCisgIFdIRVJFIGlkID0gJ1s1LDVd JzsKKy0tIE1vdmUgZnJvbSBwYXJ0aXRpb24gMSB0byBwYXJ0aXRpb24gMworVVBEQVRFIHRl bXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAt MDYtMDEnIFRPICcyMDAwLTA3LTAxJworICBTRVQgbmFtZSA9ICdvbmVeMicsCisgICAgICBp ZCA9ICdbNCw0XScKKyAgV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gTW92ZSBmcm9tIHBhcnRp dGlvbiAzIHRvIHBhcnRpdGlvbiAxCitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wNi0wMScgVE8gJzIwMDAtMDctMDEn CisgIFNFVCBuYW1lID0gJ3RocmVlXjInLAorICAgICAgaWQgPSAnWzIsMl0nCisgIFdIRVJF IGlkID0gJ1szLDNdJzsKKy0tIE1vdmUgZnJvbSBwYXJ0aXRpb24gNSB0byBwYXJ0aXRpb24g MworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMDAtMDYtMDEnIFRPICcyMDAwLTA3LTAxJworICBTRVQgbmFtZSA9ICdmaXZl XjInLAorICAgICAgaWQgPSAnWzMsM10nCisgIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIFVw ZGF0ZSBhbGwgcGFydGl0aW9ucyBhdCBvbmNlIChlYWNoIHdpdGggbGVmdG92ZXJzKQorU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7 CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8ICBuYW1lICAgCistLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tCisgWzEsMikgfCBbMDEtMDEt MjAwMCwwMy0wMS0yMDAwKSB8IG9uZQorIFsxLDIpIHwgWzAzLTAxLTIwMDAsMDQtMDEtMjAw MCkgfCBvbmVeMQorIFsxLDIpIHwgWzA0LTAxLTIwMDAsMDYtMDEtMjAwMCkgfCBvbmUKKyBb MSwyKSB8IFswNy0wMS0yMDAwLDAxLTAxLTIwMTApIHwgb25lCisgWzIsMykgfCBbMDYtMDEt MjAwMCwwNy0wMS0yMDAwKSB8IHRocmVlXjIKKyBbMyw0KSB8IFswMS0wMS0yMDAwLDAzLTAx LTIwMDApIHwgdGhyZWUKKyBbMyw0KSB8IFswMy0wMS0yMDAwLDA0LTAxLTIwMDApIHwgdGhy ZWVeMQorIFszLDQpIHwgWzA0LTAxLTIwMDAsMDYtMDEtMjAwMCkgfCB0aHJlZQorIFszLDQp IHwgWzA2LTAxLTIwMDAsMDctMDEtMjAwMCkgfCBmaXZlXjIKKyBbMyw0KSB8IFswNy0wMS0y MDAwLDAxLTAxLTIwMTApIHwgdGhyZWUKKyBbNCw1KSB8IFswNi0wMS0yMDAwLDA3LTAxLTIw MDApIHwgb25lXjIKKyBbNSw2KSB8IFswMS0wMS0yMDAwLDAzLTAxLTIwMDApIHwgZml2ZQor IFs1LDYpIHwgWzAzLTAxLTIwMDAsMDQtMDEtMjAwMCkgfCBmaXZlXjEKKyBbNSw2KSB8IFsw NC0wMS0yMDAwLDA2LTAxLTIwMDApIHwgZml2ZQorIFs1LDYpIHwgWzA3LTAxLTIwMDAsMDEt MDEtMjAxMCkgfCBmaXZlCisoMTUgcm93cykKKworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF8xIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICB2 YWxpZF9hdCAgICAgICAgIHwgIG5hbWUgICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0KKyBbMSwyKSB8IFswMS0wMS0yMDAwLDAzLTAxLTIwMDApIHwg b25lCisgWzEsMikgfCBbMDMtMDEtMjAwMCwwNC0wMS0yMDAwKSB8IG9uZV4xCisgWzEsMikg fCBbMDQtMDEtMjAwMCwwNi0wMS0yMDAwKSB8IG9uZQorIFsxLDIpIHwgWzA3LTAxLTIwMDAs MDEtMDEtMjAxMCkgfCBvbmUKKyBbMiwzKSB8IFswNi0wMS0yMDAwLDA3LTAxLTIwMDApIHwg dGhyZWVeMgorKDUgcm93cykKKworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF8zIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgbmFtZSAgIHwgIGlkICAgfCAgICAgICAg dmFsaWRfYXQgICAgICAgICAKKy0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyB0aHJlZSAgIHwgWzMsNCkgfCBbMDEtMDEtMjAwMCwwMy0wMS0yMDAwKQor IHRocmVlXjEgfCBbMyw0KSB8IFswMy0wMS0yMDAwLDA0LTAxLTIwMDApCisgdGhyZWUgICB8 IFszLDQpIHwgWzA0LTAxLTIwMDAsMDYtMDEtMjAwMCkKKyBmaXZlXjIgIHwgWzMsNCkgfCBb MDYtMDEtMjAwMCwwNy0wMS0yMDAwKQorIHRocmVlICAgfCBbMyw0KSB8IFswNy0wMS0yMDAw LDAxLTAxLTIwMTApCisgb25lXjIgICB8IFs0LDUpIHwgWzA2LTAxLTIwMDAsMDctMDEtMjAw MCkKKyg2IHJvd3MpCisKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBP UkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIG5hbWUgIHwgICAgICAgIHZhbGlkX2F0ICAgICAg ICAgfCAgaWQgICAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LQorIGZpdmUgICB8IFswMS0wMS0yMDAwLDAzLTAxLTIwMDApIHwgWzUsNikKKyBmaXZlXjEg fCBbMDMtMDEtMjAwMCwwNC0wMS0yMDAwKSB8IFs1LDYpCisgZml2ZSAgIHwgWzA0LTAxLTIw MDAsMDYtMDEtMjAwMCkgfCBbNSw2KQorIGZpdmUgICB8IFswNy0wMS0yMDAwLDAxLTAxLTIw MTApIHwgWzUsNikKKyg0IHJvd3MpCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9u ZWQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHku b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dAppbmRleCA3 NjEwYjAxMWQ2Li5kYTA3OWNmYzU4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL29wcl9zYW5pdHkub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv b3ByX3Nhbml0eS5vdXQKQEAgLTE5NDIsNiArMTk0Miw3IEBAIFdIRVJFIGExLmFtb3BmYW1p bHkgPSAwIE9SIGExLmFtb3BsZWZ0dHlwZSA9IDAgT1IgYTEuYW1vcHJpZ2h0dHlwZSA9IDAK IFNFTEVDVCBhMS5hbW9wZmFtaWx5LCBhMS5hbW9wc3RyYXRlZ3kKIEZST00gcGdfYW1vcCBh cyBhMQogV0hFUkUgTk9UICgoYTEuYW1vcHB1cnBvc2UgPSAncycgQU5EIGExLmFtb3Bzb3J0 ZmFtaWx5ID0gMCkgT1IKKyAgICAgICAgICAgKGExLmFtb3BwdXJwb3NlID0gJ3AnIEFORCBh MS5hbW9wc29ydGZhbWlseSA9IDApIE9SCiAgICAgICAgICAgIChhMS5hbW9wcHVycG9zZSA9 ICdvJyBBTkQgYTEuYW1vcHNvcnRmYW1pbHkgPD4gMCkpOwogIGFtb3BmYW1pbHkgfCBhbW9w c3RyYXRlZ3kgCiAtLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KQEAgLTIwMDgsNiArMjAw OSw5IEBAIE9SREVSIEJZIDEsIDIsIDM7CiAgICAgICAgIDc4MyB8ICAgICAgICAgICAyOCB8 IDxACiAgICAgICAgIDc4MyB8ICAgICAgICAgICAyOSB8IDxeCiAgICAgICAgIDc4MyB8ICAg ICAgICAgICAzMCB8ID5eCisgICAgICAgIDc4MyB8ICAgICAgICAgICAzMSB8ICMKKyAgICAg ICAgNzgzIHwgICAgICAgICAgIDMxIHwgKgorICAgICAgICA3ODMgfCAgICAgICAgICAgMzIg fCBALQogICAgICAgICA3ODMgfCAgICAgICAgICAgNDggfCA8QAogICAgICAgICA3ODMgfCAg ICAgICAgICAgNjggfCA8QAogICAgICAgIDI3NDIgfCAgICAgICAgICAgIDEgfCAmJgpAQCAt MjA4OCw3ICsyMDkyLDcgQEAgT1JERVIgQlkgMSwgMiwgMzsKICAgICAgICA0MDAwIHwgICAg ICAgICAgIDI4IHwgXkAKICAgICAgICA0MDAwIHwgICAgICAgICAgIDI5IHwgPF4KICAgICAg ICA0MDAwIHwgICAgICAgICAgIDMwIHwgPl4KLSgxMjQgcm93cykKKygxMjcgcm93cykKIAog LS0gQ2hlY2sgdGhhdCBhbGwgb3BjbGFzcyBzZWFyY2ggb3BlcmF0b3JzIGhhdmUgc2VsZWN0 aXZpdHkgZXN0aW1hdG9ycy4KIC0tIFRoaXMgaXMgbm90IGFic29sdXRlbHkgcmVxdWlyZWQs IGJ1dCBpdCBzZWVtcyBhIHJlYXNvbmFibGUgdGhpbmcKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3ByaXZpbGVnZXMub3V0CmluZGV4IGZiYjA0ODlhNGYuLjMzOTVkMjE1MGYgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdlcy5vdXQKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wcml2aWxlZ2VzLm91dApAQCAtOTg1LDYg Kzk4NSwyNCBAQCBFUlJPUjogIG51bGwgdmFsdWUgaW4gY29sdW1uICJiIiBvZiByZWxhdGlv biAiZXJydHN0X3BhcnRfMiIgdmlvbGF0ZXMgbm90LW51bGwgYwogREVUQUlMOiAgRmFpbGlu ZyByb3cgY29udGFpbnMgKGEsIGIsIGMpID0gKGFhYWEsIG51bGwsIGNjYykuCiBTRVQgU0VT U0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKIERST1AgVEFCTEUgZXJy dHN0OworLS0gdGVzdCBjb2x1bW4tbGV2ZWwgcHJpdmlsZWdlcyBvbiB0aGUgcmFuZ2UvUEVS SU9EIHVzZWQgaW4gRk9SIFBPUlRJT04gT0YKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04g cmVncmVzc19wcml2X3VzZXIxOworQ1JFQVRFIFRBQkxFIHQxICgKKyAgYzEgaW50NHJhbmdl LAorICB2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdDFwayBQUklNQVJZIEtFWSAo YzEsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworR1JBTlQgU0VMRUNUIE9OIHQx IFRPIHJlZ3Jlc3NfcHJpdl91c2VyMjsKK0dSQU5UIFNFTEVDVCBPTiB0MSBUTyByZWdyZXNz X3ByaXZfdXNlcjM7CitHUkFOVCBVUERBVEUgKGMxKSBPTiB0MSBUTyByZWdyZXNzX3ByaXZf dXNlcjI7CitHUkFOVCBVUERBVEUgKGMxLCB2YWxpZF9hdCkgT04gdDEgVE8gcmVncmVzc19w cml2X3VzZXIzOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNl cjI7CitVUERBVEUgdDEgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0w MScgVE8gJzIwMDEtMDEtMDEnIFNFVCBjMSA9ICdbMiwzKSc7CitFUlJPUjogIHBlcm1pc3Np b24gZGVuaWVkIGZvciB0YWJsZSB0MQorU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdy ZXNzX3ByaXZfdXNlcjM7CitVUERBVEUgdDEgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAwMC0wMS0wMScgVE8gJzIwMDEtMDEtMDEnIFNFVCBjMSA9ICdbMiwzKSc7CitTRVQg U0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKK0RST1AgVEFCTEUg dDE7CiAtLSB0ZXN0IGNvbHVtbi1sZXZlbCBwcml2aWxlZ2VzIHdoZW4gaW52b2x2ZWQgd2l0 aCBERUxFVEUKIFNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIx OwogQUxURVIgVEFCTEUgYXRlc3Q2IEFERCBDT0xVTU4gdGhyZWUgaW50ZWdlcjsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dAppbmRleCBh NzNjMWY5MGM0Li43MjdhZDA4ZTA4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC91cGRhdGFibGVfdmlld3Mub3V0CkBAIC0zMDIwLDYgKzMwMjAsMzggQEAgc2VsZWN0 ICogZnJvbSB1dl9pb2N1X3RhYjsKIAogZHJvcCB2aWV3IHV2X2lvY3VfdmlldzsKIGRyb3Ag dGFibGUgdXZfaW9jdV90YWI7CistLSBDaGVjayBVUERBVEUgRk9SIFBPUlRJT04gT0Ygd29y a3MgY29ycmVjdGx5CitjcmVhdGUgdGFibGUgdXZfZnBvX3RhYiAoaWQgaW50NHJhbmdlLCB2 YWxpZF9hdCB0c3JhbmdlLCBiIGZsb2F0LAorICAgIGNvbnN0cmFpbnQgcGtfdXZfZnBvX3Rh YiBwcmltYXJ5IGtleSAoaWQsIHZhbGlkX2F0IHdpdGhvdXQgb3ZlcmxhcHMpKTsKK2luc2Vy dCBpbnRvIHV2X2Zwb190YWIgdmFsdWVzICgnWzEsMV0nLCAnWzIwMjAtMDEtMDEsIDIwMzAt MDEtMDEpJywgMCk7CitjcmVhdGUgdmlldyB1dl9mcG9fdmlldyBhcworICAgIHNlbGVjdCBi LCBiKzEgYXMgYywgdmFsaWRfYXQsIGlkLCAnMi4wJzo6dGV4dCBhcyB0d28gZnJvbSB1dl9m cG9fdGFiOworaW5zZXJ0IGludG8gdXZfZnBvX3ZpZXcgKGlkLCB2YWxpZF9hdCwgYikgdmFs dWVzICgnWzEsMV0nLCAnWzIwMTAtMDEtMDEsIDIwMjAtMDEtMDEpJywgMSk7CitzZWxlY3Qg KiBmcm9tIHV2X2Zwb192aWV3OworIGIgfCBjIHwgICAgICAgICAgICAgICAgICAgICAgICB2 YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBpZCAgIHwgdHdvIAorLS0tKy0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLSstLS0tLQorIDAgfCAxIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIw MjAiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAiKSB8IFsxLDIpIHwgMi4wCisgMSB8IDIg fCBbIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAxMCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAy MCIpIHwgWzEsMikgfCAyLjAKKygyIHJvd3MpCisKK3VwZGF0ZSB1dl9mcG9fdmlldyBmb3Ig cG9ydGlvbiBvZiB2YWxpZF9hdCBmcm9tICcyMDE1LTAxLTAxJyB0byAnMjAyMC0wMS0wMScg c2V0IGIgPSAyIHdoZXJlIGlkID0gJ1sxLDFdJzsKK3NlbGVjdCAqIGZyb20gdXZfZnBvX3Zp ZXc7CisgYiB8IGMgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAg ICAgICAgICAgICAgICAgIHwgIGlkICAgfCB0d28gCistLS0rLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0t LS0tCisgMCB8IDEgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIlR1ZSBKYW4gMDEg MDA6MDA6MDAgMjAzMCIpIHwgWzEsMikgfCAyLjAKKyAyIHwgMyB8IFsiVGh1IEphbiAwMSAw MDowMDowMCAyMDE1IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbMSwyKSB8IDIu MAorIDEgfCAyIHwgWyJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMTAiLCJUaHUgSmFuIDAxIDAw OjAwOjAwIDIwMTUiKSB8IFsxLDIpIHwgMi4wCisoMyByb3dzKQorCitkZWxldGUgZnJvbSB1 dl9mcG9fdmlldyBmb3IgcG9ydGlvbiBvZiB2YWxpZF9hdCBmcm9tICcyMDE3LTAxLTAxJyB0 byAnMjAyMi0wMS0wMScgd2hlcmUgaWQgPSAnWzEsMV0nOworc2VsZWN0ICogZnJvbSB1dl9m cG9fdmlldzsKKyBiIHwgYyB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgaWQgICB8IHR3byAKKy0tLSstLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0rLS0tLS0KKyAxIHwgMiB8IFsiRnJpIEphbiAwMSAwMDowMDowMCAyMDEwIiwiVGh1IEph biAwMSAwMDowMDowMCAyMDE1IikgfCBbMSwyKSB8IDIuMAorIDAgfCAxIHwgWyJTYXQgSmFu IDAxIDAwOjAwOjAwIDIwMjIiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAiKSB8IFsxLDIp IHwgMi4wCisgMiB8IDMgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIlN1biBKYW4g MDEgMDA6MDA6MDAgMjAxNyIpIHwgWzEsMikgfCAyLjAKKygzIHJvd3MpCisKIC0tIFRlc3Qg d2hvbGUtcm93IHJlZmVyZW5jZXMgdG8gdGhlIHZpZXcKIGNyZWF0ZSB0YWJsZSB1dl9pb2N1 X3RhYiAoYSBpbnQgdW5pcXVlLCBiIHRleHQpOwogY3JlYXRlIHZpZXcgdXZfaW9jdV92aWV3 IGFzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3Zl cmxhcHMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBz Lm91dAppbmRleCAzNGYwZTdiM2JlLi5iNDdjNWIzZjNkIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKQEAgLTMwNSw2ICszMDUs MzYgQEAgSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRfYXQsIGlkMiwgbmFtZSkK ICAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdb Nyw3XScsICdmb28nKSwKICAgKCdbMiwyXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcy MDEwLTAxLTAxJyksICdbOSw5XScsICdiYXInKQogOworVVBEQVRFIHRlbXBvcmFsMyBGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA1LTAxJyBUTyAnMjAwMC0wNy0wMScK KyAgU0VUIG5hbWUgPSBuYW1lIHx8ICcxJzsKK1VQREFURSB0ZW1wb3JhbDMgRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wNC0wMScgVE8gJzIwMDAtMDYtMDEnCisgIFNF VCBuYW1lID0gbmFtZSB8fCAnMicKKyAgV0hFUkUgaWQgPSAnWzIsMl0nOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbDMgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAg IHZhbGlkX2F0ICAgICAgICAgfCAgaWQyICAgfCBuYW1lICAKKy0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tCisgWzEsMikgfCBbMDEtMDEtMjAw MCwwNS0wMS0yMDAwKSB8IFs3LDgpICB8IGZvbworIFsxLDIpIHwgWzA1LTAxLTIwMDAsMDct MDEtMjAwMCkgfCBbNyw4KSAgfCBmb28xCisgWzEsMikgfCBbMDctMDEtMjAwMCwwMS0wMS0y MDEwKSB8IFs3LDgpICB8IGZvbworIFsyLDMpIHwgWzAxLTAxLTIwMDAsMDQtMDEtMjAwMCkg fCBbOSwxMCkgfCBiYXIKKyBbMiwzKSB8IFswNC0wMS0yMDAwLDA1LTAxLTIwMDApIHwgWzks MTApIHwgYmFyMgorIFsyLDMpIHwgWzA1LTAxLTIwMDAsMDYtMDEtMjAwMCkgfCBbOSwxMCkg fCBiYXIxMgorIFsyLDMpIHwgWzA2LTAxLTIwMDAsMDctMDEtMjAwMCkgfCBbOSwxMCkgfCBi YXIxCisgWzIsMykgfCBbMDctMDEtMjAwMCwwMS0wMS0yMDEwKSB8IFs5LDEwKSB8IGJhcgor KDggcm93cykKKworLS0gY29uZmxpY3RpbmcgaWQgb25seToKK0lOU0VSVCBJTlRPIHRlbXBv cmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUpCisgIFZBTFVFUworICAoJ1sxLDFdJywg ZGF0ZXJhbmdlKCcyMDA1LTAxLTAxJywgJzIwMDYtMDEtMDEnKSwgJ1s4LDhdJywgJ2ZvbzMn KTsKK0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBj b25zdHJhaW50ICJ0ZW1wb3JhbDNfcGsiCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9 KFsxLDIpLCBbMDEtMDEtMjAwNSwwMS0wMS0yMDA2KSkgY29uZmxpY3RzIHdpdGggZXhpc3Rp bmcga2V5IChpZCwgdmFsaWRfYXQpPShbMSwyKSwgWzA3LTAxLTIwMDAsMDEtMDEtMjAxMCkp LgorLS0gY29uZmxpY3RpbmcgaWQyIG9ubHk6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbDMgKGlk LCB2YWxpZF9hdCwgaWQyLCBuYW1lKQorICBWQUxVRVMKKyAgKCdbMywzXScsIGRhdGVyYW5n ZSgnMjAwNS0wMS0wMScsICcyMDEwLTAxLTAxJyksICdbOSw5XScsICdiYXIzJyk7CitFUlJP UjogIGNvbmZsaWN0aW5nIGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWlu dCAidGVtcG9yYWwzX3VuaXEiCitERVRBSUw6ICBLZXkgKGlkMiwgdmFsaWRfYXQpPShbOSwx MCksIFswMS0wMS0yMDA1LDAxLTAxLTIwMTApKSBjb25mbGljdHMgd2l0aCBleGlzdGluZyBr ZXkgKGlkMiwgdmFsaWRfYXQpPShbOSwxMCksIFswNy0wMS0yMDAwLDAxLTAxLTIwMTApKS4K IERST1AgVEFCTEUgdGVtcG9yYWwzOwogLS0KIC0tIHRlc3QgY2hhbmdpbmcgdGhlIFBLJ3Mg ZGVwZW5kZW5jaWVzCkBAIC0zNTcsNiArMzg3LDM2IEBAIFNFTEVDVCAqIEZST00gdHAyIE9S REVSIEJZIGlkLCB2YWxpZF9hdDsKICBbMyw0KSB8IFswMS0wMS0yMDAwLDAxLTAxLTIwMTAp IHwgdGhyZWUKICgxIHJvdykKIAorVVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0x NScKKyAgU0VUIG5hbWUgPSAnb25lMicKKyAgV0hFUkUgaWQgPSAnWzEsMV0nOworVVBEQVRF ICB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDAwLTAyLTIwJyBUTyAnMjAwMC0wMi0yNScKKyAgU0VUIGlkID0gJ1s0LDRdJworICBX SEVSRSBuYW1lID0gJ29uZSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDItMDEtMDEnIFRPICcyMDAzLTAxLTAx JworICBTRVQgaWQgPSAnWzIsMl0nCisgIFdIRVJFIG5hbWUgPSAndGhyZWUnOworREVMRVRF IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAwMC0wMS0xNScgVE8gJzIwMDAtMDItMTUnCisgIFdIRVJFIGlkID0gJ1szLDNd JzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZh bGlkX2F0OworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1lICAKKy0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tCisgWzEsMikgfCBbMDEt MDEtMjAwMCwwMS0xNS0yMDAwKSB8IG9uZQorIFsxLDIpIHwgWzAxLTE1LTIwMDAsMDItMDEt MjAwMCkgfCBvbmUyCisgWzEsMikgfCBbMDItMDEtMjAwMCwwMi0xNS0yMDAwKSB8IG9uZTIK KyBbMSwyKSB8IFswMi0xNS0yMDAwLDAyLTIwLTIwMDApIHwgb25lCisgWzEsMikgfCBbMDIt MjUtMjAwMCwwMy0wMS0yMDAwKSB8IG9uZQorIFsyLDMpIHwgWzAxLTAxLTIwMDIsMDEtMDEt MjAwMykgfCB0aHJlZQorIFszLDQpIHwgWzAxLTAxLTIwMDAsMDEtMTUtMjAwMCkgfCB0aHJl ZQorIFszLDQpIHwgWzAyLTE1LTIwMDAsMDEtMDEtMjAwMikgfCB0aHJlZQorIFszLDQpIHwg WzAxLTAxLTIwMDMsMDEtMDEtMjAxMCkgfCB0aHJlZQorIFs0LDUpIHwgWzAyLTIwLTIwMDAs MDItMjUtMjAwMCkgfCBvbmUKKygxMCByb3dzKQorCiBEUk9QIFRBQkxFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkOwogLS0gdGVtcG9yYWwgVU5JUVVFOgogQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X3BhcnRpdGlvbmVkICgKQEAgLTM5Miw2ICs0NTIsMzYgQEAgU0VMRUNUICogRlJPTSB0cDIg T1JERVIgQlkgaWQsIHZhbGlkX2F0OwogIFszLDQpIHwgWzAxLTAxLTIwMDAsMDEtMDEtMjAx MCkgfCB0aHJlZQogKDEgcm93KQogCitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisg IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEtMTUnIFRPICcyMDAwLTAy LTE1JworICBTRVQgbmFtZSA9ICdvbmUyJworICBXSEVSRSBpZCA9ICdbMSwxXSc7CitVUERB VEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMDAtMDItMjAnIFRPICcyMDAwLTAyLTI1JworICBTRVQgaWQgPSAnWzQsNF0nCisg IFdIRVJFIG5hbWUgPSAnb25lJzsKK1VQREFURSAgdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAg Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMi0wMS0wMScgVE8gJzIwMDMtMDEt MDEnCisgIFNFVCBpZCA9ICdbMiwyXScKKyAgV0hFUkUgbmFtZSA9ICd0aHJlZSc7CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScKKyAgV0hFUkUgaWQgPSAnWzMs M10nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwg dmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5hbWUgIAor LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBbMSwyKSB8IFsw MS0wMS0yMDAwLDAxLTE1LTIwMDApIHwgb25lCisgWzEsMikgfCBbMDEtMTUtMjAwMCwwMi0w MS0yMDAwKSB8IG9uZTIKKyBbMSwyKSB8IFswMi0wMS0yMDAwLDAyLTE1LTIwMDApIHwgb25l MgorIFsxLDIpIHwgWzAyLTE1LTIwMDAsMDItMjAtMjAwMCkgfCBvbmUKKyBbMSwyKSB8IFsw Mi0yNS0yMDAwLDAzLTAxLTIwMDApIHwgb25lCisgWzIsMykgfCBbMDEtMDEtMjAwMiwwMS0w MS0yMDAzKSB8IHRocmVlCisgWzMsNCkgfCBbMDEtMDEtMjAwMCwwMS0xNS0yMDAwKSB8IHRo cmVlCisgWzMsNCkgfCBbMDItMTUtMjAwMCwwMS0wMS0yMDAyKSB8IHRocmVlCisgWzMsNCkg fCBbMDEtMDEtMjAwMywwMS0wMS0yMDEwKSB8IHRocmVlCisgWzQsNSkgfCBbMDItMjAtMjAw MCwwMi0yNS0yMDAwKSB8IG9uZQorKDEwIHJvd3MpCisKIERST1AgVEFCTEUgdGVtcG9yYWxf cGFydGl0aW9uZWQ7CiAtLQogLS0gdGVzdCBGSyBkZXBlbmRlbmNpZXMKQEAgLTY4MiwxMyAr NzcyLDI1IEBAIFVQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s3LDddJwogV0hFUkUg aWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAx OC0wMi0wMScpOwogRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1wb3Jh bF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3Ju ZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIgogREVUQUlMOiAgS2V5 IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJU aHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRh YmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KKy0tIGNoYW5naW5nIGFuIHVucmVmZXJlbmNl ZCBwYXJ0IGlzIG9rYXk6CitVUERBVEUgdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE4LTAxLTAyJyBUTyAnMjAxOC0wMS0wMycKK1NFVCBpZCA9ICdb Nyw3XScKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGNoYW5naW5nIGp1c3QgYSBwYXJ0IGZh aWxzOgorVVBEQVRFIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOC0wMS0wNScgVE8gJzIwMTgtMDEtMTAnCitTRVQgaWQgPSAnWzcsN10nCitXSEVS RSBpZCA9ICdbNSw1XSc7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRl bXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxf Zmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6 ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIldlZCBKYW4gMDMgMDA6MDA6MDAgMjAx OCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZy b20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgogLS0gdGhlbiBkZWxldGUgdGhlIG9i amVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKIERF TEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOwogVVBE QVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywg JzIwMTYtMDItMDEnKQogV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwogLS0gY2xlYW4gdXA6CiBERUxFVEUg RlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7Ci1E RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworREVMRVRFIEZS T00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzUsNV0nLCAnWzcsN10nKTsKIC0tCiAt LSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFJFU1RSSUNUCiAtLQpAQCAtNzE5LDEzICs4MjEs MjUgQEAgVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nCiBXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJyk7CiBFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3Ju ZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJu Z19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCiBERVRBSUw6ICBLZXkgKGlk LCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBG ZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUg InRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0gY2hhbmdpbmcgYW4gdW5yZWZlcmVuY2VkIHBh cnQgaXMgb2theToKK1VQREFURSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTgtMDEtMDInIFRPICcyMDE4LTAxLTAzJworU0VUIGlkID0gJ1s3LDdd JworV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gY2hhbmdpbmcganVzdCBhIHBhcnQgZmFpbHM6 CitVUERBVEUgdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDE4LTAxLTA1JyBUTyAnMjAxOC0wMS0xMCcKK1NFVCBpZCA9ICdbNyw3XScKK1dIRVJFIGlk ID0gJ1s1LDVdJzsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9y YWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19y bmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtl eSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiV2VkIEphbiAwMyAwMDowMDowMCAyMDE4Iiwi VGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0 YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCiAtLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0 aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgogREVMRVRF IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CiBVUERBVEUg dGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAx Ni0wMi0wMScpCiBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CiAtLSBjbGVhbiB1cDoKIERFTEVURSBGUk9N IHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKLURFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNSw1XScsICdbNyw3XScpOwogLS0KIC0tIHRl c3QgRksgcGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCiAtLQpAQCAtNzQ3LDkgKzg2MSwyMiBA QCBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxp ZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLAogREVMRVRFIEZST00gdGVtcG9yYWxfcm5n IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKTsKIEVSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAi dGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3Jh bF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKIERFVEFJ TDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAy MDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQg ZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSBkZWxldGluZyBhbiB1bnJl ZmVyZW5jZWQgcGFydCBpcyBva2F5OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nCitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTAyJyBUTyAnMjAxOC0wMS0wMycK K1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGRlbGV0aW5nIGp1c3QgYSBwYXJ0IGZhaWxzOgor REVMRVRFIEZST00gdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE4LTAxLTA1JyBUTyAnMjAxOC0wMS0xMCcKK1dIRVJFIGlkID0gJ1s1LDVdJzsKK0VS Uk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRl cyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0 YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0 KT0oWzUsNiksIFsiV2VkIEphbiAwMyAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDow MDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxf Zmtfcm5nMnJuZyIuCiAtLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBh bmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgogREVMRVRFIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9y bmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNSw1XScpOwogLS0KIC0tIHRlc3QgRksgcGFy ZW50IGRlbGV0ZXMgUkVTVFJJQ1QKIC0tCkBAIC03NzEsOSArODk4LDIyIEBAIERFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxOC0wMi0wMScsCiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0w Mi0wMScpOwogRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9y bmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJy bmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIgogREVUQUlMOiAgS2V5IChp ZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUg RmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxl ICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KKy0tIGRlbGV0aW5nIGFuIHVucmVmZXJlbmNlZCBw YXJ0IGlzIG9rYXk6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDInIFRPICcyMDE4LTAxLTAzJworV0hFUkUgaWQg PSAnWzUsNV0nOworLS0gZGVsZXRpbmcganVzdCBhIHBhcnQgZmFpbHM6CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEt MDUnIFRPICcyMDE4LTAxLTEwJworV0hFUkUgaWQgPSAnWzUsNV0nOworRVJST1I6ICB1cGRh dGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24g a2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1w b3JhbF9ma19ybmcycm5nIgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwg WyJXZWQgSmFuIDAzIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgi KSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5n Ii4KIC0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2Ft ZSBQSyBkZWxldGUgc3VjY2VlZHM6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5n IFdIRVJFIGlkID0gJ1szLDNdJzsKIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBp ZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4 LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJy bmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3Ju ZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJyk7CiAtLQogLS0gdGVzdCBPTiBVUERBVEUvREVMRVRF IG9wdGlvbnMKIC0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3Nj aGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCBiMDhh YWFlNDRiLi5jYzJmNmI0NmUwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFs bGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUK QEAgLTQ4LDcgKzQ4LDcgQEAgdGVzdDogY3JlYXRlX2luZGV4IGNyZWF0ZV9pbmRleF9zcGdp c3QgY3JlYXRlX3ZpZXcgaW5kZXhfaW5jbHVkaW5nIGluZGV4X2luY2x1ZGkKICMgLS0tLS0t LS0tLQogIyBBbm90aGVyIGdyb3VwIG9mIHBhcmFsbGVsIHRlc3RzCiAjIC0tLS0tLS0tLS0K LXRlc3Q6IGNyZWF0ZV9hZ2dyZWdhdGUgY3JlYXRlX2Z1bmN0aW9uX3NxbCBjcmVhdGVfY2Fz dCBjb25zdHJhaW50cyB0cmlnZ2VycyBzZWxlY3QgaW5oZXJpdCB0eXBlZF90YWJsZSB2YWN1 dW0gZHJvcF9pZl9leGlzdHMgdXBkYXRhYmxlX3ZpZXdzIHJvbGVhdHRyaWJ1dGVzIGNyZWF0 ZV9hbSBoYXNoX2Z1bmMgZXJyb3JzIGluZmluaXRlX3JlY3Vyc2UKK3Rlc3Q6IGNyZWF0ZV9h Z2dyZWdhdGUgY3JlYXRlX2Z1bmN0aW9uX3NxbCBjcmVhdGVfY2FzdCBjb25zdHJhaW50cyB0 cmlnZ2VycyBzZWxlY3QgaW5oZXJpdCB0eXBlZF90YWJsZSB2YWN1dW0gZHJvcF9pZl9leGlz dHMgdXBkYXRhYmxlX3ZpZXdzIHJvbGVhdHRyaWJ1dGVzIGNyZWF0ZV9hbSBoYXNoX2Z1bmMg ZXJyb3JzIGluZmluaXRlX3JlY3Vyc2UgZm9yX3BvcnRpb25fb2YKIAogIyAtLS0tLS0tLS0t CiAjIHNhbml0eV9jaGVjayBkb2VzIGEgdmFjdXVtLCBhZmZlY3RpbmcgdGhlIHNvcnQgb3Jk ZXIgb2YgU0VMRUNUICoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9w b3J0aW9uX29mLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29mLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi42MDEwYzVkOTRmCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yu c3FsCkBAIC0wLDAgKzEsNDIzIEBACistLSBUZXN0cyBmb3IgVVBEQVRFL0RFTEVURSBGT1Ig UE9SVElPTiBPRgorCistLSBXb3JrcyBvbiBub24tUEsgY29sdW1ucworQ1JFQVRFIFRBQkxF IGZvcl9wb3J0aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0IHRz cmFuZ2UsCisgIG5hbWUgdGV4dCBOT1QgTlVMTAorKTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0 aW9uX29mX3Rlc3QgVkFMVUVTCisoJ1sxLDFdJywgJ1syMDE4LTAxLTAyLDIwMjAtMDEtMDEp JywgJ29uZScpOworCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0xNScgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFt ZSA9ICdmb28nOworCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTE1JyBUTyBOVUxMOworCitTRUxFQ1Qg KiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CisKKy0tIFdvcmtzIG9uIG1vcmUgdGhhbiBv bmUgcmFuZ2UKK0RST1AgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdDsKK0NSRUFURSBUQUJM RSBmb3JfcG9ydGlvbl9vZl90ZXN0ICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxpZDFfYXQg dHNyYW5nZSwKKyAgdmFsaWQyX2F0IHRzcmFuZ2UsCisgIG5hbWUgdGV4dCBOT1QgTlVMTAor KTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rlc3QgVkFMVUVTCisoJ1sxLDFdJywg J1syMDE4LTAxLTAyLDIwMTgtMDItMDMpJywgJ1syMDE1LTAxLTAxLDIwMjUtMDEtMDEpJywg J29uZScpOworCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0Yg dmFsaWQxX2F0IEZST00gJzIwMTgtMDEtMTUnIFRPIE5VTEwKK1NFVCBuYW1lID0gJ2Zvbyc7 CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CisKK1VQREFURSBmb3JfcG9y dGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZDJfYXQgRlJPTSAnMjAxOC0wMS0x NScgVE8gTlVMTAorU0VUIG5hbWUgPSAnYmFyJzsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRp b25fb2ZfdGVzdDsKKworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWQxX2F0IEZST00gJzIwMTgtMDEtMjAnIFRPIE5VTEw7CitTRUxFQ1Qg KiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9u X29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkMl9hdCBGUk9NICcyMDE4LTAxLTIwJyBU TyBOVUxMOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworCistLSBUZXN0 IHdpdGggTlVMTHMgaW4gdGhlIHNjYWxhci9yYW5nZSBrZXkgY29sdW1ucy4KKy0tIFRoaXMg d29uJ3QgaGFwcGVuIGlmIHRoZXJlIGlzIGEgUFJJTUFSWSBLRVkgb3IgVU5JUVVFIGNvbnN0 cmFpbnQKKy0tIGJ1dCBGT1IgUE9SVElPTiBPRiBzaG91bGRuJ3QgcmVxdWlyZSB0aGF0Lgor RFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0OworQ1JFQVRFIFVOTE9HR0VEIFRBQkxF IGZvcl9wb3J0aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0IHRz cmFuZ2UsCisgIG5hbWUgdGV4dAorKTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rl c3QgVkFMVUVTCisgICgnWzEsMV0nLCBOVUxMLCAnMSBudWxsJyksCisgICgnWzEsMV0nLCAn KCwpJywgJzEgdW5ib3VuZGVkJyksCisgICgnWzEsMV0nLCAnZW1wdHknLCAnMSBlbXB0eScp LAorICAoTlVMTCwgTlVMTCwgTlVMTCksCisgIChOVUxMLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTktMDEtMDEnKSwgJ251bGwga2V5Jyk7CitVUERBVEUgZm9yX3BvcnRpb25fb2Zf dGVzdAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gTlVMTAorICBT RVQgbmFtZSA9ICdOVUxMIHRvIE5VTEwnOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9v Zl90ZXN0OworCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CitDUkVBVEUgVEFC TEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5nZSBOT1QgTlVMTCwKKyAg dmFsaWRfYXQgdHNyYW5nZSBOT1QgTlVMTCwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMLAorCUNP TlNUUkFJTlQgZm9yX3BvcnRpb25fb2ZfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKQorKTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rlc3QK K1ZBTFVFUworKCdbMSwxXScsICdbMjAxOC0wMS0wMiwyMDE4LTAyLTAzKScsICdvbmUnKSwK KygnWzEsMV0nLCAnWzIwMTgtMDItMDMsMjAxOC0wMy0wMyknLCAnb25lJyksCisoJ1sxLDFd JywgJ1syMDE4LTAzLTAzLDIwMTgtMDQtMDQpJywgJ29uZScpLAorKCdbMiwyXScsICdbMjAx OC0wMS0wMSwyMDE4LTAxLTA1KScsICd0d28nKSwKKygnWzMsM10nLCAnWzIwMTgtMDEtMDEs KScsICd0aHJlZScpLAorKCdbNCw0XScsICcoLDIwMTgtMDQtMDEpJywgJ2ZvdXInKSwKKygn WzUsNV0nLCAnKCwpJywgJ2ZpdmUnKQorOworCistLQorLS0gVVBEQVRFIHRlc3RzCistLQor CistLSBTZXR0aW5nIHdpdGggYSBtaXNzaW5nIGNvbHVtbiBmYWlscworVVBEQVRFIGZvcl9w b3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0w Ni0wMScgVE8gTlVMTAorU0VUIG5hbWUgPSAnZm9vJworV0hFUkUgaWQgPSAnWzUsNV0nOwor CistLSBTZXR0aW5nIHRoZSByYW5nZSBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rl c3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPIE5VTEwK K1NFVCB2YWxpZF9hdCA9ICdbMTk5MC0wMS0wMSwxOTk5LTAxLTAxKScKK1dIRVJFIGlkID0g J1s1LDVdJzsKKworLS0gVGhlIHdyb25nIHR5cGUgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlv bl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIDEgVE8gNAorU0VUIG5h bWUgPSAnbm9wZScKK1dIRVJFIGlkID0gJ1szLDNdJzsKKworLS0gU2V0dGluZyB3aXRoIHRp bWVzdGFtcHMgcmV2ZXJzZWQgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyAnMjAxOC0wMS0w MScKK1NFVCBuYW1lID0gJ3RocmVlXjEnCitXSEVSRSBpZCA9ICdbMywzXSc7CisKKy0tIFNl dHRpbmcgd2l0aCBhIHN1YnF1ZXJ5IGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVz dAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAoU0VMRUNUICcyMDE4LTAxLTAxJykg VE8gJzIwMTgtMDYtMDEnCitTRVQgbmFtZSA9ICdub3BlJworV0hFUkUgaWQgPSAnWzMsM10n OworCistLSBTZXR0aW5nIHdpdGggYSBjb2x1bW4gZmFpbHMKK1VQREFURSBmb3JfcG9ydGlv bl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIGxvd2VyKHZhbGlkX2F0 KSBUTyBOVUxMCitTRVQgbmFtZSA9ICdub3BlJworV0hFUkUgaWQgPSAnWzMsM10nOworCist LSBTZXR0aW5nIHdpdGggdGltZXN0YW1wcyBlcXVhbCBkb2VzIG5vdGhpbmcKK1VQREFURSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4 LTA0LTAxJyBUTyAnMjAxOC0wNC0wMScKK1NFVCBuYW1lID0gJ3RocmVlXjAnCitXSEVSRSBp ZCA9ICdbMywzXSc7CisKKy0tIFVwZGF0aW5nIGEgZmluaXRlL29wZW4gcG9ydGlvbiB3aXRo IGEgZmluaXRlL29wZW4gdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTlVMTAorU0VUIG5h bWUgPSAndGhyZWVeMScKK1dIRVJFIGlkID0gJ1szLDNdJzsKKworLS0gVXBkYXRpbmcgYSBm aW5pdGUvb3BlbiBwb3J0aW9uIHdpdGggYW4gb3Blbi9maW5pdGUgdGFyZ2V0CitVUERBVEUg Zm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxM IFRPICcyMDE4LTAzLTAxJworU0VUIG5hbWUgPSAndGhyZWVeMicKK1dIRVJFIGlkID0gJ1sz LDNdJzsKKworLS0gVXBkYXRpbmcgYW4gb3Blbi9maW5pdGUgcG9ydGlvbiB3aXRoIGFuIG9w ZW4vZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyAnMjAxOC0wMi0wMScKK1NFVCBuYW1lID0g J2ZvdXJeMScKK1dIRVJFIGlkID0gJ1s0LDRdJzsKKworLS0gVXBkYXRpbmcgYW4gb3Blbi9m aW5pdGUgcG9ydGlvbiB3aXRoIGEgZmluaXRlL29wZW4gdGFyZ2V0CitVUERBVEUgZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0w MScgVE8gTlVMTAorU0VUIG5hbWUgPSAnZm91cl4yJworV0hFUkUgaWQgPSAnWzQsNF0nOwor CistLSBVcGRhdGluZyBhIGZpbml0ZS9maW5pdGUgcG9ydGlvbiB3aXRoIGFuIGV4YWN0IGZp dAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTctMDEtMDEnIFRPICcyMDE4LTAyLTAxJworU0VUIG5hbWUgPSAnZm91cl4z JworV0hFUkUgaWQgPSAnWzQsNF0nOworCistLSBVcGRhdGluZyBhbiBlbmNsb3NlZCBzcGFu CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSBOVUxMIFRPIE5VTEwKK1NFVCBuYW1lID0gJ3R3b14yJworV0hFUkUgaWQgPSAnWzIs Ml0nOworCistLSBVcGRhdGluZyBhbiBvcGVuL29wZW4gcG9ydGlvbiB3aXRoIGEgZmluaXRl L2Zpbml0ZSB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTAxJyBUTyAnMjAxOS0wMS0wMScKK1NFVCBu YW1lID0gJ2ZpdmVeMicKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKworLS0gVXBkYXRpbmcgYW4g ZW5jbG9zZWQgc3BhbiB3aXRoIHNlcGFyYXRlIHByb3RydWRpbmcgc3BhbnMKK1VQREFURSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE3 LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScKK1NFVCBuYW1lID0gJ2ZpdmVeMycKK1dIRVJFIGlk ID0gJ1s1LDVdJzsKKworLS0gVXBkYXRpbmcgbXVsdGlwbGUgZW5jbG9zZWQgc3BhbnMKK1VQ REFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N IE5VTEwgVE8gTlVMTAorU0VUIG5hbWUgPSAnb25lXjInCitXSEVSRSBpZCA9ICdbMSwxXSc7 CisKKy0tIFVwZGF0aW5nIHdpdGggYSBzaGlmdC9yZWR1Y2UgY29uZmxpY3QKK1VQREFURSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdAorICBGUk9NICcy MDE4LTAzLTAxJyBBVCBUSU1FIFpPTkUgSU5URVJWQUwgJzEnIEhPVVIgVE8gTUlOVVRFCisg IFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAnb25lXjMnCitXSEVSRSBpZCA9ICdbMSwx XSc7CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdAorICBGUk9NICcyMDE4LTAzLTAxJyBBVCBUSU1FIFpPTkUgSU5URVJWQUwgJzInIEhP VVIKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdvbmVeNCcKK1dIRVJFIGlkID0g J1sxLDFdJzsKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0CisgIEZST00gKCcyMDE4LTAzLTAxJyBBVCBUSU1FIFpPTkUgSU5URVJWQUwg JzInIEhPVVIpCisgIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAnb25lXjQnCitXSEVS RSBpZCA9ICdbMSwxXSc7CisKKy0tIFdpdGggYSBkaXJlY3QgdGFyZ2V0CitVUERBVEUgZm9y X3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgKHRzcmFuZ2UoJzIw MTgtMDMtMTAnLCAnMjAxOC0wMy0xNycpKQorU0VUIG5hbWUgPSAnb25lXjUnCitXSEVSRSBp ZCA9ICdbMSwxXSc7CisKKy0tIFVwZGF0aW5nIHRoZSBub24tcmFuZ2UgcGFydCBvZiB0aGUg UEs6CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAxOC0wMi0xNScgVE8gTlVMTAorU0VUIGlkID0gJ1s2LDZdJworV0hFUkUg aWQgPSAnWzEsMV0nOworCistLSBVUERBVEUgd2l0aCBubyBXSEVSRSBjbGF1c2UKK1VQREFU RSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDMwLTAxLTAxJyBUTyBOVUxMCitTRVQgbmFtZSA9IG5hbWUgfHwgJyonOworCitTRUxFQ1Qg KiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworCist LQorLS0gREVMRVRFIHRlc3RzCistLQorCistLSBEZWxldGluZyB3aXRoIGEgbWlzc2luZyBj b2x1bW4gZmFpbHMKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTlVMTAorV0hFUkUgaWQg PSAnWzUsNV0nOworCistLSBEZWxldGluZyB3aXRoIHRpbWVzdGFtcHMgcmV2ZXJzZWQgZmFp bHMKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPICcyMDE4LTAxLTAxJworV0hFUkUgaWQgPSAn WzMsM10nOworCistLSBEZWxldGluZyB3aXRoIHRpbWVzdGFtcHMgZXF1YWwgZG9lcyBub3Ro aW5nCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyAnMjAxOC0wNC0wMScKK1dIRVJFIGlkID0g J1szLDNdJzsKKworLS0gRGVsZXRpbmcgd2l0aCBhIGNsb3NlZC9jbG9zZWQgdGFyZ2V0CitE RUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE4LTA2LTAxJyBUTyAnMjAyMC0wNi0wMScKK1dIRVJFIGlkID0gJ1s1LDVd JzsKKworLS0gRGVsZXRpbmcgd2l0aCBhIGNsb3NlZC9vcGVuIHRhcmdldAorREVMRVRFIEZS T00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOC0wNC0wMScgVE8gTlVMTAorV0hFUkUgaWQgPSAnWzMsM10nOworCistLSBEZWxldGlu ZyB3aXRoIGFuIG9wZW4vY2xvc2VkIHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRpb25f b2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPICcyMDE4LTAy LTA4JworV0hFUkUgaWQgPSAnWzEsMV0nOworCistLSBEZWxldGluZyB3aXRoIGFuIG9wZW4v b3BlbiB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyBOVUxMCitXSEVSRSBpZCA9ICdbNiw2XSc7 CisKKy0tIERFTEVURSB3aXRoIG5vIFdIRVJFIGNsYXVzZQorREVMRVRFIEZST00gZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAyNS0wMS0w MScgVE8gTlVMTDsKKworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0IE9SREVS IEJZIGlkLCB2YWxpZF9hdDsKKworLS0gVVBEQVRFIC4uLiBSRVRVUk5JTkcgcmV0dXJucyBv bmx5IHRoZSB1cGRhdGVkIHZhbHVlcyAobm90IHRoZSBpbnNlcnRlZCBzaWRlIHZhbHVlcykK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE4LTAyLTAxJyBUTyAnMjAxOC0wMi0xNScKK1NFVCBuYW1lID0gJ3RocmVlXjMn CitXSEVSRSBpZCA9ICdbMywzXScKK1JFVFVSTklORyAqOworCistLSB0ZXN0IHRoYXQgd2Ug cnVuIHRyaWdnZXJzIG9uIHRoZSBVUERBVEUvREVMRVRFZCByb3cgYW5kIHRoZSBJTlNFUlRl ZCByb3dzCisKK0NSRUFURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCkKK1JF VFVSTlMgdHJpZ2dlcgorQVMKKyQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJyUgJSAlIG9m ICUnLCBUR19XSEVOLCBUR19PUCwgTkVXLnZhbGlkX2F0LCBPTEQudmFsaWRfYXQ7CisgIElG IFRHX09QID0gJ0RFTEVURScgVEhFTgorICAgIFJFVFVSTiBPTEQ7CisgIEVMU0UKKyAgICBS RVRVUk4gTkVXOworICBFTkQgSUY7CitFTkQ7CiskJAorTEFOR1VBR0UgcGxwZ3NxbDsKKwor Q1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2JlZm9yZQorICBCRUZPUkUgSU5T RVJUIE9SIFVQREFURSBPUiBERUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1Ig RUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCk7 CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYWZ0ZXIKKyAgQUZURVIgSU5T RVJUIE9SIFVQREFURSBPUiBERUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1Ig RUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCk7 CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDIxLTAxLTAxJyBUTyAnMjAyMi0wMS0wMScKK1NFVCBuYW1lID0gJ2ZpdmVe NCcKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAyMy0wMS0wMScgVE8gJzIw MjQtMDEtMDEnCitXSEVSRSBpZCA9ICdbNSw1XSc7CisKK1NFTEVDVCAqIEZST00gZm9yX3Bv cnRpb25fb2ZfdGVzdCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisKKy0tIFRlc3Qgd2l0aCBh IGN1c3RvbSByYW5nZSB0eXBlCisKK0NSRUFURSBUWVBFIG15ZGF0ZXJhbmdlIEFTIHJhbmdl KHN1YnR5cGU9ZGF0ZSk7CisKK0NSRUFURSBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0MiAo CisgIGlkIGludDRyYW5nZSBOT1QgTlVMTCwKKyAgdmFsaWRfYXQgbXlkYXRlcmFuZ2UgTk9U IE5VTEwsCisgIG5hbWUgdGV4dCBOT1QgTlVMTCwKKwlDT05TVFJBSU5UIGZvcl9wb3J0aW9u X29mX3Rlc3QyX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UykKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0MgorVkFMVUVTCisoJ1sx LDFdJywgJ1syMDE4LTAxLTAyLDIwMTgtMDItMDMpJywgJ29uZScpLAorKCdbMSwxXScsICdb MjAxOC0wMi0wMywyMDE4LTAzLTAzKScsICdvbmUnKSwKKygnWzEsMV0nLCAnWzIwMTgtMDMt MDMsMjAxOC0wNC0wNCknLCAnb25lJyksCisoJ1syLDJdJywgJ1syMDE4LTAxLTAxLDIwMTgt MDUtMDEpJywgJ3R3bycpLAorKCdbMywzXScsICdbMjAxOC0wMS0wMSwpJywgJ3RocmVlJyk7 Cis7CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0MgorRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOC0wMS0xMCcgVE8gJzIwMTgtMDItMTAnCitTRVQgbmFtZSA9ICdv bmVeMScKK1dIRVJFIGlkID0gJ1sxLDFdJzsKKworREVMRVRFIEZST00gZm9yX3BvcnRpb25f b2ZfdGVzdDIKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMTUnIFRP ICcyMDE4LTAyLTE1JworV0hFUkUgaWQgPSAnWzIsMl0nOworCitTRUxFQ1QgKiBGUk9NIGZv cl9wb3J0aW9uX29mX3Rlc3QyIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKworRFJPUCBUQUJM RSBmb3JfcG9ydGlvbl9vZl90ZXN0MjsKK0RST1AgVFlQRSBteWRhdGVyYW5nZTsKKworLS0g VGVzdCBGT1IgUE9SVElPTiBPRiBhZ2FpbnN0IGEgcGFydGl0aW9uZWQgdGFibGUuCistLSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF8xIGhhcyB0aGUgc2FtZSBhdHRudW1zIGFzIHRoZSByb290 CistLSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIGhhcyB0aGUgZGlmZmVyZW50IGF0dG51bXMg ZnJvbSB0aGUgcm9vdAorLS0gdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBoYXMgdGhlIGRpZmZl cmVudCBhdHRudW1zIHRvbywgYnV0IHJldmVyc2VkCisKK0NSRUFURSBUQUJMRSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVyYW5nZSwK KyAgbmFtZSB0ZXh0LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFyaXRpb25lZF91cSBVTklR VUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKSBQQVJUSVRJT04gQlkgTElT VCAoaWQpOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzEgUEFSVElUSU9O IE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbMSwxXScsICdbMiwy XScpOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMgUEFSVElUSU9OIE9G IHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbMywzXScsICdbNCw0XScp OworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgUEFSVElUSU9OIE9GIHRl bXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbNSw1XScsICdbNiw2XScpOwor CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBERVRBQ0ggUEFSVElUSU9OIHRl bXBvcmFsX3BhcnRpdGlvbmVkXzM7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF8zIERST1AgQ09MVU1OIGlkLCBEUk9QIENPTFVNTiB2YWxpZF9hdDsKK0FMVEVSIFRBQkxF IHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMgQUREIENPTFVNTiBpZCBpbnQ0cmFuZ2UgTk9UIE5V TEwsIEFERCBDT0xVTU4gdmFsaWRfYXQgZGF0ZXJhbmdlIE5PVCBOVUxMOworQUxURVIgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgQVRUQUNIIFBBUlRJVElPTiB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF8zIEZPUiBWQUxVRVMgSU4gKCdbMywzXScsICdbNCw0XScpOworCitBTFRFUiBU QUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBERVRBQ0ggUEFSVElUSU9OIHRlbXBvcmFsX3Bh cnRpdGlvbmVkXzU7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IERST1Ag Q09MVU1OIGlkLCBEUk9QIENPTFVNTiB2YWxpZF9hdDsKK0FMVEVSIFRBQkxFIHRlbXBvcmFs X3BhcnRpdGlvbmVkXzUgQUREIENPTFVNTiB2YWxpZF9hdCBkYXRlcmFuZ2UgTk9UIE5VTEws IEFERCBDT0xVTU4gaWQgaW50NHJhbmdlIE5PVCBOVUxMOworQUxURVIgVEFCTEUgdGVtcG9y YWxfcGFydGl0aW9uZWQgQVRUQUNIIFBBUlRJVElPTiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81 IEZPUiBWQUxVRVMgSU4gKCdbNSw1XScsICdbNiw2XScpOworCitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9wYXJ0aXRpb25lZCBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0w MS0wMScsICcyMDEwLTAxLTAxJyksICdvbmUnKSwKKyAgKCdbMywzXScsIGRhdGVyYW5nZSgn MjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICd0aHJlZScpLAorICAoJ1s1LDVdJywgZGF0 ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ2ZpdmUnKTsKKworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKKworLS0gVXBkYXRlIHdpdGhvdXQgbW92 aW5nIHdpdGhpbiBwYXJ0aXRpb24gMQorVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDMtMDEnIFRPICcyMDAwLTA0LTAx JworICBTRVQgbmFtZSA9ICdvbmVeMScKKyAgV0hFUkUgaWQgPSAnWzEsMV0nOworCistLSBV cGRhdGUgd2l0aG91dCBtb3Zpbmcgd2l0aGluIHBhcnRpdGlvbiAzCitVUERBVEUgdGVtcG9y YWxfcGFydGl0aW9uZWQgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMy0w MScgVE8gJzIwMDAtMDQtMDEnCisgIFNFVCBuYW1lID0gJ3RocmVlXjEnCisgIFdIRVJFIGlk ID0gJ1szLDNdJzsKKworLS0gVXBkYXRlIHdpdGhvdXQgbW92aW5nIHdpdGhpbiBwYXJ0aXRp b24gNQorVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMDAtMDMtMDEnIFRPICcyMDAwLTA0LTAxJworICBTRVQgbmFtZSA9ICdm aXZlXjEnCisgIFdIRVJFIGlkID0gJ1s1LDVdJzsKKworLS0gTW92ZSBmcm9tIHBhcnRpdGlv biAxIHRvIHBhcnRpdGlvbiAzCitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wNi0wMScgVE8gJzIwMDAtMDctMDEnCisg IFNFVCBuYW1lID0gJ29uZV4yJywKKyAgICAgIGlkID0gJ1s0LDRdJworICBXSEVSRSBpZCA9 ICdbMSwxXSc7CisKKy0tIE1vdmUgZnJvbSBwYXJ0aXRpb24gMyB0byBwYXJ0aXRpb24gMQor VVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMDAtMDYtMDEnIFRPICcyMDAwLTA3LTAxJworICBTRVQgbmFtZSA9ICd0aHJlZV4y JywKKyAgICAgIGlkID0gJ1syLDJdJworICBXSEVSRSBpZCA9ICdbMywzXSc7CisKKy0tIE1v dmUgZnJvbSBwYXJ0aXRpb24gNSB0byBwYXJ0aXRpb24gMworVVBEQVRFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDYtMDEnIFRP ICcyMDAwLTA3LTAxJworICBTRVQgbmFtZSA9ICdmaXZlXjInLAorICAgICAgaWQgPSAnWzMs M10nCisgIFdIRVJFIGlkID0gJ1s1LDVdJzsKKworLS0gVXBkYXRlIGFsbCBwYXJ0aXRpb25z IGF0IG9uY2UgKGVhY2ggd2l0aCBsZWZ0b3ZlcnMpCisKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF8xIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgT1JERVIgQlkgaWQsIHZhbGlk X2F0OworCitEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvb3ByX3Nhbml0eS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNz L3NxbC9vcHJfc2FuaXR5LnNxbAppbmRleCAyZmU3YjZkY2M0Li4yZGZmZTdjNWI2IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9vcHJfc2FuaXR5LnNxbAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9vcHJfc2FuaXR5LnNxbApAQCAtMTI0MSw2ICsxMjQxLDcgQEAg V0hFUkUgYTEuYW1vcGZhbWlseSA9IDAgT1IgYTEuYW1vcGxlZnR0eXBlID0gMCBPUiBhMS5h bW9wcmlnaHR0eXBlID0gMAogU0VMRUNUIGExLmFtb3BmYW1pbHksIGExLmFtb3BzdHJhdGVn eQogRlJPTSBwZ19hbW9wIGFzIGExCiBXSEVSRSBOT1QgKChhMS5hbW9wcHVycG9zZSA9ICdz JyBBTkQgYTEuYW1vcHNvcnRmYW1pbHkgPSAwKSBPUgorICAgICAgICAgICAoYTEuYW1vcHB1 cnBvc2UgPSAncCcgQU5EIGExLmFtb3Bzb3J0ZmFtaWx5ID0gMCkgT1IKICAgICAgICAgICAg KGExLmFtb3BwdXJwb3NlID0gJ28nIEFORCBhMS5hbW9wc29ydGZhbWlseSA8PiAwKSk7CiAK IC0tIGFtb3BtZXRob2QgbXVzdCBtYXRjaCBvd25pbmcgb3BmYW1pbHkncyBvcGZtZXRob2QK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ByaXZpbGVnZXMuc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcHJpdmlsZWdlcy5zcWwKaW5kZXggM2Y2OGNhZmNkMS4uZTEw YWRkZWQ5ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHJpdmlsZWdlcy5z cWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHJpdmlsZWdlcy5zcWwKQEAgLTcxMyw2 ICs3MTMsMjQgQEAgVVBEQVRFIGVycnRzdCBTRVQgYSA9ICdhYWFhJywgYiA9IE5VTEwgV0hF UkUgYSA9ICdhYWEnOwogU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZf dXNlcjE7CiBEUk9QIFRBQkxFIGVycnRzdDsKIAorLS0gdGVzdCBjb2x1bW4tbGV2ZWwgcHJp dmlsZWdlcyBvbiB0aGUgcmFuZ2UvUEVSSU9EIHVzZWQgaW4gRk9SIFBPUlRJT04gT0YKK1NF VCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIxOworQ1JFQVRFIFRB QkxFIHQxICgKKyAgYzEgaW50NHJhbmdlLAorICB2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNU UkFJTlQgdDFwayBQUklNQVJZIEtFWSAoYzEsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp CispOworR1JBTlQgU0VMRUNUIE9OIHQxIFRPIHJlZ3Jlc3NfcHJpdl91c2VyMjsKK0dSQU5U IFNFTEVDVCBPTiB0MSBUTyByZWdyZXNzX3ByaXZfdXNlcjM7CitHUkFOVCBVUERBVEUgKGMx KSBPTiB0MSBUTyByZWdyZXNzX3ByaXZfdXNlcjI7CitHUkFOVCBVUERBVEUgKGMxLCB2YWxp ZF9hdCkgT04gdDEgVE8gcmVncmVzc19wcml2X3VzZXIzOworU0VUIFNFU1NJT04gQVVUSE9S SVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjI7CitVUERBVEUgdDEgRk9SIFBPUlRJT04gT0Yg dmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0wMScgVE8gJzIwMDEtMDEtMDEnIFNFVCBjMSA9ICdb MiwzKSc7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMzsK K1VQREFURSB0MSBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTAxJyBU TyAnMjAwMS0wMS0wMScgU0VUIGMxID0gJ1syLDMpJzsKK1NFVCBTRVNTSU9OIEFVVEhPUkla QVRJT04gcmVncmVzc19wcml2X3VzZXIxOworRFJPUCBUQUJMRSB0MTsKKwogLS0gdGVzdCBj b2x1bW4tbGV2ZWwgcHJpdmlsZWdlcyB3aGVuIGludm9sdmVkIHdpdGggREVMRVRFCiBTRVQg U0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKIEFMVEVSIFRBQkxF IGF0ZXN0NiBBREQgQ09MVU1OIHRocmVlIGludGVnZXI7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC91cGRhdGFibGVfdmlld3Muc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvdXBkYXRhYmxlX3ZpZXdzLnNxbAppbmRleCBlYWVlMGI3ZTFkLi5mODE0NzAxYTQzIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC91cGRhdGFibGVfdmlld3Muc3FsCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5zcWwKQEAgLTE1NDEs NiArMTU0MSwyMCBAQCBzZWxlY3QgKiBmcm9tIHV2X2lvY3VfdGFiOwogZHJvcCB2aWV3IHV2 X2lvY3VfdmlldzsKIGRyb3AgdGFibGUgdXZfaW9jdV90YWI7CiAKKy0tIENoZWNrIFVQREFU RSBGT1IgUE9SVElPTiBPRiB3b3JrcyBjb3JyZWN0bHkKK2NyZWF0ZSB0YWJsZSB1dl9mcG9f dGFiIChpZCBpbnQ0cmFuZ2UsIHZhbGlkX2F0IHRzcmFuZ2UsIGIgZmxvYXQsCisgICAgY29u c3RyYWludCBwa191dl9mcG9fdGFiIHByaW1hcnkga2V5IChpZCwgdmFsaWRfYXQgd2l0aG91 dCBvdmVybGFwcykpOworaW5zZXJ0IGludG8gdXZfZnBvX3RhYiB2YWx1ZXMgKCdbMSwxXScs ICdbMjAyMC0wMS0wMSwgMjAzMC0wMS0wMSknLCAwKTsKK2NyZWF0ZSB2aWV3IHV2X2Zwb192 aWV3IGFzCisgICAgc2VsZWN0IGIsIGIrMSBhcyBjLCB2YWxpZF9hdCwgaWQsICcyLjAnOjp0 ZXh0IGFzIHR3byBmcm9tIHV2X2Zwb190YWI7CisKK2luc2VydCBpbnRvIHV2X2Zwb192aWV3 IChpZCwgdmFsaWRfYXQsIGIpIHZhbHVlcyAoJ1sxLDFdJywgJ1syMDEwLTAxLTAxLCAyMDIw LTAxLTAxKScsIDEpOworc2VsZWN0ICogZnJvbSB1dl9mcG9fdmlldzsKK3VwZGF0ZSB1dl9m cG9fdmlldyBmb3IgcG9ydGlvbiBvZiB2YWxpZF9hdCBmcm9tICcyMDE1LTAxLTAxJyB0byAn MjAyMC0wMS0wMScgc2V0IGIgPSAyIHdoZXJlIGlkID0gJ1sxLDFdJzsKK3NlbGVjdCAqIGZy b20gdXZfZnBvX3ZpZXc7CitkZWxldGUgZnJvbSB1dl9mcG9fdmlldyBmb3IgcG9ydGlvbiBv ZiB2YWxpZF9hdCBmcm9tICcyMDE3LTAxLTAxJyB0byAnMjAyMi0wMS0wMScgd2hlcmUgaWQg PSAnWzEsMV0nOworc2VsZWN0ICogZnJvbSB1dl9mcG9fdmlldzsKKwogLS0gVGVzdCB3aG9s ZS1yb3cgcmVmZXJlbmNlcyB0byB0aGUgdmlldwogY3JlYXRlIHRhYmxlIHV2X2lvY3VfdGFi IChhIGludCB1bmlxdWUsIGIgdGV4dCk7CiBjcmVhdGUgdmlldyB1dl9pb2N1X3ZpZXcgYXMK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKaW5kZXggZTM2 MjY4MzQ2ZC4uNzgwZGUwYTVkYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv d2l0aG91dF9vdmVybGFwcy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91 dF9vdmVybGFwcy5zcWwKQEAgLTIzMSw2ICsyMzEsMjAgQEAgSU5TRVJUIElOVE8gdGVtcG9y YWwzIChpZCwgdmFsaWRfYXQsIGlkMiwgbmFtZSkKICAgKCdbMSwxXScsIGRhdGVyYW5nZSgn MjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdbNyw3XScsICdmb28nKSwKICAgKCdbMiwy XScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdbOSw5XScsICdi YXInKQogOworVVBEQVRFIHRlbXBvcmFsMyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDAwLTA1LTAxJyBUTyAnMjAwMC0wNy0wMScKKyAgU0VUIG5hbWUgPSBuYW1lIHx8ICcx JzsKK1VQREFURSB0ZW1wb3JhbDMgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAw MC0wNC0wMScgVE8gJzIwMDAtMDYtMDEnCisgIFNFVCBuYW1lID0gbmFtZSB8fCAnMicKKyAg V0hFUkUgaWQgPSAnWzIsMl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbDMgT1JERVIgQlkg aWQsIHZhbGlkX2F0OworLS0gY29uZmxpY3RpbmcgaWQgb25seToKK0lOU0VSVCBJTlRPIHRl bXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUpCisgIFZBTFVFUworICAoJ1sxLDFd JywgZGF0ZXJhbmdlKCcyMDA1LTAxLTAxJywgJzIwMDYtMDEtMDEnKSwgJ1s4LDhdJywgJ2Zv bzMnKTsKKy0tIGNvbmZsaWN0aW5nIGlkMiBvbmx5OgorSU5TRVJUIElOVE8gdGVtcG9yYWwz IChpZCwgdmFsaWRfYXQsIGlkMiwgbmFtZSkKKyAgVkFMVUVTCisgICgnWzMsM10nLCBkYXRl cmFuZ2UoJzIwMDUtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnWzksOV0nLCAnYmFyMycpOwog RFJPUCBUQUJMRSB0ZW1wb3JhbDM7CiAKIC0tCkBAIC0yNjksNiArMjgzLDIyIEBAIElOU0VS VCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkIFZBTFVFUwogU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9N IHRwMSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBC WSBpZCwgdmFsaWRfYXQ7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEtMTUnIFRPICcyMDAwLTAyLTE1Jwor ICBTRVQgbmFtZSA9ICdvbmUyJworICBXSEVSRSBpZCA9ICdbMSwxXSc7CitVUERBVEUgIHRl bXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MDAtMDItMjAnIFRPICcyMDAwLTAyLTI1JworICBTRVQgaWQgPSAnWzQsNF0nCisgIFdIRVJF IG5hbWUgPSAnb25lJzsKK1VQREFURSAgdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMi0wMS0wMScgVE8gJzIwMDMtMDEtMDEnCisg IFNFVCBpZCA9ICdbMiwyXScKKyAgV0hFUkUgbmFtZSA9ICd0aHJlZSc7CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScKKyAgV0hFUkUgaWQgPSAnWzMsM10nOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRf YXQ7CiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOwogCiAtLSB0ZW1wb3JhbCBV TklRVUU6CkBAIC0yODcsNiArMzE3LDIyIEBAIElOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRp dGlvbmVkIFZBTFVFUwogU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRF UiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMSBPUkRFUiBCWSBpZCwgdmFs aWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitVUERB VEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMDAtMDEtMTUnIFRPICcyMDAwLTAyLTE1JworICBTRVQgbmFtZSA9ICdvbmUyJwor ICBXSEVSRSBpZCA9ICdbMSwxXSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisg IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDItMjAnIFRPICcyMDAwLTAy LTI1JworICBTRVQgaWQgPSAnWzQsNF0nCisgIFdIRVJFIG5hbWUgPSAnb25lJzsKK1VQREFU RSAgdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAwMi0wMS0wMScgVE8gJzIwMDMtMDEtMDEnCisgIFNFVCBpZCA9ICdbMiwyXScKKyAg V0hFUkUgbmFtZSA9ICd0aHJlZSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1JyBUTyAnMjAw MC0wMi0xNScKKyAgV0hFUkUgaWQgPSAnWzMsM10nOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBEUk9QIFRBQkxFIHRlbXBv cmFsX3BhcnRpdGlvbmVkOwogCiAtLQpAQCAtNTQ3LDEzICs1OTMsMjMgQEAgV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0w Mi0wMScpOwogLS0gY2hhbmdpbmcgdGhlIHNjYWxhciBwYXJ0IGZhaWxzOgogVVBEQVRFIHRl bXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nCiBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZh bGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjaGFu Z2luZyBhbiB1bnJlZmVyZW5jZWQgcGFydCBpcyBva2F5OgorVVBEQVRFIHRlbXBvcmFsX3Ju ZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wMicgVE8gJzIwMTgt MDEtMDMnCitTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBjaGFu Z2luZyBqdXN0IGEgcGFydCBmYWlsczoKK1VQREFURSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDUnIFRPICcyMDE4LTAxLTEwJworU0VU IGlkID0gJ1s3LDddJworV0hFUkUgaWQgPSAnWzUsNV0nOwogLS0gdGhlbiBkZWxldGUgdGhl IG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoK IERFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOwog VVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAx JywgJzIwMTYtMDItMDEnKQogV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwogLS0gY2xlYW4gdXA6CiBERUxF VEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7 Ci1ERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworREVMRVRF IEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzUsNV0nLCAnWzcsN10nKTsKIAog LS0KIC0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgUkVTVFJJQ1QKQEAgLTU4MiwxMyArNjM4 LDIzIEBAIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKIC0tIGNoYW5naW5nIHRoZSBzY2FsYXIgcGFydCBm YWlsczoKIFVQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s3LDddJwogV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0w Mi0wMScpOworLS0gY2hhbmdpbmcgYW4gdW5yZWZlcmVuY2VkIHBhcnQgaXMgb2theToKK1VQ REFURSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgt MDEtMDInIFRPICcyMDE4LTAxLTAzJworU0VUIGlkID0gJ1s3LDddJworV0hFUkUgaWQgPSAn WzUsNV0nOworLS0gY2hhbmdpbmcganVzdCBhIHBhcnQgZmFpbHM6CitVUERBVEUgdGVtcG9y YWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTA1JyBUTyAn MjAxOC0wMS0xMCcKK1NFVCBpZCA9ICdbNyw3XScKK1dIRVJFIGlkID0gJ1s1LDVdJzsKIC0t IHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyB1 cGRhdGUgc3VjY2VlZHM6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJF IGlkID0gJ1szLDNdJzsKIFVQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKIFdIRVJFIGlkID0gJ1s1LDVdJyBB TkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKIC0t IGNsZWFuIHVwOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBwYXJl bnRfaWQgPSAnWzUsNV0nOwotREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0g J1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVd JywgJ1s3LDddJyk7CiAtLQogLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBOTyBBQ1RJT04K IC0tCkBAIC02MDgsMTQgKzY3NCwyNCBAQCBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcy cm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLQog REVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRf YXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKIC0tIGEgUEsgZGVs ZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgogREVMRVRFIEZS T00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGRlbGV0aW5nIGFuIHVucmVm ZXJlbmNlZCBwYXJ0IGlzIG9rYXk6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDInIFRPICcyMDE4LTAxLTAzJwor V0hFUkUgaWQgPSAnWzUsNV0nOworLS0gZGVsZXRpbmcganVzdCBhIHBhcnQgZmFpbHM6CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTgtMDEtMDUnIFRPICcyMDE4LTAxLTEwJworV0hFUkUgaWQgPSAnWzUsNV0nOwogLS0g dGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRl bGV0ZSBzdWNjZWVkczoKIERFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUg aWQgPSAnWzMsM10nOwogREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEn KTsKKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVS RSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJF IGlkIElOICgnWzUsNV0nKTsKIAogLS0KIC0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgUkVT VFJJQ1QKIC0tCi0KIEFMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKIAlEUk9QIENP TlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazsKIEFMVEVSIFRBQkxFIHRlbXBvcmFs X2ZrX3JuZzJybmcKQEAgLTYzMiw5ICs3MDgsMjAgQEAgSU5TRVJUIElOVE8gdGVtcG9yYWxf Zmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAx OC0wMS0KIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5E IHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CiAtLSBh IFBLIGRlbGV0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKIERF TEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0 ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBkZWxldGluZyBh biB1bnJlZmVyZW5jZWQgcGFydCBpcyBva2F5OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5n CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTAyJyBUTyAnMjAxOC0w MS0wMycKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGRlbGV0aW5nIGp1c3QgYSBwYXJ0IGZh aWxzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE4LTAxLTA1JyBUTyAnMjAxOC0wMS0xMCcKK1dIRVJFIGlkID0gJ1s1LDVd JzsKIC0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2Ft ZSBQSyBkZWxldGUgc3VjY2VlZHM6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5n IFdIRVJFIGlkID0gJ1szLDNdJzsKIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBp ZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4 LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJy bmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3Ju ZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJyk7CiAKIC0tCiAtLSB0ZXN0IE9OIFVQREFURS9ERUxF VEUgb3B0aW9ucwotLSAKMi40Mi4wCgo= --------------F56VWTQ0Ck05qER7bvQmfAru Content-Type: text/x-patch; charset=UTF-8; name="v21-0007-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.patch" Content-Disposition: attachment; filename*0="v21-0007-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBhY2Q4MGQ5NGU1MmIyZjYzMjY1ZTdmNmM1NGUzOWU0MzlkM2ZkNzFkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgMyBKdW4gMjAyMyAyMTo0MToxMSAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggdjIxIDcvOF0gQWRkIENBU0NBREUvU0VUIE5VTEwvU0VUIERF RkFVTFQgZm9yIHRlbXBvcmFsIGZvcmVpZ24KIGtleXMKCi0tLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgIDQyICstCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyAgICAgICAgICAgfCA1NDkgKysrKysrKysrKystCiBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgMjAgKwog Li4uL3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgICAgIHwgODI3ICsr KysrKysrKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFw cy5zcWwgICAgIHwgNDM4ICsrKysrKysrKy0KIDUgZmlsZXMgY2hhbmdlZCwgMTgzNiBpbnNl cnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5j CmluZGV4IGFkNWRjNjE2MzguLjRjZjE4Yjc1ODQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jCkBAIC01MTIsNyArNTEyLDcgQEAgc3RhdGljIE9iamVjdEFkZHJlc3MgYWRkRmtS ZWN1cnNlUmVmZXJlbmNlZChMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmEK IAkJCQkJCQkJCQkJYm9vbCBvbGRfY2hlY2tfb2ssCiAJCQkJCQkJCQkJCU9pZCBwYXJlbnRE ZWxUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlciwKIAkJCQkJCQkJCQkJYm9vbCBpc190 ZW1wb3JhbCk7Ci1zdGF0aWMgdm9pZCB2YWxpZGF0ZUZrT25EZWxldGVTZXRDb2x1bW5zKGlu dCBudW1ma3MsIGNvbnN0IGludDE2ICpma2F0dG51bXMsCitzdGF0aWMgdm9pZCB2YWxpZGF0 ZUZrT25EZWxldGVTZXRDb2x1bW5zKGludCBudW1ma3MsIGNvbnN0IGludDE2ICpma2F0dG51 bXMsIGNvbnN0IGludDE2ICpma3BlcmlvZGF0dG51bXMsCiAJCQkJCQkJCQkJIGludCBudW1m a3NldGNvbHMsIGNvbnN0IGludDE2ICpma3NldGNvbHNhdHRudW1zLAogCQkJCQkJCQkJCSBM aXN0ICpma3NldGNvbHMpOwogc3RhdGljIHZvaWQgYWRkRmtSZWN1cnNlUmVmZXJlbmNpbmco TGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LApAQCAtOTY1OCw3ICs5 NjU4LDcgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRl cmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAludW1ma2RlbHNldGNvbHMgPSB0 cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChSZWxhdGlvbkdldFJlbGlkKHJlbCksCiAJCQkJCQkJ CQkJCSAgZmtjb25zdHJhaW50LT5ma19kZWxfc2V0X2NvbHMsCiAJCQkJCQkJCQkJCSAgZmtk ZWxzZXRjb2xzLCBOVUxMKTsKLQl2YWxpZGF0ZUZrT25EZWxldGVTZXRDb2x1bW5zKG51bWZr cywgZmthdHRudW0sCisJdmFsaWRhdGVGa09uRGVsZXRlU2V0Q29sdW1ucyhudW1ma3MsIGZr YXR0bnVtLCBma3BlcmlvZGF0dG51bXMsCiAJCQkJCQkJCSBudW1ma2RlbHNldGNvbHMsIGZr ZGVsc2V0Y29scywKIAkJCQkJCQkJIGZrY29uc3RyYWludC0+ZmtfZGVsX3NldF9jb2xzKTsK IApAQCAtOTg0MSwxMiArOTg0MSwxNSBAQCBBVEFkZEZvcmVpZ25LZXlDb25zdHJhaW50KExp c3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogICov CiB2b2lkCiB2YWxpZGF0ZUZrT25EZWxldGVTZXRDb2x1bW5zKGludCBudW1ma3MsIGNvbnN0 IGludDE2ICpma2F0dG51bXMsCisJCQkJCQkJIGNvbnN0IGludDE2ICpma3BlcmlvZGF0dG51 bXMsCiAJCQkJCQkJIGludCBudW1ma3NldGNvbHMsIGNvbnN0IGludDE2ICpma3NldGNvbHNh dHRudW1zLAogCQkJCQkJCSBMaXN0ICpma3NldGNvbHMpCiB7CiAJZm9yIChpbnQgaSA9IDA7 IGkgPCBudW1ma3NldGNvbHM7IGkrKykKIAl7CiAJCWludDE2CQlzZXRjb2xfYXR0bnVtID0g ZmtzZXRjb2xzYXR0bnVtc1tpXTsKKwkJLyogYXNzdW1lIG9ubHkgb25lIFBFUklPRCBrZXkg Y29sdW1uIGluIGEgZm9yZWlnbiBrZXkgKi8KKwkJaW50MTYJCWZrcGVyaW9kX2F0dG51bSA9 IGZrcGVyaW9kYXR0bnVtc1swXTsKIAkJYm9vbAkJc2VlbiA9IGZhbHNlOwogCiAJCWZvciAo aW50IGogPSAwOyBqIDwgbnVtZmtzOyBqKyspCkBAIC05ODU2LDYgKzk4NTksMTMgQEAgdmFs aWRhdGVGa09uRGVsZXRlU2V0Q29sdW1ucyhpbnQgbnVtZmtzLCBjb25zdCBpbnQxNiAqZmth dHRudW1zLAogCQkJCXNlZW4gPSB0cnVlOwogCQkJCWJyZWFrOwogCQkJfQorCQkJaWYgKGZr cGVyaW9kX2F0dG51bSA9PSBzZXRjb2xfYXR0bnVtKQorCQkJeworCQkJCWNoYXIJICAgKmNv bCA9IHN0clZhbChsaXN0X250aChma3NldGNvbHMsIGkpKTsKKwkJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0NPTFVNTl9SRUZFUkVOQ0UpLAor CQkJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiByZWZlcmVuY2VkIGluIE9OIERFTEVURSBT RVQgYWN0aW9uIGNhbm5vdCBiZSBQRVJJT0QiLCBjb2wpKSk7CisJCQl9CiAJCX0KIAogCQlp ZiAoIXNlZW4pCkBAIC0xMjQ5MywxMSArMTI1MDMsMTkgQEAgY3JlYXRlRm9yZWlnbktleUFj dGlvblRyaWdnZXJzKFJlbGF0aW9uIHJlbCwgT2lkIHJlZlJlbE9pZCwgQ29uc3RyYWludCAq Zmtjb25zdHIKIAkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJU UklfRktleV9yZXN0cmljdF9kZWwiKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgRktDT05TVFJf QUNUSU9OX0NBU0NBREU6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwor CQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXIt PmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X2Nhc2NhZGVfZGVsIik7CisJ CQkJYnJlYWs7CiAJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVROVUxMOgorCQkJCWZrX3Ry aWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJy ZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1l KCJUUklfRktleV9zZXRudWxsX2RlbCIpOworCQkJCWJyZWFrOwogCQkJY2FzZSBGS0NPTlNU Ul9BQ1RJT05fU0VUREVGQVVMVDoKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCQkJIGVycm1zZygiYWN0 aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cyIpKSk7CisJCQkJ ZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRk ZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVu Y05hbWUoIlRSSV9GS2V5X3NldGRlZmF1bHRfZGVsIik7CiAJCQkJYnJlYWs7CiAJCQlkZWZh dWx0OgogCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVk IiwKQEAgLTEyNTg0LDExICsxMjYwMiwxOSBAQCBjcmVhdGVGb3JlaWduS2V5QWN0aW9uVHJp Z2dlcnMoUmVsYXRpb24gcmVsLCBPaWQgcmVmUmVsT2lkLCBDb25zdHJhaW50ICpma2NvbnN0 cgogCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5 X3Jlc3RyaWN0X3VwZCIpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05f Q0FTQ0FERToKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtf dHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25h bWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfY2FzY2FkZV91cGQiKTsKKwkJCQlicmVh azsKIAkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6CisJCQkJZmtfdHJpZ2dlci0+ ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZh bHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9G S2V5X3NldG51bGxfdXBkIik7CisJCQkJYnJlYWs7CiAJCQljYXNlIEZLQ09OU1RSX0FDVElP Tl9TRVRERUZBVUxUOgotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJCQkgZXJybXNnKCJhY3Rpb24gbm90 IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzIikpKTsKKwkJCQlma190cmln Z2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVk ID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgi VFJJX0ZLZXlfc2V0ZGVmYXVsdF91cGQiKTsKIAkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJ CQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwppbmRleCAxYTJiOWNmNjgzLi5mOTQ0NjY1 ZDcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwpAQCAtODQsNiArODQs MTIgQEAKICNkZWZpbmUgUklfUExBTl9TRVROVUxMX09OVVBEQVRFCQk3CiAjZGVmaW5lIFJJ X1BMQU5fU0VUREVGQVVMVF9PTkRFTEVURQkJOAogI2RlZmluZSBSSV9QTEFOX1NFVERFRkFV TFRfT05VUERBVEUJCTkKKyNkZWZpbmUgVFJJX1BMQU5fQ0FTQ0FERV9PTkRFTEVURQkJMTAK KyNkZWZpbmUgVFJJX1BMQU5fQ0FTQ0FERV9PTlVQREFURQkJMTEKKyNkZWZpbmUgVFJJX1BM QU5fU0VUTlVMTF9PTlVQREFURQkJMTIKKyNkZWZpbmUgVFJJX1BMQU5fU0VUTlVMTF9PTkRF TEVURQkJMTMKKyNkZWZpbmUgVFJJX1BMQU5fU0VUREVGQVVMVF9PTlVQREFURQkxNAorI2Rl ZmluZSBUUklfUExBTl9TRVRERUZBVUxUX09OREVMRVRFCTE1CiAKICNkZWZpbmUgTUFYX1FV T1RFRF9OQU1FX0xFTiAgKE5BTUVEQVRBTEVOKjIrMykKICNkZWZpbmUgTUFYX1FVT1RFRF9S RUxfTkFNRV9MRU4gIChNQVhfUVVPVEVEX05BTUVfTEVOKjIpCkBAIC0xOTMsNiArMTk5LDcg QEAgc3RhdGljIGJvb2wgcmlfQ2hlY2tfUGtfTWF0Y2goUmVsYXRpb24gcGtfcmVsLCBSZWxh dGlvbiBma19yZWwsCiAJCQkJCQkJICBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZv KTsKIHN0YXRpYyBEYXR1bSByaV9yZXN0cmljdChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJv b2wgaXNfbm9fYWN0aW9uKTsKIHN0YXRpYyBEYXR1bSByaV9zZXQoVHJpZ2dlckRhdGEgKnRy aWdkYXRhLCBib29sIGlzX3NldF9udWxsLCBpbnQgdGdraW5kKTsKK3N0YXRpYyBEYXR1bSB0 cmlfc2V0KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19zZXRfbnVsbCwgaW50IHRn a2luZCk7CiBzdGF0aWMgdm9pZCBxdW90ZU9uZU5hbWUoY2hhciAqYnVmZmVyLCBjb25zdCBj aGFyICpuYW1lKTsKIHN0YXRpYyB2b2lkIHF1b3RlUmVsYXRpb25OYW1lKGNoYXIgKmJ1ZmZl ciwgUmVsYXRpb24gcmVsKTsKIHN0YXRpYyB2b2lkIHJpX0dlbmVyYXRlUXVhbChTdHJpbmdJ bmZvIGJ1ZiwKQEAgLTE0MTAsNiArMTQxNywxMjcgQEAgVFJJX0ZLZXlfcmVzdHJpY3RfZGVs KFBHX0ZVTkNUSU9OX0FSR1MpCiAJcmV0dXJuIHJpX3Jlc3RyaWN0KChUcmlnZ2VyRGF0YSAq KSBmY2luZm8tPmNvbnRleHQsIGZhbHNlKTsKIH0KIAorLyoKKyAqIFRSSV9GS2V5X2Nhc2Nh ZGVfZGVsIC0KKyAqCisgKiBDYXNjYWRlZCBkZWxldGUgZm9yZWlnbiBrZXkgcmVmZXJlbmNl cyBhdCBkZWxldGUgZXZlbnQgb24gdGVtcG9yYWwgUEsgdGFibGUuCisgKi8KK0RhdHVtCitU UklfRktleV9jYXNjYWRlX2RlbChQR19GVU5DVElPTl9BUkdTKQoreworCVRyaWdnZXJEYXRh ICp0cmlnZGF0YSA9IChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQ7CisJY29uc3Qg UklfQ29uc3RyYWludEluZm8gKnJpaW5mbzsKKwlSZWxhdGlvbglma19yZWw7CisJUmVsYXRp b24JcGtfcmVsOworCVR1cGxlVGFibGVTbG90ICpvbGRzbG90OworCVJJX1F1ZXJ5S2V5IHFr ZXk7CisJU1BJUGxhblB0ciAgcXBsYW47CisJRGF0dW0gdGFyZ2V0UmFuZ2U7CisKKwkvKiBD aGVjayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRp bWUgYW5kIGV2ZW50LiAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktleV9j YXNjYWRlX2RlbCIsIFJJX1RSSUdUWVBFX0RFTEVURSk7CisKKwlyaWluZm8gPSByaV9GZXRj aENvbnN0cmFpbnRJbmZvKHRyaWdkYXRhLT50Z190cmlnZ2VyLAorCQkJCQkJCQkJdHJpZ2Rh dGEtPnRnX3JlbGF0aW9uLCB0cnVlKTsKKworCS8qCisJICogR2V0IHRoZSByZWxhdGlvbiBk ZXNjcmlwdG9ycyBvZiB0aGUgRksgYW5kIFBLIHRhYmxlcyBhbmQgdGhlIG9sZCB0dXBsZS4K KwkgKgorCSAqIGZrX3JlbCBpcyBvcGVuZWQgaW4gUm93RXhjbHVzaXZlTG9jayBtb2RlIHNp bmNlIHRoYXQncyB3aGF0IG91cgorCSAqIGV2ZW50dWFsIERFTEVURSB3aWxsIGdldCBvbiBp dC4KKwkgKi8KKwlma19yZWwgPSB0YWJsZV9vcGVuKHJpaW5mby0+ZmtfcmVsaWQsIFJvd0V4 Y2x1c2l2ZUxvY2spOworCXBrX3JlbCA9IHRyaWdkYXRhLT50Z19yZWxhdGlvbjsKKwlvbGRz bG90ID0gdHJpZ2RhdGEtPnRnX3RyaWdzbG90OworCisJLyoKKwkgKiBEb24ndCBkZWxldGUg dGhhbiBtb3JlIHRoYW4gdGhlIFBLJ3MgZHVyYXRpb24sCisJICogdHJpbW1lZCBieSBhbiBv cmlnaW5hbCBGT1IgUE9SVElPTiBPRiBpZiBuZWNlc3NhcnkuCisJICovCisJdGFyZ2V0UmFu Z2UgPSByZXN0cmljdF9jYXNjYWRpbmdfcmFuZ2UodHJpZ2RhdGEtPnRnX3RlbXBvcmFsLCBy aWluZm8sIG9sZHNsb3QpOworCisJaWYgKFNQSV9jb25uZWN0KCkgIT0gU1BJX09LX0NPTk5F Q1QpCisJCWVsb2coRVJST1IsICJTUElfY29ubmVjdCBmYWlsZWQiKTsKKworCS8qIEZldGNo IG9yIHByZXBhcmUgYSBzYXZlZCBwbGFuIGZvciB0aGUgY2FzY2FkZWQgZGVsZXRlICovCisJ cmlfQnVpbGRRdWVyeUtleSgmcWtleSwgcmlpbmZvLCBUUklfUExBTl9DQVNDQURFX09OREVM RVRFKTsKKworCWlmICgocXBsYW4gPSByaV9GZXRjaFByZXBhcmVkUGxhbigmcWtleSkpID09 IE5VTEwpCisJeworCQlTdHJpbmdJbmZvRGF0YSBxdWVyeWJ1ZjsKKwkJY2hhcgkJZmtyZWxu YW1lW01BWF9RVU9URURfUkVMX05BTUVfTEVOXTsKKwkJY2hhcgkJYXR0bmFtZVtNQVhfUVVP VEVEX05BTUVfTEVOXTsKKwkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKKwkJY29uc3QgY2hhciAq cXVlcnlzZXA7CisJCU9pZAkJCXF1ZXJ5b2lkc1tSSV9NQVhfTlVNS0VZUyArIDFdOworCQlj b25zdCBjaGFyICpma19vbmx5OworCisJCS8qIC0tLS0tLS0tLS0KKwkJICogVGhlIHF1ZXJ5 IHN0cmluZyBidWlsdCBpcworCQkgKiAgREVMRVRFIEZST00gW09OTFldIDxma3RhYmxlPgor CQkgKiAgRk9SIFBPUlRJT04gT0YgJGZrYXR0IEZST00gbG93ZXIoJHtuKzF9KSBUTyB1cHBl cigke24rMX0pCisJCSAqICBXSEVSRSAkMSA9IGZrYXR0MSBbQU5EIC4uLl0KKwkJICogVGhl IHR5cGUgaWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUgdGhvc2Ugb2YgdGhlCisJCSAq IGNvcnJlc3BvbmRpbmcgUEsgYXR0cmlidXRlcy4KKwkJICogLS0tLS0tLS0tLQorCQkgKi8K KwkJaW5pdFN0cmluZ0luZm8oJnF1ZXJ5YnVmKTsKKwkJZmtfb25seSA9IGZrX3JlbC0+cmRf cmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgPworCQkJIiIgOiAi T05MWSAiOworCQlxdW90ZVJlbGF0aW9uTmFtZShma3JlbG5hbWUsIGZrX3JlbCk7CisJCXF1 b3RlT25lTmFtZShhdHRuYW1lLCBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51 bXNbcmlpbmZvLT5ua2V5cyAtIDFdKSk7CisKKwkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnli dWYsICJERUxFVEUgRlJPTSAlcyVzIEZPUiBQT1JUSU9OIE9GICVzIEZST00gbG93ZXIoJCVk KSBUTyB1cHBlcigkJWQpIiwKKwkJCQkJCSBma19vbmx5LCBma3JlbG5hbWUsIGF0dG5hbWUs IHJpaW5mby0+bmtleXMgKyAxLCByaWluZm8tPm5rZXlzICsgMSk7CisJCXF1ZXJ5c2VwID0g IldIRVJFIjsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCByaWluZm8tPm5rZXlzOyBpKyspCisJ CXsKKwkJCU9pZCBwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRu dW1zW2ldKTsKKwkJCU9pZCBwa19jb2xsID0gUklBdHRDb2xsYXRpb24ocGtfcmVsLCByaWlu Zm8tPnBrX2F0dG51bXNbaV0pOworCQkJT2lkIGZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVs LCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQkJT2lkIGZrX2NvbGwgPSBSSUF0dENvbGxh dGlvbihma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisKKwkJCXF1b3RlT25lTmFt ZShhdHRuYW1lLAorCQkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVt c1tpXSkpOworCQkJc3ByaW50ZihwYXJhbW5hbWUsICIkJWQiLCBpICsgMSk7CisJCQlyaV9H ZW5lcmF0ZVF1YWwoJnF1ZXJ5YnVmLCBxdWVyeXNlcCwKKwkJCQkJCQlwYXJhbW5hbWUsIHBr X3R5cGUsCisJCQkJCQkJcmlpbmZvLT5wZl9lcV9vcHJzW2ldLAorCQkJCQkJCWF0dG5hbWUs IGZrX3R5cGUpOworCQkJaWYgKHBrX2NvbGwgIT0gZmtfY29sbCAmJiAhZ2V0X2NvbGxhdGlv bl9pc2RldGVybWluaXN0aWMocGtfY29sbCkpCisJCQkJcmlfR2VuZXJhdGVRdWFsQ29sbGF0 aW9uKCZxdWVyeWJ1ZiwgcGtfY29sbCk7CisJCQlxdWVyeXNlcCA9ICJBTkQiOworCQkJcXVl cnlvaWRzW2ldID0gcGtfdHlwZTsKKwkJfQorCisJCS8qIFNldCBhIHBhcmFtIGZvciBGT1Ig UE9SVElPTiBPRiBUTy9GUk9NICovCisJCXF1ZXJ5b2lkc1tyaWluZm8tPm5rZXlzXSA9IFJJ QXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0p OworCisJCS8qIFByZXBhcmUgYW5kIHNhdmUgdGhlIHBsYW4gKi8KKwkJcXBsYW4gPSByaV9Q bGFuQ2hlY2socXVlcnlidWYuZGF0YSwgcmlpbmZvLT5ua2V5cyArIDEsIHF1ZXJ5b2lkcywK KwkJCQkJCQkgJnFrZXksIGZrX3JlbCwgcGtfcmVsKTsKKwl9CisKKwkvKgorCSAqIFdlIGhh dmUgYSBwbGFuIG5vdy4gQnVpbGQgdXAgdGhlIGFyZ3VtZW50cyBmcm9tIHRoZSBrZXkgdmFs dWVzIGluIHRoZQorCSAqIGRlbGV0ZWQgUEsgdHVwbGUgYW5kIGRlbGV0ZSB0aGUgcmVmZXJl bmNpbmcgcm93cworCSAqLworCXJpX1BlcmZvcm1DaGVjayhyaWluZm8sICZxa2V5LCBxcGxh biwKKwkJCQkJZmtfcmVsLCBwa19yZWwsCisJCQkJCW9sZHNsb3QsIE5VTEwsCisJCQkJCXJp aW5mby0+bmtleXMsIHRhcmdldFJhbmdlLAorCQkJCQl0cnVlLAkgICAvKiBtdXN0IGRldGVj dCBuZXcgcm93cyAqLworCQkJCQlTUElfT0tfREVMRVRFKTsKKworCWlmIChTUElfZmluaXNo KCkgIT0gU1BJX09LX0ZJTklTSCkKKwkJZWxvZyhFUlJPUiwgIlNQSV9maW5pc2ggZmFpbGVk Iik7CisKKwl0YWJsZV9jbG9zZShma19yZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJcmV0 dXJuIFBvaW50ZXJHZXREYXR1bShOVUxMKTsKK30KKworCiAvKgogICogVFJJX0ZLZXlfbm9h Y3Rpb25fdXBkIC0KICAqCkBAIC0xNDQ3LDYgKzE1NzUsNDE1IEBAIFRSSV9GS2V5X3Jlc3Ry aWN0X3VwZChQR19GVU5DVElPTl9BUkdTKQogCXJldHVybiByaV9yZXN0cmljdCgoVHJpZ2dl ckRhdGEgKikgZmNpbmZvLT5jb250ZXh0LCBmYWxzZSk7CiB9CiAKKy8qCisgKiBUUklfRktl eV9jYXNjYWRlX3VwZCAtCisgKgorICogQ2FzY2FkZWQgdXBkYXRlIGZvcmVpZ24ga2V5IHJl ZmVyZW5jZXMgYXQgdXBkYXRlIGV2ZW50IG9uIHRlbXBvcmFsIFBLIHRhYmxlLgorICovCitE YXR1bQorVFJJX0ZLZXlfY2FzY2FkZV91cGQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlUcmln Z2VyRGF0YSAqdHJpZ2RhdGEgPSAoVHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0Owor CWNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm87CisJUmVsYXRpb24JZmtfcmVsOwor CVJlbGF0aW9uCXBrX3JlbDsKKwlUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdDsKKwlUdXBsZVRh YmxlU2xvdCAqbmV3c2xvdDsKKwlSSV9RdWVyeUtleSBxa2V5OworCVNQSVBsYW5QdHIgIHFw bGFuOworCURhdHVtIHRhcmdldFJhbmdlOworCisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEg dmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwly aV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfY2FzY2FkZV91cGQiLCBSSV9UUklH VFlQRV9VUERBVEUpOworCisJcmlpbmZvID0gcmlfRmV0Y2hDb25zdHJhaW50SW5mbyh0cmln ZGF0YS0+dGdfdHJpZ2dlciwKKwkJCQkJCQkJCXRyaWdkYXRhLT50Z19yZWxhdGlvbiwgdHJ1 ZSk7CisKKwkvKgorCSAqIEdldCB0aGUgcmVsYXRpb24gZGVzY3JpcHRvcnMgb2YgdGhlIEZL IGFuZCBQSyB0YWJsZXMgYW5kIHRoZSBuZXcgYW5kCisJICogb2xkIHR1cGxlLgorCSAqCisJ ICogZmtfcmVsIGlzIG9wZW5lZCBpbiBSb3dFeGNsdXNpdmVMb2NrIG1vZGUgc2luY2UgdGhh dCdzIHdoYXQgb3VyCisJICogZXZlbnR1YWwgVVBEQVRFIHdpbGwgZ2V0IG9uIGl0LgorCSAq LworCWZrX3JlbCA9IHRhYmxlX29wZW4ocmlpbmZvLT5ma19yZWxpZCwgUm93RXhjbHVzaXZl TG9jayk7CisJcGtfcmVsID0gdHJpZ2RhdGEtPnRnX3JlbGF0aW9uOworCW5ld3Nsb3QgPSB0 cmlnZGF0YS0+dGdfbmV3c2xvdDsKKwlvbGRzbG90ID0gdHJpZ2RhdGEtPnRnX3RyaWdzbG90 OworCisJLyoKKwkgKiBEb24ndCBkZWxldGUgdGhhbiBtb3JlIHRoYW4gdGhlIFBLJ3MgZHVy YXRpb24sCisJICogdHJpbW1lZCBieSBhbiBvcmlnaW5hbCBGT1IgUE9SVElPTiBPRiBpZiBu ZWNlc3NhcnkuCisJICovCisJdGFyZ2V0UmFuZ2UgPSByZXN0cmljdF9jYXNjYWRpbmdfcmFu Z2UodHJpZ2RhdGEtPnRnX3RlbXBvcmFsLCByaWluZm8sIG9sZHNsb3QpOworCisJaWYgKFNQ SV9jb25uZWN0KCkgIT0gU1BJX09LX0NPTk5FQ1QpCisJCWVsb2coRVJST1IsICJTUElfY29u bmVjdCBmYWlsZWQiKTsKKworCS8qIEZldGNoIG9yIHByZXBhcmUgYSBzYXZlZCBwbGFuIGZv ciB0aGUgY2FzY2FkZWQgdXBkYXRlICovCisJcmlfQnVpbGRRdWVyeUtleSgmcWtleSwgcmlp bmZvLCBUUklfUExBTl9DQVNDQURFX09OVVBEQVRFKTsKKworCWlmICgocXBsYW4gPSByaV9G ZXRjaFByZXBhcmVkUGxhbigmcWtleSkpID09IE5VTEwpCisJeworCQlTdHJpbmdJbmZvRGF0 YSBxdWVyeWJ1ZjsKKwkJU3RyaW5nSW5mb0RhdGEgcXVhbGJ1ZjsKKwkJY2hhcgkJZmtyZWxu YW1lW01BWF9RVU9URURfUkVMX05BTUVfTEVOXTsKKwkJY2hhcgkJYXR0bmFtZVtNQVhfUVVP VEVEX05BTUVfTEVOXTsKKwkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKKwkJY29uc3QgY2hhciAq cXVlcnlzZXA7CisJCWNvbnN0IGNoYXIgKnF1YWxzZXA7CisJCU9pZAkJIHF1ZXJ5b2lkc1sy ICogUklfTUFYX05VTUtFWVMgKyAxXTsKKwkJY29uc3QgY2hhciAqZmtfb25seTsKKworCQkv KiAtLS0tLS0tLS0tCisJCSAqIFRoZSBxdWVyeSBzdHJpbmcgYnVpbHQgaXMKKwkJICogIFVQ REFURSBbT05MWV0gPGZrdGFibGU+CisJCSAqCQkgIEZPUiBQT1JUSU9OIE9GICRma2F0dCBG Uk9NIGxvd2VyKCR7Mm4rMX0pIFRPIHVwcGVyKCR7Mm4rMX0pCisJCSAqCQkgIFNFVCBma2F0 dDEgPSAkMSwgWywgLi4uXQorCQkgKgkJICBXSEVSRSAkbiA9IGZrYXR0MSBbQU5EIC4uLl0K KwkJICogVGhlIHR5cGUgaWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUgdGhvc2Ugb2Yg dGhlCisJCSAqIGNvcnJlc3BvbmRpbmcgUEsgYXR0cmlidXRlcy4gIE5vdGUgdGhhdCB3ZSBh cmUgYXNzdW1pbmcKKwkJICogdGhlcmUgaXMgYW4gYXNzaWdubWVudCBjYXN0IGZyb20gdGhl IFBLIHRvIHRoZSBGSyB0eXBlOworCQkgKiBlbHNlIHRoZSBwYXJzZXIgd2lsbCBmYWlsLgor CQkgKiAtLS0tLS0tLS0tCisJCSAqLworCQlpbml0U3RyaW5nSW5mbygmcXVlcnlidWYpOwor CQlpbml0U3RyaW5nSW5mbygmcXVhbGJ1Zik7CisJCWZrX29ubHkgPSBma19yZWwtPnJkX3Jl bC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFID8KKwkJCSIiIDogIk9O TFkgIjsKKwkJcXVvdGVSZWxhdGlvbk5hbWUoZmtyZWxuYW1lLCBma19yZWwpOworCQlxdW90 ZU9uZU5hbWUoYXR0bmFtZSwgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1z W3JpaW5mby0+bmtleXMgLSAxXSkpOworCisJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVm LCAiVVBEQVRFICVzJXMgRk9SIFBPUlRJT04gT0YgJXMgRlJPTSBsb3dlcigkJWQpIFRPIHVw cGVyKCQlZCkgU0VUIiwKKwkJCQkJCSBma19vbmx5LCBma3JlbG5hbWUsIGF0dG5hbWUsIDIg KiByaWluZm8tPm5rZXlzICsgMSwgMiAqIHJpaW5mby0+bmtleXMgKyAxKTsKKworCQlxdWVy eXNlcCA9ICIiOworCQlxdWFsc2VwID0gIldIRVJFIjsKKwkJZm9yIChpbnQgaSA9IDAsIGog PSByaWluZm8tPm5rZXlzOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrLCBqKyspCisJCXsKKwkJ CU9pZCBwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ld KTsKKwkJCU9pZCBwa19jb2xsID0gUklBdHRDb2xsYXRpb24ocGtfcmVsLCByaWluZm8tPnBr X2F0dG51bXNbaV0pOworCQkJT2lkIGZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWlu Zm8tPmZrX2F0dG51bXNbaV0pOworCQkJT2lkIGZrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihm a19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisKKwkJCXF1b3RlT25lTmFtZShhdHRu YW1lLAorCQkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkp OworCQkJLyoKKwkJCSAqIERvbid0IHNldCB0aGUgdGVtcG9yYWwgY29sdW1uKHMpLgorCQkJ ICogRk9SIFBPUlRJT04gT0Ygd2lsbCB0YWtlIGNhcmUgb2YgdGhhdC4KKwkJCSAqLworCQkJ aWYgKGkgPCByaWluZm8tPm5rZXlzIC0gMSkKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVy eWJ1ZiwKKwkJCQkJCQkJICIlcyAlcyA9ICQlZCIsCisJCQkJCQkJCSBxdWVyeXNlcCwgYXR0 bmFtZSwgaSArIDEpOworCisJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIsIGogKyAxKTsK KwkJCXJpX0dlbmVyYXRlUXVhbCgmcXVhbGJ1ZiwgcXVhbHNlcCwKKwkJCQkJCQlwYXJhbW5h bWUsIHBrX3R5cGUsCisJCQkJCQkJcmlpbmZvLT5wZl9lcV9vcHJzW2ldLAorCQkJCQkJCWF0 dG5hbWUsIGZrX3R5cGUpOworCQkJaWYgKHBrX2NvbGwgIT0gZmtfY29sbCAmJiAhZ2V0X2Nv bGxhdGlvbl9pc2RldGVybWluaXN0aWMocGtfY29sbCkpCisJCQkJcmlfR2VuZXJhdGVRdWFs Q29sbGF0aW9uKCZxdWVyeWJ1ZiwgcGtfY29sbCk7CisJCQlxdWVyeXNlcCA9ICIsIjsKKwkJ CXF1YWxzZXAgPSAiQU5EIjsKKwkJCXF1ZXJ5b2lkc1tpXSA9IHBrX3R5cGU7CisJCQlxdWVy eW9pZHNbal0gPSBwa190eXBlOworCQl9CisJCWFwcGVuZEJpbmFyeVN0cmluZ0luZm8oJnF1 ZXJ5YnVmLCBxdWFsYnVmLmRhdGEsIHF1YWxidWYubGVuKTsKKworCQkvKiBTZXQgYSBwYXJh bSBmb3IgRk9SIFBPUlRJT04gT0YgVE8vRlJPTSAqLworCQlxdWVyeW9pZHNbMiAqIHJpaW5m by0+bmtleXNdID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW3JpaW5m by0+bmtleXMgLSAxXSk7CisKKwkJLyogUHJlcGFyZSBhbmQgc2F2ZSB0aGUgcGxhbiAqLwor CQlxcGxhbiA9IHJpX1BsYW5DaGVjayhxdWVyeWJ1Zi5kYXRhLCAyICogcmlpbmZvLT5ua2V5 cyArIDEsIHF1ZXJ5b2lkcywKKwkJCQkJCQkgJnFrZXksIGZrX3JlbCwgcGtfcmVsKTsKKwl9 CisKKwkvKgorCSAqIFdlIGhhdmUgYSBwbGFuIG5vdy4gUnVuIGl0IHRvIHVwZGF0ZSB0aGUg ZXhpc3RpbmcgcmVmZXJlbmNlcy4KKwkgKi8KKwlyaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAm cWtleSwgcXBsYW4sCisJCQkJCWZrX3JlbCwgcGtfcmVsLAorCQkJCQlvbGRzbG90LCBuZXdz bG90LAorCQkJCQlyaWluZm8tPm5rZXlzICogMiwgdGFyZ2V0UmFuZ2UsCisJCQkJCXRydWUs CQkvKiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLworCQkJCQlTUElfT0tfVVBEQVRFKTsKKwor CWlmIChTUElfZmluaXNoKCkgIT0gU1BJX09LX0ZJTklTSCkKKwkJZWxvZyhFUlJPUiwgIlNQ SV9maW5pc2ggZmFpbGVkIik7CisKKwl0YWJsZV9jbG9zZShma19yZWwsIFJvd0V4Y2x1c2l2 ZUxvY2spOworCisJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShOVUxMKTsKK30KKworLyoKKyAq IFRSSV9GS2V5X3NldG51bGxfZGVsIC0KKyAqCisgKiBTZXQgZm9yZWlnbiBrZXkgcmVmZXJl bmNlcyB0byBOVUxMIHZhbHVlcyBhdCBkZWxldGUgZXZlbnQgb24gUEsgdGFibGUuCisgKi8K K0RhdHVtCitUUklfRktleV9zZXRudWxsX2RlbChQR19GVU5DVElPTl9BUkdTKQoreworCS8q IENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQg dGltZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5 X3NldG51bGxfZGVsIiwgUklfVFJJR1RZUEVfREVMRVRFKTsKKworCS8qIFNoYXJlIGNvZGUg d2l0aCBVUERBVEUgY2FzZSAqLworCXJldHVybiB0cmlfc2V0KChUcmlnZ2VyRGF0YSAqKSBm Y2luZm8tPmNvbnRleHQsIHRydWUsIFJJX1RSSUdUWVBFX0RFTEVURSk7Cit9CisKKy8qCisg KiBUUklfRktleV9zZXRudWxsX3VwZCAtCisgKgorICogU2V0IGZvcmVpZ24ga2V5IHJlZmVy ZW5jZXMgdG8gTlVMTCBhdCB1cGRhdGUgZXZlbnQgb24gUEsgdGFibGUuCisgKi8KK0RhdHVt CitUUklfRktleV9zZXRudWxsX3VwZChQR19GVU5DVElPTl9BUkdTKQoreworCS8qIENoZWNr IHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBh bmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X3NldG51 bGxfdXBkIiwgUklfVFJJR1RZUEVfVVBEQVRFKTsKKworCS8qIFNoYXJlIGNvZGUgd2l0aCBE RUxFVEUgY2FzZSAqLworCXJldHVybiB0cmlfc2V0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8t PmNvbnRleHQsIHRydWUsIFJJX1RSSUdUWVBFX1VQREFURSk7Cit9CisKKy8qCisgKiBUUklf RktleV9zZXRkZWZhdWx0X2RlbCAtCisgKgorICogU2V0IGZvcmVpZ24ga2V5IHJlZmVyZW5j ZXMgdG8gZGVmYXVsdHMgYXQgZGVsZXRlIGV2ZW50IG9uIFBLIHRhYmxlLgorICovCitEYXR1 bQorVFJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvKiBD aGVjayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRp bWUgYW5kIGV2ZW50LiAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktleV9z ZXRkZWZhdWx0X2RlbCIsIFJJX1RSSUdUWVBFX0RFTEVURSk7CisKKwkvKiBTaGFyZSBjb2Rl IHdpdGggVVBEQVRFIGNhc2UgKi8KKwlyZXR1cm4gdHJpX3NldCgoVHJpZ2dlckRhdGEgKikg ZmNpbmZvLT5jb250ZXh0LCBmYWxzZSwgUklfVFJJR1RZUEVfREVMRVRFKTsKK30KKworLyoK KyAqIFRSSV9GS2V5X3NldGRlZmF1bHRfdXBkIC0KKyAqCisgKiBTZXQgZm9yZWlnbiBrZXkg cmVmZXJlbmNlcyB0byBkZWZhdWx0cyBhdCB1cGRhdGUgZXZlbnQgb24gUEsgdGFibGUuCisg Ki8KK0RhdHVtCitUUklfRktleV9zZXRkZWZhdWx0X3VwZChQR19GVU5DVElPTl9BUkdTKQor eworCS8qIENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUg cmlnaHQgdGltZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRS SV9GS2V5X3NldGRlZmF1bHRfdXBkIiwgUklfVFJJR1RZUEVfVVBEQVRFKTsKKworCS8qIFNo YXJlIGNvZGUgd2l0aCBERUxFVEUgY2FzZSAqLworCXJldHVybiB0cmlfc2V0KChUcmlnZ2Vy RGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIGZhbHNlLCBSSV9UUklHVFlQRV9VUERBVEUpOwor fQorCisvKgorICogdHJpX3NldCAtCisgKgorICogQ29tbW9uIGNvZGUgZm9yIHRlbXBvcmFs IE9OIERFTEVURSBTRVQgTlVMTCwgT04gREVMRVRFIFNFVCBERUZBVUxULCBPTgorICogVVBE QVRFIFNFVCBOVUxMLCBhbmQgT04gVVBEQVRFIFNFVCBERUZBVUxULgorICovCitzdGF0aWMg RGF0dW0KK3RyaV9zZXQoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX3NldF9udWxs LCBpbnQgdGdraW5kKQoreworCWNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm87CisJ UmVsYXRpb24JZmtfcmVsOworCVJlbGF0aW9uCXBrX3JlbDsKKwlUdXBsZVRhYmxlU2xvdCAq b2xkc2xvdDsKKwlSSV9RdWVyeUtleSBxa2V5OworCVNQSVBsYW5QdHIJcXBsYW47CisJRGF0 dW0JCXRhcmdldFJhbmdlOworCWludDMyCQlxdWVyeW5vOworCisJcmlpbmZvID0gcmlfRmV0 Y2hDb25zdHJhaW50SW5mbyh0cmlnZGF0YS0+dGdfdHJpZ2dlciwKKwkJCQkJCQkJCXRyaWdk YXRhLT50Z19yZWxhdGlvbiwgdHJ1ZSk7CisKKwkvKgorCSAqIEdldCB0aGUgcmVsYXRpb24g ZGVzY3JpcHRvcnMgb2YgdGhlIEZLIGFuZCBQSyB0YWJsZXMgYW5kIHRoZSBvbGQgdHVwbGUu CisJICoKKwkgKiBma19yZWwgaXMgb3BlbmVkIGluIFJvd0V4Y2x1c2l2ZUxvY2sgbW9kZSBz aW5jZSB0aGF0J3Mgd2hhdCBvdXIKKwkgKiBldmVudHVhbCBVUERBVEUgd2lsbCBnZXQgb24g aXQuCisJICovCisJZmtfcmVsID0gdGFibGVfb3BlbihyaWluZm8tPmZrX3JlbGlkLCBSb3dF eGNsdXNpdmVMb2NrKTsKKwlwa19yZWwgPSB0cmlnZGF0YS0+dGdfcmVsYXRpb247CisJb2xk c2xvdCA9IHRyaWdkYXRhLT50Z190cmlnc2xvdDsKKworCS8qCisJICogRG9uJ3QgU0VUIE5V TEwvREVGQVVMVCB0aGFuIG1vcmUgdGhhbiB0aGUgUEsncyBkdXJhdGlvbiwKKwkgKiB0cmlt bWVkIGJ5IGFuIG9yaWdpbmFsIEZPUiBQT1JUSU9OIE9GIGlmIG5lY2Vzc2FyeS4KKwkgKi8K Kwl0YXJnZXRSYW5nZSA9IHJlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZSh0cmlnZGF0YS0+dGdf dGVtcG9yYWwsIHJpaW5mbywgb2xkc2xvdCk7CisKKwlpZiAoU1BJX2Nvbm5lY3QoKSAhPSBT UElfT0tfQ09OTkVDVCkKKwkJZWxvZyhFUlJPUiwgIlNQSV9jb25uZWN0IGZhaWxlZCIpOwor CisJLyoKKwkgKiBGZXRjaCBvciBwcmVwYXJlIGEgc2F2ZWQgcGxhbiBmb3IgdGhlIHRyaWdn ZXIuCisJICovCisJc3dpdGNoICh0Z2tpbmQpCisJeworCQljYXNlIFJJX1RSSUdUWVBFX1VQ REFURToKKwkJCXF1ZXJ5bm8gPSBpc19zZXRfbnVsbAorCQkJCT8gVFJJX1BMQU5fU0VUTlVM TF9PTlVQREFURQorCQkJCTogVFJJX1BMQU5fU0VUREVGQVVMVF9PTlVQREFURTsKKwkJCWJy ZWFrOworCQljYXNlIFJJX1RSSUdUWVBFX0RFTEVURToKKwkJCXF1ZXJ5bm8gPSBpc19zZXRf bnVsbAorCQkJCT8gVFJJX1BMQU5fU0VUTlVMTF9PTkRFTEVURQorCQkJCTogVFJJX1BMQU5f U0VUREVGQVVMVF9PTkRFTEVURTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZWxvZyhF UlJPUiwgImludmFsaWQgdGdraW5kIHBhc3NlZCB0byByaV9zZXQiKTsKKwl9CisKKwlyaV9C dWlsZFF1ZXJ5S2V5KCZxa2V5LCByaWluZm8sIHF1ZXJ5bm8pOworCisJaWYgKChxcGxhbiA9 IHJpX0ZldGNoUHJlcGFyZWRQbGFuKCZxa2V5KSkgPT0gTlVMTCkKKwl7CisJCVN0cmluZ0lu Zm9EYXRhIHF1ZXJ5YnVmOworCQlTdHJpbmdJbmZvRGF0YSBxdWFsYnVmOworCQljaGFyCQlm a3JlbG5hbWVbTUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5dOworCQljaGFyCQlhdHRuYW1lW01B WF9RVU9URURfTkFNRV9MRU5dOworCQljaGFyCQlwYXJhbW5hbWVbMTZdOworCQljb25zdCBj aGFyICpxdWVyeXNlcDsKKwkJY29uc3QgY2hhciAqcXVhbHNlcDsKKwkJT2lkCQkJcXVlcnlv aWRzW1JJX01BWF9OVU1LRVlTICsgMV07IC8qICsxIGZvciBGT1IgUE9SVElPTiBPRiAqLwor CQljb25zdCBjaGFyICpma19vbmx5OworCQlpbnQJCQludW1fY29sc190b19zZXQ7CisJCWNv bnN0IGludDE2ICpzZXRfY29sczsKKworCQlzd2l0Y2ggKHRna2luZCkKKwkJeworCQkJY2Fz ZSBSSV9UUklHVFlQRV9VUERBVEU6CisJCQkJLyogLTEgc28gd2UgbGV0IEZPUiBQT1JUSU9O IE9GIHNldCB0aGUgcmFuZ2UuICovCisJCQkJbnVtX2NvbHNfdG9fc2V0ID0gcmlpbmZvLT5u a2V5cyAtIDE7CisJCQkJc2V0X2NvbHMgPSByaWluZm8tPmZrX2F0dG51bXM7CisJCQkJYnJl YWs7CisJCQljYXNlIFJJX1RSSUdUWVBFX0RFTEVURToKKwkJCQkvKgorCQkJCSAqIElmIGNv bmZkZWxzZXRjb2xzIGFyZSBwcmVzZW50LCB0aGVuIHdlIG9ubHkgdXBkYXRlIHRoZQorCQkJ CSAqIGNvbHVtbnMgc3BlY2lmaWVkIGluIHRoYXQgYXJyYXksIG90aGVyd2lzZSB3ZSB1cGRh dGUgYWxsCisJCQkJICogdGhlIHJlZmVyZW5jaW5nIGNvbHVtbnMuCisJCQkJICovCisJCQkJ aWYgKHJpaW5mby0+bmRlbHNldGNvbHMgIT0gMCkKKwkJCQl7CisJCQkJCW51bV9jb2xzX3Rv X3NldCA9IHJpaW5mby0+bmRlbHNldGNvbHM7CisJCQkJCXNldF9jb2xzID0gcmlpbmZvLT5j b25mZGVsc2V0Y29sczsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJLyogLTEgc28g d2UgbGV0IEZPUiBQT1JUSU9OIE9GIHNldCB0aGUgcmFuZ2UuICovCisJCQkJCW51bV9jb2xz X3RvX3NldCA9IHJpaW5mby0+bmtleXMgLSAxOworCQkJCQlzZXRfY29scyA9IHJpaW5mby0+ ZmtfYXR0bnVtczsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2co RVJST1IsICJpbnZhbGlkIHRna2luZCBwYXNzZWQgdG8gcmlfc2V0Iik7CisJCX0KKworCQkv KiAtLS0tLS0tLS0tCisJCSAqIFRoZSBxdWVyeSBzdHJpbmcgYnVpbHQgaXMKKwkJICoJVVBE QVRFIFtPTkxZXSA8Zmt0YWJsZT4KKwkJICoJCQlGT1IgUE9SVElPTiBPRiAkZmthdHQgRlJP TSBsb3dlcigke24rMX0pIFRPIHVwcGVyKCR7bisxfSkKKwkJICoJCQlTRVQgZmthdHQxID0g e05VTEx8REVGQVVMVH0gWywgLi4uXQorCQkgKgkJCVdIRVJFICQxID0gZmthdHQxIFtBTkQg Li4uXQorCQkgKiBUaGUgdHlwZSBpZCdzIGZvciB0aGUgJCBwYXJhbWV0ZXJzIGFyZSB0aG9z ZSBvZiB0aGUKKwkJICogY29ycmVzcG9uZGluZyBQSyBhdHRyaWJ1dGVzLgorCQkgKiAtLS0t LS0tLS0tCisJCSAqLworCQlpbml0U3RyaW5nSW5mbygmcXVlcnlidWYpOworCQlpbml0U3Ry aW5nSW5mbygmcXVhbGJ1Zik7CisJCWZrX29ubHkgPSBma19yZWwtPnJkX3JlbC0+cmVsa2lu ZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFID8KKwkJCSIiIDogIk9OTFkgIjsKKwkJ cXVvdGVSZWxhdGlvbk5hbWUoZmtyZWxuYW1lLCBma19yZWwpOworCQlxdW90ZU9uZU5hbWUo YXR0bmFtZSwgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW3JpaW5mby0+ bmtleXMgLSAxXSkpOworCisJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAiVVBEQVRF ICVzJXMgRk9SIFBPUlRJT04gT0YgJXMgRlJPTSBsb3dlcigkJWQpIFRPIHVwcGVyKCQlZCkg U0VUIiwKKwkJCQkJCSBma19vbmx5LCBma3JlbG5hbWUsIGF0dG5hbWUsIHJpaW5mby0+bmtl eXMgKyAxLCByaWluZm8tPm5rZXlzICsgMSk7CisKKwkJLyoKKwkJICogQWRkIGFzc2lnbm1l bnQgY2xhdXNlcworCQkgKi8KKwkJcXVlcnlzZXAgPSAiIjsKKwkJZm9yIChpbnQgaSA9IDA7 IGkgPCBudW1fY29sc190b19zZXQ7IGkrKykKKwkJeworCQkJcXVvdGVPbmVOYW1lKGF0dG5h bWUsIFJJQXR0TmFtZShma19yZWwsIHNldF9jb2xzW2ldKSk7CisJCQlhcHBlbmRTdHJpbmdJ bmZvKCZxdWVyeWJ1ZiwKKwkJCQkJCQkgIiVzICVzID0gJXMiLAorCQkJCQkJCSBxdWVyeXNl cCwgYXR0bmFtZSwKKwkJCQkJCQkgaXNfc2V0X251bGwgPyAiTlVMTCIgOiAiREVGQVVMVCIp OworCQkJcXVlcnlzZXAgPSAiLCI7CisJCX0KKworCQkvKgorCQkgKiBBZGQgV0hFUkUgY2xh dXNlCisJCSAqLworCQlxdWFsc2VwID0gIldIRVJFIjsKKwkJZm9yIChpbnQgaSA9IDA7IGkg PCByaWluZm8tPm5rZXlzOyBpKyspCisJCXsKKwkJCU9pZAlwa190eXBlID0gUklBdHRUeXBl KHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJCU9pZAlma190eXBlID0gUklB dHRUeXBlKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKwkJCU9pZAlwa19jb2xs ID0gUklBdHRDb2xsYXRpb24ocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOworCQkJ T2lkCWZrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVt c1tpXSk7CisKKwkJCXF1b3RlT25lTmFtZShhdHRuYW1lLAorCQkJCQkJIFJJQXR0TmFtZShm a19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkpOworCisJCQlzcHJpbnRmKHBhcmFtbmFt ZSwgIiQlZCIsIGkgKyAxKTsKKwkJCXJpX0dlbmVyYXRlUXVhbCgmcXVlcnlidWYsIHF1YWxz ZXAsCisJCQkJCQkJcGFyYW1uYW1lLCBwa190eXBlLAorCQkJCQkJCXJpaW5mby0+cGZfZXFf b3Byc1tpXSwKKwkJCQkJCQlhdHRuYW1lLCBma190eXBlKTsKKwkJCWlmIChwa19jb2xsICE9 IGZrX2NvbGwgJiYgIWdldF9jb2xsYXRpb25faXNkZXRlcm1pbmlzdGljKHBrX2NvbGwpKQor CQkJCXJpX0dlbmVyYXRlUXVhbENvbGxhdGlvbigmcXVlcnlidWYsIHBrX2NvbGwpOworCQkJ cXVhbHNlcCA9ICJBTkQiOworCQkJcXVlcnlvaWRzW2ldID0gcGtfdHlwZTsKKwkJfQorCisJ CS8qIFNldCBhIHBhcmFtIGZvciBGT1IgUE9SVElPTiBPRiBUTy9GUk9NICovCisJCXF1ZXJ5 b2lkc1tyaWluZm8tPm5rZXlzXSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0 bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0pOworCisJCS8qIFByZXBhcmUgYW5kIHNhdmUgdGhl IHBsYW4gKi8KKwkJcXBsYW4gPSByaV9QbGFuQ2hlY2socXVlcnlidWYuZGF0YSwgcmlpbmZv LT5ua2V5cyArIDEsIHF1ZXJ5b2lkcywKKwkJCQkJCQkgJnFrZXksIGZrX3JlbCwgcGtfcmVs KTsKKwl9CisKKwkvKgorCSAqIFdlIGhhdmUgYSBwbGFuIG5vdy4gUnVuIGl0IHRvIHVwZGF0 ZSB0aGUgZXhpc3RpbmcgcmVmZXJlbmNlcy4KKwkgKi8KKwlyaV9QZXJmb3JtQ2hlY2socmlp bmZvLCAmcWtleSwgcXBsYW4sCisJCQkJCWZrX3JlbCwgcGtfcmVsLAorCQkJCQlvbGRzbG90 LCBOVUxMLAorCQkJCQlyaWluZm8tPm5rZXlzLCB0YXJnZXRSYW5nZSwKKwkJCQkJdHJ1ZSwJ CS8qIG11c3QgZGV0ZWN0IG5ldyByb3dzICovCisJCQkJCVNQSV9PS19VUERBVEUpOworCisJ aWYgKFNQSV9maW5pc2goKSAhPSBTUElfT0tfRklOSVNIKQorCQllbG9nKEVSUk9SLCAiU1BJ X2ZpbmlzaCBmYWlsZWQiKTsKKworCXRhYmxlX2Nsb3NlKGZrX3JlbCwgUm93RXhjbHVzaXZl TG9jayk7CisKKwlpZiAoaXNfc2V0X251bGwpCisJCXJldHVybiBQb2ludGVyR2V0RGF0dW0o TlVMTCk7CisJZWxzZQorCXsKKwkJLyoKKwkJICogSWYgd2UganVzdCBkZWxldGVkIG9yIHVw ZGF0ZWQgdGhlIFBLIHJvdyB3aG9zZSBrZXkgd2FzIGVxdWFsIHRvIHRoZQorCQkgKiBGSyBj b2x1bW5zJyBkZWZhdWx0IHZhbHVlcywgYW5kIGEgcmVmZXJlbmNpbmcgcm93IGV4aXN0cyBp biB0aGUgRksKKwkJICogdGFibGUsIHdlIHdvdWxkIGhhdmUgdXBkYXRlZCB0aGF0IHJvdyB0 byB0aGUgc2FtZSB2YWx1ZXMgaXQgYWxyZWFkeQorCQkgKiBoYWQgLS0tIGFuZCBSSV9GS2V5 X2ZrX3VwZF9jaGVja19yZXF1aXJlZCB3b3VsZCBoZW5jZSBiZWxpZXZlIG5vCisJCSAqIGNo ZWNrIGlzIG5lY2Vzc2FyeS4gIFNvIHdlIG5lZWQgdG8gZG8gYW5vdGhlciBsb29rdXAgbm93 IGFuZCBpbgorCQkgKiBjYXNlIGEgcmVmZXJlbmNlIHN0aWxsIGV4aXN0cywgYWJvcnQgdGhl IG9wZXJhdGlvbi4gIFRoYXQgaXMKKwkJICogYWxyZWFkeSBpbXBsZW1lbnRlZCBpbiB0aGUg Tk8gQUNUSU9OIHRyaWdnZXIsIHNvIGp1c3QgcnVuIGl0LiAoVGhpcworCQkgKiByZWNoZWNr IGlzIG9ubHkgbmVlZGVkIGluIHRoZSBTRVQgREVGQVVMVCBjYXNlLCBzaW5jZSBDQVNDQURF IHdvdWxkCisJCSAqIHJlbW92ZSBzdWNoIHJvd3MgaW4gY2FzZSBvZiBhIERFTEVURSBvcGVy YXRpb24gb3Igd291bGQgY2hhbmdlIHRoZQorCQkgKiBGSyBrZXkgdmFsdWVzIGluIGNhc2Ug b2YgYW4gVVBEQVRFLCB3aGlsZSBTRVQgTlVMTCBpcyBjZXJ0YWluIHRvCisJCSAqIHJlc3Vs dCBpbiByb3dzIHRoYXQgc2F0aXNmeSB0aGUgRksgY29uc3RyYWludC4pCisJCSAqLworCQly ZXR1cm4gcmlfcmVzdHJpY3QodHJpZ2RhdGEsIHRydWUpOworCX0KK30KKwogLyoKICAqIFJJ X0ZLZXlfcGtfdXBkX2NoZWNrX3JlcXVpcmVkIC0KICAqCkBAIC0yNTgzLDggKzMxMjAsOCBA QCByaV9QZXJmb3JtQ2hlY2soY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAlp bnQJCQlzcGlfcmVzdWx0OwogCU9pZAkJCXNhdmVfdXNlcmlkOwogCWludAkJCXNhdmVfc2Vj X2NvbnRleHQ7Ci0JRGF0dW0JCXZhbHNbUklfTUFYX05VTUtFWVMgKiAyXTsKLQljaGFyCQlu dWxsc1tSSV9NQVhfTlVNS0VZUyAqIDJdOworCURhdHVtCQl2YWxzW1JJX01BWF9OVU1LRVlT ICogMiArIDFdOworCWNoYXIJCW51bGxzW1JJX01BWF9OVU1LRVlTICogMiArIDFdOwogCiAJ LyoKIAkgKiBVc2UgdGhlIHF1ZXJ5IHR5cGUgY29kZSB0byBkZXRlcm1pbmUgd2hldGhlciB0 aGUgcXVlcnkgaXMgcnVuIGFnYWluc3QKQEAgLTI2MTksOCArMzE1NiwxMCBAQCByaV9QZXJm b3JtQ2hlY2soY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAkJcmlfRXh0cmFj dFZhbHVlcyhzb3VyY2VfcmVsLCBuZXdzbG90LCByaWluZm8sIHNvdXJjZV9pc19waywKIAkJ CQkJCSB2YWxzLCBudWxscyk7CiAJCWlmIChvbGRzbG90KQorCQl7CiAJCQlyaV9FeHRyYWN0 VmFsdWVzKHNvdXJjZV9yZWwsIG9sZHNsb3QsIHJpaW5mbywgc291cmNlX2lzX3BrLAogCQkJ CQkJCSB2YWxzICsgcmlpbmZvLT5ua2V5cywgbnVsbHMgKyByaWluZm8tPm5rZXlzKTsKKwkJ fQogCX0KIAllbHNlCiAJewpAQCAtMzMzMSw4ICszODcwLDE0IEBAIFJJX0ZLZXlfdHJpZ2dl cl90eXBlKE9pZCB0Z2ZvaWQpCiAJCWNhc2UgRl9SSV9GS0VZX1NFVERFRkFVTFRfVVBEOgog CQljYXNlIEZfUklfRktFWV9OT0FDVElPTl9ERUw6CiAJCWNhc2UgRl9SSV9GS0VZX05PQUNU SU9OX1VQRDoKKwkJY2FzZSBGX1RSSV9GS0VZX0NBU0NBREVfREVMOgorCQljYXNlIEZfVFJJ X0ZLRVlfQ0FTQ0FERV9VUEQ6CiAJCWNhc2UgRl9UUklfRktFWV9SRVNUUklDVF9ERUw6CiAJ CWNhc2UgRl9UUklfRktFWV9SRVNUUklDVF9VUEQ6CisJCWNhc2UgRl9UUklfRktFWV9TRVRO VUxMX0RFTDoKKwkJY2FzZSBGX1RSSV9GS0VZX1NFVE5VTExfVVBEOgorCQljYXNlIEZfVFJJ X0ZLRVlfU0VUREVGQVVMVF9ERUw6CisJCWNhc2UgRl9UUklfRktFWV9TRVRERUZBVUxUX1VQ RDoKIAkJY2FzZSBGX1RSSV9GS0VZX05PQUNUSU9OX0RFTDoKIAkJY2FzZSBGX1RSSV9GS0VZ X05PQUNUSU9OX1VQRDoKIAkJCXJldHVybiBSSV9UUklHR0VSX1BLOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQKaW5kZXggNzI3ZWIzNTA4Ny4uY2EwNzc2NmJhZiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0CkBAIC0zOTUyLDYgKzM5NTIsMTIgQEAKIHsgb2lkID0+ICc2MTIz JywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBGT1JFSUdOIEtF WSAuLi4gUkVGRVJFTkNFUycsCiAgIHByb25hbWUgPT4gJ1RSSV9GS2V5X2NoZWNrX3VwZCcs IHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCiAgIHByb2Fy Z3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5X2NoZWNrX3VwZCcgfSwKK3sgb2lk ID0+ICc2MTI0JywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBP TiBERUxFVEUgQ0FTQ0FERScsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X2Nhc2NhZGVfZGVs JywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywKKyAgcHJv YXJndHlwZXMgPT4gJycsIHByb3NyYyA9PiAnVFJJX0ZLZXlfY2FzY2FkZV9kZWwnIH0sCit7 IG9pZCA9PiAnNjEyNScsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3Jp dHkgT04gVVBEQVRFIENBU0NBREUnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9jYXNjYWRl X3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisg IHByb2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5X2Nhc2NhZGVfdXBkJyB9 LAogeyBvaWQgPT4gJzYxMjYnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50 ZWdyaXR5IE9OIERFTEVURSBSRVNUUklDVCcsCiAgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3Jl c3RyaWN0X2RlbCcsIHByb3ZvbGF0aWxlID0+ICd2JywKICAgcHJvcmV0dHlwZSA9PiAndHJp Z2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLApAQCAtMzk2MCw2ICszOTY2LDIwIEBACiAgIHBy b25hbWUgPT4gJ1RSSV9GS2V5X3Jlc3RyaWN0X3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywK ICAgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAogICBwcm9z cmMgPT4gJ1RSSV9GS2V5X3Jlc3RyaWN0X3VwZCcgfSwKK3sgb2lkID0+ICc2MTI4JywgZGVz Y3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBERUxFVEUgU0VUIE5V TEwnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9zZXRudWxsX2RlbCcsIHByb3ZvbGF0aWxl ID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisgIHByb2FyZ3R5cGVzID0+ICcn LCBwcm9zcmMgPT4gJ1RSSV9GS2V5X3NldG51bGxfZGVsJyB9LAoreyBvaWQgPT4gJzYxMjkn LCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIFVQREFURSBT RVQgTlVMTCcsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3NldG51bGxfdXBkJywgcHJvdm9s YXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywKKyAgcHJvYXJndHlwZXMg PT4gJycsIHByb3NyYyA9PiAnVFJJX0ZLZXlfc2V0bnVsbF91cGQnIH0sCit7IG9pZCA9PiAn NjEzMCcsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gREVM RVRFIFNFVCBERUZBVUxUJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfc2V0ZGVmYXVsdF9k ZWwnLCBwcm92b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBw cm9hcmd0eXBlcyA9PiAnJywKKyAgcHJvc3JjID0+ICdUUklfRktleV9zZXRkZWZhdWx0X2Rl bCcgfSwKK3sgb2lkID0+ICc2MTMxJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFs IGludGVncml0eSBPTiBVUERBVEUgU0VUIERFRkFVTFQnLAorICBwcm9uYW1lID0+ICdUUklf RktleV9zZXRkZWZhdWx0X3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKKyAgcHJvcmV0dHlw ZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAorICBwcm9zcmMgPT4gJ1RSSV9G S2V5X3NldGRlZmF1bHRfdXBkJyB9LAogeyBvaWQgPT4gJzYxMzInLCBkZXNjciA9PiAndGVt cG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIERFTEVURSBOTyBBQ1RJT04nLAogICBw cm9uYW1lID0+ICdUUklfRktleV9ub2FjdGlvbl9kZWwnLCBwcm92b2xhdGlsZSA9PiAndics CiAgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CmluZGV4 IGI0N2M1YjNmM2QuLjYxZDQ3MTBiNTggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dApAQCAtOTE3LDMwICs5MTcsMTg0IEBAIERF TEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJyk7CiAtLQogLS0g dGVzdCBPTiBVUERBVEUvREVMRVRFIG9wdGlvbnMKIC0tCistLSBUT0M6CistLSBwYXJlbnQg dXBkYXRlcyBDQVNDQURFCistLSBwYXJlbnQgZGVsZXRlcyBDQVNDQURFCistLSBwYXJlbnQg dXBkYXRlcyBTRVQgTlVMTAorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKKy0tIHBhcmVu dCB1cGRhdGVzIFNFVCBERUZBVUxUCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVAor LS0gcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50 IGRlbGV0ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IHVwZGF0ZXMg U0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBOVUxM ICh0d28gc2NhbGFyIGNvbHMpCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTCAodHdvIHNj YWxhciBjb2xzLCBTRVQgTlVMTCBzdWJzZXQpCistLSBwYXJlbnQgdXBkYXRlcyBTRVQgREVG QVVMVCAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQg KHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUICh0d28g c2NhbGFyIGNvbHMsIFNFVCBERUZBVUxUIHN1YnNldCkKIC0tIHRlc3QgRksgcGFyZW50IHVw ZGF0ZXMgQ0FTQ0FERQogSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s2LDZd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwotSU5TRVJUIElOVE8g dGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNCw0XScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2Zr X3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJu ZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05T VFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZwogCQlPTiBE RUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKLUVSUk9SOiAgYWN0aW9uIG5vdCBz dXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gbGVmdG92ZXJzIG9uIGJv dGggc2lkZXM6CitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10nIFdI RVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCist LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEg MDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWzcsOCkKKyBb MTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6 MDA6MDAgMjAxOSIpIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6 MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykKKygzIHJvd3Mp CisKKy0tIG5vbi1GUE8gdXBkYXRlOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAn WzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJl bnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1 ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwg WzcsOCkKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBK YW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzcsOCkKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzcsOCkK KygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAo J1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitVUERBVEUgdGVtcG9y YWxfcm5nIFNFVCBpZCA9ICdbOSw5XScgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2YWxpZF9h dCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBw YXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBb Ik1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIp IHwgWzksMTApCisgWzIwMCwyMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJG cmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4LDkpCisoMiByb3dzKQorCistLSBjbGVh biB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sx MDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVS RSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0ZXN0 IEZLIHBhcmVudCBkZWxldGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBW QUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOworLS0gbGVm dG92ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdI RVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCist LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEg MDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykKKyBb MTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6 MDA6MDAgMjAyMSIpIHwgWzYsNykKKygyIHJvd3MpCisKKy0tIG5vbi1GUE8gZGVsZXRlOgor REVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworIGlk IHwgdmFsaWRfYXQgfCBwYXJlbnRfaWQgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0K KygwIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAo J1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0w MS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCist LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzgsOSkKKygx IHJvdykKKworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcg V0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdb OSw5XScpOwogLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAotSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s5LDldJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJykpOwotSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxV RVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzks OV0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X2ZrX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5n MnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAogCUFERCBD T05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZwogCQlP TiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOwotRVJST1I6ICBhY3Rpb24g bm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzCistLSBsZWZ0b3ZlcnMg b24gYm90aCBzaWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbNyw3 XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9p ZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVlIEph biAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAKKyBb MTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6 MDA6MDAgMjAxOSIpIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6 MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykKKygzIHJvd3Mp CisKKy0tIG5vbi1GUE8gdXBkYXRlOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAn WzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJl bnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1 ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwg CisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAx IDAwOjAwOjAwIDIwMTkiKSB8IAorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCAKKygzIHJvd3MpCisKKy0t IEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5n ZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf Zmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9 ICdbOSw5XScgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0w MSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAg ICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6 MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgCisgWzIwMCwyMDEp IHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIw MjEiKSB8IFs4LDkpCisoMiByb3dzKQorCistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0n KTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s2LDZdJywgJ1s3 LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNF VCBOVUxMCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVz OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBd JzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAg ICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IAorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAw MDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KQorIFsx MDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDow MDowMCAyMDIxIikgfCBbNiw3KQorKDMgcm93cykKKworLS0gbm9uLUZQTyBkZWxldGU6CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAg aWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAg ICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQor IFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIikgfCAKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAg MjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgCisgWzEwMCwxMDEpIHwgWyJX ZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8 IAorKDMgcm93cykKKworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVT ICgnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5 LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5n IFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAK Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiTW9uIEphbiAw MSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAKKyBbMjAw LDIwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6 MDAgMjAyMSIpIHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAs MjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzYsNl0n LCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKIC0tIHRlc3QgRksgcGFyZW50IHVwZGF0 ZXMgU0VUIERFRkFVTFQKIElOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbLTEs LTFdJywgdHNyYW5nZShudWxsLCBudWxsKSk7Ci1JTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcg VkFMVUVTICgnWzEyLDEyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp KTsKLUlOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzgsOF0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxMiwxMl0nKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcg VkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAx JyksICdbNiw2XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZwogICBBTFRF UiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywKIAlEUk9QIENPTlNU UkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKQEAgLTk0OCw3ICsxMTAyLDQ2MSBAQCBB TFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCiAJCUZPUkVJR04gS0VZIChwYXJlbnRf aWQsIFBFUklPRCB2YWxpZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKIAkJT04g REVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKLUVSUk9SOiAgYWN0 aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gbGVmdG92 ZXJzIG9uIGJvdGggc2lkZXM6CitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAn WzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJl bnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1 ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwg Wy0xLDApCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUg SmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs2LDcp CisoMyByb3dzKQorCistLSBub24tRlBPIHVwZGF0ZToKK1VQREFURSB0ZW1wb3JhbF9ybmcg U0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAg fCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAg ICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEwMCwx MDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjAiKSB8IFstMSwwKQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAy MDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbLTEsMCkKKyBbMTAwLDEwMSkg fCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAy MSIpIHwgWy0xLDApCisoMyByb3dzKQorCistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQg cm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIwMCwy MDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScpOwor VVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzksOV0nIFdIRVJFIGlkID0gJ1s4LDhd JyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAgICBp ZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAg ICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg WzIwMCwyMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAxIDAw OjAwOjAwIDIwMjAiKSB8IFstMSwwKQorIFsyMDAsMjAxKSB8IFsiV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbOCw5KQorKDIgcm93 cykKKworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hF UkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5 XScpOworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVAorSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxV RVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwg J1s2LDZdJyk7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBU TyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAg ICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMDAsMTAx KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAy MDIwIikgfCBbLTEsMCkKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAx OCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBb IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIp IHwgWzYsNykKKygzIHJvd3MpCisKKy0tIG5vbi1GUE8gdXBkYXRlOgorREVMRVRFIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAg fCBwYXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkg fCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAy MCIpIHwgWy0xLDApCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgi LCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFstMSwwKQorIFsxMDAsMTAxKSB8IFsi V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikg fCBbLTEsMCkKKygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dz OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n IFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBA PiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJl bnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIk1v biBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwg Wy0xLDApCisgWzIwMCwyMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkg SmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4LDkpCisoMiByb3dzKQorCistLSBjbGVhbiB1 cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAs MTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBp ZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0ZXN0IEZL IHBhcmVudCB1cGRhdGVzIENBU0NBREUgKHR3byBzY2FsYXIgY29scykKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5n MnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJf cm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlB REQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAo cGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZzIKKwkJT04gREVMRVRFIENBU0NBREUgT04gVVBEQVRFIENBU0NBREU7 CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcyIEZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAx JyBTRVQgaWQxID0gJ1s3LDddJyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlk ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAw OjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFs3LDgpICAgICAg fCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KSAgICAgIHwgWzYsNykKKyBbMTAwLDEw MSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAg MjAyMSIpIHwgWzYsNykgICAgICB8IFs2LDcpCisoMyByb3dzKQorCistLSBub24tRlBPIHVw ZGF0ZToKK1VQREFURSB0ZW1wb3JhbF9ybmcyIFNFVCBpZDEgPSAnWzcsN10nIFdIRVJFIGlk MSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJF IGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAg ICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJl bnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBb MTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyMCIpIHwgWzcsOCkgICAgICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs3 LDgpICAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAy MDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNyw4KSAgICAgIHwgWzYsNykK KygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMg KCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4 LDhdJywgJ1s4LDhdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nMiBTRVQgaWQxID0gJ1s5LDld JyBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRp bWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQg PSAnWzIwMCwyMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZh bGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9p ZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIFsyMDAs MjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIikgfCBbOSwxMCkgICAgIHwgWzgsOSkKKyBbMjAwLDIwMSkgfCBbIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzgsOSkg ICAgICB8IFs4LDkpCisoMiByb3dzKQorCistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVt cG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBd Jyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZdJywg J1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVz IENBU0NBREUgKHR3byBzY2FsYXIgY29scykKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIg VkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdb MTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZd JywgJ1s2LDZdJyk7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0w MScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAg ICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6 MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykgICAgICB8 IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkg SmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs2LDcpICAgICAgfCBbNiw3KQorKDIgcm93cykK KworLS0gbm9uLUZQTyBkZWxldGU6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJF IGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdI RVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgaWQgfCB2YWxpZF9hdCB8IHBhcmVudF9pZDEgfCBw YXJlbnRfaWQyIAorLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KygwIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMg KCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4 LDhdJywgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9 ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0n OworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAg ICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzIwMCwyMDEpIHwgWyJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4 LDkpICAgICAgfCBbOCw5KQorKDEgcm93KQorCistLSBjbGVhbiB1cAorREVMRVRFIEZST00g dGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwy MDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZd JywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0ZXN0IEZLIHBhcmVudCB1cGRh dGVzIFNFVCBOVUxMICh0d28gc2NhbGFyIGNvbHMpCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcyIFZBTFVFUyAoJ1s2LDZdJywgJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVT ICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdb Niw2XScsICdbNiw2XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKwlE Uk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEs IHBhcmVudF9pZDIsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9y bmcyCisJCU9OIERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7CistLSBsZWZ0 b3ZlcnMgb24gYm90aCBzaWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQx ID0gJ1s3LDddJyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAg fCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIw MTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8ICAgICAgICAgICAgfCAKKyBbMTAw LDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6 MDAgMjAxOSIpIHwgWzYsNykgICAgICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs2LDcp ICAgICAgfCBbNiw3KQorKDMgcm93cykKKworLS0gbm9uLUZQTyB1cGRhdGU6CitVUERBVEUg dGVtcG9yYWxfcm5nMiBTRVQgaWQxID0gJ1s3LDddJyBXSEVSRSBpZDEgPSAnWzYsNl0nOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEw MF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAg ICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJU dWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8 ICAgICAgICAgICAgfCAKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAx OCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgICAgICAgICAgICB8IAorIFsxMDAs MTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDow MCAyMDIxIikgfCAgICAgICAgICAgIHwgCisoMyByb3dzKQorCistLSBGSyBhY3Jvc3MgdHdv IHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgn WzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywg dHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworVVBEQVRFIHRlbXBv cmFsX3JuZzIgU0VUIGlkMSA9ICdbOSw5XScgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFs aWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAg ICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAg MjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgICAgICAgICAgICB8IAorIFsy MDAsMjAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDow MDowMCAyMDIxIikgfCBbOCw5KSAgICAgIHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNsZWFu IHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sx MDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hF UkUgaWQxIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKy0tIHRl c3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9m azJfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CistLSBsZWZ0b3ZlcnMgb24gYm90 aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdb Niw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0g J1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxp ZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQy IAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMTAwLDEw MSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAg MjAyMCIpIHwgICAgICAgICAgICB8IAorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDow MDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KSAgICAgIHwg WzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBK YW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykgICAgICB8IFs2LDcpCisoMyByb3dzKQor CistLSBub24tRlBPIGRlbGV0ZToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUg aWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hF UkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBh cmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQor IFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIikgfCAgICAgICAgICAgIHwgCisgWzEwMCwxMDEpIHwgWyJNb24gSmFu IDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8ICAgICAg ICAgICAgfCAKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZy aSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgICAgICAgICAgICB8IAorKDMgcm93cykKKwor LS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdb OCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAnWzgsOF0n KTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQg dmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAg IHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAg ICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6 MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgICAgICAgICAgICB8IAor IFsyMDAsMjAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAw MDowMDowMCAyMDIxIikgfCBbOCw5KSAgICAgIHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNs ZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAo J1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIg V0hFUkUgaWQxIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKy0t IHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwgKHR3byBzY2FsYXIgY29scywgU0VU IE5VTEwgc3Vic2V0KQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbNiw2 XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYsNl0nKTsK Ky0tIGZhaWxzIGJlY2F1c2UgeW91IGNhbid0IHNldCB0aGUgUEVSSU9EIGNvbHVtbjoKK0FM VEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBv cmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcy cm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJT0Qg dmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMgorCQlPTiBERUxFVEUgU0VU IE5VTEwgKHZhbGlkX2F0KSBPTiBVUERBVEUgU0VUIE5VTEw7CitFUlJPUjogIGNvbHVtbiAi dmFsaWRfYXQiIHJlZmVyZW5jZWQgaW4gT04gREVMRVRFIFNFVCBhY3Rpb24gY2Fubm90IGJl IFBFUklPRAorLS0gb2s6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworCURS T1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlO VCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwg cGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Ju ZzIKKwkJT04gREVMRVRFIFNFVCBOVUxMIChwYXJlbnRfaWQxKSBPTiBVUERBVEUgU0VUIE5V TEw7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIw MjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFs X2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8 IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAx OSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgICAgICAgICAgICB8IFs2LDcpCisg WzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAw OjAwOjAwIDIwMTkiKSB8IFs2LDcpICAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2Vk IEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBb Niw3KSAgICAgIHwgWzYsNykKKygzIHJvd3MpCisKKy0tIG5vbi1GUE8gZGVsZXRlOgorREVM RVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAg IGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAg ICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAx IDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8ICAgICAgICAg ICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4Iiwi VHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCAgICAgICAgICAgIHwgWzYsNykKKyBbMTAw LDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6 MDAgMjAyMSIpIHwgICAgICAgICAgICB8IFs2LDcpCisoMyByb3dzKQorCistLSBGSyBhY3Jv c3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFM VUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEt MDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4 LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworREVMRVRF IEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBA PiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsy X3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFy ZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4Iiwi V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAgICAgICAgICAgIHwgWzgsOSkKKyBbMjAw LDIwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6 MDAgMjAyMSIpIHwgWzgsOSkgICAgICB8IFs4LDkpCisoMiByb3dzKQorCistLSBjbGVhbiB1 cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAw LDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJF IGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0ZXN0 IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxUICh0d28gc2NhbGFyIGNvbHMpCitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1stMSwtMV0nLCAnWy0xLC0xXScsIHRz cmFuZ2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMg KCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAw XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYs Nl0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisgIEFMVEVSIENPTFVN TiBwYXJlbnRfaWQxIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKyAgQUxURVIgQ09MVU1OIHBh cmVudF9pZDIgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5n MnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9E IHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIKKwkJT04gREVMRVRFIFNF VCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKKy0tIGxlZnRvdmVycyBvbiBib3Ro IHNpZGVzOgorVVBEQVRFIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZDEgPSAnWzcsN10nLCBp ZDIgPSAnWzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAg ICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAg MjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFstMSww KQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAw MSAwMDowMDowMCAyMDE5IikgfCBbNiw3KSAgICAgIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBb IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIp IHwgWzYsNykgICAgICB8IFs2LDcpCisoMyByb3dzKQorCistLSBub24tRlBPIHVwZGF0ZToK K1VQREFURSB0ZW1wb3JhbF9ybmcyIFNFVCBpZDEgPSAnWzcsN10nLCBpZDIgPSAnWzcsN10n IFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcy cm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9p ZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFstMSwwKQorIFsxMDAsMTAx KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAy MDE5IikgfCBbLTEsMCkgICAgIHwgWy0xLDApCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFuIDAx IDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFstMSwwKSAg ICAgfCBbLTEsMCkKKygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCBy b3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4 XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIw LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5n MnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nMiBTRVQg aWQxID0gJ1s5LDldJywgaWQyID0gJ1s5LDldJyBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2 YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAgICBpZCAgICAg fCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAg ICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDow MCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbLTEsMCkgICAgIHwgWy0x LDApCisgWzIwMCwyMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFu IDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4LDkpICAgICAgfCBbOCw5KQorKDIgcm93cykKKwor LS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlk IElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxf cm5nMiBXSEVSRSBpZDEgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScp OworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVCAodHdvIHNjYWxhciBj b2xzKQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbNiw2XScsICdbNiw2 XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYsNl0nKTsKKy0tIGxlZnRv dmVycyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hF UkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcg V0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8 IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorIFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIikgfCBbLTEsMCkgICAgIHwgWy0xLDApCisgWzEwMCwxMDEpIHwg WyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTki KSB8IFs2LDcpICAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNiw3KSAgICAgIHwg WzYsNykKKygzIHJvd3MpCisKKy0tIG5vbi1GUE8gdXBkYXRlOgorREVMRVRFIEZST00gdGVt cG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAg fCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIw MTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFstMSwwKSAgICAgfCBbLTEsMCkK KyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEg MDA6MDA6MDAgMjAxOSIpIHwgWy0xLDApICAgICB8IFstMSwwKQorIFsxMDAsMTAxKSB8IFsi V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikg fCBbLTEsMCkgICAgIHwgWy0xLDApCisoMyByb3dzKQorCistLSBGSyBhY3Jvc3MgdHdvIHJl ZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgs OF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNy YW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworREVMRVRFIEZST00gdGVt cG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0w MS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcg V0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8 IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorIFsyMDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIikgfCBbLTEsMCkgICAgIHwgWy0xLDApCisgWzIwMCwyMDEpIHwg WyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEi KSB8IFs4LDkpICAgICAgfCBbOCw5KQorKDIgcm93cykKKworLS0gY2xlYW4gdXAKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywg J1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgSU4g KCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworLS0gdGVzdCBGSyBwYXJl bnQgZGVsZXRlcyBTRVQgREVGQVVMVCAodHdvIHNjYWxhciBjb2xzLCBTRVQgREVGQVVMVCBz dWJzZXQpCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1stMSwtMV0nLCAn WzYsNl0nLCB0c3JhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMg KCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2 LDZdJywgJ1s2LDZdJyk7CistLSBmYWlscyBiZWNhdXNlIHlvdSBjYW4ndCBzZXQgdGhlIFBF UklPRCBjb2x1bW46CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworICBBTFRF UiBDT0xVTU4gcGFyZW50X2lkMSBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisJRFJPUCBDT05T VFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBv cmFsX2ZrMl9ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJlbnRf aWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMgorCQlP TiBERUxFVEUgU0VUIERFRkFVTFQgKHZhbGlkX2F0KSBPTiBVUERBVEUgU0VUIERFRkFVTFQ7 CitFUlJPUjogIGNvbHVtbiAidmFsaWRfYXQiIHJlZmVyZW5jZWQgaW4gT04gREVMRVRFIFNF VCBhY3Rpb24gY2Fubm90IGJlIFBFUklPRAorLS0gb2s6CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bF9mazJfcm5nMnJuZworICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkMSBTRVQgREVGQVVMVCAn Wy0xLC0xXScsCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrLAor CUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZ IChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5D RVMgdGVtcG9yYWxfcm5nMgorCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgKHBhcmVudF9pZDEp IE9OIFVQREFURSBTRVQgREVGQVVMVDsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgor REVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBd JzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAg ICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBb LTEsMCkgICAgIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAg MjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykgICAgICB8IFs2LDcp CisgWzEwMCwxMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAx IDAwOjAwOjAwIDIwMjEiKSB8IFs2LDcpICAgICAgfCBbNiw3KQorKDMgcm93cykKKworLS0g bm9uLUZQTyB1cGRhdGU6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9 ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlk ID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2 YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRf aWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMTAw LDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6 MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJNb24gSmFu IDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFstMSww KSAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIw IiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbLTEsMCkgICAgIHwgWzYsNykKKygz IHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIg VkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1stMSwtMV0n LCAnWzgsOF0nLCB0c3JhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEt MDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdI RVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBw YXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFs4LDkpCisgWzIwMCwyMDEpIHwgWyJX ZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8 IFs4LDkpICAgICAgfCBbOCw5KQorKDIgcm93cykKKworLS0gY2xlYW4gdXAKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1sy MDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgSU4gKCdb Niw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworLS0gRksgd2l0aCBhIGN1c3Rv bSByYW5nZSB0eXBlCitDUkVBVEUgVFlQRSBteWRhdGVyYW5nZSBBUyByYW5nZShzdWJ0eXBl PWRhdGUpOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMgKAorCWlkIGludDRyYW5nZSwK Kwl2YWxpZF9hdCBteWRhdGVyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNfcGsg UFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0NSRUFU RSBUQUJMRSB0ZW1wb3JhbF9mazNfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlk X2F0IG15ZGF0ZXJhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0 ZW1wb3JhbF9mazNfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmszX3JuZzJybmdfZmsgRk9S RUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRl bXBvcmFsX3JuZzMgKGlkLCBQRVJJT0QgdmFsaWRfYXQpIE9OIERFTEVURSBDQVNDQURFCisp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMyBWQUxVRVMgKCdbOCw4XScsIG15ZGF0ZXJh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9mazNfcm5nMnJuZyBWQUxVRVMgKCdbNSw1XScsIG15ZGF0ZXJhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcz IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAx LTAxJyBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrM19y bmcycm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAg ICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tCisgWzUsNikgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5KSB8IFs4LDkp CisgWzUsNikgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFs4LDkpCisoMiByb3dzKQor CitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrM19ybmcycm5nOworRFJPUCBUQUJMRSB0ZW1wb3Jh bF9ybmczOworRFJPUCBUWVBFIG15ZGF0ZXJhbmdlOwogLS0gRksgYmV0d2VlbiBwYXJ0aXRp b25lZCB0YWJsZXMKIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKAog CWlkIGludDRyYW5nZSwKQEAgLTk1Niw4ICsxNTY0LDggQEAgQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyAoCiAgIG5hbWUgdGV4dCwKIAlDT05TVFJBSU5UIHRlbXBv cmFsX3Bhcml0aW9uZWRfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUykKICkgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKLUNSRUFURSBUQUJMRSB0 cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElO ICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0nLCAnWzExLDEx XScpOwotQ1JFQVRFIFRBQkxFIHRwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMiwyXScsICdbNCw0XScsICdbNiw2XScsICdbOCw4 XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nKTsKK0NSRUFURSBUQUJMRSB0cDEgUEFSVElUSU9O IE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgnWzEsMV0nLCAn WzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0nLCAnWzExLDExXScsICdbMTMsMTNd JywgJ1sxNSwxNV0nLCAnWzE3LDE3XScsICdbMTksMTldJywgJ1syMSwyMV0nLCAnWzIzLDIz XScpOworQ1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMCwwXScsICdbMiwyXScsICdbNCw0XScsICdbNiw2 XScsICdbOCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nLCAnWzE0LDE0XScsICdbMTYsMTZd JywgJ1sxOCwxOF0nLCAnWzIwLDIwXScsICdbMjIsMjJdJywgJ1syNCwyNF0nKTsKIElOU0VS VCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMKICAgKCdbMSwxXScsIGRh dGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTAxJyksICdvbmUnKSwKICAgKCdbMSwx XScsIGRhdGVyYW5nZSgnMjAwMC0wMi0wMScsICcyMDAwLTAzLTAxJyksICdvbmUnKSwKQEAg LTk3MCw4ICsxNTc4LDggQEAgQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcgKAogCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu Z19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVS RU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KQog KSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOwotQ1JFQVRFIFRBQkxFIHRma3AxIHBhcnRpdGlv biBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdb MSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJyk7 Ci1DUkVBVEUgVEFCTEUgdGZrcDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywg J1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworQ1JFQVRFIFRBQkxFIHRma3AxIFBB UlRJVElPTiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMg SU4gKCdbMSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEs MTFdJywgJ1sxMywxM10nLCAnWzE1LDE1XScsICdbMTcsMTddJywgJ1sxOSwxOV0nLCAnWzIx LDIxXScsICdbMjMsMjNdJyk7CitDUkVBVEUgVEFCTEUgdGZrcDIgUEFSVElUSU9OIE9GIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1swLDBdJywg J1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEy XScsICdbMTQsMTRdJywgJ1sxNiwxNl0nLCAnWzE4LDE4XScsICdbMjAsMjBdJywgJ1syMiwy Ml0nLCAnWzI0LDI0XScpOwogLS0gcGFydGl0aW9uZWQgRksgY2hpbGQgaW5zZXJ0cwogSU5T RVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMKICAgKCdb MSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTE1JyksICdbMSwxXScp LApAQCAtMTAwNiw3ICsxNjE0LDcgQEAgVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0KIC0t IHNob3VsZCBmYWlsOgogVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFs aWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCiAgIFdIRVJF IGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAxOC0wMi0wMScpOwotRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0cDEi IHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmdfcGFyZW50X2lkX2ZrZXkiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nIgorRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0 cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX2ZrZXkxIiBvbiB0YWJsZSAidGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyIKIERFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUs NiksIFswMS0wMS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20g dGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciLgogLS0gY2xlYW4gdXA6 CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIHBh cmVudF9pZCA9ICdbNSw1XSc7CkBAIC0xMDE4LDcgKzE2MjYsNyBAQCBJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgZGF0ZXJh bmdlKCcyMDE4LTAxLQogREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdI RVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDItMDEn LCAnMjAxOC0wMy0wMScpOwogLS0gc2hvdWxkIGZhaWw6CiBERUxFVEUgRlJPTSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRh dGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7Ci1FUlJPUjogIHVwZGF0ZSBv ciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWlu dCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIgb24g dGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCitFUlJPUjogIHVwZGF0 ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3Ry YWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleTEi IG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIgogREVUQUlMOiAg S2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWzAxLTAxLTIwMTgsMDItMDEtMjAxOCkpIGlz IHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZyIuCiAtLSBjbGVhbiB1cDoKIERFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKQEAgLTEwNDAsNyAr MTY0OCw3IEBAIFVQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0 ID0gZGF0ZXJhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtCiAtLSBzaG91bGQgZmFpbDoK IFVQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJh bmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQogICBXSEVSRSBpZCA9ICdbNSw1XScg QU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsK LUVSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3Jl aWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3Bh cmVudF9pZF9ma2V5IiBvbiB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZyIKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBm b3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n X3BhcmVudF9pZF9ma2V5MSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmciCiBERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAx OCwwMi0wMS0yMDE4KSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIi4KIC0tIGNsZWFuIHVwOgogREVMRVRFIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUs NV0nOwpAQCAtMTA1MiwzNSArMTY2MCwyMTQgQEAgSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0w MS0KIERFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdb NSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMt MDEnKTsKIC0tIHNob3VsZCBmYWlsOgogREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwotRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9u IHRhYmxlICJ0cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX2ZrZXkiIG9uIHRhYmxlICJ0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIgorRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRl IG9uIHRhYmxlICJ0cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX2ZrZXkxIiBvbiB0YWJsZSAi dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKIERFVEFJTDogIEtleSAoaWQsIHZh bGlkX2F0KT0oWzUsNiksIFswMS0wMS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCByZWZl cmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciLgog LS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERQorSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s2LDZdJywgZGF0ZXJhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s0LDRdJywgZGF0ZXJhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCiAJCU9O IERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOwotRVJST1I6ICBhY3Rpb24gbm90 IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzCitVUERBVEUgdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEt MDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZd JzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVS RSBpZCA9ICdbNCw0XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBh cmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LQorIFs0LDUpIHwgWzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCBbNyw4KQorIFs0LDUpIHwg WzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkgfCBbNiw3KQorIFs0LDUpIHwgWzAxLTAxLTIwMjAs MDEtMDEtMjAyMSkgfCBbNiw3KQorKDMgcm93cykKKworVVBEQVRFIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdb NCw0XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAK Ky0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs0LDUp IHwgWzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCBbNyw4KQorIFs0LDUpIHwgWzAxLTAxLTIw MTgsMDEtMDEtMjAxOSkgfCBbNyw4KQorIFs0LDUpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAy MSkgfCBbNyw4KQorKDMgcm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFZBTFVFUyAoJ1sxNSwxNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxV RVMgKCdbMTUsMTVdJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAo J1sxMCwxMF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE1 LDE1XScpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzE2 LDE2XScgV0hFUkUgaWQgPSAnWzE1LDE1XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAx Jzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbMTAsMTBdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2F0ICAg ICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLQorIFsxMCwxMSkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSB8IFsx NiwxNykKKyBbMTAsMTEpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMTUsMTYpCiso MiByb3dzKQorCiAtLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBDQVNDQURFCitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzgsOF0nLCBk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0g J1s1LDVdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lk IAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzUs NikgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5KSB8IFs4LDkpCisgWzUsNikgfCBbMDEtMDEt MjAyMCwwMS0wMS0yMDIxKSB8IFs4LDkpCisoMiByb3dzKQorCitERUxFVEUgRlJPTSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsK KyBpZCB8IHZhbGlkX2F0IHwgcGFyZW50X2lkIAorLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LS0tCisoMCByb3dzKQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg VkFMVUVTICgnWzE3LDE3XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sx NywxN10nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzExLDEx XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTcsMTddJyk7 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzE3 LDE3XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTEsMTFd JzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCist LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMSwx MikgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFsxNywxOCkKKygxIHJvdykKKwogLS0g cGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbOSw5XScsIGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNiw2XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJyksICdbOSw5XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZwogCQlPTiBE RUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOwotRVJST1I6ICBhY3Rpb24gbm90 IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzCitVUERBVEUgdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEt MDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEwLDEwXScgV0hFUkUgaWQgPSAnWzks OV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdI RVJFIGlkID0gJ1s2LDZdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwg cGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tCisgWzYsNykgfCBbMDEtMDEtMjAxOSwwMS0wMS0yMDIwKSB8IAorIFs2LDcpIHwgWzAx LTAxLTIwMTgsMDEtMDEtMjAxOSkgfCBbOSwxMCkKKyBbNiw3KSB8IFswMS0wMS0yMDIwLDAx LTAxLTIwMjEpIHwgWzksMTApCisoMyByb3dzKQorCitVUERBVEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFNFVCBpZCA9ICdbMTAsMTBdJyBXSEVSRSBpZCA9ICdbOSw5XSc7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzYsNl0nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQg CistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNiw3 KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgCisgWzYsNykgfCBbMDEtMDEtMjAxOCww MS0wMS0yMDE5KSB8IAorIFs2LDcpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCAKKygz IHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMg KCdbMTgsMThdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzE4LDE4XScs IGRhdGVyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTIsMTJdJywgZGF0 ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxOCwxOF0nKTsKK1VQREFU RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIGlkID0gJ1sxOSwxOV0nIFdIRVJFIGlk ID0gJ1sxOCwxOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzEyLDEyXSc7CisgICBpZCAgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50 X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0K KyBbMTIsMTMpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAyMCkgfCAKKyBbMTIsMTMpIHwgWzAx LTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMTgsMTkpCisoMiByb3dzKQorCiAtLSBwYXJ0aXRp b25lZCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTAorSU5TRVJUIElOVE8gdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxMSwxMV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcgVkFMVUVTICgnWzcsN10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzExLDExXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRP ICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNyw3XSc7CisgIGlk ICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs3LDgpIHwgWzAxLTAxLTIw MTksMDEtMDEtMjAyMCkgfCAKKyBbNyw4KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkpIHwg WzExLDEyKQorIFs3LDgpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMTEsMTIpCiso MyByb3dzKQorCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUg aWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcgV0hFUkUgaWQgPSAnWzcsN10nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0 ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0KKyBbNyw4KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgCisg WzcsOCkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5KSB8IAorIFs3LDgpIHwgWzAxLTAxLTIw MjAsMDEtMDEtMjAyMSkgfCAKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMjAsMjBdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgVkFMVUVTICgnWzIwLDIwXScsIGRhdGVyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAx LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBW QUxVRVMgKCdbMTMsMTNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KSwgJ1syMCwyMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBX SEVSRSBpZCA9ICdbMjAsMjBdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRl OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJF IGlkID0gJ1sxMywxM10nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8 IHBhcmVudF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tCisgWzEzLDE0KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMjApIHwgCisgWzEzLDE0 KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzIwLDIxKQorKDIgcm93cykKKwogLS0g cGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMCwwXScsIGRhdGVyYW5nZShu dWxsLCBudWxsKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFM VUVTICgnWzEyLDEyXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMg KCdbOCw4XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTIs MTJdJyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCi0g IEFMVEVSIENPTFVNTiBwYXJlbnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorICBBTFRF UiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbMCwwXScsCiAJRFJPUCBDT05TVFJB SU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNUUkFJ TlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAo cGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nCiAJCU9OIERFTEVURSBTRVQgREVGQVVMVCBPTiBVUERBVEUgU0VUIERF RkFVTFQ7Ci1FUlJPUjogIGFjdGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3Jl aWduIGtleXMKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9 ICdbMTMsMTNdJyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOCw4XSc7CisgIGlkICAg fCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs4LDkpIHwgWzAxLTAxLTIwMTks MDEtMDEtMjAyMCkgfCBbMCwxKQorIFs4LDkpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkg fCBbMTIsMTMpCisgWzgsOSkgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFsxMiwxMykK KygzIHJvd3MpCisKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIGlkID0g J1sxMywxM10nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s4LDhdJzsKKyAgaWQgICB8 ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzgsOSkgfCBbMDEtMDEtMjAxOSww MS0wMS0yMDIwKSB8IFswLDEpCisgWzgsOSkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5KSB8 IFswLDEpCisgWzgsOSkgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFswLDEpCisoMyBy b3dzKQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgn WzIyLDIyXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syMiwyMl0nLCBk YXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzE0LDE0XScsIGRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMjIsMjJdJyk7CitVUERBVEUg dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCBpZCA9ICdbMjMsMjNdJyBXSEVSRSBpZCA9 ICdbMjIsMjJdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRlOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sx NCwxNF0nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9p ZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg WzE0LDE1KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMjApIHwgWzAsMSkKKyBbMTQsMTUpIHwg WzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMjIsMjMpCisoMiByb3dzKQorCiAtLSBwYXJ0 aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVAorSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNCwxNF0nLCBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzksOV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzE0LDE0XScpOworREVMRVRFIEZST00gdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEt MDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOSw5XSc7 CisgICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzksMTApIHwg WzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCBbMCwxKQorIFs5LDEwKSB8IFswMS0wMS0yMDE4 LDAxLTAxLTIwMTkpIHwgWzE0LDE1KQorIFs5LDEwKSB8IFswMS0wMS0yMDIwLDAxLTAxLTIw MjEpIHwgWzE0LDE1KQorKDMgcm93cykKKworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s5LDldJzsKKyAgIGlkICAg fCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOSwxMCkgfCBbMDEtMDEtMjAx OSwwMS0wMS0yMDIwKSB8IFswLDEpCisgWzksMTApIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAx OSkgfCBbMCwxKQorIFs5LDEwKSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzAsMSkK KygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxV RVMgKCdbMjQsMjRdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzI0LDI0 XScsIGRhdGVyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTUsMTVdJywg ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1syNCwyNF0nKTsKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbMjQsMjRd JyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRlOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxNSwxNV0nOwor ICAgaWQgICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzE1LDE2KSB8 IFswMS0wMS0yMDE4LDAxLTAxLTIwMjApIHwgWzAsMSkKKyBbMTUsMTYpIHwgWzAxLTAxLTIw MjAsMDEtMDEtMjAyMSkgfCBbMjQsMjUpCisoMiByb3dzKQorCiBEUk9QIFRBQkxFIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmc7CiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRf b3ZlcmxhcHMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5z cWwKaW5kZXggNzgwZGUwYTVkYi4uYjgyNzQ4ZGMxZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKQEAgLTcyNiwzMSArNzI2LDExNCBAQCBERUxF VEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNSw1XScpOwogLS0KIC0tIHRl c3QgT04gVVBEQVRFL0RFTEVURSBvcHRpb25zCiAtLQorLS0gVE9DOgorLS0gcGFyZW50IHVw ZGF0ZXMgQ0FTQ0FERQorLS0gcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQorLS0gcGFyZW50IHVw ZGF0ZXMgU0VUIE5VTEwKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCistLSBwYXJlbnQg dXBkYXRlcyBTRVQgREVGQVVMVAorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQKKy0t IHBhcmVudCB1cGRhdGVzIENBU0NBREUgKHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBk ZWxldGVzIENBU0NBREUgKHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCB1cGRhdGVzIFNF VCBOVUxMICh0d28gc2NhbGFyIGNvbHMpCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTCAo dHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwgKHR3byBzY2Fs YXIgY29scywgU0VUIE5VTEwgc3Vic2V0KQorLS0gcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFV TFQgKHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUICh0 d28gc2NhbGFyIGNvbHMpCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVCAodHdvIHNj YWxhciBjb2xzLCBTRVQgREVGQVVMVCBzdWJzZXQpCiAKIC0tIHRlc3QgRksgcGFyZW50IHVw ZGF0ZXMgQ0FTQ0FERQogSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s2LDZd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwotSU5TRVJUIElOVE8g dGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNCw0XScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2Zr X3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJu ZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05T VFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZwogCQlPTiBE RUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKKy0tIGxlZnRvdmVycyBvbiBib3Ro IHNpZGVzOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1s3LDddJyBXSEVS RSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hF UkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIG5vbi1GUE8gdXBkYXRlOgorVVBEQVRFIHRlbXBv cmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0g RksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3Jhbmdl KCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9m a19ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0g J1s5LDldJyBXSEVSRSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAx Jzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJF IGlkID0gJ1syMDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywg J1s4LDhdJywgJ1s5LDldJyk7CisKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FE RQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtf cm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSwgJ1s2LDZdJyk7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7Cist LSBub24tRlBPIGRlbGV0ZToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9 ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQg PSAnWzEwMCwxMDBdJzsKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAx OS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRl bXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBd Jyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNiw2XScsICdb Nyw3XScsICdbOCw4XScsICdbOSw5XScpOwogCiAtLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVz IFNFVCBOVUxMCi1JTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzksOV0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7Ci1JTlNFUlQgSU5UTyB0ZW1w b3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJyksICdbOSw5XScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZB TFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CiBBTFRFUiBU QUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2Zr X3JuZzJybmdfZmssCiAJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mawog CQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5D RVMgdGVtcG9yYWxfcm5nCiAJCU9OIERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5V TEw7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcg Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEt MDEnIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24t RlBPIHVwZGF0ZToKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s3LDddJyBXSEVS RSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hF UkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dz OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n IFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitVUERB VEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbOSw5XScgV0hFUkUgaWQgPSAnWzgsOF0nIEFO RCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworLS0gY2xlYW4g dXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAw LDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUg aWQgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworCistLSB0ZXN0 IEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcg VkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKKy0tIGxl ZnRvdmVycyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIEZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBX SEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcg V0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIG5vbi1GUE8gZGVsZXRlOgorREVMRVRFIEZS T00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gRksgYWNyb3Nz IHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVT ICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAx LTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5n IFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdb OCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7Cist LSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJ TiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3Ju ZyBXSEVSRSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CiAK IC0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKIElOU0VSVCBJTlRPIHRl bXBvcmFsX3JuZyBWQUxVRVMgKCdbLTEsLTFdJywgdHNyYW5nZShudWxsLCBudWxsKSk7Ci1J TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEyLDEyXScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKLUlOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSwgJ1sxMiwxMl0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb Niw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUgdGVt cG9yYWxfZmtfcm5nMnJuZwogICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxU ICdbLTEsLTFdJywKIAlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywK QEAgLTc1OCw2ICs4NDEsMjcxIEBAIEFMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcK IAkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVO Q0VTIHRlbXBvcmFsX3JuZwogCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNF VCBERUZBVUxUOworLS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitVUERBVEUgdGVtcG9y YWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcy MDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOwor LS0gbm9uLUZQTyB1cGRhdGU6CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbNyw3 XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5j ZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIw MCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScp OworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzksOV0nIFdIRVJFIGlkID0gJ1s4 LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKy0t IGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkIElO ICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5n IFdIRVJFIGlkIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKwor LS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVAorSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nIFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdb MTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZd Jyk7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAy MC0wMS0wMScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9m a19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIHVwZGF0ZToK K0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0t IEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5n ZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf Zmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hF UkUgaWQgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFt cDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAw LDIwMF0nOworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcg V0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdb OSw5XScpOworCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUgKHR3byBzY2Fs YXIgY29scykKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAn WzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CitBTFRF UiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJu Z19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZh bGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIKKwkJT04gREVMRVRFIENBU0NB REUgT04gVVBEQVRFIENBU0NBREU7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK1VQ REFURSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTkt MDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQxID0gJ1s3LDddJyBXSEVSRSBpZDEgPSAn WzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbMTAwLDEwMF0nOworLS0gbm9uLUZQTyB1cGRhdGU6CitVUERBVEUgdGVtcG9yYWxfcm5n MiBTRVQgaWQxID0gJ1s3LDddJyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gRksg YWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcy IFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIw LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScs ICdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK1VQ REFURSB0ZW1wb3JhbF9ybmcyIFNFVCBpZDEgPSAnWzksOV0nIFdIRVJFIGlkMSA9ICdbOCw4 XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworLS0g Y2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElO ICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5n MiBXSEVSRSBpZDEgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOwor CistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIENBU0NBREUgKHR3byBzY2FsYXIgY29scykK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CistLSBsZWZ0b3ZlcnMg b24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlk MSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJF IGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIGRlbGV0ZToKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIEZLIGFjcm9zcyB0 d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMg KCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0n LCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcy MDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5n MnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9N IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAs MjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgSU4gKCdbNiw2 XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworCistLSB0ZXN0IEZLIHBhcmVudCB1 cGRhdGVzIFNFVCBOVUxMICh0d28gc2NhbGFyIGNvbHMpCitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcyIFZBTFVFUyAoJ1s2LDZdJywgJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFM VUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyks ICdbNiw2XScsICdbNiw2XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcK KwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmssCisJQUREIENPTlNU UkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZDEsIHBhcmVudF9pZDIsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3Jh bF9ybmcyCisJCU9OIERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7CistLSBs ZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQg aWQxID0gJ1s3LDddJyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gbm9uLUZQTyB1 cGRhdGU6CitVUERBVEUgdGVtcG9yYWxfcm5nMiBTRVQgaWQxID0gJ1s3LDddJyBXSEVSRSBp ZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMTAwLDEwMF0nOworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEt MDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5n IFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcyIFNFVCBpZDEg PSAnWzksOV0nIFdIRVJFIGlkMSA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAx LTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMjAwLDIwMF0nOworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBv cmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScp OworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgSU4gKCdbNiw2XScsICdb Nyw3XScsICdbOCw4XScsICdbOSw5XScpOworCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVz IFNFVCBOVUxMICh0d28gc2NhbGFyIGNvbHMpCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcy IFZBTFVFUyAoJ1s2LDZdJywgJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgn WzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2 XScsICdbNiw2XScpOworLS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEt MDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gbm9u LUZQTyBkZWxldGU6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdb Niw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0g J1sxMDAsMTAwXSc7CistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcy MDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVT ICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdb OCw4XScsICdbOCw4XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEg PSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBd JzsKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVS RSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3JuZzIgV0hFUkUgaWQxIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzks OV0nKTsKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTCAodHdvIHNjYWxh ciBjb2xzLCBTRVQgTlVMTCBzdWJzZXQpCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZB TFVFUyAoJ1s2LDZdJywgJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzEw MCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScs ICdbNiw2XScpOworLS0gZmFpbHMgYmVjYXVzZSB5b3UgY2FuJ3Qgc2V0IHRoZSBQRVJJT0Qg Y29sdW1uOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKwlEUk9QIENPTlNU UkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9y YWxfZmsyX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEsIHBhcmVudF9p ZDIsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcyCisJCU9O IERFTEVURSBTRVQgTlVMTCAodmFsaWRfYXQpIE9OIFVQREFURSBTRVQgTlVMTDsKKy0tIG9r OgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQg dGVtcG9yYWxfZmsyX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsy X3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEsIHBhcmVudF9pZDIsIFBF UklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcyCisJCU9OIERFTEVU RSBTRVQgTlVMTCAocGFyZW50X2lkMSkgT04gVVBEQVRFIFNFVCBOVUxMOworLS0gbGVmdG92 ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVS RSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gbm9uLUZQTyBkZWxldGU6CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBGSyBhY3Jv c3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFM VUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEt MDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4 LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworREVMRVRF IEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBA PiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsy X3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKy0tIGNsZWFuIHVwCitERUxFVEUg RlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdb MjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxIElOICgn WzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKworLS0gdGVzdCBGSyBwYXJl bnQgdXBkYXRlcyBTRVQgREVGQVVMVCAodHdvIHNjYWxhciBjb2xzKQorSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbLTEsLTFdJywgJ1stMSwtMV0nLCB0c3JhbmdlKG51 bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0n LCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CitB TFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworICBBTFRFUiBDT0xVTU4gcGFyZW50 X2lkMSBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisgIEFMVEVSIENPTFVNTiBwYXJlbnRfaWQy IFNFVCBERUZBVUxUICdbLTEsLTFdJywKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsy X3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsK KwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEsIHBhcmVudF9pZDIsIFBFUklPRCB2YWxpZF9h dCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcyCisJCU9OIERFTEVURSBTRVQgREVGQVVM VCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoK K1VQREFURSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQxID0gJ1s3LDddJywgaWQyID0gJ1s3 LDddJyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJf cm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gbm9uLUZQTyB1cGRhdGU6CitV UERBVEUgdGVtcG9yYWxfcm5nMiBTRVQgaWQxID0gJ1s3LDddJywgaWQyID0gJ1s3LDddJyBX SEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2Vk IHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4 LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIw MjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9y bmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcyIFNF VCBpZDEgPSAnWzksOV0nLCBpZDIgPSAnWzksOV0nIFdIRVJFIGlkMSA9ICdbOCw4XScgQU5E IHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworLS0gY2xlYW4g dXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEw MCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVS RSBpZDEgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworCistLSB0 ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUICh0d28gc2NhbGFyIGNvbHMpCitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s2LDZdJywgJ1s2LDZdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJyksICdbNiw2XScsICdbNiw2XScpOworLS0gbGVmdG92ZXJzIG9u IGJvdGggc2lkZXM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZDEg PSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBp ZCA9ICdbMTAwLDEwMF0nOworLS0gbm9uLUZQTyB1cGRhdGU6CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFs X2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBGSyBhY3Jvc3MgdHdv IHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgn WzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywg dHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworREVMRVRFIEZST00g dGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAx OS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIw MF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxIElOICgnWzYsNl0n LCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVs ZXRlcyBTRVQgREVGQVVMVCAodHdvIHNjYWxhciBjb2xzLCBTRVQgREVGQVVMVCBzdWJzZXQp CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1stMSwtMV0nLCAnWzYsNl0n LCB0c3JhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFM VUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMTAw LDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywg J1s2LDZdJyk7CistLSBmYWlscyBiZWNhdXNlIHlvdSBjYW4ndCBzZXQgdGhlIFBFUklPRCBj b2x1bW46CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworICBBTFRFUiBDT0xV TU4gcGFyZW50X2lkMSBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisJRFJPUCBDT05TVFJBSU5U IHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2Zr Ml9ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQ RVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMgorCQlPTiBERUxF VEUgU0VUIERFRkFVTFQgKHZhbGlkX2F0KSBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CistLSBv azoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisgIEFMVEVSIENPTFVNTiBw YXJlbnRfaWQxIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKwlEUk9QIENPTlNUUkFJTlQgdGVt cG9yYWxfZmsyX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3Ju ZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEsIHBhcmVudF9pZDIsIFBFUklP RCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcyCisJCU9OIERFTEVURSBT RVQgREVGQVVMVCAocGFyZW50X2lkMSkgT04gVVBEQVRFIFNFVCBERUZBVUxUOworLS0gbGVm dG92ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIEZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBX SEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gbm9uLUZQTyB1cGRhdGU6CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBGSyBh Y3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIg VkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywg J1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbLTEsLTFdJywgJ1s4LDhdJywgdHNyYW5n ZShudWxsLCBudWxsKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxV RVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwg J1s4LDhdJywgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlk MSA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIw MF0nOworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdI RVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVt cG9yYWxfcm5nMiBXSEVSRSBpZDEgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdb OSw5XScpOworCistLSBGSyB3aXRoIGEgY3VzdG9tIHJhbmdlIHR5cGUKKworQ1JFQVRFIFRZ UEUgbXlkYXRlcmFuZ2UgQVMgcmFuZ2Uoc3VidHlwZT1kYXRlKTsKKworQ1JFQVRFIFRBQkxF IHRlbXBvcmFsX3JuZzMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBteWRhdGVyYW5n ZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxp ZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9mazNf cm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IG15ZGF0ZXJhbmdlLAorCXBh cmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazNfcm5nMnJuZ19w ayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfZmszX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwg UEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzMgKGlkLCBQRVJJ T0QgdmFsaWRfYXQpIE9OIERFTEVURSBDQVNDQURFCispOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nMyBWQUxVRVMgKCdbOCw4XScsIG15ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazNfcm5nMnJuZyBWQUxVRVMg KCdbNSw1XScsIG15ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4 LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmczIEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbOCw4 XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrM19ybmcycm5nIFdIRVJFIGlkID0gJ1s1 LDVdJzsKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9mazNfcm5nMnJuZzsKK0RST1AgVEFCTEUg dGVtcG9yYWxfcm5nMzsKK0RST1AgVFlQRSBteWRhdGVyYW5nZTsKIAogLS0gRksgYmV0d2Vl biBwYXJ0aXRpb25lZCB0YWJsZXMKIApAQCAtNzY3LDggKzExMTUsOCBAQCBDUkVBVEUgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nICgKICAgbmFtZSB0ZXh0LAogCUNPTlNUUkFJ TlQgdGVtcG9yYWxfcGFyaXRpb25lZF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKQogKSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOwotQ1JFQVRF IFRBQkxFIHRwMSBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBW QUxVRVMgSU4gKCdbMSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScs ICdbMTEsMTFdJyk7Ci1DUkVBVEUgVEFCTEUgdHAyIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZd JywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworQ1JFQVRFIFRBQkxFIHRwMSBQ QVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdb MSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJywg J1sxMywxM10nLCAnWzE1LDE1XScsICdbMTcsMTddJywgJ1sxOSwxOV0nLCAnWzIxLDIxXScs ICdbMjMsMjNdJyk7CitDUkVBVEUgVEFCTEUgdHAyIFBBUlRJVElPTiBPRiB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1swLDBdJywgJ1syLDJdJywgJ1s0LDRd JywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScsICdbMTQsMTRdJywg J1sxNiwxNl0nLCAnWzE4LDE4XScsICdbMjAsMjBdJywgJ1syMiwyMl0nLCAnWzI0LDI0XScp OwogSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUwogICAoJ1sx LDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMDEnKSwgJ29uZScpLAog ICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAyLTAxJywgJzIwMDAtMDMtMDEnKSwgJ29u ZScpLApAQCAtNzgyLDggKzExMzAsOCBAQCBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZyAoCiAJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkK IAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKGlkLCBQRVJJT0QgdmFs aWRfYXQpCiApIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7Ci1DUkVBVEUgVEFCTEUgdGZrcDEg cGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVF UyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sx MSwxMV0nKTsKLUNSRUFURSBUQUJMRSB0ZmtwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyBGT1IgVkFMVUVTIElOICgnWzIsMl0nLCAnWzQsNF0nLCAn WzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJyk7CitDUkVBVEUgVEFCTEUg dGZrcDEgUEFSVElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9S IFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDld JywgJ1sxMSwxMV0nLCAnWzEzLDEzXScsICdbMTUsMTVdJywgJ1sxNywxN10nLCAnWzE5LDE5 XScsICdbMjEsMjFdJywgJ1syMywyM10nKTsKK0NSRUFURSBUQUJMRSB0ZmtwMiBQQVJUSVRJ T04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBGT1IgVkFMVUVTIElOICgn WzAsMF0nLCAnWzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScs ICdbMTIsMTJdJywgJ1sxNCwxNF0nLCAnWzE2LDE2XScsICdbMTgsMThdJywgJ1syMCwyMF0n LCAnWzIyLDIyXScsICdbMjQsMjRdJyk7CiAKIC0tIHBhcnRpdGlvbmVkIEZLIGNoaWxkIGlu c2VydHMKIApAQCAtODY3LDM3ICsxMjE1LDEwNyBAQCBERUxFVEUgRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVy YW5nZQogCiAtLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCiAKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNiw2XScsIGRh dGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNCw0XScsIGRhdGVyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUg dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZwogCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKK1VQREFURSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQg PSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1s0LDRdJzsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzQsNF0nOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNSwxNV0n LCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTUsMTVdJywgZGF0ZXJhbmdl KCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMCwxMF0nLCBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE1LDE1XScpOworVVBEQVRFIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzE2LDE2XScgV0hFUkUgaWQgPSAnWzE1LDE1 XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAsMTBdJzsK IAogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQogCitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzgsOF0nLCBkYXRlcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5 LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s1LDVd JzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdb OCw4XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcg V0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFZBTFVFUyAoJ1sxNywxN10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMg KCdbMTcsMTddJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sx MSwxMV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE3LDE3 XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0g J1sxNywxN10nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEx LDExXSc7CisKIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCiAK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbOSw5XScs IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNiw2XScsIGRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOSw5XScpOwogQUxURVIgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZwogCQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOworVVBE QVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMCwxMF0nIFdI RVJFIGlkID0gJ1s5LDldJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNiw2XSc7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFNFVCBpZCA9ICdbMTAsMTBdJyBXSEVSRSBpZCA9ICdbOSw5XSc7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzYsNl0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAo J1sxOCwxOF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTgsMThdJywg ZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMiwxMl0nLCBkYXRl cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE4LDE4XScpOworVVBEQVRF IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzE5LDE5XScgV0hFUkUgaWQg PSAnWzE4LDE4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdb MTIsMTJdJzsKIAogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwK IAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxMSwx MV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzcsN10nLCBk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzExLDExXScpOworREVM RVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTEs MTFdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbNyw3XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzcsN10nOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syMCwyMF0nLCBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyBWQUxVRVMgKCdbMjAsMjBdJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nIFZBTFVFUyAoJ1sxMywxM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpLCAnWzIwLDIwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFdIRVJFIGlkID0gJ1syMCwyMF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0w MSc6OmRhdGU7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzEzLDEzXSc7CisKIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1 cGRhdGVzIFNFVCBERUZBVUxUCiAKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBWQUxVRVMgKCdbMCwwXScsIGRhdGVyYW5nZShudWxsLCBudWxsKSk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzEyLDEyXScsIGRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbOCw4XScsIGRhdGVyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTIsMTJdJyk7CiBBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCi0gIEFMVEVSIENPTFVNTiBwYXJlbnRf aWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNF VCBERUZBVUxUICdbMCwwXScsCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCiAJCU9OIERF TEVURSBTRVQgREVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CitVUERBVEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTkt MDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAn WzEyLDEyXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzgsOF0nOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzgsOF0n OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syMiwy Ml0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMjIsMjJdJywgZGF0ZXJh bmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxNCwxNF0nLCBkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzIyLDIyXScpOworVVBEQVRFIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzIzLDIzXScgV0hFUkUgaWQgPSAnWzIy LDIyXScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTQsMTRd JzsKIAogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQKIAor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNCwxNF0n LCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzksOV0nLCBkYXRl cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE0LDE0XScpOworREVMRVRF IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTQsMTRd JzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVS RSBpZCA9ICdbOSw5XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg V0hFUkUgaWQgPSAnWzE0LDE0XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzksOV0nOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syNCwyNF0nLCBkYXRlcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBWQUxVRVMgKCdbMjQsMjRdJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nIFZBTFVFUyAoJ1sxNSwxNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpLCAnWzI0LDI0XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFdIRVJFIGlkID0gJ1syNCwyNF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6 OmRhdGU7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcg V0hFUkUgaWQgPSAnWzE1LDE1XSc7CisKIERST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZzsKIERST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nOwot LSAKMi40Mi4wCgo= --------------F56VWTQ0Ck05qER7bvQmfAru Content-Type: text/x-patch; charset=UTF-8; name="v21-0008-Add-PERIODs.patch" Content-Disposition: attachment; filename="v21-0008-Add-PERIODs.patch" Content-Transfer-Encoding: base64 RnJvbSBlNTcwMTc1ZWFjOThkODI1NGEyOTQ0Njc1NDZhNmZkYzVjMjc0OTM0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgOSBKYW4gMjAyMSAyMTo1OTo0MyAtMDgw MApTdWJqZWN0OiBbUEFUQ0ggdjIxIDgvOF0gQWRkIFBFUklPRHMKCi0gQWRkZWQgcGFyc2lu ZyBmb3IgU1FMOjIwMTEgc3ludGF4IHRvIGRlZmluZSBhbiBhcHBsaWNhdGlvbi10aW1lIFBF UklPRCBvbiBhCiAgdGFibGUgKGluIGJvdGggQ1JFQVRFIFRBQkxFIGFuZCBBTFRFUiBUQUJM RSkuIE1ha2Ugc3VyZSB3ZSBjcmVhdGUgdGhlIFBFUklPRAogIGFmdGVyIGNvbHVtbnMgYXJl IGtub3duIChzaW5jZSBQRVJJT0RzIGNhbiByZWZlciB0byB0aGVtKSBidXQgYmVmb3JlCiAg Y29uc3RyYWludHMgYXJlIGhhbmRsZWQgKHNpbmNlIFBFUklPRHMgY2FuIGFwcGVhciBpbiB0 aGVtKS4KLSBBZGRlZCBBTFRFUiBUQUJMRSBEUk9QIHN1cHBvcnQgZm9yIFBFUklPRHMuCi0g Q3JlYXRlZCBwb3N0Z3Jlcy5wZ19wZXJpb2QgdGFibGUuCi0gQ3JlYXRlZCBpbmZvcm1hdGlv bl9zY2hlbWEucGVyaW9kcyB2aWV3LgotIEFkZGVkIHBnX2R1bXAgc3VwcG9ydC4KLSBBZGRl ZCB0ZXN0cyBhbmQgZG9jdW1lbnRhdGlvbi4KLSBBdXRvbWF0aWNhbGx5IGRlZmluZSBhIGNv bnN0cmFpbnQgZm9yIGVhY2ggUEVSSU9EIHJlcXVpcmluZyB0aGUgc3RhcnQgY29sdW1uCiAg dG8gYmUgbGVzcyB0aGFuIHRoZSBlbmQgY29sdW1uLgotIFdoZW4gY3JlYXRpbmcgYSBQRVJJ T0QsIGNob29zZSBhbiBhcHByb3ByaWF0ZSByYW5nZSB0eXBlIHdlIGNhbiB1c2UgdG8KICBp bXBsZW1lbnQgUEVSSU9ELXJlbGF0ZWQgb3BlcmF0aW9ucy4gWW91IGNhbiBjaG9vc2Ugb25l IGV4cGxpY2l0bHkgaWYgdGhlcmUKICBpcyBhbWJpZ3VpdHkgKGR1ZSB0byBtdWx0aXBsZSBy YW5nZSB0eXBlcyBjcmVhdGVkIG92ZXIgdGhlIHNhbWUgYmFzZSB0eXBlKS4KLS0tCiBkb2Mv c3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAxMTIgKysrCiBk b2Mvc3JjL3NnbWwvZGRsLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTggKysK IGRvYy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEuc2dtbCAgICAgICAgICB8ICA2MyAr KwogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sICAgICAgICAgICAgIHwgIDI1 ICsKIGRvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sICAgICAgICAgICAgICAgICB8ICAg MiArCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sICAgICAgICAgICAgfCAg NDAgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgIHwg ICAyICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgICAgICAgICAgICAgICAgICB8 ICAgMiArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYyAgICAgICAgICAgICAg fCAgIDkgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMgICAgICAgICAgICAgICAgICAg IHwgIDc2ICsrCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwg ICAgfCAgMjMgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvbWVzb24uYnVpbGQgICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYyAgICAg ICAgICAgfCAgNzMgKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcGVyaW9kLmMgICAgICAg ICAgICAgICB8IDEzMiArKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4 dCAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYyAgICAg ICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbW1lbnQuYyAg ICAgICAgICAgICAgICB8ICAxMCArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9kcm9wY21kcy5j ICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJp Z2dlci5jICAgICAgICAgIHwgICA0ICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVs LmMgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYyAgICAgICAgICAgICAgfCA3NDkgKysrKysrKysrKysrKysrKystCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy92aWV3LmMgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNr ZW5kL25vZGVzL25vZGVGdW5jcy5jICAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAgNDMgKy0KIHNyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jICAgICAgICAgICB8ICAxMCArCiBzcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgICAgICAgfCAxNDUgKysrLQog c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgICAgICAgICAgIHwgIDg3ICsr CiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jICAgICAgICAgICAgfCAgMjEg Kwogc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jICAgICAgICAgIHwgICAx ICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8IDE3 MyArKystCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAgICAgICAg fCAgMTQgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jICAgICAgICAgICAgICAg IHwgICA3ICsKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAgICAg ICB8ICAzNiArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCAgICAgICAgICAg ICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmggICAgICAgICAgICAgICAg ICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQgICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2luZGV4LmggICAgICAgICAg ICAgICAgfCAgIDEgLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wZXJpb2QuaCAgICAgICAg ICAgICAgIHwgIDU0ICsrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3JhbmdlLmggICAgICAg ICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmggICAg ICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAg ICAgICAgICAgICAgfCAgMzkgKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV91dGlsY21k LmggICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCAg ICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUuaCAg ICAgICAgICAgICAgICAgIHwgICAzICsKIC4uLi90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRs X2RlcGFyc2UuYyAgICAgICB8ICAgNiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Bl cmlvZHMub3V0ICAgICAgICAgfCAxNzcgKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxs ZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwv cGVyaW9kcy5zcWwgICAgICAgICAgICAgIHwgMTE5ICsrKwogNDggZmlsZXMgY2hhbmdlZCwg MjMwOSBpbnNlcnRpb25zKCspLCAzNyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3BlcmlvZC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wZXJpb2QuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGVyaW9kcy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wZXJpb2RzLnNxbAoKZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5k ZXggNDYxNzBjMDc0OS4uNmU4Y2Y1ZTk4MyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTIzMCw2 ICsyMzAsMTEgQEAKICAgICAgIDxlbnRyeT5pbmZvcm1hdGlvbiBhYm91dCBwYXJ0aXRpb24g a2V5IG9mIHRhYmxlczwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAg ICA8ZW50cnk+PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1wZXJpb2QiPjxzdHJ1Y3RuYW1l PnBnX3BlcmlvZDwvc3RydWN0bmFtZT48L2xpbms+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5w ZXJpb2RzPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRy eT48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLXBvbGljeSI+PHN0cnVjdG5hbWU+cGdfcG9s aWN5PC9zdHJ1Y3RuYW1lPjwvbGluaz48L2VudHJ5PgogICAgICAgPGVudHJ5PnJvdy1zZWN1 cml0eSBwb2xpY2llczwvZW50cnk+CkBAIC01NzI2LDYgKzU3MzEsMTEzIEBAIFNDUkFNLVNI QS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJs ZT46PHJlcGxhY2VhYmxlPiZsCiAgICAgICAgYXJlIHNpbXBsZSByZWZlcmVuY2VzLgogICAg ICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgorCisgICAgPC90Ym9keT4KKyAgIDwv dGdyb3VwPgorICA8L3RhYmxlPgorIDwvc2VjdDE+CisKKworIDxzZWN0MSBpZD0iY2F0YWxv Zy1wZy1wZXJpb2QiPgorICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfcGVyaW9kPC9zdHJ1Y3Ru YW1lPjwvdGl0bGU+CisKKyAgPGluZGV4dGVybSB6b25lPSJjYXRhbG9nLXBnLXBlcmlvZCI+ CisgICA8cHJpbWFyeT5wZ19wZXJpb2Q8L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJtPgorCisg IDxwYXJhPgorICAgVGhlIGNhdGFsb2cgPHN0cnVjdG5hbWU+cGdfcGVyaW9kPC9zdHJ1Y3Ru YW1lPiBzdG9yZXMKKyAgIGluZm9ybWF0aW9uIGFib3V0IHN5c3RlbSBhbmQgYXBwbGljYXRp b24gdGltZSBwZXJpb2RzLgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBQZXJpb2RzIGFy ZSBkZXNjcmliZWQgaW4gPHhyZWYgbGlua2VuZD0iZGRsLXBlcmlvZHMiLz4uCisgIDwvcGFy YT4KKworICA8dGFibGU+CisgICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfcGVyaW9kPC9zdHJ1 Y3RuYW1lPiBDb2x1bW5zPC90aXRsZT4KKworICAgPHRncm91cCBjb2xzPSIxIj4KKyAgICA8 dGhlYWQ+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9l bnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIENvbHVtbiBU eXBlCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBEZXNjcmlwdGlvbgor ICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGhlYWQ+CisKKyAg ICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1 Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICBSb3cgaWRlbnRpZmllcgorICAgICAgPC9wYXJh PjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9s ZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24i PgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZXJuYW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4 dDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFBlcmlvZCBu YW1lCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4K KyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJj b2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnBlcnJlbGlkPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5rIGxp bmtlbmQ9ImNhdGFsb2ctcGctY2xhc3MiPjxzdHJ1Y3RuYW1lPnBnX2NsYXNzPC9zdHJ1Y3Ru YW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9w YXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGhlIHRhYmxlIHRoaXMgcGVyaW9kIGJlbG9u Z3MgdG8KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93 PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cGVyc3RhcnQ8L3N0 cnVjdGZpZWxkPiA8dHlwZT5pbnQyPC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5r IGxpbmtlbmQ9ImNhdGFsb2ctcGctYXR0cmlidXRlIj48c3RydWN0bmFtZT5wZ19hdHRyaWJ1 dGU8L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+YXR0bnVtPC9zdHJ1Y3RmaWVs ZD4pCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgbnVtYmVyIG9m IHRoZSBzdGFydCBjb2x1bW4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4K KworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnki PjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+ cGVyZW5kPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50MjwvdHlwZT4KKyAgICAgICAocmVmZXJl bmNlcyA8bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWF0dHJpYnV0ZSI+PHN0cnVjdG5hbWU+ cGdfYXR0cmlidXRlPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPmF0dG51bTwv c3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGhl IG51bWJlciBvZiB0aGUgZW5kIGNvbHVtbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAg IDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1 Y3RmaWVsZD5wZXJyYW5nZTwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDI8L3R5cGU+CisgICAg ICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1hdHRyaWJ1dGUiPjxz dHJ1Y3RuYW1lPnBnX2F0dHJpYnV0ZTwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVs ZD5hdHRudW08L3N0cnVjdGZpZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgor ICAgICAgIFRoZSBudW1iZXIgb2YgdGhlIDxsaXRlcmFsPkdFTkVSQVRFRDwvbGl0ZXJhbD4g Y29sdW1uIHRoYXQgaW1wbGVtZW50cyB0aGUgPGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPi4K KyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAg ICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVt bl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cGVyY29uc3RyYWludDwvc3Ry dWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgICAocmVmZXJlbmNlcyA8bGluayBs aW5rZW5kPSJjYXRhbG9nLXBnLWNvbnN0cmFpbnQiPjxzdHJ1Y3RuYW1lPnBnX2NvbnN0cmFp bnQ8L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+b2lkPC9zdHJ1Y3RmaWVsZD4p CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgT0lEIG9mIHRoZSBw ZXJpb2QncyA8bGl0ZXJhbD5DSEVDSzwvbGl0ZXJhbD4gY29uc3RyYWludAorICAgICAgPC9w YXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCiAgICAgPC90Ym9keT4KICAgIDwvdGdyb3Vw PgogICA8L3RhYmxlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sIGIvZG9j L3NyYy9zZ21sL2RkbC5zZ21sCmluZGV4IDIyZDA0MDA2YWQuLjhlYTBiZWQ0MmYgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZGRsLnNn bWwKQEAgLTEyNjMsNiArMTI2Myw2NCBAQCBDUkVBVEUgVEFCTEUgY2lyY2xlcyAoCiAgIDwv c2VjdDI+CiAgPC9zZWN0MT4KIAorIDxzZWN0MSBpZD0iZGRsLXBlcmlvZHMiPgorICA8dGl0 bGU+UGVyaW9kczwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBQZXJpb2RzIGFyZSBkZWZpbml0 aW9ucyBvbiBhIHRhYmxlIHRoYXQgYXNzb2NpYXRlIGEgcGVyaW9kIG5hbWUgd2l0aCBhIHN0 YXJ0CisgICBjb2x1bW4gYW5kIGFuIGVuZCBjb2x1bW4uICBCb3RoIGNvbHVtbnMgbXVzdCBi ZSBvZiBleGFjdGx5IHRoZSBzYW1lIHR5cGUKKyAgIChpbmNsdWRpbmcgY29sbGF0aW9uKSwg aGF2ZSBhIGJ0cmVlIG9wZXJhdG9yIGNsYXNzLCBhbmQgdGhlIHN0YXJ0IGNvbHVtbgorICAg dmFsdWUgbXVzdCBiZSBzdHJpY3RseSBsZXNzIHRoYW4gdGhlIGVuZCBjb2x1bW4gdmFsdWUu CisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRoZXJlIGFyZSB0d28gdHlwZXMgb2YgcGVy aW9kczogYXBwbGljYXRpb24gYW5kIHN5c3RlbS4gIFN5c3RlbSBwZXJpb2RzIGFyZQorICAg ZGlzdGluZ3Vpc2hlZCBieSB0aGVpciBuYW1lIHdoaWNoIG11c3QgYmUgPGxpdGVyYWw+U1lT VEVNX1RJTUU8L2xpdGVyYWw+LiAgQW55CisgICBvdGhlciBuYW1lIGlzIGFuIGFwcGxpY2F0 aW9uIHBlcmlvZC4KKyAgPC9wYXJhPgorCisgIDxzZWN0MiBpZD0iZGRsLXBlcmlvZHMtYXBw bGljYXRpb24tcGVyaW9kcyI+CisgIDx0aXRsZT5BcHBsaWNhdGlvbiBQZXJpb2RzPC90aXRs ZT4KKworICAgPGluZGV4dGVybT4KKyAgICA8cHJpbWFyeT5wZXJpb2Q8L3ByaW1hcnk+Cisg ICAgPHNlY29uZGFyeT5hcHBsaWNhdGlvbjwvc2Vjb25kYXJ5PgorICAgPC9pbmRleHRlcm0+ CisKKyAgIDxwYXJhPgorICAgIEFwcGxpY2F0aW9uIHBlcmlvZHMgYXJlIGRlZmluZWQgb24g YSB0YWJsZSB1c2luZyB0aGUgZm9sbG93aW5nIHN5bnRheDoKKyAgIDwvcGFyYT4KKworPHBy b2dyYW1saXN0aW5nPgorQ1JFQVRFIFRBQkxFIGJpbGxpbmdfYWRkcmVzc2VzICgKKyAgY3Vz dG9tZXJfaWQgaW50ZWdlciwKKyAgYWRkcmVzc19pZCBpbnRlZ2VyLAorICB2YWxpZF9mcm9t IGRhdGUsCisgIHZhbGlkX3RvIGRhdGUsCisgIDxlbXBoYXNpcz5QRVJJT0QgRk9SIHZhbGlk aXR5ICh2YWxpZF9mcm9tLCB2YWxpZF90byk8L2VtcGhhc2lzPgorKTsKKzwvcHJvZ3JhbWxp c3Rpbmc+CisKKyAgIDxwYXJhPgorICAgIEFwcGxpY2F0aW9uIHBlcmlvZHMgY2FuIGJlIHVz ZWQgdG8gZGVmaW5lIHRlbXBvcmFsIHByaW1hcnkgYW5kIGZvcmVpZ24ga2V5cy4KKyAgICBB bnkgdGFibGUgd2l0aCBhIHRlbXBvcmFsIHByaW1hcnkga2V5IGlzIGEgdGVtcG9yYWwgdGFi bGUgYW5kIHN1cHBvcnRzIHRlbXBvcmFsIHVwZGF0ZSBhbmQgZGVsZXRlIGNvbW1hbmRzLgor ICAgPC9wYXJhPgorICA8L3NlY3QyPgorCisgIDxzZWN0MiBpZD0iZGRsLXBlcmlvZHMtc3lz dGVtLXBlcmlvZHMiPgorICAgPHRpdGxlPlN5c3RlbSBQZXJpb2RzPC90aXRsZT4KKworICAg PGluZGV4dGVybT4KKyAgICA8cHJpbWFyeT5wZXJpb2Q8L3ByaW1hcnk+CisgICAgPHNlY29u ZGFyeT5zeXN0ZW08L3NlY29uZGFyeT4KKyAgIDwvaW5kZXh0ZXJtPgorCisgICA8cGFyYT4K KyAgICBQZXJpb2RzIGZvciA8bGl0ZXJhbD5TWVNURU1fVElNRTwvbGl0ZXJhbD4gYXJlIGN1 cnJlbnRseSBub3QgaW1wbGVtZW50ZWQuCisgICA8L3BhcmE+CisgIDwvc2VjdDI+CisgPC9z ZWN0MT4KKwogIDxzZWN0MSBpZD0iZGRsLXN5c3RlbS1jb2x1bW5zIj4KICAgPHRpdGxlPlN5 c3RlbSBDb2x1bW5zPC90aXRsZT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2luZm9y bWF0aW9uX3NjaGVtYS5zZ21sIGIvZG9jL3NyYy9zZ21sL2luZm9ybWF0aW9uX3NjaGVtYS5z Z21sCmluZGV4IDBjYTdkNWE5ZTAuLjU2YTQ0NjRhYjcgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvaW5mb3Jt YXRpb25fc2NoZW1hLnNnbWwKQEAgLTQxNzEsNiArNDE3MSw2OSBAQCBPUkRFUiBCWSBjLm9y ZGluYWxfcG9zaXRpb247CiAgIDwvdGFibGU+CiAgPC9zZWN0MT4KIAorIDxzZWN0MSBpZD0i aW5mb3NjaGVtYS1wZXJpb2RzIj4KKyAgPHRpdGxlPjxsaXRlcmFsPnBlcmlvZHM8L2xpdGVy YWw+PC90aXRsZT4KKworICA8cGFyYT4KKyAgIFRoZSB2aWV3IDxsaXRlcmFsPnBhcmFtZXRl cnM8L2xpdGVyYWw+IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZQorICAgcGVyaW9k cyBvZiBhbGwgdGFibGVzIGluIHRoZSBjdXJyZW50IGRhdGFiYXNlLiAgVGhlIHN0YXJ0IGFu ZCBlbmQgY29sdW1uCisgICBuYW1lcyBhcmUgb25seSBzaG93biBpZiB0aGUgY3VycmVudCB1 c2VyIGhhcyBhY2Nlc3MgdG8gdGhlbSAoYnkgd2F5IG9mIGJlaW5nCisgICB0aGUgb3duZXIg b3IgaGF2aW5nIHNvbWUgcHJpdmlsZWdlKS4KKyAgPC9wYXJhPgorCisgIDx0YWJsZT4KKyAg IDx0aXRsZT48bGl0ZXJhbD5wZXJpb2RzPC9saXRlcmFsPiBDb2x1bW5zPC90aXRsZT4KKwor ICAgPHRncm91cCBjb2xzPSIzIj4KKyAgICA8dGhlYWQ+CisgICAgIDxyb3c+CisgICAgICA8 ZW50cnk+TmFtZTwvZW50cnk+CisgICAgICA8ZW50cnk+RGF0YSBUeXBlPC9lbnRyeT4KKyAg ICAgIDxlbnRyeT5EZXNjcmlwdGlvbjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGhl YWQ+CisKKyAgICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+ dGFibGVfY2F0YWxvZzwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPnNx bF9pZGVudGlmaWVyPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+TmFtZSBvZiB0aGUg ZGF0YWJhc2UgY29udGFpbmluZyB0aGUgcGVyaW9kIChhbHdheXMgdGhlIGN1cnJlbnQgZGF0 YWJhc2UpPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eT48bGl0ZXJhbD50YWJsZV9zY2hlbWE8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRy eT48dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5Pk5h bWUgb2YgdGhlIHNjaGVtYSBjb250YWluaW5nIHRoZSBwZXJpb2Q8L2VudHJ5PgorICAgICA8 L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPnRhYmxlX25hbWU8 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5zcWxfaWRlbnRpZmllcjwv dHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5Pk5hbWUgb2YgdGhlIHRhYmxlIGNvbnRhaW5p bmcgdGhlIHBlcmlvZDwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAg ICA8ZW50cnk+PGxpdGVyYWw+cGVyaW9kX25hbWU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAg IDxlbnRyeT48dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT48L2VudHJ5PgorICAgICAgPGVu dHJ5Pk5hbWUgb2YgdGhlIHBlcmlvZDwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxy b3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+c3RhcnRfY29sdW1uX25hbWU8L2xpdGVyYWw+ PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT48L2Vu dHJ5PgorICAgICAgPGVudHJ5Pk5hbWUgb2YgdGhlIHN0YXJ0IGNvbHVtbiBmb3IgdGhlIHBl cmlvZDwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+ PGxpdGVyYWw+ZW5kX2NvbHVtbl9uYW1lPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50 cnk+PHR5cGU+c3FsX2lkZW50aWZpZXI8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5O YW1lIG9mIHRoZSBlbmQgY29sdW1uIGZvciB0aGUgcGVyaW9kPC9lbnRyeT4KKyAgICAgPC9y b3c+CisgICAgPC90Ym9keT4KKyAgIDwvdGdyb3VwPgorICA8L3RhYmxlPgorIDwvc2VjdDE+ CisKICA8c2VjdDEgaWQ9ImluZm9zY2hlbWEtcmVmZXJlbnRpYWwtY29uc3RyYWludHMiPgog ICA8dGl0bGU+PGxpdGVyYWw+cmVmZXJlbnRpYWxfY29uc3RyYWludHM8L2xpdGVyYWw+PC90 aXRsZT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21s IGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCmluZGV4IGUxZDIwN2JjNjAu LjNkYzAxMDE5YTkgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKQEAgLTYwLDYg KzYwLDggQEAgQUxURVIgVEFCTEUgWyBJRiBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAgICAgQUxURVIgQ09OU1RSQUlOVCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29uc3RyYWludF9uYW1lPC9yZXBsYWNl YWJsZT4gWyBERUZFUlJBQkxFIHwgTk9UIERFRkVSUkFCTEUgXSBbIElOSVRJQUxMWSBERUZF UlJFRCB8IElOSVRJQUxMWSBJTU1FRElBVEUgXQogICAgIFZBTElEQVRFIENPTlNUUkFJTlQg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFj ZWFibGU+CiAgICAgRFJPUCBDT05TVFJBSU5UIFsgSUYgRVhJU1RTIF0gIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5jb25zdHJhaW50X25hbWU8L3JlcGxhY2VhYmxlPiBbIFJF U1RSSUNUIHwgQ0FTQ0FERSBdCisgICAgQUREIFBFUklPRCBGT1IgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+c3RhcnRfY29sdW1uPC9yZXBsYWNlYWJsZT4sIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lbmRfY29sdW1uPC9yZXBsYWNlYWJsZT4gKSBb IFdJVEggKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX29wdGlvbjwv cmVwbGFjZWFibGU+ID0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVlPC9y ZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdCisgICAgRFJPUCBQRVJJT0QgRk9SIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+IFsgUkVT VFJJQ1QgfCBDQVNDQURFIF0KICAgICBESVNBQkxFIFRSSUdHRVIgWyA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+dHJpZ2dlcl9uYW1lPC9yZXBsYWNlYWJsZT4gfCBBTEwgfCBV U0VSIF0KICAgICBFTkFCTEUgVFJJR0dFUiBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj50cmlnZ2VyX25hbWU8L3JlcGxhY2VhYmxlPiB8IEFMTCB8IFVTRVIgXQogICAgIEVO QUJMRSBSRVBMSUNBIFRSSUdHRVIgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRy aWdnZXJfbmFtZTwvcmVwbGFjZWFibGU+CkBAIC01NzEsNiArNTczLDI5IEBAIFdJVEggKCBN T0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8 L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5 PgogCisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtYWx0ZXJ0YWJsZS1kZXNjLWFkZC1wZXJp b2QiPgorICAgIDx0ZXJtPjxsaXRlcmFsPkFERCBQRVJJT0QgRk9SPC9saXRlcmFsPjwvdGVy bT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3JtIGFkZHMg YSBuZXcgcGVyaW9kIHRvIGEgdGFibGUgdXNpbmcgdGhlIHNhbWUgc3ludGF4IGFzCisgICAg ICA8eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRldGFibGUiLz4uCisgICAgIDwvcGFyYT4KKyAg ICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnkg aWQ9InNxbC1hbHRlcnRhYmxlLWRlc2MtZHJvcC1wZXJpb2QiPgorICAgIDx0ZXJtPjxsaXRl cmFsPkRST1AgUEVSSU9EIEZPUjwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgor ICAgICA8cGFyYT4KKyAgICAgIFRoaXMgZm9ybSBkcm9wcyB0aGUgc3BlY2lmaWVkIHBlcmlv ZCBvbiBhIHRhYmxlLiAgVGhlIHN0YXJ0IGFuZCBlbmQKKyAgICAgIGNvbHVtbnMgd2lsbCBu b3QgYmUgZHJvcHBlZCBieSB0aGlzIGNvbW1hbmQgYnV0IHRoZQorICAgICAgPGxpdGVyYWw+ Q0hFQ0s8L2xpdGVyYWw+IGNvbnN0cmFpbnQgd2lsbCBiZS4gIFlvdSB3aWxsIG5lZWQgdG8g c2F5CisgICAgICA8bGl0ZXJhbD5DQVNDQURFPC9saXRlcmFsPiBpZiBhbnl0aGluZyBvdXRz aWRlIHRoZSB0YWJsZSBkZXBlbmRzIG9uIHRoZQorICAgICAgY29sdW1uLgorICAgICA8L3Bh cmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlz dGVudHJ5IGlkPSJzcWwtYWx0ZXJ0YWJsZS1kZXNjLWRpc2FibGUtZW5hYmxlLXRyaWdnZXIi PgogICAgIDx0ZXJtPjxsaXRlcmFsPkRJU0FCTEU8L2xpdGVyYWw+LzxsaXRlcmFsPkVOQUJM RSBbIFJFUExJQ0EgfCBBTFdBWVMgXSBUUklHR0VSPC9saXRlcmFsPjwvdGVybT4KICAgICA8 bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NvbW1lbnQuc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sCmluZGV4IDViNDNjNTZiMTMuLjQ5YzJk Zjk5NDQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sCkBAIC00NCw2ICs0NCw3IEBAIENPTU1F TlQgT04KICAgT1BFUkFUT1IgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wZXJh dG9yX25hbWU8L3JlcGxhY2VhYmxlPiAoPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmxlZnRfdHlwZTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cmlnaHRfdHlwZTwvcmVwbGFjZWFibGU+KSB8CiAgIE9QRVJBVE9SIENMQVNTIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vYmplY3RfbmFtZTwvcmVwbGFjZWFibGU+IFVT SU5HIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9tZXRob2Q8L3JlcGxh Y2VhYmxlPiB8CiAgIE9QRVJBVE9SIEZBTUlMWSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+b2JqZWN0X25hbWU8L3JlcGxhY2VhYmxlPiBVU0lORyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+aW5kZXhfbWV0aG9kPC9yZXBsYWNlYWJsZT4gfAorICBQRVJJT0Qg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlbGF0aW9uX25hbWU8L3JlcGxhY2Vh YmxlPi48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX25hbWU8L3JlcGxh Y2VhYmxlPiB8CiAgIFBPTElDWSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cG9s aWN5X25hbWU8L3JlcGxhY2VhYmxlPiBPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IHwKICAgWyBQUk9DRURVUkFMIF0gTEFOR1VB R0UgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9iamVjdF9uYW1lPC9yZXBsYWNl YWJsZT4gfAogICBQUk9DRURVUkUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBy b2NlZHVyZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAoIFsgWyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+YXJnbW9kZTwvcmVwbGFjZWFibGU+IF0gWyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+YXJnbmFtZTwvcmVwbGFjZWFibGU+IF0gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmFyZ3R5cGU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIF0gKSBdIHwK QEAgLTM0MSw2ICszNDIsNyBAQCBDT01NRU5UIE9OIE9QRVJBVE9SIF4gKHRleHQsIHRleHQp IElTICdQZXJmb3JtcyBpbnRlcnNlY3Rpb24gb2YgdHdvIHRleHRzJzsKIENPTU1FTlQgT04g T1BFUkFUT1IgLSAoTk9ORSwgaW50ZWdlcikgSVMgJ1VuYXJ5IG1pbnVzJzsKIENPTU1FTlQg T04gT1BFUkFUT1IgQ0xBU1MgaW50NG9wcyBVU0lORyBidHJlZSBJUyAnNCBieXRlIGludGVn ZXIgb3BlcmF0b3JzIGZvciBidHJlZXMnOwogQ09NTUVOVCBPTiBPUEVSQVRPUiBGQU1JTFkg aW50ZWdlcl9vcHMgVVNJTkcgYnRyZWUgSVMgJ2FsbCBpbnRlZ2VyIG9wZXJhdG9ycyBmb3Ig YnRyZWVzJzsKK0NPTU1FTlQgT04gUEVSSU9EIG15X3RhYmxlLm15X2NvbHVtbiBJUyAnU2Fs ZXMgcHJvbW90aW9uIHZhbGlkaXR5JzsKIENPTU1FTlQgT04gUE9MSUNZIG15X3BvbGljeSBP TiBteXRhYmxlIElTICdGaWx0ZXIgcm93cyBieSB1c2Vycyc7CiBDT01NRU5UIE9OIFBST0NF RFVSRSBteV9wcm9jIChpbnRlZ2VyLCBpbnRlZ2VyKSBJUyAnUnVucyBhIHJlcG9ydCc7CiBD T01NRU5UIE9OIFBVQkxJQ0FUSU9OIGFsbHRhYmxlcyBJUyAnUHVibGlzaGVzIGFsbCBvcGVy YXRpb25zIG9uIGFsbCB0YWJsZXMnOwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfdGFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwK aW5kZXggYjVmNDg1MjVkZS4uYjAwYmQ4MGNmNSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L3JlZi9jcmVhdGVfdGFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90 YWJsZS5zZ21sCkBAIC0yMyw2ICsyMyw3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgog PHN5bm9wc2lzPgogQ1JFQVRFIFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZIHwg VEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJMRSBbIElGIE5PVCBFWElTVFMgXSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+ICggWwogICB7 IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFi bGU+IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kYXRhX3R5cGU8L3JlcGxhY2Vh YmxlPiBbIFNUT1JBR0UgeyBQTEFJTiB8IEVYVEVSTkFMIHwgRVhURU5ERUQgfCBNQUlOIHwg REVGQVVMVCB9IF0gWyBDT01QUkVTU0lPTiA8cmVwbGFjZWFibGU+Y29tcHJlc3Npb25fbWV0 aG9kPC9yZXBsYWNlYWJsZT4gXSBbIENPTExBVEUgPHJlcGxhY2VhYmxlPmNvbGxhdGlvbjwv cmVwbGFjZWFibGU+IF0gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1u X2NvbnN0cmFpbnQ8L3JlcGxhY2VhYmxlPiBbIC4uLiBdIF0KKyAgICB8IDxyZXBsYWNlYWJs ZT5wZXJpb2RfZGVmaW5pdGlvbjwvcmVwbGFjZWFibGU+CiAgICAgfCA8cmVwbGFjZWFibGU+ dGFibGVfY29uc3RyYWludDwvcmVwbGFjZWFibGU+CiAgICAgfCBMSUtFIDxyZXBsYWNlYWJs ZT5zb3VyY2VfdGFibGU8L3JlcGxhY2VhYmxlPiBbIDxyZXBsYWNlYWJsZT5saWtlX29wdGlv bjwvcmVwbGFjZWFibGU+IC4uLiBdIH0KICAgICBbLCAuLi4gXQpAQCAtMzcsNiArMzgsNyBA QCBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FMIF0geyBURU1QT1JBUlkgfCBURU1QIH0gfCBV TkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVYSQogQ1JFQVRFIFsgWyBHTE9CQUwgfCBMT0NB TCBdIHsgVEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJMRSBbIElGIE5PVCBF WElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVw bGFjZWFibGU+CiAgICAgT0YgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnR5cGVf bmFtZTwvcmVwbGFjZWFibGU+IFsgKAogICB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFsgV0lUSCBPUFRJT05TIF0gWyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX2NvbnN0cmFpbnQ8L3JlcGxhY2Vh YmxlPiBbIC4uLiBdIF0KKyAgICB8IDxyZXBsYWNlYWJsZT5wZXJpb2RfZGVmaW5pdGlvbjwv cmVwbGFjZWFibGU+CiAgICAgfCA8cmVwbGFjZWFibGU+dGFibGVfY29uc3RyYWludDwvcmVw bGFjZWFibGU+IH0KICAgICBbLCAuLi4gXQogKSBdCkBAIC00OSw2ICs1MSw3IEBAIENSRUFU RSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7IFRFTVBPUkFSWSB8IFRFTVAgfSB8IFVOTE9HR0VE IF0gVEFCTEUgWyBJRiBOT1QgRVhJCiBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FMIF0geyBU RU1QT1JBUlkgfCBURU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVYSVNUUyBd IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJs ZT4KICAgICBQQVJUSVRJT04gT0YgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBh cmVudF90YWJsZTwvcmVwbGFjZWFibGU+IFsgKAogICB7IDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFsgV0lUSCBPUFRJT05TIF0g WyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX2NvbnN0cmFpbnQ8L3Jl cGxhY2VhYmxlPiBbIC4uLiBdIF0KKyAgICB8IDxyZXBsYWNlYWJsZT5wZXJpb2RfZGVmaW5p dGlvbjwvcmVwbGFjZWFibGU+CiAgICAgfCA8cmVwbGFjZWFibGU+dGFibGVfY29uc3RyYWlu dDwvcmVwbGFjZWFibGU+IH0KICAgICBbLCAuLi4gXQogKSBdIHsgRk9SIFZBTFVFUyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFydGl0aW9uX2JvdW5kX3NwZWM8L3JlcGxh Y2VhYmxlPiB8IERFRkFVTFQgfQpAQCAtNzMsNiArNzYsMTEgQEAgQ1JFQVRFIFsgWyBHTE9C QUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJMRSBb IElGIE5PVCBFWEkKICAgICBbIE9OIERFTEVURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSBbIE9OIFVQREFURSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBs YWNlYWJsZT4gXSB9CiBbIERFRkVSUkFCTEUgfCBOT1QgREVGRVJSQUJMRSBdIFsgSU5JVElB TExZIERFRkVSUkVEIHwgSU5JVElBTExZIElNTUVESUFURSBdCiAKKzxwaHJhc2U+YW5kIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2RfZGVmaW5pdGlvbjwvcmVwbGFj ZWFibGU+IGlzOjwvcGhyYXNlPgorCitQRVJJT0QgRk9SIHsgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnBlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4gfCBTWVNURU1fVElNRSB9 ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNl YWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVw bGFjZWFibGU+ICkKK1sgV0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w ZXJpb2Rfb3B0aW9uPC9yZXBsYWNlYWJsZT4gPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KKwogPHBocmFzZT5hbmQg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX2NvbnN0cmFpbnQ8L3JlcGxh Y2VhYmxlPiBpczo8L3BocmFzZT4KIAogWyBDT05TVFJBSU5UIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5jb25zdHJhaW50X25hbWU8L3JlcGxhY2VhYmxlPiBdCkBAIC0xNDAs NiArMTQ4LDE0IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICBuYW1lIGFzIGFu eSBleGlzdGluZyBkYXRhIHR5cGUgaW4gdGhlIHNhbWUgc2NoZW1hLgogICA8L3BhcmE+CiAK KyAgPHBhcmE+CisgICBQZXJpb2RzIG15IGJlIGRlZmluZWQgb24gdGFibGVzLCBzcGVjaWZ5 aW5nIHRoYXQgdHdvIGV4aXN0aW5nIGNvbHVtbnMKKyAgIHJlcHJlc2VudCBzdGFydCBhbmQg ZW5kIHZhbHVlcyBmb3IgdGhlIHBlcmlvZC4gIFBlcmlvZHMgbWF5IGhhdmUgYW55IG5hbWUK KyAgIHRoYXQgZG9lc24ndCBjb25mbGljdCB3aXRoIGEgY29sdW1uIG5hbWUsIGJ1dCB0aGUg bmFtZQorICAgPGxpdGVyYWw+U1lTVEVNX1RJTUU8L2xpdGVyYWw+IGlzIHNwZWNpYWwsIHVz ZWQgZm9yIHZlcnNpb25pbmcgdGFibGVzLgorICAgU3lzdGVtIHBlcmlvZHMgYXJlIG5vdCB5 ZXQgaW1wbGVtZW50ZWQuICBTZWUgPHhyZWYgbGlua2VuZD0iZGRsLXBlcmlvZHMiLz4gZm9y IG1vcmUgZGV0YWlscy4KKyAgPC9wYXJhPgorCiAgIDxwYXJhPgogICAgVGhlIG9wdGlvbmFs IGNvbnN0cmFpbnQgY2xhdXNlcyBzcGVjaWZ5IGNvbnN0cmFpbnRzICh0ZXN0cykgdGhhdAog ICAgbmV3IG9yIHVwZGF0ZWQgcm93cyBtdXN0IHNhdGlzZnkgZm9yIGFuIGluc2VydCBvciB1 cGRhdGUgb3BlcmF0aW9uCkBAIC04MDAsNiArODE2LDMwIEBAIFdJVEggKCBNT0RVTFVTIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2Vh YmxlPiwgUkVNCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8 dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRldGFibGUtcGFybXMtcGVyaW9kIj4KKyAgICA8 dGVybT48bGl0ZXJhbD5QRVJJT0QgRk9SIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+ICkgWyBXSVRIICggPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9vcHRpb248L3JlcGxhY2VhYmxlPiA9 IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+IFss IC4uLiBdICkgXTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFy YT4KKyAgICAgIEEgcGVyaW9kIGRlZmluaXRpb24gZ2l2ZXMgc2VtYW50aWMgbWVhbmluZyB0 byB0d28gZXhpc3RpbmcgY29sdW1ucyBvZgorICAgICAgdGhlIHRhYmxlLiAgSXQgZGVmaW5l cyBhICJzdGFydCBjb2x1bW4iIGFuZCBhbiAiZW5kIGNvbHVtbiIgd2hlcmUgdGhlCisgICAg ICBzdGFydCB2YWx1ZSBpcyBzdHJpY3RseSBsZXNzIHRoYW4gdGhlIGVuZCB2YWx1ZS4gIEEK KyAgICAgIDxsaXRlcmFsPkNIRUNLPC9saXRlcmFsPiBjb25zdHJhaW50IGlzIGF1dG9tYXRp Y2FsbHkgY3JlYXRlZCB0byBlbmZvcmNlCisgICAgICB0aGlzLiBZb3UgY2FuIHNwZWNpZnkg dGhlIG5hbWUgb2YgdGhhdCBjb25zdHJhaW50IHdpdGggdGhlCisgICAgICA8bGl0ZXJhbD5j aGVja19jb25zdHJhaW50X25hbWU8L2xpdGVyYWw+IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wZXJpb2Rfb3B0aW9uPC9yZXBsYWNlYWJsZT4uCisgICAgIDwvcGFyYT4KKwor ICAgICA8cGFyYT4KKyAgICAgIEJvdGggY29sdW1ucyBtdXN0IGhhdmUgZXhhY3RseSB0aGUg c2FtZSB0eXBlIGFuZCBtdXN0IGhhdmUgYSByYW5nZSB0eXBlCisgICAgICBkZWZpbmVkIGZy b20gdGhlaXIgYmFzZSB0eXBlLiAgSWYgdGhlcmUgYXJlIHNldmVyYWwgcmFuZ2UgdHlwZXMg Zm9yIHRoYXQKKyAgICAgIGJhc2UgdHlwZSwgeW91IG11c3Qgc3BlY2lmeSB3aGljaCBvbmUg eW91IHdhbnQgYnkgdXNpbmcgdGhlCisgICAgICA8bGl0ZXJhbD5yYW5nZXR5cGU8L2xpdGVy YWw+IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2Rfb3B0aW9uPC9yZXBs YWNlYWJsZT4uCisgICAgICBBbnkgYmFzZSB0eXBlIGlzIGFsbG93ZWQsIGFzIGxvbmcgYXMg aXQgaGFzIGEgcmFuZ2UgdHlwZSwgYWx0aG91Z2ggaXQgaXMKKyAgICAgIGV4cGVjdGVkIHRo YXQgbW9zdCBwZXJpb2RzIHdpbGwgdXNlIHRlbXBvcmFsIHR5cGVzIGxpa2UgPGxpdGVyYWw+ dGltZXN0YW1wdHo8L2xpdGVyYWw+CisgICAgICBvciA8bGl0ZXJhbD5kYXRlPC9saXRlcmFs Pi4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4K KwogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXRhYmxlLXBhcm1zLWNvbnN0cmFp bnQiPgogICAgIDx0ZXJtPjxsaXRlcmFsPkNPTlNUUkFJTlQgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFjZWFibGU+PC9saXRlcmFsPjwv dGVybT4KICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9n L01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZQppbmRleCBlYzdiNmY1 MzYyLi40NjZmNTcwOTVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL01ha2Vm aWxlCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZpbGUKQEAgLTM5LDYgKzM5LDcg QEAgT0JKUyA9IFwKIAlwZ19uYW1lc3BhY2UubyBcCiAJcGdfb3BlcmF0b3IubyBcCiAJcGdf cGFyYW1ldGVyX2FjbC5vIFwKKwlwZ19wZXJpb2QubyBcCiAJcGdfcHJvYy5vIFwKIAlwZ19w dWJsaWNhdGlvbi5vIFwKIAlwZ19yYW5nZS5vIFwKQEAgLTExMSw2ICsxMTIsNyBAQCBDQVRB TE9HX0hFQURFUlMgOj0gXAogCXBnX2NvbGxhdGlvbi5oIFwKIAlwZ19wYXJhbWV0ZXJfYWNs LmggXAogCXBnX3BhcnRpdGlvbmVkX3RhYmxlLmggXAorCXBnX3BlcmlvZC5oIFwKIAlwZ19y YW5nZS5oIFwKIAlwZ190cmFuc2Zvcm0uaCBcCiAJcGdfc2VxdWVuY2UuaCBcCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9hY2xjaGsuYwppbmRleCAxNzQ2MWE5MTg5Li5jNjNmODFmNmIwIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv YWNsY2hrLmMKQEAgLTI4MTcsNiArMjgxNyw3IEBAIGFjbGNoZWNrX2Vycm9yKEFjbFJlc3Vs dCBhY2xlcnIsIE9iamVjdFR5cGUgb2JqdHlwZSwKIAkJCQkJY2FzZSBPQkpFQ1RfREVGQVVM VDoKIAkJCQkJY2FzZSBPQkpFQ1RfREVGQUNMOgogCQkJCQljYXNlIE9CSkVDVF9ET01DT05T VFJBSU5UOgorCQkJCQljYXNlIE9CSkVDVF9QRVJJT0Q6CiAJCQkJCWNhc2UgT0JKRUNUX1BV QkxJQ0FUSU9OX05BTUVTUEFDRToKIAkJCQkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT05fUkVM OgogCQkJCQljYXNlIE9CSkVDVF9ST0xFOgpAQCAtMjk1OCw2ICsyOTU5LDcgQEAgYWNsY2hl Y2tfZXJyb3IoQWNsUmVzdWx0IGFjbGVyciwgT2JqZWN0VHlwZSBvYmp0eXBlLAogCQkJCQlj YXNlIE9CSkVDVF9ERUZBQ0w6CiAJCQkJCWNhc2UgT0JKRUNUX0RPTUNPTlNUUkFJTlQ6CiAJ CQkJCWNhc2UgT0JKRUNUX1BBUkFNRVRFUl9BQ0w6CisJCQkJCWNhc2UgT0JKRUNUX1BFUklP RDoKIAkJCQkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT05fTkFNRVNQQUNFOgogCQkJCQljYXNl IE9CSkVDVF9QVUJMSUNBVElPTl9SRUw6CiAJCQkJCWNhc2UgT0JKRUNUX1JPTEU6CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvZGVwZW5kZW5jeS5jCmluZGV4IGY4YTEzNmJhMGEuLjIzMmY3N2M5NmUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCisrKyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19vcGVyYXRvci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BmYW1p bHkuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3BhcmFtZXRlcl9hY2wuaCIKKyNpbmNsdWRl ICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcG9saWN5Lmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19w dWJsaWNhdGlvbi5oIgpAQCAtMTU0LDYgKzE1NSw3IEBAIHN0YXRpYyBjb25zdCBPaWQgb2Jq ZWN0X2NsYXNzZXNbXSA9IHsKIAlDYXN0UmVsYXRpb25JZCwJCQkJLyogT0NMQVNTX0NBU1Qg Ki8KIAlDb2xsYXRpb25SZWxhdGlvbklkLAkJLyogT0NMQVNTX0NPTExBVElPTiAqLwogCUNv bnN0cmFpbnRSZWxhdGlvbklkLAkJLyogT0NMQVNTX0NPTlNUUkFJTlQgKi8KKwlQZXJpb2RS ZWxhdGlvbklkLAkJCS8qIE9DTEFTU19QRVJJT0QgKi8KIAlDb252ZXJzaW9uUmVsYXRpb25J ZCwJCS8qIE9DTEFTU19DT05WRVJTSU9OICovCiAJQXR0ckRlZmF1bHRSZWxhdGlvbklkLAkJ LyogT0NMQVNTX0RFRkFVTFQgKi8KIAlMYW5ndWFnZVJlbGF0aW9uSWQsCQkJLyogT0NMQVNT X0xBTkdVQUdFICovCkBAIC0xNDQzLDYgKzE0NDUsMTAgQEAgZG9EZWxldGlvbihjb25zdCBP YmplY3RBZGRyZXNzICpvYmplY3QsIGludCBmbGFncykKIAkJCVJlbW92ZUNvbnN0cmFpbnRC eUlkKG9iamVjdC0+b2JqZWN0SWQpOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBPQ0xBU1NfUEVS SU9EOgorCQkJUmVtb3ZlUGVyaW9kQnlJZChvYmplY3QtPm9iamVjdElkKTsKKwkJCWJyZWFr OworCiAJCWNhc2UgT0NMQVNTX0RFRkFVTFQ6CiAJCQlSZW1vdmVBdHRyRGVmYXVsdEJ5SWQo b2JqZWN0LT5vYmplY3RJZCk7CiAJCQlicmVhazsKQEAgLTI4NjIsNiArMjg2OCw5IEBAIGdl dE9iamVjdENsYXNzKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCkKIAkJY2FzZSBDb25z dHJhaW50UmVsYXRpb25JZDoKIAkJCXJldHVybiBPQ0xBU1NfQ09OU1RSQUlOVDsKIAorCQlj YXNlIFBlcmlvZFJlbGF0aW9uSWQ6CisJCQlyZXR1cm4gT0NMQVNTX1BFUklPRDsKKwogCQlj YXNlIENvbnZlcnNpb25SZWxhdGlvbklkOgogCQkJcmV0dXJuIE9DTEFTU19DT05WRVJTSU9O OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvaGVhcC5jCmluZGV4IDFlNTViMzQxOWMuLmJiMGUyN2JiOWEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2Nh dGFsb2cvaGVhcC5jCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19u YW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wY2xhc3MuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX3BhcnRpdGlvbmVkX3RhYmxlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9w Z19wZXJpb2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N0YXRpc3RpYy5oIgogI2luY2x1 ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uX3JlbC5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfdGFibGVzcGFjZS5oIgpAQCAtMjA0Miw2ICsyMDQzLDgxIEBAIFNldEF0dHJNaXNzaW5n KE9pZCByZWxpZCwgY2hhciAqYXR0bmFtZSwgY2hhciAqdmFsdWUpCiAJdGFibGVfY2xvc2Uo dGFibGVyZWwsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOwogfQogCisvKgorICogU3RvcmUgYSBw ZXJpb2Qgb2YgcmVsYXRpb24gcmVsLgorICoKKyAqIFJldHVybnMgdGhlIE9JRCBvZiB0aGUg bmV3IHBnX3BlcmlvZCB0dXBsZS4KKyAqLworT2lkCitTdG9yZVBlcmlvZChSZWxhdGlvbiBy ZWwsIGNvbnN0IGNoYXIgKnBlcmlvZG5hbWUsIEF0dHJOdW1iZXIgc3RhcnRudW0sCisJCQlB dHRyTnVtYmVyIGVuZG51bSwgQXR0ck51bWJlciByYW5nZW51bSwgT2lkIGNvbm9pZCkKK3sK KwlEYXR1bQkJdmFsdWVzW05hdHRzX3BnX3BlcmlvZF07CisJYm9vbAkJbnVsbHNbTmF0dHNf cGdfcGVyaW9kXTsKKwlSZWxhdGlvbglwZ19wZXJpb2Q7CisJSGVhcFR1cGxlCXR1cGxlOwor CU9pZAkJCW9pZDsKKwlOYW1lRGF0YQlwZXJuYW1lOworCU9iamVjdEFkZHJlc3MJbXlzZWxm LCByZWZlcmVuY2VkOworCisJQXNzZXJ0KHJhbmdlbnVtICE9IEludmFsaWRBdHRyTnVtYmVy KTsKKworCW5hbWVzdHJjcHkoJnBlcm5hbWUsIHBlcmlvZG5hbWUpOworCisJTWVtU2V0KHZh bHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOworCU1lbVNldChudWxscywgZmFsc2UsIHNpemVv ZihudWxscykpOworCisJcGdfcGVyaW9kID0gdGFibGVfb3BlbihQZXJpb2RSZWxhdGlvbklk LCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCW9pZCA9IEdldE5ld09pZFdpdGhJbmRleChwZ19w ZXJpb2QsIEF0dHJEZWZhdWx0T2lkSW5kZXhJZCwgQW51bV9wZ19wZXJpb2Rfb2lkKTsKKwl2 YWx1ZXNbQW51bV9wZ19wZXJpb2Rfb2lkIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKG9pZCk7 CisJdmFsdWVzW0FudW1fcGdfcGVyaW9kX3Blcm5hbWUgLSAxXSA9IE5hbWVHZXREYXR1bSgm cGVybmFtZSk7CisJdmFsdWVzW0FudW1fcGdfcGVyaW9kX3BlcnJlbGlkIC0gMV0gPSBSZWxh dGlvbkdldFJlbGlkKHJlbCk7CisJdmFsdWVzW0FudW1fcGdfcGVyaW9kX3BlcnN0YXJ0IC0g MV0gPSBzdGFydG51bTsKKwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVyZW5kIC0gMV0gPSBl bmRudW07CisJdmFsdWVzW0FudW1fcGdfcGVyaW9kX3BlcnJhbmdlIC0gMV0gPSByYW5nZW51 bTsKKwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVyY29uc3RyYWludCAtIDFdID0gY29ub2lk OworCisJdHVwbGUgPSBoZWFwX2Zvcm1fdHVwbGUoUmVsYXRpb25HZXREZXNjcihwZ19wZXJp b2QpLCB2YWx1ZXMsIG51bGxzKTsKKwlDYXRhbG9nVHVwbGVJbnNlcnQocGdfcGVyaW9kLCB0 dXBsZSk7CisKKwlPYmplY3RBZGRyZXNzU2V0KG15c2VsZiwgUGVyaW9kUmVsYXRpb25JZCwg b2lkKTsKKworCS8qIERyb3AgdGhlIHBlcmlvZCB3aGVuIHRoZSB0YWJsZSBpcyBkcm9wcGVk LiAqLworCU9iamVjdEFkZHJlc3NTZXQocmVmZXJlbmNlZCwgUmVsYXRpb25SZWxhdGlvbklk LCBSZWxhdGlvbkdldFJlbGlkKHJlbCkpOworCXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxm LCAmcmVmZXJlbmNlZCwgREVQRU5ERU5DWV9BVVRPKTsKKworCS8qIEZvcmJpZCBkcm9wcGlu ZyB0aGUgY29sdW1ucyBvZiB0aGUgcGVyaW9kLiAqLworCU9iamVjdEFkZHJlc3NTdWJTZXQo cmVmZXJlbmNlZCwgUmVsYXRpb25SZWxhdGlvbklkLCBSZWxhdGlvbkdldFJlbGlkKHJlbCks IHN0YXJ0bnVtKTsKKwlyZWNvcmREZXBlbmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQs IERFUEVOREVOQ1lfTk9STUFMKTsKKwlPYmplY3RBZGRyZXNzU3ViU2V0KHJlZmVyZW5jZWQs IFJlbGF0aW9uUmVsYXRpb25JZCwgUmVsYXRpb25HZXRSZWxpZChyZWwpLCBlbmRudW0pOwor CXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJlbmNlZCwgREVQRU5ERU5DWV9O T1JNQUwpOworCisJLyoKKwkgKiBUaGUgcmFuZ2UgY29sdW1uIGlzIGFuIGltcGxlbWVudGF0 aW9uIGRldGFpbCwKKwkgKiBidXQgd2UgY2FuJ3QgdXNlIERFUEVOREVOQ1lfSU5URVJOQUwK KwkgKiBiZWNhdXNlIGRyb3BwaW5nIHRoZSB0YWJsZSB3aWxsIGNoZWNrIGZvciBkZXBlbmRl bmNpZXMgb24gYWxsIHN1Ym9iamVjdHMgdG9vCisJICogKGluIGZpbmREZXBlbmRlbnRPYmpl Y3RzKS4KKwkgKiBCdXQgaWYgd2UgbWFrZSBhbiBBVVRPIGRlcGVuZGVuY3kgb25lIHdheSB3 ZSB3aWxsIGF1dG8tZHJvcCB0aGUgY29sdW1uCisJICogd2hlbiB3ZSBkcm9wIHRoZSBQRVJJ T0QsCisJICogYW5kIGEgTk9STUFMIGRlcGVuZGVuY3kgdGhlIG90aGVyIHdheSB3ZSB3aWxs IGZvcmJpZCBkcm9wcGluZyB0aGUgY29sdW1uIGRpcmVjdGx5LgorCSAqLworCU9iamVjdEFk ZHJlc3NTdWJTZXQocmVmZXJlbmNlZCwgUmVsYXRpb25SZWxhdGlvbklkLCBSZWxhdGlvbkdl dFJlbGlkKHJlbCksIHJhbmdlbnVtKTsKKwlyZWNvcmREZXBlbmRlbmN5T24oJnJlZmVyZW5j ZWQsICZteXNlbGYsIERFUEVOREVOQ1lfQVVUTyk7CisJcmVjb3JkRGVwZW5kZW5jeU9uKCZt eXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX05PUk1BTCk7CisKKwkvKgorCSAqIFRo ZSBjb25zdHJhaW50IGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCwgc28gd2UgbWFyayBp dCBhcyBzdWNoLgorCSAqIChOb3RlIHRoYXQgbXlzZWxmIGFuZCByZWZlcmVuY2VkIGFyZSBy ZXZlcnNlZCBmb3IgdGhpcyBvbmUuKQorCSAqLworCU9iamVjdEFkZHJlc3NTZXQocmVmZXJl bmNlZCwgQ29uc3RyYWludFJlbGF0aW9uSWQsIGNvbm9pZCk7CisJcmVjb3JkRGVwZW5kZW5j eU9uKCZyZWZlcmVuY2VkLCAmbXlzZWxmLCBERVBFTkRFTkNZX0lOVEVSTkFMKTsKKworCXRh YmxlX2Nsb3NlKHBnX3BlcmlvZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlyZXR1cm4gb2lk OworfQorCiAvKgogICogU3RvcmUgYSBjaGVjay1jb25zdHJhaW50IGV4cHJlc3Npb24gZm9y IHRoZSBnaXZlbiByZWxhdGlvbi4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRh bG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZm9y bWF0aW9uX3NjaGVtYS5zcWwKaW5kZXggODkzZjczZWNiNS4uMzk4NzE4MDUyZiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmZvcm1hdGlvbl9zY2hlbWEuc3FsCisrKyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3JtYXRpb25fc2NoZW1hLnNxbApAQCAtMTIwNyw3 ICsxMjA3LDI4IEBAIEdSQU5UIFNFTEVDVCBPTiBwYXJhbWV0ZXJzIFRPIFBVQkxJQzsKICAq IFBFUklPRFMgdmlldwogICovCiAKLS0tIGZlYXR1cmUgbm90IHN1cHBvcnRlZAorQ1JFQVRF IFZJRVcgcGVyaW9kcyBBUworICAgIFNFTEVDVCBjdXJyZW50X2RhdGFiYXNlKCk6OmluZm9y bWF0aW9uX3NjaGVtYS5zcWxfaWRlbnRpZmllciBBUyB0YWJsZV9jYXRhbG9nLAorICAgICAg ICAgICBuYy5uc3BuYW1lOjppbmZvcm1hdGlvbl9zY2hlbWEuc3FsX2lkZW50aWZpZXIgQVMg dGFibGVfc2NoZW1hLAorICAgICAgICAgICBjLnJlbG5hbWU6OmluZm9ybWF0aW9uX3NjaGVt YS5zcWxfaWRlbnRpZmllciBBUyB0YWJsZV9uYW1lLAorICAgICAgICAgICBwLnBlcm5hbWU6 OmluZm9ybWF0aW9uX3NjaGVtYS5zcWxfaWRlbnRpZmllciBBUyBwZXJpb2RfbmFtZSwKKyAg ICAgICAgICAgQ0FTRSBXSEVOIHBnX2hhc19yb2xlKGMucmVsb3duZXIsICdVU0FHRScpCisg ICAgICAgICAgICAgICAgICBPUiBoYXNfY29sdW1uX3ByaXZpbGVnZShzYS5hdHRyZWxpZCwg c2EuYXR0bnVtLCAnU0VMRUNULCBJTlNFUlQsIFVQREFURSwgUkVGRVJFTkNFUycpCisgICAg ICAgICAgICAgICAgVEhFTiBzYS5hdHRuYW1lOjppbmZvcm1hdGlvbl9zY2hlbWEuc3FsX2lk ZW50aWZpZXIKKyAgICAgICAgICAgRU5EIEFTIHN0YXJ0X2NvbHVtbl9uYW1lLAorICAgICAg ICAgICBDQVNFIFdIRU4gcGdfaGFzX3JvbGUoYy5yZWxvd25lciwgJ1VTQUdFJykKKyAgICAg ICAgICAgICAgICAgIE9SIGhhc19jb2x1bW5fcHJpdmlsZWdlKGVhLmF0dHJlbGlkLCBlYS5h dHRudW0sICdTRUxFQ1QsIElOU0VSVCwgVVBEQVRFLCBSRUZFUkVOQ0VTJykKKyAgICAgICAg ICAgICAgICBUSEVOIGVhLmF0dG5hbWU6OmluZm9ybWF0aW9uX3NjaGVtYS5zcWxfaWRlbnRp ZmllcgorICAgICAgICAgICBFTkQgQVMgZW5kX2NvbHVtbl9uYW1lCisgICAgRlJPTSBwZ19w ZXJpb2QgQVMgcAorICAgIEpPSU4gcGdfY2xhc3MgQVMgYyBPTiBjLm9pZCA9IHAucGVycmVs aWQKKyAgICBKT0lOIHBnX25hbWVzcGFjZSBBUyBuYyBPTiBuYy5vaWQgPSBjLnJlbG5hbWVz cGFjZQorICAgIEpPSU4gcGdfYXR0cmlidXRlIEFTIHNhIE9OIChzYS5hdHRyZWxpZCwgc2Eu YXR0bnVtKSA9IChwLnBlcnJlbGlkLCBwLnBlcnN0YXJ0KQorICAgIEpPSU4gcGdfYXR0cmli dXRlIEFTIGVhIE9OIChlYS5hdHRyZWxpZCwgZWEuYXR0bnVtKSA9IChwLnBlcnJlbGlkLCBw LnBlcmVuZCkKKyAgICBXSEVSRSBOT1QgcGdfaXNfb3RoZXJfdGVtcF9zY2hlbWEobmMub2lk KQorICAgICAgQU5EIGMucmVsa2luZCBJTiAoJ3InLCAndicpOworCitHUkFOVCBTRUxFQ1Qg T04gcGVyaW9kcyBUTyBQVUJMSUM7CiAKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvbWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9jYXRhbG9nL21lc29uLmJ1aWxk CmluZGV4IGZhNjYwOWU1NzcuLmM0OTljZDJmNWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvbWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9tZXNvbi5i dWlsZApAQCAtMjYsNiArMjYsNyBAQCBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAgICdw Z19uYW1lc3BhY2UuYycsCiAgICdwZ19vcGVyYXRvci5jJywKICAgJ3BnX3BhcmFtZXRlcl9h Y2wuYycsCisgICdwZ19wZXJpb2QuYycsCiAgICdwZ19wcm9jLmMnLAogICAncGdfcHVibGlj YXRpb24uYycsCiAgICdwZ19yYW5nZS5jJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvb2JqZWN0YWRkcmVzcy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRy ZXNzLmMKaW5kZXggYmI0ZWZjYWQyMC4uYjQ4ODk1YjM1NSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9vYmplY3RhZGRyZXNzLmMKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJjYXRhbG9n L3BnX29wZXJhdG9yLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGZhbWlseS5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfcGFyYW1ldGVyX2FjbC5oIgorI2luY2x1ZGUgImNhdGFsb2cv cGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wb2xpY3kuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9u LmgiCkBAIC03MzYsNiArNzM3LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2JqZWN0X3R5 cGVfbWFwCiAJewogCQkiZG9tYWluIGNvbnN0cmFpbnQiLCBPQkpFQ1RfRE9NQ09OU1RSQUlO VAogCX0sCisJLyogT0NMQVNTX1BFUklPRCAqLworCXsKKwkJInBlcmlvZCIsIE9CSkVDVF9Q RVJJT0QKKwl9LAogCS8qIE9DTEFTU19DT05WRVJTSU9OICovCiAJewogCQkiY29udmVyc2lv biIsIE9CSkVDVF9DT05WRVJTSU9OCkBAIC0xMDE0LDYgKzEwMTksNyBAQCBnZXRfb2JqZWN0 X2FkZHJlc3MoT2JqZWN0VHlwZSBvYmp0eXBlLCBOb2RlICpvYmplY3QsCiAJCQljYXNlIE9C SkVDVF9UUklHR0VSOgogCQkJY2FzZSBPQkpFQ1RfVEFCQ09OU1RSQUlOVDoKIAkJCWNhc2Ug T0JKRUNUX1BPTElDWToKKwkJCWNhc2UgT0JKRUNUX1BFUklPRDoKIAkJCQlhZGRyZXNzID0g Z2V0X29iamVjdF9hZGRyZXNzX3JlbG9iamVjdChvYmp0eXBlLCBjYXN0Tm9kZShMaXN0LCBv YmplY3QpLAogCQkJCQkJCQkJCQkJCSAgICZyZWxhdGlvbiwgbWlzc2luZ19vayk7CiAJCQkJ YnJlYWs7CkBAIC0xNTEyLDYgKzE1MTgsMTMgQEAgZ2V0X29iamVjdF9hZGRyZXNzX3JlbG9i amVjdChPYmplY3RUeXBlIG9ianR5cGUsIExpc3QgKm9iamVjdCwKIAkJCQlJbnZhbGlkT2lk OwogCQkJYWRkcmVzcy5vYmplY3RTdWJJZCA9IDA7CiAJCQlicmVhazsKKwkJY2FzZSBPQkpF Q1RfUEVSSU9EOgorCQkJYWRkcmVzcy5jbGFzc0lkID0gUGVyaW9kUmVsYXRpb25JZDsKKwkJ CWFkZHJlc3Mub2JqZWN0SWQgPSByZWxhdGlvbiA/CisJCQkJZ2V0X3JlbGF0aW9uX3Blcmlv ZF9vaWQocmVsb2lkLCBkZXBuYW1lLCBtaXNzaW5nX29rKSA6CisJCQkJSW52YWxpZE9pZDsK KwkJCWFkZHJlc3Mub2JqZWN0U3ViSWQgPSAwOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJ CQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9iamVjdCB0eXBlOiAlZCIsIChpbnQpIG9i anR5cGUpOwogCX0KQEAgLTIzMjksNiArMjM0Miw3IEBAIHBnX2dldF9vYmplY3RfYWRkcmVz cyhQR19GVU5DVElPTl9BUkdTKQogCQljYXNlIE9CSkVDVF9SVUxFOgogCQljYXNlIE9CSkVD VF9UUklHR0VSOgogCQljYXNlIE9CSkVDVF9UQUJDT05TVFJBSU5UOgorCQljYXNlIE9CSkVD VF9QRVJJT0Q6CiAJCWNhc2UgT0JKRUNUX09QQ0xBU1M6CiAJCWNhc2UgT0JKRUNUX09QRkFN SUxZOgogCQkJb2Jqbm9kZSA9IChOb2RlICopIG5hbWU7CkBAIC0yNDM5LDYgKzI0NTMsNyBA QCBjaGVja19vYmplY3Rfb3duZXJzaGlwKE9pZCByb2xlaWQsIE9iamVjdFR5cGUgb2JqdHlw ZSwgT2JqZWN0QWRkcmVzcyBhZGRyZXNzLAogCQljYXNlIE9CSkVDVF9UUklHR0VSOgogCQlj YXNlIE9CSkVDVF9QT0xJQ1k6CiAJCWNhc2UgT0JKRUNUX1RBQkNPTlNUUkFJTlQ6CisJCWNh c2UgT0JKRUNUX1BFUklPRDoKIAkJCWlmICghb2JqZWN0X293bmVyY2hlY2soUmVsYXRpb25S ZWxhdGlvbklkLCBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKSwgcm9sZWlkKSkKIAkJCQlh Y2xjaGVja19lcnJvcihBQ0xDSEVDS19OT1RfT1dORVIsIG9ianR5cGUsCiAJCQkJCQkJICAg UmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pKTsKQEAgLTMwODcsNiArMzEwMiwz OCBAQCBnZXRPYmplY3REZXNjcmlwdGlvbihjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3Qs IGJvb2wgbWlzc2luZ19vaykKIAkJCQlicmVhazsKIAkJCX0KIAorCQljYXNlIE9DTEFTU19Q RVJJT0Q6CisJCQl7CisJCQkJSGVhcFR1cGxlCXBlclR1cDsKKwkJCQlGb3JtX3BnX3Blcmlv ZCBwZXI7CisKKwkJCQlwZXJUdXAgPSBTZWFyY2hTeXNDYWNoZTEoUEVSSU9ET0lELAorCQkJ CQkJCQkJCSBPYmplY3RJZEdldERhdHVtKG9iamVjdC0+b2JqZWN0SWQpKTsKKwkJCQlpZiAo IUhlYXBUdXBsZUlzVmFsaWQocGVyVHVwKSkKKwkJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxv b2t1cCBmYWlsZWQgZm9yIHBlcmlvZCAldSIsCisJCQkJCQkgb2JqZWN0LT5vYmplY3RJZCk7 CisJCQkJcGVyID0gKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QocGVyVHVwKTsKKworCQkJ CWlmIChPaWRJc1ZhbGlkKHBlci0+cGVycmVsaWQpKQorCQkJCXsKKwkJCQkJU3RyaW5nSW5m b0RhdGEgcmVsOworCisJCQkJCWluaXRTdHJpbmdJbmZvKCZyZWwpOworCQkJCQlnZXRSZWxh dGlvbkRlc2NyaXB0aW9uKCZyZWwsIHBlci0+cGVycmVsaWQsIGZhbHNlKTsKKwkJCQkJYXBw ZW5kU3RyaW5nSW5mbygmYnVmZmVyLCBfKCJwZXJpb2QgJXMgb24gJXMiKSwKKwkJCQkJCQkJ CSBOYW1lU3RyKHBlci0+cGVybmFtZSksIHJlbC5kYXRhKTsKKwkJCQkJcGZyZWUocmVsLmRh dGEpOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZi dWZmZXIsIF8oInBlcmlvZCAlcyIpLAorCQkJCQkJCQkJIE5hbWVTdHIocGVyLT5wZXJuYW1l KSk7CisJCQkJfQorCisJCQkJUmVsZWFzZVN5c0NhY2hlKHBlclR1cCk7CisJCQkJYnJlYWs7 CisJCQl9CisKIAkJY2FzZSBPQ0xBU1NfQ09OVkVSU0lPTjoKIAkJCXsKIAkJCQlIZWFwVHVw bGUJY29uVHVwOwpAQCAtNDQ1MSw2ICs0NDk4LDEwIEBAIGdldE9iamVjdFR5cGVEZXNjcmlw dGlvbihjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsIGJvb2wgbWlzc2luZ19vaykKIAkJ CQkJCQkJCQkgbWlzc2luZ19vayk7CiAJCQlicmVhazsKIAorCQljYXNlIE9DTEFTU19QRVJJ T0Q6CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWZmZXIsICJwZXJpb2QiKTsKKwkJ CWJyZWFrOworCiAJCWNhc2UgT0NMQVNTX0NPTlZFUlNJT046CiAJCQlhcHBlbmRTdHJpbmdJ bmZvU3RyaW5nKCZidWZmZXIsICJjb252ZXJzaW9uIik7CiAJCQlicmVhazsKQEAgLTQ5NTgs NiArNTAwOSwyOCBAQCBnZXRPYmplY3RJZGVudGl0eVBhcnRzKGNvbnN0IE9iamVjdEFkZHJl c3MgKm9iamVjdCwKIAkJCQlicmVhazsKIAkJCX0KIAorCQljYXNlIE9DTEFTU19QRVJJT0Q6 CisJCQl7CisJCQkJSGVhcFR1cGxlCXBlclR1cDsKKwkJCQlGb3JtX3BnX3BlcmlvZCBwZXI7 CisKKwkJCQlwZXJUdXAgPSBTZWFyY2hTeXNDYWNoZTEoUEVSSU9ET0lELAorCQkJCQkJCQkJ CSBPYmplY3RJZEdldERhdHVtKG9iamVjdC0+b2JqZWN0SWQpKTsKKwkJCQlpZiAoIUhlYXBU dXBsZUlzVmFsaWQocGVyVHVwKSkKKwkJCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBm YWlsZWQgZm9yIHBlcmlvZCAldSIsCisJCQkJCQkgb2JqZWN0LT5vYmplY3RJZCk7CisJCQkJ cGVyID0gKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QocGVyVHVwKTsKKworCQkJCWFwcGVu ZFN0cmluZ0luZm8oJmJ1ZmZlciwgIiVzIG9uICIsCisJCQkJCQkJCSBxdW90ZV9pZGVudGlm aWVyKE5hbWVTdHIocGVyLT5wZXJuYW1lKSkpOworCQkJCWdldFJlbGF0aW9uSWRlbnRpdHko JmJ1ZmZlciwgcGVyLT5wZXJyZWxpZCwgb2JqbmFtZSwgZmFsc2UpOworCQkJCWlmIChvYmpu YW1lKQorCQkJCQkqb2JqbmFtZSA9IGxhcHBlbmQoKm9iam5hbWUsIHBzdHJkdXAoTmFtZVN0 cihwZXItPnBlcm5hbWUpKSk7CisKKwkJCQlSZWxlYXNlU3lzQ2FjaGUocGVyVHVwKTsKKwkJ CQlicmVhazsKKwkJCX0KKwogCQljYXNlIE9DTEFTU19DT05WRVJTSU9OOgogCQkJewogCQkJ CUhlYXBUdXBsZQljb25UdXA7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3Bn X3BlcmlvZC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wZXJpb2QuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi40NjViNWI2NzVlCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wZXJpb2QuYwpAQCAtMCwwICsxLDEzMiBA QAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcGdfcGVyaW9kLmMKKyAqCSAgcm91 dGluZXMgdG8gc3VwcG9ydCBtYW5pcHVsYXRpb24gb2YgdGhlIHBnX3BlcmlvZCByZWxhdGlv bgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIxLCBQb3N0Z3JlU1FM IEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqCisgKiBJREVOVElGSUNBVElPTgor ICoJICBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3BlcmlvZC5jCisgKgorICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAiYWNj ZXNzL2dlbmFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbS5oIgorI2luY2x1ZGUgImFj Y2Vzcy9odHVwX2RldGFpbHMuaCIKKyNpbmNsdWRlICJjYXRhbG9nL2luZGV4aW5nLmgiCisj aW5jbHVkZSAiY2F0YWxvZy9wZ19wZXJpb2QuaCIKKyNpbmNsdWRlICJ1dGlscy9mbWdyb2lk cy5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL3Jl bC5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisKKworLyoKKyAqIERlbGV0ZSBh IHNpbmdsZSBwZXJpb2QgcmVjb3JkLgorICovCit2b2lkCitSZW1vdmVQZXJpb2RCeUlkKE9p ZCBwZXJpb2RJZCkKK3sKKwlSZWxhdGlvbglwZ19wZXJpb2Q7CisJSGVhcFR1cGxlCXR1cDsK KworCXBnX3BlcmlvZCA9IHRhYmxlX29wZW4oUGVyaW9kUmVsYXRpb25JZCwgUm93RXhjbHVz aXZlTG9jayk7CisKKwl0dXAgPSBTZWFyY2hTeXNDYWNoZTEoUEVSSU9ET0lELCBPYmplY3RJ ZEdldERhdHVtKHBlcmlvZElkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpIC8q IHNob3VsZCBub3QgaGFwcGVuICovCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFp bGVkIGZvciBwZXJpb2QgJXUiLCBwZXJpb2RJZCk7CisKKwkvKiBGcnkgdGhlIHBlcmlvZCBp dHNlbGYgKi8KKwlDYXRhbG9nVHVwbGVEZWxldGUocGdfcGVyaW9kLCAmdHVwLT50X3NlbGYp OworCisJLyogQ2xlYW4gdXAgKi8KKwlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKKwl0YWJsZV9j bG9zZShwZ19wZXJpb2QsIFJvd0V4Y2x1c2l2ZUxvY2spOworfQorCisvKgorICogZ2V0X3Jl bGF0aW9uX3BlcmlvZF9vaWQKKyAqCQlGaW5kIGEgcGVyaW9kIG9uIHRoZSBzcGVjaWZpZWQg cmVsYXRpb24gd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUuCisgKgkJUmV0dXJucyBwZXJpb2Qn cyBPSUQuCisgKi8KK09pZAorZ2V0X3JlbGF0aW9uX3BlcmlvZF9vaWQoT2lkIHJlbGlkLCBj b25zdCBjaGFyICpwZXJuYW1lLCBib29sIG1pc3Npbmdfb2spCit7CisJUmVsYXRpb24JcGdf cGVyaW9kOworCUhlYXBUdXBsZQl0dXBsZTsKKwlTeXNTY2FuRGVzYyBzY2FuOworCVNjYW5L ZXlEYXRhIHNrZXlbMl07CisJT2lkCQkJcGVyT2lkID0gSW52YWxpZE9pZDsKKworCS8qIEZl dGNoIHRoZSBwZXJpb2QgdHVwbGUgZnJvbSBwZ19wZXJpb2QuICovCisJcGdfcGVyaW9kID0g dGFibGVfb3BlbihQZXJpb2RSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJU2Nh bktleUluaXQoJnNrZXlbMF0sCisJCQkJQW51bV9wZ19wZXJpb2RfcGVycmVsaWQsCisJCQkJ QlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCU9iamVjdElkR2V0RGF0dW0o cmVsaWQpKTsKKwlTY2FuS2V5SW5pdCgmc2tleVsxXSwKKwkJCQlBbnVtX3BnX3BlcmlvZF9w ZXJuYW1lLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9OQU1FRVEsCisJCQkJQ1N0 cmluZ0dldERhdHVtKHBlcm5hbWUpKTsKKworCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4o cGdfcGVyaW9kLCBQZXJpb2RSZWxpZE5hbWVJbmRleElkLCB0cnVlLAorCQkJCQkJCSAgTlVM TCwgMiwgc2tleSk7CisKKwkvKiBUaGVyZSBjYW4gYmUgYXQgbW9zdCBvbmUgbWF0Y2hpbmcg cm93ICovCisJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHVwbGUgPSBzeXN0YWJsZV9nZXRuZXh0 KHNjYW4pKSkKKwkJcGVyT2lkID0gKChGb3JtX3BnX3BlcmlvZCkgR0VUU1RSVUNUKHR1cGxl KSktPm9pZDsKKworCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisKKwkvKiBJZiBubyBzdWNo IHBlcmlvZCBleGlzdHMsIGNvbXBsYWluICovCisJaWYgKCFPaWRJc1ZhbGlkKHBlck9pZCkg JiYgIW1pc3Npbmdfb2spCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkgZXJybXNnKCJwZXJpb2QgXCIlc1wiIGZvciB0 YWJsZSBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJcGVybmFtZSwgZ2V0X3JlbF9u YW1lKHJlbGlkKSkpKTsKKworCXRhYmxlX2Nsb3NlKHBnX3BlcmlvZCwgQWNjZXNzU2hhcmVM b2NrKTsKKworCXJldHVybiBwZXJPaWQ7Cit9CisKKy8qCisgKiBnZXRfcGVyaW9kX2F0dG5v cworICoJCUdldCB0aGUgYXR0bm8gb2YgdGhlIEdFTkVSQVRFRCByYW5nZXR5cGUgY29sdW1u CisgKgkJZm9yIGFsbCBQRVJJT0RzIGluIHRoaXMgdGFibGUuCisgKi8KK2V4dGVybiBCaXRt YXBzZXQKKypnZXRfcGVyaW9kX2F0dG5vcyhPaWQgcmVsaWQpCit7CisJQml0bWFwc2V0ICph dHRub3MgPSBOVUxMOworCVJlbGF0aW9uCXBnX3BlcmlvZDsKKwlIZWFwVHVwbGUJdHVwbGU7 CisJU3lzU2NhbkRlc2Mgc2NhbjsKKwlTY2FuS2V5RGF0YSBza2V5WzFdOworCisJcGdfcGVy aW9kID0gdGFibGVfb3BlbihQZXJpb2RSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOwor CisJU2NhbktleUluaXQoJnNrZXlbMF0sCisJCQkJQW51bV9wZ19wZXJpb2RfcGVycmVsaWQs CisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCU9iamVjdElkR2V0 RGF0dW0ocmVsaWQpKTsKKworCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocGdfcGVyaW9k LCBQZXJpb2RSZWxpZE5hbWVJbmRleElkLCB0cnVlLAorCQkJCQkJCSAgTlVMTCwgMSwgc2tl eSk7CisKKwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSA9IHN5c3RhYmxlX2dldG5l eHQoc2NhbikpKQorCXsKKwkJRm9ybV9wZ19wZXJpb2QgcGVyaW9kID0gKEZvcm1fcGdfcGVy aW9kKSBHRVRTVFJVQ1QodHVwbGUpOworCisJCWF0dG5vcyA9IGJtc19hZGRfbWVtYmVyKGF0 dG5vcywgcGVyaW9kLT5wZXJyYW5nZSk7CisJfQorCisJc3lzdGFibGVfZW5kc2NhbihzY2Fu KTsKKwl0YWJsZV9jbG9zZShwZ19wZXJpb2QsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlyZXR1 cm4gYXR0bm9zOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVh dHVyZXMudHh0IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMudHh0CmluZGV4 IDgwYzQwZWFmNTcuLjJjMWQxYTEwYTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvc3FsX2ZlYXR1cmVzLnR4dAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0 dXJlcy50eHQKQEAgLTQ0OSw3ICs0NDksNyBAQCBUMTc2CVNlcXVlbmNlIGdlbmVyYXRvciBz dXBwb3J0CQkJTk8Jc3VwcG9ydGVkIGV4Y2VwdCBmb3IgTkVYVCBWQUxVRSBGT1IKIFQxNzcJ U2VxdWVuY2UgZ2VuZXJhdG9yIHN1cHBvcnQ6IHNpbXBsZSByZXN0YXJ0IG9wdGlvbgkJCVlF UwkKIFQxNzgJSWRlbnRpdHkgY29sdW1uczogc2ltcGxlIHJlc3RhcnQgb3B0aW9uCQkJWUVT CQogVDE4MAlTeXN0ZW0tdmVyc2lvbmVkIHRhYmxlcwkJCU5PCQotVDE4MQlBcHBsaWNhdGlv bi10aW1lIHBlcmlvZCB0YWJsZXMJCQlOTwkKK1QxODEJQXBwbGljYXRpb24tdGltZSBwZXJp b2QgdGFibGVzCQkJWUVTCQogVDE5MQlSZWZlcmVudGlhbCBhY3Rpb24gUkVTVFJJQ1QJCQlZ RVMJCiBUMjAwCVRyaWdnZXIgRERMCQkJTk8Jc2ltaWxhciBidXQgbm90IGZ1bGx5IGNvbXBh dGlibGUKIFQyMDEJQ29tcGFyYWJsZSBkYXRhIHR5cGVzIGZvciByZWZlcmVudGlhbCBjb25z dHJhaW50cwkJCVlFUwkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVy LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jCmluZGV4IGU5YTM0NGQwM2UuLjIx YmFlN2VjM2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYwpAQCAtNjY5LDYgKzY2OSw3IEBAIEFs dGVyT2JqZWN0TmFtZXNwYWNlX29pZChPaWQgY2xhc3NJZCwgT2lkIG9iamlkLCBPaWQgbnNw T2lkLAogCiAJCWNhc2UgT0NMQVNTX0NBU1Q6CiAJCWNhc2UgT0NMQVNTX0NPTlNUUkFJTlQ6 CisJCWNhc2UgT0NMQVNTX1BFUklPRDoKIAkJY2FzZSBPQ0xBU1NfREVGQVVMVDoKIAkJY2Fz ZSBPQ0xBU1NfTEFOR1VBR0U6CiAJCWNhc2UgT0NMQVNTX0xBUkdFT0JKRUNUOgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29tbWVudC5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29tbWVudC5jCmluZGV4IDI2YzRkNTkyMDIuLjQ1MmFmMWQ0MTMgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbW1lbnQuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9jb21tZW50LmMKQEAgLTEwMiw2ICsxMDIsMTYgQEAgQ29tbWVudE9iamVjdChD b21tZW50U3RtdCAqc3RtdCkKIAkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVs YXRpb24pKSwKIAkJCQkJCSBlcnJkZXRhaWxfcmVsa2luZF9ub3Rfc3VwcG9ydGVkKHJlbGF0 aW9uLT5yZF9yZWwtPnJlbGtpbmQpKSk7CiAJCQlicmVhazsKKworCQljYXNlIE9CSkVDVF9Q RVJJT0Q6CisJCQkvKiBQZXJpb2RzIGNhbiBvbmx5IGdvIG9uIHRhYmxlcyAqLworCQkJaWYg KHJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9SRUxBVElPTikKKwkJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQ RSksCisJCQkJCQkgZXJybXNnKCJcIiVzXCIgaXMgbm90IGEgdGFibGUiLAorCQkJCQkJCQlS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpKSk7CisJCQlicmVhazsKKwogCQlk ZWZhdWx0OgogCQkJYnJlYWs7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZHJvcGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ryb3BjbWRzLmMKaW5kZXgg NDY5YTZjMmVlOS4uMWI5NzU0ZTk5OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZHJvcGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kcm9wY21kcy5jCkBA IC01MDksNiArNTA5LDcgQEAgZG9lc19ub3RfZXhpc3Rfc2tpcHBpbmcoT2JqZWN0VHlwZSBv Ymp0eXBlLCBOb2RlICpvYmplY3QpCiAJCWNhc2UgT0JKRUNUX0RPTUNPTlNUUkFJTlQ6CiAJ CWNhc2UgT0JKRUNUX0xBUkdFT0JKRUNUOgogCQljYXNlIE9CSkVDVF9QQVJBTUVURVJfQUNM OgorCQljYXNlIE9CSkVDVF9QRVJJT0Q6CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05B TUVTUEFDRToKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT05fUkVMOgogCQljYXNlIE9CSkVD VF9UQUJDT05TVFJBSU5UOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZl bnRfdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5jCmlu ZGV4IGJmNDdiMGY2ZTIuLmRjNTMyYTM5ZTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V2ZW50X3RyaWdnZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVu dF90cmlnZ2VyLmMKQEAgLTExMzgsNiArMTEzOCw3IEBAIEV2ZW50VHJpZ2dlclN1cHBvcnRz T2JqZWN0VHlwZShPYmplY3RUeXBlIG9idHlwZSkKIAkJY2FzZSBPQkpFQ1RfT1BDTEFTUzoK IAkJY2FzZSBPQkpFQ1RfT1BFUkFUT1I6CiAJCWNhc2UgT0JKRUNUX09QRkFNSUxZOgorCQlj YXNlIE9CSkVDVF9QRVJJT0Q6CiAJCWNhc2UgT0JKRUNUX1BPTElDWToKIAkJY2FzZSBPQkpF Q1RfUFJPQ0VEVVJFOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTjoKQEAgLTExOTYsNiAr MTE5Nyw3IEBAIEV2ZW50VHJpZ2dlclN1cHBvcnRzT2JqZWN0Q2xhc3MoT2JqZWN0Q2xhc3Mg b2JqY2xhc3MpCiAJCWNhc2UgT0NMQVNTX0NBU1Q6CiAJCWNhc2UgT0NMQVNTX0NPTExBVElP TjoKIAkJY2FzZSBPQ0xBU1NfQ09OU1RSQUlOVDoKKwkJY2FzZSBPQ0xBU1NfUEVSSU9EOgog CQljYXNlIE9DTEFTU19DT05WRVJTSU9OOgogCQljYXNlIE9DTEFTU19ERUZBVUxUOgogCQlj YXNlIE9DTEFTU19MQU5HVUFHRToKQEAgLTIyMzcsNiArMjIzOSw3IEBAIHN0cmluZ2lmeV9n cmFudF9vYmp0eXBlKE9iamVjdFR5cGUgb2JqdHlwZSkKIAkJY2FzZSBPQkpFQ1RfT1BDTEFT UzoKIAkJY2FzZSBPQkpFQ1RfT1BFUkFUT1I6CiAJCWNhc2UgT0JKRUNUX09QRkFNSUxZOgor CQljYXNlIE9CSkVDVF9QRVJJT0Q6CiAJCWNhc2UgT0JKRUNUX1BPTElDWToKIAkJY2FzZSBP QkpFQ1RfUFVCTElDQVRJT046CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFD RToKQEAgLTIzMjEsNiArMjMyNCw3IEBAIHN0cmluZ2lmeV9hZGVmcHJpdnNfb2JqdHlwZShP YmplY3RUeXBlIG9ianR5cGUpCiAJCWNhc2UgT0JKRUNUX09QRVJBVE9SOgogCQljYXNlIE9C SkVDVF9PUEZBTUlMWToKIAkJY2FzZSBPQkpFQ1RfUEFSQU1FVEVSX0FDTDoKKwkJY2FzZSBP QkpFQ1RfUEVSSU9EOgogCQljYXNlIE9CSkVDVF9QT0xJQ1k6CiAJCWNhc2UgT0JKRUNUX1BV QkxJQ0FUSU9OOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9OQU1FU1BBQ0U6CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZWNsYWJlbC5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvc2VjbGFiZWwuYwppbmRleCA3ZmYxNmUzMjc2Li4zZGRjOTk1ODFhIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZWNsYWJlbC5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3NlY2xhYmVsLmMKQEAgLTc5LDYgKzc5LDcgQEAgU2VjTGFiZWxTdXBw b3J0c09iamVjdFR5cGUoT2JqZWN0VHlwZSBvYmp0eXBlKQogCQljYXNlIE9CSkVDVF9PUEVS QVRPUjoKIAkJY2FzZSBPQkpFQ1RfT1BGQU1JTFk6CiAJCWNhc2UgT0JKRUNUX1BBUkFNRVRF Ul9BQ0w6CisJCWNhc2UgT0JKRUNUX1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfUE9MSUNZOgog CQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9OQU1FU1BBQ0U6CiAJCWNhc2UgT0JKRUNUX1BV QkxJQ0FUSU9OX1JFTDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggNGNmMThi NzU4NC4uMTIwOTJhOGVjOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTQ0 LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2xhcmdlb2JqZWN0LmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29w Y2xhc3MuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfc3RhdGlzdGljX2V4dC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdGFibGVz cGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHJpZ2dlci5oIgpAQCAtMTUyLDYgKzE1 MywxMSBAQCB0eXBlZGVmIGVudW0gQWx0ZXJUYWJsZVBhc3MKIAlBVF9QQVNTX09MRF9DT05T VFIsCQkJLyogcmUtYWRkIGV4aXN0aW5nIGNvbnN0cmFpbnRzICovCiAJLyogV2UgY291bGQg c3VwcG9ydCBhIFJFTkFNRSBDT0xVTU4gcGFzcyBoZXJlLCBidXQgbm90IGN1cnJlbnRseSB1 c2VkICovCiAJQVRfUEFTU19BRERfQ09MLAkJCS8qIEFERCBDT0xVTU4gKi8KKwkvKgorCSAq IFdlIG11c3QgYWRkIFBFUklPRHMgYWZ0ZXIgY29sdW1ucywgaW4gY2FzZSB0aGV5IHJlZmVy ZW5jZSBhIG5ld2x5LWFkZGVkIGNvbHVtbiwKKwkgKiBhbmQgYmVmb3JlIGNvbnN0cmFpbnRz LCBpbiBjYXNlIGEgbmV3bHktYWRkZWQgUEsvRksgcmVmZXJlbmNlcyB0aGVtLgorCSAqLwor CUFUX1BBU1NfQUREX1BFUklPRCwJCQkvKiBBREQgUEVSSU9EICovCiAJQVRfUEFTU19BRERf Q09OU1RSLAkJCS8qIEFERCBjb25zdHJhaW50cyAoaW5pdGlhbCBleGFtaW5hdGlvbikgKi8K IAlBVF9QQVNTX0NPTF9BVFRSUywJCQkvKiBzZXQgY29sdW1uIGF0dHJpYnV0ZXMsIGVnIE5P VCBOVUxMICovCiAJQVRfUEFTU19BRERfSU5ERVhDT05TVFIsCS8qIEFERCBpbmRleC1iYXNl ZCBjb25zdHJhaW50cyAqLwpAQCAtMzYxLDYgKzM2Nyw3IEBAIHN0YXRpYyB2b2lkIFJhbmdl VmFyQ2FsbGJhY2tGb3JUcnVuY2F0ZShjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCiBzdGF0 aWMgTGlzdCAqTWVyZ2VBdHRyaWJ1dGVzKExpc3QgKmNvbHVtbnMsIGNvbnN0IExpc3QgKnN1 cGVycywgY2hhciByZWxwZXJzaXN0ZW5jZSwKIAkJCQkJCQkgYm9vbCBpc19wYXJ0aXRpb24s IExpc3QgKipzdXBjb25zdHIsCiAJCQkJCQkJIExpc3QgKipzdXBub3RudWxscyk7CitzdGF0 aWMgTGlzdCAqTWVyZ2VQZXJpb2RzKGNoYXIgKnJlbG5hbWUsIExpc3QgKnBlcmlvZHMsIExp c3QgKnRhYmxlRWx0cywgTGlzdCAqc3VwZXJzKTsKIHN0YXRpYyBMaXN0ICpNZXJnZUNoZWNr Q29uc3RyYWludChMaXN0ICpjb25zdHJhaW50cywgY29uc3QgY2hhciAqbmFtZSwgTm9kZSAq ZXhwcik7CiBzdGF0aWMgdm9pZCBNZXJnZUF0dHJpYnV0ZXNJbnRvRXhpc3RpbmcoUmVsYXRp b24gY2hpbGRfcmVsLCBSZWxhdGlvbiBwYXJlbnRfcmVsKTsKIHN0YXRpYyB2b2lkIE1lcmdl Q29uc3RyYWludHNJbnRvRXhpc3RpbmcoUmVsYXRpb24gY2hpbGRfcmVsLCBSZWxhdGlvbiBw YXJlbnRfcmVsKTsKQEAgLTQ0Miw2ICs0NDksOCBAQCBzdGF0aWMgT2JqZWN0QWRkcmVzcyBB VEV4ZWNBZGRDb2x1bW4oTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAog CQkJCQkJCQkJIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCk7CiBzdGF0aWMg Ym9vbCBjaGVja19mb3JfY29sdW1uX25hbWVfY29sbGlzaW9uKFJlbGF0aW9uIHJlbCwgY29u c3QgY2hhciAqY29sbmFtZSwKIAkJCQkJCQkJCQkJYm9vbCBpZl9ub3RfZXhpc3RzKTsKK3N0 YXRpYyBib29sIGNoZWNrX2Zvcl9wZXJpb2RfbmFtZV9jb2xsaXNpb24oUmVsYXRpb24gcmVs LCBjb25zdCBjaGFyICpwZXJuYW1lLAorCQkJCQkJCQkJCQlib29sIGlmX25vdF9leGlzdHMp Owogc3RhdGljIHZvaWQgYWRkX2NvbHVtbl9kYXRhdHlwZV9kZXBlbmRlbmN5KE9pZCByZWxp ZCwgaW50MzIgYXR0bnVtLCBPaWQgdHlwaWQpOwogc3RhdGljIHZvaWQgYWRkX2NvbHVtbl9j b2xsYXRpb25fZGVwZW5kZW5jeShPaWQgcmVsaWQsIGludDMyIGF0dG51bSwgT2lkIGNvbGxp ZCk7CiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNEcm9wTm90TnVsbChSZWxhdGlvbiBy ZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsIGJvb2wgcmVjdXJzZSwKQEAgLTQ2MSw2ICs0NzAs MTIgQEAgc3RhdGljIE9iamVjdEFkZHJlc3MgQVRFeGVjQ29sdW1uRGVmYXVsdChSZWxhdGlv biByZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsCiAJCQkJCQkJCQkJIE5vZGUgKm5ld0RlZmF1 bHQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0Nv b2tlZENvbHVtbkRlZmF1bHQoUmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0dG51bSwKIAkJ CQkJCQkJCQkJICAgTm9kZSAqbmV3RGVmYXVsdCk7CitzdGF0aWMgT2JqZWN0QWRkcmVzcyBB VEV4ZWNBZGRQZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2REZWYgKnBlcmlvZCwKKwkJCQkJ CQkJCSBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpOworc3RhdGljIHZvaWQg QVRFeGVjRHJvcFBlcmlvZChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKnBlcmlvZE5hbWUs CisJCQkJCQkJIERyb3BCZWhhdmlvciBiZWhhdmlvciwKKwkJCQkJCQkgYm9vbCByZWN1cnNl LCBib29sIHJlY3Vyc2luZywKKwkJCQkJCQkgYm9vbCBtaXNzaW5nX29rKTsKIHN0YXRpYyBP YmplY3RBZGRyZXNzIEFURXhlY0FkZElkZW50aXR5KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hh ciAqY29sTmFtZSwKIAkJCQkJCQkJCSAgIE5vZGUgKmRlZiwgTE9DS01PREUgbG9ja21vZGUp Owogc3RhdGljIE9iamVjdEFkZHJlc3MgQVRFeGVjU2V0SWRlbnRpdHkoUmVsYXRpb24gcmVs LCBjb25zdCBjaGFyICpjb2xOYW1lLApAQCAtNjY5LDYgKzY4NCwxMCBAQCBzdGF0aWMgTGlz dCAqR2V0UGFyZW50ZWRGb3JlaWduS2V5UmVmcyhSZWxhdGlvbiBwYXJ0aXRpb24pOwogc3Rh dGljIHZvaWQgQVREZXRhY2hDaGVja05vRm9yZWlnbktleVJlZnMoUmVsYXRpb24gcGFydGl0 aW9uKTsKIHN0YXRpYyBjaGFyIEdldEF0dHJpYnV0ZUNvbXByZXNzaW9uKE9pZCBhdHR0eXBp ZCwgY29uc3QgY2hhciAqY29tcHJlc3Npb24pOwogc3RhdGljIGNoYXIgR2V0QXR0cmlidXRl U3RvcmFnZShPaWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIgKnN0b3JhZ2Vtb2RlKTsKK3N0YXRp YyB2b2lkIEFkZFJlbGF0aW9uTmV3UGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kRGVmICpw ZXJpb2QpOworc3RhdGljIHZvaWQgVmFsaWRhdGVQZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJp b2REZWYgKnBlcmlvZCk7CitzdGF0aWMgQ29uc3RyYWludCAqbWFrZV9jb25zdHJhaW50X2Zv cl9wZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2REZWYgKnBlcmlvZCk7CitzdGF0aWMgQ29s dW1uRGVmICptYWtlX3JhbmdlX2NvbHVtbl9mb3JfcGVyaW9kKFBlcmlvZERlZiAqcGVyaW9k KTsKIAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC04OTcsNiArOTE2LDI2IEBAIERlZmluZVJlbGF0 aW9uKENyZWF0ZVN0bXQgKnN0bXQsIGNoYXIgcmVsa2luZCwgT2lkIG93bmVySWQsCiAJCQkJ CQlzdG10LT5wYXJ0Ym91bmQgIT0gTlVMTCwKIAkJCQkJCSZvbGRfY29uc3RyYWludHMsICZv bGRfbm90bnVsbHMpOwogCisJLyoKKwkgKiBVc2luZyB0aGUgY29sdW1uIGxpc3QgKGluY2x1 ZGluZyBpbmhlcml0ZWQgY29sdW1ucyksCisJICogZmluZCB0aGUgc3RhcnQvZW5kIGNvbHVt bnMgZm9yIGVhY2ggcGVyaW9kLgorCSAqIFBFUklPRHMgc2hvdWxkIGJlIGluaGVyaXRlZCB0 b28gKGJ1dCBhcmVuJ3QgeWV0KS4KKwkgKi8KKwlzdG10LT5wZXJpb2RzID0gTWVyZ2VQZXJp b2RzKHJlbG5hbWUsIHN0bXQtPnBlcmlvZHMsIHN0bXQtPnRhYmxlRWx0cywgaW5oZXJpdE9p ZHMpOworCisJLyoKKwkgKiBGb3IgZWFjaCBQRVJJT0Qgd2UgbmVlZCB0byBjcmVhdGUgYSBH RU5FUkFURUQgY29sdW1uLAorCSAqIHNvIGFkZCB0aG9zZSB0byB0YWJsZUVsdHMuCisJICog VGhlc2UgY29sdW1ucyBhcmUgbm90IGluaGVyaXRlZCwKKwkgKiBzbyB3ZSBkb24ndCB3b3Jy eSBhYm91dCBjb25mbGljdHMgaW4gdGFibGVFbHRzLgorCSAqLworCWZvcmVhY2gobGlzdHB0 ciwgc3RtdC0+cGVyaW9kcykKKwl7CisJCVBlcmlvZERlZiAqcGVyaW9kID0gKFBlcmlvZERl ZiAqKSBsZmlyc3QobGlzdHB0cik7CisJCUNvbHVtbkRlZiAqY29sID0gbWFrZV9yYW5nZV9j b2x1bW5fZm9yX3BlcmlvZChwZXJpb2QpOworCQlzdG10LT50YWJsZUVsdHMgPSBsYXBwZW5k KHN0bXQtPnRhYmxlRWx0cywgY29sKTsKKwl9CisKIAkvKgogCSAqIENyZWF0ZSBhIHR1cGxl IGRlc2NyaXB0b3IgZnJvbSB0aGUgcmVsYXRpb24gc2NoZW1hLiAgTm90ZSB0aGF0IHRoaXMK IAkgKiBkZWFscyB3aXRoIGNvbHVtbiBuYW1lcywgdHlwZXMsIGFuZCBpbi1kZXNjcmlwdG9y IE5PVCBOVUxMIGZsYWdzLCBidXQKQEAgLTEyODIsNiArMTMyMSwyMSBAQCBEZWZpbmVSZWxh dGlvbihDcmVhdGVTdG10ICpzdG10LCBjaGFyIHJlbGtpbmQsIE9pZCBvd25lcklkLAogCWZv cmVhY2gobGlzdHB0ciwgbm5jb2xzKQogCQlzZXRfYXR0bm90bnVsbChOVUxMLCByZWwsIGxm aXJzdF9pbnQobGlzdHB0ciksIGZhbHNlLCBOb0xvY2spOwogCisJLyoKKwkgKiBDcmVhdGUg cGVyaW9kcyBmb3IgdGhlIHRhYmxlLiBUaGlzIG11c3QgY29tZSBhZnRlciB3ZSBjcmVhdGUg Y29sdW1ucworCSAqIGFuZCBiZWZvcmUgd2UgY3JlYXRlIGluZGV4IGNvbnN0cmFpbnRzLiBJ dCB3aWxsIGF1dG9tYXRpY2FsbHkgY3JlYXRlCisJICogYSBDSEVDSyBjb25zdHJhaW50IGZv ciB0aGUgcGVyaW9kLgorCSAqLworCWZvcmVhY2gobGlzdHB0ciwgc3RtdC0+cGVyaW9kcykK Kwl7CisJCVBlcmlvZERlZiAqcGVyaW9kID0gKFBlcmlvZERlZiAqKSBsZmlyc3QobGlzdHB0 cik7CisKKwkJLyogRG9uJ3QgdXBkYXRlIHRoZSBjb3VudCBvZiBjaGVjayBjb25zdHJhaW50 cyB0d2ljZSAqLworCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCisJCUFkZFJlbGF0 aW9uTmV3UGVyaW9kKHJlbCwgcGVyaW9kKTsKKwl9CisKIAlPYmplY3RBZGRyZXNzU2V0KGFk ZHJlc3MsIFJlbGF0aW9uUmVsYXRpb25JZCwgcmVsYXRpb25JZCk7CiAKIAkvKgpAQCAtMTM5 OCw2ICsxNDUyLDI2NCBAQCBCdWlsZERlc2NGb3JSZWxhdGlvbihjb25zdCBMaXN0ICpjb2x1 bW5zKQogCXJldHVybiBkZXNjOwogfQogCisvKgorICogbWFrZV9jb25zdHJhaW50X2Zvcl9w ZXJpb2QKKyAqCisgKiBCdWlsZHMgYSBDSEVDSyBDb25zdHJhaW50IHRvIGVuc3VyZSBzdGFy dCA8IGVuZC4KKyAqIFJldHVybnMgdGhlIENIRUNLIENvbnN0cmFpbnQuCisgKiBBbHNvIGZp bGxzIGluIHBlcmlvZC0+Y29uc3RyYWludG5hbWUgaWYgbmVlZGVkLgorICovCitzdGF0aWMg Q29uc3RyYWludCAqCittYWtlX2NvbnN0cmFpbnRfZm9yX3BlcmlvZChSZWxhdGlvbiByZWws IFBlcmlvZERlZiAqcGVyaW9kKQoreworCUNvbHVtblJlZiAgKnNjb2wsICplY29sOworCUNv bnN0cmFpbnQgKmNvbnN0cjsKKwlUeXBlQ2FjaGVFbnRyeSAqdHlwZTsKKworCWlmIChwZXJp b2QtPmNvbnN0cmFpbnRuYW1lID09IE5VTEwpCisJCXBlcmlvZC0+Y29uc3RyYWludG5hbWUg PSBDaG9vc2VDb25zdHJhaW50TmFtZShSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLAor CQkJCQkJCQkJCQkJCSAgcGVyaW9kLT5wZXJpb2RuYW1lLAorCQkJCQkJCQkJCQkJCSAgImNo ZWNrIiwKKwkJCQkJCQkJCQkJCQkgIFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbCksCisJCQkJ CQkJCQkJCQkJICBOSUwpOworCXNjb2wgPSBtYWtlTm9kZShDb2x1bW5SZWYpOworCXNjb2wt PmZpZWxkcyA9IGxpc3RfbWFrZTEobWFrZVN0cmluZyhwc3RyZHVwKHBlcmlvZC0+c3RhcnRj b2xuYW1lKSkpOworCXNjb2wtPmxvY2F0aW9uID0gMDsKKworCWVjb2wgPSBtYWtlTm9kZShD b2x1bW5SZWYpOworCWVjb2wtPmZpZWxkcyA9IGxpc3RfbWFrZTEobWFrZVN0cmluZyhwc3Ry ZHVwKHBlcmlvZC0+ZW5kY29sbmFtZSkpKTsKKwllY29sLT5sb2NhdGlvbiA9IDA7CisKKwl0 eXBlID0gbG9va3VwX3R5cGVfY2FjaGUocGVyaW9kLT5jb2x0eXBpZCwgVFlQRUNBQ0hFX0xU X09QUik7CisJaWYgKHR5cGUtPmx0X29wciA9PSBJbnZhbGlkT2lkKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJ CQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIGNhbm5vdCBiZSB1c2VkIGluIGEgUEVSSU9EIGJl Y2F1c2UgaXRzIHR5cGUgJXMgaGFzIG5vIGxlc3MgdGhhbiBvcGVyYXRvciIsCisJCQkJCQlw ZXJpb2QtPnN0YXJ0Y29sbmFtZSwgZm9ybWF0X3R5cGVfYmUocGVyaW9kLT5jb2x0eXBpZCkp KSk7CisKKwljb25zdHIgPSBtYWtlTm9kZShDb25zdHJhaW50KTsKKwljb25zdHItPmNvbnR5 cGUgPSBDT05TVFJfQ0hFQ0s7CisJY29uc3RyLT5jb25uYW1lID0gcGVyaW9kLT5jb25zdHJh aW50bmFtZTsKKwljb25zdHItPmRlZmVycmFibGUgPSBmYWxzZTsKKwljb25zdHItPmluaXRk ZWZlcnJlZCA9IGZhbHNlOworCWNvbnN0ci0+bG9jYXRpb24gPSAtMTsKKwljb25zdHItPmlz X25vX2luaGVyaXQgPSBmYWxzZTsKKwljb25zdHItPnJhd19leHByID0gKE5vZGUgKikgbWFr ZVNpbXBsZUFfRXhwcihBRVhQUl9PUCwKKwkJCQkJCQkJCQkJCSBnZXRfb3BuYW1lKHR5cGUt Pmx0X29wciksCisJCQkJCQkJCQkJCQkgKE5vZGUgKikgc2NvbCwKKwkJCQkJCQkJCQkJCSAo Tm9kZSAqKSBlY29sLAorCQkJCQkJCQkJCQkJIDApOworCWNvbnN0ci0+Y29va2VkX2V4cHIg PSBOVUxMOworCWNvbnN0ci0+c2tpcF92YWxpZGF0aW9uID0gZmFsc2U7CisJY29uc3RyLT5p bml0aWFsbHlfdmFsaWQgPSB0cnVlOworCisJcmV0dXJuIGNvbnN0cjsKK30KKworLyoKKyAq IG1ha2VfcmFuZ2VfY29sdW1uX2Zvcl9wZXJpb2QKKyAqCisgKiBCdWlsZHMgYSBHRU5FUkFU RUQgQUxXQVlTIHJhbmdlIGNvbHVtbiBiYXNlZCBvbiB0aGUgUEVSSU9ECisgKiBzdGFydC9l bmQgY29sdW1ucy4gUmV0dXJucyB0aGUgQ29sdW1uRGVmLgorICovCitDb2x1bW5EZWYgKgor bWFrZV9yYW5nZV9jb2x1bW5fZm9yX3BlcmlvZChQZXJpb2REZWYgKnBlcmlvZCkKK3sKKwlj aGFyICpyYW5nZV90eXBlX25hbWVzcGFjZTsKKwljaGFyICpyYW5nZV90eXBlX25hbWU7CisJ Q29sdW1uRGVmICpjb2wgPSBtYWtlTm9kZShDb2x1bW5EZWYpOworCUNvbHVtblJlZiAqc3Rh cnR2YXIsICplbmR2YXI7CisJRXhwciAqcmFuZ2VDb25zdHJ1Y3RvcjsKKworCWlmICghZ2V0 X3R5cG5hbWVfYW5kX25hbWVzcGFjZShwZXJpb2QtPnJuZ3R5cGlkLCAmcmFuZ2VfdHlwZV9u YW1lLCAmcmFuZ2VfdHlwZV9uYW1lc3BhY2UpKQorCQllbG9nKEVSUk9SLCAibWlzc2luZyBy YW5nZSB0eXBlICVkIiwgcGVyaW9kLT5ybmd0eXBpZCk7CisKKwlzdGFydHZhciA9IG1ha2VO b2RlKENvbHVtblJlZik7CisJc3RhcnR2YXItPmZpZWxkcyA9IGxpc3RfbWFrZTEobWFrZVN0 cmluZyhwc3RyZHVwKHBlcmlvZC0+c3RhcnRjb2xuYW1lKSkpOworCWVuZHZhciA9IG1ha2VO b2RlKENvbHVtblJlZik7CisJZW5kdmFyLT5maWVsZHMgPSBsaXN0X21ha2UxKG1ha2VTdHJp bmcocHN0cmR1cChwZXJpb2QtPmVuZGNvbG5hbWUpKSk7CisJcmFuZ2VDb25zdHJ1Y3RvciA9 IChFeHByICopIG1ha2VGdW5jQ2FsbCgKKwkJCWxpc3RfbWFrZTIobWFrZVN0cmluZyhyYW5n ZV90eXBlX25hbWVzcGFjZSksIG1ha2VTdHJpbmcocmFuZ2VfdHlwZV9uYW1lKSksCisJCQls aXN0X21ha2UyKHN0YXJ0dmFyLCBlbmR2YXIpLAorCQkJQ09FUkNFX0VYUExJQ0lUX0NBTEws CisJCQlwZXJpb2QtPmxvY2F0aW9uKTsKKworCWNvbC0+Y29sbmFtZSA9IHBzdHJkdXAocGVy aW9kLT5wZXJpb2RuYW1lKTsKKwljb2wtPnR5cGVOYW1lID0gbWFrZVR5cGVOYW1lKHJhbmdl X3R5cGVfbmFtZSk7CisJY29sLT5jb21wcmVzc2lvbiA9IE5VTEw7CisJY29sLT5pbmhjb3Vu dCA9IDA7CisJY29sLT5pc19sb2NhbCA9IHRydWU7CisJY29sLT5pc19ub3RfbnVsbCA9IHRy dWU7CisJY29sLT5pc19mcm9tX3R5cGUgPSBmYWxzZTsKKwljb2wtPnN0b3JhZ2UgPSAwOwor CWNvbC0+c3RvcmFnZV9uYW1lID0gTlVMTDsKKwljb2wtPnJhd19kZWZhdWx0ID0gKE5vZGUg KikgcmFuZ2VDb25zdHJ1Y3RvcjsKKwljb2wtPmNvb2tlZF9kZWZhdWx0ID0gTlVMTDsKKwlj b2wtPmlkZW50aXR5ID0gMDsKKwljb2wtPmdlbmVyYXRlZCA9IEFUVFJJQlVURV9HRU5FUkFU RURfU1RPUkVEOworCWNvbC0+Y29sbENsYXVzZSA9IE5VTEw7CisJY29sLT5jb2xsT2lkID0g SW52YWxpZE9pZDsKKwljb2wtPmZkd29wdGlvbnMgPSBOSUw7CisJY29sLT5sb2NhdGlvbiA9 IHBlcmlvZC0+bG9jYXRpb247CisKKwlyZXR1cm4gY29sOworfQorCisvKgorICogVmFsaWRh dGVQZXJpb2QKKyAqCisgKiBMb29rIHVwIHRoZSBhdHRyaWJ1dGVzIHVzZWQgYnkgdGhlIFBF UklPRCwKKyAqIG1ha2Ugc3VyZSB0aGV5IGV4aXN0LCBhcmUgbm90IHN5c3RlbSBjb2x1bW5z LAorICogYW5kIGhhdmUgdGhlIHNhbWUgdHlwZSBhbmQgY29sbGF0aW9uLgorICoKKyAqIFlv dSBtdXN0IGhhdmUgYSBSb3dFeGNsdXNpdmVMb2NrIG9uIHBnX2F0dHJpYnV0ZQorICogYmVm b3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4KKyAqCisgKiBBZGQgb3VyIGZpbmRpbmdzIHRv IHRoZXNlIFBlcmlvZERlZiBmaWVsZHM6CisgKgorICogY29sdHlwaWQgLSB0aGUgdHlwZSBv ZiBQRVJJT0QgY29sdW1ucy4KKyAqIHN0YXJ0YXR0bnVtIC0gdGhlIGF0dG51bSBvZiB0aGUg c3RhcnQgY29sdW1uLgorICogZW5kYXR0bnVtIC0gdGhlIGF0dG51bSBvZiB0aGUgZW5kIGNv bHVtbi4KKyAqLworc3RhdGljIHZvaWQKK1ZhbGlkYXRlUGVyaW9kKFJlbGF0aW9uIHJlbCwg UGVyaW9kRGVmICpwZXJpb2QpCit7CisJSGVhcFR1cGxlIHN0YXJ0dHVwbGU7CisJSGVhcFR1 cGxlIGVuZHR1cGxlOworCUZvcm1fcGdfYXR0cmlidXRlCWF0dHR1cGxlOworCU9pZAlhdHRj b2xsYXRpb247CisKKwkvKiBGaW5kIHRoZSBzdGFydCBjb2x1bW4gKi8KKwlzdGFydHR1cGxl ID0gU2VhcmNoU3lzQ2FjaGVDb3B5QXR0TmFtZShSZWxhdGlvbkdldFJlbGlkKHJlbCksIHBl cmlvZC0+c3RhcnRjb2xuYW1lKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoc3RhcnR0dXBs ZSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURf Q09MVU1OKSwKKwkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNc IiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQlwZXJpb2QtPnN0YXJ0Y29sbmFtZSwgUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKKwlhdHR0dXBsZSA9IChGb3JtX3BnX2F0dHJp YnV0ZSkgR0VUU1RSVUNUKHN0YXJ0dHVwbGUpOworCXBlcmlvZC0+Y29sdHlwaWQgPSBhdHR0 dXBsZS0+YXR0dHlwaWQ7CisJYXR0Y29sbGF0aW9uID0gYXR0dHVwbGUtPmF0dGNvbGxhdGlv bjsKKwlwZXJpb2QtPnN0YXJ0YXR0bnVtID0gYXR0dHVwbGUtPmF0dG51bTsKKworCS8qIE1h a2Ugc3VyZSBpdCdzIG5vdCBhIHN5c3RlbSBjb2x1bW4gKi8KKwlpZiAocGVyaW9kLT5zdGFy dGF0dG51bSA8PSAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJIGVycm1zZygiY2Fubm90IHVzZSBz eXN0ZW0gY29sdW1uIFwiJXNcIiBpbiBwZXJpb2QiLAorCQkJCQkJcGVyaW9kLT5zdGFydGNv bG5hbWUpKSk7CisKKwkvKiBGaW5kIHRoZSBlbmQgY29sdW1uICovCisJZW5kdHVwbGUgPSBT ZWFyY2hTeXNDYWNoZUNvcHlBdHROYW1lKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgcGVyaW9k LT5lbmRjb2xuYW1lKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoZW5kdHVwbGUpKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX0NPTFVNTiks CisJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgZG9lcyBu b3QgZXhpc3QiLAorCQkJCQkJcGVyaW9kLT5lbmRjb2xuYW1lLCBSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShyZWwpKSkpOworCWF0dHR1cGxlID0gKEZvcm1fcGdfYXR0cmlidXRlKSBHRVRT VFJVQ1QoZW5kdHVwbGUpOworCXBlcmlvZC0+ZW5kYXR0bnVtID0gYXR0dHVwbGUtPmF0dG51 bTsKKworCS8qIE1ha2Ugc3VyZSBpdCdzIG5vdCBhIHN5c3RlbSBjb2x1bW4gKi8KKwlpZiAo cGVyaW9kLT5lbmRhdHRudW0gPD0gMCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCSBlcnJtc2coImNh bm5vdCB1c2Ugc3lzdGVtIGNvbHVtbiBcIiVzXCIgaW4gcGVyaW9kIiwKKwkJCQkJCXBlcmlv ZC0+ZW5kY29sbmFtZSkpKTsKKworCS8qIEJvdGggY29sdW1ucyBtdXN0IGJlIG9mIHNhbWUg dHlwZSAqLworCWlmIChwZXJpb2QtPmNvbHR5cGlkICE9IGF0dHR1cGxlLT5hdHR0eXBpZCkK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01B VENIKSwKKwkJCQkgZXJybXNnKCJzdGFydCBhbmQgZW5kIGNvbHVtbnMgb2YgcGVyaW9kIG11 c3QgYmUgb2Ygc2FtZSB0eXBlIikpKTsKKworCS8qIEJvdGggY29sdW1ucyBtdXN0IGhhdmUg dGhlIHNhbWUgY29sbGF0aW9uICovCisJaWYgKGF0dGNvbGxhdGlvbiAhPSBhdHR0dXBsZS0+ YXR0Y29sbGF0aW9uKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf Q09MTEFUSU9OX01JU01BVENIKSwKKwkJCQkgZXJybXNnKCJzdGFydCBhbmQgZW5kIGNvbHVt bnMgb2YgcGVyaW9kIG11c3QgaGF2ZSBzYW1lIGNvbGxhdGlvbiIpKSk7CisKKwloZWFwX2Zy ZWV0dXBsZShzdGFydHR1cGxlKTsKKwloZWFwX2ZyZWV0dXBsZShlbmR0dXBsZSk7Cit9CisK Ky8qCisgKiBjaG9vc2VfcmFuZ2V0eXBlX2Zvcl9wZXJpb2QKKyAqCisgKiBGaW5kIGEgc3Vp dGFibGUgcmFuZ2UgdHlwZSBmb3Igb3BlcmF0aW9ucyBpbnZvbHZpbmcgdGhpcyBwZXJpb2Qu CisgKiBVc2UgdGhlIHJhbmdldHlwZSBvcHRpb24gaWYgcHJvdmlkZWQsIG90aGVyd2lzZSB0 cnkgdG8gZmluZCBhCisgKiBub24tYW1iaWd1b3VzIGV4aXN0aW5nIHR5cGUuCisgKi8KKy8v IFRPRE86IFRoaXMgY291bGQgYmUgc3RhdGljIG5vdworT2lkCitjaG9vc2VfcmFuZ2V0eXBl X2Zvcl9wZXJpb2QoUGVyaW9kRGVmICpwZXJpb2QpCit7CisJT2lkCXJuZ3R5cGlkOworCisJ aWYgKHBlcmlvZC0+cmFuZ2V0eXBlbmFtZSAhPSBOVUxMKQorCXsKKwkJLyogTWFrZSBzdXJl IGl0IGV4aXN0cyAqLworCQlybmd0eXBpZCA9IFR5cGVuYW1lR2V0VHlwaWRFeHRlbmRlZChw ZXJpb2QtPnJhbmdldHlwZW5hbWUsIGZhbHNlKTsKKwkJaWYgKHJuZ3R5cGlkID09IEludmFs aWRPaWQpCisJCQllcmVwb3J0KEVSUk9SLCAoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9P QkpFQ1QpLAorCQkJCQkgZXJybXNnKCJSYW5nZSB0eXBlICVzIG5vdCBmb3VuZCIsIHBlcmlv ZC0+cmFuZ2V0eXBlbmFtZSkpKTsKKworCQkvKiBNYWtlIHN1cmUgaXQgaXMgYSByYW5nZSB0 eXBlICovCisJCWlmICghdHlwZV9pc19yYW5nZShybmd0eXBpZCkpCisJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJ IGVycm1zZygiVHlwZSAlcyBpcyBub3QgYSByYW5nZSB0eXBlIiwgcGVyaW9kLT5yYW5nZXR5 cGVuYW1lKSkpOworCisJCS8qIE1ha2Ugc3VyZSBpdCBtYXRjaGVzIHRoZSBjb2x1bW4gdHlw ZSAqLworCQlpZiAoZ2V0X3JhbmdlX3N1YnR5cGUocm5ndHlwaWQpICE9IHBlcmlvZC0+Y29s dHlwaWQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFU WVBFX01JU01BVENIKSwKKwkJCQkJIGVycm1zZygiUmFuZ2UgdHlwZSAlcyBkb2VzIG5vdCBt YXRjaCBjb2x1bW4gdHlwZSAlcyIsCisJCQkJCQkgcGVyaW9kLT5yYW5nZXR5cGVuYW1lLAor CQkJCQkJIGZvcm1hdF90eXBlX2JlKHBlcmlvZC0+Y29sdHlwaWQpKSkpOworCX0KKwllbHNl CisJeworCQlybmd0eXBpZCA9IGdldF9zdWJ0eXBlX3JhbmdlKHBlcmlvZC0+Y29sdHlwaWQp OworCQlpZiAocm5ndHlwaWQgPT0gSW52YWxpZE9pZCkKKwkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJCSBlcnJtc2co Im5vIHJhbmdlIHR5cGUgZm9yICVzIGZvdW5kIGZvciBwZXJpb2QgJXMiLAorCQkJCQkJCWZv cm1hdF90eXBlX2JlKHBlcmlvZC0+Y29sdHlwaWQpLAorCQkJCQkJCXBlcmlvZC0+cGVyaW9k bmFtZSksCisJCQkJCSBlcnJoaW50KCJZb3UgY2FuIGRlZmluZSBhIGN1c3RvbSByYW5nZSB0 eXBlIHdpdGggQ1JFQVRFIFRZUEUiKSkpOworCisJfQorCisJcmV0dXJuIHJuZ3R5cGlkOwor fQorCitzdGF0aWMgdm9pZAorQWRkUmVsYXRpb25OZXdQZXJpb2QoUmVsYXRpb24gcmVsLCBQ ZXJpb2REZWYgKnBlcmlvZCkKK3sKKwlSZWxhdGlvbglhdHRyZWxhdGlvbjsKKwlPaWQJCQlj b25vaWQ7CisJQ29uc3RyYWludCAqY29uc3RyOworCUxpc3QJICAgKm5ld2NvbnN0cnM7CisK KwlhdHRyZWxhdGlvbiA9IHRhYmxlX29wZW4oQXR0cmlidXRlUmVsYXRpb25JZCwgUm93RXhj bHVzaXZlTG9jayk7CisKKwkvKiBGaW5kIHRoZSBHRU5FUkFURUQgcmFuZ2UgY29sdW1uICov CisKKwlwZXJpb2QtPnJuZ2F0dG51bSA9IGdldF9hdHRudW0oUmVsYXRpb25HZXRSZWxpZChy ZWwpLCBwZXJpb2QtPnBlcmlvZG5hbWUpOworCWlmIChwZXJpb2QtPnJuZ2F0dG51bSA9PSBJ bnZhbGlkQXR0ck51bWJlcikKKwkJZWxvZyhFUlJPUiwgIm1pc3NpbmcgYXR0cmlidXRlICVz IiwgcGVyaW9kLT5wZXJpb2RuYW1lKTsKKworCS8qIFRoZSBwYXJzZXIgaGFzIGFscmVhZHkg Zm91bmQgcGVyaW9kLT5jb2x0eXBpZCAqLworCisJY29uc3RyID0gbWFrZV9jb25zdHJhaW50 X2Zvcl9wZXJpb2QocmVsLCBwZXJpb2QpOworCW5ld2NvbnN0cnMgPSBBZGRSZWxhdGlvbk5l d0NvbnN0cmFpbnRzKHJlbCwgTklMLCBsaXN0X21ha2UxKGNvbnN0ciksIGZhbHNlLCB0cnVl LCB0cnVlLCBOVUxMKTsKKwljb25vaWQgPSAoKENvb2tlZENvbnN0cmFpbnQgKikgbGluaXRp YWwobmV3Y29uc3RycykpLT5jb25vaWQ7CisKKwkvKiBTYXZlIGl0ICovCisJU3RvcmVQZXJp b2QocmVsLCBwZXJpb2QtPnBlcmlvZG5hbWUsIHBlcmlvZC0+c3RhcnRhdHRudW0sIHBlcmlv ZC0+ZW5kYXR0bnVtLCBwZXJpb2QtPnJuZ2F0dG51bSwgY29ub2lkKTsKKworCXRhYmxlX2Ns b3NlKGF0dHJlbGF0aW9uLCBSb3dFeGNsdXNpdmVMb2NrKTsKK30KKwogLyoKICAqIEVtaXQg dGhlIHJpZ2h0IGVycm9yIG9yIHdhcm5pbmcgbWVzc2FnZSBmb3IgYSAiRFJPUCIgY29tbWFu ZCBpc3N1ZWQgb24gYQogICogbm9uLWV4aXN0ZW50IHJlbGF0aW9uCkBAIC0zMzUxLDYgKzM2 NjMsMTY4IEBAIE1lcmdlQXR0cmlidXRlcyhMaXN0ICpjb2x1bW5zLCBjb25zdCBMaXN0ICpz dXBlcnMsIGNoYXIgcmVscGVyc2lzdGVuY2UsCiB9CiAKIAorLyotLS0tLS0tLS0tCisgKiBN ZXJnZVBlcmlvZHMKKyAqCQlSZXR1cm5zIG5ldyBwZXJpb2QgbGlzdCBnaXZlbiBpbml0aWFs IHBlcmlvZHMgYW5kIHN1cGVyY2xhc3Nlcy4KKyAqCisgKiBGb3Igbm93IHdlIGRvbid0IHN1 cHBvcnQgaW5oZXJpdGVuY2Ugd2l0aCBQRVJJT0RzLAorICogYnV0IHdlIG1pZ2h0IG1ha2Ug aXQgd29yayBldmVudHVhbGx5LgorICoKKyAqIFdlIGNhbiBvbWl0IGxvdHMgb2YgY2hlY2tz IGhlcmUgYW5kIGFzc3VtZSBNZXJnZUF0dHJpYnV0ZXMgYWxyZWFkeSBkaWQgdGhlbSwKKyAq IGZvciBleGFtcGxlIHRoYXQgY2hpbGQgJiBwYXJlbnRzIGFyZSBub3QgYSBtaXggb2YgcGVy bWFuZW50IGFuZCB0ZW1wLgorICovCitzdGF0aWMgTGlzdCAqCitNZXJnZVBlcmlvZHMoY2hh ciAqcmVsbmFtZSwgTGlzdCAqcGVyaW9kcywgTGlzdCAqdGFibGVFbHRzLCBMaXN0ICpzdXBl cnMpCit7CisJTGlzdENlbGwgICAqZW50cnk7CisKKwkvKiBJZiB3ZSBoYXZlIGEgUEVSSU9E IHRoZW4gc3VwZXJzIG11c3QgYmUgZW1wdHkuICovCisKKwlpZiAobGlzdF9sZW5ndGgocGVy aW9kcykgPiAwICYmIGxpc3RfbGVuZ3RoKHN1cGVycykgPiAwKQorCQllcmVwb3J0KEVSUk9S LAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkg ZXJybXNnKCJJbmhlcml0aW5nIGlzIG5vdCBzdXBwb3J0ZWQgd2hlbiBhIHRhYmxlIGhhcyBh IFBFUklPRCIpKSk7CisKKwkvKiBJZiBhbnkgcGFyZW50IHRhYmxlIGhhcyBhIFBFUklPRCwg dGhlbiBmYWlsLiAqLworCisJZm9yZWFjaChlbnRyeSwgc3VwZXJzKQorCXsKKwkJT2lkCQkJ cGFyZW50ID0gbGZpcnN0X29pZChlbnRyeSk7CisJCVJlbGF0aW9uCXJlbGF0aW9uOworCQlS ZWxhdGlvbglwZ19wZXJpb2Q7CisJCVN5c1NjYW5EZXNjIHNjYW47CisJCVNjYW5LZXlEYXRh IHNrZXlbMV07CisJCUhlYXBUdXBsZQl0dXBsZTsKKworCQkvKiBjYWxsZXIgYWxyZWFkeSBn b3QgbG9jayAqLworCQlyZWxhdGlvbiA9IHRhYmxlX29wZW4ocGFyZW50LCBOb0xvY2spOwor CQlwZ19wZXJpb2QgPSB0YWJsZV9vcGVuKFBlcmlvZFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJl TG9jayk7CisKKwkJU2NhbktleUluaXQoJnNrZXlbMF0sCisJCQkJCUFudW1fcGdfcGVyaW9k X3BlcnJlbGlkLAorCQkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJ CU9iamVjdElkR2V0RGF0dW0ocGFyZW50KSk7CisKKwkJc2NhbiA9IHN5c3RhYmxlX2JlZ2lu c2NhbihwZ19wZXJpb2QsIFBlcmlvZFJlbGlkTmFtZUluZGV4SWQsIHRydWUsCisJCQkJCQkJ CSAgTlVMTCwgMSwgc2tleSk7CisKKwkJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHVwbGUgPSBz eXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJj b2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJIGVycm1zZygiSW5o ZXJpdGluZyBmcm9tIGEgdGFibGUgd2l0aCBhIFBFUklPRCBpcyBub3Qgc3VwcG9ydGVkIikp KTsKKworCQlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCQl0YWJsZV9jbG9zZShwZ19wZXJp b2QsIEFjY2Vzc1NoYXJlTG9jayk7CisJCXRhYmxlX2Nsb3NlKHJlbGF0aW9uLCBOb0xvY2sp OworCX0KKworCS8qCisJICogRmluZCB0aGUgc3RhcnQgJiBlbmQgY29sdW1ucyBhbmQgZ2V0 IHRoZWlyIGF0dG5vIGFuZCB0eXBlLgorCSAqIEluIHRoZSBzYW1lIHBhc3MsIG1ha2Ugc3Vy ZSB0aGUgcGVyaW9kIGRvZXNuJ3QgY29uZmxpY3Qgd2l0aCBhbnkgY29sdW1uIG5hbWVzLgor CSAqIEFsc28gbWFrZSBzdXJlIHRoZSBzYW1lIHBlcmlvZCBuYW1lIGlzbid0IHVzZWQgbW9y ZSB0aGFuIG9uY2UuCisJICovCisJZm9yZWFjaCAoZW50cnksIHBlcmlvZHMpCisJeworCQlQ ZXJpb2REZWYgKnBlcmlvZCA9IGxmaXJzdChlbnRyeSk7CisJCUxpc3RDZWxsICplbnRyeTI7 CisJCWludCBpID0gMTsKKwkJT2lkIHN0YXJ0Y29sdHlwaWQgPSBJbnZhbGlkT2lkOworCQlP aWQgZW5kY29sdHlwaWQgPSBJbnZhbGlkT2lkOworCQlPaWQJc3RhcnRjb2xjb2xsYXRpb24g PSBJbnZhbGlkT2lkOworCQlPaWQJZW5kY29sY29sbGF0aW9uID0gSW52YWxpZE9pZDsKKwor CQlwZXJpb2QtPnN0YXJ0YXR0bnVtID0gSW52YWxpZEF0dHJOdW1iZXI7CisJCXBlcmlvZC0+ ZW5kYXR0bnVtID0gSW52YWxpZEF0dHJOdW1iZXI7CisKKwkJaWYgKFN5c3RlbUF0dHJpYnV0 ZUJ5TmFtZShwZXJpb2QtPnBlcmlvZG5hbWUpICE9IE5VTEwpCisJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9DT0xVTU4pLAorCQkJCQkgZXJy bXNnKCJwZXJpb2QgbmFtZSBcIiVzXCIgY29uZmxpY3RzIHdpdGggYSBzeXN0ZW0gY29sdW1u IG5hbWUiLAorCQkJCQkJCXBlcmlvZC0+cGVyaW9kbmFtZSkpKTsKKworCQlmb3JlYWNoIChl bnRyeTIsIHBlcmlvZHMpCisJCXsKKwkJCVBlcmlvZERlZiAqcGVyaW9kMiA9IGxmaXJzdChl bnRyeTIpOworCisJCQlpZiAocGVyaW9kICE9IHBlcmlvZDIgJiYgc3RyY21wKHBlcmlvZC0+ cGVyaW9kbmFtZSwgcGVyaW9kMi0+cGVyaW9kbmFtZSkgPT0gMCkKKwkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfT0JKRUNUKSwKKwkJCQkJ CSBlcnJtc2coInBlcmlvZCBuYW1lIFwiJXNcIiBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2Ui LAorCQkJCQkJCQlwZXJpb2QtPnBlcmlvZG5hbWUpKSk7CisJCX0KKworCQlmb3JlYWNoIChl bnRyeTIsIHRhYmxlRWx0cykKKwkJeworCQkJQ29sdW1uRGVmICpjb2wgPSBsZmlyc3QoZW50 cnkyKTsKKwkJCWludDMyCWF0dHR5cG1vZDsKKwkJCUFjbFJlc3VsdCBhY2xyZXN1bHQ7CisK KwkJCWlmIChzdHJjbXAocGVyaW9kLT5wZXJpb2RuYW1lLCBjb2wtPmNvbG5hbWUpID09IDAp CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRF X0NPTFVNTiksCisJCQkJCQkgZXJybXNnKCJwZXJpb2QgbmFtZSBcIiVzXCIgY29uZmxpY3Rz IHdpdGggYSBjb2x1bW4gbmFtZSIsCisJCQkJCQkJCXBlcmlvZC0+cGVyaW9kbmFtZSkpKTsK KworCQkJaWYgKHN0cmNtcChwZXJpb2QtPnN0YXJ0Y29sbmFtZSwgY29sLT5jb2xuYW1lKSA9 PSAwKQorCQkJeworCQkJCXBlcmlvZC0+c3RhcnRhdHRudW0gPSBpOworCisJCQkJdHlwZW5h bWVUeXBlSWRBbmRNb2QoTlVMTCwgY29sLT50eXBlTmFtZSwgJnN0YXJ0Y29sdHlwaWQsICZh dHR0eXBtb2QpOworCisJCQkJYWNscmVzdWx0ID0gb2JqZWN0X2FjbGNoZWNrKFR5cGVSZWxh dGlvbklkLCBzdGFydGNvbHR5cGlkLCBHZXRVc2VySWQoKSwgQUNMX1VTQUdFKTsKKwkJCQlp ZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQkJCQlhY2xjaGVja19lcnJvcl90eXBl KGFjbHJlc3VsdCwgc3RhcnRjb2x0eXBpZCk7CisKKwkJCQlzdGFydGNvbGNvbGxhdGlvbiA9 IEdldENvbHVtbkRlZkNvbGxhdGlvbihOVUxMLCBjb2wsIHN0YXJ0Y29sdHlwaWQpOworCQkJ fQorCisJCQlpZiAoc3RyY21wKHBlcmlvZC0+ZW5kY29sbmFtZSwgY29sLT5jb2xuYW1lKSA9 PSAwKQorCQkJeworCQkJCXBlcmlvZC0+ZW5kYXR0bnVtID0gaTsKKworCQkJCXR5cGVuYW1l VHlwZUlkQW5kTW9kKE5VTEwsIGNvbC0+dHlwZU5hbWUsICZlbmRjb2x0eXBpZCwgJmF0dHR5 cG1vZCk7CisKKwkJCQlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soVHlwZVJlbGF0aW9u SWQsIGVuZGNvbHR5cGlkLCBHZXRVc2VySWQoKSwgQUNMX1VTQUdFKTsKKwkJCQlpZiAoYWNs cmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQkJCQlhY2xjaGVja19lcnJvcl90eXBlKGFjbHJl c3VsdCwgZW5kY29sdHlwaWQpOworCisJCQkJZW5kY29sY29sbGF0aW9uID0gR2V0Q29sdW1u RGVmQ29sbGF0aW9uKE5VTEwsIGNvbCwgZW5kY29sdHlwaWQpOworCQkJfQorCisJCQlpKys7 CisJCX0KKworCQkvKiBEaWQgd2UgZmluZCB0aGUgY29sdW1ucz8gKi8KKwkJaWYgKHBlcmlv ZC0+c3RhcnRhdHRudW0gPT0gSW52YWxpZEF0dHJOdW1iZXIpCisJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9DT0xVTU4pLAorCQkJCQkgZXJy bXNnKCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIs CisJCQkJCQkJcGVyaW9kLT5zdGFydGNvbG5hbWUsIHJlbG5hbWUpKSk7CisJCWlmIChwZXJp b2QtPmVuZGF0dG51bSA9PSBJbnZhbGlkQXR0ck51bWJlcikKKwkJCWVyZXBvcnQoRVJST1Is CisJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJCQkJCSBlcnJt c2coImNvbHVtbiBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwK KwkJCQkJCQlwZXJpb2QtPmVuZGNvbG5hbWUsIHJlbG5hbWUpKSk7CisKKwkJLyogQm90aCBj b2x1bW5zIG11c3QgYmUgb2Ygc2FtZSB0eXBlICovCisJCWlmIChzdGFydGNvbHR5cGlkICE9 IGVuZGNvbHR5cGlkKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09E RV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCSBlcnJtc2coInN0YXJ0IGFuZCBlbmQgY29s dW1ucyBvZiBwZXJpb2QgbXVzdCBiZSBvZiBzYW1lIHR5cGUiKSkpOworCisJCS8qIEJvdGgg Y29sdW1ucyBtdXN0IGhhdmUgdGhlIHNhbWUgY29sbGF0aW9uICovCisJCWlmIChzdGFydGNv bGNvbGxhdGlvbiAhPSBlbmRjb2xjb2xsYXRpb24pCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkoZXJyY29kZShFUlJDT0RFX0NPTExBVElPTl9NSVNNQVRDSCksCisJCQkJCSBlcnJtc2co InN0YXJ0IGFuZCBlbmQgY29sdW1ucyBvZiBwZXJpb2QgbXVzdCBoYXZlIHNhbWUgY29sbGF0 aW9uIikpKTsKKworCQlwZXJpb2QtPmNvbHR5cGlkID0gc3RhcnRjb2x0eXBpZDsKKwkJcGVy aW9kLT5ybmd0eXBpZCA9IGNob29zZV9yYW5nZXR5cGVfZm9yX3BlcmlvZChwZXJpb2QpOwor CX0KKworCXJldHVybiBwZXJpb2RzOworfQorCiAvKgogICogTWVyZ2VDaGVja0NvbnN0cmFp bnQKICAqCQlUcnkgdG8gbWVyZ2UgYW4gaW5oZXJpdGVkIENIRUNLIGNvbnN0cmFpbnQgd2l0 aCBwcmV2aW91cyBvbmVzCkBAIC00NDA3LDEyICs0ODgxLDEyIEBAIEFsdGVyVGFibGUoQWx0 ZXJUYWJsZVN0bXQgKnN0bXQsIExPQ0tNT0RFIGxvY2ttb2RlLAogICogZXhpc3RpbmcgcXVl cnkgcGxhbnMuICBPbiB0aGUgYXNzdW1wdGlvbiBpdCdzIG5vdCB1c2VkIGZvciBzdWNoLCB3 ZQogICogZG9uJ3QgaGF2ZSB0byByZWplY3QgcGVuZGluZyBBRlRFUiB0cmlnZ2VycywgZWl0 aGVyLgogICoKLSAqIEFsc28sIHNpbmNlIHdlIGRvbid0IGhhdmUgYW4gQWx0ZXJUYWJsZVV0 aWxpdHlDb250ZXh0LCB0aGlzIGNhbm5vdCBiZQorICogQWxzbywgaWYgeW91IGRvbid0IHBh c3MgYW4gQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0LCB0aGlzIGNhbm5vdCBiZQogICogdXNl ZCBmb3IgYW55IHN1YmNvbW1hbmQgdHlwZXMgdGhhdCByZXF1aXJlIHBhcnNlIHRyYW5zZm9y bWF0aW9uIG9yCiAgKiBjb3VsZCBnZW5lcmF0ZSBzdWJjb21tYW5kcyB0aGF0IGhhdmUgdG8g YmUgcGFzc2VkIHRvIFByb2Nlc3NVdGlsaXR5LgogICovCiB2b2lkCi1BbHRlclRhYmxlSW50 ZXJuYWwoT2lkIHJlbGlkLCBMaXN0ICpjbWRzLCBib29sIHJlY3Vyc2UpCitBbHRlclRhYmxl SW50ZXJuYWwoT2lkIHJlbGlkLCBMaXN0ICpjbWRzLCBib29sIHJlY3Vyc2UsIEFsdGVyVGFi bGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCkKIHsKIAlSZWxhdGlvbglyZWw7CiAJTE9DS01P REUJbG9ja21vZGUgPSBBbHRlclRhYmxlR2V0TG9ja0xldmVsKGNtZHMpOwpAQCAtNDQyMSw3 ICs0ODk1LDcgQEAgQWx0ZXJUYWJsZUludGVybmFsKE9pZCByZWxpZCwgTGlzdCAqY21kcywg Ym9vbCByZWN1cnNlKQogCiAJRXZlbnRUcmlnZ2VyQWx0ZXJUYWJsZVJlbGlkKHJlbGlkKTsK IAotCUFUQ29udHJvbGxlcihOVUxMLCByZWwsIGNtZHMsIHJlY3Vyc2UsIGxvY2ttb2RlLCBO VUxMKTsKKwlBVENvbnRyb2xsZXIoTlVMTCwgcmVsLCBjbWRzLCByZWN1cnNlLCBsb2NrbW9k ZSwgY29udGV4dCk7CiB9CiAKIC8qCkBAIC00NTE0LDYgKzQ5ODgsOCBAQCBBbHRlclRhYmxl R2V0TG9ja0xldmVsKExpc3QgKmNtZHMpCiAJCQljYXNlIEFUX0VuYWJsZVJlcGxpY2FSdWxl OgkvKiBtYXkgY2hhbmdlIFNFTEVDVCBydWxlcyAqLwogCQkJY2FzZSBBVF9FbmFibGVSdWxl OiAvKiBtYXkgY2hhbmdlIFNFTEVDVCBydWxlcyAqLwogCQkJY2FzZSBBVF9EaXNhYmxlUnVs ZToJLyogbWF5IGNoYW5nZSBTRUxFQ1QgcnVsZXMgKi8KKwkJCWNhc2UgQVRfQWRkUGVyaW9k OiAvKiBzaGFyZXMgbmFtZXNwYWNlIHdpdGggY29sdW1ucywgYWRkcyBjb25zdHJhaW50ICov CisJCQljYXNlIEFUX0Ryb3BQZXJpb2Q6CiAJCQkJY21kX2xvY2ttb2RlID0gQWNjZXNzRXhj bHVzaXZlTG9jazsKIAkJCQlicmVhazsKIApAQCAtNDgyOSw2ICs1MzA1LDE0IEBAIEFUUHJl cENtZChMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwsIEFsdGVyVGFibGVDbWQgKmNtZCwK IAkJCS8qIFRoaXMgY29tbWFuZCBuZXZlciByZWN1cnNlcyAqLwogCQkJcGFzcyA9IEFUX1BB U1NfQUREX09USEVSQ09OU1RSOwogCQkJYnJlYWs7CisJCWNhc2UgQVRfQWRkUGVyaW9kOiAv KiBBTFRFUiBUQUJMRSAuLi4gQUREIFBFUklPRCBGT1IgbmFtZSAoc3RhcnQsIGVuZCkgKi8K KwkJCUFUU2ltcGxlUGVybWlzc2lvbnMoY21kLT5zdWJ0eXBlLCByZWwsIEFUVF9UQUJMRSk7 CisJCQlwYXNzID0gQVRfUEFTU19BRERfUEVSSU9EOworCQkJYnJlYWs7CisJCWNhc2UgQVRf RHJvcFBlcmlvZDogLyogQUxURVIgVEFCTEUgLi4uIERST1AgUEVSSU9EIEZPUiBuYW1lICov CisJCQlBVFNpbXBsZVBlcm1pc3Npb25zKGNtZC0+c3VidHlwZSwgcmVsLCBBVFRfVEFCTEUp OworCQkJcGFzcyA9IEFUX1BBU1NfRFJPUDsKKwkJCWJyZWFrOwogCQljYXNlIEFUX0FkZElk ZW50aXR5OgogCQkJQVRTaW1wbGVQZXJtaXNzaW9ucyhjbWQtPnN1YnR5cGUsIHJlbCwgQVRU X1RBQkxFIHwgQVRUX1ZJRVcgfCBBVFRfRk9SRUlHTl9UQUJMRSk7CiAJCQkvKiBUaGlzIGNv bW1hbmQgbmV2ZXIgcmVjdXJzZXMgKi8KQEAgLTUyMjUsNiArNTcwOSwxNCBAQCBBVEV4ZWND bWQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAogCQljYXNlIEFUX0Nv b2tlZENvbHVtbkRlZmF1bHQ6CS8qIGFkZCBhIHByZS1jb29rZWQgZGVmYXVsdCAqLwogCQkJ YWRkcmVzcyA9IEFURXhlY0Nvb2tlZENvbHVtbkRlZmF1bHQocmVsLCBjbWQtPm51bSwgY21k LT5kZWYpOwogCQkJYnJlYWs7CisJCWNhc2UgQVRfQWRkUGVyaW9kOgorCQkJYWRkcmVzcyA9 IEFURXhlY0FkZFBlcmlvZChyZWwsIChQZXJpb2REZWYgKikgY21kLT5kZWYsIGNvbnRleHQp OworCQkJYnJlYWs7CisJCWNhc2UgQVRfRHJvcFBlcmlvZDoKKwkJCUFURXhlY0Ryb3BQZXJp b2QocmVsLCBjbWQtPm5hbWUsIGNtZC0+YmVoYXZpb3IsCisJCQkJCQkJCSBmYWxzZSwgZmFs c2UsCisJCQkJCQkJCSBjbWQtPm1pc3Npbmdfb2spOworCQkJYnJlYWs7CiAJCWNhc2UgQVRf QWRkSWRlbnRpdHk6CiAJCQljbWQgPSBBVFBhcnNlVHJhbnNmb3JtQ21kKHdxdWV1ZSwgdGFi LCByZWwsIGNtZCwgZmFsc2UsIGxvY2ttb2RlLAogCQkJCQkJCQkJICBjdXJfcGFzcywgY29u dGV4dCk7CkBAIC02MzY5LDYgKzY4NjEsOCBAQCBhbHRlcl90YWJsZV90eXBlX3RvX3N0cmlu ZyhBbHRlclRhYmxlVHlwZSBjbWR0eXBlKQogCQljYXNlIEFUX0FkZENvbHVtbjoKIAkJY2Fz ZSBBVF9BZGRDb2x1bW5Ub1ZpZXc6CiAJCQlyZXR1cm4gIkFERCBDT0xVTU4iOworCQljYXNl IEFUX0FkZFBlcmlvZDoKKwkJCXJldHVybiAiQUREIFBFUklPRCI7CiAJCWNhc2UgQVRfQ29s dW1uRGVmYXVsdDoKIAkJY2FzZSBBVF9Db29rZWRDb2x1bW5EZWZhdWx0OgogCQkJcmV0dXJu ICJBTFRFUiBDT0xVTU4gLi4uIFNFVCBERUZBVUxUIjsKQEAgLTYzOTIsNiArNjg4Niw4IEBA IGFsdGVyX3RhYmxlX3R5cGVfdG9fc3RyaW5nKEFsdGVyVGFibGVUeXBlIGNtZHR5cGUpCiAJ CQlyZXR1cm4gIkFMVEVSIENPTFVNTiAuLi4gU0VUIENPTVBSRVNTSU9OIjsKIAkJY2FzZSBB VF9Ecm9wQ29sdW1uOgogCQkJcmV0dXJuICJEUk9QIENPTFVNTiI7CisJCWNhc2UgQVRfRHJv cFBlcmlvZDoKKwkJCXJldHVybiAiRFJPUCBQRVJJT0QiOwogCQljYXNlIEFUX0FkZEluZGV4 OgogCQljYXNlIEFUX1JlQWRkSW5kZXg6CiAJCQlyZXR1cm4gTlVMTDsJCS8qIG5vdCByZWFs IGdyYW1tYXIgKi8KQEAgLTczOTcsMTQgKzc4OTMsMjkgQEAgQVRFeGVjQWRkQ29sdW1uKExp c3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogLyoK ICAqIElmIGEgbmV3IG9yIHJlbmFtZWQgY29sdW1uIHdpbGwgY29sbGlkZSB3aXRoIHRoZSBu YW1lIG9mIGFuIGV4aXN0aW5nCiAgKiBjb2x1bW4gYW5kIGlmX25vdF9leGlzdHMgaXMgZmFs c2UgdGhlbiBlcnJvciBvdXQsIGVsc2UgZG8gbm90aGluZy4KKyAqCisgKiBTZWUgYWxzbyBj aGVja19mb3JfcGVyaW9kX25hbWVfY29sbGlzaW9uLgogICovCiBzdGF0aWMgYm9vbAogY2hl Y2tfZm9yX2NvbHVtbl9uYW1lX2NvbGxpc2lvbihSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIg KmNvbG5hbWUsCiAJCQkJCQkJCWJvb2wgaWZfbm90X2V4aXN0cykKIHsKLQlIZWFwVHVwbGUJ YXR0VHVwbGU7CisJSGVhcFR1cGxlCWF0dFR1cGxlLCBwZXJUdXBsZTsKIAlpbnQJCQlhdHRu dW07CiAKKwkvKiBJZiB0aGUgbmFtZSBleGlzdHMgYXMgYSBwZXJpb2QsIHdlJ3JlIGRvbmUu ICovCisJcGVyVHVwbGUgPSBTZWFyY2hTeXNDYWNoZTIoUEVSSU9ETkFNRSwKKwkJCQkJCQkg ICBPYmplY3RJZEdldERhdHVtKFJlbGF0aW9uR2V0UmVsaWQocmVsKSksCisJCQkJCQkJICAg UG9pbnRlckdldERhdHVtKGNvbG5hbWUpKTsKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZChwZXJU dXBsZSkpCisJeworCQlSZWxlYXNlU3lzQ2FjaGUocGVyVHVwbGUpOworCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX0NPTFVNTiksCisJCQkJIGVy cm1zZygiY29sdW1uIG5hbWUgXCIlc1wiIGNvbmZsaWN0cyB3aXRoIGEgcGVyaW9kIG5hbWUi LAorCQkJCQkJY29sbmFtZSkpKTsKKwl9CisKIAkvKgogCSAqIHRoaXMgdGVzdCBpcyBkZWxp YmVyYXRlbHkgbm90IGF0dGlzZHJvcHBlZC1hd2FyZSwgc2luY2UgaWYgb25lIHRyaWVzIHRv CiAJICogYWRkIGEgY29sdW1uIG1hdGNoaW5nIGEgZHJvcHBlZCBjb2x1bW4gbmFtZSwgaXQn cyBnb25uYSBmYWlsIGFueXdheS4KQEAgLTc0NDgsNiArNzk1OSw3NiBAQCBjaGVja19mb3Jf Y29sdW1uX25hbWVfY29sbGlzaW9uKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sbmFt ZSwKIAlyZXR1cm4gdHJ1ZTsKIH0KIAorLyoKKyAqIElmIGEgbmV3IHBlcmlvZCBuYW1lIHdp bGwgY29sbGlkZSB3aXRoIHRoZSBuYW1lIG9mIGFuIGV4aXN0aW5nIGNvbHVtbiBvcgorICog cGVyaW9kIFthbmQgaWZfbm90X2V4aXN0cyBpcyBmYWxzZV0gdGhlbiBlcnJvciBvdXQsIGVs c2UgZG8gbm90aGluZy4KKyAqCisgKiBTZWUgYWxzbyBjaGVja19mb3JfY29sdW1uX25hbWVf Y29sbGlzaW9uLgorICovCitzdGF0aWMgYm9vbAorY2hlY2tfZm9yX3BlcmlvZF9uYW1lX2Nv bGxpc2lvbihSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKnBlcm5hbWUsCisJCQkJCQkJCWJv b2wgaWZfbm90X2V4aXN0cykKK3sKKwlIZWFwVHVwbGUJYXR0VHVwbGUsIHBlclR1cGxlOwor CWludAkJCWF0dG51bTsKKworCS8qIFRPRE86IGltcGxlbWVudCBJRiBbTk9UXSBFWElTVFMg Zm9yIHBlcmlvZHMgKi8KKwlBc3NlcnQoIWlmX25vdF9leGlzdHMpOworCisJLyogSWYgdGhl cmUgaXMgYWxyZWFkeSBhIHBlcmlvZCB3aXRoIHRoaXMgbmFtZSwgdGhlbiB3ZSdyZSBkb25l LiAqLworCXBlclR1cGxlID0gU2VhcmNoU3lzQ2FjaGUyKFBFUklPRE5BTUUsCisJCQkJCQkJ ICAgT2JqZWN0SWRHZXREYXR1bShSZWxhdGlvbkdldFJlbGlkKHJlbCkpLAorCQkJCQkJCSAg IFBvaW50ZXJHZXREYXR1bShwZXJuYW1lKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQocGVy VHVwbGUpKQorCXsKKwkJaWYgKGlmX25vdF9leGlzdHMpCisJCXsKKwkJCVJlbGVhc2VTeXND YWNoZShwZXJUdXBsZSk7CisKKwkJCWVyZXBvcnQoTk9USUNFLAorCQkJCQkoZXJyY29kZShF UlJDT0RFX0RVUExJQ0FURV9DT0xVTU4pLAorCQkJCQkgZXJybXNnKCJwZXJpb2QgXCIlc1wi IG9mIHJlbGF0aW9uIFwiJXNcIiBhbHJlYWR5IGV4aXN0cywgc2tpcHBpbmciLAorCQkJCQkJ CXBlcm5hbWUsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisJCQlyZXR1cm4g ZmFsc2U7CisJCX0KKworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf RFVQTElDQVRFX0NPTFVNTiksCisJCQkJIGVycm1zZygicGVyaW9kIFwiJXNcIiBvZiByZWxh dGlvbiBcIiVzXCIgYWxyZWFkeSBleGlzdHMiLAorCQkJCQkJcGVybmFtZSwgUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKKwl9CisKKwkvKgorCSAqIHRoaXMgdGVzdCBpcyBk ZWxpYmVyYXRlbHkgbm90IGF0dGlzZHJvcHBlZC1hd2FyZSwgc2luY2UgaWYgb25lIHRyaWVz IHRvCisJICogYWRkIGEgY29sdW1uIG1hdGNoaW5nIGEgZHJvcHBlZCBjb2x1bW4gbmFtZSwg aXQncyBnb25uYSBmYWlsIGFueXdheS4KKwkgKi8KKwlhdHRUdXBsZSA9IFNlYXJjaFN5c0Nh Y2hlMihBVFROQU1FLAorCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0oUmVsYXRpb25HZXRS ZWxpZChyZWwpKSwKKwkJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0ocGVybmFtZSkpOworCWlm IChIZWFwVHVwbGVJc1ZhbGlkKGF0dFR1cGxlKSkKKwl7CisJCWF0dG51bSA9ICgoRm9ybV9w Z19hdHRyaWJ1dGUpIEdFVFNUUlVDVChhdHRUdXBsZSkpLT5hdHRudW07CisJCVJlbGVhc2VT eXNDYWNoZShhdHRUdXBsZSk7CisKKwkJLyoKKwkJICogV2UgdGhyb3cgYSBkaWZmZXJlbnQg ZXJyb3IgbWVzc2FnZSBmb3IgY29uZmxpY3RzIHdpdGggc3lzdGVtIGNvbHVtbgorCQkgKiBu YW1lcywgc2luY2UgdGhleSBhcmUgbm9ybWFsbHkgbm90IHNob3duIGFuZCB0aGUgdXNlciBt aWdodCBvdGhlcndpc2UKKwkJICogYmUgY29uZnVzZWQgYWJvdXQgdGhlIHJlYXNvbiBmb3Ig dGhlIGNvbmZsaWN0LgorCQkgKi8KKwkJaWYgKGF0dG51bSA8PSAwKQorCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfQ09MVU1OKSwKKwkJCQkJ IGVycm1zZygicGVyaW9kIG5hbWUgXCIlc1wiIGNvbmZsaWN0cyB3aXRoIGEgc3lzdGVtIGNv bHVtbiBuYW1lIiwKKwkJCQkJCQlwZXJuYW1lKSkpOworCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX0NPTFVNTiksCisJCQkJIGVycm1zZygicGVy aW9kIG5hbWUgXCIlc1wiIGNvbmZsaWN0cyB3aXRoIGEgY29sdW1uIG5hbWUiLAorCQkJCQkJ cGVybmFtZSkpKTsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwogLyoKICAqIEluc3RhbGwg YSBjb2x1bW4ncyBkZXBlbmRlbmN5IG9uIGl0cyBkYXRhdHlwZS4KICAqLwpAQCAtODA5OCw2 ICs4Njc5LDE1NSBAQCBBVEV4ZWNDb29rZWRDb2x1bW5EZWZhdWx0KFJlbGF0aW9uIHJlbCwg QXR0ck51bWJlciBhdHRudW0sCiAJcmV0dXJuIGFkZHJlc3M7CiB9CiAKKy8qCisgKiBBTFRF UiBUQUJMRSBBREQgUEVSSU9ECisgKgorICogUmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBw ZXJpb2QuCisgKi8KK3N0YXRpYyBPYmplY3RBZGRyZXNzCitBVEV4ZWNBZGRQZXJpb2QoUmVs YXRpb24gcmVsLCBQZXJpb2REZWYgKnBlcmlvZCwgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0 ICpjb250ZXh0KQoreworCVJlbGF0aW9uCQlhdHRyZWxhdGlvbjsKKwlPYmplY3RBZGRyZXNz CWFkZHJlc3MgPSBJbnZhbGlkT2JqZWN0QWRkcmVzczsKKwlDb25zdHJhaW50CSAgICpjb25z dHI7CisJQ29sdW1uRGVmCSAgICpyYW5nZWNvbDsKKwlPaWQJCQkJY29ub2lkLCBwZXJpb2Rv aWQ7CisJTGlzdAkJICAgKmNtZHMgPSBOSUw7CisJQWx0ZXJUYWJsZUNtZCAgKmNtZDsKKwor CS8qCisJICogUEVSSU9EIEZPUiBTWVNURU1fVElNRSBpcyBub3QgeWV0IGltcGxlbWVudGVk LCBidXQgbWFrZSBzdXJlIG5vIG9uZSB1c2VzCisJICogdGhlIG5hbWUuCisJICovCisJaWYg KHN0cmNtcChwZXJpb2QtPnBlcmlvZG5hbWUsICJzeXN0ZW1fdGltZSIpID09IDApCisJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBP UlRFRCksCisJCQkJCSBlcnJtc2coIlBFUklPRCBGT1IgU1lTVEVNX1RJTUUgaXMgbm90IHN1 cHBvcnRlZCIpKSk7CisKKwkvKiBUaGUgcGVyaW9kIG5hbWUgbXVzdCBub3QgYWxyZWFkeSBl eGlzdCAqLworCSh2b2lkKSBjaGVja19mb3JfcGVyaW9kX25hbWVfY29sbGlzaW9uKHJlbCwg cGVyaW9kLT5wZXJpb2RuYW1lLCBmYWxzZSk7CisKKwkvKiBQYXJzZSBvcHRpb25zICovCisJ dHJhbnNmb3JtUGVyaW9kT3B0aW9ucyhwZXJpb2QpOworCisJYXR0cmVsYXRpb24gPSB0YWJs ZV9vcGVuKEF0dHJpYnV0ZVJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCVZhbGlk YXRlUGVyaW9kKHJlbCwgcGVyaW9kKTsKKworCXBlcmlvZC0+cm5ndHlwaWQgPSBjaG9vc2Vf cmFuZ2V0eXBlX2Zvcl9wZXJpb2QocGVyaW9kKTsKKworCS8qIE1ha2UgdGhlIENIRUNLIGNv bnN0cmFpbnQgKi8KKwljb25zdHIgPSBtYWtlX2NvbnN0cmFpbnRfZm9yX3BlcmlvZChyZWws IHBlcmlvZCk7CisJY21kID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJY21kLT5zdWJ0 eXBlID0gQVRfQWRkQ29uc3RyYWludDsKKwljbWQtPmRlZiA9IChOb2RlICopIGNvbnN0cjsK KwljbWRzID0gbGFwcGVuZChjbWRzLCBjbWQpOworCUFsdGVyVGFibGVJbnRlcm5hbChSZWxh dGlvbkdldFJlbGlkKHJlbCksIGNtZHMsIHRydWUsIGNvbnRleHQpOworCWNvbm9pZCA9IGdl dF9yZWxhdGlvbl9jb25zdHJhaW50X29pZChSZWxhdGlvbkdldFJlbGlkKHJlbCksIHBlcmlv ZC0+Y29uc3RyYWludG5hbWUsIGZhbHNlKTsKKworCS8qIE1ha2UgdGhlIHJhbmdlIGNvbHVt biAqLworCXJhbmdlY29sID0gbWFrZV9yYW5nZV9jb2x1bW5fZm9yX3BlcmlvZChwZXJpb2Qp OworCWNtZCA9IG1ha2VOb2RlKEFsdGVyVGFibGVDbWQpOworCWNtZC0+c3VidHlwZSA9IEFU X0FkZENvbHVtbjsKKwljbWQtPmRlZiA9IChOb2RlICopIHJhbmdlY29sOworCWNtZC0+bmFt ZSA9IHBlcmlvZC0+cGVyaW9kbmFtZTsKKwljbWQtPnJlY3Vyc2UgPSBmYWxzZTsgLyogbm8s IGxldCB0aGUgUEVSSU9EIHJlY3Vyc2UgaW5zdGVhZCAqLworCUFsdGVyVGFibGVJbnRlcm5h bChSZWxhdGlvbkdldFJlbGlkKHJlbCksIGxpc3RfbWFrZTEoY21kKSwgdHJ1ZSwgY29udGV4 dCk7CisJcGVyaW9kLT5ybmdhdHRudW0gPSBnZXRfYXR0bnVtKFJlbGF0aW9uR2V0UmVsaWQo cmVsKSwgcGVyaW9kLT5wZXJpb2RuYW1lKTsKKwlpZiAocGVyaW9kLT5ybmdhdHRudW0gPT0g SW52YWxpZEF0dHJOdW1iZXIpCisJCWVsb2coRVJST1IsICJtaXNzaW5nIGF0dHJpYnV0ZSAl cyIsIHBlcmlvZC0+cGVyaW9kbmFtZSk7CisKKwkvKiBTYXZlIHRoZSBQZXJpb2QgKi8KKwlw ZXJpb2RvaWQgPSBTdG9yZVBlcmlvZChyZWwsIHBlcmlvZC0+cGVyaW9kbmFtZSwgcGVyaW9k LT5zdGFydGF0dG51bSwgcGVyaW9kLT5lbmRhdHRudW0sIHBlcmlvZC0+cm5nYXR0bnVtLCBj b25vaWQpOworCisJT2JqZWN0QWRkcmVzc1NldChhZGRyZXNzLCBQZXJpb2RSZWxhdGlvbklk LCBwZXJpb2RvaWQpOworCisJdGFibGVfY2xvc2UoYXR0cmVsYXRpb24sIFJvd0V4Y2x1c2l2 ZUxvY2spOworCisJcmV0dXJuIGFkZHJlc3M7Cit9CisKKy8qCisgKiBBTFRFUiBUQUJMRSBE Uk9QIFBFUklPRAorICoKKyAqIExpa2UgRFJPUCBDT0xVTU4sIHdlIGNhbid0IHVzZSB0aGUg bm9ybWFsIEFMVEVSIFRBQkxFIHJlY3Vyc2lvbiBtZWNoYW5pc20uCisgKi8KK3N0YXRpYyB2 b2lkCitBVEV4ZWNEcm9wUGVyaW9kKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqcGVyaW9k TmFtZSwKKwkJCQkJIERyb3BCZWhhdmlvciBiZWhhdmlvciwKKwkJCQkJIGJvb2wgcmVjdXJz ZSwgYm9vbCByZWN1cnNpbmcsCisJCQkJCSBib29sIG1pc3Npbmdfb2spCit7CisJUmVsYXRp b24JcGdfcGVyaW9kOworCUZvcm1fcGdfcGVyaW9kIHBlcmlvZDsKKwlTeXNTY2FuRGVzYyBz Y2FuOworCVNjYW5LZXlEYXRhIGtleTsKKwlIZWFwVHVwbGUJdHVwbGU7CisJYm9vbAkJZm91 bmQgPSBmYWxzZTsKKworCS8qIEF0IHRvcCBsZXZlbCwgcGVybWlzc2lvbiBjaGVjayB3YXMg ZG9uZSBpbiBBVFByZXBDbWQsIGVsc2UgZG8gaXQgKi8KKwlpZiAocmVjdXJzaW5nKQorCQlB VFNpbXBsZVBlcm1pc3Npb25zKEFUX0Ryb3BQZXJpb2QsIHJlbCwgQVRUX1RBQkxFKTsKKwor CXBnX3BlcmlvZCA9IHRhYmxlX29wZW4oUGVyaW9kUmVsYXRpb25JZCwgUm93RXhjbHVzaXZl TG9jayk7CisKKwkvKgorCSAqIEZpbmQgYW5kIGRyb3AgdGhlIHRhcmdldCBwZXJpb2QKKwkg Ki8KKwlTY2FuS2V5SW5pdCgma2V5LAorCQkJCUFudW1fcGdfcGVyaW9kX3BlcnJlbGlkLAor CQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERh dHVtKFJlbGF0aW9uR2V0UmVsaWQocmVsKSkpOworCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNj YW4ocGdfcGVyaW9kLCBQZXJpb2RSZWxpZE5hbWVJbmRleElkLAorCQkJCQkJCSAgdHJ1ZSwg TlVMTCwgMSwgJmtleSk7CisKKwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSA9IHN5 c3RhYmxlX2dldG5leHQoc2NhbikpKQorCXsKKwkJT2JqZWN0QWRkcmVzcyBwZXJvYmo7CisK KwkJcGVyaW9kID0gKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QodHVwbGUpOworCisJCWlm IChzdHJjbXAoTmFtZVN0cihwZXJpb2QtPnBlcm5hbWUpLCBwZXJpb2ROYW1lKSAhPSAwKQor CQkJY29udGludWU7CisKKwkJLyoKKwkJICogUGVyZm9ybSB0aGUgYWN0dWFsIHBlcmlvZCBk ZWxldGlvbgorCQkgKi8KKwkJcGVyb2JqLmNsYXNzSWQgPSBQZXJpb2RSZWxhdGlvbklkOwor CQlwZXJvYmoub2JqZWN0SWQgPSBwZXJpb2QtPm9pZDsKKwkJcGVyb2JqLm9iamVjdFN1Yklk ID0gMDsKKworCQlwZXJmb3JtRGVsZXRpb24oJnBlcm9iaiwgYmVoYXZpb3IsIDApOworCisJ CWZvdW5kID0gdHJ1ZTsKKworCQkvKiBwZXJpb2QgZm91bmQgYW5kIGRyb3BwZWQgLS0gbm8g bmVlZCB0byBrZWVwIGxvb3BpbmcgKi8KKwkJYnJlYWs7CisJfQorCisJc3lzdGFibGVfZW5k c2NhbihzY2FuKTsKKworCWlmICghZm91bmQpCisJeworCQlpZiAoIW1pc3Npbmdfb2spCisJ CXsKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVE X09CSkVDVCksCisJCQkJCSBlcnJtc2coInBlcmlvZCBcIiVzXCIgb24gcmVsYXRpb24gXCIl c1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCQlwZXJpb2ROYW1lLCBSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShyZWwpKSkpOworCQl9CisJCWVsc2UKKwkJeworCQkJZXJlcG9ydChOT1RJ Q0UsCisJCQkJCShlcnJtc2coInBlcmlvZCBcIiVzXCIgb24gcmVsYXRpb24gXCIlc1wiIGRv ZXMgbm90IGV4aXN0LCBza2lwcGluZyIsCisJCQkJCQkJcGVyaW9kTmFtZSwgUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKKwkJCXRhYmxlX2Nsb3NlKHBnX3BlcmlvZCwgUm93 RXhjbHVzaXZlTG9jayk7CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwl0YWJsZV9jbG9zZShw Z19wZXJpb2QsIFJvd0V4Y2x1c2l2ZUxvY2spOworfQorCiAvKgogICogQUxURVIgVEFCTEUg QUxURVIgQ09MVU1OIEFERCBJREVOVElUWQogICoKQEAgLTEzNzAzLDYgKzE0NDMzLDE1IEBA IEFURXhlY0FsdGVyQ29sdW1uVHlwZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9u IHJlbCwKIAkJCQlSZW1lbWJlckNvbnN0cmFpbnRGb3JSZWJ1aWxkaW5nKGZvdW5kT2JqZWN0 Lm9iamVjdElkLCB0YWIpOwogCQkJCWJyZWFrOwogCisJCQljYXNlIE9DTEFTU19QRVJJT0Q6 CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9O T1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2coImNhbm5vdCBhbHRlciB0eXBlIG9mIGEg Y29sdW1uIHVzZWQgYnkgYSBwZXJpb2QiKSwKKwkJCQkJCSBlcnJkZXRhaWwoIiVzIGRlcGVu ZHMgb24gY29sdW1uIFwiJXNcIiIsCisJCQkJCQkJCSAgIGdldE9iamVjdERlc2NyaXB0aW9u KCZmb3VuZE9iamVjdCwgZmFsc2UpLAorCQkJCQkJCQkgICBjb2xOYW1lKSkpOworCQkJCWJy ZWFrOworCiAJCQljYXNlIE9DTEFTU19SRVdSSVRFOgogCQkJCS8qIFhYWCBzb21lZGF5IHNl ZSBpZiB3ZSBjYW4gY29wZSB3aXRoIHJldmlzaW5nIHZpZXdzICovCiAJCQkJZXJlcG9ydChF UlJPUiwKQEAgLTE1NzY2LDcgKzE2NTA1LDcgQEAgQWx0ZXJUYWJsZU1vdmVBbGwoQWx0ZXJU YWJsZU1vdmVBbGxTdG10ICpzdG10KQogCiAJCUV2ZW50VHJpZ2dlckFsdGVyVGFibGVTdGFy dCgoTm9kZSAqKSBzdG10KTsKIAkJLyogT0lEIGlzIHNldCBieSBBbHRlclRhYmxlSW50ZXJu YWwgKi8KLQkJQWx0ZXJUYWJsZUludGVybmFsKGxmaXJzdF9vaWQobCksIGNtZHMsIGZhbHNl KTsKKwkJQWx0ZXJUYWJsZUludGVybmFsKGxmaXJzdF9vaWQobCksIGNtZHMsIGZhbHNlLCBO VUxMKTsKIAkJRXZlbnRUcmlnZ2VyQWx0ZXJUYWJsZUVuZCgpOwogCX0KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmlldy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv dmlldy5jCmluZGV4IDliZDc3NTQ2YjkuLmJlNDYzNzI4N2YgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3ZpZXcuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92aWV3 LmMKQEAgLTE2OSw3ICsxNjksNyBAQCBEZWZpbmVWaXJ0dWFsUmVsYXRpb24oUmFuZ2VWYXIg KnJlbGF0aW9uLCBMaXN0ICp0bGlzdCwgYm9vbCByZXBsYWNlLAogCQkJfQogCiAJCQkvKiBF dmVudFRyaWdnZXJBbHRlclRhYmxlU3RhcnQgY2FsbGVkIGJ5IFByb2Nlc3NVdGlsaXR5U2xv dyAqLwotCQkJQWx0ZXJUYWJsZUludGVybmFsKHZpZXdPaWQsIGF0Y21kcywgdHJ1ZSk7CisJ CQlBbHRlclRhYmxlSW50ZXJuYWwodmlld09pZCwgYXRjbWRzLCB0cnVlLCBOVUxMKTsKIAog CQkJLyogTWFrZSB0aGUgbmV3IHZpZXcgY29sdW1ucyB2aXNpYmxlICovCiAJCQlDb21tYW5k Q291bnRlckluY3JlbWVudCgpOwpAQCAtMjAxLDcgKzIwMSw3IEBAIERlZmluZVZpcnR1YWxS ZWxhdGlvbihSYW5nZVZhciAqcmVsYXRpb24sIExpc3QgKnRsaXN0LCBib29sIHJlcGxhY2Us CiAJCWF0Y21kcyA9IGxpc3RfbWFrZTEoYXRjbWQpOwogCiAJCS8qIEV2ZW50VHJpZ2dlckFs dGVyVGFibGVTdGFydCBjYWxsZWQgYnkgUHJvY2Vzc1V0aWxpdHlTbG93ICovCi0JCUFsdGVy VGFibGVJbnRlcm5hbCh2aWV3T2lkLCBhdGNtZHMsIHRydWUpOworCQlBbHRlclRhYmxlSW50 ZXJuYWwodmlld09pZCwgYXRjbWRzLCB0cnVlLCBOVUxMKTsKIAogCQkvKgogCQkgKiBUaGVy ZSBpcyB2ZXJ5IGxpdHRsZSB0byBkbyBoZXJlIHRvIHVwZGF0ZSB0aGUgdmlldydzIGRlcGVu ZGVuY2llcy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jIGIv c3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXggNjJjY2JmOWQzYy4uYTBjMDY5 ZmM1ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKKysrIGIv c3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKQEAgLTE2MzksNiArMTYzOSw5IEBAIGV4 cHJMb2NhdGlvbihjb25zdCBOb2RlICpleHByKQogCQljYXNlIFRfQ29uc3RyYWludDoKIAkJ CWxvYyA9ICgoY29uc3QgQ29uc3RyYWludCAqKSBleHByKS0+bG9jYXRpb247CiAJCQlicmVh azsKKwkJY2FzZSBUX1BlcmlvZERlZjoKKwkJCWxvYyA9ICgoY29uc3QgUGVyaW9kRGVmICop IGV4cHIpLT5sb2NhdGlvbjsKKwkJCWJyZWFrOwogCQljYXNlIFRfRnVuY3Rpb25QYXJhbWV0 ZXI6CiAJCQkvKiBqdXN0IHVzZSB0eXBlbmFtZSdzIGxvY2F0aW9uICovCiAJCQlsb2MgPSBl eHByTG9jYXRpb24oKE5vZGUgKikgKChjb25zdCBGdW5jdGlvblBhcmFtZXRlciAqKSBleHBy KS0+YXJnVHlwZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIv c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBhODkwNGIyNzM2Li45ZTMwMjllNWMy IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKQEAgLTU5NCw3ICs1OTQsNyBAQCBzdGF0aWMgTm9kZSAqbWFr ZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9k ZSAqcXVlcnkpOwogJXR5cGUgPGtleXdvcmQ+IGNvbF9uYW1lX2tleXdvcmQgcmVzZXJ2ZWRf a2V5d29yZAogJXR5cGUgPGtleXdvcmQ+IGJhcmVfbGFiZWxfa2V5d29yZAogCi0ldHlwZSA8 bm9kZT4JVGFibGVDb25zdHJhaW50IFRhYmxlTGlrZUNsYXVzZQorJXR5cGUgPG5vZGU+CVRh YmxlQ29uc3RyYWludCBUYWJsZUxpa2VDbGF1c2UgVGFibGVQZXJpb2QKICV0eXBlIDxpdmFs PglUYWJsZUxpa2VPcHRpb25MaXN0IFRhYmxlTGlrZU9wdGlvbgogJXR5cGUgPHN0cj4JCWNv bHVtbl9jb21wcmVzc2lvbiBvcHRfY29sdW1uX2NvbXByZXNzaW9uIGNvbHVtbl9zdG9yYWdl IG9wdF9jb2x1bW5fc3RvcmFnZQogJXR5cGUgPGxpc3Q+CUNvbFF1YWxMaXN0CkBAIC0yNjE0 LDYgKzI2MTQsMjQgQEAgYWx0ZXJfdGFibGVfY21kOgogCQkJCQluLT5kZWYgPSAoTm9kZSAq KSAkNDsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KKwkJCS8qIEFMVEVSIFRBQkxF IDxuYW1lPiBBREQgUEVSSU9EIEZPUiA8bmFtZT4gKDxuYW1lPiwgPG5hbWU+KSAqLworCQkJ fCBBRERfUCBUYWJsZVBlcmlvZAorCQkJCXsKKwkJCQkJQWx0ZXJUYWJsZUNtZCAqbiA9IG1h a2VOb2RlKEFsdGVyVGFibGVDbWQpOworCQkJCQluLT5zdWJ0eXBlID0gQVRfQWRkUGVyaW9k OworCQkJCQluLT5kZWYgPSAkMjsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJ LyogQUxURVIgVEFCTEUgPG5hbWU+IERST1AgUEVSSU9EIEZPUiA8bmFtZT4gW1JFU1RSSUNU fENBU0NBREVdICovCisJCQl8IERST1AgUEVSSU9EIEZPUiBuYW1lIG9wdF9kcm9wX2JlaGF2 aW9yCisJCQkJeworCQkJCQlBbHRlclRhYmxlQ21kICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJs ZUNtZCk7CisJCQkJCW4tPnN1YnR5cGUgPSBBVF9Ecm9wUGVyaW9kOworCQkJCQluLT5uYW1l ID0gJDQ7CisJCQkJCW4tPmJlaGF2aW9yID0gJDU7CisJCQkJCW4tPm1pc3Npbmdfb2sgPSBm YWxzZTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQogCQkJLyogQUxURVIgVEFCTEUg PG5hbWU+IEFERCBDT05TVFJBSU5UIC4uLiAqLwogCQkJfCBBRERfUCBUYWJsZUNvbnN0cmFp bnQKIAkJCQl7CkBAIC0zNzMzLDggKzM3NTEsMTAgQEAgVGFibGVFbGVtZW50OgogCQkJY29s dW1uRGVmCQkJCQkJCXsgJCQgPSAkMTsgfQogCQkJfCBUYWJsZUxpa2VDbGF1c2UJCQkJCXsg JCQgPSAkMTsgfQogCQkJfCBUYWJsZUNvbnN0cmFpbnQJCQkJCXsgJCQgPSAkMTsgfQorCQkJ fCBUYWJsZVBlcmlvZAkJCQkJCXsgJCQgPSAkMTsgfQogCQk7CiAKKwogVHlwZWRUYWJsZUVs ZW1lbnQ6CiAJCQljb2x1bW5PcHRpb25zCQkJCQkJeyAkJCA9ICQxOyB9CiAJCQl8IFRhYmxl Q29uc3RyYWludAkJCQkJeyAkJCA9ICQxOyB9CkBAIC00MDg2LDYgKzQxMDYsMTkgQEAgVGFi bGVMaWtlT3B0aW9uOgogCQk7CiAKIAorVGFibGVQZXJpb2Q6CisJCQlQRVJJT0QgRk9SIG5h bWUgJygnIG5hbWUgJywnIG5hbWUgJyknIG9wdF9kZWZpbml0aW9uCisJCQkJeworCQkJCQlQ ZXJpb2REZWYgKm4gPSBtYWtlTm9kZShQZXJpb2REZWYpOworCQkJCQluLT5wZXJpb2RuYW1l ID0gJDM7CisJCQkJCW4tPnN0YXJ0Y29sbmFtZSA9ICQ1OworCQkJCQluLT5lbmRjb2xuYW1l ID0gJDc7CisJCQkJCW4tPm9wdGlvbnMgPSAkOTsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsK KwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCiAvKiBDb25zdHJhaW50RWxl bSBzcGVjaWZpZXMgY29uc3RyYWludCBzeW50YXggd2hpY2ggaXMgbm90IGVtYmVkZGVkIGlu dG8KICAqCWEgY29sdW1uIGRlZmluaXRpb24uIENvbENvbnN0cmFpbnRFbGVtIHNwZWNpZmll cyB0aGUgZW1iZWRkZWQgZm9ybS4KICAqIC0gdGhvbWFzIDE5OTctMTItMDMKQEAgLTcxNDQs NiArNzE3NywxNCBAQCBDb21tZW50U3RtdDoKIAkJCQkJbi0+Y29tbWVudCA9ICQ5OwogCQkJ CQkkJCA9IChOb2RlICopIG47CiAJCQkJfQorCQkJfCBDT01NRU5UIE9OIFBFUklPRCBhbnlf bmFtZSBJUyBjb21tZW50X3RleHQKKwkJCQl7CisJCQkJCUNvbW1lbnRTdG10ICpuID0gbWFr ZU5vZGUoQ29tbWVudFN0bXQpOworCQkJCQluLT5vYmp0eXBlID0gT0JKRUNUX1BFUklPRDsK KwkJCQkJbi0+b2JqZWN0ID0gKE5vZGUgKikgJDQ7CisJCQkJCW4tPmNvbW1lbnQgPSAkNjsK KwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KIAkJCXwgQ09NTUVOVCBPTiBMQVJHRV9Q IE9CSkVDVF9QIE51bWVyaWNPbmx5IElTIGNvbW1lbnRfdGV4dAogCQkJCXsKIAkJCQkJQ29t bWVudFN0bXQgKm4gPSBtYWtlTm9kZShDb21tZW50U3RtdCk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9yZWxhdGlvbi5jCmluZGV4IDg2NGVhOWIwZDUuLmZiYmFkZTUxNDAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVk ZSAiYWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9oZWFwLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIK ICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKQEAgLTMxODksNiArMzE5MCw3IEBAIGV4 cGFuZE5TSXRlbUF0dHJzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUGFyc2VOYW1lc3BhY2VJdGVt ICpuc2l0ZW0sCiAJCQkJICBpbnQgc3VibGV2ZWxzX3VwLCBib29sIHJlcXVpcmVfY29sX3By aXZzLCBpbnQgbG9jYXRpb24pCiB7CiAJUmFuZ2VUYmxFbnRyeSAqcnRlID0gbnNpdGVtLT5w X3J0ZTsKKwlCaXRtYXBzZXQgICpwZXJpb2RhdHRzID0gTlVMTDsKIAlSVEVQZXJtaXNzaW9u SW5mbyAqcGVybWluZm8gPSBuc2l0ZW0tPnBfcGVybWluZm87CiAJTGlzdAkgICAqbmFtZXMs CiAJCQkgICAqdmFyczsKQEAgLTMyMTIsMTIgKzMyMTQsMjAgQEAgZXhwYW5kTlNJdGVtQXR0 cnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQYXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRlbSwKIAkJ cGVybWluZm8tPnJlcXVpcmVkUGVybXMgfD0gQUNMX1NFTEVDVDsKIAl9CiAKKwkvKiBHZXQg UEVSSU9EIGNvbHVtbnMgdG8gZXhjbHVkZSAqLworCWlmIChydGUtPnJ0ZWtpbmQgPT0gUlRF X1JFTEFUSU9OKQorCQlwZXJpb2RhdHRzID0gZ2V0X3BlcmlvZF9hdHRub3MocnRlLT5yZWxp ZCk7CisKIAlmb3Jib3RoKG5hbWUsIG5hbWVzLCB2YXIsIHZhcnMpCiAJewogCQljaGFyCSAg ICpsYWJlbCA9IHN0clZhbChsZmlyc3QobmFtZSkpOwogCQlWYXIJCSAgICp2YXJub2RlID0g KFZhciAqKSBsZmlyc3QodmFyKTsKIAkJVGFyZ2V0RW50cnkgKnRlOwogCisJCS8qIElmIHRo aXMgY29sdW1uIGlzIGZyb20gYSBQRVJJT0QsIHNraXAgaXQgKi8KKwkJaWYgKGJtc19pc19t ZW1iZXIocHN0YXRlLT5wX25leHRfcmVzbm8sIHBlcmlvZGF0dHMpKQorCQkJCWNvbnRpbnVl OworCiAJCXRlID0gbWFrZVRhcmdldEVudHJ5KChFeHByICopIHZhcm5vZGUsCiAJCQkJCQkJ IChBdHRyTnVtYmVyKSBwc3RhdGUtPnBfbmV4dF9yZXNubysrLAogCQkJCQkJCSBsYWJlbCwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCmluZGV4IGE1YmI0NWRmMWUuLmMwMmFh MWIwOTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMK KysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpAQCAtMzcsNiArMzcs NyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29uc3RyYWludC5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfb3BjbGFzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BlcmF0b3IuaCIK KyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf c3RhdGlzdGljX2V4dC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1 ZGUgImNvbW1hbmRzL2NvbW1lbnQuaCIKQEAgLTgwLDYgKzgxLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QKIAlib29sCQlpc2ZvcmVpZ247CQkvKiB0cnVlIGlmIENSRUFURS9BTFRFUiBGT1JFSUdO IFRBQkxFICovCiAJYm9vbAkJaXNhbHRlcjsJCS8qIHRydWUgaWYgYWx0ZXJpbmcgZXhpc3Rp bmcgdGFibGUgKi8KIAlMaXN0CSAgICpjb2x1bW5zOwkJLyogQ29sdW1uRGVmIGl0ZW1zICov CisJTGlzdAkgICAqcGVyaW9kczsJCS8qIFBlcmlvZERlZiBpdGVtcyAqLwogCUxpc3QJICAg KmNrY29uc3RyYWludHM7CS8qIENIRUNLIGNvbnN0cmFpbnRzICovCiAJTGlzdAkgICAqbm5j b25zdHJhaW50czsJLyogTk9UIE5VTEwgY29uc3RyYWludHMgKi8KIAlMaXN0CSAgICpma2Nv bnN0cmFpbnRzOwkvKiBGT1JFSUdOIEtFWSBjb25zdHJhaW50cyAqLwpAQCAtMTExLDYgKzEx Myw4IEBAIHR5cGVkZWYgc3RydWN0CiAKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbHVtbkRl ZmluaXRpb24oQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwKIAkJCQkJCQkJCSAgQ29sdW1uRGVm ICpjb2x1bW4pOworc3RhdGljIHZvaWQgdHJhbnNmb3JtVGFibGVQZXJpb2QoQ3JlYXRlU3Rt dENvbnRleHQgKmN4dCwKKwkJCQkJCQkJIFBlcmlvZERlZiAqcGVyaW9kKTsKIHN0YXRpYyB2 b2lkIHRyYW5zZm9ybVRhYmxlQ29uc3RyYWludChDcmVhdGVTdG10Q29udGV4dCAqY3h0LAog CQkJCQkJCQkJIENvbnN0cmFpbnQgKmNvbnN0cmFpbnQpOwogc3RhdGljIHZvaWQgdHJhbnNm b3JtVGFibGVMaWtlQ2xhdXNlKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsCkBAIC0yNDAsNiAr MjQ0LDcgQEAgdHJhbnNmb3JtQ3JlYXRlU3RtdChDcmVhdGVTdG10ICpzdG10LCBjb25zdCBj aGFyICpxdWVyeVN0cmluZykKIAljeHQuaW5oUmVsYXRpb25zID0gc3RtdC0+aW5oUmVsYXRp b25zOwogCWN4dC5pc2FsdGVyID0gZmFsc2U7CiAJY3h0LmNvbHVtbnMgPSBOSUw7CisJY3h0 LnBlcmlvZHMgPSBOSUw7CiAJY3h0LmNrY29uc3RyYWludHMgPSBOSUw7CiAJY3h0Lm5uY29u c3RyYWludHMgPSBOSUw7CiAJY3h0LmZrY29uc3RyYWludHMgPSBOSUw7CkBAIC0yODAsNiAr Mjg1LDEwIEBAIHRyYW5zZm9ybUNyZWF0ZVN0bXQoQ3JlYXRlU3RtdCAqc3RtdCwgY29uc3Qg Y2hhciAqcXVlcnlTdHJpbmcpCiAJCQkJdHJhbnNmb3JtQ29sdW1uRGVmaW5pdGlvbigmY3h0 LCAoQ29sdW1uRGVmICopIGVsZW1lbnQpOwogCQkJCWJyZWFrOwogCisJCQljYXNlIFRfUGVy aW9kRGVmOgorCQkJCXRyYW5zZm9ybVRhYmxlUGVyaW9kKCZjeHQsIChQZXJpb2REZWYgKikg ZWxlbWVudCk7CisJCQkJYnJlYWs7CisKIAkJCWNhc2UgVF9Db25zdHJhaW50OgogCQkJCXRy YW5zZm9ybVRhYmxlQ29uc3RyYWludCgmY3h0LCAoQ29uc3RyYWludCAqKSBlbGVtZW50KTsK IAkJCQlicmVhazsKQEAgLTM0Nyw2ICszNTYsNyBAQCB0cmFuc2Zvcm1DcmVhdGVTdG10KENy ZWF0ZVN0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nKQogCSAqIE91dHB1dCBy ZXN1bHRzLgogCSAqLwogCXN0bXQtPnRhYmxlRWx0cyA9IGN4dC5jb2x1bW5zOworCXN0bXQt PnBlcmlvZHMgPSBjeHQucGVyaW9kczsKIAlzdG10LT5jb25zdHJhaW50cyA9IGN4dC5ja2Nv bnN0cmFpbnRzOwogCXN0bXQtPm5uY29uc3RyYWludHMgPSBjeHQubm5jb25zdHJhaW50czsK IApAQCAtOTEzLDYgKzkyMywxMTMgQEAgdHJhbnNmb3JtQ29sdW1uRGVmaW5pdGlvbihDcmVh dGVTdG10Q29udGV4dCAqY3h0LCBDb2x1bW5EZWYgKmNvbHVtbikKIAl9CiB9CiAKK3ZvaWQK K3RyYW5zZm9ybVBlcmlvZE9wdGlvbnMoUGVyaW9kRGVmICpwZXJpb2QpCit7CisJTGlzdENl bGwgICAqb3B0aW9uOworCURlZkVsZW0JICAgKmRjb25zdHJhaW50bmFtZSA9IE5VTEw7CisJ RGVmRWxlbQkgICAqZHJhbmdldHlwZW5hbWUgPSBOVUxMOworCisJZm9yZWFjaChvcHRpb24s IHBlcmlvZC0+b3B0aW9ucykKKwl7CisJCURlZkVsZW0gICAgKmRlZmVsID0gKERlZkVsZW0g KikgbGZpcnN0KG9wdGlvbik7CisKKwkJaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgImNo ZWNrX2NvbnN0cmFpbnRfbmFtZSIpID09IDApCisJCXsKKwkJCWlmIChkY29uc3RyYWludG5h bWUpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFY X0VSUk9SKSwKKwkJCQkJCSBlcnJtc2coImNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRp b25zIikpKTsKKwkJCWRjb25zdHJhaW50bmFtZSA9IGRlZmVsOworCQl9CisJCWVsc2UgaWYg KHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgInJhbmdldHlwZSIpID09IDApCisJCXsKKwkJCWlm IChkcmFuZ2V0eXBlbmFtZSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUo RVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJIGVycm1zZygiY29uZmxpY3Rpbmcgb3Ig cmVkdW5kYW50IG9wdGlvbnMiKSkpOworCQkJZHJhbmdldHlwZW5hbWUgPSBkZWZlbDsKKwkJ fQorCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZ TlRBWF9FUlJPUiksCisJCQkJCSBlcnJtc2coIm9wdGlvbiBcIiVzXCIgbm90IHJlY29nbml6 ZWQiLCBkZWZlbC0+ZGVmbmFtZSkpKTsKKwl9CisKKwlpZiAoZGNvbnN0cmFpbnRuYW1lICE9 IE5VTEwpCisJCXBlcmlvZC0+Y29uc3RyYWludG5hbWUgPSBkZWZHZXRTdHJpbmcoZGNvbnN0 cmFpbnRuYW1lKTsKKwllbHNlCisJCXBlcmlvZC0+Y29uc3RyYWludG5hbWUgPSBOVUxMOwor CisJaWYgKGRyYW5nZXR5cGVuYW1lICE9IE5VTEwpCisJCXBlcmlvZC0+cmFuZ2V0eXBlbmFt ZSA9IGRlZkdldFN0cmluZyhkcmFuZ2V0eXBlbmFtZSk7CisJZWxzZQorCQlwZXJpb2QtPnJh bmdldHlwZW5hbWUgPSBOVUxMOworfQorCisvKgorICogdHJhbnNmb3JtVGFibGVQZXJpb2QK KyAqCQl0cmFuc2Zvcm0gYSBQZXJpb2REZWYgbm9kZSB3aXRoaW4gQ1JFQVRFIFRBQkxFIG9y IEFMVEVSIFRBQkxFCisgKgkJVE9ETzogRG9lcyBBTFRFUiBUQUJMRSByZWFsbHkgY2FsbCB1 cz8/IEl0IGRvZXNuJ3Qgc2VlbSBsaWtlIGl0IGRvZXMuIE1heWJlIGl0IHNob3VsZC4gRGlk IGl0IGluIFZpaydzIG9yaWdpbmFsIHBhdGNoPworICovCitzdGF0aWMgdm9pZAordHJhbnNm b3JtVGFibGVQZXJpb2QoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGVyaW9kRGVmICpwZXJp b2QpCit7CisJLy8gT2lkCQkJY29sdHlwaWQ7CisJLy8gQ29sdW1uRGVmICAqY29sOworCS8v IExpc3RDZWxsICAgKmNvbHVtbnM7CisKKwlpZiAoc3RyY21wKHBlcmlvZC0+cGVyaW9kbmFt ZSwgInN5c3RlbV90aW1lIikgPT0gMCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJj b2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJIGVycm1zZygiUEVS SU9EIEZPUiBTWVNURU1fVElNRSBpcyBub3Qgc3VwcG9ydGVkIiksCisJCQkJCSBwYXJzZXJf ZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsCisJCQkJCQkJCQkJcGVyaW9kLT5sb2NhdGlvbikp KTsKKworCWlmIChzdHJjbXAocGVyaW9kLT5zdGFydGNvbG5hbWUsIHBlcmlvZC0+ZW5kY29s bmFtZSkgPT0gMCkKKwkJZXJlcG9ydChFUlJPUiwgKGVycm1zZygiY29sdW1uIFwiJXNcIiBj YW4ndCBiZSB0aGUgc3RhcnQgYW5kIGVuZCBjb2x1bW4gZm9yIHBlcmlvZCBcIiVzXCIiLAor CQkJCQkgICAgcGVyaW9kLT5zdGFydGNvbG5hbWUsIHBlcmlvZC0+cGVyaW9kbmFtZSkpKTsK KworCS8qCisJICogRGV0ZXJtaW5lIHRoZSBjb2x1bW4gaW5mbyBhbmQgcmFuZ2UgdHlwZSBz byB0aGF0IHRyYW5zZm9ybUluZGV4Q29uc3RyYWludHMKKwkgKiBrbm93cyBob3cgdG8gY3Jl YXRlIFBSSU1BUlkgS0VZL1VOSVFVRSBjb25zdHJhaW50cyB1c2luZyB0aGlzIFBFUklPRC4K KwkgKi8KKwl0cmFuc2Zvcm1QZXJpb2RPcHRpb25zKHBlcmlvZCk7CisKKwkvKgorCSAqIEZp bmQgYSBzdWl0YWJsZSByYW5nZSB0eXBlIGZvciBvcGVyYXRpb25zIGludm9sdmluZyB0aGlz IHBlcmlvZC4KKwkgKiBVc2UgdGhlIHJhbmdldHlwZSBvcHRpb24gaWYgcHJvdmlkZWQsIG90 aGVyd2lzZSB0cnkgdG8gZmluZCBhCisJICogbm9uLWFtYmlndW91cyBleGlzdGluZyB0eXBl LgorCSAqLworCisjaWZkZWYgYXNkc2RmYQorCS8qIEZpcnN0IGZpbmQgb3V0IHRoZSB0eXBl IG9mIHRoZSBwZXJpb2QncyBjb2x1bW5zICovCisJLy8gVE9ETzogSSdtIGRvaW5nIHRoaXMg aW4gRGVmaW5lUmVsYXRpb24gbm93LAorCS8vIHdoaWNoIHNlZW1zIGxpa2UgYSBiZXR0ZXIg cGxhY2Ugc2luY2UgaXQga25vd3MgYWJvdXQgaW5oZXJpdGVkIGNvbHVtbnMuCisJcGVyaW9k LT5jb2x0eXBpZCA9IEludmFsaWRPaWQ7CisJcGVyaW9kLT5ybmd0eXBpZCA9IEludmFsaWRP aWQ7CisJZm9yZWFjaCAoY29sdW1ucywgY3h0LT5jb2x1bW5zKQorCXsKKwkJY29sID0gKENv bHVtbkRlZiAqKSBsZmlyc3QoY29sdW1ucyk7CisJCWlmIChzdHJjbXAoY29sLT5jb2xuYW1l LCBwZXJpb2QtPnN0YXJ0Y29sbmFtZSkgPT0gMCkKKwkJeworCQkJY29sdHlwaWQgPSB0eXBl bmFtZVR5cGVJZChjeHQtPnBzdGF0ZSwgY29sLT50eXBlTmFtZSk7CisJCQlicmVhazsKKwkJ fQorCX0KKwlpZiAoY29sdHlwaWQgPT0gSW52YWxpZE9pZCkKKwkJZXJlcG9ydChFUlJPUiwg KGVycm1zZygiY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhp c3QiLAorCQkJCQkJcGVyaW9kLT5zdGFydGNvbG5hbWUsIGN4dC0+cmVsYXRpb24tPnJlbG5h bWUpKSk7CisKKwlwZXJpb2QtPmNvbHR5cGlkID0gY29sdHlwaWQ7CisKKwkvKiBOb3cgbWFr ZSBzdXJlIGl0IG1hdGNoZXMgcmFuZ2V0eXBlbmFtZSBvciB3ZSBjYW4gZmluZCBhIG1hdGNo aW5nIHJhbmdlICovCisJcGVyaW9kLT5ybmd0eXBpZCA9IGNob29zZV9yYW5nZXR5cGVfZm9y X3BlcmlvZChwZXJpb2QpOworI2VuZGlmCisKKwljeHQtPnBlcmlvZHMgPSBsYXBwZW5kKGN4 dC0+cGVyaW9kcywgcGVyaW9kKTsKK30KKwogLyoKICAqIHRyYW5zZm9ybVRhYmxlQ29uc3Ry YWludAogICoJCXRyYW5zZm9ybSBhIENvbnN0cmFpbnQgbm9kZSB3aXRoaW4gQ1JFQVRFIFRB QkxFIG9yIEFMVEVSIFRBQkxFCkBAIC0xMDAzLDYgKzExMjAsNyBAQCB0cmFuc2Zvcm1UYWJs ZUxpa2VDbGF1c2UoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgVGFibGVMaWtlQ2xhdXNlICp0 YWJsZV9saWtlX2NsYQogCUF0dHJOdW1iZXIJcGFyZW50X2F0dG5vOwogCVJlbGF0aW9uCXJl bGF0aW9uOwogCVR1cGxlRGVzYwl0dXBsZURlc2M7CisJQml0bWFwc2V0ICAqcGVyaW9kYXR0 czsKIAlBY2xSZXN1bHQJYWNscmVzdWx0OwogCWNoYXIJICAgKmNvbW1lbnQ7CiAJUGFyc2VD YWxsYmFja1N0YXRlIHBjYnN0YXRlOwpAQCAtMTA1NSw2ICsxMTczLDcgQEAgdHJhbnNmb3Jt VGFibGVMaWtlQ2xhdXNlKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFRhYmxlTGlrZUNsYXVz ZSAqdGFibGVfbGlrZV9jbGEKIAl9CiAKIAl0dXBsZURlc2MgPSBSZWxhdGlvbkdldERlc2Ny KHJlbGF0aW9uKTsKKwlwZXJpb2RhdHRzID0gZ2V0X3BlcmlvZF9hdHRub3MoUmVsYXRpb25H ZXRSZWxpZChyZWxhdGlvbikpOwogCiAJLyoKIAkgKiBJbnNlcnQgdGhlIGNvcGllZCBhdHRy aWJ1dGVzIGludG8gdGhlIGN4dCBmb3IgdGhlIG5ldyB0YWJsZSBkZWZpbml0aW9uLgpAQCAt MTA2NCwxMCArMTE4MywxOCBAQCB0cmFuc2Zvcm1UYWJsZUxpa2VDbGF1c2UoQ3JlYXRlU3Rt dENvbnRleHQgKmN4dCwgVGFibGVMaWtlQ2xhdXNlICp0YWJsZV9saWtlX2NsYQogCWZvciAo cGFyZW50X2F0dG5vID0gMTsgcGFyZW50X2F0dG5vIDw9IHR1cGxlRGVzYy0+bmF0dHM7CiAJ CSBwYXJlbnRfYXR0bm8rKykKIAl7Ci0JCUZvcm1fcGdfYXR0cmlidXRlIGF0dHJpYnV0ZSA9 IFR1cGxlRGVzY0F0dHIodHVwbGVEZXNjLAotCQkJCQkJCQkJCQkJCXBhcmVudF9hdHRubyAt IDEpOworCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyaWJ1dGU7CiAJCUNvbHVtbkRlZiAgKmRl ZjsKIAorCQkvKgorCQkgKiBJZiB0aGlzIGNvbHVtbiBpcyBmcm9tIGEgUEVSSU9ELCBza2lw IGl0CisJCSAqIChzaW5jZSBMSUtFIG5ldmVyIGNvcGllcyBQRVJJT0RzKS4KKwkJICovCisJ CWlmIChibXNfaXNfbWVtYmVyKHBhcmVudF9hdHRubywgcGVyaW9kYXR0cykpCisJCQljb250 aW51ZTsKKworCQlhdHRyaWJ1dGUgPSBUdXBsZURlc2NBdHRyKHR1cGxlRGVzYywgcGFyZW50 X2F0dG5vIC0gMSk7CisKIAkJLyoKIAkJICogSWdub3JlIGRyb3BwZWQgY29sdW1ucyBpbiB0 aGUgcGFyZW50LgogCQkgKi8KQEAgLTMwMDgsNiArMzEzNSwxMCBAQCB0cmFuc2Zvcm1JbmRl eFN0bXQoT2lkIHJlbGlkLCBJbmRleFN0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3Ry aW5nKQogCQl9CiAJfQogCisJLyogdGFrZSBjYXJlIG9mIHRoZSBwZXJpb2QgKi8KKwlpZiAo c3RtdC0+cGVyaW9kKQorCQlzdG10LT5wZXJpb2QtPm9pZCA9IGdldF9wZXJpb2Rfb2lkKHJl bGlkLCBzdG10LT5wZXJpb2QtPnBlcmlvZG5hbWUsIGZhbHNlKTsKKwogCS8qCiAJICogQ2hl Y2sgdGhhdCBvbmx5IHRoZSBiYXNlIHJlbCBpcyBtZW50aW9uZWQuICAoVGhpcyBzaG91bGQg YmUgZGVhZCBjb2RlCiAJICogbm93IHRoYXQgYWRkX21pc3NpbmdfZnJvbSBpcyBoaXN0b3J5 LikKQEAgLTM0NjUsNiArMzU5Niw3IEBAIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10KE9pZCBy ZWxpZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQsCiAJY3h0LmluaFJlbGF0aW9ucyA9IE5JTDsK IAljeHQuaXNhbHRlciA9IHRydWU7CiAJY3h0LmNvbHVtbnMgPSBOSUw7CisJY3h0LnBlcmlv ZHMgPSBOSUw7CiAJY3h0LmNrY29uc3RyYWludHMgPSBOSUw7CiAJY3h0Lm5uY29uc3RyYWlu dHMgPSBOSUw7CiAJY3h0LmZrY29uc3RyYWludHMgPSBOSUw7CkBAIC0zNTI3LDYgKzM2NTks MTUgQEAgdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBBbHRlclRhYmxlU3Rt dCAqc3RtdCwKIAkJCQkJCSAoaW50KSBub2RlVGFnKGNtZC0+ZGVmKSk7CiAJCQkJYnJlYWs7 CiAKKwkJCWNhc2UgQVRfQWRkUGVyaW9kOgorCQkJCXsKKwkJCQkJbmV3Y21kcyA9IGxhcHBl bmQobmV3Y21kcywgY21kKTsKKwkJCQkJLy8gV2h5IG5vdCBjYWxsIHRyYW5zZm9ybVRhYmxl UGVyaW9kIGhlcmU/CisJCQkJCS8vIEFoIGJlY2F1c2UgaXQgbG9va3MgYXQgY3h0LT5jb2x1 bW5zCisJCQkJCS8vIGFuZCBpbiBhbiBBTFRFUiBzdGF0ZW1lbnQgdGhlIGNvbHVtbnMgbWln aHQgYWxyZWFkeSBleGlzdCAob3Igbm90KS4KKwkJCQkJYnJlYWs7CisJCQkJfQorCiAJCQlj YXNlIEFUX0FsdGVyQ29sdW1uVHlwZToKIAkJCQl7CiAJCQkJCUNvbHVtbkRlZiAgKmRlZiA9 IGNhc3ROb2RlKENvbHVtbkRlZiwgY21kLT5kZWYpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9s c3lzY2FjaGUuYwppbmRleCBiODgxMzA0MmQwLi4xNDk3OTA2MDUzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9sc3lzY2FjaGUuYwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgImNh dGFsb2cvcGdfbmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGNsYXNzLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGVyYXRvci5oIgorI2luY2x1ZGUgImNhdGFsb2cv cGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19yYW5nZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljLmgi CkBAIC0xMDIxLDYgKzEwMjIsNjggQEAgZ2V0X2F0dG9wdGlvbnMoT2lkIHJlbGlkLCBpbnQx NiBhdHRudW0pCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoJCQkJLS0tLS0tLS0tLSBQR19Q RVJJT0QgQ0FDSEUgLS0tLS0tLS0tLQkJCQkgKi8KKworLyoKKyAqIGdldF9wZXJpb2RuYW1l IC0gZ2l2ZW4gaXRzIE9JRCwgbG9vayB1cCBhIHBlcmlvZAorICoKKyAqIElmIG1pc3Npbmdf b2sgaXMgZmFsc2UsIHRocm93IGFuIGVycm9yIGlmIHRoZSBwZXJpb2QgaXMgbm90IGZvdW5k LgorICogSWYgdHJ1ZSwganVzdCByZXR1cm4gSW52YWxpZE9pZC4KKyAqLworY2hhciAqCitn ZXRfcGVyaW9kbmFtZShPaWQgcGVyaW9kaWQsIGJvb2wgbWlzc2luZ19vaykKK3sKKwlIZWFw VHVwbGUJdHA7CisKKwl0cCA9IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsCisJCQkJCQkg T2JqZWN0SWRHZXREYXR1bShwZXJpb2RpZCkpOworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHRw KSkKKwl7CisJCUZvcm1fcGdfcGVyaW9kIHBlcmlvZF90dXAgPSAoRm9ybV9wZ19wZXJpb2Qp IEdFVFNUUlVDVCh0cCk7CisJCWNoYXIJICAgKnJlc3VsdDsKKworCQlyZXN1bHQgPSBwc3Ry ZHVwKE5hbWVTdHIocGVyaW9kX3R1cC0+cGVybmFtZSkpOworCQlSZWxlYXNlU3lzQ2FjaGUo dHApOworCQlyZXR1cm4gcmVzdWx0OworCX0KKworCWlmICghbWlzc2luZ19vaykKKwkJZWxv ZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHBlcmlvZCAlZCIsCisJCQkgcGVy aW9kaWQpOworCXJldHVybiBOVUxMOworfQorCisvKgorICogZ2V0X3BlcmlvZF9vaWQgLSBn ZXRzIGl0cyByZWxhdGlvbiBhbmQgbmFtZSwgbG9vayB1cCBhIHBlcmlvZAorICoKKyAqIElm IG1pc3Npbmdfb2sgaXMgZmFsc2UsIHRocm93IGFuIGVycm9yIGlmIHRoZSBjYXN0IGlzIG5v dCBmb3VuZC4gIElmCisgKiB0cnVlLCBqdXN0IHJldHVybiBJbnZhbGlkT2lkLgorICovCitP aWQKK2dldF9wZXJpb2Rfb2lkKE9pZCByZWxpZCwgY29uc3QgY2hhciAqcGVyaW9kbmFtZSwg Ym9vbCBtaXNzaW5nX29rKQoreworCUhlYXBUdXBsZQl0cDsKKworCXRwID0gU2VhcmNoU3lz Q2FjaGUyKFBFUklPRE5BTUUsCisJCQkJCQkgT2JqZWN0SWRHZXREYXR1bShyZWxpZCksCisJ CQkJCQkgUG9pbnRlckdldERhdHVtKHBlcmlvZG5hbWUpKTsKKworCWlmIChIZWFwVHVwbGVJ c1ZhbGlkKHRwKSkKKwl7CisJCUZvcm1fcGdfcGVyaW9kIHBlcmlvZF90dXAgPSAoRm9ybV9w Z19wZXJpb2QpIEdFVFNUUlVDVCh0cCk7CisJCU9pZCByZXN1bHQ7CisKKwkJcmVzdWx0ID0g cGVyaW9kX3R1cC0+b2lkOworCQlSZWxlYXNlU3lzQ2FjaGUodHApOworCQlyZXR1cm4gcmVz dWx0OworCX0KKworCWlmICghbWlzc2luZ19vaykKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxv b2t1cCBmYWlsZWQgZm9yIHBlcmlvZCAlcyIsCisJCQkgcGVyaW9kbmFtZSk7CisJcmV0dXJu IEludmFsaWRPaWQ7Cit9CisKIC8qCQkJCS0tLS0tLS0tLS0gUEdfQ0FTVCBDQUNIRSAtLS0t LS0tLS0tCQkJCQkgKi8KIAogLyoKQEAgLTM1NjQsNiArMzYyNywzMCBAQCBnZXRfbXVsdGly YW5nZV9yYW5nZShPaWQgbXVsdGlyYW5nZU9pZCkKIAkJcmV0dXJuIEludmFsaWRPaWQ7CiB9 CiAKK09pZAorZ2V0X3N1YnR5cGVfcmFuZ2UoT2lkIHN1YnR5cGVPaWQpCit7CisJQ2F0Q0xp c3QgKmNhdGxpc3Q7CisJT2lkCXJlc3VsdCA9IEludmFsaWRPaWQ7CisKKwljYXRsaXN0ID0g U2VhcmNoU3lzQ2FjaGVMaXN0MShSQU5HRVNVQlRZUEUsIE9iamVjdElkR2V0RGF0dW0oc3Vi dHlwZU9pZCkpOworCisJaWYgKGNhdGxpc3QtPm5fbWVtYmVycyA9PSAxKQorCXsKKwkJSGVh cFR1cGxlCXR1cGxlID0gJmNhdGxpc3QtPm1lbWJlcnNbMF0tPnR1cGxlOworCQlGb3JtX3Bn X3JhbmdlIHJuZ3R1cCA9IChGb3JtX3BnX3JhbmdlKSBHRVRTVFJVQ1QodHVwbGUpOworCQly ZXN1bHQgPSBybmd0dXAtPnJuZ3R5cGlkOworCQlSZWxlYXNlQ2F0Q2FjaGVMaXN0KGNhdGxp c3QpOworCX0KKwllbHNlIGlmIChjYXRsaXN0LT5uX21lbWJlcnMgPiAxKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5ERVRFUk1JTkFURV9EQVRBVFlQRSks CisJCQkJIGVycm1zZygiYW1iaWd1b3VzIHJhbmdlIGZvciB0eXBlICVzIiwKKwkJCQkJCWZv cm1hdF90eXBlX2JlKHN1YnR5cGVPaWQpKSkpOworCisJcmV0dXJuIHJlc3VsdDsKK30KKwog LyoJCQkJLS0tLS0tLS0tLSBQR19JTkRFWCBDQUNIRSAtLS0tLS0tLS0tCQkJCSAqLwogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hlLmMKaW5kZXggOGRiZGEwMDI0Zi4uNDRl NjM2ZTViZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jCkBAIC00OSw2ICs0 OSw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGZhbWlseS5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfcGFyYW1ldGVyX2FjbC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcGFydGl0 aW9uZWRfdGFibGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1 ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRp b24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZS5oIgpA QCAtNDIyLDYgKzQyMywxOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNhY2hlZGVzYyBjYWNo ZWluZm9bXSA9IHsKIAkJS0VZKEFudW1fcGdfcGFydGl0aW9uZWRfdGFibGVfcGFydHJlbGlk KSwKIAkJMzIKIAl9LAorCVtQRVJJT0ROQU1FXSA9IHsKKwkJUGVyaW9kUmVsYXRpb25JZCwK KwkJUGVyaW9kUmVsaWROYW1lSW5kZXhJZCwKKwkJS0VZKEFudW1fcGdfcGVyaW9kX3BlcnJl bGlkLAorCQkJQW51bV9wZ19wZXJpb2RfcGVybmFtZSksCisJCTMyCisJfSwKKwlbUEVSSU9E T0lEXSA9IHsKKwkJUGVyaW9kUmVsYXRpb25JZCwKKwkJUGVyaW9kT2JqZWN0SW5kZXhJZCwK KwkJS0VZKEFudW1fcGdfcGVyaW9kX29pZCksCisJCTMyCisJfSwKIAlbUFJPQ05BTUVBUkdT TlNQXSA9IHsKIAkJUHJvY2VkdXJlUmVsYXRpb25JZCwKIAkJUHJvY2VkdXJlTmFtZUFyZ3NO c3BJbmRleElkLApAQCAtNDgwLDYgKzQ5NCwxMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNh Y2hlZGVzYyBjYWNoZWluZm9bXSA9IHsKIAkJS0VZKEFudW1fcGdfcmFuZ2Vfcm5nbXVsdGl0 eXBpZCksCiAJCTQKIAl9LAorCVtSQU5HRVNVQlRZUEVdID0geworCQlSYW5nZVJlbGF0aW9u SWQsCisJCVJhbmdlU3ViVHlwaWRUeXBpZEluZGV4SWQsCisJCUtFWShBbnVtX3BnX3Jhbmdl X3JuZ3N1YnR5cGUsCisJCQlBbnVtX3BnX3JhbmdlX3JuZ3R5cGlkKSwKKwkJNAorCX0sCiAJ W1JBTkdFVFlQRV0gPSB7CiAJCVJhbmdlUmVsYXRpb25JZCwKIAkJUmFuZ2VUeXBpZEluZGV4 SWQsCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMg Yi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKaW5kZXggMjU2ZDFlMzVh NC4uMGEyNjk2YzU1OSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9h cmNoaXZlci5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYwpA QCAtMzUxOCw2ICszNTE4LDcgQEAgX2dldE9iamVjdERlc2NyaXB0aW9uKFBRRXhwQnVmZmVy IGJ1ZiwgY29uc3QgVG9jRW50cnkgKnRlKQogCQkJIHN0cmNtcCh0eXBlLCAiREFUQUJBU0Ug UFJPUEVSVElFUyIpID09IDAgfHwKIAkJCSBzdHJjbXAodHlwZSwgIkRFRkFVTFQiKSA9PSAw IHx8CiAJCQkgc3RyY21wKHR5cGUsICJGSyBDT05TVFJBSU5UIikgPT0gMCB8fAorCQkJIHN0 cmNtcCh0eXBlLCAiUEVSSU9EIikgPT0gMCB8fAogCQkJIHN0cmNtcCh0eXBlLCAiSU5ERVgi KSA9PSAwIHx8CiAJCQkgc3RyY21wKHR5cGUsICJSVUxFIikgPT0gMCB8fAogCQkJIHN0cmNt cCh0eXBlLCAiVFJJR0dFUiIpID09IDAgfHwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVt cC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDYzZmM3YzQ4 ODAuLjc3NTM4MzBmN2YgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMK KysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNjM4MSw2ICs2MzgxLDcgQEAg Z2V0VGFibGVzKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVGFibGVzKQogCWludAkJCWlfcmVs dHlwZTsKIAlpbnQJCQlpX3JlbG93bmVyOwogCWludAkJCWlfcmVsY2hlY2tzOworCWludAkJ CWlfbnBlcmlvZDsKIAlpbnQJCQlpX3JlbGhhc2luZGV4OwogCWludAkJCWlfcmVsaGFzcnVs ZXM7CiAJaW50CQkJaV9yZWxwYWdlczsKQEAgLTY0NTgsNiArNjQ1OSwxNCBAQCBnZXRUYWJs ZXMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1UYWJsZXMpCiAJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKHF1ZXJ5LAogCQkJCQkJCSAiYy5yZWxoYXNvaWRzLCAiKTsKIAorCS8qIEluIFBHMTYg dXB3YXJkcyB3ZSBoYXZlIFBFUklPRHMuICovCisJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24g Pj0gMTYwMDAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKKwkJCQkJCQkgIihT RUxFQ1QgY291bnQoKikgRlJPTSBwZ19wZXJpb2QgV0hFUkUgcGVycmVsaWQgPSBjLm9pZCkg QVMgbnBlcmlvZHMsICIpOworCWVsc2UKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnks CisJCQkJCQkJICIwIEFTIG5wZXJpb2RzLCAiKTsKKwogCWlmIChmb3V0LT5yZW1vdGVWZXJz aW9uID49IDkwMzAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkg ImMucmVsaXNwb3B1bGF0ZWQsICIpOwpAQCAtNjU5NSw2ICs2NjA0LDcgQEAgZ2V0VGFibGVz KEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVGFibGVzKQogCWlfcmVsdHlwZSA9IFBRZm51bWJl cihyZXMsICJyZWx0eXBlIik7CiAJaV9yZWxvd25lciA9IFBRZm51bWJlcihyZXMsICJyZWxv d25lciIpOwogCWlfcmVsY2hlY2tzID0gUFFmbnVtYmVyKHJlcywgInJlbGNoZWNrcyIpOwor CWlfbnBlcmlvZCA9IFBRZm51bWJlcihyZXMsICJucGVyaW9kcyIpOwogCWlfcmVsaGFzaW5k ZXggPSBQUWZudW1iZXIocmVzLCAicmVsaGFzaW5kZXgiKTsKIAlpX3JlbGhhc3J1bGVzID0g UFFmbnVtYmVyKHJlcywgInJlbGhhc3J1bGVzIik7CiAJaV9yZWxwYWdlcyA9IFBRZm51bWJl cihyZXMsICJyZWxwYWdlcyIpOwpAQCAtNjY3OCw2ICs2Njg4LDcgQEAgZ2V0VGFibGVzKEFy Y2hpdmUgKmZvdXQsIGludCAqbnVtVGFibGVzKQogCQl9CiAJCXRibGluZm9baV0ucmVsdGFi bGVzcGFjZSA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV9yZWx0YWJsZXNwYWNl KSk7CiAJCXRibGluZm9baV0uaGFzb2lkcyA9IChzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGks IGlfcmVsaGFzb2lkcyksICJ0IikgPT0gMCk7CisJCXRibGluZm9baV0ubnBlcmlvZCA9IGF0 b2koUFFnZXR2YWx1ZShyZXMsIGksIGlfbnBlcmlvZCkpOwogCQl0YmxpbmZvW2ldLmhhc3Ry aWdnZXJzID0gKHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgaV9yZWxoYXN0cmlnZ2Vycyks ICJ0IikgPT0gMCk7CiAJCXRibGluZm9baV0ucmVscGVyc2lzdGVuY2UgPSAqKFBRZ2V0dmFs dWUocmVzLCBpLCBpX3JlbHBlcnNpc3RlbmNlKSk7CiAJCXRibGluZm9baV0ucmVsaXNwb3B1 bGF0ZWQgPSAoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3JlbGlzcG9wdWxhdGVkKSwg InQiKSA9PSAwKTsKQEAgLTg0MTYsNyArODQyNyw3IEBAIGdldFRyYW5zZm9ybXMoQXJjaGl2 ZSAqZm91dCwgaW50ICpudW1UcmFuc2Zvcm1zKQogLyoKICAqIGdldFRhYmxlQXR0cnMgLQog ICoJICBmb3IgZWFjaCBpbnRlcmVzdGluZyB0YWJsZSwgcmVhZCBpbmZvIGFib3V0IGl0cyBh dHRyaWJ1dGVzCi0gKgkgIChuYW1lcywgdHlwZXMsIGRlZmF1bHQgdmFsdWVzLCBDSEVDSyBj b25zdHJhaW50cywgZXRjKQorICoJICAobmFtZXMsIHR5cGVzLCBkZWZhdWx0IHZhbHVlcywg Q0hFQ0sgY29uc3RyYWludHMsIFBFUklPRHMsIGV0YykKICAqCiAgKgltb2RpZmllcyB0Ymxp bmZvCiAgKi8KQEAgLTg0NjksNiArODQ4MCw4IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAq Zm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCWZvciAoaW50IGkg PSAwOyBpIDwgbnVtVGFibGVzOyBpKyspCiAJewogCQlUYWJsZUluZm8gICp0YmluZm8gPSAm dGJsaW5mb1tpXTsKKwkJaW50CQkJbmR1bXBhYmxlY2hlY2tzOwkvKiBudW1iZXIgb2YgQ0hF Q0sgY29uc3RyYWludHMgdGhhdCBkbworCQkJCQkJCQkJCSAgIG5vdCBiZWxvbmcgdG8gYSBw ZXJpb2QgKi8KIAogCQkvKiBEb24ndCBib3RoZXIgdG8gY29sbGVjdCBpbmZvIGZvciBzZXF1 ZW5jZXMgKi8KIAkJaWYgKHRiaW5mby0+cmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNFKQpA QCAtODQ4Myw3ICs4NDk2LDggQEAgZ2V0VGFibGVBdHRycyhBcmNoaXZlICpmb3V0LCBUYWJs ZUluZm8gKnRibGluZm8sIGludCBudW1UYWJsZXMpCiAJCQlhcHBlbmRQUUV4cEJ1ZmZlckNo YXIodGJsb2lkcywgJywnKTsKIAkJYXBwZW5kUFFFeHBCdWZmZXIodGJsb2lkcywgIiV1Iiwg dGJpbmZvLT5kb2JqLmNhdElkLm9pZCk7CiAKLQkJaWYgKHRiaW5mby0+bmNoZWNrID4gMCkK KwkJbmR1bXBhYmxlY2hlY2tzID0gdGJpbmZvLT5uY2hlY2sgLSB0YmluZm8tPm5wZXJpb2Q7 CisJCWlmIChuZHVtcGFibGVjaGVja3MgPiAwKQogCQl7CiAJCQkvKiBBbHNvIG1ha2UgYSBs aXN0IG9mIHRoZSBvbmVzIHdpdGggY2hlY2sgY29uc3RyYWludHMgKi8KIAkJCWlmIChjaGVj a29pZHMtPmxlbiA+IDEpIC8qIGRvIHdlIGhhdmUgbW9yZSB0aGFuIHRoZSAneyc/ICovCkBA IC05MDE5LDE1ICs5MDMzLDM2IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFi bGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQlwZ19sb2dfaW5mbygiZmluZGlu ZyB0YWJsZSBjaGVjayBjb25zdHJhaW50cyIpOwogCiAJCXJlc2V0UFFFeHBCdWZmZXIocSk7 Ci0JCWFwcGVuZFBRRXhwQnVmZmVyKHEsCi0JCQkJCQkgICJTRUxFQ1QgYy50YWJsZW9pZCwg Yy5vaWQsIGNvbnJlbGlkLCBjb25uYW1lLCAiCi0JCQkJCQkgICJwZ19jYXRhbG9nLnBnX2dl dF9jb25zdHJhaW50ZGVmKGMub2lkKSBBUyBjb25zcmMsICIKLQkJCQkJCSAgImNvbmlzbG9j YWwsIGNvbnZhbGlkYXRlZCAiCi0JCQkJCQkgICJGUk9NIHVubmVzdCgnJXMnOjpwZ19jYXRh bG9nLm9pZFtdKSBBUyBzcmModGJsb2lkKVxuIgotCQkJCQkJICAiSk9JTiBwZ19jYXRhbG9n LnBnX2NvbnN0cmFpbnQgYyBPTiAoc3JjLnRibG9pZCA9IGMuY29ucmVsaWQpXG4iCi0JCQkJ CQkgICJXSEVSRSBjb250eXBlID0gJ2MnICIKLQkJCQkJCSAgIk9SREVSIEJZIGMuY29ucmVs aWQsIGMuY29ubmFtZSIsCi0JCQkJCQkgIGNoZWNrb2lkcy0+ZGF0YSk7CisJCWlmIChmb3V0 LT5yZW1vdGVWZXJzaW9uID49IDE2MDAwMCkKKwkJeworCQkJLyoKKwkJCSAqIFBFUklPRHMg d2VyZSBhZGRlZCBpbiB2MTcgYW5kIHdlIGRvbid0IGR1bXAgQ0hFQ0sKKwkJCSAqIGNvbnN0 cmFpbnRzIGZvciB0aGVtLgorCQkJICovCisJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLAorCQkJ CQkJCSAgIlNFTEVDVCBjLnRhYmxlb2lkLCBjLm9pZCwgY29ucmVsaWQsIGNvbm5hbWUsICIK KwkJCQkJCQkgICJwZ19jYXRhbG9nLnBnX2dldF9jb25zdHJhaW50ZGVmKGMub2lkKSBBUyBj b25zcmMsICIKKwkJCQkJCQkgICJjb25pc2xvY2FsLCBjb252YWxpZGF0ZWQgIgorCQkJCQkJ CSAgIkZST00gdW5uZXN0KCclcyc6OnBnX2NhdGFsb2cub2lkW10pIEFTIHNyYyh0YmxvaWQp XG4iCisJCQkJCQkJICAiSk9JTiBwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgYyBPTiAoc3Jj LnRibG9pZCA9IGMuY29ucmVsaWQpXG4iCisJCQkJCQkJICAiV0hFUkUgY29udHlwZSA9ICdj JyAiCisJCQkJCQkJICAiICAgQU5EIE5PVCBFWElTVFMgKFNFTEVDVCBGUk9NIHBnX3Blcmlv ZCAiCisJCQkJCQkJICAiICAgICAgICAgICAgICAgICAgIFdIRVJFIChwZXJyZWxpZCwgcGVy Y29uc3RyYWludCkgPSAoY29ucmVsaWQsIGMub2lkKSkgIgorCQkJCQkJCSAgIk9SREVSIEJZ IGMuY29ucmVsaWQsIGMuY29ubmFtZSIsCisJCQkJCQkJICBjaGVja29pZHMtPmRhdGEpOwor CQl9CisJCWVsc2UKKwkJeworCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwKKwkJCQkJCQkgICJT RUxFQ1QgYy50YWJsZW9pZCwgYy5vaWQsIGNvbnJlbGlkLCBjb25uYW1lLCAiCisJCQkJCQkJ ICAicGdfY2F0YWxvZy5wZ19nZXRfY29uc3RyYWludGRlZihjLm9pZCkgQVMgY29uc3JjLCAi CisJCQkJCQkJICAiY29uaXNsb2NhbCwgY29udmFsaWRhdGVkICIKKwkJCQkJCQkgICJGUk9N IHVubmVzdCgnJXMnOjpwZ19jYXRhbG9nLm9pZFtdKSBBUyBzcmModGJsb2lkKVxuIgorCQkJ CQkJCSAgIkpPSU4gcGdfY2F0YWxvZy5wZ19jb25zdHJhaW50IGMgT04gKHNyYy50YmxvaWQg PSBjLmNvbnJlbGlkKVxuIgorCQkJCQkJCSAgIldIRVJFIGNvbnR5cGUgPSAnYycgIgorCQkJ CQkJCSAgIk9SREVSIEJZIGMuY29ucmVsaWQsIGMuY29ubmFtZSIsCisJCQkJCQkJICBjaGVj a29pZHMtPmRhdGEpOworCQl9CiAKIAkJcmVzID0gRXhlY3V0ZVNxbFF1ZXJ5KGZvdXQsIHEt PmRhdGEsIFBHUkVTX1RVUExFU19PSyk7CiAKQEAgLTkwNDksNiArOTA4NCw3IEBAIGdldFRh YmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFi bGVzKQogCQkJT2lkCQkJY29ucmVsaWQgPSBhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIGosIGlf Y29ucmVsaWQpKTsKIAkJCVRhYmxlSW5mbyAgKnRiaW5mbyA9IE5VTEw7CiAJCQlpbnQJCQlu dW1jb25zOworCQkJaW50CQkJbmR1bXBhYmxlY2hlY2tzOwogCiAJCQkvKiBDb3VudCByb3dz IGZvciB0aGlzIHRhYmxlICovCiAJCQlmb3IgKG51bWNvbnMgPSAxOyBudW1jb25zIDwgbnVt Q29uc3RycyAtIGo7IG51bWNvbnMrKykKQEAgLTkwNjgsMTIgKzkxMDQsMTMgQEAgZ2V0VGFi bGVBdHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBudW1UYWJs ZXMpCiAJCQlpZiAoY3VydGJsaW5keCA+PSBudW1UYWJsZXMpCiAJCQkJcGdfZmF0YWwoInVu cmVjb2duaXplZCB0YWJsZSBPSUQgJXUiLCBjb25yZWxpZCk7CiAKLQkJCWlmIChudW1jb25z ICE9IHRiaW5mby0+bmNoZWNrKQorCQkJbmR1bXBhYmxlY2hlY2tzID0gdGJpbmZvLT5uY2hl Y2sgLSB0YmluZm8tPm5wZXJpb2Q7CisJCQlpZiAobnVtY29ucyAhPSBuZHVtcGFibGVjaGVj a3MpCiAJCQl7CiAJCQkJcGdfbG9nX2Vycm9yKG5nZXR0ZXh0KCJleHBlY3RlZCAlZCBjaGVj ayBjb25zdHJhaW50IG9uIHRhYmxlIFwiJXNcIiBidXQgZm91bmQgJWQiLAogCQkJCQkJCQkJ ICAiZXhwZWN0ZWQgJWQgY2hlY2sgY29uc3RyYWludHMgb24gdGFibGUgXCIlc1wiIGJ1dCBm b3VuZCAlZCIsCi0JCQkJCQkJCQkgIHRiaW5mby0+bmNoZWNrKSwKLQkJCQkJCQkgdGJpbmZv LT5uY2hlY2ssIHRiaW5mby0+ZG9iai5uYW1lLCBudW1jb25zKTsKKwkJCQkJCQkJCSAgbmR1 bXBhYmxlY2hlY2tzKSwKKwkJCQkJCQkgbmR1bXBhYmxlY2hlY2tzLCB0YmluZm8tPmRvYmou bmFtZSwgbnVtY29ucyk7CiAJCQkJcGdfbG9nX2Vycm9yX2hpbnQoIlRoZSBzeXN0ZW0gY2F0 YWxvZ3MgbWlnaHQgYmUgY29ycnVwdGVkLiIpOwogCQkJCWV4aXRfbmljZWx5KDEpOwogCQkJ fQpAQCAtOTEzMiw2ICs5MTY5LDc5IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwg VGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQlQUWNsZWFyKHJlcyk7CiAJ fQogCisJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1UYWJsZXM7IGkrKykKKwl7CisJCVRhYmxl SW5mbyAgKnRiaW5mbyA9ICZ0YmxpbmZvW2ldOworCisJCS8qCisJCSAqIEdldCBpbmZvIGFi b3V0IFBFUklPRCBkZWZpbml0aW9ucworCQkgKi8KKwkJaWYgKHRiaW5mby0+bnBlcmlvZCA+ IDApCisJCXsKKwkJCVBlcmlvZEluZm8gKnBlcmlvZHM7CisJCQlpbnQJCQludW1QZXJpb2Rz OworCQkJaW50CQkJajsKKworCQkJLyogV2Ugc2hvdWxkbid0IGhhdmUgYW55IHBlcmlvZHMg YmVmb3JlIHYxNyAqLworCQkJQXNzZXJ0KGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTYwMDAw KTsKKworCQkJcGdfbG9nX2luZm8oImZpbmRpbmcgcGVyaW9kcyBmb3IgdGFibGUgXCIlcy4l c1wiIiwKKwkJCQkJCXRiaW5mby0+ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFtZSwKKwkJCQkJ CXRiaW5mby0+ZG9iai5uYW1lKTsKKworCQkJcmVzZXRQUUV4cEJ1ZmZlcihxKTsKKwkJCWFw cGVuZFBRRXhwQnVmZmVyKHEsCisJCQkJIlNFTEVDVCBwLnRhYmxlb2lkLCBwLm9pZCwgcC5w ZXJuYW1lLCAiCisJCQkJIiAgICAgICBzYS5hdHRuYW1lIEFTIHBlcnN0YXJ0LCBlYS5hdHRu YW1lIEFTIHBlcmVuZCwgIgorCQkJCSIgICAgICAgci50eXBuYW1lIEFTIHJuZ3R5cGUsICIK KwkJCQkiICAgICAgIGMuY29ubmFtZSBBUyBjb25uYW1lICIKKwkJCQkiRlJPTSBwZ19jYXRh bG9nLnBnX3BlcmlvZCBBUyBwICIKKwkJCQkiSk9JTiBwZ19jYXRhbG9nLnBnX2F0dHJpYnV0 ZSBBUyBzYSBPTiAoc2EuYXR0cmVsaWQsIHNhLmF0dG51bSkgPSAocC5wZXJyZWxpZCwgcC5w ZXJzdGFydCkgIgorCQkJCSJKT0lOIHBnX2NhdGFsb2cucGdfYXR0cmlidXRlIEFTIGVhIE9O IChlYS5hdHRyZWxpZCwgZWEuYXR0bnVtKSA9IChwLnBlcnJlbGlkLCBwLnBlcmVuZCkgIgor CQkJCSJKT0lOIHBnX2NhdGFsb2cucGdfdHlwZSBBUyByIE9OIHIub2lkID0gcC5wZXJybmd0 eXBlICIKKwkJCQkiSk9JTiBwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgQVMgYyBPTiBjLm9p ZCA9IHAucGVyY29uc3RyYWludCAiCisJCQkJIldIRVJFIHAucGVycmVsaWQgPSAnJXUnOjpw Z19jYXRhbG9nLm9pZCAiCisJCQkJIk9SREVSIEJZIHAucGVybmFtZSIsCisJCQkJdGJpbmZv LT5kb2JqLmNhdElkLm9pZCk7CisKKwkJCXJlcyA9IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBx LT5kYXRhLCBQR1JFU19UVVBMRVNfT0spOworCisJCQkvKgorCQkJICogSWYgd2UgZGlkbid0 IGdldCB0aGUgbnVtYmVyIG9mIHJvd3Mgd2UgdGhvdWdodCB3ZSB3ZXJlIGdvaW5nIHRvLAor CQkJICogdGhlbiB0aG9zZSBKT0lOcyBkaWRuJ3Qgd29yay4KKwkJCSAqLworCQkJbnVtUGVy aW9kcyA9IFBRbnR1cGxlcyhyZXMpOworCQkJaWYgKG51bVBlcmlvZHMgIT0gdGJpbmZvLT5u cGVyaW9kKQorCQkJeworCQkJCXBnX2xvZ19pbmZvKG5nZXR0ZXh0KCJleHBlY3RlZCAlZCBw ZXJpb2Qgb24gdGFibGUgXCIlc1wiIGJ1dCBmb3VuZCAlZCIsCisJCQkJCQkJCQkgImV4cGVj dGVkICVkIHBlcmlvZHMgb24gdGFibGUgXCIlc1wiIGJ1dCBmb3VuZCAlZCIsCisJCQkJCQkJ CQkgdGJpbmZvLT5ucGVyaW9kKSwKKwkJCQkJCQl0YmluZm8tPm5wZXJpb2QsIHRiaW5mby0+ ZG9iai5uYW1lLCBudW1QZXJpb2RzKTsKKwkJCQlwZ19sb2dfaW5mbygiKFRoZSBzeXN0ZW0g Y2F0YWxvZ3MgbWlnaHQgYmUgY29ycnVwdGVkLikiKTsKKwkJCQlleGl0X25pY2VseSgxKTsK KwkJCX0KKworCQkJcGVyaW9kcyA9IChQZXJpb2RJbmZvICopIHBnX21hbGxvYyhudW1QZXJp b2RzICogc2l6ZW9mKFBlcmlvZEluZm8pKTsKKwkJCXRiaW5mby0+cGVyaW9kcyA9IHBlcmlv ZHM7CisKKwkJCWZvciAoaiA9IDA7IGogPCBudW1QZXJpb2RzOyBqKyspCisJCQl7CisJCQkJ cGVyaW9kc1tqXS5kb2JqLm9ialR5cGUgPSBET19QRVJJT0Q7CisJCQkJcGVyaW9kc1tqXS5k b2JqLmNhdElkLnRhYmxlb2lkID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBqLCAwKSk7CisJ CQkJcGVyaW9kc1tqXS5kb2JqLmNhdElkLm9pZCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywg aiwgMSkpOworCQkJCUFzc2lnbkR1bXBJZCgmcGVyaW9kc1tqXS5kb2JqKTsKKwkJCQlwZXJp b2RzW2pdLmRvYmoubmFtZSA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaiwgMikpOwor CQkJCXBlcmlvZHNbal0uZG9iai5uYW1lc3BhY2UgPSB0YmluZm8tPmRvYmoubmFtZXNwYWNl OworCQkJCXBlcmlvZHNbal0ucGVydGFibGUgPSB0YmluZm87CisJCQkJcGVyaW9kc1tqXS5w ZXJzdGFydCA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaiwgMykpOworCQkJCXBlcmlv ZHNbal0ucGVyZW5kID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBqLCA0KSk7CisJCQkJ cGVyaW9kc1tqXS5ybmd0eXBlID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBqLCA1KSk7 CisJCQkJcGVyaW9kc1tqXS5jb25uYW1lID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBq LCA2KSk7CisJCQl9CisJCQlQUWNsZWFyKHJlcyk7CisJCX0KKwl9CisKIAlkZXN0cm95UFFF eHBCdWZmZXIocSk7CiAJZGVzdHJveVBRRXhwQnVmZmVyKHRibG9pZHMpOwogCWRlc3Ryb3lQ UUV4cEJ1ZmZlcihjaGVja29pZHMpOwpAQCAtMTA0MDIsNiArMTA1MTIsOCBAQCBkdW1wRHVt cGFibGVPYmplY3QoQXJjaGl2ZSAqZm91dCwgRHVtcGFibGVPYmplY3QgKmRvYmopCiAJCWNh c2UgRE9fRktfQ09OU1RSQUlOVDoKIAkJCWR1bXBDb25zdHJhaW50KGZvdXQsIChjb25zdCBD b25zdHJhaW50SW5mbyAqKSBkb2JqKTsKIAkJCWJyZWFrOworCQljYXNlIERPX1BFUklPRDoK KwkJCWJyZWFrOwogCQljYXNlIERPX1BST0NMQU5HOgogCQkJZHVtcFByb2NMYW5nKGZvdXQs IChjb25zdCBQcm9jTGFuZ0luZm8gKikgZG9iaik7CiAJCQlicmVhazsKQEAgLTE1OTM3LDYg KzE2MDQ5LDMyIEBAIGR1bXBUYWJsZVNjaGVtYShBcmNoaXZlICpmb3V0LCBjb25zdCBUYWJs ZUluZm8gKnRiaW5mbykKIAkJCQl9CiAJCQl9CiAKKwkJCS8qCisJCQkgKiBBZGQgbm9uLWlu aGVyaXRlZCBQRVJJT0QgZGVmaW5pdGlvbnMsIGlmIGFueS4KKwkJCSAqLworCQkJZm9yIChq ID0gMDsgaiA8IHRiaW5mby0+bnBlcmlvZDsgaisrKQorCQkJeworCQkJCVBlcmlvZEluZm8g KnBlcmlvZCA9ICYodGJpbmZvLT5wZXJpb2RzW2pdKTsKKworCQkJCWNoYXIJICAgKm5hbWUg PSBwZ19zdHJkdXAoZm10SWQocGVyaW9kLT5kb2JqLm5hbWUpKTsKKwkJCQljaGFyCSAgICpz dGFydCA9IHBnX3N0cmR1cChmbXRJZChwZXJpb2QtPnBlcnN0YXJ0KSk7CisJCQkJY2hhcgkg ICAqZW5kID0gcGdfc3RyZHVwKGZtdElkKHBlcmlvZC0+cGVyZW5kKSk7CisJCQkJY2hhcgkg ICAqcm5ndHlwZSA9IHBnX3N0cmR1cChmbXRJZChwZXJpb2QtPnJuZ3R5cGUpKTsKKwkJCQlj aGFyCSAgICpjb25uYW1lID0gcGdfc3RyZHVwKGZtdElkKHBlcmlvZC0+Y29ubmFtZSkpOwor CisJCQkJaWYgKGFjdHVhbF9hdHRzID09IDApCisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KHEsICIgKFxuICAgICIpOworCQkJCWVsc2UKKwkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo cSwgIixcbiAgICAiKTsKKworCQkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICJQRVJJT0QgRk9S ICVzICglcywgJXMpICIKKwkJCQkJCSJXSVRIIChyYW5nZXR5cGUgPSAlcywgY2hlY2tfY29u c3RyYWludF9uYW1lID0gJXMpIiwKKwkJCQkJCQkJICBuYW1lLCBzdGFydCwgZW5kLAorCQkJ CQkJCQkgIHJuZ3R5cGUsIGNvbm5hbWUpOworCisJCQkJYWN0dWFsX2F0dHMrKzsKKwkJCX0K KwogCQkJLyoKIAkJCSAqIEFkZCBub24taW5oZXJpdGVkIENIRUNLIGNvbnN0cmFpbnRzLCBp ZiBhbnkuCiAJCQkgKgpAQCAtMTU5NDUsNyArMTYwODMsNyBAQCBkdW1wVGFibGVTY2hlbWEo QXJjaGl2ZSAqZm91dCwgY29uc3QgVGFibGVJbmZvICp0YmluZm8pCiAJCQkgKiBQQVJUSVRJ T04gdGhhdCB3ZSdsbCBlbWl0IGxhdGVyIGV4cGVjdHMgdGhlIGNvbnN0cmFpbnQgdG8gYmUK IAkJCSAqIHRoZXJlLiAgKE5vIG5lZWQgdG8gZml4IGNvbmlzbG9jYWw6IEFUVEFDSCBQQVJU SVRJT04gZG9lcyB0aGF0KQogCQkJICovCi0JCQlmb3IgKGogPSAwOyBqIDwgdGJpbmZvLT5u Y2hlY2s7IGorKykKKwkJCWZvciAoaiA9IDA7IGogPCB0YmluZm8tPm5jaGVjayAtIHRiaW5m by0+bnBlcmlvZDsgaisrKQogCQkJewogCQkJCUNvbnN0cmFpbnRJbmZvICpjb25zdHIgPSAm KHRiaW5mby0+Y2hlY2tleHByc1tqXSk7CiAKQEAgLTE2MTYzLDcgKzE2MzAxLDcgQEAgZHVt cFRhYmxlU2NoZW1hKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFRhYmxlSW5mbyAqdGJpbmZvKQog CQkJICogRm9yIHBhcnRpdGlvbnMsIHRoZXkgd2VyZSBhbHJlYWR5IGR1bXBlZCwgYW5kIGNv bmlzbG9jYWwKIAkJCSAqIGRvZXNuJ3QgbmVlZCBmaXhpbmcuCiAJCQkgKi8KLQkJCWZvciAo ayA9IDA7IGsgPCB0YmluZm8tPm5jaGVjazsgaysrKQorCQkJZm9yIChrID0gMDsgayA8IHRi aW5mby0+bmNoZWNrIC0gdGJpbmZvLT5ucGVyaW9kOyBrKyspCiAJCQl7CiAJCQkJQ29uc3Ry YWludEluZm8gKmNvbnN0ciA9ICYodGJpbmZvLT5jaGVja2V4cHJzW2tdKTsKIApAQCAtMTY0 NjUsNyArMTY2MDMsNyBAQCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgY29uc3Qg VGFibGVJbmZvICp0YmluZm8pCiAJCWR1bXBUYWJsZVNlY0xhYmVsKGZvdXQsIHRiaW5mbywg cmVsdHlwZW5hbWUpOwogCiAJLyogRHVtcCBjb21tZW50cyBvbiBpbmxpbmVkIHRhYmxlIGNv bnN0cmFpbnRzICovCi0JZm9yIChqID0gMDsgaiA8IHRiaW5mby0+bmNoZWNrOyBqKyspCisJ Zm9yIChqID0gMDsgaiA8IHRiaW5mby0+bmNoZWNrIC0gdGJpbmZvLT5ucGVyaW9kOyBqKysp CiAJewogCQlDb25zdHJhaW50SW5mbyAqY29uc3RyID0gJih0YmluZm8tPmNoZWNrZXhwcnNb al0pOwogCkBAIC0xODU1MCw2ICsxODY4OCw3IEBAIGFkZEJvdW5kYXJ5RGVwZW5kZW5jaWVz KER1bXBhYmxlT2JqZWN0ICoqZG9ianMsIGludCBudW1PYmpzLAogCQkJY2FzZSBET19UUklH R0VSOgogCQkJY2FzZSBET19FVkVOVF9UUklHR0VSOgogCQkJY2FzZSBET19ERUZBVUxUX0FD TDoKKwkJCWNhc2UgRE9fUEVSSU9EOgogCQkJY2FzZSBET19QT0xJQ1k6CiAJCQljYXNlIERP X1BVQkxJQ0FUSU9OOgogCQkJY2FzZSBET19QVUJMSUNBVElPTl9SRUw6CmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu aAppbmRleCAxMDYwNWVjYWM1Li45MTdjNzAwYTU3IDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAgLTU5 LDYgKzU5LDcgQEAgdHlwZWRlZiBlbnVtCiAJRE9fVFJJR0dFUiwKIAlET19DT05TVFJBSU5U LAogCURPX0ZLX0NPTlNUUkFJTlQsCQkJLyogc2VlIG5vdGUgZm9yIENvbnN0cmFpbnRJbmZv ICovCisJRE9fUEVSSU9ELAogCURPX1BST0NMQU5HLAogCURPX0NBU1QsCiAJRE9fVEFCTEVf REFUQSwKQEAgLTI5OSwxMiArMzAwLDE0IEBAIHR5cGVkZWYgc3RydWN0IF90YWJsZUluZm8K IAlib29sCQlyb3dzZWM7CQkJLyogaXMgcm93IHNlY3VyaXR5IGVuYWJsZWQ/ICovCiAJYm9v bAkJZm9yY2Vyb3dzZWM7CS8qIGlzIHJvdyBzZWN1cml0eSBmb3JjZWQ/ICovCiAJYm9vbAkJ aGFzb2lkczsJCS8qIGRvZXMgaXQgaGF2ZSBPSURzPyAqLworCWJvb2wJCWhhc3BlcmlvZHM7 CQkvKiBkb2VzIGl0IGhhdmUgYW55IHBlcmlvZHM/ICovCiAJdWludDMyCQlmcm96ZW54aWQ7 CQkvKiB0YWJsZSdzIHJlbGZyb3plbnhpZCAqLwogCXVpbnQzMgkJbWlubXhpZDsJCS8qIHRh YmxlJ3MgcmVsbWlubXhpZCAqLwogCU9pZAkJCXRvYXN0X29pZDsJCS8qIHRvYXN0IHRhYmxl J3MgT0lELCBvciAwIGlmIG5vbmUgKi8KIAl1aW50MzIJCXRvYXN0X2Zyb3plbnhpZDsJLyog dG9hc3QgdGFibGUncyByZWxmcm96ZW54aWQsIGlmIGFueSAqLwogCXVpbnQzMgkJdG9hc3Rf bWlubXhpZDsJLyogdG9hc3QgdGFibGUncyByZWxtaW5teGlkICovCiAJaW50CQkJbmNoZWNr OwkJCS8qICMgb2YgQ0hFQ0sgZXhwcmVzc2lvbnMgKi8KKwlpbnQJCQlucGVyaW9kOwkJLyog IyBvZiBQRVJJT0QgZGVmaW5pdGlvbnMgKi8KIAlPaWQJCQlyZWx0eXBlOwkJLyogT0lEIG9m IHRhYmxlJ3MgY29tcG9zaXRlIHR5cGUsIGlmIGFueSAqLwogCU9pZAkJCXJlbG9mdHlwZTsJ CS8qIHVuZGVybHlpbmcgdHlwZSBmb3IgdHlwZWQgdGFibGUgKi8KIAlPaWQJCQlmb3JlaWdu X3NlcnZlcjsgLyogZm9yZWlnbiBzZXJ2ZXIgb2lkLCBpZiBhcHBsaWNhYmxlICovCkBAIC0z NTQsNiArMzU3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX3RhYmxlSW5mbwogCWJvb2wJICAgKm5v dG51bGxfaW5oOwkvKiB0cnVlIGlmIE5PVCBOVUxMIGhhcyBubyBsb2NhbCBkZWZpbml0aW9u ICovCiAJc3RydWN0IF9hdHRyRGVmSW5mbyAqKmF0dHJkZWZzOyAvKiBERUZBVUxUIGV4cHJl c3Npb25zICovCiAJc3RydWN0IF9jb25zdHJhaW50SW5mbyAqY2hlY2tleHByczsgLyogQ0hF Q0sgY29uc3RyYWludHMgKi8KKwlzdHJ1Y3QgX3BlcmlvZEluZm8gKnBlcmlvZHM7CS8qIFBF UklPRCBkZWZpbml0aW9ucyAqLwogCWJvb2wJCW5lZWRzX292ZXJyaWRlOyAvKiBoYXMgR0VO RVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSAqLwogCWNoYXIJICAgKmFtbmFtZTsJCQkvKiBy ZWxhdGlvbiBhY2Nlc3MgbWV0aG9kICovCiAKQEAgLTQ5Myw2ICs0OTcsMTYgQEAgdHlwZWRl ZiBzdHJ1Y3QgX2NvbnN0cmFpbnRJbmZvCiAJYm9vbAkJc2VwYXJhdGU7CQkvKiB0cnVlIGlm IG11c3QgZHVtcCBhcyBzZXBhcmF0ZSBpdGVtICovCiB9IENvbnN0cmFpbnRJbmZvOwogCit0 eXBlZGVmIHN0cnVjdCBfcGVyaW9kSW5mbworeworCUR1bXBhYmxlT2JqZWN0IGRvYmo7CisJ VGFibGVJbmZvICAqcGVydGFibGU7CisJY2hhcgkgICAqcGVyc3RhcnQ7CQkvKiB0aGUgbmFt ZSBvZiB0aGUgc3RhcnQgY29sdW1uICovCisJY2hhcgkgICAqcGVyZW5kOwkJCS8qIHRoZSBu YW1lIG9mIHRoZSBlbmQgY29sdW1uICovCisJY2hhcgkgICAqcm5ndHlwZTsJCS8qIHRoZSBu YW1lIG9mIHRoZSByYW5nZSB0eXBlICovCisJY2hhcgkgICAqY29ubmFtZTsJCS8qIHRoZSBu YW1lIG9mIHRoZSBDSEVDSyBjb25zdHJhaW50ICovCit9IFBlcmlvZEluZm87CisKIHR5cGVk ZWYgc3RydWN0IF9wcm9jTGFuZ0luZm8KIHsKIAlEdW1wYWJsZU9iamVjdCBkb2JqOwpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jIGIvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXBfc29ydC5jCmluZGV4IGFiZmVhMTVjMDkuLjgzMjRmNTAyZGMgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYworKysgYi9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcF9zb3J0LmMKQEAgLTg1LDYgKzg1LDcgQEAgZW51bSBkYk9iamVjdFR5 cGVQcmlvcml0aWVzCiAJUFJJT19DT05TVFJBSU5ULAogCVBSSU9fSU5ERVgsCiAJUFJJT19J TkRFWF9BVFRBQ0gsCisJUFJJT19QRVJJT0QsCiAJUFJJT19TVEFUU0VYVCwKIAlQUklPX1JV TEUsCiAJUFJJT19UUklHR0VSLApAQCAtMTE5LDYgKzEyMCw3IEBAIHN0YXRpYyBjb25zdCBp bnQgZGJPYmplY3RUeXBlUHJpb3JpdHlbXSA9CiAJUFJJT19BVFRSREVGLAkJCQkvKiBET19B VFRSREVGICovCiAJUFJJT19JTkRFWCwJCQkJCS8qIERPX0lOREVYICovCiAJUFJJT19JTkRF WF9BVFRBQ0gsCQkJLyogRE9fSU5ERVhfQVRUQUNIICovCisJUFJJT19QRVJJT0QsCQkJCS8q IERPX1BFUklPRCAqLwogCVBSSU9fU1RBVFNFWFQsCQkJCS8qIERPX1NUQVRTRVhUICovCiAJ UFJJT19SVUxFLAkJCQkJLyogRE9fUlVMRSAqLwogCVBSSU9fVFJJR0dFUiwJCQkJLyogRE9f VFJJR0dFUiAqLwpAQCAtMTM2OCw2ICsxMzcwLDExIEBAIGRlc2NyaWJlRHVtcGFibGVPYmpl Y3QoRHVtcGFibGVPYmplY3QgKm9iaiwgY2hhciAqYnVmLCBpbnQgYnVmc2l6ZSkKIAkJCQkJ ICJGSyBDT05TVFJBSU5UICVzICAoSUQgJWQgT0lEICV1KSIsCiAJCQkJCSBvYmotPm5hbWUs IG9iai0+ZHVtcElkLCBvYmotPmNhdElkLm9pZCk7CiAJCQlyZXR1cm47CisJCWNhc2UgRE9f UEVSSU9EOgorCQkJc25wcmludGYoYnVmLCBidWZzaXplLAorCQkJCQkgIlBFUklPRCAlcyAg KElEICVkIE9JRCAldSkiLAorCQkJCQkgb2JqLT5uYW1lLCBvYmotPmR1bXBJZCwgb2JqLT5j YXRJZC5vaWQpOworCQkJcmV0dXJuOwogCQljYXNlIERPX1BST0NMQU5HOgogCQkJc25wcmlu dGYoYnVmLCBidWZzaXplLAogCQkJCQkgIlBST0NFRFVSQUwgTEFOR1VBR0UgJXMgIChJRCAl ZCBPSUQgJXUpIiwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3Jj L2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXggNjFkNjQ1MmI1My4uM2JhMTZkNjdmZCAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rl c2NyaWJlLmMKQEAgLTE5NDMsNiArMTk0Myw4IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxz KGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAKIAlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVm LCAiXG5GUk9NIHBnX2NhdGFsb2cucGdfYXR0cmlidXRlIGEiKTsKIAlhcHBlbmRQUUV4cEJ1 ZmZlcigmYnVmLCAiXG5XSEVSRSBhLmF0dHJlbGlkID0gJyVzJyBBTkQgYS5hdHRudW0gPiAw IEFORCBOT1QgYS5hdHRpc2Ryb3BwZWQiLCBvaWQpOworCWlmIChwc2V0LnN2ZXJzaW9uID49 IDE3MDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIlxuQU5EIE5PVCBFWElTVFMg KFNFTEVDVCAxIEZST00gcGdfY2F0YWxvZy5wZ19wZXJpb2QgcCBXSEVSRSBwLnBlcnJlbGlk ID0gYS5hdHRyZWxpZCBBTkQgcC5wZXJyYW5nZSA9IGEuYXR0bnVtKSIpOwogCWFwcGVuZFBR RXhwQnVmZmVyU3RyKCZidWYsICJcbk9SREVSIEJZIGEuYXR0bnVtOyIpOwogCiAJcmVzID0g UFNRTGV4ZWMoYnVmLmRhdGEpOwpAQCAtMjM2NSw2ICsyMzY3LDQwIEBAIGRlc2NyaWJlT25l VGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCVBHcmVzdWx0ICAgKnJl c3VsdCA9IE5VTEw7CiAJCWludAkJCXR1cGxlcyA9IDA7CiAKKwkJLyogcHJpbnQgcGVyaW9k cyAqLworCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNzAwMDApCisJCXsKKwkJCXByaW50ZlBR RXhwQnVmZmVyKCZidWYsCisJCQkJCQkJICAiU0VMRUNUIHF1b3RlX2lkZW50KHAucGVybmFt ZSksIHF1b3RlX2lkZW50KHMuYXR0bmFtZSkgQVMgc3RhcnRhdHQsIHF1b3RlX2lkZW50KGUu YXR0bmFtZSkgQVMgZW5kYXR0XG4iCisJCQkJCQkJICAiRlJPTSBwZ19wZXJpb2QgQVMgcFxu IgorCQkJCQkJCSAgIkpPSU4gcGdfYXR0cmlidXRlIEFTIHMgT04gKHMuYXR0cmVsaWQsIHMu YXR0bnVtKSA9IChwLnBlcnJlbGlkLCBwLnBlcnN0YXJ0KVxuIgorCQkJCQkJCSAgIkpPSU4g cGdfYXR0cmlidXRlIEFTIGUgT04gKGUuYXR0cmVsaWQsIGUuYXR0bnVtKSA9IChwLnBlcnJl bGlkLCBwLnBlcmVuZClcbiIKKwkJCQkJCQkgICJXSEVSRSBwLnBlcnJlbGlkID0gJyVzJ1xu IgorCQkJCQkJCSAgIk9SREVSIEJZIDE7IiwKKwkJCQkJCQkgIG9pZCk7CisJCQlyZXN1bHQg PSBQU1FMZXhlYyhidWYuZGF0YSk7CisJCQlpZiAoIXJlc3VsdCkKKwkJCQlnb3RvIGVycm9y X3JldHVybjsKKwkJCWVsc2UKKwkJCQl0dXBsZXMgPSBQUW50dXBsZXMocmVzdWx0KTsKKwor CQkJaWYgKHR1cGxlcyA+IDApCisJCQl7CisJCQkJcHJpbnRUYWJsZUFkZEZvb3RlcigmY29u dCwgXygiUGVyaW9kczoiKSk7CisJCQkJZm9yIChpID0gMDsgaSA8IHR1cGxlczsgaSsrKQor CQkJCXsKKwkJCQkJLyogdW50cmFuc2xhdGVkIGNvbnN0cmFpbnQgbmFtZSBhbmQgZGVmICov CisJCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIgICAgJXMgKCVzLCAlcykiLAorCQkJ CQkJCQkJICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgMCksCisJCQkJCQkJCQkgIFBRZ2V0dmFs dWUocmVzdWx0LCBpLCAxKSwKKwkJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDIp KTsKKworCQkJCQlwcmludFRhYmxlQWRkRm9vdGVyKCZjb250LCBidWYuZGF0YSk7CisJCQkJ fQorCQkJfQorCQkJUFFjbGVhcihyZXN1bHQpOworCQl9CisKIAkJLyogcHJpbnQgaW5kZXhl cyAqLwogCQlpZiAodGFibGVpbmZvLmhhc2luZGV4KQogCQl7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVw ZW5kZW5jeS5oCmluZGV4IGFiYWMwZjZkYTUuLmRhZWNmNDQ2NzEgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvZGVwZW5kZW5jeS5oCkBAIC05Myw2ICs5Myw3IEBAIHR5cGVkZWYgZW51bSBPYmplY3RD bGFzcwogCU9DTEFTU19DQVNULAkJCQkvKiBwZ19jYXN0ICovCiAJT0NMQVNTX0NPTExBVElP TiwJCQkvKiBwZ19jb2xsYXRpb24gKi8KIAlPQ0xBU1NfQ09OU1RSQUlOVCwJCQkvKiBwZ19j b25zdHJhaW50ICovCisJT0NMQVNTX1BFUklPRCwJCQkJLyogcGdfcGVyaW9kICovCiAJT0NM QVNTX0NPTlZFUlNJT04sCQkJLyogcGdfY29udmVyc2lvbiAqLwogCU9DTEFTU19ERUZBVUxU LAkJCQkvKiBwZ19hdHRyZGVmICovCiAJT0NMQVNTX0xBTkdVQUdFLAkJCS8qIHBnX2xhbmd1 YWdlICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaCBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvaGVhcC5oCmluZGV4IDUxZjdiMTJhYTMuLjFmNjQ2ZjNkM2IgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaGVhcC5oCisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvaGVhcC5oCkBAIC0xMjEsNiArMTIxLDEwIEBAIGV4dGVybiBMaXN0ICpBZGRS ZWxhdGlvbk5vdE51bGxDb25zdHJhaW50cyhSZWxhdGlvbiByZWwsCiBleHRlcm4gdm9pZCBS ZWxhdGlvbkNsZWFyTWlzc2luZyhSZWxhdGlvbiByZWwpOwogZXh0ZXJuIHZvaWQgU2V0QXR0 ck1pc3NpbmcoT2lkIHJlbGlkLCBjaGFyICphdHRuYW1lLCBjaGFyICp2YWx1ZSk7CiAKK2V4 dGVybiBPaWQgU3RvcmVQZXJpb2QoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpwZXJpb2Qs CisJCQkJCSAgIEF0dHJOdW1iZXIgc3RhcnRudW0sIEF0dHJOdW1iZXIgZW5kbnVtLAorCQkJ CQkgICBBdHRyTnVtYmVyIHJhbmdlbnVtLCBPaWQgY29ub2lkKTsKKwogZXh0ZXJuIE5vZGUg KmNvb2tEZWZhdWx0KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCSBOb2RlICpyYXdfZGVm YXVsdCwKIAkJCQkJCSBPaWQgYXR0dHlwaWQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j YXRhbG9nL21lc29uLmJ1aWxkIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9tZXNvbi5idWlsZApp bmRleCBkY2IzYzVmNzY2Li4xOTQzNzI5MWE0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL21lc29uLmJ1aWxkCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVp bGQKQEAgLTYxLDYgKzYxLDcgQEAgY2F0YWxvZ19oZWFkZXJzID0gWwogICAncGdfY29sbGF0 aW9uLmgnLAogICAncGdfcGFyYW1ldGVyX2FjbC5oJywKICAgJ3BnX3BhcnRpdGlvbmVkX3Rh YmxlLmgnLAorICAncGdfcGVyaW9kLmgnLAogICAncGdfcmFuZ2UuaCcsCiAgICdwZ190cmFu c2Zvcm0uaCcsCiAgICdwZ19zZXF1ZW5jZS5oJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfaW5kZXguaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfaW5kZXguaApp bmRleCAzMjkzMDQxMWI2Li5hNGUwMmRkY2E3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX2luZGV4LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19pbmRleC5o CkBAIC00OCw3ICs0OCw2IEBAIENBVEFMT0cocGdfaW5kZXgsMjYxMCxJbmRleFJlbGF0aW9u SWQpIEJLSV9TQ0hFTUFfTUFDUk8KIAkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0 IGhlcmUsIGJ1dCB3ZSBhbGxvdyBkaXJlY3QgYWNjZXNzIHRvIGluZGtleSAqLwogCWludDJ2 ZWN0b3IJaW5ka2V5IEJLSV9GT1JDRV9OT1RfTlVMTDsJLyogY29sdW1uIG51bWJlcnMgb2Yg aW5kZXhlZCBjb2xzLAogCQkJCQkJCQkJCQkgKiBvciAwICovCi0KICNpZmRlZiBDQVRBTE9H X1ZBUkxFTgogCW9pZHZlY3RvcglpbmRjb2xsYXRpb24gQktJX0xPT0tVUF9PUFQocGdfY29s bGF0aW9uKSBCS0lfRk9SQ0VfTk9UX05VTEw7CS8qIGNvbGxhdGlvbiBpZGVudGlmaWVycyAq LwogCW9pZHZlY3RvcglpbmRjbGFzcyBCS0lfTE9PS1VQKHBnX29wY2xhc3MpIEJLSV9GT1JD RV9OT1RfTlVMTDsgLyogb3BjbGFzcyBpZGVudGlmaWVycyAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wZXJpb2QuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cGVyaW9kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZDJjZmZh MDdiYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcGVyaW9k LmgKQEAgLTAsMCArMSw1NCBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcGdf cGVyaW9kLmgKKyAqCSAgZGVmaW5pdGlvbiBvZiB0aGUgInBlcmlvZCIgc3lzdGVtIGNhdGFs b2cgKHBnX3BlcmlvZCkKKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2 LTIwMjEsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wZXJpb2QuaAorICoKKyAqIE5PVEVTCisgKgkgIFRoZSBD YXRhbG9nLnBtIG1vZHVsZSByZWFkcyB0aGlzIGZpbGUgYW5kIGRlcml2ZXMgc2NoZW1hCisg KgkgIGluZm9ybWF0aW9uLgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZu ZGVmIFBHX1BFUklPRF9ICisjZGVmaW5lIFBHX1BFUklPRF9ICisKKyNpbmNsdWRlICJjYXRh bG9nL2dlbmJraS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kX2QuaCIKKworLyog LS0tLS0tLS0tLS0tLS0tLQorICoJCXBnX3BlcmlvZCBkZWZpbml0aW9uLiAgY3BwIHR1cm5z IHRoaXMgaW50bworICoJCXR5cGVkZWYgc3RydWN0IEZvcm1EYXRhX3BnX3BlcmlvZAorICog LS0tLS0tLS0tLS0tLS0tLQorICovCitDQVRBTE9HKHBnX3BlcmlvZCw4MDAwLFBlcmlvZFJl bGF0aW9uSWQpCit7CisJT2lkCQkJb2lkOwkJCS8qIE9JRCBvZiB0aGUgcGVyaW9kICovCisJ TmFtZURhdGEJcGVybmFtZTsJCS8qIG5hbWUgb2YgcGVyaW9kICovCisJT2lkCQkJcGVycmVs aWQ7CQkvKiBPSUQgb2YgcmVsYXRpb24gY29udGFpbmluZyB0aGlzIHBlcmlvZCAqLworCWlu dDE2CQlwZXJzdGFydDsJCS8qIGNvbHVtbiBmb3Igc3RhcnQgdmFsdWUgKi8KKwlpbnQxNgkJ cGVyZW5kOwkJCS8qIGNvbHVtbiBmb3IgZW5kIHZhbHVlICovCisJaW50MTYJCXBlcnJhbmdl OwkJLyogY29sdW1uIGZvciByYW5nZSB2YWx1ZSAqLworCU9pZAkJCXBlcmNvbnN0cmFpbnQ7 CS8qIE9JRCBvZiAoc3RhcnQgPCBlbmQpIGNvbnN0cmFpbnQgKi8KK30gRm9ybURhdGFfcGdf cGVyaW9kOworCisvKiAtLS0tLS0tLS0tLS0tLS0tCisgKgkJRm9ybV9wZ19wZXJpb2QgY29y cmVzcG9uZHMgdG8gYSBwb2ludGVyIHRvIGEgdHVwbGUgd2l0aAorICoJCXRoZSBmb3JtYXQg b2YgcGdfcGVyaW9kIHJlbGF0aW9uLgorICogLS0tLS0tLS0tLS0tLS0tLQorICovCit0eXBl ZGVmIEZvcm1EYXRhX3BnX3BlcmlvZCAqRm9ybV9wZ19wZXJpb2Q7CisKK0RFQ0xBUkVfVU5J UVVFX0lOREVYX1BLRVkocGdfcGVyaW9kX29pZF9pbmRleCwgODAwMSwgUGVyaW9kT2JqZWN0 SW5kZXhJZCwgcGdfcGVyaW9kLCBidHJlZShvaWQgb2lkX29wcykpOworREVDTEFSRV9VTklR VUVfSU5ERVgocGdfcGVyaW9kX3BlcnJlbGlkX3Blcm5hbWVfaW5kZXgsIDgwMDIsIFBlcmlv ZFJlbGlkTmFtZUluZGV4SWQsIHBnX3BlcmlvZCwgYnRyZWUocGVycmVsaWQgb2lkX29wcywg cGVybmFtZSBuYW1lX29wcykpOworCitleHRlcm4gdm9pZCBSZW1vdmVQZXJpb2RCeUlkKE9p ZCBwZXJpb2RJZCk7CisKK2V4dGVybiBPaWQgZ2V0X3JlbGF0aW9uX3BlcmlvZF9vaWQoT2lk IHJlbGlkLCBjb25zdCBjaGFyICpwZXJuYW1lLCBib29sIG1pc3Npbmdfb2spOworZXh0ZXJu IEJpdG1hcHNldCAqZ2V0X3BlcmlvZF9hdHRub3MoT2lkIHJlbGlkKTsKKworI2VuZGlmCQkJ CQkJCS8qIFBHX1BFUklPRF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3JhbmdlLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3JhbmdlLmgKaW5kZXggMTI0 N2ZhN2M3Ny4uN2VkMDE0YjcxZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19yYW5nZS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcmFuZ2UuaApAQCAtNTks NiArNTksNyBAQCB0eXBlZGVmIEZvcm1EYXRhX3BnX3JhbmdlICpGb3JtX3BnX3JhbmdlOwog CiBERUNMQVJFX1VOSVFVRV9JTkRFWF9QS0VZKHBnX3JhbmdlX3JuZ3R5cGlkX2luZGV4LCAz NTQyLCBSYW5nZVR5cGlkSW5kZXhJZCwgcGdfcmFuZ2UsIGJ0cmVlKHJuZ3R5cGlkIG9pZF9v cHMpKTsKIERFQ0xBUkVfVU5JUVVFX0lOREVYKHBnX3JhbmdlX3JuZ211bHRpdHlwaWRfaW5k ZXgsIDIyMjgsIFJhbmdlTXVsdGlyYW5nZVR5cGlkSW5kZXhJZCwgcGdfcmFuZ2UsIGJ0cmVl KHJuZ211bHRpdHlwaWQgb2lkX29wcykpOworREVDTEFSRV9VTklRVUVfSU5ERVgocGdfcmFu Z2Vfcm5nc3VidHlwZV9ybmd0eXBpZF9pbmRleCwgODAwMywgUmFuZ2VTdWJUeXBpZFR5cGlk SW5kZXhJZCwgcGdfcmFuZ2UsIGJ0cmVlKHJuZ3N1YnR5cGUgb2lkX29wcywgcm5ndHlwaWQg b2lkX29wcykpOwogCiAvKgogICogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIHBnX3Jh bmdlLmMKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmgKaW5kZXggODJhMTQ0NGQzNC4uODg1 NGZkOTczYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmgK KysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmgKQEAgLTQwLDcgKzQwLDgg QEAgZXh0ZXJuIExPQ0tNT0RFIEFsdGVyVGFibGVHZXRMb2NrTGV2ZWwoTGlzdCAqY21kcyk7 CiAKIGV4dGVybiB2b2lkIEFURXhlY0NoYW5nZU93bmVyKE9pZCByZWxhdGlvbk9pZCwgT2lk IG5ld093bmVySWQsIGJvb2wgcmVjdXJzaW5nLCBMT0NLTU9ERSBsb2NrbW9kZSk7CiAKLWV4 dGVybiB2b2lkIEFsdGVyVGFibGVJbnRlcm5hbChPaWQgcmVsaWQsIExpc3QgKmNtZHMsIGJv b2wgcmVjdXJzZSk7CitleHRlcm4gdm9pZCBBbHRlclRhYmxlSW50ZXJuYWwoT2lkIHJlbGlk LCBMaXN0ICpjbWRzLCBib29sIHJlY3Vyc2UsCisJCQkJCQkJICAgc3RydWN0IEFsdGVyVGFi bGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCk7CiAKIGV4dGVybiBPaWQJQWx0ZXJUYWJsZU1v dmVBbGwoQWx0ZXJUYWJsZU1vdmVBbGxTdG10ICpzdG10KTsKIApAQCAtMTA4LDUgKzEwOSw2 IEBAIGV4dGVybiBib29sIFBhcnRDb25zdHJhaW50SW1wbGllZEJ5UmVsQ29uc3RyYWludChS ZWxhdGlvbiBzY2FucmVsLAogZXh0ZXJuIHZvaWQgRmluZEZLUGVyaW9kT3BlcnNBbmRQcm9j cyhPaWQgb3BjbGFzcywKIAkJCQkJCQkJCSAgT2lkICpwZXJpb2RvcGVyb2lkLAogCQkJCQkJ CQkJICBPaWQgKnBlcmlvZHByb2NvaWQpOworZXh0ZXJuIE9pZCBjaG9vc2VfcmFuZ2V0eXBl X2Zvcl9wZXJpb2QoUGVyaW9kRGVmICpwZXJpb2QpOwogCiAjZW5kaWYJCQkJCQkJLyogVEFC TEVDTURTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBkMTMwNDQ1ODAwLi41 NmMxOWJlYWUxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0yMTQxLDYgKzIxNDEs NyBAQCB0eXBlZGVmIGVudW0gT2JqZWN0VHlwZQogCU9CSkVDVF9PUEVSQVRPUiwKIAlPQkpF Q1RfT1BGQU1JTFksCiAJT0JKRUNUX1BBUkFNRVRFUl9BQ0wsCisJT0JKRUNUX1BFUklPRCwK IAlPQkpFQ1RfUE9MSUNZLAogCU9CSkVDVF9QUk9DRURVUkUsCiAJT0JKRUNUX1BVQkxJQ0FU SU9OLApAQCAtMjIyOCw2ICsyMjI5LDggQEAgdHlwZWRlZiBlbnVtIEFsdGVyVGFibGVUeXBl CiAJQVRfVmFsaWRhdGVDb25zdHJhaW50LAkJLyogdmFsaWRhdGUgY29uc3RyYWludCAqLwog CUFUX0FkZEluZGV4Q29uc3RyYWludCwJCS8qIGFkZCBjb25zdHJhaW50IHVzaW5nIGV4aXN0 aW5nIGluZGV4ICovCiAJQVRfRHJvcENvbnN0cmFpbnQsCQkJLyogZHJvcCBjb25zdHJhaW50 ICovCisJQVRfQWRkUGVyaW9kLAkJCQkvKiBBREQgUEVSSU9EICovCisJQVRfRHJvcFBlcmlv ZCwJCQkJLyogRFJPUCBQRVJJT0QgKi8KIAlBVF9SZUFkZENvbW1lbnQsCQkJLyogaW50ZXJu YWwgdG8gY29tbWFuZHMvdGFibGVjbWRzLmMgKi8KIAlBVF9BbHRlckNvbHVtblR5cGUsCQkJ LyogYWx0ZXIgY29sdW1uIHR5cGUgKi8KIAlBVF9BbHRlckNvbHVtbkdlbmVyaWNPcHRpb25z LAkvKiBhbHRlciBjb2x1bW4gT1BUSU9OUyAoLi4uKSAqLwpAQCAtMjQ5NCwxMSArMjQ5Nywx MSBAQCB0eXBlZGVmIHN0cnVjdCBWYXJpYWJsZVNob3dTdG10CiAvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgKgkJQ3JlYXRlIFRhYmxlIFN0YXRlbWVudAogICoKLSAqIE5PVEU6IGlu IHRoZSByYXcgZ3JhbS55IG91dHB1dCwgQ29sdW1uRGVmIGFuZCBDb25zdHJhaW50IG5vZGVz IGFyZQotICogaW50ZXJtaXhlZCBpbiB0YWJsZUVsdHMsIGFuZCBjb25zdHJhaW50cyBhbmQg bm5jb25zdHJhaW50cyBhcmUgTklMLiAgQWZ0ZXIKLSAqIHBhcnNlIGFuYWx5c2lzLCB0YWJs ZUVsdHMgY29udGFpbnMganVzdCBDb2x1bW5EZWZzLCBubmNvbnN0cmFpbnRzIGNvbnRhaW5z Ci0gKiBDb25zdHJhaW50IG5vZGVzIG9mIENPTlNUUl9OT1ROVUxMIHR5cGUgZnJvbSB2YXJp b3VzIHNvdXJjZXMsIGFuZAotICogY29uc3RyYWludHMgY29udGFpbnMganVzdCBDT05TVFJf Q0hFQ0sgQ29uc3RyYWludCBub2Rlcy4KKyAqIE5PVEU6IGluIHRoZSByYXcgZ3JhbS55IG91 dHB1dCwgQ29sdW1uRGVmLCBQZXJpb2REZWYsIGFuZCBDb25zdHJhaW50IG5vZGVzIGFyZQor ICogaW50ZXJtaXhlZCBpbiB0YWJsZUVsdHM7IHBlcmlvZHMsIGNvbnN0cmFpbnRzLCBhbmQg bm5jb25zdHJhaW50cyBhcmUgTklMLiAgQWZ0ZXIKKyAqIHBhcnNlIGFuYWx5c2lzLCB0YWJs ZUVsdHMgY29udGFpbnMganVzdCBDb2x1bW5EZWZzLCBwZXJpb2RzIGNvbnRhaW5zIGp1c3Qg UGVyaW9kRGVmcywKKyAqIG5uY29uc3RyYWludHMgY29udGFpbnMgQ29uc3RyYWludCBub2Rl cyBvZiBDT05TVFJfTk9UTlVMTCB0eXBlIGZyb20gdmFyaW91cyBzb3VyY2VzLAorICogYW5k IGNvbnN0cmFpbnRzIGNvbnRhaW5zIGp1c3QgQ09OU1RSX0NIRUNLIENvbnN0cmFpbnQgbm9k ZXMuCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIApAQCAtMjUwNyw2ICsyNTEw LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ3JlYXRlU3RtdAogCU5vZGVUYWcJCXR5cGU7CiAJUmFu Z2VWYXIgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byBjcmVhdGUgKi8KIAlMaXN0CSAg ICp0YWJsZUVsdHM7CQkvKiBjb2x1bW4gZGVmaW5pdGlvbnMgKGxpc3Qgb2YgQ29sdW1uRGVm KSAqLworCUxpc3QJICAgKnBlcmlvZHM7CQkvKiBwZXJpb2RzIChsaXN0IG9mIFBlcmlvZERl ZiBub2RlcykgKi8KIAlMaXN0CSAgICppbmhSZWxhdGlvbnM7CS8qIHJlbGF0aW9ucyB0byBp bmhlcml0IGZyb20gKGxpc3Qgb2YKIAkJCQkJCQkJICogUmFuZ2VWYXIpICovCiAJUGFydGl0 aW9uQm91bmRTcGVjICpwYXJ0Ym91bmQ7CS8qIEZPUiBWQUxVRVMgY2xhdXNlICovCkBAIC0y NTIxLDYgKzI1MjUsMzAgQEAgdHlwZWRlZiBzdHJ1Y3QgQ3JlYXRlU3RtdAogCWJvb2wJCWlm X25vdF9leGlzdHM7CS8qIGp1c3QgZG8gbm90aGluZyBpZiBpdCBhbHJlYWR5IGV4aXN0cz8g Ki8KIH0gQ3JlYXRlU3RtdDsKIAorCisvKiAtLS0tLS0tLS0tCisgKiBEZWZpbml0aW9ucyBm b3IgcGVyaW9kcyBpbiBDcmVhdGVTdG10CisgKiAtLS0tLS0tLS0tCisgKi8KKwordHlwZWRl ZiBzdHJ1Y3QgUGVyaW9kRGVmCit7CisJTm9kZVRhZwkJdHlwZTsKKwlPaWQJCQlvaWQ7CQkJ LyogcGVyaW9kIG9pZCwgb25jZSBpdCdzIHRyYW5zZm9ybWVkICovCisJY2hhcgkgICAqcGVy aW9kbmFtZTsJCS8qIHBlcmlvZCBuYW1lICovCisJY2hhcgkgICAqc3RhcnRjb2xuYW1lOwkv KiBuYW1lIG9mIHN0YXJ0IGNvbHVtbiAqLworCWNoYXIJICAgKmVuZGNvbG5hbWU7CQkvKiBu YW1lIG9mIGVuZCBjb2x1bW4gKi8KKwlBdHRyTnVtYmVyCXN0YXJ0YXR0bnVtOwkvKiBhdHRu dW0gb2YgdGhlIHN0YXJ0IGNvbHVtbiAqLworCUF0dHJOdW1iZXIJZW5kYXR0bnVtOwkJLyog YXR0bnVtIG9mIHRoZSBlbmQgY29sdW1uICovCisJQXR0ck51bWJlcglybmdhdHRudW07CQkv KiBhdHRudW0gb2YgdGhlIEdFTkVSQVRFRCByYW5nZSBjb2x1bW4gKi8KKwlMaXN0CSAgICpv cHRpb25zOwkJLyogb3B0aW9ucyBmcm9tIFdJVEggY2xhdXNlICovCisJY2hhcgkgICAqY29u c3RyYWludG5hbWU7CS8qIG5hbWUgb2YgdGhlIENIRUNLIGNvbnN0cmFpbnQgKi8KKwljaGFy CSAgICpyYW5nZXR5cGVuYW1lOwkvKiBuYW1lIG9mIHRoZSByYW5nZSB0eXBlICovCisJT2lk CQkJY29sdHlwaWQ7CQkvKiB0aGUgc3RhcnQvZW5kIGNvbCB0eXBlICovCisJT2lkCQkJcm5n dHlwaWQ7CQkvKiB0aGUgcmFuZ2UgdHlwZSB0byB1c2UgKi8KKwlpbnQJCQlsb2NhdGlvbjsJ CS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCit9IFBlcmlvZERlZjsK KwogLyogLS0tLS0tLS0tLQogICogRGVmaW5pdGlvbnMgZm9yIGNvbnN0cmFpbnRzIGluIENy ZWF0ZVN0bXQKICAqCkBAIC0zMjMyLDYgKzMyNjAsNyBAQCB0eXBlZGVmIHN0cnVjdCBJbmRl eFN0bXQKIAlMaXN0CSAgICppbmRleFBhcmFtczsJLyogY29sdW1ucyB0byBpbmRleDogYSBs aXN0IG9mIEluZGV4RWxlbSAqLwogCUxpc3QJICAgKmluZGV4SW5jbHVkaW5nUGFyYW1zOwkv KiBhZGRpdGlvbmFsIGNvbHVtbnMgdG8gaW5kZXg6IGEgbGlzdAogCQkJCQkJCQkJCSAqIG9m IEluZGV4RWxlbSAqLworCVBlcmlvZERlZiAgKnBlcmlvZDsJCQkvKiBUaGUgcGVyaW9kIGlu Y2x1ZGVkIGluIHRoZSBpbmRleCAqLwogCUxpc3QJICAgKm9wdGlvbnM7CQkvKiBXSVRIIGNs YXVzZSBvcHRpb25zOiBhIGxpc3Qgb2YgRGVmRWxlbSAqLwogCU5vZGUJICAgKndoZXJlQ2xh dXNlOwkvKiBxdWFsaWZpY2F0aW9uIChwYXJ0aWFsLWluZGV4IHByZWRpY2F0ZSkgKi8KIAlM aXN0CSAgICpleGNsdWRlT3BOYW1lczsgLyogZXhjbHVzaW9uIG9wZXJhdG9yIG5hbWVzLCBv ciBOSUwgaWYgbm9uZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNl X3V0aWxjbWQuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV91dGlsY21kLmgKaW5kZXgg MmI0MGEwYjViMS4uZmViNmMyNjAwNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2Vy L3BhcnNlX3V0aWxjbWQuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdXRpbGNt ZC5oCkBAIC00MCw1ICs0MCw2IEBAIGV4dGVybiBJbmRleFN0bXQgKmdlbmVyYXRlQ2xvbmVk SW5kZXhTdG10KFJhbmdlVmFyICpoZWFwUmVsLAogCQkJCQkJCQkJCSAgUmVsYXRpb24gc291 cmNlX2lkeCwKIAkJCQkJCQkJCQkgIGNvbnN0IHN0cnVjdCBBdHRyTWFwICphdHRtYXAsCiAJ CQkJCQkJCQkJICBPaWQgKmNvbnN0cmFpbnRPaWQpOworZXh0ZXJuIHZvaWQgdHJhbnNmb3Jt UGVyaW9kT3B0aW9ucyhQZXJpb2REZWYgKnBlcmlvZCk7CiAKICNlbmRpZgkJCQkJCQkvKiBQ QVJTRV9VVElMQ01EX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNj YWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKaW5kZXggNGI1MmUyZGZk ZS4uMjg2NDYxMDIyMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hl LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKQEAgLTk2LDYgKzk2LDgg QEAgZXh0ZXJuIE9pZAlnZXRfYXR0dHlwZShPaWQgcmVsaWQsIEF0dHJOdW1iZXIgYXR0bnVt KTsKIGV4dGVybiB2b2lkIGdldF9hdHR0eXBldHlwbW9kY29sbChPaWQgcmVsaWQsIEF0dHJO dW1iZXIgYXR0bnVtLAogCQkJCQkJCQkgIE9pZCAqdHlwaWQsIGludDMyICp0eXBtb2QsIE9p ZCAqY29sbGlkKTsKIGV4dGVybiBEYXR1bSBnZXRfYXR0b3B0aW9ucyhPaWQgcmVsaWQsIGlu dDE2IGF0dG51bSk7CitleHRlcm4gY2hhciAqZ2V0X3BlcmlvZG5hbWUoT2lkIHBlcmlvZGlk LCBib29sIG1pc3Npbmdfb2spOworZXh0ZXJuIE9pZAlnZXRfcGVyaW9kX29pZChPaWQgcmVs aWQsIGNvbnN0IGNoYXIgKnBlcmlvZG5hbWUsIGJvb2wgbWlzc2luZ19vayk7CiBleHRlcm4g T2lkCWdldF9jYXN0X29pZChPaWQgc291cmNldHlwZWlkLCBPaWQgdGFyZ2V0dHlwZWlkLCBi b29sIG1pc3Npbmdfb2spOwogZXh0ZXJuIGNoYXIgKmdldF9jb2xsYXRpb25fbmFtZShPaWQg Y29sbG9pZCk7CiBleHRlcm4gYm9vbCBnZXRfY29sbGF0aW9uX2lzZGV0ZXJtaW5pc3RpYyhP aWQgY29sbG9pZCk7CkBAIC0xOTgsNiArMjAwLDcgQEAgZXh0ZXJuIE9pZAlnZXRfcmFuZ2Vf c3VidHlwZShPaWQgcmFuZ2VPaWQpOwogZXh0ZXJuIE9pZAlnZXRfcmFuZ2VfY29sbGF0aW9u KE9pZCByYW5nZU9pZCk7CiBleHRlcm4gT2lkCWdldF9yYW5nZV9tdWx0aXJhbmdlKE9pZCBy YW5nZU9pZCk7CiBleHRlcm4gT2lkCWdldF9tdWx0aXJhbmdlX3JhbmdlKE9pZCBtdWx0aXJh bmdlT2lkKTsKK2V4dGVybiBPaWQJZ2V0X3N1YnR5cGVfcmFuZ2UoT2lkIHN1YnR5cGVPaWQp OwogZXh0ZXJuIE9pZAlnZXRfaW5kZXhfY29sdW1uX29wY2xhc3MoT2lkIGluZGV4X29pZCwg aW50IGF0dG5vKTsKIGV4dGVybiBib29sIGdldF9pbmRleF9pc3JlcGxpZGVudChPaWQgaW5k ZXhfb2lkKTsKIGV4dGVybiBib29sIGdldF9pbmRleF9pc3ZhbGlkKE9pZCBpbmRleF9vaWQp OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUuaCBiL3NyYy9pbmNs dWRlL3V0aWxzL3N5c2NhY2hlLmgKaW5kZXggNWQ0N2E2NTJjYy4uZGM4NjQ2ZjVmMSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUuaAorKysgYi9zcmMvaW5jbHVk ZS91dGlscy9zeXNjYWNoZS5oCkBAIC03NSw2ICs3NSw4IEBAIGVudW0gU3lzQ2FjaGVJZGVu dGlmaWVyCiAJUEFSQU1FVEVSQUNMTkFNRSwKIAlQQVJBTUVURVJBQ0xPSUQsCiAJUEFSVFJF TElELAorCVBFUklPRE5BTUUsCisJUEVSSU9ET0lELAogCVBST0NOQU1FQVJHU05TUCwKIAlQ Uk9DT0lELAogCVBVQkxJQ0FUSU9OTkFNRSwKQEAgLTg0LDYgKzg2LDcgQEAgZW51bSBTeXND YWNoZUlkZW50aWZpZXIKIAlQVUJMSUNBVElPTlJFTCwKIAlQVUJMSUNBVElPTlJFTE1BUCwK IAlSQU5HRU1VTFRJUkFOR0UsCisJUkFOR0VTVUJUWVBFLAogCVJBTkdFVFlQRSwKIAlSRUxO QU1FTlNQLAogCVJFTE9JRCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9k ZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf ZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCmluZGV4IDAzMDJmNzliYjcuLjA1Zjk3 ODBlY2YgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90 ZXN0X2RkbF9kZXBhcnNlLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBh cnNlL3Rlc3RfZGRsX2RlcGFyc2UuYwpAQCAtMTgwLDYgKzE4MCwxMiBAQCBnZXRfYWx0ZXJ0 YWJsZV9zdWJjbWRpbmZvKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQljYXNlIEFUX0Ryb3BDb25z dHJhaW50OgogCQkJCXN0cnR5cGUgPSAiRFJPUCBDT05TVFJBSU5UIjsKIAkJCQlicmVhazsK KwkJCWNhc2UgQVRfQWRkUGVyaW9kOgorCQkJCXN0cnR5cGUgPSAiQUREIFBFUklPRCI7CisJ CQkJYnJlYWs7CisJCQljYXNlIEFUX0Ryb3BQZXJpb2Q6CisJCQkJc3RydHlwZSA9ICJEUk9Q IFBFUklPRCI7CisJCQkJYnJlYWs7CiAJCQljYXNlIEFUX1JlQWRkQ29tbWVudDoKIAkJCQlz dHJ0eXBlID0gIihyZSkgQUREIENPTU1FTlQiOwogCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wZXJpb2RzLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcGVyaW9kcy5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMC4uNjQ4MWM5YjMwNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcGVyaW9kcy5vdXQKQEAgLTAsMCArMSwxNzcgQEAKKy8qIFN5c3RlbSBw ZXJpb2RzIGFyZSBub3QgaW1wbGVtZW50ZWQgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50 ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBzeXN0ZW1fdGltZSAoZHMsIGRl KSk7CitFUlJPUjogIFBFUklPRCBGT1IgU1lTVEVNX1RJTUUgaXMgbm90IHN1cHBvcnRlZAor TElORSAyOiBjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUs IHBlcmlvZCBmb3Igc3kuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeCisvKiBQZXJpb2RzIG11c3Qgc3BlY2lmeSBhY3R1YWwg Y29sdW1ucyAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBk YXRlLCBwZXJpb2QgZm9yIHAgKGJvZ3VzLCBkZSkpOworRVJST1I6ICBjb2x1bW4gImJvZ3Vz IiBvZiByZWxhdGlvbiAicHQiIGRvZXMgbm90IGV4aXN0CitjcmVhdGUgdGFibGUgcHQgKGlk IGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGJvZ3VzKSk7 CitFUlJPUjogIGNvbHVtbiAiYm9ndXMiIG9mIHJlbGF0aW9uICJwdCIgZG9lcyBub3QgZXhp c3QKKy8qIERhdGEgdHlwZXMgbXVzdCBtYXRjaCBleGFjdGx5ICovCitjcmVhdGUgdGFibGUg cHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIHRpbWVzdGFtcCwgcGVyaW9kIGZvciBwIChk cywgZGUpKTsKK0VSUk9SOiAgc3RhcnQgYW5kIGVuZCBjb2x1bW5zIG9mIHBlcmlvZCBtdXN0 IGJlIG9mIHNhbWUgdHlwZQorY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyB0ZXh0 IGNvbGxhdGUgIkMiLCBkZSB0ZXh0IGNvbGxhdGUgIlBPU0lYIiwgcGVyaW9kIGZvciBwIChk cywgZGUpKTsKK0VSUk9SOiAgc3RhcnQgYW5kIGVuZCBjb2x1bW5zIG9mIHBlcmlvZCBtdXN0 IGhhdmUgc2FtZSBjb2xsYXRpb24KKy8qIFBlcmlvZHMgbXVzdCBoYXZlIGEgZGVmYXVsdCBC VHJlZSBvcGVyYXRvciBjbGFzcyAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBk cyB4bWwsIGRlIHhtbCwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKK0VSUk9SOiAgbm8gcmFu Z2UgdHlwZSBmb3IgeG1sIGZvdW5kIGZvciBwZXJpb2QgcAorSElOVDogIFlvdSBjYW4gZGVm aW5lIGEgY3VzdG9tIHJhbmdlIHR5cGUgd2l0aCBDUkVBVEUgVFlQRQorLyogUGVyaW9kIGFu ZCBjb2x1bW4gbmFtZXMgYXJlIGluIHRoZSBzYW1lIG5hbWVzcGFjZSAqLworY3JlYXRlIHRh YmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIGN0aWQg KGRzLCBkZSkpOworRVJST1I6ICBwZXJpb2QgbmFtZSAiY3RpZCIgY29uZmxpY3RzIHdpdGgg YSBzeXN0ZW0gY29sdW1uIG5hbWUKK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMg ZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBpZCAoZHMsIGRlKSk7CitFUlJPUjogIHBlcmlv ZCBuYW1lICJpZCIgY29uZmxpY3RzIHdpdGggYSBjb2x1bW4gbmFtZQorLyogUGVyaW9kIG5h bWUgY2FuJ3QgYmUgZ2l2ZW4gbW9yZSB0aGFuIG9uY2UgKi8KK2NyZWF0ZSB0YWJsZSBwdCAo aWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpLCBw ZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworRVJST1I6ICBwZXJpb2QgbmFtZSAicCIgc3BlY2lm aWVkIG1vcmUgdGhhbiBvbmNlCisvKiBOb3cgbWFrZSBvbmUgdGhhdCB3b3JrcyAqLworY3Jl YXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9y IHAgKGRzLCBkZSkpOworLyogU0VMRUNUICogZXhjbHVkZXMgdGhlIFBFUklPRCAqLworaW5z ZXJ0IGludG8gcHQgdmFsdWVzICgxLCAnMjAwMC0wMS0wMScsICcyMDAxLTAxLTAxJyk7Citz ZWxlY3QgKiBmcm9tIHB0OworIGlkIHwgICAgIGRzICAgICB8ICAgICBkZSAgICAgCistLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgMSB8IDAxLTAxLTIwMDAgfCAwMS0wMS0y MDAxCisoMSByb3cpCisKKy8qIFlvdSBjYW4gZ2V0IGl0IGlmIHlvdSB3YW50ICovCitzZWxl Y3QgKiwgcCBmcm9tIHB0OworIGlkIHwgICAgIGRzICAgICB8ICAgICBkZSAgICAgfCAgICAg ICAgICAgIHAgICAgICAgICAgICAKKy0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIDEgfCAwMS0wMS0yMDAwIHwgMDEtMDEtMjAw MSB8IFswMS0wMS0yMDAwLDAxLTAxLTIwMDEpCisoMSByb3cpCisKKy8qIFR3byBhcmUgb2th eSAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwg cGVyaW9kIGZvciBwMSAoZHMsIGRlKSwgcGVyaW9kIGZvciBwMiAoZHMsIGRlKSk7Citkcm9w IHRhYmxlIHB0MjsKKy8qCisgKiBBTFRFUiBUQUJMRSB0ZXN0cworICovCithbHRlciB0YWJs ZSBwdCBkcm9wIHBlcmlvZCBmb3IgcDsKK2FsdGVyIHRhYmxlIHB0IGFkZCBwZXJpb2QgZm9y IHN5c3RlbV90aW1lIChkcywgZGUpOworRVJST1I6ICBQRVJJT0QgRk9SIFNZU1RFTV9USU1F IGlzIG5vdCBzdXBwb3J0ZWQKK2FsdGVyIHRhYmxlIHB0IGFkZCBwZXJpb2QgZm9yIHAgKGRz LCBkZSk7CisvKiBBZGRpbmcgYSBzZWNvbmQgb25lICovCitjcmVhdGUgdGFibGUgcHQyIChp ZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAxIChkcywgZGUpKTsK K2FsdGVyIHRhYmxlIHB0MiBhZGQgcGVyaW9kIGZvciBwMiAoZHMsIGRlKTsKK2Ryb3AgdGFi bGUgcHQyOworLyogQ2FuJ3QgZHJvcCBpdHMgY29sdW1ucyAqLworYWx0ZXIgdGFibGUgcHQg ZHJvcCBjb2x1bW4gZHM7CitFUlJPUjogIGNhbm5vdCBkcm9wIGNvbHVtbiBkcyBvZiB0YWJs ZSBwdCBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVwZW5kIG9uIGl0CitERVRBSUw6ICBwZXJp b2QgcCBvbiB0YWJsZSBwdCBkZXBlbmRzIG9uIGNvbHVtbiBkcyBvZiB0YWJsZSBwdAorSElO VDogIFVzZSBEUk9QIC4uLiBDQVNDQURFIHRvIGRyb3AgdGhlIGRlcGVuZGVudCBvYmplY3Rz IHRvby4KK2FsdGVyIHRhYmxlIHB0IGRyb3AgY29sdW1uIGRlOworRVJST1I6ICBjYW5ub3Qg ZHJvcCBjb2x1bW4gZGUgb2YgdGFibGUgcHQgYmVjYXVzZSBvdGhlciBvYmplY3RzIGRlcGVu ZCBvbiBpdAorREVUQUlMOiAgcGVyaW9kIHAgb24gdGFibGUgcHQgZGVwZW5kcyBvbiBjb2x1 bW4gZGUgb2YgdGFibGUgcHQKK0hJTlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBkcm9w IHRoZSBkZXBlbmRlbnQgb2JqZWN0cyB0b28uCisvKiBDYW4ndCBjaGFuZ2UgdGhlIGRhdGEg dHlwZXMgKi8KK2FsdGVyIHRhYmxlIHB0IGFsdGVyIGNvbHVtbiBkcyB0eXBlIHRpbWVzdGFt cDsKK0VSUk9SOiAgY2Fubm90IGFsdGVyIHR5cGUgb2YgYSBjb2x1bW4gdXNlZCBieSBhIHBl cmlvZAorREVUQUlMOiAgcGVyaW9kIHAgb24gdGFibGUgcHQgZGVwZW5kcyBvbiBjb2x1bW4g ImRzIgorYWx0ZXIgdGFibGUgcHQgYWx0ZXIgY29sdW1uIGRzIHR5cGUgdGltZXN0YW1wOwor RVJST1I6ICBjYW5ub3QgYWx0ZXIgdHlwZSBvZiBhIGNvbHVtbiB1c2VkIGJ5IGEgcGVyaW9k CitERVRBSUw6ICBwZXJpb2QgcCBvbiB0YWJsZSBwdCBkZXBlbmRzIG9uIGNvbHVtbiAiZHMi CisvKiBjb2x1bW4vcGVyaW9kIG5hbWVzcGFjZSBjb25mbGljdHMgKi8KK2FsdGVyIHRhYmxl IHB0IGFkZCBjb2x1bW4gcCBpbnRlZ2VyOworRVJST1I6ICBjb2x1bW4gbmFtZSAicCIgY29u ZmxpY3RzIHdpdGggYSBwZXJpb2QgbmFtZQorYWx0ZXIgdGFibGUgcHQgcmVuYW1lIGNvbHVt biBpZCB0byBwOworRVJST1I6ICBjb2x1bW4gbmFtZSAicCIgY29uZmxpY3RzIHdpdGggYSBw ZXJpb2QgbmFtZQorYWx0ZXIgdGFibGUgcHQgYWRkIHBlcmlvZCBmb3IgdGFibGVvaWQgKGRz LCBkZSk7CitFUlJPUjogIHBlcmlvZCBuYW1lICJ0YWJsZW9pZCIgY29uZmxpY3RzIHdpdGgg YSBzeXN0ZW0gY29sdW1uIG5hbWUKK2FsdGVyIHRhYmxlIHB0IGFkZCBwZXJpb2QgZm9yICIu Li4uLi4uLnBnLmRyb3BwZWQuNC4uLi4uLi4uIiAoZHMsIGRlKTsKK0VSUk9SOiAgcGVyaW9k IG5hbWUgIi4uLi4uLi4ucGcuZHJvcHBlZC40Li4uLi4uLi4iIGNvbmZsaWN0cyB3aXRoIGEg Y29sdW1uIG5hbWUKKy8qIGFkZGluZyBjb2x1bW5zIGFuZCB0aGUgcGVyaW9kIGF0IHRoZSBz YW1lIHRpbWUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIpOworYWx0ZXIgdGFi bGUgcHQyIGFkZCBjb2x1bW4gZHMgZGF0ZSwgYWRkIGNvbHVtbiBkZSBkYXRlLCBhZGQgcGVy aW9kIGZvciBwIChkcywgZGUpOworZHJvcCB0YWJsZSBwdDI7CisvKiBBbWJpZ3VvdXMgcmFu Z2UgdHlwZXMgcmFpc2UgYW4gZXJyb3IgKi8KK2NyZWF0ZSB0eXBlIG15ZGF0ZXJhbmdlIGFz IHJhbmdlKHN1YnR5cGU9ZGF0ZSk7CitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnQsIGRzIGRh dGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitFUlJPUjogIGFtYmlndW91 cyByYW5nZSBmb3IgdHlwZSBkYXRlCisvKiBZb3UgY2FuIGdpdmUgYW4gZXhwbGljaXQgcmFu Z2UgdHlwZSAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50LCBkcyBkYXRlLCBkZSBkYXRl LCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAocmFuZ2V0eXBlID0gJ215ZGF0ZXJhbmdl JykpOworZHJvcCB0eXBlIG15ZGF0ZXJhbmdlOworRVJST1I6ICBjYW5ub3QgZHJvcCB0eXBl IG15ZGF0ZXJhbmdlIGJlY2F1c2Ugb3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJ TDogIHBlcmlvZCBwIG9uIHRhYmxlIHB0MiBkZXBlbmRzIG9uIHR5cGUgbXlkYXRlcmFuZ2UK K0hJTlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBkcm9wIHRoZSBkZXBlbmRlbnQgb2Jq ZWN0cyB0b28uCitkcm9wIHR5cGUgbXlkYXRlcmFuZ2UgY2FzY2FkZTsKK05PVElDRTogIGRy b3AgY2FzY2FkZXMgdG8gcGVyaW9kIHAgb24gdGFibGUgcHQyCitkcm9wIHRhYmxlIHB0MjsK K2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZv ciBwIChkcywgZGUpIHdpdGggKHJhbmdldHlwZSA9ICdkYXRlcmFuZ2UnKSk7CisvKiBSYW5n ZSB0eXBlIGlzIG5vdCBmb3VuZCAqLworY3JlYXRlIHRhYmxlIHB0MyAoaWQgaW50LCBkcyBk YXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAocmFuZ2V0eXBlID0g J25vdGFyYW5nZScpKTsKK0VSUk9SOiAgUmFuZ2UgdHlwZSBub3RhcmFuZ2Ugbm90IGZvdW5k CisvKiBSYW5nZSB0eXBlIGlzIHRoZSB3cm9uZyB0eXBlICovCitjcmVhdGUgdGFibGUgcHQz IChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRo IChyYW5nZXR5cGUgPSAndHN0enJhbmdlJykpOworRVJST1I6ICBSYW5nZSB0eXBlIHRzdHpy YW5nZSBkb2VzIG5vdCBtYXRjaCBjb2x1bW4gdHlwZSBkYXRlCitkcm9wIHRhYmxlIHB0MjsK Ky8qIENSRUFURSBUQUJMRSAoTElLRSAuLi4pICovCisvKiBQZXJpb2RzIGFyZSBub3QgY29w aWVkIGJ5IExJS0UsIHNvIHRoZWlyIGNvbHVtbnMgYXJlbid0IGVpdGhlciAqLworY3JlYXRl IHRhYmxlIHB0MiAobGlrZSBwdCk7CitcZCBwdDIKKyAgICAgICAgICAgICAgICBUYWJsZSAi cHVibGljLnB0MiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUg fCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tCisgaWQgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwg CisgZHMgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgZGUgICAg IHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisKK2Ryb3AgdGFibGUgcHQy OworLyogQ2FuIGFkZCBhIHBlcmlvZCByZWZlcnJpbmcgdG8gTElLRSdkIGNvbHVtbnMgKi8K K2NyZWF0ZSB0YWJsZSBub3RfcCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSk7Citj cmVhdGUgdGFibGUgcHQyIChsaWtlIG5vdF9wLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOwor XGQgcHQyCisgICAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy5wdDIiCisgQ29sdW1uIHwg IFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkICAgICB8IGlu dGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGRzICAgICB8IGRhdGUgICAgfCAg ICAgICAgICAgfCAgICAgICAgICB8IAorIGRlICAgICB8IGRhdGUgICAgfCAgICAgICAgICAg fCAgICAgICAgICB8IAorUGVyaW9kczoKKyAgICBwIChkcywgZGUpCitDaGVjayBjb25zdHJh aW50czoKKyAgICAicHQyX3BfY2hlY2siIENIRUNLIChkcyA8IGRlKQorCitkcm9wIHRhYmxl IHB0MjsKKy8qIENhbiBhZGQgYSBwZXJpb2Qgd2l0aCB0aGUgc2FtZSBuYW1lICovCitjcmVh dGUgdGFibGUgcHQyIChsaWtlIHB0LCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworXGQgcHQy CisgICAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy5wdDIiCisgQ29sdW1uIHwgIFR5cGUg ICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkICAgICB8IGludGVnZXIg fCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGRzICAgICB8IGRhdGUgICAgfCAgICAgICAg ICAgfCAgICAgICAgICB8IAorIGRlICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAg ICAgICB8IAorUGVyaW9kczoKKyAgICBwIChkcywgZGUpCitDaGVjayBjb25zdHJhaW50czoK KyAgICAicHQyX3BfY2hlY2siIENIRUNLIChkcyA8IGRlKQorCitkcm9wIHRhYmxlIHB0MjsK Ky8qIENhbiBhZGQgYSBwZXJpb2Qgd2l0aCBhIGRpZmZlcmVudCBuYW1lICovCitjcmVhdGUg dGFibGUgcHQyIChsaWtlIHB0LCBwZXJpb2QgZm9yIHAyIChkcywgZGUpKTsKK1xkIHB0Mgor ICAgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMucHQyIgorIENvbHVtbiB8ICBUeXBlICAg fCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZCAgICAgfCBpbnRlZ2VyIHwg ICAgICAgICAgIHwgICAgICAgICAgfCAKKyBkcyAgICAgfCBkYXRlICAgIHwgICAgICAgICAg IHwgICAgICAgICAgfCAKKyBkZSAgICAgfCBkYXRlICAgIHwgICAgICAgICAgIHwgICAgICAg ICAgfCAKK1BlcmlvZHM6CisgICAgcDIgKGRzLCBkZSkKK0NoZWNrIGNvbnN0cmFpbnRzOgor ICAgICJwdDJfcDJfY2hlY2siIENIRUNLIChkcyA8IGRlKQorCitkcm9wIHRhYmxlIHB0MjsK Ky8qIENhbid0IGFkZCBhIHBlcmlvZCB3aG9zZSBuYW1lIGNvbmZsaWN0cyB3aXRoIGEgTElL RSdkIGNvbHVtbiAqLworY3JlYXRlIHRhYmxlIHB0MiAobGlrZSBwdCwgcGVyaW9kIGZvciBp ZCAoZHMsIGRlKSk7CitFUlJPUjogIHBlcmlvZCBuYW1lICJpZCIgY29uZmxpY3RzIHdpdGgg YSBjb2x1bW4gbmFtZQorLyogQ1JFQVRFIFRBTEJFIElOSEVSSVRTICovCisvKiBDYW4ndCBp bmhlcml0IGZyb20gYSB0YWJsZSB3aXRoIGEgcGVyaW9kICovCitjcmVhdGUgdGFibGUgcHQy IChuYW1lIHRleHQpIGluaGVyaXRzIChwdCk7CitFUlJPUjogIEluaGVyaXRpbmcgZnJvbSBh IHRhYmxlIHdpdGggYSBQRVJJT0QgaXMgbm90IHN1cHBvcnRlZAorLyogQ2FuJ3QgaW5oZXJp dCB3aXRoIGEgcGVyaW9kICovCitjcmVhdGUgdGFibGUgcHQyIChkMnMgZGF0ZSwgZDJlIGRh dGUsIHBlcmlvZCBmb3IgcCAoZDJzLCBkMmUpKSBpbmhlcml0cyAobm90X3ApOworRVJST1I6 ICBJbmhlcml0aW5nIGlzIG5vdCBzdXBwb3J0ZWQgd2hlbiBhIHRhYmxlIGhhcyBhIFBFUklP RAorZHJvcCB0YWJsZSBub3RfcDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFy YWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmlu ZGV4IGNjMmY2YjQ2ZTAuLmQ2YjhiOTZkODggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9z Y2hlZHVsZQpAQCAtNDMsNyArNDMsNyBAQCB0ZXN0OiBjb3B5IGNvcHlzZWxlY3QgY29weWRt bCBpbnNlcnQgaW5zZXJ0X2NvbmZsaWN0CiAjIE5vdGU6IG1hbnkgb2YgdGhlIHRlc3RzIGlu IGxhdGVyIGdyb3VwcyBkZXBlbmQgb24gY3JlYXRlX2luZGV4CiAjIC0tLS0tLS0tLS0KIHRl c3Q6IGNyZWF0ZV9mdW5jdGlvbl9jIGNyZWF0ZV9taXNjIGNyZWF0ZV9vcGVyYXRvciBjcmVh dGVfcHJvY2VkdXJlIGNyZWF0ZV90YWJsZSBjcmVhdGVfdHlwZSBjcmVhdGVfc2NoZW1hCi10 ZXN0OiBjcmVhdGVfaW5kZXggY3JlYXRlX2luZGV4X3NwZ2lzdCBjcmVhdGVfdmlldyBpbmRl eF9pbmNsdWRpbmcgaW5kZXhfaW5jbHVkaW5nX2dpc3QKK3Rlc3Q6IGNyZWF0ZV9pbmRleCBj cmVhdGVfaW5kZXhfc3BnaXN0IGNyZWF0ZV92aWV3IGluZGV4X2luY2x1ZGluZyBpbmRleF9p bmNsdWRpbmdfZ2lzdCBwZXJpb2RzCiAKICMgLS0tLS0tLS0tLQogIyBBbm90aGVyIGdyb3Vw IG9mIHBhcmFsbGVsIHRlc3RzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9w ZXJpb2RzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BlcmlvZHMuc3FsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmYwYmU4OTAyMTcKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wZXJpb2RzLnNxbApAQCAtMCwwICsxLDEx OSBAQAorLyogU3lzdGVtIHBlcmlvZHMgYXJlIG5vdCBpbXBsZW1lbnRlZCAqLworY3JlYXRl IHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHN5 c3RlbV90aW1lIChkcywgZGUpKTsKKworLyogUGVyaW9kcyBtdXN0IHNwZWNpZnkgYWN0dWFs IGNvbHVtbnMgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUg ZGF0ZSwgcGVyaW9kIGZvciBwIChib2d1cywgZGUpKTsKK2NyZWF0ZSB0YWJsZSBwdCAoaWQg aW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgYm9ndXMpKTsK KworLyogRGF0YSB0eXBlcyBtdXN0IG1hdGNoIGV4YWN0bHkgKi8KK2NyZWF0ZSB0YWJsZSBw dCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgdGltZXN0YW1wLCBwZXJpb2QgZm9yIHAgKGRz LCBkZSkpOworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyB0ZXh0IGNvbGxhdGUg IkMiLCBkZSB0ZXh0IGNvbGxhdGUgIlBPU0lYIiwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsK KworLyogUGVyaW9kcyBtdXN0IGhhdmUgYSBkZWZhdWx0IEJUcmVlIG9wZXJhdG9yIGNsYXNz ICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIHhtbCwgZGUgeG1sLCBwZXJp b2QgZm9yIHAgKGRzLCBkZSkpOworCisvKiBQZXJpb2QgYW5kIGNvbHVtbiBuYW1lcyBhcmUg aW4gdGhlIHNhbWUgbmFtZXNwYWNlICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIs IGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgY3RpZCAoZHMsIGRlKSk7CitjcmVhdGUg dGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgaWQg KGRzLCBkZSkpOworCisvKiBQZXJpb2QgbmFtZSBjYW4ndCBiZSBnaXZlbiBtb3JlIHRoYW4g b25jZSAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRl LCBwZXJpb2QgZm9yIHAgKGRzLCBkZSksIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CisKKy8q IE5vdyBtYWtlIG9uZSB0aGF0IHdvcmtzICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVn ZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CisKKy8qIFNF TEVDVCAqIGV4Y2x1ZGVzIHRoZSBQRVJJT0QgKi8KK2luc2VydCBpbnRvIHB0IHZhbHVlcyAo MSwgJzIwMDAtMDEtMDEnLCAnMjAwMS0wMS0wMScpOworc2VsZWN0ICogZnJvbSBwdDsKKwor LyogWW91IGNhbiBnZXQgaXQgaWYgeW91IHdhbnQgKi8KK3NlbGVjdCAqLCBwIGZyb20gcHQ7 CisKKy8qIFR3byBhcmUgb2theSAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdlciwg ZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwMSAoZHMsIGRlKSwgcGVyaW9kIGZvciBw MiAoZHMsIGRlKSk7Citkcm9wIHRhYmxlIHB0MjsKKworLyoKKyAqIEFMVEVSIFRBQkxFIHRl c3RzCisgKi8KK2FsdGVyIHRhYmxlIHB0IGRyb3AgcGVyaW9kIGZvciBwOworYWx0ZXIgdGFi bGUgcHQgYWRkIHBlcmlvZCBmb3Igc3lzdGVtX3RpbWUgKGRzLCBkZSk7CithbHRlciB0YWJs ZSBwdCBhZGQgcGVyaW9kIGZvciBwIChkcywgZGUpOworCisvKiBBZGRpbmcgYSBzZWNvbmQg b25lICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRl LCBwZXJpb2QgZm9yIHAxIChkcywgZGUpKTsKK2FsdGVyIHRhYmxlIHB0MiBhZGQgcGVyaW9k IGZvciBwMiAoZHMsIGRlKTsKK2Ryb3AgdGFibGUgcHQyOworCisvKiBDYW4ndCBkcm9wIGl0 cyBjb2x1bW5zICovCithbHRlciB0YWJsZSBwdCBkcm9wIGNvbHVtbiBkczsKK2FsdGVyIHRh YmxlIHB0IGRyb3AgY29sdW1uIGRlOworCisvKiBDYW4ndCBjaGFuZ2UgdGhlIGRhdGEgdHlw ZXMgKi8KK2FsdGVyIHRhYmxlIHB0IGFsdGVyIGNvbHVtbiBkcyB0eXBlIHRpbWVzdGFtcDsK K2FsdGVyIHRhYmxlIHB0IGFsdGVyIGNvbHVtbiBkcyB0eXBlIHRpbWVzdGFtcDsKKworLyog Y29sdW1uL3BlcmlvZCBuYW1lc3BhY2UgY29uZmxpY3RzICovCithbHRlciB0YWJsZSBwdCBh ZGQgY29sdW1uIHAgaW50ZWdlcjsKK2FsdGVyIHRhYmxlIHB0IHJlbmFtZSBjb2x1bW4gaWQg dG8gcDsKK2FsdGVyIHRhYmxlIHB0IGFkZCBwZXJpb2QgZm9yIHRhYmxlb2lkIChkcywgZGUp OworYWx0ZXIgdGFibGUgcHQgYWRkIHBlcmlvZCBmb3IgIi4uLi4uLi4ucGcuZHJvcHBlZC40 Li4uLi4uLi4iIChkcywgZGUpOworCisvKiBhZGRpbmcgY29sdW1ucyBhbmQgdGhlIHBlcmlv ZCBhdCB0aGUgc2FtZSB0aW1lICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnRlZ2VyKTsK K2FsdGVyIHRhYmxlIHB0MiBhZGQgY29sdW1uIGRzIGRhdGUsIGFkZCBjb2x1bW4gZGUgZGF0 ZSwgYWRkIHBlcmlvZCBmb3IgcCAoZHMsIGRlKTsKK2Ryb3AgdGFibGUgcHQyOworCisvKiBB bWJpZ3VvdXMgcmFuZ2UgdHlwZXMgcmFpc2UgYW4gZXJyb3IgKi8KK2NyZWF0ZSB0eXBlIG15 ZGF0ZXJhbmdlIGFzIHJhbmdlKHN1YnR5cGU9ZGF0ZSk7CitjcmVhdGUgdGFibGUgcHQyIChp ZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CisKKy8q IFlvdSBjYW4gZ2l2ZSBhbiBleHBsaWNpdCByYW5nZSB0eXBlICovCitjcmVhdGUgdGFibGUg cHQyIChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3 aXRoIChyYW5nZXR5cGUgPSAnbXlkYXRlcmFuZ2UnKSk7Citkcm9wIHR5cGUgbXlkYXRlcmFu Z2U7Citkcm9wIHR5cGUgbXlkYXRlcmFuZ2UgY2FzY2FkZTsKK2Ryb3AgdGFibGUgcHQyOwor Y3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9y IHAgKGRzLCBkZSkgd2l0aCAocmFuZ2V0eXBlID0gJ2RhdGVyYW5nZScpKTsKKworLyogUmFu Z2UgdHlwZSBpcyBub3QgZm91bmQgKi8KK2NyZWF0ZSB0YWJsZSBwdDMgKGlkIGludCwgZHMg ZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGggKHJhbmdldHlwZSA9 ICdub3RhcmFuZ2UnKSk7CisKKy8qIFJhbmdlIHR5cGUgaXMgdGhlIHdyb25nIHR5cGUgKi8K K2NyZWF0ZSB0YWJsZSBwdDMgKGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZv ciBwIChkcywgZGUpIHdpdGggKHJhbmdldHlwZSA9ICd0c3R6cmFuZ2UnKSk7Citkcm9wIHRh YmxlIHB0MjsKKworLyogQ1JFQVRFIFRBQkxFIChMSUtFIC4uLikgKi8KKworLyogUGVyaW9k cyBhcmUgbm90IGNvcGllZCBieSBMSUtFLCBzbyB0aGVpciBjb2x1bW5zIGFyZW4ndCBlaXRo ZXIgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGxpa2UgcHQpOworXGQgcHQyCitkcm9wIHRhYmxl IHB0MjsKKworLyogQ2FuIGFkZCBhIHBlcmlvZCByZWZlcnJpbmcgdG8gTElLRSdkIGNvbHVt bnMgKi8KK2NyZWF0ZSB0YWJsZSBub3RfcCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0 ZSk7CitjcmVhdGUgdGFibGUgcHQyIChsaWtlIG5vdF9wLCBwZXJpb2QgZm9yIHAgKGRzLCBk ZSkpOworXGQgcHQyCitkcm9wIHRhYmxlIHB0MjsKKworLyogQ2FuIGFkZCBhIHBlcmlvZCB3 aXRoIHRoZSBzYW1lIG5hbWUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGxpa2UgcHQsIHBlcmlv ZCBmb3IgcCAoZHMsIGRlKSk7CitcZCBwdDIKK2Ryb3AgdGFibGUgcHQyOworCisvKiBDYW4g YWRkIGEgcGVyaW9kIHdpdGggYSBkaWZmZXJlbnQgbmFtZSAqLworY3JlYXRlIHRhYmxlIHB0 MiAobGlrZSBwdCwgcGVyaW9kIGZvciBwMiAoZHMsIGRlKSk7CitcZCBwdDIKK2Ryb3AgdGFi bGUgcHQyOworCisvKiBDYW4ndCBhZGQgYSBwZXJpb2Qgd2hvc2UgbmFtZSBjb25mbGljdHMg d2l0aCBhIExJS0UnZCBjb2x1bW4gKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGxpa2UgcHQsIHBl cmlvZCBmb3IgaWQgKGRzLCBkZSkpOworCisvKiBDUkVBVEUgVEFMQkUgSU5IRVJJVFMgKi8K KworLyogQ2FuJ3QgaW5oZXJpdCBmcm9tIGEgdGFibGUgd2l0aCBhIHBlcmlvZCAqLworY3Jl YXRlIHRhYmxlIHB0MiAobmFtZSB0ZXh0KSBpbmhlcml0cyAocHQpOworCisvKiBDYW4ndCBp bmhlcml0IHdpdGggYSBwZXJpb2QgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGQycyBkYXRlLCBk MmUgZGF0ZSwgcGVyaW9kIGZvciBwIChkMnMsIGQyZSkpIGluaGVyaXRzIChub3RfcCk7CisK K2Ryb3AgdGFibGUgbm90X3A7Ci0tIAoyLjQyLjAKCg== --------------F56VWTQ0Ck05qER7bvQmfAru--