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.96) (envelope-from ) id 1wf1sS-005DVK-1V for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Jul 2026 20:49:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wf1sQ-00FexI-1g for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Jul 2026 20:49:46 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wf1sO-00Fewx-1G for pgsql-hackers@lists.postgresql.org; Wed, 01 Jul 2026 20:49:45 +0000 Received: from fout-a5-smtp.messagingengine.com ([103.168.172.148]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wf1s3-000000018dT-2wkm for pgsql-hackers@postgresql.org; Wed, 01 Jul 2026 20:49:43 +0000 Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfout.phl.internal (Postfix) with ESMTP id 4DD8FEC01B3 for ; Wed, 1 Jul 2026 16:49:22 -0400 (EDT) Received: from phl-imap-02 ([10.202.2.81]) by phl-compute-02.internal (MEProxy); Wed, 01 Jul 2026 16:49:22 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=burd.me; h=cc :content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm2; t=1782938962; x=1783025362; bh=CYs1QWL29M Kid++jXRleJhUVC7fE73bWRDk3y8AmFsU=; b=QRqhT6livbBMj38QQ6eLwjpB9H MPE2+lCY4Ksr3NNaWy56jWCoKAkeOh1SnCjttf+GhsbA2ePwa+Tcjj+HPjkkrWRO Ea2BfvzLEeMwUQddJKoF2RDEWH2DKx4KXflCltrLetDoeQBWTrCuCS5C06SjaWvP uxEFMMqZ0Vf8Kb1U7MH2AGyhg7d6eF9B8I2tOq7qyfupJbKid9DEtOn18SpRB1P6 iXg2HcFg7lV6eLR8Erpzv2Le8g9WGyuybL1bZ6fV5hfB71CPTnooIpp636MwbHIv wrmpTdFDWVedyIykBnj0EUScLXuGAJea6cjpB60gGBjiDvhDp2/9n3naqKew== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t= 1782938962; x=1783025362; bh=CYs1QWL29MKid++jXRleJhUVC7fE73bWRDk 3y8AmFsU=; b=kUPWeydUKIdcxos1No4Z+7yGDKy87rb+Mn2ujMlZSQtgdQZdvR4 HFykL5q2P4Y4e9iF7xq1uGK31cWXkeREYxcAg0PNC5nWnsOTgR13xHgrboxz0Nd3 NI2+nlgwEUUiQLCr3eLdOdPmYpG047tb4dzRDyn3vXfVX5vRfMKY0x1t1eTtzqhb GRQrYceBImOPCWgMQT29fOnbSTbz8pYO/4lgARn/iNlonQgl/In1aD8UbiwYttZE 6+mV6LaqoN8jL7u6zZjut9oVU3y2w3gYHi5eMSVS2pR6R51gfCtvtL8ixCp+6tCJ A37BRpU/Z+g9oyrOzqk9aJFPwUDEO5B93Iw== X-ME-Sender: X-ME-Proxy-Cause: dmFkZTE873uUjIcLdjr3YYixe9e8EFujp6cuFfc85svwfNoRph90l9l+bJlDattM79f5Em pRsDDG/5791Hqp6eB6P45gMe8h3S2LJztOLdMXWhJAOhMZ8dt9fIMUM3uil5ZXO1dzbLy9 e9fdZWnz6Vctt/w4GmGgv014NOAoWBmwXYV/pCpzrXev3Ety0Gx/ph3xBEZRlrG36EkbI5 AyfJR2n98UH/5LNgcSbe9CIjGkiQjSCibuU0TQizAhGyAW21XXXg5DfwTANaWKjIw/jY+V DCtkQ3dUqsN2z/6OnaTz/BbGeAWQOOCcWkmafh8gvQ9CqfS4aP36NMwgkNIZspNUIffcot /gj1BHWX5XcqfAX4UQd+LdgJZ7jCQyGvvV6VUsaa8FazGP6s7/hOV6McQJhwfMV0dUpNHi Av1gZqurZut7TiS7swe43ogKxOh1pA+G9KLj806XHiL66ZKT9fGAtQBd0SSVsf0PnLzSWs YvvWv2hD4SzjnjTPZUXZkDXHybVs+dr+gLADKkY8U6s0xAHiXliKkwvQ4po9UgyFHbidex w5YOMDAYuRGOPozOOhYtllH1KOTkuuxhtFZSO6XkiKSfgCgKJMsjyudidtSuscbRCG222O 3zlGXdB9mAzDhWx/yRiznOD8bUwlgUBzF1bxOLSr1IGCFd4fD+8bQju3cvcg X-ME-Proxy: Feedback-ID: i675e48f3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id F159C700069; Wed, 1 Jul 2026 16:49:21 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface MIME-Version: 1.0 X-ThreadId: APOwk72ga2TB Date: Wed, 01 Jul 2026 16:49:01 -0400 From: "Greg Burd" To: pgsql-hackers Message-Id: <780845de-c0f9-4888-b43d-8d3caa7c2899@app.fastmail.com> In-Reply-To: References: Subject: Re: Tepid: selective index updates for heap relations Content-Type: multipart/mixed; boundary=732d2653398ad274b1166a00220a1f2b85c8ed8b List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --732d2653398ad274b1166a00220a1f2b85c8ed8b Content-Type: text/plain Content-Transfer-Encoding: 7bit I've create cf-6869 and rebased to fix conflicts due to a single conflict, the usual catversion.h bump. -greg --732d2653398ad274b1166a00220a1f2b85c8ed8b Content-Disposition: attachment; filename*0="v49-0001-Add-tests-to-cover-a-variety-of-heap-HOT-update-.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v49-0001-Add-tests-to-cover-a-variety-of-heap-HOT-update-.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSBhNThmOTM0YTZiMTViYTUzZjUxZDFiMzIwYmRhZGExNDNkY2JjMjA2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog VHVlLCAxMCBNYXIgMjAyNiAwOToyODoxNSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjQ5IDEv OV0gQWRkIHRlc3RzIHRvIGNvdmVyIGEgdmFyaWV0eSBvZiBoZWFwIEhPVCB1cGRhdGUKIGJl aGF2aW9ycwoKQWRkIHJlZ3Jlc3Npb24gY292ZXJhZ2UgZm9yIGV4aXN0aW5nIGNsYXNzaWMg SGVhcC1Pbmx5IFR1cGxlIChIT1QpIHVwZGF0ZQpiZWhhdmlvciwgY29tbWl0dGVkIGZpcnN0 IHNvIHRoZSBiZWhhdmlvcmFsIGNoYW5nZXMgaW4gdGhlIGxhdGVyIEhPVC1pbmRleGVkCmNv bW1pdHMgYXJlIGRpZmZhYmxlIGFnYWluc3QgYSBrbm93bi1nb29kIGJhc2VsaW5lLiAgVGhp cyBjb21taXQgYWRkcwp0ZXN0cyBzbyBhcyB0byBjb2RpZnkgZXhwbGljaXRseSB0aGUgSE9U IGNvbnRyYWN0IGZvciB0aGUgaGVhcCBBTS4KClRoZSBuZXcgaG90X3VwZGF0ZXMgcmVncmVz c2lvbiB0ZXN0IGV4ZXJjaXNlczoKLSBCYXNpYyBIT1QgdnMgbm9uLUhPVCB1cGRhdGUgZGVj aXNpb25zCi0gVGhlIGFsbC1vci1ub25lIHByb3BlcnR5IGFjcm9zcyBtdWx0aXBsZSBpbmRl eGVzCi0gUGFydGlhbCBpbmRleGVzIGFuZCBwcmVkaWNhdGUgaGFuZGxpbmcKLSBCUklOIChz dW1tYXJpemluZykgaW5kZXhlcyBhbGxvd2luZyBIT1QgdXBkYXRlcwotIFRPQVNUIGNvbHVt biBoYW5kbGluZyB3aXRoIEhPVAotIFVuaXF1ZSBjb25zdHJhaW50IGJlaGF2aW9yCi0gTXVs dGktY29sdW1uIGluZGV4ZXMKLSBQYXJ0aXRpb25lZCB0YWJsZSBIT1QgdXBkYXRlcwotIEhP VCBjaGFpbiBmb3JtYXRpb24gYW5kIHRoZSBpbmRleC1zY2FuIHdhbGsgb3ZlciBhIGNoYWlu CgpBdXRob3JlZC1ieTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+Ci0tLQogc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ob3RfdXBkYXRlcy5vdXQgfCA3NDUgKysrKysrKysrKysrKysr KysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgfCAg IDUgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0ZXMuc3FsICAgICAgfCA2MDUg KysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDEzNTUgaW5zZXJ0aW9ucygr KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaG90X3Vw ZGF0ZXMub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90 X3VwZGF0ZXMuc3FsCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9o b3RfdXBkYXRlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hvdF91cGRhdGVz Lm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjczZmUzMzEw ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2hvdF91 cGRhdGVzLm91dApAQCAtMCwwICsxLDc0NSBAQAorLS0KKy0tIEhPVF9VUERBVEVTCistLSBU ZXN0IEhlYXAtT25seSBUdXBsZSAoSE9UKSB1cGRhdGUgZGVjaXNpb25zCistLQorLS0gVGhp cyB0ZXN0IHN5c3RlbWF0aWNhbGx5IHZlcmlmaWVzIHRoYXQgSE9UIHVwZGF0ZXMgYXJlIHVz ZWQgd2hlbiBhcHByb3ByaWF0ZQorLS0gYW5kIGF2b2lkZWQgd2hlbiBuZWNlc3NhcnkgKGUu Zy4sIHdoZW4gaW5kZXhlZCBjb2x1bW5zIGFyZSBtb2RpZmllZCkuCistLQorLS0gV2UgdXNl IG11bHRpcGxlIHZhbGlkYXRpb24gbWV0aG9kczoKKy0tIDEuIFN0YXRpc3RpY3MgZnVuY3Rp b25zIChwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQpCistLSAyLiBwYWdlaW5zcGVj dCBleHRlbnNpb24gZm9yIEhPVCBjaGFpbiBleGFtaW5hdGlvbgorLS0gMy4gRVhQTEFJTiB0 byB2ZXJpZnkgaW5kZXggdXNhZ2UgYWZ0ZXIgdXBkYXRlcworLS0KKy0tIExvYWQgcmVxdWly ZWQgZXh0ZW5zaW9ucworQ1JFQVRFIEVYVEVOU0lPTiBJRiBOT1QgRVhJU1RTIHBhZ2VpbnNw ZWN0OworLS0gRnVuY3Rpb24gdG8gZ2V0IEhPVCB1cGRhdGUgY291bnQKK0NSRUFURSBPUiBS RVBMQUNFIEZVTkNUSU9OIGdldF9ob3RfY291bnQocmVsX25hbWUgdGV4dCkKK1JFVFVSTlMg VEFCTEUgKAorICAgIHVwZGF0ZXMgQklHSU5ULAorICAgIGhvdCBCSUdJTlQKKykgQVMgJCQK K0RFQ0xBUkUKKyAgcmVsX29pZCBvaWQ7CitCRUdJTgorICByZWxfb2lkIDo9IHJlbF9uYW1l OjpyZWdjbGFzczo6b2lkOworCisgIC0tIFJlYWQgYm90aCBjb21taXR0ZWQgYW5kIHRyYW5z YWN0aW9uLWxvY2FsIHN0YXRzCisgIC0tIEluIGF1dG9jb21taXQgbW9kZSAoZGVmYXVsdCBm b3IgcmVncmVzc2lvbiB0ZXN0cyksIHRoaXMgd29ya3MgY29ycmVjdGx5CisgIC0tIE5vdGU6 IEluIGV4cGxpY2l0IHRyYW5zYWN0aW9ucyAoQkVHSU4vQ09NTUlUKSwgY29tbWl0dGVkIHN0 YXRzIGFscmVhZHkKKyAgLS0gaW5jbHVkZSBmbHVzaGVkIHVwZGF0ZXMsIHNvIHRoaXMgd291 bGQgZG91YmxlLWNvdW50LiBGb3IgZXhwbGljaXQKKyAgLS0gdHJhbnNhY3Rpb24gdGVzdGlu ZywgY2FsbCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKSBiZWZvcmUgdGhpcyBmdW5jdGlv bi4KKyAgdXBkYXRlcyA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfdXBkYXRlZChy ZWxfb2lkKSwgMCkgKworICAgICAgICAgICAgIENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3Rf dHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApOworICBob3QgOj0gQ09BTEVTQ0UocGdfc3Rh dF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKHJlbF9vaWQpLCAwKSArCisgICAgICAgICBDT0FM RVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCk7 CisKKyAgUkVUVVJOIE5FWFQ7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworLS0gQ2hl Y2sgaWYgYSB0dXBsZSBpcyBwYXJ0IG9mIGEgSE9UIGNoYWluIChoYXMgYSBwcmVkZWNlc3Nv ciBvbiBzYW1lIHBhZ2UpCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBoYXNfaG90X2No YWluKHJlbF9uYW1lIHRleHQsIHRhcmdldF9jdGlkIHRpZCkKK1JFVFVSTlMgYm9vbGVhbiBB UyAkJAorREVDTEFSRQorICBibG9ja19udW0gaW50OworICBwYWdlX2l0ZW0gcmVjb3JkOwor QkVHSU4KKyAgYmxvY2tfbnVtIDo9ICh0YXJnZXRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjpp bnQ7CisKKyAgLS0gTG9vayBmb3IgYSBkaWZmZXJlbnQgdHVwbGUgb24gdGhlIHNhbWUgcGFn ZSB0aGF0IHBvaW50cyB0byBvdXIgdGFyZ2V0IHR1cGxlCisgIEZPUiBwYWdlX2l0ZW0gSU4K KyAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICBGUk9NIGhlYXBfcGFnZV9p dGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCisgICAgV0hFUkUgbHBf ZmxhZ3MgPSAxCisgICAgICBBTkQgdF9jdGlkIElTIE5PVCBOVUxMCisgICAgICBBTkQgdF9j dGlkID0gdGFyZ2V0X2N0aWQKKyAgICAgIEFORCAoJygnIHx8IGJsb2NrX251bTo6dGV4dCB8 fCAnLCcgfHwgbHA6OnRleHQgfHwgJyknKTo6dGlkICE9IHRhcmdldF9jdGlkCisgIExPT1AK KyAgICBSRVRVUk4gdHJ1ZTsKKyAgRU5EIExPT1A7CisKKyAgUkVUVVJOIGZhbHNlOworRU5E OworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKy0tIFByaW50IHRoZSBIT1QgY2hhaW4gc3RhcnRp bmcgZnJvbSBhIGdpdmVuIHR1cGxlCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBwcmlu dF9ob3RfY2hhaW4ocmVsX25hbWUgdGV4dCwgc3RhcnRfY3RpZCB0aWQpCitSRVRVUk5TIFRB QkxFKGNoYWluX3Bvc2l0aW9uIGludCwgY3RpZCB0aWQsIGxwX2ZsYWdzIHRleHQsIHRfY3Rp ZCB0aWQsIGNoYWluX2VuZCBib29sZWFuKSBBUworJCQKKyN2YXJpYWJsZV9jb25mbGljdCB1 c2VfY29sdW1uCitERUNMQVJFCisgIGJsb2NrX251bSBpbnQ7CisgIGxpbmVfcHRyIGludDsK KyAgY3VycmVudF9jdGlkIHRpZCA6PSBzdGFydF9jdGlkOworICBuZXh0X2N0aWQgdGlkOwor ICBwb3NpdGlvbiBpbnQgOj0gMDsKKyAgbWF4X2l0ZXJhdGlvbnMgaW50IDo9IDEwMDsKKyAg cGFnZV9pdGVtIHJlY29yZDsKKyAgZm91bmRfcHJlZGVjZXNzb3IgYm9vbGVhbiA6PSBmYWxz ZTsKKyAgZmxhZ3NfbmFtZSB0ZXh0OworQkVHSU4KKyAgYmxvY2tfbnVtIDo9IChzdGFydF9j dGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKKworICAtLSBGaW5kIHRoZSBwcmVkZWNlc3Nv ciAob2xkIHR1cGxlIHBvaW50aW5nIHRvIG91ciBzdGFydF9jdGlkKQorICBGT1IgcGFnZV9p dGVtIElOCisgICAgU0VMRUNUIGxwLCBscF9mbGFncywgdF9jdGlkCisgICAgRlJPTSBoZWFw X3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19udW0pKQorICAgIFdI RVJFIGxwX2ZsYWdzID0gMQorICAgICAgQU5EIHRfY3RpZCA9IHN0YXJ0X2N0aWQKKyAgTE9P UAorICAgIGN1cnJlbnRfY3RpZCA6PSAoJygnIHx8IGJsb2NrX251bTo6dGV4dCB8fCAnLCcg fHwgcGFnZV9pdGVtLmxwOjp0ZXh0IHx8ICcpJyk6OnRpZDsKKyAgICBmb3VuZF9wcmVkZWNl c3NvciA6PSB0cnVlOworICAgIEVYSVQ7CisgIEVORCBMT09QOworCisgIC0tIElmIG5vIHBy ZWRlY2Vzc29yIGZvdW5kLCBzdGFydCB3aXRoIHRoZSBnaXZlbiBjdGlkCisgIElGIE5PVCBm b3VuZF9wcmVkZWNlc3NvciBUSEVOCisgICAgY3VycmVudF9jdGlkIDo9IHN0YXJ0X2N0aWQ7 CisgIEVORCBJRjsKKworICAtLSBGb2xsb3cgdGhlIGNoYWluIGZvcndhcmQKKyAgV0hJTEUg cG9zaXRpb24gPCBtYXhfaXRlcmF0aW9ucyBMT09QCisgICAgbGluZV9wdHIgOj0gKGN1cnJl bnRfY3RpZDo6dGV4dDo6cG9pbnQpWzFdOjppbnQ7CisKKyAgICBGT1IgcGFnZV9pdGVtIElO CisgICAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICAgIEZST00gaGVhcF9w YWdlX2l0ZW1zKGdldF9yYXdfcGFnZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKKyAgICAgIFdI RVJFIGxwID0gbGluZV9wdHIKKyAgICBMT09QCisgICAgICAtLSBNYXAgbHBfZmxhZ3MgdG8g bmFtZXMKKyAgICAgIGZsYWdzX25hbWUgOj0gQ0FTRSBwYWdlX2l0ZW0ubHBfZmxhZ3MKKyAg ICAgICAgV0hFTiAwIFRIRU4gJ3VudXNlZCAoMCknCisgICAgICAgIFdIRU4gMSBUSEVOICdu b3JtYWwgKDEpJworICAgICAgICBXSEVOIDIgVEhFTiAncmVkaXJlY3QgKDIpJworICAgICAg ICBXSEVOIDMgVEhFTiAnZGVhZCAoMyknCisgICAgICAgIEVMU0UgJ3Vua25vd24gKCcgfHwg cGFnZV9pdGVtLmxwX2ZsYWdzOjp0ZXh0IHx8ICcpJworICAgICAgRU5EOworCisgICAgICBS RVRVUk4gUVVFUlkgU0VMRUNUCisgICAgICAgIHBvc2l0aW9uLAorICAgICAgICBjdXJyZW50 X2N0aWQsCisgICAgICAgIGZsYWdzX25hbWUsCisgICAgICAgIHBhZ2VfaXRlbS50X2N0aWQs CisgICAgICAgIChwYWdlX2l0ZW0udF9jdGlkIElTIE5VTEwgT1IgcGFnZV9pdGVtLnRfY3Rp ZCA9IGN1cnJlbnRfY3RpZCk6OmJvb2xlYW4KKyAgICAgIDsKKworICAgICAgSUYgcGFnZV9p dGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQgPSBjdXJyZW50X2N0aWQg VEhFTgorICAgICAgICBSRVRVUk47CisgICAgICBFTkQgSUY7CisKKyAgICAgIG5leHRfY3Rp ZCA6PSBwYWdlX2l0ZW0udF9jdGlkOworCisgICAgICBJRiAobmV4dF9jdGlkOjp0ZXh0Ojpw b2ludClbMF06OmludCAhPSBibG9ja19udW0gVEhFTgorICAgICAgICBSRVRVUk47CisgICAg ICBFTkQgSUY7CisKKyAgICAgIGN1cnJlbnRfY3RpZCA6PSBuZXh0X2N0aWQ7CisgICAgICBw b3NpdGlvbiA6PSBwb3NpdGlvbiArIDE7CisgICAgRU5EIExPT1A7CisKKyAgICBJRiBwb3Np dGlvbiA9IDAgVEhFTgorICAgICAgUkVUVVJOOworICAgIEVORCBJRjsKKyAgRU5EIExPT1A7 CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworLS0gQmFzaWMgSE9UIHVwZGF0ZSAodXBk YXRlIG5vbi1pbmRleGVkIGNvbHVtbikKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAg aWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBub25faW5k ZXhlZF9jb2wgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVY IGhvdF90ZXN0X2luZGV4ZWRfaWR4IE9OIGhvdF90ZXN0KGluZGV4ZWRfY29sKTsKK0lOU0VS VCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOworSU5TRVJUIElO VE8gaG90X3Rlc3QgVkFMVUVTICgyLCAyMDAsICdpbml0aWFsJyk7CitJTlNFUlQgSU5UTyBo b3RfdGVzdCBWQUxVRVMgKDMsIDMwMCwgJ2luaXRpYWwnKTsKKy0tIEdldCBiYXNlbGluZQor U0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMgfCBo b3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAwIHwgICAwCisoMSByb3cpCisKKy0tIFNo b3VsZCBiZSBIT1QgdXBkYXRlcyAob25seSBub24taW5kZXhlZCBjb2x1bW4gbW9kaWZpZWQp CitVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMScgV0hF UkUgaWQgPSAxOworVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBk YXRlZDInIFdIRVJFIGlkID0gMjsKK1VQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRf Y29sID0gJ3VwZGF0ZWQzJyBXSEVSRSBpZCA9IDM7CistLSBWZXJpZnkgSE9UIHVwZGF0ZXMg b2NjdXJyZWQKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1 cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMyB8ICAgMworKDEgcm93 KQorCistLSBEdW1wIHRoZSBIT1QgY2hhaW4gYmVmb3JlIFZBQ1VVTWluZworV0lUSCBjdXJy ZW50X3R1cGxlIEFTICgKKyAgU0VMRUNUIGN0aWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9 IDEKKykKK1NFTEVDVAorICBoYXNfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVw bGUuY3RpZCkgQVMgaGFzX2NoYWluLAorICBjaGFpbl9wb3NpdGlvbiwKKyAgcHJpbnRfaG90 X2NoYWluLmN0aWQsCisgIGxwX2ZsYWdzLAorICB0X2N0aWQKK0ZST00gY3VycmVudF90dXBs ZSwKK0xBVEVSQUwgcHJpbnRfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUu Y3RpZCk7CisgaGFzX2NoYWluIHwgY2hhaW5fcG9zaXRpb24gfCBjdGlkICB8ICBscF9mbGFn cyAgfCB0X2N0aWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tCisgdCAgICAgICAgIHwgICAgICAgICAgICAgIDAgfCAoMCwx KSB8IG5vcm1hbCAoMSkgfCAoMCw0KQorIHQgICAgICAgICB8ICAgICAgICAgICAgICAxIHwg KDAsNCkgfCBub3JtYWwgKDEpIHwgKDAsNCkKKygyIHJvd3MpCisKKy0tIFZhY3V1bSB0aGUg cmVsYXRpb24sIGV4cGVjdCB0aGUgSE9UIGNoYWluIHRvIGNvbGxhcHNlCitWQUNVVU0gaG90 X3Rlc3Q7CistLSBTaG93IHRoYXQgdGhlcmUgaXMgbm8gY2hhaW4gYWZ0ZXIgdmFjdXVtCitX SVRIIGN1cnJlbnRfdHVwbGUgQVMgKAorICBTRUxFQ1QgY3RpZCBGUk9NIGhvdF90ZXN0IFdI RVJFIGlkID0gMQorKQorU0VMRUNUCisgIGhhc19ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3Vy cmVudF90dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCisgIGNoYWluX3Bvc2l0aW9uLAorICBw cmludF9ob3RfY2hhaW4uY3RpZCwKKyAgbHBfZmxhZ3MsCisgIHRfY3RpZAorRlJPTSBjdXJy ZW50X3R1cGxlLAorTEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVu dF90dXBsZS5jdGlkKTsKKyBoYXNfY2hhaW4gfCBjaGFpbl9wb3NpdGlvbiB8IGN0aWQgIHwg IGxwX2ZsYWdzICB8IHRfY3RpZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBmICAgICAgICAgfCAgICAgICAgICAgICAg MCB8ICgwLDQpIHwgbm9ybWFsICgxKSB8ICgwLDQpCisoMSByb3cpCisKKy0tIE5vbi1IT1Qg dXBkYXRlICh1cGRhdGUgaW5kZXhlZCBjb2x1bW4pCitVUERBVEUgaG90X3Rlc3QgU0VUIGlu ZGV4ZWRfY29sID0gMTUwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisg ICAgICAgNCB8ICAgMworKDEgcm93KQorCistLSBWZXJpZnkgaW5kZXggd2FzIHVwZGF0ZWQg KG5ldyB2YWx1ZSBmaW5kYWJsZSkKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK0VYUExB SU4gKENPU1RTIE9GRikgU0VMRUNUIGlkLCBpbmRleGVkX2NvbCBGUk9NIGhvdF90ZXN0IFdI RVJFIGluZGV4ZWRfY29sID0gMTUwOworICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIGhvdF90ZXN0X2luZGV4 ZWRfaWR4IG9uIGhvdF90ZXN0CisgICBJbmRleCBDb25kOiAoaW5kZXhlZF9jb2wgPSAxNTAp CisoMiByb3dzKQorCitTRUxFQ1QgaWQsIGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hF UkUgaW5kZXhlZF9jb2wgPSAxNTA7CisgaWQgfCBpbmRleGVkX2NvbCAKKy0tLS0rLS0tLS0t LS0tLS0tLQorICAxIHwgICAgICAgICAxNTAKKygxIHJvdykKKworLS0gVmVyaWZ5IG9sZCB2 YWx1ZSBubyBsb25nZXIgaW4gaW5kZXgKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGlk IEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wgPSAxMDA7CisgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNp bmcgaG90X3Rlc3RfaW5kZXhlZF9pZHggb24gaG90X3Rlc3QKKyAgIEluZGV4IENvbmQ6IChp bmRleGVkX2NvbCA9IDEwMCkKKygyIHJvd3MpCisKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0 IFdIRVJFIGluZGV4ZWRfY29sID0gMTAwOworIGlkIAorLS0tLQorKDAgcm93cykKKworUkVT RVQgZW5hYmxlX3NlcXNjYW47CistLSBBbGwtb3Itbm9uZSBwcm9wZXJ0eTogdXBkYXRpbmcg b25lIGluZGV4ZWQgY29sdW1uIHJlcXVpcmVzIEFMTCBpbmRleCB1cGRhdGVzCitEUk9QIFRB QkxFIGhvdF90ZXN0OworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJ TUFSWSBLRVksCisgICAgY29sX2EgaW50LAorICAgIGNvbF9iIGludCwKKyAgICBjb2xfYyBp bnQsCisgICAgbm9uX2luZGV4ZWQgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor Q1JFQVRFIElOREVYIGhvdF90ZXN0X2FfaWR4IE9OIGhvdF90ZXN0KGNvbF9hKTsKK0NSRUFU RSBJTkRFWCBob3RfdGVzdF9iX2lkeCBPTiBob3RfdGVzdChjb2xfYik7CitDUkVBVEUgSU5E RVggaG90X3Rlc3RfY19pZHggT04gaG90X3Rlc3QoY29sX2MpOworSU5TRVJUIElOVE8gaG90 X3Rlc3QgVkFMVUVTICgxLCAxMCwgMjAsIDMwLCAnaW5pdGlhbCcpOworLS0gVXBkYXRlIG9u bHkgY29sX2EgLSBzaG91bGQgTk9UIGJlIEhPVCBiZWNhdXNlIGFuIGluZGV4ZWQgY29sdW1u IGNoYW5nZWQKKy0tIFRoaXMgbWVhbnMgQUxMIGluZGV4ZXMgbXVzdCBiZSB1cGRhdGVkIChh bGwtb3Itbm9uZSBwcm9wZXJ0eSkKK1VQREFURSBob3RfdGVzdCBTRVQgY29sX2EgPSAxNSBX SEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7 CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDEgfCAgIDAKKygx IHJvdykKKworLS0gTm93IHVwZGF0ZSBvbmx5IG5vbi1pbmRleGVkIGNvbHVtbiAtIHNob3Vs ZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWQgPSAndXBkYXRlZCc7 CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8 IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDIgfCAgIDEKKygxIHJvdykKKworLS0g UGFydGlhbCBpbmRleDogYm90aCBvbGQgYW5kIG5ldyBvdXRzaWRlIHByZWRpY2F0ZSAoY29u c2VydmF0aXZlID0gbm9uLUhPVCkKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CitDUkVBVEUgVEFC TEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBzdGF0dXMgdGV4 dCwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKKy0tIFBhcnRp YWwgaW5kZXggb25seSBjb3ZlcnMgc3RhdHVzID0gJ2FjdGl2ZScKK0NSRUFURSBJTkRFWCBo b3RfdGVzdF9hY3RpdmVfaWR4IE9OIGhvdF90ZXN0KHN0YXR1cykgV0hFUkUgc3RhdHVzID0g J2FjdGl2ZSc7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsICdhY3RpdmUnLCAn ZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMiwgJ2luYWN0aXZlJywg J2RhdGEyJyk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDMsICdkZWxldGVkJywg J2RhdGEzJyk7CistLSBVcGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIG9uICdhY3RpdmUnIHJv dyAoaW4gcHJlZGljYXRlLCBzdGF0dXMgdW5jaGFuZ2VkKQorLS0gU2hvdWxkIGJlIEhPVAor VVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQxJyBXSEVSRSBpZCA9IDE7CitT RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhv dCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDEgfCAgIDEKKygxIHJvdykKKworLS0gVXBk YXRlIG5vbi1pbmRleGVkIGNvbHVtbiBvbiAnaW5hY3RpdmUnIHJvdyAob3V0c2lkZSBwcmVk aWNhdGUpCistLSBTaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAn dXBkYXRlZDInIFdIRVJFIGlkID0gMjsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgn aG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAg MiB8ICAgMgorKDEgcm93KQorCistLSBVcGRhdGUgc3RhdHVzIGZyb20gJ2luYWN0aXZlJyB0 byAnZGVsZXRlZCcgKGJvdGggb3V0c2lkZSBwcmVkaWNhdGUpCistLSBQb3N0Z3JlU1FMIGlz IGNvbnNlcnZhdGl2ZTogaGVhcCBpbnNlcnQgaGFwcGVucyBiZWZvcmUgcHJlZGljYXRlIGNo ZWNrCistLSBTbyB0aGlzIGlzIE5PTi1IT1QgZXZlbiB0aG91Z2ggYm90aCB2YWx1ZXMgYXJl IG91dHNpZGUgcHJlZGljYXRlCitVUERBVEUgaG90X3Rlc3QgU0VUIHN0YXR1cyA9ICdkZWxl dGVkJyBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90 ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDMgfCAg IDIKKygxIHJvdykKKworLS0gVmVyaWZ5IGluZGV4IHN0aWxsIHdvcmtzIGZvciAnYWN0aXZl JyByb3dzCitTRUxFQ1QgaWQsIHN0YXR1cyBGUk9NIGhvdF90ZXN0IFdIRVJFIHN0YXR1cyA9 ICdhY3RpdmUnOworIGlkIHwgc3RhdHVzIAorLS0tLSstLS0tLS0tLQorICAxIHwgYWN0aXZl CisoMSByb3cpCisKKy0tIE9ubHkgQlJJTiAoc3VtbWFyaXppbmcpIGluZGV4ZXMgb24gbm9u LVBLIGNvbHVtbnMKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CitDUkVBVEUgVEFCTEUgaG90X3Rl c3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0cyB0aW1lc3RhbXAsCisgICAg dmFsdWUgaW50LAorICAgIGJyaW5fY29sIGludAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTAp OworQ1JFQVRFIElOREVYIGhvdF90ZXN0X3RzX2JyaW4gT04gaG90X3Rlc3QgVVNJTkcgYnJp bih0cyk7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYnJpbl9jb2xfYnJpbiBPTiBob3RfdGVz dCBVU0lORyBicmluKGJyaW5fY29sKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAo MSwgJzIwMjQtMDEtMDEnLCAxMDAsIDEwMDApOworLS0gVXBkYXRlIGJvdGggQlJJTiBjb2x1 bW5zIC0gc2hvdWxkIHN0aWxsIGJlIEhPVCAob25seSBzdW1tYXJpemluZyBpbmRleGVzKQor VVBEQVRFIGhvdF90ZXN0IFNFVCB0cyA9ICcyMDI0LTAxLTAyJywgYnJpbl9jb2wgPSAyMDAw IFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3Qn KTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMSB8ICAgMQor KDEgcm93KQorCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIC0gc2hvdWxkIGFsc28g YmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIHZhbHVlID0gMjAwIFdIRVJFIGlkID0gMTsK K1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwg aG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMiB8ICAgMgorKDEgcm93KQorCistLSBU T0FTVCBhbmQgSE9UOiBUT0FTVGVkIGNvbHVtbnMgY2FuIHBhcnRpY2lwYXRlIGluIEhPVAor RFJPUCBUQUJMRSBob3RfdGVzdDsKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgaWQg aW50IFBSSU1BUlkgS0VZLAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBsYXJnZV90ZXh0 IHRleHQsCisgICAgc21hbGxfdGV4dCB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfaWR4IE9OIGhvdF90ZXN0KGluZGV4ZWRfY29sKTsK Ky0tIEluc2VydCByb3cgd2l0aCBUT0FTVGVkIGNvbHVtbiAoPiAyS0IpCitJTlNFUlQgSU5U TyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwMCwgcmVwZWF0KCd4JywgMzAwMCksICdzbWFsbCcp OworLS0gVXBkYXRlIG5vbi1pbmRleGVkLCBub24tVE9BU1RlZCBjb2x1bW4gLSBzaG91bGQg YmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIHNtYWxsX3RleHQgPSAndXBkYXRlZCc7CitT RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhv dCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDEgfCAgIDEKKygxIHJvdykKKworLS0gVXBk YXRlIFRPQVNUZWQgY29sdW1uIC0gc2hvdWxkIGJlIEhPVCBpZiBpbmRleGVkIGNvbHVtbiB1 bmNoYW5nZWQKK1VQREFURSBob3RfdGVzdCBTRVQgbGFyZ2VfdGV4dCA9IHJlcGVhdCgneScs IDMwMDApOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVw ZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAyIHwgICAyCisoMSByb3cp CisKKy0tIFVwZGF0ZSBpbmRleGVkIGNvbHVtbiAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERB VEUgaG90X3Rlc3QgU0VUIGluZGV4ZWRfY29sID0gMjAwOworU0VMRUNUICogRlJPTSBnZXRf aG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0t LS0KKyAgICAgICAzIHwgICAyCisoMSByb3cpCisKKy0tIFVuaXF1ZSBjb25zdHJhaW50ICh1 bmlxdWUgaW5kZXgpIGJlaGF2ZXMgbGlrZSByZWd1bGFyIGluZGV4CitEUk9QIFRBQkxFIGhv dF90ZXN0OworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBL RVksCisgICAgdW5pcXVlX2NvbCBpbnQgVU5JUVVFLAorICAgIGRhdGEgdGV4dAorKSBXSVRI IChmaWxsZmFjdG9yID0gNTApOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAx MDAsICdkYXRhMScpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgyLCAyMDAsICdk YXRhMicpOworLS0gVXBkYXRlIGRhdGEgKG5vbi1pbmRleGVkKSAtIHNob3VsZCBiZSBIT1QK K1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJzsKK1NFTEVDVCAqIEZST00g Z2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0t Ky0tLS0tCisgICAgICAgMiB8ICAgMgorKDEgcm93KQorCistLSBWZXJpZnkgdW5pcXVlIGNv bnN0cmFpbnQgc3RpbGwgZW5mb3JjZWQKK1NFTEVDVCBpZCwgdW5pcXVlX2NvbCwgZGF0YSBG Uk9NIGhvdF90ZXN0IE9SREVSIEJZIGlkOworIGlkIHwgdW5pcXVlX2NvbCB8ICBkYXRhICAg CistLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKyAgMSB8ICAgICAgICAxMDAgfCB1cGRh dGVkCisgIDIgfCAgICAgICAgMjAwIHwgdXBkYXRlZAorKDIgcm93cykKKworLS0gVGhpcyBz aG91bGQgZmFpbCAodW5pcXVlIHZpb2xhdGlvbikKK1VQREFURSBob3RfdGVzdCBTRVQgdW5p cXVlX2NvbCA9IDEwMCBXSEVSRSBpZCA9IDI7CitFUlJPUjogIGR1cGxpY2F0ZSBrZXkgdmFs dWUgdmlvbGF0ZXMgdW5pcXVlIGNvbnN0cmFpbnQgImhvdF90ZXN0X3VuaXF1ZV9jb2xfa2V5 IgorREVUQUlMOiAgS2V5ICh1bmlxdWVfY29sKT0oMTAwKSBhbHJlYWR5IGV4aXN0cy4KKy0t IE11bHRpLWNvbHVtbiBpbmRleDogYW55IGNvbHVtbiBjaGFuZ2UgPSBub24tSE9UCitEUk9Q IFRBQkxFIGhvdF90ZXN0OworQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQg UFJJTUFSWSBLRVksCisgICAgY29sX2EgaW50LAorICAgIGNvbF9iIGludCwKKyAgICBjb2xf YyBpbnQsCisgICAgZGF0YSB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVB VEUgSU5ERVggaG90X3Rlc3RfYWJfaWR4IE9OIGhvdF90ZXN0KGNvbF9hLCBjb2xfYik7CitJ TlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsICdkYXRhJyk7Cist LSBVcGRhdGUgY29sX2EgKHBhcnQgb2YgbXVsdGktY29sdW1uIGluZGV4KSAtIHNob3VsZCBO T1QgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9hID0gMTU7CitTRUxFQ1QgKiBG Uk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0t LS0tLSstLS0tLQorICAgICAgIDEgfCAgIDAKKygxIHJvdykKKworLS0gUmVzZXQKK1VQREFU RSBob3RfdGVzdCBTRVQgY29sX2EgPSAxMDsKKy0tIFVwZGF0ZSBjb2xfYiAocGFydCBvZiBt dWx0aS1jb2x1bW4gaW5kZXgpIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfdGVz dCBTRVQgY29sX2IgPSAyNTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rl c3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMyB8ICAg MAorKDEgcm93KQorCistLSBSZXNldAorVVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xfYiA9IDIw OworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMg fCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICA0IHwgICAwCisoMSByb3cpCisKKy0t IFVwZGF0ZSBjb2xfYyAobm90IGluZGV4ZWQpIC0gc2hvdWxkIGJlIEhPVAorVVBEQVRFIGhv dF90ZXN0IFNFVCBjb2xfYyA9IDM1OworLS0gVXBkYXRlIGRhdGEgKG5vdCBpbmRleGVkKSAt IHNob3VsZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJzsK K1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKyB1cGRhdGVzIHwg aG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgNiB8ICAgMgorKDEgcm93KQorCistLSBQ YXJ0aXRpb25lZCB0YWJsZXM6IEhPVCB3b3JrcyB3aXRoaW4gcGFydGl0aW9ucworRFJPUCBU QUJMRSBJRiBFWElTVFMgaG90X3Rlc3RfcGFydGl0aW9uZWQgQ0FTQ0FERTsKK05PVElDRTog IHRhYmxlICJob3RfdGVzdF9wYXJ0aXRpb25lZCIgZG9lcyBub3QgZXhpc3QsIHNraXBwaW5n CitDUkVBVEUgVEFCTEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgKAorICAgIGlkIGludCwKKyAg ICBwYXJ0aXRpb25fa2V5IGludCwKKyAgICBpbmRleGVkX2NvbCBpbnQsCisgICAgZGF0YSB0 ZXh0LAorICAgIFBSSU1BUlkgS0VZIChpZCwgcGFydGl0aW9uX2tleSkKKykgUEFSVElUSU9O IEJZIFJBTkdFIChwYXJ0aXRpb25fa2V5KTsKK0NSRUFURSBUQUJMRSBob3RfdGVzdF9wYXJ0 MSBQQVJUSVRJT04gT0YgaG90X3Rlc3RfcGFydGl0aW9uZWQKKyAgICBGT1IgVkFMVUVTIEZS T00gKDEpIFRPICgxMDApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgVEFCTEUg aG90X3Rlc3RfcGFydDIgUEFSVElUSU9OIE9GIGhvdF90ZXN0X3BhcnRpdGlvbmVkCisgICAg Rk9SIFZBTFVFUyBGUk9NICgxMDApIFRPICgyMDApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfcGFydF9pZHggT04gaG90X3Rlc3RfcGFydGl0aW9u ZWQoaW5kZXhlZF9jb2wpOworSU5TRVJUIElOVE8gaG90X3Rlc3RfcGFydGl0aW9uZWQgVkFM VUVTICgxLCA1MCwgMTAwLCAnaW5pdGlhbDEnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0X3Bh cnRpdGlvbmVkIFZBTFVFUyAoMiwgMTUwLCAyMDAsICdpbml0aWFsMicpOworLS0gVXBkYXRl IGluIHBhcnRpdGlvbiAxIChub24taW5kZXhlZCBjb2x1bW4pIC0gc2hvdWxkIGJlIEhPVAor VVBEQVRFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFNFVCBkYXRhID0gJ3VwZGF0ZWQxJyBXSEVS RSBpZCA9IDE7CistLSBVcGRhdGUgaW4gcGFydGl0aW9uIDIgKG5vbi1pbmRleGVkIGNvbHVt bikgLSBzaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgU0VUIGRh dGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X3Rlc3RfcGFydDEnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0t LS0tCisgICAgICAgMSB8ICAgMQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGdldF9ob3Rf Y291bnQoJ2hvdF90ZXN0X3BhcnQyJyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSst LS0tLQorICAgICAgIDEgfCAgIDEKKygxIHJvdykKKworLS0gVmVyaWZ5IGluZGV4ZXMgd29y ayBvbiBwYXJ0aXRpb25zCitTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdF9wYXJ0aXRpb25lZCBX SEVSRSBpbmRleGVkX2NvbCA9IDEwMDsKKyBpZCAKKy0tLS0KKyAgMQorKDEgcm93KQorCitT RUxFQ1QgaWQgRlJPTSBob3RfdGVzdF9wYXJ0aXRpb25lZCBXSEVSRSBpbmRleGVkX2NvbCA9 IDIwMDsKKyBpZCAKKy0tLS0KKyAgMgorKDEgcm93KQorCistLSBVcGRhdGUgaW5kZXhlZCBj b2x1bW4gaW4gcGFydGl0aW9uIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfdGVz dF9wYXJ0aXRpb25lZCBTRVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAxOworU0VM RUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdF9wYXJ0MScpOworIHVwZGF0ZXMg fCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAgICAyIHwgICAxCisoMSByb3cpCisKKy0t IFZlcmlmeSBpbmRleCB3YXMgdXBkYXRlZAorU0VMRUNUIGlkIEZST00gaG90X3Rlc3RfcGFy dGl0aW9uZWQgV0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7CisgaWQgCistLS0tCisgIDEKKygx IHJvdykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVHJpZ2dlciBtb2RpZmlj YXRpb25zOiBoZWFwX21vZGlmeV90dXBsZSgpIGFuZCBIT1QKKy0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIFRlc3QgdGhhdCB3ZSBjb3JyZWN0bHkgZGV0ZWN0IHdoZW4gdHJpZ2dl cnMgbW9kaWZ5IGluZGV4ZWQgY29sdW1ucyB2aWEKKy0tIGhlYXBfbW9kaWZ5X3R1cGxlKCks IGV2ZW4gd2hlbiB0aG9zZSBjb2x1bW5zIGFyZW4ndCBpbiB0aGUgVVBEQVRFJ3MgU0VUIGNs YXVzZQorQ1JFQVRFIFRBQkxFIGhvdF90cmlnZ2VyX3Rlc3QgKAorICAgIGlkIGludCBQUklN QVJZIEtFWSwKKyAgICB0cmlnZ2VyZWRfY29sIGludCwKKyAgICBkYXRhIHRleHQKKykgV0lU SCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBob3RfdHJpZ2dlcl9pZHggT04g aG90X3RyaWdnZXJfdGVzdCh0cmlnZ2VyZWRfY29sKTsKKy0tIENyZWF0ZSBhIHRyaWdnZXIg dGhhdCBtb2RpZmllcyBhbiBpbmRleGVkIGNvbHVtbgorQ1JFQVRFIE9SIFJFUExBQ0UgRlVO Q1RJT04gbW9kaWZ5X3RyaWdnZXJlZF9jb2woKQorUkVUVVJOUyBUUklHR0VSIEFTICQkCitC RUdJTgorICAgIE5FVy50cmlnZ2VyZWRfY29sID0gTkVXLnRyaWdnZXJlZF9jb2wgKyAxOwor ICAgIFJFVFVSTiBORVc7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworQ1JFQVRFIFRS SUdHRVIgYmVmb3JlX3VwZGF0ZV9tb2RpZnkKKyAgICBCRUZPUkUgVVBEQVRFIE9OIGhvdF90 cmlnZ2VyX3Rlc3QKKyAgICBGT1IgRUFDSCBST1cKKyAgICBFWEVDVVRFIEZVTkNUSU9OIG1v ZGlmeV90cmlnZ2VyZWRfY29sKCk7CitJTlNFUlQgSU5UTyBob3RfdHJpZ2dlcl90ZXN0IFZB TFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50 KCdob3RfdHJpZ2dlcl90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0t LQorICAgICAgIDAgfCAgIDAKKygxIHJvdykKKworLS0gVXBkYXRlIG9ubHkgZGF0YSBjb2x1 bW4sIGJ1dCB0cmlnZ2VyIG1vZGlmaWVzIGluZGV4ZWQgY29sdW1uCistLSBTaG91bGQgTk9U IGJlIEhPVCBiZWNhdXNlIHRyaWdnZXIgbW9kaWZpZWQgYW4gaW5kZXhlZCBjb2x1bW4KK1VQ REFURSBob3RfdHJpZ2dlcl90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQnIFdIRVJFIGlkID0g MTsKKy0tIFZlcmlmeSBpdCB3YXMgTk9UIGEgSE9UIHVwZGF0ZSAoaW5kZXhlZCBjb2x1bW4g d2FzIG1vZGlmaWVkIGJ5IHRyaWdnZXIpCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF90cmlnZ2VyX3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0t CisgICAgICAgMSB8ICAgMAorKDEgcm93KQorCistLSBWZXJpZnkgdGhlIHRyaWdnZXJlZCBj b2x1bW4gd2FzIGFjdHVhbGx5IG1vZGlmaWVkCitTRUxFQ1QgdHJpZ2dlcmVkX2NvbCBGUk9N IGhvdF90cmlnZ2VyX3Rlc3QgV0hFUkUgaWQgPSAxOworIHRyaWdnZXJlZF9jb2wgCistLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgMTAxCisoMSByb3cpCisKK0RST1AgVEFCTEUgaG90 X3RyaWdnZXJfdGVzdCBDQVNDQURFOworRFJPUCBGVU5DVElPTiBtb2RpZnlfdHJpZ2dlcmVk X2NvbCgpOworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gSlNPTkIgZXhwcmVzc2lv biBpbmRleGVzIGFuZCBzdWItYXR0cmlidXRlIHRyYWNraW5nCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLSBUZXN0IHRoYXQgdXBkYXRlcyB0byBub24taW5kZXhlZCBKU09OQiBw YXRocyBjYW4gYmUgSE9UIHVwZGF0ZXMKK0NSRUFURSBUQUJMRSBob3RfanNvbmJfdGVzdCAo CisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGRhdGEganNvbmIKKykgV0lUSCAoZmls bGZhY3RvciA9IDUwKTsKKy0tIENyZWF0ZSBleHByZXNzaW9uIGluZGV4IG9uIGEgc3BlY2lm aWMgSlNPTiBwYXRoCitDUkVBVEUgSU5ERVggaG90X2pzb25iX25hbWVfaWR4IE9OIGhvdF9q c29uYl90ZXN0ICgoZGF0YS0+PiduYW1lJykpOworSU5TRVJUIElOVE8gaG90X2pzb25iX3Rl c3QgVkFMVUVTCisgICAgKDEsICd7Im5hbWUiOiJBbGljZSIsImFnZSI6MzAsImNpdHkiOiJO WUMifScpLAorICAgICgyLCAneyJuYW1lIjoiQm9iIiwiYWdlIjoyNSwiY2l0eSI6IkxBIn0n KTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsKKyB1 cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMCB8ICAgMAorKDEgcm93 KQorCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgSlNPTiBwYXRoIChhZ2UpIC0gc2hvdWxkIGJl IEhPVCBhZnRlciBpbnN0cnVtZW50YXRpb24KK1VQREFURSBob3RfanNvbmJfdGVzdCBTRVQg ZGF0YSA9IGpzb25iX3NldChkYXRhLCAne2FnZX0nLCAnMzEnKSBXSEVSRSBpZCA9IDE7CitT RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7CisgdXBkYXRl cyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDEgfCAgIDAKKygxIHJvdykKKwor LS0gVXBkYXRlIGluZGV4ZWQgSlNPTiBwYXRoIChuYW1lKSAtIHNob3VsZCBOT1QgYmUgSE9U CitVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0YSwgJ3tu YW1lfScsICciQWxpY2UyIicpIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hv dF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0t Ky0tLS0tCisgICAgICAgMiB8ICAgMAorKDEgcm93KQorCistLSBWZXJpZnkgaW5kZXggd29y a3MKK1NFTEVDVCBpZCBGUk9NIGhvdF9qc29uYl90ZXN0IFdIRVJFIGRhdGEtPj4nbmFtZScg PSAnQWxpY2UyJzsKKyBpZCAKKy0tLS0KKyAgMQorKDEgcm93KQorCistLSBUZXN0IGpzb25i X2RlbGV0ZSBvbiBub24taW5kZXhlZCBwYXRoIC0gc2hvdWxkIGJlIEhPVCBhZnRlciBpbnN0 cnVtZW50YXRpb24KK1VQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGRhdGEgLSAn Y2l0eScgV0hFUkUgaWQgPSAyOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf anNvbmJfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAgICAg ICAzIHwgICAwCisoMSByb3cpCisKKy0tIFRlc3QganNvbmJfaW5zZXJ0IG9uIG5vbi1pbmRl eGVkIHBhdGggLSBzaG91bGQgYmUgSE9UIGFmdGVyIGluc3RydW1lbnRhdGlvbgorVVBEQVRF IGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfaW5zZXJ0KGRhdGEsICd7Y291bnRy eX0nLCAnIlVTQSInKSBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF9qc29uYl90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0t LQorICAgICAgIDQgfCAgIDAKKygxIHJvdykKKworRFJPUCBUQUJMRSBob3RfanNvbmJfdGVz dDsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFhNTCBleHByZXNzaW9uIGluZGV4 ZXMgYW5kIHN1Yi1hdHRyaWJ1dGUgdHJhY2tpbmcKKy0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tIFRlc3QgdGhhdCB1cGRhdGVzIHRvIG5vbi1pbmRleGVkIFhNTCBwYXRocyBjYW4g YmUgSE9UIHVwZGF0ZXMKK0NSRUFURSBUQUJMRSBob3RfeG1sX3Rlc3QgKAorICAgIGlkIGlu dCBQUklNQVJZIEtFWSwKKyAgICBkb2MgeG1sCispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CistLSBDcmVhdGUgZXhwcmVzc2lvbiBpbmRleCBvbiBhIHNwZWNpZmljIFhQYXRoCitDUkVB VEUgSU5ERVggaG90X3htbF9uYW1lX2lkeCBPTiBob3RfeG1sX3Rlc3QgKCh4cGF0aCgnL3Bl cnNvbi9uYW1lL3RleHQoKScsIGRvYykpKTsKK0lOU0VSVCBJTlRPIGhvdF94bWxfdGVzdCBW QUxVRVMKKyAgICAoMSwgJzxwZXJzb24+PG5hbWU+QWxpY2U8L25hbWU+PGFnZT4zMDwvYWdl PjwvcGVyc29uPicpLAorICAgICgyLCAnPHBlcnNvbj48bmFtZT5Cb2I8L25hbWU+PGFnZT4y NTwvYWdlPjwvcGVyc29uPicpOworRVJST1I6ICBjb3VsZCBub3QgaWRlbnRpZnkgYSBjb21w YXJpc29uIGZ1bmN0aW9uIGZvciB0eXBlIHhtbAorU0VMRUNUICogRlJPTSBnZXRfaG90X2Nv dW50KCdob3RfeG1sX3Rlc3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0t CisgICAgICAgMCB8ICAgMAorKDEgcm93KQorCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgWFBh dGggKGFnZSkgLSBiZWhhdmlvciBkZXBlbmRzIG9uIFhNTCBjb21wYXJpc29uIGZhbGxiYWNr CistLSBGdWxsIFhNTCB2YWx1ZSByZXBsYWNlbWVudCBtZWFucyBub24taW5kZXhlZCBwYXRo IHVwZGF0ZXMgc3RpbGwgcmVxdWlyZSBpbmRleCBjb21wYXJpc29uCitVUERBVEUgaG90X3ht bF90ZXN0IFNFVCBkb2MgPSAnPHBlcnNvbj48bmFtZT5BbGljZTwvbmFtZT48YWdlPjMxPC9h Z2U+PC9wZXJzb24+JyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF94bWxfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0K KyAgICAgICAwIHwgICAwCisoMSByb3cpCisKKy0tIFVwZGF0ZSBpbmRleGVkIFhQYXRoIChu YW1lKSAtIHNob3VsZCBOT1QgYmUgSE9UCitVUERBVEUgaG90X3htbF90ZXN0IFNFVCBkb2Mg PSAnPHBlcnNvbj48bmFtZT5BbGljZTI8L25hbWU+PGFnZT4zMTwvYWdlPjwvcGVyc29uPicg V0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfeG1sX3Rl c3QnKTsKKyB1cGRhdGVzIHwgaG90IAorLS0tLS0tLS0tKy0tLS0tCisgICAgICAgMCB8ICAg MAorKDEgcm93KQorCistLSBWZXJpZnkgaW5kZXggd29ya3MKK1NFTEVDVCBpZCBGUk9NIGhv dF94bWxfdGVzdCBXSEVSRSB4cGF0aCgnL3BlcnNvbi9uYW1lL3RleHQoKScsIGRvYykgPSBB UlJBWVsnQWxpY2UyJzo6dGV4dF07CitFUlJPUjogIG9wZXJhdG9yIGRvZXMgbm90IGV4aXN0 OiB4bWxbXSA9IHRleHRbXQorTElORSAxOiAuLi5feG1sX3Rlc3QgV0hFUkUgeHBhdGgoJy9w ZXJzb24vbmFtZS90ZXh0KCknLCBkb2MpID0gQVJSQVlbJ0EuLi4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitERVRB SUw6ICBObyBvcGVyYXRvciBvZiB0aGF0IG5hbWUgYWNjZXB0cyB0aGUgZ2l2ZW4gYXJndW1l bnQgdHlwZXMuCitISU5UOiAgWW91IG1pZ2h0IG5lZWQgdG8gYWRkIGV4cGxpY2l0IHR5cGUg Y2FzdHMuCitEUk9QIFRBQkxFIGhvdF94bWxfdGVzdDsKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIEdJTiBpbmRleGVzIGFuZCBhbWNvbXBhcmVkYXR1bXMgZm9yIEpTT05CCist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0IHRoYXQgR0lOIGluZGV4ZXMgY2Fu IHVzZSBhbWNvbXBhcmVkYXR1bXMgdG8gZW5hYmxlIEhPVCB3aGVuIGV4dHJhY3RlZCBrZXlz IG1hdGNoCitDUkVBVEUgVEFCTEUgaG90X2dpbl90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFS WSBLRVksCisgICAgdGFncyB0ZXh0W10sCisgICAgcHJvcGVydGllcyBqc29uYgorKSBXSVRI IChmaWxsZmFjdG9yID0gNTApOworLS0gR0lOIGluZGV4IG9uIHRleHQgYXJyYXkKK0NSRUFU RSBJTkRFWCBob3RfZ2luX3RhZ3NfaWR4IE9OIGhvdF9naW5fdGVzdCBVU0lORyBnaW4gKHRh Z3MpOworLS0gR0lOIGluZGV4IG9uIEpTT05CIChqc29uYl9vcHMgLSBrZXlzIGFuZCB2YWx1 ZXMpCitDUkVBVEUgSU5ERVggaG90X2dpbl9wcm9wc19pZHggT04gaG90X2dpbl90ZXN0IFVT SU5HIGdpbiAocHJvcGVydGllcyk7CitJTlNFUlQgSU5UTyBob3RfZ2luX3Rlc3QgVkFMVUVT CisgICAgKDEsIEFSUkFZWyd0YWcxJywgJ3RhZzInXSwgJ3sia2V5MSI6InZhbDEiLCJrZXky IjoidmFsMiJ9JyksCisgICAgKDIsIEFSUkFZWyd0YWczJywgJ3RhZzQnXSwgJ3sia2V5MyI6 InZhbDMiLCJrZXk0IjoidmFsNCJ9Jyk7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF9naW5fdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0tLS0rLS0tLS0KKyAg ICAgICAwIHwgICAwCisoMSByb3cpCisKKy0tIFVwZGF0ZSB0aGF0IGNoYW5nZXMgdGFnIG9y ZGVyIGJ1dCBub3QgY29udGVudCAtIGFmdGVyIGFtY29tcGFyZWRhdHVtcyBzaG91bGQgYmUg SE9UCistLSAoR0lOIGV4dHJhY3RzIHNhbWUga2V5cywganVzdCBkaWZmZXJlbnQgb3JkZXIp CitVUERBVEUgaG90X2dpbl90ZXN0IFNFVCB0YWdzID0gQVJSQVlbJ3RhZzInLCAndGFnMSdd IFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90 ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDEgfCAg IDAKKygxIHJvdykKKworLS0gVXBkYXRlIEpTT05CIHZhbHVlIChub3Qga2V5KSAtIGFmdGVy IGFtY29tcGFyZWRhdHVtcyBtYXkgYmUgSE9UIG9yIG5vbi1IT1QKKy0tIGRlcGVuZGluZyBv biBHSU4gb3BlcmF0b3IgY2xhc3MgKGpzb25iX29wcyBpbmRleGVzIGJvdGgga2V5cyBhbmQg dmFsdWVzKQorVVBEQVRFIGhvdF9naW5fdGVzdCBTRVQgcHJvcGVydGllcyA9ICd7ImtleTEi OiJ2YWwxX25ldyIsImtleTIiOiJ2YWwyIn0nIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZS T00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0t LS0tLS0tLSstLS0tLQorICAgICAgIDIgfCAgIDAKKygxIHJvdykKKworLS0gQWRkIG5ldyB0 YWcgLSBzaG91bGQgTk9UIGJlIEhPVCAoZGlmZmVyZW50IGV4dHJhY3RlZCBrZXlzKQorVVBE QVRFIGhvdF9naW5fdGVzdCBTRVQgdGFncyA9IEFSUkFZWyd0YWcyJywgJ3RhZzEnLCAndGFn NSddIFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dp bl90ZXN0Jyk7CisgdXBkYXRlcyB8IGhvdCAKKy0tLS0tLS0tLSstLS0tLQorICAgICAgIDMg fCAgIDAKKygxIHJvdykKKworLS0gVmVyaWZ5IEdJTiBpbmRleGVzIHdvcmsKK1NFTEVDVCBp ZCBGUk9NIGhvdF9naW5fdGVzdCBXSEVSRSB0YWdzIEA+IEFSUkFZWyd0YWc1J107CisgaWQg CistLS0tCisgIDEKKygxIHJvdykKKworU0VMRUNUIGlkIEZST00gaG90X2dpbl90ZXN0IFdI RVJFIHByb3BlcnRpZXMgQD4gJ3sia2V5MSI6InZhbDFfbmV3In0nOworIGlkIAorLS0tLQor ICAxCisoMSByb3cpCisKK0RST1AgVEFCTEUgaG90X2dpbl90ZXN0OworLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0gQ2xlYW51cAorLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor RFJPUCBUQUJMRSBJRiBFWElTVFMgaG90X3Rlc3Q7CitEUk9QIFRBQkxFIElGIEVYSVNUUyBo b3RfdGVzdF9wYXJ0aXRpb25lZCBDQVNDQURFOworRFJPUCBGVU5DVElPTiBJRiBFWElTVFMg aGFzX2hvdF9jaGFpbih0ZXh0LCB0aWQpOworRFJPUCBGVU5DVElPTiBJRiBFWElTVFMgcHJp bnRfaG90X2NoYWluKHRleHQsIHRpZCk7CitEUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBnZXRf aG90X2NvdW50KHRleHQpOworRFJPUCBFWFRFTlNJT04gcGFnZWluc3BlY3Q7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVn cmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCA4ZmEwYTZjNDdmYi4uYmQ5NWNjMjQ5Nzcg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMTQzLDYgKzE0MywxMSBA QCB0ZXN0OiBldmVudF90cmlnZ2VyX2xvZ2luCiAjIHRoaXMgdGVzdCBhbHNvIHVzZXMgZXZl bnQgdHJpZ2dlcnMsIHNvIGxpa2V3aXNlIHJ1biBpdCBieSBpdHNlbGYKIHRlc3Q6IGZhc3Rf ZGVmYXVsdAogCisjIC0tLS0tLS0tLS0KKyMgSE9UIHVwZGF0ZXMgdGVzdHMKKyMgLS0tLS0t LS0tLQordGVzdDogaG90X3VwZGF0ZXMKKwogIyBydW4gdGFibGVzcGFjZSB0ZXN0IGF0IHRo ZSBlbmQgYmVjYXVzZSBpdCBkcm9wcyB0aGUgdGFibGVzcGFjZSBjcmVhdGVkIGR1cmluZwog IyBzZXR1cCB0aGF0IG90aGVyIHRlc3RzIG1heSB1c2UuCiB0ZXN0OiB0YWJsZXNwYWNlCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ob3RfdXBkYXRlcy5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9ob3RfdXBkYXRlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLmE4ODk0MDA2MTc3Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0ZXMuc3FsCkBAIC0wLDAgKzEsNjA1IEBACist LQorLS0gSE9UX1VQREFURVMKKy0tIFRlc3QgSGVhcC1Pbmx5IFR1cGxlIChIT1QpIHVwZGF0 ZSBkZWNpc2lvbnMKKy0tCistLSBUaGlzIHRlc3Qgc3lzdGVtYXRpY2FsbHkgdmVyaWZpZXMg dGhhdCBIT1QgdXBkYXRlcyBhcmUgdXNlZCB3aGVuIGFwcHJvcHJpYXRlCistLSBhbmQgYXZv aWRlZCB3aGVuIG5lY2Vzc2FyeSAoZS5nLiwgd2hlbiBpbmRleGVkIGNvbHVtbnMgYXJlIG1v ZGlmaWVkKS4KKy0tCistLSBXZSB1c2UgbXVsdGlwbGUgdmFsaWRhdGlvbiBtZXRob2RzOgor LS0gMS4gU3RhdGlzdGljcyBmdW5jdGlvbnMgKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBk YXRlZCkKKy0tIDIuIHBhZ2VpbnNwZWN0IGV4dGVuc2lvbiBmb3IgSE9UIGNoYWluIGV4YW1p bmF0aW9uCistLSAzLiBFWFBMQUlOIHRvIHZlcmlmeSBpbmRleCB1c2FnZSBhZnRlciB1cGRh dGVzCistLQorCistLSBMb2FkIHJlcXVpcmVkIGV4dGVuc2lvbnMKK0NSRUFURSBFWFRFTlNJ T04gSUYgTk9UIEVYSVNUUyBwYWdlaW5zcGVjdDsKKworLS0gRnVuY3Rpb24gdG8gZ2V0IEhP VCB1cGRhdGUgY291bnQKK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGdldF9ob3RfY291 bnQocmVsX25hbWUgdGV4dCkKK1JFVFVSTlMgVEFCTEUgKAorICAgIHVwZGF0ZXMgQklHSU5U LAorICAgIGhvdCBCSUdJTlQKKykgQVMgJCQKK0RFQ0xBUkUKKyAgcmVsX29pZCBvaWQ7CitC RUdJTgorICByZWxfb2lkIDo9IHJlbF9uYW1lOjpyZWdjbGFzczo6b2lkOworCisgIC0tIFJl YWQgYm90aCBjb21taXR0ZWQgYW5kIHRyYW5zYWN0aW9uLWxvY2FsIHN0YXRzCisgIC0tIElu IGF1dG9jb21taXQgbW9kZSAoZGVmYXVsdCBmb3IgcmVncmVzc2lvbiB0ZXN0cyksIHRoaXMg d29ya3MgY29ycmVjdGx5CisgIC0tIE5vdGU6IEluIGV4cGxpY2l0IHRyYW5zYWN0aW9ucyAo QkVHSU4vQ09NTUlUKSwgY29tbWl0dGVkIHN0YXRzIGFscmVhZHkKKyAgLS0gaW5jbHVkZSBm bHVzaGVkIHVwZGF0ZXMsIHNvIHRoaXMgd291bGQgZG91YmxlLWNvdW50LiBGb3IgZXhwbGlj aXQKKyAgLS0gdHJhbnNhY3Rpb24gdGVzdGluZywgY2FsbCBwZ19zdGF0X2ZvcmNlX25leHRf Zmx1c2goKSBiZWZvcmUgdGhpcyBmdW5jdGlvbi4KKyAgdXBkYXRlcyA6PSBDT0FMRVNDRShw Z19zdGF0X2dldF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICAg IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDAp OworICBob3QgOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91cGRhdGVkKHJl bF9vaWQpLCAwKSArCisgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxl c19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCk7CisKKyAgUkVUVVJOIE5FWFQ7CitFTkQ7Cisk JCBMQU5HVUFHRSBwbHBnc3FsOworCistLSBDaGVjayBpZiBhIHR1cGxlIGlzIHBhcnQgb2Yg YSBIT1QgY2hhaW4gKGhhcyBhIHByZWRlY2Vzc29yIG9uIHNhbWUgcGFnZSkKK0NSRUFURSBP UiBSRVBMQUNFIEZVTkNUSU9OIGhhc19ob3RfY2hhaW4ocmVsX25hbWUgdGV4dCwgdGFyZ2V0 X2N0aWQgdGlkKQorUkVUVVJOUyBib29sZWFuIEFTICQkCitERUNMQVJFCisgIGJsb2NrX251 bSBpbnQ7CisgIHBhZ2VfaXRlbSByZWNvcmQ7CitCRUdJTgorICBibG9ja19udW0gOj0gKHRh cmdldF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKKworICAtLSBMb29rIGZvciBhIGRp ZmZlcmVudCB0dXBsZSBvbiB0aGUgc2FtZSBwYWdlIHRoYXQgcG9pbnRzIHRvIG91ciB0YXJn ZXQgdHVwbGUKKyAgRk9SIHBhZ2VfaXRlbSBJTgorICAgIFNFTEVDVCBscCwgbHBfZmxhZ3Ms IHRfY3RpZAorICAgIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZShyZWxfbmFt ZSwgYmxvY2tfbnVtKSkKKyAgICBXSEVSRSBscF9mbGFncyA9IDEKKyAgICAgIEFORCB0X2N0 aWQgSVMgTk9UIE5VTEwKKyAgICAgIEFORCB0X2N0aWQgPSB0YXJnZXRfY3RpZAorICAgICAg QU5EICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBscDo6dGV4dCB8fCAnKScp Ojp0aWQgIT0gdGFyZ2V0X2N0aWQKKyAgTE9PUAorICAgIFJFVFVSTiB0cnVlOworICBFTkQg TE9PUDsKKworICBSRVRVUk4gZmFsc2U7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOwor CistLSBQcmludCB0aGUgSE9UIGNoYWluIHN0YXJ0aW5nIGZyb20gYSBnaXZlbiB0dXBsZQor Q1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gcHJpbnRfaG90X2NoYWluKHJlbF9uYW1lIHRl eHQsIHN0YXJ0X2N0aWQgdGlkKQorUkVUVVJOUyBUQUJMRShjaGFpbl9wb3NpdGlvbiBpbnQs IGN0aWQgdGlkLCBscF9mbGFncyB0ZXh0LCB0X2N0aWQgdGlkLCBjaGFpbl9lbmQgYm9vbGVh bikgQVMKKyQkCisjdmFyaWFibGVfY29uZmxpY3QgdXNlX2NvbHVtbgorREVDTEFSRQorICBi bG9ja19udW0gaW50OworICBsaW5lX3B0ciBpbnQ7CisgIGN1cnJlbnRfY3RpZCB0aWQgOj0g c3RhcnRfY3RpZDsKKyAgbmV4dF9jdGlkIHRpZDsKKyAgcG9zaXRpb24gaW50IDo9IDA7Cisg IG1heF9pdGVyYXRpb25zIGludCA6PSAxMDA7CisgIHBhZ2VfaXRlbSByZWNvcmQ7CisgIGZv dW5kX3ByZWRlY2Vzc29yIGJvb2xlYW4gOj0gZmFsc2U7CisgIGZsYWdzX25hbWUgdGV4dDsK K0JFR0lOCisgIGJsb2NrX251bSA6PSAoc3RhcnRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjpp bnQ7CisKKyAgLS0gRmluZCB0aGUgcHJlZGVjZXNzb3IgKG9sZCB0dXBsZSBwb2ludGluZyB0 byBvdXIgc3RhcnRfY3RpZCkKKyAgRk9SIHBhZ2VfaXRlbSBJTgorICAgIFNFTEVDVCBscCwg bHBfZmxhZ3MsIHRfY3RpZAorICAgIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFn ZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKKyAgICBXSEVSRSBscF9mbGFncyA9IDEKKyAgICAg IEFORCB0X2N0aWQgPSBzdGFydF9jdGlkCisgIExPT1AKKyAgICBjdXJyZW50X2N0aWQgOj0g KCcoJyB8fCBibG9ja19udW06OnRleHQgfHwgJywnIHx8IHBhZ2VfaXRlbS5scDo6dGV4dCB8 fCAnKScpOjp0aWQ7CisgICAgZm91bmRfcHJlZGVjZXNzb3IgOj0gdHJ1ZTsKKyAgICBFWElU OworICBFTkQgTE9PUDsKKworICAtLSBJZiBubyBwcmVkZWNlc3NvciBmb3VuZCwgc3RhcnQg d2l0aCB0aGUgZ2l2ZW4gY3RpZAorICBJRiBOT1QgZm91bmRfcHJlZGVjZXNzb3IgVEhFTgor ICAgIGN1cnJlbnRfY3RpZCA6PSBzdGFydF9jdGlkOworICBFTkQgSUY7CisKKyAgLS0gRm9s bG93IHRoZSBjaGFpbiBmb3J3YXJkCisgIFdISUxFIHBvc2l0aW9uIDwgbWF4X2l0ZXJhdGlv bnMgTE9PUAorICAgIGxpbmVfcHRyIDo9IChjdXJyZW50X2N0aWQ6OnRleHQ6OnBvaW50KVsx XTo6aW50OworCisgICAgRk9SIHBhZ2VfaXRlbSBJTgorICAgICAgU0VMRUNUIGxwLCBscF9m bGFncywgdF9jdGlkCisgICAgICBGUk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2Uo cmVsX25hbWUsIGJsb2NrX251bSkpCisgICAgICBXSEVSRSBscCA9IGxpbmVfcHRyCisgICAg TE9PUAorICAgICAgLS0gTWFwIGxwX2ZsYWdzIHRvIG5hbWVzCisgICAgICBmbGFnc19uYW1l IDo9IENBU0UgcGFnZV9pdGVtLmxwX2ZsYWdzCisgICAgICAgIFdIRU4gMCBUSEVOICd1bnVz ZWQgKDApJworICAgICAgICBXSEVOIDEgVEhFTiAnbm9ybWFsICgxKScKKyAgICAgICAgV0hF TiAyIFRIRU4gJ3JlZGlyZWN0ICgyKScKKyAgICAgICAgV0hFTiAzIFRIRU4gJ2RlYWQgKDMp JworICAgICAgICBFTFNFICd1bmtub3duICgnIHx8IHBhZ2VfaXRlbS5scF9mbGFnczo6dGV4 dCB8fCAnKScKKyAgICAgIEVORDsKKworICAgICAgUkVUVVJOIFFVRVJZIFNFTEVDVAorICAg ICAgICBwb3NpdGlvbiwKKyAgICAgICAgY3VycmVudF9jdGlkLAorICAgICAgICBmbGFnc19u YW1lLAorICAgICAgICBwYWdlX2l0ZW0udF9jdGlkLAorICAgICAgICAocGFnZV9pdGVtLnRf Y3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQgPSBjdXJyZW50X2N0aWQpOjpib29s ZWFuCisgICAgICA7CisKKyAgICAgIElGIHBhZ2VfaXRlbS50X2N0aWQgSVMgTlVMTCBPUiBw YWdlX2l0ZW0udF9jdGlkID0gY3VycmVudF9jdGlkIFRIRU4KKyAgICAgICAgUkVUVVJOOwor ICAgICAgRU5EIElGOworCisgICAgICBuZXh0X2N0aWQgOj0gcGFnZV9pdGVtLnRfY3RpZDsK KworICAgICAgSUYgKG5leHRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQgIT0gYmxvY2tf bnVtIFRIRU4KKyAgICAgICAgUkVUVVJOOworICAgICAgRU5EIElGOworCisgICAgICBjdXJy ZW50X2N0aWQgOj0gbmV4dF9jdGlkOworICAgICAgcG9zaXRpb24gOj0gcG9zaXRpb24gKyAx OworICAgIEVORCBMT09QOworCisgICAgSUYgcG9zaXRpb24gPSAwIFRIRU4KKyAgICAgIFJF VFVSTjsKKyAgICBFTkQgSUY7CisgIEVORCBMT09QOworRU5EOworJCQgTEFOR1VBR0UgcGxw Z3NxbDsKKworLS0gQmFzaWMgSE9UIHVwZGF0ZSAodXBkYXRlIG5vbi1pbmRleGVkIGNvbHVt bikKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAor ICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBub25faW5kZXhlZF9jb2wgdGV4dAorKSBXSVRI IChmaWxsZmFjdG9yID0gNTApOworCitDUkVBVEUgSU5ERVggaG90X3Rlc3RfaW5kZXhlZF9p ZHggT04gaG90X3Rlc3QoaW5kZXhlZF9jb2wpOworCitJTlNFUlQgSU5UTyBob3RfdGVzdCBW QUxVRVMgKDEsIDEwMCwgJ2luaXRpYWwnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVF UyAoMiwgMjAwLCAnaW5pdGlhbCcpOworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgz LCAzMDAsICdpbml0aWFsJyk7CisKKy0tIEdldCBiYXNlbGluZQorU0VMRUNUICogRlJPTSBn ZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBTaG91bGQgYmUgSE9UIHVwZGF0ZXMg KG9ubHkgbm9uLWluZGV4ZWQgY29sdW1uIG1vZGlmaWVkKQorVVBEQVRFIGhvdF90ZXN0IFNF VCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRlZDEnIFdIRVJFIGlkID0gMTsKK1VQREFURSBo b3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0gJ3VwZGF0ZWQyJyBXSEVSRSBpZCA9IDI7 CitVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMycgV0hF UkUgaWQgPSAzOworCistLSBWZXJpZnkgSE9UIHVwZGF0ZXMgb2NjdXJyZWQKK1NFTEVDVCAq IEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gRHVtcCB0aGUgSE9UIGNo YWluIGJlZm9yZSBWQUNVVU1pbmcKK1dJVEggY3VycmVudF90dXBsZSBBUyAoCisgIFNFTEVD VCBjdGlkIEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAxCispCitTRUxFQ1QKKyAgaGFzX2hv dF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwK KyAgY2hhaW5fcG9zaXRpb24sCisgIHByaW50X2hvdF9jaGFpbi5jdGlkLAorICBscF9mbGFn cywKKyAgdF9jdGlkCitGUk9NIGN1cnJlbnRfdHVwbGUsCitMQVRFUkFMIHByaW50X2hvdF9j aGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpOworCistLSBWYWN1dW0gdGhl IHJlbGF0aW9uLCBleHBlY3QgdGhlIEhPVCBjaGFpbiB0byBjb2xsYXBzZQorVkFDVVVNIGhv dF90ZXN0OworCistLSBTaG93IHRoYXQgdGhlcmUgaXMgbm8gY2hhaW4gYWZ0ZXIgdmFjdXVt CitXSVRIIGN1cnJlbnRfdHVwbGUgQVMgKAorICBTRUxFQ1QgY3RpZCBGUk9NIGhvdF90ZXN0 IFdIRVJFIGlkID0gMQorKQorU0VMRUNUCisgIGhhc19ob3RfY2hhaW4oJ2hvdF90ZXN0Jywg Y3VycmVudF90dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCisgIGNoYWluX3Bvc2l0aW9uLAor ICBwcmludF9ob3RfY2hhaW4uY3RpZCwKKyAgbHBfZmxhZ3MsCisgIHRfY3RpZAorRlJPTSBj dXJyZW50X3R1cGxlLAorTEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3Vy cmVudF90dXBsZS5jdGlkKTsKKworLS0gTm9uLUhPVCB1cGRhdGUgKHVwZGF0ZSBpbmRleGVk IGNvbHVtbikKK1VQREFURSBob3RfdGVzdCBTRVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUg aWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworCist LSBWZXJpZnkgaW5kZXggd2FzIHVwZGF0ZWQgKG5ldyB2YWx1ZSBmaW5kYWJsZSkKK1NFVCBl bmFibGVfc2Vxc2NhbiA9IG9mZjsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGlkLCBp bmRleGVkX2NvbCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0gMTUwOworU0VM RUNUIGlkLCBpbmRleGVkX2NvbCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0g MTUwOworCistLSBWZXJpZnkgb2xkIHZhbHVlIG5vIGxvbmdlciBpbiBpbmRleAorRVhQTEFJ TiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpbmRleGVkX2Nv bCA9IDEwMDsKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0g MTAwOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKKy0tIEFsbC1vci1ub25lIHByb3BlcnR5 OiB1cGRhdGluZyBvbmUgaW5kZXhlZCBjb2x1bW4gcmVxdWlyZXMgQUxMIGluZGV4IHVwZGF0 ZXMKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CisKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisg ICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGNvbF9hIGludCwKKyAgICBjb2xfYiBpbnQs CisgICAgY29sX2MgaW50LAorICAgIG5vbl9pbmRleGVkIHRleHQKKykgV0lUSCAoZmlsbGZh Y3RvciA9IDUwKTsKKworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2FfaWR4IE9OIGhvdF90ZXN0 KGNvbF9hKTsKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9iX2lkeCBPTiBob3RfdGVzdChjb2xf Yik7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfY19pZHggT04gaG90X3Rlc3QoY29sX2MpOwor CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsICdpbml0aWFs Jyk7CisKKy0tIFVwZGF0ZSBvbmx5IGNvbF9hIC0gc2hvdWxkIE5PVCBiZSBIT1QgYmVjYXVz ZSBhbiBpbmRleGVkIGNvbHVtbiBjaGFuZ2VkCistLSBUaGlzIG1lYW5zIEFMTCBpbmRleGVz IG11c3QgYmUgdXBkYXRlZCAoYWxsLW9yLW5vbmUgcHJvcGVydHkpCitVUERBVEUgaG90X3Rl c3QgU0VUIGNvbF9hID0gMTUgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfdGVzdCcpOworCistLSBOb3cgdXBkYXRlIG9ubHkgbm9uLWluZGV4ZWQg Y29sdW1uIC0gc2hvdWxkIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhl ZCA9ICd1cGRhdGVkJzsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3Qn KTsKKworLS0gUGFydGlhbCBpbmRleDogYm90aCBvbGQgYW5kIG5ldyBvdXRzaWRlIHByZWRp Y2F0ZSAoY29uc2VydmF0aXZlID0gbm9uLUhPVCkKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CisK K0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAg IHN0YXR1cyB0ZXh0LAorICAgIGRhdGEgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTAp OworCistLSBQYXJ0aWFsIGluZGV4IG9ubHkgY292ZXJzIHN0YXR1cyA9ICdhY3RpdmUnCitD UkVBVEUgSU5ERVggaG90X3Rlc3RfYWN0aXZlX2lkeCBPTiBob3RfdGVzdChzdGF0dXMpIFdI RVJFIHN0YXR1cyA9ICdhY3RpdmUnOworCitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMg KDEsICdhY3RpdmUnLCAnZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAo MiwgJ2luYWN0aXZlJywgJ2RhdGEyJyk7CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMg KDMsICdkZWxldGVkJywgJ2RhdGEzJyk7CisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBjb2x1 bW4gb24gJ2FjdGl2ZScgcm93IChpbiBwcmVkaWNhdGUsIHN0YXR1cyB1bmNoYW5nZWQpCist LSBTaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZDEn IFdIRVJFIGlkID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3Qn KTsKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiBvbiAnaW5hY3RpdmUnIHJvdyAo b3V0c2lkZSBwcmVkaWNhdGUpCistLSBTaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3Qg U0VUIGRhdGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsKK1NFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gVXBkYXRlIHN0YXR1cyBmcm9tICdpbmFj dGl2ZScgdG8gJ2RlbGV0ZWQnIChib3RoIG91dHNpZGUgcHJlZGljYXRlKQorLS0gUG9zdGdy ZVNRTCBpcyBjb25zZXJ2YXRpdmU6IGhlYXAgaW5zZXJ0IGhhcHBlbnMgYmVmb3JlIHByZWRp Y2F0ZSBjaGVjaworLS0gU28gdGhpcyBpcyBOT04tSE9UIGV2ZW4gdGhvdWdoIGJvdGggdmFs dWVzIGFyZSBvdXRzaWRlIHByZWRpY2F0ZQorVVBEQVRFIGhvdF90ZXN0IFNFVCBzdGF0dXMg PSAnZGVsZXRlZCcgV0hFUkUgaWQgPSAyOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50 KCdob3RfdGVzdCcpOworCistLSBWZXJpZnkgaW5kZXggc3RpbGwgd29ya3MgZm9yICdhY3Rp dmUnIHJvd3MKK1NFTEVDVCBpZCwgc3RhdHVzIEZST00gaG90X3Rlc3QgV0hFUkUgc3RhdHVz ID0gJ2FjdGl2ZSc7CisKKy0tIE9ubHkgQlJJTiAoc3VtbWFyaXppbmcpIGluZGV4ZXMgb24g bm9uLVBLIGNvbHVtbnMKK0RST1AgVEFCTEUgaG90X3Rlc3Q7CisKK0NSRUFURSBUQUJMRSBo b3RfdGVzdCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIHRzIHRpbWVzdGFtcCwK KyAgICB2YWx1ZSBpbnQsCisgICAgYnJpbl9jb2wgaW50CispIFdJVEggKGZpbGxmYWN0b3Ig PSA1MCk7CisKK0NSRUFURSBJTkRFWCBob3RfdGVzdF90c19icmluIE9OIGhvdF90ZXN0IFVT SU5HIGJyaW4odHMpOworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2JyaW5fY29sX2JyaW4gT04g aG90X3Rlc3QgVVNJTkcgYnJpbihicmluX2NvbCk7CisKK0lOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMSwgJzIwMjQtMDEtMDEnLCAxMDAsIDEwMDApOworCistLSBVcGRhdGUgYm90 aCBCUklOIGNvbHVtbnMgLSBzaG91bGQgc3RpbGwgYmUgSE9UIChvbmx5IHN1bW1hcml6aW5n IGluZGV4ZXMpCitVUERBVEUgaG90X3Rlc3QgU0VUIHRzID0gJzIwMjQtMDEtMDInLCBicmlu X2NvbCA9IDIwMDAgV0hFUkUgaWQgPSAxOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50 KCdob3RfdGVzdCcpOworCistLSBVcGRhdGUgbm9uLWluZGV4ZWQgY29sdW1uIC0gc2hvdWxk IGFsc28gYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIHZhbHVlID0gMjAwIFdIRVJFIGlk ID0gMTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0g VE9BU1QgYW5kIEhPVDogVE9BU1RlZCBjb2x1bW5zIGNhbiBwYXJ0aWNpcGF0ZSBpbiBIT1QK K0RST1AgVEFCTEUgaG90X3Rlc3Q7CisKK0NSRUFURSBUQUJMRSBob3RfdGVzdCAoCisgICAg aWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBsYXJnZV90 ZXh0IHRleHQsCisgICAgc21hbGxfdGV4dCB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1 MCk7CisKK0NSRUFURSBJTkRFWCBob3RfdGVzdF9pZHggT04gaG90X3Rlc3QoaW5kZXhlZF9j b2wpOworCistLSBJbnNlcnQgcm93IHdpdGggVE9BU1RlZCBjb2x1bW4gKD4gMktCKQorSU5T RVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsIHJlcGVhdCgneCcsIDMwMDApLCAn c21hbGwnKTsKKworLS0gVXBkYXRlIG5vbi1pbmRleGVkLCBub24tVE9BU1RlZCBjb2x1bW4g LSBzaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3QgU0VUIHNtYWxsX3RleHQgPSAndXBk YXRlZCc7CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0t IFVwZGF0ZSBUT0FTVGVkIGNvbHVtbiAtIHNob3VsZCBiZSBIT1QgaWYgaW5kZXhlZCBjb2x1 bW4gdW5jaGFuZ2VkCitVUERBVEUgaG90X3Rlc3QgU0VUIGxhcmdlX3RleHQgPSByZXBlYXQo J3knLCAzMDAwKTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsK KworLS0gVXBkYXRlIGluZGV4ZWQgY29sdW1uIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFU RSBob3RfdGVzdCBTRVQgaW5kZXhlZF9jb2wgPSAyMDA7CitTRUxFQ1QgKiBGUk9NIGdldF9o b3RfY291bnQoJ2hvdF90ZXN0Jyk7CisKKy0tIFVuaXF1ZSBjb25zdHJhaW50ICh1bmlxdWUg aW5kZXgpIGJlaGF2ZXMgbGlrZSByZWd1bGFyIGluZGV4CitEUk9QIFRBQkxFIGhvdF90ZXN0 OworCitDUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwK KyAgICB1bmlxdWVfY29sIGludCBVTklRVUUsCisgICAgZGF0YSB0ZXh0CispIFdJVEggKGZp bGxmYWN0b3IgPSA1MCk7CisKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAw LCAnZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMiwgMjAwLCAnZGF0 YTInKTsKKworLS0gVXBkYXRlIGRhdGEgKG5vbi1pbmRleGVkKSAtIHNob3VsZCBiZSBIT1QK K1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJzsKK1NFTEVDVCAqIEZST00g Z2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKworLS0gVmVyaWZ5IHVuaXF1ZSBjb25zdHJh aW50IHN0aWxsIGVuZm9yY2VkCitTRUxFQ1QgaWQsIHVuaXF1ZV9jb2wsIGRhdGEgRlJPTSBo b3RfdGVzdCBPUkRFUiBCWSBpZDsKKworLS0gVGhpcyBzaG91bGQgZmFpbCAodW5pcXVlIHZp b2xhdGlvbikKK1VQREFURSBob3RfdGVzdCBTRVQgdW5pcXVlX2NvbCA9IDEwMCBXSEVSRSBp ZCA9IDI7CisKKy0tIE11bHRpLWNvbHVtbiBpbmRleDogYW55IGNvbHVtbiBjaGFuZ2UgPSBu b24tSE9UCitEUk9QIFRBQkxFIGhvdF90ZXN0OworCitDUkVBVEUgVEFCTEUgaG90X3Rlc3Qg KAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBjb2xfYSBpbnQsCisgICAgY29sX2Ig aW50LAorICAgIGNvbF9jIGludCwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3Rv ciA9IDUwKTsKKworQ1JFQVRFIElOREVYIGhvdF90ZXN0X2FiX2lkeCBPTiBob3RfdGVzdChj b2xfYSwgY29sX2IpOworCitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwLCAy MCwgMzAsICdkYXRhJyk7CisKKy0tIFVwZGF0ZSBjb2xfYSAocGFydCBvZiBtdWx0aS1jb2x1 bW4gaW5kZXgpIC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgY29s X2EgPSAxNTsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKwor LS0gUmVzZXQKK1VQREFURSBob3RfdGVzdCBTRVQgY29sX2EgPSAxMDsKKworLS0gVXBkYXRl IGNvbF9iIChwYXJ0IG9mIG11bHRpLWNvbHVtbiBpbmRleCkgLSBzaG91bGQgTk9UIGJlIEhP VAorVVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xfYiA9IDI1OworU0VMRUNUICogRlJPTSBnZXRf aG90X2NvdW50KCdob3RfdGVzdCcpOworCistLSBSZXNldAorVVBEQVRFIGhvdF90ZXN0IFNF VCBjb2xfYiA9IDIwOworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcp OworCistLSBVcGRhdGUgY29sX2MgKG5vdCBpbmRleGVkKSAtIHNob3VsZCBiZSBIT1QKK1VQ REFURSBob3RfdGVzdCBTRVQgY29sX2MgPSAzNTsKKworLS0gVXBkYXRlIGRhdGEgKG5vdCBp bmRleGVkKSAtIHNob3VsZCBiZSBIT1QKK1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1 cGRhdGVkJzsKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKwor LS0gUGFydGl0aW9uZWQgdGFibGVzOiBIT1Qgd29ya3Mgd2l0aGluIHBhcnRpdGlvbnMKK0RS T1AgVEFCTEUgSUYgRVhJU1RTIGhvdF90ZXN0X3BhcnRpdGlvbmVkIENBU0NBREU7CisKK0NS RUFURSBUQUJMRSBob3RfdGVzdF9wYXJ0aXRpb25lZCAoCisgICAgaWQgaW50LAorICAgIHBh cnRpdGlvbl9rZXkgaW50LAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBkYXRhIHRleHQs CisgICAgUFJJTUFSWSBLRVkgKGlkLCBwYXJ0aXRpb25fa2V5KQorKSBQQVJUSVRJT04gQlkg UkFOR0UgKHBhcnRpdGlvbl9rZXkpOworCitDUkVBVEUgVEFCTEUgaG90X3Rlc3RfcGFydDEg UEFSVElUSU9OIE9GIGhvdF90ZXN0X3BhcnRpdGlvbmVkCisgICAgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoMTAwKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIFRBQkxFIGhv dF90ZXN0X3BhcnQyIFBBUlRJVElPTiBPRiBob3RfdGVzdF9wYXJ0aXRpb25lZAorICAgIEZP UiBWQUxVRVMgRlJPTSAoMTAwKSBUTyAoMjAwKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfcGFydF9pZHggT04gaG90X3Rlc3RfcGFydGl0aW9u ZWQoaW5kZXhlZF9jb2wpOworCitJTlNFUlQgSU5UTyBob3RfdGVzdF9wYXJ0aXRpb25lZCBW QUxVRVMgKDEsIDUwLCAxMDAsICdpbml0aWFsMScpOworSU5TRVJUIElOVE8gaG90X3Rlc3Rf cGFydGl0aW9uZWQgVkFMVUVTICgyLCAxNTAsIDIwMCwgJ2luaXRpYWwyJyk7CisKKy0tIFVw ZGF0ZSBpbiBwYXJ0aXRpb24gMSAobm9uLWluZGV4ZWQgY29sdW1uKSAtIHNob3VsZCBiZSBI T1QKK1VQREFURSBob3RfdGVzdF9wYXJ0aXRpb25lZCBTRVQgZGF0YSA9ICd1cGRhdGVkMScg V0hFUkUgaWQgPSAxOworCistLSBVcGRhdGUgaW4gcGFydGl0aW9uIDIgKG5vbi1pbmRleGVk IGNvbHVtbikgLSBzaG91bGQgYmUgSE9UCitVUERBVEUgaG90X3Rlc3RfcGFydGl0aW9uZWQg U0VUIGRhdGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsKKworU0VMRUNUICogRlJPTSBn ZXRfaG90X2NvdW50KCdob3RfdGVzdF9wYXJ0MScpOworU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfdGVzdF9wYXJ0MicpOworCistLSBWZXJpZnkgaW5kZXhlcyB3b3JrIG9u IHBhcnRpdGlvbnMKK1NFTEVDVCBpZCBGUk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFdIRVJF IGluZGV4ZWRfY29sID0gMTAwOworU0VMRUNUIGlkIEZST00gaG90X3Rlc3RfcGFydGl0aW9u ZWQgV0hFUkUgaW5kZXhlZF9jb2wgPSAyMDA7CisKKy0tIFVwZGF0ZSBpbmRleGVkIGNvbHVt biBpbiBwYXJ0aXRpb24gLSBzaG91bGQgTk9UIGJlIEhPVAorVVBEQVRFIGhvdF90ZXN0X3Bh cnRpdGlvbmVkIFNFVCBpbmRleGVkX2NvbCA9IDE1MCBXSEVSRSBpZCA9IDE7CitTRUxFQ1Qg KiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0X3BhcnQxJyk7CisKKy0tIFZlcmlmeSBp bmRleCB3YXMgdXBkYXRlZAorU0VMRUNUIGlkIEZST00gaG90X3Rlc3RfcGFydGl0aW9uZWQg V0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tIFRyaWdnZXIgbW9kaWZpY2F0aW9uczogaGVhcF9tb2RpZnlfdHVwbGUoKSBhbmQgSE9U CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0IHRoYXQgd2UgY29ycmVjdGx5 IGRldGVjdCB3aGVuIHRyaWdnZXJzIG1vZGlmeSBpbmRleGVkIGNvbHVtbnMgdmlhCistLSBo ZWFwX21vZGlmeV90dXBsZSgpLCBldmVuIHdoZW4gdGhvc2UgY29sdW1ucyBhcmVuJ3QgaW4g dGhlIFVQREFURSdzIFNFVCBjbGF1c2UKKworQ1JFQVRFIFRBQkxFIGhvdF90cmlnZ2VyX3Rl c3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0cmlnZ2VyZWRfY29sIGludCwK KyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKKworQ1JFQVRFIElO REVYIGhvdF90cmlnZ2VyX2lkeCBPTiBob3RfdHJpZ2dlcl90ZXN0KHRyaWdnZXJlZF9jb2wp OworCistLSBDcmVhdGUgYSB0cmlnZ2VyIHRoYXQgbW9kaWZpZXMgYW4gaW5kZXhlZCBjb2x1 bW4KK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIG1vZGlmeV90cmlnZ2VyZWRfY29sKCkK K1JFVFVSTlMgVFJJR0dFUiBBUyAkJAorQkVHSU4KKyAgICBORVcudHJpZ2dlcmVkX2NvbCA9 IE5FVy50cmlnZ2VyZWRfY29sICsgMTsKKyAgICBSRVRVUk4gTkVXOworRU5EOworJCQgTEFO R1VBR0UgcGxwZ3NxbDsKKworQ1JFQVRFIFRSSUdHRVIgYmVmb3JlX3VwZGF0ZV9tb2RpZnkK KyAgICBCRUZPUkUgVVBEQVRFIE9OIGhvdF90cmlnZ2VyX3Rlc3QKKyAgICBGT1IgRUFDSCBS T1cKKyAgICBFWEVDVVRFIEZVTkNUSU9OIG1vZGlmeV90cmlnZ2VyZWRfY29sKCk7CisKK0lO U0VSVCBJTlRPIGhvdF90cmlnZ2VyX3Rlc3QgVkFMVUVTICgxLCAxMDAsICdpbml0aWFsJyk7 CisKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3RyaWdnZXJfdGVzdCcpOwor CistLSBVcGRhdGUgb25seSBkYXRhIGNvbHVtbiwgYnV0IHRyaWdnZXIgbW9kaWZpZXMgaW5k ZXhlZCBjb2x1bW4KKy0tIFNob3VsZCBOT1QgYmUgSE9UIGJlY2F1c2UgdHJpZ2dlciBtb2Rp ZmllZCBhbiBpbmRleGVkIGNvbHVtbgorVVBEQVRFIGhvdF90cmlnZ2VyX3Rlc3QgU0VUIGRh dGEgPSAndXBkYXRlZCcgV0hFUkUgaWQgPSAxOworCistLSBWZXJpZnkgaXQgd2FzIE5PVCBh IEhPVCB1cGRhdGUgKGluZGV4ZWQgY29sdW1uIHdhcyBtb2RpZmllZCBieSB0cmlnZ2VyKQor U0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdHJpZ2dlcl90ZXN0Jyk7CisKKy0t IFZlcmlmeSB0aGUgdHJpZ2dlcmVkIGNvbHVtbiB3YXMgYWN0dWFsbHkgbW9kaWZpZWQKK1NF TEVDVCB0cmlnZ2VyZWRfY29sIEZST00gaG90X3RyaWdnZXJfdGVzdCBXSEVSRSBpZCA9IDE7 CisKK0RST1AgVEFCTEUgaG90X3RyaWdnZXJfdGVzdCBDQVNDQURFOworRFJPUCBGVU5DVElP TiBtb2RpZnlfdHJpZ2dlcmVkX2NvbCgpOworCistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBKU09OQiBleHByZXNzaW9uIGluZGV4ZXMgYW5kIHN1Yi1hdHRyaWJ1dGUgdHJhY2tp bmcKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3QgdGhhdCB1cGRhdGVzIHRv IG5vbi1pbmRleGVkIEpTT05CIHBhdGhzIGNhbiBiZSBIT1QgdXBkYXRlcworCitDUkVBVEUg VEFCTEUgaG90X2pzb25iX3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBk YXRhIGpzb25iCispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CisKKy0tIENyZWF0ZSBleHBy ZXNzaW9uIGluZGV4IG9uIGEgc3BlY2lmaWMgSlNPTiBwYXRoCitDUkVBVEUgSU5ERVggaG90 X2pzb25iX25hbWVfaWR4IE9OIGhvdF9qc29uYl90ZXN0ICgoZGF0YS0+PiduYW1lJykpOwor CitJTlNFUlQgSU5UTyBob3RfanNvbmJfdGVzdCBWQUxVRVMKKyAgICAoMSwgJ3sibmFtZSI6 IkFsaWNlIiwiYWdlIjozMCwiY2l0eSI6Ik5ZQyJ9JyksCisgICAgKDIsICd7Im5hbWUiOiJC b2IiLCJhZ2UiOjI1LCJjaXR5IjoiTEEifScpOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3Rf Y291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7CisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBKU09O IHBhdGggKGFnZSkgLSBzaG91bGQgYmUgSE9UIGFmdGVyIGluc3RydW1lbnRhdGlvbgorVVBE QVRFIGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfc2V0KGRhdGEsICd7YWdlfScs ICczMScpIFdIRVJFIGlkID0gMTsKKworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdo b3RfanNvbmJfdGVzdCcpOworCistLSBVcGRhdGUgaW5kZXhlZCBKU09OIHBhdGggKG5hbWUp IC0gc2hvdWxkIE5PVCBiZSBIT1QKK1VQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9 IGpzb25iX3NldChkYXRhLCAne25hbWV9JywgJyJBbGljZTIiJykgV0hFUkUgaWQgPSAxOwor CitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7CisKKy0t IFZlcmlmeSBpbmRleCB3b3JrcworU0VMRUNUIGlkIEZST00gaG90X2pzb25iX3Rlc3QgV0hF UkUgZGF0YS0+PiduYW1lJyA9ICdBbGljZTInOworCistLSBUZXN0IGpzb25iX2RlbGV0ZSBv biBub24taW5kZXhlZCBwYXRoIC0gc2hvdWxkIGJlIEhPVCBhZnRlciBpbnN0cnVtZW50YXRp b24KK1VQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGRhdGEgLSAnY2l0eScgV0hF UkUgaWQgPSAyOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90 ZXN0Jyk7CisKKy0tIFRlc3QganNvbmJfaW5zZXJ0IG9uIG5vbi1pbmRleGVkIHBhdGggLSBz aG91bGQgYmUgSE9UIGFmdGVyIGluc3RydW1lbnRhdGlvbgorVVBEQVRFIGhvdF9qc29uYl90 ZXN0IFNFVCBkYXRhID0ganNvbmJfaW5zZXJ0KGRhdGEsICd7Y291bnRyeX0nLCAnIlVTQSIn KSBXSEVSRSBpZCA9IDI7CisKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pz b25iX3Rlc3QnKTsKKworRFJPUCBUQUJMRSBob3RfanNvbmJfdGVzdDsKKworLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0gWE1MIGV4cHJlc3Npb24gaW5kZXhlcyBhbmQgc3ViLWF0 dHJpYnV0ZSB0cmFja2luZworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdCB0 aGF0IHVwZGF0ZXMgdG8gbm9uLWluZGV4ZWQgWE1MIHBhdGhzIGNhbiBiZSBIT1QgdXBkYXRl cworCitDUkVBVEUgVEFCTEUgaG90X3htbF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBL RVksCisgICAgZG9jIHhtbAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworCistLSBDcmVh dGUgZXhwcmVzc2lvbiBpbmRleCBvbiBhIHNwZWNpZmljIFhQYXRoCitDUkVBVEUgSU5ERVgg aG90X3htbF9uYW1lX2lkeCBPTiBob3RfeG1sX3Rlc3QgKCh4cGF0aCgnL3BlcnNvbi9uYW1l L3RleHQoKScsIGRvYykpKTsKKworSU5TRVJUIElOVE8gaG90X3htbF90ZXN0IFZBTFVFUwor ICAgICgxLCAnPHBlcnNvbj48bmFtZT5BbGljZTwvbmFtZT48YWdlPjMwPC9hZ2U+PC9wZXJz b24+JyksCisgICAgKDIsICc8cGVyc29uPjxuYW1lPkJvYjwvbmFtZT48YWdlPjI1PC9hZ2U+ PC9wZXJzb24+Jyk7CisKK1NFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3htbF90 ZXN0Jyk7CisKKy0tIFVwZGF0ZSBub24taW5kZXhlZCBYUGF0aCAoYWdlKSAtIGJlaGF2aW9y IGRlcGVuZHMgb24gWE1MIGNvbXBhcmlzb24gZmFsbGJhY2sKKy0tIEZ1bGwgWE1MIHZhbHVl IHJlcGxhY2VtZW50IG1lYW5zIG5vbi1pbmRleGVkIHBhdGggdXBkYXRlcyBzdGlsbCByZXF1 aXJlIGluZGV4IGNvbXBhcmlzb24KK1VQREFURSBob3RfeG1sX3Rlc3QgU0VUIGRvYyA9ICc8 cGVyc29uPjxuYW1lPkFsaWNlPC9uYW1lPjxhZ2U+MzE8L2FnZT48L3BlcnNvbj4nIFdIRVJF IGlkID0gMTsKKworU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfeG1sX3Rlc3Qn KTsKKworLS0gVXBkYXRlIGluZGV4ZWQgWFBhdGggKG5hbWUpIC0gc2hvdWxkIE5PVCBiZSBI T1QKK1VQREFURSBob3RfeG1sX3Rlc3QgU0VUIGRvYyA9ICc8cGVyc29uPjxuYW1lPkFsaWNl MjwvbmFtZT48YWdlPjMxPC9hZ2U+PC9wZXJzb24+JyBXSEVSRSBpZCA9IDE7CisKK1NFTEVD VCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3htbF90ZXN0Jyk7CisKKy0tIFZlcmlmeSBp bmRleCB3b3JrcworU0VMRUNUIGlkIEZST00gaG90X3htbF90ZXN0IFdIRVJFIHhwYXRoKCcv cGVyc29uL25hbWUvdGV4dCgpJywgZG9jKSA9IEFSUkFZWydBbGljZTInOjp0ZXh0XTsKKwor RFJPUCBUQUJMRSBob3RfeG1sX3Rlc3Q7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tIEdJTiBpbmRleGVzIGFuZCBhbWNvbXBhcmVkYXR1bXMgZm9yIEpTT05CCistLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLSBUZXN0IHRoYXQgR0lOIGluZGV4ZXMgY2FuIHVzZSBh bWNvbXBhcmVkYXR1bXMgdG8gZW5hYmxlIEhPVCB3aGVuIGV4dHJhY3RlZCBrZXlzIG1hdGNo CisKK0NSRUFURSBUQUJMRSBob3RfZ2luX3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtF WSwKKyAgICB0YWdzIHRleHRbXSwKKyAgICBwcm9wZXJ0aWVzIGpzb25iCispIFdJVEggKGZp bGxmYWN0b3IgPSA1MCk7CisKKy0tIEdJTiBpbmRleCBvbiB0ZXh0IGFycmF5CitDUkVBVEUg SU5ERVggaG90X2dpbl90YWdzX2lkeCBPTiBob3RfZ2luX3Rlc3QgVVNJTkcgZ2luICh0YWdz KTsKKworLS0gR0lOIGluZGV4IG9uIEpTT05CIChqc29uYl9vcHMgLSBrZXlzIGFuZCB2YWx1 ZXMpCitDUkVBVEUgSU5ERVggaG90X2dpbl9wcm9wc19pZHggT04gaG90X2dpbl90ZXN0IFVT SU5HIGdpbiAocHJvcGVydGllcyk7CisKK0lOU0VSVCBJTlRPIGhvdF9naW5fdGVzdCBWQUxV RVMKKyAgICAoMSwgQVJSQVlbJ3RhZzEnLCAndGFnMiddLCAneyJrZXkxIjoidmFsMSIsImtl eTIiOiJ2YWwyIn0nKSwKKyAgICAoMiwgQVJSQVlbJ3RhZzMnLCAndGFnNCddLCAneyJrZXkz IjoidmFsMyIsImtleTQiOiJ2YWw0In0nKTsKKworU0VMRUNUICogRlJPTSBnZXRfaG90X2Nv dW50KCdob3RfZ2luX3Rlc3QnKTsKKworLS0gVXBkYXRlIHRoYXQgY2hhbmdlcyB0YWcgb3Jk ZXIgYnV0IG5vdCBjb250ZW50IC0gYWZ0ZXIgYW1jb21wYXJlZGF0dW1zIHNob3VsZCBiZSBI T1QKKy0tIChHSU4gZXh0cmFjdHMgc2FtZSBrZXlzLCBqdXN0IGRpZmZlcmVudCBvcmRlcikK K1VQREFURSBob3RfZ2luX3Rlc3QgU0VUIHRhZ3MgPSBBUlJBWVsndGFnMicsICd0YWcxJ10g V0hFUkUgaWQgPSAxOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9naW5f dGVzdCcpOworCistLSBVcGRhdGUgSlNPTkIgdmFsdWUgKG5vdCBrZXkpIC0gYWZ0ZXIgYW1j b21wYXJlZGF0dW1zIG1heSBiZSBIT1Qgb3Igbm9uLUhPVAorLS0gZGVwZW5kaW5nIG9uIEdJ TiBvcGVyYXRvciBjbGFzcyAoanNvbmJfb3BzIGluZGV4ZXMgYm90aCBrZXlzIGFuZCB2YWx1 ZXMpCitVUERBVEUgaG90X2dpbl90ZXN0IFNFVCBwcm9wZXJ0aWVzID0gJ3sia2V5MSI6InZh bDFfbmV3Iiwia2V5MiI6InZhbDIifScgV0hFUkUgaWQgPSAxOworCitTRUxFQ1QgKiBGUk9N IGdldF9ob3RfY291bnQoJ2hvdF9naW5fdGVzdCcpOworCistLSBBZGQgbmV3IHRhZyAtIHNo b3VsZCBOT1QgYmUgSE9UIChkaWZmZXJlbnQgZXh0cmFjdGVkIGtleXMpCitVUERBVEUgaG90 X2dpbl90ZXN0IFNFVCB0YWdzID0gQVJSQVlbJ3RhZzInLCAndGFnMScsICd0YWc1J10gV0hF UkUgaWQgPSAxOworCitTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9naW5fdGVz dCcpOworCistLSBWZXJpZnkgR0lOIGluZGV4ZXMgd29yaworU0VMRUNUIGlkIEZST00gaG90 X2dpbl90ZXN0IFdIRVJFIHRhZ3MgQD4gQVJSQVlbJ3RhZzUnXTsKK1NFTEVDVCBpZCBGUk9N IGhvdF9naW5fdGVzdCBXSEVSRSBwcm9wZXJ0aWVzIEA+ICd7ImtleTEiOiJ2YWwxX25ldyJ9 JzsKKworRFJPUCBUQUJMRSBob3RfZ2luX3Rlc3Q7CisKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIENsZWFudXAKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0RST1AgVEFC TEUgSUYgRVhJU1RTIGhvdF90ZXN0OworRFJPUCBUQUJMRSBJRiBFWElTVFMgaG90X3Rlc3Rf cGFydGl0aW9uZWQgQ0FTQ0FERTsKK0RST1AgRlVOQ1RJT04gSUYgRVhJU1RTIGhhc19ob3Rf Y2hhaW4odGV4dCwgdGlkKTsKK0RST1AgRlVOQ1RJT04gSUYgRVhJU1RTIHByaW50X2hvdF9j aGFpbih0ZXh0LCB0aWQpOworRFJPUCBGVU5DVElPTiBJRiBFWElTVFMgZ2V0X2hvdF9jb3Vu dCh0ZXh0KTsKK0RST1AgRVhURU5TSU9OIHBhZ2VpbnNwZWN0OwotLSAKMi41MC4xCgo= --732d2653398ad274b1166a00220a1f2b85c8ed8b Content-Disposition: attachment; filename*0="v49-0002-Identify-modified-indexed-attributes-in-the-exec.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v49-0002-Identify-modified-indexed-attributes-in-the-exec.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSBhODVlYTJhMzk0NjNiYjY0ZjVjM2IyZWNiYzQ3MjVlNTYzNjYxOTQ0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog VHVlLCAxMCBNYXIgMjAyNiAwODoxNzozMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjQ5IDIv OV0gSWRlbnRpZnkgbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGVzIGluIHRoZSBleGVjdXRv cgogb24gVVBEQVRFCgpSZWZhY3RvciBleGVjdXRvciB1cGRhdGUgbG9naWMgdG8gZGV0ZXJt aW5lIHdoaWNoIGluZGV4ZWQgY29sdW1ucyBoYXZlCmFjdHVhbGx5IGNoYW5nZWQgZHVyaW5n IGFuIFVQREFURSBvcGVyYXRpb24gcmF0aGVyIHRoYW4gbGVhdmluZyB0aGlzIHVwCnRvIEhl YXBEZXRlcm1pbmVDb2x1bW5zSW5mbygpIGluIGhlYXBfdXBkYXRlKCkuIEZpbmRpbmcgdGhp cyBzZXQgb2YKYXR0cmlidXRlcyBpcyBub3QgaGVhcC1zcGVjaWZpYywgYnV0IG1vcmUgZ2Vu ZXJhbCB0byBhbGwgdGFibGUgQU1zIGFuZApoYXZpbmcgdGhpcyBpbmZvcm1hdGlvbiBpbiB0 aGUgZXhlY3V0b3IgY291bGQgaW5mb3JtIG90aGVyIGRlY2lzaW9ucwphYm91dCB3aGVuIGlu ZGV4IGluc2VydHMgYXJlIHJlcXVpcmVkIGFuZCB3aGVuIHRoZXkgYXJlIG5vdCByZWdhcmRs ZXNzCm9mIHRoZSB0YWJsZSBBTSdzIE1WQ0MgaW1wbGVtZW50YXRpb24gc3RyYXRlZ3kuCgpU aGUgaGVhcC1vbmx5IHR1cGxlIGRlY2lzaW9uIChIT1QpIGluIGhlYXAgZnVuY3Rpb25zIGFz IGl0IGFsd2F5cyBoYXM7CndoYXQgbW92ZXMgdG8gdGhlIGV4ZWN1dG9yIGlzIG9ubHkgdGhl IGRldGVybWluYXRpb24gb2YgdGhlICJtb2RpZmllZAppbmRleGVkIGF0dHJpYnV0ZXMiICht b2RpZmllZF9pZHhfYXR0cnMpLgoKRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMoKSByZXBs YWNlcyBIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oKSBhbmQgaXMKY2FsbGVkIGJlZm9yZSB0 YWJsZV90dXBsZV91cGRhdGUoKSBjcnVjaWFsbHkgd2l0aG91dCB0aGUgbmVlZCBmb3IgYW4K ZXhjbHVzaXZlIGJ1ZmZlciBsb2NrIG9uIHRoZSBwYWdlIHRoYXQgaG9sZHMgdGhlIHR1cGxl IGJlaW5nIHVwZGF0ZWQuClRoaXMgcmVkdWNlcyB0aGUgdGltZSB0aGUgYnVmZmVyIGxvY2sg aXMgaGVsZCBsYXRlciB3aXRoaW4KaGVhcGFtX3R1cGxlX3VwZGF0ZSgpIGFuZCBoZWFwX3Vw ZGF0ZSgpLgoKQmVzaWRlcyBpZGVudGlmeWluZyB0aGUgc2V0IG9mIG1vZGlmaWVkIGluZGV4 ZWQgYXR0cmlidXRlcwpIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oKSB3YXMgYWxzbyBwYXJ0 aWFsbHkgcmVzcG9uc2libGUgZm9yIHRoZQpkZWNpc2lvbiBhYm91dCB3aGF0IHRvIFdBTCBs b2cgZm9yIHRoZSByZXBsaWNhIGlkZW50aXR5IGtleS4gVGhhdCBsb2dpYwptb3ZlcyBpbnRv IGhlYXBfdXBkYXRlKCkgYW5kIGludG8gdGhlIHJlcGxhY2VtZW50IGhlbHBlcgpIZWFwVXBk YXRlTW9kaWZpZWRJZHhBdHRycygpLCBzbyBzaW1wbGVfaGVhcF91cGRhdGUoKSBhbmQKaGVh cGFtX3R1cGxlX3VwZGF0ZSgpIHNoYXJlIHRoZSBzYW1lIGxvZ2ljIHNpbmNlIGJvdGggY2Fs bCBpbnRvCmhlYXBfdXBkYXRlKCkuCgpVcGRhdGVzIHN0ZW1taW5nIGZyb20gbG9naWNhbCBy ZXBsaWNhdGlvbiBhbHNvIHVzZSB0aGUgbmV3CkV4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJz KCkgaW4gRXhlY1NpbXBsZVJlbGF0aW9uVXBkYXRlKCkuCgpFeGVjVXBkYXRlTW9kaWZpZWRJ ZHhBdHRycygpIHVzZXMgRXhlY0NvbXBhcmVTbG90QXR0cnMoKSB0byBpZGVudGlmeQp3aGlj aCBhdHRyaWJ1dGVzIGhhdmUgY2hhbmdlZCBhbmQgdGhlbiBpbnRlcnNlY3RzIHRoYXQgd2l0 aCB0aGUgc2V0IG9mCmluZGV4ZWQgYXR0cmlidXRlcyB0byBpZGVudGlmeSB0aGUgbW9kaWZp ZWQgaW5kZXhlZCBzZXQsIHRoZQptb2RpZmllZF9pZHhfYXR0cnMuCgpUaGlzIHBhdGNoIGlu dHJvZHVjZXMgYSBmZXcgaGVscGVyIGZ1bmN0aW9ucyB0byByZWR1Y2UgY29kZSBkdXBsaWNh dGlvbgphbmQgaW5jcmVhc2UgcmVhZGFiaWxpdHk6IEhlYXBVcGRhdGVIb3RBbGxvd2FibGUo KSBhbmQKSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKCksIHVzZWQgaW4gYm90aCBoZWFw X3VwZGF0ZSgpIGFuZApzaW1wbGVfaGVhcF91cGRhdGUoKS4KCmhlYXBfdXBkYXRlKCkgaXMg bm93IGNhbGxlZCB3aXRoIGxvY2ttb2RlIHByZS1kZXRlcm1pbmVkIGFuZCBhIGJvb2xlYW4K aW5kaWNhdGluZyB3aGV0aGVyIHRoZSB1cGRhdGUgbWF5IGJlIEhPVCwgYm90aCBjb25zdC4g SWYgZHVyaW5nCmhlYXBfdXBkYXRlKCkgdGhlIG5ldyB0dXBsZSBmaXRzIG9uIHRoZSBzYW1l IHBhZ2UgYW5kIHRoYXQgYm9vbGVhbiBpcwp0cnVlLCB0aGUgdXBkYXRlIGlzIEhPVC4gU28g YWx0aG91Z2ggdGhlIGZ1bmN0aW9ucyBhbmQgdGltaW5nIG9mIHRoZQpIT1QgZGVjaXNpb24g Y29kZSBoYXZlIGNoYW5nZWQsIG5vbmUgb2YgdGhlIGxvZ2ljIGdvdmVybmluZyB3aGVuIEhP VCBpcwphbGxvd2VkIGhhcyBjaGFuZ2VkLgoKRGV2ZWxvcG1lbnQgb2YgdGhpcyBmZWF0dXJl IGV4cG9zZWQgbm9uZGV0ZXJtaW5pc3RpYyBiZWhhdmlvciBpbiB0aHJlZQpleGlzdGluZyB0 ZXN0cywgd2hpY2ggaGF2ZSBiZWVuIGFkanVzdGVkIHRvIGF2b2lkIGluY29uc2lzdGVudCBy ZXN1bHRzCmR1ZSB0byB0dXBsZSBvcmRlcmluZyBkdXJpbmcgaGVhcCBwYWdlIHNjYW5zLgoK QXV0aG9yZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgpEaXNjdXNzaW9uOiBodHRw czovL2NvbW1pdGZlc3QucG9zdGdyZXNxbC5vcmcvcGF0Y2gvNTU1Ni8KRGlzY3Vzc2lvbjog aHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0Lzc4NTc0QjI0LUJF MEEtNDJDNS04MDc1LTNGQTlGQTYzQjhGQyU0MGFtYXpvbi5jb20KLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAgICAgICAgfCA0NjMgKysrKysrKysrKysr LS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAgICAg fCAgMzQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMgICAgICAgICAg ICB8ICAgNSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMgICAgICAgICAgICAg ICAgIHwgIDE0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyAg ICAgICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNUdXBsZXMuYyAgICAg ICAgICAgICB8ICA3MCArKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJs ZS5jICAgICAgICB8ICA4OCArKystCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNo ZS5jICAgICAgICAgICAgfCAgNDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAg ICAgICAgICAgICAgICAgICB8ICAxMyArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0u aCAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVj dXRvci5oICAgICAgICAgICAgICAgfCAgIDggKwogc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgg ICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS91dGlscy9yZWxj YWNoZS5oICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIC4uLi9leHBlY3RlZC9zeXNjYWNo ZS11cGRhdGUtcHJ1bmVkLm91dCAgICAgICB8ICAxMiArLQogLi4uL3NwZWNzL3N5c2NhY2hl LXVwZGF0ZS1wcnVuZWQuc3BlYyAgICAgICAgIHwgICA2ICstCiAuLi4vcmVncmVzcy9leHBl Y3RlZC9nZW5lcmF0ZWRfdmlydHVhbC5vdXQgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvdHJpZ2dlcnMub3V0ICAgICAgICB8ICAxNiArLQogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC90c2VhcmNoLm91dCAgICAgICAgIHwgICAzICstCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5vdXQgfCAgIDQgKy0KIHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2dlbmVyYXRlZF92aXJ0dWFsLnNxbCAgICB8ICAgMiArLQogc3JjL3Rl c3QvcmVncmVzcy9zcWwvdHJpZ2dlcnMuc3FsICAgICAgICAgICAgIHwgICA0ICstCiBzcmMv dGVzdC9yZWdyZXNzL3NxbC90c2VhcmNoLnNxbCAgICAgICAgICAgICAgfCAgIDMgKy0KIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5zcWwgICAgICB8ICAgMiArLQog MjMgZmlsZXMgY2hhbmdlZCwgNTg3IGluc2VydGlvbnMoKyksIDIyNyBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IGFiZmQ4ZTg5NzBhLi5kYzMwN2Vi NmRjNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTM3LDYgKzM3LDggQEAK ICNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N1YnRy YW5zLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N5bmNzY2FuLmgiCisjaW5jbHVkZSAiYWNjZXNz L3N5c2F0dHIuaCIKKyNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgogI2luY2x1ZGUgImFj Y2Vzcy92YWxpZC5oIgogI2luY2x1ZGUgImFjY2Vzcy92aXNpYmlsaXR5bWFwLmgiCiAjaW5j bHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKQEAgLTQ0LDggKzQ2LDExIEBACiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19kYXRhYmFzZV9kLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVt LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudF9ub2RlLmgiCisjaW5jbHVkZSAi ZXhlY3V0b3IvdHVwdGFibGUuaCIKKyNpbmNsdWRlICJub2Rlcy9sb2Nrb3B0aW9ucy5oIgog I2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvcnQvcGdfYml0dXRpbHMuaCIKKyNp bmNsdWRlICJzdG9yYWdlL2J1Zi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgi CkBAIC01Myw2ICs1OCw3IEBACiAjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRl ICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKICNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgor I2luY2x1ZGUgInV0aWxzL3JlbGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc3BjY2FjaGUu aCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogCkBAIC03MCwxMSArNzYsOCBAQCBz dGF0aWMgdm9pZCBjaGVja19sb2NrX2lmX2lucGxhY2VfdXBkYXRlYWJsZV9yZWwoUmVsYXRp b24gcmVsYXRpb24sCiAJCQkJCQkJCQkJCQkgSGVhcFR1cGxlIG5ld3R1cCk7CiBzdGF0aWMg dm9pZCBjaGVja19pbnBsYWNlX3JlbF9sb2NrKEhlYXBUdXBsZSBvbGR0dXApOwogI2VuZGlm Ci1zdGF0aWMgQml0bWFwc2V0ICpIZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oUmVsYXRpb24g cmVsYXRpb24sCi0JCQkJCQkJCQkJICAgQml0bWFwc2V0ICppbnRlcmVzdGluZ19jb2xzLAot CQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqZXh0ZXJuYWxfY29scywKLQkJCQkJCQkJCQkgICBI ZWFwVHVwbGUgb2xkdHVwLCBIZWFwVHVwbGUgbmV3dHVwLAotCQkJCQkJCQkJCSAgIGJvb2wg Kmhhc19leHRlcm5hbCk7CitzdGF0aWMgQml0bWFwc2V0ICpIZWFwVXBkYXRlTW9kaWZpZWRJ ZHhBdHRycyhSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCQkJCQkJIEhlYXBUdXBsZSBvbGR0 dXAsIEhlYXBUdXBsZSBuZXd0dXApOwogc3RhdGljIGJvb2wgaGVhcF9hY3F1aXJlX3R1cGxv Y2soUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkLAogCQkJ CQkJCQkgTG9ja1R1cGxlTW9kZSBtb2RlLCBMb2NrV2FpdFBvbGljeSB3YWl0X3BvbGljeSwK IAkJCQkJCQkJIGJvb2wgKmhhdmVfdHVwbGVfbG9jayk7CkBAIC0zMTkwLDcgKzMxOTMsNyBA QCBzaW1wbGVfaGVhcF9kZWxldGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2lu dGVyRGF0YSAqdGlkKQogICoJaGVhcF91cGRhdGUgLSByZXBsYWNlIGEgdHVwbGUKICAqCiAg KiBTZWUgdGFibGVfdHVwbGVfdXBkYXRlKCkgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBw YXJhbWV0ZXJzLCBleGNlcHQgdGhhdAotICogdGhpcyByb3V0aW5lIGRpcmVjdGx5IHRha2Vz IGEgdHVwbGUgcmF0aGVyIHRoYW4gYSBzbG90LgorICogdGhpcyByb3V0aW5lIGRpcmVjdGx5 IHRha2VzIGEgaGVhcCB0dXBsZSByYXRoZXIgdGhhbiBhIHNsb3QuCiAgKgogICogSW4gdGhl IGZhaWx1cmUgY2FzZXMsIHRoZSByb3V0aW5lIGZpbGxzICp0bWZkIHdpdGggdGhlIHR1cGxl J3MgdF9jdGlkLAogICogdF94bWF4IChyZXNvbHZpbmcgYSBwb3NzaWJsZSBNdWx0aVhhY3Qs IGlmIG5lY2Vzc2FyeSksIGFuZCB0X2NtYXggKHRoZSBsYXN0CkBAIC0zMjAwLDE3ICszMjAz LDEzIEBAIHNpbXBsZV9oZWFwX2RlbGV0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRl bVBvaW50ZXJEYXRhICp0aWQpCiBUTV9SZXN1bHQKIGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJl bGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSBuZXd0dXAs CiAJCQlDb21tYW5kSWQgY2lkLCB1aW50MzIgb3B0aW9ucyBwZ19hdHRyaWJ1dGVfdW51c2Vk KCksIFNuYXBzaG90IGNyb3NzY2hlY2ssIGJvb2wgd2FpdCwKLQkJCVRNX0ZhaWx1cmVEYXRh ICp0bWZkLCBMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSwKLQkJCVRVX1VwZGF0ZUluZGV4ZXMg KnVwZGF0ZV9pbmRleGVzKQorCQkJVE1fRmFpbHVyZURhdGEgKnRtZmQsIGNvbnN0IExvY2tU dXBsZU1vZGUgbG9ja21vZGUsCisJCQljb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9h dHRycywgY29uc3QgYm9vbCBob3RfYWxsb3dlZCkKIHsKIAlUTV9SZXN1bHQJcmVzdWx0Owog CVRyYW5zYWN0aW9uSWQgeGlkID0gR2V0Q3VycmVudFRyYW5zYWN0aW9uSWQoKTsKLQlCaXRt YXBzZXQgICpob3RfYXR0cnM7Ci0JQml0bWFwc2V0ICAqc3VtX2F0dHJzOwotCUJpdG1hcHNl dCAgKmtleV9hdHRyczsKLQlCaXRtYXBzZXQgICppZF9hdHRyczsKLQlCaXRtYXBzZXQgICpp bnRlcmVzdGluZ19hdHRyczsKLQlCaXRtYXBzZXQgICptb2RpZmllZF9hdHRyczsKKwlCaXRt YXBzZXQgICppZHhfYXR0cnMsCisJCQkgICAqaWRfYXR0cnM7CiAJSXRlbUlkCQlscDsKIAlI ZWFwVHVwbGVEYXRhIG9sZHR1cDsKIAlIZWFwVHVwbGUJaGVhcHR1cDsKQEAgLTMyMzEsMTMg KzMyMzAsMTIgQEAgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Q b2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwKIAlib29sCQloYXZlX3R1cGxl X2xvY2sgPSBmYWxzZTsKIAlib29sCQlpc2NvbWJvOwogCWJvb2wJCXVzZV9ob3RfdXBkYXRl ID0gZmFsc2U7Ci0JYm9vbAkJc3VtbWFyaXplZF91cGRhdGUgPSBmYWxzZTsKIAlib29sCQlr ZXlfaW50YWN0OwogCWJvb2wJCWFsbF92aXNpYmxlX2NsZWFyZWQgPSBmYWxzZTsKIAlib29s CQlhbGxfdmlzaWJsZV9jbGVhcmVkX25ldyA9IGZhbHNlOwogCWJvb2wJCWNoZWNrZWRfbG9j a2VyczsKIAlib29sCQlsb2NrZXJfcmVtYWluczsKLQlib29sCQlpZF9oYXNfZXh0ZXJuYWwg PSBmYWxzZTsKKwlib29sCQlyZXBfaWRfa2V5X3JlcXVpcmVkID0gZmFsc2U7CiAJVHJhbnNh Y3Rpb25JZCB4bWF4X25ld190dXBsZSwKIAkJCQl4bWF4X29sZF90dXBsZTsKIAl1aW50MTYJ CWluZm9tYXNrX29sZF90dXBsZSwKQEAgLTMyNjgsMzMgKzMyNjYsMTggQEAgaGVhcF91cGRh dGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVh cFR1cGxlIG5ld3R1cCwKICNlbmRpZgogCiAJLyoKLQkgKiBGZXRjaCB0aGUgbGlzdCBvZiBh dHRyaWJ1dGVzIHRvIGJlIGNoZWNrZWQgZm9yIHZhcmlvdXMgb3BlcmF0aW9ucy4KLQkgKgot CSAqIEZvciBIT1QgY29uc2lkZXJhdGlvbnMsIHRoaXMgaXMgd2FzdGVkIGVmZm9ydCBpZiB3 ZSBmYWlsIHRvIHVwZGF0ZSBvcgotCSAqIGhhdmUgdG8gcHV0IHRoZSBuZXcgdHVwbGUgb24g YSBkaWZmZXJlbnQgcGFnZS4gIEJ1dCB3ZSBtdXN0IGNvbXB1dGUgdGhlCi0JICogbGlzdCBi ZWZvcmUgb2J0YWluaW5nIGJ1ZmZlciBsb2NrIC0tLSBpbiB0aGUgd29yc3QgY2FzZSwgaWYg d2UgYXJlCi0JICogZG9pbmcgYW4gdXBkYXRlIG9uIG9uZSBvZiB0aGUgcmVsZXZhbnQgc3lz dGVtIGNhdGFsb2dzLCB3ZSBjb3VsZAotCSAqIGRlYWRsb2NrIGlmIHdlIHRyeSB0byBmZXRj aCB0aGUgbGlzdCBsYXRlci4gIEluIGFueSBjYXNlLCB0aGUgcmVsY2FjaGUKLQkgKiBjYWNo ZXMgdGhlIGRhdGEgc28gdGhpcyBpcyB1c3VhbGx5IHByZXR0eSBjaGVhcC4KLQkgKgotCSAq IFdlIGFsc28gbmVlZCBjb2x1bW5zIHVzZWQgYnkgdGhlIHJlcGxpY2EgaWRlbnRpdHkgYW5k IGNvbHVtbnMgdGhhdCBhcmUKLQkgKiBjb25zaWRlcmVkIHRoZSAia2V5IiBvZiByb3dzIGlu IHRoZSB0YWJsZS4KKwkgKiBGZXRjaCB0aGUgYXR0cmlidXRlcyB1c2VkIGFjcm9zcyBhbGwg aW5kZXhlcyBvbiB0aGlzIHJlbGF0aW9uIGFzIHdlbGwKKwkgKiBhcyB0aGUgcmVwbGljYSBp ZGVudGl0eSBhbmQgY29sdW1ucy4KIAkgKgotCSAqIE5vdGUgdGhhdCB3ZSBnZXQgY29waWVz IG9mIGVhY2ggYml0bWFwLCBzbyB3ZSBuZWVkIG5vdCB3b3JyeSBhYm91dAotCSAqIHJlbGNh Y2hlIGZsdXNoIGhhcHBlbmluZyBtaWR3YXkgdGhyb3VnaC4KLQkgKi8KLQlob3RfYXR0cnMg PSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwKLQkJCQkJCQkJCQkgICBJ TkRFWF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkcpOwotCXN1bV9hdHRycyA9IFJlbGF0aW9u R2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLAotCQkJCQkJCQkJCSAgIElOREVYX0FUVFJf QklUTUFQX1NVTU1BUklaRUQpOwotCWtleV9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRy Qml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9LRVkpOwotCWlkX2F0dHJzID0g UmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24sCi0JCQkJCQkJCQkJICBJTkRF WF9BVFRSX0JJVE1BUF9JREVOVElUWV9LRVkpOwotCWludGVyZXN0aW5nX2F0dHJzID0gTlVM TDsKLQlpbnRlcmVzdGluZ19hdHRycyA9IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19h dHRycywgaG90X2F0dHJzKTsKLQlpbnRlcmVzdGluZ19hdHRycyA9IGJtc19hZGRfbWVtYmVy cyhpbnRlcmVzdGluZ19hdHRycywgc3VtX2F0dHJzKTsKLQlpbnRlcmVzdGluZ19hdHRycyA9 IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19hdHRycywga2V5X2F0dHJzKTsKLQlpbnRl cmVzdGluZ19hdHRycyA9IGJtc19hZGRfbWVtYmVycyhpbnRlcmVzdGluZ19hdHRycywgaWRf YXR0cnMpOworCSAqIE5vdGU6IFdlIG11c3QgY29tcHV0ZSB0aGUgbGlzdCBiZWZvcmUgb2J0 YWluaW5nIGJ1ZmZlciBsb2NrLiBJbiB0aGUKKwkgKiB3b3JzdCBjYXNlLCBpZiB3ZSBhcmUg ZG9pbmcgYW4gdXBkYXRlIG9uIG9uZSBvZiB0aGUgcmVsZXZhbnQgc3lzdGVtCisJICogY2F0 YWxvZ3MsIHdlIGNvdWxkIGRlYWRsb2NrIGlmIHdlIHRyeSB0byBmZXRjaCB0aGUgbGlzdCBs YXRlci4gS2VlcCBpbgorCSAqIG1pbmQgdGhhdCByZWxjYWNoZSByZXR1cm5zIGNvcGllcyBv ZiBlYWNoIGJpdG1hcCwgc28gd2UgbmVlZCBub3Qgd29ycnkKKwkgKiBhYm91dCByZWxjYWNo ZSBmbHVzaCBoYXBwZW5pbmcgbWlkd2F5IHRocm91Z2gsIGJ1dCB3ZSBkbyBuZWVkIHRvIGZy ZWUKKwkgKiB0aGVtLgorCSAqLworCWlkeF9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRy Qml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEKTsKKwlpZF9hdHRy cyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJ VE1BUF9JREVOVElUWV9LRVkpOwogCiAJYmxvY2sgPSBJdGVtUG9pbnRlckdldEJsb2NrTnVt YmVyKG90aWQpOwogCUlOSkVDVElPTl9QT0lOVCgiaGVhcF91cGRhdGUtYmVmb3JlLXBpbiIs IE5VTEwpOwpAQCAtMzM0OCwyMCArMzMzMSwxNyBAQCBoZWFwX3VwZGF0ZShSZWxhdGlvbiBy ZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgbmV3dHVw LAogCQl0bWZkLT5jdGlkID0gKm90aWQ7CiAJCXRtZmQtPnhtYXggPSBJbnZhbGlkVHJhbnNh Y3Rpb25JZDsKIAkJdG1mZC0+Y21heCA9IEludmFsaWRDb21tYW5kSWQ7Ci0JCSp1cGRhdGVf aW5kZXhlcyA9IFRVX05vbmU7CiAKLQkJYm1zX2ZyZWUoaG90X2F0dHJzKTsKLQkJYm1zX2Zy ZWUoc3VtX2F0dHJzKTsKLQkJYm1zX2ZyZWUoa2V5X2F0dHJzKTsKIAkJYm1zX2ZyZWUoaWRf YXR0cnMpOwotCQkvKiBtb2RpZmllZF9hdHRycyBub3QgeWV0IGluaXRpYWxpemVkICovCi0J CWJtc19mcmVlKGludGVyZXN0aW5nX2F0dHJzKTsKKwkJYm1zX2ZyZWUoaWR4X2F0dHJzKTsK KwkJLyogbW9kaWZpZWRfaWR4X2F0dHJzIGlzIG93bmVkIGJ5IHRoZSBjYWxsZXIsIGRvbid0 IGZyZWUgaXQgKi8KKwogCQlyZXR1cm4gVE1fRGVsZXRlZDsKIAl9CiAKIAkvKgotCSAqIEZp bGwgaW4gZW5vdWdoIGRhdGEgaW4gb2xkdHVwIGZvciBIZWFwRGV0ZXJtaW5lQ29sdW1uc0lu Zm8gdG8gd29yawotCSAqIHByb3Blcmx5LgorCSAqIEZpbGwgaW4gZW5vdWdoIGRhdGEgaW4g b2xkdHVwIHRvIGRldGVybWluZSByZXBsaWNhIGlkZW50aXR5IGF0dHJpYnV0ZQorCSAqIHJl cXVpcmVtZW50cy4KIAkgKi8KIAlvbGR0dXAudF90YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVs aWQocmVsYXRpb24pOwogCW9sZHR1cC50X2RhdGEgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdl R2V0SXRlbShwYWdlLCBscCk7CkBAIC0zMzcyLDE2ICszMzUyLDU5IEBAIGhlYXBfdXBkYXRl KFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBU dXBsZSBuZXd0dXAsCiAJbmV3dHVwLT50X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChy ZWxhdGlvbik7CiAKIAkvKgotCSAqIERldGVybWluZSBjb2x1bW5zIG1vZGlmaWVkIGJ5IHRo ZSB1cGRhdGUuICBBZGRpdGlvbmFsbHksIGlkZW50aWZ5Ci0JICogd2hldGhlciBhbnkgb2Yg dGhlIHVubW9kaWZpZWQgcmVwbGljYSBpZGVudGl0eSBrZXkgYXR0cmlidXRlcyBpbiB0aGUK LQkgKiBvbGQgdHVwbGUgaXMgZXh0ZXJuYWxseSBzdG9yZWQgb3Igbm90LiAgVGhpcyBpcyBy ZXF1aXJlZCBiZWNhdXNlIGZvcgotCSAqIHN1Y2ggYXR0cmlidXRlcyB0aGUgZmxhdHRlbmVk IHZhbHVlIHdvbid0IGJlIFdBTCBsb2dnZWQgYXMgcGFydCBvZiB0aGUKLQkgKiBuZXcgdHVw bGUgc28gd2UgbXVzdCBpbmNsdWRlIGl0IGFzIHBhcnQgb2YgdGhlIG9sZF9rZXlfdHVwbGUu ICBTZWUKLQkgKiBFeHRyYWN0UmVwbGljYUlkZW50aXR5LgorCSAqIEV4dHJhY3RSZXBsaWNh SWRlbnRpdHkoKSBuZWVkcyB0byBrbm93IGlmIGEgbW9kaWZpZWQgaW5kZXhlZCBhdHRyYnV0 ZQorCSAqIGlzIHVzZWQgYXMgYSByZXBsaWNhIGluZGVudGl0eSBvciBpZiBhbnkgb2YgdGhl IHJlcGxpY2EgaWRlbnRpdHkKKwkgKiBhdHRyaWJ1dGVzIGFyZSByZWZlcmVuY2VkIGluIGFu IGluZGV4LCB1bm1vZGlmaWVkLCBhbmQgYXJlIHN0b3JlZAorCSAqIGV4dGVybmFsbHkgaW4g dGhlIG9sZCB0dXBsZSBiZWluZyByZXBsYWNlZC4gIEluIHRob3NlIGNhc2VzIGl0IG1heSBi ZQorCSAqIG5lY2Vzc2FyeSB0byBXQUwgbG9nIHRoZW0gdG8gc28gdGhleSBhcmUgYXZhaWxh YmxlIHRvIHJlcGxpY2FzLgogCSAqLwotCW1vZGlmaWVkX2F0dHJzID0gSGVhcERldGVybWlu ZUNvbHVtbnNJbmZvKHJlbGF0aW9uLCBpbnRlcmVzdGluZ19hdHRycywKLQkJCQkJCQkJCQkJ ICBpZF9hdHRycywgJm9sZHR1cCwKLQkJCQkJCQkJCQkJICBuZXd0dXAsICZpZF9oYXNfZXh0 ZXJuYWwpOworCXJlcF9pZF9rZXlfcmVxdWlyZWQgPSBibXNfb3ZlcmxhcChtb2RpZmllZF9p ZHhfYXR0cnMsIGlkX2F0dHJzKTsKKwlpZiAoIXJlcF9pZF9rZXlfcmVxdWlyZWQpCisJewor CQlCaXRtYXBzZXQgICphdHRyczsKKwkJVHVwbGVEZXNjCXR1cGRlc2MgPSBSZWxhdGlvbkdl dERlc2NyKHJlbGF0aW9uKTsKKwkJaW50CQkJYXR0aWR4ID0gLTE7CisKKwkJLyoKKwkJICog UmVkdWNlIHRoZSBzZXQgdW5kZXIgcmV2aWV3IHRvIG9ubHkgdGhlIHVubW9kaWZpZWQgaW5k ZXhlZCByZXBsaWNhCisJCSAqIGlkZW50aXR5IGtleSBhdHRyaWJ1dGVzLiAgaWR4X2F0dHJz IGlzIGNvcGllZCAoYnkgYm1zX2RpZmZlcmVuY2UoKSkKKwkJICogbm90IG1vZGlmaWVkIGhl cmUuCisJCSAqLworCQlhdHRycyA9IGJtc19kaWZmZXJlbmNlKGlkeF9hdHRycywgbW9kaWZp ZWRfaWR4X2F0dHJzKTsKKwkJYXR0cnMgPSBibXNfaW50X21lbWJlcnMoYXR0cnMsIGlkX2F0 dHJzKTsKKworCQl3aGlsZSAoKGF0dGlkeCA9IGJtc19uZXh0X21lbWJlcihhdHRycywgYXR0 aWR4KSkgPj0gMCkKKwkJeworCQkJLyoKKwkJCSAqIGF0dGlkeCBpcyB6ZXJvLWJhc2VkLCBh dHRybnVtIGlzIHRoZSBub3JtYWwgYXR0cmlidXRlIG51bWJlcgorCQkJICovCisJCQlBdHRy TnVtYmVyCWF0dHJudW0gPSBhdHRpZHggKyBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRl TnVtYmVyOworCQkJRGF0dW0JCXZhbHVlOworCQkJYm9vbAkJaXNudWxsOworCisJCQkvKgor CQkJICogU3lzdGVtIGF0dHJpYnV0ZXMgYXJlIG5vdCBhZGRlZCBpbnRvIElOREVYX0FUVFJf QklUTUFQX0lOREVYRUQKKwkJCSAqIGJpdG1hcCBieSByZWxjYWNoZS4KKwkJCSAqLworCQkJ QXNzZXJ0KGF0dHJudW0gPiAwKTsKKworCQkJdmFsdWUgPSBoZWFwX2dldGF0dHIoJm9sZHR1 cCwgYXR0cm51bSwgdHVwZGVzYywgJmlzbnVsbCk7CisKKwkJCS8qIE5vIG5lZWQgdG8gY2hl Y2sgYXR0cmlidXRlcyB0aGF0IGNhbid0IGJlIHN0b3JlZCBleHRlcm5hbGx5ICovCisJCQlp ZiAoaXNudWxsIHx8CisJCQkJVHVwbGVEZXNjQ29tcGFjdEF0dHIodHVwZGVzYywgYXR0cm51 bSAtIDEpLT5hdHRsZW4gIT0gLTEpCisJCQkJY29udGludWU7CisKKwkJCS8qIENoZWNrIGlm IHRoZSBvbGQgdHVwbGUncyBhdHRyaWJ1dGUgaXMgc3RvcmVkIGV4dGVybmFsbHkgKi8KKwkJ CWlmIChWQVJBVFRfSVNfRVhURVJOQUwoKHN0cnVjdCB2YXJsZW5hICopIERhdHVtR2V0UG9p bnRlcih2YWx1ZSkpKQorCQkJeworCQkJCXJlcF9pZF9rZXlfcmVxdWlyZWQgPSB0cnVlOwor CQkJCWJyZWFrOworCQkJfQorCQl9CisKKwkJYm1zX2ZyZWUoYXR0cnMpOworCX0KIAogCS8q CiAJICogSWYgd2UncmUgbm90IHVwZGF0aW5nIGFueSAia2V5IiBjb2x1bW4sIHdlIGNhbiBn cmFiIGEgd2Vha2VyIGxvY2sgdHlwZS4KQEAgLTMzOTQsOSArMzQxNyw4IEBAIGhlYXBfdXBk YXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhl YXBUdXBsZSBuZXd0dXAsCiAJICogaXMgdXBkYXRlcyB0aGF0IGRvbid0IG1hbmlwdWxhdGUg a2V5IGNvbHVtbnMsIG5vdCB0aG9zZSB0aGF0CiAJICogc2VyZW5kaXBpdG91c2x5IGFycml2 ZSBhdCB0aGUgc2FtZSBrZXkgdmFsdWVzLgogCSAqLwotCWlmICghYm1zX292ZXJsYXAobW9k aWZpZWRfYXR0cnMsIGtleV9hdHRycykpCisJaWYgKGxvY2ttb2RlID09IExvY2tUdXBsZU5v S2V5RXhjbHVzaXZlKQogCXsKLQkJKmxvY2ttb2RlID0gTG9ja1R1cGxlTm9LZXlFeGNsdXNp dmU7CiAJCW14YWN0X3N0YXR1cyA9IE11bHRpWGFjdFN0YXR1c05vS2V5VXBkYXRlOwogCQlr ZXlfaW50YWN0ID0gdHJ1ZTsKIApAQCAtMzQxMyw3ICszNDM1LDcgQEAgaGVhcF91cGRhdGUo UmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1 cGxlIG5ld3R1cCwKIAl9CiAJZWxzZQogCXsKLQkJKmxvY2ttb2RlID0gTG9ja1R1cGxlRXhj bHVzaXZlOworCQlBc3NlcnQobG9ja21vZGUgPT0gTG9ja1R1cGxlRXhjbHVzaXZlKTsKIAkJ bXhhY3Rfc3RhdHVzID0gTXVsdGlYYWN0U3RhdHVzVXBkYXRlOwogCQlrZXlfaW50YWN0ID0g ZmFsc2U7CiAJfQpAQCAtMzQ5Miw3ICszNTE0LDcgQEAgbDI6CiAJCQlib29sCQljdXJyZW50 X2lzX21lbWJlciA9IGZhbHNlOwogCiAJCQlpZiAoRG9lc011bHRpWGFjdElkQ29uZmxpY3Qo KE11bHRpWGFjdElkKSB4d2FpdCwgaW5mb21hc2ssCi0JCQkJCQkJCQkJKmxvY2ttb2RlLCAm Y3VycmVudF9pc19tZW1iZXIpKQorCQkJCQkJCQkJCWxvY2ttb2RlLCAmY3VycmVudF9pc19t ZW1iZXIpKQogCQkJewogCQkJCUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxP Q0spOwogCkBAIC0zNTAxLDcgKzM1MjMsNyBAQCBsMjoKIAkJCQkgKiByZXF1ZXN0aW5nIGEg bG9jayBhbmQgYWxyZWFkeSBoYXZlIG9uZTsgYXZvaWRzIGRlYWRsb2NrKS4KIAkJCQkgKi8K IAkJCQlpZiAoIWN1cnJlbnRfaXNfbWVtYmVyKQotCQkJCQloZWFwX2FjcXVpcmVfdHVwbG9j ayhyZWxhdGlvbiwgJihvbGR0dXAudF9zZWxmKSwgKmxvY2ttb2RlLAorCQkJCQloZWFwX2Fj cXVpcmVfdHVwbG9jayhyZWxhdGlvbiwgJihvbGR0dXAudF9zZWxmKSwgbG9ja21vZGUsCiAJ CQkJCQkJCQkJIExvY2tXYWl0QmxvY2ssICZoYXZlX3R1cGxlX2xvY2spOwogCiAJCQkJLyog d2FpdCBmb3IgbXVsdGl4YWN0ICovCkBAIC0zNTg2LDcgKzM2MDgsNyBAQCBsMjoKIAkJCSAq IGxvY2suCiAJCQkgKi8KIAkJCUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxP Q0spOwotCQkJaGVhcF9hY3F1aXJlX3R1cGxvY2socmVsYXRpb24sICYob2xkdHVwLnRfc2Vs ZiksICpsb2NrbW9kZSwKKwkJCWhlYXBfYWNxdWlyZV90dXBsb2NrKHJlbGF0aW9uLCAmKG9s ZHR1cC50X3NlbGYpLCBsb2NrbW9kZSwKIAkJCQkJCQkJIExvY2tXYWl0QmxvY2ssICZoYXZl X3R1cGxlX2xvY2spOwogCQkJWGFjdExvY2tUYWJsZVdhaXQoeHdhaXQsIHJlbGF0aW9uLCAm b2xkdHVwLnRfc2VsZiwKIAkJCQkJCQkgIFhMVFdfVXBkYXRlKTsKQEAgLTM2NDYsMTcgKzM2 NjgsMTQgQEAgbDI6CiAJCQl0bWZkLT5jbWF4ID0gSW52YWxpZENvbW1hbmRJZDsKIAkJVW5s b2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOwogCQlpZiAoaGF2ZV90dXBsZV9sb2NrKQotCQkJ VW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1cC50X3NlbGYpLCAqbG9ja21v ZGUpOworCQkJVW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1cC50X3NlbGYp LCBsb2NrbW9kZSk7CiAJCWlmICh2bWJ1ZmZlciAhPSBJbnZhbGlkQnVmZmVyKQogCQkJUmVs ZWFzZUJ1ZmZlcih2bWJ1ZmZlcik7Ci0JCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7CiAK LQkJYm1zX2ZyZWUoaG90X2F0dHJzKTsKLQkJYm1zX2ZyZWUoc3VtX2F0dHJzKTsKLQkJYm1z X2ZyZWUoa2V5X2F0dHJzKTsKIAkJYm1zX2ZyZWUoaWRfYXR0cnMpOwotCQlibXNfZnJlZSht b2RpZmllZF9hdHRycyk7Ci0JCWJtc19mcmVlKGludGVyZXN0aW5nX2F0dHJzKTsKKwkJYm1z X2ZyZWUoaWR4X2F0dHJzKTsKKwkJLyogbW9kaWZpZWRfaWR4X2F0dHJzIGlzIG93bmVkIGJ5 IHRoZSBjYWxsZXIsIGRvbid0IGZyZWUgaXQgKi8KKwogCQlyZXR1cm4gcmVzdWx0OwogCX0K IApAQCAtMzY4Niw3ICszNzA1LDcgQEAgbDI6CiAJY29tcHV0ZV9uZXdfeG1heF9pbmZvbWFz ayhIZWFwVHVwbGVIZWFkZXJHZXRSYXdYbWF4KG9sZHR1cC50X2RhdGEpLAogCQkJCQkJCSAg b2xkdHVwLnRfZGF0YS0+dF9pbmZvbWFzaywKIAkJCQkJCQkgIG9sZHR1cC50X2RhdGEtPnRf aW5mb21hc2syLAotCQkJCQkJCSAgeGlkLCAqbG9ja21vZGUsIHRydWUsCisJCQkJCQkJICB4 aWQsIGxvY2ttb2RlLCB0cnVlLAogCQkJCQkJCSAgJnhtYXhfb2xkX3R1cGxlLCAmaW5mb21h c2tfb2xkX3R1cGxlLAogCQkJCQkJCSAgJmluZm9tYXNrMl9vbGRfdHVwbGUpOwogCkBAIC0z ODAzLDcgKzM4MjIsNyBAQCBsMjoKIAkJY29tcHV0ZV9uZXdfeG1heF9pbmZvbWFzayhIZWFw VHVwbGVIZWFkZXJHZXRSYXdYbWF4KG9sZHR1cC50X2RhdGEpLAogCQkJCQkJCQkgIG9sZHR1 cC50X2RhdGEtPnRfaW5mb21hc2ssCiAJCQkJCQkJCSAgb2xkdHVwLnRfZGF0YS0+dF9pbmZv bWFzazIsCi0JCQkJCQkJCSAgeGlkLCAqbG9ja21vZGUsIGZhbHNlLAorCQkJCQkJCQkgIHhp ZCwgbG9ja21vZGUsIGZhbHNlLAogCQkJCQkJCQkgICZ4bWF4X2xvY2tfb2xkX3R1cGxlLCAm aW5mb21hc2tfbG9ja19vbGRfdHVwbGUsCiAJCQkJCQkJCSAgJmluZm9tYXNrMl9sb2NrX29s ZF90dXBsZSk7CiAKQEAgLTM5NzYsMjAgKzM5OTUsOCBAQCBsMjoKIAkJICogdG8gZG8gYSBI T1QgdXBkYXRlLiAgQ2hlY2sgaWYgYW55IG9mIHRoZSBpbmRleCBjb2x1bW5zIGhhdmUgYmVl bgogCQkgKiBjaGFuZ2VkLgogCQkgKi8KLQkJaWYgKCFibXNfb3ZlcmxhcChtb2RpZmllZF9h dHRycywgaG90X2F0dHJzKSkKLQkJeworCQlpZiAoaG90X2FsbG93ZWQpCiAJCQl1c2VfaG90 X3VwZGF0ZSA9IHRydWU7Ci0KLQkJCS8qCi0JCQkgKiBJZiBub25lIG9mIHRoZSBjb2x1bW5z IHRoYXQgYXJlIHVzZWQgaW4gaG90LWJsb2NraW5nIGluZGV4ZXMKLQkJCSAqIHdlcmUgdXBk YXRlZCwgd2UgY2FuIGFwcGx5IEhPVCwgYnV0IHdlIGRvIHN0aWxsIG5lZWQgdG8gY2hlY2sK LQkJCSAqIGlmIHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBzdW1tYXJpemluZyBpbmRleGVzLCBh bmQgdXBkYXRlIHRob3NlCi0JCQkgKiBpbmRleGVzIGlmIHRoZSBjb2x1bW5zIHdlcmUgdXBk YXRlZCwgb3Igd2UgbWF5IGZhaWwgdG8gZGV0ZWN0Ci0JCQkgKiBlLmcuIHZhbHVlIGJvdW5k IGNoYW5nZXMgaW4gQlJJTiBtaW5tYXggaW5kZXhlcy4KLQkJCSAqLwotCQkJaWYgKGJtc19v dmVybGFwKG1vZGlmaWVkX2F0dHJzLCBzdW1fYXR0cnMpKQotCQkJCXN1bW1hcml6ZWRfdXBk YXRlID0gdHJ1ZTsKLQkJfQogCX0KIAllbHNlCiAJewpAQCAtNDAwNSw4ICs0MDEyLDcgQEAg bDI6CiAJICogY29sdW1ucyBhcmUgbW9kaWZpZWQgb3IgaXQgaGFzIGV4dGVybmFsIGRhdGEu CiAJICovCiAJb2xkX2tleV90dXBsZSA9IEV4dHJhY3RSZXBsaWNhSWRlbnRpdHkocmVsYXRp b24sICZvbGR0dXAsCi0JCQkJCQkJCQkJICAgYm1zX292ZXJsYXAobW9kaWZpZWRfYXR0cnMs IGlkX2F0dHJzKSB8fAotCQkJCQkJCQkJCSAgIGlkX2hhc19leHRlcm5hbCwKKwkJCQkJCQkJ CQkgICByZXBfaWRfa2V5X3JlcXVpcmVkLAogCQkJCQkJCQkJCSAgICZvbGRfa2V5X2NvcGll ZCk7CiAKIAkvKiBOTyBFUkVQT1JUKEVSUk9SKSBmcm9tIGhlcmUgdGlsbCBjaGFuZ2VzIGFy ZSBsb2dnZWQgKi8KQEAgLTQxMzYsNyArNDE0Miw3IEBAIGwyOgogCSAqIFJlbGVhc2UgdGhl IGxtZ3IgdHVwbGUgbG9jaywgaWYgd2UgaGFkIGl0LgogCSAqLwogCWlmIChoYXZlX3R1cGxl X2xvY2spCi0JCVVubG9ja1R1cGxlVHVwbG9jayhyZWxhdGlvbiwgJihvbGR0dXAudF9zZWxm KSwgKmxvY2ttb2RlKTsKKwkJVW5sb2NrVHVwbGVUdXBsb2NrKHJlbGF0aW9uLCAmKG9sZHR1 cC50X3NlbGYpLCBsb2NrbW9kZSk7CiAKIAlwZ3N0YXRfY291bnRfaGVhcF91cGRhdGUocmVs YXRpb24sIHVzZV9ob3RfdXBkYXRlLCBuZXdidWYgIT0gYnVmZmVyKTsKIApAQCAtNDE1MCwz MSArNDE1NiwxMiBAQCBsMjoKIAkJaGVhcF9mcmVldHVwbGUoaGVhcHR1cCk7CiAJfQogCi0J LyoKLQkgKiBJZiBpdCBpcyBhIEhPVCB1cGRhdGUsIHRoZSB1cGRhdGUgbWF5IHN0aWxsIG5l ZWQgdG8gdXBkYXRlIHN1bW1hcml6ZWQKLQkgKiBpbmRleGVzLCBsZXN0IHdlIGZhaWwgdG8g dXBkYXRlIHRob3NlIHN1bW1hcmllcyBhbmQgZ2V0IGluY29ycmVjdAotCSAqIHJlc3VsdHMg KGZvciBleGFtcGxlLCBtaW5tYXggYm91bmRzIG9mIHRoZSBibG9jayBtYXkgY2hhbmdlIHdp dGggdGhpcwotCSAqIHVwZGF0ZSkuCi0JICovCi0JaWYgKHVzZV9ob3RfdXBkYXRlKQotCXsK LQkJaWYgKHN1bW1hcml6ZWRfdXBkYXRlKQotCQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfU3Vt bWFyaXppbmc7Ci0JCWVsc2UKLQkJCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7Ci0JfQot CWVsc2UKLQkJKnVwZGF0ZV9pbmRleGVzID0gVFVfQWxsOwotCiAJaWYgKG9sZF9rZXlfdHVw bGUgIT0gTlVMTCAmJiBvbGRfa2V5X2NvcGllZCkKIAkJaGVhcF9mcmVldHVwbGUob2xkX2tl eV90dXBsZSk7CiAKLQlibXNfZnJlZShob3RfYXR0cnMpOwotCWJtc19mcmVlKHN1bV9hdHRy cyk7Ci0JYm1zX2ZyZWUoa2V5X2F0dHJzKTsKIAlibXNfZnJlZShpZF9hdHRycyk7Ci0JYm1z X2ZyZWUobW9kaWZpZWRfYXR0cnMpOwotCWJtc19mcmVlKGludGVyZXN0aW5nX2F0dHJzKTsK KwlibXNfZnJlZShpZHhfYXR0cnMpOworCS8qIG1vZGlmaWVkX2lkeF9hdHRycyBpcyBvd25l ZCBieSB0aGUgY2FsbGVyLCBkb24ndCBmcmVlIGl0ICovCiAKIAlyZXR1cm4gVE1fT2s7CiB9 CkBAIC00MzQ3LDI4ICs0MzM0LDExNSBAQCBoZWFwX2F0dHJfZXF1YWxzKFR1cGxlRGVzYyB0 dXBkZXNjLCBpbnQgYXR0cm51bSwgRGF0dW0gdmFsdWUxLCBEYXR1bSB2YWx1ZTIsCiB9CiAK IC8qCi0gKiBDaGVjayB3aGljaCBjb2x1bW5zIGFyZSBiZWluZyB1cGRhdGVkLgotICoKLSAq IEdpdmVuIGFuIHVwZGF0ZWQgdHVwbGUsIGRldGVybWluZSAoYW5kIHJldHVybiBpbnRvIHRo ZSBvdXRwdXQgYml0bWFwc2V0KSwKLSAqIGZyb20gdGhvc2UgbGlzdGVkIGFzIGludGVyZXN0 aW5nLCB0aGUgc2V0IG9mIGNvbHVtbnMgdGhhdCBjaGFuZ2VkLgotICoKLSAqIGhhc19leHRl cm5hbCBpbmRpY2F0ZXMgaWYgYW55IG9mIHRoZSB1bm1vZGlmaWVkIGF0dHJpYnV0ZXMgKGZy b20gdGhvc2UKLSAqIGxpc3RlZCBhcyBpbnRlcmVzdGluZykgb2YgdGhlIG9sZCB0dXBsZSBp cyBhIG1lbWJlciBvZiBleHRlcm5hbF9jb2xzIGFuZCBpcwotICogc3RvcmVkIGV4dGVybmFs bHkuCisgKiBIT1QgdXBkYXRlcyBhcmUgcG9zc2libGUgd2hlbiBlaXRoZXI6IGEpIHRoZXJl IGFyZSBubyBtb2RpZmllZCBpbmRleGVkCisgKiBhdHRyaWJ1dGVzLCBvciBiKSB0aGUgbW9k aWZpZWQgYXR0cmlidXRlcyBhcmUgYWxsIG9uIHN1bW1hcml6aW5nIGluZGV4ZXMuCisgKiBM YXRlciwgaW4gaGVhcF91cGRhdGUoKSwgd2UgY2FuIGNob29zZSB0byBwZXJmb3JtIGEgSE9U IHVwZGF0ZSBpZiB0aGVyZSBpcworICogc3BhY2Ugb24gdGhlIHBhZ2UgZm9yIHRoZSBuZXcg dHVwbGUgYW5kIHRoZSBmb2xsb3dpbmcgY29kZSBoYXMgZGV0ZXJtaW5lZAorICogdGhhdCBI T1QgaXMgYWxsb3dlZC4KKyAqLworYm9vbAorSGVhcFVwZGF0ZUhvdEFsbG93YWJsZShSZWxh dGlvbiByZWxhdGlvbiwgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsCisJ CQkJCSAgIGJvb2wgKnN1bW1hcml6ZWRfb25seSkKK3sKKwlib29sCQlob3RfYWxsb3dlZDsK KworCS8qCisJICogTGV0J3MgYmUgb3B0aW1pc3RpYyBhbmQgc3RhcnQgb2ZmIGJ5IGFzc3Vt aW5nIHRoZSBiZXN0IGNhc2UsIG5vIGluZGV4ZXMKKwkgKiBuZWVkIHVwZGF0aW5nIGFuZCBI T1QgaXMgYWxsb3dhYmxlLgorCSAqLworCWhvdF9hbGxvd2VkID0gdHJ1ZTsKKwkqc3VtbWFy aXplZF9vbmx5ID0gZmFsc2U7CisKKwkvKgorCSAqIENoZWNrIGZvciBjYXNlIChhKTsgd2hl biB0aGVyZSBhcmUgbm8gbW9kaWZpZWQgaW5kZXggYXR0cmlidXRlcyBIT1QgaXMKKwkgKiBh bGxvd2VkLgorCSAqLworCWlmIChibXNfaXNfZW1wdHkobW9kaWZpZWRfaWR4X2F0dHJzKSkK KwkJaG90X2FsbG93ZWQgPSB0cnVlOworCWVsc2UKKwl7CisJCUJpdG1hcHNldCAgKnN1bV9h dHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLAorCQkJCQkJCQkJ CQkJCQkgICBJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVEKTsKKworCQkvKgorCQkgKiBB dCBsZWFzdCBvbmUgaW5kZXggYXR0cmlidXRlIHdhcyBtb2RpZmllZCwgYnV0IGlzIHRoaXMg Y2FzZSAoYikKKwkJICogd2hlcmUgYWxsIHRoZSBtb2RpZmllZCBpbmRleCBhdHRyaWJ1dGVz IGFyZSBvbmx5IHVzZWQgYnkKKwkJICogc3VtbWFyaXppbmcgaW5kZXhlcz8gIElmIGl0IGlz LCB0aGVuIHdlIG5lZWQgdG8gdXBkYXRlIHRob3NlCisJCSAqIGluZGV4ZXMsIGJ1dCB0aGlz IHVwZGF0ZSBjYW4gc3RpbGwgYmUgY29uc2lkZXJlZCBoZWFwLW9ubHkgKEhPVCkKKwkJICog YW5kIGF2b2lkIHVwZGF0aW5nIGFueSBub24tc3VtbWFyaXppbmcgaW5kZXhlcyBvbiB0aGUg cmVsYXRpb24uCisJCSAqLworCQlpZiAoYm1zX2lzX3N1YnNldChtb2RpZmllZF9pZHhfYXR0 cnMsIHN1bV9hdHRycykpCisJCXsKKwkJCWhvdF9hbGxvd2VkID0gdHJ1ZTsKKwkJCSpzdW1t YXJpemVkX29ubHkgPSB0cnVlOworCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIE5v dyB3ZSBrbm93IGEpIG9uZSBvciBtb3JlIGluZGV4ZWQgYXR0cmlidXRlcyB3ZXJlIG1vZGlm aWVkCisJCQkgKiAoY2hhbmdlZCB2YWx1ZSwgbm90IGp1c3QgcmVmZXJlbmNlZCB3aXRoaW4g dGhlIFVQREFURSkgYW5kIHRoYXQKKwkJCSAqIGIpIGF0IGxlYXN0IG9uZSBvZiB0aG9zZSBh dHRyaWJ1dGVzIGlzIHVzZWQgYnkgYQorCQkJICogbm9uLXN1bW1hcml6aW5nIGluZGV4LiBI T1QgaXMgbm90IGFsbG93ZWQuCisJCQkgKi8KKwkJCWhvdF9hbGxvd2VkID0gZmFsc2U7CisJ CX0KKworCQlibXNfZnJlZShzdW1fYXR0cnMpOworCX0KKworCXJldHVybiBob3RfYWxsb3dl ZDsKK30KKworLyoKKyAqIElmIHdlJ3JlIG5vdCB1cGRhdGluZyBhbnkgYXR0cmlidXRlcyB1 c2VkIHdoZW4gZm9ybWluZyB0aGUgaW5kZXgga2V5cyB3ZSBjYW4KKyAqIGdyYWIgYSB3ZWFr ZXIgbG9jayB0eXBlLiBUaGlzIGFsbG93cyBmb3IgbW9yZSBjb25jdXJyZW5jeSB3aGVuIHdl IGFyZQorICogcnVubmluZyBzaW11bHRhbmVvdXNseSB3aXRoIGZvcmVpZ24ga2V5IGNoZWNr cy4KKyAqLworTG9ja1R1cGxlTW9kZQorSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKFJl bGF0aW9uIHJlbGF0aW9uLCBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycykK K3sKKwlMb2NrVHVwbGVNb2RlIGxvY2ttb2RlID0gTG9ja1R1cGxlRXhjbHVzaXZlOworCisJ Qml0bWFwc2V0ICAqa2V5X2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVs YXRpb24sCisJCQkJCQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRNQVBfS0VZKTsKKworCWlm ICghYm1zX292ZXJsYXAobW9kaWZpZWRfaWR4X2F0dHJzLCBrZXlfYXR0cnMpKQorCQlsb2Nr bW9kZSA9IExvY2tUdXBsZU5vS2V5RXhjbHVzaXZlOworCisJYm1zX2ZyZWUoa2V5X2F0dHJz KTsKKworCXJldHVybiBsb2NrbW9kZTsKK30KKworLyoKKyAqIFJldHVybiBhIEJpdG1hcHNl dCB0aGF0IGNvbnRhaW5zIHRoZSBzZXQgb2YgbW9kaWZpZWQgKGNoYW5nZWQpIGluZGV4ZWQK KyAqIGF0dHJpYnV0ZXMgYmV0d2VlbiBvbGR0dXAgYW5kIG5ld3R1cC4KICAqLwogc3RhdGlj IEJpdG1hcHNldCAqCi1IZWFwRGV0ZXJtaW5lQ29sdW1uc0luZm8oUmVsYXRpb24gcmVsYXRp b24sCi0JCQkJCQkgQml0bWFwc2V0ICppbnRlcmVzdGluZ19jb2xzLAotCQkJCQkJIEJpdG1h cHNldCAqZXh0ZXJuYWxfY29scywKLQkJCQkJCSBIZWFwVHVwbGUgb2xkdHVwLCBIZWFwVHVw bGUgbmV3dHVwLAotCQkJCQkJIGJvb2wgKmhhc19leHRlcm5hbCkKK0hlYXBVcGRhdGVNb2Rp ZmllZElkeEF0dHJzKFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgb2xkdHVwLCBIZWFw VHVwbGUgbmV3dHVwKQogewogCWludAkJCWF0dGlkeDsKLQlCaXRtYXBzZXQgICptb2RpZmll ZCA9IE5VTEw7CisJQml0bWFwc2V0ICAqYXR0cnMsCisJCQkgICAqbW9kaWZpZWRfaWR4X2F0 dHJzID0gTlVMTDsKIAlUdXBsZURlc2MJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVs YXRpb24pOwogCisJLyogR2V0IHRoZSBzZXQgb2YgYWxsIGF0dHJpYnV0ZXMgYWNyb3NzIGFs bCBpbmRleGVzIGZvciB0aGlzIHJlbGF0aW9uICovCisJYXR0cnMgPSBSZWxhdGlvbkdldElu ZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwgSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRCk7CisK KwkvKiBObyBpbmRleGVkIGF0dHJpYnV0ZXMsIHdlJ3JlIGRvbmUgKi8KKwlpZiAoYm1zX2lz X2VtcHR5KGF0dHJzKSkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKgorCSAqIFRoaXMgaGVhcCB1 cGRhdGUgZnVuY3Rpb24gaXMgdXNlZCBvdXRzaWRlIHRoZSBleGVjdXRvciBhbmQgc28gdW5s aWtlCisJICogaGVhcGFtX3R1cGxlX3VwZGF0ZSgpIHdoZXJlIHRoZXJlIGlzIFJlc3VsdFJl bEluZm8gYW5kIEVTdGF0ZSB0bworCSAqIHByb3ZpZGUgdGhlIGNvbmNpc2Ugc2V0IG9mIGF0 dHJpYnV0ZXMgdGhhdCBtaWdodCBoYXZlIGJlZW4gbW9kaWZpZWQKKwkgKiAodmlhIEV4ZWNH ZXRBbGxVcGRhdGVkQ29scygpKSB3ZSBzaW1wbHkgY2hlY2sgYWxsIGluZGV4ZWQgYXR0cmli dXRlcyB0bworCSAqIGZpbmQgdGhlIHN1YnNldCB0aGF0IGNoYW5nZWQgdmFsdWUuICBUaGF0 J3MgdGhlICJtb2RpZmllZCBpbmRleGVkCisJICogYXR0cmlidXRlcyIgb3IgIm1vZGlmaWVk X2lkeF9hdHRycyIuCisJICovCiAJYXR0aWR4ID0gLTE7Ci0Jd2hpbGUgKChhdHRpZHggPSBi bXNfbmV4dF9tZW1iZXIoaW50ZXJlc3RpbmdfY29scywgYXR0aWR4KSkgPj0gMCkKKwl3aGls ZSAoKGF0dGlkeCA9IGJtc19uZXh0X21lbWJlcihhdHRycywgYXR0aWR4KSkgPj0gMCkKIAl7 CiAJCS8qIGF0dGlkeCBpcyB6ZXJvLWJhc2VkLCBhdHRybnVtIGlzIHRoZSBub3JtYWwgYXR0 cmlidXRlIG51bWJlciAqLwogCQlBdHRyTnVtYmVyCWF0dHJudW0gPSBhdHRpZHggKyBGaXJz dExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyOwpAQCAtNDM4NCw3ICs0NDU4LDcgQEAg SGVhcERldGVybWluZUNvbHVtbnNJbmZvKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkgKi8KIAkJ aWYgKGF0dHJudW0gPT0gMCkKIAkJewotCQkJbW9kaWZpZWQgPSBibXNfYWRkX21lbWJlciht b2RpZmllZCwgYXR0aWR4KTsKKwkJCW1vZGlmaWVkX2lkeF9hdHRycyA9IGJtc19hZGRfbWVt YmVyKG1vZGlmaWVkX2lkeF9hdHRycywgYXR0aWR4KTsKIAkJCWNvbnRpbnVlOwogCQl9CiAK QEAgLTQzOTcsNyArNDQ3MSw3IEBAIEhlYXBEZXRlcm1pbmVDb2x1bW5zSW5mbyhSZWxhdGlv biByZWxhdGlvbiwKIAkJewogCQkJaWYgKGF0dHJudW0gIT0gVGFibGVPaWRBdHRyaWJ1dGVO dW1iZXIpCiAJCQl7Ci0JCQkJbW9kaWZpZWQgPSBibXNfYWRkX21lbWJlcihtb2RpZmllZCwg YXR0aWR4KTsKKwkJCQltb2RpZmllZF9pZHhfYXR0cnMgPSBibXNfYWRkX21lbWJlcihtb2Rp ZmllZF9pZHhfYXR0cnMsIGF0dGlkeCk7CiAJCQkJY29udGludWU7CiAJCQl9CiAJCX0KQEAg LTQ0MTMsMjkgKzQ0ODcsMTIgQEAgSGVhcERldGVybWluZUNvbHVtbnNJbmZvKFJlbGF0aW9u IHJlbGF0aW9uLAogCiAJCWlmICghaGVhcF9hdHRyX2VxdWFscyh0dXBkZXNjLCBhdHRybnVt LCB2YWx1ZTEsCiAJCQkJCQkJICB2YWx1ZTIsIGlzbnVsbDEsIGlzbnVsbDIpKQotCQl7Ci0J CQltb2RpZmllZCA9IGJtc19hZGRfbWVtYmVyKG1vZGlmaWVkLCBhdHRpZHgpOwotCQkJY29u dGludWU7Ci0JCX0KLQotCQkvKgotCQkgKiBObyBuZWVkIHRvIGNoZWNrIGF0dHJpYnV0ZXMg dGhhdCBjYW4ndCBiZSBzdG9yZWQgZXh0ZXJuYWxseS4gTm90ZQotCQkgKiB0aGF0IHN5c3Rl bSBhdHRyaWJ1dGVzIGNhbid0IGJlIHN0b3JlZCBleHRlcm5hbGx5LgotCQkgKi8KLQkJaWYg KGF0dHJudW0gPCAwIHx8IGlzbnVsbDEgfHwKLQkJCVR1cGxlRGVzY0NvbXBhY3RBdHRyKHR1 cGRlc2MsIGF0dHJudW0gLSAxKS0+YXR0bGVuICE9IC0xKQotCQkJY29udGludWU7Ci0KLQkJ LyoKLQkJICogQ2hlY2sgaWYgdGhlIG9sZCB0dXBsZSdzIGF0dHJpYnV0ZSBpcyBzdG9yZWQg ZXh0ZXJuYWxseSBhbmQgaXMgYQotCQkgKiBtZW1iZXIgb2YgZXh0ZXJuYWxfY29scy4KLQkJ ICovCi0JCWlmIChWQVJBVFRfSVNfRVhURVJOQUwoKHZhcmxlbmEgKikgRGF0dW1HZXRQb2lu dGVyKHZhbHVlMSkpICYmCi0JCQlibXNfaXNfbWVtYmVyKGF0dGlkeCwgZXh0ZXJuYWxfY29s cykpCi0JCQkqaGFzX2V4dGVybmFsID0gdHJ1ZTsKKwkJCW1vZGlmaWVkX2lkeF9hdHRycyA9 IGJtc19hZGRfbWVtYmVyKG1vZGlmaWVkX2lkeF9hdHRycywgYXR0aWR4KTsKIAl9CiAKLQly ZXR1cm4gbW9kaWZpZWQ7CisJYm1zX2ZyZWUoYXR0cnMpOworCisJcmV0dXJuIG1vZGlmaWVk X2lkeF9hdHRyczsKIH0KIAogLyoKQEAgLTQ0NTMsMTIgKzQ1MTAsMTA2IEBAIHNpbXBsZV9o ZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpv dGlkLCBIZWFwVHVwbGUgdHVwCiAJVE1fUmVzdWx0CXJlc3VsdDsKIAlUTV9GYWlsdXJlRGF0 YSB0bWZkOwogCUxvY2tUdXBsZU1vZGUgbG9ja21vZGU7CisJVHVwbGVUYWJsZVNsb3QgKnNs b3Q7CisJQnVmZmVySGVhcFR1cGxlVGFibGVTbG90ICpic2xvdDsKKwlIZWFwVHVwbGUJb2xk dHVwOworCWJvb2wJCXNob3VsZEZyZWUgPSB0cnVlOworCUJpdG1hcHNldCAgKmlkeF9hdHRy cywKKwkJCSAgICptb2RpZmllZF9pZHhfYXR0cnM7CisJYm9vbAkJaG90X2FsbG93ZWQsCisJ CQkJc3VtbWFyaXplZF9vbmx5OworCUJ1ZmZlcgkJYnVmZmVyOwogCi0JcmVzdWx0ID0gaGVh cF91cGRhdGUocmVsYXRpb24sIG90aWQsIHR1cCwKLQkJCQkJCSBHZXRDdXJyZW50Q29tbWFu ZElkKHRydWUpLCAwLAotCQkJCQkJIEludmFsaWRTbmFwc2hvdCwKLQkJCQkJCSB0cnVlIC8q IHdhaXQgZm9yIGNvbW1pdCAqLyAsCi0JCQkJCQkgJnRtZmQsICZsb2NrbW9kZSwgdXBkYXRl X2luZGV4ZXMpOworCUFzc2VydChJdGVtUG9pbnRlcklzVmFsaWQob3RpZCkpOworCisJLyoK KwkgKiBGZXRjaCB0aGlzIGJpdG1hcCBvZiBpbnRlcmVzdGluZyBhdHRyaWJ1dGVzIGZyb20g cmVsY2FjaGUgYmVmb3JlCisJICogb2J0YWluaW5nIGEgYnVmZmVyIGxvY2sgYmVjYXVzZSBp ZiB3ZSBhcmUgZG9pbmcgYW4gdXBkYXRlIG9uIG9uZSBvZiB0aGUKKwkgKiByZWxldmFudCBz eXN0ZW0gY2F0YWxvZ3Mgd2UgY291bGQgZGVhZGxvY2sgaWYgd2UgdHJ5IHRvIGZldGNoIHRo ZW0KKwkgKiBsYXRlciBvbi4gUmVsY2FjaGUgd2lsbCByZXR1cm4gY29waWVzIG9mIGVhY2gg Yml0bWFwLCBzbyB3ZSBuZWVkIG5vdAorCSAqIHdvcnJ5IGFib3V0IHJlbGNhY2hlIGZsdXNo IGhhcHBlbmluZyBtaWR3YXkgdGhyb3VnaCB0aGlzIG9wZXJhdGlvbi4KKwkgKi8KKwlpZHhf YXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwgSU5ERVhfQVRU Ul9CSVRNQVBfSU5ERVhFRCk7CisKKwlJTkpFQ1RJT05fUE9JTlQoInNpbXBsZV9oZWFwX3Vw ZGF0ZS1iZWZvcmUtcGluIiwgTlVMTCk7CisKKwkvKgorCSAqIFRvIHVwZGF0ZSBhIGhlYXAg dHVwbGUgd2UgbmVlZCB0byBmaW5kIHRoZSBzZXQgb2YgbW9kaWZpZWQgaW5kZXhlZAorCSAq IGF0dHJpYnV0ZXMgKCJtb2RpZmllZF9pZHhfYXR0cnMiKSBhbmQgdXNlIHRoYXQgdG8gZGV0 ZXJtaW5lIGlmIGEgSE9UCisJICogdXBkYXRlIGlzIGFsbG93YWJsZSBvciBub3QuIFdoZW4g dXBkYXRpbmcgaGVhcCB0dXBsZXMgdmlhIGV4ZWN1dGlvbiBvZgorCSAqIFVQREFURSBzdGF0 ZW1lbnRzIHRoaXMgc2V0IGlzIGNvbnN0cnVjdGVkIGJlZm9yZSBjYWxsaW5nIGludG8gdGhl IHRhYmxlCisJICogQU0ncyB1cGRhdGUgZnVuY3Rpb24gYnkgRXhlY1VwZGF0ZU1vZGlmaWVk SWR4QXR0cnMoKSB3aGljaCBjb21wYXJlcyB0aGUKKwkgKiBvbGQvbmV3IFR1cGxlVGFibGVT bG90cy4KKwkgKgorCSAqIEhlcmUgdGhpbmdzIGFyZSBhIGJpdCBkaWZmZXJlbnQsIHdlIGhh dmUgdGhlIG9sZCBUSUQgYW5kIHRoZSBuZXcgdHVwbGUsCisJICogbm90IHR3byBUdXBsZVRh YmxlU2xvdHMsIGJ1dCB3ZSBzdGlsbCBuZWVkIHRvIGNvbnN0cnVjdCBhIHNpbWlsYXIKKwkg KiBiaXRtYXAgc28gYXMgdG8gYmUgYWJsZSB0byBrbm93IGlmIEhPVCB1cGRhdGVzIGFyZSBh bGxvd2VkIG9yIG5vdC4KKwkgKgorCSAqIFRvIGRvIHRoYXQgd2UgZmlyc3QgaGF2ZSB0byBm ZXRjaCB0aGUgb2xkIHR1cGxlIGl0c2VsZiwgYnV0IGJlY2F1c2UKKwkgKiBoZWFwYW1fZmV0 Y2hfcm93X3ZlcnNpb24oKSBpcyBzdGF0aWMsIHdlIHJlcGxpY2F0ZSBpbiBwYXJ0IHRoYXQg Y29kZQorCSAqIGhlcmUuCisJICoKKwkgKiBUaGlzIGlzIGEgYml0IHJlcGV0aXRpdmUgYmVj YXVzZSBoZWFwX3VwZGF0ZSgpIHdpbGwgYWdhaW4gZmluZCBhbmQgZm9ybQorCSAqIHRoZSBv bGQgSGVhcFR1cGxlIGZyb20gdGhlIG9sZCBUSUQgYW5kIGluIG1vc3QgY2FzZXMgdGhlIGNh bGxlcnMKKwkgKiAoaWdub3JpbmcgZXh0ZW5zaW9ucywgYXJlIGFsd2F5cyBjYXRhbG9nIHR1 cGxlIHVwZGF0ZXMpIGFscmVhZHkgaGFkIHRoZQorCSAqIHNldCBvZiBjaGFuZ2VkIGF0dHJp YnV0ZXMgKHRoZSAicmVwbGFjZXMiIGFycmF5KSwgYnV0IGZvciBub3cgdGhpcworCSAqIG1p bm9yIHJlcGV0aXRpb24gb2Ygd29yayBpcyBuZWNlc3NhcnkuCisJICovCisJc2xvdCA9IE1h a2VUdXBsZVRhYmxlU2xvdChSZWxhdGlvbkdldERlc2NyKHJlbGF0aW9uKSwgJlRUU09wc0J1 ZmZlckhlYXBUdXBsZSwgMCk7CisJYnNsb3QgPSAoQnVmZmVySGVhcFR1cGxlVGFibGVTbG90 ICopIHNsb3Q7CisKKwkvKgorCSAqIFNldCB0aGUgVElEIGluIHRoZSBzbG90IGFuZCB0aGVu IGZldGNoIHRoZSBvbGQgdHVwbGUgc28gd2UgY2FuIGV4YW1pbmUKKwkgKiBpdAorCSAqLwor CWJzbG90LT5iYXNlLnR1cGRhdGEudF9zZWxmID0gKm90aWQ7CisJaWYgKCFoZWFwX2ZldGNo KHJlbGF0aW9uLCBTbmFwc2hvdEFueSwgJmJzbG90LT5iYXNlLnR1cGRhdGEsICZidWZmZXIs IGZhbHNlKSkKKwl7CisJCS8qCisJCSAqIGhlYXBfdXBkYXRlKCkgY2hlY2tzIGZvciAhSXRl bUlkSXNOb3JtYWwobHApIGFuZCB3aWxsIHJldHVybiBmYWxzZQorCQkgKiBpbiB0aG9zZSBj YXNlcy4KKwkJICovCisJCUFzc2VydChSZWxhdGlvblN1cHBvcnRzU3lzQ2FjaGUoUmVsYXRp b25HZXRSZWxpZChyZWxhdGlvbikpKTsKKworCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25l OworCisJCS8qIG1vZGlmaWVkX2lkeF9hdHRycyBub3QgeWV0IGluaXRpYWxpemVkICovCisJ CWJtc19mcmVlKGlkeF9hdHRycyk7CisJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qo c2xvdCk7CisKKwkJZWxvZyhFUlJPUiwgInR1cGxlIGNvbmN1cnJlbnRseSBkZWxldGVkIik7 CisKKwkJcmV0dXJuOworCX0KKworCUFzc2VydChidWZmZXIgIT0gSW52YWxpZEJ1ZmZlcik7 CisKKwkvKiBTdG9yZSBpbiBzbG90LCB0cmFuc2ZlcnJpbmcgZXhpc3RpbmcgcGluICovCisJ RXhlY1N0b3JlUGlubmVkQnVmZmVySGVhcFR1cGxlKCZic2xvdC0+YmFzZS50dXBkYXRhLCBz bG90LCBidWZmZXIpOworCW9sZHR1cCA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGUoc2xvdCwg ZmFsc2UsICZzaG91bGRGcmVlKTsKKworCW1vZGlmaWVkX2lkeF9hdHRycyA9IEhlYXBVcGRh dGVNb2RpZmllZElkeEF0dHJzKHJlbGF0aW9uLCBvbGR0dXAsIHR1cCk7CisJbG9ja21vZGUg PSBIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21vZGUocmVsYXRpb24sIG1vZGlmaWVkX2lkeF9h dHRycyk7CisJaG90X2FsbG93ZWQgPSBIZWFwVXBkYXRlSG90QWxsb3dhYmxlKHJlbGF0aW9u LCBtb2RpZmllZF9pZHhfYXR0cnMsICZzdW1tYXJpemVkX29ubHkpOworCisJcmVzdWx0ID0g aGVhcF91cGRhdGUocmVsYXRpb24sIG90aWQsIHR1cCwgR2V0Q3VycmVudENvbW1hbmRJZCh0 cnVlKSwgMCwKKwkJCQkJCSBJbnZhbGlkU25hcHNob3QsIHRydWUgLyogd2FpdCBmb3IgY29t bWl0ICovICwKKwkJCQkJCSAmdG1mZCwgbG9ja21vZGUsIG1vZGlmaWVkX2lkeF9hdHRycywg aG90X2FsbG93ZWQpOworCisJaWYgKHNob3VsZEZyZWUpCisJCWhlYXBfZnJlZXR1cGxlKG9s ZHR1cCk7CisKKwlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOworCWJtc19m cmVlKGlkeF9hdHRycyk7CisKKwkvKgorCSAqIERlY2lkZSB3aGV0aGVyIG5ldyBpbmRleCBl bnRyaWVzIGFyZSBuZWVkZWQgZm9yIHRoZSB0dXBsZQorCSAqCisJICogSWYgdGhlIHVwZGF0 ZSBpcyBub3QgSE9ULCB3ZSBtdXN0IHVwZGF0ZSBhbGwgaW5kZXhlcy4gSWYgdGhlIHVwZGF0 ZSBpcworCSAqIEhPVCwgaXQgY291bGQgYmUgdGhhdCB3ZSB1cGRhdGVkIHN1bW1hcml6ZWQg Y29sdW1ucywgc28gd2UgZWl0aGVyCisJICogdXBkYXRlIG9ubHkgc3VtbWFyaXplZCBpbmRl eGVzLCBvciBub25lIGF0IGFsbC4KKwkgKi8KKwkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25l OwogCXN3aXRjaCAocmVzdWx0KQogCXsKIAkJY2FzZSBUTV9TZWxmTW9kaWZpZWQ6CkBAIC00 NDY4LDYgKzQ2MTksMTAgQEAgc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9u LCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0dXAKIAogCQljYXNl IFRNX09rOgogCQkJLyogZG9uZSBzdWNjZXNzZnVsbHkgKi8KKwkJCWlmICghSGVhcFR1cGxl SXNIZWFwT25seSh0dXApKQorCQkJCSp1cGRhdGVfaW5kZXhlcyA9IFRVX0FsbDsKKwkJCWVs c2UgaWYgKHN1bW1hcml6ZWRfb25seSkKKwkJCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9TdW1t YXJpemluZzsKIAkJCWJyZWFrOwogCiAJCWNhc2UgVE1fVXBkYXRlZDoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IDIyNjhjYzI3N2JjLi5lNmNi ODE5N2RlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hh bmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5j CkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiYWNjZXNzL3N5bmNzY2FuLmgiCiAjaW5j bHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvdHNtYXBpLmgiCi0j aW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXAuaCIKICNpbmNsdWRlICJhY2Nlc3MveGFj dC5oIgogI2luY2x1ZGUgImNhdGFsb2cvY2F0YWxvZy5oIgogI2luY2x1ZGUgImNhdGFsb2cv aW5kZXguaCIKQEAgLTIyNCwyMCArMjIzLDI2IEBAIHN0YXRpYyBUTV9SZXN1bHQKIGhlYXBh bV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIG90aWQsIFR1 cGxlVGFibGVTbG90ICpzbG90LAogCQkJCQlDb21tYW5kSWQgY2lkLCB1aW50MzIgb3B0aW9u cywKIAkJCQkJU25hcHNob3Qgc25hcHNob3QsIFNuYXBzaG90IGNyb3NzY2hlY2ssCi0JCQkJ CWJvb2wgd2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQsCi0JCQkJCUxvY2tUdXBsZU1vZGUg KmxvY2ttb2RlLCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKKwkJCQkJYm9v bCB3YWl0LCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUs CisJCQkJCWNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLCBUVV9VcGRhdGVJ bmRleGVzICp1cGRhdGVfaW5kZXhlcykKIHsKIAlib29sCQlzaG91bGRGcmVlID0gdHJ1ZTsK IAlIZWFwVHVwbGUJdHVwbGUgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlKHNsb3QsIHRydWUs ICZzaG91bGRGcmVlKTsKKwlib29sCQlob3RfYWxsb3dlZDsKKwlib29sCQlzdW1tYXJpemVk X29ubHk7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAorCUFzc2VydChJdGVtUG9pbnRlcklzVmFs aWQob3RpZCkpOworCisJaG90X2FsbG93ZWQgPSBIZWFwVXBkYXRlSG90QWxsb3dhYmxlKHJl bGF0aW9uLCBtb2RpZmllZF9pZHhfYXR0cnMsICZzdW1tYXJpemVkX29ubHkpOworCSpsb2Nr bW9kZSA9IEhlYXBVcGRhdGVEZXRlcm1pbmVMb2NrbW9kZShyZWxhdGlvbiwgbW9kaWZpZWRf aWR4X2F0dHJzKTsKKwogCS8qIFVwZGF0ZSB0aGUgdHVwbGUgd2l0aCB0YWJsZSBvaWQgKi8K IAlzbG90LT50dHNfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKIAl0 dXBsZS0+dF90YWJsZU9pZCA9IHNsb3QtPnR0c190YWJsZU9pZDsKIAotCXJlc3VsdCA9IGhl YXBfdXBkYXRlKHJlbGF0aW9uLCBvdGlkLCB0dXBsZSwgY2lkLCBvcHRpb25zLAotCQkJCQkJ IGNyb3NzY2hlY2ssIHdhaXQsCi0JCQkJCQkgdG1mZCwgbG9ja21vZGUsIHVwZGF0ZV9pbmRl eGVzKTsKKwlyZXN1bHQgPSBoZWFwX3VwZGF0ZShyZWxhdGlvbiwgb3RpZCwgdHVwbGUsIGNp ZCwgb3B0aW9ucywgY3Jvc3NjaGVjaywgd2FpdCwKKwkJCQkJCSB0bWZkLCAqbG9ja21vZGUs IG1vZGlmaWVkX2lkeF9hdHRycywgaG90X2FsbG93ZWQpOwogCUl0ZW1Qb2ludGVyQ29weSgm dHVwbGUtPnRfc2VsZiwgJnNsb3QtPnR0c190aWQpOwogCiAJLyoKQEAgLTI1MCwxNiArMjU1 LDE3IEBAIGhlYXBhbV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2lu dGVyIG90aWQsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCSAqIEhPVCwgaXQgY291bGQgYmUg dGhhdCB3ZSB1cGRhdGVkIHN1bW1hcml6ZWQgY29sdW1ucywgc28gd2UgZWl0aGVyCiAJICog dXBkYXRlIG9ubHkgc3VtbWFyaXplZCBpbmRleGVzLCBvciBub25lIGF0IGFsbC4KIAkgKi8K LQlpZiAocmVzdWx0ICE9IFRNX09rKQorCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7CisJ aWYgKHJlc3VsdCA9PSBUTV9PaykKIAl7Ci0JCUFzc2VydCgqdXBkYXRlX2luZGV4ZXMgPT0g VFVfTm9uZSk7Ci0JCSp1cGRhdGVfaW5kZXhlcyA9IFRVX05vbmU7CisJCWlmIChIZWFwVHVw bGVJc0hlYXBPbmx5KHR1cGxlKSkKKwkJeworCQkJaWYgKHN1bW1hcml6ZWRfb25seSkKKwkJ CQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9TdW1tYXJpemluZzsKKwkJfQorCQllbHNlCisJCQkq dXBkYXRlX2luZGV4ZXMgPSBUVV9BbGw7CiAJfQotCWVsc2UgaWYgKCFIZWFwVHVwbGVJc0hl YXBPbmx5KHR1cGxlKSkKLQkJQXNzZXJ0KCp1cGRhdGVfaW5kZXhlcyA9PSBUVV9BbGwpOwot CWVsc2UKLQkJQXNzZXJ0KCgqdXBkYXRlX2luZGV4ZXMgPT0gVFVfU3VtbWFyaXppbmcpIHx8 Ci0JCQkgICAoKnVwZGF0ZV9pbmRleGVzID09IFRVX05vbmUpKTsKIAogCWlmIChzaG91bGRG cmVlKQogCQlwZnJlZSh0dXBsZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dGFibGUvdGFibGVhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwpp bmRleCA2OGZmMDk2NmYxYy4uMTJjMjY3NGNiZDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxl L3RhYmxlYW0uYwpAQCAtMzYxLDYgKzM2MSw3IEBAIHZvaWQKIHNpbXBsZV90YWJsZV90dXBs ZV91cGRhdGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRlciBvdGlkLAogCQkJCQkJICBUdXBs ZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsCisJCQkJCQkg IGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLAogCQkJCQkJICBUVV9VcGRh dGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKIHsKIAlUTV9SZXN1bHQJcmVzdWx0OwpAQCAt MzcxLDcgKzM3Miw5IEBAIHNpbXBsZV90YWJsZV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVs LCBJdGVtUG9pbnRlciBvdGlkLAogCQkJCQkJCQlHZXRDdXJyZW50Q29tbWFuZElkKHRydWUp LAogCQkJCQkJCQkwLCBzbmFwc2hvdCwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQl0cnVl IC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAsCi0JCQkJCQkJCSZ0bWZkLCAmbG9ja21vZGUsIHVw ZGF0ZV9pbmRleGVzKTsKKwkJCQkJCQkJJnRtZmQsICZsb2NrbW9kZSwKKwkJCQkJCQkJbW9k aWZpZWRfaWR4X2F0dHJzLAorCQkJCQkJCQl1cGRhdGVfaW5kZXhlcyk7CiAKIAlzd2l0Y2gg KHJlc3VsdCkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2su YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jCmluZGV4IDRkMTc3Yzg2OGJiLi5i ZjQ1YzVjZjgyNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMKQEAgLTI2NzksOCArMjY3OSwx OCBAQCBhcHBseV9jb25jdXJyZW50X3VwZGF0ZShSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVT bG90ICpzcGlsbGVkX3R1cGxlLAogCUxvY2tUdXBsZU1vZGUgbG9ja21vZGU7CiAJVE1fRmFp bHVyZURhdGEgdG1mZDsKIAlUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZV9pbmRleGVzOworCUJp dG1hcHNldCAgKm1vZGlmaWVkX2lkeF9hdHRyczsKIAlUTV9SZXN1bHQJcmVzOwogCisJLyoK KwkgKiBDb21wdXRlIHRoZSBzZXQgb2YgbW9kaWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGVzIGJ5 IGNvbXBhcmluZyB0aGUgb2xkCisJICogKG9uZGlzaykgYW5kIG5ldyAoc3BpbGxlZCkgdHVw bGVzOyBoZWFwX3VwZGF0ZSBuZWVkcyBpdCBmb3IgYSBjb3JyZWN0CisJICogSE9UIGRlY2lz aW9uIChhIE5VTEwgc2V0IHdvdWxkIGxvb2sgbGlrZSAibm8gaW5kZXhlZCBjb2x1bW4gY2hh bmdlZCIpLgorCSAqLworCW1vZGlmaWVkX2lkeF9hdHRycyA9IEV4ZWNVcGRhdGVNb2RpZmll ZElkeEF0dHJzKGNoZ2N4dC0+Y2NfcnJpLAorCQkJCQkJCQkJCQkJCW9uZGlza190dXBsZSwK KwkJCQkJCQkJCQkJCQlzcGlsbGVkX3R1cGxlKTsKKwogCS8qCiAJICogQ2Fycnkgb3V0IHRo ZSB1cGRhdGUsIHNraXBwaW5nIGxvZ2ljYWwgZGVjb2RpbmcgZm9yIGl0LgogCSAqLwpAQCAt MjY5MCw3ICsyNzAwLDcgQEAgYXBwbHlfY29uY3VycmVudF91cGRhdGUoUmVsYXRpb24gcmVs LCBUdXBsZVRhYmxlU2xvdCAqc3BpbGxlZF90dXBsZSwKIAkJCQkJCQkgSW52YWxpZFNuYXBz aG90LAogCQkJCQkJCSBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJIGZhbHNlLAotCQkJCQkJ CSAmdG1mZCwgJmxvY2ttb2RlLCAmdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCSAmdG1mZCwg JmxvY2ttb2RlLCBtb2RpZmllZF9pZHhfYXR0cnMsICZ1cGRhdGVfaW5kZXhlcyk7CiAJaWYg KHJlcyAhPSBUTV9PaykKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQllcnJjb2RlKEVSUkNPREVf VF9SX1NFUklBTElaQVRJT05fRkFJTFVSRSksCkBAIC0yNzExLDYgKzI3MjEsOCBAQCBhcHBs eV9jb25jdXJyZW50X3VwZGF0ZShSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICpzcGls bGVkX3R1cGxlLAogCX0KIAogCXBnc3RhdF9wcm9ncmVzc19pbmNyX3BhcmFtKFBST0dSRVNT X1JFUEFDS19IRUFQX1RVUExFU19VUERBVEVELCAxKTsKKworCWJtc19mcmVlKG1vZGlmaWVk X2lkeF9hdHRycyk7CiB9CiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNSZXBsaWNhdGlvbi5jCmluZGV4IGIyY2E1Y2JmMTE3Li42MjYyZjcxYmQ5MyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKQEAgLTMzLDYgKzMzLDcgQEAK ICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNo ZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgorI2luY2x1ZGUgInV0aWxzL3JlbGNhY2hl LmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2Nh Y2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKQEAgLTkxMCw2ICs5MTEsNyBA QCBFeGVjU2ltcGxlUmVsYXRpb25VcGRhdGUoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5m bywKIAlib29sCQlza2lwX3R1cGxlID0gZmFsc2U7CiAJUmVsYXRpb24JcmVsID0gcmVzdWx0 UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjOwogCUl0ZW1Qb2ludGVyIHRpZCA9ICYoc2VhcmNo c2xvdC0+dHRzX3RpZCk7CisJQml0bWFwc2V0ICAqbW9kaWZpZWRfaWR4X2F0dHJzOwogCiAJ LyoKIAkgKiBXZSBzdXBwb3J0IG9ubHkgbm9uLXN5c3RlbSB0YWJsZXMsIHdpdGgKQEAgLTk0 OCw4ICs5NTAsMTMgQEAgRXhlY1NpbXBsZVJlbGF0aW9uVXBkYXRlKFJlc3VsdFJlbEluZm8g KnJlc3VsdFJlbEluZm8sCiAJCWlmIChyZWwtPnJkX3JlbC0+cmVsaXNwYXJ0aXRpb24pCiAJ CQlFeGVjUGFydGl0aW9uQ2hlY2socmVzdWx0UmVsSW5mbywgc2xvdCwgZXN0YXRlLCB0cnVl KTsKIAorCQltb2RpZmllZF9pZHhfYXR0cnMgPSBFeGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRy cyhyZXN1bHRSZWxJbmZvLAorCQkJCQkJCQkJCQkJCQlzZWFyY2hzbG90LCBzbG90KTsKKwog CQlzaW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlKHJlbCwgdGlkLCBzbG90LCBlc3RhdGUtPmVz X3NuYXBzaG90LAotCQkJCQkJCQkgICZ1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCSAgbW9k aWZpZWRfaWR4X2F0dHJzLCAmdXBkYXRlX2luZGV4ZXMpOworCQlibXNfZnJlZShtb2RpZmll ZF9pZHhfYXR0cnMpOworCiAKIAkJY29uZmxpY3RpbmRleGVzID0gcmVzdWx0UmVsSW5mby0+ cmlfb25Db25mbGljdEFyYml0ZXJJbmRleGVzOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjVHVwbGVzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVHVw bGVzLmMKaW5kZXggN2Y0ZWJmOTU0MzIuLmJkYjliMTQ2ZGU3IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjVHVwbGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1R1cGxlcy5jCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAibm9kZXMvbm9k ZUZ1bmNzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJ1dGls cy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAidXRp bHMvZXhwYW5kZWRkYXR1bS5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2lu Y2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCkBAIC0yMDEyLDYgKzIwMTMsNzUgQEAgRXhlY0Zl dGNoU2xvdEhlYXBUdXBsZURhdHVtKFR1cGxlVGFibGVTbG90ICpzbG90KQogCXJldHVybiBy ZXQ7CiB9CiAKKy8qCisgKiBFeGVjQ29tcGFyZVNsb3RBdHRycworICoKKyAqIENvbXBhcmUg dGhlIHN1YnNldCBvZiBhdHRyaWJ1dGVzIGluIGF0dHJzIGJld3R3ZWVuIFR1cGxlVGFibGVT bG90cyB0byBkZXRlY3QKKyAqIHdoaWNoIGF0dHJpYnV0ZXMgaGF2ZSBjaGFuZ2VkLgorICoK KyAqIFJldHVybnMgYSByZXVzZWQgd2hlbiBwb3NzaWJsZSBCaXRtYXBzZXQgb2YgYXR0cmli dXRlIGluZGljZXMgKHVzaW5nCisgKiBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVt YmVyIGNvbnZlbnRpb24pIHRoYXQgZGlmZmVyIGJldHdlZW4gdGhlIHR3bworICogc2xvdHMu CisgKi8KK0JpdG1hcHNldCAqCitFeGVjQ29tcGFyZVNsb3RBdHRycyhCaXRtYXBzZXQgKmF0 dHJzLCBUdXBsZURlc2MgdHVwZGVzYywKKwkJCQkJIFR1cGxlVGFibGVTbG90ICpzMSwgVHVw bGVUYWJsZVNsb3QgKnMyKQoreworCWludAkJCWF0dGlkeCA9IC0xOworCisJd2hpbGUgKChh dHRpZHggPSBibXNfbmV4dF9tZW1iZXIoYXR0cnMsIGF0dGlkeCkpID49IDApCisJeworCQkv KiBhdHRpZHggaXMgemVyby1iYXNlZCwgYXR0cm51bSBpcyB0aGUgbm9ybWFsIGF0dHJpYnV0 ZSBudW1iZXIgKi8KKwkJQXR0ck51bWJlcglhdHRybnVtID0gYXR0aWR4ICsgRmlyc3RMb3dJ bnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcjsKKwkJRGF0dW0JCXZhbHVlMSwKKwkJCQkJdmFs dWUyOworCQlib29sCQludWxsMSwKKwkJCQkJbnVsbDI7CisJCUNvbXBhY3RBdHRyaWJ1dGUg KmF0dDsKKworCQkvKgorCQkgKiBJZiBpdCdzIGEgd2hvbGUtdHVwbGUgcmVmZXJlbmNlLCBz YXkgIm5vdCBlcXVhbCIuICBJdCdzIG5vdCByZWFsbHkKKwkJICogd29ydGggc3VwcG9ydGlu ZyB0aGlzIGNhc2UsIHNpbmNlIGl0IGNvdWxkIG9ubHkgc3VjY2VlZCBhZnRlciBhCisJCSAq IG5vLW9wIHVwZGF0ZSwgd2hpY2ggaXMgaGFyZGx5IGEgY2FzZSB3b3J0aCBvcHRpbWl6aW5n IGZvci4KKwkJICovCisJCWlmIChhdHRybnVtID09IDApCisJCQljb250aW51ZTsKKworCQkv KgorCQkgKiBMaWtld2lzZSwgYXV0b21hdGljYWxseSBzYXkgIm5vdCBlcXVhbCIgZm9yIGFu eSBzeXN0ZW0gYXR0cmlidXRlCisJCSAqIG90aGVyIHRoYW4gdGFibGVPSUQ7IHdlIGNhbm5v dCBleHBlY3QgdGhlc2UgdG8gYmUgY29uc2lzdGVudCBpbiBhCisJCSAqIEhPVCBjaGFpbiwg b3IgZXZlbiB0byBiZSBzZXQgY29ycmVjdGx5IHlldCBpbiB0aGUgbmV3IHR1cGxlLgorCQkg Ki8KKwkJaWYgKGF0dHJudW0gPCAwKQorCQl7CisJCQlpZiAoYXR0cm51bSA9PSBUYWJsZU9p ZEF0dHJpYnV0ZU51bWJlcikKKwkJCQlhdHRycyA9IGJtc19kZWxfbWVtYmVyKGF0dHJzLCBh dHRpZHgpOworCQkJZWxzZQorCQkJCWNvbnRpbnVlOworCQl9CisKKwkJYXR0ID0gVHVwbGVE ZXNjQ29tcGFjdEF0dHIodHVwZGVzYywgYXR0cm51bSAtIDEpOworCQl2YWx1ZTEgPSBzbG90 X2dldGF0dHIoczEsIGF0dHJudW0sICZudWxsMSk7CisJCXZhbHVlMiA9IHNsb3RfZ2V0YXR0 cihzMiwgYXR0cm51bSwgJm51bGwyKTsKKworCQkvKiBBIGNoYW5nZSB0by9mcm9tIE5VTEws IHNvIG5vdCBlcXVhbCAqLworCQlpZiAobnVsbDEgIT0gbnVsbDIpCisJCQljb250aW51ZTsK KworCQkvKiBCb3RoIE5VTEwsIG5vIGNoYW5nZS91bm1vZGlmaWVkICovCisJCWlmIChudWxs MikKKwkJeworCQkJYXR0cnMgPSBibXNfZGVsX21lbWJlcihhdHRycywgYXR0aWR4KTsKKwkJ CWNvbnRpbnVlOworCQl9CisKKwkJaWYgKGRhdHVtX2ltYWdlX2VxKHZhbHVlMSwgdmFsdWUy LCBhdHQtPmF0dGJ5dmFsLCBhdHQtPmF0dGxlbikpCisJCQlhdHRycyA9IGJtc19kZWxfbWVt YmVyKGF0dHJzLCBhdHRpZHgpOworCX0KKworCXJldHVybiBhdHRyczsKK30KKwogLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogICoJCQkJY29udmVuaWVuY2UgaW5pdGlhbGl6YXRpb24gcm91dGluZXMKICAq IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2Rp ZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5k ZXggYzMzM2Q3MTM5ZmEuLjFlNzkzMDdkMzNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTW9kaWZ5VGFibGUuYwpAQCAtMTgsNiArMTgsNyBAQAogICoJCUV4ZWNNb2RpZnlUYWJs ZQkJLSByZXRyaWV2ZSB0aGUgbmV4dCB0dXBsZSBmcm9tIHRoZSBub2RlCiAgKgkJRXhlY0Vu ZE1vZGlmeVRhYmxlCS0gc2h1dCBkb3duIHRoZSBNb2RpZnlUYWJsZSBub2RlCiAgKgkJRXhl Y1JlU2Nhbk1vZGlmeVRhYmxlIC0gcmVzY2FuIHRoZSBNb2RpZnlUYWJsZSBub2RlCisgKgkJ RXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMgLSBmaW5kIHNldCBvZiB1cGRhdGVkIGluZGV4 ZWQgY29sdW1ucwogICoKICAqCSBOT1RFUwogICoJCVRoZSBNb2RpZnlUYWJsZSBub2RlIHJl Y2VpdmVzIGlucHV0IGZyb20gaXRzIG91dGVyUGxhbiwgd2hpY2ggaXMKQEAgLTU2LDYgKzU3 LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiYWNj ZXNzL3RhYmxlYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvdHVwY29udmVydC5oIgorI2luY2x1 ZGUgImFjY2Vzcy90dXBkZXNjLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNs dWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY1BhcnRp dGlvbi5oIgpAQCAtMjAyLDYgKzIwNCw2MyBAQCBzdGF0aWMgdm9pZCBmaXJlQVNUcmlnZ2Vy cyhNb2RpZnlUYWJsZVN0YXRlICpub2RlKTsKIHN0YXRpYyB2b2lkIEV4ZWNJbml0Rm9yUG9y dGlvbk9mKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsIEVTdGF0ZSAqZXN0YXRlLAogCQkJ CQkJCQkgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbyk7CiAKKy8qCisgKiBFeGVjVXBk YXRlTW9kaWZpZWRJZHhBdHRycworICoKKyAqIEZpbmQgdGhlIHNldCBvZiBhdHRyaWJ1dGVz IHJlZmVyZW5jZWQgYnkgdGhpcyByZWxhdGlvbiBhbmQgdXNlZCBpbiB0aGlzCisgKiBVUERB VEUgdGhhdCBub3cgZGlmZmVyIGluIHZhbHVlLiAgVGhpcyBpcyBkb25lIGJ5IHJldmlld2lu ZyBzbG90IGRhdHVtIHRoYXQKKyAqIGFyZSBpbiB0aGUgVVBEQVRFIHN0YXRtZW50IGFuZCBh cmUga25vd24gdG8gYmUgcmVmZXJlbmNlZCBieSBhdCBsZWFzdCBvbmUKKyAqIGluZGV4IGlu IHNvbWUgd2F5LiAgVGhpcyBzZXQgaXMgY2FsbGVkIHRoZSAibW9kaWZpZWQgaW5kZXhlZCBh dHRyaWJ1dGVzIiBvcgorICogIm1vZGlmaWVkX2lkeF9hdHRycyIuICBBbiBvdmVybGFwIG9m IGEgc2luZ2xlIGluZGV4J3MgYXR0cmlidXRlcyBhbmQgdGhpcworICogbW9kaWZpZWRfaWR4 X2F0dHJzIHNldCBzaWduYWxzIHRoYXQgdGhlIGF0dHJpYnV0ZXMgaW4gdGhlIG5ld190dHMg dXNlZCB0bworICogZm9ybSB0aGUgaW5kZXggZGF0dW0gaGF2ZSBjaGFuZ2VkLgorICoKKyAq IFJldHVybiBhIEJpdG1hcHNldCB0aGF0IGNvbnRhaW5zIHRoZSBzZXQgb2YgbW9kaWZpZWQg KGNoYW5nZWQpIGluZGV4ZWQKKyAqIGF0dHJpYnV0ZXMgYmV0d2VlbiBvbGR0dXAgYW5kIG5l d3R1cC4KKyAqCisgKiBOb3RlOiBUaGVyZSBpcyBhIHNpbWlsYXIgZnVuY3Rpb24gY2FsbGVk IEhlYXBVcGRhdGVNb2RpZmllZElkeEF0dHJzKCkgdGhhdCBvcGVyYXRlcworICogb24gdGhl IG9sZCBUSUQgYW5kIG5ldyBIZWFwVHVwbGUgcmF0aGVyIHRoYW4gdGhlIG9sZC9uZXcgVHVw bGVUYWJsZVNsb3RzIGFzCisgKiB0aGlzIGZ1bmN0aW9uIGRvZXMuICBUaGVzZSB0d28gZnVu Y3Rpb25zIHNob3VsZCBtaXJyb3Igb25lIGFub3RoZXIgdW50aWwKKyAqIHNvbWVkYXkgd2hl biBjYXRhbG9nIHR1cGxlIHVwZGF0ZXMgdHJhY2sgdGhlaXIgY2hhbmdlcyBhdm9pZGluZyB0 aGUgbmVlZCB0bworICogcmUtZGlzY292ZXIgdGhlbSBpbiBzaW1wbGVfaGVhcF91cGRhdGUo KS4KKyAqLworQml0bWFwc2V0ICoKK0V4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKFJlc3Vs dFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCisJCQkJCQkgICBUdXBsZVRhYmxlU2xvdCAqb2xk X3R0cywKKwkJCQkJCSAgIFR1cGxlVGFibGVTbG90ICpuZXdfdHRzKQoreworCVJlbGF0aW9u CXJlbGF0aW9uID0gcmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjOworCVR1cGxlRGVz Ywl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWxhdGlvbik7CisJQml0bWFwc2V0ICAq YXR0cnM7CisKKwkvKiBJZiBubyBpbmRleGVzLCB3ZSdyZSBkb25lICovCisJaWYgKHJlc3Vs dFJlbEluZm8tPnJpX051bUluZGljZXMgPT0gMCkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKgor CSAqIEdldCB0aGUgc2V0IG9mIGFsbCBhdHRyaWJ1dGVzIGFjcm9zcyBhbGwgaW5kZXhlcyBm b3IgdGhpcyByZWxhdGlvbiBmcm9tCisJICogdGhlIHJlbGNhY2hlLCBpdCByZXR1cm5zIHVz IGEgY29weSBvZiB0aGUgYml0bWFwIHNvIHdlIGNhbiBtb2RpZnkgaXQuCisJICoKKwkgKiBO b3RlOiBXZSBpbnRlbnRpb25hbGx5IHNjYW4gYWxsIGluZGV4ZWQgY29sdW1ucyB3aGVuIGxv b2tpbmcgZm9yCisJICogY2hhbmdlcyByYXRoZXIgdGhhbiByZWR1Y2UgdGhhdCBzZXQgYnkg aW50ZXJzZWN0aW5nIGl0IHdpdGgKKwkgKiBFeGVjR2V0QWxsVXBkYXRlZENvbHMoKS4gIERl c2lwdGUgdGhlIG5hbWUgaXQgcHJvdmlkZXMgdGhlIHNldCBvZgorCSAqIHRhcmdldGVkIGF0 dHJpYnV0ZXMgaW4gdGhlIFNRTCB1c2VkIGZvciB0aGUgVVBEQVRFIGFuZCBhbnkgdHJpZ2dl cnMsCisJICogYnV0IHRoYXQgZG9lc24ndCBpbmNsdWRlIGFueSBhdHRyaWJ1dGVzIHVwZGF0 ZWQgdXNpbmcKKwkgKiBoZWFwX21vZGlmaXlfdHVwbGUoKS4gVGhlcmUgaXMgb25lIHRlc3Qg aW4gdHNlYXJjaC5zcWwgdGhhdCBkb2VzIGp1c3QKKwkgKiB0aGF0LCBtb2RpZmllcyBhbiBp bmRleGVkIGF0dHJpYnV0ZSB0aGF0IGlzbid0IHNwZWNpZmllZCBpbiB0aGUgU1FMIGFuZAor CSAqIHNvIGlzbid0IHByZXNlbnQgaW4gdGhhdCBiaXRtYXBzZXQuCisJICovCisJYXR0cnMg PSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwgSU5ERVhfQVRUUl9CSVRN QVBfSU5ERVhFRCk7CisKKwkvKgorCSAqIFdoZW4gdGhlcmUgYXJlIGluZGV4ZWQgYXR0cmli dXRlcyBtZW50aW9uZWQgaW4gdGhlIFVQREFURSB0aGVuIHdlIG5lZWQKKwkgKiB0byBmaW5k IHRoZSBzdWJzZXQgdGhhdCBjaGFuZ2VkIHZhbHVlLiAgVGhhdCdzIHRoZQorCSAqICJtb2Rp ZmllZF9pZHhfYXR0cnMiLgorCSAqLworCWF0dHJzID0gRXhlY0NvbXBhcmVTbG90QXR0cnMo YXR0cnMsIHR1cGRlc2MsIG9sZF90dHMsIG5ld190dHMpOworCisJcmV0dXJuIGF0dHJzOwor fQogCiAvKgogICogVmVyaWZ5IHRoYXQgdGhlIHR1cGxlcyB0byBiZSBwcm9kdWNlZCBieSBJ TlNFUlQgbWF0Y2ggdGhlCkBAIC0yNDQ2LDE0ICsyNTA1LDE3IEBAIEV4ZWNVcGRhdGVQcmVw YXJlU2xvdChSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogICovCiBzdGF0aWMgVE1f UmVzdWx0CiBFeGVjVXBkYXRlQWN0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVz dWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKLQkJCSAgSXRlbVBvaW50ZXIgdHVwbGVpZCwg SGVhcFR1cGxlIG9sZHR1cGxlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKLQkJCSAgYm9vbCBj YW5TZXRUYWcsIFVwZGF0ZUNvbnRleHQgKnVwZGF0ZUN4dCkKKwkJCSAgSXRlbVBvaW50ZXIg dHVwbGVpZCwgSGVhcFR1cGxlIG9sZHR1cGxlLCBUdXBsZVRhYmxlU2xvdCAqb2xkU2xvdCwK KwkJCSAgVHVwbGVUYWJsZVNsb3QgKnNsb3QsIGJvb2wgY2FuU2V0VGFnLCBVcGRhdGVDb250 ZXh0ICp1cGRhdGVDeHQpCiB7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBjb250ZXh0LT5lc3Rh dGU7CiAJUmVsYXRpb24JcmVzdWx0UmVsYXRpb25EZXNjID0gcmVzdWx0UmVsSW5mby0+cmlf UmVsYXRpb25EZXNjOwogCWJvb2wJCXBhcnRpdGlvbl9jb25zdHJhaW50X2ZhaWxlZDsKIAlU TV9SZXN1bHQJcmVzdWx0OwogCisJLyogVGhlIHNldCBvZiBtb2RpZmllZCBpbmRleGVkIGF0 dHJpYnV0ZXMgdGhhdCB0cmlnZ2VyIG5ldyBpbmRleCBlbnRyaWVzICovCisJQml0bWFwc2V0 ICAqbW9kaWZpZWRfaWR4X2F0dHJzID0gTlVMTDsKKwogCXVwZGF0ZUN4dC0+Y3Jvc3NQYXJ0 VXBkYXRlID0gZmFsc2U7CiAKIAkvKgpAQCAtMjU3MCw3ICsyNjMyLDE2IEBAIGxyZXBsYWNl OgogCQlFeGVjQ29uc3RyYWludHMocmVzdWx0UmVsSW5mbywgc2xvdCwgZXN0YXRlKTsKIAog CS8qCi0JICogcmVwbGFjZSB0aGUgaGVhcCB0dXBsZQorCSAqIE5leHQgdXAgd2UgbmVlZCB0 byBmaW5kIG91dCB0aGUgc2V0IG9mIGluZGV4ZWQgYXR0cmlidXRlcyB0aGF0IGhhdmUKKwkg KiBjaGFuZ2VkIGluIHZhbHVlIGFuZCBzaG91bGQgdHJpZ2dlciBhIG5ldyBpbmRleCB0dXBs ZS4gIFdlIGNvdWxkIHN0YXJ0CisJICogd2l0aCB0aGUgc2V0IG9mIHVwZGF0ZWQgY29sdW1u cyB2aWEgRXhlY0dldFVwZGF0ZWRDb2xzKCksIGJ1dCBpZiB3ZSBkbworCSAqIHdlIHdpbGwg b3Zlcmxvb2sgYXR0cmlidXRlcyBkaXJlY3RseSBtb2RpZmllZCBieSBoZWFwX21vZGlmeV90 dXBsZSgpCisJICogd2hpY2ggYXJlIG5vdCBrbm93biB0byBFeGVjR2V0VXBkYXRlZENvbHMo KS4KKwkgKi8KKwltb2RpZmllZF9pZHhfYXR0cnMgPSBFeGVjVXBkYXRlTW9kaWZpZWRJZHhB dHRycyhyZXN1bHRSZWxJbmZvLCBvbGRTbG90LCBzbG90KTsKKworCS8qCisJICogQ2FsbCBp bnRvIHRoZSB0YWJsZSBBTSB0byB1cGRhdGUgdGhlIGhlYXAgdHVwbGUuCiAJICoKIAkgKiBO b3RlOiBpZiBlc19jcm9zc2NoZWNrX3NuYXBzaG90IGlzbid0IEludmFsaWRTbmFwc2hvdCwg d2UgY2hlY2sgdGhhdAogCSAqIHRoZSByb3cgdG8gYmUgdXBkYXRlZCBpcyB2aXNpYmxlIHRv IHRoYXQgc25hcHNob3QsIGFuZCB0aHJvdyBhCkBAIC0yNTg1LDYgKzI2NTYsNyBAQCBscmVw bGFjZToKIAkJCQkJCQkJZXN0YXRlLT5lc19jcm9zc2NoZWNrX3NuYXBzaG90LAogCQkJCQkJ CQl0cnVlIC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAsCiAJCQkJCQkJCSZjb250ZXh0LT50bWZk LCAmdXBkYXRlQ3h0LT5sb2NrbW9kZSwKKwkJCQkJCQkJbW9kaWZpZWRfaWR4X2F0dHJzLAog CQkJCQkJCQkmdXBkYXRlQ3h0LT51cGRhdGVJbmRleGVzKTsKIAogCXJldHVybiByZXN1bHQ7 CkBAIC0yODEyLDggKzI4ODQsOCBAQCBFeGVjVXBkYXRlKE1vZGlmeVRhYmxlQ29udGV4dCAq Y29udGV4dCwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJICovCiByZWRvX2Fj dDoKIAkJbG9ja2VkdGlkID0gKnR1cGxlaWQ7Ci0JCXJlc3VsdCA9IEV4ZWNVcGRhdGVBY3Qo Y29udGV4dCwgcmVzdWx0UmVsSW5mbywgdHVwbGVpZCwgb2xkdHVwbGUsIHNsb3QsCi0JCQkJ CQkJICAgY2FuU2V0VGFnLCAmdXBkYXRlQ3h0KTsKKwkJcmVzdWx0ID0gRXhlY1VwZGF0ZUFj dChjb250ZXh0LCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLCBvbGR0dXBsZSwgb2xkU2xvdCwK KwkJCQkJCQkgICBzbG90LCBjYW5TZXRUYWcsICZ1cGRhdGVDeHQpOwogCiAJCS8qCiAJCSAq IElmIEV4ZWNVcGRhdGVBY3QgcmVwb3J0cyB0aGF0IGEgY3Jvc3MtcGFydGl0aW9uIHVwZGF0 ZSB3YXMgZG9uZSwKQEAgLTM2NjMsOCArMzczNSw4IEBAIGxtZXJnZV9tYXRjaGVkOgogCQkJ CQlBc3NlcnQob2xkdHVwbGUgPT0gTlVMTCk7CiAKIAkJCQkJcmVzdWx0ID0gRXhlY1VwZGF0 ZUFjdChjb250ZXh0LCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLAotCQkJCQkJCQkJCSAgIE5V TEwsIG5ld3Nsb3QsIGNhblNldFRhZywKLQkJCQkJCQkJCQkgICAmdXBkYXRlQ3h0KTsKKwkJ CQkJCQkJCQkgICBOVUxMLCByZXN1bHRSZWxJbmZvLT5yaV9vbGRUdXBsZVNsb3QsCisJCQkJ CQkJCQkJICAgbmV3c2xvdCwgY2FuU2V0VGFnLCAmdXBkYXRlQ3h0KTsKIAogCQkJCQkvKgog CQkJCQkgKiBBcyBpbiBFeGVjVXBkYXRlKCksIGlmIEV4ZWNVcGRhdGVBY3QoKSByZXBvcnRz IHRoYXQgYQpAQCAtNDgxMSw3ICs0ODgzLDcgQEAgRXhlY01vZGlmeVRhYmxlKFBsYW5TdGF0 ZSAqcHN0YXRlKQogCQkgKiBGb3IgVVBEQVRFL0RFTEVURS9NRVJHRSwgZmV0Y2ggdGhlIHJv dyBpZGVudGl0eSBpbmZvIGZvciB0aGUgdHVwbGUKIAkJICogdG8gYmUgdXBkYXRlZC9kZWxl dGVkL21lcmdlZC4gIEZvciBhIGhlYXAgcmVsYXRpb24sIHRoYXQncyBhIFRJRDsKIAkJICog b3RoZXJ3aXNlIHdlIG1heSBoYXZlIGEgd2hvbGVyb3cganVuayBhdHRyIHRoYXQgY2Fycmll cyB0aGUgb2xkCi0JCSAqIHR1cGxlIGluIHRvdG8uICBLZWVwIHRoaXMgaW4gc3RlcCB3aXRo IHRoZSBwYXJ0IG9mCisJCSAqIHR1cGxlIGluIHRvdGFsLiAgS2VlcCB0aGlzIGluIHN0ZXAg d2l0aCB0aGUgcGFydCBvZgogCQkgKiBFeGVjSW5pdE1vZGlmeVRhYmxlIHRoYXQgc2V0cyB1 cCByaV9Sb3dJZEF0dE5vLgogCQkgKi8KIAkJaWYgKG9wZXJhdGlvbiA9PSBDTURfVVBEQVRF IHx8IG9wZXJhdGlvbiA9PSBDTURfREVMRVRFIHx8CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVs Y2FjaGUuYwppbmRleCBmYjRlMDQyYmU4YS4uMDU1Zjc1NzEwN2YgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAtMjQ4Miw3ICsyNDgyLDcgQEAgUmVsYXRpb25EZXN0 cm95UmVsYXRpb24oUmVsYXRpb24gcmVsYXRpb24sIGJvb2wgcmVtZW1iZXJfdHVwZGVzYykK IAlibXNfZnJlZShyZWxhdGlvbi0+cmRfa2V5YXR0cik7CiAJYm1zX2ZyZWUocmVsYXRpb24t PnJkX3BrYXR0cik7CiAJYm1zX2ZyZWUocmVsYXRpb24tPnJkX2lkYXR0cik7Ci0JYm1zX2Zy ZWUocmVsYXRpb24tPnJkX2hvdGJsb2NraW5nYXR0cik7CisJYm1zX2ZyZWUocmVsYXRpb24t PnJkX2luZGV4ZWRhdHRyKTsKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0 dHIpOwogCWlmIChyZWxhdGlvbi0+cmRfcHViZGVzYykKIAkJcGZyZWUocmVsYXRpb24tPnJk X3B1YmRlc2MpOwpAQCAtNTI5MSw4ICs1MjkxLDggQEAgUmVsYXRpb25HZXRJbmRleFByZWRp Y2F0ZShSZWxhdGlvbiByZWxhdGlvbikKICAqCQkJCQkJCQkJKGJld2FyZTogZXZlbiBpZiBQ SyBpcyBkZWZlcnJhYmxlISkKICAqCUlOREVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWQlD b2x1bW5zIGluIHRoZSB0YWJsZSdzIHJlcGxpY2EgaWRlbnRpdHkKICAqCQkJCQkJCQkJaW5k ZXggKGVtcHR5IGlmIEZVTEwpCi0gKglJTkRFWF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkcJ Q29sdW1ucyB0aGF0IGJsb2NrIHVwZGF0ZXMgZnJvbSBiZWluZyBIT1QKLSAqCUlOREVYX0FU VFJfQklUTUFQX1NVTU1BUklaRUQJQ29sdW1ucyBpbmNsdWRlZCBpbiBzdW1tYXJpemluZyBp bmRleGVzCisgKglJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVECQlDb2x1bW5zIHJlZmVyZW5j ZWQgYnkgaW5kZXhlcworICoJSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRAlDb2x1bW5z IG9ubHkgaW5jbHVkZWQgaW4gc3VtbWFyaXppbmcgaW5kZXhlcwogICoKICAqIEF0dHJpYnV0 ZSBudW1iZXJzIGFyZSBvZmZzZXQgYnkgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51 bWJlciBzbyB0aGF0CiAgKiB3ZSBjYW4gaW5jbHVkZSBzeXN0ZW0gYXR0cmlidXRlcyAoZS5n LiwgT0lEKSBpbiB0aGUgYml0bWFwIHJlcHJlc2VudGF0aW9uLgpAQCAtNTMxNSw4ICs1MzE1 LDggQEAgUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAoUmVsYXRpb24gcmVsYXRpb24sIElu ZGV4QXR0ckJpdG1hcEtpbmQgYXR0cktpbmQpCiAJQml0bWFwc2V0ICAqdWluZGV4YXR0cnM7 CS8qIGNvbHVtbnMgaW4gdW5pcXVlIGluZGV4ZXMgKi8KIAlCaXRtYXBzZXQgICpwa2luZGV4 YXR0cnM7CS8qIGNvbHVtbnMgaW4gdGhlIHByaW1hcnkgaW5kZXggKi8KIAlCaXRtYXBzZXQg ICppZGluZGV4YXR0cnM7CS8qIGNvbHVtbnMgaW4gdGhlIHJlcGxpY2EgaWRlbnRpdHkgKi8K LQlCaXRtYXBzZXQgICpob3RibG9ja2luZ2F0dHJzOwkvKiBjb2x1bW5zIHdpdGggSE9UIGJs b2NraW5nIGluZGV4ZXMgKi8KLQlCaXRtYXBzZXQgICpzdW1tYXJpemVkYXR0cnM7CS8qIGNv bHVtbnMgd2l0aCBzdW1tYXJpemluZyBpbmRleGVzICovCisJQml0bWFwc2V0ICAqaW5kZXhl ZGF0dHJzOwkvKiBjb2x1bW5zIHJlZmVyZW5jZWQgYnkgaW5kZXhlcyAqLworCUJpdG1hcHNl dCAgKnN1bW1hcml6ZWRhdHRyczsJLyogY29sdW1ucyBvbmx5IGluIHN1bW1hcml6aW5nIGlu ZGV4ZXMgKi8KIAlMaXN0CSAgICppbmRleG9pZGxpc3Q7CiAJTGlzdAkgICAqbmV3aW5kZXhv aWRsaXN0OwogCU9pZAkJCXJlbHBraW5kZXg7CkBAIC01MzM1LDggKzUzMzUsOCBAQCBSZWxh dGlvbkdldEluZGV4QXR0ckJpdG1hcChSZWxhdGlvbiByZWxhdGlvbiwgSW5kZXhBdHRyQml0 bWFwS2luZCBhdHRyS2luZCkKIAkJCQlyZXR1cm4gYm1zX2NvcHkocmVsYXRpb24tPnJkX3Br YXR0cik7CiAJCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWToKIAkJCQly ZXR1cm4gYm1zX2NvcHkocmVsYXRpb24tPnJkX2lkYXR0cik7Ci0JCQljYXNlIElOREVYX0FU VFJfQklUTUFQX0hPVF9CTE9DS0lORzoKLQkJCQlyZXR1cm4gYm1zX2NvcHkocmVsYXRpb24t PnJkX2hvdGJsb2NraW5nYXR0cik7CisJCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0lOREVY RUQ6CisJCQkJcmV0dXJuIGJtc19jb3B5KHJlbGF0aW9uLT5yZF9pbmRleGVkYXR0cik7CiAJ CQljYXNlIElOREVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQ6CiAJCQkJcmV0dXJuIGJtc19j b3B5KHJlbGF0aW9uLT5yZF9zdW1tYXJpemVkYXR0cik7CiAJCQlkZWZhdWx0OgpAQCAtNTM4 MSw3ICs1MzgxLDcgQEAgcmVzdGFydDoKIAl1aW5kZXhhdHRycyA9IE5VTEw7CiAJcGtpbmRl eGF0dHJzID0gTlVMTDsKIAlpZGluZGV4YXR0cnMgPSBOVUxMOwotCWhvdGJsb2NraW5nYXR0 cnMgPSBOVUxMOworCWluZGV4ZWRhdHRycyA9IE5VTEw7CiAJc3VtbWFyaXplZGF0dHJzID0g TlVMTDsKIAlmb3JlYWNoKGwsIGluZGV4b2lkbGlzdCkKIAl7CkBAIC01NDQxLDcgKzU0NDEs NyBAQCByZXN0YXJ0OgogCQlpZiAoaW5kZXhEZXNjLT5yZF9pbmRhbS0+YW1zdW1tYXJpemlu ZykKIAkJCWF0dHJzID0gJnN1bW1hcml6ZWRhdHRyczsKIAkJZWxzZQotCQkJYXR0cnMgPSAm aG90YmxvY2tpbmdhdHRyczsKKwkJCWF0dHJzID0gJmluZGV4ZWRhdHRyczsKIAogCQkvKiBD b2xsZWN0IHNpbXBsZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcyAqLwogCQlmb3IgKGkgPSAwOyBp IDwgaW5kZXhEZXNjLT5yZF9pbmRleC0+aW5kbmF0dHM7IGkrKykKQEAgLTU0NTAsOSArNTQ1 MCw5IEBAIHJlc3RhcnQ6CiAKIAkJCS8qCiAJCQkgKiBTaW5jZSB3ZSBoYXZlIGNvdmVyaW5n IGluZGV4ZXMgd2l0aCBub24ta2V5IGNvbHVtbnMsIHdlIG11c3QKLQkJCSAqIGhhbmRsZSB0 aGVtIGFjY3VyYXRlbHkgaGVyZS4gbm9uLWtleSBjb2x1bW5zIG11c3QgYmUgYWRkZWQgaW50 bwotCQkJICogaG90YmxvY2tpbmdhdHRycyBvciBzdW1tYXJpemVkYXR0cnMsIHNpbmNlIHRo ZXkgYXJlIGluIGluZGV4LAotCQkJICogYW5kIHVwZGF0ZSBzaG91bGRuJ3QgbWlzcyB0aGVt LgorCQkJICogaGFuZGxlIHRoZW0gYWNjdXJhdGVseSBoZXJlLiBOb24ta2V5IGNvbHVtbnMg bXVzdCBiZSBhZGRlZCBpbnRvCisJCQkgKiBpbmRleGVkYXR0cnMgb3Igc3VtbWFyaXplZGF0 dHJzLCBzaW5jZSB0aGV5IGFyZSBpbiBpbmRleCwgYW5kCisJCQkgKiB1cGRhdGUgc2hvdWxk bid0IG1pc3MgdGhlbS4KIAkJCSAqCiAJCQkgKiBTdW1tYXJpemluZyBpbmRleGVzIGRvIG5v dCBibG9jayBIT1QsIGJ1dCBkbyBuZWVkIHRvIGJlIHVwZGF0ZWQKIAkJCSAqIHdoZW4gdGhl IGNvbHVtbiB2YWx1ZSBjaGFuZ2VzLCB0aHVzIHJlcXVpcmUgYSBzZXBhcmF0ZQpAQCAtNTUx MywxMiArNTUxMywyMCBAQCByZXN0YXJ0OgogCQlibXNfZnJlZSh1aW5kZXhhdHRycyk7CiAJ CWJtc19mcmVlKHBraW5kZXhhdHRycyk7CiAJCWJtc19mcmVlKGlkaW5kZXhhdHRycyk7Ci0J CWJtc19mcmVlKGhvdGJsb2NraW5nYXR0cnMpOworCQlibXNfZnJlZShpbmRleGVkYXR0cnMp OwogCQlibXNfZnJlZShzdW1tYXJpemVkYXR0cnMpOwogCiAJCWdvdG8gcmVzdGFydDsKIAl9 CiAKKwkvKgorCSAqIFJlY29yZCB3aGF0IGF0dHJpYnV0ZXMgYXJlIG9ubHkgcmVmZXJlbmNl ZCBieSBzdW1tYXJpemluZyBpbmRleGVzLiBUaGVuCisJICogYWRkIHRoYXQgaW50byB0aGUg b3RoZXIgaW5kZXhlZCBhdHRyaWJ1dGVzIHRvIHRyYWNrIGFsbCByZWZlcmVuY2VkCisJICog YXR0cmlidXRlcy4KKwkgKi8KKwlzdW1tYXJpemVkYXR0cnMgPSBibXNfZGVsX21lbWJlcnMo c3VtbWFyaXplZGF0dHJzLCBpbmRleGVkYXR0cnMpOworCWluZGV4ZWRhdHRycyA9IGJtc19h ZGRfbWVtYmVycyhpbmRleGVkYXR0cnMsIHN1bW1hcml6ZWRhdHRycyk7CisKIAkvKiBEb24n dCBsZWFrIHRoZSBvbGQgdmFsdWVzIG9mIHRoZXNlIGJpdG1hcHMsIGlmIGFueSAqLwogCXJl bGF0aW9uLT5yZF9hdHRyc3ZhbGlkID0gZmFsc2U7CiAJYm1zX2ZyZWUocmVsYXRpb24tPnJk X2tleWF0dHIpOwpAQCAtNTUyNyw4ICs1NTM1LDggQEAgcmVzdGFydDoKIAlyZWxhdGlvbi0+ cmRfcGthdHRyID0gTlVMTDsKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfaWRhdHRyKTsKIAly ZWxhdGlvbi0+cmRfaWRhdHRyID0gTlVMTDsKLQlibXNfZnJlZShyZWxhdGlvbi0+cmRfaG90 YmxvY2tpbmdhdHRyKTsKLQlyZWxhdGlvbi0+cmRfaG90YmxvY2tpbmdhdHRyID0gTlVMTDsK KwlibXNfZnJlZShyZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIpOworCXJlbGF0aW9uLT5yZF9p bmRleGVkYXR0ciA9IE5VTEw7CiAJYm1zX2ZyZWUocmVsYXRpb24tPnJkX3N1bW1hcml6ZWRh dHRyKTsKIAlyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIgPSBOVUxMOwogCkBAIC01NTQz LDcgKzU1NTEsNyBAQCByZXN0YXJ0OgogCXJlbGF0aW9uLT5yZF9rZXlhdHRyID0gYm1zX2Nv cHkodWluZGV4YXR0cnMpOwogCXJlbGF0aW9uLT5yZF9wa2F0dHIgPSBibXNfY29weShwa2lu ZGV4YXR0cnMpOwogCXJlbGF0aW9uLT5yZF9pZGF0dHIgPSBibXNfY29weShpZGluZGV4YXR0 cnMpOwotCXJlbGF0aW9uLT5yZF9ob3RibG9ja2luZ2F0dHIgPSBibXNfY29weShob3RibG9j a2luZ2F0dHJzKTsKKwlyZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIgPSBibXNfY29weShpbmRl eGVkYXR0cnMpOwogCXJlbGF0aW9uLT5yZF9zdW1tYXJpemVkYXR0ciA9IGJtc19jb3B5KHN1 bW1hcml6ZWRhdHRycyk7CiAJcmVsYXRpb24tPnJkX2F0dHJzdmFsaWQgPSB0cnVlOwogCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwpAQCAtNTU1Nyw4ICs1NTY1LDggQEAgcmVz dGFydDoKIAkJCXJldHVybiBwa2luZGV4YXR0cnM7CiAJCWNhc2UgSU5ERVhfQVRUUl9CSVRN QVBfSURFTlRJVFlfS0VZOgogCQkJcmV0dXJuIGlkaW5kZXhhdHRyczsKLQkJY2FzZSBJTkRF WF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkc6Ci0JCQlyZXR1cm4gaG90YmxvY2tpbmdhdHRy czsKKwkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEOgorCQkJcmV0dXJuIGluZGV4 ZWRhdHRyczsKIAkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVEOgogCQkJcmV0 dXJuIHN1bW1hcml6ZWRhdHRyczsKIAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRl eCA1MTc2NDc4YzI5NS4uMmRiZmFkOTIxMTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTM4 NSwxMSArMzg1LDEwIEBAIGV4dGVybiBUTV9SZXN1bHQgaGVhcF9kZWxldGUoUmVsYXRpb24g cmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkLAogZXh0ZXJuIHZvaWQgaGVh cF9maW5pc2hfc3BlY3VsYXRpdmUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2lu dGVyRGF0YSAqdGlkKTsKIGV4dGVybiB2b2lkIGhlYXBfYWJvcnRfc3BlY3VsYXRpdmUoUmVs YXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkKTsKIGV4dGVybiBU TV9SZXN1bHQgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2lu dGVyRGF0YSAqb3RpZCwKLQkJCQkJCQkgSGVhcFR1cGxlIG5ld3R1cCwKLQkJCQkJCQkgQ29t bWFuZElkIGNpZCwgdWludDMyIG9wdGlvbnMsCisJCQkJCQkJIEhlYXBUdXBsZSBuZXd0dXAs IENvbW1hbmRJZCBjaWQsIHVpbnQzMiBvcHRpb25zLAogCQkJCQkJCSBTbmFwc2hvdCBjcm9z c2NoZWNrLCBib29sIHdhaXQsCi0JCQkJCQkJIFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2Nr VHVwbGVNb2RlICpsb2NrbW9kZSwKLQkJCQkJCQkgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRl X2luZGV4ZXMpOworCQkJCQkJCSBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgY29uc3QgTG9ja1R1 cGxlTW9kZSBsb2NrbW9kZSwKKwkJCQkJCQkgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9p ZHhfYXR0cnMsIGNvbnN0IGJvb2wgaG90X2FsbG93ZWQpOwogZXh0ZXJuIFRNX1Jlc3VsdCBo ZWFwX2xvY2tfdHVwbGUoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXBsZSwKIAkJ CQkJCQkJIENvbW1hbmRJZCBjaWQsIExvY2tUdXBsZU1vZGUgbW9kZSwgTG9ja1dhaXRQb2xp Y3kgd2FpdF9wb2xpY3ksCiAJCQkJCQkJCSBib29sIGZvbGxvd191cGRhdGVzLApAQCAtNDY0 LDYgKzQ2MywxMiBAQCBleHRlcm4gdm9pZCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJl bGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkJICBPZmZzZXROdW1i ZXIgKmRlYWQsIGludCBuZGVhZCwKIAkJCQkJCQkJCSAgT2Zmc2V0TnVtYmVyICp1bnVzZWQs IGludCBudW51c2VkKTsKIAorLyogaW4gaGVhcC9oZWFwYW0uYyAqLworZXh0ZXJuIGJvb2wg SGVhcFVwZGF0ZUhvdEFsbG93YWJsZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgQml0bWFw c2V0ICptb2RpZmllZF9pZHhfYXR0cnMsCisJCQkJCQkJCSAgIGJvb2wgKnN1bW1hcml6ZWRf b25seSk7CitleHRlcm4gTG9ja1R1cGxlTW9kZSBIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21v ZGUoUmVsYXRpb24gcmVsYXRpb24sCisJCQkJCQkJCQkJCQkgY29uc3QgQml0bWFwc2V0ICpt b2RpZmllZF9pZHhfYXR0cnMpOworCiAvKiBpbiBoZWFwL3ZhY3V1bWxhenkuYyAqLwogZXh0 ZXJuIHZvaWQgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQljb25zdCBW YWN1dW1QYXJhbXMgKnBhcmFtcywgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5KTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4IGYyYzM2Njk2YmNhLi5hOTc3OGIzNTI4ZCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oCkBAIC01ODYsNiArNTg2LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg VGFibGVBbVJvdXRpbmUKIAkJCQkJCQkJIGJvb2wgd2FpdCwKIAkJCQkJCQkJIFRNX0ZhaWx1 cmVEYXRhICp0bWZkLAogCQkJCQkJCQkgTG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsCisJCQkJ CQkJCSBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycywKIAkJCQkJCQkJIFRV X1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKTsKIAogCS8qIHNlZSB0YWJsZV90dXBs ZV9sb2NrKCkgZm9yIHJlZmVyZW5jZSBhYm91dCBwYXJhbWV0ZXJzICovCkBAIC0xNTk5LDEy ICsxNjAwLDEyIEBAIHRhYmxlX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2lu dGVyIG90aWQsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCQkJCSAgIENvbW1hbmRJZCBjaWQs IHVpbnQzMiBvcHRpb25zLAogCQkJCSAgIFNuYXBzaG90IHNuYXBzaG90LCBTbmFwc2hvdCBj cm9zc2NoZWNrLAogCQkJCSAgIGJvb2wgd2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQsIExv Y2tUdXBsZU1vZGUgKmxvY2ttb2RlLAotCQkJCSAgIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0 ZV9pbmRleGVzKQorCQkJCSAgIGNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJz LCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKIHsKIAlyZXR1cm4gcmVsLT5y ZF90YWJsZWFtLT50dXBsZV91cGRhdGUocmVsLCBvdGlkLCBzbG90LAogCQkJCQkJCQkJCSBj aWQsIG9wdGlvbnMsIHNuYXBzaG90LCBjcm9zc2NoZWNrLAotCQkJCQkJCQkJCSB3YWl0LCB0 bWZkLAotCQkJCQkJCQkJCSBsb2NrbW9kZSwgdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCQkJ CSB3YWl0LCB0bWZkLCBsb2NrbW9kZSwKKwkJCQkJCQkJCQkgbW9kaWZpZWRfaWR4X2F0dHJz LCB1cGRhdGVfaW5kZXhlcyk7CiB9CiAKIC8qCkBAIC0yMDg5LDYgKzIwOTAsNyBAQCBleHRl cm4gdm9pZCBzaW1wbGVfdGFibGVfdHVwbGVfZGVsZXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBv aW50ZXIgdGlkLAogCQkJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCk7CiBleHRlcm4gdm9p ZCBzaW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50ZXIg b3RpZCwKIAkJCQkJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKnNsb3QsIFNuYXBzaG90IHNuYXBz aG90LAorCQkJCQkJCQkJICBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lkeF9hdHRycywK IAkJCQkJCQkJCSAgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpOwogCiAKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggYi9zcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjdXRvci5oCmluZGV4IDE3OThlNjAyN2Q0Li4xNjY2MWJjNjZkOSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMv aW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVk ZSAiZGF0YXR5cGUvdGltZXN0YW1wLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2Rlc2Mu aCIKICNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCiAj aW5jbHVkZSAibm9kZXMvbG9ja29wdGlvbnMuaCIKICNpbmNsdWRlICJub2Rlcy9wYXJzZW5v ZGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAgLTYxNSw2ICs2MTYsMTAg QEAgZXh0ZXJuIFR1cGxlRGVzYyBFeGVjQ2xlYW5UeXBlRnJvbVRMKExpc3QgKnRhcmdldExp c3QpOwogZXh0ZXJuIFR1cGxlRGVzYyBFeGVjVHlwZUZyb21FeHByTGlzdChMaXN0ICpleHBy TGlzdCk7CiBleHRlcm4gdm9pZCBFeGVjVHlwZVNldENvbE5hbWVzKFR1cGxlRGVzYyB0eXBl SW5mbywgTGlzdCAqbmFtZXNMaXN0KTsKIGV4dGVybiB2b2lkIFVwZGF0ZUNoYW5nZWRQYXJh bVNldChQbGFuU3RhdGUgKm5vZGUsIEJpdG1hcHNldCAqbmV3Y2hnKTsKK2V4dGVybiBCaXRt YXBzZXQgKkV4ZWNDb21wYXJlU2xvdEF0dHJzKEJpdG1hcHNldCAqYXR0cnMsCisJCQkJCQkJ CQkgICBUdXBsZURlc2MgdHVwZGVzYywKKwkJCQkJCQkJCSAgIFR1cGxlVGFibGVTbG90ICpv bGRfdHRzLAorCQkJCQkJCQkJICAgVHVwbGVUYWJsZVNsb3QgKm5ld190dHMpOwogCiB0eXBl ZGVmIHN0cnVjdCBUdXBPdXRwdXRTdGF0ZQogewpAQCAtODE0LDUgKzgxOSw4IEBAIGV4dGVy biBSZXN1bHRSZWxJbmZvICpFeGVjTG9va3VwUmVzdWx0UmVsQnlPaWQoTW9kaWZ5VGFibGVT dGF0ZSAqbm9kZSwKIAkJCQkJCQkJCQkJICAgT2lkIHJlc3VsdG9pZCwKIAkJCQkJCQkJCQkJ ICAgYm9vbCBtaXNzaW5nX29rLAogCQkJCQkJCQkJCQkgICBib29sIHVwZGF0ZV9jYWNoZSk7 CitleHRlcm4gQml0bWFwc2V0ICpFeGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRycyhSZXN1bHRS ZWxJbmZvICpyZWxpbmZvLAorCQkJCQkJCQkJCQkgVHVwbGVUYWJsZVNsb3QgKm9sZF90dHMs CisJCQkJCQkJCQkJCSBUdXBsZVRhYmxlU2xvdCAqbmV3X3R0cyk7CiAKICNlbmRpZgkJCQkJ CQkvKiBFWEVDVVRPUl9IICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVs LmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAppbmRleCBmYTA3ZWJmOGZmNy4uMWVmNWMx NDY1YzYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCisrKyBiL3NyYy9p bmNsdWRlL3V0aWxzL3JlbC5oCkBAIC0xNjIsNyArMTYyLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg UmVsYXRpb25EYXRhCiAJQml0bWFwc2V0ICAqcmRfa2V5YXR0cjsJCS8qIGNvbHMgdGhhdCBj YW4gYmUgcmVmJ2QgYnkgZm9yZWlnbiBrZXlzICovCiAJQml0bWFwc2V0ICAqcmRfcGthdHRy OwkJLyogY29scyBpbmNsdWRlZCBpbiBwcmltYXJ5IGtleSAqLwogCUJpdG1hcHNldCAgKnJk X2lkYXR0cjsJCS8qIGluY2x1ZGVkIGluIHJlcGxpY2EgaWRlbnRpdHkgaW5kZXggKi8KLQlC aXRtYXBzZXQgICpyZF9ob3RibG9ja2luZ2F0dHI7IC8qIGNvbHMgYmxvY2tpbmcgSE9UIHVw ZGF0ZSAqLworCUJpdG1hcHNldCAgKnJkX2luZGV4ZWRhdHRyOyAvKiBhbGwgY29scyByZWZl cmVuY2VkIGJ5IGluZGV4ZXMgKi8KIAlCaXRtYXBzZXQgICpyZF9zdW1tYXJpemVkYXR0cjsJ LyogY29scyBpbmRleGVkIGJ5IHN1bW1hcml6aW5nIGluZGV4ZXMgKi8KIAogCVB1YmxpY2F0 aW9uRGVzYyAqcmRfcHViZGVzYzsJLyogcHVibGljYXRpb24gZGVzY3JpcHRvciwgb3IgTlVM TCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaCBiL3NyYy9p bmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKaW5kZXggODljMjdhYTE1MjkuLjg5Nzg4MDkxNTc2 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oCisrKyBiL3NyYy9p bmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKQEAgLTcwLDcgKzcwLDcgQEAgdHlwZWRlZiBlbnVt IEluZGV4QXR0ckJpdG1hcEtpbmQKIAlJTkRFWF9BVFRSX0JJVE1BUF9LRVksCiAJSU5ERVhf QVRUUl9CSVRNQVBfUFJJTUFSWV9LRVksCiAJSU5ERVhfQVRUUl9CSVRNQVBfSURFTlRJVFlf S0VZLAotCUlOREVYX0FUVFJfQklUTUFQX0hPVF9CTE9DS0lORywKKwlJTkRFWF9BVFRSX0JJ VE1BUF9JTkRFWEVELAogCUlOREVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQsCiB9IEluZGV4 QXR0ckJpdG1hcEtpbmQ7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0 aW9uX3BvaW50cy9leHBlY3RlZC9zeXNjYWNoZS11cGRhdGUtcHJ1bmVkLm91dCBiL3NyYy90 ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9zeXNjYWNoZS11cGRhdGUt cHJ1bmVkLm91dAppbmRleCBhNmE0ZThkYjk5Ni4uMDdlZjY3YTFlYjQgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3RlZC9zeXNjYWNoZS11 cGRhdGUtcHJ1bmVkLm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2lu dHMvZXhwZWN0ZWQvc3lzY2FjaGUtdXBkYXRlLXBydW5lZC5vdXQKQEAgLTE2LDggKzE2LDgg QEAgc3RlcCB3YWtlaW52YWw0Ogogc3RlcCBhdDI6IDwuLi4gY29tcGxldGVkPgogc3RlcCB3 YWtlaW52YWw0OiA8Li4uIGNvbXBsZXRlZD4KIHN0ZXAgd2FrZWdyYW50NDogCi0JU0VMRUNU IEZST00gaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2hlYXBfdXBkYXRlLWJlZm9yZS1waW4n KTsKLQlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX3dha2V1cCgnaGVhcF91cGRhdGUt YmVmb3JlLXBpbicpOworCVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdz aW1wbGVfaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOworCVNFTEVDVCBGUk9NIGluamVjdGlv bl9wb2ludHNfd2FrZXVwKCdzaW1wbGVfaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOwogIDx3 YWl0aW5nIC4uLj4KIHN0ZXAgZ3JhbnQxOiA8Li4uIGNvbXBsZXRlZD4KIEVSUk9SOiAgdHVw bGUgY29uY3VycmVudGx5IGRlbGV0ZWQKQEAgLTQyLDggKzQyLDggQEAgc3RlcCBta3JlbHM0 OgogCVNFTEVDVCBGUk9NIHZhY3Rlc3QubWtyZWxzKCdpbnRydWRlcicsIDEsIDEwMCk7ICAt LSByZXBvcHVsYXRlIExQX1VOVVNFRAogCiBzdGVwIHdha2VncmFudDQ6IAotCVNFTEVDVCBG Uk9NIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3VwZGF0ZS1iZWZvcmUtcGluJyk7 Ci0JU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2hlYXBfdXBkYXRlLWJl Zm9yZS1waW4nKTsKKwlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX2RldGFjaCgnc2lt cGxlX2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsKKwlTRUxFQ1QgRlJPTSBpbmplY3Rpb25f cG9pbnRzX3dha2V1cCgnc2ltcGxlX2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsKICA8d2Fp dGluZyAuLi4+CiBzdGVwIGdyYW50MTogPC4uLiBjb21wbGV0ZWQ+CiBFUlJPUjogIGR1cGxp Y2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMgdW5pcXVlIGNvbnN0cmFpbnQgInBnX2NsYXNzX29p ZF9pbmRleCIKQEAgLTcxLDggKzcxLDggQEAgc3RlcCBhdDI6IDwuLi4gY29tcGxldGVkPgog c3RlcCB3YWtlaW52YWw0OiA8Li4uIGNvbXBsZXRlZD4KIHN0ZXAgYXQ0OiBBTFRFUiBUQUJM RSB2YWN0ZXN0LmNoaWxkNTAgSU5IRVJJVCB2YWN0ZXN0Lm9yaWc1MDsKIHN0ZXAgd2FrZWdy YW50NDogCi0JU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2hlYXBfdXBk YXRlLWJlZm9yZS1waW4nKTsKLQlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX3dha2V1 cCgnaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOworCVNFTEVDVCBGUk9NIGluamVjdGlvbl9w b2ludHNfZGV0YWNoKCdzaW1wbGVfaGVhcF91cGRhdGUtYmVmb3JlLXBpbicpOworCVNFTEVD VCBGUk9NIGluamVjdGlvbl9wb2ludHNfd2FrZXVwKCdzaW1wbGVfaGVhcF91cGRhdGUtYmVm b3JlLXBpbicpOwogIDx3YWl0aW5nIC4uLj4KIHN0ZXAgZ3JhbnQxOiA8Li4uIGNvbXBsZXRl ZD4KIHN0ZXAgd2FrZWdyYW50NDogPC4uLiBjb21wbGV0ZWQ+CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3BlY3Mvc3lzY2FjaGUtdXBkYXRlLXBy dW5lZC5zcGVjIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NwZWNzL3N5 c2NhY2hlLXVwZGF0ZS1wcnVuZWQuc3BlYwppbmRleCBlM2E0Mjk1YmQxMi4uZmVmOWFjODk1 YTEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcGVj cy9zeXNjYWNoZS11cGRhdGUtcHJ1bmVkLnNwZWMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9p bmplY3Rpb25fcG9pbnRzL3NwZWNzL3N5c2NhY2hlLXVwZGF0ZS1wcnVuZWQuc3BlYwpAQCAt MTAzLDcgKzEwMyw3IEBAIHNlc3Npb24gczEKIHNldHVwCXsKIAlTRVQgZGVidWdfZGlzY2Fy ZF9jYWNoZXMgPSAwOwogCVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2Fs KCk7Ci0JU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2hlYXBfdXBkYXRl LWJlZm9yZS1waW4nLCAnd2FpdCcpOworCVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNf YXR0YWNoKCdzaW1wbGVfaGVhcF91cGRhdGUtYmVmb3JlLXBpbicsICd3YWl0Jyk7CiB9CiBz dGVwIGNhY2hlZmlsbDEJeyBTRUxFQ1QgRlJPTSB2YWN0ZXN0LnJlbG9pZF9jYXRjYWNoZV9z ZXQoJ3ZhY3Rlc3Qub3JpZzUwJyk7IH0KIHN0ZXAgZ3JhbnQxCXsgR1JBTlQgU0VMRUNUIE9O IHZhY3Rlc3Qub3JpZzUwIFRPIFBVQkxJQzsgfQpAQCAtMTQwLDggKzE0MCw4IEBAIHN0ZXAg bWtyZWxzNAl7CiAJU0VMRUNUIEZST00gdmFjdGVzdC5ta3JlbHMoJ2ludHJ1ZGVyJywgMSwg MTAwKTsgIC0tIHJlcG9wdWxhdGUgTFBfVU5VU0VECiB9CiBzdGVwIHdha2VncmFudDQJewot CVNFTEVDVCBGUk9NIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3VwZGF0ZS1iZWZv cmUtcGluJyk7Ci0JU0VMRUNUIEZST00gaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2hlYXBf dXBkYXRlLWJlZm9yZS1waW4nKTsKKwlTRUxFQ1QgRlJPTSBpbmplY3Rpb25fcG9pbnRzX2Rl dGFjaCgnc2ltcGxlX2hlYXBfdXBkYXRlLWJlZm9yZS1waW4nKTsKKwlTRUxFQ1QgRlJPTSBp bmplY3Rpb25fcG9pbnRzX3dha2V1cCgnc2ltcGxlX2hlYXBfdXBkYXRlLWJlZm9yZS1waW4n KTsKIH0KIHN0ZXAgYXQ0CXsgQUxURVIgVEFCTEUgdmFjdGVzdC5jaGlsZDUwIElOSEVSSVQg dmFjdGVzdC5vcmlnNTA7IH0KIHN0ZXAgd2FrZWludmFsNAl7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dlbmVyYXRlZF92aXJ0dWFsLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2VuZXJhdGVkX3ZpcnR1YWwub3V0CmluZGV4IDAxZWUyOWZl ZTEwLi5hN2EyNDYzZTU0ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9nZW5lcmF0ZWRfdmlydHVhbC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9nZW5lcmF0ZWRfdmlydHVhbC5vdXQKQEAgLTI4Nyw3ICsyODcsNyBAQCBERVRBSUw6ICBD b2x1bW4gImIiIGlzIGEgZ2VuZXJhdGVkIGNvbHVtbi4KIElOU0VSVCBJTlRPIGd0ZXN0MXYg VkFMVUVTICg4LCBERUZBVUxUKSwgKDksIERFRkFVTFQpOyAgLS0gZXJyb3IKIEVSUk9SOiAg Y2Fubm90IGluc2VydCBhIG5vbi1ERUZBVUxUIHZhbHVlIGludG8gY29sdW1uICJiIgogREVU QUlMOiAgQ29sdW1uICJiIiBpcyBhIGdlbmVyYXRlZCBjb2x1bW4uCi1TRUxFQ1QgKiBGUk9N IGd0ZXN0MXY7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0MXYgT1JERVIgQlkgYTsKICBhIHwgYiAg CiAtLS0rLS0tLQogIDMgfCAgNgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC90cmlnZ2Vycy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RyaWdnZXJz Lm91dAppbmRleCA4ZmNiMzNhYzgxYS4uMDBlYmUzMDU4NzUgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHJpZ2dlcnMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvdHJpZ2dlcnMub3V0CkBAIC05NTksMTYgKzk1OSwyNCBAQCBOT1RJQ0U6 ICBtYWluX3ZpZXcgQkVGT1JFIFVQREFURSBTVEFURU1FTlQgKGJlZm9yZV92aWV3X3VwZF9z dG10KQogTk9USUNFOiAgbWFpbl92aWV3IEFGVEVSIFVQREFURSBTVEFURU1FTlQgKGFmdGVy X3ZpZXdfdXBkX3N0bXQpCiBVUERBVEUgMAogLS0gRGVsZXRlIGZyb20gdmlldyB1c2luZyB0 cmlnZ2VyCi1ERUxFVEUgRlJPTSBtYWluX3ZpZXcgV0hFUkUgYSBJTiAoMjAsMjEpOworREVM RVRFIEZST00gbWFpbl92aWV3IFdIRVJFIGEgPSAyMCBBTkQgYiA9IDMxOwogTk9USUNFOiAg bWFpbl92aWV3IEJFRk9SRSBERUxFVEUgU1RBVEVNRU5UIChiZWZvcmVfdmlld19kZWxfc3Rt dCkKIE5PVElDRTogIG1haW5fdmlldyBJTlNURUFEIE9GIERFTEVURSBST1cgKGluc3RlYWRf b2ZfZGVsKQotTk9USUNFOiAgT0xEOiAoMjEsMTApCi1OT1RJQ0U6ICBtYWluX3ZpZXcgSU5T VEVBRCBPRiBERUxFVEUgUk9XIChpbnN0ZWFkX29mX2RlbCkKIE5PVElDRTogIE9MRDogKDIw LDMxKQorTk9USUNFOiAgbWFpbl92aWV3IEFGVEVSIERFTEVURSBTVEFURU1FTlQgKGFmdGVy X3ZpZXdfZGVsX3N0bXQpCitERUxFVEUgMQorREVMRVRFIEZST00gbWFpbl92aWV3IFdIRVJF IGEgPSAyMSBBTkQgYiA9IDEwOworTk9USUNFOiAgbWFpbl92aWV3IEJFRk9SRSBERUxFVEUg U1RBVEVNRU5UIChiZWZvcmVfdmlld19kZWxfc3RtdCkKK05PVElDRTogIG1haW5fdmlldyBJ TlNURUFEIE9GIERFTEVURSBST1cgKGluc3RlYWRfb2ZfZGVsKQorTk9USUNFOiAgT0xEOiAo MjEsMTApCitOT1RJQ0U6ICBtYWluX3ZpZXcgQUZURVIgREVMRVRFIFNUQVRFTUVOVCAoYWZ0 ZXJfdmlld19kZWxfc3RtdCkKK0RFTEVURSAxCitERUxFVEUgRlJPTSBtYWluX3ZpZXcgV0hF UkUgYSA9IDIxIEFORCBiID0gMzI7CitOT1RJQ0U6ICBtYWluX3ZpZXcgQkVGT1JFIERFTEVU RSBTVEFURU1FTlQgKGJlZm9yZV92aWV3X2RlbF9zdG10KQogTk9USUNFOiAgbWFpbl92aWV3 IElOU1RFQUQgT0YgREVMRVRFIFJPVyAoaW5zdGVhZF9vZl9kZWwpCiBOT1RJQ0U6ICBPTEQ6 ICgyMSwzMikKIE5PVElDRTogIG1haW5fdmlldyBBRlRFUiBERUxFVEUgU1RBVEVNRU5UIChh ZnRlcl92aWV3X2RlbF9zdG10KQotREVMRVRFIDMKK0RFTEVURSAxCiBERUxFVEUgRlJPTSBt YWluX3ZpZXcgV0hFUkUgYSA9IDMxIFJFVFVSTklORyBhLCBiOwogTk9USUNFOiAgbWFpbl92 aWV3IEJFRk9SRSBERUxFVEUgU1RBVEVNRU5UIChiZWZvcmVfdmlld19kZWxfc3RtdCkKIE5P VElDRTogIG1haW5fdmlldyBJTlNURUFEIE9GIERFTEVURSBST1cgKGluc3RlYWRfb2ZfZGVs KQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90c2VhcmNoLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHNlYXJjaC5vdXQKaW5kZXggNWI3YzIxMjNm MzcuLjZkYzE5M2YwMmQ2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3RzZWFyY2gub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHNlYXJjaC5v dXQKQEAgLTI0OTMsNyArMjQ5Myw4IEBAIFNFTEVDVCB0b190c3F1ZXJ5KCdTS0lFUyAmIE15 IHwgYm9vS3MnKTsKICAnc2t5JyB8ICdib29rJwogKDEgcm93KQogCi0tLXRyaWdnZXIKKy0t IHRzdmVjdG9yX3VwZGF0ZV90cmlnZ2VyKCkgdXNlcyBoZWFwX21vZGlmeV90dXBsZSgpIHRv IHNldCBjb2x1bW4gJ2EnCistLSB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhlIGV4ZWN1dG9y J3MgU0VULWNsYXVzZSB0cmFja2luZy4KIENSRUFURSBUUklHR0VSIHRzdmVjdG9ydXBkYXRl CiBCRUZPUkUgVVBEQVRFIE9SIElOU0VSVCBPTiB0ZXN0X3RzdmVjdG9yCiBGT1IgRUFDSCBS T1cgRVhFQ1VURSBQUk9DRURVUkUgdHN2ZWN0b3JfdXBkYXRlX3RyaWdnZXIoYSwgJ3BnX2Nh dGFsb2cuZW5nbGlzaCcsIHQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC91cGRhdGFibGVfdmlld3Mub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91 cGRhdGFibGVfdmlld3Mub3V0CmluZGV4IDdiMDBjNzQyNzc2Li5jZDZlNzFhYzQ5MCAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91cGRhdGFibGVfdmlld3Mub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dApA QCAtMzcyLDE1ICszNzIsMTUgQEAgSU5TRVJUIElOVE8gcndfdmlldzE2IChhLCBiKSBWQUxV RVMgKDMsICdSb3cgMycpOyAtLSBzaG91bGQgYmUgT0sKIFVQREFURSByd192aWV3MTYgU0VU IGE9MywgYWE9LTMgV0hFUkUgYT0zOyAtLSBzaG91bGQgZmFpbAogRVJST1I6ICBtdWx0aXBs ZSBhc3NpZ25tZW50cyB0byBzYW1lIGNvbHVtbiAiYSIKIFVQREFURSByd192aWV3MTYgU0VU IGFhPS0zIFdIRVJFIGE9MzsgLS0gc2hvdWxkIGJlIE9LCi1TRUxFQ1QgKiBGUk9NIGJhc2Vf dGJsOworU0VMRUNUICogRlJPTSBiYXNlX3RibCBPUkRFUiBCWSBhOwogIGEgIHwgICBiICAg IAogLS0tLSstLS0tLS0tLQorIC0zIHwgUm93IDMKICAtMiB8IFJvdyAtMgogIC0xIHwgUm93 IC0xCiAgIDAgfCBSb3cgMAogICAxIHwgUm93IDEKICAgMiB8IFJvdyAyCi0gLTMgfCBSb3cg MwogKDYgcm93cykKIAogREVMRVRFIEZST00gcndfdmlldzE2IFdIRVJFIGE9LTM7IC0tIHNo b3VsZCBiZSBPSwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2VuZXJhdGVk X3ZpcnR1YWwuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2VuZXJhdGVkX3ZpcnR1YWwu c3FsCmluZGV4IDBjYjE0ZWIwZTM2Li5iYzkxNzQyYTQ5MiAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvZ2VuZXJhdGVkX3ZpcnR1YWwuc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2dlbmVyYXRlZF92aXJ0dWFsLnNxbApAQCAtMTI3LDcgKzEyNyw3IEBAIEFM VEVSIFZJRVcgZ3Rlc3QxdiBBTFRFUiBDT0xVTU4gYiBTRVQgREVGQVVMVCAxMDA7CiBJTlNF UlQgSU5UTyBndGVzdDF2IFZBTFVFUyAoOCwgREVGQVVMVCk7ICAtLSBlcnJvcgogSU5TRVJU IElOVE8gZ3Rlc3QxdiBWQUxVRVMgKDgsIERFRkFVTFQpLCAoOSwgREVGQVVMVCk7ICAtLSBl cnJvcgogCi1TRUxFQ1QgKiBGUk9NIGd0ZXN0MXY7CitTRUxFQ1QgKiBGUk9NIGd0ZXN0MXYg T1JERVIgQlkgYTsKIERFTEVURSBGUk9NIGd0ZXN0MXYgV0hFUkUgYSA+PSA1OwogRFJPUCBW SUVXIGd0ZXN0MXY7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RyaWdn ZXJzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RyaWdnZXJzLnNxbAppbmRleCAyMjg1 ZTkwMTEwZS4uMTljMjU3MjIwMWYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3RyaWdnZXJzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC90cmlnZ2Vycy5zcWwK QEAgLTY2MCw3ICs2NjAsOSBAQCBVUERBVEUgbWFpbl92aWV3IFNFVCBiID0gMzIgV0hFUkUg YSA9IDIxIEFORCBiID0gMzEgUkVUVVJOSU5HIGEsIGI7CiBVUERBVEUgbWFpbl92aWV3IFNF VCBiID0gMCBXSEVSRSBmYWxzZTsKIAogLS0gRGVsZXRlIGZyb20gdmlldyB1c2luZyB0cmln Z2VyCi1ERUxFVEUgRlJPTSBtYWluX3ZpZXcgV0hFUkUgYSBJTiAoMjAsMjEpOworREVMRVRF IEZST00gbWFpbl92aWV3IFdIRVJFIGEgPSAyMCBBTkQgYiA9IDMxOworREVMRVRFIEZST00g bWFpbl92aWV3IFdIRVJFIGEgPSAyMSBBTkQgYiA9IDEwOworREVMRVRFIEZST00gbWFpbl92 aWV3IFdIRVJFIGEgPSAyMSBBTkQgYiA9IDMyOwogREVMRVRFIEZST00gbWFpbl92aWV3IFdI RVJFIGEgPSAzMSBSRVRVUk5JTkcgYSwgYjsKIAogXHNldCBRVUlFVCB0cnVlCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC90c2VhcmNoLnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3RzZWFyY2guc3FsCmluZGV4IDhiM2Q3MDBmNTdjLi4wOTQxODFlNzc2NCAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdHNlYXJjaC5zcWwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvdHNlYXJjaC5zcWwKQEAgLTc2MCw3ICs3NjAsOCBAQCBTRUxFQ1Qg dG9fdHN2ZWN0b3IoJ1NLSUVTIE15IGJvb0tzJyk7CiBTRUxFQ1QgcGxhaW50b190c3F1ZXJ5 KCdTS0lFUyBNeSBib29LcycpOwogU0VMRUNUIHRvX3RzcXVlcnkoJ1NLSUVTICYgTXkgfCBi b29LcycpOwogCi0tLXRyaWdnZXIKKy0tIHRzdmVjdG9yX3VwZGF0ZV90cmlnZ2VyKCkgdXNl cyBoZWFwX21vZGlmeV90dXBsZSgpIHRvIHNldCBjb2x1bW4gJ2EnCistLSB3aXRob3V0IGdv aW5nIHRocm91Z2ggdGhlIGV4ZWN1dG9yJ3MgU0VULWNsYXVzZSB0cmFja2luZy4KIENSRUFU RSBUUklHR0VSIHRzdmVjdG9ydXBkYXRlCiBCRUZPUkUgVVBEQVRFIE9SIElOU0VSVCBPTiB0 ZXN0X3RzdmVjdG9yCiBGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgdHN2ZWN0b3Jf dXBkYXRlX3RyaWdnZXIoYSwgJ3BnX2NhdGFsb2cuZW5nbGlzaCcsIHQpOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXBkYXRhYmxlX3ZpZXdzLnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5zcWwKaW5kZXggNGE2MDEyNmVjOTAuLjAx NzAwNDBjMDk4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC91cGRhdGFibGVf dmlld3Muc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5z cWwKQEAgLTEyNSw3ICsxMjUsNyBAQCBJTlNFUlQgSU5UTyByd192aWV3MTYgVkFMVUVTICgz LCAnUm93IDMnLCAzKTsgLS0gc2hvdWxkIGZhaWwKIElOU0VSVCBJTlRPIHJ3X3ZpZXcxNiAo YSwgYikgVkFMVUVTICgzLCAnUm93IDMnKTsgLS0gc2hvdWxkIGJlIE9LCiBVUERBVEUgcndf dmlldzE2IFNFVCBhPTMsIGFhPS0zIFdIRVJFIGE9MzsgLS0gc2hvdWxkIGZhaWwKIFVQREFU RSByd192aWV3MTYgU0VUIGFhPS0zIFdIRVJFIGE9MzsgLS0gc2hvdWxkIGJlIE9LCi1TRUxF Q1QgKiBGUk9NIGJhc2VfdGJsOworU0VMRUNUICogRlJPTSBiYXNlX3RibCBPUkRFUiBCWSBh OwogREVMRVRFIEZST00gcndfdmlldzE2IFdIRVJFIGE9LTM7IC0tIHNob3VsZCBiZSBPSwog LS0gUmVhZC1vbmx5IHZpZXdzCiBJTlNFUlQgSU5UTyByb192aWV3MTcgVkFMVUVTICgzLCAn Uk9XIDMnKTsKLS0gCjIuNTAuMQoK --732d2653398ad274b1166a00220a1f2b85c8ed8b Content-Disposition: attachment; filename*0="v49-0003-Add-the-HOT-indexed-on-disk-format-inline-attr-b.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v49-0003-Add-the-HOT-indexed-on-disk-format-inline-attr-b.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSBjZjNmZjdkYjM2NGUyNTQyNmU2ZTY1ZWU4OGU1ZmU0NjM0MTllNDM5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAxNzoxNDo0NCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjQ5IDMv OV0gQWRkIHRoZSBIT1QtaW5kZXhlZCBvbi1kaXNrIGZvcm1hdDogaW5saW5lIGF0dHIKIGJp dG1hcCBhbmQgc3R1YnMKCkRlZmluZSB0aGUgb24tZGlzayByZXByZXNlbnRhdGlvbiBhIEhP VC1pbmRleGVkIHVwZGF0ZSBhbmQgaXRzIGxhdGVyCnBydW5lL2NvbGxhcHNlIHByb2R1Y2Us IGFoZWFkIG9mIHRoZSBjb2RlIHRoYXQgcmVhZHMgb3Igd3JpdGVzIGl0OgoKLSBIRUFQX0lO REVYRURfVVBEQVRFRCAoaHR1cF9kZXRhaWxzLmgpLCB0aGUgdF9pbmZvbWFzazIgYml0IG1h cmtpbmcgYQogIGhlYXAtb25seSB0dXBsZSB3aG9zZSBwcm9kdWNpbmcgVVBEQVRFIGFsc28g Y2hhbmdlZCBhbiBpbmRleGVkIGNvbHVtbjsgYW5kCi0gYWNjZXNzL2hvdF9pbmRleGVkLmgs IHRoZSBpbmxpbmUgZml4ZWQtc2l6ZSBtb2RpZmllZC1hdHRycyBiaXRtYXAgc3RvcmVkIGlu CiAgdGhlIHRhaWwgb2Ygc3VjaCBhIHR1cGxlLCBwbHVzIHRoZSB4aWQtZnJlZSAiY29sbGFw c2Utc3Vydml2b3Igc3R1YiIgZm9ybWF0CiAgKEhFQVBfSU5ERVhFRF9VUERBVEVEIHdpdGgg bmF0dHMgPT0gMCwgYSBmb3J3YXJkIGxpbmssIGFuZCB0aGUgc2VnbWVudCdzCiAgYml0bWFw KSBhbmQgdGhlIGFjY2Vzc29ycyBib3RoIHNoYXJlLgoKUkVBRE1FLkhPVC1JTkRFWEVEIGlu dHJvZHVjZXMgdGhlIGRlc2lnbiBhbmQgdGhlIHJlbGF4ZWQgY2xhc3NpYy1IT1QKaW52YXJp YW50OyBsYXRlciBjb21taXRzIGRvY3VtZW50IHRoZSBlbGlnaWJpbGl0eSwgd3JpdGUsIHJl YWQsIGFuZApwcnVuZS9jb2xsYXBzZSBtYWNoaW5lcnkgaW4gdGhlaXIgb3duIHNlY3Rpb25z LgoKQ28tYXV0aG9yZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgpDby1hdXRob3Jl ZC1ieTogTmF0aGFuIEJvc3NhcnQgPG5hdGhhbmRib3NzYXJ0QGdtYWlsLmNvbT4KLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQgfCAgNTYgKysrKysr CiBzcmMvaW5jbHVkZS9hY2Nlc3MvaG90X2luZGV4ZWQuaCAgICAgICAgICAgfCAxOTkgKysr KysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaHR1cF9kZXRhaWxzLmgg ICAgICAgICAgfCAgIDggKy0KIDMgZmlsZXMgY2hhbmdlZCwgMjYyIGluc2VydGlvbnMoKyks IDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9SRUFETUUuSE9ULUlOREVYRUQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVk ZS9hY2Nlc3MvaG90X2luZGV4ZWQuaAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JF QURNRS5IT1QtSU5ERVhFRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uNGI3MDFlNDI1ODYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9SRUFETUUuSE9ULUlOREVYRUQKQEAgLTAsMCArMSw1NiBAQAorSE9ULWluZGV4ZWQg dXBkYXRlcyAoU2VsZWN0aXZlIEluZGV4IFVwZGF0ZSwgIkhPVC9TSVUiKQorPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitDbGFz c2ljIEhPVCAoc2VlIFJFQURNRS5IT1QpIGtlZXBzIGFuIFVQREFURSBvZmYgdGhlIGluZGV4 ZXMgb25seSB3aGVuIG5vCitpbmRleGVkIGNvbHVtbiBjaGFuZ2VkOiB0aGUgbmV3IHR1cGxl IGlzIGEgaGVhcC1vbmx5IHR1cGxlIGFwcGVuZGVkIHRvIHRoZQorY2hhaW4sIGFuZCBldmVy eSBpbmRleCBlbnRyeSBjb250aW51ZXMgdG8gcmVzb2x2ZSwgdmlhIHRoZSBzYW1lLXBhZ2Ug dF9jdGlkCitjaGFpbiwgdG8gYSB0dXBsZSB3aG9zZSBpbmRleGVkIHZhbHVlcyBzdGlsbCBl cXVhbCB0aGUgZW50cnkncyBrZXkuCisKK0hPVC1pbmRleGVkIChTZWxlY3RpdmUgSW5kZXgg VXBkYXRlLCBTSVUpIHJlbGF4ZXMgdGhhdCB0bzogYW4gVVBEQVRFIG1heQorY2hhbmdlIGlu ZGV4ZWQgY29sdW1ucyBhbmQgc3RpbGwgYmUgYSBoZWFwLW9ubHkgdHVwbGUgb24gdGhlIHNh bWUgcGFnZSwKK3Byb3ZpZGVkIG5ldyBpbmRleCBlbnRyaWVzIGFyZSBpbnNlcnRlZCBvbmx5 IGludG8gdGhlIGluZGV4ZXMgd2hvc2Uga2V5CithdHRyaWJ1dGVzIGFjdHVhbGx5IGNoYW5n ZWQuICBUaGUgaW5kZXhlcyB3aG9zZSBhdHRyaWJ1dGVzIGRpZCBub3QgY2hhbmdlIGFyZQor bGVmdCB1bnRvdWNoZWQsIHdoaWNoIGlzIHdoZXJlIHRoZSB3cml0ZS1hbXBsaWZpY2F0aW9u IHNhdmluZyBjb21lcyBmcm9tLgorCitUaGUgcHJpY2UgaXMgdGhhdCBhIGNoYWluIG1heSBu b3cgY29udGFpbiB0dXBsZXMgd2l0aCBkaWZmZXJlbnQgaW5kZXgga2V5cywgc28KK2FuIGlu ZGV4IGVudHJ5IGZvciBhbiBvbGQga2V5IGNhbiBjaGFpbi1yZXNvbHZlIHRvIGEgbGl2ZSB0 dXBsZSB3aG9zZSBjdXJyZW50CitrZXkgZGlmZmVycy4gIFN1Y2ggYW4gZW50cnkgaXMgU1RB TEUuICBUaGUgcmVhZCBzaWRlIGRldGVjdHMgYW5kIGRyb3BzIHN0YWxlCitlbnRyaWVzIGJ5 IHRlc3RpbmcgdGhlIGhlYXAncyBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgYWdhaW5zdCB0 aGUgaW5kZXgncwora2V5IGNvbHVtbnMuCisKK1RoaXMgZmlsZSBkb2N1bWVudHMgdGhlIGVs aWdpYmlsaXR5IHJ1bGVzLCB0aGUgd3JpdGUgcGF0aCwgdGhlIG9uLWNoYWluCityZXByZXNl bnRhdGlvbiwgdGhlIHJlYWQtc2lkZSBzdGFsZW5lc3MgdGVzdCwgcHJ1bmUvY29sbGFwc2Us IHZhY3V1bSByZWNsYW1hdGlvbiwKK3JlY292ZXJ5LCB0aGUgbG9naWNhbC1yZXBsaWNhdGlv biBhcHBseSBnYXRpbmcsIGFuZCB0aGUgc3RhdGlzdGljcy4KKworCitUaGUgY2xhc3NpYy1I T1QgaW52YXJpYW50IHdlIGFyZSByZWxheGluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisKK0NsYXNzaWMgSE9UIHJlbGllcyBvbiB0d28gcHJvcGVy dGllczoKKworICAoYSkgZXZlcnkgbGl2ZSBpbmRleCBlbnRyeSByZXNvbHZlcywgdmlhIGEg c2FtZS1wYWdlIHRfY3RpZCBjaGFpbiwgdG8gdGhlCisgICAgICBjaGFpbidzIHJvb3QgbGlu ZSBwb2ludGVyOyBhbmQKKworICAoYikgdGhlIGluZGV4ZWQgdmFsdWVzIG9mIGV2ZXJ5IHR1 cGxlIG9uIHRoZSBjaGFpbiBlcXVhbCB0aGUga2V5IG9mIGV2ZXJ5CisgICAgICBpbmRleCBl bnRyeSB0aGF0IHJlYWNoZXMgaXQuCisKK0hPVC1pbmRleGVkIGtlZXBzIChhKSBidXQgYnJl YWtzIChiKTogYWZ0ZXIgYSBIT1QtaW5kZXhlZCB1cGRhdGUgdGhlIGNoYWluCitob2xkcyB0 dXBsZXMgd2l0aCBkaWZmZXJlbnQga2V5cywgYW5kIGEgbmV3IGluZGV4IGVudHJ5IGlzIHBs YW50ZWQgdGhhdCBwb2ludHMKK2F0IHRoZSAqc3BlY2lmaWMqIGhlYXAtb25seSB0dXBsZSB3 aG9zZSBrZXkgaXQgbWF0Y2hlcyAtLSBub3QgbmVjZXNzYXJpbHkgdGhlCityb290LgorCisK K1RoZSBIT1QtaW5kZXhlZCBpbnZhcmlhbnQgKHRoZSBuZXcgY29udHJhY3QpCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIEFuIGluZGV4IGVu dHJ5IHBvaW50cyBhdCB0aGUgaGVhcC1vbmx5IHR1cGxlIHZlcnNpb24gd2hvc2UgaW5kZXhl ZCBrZXkgaXQKKyAgbWF0Y2hlZCBhdCBpbnNlcnRpb24gdGltZS4gIEEgY2hhaW4gd2FsayB0 aGF0IHJlYWNoZXMgYSBsaXZlIHR1cGxlIGJ5CisgIGNyb3NzaW5nIGEgSE9ULWluZGV4ZWQg aG9wICphZnRlciogdGhlIGVudHJ5J3Mgb3duIHRhcmdldCBtYXkgYmUgc3RhbGU6IGlmCisg IHRoZSB1bmlvbiBvZiB0aG9zZSBjcm9zc2VkIGhvcHMnIG1vZGlmaWVkIGF0dHJpYnV0ZXMg b3ZlcmxhcHMgdGhlIGluZGV4J3MKKyAga2V5IGNvbHVtbnMsIHRoZSBlbnRyeSBpcyBzdGFs ZSBhbmQgdGhlIHR1cGxlIGlzIGRyb3BwZWQgZnJvbSB0aGF0IHNjYW4uCisgIFRoZSByb3cg aXMKKyAgcmUtc3VwcGxpZWQgYnkgdGhlIGZyZXNoIGVudHJ5IHRoYXQgdGhlIHNhbWUgdXBk YXRlIGluc2VydGVkIGZvciB0aGUgbmV3CisgIGtleS4KKworVGhpcyBpcyB3aGF0IG1ha2Vz IGRyb3BwaW5nIGEgc3RhbGUgZW50cnkgc2FmZTogdGhlIGxpdmUgcm93IGlzIGFsd2F5cwor cmVhY2hhYmxlIHRocm91Z2ggZXhhY3RseSBvbmUgbm9uLXN0YWxlIGVudHJ5IHBlciBpbmRl eC4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9ob3RfaW5kZXhlZC5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL2hvdF9pbmRleGVkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjZjZTQxNWM3MTUwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL2hvdF9pbmRleGVkLmgKQEAgLTAsMCArMSwxOTkgQEAKKy8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICoKKyAqIGhvdF9pbmRleGVkLmgKKyAqCSAgSW5saW5lLXRyYWls aW5nIG1vZGlmaWVkLWF0dHJpYnV0ZXMgYml0bWFwIGZvciBIT1QtaW5kZXhlZCAoSE9UL1NJ VSkKKyAqCSAgdHVwbGVzLgorICoKKyAqIEEgaGVhcCB0dXBsZSBwcm9kdWNlZCBieSBhIEhP VC1pbmRleGVkIFVQREFURSBoYXMgSEVBUF9JTkRFWEVEX1VQREFURUQgc2V0CisgKiBpbiB0 X2luZm9tYXNrMiBhbmQgY2FycmllcywgYXBwZW5kZWQgYWZ0ZXIgaXRzIG5vcm1hbCBhdHRy aWJ1dGUgZGF0YSwgYQorICogZml4ZWQtc2l6ZSBiaXRtYXAgcmVjb3JkaW5nIHdoaWNoIGhl YXAgYXR0cmlidXRlcyBjaGFuZ2VkIGF0IHRoaXMgY2hhaW4gaG9wCisgKiAocmVsYXRpdmUg dG8gdGhlIHByaW9yIGNoYWluIG1lbWJlcikuICBCaXQgKGF0dG51bSAtIDEpIGNvcnJlc3Bv bmRzIHRvIHVzZXIKKyAqIGF0dHJpYnV0ZSBhdHRudW0uCisgKgorICogVGhlIGJpdG1hcCBp cyBjZWlsKG5hdHRzIC8gOCkgYnl0ZXMsIHdoZXJlIG5hdHRzIGlzIHRoZSB0dXBsZSdzIG93 bgorICogYXR0cmlidXRlIGNvdW50IGF0IHRoZSB0aW1lIGl0IHdhcyB3cml0dGVuIChIZWFw VHVwbGVIZWFkZXJHZXROYXR0cyBmb3IgYQorICogbGl2ZSB0dXBsZTsgcHJlc2VydmVkIHNl cGFyYXRlbHkgZm9yIGEgc3R1Yiwgc2VlIGJlbG93KS4gIEl0cyBsZW5ndGggaXMgbm90Cisg KiBzdG9yZWQgYXMgc3VjaDsgaXQgb2NjdXBpZXMgdGhlIGZpbmFsIEhvdEluZGV4ZWRCaXRt YXBCeXRlcyhuYXR0cykgYnl0ZXMgb2YKKyAqIHRoZSBsaW5lIHBvaW50ZXIncyBpdGVtIGFu ZCBpcyBsb2NhdGVkIHZpYSBJdGVtSWRHZXRMZW5ndGgoKSwgcGFzdCB0aGUKKyAqIGF0dHJp YnV0ZSBkYXRhOiByb3V0aW5lcyB0aGF0IGRlZm9ybSB0aGUgdHVwbGUgc3RvcCBhdCBuYXR0 cyBhbmQgbmV2ZXIgc2VlCisgKiBpdC4KKyAqCisgKiBCZWNhdXNlIEFERCBDT0xVTU4gcmFp c2VzIHRoZSByZWxhdGlvbidzIG5hdHRzIHdpdGhvdXQgcmV3cml0aW5nIGV4aXN0aW5nCisg KiB0dXBsZXMsIGEgY2hhaW4gY2FuIGhvbGQgdHVwbGVzIHdob3NlIGJpdG1hcHMgd2VyZSBz aXplZCBmb3IgZGlmZmVyZW50CisgKiAoc21hbGxlcikgbmF0dHMgdGhhbiB0aGUgcmVsYXRp b24gaGFzIG5vdy4gIENvbnN1bWVycyB0aGVyZWZvcmUgc2l6ZSBhbmQKKyAqIGxvY2F0ZSBh IHR1cGxlJ3MgYml0bWFwIGZyb20gdGhhdCB0dXBsZSdzIE9XTiB3cml0ZS10aW1lIG5hdHRz CisgKiAoSG90SW5kZXhlZFR1cGxlQml0bWFwTmF0dHMpLCBuZXZlciBmcm9tIHRoZSByZWxh dGlvbidzIGN1cnJlbnQgbmF0dHMuCisgKiBCaXQgcG9zaXRpb25zIGFyZSBhdHRyaWJ1dGUg YmFzZWQgYW5kIGlkZW50aWNhbCBhY3Jvc3Mgc2l6ZXMsIHNvIGEgc21hbGxlcgorICogYml0 bWFwIHNpbXBseSBPUnMgaW50byB0aGUgbG93IGJ5dGVzIG9mIGEgbGFyZ2VyIGFjY3VtdWxh dG9yLgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI2LCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChj KSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisg KiBzcmMvaW5jbHVkZS9hY2Nlc3MvaG90X2luZGV4ZWQuaAorICoKKyAqLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICovCisjaWZuZGVmIEhPVF9JTkRFWEVEX0gKKyNkZWZpbmUgSE9UX0lOREVY RURfSAorCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUgImMu aCIKKworLyoKKyAqIE51bWJlciBvZiBieXRlcyBpbiB0aGUgdHJhaWxpbmcgbW9kaWZpZWQt YXR0cnMgYml0bWFwIGZvciBhIHJlbGF0aW9uIHdpdGgKKyAqIG5hdHRzIHVzZXIgYXR0cmli dXRlcyAob25lIGJpdCBwZXIgYXR0cmlidXRlLCBhdHRudW0gLSAxKS4KKyAqLworc3RhdGlj IGlubGluZSBTaXplCitIb3RJbmRleGVkQml0bWFwQnl0ZXMoaW50IG5hdHRzKQoreworCUFz c2VydChuYXR0cyA+PSAwKTsKKwlyZXR1cm4gKFNpemUpICgobmF0dHMgKyA3KSAvIDgpOwor fQorCisvKgorICogUmVhZC1vbmx5IHBvaW50ZXIgdG8gdGhlIHRyYWlsaW5nIG1vZGlmaWVk LWF0dHJzIGJpdG1hcCBvZiBhIEhPVC1pbmRleGVkCisgKiB0dXBsZS4gIGl0ZW1fbGVuIGlz IEl0ZW1JZEdldExlbmd0aCgpIG9mIHRoZSB0dXBsZSdzIGxpbmUgcG9pbnRlcjsgbmF0dHMg aXMKKyAqIHRoZSByZWxhdGlvbidzIG51bWJlciBvZiBhdHRyaWJ1dGVzLiAgVGhlIGNhbGxl ciBtdXN0IGhhdmUgdmVyaWZpZWQgdGhhdAorICogdGhlIHR1cGxlIGhhcyBIRUFQX0lOREVY RURfVVBEQVRFRCBzZXQuCisgKi8KK3N0YXRpYyBpbmxpbmUgY29uc3QgdWludDggKgorSG90 SW5kZXhlZEdldE1vZGlmaWVkQml0bWFwKGNvbnN0IEhlYXBUdXBsZUhlYWRlckRhdGEgKmh0 dXAsCisJCQkJCQkJU2l6ZSBpdGVtX2xlbiwgaW50IG5hdHRzKQoreworCXJldHVybiAoY29u c3QgdWludDggKikgKChjb25zdCBjaGFyICopIGh0dXAgKworCQkJCQkJCWl0ZW1fbGVuIC0g SG90SW5kZXhlZEJpdG1hcEJ5dGVzKG5hdHRzKSk7Cit9CisKKy8qIFdyaXRhYmxlIHZhcmlh bnQsIGZvciBPUi1pbmcgdGhlIHVuaW9uIG9udG8gYSBzdXJ2aXZpbmcgcmVkaXJlY3QgdGFy Z2V0LiAqLworc3RhdGljIGlubGluZSB1aW50OCAqCitIb3RJbmRleGVkR2V0TW9kaWZpZWRC aXRtYXBSVyhIZWFwVHVwbGVIZWFkZXJEYXRhICpodHVwLAorCQkJCQkJCSAgU2l6ZSBpdGVt X2xlbiwgaW50IG5hdHRzKQoreworCXJldHVybiAodWludDggKikgKChjaGFyICopIGh0dXAg KworCQkJCQkgIGl0ZW1fbGVuIC0gSG90SW5kZXhlZEJpdG1hcEJ5dGVzKG5hdHRzKSk7Cit9 CisKKy8qIFRydWUgaWYgdXNlciBhdHRyaWJ1dGUgYXR0bnVtICgxLWJhc2VkKSBpcyBzZXQg aW4gdGhlIGJpdG1hcC4gKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorSG90SW5kZXhlZEF0dHJJ c01vZGlmaWVkKGNvbnN0IHVpbnQ4ICpiaXRtYXAsIEF0dHJOdW1iZXIgYXR0bnVtKQorewor CWludAkJCWJpdCA9IGF0dG51bSAtIDE7CisKKwlBc3NlcnQoYXR0bnVtID49IDEpOworCXJl dHVybiAoYml0bWFwW2JpdCAvIDhdICYgKDEgPDwgKGJpdCAlIDgpKSkgIT0gMDsKK30KKwor LyogU2V0IHVzZXIgYXR0cmlidXRlIGF0dG51bSAoMS1iYXNlZCkgaW4gdGhlIGJpdG1hcC4g Ki8KK3N0YXRpYyBpbmxpbmUgdm9pZAorSG90SW5kZXhlZFNldEF0dHJNb2RpZmllZCh1aW50 OCAqYml0bWFwLCBBdHRyTnVtYmVyIGF0dG51bSkKK3sKKwlpbnQJCQliaXQgPSBhdHRudW0g LSAxOworCisJQXNzZXJ0KGF0dG51bSA+PSAxKTsKKwliaXRtYXBbYml0IC8gOF0gfD0gKHVp bnQ4KSAoMSA8PCAoYml0ICUgOCkpOworfQorCisvKiBPUiB0aGUgZmlyc3QgbmJ5dGVzIG9m IHNyYyBpbnRvIGRzdC4gIGRzdCBtdXN0IGJlIGF0IGxlYXN0IG5ieXRlcyBsb25nOyBpdAor ICogbWF5IGJlIGxvbmdlciAoc2l6ZWQgZm9yIGEgbGFyZ2VyIG5hdHRzKSAtLSBiaXQgcG9z aXRpb25zIGFyZSBhdHRyaWJ1dGUKKyAqIGJhc2VkIGFuZCBpZGVudGljYWwgYWNyb3NzIHNp emVzLCBzbyBPUi1pbmcgb25seSBzcmMncyBieXRlcyBpcyBjb3JyZWN0LiAqLworc3RhdGlj IGlubGluZSB2b2lkCitIb3RJbmRleGVkQml0bWFwVW5pb24odWludDggKmRzdCwgY29uc3Qg dWludDggKnNyYywgaW50IHNyY19uYXR0cykKK3sKKwlTaXplCQluYnl0ZXMgPSBIb3RJbmRl eGVkQml0bWFwQnl0ZXMoc3JjX25hdHRzKTsKKworCWZvciAoU2l6ZSBpID0gMDsgaSA8IG5i eXRlczsgaSsrKQorCQlkc3RbaV0gfD0gc3JjW2ldOworfQorCisvKgorICogSXMgZXZlcnkg Yml0IHNldCBpbiBzdWIgYWxzbyBzZXQgaW4gc3VwZXI/ICBzdWIgaXMgc2l6ZWQgZm9yIHN1 Yl9uYXR0czsKKyAqIHN1cGVyIG11c3QgYmUgYXQgbGVhc3QgdGhhdCBsb25nLiAgVXNlZCBi eSBwcnVuZSB0byBkZWNpZGUgYSBjb2xsYXBzZQorICogc3Vydml2b3IgaXMgcmVjbGFpbWFi bGU6IHdoZW4gdGhlIGF0dHJpYnV0ZXMgYSBkZWFkIG1lbWJlciBjaGFuZ2VkIGFyZSBhbGwK KyAqIGNoYW5nZWQgYWdhaW4gYnkgbGF0ZXIgaG9wcywgZXZlcnkgaW5kZXggZW50cnkgcG9p bnRpbmcgYXQgdGhhdCBtZW1iZXIgaXMKKyAqIHN1cGVyc2VkZWQgKHN0YWxlKSwgc28gaXQg Y2FycmllcyBubyBsaXZlIGVudHJ5LgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0hvdElu ZGV4ZWRCaXRtYXBJc1N1YnNldChjb25zdCB1aW50OCAqc3ViLCBjb25zdCB1aW50OCAqc3Vw ZXIsIGludCBzdWJfbmF0dHMpCit7CisJU2l6ZQkJbmJ5dGVzID0gSG90SW5kZXhlZEJpdG1h cEJ5dGVzKHN1Yl9uYXR0cyk7CisKKwlmb3IgKFNpemUgaSA9IDA7IGkgPCBuYnl0ZXM7IGkr KykKKwkJaWYgKChzdWJbaV0gJiB+c3VwZXJbaV0pICE9IDApCisJCQlyZXR1cm4gZmFsc2U7 CisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBTdHViIGxpbmUgcG9pbnRlcnMgKGNvbGxh cHNlIHN1cnZpdm9ycykuCisgKgorICogV2hlbiBwcnVuZSBjb2xsYXBzZXMgYSBkZWFkIEhP VC1pbmRleGVkIGNoYWluIGl0IGNhbm5vdCBrZWVwIHRoZSBkZWFkIGtleQorICogdHVwbGVz IGFzIGxpdmUgZGF0YS1iZWFyaW5nIHR1cGxlcyAodGhlaXIgWElEcyB3b3VsZCBob2xkIGJh Y2sKKyAqIHJlbGZyb3plbnhpZCkuICBFYWNoIHByZXNlcnZlZCBkZWFkIGtleSB0dXBsZSBp cyBpbnN0ZWFkIGNvbnZlcnRlZCB0byBhbgorICogeGlkLWZyZWUgInN0dWIiOiBhbiBMUF9O T1JNQUwgaXRlbSB3aG9zZSBIZWFwVHVwbGVIZWFkZXIgaXMgZnJvemVuIGFuZAorICogbWFy a2VkIG5vdC1hLXJlYWwtdHVwbGUgKEhFQVBfSU5ERVhFRF9VUERBVEVEIHNldCwgSGVhcFR1 cGxlSGVhZGVyR2V0TmF0dHMKKyAqID09IDApLCB3aG9zZSB0X2N0aWQub2ZmbnVtIGZvcndh cmRzIHRvIHRoZSBuZXh0IGtleSB0dXBsZSBvbiB0aGUgcGFnZSwgYW5kCisgKiB3aG9zZSBw YXlsb2FkIGlzIHRoZSBtb2RpZmllZC1hdHRycyBiaXRtYXAgZm9yIHRoZSBzZWdtZW50IGl0 IHJlcHJlc2VudHMgLS0KKyAqIGxvY2F0ZWQsIGxpa2UgYSBsaXZlIHR1cGxlJ3MgaW5saW5l IGJpdG1hcCwgaW4gdGhlIGZpbmFsCisgKiBIb3RJbmRleGVkQml0bWFwQnl0ZXMobmF0dHMp IGJ5dGVzIG9mIHRoZSBpdGVtLCBzbyB0aGUgc2FtZSBhY2Nlc3NvcnMgd29yaworICogZm9y IGJvdGguICBCZWNhdXNlIHRoZSBuYXR0cyBmaWVsZCBpcyBvdmVyd3JpdHRlbiB3aXRoIHRo ZSAwIHNlbnRpbmVsLCB0aGUKKyAqIHN0dWIncyB3cml0ZS10aW1lIG5hdHRzIChuZWVkZWQg dG8gc2l6ZS9sb2NhdGUgdGhhdCBiaXRtYXApIGlzIHByZXNlcnZlZCBpbgorICogdGhlIG90 aGVyd2lzZS11bnVzZWQgYmxvY2stbnVtYmVyIGhhbGYgb2YgdF9jdGlkOyBIb3RJbmRleGVk U3R1YkdldEZvcndhcmQKKyAqIHJlYWRzIG9ubHkgdGhlIG9mZnNldCBoYWxmLgorICoKKyAq IEEgc3R1YiBpcyBzaWduYXR1cmUtc2tpcHBlZCAobm90IHZpc2liaWxpdHktc2tpcHBlZCkg YnkgZXZlcnkgY29uc3VtZXIgdGhhdAorICogd2Fsa3MgTFBfTk9STUFMIGl0ZW1zLgorICov CitzdGF0aWMgaW5saW5lIGJvb2wKK0hvdEluZGV4ZWRIZWFkZXJJc1N0dWIoY29uc3QgSGVh cFR1cGxlSGVhZGVyRGF0YSAqdHVwKQoreworCXJldHVybiAodHVwLT50X2luZm9tYXNrMiAm IEhFQVBfSU5ERVhFRF9VUERBVEVEKSAhPSAwICYmCisJCUhlYXBUdXBsZUhlYWRlckdldE5h dHRzKHR1cCkgPT0gMDsKK30KKworLyogT2Zmc2V0IG9mIHRoZSBuZXh0IGtleSB0dXBsZSB0 aGlzIHN0dWIgZm9yd2FyZHMgdG8gKHNhbWUgcGFnZSkuICovCitzdGF0aWMgaW5saW5lIE9m ZnNldE51bWJlcgorSG90SW5kZXhlZFN0dWJHZXRGb3J3YXJkKGNvbnN0IEhlYXBUdXBsZUhl YWRlckRhdGEgKnR1cCkKK3sKKwlyZXR1cm4gSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXJO b0NoZWNrKCZ0dXAtPnRfY3RpZCk7Cit9CisKKy8qCisgKiBCaXRtYXAgc2l6aW5nIGFjcm9z cyB0aGUgcmVsYXRpb24ncyBsaWZldGltZS4KKyAqCisgKiBUaGUgdHJhaWxpbmcgYml0bWFw IGlzIGNlaWwobmF0dHMgLyA4KSBieXRlcywgd2hlcmUgbmF0dHMgaXMgdGhlIHJlbGF0aW9u J3MKKyAqIGF0dHJpYnV0ZSBjb3VudCAqYXQgdGhlIHRpbWUgdGhlIHR1cGxlIHdhcyB3cml0 dGVuKi4gIEFERCBDT0xVTU4gcmFpc2VzIHRoZQorICogcmVsYXRpb24ncyBuYXR0cyB3aXRo b3V0IHJld3JpdGluZyBleGlzdGluZyB0dXBsZXMsIHNvIGEgY2hhaW4gY2FuIGhvbGQKKyAq IHR1cGxlcyB3aG9zZSBiaXRtYXBzIHdlcmUgc2l6ZWQgZm9yIGRpZmZlcmVudCAoc21hbGxl cikgbmF0dHMgdGhhbiB0aGUKKyAqIHJlbGF0aW9uIGhhcyBub3cuICBFdmVyeSBjb25zdW1l ciBtdXN0IHRoZXJlZm9yZSBzaXplIGFuZCBsb2NhdGUgYSB0dXBsZSdzCisgKiBiaXRtYXAg ZnJvbSB0aGF0IHR1cGxlJ3Mgb3duIHdyaXRlLXRpbWUgbmF0dHMsIG5ldmVyIGZyb20gdGhl IHJlbGF0aW9uJ3MKKyAqIGN1cnJlbnQgbmF0dHMuCisgKgorICogRm9yIGEgbGl2ZSBIT1Qt aW5kZXhlZCB0dXBsZSB0aGUgd3JpdGUtdGltZSBuYXR0cyBpcyBIZWFwVHVwbGVIZWFkZXJH ZXROYXR0cworICogKGEgZnJlc2hseSBmb3JtZWQgVVBEQVRFIHR1cGxlIHN0b3JlcyB0aGUg ZnVsbCByZWxhdGlvbiBuYXR0cywgd2hpY2ggaXMgd2hhdAorICogaGVhcF9mb3JtX2hvdF9p bmRleGVkX3R1cGxlIHNpemVkIHRoZSBiaXRtYXAgd2l0aCkuICBBIHN0dWIgb3ZlcndyaXRl cyBuYXR0cworICogd2l0aCAwIGFzIGl0cyBzZW50aW5lbCwgc28gaXQgcHJlc2VydmVzIGl0 cyB3cml0ZS10aW1lIG5hdHRzIGluIHRoZSB1bnVzZWQKKyAqIGJsb2NrLW51bWJlciBoYWxm IG9mIHRfY3RpZCBpbnN0ZWFkICh0aGUgb2Zmc2V0IGhhbGYgaG9sZHMgdGhlIGZvcndhcmQK KyAqIGxpbmspLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK0hvdEluZGV4ZWRTdHViU2V0 Qml0bWFwTmF0dHMoSGVhcFR1cGxlSGVhZGVyRGF0YSAqdHVwLCBpbnQgbmF0dHMpCit7CisJ QmxvY2tJZFNldCgmdHVwLT50X2N0aWQuaXBfYmxraWQsIChCbG9ja051bWJlcikgbmF0dHMp OworfQorCitzdGF0aWMgaW5saW5lIGludAorSG90SW5kZXhlZFN0dWJHZXRCaXRtYXBOYXR0 cyhjb25zdCBIZWFwVHVwbGVIZWFkZXJEYXRhICp0dXApCit7CisJcmV0dXJuIChpbnQpIEJs b2NrSWRHZXRCbG9ja051bWJlcigmdHVwLT50X2N0aWQuaXBfYmxraWQpOworfQorCisvKiBX cml0ZS10aW1lIG5hdHRzIG9mIGFueSBIT1QtaW5kZXhlZCBpdGVtIChsaXZlIHR1cGxlIG9y IHN0dWIpLiAqLworc3RhdGljIGlubGluZSBpbnQKK0hvdEluZGV4ZWRUdXBsZUJpdG1hcE5h dHRzKGNvbnN0IEhlYXBUdXBsZUhlYWRlckRhdGEgKnR1cCkKK3sKKwlpZiAoSG90SW5kZXhl ZEhlYWRlcklzU3R1Yih0dXApKQorCQlyZXR1cm4gSG90SW5kZXhlZFN0dWJHZXRCaXRtYXBO YXR0cyh0dXApOworCXJldHVybiBIZWFwVHVwbGVIZWFkZXJHZXROYXR0cyh0dXApOworfQor CisjZW5kaWYJCQkJCQkJLyogSE9UX0lOREVYRURfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2h0dXBfZGV0YWlscy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2h0dXBf ZGV0YWlscy5oCmluZGV4IDc3YTZjNDhmZDcxLi43ZWI3Zjg2ZjVlZCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvYWNjZXNzL2h0dXBfZGV0YWlscy5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9odHVwX2RldGFpbHMuaApAQCAtMjg5LDcgKzI4OSwxMyBAQCBIRUFQX1hNQVhfSVNf S0VZU0hSX0xPQ0tFRCh1aW50MTYgaW5mb21hc2spCiAgKiBpbmZvcm1hdGlvbiBzdG9yZWQg aW4gdF9pbmZvbWFzazI6CiAgKi8KICNkZWZpbmUgSEVBUF9OQVRUU19NQVNLCQkJMHgwN0ZG CS8qIDExIGJpdHMgZm9yIG51bWJlciBvZiBhdHRyaWJ1dGVzICovCi0vKiBiaXRzIDB4MTgw MCBhcmUgYXZhaWxhYmxlICovCisjZGVmaW5lIEhFQVBfSU5ERVhFRF9VUERBVEVECTB4MDgw MAkvKiBIT1QgdHVwbGUgcHJvZHVjZWQgYnkgYW4gVVBEQVRFCisJCQkJCQkJCQkJICogdGhh dCBhbHNvIGNoYW5nZWQgYW4gaW5kZXhlZAorCQkJCQkJCQkJCSAqIGF0dHJpYnV0ZSAoSE9U L1NJVSk7IGluZGV4IHNjYW5zCisJCQkJCQkJCQkJICogdGhhdCByZWFjaCBpdCB2aWEgYSBj aGFpbiByZWNoZWNrCisJCQkJCQkJCQkJICogdGhlIGFycml2aW5nIGxlYWYga2V5IGFnYWlu c3QgdGhlCisJCQkJCQkJCQkJICogbGl2ZSB0dXBsZS4gKi8KKy8qIGJpdCAweDEwMDAgaXMg YXZhaWxhYmxlICovCiAjZGVmaW5lIEhFQVBfS0VZU19VUERBVEVECQkweDIwMDAJLyogdHVw bGUgd2FzIHVwZGF0ZWQgYW5kIGtleSBjb2xzCiAJCQkJCQkJCQkJICogbW9kaWZpZWQsIG9y IHR1cGxlIGRlbGV0ZWQgKi8KICNkZWZpbmUgSEVBUF9IT1RfVVBEQVRFRAkJMHg0MDAwCS8q IHR1cGxlIHdhcyBIT1QtdXBkYXRlZCAqLwotLSAKMi41MC4xCgo= --732d2653398ad274b1166a00220a1f2b85c8ed8b Content-Disposition: attachment; filename*0="v49-0004-Add-HOT-indexed-updates-selective-index-maintena.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v49-0004-Add-HOT-indexed-updates-selective-index-maintena.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSAzM2RmYzMzNzc0MzhmM2M2OTY4YmIxNzBmMTU4YjdhYzIwMWFlN2Y0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAxNzozNToxNyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjQ5IDQv OV0gQWRkIEhPVC1pbmRleGVkIHVwZGF0ZXM6IHNlbGVjdGl2ZSBpbmRleCBtYWludGVuYW5j ZQogYW5kIHJlYWRzCgpJbXBsZW1lbnQgdGhlIEhPVC1pbmRleGVkIChTZWxlY3RpdmUgSW5k ZXggVXBkYXRlKSBmZWF0dXJlIG9uIHRoZSBmb3VuZGF0aW9uCmxhaWQgYnkgdGhlIGV4ZWN1 dG9yJ3MgbW9kaWZpZWQtYXR0cmlidXRlIGlkZW50aWZpY2F0aW9uLgoKRWxpZ2liaWxpdHk6 IEhlYXBVcGRhdGVIb3RBbGxvd2FibGUgcmV0dXJucyBhIEhlYXBVcGRhdGVJbmRleE1vZGUg LS0KSEVBUF9VUERBVEVfQUxMX0lOREVYRVMgKG5vdCBIT1Q7IGV2ZXJ5IGluZGV4IG5lZWRz IGFuIGVudHJ5KSwgSEVBUF9VUERBVEVfSE9UCihjbGFzc2ljIEhPVDsgbm8gaW5kZXggbmVl ZHMgYW4gZW50cnkpLCBvciBIRUFQX1NFTEVDVElWRV9JTkRFWF9VUERBVEUgKEhPVApjaGFp biwgb25seSB0aGUgY2hhbmdlZCBpbmRleGVzIG1haW50YWluZWQpIC0tIGNvbXB1dGVkIGZy b20gbW9kaWZpZWRfaWR4X2F0dHJzCmFuZCB0aGUgcGVyLXJlbGF0aW9uIGluZGV4ZWQtYXR0 cmlidXRlIHNldCAoUmVsYXRpb25HZXRJbmRleGVkQXR0cnMpLiAgQW4KVVBEQVRFIHRoYXQg Y2hhbmdlcyBhIG5vbi1zdW1tYXJpemluZyBpbmRleGVkIGF0dHJpYnV0ZSBpcwpIRUFQX1NF TEVDVElWRV9JTkRFWF9VUERBVEUgdW5sZXNzIGl0IGlzIGZvcmNlZCB0byBIRUFQX1VQREFU RV9BTExfSU5ERVhFUyBieQpvbmUgb2Y6IGV2ZXJ5IGluZGV4ZWQgYXR0cmlidXRlIGNoYW5n ZWQgKG5vdGhpbmcgdG8gc2tpcCksIGFuIGF0dHJpYnV0ZQpyZWZlcmVuY2VkIGJ5IGFuIGV4 cHJlc3Npb24gaW5kZXggY2hhbmdlZCAoZXhwcmVzc2lvbi1hd2FyZSBtYWludGVuYW5jZSBp cyBub3QKaW1wbGVtZW50ZWQgeWV0KSwgYSBzeXN0ZW0gY2F0YWxvZywgb3IgdGhlIGxvZ2lj YWwtcmVwbGljYXRpb24gYXBwbHkgZ2F0ZSAoc2VlCnRoZSBhcHBseS1nYXRpbmcgY29tbWl0 KS4gIFBhcnRpYWwgaW5kZXhlcywgZXhjbHVzaW9uIGNvbnN0cmFpbnRzLCBwYXJ0aXRpb25l ZAp0YWJsZXMsIGFuZCBub24tYnRyZWUgYWNjZXNzIG1ldGhvZHMgYXJlIGFsbCBlbGlnaWJs ZSAtLSB0aGUgcmVhZCBwYXRoIGlzCmFjY2Vzcy1tZXRob2QgYWdub3N0aWMgYW5kIHRoZSBw cmVkaWNhdGUgY29sdW1uIGlzIHBhcnQgb2YgdGhlIGluZGV4J3MKYXR0cmlidXRlIHNldCwg c28gbm8gY2FydmUtb3V0IGlzIG5lZWRlZCBmb3IgdGhlbS4KCldyaXRlIHBhdGg6IHRoZSB0 YWJsZS1BTSB1cGRhdGUgY29udHJhY3QgY2FycmllcyBtb2RpZmllZCBhdHRyaWJ1dGVzIElO L09VVCBhcwphIEJpdG1hcHNldCAob24gb3V0cHV0IHRoZSBBTSBhZGRzIHRoZSB3aG9sZS1y b3cgc2VudGluZWwsClRhYmxlVHVwbGVVcGRhdGVBbGxJbmRleGVzLCB0byBzaWduYWwgImV2 ZXJ5IGluZGV4IG5lZWRzIGFuIGVudHJ5IiksIGFuZApoZWFwX3VwZGF0ZSwgZm9yIEhFQVBf U0VMRUNUSVZFX0lOREVYX1VQREFURSwga2VlcHMgdGhlIG5ldyB2ZXJzaW9uIG9uIHRoZSBI T1QKY2hhaW4gd2hpbGUgRXhlY0luc2VydEluZGV4VHVwbGVzIG1haW50YWlucyBvbmx5IHRo ZSBpbmRleGVzIHdob3NlIGF0dHJpYnV0ZXMKY2hhbmdlZC4gIFRoZSBuZXcgaGVhcC1vbmx5 IHR1cGxlIHJlY29yZHMsIGluIGFuIGlubGluZSBiaXRtYXAgaW4gaXRzIHRhaWwsIHRoZQph dHRyaWJ1dGVzIHRoYXQgY2hhbmdlZCBhdCBpdHMgaG9wLiAgT25seSB0aGUgc3RvcmVkIHR1 cGxlIGNhcnJpZXMgdGhlIGJpdG1hcAphbmQgdGhlIEhFQVBfSU5ERVhFRF9VUERBVEVEIGZs YWc7IHRoZSBjYWxsZXIncyBpbi1tZW1vcnkgY29weSBpcyBsZWZ0IHVubWFya2VkCnNvIHRo ZSBmbGFnIG5ldmVyIHByb21pc2VzIGEgdHJhaWxpbmcgYml0bWFwIHRoYXQgaXMgbm90IHBy ZXNlbnQuCgpSZWFkIHBhdGg6IGEgY2hhaW4gd2FsayB0byB0aGUgbGl2ZSB0dXBsZSB1bmlv bnMgdGhlIG1vZGlmaWVkLWF0dHJpYnV0ZQpiaXRtYXBzIG9mIGV2ZXJ5IGhvcCBpdCBjcm9z c2VzLiAgVGhlIGluZGV4LWFjY2VzcyBsYXllciB0cmVhdHMgdGhhdApjcm9zc2VkLWF0dHJp YnV0ZSBiaXRtYXAgYXMgdGhlIHN0YWxlbmVzcyBhdXRob3JpdHk6IGlmIGl0IG92ZXJsYXBz IHRoZQphcnJpdmluZyBpbmRleCdzIGtleSBjb2x1bW5zIHRoZSBlbnRyeSBpcyBzdGFsZSBh bmQgaXMgZHJvcHBlZCwgYW5kIHRoZSByb3cgaXMKcmUtc3VwcGxpZWQgYnkgdGhlIGZyZXNo IGVudHJ5IHRoZSBzYW1lIHVwZGF0ZSBwbGFudGVkLiAgVGhlIHJlYWQgcGF0aCBpcwphY2Nl c3MtbWV0aG9kIGFnbm9zdGljIGFuZCBuZWVkcyBubyB2YWx1ZSByZWNoZWNrIG9yIGxlYWYg a2V5OiBpdCBpcyBjb3JyZWN0CmV2ZW4gd2hlbiBhIGtleSBpcyBjeWNsZWQgYXdheSBhbmQg YmFjaywgYmVjYXVzZSB0aGUgdmFsdWUtcmVzdG9yaW5nIHVwZGF0ZQpwbGFudGVkIGEgZnJl c2ggZW50cnkgd2hvc2Ugd2FsayBjcm9zc2VzIG5vIGxhdGVyIGtleS1jaGFuZ2luZyBob3Au CgpVbmlxdWUgY2hlY2tzIGFyZSB0aGUgb25lIHBsYWNlIHRoYXQgZG9lcyBjb21wYXJlIHZh bHVlczogX2J0X2NoZWNrX3VuaXF1ZQpmZXRjaGVzIHRoZSBjb25mbGljdGluZyB0dXBsZSB1 bmRlciBTbmFwc2hvdERpcnR5IGFuZCwgb24gYSBjcm9zc2VkLWhvcAphcnJpdmFsLCBjb21w YXJlcyB0aGUgbGl2ZSB0dXBsZSdzIGN1cnJlbnQga2V5IGFnYWluc3QgdGhlIGFycml2aW5n IGxlYWYgd2l0aAp0aGUgaW5kZXgncyBvd24gb3JkZXJpbmcgcHJvY2VkdXJlIChfYnRfaGVh cF9rZXlzX2VxdWFsX2xlYWYsIEJUT1JERVJfUFJPQwp1bmRlciBlYWNoIGNvbHVtbidzIGNv bGxhdGlvbikuICBVc2luZyB0aGUgb3BjbGFzcyBjb21wYXJhdG9yIC0tIG5vdCBhIGJpdHdp c2UKaW1hZ2UgY29tcGFyaXNvbiAtLSBkaXN0aW5ndWlzaGVzIGEgc3RhbGUgYW5jZXN0b3Ig bGVhZiBmcm9tIGEgZ2VudWluZWx5IGxpdmUKZHVwbGljYXRlIChlcXVhbCB1bmRlciB0aGUg b3BjbGFzcyBldmVuIGlmIG5vdCBiaXR3aXNlLWlkZW50aWNhbCkgYW5kLCBpbiB0aGUKaW4t ZmxpZ2h0IHdpbmRvdyBvZiBhIHJlc3RvcmluZyB1cGRhdGUsIHJvdXRlcyB0aGUgc3RhbGUt YW5jZXN0b3IgaGl0IGludG8KX2J0X2RvaW5zZXJ0J3MgeHdhaXQgc28gdGhlIGR1cGxpY2F0 ZSBpcyBzdGlsbCBjYXVnaHQuICBUaGUgY29tcGFyaXNvbiByZWFkcwpwbGFpbiBrZXkgY29s dW1ucyBzdHJhaWdodCBmcm9tIHRoZSBoZWFwIHNsb3Q7IGl0IG5ldmVyIGV2YWx1YXRlcyBh biBpbmRleGVkCmV4cHJlc3Npb24sIGJlY2F1c2UgYW4gVVBEQVRFIHRvdWNoaW5nIGFuIGV4 cHJlc3Npb24taW5kZXggYXR0cmlidXRlIGlzCmluZWxpZ2libGUgZm9yIEhPVC1pbmRleGVk LCBzbyBhbiBleHByZXNzaW9uIGluZGV4IGlzIG5ldmVyIHRoZSBvbmUgcmVjZWl2aW5nCnRo ZSBmcmVzaCBlbnRyeSB3aG9zZSBpbnNlcnQgcnVucyB0aGlzIGNoZWNrLgoKQ28tYXV0aG9y ZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgpDby1hdXRob3JlZC1ieTogTmF0aGFu IEJvc3NhcnQgPG5hdGhhbmRib3NzYXJ0QGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9SRUFETUUuSE9UICAgICAgICAgICB8ICAzNCArCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQgICB8IDMwNiArKysrKysrKwogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICAgICAgfCA0NjkgKysrKysrKyst LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgICAgIHwgMTg5 ICsrKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faW5kZXhzY2FuLmMgICB8 IDE3MyArKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgICAgICAgICAg ICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYyAgICAgICAg ICAgfCAgOTkgKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGluc2VydC5jICAg ICAgICB8IDE2OCArKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jICAg ICAgICAgICB8ICAxMyArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyAg ICAgICAgICAgfCAgMjQgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXhpbmcuYyAgICAg ICAgICAgICAgIHwgIDY3ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL3RvYXN0aW5nLmMgICAg ICAgICAgICAgICB8ICAgMiAtCiBzcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2suYyAgICAg ICAgICAgICAgICB8ICAyNiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5n LmMgICAgICAgICAgfCAzMjcgKysrKy0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNS ZXBsaWNhdGlvbi5jICAgICAgIHwgIDM4ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5kZXhvbmx5c2Nhbi5jICAgICB8ICAzMyArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5kZXhzY2FuLmMgICAgICAgICB8ICAxNSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TW9kaWZ5VGFibGUuYyAgICAgICB8ICA3MyArLQogc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1 bmNzLmMgICAgICAgICAgICAgICAgfCAgIDIgLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvcGdzdGF0X3JlbGF0aW9uLmMgfCAgMjEgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3JlbGNhY2hlLmMgICAgICAgICAgIHwgMjE5ICsrKysrLQogc3JjL2luY2x1ZGUvYWNjZXNz L2FtYXBpLmggICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW0uaCAgICAgICAgICAgICAgICAgIHwgIDQ4ICstCiBzcmMvaW5jbHVkZS9hY2Nl c3MvcmVsc2Nhbi5oICAgICAgICAgICAgICAgICB8ICA2MCArKwogc3JjL2luY2x1ZGUvYWNj ZXNzL3RhYmxlYW0uaCAgICAgICAgICAgICAgICAgfCAgNzEgKy0KIHNyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWN1dG9yLmggICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAxMCArLQogc3JjL2luY2x1ZGUv cGdzdGF0LmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgMzEgKy0KIHNyYy9pbmNsdWRl L3V0aWxzL3JlbC5oICAgICAgICAgICAgICAgICAgICAgIHwgIDExICsKIHNyYy9pbmNsdWRl L3V0aWxzL3JlbGNhY2hlLmggICAgICAgICAgICAgICAgIHwgIDE3ICsKIHNyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvaG90X3VwZGF0ZXMub3V0ICAgIHwgNzcxICsrKysrKystLS0tLS0t LS0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hvdF91cGRhdGVzLnNxbCAgICAgICAgIHwg NjAzICsrKysrLS0tLS0tLS0tLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3Qg ICAgICAgICAgICAgfCAgIDIgKy0KIDMzIGZpbGVzIGNoYW5nZWQsIDI1NTcgaW5zZXJ0aW9u cygrKSwgMTM3NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9SRUFETUUuSE9UIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhP VAppbmRleCA3NGU0MDdmMzc1YS4uNzEyMzY1NjE3M2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvUkVBRE1FLkhPVApAQCAtMTU2LDYgKzE1Niw0MCBAQCBhbGwgc3VtbWFyaXppbmcgaW5k ZXhlcy4gIChSZWFsaXN0aWNhbGx5LCB3ZSBvbmx5IG5lZWQgdG8gcHJvcGFnYXRlIHRoZQog dXBkYXRlIHRvIHRoZSBpbmRleGVzIHRoYXQgY29udGFpbiB0aGUgdXBkYXRlZCB2YWx1ZXMs IGJ1dCB0aGF0IGlzIHlldCB0bwogYmUgaW1wbGVtZW50ZWQuKQogCisKK1Blci1JbmRleCBV cGRhdGUgVHJhY2tpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWZ0ZXIgdGhl IHRhYmxlIEFNIHBlcmZvcm1zIHRoZSB1cGRhdGUsIHRoZSBleGVjdXRvciBkZXRlcm1pbmVz IHdoaWNoCitpbmRleGVzIG5lZWQgbmV3IGVudHJpZXMgdXNpbmcgcGVyLWluZGV4IHRyYWNr aW5nLgorCitUaGUgdGFibGUgQU0gY29tbXVuaWNhdGVzIHdoZXRoZXIgYSBIT1QgdXBkYXRl IG9jY3VycmVkIHZpYSB0aGUKK3VwZGF0ZV9hbGxfaW5kZXhlcyBib29sZWFuIG91dHB1dCBv ZiB0YWJsZV90dXBsZV91cGRhdGUoKSwgdG9nZXRoZXIgd2l0aCB0aGUKK21vZGlmaWVkLWF0 dHJzIEJpdG1hcHNldCB0aGUgY2FsbGVyIHBhc3NlZCBpbiAoYXR0cmlidXRlIG51bWJlcnMg ZW5jb2RlZCB3aXRoCitGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKS4gIFdo ZW4gdXBkYXRlX2FsbF9pbmRleGVzIGlzIHRydWUgdGhlCit1cGRhdGUgd2FzIG5vbi1IT1Qg YW5kIGV2ZXJ5IGluZGV4IHJlcXVpcmVzIGEgbmV3IGVudHJ5ICh0aGUgdHVwbGUgaGFzIGEg bmV3CitUSUQpLiAgV2hlbiBmYWxzZSB0aGUgdXBkYXRlIHdhcyBIT1Q6IHRoZSBjYWxsZXIg Y29uc3VsdHMgbW9kaWZpZWRfYXR0cnMgd2l0aAorZWFjaCBpbmRleCdzIG93biBhdHRyaWJ1 dGVzIHRvIGluc2VydCBlbnRyaWVzIG9ubHkgaW50byB0aGUgaW5kZXhlcyB3aG9zZSBrZXkK K2F0dHJpYnV0ZXMgY2hhbmdlZCAoYSBIT1QtaW5kZXhlZCB1cGRhdGUpIG9yIG9ubHkgdGhl IHN1bW1hcml6aW5nIGluZGV4ZXMgKGEKK2NsYXNzaWMgSE9UIHVwZGF0ZSB0aGF0IGNoYW5n ZWQgYSBzdW1tYXJpemVkIGNvbHVtbiksIGFuZCBza2lwcyB0aGUgcmVzdC4KKworVGhlIGV4 ZWN1dG9yIHRoZW4gY2FsbHMgRXhlY1NldEluZGV4VW5jaGFuZ2VkKCkgdG8gcG9wdWxhdGUg dGhlIHBlci1pbmRleAoraWlfSW5kZXhVbmNoYW5nZWQgZmxhZyBvbiBlYWNoIEluZGV4SW5m by4gIFRoaXMgZmxhZyBpbmRpY2F0ZXMgd2hldGhlciBlYWNoCitpbmRleCdzIGtleSB2YWx1 ZXMgYXJlIHVuY2hhbmdlZCBieSB0aGUgdXBkYXRlLiAgRm9yIG5vbi1IT1QgdXBkYXRlcwor dGhlIGZsYWcgaXMgY2xlYXJlZCBvbiBldmVyeSBpbmRleCwgc28gZWFjaCBnZXRzIGEgZnJl c2ggZW50cnkgYXQgdGhlCituZXcgVElEOyB0aGUgZmxhZyBpcyBuZXZlciBhIHNraXAgb24g aXRzIG93biwganVzdCBhIGhpbnQgdG8gdGhlCitpbmRleCBBTSdzIGFtaW5zZXJ0IGZvciBv cHRpbWl6YXRpb25zIHN1Y2ggYXMgYm90dG9tLXVwIGRlbGV0aW9uIG9mCitsb2dpY2FsbHkg ZXF1aXZhbGVudCBkdXBsaWNhdGUgZW50cmllcy4KKworRXhlY0luc2VydEluZGV4VHVwbGVz IGNvbnN1bHRzIGlpX0luZGV4VW5jaGFuZ2VkIHRvIGRlY2lkZSB3aGV0aGVyIHRvCitza2lw IGEgbm9uLXN1bW1hcml6aW5nIGluZGV4IGR1cmluZyBhbiBVUERBVEU6IGlmIHRoZSBpbmRl eCBpcyBtYXJrZWQKK3VuY2hhbmdlZCwgdGhlIEhPVCBjaGFpbiByb290J3MgZXhpc3Rpbmcg ZW50cnkgc3RpbGwgcG9pbnRzIGF0IHRoZQordHVwbGUsIHNvIG5vIG5ldyBlbnRyeSBpcyBu ZWVkZWQuICBGb3Igbm9uLUhPVCB1cGRhdGVzIHRoZSBUSUQKK2NoYW5nZWQgYW5kIEV4ZWNT ZXRJbmRleFVuY2hhbmdlZCBtYXJrcyBldmVyeSBpbmRleCBhcyBjaGFuZ2VkLAorZm9yY2lu ZyBlYWNoIHRvIHJlY2VpdmUgYSBuZXcgZW50cnkuICBTdW1tYXJpemluZyBpbmRleGVzIGFs d2F5cyBnZXQKK3RoZSBvcHBvcnR1bml0eSB0byB1cGRhdGUgdGhlaXIgYmxvY2stbGV2ZWwg c3VtbWFyaWVzLgorCisKIEFib3J0IENhc2VzCiAtLS0tLS0tLS0tLQogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQKaW5kZXggNGI3MDFlNDI1ODYu LjVkNGEyYzdkNjZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFE TUUuSE9ULUlOREVYRUQKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhP VC1JTkRFWEVECkBAIC01NCwzICs1NCwzMDkgQEAgVGhlIEhPVC1pbmRleGVkIGludmFyaWFu dCAodGhlIG5ldyBjb250cmFjdCkKIAogVGhpcyBpcyB3aGF0IG1ha2VzIGRyb3BwaW5nIGEg c3RhbGUgZW50cnkgc2FmZTogdGhlIGxpdmUgcm93IGlzIGFsd2F5cwogcmVhY2hhYmxlIHRo cm91Z2ggZXhhY3RseSBvbmUgbm9uLXN0YWxlIGVudHJ5IHBlciBpbmRleC4KKworCitFbGln aWJpbGl0eTogSGVhcFVwZGF0ZUhvdEFsbG93YWJsZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKworVGhlIGV4ZWN1dG9yIGNvbXB1dGVzIG1vZGlmaWVkX2lkeF9h dHRycyAodGhlIGluZGV4ZWQgYXR0cmlidXRlcyB0aGlzIFVQREFURQorY2hhbmdlZCwgYXR0 cmlidXRlIG51bWJlcnMgb2Zmc2V0IGJ5IEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVO dW1iZXIpIGFuZAorcGFzc2VzIGl0IHRvIGhlYXBfdXBkYXRlIHZpYSB0YWJsZV90dXBsZV91 cGRhdGUuICBIZWFwVXBkYXRlSG90QWxsb3dhYmxlCitjbGFzc2lmaWVzIHRoZSB1cGRhdGU6 CisKKyAgSEVBUF9VUERBVEVfQUxMX0lOREVYRVMKKyAgICAgICAgSE9UIGlzIG5vdCBwZXJt aXR0ZWQ7IHRoZSBuZXcgdHVwbGUgZ29lcyBvbiBhIGZyZXNoIFRJRCBhbmQgZXZlcnkKKyAg ICAgICAgaW5kZXggZ2V0cyBhIG5ldyBlbnRyeS4KKyAgSEVBUF9IRUFQX09OTFlfVVBEQVRF CisgICAgICAgIG5vIG5vbi1zdW1tYXJpemluZyBpbmRleGVkIGF0dHJpYnV0ZSBjaGFuZ2Vk LCBzbyBubyBpbmRleCBuZWVkcyBhCisgICAgICAgIG5ldyBlbnRyeSAoY2xhc3NpYyBIT1Qp LgorICBIRUFQX1NFTEVDVElWRV9JTkRFWF9VUERBVEUKKyAgICAgICAgYXQgbGVhc3Qgb25l IG5vbi1zdW1tYXJpemluZyBpbmRleCdzIGF0dHJpYnV0ZSBjaGFuZ2VkLCBidXQgdGhlCisg ICAgICAgIHVwZGF0ZSBtYXkgc3RheSBvbiB0aGUgSE9UIGNoYWluIGFuZCBtYWludGFpbiBv bmx5IHRoZSBjaGFuZ2VkCisgICAgICAgIGluZGV4ZXMgc2VsZWN0aXZlbHkuCisKK0Egbm9u LXN1bW1hcml6aW5nIGluZGV4ZWQgYXR0cmlidXRlIGNoYW5naW5nIHlpZWxkcyBIRUFQX1NF TEVDVElWRV9JTkRFWF9VUERBVEUKK3VubGVzcyBvbmUgb2YgdGhlc2UgZm9yY2VzIEhFQVBf VVBEQVRFX0FMTF9JTkRFWEVTOgorCisgIDEuIFRoZSBsb2dpY2FsLXJlcGxpY2F0aW9uIGFw cGx5IHBhdGgsIGdhdGVkIHBlciBzdWJzY3JpcHRpb24gKHNlZSAiTG9naWNhbAorICAgICBy ZXBsaWNhdGlvbiIgYmVsb3cpLgorICAyLiBBbiBVUERBVEUgdG91Y2hpbmcgYW4gYXR0cmli dXRlIHJlZmVyZW5jZWQgYnkgYW4gZXhwcmVzc2lvbiBpbmRleAorICAgICAoc2VsZWN0aXZl IG1haW50ZW5hbmNlIG9mIGV4cHJlc3Npb24gaW5kZXhlcyBpcyBub3QgaW1wbGVtZW50ZWQg eWV0KS4KKyAgMy4gQW4gVVBEQVRFIHRoYXQgY2hhbmdlcyAqZXZlcnkqIGluZGV4ZWQgYXR0 cmlidXRlOiB0aGVyZSBpcyBubyBpbmRleCB0bworICAgICBza2lwLCBzbyBhIHBsYWluIG5v bi1IT1QgdXBkYXRlIGlzIGNoZWFwZXIuCisKK1N5c3RlbSBjYXRhbG9ncyBzdGF5IGNsYXNz aWMtSE9UIG9ubHk6IGEgY2F0YWxvZyBVUERBVEUgdGhhdCBjaGFuZ2VzIGEKK25vbi1zdW1t YXJpemluZyBpbmRleGVkIGF0dHJpYnV0ZSBmYWxscyBiYWNrIHRvIEhFQVBfVVBEQVRFX0FM TF9JTkRFWEVTLCBiZWNhdXNlCitjYXRhbG9nIHJlYWRzIGdvIHRocm91Z2ggbWFueSBwYXRo cyBub3QgYWxsIHByb3ZlbiBzYWZlIGFnYWluc3Qgc3RhbGUgY2hhaW4KK2VudHJpZXMuICBU aGlzIGlzIHRoZSBwcmUtSE9ULWluZGV4ZWQgYmVoYXZpb3VyIGZvciBzdWNoIHVwZGF0ZXMu CisKK0lOREVYX0FUVFJfQklUTUFQX0lOREVYRUQgKGNhY2hlZCBpbiByZF9pbmRleGVkYXR0 cikgaXMgdGhlIHNldCBvZiBjb2x1bW5zCityZWZlcmVuY2VkIGJ5IG5vbi1zdW1tYXJpemlu ZyBpbmRleGVzIHBsdXMsIGZvbGRlZCBpbiwgdGhlIGNvbHVtbnMgcmVmZXJlbmNlZAorb25s eSBieSBzdW1tYXJpemluZyBpbmRleGVzLCBzbyB0aGF0IGEgY2hhbmdlIHRvIGEgc3VtbWFy aXppbmctb25seSBjb2x1bW4gaXMKK3NlZW4gYnkgdGhlIG1vZGlmaWVkLWF0dHJpYnV0ZSBj b21wYXJpc29uIChpdHMgaW5kZXggaXMgbWFpbnRhaW5lZCB2aWEgdGhlCitjbGFzc2ljLUhP VCBzdW1tYXJpemluZyBwYXRoKS4gIFJlYWQtc2lkZSBzdGFsZW5lc3MgaXMgZmlsdGVyZWQg YnkgdGhlCitjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAsIHdoaWNoIGlzIGFjY2Vzcy1tZXRo b2QgYWdub3N0aWMsIHNvIGEgY2hhbmdlIHRvIGEKK2NvbHVtbiBjb3ZlcmVkIGJ5IGFueSBp bmRleCBpcyBIT1QtaW5kZXhlZCByZWdhcmRsZXNzIG9mIHRoZSBpbmRleCdzIGFjY2Vzcwor bWV0aG9kLiAgU3VtbWFyaXppbmcgaW5kZXhlcyAoZS5nLiBCUklOKSBrZWVwIG5vIHBlci1y b3cgbGVhZiB0aGF0IGNhbiBnbworc3RhbGUgYW5kIGFyZSBtYWludGFpbmVkIHZpYSB0aGUg c3VtbWFyaXppbmcgcGF0aC4KKworCitUaGUgd3JpdGUgcGF0aAorLS0tLS0tLS0tLS0tLS0K KworRm9yIEhFQVBfU0VMRUNUSVZFX0lOREVYX1VQREFURSwgaGVhcF91cGRhdGU6CisKKyAg LSBzdG9yZXMgdGhlIG5ldyB0dXBsZSBhcyBhIGhlYXAtb25seSB0dXBsZSBvbiB0aGUgc2Ft ZSBwYWdlLCBsaW5rZWQgaW50bworICAgIHRoZSBjaGFpbiB2aWEgdF9jdGlkLCBleGFjdGx5 IGxpa2UgY2xhc3NpYyBIT1Q7IGFuZAorICAtIHNldHMgSEVBUF9JTkRFWEVEX1VQREFURUQg KHRfaW5mb21hc2syIGJpdCAweDA4MDApIG9uIHRoZSBuZXcgdHVwbGUgdG8KKyAgICBtYXJr IHRoYXQgdGhlIGNoYWluIG5vdyBjYXJyaWVzIGRpZmZlcmluZyBrZXlzLgorCitUaGVyZSBp cyBubyBzZXBhcmF0ZSBvbi1wYWdlIG1ldGEtaXRlbTogdGhlIGJpdCBvbiB0aGUgaGVhcC1v bmx5IHR1cGxlIGlzIHRoZQorZW50aXJlIG9uLWRpc2sgZm9vdHByaW50LiAgQXMgZm9yIGNs YXNzaWMgSE9ULCBpZiB0aGUgbmV3IHR1cGxlIGRvZXMgbm90IGZpdAorb24gdGhlIHBhZ2Ug dGhlIHVwZGF0ZSBmYWxscyBiYWNrIHRvIGEgbm9uLUhPVCAobmV3LXBhZ2UpIHVwZGF0ZS4K KworVGhlIGlubGluZSBtb2RpZmllZC1hdHRycyBiaXRtYXAgaXMgY2VpbChuYXR0cy84KSBi eXRlcywgc2l6ZWQgYnkgdGhlIHR1cGxlJ3MKK09XTiBhdHRyaWJ1dGUgY291bnQgYXQgd3Jp dGUgdGltZSAoSGVhcFR1cGxlSGVhZGVyR2V0TmF0dHMpLCBub3QgdGhlIHJlbGF0aW9uJ3MK K2N1cnJlbnQgbmF0dHMuICBBREQgQ09MVU1OIHJhaXNlcyB0aGUgcmVsYXRpb24ncyBuYXR0 cyB3aXRob3V0IHJld3JpdGluZworZXhpc3RpbmcgdHVwbGVzLCBzbyBvbmUgY2hhaW4gY2Fu IGhvbGQgaG9wcyB3aG9zZSBiaXRtYXBzIHdlcmUgc2l6ZWQgZm9yCitkaWZmZXJlbnQgKHNt YWxsZXIpIG5hdHRzOyBldmVyeSBjb25zdW1lciBsb2NhdGVzIGFuZCBzaXplcyBhIGhvcCdz IGJpdG1hcAorZnJvbSB0aGF0IGhvcCdzIG93biB3cml0ZS10aW1lIG5hdHRzIChIb3RJbmRl eGVkVHVwbGVCaXRtYXBOYXR0cyBpbgorYWNjZXNzL2hvdF9pbmRleGVkLmgpLiAgQSBjb2xs YXBzZS1zdXJ2aXZvciBzdHViIG92ZXJ3cml0ZXMgbmF0dHMgd2l0aCBpdHMgMAorc2VudGlu ZWwsIHNvIGl0IHByZXNlcnZlcyBpdHMgd3JpdGUtdGltZSBuYXR0cyBpbiB0aGUgdW51c2Vk IGJsb2NrLW51bWJlciBoYWxmCitvZiB0X2N0aWQgKHRoZSBvZmZzZXQgaGFsZiBpcyB0aGUg Zm9yd2FyZCBsaW5rKS4gIEJpdCBwb3NpdGlvbnMgYXJlIGF0dHJpYnV0ZQorYmFzZWQgYW5k IGlkZW50aWNhbCBhY3Jvc3Mgc2l6ZXMsIHNvIGEgc21hbGxlciBiaXRtYXAgc2ltcGx5IE9S cyBpbnRvIHRoZSBsb3cKK2J5dGVzIG9mIGEgbGFyZ2VyIGNyb3NzZWQtYXR0cmlidXRlIGFj Y3VtdWxhdG9yLiAgRFJPUCBDT0xVTU4ga2VlcHMgdGhlIGF0dG51bQorc2xvdCAoaXQgbmV2 ZXIgcmVudW1iZXJzKSwgc28gZXhpc3RpbmcgYml0bWFwcyBzdGF5IGFsaWduZWQuCisKK0Fm dGVyIHRoZSB1cGRhdGUsIHRhYmxlX3R1cGxlX3VwZGF0ZSByZXBvcnRzIHVwZGF0ZV9hbGxf aW5kZXhlcyA9IGZhbHNlICh0aGUKK3R1cGxlIGlzIGhlYXAtb25seSkuICBUaGUgZXhlY3V0 b3IgdGhlbiBtYWludGFpbnMgaW5kZXhlcyBzZWxlY3RpdmVseToKK0V4ZWNTZXRJbmRleFVu Y2hhbmdlZCBtYXJrcyBlYWNoIGluZGV4IHdob3NlIGtleSBhdHRyaWJ1dGVzIGRpZCBub3Qg Y2hhbmdlIGFzCit1bmNoYW5nZWQsIGFuZCBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMgaW5zZXJ0 cyBhIGZyZXNoIGVudHJ5IG9ubHkgaW50byB0aGUKK2luZGV4ZXMgdGhhdCBkaWQgY2hhbmdl LiAgRWFjaCBzdWNoIGVudHJ5IHBvaW50cyBhdCB0aGUgbmV3IHR1cGxlJ3Mgb3duIFRJRC4K KworCitUaGUgY2hhaW4gYW5kIHRoZSB0d28ga2luZHMgb2YgbGVhZiBlbnRyeQorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FmdGVyIGEgSE9ULWlu ZGV4ZWQgdXBkYXRlIHRoZXJlIGFyZSwgZm9yIGEgY2hhbmdlZCBpbmRleCwgdHdvIGtpbmRz IG9mIGxlYWYKK2VudHJ5IHJlYWNoaW5nIHRoZSBjaGFpbjoKKworICAtIHRoZSBwcmUtdXBk YXRlIGVudHJ5IGZvciB0aGUgT0xEIGtleSwgc3RpbGwgcG9pbnRpbmcgYXQgYW4gb2xkZXIg Y2hhaW4KKyAgICBtZW1iZXIgKG5vdyBzdGFsZSBvbmNlIHRoZSB3YWxrIGNyb3NzZXMgdGhl IEhPVC1pbmRleGVkIGhvcCk7IGFuZAorICAtIHRoZSBmcmVzaCBlbnRyeSBmb3IgdGhlIE5F VyBrZXksIHBvaW50aW5nIGF0IHRoZSBuZXcgaGVhcC1vbmx5IHR1cGxlLgorCitJbmRleCBi dWlsZCBhbmQgUkVJTkRFWCBpbmRleCBhIGxpdmUgSE9ULWluZGV4ZWQgdHVwbGUgdW5kZXIg aXRzIE9XTiBUSUQgKG5vdAordGhlIGNoYWluIHJvb3QpLCBzbyB0aGUgZnJlc2hseSBidWls dCBlbnRyeSBoYXMgbm8gaG9wIGFmdGVyIGl0IGFuZCBpcyBuZXZlcgordHJlYXRlZCBhcyBz dGFsZS4KKworCitSZWFkLXNpZGUgY29ycmVjdG5lc3M6IHRoZSBjcm9zc2VkLWF0dHJpYnV0 ZSBiaXRtYXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorCitoZWFwX2hvdF9zZWFyY2hfYnVmZmVyIHdhbGtzIHRoZSBjaGFpbiBmcm9t IHRoZSBlbnRyeSdzIHRhcmdldCB0byB0aGUgbGl2ZQordmlzaWJsZSB0dXBsZS4gIEVhY2gg aG9wIGl0IGNyb3NzZXMgYWZ0ZXIgdGhlIGVudHJ5J3Mgb3duIHRhcmdldCAtLSBhIGxpdmUK K0hPVC1pbmRleGVkIG1lbWJlciwgYSBjb2xsYXBzZS1zdXJ2aXZvciBzdHViLCBvciBhIGNv bGxhcHNlZCAocmVkaXJlY3RlZCkKK3ByZWZpeCAtLSBjb250cmlidXRlcyB0aGF0IGhvcCdz IGlubGluZSBtb2RpZmllZC1hdHRycyBiaXRtYXAgdG8gYSBydW5uaW5nCit1bmlvbiwgSW5k ZXhGZXRjaFRhYmxlRGF0YS54c19ob3RfaW5kZXhlZF9jcm9zc2VkLCBhbmQgc2V0cworKmhv dF9pbmRleGVkX3JlY2hlY2sgdG8gZmxhZyB0aGF0IHRoZSB3YWxrIGNyb3NzZWQgYXQgbGVh c3Qgb25lIHN1Y2ggaG9wLgorCitUaGUgaW5kZXgtYWNjZXNzIGxheWVyIChpbmRleF9mZXRj aF9oZWFwKSB0ZXN0cyB0aGF0IHVuaW9uIGFnYWluc3QgdGhlCithcnJpdmluZyBpbmRleCdz IGtleSBjb2x1bW5zLiAgQW55IG92ZXJsYXAgbWVhbnMgYSBjcm9zc2VkIGhvcCBjaGFuZ2Vk IG9uZSBvZgordGhpcyBpbmRleCdzIGlucHV0cywgc28gdGhlIGVudHJ5J3Mgc3RvcmVkIGtl eSBubyBsb25nZXIgbWF0Y2hlcyB0aGUgbGl2ZQordHVwbGU6IEluZGV4U2NhbkRlc2MueHNf aG90X2luZGV4ZWRfc3RhbGUgaXMgc2V0LCBhbmQgSW5kZXhTY2FuLAorSW5kZXhPbmx5U2Nh biwgQ0xVU1RFUiwgYW5kIHRoZSBsb2dpY2FsLXJlcGxpY2F0aW9uIHJlcGxpY2EtaWRlbnRp dHkgbG9va3VwcworZHJvcCB0aGUgdHVwbGUuICBJZiB0aGUgdW5pb24gaXMgZGlzam9pbnQg ZnJvbSB0aGUgaW5kZXgncyBrZXkgY29sdW1ucywgbm9uZQorb2YgdGhlIGluZGV4J3MgaW5w dXRzIGNoYW5nZWQgYWNyb3NzIHRoZSBjaGFpbiwgc28gdGhlIGVudHJ5IGlzIGN1cnJlbnQg YW5kCit0aGUgcm93IGlzIHJldHVybmVkLgorCitUaGUgdW5pb24gaXMgY29tcGxldGU6IGV2 ZXJ5IGNyb3NzZWQgbGl2ZSBob3AgYW5kIHN0dWIgY29udHJpYnV0ZXMgaXRzCitiaXRtYXAs IGFuZCBjaGFpbiBjb2xsYXBzZSBvbmx5IGV2ZXIgcmVjbGFpbXMgYSBtZW1iZXIgd2hvc2Ug YXR0cmlidXRlcyBhcmUgYQorc3Vic2V0IG9mIHRoZSBzdXJ2aXZpbmcgbGF0ZXIgaG9wcyAo c2VlICJQcnVuZSBhbmQgY2hhaW4gY29sbGFwc2UiKSwgc28gYQorcmVhZGVyIGNyb3NzaW5n IHRoZSBzdXJ2aXZvcnMgc3RpbGwgc2VlcyBldmVyeSBjb2xsYXBzZWQgaG9wJ3MgYXR0cmli dXRlcy4KK0Rpc2pvaW50bmVzcyB0aGVyZWZvcmUgcmVsaWFibHkgbWVhbnMgdGhlIGVudHJ5 IGlzIGN1cnJlbnQuCisKK1RoaXMgbmVlZHMgbm8gdmFsdWUgY29tcGFyaXNvbiBhbmQgbm8g bGVhZiBrZXksIHNvIGl0IHNlcnZlcyBlcXVhbGl0eSwgcmFuZ2UsCithbmQgaW5lcXVhbGl0 eSBzY2FucyB1bmlmb3JtbHksIHdvcmtzIGZvciBhbnkgYWNjZXNzIG1ldGhvZCB3aG9zZSBj b2x1bW5zIGFyZQorZWxpZ2libGUgZm9yIEhPVC1pbmRleGVkIHVwZGF0ZXMsIGFuZCBpcyBj b3JyZWN0IGV2ZW4gd2hlbiBhIGtleSBpcyBjeWNsZWQKK2F3YXkgYW5kIGJhY2sgKFggLT4g WSAtPiBYKTogdGhlIHVwZGF0ZSB0aGF0IHJlc3RvcmVkIHRoZSB2YWx1ZSBwbGFudGVkIGEK K2ZyZXNoIGVudHJ5IHBvaW50aW5nIGF0IGl0cyBvd24gbGl2ZSB0dXBsZSwgd2hvc2Ugd2Fs ayBjcm9zc2VzIG5vIGxhdGVyCitrZXktY2hhbmdpbmcgaG9wLCBzbyB0aGF0IGVudHJ5IHVu aXF1ZWx5IHJldHVybnMgdGhlIHJvdyB3aGlsZSB0aGUgc3RhbGUKK2FuY2VzdG9yIGVudHJ5 IC0tIHdob3NlIHdhbGsgZG9lcyBjcm9zcyB0aGUgY2hhbmdpbmcgaG9wcyAtLSBpcyBkcm9w cGVkLgorCitUaGUgcmVhZCBtZWNoYW5pc20gbmV2ZXIgcmVjb25zdHJ1Y3RzIG9yIGNvbXBh cmVzIGFuIGluZGV4IGtleSwgc28gaXQgbmVlZHMgbm8KK3Blci1hY2Nlc3MtbWV0aG9kIHN1 cHBvcnQuICAobmJ0cmVlIGtlZXBzIGFuIGludGVybmFsIGxlYWYta2V5IGNvbXBhcmlzb24s CitfYnRfaGVhcF9rZXlzX2VxdWFsX2xlYWYsIHVzZWQgb25seSBieSBfYnRfY2hlY2tfdW5p cXVlIHRvIHRlbGwgYSBzdGFsZSBjaGFpbgorZW50cnkgZnJvbSBhIGxpdmUgZHVwbGljYXRl IGR1cmluZyBhIHVuaXF1ZSBpbnNlcnQ7IGl0IGlzIG5vdCBwYXJ0IG9mIHRoZSByZWFkCitw YXRoLikKKworVW5pcXVlIGNoZWNrcy4gIF9idF9jaGVja191bmlxdWUgZmV0Y2hlcyB0aGUg Y29uZmxpY3RpbmcgdHVwbGUgdW5kZXIKK1NuYXBzaG90RGlydHkgYW5kLCB3aGVuIHRoZSBj aGFpbiB3YWxrIGNyb3NzZWQgYSBIT1QtaW5kZXhlZCBob3AsIGNvbXBhcmVzIHRoZQorbGl2 ZSB0dXBsZSdzIGN1cnJlbnQga2V5IGFnYWluc3QgdGhlIGFycml2aW5nIGxlYWYgd2l0aCB0 aGUgaW5kZXgncyBvd24KK29yZGVyaW5nIHByb2NlZHVyZSAoX2J0X2hlYXBfa2V5c19lcXVh bF9sZWFmLCB1c2luZyBCVE9SREVSX1BST0MgdW5kZXIgZWFjaAorY29sdW1uJ3MgY29sbGF0 aW9uKS4gIFRoaXMgcmVjaGVjayBpcyByZWFjaGVkIG9ubHkgZm9yIGFuIGluZGV4IHJlY2Vp dmluZyBhCitmcmVzaCBlbnRyeSBkdXJpbmcgYSBIT1QtaW5kZXhlZCB1cGRhdGU7IEhlYXBV cGRhdGVIb3RBbGxvd2FibGUgZGlzcXVhbGlmaWVzCithbnkgVVBEQVRFIHRoYXQgdG91Y2hl cyBhbiBleHByZXNzaW9uLWluZGV4IGF0dHJpYnV0ZSwgc28gdGhlIGluZGV4IGhlcmUgbmV2 ZXIKK2hhcyBhbiBleHByZXNzaW9uIGtleSBjb2x1bW4gKGV2ZXJ5IGtleSBjb2x1bW4gaXMg YSBwbGFpbiBhdHRyaWJ1dGUpLCBhbmQgdGhlCitjb21wYXJpc29uIHJlYWRzIGF0dHJpYnV0 ZSB2YWx1ZXMgc3RyYWlnaHQgZnJvbSB0aGUgaGVhcCBzbG90IC0tIG5vIGV4cHJlc3Npb24K K2V2YWx1YXRpb24gb3IgZXhlY3V0b3Igc3RhdGUgaXMgbmVlZGVkLiAgVXNpbmcgdGhlIG9w Y2xhc3MgY29tcGFyYXRvciAtLSBub3QgYQorYml0d2lzZSBpbWFnZSBjb21wYXJpc29uIC0t IG1lYW5zIGEga2V5Cit0aGF0IHdhcyBjeWNsZWQgYXdheSBhbmQgYmFjayAoWCAtPiBZIC0+ IFgpIGRvZXMgbm90IHJhaXNlIGEgc3B1cmlvdXMKK2R1cGxpY2F0ZSBhZ2FpbnN0IGl0cyBv d24gc3RhbGUgbGVhZiwgd2hpbGUgYSBnZW51aW5lbHkgbGl2ZSBkdXBsaWNhdGUgKGVxdWFs Cit1bmRlciB0aGUgb3BjbGFzcyBldmVuIGlmIG5vdCBiaXR3aXNlLWlkZW50aWNhbCwgZS5n LiBudW1lcmljIDEuMCB2cyAxLjAwKSBpcworc3RpbGwgZGV0ZWN0ZWQuICAoQXBwZW5kaXgg QSBtb3RpdmF0ZXMgdGhpcyByZWNoZWNrIGluIGRldGFpbC4pCisKKworQXBwZW5kaWNlcwor LS0tLS0tLS0tLQorCitBcHBlbmRpeCBBOiBXaHkgdGhlIHVuaXF1ZS1jaGVjayBwYXRoIG5l ZWRzIGEgdmFsdWUgY29tcGFyaXNvbiBhdCBhbGwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlz IGlzIHRoZSBvbmUgcGxhY2UgSE9ULWluZGV4ZWQgZG9lcyBjb21wYXJlIGEga2V5IHZhbHVl LCBldmVuIHRob3VnaCB0aGUKK3JlYWQgcGF0aCBkZWxpYmVyYXRlbHkgYXZvaWRzIG9uZS4g IFRoZSByZXN0IG9mIHRoaXMgYXBwZW5kaXggZXhwbGFpbnMgd2h5IHRoZQorY29tcGFyaXNv biBpcyBuZWVkZWQsIHdoeSBpdCBtdXN0IHVzZSB0aGUgb3BjbGFzcyBjb21wYXJhdG9yIHJh dGhlciB0aGFuIGEKK2JpdHdpc2Ugb25lLCBhbmQgd2h5IHRoZSBBQkEgY2FzZSBpcyB3aGF0 IGZvcmNlcyB0aGUgaXNzdWUuCisKKzEuIFRoZSBzZXR1cDogd2h5IGEgdW5pcXVlIGluc2Vy dCBjYW4gZXZlbiByZWFjaCBhIHN0YWxlIGxlYWYKKworVW5kZXIgY2xhc3NpYyBIT1QsIGFu IGluZGV4IGhhcyBleGFjdGx5IG9uZSBsZWFmIGVudHJ5IHBlciBsb2dpY2FsIHJvdywgYW5k CitldmVyeSBsZWFmIGVudHJ5J3Mga2V5IG1hdGNoZXMgdGhlIGxpdmUgdHVwbGUgaXQgY2hh aW4tcmVzb2x2ZXMgdG8uICBTbworX2J0X2NoZWNrX3VuaXF1ZSBjYW4gdHJ1c3Q6ICJpZiBJ IGZpbmQgYSBsZWFmIHdob3NlIGtleSBlcXVhbHMgbXkgbmV3IGtleSwgYW5kCitpdCByZXNv bHZlcyB0byBhIGxpdmUgdHVwbGUsIHRoYXQncyBhIGdlbnVpbmUgZHVwbGljYXRlLiIKKwor SE9UL1NJVSBicmVha3MgdGhhdCBvbmUtdG8tb25lIGNvcnJlc3BvbmRlbmNlLiAgQSBIT1Qt aW5kZXhlZCBVUERBVEUgdGhhdAorY2hhbmdlcyBjb2x1bW4gYSBmcm9tIFggdG8gWToKKyAt IGluc2VydHMgYSBmcmVzaCBsZWFmIGVudHJ5IChZIC0+IG5ldyB0dXBsZSkgaW50byBpZHhf YSwgYW5kCisgLSBsZWF2ZXMgdGhlIG9sZCBsZWFmIGVudHJ5IChYIC0+IG9sZCBjaGFpbiBy b290KSBpbiBwbGFjZS4KKworVGhhdCBvbGQgKFggLT4gcm9vdCkgZW50cnkgaXMgbm93IHN0 YWxlOiBpdCBzdGlsbCBjaGFpbi1yZXNvbHZlcyB0byBhIGxpdmUKK3R1cGxlLCBidXQgdGhh dCBsaXZlIHR1cGxlJ3MgY3VycmVudCBhIGlzIFksIG5vdCBYLiAgVGhlIHJlYWQgcGF0aCBo YW5kbGVzIHRoaXMKK3dpdGggdGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCAobm8gdmFs dWUgY29tcGFyaXNvbiBuZWVkZWQpOiBpZiB0aGUgd2FsaworZnJvbSB0aGUgZW50cnkncyB0 YXJnZXQgdG8gdGhlIGxpdmUgdHVwbGUgY3Jvc3NlcyBhIGhvcCB0aGF0IGNoYW5nZWQgYSwg dGhlCitlbnRyeSBpcyBzdGFsZSBhbmQgZHJvcHBlZC4KKworV2hlbiB5b3Ugbm93IElOU0VS VCBhIHJvdyB3aXRoIGEgPSBYLCBfYnRfY2hlY2tfdW5pcXVlIHNjYW5zIGlkeF9hIGZvciBr ZXkgWAorYW5kIGZpbmRzIHRoYXQgc3RhbGUgKFggLT4gcm9vdCkgbGVhZi4gIEl0IG11c3Qg ZGVjaWRlOiBpcyB0aGlzIGEgcmVhbAorY29uZmxpY3Q/CisKKzIuIFdoeSB0aGUgcmVhZC1w YXRoIGJpdG1hcCBpcyBub3Qgc3VmZmljaWVudCBoZXJlCisKK1RoZSByZWFkIHBhdGgncyBs b2dpYyBpczogInRoaXMgZW50cnkgY3Jvc3NlZCBhIGhvcCB0aGF0IGNoYW5nZWQgYSA9PiBz dGFsZSA9PgorZHJvcCBpdCwgdGhlIGZyZXNoIGVudHJ5IHdpbGwgc3VwcGx5IHRoZSByb3cu IiAgRm9yIHNjYW5zIHRoYXQncyBjb3JyZWN0IGFuZAorY29tcGxldGUsIGJlY2F1c2UgZXZl cnkgbGl2ZSByb3cgaGFzIGV4YWN0bHkgb25lIG5vbi1zdGFsZSBlbnRyeSB0aGF0CityZS1z dXBwbGllcyBpdC4KKworQnV0IGEgdW5pcXVlIGNoZWNrIGlzIGFza2luZyBhIGRpZmZlcmVu dCBxdWVzdGlvbi4gIEl0IGlzIG5vdCAic2hvdWxkIEkgcmV0dXJuCit0aGlzIHJvdz8iIC0t IGl0IGlzICJkb2VzIHRoZSBsaXZlIHR1cGxlIHRoaXMgZW50cnkgcmVzb2x2ZXMgdG8gY29u ZmxpY3Qgd2l0aAordGhlIGtleSBJJ20gaW5zZXJ0aW5nPyIgIFRoZSBiaXRtYXAgY2FuIG9u bHkgdGVsbCB5b3UgImFuIGluZGV4ZWQgYXR0cmlidXRlCitjaGFuZ2VkIHNvbWV3aGVyZSBv biB0aGUgY2hhaW4uIiAgSXQgY2Fubm90IHRlbGwgeW91IHdoYXQgdGhlIGxpdmUgdmFsdWUg aXMKK25vdywgYW5kIHRoYXQgaXMgZXhhY3RseSB3aGF0IHlvdSBuZWVkIHRvIGtub3cgdG8g ZGV0ZWN0IGEgZHVwbGljYXRlLgorCitUaGlzIGlzIHRoZSBjcnV4IG9mIHRoZSBBQkEgcHJv YmxlbS4gIENvbnNpZGVyOgorCisgIElOU0VSVCAoYT0xMCkgICAgICAgICAgICAgICAgICBM UFsxXSBhPTEwICAgKHJvb3QpCisgIFVQREFURSBhPTExICAgKEhPVC1pbmRleGVkKSAgICBM UFsyXSBhPTExICAgYml0bWFwIHthfSwgbGVhZiAoMTEpLT5MUFsyXQorICBVUERBVEUgYT0x MCAgIChIT1QtaW5kZXhlZCkgICAgTFBbM10gYT0xMCAgIGJpdG1hcCB7YX0sIGxlYWYgKDEw KS0+TFBbM10sIGxpdmUKKworaWR4X2Egbm93IGhhcyBsZWF2ZXMgKDEwKS0+TFBbMV0gW3N0 YWxlIGFuY2VzdG9yXSwgKDExKS0+TFBbMl0gW3N0YWxlXSwgYW5kCisoMTApLT5MUFszXSBb ZnJlc2gsIGxpdmVdLgorCitOb3cgSU5TRVJUIChhPTEwKSwgYSBnZW51aW5lIGR1cGxpY2F0 ZSBvZiB0aGUgbGl2ZSByb3cuICBfYnRfY2hlY2tfdW5pcXVlIHNjYW5zCitmb3Iga2V5IDEw IGFuZCBmaW5kcyB0aGUgKDEwKS0+TFBbMV0gc3RhbGUgYW5jZXN0b3IgZW50cnkuICBUaGUg Y2hhaW4gd2FsayBmcm9tCitMUFsxXSB0byB0aGUgbGl2ZSB0dXBsZSBMUFszXSBjcm9zc2Vz IGhvcHMgdGhhdCBjaGFuZ2VkIGEgKDEwLT4xMSwgdGhlbgorMTEtPjEwKSwgc28gdGhlIGJp dG1hcCBzYXlzICJzdGFsZS4iICBJZiB0aGUgdW5pcXVlIGNoZWNrIHRydXN0ZWQgdGhlIGJp dG1hcAorYWxvbmUgaXQgd291bGQgc2tpcCAoMTApLT5MUFsxXSBhcyBzdGFsZSBhbmQgbWlz cyB0aGUgcmVhbCBkdXBsaWNhdGUuICBUaGUKK2JpdG1hcCBpcyBmb29sZWQgYmVjYXVzZSBh IGNoYW5nZWQgKHNvIHRoZSBiaXQgaXMgc2V0KSBldmVuIHRob3VnaCBpdCBjaGFuZ2VkCiti YWNrIHRvIHRoZSBzYW1lIHZhbHVlOiAiYW4gYXR0cmlidXRlIGNoYW5nZWQgb24gdGhlIGNo YWluIiBpcyBub3QgInRoZSBsaXZlCit2YWx1ZSBkaWZmZXJzIGZyb20gdGhpcyBsZWFmJ3Mg a2V5LiIgIFVuZGVyIEFCQSB0aGV5IGRpdmVyZ2UuCisKK1RoZSBzaGFycGVyIGNhc2UgaXMg Y29uY3VycmVuY3kuICBXaGlsZSB0aGUgcmVzdG9yaW5nIFVQREFURSAoYTogMTEgLT4gMTAp IGlzCitpbiBmbGlnaHQsIGl0IGhhcyB3cml0dGVuIGl0cyBuZXcgaGVhcCB0dXBsZSBidXQg bm90IHlldCBpbnNlcnRlZCB0aGUgZnJlc2gKKygxMCktPkxQWzNdIGxlYWYuICBBIGNvbmN1 cnJlbnQgSU5TRVJUIChhPTEwKSBydW5uaW5nIGl0cyBfYnRfY2hlY2tfdW5pcXVlIHNjYW4K K2luIHRoYXQgd2luZG93IHNlZXMgb25seSB0aGUgc3RhbGUgKDEwKS0+TFBbMV0gYW5jZXN0 b3IuICBUaGUgdmFsdWUgcmVjaGVjaworYmVsb3cgbWFrZXMgdGhhdCBoaXQgcmVzb2x2ZSB0 byB4d2FpdCBvbiB0aGUgaW4tZmxpZ2h0IHVwZGF0ZXIgKHZpYQorX2J0X2RvaW5zZXJ0J3Mg d2FpdC1hbmQtcmVjaGVjayksIHNvIHRoZSBpbnNlcnRlciByZS1jaGVja3MgYWZ0ZXIgdGhl IHVwZGF0ZXIKK2NvbW1pdHMgYW5kIGZpbmRzIHRoZSBjb25mbGljdC4gIEEgYml0bWFwLW9u bHkgdmVyZGljdCB3b3VsZCBza2lwIHRoZSBhbmNlc3RvcgorYmVmb3JlIHJlYWNoaW5nIHRo ZSB4d2FpdCBsb2dpYyBhbmQgYWRtaXQgYSBkdXBsaWNhdGUgLS0gd2hpY2ggaXMgd2h5IHRo ZQorcmVjaGVjayBpcyBhIGNvcnJlY3RuZXNzIHJlcXVpcmVtZW50LCBub3QgbWVyZWx5IGFu IG9wdGltaXphdGlvbi4KKworMy4gV2h5IGEgdmFsdWUgY29tcGFyaXNvbiBmaXhlcyBpdCwg YW5kIHdoeSBpdCBtdXN0IGJlIHRoZSBvcGNsYXNzIGNvbXBhcmF0b3IKKworU28gdGhlIHVu aXF1ZSBwYXRoIG5lZWRzIHRvIGxvb2sgYXQgdGhlIGFjdHVhbCBsaXZlIHZhbHVlLCBub3Qg anVzdCAiZGlkCitzb21ldGhpbmcgY2hhbmdlLiIgIF9idF9jaGVja191bmlxdWUgZmV0Y2hl cyB0aGUgY29uZmxpY3RpbmcgdHVwbGUgdW5kZXIKK1NuYXBzaG90RGlydHkgYW5kLCB3aGVu IGhpX3JlY2hlY2sgc2F5cyBhIEhPVC1pbmRleGVkIGhvcCB3YXMgY3Jvc3NlZCwgY2FsbHMK K19idF9oZWFwX2tleXNfZXF1YWxfbGVhZiB0byBjb21wYXJlIHRoZSBsaXZlIHR1cGxlJ3Mg Y3VycmVudCBrZXkgYWdhaW5zdCB0aGUKK2Fycml2aW5nIGxlYWYncyBzdG9yZWQga2V5Ogor CisgLSBsaXZlIGtleSBlcXVhbHMgdGhlIGxlYWYga2V5IC0+IGdlbnVpbmUgZHVwbGljYXRl IChvciBhbiBpbi1mbGlnaHQgY29uZmxpY3QKKyAgIHJlYWNoZWQgYXMgeHdhaXQpIC0tIGNv cnJlY3Q6IEFCQSBiYWNrIHRvIFggaXMgYSByZWFsIGNvbmZsaWN0IHdpdGggYSBuZXcgWC4K KyAtIGxpdmUga2V5IGRpZmZlcnMgLT4gdGhlIGxlYWYgaXMgdHJ1bHkgc3RhbGUgLT4gc2tp cCBpdCAodGhlIGZyZXNoIGVudHJ5CisgICBoYW5kbGVzIHRoZSByZWFsIHJvdykuCisKK1do aWNoIGVxdWFsaXR5PyAgVHdvIGNhbmRpZGF0ZXM6CisKK0JpdHdpc2UvaW1hZ2UgY29tcGFy aXNvbiAoZGF0dW1faW1hZ2VfZXEpIGNvbXBhcmVzIHJhdyBieXRlcy4gIFRoYXQgaXMgd3Jv bmcKK2ZvciB1bmlxdWUgY2hlY2tpbmcgaW4gdGhlIGRhbmdlcm91cyBkaXJlY3Rpb24uICBV bmlxdWVuZXNzIGluIFBvc3RncmVTUUwgaXMKK2RlZmluZWQgYnkgdGhlIGluZGV4IG9wY2xh c3MncyBlcXVhbGl0eSBvcGVyYXRvciwgbm90IGJ5dGUgaWRlbnRpdHksIGFuZCBtYW55Cit0 eXBlcyBoYXZlIHZhbHVlcyBlcXVhbCB1bmRlciB0aGUgb3BjbGFzcyBidXQgYnl0ZS1kaXN0 aW5jdDoKKyAtIG51bWVyaWM6IDEuMCBhbmQgMS4wMCBhcmUgb3BjbGFzcy1lcXVhbCwgZGlm ZmVyZW50IG9uLWRpc2sgYnl0ZXMuCisgLSBmbG9hdDg6IC0wLjAgYW5kICswLjAgYXJlIGVx dWFsLCBkaWZmZXJlbnQgYml0IHBhdHRlcm5zLgorIC0gdGV4dC9jaXRleHQgdW5kZXIgYSBu b25kZXRlcm1pbmlzdGljIGNvbGxhdGlvbjogY2Fub25pY2FsbHktZXF1aXZhbGVudAorICAg c3RyaW5ncyB0aGF0IGFyZSBub3QgYnl0ZS1pZGVudGljYWwuCisKK0EgYml0d2lzZSBjb21w YXJpc29uIHdvdWxkIGNvbmNsdWRlICJub3QgZXF1YWwgPT4gc3RhbGUgPT4gc2tpcCIgZm9y IGEgbGl2ZQorMS4wMCB2ZXJzdXMgYW4gaW5zZXJ0ZWQgMS4wIGFuZCBtaXNzIGEgZ2VudWlu ZSB2aW9sYXRpb24gLS0gYSBjb3JyZWN0bmVzcyBob2xlCithcyBiYWQgYXMgdGhlIEFCQSBv bmUuCisKK1NvIF9idF9oZWFwX2tleXNfZXF1YWxfbGVhZiB1c2VzIHRoZSBpbmRleCdzIG93 biBCVE9SREVSX1BST0MgKGJ0cmVlIHN1cHBvcnQKK2Z1bmN0aW9uIDEpIHVuZGVyIGVhY2gg a2V5IGNvbHVtbidzIGNvbGxhdGlvbiwgdGhlIHNhbWUgbWFjaGluZXJ5IF9idF9jb21wYXJl CithbmQgX2J0X21rc2NhbmtleSB1c2UgdG8gZGVmaW5lIGVxdWFsaXR5IGZvciB0aGUgaW5k ZXguICBBIHplcm8gcmVzdWx0IG1lYW5zCisiZXF1YWwgYXMgdGhlIGluZGV4IGRlZmluZXMg ZXF1YWxpdHksIiB3aGljaCBpcyBwcmVjaXNlbHkgdGhlIHVuaXF1ZS12aW9sYXRpb24KK2Nv bmRpdGlvbiwgYW5kIHRoZSB2ZXJkaWN0IGFncmVlcyB3aXRoIHRoZSBpbmRleCdzIG93biBu b3Rpb24gb2YgdW5pcXVlbmVzcyBpbgorYm90aCBkaXJlY3Rpb25zLgorCis0LiBXaHkgbm8g ZXhwcmVzc2lvbiBldmFsdWF0aW9uIGlzIG5lZWRlZAorCitfYnRfaGVhcF9rZXlzX2VxdWFs X2xlYWYgcmVhZHMgZWFjaCBrZXkgY29sdW1uIHN0cmFpZ2h0IGZyb20gdGhlIGhlYXAgc2xv dAorKHNsb3RfZ2V0YXR0cikgYW5kIGNvbXBhcmVzIGl0IHRvIHRoZSBsZWFmIGRhdHVtOyBp dCBkb2VzIG5vdCBldmFsdWF0ZSBpbmRleGVkCitleHByZXNzaW9ucyBhbmQgbmVlZHMgbm8g ZXhlY3V0b3Igc3RhdGUuICBUaGF0IGlzIHN1ZmZpY2llbnQgYmVjYXVzZSB0aGUKK3JlY2hl Y2sgaXMgb25seSBldmVyIHJlYWNoZWQgZm9yIGFuIGluZGV4IHJlY2VpdmluZyBhIGZyZXNo IGVudHJ5IGR1cmluZyBhCitIT1QtaW5kZXhlZCB1cGRhdGUsIGFuZCBIZWFwVXBkYXRlSG90 QWxsb3dhYmxlIGRpc3F1YWxpZmllcyBhbnkgVVBEQVRFIHRoYXQKK3RvdWNoZXMgYW4gYXR0 cmlidXRlIHJlZmVyZW5jZWQgYnkgYW4gZXhwcmVzc2lvbiBpbmRleAorKElOREVYX0FUVFJf QklUTUFQX0VYUFJFU1NJT04gY2FwdHVyZXMgZXZlcnkgc3VjaCBhdHRyaWJ1dGUpLiAgU28g YSBIT1QtaW5kZXhlZAorY2hhaW4gbmV2ZXIgaGFzIGEgY3Jvc3NlZCBob3AgYWZmZWN0aW5n IGFuIGV4cHJlc3Npb24gaW5kZXgsIHRoZSBpbmRleCByZWFjaGluZwordGhlIHJlY2hlY2sg bmV2ZXIgaGFzIGFuIGV4cHJlc3Npb24ga2V5IGNvbHVtbiAoZXZlcnkgaW5ka2V5IGlzIGEg cmVhbAorYXR0cmlidXRlIG51bWJlciksIGFuZCB0aGVyZSBpcyBub3RoaW5nIHRvIGV2YWx1 YXRlLiAgSWYgc2VsZWN0aXZlIG1haW50ZW5hbmNlCitvZiBleHByZXNzaW9uIGluZGV4ZXMg aXMgaW1wbGVtZW50ZWQgaW4gdGhlIGZ1dHVyZSwgdGhpcyBpcyB3aGVyZSBhbgorZXhwcmVz c2lvbi1ldmFsdWF0aW5nIGNvbXBhcmlzb24gKGUuZy4gRm9ybUluZGV4RGF0dW0pIHdvdWxk IGJlIHJlaW50cm9kdWNlZC4KKworNS4gV2h5IHRoZSBhc3ltbWV0cnkgKGJpdG1hcCBvbiBy ZWFkLCB2YWx1ZSByZWNoZWNrIG9uIHVuaXF1ZSkgaXMgaW50ZW50aW9uYWwKKworSXQgbG9v a3MgbGlrZSB0d28gZGlmZmVyZW50IGFuc3dlcnMgdG8gdGhlIHNhbWUgcXVlc3Rpb24sIGJ1 dCB0aGUgcXVlc3Rpb25zCitkaWZmZXI6CisKKyAtIFJlYWQvc2NhbiBwYXRoOiAic2hvdWxk IHRoaXMgcm93IGJlIHJldHVybmVkPyIgIEEgc3RhbGUgZW50cnkgaXMgcmVkdW5kYW50Cisg ICAodGhlIGZyZXNoIGVudHJ5IHN1cHBsaWVzIHRoZSByb3cpLCBzbyB0aGUgY29uc2VydmF0 aXZlIGJpdG1hcCB2ZXJkaWN0IGlzCisgICBzdWZmaWNpZW50IC0tIHdvcnN0IGNhc2UgdW5k ZXIgQUJBIHlvdSBkcm9wIGEgcmVkdW5kYW50IGVudHJ5IGFuZCB0aGUgZnJlc2gKKyAgIG9u ZSBzdGlsbCByZXR1cm5zIHRoZSByb3cuICBObyB2YWx1ZSBjb21wYXJpc29uLCBzbyByZWFk cyBzdGF5CisgICBhY2Nlc3MtbWV0aG9kLWFnbm9zdGljIGFuZCBjaGVhcC4KKyAtIFVuaXF1 ZS1jaGVjayBwYXRoOiAiaXMgdGhpcyBhIGNvbmZsaWN0PyIgIEEgd3JvbmcgInN0YWxlIiB2 ZXJkaWN0IGhlcmUgZG9lcworICAgbm90IGp1c3QgZHJvcCBhIHJlZHVuZGFudCBlbnRyeTsg aXQgc2lsZW50bHkgYWRtaXRzIGEgZHVwbGljYXRlLCBjb3JydXB0aW5nCisgICB0aGUgY29u c3RyYWludC4gIEl0IGNhbm5vdCB0b2xlcmF0ZSB0aGUgYml0bWFwJ3MgZmFsc2UgInN0YWxl IiB1bmRlciBBQkEgYW5kCisgICBtdXN0IGNvbnN1bHQgdGhlIGxpdmUgdmFsdWUgKG9yIHdh aXQgb24gYW4gaW4tZmxpZ2h0IHVwZGF0ZXIpIHZpYSB0aGUKKyAgIG9wY2xhc3MgY29tcGFy YXRvci4KKworVGhlIGJpdG1hcCBpcyBhIGZpbHRlciAoYSBuZWNlc3NhcnkgY29uZGl0aW9u OiAiY291bGQgYmUgc3RhbGUiKTsgdGhlIG9wY2xhc3MKK3JlY2hlY2sgaXMgdGhlIGF1dGhv cml0eSAodGhlIHN1ZmZpY2llbnQgY29uZGl0aW9uOiAiaXMgdGhlIGxpdmUga2V5IGFjdHVh bGx5CitkaWZmZXJlbnQsIG9yIGlzIGEgY29uZmxpY3RpbmcgdXBkYXRlIGluIGZsaWdodCIp LiAgVGhlIHVuaXF1ZSBwYXRoIGxheWVycyB0aGUKK2F1dGhvcml0eSBvbiB0b3Agb2YgdGhl IGZpbHRlciBwcmVjaXNlbHkgYmVjYXVzZSBpdHMgZXJyb3IgbW9kZSBpcwordW5mb3JnaXZp bmcuCisKK0luIG9uZSBzZW50ZW5jZTogdGhlIHVuaXF1ZSBjaGVjayBjb21wYXJlcyB0aGUg bGl2ZSB0dXBsZSdzIGN1cnJlbnQga2V5IHRvIHRoZQorYXJyaXZpbmcgbGVhZiB3aXRoIHRo ZSBpbmRleCdzIG93biBlcXVhbGl0eSAobm90IGJ5dGVzKSBiZWNhdXNlIHRoZQorY3Jvc3Nl ZC1hdHRyaWJ1dGUgYml0bWFwIGNhbiBvbmx5IHNheSAic29tZXRoaW5nIGNoYW5nZWQiIC0t IHRydWUgdW5kZXIgYW4KK1gtPlktPlggY3ljbGUgZXZlbiB0aG91Z2ggdGhlIHZhbHVlIGlz IGJhY2sgdG8gWCAtLSBhbmQgb25seSBhbiBvcGNsYXNzLWNvcnJlY3QKK3ZhbHVlIGNvbXBh cmlzb24gKHdoaWNoIGFsc28gcm91dGVzIGFuIGluLWZsaWdodCByZXN0b3JpbmcgdXBkYXRl IHRvIHh3YWl0KSBjYW4KK2JvdGggcmVjb2duaXplIHRoZSBjeWNsZWQtYmFjayB2YWx1ZSBh cyBhIGdlbnVpbmUgZHVwbGljYXRlIGFuZCBjYXRjaAorZHVwbGljYXRlcyB0aGF0IGFyZSBv cGNsYXNzLWVxdWFsIGJ1dCBub3QgYnl0ZS1pZGVudGljYWwsIGVpdGhlciBvZiB3aGljaCBh CitiaXRtYXAgb3IgYSBiaXR3aXNlIGNvbXBhcmlzb24gd291bGQgZ2V0IHdyb25nLgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCBkYzMwN2ViNmRjNC4uOTBhNWFhYTUxYjMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j bHVkZSAiYWNjZXNzL2hlYXBhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy9oZWFwdG9hc3QuaCIK ICNpbmNsdWRlICJhY2Nlc3MvaGlvLmgiCisjaW5jbHVkZSAiYWNjZXNzL2hvdF9pbmRleGVk LmgiCiAjaW5jbHVkZSAiYWNjZXNzL211bHRpeGFjdC5oIgogI2luY2x1ZGUgImFjY2Vzcy9z dWJ0cmFucy5oIgogI2luY2x1ZGUgImFjY2Vzcy9zeW5jc2Nhbi5oIgpAQCAtNDQsMTMgKzQ1 LDE0IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX2RhdGFiYXNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19kYXRhYmFzZV9kLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCIKICNpbmNsdWRlICJjb21t YW5kcy92YWN1dW0uaCIKICNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50X25vZGUuaCIK ICNpbmNsdWRlICJleGVjdXRvci90dXB0YWJsZS5oIgogI2luY2x1ZGUgIm5vZGVzL2xvY2tv cHRpb25zLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicG9ydC9wZ19iaXR1 dGlscy5oIgotI2luY2x1ZGUgInN0b3JhZ2UvYnVmLmgiCisjaW5jbHVkZSAicmVwbGljYXRp b24vbG9naWNhbHdvcmtlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCkBA IC03OCw2ICs4MCw4IEBAIHN0YXRpYyB2b2lkIGNoZWNrX2lucGxhY2VfcmVsX2xvY2soSGVh cFR1cGxlIG9sZHR1cCk7CiAjZW5kaWYKIHN0YXRpYyBCaXRtYXBzZXQgKkhlYXBVcGRhdGVN b2RpZmllZElkeEF0dHJzKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQkJCQkgSGVhcFR1 cGxlIG9sZHR1cCwgSGVhcFR1cGxlIG5ld3R1cCk7CitzdGF0aWMgSGVhcFR1cGxlIGhlYXBf Zm9ybV9ob3RfaW5kZXhlZF90dXBsZShIZWFwVHVwbGUgdHVwLCBpbnQgcmVsbmF0dHMsCisJ CQkJCQkJCQkJCSAgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMpOwogc3Rh dGljIGJvb2wgaGVhcF9hY3F1aXJlX3R1cGxvY2soUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0 IEl0ZW1Qb2ludGVyRGF0YSAqdGlkLAogCQkJCQkJCQkgTG9ja1R1cGxlTW9kZSBtb2RlLCBM b2NrV2FpdFBvbGljeSB3YWl0X3BvbGljeSwKIAkJCQkJCQkJIGJvb2wgKmhhdmVfdHVwbGVf bG9jayk7CkBAIC0yMTA5LDkgKzIxMTMsMjUgQEAgaGVhcF9pbnNlcnQoUmVsYXRpb24gcmVs YXRpb24sIEhlYXBUdXBsZSB0dXAsIENvbW1hbmRJZCBjaWQsCiAJCSAqIElmIHRoaXMgaXMg dGhlIHNpbmdsZSBhbmQgZmlyc3QgdHVwbGUgb24gcGFnZSwgd2UgY2FuIHJlaW5pdCB0aGUK IAkJICogcGFnZSBpbnN0ZWFkIG9mIHJlc3RvcmluZyB0aGUgd2hvbGUgdGhpbmcuICBTZXQg ZmxhZywgYW5kIGhpZGUKIAkJICogYnVmZmVyIHJlZmVyZW5jZXMgZnJvbSBYTG9nSW5zZXJ0 LgorCQkgKgorCQkgKiBBbHNvIHJlcXVpcmUgdGhhdCB0aGUgcGFnZSdzIHR1cGxlIGFyZWEg Y29udGFpbnMgbm90aGluZyBvdGhlciB0aGFuCisJCSAqIHRoaXMgdHVwbGUuICBWYWN1dW0n cyBscF90cnVuY2F0ZV9vbmx5IHNlY29uZCBwYXNzCisJCSAqIChQUlVORV9WQUNVVU1fQ0xF QU5VUCkgZG9lcyBub3QgY2FsbCBQYWdlUmVwYWlyRnJhZ21lbnRhdGlvbiwgc28gYQorCQkg KiBwYWdlIGNhbiBsZWdpdGltYXRlbHkgZW5kIHVwIHdpdGggb25lIExQX1VOVVNFRCBzbG90 IGF0IG9mZnNldCAxCisJCSAqIHBsdXMgb3JwaGFuIHR1cGxlIGJ5dGVzIGxlZnQgb3ZlciBm cm9tIHRoZSBwcmV2aW91cyBsaWZldGltZS4gSWYKKwkJICogaGVhcF9pbnNlcnQgcmV1c2Vz IHRoYXQgTFBfVU5VU0VEIHNsb3QsIHByaW1hcnkncyBwYWdlIGtlZXBzIHRoZQorCQkgKiBv cnBoYW4gYnl0ZXMgd2hpbGUgYSBzdGFuZGJ5IHJlcGxheWluZyBJTlNFUlQrSU5JVCB6ZXJv ZXMgdGhlbS4KKwkJICogRW1pdHRpbmcgSU5TRVJUK0lOSVQgaW4gdGhhdCBjYXNlIHRyaXBz IHdhbF9jb25zaXN0ZW5jeV9jaGVja2luZy4KKwkJICogRmFsbGluZyBiYWNrIHRvIGEgcmVn dWxhciBJTlNFUlQgKHdpdGggdGhlIEZQSSBvbiBmaXJzdCB0b3VjaCBhZnRlcgorCQkgKiBh IGNoZWNrcG9pbnQpIGtlZXBzIHJlcGxheSBieXRlLWlkZW50aWNhbCB3aXRob3V0IHNhY3Jp ZmljaW5nIGNyYXNoCisJCSAqIHNhZmV0eS4KKwkJICoKKwkJICogTk9URTogVGhpcyBtdXN0 IG1pcnJvciB0aGUgbG9naWMgaW4gaGVhcF9tdWx0aV9pbnNlcnQoKS4KIAkJICovCiAJCWlm IChJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmKGhlYXB0dXAtPnRfc2VsZikpID09IEZp cnN0T2Zmc2V0TnVtYmVyICYmCi0JCQlQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpID09 IEZpcnN0T2Zmc2V0TnVtYmVyKQorCQkJUGFnZUdldE1heE9mZnNldE51bWJlcihwYWdlKSA9 PSBGaXJzdE9mZnNldE51bWJlciAmJgorCQkJKChQYWdlSGVhZGVyKSBwYWdlKS0+cGRfdXBw ZXIgPT0KKwkJCSgoUGFnZUhlYWRlcikgcGFnZSktPnBkX3NwZWNpYWwgLSBNQVhBTElHTiho ZWFwdHVwLT50X2xlbikpCiAJCXsKIAkJCWluZm8gfD0gWExPR19IRUFQX0lOSVRfUEFHRTsK IAkJCWJ1ZmZsYWdzIHw9IFJFR0JVRl9XSUxMX0lOSVQ7CkBAIC0zMjAyLDkgKzMyMjIsMTEg QEAgc2ltcGxlX2hlYXBfZGVsZXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9p bnRlckRhdGEgKnRpZCkKICAqLwogVE1fUmVzdWx0CiBoZWFwX3VwZGF0ZShSZWxhdGlvbiBy ZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgbmV3dHVw LAotCQkJQ29tbWFuZElkIGNpZCwgdWludDMyIG9wdGlvbnMgcGdfYXR0cmlidXRlX3VudXNl ZCgpLCBTbmFwc2hvdCBjcm9zc2NoZWNrLCBib29sIHdhaXQsCisJCQlDb21tYW5kSWQgY2lk LCB1aW50MzIgb3B0aW9ucyBwZ19hdHRyaWJ1dGVfdW51c2VkKCksCisJCQlTbmFwc2hvdCBj cm9zc2NoZWNrLCBib29sIHdhaXQsCiAJCQlUTV9GYWlsdXJlRGF0YSAqdG1mZCwgY29uc3Qg TG9ja1R1cGxlTW9kZSBsb2NrbW9kZSwKLQkJCWNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRf aWR4X2F0dHJzLCBjb25zdCBib29sIGhvdF9hbGxvd2VkKQorCQkJY29uc3QgQml0bWFwc2V0 ICptb2RpZmllZF9pZHhfYXR0cnMsCisJCQlIZWFwVXBkYXRlSW5kZXhNb2RlIGhvdF9tb2Rl KQogewogCVRNX1Jlc3VsdAlyZXN1bHQ7CiAJVHJhbnNhY3Rpb25JZCB4aWQgPSBHZXRDdXJy ZW50VHJhbnNhY3Rpb25JZCgpOwpAQCAtMzIzMCw2ICszMjUyLDkgQEAgaGVhcF91cGRhdGUo UmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqb3RpZCwgSGVhcFR1 cGxlIG5ld3R1cCwKIAlib29sCQloYXZlX3R1cGxlX2xvY2sgPSBmYWxzZTsKIAlib29sCQlp c2NvbWJvOwogCWJvb2wJCXVzZV9ob3RfdXBkYXRlID0gZmFsc2U7CisJYm9vbAkJaG90X2lu ZGV4ZWQgPSBmYWxzZTsJLyogSE9ULWluZGV4ZWQgdXBkYXRlIChtb2RpZmllZCBhbgorCQkJ CQkJCQkJCSAqIGluZGV4ZWQgYXR0ciBidXQgc3RheWVkIEhPVCkgKi8KKwlTaXplCQloaV9i bWJ5dGVzID0gMDsgLyogdHJhaWxpbmcgbW9kaWZpZWQtYXR0cnMgYml0bWFwIHNpemUsIGlm IGFueSAqLwogCWJvb2wJCWtleV9pbnRhY3Q7CiAJYm9vbAkJYWxsX3Zpc2libGVfY2xlYXJl ZCA9IGZhbHNlOwogCWJvb2wJCWFsbF92aXNpYmxlX2NsZWFyZWRfbmV3ID0gZmFsc2U7CkBA IC0zNzk0LDYgKzM4MTksMzggQEAgbDI6CiAKIAluZXd0dXBzaXplID0gTUFYQUxJR04obmV3 dHVwLT50X2xlbik7CiAKKwkvKgorCSAqIEtlZXAgSE9ULWluZGV4ZWQgKFNJVSkgY2hhaW5z IHVuaWZvcm0uICBIZWFwVXBkYXRlSG90QWxsb3dhYmxlIHJldHVybnMKKwkgKiBIRUFQX0hF QVBfT05MWV9VUERBVEUgd2hlbmV2ZXIgdGhpcyB1cGRhdGUgbW9kaWZpZXMgbm8gaW5kZXhl ZAorCSAqIGF0dHJpYnV0ZS4gIEJ1dCBpZiB0aGUgdHVwbGUgYmVpbmcgdXBkYXRlZCBpcyBh bHJlYWR5IGEgSE9ULWluZGV4ZWQKKwkgKiBjaGFpbiBtZW1iZXIgKGl0IGNhcnJpZXMgSEVB UF9JTkRFWEVEX1VQREFURUQpLCBlbWl0dGluZyBhIGNsYXNzaWMtSE9UCisJICogdmVyc2lv biB3b3VsZCBzcGxpY2UgYSBub24tSEVBUF9JTkRFWEVEX1VQREFURUQgdHVwbGUgaW50byB0 aGUgY2hhaW4uCisJICogVGhlIHBydW5lL2NvbGxhcHNlIG1hY2hpbmVyeSBmb3J3YXJkcyBv bmx5IEhFQVBfSU5ERVhFRF9VUERBVEVEIG1lbWJlcnMKKwkgKiB0aHJvdWdoIGJyaWRnZXMs IHNvIHN1Y2ggYSBjbGFzc2ljLUhPVCB2ZXJzaW9uLCBvbmNlIGl0IGRpZXMgbWlkCisJICog Y29sbGFwc2VkLWNoYWluLCBoYXMgbm8gaGFuZGxlciBhbmQgdHJpcHMgdGhlICJub3QgbGlu a2VkIHRvIGZyb20gYW55CisJICogSE9UIGNoYWluIiBlcnJvci4gIFByb21vdGUgdG8gSEVB UF9TRUxFQ1RJVkVfSU5ERVhfVVBEQVRFIGluc3RlYWQ6IHdpdGggYW4KKwkgKiBlbXB0eSBt b2RpZmllZC1hdHRycyBzZXQgdGhlIG5ldyB2ZXJzaW9uIGNhcnJpZXMgSEVBUF9JTkRFWEVE X1VQREFURUQKKwkgKiBhbmQgYW4gZW1wdHkgaW5saW5lLXRyYWlsaW5nIGJpdG1hcCwgaW5z ZXJ0cyBpbnRvIG5vIGluZGV4IChub3RoaW5nCisJICogY2hhbmdlZCksIGFuZCBrZWVwcyBl dmVyeSBjaGFpbiBtZW1iZXIgdW5pZm9ybS4gIENhdGFsb2cgcmVsYXRpb25zIGFyZQorCSAq IGNsYXNzaWMtSE9UIG9ubHkgYW5kIG5ldmVyIGNhcnJ5IEhFQVBfSU5ERVhFRF9VUERBVEVE LCBzbyB0aGlzIG5ldmVyCisJICogZmlyZXMgZm9yIHRoZW0uCisJICovCisJaWYgKGhvdF9t b2RlID09IEhFQVBfSEVBUF9PTkxZX1VQREFURSAmJgorCQkob2xkdHVwLnRfZGF0YS0+dF9p bmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0gMCkKKwkJaG90X21vZGUgPSBI RUFQX1NFTEVDVElWRV9JTkRFWF9VUERBVEU7CisKKwkvKgorCSAqIEEgSE9ULWluZGV4ZWQg dXBkYXRlIGFwcGVuZHMgYSBmaXhlZC1zaXplIGlubGluZS10cmFpbGluZworCSAqIG1vZGlm aWVkLWF0dHJzIGJpdG1hcCB0byB0aGUgbmV3IHR1cGxlIChzZWUgYWNjZXNzL2hvdF9pbmRl eGVkLmgpLgorCSAqIFJlc2VydmUgcm9vbSBmb3IgaXQgaW4gdGhlIHBhZ2UtZml0IGNhbGN1 bGF0aW9uIG5vdywgd2hpbGUgd2Ugc3RpbGwKKwkgKiBtaWdodCB0YWtlIHRoZSBzYW1lLXBh Z2UgSE9UIHBhdGg7IGlmIHRoZSB1cGRhdGUgbGF0ZXIgZHJvcHMgdG8gbm9uLUhPVAorCSAq ICh0aGUgdHVwbGUgZG9lcyBub3QgZml0IG9uIHRoZSBwYWdlKSBpdCBpcyBzdG9yZWQgd2l0 aG91dCB0aGUgYml0bWFwIGFuZAorCSAqIHRoZSByZXNlcnZhdGlvbiBpcyBzaW1wbHkgY29u c2VydmF0aXZlLgorCSAqLworCWlmIChob3RfbW9kZSA9PSBIRUFQX1NFTEVDVElWRV9JTkRF WF9VUERBVEUpCisJCWhpX2JtYnl0ZXMgPSBIb3RJbmRleGVkQml0bWFwQnl0ZXMoUmVsYXRp b25HZXROdW1iZXJPZkF0dHJpYnV0ZXMocmVsYXRpb24pKTsKKwluZXd0dXBzaXplID0gTUFY QUxJR04obmV3dHVwLT50X2xlbiArIGhpX2JtYnl0ZXMpOworCiAJaWYgKG5lZWRfdG9hc3Qg fHwgbmV3dHVwc2l6ZSA+IHBhZ2VmcmVlKQogCXsKIAkJVHJhbnNhY3Rpb25JZCB4bWF4X2xv Y2tfb2xkX3R1cGxlOwpAQCAtMzg5MSw3ICszOTQ4LDcgQEAgbDI6CiAJCXsKIAkJCS8qIE5v dGUgd2UgYWx3YXlzIHVzZSBXQUwgYW5kIEZTTSBkdXJpbmcgdXBkYXRlcyAqLwogCQkJaGVh cHR1cCA9IGhlYXBfdG9hc3RfaW5zZXJ0X29yX3VwZGF0ZShyZWxhdGlvbiwgbmV3dHVwLCAm b2xkdHVwLCAwKTsKLQkJCW5ld3R1cHNpemUgPSBNQVhBTElHTihoZWFwdHVwLT50X2xlbik7 CisJCQluZXd0dXBzaXplID0gTUFYQUxJR04oaGVhcHR1cC0+dF9sZW4gKyBoaV9ibWJ5dGVz KTsKIAkJfQogCQllbHNlCiAJCQloZWFwdHVwID0gbmV3dHVwOwpAQCAtMzk5MiwxMCArNDA0 OSwxMCBAQCBsMjoKIAl7CiAJCS8qCiAJCSAqIFNpbmNlIHRoZSBuZXcgdHVwbGUgaXMgZ29p bmcgaW50byB0aGUgc2FtZSBwYWdlLCB3ZSBtaWdodCBiZSBhYmxlCi0JCSAqIHRvIGRvIGEg SE9UIHVwZGF0ZS4gIENoZWNrIGlmIGFueSBvZiB0aGUgaW5kZXggY29sdW1ucyBoYXZlIGJl ZW4KLQkJICogY2hhbmdlZC4KKwkJICogdG8gZG8gYSBIT1QgdXBkYXRlLiAgQ2hlY2sgaWYg SGVhcFVwZGF0ZUhvdEFsbG93YWJsZSgpIGhhcworCQkgKiBzYW5jdGlvbmVkIGl0IChIRUFQ X0hFQVBfT05MWV9VUERBVEUgb3IgSEVBUF9TRUxFQ1RJVkVfSU5ERVhfVVBEQVRFKS4KIAkJ ICovCi0JCWlmIChob3RfYWxsb3dlZCkKKwkJaWYgKGhvdF9tb2RlICE9IEhFQVBfVVBEQVRF X0FMTF9JTkRFWEVTKQogCQkJdXNlX2hvdF91cGRhdGUgPSB0cnVlOwogCX0KIAllbHNlCkBA IC00MDA0LDYgKzQwNjEsMjcgQEAgbDI6CiAJCVBhZ2VTZXRGdWxsKHBhZ2UpOwogCX0KIAor CS8qCisJICogRm9yIGEgc2FtZS1wYWdlIEhPVC1pbmRleGVkIHVwZGF0ZSwgcmVwbGFjZSBo ZWFwdHVwIHdpdGggYSBjb3B5IHRoYXQKKwkgKiBjYXJyaWVzIHRoZSBpbmxpbmUtdHJhaWxp bmcgbW9kaWZpZWQtYXR0cnMgYml0bWFwIChhbmQKKwkgKiBIRUFQX0lOREVYRURfVVBEQVRF RCkuICBEb25lIGhlcmUsIG91dHNpZGUgdGhlIGNyaXRpY2FsIHNlY3Rpb24sCisJICogYmVj YXVzZSBpdCBhbGxvY2F0ZXM7IHRoZSBiaXRtYXAncyBzaXplIHdhcyByZXNlcnZlZCBpbiBu ZXd0dXBzaXplCisJICogYWJvdmUuICBPbmx5IHRoZSBzdG9yZWQgdHVwbGUgKGhlYXB0dXAp IGdldHMgdGhlIGJpdG1hcCBhbmQgdGhlIGZsYWc7CisJICogdGhlIGNhbGxlcidzIG5ld3R1 cCBtdXN0IE5PVCBiZSBtYXJrZWQgSEVBUF9JTkRFWEVEX1VQREFURUQsIGJlY2F1c2UgaXQK KwkgKiBoYXMgbm8gdHJhaWxpbmcgYml0bWFwIC0tIHNlZSB0aGUgZmxhZyBoYW5kbGluZyBi ZWxvdy4KKwkgKi8KKwlpZiAodXNlX2hvdF91cGRhdGUgJiYgaG90X21vZGUgPT0gSEVBUF9T RUxFQ1RJVkVfSU5ERVhfVVBEQVRFKQorCXsKKwkJSGVhcFR1cGxlCWV4dDsKKworCQlleHQg PSBoZWFwX2Zvcm1faG90X2luZGV4ZWRfdHVwbGUoaGVhcHR1cCwKKwkJCQkJCQkJCQkgIFJl bGF0aW9uR2V0TnVtYmVyT2ZBdHRyaWJ1dGVzKHJlbGF0aW9uKSwKKwkJCQkJCQkJCQkgIG1v ZGlmaWVkX2lkeF9hdHRycyk7CisJCWlmIChoZWFwdHVwICE9IG5ld3R1cCkKKwkJCWhlYXBf ZnJlZXR1cGxlKGhlYXB0dXApOworCQloZWFwdHVwID0gZXh0OworCX0KKwogCS8qCiAJICog Q29tcHV0ZSByZXBsaWNhIGlkZW50aXR5IHR1cGxlIGJlZm9yZSBlbnRlcmluZyB0aGUgY3Jp dGljYWwgc2VjdGlvbiBzbwogCSAqIHdlIGRvbid0IFBBTklDIHVwb24gYSBtZW1vcnkgYWxs b2NhdGlvbiBmYWlsdXJlLgpAQCAtNDA0MCw2ICs0MTE4LDI5IEBAIGwyOgogCQlIZWFwVHVw bGVTZXRIZWFwT25seShoZWFwdHVwKTsKIAkJLyogTWFyayB0aGUgY2FsbGVyJ3MgY29weSB0 b28sIGluIGNhc2UgZGlmZmVyZW50IGZyb20gaGVhcHR1cCAqLwogCQlIZWFwVHVwbGVTZXRI ZWFwT25seShuZXd0dXApOworCisJCS8qCisJCSAqIEZvciBhIEhPVC1pbmRleGVkIHVwZGF0 ZSwgdGhlIG5ldyBsaXZlIHR1cGxlIGNhcnJpZXMKKwkJICogSEVBUF9JTkRFWEVEX1VQREFU RUQgc28gaW5kZXggc2NhbnMgd2Fsa2luZyB0aGUgY2hhaW4ga25vdyBpdCBpcyBhCisJCSAq IEhPVC1pbmRleGVkIGhvcCBjYXJyeWluZyBhbiBpbmxpbmUtdHJhaWxpbmcgbW9kaWZpZWQt YXR0cnMgYml0bWFwLgorCQkgKgorCQkgKiBTZXQgdGhlIGZsYWcgb25seSBvbiBoZWFwdHVw LCB0aGUgdmVyc2lvbiBhY3R1YWxseSBzdG9yZWQgb24gdGhlCisJCSAqIHBhZ2U6IGhlYXB0 dXAgY2FycmllcyB0aGUgdHJhaWxpbmcgYml0bWFwLCBzbyB0aGUgZmxhZydzIHByb21pc2Ug KGEKKwkJICogYml0bWFwIG9jY3VwaWVzIHRoZSBmaW5hbCBIb3RJbmRleGVkQml0bWFwQnl0 ZXMobmF0dHMpIGJ5dGVzIG9mIHRoZQorCQkgKiBpdGVtKSBob2xkcy4gIFRoZSBjYWxsZXIn cyBuZXd0dXAgaXMgYSBzZXBhcmF0ZSBpbi1tZW1vcnkgdHVwbGUKKwkJICogd2hvc2UgdF9s ZW4gZG9lcyBub3QgaW5jbHVkZSB0aGUgYml0bWFwOyBtYXJraW5nIGl0CisJCSAqIEhFQVBf SU5ERVhFRF9VUERBVEVEIHdvdWxkIGFzc2VydCBhIHRyYWlsaW5nIGJpdG1hcCB0aGF0IGlz IG5vdAorCQkgKiB0aGVyZSwgc28gYW55IGxhdGVyIHJlYWRlciB1c2luZyBJdGVtSWRHZXRM ZW5ndGgoKS1yZWxhdGl2ZSBhY2Nlc3MKKwkJICogd291bGQgbWlzcmVhZCBhdHRyaWJ1dGUg ZGF0YSBhcyB0aGUgYml0bWFwLiAgV2UgdGhlcmVmb3JlIGxlYXZlCisJCSAqIG5ld3R1cCdz IGZsYWcgY2xlYXIuICBOb3RoaW5nIHJlYWRzIHRoZSBtb2RpZmllZC1hdHRycyBiaXRtYXAg b2ZmIGFuCisJCSAqIGluLW1lbW9yeSB0dXBsZTsgZXZlcnkgY29uc3VtZXIgcmVhZHMgaXQg ZnJvbSB0aGUgcGFnZSB2aWEgdGhlIGxpbmUKKwkJICogcG9pbnRlcidzIGxlbmd0aC4KKwkJ ICovCisJCWlmIChob3RfbW9kZSA9PSBIRUFQX1NFTEVDVElWRV9JTkRFWF9VUERBVEUpCisJ CXsKKwkJCWhlYXB0dXAtPnRfZGF0YS0+dF9pbmZvbWFzazIgfD0gSEVBUF9JTkRFWEVEX1VQ REFURUQ7CisJCQlob3RfaW5kZXhlZCA9IHRydWU7CisJCX0KIAl9CiAJZWxzZQogCXsKQEAg LTQxNDQsNyArNDI0NSw4IEBAIGwyOgogCWlmIChoYXZlX3R1cGxlX2xvY2spCiAJCVVubG9j a1R1cGxlVHVwbG9jayhyZWxhdGlvbiwgJihvbGR0dXAudF9zZWxmKSwgbG9ja21vZGUpOwog Ci0JcGdzdGF0X2NvdW50X2hlYXBfdXBkYXRlKHJlbGF0aW9uLCB1c2VfaG90X3VwZGF0ZSwg bmV3YnVmICE9IGJ1ZmZlcik7CisJcGdzdGF0X2NvdW50X2hlYXBfdXBkYXRlKHJlbGF0aW9u LCB1c2VfaG90X3VwZGF0ZSwgaG90X2luZGV4ZWQsCisJCQkJCQkJIG5ld2J1ZiAhPSBidWZm ZXIpOwogCiAJLyoKIAkgKiBJZiBoZWFwdHVwIGlzIGEgcHJpdmF0ZSBjb3B5LCByZWxlYXNl IGl0LiAgRG9uJ3QgZm9yZ2V0IHRvIGNvcHkgdF9zZWxmCkBAIC00MjkwLDcgKzQzOTIsNyBA QCBjaGVja19pbnBsYWNlX3JlbF9sb2NrKEhlYXBUdXBsZSBvbGR0dXApCiAKIC8qCiAgKiBD aGVjayBpZiB0aGUgc3BlY2lmaWVkIGF0dHJpYnV0ZSdzIHZhbHVlcyBhcmUgdGhlIHNhbWUu ICBTdWJyb3V0aW5lIGZvcgotICogSGVhcERldGVybWluZUNvbHVtbnNJbmZvLgorICogSGVh cFVwZGF0ZU1vZGlmaWVkSWR4QXR0cnMuCiAgKi8KIHN0YXRpYyBib29sCiBoZWFwX2F0dHJf ZXF1YWxzKFR1cGxlRGVzYyB0dXBkZXNjLCBpbnQgYXR0cm51bSwgRGF0dW0gdmFsdWUxLCBE YXR1bSB2YWx1ZTIsCkBAIC00MzM0LDYzICs0NDM2LDEwMyBAQCBoZWFwX2F0dHJfZXF1YWxz KFR1cGxlRGVzYyB0dXBkZXNjLCBpbnQgYXR0cm51bSwgRGF0dW0gdmFsdWUxLCBEYXR1bSB2 YWx1ZTIsCiB9CiAKIC8qCi0gKiBIT1QgdXBkYXRlcyBhcmUgcG9zc2libGUgd2hlbiBlaXRo ZXI6IGEpIHRoZXJlIGFyZSBubyBtb2RpZmllZCBpbmRleGVkCi0gKiBhdHRyaWJ1dGVzLCBv ciBiKSB0aGUgbW9kaWZpZWQgYXR0cmlidXRlcyBhcmUgYWxsIG9uIHN1bW1hcml6aW5nIGlu ZGV4ZXMuCi0gKiBMYXRlciwgaW4gaGVhcF91cGRhdGUoKSwgd2UgY2FuIGNob29zZSB0byBw ZXJmb3JtIGEgSE9UIHVwZGF0ZSBpZiB0aGVyZSBpcwotICogc3BhY2Ugb24gdGhlIHBhZ2Ug Zm9yIHRoZSBuZXcgdHVwbGUgYW5kIHRoZSBmb2xsb3dpbmcgY29kZSBoYXMgZGV0ZXJtaW5l ZAotICogdGhhdCBIT1QgaXMgYWxsb3dlZC4KKyAqIEhlYXBVcGRhdGVIb3RBbGxvd2FibGUg LS0KKyAqCisgKiBDbGFzc2lmeSBhbiBVUERBVEUgZm9yIEhPVCBlbGlnaWJpbGl0eSBmcm9t IHRoZSBzZXQgb2YgaW5kZXhlZCBhdHRyaWJ1dGVzCisgKiBpdCBjaGFuZ2VkIChtb2RpZmll ZF9pZHhfYXR0cnMsIGNvbXB1dGVkIGJ5IHRoZSBleGVjdXRvcik6CisgKgorICogICBIRUFQ X1VQREFURV9BTExfSU5ERVhFUyAgIEhPVCBpcyBub3QgcGVybWl0dGVkOyB0aGUgbmV3IHR1 cGxlIGdvZXMgb24gYQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZXNoIFRJ RCBhbmQgZXZlcnkgaW5kZXggZ2V0cyBhIG5ldyBlbnRyeS4KKyAqICAgSEVBUF9IRUFQX09O TFlfVVBEQVRFICAgICBDbGFzc2ljIEhPVDogbm8gbm9uLXN1bW1hcml6aW5nIGluZGV4ZWQK KyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgY2hhbmdlZCwgc28g bm8gaW5kZXggbmVlZHMgYSBuZXcKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl bnRyeSBhbmQgdGhlIG5ldyB0dXBsZSBqb2lucyB0aGUgY2hhaW4gdmlhIGEKKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0X2N0aWQgZm9yd2FyZCBsaW5rLgorICogICBIRUFQ X1NFTEVDVElWRV9JTkRFWF9VUERBVEUgSE9UIHdpdGggc2VsZWN0aXZlIGluZGV4IHVwZGF0 ZTogYXQgbGVhc3Qgb25lCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uLXN1 bW1hcml6aW5nIGluZGV4J3MgYXR0cmlidXRlIGNoYW5nZWQsIGJ1dAorICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRoZSBuZXcgdHVwbGUgY2FuIHN0aWxsIGpvaW4gdGhlIEhP VCBjaGFpbiBvbgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzYW1lIHBh Z2U7IG9ubHkgdGhlIGluZGV4ZXMgd2hvc2UKKyAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBhdHRyaWJ1dGVzIGNoYW5nZWQgcmVjZWl2ZSBhIG5ldyBlbnRyeS4KKyAqCisgKiBU aGlzIHJvdXRpbmUgb25seSBjbGFzc2lmaWVzIHRoZSB1cGRhdGU7IGhlYXBfdXBkYXRlKCkg cGVyZm9ybXMgaXQgYW5kIG1heQorICogc3RpbGwgZmFsbCBiYWNrIHRvIGEgbm9uLUhPVCB1 cGRhdGUgd2hlbiB0aGUgbmV3IHR1cGxlIGRvZXMgbm90IGZpdCBvbiB0aGUKKyAqIHBhZ2Us IGV4YWN0bHkgYXMgZm9yIGNsYXNzaWMgSE9ULgogICovCi1ib29sCi1IZWFwVXBkYXRlSG90 QWxsb3dhYmxlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVk X2lkeF9hdHRycywKLQkJCQkJICAgYm9vbCAqc3VtbWFyaXplZF9vbmx5KQorSGVhcFVwZGF0 ZUluZGV4TW9kZQorSGVhcFVwZGF0ZUhvdEFsbG93YWJsZShSZWxhdGlvbiByZWxhdGlvbiwg Y29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMpCiB7Ci0JYm9vbAkJaG90X2Fs bG93ZWQ7CisJY29uc3QgQml0bWFwc2V0ICphbGxfaWR4X2F0dHJzOwogCiAJLyoKLQkgKiBM ZXQncyBiZSBvcHRpbWlzdGljIGFuZCBzdGFydCBvZmYgYnkgYXNzdW1pbmcgdGhlIGJlc3Qg Y2FzZSwgbm8gaW5kZXhlcwotCSAqIG5lZWQgdXBkYXRpbmcgYW5kIEhPVCBpcyBhbGxvd2Fi bGUuCisJICogQ2FzZSAoYSk6IG5vIGluZGV4ZWQgYXR0cmlidXRlIHdhcyBtb2RpZmllZCAt PiBjbGFzc2ljIEhPVC4KIAkgKi8KLQlob3RfYWxsb3dlZCA9IHRydWU7Ci0JKnN1bW1hcml6 ZWRfb25seSA9IGZhbHNlOworCWlmIChibXNfaXNfZW1wdHkobW9kaWZpZWRfaWR4X2F0dHJz KSkKKwkJcmV0dXJuIEhFQVBfSEVBUF9PTkxZX1VQREFURTsKIAogCS8qCi0JICogQ2hlY2sg Zm9yIGNhc2UgKGEpOyB3aGVuIHRoZXJlIGFyZSBubyBtb2RpZmllZCBpbmRleCBhdHRyaWJ1 dGVzIEhPVCBpcwotCSAqIGFsbG93ZWQuCisJICogQ2FzZSAoYik6IGF0IGxlYXN0IG9uZSBp bmRleGVkIGF0dHJpYnV0ZSBjaGFuZ2VkLiAgSWYgYWxsIG9mIHRoZW0gYXJlCisJICogdXNl ZCBvbmx5IGJ5IHN1bW1hcml6aW5nIGluZGV4ZXMsIHdlIGNhbiBzdGlsbCB0YWtlIHRoZSBj bGFzc2ljIEhPVAorCSAqIHBhdGggLS0gdGhlIHN1bW1hcml6aW5nIGluZGV4IEFNIGdldHMg YSBuZXcgZW50cnkgdmlhIGFtaW5zZXJ0IGFuZCBubworCSAqIG5vbi1zdW1tYXJpemluZyBp bmRleCBuZWVkcyB0byBjaGFuZ2UuCiAJICovCi0JaWYgKGJtc19pc19lbXB0eShtb2RpZmll ZF9pZHhfYXR0cnMpKQotCQlob3RfYWxsb3dlZCA9IHRydWU7Ci0JZWxzZQotCXsKLQkJQml0 bWFwc2V0ICAqc3VtX2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRp b24sCi0JCQkJCQkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklUTUFQX1NVTU1BUklaRUQpOwor CWlmIChibXNfaXNfc3Vic2V0KG1vZGlmaWVkX2lkeF9hdHRycywgUmVsYXRpb25HZXRJbmRl eEF0dHJCaXRtYXBOb0NvcHkocmVsYXRpb24sCisJCQkJCQkJCQkJCQlJTkRFWF9BVFRSX0JJ VE1BUF9TVU1NQVJJWkVEKSkpCisJCXJldHVybiBIRUFQX0hFQVBfT05MWV9VUERBVEU7CiAK LQkJLyoKLQkJICogQXQgbGVhc3Qgb25lIGluZGV4IGF0dHJpYnV0ZSB3YXMgbW9kaWZpZWQs IGJ1dCBpcyB0aGlzIGNhc2UgKGIpCi0JCSAqIHdoZXJlIGFsbCB0aGUgbW9kaWZpZWQgaW5k ZXggYXR0cmlidXRlcyBhcmUgb25seSB1c2VkIGJ5Ci0JCSAqIHN1bW1hcml6aW5nIGluZGV4 ZXM/ICBJZiBpdCBpcywgdGhlbiB3ZSBuZWVkIHRvIHVwZGF0ZSB0aG9zZQotCQkgKiBpbmRl eGVzLCBidXQgdGhpcyB1cGRhdGUgY2FuIHN0aWxsIGJlIGNvbnNpZGVyZWQgaGVhcC1vbmx5 IChIT1QpCi0JCSAqIGFuZCBhdm9pZCB1cGRhdGluZyBhbnkgbm9uLXN1bW1hcml6aW5nIGlu ZGV4ZXMgb24gdGhlIHJlbGF0aW9uLgotCQkgKi8KLQkJaWYgKGJtc19pc19zdWJzZXQobW9k aWZpZWRfaWR4X2F0dHJzLCBzdW1fYXR0cnMpKQotCQl7Ci0JCQlob3RfYWxsb3dlZCA9IHRy dWU7Ci0JCQkqc3VtbWFyaXplZF9vbmx5ID0gdHJ1ZTsKLQkJfQotCQllbHNlCi0JCXsKLQkJ CS8qCi0JCQkgKiBOb3cgd2Uga25vdyBhKSBvbmUgb3IgbW9yZSBpbmRleGVkIGF0dHJpYnV0 ZXMgd2VyZSBtb2RpZmllZAotCQkJICogKGNoYW5nZWQgdmFsdWUsIG5vdCBqdXN0IHJlZmVy ZW5jZWQgd2l0aGluIHRoZSBVUERBVEUpIGFuZCB0aGF0Ci0JCQkgKiBiKSBhdCBsZWFzdCBv bmUgb2YgdGhvc2UgYXR0cmlidXRlcyBpcyB1c2VkIGJ5IGEKLQkJCSAqIG5vbi1zdW1tYXJp emluZyBpbmRleC4gSE9UIGlzIG5vdCBhbGxvd2VkLgotCQkJICovCi0JCQlob3RfYWxsb3dl ZCA9IGZhbHNlOwotCQl9CisJLyoKKwkgKiBBIG5vbi1zdW1tYXJpemluZyBpbmRleGVkIGF0 dHJpYnV0ZSBjaGFuZ2VkLiAgSE9ULWluZGV4ZWQgaXMgc3VwcG9ydGVkCisJICogd2hlbmV2 ZXIgdGhlIHJlbGF0aW9uIGNhbiB0b2xlcmF0ZSBleHRyYSBpbmRleCBlbnRyaWVzIGluIGEg Y2hhaW4gd2hvc2UKKwkgKiBwZXItY2hhaW4tbWVtYmVyIGtleXMgbWF5IGRpZmZlci4gIFRo ZSBsb2dpY2FsLXJlcGxpY2F0aW9uIGFwcGx5IHBhdGgKKwkgKiBpcyBnYXRlZCBhYm92ZSBi eSBob3RfaW5kZXhlZF9vbl9hcHBseS4gIFRoZSByZW1haW5pbmcKKwkgKiBIRUFQX1VQREFU RV9BTExfSU5ERVhFUyBmYWxsYmFja3MgYXJlOgorCSAqCisJICogLSBBbiBVUERBVEUgdGhh dCBtb2RpZmllcyBhbiBhdHRyaWJ1dGUgcmVmZXJlbmNlZCBieSBhbiBleHByZXNzaW9uCisJ ICogaW5kZXguICBTZWxlY3RpdmUgbWFpbnRlbmFuY2Ugb2YgYW4gZXhwcmVzc2lvbiBpbmRl eCByZXF1aXJlcworCSAqIGV2YWx1YXRpbmcgdGhlIGluZGV4ZWQgZXhwcmVzc2lvbiB0byBk ZWNpZGUgd2hldGhlciBpdHMgdmFsdWUgKGhlbmNlCisJICogaXRzIGVudHJ5KSBjaGFuZ2Vk OyB0aGF0IGV4cHJlc3Npb24tYXdhcmUgcGF0aCBpcyBub3QgaW1wbGVtZW50ZWQgeWV0LAor CSAqIHNvIHN1Y2ggYW4gdXBkYXRlIGZhbGxzIGJhY2sgdG8gbm9uLUhPVC4gIFVwZGF0ZXMg dGhhdCBkbyBub3QgdG91Y2ggYW55CisJICogZXhwcmVzc2lvbi1pbmRleCBhdHRyaWJ1dGUg c3RheSBlbGlnaWJsZS4KKwkgKgorCSAqIC0gQW4gVVBEQVRFIHRoYXQgbW9kaWZpZXMgZXZl cnkgaW5kZXhlZCBhdHRyaWJ1dGUgb2YgdGhlIHJlbGF0aW9uLgorCSAqIEhPVC1pbmRleGVk IG9ubHkgcGF5cyBvZmYgd2hlbiBpdCBjYW4gc2tpcCBtYWludGFpbmluZyBhdCBsZWFzdCBv bmUKKwkgKiBpbmRleCB3aG9zZSBrZXkgZGlkIG5vdCBjaGFuZ2U7IGlmIGFsbCBpbmRleGVk IGF0dHJpYnV0ZXMgY2hhbmdlZCB0aGVyZQorCSAqIGlzIG5vdGhpbmcgdG8gc2tpcCwgc28g YSBwbGFpbiBub24tSE9UIHVwZGF0ZSBpcyBjaGVhcGVyIChpdCBhdm9pZHMgdGhlCisJICog Y2hhaW4td2FsayBhbmQgYml0bWFwLW92ZXJsYXAgb3ZlcmhlYWQpLgorCSAqLworCWFsbF9p ZHhfYXR0cnMgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcE5vQ29weShyZWxhdGlvbiwK KwkJCQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRNQVBfSU5ERVhFRCk7CiAKLQkJYm1zX2Zy ZWUoc3VtX2F0dHJzKTsKLQl9CisJLyoKKwkgKiBTeXN0ZW0gY2F0YWxvZ3Mga2VlcCBjbGFz c2ljIEhPVCAoYW4gVVBEQVRFIHRvdWNoaW5nIG5vIG5vbi1zdW1tYXJpemluZworCSAqIGlu ZGV4ZWQgYXR0cmlidXRlIGFscmVhZHkgcmV0dXJuZWQgSEVBUF9IRUFQX09OTFlfVVBEQVRF IGFib3ZlKSwgYnV0IGRvCisJICogTk9UIHRha2UgdGhlIEhPVC1pbmRleGVkIHBhdGg6IGNh dGFsb2cgcmVhZHMgZ28gdGhyb3VnaCBtYW55IGNvZGUgcGF0aHMKKwkgKiAoc3lzdGFibGUg aW5kZXggc2NhbnMsIFNuYXBzaG90RGlydHkgdW5pcXVlIGNoZWNrcywgc2Vxc2NhbnMgaW4K KwkgKiBvcmRlcmluZ3MgdGhlIGNoYWluLXdhbGsgZGVkdXAgZG9lcyBub3QgY292ZXIpIHRo YXQgYXJlIG5vdCBhbGwgcHJvdmVuCisJICogc2FmZSBhZ2FpbnN0IHN0YWxlIGNoYWluIGVu dHJpZXMuICBGYWxsaW5nIGJhY2sgdG8gYSBub24tSE9UIHVwZGF0ZQorCSAqIGhlcmUgaXMg ZXhhY3RseSB0aGUgcHJlLUhPVC1pbmRleGVkIGJlaGF2aW91ciBmb3Igc3VjaCBjYXRhbG9n IHVwZGF0ZXMuCisJICovCisJaWYgKElzQ2F0YWxvZ1JlbGF0aW9uKHJlbGF0aW9uKSkKKwkJ cmV0dXJuIEhFQVBfVVBEQVRFX0FMTF9JTkRFWEVTOwogCi0JcmV0dXJuIGhvdF9hbGxvd2Vk OworCS8qCisJICogRGlzcXVhbGlmeSB3aGVuIHRoZSB1cGRhdGUgdG91Y2hlcyBhbiBhdHRy aWJ1dGUgcmVmZXJlbmNlZCBieSBhbgorCSAqIGV4cHJlc3Npb24gaW5kZXggKHNlZSBjYXNl IDEgYWJvdmUpLiAgVXBkYXRlcyB0aGF0IGxlYXZlIGV2ZXJ5CisJICogZXhwcmVzc2lvbi1p bmRleCBhdHRyaWJ1dGUgdW5jaGFuZ2VkIHJlbWFpbiBlbGlnaWJsZS4KKwkgKi8KKwlpZiAo Ym1zX292ZXJsYXAobW9kaWZpZWRfaWR4X2F0dHJzLAorCQkJCQlSZWxhdGlvbkdldEluZGV4 QXR0ckJpdG1hcE5vQ29weShyZWxhdGlvbiwKKwkJCQkJCQkJCQkJCQkgSU5ERVhfQVRUUl9C SVRNQVBfRVhQUkVTU0lPTikpKQorCQlyZXR1cm4gSEVBUF9VUERBVEVfQUxMX0lOREVYRVM7 CisKKwkvKgorCSAqIElmIGV2ZXJ5IGluZGV4ZWQgYXR0cmlidXRlIGNoYW5nZWQsIGEgSE9U LXNlbGVjdGl2ZSB1cGRhdGUgY291bGQgbm90CisJICogc2tpcCBhbnkgaW5kZXggLS0gZWFj aCBpbmRleCBuZWVkcyBhIGZyZXNoIGVudHJ5IGFueXdheSAtLSBzbyBpdCB3b3VsZAorCSAq IHBheSB0aGUgSE9UL1NJVSBjaGFpbi13YWxrIGFuZCBiaXRtYXAtb3ZlcmxhcCBvdmVyaGVh ZCBmb3Igbm8gc2F2ZWQKKwkgKiBpbmRleCBtYWludGVuYW5jZS4gIEZhbGwgYmFjayB0byBh IHBsYWluIG5vbi1IT1QgdXBkYXRlIGluIHRoYXQgY2FzZS4KKwkgKi8KKwlpZiAoYm1zX2lz X3N1YnNldChhbGxfaWR4X2F0dHJzLCBtb2RpZmllZF9pZHhfYXR0cnMpKQorCQlyZXR1cm4g SEVBUF9VUERBVEVfQUxMX0lOREVYRVM7CisKKwlyZXR1cm4gSEVBUF9TRUxFQ1RJVkVfSU5E RVhfVVBEQVRFOwogfQogCiAvKgpAQCAtNDQwMiwxNSArNDU0NCwzMyBAQCBMb2NrVHVwbGVN b2RlCiBIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21vZGUoUmVsYXRpb24gcmVsYXRpb24sIGNv bnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzKQogewogCUxvY2tUdXBsZU1vZGUg bG9ja21vZGUgPSBMb2NrVHVwbGVFeGNsdXNpdmU7CisJY29uc3QgQml0bWFwc2V0ICprZXlf YXR0cnM7CisKKwkvKgorCSAqIENvbW1vbiBmYXN0IHBhdGg6IHdoZW4gbm8gaW5kZXhlZCBh dHRyaWJ1dGUgY2hhbmdlZCAoZS5nLiBwZ2JlbmNoLXN0eWxlCisJICogIlVQREFURSB0IFNF VCBub25faWR4X2NvbCA9IC4uLiIgb3IgdGhlIHdpZGVfMCAiVVBEQVRFIHQgU0VUIGlkID0g aWQiCisJICogd29ya2xvYWQgYWZ0ZXIgdGhlIGV4ZWN1dG9yJ3MgZmFzdCBwYXRoIGluIEV4 ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKSwKKwkgKiBtb2RpZmllZF9pZHhfYXR0cnMgaXMg ZW1wdHkgYW5kIGEga2V5IGNvbHVtbiBjYW5ub3QgaGF2ZSBjaGFuZ2VkLiAgU2tpcAorCSAq IHRoZSByZWxjYWNoZSBsb29rdXAgYW5kIHJldHVybiB0aGUgd2Vha2VyIGxvY2sgaW1tZWRp YXRlbHkuICBBdCBoaWdoCisJICogVFBTIHRoaXMgYXZvaWRzIGEgcGVyLVVQREFURSBSZWxh dGlvbkdldEluZGV4QXR0ckJpdG1hcCBjYWxsIChhbmQgaXRzCisJICogYm1zX2NvcHkpIG9u IHRoZSBLRVkgYml0bWFwLgorCSAqLworCWlmIChibXNfaXNfZW1wdHkobW9kaWZpZWRfaWR4 X2F0dHJzKSkKKwkJcmV0dXJuIExvY2tUdXBsZU5vS2V5RXhjbHVzaXZlOwogCi0JQml0bWFw c2V0ICAqa2V5X2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAocmVsYXRpb24s Ci0JCQkJCQkJCQkJCQkJICAgSU5ERVhfQVRUUl9CSVRNQVBfS0VZKTsKKwkvKgorCSAqIEJv cnJvdyB0aGUgY2FjaGVkIGJpdG1hcCByYXRoZXIgdGhhbiBjb3B5aW5nIGl0OyB3ZSBvbmx5 IHRlc3Qgb3ZlcmxhcAorCSAqIGFuZCBuZXZlciBtdXRhdGUgb3IgZnJlZSBrZXlfYXR0cnMu ICBIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21vZGUgcnVucworCSAqIHdpdGhvdXQgYnVmZmVy IGxvY2tzIGJ1dCB0aGUgcmVsY2FjaGUgZW50cnkgaXMgcGlubmVkIGJ5IHRoZSBjYWxsZXIn cworCSAqIGxvY2sgb24gdGhlIHJlbGF0aW9uLCBhbmQgd2UgdG91Y2ggbm90aGluZyBiZXR3 ZWVuIGZldGNoIGFuZCB0aGUKKwkgKiBibXNfb3ZlcmxhcCB0aGF0IGNvdWxkIHRyaWdnZXIg YSByZWxjYWNoZSBpbnZhbGlkYXRpb24uCisJICovCisJa2V5X2F0dHJzID0gUmVsYXRpb25H ZXRJbmRleEF0dHJCaXRtYXBOb0NvcHkocmVsYXRpb24sCisJCQkJCQkJCQkJCQkgSU5ERVhf QVRUUl9CSVRNQVBfS0VZKTsKIAogCWlmICghYm1zX292ZXJsYXAobW9kaWZpZWRfaWR4X2F0 dHJzLCBrZXlfYXR0cnMpKQogCQlsb2NrbW9kZSA9IExvY2tUdXBsZU5vS2V5RXhjbHVzaXZl OwogCi0JYm1zX2ZyZWUoa2V5X2F0dHJzKTsKLQogCXJldHVybiBsb2NrbW9kZTsKIH0KIApA QCAtNDQ5NSw2ICs0NjU1LDcxIEBAIEhlYXBVcGRhdGVNb2RpZmllZElkeEF0dHJzKFJlbGF0 aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgb2xkdHVwLCBIZWFwVHVwbGUgbmV3dHVwCiAJcmV0 dXJuIG1vZGlmaWVkX2lkeF9hdHRyczsKIH0KIAorLyoKKyAqIGhlYXBfZm9ybV9ob3RfaW5k ZXhlZF90dXBsZQorICoKKyAqIFJldHVybiBhIG5ld2x5IHBhbGxvYydkIGNvcHkgb2YgdHVw IHRoYXQgY2FycmllcyB0aGUgZml4ZWQtc2l6ZQorICogaW5saW5lLXRyYWlsaW5nIG1vZGlm aWVkLWF0dHJpYnV0ZXMgYml0bWFwIChzZWUgYWNjZXNzL2hvdF9pbmRleGVkLmgpLAorICog d2l0aCBIRUFQX0lOREVYRURfVVBEQVRFRCBzZXQuICBUaGUgYml0bWFwIHJlY29yZHMgdGhl IHVzZXIgYXR0cmlidXRlcyBpbgorICogbW9kaWZpZWRfaWR4X2F0dHJzICh0aGUgaW5kZXhl ZCBhdHRyaWJ1dGVzIHRoaXMgVVBEQVRFIGNoYW5nZWQsIHVzaW5nIHRoZQorICogRmlyc3RM b3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciBvZmZzZXQgY29udmVudGlvbik7IGFuIGVt cHR5IHNldCB5aWVsZHMKKyAqIGFuIGFsbC16ZXJvIGJpdG1hcCwgd2hpY2ggaXMgY29ycmVj dCBmb3IgdGhlIGNoYWluLXVuaWZvcm1pdHkgcHJvbW90aW9uIG9mCisgKiBhIGNsYXNzaWMt SE9UIHVwZGF0ZSBvbiBhbiBhbHJlYWR5LUhPVC1pbmRleGVkIGNoYWluLgorICoKKyAqIFRo ZSBiaXRtYXAgb2NjdXBpZXMgdGhlIGZpbmFsIEhvdEluZGV4ZWRCaXRtYXBCeXRlcyhuYXR0 cykgYnl0ZXMgb2YgdGhlCisgKiB0dXBsZSwgd2hlcmUgbmF0dHMgaXMgdGhlIHR1cGxlJ3Mg b3duIGF0dHJpYnV0ZSBjb3VudAorICogKEhlYXBUdXBsZUhlYWRlckdldE5hdHRzKSAtLSB3 aGljaCBhIHJlYWRlciByZWNvdmVycyBmcm9tIHRoZSBzdG9yZWQgdHVwbGUsCisgKiBzbyB0 aGUgYml0bWFwIHN0YXlzIGxvY2F0YWJsZSBldmVuIGFmdGVyIHRoZSByZWxhdGlvbidzIG5h dHRzIGxhdGVyIGdyb3dzCisgKiB2aWEgQUREIENPTFVNTi4gIEZvciBhIGZyZXNobHkgZm9y bWVkIFVQREFURSB0dXBsZSB0aGlzIGVxdWFscyB0aGUKKyAqIHJlbGF0aW9uJ3MgY3VycmVu dCBuYXR0czsgd2UgYXNzZXJ0IHRoYXQgdG8gY2F0Y2ggYW55IGZ1dHVyZSBkaXZlcmdlbmNl LgorICogVGhlIGJpdG1hcCBzaXRzIHBhc3QgdGhlIGF0dHJpYnV0ZSBkYXRhLCBzbyBoZWFw X2RlZm9ybV90dXBsZSBuZXZlciBzZWVzCisgKiBpdC4gIFRoZSBjYWxsZXIgbXVzdCBoYXZl IHJlc2VydmVkIHJvb20gZm9yIHRoZSBleHRyYSBieXRlcyBpbiB0aGUgcGFnZS1maXQKKyAq IGNhbGN1bGF0aW9uLCBhbmQgbXVzdCBmcmVlIHRoZSByZXR1cm5lZCB0dXBsZS4KKyAqLwor c3RhdGljIEhlYXBUdXBsZQoraGVhcF9mb3JtX2hvdF9pbmRleGVkX3R1cGxlKEhlYXBUdXBs ZSB0dXAsIGludCByZWxuYXR0cywKKwkJCQkJCQljb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVk X2lkeF9hdHRycykKK3sKKwlpbnQJCQluYXR0cyA9IEhlYXBUdXBsZUhlYWRlckdldE5hdHRz KHR1cC0+dF9kYXRhKTsKKwlTaXplCQlibWJ5dGVzOworCVNpemUJCW5ld2xlbjsKKwlIZWFw VHVwbGUJbmV3dHVwbGU7CisJdWludDgJICAgKmJpdG1hcDsKKwlpbnQJCQl4ID0gLTE7CisK KwkvKgorCSAqIFRoZSBiaXRtYXAgaXMgc2l6ZWQgYW5kIGxvY2F0ZWQgYnkgdGhlIHR1cGxl J3Mgb3duIG5hdHRzOyBhIGZyZXNobHkKKwkgKiBmb3JtZWQgVVBEQVRFIHR1cGxlIGNhcnJp ZXMgdGhlIGZ1bGwgcmVsYXRpb24gbmF0dHMuICBJZiB0aGVzZSBldmVyCisJICogZGl2ZXJn ZSB0aGUgcGFnZS1maXQgcmVzZXJ2YXRpb24gKG1hZGUgd2l0aCByZWxuYXR0cykgYW5kIHRo ZSBhY3R1YWwKKwkgKiBiaXRtYXAgc2l6ZSB3b3VsZCBkaXNhZ3JlZS4KKwkgKi8KKwlBc3Nl cnQobmF0dHMgPT0gcmVsbmF0dHMpOworCWJtYnl0ZXMgPSBIb3RJbmRleGVkQml0bWFwQnl0 ZXMobmF0dHMpOworCW5ld2xlbiA9IHR1cC0+dF9sZW4gKyBibWJ5dGVzOworCisJbmV3dHVw bGUgPSAoSGVhcFR1cGxlKSBwYWxsb2MwKEhFQVBUVVBMRVNJWkUgKyBuZXdsZW4pOworCW5l d3R1cGxlLT50X2xlbiA9IG5ld2xlbjsKKwluZXd0dXBsZS0+dF9zZWxmID0gdHVwLT50X3Nl bGY7CisJbmV3dHVwbGUtPnRfdGFibGVPaWQgPSB0dXAtPnRfdGFibGVPaWQ7CisJbmV3dHVw bGUtPnRfZGF0YSA9IChIZWFwVHVwbGVIZWFkZXIpICgoY2hhciAqKSBuZXd0dXBsZSArIEhF QVBUVVBMRVNJWkUpOworCisJLyogY29weSB0aGUgb3JpZ2luYWwgdHVwbGU7IHRoZSB0cmFp bGluZyBiaXRtYXAgYnl0ZXMgc3RheSB6ZXJvICovCisJbWVtY3B5KG5ld3R1cGxlLT50X2Rh dGEsIHR1cC0+dF9kYXRhLCB0dXAtPnRfbGVuKTsKKwluZXd0dXBsZS0+dF9kYXRhLT50X2lu Zm9tYXNrMiB8PSBIRUFQX0lOREVYRURfVVBEQVRFRDsKKworCWJpdG1hcCA9IEhvdEluZGV4 ZWRHZXRNb2RpZmllZEJpdG1hcFJXKG5ld3R1cGxlLT50X2RhdGEsIG5ld2xlbiwgbmF0dHMp OworCXdoaWxlICgoeCA9IGJtc19uZXh0X21lbWJlcihtb2RpZmllZF9pZHhfYXR0cnMsIHgp KSA+PSAwKQorCXsKKwkJQXR0ck51bWJlcglhdHRudW0gPSB4ICsgRmlyc3RMb3dJbnZhbGlk SGVhcEF0dHJpYnV0ZU51bWJlcjsKKworCQkvKiBvbmx5IHVzZXIgYXR0cmlidXRlcyBjYW4g YmUgbW9kaWZpZWQtYW5kLWluZGV4ZWQgKi8KKwkJaWYgKGF0dG51bSA+PSAxKQorCQkJSG90 SW5kZXhlZFNldEF0dHJNb2RpZmllZChiaXRtYXAsIGF0dG51bSk7CisJfQorCisJcmV0dXJu IG5ld3R1cGxlOworfQorCiAvKgogICoJc2ltcGxlX2hlYXBfdXBkYXRlIC0gcmVwbGFjZSBh IHR1cGxlCiAgKgpAQCAtNDUwNSw3ICs0NzMwLDcgQEAgSGVhcFVwZGF0ZU1vZGlmaWVkSWR4 QXR0cnMoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSBvbGR0dXAsIEhlYXBUdXBsZSBu ZXd0dXAKICAqLwogdm9pZAogc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9u LCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0dXAsCi0JCQkJICAg VFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpCisJCQkJICAgYm9vbCAqdXBkYXRl X2FsbF9pbmRleGVzKQogewogCVRNX1Jlc3VsdAlyZXN1bHQ7CiAJVE1fRmFpbHVyZURhdGEg dG1mZDsKQEAgLTQ1MTQsMTQgKzQ3MzksMTUgQEAgc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0 aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0 dXAKIAlCdWZmZXJIZWFwVHVwbGVUYWJsZVNsb3QgKmJzbG90OwogCUhlYXBUdXBsZQlvbGR0 dXA7CiAJYm9vbAkJc2hvdWxkRnJlZSA9IHRydWU7Ci0JQml0bWFwc2V0ICAqaWR4X2F0dHJz LAotCQkJICAgKm1vZGlmaWVkX2lkeF9hdHRyczsKLQlib29sCQlob3RfYWxsb3dlZCwKLQkJ CQlzdW1tYXJpemVkX29ubHk7CisJQml0bWFwc2V0ICAqaWR4X2F0dHJzOworCUJpdG1hcHNl dCAgKmxvY2FsX21vZGlmaWVkX2lkeF9hdHRyczsKKwlIZWFwVXBkYXRlSW5kZXhNb2RlIGhv dF9tb2RlOwogCUJ1ZmZlcgkJYnVmZmVyOwogCiAJQXNzZXJ0KEl0ZW1Qb2ludGVySXNWYWxp ZChvdGlkKSk7CiAKKwkqdXBkYXRlX2FsbF9pbmRleGVzID0gZmFsc2U7CisKIAkvKgogCSAq IEZldGNoIHRoaXMgYml0bWFwIG9mIGludGVyZXN0aW5nIGF0dHJpYnV0ZXMgZnJvbSByZWxj YWNoZSBiZWZvcmUKIAkgKiBvYnRhaW5pbmcgYSBidWZmZXIgbG9jayBiZWNhdXNlIGlmIHdl IGFyZSBkb2luZyBhbiB1cGRhdGUgb24gb25lIG9mIHRoZQpAQCAtNDU3MSw4ICs0Nzk3LDYg QEAgc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9p bnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0dXAKIAkJICovCiAJCUFzc2VydChSZWxhdGlv blN1cHBvcnRzU3lzQ2FjaGUoUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbikpKTsKIAotCQkq dXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25lOwotCiAJCS8qIG1vZGlmaWVkX2lkeF9hdHRycyBu b3QgeWV0IGluaXRpYWxpemVkICovCiAJCWJtc19mcmVlKGlkeF9hdHRycyk7CiAJCUV4ZWNE cm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CkBAIC00NTg4LDEzICs0ODEyLDE0IEBA IHNpbXBsZV9oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50 ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgdHVwCiAJRXhlY1N0b3JlUGlubmVkQnVmZmVySGVh cFR1cGxlKCZic2xvdC0+YmFzZS50dXBkYXRhLCBzbG90LCBidWZmZXIpOwogCW9sZHR1cCA9 IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGUoc2xvdCwgZmFsc2UsICZzaG91bGRGcmVlKTsKIAot CW1vZGlmaWVkX2lkeF9hdHRycyA9IEhlYXBVcGRhdGVNb2RpZmllZElkeEF0dHJzKHJlbGF0 aW9uLCBvbGR0dXAsIHR1cCk7Ci0JbG9ja21vZGUgPSBIZWFwVXBkYXRlRGV0ZXJtaW5lTG9j a21vZGUocmVsYXRpb24sIG1vZGlmaWVkX2lkeF9hdHRycyk7Ci0JaG90X2FsbG93ZWQgPSBI ZWFwVXBkYXRlSG90QWxsb3dhYmxlKHJlbGF0aW9uLCBtb2RpZmllZF9pZHhfYXR0cnMsICZz dW1tYXJpemVkX29ubHkpOworCWxvY2FsX21vZGlmaWVkX2lkeF9hdHRycyA9IEhlYXBVcGRh dGVNb2RpZmllZElkeEF0dHJzKHJlbGF0aW9uLCBvbGR0dXAsIHR1cCk7CisJbG9ja21vZGUg PSBIZWFwVXBkYXRlRGV0ZXJtaW5lTG9ja21vZGUocmVsYXRpb24sIGxvY2FsX21vZGlmaWVk X2lkeF9hdHRycyk7CisJaG90X21vZGUgPSBIZWFwVXBkYXRlSG90QWxsb3dhYmxlKHJlbGF0 aW9uLCBsb2NhbF9tb2RpZmllZF9pZHhfYXR0cnMpOwogCi0JcmVzdWx0ID0gaGVhcF91cGRh dGUocmVsYXRpb24sIG90aWQsIHR1cCwgR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKSwgMCwK KwlyZXN1bHQgPSBoZWFwX3VwZGF0ZShyZWxhdGlvbiwgb3RpZCwgdHVwLCBHZXRDdXJyZW50 Q29tbWFuZElkKHRydWUpLAorCQkJCQkJIDAgLyogb3B0aW9ucyAqLyAsCiAJCQkJCQkgSW52 YWxpZFNuYXBzaG90LCB0cnVlIC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAsCi0JCQkJCQkgJnRt ZmQsIGxvY2ttb2RlLCBtb2RpZmllZF9pZHhfYXR0cnMsIGhvdF9hbGxvd2VkKTsKKwkJCQkJ CSAmdG1mZCwgbG9ja21vZGUsIGxvY2FsX21vZGlmaWVkX2lkeF9hdHRycywgaG90X21vZGUp OwogCiAJaWYgKHNob3VsZEZyZWUpCiAJCWhlYXBfZnJlZXR1cGxlKG9sZHR1cCk7CkBAIC00 NjAyLDE0ICs0ODI3LDYgQEAgc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9u LCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0dXAKIAlFeGVjRHJv cFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOwogCWJtc19mcmVlKGlkeF9hdHRycyk7CiAK LQkvKgotCSAqIERlY2lkZSB3aGV0aGVyIG5ldyBpbmRleCBlbnRyaWVzIGFyZSBuZWVkZWQg Zm9yIHRoZSB0dXBsZQotCSAqCi0JICogSWYgdGhlIHVwZGF0ZSBpcyBub3QgSE9ULCB3ZSBt dXN0IHVwZGF0ZSBhbGwgaW5kZXhlcy4gSWYgdGhlIHVwZGF0ZSBpcwotCSAqIEhPVCwgaXQg Y291bGQgYmUgdGhhdCB3ZSB1cGRhdGVkIHN1bW1hcml6ZWQgY29sdW1ucywgc28gd2UgZWl0 aGVyCi0JICogdXBkYXRlIG9ubHkgc3VtbWFyaXplZCBpbmRleGVzLCBvciBub25lIGF0IGFs bC4KLQkgKi8KLQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25lOwogCXN3aXRjaCAocmVzdWx0 KQogCXsKIAkJY2FzZSBUTV9TZWxmTW9kaWZpZWQ6CkBAIC00NjE4LDExICs0ODM1LDE0IEBA IHNpbXBsZV9oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50 ZXJEYXRhICpvdGlkLCBIZWFwVHVwbGUgdHVwCiAJCQlicmVhazsKIAogCQljYXNlIFRNX09r OgotCQkJLyogZG9uZSBzdWNjZXNzZnVsbHkgKi8KLQkJCWlmICghSGVhcFR1cGxlSXNIZWFw T25seSh0dXApKQotCQkJCSp1cGRhdGVfaW5kZXhlcyA9IFRVX0FsbDsKLQkJCWVsc2UgaWYg KHN1bW1hcml6ZWRfb25seSkKLQkJCQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9TdW1tYXJpemlu ZzsKKworCQkJLyoKKwkJCSAqIElmIHRoZSB0dXBsZSBzdG9yZWQgYnkgaGVhcF91cGRhdGUg aXMgaGVhcC1vbmx5IHRoaXMgd2FzIGEgSE9UCisJCQkgKiB1cGRhdGUgYW5kIChzdWJqZWN0 IHRvIHBlci1pbmRleCBjaGVja3MpIG5vdCBldmVyeSBpbmRleCBuZWVkcworCQkJICogYSBu ZXcgZW50cnk7IG90aGVyd2lzZSBldmVyeSBpbmRleCBtdXN0IGdldCBvbmUgcG9pbnRpbmcg YXQgdGhlCisJCQkgKiBuZXcgdHVwbGUncyBUSUQuCisJCQkgKi8KKwkJCSp1cGRhdGVfYWxs X2luZGV4ZXMgPSAhSGVhcFR1cGxlSXNIZWFwT25seSh0dXApOwogCQkJYnJlYWs7CiAKIAkJ Y2FzZSBUTV9VcGRhdGVkOgpAQCAtNDYzNyw2ICs0ODU3LDggQEAgc2ltcGxlX2hlYXBfdXBk YXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKm90aWQsIEhl YXBUdXBsZSB0dXAKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgaGVhcF91cGRhdGUg c3RhdHVzOiAldSIsIHJlc3VsdCk7CiAJCQlicmVhazsKIAl9CisKKwlibXNfZnJlZShsb2Nh bF9tb2RpZmllZF9pZHhfYXR0cnMpOwogfQogCiAKQEAgLTgyMDEsMzkgKzg0MjMsNTIgQEAg aW5kZXhfZGVsZXRlX2NoZWNrX2h0aWQoVE1fSW5kZXhEZWxldGVPcCAqZGVsc3RhdGUsCiAJ QXNzZXJ0KE9mZnNldE51bWJlcklzVmFsaWQoaXN0YXR1cy0+aWR4b2ZmbnVtKSk7CiAKIAlp ZiAodW5saWtlbHkoaW5kZXhwYWdlaG9mZm51bSA+IG1heG9mZikpCi0JCWVyZXBvcnQoRVJS T1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9JTkRFWF9DT1JSVVBURUQpLAotCQkJCSBlcnJt c2dfaW50ZXJuYWwoImhlYXAgdGlkIGZyb20gaW5kZXggdHVwbGUgKCV1LCV1KSBwb2ludHMg cGFzdCBlbmQgb2YgaGVhcCBwYWdlIGxpbmUgcG9pbnRlciBhcnJheSBhdCBvZmZzZXQgJXUg b2YgYmxvY2sgJXUgaW4gaW5kZXggXCIlc1wiIiwKLQkJCQkJCQkJIEl0ZW1Qb2ludGVyR2V0 QmxvY2tOdW1iZXIoaHRpZCksCi0JCQkJCQkJCSBpbmRleHBhZ2Vob2ZmbnVtLAotCQkJCQkJ CQkgaXN0YXR1cy0+aWR4b2ZmbnVtLCBkZWxzdGF0ZS0+aWJsa251bSwKLQkJCQkJCQkJIFJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKGRlbHN0YXRlLT5pcmVsKSkpKTsKKwl7CisJCS8qCisJ CSAqIFVuZGVyIEhPVC1pbmRleGVkIHVwZGF0ZXMsIGEgc3RhbGUgYnRyZWUgZW50cnkgY2Fu IG91dGxpdmUgaGVhcAorCQkgKiBwcnVuaW5nL3ZhY3V1bSBvZiB0aGUgcGFnZSBpdCB0YXJn ZXRzOyBpZiB0aGUgdGFyZ2V0IG9mZnNldCBpcyBwYXN0CisJCSAqIHRoZSBjdXJyZW50IG1h eCwgdHJlYXQgYXMgdmFjdXVtYWJsZSBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4KKwkJICogaW5k ZXgtY29ycnVwdGlvbiBlcnJvci4KKwkJICovCisJCXJldHVybjsKKwl9CiAKIAlpaWQgPSBQ YWdlR2V0SXRlbUlkKHBhZ2UsIGluZGV4cGFnZWhvZmZudW0pOwogCWlmICh1bmxpa2VseSgh SXRlbUlkSXNVc2VkKGlpZCkpKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVS UkNPREVfSU5ERVhfQ09SUlVQVEVEKSwKLQkJCQkgZXJybXNnX2ludGVybmFsKCJoZWFwIHRp ZCBmcm9tIGluZGV4IHR1cGxlICgldSwldSkgcG9pbnRzIHRvIHVudXNlZCBoZWFwIHBhZ2Ug aXRlbSBhdCBvZmZzZXQgJXUgb2YgYmxvY2sgJXUgaW4gaW5kZXggXCIlc1wiIiwKLQkJCQkJ CQkJIEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoaHRpZCksCi0JCQkJCQkJCSBpbmRleHBh Z2Vob2ZmbnVtLAotCQkJCQkJCQkgaXN0YXR1cy0+aWR4b2ZmbnVtLCBkZWxzdGF0ZS0+aWJs a251bSwKLQkJCQkJCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGRlbHN0YXRlLT5pcmVs KSkpKTsKKwl7CisJCS8qCisJCSAqIFVuZGVyIEhPVC1pbmRleGVkIHVwZGF0ZXMsIGEgc3Rh bGUgYnRyZWUgZW50cnkgY2FuIGxlZ2l0aW1hdGVseQorCQkgKiBwb2ludCBhdCBhbiBMUCB0 aGF0IGhhcyBzaW5jZSBiZWVuIHJlY2xhaW1lZCB0byBMUF9VTlVTRUQgYnkKKwkJICogcHJ1 bmluZyBiZWZvcmUgVkFDVVVNIHByb2Nlc3NlZCB0aGUgaW5kZXguICBUcmVhdCB0aGF0IGFz ICJ0aGUKKwkJICogY2hhaW4gaXMgdmFjdXVtYWJsZSIgKGNhbGxlcidzIGRvd25zdHJlYW0g Y2hhaW4gd2FsayB3aWxsIHJlYWNoIHRoZQorCQkgKiBzYW1lIGNvbmNsdXNpb24pIHJhdGhl ciB0aGFuIGFuIGluZGV4LWNvcnJ1cHRpb24gZXJyb3IuCisJCSAqLworCQlyZXR1cm47CisJ fQogCi0JaWYgKEl0ZW1JZEhhc1N0b3JhZ2UoaWlkKSkKKwkvKgorCSAqIEEgcmVkaXJlY3Qg dGFyZ2V0IChMUF9SRURJUkVDVCkgaXMgYSB2YWxpZCBjaGFpbiByb290OiBhbiBpbmRleCBl bnRyeQorCSAqIHBvaW50aW5nIGF0IGl0IGlzIGxlZ2l0aW1hdGUgYW5kIHRoZSBjYWxsZXIn cyBjaGFpbiB3YWxrIGRlY2lkZXMKKwkgKiBkZWxldGFiaWxpdHkuICBPbmx5IGdlbnVpbmVs eSBub3JtYWwgdHVwbGVzIGFyZSBpbnNwZWN0ZWQgYmVsb3cuCisJICovCisJaWYgKEl0ZW1J ZElzTm9ybWFsKGlpZCkpCiAJewogCQlIZWFwVHVwbGVIZWFkZXIgaHR1cDsKIAotCQlBc3Nl cnQoSXRlbUlkSXNOb3JtYWwoaWlkKSk7CiAJCWh0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQ YWdlR2V0SXRlbShwYWdlLCBpaWQpOwogCiAJCWlmICh1bmxpa2VseShIZWFwVHVwbGVIZWFk ZXJJc0hlYXBPbmx5KGh0dXApKSkKLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5ERVhfQ09SUlVQVEVEKSwKLQkJCQkJIGVycm1zZ19pbnRlcm5hbCgiaGVh cCB0aWQgZnJvbSBpbmRleCB0dXBsZSAoJXUsJXUpIHBvaW50cyB0byBoZWFwLW9ubHkgdHVw bGUgYXQgb2Zmc2V0ICV1IG9mIGJsb2NrICV1IGluIGluZGV4IFwiJXNcIiIsCi0JCQkJCQkJ CQkgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcihodGlkKSwKLQkJCQkJCQkJCSBpbmRleHBh Z2Vob2ZmbnVtLAotCQkJCQkJCQkJIGlzdGF0dXMtPmlkeG9mZm51bSwgZGVsc3RhdGUtPmli bGtudW0sCi0JCQkJCQkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoZGVsc3RhdGUtPmly ZWwpKSkpOworCQl7CisJCQkvKgorCQkJICogQSBIT1QtaW5kZXhlZCB1cGRhdGUgcGxhbnRz IGEgZnJlc2ggaW5kZXggZW50cnkgdGhhdCBwb2ludHMKKwkJCSAqIGRpcmVjdGx5IGF0IGEg aGVhcC1vbmx5IHR1cGxlOyB0aG9zZSB0dXBsZXMgY2FycnkKKwkJCSAqIEhFQVBfSU5ERVhF RF9VUERBVEVELiAgQSBzdGFsZSBidHJlZSBlbnRyeSBjYW4gYWxzbyBhcnJpdmUgYXQgYQor CQkJICogaGVhcC1vbmx5IHR1cGxlIHdoZW4gYSBjaGFpbiByb290IGdvdCBwcnVuZWQgb3V0 LiAgQm90aCBhcmUKKwkJCSAqIGxlZ2FsIHVuZGVyIEhPVC1pbmRleGVkOyBleGVtcHQgdGhl bSBmcm9tIHRoZSAiaW5kZXggZW50cmllcworCQkJICogbXVzdCB0YXJnZXQgY2hhaW4gcm9v dHMiIGludmFyaWFudCBhbmQgbGV0IHRoZSBjYWxsZXIncyBjaGFpbgorCQkJICogd2FsayBk ZWNpZGUgd2hldGhlciB0aGUgZW50cnkgaXMgZGVsZXRhYmxlLgorCQkJICovCisJCX0KIAl9 CiB9CiAKQEAgLTg0NDgsNyArODY4Myw3IEBAIGhlYXBfaW5kZXhfZGVsZXRlX3R1cGxlcyhS ZWxhdGlvbiByZWwsIFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0YXRlKQogCiAJCQkvKiBBcmUg YW55IHR1cGxlcyBmcm9tIHRoaXMgSE9UIGNoYWluIG5vbi12YWN1dW1hYmxlPyAqLwogCQkJ aWYgKGhlYXBfaG90X3NlYXJjaF9idWZmZXIoJnRtcCwgcmVsLCBidWYsICZTbmFwc2hvdE5v blZhY3V1bWFibGUsCi0JCQkJCQkJCQkgICAmaGVhcFR1cGxlLCBOVUxMLCB0cnVlKSkKKwkJ CQkJCQkJCSAgICZoZWFwVHVwbGUsIE5VTEwsIHRydWUsIE5VTEwsIE5VTEwsIE5VTEwpKQog CQkJCWNvbnRpbnVlOwkJLyogY2FuJ3QgZGVsZXRlIGVudHJ5ICovCiAKIAkJCS8qIENhbGxl ciB3aWxsIGRlbGV0ZSwgc2luY2Ugd2hvbGUgSE9UIGNoYWluIGlzIHZhY3V1bWFibGUgKi8K QEAgLTkwMzAsOSArOTI2NSwyMCBAQCBsb2dfaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsbiwg QnVmZmVyIG9sZGJ1ZiwKIAkJfQogCX0KIAotCS8qIElmIG5ldyB0dXBsZSBpcyB0aGUgc2lu Z2xlIGFuZCBmaXJzdCB0dXBsZSBvbiBwYWdlLi4uICovCisJLyoKKwkgKiBJZiBuZXcgdHVw bGUgaXMgdGhlIHNpbmdsZSBhbmQgZmlyc3QgdHVwbGUgb24gcGFnZSwgcmVwbGF5IGNhbiBy ZWluaXQKKwkgKiB0aGUgcGFnZSBmcm9tIHNjcmF0Y2guCisJICoKKwkgKiBBbHNvIHJlcXVp cmUgdGhhdCB0aGUgcGFnZSdzIHR1cGxlIGFyZWEgY29udGFpbnMgbm90aGluZyBvdGhlciB0 aGFuIHRoaXMKKwkgKiB0dXBsZS4gIFNlZSBoZWFwX2luc2VydCBmb3Igd2h5IHRoaXMgbWF0 dGVycyB3aGVuIHZhY3V1bSBoYXMgbGVmdCBvcnBoYW4KKwkgKiB0dXBsZSBieXRlcyBiZWhp bmQgYW4gTFBfVU5VU0VEIHNsb3QuCisJICoKKwkgKiBOT1RFOiB0aGlzIG11c3QgbWlycm9y IHRoZSBzYW1lIGxvZ2ljIGluIGhlYXBfaW5zZXJ0KCkKKwkgKi8KIAlpZiAoSXRlbVBvaW50 ZXJHZXRPZmZzZXROdW1iZXIoJihuZXd0dXAtPnRfc2VsZikpID09IEZpcnN0T2Zmc2V0TnVt YmVyICYmCi0JCVBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSkgPT0gRmlyc3RPZmZzZXRO dW1iZXIpCisJCVBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSkgPT0gRmlyc3RPZmZzZXRO dW1iZXIgJiYKKwkJKChQYWdlSGVhZGVyKSBwYWdlKS0+cGRfdXBwZXIgPT0KKwkJKChQYWdl SGVhZGVyKSBwYWdlKS0+cGRfc3BlY2lhbCAtIE1BWEFMSUdOKG5ld3R1cC0+dF9sZW4pKQog CXsKIAkJaW5mbyB8PSBYTE9HX0hFQVBfSU5JVF9QQUdFOwogCQlpbml0ID0gdHJ1ZTsKQEAg LTkwOTQsNiArOTM0MCw3IEBAIGxvZ19oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWxuLCBCdWZm ZXIgb2xkYnVmLAogCSAqIFRoZSAnZGF0YScgZG9lc24ndCBpbmNsdWRlIHRoZSBjb21tb24g cHJlZml4IG9yIHN1ZmZpeC4KIAkgKi8KIAlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsICZ4bGhk ciwgU2l6ZU9mSGVhcEhlYWRlcik7CisKIAlpZiAocHJlZml4bGVuID09IDApCiAJewogCQlY TG9nUmVnaXN0ZXJCdWZEYXRhKDAsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt X2hhbmRsZXIuYwppbmRleCBlNmNiODE5N2RlYy4uNWY2NWM0ZThmOGMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMjI0LDQ4ICsyMjQsMzcg QEAgaGVhcGFtX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWxhdGlvbiwgSXRlbVBvaW50ZXIg b3RpZCwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJCQkJCUNvbW1hbmRJZCBjaWQsIHVpbnQz MiBvcHRpb25zLAogCQkJCQlTbmFwc2hvdCBzbmFwc2hvdCwgU25hcHNob3QgY3Jvc3NjaGVj aywKIAkJCQkJYm9vbCB3YWl0LCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwgTG9ja1R1cGxlTW9k ZSAqbG9ja21vZGUsCi0JCQkJCWNvbnN0IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJz LCBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcykKKwkJCQkJQml0bWFwc2V0ICoq bW9kaWZpZWRfYXR0cnMpCiB7CiAJYm9vbAkJc2hvdWxkRnJlZSA9IHRydWU7CiAJSGVhcFR1 cGxlCXR1cGxlID0gRXhlY0ZldGNoU2xvdEhlYXBUdXBsZShzbG90LCB0cnVlLCAmc2hvdWxk RnJlZSk7Ci0JYm9vbAkJaG90X2FsbG93ZWQ7Ci0JYm9vbAkJc3VtbWFyaXplZF9vbmx5Owor CUhlYXBVcGRhdGVJbmRleE1vZGUgaG90X21vZGU7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAog CUFzc2VydChJdGVtUG9pbnRlcklzVmFsaWQob3RpZCkpOwogCi0JaG90X2FsbG93ZWQgPSBI ZWFwVXBkYXRlSG90QWxsb3dhYmxlKHJlbGF0aW9uLCBtb2RpZmllZF9pZHhfYXR0cnMsICZz dW1tYXJpemVkX29ubHkpOwotCSpsb2NrbW9kZSA9IEhlYXBVcGRhdGVEZXRlcm1pbmVMb2Nr bW9kZShyZWxhdGlvbiwgbW9kaWZpZWRfaWR4X2F0dHJzKTsKKwlob3RfbW9kZSA9IEhlYXBV cGRhdGVIb3RBbGxvd2FibGUocmVsYXRpb24sICptb2RpZmllZF9hdHRycyk7CisJKmxvY2tt b2RlID0gSGVhcFVwZGF0ZURldGVybWluZUxvY2ttb2RlKHJlbGF0aW9uLCAqbW9kaWZpZWRf YXR0cnMpOwogCiAJLyogVXBkYXRlIHRoZSB0dXBsZSB3aXRoIHRhYmxlIG9pZCAqLwogCXNs b3QtPnR0c190YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOwogCXR1cGxl LT50X3RhYmxlT2lkID0gc2xvdC0+dHRzX3RhYmxlT2lkOwogCi0JcmVzdWx0ID0gaGVhcF91 cGRhdGUocmVsYXRpb24sIG90aWQsIHR1cGxlLCBjaWQsIG9wdGlvbnMsIGNyb3NzY2hlY2ss IHdhaXQsCi0JCQkJCQkgdG1mZCwgKmxvY2ttb2RlLCBtb2RpZmllZF9pZHhfYXR0cnMsIGhv dF9hbGxvd2VkKTsKKwlyZXN1bHQgPSBoZWFwX3VwZGF0ZShyZWxhdGlvbiwgb3RpZCwgdHVw bGUsIGNpZCwgb3B0aW9ucywKKwkJCQkJCSBjcm9zc2NoZWNrLCB3YWl0LAorCQkJCQkJIHRt ZmQsICpsb2NrbW9kZSwgKm1vZGlmaWVkX2F0dHJzLCBob3RfbW9kZSk7CiAJSXRlbVBvaW50 ZXJDb3B5KCZ0dXBsZS0+dF9zZWxmLCAmc2xvdC0+dHRzX3RpZCk7CiAKIAkvKgotCSAqIERl Y2lkZSB3aGV0aGVyIG5ldyBpbmRleCBlbnRyaWVzIGFyZSBuZWVkZWQgZm9yIHRoZSB0dXBs ZQotCSAqCi0JICogTm90ZTogaGVhcF91cGRhdGUgcmV0dXJucyB0aGUgdGlkIChsb2NhdGlv bikgb2YgdGhlIG5ldyB0dXBsZSBpbiB0aGUKLQkgKiB0X3NlbGYgZmllbGQuCi0JICoKLQkg KiBJZiB0aGUgdXBkYXRlIGlzIG5vdCBIT1QsIHdlIG11c3QgdXBkYXRlIGFsbCBpbmRleGVz LiBJZiB0aGUgdXBkYXRlIGlzCi0JICogSE9ULCBpdCBjb3VsZCBiZSB0aGF0IHdlIHVwZGF0 ZWQgc3VtbWFyaXplZCBjb2x1bW5zLCBzbyB3ZSBlaXRoZXIKLQkgKiB1cGRhdGUgb25seSBz dW1tYXJpemVkIGluZGV4ZXMsIG9yIG5vbmUgYXQgYWxsLgorCSAqIFRlbGwgdGhlIGNhbGxl ciB3aGV0aGVyIGV2ZXJ5IGluZGV4IG5lZWRzIGEgbmV3IGVudHJ5LiAgSWYgdGhlIG5ldwor CSAqIHR1cGxlIGlzIG5vdCBoZWFwLW9ubHkgdGhlIHVwZGF0ZSB3YXMgbm90IEhPVDogaXQg aXMgYW4gaW5kZXBlbmRlbnQKKwkgKiB2ZXJzaW9uIHJlcXVpcmluZyBhIGZyZXNoIGVudHJ5 IGluIGV2ZXJ5IGluZGV4LCB3aGljaCB3ZSBzaWduYWwgYnkKKwkgKiBhZGRpbmcgdGhlIHdo b2xlLXJvdyBhdHRyaWJ1dGUgdG8gKm1vZGlmaWVkX2F0dHJzLiAgT3RoZXJ3aXNlIChjbGFz c2ljCisJICogSE9UIG9yIEhPVC1pbmRleGVkKSB0aGUgY2FsbGVyIGNvbnN1bHRzIHRoZSBw ZXItaW5kZXggYXR0cmlidXRlcy4KIAkgKi8KLQkqdXBkYXRlX2luZGV4ZXMgPSBUVV9Ob25l OwotCWlmIChyZXN1bHQgPT0gVE1fT2spCi0JewotCQlpZiAoSGVhcFR1cGxlSXNIZWFwT25s eSh0dXBsZSkpCi0JCXsKLQkJCWlmIChzdW1tYXJpemVkX29ubHkpCi0JCQkJKnVwZGF0ZV9p bmRleGVzID0gVFVfU3VtbWFyaXppbmc7Ci0JCX0KLQkJZWxzZQotCQkJKnVwZGF0ZV9pbmRl eGVzID0gVFVfQWxsOwotCX0KKwlpZiAocmVzdWx0ID09IFRNX09rICYmICFIZWFwVHVwbGVJ c0hlYXBPbmx5KHR1cGxlKSkKKwkJKm1vZGlmaWVkX2F0dHJzID0gYm1zX2FkZF9tZW1iZXIo Km1vZGlmaWVkX2F0dHJzLAorCQkJCQkJCQkJCSBUYWJsZVR1cGxlVXBkYXRlQWxsSW5kZXhl cyk7CiAKIAlpZiAoc2hvdWxkRnJlZSkKIAkJcGZyZWUodHVwbGUpOwpAQCAtNzMxLDkgKzcy MCwzMyBAQCBoZWFwYW1fcmVsYXRpb25fY29weV9mb3JfY2x1c3RlcihSZWxhdGlvbiBPbGRI ZWFwLCBSZWxhdGlvbiBOZXdIZWFwLAogCQkJaWYgKCFpbmRleF9nZXRuZXh0X3Nsb3QoaW5k ZXhTY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgc2xvdCkpCiAJCQkJYnJlYWs7CiAKLQkJ CS8qIFNpbmNlIHdlIHVzZWQgbm8gc2NhbiBrZXlzLCBzaG91bGQgbmV2ZXIgbmVlZCB0byBy ZWNoZWNrICovCisJCQkvKgorCQkJICogQ0xVU1RFUiB1c2VzIGEgbm8ta2V5IGZ1bGwtaW5k ZXggc2NhbjsgaXQgY2Fubm90IGRvIGFueQorCQkJICogdHVwbGUtbGV2ZWwgZmlsdGVyaW5n IGl0c2VsZi4gIFRoZSBIT1QtaW5kZXhlZCByZWFkZXIgcGF0aAorCQkJICogcm91dGluZWx5 IHNldHMgeHNfcmVjaGVjayB3aGVuIHdhbGtpbmcgY2hhaW4gZW50cmllcyB3aG9zZQorCQkJ ICogaW5kZXgga2V5IG1heSBiZSBzdGFsZSByZWxhdGl2ZSB0byB0aGUgdmlzaWJsZSBoZWFw IHR1cGxlLgorCQkJICogVGhvc2UgZW50cmllcyBjYXVzZSB0aGUgc2FtZSBsaXZlIHR1cGxl IHRvIGJlIHZpc2l0ZWQgdmlhIHRoZQorCQkJICogZnJlc2ggaG90LWluZGV4ZWQtaW5zZXJ0 ZWQgZW50cnkgdG9vOyBpbmNsdWRpbmcgdGhlbSB3b3VsZAorCQkJICogZHVwbGljYXRlIHJv d3MgaW4gdGhlIHJld3JpdHRlbiBoZWFwLiAgU2tpcCB0aGVtIGhlcmUgLS0gdGhlCisJCQkg KiB0dXBsZSBpcyByZWFjaGFibGUgdGhyb3VnaCBpdHMgY2Fub25pY2FsIGluZGV4IGVudHJ5 LgorCQkJICoKKwkJCSAqIElmIHhzX3JlY2hlY2sgaXMgc2V0IHdpdGggYWN0dWFsIHNjYW4g a2V5cywgdGhhdCdzIGEgcmVhbCBsb3NzeQorCQkJICogaW5kZXggc2NlbmFyaW8gQ0xVU1RF UiBjYW4ndCBoYW5kbGUgKGhpc3RvcmljYWwgcmVzdHJpY3Rpb24pLgorCQkJICovCiAJCQlp ZiAoaW5kZXhTY2FuLT54c19yZWNoZWNrKQotCQkJCWVsb2coRVJST1IsICJDTFVTVEVSIGRv ZXMgbm90IHN1cHBvcnQgbG9zc3kgaW5kZXggY29uZGl0aW9ucyIpOworCQkJeworCQkJCWlm IChpbmRleFNjYW4tPm51bWJlck9mS2V5cyA+IDApCisJCQkJCWVsb2coRVJST1IsICJDTFVT VEVSIGRvZXMgbm90IHN1cHBvcnQgbG9zc3kgaW5kZXggY29uZGl0aW9ucyIpOworCQkJCWNv bnRpbnVlOworCQkJfQorCisJCQkvKgorCQkJICogU2FtZSByZWFzb25pbmcgYXMgZm9yIHhz X3JlY2hlY2s6IGEgSE9ULWluZGV4ZWQgc3RhbGUgZW50cnkKKwkJCSAqIHdvdWxkIHJlLWVt aXQgYW4gYWxyZWFkeS12aXNpdGVkIHR1cGxlIHZpYSBpdHMgY2Fub25pY2FsIGZyZXNoCisJ CQkgKiBlbnRyeS4gIFNraXAuCisJCQkgKi8KKwkJCWlmIChpbmRleFNjYW4tPnhzX2hvdF9p bmRleGVkX3N0YWxlKQorCQkJCWNvbnRpbnVlOwogCQl9CiAJCWVsc2UKIAkJewpAQCAtMTY0 NywzMCArMTY2MCw0OCBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlv biBoZWFwUmVsYXRpb24sCiAKIAkJCW9mZm51bSA9IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVt YmVyKCZoZWFwVHVwbGUtPnRfc2VsZik7CiAKLQkJCS8qCi0JCQkgKiBJZiBhIEhPVCB0dXBs ZSBwb2ludHMgdG8gYSByb290IHRoYXQgd2UgZG9uJ3Qga25vdyBhYm91dCwKLQkJCSAqIG9i dGFpbiByb290IGl0ZW1zIGFmcmVzaC4gIElmIHRoYXQgc3RpbGwgZmFpbHMsIHJlcG9ydCBp dCBhcwotCQkJICogY29ycnVwdGlvbi4KLQkJCSAqLwotCQkJaWYgKHJvb3Rfb2Zmc2V0c1tv ZmZudW0gLSAxXSA9PSBJbnZhbGlkT2Zmc2V0TnVtYmVyKQorCQkJaWYgKChoZWFwVHVwbGUt PnRfZGF0YS0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0gMCkKIAkJ CXsKLQkJCQlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShoc2Nhbi0+cnNfY2J1Zik7Ci0K LQkJCQlMb2NrQnVmZmVyKGhzY2FuLT5yc19jYnVmLCBCVUZGRVJfTE9DS19TSEFSRSk7Ci0J CQkJaGVhcF9nZXRfcm9vdF90dXBsZXMocGFnZSwgcm9vdF9vZmZzZXRzKTsKLQkJCQlMb2Nr QnVmZmVyKGhzY2FuLT5yc19jYnVmLCBCVUZGRVJfTE9DS19VTkxPQ0spOworCQkJCS8qCisJ CQkJICogSE9ULWluZGV4ZWQgKFNlbGVjdGl2ZSBJbmRleCBVcGRhdGUpIGxpdmUgdHVwbGU6 IGluZGV4IGl0CisJCQkJICogdW5kZXIgaXRzIE9XTiBUSUQsIG5vdCB0aGUgY2hhaW4gcm9v dC4gIEl0cyBpbmRleGVkIHZhbHVlcworCQkJCSAqIGRpZmZlciBmcm9tIGVhcmxpZXIgY2hh aW4gbWVtYmVycycsIGFuZCB0aGUgYml0bWFwLW92ZXJsYXAKKwkJCQkgKiByZWFkIHBhdGgg a2VlcHMgYW4gZW50cnkgb25seSB3aGVuIG5vIGhvcCBhZnRlciB0aGUgZW50cnkncworCQkJ CSAqIHRhcmdldCBjaGFuZ2VkIHRoZSBpbmRleCdzIGF0dHJpYnV0ZXMuICBUaGF0IGhvbGRz IGZvciBhbgorCQkJCSAqIGVudHJ5IHBvaW50aW5nIGRpcmVjdGx5IGF0IHRoZSBsaXZlIHR1 cGxlIChubyBsYXRlciBob3ApOworCQkJCSAqIGFuIGVudHJ5IHBvaW50ZWQgYXQgdGhlIHJv b3Qgd291bGQgYmUgZHJvcHBlZCBhcyBzdGFsZSwKKwkJCQkgKiBsb3NpbmcgdGhlIHJvdy4K KwkJCQkgKi8KKwkJCQlJdGVtUG9pbnRlclNldCgmdGlkLCBJdGVtUG9pbnRlckdldEJsb2Nr TnVtYmVyKCZoZWFwVHVwbGUtPnRfc2VsZiksCisJCQkJCQkJICAgb2ZmbnVtKTsKIAkJCX0K KwkJCWVsc2UKKwkJCXsKKwkJCQkvKgorCQkJCSAqIElmIGEgSE9UIHR1cGxlIHBvaW50cyB0 byBhIHJvb3QgdGhhdCB3ZSBkb24ndCBrbm93IGFib3V0LAorCQkJCSAqIG9idGFpbiByb290 IGl0ZW1zIGFmcmVzaC4gIElmIHRoYXQgc3RpbGwgZmFpbHMsIHJlcG9ydCBpdAorCQkJCSAq IGFzIGNvcnJ1cHRpb24uCisJCQkJICovCisJCQkJaWYgKHJvb3Rfb2Zmc2V0c1tvZmZudW0g LSAxXSA9PSBJbnZhbGlkT2Zmc2V0TnVtYmVyKQorCQkJCXsKKwkJCQkJUGFnZQkJcGFnZSA9 IEJ1ZmZlckdldFBhZ2UoaHNjYW4tPnJzX2NidWYpOwogCi0JCQlpZiAoIU9mZnNldE51bWJl cklzVmFsaWQocm9vdF9vZmZzZXRzW29mZm51bSAtIDFdKSkKLQkJCQllcmVwb3J0KEVSUk9S LAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCi0JCQkJCQkgZXJy bXNnX2ludGVybmFsKCJmYWlsZWQgdG8gZmluZCBwYXJlbnQgdHVwbGUgZm9yIGhlYXAtb25s eSB0dXBsZSBhdCAoJXUsJXUpIGluIHRhYmxlIFwiJXNcIiIsCi0JCQkJCQkJCQkJIEl0ZW1Q b2ludGVyR2V0QmxvY2tOdW1iZXIoJmhlYXBUdXBsZS0+dF9zZWxmKSwKLQkJCQkJCQkJCQkg b2ZmbnVtLAotCQkJCQkJCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShoZWFwUmVsYXRp b24pKSkpOworCQkJCQlMb2NrQnVmZmVyKGhzY2FuLT5yc19jYnVmLCBCVUZGRVJfTE9DS19T SEFSRSk7CisJCQkJCWhlYXBfZ2V0X3Jvb3RfdHVwbGVzKHBhZ2UsIHJvb3Rfb2Zmc2V0cyk7 CisJCQkJCUxvY2tCdWZmZXIoaHNjYW4tPnJzX2NidWYsIEJVRkZFUl9MT0NLX1VOTE9DSyk7 CisJCQkJfQogCi0JCQlJdGVtUG9pbnRlclNldCgmdGlkLCBJdGVtUG9pbnRlckdldEJsb2Nr TnVtYmVyKCZoZWFwVHVwbGUtPnRfc2VsZiksCi0JCQkJCQkgICByb290X29mZnNldHNbb2Zm bnVtIC0gMV0pOworCQkJCWlmICghT2Zmc2V0TnVtYmVySXNWYWxpZChyb290X29mZnNldHNb b2ZmbnVtIC0gMV0pKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVS UkNPREVfREFUQV9DT1JSVVBURUQpLAorCQkJCQkJCSBlcnJtc2dfaW50ZXJuYWwoImZhaWxl ZCB0byBmaW5kIHBhcmVudCB0dXBsZSBmb3IgaGVhcC1vbmx5IHR1cGxlIGF0ICgldSwldSkg aW4gdGFibGUgXCIlc1wiIiwKKwkJCQkJCQkJCQkJIEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1i ZXIoJmhlYXBUdXBsZS0+dF9zZWxmKSwKKwkJCQkJCQkJCQkJIG9mZm51bSwKKwkJCQkJCQkJ CQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGhlYXBSZWxhdGlvbikpKSk7CisKKwkJCQlJ dGVtUG9pbnRlclNldCgmdGlkLCBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKCZoZWFwVHVw bGUtPnRfc2VsZiksCisJCQkJCQkJICAgcm9vdF9vZmZzZXRzW29mZm51bSAtIDFdKTsKKwkJ CX0KIAogCQkJLyogQ2FsbCB0aGUgQU0ncyBjYWxsYmFjayByb3V0aW5lIHRvIHByb2Nlc3Mg dGhlIHR1cGxlICovCiAJCQljYWxsYmFjayhpbmRleFJlbGF0aW9uLCAmdGlkLCB2YWx1ZXMs IGlzbnVsbCwgdHVwbGVJc0FsaXZlLApAQCAtMTgzNSw3ICsxODY2LDggQEAgaGVhcGFtX2lu ZGV4X3ZhbGlkYXRlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQlyb290VHVwbGUg PSAqaGVhcGN1cnNvcjsKIAkJcm9vdF9vZmZudW0gPSBJdGVtUG9pbnRlckdldE9mZnNldE51 bWJlcihoZWFwY3Vyc29yKTsKIAotCQlpZiAoSGVhcFR1cGxlSXNIZWFwT25seShoZWFwVHVw bGUpKQorCQlpZiAoSGVhcFR1cGxlSXNIZWFwT25seShoZWFwVHVwbGUpICYmCisJCQkoaGVh cFR1cGxlLT50X2RhdGEtPnRfaW5mb21hc2syICYgSEVBUF9JTkRFWEVEX1VQREFURUQpID09 IDApCiAJCXsKIAkJCXJvb3Rfb2ZmbnVtID0gcm9vdF9vZmZzZXRzW3Jvb3Rfb2ZmbnVtIC0g MV07CiAJCQlpZiAoIU9mZnNldE51bWJlcklzVmFsaWQocm9vdF9vZmZudW0pKQpAQCAtMjUz MSw3ICsyNTYzLDYgQEAgQml0bWFwSGVhcFNjYW5OZXh0QmxvY2soVGFibGVTY2FuRGVzYyBz Y2FuLAogCiAJaHNjYW4tPnJzX2NpbmRleCA9IDA7CiAJaHNjYW4tPnJzX250dXBsZXMgPSAw OwotCiAJLyogUmVsZWFzZSBidWZmZXIgY29udGFpbmluZyBwcmV2aW91cyBibG9jay4gKi8K IAlpZiAoQnVmZmVySXNWYWxpZChoc2Nhbi0+cnNfY2J1ZikpCiAJewpAQCAtMjU5Miw2ICsy NjIzLDcgQEAgQml0bWFwSGVhcFNjYW5OZXh0QmxvY2soVGFibGVTY2FuRGVzYyBzY2FuLAog CQkgKiBvZmZzZXQuCiAJCSAqLwogCQlpbnQJCQljdXJzbG90OworCQlib29sCQlwYWdlX2hh ZF9ob3RfaW5kZXhlZCA9IGZhbHNlOwogCiAJCS8qIFdlIG11c3QgaGF2ZSBleHRyYWN0ZWQg dGhlIHR1cGxlIG9mZnNldHMgYnkgbm93ICovCiAJCUFzc2VydChub2Zmc2V0cyA+IC0xKTsK QEAgLTI2MDEsMTIgKzI2MzMsNjUgQEAgQml0bWFwSGVhcFNjYW5OZXh0QmxvY2soVGFibGVT Y2FuRGVzYyBzY2FuLAogCQkJT2Zmc2V0TnVtYmVyIG9mZm51bSA9IG9mZnNldHNbY3Vyc2xv dF07CiAJCQlJdGVtUG9pbnRlckRhdGEgdGlkOwogCQkJSGVhcFR1cGxlRGF0YSBoZWFwVHVw bGU7CisJCQlib29sCQlob3RfaW5kZXhlZF9zdGFsZSA9IGZhbHNlOwogCiAJCQlJdGVtUG9p bnRlclNldCgmdGlkLCBibG9jaywgb2ZmbnVtKTsKIAkJCWlmIChoZWFwX2hvdF9zZWFyY2hf YnVmZmVyKCZ0aWQsIHNjYW4tPnJzX3JkLCBidWZmZXIsIHNuYXBzaG90LAotCQkJCQkJCQkJ ICAgJmhlYXBUdXBsZSwgTlVMTCwgdHJ1ZSkpCi0JCQkJaHNjYW4tPnJzX3Zpc3R1cGxlc1tu dHVwKytdID0gSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoJnRpZCk7CisJCQkJCQkJCQkg ICAmaGVhcFR1cGxlLCBOVUxMLCB0cnVlLAorCQkJCQkJCQkJICAgJmhvdF9pbmRleGVkX3N0 YWxlLCBOVUxMLCBOVUxMKSkKKwkJCXsKKwkJCQlPZmZzZXROdW1iZXIgcmVzb2x2ZWQgPSBJ dGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmdGlkKTsKKwkJCQlib29sCQlhbHJlYWR5X2hh dmUgPSBmYWxzZTsKKworCQkJCS8qCisJCQkJICogQSBiaXRtYXAgaGVhcCBzY2FuIGNhbm5v dCBhdHRyaWJ1dGUgYSBUSUQgdG8gb25lIGluZGV4LCBzbworCQkJCSAqIGFueSBjcm9zc2Vk IGluLWNoYWluIEhPVC9TSVUgaG9wIG1lYW5zIHRoZSBhcnJpdmluZyBlbnRyeQorCQkJCSAq IG1heSBiZSBzdGFsZTsgcmVjaGVjay9kZWR1cCBjb25zZXJ2YXRpdmVseS4KKwkJCQkgKi8K KwkJCQlpZiAoaG90X2luZGV4ZWRfc3RhbGUpCisJCQkJCXBhZ2VfaGFkX2hvdF9pbmRleGVk ID0gdHJ1ZTsKKworCQkJCS8qCisJCQkJICogV2l0aCBIT1QtaW5kZXhlZCB1cGRhdGVzLCBt b3JlIHRoYW4gb25lIGJpdG1hcCBlbnRyeSBvbiB0aGUKKwkJCQkgKiBzYW1lIGJsb2NrIGNh biBjaGFpbi1yZXNvbHZlIHRvIHRoZSBzYW1lIGxpdmUgdHVwbGUgKGEKKwkJCQkgKiBzdGFs ZSBvbGQta2V5IGVudHJ5IHBsdXMgdGhlIGZyZXNoIG5ldy1rZXkgZW50cnksIG9yCisJCQkJ ICogbXVsdGlwbGUgc3RhbGUgZW50cmllcyBmcm9tIHN1Y2Nlc3NpdmUgaG90LWluZGV4ZWQK KwkJCQkgKiB1cGRhdGVzKS4gIE9uY2Ugd2UndmUgc2VlbiBhbnkgaG90LWluZGV4ZWQgaG9w IG9uIHRoaXMKKwkJCQkgKiBibG9jayBkZWR1cCBpbmxpbmUgc28gdXBwZXIgbm9kZXMgKGUu Zy4sIE1FUkdFKSBkb24ndCBzZWUKKwkJCQkgKiB0aGUgc2FtZSByb3cgdHdpY2UuICBQcmVz ZXJ2ZSBvcmlnaW5hbCBpbnNlcnRpb24gb3JkZXI6CisJCQkJICogTUVSR0UncyBSRVRVUk5J Tkcgb3JkZXJpbmcgYW5kIHRlc3QgaGFybmVzcyBzdGFiaWxpdHkgYm90aAorCQkJCSAqIGRl cGVuZCBvbiBpdC4gIEluIHRoZSBhYnNlbmNlIG9mIGhvdC1pbmRleGVkIG9uIHRoZSBwYWdl IHdlCisJCQkJICogc2tpcCB0aGUgbGluZWFyIHNjYW4gZW50aXJlbHkgLS0gdGhlIFRCTSdz IFRJRHMgYXJlIGFscmVhZHkKKwkJCQkgKiBkaXN0aW5jdCBieSBjb25zdHJ1Y3Rpb24uCisJ CQkJICovCisJCQkJaWYgKHBhZ2VfaGFkX2hvdF9pbmRleGVkKQorCQkJCXsKKwkJCQkJZm9y IChpbnQgaiA9IDA7IGogPCBudHVwOyBqKyspCisJCQkJCXsKKwkJCQkJCWlmIChoc2Nhbi0+ cnNfdmlzdHVwbGVzW2pdID09IHJlc29sdmVkKQorCQkJCQkJeworCQkJCQkJCWFscmVhZHlf aGF2ZSA9IHRydWU7CisJCQkJCQkJYnJlYWs7CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisK KwkJCQlpZiAoIWFscmVhZHlfaGF2ZSkKKwkJCQkJaHNjYW4tPnJzX3Zpc3R1cGxlc1tudHVw KytdID0gcmVzb2x2ZWQ7CisKKwkJCQkvKgorCQkJCSAqIElmIHdlIHJlYWNoZWQgdGhlIHZp c2libGUgdHVwbGUgdGhyb3VnaCBhIEhPVC1pbmRleGVkCisJCQkJICogKGhvdC1pbmRleGVk KSBob3AsIHRoZSBiaXRtYXAgaW5kZXggZW50cnkgdGhhdCBwb2ludGVkIHVzCisJCQkJICog YXQgdGhlIGNoYWluIHJvb3QgbWF5IGRlc2NyaWJlIGtleSB2YWx1ZXMgdGhlIHZpc2libGUg dHVwbGUKKwkJCQkgKiBubyBsb25nZXIgaGFzLiAgRm9yY2UgQml0bWFwSGVhcFNjYW4gdG8g cnVuIGl0cyByZWNoZWNrCisJCQkJICogcXVhbCBhZ2FpbnN0IHRoZXNlIHR1cGxlcyBldmVu IGlmIHRoZSBiaXRtYXAgcGFnZSB3YXMKKwkJCQkgKiBvdGhlcndpc2UgZXhhY3QuCisJCQkJ ICovCisJCQkJaWYgKGhvdF9pbmRleGVkX3N0YWxlKQorCQkJCQkqcmVjaGVjayA9IHRydWU7 CisJCQl9CiAJCX0KKwogCX0KIAllbHNlCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX2luZGV4c2Nhbi5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2luZGV4c2Nhbi5jCmluZGV4IDMzZDE0ZjFkZTdkLi5lN2UzODFkMDUwMSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2luZGV4c2Nhbi5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9pbmRleHNjYW4uYwpAQCAt MTUsNiArMTUsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJhY2Nl c3MvaGVhcGFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL2hvdF9pbmRleGVkLmgiCiAjaW5jbHVk ZSAiYWNjZXNzL3JlbHNjYW4uaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0ZS5oIgog CkBAIC0zNSw2ICszNiwxNCBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfYmVnaW4oUmVsYXRpb24g cmVsLCB1aW50MzIgZmxhZ3MpCiAJaHNjYW4tPnhzX2JsayA9IEludmFsaWRCbG9ja051bWJl cjsKIAloc2Nhbi0+eHNfdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCisJLyoKKwkgKiBT Y3JhdGNoIHNwYWNlIGZvciB0aGUgdW5pb24gb2YgbW9kaWZpZWQtYXR0cnMgYml0bWFwcyB0 aGF0IGEgSE9UL1NJVQorCSAqIGNoYWluIHdhbGsgY3Jvc3Nlcywgc2l6ZWQgZm9yIHRoaXMg cmVsYXRpb24ncyBjb2x1bW4gY291bnQuICBUaHJlYWRlZAorCSAqIGJhY2sgb3V0IHRocm91 Z2ggeHNfaG90X2luZGV4ZWRfY3Jvc3NlZCBmb3IgdGhlIGluZGV4LWFjY2VzcyBsYXllci4K KwkgKi8KKwloc2Nhbi0+eHNfYmFzZS54c19ob3RfaW5kZXhlZF9jcm9zc2VkID0KKwkJcGFs bG9jMChIb3RJbmRleGVkQml0bWFwQnl0ZXMoUmVsYXRpb25HZXROdW1iZXJPZkF0dHJpYnV0 ZXMocmVsKSkpOworCiAJcmV0dXJuICZoc2Nhbi0+eHNfYmFzZTsKIH0KIApAQCAtNjMsNiAr NzIsOSBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfZW5kKEluZGV4RmV0Y2hUYWJsZURhdGEgKnNj YW4pCiAJaWYgKEJ1ZmZlcklzVmFsaWQoaHNjYW4tPnhzX3ZtYnVmZmVyKSkKIAkJUmVsZWFz ZUJ1ZmZlcihoc2Nhbi0+eHNfdm1idWZmZXIpOwogCisJaWYgKGhzY2FuLT54c19iYXNlLnhz X2hvdF9pbmRleGVkX2Nyb3NzZWQgIT0gTlVMTCkKKwkJcGZyZWUoaHNjYW4tPnhzX2Jhc2Uu eHNfaG90X2luZGV4ZWRfY3Jvc3NlZCk7CisKIAlwZnJlZShoc2Nhbik7CiB9CiAKQEAgLTgz LDEzICs5NSwyNCBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfZW5kKEluZGV4RmV0Y2hUYWJsZURh dGEgKnNjYW4pCiAgKiBnbG9iYWxseSBkZWFkOyAqYWxsX2RlYWQgaXMgc2V0IHRydWUgaWYg YWxsIG1lbWJlcnMgb2YgdGhlIEhPVCBjaGFpbgogICogYXJlIHZhY3V1bWFibGUsIGZhbHNl IGlmIG5vdC4KICAqCisgKiBJZiBob3RfaW5kZXhlZF9yZWNoZWNrIGlzIG5vdCBOVUxMLCAq aG90X2luZGV4ZWRfcmVjaGVjayBpcyBzZXQgdHJ1ZSBpZmYgdGhlCisgKiB3YWxrIGNyb3Nz ZWQgYSBIT1Qtc2VsZWN0aXZlbHktdXBkYXRlZCAoSE9UL1NJVSkgaG9wIGFmdGVyIHRoZSBl bnRyeSB0dXBsZQorICogb24gdGhlIHdheSB0byB0aGUgcmV0dXJuZWQgdHVwbGUgLS0gaS5l LiB0aGUgYXJyaXZpbmcgaW5kZXggZW50cnkncyBzdG9yZWQKKyAqIGtleSBtYXkgbm8gbG9u Z2VyIG1hdGNoIHRoZSBsaXZlIHR1cGxlLCBzbyB0aGUgY2FsbGVyIG11c3QgcmVjaGVjayBp dCAodmlhCisgKiBhIGxlYWYta2V5IGNvbXBhcmlzb24gb3IgYSBxdWFsIHJlY2hlY2spLiAg VGhlIGVudHJ5IHR1cGxlJ3Mgb3duIHByb2R1Y2luZworICogaG9wIGlzIGV4Y2x1ZGVkLCBz byBhIGZyZXNoIGVudHJ5IHBvaW50aW5nIGRpcmVjdGx5IGF0IGl0cyB0dXBsZSBpcyBub3QK KyAqIGZsYWdnZWQuICBXaGVuIG5vIHN1Y2ggaG9wIHdhcyBjcm9zc2VkLCAqaG90X2luZGV4 ZWRfcmVjaGVjayBpcyBsZWZ0IGZhbHNlLgorICoKICAqIFVubGlrZSBoZWFwX2ZldGNoLCB0 aGUgY2FsbGVyIG11c3QgYWxyZWFkeSBoYXZlIHBpbiBhbmQgKGF0IGxlYXN0KSBzaGFyZQog ICogbG9jayBvbiB0aGUgYnVmZmVyOyBpdCBpcyBzdGlsbCBwaW5uZWQvbG9ja2VkIGF0IGV4 aXQuCiAgKi8KIGJvb2wKIGhlYXBfaG90X3NlYXJjaF9idWZmZXIoSXRlbVBvaW50ZXIgdGlk LCBSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJICAgU25hcHNob3Qg c25hcHNob3QsIEhlYXBUdXBsZSBoZWFwVHVwbGUsCi0JCQkJCSAgIGJvb2wgKmFsbF9kZWFk LCBib29sIGZpcnN0X2NhbGwpCisJCQkJCSAgIGJvb2wgKmFsbF9kZWFkLCBib29sIGZpcnN0 X2NhbGwsCisJCQkJCSAgIGJvb2wgKmhvdF9pbmRleGVkX3JlY2hlY2ssCisJCQkJCSAgIHVp bnQ4ICpjcm9zc2VkX2JpdG1hcCwKKwkJCQkJICAgYm9vbCAqcHJlZml4X2FsbF9kZWFkKQog ewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAJVHJhbnNhY3Rpb25J ZCBwcmV2X3htYXggPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKQEAgLTk4LDEyICsxMjEsMjcg QEAgaGVhcF9ob3Rfc2VhcmNoX2J1ZmZlcihJdGVtUG9pbnRlciB0aWQsIFJlbGF0aW9uIHJl bGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCWJvb2wJCWF0X2NoYWluX3N0YXJ0OwogCWJvb2wJ CXZhbGlkOwogCWJvb2wJCXNraXA7CisJYm9vbAkJcHJlZml4X2RlYWQgPSB0cnVlOwogCUds b2JhbFZpc1N0YXRlICp2aXN0ZXN0ID0gTlVMTDsKKwlpbnQJCQlyZWxuYXR0cyA9IFJlbGF0 aW9uR2V0TnVtYmVyT2ZBdHRyaWJ1dGVzKHJlbGF0aW9uKTsKIAogCS8qIElmIHRoaXMgaXMg bm90IHRoZSBmaXJzdCBjYWxsLCBwcmV2aW91cyBjYWxsIHJldHVybmVkIGEgKGxpdmUhKSB0 dXBsZSAqLwogCWlmIChhbGxfZGVhZCkKIAkJKmFsbF9kZWFkID0gZmlyc3RfY2FsbDsKIAor CS8qCisJICogT24gdGhlIGZpcnN0IGNhbGwsIGNsZWFyIHRoZSByZWNoZWNrIGZsYWcgYW5k IHRoZSBjcm9zc2VkLWF0dHJzIHVuaW9uLgorCSAqIE9uIHN1YnNlcXVlbnQgY2FsbHMgKHNh bWUgY2hhaW4gY29udGludWluZykga2VlcCB3aGF0ZXZlciBhbiBlYXJsaWVyCisJICogaG9w IGFscmVhZHkgYWNjdW11bGF0ZWQuCisJICovCisJaWYgKGZpcnN0X2NhbGwpCisJeworCQlp ZiAoaG90X2luZGV4ZWRfcmVjaGVjaykKKwkJCSpob3RfaW5kZXhlZF9yZWNoZWNrID0gZmFs c2U7CisJCWlmIChjcm9zc2VkX2JpdG1hcCkKKwkJCW1lbXNldChjcm9zc2VkX2JpdG1hcCwg MCwgSG90SW5kZXhlZEJpdG1hcEJ5dGVzKHJlbG5hdHRzKSk7CisJfQorCiAJYmxrbm8gPSBJ dGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKHRpZCk7CiAJb2ZmbnVtID0gSXRlbVBvaW50ZXJH ZXRPZmZzZXROdW1iZXIodGlkKTsKIAlhdF9jaGFpbl9zdGFydCA9IGZpcnN0X2NhbGw7CkBA IC0xMzAsNyArMTY4LDE3IEBAIGhlYXBfaG90X3NlYXJjaF9idWZmZXIoSXRlbVBvaW50ZXIg dGlkLCBSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCS8qIFdlIHNob3Vs ZCBvbmx5IHNlZSBhIHJlZGlyZWN0IGF0IHN0YXJ0IG9mIGNoYWluICovCiAJCQlpZiAoSXRl bUlkSXNSZWRpcmVjdGVkKGxwKSAmJiBhdF9jaGFpbl9zdGFydCkKIAkJCXsKLQkJCQkvKiBG b2xsb3cgdGhlIHJlZGlyZWN0ICovCisJCQkJLyoKKwkJCQkgKiBGb2xsb3cgdGhlIHJlZGly ZWN0LiAgQSBjb2xsYXBzZWQgZGVhZCBwcmVmaXggaXMgcHJlc2VydmVkCisJCQkJICogYXMg YSBydW4gb2YgZm9yd2FyZGluZyBzdHVicywgZWFjaCBjYXJyeWluZyBpdHMgc2VnbWVudCdz CisJCQkJICogbW9kaWZpZWQtYXR0cnMgYml0bWFwLCBlbmRpbmcgYXQgdGhlIGZpcnN0IGxp dmUgdHVwbGU7CisJCQkJICogY2hhaW4gY29sbGFwc2UgcmVjbGFpbXMgYSBkZWFkIG1lbWJl ciBvbmx5IHdoZW4gaXRzCisJCQkJICogYXR0cmlidXRlcyBhcmUgYSBzdWJzZXQgb2YgdGhl IHN1cnZpdmluZyBsYXRlciBob3BzIChzZWUKKwkJCQkgKiBwcnVuZWhlYXAuYykuICBTbyB0 aGUgc3R1YnMgYW5kIGxpdmUgaG9wcyB0aGlzIHdhbGsgY3Jvc3NlcworCQkJCSAqIGJlbG93 IGNvbnRyaWJ1dGUgdGhlIGNvbXBsZXRlIHVuaW9uIG9mIGV2ZXJ5IGNvbGxhcHNlZAorCQkJ CSAqIGhvcCdzIG1vZGlmaWVkIGF0dHJpYnV0ZXMsIGFuZCB0aGF0IHVuaW9uIGRyaXZlcyB0 aGUKKwkJCQkgKiBvdmVybGFwIHN0YWxlbmVzcyB0ZXN0IGZvciB0aGUgaW5kZXgtYWNjZXNz IGxheWVyLgorCQkJCSAqLwogCQkJCW9mZm51bSA9IEl0ZW1JZEdldFJlZGlyZWN0KGxwKTsK IAkJCQlhdF9jaGFpbl9zdGFydCA9IGZhbHNlOwogCQkJCWNvbnRpbnVlOwpAQCAtMTUxLDEw ICsxOTksOTUgQEAgaGVhcF9ob3Rfc2VhcmNoX2J1ZmZlcihJdGVtUG9pbnRlciB0aWQsIFJl bGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQlJdGVtUG9pbnRlclNldCgmaGVh cFR1cGxlLT50X3NlbGYsIGJsa25vLCBvZmZudW0pOwogCiAJCS8qCi0JCSAqIFNob3VsZG4n dCBzZWUgYSBIRUFQX09OTFkgdHVwbGUgYXQgY2hhaW4gc3RhcnQuCisJCSAqIEEgY29sbGFw c2Utc3Vydml2b3Igc3R1YiBpcyBhbiBMUF9OT1JNQUwgaXRlbSBidXQgbm90IGEgcmVhbCB0 dXBsZToKKwkJICogaXQgaXMgYSBmcmVlemUtc2FmZSBmb3J3YXJkaW5nIG5vZGUgY2Fycnlp bmcgdGhlIG1vZGlmaWVkLWF0dHJzCisJCSAqIGJpdG1hcCBmb3IgdGhlIGNoYWluIHNlZ21l bnQgaXQgcmVwcmVzZW50cy4gIFRyZWF0IGl0IGxpa2UgYQorCQkgKiBjcm9zc2VkIEhPVC9T SVUgaG9wIC0tIGFybSB0aGUgcmVjaGVjayBhbmQgT1IgaXRzIGJpdG1hcCBpbnRvIHRoZQor CQkgKiBjcm9zc2VkIHVuaW9uICh1bmxlc3Mgd2UgYXJyaXZlZCBkaXJlY3RseSBhdCBpdCwg aW4gd2hpY2ggY2FzZSB0aGUKKwkJICogYXJyaXZpbmcgZW50cnkgYWxyZWFkeSByZWZsZWN0 cyB0aGlzIHNlZ21lbnQncyB2YWx1ZSkgLS0gdGhlbgorCQkgKiBmb2xsb3cgaXRzIGZvcndh cmQgbGluay4gIEEgc3R1YiBpcyBuZXZlciB2aXNpYmxlIGFuZCBuZXZlcgorCQkgKiByZXR1 cm5lZCwgYW5kIGl0cyBmb3J3YXJkIGxpbmsgaXMgYSBsb2dpY2FsLCBub3QgeGlkLWNvbnRp bnVvdXMsCisJCSAqIGVkZ2UsIHNvIHJlc2V0IHByZXZfeG1heCB0byBza2lwIHRoZSBjaGFp bi1pbnRlZ3JpdHkgY2hlY2sgb24gdGhlCisJCSAqIG5leHQgbWVtYmVyLgorCQkgKi8KKwkJ aWYgKEhvdEluZGV4ZWRIZWFkZXJJc1N0dWIoaGVhcFR1cGxlLT50X2RhdGEpKQorCQl7CisJ CQlpZiAoIWF0X2NoYWluX3N0YXJ0KQorCQkJeworCQkJCWlmIChob3RfaW5kZXhlZF9yZWNo ZWNrKQorCQkJCQkqaG90X2luZGV4ZWRfcmVjaGVjayA9IHRydWU7CisJCQkJaWYgKGNyb3Nz ZWRfYml0bWFwKQorCQkJCXsKKwkJCQkJaW50CQkJYm1uYXR0cyA9CisJCQkJCQlIb3RJbmRl eGVkVHVwbGVCaXRtYXBOYXR0cyhoZWFwVHVwbGUtPnRfZGF0YSk7CisKKwkJCQkJSG90SW5k ZXhlZEJpdG1hcFVuaW9uKGNyb3NzZWRfYml0bWFwLAorCQkJCQkJCQkJCSAgSG90SW5kZXhl ZEdldE1vZGlmaWVkQml0bWFwKGhlYXBUdXBsZS0+dF9kYXRhLAorCQkJCQkJCQkJCQkJCQkJ CQkgIGhlYXBUdXBsZS0+dF9sZW4sCisJCQkJCQkJCQkJCQkJCQkJCSAgYm1uYXR0cyksCisJ CQkJCQkJCQkJICBibW5hdHRzKTsKKwkJCQl9CisJCQl9CisJCQlvZmZudW0gPSBIb3RJbmRl eGVkU3R1YkdldEZvcndhcmQoaGVhcFR1cGxlLT50X2RhdGEpOworCQkJYXRfY2hhaW5fc3Rh cnQgPSBmYWxzZTsKKwkJCXByZXZfeG1heCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCQkJ Y29udGludWU7CisJCX0KKworCQkvKgorCQkgKiBTaG91bGRuJ3Qgc2VlIGEgSEVBUF9PTkxZ IHR1cGxlIGF0IGNoYWluIHN0YXJ0LCB1bmxlc3MgdGhhdCB0dXBsZQorCQkgKiBpcyB0aGUg dGFyZ2V0IG9mIGEgZnJlc2hseS1pbnNlcnRlZCBob3QtaW5kZXhlZCBpbmRleCBlbnRyeTog dGhlbgorCQkgKiBhcnJpdmluZyBkaXJlY3RseSBhdCBhIGhlYXAtb25seSBIT1QtaW5kZXhl ZCB0dXBsZSBpcyBsZWdhbCBhbmQgdGhlCisJCSAqIHR1cGxlIGlzIHRoZSBjYW5vbmljYWwg dmlzaWJsZSB2ZXJzaW9uLCBzbyB3ZSBmYWxsIHRocm91Z2ggYW5kCisJCSAqIGFwcGx5IG5v cm1hbCB2aXNpYmlsaXR5IGNoZWNrcyB0byBpdC4gIE90aGVyd2lzZSwgdHJlYXQgaXQgYXMg YQorCQkgKiBicm9rZW4gY2hhaW4uCiAJCSAqLwogCQlpZiAoYXRfY2hhaW5fc3RhcnQgJiYg SGVhcFR1cGxlSXNIZWFwT25seShoZWFwVHVwbGUpKQotCQkJYnJlYWs7CisJCXsKKwkJCWlm ICgoaGVhcFR1cGxlLT50X2RhdGEtPnRfaW5mb21hc2syICYgSEVBUF9JTkRFWEVEX1VQREFU RUQpID09IDApCisJCQkJYnJlYWs7CisKKwkJCS8qCisJCQkgKiBXZSB3ZXJlIHBvaW50ZWQg ZGlyZWN0bHkgYXQgdGhpcyBob3QtaW5kZXhlZCB0dXBsZS4gIFRoZSBpbmRleAorCQkJICog ZW50cnkgd2UgYXJyaXZlZCB0aHJvdWdoIHdhcyBpbnNlcnRlZCAqZm9yKiB0aGlzIHVwZGF0 ZSwgc28gaXQKKwkJCSAqIHJlZmxlY3RzIHRoaXMgdHVwbGUncyBjdXJyZW50IGF0dHJpYnV0 ZSB2YWx1ZXM7IGl0cyBvd24KKwkJCSAqIHByb2R1Y2luZyBob3AgaXMgbm90IGEgY3Jvc3Nl ZCBob3AsIHNvIGl0IGlzIG5vdCBmbGFnZ2VkIGZvcgorCQkJICogcmVjaGVjayAoYSBmcmVz aCBlbnRyeSBpcyBuZXZlciBzdGFsZSBmb3IgaXRzIG93biBpbmRleCkuCisJCQkgKi8KKwkJ fQorCQllbHNlIGlmIChob3RfaW5kZXhlZF9yZWNoZWNrICE9IE5VTEwgJiYKKwkJCQkgKGhl YXBUdXBsZS0+dF9kYXRhLT50X2luZm9tYXNrMiAmIEhFQVBfSU5ERVhFRF9VUERBVEVEKSAh PSAwKQorCQl7CisJCQkvKgorCQkJICogQSBIT1QvU0lVIGhvcCByZWFjaGVkIGJ5IGZvbGxv d2luZyB0aGUgY2hhaW4gKG9yIGEgcmVkaXJlY3QpCisJCQkgKiBmcm9tIGFuIGVhcmxpZXIg ZW50cnk6IHRoaXMgaG9wIGlzIGNyb3NzZWQsIHNvIHRoZSBhcnJpdmluZworCQkJICogZW50 cnkncyBzdG9yZWQga2V5IG1heSBubyBsb25nZXIgbWF0Y2ggdGhlIGxpdmUgdHVwbGUuICBT ZXQgdGhlCisJCQkgKiByZWNoZWNrIGZsYWcgdG8gdGVsbCB0aGUgaW5kZXgtYWNjZXNzIGxh eWVyIHRvIGNvbnN1bHQgdGhlCisJCQkgKiBjcm9zc2VkLWF0dHJzIHVuaW9uOyB0aGF0IHVu aW9uIChhY2N1bXVsYXRlZCBiZWxvdykgaXMgd2hhdAorCQkJICogZGVjaWRlcyBzdGFsZW5l c3MuCisJCQkgKi8KKwkJCSpob3RfaW5kZXhlZF9yZWNoZWNrID0gdHJ1ZTsKKworCQkJLyoK KwkJCSAqIEFjY3VtdWxhdGUgdGhpcyBob3AncyBtb2RpZmllZC1hdHRycyBiaXRtYXAgaW50 byB0aGUgY3Jvc3NlZAorCQkJICogdW5pb24uICBBIHR1cGxlJ3MgaW5saW5lIGJpdG1hcCBy ZWNvcmRzIHRoZSBpbmRleGVkIGF0dHJpYnV0ZXMKKwkJCSAqIHRoYXQgY2hhbmdlZCBhdCB0 aGUgaG9wIElOVE8gaXQsIHdoaWNoIGlzIGV4YWN0bHkgdGhlIGhvcCB3ZQorCQkJICoganVz dCBjcm9zc2VkIGJ5IGFkdmFuY2luZyB0byBpdDsgT1JpbmcgZWFjaCBjcm9zc2VkIGhvcCB5 aWVsZHMKKwkJCSAqIHRoZSBpbmRleGVkIGF0dHJpYnV0ZXMgdGhhdCBjaGFuZ2VkIGFmdGVy IHRoZSBlbnRyeSdzIG93bgorCQkJICogdHVwbGUuCisJCQkgKi8KKwkJCWlmIChjcm9zc2Vk X2JpdG1hcCkKKwkJCXsKKwkJCQlpbnQJCQlibW5hdHRzID0KKwkJCQkJSG90SW5kZXhlZFR1 cGxlQml0bWFwTmF0dHMoaGVhcFR1cGxlLT50X2RhdGEpOworCisJCQkJSG90SW5kZXhlZEJp dG1hcFVuaW9uKGNyb3NzZWRfYml0bWFwLAorCQkJCQkJCQkJICBIb3RJbmRleGVkR2V0TW9k aWZpZWRCaXRtYXAoaGVhcFR1cGxlLT50X2RhdGEsCisJCQkJCQkJCQkJCQkJCQkJICBoZWFw VHVwbGUtPnRfbGVuLAorCQkJCQkJCQkJCQkJCQkJCSAgYm1uYXR0cyksCisJCQkJCQkJCQkg IGJtbmF0dHMpOworCQkJfQorCQl9CiAKIAkJLyoKIAkJICogVGhlIHhtaW4gc2hvdWxkIG1h dGNoIHRoZSBwcmV2aW91cyB4bWF4IHZhbHVlLCBlbHNlIGNoYWluIGlzCkBAIC0xODYsNiAr MzE5LDE1IEBAIGhlYXBfaG90X3NlYXJjaF9idWZmZXIoSXRlbVBvaW50ZXIgdGlkLCBSZWxh dGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJIEhlYXBUdXBsZUhlYWRl ckdldFhtaW4oaGVhcFR1cGxlLT50X2RhdGEpKTsKIAkJCQlpZiAoYWxsX2RlYWQpCiAJCQkJ CSphbGxfZGVhZCA9IGZhbHNlOworCisJCQkJLyoKKwkJCQkgKiBSZXBvcnQgd2hldGhlciBl dmVyeSBjaGFpbiBtZW1iZXIgc2tpcHBlZCBiZWZvcmUgdGhpcworCQkJCSAqIHZpc2libGUg dHVwbGUgaXMgZGVhZCB0byBhbGwgdHJhbnNhY3Rpb25zLiAgV2l0aCBhIHN0YWxlCisJCQkJ ICogdmVyZGljdCB0aGlzIGxldHMgdGhlIGNhbGxlciBraWxsIHRoZSBhcnJpdmluZyBsZWFm IHNhZmVseS4KKwkJCQkgKi8KKwkJCQlpZiAocHJlZml4X2FsbF9kZWFkKQorCQkJCQkqcHJl Zml4X2FsbF9kZWFkID0gcHJlZml4X2RlYWQ7CisKIAkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0K IAkJfQpAQCAtMTk0LDE4ICszMzYsMjUgQEAgaGVhcF9ob3Rfc2VhcmNoX2J1ZmZlcihJdGVt UG9pbnRlciB0aWQsIFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkvKgog CQkgKiBJZiB3ZSBjYW4ndCBzZWUgaXQsIG1heWJlIG5vIG9uZSBlbHNlIGNhbiBlaXRoZXIu ICBBdCBjYWxsZXIKIAkJICogcmVxdWVzdCwgY2hlY2sgd2hldGhlciBhbGwgY2hhaW4gbWVt YmVycyBhcmUgZGVhZCB0byBhbGwKLQkJICogdHJhbnNhY3Rpb25zLgorCQkgKiB0cmFuc2Fj dGlvbnMuICBUaGUgc2FtZSBzdXJlbHktZGVhZCB0ZXN0IGZlZWRzIHByZWZpeF9kZWFkLCB3 aGljaAorCQkgKiAodW5saWtlIGFsbF9kZWFkKSBpcyBub3QgcmVzZXQgd2hlbiBhIHZpc2li bGUgdHVwbGUgaXMgZm91bmQsIHNvIGl0CisJCSAqIHJlY29yZHMgd2hldGhlciB0aGUgbWVt YmVycyBza2lwcGVkIGFoZWFkIG9mIHRoZSByZXR1cm5lZCB0dXBsZSBhcmUKKwkJICogYWxs IGRlYWQgdG8gYWxsIC0tIHRoZSBzYWZlLXRvLWtpbGwtdGhpcy1sZWFmIGNvbmRpdGlvbi4K IAkJICoKIAkJICogTm90ZTogaWYgeW91IGNoYW5nZSB0aGUgY3JpdGVyaW9uIGhlcmUgZm9y IHdoYXQgaXMgImRlYWQiLCBmaXggdGhlCiAJCSAqIHBsYW5uZXIncyBnZXRfYWN0dWFsX3Zh cmlhYmxlX3JhbmdlKCkgZnVuY3Rpb24gdG8gbWF0Y2guCiAJCSAqLwotCQlpZiAoYWxsX2Rl YWQgJiYgKmFsbF9kZWFkKQorCQlpZiAoKGFsbF9kZWFkICYmICphbGxfZGVhZCkgfHwgcHJl Zml4X2RlYWQpCiAJCXsKIAkJCWlmICghdmlzdGVzdCkKIAkJCQl2aXN0ZXN0ID0gR2xvYmFs VmlzVGVzdEZvcihyZWxhdGlvbik7CiAKIAkJCWlmICghSGVhcFR1cGxlSXNTdXJlbHlEZWFk KGhlYXBUdXBsZSwgdmlzdGVzdCkpCi0JCQkJKmFsbF9kZWFkID0gZmFsc2U7CisJCQl7CisJ CQkJaWYgKGFsbF9kZWFkKQorCQkJCQkqYWxsX2RlYWQgPSBmYWxzZTsKKwkJCQlwcmVmaXhf ZGVhZCA9IGZhbHNlOworCQkJfQogCQl9CiAKIAkJLyoKQEAgLTI3Myw3ICs0MjIsMTUgQEAg aGVhcGFtX2luZGV4X2ZldGNoX3R1cGxlKHN0cnVjdCBJbmRleEZldGNoVGFibGVEYXRhICpz Y2FuLAogCQkJCQkJCQkJCQlzbmFwc2hvdCwKIAkJCQkJCQkJCQkJJmJzbG90LT5iYXNlLnR1 cGRhdGEsCiAJCQkJCQkJCQkJCWFsbF9kZWFkLAotCQkJCQkJCQkJCQkhKmhlYXBfY29udGlu dWUpOworCQkJCQkJCQkJCQkhKmhlYXBfY29udGludWUsCisJCQkJCQkJCQkJCSZzY2FuLT54 c19ob3RfaW5kZXhlZF9yZWNoZWNrLAorCQkJCQkJCQkJCQlzY2FuLT54c19ob3RfaW5kZXhl ZF9jcm9zc2VkLAorCQkJCQkJCQkJCQkmc2Nhbi0+eHNfcHJlZml4X2FsbF9kZWFkKTsKKwlp ZiAoIWdvdF9oZWFwX3R1cGxlKQorCXsKKwkJc2Nhbi0+eHNfaG90X2luZGV4ZWRfcmVjaGVj ayA9IGZhbHNlOworCQlzY2FuLT54c19wcmVmaXhfYWxsX2RlYWQgPSBmYWxzZTsKKwl9CiAJ YnNsb3QtPmJhc2UudHVwZGF0YS50X3NlbGYgPSAqdGlkOwogCUxvY2tCdWZmZXIoaHNjYW4t PnhzX2NidWYsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dl bmFtLmMKaW5kZXggMTQwODk4OWM1NjguLjY2MjhmOWJmODVkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aW5kZXgvZ2VuYW0uYwpAQCAtMTAzLDYgKzEwMyw5IEBAIFJlbGF0aW9uR2V0SW5kZXhTY2Fu KFJlbGF0aW9uIGluZGV4UmVsYXRpb24sIGludCBua2V5cywgaW50IG5vcmRlcmJ5cykKIAkJ c2Nhbi0+b3JkZXJCeURhdGEgPSBOVUxMOwogCiAJc2Nhbi0+eHNfd2FudF9pdHVwID0gZmFs c2U7IC8qIG1heSBiZSBzZXQgbGF0ZXIgKi8KKwlzY2FuLT54c19pbmRleF9vbmx5ID0gZmFs c2U7CS8qIG1heSBiZSBzZXQgbGF0ZXIgKi8KKworCXNjYW4tPnhzX2hvdF9pbmRleGVkX3N0 YWxlID0gZmFsc2U7CiAKIAkvKgogCSAqIER1cmluZyByZWNvdmVyeSB3ZSBpZ25vcmUga2ls bGVkIHR1cGxlcyBhbmQgZG9uJ3QgYm90aGVyIHRvIGtpbGwgdGhlbQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9pbmRleC9pbmRleGFtLmMKaW5kZXggNzk2N2U5Mzk4NDcuLjNjMDgxMzZmNjMwIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNs dWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiYWNjZXNzL2FtYXBpLmgiCisjaW5jbHVk ZSAiYWNjZXNzL2hvdF9pbmRleGVkLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3JlbGF0aW9uLmgi CiAjaW5jbHVkZSAiYWNjZXNzL3JlbG9wdGlvbnMuaCIKICNpbmNsdWRlICJhY2Nlc3MvcmVs c2Nhbi5oIgpAQCAtMjg4LDYgKzI4OSwxMSBAQCBpbmRleF9iZWdpbnNjYW4oUmVsYXRpb24g aGVhcFJlbGF0aW9uLAogCS8qIHByZXBhcmUgdG8gZmV0Y2ggaW5kZXggbWF0Y2hlcyBmcm9t IHRhYmxlICovCiAJc2Nhbi0+eHNfaGVhcGZldGNoID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVn aW4oaGVhcFJlbGF0aW9uLCBmbGFncyk7CiAKKwkvKgorCSAqIFN0YWxlbmVzcyBvZiBhIEhP VC1pbmRleGVkIGVudHJ5IGlzIGRlY2lkZWQgYnkgdGhlIGNyb3NzZWQtYXR0cmlidXRlCisJ ICogYml0bWFwIChzZWUgaW5kZXhfZmV0Y2hfaGVhcCksIHNvIHNjYW5zIGRvIG5vdCBuZWVk IHRoZSBsZWFmIGtleS4KKwkgKi8KKwogCXJldHVybiBzY2FuOwogfQogCkBAIC02MDYsNiAr NjEyLDE1IEBAIGluZGV4X2dldG5leHRfdGlkKEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRp cmVjdGlvbiBkaXJlY3Rpb24pCiAJLyogWFhYOiB3ZSBzaG91bGQgYXNzZXJ0IHRoYXQgYSBz bmFwc2hvdCBpcyBwdXNoZWQgb3IgcmVnaXN0ZXJlZCAqLwogCUFzc2VydChUcmFuc2FjdGlv bklkSXNWYWxpZChSZWNlbnRYbWluKSk7CiAKKwkvKgorCSAqIFJlc2V0IHRoZSBIT1QtaW5k ZXhlZCByZWNoZWNrIGZsYWc6IGl0IGlzIHNldCBieSB0aGUgaGVhcCBBTSBkdXJpbmcKKwkg KiBpbmRleF9mZXRjaF9oZWFwIGFuZCBpcyBwZXItZmV0Y2hlZC10dXBsZSwgbm90IHBlci1p bmRleC1lbnRyeS4gRm9yCisJICogSW5kZXhPbmx5U2Nhbiwgd2hpY2ggbWF5IHNraXAgaW5k ZXhfZmV0Y2hfaGVhcCB3aGVuIHRoZSBWTSBzYXlzIHRoZQorCSAqIGVudHJ5IGlzIHZpc2li bGUtdG8tYWxsLCB0aGlzIGVuc3VyZXMgd2UgZG9uJ3QgY2FycnkgYSBzdGFsZSB2YWx1ZSBm cm9tCisJICogYSBwcmV2aW91cyBlbnRyeS4KKwkgKi8KKwlzY2FuLT54c19ob3RfaW5kZXhl ZF9zdGFsZSA9IGZhbHNlOworCiAJLyoKIAkgKiBUaGUgQU0ncyBhbWdldHR1cGxlIHByb2Mg ZmluZHMgdGhlIG5leHQgaW5kZXggZW50cnkgbWF0Y2hpbmcgdGhlIHNjYW4KIAkgKiBrZXlz LCBhbmQgcHV0cyB0aGUgVElEIGludG8gc2Nhbi0+eHNfaGVhcHRpZC4gIEl0IHNob3VsZCBh bHNvIHNldApAQCAtNjY2LDE1ICs2ODEsOTcgQEAgaW5kZXhfZmV0Y2hfaGVhcChJbmRleFNj YW5EZXNjIHNjYW4sIFR1cGxlVGFibGVTbG90ICpzbG90KQogCWlmIChmb3VuZCkKIAkJcGdz dGF0X2NvdW50X2hlYXBfZmV0Y2goc2Nhbi0+aW5kZXhSZWxhdGlvbik7CiAKKwkvKgorCSAq IFRoZSB0YWJsZSBBTSByZXBvcnRlZCwgdmlhIHhzX2hvdF9pbmRleGVkX3JlY2hlY2ssIHdo ZXRoZXIgdGhlIHdhbGsgdG8KKwkgKiB0aGUgbGl2ZSB0dXBsZSBjcm9zc2VkIGEgSE9ULWlu ZGV4ZWQgaG9wIGFmdGVyIHRoZSBhcnJpdmluZyBpbmRleAorCSAqIGVudHJ5J3Mgb3duIHR1 cGxlLiAgV2hlbiBpdCBkaWQsIHRoZSBlbnRyeSdzIHN0b3JlZCBrZXkgbWF5IG5vIGxvbmdl cgorCSAqIGFncmVlIHdpdGggdGhlIGxpdmUgdHVwbGUsIGFuZCB3ZSBtdXN0IGRlY2lkZSB3 aGV0aGVyIHRvIGRyb3AgaXQuCisJICoKKwkgKiBUaGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0 bWFwICh4c19ob3RfaW5kZXhlZF9jcm9zc2VkKSBpcyB0aGUgc3RhbGVuZXNzCisJICogYXV0 aG9yaXR5LiAgSXQgaXMgdGhlIHVuaW9uIG9mIHRoZSBwZXItaG9wIG1vZGlmaWVkLWF0dHJp YnV0ZSBiaXRtYXBzCisJICogb2YgZXZlcnkgaG9wIHRoZSB3YWxrIGNyb3NzZWQsIGFuZCBp dCBpcyBjb21wbGV0ZTogZWFjaCBjcm9zc2VkIGxpdmUKKwkgKiBob3AsIGNvbGxhcHNlLXN1 cnZpdm9yIHN0dWIsIGFuZCByZWRpcmVjdGVkIChjb2xsYXBzZWQpIHByZWZpeAorCSAqIGNv bnRyaWJ1dGVzIGl0cyBzZWdtZW50J3MgYml0bWFwLCBhbmQgY2hhaW4gY29sbGFwc2Ugb25s eSBldmVyIHJlY2xhaW1zCisJICogYSBtZW1iZXIgd2hvc2UgYXR0cmlidXRlcyBhcmUgYSBz dWJzZXQgb2YgdGhlIHN1cnZpdmluZyBsYXRlciBob3BzIChzZWUKKwkgKiBwcnVuZWhlYXAu YykuICBUaGVyZWZvcmU6CisJICoKKwkgKiAtIGlmIHRoZSB1bmlvbiBpcyBkaXNqb2ludCBm cm9tIHRoZSBoZWFwIGNvbHVtbnMgdGhpcyBpbmRleCByZWZlcmVuY2VzLAorCSAqIG5vbmUg b2YgdGhlIGluZGV4J3MgaW5wdXRzIGNoYW5nZWQgYWNyb3NzIHRoZSBjaGFpbiwgc28gdGhl IGVudHJ5J3Mga2V5CisJICogc3RpbGwgbWF0Y2hlcyB0aGUgbGl2ZSB0dXBsZToga2VlcCBp dDsgYW5kCisJICoKKwkgKiAtIGlmIHRoZSB1bmlvbiBvdmVybGFwcyB0aGVtLCBvbmUgb2Yg dGhpcyBpbmRleCdzIGtleSBjb2x1bW5zIGNoYW5nZWQKKwkgKiBhZnRlciB0aGUgZW50cnkn cyBvd24gdHVwbGUsIHNvIHRoZSBlbnRyeSBpcyBzdGFsZTogZHJvcCBpdC4KKwkgKgorCSAq IERyb3BwaW5nIG9uIG92ZXJsYXAgaXMgY29ycmVjdCBldmVuIHdoZW4gdGhlIGtleSB3YXMg Y3ljbGVkIGF3YXkgYW5kCisJICogYmFjayB0byBpdHMgb3JpZ2luYWwgdmFsdWUgKGFuIEFC QSB1cGRhdGUpOiB0aGUgdXBkYXRlIHRoYXQgc2V0IHRoZQorCSAqIHZhbHVlIGJhY2sgY3Jl YXRlZCBhIGZyZXNoIGVudHJ5IHBvaW50aW5nIGF0IGl0cyBvd24gKGxpdmUpIHR1cGxlLAor CSAqIHdob3NlIHdhbGsgY3Jvc3NlcyBubyBsYXRlciBrZXktY2hhbmdpbmcgaG9wLCBzbyB0 aGF0IGVudHJ5IHVuaXF1ZWx5CisJICogc3VwcGxpZXMgdGhlIHJvdyB3aGlsZSB0aGlzIHN0 YWxlIGFuY2VzdG9yIGVudHJ5IGlzIGRyb3BwZWQuICBObworCSAqIHZhbHVlLXJlY2hlY2sg aXMgbmVlZGVkLCBzbyB0aGlzIHdvcmtzIGZvciBhbnkgYWNjZXNzIG1ldGhvZDsgdGhlCisJ ICogc3RhbGVuZXNzIGRlY2lzaW9uIGlzIHB1cmVseSBhdHRyaWJ1dGUtYmFzZWQuCisJICov CisJc2Nhbi0+eHNfaG90X2luZGV4ZWRfc3RhbGUgPSBmYWxzZTsKKwlpZiAoZm91bmQgJiYK KwkJc2Nhbi0+eHNfaGVhcGZldGNoLT54c19ob3RfaW5kZXhlZF9yZWNoZWNrICYmCisJCXNj YW4tPnhzX2hlYXBmZXRjaC0+eHNfaG90X2luZGV4ZWRfY3Jvc3NlZCAhPSBOVUxMKQorCXsK KwkJQml0bWFwc2V0ICAqaWR4YXR0cnMgPSBSZWxhdGlvbkdldEluZGV4ZWRBdHRycyhzY2Fu LT5pbmRleFJlbGF0aW9uKTsKKwkJaW50CQkJeCA9IC0xOworCisJCXdoaWxlICgoeCA9IGJt c19uZXh0X21lbWJlcihpZHhhdHRycywgeCkpID49IDApCisJCXsKKwkJCUF0dHJOdW1iZXIJ YXR0bnVtID0geCArIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXI7CisKKwkJ CS8qIHRoZSBjcm9zc2VkIGJpdG1hcCByZWNvcmRzIG9ubHkgdXNlciBhdHRyaWJ1dGVzICov CisJCQlpZiAoYXR0bnVtID49IDEgJiYKKwkJCQlIb3RJbmRleGVkQXR0cklzTW9kaWZpZWQo c2Nhbi0+eHNfaGVhcGZldGNoLT54c19ob3RfaW5kZXhlZF9jcm9zc2VkLAorCQkJCQkJCQkJ CSBhdHRudW0pKQorCQkJeworCQkJCXNjYW4tPnhzX2hvdF9pbmRleGVkX3N0YWxlID0gdHJ1 ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQlibXNfZnJlZShpZHhhdHRycyk7CisJfQor CiAJLyoKIAkgKiBJZiB3ZSBzY2FubmVkIGEgd2hvbGUgSE9UIGNoYWluIGFuZCBmb3VuZCBv bmx5IGRlYWQgdHVwbGVzLCB0ZWxsIGluZGV4CiAJICogQU0gdG8ga2lsbCBpdHMgZW50cnkg Zm9yIHRoYXQgVElEICh0aGlzIHdpbGwgdGFrZSBlZmZlY3QgaW4gdGhlIG5leHQKIAkgKiBh bWdldHR1cGxlIGNhbGwsIGluIGluZGV4X2dldG5leHRfdGlkKS4gIFdlIGRvIG5vdCBkbyB0 aGlzIHdoZW4gaW4KIAkgKiByZWNvdmVyeSBiZWNhdXNlIGl0IG1heSB2aW9sYXRlIE1WQ0Mg dG8gZG8gc28uICBTZWUgY29tbWVudHMgaW4KIAkgKiBSZWxhdGlvbkdldEluZGV4U2Nhbigp LgorCSAqCisJICogQWRkaXRpb25hbGx5IGtpbGwgYSBzdGFsZSBIT1QtaW5kZXhlZCBsZWFm IChvbmUgd2hvc2Uga2V5IHRoZSBsaXZlCisJICogdHVwbGUgbm8gbG9uZ2VyIGhvbGRzKSB3 aGVuIGV2ZXJ5IGNoYWluIG1lbWJlciBza2lwcGVkIGJlZm9yZSB0aGUKKwkgKiByZXR1cm5l ZCB0dXBsZSBpcyBkZWFkIHRvIGFsbCB0cmFuc2FjdGlvbnMgKHhzX3ByZWZpeF9hbGxfZGVh ZCk6IG5vCisJICogc25hcHNob3QgY2FuIHJlYWNoIGEgbWF0Y2hpbmcgdmVyc2lvbiB0aHJv dWdoIHRoaXMgbGVhZiwgc28gaXQgaXMKKwkgKiByZWR1bmRhbnQgYW5kIHJlY2xhaW1pbmcg aXQgYm91bmRzIHRoZSBpbmRleCBibG9hdCBIT1QtaW5kZXhlZCB1cGRhdGVzCisJICogY3Jl YXRlLgorCSAqCisJICogVHdvIGluZGVwZW5kZW50IGNvbmRpdGlvbnMgbWFrZSB0aGlzIHNh ZmU6CisJICoKKwkgKiAgLSBUaGUgc3VyZWx5LWRlYWQgcHJlZml4IGdhdGUgKHhzX3ByZWZp eF9hbGxfZGVhZCkgbWVhbnMgbm8gc25hcHNob3QsCisJICogICAgaW5jbHVkaW5nIG9sZGVy IG9uZXMgc3RpbGwgcnVubmluZywgY2FuIHJlYWNoIGEgdmVyc2lvbiB0aHJvdWdoIHRoaXMK KwkgKiAgICBsZWFmIHdob3NlIGtleSBtYXRjaGVzOiBldmVyeSBtZW1iZXIgYWhlYWQgb2Yg dGhlIGxpdmUgdHVwbGUgaXMgZGVhZAorCSAqICAgIHRvIGFsbC4gIFRoaXMgaXMgd2hhdCBt YWtlcyBpdCBNVkNDLXNhZmUsIGV4YWN0bHkgYXMgZm9yIHRoZQorCSAqICAgIGFsbF9kZWFk IGNhc2UuCisJICoKKwkgKiAgLSBUaGUgbGVhZiBpcyBnZW51aW5lbHkgcmVkdW5kYW50LCBu b3QgdGhlIHJvdydzIG9ubHkgZW50cnkuICBBIHN0YWxlCisJICogICAgdmVyZGljdCBtZWFu cyB0aGUgY3Jvc3NlZC1ob3AgdW5pb24gb3ZlcmxhcHMgdGhpcyBpbmRleCdzIGNvbHVtbnMs CisJICogICAgaS5lLiBvbmUgb2YgdGhpcyBpbmRleCdzIGF0dHJpYnV0ZXMgY2hhbmdlZCBv biBhIGhvcCBhZnRlciB0aGlzCisJICogICAgbGVhZidzIHRhcmdldC4gIFRoZSB1cGRhdGUg dGhhdCBtYWRlIHRoYXQgY2hhbmdlIG1haW50YWluZWQgdGhpcworCSAqICAgIGluZGV4IChp dHMgYXR0cmlidXRlIGNoYW5nZWQpLCBzbyBpdCBwbGFudGVkIGEgZnJlc2ggZW50cnkgcG9p bnRpbmcKKwkgKiAgICBhdCBpdHMgb3duIGxpdmUgdHVwbGU7IHRoYXQgZnJlc2ggZW50cnkg Y3Jvc3NlcyBubyBsYXRlcgorCSAqICAgIGtleS1jaGFuZ2luZyBob3AgYW5kIHVuaXF1ZWx5 IHN1cHBsaWVzIHRoZSByb3cuICBEcm9wcGluZyB0aGUgc3RhbGUKKwkgKiAgICBhbmNlc3Rv ciB0aGVyZWZvcmUgbmV2ZXIgcmVtb3ZlcyB0aGUgcm93J3MgbGFzdCByZWFjaGFibGUgZW50 cnkuCisJICogICAgVGhpcyBob2xkcyBldmVuIHVuZGVyIEFCQSBrZXkgY3ljbGluZyAoWCAt PiBZIC0+IFgpOiB0aGUgWC1yZXN0b3JpbmcKKwkgKiAgICB1cGRhdGUgY2hhbmdlZCB0aGlz IGluZGV4J3MgY29sdW1uIChZIC0+IFgpIGFuZCBzbyBwbGFudGVkIHRoZSBmcmVzaAorCSAq ICAgIGVudHJ5LgogCSAqLwogCWlmICghc2Nhbi0+eGFjdFN0YXJ0ZWRJblJlY292ZXJ5KQot CQlzY2FuLT5raWxsX3ByaW9yX3R1cGxlID0gYWxsX2RlYWQ7CisJCXNjYW4tPmtpbGxfcHJp b3JfdHVwbGUgPQorCQkJYWxsX2RlYWQgfHwKKwkJCShzY2FuLT54c19ob3RfaW5kZXhlZF9z dGFsZSAmJiBzY2FuLT54c19oZWFwZmV0Y2gtPnhzX3ByZWZpeF9hbGxfZGVhZCk7CiAKIAly ZXR1cm4gZm91bmQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idGluc2VydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRpbnNlcnQuYwpp bmRleCBjOGFmOTdkZDIzZC4uZGU4ZjRlN2YwMmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0aW5zZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRpbnNlcnQuYwpAQCAtMTUsNiArMTUsOCBAQAogCiAjaW5jbHVkZSAicG9zdGdy ZXMuaCIKIAorI2luY2x1ZGUgImFjY2Vzcy9nZW5hbS5oIgorI2luY2x1ZGUgImFjY2Vzcy9o dHVwX2RldGFpbHMuaCIKICNpbmNsdWRlICJhY2Nlc3MvbmJ0cmVlLmgiCiAjaW5jbHVkZSAi YWNjZXNzL25idHhsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgpAQCAtMjIs MTggKzI0LDI0IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKICNpbmNsdWRl ICJjb21tb24vaW50LmgiCiAjaW5jbHVkZSAiY29tbW9uL3BnX3BybmcuaCIKKyNpbmNsdWRl ICJleGVjdXRvci90dXB0YWJsZS5oIgogI2luY2x1ZGUgImxpYi9xdW5pcXVlLmgiCiAjaW5j bHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKKyNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgogI2lu Y2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgotCiAvKiBNaW5pbXVtIHRyZWUgaGVp Z2h0IGZvciBhcHBsaWNhdGlvbiBvZiBmYXN0cGF0aCBvcHRpbWl6YXRpb24gKi8KICNkZWZp bmUgQlRSRUVfRkFTVFBBVEhfTUlOX0xFVkVMCTIKIAogCiBzdGF0aWMgQlRTdGFjayBfYnRf c2VhcmNoX2luc2VydChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsCiAJCQkJCQkJ CSBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlKTsKKworLyogSW50ZXJuYWwgaGVscGVyOiBI T1QtaW5kZXhlZCBsZWFmLWtleSBzdGFsZW5lc3MgY2hlY2sgZm9yIF9idF9jaGVja191bmlx dWUuICovCitzdGF0aWMgYm9vbCBfYnRfaGVhcF9rZXlzX2VxdWFsX2xlYWYoUmVsYXRpb24g cmVsLCBJbmRleFR1cGxlIGxlYWZ0dXAsCisJCQkJCQkJCQkgc3RydWN0IFR1cGxlVGFibGVT bG90ICpoZWFwU2xvdCk7CisKIHN0YXRpYyBUcmFuc2FjdGlvbklkIF9idF9jaGVja191bmlx dWUoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRlLAogCQkJCQkJCQkJ ICBSZWxhdGlvbiBoZWFwUmVsLAogCQkJCQkJCQkJICBJbmRleFVuaXF1ZUNoZWNrIGNoZWNr VW5pcXVlLCBib29sICppc191bmlxdWUsCkBAIC00MjYsNiArNDM0LDggQEAgX2J0X2NoZWNr X3VuaXF1ZShSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIFJlbGF0 aW9uIGhlYXBSZWwsCiAJYm9vbAkJaW5wb3N0aW5nID0gZmFsc2U7CiAJYm9vbAkJcHJldmFs bGRlYWQgPSB0cnVlOwogCWludAkJCWN1cnBvc3RpID0gMDsKKwlUdXBsZVRhYmxlU2xvdCAq Y2hhaW5fd2Fsa19zbG90ID0gTlVMTDsKKwlib29sCQloaV9yZWNoZWNrID0gZmFsc2U7CiAK IAkvKiBBc3N1bWUgdW5pcXVlIHVudGlsIHdlIGZpbmQgYSBkdXBsaWNhdGUgKi8KIAkqaXNf dW5pcXVlID0gdHJ1ZTsKQEAgLTUwOSw2ICs1MTksNyBAQCBfYnRfY2hlY2tfdW5pcXVlKFJl bGF0aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwgUmVsYXRpb24gaGVhcFJl bCwKIAkJCXsKIAkJCQlJdGVtUG9pbnRlckRhdGEgaHRpZDsKIAkJCQlib29sCQlhbGxfZGVh ZCA9IGZhbHNlOworCQkJCWJvb2wJCWhvdF9pbmRleGVkX3N0YWxlID0gZmFsc2U7CiAKIAkJ CQlpZiAoIWlucG9zdGluZykKIAkJCQl7CkBAIC01NTksMTMgKzU3MCw3OSBAQCBfYnRfY2hl Y2tfdW5pcXVlKFJlbGF0aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRzdGF0ZSwgUmVs YXRpb24gaGVhcFJlbCwKIAkJCQkgKiBzYXRpc2Z5aW5nIFNuYXBzaG90RGlydHkuIFRoaXMg aXMgbmVjZXNzYXJ5IGJlY2F1c2UgZm9yIEFNcwogCQkJCSAqIHdpdGggb3B0aW1pemF0aW9u cyBsaWtlIGhlYXAncyBIT1QsIHdlIGhhdmUganVzdCBhIHNpbmdsZQogCQkJCSAqIGluZGV4 IGVudHJ5IGZvciB0aGUgZW50aXJlIGNoYWluLgorCQkJCSAqCisJCQkJICogVGhlIGZldGNo IHJlcG9ydHMgKGhpX3JlY2hlY2spIHdoZXRoZXIgdGhlIGNoYWluIHdhbGsgdG8KKwkJCQkg KiB0aGUgbGl2ZSB0dXBsZSBjcm9zc2VkIGEgSE9ULXNlbGVjdGl2ZWx5LXVwZGF0ZWQgKEhP VC9TSVUpCisJCQkJICogaG9wLiBJbiBjbGFzc2ljIEhPVCB0aGUgY2hhaW4gcHJlc2VydmVz IHRoZSBpbmRleCBrZXksIHNvIGEKKwkJCQkgKiBsaXZlIHR1cGxlIGFueXdoZXJlIGluIHRo ZSBjaGFpbiBpcyBhIGRlZmluaXRlIGNvbmZsaWN0OworCQkJCSAqIHdpdGggSE9UL1NJVSB0 aGF0IGludmFyaWFudCBubyBsb25nZXIgaG9sZHMgLS0gYW4gb2xkIGluZGV4CisJCQkJICog ZW50cnkgZm9yIGtleSBLIG1heSBjaGFpbi1sZWFkIHRvIGEgaGVhcCB0dXBsZSB3aG9zZSBh Y3R1YWwKKwkJCQkgKiBpbmRleCBrZXkgaXMgSycuICBXaGVuIGEgaG9wIHdhcyBjcm9zc2Vk IHdlIHJlY2hlY2sgdGhlCisJCQkJICogbGVhZiBrZXkgYWdhaW5zdCB0aGUgbGl2ZSB0dXBs ZSBiZWxvdzsgYSBzdGFsZSBlbnRyeSBpcworCQkJCSAqIGZpbHRlcmVkIG91dCwgbm90IHRy ZWF0ZWQgYXMgYSBjb25mbGljdC4gIGNoYWluX3dhbGtfc2xvdAorCQkJCSAqIGhvbGRzIHRo ZSBsaXZlIHR1cGxlIGZvciB0aGF0IHJlY2hlY2sgYW5kIGlzIGZyZWVkIGF0IGV2ZXJ5CisJ CQkJICogZXhpdC4KIAkJCQkgKi8KLQkJCQllbHNlIGlmICh0YWJsZV9pbmRleF9mZXRjaF90 dXBsZV9jaGVjayhoZWFwUmVsLCAmaHRpZCwKKwkJCQllbHNlIGlmICgoY2hhaW5fd2Fsa19z bG90ICE9IE5VTEwgfHwKKwkJCQkJCSAgKGNoYWluX3dhbGtfc2xvdCA9IHRhYmxlX3Nsb3Rf Y3JlYXRlKGhlYXBSZWwsIE5VTEwpKSkgJiYKKwkJCQkJCSB0YWJsZV9pbmRleF9mZXRjaF90 dXBsZV9jaGVjayhoZWFwUmVsLCAmaHRpZCwKIAkJCQkJCQkJCQkJCQkgICAmU25hcHNob3RE aXJ0eSwKLQkJCQkJCQkJCQkJCQkgICAmYWxsX2RlYWQpKQorCQkJCQkJCQkJCQkJCSAgICZh bGxfZGVhZCwKKwkJCQkJCQkJCQkJCQkgICAmaGlfcmVjaGVjaywKKwkJCQkJCQkJCQkJCQkg ICBjaGFpbl93YWxrX3Nsb3QpKQogCQkJCXsKIAkJCQkJVHJhbnNhY3Rpb25JZCB4d2FpdDsK IAorCQkJCQkvKgorCQkJCQkgKiBUaGUgY2hhaW4gd2FsayByZXBvcnRlZCAoaGlfcmVjaGVj aykgdGhhdCBpdCBjcm9zc2VkIGF0CisJCQkJCSAqIGxlYXN0IG9uZSBIT1QvU0lVIGhvcCBv biB0aGUgd2F5IHRvIHRoZSBsaXZlIHR1cGxlLCBzbworCQkJCQkgKiB0aGUgY2xhc3NpYyAi bGl2ZSB0dXBsZSBpbiB0aGUgY2hhaW4gaW1wbGllcyB0aGUgc2FtZQorCQkJCQkgKiBpbmRl eCBrZXkiIGludmFyaWFudCBtYXkgbm90IGhvbGQ6IGFuIG9sZCBpbmRleCBlbnRyeQorCQkJ CQkgKiBmb3Iga2V5IEsgbWF5IGNoYWluLWxlYWQgdG8gYSB0dXBsZSB3aG9zZSBjdXJyZW50 IGtleQorCQkJCQkgKiBpcyBLJy4gIFJlY2hlY2sgdGhlIGxlYWYncyBzdG9yZWQga2V5IGFn YWluc3QgdGhlIGxpdmUKKwkJCQkJICogdHVwbGUncyBjdXJyZW50IGluZGV4IGZvcm0uICBB IG1pc21hdGNoIG1lYW5zIHRoZSBsZWFmCisJCQkJCSAqIGlzIHN0YWxlIChub3QgYSBjb25m bGljdCk6IHNraXAgaXQ7IHRoZSBmcmVzaCBlbnRyeQorCQkJCQkgKiBpbnNlcnRlZCBmb3Ig dGhlIGN1cnJlbnQgdmFsdWUgaXMgdGhlIGNhbm9uaWNhbCBvbmUuCisJCQkJCSAqIEJlY2F1 c2UgdGhlIGxlYWYgc3RpbGwgcmVzb2x2ZXMgdG8gYSBsaXZlIHR1cGxlLCBjbGVhcgorCQkJ CQkgKiBwcmV2YWxsZGVhZCBzbyB0aGUgY2FsbGVyIG5ldmVyIG1hcmtzIGl0IExQX0RFQUQK KwkJCQkJICogKGtpbGxhYmxlKS4KKwkJCQkJICovCisJCQkJCWhvdF9pbmRleGVkX3N0YWxl ID0KKwkJCQkJCShoaV9yZWNoZWNrICYmCisJCQkJCQkgIV9idF9oZWFwX2tleXNfZXF1YWxf bGVhZihyZWwsIGN1cml0dXAsIGNoYWluX3dhbGtfc2xvdCkpOworCisJCQkJCWlmIChob3Rf aW5kZXhlZF9zdGFsZSkKKwkJCQkJeworCQkJCQkJcHJldmFsbGRlYWQgPSBmYWxzZTsKKwkJ CQkJCWlmIChuYnVmICE9IEludmFsaWRCdWZmZXIpCisJCQkJCQkJX2J0X3JlbGJ1ZihyZWws IG5idWYpOworCQkJCQkJbmJ1ZiA9IEludmFsaWRCdWZmZXI7CisJCQkJCQlFeGVjQ2xlYXJU dXBsZShjaGFpbl93YWxrX3Nsb3QpOworCQkJCQkJZ290byBidF9jaGFpbl93YWxrX3NraXA7 CisJCQkJCX0KKworCQkJCQkvKgorCQkJCQkgKiBUaGUgbGVhZidzIGtleSBzdGlsbCBtYXRj aGVzIHRoZSBsaXZlIHR1cGxlLiAgSWYgdGhlCisJCQkJCSAqIGNoYWluIHdhbGsgY3Jvc3Nl ZCBhIEhPVC1pbmRleGVkIGhvcCBhbmQgcmVzb2x2ZWQgdG8KKwkJCQkJICogdGhlIHZlcnkg dHVwbGUgdGhlIGNhbGxlciBpcyBpbnNlcnRpbmcgYW4gZW50cnkgZm9yLAorCQkJCQkgKiB0 aGlzIGlzIG5vdCBhIGR1cGxpY2F0ZSAtLSBpdCBpcyB0aGUgc2FtZSBsb2dpY2FsIHJvdwor CQkJCQkgKiBiZWluZyByZS1pbmRleGVkIChlLmcuIGEgSE9ULWluZGV4ZWQgVVBEQVRFIHRo YXQgbGVmdAorCQkJCQkgKiB0aGlzIGluZGV4J3Mga2V5IHVuY2hhbmdlZCwgb3IgYSBrZXkg Y3ljbGVkIGF3YXkgYW5kCisJCQkJCSAqIGJhY2spLiBTa2lwIGl0IHJhdGhlciB0aGFuIHJh aXNpbmcgYSBzcHVyaW91cyB1bmlxdWUKKwkJCQkJICogdmlvbGF0aW9uLgorCQkJCQkgKi8K KwkJCQkJaWYgKGhpX3JlY2hlY2sgJiYKKwkJCQkJCUl0ZW1Qb2ludGVyQ29tcGFyZSgmaHRp ZCwgJml0dXAtPnRfdGlkKSA9PSAwKQorCQkJCQl7CisJCQkJCQlpZiAobmJ1ZiAhPSBJbnZh bGlkQnVmZmVyKQorCQkJCQkJCV9idF9yZWxidWYocmVsLCBuYnVmKTsKKwkJCQkJCW5idWYg PSBJbnZhbGlkQnVmZmVyOworCQkJCQkJRXhlY0NsZWFyVHVwbGUoY2hhaW5fd2Fsa19zbG90 KTsKKwkJCQkJCWdvdG8gYnRfY2hhaW5fd2Fsa19za2lwOworCQkJCQl9CisJCQkJCWlmIChj aGFpbl93YWxrX3Nsb3QgIT0gTlVMTCkKKwkJCQkJCUV4ZWNDbGVhclR1cGxlKGNoYWluX3dh bGtfc2xvdCk7CisKIAkJCQkJLyoKIAkJCQkJICogSXQgaXMgYSBkdXBsaWNhdGUuIElmIHdl IGFyZSBvbmx5IGRvaW5nIGEgcGFydGlhbAogCQkJCQkgKiBjaGVjaywgdGhlbiBkb24ndCBi b3RoZXIgY2hlY2tpbmcgaWYgdGhlIHR1cGxlIGlzIGJlaW5nCkBAIC01NzgsNiArNjU1LDgg QEAgX2J0X2NoZWNrX3VuaXF1ZShSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0 c3RhdGUsIFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkJCXsKIAkJCQkJCWlmIChuYnVmICE9IElu dmFsaWRCdWZmZXIpCiAJCQkJCQkJX2J0X3JlbGJ1ZihyZWwsIG5idWYpOworCQkJCQkJaWYg KGNoYWluX3dhbGtfc2xvdCkKKwkJCQkJCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90 KGNoYWluX3dhbGtfc2xvdCk7CiAJCQkJCQkqaXNfdW5pcXVlID0gZmFsc2U7CiAJCQkJCQly ZXR1cm4gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJCQkJCX0KQEAgLTU5Myw2ICs2NzIsOCBA QCBfYnRfY2hlY2tfdW5pcXVlKFJlbGF0aW9uIHJlbCwgQlRJbnNlcnRTdGF0ZSBpbnNlcnRz dGF0ZSwgUmVsYXRpb24gaGVhcFJlbCwKIAkJCQkJewogCQkJCQkJaWYgKG5idWYgIT0gSW52 YWxpZEJ1ZmZlcikKIAkJCQkJCQlfYnRfcmVsYnVmKHJlbCwgbmJ1Zik7CisJCQkJCQlpZiAo Y2hhaW5fd2Fsa19zbG90KQorCQkJCQkJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qo Y2hhaW5fd2Fsa19zbG90KTsKIAkJCQkJCS8qIFRlbGwgX2J0X2RvaW5zZXJ0IHRvIHdhaXQu Li4gKi8KIAkJCQkJCSpzcGVjdWxhdGl2ZVRva2VuID0gU25hcHNob3REaXJ0eS5zcGVjdWxh dGl2ZVRva2VuOwogCQkJCQkJLyogQ2FsbGVyIHJlbGVhc2VzIGxvY2sgb24gYnVmIGltbWVk aWF0ZWx5ICovCkBAIC02MTksNyArNzAwLDggQEAgX2J0X2NoZWNrX3VuaXF1ZShSZWxhdGlv biByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0c3RhdGUsIFJlbGF0aW9uIGhlYXBSZWwsCiAJ CQkJCSAqLwogCQkJCQlodGlkID0gaXR1cC0+dF90aWQ7CiAJCQkJCWlmICh0YWJsZV9pbmRl eF9mZXRjaF90dXBsZV9jaGVjayhoZWFwUmVsLCAmaHRpZCwKLQkJCQkJCQkJCQkJCQkgIFNu YXBzaG90U2VsZiwgTlVMTCkpCisJCQkJCQkJCQkJCQkJICBTbmFwc2hvdFNlbGYsIE5VTEws CisJCQkJCQkJCQkJCQkJICBOVUxMLCBOVUxMKSkKIAkJCQkJewogCQkJCQkJLyogTm9ybWFs IGNhc2UgLS0tIGl0J3Mgc3RpbGwgbGl2ZSAqLwogCQkJCQl9CkBAIC03MTUsNiArNzk3LDkg QEAgX2J0X2NoZWNrX3VuaXF1ZShSZWxhdGlvbiByZWwsIEJUSW5zZXJ0U3RhdGUgaW5zZXJ0 c3RhdGUsIFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkJICovCiAJCQkJaWYgKCFhbGxfZGVhZCAm JiBpbnBvc3RpbmcpCiAJCQkJCXByZXZhbGxkZWFkID0gZmFsc2U7CisKKwkJYnRfY2hhaW5f d2Fsa19za2lwOgorCQkJCTsKIAkJCX0KIAkJfQogCkBAIC03ODIsOSArODY3LDg0IEBAIF9i dF9jaGVja191bmlxdWUoUmVsYXRpb24gcmVsLCBCVEluc2VydFN0YXRlIGluc2VydHN0YXRl LCBSZWxhdGlvbiBoZWFwUmVsLAogCWlmIChuYnVmICE9IEludmFsaWRCdWZmZXIpCiAJCV9i dF9yZWxidWYocmVsLCBuYnVmKTsKIAorCWlmIChjaGFpbl93YWxrX3Nsb3QpCisJCUV4ZWNE cm9wU2luZ2xlVHVwbGVUYWJsZVNsb3QoY2hhaW5fd2Fsa19zbG90KTsKKwogCXJldHVybiBJ bnZhbGlkVHJhbnNhY3Rpb25JZDsKIH0KIAorLyoKKyAqCV9idF9oZWFwX2tleXNfZXF1YWxf bGVhZigpIC0tIENvbXBhcmUgYSBoZWFwIHR1cGxlJ3MgY3VycmVudCBidHJlZSBrZXkKKyAq CWFnYWluc3QgdGhlIGtleSBzdG9yZWQgaW4gYSBsZWFmIEluZGV4VHVwbGUuCisgKgorICoJ VGhlIEhPVC1pbmRleGVkIHVuaXF1ZS1jaGVjayBwYXRoIHVzZXMgdGhpcyB0byBkaXN0aW5n dWlzaCBhIGxpdmUgdHVwbGUKKyAqCXdob3NlIGN1cnJlbnQga2V5IHN0aWxsIG1hdGNoZXMg dGhlIGFycml2aW5nIGxlYWYgKGEgZ2VudWluZSBjb25mbGljdCkKKyAqCWZyb20gYSBzdGFs ZSBjaGFpbiBoaXQ6IHdpdGggYSBIT1QtaW5kZXhlZCAoU2VsZWN0aXZlIEluZGV4IFVwZGF0 ZSkgY2hhaW4KKyAqCXRoZSBsZWFmIGVudHJ5IGZvciBhbiBvbGQga2V5IHN0aWxsIHJlc29s dmVzIHRvIHRoZSBsaXZlIHR1cGxlLCB3aG9zZQorICoJY3VycmVudCBpbmRleCBmb3JtIG1h eSBkaWZmZXIuCisgKgorICoJRXF1YWxpdHkgbXVzdCBhZ3JlZSB3aXRoIHRoZSBpbmRleCdz IG93biBub3Rpb24gb2YgZXF1YWxpdHksIGJlY2F1c2UgdGhlCisgKgljYWxsZXIgdXNlcyB0 aGUgdmVyZGljdCB0byBkZWNpZGUgd2hldGhlciB0byByYWlzZSBhIHVuaXF1ZSB2aW9sYXRp b24uCisgKglXZSBjb21wYXJlIGVhY2gga2V5IGNvbHVtbiB3aXRoIGl0cyBidHJlZSBvcmRl cmluZyBwcm9jZWR1cmUgKEJUT1JERVJfUFJPQywKKyAqCXRoZSBzYW1lIHN1cHBvcnQgZnVu Y3Rpb24gX2J0X21rc2NhbmtleSB1c2VzKSB1bmRlciB0aGUgY29sdW1uJ3MgY29sbGF0aW9u CisgKgktLSBub3QgYSBiaXR3aXNlIGltYWdlIGNvbXBhcmlzb24uICBCaXR3aXNlIGVxdWFs aXR5IHdvdWxkIHdyb25nbHkgdHJlYXQKKyAqCW9wY2xhc3MtZXF1YWwgYnV0IGltYWdlLWRp c3RpbmN0IHZhbHVlcyAobnVtZXJpYyAxLjAgdnMgMS4wMCwgZmxvYXQgLTAuMAorICoJdnMg MC4wLCB0ZXh0IHVuZGVyIGEgbm9uZGV0ZXJtaW5pc3RpYyBjb2xsYXRpb24pIGFzICJub3Qg ZXF1YWwiIGFuZCBza2lwIGEKKyAqCWdlbnVpbmUgZHVwbGljYXRlLgorICoKKyAqCVRoaXMg aXMgY2FsbGVkIGZyb20gX2J0X2NoZWNrX3VuaXF1ZSB3aGlsZSB0aGUgbGVhZiBidWZmZXIg aXMgbG9ja2VkLCBzbyBpdAorICoJZGVsaWJlcmF0ZWx5IGF2b2lkcyBleGVjdXRvciBtYWNo aW5lcnk6IGl0IGZldGNoZXMgZWFjaCBrZXkgYXR0cmlidXRlCisgKglzdHJhaWdodCBmcm9t IHRoZSBzbG90LiAgSXQgaXMgb25seSBldmVyIHJlYWNoZWQgZm9yIGFuIGluZGV4IHJlY2Vp dmluZyBhCisgKglmcmVzaCBlbnRyeSBkdXJpbmcgYSBIT1QtaW5kZXhlZCB1cGRhdGUsIGFu ZCBIZWFwVXBkYXRlSG90QWxsb3dhYmxlCisgKglkaXNxdWFsaWZpZXMgYW55IFVQREFURSB0 aGF0IHRvdWNoZXMgYW4gZXhwcmVzc2lvbi1pbmRleCBhdHRyaWJ1dGUsIHNvIHRoZQorICoJ aW5kZXggaGVyZSBoYXMgbm8gZXhwcmVzc2lvbiBrZXkgY29sdW1uIChldmVyeSBpbmRrZXkg aXMgYSByZWFsIGF0dHJpYnV0ZQorICoJbnVtYmVyKS4gIFdlIGFzc2VydCB0aGF0IHJhdGhl ciB0aGFuIGhhbmRsZSBhIGtleWNvbCA9PSAwIGNhc2UgdGhhdCBjYW5ub3QKKyAqCW9jY3Vy OyBpZiBleHByZXNzaW9uLWluZGV4IHNlbGVjdGl2ZSBtYWludGVuYW5jZSBpcyBpbXBsZW1l bnRlZCBpbiB0aGUKKyAqCWZ1dHVyZSwgdGhpcyBpcyB3aGVyZSBhbiBleHByZXNzaW9uLWV2 YWx1YXRpbmcgY29tcGFyaXNvbiB3b3VsZCBiZSBhZGRlZC4KKyAqCisgKgloZWFwU2xvdCBt dXN0IGFscmVhZHkgYmUgcG9wdWxhdGVkIGJ5IHRoZSBjYWxsZXIgKHZpYQorICoJdGFibGVf aW5kZXhfZmV0Y2hfdHVwbGUgLyB0YWJsZV9pbmRleF9mZXRjaF90dXBsZV9jaGVjaykuCisg Ki8KK3N0YXRpYyBib29sCitfYnRfaGVhcF9rZXlzX2VxdWFsX2xlYWYoUmVsYXRpb24gcmVs LCBJbmRleFR1cGxlIGxlYWZ0dXAsCisJCQkJCQkgc3RydWN0IFR1cGxlVGFibGVTbG90ICpo ZWFwU2xvdCkKK3sKKwlUdXBsZURlc2MJaW5kZXhEZXNjID0gUmVsYXRpb25HZXREZXNjcihy ZWwpOworCWludAkJCW5rZXkgPSBJbmRleFJlbGF0aW9uR2V0TnVtYmVyT2ZLZXlBdHRyaWJ1 dGVzKHJlbCk7CisJRm9ybV9wZ19pbmRleCBpbmRleFN0cnVjdCA9IHJlbC0+cmRfaW5kZXg7 CisKKwlBc3NlcnQobGVhZnR1cCAhPSBOVUxMKTsKKwlBc3NlcnQoaGVhcFNsb3QgIT0gTlVM TCAmJiAhVFRTX0VNUFRZKGhlYXBTbG90KSk7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IG5r ZXk7IGkrKykKKwl7CisJCUF0dHJOdW1iZXIJa2V5Y29sID0gaW5kZXhTdHJ1Y3QtPmluZGtl eS52YWx1ZXNbaV07CisJCURhdHVtCQloZWFwX2RhdHVtOworCQlib29sCQloZWFwX2lzbnVs bDsKKwkJRGF0dW0JCWxlYWZfZGF0dW07CisJCWJvb2wJCWxlYWZfaXNudWxsOworCQlGbWdy SW5mbyAgICpjbXBwcm9jOworCisJCS8qIEV4cHJlc3Npb24ga2V5IGNvbHVtbnMgY2Fubm90 IHJlYWNoIGhlcmUgKHNlZSBoZWFkZXIpLiAqLworCQlBc3NlcnQoa2V5Y29sICE9IDApOwor CisJCWhlYXBfZGF0dW0gPSBzbG90X2dldGF0dHIoaGVhcFNsb3QsIGtleWNvbCwgJmhlYXBf aXNudWxsKTsKKwkJbGVhZl9kYXR1bSA9IGluZGV4X2dldGF0dHIobGVhZnR1cCwgaSArIDEs IGluZGV4RGVzYywgJmxlYWZfaXNudWxsKTsKKworCQlpZiAoaGVhcF9pc251bGwgIT0gbGVh Zl9pc251bGwpCisJCQlyZXR1cm4gZmFsc2U7CisJCWlmIChoZWFwX2lzbnVsbCkKKwkJCWNv bnRpbnVlOworCisJCS8qIG9wY2xhc3MgMy13YXkgY29tcGFyZSB1bmRlciB0aGUgY29sdW1u J3MgY29sbGF0aW9uOyAwID09IGVxdWFsICovCisJCWNtcHByb2MgPSBpbmRleF9nZXRwcm9j aW5mbyhyZWwsIGkgKyAxLCBCVE9SREVSX1BST0MpOworCQlpZiAoRGF0dW1HZXRJbnQzMihG dW5jdGlvbkNhbGwyQ29sbChjbXBwcm9jLCByZWwtPnJkX2luZGNvbGxhdGlvbltpXSwKKwkJ CQkJCQkJCQkJaGVhcF9kYXR1bSwgbGVhZl9kYXR1bSkpICE9IDApCisJCQlyZXR1cm4gZmFs c2U7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CiAKIC8qCiAgKglfYnRfZmluZGluc2VydGxv YygpIC0tIEZpbmRzIGFuIGluc2VydCBsb2NhdGlvbiBmb3IgYSB0dXBsZQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWUuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0cmVlLmMKaW5kZXggM2RmMmM3NTJlYWQuLmY1NThkZDAxNTZlIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVlLmMKQEAgLTM5LDYgKzM5LDcgQEAKICNp bmNsdWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCiAKIAorCiAvKgogICogQlRQQVJBTExFTF9O T1RfSU5JVElBTElaRUQgaW5kaWNhdGVzIHRoYXQgdGhlIHNjYW4gaGFzIG5vdCBzdGFydGVk LgogICoKQEAgLTQwOCw2ICs0MDksMTYgQEAgYnRyZXNjYW4oSW5kZXhTY2FuRGVzYyBzY2Fu LCBTY2FuS2V5IHNjYW5rZXksIGludCBuc2NhbmtleXMsCiAJICogcmFjZSBjb25kaXRpb24g aW52b2x2aW5nIFZBQ1VVTSBzZXR0aW5nIHBhZ2VzIGFsbC12aXNpYmxlIGluIHRoZSBWTS4K IAkgKiBJdCdzIGFsc28gdW5zYWZlIGZvciBwbGFpbiBpbmRleCBzY2FucyB0aGF0IHVzZSBh IG5vbi1NVkNDIHNuYXBzaG90LgogCSAqCisJICogTm90ZSB0aGF0IHdhbnRpbmcgdGhlIGlu ZGV4IHR1cGxlICh4c193YW50X2l0dXApIGlzIG5vdCBieSBpdHNlbGYgYQorCSAqIHJlYXNv biB0byByZXRhaW4gdGhlIHBpbjogYnRyZWUgY29waWVzIGVhY2ggcmV0dXJuZWQgSW5kZXhU dXBsZSBpbnRvCisJICogc28tPmN1cnJUdXBsZXMgKHNjYW4tbG9jYWwgbWVtb3J5KSBhbmQg cG9pbnRzIHhzX2l0dXAgdGhlcmUsIHNvIHRoZQorCSAqIHR1cGxlIHN0YXlzIHZhbGlkIGFm dGVyIHRoZSBwaW4gaXMgZHJvcHBlZC4gIE9ubHkgZ2VudWluZSBpbmRleC1vbmx5CisJICog c2NhbnMgKHhzX2luZGV4X29ubHkpLCB3aGljaCBtYXkgcmV0dXJuIGEgdHVwbGUgd2l0aG91 dCBmZXRjaGluZyB0aGUKKwkgKiBoZWFwIGFuZCB0aGVyZWZvcmUgcmVseSBvbiB0aGUgVk0s IG11c3Qga2VlcCB0aGUgcGluLiAgQSBwbGFpbiBpbmRleAorCSAqIHNjYW4gdGhhdCBzZXRz IHhzX3dhbnRfaXR1cCBtZXJlbHkgdG8gaW5zcGVjdCBvciByZWNoZWNrIHRoZSBpbmRleAor CSAqIHR1cGxlIHN0aWxsIGZldGNoZXMgYW5kIHZpc2liaWxpdHktY2hlY2tzIHRoZSBoZWFw LCBzbyBpdCBoYXMgbm8gVk0KKwkgKiByYWNlIGFuZCBtYXkgZHJvcCBwaW5zIGxpa2UgYW55 IG90aGVyIHBsYWluIHNjYW4uCisJICoKIAkgKiBBbHNvIG9wdCBvdXQgb2YgZHJvcHBpbmcg bGVhZiBwYWdlIHBpbnMgZWFnZXJseSBkdXJpbmcgYml0bWFwIHNjYW5zLgogCSAqIFBpbnMg Y2Fubm90IGJlIGhlbGQgZm9yIG1vcmUgdGhhbiBhbiBpbnN0YW50IGR1cmluZyBiaXRtYXAg c2NhbnMgZWl0aGVyCiAJICogd2F5LCBzbyB3ZSBtaWdodCBhcyB3ZWxsIGF2b2lkIHdhc3Rp bmcgY3ljbGVzIG9uIGFjcXVpcmluZyBwYWdlIExTTnMuCkBAIC00MTYsNyArNDI3LDcgQEAg YnRyZXNjYW4oSW5kZXhTY2FuRGVzYyBzY2FuLCBTY2FuS2V5IHNjYW5rZXksIGludCBuc2Nh bmtleXMsCiAJICoKIAkgKiBOb3RlOiBzby0+ZHJvcFBpbiBzaG91bGQgbmV2ZXIgY2hhbmdl IGFjcm9zcyByZXNjYW5zLgogCSAqLwotCXNvLT5kcm9wUGluID0gKCFzY2FuLT54c193YW50 X2l0dXAgJiYKKwlzby0+ZHJvcFBpbiA9ICghc2Nhbi0+eHNfaW5kZXhfb25seSAmJgogCQkJ CSAgIElzTVZDQ0xpa2VTbmFwc2hvdChzY2FuLT54c19zbmFwc2hvdCkgJiYKIAkJCQkgICBz Y2FuLT5oZWFwUmVsYXRpb24gIT0gTlVMTCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90YWJsZS90YWJsZWFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFi bGVhbS5jCmluZGV4IDEyYzI2NzRjYmQ3Li5mMDVjYWJjOGM2NSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdGFibGUvdGFibGVhbS5jCkBAIC0yNDIsMTkgKzI0MiwzMSBAQCBib29sCiB0YWJsZV9p bmRleF9mZXRjaF90dXBsZV9jaGVjayhSZWxhdGlvbiByZWwsCiAJCQkJCQkJICBJdGVtUG9p bnRlciB0aWQsCiAJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQkJCQkgIGJvb2wg KmFsbF9kZWFkKQorCQkJCQkJCSAgYm9vbCAqYWxsX2RlYWQsCisJCQkJCQkJICBib29sICpo b3RfaW5kZXhlZF9yZWNoZWNrX291dCwKKwkJCQkJCQkgIFR1cGxlVGFibGVTbG90ICprZWVw X3Nsb3QpCiB7CiAJSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbjsKIAlUdXBsZVRhYmxlU2xv dCAqc2xvdDsKIAlib29sCQljYWxsX2FnYWluID0gZmFsc2U7CiAJYm9vbAkJZm91bmQ7CiAK LQlzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUocmVsLCBOVUxMKTsKKwlzbG90ID0ga2VlcF9z bG90ID8ga2VlcF9zbG90IDogdGFibGVfc2xvdF9jcmVhdGUocmVsLCBOVUxMKTsKIAlzY2Fu ID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVnaW4ocmVsLCBTT19OT05FKTsKIAlmb3VuZCA9IHRh YmxlX2luZGV4X2ZldGNoX3R1cGxlKHNjYW4sIHRpZCwgc25hcHNob3QsIHNsb3QsICZjYWxs X2FnYWluLAogCQkJCQkJCQkJYWxsX2RlYWQpOworCisJLyoKKwkgKiBTdXJmYWNlIHRoZSB0 YWJsZSBBTSdzIEhPVC9TSVUgcmVjaGVjayBzaWduYWwgdG8gdGhlIGNhbGxlciAodGhlIGlu ZGV4CisJICogQU0sIHdoaWNoIHJlY2hlY2tzIHRoZSBhcnJpdmluZyBsZWFmIGtleSBhZ2Fp bnN0IHRoZSBsaXZlIHR1cGxlKTsgdGhlCisJICogc2NhbiBpcyBmcmVlZCBiZWxvdywgc28g Y29weSBpdCBvdXQuCisJICovCisJaWYgKGhvdF9pbmRleGVkX3JlY2hlY2tfb3V0ICE9IE5V TEwpCisJCSpob3RfaW5kZXhlZF9yZWNoZWNrX291dCA9IGZvdW5kICYmIHNjYW4tPnhzX2hv dF9pbmRleGVkX3JlY2hlY2s7CisKIAl0YWJsZV9pbmRleF9mZXRjaF9lbmQoc2Nhbik7Ci0J RXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKKwlpZiAoa2VlcF9zbG90ID09 IE5VTEwpCisJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CiAKIAlyZXR1 cm4gZm91bmQ7CiB9CkBAIC0zNjEsOCArMzczLDcgQEAgdm9pZAogc2ltcGxlX3RhYmxlX3R1 cGxlX3VwZGF0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2ludGVyIG90aWQsCiAJCQkJCQkgIFR1 cGxlVGFibGVTbG90ICpzbG90LAogCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQkJ CSAgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsCi0JCQkJCQkgIFRVX1Vw ZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKQorCQkJCQkJICBCaXRtYXBzZXQgKiptb2Rp ZmllZF9hdHRycykKIHsKIAlUTV9SZXN1bHQJcmVzdWx0OwogCVRNX0ZhaWx1cmVEYXRhIHRt ZmQ7CkBAIC0zNzMsOCArMzg0LDcgQEAgc2ltcGxlX3RhYmxlX3R1cGxlX3VwZGF0ZShSZWxh dGlvbiByZWwsIEl0ZW1Qb2ludGVyIG90aWQsCiAJCQkJCQkJCTAsIHNuYXBzaG90LCBJbnZh bGlkU25hcHNob3QsCiAJCQkJCQkJCXRydWUgLyogd2FpdCBmb3IgY29tbWl0ICovICwKIAkJ CQkJCQkJJnRtZmQsICZsb2NrbW9kZSwKLQkJCQkJCQkJbW9kaWZpZWRfaWR4X2F0dHJzLAot CQkJCQkJCQl1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCW1vZGlmaWVkX2F0dHJzKTsKIAog CXN3aXRjaCAocmVzdWx0KQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv aW5kZXhpbmcuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXhpbmcuYwppbmRleCBmZDdk MmVjMGUzYS4uN2VhZTJkNjZhMDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv aW5kZXhpbmcuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4aW5nLmMKQEAgLTE4 LDExICsxOCwxNCBAQAogI2luY2x1ZGUgImFjY2Vzcy9nZW5hbS5oIgogI2luY2x1ZGUgImFj Y2Vzcy9oZWFwYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCisjaW5j bHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvaW5kZXguaCIKICNpbmNsdWRlICJjYXRhbG9nL2luZGV4aW5nLmgi CiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKKyNpbmNsdWRlICJub2Rlcy9iaXRt YXBzZXQuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKKyNpbmNsdWRlICJ1dGlscy9yZWxj YWNoZS5oIgogCiAKIC8qCkBAIC02OSwxMSArNzIsMTYgQEAgQ2F0YWxvZ0Nsb3NlSW5kZXhl cyhDYXRhbG9nSW5kZXhTdGF0ZSBpbmRzdGF0ZSkKICAqCiAgKiBUaGlzIHNob3VsZCBiZSBj YWxsZWQgZm9yIGVhY2ggaW5zZXJ0ZWQgb3IgdXBkYXRlZCBjYXRhbG9nIHR1cGxlLgogICoK LSAqIFRoaXMgaXMgZWZmZWN0aXZlbHkgYSBjdXQtZG93biB2ZXJzaW9uIG9mIEV4ZWNJbnNl cnRJbmRleFR1cGxlcy4KKyAqIFRoaXMgaXMgZWZmZWN0aXZlbHkgYSBjdXQtZG93biB2ZXJz aW9uIG9mIEV4ZWNJbnNlcnRJbmRleFR1cGxlcy4gIEZvcgorICogVVBEQVRFIHBhdGhzIHRo ZSBjYWxsZXIgc3VwcGxpZXMgdXBkYXRlX2FsbF9pbmRleGVzIChmcm9tCisgKiB0YWJsZV90 dXBsZV91cGRhdGUgLyBzaW1wbGVfaGVhcF91cGRhdGUpIHNvIHdlIGNhbiB0ZWxsIHdoaWNo IGluZGV4ZXMgYWN0dWFsbHkgbmVlZCBhIG5ldyBlbnRyeToKKyAqIHVwZGF0ZV9hbGxfaW5k ZXhlcyBpcyB0cnVlIGZvciBhIGZyZXNoIGluc2VydCBvciBhIG5vbi1IT1QgdXBkYXRlIChl dmVyeQorICogaW5kZXggZ2V0cyBhbiBlbnRyeSksIGZhbHNlIGZvciBhIGNsYXNzaWMtSE9U IGNhdGFsb2cgdXBkYXRlIChub24tc3VtbWFyaXppbmcKKyAqIGluZGV4ZXMgYXJlIHNraXBw ZWQsIHNpbmNlIHRoZWlyIGV4aXN0aW5nIGVudHJpZXMgc3RpbGwgcmVzb2x2ZSB0aGUgY2hh aW4pLgogICovCiBzdGF0aWMgdm9pZAogQ2F0YWxvZ0luZGV4SW5zZXJ0KENhdGFsb2dJbmRl eFN0YXRlIGluZHN0YXRlLCBIZWFwVHVwbGUgaGVhcFR1cGxlLAotCQkJCSAgIFRVX1VwZGF0 ZUluZGV4ZXMgdXBkYXRlSW5kZXhlcykKKwkJCQkgICBib29sIHVwZGF0ZV9hbGxfaW5kZXhl cykKIHsKIAlpbnQJCQlpOwogCWludAkJCW51bUluZGV4ZXM7CkBAIC04MywyMCArOTEsNiBA QCBDYXRhbG9nSW5kZXhJbnNlcnQoQ2F0YWxvZ0luZGV4U3RhdGUgaW5kc3RhdGUsIEhlYXBU dXBsZSBoZWFwVHVwbGUsCiAJSW5kZXhJbmZvICoqaW5kZXhJbmZvQXJyYXk7CiAJRGF0dW0J CXZhbHVlc1tJTkRFWF9NQVhfS0VZU107CiAJYm9vbAkJaXNudWxsW0lOREVYX01BWF9LRVlT XTsKLQlib29sCQlvbmx5U3VtbWFyaXplZCA9ICh1cGRhdGVJbmRleGVzID09IFRVX1N1bW1h cml6aW5nKTsKLQotCS8qCi0JICogSE9UIHVwZGF0ZSBkb2VzIG5vdCByZXF1aXJlIGluZGV4 IGluc2VydHMuIEJ1dCB3aXRoIGFzc2VydHMgZW5hYmxlZCB3ZQotCSAqIHdhbnQgdG8gY2hl Y2sgdGhhdCBpdCdkIGJlIGxlZ2FsIHRvIGN1cnJlbnRseSBpbnNlcnQgaW50byB0aGUKLQkg KiB0YWJsZS9pbmRleC4KLQkgKi8KLSNpZm5kZWYgVVNFX0FTU0VSVF9DSEVDS0lORwotCWlm IChIZWFwVHVwbGVJc0hlYXBPbmx5KGhlYXBUdXBsZSkgJiYgIW9ubHlTdW1tYXJpemVkKQot CQlyZXR1cm47Ci0jZW5kaWYKLQotCS8qIFdoZW4gb25seSB1cGRhdGluZyBzdW1tYXJpemVk IGluZGV4ZXMsIHRoZSB0dXBsZSBoYXMgdG8gYmUgSE9ULiAqLwotCUFzc2VydCgoIW9ubHlT dW1tYXJpemVkKSB8fCBIZWFwVHVwbGVJc0hlYXBPbmx5KGhlYXBUdXBsZSkpOwogCiAJLyoK IAkgKiBHZXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgc3RhdGUgc3RydWN0dXJlLiAgRmFsbCBv dXQgaWYgbm90aGluZyB0byBkby4KQEAgLTEyMCw2ICsxMTQsNyBAQCBDYXRhbG9nSW5kZXhJ bnNlcnQoQ2F0YWxvZ0luZGV4U3RhdGUgaW5kc3RhdGUsIEhlYXBUdXBsZSBoZWFwVHVwbGUs CiAJewogCQlJbmRleEluZm8gICppbmRleEluZm87CiAJCVJlbGF0aW9uCWluZGV4OworCQli b29sCQlpbmRleF91bmNoYW5nZWQ7CiAKIAkJaW5kZXhJbmZvID0gaW5kZXhJbmZvQXJyYXlb aV07CiAJCWluZGV4ID0gcmVsYXRpb25EZXNjc1tpXTsKQEAgLTEzOCwyMiArMTMzLDIwIEBA IENhdGFsb2dJbmRleEluc2VydChDYXRhbG9nSW5kZXhTdGF0ZSBpbmRzdGF0ZSwgSGVhcFR1 cGxlIGhlYXBUdXBsZSwKIAkJQXNzZXJ0KGluZGV4LT5yZF9pbmRleC0+aW5kaW1tZWRpYXRl KTsKIAkJQXNzZXJ0KGluZGV4SW5mby0+aWlfTnVtSW5kZXhLZXlBdHRycyAhPSAwKTsKIAot CQkvKiBzZWUgZWFybGllciBjaGVjayBhYm92ZSAqLwotI2lmZGVmIFVTRV9BU1NFUlRfQ0hF Q0tJTkcKLQkJaWYgKEhlYXBUdXBsZUlzSGVhcE9ubHkoaGVhcFR1cGxlKSAmJiAhb25seVN1 bW1hcml6ZWQpCi0JCXsKLQkJCUFzc2VydCghUmVpbmRleElzUHJvY2Vzc2luZ0luZGV4KFJl bGF0aW9uR2V0UmVsaWQoaW5kZXgpKSk7Ci0JCQljb250aW51ZTsKLQkJfQotI2VuZGlmCQkJ CQkJCS8qIFVTRV9BU1NFUlRfQ0hFQ0tJTkcgKi8KLQogCQkvKgotCQkgKiBTa2lwIGluc2Vy dGlvbnMgaW50byBub24tc3VtbWFyaXppbmcgaW5kZXhlcyBpZiB3ZSBvbmx5IG5lZWQgdG8K LQkJICogdXBkYXRlIHN1bW1hcml6aW5nIGluZGV4ZXMuCisJCSAqIERlY2lkZSB3aGV0aGVy IHRoaXMgaW5kZXggbmVlZHMgYSBuZXcgZW50cnkuICBPbiBJTlNFUlQgb3IgYQorCQkgKiBu b24tSE9UIHVwZGF0ZSAodXBkYXRlX2FsbF9pbmRleGVzKSBldmVyeSBpbmRleCBnZXRzIG9u ZS4gIE9uIGEKKwkJICogY2xhc3NpYy1IT1QgY2F0YWxvZyB1cGRhdGUgbm8gaW5kZXhlZCBh dHRyaWJ1dGUgY2hhbmdlZCwgc28gdGhlCisJCSAqIG5vbi1zdW1tYXJpemluZyBpbmRleGVz IGFyZSBza2lwcGVkIChzdW1tYXJpemluZyBpbmRleGVzIGFsd2F5cyBnZXQKKwkJICogYSBj aGFuY2UgdG8gdXBkYXRlIHRoZWlyIGJsb2NrLWxldmVsIHN1bW1hcmllcyBiZWxvdykuCiAJ CSAqLwotCQlpZiAob25seVN1bW1hcml6ZWQgJiYgIWluZGV4SW5mby0+aWlfU3VtbWFyaXpp bmcpCisJCWluZGV4X3VuY2hhbmdlZCA9ICF1cGRhdGVfYWxsX2luZGV4ZXM7CisJCWluZGV4 SW5mby0+aWlfSW5kZXhVbmNoYW5nZWQgPSBpbmRleF91bmNoYW5nZWQ7CisKKwkJaWYgKGlu ZGV4X3VuY2hhbmdlZCAmJiAhaW5kZXhJbmZvLT5paV9TdW1tYXJpemluZykKIAkJCWNvbnRp bnVlOwogCisKIAkJLyoKIAkJICogRm9ybUluZGV4RGF0dW0gZmlsbHMgaW4gaXRzIHZhbHVl cyBhbmQgaXNudWxsIHBhcmFtZXRlcnMgd2l0aCB0aGUKIAkJICogYXBwcm9wcmlhdGUgdmFs dWVzIGZvciB0aGUgY29sdW1uKHMpIG9mIHRoZSBpbmRleC4KQEAgLTI0MCw3ICsyMzMsNyBA QCBDYXRhbG9nVHVwbGVJbnNlcnQoUmVsYXRpb24gaGVhcFJlbCwgSGVhcFR1cGxlIHR1cCkK IAogCXNpbXBsZV9oZWFwX2luc2VydChoZWFwUmVsLCB0dXApOwogCi0JQ2F0YWxvZ0luZGV4 SW5zZXJ0KGluZHN0YXRlLCB0dXAsIFRVX0FsbCk7CisJQ2F0YWxvZ0luZGV4SW5zZXJ0KGlu ZHN0YXRlLCB0dXAsIHRydWUpOwogCUNhdGFsb2dDbG9zZUluZGV4ZXMoaW5kc3RhdGUpOwog fQogCkBAIC0yNjAsNyArMjUzLDcgQEAgQ2F0YWxvZ1R1cGxlSW5zZXJ0V2l0aEluZm8oUmVs YXRpb24gaGVhcFJlbCwgSGVhcFR1cGxlIHR1cCwKIAogCXNpbXBsZV9oZWFwX2luc2VydCho ZWFwUmVsLCB0dXApOwogCi0JQ2F0YWxvZ0luZGV4SW5zZXJ0KGluZHN0YXRlLCB0dXAsIFRV X0FsbCk7CisJQ2F0YWxvZ0luZGV4SW5zZXJ0KGluZHN0YXRlLCB0dXAsIHRydWUpOwogfQog CiAvKgpAQCAtMjkxLDcgKzI4NCw3IEBAIENhdGFsb2dUdXBsZXNNdWx0aUluc2VydFdpdGhJ bmZvKFJlbGF0aW9uIGhlYXBSZWwsIFR1cGxlVGFibGVTbG90ICoqc2xvdCwKIAogCQl0dXBs ZSA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGUoc2xvdFtpXSwgdHJ1ZSwgJnNob3VsZF9mcmVl KTsKIAkJdHVwbGUtPnRfdGFibGVPaWQgPSBzbG90W2ldLT50dHNfdGFibGVPaWQ7Ci0JCUNh dGFsb2dJbmRleEluc2VydChpbmRzdGF0ZSwgdHVwbGUsIFRVX0FsbCk7CisJCUNhdGFsb2dJ bmRleEluc2VydChpbmRzdGF0ZSwgdHVwbGUsIHRydWUpOwogCiAJCWlmIChzaG91bGRfZnJl ZSkKIAkJCWhlYXBfZnJlZXR1cGxlKHR1cGxlKTsKQEAgLTMxMywxNSArMzA2LDE1IEBAIHZv aWQKIENhdGFsb2dUdXBsZVVwZGF0ZShSZWxhdGlvbiBoZWFwUmVsLCBjb25zdCBJdGVtUG9p bnRlckRhdGEgKm90aWQsIEhlYXBUdXBsZSB0dXApCiB7CiAJQ2F0YWxvZ0luZGV4U3RhdGUg aW5kc3RhdGU7Ci0JVFVfVXBkYXRlSW5kZXhlcyB1cGRhdGVJbmRleGVzID0gVFVfQWxsOwor CWJvb2wJCXVwZGF0ZV9hbGxfaW5kZXhlczsKIAogCUNhdGFsb2dUdXBsZUNoZWNrQ29uc3Ry YWludHMoaGVhcFJlbCwgdHVwKTsKIAogCWluZHN0YXRlID0gQ2F0YWxvZ09wZW5JbmRleGVz KGhlYXBSZWwpOwogCi0Jc2ltcGxlX2hlYXBfdXBkYXRlKGhlYXBSZWwsIG90aWQsIHR1cCwg JnVwZGF0ZUluZGV4ZXMpOworCXNpbXBsZV9oZWFwX3VwZGF0ZShoZWFwUmVsLCBvdGlkLCB0 dXAsICZ1cGRhdGVfYWxsX2luZGV4ZXMpOwogCi0JQ2F0YWxvZ0luZGV4SW5zZXJ0KGluZHN0 YXRlLCB0dXAsIHVwZGF0ZUluZGV4ZXMpOworCUNhdGFsb2dJbmRleEluc2VydChpbmRzdGF0 ZSwgdHVwLCB1cGRhdGVfYWxsX2luZGV4ZXMpOwogCUNhdGFsb2dDbG9zZUluZGV4ZXMoaW5k c3RhdGUpOwogfQogCkBAIC0zMzcsMTMgKzMzMCwxMyBAQCB2b2lkCiBDYXRhbG9nVHVwbGVV cGRhdGVXaXRoSW5mbyhSZWxhdGlvbiBoZWFwUmVsLCBjb25zdCBJdGVtUG9pbnRlckRhdGEg Km90aWQsIEhlYXBUdXBsZSB0dXAsCiAJCQkJCQkgICBDYXRhbG9nSW5kZXhTdGF0ZSBpbmRz dGF0ZSkKIHsKLQlUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZUluZGV4ZXMgPSBUVV9BbGw7CisJ Ym9vbAkJdXBkYXRlX2FsbF9pbmRleGVzOwogCiAJQ2F0YWxvZ1R1cGxlQ2hlY2tDb25zdHJh aW50cyhoZWFwUmVsLCB0dXApOwogCi0Jc2ltcGxlX2hlYXBfdXBkYXRlKGhlYXBSZWwsIG90 aWQsIHR1cCwgJnVwZGF0ZUluZGV4ZXMpOworCXNpbXBsZV9oZWFwX3VwZGF0ZShoZWFwUmVs LCBvdGlkLCB0dXAsICZ1cGRhdGVfYWxsX2luZGV4ZXMpOwogCi0JQ2F0YWxvZ0luZGV4SW5z ZXJ0KGluZHN0YXRlLCB0dXAsIHVwZGF0ZUluZGV4ZXMpOworCUNhdGFsb2dJbmRleEluc2Vy dChpbmRzdGF0ZSwgdHVwLCB1cGRhdGVfYWxsX2luZGV4ZXMpOwogfQogCiAvKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy90b2FzdGluZy5jCmluZGV4IDRhYTUyYTRiZDI1Li5lMGJjMDFmNjNkMyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy90b2FzdGluZy5jCisrKyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvdG9hc3RpbmcuYwpAQCAtMzA3LDggKzMwNyw2IEBAIGNyZWF0ZV90b2FzdF90 YWJsZShSZWxhdGlvbiByZWwsIE9pZCB0b2FzdE9pZCwgT2lkIHRvYXN0SW5kZXhPaWQsCiAJ aW5kZXhJbmZvLT5paV9VbmlxdWUgPSB0cnVlOwogCWluZGV4SW5mby0+aWlfTnVsbHNOb3RE aXN0aW5jdCA9IGZhbHNlOwogCWluZGV4SW5mby0+aWlfUmVhZHlGb3JJbnNlcnRzID0gdHJ1 ZTsKLQlpbmRleEluZm8tPmlpX0NoZWNrZWRVbmNoYW5nZWQgPSBmYWxzZTsKLQlpbmRleElu Zm8tPmlpX0luZGV4VW5jaGFuZ2VkID0gZmFsc2U7CiAJaW5kZXhJbmZvLT5paV9Db25jdXJy ZW50ID0gZmFsc2U7CiAJaW5kZXhJbmZvLT5paV9Ccm9rZW5Ib3RDaGFpbiA9IGZhbHNlOwog CWluZGV4SW5mby0+aWlfUGFyYWxsZWxXb3JrZXJzID0gMDsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNr LmMKaW5kZXggYmY0NWM1Y2Y4MjYuLjEzZTg3NjJlN2Y0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9yZXBhY2suYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9yZXBh Y2suYwpAQCAtMjY3OCwxNCArMjY3OCwxNCBAQCBhcHBseV9jb25jdXJyZW50X3VwZGF0ZShS ZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICpzcGlsbGVkX3R1cGxlLAogewogCUxvY2tU dXBsZU1vZGUgbG9ja21vZGU7CiAJVE1fRmFpbHVyZURhdGEgdG1mZDsKLQlUVV9VcGRhdGVJ bmRleGVzIHVwZGF0ZV9pbmRleGVzOwogCUJpdG1hcHNldCAgKm1vZGlmaWVkX2lkeF9hdHRy czsKIAlUTV9SZXN1bHQJcmVzOwogCiAJLyoKIAkgKiBDb21wdXRlIHRoZSBzZXQgb2YgbW9k aWZpZWQgaW5kZXhlZCBhdHRyaWJ1dGVzIGJ5IGNvbXBhcmluZyB0aGUgb2xkCi0JICogKG9u ZGlzaykgYW5kIG5ldyAoc3BpbGxlZCkgdHVwbGVzOyBoZWFwX3VwZGF0ZSBuZWVkcyBpdCBm b3IgYSBjb3JyZWN0Ci0JICogSE9UIGRlY2lzaW9uIChhIE5VTEwgc2V0IHdvdWxkIGxvb2sg bGlrZSAibm8gaW5kZXhlZCBjb2x1bW4gY2hhbmdlZCIpLgorCSAqIChvbmRpc2spIGFuZCBu ZXcgKHNwaWxsZWQpIHR1cGxlcy4gIGhlYXBfdXBkYXRlIG5lZWRzIHRoaXMgdG8gbWFrZSBh CisJICogY29ycmVjdCBIT1QgZGVjaXNpb247IHdpdGhvdXQgaXQgbW9kaWZpZWRfaWR4X2F0 dHJzIHdvdWxkIGJlIE5VTEwgYW5kCisJICogaGVhcF91cGRhdGUgd291bGQgYWx3YXlzIHRy ZWF0IHRoZSB1cGRhdGUgYXMgSE9ULWVsaWdpYmxlLgogCSAqLwogCW1vZGlmaWVkX2lkeF9h dHRycyA9IEV4ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKGNoZ2N4dC0+Y2NfcnJpLAogCQkJ CQkJCQkJCQkJCW9uZGlza190dXBsZSwKQEAgLTI3MDAsMjkgKzI3MDAsMzMgQEAgYXBwbHlf Y29uY3VycmVudF91cGRhdGUoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqc3BpbGxl ZF90dXBsZSwKIAkJCQkJCQkgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCSBJbnZhbGlkU25h cHNob3QsCiAJCQkJCQkJIGZhbHNlLAotCQkJCQkJCSAmdG1mZCwgJmxvY2ttb2RlLCBtb2Rp ZmllZF9pZHhfYXR0cnMsICZ1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJICZ0bWZkLCAmbG9j a21vZGUsCisJCQkJCQkJICZtb2RpZmllZF9pZHhfYXR0cnMpOwogCWlmIChyZXMgIT0gVE1f T2spCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJZXJyY29kZShFUlJDT0RFX1RfUl9TRVJJQUxJ WkFUSU9OX0ZBSUxVUkUpLAogCQkJCWVycm1zZygiY291bGQgbm90IGFwcGx5IGNvbmN1cnJl bnQgJXMgb24gcmVsYXRpb24gXCIlc1wiIiwKIAkJCQkJICAgIlVQREFURSIsIFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHJlbCkpKTsKIAotCWlmICh1cGRhdGVfaW5kZXhlcyAhPSBUVV9O b25lKQorCWlmIChjaGdjeHQtPmNjX3JyaS0+cmlfTnVtSW5kaWNlcyA+IDAgJiYKKwkJIWJt c19pc19lbXB0eShtb2RpZmllZF9pZHhfYXR0cnMpKQogCXsKLQkJdWludDMyCQlmbGFncyA9 IEVJSVRfSVNfVVBEQVRFOworCQlib29sCQlhbGxfaW5kZXhlcyA9CisJCQlibXNfaXNfbWVt YmVyKFRhYmxlVHVwbGVVcGRhdGVBbGxJbmRleGVzLCBtb2RpZmllZF9pZHhfYXR0cnMpOwog Ci0JCWlmICh1cGRhdGVfaW5kZXhlcyA9PSBUVV9TdW1tYXJpemluZykKLQkJCWZsYWdzIHw9 IEVJSVRfT05MWV9TVU1NQVJJWklORzsKKwkJRXhlY1NldEluZGV4VW5jaGFuZ2VkKGNoZ2N4 dC0+Y2NfcnJpLCBtb2RpZmllZF9pZHhfYXR0cnMpOwogCQlFeGVjSW5zZXJ0SW5kZXhUdXBs ZXMoY2hnY3h0LT5jY19ycmksCiAJCQkJCQkJICBjaGdjeHQtPmNjX2VzdGF0ZSwKLQkJCQkJ CQkgIGZsYWdzLAorCQkJCQkJCSAgRUlJVF9JU19VUERBVEUgfAorCQkJCQkJCSAgKGFsbF9p bmRleGVzID8KKwkJCQkJCQkgICAwIDogRUlJVF9JU19IT1RfSU5ERVhFRCksCiAJCQkJCQkJ ICBzcGlsbGVkX3R1cGxlLAogCQkJCQkJCSAgTklMLCBOVUxMKTsKIAl9CiAKLQlwZ3N0YXRf cHJvZ3Jlc3NfaW5jcl9wYXJhbShQUk9HUkVTU19SRVBBQ0tfSEVBUF9UVVBMRVNfVVBEQVRF RCwgMSk7Ci0KIAlibXNfZnJlZShtb2RpZmllZF9pZHhfYXR0cnMpOworCisJcGdzdGF0X3By b2dyZXNzX2luY3JfcGFyYW0oUFJPR1JFU1NfUkVQQUNLX0hFQVBfVFVQTEVTX1VQREFURUQs IDEpOwogfQogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0luZGV4aW5nLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcu YwppbmRleCBlYjM4MzgxMjkwMS4uNTMyOGRiODc3Y2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNJbmRleGluZy5jCkBAIC0xMTMsMTEgKzExMywxMyBAQAogI2luY2x1ZGUgImNhdGFs b2cvaW5kZXguaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUg Im5vZGVzL25vZGVGdW5jcy5oIgorI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogI2lu Y2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL211bHRpcmFuZ2V0 eXBlcy5oIgogI2luY2x1ZGUgInV0aWxzL3JhbmdldHlwZXMuaCIKKyNpbmNsdWRlICJ1dGls cy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAKIC8qIHdhaXRNb2RlIGFy Z3VtZW50IHRvIGNoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludCgpICovCkBA IC0xNDAsMTEgKzE0Miw2IEBAIHN0YXRpYyBib29sIGNoZWNrX2V4Y2x1c2lvbl9vcl91bmlx dWVfY29uc3RyYWludChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIHN0YXRpYyBi b29sIGluZGV4X3JlY2hlY2tfY29uc3RyYWludChSZWxhdGlvbiBpbmRleCwgY29uc3QgT2lk ICpjb25zdHJfcHJvY3MsCiAJCQkJCQkJCQkgY29uc3QgRGF0dW0gKmV4aXN0aW5nX3ZhbHVl cywgY29uc3QgYm9vbCAqZXhpc3RpbmdfaXNudWxsLAogCQkJCQkJCQkJIGNvbnN0IERhdHVt ICpuZXdfdmFsdWVzKTsKLXN0YXRpYyBib29sIGluZGV4X3VuY2hhbmdlZF9ieV91cGRhdGUo UmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKLQkJCQkJCQkJCSAgRVN0YXRlICplc3Rh dGUsIEluZGV4SW5mbyAqaW5kZXhJbmZvLAotCQkJCQkJCQkJICBSZWxhdGlvbiBpbmRleFJl bGF0aW9uKTsKLXN0YXRpYyBib29sIGluZGV4X2V4cHJlc3Npb25fY2hhbmdlZF93YWxrZXIo Tm9kZSAqbm9kZSwKLQkJCQkJCQkJCQkJQml0bWFwc2V0ICphbGxVcGRhdGVkQ29scyk7CiBz dGF0aWMgdm9pZCBFeGVjV2l0aG91dE92ZXJsYXBzTm90RW1wdHkoUmVsYXRpb24gcmVsLCBO YW1lRGF0YSBhdHRuYW1lLCBEYXR1bSBhdHR2YWwsCiAJCQkJCQkJCQkJY2hhciB0eXB0eXBl LCBPaWQgYXR0dHlwaWQpOwogCkBAIC0yNzcsMjQgKzI3NCwxMiBAQCBFeGVjQ2xvc2VJbmRp Y2VzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8pCiAgKgkJaW50byBhbGwgdGhlIHJl bGF0aW9ucyBpbmRleGluZyB0aGUgcmVzdWx0IHJlbGF0aW9uCiAgKgkJd2hlbiBhIGhlYXAg dHVwbGUgaXMgaW5zZXJ0ZWQgaW50byB0aGUgcmVzdWx0IHJlbGF0aW9uLgogICoKLSAqCQlX aGVuIEVJSVRfSVNfVVBEQVRFIGlzIHNldCBhbmQgRUlJVF9PTkxZX1NVTU1BUklaSU5HIGlz bid0LAotICoJCWV4ZWN1dG9yIGlzIHBlcmZvcm1pbmcgYW4gVVBEQVRFIHRoYXQgY291bGQg bm90IHVzZSBhbgotICoJCW9wdGltaXphdGlvbiBsaWtlIGhlYXBhbSdzIEhPVCAoaW4gbW9y ZSBnZW5lcmFsIHRlcm1zIGEKLSAqCQljYWxsIHRvIHRhYmxlX3R1cGxlX3VwZGF0ZSgpIHRv b2sgcGxhY2UgYW5kIHNldAotICoJCSd1cGRhdGVfaW5kZXhlcycgdG8gVFVfQWxsKS4gIFJl Y2VpdmluZyB0aGlzIGhpbnQgbWFrZXMKLSAqCQl1cyBjb25zaWRlciBpZiB3ZSBzaG91bGQg cGFzcyBkb3duIHRoZSAnaW5kZXhVbmNoYW5nZWQnCi0gKgkJaGludCBpbiB0dXJuLiAgVGhh dCdzIHNvbWV0aGluZyB0aGF0IHdlIGZpZ3VyZSBvdXQgZm9yCi0gKgkJZWFjaCBpbmRleF9p bnNlcnQoKSBjYWxsIGlmZiBFSUlUX0lTX1VQREFURSBpcyBzZXQuCi0gKgkJKFdoZW4gdGhh dCBmbGFnIGlzIG5vdCBzZXQgd2UgYWxyZWFkeSBrbm93IG5vdCB0byBwYXNzIHRoZQotICoJ CWhpbnQgdG8gYW55IGluZGV4LikKLSAqCi0gKgkJSWYgRUlJVF9PTkxZX1NVTU1BUklaSU5H IGlzIHNldCwgYW4gZXF1aXZhbGVudCBvcHRpbWl6YXRpb24gdG8KLSAqCQlIT1QgaGFzIGJl ZW4gYXBwbGllZCBhbmQgYW55IHVwZGF0ZWQgY29sdW1ucyBhcmUgaW5kZXhlZAotICoJCW9u bHkgYnkgc3VtbWFyaXppbmcgaW5kZXhlcyAob3IgaW4gbW9yZSBnZW5lcmFsIHRlcm1zIGEK LSAqCQljYWxsIHRvIHRhYmxlX3R1cGxlX3VwZGF0ZSgpIHRvb2sgcGxhY2UgYW5kIHNldAot ICoJCSd1cGRhdGVfaW5kZXhlcycgdG8gVFVfU3VtbWFyaXppbmcpLiBXZSBjYW4gKGFuZCBt dXN0KQotICoJCXRoZXJlZm9yZSBvbmx5IHVwZGF0ZSB0aGUgaW5kZXhlcyB0aGF0IGhhdmUK LSAqCQknYW1zdW1tYXJpemluZycgPSB0cnVlLgorICoJCVdoZW4gRUlJVF9JU19VUERBVEUg aXMgc2V0LCB0aGUgZXhlY3V0b3IgaXMgcGVyZm9ybWluZyBhbgorICoJCVVQREFURS4gIFRo ZSBwZXItaW5kZXggaWlfSW5kZXhVbmNoYW5nZWQgZmxhZyAocG9wdWxhdGVkIGJ5CisgKgkJ RXhlY1NldEluZGV4VW5jaGFuZ2VkKCkpIGluZGljYXRlcyB3aGV0aGVyIGVhY2ggaW5kZXgn cyBrZXkKKyAqCQl2YWx1ZXMgYXJlIHVuY2hhbmdlZCBieSB0aGlzIHVwZGF0ZS4gIFdoZW4g aWlfSW5kZXhVbmNoYW5nZWQKKyAqCQlpcyB0cnVlLCB3ZSBwYXNzIGluZGV4VW5jaGFuZ2Vk PXRydWUgdG8gaW5kZXhfaW5zZXJ0KCkgYXMgYQorICoJCWhpbnQgZm9yIGJvdHRvbS11cCBk ZWxldGlvbiBvcHRpbWl6YXRpb24uCiAgKgogICoJCVVuaXF1ZSBhbmQgZXhjbHVzaW9uIGNv bnN0cmFpbnRzIGFyZSBlbmZvcmNlZCBhdCB0aGUgc2FtZQogICoJCXRpbWUuICBUaGlzIHJl dHVybnMgYSBsaXN0IG9mIGluZGV4IE9JRHMgZm9yIGFueSB1bmlxdWUgb3IKQEAgLTM3MCwx MSArMzU1LDQxIEBAIEV4ZWNJbnNlcnRJbmRleFR1cGxlcyhSZXN1bHRSZWxJbmZvICpyZXN1 bHRSZWxJbmZvLAogCQkJY29udGludWU7CiAKIAkJLyoKLQkJICogU2tpcCBwcm9jZXNzaW5n IG9mIG5vbi1zdW1tYXJpemluZyBpbmRleGVzIGlmIHdlIG9ubHkgdXBkYXRlCi0JCSAqIHN1 bW1hcml6aW5nIGluZGV4ZXMKKwkJICogVVBEQVRFIHNraXAgcnVsZS4gIEV4ZWNTZXRJbmRl eFVuY2hhbmdlZCBwb3B1bGF0ZWQKKwkJICogaWlfSW5kZXhOZWVkc1VwZGF0ZSBmb3IgZXZl cnkgaW5kZXg6IHRydWUgd2hlbiB0aGUgdGFibGUgQU0gc3RvcmVkCisJCSAqIGFuIGluZGVw ZW5kZW50IG5ldyB2ZXJzaW9uLCBvciB3aGVuIGFueSBhdHRyaWJ1dGUgdGhlIGluZGV4CisJ CSAqIHJlZmVyZW5jZXMgKGtleSwgSU5DTFVERSwgZXhwcmVzc2lvbiwgb3IgcGFydGlhbC1w cmVkaWNhdGUgY29sdW1uKQorCQkgKiBvdmVybGFwcyB0aGUgbW9kaWZpZWQtYXR0cnMgYml0 bWFwLiAgV2hlbiBpdCBpcyBmYWxzZSBvbiBhCisJCSAqIG5vbi1zdW1tYXJpemluZyBpbmRl eCB3ZSBza2lwIHRoZSBpbnNlcnQgZW50aXJlbHk7IHRoZSBIT1QgY2hhaW4KKwkJICoga2Vl cHMgZXhpc3RpbmcgZW50cmllcyBwb2ludGluZyBhdCB0aGUgY2hhaW4gcm9vdC4gIFN1bW1h cml6aW5nCisJCSAqIGluZGV4ZXMgYWx3YXlzIGdldCBhIGNoYW5jZSB0byB1cGRhdGUgdGhl aXIgYmxvY2stbGV2ZWwgc3VtbWFyaWVzLgogCQkgKi8KLQkJaWYgKChmbGFncyAmIEVJSVRf T05MWV9TVU1NQVJJWklORykgJiYgIWluZGV4SW5mby0+aWlfU3VtbWFyaXppbmcpCisJCWlm ICgoZmxhZ3MgJiBFSUlUX0lTX1VQREFURSkgJiYKKwkJCSFpbmRleEluZm8tPmlpX0luZGV4 TmVlZHNVcGRhdGUgJiYKKwkJCSFpbmRleEluZm8tPmlpX1N1bW1hcml6aW5nKQorCQl7CisJ CQkvKgorCQkJICogVGhpcyBpbmRleCB3YXMgc2tpcHBlZCBiZWNhdXNlIGl0cyBrZXkgYXR0 cmlidXRlcyBkaWQgbm90CisJCQkgKiBjaGFuZ2UuICBXaGVuIHRoZSBvdmVyYWxsIHVwZGF0 ZSBpcyBhIEhPVC1pbmRleGVkIHVwZGF0ZSAoc29tZQorCQkJICogb3RoZXIgbm9uLXN1bW1h cml6aW5nIGluZGV4IGRpZCBjaGFuZ2UpLCByZWNvcmQgdGhlIHNraXAgb24KKwkJCSAqIHRo aXMgaW5kZXgncyBwZ3N0YXQgZW50cnkuICBBIGNsYXNzaWMtSE9UIHVwZGF0ZSAobm8gaW5k ZXhlZAorCQkJICogYXR0cmlidXRlIGNoYW5nZWQpIGRvZXMgbm90IHJlYWNoIHRoaXMgcGF0 aCAtLQorCQkJICogRXhlY0luc2VydEluZGV4VHVwbGVzIGlzIG9ubHkgaW52b2tlZCB3aGVu IGF0IGxlYXN0IG9uZSBpbmRleAorCQkJICogbmVlZHMgYSBmcmVzaCBlbnRyeS4KKwkJCSAq LworCQkJaWYgKGZsYWdzICYgRUlJVF9JU19IT1RfSU5ERVhFRCkKKwkJCQlwZ3N0YXRfY291 bnRfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQoaW5kZXhSZWxhdGlvbik7CiAJCQljb250aW51 ZTsKKwkJfQorCisJCS8qCisJCSAqIE5vbi1za2lwcGVkIGluZGV4IHVuZGVyIGEgSE9ULWlu ZGV4ZWQgdXBkYXRlOiB0aGlzIGluZGV4IGlzCisJCSAqIHJlY2VpdmluZyBhIGZyZXNoIGVu dHJ5IGJlY2F1c2Ugb25lIG9mIGl0cyBrZXkgYXR0cmlidXRlcyBjaGFuZ2VkLgorCQkgKiBT dW1tYXJpemluZyBpbmRleGVzIGFsd2F5cyBpbnNlcnQgcmVnYXJkbGVzcyBvZiB0aGUgSE9U LWluZGV4ZWQKKwkJICogZGVjaXNpb24gKHNhbWUgYXMgY2xhc3NpYyBIT1QpLCBzbyB0aGV5 IGFyZSBub3QgY291bnRlZCBoZXJlLgorCQkgKi8KKwkJaWYgKChmbGFncyAmIEVJSVRfSVNf SE9UX0lOREVYRUQpICYmICFpbmRleEluZm8tPmlpX1N1bW1hcml6aW5nKQorCQkJcGdzdGF0 X2NvdW50X2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkKGluZGV4UmVsYXRpb24pOwogCiAJCS8q IENoZWNrIGZvciBwYXJ0aWFsIGluZGV4ICovCiAJCWlmIChpbmRleEluZm8tPmlpX1ByZWRp Y2F0ZSAhPSBOSUwpCkBAIC00MzYsMTUgKzQ1MSwxMyBAQCBFeGVjSW5zZXJ0SW5kZXhUdXBs ZXMoUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJCWNoZWNrVW5pcXVlID0gVU5J UVVFX0NIRUNLX1BBUlRJQUw7CiAKIAkJLyoKLQkJICogVGhlcmUncyBkZWZpbml0ZWx5IGdv aW5nIHRvIGJlIGFuIGluZGV4X2luc2VydCgpIGNhbGwgZm9yIHRoaXMKLQkJICogaW5kZXgu ICBJZiB3ZSdyZSBiZWluZyBjYWxsZWQgYXMgcGFydCBvZiBhbiBVUERBVEUgc3RhdGVtZW50 LAotCQkgKiBjb25zaWRlciBpZiB0aGUgJ2luZGV4VW5jaGFuZ2VkJyA9IHRydWUgaGludCBz aG91bGQgYmUgcGFzc2VkLgorCQkgKiBGb3IgVVBEQVRFIG9wZXJhdGlvbnMsIHVzZSB0aGUg cGVyLWluZGV4IGlpX0luZGV4VW5jaGFuZ2VkIGZsYWcKKwkJICogKHBvcHVsYXRlZCBieSBF eGVjU2V0SW5kZXhVbmNoYW5nZWQpIHRvIGhpbnQgd2hldGhlciB0aGUgaW5kZXgKKwkJICog dmFsdWVzIGFyZSB1bmNoYW5nZWQuICBUaGlzIGhlbHBzIHRoZSBpbmRleCBBTSBvcHRpbWl6 ZSBmb3IKKwkJICogYm90dG9tLXVwIGRlbGV0aW9uIG9mIGR1cGxpY2F0ZSBpbmRleCBlbnRy aWVzLgogCQkgKi8KLQkJaW5kZXhVbmNoYW5nZWQgPSAoKGZsYWdzICYgRUlJVF9JU19VUERB VEUpICYmCi0JCQkJCQkgIGluZGV4X3VuY2hhbmdlZF9ieV91cGRhdGUocmVzdWx0UmVsSW5m bywKLQkJCQkJCQkJCQkJCQllc3RhdGUsCi0JCQkJCQkJCQkJCQkJaW5kZXhJbmZvLAotCQkJ CQkJCQkJCQkJCWluZGV4UmVsYXRpb24pKTsKKwkJaW5kZXhVbmNoYW5nZWQgPSAoZmxhZ3Mg JiBFSUlUX0lTX1VQREFURSkgPworCQkJaW5kZXhJbmZvLT5paV9JbmRleFVuY2hhbmdlZCA6 IGZhbHNlOwogCiAJCXNhdGlzZmllc0NvbnN0cmFpbnQgPQogCQkJaW5kZXhfaW5zZXJ0KGlu ZGV4UmVsYXRpb24sIC8qIGluZGV4IHJlbGF0aW9uICovCkBAIC03MjEsNiArNzM0LDcgQEAg Y2hlY2tfZXhjbHVzaW9uX29yX3VuaXF1ZV9jb25zdHJhaW50KFJlbGF0aW9uIGhlYXAsIFJl bGF0aW9uIGluZGV4LAogCWludAkJCWk7CiAJYm9vbAkJY29uZmxpY3Q7CiAJYm9vbAkJZm91 bmRfc2VsZjsKKwlib29sCQlmb3VuZF9zZWxmX3NpdV9oaXQ7CiAJRXhwckNvbnRleHQgKmVj b250ZXh0OwogCVR1cGxlVGFibGVTbG90ICpleGlzdGluZ19zbG90OwogCVR1cGxlVGFibGVT bG90ICpzYXZlX3NjYW50dXBsZTsKQEAgLTgyMyw2ICs4MzcsNyBAQCBjaGVja19leGNsdXNp b25fb3JfdW5pcXVlX2NvbnN0cmFpbnQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgs CiByZXRyeToKIAljb25mbGljdCA9IGZhbHNlOwogCWZvdW5kX3NlbGYgPSBmYWxzZTsKKwlm b3VuZF9zZWxmX3NpdV9oaXQgPSBmYWxzZTsKIAlpbmRleF9zY2FuID0gaW5kZXhfYmVnaW5z Y2FuKGhlYXAsIGluZGV4LAogCQkJCQkJCQkgJkRpcnR5U25hcHNob3QsIE5VTEwsIGluZG5r ZXlhdHRzLCAwLAogCQkJCQkJCQkgU09fTk9ORSk7CkBAIC04MzgsMTQgKzg1MywyOCBAQCBy ZXRyeToKIAkJY2hhcgkgICAqZXJyb3JfZXhpc3Rpbmc7CiAKIAkJLyoKLQkJICogSWdub3Jl IHRoZSBlbnRyeSBmb3IgdGhlIHR1cGxlIHdlJ3JlIHRyeWluZyB0byBjaGVjay4KKwkJICog SWdub3JlIHRoZSBlbnRyeSBmb3IgdGhlIHR1cGxlIHdlJ3JlIHRyeWluZyB0byBjaGVjay4g IFdpdGggSE9ULQorCQkgKiBpbmRleGVkIChob3QtaW5kZXhlZCkgdXBkYXRlcywgc2V2ZXJh bCBpbmRleCBlbnRyaWVzIG1heSBjaGFpbi1sZWFkCisJCSAqIHRvIHRoZSBzYW1lIGhlYXAg dHVwbGUgKGEgc3RhbGUgZW50cnkgZm9yIHRoZSBvbGQga2V5IGFuZCBhIGZyZXNoCisJCSAq IGVudHJ5IGZvciB0aGUgbmV3IGtleSkuICBUaGV5IGFsbCByZXNvbHZlIHRvIHRoZSBzYW1l IFRJRCBoZXJlIGFuZAorCQkgKiBtdXN0IGFsbCBiZSB0cmVhdGVkIGFzICJzZWxmIiwgbm90 IGFzIGEgZHVwbGljYXRlIGVycm9yLiAgV2UKKwkJICogdG9sZXJhdGUgdGhlIGR1cGxpY2F0 ZSBzZWxmIGFycml2YWwgd2hlbmV2ZXIgKmVpdGhlciogdGhpcworCQkgKiBpdGVyYXRpb24g b3IgYW4gZWFybGllciBvbmUgc2F3IHhzX2hvdF9pbmRleGVkX3N0YWxlIC0tIHRoZQorCQkg KiBjYW5vbmljYWwgZGlyZWN0IGVudHJ5IGFuZCB0aGUgc3RhbGUgY2hhaW4td2FsayBlbnRy aWVzIGNhbiBhcnJpdmUKKwkJICogaW4gZWl0aGVyIG9yZGVyLgogCQkgKi8KIAkJaWYgKEl0 ZW1Qb2ludGVySXNWYWxpZCh0dXBsZWlkKSAmJgogCQkJSXRlbVBvaW50ZXJFcXVhbHModHVw bGVpZCwgJmV4aXN0aW5nX3Nsb3QtPnR0c190aWQpKQogCQl7Ci0JCQlpZiAoZm91bmRfc2Vs ZikJCS8qIHNob3VsZCBub3QgaGFwcGVuICovCisJCQlpZiAoaW5kZXhfc2Nhbi0+eHNfaG90 X2luZGV4ZWRfc3RhbGUpCisJCQkJZm91bmRfc2VsZl9zaXVfaGl0ID0gdHJ1ZTsKKwkJCWlm IChmb3VuZF9zZWxmKQorCQkJeworCQkJCWlmIChmb3VuZF9zZWxmX3NpdV9oaXQpCisJCQkJ CWNvbnRpbnVlOwogCQkJCWVsb2coRVJST1IsICJmb3VuZCBzZWxmIHR1cGxlIG11bHRpcGxl IHRpbWVzIGluIGluZGV4IFwiJXNcIiIsCiAJCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShpbmRleCkpOworCQkJfQogCQkJZm91bmRfc2VsZiA9IHRydWU7CiAJCQljb250aW51ZTsK IAkJfQpAQCAtODY5LDYgKzg5OCwzMSBAQCByZXRyeToKIAkJCQkJCQkJICogY29uZmxpY3Qg Ki8KIAkJfQogCisJCS8qCisJCSAqIEhPVC1pbmRleGVkIGNoYWlucyBjYW4gcmVhY2ggdGhp cyBsb29wIHZpYSBhIHN0YWxlIGJ0cmVlIGxlYWYgZW50cnkKKwkJICogd2hvc2Uga2V5IGlz IGRpZmZlcmVudCBmcm9tIHRoZSBoZWFwIHR1cGxlJ3MgY3VycmVudCBpbmRleC1mb3JtLgor CQkgKiBleGlzdGluZ192YWx1ZXMgaG9sZHMgdGhlIGN1cnJlbnQgaGVhcCB0dXBsZSdzIGlu ZGV4LWZvcm0KKwkJICogKEZvcm1JbmRleERhdHVtIGFib3ZlKS4gIENvbXBhcmUgaXQgYWdh aW5zdCBvdXIgbmV3IHR1cGxlJ3MgdmFsdWVzCisJCSAqIHVzaW5nIHRoZSBzYW1lIGNvbnN0 cmFpbnQgb3BlcmF0b3JzOyBpZiB0aGV5IGRvbid0IGFncmVlLCB0aGUKKwkJICogY2hhaW4t d2Fsa2VkIHR1cGxlIGlzIG5vdCBhY3R1YWxseSBpbiBjb25mbGljdCB3aXRoIG91ciBpbnNl cnRpb24KKwkJICogLS0gaXQganVzdCBzaGFyZWQgYSBUSUQgd2l0aCBhIHN0YWxlIGxlYWYg ZW50cnkgd2UgaGFwcGVuZWQgdG8gc2NhbgorCQkgKiB0aHJvdWdoLiAgU2tpcCBpdC4KKwkJ ICoKKwkJICogVGhpcyBtaXJyb3JzIF9idF9jaGVja191bmlxdWUncyBIT1QtaW5kZXhlZCBy ZWNoZWNrIHBhdGg7IGZvcgorCQkgKiBleGNsdXNpb24gY29uc3RyYWludHMgdGhlIHVzZXIt c3VwcGxpZWQgb3BlcmF0b3IgaW4gY29uc3RyX3Byb2NzCisJCSAqIHJlcGxhY2VzIHRoZSBi dHJlZSBlcXVhbGl0eSBjb21wYXJhdG9yLCBhbmQKKwkJICogaW5kZXhfcmVjaGVja19jb25z dHJhaW50IGRvZXMgdGhlIHJpZ2h0IHRoaW5nIGZvciBlaXRoZXIuCisJCSAqLworCQlpZiAo aW5kZXhfc2Nhbi0+eHNfaG90X2luZGV4ZWRfc3RhbGUpCisJCXsKKwkJCWlmICghaW5kZXhf cmVjaGVja19jb25zdHJhaW50KGluZGV4LAorCQkJCQkJCQkJCSAgY29uc3RyX3Byb2NzLAor CQkJCQkJCQkJCSAgZXhpc3RpbmdfdmFsdWVzLAorCQkJCQkJCQkJCSAgZXhpc3RpbmdfaXNu dWxsLAorCQkJCQkJCQkJCSAgdmFsdWVzKSkKKwkJCQljb250aW51ZTsJCS8qIHN0YWxlIGNo YWluIGhpdCwgbm90IGEgcmVhbCBjb25mbGljdCAqLworCQl9CisKIAkJLyoKIAkJICogQXQg dGhpcyBwb2ludCB3ZSBoYXZlIGVpdGhlciBhIGNvbmZsaWN0IG9yIGEgcG90ZW50aWFsIGNv bmZsaWN0LgogCQkgKgpAQCAtMTAwOSwxNDkgKzEwNjMsOTQgQEAgaW5kZXhfcmVjaGVja19j b25zdHJhaW50KFJlbGF0aW9uIGluZGV4LCBjb25zdCBPaWQgKmNvbnN0cl9wcm9jcywKIH0K IAogLyoKLSAqIENoZWNrIGlmIEV4ZWNJbnNlcnRJbmRleFR1cGxlcygpIHNob3VsZCBwYXNz IGluZGV4VW5jaGFuZ2VkIGhpbnQuCisgKiBFeGVjU2V0SW5kZXhVbmNoYW5nZWQKKyAqCisg KiBQb3B1bGF0ZSB0d28gcGVyLWluZGV4IGZsYWdzIGFoZWFkIG9mIEV4ZWNJbnNlcnRJbmRl eFR1cGxlczoKKyAqCisgKiAgIC0gaWlfSW5kZXhOZWVkc1VwZGF0ZSAod2lkZSkgZHJpdmVz IHRoZSBza2lwIGRlY2lzaW9uLiAgSXQgaXMgdHJ1ZSB3aGVuCisgKiAgICAgdGhlIHRhYmxl IEFNIHN0b3JlZCBhbiBpbmRlcGVuZGVudCBuZXcgdmVyc2lvbiAod2hvbGUtcm93IGF0dHJp YnV0ZQorICogICAgIHByZXNlbnQgaW4gbW9kaWZpZWRfaWR4X2F0dHJzKSBvciB3aGVuIGFu eSBhdHRyaWJ1dGUgdGhlIGluZGV4CisgKiAgICAgcmVmZXJlbmNlcyAtLSBrZXksIElOQ0xV REUsIGV4cHJlc3Npb24sIG9yIHBhcnRpYWwtcHJlZGljYXRlIGNvbHVtbiwKKyAqICAgICBw ZXIgUmVsYXRpb25HZXRJbmRleGVkQXR0cnMoKSAtLSBjaGFuZ2VkLiAgQSBub24tc3VtbWFy aXppbmcgaW5kZXggZm9yCisgKiAgICAgd2hpY2ggdGhpcyBpcyBmYWxzZSBpcyBza2lwcGVk OiBpdHMgZXhpc3RpbmcgZW50cnkga2VlcHMgcmVzb2x2aW5nIHRoZQorICogICAgIEhPVCBj aGFpbi4KICAqCi0gKiBXaGVuIHRoZSBleGVjdXRvciBwZXJmb3JtcyBhbiBVUERBVEUgdGhh dCByZXF1aXJlcyBhIG5ldyByb3VuZCBvZiBpbmRleAotICogdHVwbGVzLCBkZXRlcm1pbmUg aWYgd2Ugc2hvdWxkIHBhc3MgJ2luZGV4VW5jaGFuZ2VkJyA9IHRydWUgaGludCBmb3Igb25l Ci0gKiBzaW5nbGUgaW5kZXguCisgKiAgIC0gaWlfSW5kZXhVbmNoYW5nZWQgKG5hcnJvdykg aXMgdGhlIGluZGV4VW5jaGFuZ2VkIGhpbnQgdG8gYW1pbnNlcnQsCisgKiAgICAgY29uc3Vt ZWQgYnkgbmJ0cmVlIGRlZHVwbGljYXRpb24gLyBib3R0b20tdXAgZGVsZXRpb24uICBQZXIg dGhlCisgKiAgICAgaGlzdG9yaWNhbCBydWxlIGl0IGNvdW50cyBvbmx5IGtleSBjb2x1bW5z OyBJTkNMVURFIGFuZCBwcmVkaWNhdGUKKyAqICAgICBjb2x1bW5zIGFyZSBkZWxpYmVyYXRl bHkgaWdub3JlZCwgYW5kIGFuIGV4cHJlc3Npb24ga2V5IGlzIHRyZWF0ZWQKKyAqICAgICBj b25zZXJ2YXRpdmVseSBhcyBwb3NzaWJseSBjaGFuZ2VkLgogICovCi1zdGF0aWMgYm9vbAot aW5kZXhfdW5jaGFuZ2VkX2J5X3VwZGF0ZShSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZv LCBFU3RhdGUgKmVzdGF0ZSwKLQkJCQkJCSAgSW5kZXhJbmZvICppbmRleEluZm8sIFJlbGF0 aW9uIGluZGV4UmVsYXRpb24pCit2b2lkCitFeGVjU2V0SW5kZXhVbmNoYW5nZWQoUmVzdWx0 UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKKwkJCQkJICBjb25zdCBCaXRtYXBzZXQgKm1vZGlm aWVkX2lkeF9hdHRycykKIHsKLQlCaXRtYXBzZXQgICp1cGRhdGVkQ29sczsKLQlCaXRtYXBz ZXQgICpleHRyYVVwZGF0ZWRDb2xzOwotCUJpdG1hcHNldCAgKmFsbFVwZGF0ZWRDb2xzOwot CWJvb2wJCWhhc2V4cHJlc3Npb24gPSBmYWxzZTsKLQlMaXN0CSAgICppZHhFeHByczsKLQot CS8qCi0JICogQ2hlY2sgY2FjaGUgZmlyc3QKLQkgKi8KLQlpZiAoaW5kZXhJbmZvLT5paV9D aGVja2VkVW5jaGFuZ2VkKQotCQlyZXR1cm4gaW5kZXhJbmZvLT5paV9JbmRleFVuY2hhbmdl ZDsKLQlpbmRleEluZm8tPmlpX0NoZWNrZWRVbmNoYW5nZWQgPSB0cnVlOwotCi0JLyoKLQkg KiBDaGVjayBmb3IgaW5kZXhlZCBhdHRyaWJ1dGUgb3ZlcmxhcCB3aXRoIHVwZGF0ZWQgY29s dW1ucy4KLQkgKgotCSAqIE9ubHkgZG8gdGhpcyBmb3Iga2V5IGNvbHVtbnMuICBBIGNoYW5n ZSB0byBhIG5vbi1rZXkgY29sdW1uIHdpdGhpbiBhbgotCSAqIElOQ0xVREUgaW5kZXggc2hv dWxkIG5vdCBiZSBjb3VudGVkIGhlcmUuICBOb24ta2V5IGNvbHVtbiB2YWx1ZXMgYXJlCi0J ICogb3BhcXVlIHBheWxvYWQgc3RhdGUgdG8gdGhlIGluZGV4IEFNLCBhIGxpdHRsZSBsaWtl IGFuIGV4dHJhIHRhYmxlIFRJRC4KLQkgKgotCSAqIE5vdGUgdGhhdCByb3ctbGV2ZWwgQkVG T1JFIHRyaWdnZXJzIHdvbid0IGFmZmVjdCBvdXIgYmVoYXZpb3IsIHNpbmNlCi0JICogdGhl eSBkb24ndCBhZmZlY3QgdGhlIHVwZGF0ZWRDb2xzIGJpdG1hcHMgZ2VuZXJhbGx5LiAgSXQg ZG9lc24ndCBzZWVtCi0JICogd29ydGggdGhlIHRyb3VibGUgb2YgY2hlY2tpbmcgd2hpY2gg YXR0cmlidXRlcyB3ZXJlIGNoYW5nZWQgZGlyZWN0bHkuCi0JICovCi0JdXBkYXRlZENvbHMg PSBFeGVjR2V0VXBkYXRlZENvbHMocmVzdWx0UmVsSW5mbywgZXN0YXRlKTsKLQlleHRyYVVw ZGF0ZWRDb2xzID0gRXhlY0dldEV4dHJhVXBkYXRlZENvbHMocmVzdWx0UmVsSW5mbywgZXN0 YXRlKTsKLQlmb3IgKGludCBhdHRyID0gMDsgYXR0ciA8IGluZGV4SW5mby0+aWlfTnVtSW5k ZXhLZXlBdHRyczsgYXR0cisrKQotCXsKLQkJaW50CQkJa2V5Y29sID0gaW5kZXhJbmZvLT5p aV9JbmRleEF0dHJOdW1iZXJzW2F0dHJdOwotCi0JCWlmIChrZXljb2wgPD0gMCkKLQkJewot CQkJLyoKLQkJCSAqIFNraXAgZXhwcmVzc2lvbnMgZm9yIG5vdywgYnV0IHJlbWVtYmVyIHRv IGRlYWwgd2l0aCB0aGVtIGxhdGVyCi0JCQkgKiBvbgotCQkJICovCi0JCQloYXNleHByZXNz aW9uID0gdHJ1ZTsKLQkJCWNvbnRpbnVlOwotCQl9CisJaW50CQkJbnVtSW5kaWNlcyA9IHJl c3VsdFJlbEluZm8tPnJpX051bUluZGljZXM7CisJSW5kZXhJbmZvICoqaW5kZXhJbmZvQXJy YXkgPSByZXN1bHRSZWxJbmZvLT5yaV9JbmRleFJlbGF0aW9uSW5mbzsKKwlSZWxhdGlvblB0 ciBpbmRleERlc2NzID0gcmVzdWx0UmVsSW5mby0+cmlfSW5kZXhSZWxhdGlvbkRlc2NzOwor CWJvb2wJCWFsbF9pbmRleGVzOwogCi0JCWlmIChibXNfaXNfbWVtYmVyKGtleWNvbCAtIEZp cnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCi0JCQkJCQkgIHVwZGF0ZWRDb2xz KSB8fAotCQkJYm1zX2lzX21lbWJlcihrZXljb2wgLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0 cmlidXRlTnVtYmVyLAotCQkJCQkJICBleHRyYVVwZGF0ZWRDb2xzKSkKLQkJewotCQkJLyog Q2hhbmdlZCBrZXkgY29sdW1uIC0tIGRvbid0IGhpbnQgZm9yIHRoaXMgaW5kZXggKi8KLQkJ CWluZGV4SW5mby0+aWlfSW5kZXhVbmNoYW5nZWQgPSBmYWxzZTsKLQkJCXJldHVybiBmYWxz ZTsKLQkJfQotCX0KLQotCS8qCi0JICogV2hlbiB3ZSBnZXQgdGhpcyBmYXIgYW5kIGluZGV4 IGhhcyBubyBleHByZXNzaW9ucywgcmV0dXJuIHRydWUgc28gdGhhdAotCSAqIGluZGV4X2lu c2VydCgpIGNhbGwgd2lsbCBnbyBvbiB0byBwYXNzICdpbmRleFVuY2hhbmdlZCcgPSB0cnVl IGhpbnQuCi0JICoKLQkgKiBUaGUgX2Fic2VuY2VfIG9mIGFuIGluZGV4ZWQga2V5IGF0dHJp YnV0ZSB0aGF0IG92ZXJsYXBzIHdpdGggdXBkYXRlZAotCSAqIGF0dHJpYnV0ZXMgKGluIGFk ZGl0aW9uIHRvIHRoZSB0b3RhbCBhYnNlbmNlIG9mIGluZGV4ZWQgZXhwcmVzc2lvbnMpCi0J ICogc2hvd3MgdGhhdCB0aGUgaW5kZXggYXMgYSB3aG9sZSBpcyBsb2dpY2FsbHkgdW5jaGFu Z2VkIGJ5IFVQREFURS4KLQkgKi8KLQlpZiAoIWhhc2V4cHJlc3Npb24pCi0JewotCQlpbmRl eEluZm8tPmlpX0luZGV4VW5jaGFuZ2VkID0gdHJ1ZTsKLQkJcmV0dXJuIHRydWU7Ci0JfQor CWlmIChudW1JbmRpY2VzID09IDApCisJCXJldHVybjsKIAogCS8qCi0JICogTmVlZCB0byBw YXNzIG9ubHkgb25lIGJtcyB0byBleHByZXNzaW9uX3RyZWVfd2Fsa2VyIGhlbHBlciBmdW5j dGlvbi4KLQkgKiBBdm9pZCBhbGxvY2F0aW5nIG1lbW9yeSBpbiBjb21tb24gY2FzZSB3aGVy ZSB0aGVyZSBhcmUgbm8gZXh0cmEgY29scy4KKwkgKiBBIHdob2xlLXJvdyBlbnRyeSBpbiBt b2RpZmllZF9pZHhfYXR0cnMgbWVhbnMgdGhlIHRhYmxlIEFNIHN0b3JlZCBhbgorCSAqIGlu ZGVwZW5kZW50IG5ldyB2ZXJzaW9uIChlLmcuIGF0IGEgbmV3IFRJRCksIHNvIGV2ZXJ5IGlu ZGV4IG5lZWRzIGEKKwkgKiBmcmVzaCBlbnRyeSByZWdhcmRsZXNzIG9mIHdoaWNoIGF0dHJp YnV0ZXMgY2hhbmdlZC4KIAkgKi8KLQlpZiAoIWV4dHJhVXBkYXRlZENvbHMpCi0JCWFsbFVw ZGF0ZWRDb2xzID0gdXBkYXRlZENvbHM7Ci0JZWxzZQotCQlhbGxVcGRhdGVkQ29scyA9IGJt c191bmlvbih1cGRhdGVkQ29scywgZXh0cmFVcGRhdGVkQ29scyk7CisJYWxsX2luZGV4ZXMg PSBibXNfaXNfbWVtYmVyKFRhYmxlVHVwbGVVcGRhdGVBbGxJbmRleGVzLCBtb2RpZmllZF9p ZHhfYXR0cnMpOwogCi0JLyoKLQkgKiBXZSBoYXZlIHRvIHdvcmsgc2xpZ2h0bHkgaGFyZGVy IGluIHRoZSBldmVudCBvZiBpbmRleGVkIGV4cHJlc3Npb25zLAotCSAqIGJ1dCB0aGUgcHJp bmNpcGxlIGlzIHRoZSBzYW1lIGFzIGJlZm9yZTogdHJ5IHRvIGZpbmQgY29sdW1ucyAoVmFy cywKLQkgKiBhY3R1YWxseSkgdGhhdCBvdmVybGFwIHdpdGgga25vd24tdXBkYXRlZCBjb2x1 bW5zLgotCSAqCi0JICogSWYgd2UgZmluZCBhbnkgbWF0Y2hpbmcgVmFycywgZG9uJ3QgcGFz cyBoaW50IGZvciBpbmRleC4gIE90aGVyd2lzZQotCSAqIHBhc3MgaGludC4KLQkgKi8KLQlp ZHhFeHBycyA9IFJlbGF0aW9uR2V0SW5kZXhFeHByZXNzaW9ucyhpbmRleFJlbGF0aW9uKTsK LQloYXNleHByZXNzaW9uID0gaW5kZXhfZXhwcmVzc2lvbl9jaGFuZ2VkX3dhbGtlcigoTm9k ZSAqKSBpZHhFeHBycywKLQkJCQkJCQkJCQkJCQlhbGxVcGRhdGVkQ29scyk7Ci0JbGlzdF9m cmVlKGlkeEV4cHJzKTsKLQlpZiAoZXh0cmFVcGRhdGVkQ29scykKLQkJYm1zX2ZyZWUoYWxs VXBkYXRlZENvbHMpOwotCi0JaWYgKGhhc2V4cHJlc3Npb24pCisJZm9yIChpbnQgaSA9IDA7 IGkgPCBudW1JbmRpY2VzOyBpKyspCiAJewotCQlpbmRleEluZm8tPmlpX0luZGV4VW5jaGFu Z2VkID0gZmFsc2U7Ci0JCXJldHVybiBmYWxzZTsKLQl9CisJCUluZGV4SW5mbyAgKmluZGV4 SW5mbyA9IGluZGV4SW5mb0FycmF5W2ldOworCQlSZWxhdGlvbglpbmRleERlc2MgPSBpbmRl eERlc2NzW2ldOworCQlCaXRtYXBzZXQgICppbmRleGVkYXR0cnM7CisJCWJvb2wJCWtleWNo YW5nZWQ7CiAKLQkvKgotCSAqIERlbGliZXJhdGVseSBkb24ndCBjb25zaWRlciBpbmRleCBw cmVkaWNhdGVzLiAgV2Ugc2hvdWxkIGV2ZW4gZ2l2ZSB0aGUKLQkgKiBoaW50IHdoZW4gcmVz dWx0IHJlbCdzICJ1cGRhdGVkIHR1cGxlIiBoYXMgbm8gY29ycmVzcG9uZGluZyBpbmRleAot CSAqIHR1cGxlLCB3aGljaCBpcyBwb3NzaWJsZSB3aXRoIGEgcGFydGlhbCBpbmRleCAocHJv dmlkZWQgdGhlIHVzdWFsCi0JICogY29uZGl0aW9ucyBhcmUgbWV0KS4KLQkgKi8KLQlpbmRl eEluZm8tPmlpX0luZGV4VW5jaGFuZ2VkID0gdHJ1ZTsKLQlyZXR1cm4gdHJ1ZTsKLX0KLQot LyoKLSAqIEluZGV4ZWQgZXhwcmVzc2lvbiBoZWxwZXIgZm9yIGluZGV4X3VuY2hhbmdlZF9i eV91cGRhdGUoKS4KLSAqCi0gKiBSZXR1cm5zIHRydWUgd2hlbiBWYXIgdGhhdCBhcHBlYXJz IHdpdGhpbiBhbGxVcGRhdGVkQ29scyBsb2NhdGVkLgotICovCi1zdGF0aWMgYm9vbAotaW5k ZXhfZXhwcmVzc2lvbl9jaGFuZ2VkX3dhbGtlcihOb2RlICpub2RlLCBCaXRtYXBzZXQgKmFs bFVwZGF0ZWRDb2xzKQotewotCWlmIChub2RlID09IE5VTEwpCi0JCXJldHVybiBmYWxzZTsK KwkJaWYgKGluZGV4RGVzYyA9PSBOVUxMKQorCQkJY29udGludWU7CiAKLQlpZiAoSXNBKG5v ZGUsIFZhcikpCi0JewotCQlWYXIJCSAgICp2YXIgPSAoVmFyICopIG5vZGU7CisJCS8qCisJ CSAqIFNraXAgZGVjaXNpb24gKHdpZGUpLiAgVGhlIGluZGV4IG5lZWRzIGEgbmV3IGVudHJ5 IGlmIHRoZSBBTSBzdG9yZWQKKwkJICogYW4gaW5kZXBlbmRlbnQgdmVyc2lvbiwgb3IgaWYg YW55IGF0dHJpYnV0ZSBpdCByZWZlcmVuY2VzIC0tIGtleSwKKwkJICogSU5DTFVERSwgZXhw cmVzc2lvbiwgb3IgcGFydGlhbC1wcmVkaWNhdGUgY29sdW1uIC0tIGNoYW5nZWQuCisJCSAq IFJlbGF0aW9uR2V0SW5kZXhlZEF0dHJzKCkgY292ZXJzIGFsbCBvZiB0aG9zZS4gIChBbiBV UERBVEUgdGhhdAorCQkgKiB0b3VjaGVzIGFuIGV4cHJlc3Npb24taW5kZXggYXR0cmlidXRl IG5ldmVyIHJlYWNoZXMgdGhlIEhPVC1pbmRleGVkCisJCSAqIHBhdGg6IEhlYXBVcGRhdGVI b3RBbGxvd2FibGUgZGlzcXVhbGlmaWVzIGl0LCBwZW5kaW5nCisJCSAqIGV4cHJlc3Npb24t YXdhcmUgbWFpbnRlbmFuY2UuKQorCQkgKi8KKwkJaW5kZXhlZGF0dHJzID0gUmVsYXRpb25H ZXRJbmRleGVkQXR0cnMoaW5kZXhEZXNjKTsKKwkJaW5kZXhJbmZvLT5paV9JbmRleE5lZWRz VXBkYXRlID0KKwkJCWFsbF9pbmRleGVzIHx8IGJtc19vdmVybGFwKGluZGV4ZWRhdHRycywg bW9kaWZpZWRfaWR4X2F0dHJzKTsKKwkJYm1zX2ZyZWUoaW5kZXhlZGF0dHJzKTsKIAotCQlp ZiAoYm1zX2lzX21lbWJlcih2YXItPnZhcmF0dG5vIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0 dHJpYnV0ZU51bWJlciwKLQkJCQkJCSAgYWxsVXBkYXRlZENvbHMpKQorCQkvKgorCQkgKiBh bWluc2VydCBoaW50IChuYXJyb3cpLiAgaWlfSW5kZXhVbmNoYW5nZWQgZmVlZHMgbmJ0cmVl CisJCSAqIGRlZHVwbGljYXRpb24gLyBib3R0b20tdXAgZGVsZXRpb24gaGV1cmlzdGljcyBh bmQsIHBlciB0aGUKKwkJICogaGlzdG9yaWNhbCBydWxlLCBjb3VudHMgb25seSBrZXkgY29s dW1uczogYSBjaGFuZ2UgdG8gYW4gSU5DTFVERQorCQkgKiBjb2x1bW4gb3IgdG8gYSBwYXJ0 aWFsLWluZGV4IHByZWRpY2F0ZSBjb2x1bW4gZG9lcyBub3QgZGlzcXVhbGlmeQorCQkgKiB0 aGUgaGludC4gIEFuIGV4cHJlc3Npb24ga2V5IGNvbHVtbiBpcyB0cmVhdGVkIGNvbnNlcnZh dGl2ZWx5IGFzCisJCSAqIHBvc3NpYmx5IGNoYW5nZWQuCisJCSAqLworCQlrZXljaGFuZ2Vk ID0gZmFsc2U7CisJCWZvciAoaW50IGsgPSAwOyBrIDwgaW5kZXhJbmZvLT5paV9OdW1JbmRl eEtleUF0dHJzOyBrKyspCiAJCXsKLQkJCS8qIFZhciB3YXMgdXBkYXRlZCAtLSBpbmRpY2F0 ZXMgdGhhdCB3ZSBzaG91bGQgbm90IGhpbnQgKi8KLQkJCXJldHVybiB0cnVlOwotCQl9CisJ CQlBdHRyTnVtYmVyCWtleWNvbCA9IGluZGV4SW5mby0+aWlfSW5kZXhBdHRyTnVtYmVyc1tr XTsKIAotCQkvKiBTdGlsbCBoYXZlbid0IGZvdW5kIGEgcmVhc29uIHRvIG5vdCBwYXNzIHRo ZSBoaW50ICovCi0JCXJldHVybiBmYWxzZTsKKwkJCWlmIChrZXljb2wgPT0gMCkJLyogZXhw cmVzc2lvbiBrZXk6IGFzc3VtZSBpdCBtYXkgaGF2ZSBjaGFuZ2VkICovCisJCQl7CisJCQkJ a2V5Y2hhbmdlZCA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisJCQlpZiAoYm1zX2lzX21l bWJlcihrZXljb2wgLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLAorCQkJ CQkJCSAgbW9kaWZpZWRfaWR4X2F0dHJzKSkKKwkJCXsKKwkJCQlrZXljaGFuZ2VkID0gdHJ1 ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQlpbmRleEluZm8tPmlpX0luZGV4VW5jaGFu Z2VkID0gIWtleWNoYW5nZWQ7CiAJfQotCi0JcmV0dXJuIGV4cHJlc3Npb25fdHJlZV93YWxr ZXIobm9kZSwgaW5kZXhfZXhwcmVzc2lvbl9jaGFuZ2VkX3dhbGtlciwKLQkJCQkJCQkJICBh bGxVcGRhdGVkQ29scyk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjUmVwbGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBs aWNhdGlvbi5jCmluZGV4IDYyNjJmNzFiZDkzLi43YjViYmRiZmQ3YSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKQEAgLTIxNyw2ICsyMTcsMTggQEAgcmV0 cnk6CiAJLyogVHJ5IHRvIGZpbmQgdGhlIHR1cGxlICovCiAJd2hpbGUgKGluZGV4X2dldG5l eHRfc2xvdChzY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgb3V0c2xvdCkpCiAJeworCQkv KgorCQkgKiBBIEhPVC1pbmRleGVkIHVwZGF0ZSBjYW4gbGVhdmUgYSBzdGFsZSBpbmRleCBs ZWFmOiBhbiBlbnRyeSB3aG9zZQorCQkgKiBrZXkgaXMgYSBwcmUtdXBkYXRlIHZhbHVlIGJ1 dCB3aG9zZSBUSUQgY2hhaW4tcmVzb2x2ZXMgdG8gYSBsaXZlCisJCSAqIHR1cGxlIG5vdyBj YXJyeWluZyBhIGRpZmZlcmVudCBrZXkuICBTdWNoIGEgdHVwbGUgaXMgbm90IHRoZQorCQkg KiByZXBsaWNhLWlkZW50aXR5IG1hdGNoIHdlIGFyZSBsb29raW5nIGZvciAoYW5kIHRoZSBQ Sy9SSSBmYXN0IHBhdGgKKwkJICogYmVsb3cgc2tpcHMgdGhlIGVxdWFsaXR5IHJlY2hlY2sg dGhhdCB3b3VsZCBvdGhlcndpc2UgY2F0Y2ggaXQpLCBzbworCQkgKiBkcm9wIGl0IC0tIGV4 YWN0bHkgYXMgSW5kZXhTY2FuL0luZGV4T25seVNjYW4gZG8uICBUaGUgZnJlc2ggbGVhZgor CQkgKiBmb3IgdGhlIGN1cnJlbnQga2V5LCBpZiBhbnksIGlzIHJldHVybmVkIGJ5IGEgbGF0 ZXIgaXRlcmF0aW9uLgorCQkgKi8KKwkJaWYgKHNjYW4tPnhzX2hvdF9pbmRleGVkX3N0YWxl KQorCQkJY29udGludWU7CisKIAkJLyoKIAkJICogQXZvaWQgZXhwZW5zaXZlIGVxdWFsaXR5 IGNoZWNrIGlmIHRoZSBpbmRleCBpcyBwcmltYXJ5IGtleSBvcgogCQkgKiByZXBsaWNhIGlk ZW50aXR5IGluZGV4LgpAQCAtNjc4LDYgKzY5MCwxMCBAQCBSZWxhdGlvbkZpbmREZWxldGVk VHVwbGVJbmZvQnlJbmRleChSZWxhdGlvbiByZWwsIE9pZCBpZHhvaWQsCiAJLyogVHJ5IHRv IGZpbmQgdGhlIHR1cGxlICovCiAJd2hpbGUgKGluZGV4X2dldG5leHRfc2xvdChzY2FuLCBG b3J3YXJkU2NhbkRpcmVjdGlvbiwgc2NhbnNsb3QpKQogCXsKKwkJLyogU2tpcCBzdGFsZSBI T1QtaW5kZXhlZCBsZWF2ZXMgKHNlZSBSZWxhdGlvbkZpbmRSZXBsVHVwbGVCeUluZGV4KS4g Ki8KKwkJaWYgKHNjYW4tPnhzX2hvdF9pbmRleGVkX3N0YWxlKQorCQkJY29udGludWU7CisK IAkJLyoKIAkJICogQXZvaWQgZXhwZW5zaXZlIGVxdWFsaXR5IGNoZWNrIGlmIHRoZSBpbmRl eCBpcyBwcmltYXJ5IGtleSBvcgogCQkgKiByZXBsaWNhIGlkZW50aXR5IGluZGV4LgpAQCAt OTExLDcgKzkyNyw3IEBAIEV4ZWNTaW1wbGVSZWxhdGlvblVwZGF0ZShSZXN1bHRSZWxJbmZv ICpyZXN1bHRSZWxJbmZvLAogCWJvb2wJCXNraXBfdHVwbGUgPSBmYWxzZTsKIAlSZWxhdGlv bglyZWwgPSByZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2M7CiAJSXRlbVBvaW50ZXIg dGlkID0gJihzZWFyY2hzbG90LT50dHNfdGlkKTsKLQlCaXRtYXBzZXQgICptb2RpZmllZF9p ZHhfYXR0cnM7CisJQml0bWFwc2V0ICAqbW9kaWZpZWRfaWR4X2F0dHJzID0gTlVMTDsKIAog CS8qCiAJICogV2Ugc3VwcG9ydCBvbmx5IG5vbi1zeXN0ZW0gdGFibGVzLCB3aXRoCkBAIC05 MzQsNyArOTUwLDYgQEAgRXhlY1NpbXBsZVJlbGF0aW9uVXBkYXRlKFJlc3VsdFJlbEluZm8g KnJlc3VsdFJlbEluZm8sCiAJaWYgKCFza2lwX3R1cGxlKQogCXsKIAkJTGlzdAkgICAqcmVj aGVja0luZGV4ZXMgPSBOSUw7Ci0JCVRVX1VwZGF0ZUluZGV4ZXMgdXBkYXRlX2luZGV4ZXM7 CiAJCUxpc3QJICAgKmNvbmZsaWN0aW5kZXhlczsKIAkJYm9vbAkJY29uZmxpY3QgPSBmYWxz ZTsKIApAQCAtOTUzLDI3ICs5NjgsMzQgQEAgRXhlY1NpbXBsZVJlbGF0aW9uVXBkYXRlKFJl c3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCW1vZGlmaWVkX2lkeF9hdHRycyA9IEV4 ZWNVcGRhdGVNb2RpZmllZElkeEF0dHJzKHJlc3VsdFJlbEluZm8sCiAJCQkJCQkJCQkJCQkJ CXNlYXJjaHNsb3QsIHNsb3QpOwogCisJCUFzc2VydCghYm1zX2lzX21lbWJlcihUYWJsZVR1 cGxlVXBkYXRlQWxsSW5kZXhlcywgbW9kaWZpZWRfaWR4X2F0dHJzKSk7CiAJCXNpbXBsZV90 YWJsZV90dXBsZV91cGRhdGUocmVsLCB0aWQsIHNsb3QsIGVzdGF0ZS0+ZXNfc25hcHNob3Qs Ci0JCQkJCQkJCSAgbW9kaWZpZWRfaWR4X2F0dHJzLCAmdXBkYXRlX2luZGV4ZXMpOwotCQli bXNfZnJlZShtb2RpZmllZF9pZHhfYXR0cnMpOwotCisJCQkJCQkJCSAgJm1vZGlmaWVkX2lk eF9hdHRycyk7CiAKIAkJY29uZmxpY3RpbmRleGVzID0gcmVzdWx0UmVsSW5mby0+cmlfb25D b25mbGljdEFyYml0ZXJJbmRleGVzOwogCi0JCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9OdW1J bmRpY2VzID4gMCAmJiAodXBkYXRlX2luZGV4ZXMgIT0gVFVfTm9uZSkpCisJCWlmIChyZXN1 bHRSZWxJbmZvLT5yaV9OdW1JbmRpY2VzID4gMCAmJgorCQkJIWJtc19pc19lbXB0eShtb2Rp ZmllZF9pZHhfYXR0cnMpKQogCQl7CisJCQlib29sCQlhbGxfaW5kZXhlcyA9CisJCQkJYm1z X2lzX21lbWJlcihUYWJsZVR1cGxlVXBkYXRlQWxsSW5kZXhlcywgbW9kaWZpZWRfaWR4X2F0 dHJzKTsKIAkJCXVpbnQzMgkJZmxhZ3MgPSBFSUlUX0lTX1VQREFURTsKIAogCQkJaWYgKGNv bmZsaWN0aW5kZXhlcyAhPSBOSUwpCiAJCQkJZmxhZ3MgfD0gRUlJVF9OT19EVVBFX0VSUk9S OwotCQkJaWYgKHVwZGF0ZV9pbmRleGVzID09IFRVX1N1bW1hcml6aW5nKQotCQkJCWZsYWdz IHw9IEVJSVRfT05MWV9TVU1NQVJJWklORzsKKwkJCWlmICghYWxsX2luZGV4ZXMpCisJCQkJ ZmxhZ3MgfD0gRUlJVF9JU19IT1RfSU5ERVhFRDsKKworCQkJRXhlY1NldEluZGV4VW5jaGFu Z2VkKHJlc3VsdFJlbEluZm8sIG1vZGlmaWVkX2lkeF9hdHRycyk7CisKIAkJCXJlY2hlY2tJ bmRleGVzID0gRXhlY0luc2VydEluZGV4VHVwbGVzKHJlc3VsdFJlbEluZm8sCiAJCQkJCQkJ CQkJCQkgICBlc3RhdGUsIGZsYWdzLAogCQkJCQkJCQkJCQkJICAgc2xvdCwgY29uZmxpY3Rp bmRleGVzLAogCQkJCQkJCQkJCQkJICAgJmNvbmZsaWN0KTsKIAkJfQogCisJCWJtc19mcmVl KG1vZGlmaWVkX2lkeF9hdHRycyk7CisKIAkJLyoKIAkJICogUmVmZXIgdG8gdGhlIGNvbW1l bnRzIGFib3ZlIHRoZSBjYWxsIHRvIENoZWNrQW5kUmVwb3J0Q29uZmxpY3QoKSBpbgogCQkg KiBFeGVjU2ltcGxlUmVsYXRpb25JbnNlcnQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyBjaGVj ayBpcyBkb25lIGF0CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5k ZXhvbmx5c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4u YwppbmRleCBkNTIwMTJlOGE2OS4uZmQwMjQ3ZWJhMzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg InBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKKyNpbmNsdWRlICJh Y2Nlc3MvbmJ0cmVlLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3JlbHNjYW4uaCIKICNpbmNsdWRl ICJhY2Nlc3MvdGFibGVhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy90dXBkZXNjLmgiCkBAIC0x MDQsNiArMTA1LDcgQEAgSW5kZXhPbmx5TmV4dChJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUp CiAKIAkJLyogU2V0IGl0IHVwIGZvciBpbmRleC1vbmx5IHNjYW4gKi8KIAkJbm9kZS0+aW9z c19TY2FuRGVzYy0+eHNfd2FudF9pdHVwID0gdHJ1ZTsKKwkJbm9kZS0+aW9zc19TY2FuRGVz Yy0+eHNfaW5kZXhfb25seSA9IHRydWU7CiAJCW5vZGUtPmlvc3NfVk1CdWZmZXIgPSBJbnZh bGlkQnVmZmVyOwogCiAJCS8qCkBAIC0xNzIsNiArMTc0LDI1IEBAIEluZGV4T25seU5leHQo SW5kZXhPbmx5U2NhblN0YXRlICpub2RlKQogCQkJaWYgKCFpbmRleF9mZXRjaF9oZWFwKHNj YW5kZXNjLCBub2RlLT5pb3NzX1RhYmxlU2xvdCkpCiAJCQkJY29udGludWU7CQkvKiBubyB2 aXNpYmxlIHR1cGxlLCB0cnkgbmV4dCBpbmRleCBlbnRyeSAqLwogCisJCQkvKgorCQkJICog SE9ULWluZGV4ZWQgc3RhbGUgZW50cnk6IGlmIHRoZSBjaGFpbiB3YWxrIHRvIHJlYWNoIHRo aXMgdHVwbGUKKwkJCSAqIGNyb3NzZWQgYSBob3QtaW5kZXhlZCBob3AgdGhhdCBjaGFuZ2Vk IGFuIGF0dHJpYnV0ZSB0aGlzIGluZGV4CisJCQkgKiBjb3ZlcnMsIHRoZSBsZWFmIHdlIGFy cml2ZWQgdGhyb3VnaCBpcyBzdGFsZS4gIEZvciBJT1Mgd2Ugc2VydmUKKwkJCSAqIHZhbHVl cyBvdXQgb2YgeHNfaXR1cCwgc28gYSBzdGFsZSBsZWFmIHdvdWxkIHN1cmZhY2UgdGhlIHdy b25nCisJCQkgKiB2YWx1ZXM7IGRyb3AgaXQuICBUaGUgZnJlc2ggZW50cnkgZm9yIHRoZSBu ZXcgdmFsdWUgcmV0dXJucyB0aGUKKwkJCSAqIHJvdyB3aXRoIGNvcnJlY3QgdmFsdWVzIHZp YSBpdHMgb3duIHBhdGguICBQcnVuZSBrZWVwcyBhbnkgcGFnZQorCQkJICogdGhhdCBjYW4g Y2Fycnkgc3VjaCBhIHN0YWxlIGxlYWYgLS0gb25lIHdpdGggYSByZWRpcmVjdCB0byBhCisJ CQkgKiBsaXZlIEhFQVBfSU5ERVhFRF9VUERBVEVEIHR1cGxlIC0tIG91dCBvZiB0aGUgdmlz aWJpbGl0eSBtYXAKKwkJCSAqIChzZWUgaGVhcF9wcnVuZV9yZWNvcmRfcmVkaXJlY3QpLCBz byBhbiBpbmRleC1vbmx5IHNjYW4gYWx3YXlzCisJCQkgKiByZWFjaGVzIHRoaXMgaGVhcCBm ZXRjaCB3aGVuIHN0YWxlbmVzcyBjb3VsZCBhcHBseS4KKwkJCSAqLworCQkJaWYgKHNjYW5k ZXNjLT54c19ob3RfaW5kZXhlZF9zdGFsZSkKKwkJCXsKKwkJCQlJbnN0ckNvdW50RmlsdGVy ZWQyKG5vZGUsIDEpOworCQkJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmlvc3NfVGFibGVTbG90 KTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwogCQkJRXhlY0NsZWFyVHVwbGUobm9kZS0+aW9z c19UYWJsZVNsb3QpOwogCiAJCQkvKgpAQCAtMjI5LDYgKzI1MCwxNiBAQCBJbmRleE9ubHlO ZXh0KEluZGV4T25seVNjYW5TdGF0ZSAqbm9kZSkKIAkJCX0KIAkJfQogCisJCS8qCisJCSAq IE5vIEhPVC1pbmRleGVkIHN0YWxlbmVzcyBjaGVjayBpcyBuZWVkZWQgb24gdGhlIFZNLWFs bC12aXNpYmxlIHBhdGgKKwkJICogKHdoZXJlIHdlIHNraXBwZWQgdGhlIGhlYXAgZmV0Y2gp LiAgUHJ1bmUga2VlcHMgYW55IHBhZ2UgdGhhdCBjb3VsZAorCQkgKiBjYXJyeSBhIHN0YWxl IGxlYWYgLS0gb25lIHdpdGggYSByZWRpcmVjdCB0byBhIGxpdmUKKwkJICogSEVBUF9JTkRF WEVEX1VQREFURUQgdHVwbGUgLS0gb3V0IG9mIHRoZSB2aXNpYmlsaXR5IG1hcCwgc28gYW4K KwkJICogYWxsLXZpc2libGUgZW50cnkgbmV2ZXIgY3Jvc3NlZCBhIEhPVC9TSVUgaG9wLiAg KGluZGV4X2dldG5leHRfdGlkCisJCSAqIGFsc28gcmVzZXRzIHhzX2hvdF9pbmRleGVkX3N0 YWxlIHBlciBlbnRyeSwgYW5kIG9ubHkgdGhlIGhlYXAgZmV0Y2gKKwkJICogaW4gaW5kZXhf ZmV0Y2hfaGVhcCBldmVyIHNldHMgaXQsIHNvIGl0IGNhbm5vdCBiZSBzZXQgaGVyZSBhbnl3 YXkuKQorCQkgKi8KKwogCQkvKgogCQkgKiBXZSBkb24ndCBjdXJyZW50bHkgc3VwcG9ydCBy ZWNoZWNraW5nIE9SREVSIEJZIGRpc3RhbmNlcy4gIChJbgogCQkgKiBwcmluY2lwbGUsIGlm IHRoZSBpbmRleCBjYW4gc3VwcG9ydCByZXRyaWV2YWwgb2YgdGhlIG9yaWdpbmFsbHkKQEAg LTc3NSw2ICs4MDYsNyBAQCBFeGVjSW5kZXhPbmx5U2NhbkluaXRpYWxpemVEU00oSW5kZXhP bmx5U2NhblN0YXRlICpub2RlLAogCQkJCQkJCQkgU2NhblJlbElzUmVhZE9ubHkoJm5vZGUt PnNzKSA/CiAJCQkJCQkJCSBTT19ISU5UX1JFTF9SRUFEX09OTFkgOiBTT19OT05FKTsKIAlu b2RlLT5pb3NzX1NjYW5EZXNjLT54c193YW50X2l0dXAgPSB0cnVlOworCW5vZGUtPmlvc3Nf U2NhbkRlc2MtPnhzX2luZGV4X29ubHkgPSB0cnVlOwogCW5vZGUtPmlvc3NfVk1CdWZmZXIg PSBJbnZhbGlkQnVmZmVyOwogCiAJLyoKQEAgLTgyNSw2ICs4NTcsNyBAQCBFeGVjSW5kZXhP bmx5U2NhbkluaXRpYWxpemVXb3JrZXIoSW5kZXhPbmx5U2NhblN0YXRlICpub2RlLAogCQkJ CQkJCQkgU2NhblJlbElzUmVhZE9ubHkoJm5vZGUtPnNzKSA/CiAJCQkJCQkJCSBTT19ISU5U X1JFTF9SRUFEX09OTFkgOiBTT19OT05FKTsKIAlub2RlLT5pb3NzX1NjYW5EZXNjLT54c193 YW50X2l0dXAgPSB0cnVlOworCW5vZGUtPmlvc3NfU2NhbkRlc2MtPnhzX2luZGV4X29ubHkg PSB0cnVlOwogCiAJLyoKIAkgKiBJZiBubyBydW4tdGltZSBrZXlzIHRvIGNhbGN1bGF0ZSBv ciB0aGV5IGFyZSByZWFkeSwgZ28gYWhlYWQgYW5kIHBhc3MKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVJbmRleHNjYW4uYwppbmRleCAzOWY2NjkxZWUzNS4uMjMyOWE3MTcxMTggMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKQEAgLTMyLDYgKzMyLDcgQEAKICNp bmNsdWRlICJhY2Nlc3MvbmJ0cmVlLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3JlbHNjYW4uaCIK ICNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgorI2luY2x1ZGUgImNhdGFsb2cvaW5kZXgu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhl Y3V0b3IuaCIKICNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCkBAIC0xNTEsNiAr MTUyLDIwIEBAIEluZGV4TmV4dChJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAkJCX0KIAkJfQog CisJCS8qCisJCSAqIEhPVC1pbmRleGVkIHN0YWxlIGVudHJ5OiB0aGUgY2hhaW4gd2Ugd2Fs a2VkIHRvIHJlYWNoIHRoaXMgdHVwbGUKKwkJICogY3Jvc3NlZCBhIGhvdC1pbmRleGVkIGhv cCB0aGF0IGNoYW5nZWQgYW4gYXR0cmlidXRlIHRoaXMgaW5kZXgKKwkJICogY292ZXJzLCBz byB0aGUgbGVhZiBlbnRyeSB3ZSBhcnJpdmVkIHRocm91Z2ggaXMgc3RhbGUuICBEcm9wIGl0 OworCQkgKiB0aGUgZnJlc2ggZW50cnkgaW5zZXJ0ZWQgZm9yIHRoZSBuZXcgdmFsdWUgcmV0 dXJucyB0aGUgcm93IHRocm91Z2gKKwkJICogaXRzIG93biBwYXRoLiAgU3RhbGVuZXNzIHdh cyBkZWNpZGVkIGJ5IHRoZSBoZWFwIEFNIHZpYSBwZXItaG9wCisJCSAqIG1vZGlmaWVkLWF0 dHJzIGJpdG1hcHMgKHNlZSBoZWFwX2hvdF9zZWFyY2hfYnVmZmVyKS4KKwkJICovCisJCWlm IChzY2FuZGVzYy0+eHNfaG90X2luZGV4ZWRfc3RhbGUpCisJCXsKKwkJCUluc3RyQ291bnRG aWx0ZXJlZDIobm9kZSwgMSk7CisJCQljb250aW51ZTsKKwkJfQorCiAJCXJldHVybiBzbG90 OwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRh YmxlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCAx ZTc5MzA3ZDMzYy4uMzI0M2JlMzNhOWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVNb2RpZnlUYWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVN b2RpZnlUYWJsZS5jCkBAIC0xMzAsNyArMTMwLDE0IEBAIHR5cGVkZWYgc3RydWN0IE1vZGlm eVRhYmxlQ29udGV4dAogdHlwZWRlZiBzdHJ1Y3QgVXBkYXRlQ29udGV4dAogewogCWJvb2wJ CWNyb3NzUGFydFVwZGF0ZTsJLyogd2FzIGl0IGEgY3Jvc3MtcGFydGl0aW9uIHVwZGF0ZT8g Ki8KLQlUVV9VcGRhdGVJbmRleGVzIHVwZGF0ZUluZGV4ZXM7IC8qIFdoaWNoIGluZGV4IHVw ZGF0ZXMgYXJlIHJlcXVpcmVkPyAqLworCisJLyoKKwkgKiBTZXQgb2YgaW5kZXhlZCBhdHRy aWJ1dGVzIHRoZSBVUERBVEUgY2hhbmdlZCAoaW4vb3V0IGZvciB0aGUgdGFibGUgQU0ncwor CSAqIHVwZGF0ZSBjYWxsYmFjaykuICBQb3B1bGF0ZWQgYnkgRXhlY1VwZGF0ZUFjdCBhbmQg Y29uc3VtZWQgYnkKKwkgKiBFeGVjVXBkYXRlRXBpbG9ndWU7IHRoZSBBTSBhZGRzIHRoZSB3 aG9sZS1yb3cgYXR0cmlidXRlCisJICogKFRhYmxlVHVwbGVVcGRhdGVBbGxJbmRleGVzKSB3 aGVuIGV2ZXJ5IGluZGV4IG5lZWRzIGEgZnJlc2ggZW50cnkuCisJICovCisJQml0bWFwc2V0 ICAqbW9kaWZpZWRfYXR0cnM7CiAKIAkvKgogCSAqIExvY2sgbW9kZSB0byBhY3F1aXJlIG9u IHRoZSBsYXRlc3QgdHVwbGUgdmVyc2lvbiBiZWZvcmUgcGVyZm9ybWluZwpAQCAtMjM4LDI1 ICsyNDUsMjMgQEAgRXhlY1VwZGF0ZU1vZGlmaWVkSWR4QXR0cnMoUmVzdWx0UmVsSW5mbyAq cmVzdWx0UmVsSW5mbywKIAkJcmV0dXJuIE5VTEw7CiAKIAkvKgotCSAqIEdldCB0aGUgc2V0 IG9mIGFsbCBhdHRyaWJ1dGVzIGFjcm9zcyBhbGwgaW5kZXhlcyBmb3IgdGhpcyByZWxhdGlv biBmcm9tCi0JICogdGhlIHJlbGNhY2hlLCBpdCByZXR1cm5zIHVzIGEgY29weSBvZiB0aGUg Yml0bWFwIHNvIHdlIGNhbiBtb2RpZnkgaXQuCisJICogRGV0ZXJtaW5lIHdoaWNoIGluZGV4 ZWQgYXR0cmlidXRlcyBhY3R1YWxseSBjaGFuZ2VkIHZhbHVlIGJ5IGNvbXBhcmluZworCSAq IHRoZSBvbGQgYW5kIG5ldyB0dXBsZXMgYXR0cmlidXRlLWJ5LWF0dHJpYnV0ZSBvdmVyIHRo ZSByZWxhdGlvbidzIGZ1bGwKKwkgKiBpbmRleGVkLWF0dHJpYnV0ZSBzZXQuICBXZSBkZWxp YmVyYXRlbHkgZG8gTk9UIHRyeSB0byBuYXJyb3cgdGhlIHdvcmsKKwkgKiB1c2luZyB0aGUg U1FMIFVQREFURSdzIHRhcmdldCBsaXN0IChFeGVjR2V0QWxsVXBkYXRlZENvbHMpOiB0aGF0 IGxpc3QKKwkgKiBkb2VzIG5vdCBjYXB0dXJlIGluZGV4ZWQgY29sdW1ucyBtdXRhdGVkIG91 dHNpZGUgdGhlIFNFVCBjbGF1c2UsIHN1Y2gKKwkgKiBhcyBhIGNvbHVtbiByZXdyaXR0ZW4g YnkgYSBCRUZPUkUvSU5TVEVBRC1PRiB0cmlnZ2VyIHZpYQorCSAqIGhlYXBfbW9kaWZ5X3R1 cGxlIChzZWUgdHN2ZWN0b3JfdXBkYXRlX3RyaWdnZXIoKSBpbiB0c2VhcmNoLnNxbCksIHRo ZQorCSAqIGltcGxpY2l0IHRlbXBvcmFsIHJhbmdlIGNvbHVtbiBvZiBhIEZPUiBQT1JUSU9O IE9GIHVwZGF0ZSwgb3IgdGhlCisJICogcHJlLWJ1aWx0IHR1cGxlcyBhcHBsaWVkIGJ5IFJF UEFDSyAoQ09OQ1VSUkVOVExZKSBhbmQgbG9naWNhbAorCSAqIHJlcGxpY2F0aW9uIHRocm91 Z2ggYSBzeW50aGV0aWMgUmVzdWx0UmVsSW5mby4gIENvbXBhcmluZyB0aGUgYWN0dWFsCisJ ICogdHVwbGUgdmFsdWVzIGlzIGFsd2F5cyBjb3JyZWN0LgogCSAqCi0JICogTm90ZTogV2Ug aW50ZW50aW9uYWxseSBzY2FuIGFsbCBpbmRleGVkIGNvbHVtbnMgd2hlbiBsb29raW5nIGZv cgotCSAqIGNoYW5nZXMgcmF0aGVyIHRoYW4gcmVkdWNlIHRoYXQgc2V0IGJ5IGludGVyc2Vj dGluZyBpdCB3aXRoCi0JICogRXhlY0dldEFsbFVwZGF0ZWRDb2xzKCkuICBEZXNpcHRlIHRo ZSBuYW1lIGl0IHByb3ZpZGVzIHRoZSBzZXQgb2YKLQkgKiB0YXJnZXRlZCBhdHRyaWJ1dGVz IGluIHRoZSBTUUwgdXNlZCBmb3IgdGhlIFVQREFURSBhbmQgYW55IHRyaWdnZXJzLAotCSAq IGJ1dCB0aGF0IGRvZXNuJ3QgaW5jbHVkZSBhbnkgYXR0cmlidXRlcyB1cGRhdGVkIHVzaW5n Ci0JICogaGVhcF9tb2RpZml5X3R1cGxlKCkuIFRoZXJlIGlzIG9uZSB0ZXN0IGluIHRzZWFy Y2guc3FsIHRoYXQgZG9lcyBqdXN0Ci0JICogdGhhdCwgbW9kaWZpZXMgYW4gaW5kZXhlZCBh dHRyaWJ1dGUgdGhhdCBpc24ndCBzcGVjaWZpZWQgaW4gdGhlIFNRTCBhbmQKLQkgKiBzbyBp c24ndCBwcmVzZW50IGluIHRoYXQgYml0bWFwc2V0LgorCSAqIFJlbGF0aW9uR2V0SW5kZXhB dHRyQml0bWFwIHJldHVybnMgYSBjb3B5IHdlIGFyZSBmcmVlIHRvIG11dGF0ZTsKKwkgKiBF eGVjQ29tcGFyZVNsb3RBdHRycyBkZWxldGVzIHRoZSBhdHRyaWJ1dGVzIHRoYXQgZGlkIG5v dCBjaGFuZ2UgYW5kCisJICogcmV0dXJucyB0aGUgc3Vydml2aW5nICJtb2RpZmllZCBpbmRl eGVkIGF0dHJpYnV0ZXMiIHNldC4KIAkgKi8KIAlhdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhB dHRyQml0bWFwKHJlbGF0aW9uLCBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEKTsKLQotCS8q Ci0JICogV2hlbiB0aGVyZSBhcmUgaW5kZXhlZCBhdHRyaWJ1dGVzIG1lbnRpb25lZCBpbiB0 aGUgVVBEQVRFIHRoZW4gd2UgbmVlZAotCSAqIHRvIGZpbmQgdGhlIHN1YnNldCB0aGF0IGNo YW5nZWQgdmFsdWUuICBUaGF0J3MgdGhlCi0JICogIm1vZGlmaWVkX2lkeF9hdHRycyIuCi0J ICovCiAJYXR0cnMgPSBFeGVjQ29tcGFyZVNsb3RBdHRycyhhdHRycywgdHVwZGVzYywgb2xk X3R0cywgbmV3X3R0cyk7CiAKIAlyZXR1cm4gYXR0cnM7CkBAIC0yNTEzLDggKzI1MTgsOCBA QCBFeGVjVXBkYXRlQWN0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVzdWx0UmVs SW5mbyAqcmVzdWx0UmVsSW5mbywKIAlib29sCQlwYXJ0aXRpb25fY29uc3RyYWludF9mYWls ZWQ7CiAJVE1fUmVzdWx0CXJlc3VsdDsKIAotCS8qIFRoZSBzZXQgb2YgbW9kaWZpZWQgaW5k ZXhlZCBhdHRyaWJ1dGVzIHRoYXQgdHJpZ2dlciBuZXcgaW5kZXggZW50cmllcyAqLwotCUJp dG1hcHNldCAgKm1vZGlmaWVkX2lkeF9hdHRycyA9IE5VTEw7CisJLyogUmVzZXQgYW55IHN0 YXRlIGxlZnQgb3ZlciBmcm9tIGEgcHJldmlvdXMgY2FsbCAqLworCXVwZGF0ZUN4dC0+bW9k aWZpZWRfYXR0cnMgPSBOVUxMOwogCiAJdXBkYXRlQ3h0LT5jcm9zc1BhcnRVcGRhdGUgPSBm YWxzZTsKIApAQCAtMjYzOCw3ICsyNjQzLDggQEAgbHJlcGxhY2U6CiAJICogd2Ugd2lsbCBv dmVybG9vayBhdHRyaWJ1dGVzIGRpcmVjdGx5IG1vZGlmaWVkIGJ5IGhlYXBfbW9kaWZ5X3R1 cGxlKCkKIAkgKiB3aGljaCBhcmUgbm90IGtub3duIHRvIEV4ZWNHZXRVcGRhdGVkQ29scygp LgogCSAqLwotCW1vZGlmaWVkX2lkeF9hdHRycyA9IEV4ZWNVcGRhdGVNb2RpZmllZElkeEF0 dHJzKHJlc3VsdFJlbEluZm8sIG9sZFNsb3QsIHNsb3QpOworCXVwZGF0ZUN4dC0+bW9kaWZp ZWRfYXR0cnMgPQorCQlFeGVjVXBkYXRlTW9kaWZpZWRJZHhBdHRycyhyZXN1bHRSZWxJbmZv LCBvbGRTbG90LCBzbG90KTsKIAogCS8qCiAJICogQ2FsbCBpbnRvIHRoZSB0YWJsZSBBTSB0 byB1cGRhdGUgdGhlIGhlYXAgdHVwbGUuCkBAIC0yNjQ5LDYgKzI2NTUsOCBAQCBscmVwbGFj ZToKIAkgKiBmb3IgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IHVwZGF0ZXMgaW4gdHJhbnNhY3Rp b24tc25hcHNob3QgbW9kZQogCSAqIHRyYW5zYWN0aW9ucy4KIAkgKi8KKwlBc3NlcnQoIWJt c19pc19tZW1iZXIoVGFibGVUdXBsZVVwZGF0ZUFsbEluZGV4ZXMsCisJCQkJCQkgIHVwZGF0 ZUN4dC0+bW9kaWZpZWRfYXR0cnMpKTsKIAlyZXN1bHQgPSB0YWJsZV90dXBsZV91cGRhdGUo cmVzdWx0UmVsYXRpb25EZXNjLCB0dXBsZWlkLCBzbG90LAogCQkJCQkJCQllc3RhdGUtPmVz X291dHB1dF9jaWQsCiAJCQkJCQkJCTAsCkBAIC0yNjU2LDggKzI2NjQsNyBAQCBscmVwbGFj ZToKIAkJCQkJCQkJZXN0YXRlLT5lc19jcm9zc2NoZWNrX3NuYXBzaG90LAogCQkJCQkJCQl0 cnVlIC8qIHdhaXQgZm9yIGNvbW1pdCAqLyAsCiAJCQkJCQkJCSZjb250ZXh0LT50bWZkLCAm dXBkYXRlQ3h0LT5sb2NrbW9kZSwKLQkJCQkJCQkJbW9kaWZpZWRfaWR4X2F0dHJzLAotCQkJ CQkJCQkmdXBkYXRlQ3h0LT51cGRhdGVJbmRleGVzKTsKKwkJCQkJCQkJJnVwZGF0ZUN4dC0+ bW9kaWZpZWRfYXR0cnMpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTI2NzgsMTQgKzI2 ODUsMjYgQEAgRXhlY1VwZGF0ZUVwaWxvZ3VlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4 dCwgVXBkYXRlQ29udGV4dCAqdXBkYXRlQ3h0LAogCUxpc3QJICAgKnJlY2hlY2tJbmRleGVz ID0gTklMOwogCiAJLyogaW5zZXJ0IGluZGV4IGVudHJpZXMgZm9yIHR1cGxlIGlmIG5lY2Vz c2FyeSAqLwotCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9OdW1JbmRpY2VzID4gMCAmJiAodXBk YXRlQ3h0LT51cGRhdGVJbmRleGVzICE9IFRVX05vbmUpKQorCWlmIChyZXN1bHRSZWxJbmZv LT5yaV9OdW1JbmRpY2VzID4gMCAmJgorCQkhYm1zX2lzX2VtcHR5KHVwZGF0ZUN4dC0+bW9k aWZpZWRfYXR0cnMpKQogCXsKLQkJdWludDMyCQlmbGFncyA9IEVJSVRfSVNfVVBEQVRFOwor CQlib29sCQlhbGxfaW5kZXhlcyA9CisJCQlibXNfaXNfbWVtYmVyKFRhYmxlVHVwbGVVcGRh dGVBbGxJbmRleGVzLAorCQkJCQkJICB1cGRhdGVDeHQtPm1vZGlmaWVkX2F0dHJzKTsKKwor CQkvKgorCQkgKiBQb3B1bGF0ZSBwZXItaW5kZXggaWlfSW5kZXhVbmNoYW5nZWQgYmVmb3Jl IGluc2VydGluZy4gIFdoZW4gdGhlIEFNCisJCSAqIHN0b3JlZCBhbiBpbmRlcGVuZGVudCBu ZXcgdmVyc2lvbiAod2hvbGUtcm93IGF0dHJpYnV0ZSBwcmVzZW50KQorCQkgKiBldmVyeSBp bmRleCBuZWVkcyBhIGZyZXNoIGVudHJ5OyBmb3IgYSBIT1QgdXBkYXRlIG9ubHkgdGhvc2Ug d2hvc2UKKwkJICogYXR0cmlidXRlcyBvdmVybGFwIHRoZSBtb2RpZmllZCBzZXQgZG8uCisJ CSAqLworCQlFeGVjU2V0SW5kZXhVbmNoYW5nZWQocmVzdWx0UmVsSW5mbywgdXBkYXRlQ3h0 LT5tb2RpZmllZF9hdHRycyk7CiAKLQkJaWYgKHVwZGF0ZUN4dC0+dXBkYXRlSW5kZXhlcyA9 PSBUVV9TdW1tYXJpemluZykKLQkJCWZsYWdzIHw9IEVJSVRfT05MWV9TVU1NQVJJWklORzsK IAkJcmVjaGVja0luZGV4ZXMgPSBFeGVjSW5zZXJ0SW5kZXhUdXBsZXMocmVzdWx0UmVsSW5m bywgY29udGV4dC0+ZXN0YXRlLAotCQkJCQkJCQkJCQkgICBmbGFncywgc2xvdCwgTklMLAor CQkJCQkJCQkJCQkgICBFSUlUX0lTX1VQREFURSB8CisJCQkJCQkJCQkJCSAgIChhbGxfaW5k ZXhlcyA/CisJCQkJCQkJCQkJCQkwIDogRUlJVF9JU19IT1RfSU5ERVhFRCksCisJCQkJCQkJ CQkJCSAgIHNsb3QsIE5JTCwKIAkJCQkJCQkJCQkJICAgTlVMTCk7CiAJfQogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVz L21ha2VmdW5jcy5jCmluZGV4IDQwYjA5OTU4YWMyLi5mMDUwYzA4OGQyOCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9k ZXMvbWFrZWZ1bmNzLmMKQEAgLTg0NSw4ICs4NDUsNiBAQCBtYWtlSW5kZXhJbmZvKGludCBu dW1hdHRycywgaW50IG51bWtleWF0dHJzLCBPaWQgYW1vaWQsIExpc3QgKmV4cHJlc3Npb25z LAogCW4tPmlpX1VuaXF1ZSA9IHVuaXF1ZTsKIAluLT5paV9OdWxsc05vdERpc3RpbmN0ID0g bnVsbHNfbm90X2Rpc3RpbmN0OwogCW4tPmlpX1JlYWR5Rm9ySW5zZXJ0cyA9IGlzcmVhZHk7 Ci0Jbi0+aWlfQ2hlY2tlZFVuY2hhbmdlZCA9IGZhbHNlOwotCW4tPmlpX0luZGV4VW5jaGFu Z2VkID0gZmFsc2U7CiAJbi0+aWlfQ29uY3VycmVudCA9IGNvbmN1cnJlbnQ7CiAJbi0+aWlf U3VtbWFyaXppbmcgPSBzdW1tYXJpemluZzsKIAluLT5paV9XaXRob3V0T3ZlcmxhcHMgPSB3 aXRob3V0b3ZlcmxhcHM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS9wZ3N0YXRfcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3Rh dF9yZWxhdGlvbi5jCmluZGV4IDA0ZjJlYjIxZDBiLi44MDVlMzQ4OTk1NiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMKQEAgLTM4NCwx MSArMzg0LDE3IEBAIHBnc3RhdF9jb3VudF9oZWFwX2luc2VydChSZWxhdGlvbiByZWwsIFBn U3RhdF9Db3VudGVyIG4pCiAKIC8qCiAgKiBjb3VudCBhIHR1cGxlIHVwZGF0ZQorICoKKyAq IGhvdCAgICAgIC0tIHRoZSB1cGRhdGUgd2FzIGEgaGVhcC1vbmx5IHR1cGxlIChjbGFzc2lj IEhPVCBvciBIT1QtaW5kZXhlZCkKKyAqIGhvdF9pbmRleGVkIC0tIHRoZSB1cGRhdGUgd2Fz IGEgSE9ULWluZGV4ZWQgdXBkYXRlLCBhIHN1YmNhc2Ugb2YKKyAqICAgICAgICAgICAgICAg IGhvdD10cnVlOyBob3RfaW5kZXhlZCBpbXBsaWVzIGhvdAorICogbmV3cGFnZSAgLS0gdGhl IG5ldyB0dXBsZSB3ZW50IHRvIGEgZGlmZmVyZW50IGJ1ZmZlciB0aGFuIHRoZSBvbGQgb25l CiAgKi8KIHZvaWQKLXBnc3RhdF9jb3VudF9oZWFwX3VwZGF0ZShSZWxhdGlvbiByZWwsIGJv b2wgaG90LCBib29sIG5ld3BhZ2UpCitwZ3N0YXRfY291bnRfaGVhcF91cGRhdGUoUmVsYXRp b24gcmVsLCBib29sIGhvdCwgYm9vbCBob3RfaW5kZXhlZCwgYm9vbCBuZXdwYWdlKQogewog CUFzc2VydCghKGhvdCAmJiBuZXdwYWdlKSk7CisJQXNzZXJ0KCEoaG90X2luZGV4ZWQgJiYg IWhvdCkpOwogCiAJaWYgKHBnc3RhdF9zaG91bGRfY291bnRfcmVsYXRpb24ocmVsKSkKIAl7 CkBAIC0zOTgsMTEgKzQwNCwxNyBAQCBwZ3N0YXRfY291bnRfaGVhcF91cGRhdGUoUmVsYXRp b24gcmVsLCBib29sIGhvdCwgYm9vbCBuZXdwYWdlKQogCQlwZ3N0YXRfaW5mby0+dHJhbnMt PnR1cGxlc191cGRhdGVkKys7CiAKIAkJLyoKLQkJICogdHVwbGVzX2hvdF91cGRhdGVkIGFu ZCB0dXBsZXNfbmV3cGFnZV91cGRhdGVkIGNvdW50ZXJzIGFyZQotCQkgKiBub250cmFuc2Fj dGlvbmFsLCBzbyBqdXN0IGFkdmFuY2UgdGhlbQorCQkgKiB0dXBsZXNfaG90X3VwZGF0ZWQs IHR1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkLCBhbmQKKwkJICogdHVwbGVzX25ld3BhZ2Vf dXBkYXRlZCBjb3VudGVycyBhcmUgbm9udHJhbnNhY3Rpb25hbCwgc28ganVzdAorCQkgKiBh ZHZhbmNlIHRoZW0uICB0dXBsZXNfc2l1IGlzIGNvdW50ZWQgaW4gKmFkZGl0aW9uKiB0byB0 dXBsZXNfaG90OgorCQkgKiBldmVyeSBob3QtaW5kZXhlZCB1cGRhdGUgaXMgYWxzbyBhIEhP VCB1cGRhdGUuCiAJCSAqLwogCQlpZiAoaG90KQorCQl7CiAJCQlwZ3N0YXRfaW5mby0+Y291 bnRzLnR1cGxlc19ob3RfdXBkYXRlZCsrOworCQkJaWYgKGhvdF9pbmRleGVkKQorCQkJCXBn c3RhdF9pbmZvLT5jb3VudHMudHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQrKzsKKwkJfQog CQllbHNlIGlmIChuZXdwYWdlKQogCQkJcGdzdGF0X2luZm8tPmNvdW50cy50dXBsZXNfbmV3 cGFnZV91cGRhdGVkKys7CiAJfQpAQCAtODU0LDcgKzg2NiwxMCBAQCBwZ3N0YXRfcmVsYXRp b25fZmx1c2hfY2IoUGdTdGF0X0VudHJ5UmVmICplbnRyeV9yZWYsIGJvb2wgbm93YWl0KQog CXRhYmVudHJ5LT50dXBsZXNfdXBkYXRlZCArPSBsc3RhdHMtPmNvdW50cy50dXBsZXNfdXBk YXRlZDsKIAl0YWJlbnRyeS0+dHVwbGVzX2RlbGV0ZWQgKz0gbHN0YXRzLT5jb3VudHMudHVw bGVzX2RlbGV0ZWQ7CiAJdGFiZW50cnktPnR1cGxlc19ob3RfdXBkYXRlZCArPSBsc3RhdHMt PmNvdW50cy50dXBsZXNfaG90X3VwZGF0ZWQ7CisJdGFiZW50cnktPnR1cGxlc19ob3RfaW5k ZXhlZF91cGRhdGVkICs9IGxzdGF0cy0+Y291bnRzLnR1cGxlc19ob3RfaW5kZXhlZF91cGRh dGVkOwogCXRhYmVudHJ5LT50dXBsZXNfbmV3cGFnZV91cGRhdGVkICs9IGxzdGF0cy0+Y291 bnRzLnR1cGxlc19uZXdwYWdlX3VwZGF0ZWQ7CisJdGFiZW50cnktPnR1cGxlc19ob3RfaW5k ZXhlZF91cGRfc2tpcHBlZCArPSBsc3RhdHMtPmNvdW50cy50dXBsZXNfaG90X2luZGV4ZWRf dXBkX3NraXBwZWQ7CisJdGFiZW50cnktPnR1cGxlc19ob3RfaW5kZXhlZF91cGRfbWF0Y2hl ZCArPSBsc3RhdHMtPmNvdW50cy50dXBsZXNfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQ7CiAK IAkvKgogCSAqIElmIHRhYmxlIHdhcyB0cnVuY2F0ZWQvZHJvcHBlZCwgZmlyc3QgcmVzZXQg dGhlIGxpdmUvZGVhZCBjb3VudGVycy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5j CmluZGV4IDA1NWY3NTcxMDdmLi43ZDRkYjMyZmQzOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxjYWNoZS5jCkBAIC0xNTg2LDYgKzE1ODYsNyBAQCBSZWxhdGlvbkluaXRJbmRleEFj Y2Vzc0luZm8oUmVsYXRpb24gcmVsYXRpb24pCiAJICovCiAJcmVsYXRpb24tPnJkX2luZGV4 cHJzID0gTklMOwogCXJlbGF0aW9uLT5yZF9pbmRwcmVkID0gTklMOworCXJlbGF0aW9uLT5y ZF9pbmRhdHRyID0gTlVMTDsKIAlyZWxhdGlvbi0+cmRfZXhjbG9wcyA9IE5VTEw7CiAJcmVs YXRpb24tPnJkX2V4Y2xwcm9jcyA9IE5VTEw7CiAJcmVsYXRpb24tPnJkX2V4Y2xzdHJhdHMg PSBOVUxMOwpAQCAtMjQ4NCw2ICsyNDg1LDcgQEAgUmVsYXRpb25EZXN0cm95UmVsYXRpb24o UmVsYXRpb24gcmVsYXRpb24sIGJvb2wgcmVtZW1iZXJfdHVwZGVzYykKIAlibXNfZnJlZShy ZWxhdGlvbi0+cmRfaWRhdHRyKTsKIAlibXNfZnJlZShyZWxhdGlvbi0+cmRfaW5kZXhlZGF0 dHIpOwogCWJtc19mcmVlKHJlbGF0aW9uLT5yZF9zdW1tYXJpemVkYXR0cik7CisJYm1zX2Zy ZWUocmVsYXRpb24tPnJkX2V4cHJpbmRleGF0dHIpOwogCWlmIChyZWxhdGlvbi0+cmRfcHVi ZGVzYykKIAkJcGZyZWUocmVsYXRpb24tPnJkX3B1YmRlc2MpOwogCWlmIChyZWxhdGlvbi0+ cmRfb3B0aW9ucykKQEAgLTUyNzUsNiArNTI3NywxMDggQEAgUmVsYXRpb25HZXRJbmRleFBy ZWRpY2F0ZShSZWxhdGlvbiByZWxhdGlvbikKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgor ICogUmVsYXRpb25HZXRJbmRleGVkQXR0cnMgLS0gcGFsbG9jJ2QgQml0bWFwc2V0IG9mIGhl YXAgYXR0cnMgdGhpcyBpbmRleAorICogcmVmZXJlbmNlcy4KKyAqCisgKiBJbmNsdWRlcyBh dHRyaWJ1dGVzIHVzZWQgYXMgc2ltcGxlIGtleSBjb2x1bW5zLCBJTkNMVURFIGNvbHVtbnMs IGluc2lkZQorICogZXhwcmVzc2lvbiBjb2x1bW5zLCBhbmQgaW5zaWRlIHRoZSBwYXJ0aWFs LWluZGV4IHByZWRpY2F0ZS4gIEF0dHJpYnV0ZQorICogbnVtYmVycyB1c2UgdGhlIEZpcnN0 TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIgb2Zmc2V0IGNvbnZlbnRpb24gc28KKyAq IHRoYXQgc3lzdGVtIGF0dHJpYnV0ZXMgYXJlIHJlcHJlc2VudGFibGUgYWxvbmdzaWRlIHVz ZXIgYXR0cmlidXRlcy4KKyAqCisgKiBUaGUgZnVuY3Rpb24gYnVpbGRzIHVwIHRoZSBiaXRt YXAgZnJvbToKKyAqICAgLSByZF9pbmRleC0+aW5ka2V5ICAgICAgICAgICAoa2V5cyArIElO Q0xVREUpCisgKiAgIC0gUmVsYXRpb25HZXRJbmRleEV4cHJlc3Npb25zIChwYXJzZWQgZXhw cmVzc2lvbiB0cmVlcywgYWxyZWFkeSBjYWNoZWQpCisgKiAgIC0gUmVsYXRpb25HZXRJbmRl eFByZWRpY2F0ZSAgIChwYXJzZWQgcHJlZGljYXRlIHRyZWUsIGFscmVhZHkgY2FjaGVkKQor ICogYW5kIGNhY2hlcyBhIGNvcHkgaW4gcmRfaW5kZXhlZGF0dHIsIHdoaWNoIGxpdmVzIGlu IHJkX2luZGV4Y3h0LgorICoKKyAqIFRoZSByZXR1cm5lZCBCaXRtYXBzZXQgaXMgYWxsb2Nh dGVkIGluIHRoZSBjYWxsZXIncyBjdXJyZW50IG1lbW9yeQorICogY29udGV4dDsgdGhlIGNh bGxlciBvd25zIGl0IGFuZCBtdXN0IGJtc19mcmVlIHdoZW4gZG9uZS4gIFdlIG5ldmVyIGhh bmQKKyAqIG91dCBhIGJvcnJvd2VkIHBvaW50ZXIgdG8gdGhlIGNhY2hlZCBjb3B5IGJlY2F1 c2UgcmVsY2FjaGUgaW52YWxpZGF0aW9uCisgKiBjYW4gcmVidWlsZCByZF9pbmRleGN4dCBp biBwbGFjZSBldmVuIHdoaWxlIGEgcmVmY291bnQgaXMgaGVsZC4KKyAqCisgKiBDYWxsZXIg bXVzdCBob2xkIGFuIG9wZW4gbG9jayBvbiB0aGUgaW5kZXggcmVsYXRpb24uCisgKi8KK0Jp dG1hcHNldCAqCitSZWxhdGlvbkdldEluZGV4ZWRBdHRycyhSZWxhdGlvbiBpbmRleFJlbCkK K3sKKwlCaXRtYXBzZXQgICphdHRycyA9IE5VTEw7CisJRm9ybV9wZ19pbmRleCBpbmRleFN0 cnVjdDsKKwlMaXN0CSAgICppbmRleHByczsKKwlMaXN0CSAgICppbmRwcmVkOworCU1lbW9y eUNvbnRleHQgb2xkY3h0OworCisJQXNzZXJ0KGluZGV4UmVsLT5yZF9yZWwtPnJlbGtpbmQg PT0gUkVMS0lORF9JTkRFWCB8fAorCQkgICBpbmRleFJlbC0+cmRfcmVsLT5yZWxraW5kID09 IFJFTEtJTkRfUEFSVElUSU9ORURfSU5ERVgpOworCisJLyogRmFzdCBwYXRoOiByZXR1cm4g YSBjb3B5IG9mIHRoZSBjYWNoZWQgYml0bWFwLiAqLworCWlmIChpbmRleFJlbC0+cmRfaW5k YXR0ciAhPSBOVUxMKQorCQlyZXR1cm4gYm1zX2NvcHkoaW5kZXhSZWwtPnJkX2luZGF0dHIp OworCisJaW5kZXhTdHJ1Y3QgPSBpbmRleFJlbC0+cmRfaW5kZXg7CisKKwkvKgorCSAqIER1 cmluZyB2ZXJ5IGVhcmx5IGJvb3RzdHJhcCByZF9pbmRleHR1cGxlIG1heSBub3QgYmUgcG9w dWxhdGVkIHlldC4gSW4KKwkgKiB0aGF0IGNhc2Ugd2UgZmFsbCBiYWNrIHRvIGp1c3QgdGhl IGtleSBjb2x1bW5zIHdpdGhvdXQgY2FjaGluZy4KKwkgKi8KKwlpZiAoaW5kZXhSZWwtPnJk X2luZGV4dHVwbGUgPT0gTlVMTCkKKwl7CisJCWZvciAoaW50IGkgPSAwOyBpIDwgaW5kZXhT dHJ1Y3QtPmluZG5hdHRzOyBpKyspCisJCXsKKwkJCUF0dHJOdW1iZXIJYXR0cm51bSA9IGlu ZGV4U3RydWN0LT5pbmRrZXkudmFsdWVzW2ldOworCisJCQlpZiAoYXR0cm51bSAhPSAwKQor CQkJCWF0dHJzID0gYm1zX2FkZF9tZW1iZXIoYXR0cnMsCisJCQkJCQkJCQkgICBhdHRybnVt IC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisJCX0KKwkJcmV0dXJu IGF0dHJzOworCX0KKworCS8qCisJICogS2V5IGNvbHVtbnMgYW5kIElOQ0xVREUgKGNvdmVy aW5nKSBjb2x1bW5zLiAgSU5DTFVERSBjb2x1bW5zIG11c3QgYmUKKwkgKiBjb3VudGVkOiB0 aGVpciB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgaW5kZXggbGVhZiBhbmQgc2VydmVkIGJ5 CisJICogaW5kZXgtb25seSBzY2Fucywgc28gYW4gdXBkYXRlIHRoYXQgY2hhbmdlcyBhbiBJ TkNMVURFIGNvbHVtbiBtdXN0CisJICogaW5zZXJ0IGEgZnJlc2ggaW5kZXggZW50cnkgKG9y IGJlIGRpc3F1YWxpZmllZCBmcm9tIHN0YXlpbmcKKwkgKiBIT1QtaW5kZXhlZCkgZXhhY3Rs eSBhcyBmb3IgYSBrZXkgY29sdW1uLiAgVGhpcyBtYXRjaGVzIHRoZSBoZWFwLWxldmVsCisJ ICogUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAoLi4uLCBJTkRFWF9BVFRSX0JJVE1BUF9J TkRFWEVEKSwgd2hpY2ggYWxzbworCSAqIHVuaW9ucyBhbGwgaW5kbmF0dHMuICBFeHByZXNz aW9uIGFuZCBwYXJ0aWFsLXByZWRpY2F0ZSBjb2x1bW5zIGFyZQorCSAqIGFkZGVkIGJlbG93 LgorCSAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgaW5kZXhTdHJ1Y3QtPmluZG5hdHRzOyBp KyspCisJeworCQlBdHRyTnVtYmVyCWF0dHJudW0gPSBpbmRleFN0cnVjdC0+aW5ka2V5LnZh bHVlc1tpXTsKKworCQkvKiBhdHRudW0gMCBtZWFucyAiZXhwcmVzc2lvbiI7IHRob3NlIGF0 dHJzIGFyZSBwaWNrZWQgdXAgYmVsb3cuICovCisJCWlmIChhdHRybnVtICE9IDApCisJCQlh dHRycyA9IGJtc19hZGRfbWVtYmVyKGF0dHJzLAorCQkJCQkJCQkgICBhdHRybnVtIC0gRmly c3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisJfQorCisJLyogRXhwcmVzc2lv biBjb2x1bW5zICh2aWEgYWxyZWFkeS1wYXJzZWQgdHJlZSwgcmV1c2luZyByZWxjYWNoZSku ICovCisJaW5kZXhwcnMgPSBSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lvbnMoaW5kZXhSZWwp OworCWlmIChpbmRleHBycyAhPSBOSUwpCisJCXB1bGxfdmFyYXR0bm9zKChOb2RlICopIGlu ZGV4cHJzLCAxLCAmYXR0cnMpOworCisJLyogUGFydGlhbC1pbmRleCBwcmVkaWNhdGUgY29s dW1ucy4gKi8KKwlpbmRwcmVkID0gUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShpbmRleFJl bCk7CisJaWYgKGluZHByZWQgIT0gTklMKQorCQlwdWxsX3ZhcmF0dG5vcygoTm9kZSAqKSBp bmRwcmVkLCAxLCAmYXR0cnMpOworCisJLyoKKwkgKiBDYWNoZSBhIGNvcHkgaW5zaWRlIHJk X2luZGV4Y3h0IHNvIHN1YnNlcXVlbnQgY2FsbHMgYXJlIGNoZWFwLiAgVGhlCisJICogY2Fj aGVkIGJpdG1hcCBpcyBmcmVlZCBhbG9uZyB3aXRoIHJkX2luZGV4Y3h0IG9uIHJlbGNhY2hl IHJlYnVpbGQsIHNvCisJICogaXQncyBzYWZlIHRvIHN0YXNoIGhlcmUuCisJICovCisJaWYg KGluZGV4UmVsLT5yZF9pbmRleGN4dCAhPSBOVUxMKQorCXsKKwkJb2xkY3h0ID0gTWVtb3J5 Q29udGV4dFN3aXRjaFRvKGluZGV4UmVsLT5yZF9pbmRleGN4dCk7CisJCWluZGV4UmVsLT5y ZF9pbmRhdHRyID0gYm1zX2NvcHkoYXR0cnMpOworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY3h0KTsKKwl9CisKKwlyZXR1cm4gYXR0cnM7Cit9CisKIC8qCiAgKiBSZWxhdGlvbkdl dEluZGV4QXR0ckJpdG1hcCAtLSBnZXQgYSBiaXRtYXAgb2YgaW5kZXggYXR0cmlidXRlIG51 bWJlcnMKICAqCkBAIC01MzEzLDYgKzU0MTcsNyBAQCBCaXRtYXBzZXQgKgogUmVsYXRpb25H ZXRJbmRleEF0dHJCaXRtYXAoUmVsYXRpb24gcmVsYXRpb24sIEluZGV4QXR0ckJpdG1hcEtp bmQgYXR0cktpbmQpCiB7CiAJQml0bWFwc2V0ICAqdWluZGV4YXR0cnM7CS8qIGNvbHVtbnMg aW4gdW5pcXVlIGluZGV4ZXMgKi8KKwlCaXRtYXBzZXQgICpleHByaW5kZXhhdHRyczsgLyog Y29sdW1ucyByZWZlcmVuY2VkIGJ5IGV4cHJlc3Npb24gaW5kZXhlcyAqLwogCUJpdG1hcHNl dCAgKnBraW5kZXhhdHRyczsJLyogY29sdW1ucyBpbiB0aGUgcHJpbWFyeSBpbmRleCAqLwog CUJpdG1hcHNldCAgKmlkaW5kZXhhdHRyczsJLyogY29sdW1ucyBpbiB0aGUgcmVwbGljYSBp ZGVudGl0eSAqLwogCUJpdG1hcHNldCAgKmluZGV4ZWRhdHRyczsJLyogY29sdW1ucyByZWZl cmVuY2VkIGJ5IGluZGV4ZXMgKi8KQEAgLTUzMzksNiArNTQ0NCw4IEBAIFJlbGF0aW9uR2V0 SW5kZXhBdHRyQml0bWFwKFJlbGF0aW9uIHJlbGF0aW9uLCBJbmRleEF0dHJCaXRtYXBLaW5k IGF0dHJLaW5kKQogCQkJCXJldHVybiBibXNfY29weShyZWxhdGlvbi0+cmRfaW5kZXhlZGF0 dHIpOwogCQkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVEOgogCQkJCXJldHVy biBibXNfY29weShyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIpOworCQkJY2FzZSBJTkRF WF9BVFRSX0JJVE1BUF9FWFBSRVNTSU9OOgorCQkJCXJldHVybiBibXNfY29weShyZWxhdGlv bi0+cmRfZXhwcmluZGV4YXR0cik7CiAJCQlkZWZhdWx0OgogCQkJCWVsb2coRVJST1IsICJ1 bmtub3duIGF0dHJLaW5kICV1IiwgYXR0cktpbmQpOwogCQl9CkBAIC01MzgzLDYgKzU0OTAs NyBAQCByZXN0YXJ0OgogCWlkaW5kZXhhdHRycyA9IE5VTEw7CiAJaW5kZXhlZGF0dHJzID0g TlVMTDsKIAlzdW1tYXJpemVkYXR0cnMgPSBOVUxMOworCWV4cHJpbmRleGF0dHJzID0gTlVM TDsKIAlmb3JlYWNoKGwsIGluZGV4b2lkbGlzdCkKIAl7CiAJCU9pZAkJCWluZGV4T2lkID0g bGZpcnN0X29pZChsKTsKQEAgLTU0ODcsNiArNTU5NSwyOCBAQCByZXN0YXJ0OgogCQkvKiBD b2xsZWN0IGFsbCBhdHRyaWJ1dGVzIGluIHRoZSBpbmRleCBwcmVkaWNhdGUsIHRvbyAqLwog CQlwdWxsX3ZhcmF0dG5vcyhpbmRleFByZWRpY2F0ZSwgMSwgYXR0cnMpOwogCisJCS8qCisJ CSAqIElmIHRoaXMgaW5kZXggZXZhbHVhdGVzIGFuIGV4cHJlc3Npb24sIHJlY29yZCBldmVy eSBoZWFwIGF0dHJpYnV0ZQorCQkgKiBpdCByZWZlcmVuY2VzIChrZXkgY29sdW1ucywgZXhw cmVzc2lvbiB2YXJzLCBwcmVkaWNhdGUgdmFycykgaW4KKwkJICogZXhwcmluZGV4YXR0cnMu ICBIZWFwVXBkYXRlSG90QWxsb3dhYmxlKCkgZGlzcXVhbGlmaWVzIHRoZQorCQkgKiBIT1Qt aW5kZXhlZCBwYXRoIGZvciBhbiBVUERBVEUgdGhhdCB0b3VjaGVzIG9uZSBvZiB0aGVzZSwg YmVjYXVzZQorCQkgKiBleHByZXNzaW9uLWF3YXJlIHNlbGVjdGl2ZSBpbmRleCBtYWludGVu YW5jZSBpcyBub3QgaW1wbGVtZW50ZWQKKwkJICogeWV0LgorCQkgKi8KKwkJaWYgKGluZGV4 RXhwcmVzc2lvbnMgIT0gTlVMTCkKKwkJeworCQkJZm9yIChpID0gMDsgaSA8IGluZGV4RGVz Yy0+cmRfaW5kZXgtPmluZG5hdHRzOyBpKyspCisJCQl7CisJCQkJaW50CQkJYXR0cm51bSA9 IGluZGV4RGVzYy0+cmRfaW5kZXgtPmluZGtleS52YWx1ZXNbaV07CisKKwkJCQlpZiAoYXR0 cm51bSAhPSAwKQorCQkJCQlleHByaW5kZXhhdHRycyA9IGJtc19hZGRfbWVtYmVyKGV4cHJp bmRleGF0dHJzLAorCQkJCQkJCQkJCQkJCWF0dHJudW0gLSBGaXJzdExvd0ludmFsaWRIZWFw QXR0cmlidXRlTnVtYmVyKTsKKwkJCX0KKwkJCXB1bGxfdmFyYXR0bm9zKGluZGV4RXhwcmVz c2lvbnMsIDEsICZleHByaW5kZXhhdHRycyk7CisJCQlwdWxsX3ZhcmF0dG5vcyhpbmRleFBy ZWRpY2F0ZSwgMSwgJmV4cHJpbmRleGF0dHJzKTsKKwkJfQorCiAJCWluZGV4X2Nsb3NlKGlu ZGV4RGVzYywgQWNjZXNzU2hhcmVMb2NrKTsKIAl9CiAKQEAgLTU1MTUsMTQgKzU2NDUsMjcg QEAgcmVzdGFydDoKIAkJYm1zX2ZyZWUoaWRpbmRleGF0dHJzKTsKIAkJYm1zX2ZyZWUoaW5k ZXhlZGF0dHJzKTsKIAkJYm1zX2ZyZWUoc3VtbWFyaXplZGF0dHJzKTsKKwkJYm1zX2ZyZWUo ZXhwcmluZGV4YXR0cnMpOwogCiAJCWdvdG8gcmVzdGFydDsKIAl9CiAKIAkvKgotCSAqIFJl Y29yZCB3aGF0IGF0dHJpYnV0ZXMgYXJlIG9ubHkgcmVmZXJlbmNlZCBieSBzdW1tYXJpemlu ZyBpbmRleGVzLiBUaGVuCi0JICogYWRkIHRoYXQgaW50byB0aGUgb3RoZXIgaW5kZXhlZCBh dHRyaWJ1dGVzIHRvIHRyYWNrIGFsbCByZWZlcmVuY2VkCi0JICogYXR0cmlidXRlcy4KKwkg KiBSZWNvcmQgd2hpY2ggYXR0cmlidXRlcyBhcmUgcmVmZXJlbmNlZCBvbmx5IGJ5IHN1bW1h cml6aW5nIGluZGV4ZXMsIHNvCisJICogSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRCBy ZXBvcnRzIGNvbHVtbnMgd2hvc2Ugc29sZSBpbmRleGVzIGFyZQorCSAqIHN1bW1hcml6aW5n IG9uZXMsIHRoZW4gZm9sZCB0aG9zZSBjb2x1bW5zIGludG8gaW5kZXhlZGF0dHJzIGFzIHdl bGwuCisJICoKKwkgKiBJTkRFWF9BVFRSX0JJVE1BUF9JTkRFWEVEIG11c3QgaW5jbHVkZSBz dW1tYXJpemluZy1pbmRleCBjb2x1bW5zIGZvcgorCSAqIHRoZSBIT1QtaW5kZXhlZCB3cml0 ZSBwYXRoOiBpdCBjb21wYXJlcyB0aGUgb2xkIGFuZCBuZXcgdHVwbGVzIG92ZXIKKwkgKiB0 aGlzIGJpdG1hcCB0byBidWlsZCB0aGUgc2V0IG9mIG1vZGlmaWVkIGluZGV4ZWQgYXR0cmli dXRlcywgYW5kIG9ubHkKKwkgKiBtYWludGFpbnMgaW5kZXhlcyB3aGVuIHRoYXQgc2V0IGlz IG5vbi1lbXB0eSAob3IgdGhlIHVwZGF0ZSBpcworCSAqIG5vbi1IT1QpLiAgQSBjaGFuZ2Ug dG8gYSBjb2x1bW4gaW5kZXhlZCBvbmx5IGJ5IGEgc3VtbWFyaXppbmcgaW5kZXgKKwkgKiBt dXN0IHRoZXJlZm9yZSBhcHBlYXIgaW4gdGhlIGJpdG1hcCBzbyB0aGUgc3VtbWFyaXppbmcg aW5kZXggZ2V0cyBpdHMKKwkgKiBibG9jayBzdW1tYXJ5IHJlZnJlc2hlZC4gIEhlYXBVcGRh dGVIb3RBbGxvd2FibGUncyBhbGxfc3VtbWFyaXppbmcKKwkgKiBjaGVjayBzdGlsbCBrZWVw cyBzdWNoIGFuIHVwZGF0ZSBvbiB0aGUgY2xhc3NpYy1IT1QgcGF0aCAoaXQgc3RheXMKKwkg KiBjbGFzc2ljIEhPVCwgc2luY2UgSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRCAtLSBz dW1tYXJpemluZy1vbmx5IC0tCisJICogaXMgYSBzdXBlcnNldCBvZiB0aGUgbW9kaWZpZWQg YXR0cmlidXRlcyksIGFuZCB0aGUgc3VtbWFyaXppbmcgaW5kZXgKKwkgKiBpbnNlcnRzIHVu Y29uZGl0aW9uYWxseSB2aWEgaXRzIGlpX1N1bW1hcml6aW5nIGZsYWcuCiAJICovCiAJc3Vt bWFyaXplZGF0dHJzID0gYm1zX2RlbF9tZW1iZXJzKHN1bW1hcml6ZWRhdHRycywgaW5kZXhl ZGF0dHJzKTsKIAlpbmRleGVkYXR0cnMgPSBibXNfYWRkX21lbWJlcnMoaW5kZXhlZGF0dHJz LCBzdW1tYXJpemVkYXR0cnMpOwpAQCAtNTUzOSw2ICs1NjgyLDggQEAgcmVzdGFydDoKIAly ZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIgPSBOVUxMOwogCWJtc19mcmVlKHJlbGF0aW9uLT5y ZF9zdW1tYXJpemVkYXR0cik7CiAJcmVsYXRpb24tPnJkX3N1bW1hcml6ZWRhdHRyID0gTlVM TDsKKwlibXNfZnJlZShyZWxhdGlvbi0+cmRfZXhwcmluZGV4YXR0cik7CisJcmVsYXRpb24t PnJkX2V4cHJpbmRleGF0dHIgPSBOVUxMOwogCiAJLyoKIAkgKiBOb3cgc2F2ZSBjb3BpZXMg b2YgdGhlIGJpdG1hcHMgaW4gdGhlIHJlbGNhY2hlIGVudHJ5LiAgV2UgaW50ZW50aW9uYWxs eQpAQCAtNTU1Myw2ICs1Njk4LDcgQEAgcmVzdGFydDoKIAlyZWxhdGlvbi0+cmRfaWRhdHRy ID0gYm1zX2NvcHkoaWRpbmRleGF0dHJzKTsKIAlyZWxhdGlvbi0+cmRfaW5kZXhlZGF0dHIg PSBibXNfY29weShpbmRleGVkYXR0cnMpOwogCXJlbGF0aW9uLT5yZF9zdW1tYXJpemVkYXR0 ciA9IGJtc19jb3B5KHN1bW1hcml6ZWRhdHRycyk7CisJcmVsYXRpb24tPnJkX2V4cHJpbmRl eGF0dHIgPSBibXNfY29weShleHByaW5kZXhhdHRycyk7CiAJcmVsYXRpb24tPnJkX2F0dHJz dmFsaWQgPSB0cnVlOwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwogCkBAIC01 NTY5LDYgKzU3MTUsNzIgQEAgcmVzdGFydDoKIAkJCXJldHVybiBpbmRleGVkYXR0cnM7CiAJ CWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRDoKIAkJCXJldHVybiBzdW1tYXJp emVkYXR0cnM7CisJCWNhc2UgSU5ERVhfQVRUUl9CSVRNQVBfRVhQUkVTU0lPTjoKKwkJCXJl dHVybiBleHByaW5kZXhhdHRyczsKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bmtu b3duIGF0dHJLaW5kICV1IiwgYXR0cktpbmQpOworCQkJcmV0dXJuIE5VTEw7CisJfQorfQor CisvKgorICogUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXBOb0NvcHkgLS0gYm9ycm93aW5n IHZhcmlhbnQgb2YKKyAqCQlSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcAorICoKKyAqIFJl dHVybnMgYSBwb2ludGVyIHRvIHRoZSByZWxjYWNoZS1vd25lZCBiaXRtYXAgZm9yIHRoZSBn aXZlbiBhdHRyS2luZAorICogd2l0aG91dCBtYWtpbmcgYSBkZWZlbnNpdmUgY29weS4gIFRo aXMgaXMgYSBob3QtcGF0aCBvcHRpbWl6YXRpb24gZm9yCisgKiByZWFkLW9ubHkgY2FsbGVy cyB0aGF0IHBlcmZvcm0gc2V0IG9wZXJhdGlvbnMgbGlrZSBibXNfb3ZlcmxhcCwKKyAqIGJt c19pc19zdWJzZXQsIGJtc19lcXVhbCwgb3IgYm1zX251bV9tZW1iZXJzIGFuZCBuZXZlciBt dXRhdGUgdGhlCisgKiByZXR1cm5lZCBiaXRtYXAuICBUaGUgcmVzdWx0IGlzIGNvbmNlcHR1 YWxseSBgY29uc3QgQml0bWFwc2V0ICpgOyBjYWxsZXJzCisgKiBtdXN0IG5vdCBwYXNzIGl0 IHRvIGFueXRoaW5nIHRoYXQgY291bGQgZnJlZSBvciBtb2RpZnkgdGhlIHVuZGVybHlpbmcK KyAqIG1lbW9yeSAoZS5nLiwgYm1zX2FkZF9tZW1iZXIsIGJtc19pbnRfbWVtYmVycywgYm1z X2ZyZWUpLgorICoKKyAqIExpZmV0aW1lOiB0aGUgcG9pbnRlciBpcyB2YWxpZCBvbmx5IHVu dGlsIHRoZSBuZXh0IGV2ZW50IHRoYXQgY291bGQKKyAqIHRyaWdnZXIgYSByZWxjYWNoZSBp bnZhbGlkYXRpb24gb24gYHJlbGF0aW9uYC4gIENhbGxlcnMgbXVzdCBub3QgaW52b2tlCisg KiBhbnkgY29kZSB0aGF0IG9wZW5zIGEgcmVsYXRpb24sIHJ1bnMgY2F0YWxvZyBsb29rdXBz LCBvciBvdGhlcndpc2UKKyAqIGFjY2VwdHMgaW52YWxpZGF0aW9uIG1lc3NhZ2VzIGJldHdl ZW4gdGhlIGZldGNoIGFuZCB0aGUgbGFzdCB1c2UuCisgKgorICogRm9yIHRoZSBjb21tb24g Y2FzZSB0aGUgcmVsY2FjaGUgZW50cnkncyBhdHRyaWJ1dGUgYml0bWFwcyBhcmUgYWxyZWFk eQorICogY29tcHV0ZWQgKHJkX2F0dHJzdmFsaWQgaXMgdHJ1ZSkuICBXaGVuIHRoZXkgYXJl bid0LCB3ZSBnbyB0aHJvdWdoCisgKiBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcCB0byBw b3B1bGF0ZSB0aGUgY2FjaGUgKHdoaWNoIGNvc3RzIG9uZQorICogdGhyb3dhd2F5IGJtc19j b3B5IG9uIGZpcnN0IHVzZSkgYW5kIHRoZW4gcmV0dXJuIHRoZSBjYWNoZWQgcG9pbnRlciBv bgorICogdGhlIHNlY29uZCBwYXNzLiAgVGhlIGZpcnN0LXVzZSBwYXRoIGlzIHJhcmUgYW5k IG5ldmVyIG9uIHRoZSBiZW5jaCBob3QKKyAqIHBhdGgsIHNvIHRoZSBzaW1wbGljaXR5IGlz IHByZWZlcnJlZCBvdmVyIG9wZW4tY29kaW5nIHRoZSBwb3B1bGF0ZS1vbmx5CisgKiB2YXJp YW50LgorICovCitjb25zdCBCaXRtYXBzZXQgKgorUmVsYXRpb25HZXRJbmRleEF0dHJCaXRt YXBOb0NvcHkoUmVsYXRpb24gcmVsYXRpb24sIEluZGV4QXR0ckJpdG1hcEtpbmQgYXR0cktp bmQpCit7CisJaWYgKCFyZWxhdGlvbi0+cmRfYXR0cnN2YWxpZCkKKwl7CisJCUJpdG1hcHNl dCAgKnBvcHVsYXRlZDsKKworCQkvKiBQb3B1bGF0ZSByZF8qYXR0ciBmaWVsZHM7IGRpc2Nh cmQgdGhlIHJldHVybmVkIGNvcHkuICovCisJCXBvcHVsYXRlZCA9IFJlbGF0aW9uR2V0SW5k ZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBhdHRyS2luZCk7CisJCWJtc19mcmVlKHBvcHVsYXRl ZCk7CisKKwkJLyoKKwkJICogSWYgdGhlIHJlbGF0aW9uIGhhcyBubyBpbmRleGVzLCBSZWxh dGlvbkdldEluZGV4QXR0ckJpdG1hcCByZXR1cm5zCisJCSAqIE5VTEwgd2l0aG91dCBzZXR0 aW5nIHJkX2F0dHJzdmFsaWQuICBNaXJyb3IgdGhhdCBoZXJlLgorCQkgKi8KKwkJaWYgKCFy ZWxhdGlvbi0+cmRfYXR0cnN2YWxpZCkKKwkJCXJldHVybiBOVUxMOworCX0KKworCXN3aXRj aCAoYXR0cktpbmQpCisJeworCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0tFWToKKwkJCXJl dHVybiByZWxhdGlvbi0+cmRfa2V5YXR0cjsKKwkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9Q UklNQVJZX0tFWToKKwkJCXJldHVybiByZWxhdGlvbi0+cmRfcGthdHRyOworCQljYXNlIElO REVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWToKKwkJCXJldHVybiByZWxhdGlvbi0+cmRf aWRhdHRyOworCQljYXNlIElOREVYX0FUVFJfQklUTUFQX0lOREVYRUQ6CisJCQlyZXR1cm4g cmVsYXRpb24tPnJkX2luZGV4ZWRhdHRyOworCQljYXNlIElOREVYX0FUVFJfQklUTUFQX1NV TU1BUklaRUQ6CisJCQlyZXR1cm4gcmVsYXRpb24tPnJkX3N1bW1hcml6ZWRhdHRyOworCQlj YXNlIElOREVYX0FUVFJfQklUTUFQX0VYUFJFU1NJT046CisJCQlyZXR1cm4gcmVsYXRpb24t PnJkX2V4cHJpbmRleGF0dHI7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5rbm93 biBhdHRyS2luZCAldSIsIGF0dHJLaW5kKTsKIAkJCXJldHVybiBOVUxMOwpAQCAtNjUwOCw2 ICs2NzIwLDcgQEAgbG9hZF9yZWxjYWNoZV9pbml0X2ZpbGUoYm9vbCBzaGFyZWQpCiAJCXJl bC0+cmRfcGFydGNoZWNrY3h0ID0gTlVMTDsKIAkJcmVsLT5yZF9pbmRleHBycyA9IE5JTDsK IAkJcmVsLT5yZF9pbmRwcmVkID0gTklMOworCQlyZWwtPnJkX2luZGF0dHIgPSBOVUxMOwog CQlyZWwtPnJkX2V4Y2xvcHMgPSBOVUxMOwogCQlyZWwtPnJkX2V4Y2xwcm9jcyA9IE5VTEw7 CiAJCXJlbC0+cmRfZXhjbHN0cmF0cyA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvYW1hcGkuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9hbWFwaS5oCmluZGV4IDc5 MjQwMzMzNTMwLi43YWVjMDgzYjhlZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNz L2FtYXBpLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2FtYXBpLmgKQEAgLTE0LDYgKzE0 LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy9jbXB0eXBlLmgiCiAjaW5jbHVkZSAiYWNjZXNz L2dlbmFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL2l0dXAuaCIKICNpbmNsdWRlICJhY2Nlc3Mv c3RyYXRudW0uaCIKICNpbmNsdWRlICJub2Rlcy9ub2Rlcy5oIgogI2luY2x1ZGUgIm5vZGVz L3BnX2xpc3QuaCIKQEAgLTI5LDcgKzMwLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhQYXRo IEluZGV4UGF0aDsKIC8qIExpa2V3aXNlLCB0aGlzIGZpbGUgc2hvdWxkbid0IGRlcGVuZCBv biBleGVjbm9kZXMuaC4gKi8KIHR5cGVkZWYgc3RydWN0IEluZGV4SW5mbyBJbmRleEluZm87 CiAKLQogLyoKICAqIFByb3BlcnRpZXMgZm9yIGFtcHJvcGVydHkgQVBJLiAgVGhpcyBsaXN0 IGNvdmVycyBwcm9wZXJ0aWVzIGtub3duIHRvIHRoZQogICogY29yZSBjb2RlLCBidXQgYW4g aW5kZXggQU0gY2FuIGRlZmluZSBpdHMgb3duIHByb3BlcnRpZXMsIGJ5IG1hdGNoaW5nIHRo ZQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDJkYmZhZDkyMTEzLi4xY2RmODkxMDU1YyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9oZWFwYW0uaApAQCAtMzg0LDExICszODQsNDUgQEAgZXh0ZXJuIFRNX1Jlc3Vs dCBoZWFwX2RlbGV0ZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRh ICp0aWQsCiAJCQkJCQkJIGJvb2wgd2FpdCwgVE1fRmFpbHVyZURhdGEgKnRtZmQpOwogZXh0 ZXJuIHZvaWQgaGVhcF9maW5pc2hfc3BlY3VsYXRpdmUoUmVsYXRpb24gcmVsYXRpb24sIGNv bnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlkKTsKIGV4dGVybiB2b2lkIGhlYXBfYWJvcnRfc3Bl Y3VsYXRpdmUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEl0ZW1Qb2ludGVyRGF0YSAqdGlk KTsKKworLyoKKyAqIEhlYXBVcGRhdGVJbmRleE1vZGUgLS0KKyAqCVRocmVlLXZhbHVlZCBj bGFzc2lmaWNhdGlvbiByZXR1cm5lZCBieSBIZWFwVXBkYXRlSG90QWxsb3dhYmxlKCkgdGhh dAorICoJdGVsbHMgaGVhcF91cGRhdGUoKSB3aGV0aGVyIGEgSE9UIHVwZGF0ZSBpcyBwZXJt aXR0ZWQgZm9yIHRoaXMgdHVwbGUgYW5kLAorICoJaWYgc28sIHdoZXRoZXIgdGhlIGluZGV4 ZXMgbWF5IGJlIG1haW50YWluZWQgc2VsZWN0aXZlbHkuCisgKgorICoJSEVBUF9VUERBVEVf QUxMX0lOREVYRVMKKyAqCQlIT1QgaXMgbm90IGFsbG93ZWQ7IHRoZSBuZXcgdHVwbGUgbXVz dCBnbyBvbiBpdHMgb3duIFRJRCBhbmQgZXZlcnkKKyAqCQlpbmRleCByZWNlaXZlcyBhIGZy ZXNoIGVudHJ5LiAgVGhpcyBpcyB0aGUgY2xhc3NpYyBwcmUtSE9ULWluZGV4ZWQKKyAqCQli ZWhhdmlvciBmb3IgdXBkYXRlcyB0aGF0IG1vZGlmeSBhIG5vbi1zdW1tYXJpemluZyBpbmRl eGVkIGF0dHJpYnV0ZS4KKyAqCisgKglIRUFQX0hFQVBfT05MWV9VUERBVEUKKyAqCQlDbGFz c2ljIEhPVCB1cGRhdGU6IG5vIG5vbi1zdW1tYXJpemluZyBpbmRleGVkIGF0dHJpYnV0ZSBj aGFuZ2VkIChvbmx5CisgKgkJc3VtbWFyaXppbmcgb25lcywgaWYgYW55KSwgc28gbm8gaW5k ZXggbmVlZHMgYSBuZXcgZW50cnkuCisgKgorICoJSEVBUF9TRUxFQ1RJVkVfSU5ERVhfVVBE QVRFCisgKgkJSE9UIHdpdGggc2VsZWN0aXZlIGluZGV4IHVwZGF0ZTogYXQgbGVhc3Qgb25l IG5vbi1zdW1tYXJpemluZyBpbmRleCdzCisgKgkJYXR0cmlidXRlIGNoYW5nZWQsIGJ1dCB0 aGUgbmV3IHR1cGxlIGNhbiBzdGlsbCBqb2luIHRoZSBIT1QgY2hhaW4gb24KKyAqCQl0aGUg c2FtZSBwYWdlOyBvbmx5IHRoZSBpbmRleGVzIHdob3NlIGF0dHJpYnV0ZXMgY2hhbmdlZCBy ZWNlaXZlIGEgbmV3CisgKgkJZW50cnkuICBBcyBmb3IgY2xhc3NpYyBIT1QsIGhlYXBfdXBk YXRlKCkgc3RpbGwgZmFsbHMgYmFjayB0byBhCisgKgkJbm9uLUhPVCB1cGRhdGUgaWYgdGhl IG5ldyB0dXBsZSBkb2VzIG5vdCBmaXQgb24gdGhlIHBhZ2UuCisgKgorICoJQ2FsbGVycyBz aG91bGQgc3BlbGwgdGhlIGV4YWN0IG1vZGUgdGhleSBjYXJlIGFib3V0OyB0aGUgbnVtZXJp YyB2YWx1ZXMKKyAqCWFyZSBub3QgbWVhbmluZ2Z1bCBhcyBhbiBvcmRlcmluZy4KKyAqLwor dHlwZWRlZiBlbnVtIEhlYXBVcGRhdGVJbmRleE1vZGUKK3sKKwlIRUFQX1VQREFURV9BTExf SU5ERVhFUyA9IDAsCisJSEVBUF9IRUFQX09OTFlfVVBEQVRFID0gMSwKKwlIRUFQX1NFTEVD VElWRV9JTkRFWF9VUERBVEUgPSAyLAorfSBIZWFwVXBkYXRlSW5kZXhNb2RlOworCiBleHRl cm4gVE1fUmVzdWx0IGhlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVt UG9pbnRlckRhdGEgKm90aWQsCiAJCQkJCQkJIEhlYXBUdXBsZSBuZXd0dXAsIENvbW1hbmRJ ZCBjaWQsIHVpbnQzMiBvcHRpb25zLAogCQkJCQkJCSBTbmFwc2hvdCBjcm9zc2NoZWNrLCBi b29sIHdhaXQsCiAJCQkJCQkJIFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBjb25zdCBMb2NrVHVw bGVNb2RlIGxvY2ttb2RlLAotCQkJCQkJCSBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVkX2lk eF9hdHRycywgY29uc3QgYm9vbCBob3RfYWxsb3dlZCk7CisJCQkJCQkJIGNvbnN0IEJpdG1h cHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzLAorCQkJCQkJCSBIZWFwVXBkYXRlSW5kZXhNb2Rl IGhvdF9tb2RlKTsKIGV4dGVybiBUTV9SZXN1bHQgaGVhcF9sb2NrX3R1cGxlKFJlbGF0aW9u IHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVwbGUsCiAJCQkJCQkJCSBDb21tYW5kSWQgY2lkLCBM b2NrVHVwbGVNb2RlIG1vZGUsIExvY2tXYWl0UG9saWN5IHdhaXRfcG9saWN5LAogCQkJCQkJ CQkgYm9vbCBmb2xsb3dfdXBkYXRlcywKQEAgLTQyMyw3ICs0NTcsNyBAQCBleHRlcm4gYm9v bCBoZWFwX3R1cGxlX25lZWRzX2V2ZW50dWFsX2ZyZWV6ZShIZWFwVHVwbGVIZWFkZXIgdHVw bGUpOwogZXh0ZXJuIHZvaWQgc2ltcGxlX2hlYXBfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9u LCBIZWFwVHVwbGUgdHVwKTsKIGV4dGVybiB2b2lkIHNpbXBsZV9oZWFwX2RlbGV0ZShSZWxh dGlvbiByZWxhdGlvbiwgY29uc3QgSXRlbVBvaW50ZXJEYXRhICp0aWQpOwogZXh0ZXJuIHZv aWQgc2ltcGxlX2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBjb25zdCBJdGVtUG9p bnRlckRhdGEgKm90aWQsCi0JCQkJCQkJICAgSGVhcFR1cGxlIHR1cCwgVFVfVXBkYXRlSW5k ZXhlcyAqdXBkYXRlX2luZGV4ZXMpOworCQkJCQkJCSAgIEhlYXBUdXBsZSB0dXAsIGJvb2wg KnVwZGF0ZV9hbGxfaW5kZXhlcyk7CiAKIGV4dGVybiBUcmFuc2FjdGlvbklkIGhlYXBfaW5k ZXhfZGVsZXRlX3R1cGxlcyhSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJCSAgVE1fSW5kZXhE ZWxldGVPcCAqZGVsc3RhdGUpOwpAQCAtNDM0LDcgKzQ2OCwxMCBAQCBleHRlcm4gdm9pZCBo ZWFwYW1faW5kZXhfZmV0Y2hfcmVzZXQoSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2Nhbik7CiBl eHRlcm4gdm9pZCBoZWFwYW1faW5kZXhfZmV0Y2hfZW5kKEluZGV4RmV0Y2hUYWJsZURhdGEg KnNjYW4pOwogZXh0ZXJuIGJvb2wgaGVhcF9ob3Rfc2VhcmNoX2J1ZmZlcihJdGVtUG9pbnRl ciB0aWQsIFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQkgICBCdWZmZXIgYnVmZmVyLCBT bmFwc2hvdCBzbmFwc2hvdCwgSGVhcFR1cGxlIGhlYXBUdXBsZSwKLQkJCQkJCQkJICAgYm9v bCAqYWxsX2RlYWQsIGJvb2wgZmlyc3RfY2FsbCk7CisJCQkJCQkJCSAgIGJvb2wgKmFsbF9k ZWFkLCBib29sIGZpcnN0X2NhbGwsCisJCQkJCQkJCSAgIGJvb2wgKmhvdF9pbmRleGVkX3Jl Y2hlY2ssCisJCQkJCQkJCSAgIHVpbnQ4ICpjcm9zc2VkX2JpdG1hcCwKKwkJCQkJCQkJICAg Ym9vbCAqcHJlZml4X2FsbF9kZWFkKTsKIGV4dGVybiBib29sIGhlYXBhbV9pbmRleF9mZXRj aF90dXBsZShzdHJ1Y3QgSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbiwKIAkJCQkJCQkJCSBJ dGVtUG9pbnRlciB0aWQsIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkJIFR1cGxlVGFi bGVTbG90ICpzbG90LCBib29sICpoZWFwX2NvbnRpbnVlLApAQCAtNDY0LDggKzUwMSw5IEBA IGV4dGVybiB2b2lkIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRp b24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCQkgIE9mZnNldE51bWJlciAqdW51c2VkLCBp bnQgbnVudXNlZCk7CiAKIC8qIGluIGhlYXAvaGVhcGFtLmMgKi8KLWV4dGVybiBib29sIEhl YXBVcGRhdGVIb3RBbGxvd2FibGUoUmVsYXRpb24gcmVsYXRpb24sIGNvbnN0IEJpdG1hcHNl dCAqbW9kaWZpZWRfaWR4X2F0dHJzLAotCQkJCQkJCQkgICBib29sICpzdW1tYXJpemVkX29u bHkpOworCitleHRlcm4gSGVhcFVwZGF0ZUluZGV4TW9kZSBIZWFwVXBkYXRlSG90QWxsb3dh YmxlKFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkJCQkJCQkJY29uc3QgQml0bWFwc2V0ICpt b2RpZmllZF9pZHhfYXR0cnMpOwogZXh0ZXJuIExvY2tUdXBsZU1vZGUgSGVhcFVwZGF0ZURl dGVybWluZUxvY2ttb2RlKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQkJCQkJIGNvbnN0 IEJpdG1hcHNldCAqbW9kaWZpZWRfaWR4X2F0dHJzKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL3JlbHNjYW4uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgK aW5kZXggMmVhMDZhNjdhNjMuLmZlNDQ2OTE3OGFhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvcmVsc2Nhbi5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgK QEAgLTEzNCw2ICsxMzQsNDUgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhGZXRjaFRhYmxlRGF0 YQogCSAqIHBlcm1pdHRlZC4KIAkgKi8KIAl1aW50MzIJCWZsYWdzOworCisJLyoKKwkgKiBT aWRlIGNoYW5uZWwgZm9yIHRhYmxlIEFNcyB3aG9zZSB1cGRhdGUgY2hhaW5zIGNhbiByZWFj aCBhIGRpZmZlcmVudAorCSAqIHNldCBvZiBpbmRleC1rZXkgdmFsdWVzIHRoYW4gdGhlIGFy cml2aW5nIGluZGV4IGVudHJ5IHJlY29yZGVkIChoZWFwJ3MKKwkgKiBIT1Qtc2VsZWN0aXZl bHktdXBkYXRlZCBjaGFpbnMpLiAgU2V0IHRydWUgYnkgdGhlIHRhYmxlIEFNIHdoZW4gdGhl CisJICogd2FsayB0byB0aGUgbGl2ZSB0dXBsZSBjcm9zc2VkIGEgSE9UL1NJVSBob3AgYWZ0 ZXIgdGhlIGVudHJ5J3Mgb3duCisJICogdHVwbGUsIG1lYW5pbmcgdGhlIGFycml2aW5nIGVu dHJ5J3Mgc3RvcmVkIGtleSBtYXkgbm8gbG9uZ2VyIG1hdGNoIHRoZQorCSAqIGxpdmUgdHVw bGUgYW5kIHRoZSBpbmRleC1hY2Nlc3MgbGF5ZXIgbXVzdCByZWNoZWNrIGl0LiAgTGVmdCBm YWxzZSB3aGVuCisJICogbm8gc3VjaCBob3Agd2FzIGNyb3NzZWQgKHRoZSBlbnRyeSBpcyBk ZWZpbml0ZWx5IGN1cnJlbnQpLCBhbmQgYWx3YXlzCisJICogZmFsc2UgZm9yIEFNcyB3aXRo b3V0IHN1Y2ggY2hhaW5zLgorCSAqLworCWJvb2wJCXhzX2hvdF9pbmRleGVkX3JlY2hlY2s7 CisKKwkvKgorCSAqIENvbXBhbmlvbiB0byB4c19ob3RfaW5kZXhlZF9yZWNoZWNrLiAgeHNf aG90X2luZGV4ZWRfY3Jvc3NlZCBpcyB0aGUKKwkgKiB1bmlvbiBvZiB0aGUgcGVyLWhvcCBt b2RpZmllZC1hdHRycyBiaXRtYXBzIHRoZSB3YWxrIGNyb3NzZWQgYWZ0ZXIgdGhlCisJICog ZW50cnkncyBvd24gdHVwbGUsIG92ZXIgaGVhcCBhdHRyaWJ1dGUgbnVtYmVycyAoYml0IGF0 dG51bS0xIGZvciBhCisJICogMS1iYXNlZCBhdHRudW0pLiAgVGhlIGluZGV4LWFjY2VzcyBs YXllciB0ZXN0cyBpdCBhZ2FpbnN0IHRoZSBhcnJpdmluZworCSAqIGluZGV4J3Mga2V5IGNv bHVtbnMgdG8ganVkZ2Ugc3RhbGVuZXNzIHdpdGhvdXQgYSBrZXkgY29tcGFyaXNvbjogYW55 CisJICogb3ZlcmxhcCBtZWFucyBhIGNyb3NzZWQgaG9wIGNoYW5nZWQgb25lIG9mIHRoZSBp bmRleCdzIGlucHV0cywgc28gdGhlCisJICogZW50cnkgaXMgc3RhbGUuICBUaGUgdW5pb24g aXMgY29tcGxldGUgKGV2ZXJ5IGNyb3NzZWQgbGl2ZSBob3AgYW5kCisJICogY29sbGFwc2Ut c3Vydml2b3Igc3R1YiBjb250cmlidXRlcyBpdHMgYml0bWFwLCBhbmQgY29sbGFwc2Ugb25s eQorCSAqIHJlY2xhaW1zIG1lbWJlcnMgc3Vic3VtZWQgYnkgc3Vydml2aW5nIGhvcHMpLCBz byBkaXNqb2ludG5lc3MgcmVsaWFibHkKKwkgKiBtZWFucyBmcmVzaC4gIEl0IGlzIE5VTEwg Zm9yIEFNcyB3aXRob3V0IHN1Y2ggY2hhaW5zIGFuZCBpcyBzaXplZCBieQorCSAqIHRoZSB0 YWJsZSBBTSBmb3IgdGhlIGhlYXAgcmVsYXRpb24ncyBjb2x1bW4gY291bnQuCisJICovCisJ dWludDgJICAgKnhzX2hvdF9pbmRleGVkX2Nyb3NzZWQ7CisKKwkvKgorCSAqIFNldCBieSB0 aGUgdGFibGUgQU0gd2hlbiBpdCByZXR1cm5zIGEgdHVwbGU6IHRydWUgaWZmIGV2ZXJ5IGNo YWluCisJICogbWVtYmVyIHRoZSB3YWxrIHNraXBwZWQgYmVmb3JlIHJlYWNoaW5nIHRoZSBy ZXR1cm5lZCAodmlzaWJsZSkgdHVwbGUgaXMKKwkgKiBkZWFkIHRvIGFsbCB0cmFuc2FjdGlv bnMgKGJlbG93IHRoZSBnbG9iYWwgeG1pbiBob3Jpem9uKS4gIENvbWJpbmVkCisJICogd2l0 aCBhIHN0YWxlIHZlcmRpY3QgKHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgb3Zlcmxh cHBlZCB0aGUKKwkgKiBpbmRleCdzIGtleSBjb2x1bW5zKSwgdGhpcyBsZXRzIHRoZSBpbmRl eC1hY2Nlc3MgbGF5ZXIKKwkgKiBraWxsIHRoZSBhcnJpdmluZyBsZWFmOiBubyBzbmFwc2hv dCBjYW4gcmVhY2ggYSBtYXRjaGluZyB2ZXJzaW9uCisJICogdGhyb3VnaCBpdCwgc28gaXQg aXMgcmVkdW5kYW50LiAgQU1zIHdpdGhvdXQgc3VjaCBjaGFpbnMgbGVhdmUgaXQKKwkgKiBm YWxzZS4KKwkgKi8KKwlib29sCQl4c19wcmVmaXhfYWxsX2RlYWQ7CiB9IEluZGV4RmV0Y2hU YWJsZURhdGE7CiAKIHN0cnVjdCBJbmRleFNjYW5JbnN0cnVtZW50YXRpb247CkBAIC0xNTQs NiArMTkzLDEzIEBAIHR5cGVkZWYgc3RydWN0IEluZGV4U2NhbkRlc2NEYXRhCiAJc3RydWN0 IFNjYW5LZXlEYXRhICprZXlEYXRhOwkvKiBhcnJheSBvZiBpbmRleCBxdWFsaWZpZXIgZGVz Y3JpcHRvcnMgKi8KIAlzdHJ1Y3QgU2NhbktleURhdGEgKm9yZGVyQnlEYXRhOwkvKiBhcnJh eSBvZiBvcmRlcmluZyBvcCBkZXNjcmlwdG9ycyAqLwogCWJvb2wJCXhzX3dhbnRfaXR1cDsJ LyogY2FsbGVyIHJlcXVlc3RzIGluZGV4IHR1cGxlcyAqLworCWJvb2wJCXhzX2luZGV4X29u bHk7CS8qIGNhbGxlciBpcyBhbiBpbmRleC1vbmx5IHNjYW4gdGhhdCBtYXkKKwkJCQkJCQkJ ICogcmV0dXJuIHR1cGxlcyB3aXRob3V0IGZldGNoaW5nIHRoZSBoZWFwOworCQkJCQkJCQkg KiBBTXMgbXVzdCByZXRhaW4gbGVhZi1wYWdlIHBpbnMgZm9yIHN1Y2gKKwkJCQkJCQkJICog c2NhbnMgKFZNIGFsbC12aXNpYmxlIC8gVElELXJlY3ljbGUgcmFjZSksCisJCQkJCQkJCSAq IHdoZXJlYXMgYSBwbGFpbiBzY2FuIHRoYXQgc2V0cyB4c193YW50X2l0dXAKKwkJCQkJCQkJ ICogb25seSB0byBpbnNwZWN0IHRoZSBpbmRleCB0dXBsZSBzdGlsbAorCQkJCQkJCQkgKiBm ZXRjaGVzIHRoZSBoZWFwIGFuZCBtYXkgZHJvcCBwaW5zICovCiAJYm9vbAkJeHNfdGVtcF9z bmFwOwkvKiB1bnJlZ2lzdGVyIHNuYXBzaG90IGF0IHNjYW4gZW5kPyAqLwogCiAJLyogc2ln bmFsaW5nIHRvIGluZGV4IEFNIGFib3V0IGtpbGxpbmcgaW5kZXggdHVwbGVzICovCkBAIC0x ODksNiArMjM1LDIwIEBAIHR5cGVkZWYgc3RydWN0IEluZGV4U2NhbkRlc2NEYXRhCiAKIAli b29sCQl4c19yZWNoZWNrOwkJLyogVCBtZWFucyBzY2FuIGtleXMgbXVzdCBiZSByZWNoZWNr ZWQgKi8KIAorCS8qCisJICogVCBtZWFucyB0aGUgaW5kZXggZW50cnkgdGhhdCByZWFjaGVk IHhzX2hlYXB0aWQgaXMgc3RhbGU6IHRoZSBIT1QgY2hhaW4KKwkgKiB3YWxrZWQgdG8gcmVh Y2ggdGhlIHR1cGxlIGNyb3NzZWQgYSBIT1Qtc2VsZWN0aXZlbHktdXBkYXRlZCAoSE9UL1NJ VSkKKwkgKiBob3AgdGhhdCBjaGFuZ2VkIGFuIGF0dHJpYnV0ZSB0aGlzIGluZGV4IGNvdmVy cywgc28gdGhlIGFycml2aW5nCisJICogZW50cnkncyBzdG9yZWQga2V5IG5vIGxvbmdlciBt YXRjaGVzIHRoZSBsaXZlIHR1cGxlLiAgVGhlIGV4ZWN1dG9yCisJICogZHJvcHMgc3VjaCBh IHR1cGxlOyB0aGUgcm93IGlzIHJlLXN1cHBsaWVkIGJ5IHRoZSBmcmVzaCBlbnRyeSBpbnNl cnRlZAorCSAqIGZvciB0aGUgbmV3IHZhbHVlLiAgVW5saWtlIHhzX3JlY2hlY2sgKHNldCBi eSBsb3NzeSBBTXMgc3VjaCBhcyBHaVNUCisJICogYW5kIEdJTiksIHRoaXMgaXMgY29tcHV0 ZWQgYnkgdGhlIGluZGV4LWFjY2VzcyBsYXllciBieSB0ZXN0aW5nIHRoZQorCSAqIGhlYXAg QU0ncyBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgKHhzX2hvdF9pbmRleGVkX2Nyb3NzZWQp IGFnYWluc3QKKwkgKiB0aGlzIGluZGV4J3Mga2V5IGNvbHVtbnM6IGFueSBvdmVybGFwIG1l YW5zIGEgY3Jvc3NlZCBob3AgY2hhbmdlZCBvbmUKKwkgKiBvZiB0aGUgaW5kZXgncyBpbnB1 dHMsIHNvIHRoZSBlbnRyeSBpcyBzdGFsZS4KKwkgKi8KKwlib29sCQl4c19ob3RfaW5kZXhl ZF9zdGFsZTsKKwogCS8qCiAJICogV2hlbiBmZXRjaGluZyB3aXRoIGFuIG9yZGVyaW5nIG9w ZXJhdG9yLCB0aGUgdmFsdWVzIG9mIHRoZSBPUkRFUiBCWQogCSAqIGV4cHJlc3Npb25zIG9m IHRoZSBsYXN0IHJldHVybmVkIHR1cGxlLCBhY2NvcmRpbmcgdG8gdGhlIGluZGV4LiAgSWYK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4IGE5Nzc4YjM1MjhkLi5lN2JkOWYzZTZmYyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oCkBAIC0xOSw2ICsxOSw3IEBACiAKICNpbmNsdWRlICJhY2Nl c3MvcmVsc2Nhbi5oIgogI2luY2x1ZGUgImFjY2Vzcy9zZGlyLmgiCisjaW5jbHVkZSAiYWNj ZXNzL3N5c2F0dHIuaCIKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImV4 ZWN1dG9yL3R1cHRhYmxlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9yZWFkX3N0cmVhbS5oIgpA QCAtMjgsNiArMjksMTggQEAKIAogI2RlZmluZSBERUZBVUxUX1RBQkxFX0FDQ0VTU19NRVRI T0QJImhlYXAiCiAKKy8qCisgKiBXaG9sZS1yb3cgc2VudGluZWwgZm9yIHRoZSBpbi9vdXQg bW9kaWZpZWQtYXR0cmlidXRlcyBzZXQgb2YKKyAqIHRhYmxlX3R1cGxlX3VwZGF0ZSgpLiAg T24gaW5wdXQgdGhlIGNhbGxlciBzdXBwbGllcyB0aGUgaW5kZXhlZCBhdHRyaWJ1dGVzCisg KiB3aG9zZSB2YWx1ZXMgY2hhbmdlZC4gIEEgdGFibGUgQU0gdGhhdCBzdG9yZWQgdGhlIG5l dyB0dXBsZSBhcyBhbgorICogaW5kZXBlbmRlbnQgdmVyc2lvbiBub3QgcmVhY2hhYmxlIHRo cm91Z2ggdGhlIGV4aXN0aW5nIGluZGV4IGVudHJpZXMgKGZvcgorICogaGVhcCwgYSBub24t SE9UIHVwZGF0ZSkgYWRkcyB0aGlzIHdob2xlLXJvdyBhdHRyaWJ1dGUgKGF0dHJpYnV0ZSBu dW1iZXIgMCwKKyAqIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIgY29udmVu dGlvbikgb24gb3V0cHV0LCBzaWduYWxsaW5nIHRoYXQKKyAqIGV2ZXJ5IGluZGV4IG5lZWRz IGEgbmV3IGVudHJ5LiAgRGlmZmluZyByZWFsIGNvbHVtbnMgbmV2ZXIgeWllbGRzIGF0dHJp YnV0ZQorICogMCwgc28gaXQgaXMgdW5hbWJpZ3VvdXMgYXMgdGhpcyBzZW50aW5lbC4KKyAq LworI2RlZmluZSBUYWJsZVR1cGxlVXBkYXRlQWxsSW5kZXhlcwkoMCAtIEZpcnN0TG93SW52 YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIpCisKIC8qIEdVQ3MgKi8KIGV4dGVybiBQR0RMTElN UE9SVCBjaGFyICpkZWZhdWx0X3RhYmxlX2FjY2Vzc19tZXRob2Q7CiBleHRlcm4gUEdETExJ TVBPUlQgYm9vbCBzeW5jaHJvbml6ZV9zZXFzY2FuczsKQEAgLTEyNSwyMiArMTM4LDYgQEAg dHlwZWRlZiBlbnVtIFRNX1Jlc3VsdAogCVRNX1dvdWxkQmxvY2ssCiB9IFRNX1Jlc3VsdDsK IAotLyoKLSAqIFJlc3VsdCBjb2RlcyBmb3IgdGFibGVfdXBkYXRlKC4uLiwgdXBkYXRlX2lu ZGV4ZXMqLi4pLgotICogVXNlZCB0byBkZXRlcm1pbmUgd2hpY2ggaW5kZXhlcyB0byB1cGRh dGUuCi0gKi8KLXR5cGVkZWYgZW51bSBUVV9VcGRhdGVJbmRleGVzCi17Ci0JLyogTm8gaW5k ZXhlZCBjb2x1bW5zIHdlcmUgdXBkYXRlZCAoaW5jbC4gVElEIGFkZHJlc3Npbmcgb2YgdHVw bGUpICovCi0JVFVfTm9uZSwKLQotCS8qIEEgbm9uLXN1bW1hcml6aW5nIGluZGV4ZWQgY29s dW1uIHdhcyB1cGRhdGVkLCBvciB0aGUgVElEIGhhcyBjaGFuZ2VkICovCi0JVFVfQWxsLAot Ci0JLyogT25seSBzdW1tYXJpemVkIGNvbHVtbnMgd2VyZSB1cGRhdGVkLCBUSUQgaXMgdW5j aGFuZ2VkICovCi0JVFVfU3VtbWFyaXppbmcsCi19IFRVX1VwZGF0ZUluZGV4ZXM7Ci0KIC8q CiAgKiBXaGVuIHRhYmxlX3R1cGxlX3VwZGF0ZSwgdGFibGVfdHVwbGVfZGVsZXRlLCBvciB0 YWJsZV90dXBsZV9sb2NrIGZhaWwKICAqIGJlY2F1c2UgdGhlIHRhcmdldCB0dXBsZSBpcyBh bHJlYWR5IG91dGRhdGVkLCB0aGV5IGZpbGwgaW4gdGhpcyBzdHJ1Y3QgdG8KQEAgLTQ4OCw2 ICs0ODUsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgVGFibGVBbVJvdXRpbmUKIAkgKiBpbmRleF9m ZXRjaF90dXBsZSBpZmYgaXQgaXMgZ3VhcmFudGVlZCB0aGF0IG5vIGJhY2tlbmQgbmVlZHMg dG8gc2VlCiAJICogdGhhdCB0dXBsZS4gSW5kZXggQU1zIGNhbiB1c2UgdGhhdCB0byBhdm9p ZCByZXR1cm5pbmcgdGhhdCB0aWQgaW4KIAkgKiBmdXR1cmUgc2VhcmNoZXMuCisJICoKKwkg KiBJZiBhIHR1cGxlIGlzIHJldHVybmVkIGFuZCB0aGUgdGFibGUgQU0gcmVhY2hlZCBpdCBi eSB3YWxraW5nIGEgSE9UCisJICogY2hhaW4gdGhhdCBjcm9zc2VkIGEgSE9ULXNlbGVjdGl2 ZWx5LXVwZGF0ZWQgKEhPVC9TSVUpIGhvcCBhZnRlciB0aGUKKwkgKiBhcnJpdmluZyBlbnRy eSdzIG93biB0dXBsZSwgaXQgc2V0cyBzY2FuLT54c19ob3RfaW5kZXhlZF9yZWNoZWNrIChz ZWUKKwkgKiBzdHJ1Y3QgSW5kZXhGZXRjaFRhYmxlRGF0YSkgdG8gdGVsbCB0aGUgaW5kZXgt YWNjZXNzIGxheWVyIHRvIHJlY2hlY2sKKwkgKiB0aGUgYXJyaXZpbmcgbGVhZiBrZXkgYWdh aW5zdCB0aGUgbGl2ZSB0dXBsZS4gIEFNcyB3aXRob3V0IHN1Y2ggdXBkYXRlCisJICogY2hh aW5zIGxlYXZlIGl0IGZhbHNlLgogCSAqLwogCWJvb2wJCSgqaW5kZXhfZmV0Y2hfdHVwbGUp IChzdHJ1Y3QgSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbiwKIAkJCQkJCQkJCSAgSXRlbVBv aW50ZXIgdGlkLApAQCAtNTg2LDggKzU5MCw3IEBAIHR5cGVkZWYgc3RydWN0IFRhYmxlQW1S b3V0aW5lCiAJCQkJCQkJCSBib29sIHdhaXQsCiAJCQkJCQkJCSBUTV9GYWlsdXJlRGF0YSAq dG1mZCwKIAkJCQkJCQkJIExvY2tUdXBsZU1vZGUgKmxvY2ttb2RlLAotCQkJCQkJCQkgY29u c3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMsCi0JCQkJCQkJCSBUVV9VcGRhdGVJ bmRleGVzICp1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJCSBCaXRtYXBzZXQgKiptb2RpZmll ZF9hdHRycyk7CiAKIAkvKiBzZWUgdGFibGVfdHVwbGVfbG9jaygpIGZvciByZWZlcmVuY2Ug YWJvdXQgcGFyYW1ldGVycyAqLwogCVRNX1Jlc3VsdAkoKnR1cGxlX2xvY2spIChSZWxhdGlv biByZWwsCkBAIC0xMzE5LDExICsxMzIyLDIwIEBAIHRhYmxlX2luZGV4X2ZldGNoX3R1cGxl KHN0cnVjdCBJbmRleEZldGNoVGFibGVEYXRhICpzY2FuLAogICogcmV0dXJucyB3aGV0aGVy IHRoZXJlIGFyZSB0YWJsZSB0dXBsZSBpdGVtcyBjb3JyZXNwb25kaW5nIHRvIGFuIGluZGV4 CiAgKiBlbnRyeS4gIFRoaXMgbGlrZWx5IGlzIG9ubHkgdXNlZnVsIHRvIHZlcmlmeSBpZiB0 aGVyZSdzIGEgY29uZmxpY3QgaW4gYQogICogdW5pcXVlIGluZGV4LgorICoKKyAqIElmIGtl ZXBfc2xvdCBpcyBub24tTlVMTCwgb24gYSBwb3NpdGl2ZSByZXN1bHQgdGhlIGZ1bmN0aW9u IHN0b3JlcyB0aGUKKyAqIGZldGNoZWQgdHVwbGUgaW50byAqa2VlcF9zbG90ICh3aGljaCBt dXN0IGJlIGEgdmFsaWQgc2xvdCBvZiB0aGUKKyAqIHJlbGF0aW9uJ3MgdHlwZSkgYW5kIHJl dHVybnMgd2l0aCB0aGUgc2xvdCBwb3B1bGF0ZWQ7IHRoZSBjYWxsZXIgaXMKKyAqIHJlc3Bv bnNpYmxlIGZvciBjbGVhcmluZyB0aGUgc2xvdC4gIFdoZW4ga2VlcF9zbG90IGlzIE5VTEwg YSB0ZW1wb3JhcnkKKyAqIHNsb3QgaXMgY3JlYXRlZCBpbnRlcm5hbGx5IGFuZCBkcm9wcGVk IGJlZm9yZSByZXR1cm4sIG1hdGNoaW5nIHRoZQorICogcHJlLWV4aXN0aW5nIGJlaGF2aW91 ci4KICAqLwogZXh0ZXJuIGJvb2wgdGFibGVfaW5kZXhfZmV0Y2hfdHVwbGVfY2hlY2soUmVs YXRpb24gcmVsLAogCQkJCQkJCQkJCSAgSXRlbVBvaW50ZXIgdGlkLAogCQkJCQkJCQkJCSAg U25hcHNob3Qgc25hcHNob3QsCi0JCQkJCQkJCQkJICBib29sICphbGxfZGVhZCk7CisJCQkJ CQkJCQkJICBib29sICphbGxfZGVhZCwKKwkJCQkJCQkJCQkgIGJvb2wgKmhvdF9pbmRleGVk X3JlY2hlY2tfb3V0LAorCQkJCQkJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKmtlZXBfc2xvdCk7 CiAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNTc0LDEyICsxNTg2LDIwIEBAIHRh YmxlX3R1cGxlX2RlbGV0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2ludGVyIHRpZCwgQ29tbWFu ZElkIGNpZCwKICAqCQlUQUJMRV9VUERBVEVfTk9fTE9HSUNBTCAtLSBmb3JjZS1kaXNhYmxl cyB0aGUgZW1pdHRpbmcgb2YgbG9naWNhbAogICoJCWRlY29kaW5nIGluZm9ybWF0aW9uIGZv ciB0aGUgdHVwbGUuCiAgKgorICogSW4gcGFyYW1ldGVyczoKKyAqCW1vZGlmaWVkX2F0dHJz IC0gaW4vb3V0OyBvbiBpbnB1dCwgdGhlIHNldCBvZiBpbmRleGVkIGF0dHJpYnV0ZXMgd2hv c2UKKyAqCQl2YWx1ZXMgY2hhbmdlZCAoRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51 bWJlciBjb252ZW50aW9uKS4gIEEKKyAqCQl0YWJsZSBBTSBtYXkgdXNlIHRoaXMgdG8gY2hv b3NlIGJldHdlZW4gSE9UIGFuZCBub24tSE9UIHN0b3JhZ2Ugb2YgdGhlCisgKgkJbmV3IHR1 cGxlLiAgT24gb3V0cHV0IHRoZSBBTSBhZGRzIHRoZSB3aG9sZS1yb3cgYXR0cmlidXRlCisg KgkJKFRhYmxlVHVwbGVVcGRhdGVBbGxJbmRleGVzKSBpZmYgaXQgc3RvcmVkIHRoZSBuZXcg dHVwbGUgYXMgYW4KKyAqCQlpbmRlcGVuZGVudCB2ZXJzaW9uIHJlcXVpcmluZyBhIGZyZXNo IGVudHJ5IGluIGV2ZXJ5IGluZGV4OyBvdGhlcndpc2UKKyAqCQl0aGUgY2FsbGVyIGNvbnN1 bHRzIGVhY2ggaW5kZXgncyBvd24gYXR0cmlidXRlcyBhZ2FpbnN0IHRoaXMgc2V0IHRvCisg KgkJZGVjaWRlIHBlciBpbmRleCAodGhlIHN0YW5kYXJkIEhPVCAvIHNlbGVjdGl2ZS1pbmRl eC11cGRhdGUgY2FzZXMpLgorICoKICAqIE91dHB1dCBwYXJhbWV0ZXJzOgogICoJc2xvdCAt IG5ld2x5IGNvbnN0cnVjdGVkIHR1cGxlIGRhdGEgdG8gc3RvcmUKICAqCXRtZmQgLSBmaWxs ZWQgaW4gZmFpbHVyZSBjYXNlcyAoc2VlIGJlbG93KQogICoJbG9ja21vZGUgLSBmaWxsZWQg d2l0aCBsb2NrIG1vZGUgYWNxdWlyZWQgb24gdHVwbGUKLSAqCXVwZGF0ZV9pbmRleGVzIC0g aW4gc3VjY2VzcyBjYXNlcyB0aGlzIGlzIHNldCBpZiBuZXcgaW5kZXggZW50cmllcwotICoJ CWFyZSByZXF1aXJlZCBmb3IgdGhpcyB0dXBsZTsgc2VlIFRVX1VwZGF0ZUluZGV4ZXMKICAq CiAgKiBOb3JtYWwsIHN1Y2Nlc3NmdWwgcmV0dXJuIHZhbHVlIGlzIFRNX09rLCB3aGljaCBt ZWFucyB3ZSBkaWQgYWN0dWFsbHkKICAqIHVwZGF0ZSBpdC4gIEZhaWx1cmUgcmV0dXJuIGNv ZGVzIGFyZSBUTV9TZWxmTW9kaWZpZWQsIFRNX1VwZGF0ZWQsIGFuZApAQCAtMTYwMCwxMiAr MTYyMCwxNCBAQCB0YWJsZV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsLCBJdGVtUG9pbnRl ciBvdGlkLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkgICBDb21tYW5kSWQgY2lkLCB1 aW50MzIgb3B0aW9ucywKIAkJCQkgICBTbmFwc2hvdCBzbmFwc2hvdCwgU25hcHNob3QgY3Jv c3NjaGVjaywKIAkJCQkgICBib29sIHdhaXQsIFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2Nr VHVwbGVNb2RlICpsb2NrbW9kZSwKLQkJCQkgICBjb25zdCBCaXRtYXBzZXQgKm1vZGlmaWVk X2lkeF9hdHRycywgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpCisJCQkJICAg Qml0bWFwc2V0ICoqbW9kaWZpZWRfYXR0cnMpCiB7CisJQXNzZXJ0KG1vZGlmaWVkX2F0dHJz ID09IE5VTEwgfHwKKwkJICAgIWJtc19pc19tZW1iZXIoVGFibGVUdXBsZVVwZGF0ZUFsbElu ZGV4ZXMsICptb2RpZmllZF9hdHRycykpOwogCXJldHVybiByZWwtPnJkX3RhYmxlYW0tPnR1 cGxlX3VwZGF0ZShyZWwsIG90aWQsIHNsb3QsCiAJCQkJCQkJCQkJIGNpZCwgb3B0aW9ucywg c25hcHNob3QsIGNyb3NzY2hlY2ssCiAJCQkJCQkJCQkJIHdhaXQsIHRtZmQsIGxvY2ttb2Rl LAotCQkJCQkJCQkJCSBtb2RpZmllZF9pZHhfYXR0cnMsIHVwZGF0ZV9pbmRleGVzKTsKKwkJ CQkJCQkJCQkgbW9kaWZpZWRfYXR0cnMpOwogfQogCiAvKgpAQCAtMjA5MCw4ICsyMTEyLDcg QEAgZXh0ZXJuIHZvaWQgc2ltcGxlX3RhYmxlX3R1cGxlX2RlbGV0ZShSZWxhdGlvbiByZWws IEl0ZW1Qb2ludGVyIHRpZCwKIAkJCQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QpOwogZXh0 ZXJuIHZvaWQgc2ltcGxlX3RhYmxlX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWwsIEl0ZW1Q b2ludGVyIG90aWQsCiAJCQkJCQkJCQkgIFR1cGxlVGFibGVTbG90ICpzbG90LCBTbmFwc2hv dCBzbmFwc2hvdCwKLQkJCQkJCQkJCSAgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhf YXR0cnMsCi0JCQkJCQkJCQkgIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKTsK KwkJCQkJCQkJCSAgQml0bWFwc2V0ICoqbW9kaWZpZWRfYXR0cnMpOwogCiAKIC8qIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWN1dG9yLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCmluZGV4IDE2NjYx YmM2NmQ5Li5lN2ZjY2RhZTMyZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv ZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC0x NSw2ICsxNSw3IEBACiAjZGVmaW5lIEVYRUNVVE9SX0gKIAogI2luY2x1ZGUgImFjY2Vzcy94 bG9nZGVmcy5oIgorI2luY2x1ZGUgImFjY2Vzcy9pdHVwLmgiCiAjaW5jbHVkZSAiZGF0YXR5 cGUvdGltZXN0YW1wLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2Rlc2MuaCIKICNpbmNs dWRlICJmbWdyLmgiCkBAIC03NTUsMTEgKzc1NiwxMyBAQCBleHRlcm4gQml0bWFwc2V0ICpF eGVjR2V0QWxsVXBkYXRlZENvbHMoUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywgRVN0YXRlICpl c3RhdGUpOwogICovCiBleHRlcm4gdm9pZCBFeGVjT3BlbkluZGljZXMoUmVzdWx0UmVsSW5m byAqcmVzdWx0UmVsSW5mbywgYm9vbCBzcGVjdWxhdGl2ZSk7CiBleHRlcm4gdm9pZCBFeGVj Q2xvc2VJbmRpY2VzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8pOworZXh0ZXJuIHZv aWQgRXhlY1NldEluZGV4VW5jaGFuZ2VkKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8s CisJCQkJCQkJCSAgY29uc3QgQml0bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMpOwogCiAv KiBmbGFncyBmb3IgRXhlY0luc2VydEluZGV4VHVwbGVzICovCiAjZGVmaW5lCQlFSUlUX0lT X1VQREFURQkJCSgxPDwwKQogI2RlZmluZQkJRUlJVF9OT19EVVBFX0VSUk9SCQkoMTw8MSkK LSNkZWZpbmUJCUVJSVRfT05MWV9TVU1NQVJJWklORwkoMTw8MikKKyNkZWZpbmUJCUVJSVRf SVNfSE9UX0lOREVYRUQJCSgxPDwyKQogZXh0ZXJuIExpc3QgKkV4ZWNJbnNlcnRJbmRleFR1 cGxlcyhSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLCBFU3RhdGUgKmVzdGF0ZSwKIAkJ CQkJCQkJICAgdWludDMyIGZsYWdzLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCQkJ ICAgTGlzdCAqYXJiaXRlckluZGV4ZXMsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IGU2 NGZkOGM3ZWEzLi4wYmJlNzFhMmE4OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMv ZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTIx NiwxMCArMjE2LDE0IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4SW5mbwogCWJvb2wJCWlpX051 bGxzTm90RGlzdGluY3Q7CiAJLyogaXMgaXQgdmFsaWQgZm9yIGluc2VydHM/ICovCiAJYm9v bAkJaWlfUmVhZHlGb3JJbnNlcnRzOwotCS8qIEluZGV4VW5jaGFuZ2VkIHN0YXR1cyBkZXRl cm1pbmVkIHlldD8gKi8KLQlib29sCQlpaV9DaGVja2VkVW5jaGFuZ2VkOwotCS8qIGFtaW5z ZXJ0IGhpbnQsIGNhY2hlZCBmb3IgcmV0YWlsIGluc2VydHMgKi8KKwkvKiBhbWluc2VydCBo aW50OiBpbmRleCBsb2dpY2FsbHkgdW5jaGFuZ2VkIGJ5IFVQREFURT8gIE5hcnJvdyBydWxl OiBrZXkKKwkgKiBjb2x1bW5zIG9ubHk7IElOQ0xVREUgY29sdW1ucyBhbmQgdGhlIHBhcnRp YWwtaW5kZXggcHJlZGljYXRlIGFyZSBub3QKKwkgKiBjb25zaWRlcmVkIChleHByZXNzaW9u IGluZGV4ZXMgYXJlIHRyZWF0ZWQgY29uc2VydmF0aXZlbHkpLiAqLwogCWJvb2wJCWlpX0lu ZGV4VW5jaGFuZ2VkOworCS8qIHNlbGVjdGl2ZSBVUERBVEU6IGRvZXMgdGhpcyBpbmRleCBu ZWVkIGEgbmV3IGVudHJ5PyAgV2lkZSBydWxlOiB0cnVlIGlmCisJICogYW55IGtleSwgSU5D TFVERSwgZXhwcmVzc2lvbiwgb3IgcHJlZGljYXRlIGNvbHVtbiBpdCByZWZlcmVuY2VzIGNo YW5nZWQKKwkgKiAob3IgdGhlIEFNIHN0b3JlZCBhbiBpbmRlcGVuZGVudCBuZXcgdmVyc2lv bikuICovCisJYm9vbAkJaWlfSW5kZXhOZWVkc1VwZGF0ZTsKIAkvKiBhcmUgd2UgZG9pbmcg YSBjb25jdXJyZW50IGluZGV4IGJ1aWxkPyAqLwogCWJvb2wJCWlpX0NvbmN1cnJlbnQ7CiAJ LyogZGlkIHdlIGRldGVjdCBhbnkgYnJva2VuIEhPVCBjaGFpbnM/ICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9wZ3N0YXQuaCBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCmluZGV4IDU4 YTQ0ODU3ZjEzLi4yOGI3OTM3MGYwZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGdzdGF0 LmgKKysrIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKQEAgLTE1MSw3ICsxNTEsMTkgQEAgdHlw ZWRlZiBzdHJ1Y3QgUGdTdGF0X1RhYmxlQ291bnRzCiAJUGdTdGF0X0NvdW50ZXIgdHVwbGVz X3VwZGF0ZWQ7CiAJUGdTdGF0X0NvdW50ZXIgdHVwbGVzX2RlbGV0ZWQ7CiAJUGdTdGF0X0Nv dW50ZXIgdHVwbGVzX2hvdF91cGRhdGVkOworCVBnU3RhdF9Db3VudGVyIHR1cGxlc19ob3Rf aW5kZXhlZF91cGRhdGVkOwogCVBnU3RhdF9Db3VudGVyIHR1cGxlc19uZXdwYWdlX3VwZGF0 ZWQ7CisKKwkvKgorCSAqIFBlci1pbmRleCBIT1QtaW5kZXhlZCB1cGRhdGUgY291bnRlcnMu ICBNYWludGFpbmVkIG9uIHBnc3RhdCBlbnRyaWVzCisJICoga2V5ZWQgb24gYW4gaW5kZXgg b2lkLCBub3Qgb24gdGhlIG93bmluZyB0YWJsZSdzIGVudHJ5LiAgVGhleSBjb3VudCBob3cK KwkgKiBtYW55IEhPVC1pbmRleGVkIHVwZGF0ZXMgc2tpcHBlZCB0aGlzIGluZGV4IChrZXkg dW5jaGFuZ2VkKSB2cy4KKwkgKiBpbnNlcnRlZCBhIGZyZXNoIGVudHJ5IChrZXkgY2hhbmdl ZCkuICBTdW1tYXJpemluZyBpbmRleGVzIGRvIG5vdAorCSAqIGNvbnRyaWJ1dGUgdG8gZWl0 aGVyIGNvdW50ZXIuCisJICovCisJUGdTdGF0X0NvdW50ZXIgdHVwbGVzX2hvdF9pbmRleGVk X3VwZF9za2lwcGVkOworCVBnU3RhdF9Db3VudGVyIHR1cGxlc19ob3RfaW5kZXhlZF91cGRf bWF0Y2hlZDsKKwogCWJvb2wJCXRydW5jZHJvcHBlZDsKIAogCVBnU3RhdF9Db3VudGVyIGRl bHRhX2xpdmVfdHVwbGVzOwpAQCAtMjE4LDcgKzIzMCw3IEBAIHR5cGVkZWYgc3RydWN0IFBn U3RhdF9UYWJsZVhhY3RTdGF0dXMKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKLSNkZWZpbmUgUEdTVEFU X0ZJTEVfRk9STUFUX0lECTB4MDFBNUJDQkMKKyNkZWZpbmUgUEdTVEFUX0ZJTEVfRk9STUFU X0lECTB4MDFBNUJDQkQKIAogdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X0FyY2hpdmVyU3RhdHMK IHsKQEAgLTQ2MCw4ICs0NzIsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1N0YXRUYWJF bnRyeQogCVBnU3RhdF9Db3VudGVyIHR1cGxlc191cGRhdGVkOwogCVBnU3RhdF9Db3VudGVy IHR1cGxlc19kZWxldGVkOwogCVBnU3RhdF9Db3VudGVyIHR1cGxlc19ob3RfdXBkYXRlZDsK KwlQZ1N0YXRfQ291bnRlciB0dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZDsKIAlQZ1N0YXRf Q291bnRlciB0dXBsZXNfbmV3cGFnZV91cGRhdGVkOwogCisJLyogUGVyLWluZGV4IEhPVC1p bmRleGVkIHVwZGF0ZSBjb3VudGVycyAoc2VlIFBnU3RhdF9UYWJsZUNvdW50cykuICovCisJ UGdTdGF0X0NvdW50ZXIgdHVwbGVzX2hvdF9pbmRleGVkX3VwZF9za2lwcGVkOworCVBnU3Rh dF9Db3VudGVyIHR1cGxlc19ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZDsKKwogCVBnU3RhdF9D b3VudGVyIGxpdmVfdHVwbGVzOwogCVBnU3RhdF9Db3VudGVyIGRlYWRfdHVwbGVzOwogCVBn U3RhdF9Db3VudGVyIG1vZF9zaW5jZV9hbmFseXplOwpAQCAtNzUyLDYgKzc2OSwxNiBAQCBl eHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X2FuYWx5emUoUmVsYXRpb24gcmVsLAogCQlpZiAo cGdzdGF0X3Nob3VsZF9jb3VudF9yZWxhdGlvbihyZWwpKQkJCQkJCVwKIAkJCShyZWwpLT5w Z3N0YXRfaW5mby0+Y291bnRzLnR1cGxlc19yZXR1cm5lZCArPSAobik7CQlcCiAJfSB3aGls ZSAoMCkKKyNkZWZpbmUgcGdzdGF0X2NvdW50X2hvdF9pbmRleGVkX3VwZF9za2lwcGVkKHJl bCkJCQkJCQlcCisJZG8gewkJCQkJCQkJCQkJCQkJCVwKKwkJaWYgKHBnc3RhdF9zaG91bGRf Y291bnRfcmVsYXRpb24ocmVsKSkJCQkJCQlcCisJCQkocmVsKS0+cGdzdGF0X2luZm8tPmNv dW50cy50dXBsZXNfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQrKztcCisJfSB3aGlsZSAoMCkK KyNkZWZpbmUgcGdzdGF0X2NvdW50X2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkKHJlbCkJCQkJ CQlcCisJZG8gewkJCQkJCQkJCQkJCQkJCVwKKwkJaWYgKHBnc3RhdF9zaG91bGRfY291bnRf cmVsYXRpb24ocmVsKSkJCQkJCQlcCisJCQkocmVsKS0+cGdzdGF0X2luZm8tPmNvdW50cy50 dXBsZXNfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQrKztcCisJfSB3aGlsZSAoMCkKICNkZWZp bmUgcGdzdGF0X2NvdW50X2J1ZmZlcl9yZWFkKHJlbCkJCQkJCQkJCVwKIAlkbyB7CQkJCQkJ CQkJCQkJCQkJXAogCQlpZiAocGdzdGF0X3Nob3VsZF9jb3VudF9yZWxhdGlvbihyZWwpKQkJ CQkJCVwKQEAgLTc2NCw3ICs3OTEsNyBAQCBleHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X2Fu YWx5emUoUmVsYXRpb24gcmVsLAogCX0gd2hpbGUgKDApCiAKIGV4dGVybiB2b2lkIHBnc3Rh dF9jb3VudF9oZWFwX2luc2VydChSZWxhdGlvbiByZWwsIFBnU3RhdF9Db3VudGVyIG4pOwot ZXh0ZXJuIHZvaWQgcGdzdGF0X2NvdW50X2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbCwgYm9v bCBob3QsIGJvb2wgbmV3cGFnZSk7CitleHRlcm4gdm9pZCBwZ3N0YXRfY291bnRfaGVhcF91 cGRhdGUoUmVsYXRpb24gcmVsLCBib29sIGhvdCwgYm9vbCBob3RfaW5kZXhlZCwgYm9vbCBu ZXdwYWdlKTsKIGV4dGVybiB2b2lkIHBnc3RhdF9jb3VudF9oZWFwX2RlbGV0ZShSZWxhdGlv biByZWwpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X2NvdW50X3RydW5jYXRlKFJlbGF0aW9uIHJl bCk7CiBleHRlcm4gdm9pZCBwZ3N0YXRfdXBkYXRlX2hlYXBfZGVhZF90dXBsZXMoUmVsYXRp b24gcmVsLCBpbnQgZGVsdGEpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVs LmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAppbmRleCAxZWY1YzE0NjVjNi4uYjYwYTUx MjU4YzQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCisrKyBiL3NyYy9p bmNsdWRlL3V0aWxzL3JlbC5oCkBAIC0xNjQsNiArMTY0LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg UmVsYXRpb25EYXRhCiAJQml0bWFwc2V0ICAqcmRfaWRhdHRyOwkJLyogaW5jbHVkZWQgaW4g cmVwbGljYSBpZGVudGl0eSBpbmRleCAqLwogCUJpdG1hcHNldCAgKnJkX2luZGV4ZWRhdHRy OyAvKiBhbGwgY29scyByZWZlcmVuY2VkIGJ5IGluZGV4ZXMgKi8KIAlCaXRtYXBzZXQgICpy ZF9zdW1tYXJpemVkYXR0cjsJLyogY29scyBpbmRleGVkIGJ5IHN1bW1hcml6aW5nIGluZGV4 ZXMgKi8KKwlCaXRtYXBzZXQgICpyZF9leHByaW5kZXhhdHRyOwkvKiBjb2xzIHJlZmVyZW5j ZWQgYnkgZXhwcmVzc2lvbiBpbmRleGVzICovCiAKIAlQdWJsaWNhdGlvbkRlc2MgKnJkX3B1 YmRlc2M7CS8qIHB1YmxpY2F0aW9uIGRlc2NyaXB0b3IsIG9yIE5VTEwgKi8KIApAQCAtMjE3 LDYgKzIxOCwxNiBAQCB0eXBlZGVmIHN0cnVjdCBSZWxhdGlvbkRhdGEKIAlPaWQJCSAgICpy ZF9pbmRjb2xsYXRpb247CS8qIE9JRHMgb2YgaW5kZXggY29sbGF0aW9ucyAqLwogCWJ5dGVh CSAgKipyZF9vcGNvcHRpb25zOwkvKiBwYXJzZWQgb3BjbGFzcy1zcGVjaWZpYyBvcHRpb25z ICovCiAKKwkvKgorCSAqIEJpdG1hcCBvZiBoZWFwIGF0dHJpYnV0ZSBudW1iZXJzIHJlZmVy ZW5jZWQgYnkgdGhpcyBpbmRleCAoc2ltcGxlIGtleXMsCisJICogSU5DTFVERSBjb2x1bW5z LCBleHByZXNzaW9uIGNvbHVtbnMsIGFuZCBwYXJ0aWFsLWluZGV4IHByZWRpY2F0ZQorCSAq IGNvbHVtbnMpLCBvZmZzZXQgYnkgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJl ci4gTGF6aWx5IGJ1aWx0IGJ5CisJICogUmVsYXRpb25HZXRJbmRleGVkQXR0cnMoKSBhbmQg Y2FjaGVkIGluIHJkX2luZGV4Y3h0LiBDb25zdW1lcnMgbXVzdAorCSAqIGJtc19jb3B5IGJl Zm9yZSByZWx5aW5nIG9uIHRoZSBwb2ludGVyIGJleW9uZCBhbnkgcG90ZW50aWFsCisJICog QWNjZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKSBjYWxsLgorCSAqLworCUJpdG1hcHNldCAg KnJkX2luZGF0dHI7CisKIAkvKgogCSAqIHJkX2FtY2FjaGUgaXMgYXZhaWxhYmxlIGZvciBp bmRleCBhbmQgdGFibGUgQU1zIHRvIGNhY2hlIHByaXZhdGUgZGF0YQogCSAqIGFib3V0IHRo ZSByZWxhdGlvbi4gIFRoaXMgbXVzdCBiZSBqdXN0IGEgY2FjaGUgc2luY2UgaXQgbWF5IGdl dCByZXNldApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaCBiL3Ny Yy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKaW5kZXggODk3ODgwOTE1NzYuLmEzODFhYTNl MDk1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oCisrKyBiL3Ny Yy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKQEAgLTYyLDYgKzYyLDE5IEBAIGV4dGVybiBM aXN0ICpSZWxhdGlvbkdldER1bW15SW5kZXhFeHByZXNzaW9ucyhSZWxhdGlvbiByZWxhdGlv bik7CiBleHRlcm4gTGlzdCAqUmVsYXRpb25HZXRJbmRleFByZWRpY2F0ZShSZWxhdGlvbiBy ZWxhdGlvbik7CiBleHRlcm4gYnl0ZWEgKipSZWxhdGlvbkdldEluZGV4QXR0T3B0aW9ucyhS ZWxhdGlvbiByZWxhdGlvbiwgYm9vbCBjb3B5KTsKIAorLyoKKyAqIFJlbGF0aW9uR2V0SW5k ZXhlZEF0dHJzIC0tIHJldHVybiBhIGZyZXNobHktcGFsbG9jJ2QgQml0bWFwc2V0IG9mIGV2 ZXJ5CisgKiBoZWFwIGF0dHJpYnV0ZSB0aGlzIGluZGV4IHJlZmVyZW5jZXMsIHZpYSBrZXlz LCBJTkNMVURFIGNvbHVtbnMsCisgKiBleHByZXNzaW9ucywgb3IgcGFydGlhbC1pbmRleCBw cmVkaWNhdGVzLgorICoKKyAqIFRoZSBhcmd1bWVudCBtdXN0IGJlIGFuIGluZGV4IFJlbGF0 aW9uIChub3QgaXRzIG93bmluZyBoZWFwKS4gIEF0dHJpYnV0ZQorICogbnVtYmVycyBhcmUg b2Zmc2V0IGJ5IEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIuICBUaGUgcmVz dWx0IGlzCisgKiBwYWxsb2MnZCBpbiB0aGUgY2FsbGVyJ3MgY29udGV4dDsgYm1zX2ZyZWUg d2hlbiBkb25lLiAgVGhlIHJlbGNhY2hlCisgKiBjYWNoZXMgaXRzIG93biBjb3B5IGluIHJk X2luZGV4Y3h0IHNvIHN1YnNlcXVlbnQgY2FsbHMgb25seSBwYXkgZm9yIHRoZQorICogZmlu YWwgYm1zX2NvcHkuCisgKi8KK2V4dGVybiBCaXRtYXBzZXQgKlJlbGF0aW9uR2V0SW5kZXhl ZEF0dHJzKFJlbGF0aW9uIGluZGV4UmVsKTsKKwogLyoKICAqIFdoaWNoIHNldCBvZiBjb2x1 bW5zIHRvIHJldHVybiBieSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcC4KICAqLwpAQCAt NzIsMTEgKzg1LDE1IEBAIHR5cGVkZWYgZW51bSBJbmRleEF0dHJCaXRtYXBLaW5kCiAJSU5E RVhfQVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZLAogCUlOREVYX0FUVFJfQklUTUFQX0lOREVY RUQsCiAJSU5ERVhfQVRUUl9CSVRNQVBfU1VNTUFSSVpFRCwKKwlJTkRFWF9BVFRSX0JJVE1B UF9FWFBSRVNTSU9OLAogfSBJbmRleEF0dHJCaXRtYXBLaW5kOwogCiBleHRlcm4gQml0bWFw c2V0ICpSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChSZWxhdGlvbiByZWxhdGlvbiwKIAkJ CQkJCQkJCQkJIEluZGV4QXR0ckJpdG1hcEtpbmQgYXR0cktpbmQpOwogCitleHRlcm4gY29u c3QgQml0bWFwc2V0ICpSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcE5vQ29weShSZWxhdGlv biByZWxhdGlvbiwKKwkJCQkJCQkJCQkJCQkJIEluZGV4QXR0ckJpdG1hcEtpbmQgYXR0cktp bmQpOworCiBleHRlcm4gQml0bWFwc2V0ICpSZWxhdGlvbkdldElkZW50aXR5S2V5Qml0bWFw KFJlbGF0aW9uIHJlbGF0aW9uKTsKIAogZXh0ZXJuIHZvaWQgUmVsYXRpb25HZXRFeGNsdXNp b25JbmZvKFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2hvdF91cGRhdGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvaG90X3VwZGF0ZXMub3V0CmluZGV4IDI3M2ZlMzMxMGRhLi4wNjk3OWVkMzFkMCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ob3RfdXBkYXRlcy5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ob3RfdXBkYXRlcy5vdXQKQEAgLTEs MTQ3ICsxLDEzMiBAQAogLS0KIC0tIEhPVF9VUERBVEVTCi0tLSBUZXN0IEhlYXAtT25seSBU dXBsZSAoSE9UKSB1cGRhdGUgZGVjaXNpb25zCistLSBUZXN0IGNsYXNzaWMgSGVhcC1Pbmx5 IFR1cGxlIChIT1QpIHVwZGF0ZSBkZWNpc2lvbnMKIC0tCi0tLSBUaGlzIHRlc3Qgc3lzdGVt YXRpY2FsbHkgdmVyaWZpZXMgdGhhdCBIT1QgdXBkYXRlcyBhcmUgdXNlZCB3aGVuIGFwcHJv cHJpYXRlCi0tLSBhbmQgYXZvaWRlZCB3aGVuIG5lY2Vzc2FyeSAoZS5nLiwgd2hlbiBpbmRl eGVkIGNvbHVtbnMgYXJlIG1vZGlmaWVkKS4KKy0tIFRoaXMgZmlsZSBjb3ZlcnMgSE9UIGRl Y2lzaW9ucyB0aGF0IGFwcGx5IGlkZW50aWNhbGx5IG9uIGEgcHJlLWhvdC1pbmRleGVkCist LSBzZXJ2ZXI6IGV2ZXJ5IFVQREFURSBoZXJlIGVpdGhlciBsZWF2ZXMgYWxsIGluZGV4ZWQg YXR0cmlidXRlcworLS0gdW5jaGFuZ2VkIG9yIHRvdWNoZXMgb25seSBzdW1tYXJpemluZy1p bmRleCAoQlJJTikgYXR0cmlidXRlcywgc28gdGhlCistLSBIT1QgdnMgbm9uLUhPVCBjaG9p Y2UgZG9lcyBub3QgZGVwZW5kIG9uIHdoZXRoZXIgU2VsZWN0aXZlIEluZGV4CistLSBVcGRh dGUgKGhvdC1pbmRleGVkKSBpcyBlbmFibGVkLiAgaG90LWluZGV4ZWQtc3BlY2lmaWMgYmVo YXZpb3VyIChVUERBVEVzIHRoYXQgbW9kaWZ5CistLSBhIG5vbi1zdW1tYXJpemluZyBpbmRl eGVkIGF0dHJpYnV0ZSkgaXMgY292ZXJlZCBpbgorLS0gaG90X2luZGV4ZWRfdXBkYXRlcy5z cWwuCiAtLQotLS0gV2UgdXNlIG11bHRpcGxlIHZhbGlkYXRpb24gbWV0aG9kczoKLS0tIDEu IFN0YXRpc3RpY3MgZnVuY3Rpb25zIChwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQp Ci0tLSAyLiBwYWdlaW5zcGVjdCBleHRlbnNpb24gZm9yIEhPVCBjaGFpbiBleGFtaW5hdGlv bgotLS0gMy4gRVhQTEFJTiB0byB2ZXJpZnkgaW5kZXggdXNhZ2UgYWZ0ZXIgdXBkYXRlcwor LS0gVmFsaWRhdGlvbiBtZXRob2RzOgorLS0gICAxLiBTdGF0aXN0aWNzIChwZ19zdGF0X2dl dF90dXBsZXNfaG90X3VwZGF0ZWQpCistLSAgIDIuIHBhZ2VpbnNwZWN0IGZvciBIT1QgY2hh aW4gc3RydWN0dXJlCistLSAgIDMuIEVYUExBSU4gdG8gY29uZmlybSB0aGUgcGxhbm5lciBz dGlsbCBwaWNrcyB0aGUgaW5kZXgKIC0tCiAtLSBMb2FkIHJlcXVpcmVkIGV4dGVuc2lvbnMK IENSRUFURSBFWFRFTlNJT04gSUYgTk9UIEVYSVNUUyBwYWdlaW5zcGVjdDsKLS0tIEZ1bmN0 aW9uIHRvIGdldCBIT1QgdXBkYXRlIGNvdW50CistLSBTdW0gb2YgY29tbWl0dGVkIGFuZCBp bi1wcm9ncmVzcyAobm9uLUhPVCwgSE9UKSB1cGRhdGUgY291bnRlcnMuCiBDUkVBVEUgT1Ig UkVQTEFDRSBGVU5DVElPTiBnZXRfaG90X2NvdW50KHJlbF9uYW1lIHRleHQpCiBSRVRVUk5T IFRBQkxFICgKICAgICB1cGRhdGVzIEJJR0lOVCwKICAgICBob3QgQklHSU5UCiApIEFTICQk CiBERUNMQVJFCi0gIHJlbF9vaWQgb2lkOworICAgIHJlbF9vaWQgb2lkOwogQkVHSU4KLSAg cmVsX29pZCA6PSByZWxfbmFtZTo6cmVnY2xhc3M6Om9pZDsKLQotICAtLSBSZWFkIGJvdGgg Y29tbWl0dGVkIGFuZCB0cmFuc2FjdGlvbi1sb2NhbCBzdGF0cwotICAtLSBJbiBhdXRvY29t bWl0IG1vZGUgKGRlZmF1bHQgZm9yIHJlZ3Jlc3Npb24gdGVzdHMpLCB0aGlzIHdvcmtzIGNv cnJlY3RseQotICAtLSBOb3RlOiBJbiBleHBsaWNpdCB0cmFuc2FjdGlvbnMgKEJFR0lOL0NP TU1JVCksIGNvbW1pdHRlZCBzdGF0cyBhbHJlYWR5Ci0gIC0tIGluY2x1ZGUgZmx1c2hlZCB1 cGRhdGVzLCBzbyB0aGlzIHdvdWxkIGRvdWJsZS1jb3VudC4gRm9yIGV4cGxpY2l0Ci0gIC0t IHRyYW5zYWN0aW9uIHRlc3RpbmcsIGNhbGwgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCkg YmVmb3JlIHRoaXMgZnVuY3Rpb24uCi0gIHVwZGF0ZXMgOj0gQ09BTEVTQ0UocGdfc3RhdF9n ZXRfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApICsKLSAgICAgICAgICAgICBDT0FMRVND RShwZ19zdGF0X2dldF94YWN0X3R1cGxlc191cGRhdGVkKHJlbF9vaWQpLCAwKTsKLSAgaG90 IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwg MCkgKwotICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3Vw ZGF0ZWQocmVsX29pZCksIDApOwotCi0gIFJFVFVSTiBORVhUOworICAgIHJlbF9vaWQgOj0g cmVsX25hbWU6OnJlZ2NsYXNzOjpvaWQ7CisgICAgdXBkYXRlcyA6PSBDT0FMRVNDRShwZ19z dGF0X2dldF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICAgICAg Q09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCk7 CisgICAgaG90IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZChy ZWxfb2lkKSwgMCkgKworICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1 cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCk7CisgICAgUkVUVVJOIE5FWFQ7CiBFTkQ7 CiAkJCBMQU5HVUFHRSBwbHBnc3FsOwotLS0gQ2hlY2sgaWYgYSB0dXBsZSBpcyBwYXJ0IG9m IGEgSE9UIGNoYWluIChoYXMgYSBwcmVkZWNlc3NvciBvbiBzYW1lIHBhZ2UpCistLSBUcnVl IGlmZiB0YXJnZXRfY3RpZCBpcyB0aGUgVEFJTCBvZiBhIEhPVCBjaGFpbiBvbiB0aGUgc2Ft ZSBwYWdlLgogQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gaGFzX2hvdF9jaGFpbihyZWxf bmFtZSB0ZXh0LCB0YXJnZXRfY3RpZCB0aWQpCiBSRVRVUk5TIGJvb2xlYW4gQVMgJCQKIERF Q0xBUkUKLSAgYmxvY2tfbnVtIGludDsKLSAgcGFnZV9pdGVtIHJlY29yZDsKKyAgICBibG9j a19udW0gaW50OworICAgIHBhZ2VfaXRlbSByZWNvcmQ7CiBCRUdJTgotICBibG9ja19udW0g Oj0gKHRhcmdldF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKLQotICAtLSBMb29rIGZv ciBhIGRpZmZlcmVudCB0dXBsZSBvbiB0aGUgc2FtZSBwYWdlIHRoYXQgcG9pbnRzIHRvIG91 ciB0YXJnZXQgdHVwbGUKLSAgRk9SIHBhZ2VfaXRlbSBJTgotICAgIFNFTEVDVCBscCwgbHBf ZmxhZ3MsIHRfY3RpZAotICAgIEZST00gaGVhcF9wYWdlX2l0ZW1zKGdldF9yYXdfcGFnZShy ZWxfbmFtZSwgYmxvY2tfbnVtKSkKLSAgICBXSEVSRSBscF9mbGFncyA9IDEKLSAgICAgIEFO RCB0X2N0aWQgSVMgTk9UIE5VTEwKLSAgICAgIEFORCB0X2N0aWQgPSB0YXJnZXRfY3RpZAot ICAgICAgQU5EICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBscDo6dGV4dCB8 fCAnKScpOjp0aWQgIT0gdGFyZ2V0X2N0aWQKLSAgTE9PUAotICAgIFJFVFVSTiB0cnVlOwot ICBFTkQgTE9PUDsKLQotICBSRVRVUk4gZmFsc2U7CisgICAgYmxvY2tfbnVtIDo9ICh0YXJn ZXRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQ7CisgICAgRk9SIHBhZ2VfaXRlbSBJTgor ICAgICAgICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICAgICAgRlJPTSBoZWFw X3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19udW0pKQorICAgICAg ICBXSEVSRSBscF9mbGFncyA9IDEKKyAgICAgICAgICBBTkQgdF9jdGlkIElTIE5PVCBOVUxM CisgICAgICAgICAgQU5EIHRfY3RpZCA9IHRhcmdldF9jdGlkCisgICAgICAgICAgQU5EICgn KCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBscDo6dGV4dCB8fCAnKScpOjp0aWQg IT0gdGFyZ2V0X2N0aWQKKyAgICBMT09QCisgICAgICAgIFJFVFVSTiB0cnVlOworICAgIEVO RCBMT09QOworICAgIFJFVFVSTiBmYWxzZTsKIEVORDsKICQkIExBTkdVQUdFIHBscGdzcWw7 Ci0tLSBQcmludCB0aGUgSE9UIGNoYWluIHN0YXJ0aW5nIGZyb20gYSBnaXZlbiB0dXBsZQor LS0gRW1pdCB0aGUgSE9UIGNoYWluIHJvb3RlZCBhdCBzdGFydF9jdGlkLgogQ1JFQVRFIE9S IFJFUExBQ0UgRlVOQ1RJT04gcHJpbnRfaG90X2NoYWluKHJlbF9uYW1lIHRleHQsIHN0YXJ0 X2N0aWQgdGlkKQogUkVUVVJOUyBUQUJMRShjaGFpbl9wb3NpdGlvbiBpbnQsIGN0aWQgdGlk LCBscF9mbGFncyB0ZXh0LCB0X2N0aWQgdGlkLCBjaGFpbl9lbmQgYm9vbGVhbikgQVMKICQk CiAjdmFyaWFibGVfY29uZmxpY3QgdXNlX2NvbHVtbgogREVDTEFSRQotICBibG9ja19udW0g aW50OwotICBsaW5lX3B0ciBpbnQ7Ci0gIGN1cnJlbnRfY3RpZCB0aWQgOj0gc3RhcnRfY3Rp ZDsKLSAgbmV4dF9jdGlkIHRpZDsKLSAgcG9zaXRpb24gaW50IDo9IDA7Ci0gIG1heF9pdGVy YXRpb25zIGludCA6PSAxMDA7Ci0gIHBhZ2VfaXRlbSByZWNvcmQ7Ci0gIGZvdW5kX3ByZWRl Y2Vzc29yIGJvb2xlYW4gOj0gZmFsc2U7Ci0gIGZsYWdzX25hbWUgdGV4dDsKKyAgICBibG9j a19udW0gaW50OworICAgIGxpbmVfcHRyIGludDsKKyAgICBjdXJyZW50X2N0aWQgdGlkIDo9 IHN0YXJ0X2N0aWQ7CisgICAgbmV4dF9jdGlkIHRpZDsKKyAgICBwb3NpdGlvbiBpbnQgOj0g MDsKKyAgICBtYXhfaXRlcmF0aW9ucyBpbnQgOj0gMTAwOworICAgIHBhZ2VfaXRlbSByZWNv cmQ7CisgICAgZm91bmRfcHJlZGVjZXNzb3IgYm9vbGVhbiA6PSBmYWxzZTsKKyAgICBmbGFn c19uYW1lIHRleHQ7CiBCRUdJTgotICBibG9ja19udW0gOj0gKHN0YXJ0X2N0aWQ6OnRleHQ6 OnBvaW50KVswXTo6aW50OwotCi0gIC0tIEZpbmQgdGhlIHByZWRlY2Vzc29yIChvbGQgdHVw bGUgcG9pbnRpbmcgdG8gb3VyIHN0YXJ0X2N0aWQpCi0gIEZPUiBwYWdlX2l0ZW0gSU4KLSAg ICBTRUxFQ1QgbHAsIGxwX2ZsYWdzLCB0X2N0aWQKLSAgICBGUk9NIGhlYXBfcGFnZV9pdGVt cyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCi0gICAgV0hFUkUgbHBfZmxh Z3MgPSAxCi0gICAgICBBTkQgdF9jdGlkID0gc3RhcnRfY3RpZAotICBMT09QCi0gICAgY3Vy cmVudF9jdGlkIDo9ICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBwYWdlX2l0 ZW0ubHA6OnRleHQgfHwgJyknKTo6dGlkOwotICAgIGZvdW5kX3ByZWRlY2Vzc29yIDo9IHRy dWU7Ci0gICAgRVhJVDsKLSAgRU5EIExPT1A7Ci0KLSAgLS0gSWYgbm8gcHJlZGVjZXNzb3Ig Zm91bmQsIHN0YXJ0IHdpdGggdGhlIGdpdmVuIGN0aWQKLSAgSUYgTk9UIGZvdW5kX3ByZWRl Y2Vzc29yIFRIRU4KLSAgICBjdXJyZW50X2N0aWQgOj0gc3RhcnRfY3RpZDsKLSAgRU5EIElG OwotCi0gIC0tIEZvbGxvdyB0aGUgY2hhaW4gZm9yd2FyZAotICBXSElMRSBwb3NpdGlvbiA8 IG1heF9pdGVyYXRpb25zIExPT1AKLSAgICBsaW5lX3B0ciA6PSAoY3VycmVudF9jdGlkOjp0 ZXh0Ojpwb2ludClbMV06OmludDsKKyAgICBibG9ja19udW0gOj0gKHN0YXJ0X2N0aWQ6OnRl eHQ6OnBvaW50KVswXTo6aW50OwogCiAgICAgRk9SIHBhZ2VfaXRlbSBJTgotICAgICAgU0VM RUNUIGxwLCBscF9mbGFncywgdF9jdGlkCi0gICAgICBGUk9NIGhlYXBfcGFnZV9pdGVtcyhn ZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkpCi0gICAgICBXSEVSRSBscCA9IGxp bmVfcHRyCisgICAgICAgIFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRfY3RpZAorICAgICAgICBG Uk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUsIGJsb2NrX251bSkp CisgICAgICAgIFdIRVJFIGxwX2ZsYWdzID0gMQorICAgICAgICAgIEFORCB0X2N0aWQgPSBz dGFydF9jdGlkCiAgICAgTE9PUAotICAgICAgLS0gTWFwIGxwX2ZsYWdzIHRvIG5hbWVzCi0g ICAgICBmbGFnc19uYW1lIDo9IENBU0UgcGFnZV9pdGVtLmxwX2ZsYWdzCi0gICAgICAgIFdI RU4gMCBUSEVOICd1bnVzZWQgKDApJwotICAgICAgICBXSEVOIDEgVEhFTiAnbm9ybWFsICgx KScKLSAgICAgICAgV0hFTiAyIFRIRU4gJ3JlZGlyZWN0ICgyKScKLSAgICAgICAgV0hFTiAz IFRIRU4gJ2RlYWQgKDMpJwotICAgICAgICBFTFNFICd1bmtub3duICgnIHx8IHBhZ2VfaXRl bS5scF9mbGFnczo6dGV4dCB8fCAnKScKLSAgICAgIEVORDsKLQotICAgICAgUkVUVVJOIFFV RVJZIFNFTEVDVAotICAgICAgICBwb3NpdGlvbiwKLSAgICAgICAgY3VycmVudF9jdGlkLAot ICAgICAgICBmbGFnc19uYW1lLAotICAgICAgICBwYWdlX2l0ZW0udF9jdGlkLAotICAgICAg ICAocGFnZV9pdGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQgPSBjdXJy ZW50X2N0aWQpOjpib29sZWFuCi0gICAgICA7Ci0KLSAgICAgIElGIHBhZ2VfaXRlbS50X2N0 aWQgSVMgTlVMTCBPUiBwYWdlX2l0ZW0udF9jdGlkID0gY3VycmVudF9jdGlkIFRIRU4KLSAg ICAgICAgUkVUVVJOOwotICAgICAgRU5EIElGOwotCi0gICAgICBuZXh0X2N0aWQgOj0gcGFn ZV9pdGVtLnRfY3RpZDsKLQotICAgICAgSUYgKG5leHRfY3RpZDo6dGV4dDo6cG9pbnQpWzBd OjppbnQgIT0gYmxvY2tfbnVtIFRIRU4KLSAgICAgICAgUkVUVVJOOwotICAgICAgRU5EIElG OwotCi0gICAgICBjdXJyZW50X2N0aWQgOj0gbmV4dF9jdGlkOwotICAgICAgcG9zaXRpb24g Oj0gcG9zaXRpb24gKyAxOworICAgICAgICBjdXJyZW50X2N0aWQgOj0gKCcoJyB8fCBibG9j a19udW06OnRleHQgfHwgJywnIHx8IHBhZ2VfaXRlbS5scDo6dGV4dCB8fCAnKScpOjp0aWQ7 CisgICAgICAgIGZvdW5kX3ByZWRlY2Vzc29yIDo9IHRydWU7CisgICAgICAgIEVYSVQ7CiAg ICAgRU5EIExPT1A7Ci0KLSAgICBJRiBwb3NpdGlvbiA9IDAgVEhFTgotICAgICAgUkVUVVJO OworICAgIElGIE5PVCBmb3VuZF9wcmVkZWNlc3NvciBUSEVOCisgICAgICAgIGN1cnJlbnRf Y3RpZCA6PSBzdGFydF9jdGlkOwogICAgIEVORCBJRjsKLSAgRU5EIExPT1A7CisKKyAgICBX SElMRSBwb3NpdGlvbiA8IG1heF9pdGVyYXRpb25zIExPT1AKKyAgICAgICAgbGluZV9wdHIg Oj0gKGN1cnJlbnRfY3RpZDo6dGV4dDo6cG9pbnQpWzFdOjppbnQ7CisgICAgICAgIEZPUiBw YWdlX2l0ZW0gSU4KKyAgICAgICAgICAgIFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRfY3RpZAor ICAgICAgICAgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1l LCBibG9ja19udW0pKQorICAgICAgICAgICAgV0hFUkUgbHAgPSBsaW5lX3B0cgorICAgICAg ICBMT09QCisgICAgICAgICAgICBmbGFnc19uYW1lIDo9IENBU0UgcGFnZV9pdGVtLmxwX2Zs YWdzCisgICAgICAgICAgICAgICAgV0hFTiAwIFRIRU4gJ3VudXNlZCAoMCknCisgICAgICAg ICAgICAgICAgV0hFTiAxIFRIRU4gJ25vcm1hbCAoMSknCisgICAgICAgICAgICAgICAgV0hF TiAyIFRIRU4gJ3JlZGlyZWN0ICgyKScKKyAgICAgICAgICAgICAgICBXSEVOIDMgVEhFTiAn ZGVhZCAoMyknCisgICAgICAgICAgICAgICAgRUxTRSAndW5rbm93biAoJyB8fCBwYWdlX2l0 ZW0ubHBfZmxhZ3M6OnRleHQgfHwgJyknCisgICAgICAgICAgICBFTkQ7CisgICAgICAgICAg ICBSRVRVUk4gUVVFUlkgU0VMRUNUCisgICAgICAgICAgICAgICAgcG9zaXRpb24sCisgICAg ICAgICAgICAgICAgY3VycmVudF9jdGlkLAorICAgICAgICAgICAgICAgIGZsYWdzX25hbWUs CisgICAgICAgICAgICAgICAgcGFnZV9pdGVtLnRfY3RpZCwKKyAgICAgICAgICAgICAgICAo cGFnZV9pdGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQgPSBjdXJyZW50 X2N0aWQpOjpib29sZWFuOworCisgICAgICAgICAgICBJRiBwYWdlX2l0ZW0udF9jdGlkIElT IE5VTEwgT1IgcGFnZV9pdGVtLnRfY3RpZCA9IGN1cnJlbnRfY3RpZCBUSEVOCisgICAgICAg ICAgICAgICAgUkVUVVJOOworICAgICAgICAgICAgRU5EIElGOworICAgICAgICAgICAgbmV4 dF9jdGlkIDo9IHBhZ2VfaXRlbS50X2N0aWQ7CisgICAgICAgICAgICBJRiAobmV4dF9jdGlk Ojp0ZXh0Ojpwb2ludClbMF06OmludCAhPSBibG9ja19udW0gVEhFTgorICAgICAgICAgICAg ICAgIFJFVFVSTjsKKyAgICAgICAgICAgIEVORCBJRjsKKyAgICAgICAgICAgIGN1cnJlbnRf Y3RpZCA6PSBuZXh0X2N0aWQ7CisgICAgICAgICAgICBwb3NpdGlvbiA6PSBwb3NpdGlvbiAr IDE7CisgICAgICAgIEVORCBMT09QOworICAgICAgICBJRiBwb3NpdGlvbiA9IDAgVEhFTgor ICAgICAgICAgICAgUkVUVVJOOworICAgICAgICBFTkQgSUY7CisgICAgRU5EIExPT1A7CiBF TkQ7CiAkJCBMQU5HVUFHRSBwbHBnc3FsOwotLS0gQmFzaWMgSE9UIHVwZGF0ZSAodXBkYXRl IG5vbi1pbmRleGVkIGNvbHVtbikKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMS4g QmFzaWMgSE9UOiB1cGRhdGUgb2YgYSBub24taW5kZXhlZCBjb2x1bW4KKy0tIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKICAgICBpZCBpbnQgUFJJ TUFSWSBLRVksCiAgICAgaW5kZXhlZF9jb2wgaW50LApAQCAtMTUxLDIzOSArMTM2LDIxOCBA QCBDUkVBVEUgSU5ERVggaG90X3Rlc3RfaW5kZXhlZF9pZHggT04gaG90X3Rlc3QoaW5kZXhl ZF9jb2wpOwogSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsICdpbml0aWFs Jyk7CiBJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsIDIwMCwgJ2luaXRpYWwnKTsK IElOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMywgMzAwLCAnaW5pdGlhbCcpOwotLS0g R2V0IGJhc2VsaW5lCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdf c3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwog IHVwZGF0ZXMgfCBob3QgCiAtLS0tLS0tLS0rLS0tLS0KICAgICAgICAwIHwgICAwCiAoMSBy b3cpCiAKLS0tIFNob3VsZCBiZSBIT1QgdXBkYXRlcyAob25seSBub24taW5kZXhlZCBjb2x1 bW4gbW9kaWZpZWQpCistLSBUaHJlZSBjbGFzc2ljIEhPVCB1cGRhdGVzIChub24taW5kZXhl ZCBjb2wpLgogVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRl ZDEnIFdIRVJFIGlkID0gMTsKIFVQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29s ID0gJ3VwZGF0ZWQyJyBXSEVSRSBpZCA9IDI7CiBVUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9p bmRleGVkX2NvbCA9ICd1cGRhdGVkMycgV0hFUkUgaWQgPSAzOwotLS0gVmVyaWZ5IEhPVCB1 cGRhdGVzIG9jY3VycmVkCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7Cisg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcp OwogIHVwZGF0ZXMgfCBob3QgCiAtLS0tLS0tLS0rLS0tLS0KICAgICAgICAzIHwgICAzCiAo MSByb3cpCiAKLS0tIER1bXAgdGhlIEhPVCBjaGFpbiBiZWZvcmUgVkFDVVVNaW5nCi1XSVRI IGN1cnJlbnRfdHVwbGUgQVMgKAotICBTRUxFQ1QgY3RpZCBGUk9NIGhvdF90ZXN0IFdIRVJF IGlkID0gMQotKQotU0VMRUNUCi0gIGhhc19ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVu dF90dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCi0gIGNoYWluX3Bvc2l0aW9uLAotICBwcmlu dF9ob3RfY2hhaW4uY3RpZCwKLSAgbHBfZmxhZ3MsCi0gIHRfY3RpZAotRlJPTSBjdXJyZW50 X3R1cGxlLAotTEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90 dXBsZS5jdGlkKTsKKy0tIENoYWluLW9mLTEgb24gaWQ9MSBzdGlsbCBoYXMgYSBwcmVkZWNl c3NvciBsaW5lIHBvaW50ZXIuCitXSVRIIGN1cnJlbnRfdHVwbGUgQVMgKFNFTEVDVCBjdGlk IEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAxKQorU0VMRUNUIGhhc19ob3RfY2hhaW4oJ2hv dF90ZXN0JywgY3VycmVudF90dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCisgICAgICAgY2hh aW5fcG9zaXRpb24sIHByaW50X2hvdF9jaGFpbi5jdGlkLCBscF9mbGFncywgdF9jdGlkCitG Uk9NIGN1cnJlbnRfdHVwbGUsIExBVEVSQUwgcHJpbnRfaG90X2NoYWluKCdob3RfdGVzdCcs IGN1cnJlbnRfdHVwbGUuY3RpZCk7CiAgaGFzX2NoYWluIHwgY2hhaW5fcG9zaXRpb24gfCBj dGlkICB8ICBscF9mbGFncyAgfCB0X2N0aWQgCiAtLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tCiAgdCAgICAgICAgIHwgICAgICAg ICAgICAgIDAgfCAoMCwxKSB8IG5vcm1hbCAoMSkgfCAoMCw0KQogIHQgICAgICAgICB8ICAg ICAgICAgICAgICAxIHwgKDAsNCkgfCBub3JtYWwgKDEpIHwgKDAsNCkKICgyIHJvd3MpCiAK LS0tIFZhY3V1bSB0aGUgcmVsYXRpb24sIGV4cGVjdCB0aGUgSE9UIGNoYWluIHRvIGNvbGxh cHNlCistLSBWQUNVVU0gY29sbGFwc2VzIHRoZSBjaGFpbi4KIFZBQ1VVTSBob3RfdGVzdDsK LS0tIFNob3cgdGhhdCB0aGVyZSBpcyBubyBjaGFpbiBhZnRlciB2YWN1dW0KLVdJVEggY3Vy cmVudF90dXBsZSBBUyAoCi0gIFNFTEVDVCBjdGlkIEZST00gaG90X3Rlc3QgV0hFUkUgaWQg PSAxCi0pCi1TRUxFQ1QKLSAgaGFzX2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1 cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwKLSAgY2hhaW5fcG9zaXRpb24sCi0gIHByaW50X2hv dF9jaGFpbi5jdGlkLAotICBscF9mbGFncywKLSAgdF9jdGlkCi1GUk9NIGN1cnJlbnRfdHVw bGUsCi1MQVRFUkFMIHByaW50X2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxl LmN0aWQpOworV0lUSCBjdXJyZW50X3R1cGxlIEFTIChTRUxFQ1QgY3RpZCBGUk9NIGhvdF90 ZXN0IFdIRVJFIGlkID0gMSkKK1NFTEVDVCBoYXNfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1 cnJlbnRfdHVwbGUuY3RpZCkgQVMgaGFzX2NoYWluLAorICAgICAgIGNoYWluX3Bvc2l0aW9u LCBwcmludF9ob3RfY2hhaW4uY3RpZCwgbHBfZmxhZ3MsIHRfY3RpZAorRlJPTSBjdXJyZW50 X3R1cGxlLCBMQVRFUkFMIHByaW50X2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJyZW50X3R1 cGxlLmN0aWQpOwogIGhhc19jaGFpbiB8IGNoYWluX3Bvc2l0aW9uIHwgY3RpZCAgfCAgbHBf ZmxhZ3MgIHwgdF9jdGlkIAogLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLQogIGYgICAgICAgICB8ICAgICAgICAgICAgICAwIHwg KDAsNCkgfCBub3JtYWwgKDEpIHwgKDAsNCkKICgxIHJvdykKIAotLS0gTm9uLUhPVCB1cGRh dGUgKHVwZGF0ZSBpbmRleGVkIGNvbHVtbikKLVVQREFURSBob3RfdGVzdCBTRVQgaW5kZXhl ZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAxOworRFJPUCBUQUJMRSBob3RfdGVzdDsKKy0tIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMi4gU3VtbWFyaXppbmcgaW5kZXhlcyAoQlJJTikg ZG8gbm90IGJsb2NrIEhPVAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFC TEUgaG90X3Rlc3QgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0cyB0aW1lc3Rh bXAsCisgICAgdmFsdWUgaW50LAorICAgIGJyaW5fY29sIGludAorKSBXSVRIIChmaWxsZmFj dG9yID0gNTApOworQ1JFQVRFIElOREVYIGhvdF90ZXN0X3RzX2JyaW4gT04gaG90X3Rlc3Qg VVNJTkcgYnJpbih0cyk7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfYnJpbl9jb2xfYnJpbiBP TiBob3RfdGVzdCBVU0lORyBicmluKGJyaW5fY29sKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMSwgJzIwMjQtMDEtMDEnLCAxMDAsIDEwMDApOworLS0gQlJJTiBjb2x1bW5z IGFyZSBzdW1tYXJpemluZzsgdXBkYXRpbmcgdGhlbSBzdGF5cyBjbGFzc2ljIEhPVCBldmVu CistLSB0aG91Z2ggdGhlaXIgdmFsdWVzIGNoYW5nZS4KK1VQREFURSBob3RfdGVzdCBTRVQg dHMgPSAnMjAyNC0wMS0wMicsIGJyaW5fY29sID0gMjAwMCBXSEVSRSBpZCA9IDE7CitTRUxF Q1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2Zs dXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwogU0VMRUNU ICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwogIHVwZGF0ZXMgfCBob3QgCiAt LS0tLS0tLS0rLS0tLS0KLSAgICAgICA0IHwgICAzCisgICAgICAgMSB8ICAgMQogKDEgcm93 KQogCi0tLSBWZXJpZnkgaW5kZXggd2FzIHVwZGF0ZWQgKG5ldyB2YWx1ZSBmaW5kYWJsZSkK LVNFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKLUVYUExBSU4gKENPU1RTIE9GRikgU0VMRUNU IGlkLCBpbmRleGVkX2NvbCBGUk9NIGhvdF90ZXN0IFdIRVJFIGluZGV4ZWRfY29sID0gMTUw OwotICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K LSBJbmRleCBTY2FuIHVzaW5nIGhvdF90ZXN0X2luZGV4ZWRfaWR4IG9uIGhvdF90ZXN0Ci0g ICBJbmRleCBDb25kOiAoaW5kZXhlZF9jb2wgPSAxNTApCi0oMiByb3dzKQotCi1TRUxFQ1Qg aWQsIGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7 Ci0gaWQgfCBpbmRleGVkX2NvbCAKLS0tLS0rLS0tLS0tLS0tLS0tLQotICAxIHwgICAgICAg ICAxNTAKKy0tIE5vbi1pbmRleGVkIGNvbHVtbjogYWxzbyBIT1QuCitVUERBVEUgaG90X3Rl c3QgU0VUIHZhbHVlID0gMjAwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNl X25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAogKDEgcm93KQogCi0tLSBWZXJpZnkgb2xkIHZhbHVlIG5v IGxvbmdlciBpbiBpbmRleAotRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQgRlJPTSBo b3RfdGVzdCBXSEVSRSBpbmRleGVkX2NvbCA9IDEwMDsKLSAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gSW5kZXggU2NhbiB1c2luZyBob3Rf dGVzdF9pbmRleGVkX2lkeCBvbiBob3RfdGVzdAotICAgSW5kZXggQ29uZDogKGluZGV4ZWRf Y29sID0gMTAwKQotKDIgcm93cykKLQotU0VMRUNUIGlkIEZST00gaG90X3Rlc3QgV0hFUkUg aW5kZXhlZF9jb2wgPSAxMDA7Ci0gaWQgCi0tLS0tCi0oMCByb3dzKQorU0VMRUNUICogRlJP TSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOworIHVwZGF0ZXMgfCBob3QgCistLS0tLS0t LS0rLS0tLS0KKyAgICAgICAyIHwgICAyCisoMSByb3cpCiAKLVJFU0VUIGVuYWJsZV9zZXFz Y2FuOwotLS0gQWxsLW9yLW5vbmUgcHJvcGVydHk6IHVwZGF0aW5nIG9uZSBpbmRleGVkIGNv bHVtbiByZXF1aXJlcyBBTEwgaW5kZXggdXBkYXRlcwogRFJPUCBUQUJMRSBob3RfdGVzdDsK Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMy4gVE9BU1QgcGFydGljaXBhdGVzIGlu IEhPVCAobm9uLWluZGV4ZWQgY29sdW1uIHBhdGhzIG9ubHkpCistLSAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIENSRUFURSBUQUJMRSBob3RfdGVzdCAoCiAgICAgaWQgaW50IFBSSU1BUlkg S0VZLAotICAgIGNvbF9hIGludCwKLSAgICBjb2xfYiBpbnQsCi0gICAgY29sX2MgaW50LAot ICAgIG5vbl9pbmRleGVkIHRleHQKKyAgICBpbmRleGVkX2NvbCBpbnQsCisgICAgbGFyZ2Vf dGV4dCB0ZXh0LAorICAgIHNtYWxsX3RleHQgdGV4dAogKSBXSVRIIChmaWxsZmFjdG9yID0g NTApOwotQ1JFQVRFIElOREVYIGhvdF90ZXN0X2FfaWR4IE9OIGhvdF90ZXN0KGNvbF9hKTsK LUNSRUFURSBJTkRFWCBob3RfdGVzdF9iX2lkeCBPTiBob3RfdGVzdChjb2xfYik7Ci1DUkVB VEUgSU5ERVggaG90X3Rlc3RfY19pZHggT04gaG90X3Rlc3QoY29sX2MpOwotSU5TRVJUIElO VE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMCwgMjAsIDMwLCAnaW5pdGlhbCcpOwotLS0gVXBk YXRlIG9ubHkgY29sX2EgLSBzaG91bGQgTk9UIGJlIEhPVCBiZWNhdXNlIGFuIGluZGV4ZWQg Y29sdW1uIGNoYW5nZWQKLS0tIFRoaXMgbWVhbnMgQUxMIGluZGV4ZXMgbXVzdCBiZSB1cGRh dGVkIChhbGwtb3Itbm9uZSBwcm9wZXJ0eSkKLVVQREFURSBob3RfdGVzdCBTRVQgY29sX2Eg PSAxNSBXSEVSRSBpZCA9IDE7CitDUkVBVEUgSU5ERVggaG90X3Rlc3RfaWR4IE9OIGhvdF90 ZXN0KGluZGV4ZWRfY29sKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAw LCByZXBlYXQoJ3gnLCAzMDAwKSwgJ3NtYWxsJyk7CistLSBOb24taW5kZXhlZCwgbm9uLVRP QVNUIGNvbHVtbjogSE9ULgorVVBEQVRFIGhvdF90ZXN0IFNFVCBzbWFsbF90ZXh0ID0gJ3Vw ZGF0ZWQnOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRf Zm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKICB1cGRh dGVzIHwgaG90IAogLS0tLS0tLS0tKy0tLS0tCi0gICAgICAgMSB8ICAgMAorICAgICAgIDEg fCAgIDEKKygxIHJvdykKKworLS0gVE9BU1QgY29sdW1uLCBpbmRleGVkX2NvbCB1bmNoYW5n ZWQ6IEhPVC4KK1VQREFURSBob3RfdGVzdCBTRVQgbGFyZ2VfdGV4dCA9IHJlcGVhdCgneScs IDMwMDApOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRf Zm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiAoMSBy b3cpCiAKLS0tIE5vdyB1cGRhdGUgb25seSBub24taW5kZXhlZCBjb2x1bW4gLSBzaG91bGQg YmUgSE9UCi1VUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkID0gJ3VwZGF0ZWQnOwog U0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwogIHVwZGF0ZXMgfCBo b3QgCiAtLS0tLS0tLS0rLS0tLS0KLSAgICAgICAyIHwgICAxCisgICAgICAgMiB8ICAgMgog KDEgcm93KQogCi0tLSBQYXJ0aWFsIGluZGV4OiBib3RoIG9sZCBhbmQgbmV3IG91dHNpZGUg cHJlZGljYXRlIChjb25zZXJ2YXRpdmUgPSBub24tSE9UKQogRFJPUCBUQUJMRSBob3RfdGVz dDsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNC4gUGFydGlhbCBpbmRleCB3aGVy ZSB1cGRhdGUgbGVhdmVzIGluZGV4ZWQgYXR0cnMgdW5jaGFuZ2VkCistLSAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KIENSRUFURSBUQUJMRSBob3RfdGVzdCAoCiAgICAgaWQgaW50IFBSSU1B UlkgS0VZLAogICAgIHN0YXR1cyB0ZXh0LAogICAgIGRhdGEgdGV4dAogKSBXSVRIIChmaWxs ZmFjdG9yID0gNTApOwotLS0gUGFydGlhbCBpbmRleCBvbmx5IGNvdmVycyBzdGF0dXMgPSAn YWN0aXZlJwogQ1JFQVRFIElOREVYIGhvdF90ZXN0X2FjdGl2ZV9pZHggT04gaG90X3Rlc3Qo c3RhdHVzKSBXSEVSRSBzdGF0dXMgPSAnYWN0aXZlJzsKIElOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMSwgJ2FjdGl2ZScsICdkYXRhMScpOwogSU5TRVJUIElOVE8gaG90X3Rlc3Qg VkFMVUVTICgyLCAnaW5hY3RpdmUnLCAnZGF0YTInKTsKIElOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMywgJ2RlbGV0ZWQnLCAnZGF0YTMnKTsKLS0tIFVwZGF0ZSBub24taW5kZXhl ZCBjb2x1bW4gb24gJ2FjdGl2ZScgcm93IChpbiBwcmVkaWNhdGUsIHN0YXR1cyB1bmNoYW5n ZWQpCi0tLSBTaG91bGQgYmUgSE9UCistLSBVcGRhdGUgZGF0YSBvbiBhIHJvdyB3aG9zZSBz dGF0dXMgbWF0Y2hlcyB0aGUgcGFydGlhbCBwcmVkaWNhdGU6IEhPVC4KIFVQREFURSBob3Rf dGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkMScgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0 YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKIFNFTEVDVCAqIEZST00g Z2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKICB1cGRhdGVzIHwgaG90IAogLS0tLS0tLS0t Ky0tLS0tCiAgICAgICAgMSB8ICAgMQogKDEgcm93KQogCi0tLSBVcGRhdGUgbm9uLWluZGV4 ZWQgY29sdW1uIG9uICdpbmFjdGl2ZScgcm93IChvdXRzaWRlIHByZWRpY2F0ZSkKLS0tIFNo b3VsZCBiZSBIT1QKKy0tIFVwZGF0ZSBkYXRhIG9uIGEgcm93IG91dHNpZGUgdGhlIHByZWRp Y2F0ZTogSE9ULgogVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQyJyBXSEVS RSBpZCA9IDI7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0g dXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDIgfCAgIDIKK1NFTEVD VCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1 c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAogKDEgcm93KQogCi0tLSBVcGRh dGUgc3RhdHVzIGZyb20gJ2luYWN0aXZlJyB0byAnZGVsZXRlZCcgKGJvdGggb3V0c2lkZSBw cmVkaWNhdGUpCi0tLSBQb3N0Z3JlU1FMIGlzIGNvbnNlcnZhdGl2ZTogaGVhcCBpbnNlcnQg aGFwcGVucyBiZWZvcmUgcHJlZGljYXRlIGNoZWNrCi0tLSBTbyB0aGlzIGlzIE5PTi1IT1Qg ZXZlbiB0aG91Z2ggYm90aCB2YWx1ZXMgYXJlIG91dHNpZGUgcHJlZGljYXRlCi1VUERBVEUg aG90X3Rlc3QgU0VUIHN0YXR1cyA9ICdkZWxldGVkJyBXSEVSRSBpZCA9IDI7CiBTRUxFQ1Qg KiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CiAgdXBkYXRlcyB8IGhvdCAKIC0t LS0tLS0tLSstLS0tLQotICAgICAgIDMgfCAgIDIKKyAgICAgICAyIHwgICAyCiAoMSByb3cp CiAKLS0tIFZlcmlmeSBpbmRleCBzdGlsbCB3b3JrcyBmb3IgJ2FjdGl2ZScgcm93cwogU0VM RUNUIGlkLCBzdGF0dXMgRlJPTSBob3RfdGVzdCBXSEVSRSBzdGF0dXMgPSAnYWN0aXZlJzsK ICBpZCB8IHN0YXR1cyAKIC0tLS0rLS0tLS0tLS0KICAgMSB8IGFjdGl2ZQogKDEgcm93KQog Ci0tLSBPbmx5IEJSSU4gKHN1bW1hcml6aW5nKSBpbmRleGVzIG9uIG5vbi1QSyBjb2x1bW5z CiBEUk9QIFRBQkxFIGhvdF90ZXN0OworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSA1 LiBNdWx0aS1jb2x1bW4gYnRyZWU6IHVwZGF0ZSBvZiBub24taW5kZXhlZCBjb2x1bW4KKy0t IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKICAgICBp ZCBpbnQgUFJJTUFSWSBLRVksCi0gICAgdHMgdGltZXN0YW1wLAotICAgIHZhbHVlIGludCwK LSAgICBicmluX2NvbCBpbnQKLSkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKLUNSRUFURSBJ TkRFWCBob3RfdGVzdF90c19icmluIE9OIGhvdF90ZXN0IFVTSU5HIGJyaW4odHMpOwotQ1JF QVRFIElOREVYIGhvdF90ZXN0X2JyaW5fY29sX2JyaW4gT04gaG90X3Rlc3QgVVNJTkcgYnJp bihicmluX2NvbCk7Ci1JTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsICcyMDI0LTAx LTAxJywgMTAwLCAxMDAwKTsKLS0tIFVwZGF0ZSBib3RoIEJSSU4gY29sdW1ucyAtIHNob3Vs ZCBzdGlsbCBiZSBIT1QgKG9ubHkgc3VtbWFyaXppbmcgaW5kZXhlcykKLVVQREFURSBob3Rf dGVzdCBTRVQgdHMgPSAnMjAyNC0wMS0wMicsIGJyaW5fY29sID0gMjAwMCBXSEVSRSBpZCA9 IDE7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0gdXBkYXRl cyB8IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDEgfCAgIDEKLSgxIHJvdykKLQot LS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiAtIHNob3VsZCBhbHNvIGJlIEhPVAotVVBE QVRFIGhvdF90ZXN0IFNFVCB2YWx1ZSA9IDIwMCBXSEVSRSBpZCA9IDE7Ci1TRUxFQ1QgKiBG Uk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0t LS0tLSstLS0tLQotICAgICAgIDIgfCAgIDIKLSgxIHJvdykKLQotLS0gVE9BU1QgYW5kIEhP VDogVE9BU1RlZCBjb2x1bW5zIGNhbiBwYXJ0aWNpcGF0ZSBpbiBIT1QKLURST1AgVEFCTEUg aG90X3Rlc3Q7Ci1DUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAotICAgIGlkIGludCBQUklNQVJZ IEtFWSwKLSAgICBpbmRleGVkX2NvbCBpbnQsCi0gICAgbGFyZ2VfdGV4dCB0ZXh0LAotICAg IHNtYWxsX3RleHQgdGV4dAorICAgIGNvbF9hIGludCwKKyAgICBjb2xfYiBpbnQsCisgICAg Y29sX2MgaW50LAorICAgIGRhdGEgdGV4dAogKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwot Q1JFQVRFIElOREVYIGhvdF90ZXN0X2lkeCBPTiBob3RfdGVzdChpbmRleGVkX2NvbCk7Ci0t LSBJbnNlcnQgcm93IHdpdGggVE9BU1RlZCBjb2x1bW4gKD4gMktCKQotSU5TRVJUIElOVE8g aG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsIHJlcGVhdCgneCcsIDMwMDApLCAnc21hbGwnKTsK LS0tIFVwZGF0ZSBub24taW5kZXhlZCwgbm9uLVRPQVNUZWQgY29sdW1uIC0gc2hvdWxkIGJl IEhPVAotVVBEQVRFIGhvdF90ZXN0IFNFVCBzbWFsbF90ZXh0ID0gJ3VwZGF0ZWQnOwotU0VM RUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwotIHVwZGF0ZXMgfCBob3Qg Ci0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICAxIHwgICAxCitDUkVBVEUgSU5ERVggaG90X3Rl c3RfYWJfaWR4IE9OIGhvdF90ZXN0KGNvbF9hLCBjb2xfYik7CitJTlNFUlQgSU5UTyBob3Rf dGVzdCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsICdkYXRhJyk7CistLSBjb2xfYyBub3QgaW4g YW55IGluZGV4OiBIT1QuCitVUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9jID0gMzU7CistLSBk YXRhIG5vdCBpbiBhbnkgaW5kZXg6IEhPVC4KK1VQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9 ICd1cGRhdGVkJzsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19z dGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAog KDEgcm93KQogCi0tLSBVcGRhdGUgVE9BU1RlZCBjb2x1bW4gLSBzaG91bGQgYmUgSE9UIGlm IGluZGV4ZWQgY29sdW1uIHVuY2hhbmdlZAotVVBEQVRFIGhvdF90ZXN0IFNFVCBsYXJnZV90 ZXh0ID0gcmVwZWF0KCd5JywgMzAwMCk7CiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQo J2hvdF90ZXN0Jyk7CiAgdXBkYXRlcyB8IGhvdCAKIC0tLS0tLS0tLSstLS0tLQogICAgICAg IDIgfCAgIDIKICgxIHJvdykKIAotLS0gVXBkYXRlIGluZGV4ZWQgY29sdW1uIC0gc2hvdWxk IE5PVCBiZSBIT1QKLVVQREFURSBob3RfdGVzdCBTRVQgaW5kZXhlZF9jb2wgPSAyMDA7Ci1T RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhv dCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDMgfCAgIDIKLSgxIHJvdykKLQotLS0gVW5p cXVlIGNvbnN0cmFpbnQgKHVuaXF1ZSBpbmRleCkgYmVoYXZlcyBsaWtlIHJlZ3VsYXIgaW5k ZXgKIERST1AgVEFCTEUgaG90X3Rlc3Q7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0t IDYuIFVuaXF1ZSBpbmRleDogdXBkYXRlIG9mIG5vbi1pbmRleGVkIGNvbHVtbiArIHVuaXF1 ZW5lc3MgZW5mb3JjZW1lbnQKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRB QkxFIGhvdF90ZXN0ICgKICAgICBpZCBpbnQgUFJJTUFSWSBLRVksCiAgICAgdW5pcXVlX2Nv bCBpbnQgVU5JUVVFLApAQCAtMzkxLDE1ICszNTUsMTkgQEAgQ1JFQVRFIFRBQkxFIGhvdF90 ZXN0ICgKICkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKIElOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMSwgMTAwLCAnZGF0YTEnKTsKIElOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVF UyAoMiwgMjAwLCAnZGF0YTInKTsKLS0tIFVwZGF0ZSBkYXRhIChub24taW5kZXhlZCkgLSBz aG91bGQgYmUgSE9UCiBVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZCc7CitT RUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0 X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwogU0VM RUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwogIHVwZGF0ZXMgfCBob3Qg CiAtLS0tLS0tLS0rLS0tLS0KICAgICAgICAyIHwgICAyCiAoMSByb3cpCiAKLS0tIFZlcmlm eSB1bmlxdWUgY29uc3RyYWludCBzdGlsbCBlbmZvcmNlZAogU0VMRUNUIGlkLCB1bmlxdWVf Y29sLCBkYXRhIEZST00gaG90X3Rlc3QgT1JERVIgQlkgaWQ7CiAgaWQgfCB1bmlxdWVfY29s IHwgIGRhdGEgICAKIC0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLQpAQCAtNDA3LDYwICsz NzUsMTQgQEAgU0VMRUNUIGlkLCB1bmlxdWVfY29sLCBkYXRhIEZST00gaG90X3Rlc3QgT1JE RVIgQlkgaWQ7CiAgIDIgfCAgICAgICAgMjAwIHwgdXBkYXRlZAogKDIgcm93cykKIAotLS0g VGhpcyBzaG91bGQgZmFpbCAodW5pcXVlIHZpb2xhdGlvbikKKy0tIFVuaXF1ZSBjb25zdHJh aW50IHN0aWxsIGVuZm9yY2VkIG9uIGFueSBwYXRoLgogVVBEQVRFIGhvdF90ZXN0IFNFVCB1 bmlxdWVfY29sID0gMTAwIFdIRVJFIGlkID0gMjsKIEVSUk9SOiAgZHVwbGljYXRlIGtleSB2 YWx1ZSB2aW9sYXRlcyB1bmlxdWUgY29uc3RyYWludCAiaG90X3Rlc3RfdW5pcXVlX2NvbF9r ZXkiCiBERVRBSUw6ICBLZXkgKHVuaXF1ZV9jb2wpPSgxMDApIGFscmVhZHkgZXhpc3RzLgot LS0gTXVsdGktY29sdW1uIGluZGV4OiBhbnkgY29sdW1uIGNoYW5nZSA9IG5vbi1IT1QKIERS T1AgVEFCTEUgaG90X3Rlc3Q7Ci1DUkVBVEUgVEFCTEUgaG90X3Rlc3QgKAotICAgIGlkIGlu dCBQUklNQVJZIEtFWSwKLSAgICBjb2xfYSBpbnQsCi0gICAgY29sX2IgaW50LAotICAgIGNv bF9jIGludCwKLSAgICBkYXRhIHRleHQKLSkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKLUNS RUFURSBJTkRFWCBob3RfdGVzdF9hYl9pZHggT04gaG90X3Rlc3QoY29sX2EsIGNvbF9iKTsK LUlOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAsIDIwLCAzMCwgJ2RhdGEnKTsK LS0tIFVwZGF0ZSBjb2xfYSAocGFydCBvZiBtdWx0aS1jb2x1bW4gaW5kZXgpIC0gc2hvdWxk IE5PVCBiZSBIT1QKLVVQREFURSBob3RfdGVzdCBTRVQgY29sX2EgPSAxNTsKLVNFTEVDVCAq IEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKLSB1cGRhdGVzIHwgaG90IAotLS0t LS0tLS0tKy0tLS0tCi0gICAgICAgMSB8ICAgMAotKDEgcm93KQotCi0tLSBSZXNldAotVVBE QVRFIGhvdF90ZXN0IFNFVCBjb2xfYSA9IDEwOwotLS0gVXBkYXRlIGNvbF9iIChwYXJ0IG9m IG11bHRpLWNvbHVtbiBpbmRleCkgLSBzaG91bGQgTk9UIGJlIEhPVAotVVBEQVRFIGhvdF90 ZXN0IFNFVCBjb2xfYiA9IDI1OwotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf dGVzdCcpOwotIHVwZGF0ZXMgfCBob3QgCi0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICAzIHwg ICAwCi0oMSByb3cpCi0KLS0tIFJlc2V0Ci1VUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9iID0g MjA7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7Ci0gdXBkYXRl cyB8IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDQgfCAgIDAKLSgxIHJvdykKLQot LS0gVXBkYXRlIGNvbF9jIChub3QgaW5kZXhlZCkgLSBzaG91bGQgYmUgSE9UCi1VUERBVEUg aG90X3Rlc3QgU0VUIGNvbF9jID0gMzU7Ci0tLSBVcGRhdGUgZGF0YSAobm90IGluZGV4ZWQp IC0gc2hvdWxkIGJlIEhPVAotVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQn OwotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwotIHVwZGF0ZXMg fCBob3QgCi0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICA2IHwgICAyCi0oMSByb3cpCi0KLS0t IFBhcnRpdGlvbmVkIHRhYmxlczogSE9UIHdvcmtzIHdpdGhpbiBwYXJ0aXRpb25zCi1EUk9Q IFRBQkxFIElGIEVYSVNUUyBob3RfdGVzdF9wYXJ0aXRpb25lZCBDQVNDQURFOwotTk9USUNF OiAgdGFibGUgImhvdF90ZXN0X3BhcnRpdGlvbmVkIiBkb2VzIG5vdCBleGlzdCwgc2tpcHBp bmcKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNy4gUGFydGl0aW9uZWQgdGFibGVz OiBIT1Qgd2l0aGluIGEgcGFydGl0aW9uCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIENS RUFURSBUQUJMRSBob3RfdGVzdF9wYXJ0aXRpb25lZCAoCiAgICAgaWQgaW50LAogICAgIHBh cnRpdGlvbl9rZXkgaW50LApAQCAtNDc1LDIzICszOTcsMzIgQEAgQ1JFQVRFIFRBQkxFIGhv dF90ZXN0X3BhcnQyIFBBUlRJVElPTiBPRiBob3RfdGVzdF9wYXJ0aXRpb25lZAogQ1JFQVRF IElOREVYIGhvdF90ZXN0X3BhcnRfaWR4IE9OIGhvdF90ZXN0X3BhcnRpdGlvbmVkKGluZGV4 ZWRfY29sKTsKIElOU0VSVCBJTlRPIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFZBTFVFUyAoMSwg NTAsIDEwMCwgJ2luaXRpYWwxJyk7CiBJTlNFUlQgSU5UTyBob3RfdGVzdF9wYXJ0aXRpb25l ZCBWQUxVRVMgKDIsIDE1MCwgMjAwLCAnaW5pdGlhbDInKTsKLS0tIFVwZGF0ZSBpbiBwYXJ0 aXRpb24gMSAobm9uLWluZGV4ZWQgY29sdW1uKSAtIHNob3VsZCBiZSBIT1QKIFVQREFURSBo b3RfdGVzdF9wYXJ0aXRpb25lZCBTRVQgZGF0YSA9ICd1cGRhdGVkMScgV0hFUkUgaWQgPSAx OwotLS0gVXBkYXRlIGluIHBhcnRpdGlvbiAyIChub24taW5kZXhlZCBjb2x1bW4pIC0gc2hv dWxkIGJlIEhPVAogVVBEQVRFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFNFVCBkYXRhID0gJ3Vw ZGF0ZWQyJyBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNo KCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAKKygxIHJvdykKKwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf dGVzdF9wYXJ0MScpOwogIHVwZGF0ZXMgfCBob3QgCiAtLS0tLS0tLS0rLS0tLS0KICAgICAg ICAxIHwgICAxCiAoMSByb3cpCiAKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2go KTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIAorKDEgcm93KQorCiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90 ZXN0X3BhcnQyJyk7CiAgdXBkYXRlcyB8IGhvdCAKIC0tLS0tLS0tLSstLS0tLQogICAgICAg IDEgfCAgIDEKICgxIHJvdykKIAotLS0gVmVyaWZ5IGluZGV4ZXMgd29yayBvbiBwYXJ0aXRp b25zCiBTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdF9wYXJ0aXRpb25lZCBXSEVSRSBpbmRleGVk X2NvbCA9IDEwMDsKICBpZCAKIC0tLS0KQEAgLTUwNCwyNDIgKzQzNSwxMDAgQEAgU0VMRUNU IGlkIEZST00gaG90X3Rlc3RfcGFydGl0aW9uZWQgV0hFUkUgaW5kZXhlZF9jb2wgPSAyMDA7 CiAgIDIKICgxIHJvdykKIAotLS0gVXBkYXRlIGluZGV4ZWQgY29sdW1uIGluIHBhcnRpdGlv biAtIHNob3VsZCBOT1QgYmUgSE9UCi1VUERBVEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgU0VU IGluZGV4ZWRfY29sID0gMTUwIFdIRVJFIGlkID0gMTsKLVNFTEVDVCAqIEZST00gZ2V0X2hv dF9jb3VudCgnaG90X3Rlc3RfcGFydDEnKTsKLSB1cGRhdGVzIHwgaG90IAotLS0tLS0tLS0t Ky0tLS0tCi0gICAgICAgMiB8ICAgMQotKDEgcm93KQotCi0tLSBWZXJpZnkgaW5kZXggd2Fz IHVwZGF0ZWQKLVNFTEVDVCBpZCBGUk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFdIRVJFIGlu ZGV4ZWRfY29sID0gMTUwOwotIGlkIAotLS0tLQotICAxCi0oMSByb3cpCi0KLS0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIFRyaWdnZXIgbW9kaWZpY2F0aW9uczogaGVhcF9tb2Rp ZnlfdHVwbGUoKSBhbmQgSE9UCi0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUZXN0 IHRoYXQgd2UgY29ycmVjdGx5IGRldGVjdCB3aGVuIHRyaWdnZXJzIG1vZGlmeSBpbmRleGVk IGNvbHVtbnMgdmlhCi0tLSBoZWFwX21vZGlmeV90dXBsZSgpLCBldmVuIHdoZW4gdGhvc2Ug Y29sdW1ucyBhcmVuJ3QgaW4gdGhlIFVQREFURSdzIFNFVCBjbGF1c2UKLUNSRUFURSBUQUJM RSBob3RfdHJpZ2dlcl90ZXN0ICgKLSAgICBpZCBpbnQgUFJJTUFSWSBLRVksCi0gICAgdHJp Z2dlcmVkX2NvbCBpbnQsCi0gICAgZGF0YSB0ZXh0Ci0pIFdJVEggKGZpbGxmYWN0b3IgPSA1 MCk7Ci1DUkVBVEUgSU5ERVggaG90X3RyaWdnZXJfaWR4IE9OIGhvdF90cmlnZ2VyX3Rlc3Qo dHJpZ2dlcmVkX2NvbCk7Ci0tLSBDcmVhdGUgYSB0cmlnZ2VyIHRoYXQgbW9kaWZpZXMgYW4g aW5kZXhlZCBjb2x1bW4KLUNSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIG1vZGlmeV90cmln Z2VyZWRfY29sKCkKLVJFVFVSTlMgVFJJR0dFUiBBUyAkJAotQkVHSU4KLSAgICBORVcudHJp Z2dlcmVkX2NvbCA9IE5FVy50cmlnZ2VyZWRfY29sICsgMTsKLSAgICBSRVRVUk4gTkVXOwot RU5EOwotJCQgTEFOR1VBR0UgcGxwZ3NxbDsKLUNSRUFURSBUUklHR0VSIGJlZm9yZV91cGRh dGVfbW9kaWZ5Ci0gICAgQkVGT1JFIFVQREFURSBPTiBob3RfdHJpZ2dlcl90ZXN0Ci0gICAg Rk9SIEVBQ0ggUk9XCi0gICAgRVhFQ1VURSBGVU5DVElPTiBtb2RpZnlfdHJpZ2dlcmVkX2Nv bCgpOwotSU5TRVJUIElOVE8gaG90X3RyaWdnZXJfdGVzdCBWQUxVRVMgKDEsIDEwMCwgJ2lu aXRpYWwnKTsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3RyaWdnZXJfdGVz dCcpOwotIHVwZGF0ZXMgfCBob3QgCi0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICAwIHwgICAw Ci0oMSByb3cpCi0KLS0tIFVwZGF0ZSBvbmx5IGRhdGEgY29sdW1uLCBidXQgdHJpZ2dlciBt b2RpZmllcyBpbmRleGVkIGNvbHVtbgotLS0gU2hvdWxkIE5PVCBiZSBIT1QgYmVjYXVzZSB0 cmlnZ2VyIG1vZGlmaWVkIGFuIGluZGV4ZWQgY29sdW1uCi1VUERBVEUgaG90X3RyaWdnZXJf dGVzdCBTRVQgZGF0YSA9ICd1cGRhdGVkJyBXSEVSRSBpZCA9IDE7Ci0tLSBWZXJpZnkgaXQg d2FzIE5PVCBhIEhPVCB1cGRhdGUgKGluZGV4ZWQgY29sdW1uIHdhcyBtb2RpZmllZCBieSB0 cmlnZ2VyKQotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdHJpZ2dlcl90ZXN0 Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDEgfCAgIDAK LSgxIHJvdykKLQotLS0gVmVyaWZ5IHRoZSB0cmlnZ2VyZWQgY29sdW1uIHdhcyBhY3R1YWxs eSBtb2RpZmllZAotU0VMRUNUIHRyaWdnZXJlZF9jb2wgRlJPTSBob3RfdHJpZ2dlcl90ZXN0 IFdIRVJFIGlkID0gMTsKLSB0cmlnZ2VyZWRfY29sIAotLS0tLS0tLS0tLS0tLS0tCi0gICAg ICAgICAgIDEwMQotKDEgcm93KQotCi1EUk9QIFRBQkxFIGhvdF90cmlnZ2VyX3Rlc3QgQ0FT Q0FERTsKLURST1AgRlVOQ1RJT04gbW9kaWZ5X3RyaWdnZXJlZF9jb2woKTsKLS0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIEpTT05CIGV4cHJlc3Npb24gaW5kZXhlcyBhbmQgc3Vi LWF0dHJpYnV0ZSB0cmFja2luZwotLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVGVz dCB0aGF0IHVwZGF0ZXMgdG8gbm9uLWluZGV4ZWQgSlNPTkIgcGF0aHMgY2FuIGJlIEhPVCB1 cGRhdGVzCitEUk9QIFRBQkxFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIENBU0NBREU7CistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDguIEpTT05CIGV4cHJlc3Npb24gaW5kZXg6IG5v bi1pbmRleGVkIHBhdGggY2hhbmdlIGlzIEhPVAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiBDUkVBVEUgVEFCTEUgaG90X2pzb25iX3Rlc3QgKAogICAgIGlkIGludCBQUklNQVJZIEtF WSwKICAgICBkYXRhIGpzb25iCiApIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7Ci0tLSBDcmVh dGUgZXhwcmVzc2lvbiBpbmRleCBvbiBhIHNwZWNpZmljIEpTT04gcGF0aAogQ1JFQVRFIElO REVYIGhvdF9qc29uYl9uYW1lX2lkeCBPTiBob3RfanNvbmJfdGVzdCAoKGRhdGEtPj4nbmFt ZScpKTsKIElOU0VSVCBJTlRPIGhvdF9qc29uYl90ZXN0IFZBTFVFUwogICAgICgxLCAneyJu YW1lIjoiQWxpY2UiLCJhZ2UiOjMwLCJjaXR5IjoiTllDIn0nKSwKICAgICAoMiwgJ3sibmFt ZSI6IkJvYiIsImFnZSI6MjUsImNpdHkiOiJMQSJ9Jyk7Ci1TRUxFQ1QgKiBGUk9NIGdldF9o b3RfY291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0t LSstLS0tLQotICAgICAgIDAgfCAgIDAKKy0tIFRoZSBqc29uYiBjb2x1bW4gaXMgdGhlIGV4 cHJlc3Npb24gaW5kZXgncyBpbnB1dCwgc28gSE9ULWluZGV4ZWQgaXMKKy0tIGRpc3F1YWxp ZmllZCAoZXhwcmVzc2lvbiBpbmRleGVzIGFyZSBub3QgeWV0IHN1cHBvcnRlZCkgYW5kIHRo ZSBqc29uYgorLS0gY2hhbmdlIGJsb2NrcyBjbGFzc2ljIEhPVDogbm9uLUhPVCB1cGRhdGUu CitVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0YSwgJ3th Z2V9JywgJzMxJykgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9m bHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgCiAoMSByb3cpCiAKLS0tIFVwZGF0ZSBub24taW5kZXhlZCBKU09OIHBh dGggKGFnZSkgLSBzaG91bGQgYmUgSE9UIGFmdGVyIGluc3RydW1lbnRhdGlvbgotVVBEQVRF IGhvdF9qc29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfc2V0KGRhdGEsICd7YWdlfScsICcz MScpIFdIRVJFIGlkID0gMTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pz b25iX3Rlc3QnKTsKICB1cGRhdGVzIHwgaG90IAogLS0tLS0tLS0tKy0tLS0tCiAgICAgICAg MSB8ICAgMAogKDEgcm93KQogCi0tLSBVcGRhdGUgaW5kZXhlZCBKU09OIHBhdGggKG5hbWUp IC0gc2hvdWxkIE5PVCBiZSBIT1QKLVVQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9 IGpzb25iX3NldChkYXRhLCAne25hbWV9JywgJyJBbGljZTIiJykgV0hFUkUgaWQgPSAxOwor LS0gTGlrZXdpc2Ugbm9uLUhPVDogZXhwcmVzc2lvbiBpbmRleCBkaXNxdWFsaWZpZXMgSE9U LWluZGV4ZWQuCitVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBkYXRhIC0gJ2Np dHknIFdIRVJFIGlkID0gMjsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsK KyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIAorKDEgcm93KQorCiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29u Yl90ZXN0Jyk7CiAgdXBkYXRlcyB8IGhvdCAKIC0tLS0tLS0tLSstLS0tLQogICAgICAgIDIg fCAgIDAKICgxIHJvdykKIAotLS0gVmVyaWZ5IGluZGV4IHdvcmtzCi1TRUxFQ1QgaWQgRlJP TSBob3RfanNvbmJfdGVzdCBXSEVSRSBkYXRhLT4+J25hbWUnID0gJ0FsaWNlMic7Ci0gaWQg Ci0tLS0tCi0gIDEKKy0tIExpa2V3aXNlIG5vbi1IT1Q6IGV4cHJlc3Npb24gaW5kZXggZGlz cXVhbGlmaWVzIEhPVC1pbmRleGVkLgorVVBEQVRFIGhvdF9qc29uYl90ZXN0IFNFVCBkYXRh ID0ganNvbmJfaW5zZXJ0KGRhdGEsICd7Y291bnRyeX0nLCAnIlVTQSInKSBXSEVSRSBpZCA9 IDI7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3Jj ZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKICgxIHJvdykK IAotLS0gVGVzdCBqc29uYl9kZWxldGUgb24gbm9uLWluZGV4ZWQgcGF0aCAtIHNob3VsZCBi ZSBIT1QgYWZ0ZXIgaW5zdHJ1bWVudGF0aW9uCi1VUERBVEUgaG90X2pzb25iX3Rlc3QgU0VU IGRhdGEgPSBkYXRhIC0gJ2NpdHknIFdIRVJFIGlkID0gMjsKIFNFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsKICB1cGRhdGVzIHwgaG90IAogLS0tLS0t LS0tKy0tLS0tCiAgICAgICAgMyB8ICAgMAogKDEgcm93KQogCi0tLSBUZXN0IGpzb25iX2lu c2VydCBvbiBub24taW5kZXhlZCBwYXRoIC0gc2hvdWxkIGJlIEhPVCBhZnRlciBpbnN0cnVt ZW50YXRpb24KLVVQREFURSBob3RfanNvbmJfdGVzdCBTRVQgZGF0YSA9IGpzb25iX2luc2Vy dChkYXRhLCAne2NvdW50cnl9JywgJyJVU0EiJykgV0hFUkUgaWQgPSAyOwotU0VMRUNUICog RlJPTSBnZXRfaG90X2NvdW50KCdob3RfanNvbmJfdGVzdCcpOwotIHVwZGF0ZXMgfCBob3Qg Ci0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICA0IHwgICAwCi0oMSByb3cpCi0KIERST1AgVEFC TEUgaG90X2pzb25iX3Rlc3Q7Ci0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBYTUwg ZXhwcmVzc2lvbiBpbmRleGVzIGFuZCBzdWItYXR0cmlidXRlIHRyYWNraW5nCi0tLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBUZXN0IHRoYXQgdXBkYXRlcyB0byBub24taW5kZXhl ZCBYTUwgcGF0aHMgY2FuIGJlIEhPVCB1cGRhdGVzCi1DUkVBVEUgVEFCTEUgaG90X3htbF90 ZXN0ICgKLSAgICBpZCBpbnQgUFJJTUFSWSBLRVksCi0gICAgZG9jIHhtbAotKSBXSVRIIChm aWxsZmFjdG9yID0gNTApOwotLS0gQ3JlYXRlIGV4cHJlc3Npb24gaW5kZXggb24gYSBzcGVj aWZpYyBYUGF0aAotQ1JFQVRFIElOREVYIGhvdF94bWxfbmFtZV9pZHggT04gaG90X3htbF90 ZXN0ICgoeHBhdGgoJy9wZXJzb24vbmFtZS90ZXh0KCknLCBkb2MpKSk7Ci1JTlNFUlQgSU5U TyBob3RfeG1sX3Rlc3QgVkFMVUVTCi0gICAgKDEsICc8cGVyc29uPjxuYW1lPkFsaWNlPC9u YW1lPjxhZ2U+MzA8L2FnZT48L3BlcnNvbj4nKSwKLSAgICAoMiwgJzxwZXJzb24+PG5hbWU+ Qm9iPC9uYW1lPjxhZ2U+MjU8L2FnZT48L3BlcnNvbj4nKTsKLUVSUk9SOiAgY291bGQgbm90 IGlkZW50aWZ5IGEgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgdHlwZSB4bWwKLVNFTEVDVCAq IEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3htbF90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAK LS0tLS0tLS0tLSstLS0tLQotICAgICAgIDAgfCAgIDAKLSgxIHJvdykKLQotLS0gVXBkYXRl IG5vbi1pbmRleGVkIFhQYXRoIChhZ2UpIC0gYmVoYXZpb3IgZGVwZW5kcyBvbiBYTUwgY29t cGFyaXNvbiBmYWxsYmFjawotLS0gRnVsbCBYTUwgdmFsdWUgcmVwbGFjZW1lbnQgbWVhbnMg bm9uLWluZGV4ZWQgcGF0aCB1cGRhdGVzIHN0aWxsIHJlcXVpcmUgaW5kZXggY29tcGFyaXNv bgotVVBEQVRFIGhvdF94bWxfdGVzdCBTRVQgZG9jID0gJzxwZXJzb24+PG5hbWU+QWxpY2U8 L25hbWU+PGFnZT4zMTwvYWdlPjwvcGVyc29uPicgV0hFUkUgaWQgPSAxOwotU0VMRUNUICog RlJPTSBnZXRfaG90X2NvdW50KCdob3RfeG1sX3Rlc3QnKTsKLSB1cGRhdGVzIHwgaG90IAot LS0tLS0tLS0tKy0tLS0tCi0gICAgICAgMCB8ICAgMAotKDEgcm93KQotCi0tLSBVcGRhdGUg aW5kZXhlZCBYUGF0aCAobmFtZSkgLSBzaG91bGQgTk9UIGJlIEhPVAotVVBEQVRFIGhvdF94 bWxfdGVzdCBTRVQgZG9jID0gJzxwZXJzb24+PG5hbWU+QWxpY2UyPC9uYW1lPjxhZ2U+MzE8 L2FnZT48L3BlcnNvbj4nIFdIRVJFIGlkID0gMTsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9j b3VudCgnaG90X3htbF90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0tLSstLS0t LQotICAgICAgIDAgfCAgIDAKLSgxIHJvdykKLQotLS0gVmVyaWZ5IGluZGV4IHdvcmtzCi1T RUxFQ1QgaWQgRlJPTSBob3RfeG1sX3Rlc3QgV0hFUkUgeHBhdGgoJy9wZXJzb24vbmFtZS90 ZXh0KCknLCBkb2MpID0gQVJSQVlbJ0FsaWNlMic6OnRleHRdOwotRVJST1I6ICBvcGVyYXRv ciBkb2VzIG5vdCBleGlzdDogeG1sW10gPSB0ZXh0W10KLUxJTkUgMTogLi4uX3htbF90ZXN0 IFdIRVJFIHhwYXRoKCcvcGVyc29uL25hbWUvdGV4dCgpJywgZG9jKSA9IEFSUkFZWydBLi4u Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgotREVUQUlMOiAgTm8gb3BlcmF0b3Igb2YgdGhhdCBuYW1lIGFjY2VwdHMg dGhlIGdpdmVuIGFyZ3VtZW50IHR5cGVzLgotSElOVDogIFlvdSBtaWdodCBuZWVkIHRvIGFk ZCBleHBsaWNpdCB0eXBlIGNhc3RzLgotRFJPUCBUQUJMRSBob3RfeG1sX3Rlc3Q7Ci0tLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLSBHSU4gaW5kZXhlcyBhbmQgYW1jb21wYXJlZGF0 dW1zIGZvciBKU09OQgotLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVGVzdCB0aGF0 IEdJTiBpbmRleGVzIGNhbiB1c2UgYW1jb21wYXJlZGF0dW1zIHRvIGVuYWJsZSBIT1Qgd2hl biBleHRyYWN0ZWQga2V5cyBtYXRjaAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSA5 LiBBIGNoYW5nZSB0byBhIEdJTi1pbmRleGVkIGNvbHVtbiBpcyBIT1QtaW5kZXhlZAorLS0K Ky0tIFRoZSByZWFkIHNpZGUgZmlsdGVycyBhIHN0YWxlIGxlYWYgdmlhIHRoZSBjcm9zc2Vk LWF0dHJpYnV0ZSBiaXRtYXAsIHdoaWNoCistLSBpcyBhY2Nlc3MtbWV0aG9kIGFnbm9zdGlj LCBzbyBhIEdJTi1jb3ZlcmVkIGNvbHVtbiBpcyBIT1QtaW5kZXhlZCBsaWtlIGFueQorLS0g b3RoZXI6IG9ubHkgdGhlIEdJTiBpbmRleCBpcyBtYWludGFpbmVkLCBhbmQgYSBHSU4gc2Nh biAod2hpY2ggcmVjaGVja3Mgb24KKy0tIHRoZSBoZWFwKSByZXR1cm5zIGNvcnJlY3QgcmVz dWx0cyBhY3Jvc3MgdGhlIGNoYWluLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBDUkVB VEUgVEFCTEUgaG90X2dpbl90ZXN0ICgKICAgICBpZCBpbnQgUFJJTUFSWSBLRVksCiAgICAg dGFncyB0ZXh0W10sCiAgICAgcHJvcGVydGllcyBqc29uYgogKSBXSVRIIChmaWxsZmFjdG9y ID0gNTApOwotLS0gR0lOIGluZGV4IG9uIHRleHQgYXJyYXkKIENSRUFURSBJTkRFWCBob3Rf Z2luX3RhZ3NfaWR4IE9OIGhvdF9naW5fdGVzdCBVU0lORyBnaW4gKHRhZ3MpOwotLS0gR0lO IGluZGV4IG9uIEpTT05CIChqc29uYl9vcHMgLSBrZXlzIGFuZCB2YWx1ZXMpCiBDUkVBVEUg SU5ERVggaG90X2dpbl9wcm9wc19pZHggT04gaG90X2dpbl90ZXN0IFVTSU5HIGdpbiAocHJv cGVydGllcyk7CiBJTlNFUlQgSU5UTyBob3RfZ2luX3Rlc3QgVkFMVUVTCiAgICAgKDEsIEFS UkFZWyd0YWcxJywgJ3RhZzInXSwgJ3sia2V5MSI6InZhbDEiLCJrZXkyIjoidmFsMiJ9Jyks CiAgICAgKDIsIEFSUkFZWyd0YWczJywgJ3RhZzQnXSwgJ3sia2V5MyI6InZhbDMiLCJrZXk0 IjoidmFsNCJ9Jyk7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF9naW5fdGVz dCcpOwotIHVwZGF0ZXMgfCBob3QgCi0tLS0tLS0tLS0rLS0tLS0KLSAgICAgICAwIHwgICAw Ci0oMSByb3cpCi0KLS0tIFVwZGF0ZSB0aGF0IGNoYW5nZXMgdGFnIG9yZGVyIGJ1dCBub3Qg Y29udGVudCAtIGFmdGVyIGFtY29tcGFyZWRhdHVtcyBzaG91bGQgYmUgSE9UCi0tLSAoR0lO IGV4dHJhY3RzIHNhbWUga2V5cywganVzdCBkaWZmZXJlbnQgb3JkZXIpCistLSBSZW9yZGVy IHRhZ3M6IGEgR0lOLWNvdmVyZWQgY29sdW1uIGNoYW5nZXMsIHNvIHRoaXMgaXMgSE9ULWlu ZGV4ZWQuCiBVUERBVEUgaG90X2dpbl90ZXN0IFNFVCB0YWdzID0gQVJSQVlbJ3RhZzInLCAn dGFnMSddIFdIRVJFIGlkID0gMTsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90 X2dpbl90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhvdCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAg IDEgfCAgIDAKLSgxIHJvdykKLQotLS0gVXBkYXRlIEpTT05CIHZhbHVlIChub3Qga2V5KSAt IGFmdGVyIGFtY29tcGFyZWRhdHVtcyBtYXkgYmUgSE9UIG9yIG5vbi1IT1QKLS0tIGRlcGVu ZGluZyBvbiBHSU4gb3BlcmF0b3IgY2xhc3MgKGpzb25iX29wcyBpbmRleGVzIGJvdGgga2V5 cyBhbmQgdmFsdWVzKQotVVBEQVRFIGhvdF9naW5fdGVzdCBTRVQgcHJvcGVydGllcyA9ICd7 ImtleTEiOiJ2YWwxX25ldyIsImtleTIiOiJ2YWwyIn0nIFdIRVJFIGlkID0gMTsKLVNFTEVD VCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90ZXN0Jyk7Ci0gdXBkYXRlcyB8IGhv dCAKLS0tLS0tLS0tLSstLS0tLQotICAgICAgIDIgfCAgIDAKK1NFTEVDVCBwZ19zdGF0X2Zv cmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAogKDEgcm93KQogCi0tLSBBZGQgbmV3IHRhZyAtIHNo b3VsZCBOT1QgYmUgSE9UIChkaWZmZXJlbnQgZXh0cmFjdGVkIGtleXMpCi1VUERBVEUgaG90 X2dpbl90ZXN0IFNFVCB0YWdzID0gQVJSQVlbJ3RhZzInLCAndGFnMScsICd0YWc1J10gV0hF UkUgaWQgPSAxOwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfZ2luX3Rlc3Qn KTsKICB1cGRhdGVzIHwgaG90IAogLS0tLS0tLS0tKy0tLS0tCi0gICAgICAgMyB8ICAgMAot KDEgcm93KQotCi0tLSBWZXJpZnkgR0lOIGluZGV4ZXMgd29yawotU0VMRUNUIGlkIEZST00g aG90X2dpbl90ZXN0IFdIRVJFIHRhZ3MgQD4gQVJSQVlbJ3RhZzUnXTsKLSBpZCAKLS0tLS0K LSAgMQotKDEgcm93KQotCi1TRUxFQ1QgaWQgRlJPTSBob3RfZ2luX3Rlc3QgV0hFUkUgcHJv cGVydGllcyBAPiAneyJrZXkxIjoidmFsMV9uZXcifSc7Ci0gaWQgCi0tLS0tCi0gIDEKKyAg ICAgICAxIHwgICAxCiAoMSByb3cpCiAKIERST1AgVEFCTEUgaG90X2dpbl90ZXN0OwotLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSBD bGVhbnVwCi0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1EUk9QIFRBQkxFIElGIEVYSVNU UyBob3RfdGVzdDsKLURST1AgVEFCTEUgSUYgRVhJU1RTIGhvdF90ZXN0X3BhcnRpdGlvbmVk IENBU0NBREU7Ci1EUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBoYXNfaG90X2NoYWluKHRleHQs IHRpZCk7Ci1EUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBwcmludF9ob3RfY2hhaW4odGV4dCwg dGlkKTsKLURST1AgRlVOQ1RJT04gSUYgRVhJU1RTIGdldF9ob3RfY291bnQodGV4dCk7Cist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0RST1AgRlVOQ1RJT04gaGFzX2hvdF9jaGFpbih0 ZXh0LCB0aWQpOworRFJPUCBGVU5DVElPTiBwcmludF9ob3RfY2hhaW4odGV4dCwgdGlkKTsK K0RST1AgRlVOQ1RJT04gZ2V0X2hvdF9jb3VudCh0ZXh0KTsKIERST1AgRVhURU5TSU9OIHBh Z2VpbnNwZWN0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0 ZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90X3VwZGF0ZXMuc3FsCmluZGV4IGE4 ODk0MDA2MTc3Li4zNWNlN2UxY2RjZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvaG90X3VwZGF0ZXMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hvdF91cGRh dGVzLnNxbApAQCAtMSwzNTQgKzEsMjU4IEBACiAtLQogLS0gSE9UX1VQREFURVMKLS0tIFRl c3QgSGVhcC1Pbmx5IFR1cGxlIChIT1QpIHVwZGF0ZSBkZWNpc2lvbnMKKy0tIFRlc3QgY2xh c3NpYyBIZWFwLU9ubHkgVHVwbGUgKEhPVCkgdXBkYXRlIGRlY2lzaW9ucwogLS0KLS0tIFRo aXMgdGVzdCBzeXN0ZW1hdGljYWxseSB2ZXJpZmllcyB0aGF0IEhPVCB1cGRhdGVzIGFyZSB1 c2VkIHdoZW4gYXBwcm9wcmlhdGUKLS0tIGFuZCBhdm9pZGVkIHdoZW4gbmVjZXNzYXJ5IChl LmcuLCB3aGVuIGluZGV4ZWQgY29sdW1ucyBhcmUgbW9kaWZpZWQpLgorLS0gVGhpcyBmaWxl IGNvdmVycyBIT1QgZGVjaXNpb25zIHRoYXQgYXBwbHkgaWRlbnRpY2FsbHkgb24gYSBwcmUt aG90LWluZGV4ZWQKKy0tIHNlcnZlcjogZXZlcnkgVVBEQVRFIGhlcmUgZWl0aGVyIGxlYXZl cyBhbGwgaW5kZXhlZCBhdHRyaWJ1dGVzCistLSB1bmNoYW5nZWQgb3IgdG91Y2hlcyBvbmx5 IHN1bW1hcml6aW5nLWluZGV4IChCUklOKSBhdHRyaWJ1dGVzLCBzbyB0aGUKKy0tIEhPVCB2 cyBub24tSE9UIGNob2ljZSBkb2VzIG5vdCBkZXBlbmQgb24gd2hldGhlciBTZWxlY3RpdmUg SW5kZXgKKy0tIFVwZGF0ZSAoaG90LWluZGV4ZWQpIGlzIGVuYWJsZWQuICBob3QtaW5kZXhl ZC1zcGVjaWZpYyBiZWhhdmlvdXIgKFVQREFURXMgdGhhdCBtb2RpZnkKKy0tIGEgbm9uLXN1 bW1hcml6aW5nIGluZGV4ZWQgYXR0cmlidXRlKSBpcyBjb3ZlcmVkIGluCistLSBob3RfaW5k ZXhlZF91cGRhdGVzLnNxbC4KIC0tCi0tLSBXZSB1c2UgbXVsdGlwbGUgdmFsaWRhdGlvbiBt ZXRob2RzOgotLS0gMS4gU3RhdGlzdGljcyBmdW5jdGlvbnMgKHBnX3N0YXRfZ2V0X3R1cGxl c19ob3RfdXBkYXRlZCkKLS0tIDIuIHBhZ2VpbnNwZWN0IGV4dGVuc2lvbiBmb3IgSE9UIGNo YWluIGV4YW1pbmF0aW9uCi0tLSAzLiBFWFBMQUlOIHRvIHZlcmlmeSBpbmRleCB1c2FnZSBh ZnRlciB1cGRhdGVzCistLSBWYWxpZGF0aW9uIG1ldGhvZHM6CistLSAgIDEuIFN0YXRpc3Rp Y3MgKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZCkKKy0tICAgMi4gcGFnZWluc3Bl Y3QgZm9yIEhPVCBjaGFpbiBzdHJ1Y3R1cmUKKy0tICAgMy4gRVhQTEFJTiB0byBjb25maXJt IHRoZSBwbGFubmVyIHN0aWxsIHBpY2tzIHRoZSBpbmRleAogLS0KIAogLS0gTG9hZCByZXF1 aXJlZCBleHRlbnNpb25zCiBDUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgcGFnZWlu c3BlY3Q7CiAKLS0tIEZ1bmN0aW9uIHRvIGdldCBIT1QgdXBkYXRlIGNvdW50CistLSBTdW0g b2YgY29tbWl0dGVkIGFuZCBpbi1wcm9ncmVzcyAobm9uLUhPVCwgSE9UKSB1cGRhdGUgY291 bnRlcnMuCiBDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBnZXRfaG90X2NvdW50KHJlbF9u YW1lIHRleHQpCiBSRVRVUk5TIFRBQkxFICgKICAgICB1cGRhdGVzIEJJR0lOVCwKICAgICBo b3QgQklHSU5UCiApIEFTICQkCiBERUNMQVJFCi0gIHJlbF9vaWQgb2lkOworICAgIHJlbF9v aWQgb2lkOwogQkVHSU4KLSAgcmVsX29pZCA6PSByZWxfbmFtZTo6cmVnY2xhc3M6Om9pZDsK LQotICAtLSBSZWFkIGJvdGggY29tbWl0dGVkIGFuZCB0cmFuc2FjdGlvbi1sb2NhbCBzdGF0 cwotICAtLSBJbiBhdXRvY29tbWl0IG1vZGUgKGRlZmF1bHQgZm9yIHJlZ3Jlc3Npb24gdGVz dHMpLCB0aGlzIHdvcmtzIGNvcnJlY3RseQotICAtLSBOb3RlOiBJbiBleHBsaWNpdCB0cmFu c2FjdGlvbnMgKEJFR0lOL0NPTU1JVCksIGNvbW1pdHRlZCBzdGF0cyBhbHJlYWR5Ci0gIC0t IGluY2x1ZGUgZmx1c2hlZCB1cGRhdGVzLCBzbyB0aGlzIHdvdWxkIGRvdWJsZS1jb3VudC4g Rm9yIGV4cGxpY2l0Ci0gIC0tIHRyYW5zYWN0aW9uIHRlc3RpbmcsIGNhbGwgcGdfc3RhdF9m b3JjZV9uZXh0X2ZsdXNoKCkgYmVmb3JlIHRoaXMgZnVuY3Rpb24uCi0gIHVwZGF0ZXMgOj0g Q09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApICsKLSAg ICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxlc191cGRhdGVkKHJl bF9vaWQpLCAwKTsKLSAgaG90IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3Rf dXBkYXRlZChyZWxfb2lkKSwgMCkgKwotICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRf eGFjdF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29pZCksIDApOwotCi0gIFJFVFVSTiBORVhU OworICAgIHJlbF9vaWQgOj0gcmVsX25hbWU6OnJlZ2NsYXNzOjpvaWQ7CisgICAgdXBkYXRl cyA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCkg KworICAgICAgICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBk YXRlZChyZWxfb2lkKSwgMCk7CisgICAgaG90IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1 cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICBDT0FMRVNDRShw Z19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCk7CisgICAg UkVUVVJOIE5FWFQ7CiBFTkQ7CiAkJCBMQU5HVUFHRSBwbHBnc3FsOwogCi0tLSBDaGVjayBp ZiBhIHR1cGxlIGlzIHBhcnQgb2YgYSBIT1QgY2hhaW4gKGhhcyBhIHByZWRlY2Vzc29yIG9u IHNhbWUgcGFnZSkKKy0tIFRydWUgaWZmIHRhcmdldF9jdGlkIGlzIHRoZSBUQUlMIG9mIGEg SE9UIGNoYWluIG9uIHRoZSBzYW1lIHBhZ2UuCiBDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElP TiBoYXNfaG90X2NoYWluKHJlbF9uYW1lIHRleHQsIHRhcmdldF9jdGlkIHRpZCkKIFJFVFVS TlMgYm9vbGVhbiBBUyAkJAogREVDTEFSRQotICBibG9ja19udW0gaW50OwotICBwYWdlX2l0 ZW0gcmVjb3JkOworICAgIGJsb2NrX251bSBpbnQ7CisgICAgcGFnZV9pdGVtIHJlY29yZDsK IEJFR0lOCi0gIGJsb2NrX251bSA6PSAodGFyZ2V0X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6 aW50OwotCi0gIC0tIExvb2sgZm9yIGEgZGlmZmVyZW50IHR1cGxlIG9uIHRoZSBzYW1lIHBh Z2UgdGhhdCBwb2ludHMgdG8gb3VyIHRhcmdldCB0dXBsZQotICBGT1IgcGFnZV9pdGVtIElO Ci0gICAgU0VMRUNUIGxwLCBscF9mbGFncywgdF9jdGlkCi0gICAgRlJPTSBoZWFwX3BhZ2Vf aXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19udW0pKQotICAgIFdIRVJFIGxw X2ZsYWdzID0gMQotICAgICAgQU5EIHRfY3RpZCBJUyBOT1QgTlVMTAotICAgICAgQU5EIHRf Y3RpZCA9IHRhcmdldF9jdGlkCi0gICAgICBBTkQgKCcoJyB8fCBibG9ja19udW06OnRleHQg fHwgJywnIHx8IGxwOjp0ZXh0IHx8ICcpJyk6OnRpZCAhPSB0YXJnZXRfY3RpZAotICBMT09Q Ci0gICAgUkVUVVJOIHRydWU7Ci0gIEVORCBMT09QOwotCi0gIFJFVFVSTiBmYWxzZTsKKyAg ICBibG9ja19udW0gOj0gKHRhcmdldF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKKyAg ICBGT1IgcGFnZV9pdGVtIElOCisgICAgICAgIFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRfY3Rp ZAorICAgICAgICBGUk9NIGhlYXBfcGFnZV9pdGVtcyhnZXRfcmF3X3BhZ2UocmVsX25hbWUs IGJsb2NrX251bSkpCisgICAgICAgIFdIRVJFIGxwX2ZsYWdzID0gMQorICAgICAgICAgIEFO RCB0X2N0aWQgSVMgTk9UIE5VTEwKKyAgICAgICAgICBBTkQgdF9jdGlkID0gdGFyZ2V0X2N0 aWQKKyAgICAgICAgICBBTkQgKCcoJyB8fCBibG9ja19udW06OnRleHQgfHwgJywnIHx8IGxw Ojp0ZXh0IHx8ICcpJyk6OnRpZCAhPSB0YXJnZXRfY3RpZAorICAgIExPT1AKKyAgICAgICAg UkVUVVJOIHRydWU7CisgICAgRU5EIExPT1A7CisgICAgUkVUVVJOIGZhbHNlOwogRU5EOwog JCQgTEFOR1VBR0UgcGxwZ3NxbDsKIAotLS0gUHJpbnQgdGhlIEhPVCBjaGFpbiBzdGFydGlu ZyBmcm9tIGEgZ2l2ZW4gdHVwbGUKKy0tIEVtaXQgdGhlIEhPVCBjaGFpbiByb290ZWQgYXQg c3RhcnRfY3RpZC4KIENSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIHByaW50X2hvdF9jaGFp bihyZWxfbmFtZSB0ZXh0LCBzdGFydF9jdGlkIHRpZCkKIFJFVFVSTlMgVEFCTEUoY2hhaW5f cG9zaXRpb24gaW50LCBjdGlkIHRpZCwgbHBfZmxhZ3MgdGV4dCwgdF9jdGlkIHRpZCwgY2hh aW5fZW5kIGJvb2xlYW4pIEFTCiAkJAogI3ZhcmlhYmxlX2NvbmZsaWN0IHVzZV9jb2x1bW4K IERFQ0xBUkUKLSAgYmxvY2tfbnVtIGludDsKLSAgbGluZV9wdHIgaW50OwotICBjdXJyZW50 X2N0aWQgdGlkIDo9IHN0YXJ0X2N0aWQ7Ci0gIG5leHRfY3RpZCB0aWQ7Ci0gIHBvc2l0aW9u IGludCA6PSAwOwotICBtYXhfaXRlcmF0aW9ucyBpbnQgOj0gMTAwOwotICBwYWdlX2l0ZW0g cmVjb3JkOwotICBmb3VuZF9wcmVkZWNlc3NvciBib29sZWFuIDo9IGZhbHNlOwotICBmbGFn c19uYW1lIHRleHQ7CisgICAgYmxvY2tfbnVtIGludDsKKyAgICBsaW5lX3B0ciBpbnQ7Cisg ICAgY3VycmVudF9jdGlkIHRpZCA6PSBzdGFydF9jdGlkOworICAgIG5leHRfY3RpZCB0aWQ7 CisgICAgcG9zaXRpb24gaW50IDo9IDA7CisgICAgbWF4X2l0ZXJhdGlvbnMgaW50IDo9IDEw MDsKKyAgICBwYWdlX2l0ZW0gcmVjb3JkOworICAgIGZvdW5kX3ByZWRlY2Vzc29yIGJvb2xl YW4gOj0gZmFsc2U7CisgICAgZmxhZ3NfbmFtZSB0ZXh0OwogQkVHSU4KLSAgYmxvY2tfbnVt IDo9IChzdGFydF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKLQotICAtLSBGaW5kIHRo ZSBwcmVkZWNlc3NvciAob2xkIHR1cGxlIHBvaW50aW5nIHRvIG91ciBzdGFydF9jdGlkKQot ICBGT1IgcGFnZV9pdGVtIElOCi0gICAgU0VMRUNUIGxwLCBscF9mbGFncywgdF9jdGlkCi0g ICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19u dW0pKQotICAgIFdIRVJFIGxwX2ZsYWdzID0gMQotICAgICAgQU5EIHRfY3RpZCA9IHN0YXJ0 X2N0aWQKLSAgTE9PUAotICAgIGN1cnJlbnRfY3RpZCA6PSAoJygnIHx8IGJsb2NrX251bTo6 dGV4dCB8fCAnLCcgfHwgcGFnZV9pdGVtLmxwOjp0ZXh0IHx8ICcpJyk6OnRpZDsKLSAgICBm b3VuZF9wcmVkZWNlc3NvciA6PSB0cnVlOwotICAgIEVYSVQ7Ci0gIEVORCBMT09QOwotCi0g IC0tIElmIG5vIHByZWRlY2Vzc29yIGZvdW5kLCBzdGFydCB3aXRoIHRoZSBnaXZlbiBjdGlk Ci0gIElGIE5PVCBmb3VuZF9wcmVkZWNlc3NvciBUSEVOCi0gICAgY3VycmVudF9jdGlkIDo9 IHN0YXJ0X2N0aWQ7Ci0gIEVORCBJRjsKLQotICAtLSBGb2xsb3cgdGhlIGNoYWluIGZvcndh cmQKLSAgV0hJTEUgcG9zaXRpb24gPCBtYXhfaXRlcmF0aW9ucyBMT09QCi0gICAgbGluZV9w dHIgOj0gKGN1cnJlbnRfY3RpZDo6dGV4dDo6cG9pbnQpWzFdOjppbnQ7CisgICAgYmxvY2tf bnVtIDo9IChzdGFydF9jdGlkOjp0ZXh0Ojpwb2ludClbMF06OmludDsKIAogICAgIEZPUiBw YWdlX2l0ZW0gSU4KLSAgICAgIFNFTEVDVCBscCwgbHBfZmxhZ3MsIHRfY3RpZAotICAgICAg RlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdlKHJlbF9uYW1lLCBibG9ja19udW0p KQotICAgICAgV0hFUkUgbHAgPSBsaW5lX3B0cgorICAgICAgICBTRUxFQ1QgbHAsIGxwX2Zs YWdzLCB0X2N0aWQKKyAgICAgICAgRlJPTSBoZWFwX3BhZ2VfaXRlbXMoZ2V0X3Jhd19wYWdl KHJlbF9uYW1lLCBibG9ja19udW0pKQorICAgICAgICBXSEVSRSBscF9mbGFncyA9IDEKKyAg ICAgICAgICBBTkQgdF9jdGlkID0gc3RhcnRfY3RpZAogICAgIExPT1AKLSAgICAgIC0tIE1h cCBscF9mbGFncyB0byBuYW1lcwotICAgICAgZmxhZ3NfbmFtZSA6PSBDQVNFIHBhZ2VfaXRl bS5scF9mbGFncwotICAgICAgICBXSEVOIDAgVEhFTiAndW51c2VkICgwKScKLSAgICAgICAg V0hFTiAxIFRIRU4gJ25vcm1hbCAoMSknCi0gICAgICAgIFdIRU4gMiBUSEVOICdyZWRpcmVj dCAoMiknCi0gICAgICAgIFdIRU4gMyBUSEVOICdkZWFkICgzKScKLSAgICAgICAgRUxTRSAn dW5rbm93biAoJyB8fCBwYWdlX2l0ZW0ubHBfZmxhZ3M6OnRleHQgfHwgJyknCi0gICAgICBF TkQ7Ci0KLSAgICAgIFJFVFVSTiBRVUVSWSBTRUxFQ1QKLSAgICAgICAgcG9zaXRpb24sCi0g ICAgICAgIGN1cnJlbnRfY3RpZCwKLSAgICAgICAgZmxhZ3NfbmFtZSwKLSAgICAgICAgcGFn ZV9pdGVtLnRfY3RpZCwKLSAgICAgICAgKHBhZ2VfaXRlbS50X2N0aWQgSVMgTlVMTCBPUiBw YWdlX2l0ZW0udF9jdGlkID0gY3VycmVudF9jdGlkKTo6Ym9vbGVhbgotICAgICAgOwotCi0g ICAgICBJRiBwYWdlX2l0ZW0udF9jdGlkIElTIE5VTEwgT1IgcGFnZV9pdGVtLnRfY3RpZCA9 IGN1cnJlbnRfY3RpZCBUSEVOCi0gICAgICAgIFJFVFVSTjsKLSAgICAgIEVORCBJRjsKLQot ICAgICAgbmV4dF9jdGlkIDo9IHBhZ2VfaXRlbS50X2N0aWQ7Ci0KLSAgICAgIElGIChuZXh0 X2N0aWQ6OnRleHQ6OnBvaW50KVswXTo6aW50ICE9IGJsb2NrX251bSBUSEVOCi0gICAgICAg IFJFVFVSTjsKLSAgICAgIEVORCBJRjsKLQotICAgICAgY3VycmVudF9jdGlkIDo9IG5leHRf Y3RpZDsKLSAgICAgIHBvc2l0aW9uIDo9IHBvc2l0aW9uICsgMTsKKyAgICAgICAgY3VycmVu dF9jdGlkIDo9ICgnKCcgfHwgYmxvY2tfbnVtOjp0ZXh0IHx8ICcsJyB8fCBwYWdlX2l0ZW0u bHA6OnRleHQgfHwgJyknKTo6dGlkOworICAgICAgICBmb3VuZF9wcmVkZWNlc3NvciA6PSB0 cnVlOworICAgICAgICBFWElUOwogICAgIEVORCBMT09QOwotCi0gICAgSUYgcG9zaXRpb24g PSAwIFRIRU4KLSAgICAgIFJFVFVSTjsKKyAgICBJRiBOT1QgZm91bmRfcHJlZGVjZXNzb3Ig VEhFTgorICAgICAgICBjdXJyZW50X2N0aWQgOj0gc3RhcnRfY3RpZDsKICAgICBFTkQgSUY7 Ci0gIEVORCBMT09QOworCisgICAgV0hJTEUgcG9zaXRpb24gPCBtYXhfaXRlcmF0aW9ucyBM T09QCisgICAgICAgIGxpbmVfcHRyIDo9IChjdXJyZW50X2N0aWQ6OnRleHQ6OnBvaW50KVsx XTo6aW50OworICAgICAgICBGT1IgcGFnZV9pdGVtIElOCisgICAgICAgICAgICBTRUxFQ1Qg bHAsIGxwX2ZsYWdzLCB0X2N0aWQKKyAgICAgICAgICAgIEZST00gaGVhcF9wYWdlX2l0ZW1z KGdldF9yYXdfcGFnZShyZWxfbmFtZSwgYmxvY2tfbnVtKSkKKyAgICAgICAgICAgIFdIRVJF IGxwID0gbGluZV9wdHIKKyAgICAgICAgTE9PUAorICAgICAgICAgICAgZmxhZ3NfbmFtZSA6 PSBDQVNFIHBhZ2VfaXRlbS5scF9mbGFncworICAgICAgICAgICAgICAgIFdIRU4gMCBUSEVO ICd1bnVzZWQgKDApJworICAgICAgICAgICAgICAgIFdIRU4gMSBUSEVOICdub3JtYWwgKDEp JworICAgICAgICAgICAgICAgIFdIRU4gMiBUSEVOICdyZWRpcmVjdCAoMiknCisgICAgICAg ICAgICAgICAgV0hFTiAzIFRIRU4gJ2RlYWQgKDMpJworICAgICAgICAgICAgICAgIEVMU0Ug J3Vua25vd24gKCcgfHwgcGFnZV9pdGVtLmxwX2ZsYWdzOjp0ZXh0IHx8ICcpJworICAgICAg ICAgICAgRU5EOworICAgICAgICAgICAgUkVUVVJOIFFVRVJZIFNFTEVDVAorICAgICAgICAg ICAgICAgIHBvc2l0aW9uLAorICAgICAgICAgICAgICAgIGN1cnJlbnRfY3RpZCwKKyAgICAg ICAgICAgICAgICBmbGFnc19uYW1lLAorICAgICAgICAgICAgICAgIHBhZ2VfaXRlbS50X2N0 aWQsCisgICAgICAgICAgICAgICAgKHBhZ2VfaXRlbS50X2N0aWQgSVMgTlVMTCBPUiBwYWdl X2l0ZW0udF9jdGlkID0gY3VycmVudF9jdGlkKTo6Ym9vbGVhbjsKKworICAgICAgICAgICAg SUYgcGFnZV9pdGVtLnRfY3RpZCBJUyBOVUxMIE9SIHBhZ2VfaXRlbS50X2N0aWQgPSBjdXJy ZW50X2N0aWQgVEhFTgorICAgICAgICAgICAgICAgIFJFVFVSTjsKKyAgICAgICAgICAgIEVO RCBJRjsKKyAgICAgICAgICAgIG5leHRfY3RpZCA6PSBwYWdlX2l0ZW0udF9jdGlkOworICAg ICAgICAgICAgSUYgKG5leHRfY3RpZDo6dGV4dDo6cG9pbnQpWzBdOjppbnQgIT0gYmxvY2tf bnVtIFRIRU4KKyAgICAgICAgICAgICAgICBSRVRVUk47CisgICAgICAgICAgICBFTkQgSUY7 CisgICAgICAgICAgICBjdXJyZW50X2N0aWQgOj0gbmV4dF9jdGlkOworICAgICAgICAgICAg cG9zaXRpb24gOj0gcG9zaXRpb24gKyAxOworICAgICAgICBFTkQgTE9PUDsKKyAgICAgICAg SUYgcG9zaXRpb24gPSAwIFRIRU4KKyAgICAgICAgICAgIFJFVFVSTjsKKyAgICAgICAgRU5E IElGOworICAgIEVORCBMT09QOwogRU5EOwogJCQgTEFOR1VBR0UgcGxwZ3NxbDsKIAotLS0g QmFzaWMgSE9UIHVwZGF0ZSAodXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbikKKworLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCistLSAxLiBCYXNpYyBIT1Q6IHVwZGF0ZSBvZiBhIG5vbi1p bmRleGVkIGNvbHVtbgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBDUkVBVEUgVEFCTEUg aG90X3Rlc3QgKAogICAgIGlkIGludCBQUklNQVJZIEtFWSwKICAgICBpbmRleGVkX2NvbCBp bnQsCiAgICAgbm9uX2luZGV4ZWRfY29sIHRleHQKICkgV0lUSCAoZmlsbGZhY3RvciA9IDUw KTsKLQogQ1JFQVRFIElOREVYIGhvdF90ZXN0X2luZGV4ZWRfaWR4IE9OIGhvdF90ZXN0KGlu ZGV4ZWRfY29sKTsKIAogSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsICdp bml0aWFsJyk7CiBJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsIDIwMCwgJ2luaXRp YWwnKTsKIElOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMywgMzAwLCAnaW5pdGlhbCcp OwogCi0tLSBHZXQgYmFzZWxpbmUKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2go KTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKIAotLS0gU2hv dWxkIGJlIEhPVCB1cGRhdGVzIChvbmx5IG5vbi1pbmRleGVkIGNvbHVtbiBtb2RpZmllZCkK Ky0tIFRocmVlIGNsYXNzaWMgSE9UIHVwZGF0ZXMgKG5vbi1pbmRleGVkIGNvbCkuCiBVUERB VEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkX2NvbCA9ICd1cGRhdGVkMScgV0hFUkUgaWQg PSAxOwogVVBEQVRFIGhvdF90ZXN0IFNFVCBub25faW5kZXhlZF9jb2wgPSAndXBkYXRlZDIn IFdIRVJFIGlkID0gMjsKIFVQREFURSBob3RfdGVzdCBTRVQgbm9uX2luZGV4ZWRfY29sID0g J3VwZGF0ZWQzJyBXSEVSRSBpZCA9IDM7Ci0KLS0tIFZlcmlmeSBIT1QgdXBkYXRlcyBvY2N1 cnJlZAotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwotCi0tLSBE dW1wIHRoZSBIT1QgY2hhaW4gYmVmb3JlIFZBQ1VVTWluZwotV0lUSCBjdXJyZW50X3R1cGxl IEFTICgKLSAgU0VMRUNUIGN0aWQgRlJPTSBob3RfdGVzdCBXSEVSRSBpZCA9IDEKLSkKLVNF TEVDVAotICBoYXNfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCkg QVMgaGFzX2NoYWluLAotICBjaGFpbl9wb3NpdGlvbiwKLSAgcHJpbnRfaG90X2NoYWluLmN0 aWQsCi0gIGxwX2ZsYWdzLAotICB0X2N0aWQKLUZST00gY3VycmVudF90dXBsZSwKLUxBVEVS QUwgcHJpbnRfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1cnJlbnRfdHVwbGUuY3RpZCk7Ci0K LS0tIFZhY3V1bSB0aGUgcmVsYXRpb24sIGV4cGVjdCB0aGUgSE9UIGNoYWluIHRvIGNvbGxh cHNlCi1WQUNVVU0gaG90X3Rlc3Q7Ci0KLS0tIFNob3cgdGhhdCB0aGVyZSBpcyBubyBjaGFp biBhZnRlciB2YWN1dW0KLVdJVEggY3VycmVudF90dXBsZSBBUyAoCi0gIFNFTEVDVCBjdGlk IEZST00gaG90X3Rlc3QgV0hFUkUgaWQgPSAxCi0pCi1TRUxFQ1QKLSAgaGFzX2hvdF9jaGFp bignaG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwKLSAgY2hh aW5fcG9zaXRpb24sCi0gIHByaW50X2hvdF9jaGFpbi5jdGlkLAotICBscF9mbGFncywKLSAg dF9jdGlkCi1GUk9NIGN1cnJlbnRfdHVwbGUsCi1MQVRFUkFMIHByaW50X2hvdF9jaGFpbign aG90X3Rlc3QnLCBjdXJyZW50X3R1cGxlLmN0aWQpOwotCi0tLSBOb24tSE9UIHVwZGF0ZSAo dXBkYXRlIGluZGV4ZWQgY29sdW1uKQotVVBEQVRFIGhvdF90ZXN0IFNFVCBpbmRleGVkX2Nv bCA9IDE1MCBXSEVSRSBpZCA9IDE7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hv dF90ZXN0Jyk7Ci0KLS0tIFZlcmlmeSBpbmRleCB3YXMgdXBkYXRlZCAobmV3IHZhbHVlIGZp bmRhYmxlKQotU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOwotRVhQTEFJTiAoQ09TVFMgT0ZG KSBTRUxFQ1QgaWQsIGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hFUkUgaW5kZXhlZF9j b2wgPSAxNTA7Ci1TRUxFQ1QgaWQsIGluZGV4ZWRfY29sIEZST00gaG90X3Rlc3QgV0hFUkUg aW5kZXhlZF9jb2wgPSAxNTA7Ci0KLS0tIFZlcmlmeSBvbGQgdmFsdWUgbm8gbG9uZ2VyIGlu IGluZGV4Ci1FWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBpZCBGUk9NIGhvdF90ZXN0IFdI RVJFIGluZGV4ZWRfY29sID0gMTAwOwotU0VMRUNUIGlkIEZST00gaG90X3Rlc3QgV0hFUkUg aW5kZXhlZF9jb2wgPSAxMDA7Ci1SRVNFVCBlbmFibGVfc2Vxc2NhbjsKLQotLS0gQWxsLW9y LW5vbmUgcHJvcGVydHk6IHVwZGF0aW5nIG9uZSBpbmRleGVkIGNvbHVtbiByZXF1aXJlcyBB TEwgaW5kZXggdXBkYXRlcwotRFJPUCBUQUJMRSBob3RfdGVzdDsKLQotQ1JFQVRFIFRBQkxF IGhvdF90ZXN0ICgKLSAgICBpZCBpbnQgUFJJTUFSWSBLRVksCi0gICAgY29sX2EgaW50LAot ICAgIGNvbF9iIGludCwKLSAgICBjb2xfYyBpbnQsCi0gICAgbm9uX2luZGV4ZWQgdGV4dAot KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwotCi1DUkVBVEUgSU5ERVggaG90X3Rlc3RfYV9p ZHggT04gaG90X3Rlc3QoY29sX2EpOwotQ1JFQVRFIElOREVYIGhvdF90ZXN0X2JfaWR4IE9O IGhvdF90ZXN0KGNvbF9iKTsKLUNSRUFURSBJTkRFWCBob3RfdGVzdF9jX2lkeCBPTiBob3Rf dGVzdChjb2xfYyk7Ci0KLUlOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAsIDIw LCAzMCwgJ2luaXRpYWwnKTsKLQotLS0gVXBkYXRlIG9ubHkgY29sX2EgLSBzaG91bGQgTk9U IGJlIEhPVCBiZWNhdXNlIGFuIGluZGV4ZWQgY29sdW1uIGNoYW5nZWQKLS0tIFRoaXMgbWVh bnMgQUxMIGluZGV4ZXMgbXVzdCBiZSB1cGRhdGVkIChhbGwtb3Itbm9uZSBwcm9wZXJ0eSkK LVVQREFURSBob3RfdGVzdCBTRVQgY29sX2EgPSAxNSBXSEVSRSBpZCA9IDE7CitTRUxFQ1Qg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF90ZXN0Jyk7CiAKLS0tIE5vdyB1cGRhdGUgb25seSBub24taW5kZXhlZCBjb2x1 bW4gLSBzaG91bGQgYmUgSE9UCi1VUERBVEUgaG90X3Rlc3QgU0VUIG5vbl9pbmRleGVkID0g J3VwZGF0ZWQnOwotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwor LS0gQ2hhaW4tb2YtMSBvbiBpZD0xIHN0aWxsIGhhcyBhIHByZWRlY2Vzc29yIGxpbmUgcG9p bnRlci4KK1dJVEggY3VycmVudF90dXBsZSBBUyAoU0VMRUNUIGN0aWQgRlJPTSBob3RfdGVz dCBXSEVSRSBpZCA9IDEpCitTRUxFQ1QgaGFzX2hvdF9jaGFpbignaG90X3Rlc3QnLCBjdXJy ZW50X3R1cGxlLmN0aWQpIEFTIGhhc19jaGFpbiwKKyAgICAgICBjaGFpbl9wb3NpdGlvbiwg cHJpbnRfaG90X2NoYWluLmN0aWQsIGxwX2ZsYWdzLCB0X2N0aWQKK0ZST00gY3VycmVudF90 dXBsZSwgTEFURVJBTCBwcmludF9ob3RfY2hhaW4oJ2hvdF90ZXN0JywgY3VycmVudF90dXBs ZS5jdGlkKTsKIAotLS0gUGFydGlhbCBpbmRleDogYm90aCBvbGQgYW5kIG5ldyBvdXRzaWRl IHByZWRpY2F0ZSAoY29uc2VydmF0aXZlID0gbm9uLUhPVCkKLURST1AgVEFCTEUgaG90X3Rl c3Q7Ci0KLUNSRUFURSBUQUJMRSBob3RfdGVzdCAoCi0gICAgaWQgaW50IFBSSU1BUlkgS0VZ LAotICAgIHN0YXR1cyB0ZXh0LAotICAgIGRhdGEgdGV4dAotKSBXSVRIIChmaWxsZmFjdG9y ID0gNTApOwotCi0tLSBQYXJ0aWFsIGluZGV4IG9ubHkgY292ZXJzIHN0YXR1cyA9ICdhY3Rp dmUnCi1DUkVBVEUgSU5ERVggaG90X3Rlc3RfYWN0aXZlX2lkeCBPTiBob3RfdGVzdChzdGF0 dXMpIFdIRVJFIHN0YXR1cyA9ICdhY3RpdmUnOwotCi1JTlNFUlQgSU5UTyBob3RfdGVzdCBW QUxVRVMgKDEsICdhY3RpdmUnLCAnZGF0YTEnKTsKLUlOU0VSVCBJTlRPIGhvdF90ZXN0IFZB TFVFUyAoMiwgJ2luYWN0aXZlJywgJ2RhdGEyJyk7Ci1JTlNFUlQgSU5UTyBob3RfdGVzdCBW QUxVRVMgKDMsICdkZWxldGVkJywgJ2RhdGEzJyk7Ci0KLS0tIFVwZGF0ZSBub24taW5kZXhl ZCBjb2x1bW4gb24gJ2FjdGl2ZScgcm93IChpbiBwcmVkaWNhdGUsIHN0YXR1cyB1bmNoYW5n ZWQpCi0tLSBTaG91bGQgYmUgSE9UCi1VUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBk YXRlZDEnIFdIRVJFIGlkID0gMTsKLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90 X3Rlc3QnKTsKLQotLS0gVXBkYXRlIG5vbi1pbmRleGVkIGNvbHVtbiBvbiAnaW5hY3RpdmUn IHJvdyAob3V0c2lkZSBwcmVkaWNhdGUpCi0tLSBTaG91bGQgYmUgSE9UCi1VUERBVEUgaG90 X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZDInIFdIRVJFIGlkID0gMjsKLVNFTEVDVCAqIEZS T00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKKy0tIFZBQ1VVTSBjb2xsYXBzZXMgdGhl IGNoYWluLgorVkFDVVVNIGhvdF90ZXN0OwogCi0tLSBVcGRhdGUgc3RhdHVzIGZyb20gJ2lu YWN0aXZlJyB0byAnZGVsZXRlZCcgKGJvdGggb3V0c2lkZSBwcmVkaWNhdGUpCi0tLSBQb3N0 Z3JlU1FMIGlzIGNvbnNlcnZhdGl2ZTogaGVhcCBpbnNlcnQgaGFwcGVucyBiZWZvcmUgcHJl ZGljYXRlIGNoZWNrCi0tLSBTbyB0aGlzIGlzIE5PTi1IT1QgZXZlbiB0aG91Z2ggYm90aCB2 YWx1ZXMgYXJlIG91dHNpZGUgcHJlZGljYXRlCi1VUERBVEUgaG90X3Rlc3QgU0VUIHN0YXR1 cyA9ICdkZWxldGVkJyBXSEVSRSBpZCA9IDI7Ci1TRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291 bnQoJ2hvdF90ZXN0Jyk7CitXSVRIIGN1cnJlbnRfdHVwbGUgQVMgKFNFTEVDVCBjdGlkIEZS T00gaG90X3Rlc3QgV0hFUkUgaWQgPSAxKQorU0VMRUNUIGhhc19ob3RfY2hhaW4oJ2hvdF90 ZXN0JywgY3VycmVudF90dXBsZS5jdGlkKSBBUyBoYXNfY2hhaW4sCisgICAgICAgY2hhaW5f cG9zaXRpb24sIHByaW50X2hvdF9jaGFpbi5jdGlkLCBscF9mbGFncywgdF9jdGlkCitGUk9N IGN1cnJlbnRfdHVwbGUsIExBVEVSQUwgcHJpbnRfaG90X2NoYWluKCdob3RfdGVzdCcsIGN1 cnJlbnRfdHVwbGUuY3RpZCk7CiAKLS0tIFZlcmlmeSBpbmRleCBzdGlsbCB3b3JrcyBmb3Ig J2FjdGl2ZScgcm93cwotU0VMRUNUIGlkLCBzdGF0dXMgRlJPTSBob3RfdGVzdCBXSEVSRSBz dGF0dXMgPSAnYWN0aXZlJzsKLQotLS0gT25seSBCUklOIChzdW1tYXJpemluZykgaW5kZXhl cyBvbiBub24tUEsgY29sdW1ucwogRFJPUCBUQUJMRSBob3RfdGVzdDsKIAorLS0gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCistLSAyLiBTdW1tYXJpemluZyBpbmRleGVzIChCUklOKSBkbyBu b3QgYmxvY2sgSE9UCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIENSRUFURSBUQUJMRSBo b3RfdGVzdCAoCiAgICAgaWQgaW50IFBSSU1BUlkgS0VZLAogICAgIHRzIHRpbWVzdGFtcCwK ICAgICB2YWx1ZSBpbnQsCiAgICAgYnJpbl9jb2wgaW50CiApIFdJVEggKGZpbGxmYWN0b3Ig PSA1MCk7Ci0KIENSRUFURSBJTkRFWCBob3RfdGVzdF90c19icmluIE9OIGhvdF90ZXN0IFVT SU5HIGJyaW4odHMpOwogQ1JFQVRFIElOREVYIGhvdF90ZXN0X2JyaW5fY29sX2JyaW4gT04g aG90X3Rlc3QgVVNJTkcgYnJpbihicmluX2NvbCk7CiAKIElOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMSwgJzIwMjQtMDEtMDEnLCAxMDAsIDEwMDApOwogCi0tLSBVcGRhdGUgYm90 aCBCUklOIGNvbHVtbnMgLSBzaG91bGQgc3RpbGwgYmUgSE9UIChvbmx5IHN1bW1hcml6aW5n IGluZGV4ZXMpCistLSBCUklOIGNvbHVtbnMgYXJlIHN1bW1hcml6aW5nOyB1cGRhdGluZyB0 aGVtIHN0YXlzIGNsYXNzaWMgSE9UIGV2ZW4KKy0tIHRob3VnaCB0aGVpciB2YWx1ZXMgY2hh bmdlLgogVVBEQVRFIGhvdF90ZXN0IFNFVCB0cyA9ICcyMDI0LTAxLTAyJywgYnJpbl9jb2wg PSAyMDAwIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2go KTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKIAotLS0gVXBk YXRlIG5vbi1pbmRleGVkIGNvbHVtbiAtIHNob3VsZCBhbHNvIGJlIEhPVAorLS0gTm9uLWlu ZGV4ZWQgY29sdW1uOiBhbHNvIEhPVC4KIFVQREFURSBob3RfdGVzdCBTRVQgdmFsdWUgPSAy MDAgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwog U0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfdGVzdCcpOwogCi0tLSBUT0FTVCBh bmQgSE9UOiBUT0FTVGVkIGNvbHVtbnMgY2FuIHBhcnRpY2lwYXRlIGluIEhPVAogRFJPUCBU QUJMRSBob3RfdGVzdDsKIAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAzLiBUT0FT VCBwYXJ0aWNpcGF0ZXMgaW4gSE9UIChub24taW5kZXhlZCBjb2x1bW4gcGF0aHMgb25seSkK Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKICAg ICBpZCBpbnQgUFJJTUFSWSBLRVksCiAgICAgaW5kZXhlZF9jb2wgaW50LAogICAgIGxhcmdl X3RleHQgdGV4dCwKICAgICBzbWFsbF90ZXh0IHRleHQKICkgV0lUSCAoZmlsbGZhY3RvciA9 IDUwKTsKLQogQ1JFQVRFIElOREVYIGhvdF90ZXN0X2lkeCBPTiBob3RfdGVzdChpbmRleGVk X2NvbCk7CiAKLS0tIEluc2VydCByb3cgd2l0aCBUT0FTVGVkIGNvbHVtbiAoPiAyS0IpCiBJ TlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDEsIDEwMCwgcmVwZWF0KCd4JywgMzAwMCks ICdzbWFsbCcpOwogCi0tLSBVcGRhdGUgbm9uLWluZGV4ZWQsIG5vbi1UT0FTVGVkIGNvbHVt biAtIHNob3VsZCBiZSBIT1QKKy0tIE5vbi1pbmRleGVkLCBub24tVE9BU1QgY29sdW1uOiBI T1QuCiBVUERBVEUgaG90X3Rlc3QgU0VUIHNtYWxsX3RleHQgPSAndXBkYXRlZCc7CitTRUxF Q1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBTRUxFQ1QgKiBGUk9NIGdldF9ob3Rf Y291bnQoJ2hvdF90ZXN0Jyk7CiAKLS0tIFVwZGF0ZSBUT0FTVGVkIGNvbHVtbiAtIHNob3Vs ZCBiZSBIT1QgaWYgaW5kZXhlZCBjb2x1bW4gdW5jaGFuZ2VkCistLSBUT0FTVCBjb2x1bW4s IGluZGV4ZWRfY29sIHVuY2hhbmdlZDogSE9ULgogVVBEQVRFIGhvdF90ZXN0IFNFVCBsYXJn ZV90ZXh0ID0gcmVwZWF0KCd5JywgMzAwMCk7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0 X2ZsdXNoKCk7CiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CiAK LS0tIFVwZGF0ZSBpbmRleGVkIGNvbHVtbiAtIHNob3VsZCBOT1QgYmUgSE9UCi1VUERBVEUg aG90X3Rlc3QgU0VUIGluZGV4ZWRfY29sID0gMjAwOwotU0VMRUNUICogRlJPTSBnZXRfaG90 X2NvdW50KCdob3RfdGVzdCcpOwotCi0tLSBVbmlxdWUgY29uc3RyYWludCAodW5pcXVlIGlu ZGV4KSBiZWhhdmVzIGxpa2UgcmVndWxhciBpbmRleAogRFJPUCBUQUJMRSBob3RfdGVzdDsK IAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSA0LiBQYXJ0aWFsIGluZGV4IHdoZXJl IHVwZGF0ZSBsZWF2ZXMgaW5kZXhlZCBhdHRycyB1bmNoYW5nZWQKKy0tIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKICAgICBpZCBpbnQgUFJJTUFS WSBLRVksCi0gICAgdW5pcXVlX2NvbCBpbnQgVU5JUVVFLAorICAgIHN0YXR1cyB0ZXh0LAog ICAgIGRhdGEgdGV4dAogKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVY IGhvdF90ZXN0X2FjdGl2ZV9pZHggT04gaG90X3Rlc3Qoc3RhdHVzKSBXSEVSRSBzdGF0dXMg PSAnYWN0aXZlJzsKIAotSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAxMDAsICdk YXRhMScpOwotSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgyLCAyMDAsICdkYXRhMicp OworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgxLCAnYWN0aXZlJywgJ2RhdGExJyk7 CitJTlNFUlQgSU5UTyBob3RfdGVzdCBWQUxVRVMgKDIsICdpbmFjdGl2ZScsICdkYXRhMicp OworSU5TRVJUIElOVE8gaG90X3Rlc3QgVkFMVUVTICgzLCAnZGVsZXRlZCcsICdkYXRhMycp OwogCi0tLSBVcGRhdGUgZGF0YSAobm9uLWluZGV4ZWQpIC0gc2hvdWxkIGJlIEhPVAotVVBE QVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQnOworLS0gVXBkYXRlIGRhdGEgb24g YSByb3cgd2hvc2Ugc3RhdHVzIG1hdGNoZXMgdGhlIHBhcnRpYWwgcHJlZGljYXRlOiBIT1Qu CitVUERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZDEnIFdIRVJFIGlkID0gMTsK K1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIFNFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKIAotLS0gVmVyaWZ5IHVuaXF1ZSBjb25zdHJhaW50 IHN0aWxsIGVuZm9yY2VkCi1TRUxFQ1QgaWQsIHVuaXF1ZV9jb2wsIGRhdGEgRlJPTSBob3Rf dGVzdCBPUkRFUiBCWSBpZDsKKy0tIFVwZGF0ZSBkYXRhIG9uIGEgcm93IG91dHNpZGUgdGhl IHByZWRpY2F0ZTogSE9ULgorVVBEQVRFIGhvdF90ZXN0IFNFVCBkYXRhID0gJ3VwZGF0ZWQy JyBXSEVSRSBpZCA9IDI7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitT RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CiAKLS0tIFRoaXMgc2hv dWxkIGZhaWwgKHVuaXF1ZSB2aW9sYXRpb24pCi1VUERBVEUgaG90X3Rlc3QgU0VUIHVuaXF1 ZV9jb2wgPSAxMDAgV0hFUkUgaWQgPSAyOworU0VMRUNUIGlkLCBzdGF0dXMgRlJPTSBob3Rf dGVzdCBXSEVSRSBzdGF0dXMgPSAnYWN0aXZlJzsKIAotLS0gTXVsdGktY29sdW1uIGluZGV4 OiBhbnkgY29sdW1uIGNoYW5nZSA9IG5vbi1IT1QKIERST1AgVEFCTEUgaG90X3Rlc3Q7CiAK Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNS4gTXVsdGktY29sdW1uIGJ0cmVlOiB1 cGRhdGUgb2Ygbm9uLWluZGV4ZWQgY29sdW1uCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K IENSRUFURSBUQUJMRSBob3RfdGVzdCAoCiAgICAgaWQgaW50IFBSSU1BUlkgS0VZLAogICAg IGNvbF9hIGludCwKQEAgLTM1NiwzNiArMjYwLDQ1IEBAIENSRUFURSBUQUJMRSBob3RfdGVz dCAoCiAgICAgY29sX2MgaW50LAogICAgIGRhdGEgdGV4dAogKSBXSVRIIChmaWxsZmFjdG9y ID0gNTApOwotCiBDUkVBVEUgSU5ERVggaG90X3Rlc3RfYWJfaWR4IE9OIGhvdF90ZXN0KGNv bF9hLCBjb2xfYik7CiAKIElOU0VSVCBJTlRPIGhvdF90ZXN0IFZBTFVFUyAoMSwgMTAsIDIw LCAzMCwgJ2RhdGEnKTsKIAotLS0gVXBkYXRlIGNvbF9hIChwYXJ0IG9mIG11bHRpLWNvbHVt biBpbmRleCkgLSBzaG91bGQgTk9UIGJlIEhPVAotVVBEQVRFIGhvdF90ZXN0IFNFVCBjb2xf YSA9IDE1OworLS0gY29sX2Mgbm90IGluIGFueSBpbmRleDogSE9ULgorVVBEQVRFIGhvdF90 ZXN0IFNFVCBjb2xfYyA9IDM1OworLS0gZGF0YSBub3QgaW4gYW55IGluZGV4OiBIT1QuCitV UERBVEUgaG90X3Rlc3QgU0VUIGRhdGEgPSAndXBkYXRlZCc7CitTRUxFQ1QgcGdfc3RhdF9m b3JjZV9uZXh0X2ZsdXNoKCk7CiBTRUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90 ZXN0Jyk7CiAKLS0tIFJlc2V0Ci1VUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9hID0gMTA7Ci0K LS0tIFVwZGF0ZSBjb2xfYiAocGFydCBvZiBtdWx0aS1jb2x1bW4gaW5kZXgpIC0gc2hvdWxk IE5PVCBiZSBIT1QKLVVQREFURSBob3RfdGVzdCBTRVQgY29sX2IgPSAyNTsKLVNFTEVDVCAq IEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKK0RST1AgVEFCTEUgaG90X3Rlc3Q7 CiAKLS0tIFJlc2V0Ci1VUERBVEUgaG90X3Rlc3QgU0VUIGNvbF9iID0gMjA7Ci1TRUxFQ1Qg KiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90ZXN0Jyk7CistLSAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKy0tIDYuIFVuaXF1ZSBpbmRleDogdXBkYXRlIG9mIG5vbi1pbmRleGVkIGNvbHVt biArIHVuaXF1ZW5lc3MgZW5mb3JjZW1lbnQKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor Q1JFQVRFIFRBQkxFIGhvdF90ZXN0ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAg dW5pcXVlX2NvbCBpbnQgVU5JUVVFLAorICAgIGRhdGEgdGV4dAorKSBXSVRIIChmaWxsZmFj dG9yID0gNTApOwogCi0tLSBVcGRhdGUgY29sX2MgKG5vdCBpbmRleGVkKSAtIHNob3VsZCBi ZSBIT1QKLVVQREFURSBob3RfdGVzdCBTRVQgY29sX2MgPSAzNTsKK0lOU0VSVCBJTlRPIGhv dF90ZXN0IFZBTFVFUyAoMSwgMTAwLCAnZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhvdF90ZXN0 IFZBTFVFUyAoMiwgMjAwLCAnZGF0YTInKTsKIAotLS0gVXBkYXRlIGRhdGEgKG5vdCBpbmRl eGVkKSAtIHNob3VsZCBiZSBIT1QKIFVQREFURSBob3RfdGVzdCBTRVQgZGF0YSA9ICd1cGRh dGVkJzsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIFNFTEVDVCAqIEZS T00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3QnKTsKIAotLS0gUGFydGl0aW9uZWQgdGFibGVz OiBIT1Qgd29ya3Mgd2l0aGluIHBhcnRpdGlvbnMKLURST1AgVEFCTEUgSUYgRVhJU1RTIGhv dF90ZXN0X3BhcnRpdGlvbmVkIENBU0NBREU7CitTRUxFQ1QgaWQsIHVuaXF1ZV9jb2wsIGRh dGEgRlJPTSBob3RfdGVzdCBPUkRFUiBCWSBpZDsKIAorLS0gVW5pcXVlIGNvbnN0cmFpbnQg c3RpbGwgZW5mb3JjZWQgb24gYW55IHBhdGguCitVUERBVEUgaG90X3Rlc3QgU0VUIHVuaXF1 ZV9jb2wgPSAxMDAgV0hFUkUgaWQgPSAyOworCitEUk9QIFRBQkxFIGhvdF90ZXN0OworCist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDcuIFBhcnRpdGlvbmVkIHRhYmxlczogSE9U IHdpdGhpbiBhIHBhcnRpdGlvbgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBDUkVBVEUg VEFCTEUgaG90X3Rlc3RfcGFydGl0aW9uZWQgKAogICAgIGlkIGludCwKICAgICBwYXJ0aXRp b25fa2V5IGludCwKQEAgLTQwNCwyMDIgKzMxNyw4MiBAQCBDUkVBVEUgSU5ERVggaG90X3Rl c3RfcGFydF9pZHggT04gaG90X3Rlc3RfcGFydGl0aW9uZWQoaW5kZXhlZF9jb2wpOwogSU5T RVJUIElOVE8gaG90X3Rlc3RfcGFydGl0aW9uZWQgVkFMVUVTICgxLCA1MCwgMTAwLCAnaW5p dGlhbDEnKTsKIElOU0VSVCBJTlRPIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFZBTFVFUyAoMiwg MTUwLCAyMDAsICdpbml0aWFsMicpOwogCi0tLSBVcGRhdGUgaW4gcGFydGl0aW9uIDEgKG5v bi1pbmRleGVkIGNvbHVtbikgLSBzaG91bGQgYmUgSE9UCiBVUERBVEUgaG90X3Rlc3RfcGFy dGl0aW9uZWQgU0VUIGRhdGEgPSAndXBkYXRlZDEnIFdIRVJFIGlkID0gMTsKLQotLS0gVXBk YXRlIGluIHBhcnRpdGlvbiAyIChub24taW5kZXhlZCBjb2x1bW4pIC0gc2hvdWxkIGJlIEhP VAogVVBEQVRFIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFNFVCBkYXRhID0gJ3VwZGF0ZWQyJyBX SEVSRSBpZCA9IDI7CiAKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIFNF TEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3Rlc3RfcGFydDEnKTsKK1NFTEVDVCBw Z19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3Vu dCgnaG90X3Rlc3RfcGFydDInKTsKIAotLS0gVmVyaWZ5IGluZGV4ZXMgd29yayBvbiBwYXJ0 aXRpb25zCiBTRUxFQ1QgaWQgRlJPTSBob3RfdGVzdF9wYXJ0aXRpb25lZCBXSEVSRSBpbmRl eGVkX2NvbCA9IDEwMDsKIFNFTEVDVCBpZCBGUk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFdI RVJFIGluZGV4ZWRfY29sID0gMjAwOwogCi0tLSBVcGRhdGUgaW5kZXhlZCBjb2x1bW4gaW4g cGFydGl0aW9uIC0gc2hvdWxkIE5PVCBiZSBIT1QKLVVQREFURSBob3RfdGVzdF9wYXJ0aXRp b25lZCBTRVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAxOwotU0VMRUNUICogRlJP TSBnZXRfaG90X2NvdW50KCdob3RfdGVzdF9wYXJ0MScpOwotCi0tLSBWZXJpZnkgaW5kZXgg d2FzIHVwZGF0ZWQKLVNFTEVDVCBpZCBGUk9NIGhvdF90ZXN0X3BhcnRpdGlvbmVkIFdIRVJF IGluZGV4ZWRfY29sID0gMTUwOwotCi0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU cmlnZ2VyIG1vZGlmaWNhdGlvbnM6IGhlYXBfbW9kaWZ5X3R1cGxlKCkgYW5kIEhPVAotLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gVGVzdCB0aGF0IHdlIGNvcnJlY3RseSBkZXRl Y3Qgd2hlbiB0cmlnZ2VycyBtb2RpZnkgaW5kZXhlZCBjb2x1bW5zIHZpYQotLS0gaGVhcF9t b2RpZnlfdHVwbGUoKSwgZXZlbiB3aGVuIHRob3NlIGNvbHVtbnMgYXJlbid0IGluIHRoZSBV UERBVEUncyBTRVQgY2xhdXNlCi0KLUNSRUFURSBUQUJMRSBob3RfdHJpZ2dlcl90ZXN0ICgK LSAgICBpZCBpbnQgUFJJTUFSWSBLRVksCi0gICAgdHJpZ2dlcmVkX2NvbCBpbnQsCi0gICAg ZGF0YSB0ZXh0Ci0pIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7Ci0KLUNSRUFURSBJTkRFWCBo b3RfdHJpZ2dlcl9pZHggT04gaG90X3RyaWdnZXJfdGVzdCh0cmlnZ2VyZWRfY29sKTsKLQot LS0gQ3JlYXRlIGEgdHJpZ2dlciB0aGF0IG1vZGlmaWVzIGFuIGluZGV4ZWQgY29sdW1uCi1D UkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBtb2RpZnlfdHJpZ2dlcmVkX2NvbCgpCi1SRVRV Uk5TIFRSSUdHRVIgQVMgJCQKLUJFR0lOCi0gICAgTkVXLnRyaWdnZXJlZF9jb2wgPSBORVcu dHJpZ2dlcmVkX2NvbCArIDE7Ci0gICAgUkVUVVJOIE5FVzsKLUVORDsKLSQkIExBTkdVQUdF IHBscGdzcWw7Ci0KLUNSRUFURSBUUklHR0VSIGJlZm9yZV91cGRhdGVfbW9kaWZ5Ci0gICAg QkVGT1JFIFVQREFURSBPTiBob3RfdHJpZ2dlcl90ZXN0Ci0gICAgRk9SIEVBQ0ggUk9XCi0g ICAgRVhFQ1VURSBGVU5DVElPTiBtb2RpZnlfdHJpZ2dlcmVkX2NvbCgpOwotCi1JTlNFUlQg SU5UTyBob3RfdHJpZ2dlcl90ZXN0IFZBTFVFUyAoMSwgMTAwLCAnaW5pdGlhbCcpOwotCi1T RUxFQ1QgKiBGUk9NIGdldF9ob3RfY291bnQoJ2hvdF90cmlnZ2VyX3Rlc3QnKTsKLQotLS0g VXBkYXRlIG9ubHkgZGF0YSBjb2x1bW4sIGJ1dCB0cmlnZ2VyIG1vZGlmaWVzIGluZGV4ZWQg Y29sdW1uCi0tLSBTaG91bGQgTk9UIGJlIEhPVCBiZWNhdXNlIHRyaWdnZXIgbW9kaWZpZWQg YW4gaW5kZXhlZCBjb2x1bW4KLVVQREFURSBob3RfdHJpZ2dlcl90ZXN0IFNFVCBkYXRhID0g J3VwZGF0ZWQnIFdIRVJFIGlkID0gMTsKLQotLS0gVmVyaWZ5IGl0IHdhcyBOT1QgYSBIT1Qg dXBkYXRlIChpbmRleGVkIGNvbHVtbiB3YXMgbW9kaWZpZWQgYnkgdHJpZ2dlcikKLVNFTEVD VCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3RyaWdnZXJfdGVzdCcpOwotCi0tLSBWZXJp ZnkgdGhlIHRyaWdnZXJlZCBjb2x1bW4gd2FzIGFjdHVhbGx5IG1vZGlmaWVkCi1TRUxFQ1Qg dHJpZ2dlcmVkX2NvbCBGUk9NIGhvdF90cmlnZ2VyX3Rlc3QgV0hFUkUgaWQgPSAxOwotCi1E Uk9QIFRBQkxFIGhvdF90cmlnZ2VyX3Rlc3QgQ0FTQ0FERTsKLURST1AgRlVOQ1RJT04gbW9k aWZ5X3RyaWdnZXJlZF9jb2woKTsKLQotLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g SlNPTkIgZXhwcmVzc2lvbiBpbmRleGVzIGFuZCBzdWItYXR0cmlidXRlIHRyYWNraW5nCi0t LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUZXN0IHRoYXQgdXBkYXRlcyB0byBub24t aW5kZXhlZCBKU09OQiBwYXRocyBjYW4gYmUgSE9UIHVwZGF0ZXMKK0RST1AgVEFCTEUgaG90 X3Rlc3RfcGFydGl0aW9uZWQgQ0FTQ0FERTsKIAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CistLSA4LiBKU09OQiBleHByZXNzaW9uIGluZGV4OiBub24taW5kZXhlZCBwYXRoIGNoYW5n ZSBpcyBIT1QKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF9q c29uYl90ZXN0ICgKICAgICBpZCBpbnQgUFJJTUFSWSBLRVksCiAgICAgZGF0YSBqc29uYgog KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwotCi0tLSBDcmVhdGUgZXhwcmVzc2lvbiBpbmRl eCBvbiBhIHNwZWNpZmljIEpTT04gcGF0aAogQ1JFQVRFIElOREVYIGhvdF9qc29uYl9uYW1l X2lkeCBPTiBob3RfanNvbmJfdGVzdCAoKGRhdGEtPj4nbmFtZScpKTsKIAogSU5TRVJUIElO VE8gaG90X2pzb25iX3Rlc3QgVkFMVUVTCiAgICAgKDEsICd7Im5hbWUiOiJBbGljZSIsImFn ZSI6MzAsImNpdHkiOiJOWUMifScpLAogICAgICgyLCAneyJuYW1lIjoiQm9iIiwiYWdlIjoy NSwiY2l0eSI6IkxBIn0nKTsKIAotU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3Rf anNvbmJfdGVzdCcpOwotCi0tLSBVcGRhdGUgbm9uLWluZGV4ZWQgSlNPTiBwYXRoIChhZ2Up IC0gc2hvdWxkIGJlIEhPVCBhZnRlciBpbnN0cnVtZW50YXRpb24KKy0tIFRoZSBqc29uYiBj b2x1bW4gaXMgdGhlIGV4cHJlc3Npb24gaW5kZXgncyBpbnB1dCwgc28gSE9ULWluZGV4ZWQg aXMKKy0tIGRpc3F1YWxpZmllZCAoZXhwcmVzc2lvbiBpbmRleGVzIGFyZSBub3QgeWV0IHN1 cHBvcnRlZCkgYW5kIHRoZSBqc29uYgorLS0gY2hhbmdlIGJsb2NrcyBjbGFzc2ljIEhPVDog bm9uLUhPVCB1cGRhdGUuCiBVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBqc29u Yl9zZXQoZGF0YSwgJ3thZ2V9JywgJzMxJykgV0hFUkUgaWQgPSAxOwotCi1TRUxFQ1QgKiBG Uk9NIGdldF9ob3RfY291bnQoJ2hvdF9qc29uYl90ZXN0Jyk7Ci0KLS0tIFVwZGF0ZSBpbmRl eGVkIEpTT04gcGF0aCAobmFtZSkgLSBzaG91bGQgTk9UIGJlIEhPVAotVVBEQVRFIGhvdF9q c29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfc2V0KGRhdGEsICd7bmFtZX0nLCAnIkFsaWNl MiInKSBXSEVSRSBpZCA9IDE7Ci0KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2go KTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsKIAot LS0gVmVyaWZ5IGluZGV4IHdvcmtzCi1TRUxFQ1QgaWQgRlJPTSBob3RfanNvbmJfdGVzdCBX SEVSRSBkYXRhLT4+J25hbWUnID0gJ0FsaWNlMic7Ci0KLS0tIFRlc3QganNvbmJfZGVsZXRl IG9uIG5vbi1pbmRleGVkIHBhdGggLSBzaG91bGQgYmUgSE9UIGFmdGVyIGluc3RydW1lbnRh dGlvbgorLS0gTGlrZXdpc2Ugbm9uLUhPVDogZXhwcmVzc2lvbiBpbmRleCBkaXNxdWFsaWZp ZXMgSE9ULWluZGV4ZWQuCiBVUERBVEUgaG90X2pzb25iX3Rlc3QgU0VUIGRhdGEgPSBkYXRh IC0gJ2NpdHknIFdIRVJFIGlkID0gMjsKLQorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9m bHVzaCgpOwogU0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfanNvbmJfdGVzdCcp OwogCi0tLSBUZXN0IGpzb25iX2luc2VydCBvbiBub24taW5kZXhlZCBwYXRoIC0gc2hvdWxk IGJlIEhPVCBhZnRlciBpbnN0cnVtZW50YXRpb24KKy0tIExpa2V3aXNlIG5vbi1IT1Q6IGV4 cHJlc3Npb24gaW5kZXggZGlzcXVhbGlmaWVzIEhPVC1pbmRleGVkLgogVVBEQVRFIGhvdF9q c29uYl90ZXN0IFNFVCBkYXRhID0ganNvbmJfaW5zZXJ0KGRhdGEsICd7Y291bnRyeX0nLCAn IlVTQSInKSBXSEVSRSBpZCA9IDI7Ci0KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1 c2goKTsKIFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2pzb25iX3Rlc3QnKTsK IAogRFJPUCBUQUJMRSBob3RfanNvbmJfdGVzdDsKIAotLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gWE1MIGV4cHJlc3Npb24gaW5kZXhlcyBhbmQgc3ViLWF0dHJpYnV0ZSB0cmFj a2luZwotLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVGVzdCB0aGF0IHVwZGF0ZXMg dG8gbm9uLWluZGV4ZWQgWE1MIHBhdGhzIGNhbiBiZSBIT1QgdXBkYXRlcwotCi1DUkVBVEUg VEFCTEUgaG90X3htbF90ZXN0ICgKLSAgICBpZCBpbnQgUFJJTUFSWSBLRVksCi0gICAgZG9j IHhtbAotKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwotCi0tLSBDcmVhdGUgZXhwcmVzc2lv biBpbmRleCBvbiBhIHNwZWNpZmljIFhQYXRoCi1DUkVBVEUgSU5ERVggaG90X3htbF9uYW1l X2lkeCBPTiBob3RfeG1sX3Rlc3QgKCh4cGF0aCgnL3BlcnNvbi9uYW1lL3RleHQoKScsIGRv YykpKTsKLQotSU5TRVJUIElOVE8gaG90X3htbF90ZXN0IFZBTFVFUwotICAgICgxLCAnPHBl cnNvbj48bmFtZT5BbGljZTwvbmFtZT48YWdlPjMwPC9hZ2U+PC9wZXJzb24+JyksCi0gICAg KDIsICc8cGVyc29uPjxuYW1lPkJvYjwvbmFtZT48YWdlPjI1PC9hZ2U+PC9wZXJzb24+Jyk7 Ci0KLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X3htbF90ZXN0Jyk7Ci0KLS0t IFVwZGF0ZSBub24taW5kZXhlZCBYUGF0aCAoYWdlKSAtIGJlaGF2aW9yIGRlcGVuZHMgb24g WE1MIGNvbXBhcmlzb24gZmFsbGJhY2sKLS0tIEZ1bGwgWE1MIHZhbHVlIHJlcGxhY2VtZW50 IG1lYW5zIG5vbi1pbmRleGVkIHBhdGggdXBkYXRlcyBzdGlsbCByZXF1aXJlIGluZGV4IGNv bXBhcmlzb24KLVVQREFURSBob3RfeG1sX3Rlc3QgU0VUIGRvYyA9ICc8cGVyc29uPjxuYW1l PkFsaWNlPC9uYW1lPjxhZ2U+MzE8L2FnZT48L3BlcnNvbj4nIFdIRVJFIGlkID0gMTsKLQot U0VMRUNUICogRlJPTSBnZXRfaG90X2NvdW50KCdob3RfeG1sX3Rlc3QnKTsKLQotLS0gVXBk YXRlIGluZGV4ZWQgWFBhdGggKG5hbWUpIC0gc2hvdWxkIE5PVCBiZSBIT1QKLVVQREFURSBo b3RfeG1sX3Rlc3QgU0VUIGRvYyA9ICc8cGVyc29uPjxuYW1lPkFsaWNlMjwvbmFtZT48YWdl PjMxPC9hZ2U+PC9wZXJzb24+JyBXSEVSRSBpZCA9IDE7Ci0KLVNFTEVDVCAqIEZST00gZ2V0 X2hvdF9jb3VudCgnaG90X3htbF90ZXN0Jyk7Ci0KLS0tIFZlcmlmeSBpbmRleCB3b3Jrcwot U0VMRUNUIGlkIEZST00gaG90X3htbF90ZXN0IFdIRVJFIHhwYXRoKCcvcGVyc29uL25hbWUv dGV4dCgpJywgZG9jKSA9IEFSUkFZWydBbGljZTInOjp0ZXh0XTsKLQotRFJPUCBUQUJMRSBo b3RfeG1sX3Rlc3Q7Ci0KLS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEdJTiBpbmRl eGVzIGFuZCBhbWNvbXBhcmVkYXR1bXMgZm9yIEpTT05CCi0tLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBUZXN0IHRoYXQgR0lOIGluZGV4ZXMgY2FuIHVzZSBhbWNvbXBhcmVkYXR1 bXMgdG8gZW5hYmxlIEhPVCB3aGVuIGV4dHJhY3RlZCBrZXlzIG1hdGNoCi0KKy0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorLS0gOS4gQSBjaGFuZ2UgdG8gYSBHSU4taW5kZXhlZCBjb2x1 bW4gaXMgSE9ULWluZGV4ZWQKKy0tCistLSBUaGUgcmVhZCBzaWRlIGZpbHRlcnMgYSBzdGFs ZSBsZWFmIHZpYSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwLCB3aGljaAorLS0gaXMg YWNjZXNzLW1ldGhvZCBhZ25vc3RpYywgc28gYSBHSU4tY292ZXJlZCBjb2x1bW4gaXMgSE9U LWluZGV4ZWQgbGlrZSBhbnkKKy0tIG90aGVyOiBvbmx5IHRoZSBHSU4gaW5kZXggaXMgbWFp bnRhaW5lZCwgYW5kIGEgR0lOIHNjYW4gKHdoaWNoIHJlY2hlY2tzIG9uCistLSB0aGUgaGVh cCkgcmV0dXJucyBjb3JyZWN0IHJlc3VsdHMgYWNyb3NzIHRoZSBjaGFpbi4KKy0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogQ1JFQVRFIFRBQkxFIGhvdF9naW5fdGVzdCAoCiAgICAgaWQg aW50IFBSSU1BUlkgS0VZLAogICAgIHRhZ3MgdGV4dFtdLAogICAgIHByb3BlcnRpZXMganNv bmIKICkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKLQotLS0gR0lOIGluZGV4IG9uIHRleHQg YXJyYXkKIENSRUFURSBJTkRFWCBob3RfZ2luX3RhZ3NfaWR4IE9OIGhvdF9naW5fdGVzdCBV U0lORyBnaW4gKHRhZ3MpOwotCi0tLSBHSU4gaW5kZXggb24gSlNPTkIgKGpzb25iX29wcyAt IGtleXMgYW5kIHZhbHVlcykKIENSRUFURSBJTkRFWCBob3RfZ2luX3Byb3BzX2lkeCBPTiBo b3RfZ2luX3Rlc3QgVVNJTkcgZ2luIChwcm9wZXJ0aWVzKTsKIAogSU5TRVJUIElOVE8gaG90 X2dpbl90ZXN0IFZBTFVFUwogICAgICgxLCBBUlJBWVsndGFnMScsICd0YWcyJ10sICd7Imtl eTEiOiJ2YWwxIiwia2V5MiI6InZhbDIifScpLAogICAgICgyLCBBUlJBWVsndGFnMycsICd0 YWc0J10sICd7ImtleTMiOiJ2YWwzIiwia2V5NCI6InZhbDQifScpOwogCi1TRUxFQ1QgKiBG Uk9NIGdldF9ob3RfY291bnQoJ2hvdF9naW5fdGVzdCcpOwotCi0tLSBVcGRhdGUgdGhhdCBj aGFuZ2VzIHRhZyBvcmRlciBidXQgbm90IGNvbnRlbnQgLSBhZnRlciBhbWNvbXBhcmVkYXR1 bXMgc2hvdWxkIGJlIEhPVAotLS0gKEdJTiBleHRyYWN0cyBzYW1lIGtleXMsIGp1c3QgZGlm ZmVyZW50IG9yZGVyKQorLS0gUmVvcmRlciB0YWdzOiBhIEdJTi1jb3ZlcmVkIGNvbHVtbiBj aGFuZ2VzLCBzbyB0aGlzIGlzIEhPVC1pbmRleGVkLgogVVBEQVRFIGhvdF9naW5fdGVzdCBT RVQgdGFncyA9IEFSUkFZWyd0YWcyJywgJ3RhZzEnXSBXSEVSRSBpZCA9IDE7Ci0KLVNFTEVD VCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90ZXN0Jyk7Ci0KLS0tIFVwZGF0ZSBK U09OQiB2YWx1ZSAobm90IGtleSkgLSBhZnRlciBhbWNvbXBhcmVkYXR1bXMgbWF5IGJlIEhP VCBvciBub24tSE9UCi0tLSBkZXBlbmRpbmcgb24gR0lOIG9wZXJhdG9yIGNsYXNzIChqc29u Yl9vcHMgaW5kZXhlcyBib3RoIGtleXMgYW5kIHZhbHVlcykKLVVQREFURSBob3RfZ2luX3Rl c3QgU0VUIHByb3BlcnRpZXMgPSAneyJrZXkxIjoidmFsMV9uZXciLCJrZXkyIjoidmFsMiJ9 JyBXSEVSRSBpZCA9IDE7Ci0KK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsK IFNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3VudCgnaG90X2dpbl90ZXN0Jyk7CiAKLS0tIEFk ZCBuZXcgdGFnIC0gc2hvdWxkIE5PVCBiZSBIT1QgKGRpZmZlcmVudCBleHRyYWN0ZWQga2V5 cykKLVVQREFURSBob3RfZ2luX3Rlc3QgU0VUIHRhZ3MgPSBBUlJBWVsndGFnMicsICd0YWcx JywgJ3RhZzUnXSBXSEVSRSBpZCA9IDE7Ci0KLVNFTEVDVCAqIEZST00gZ2V0X2hvdF9jb3Vu dCgnaG90X2dpbl90ZXN0Jyk7Ci0KLS0tIFZlcmlmeSBHSU4gaW5kZXhlcyB3b3JrCi1TRUxF Q1QgaWQgRlJPTSBob3RfZ2luX3Rlc3QgV0hFUkUgdGFncyBAPiBBUlJBWVsndGFnNSddOwot U0VMRUNUIGlkIEZST00gaG90X2dpbl90ZXN0IFdIRVJFIHByb3BlcnRpZXMgQD4gJ3sia2V5 MSI6InZhbDFfbmV3In0nOwotCiBEUk9QIFRBQkxFIGhvdF9naW5fdGVzdDsKIAotLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSBDbGVh bnVwCi0tLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1EUk9QIFRBQkxFIElGIEVYSVNUUyBo b3RfdGVzdDsKLURST1AgVEFCTEUgSUYgRVhJU1RTIGhvdF90ZXN0X3BhcnRpdGlvbmVkIENB U0NBREU7Ci1EUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBoYXNfaG90X2NoYWluKHRleHQsIHRp ZCk7Ci1EUk9QIEZVTkNUSU9OIElGIEVYSVNUUyBwcmludF9ob3RfY2hhaW4odGV4dCwgdGlk KTsKLURST1AgRlVOQ1RJT04gSUYgRVhJU1RTIGdldF9ob3RfY291bnQodGV4dCk7CistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KK0RST1AgRlVOQ1RJT04gaGFzX2hvdF9jaGFpbih0ZXh0 LCB0aWQpOworRFJPUCBGVU5DVElPTiBwcmludF9ob3RfY2hhaW4odGV4dCwgdGlkKTsKK0RS T1AgRlVOQ1RJT04gZ2V0X2hvdF9jb3VudCh0ZXh0KTsKIERST1AgRVhURU5TSU9OIHBhZ2Vp bnNwZWN0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3Qg Yi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCAyZWY2MzExYjgyYy4u MzE1YjkyOTA5MGIgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMjc1LDYg KzEyNzUsNyBAQCBIZWFwVHVwbGVGcmVlemUKIEhlYXBUdXBsZUhlYWRlcgogSGVhcFR1cGxl SGVhZGVyRGF0YQogSGVhcFR1cGxlVGFibGVTbG90CitIZWFwVXBkYXRlSW5kZXhNb2RlCiBI aXN0Q29udHJvbAogSG9zdENhY2hlRW50cnkKIEhvc3RzRmlsZUxvYWRSZXN1bHQKQEAgLTMx MzYsNyArMzEzNyw2IEBAIFRTVmVjdG9yU3RhdAogVFN0YXRlCiBUU3RhdHVzCiBUU3RvcmVT dGF0ZQotVFVfVXBkYXRlSW5kZXhlcwogVFhORW50cnlGaWxlCiBUWVBDQVRFR09SWQogVF9B Y3Rpb24KLS0gCjIuNTAuMQoK --732d2653398ad274b1166a00220a1f2b85c8ed8b Content-Disposition: attachment; filename*0="v49-0005-Collapse-dead-HOT-indexed-chains-to-xid-free-stu.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v49-0005-Collapse-dead-HOT-indexed-chains-to-xid-free-stu.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSA2YzdiN2RjZWQwNDQ5ZjhjMTJmMzY4NWY0YWQ0NDg5MTllYjJhMzhmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMToyODozMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjQ5IDUv OV0gQ29sbGFwc2UgZGVhZCBIT1QtaW5kZXhlZCBjaGFpbnMgdG8geGlkLWZyZWUgc3R1YnMg b24KIHBydW5lL3ZhY3V1bQoKQSBIT1QtaW5kZXhlZCB1cGRhdGUgcGxhbnRzIGluZGV4IGVu dHJpZXMgdGhhdCBwb2ludCBhdCBtaWQtY2hhaW4gaGVhcC1vbmx5CnR1cGxlcywgc28gYSBk ZWFkIGNoYWluIG1lbWJlciBjYW5ub3Qgc2ltcGx5IGJlIHJlbW92ZWQ6IGEgbm90LXlldC1z d2VwdCBpbmRleAplbnRyeSBtYXkgc3RpbGwgYXJyaXZlIGF0IGl0LCBhbmQgdGhlIHBlci1o b3AgbW9kaWZpZWQtYXR0cnMgYml0bWFwIG9uIGl0IGlzCndoYXQgYSByZWFkZXIgdW5pb25z IHRvIGp1ZGdlIHN0YWxlbmVzcy4KClRlYWNoIHBydW5lIHRvIGNvbGxhcHNlIGEgZGVhZCBj aGFpbiBwcmVmaXggaW50byB4aWQtZnJlZSBmb3J3YXJkaW5nIHN0dWJzOgplYWNoIHByZXNl cnZlZCBkZWFkIGtleSB0dXBsZSBpcyByZXdyaXR0ZW4gaW4gcGxhY2UgdG8gYSBzdHViIChm cm96ZW4sCm5hdHRzID09IDAsIEhFQVBfSU5ERVhFRF9VUERBVEVELCBmb3J3YXJkaW5nIHZp YSB0X2N0aWQub2ZmbnVtKSB0aGF0IGtlZXBzIGl0cwpzZWdtZW50J3MgbW9kaWZpZWQtYXR0 cnMgYml0bWFwLCBhbmQgYSBtZW1iZXIgd2hvc2UgYXR0cmlidXRlcyBhcmUgd2hvbGx5CnN1 YnN1bWVkIGJ5IGxhdGVyIGhvcHMgaXMgcmVjbGFpbWVkIGluc3RlYWQuICBSZWFkZXJzIHN0 ZXAgdGhyb3VnaCBzdHVicwp0cmFuc3BhcmVudGx5IGFuZCBzdGlsbCBjcm9zcyBldmVyeSBz dXJ2aXZpbmcgaG9wJ3MgYml0bWFwLiAgVGhlIGNvbGxhcHNlIGJhY2sKdG8gY2xhc3NpYyBI T1QgaXMgZHJpdmVuIGJ5IHBydW5lOiBvbmNlIGEgY2hhaW4gaXMgZnVsbHkgZGVhZCwgYSBs YXRlciBwcnVuZQooaGVhcF9wcnVuZV9jaGFpbiAvIGhlYXBfcHJ1bmVfY2hhaW5fZmluZF9s aXZlKSByZWNsYWltcyBpdHMgbWVtYmVycyBhbmQKcmUtcG9pbnRzIHRoZSByb290IHJlZGly ZWN0IHN0cmFpZ2h0IGF0IHRoZSBmaXJzdCBsaXZlIHR1cGxlLiAgVkFDVVVNJ3MgaW5kZXgK Y2xlYW51cCBzd2VlcHMgdGhlIHN0YWxlIGxlYXZlczsgaXRzIHNlY29uZCBwYXNzIChsYXp5 X3ZhY3V1bV9oZWFwX3BhZ2UpIGRvZXMKdGhlIHVzdWFsIExQX0RFQUQgLT4gTFBfVU5VU0VE IGNvbnZlcnNpb24gYW5kIGxlYXZlcyB0aGUgSE9ULWluZGV4ZWQgY29sbGFwc2UKdG8gcHJ1 bmUuCgpUaGUgY29sbGFwc2UgcmV1c2VzIHRoZSBleGlzdGluZyBwcnVuZS9mcmVlemUgV0FM IHZpYSBhbiB4bGhwX3BydW5lX2l0ZW1zCnN1Yi1yZWNvcmQgY2FycnlpbmcgdGhlIChvZmZz ZXQsIGZvcndhcmQpIHN0dWIgcGFpcnM7IG5vIG5ldyByZWNvcmQgdHlwZSBpcwppbnRyb2R1 Y2VkLiAgQSBwYWdlIHRoYXQgc3RpbGwgY2FycmllcyBhIHByZXNlcnZlZCBzdHViIChvciBh IHJlZGlyZWN0IHRoYXQKZm9yd2FyZHMgaW50byBhIGxpdmUgSE9ULWluZGV4ZWQgbWVtYmVy KSBpcyBrZXB0IG5vbi1hbGwtdmlzaWJsZSBzbyBpbmRleC1vbmx5CnNjYW5zIGhlYXAtZmV0 Y2ggdGhyb3VnaCB0aGUgY2hhaW47IGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSBy ZWNvZ25pemVzCmJvdGggdGhlIHJlZGlyZWN0LXRvLVNJVSBhbmQgdGhlIHN0dWIgY2FzZSBl eHBsaWNpdGx5LgoKQ28tYXV0aG9yZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgpD by1hdXRob3JlZC1ieTogTmF0aGFuIEJvc3NhcnQgPG5hdGhhbmRib3NzYXJ0QGdtYWlsLmNv bT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQgfCAg MzggKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgICAgICB8ICAx MCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAgICAgIHwgNjQ1 ICsrKysrKysrKysrKysrKysrKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jICAgICAgIHwgIDk0ICsrLQogc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hl YXBkZXNjLmMgICAgIHwgIDM2ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAg ICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5o ICAgICAgICAgICB8ICAxOSArLQogNyBmaWxlcyBjaGFuZ2VkLCA3NzcgaW5zZXJ0aW9ucygr KSwgNzEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvUkVBRE1FLkhPVC1JTkRFWEVEIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1F LkhPVC1JTkRFWEVECmluZGV4IDVkNGEyYzdkNjZjLi5hYjRmOGJjMTg4MSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVC1JTkRFWEVECisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRApAQCAtMjA2LDYgKzIw Niw0NCBAQCB1bmRlciB0aGUgb3BjbGFzcyBldmVuIGlmIG5vdCBiaXR3aXNlLWlkZW50aWNh bCwgZS5nLiBudW1lcmljIDEuMCB2cyAxLjAwKSBpcwogc3RpbGwgZGV0ZWN0ZWQuICAoQXBw ZW5kaXggQSBtb3RpdmF0ZXMgdGhpcyByZWNoZWNrIGluIGRldGFpbC4pCiAKIAorUHJ1bmUg YW5kIGNoYWluIGNvbGxhcHNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0JlY2F1 c2UgYSBIT1QtaW5kZXhlZCB1cGRhdGUgcGxhbnRzIGFuIGluZGV4IGVudHJ5IHBvaW50aW5n IGF0IGEgbWlkLWNoYWluCitoZWFwLW9ubHkgdHVwbGUncyBvd24gVElELCBjbGFzc2ljIEhP VCdzIGFzc3VtcHRpb24gdGhhdCBtaWQtY2hhaW4gbGluZQorcG9pbnRlcnMgaGF2ZSBubyBl eHRlcm5hbCByZWZlcmVuY2VzIG5vIGxvbmdlciBob2xkcy4gIFBydW5pbmcgdGhlcmVmb3Jl IG11c3QKK25vdCByZWNsYWltIHN1Y2ggYSBsaW5lIHBvaW50ZXIgd2hpbGUgYSBub3QteWV0 LXN3ZXB0IGluZGV4IGVudHJ5IGNhbiBzdGlsbAorYXJyaXZlIGF0IGl0LgorCitoZWFwX3By dW5lX2NoYWluIGNvbGxhcHNlcyBhIHJ1biBvZiBkZWFkIGNoYWluIG1lbWJlcnMgdG8gYSBz aW5nbGUKK0xQX1JFRElSRUNUIHRoYXQgZm9yd2FyZHMgdG8gdGhlIGZpcnN0IGxpdmUgdHVw bGUsIGFuZCBwcmVzZXJ2ZXMgdGhlIGxpbmUKK3BvaW50ZXIgb2YgYSBsaXZlIEhPVC1pbmRl eGVkIG1lbWJlciAoaGVhcF9wcnVuZV9pdGVtX3ByZXNlcnZlc19ob3RfaW5kZXhlZCkKK3Nv IGEgcmVhZGVyIGFycml2aW5nIHZpYSBhIHN0YWxlIGVudHJ5IHN0aWxsIGZpbmRzIGEgd2Fs a2FibGUgaG9wLiAgTW9yZSB0aGFuCitvbmUgTFBfUkVESVJFQ1QgbWF5IGZvcndhcmQgdG8g dGhlIHNhbWUgbGl2ZSB0dXBsZS4gIFRoZSByZWRpcmVjdCBsaWZlY3ljbGUKK3JldXNlcyB0 aGUgZXhpc3RpbmcgcHJ1bmUgV0FMIHJlY29yZHM7IHRoZXJlIGlzIG5vIG5ldyBvbi1kaXNr IGZvcm1hdC4KKworCitWYWN1dW0gcmVjbGFtYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLQor CitWQUNVVU0ncyBpbmRleCBjbGVhbnVwIHN3ZWVwcyB0aGUgc3RhbGUgaW5kZXggZW50cmll cy4gIFRoZSBjb2xsYXBzZSBiYWNrIHRvCitjbGFzc2ljIEhPVCBpcyBkcml2ZW4gYnkgcHJ1 bmUsIG5vdCBieSBWQUNVVU0ncyBzZWNvbmQgcGFzczogb25jZSBhIGNoYWluIGlzCitmdWxs eSBkZWFkLCBhIGxhdGVyIHBydW5lIChoZWFwX3BydW5lX2NoYWluIC8gaGVhcF9wcnVuZV9j aGFpbl9maW5kX2xpdmUpCityZWNsYWltcyBpdHMgbWVtYmVycyBhbmQgcmUtcG9pbnRzIHRo ZSByb290IHJlZGlyZWN0IHN0cmFpZ2h0IGF0IGZpcnN0X2xpdmUuCitSZS1wb2ludGluZyBh IHJlZGlyZWN0IHByZXNlcnZlcyByZWFjaGFiaWxpdHkgKGV2ZXJ5IHdhbGtlciBzdGlsbCBy ZWFjaGVzCitmaXJzdF9saXZlKSwgc28gaXQgaXMgc2FmZSB1bmRlciB0aGUgZXhjbHVzaXZl IGxvY2sgcHJ1bmUgYWxyZWFkeSBob2xkcy4KKworVkFDVVVNJ3Mgc2Vjb25kIHBhc3MgKGxh enlfdmFjdXVtX2hlYXBfcGFnZSkgZG9lcyBub3QgaXRzZWxmIHJlLXBvaW50CityZWRpcmVj dHMgb3IgcmVjbGFpbSBzdHViczsgaXQgcGVyZm9ybXMgdGhlIHVzdWFsIExQX0RFQUQgLT4g TFBfVU5VU0VECitjb252ZXJzaW9uIGFuZCBsZWF2ZXMgdGhlIEhPVC1pbmRleGVkIGNvbGxh cHNlIHRvIHBydW5lLgorCitBIHBhZ2UgdGhhdCBzdGlsbCBjYXJyaWVzIGEgcHJlc2VydmVk IEhPVC1pbmRleGVkIG1lbWJlciBvciBhIGNvbGxhcHNlLXN1cnZpdm9yCitzdHViIGlzIGRl bGliZXJhdGVseSBsZWZ0IG5vbi1hbGwtdmlzaWJsZSwgc28gdGhhdCBhbiBpbmRleC1vbmx5 IHNjYW4KK2hlYXAtZmV0Y2hlcyB0aHJvdWdoIHRoZSBjaGFpbiBhbmQgdGhlIGNyb3NzZWQt YXR0cmlidXRlIGJpdG1hcCBjYW4gZmlsdGVyCitzdGFsZSBlbnRyaWVzIChlbmZvcmNlZCBp biBoZWFwX3BydW5lX3JlY29yZF9yZWRpcmVjdCwgdGhlIHN0dWIgcmVjb3JkZXJzLCBhbmQK K2hlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSkuCisKKwogQXBwZW5kaWNlcwogLS0t LS0tLS0tLQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1f eGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCA5 ZWQ3MDI0ZTgxNC4uNTcxZWE1YTRkYjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX3hsb2cuYwpAQCAtMTAzLDYgKzEwMyw4IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUo WExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCVNpemUJCWRhdGFsZW47CiAJCXhsaHBfZnJl ZXplX3BsYW4gKnBsYW5zOwogCQlPZmZzZXROdW1iZXIgKmZyel9vZmZzZXRzOworCQlPZmZz ZXROdW1iZXIgKnN0dWJzOworCQlpbnQJCQluc3R1YnM7CiAJCWNoYXIJICAgKmRhdGFwdHIg PSBYTG9nUmVjR2V0QmxvY2tEYXRhKHJlY29yZCwgMCwgJmRhdGFsZW4pOwogCQlib29sCQlk b19wcnVuZTsKIApAQCAtMTEwLDkgKzExMiwxMCBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXpl KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJCQkJCQkJCQkgICAmbnBsYW5zLCAmcGxh bnMsICZmcnpfb2Zmc2V0cywKIAkJCQkJCQkJCQkJICAgJm5yZWRpcmVjdGVkLCAmcmVkaXJl Y3RlZCwKIAkJCQkJCQkJCQkJICAgJm5kZWFkLCAmbm93ZGVhZCwKLQkJCQkJCQkJCQkJICAg Jm51bnVzZWQsICZub3d1bnVzZWQpOworCQkJCQkJCQkJCQkgICAmbnVudXNlZCwgJm5vd3Vu dXNlZCwKKwkJCQkJCQkJCQkJICAgJm5zdHVicywgJnN0dWJzKTsKIAotCQlkb19wcnVuZSA9 IG5yZWRpcmVjdGVkID4gMCB8fCBuZGVhZCA+IDAgfHwgbnVudXNlZCA+IDA7CisJCWRvX3By dW5lID0gbnJlZGlyZWN0ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBudW51c2VkID4gMCB8fCBu c3R1YnMgPiAwOwogCiAJCS8qIEVuc3VyZSB0aGUgcmVjb3JkIGRvZXMgc29tZXRoaW5nICov CiAJCUFzc2VydChkb19wcnVuZSB8fCBucGxhbnMgPiAwIHx8IHZtZmxhZ3MgJiBWSVNJQklM SVRZTUFQX1ZBTElEX0JJVFMpOwpAQCAtMTI2LDcgKzEyOSw4IEBAIGhlYXBfeGxvZ19wcnVu ZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCQkJCQkJCQkoeGxyZWMuZmxh Z3MgJiBYTEhQX0NMRUFOVVBfTE9DSykgPT0gMCwKIAkJCQkJCQkJCXJlZGlyZWN0ZWQsIG5y ZWRpcmVjdGVkLAogCQkJCQkJCQkJbm93ZGVhZCwgbmRlYWQsCi0JCQkJCQkJCQlub3d1bnVz ZWQsIG51bnVzZWQpOworCQkJCQkJCQkJbm93dW51c2VkLCBudW51c2VkLAorCQkJCQkJCQkJ c3R1YnMsIG5zdHVicyk7CiAKIAkJLyogRnJlZXplIHR1cGxlcyAqLwogCQlmb3IgKGludCBw ID0gMDsgcCA8IG5wbGFuczsgcCsrKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwppbmRleCBmZGRkZDIzMDM1Yi4uYzFkYzIzYzIyNzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3Mv aGVhcGFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbV94bG9nLmgiCisjaW5jbHVkZSAi YWNjZXNzL2hvdF9pbmRleGVkLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5o IgogI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKICNpbmNsdWRlICJhY2Nlc3MvdHJh bnNhbS5oIgpAQCAtNjcsMTEgKzY4LDIwIEBAIHR5cGVkZWYgc3RydWN0CiAJaW50CQkJbnJl ZGlyZWN0ZWQ7CS8qIG51bWJlcnMgb2YgZW50cmllcyBpbiBhcnJheXMgYmVsb3cgKi8KIAlp bnQJCQluZGVhZDsKIAlpbnQJCQludW51c2VkOworCWludAkJCW5zdHViczsKIAlpbnQJCQlu ZnJvemVuOwogCS8qIGFycmF5cyB0aGF0IGFjY3VtdWxhdGUgaW5kZXhlcyBvZiBpdGVtcyB0 byBiZSBjaGFuZ2VkICovCiAJT2Zmc2V0TnVtYmVyIHJlZGlyZWN0ZWRbTWF4SGVhcFR1cGxl c1BlclBhZ2UgKiAyXTsKIAlPZmZzZXROdW1iZXIgbm93ZGVhZFtNYXhIZWFwVHVwbGVzUGVy UGFnZV07CiAJT2Zmc2V0TnVtYmVyIG5vd3VudXNlZFtNYXhIZWFwVHVwbGVzUGVyUGFnZV07 CisKKwkvKgorCSAqIEhPVC1zZWxlY3RpdmVseS11cGRhdGVkIGNvbGxhcHNlLXN1cnZpdm9y IHN0dWJzOiAob2Zmc2V0LCBmb3J3YXJkKQorCSAqIHBhaXJzIG9mIGxpbmUgcG9pbnRlcnMg cmV3cml0dGVuIGluIHBsYWNlIGludG8geGlkLWZyZWUgZm9yd2FyZGluZworCSAqIHN0dWJz IHRoYXQgcHJlc2VydmUgdGhlaXIgc2VnbWVudCdzIG1vZGlmaWVkLWF0dHJzIGJpdG1hcC4K KwkgKi8KKwlPZmZzZXROdW1iZXIgc3R1YnNbTWF4SGVhcFR1cGxlc1BlclBhZ2UgKiAyXTsK KwogCUhlYXBUdXBsZUZyZWV6ZSBmcm96ZW5bTWF4SGVhcFR1cGxlc1BlclBhZ2VdOwogCiAJ LyoKQEAgLTIyMCw2ICsyMzAsMTAgQEAgc3RhdGljIHZvaWQgaGVhcF9wcnVuZV9yZWNvcmRf cHJ1bmFibGUoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQsCiBzdGF0 aWMgdm9pZCBoZWFwX3BydW5lX3JlY29yZF9yZWRpcmVjdChQcnVuZVN0YXRlICpwcnN0YXRl LAogCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyIG9mZm51bSwgT2Zmc2V0TnVtYmVyIHJkb2Zm bnVtLAogCQkJCQkJCQkJICAgYm9vbCB3YXNfbm9ybWFsKTsKK3N0YXRpYyB2b2lkIGhlYXBf cHJ1bmVfcmVjb3JkX3N0dWIoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKKwkJCQkJCQkJICAgT2Zm c2V0TnVtYmVyIG9mZm51bSwgT2Zmc2V0TnVtYmVyIGZvcndhcmQpOworc3RhdGljIHZvaWQg aGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX3N0dWIoUHJ1bmVTdGF0ZSAqcHJzdGF0 ZSwKKwkJCQkJCQkJCQkJCU9mZnNldE51bWJlciBvZmZudW0pOwogc3RhdGljIHZvaWQgaGVh cF9wcnVuZV9yZWNvcmRfZGVhZChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIg b2ZmbnVtLAogCQkJCQkJCQkgICBib29sIHdhc19ub3JtYWwpOwogc3RhdGljIHZvaWQgaGVh cF9wcnVuZV9yZWNvcmRfZGVhZF9vcl91bnVzZWQoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zm c2V0TnVtYmVyIG9mZm51bSwKQEAgLTIzMCw2ICsyNDQsNyBAQCBzdGF0aWMgdm9pZCBoZWFw X3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfdW51c2VkKFBydW5lU3RhdGUgKnByc3RhdGUs IE9mZnNldE51bQogc3RhdGljIHZvaWQgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xw X25vcm1hbChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtKTsKIHN0 YXRpYyB2b2lkIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9kZWFkKFBydW5lU3Rh dGUgKnByc3RhdGUsIE9mZnNldE51bWJlciBvZmZudW0pOwogc3RhdGljIHZvaWQgaGVhcF9w cnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX3JlZGlyZWN0KFBydW5lU3RhdGUgKnByc3RhdGUs IE9mZnNldE51bWJlciBvZmZudW0pOworc3RhdGljIGJvb2wgaGVhcF9wcnVuZV9pdGVtX3By ZXNlcnZlc19ob3RfaW5kZXhlZChQYWdlIHBhZ2UsIE9mZnNldE51bWJlciBvZmZudW0pOwog CiBzdGF0aWMgdm9pZCBwYWdlX3ZlcmlmeV9yZWRpcmVjdHMoUGFnZSBwYWdlKTsKIApAQCAt NDM5LDYgKzQ1NCw3IEBAIHBydW5lX2ZyZWV6ZV9zZXR1cChQcnVuZUZyZWV6ZVBhcmFtcyAq cGFyYW1zLAogCXByc3RhdGUtPm5ld19wcnVuZV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKIAlwcnN0YXRlLT5sYXRlc3RfeGlkX3JlbW92ZWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKIAlwcnN0YXRlLT5ucmVkaXJlY3RlZCA9IHByc3RhdGUtPm5kZWFkID0gcHJzdGF0ZS0+ bnVudXNlZCA9IDA7CisJcHJzdGF0ZS0+bnN0dWJzID0gMDsKIAlwcnN0YXRlLT5uZnJvemVu ID0gMDsKIAlwcnN0YXRlLT5ucm9vdF9pdGVtcyA9IDA7CiAJcHJzdGF0ZS0+bmhlYXBvbmx5 X2l0ZW1zID0gMDsKQEAgLTYwNyw2ICs2MjMsMjMgQEAgcHJ1bmVfZnJlZXplX3BsYW4oUHJ1 bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyICpvZmZfbG9jKQogCQkgKiBHZXQgdGhl IHR1cGxlJ3MgdmlzaWJpbGl0eSBzdGF0dXMgYW5kIHF1ZXVlIGl0IHVwIGZvciBwcm9jZXNz aW5nLgogCQkgKi8KIAkJaHR1cCA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBh Z2UsIGl0ZW1pZCk7CisKKwkJLyoKKwkJICogQSBjb2xsYXBzZS1zdXJ2aXZvciBzdHViIGlz IGFuIExQX05PUk1BTCBpdGVtIHRoYXQgaXMgbm90IGEgcmVhbAorCQkgKiB0dXBsZTogSEVB UF9JTkRFWEVEX1VQREFURUQgd2l0aCBuYXR0cyA9PSAwLCBwZXJtYW5lbnRseSBpbnZpc2li bGUKKwkJICogKEhFQVBfWE1JTl9JTlZBTElEKSwgY2FycnlpbmcgYSBmb3J3YXJkIGxpbmsg YW5kIHRoZSBtb2RpZmllZC1hdHRycworCQkgKiBiaXRtYXAgZm9yIHRoZSBjaGFpbiBzZWdt ZW50IGl0IHN0YW5kcyBpbiBmb3IuCisJCSAqIGhlYXBfcHJ1bmVfc2F0aXNmaWVzX3ZhY3V1 bSgpIHdvdWxkIGNsYXNzaWZ5IGl0IEhFQVBUVVBMRV9ERUFEIGFuZAorCQkgKiBwcnVuaW5n IHdvdWxkIHJlY2xhaW0gaXQsIGRlc3Ryb3lpbmcgdGhlIGJpdG1hcCBhIHJlYWQgbmVlZHMu CisJCSAqIFJlY29yZCBpdCBhcyBhbiB1bmNoYW5nZWQgaXRlbSBzbyBpdCBpcyBwcmVzZXJ2 ZWQ7IHRoZSBIT1QgY2hhaW4KKwkJICogd2FsayBzdGVwcyB0aHJvdWdoIGl0IHRyYW5zcGFy ZW50bHkgdG8gcmVhY2ggdGhlIGxpdmUgdHVwbGUuCisJCSAqLworCQlpZiAoSG90SW5kZXhl ZEhlYWRlcklzU3R1YihodHVwKSkKKwkJeworCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFu Z2VkX2xwX3N0dWIocHJzdGF0ZSwgb2ZmbnVtKTsKKwkJCWNvbnRpbnVlOworCQl9CisKIAkJ dHVwLnRfZGF0YSA9IGh0dXA7CiAJCXR1cC50X2xlbiA9IEl0ZW1JZEdldExlbmd0aChpdGVt aWQpOwogCQlJdGVtUG9pbnRlclNldCgmdHVwLnRfc2VsZiwgYmxvY2tubywgb2ZmbnVtKTsK QEAgLTY3NywyNSArNzEwLDIzIEBAIHBydW5lX2ZyZWV6ZV9wbGFuKFBydW5lU3RhdGUgKnBy c3RhdGUsIE9mZnNldE51bWJlciAqb2ZmX2xvYykKIAkJCUl0ZW1JZAkJaXRlbWlkID0gUGFn ZUdldEl0ZW1JZChwYWdlLCBvZmZudW0pOwogCQkJSGVhcFR1cGxlSGVhZGVyIGh0dXAgPSAo SGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBpdGVtaWQpOwogCi0JCQlpZiAo bGlrZWx5KCFIZWFwVHVwbGVIZWFkZXJJc0hvdFVwZGF0ZWQoaHR1cCkpKQotCQkJewotCQkJ CUhlYXBUdXBsZUhlYWRlckFkdmFuY2VDb25mbGljdEhvcml6b24oaHR1cCwKLQkJCQkJCQkJ CQkJCQkgICZwcnN0YXRlLT5sYXRlc3RfeGlkX3JlbW92ZWQpOwotCQkJCWhlYXBfcHJ1bmVf cmVjb3JkX3VudXNlZChwcnN0YXRlLCBvZmZudW0sIHRydWUpOwotCQkJfQorCQkJLyoKKwkJ CSAqIFRoaXMgZGVhZCBoZWFwLW9ubHkgdHVwbGUgd2FzIG5vdCByZWFjaGVkIGJ5IGFueSBI T1QgY2hhaW4gd2FsaworCQkJICogKGFuIGFib3J0ZWQgSE9ULXNlbGVjdGl2ZWx5LXVwZGF0 ZWQgc3ViLWNoYWluLCBvciBhIG1lbWJlcgorCQkJICogd2hvc2UgbGl2ZSByb290IHN0b3Bw ZWQgdGhlIHdhbGspLiAgSWYgaXQgY2FycmllcyBhIHN0YWxlIGJ0cmVlCisJCQkgKiBsZWFm IChIRUFQX0lOREVYRURfVVBEQVRFRCksIG1hcmsgaXQgTFBfREVBRDogdGhhdCBwaW5zIHRo ZQorCQkJICogc2xvdCBhZ2FpbnN0IHJldXNlIGFuZCBhZGRzIGl0IHRvIHRoZSBkZWFkLWl0 ZW1zIGFycmF5IHNvCisJCQkgKiBhbWJ1bGtkZWxldGUgc3dlZXBzIHRoZSBzdGFsZSBsZWFm IGFuZCBhIGxhdGVyIHZhY3V1bSByZWNsYWltcworCQkJICogdGhlIExQLiBPdGhlcndpc2Ug KGNsYXNzaWMgSE9ULCBubyBsZWFmIG9mIGl0cyBvd24pIHJlY2xhaW0gaXQKKwkJCSAqIHRv IExQX1VOVVNFRC4KKwkJCSAqLworCQkJSGVhcFR1cGxlSGVhZGVyQWR2YW5jZUNvbmZsaWN0 SG9yaXpvbihodHVwLAorCQkJCQkJCQkJCQkJICAmcHJzdGF0ZS0+bGF0ZXN0X3hpZF9yZW1v dmVkKTsKKwkJCWlmICgoaHR1cC0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRF RCkgIT0gMCAmJgorCQkJCUhlYXBUdXBsZUhlYWRlckdldE5hdHRzKGh0dXApID4gMCkKKwkJ CQloZWFwX3BydW5lX3JlY29yZF9kZWFkX29yX3VudXNlZChwcnN0YXRlLCBvZmZudW0sIHRy dWUpOwogCQkJZWxzZQotCQkJewotCQkJCS8qCi0JCQkJICogVGhpcyB0dXBsZSBzaG91bGQn dmUgYmVlbiBwcm9jZXNzZWQgYW5kIHJlbW92ZWQgYXMgcGFydCBvZgotCQkJCSAqIGEgSE9U IGNoYWluLCBzbyBzb21ldGhpbmcncyB3cm9uZy4gIFRvIHByZXNlcnZlIGV2aWRlbmNlLAot CQkJCSAqIHdlIGRvbid0IGRhcmUgdG8gcmVtb3ZlIGl0LiAgV2UgY2Fubm90IGxlYXZlIGJl aGluZCBhIERFQUQKLQkJCQkgKiB0dXBsZSBlaXRoZXIsIGJlY2F1c2UgdGhhdCB3aWxsIGNh dXNlIFZBQ1VVTSB0byBlcnJvciBvdXQuCi0JCQkJICogVGhyb3dpbmcgYW4gZXJyb3Igd2l0 aCBhIGRpc3RpbmN0IGVycm9yIG1lc3NhZ2Ugc2VlbXMgbGlrZQotCQkJCSAqIHRoZSBsZWFz dCBiYWQgb3B0aW9uLgotCQkJCSAqLwotCQkJCWVsb2coRVJST1IsICJkZWFkIGhlYXAtb25s eSB0dXBsZSAoJXUsICVkKSBpcyBub3QgbGlua2VkIHRvIGZyb20gYW55IEhPVCBjaGFpbiIs Ci0JCQkJCSBibG9ja25vLCBvZmZudW0pOwotCQkJfQorCQkJCWhlYXBfcHJ1bmVfcmVjb3Jk X3VudXNlZChwcnN0YXRlLCBvZmZudW0sIHRydWUpOwogCQl9CiAJCWVsc2UKIAkJCWhlYXBf cHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwocHJzdGF0ZSwgb2ZmbnVtKTsKQEAg LTExNjMsNyArMTE5NCw4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJl ZXplUGFyYW1zICpwYXJhbXMsCiAKIAlkb19wcnVuZSA9IHByc3RhdGUubnJlZGlyZWN0ZWQg PiAwIHx8CiAJCXByc3RhdGUubmRlYWQgPiAwIHx8Ci0JCXByc3RhdGUubnVudXNlZCA+IDA7 CisJCXByc3RhdGUubnVudXNlZCA+IDAgfHwKKwkJcHJzdGF0ZS5uc3R1YnMgPiAwOwogCiAJ LyoKIAkgKiBFdmVuIGlmIHdlIGRvbid0IHBydW5lIGFueXRoaW5nLCBpZiB3ZSBmb3VuZCBh IG5ldyB2YWx1ZSBmb3IgdGhlCkBAIC0xMjY0LDcgKzEyOTYsOCBAQCBoZWFwX3BhZ2VfcHJ1 bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQkJaGVhcF9wYWdl X3BydW5lX2V4ZWN1dGUocHJzdGF0ZS5idWZmZXIsIGZhbHNlLAogCQkJCQkJCQkJcHJzdGF0 ZS5yZWRpcmVjdGVkLCBwcnN0YXRlLm5yZWRpcmVjdGVkLAogCQkJCQkJCQkJcHJzdGF0ZS5u b3dkZWFkLCBwcnN0YXRlLm5kZWFkLAotCQkJCQkJCQkJcHJzdGF0ZS5ub3d1bnVzZWQsIHBy c3RhdGUubnVudXNlZCk7CisJCQkJCQkJCQlwcnN0YXRlLm5vd3VudXNlZCwgcHJzdGF0ZS5u dW51c2VkLAorCQkJCQkJCQkJcHJzdGF0ZS5zdHVicywgcHJzdGF0ZS5uc3R1YnMpOwogCQl9 CiAKIAkJaWYgKGRvX2ZyZWV6ZSkKQEAgLTEzMDcsNyArMTM0MCw4IEBAIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQkJCQkJCQkg IHByc3RhdGUuZnJvemVuLCBwcnN0YXRlLm5mcm96ZW4sCiAJCQkJCQkJCQkgIHByc3RhdGUu cmVkaXJlY3RlZCwgcHJzdGF0ZS5ucmVkaXJlY3RlZCwKIAkJCQkJCQkJCSAgcHJzdGF0ZS5u b3dkZWFkLCBwcnN0YXRlLm5kZWFkLAotCQkJCQkJCQkJICBwcnN0YXRlLm5vd3VudXNlZCwg cHJzdGF0ZS5udW51c2VkKTsKKwkJCQkJCQkJCSAgcHJzdGF0ZS5ub3d1bnVzZWQsIHByc3Rh dGUubnVudXNlZCwKKwkJCQkJCQkJCSAgcHJzdGF0ZS5zdHVicywgcHJzdGF0ZS5uc3R1YnMp OwogCQl9CiAJfQogCkBAIC0xNDQ4LDYgKzE0ODIsMTAxIEBAIGh0c3ZfZ2V0X3ZhbGlkX3N0 YXR1cyhpbnQgc3RhdHVzKQogCXJldHVybiAoSFRTVl9SZXN1bHQpIHN0YXR1czsKIH0KIAor LyoKKyAqIGhlYXBfcHJ1bmVfY2hhaW5fZmluZF9saXZlCisgKgkJRm9sbG93IGEgSE9UIGNo YWluIGZyb20gJ3N0YXJ0JyB0byBpdHMgZmlyc3Qgc3Vydml2aW5nIG1lbWJlci4KKyAqCisg KiBVc2VkIHdoZW4gcmUtcHJ1bmluZyBhIEhPVC9TSVUgY2hhaW4gdGhhdCB3YXMgY29sbGFw c2VkIGJ5IGFuIGVhcmxpZXIgcHJ1bmU6CisgKiB0aGUgcm9vdCBhbmQgYW55IGVudHJ5LWJl YXJpbmcgZGVhZCBtZW1iZXJzIHdlcmUgdHVybmVkIGludG8gTFBfUkVESVJFQ1RzIHRvCisg KiB3aGF0IHdhcyB0aGVuIHRoZSBmaXJzdCBsaXZlIHR1cGxlLiAgSWYgdGhhdCB0dXBsZSBo YXMgc2luY2UgYmVlbiBIT1QtdXBkYXRlZAorICogYWdhaW4gYW5kIGRpZWQsIHRoZSByZWRp cmVjdHMgbXVzdCBiZSByZS1wb2ludGVkIHRvIHRoZSBjdXJyZW50IGZpcnN0IGxpdmUKKyAq IHR1cGxlLCBvciBzZXZlcmFsIHJlZGlyZWN0cyBmb3J3YXJkaW5nIHRvIG9uZSBsaXZlIHR1 cGxlIG11c3QgYWdyZWUgb24gaXQuCisgKiBCb3RoIGNhc2VzIG5lZWQgdGhlIGNoYWluJ3Mg Y3VycmVudCBmaXJzdCBzdXJ2aXZpbmcgbWVtYmVyLgorICoKKyAqIFdhbGtzIHRfY3RpZCBv biB0aGlzIHBhZ2Ugc3RhcnRpbmcgYXQgJ3N0YXJ0Jywgc2tpcHBpbmcgREVBRCBtZW1iZXJz LCBhbmQKKyAqIHJldHVybnMgdGhlIG9mZnNldCBvZiB0aGUgZmlyc3Qgbm9uLURFQUQgKHN1 cnZpdmluZykgbWVtYmVyLiAgUmV0dXJucworICogSW52YWxpZE9mZnNldE51bWJlciBpZiB0 aGUgY2hhaW4gZGVhZC1lbmRzIHdpdGggbm8gc3Vydml2b3Igb3IgcnVucyBvZmYgdGhlCisg KiBwYWdlLiAgUmVhZHMgb25seSB0aGUgcGFnZSdzIHByZS1leGVjdXRlIHN0YXRlLCBzbyBp dCBpcyBjb3JyZWN0IHJlZ2FyZGxlc3MKKyAqIG9mIHRoZSBvcmRlciBpbiB3aGljaCBzaWJs aW5nIHJlZGlyZWN0cyBhcmUgcHJvY2Vzc2VkLgorICovCitzdGF0aWMgT2Zmc2V0TnVtYmVy CitoZWFwX3BydW5lX2NoYWluX2ZpbmRfbGl2ZShQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZz ZXROdW1iZXIgc3RhcnQpCit7CisJUGFnZQkJcGFnZSA9IHByc3RhdGUtPnBhZ2U7CisJT2Zm c2V0TnVtYmVyIG1heG9mZiA9IFBhZ2VHZXRNYXhPZmZzZXROdW1iZXIocGFnZSk7CisJT2Zm c2V0TnVtYmVyIG9mZm51bSA9IHN0YXJ0OworCU9mZnNldE51bWJlciBzdXJ2aXZvciA9IHN0 YXJ0OwkvKiBzdWNjZXNzb3Igb2YgdGhlIGxhc3QgREVBRCBtZW1iZXIgKi8KKwlpbnQJCQls b29wcyA9IDA7CisKKwl3aGlsZSAob2ZmbnVtID49IEZpcnN0T2Zmc2V0TnVtYmVyICYmIG9m Zm51bSA8PSBtYXhvZmYpCisJeworCQlJdGVtSWQJCWxwID0gUGFnZUdldEl0ZW1JZChwYWdl LCBvZmZudW0pOworCQlIVFNWX1Jlc3VsdCBzdGF0dXM7CisJCUhlYXBUdXBsZUhlYWRlciBo dHVwOworCisJCS8qIEEgcmVkaXJlY3QvZGVhZC91bnVzZWQgaXRlbSBjYW5ub3QgYmUgYSBz dXJ2aXZpbmcgY2hhaW4gbWVtYmVyLiAqLworCQlpZiAoIUl0ZW1JZElzTm9ybWFsKGxwKSkK KwkJCXJldHVybiBJbnZhbGlkT2Zmc2V0TnVtYmVyOworCisJCWh0dXAgPSAoSGVhcFR1cGxl SGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBscCk7CisKKwkJLyoKKwkJICogQSBjb2xsYXBz ZS1zdXJ2aXZvciBzdHViIGlzIGFuIHhpZC1mcmVlIGZvcndhcmRpbmcgbm9kZSwgbm90IGEK KwkJICogY2hhaW4gbWVtYmVyOyB0aGUgcGFnZSBzY2FuIHJlY29yZHMgaXQgdW5jaGFuZ2Vk IHdpdGhvdXQgY29tcHV0aW5nCisJCSAqIHZpc2liaWxpdHksIHNvIGl0cyBodHN2IHNsb3Qg aXMgdW5zZXQuICBTdGVwIHRocm91Z2ggaXQgdG8gaXRzCisJCSAqIGZvcndhcmQgbGluayBy YXRoZXIgdGhhbiByZWFkaW5nIGh0c3YsIHdoaWNoIHdvdWxkIHRyaXAgdGhlCisJCSAqIHZh bGlkaXR5IGFzc2VydC4KKwkJICovCisJCWlmIChIb3RJbmRleGVkSGVhZGVySXNTdHViKGh0 dXApKQorCQl7CisJCQlvZmZudW0gPSBIb3RJbmRleGVkU3R1YkdldEZvcndhcmQoaHR1cCk7 CisJCQlpZiAoKytsb29wcyA+IG1heG9mZikKKwkJCQlyZXR1cm4gSW52YWxpZE9mZnNldE51 bWJlcjsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJc3RhdHVzID0gaHRzdl9nZXRfdmFsaWRf c3RhdHVzKHByc3RhdGUtPmh0c3Zbb2ZmbnVtXSk7CisJCWh0dXAgPSAoSGVhcFR1cGxlSGVh ZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBscCk7CisKKwkJaWYgKHN0YXR1cyA9PSBIRUFQVFVQ TEVfREVBRCkKKwkJeworCQkJLyoKKwkJCSAqIEEgREVBRCBtZW1iZXIgaXMgcmVjbGFpbWVk L3JlZGlyZWN0ZWQsIHNvIHRoZSBzdXJ2aXZpbmcgdGFpbAorCQkJICogc3RhcnRzIGF0IGl0 cyBzdWNjZXNzb3IuICBBIERFQUQgbWVtYmVyIHdpdGggbm8gbGl2ZSBzdWNjZXNzb3IKKwkJ CSAqIG1lYW5zIHRoZSB3aG9sZSBjaGFpbiBpcyBkZWFkLgorCQkJICovCisJCQlpZiAoIUhl YXBUdXBsZUhlYWRlcklzSG90VXBkYXRlZChodHVwKSB8fAorCQkJCUl0ZW1Qb2ludGVyR2V0 QmxvY2tOdW1iZXIoJmh0dXAtPnRfY3RpZCkgIT0gcHJzdGF0ZS0+YmxvY2spCisJCQkJcmV0 dXJuIEludmFsaWRPZmZzZXROdW1iZXI7CisJCQlvZmZudW0gPSBJdGVtUG9pbnRlckdldE9m ZnNldE51bWJlcigmaHR1cC0+dF9jdGlkKTsKKwkJCXN1cnZpdm9yID0gb2ZmbnVtOworCQl9 CisJCWVsc2UgaWYgKHN0YXR1cyA9PSBIRUFQVFVQTEVfUkVDRU5UTFlfREVBRCkKKwkJewor CQkJLyoKKwkJCSAqIFJFQ0VOVExZX0RFQUQgbWVtYmVycyBiZWxvbmcgdG8gdGhlIHN1cnZp dmluZyB0YWlsIHVubGVzcyBhCisJCQkgKiBERUFEIG1lbWJlciBmb2xsb3dzIHRoZW0gKHdo aWNoIHdvdWxkIG1ha2UgdGhlbSBwYXJ0IG9mIHRoZQorCQkJICogZGVhZCBwcmVmaXgpLiAg S2VlcCB3YWxraW5nIHRvIGZpbmQgb3V0LCBidXQgZG8gbm90IGFkdmFuY2UgdGhlCisJCQkg KiBzdXJ2aXZvcjsgaXQgc3RheXMgYXQgdGhlIHN1Y2Nlc3NvciBvZiB0aGUgbGFzdCBERUFE IG1lbWJlci4KKwkJCSAqLworCQkJaWYgKCFIZWFwVHVwbGVIZWFkZXJJc0hvdFVwZGF0ZWQo aHR1cCkgfHwKKwkJCQlJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKCZodHVwLT50X2N0aWQp ICE9IHByc3RhdGUtPmJsb2NrKQorCQkJCXJldHVybiBzdXJ2aXZvcjsKKwkJCW9mZm51bSA9 IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKCZodHVwLT50X2N0aWQpOworCQl9CisJCWVs c2UKKwkJeworCQkJLyogTElWRSAob3IgaW4tcHJvZ3Jlc3MpOiB0aGUgc3Vydml2aW5nIHRh aWwgaXMgc2V0dGxlZC4gKi8KKwkJCXJldHVybiBzdXJ2aXZvcjsKKwkJfQorCisJCWlmICgr K2xvb3BzID4gbWF4b2ZmKQorCQkJcmV0dXJuIEludmFsaWRPZmZzZXROdW1iZXI7IC8qIGRl ZmVuZCBhZ2FpbnN0IGEgY29ycnVwdCBjeWNsZSAqLworCX0KKworCXJldHVybiBJbnZhbGlk T2Zmc2V0TnVtYmVyOworfQorCiAvKgogICogUHJ1bmUgc3BlY2lmaWVkIGxpbmUgcG9pbnRl ciBvciBhIEhPVCBjaGFpbiBvcmlnaW5hdGluZyBhdCBsaW5lIHBvaW50ZXIuCiAgKgpAQCAt MTUxOCw2ICsxNjQ3LDM2IEBAIGhlYXBfcHJ1bmVfY2hhaW4oT2Zmc2V0TnVtYmVyIG1heG9m ZiwgT2Zmc2V0TnVtYmVyIHJvb3RvZmZudW0sCiAJCWlmIChvZmZudW0gPiBtYXhvZmYpCiAJ CQlicmVhazsKIAorCQkvKgorCQkgKiBTdGVwIHRyYW5zcGFyZW50bHkgdGhyb3VnaCBhIGNv bGxhcHNlLXN1cnZpdm9yIHN0dWIuICBBIHJlZGlyZWN0IG9yCisJCSAqIGFuIGVhcmxpZXIg c3R1YiBtYXkgZm9yd2FyZCBpbnRvIGEgc3R1YiB0aGF0IHJlcGxhY2VkIGEgZGVhZAorCQkg KiBtaWQtY2hhaW4gbWVtYmVyOyB0aGUgc3R1YiB3YXMgYWxyZWFkeSByZWNvcmRlZCAoYXMg dW5jaGFuZ2VkKSBieQorCQkgKiB0aGUgcGFnZSBzY2FuIGFuZCBpcyBub3QgaXRzZWxmIGEg Y2hhaW4gbWVtYmVyLCBzbyBmb2xsb3cgaXRzCisJCSAqIGZvcndhcmQgbGluayByYXRoZXIg dGhhbiBzdG9wcGluZyBhdCB0aGUgcHJvY2Vzc2VkIGNoZWNrIGJlbG93LgorCQkgKi8KKwkJ eworCQkJSXRlbUlkCQlzbHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIG9mZm51bSk7CisKKwkJ CWlmIChJdGVtSWRJc05vcm1hbChzbHApKQorCQkJeworCQkJCUhlYXBUdXBsZUhlYWRlciBz aHR1cCA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBhZ2UsIHNscCk7CisKKwkJ CQlpZiAoSG90SW5kZXhlZEhlYWRlcklzU3R1YihzaHR1cCkpCisJCQkJeworCQkJCQkvKgor CQkJCQkgKiBBIHN0dWIgaXMgeGlkLWZyZWUsIHNvIHRoZSB4bWluL3htYXggbGlua2FnZSBj YW5ub3QgYmUKKwkJCQkJICogdmVyaWZpZWQgYWNyb3NzIGl0LiAgVHJ1c3QgdGhlIHN0dWIn cyBmb3J3YXJkIGxpbmsgYW5kCisJCQkJCSAqIHNraXAgdGhlIHByaW9yLXhtYXggY2hlY2sg Zm9yIHRoZSBmaXJzdCBtZW1iZXIgcGFzdCBpdAorCQkJCQkgKiAob3RoZXJ3aXNlIHRoZSBj aGFpbiB3b3VsZCBiZSBzZXZlcmVkIHRoZXJlLCBkcm9wcGluZworCQkJCQkgKiBpdHMgdGFp bCkuCisJCQkJCSAqLworCQkJCQlvZmZudW0gPSBIb3RJbmRleGVkU3R1YkdldEZvcndhcmQo c2h0dXApOworCQkJCQlwcmlvclhtYXggPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwkJCQkJ Y29udGludWU7CisJCQkJfQorCQkJfQorCQl9CisKIAkJLyogSWYgaXRlbSBpcyBhbHJlYWR5 IHByb2Nlc3NlZCwgc3RvcCAtLS0gaXQgbXVzdCBub3QgYmUgc2FtZSBjaGFpbiAqLwogCQlp ZiAocHJzdGF0ZS0+cHJvY2Vzc2VkW29mZm51bV0pCiAJCQlicmVhazsKQEAgLTE2MjQsMTMg KzE3ODMsMjcgQEAgaGVhcF9wcnVuZV9jaGFpbihPZmZzZXROdW1iZXIgbWF4b2ZmLCBPZmZz ZXROdW1iZXIgcm9vdG9mZm51bSwKIAlpZiAoSXRlbUlkSXNSZWRpcmVjdGVkKHJvb3RscCkg JiYgbmNoYWluIDwgMikKIAl7CiAJCS8qCi0JCSAqIFdlIGZvdW5kIGEgcmVkaXJlY3QgaXRl bSB0aGF0IGRvZXNuJ3QgcG9pbnQgdG8gYSB2YWxpZCBmb2xsb3ctb24KLQkJICogaXRlbS4g IFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgbG9vcCBpbiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2Zy ZWV6ZSgpCi0JCSAqIGNhdXNlZCB1cyB0byB2aXNpdCB0aGUgZGVhZCBzdWNjZXNzb3Igb2Yg YSByZWRpcmVjdCBpdGVtIGJlZm9yZQotCQkgKiB2aXNpdGluZyB0aGUgcmVkaXJlY3QgaXRl bS4gIFdlIGNhbiBjbGVhbiB1cCBieSBzZXR0aW5nIHRoZQotCQkgKiByZWRpcmVjdCBpdGVt IHRvIExQX0RFQUQgc3RhdGUgb3IgTFBfVU5VU0VEIGlmIHRoZSBjYWxsZXIKLQkJICogaW5k aWNhdGVkLgorCQkgKiBUaGUgd2FsayBjb3VsZCBub3QgZ2V0IHBhc3QgdGhlIHJlZGlyZWN0 OiBpdHMgdGFyZ2V0IHdhcyBlaXRoZXIKKwkJICogYWxyZWFkeSBwcm9jZXNzZWQgYnkgYSBz aWJsaW5nIHJlZGlyZWN0J3Mgd2FsayAoc2V2ZXJhbCByZWRpcmVjdHMKKwkJICogb2YgYSBj b2xsYXBzZWQgSE9UL1NJVSBjaGFpbiBmb3J3YXJkIHRvIHRoZSBzYW1lIGxpdmUgdHVwbGUp IG9yIGhhcworCQkgKiBzaW5jZSBkaWVkIGFuZCBiZWVuIGNvbGxhcHNlZCBmdXJ0aGVyLiAg UmUtcG9pbnQgdGhpcyByZWRpcmVjdCBhdAorCQkgKiB0aGUgY2hhaW4ncyBjdXJyZW50IGZp cnN0IHN1cnZpdmluZyBtZW1iZXIgc28gZXZlcnkgZW50cnkgdGhhdAorCQkgKiByZXNvbHZl cyB0aHJvdWdoIGl0IHN0aWxsIHJlYWNoZXMgdGhlIGxpdmUgdHVwbGUuICBJZiBubyBzdXJ2 aXZvcgorCQkgKiByZW1haW5zLCB0aGUgcmVkaXJlY3QgaXMgZGFuZ2xpbmcgYW5kIGlzIHJl Y2xhaW1lZCAoTFBfREVBRCwgb3IKKwkJICogTFBfVU5VU0VEIGlmIHRoZSBjYWxsZXIgYWxs b3dzIGl0KS4KIAkJICovCisJCU9mZnNldE51bWJlciB0YXJnZXQgPSBJdGVtSWRHZXRSZWRp cmVjdChyb290bHApOworCQlPZmZzZXROdW1iZXIgbGl2ZSA9IGhlYXBfcHJ1bmVfY2hhaW5f ZmluZF9saXZlKHByc3RhdGUsIHRhcmdldCk7CisKKwkJaWYgKE9mZnNldE51bWJlcklzVmFs aWQobGl2ZSkpCisJCXsKKwkJCWlmIChsaXZlID09IHRhcmdldCkKKwkJCQloZWFwX3BydW5l X3JlY29yZF91bmNoYW5nZWRfbHBfcmVkaXJlY3QocHJzdGF0ZSwgcm9vdG9mZm51bSk7CisJ CQllbHNlCisJCQkJaGVhcF9wcnVuZV9yZWNvcmRfcmVkaXJlY3QocHJzdGF0ZSwgcm9vdG9m Zm51bSwgbGl2ZSwgZmFsc2UpOworCQkJcmV0dXJuOworCQl9CisKIAkJaGVhcF9wcnVuZV9y ZWNvcmRfZGVhZF9vcl91bnVzZWQocHJzdGF0ZSwgcm9vdG9mZm51bSwgZmFsc2UpOwogCQly ZXR1cm47CiAJfQpAQCAtMTY1NiwyNCArMTgyOSwxMjYgQEAgcHJvY2Vzc19jaGFpbjoKIAll bHNlIGlmIChuZGVhZGNoYWluID09IG5jaGFpbikKIAl7CiAJCS8qCi0JCSAqIFRoZSBlbnRp cmUgY2hhaW4gaXMgZGVhZC4gIE1hcmsgdGhlIHJvb3QgbGluZSBwb2ludGVyIExQX0RFQUQs IGFuZAotCQkgKiBmdWxseSByZW1vdmUgdGhlIG90aGVyIHR1cGxlcyBpbiB0aGUgY2hhaW4u CisJCSAqIFRoZSBlbnRpcmUgY2hhaW4gaXMgZGVhZC4gIE5vIGxpdmUgdHVwbGUgcmVtYWlu cyB0byBmb3J3YXJkIHRvLCBzbworCQkgKiBtYXJrIHRoZSByb290IExQX0RFQUQgKG9yIExQ X1VOVVNFRCBpZiB0aGUgY2FsbGVyIGFsbG93cyBpdCkgYW5kCisJCSAqIHJlY2xhaW0gZWFj aCBtZW1iZXIuICBBIGRlYWQgSE9ULXNlbGVjdGl2ZWx5LXVwZGF0ZWQgbWVtYmVyIG1heQor CQkgKiBzdGlsbCBoYXZlIGEgc3RhbGUgYnRyZWUgbGVhZiBwb2ludGluZyBhdCBpdDogbWFy ayBpdCBMUF9ERUFEIHNvCisJCSAqIHRoZSBzbG90IGlzIHBpbm5lZCBhZ2FpbnN0IHJldXNl IGFuZCBhZGRlZCB0byB0aGUgZGVhZC1pdGVtcyBhcnJheSwKKwkJICogbGV0dGluZyBhbWJ1 bGtkZWxldGUgc3dlZXAgdGhlIGxlYWYgYW5kIGEgbGF0ZXIgdmFjdXVtIHJlY2xhaW0gdGhl CisJCSAqIGxpbmUgcG9pbnRlci4gIENsYXNzaWMtSE9UIG1lbWJlcnMgY2Fycnkgbm8gbGVh ZiBvZiB0aGVpciBvd24gYW5kCisJCSAqIGdvIHN0cmFpZ2h0IHRvIExQX1VOVVNFRC4KIAkJ ICovCiAJCWhlYXBfcHJ1bmVfcmVjb3JkX2RlYWRfb3JfdW51c2VkKHByc3RhdGUsIHJvb3Rv ZmZudW0sIEl0ZW1JZElzTm9ybWFsKHJvb3RscCkpOwogCQlmb3IgKGludCBpID0gMTsgaSA8 IG5jaGFpbjsgaSsrKQotCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW51c2VkKHByc3RhdGUsIGNo YWluaXRlbXNbaV0sIHRydWUpOworCQl7CisJCQlpZiAoaGVhcF9wcnVuZV9pdGVtX3ByZXNl cnZlc19ob3RfaW5kZXhlZChwYWdlLCBjaGFpbml0ZW1zW2ldKSkKKwkJCQloZWFwX3BydW5l X3JlY29yZF9kZWFkX29yX3VudXNlZChwcnN0YXRlLCBjaGFpbml0ZW1zW2ldLCB0cnVlKTsK KwkJCWVsc2UKKwkJCQloZWFwX3BydW5lX3JlY29yZF91bnVzZWQocHJzdGF0ZSwgY2hhaW5p dGVtc1tpXSwgdHJ1ZSk7CisJCX0KIAl9CiAJZWxzZQogCXsKIAkJLyoKLQkJICogV2UgZm91 bmQgYSBERUFEIHR1cGxlIGluIHRoZSBjaGFpbi4gIFJlZGlyZWN0IHRoZSByb290IGxpbmUg cG9pbnRlcgotCQkgKiB0byB0aGUgZmlyc3Qgbm9uLURFQUQgdHVwbGUsIGFuZCBtYXJrIGFz IHVudXNlZCBlYWNoIGludGVybWVkaWF0ZQotCQkgKiBpdGVtIHRoYXQgd2UgYXJlIGFibGUg dG8gcmVtb3ZlIGZyb20gdGhlIGNoYWluLgorCQkgKiBUaGUgY2hhaW4gaGFzIGEgZGVhZCBw cmVmaXggZm9sbG93ZWQgYnkgYSBsaXZlIHJlbWFpbmRlci4gIENvbGxhcHNlCisJCSAqIGl0 IHdpdGggUEhPVC1zdHlsZSBrZXkgdHVwbGVzIHNvIHRoYXQgdGhlIHBlci1ob3AgbW9kaWZp ZWQtYXR0cnMKKwkJICogYml0bWFwcyBzdXJ2aXZlIGZvciB0aGUgYml0bWFwLW92ZXJsYXAg cmVhZCBwYXRoLgorCQkgKgorCQkgKiBXYWxrIHRoZSBkZWFkIG1lbWJlcnMgZnJvbSB0aGUg bGl2ZSBlbmQgYmFja3dhcmRzLCBhY2N1bXVsYXRpbmcgaW4KKwkJICogbGF0ZXJhdHRycyB0 aGUgdW5pb24gb2YgdGhlIG1vZGlmaWVkLWF0dHJzIGJpdG1hcHMgb2YgdGhlIG1lbWJlcnMK KwkJICogdGhhdCBmb2xsb3cgKHRoZSAibGF0ZXIgaG9wcyIpLiAgQSBkZWFkIGtleSB0dXBs ZSAtLSBvbmUgdGhhdAorCQkgKiBjYXJyaWVkIGl0cyBvd24gaW5kZXggZW50cmllcyBiZWNh dXNlIGl0IGNoYW5nZWQgYW4gaW5kZXhlZAorCQkgKiBhdHRyaWJ1dGUgYXQgaXRzIGhvcCAo aGVhcF9wcnVuZV9pdGVtX3ByZXNlcnZlc19ob3RfaW5kZXhlZCkgLS0gaXMKKwkJICogZGlz cG9zZWQgb2YgYXMgZm9sbG93czoKKwkJICoKKwkJICogLSBJZiBldmVyeSBhdHRyaWJ1dGUg aXQgY2hhbmdlZCB3YXMgY2hhbmdlZCBhZ2FpbiBieSBhIGxhdGVyIGhvcAorCQkgKiAoaXRz IGJpdG1hcCBpcyBhIHN1YnNldCBvZiBsYXRlcmF0dHJzKSwgZXZlcnkgaW5kZXggZW50cnkg cG9pbnRpbmcKKwkJICogYXQgaXQgaXMgc3VwZXJzZWRlZCwgc28gbm8gbGl2ZSBlbnRyeSBy ZWZlcmVuY2VzIGl0OiByZWNsYWltIGl0CisJCSAqIChMUF9ERUFEKSwgd2hpY2ggbGV0cyB0 aGlzIHZhY3V1bSdzIGluZGV4IHBhc3Mgc3dlZXAgaXRzIG5vdy1zdGFsZQorCQkgKiBsZWF2 ZXMgYW5kIGEgbGF0ZXIgcGFzcyBmcmVlIHRoZSBsaW5lIHBvaW50ZXIuICBUaGlzIGxvc2Vz IG5vCisJCSAqIHBlci1ob3AgaW5mb3JtYXRpb24gZm9yIHJlYWRlcnMgLS0gaXRzIGF0dHJp YnV0ZXMgYXJlIGFscmVhZHkKKwkJICogY2FycmllZCBieSB0aGUgc3Vydml2aW5nIGxhdGVy IG1lbWJlcnMgdGhlIHJlYWRlciBzdGlsbCBjcm9zc2VzLgorCQkgKgorCQkgKiAtIE90aGVy d2lzZSBpdCBpbnRyb2R1Y2VkIGFuIGF0dHJpYnV0ZSBub3QgY2hhbmdlZCBhZ2Fpbiwgc28g YSBsaXZlCisJCSAqIGVudHJ5IHN0aWxsIHBvaW50cyBhdCBpdDoga2VlcCBpdCBhcyBhbiB4 aWQtZnJlZSBzdHViIGZvcndhcmRpbmcgdG8KKwkJICogdGhlIG5leHQgc3Vydml2b3IsIHBy ZXNlcnZpbmcgaXRzIGlubGluZSBiaXRtYXAgZm9yIHRoZSByZWFkIHBhdGguCisJCSAqCisJ CSAqIENsYXNzaWMtSE9UIG1lbWJlcnMgY2Fycnkgbm8gZW50cnkgb2YgdGhlaXIgb3duIGFu ZCBhcmUgcmVjbGFpbWVkCisJCSAqIHRvIExQX1VOVVNFRDsgc3Vydml2b3JzIGZvcndhcmQg cGFzdCB0aGVtLiAgVGhlIHJvb3QgaXMgcmVkaXJlY3RlZAorCQkgKiB0byB0aGUgZmlyc3Qg c3Vydml2b3IuICBTdHVicyBjYXJyeSBubyBYSURzLCBzbyB0aGUgcGFnZSBzdGF5cworCQkg KiBmcmVlemUtc2FmZTsgYmVjYXVzZSBlYWNoIGZvcndhcmRzIHRvIHRoZSBuZXh0IHN1cnZp dm9yIChub3QgdGhlCisJCSAqIGxpdmUgdHVwbGUpLCBhIHJlYWRlciBjcm9zc2luZyB0aGUg Y29sbGFwc2VkIHByZWZpeCBzZWVzIGV2ZXJ5CisJCSAqIHN1cnZpdmluZyBob3AncyBiaXRt YXAsIGFuZCBzdHViLT5zdHViIGZvcndhcmRpbmcgbGV0cyBhIGxhdGVyCisJCSAqIGNvbGxh cHNlIGV4dGVuZCB0aGUgY2hhaW4gd2l0aG91dCByZS1wb2ludGluZyBleGlzdGluZyBzdHVi cy4KKwkJICovCisJCU9mZnNldE51bWJlciBmaXJzdF9saXZlID0gY2hhaW5pdGVtc1tuZGVh ZGNoYWluXTsKKwkJT2Zmc2V0TnVtYmVyIG5leHRfc3Vydml2b3IgPSBmaXJzdF9saXZlOwor CQlPZmZzZXROdW1iZXIgcm9vdF90YXJnZXQ7CisJCWludAkJCXJlbG5hdHRzID0gUmVsYXRp b25HZXROdW1iZXJPZkF0dHJpYnV0ZXMocHJzdGF0ZS0+cmVsYXRpb24pOworCQl1aW50OAkJ bGF0ZXJhdHRyc1soTWF4SGVhcEF0dHJpYnV0ZU51bWJlciArIDcpIC8gOF07CisKKwkJLyoK KwkJICogbGF0ZXJhdHRycyBhY2N1bXVsYXRlcyBldmVyeSBzdXJ2aXZpbmcgaG9wJ3MgbW9k aWZpZWQgYXR0cmlidXRlcy4KKwkJICogU2l6ZSBpdCBmb3IgdGhlIHJlbGF0aW9uJ3MgY3Vy cmVudCBuYXR0cyAodGhlIG1heGltdW0pOyBlYWNoCisJCSAqIGNvbnRyaWJ1dGluZyB0dXBs ZSdzIGJpdG1hcCBpcyBsb2NhdGVkIGFuZCBPUi1lZCB1c2luZyB0aGF0IHR1cGxlJ3MKKwkJ ICogd3JpdGUtdGltZSBuYXR0cyAoSG90SW5kZXhlZFR1cGxlQml0bWFwTmF0dHMpLCBzaW5j ZSBBREQgQ09MVU1OIG1heQorCQkgKiBoYXZlIGdyb3duIHRoZSByZWxhdGlvbiBzaW5jZSBz b21lIGhvcHMgd2VyZSB3cml0dGVuLgogCQkgKi8KLQkJaGVhcF9wcnVuZV9yZWNvcmRfcmVk aXJlY3QocHJzdGF0ZSwgcm9vdG9mZm51bSwgY2hhaW5pdGVtc1tuZGVhZGNoYWluXSwKLQkJ CQkJCQkJICAgSXRlbUlkSXNOb3JtYWwocm9vdGxwKSk7Ci0JCWZvciAoaW50IGkgPSAxOyBp IDwgbmRlYWRjaGFpbjsgaSsrKQotCQkJaGVhcF9wcnVuZV9yZWNvcmRfdW51c2VkKHByc3Rh dGUsIGNoYWluaXRlbXNbaV0sIHRydWUpOworCQltZW1zZXQobGF0ZXJhdHRycywgMCwgSG90 SW5kZXhlZEJpdG1hcEJ5dGVzKHJlbG5hdHRzKSk7CisJCWZvciAoaW50IGkgPSBuZGVhZGNo YWluOyBpIDwgbmNoYWluOyBpKyspCisJCXsKKwkJCUl0ZW1JZAkJbHAgPSBQYWdlR2V0SXRl bUlkKHBhZ2UsIGNoYWluaXRlbXNbaV0pOworCQkJSGVhcFR1cGxlSGVhZGVyIGh0dXAgPSAo SGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBscCk7CisKKwkJCWlmICgoaHR1 cC0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0gMCkKKwkJCXsKKwkJ CQlpbnQJCQlibW5hdHRzID0gSG90SW5kZXhlZFR1cGxlQml0bWFwTmF0dHMoaHR1cCk7CisK KwkJCQlIb3RJbmRleGVkQml0bWFwVW5pb24obGF0ZXJhdHRycywKKwkJCQkJCQkJCSAgSG90 SW5kZXhlZEdldE1vZGlmaWVkQml0bWFwKGh0dXAsCisJCQkJCQkJCQkJCQkJCQkgIEl0ZW1J ZEdldExlbmd0aChscCksCisJCQkJCQkJCQkJCQkJCQkgIGJtbmF0dHMpLAorCQkJCQkJCQkJ ICBibW5hdHRzKTsKKwkJCX0KKwkJfQorCisJCS8qIGRlYWQgcHJlZml4OiByZWNsYWltIHN1 cGVyc2VkZWQgbWVtYmVycywgc3R1YiB0aGUgcmVzdCAqLworCQlmb3IgKGludCBpID0gbmRl YWRjaGFpbiAtIDE7IGkgPj0gMTsgaS0tKQorCQl7CisJCQlpZiAoaGVhcF9wcnVuZV9pdGVt X3ByZXNlcnZlc19ob3RfaW5kZXhlZChwYWdlLCBjaGFpbml0ZW1zW2ldKSkKKwkJCXsKKwkJ CQlJdGVtSWQJCWxwID0gUGFnZUdldEl0ZW1JZChwYWdlLCBjaGFpbml0ZW1zW2ldKTsKKwkJ CQlIZWFwVHVwbGVIZWFkZXIgaHR1cCA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVt KHBhZ2UsIGxwKTsKKwkJCQlpbnQJCQlibW5hdHRzID0gSG90SW5kZXhlZFR1cGxlQml0bWFw TmF0dHMoaHR1cCk7CisJCQkJY29uc3QgdWludDggKmF0dHJzID0gSG90SW5kZXhlZEdldE1v ZGlmaWVkQml0bWFwKGh0dXAsCisJCQkJCQkJCQkJCQkJCSBJdGVtSWRHZXRMZW5ndGgobHAp LAorCQkJCQkJCQkJCQkJCQkgYm1uYXR0cyk7CisKKwkJCQlpZiAoSG90SW5kZXhlZEJpdG1h cElzU3Vic2V0KGF0dHJzLCBsYXRlcmF0dHJzLCBibW5hdHRzKSkKKwkJCQkJaGVhcF9wcnVu ZV9yZWNvcmRfZGVhZF9vcl91bnVzZWQocHJzdGF0ZSwgY2hhaW5pdGVtc1tpXSwgdHJ1ZSk7 CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJaGVhcF9wcnVuZV9yZWNvcmRfc3R1YihwcnN0YXRl LCBjaGFpbml0ZW1zW2ldLCBuZXh0X3N1cnZpdm9yKTsKKwkJCQkJbmV4dF9zdXJ2aXZvciA9 IGNoYWluaXRlbXNbaV07CisJCQkJfQorCQkJCUhvdEluZGV4ZWRCaXRtYXBVbmlvbihsYXRl cmF0dHJzLCBhdHRycywgYm1uYXR0cyk7CisJCQl9CisJCQllbHNlCisJCQkJaGVhcF9wcnVu ZV9yZWNvcmRfdW51c2VkKHByc3RhdGUsIGNoYWluaXRlbXNbaV0sIHRydWUpOworCQl9CisK KwkJcm9vdF90YXJnZXQgPSBuZXh0X3N1cnZpdm9yOworCisJCS8qCisJCSAqIHJvb3QgLT4g Zmlyc3Qgc3Vydml2b3IgKHNraXAgYSByZWR1bmRhbnQgbm8tb3AgcmVkaXJlY3Qgb24KKwkJ ICogcmUtcHJ1bmUpCisJCSAqLworCQlpZiAoSXRlbUlkSXNSZWRpcmVjdGVkKHJvb3RscCkg JiYKKwkJCUl0ZW1JZEdldFJlZGlyZWN0KHJvb3RscCkgPT0gcm9vdF90YXJnZXQpCisJCQlo ZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfcmVkaXJlY3QocHJzdGF0ZSwgcm9vdG9m Zm51bSk7CisJCWVsc2UKKwkJCWhlYXBfcHJ1bmVfcmVjb3JkX3JlZGlyZWN0KHByc3RhdGUs IHJvb3RvZmZudW0sIHJvb3RfdGFyZ2V0LAorCQkJCQkJCQkJICAgSXRlbUlkSXNOb3JtYWwo cm9vdGxwKSk7CiAKIAkJLyogdGhlIHJlc3Qgb2YgdHVwbGVzIGluIHRoZSBjaGFpbiBhcmUg bm9ybWFsLCB1bmNoYW5nZWQgdHVwbGVzICovCiAJCWZvciAoaW50IGkgPSBuZGVhZGNoYWlu OyBpIDwgbmNoYWluOyBpKyspCkBAIC0xNzE4LDYgKzE5OTMsMzQgQEAgaGVhcF9wcnVuZV9y ZWNvcmRfcmVkaXJlY3QoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKIAkgKiBzZXBhcmF0ZWx5IGFz IGFuIHVuY2hhbmdlZCB0dXBsZS4KIAkgKi8KIAorCS8qCisJICogSWYgdGhlIHJlZGlyZWN0 IHBvaW50cyBhdCBhIEhPVC1zZWxlY3RpdmVseS11cGRhdGVkIGxpdmUgdHVwbGUsIHRoZQor CSAqIHBhZ2UgbWF5IHN0aWxsIGNhcnJ5IHN0YWxlIGJ0cmVlIGVudHJpZXMgdGhhdCByZXNv bHZlIHRocm91Z2ggdGhpcworCSAqIHJlZGlyZWN0IHRvIGEgdHVwbGUgd2l0aCBhIGRpZmZl cmVudCBrZXkuICBTdWNoIGVudHJpZXMgYXJlIGZpbHRlcmVkIGJ5CisJICogdGhlIHJlYWQg cGF0aCdzIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCwgd2hpY2ggcmVxdWlyZXMgZmV0Y2hp bmcgdGhlCisJICogaGVhcCB0dXBsZSAtLSBidXQgYW4gaW5kZXgtb25seSBzY2FuIHRydXN0 cyB0aGUgdmlzaWJpbGl0eSBtYXAgYW5kIHNraXBzCisJICogdGhhdCBmZXRjaC4gIFNvCisJ ICogdGhlIHBhZ2UgbXVzdCBub3QgYmUgcmVwb3J0ZWQgYWxsLXZpc2libGUvYWxsLWZyb3pl biB3aGlsZSBzdWNoIGEKKwkgKiByZWRpcmVjdCBleGlzdHM7IGl0IGJlY29tZXMgZWxpZ2li bGUgYWdhaW4gb25seSBvbmNlIHZhY3V1bSBoYXMgc3dlcHQKKwkgKiB0aGUgc3RhbGUgbGVh dmVzIGFuZCByZWNsYWltZWQgdGhlIHJlZGlyZWN0LgorCSAqLworCWlmIChyZG9mZm51bSA+ PSBGaXJzdE9mZnNldE51bWJlciAmJgorCQlyZG9mZm51bSA8PSBQYWdlR2V0TWF4T2Zmc2V0 TnVtYmVyKHByc3RhdGUtPnBhZ2UpKQorCXsKKwkJSXRlbUlkCQl0bHAgPSBQYWdlR2V0SXRl bUlkKHByc3RhdGUtPnBhZ2UsIHJkb2ZmbnVtKTsKKworCQlpZiAoSXRlbUlkSXNOb3JtYWwo dGxwKSkKKwkJeworCQkJSGVhcFR1cGxlSGVhZGVyIHRodHVwID0gKEhlYXBUdXBsZUhlYWRl cikgUGFnZUdldEl0ZW0ocHJzdGF0ZS0+cGFnZSwgdGxwKTsKKworCQkJaWYgKCh0aHR1cC0+ dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0gMCkKKwkJCXsKKwkJCQlw cnN0YXRlLT5zZXRfYWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJCQlwcnN0YXRlLT5zZXRfYWxs X2Zyb3plbiA9IGZhbHNlOworCQkJfQorCQl9CisJfQorCiAJQXNzZXJ0KHByc3RhdGUtPm5y ZWRpcmVjdGVkIDwgTWF4SGVhcFR1cGxlc1BlclBhZ2UpOwogCXByc3RhdGUtPnJlZGlyZWN0 ZWRbcHJzdGF0ZS0+bnJlZGlyZWN0ZWQgKiAyXSA9IG9mZm51bTsKIAlwcnN0YXRlLT5yZWRp cmVjdGVkW3Byc3RhdGUtPm5yZWRpcmVjdGVkICogMiArIDFdID0gcmRvZmZudW07CkBAIC0x NzM1LDYgKzIwMzgsNjUgQEAgaGVhcF9wcnVuZV9yZWNvcmRfcmVkaXJlY3QoUHJ1bmVTdGF0 ZSAqcHJzdGF0ZSwKIAlwcnN0YXRlLT5oYXN0dXAgPSB0cnVlOwogfQogCisvKgorICogUmVj b3JkIGEgbGluZSBwb2ludGVyIHRvIGJlIHJld3JpdHRlbiBpbiBwbGFjZSBhcyBhIEhPVC1z ZWxlY3RpdmVseS11cGRhdGVkCisgKiBjb2xsYXBzZS1zdXJ2aXZvciBzdHViIGZvcndhcmRp bmcgdG8gJ2ZvcndhcmQnLgorICoKKyAqIFRoZSBzb3VyY2UgbXVzdCBiZSBhIGRlYWQgaGVh cC1vbmx5IHR1cGxlIHRoYXQgY2FycmllZCBpdHMgb3duIGJ0cmVlCisgKiBlbnRyaWVzIChh IGtleSB0dXBsZSkgYW5kIHNvIGNhbm5vdCBiZSByZWNsYWltZWQgb3V0cmlnaHQ6IGEgc3Rh bGUgZW50cnkgbWF5CisgKiBzdGlsbCByZXNvbHZlIHRocm91Z2ggaXQuICBSZXdyaXRpbmcg aXQgaW50byBhbiB4aWQtZnJlZSBzdHViIGtlZXBzIHRoZQorICogZm9yd2FyZCBsaW5rIGFu ZCB0aGUgdHVwbGUncyBpbmxpbmUgbW9kaWZpZWQtYXR0cnMgYml0bWFwIChzbyB0aGUgcmVh ZCBwYXRoCisgKiBjYW4ganVkZ2Ugc3RhbGVuZXNzKSB3aGlsZSBkcm9wcGluZyBpdHMgWElE cywgd2hpY2gga2VlcHMgdGhlIHBhZ2UKKyAqIGZyZWV6ZS1zYWZlLgorICovCitzdGF0aWMg dm9pZAoraGVhcF9wcnVuZV9yZWNvcmRfc3R1YihQcnVuZVN0YXRlICpwcnN0YXRlLAorCQkJ CQkgICBPZmZzZXROdW1iZXIgb2ZmbnVtLCBPZmZzZXROdW1iZXIgZm9yd2FyZCkKK3sKKwlB c3NlcnQoIXByc3RhdGUtPnByb2Nlc3NlZFtvZmZudW1dKTsKKwlwcnN0YXRlLT5wcm9jZXNz ZWRbb2ZmbnVtXSA9IHRydWU7CisKKwkvKgorCSAqIEFzIHdpdGggYSByZWRpcmVjdCB0byBh IEhPVC1zZWxlY3RpdmVseS11cGRhdGVkIHR1cGxlLCB0aGUgcGFnZSBtdXN0CisJICogbm90 IGJlIHJlcG9ydGVkIGFsbC12aXNpYmxlL2FsbC1mcm96ZW4gd2hpbGUgYSBzdHViIGV4aXN0 czogYW4KKwkgKiBpbmRleC1vbmx5IHNjYW4gd291bGQgb3RoZXJ3aXNlIHRydXN0IHRoZSBW TSBhbmQgc2tpcCB0aGUgcmVjaGVjayB0aGF0CisJICogZmlsdGVycyBhIG5vdy1zdGFsZSBl bnRyeSByZXNvbHZpbmcgdGhyb3VnaCB0aGUgc3R1Yi4gIEEgc3R1YidzCisJICogSEVBUF9Y TUlOX0lOVkFMSUQgYWxzbyBtYWtlcyBpdCBpbnZpc2libGUgdG8gZXZlcnkgc25hcHNob3Qs IHdoaWNoIGFuCisJICogYWxsLXZpc2libGUgcGFnZSBtdXN0IG5ldmVyIGNvbnRhaW4uICBF bGlnaWJpbGl0eSByZXR1cm5zIG9uY2UgdmFjdXVtCisJICogcmVjbGFpbXMgdGhlIHN0dWIu CisJICovCisJcHJzdGF0ZS0+c2V0X2FsbF92aXNpYmxlID0gZmFsc2U7CisJcHJzdGF0ZS0+ c2V0X2FsbF9mcm96ZW4gPSBmYWxzZTsKKworCUFzc2VydChwcnN0YXRlLT5uc3R1YnMgPCBN YXhIZWFwVHVwbGVzUGVyUGFnZSk7CisJcHJzdGF0ZS0+c3R1YnNbcHJzdGF0ZS0+bnN0dWJz ICogMl0gPSBvZmZudW07CisJcHJzdGF0ZS0+c3R1YnNbcHJzdGF0ZS0+bnN0dWJzICogMiAr IDFdID0gZm9yd2FyZDsKKwlwcnN0YXRlLT5uc3R1YnMrKzsKKworCS8qIFRoZSBkZWFkIGtl eSB0dXBsZSdzIHN0b3JhZ2UgaXMgYmVpbmcgZGlzY2FyZGVkOyBjb3VudCBpdCByZW1vdmVk LiAqLworCXByc3RhdGUtPm5kZWxldGVkKys7CisKKwlwcnN0YXRlLT5oYXN0dXAgPSB0cnVl OworfQorCisvKgorICogUmVjb3JkIGFuIGV4aXN0aW5nIGNvbGxhcHNlLXN1cnZpdm9yIHN0 dWIgdGhhdCBpcyB0byBiZSBsZWZ0IHVuY2hhbmdlZC4KKyAqCisgKiBFbmNvdW50ZXJlZCB3 aGVuIHJlLXBydW5pbmcgYSBwYWdlIHRoYXQgYWxyZWFkeSBob2xkcyBzdHVicyBmcm9tIGFu IGVhcmxpZXIKKyAqIGNvbGxhcHNlLiAgVGhlIHN0dWIgaXMgcHJlc2VydmVkIChpdHMgYml0 bWFwIGlzIHN0aWxsIG5lZWRlZCkgYW5kIGNvdW50cyBhcworICogYSByZWFzb24gdGhlIHBh Z2UgY2Fubm90IGJlIHJlcG9ydGVkIGFsbC12aXNpYmxlL2FsbC1mcm96ZW4uCisgKi8KK3N0 YXRpYyB2b2lkCitoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfc3R1YihQcnVuZVN0 YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtKQoreworCUFzc2VydCghcHJzdGF0 ZS0+cHJvY2Vzc2VkW29mZm51bV0pOworCXByc3RhdGUtPnByb2Nlc3NlZFtvZmZudW1dID0g dHJ1ZTsKKwlwcnN0YXRlLT5oYXN0dXAgPSB0cnVlOworCisJcHJzdGF0ZS0+c2V0X2FsbF92 aXNpYmxlID0gZmFsc2U7CisJcHJzdGF0ZS0+c2V0X2FsbF9mcm96ZW4gPSBmYWxzZTsKK30K KwogLyogUmVjb3JkIGxpbmUgcG9pbnRlciB0byBiZSBtYXJrZWQgZGVhZCAqLwogc3RhdGlj IHZvaWQKIGhlYXBfcHJ1bmVfcmVjb3JkX2RlYWQoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zm c2V0TnVtYmVyIG9mZm51bSwKQEAgLTE4MTYsNiArMjE3OCw1MiBAQCBoZWFwX3BydW5lX3Jl Y29yZF91bnVzZWQoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bSwg Ym9vbCB3YXNfbm9ybQogCQlwcnN0YXRlLT5uZGVsZXRlZCsrOwogfQogCisKKy8qCisgKiBo ZWFwX3BydW5lX2l0ZW1fcHJlc2VydmVzX2hvdF9pbmRleGVkCisgKgkJVHJ1ZSBpZmYgdGhl IExQIGF0IGBvZmZudW1gIG9uIGBwYWdlYCBpcyBhIGxpdmUgSE9ULWluZGV4ZWQgKEhPVC9T SVUpCisgKgkJaGVhcC1vbmx5IHR1cGxlIHdob3NlIExQIG11c3QgYmUgcHJlc2VydmVkIHJh dGhlciB0aGFuIHJlY2xhaW1lZCB0bworICoJCUxQX1VOVVNFRCwgYmVjYXVzZSBhIG5vdC15 ZXQtc3dlcHQgaW5kZXggZW50cnkgbWF5IHN0aWxsIHBvaW50IGF0IGl0LgorICoKKyAqIEEg SE9ULWluZGV4ZWQgdXBkYXRlIHBsYW50cyBhIG5ldyBpbmRleCBlbnRyeSBwb2ludGluZyBh dCB0aGUgaGVhcC1vbmx5CisgKiB0dXBsZSdzIG93biBUSUQuICBDbGFzc2ljIEhPVCdzIGlu dmFyaWFudCB0aGF0IG1pZC1jaGFpbiBMUHMgaGF2ZSBubworICogZXh0ZXJuYWwgcmVmZXJl bmNlcyB0aGVyZWZvcmUgZG9lcyBub3QgaG9sZCBmb3Igc3VjaCB0dXBsZXM6IHVudGlsCisg KiBhbWJ1bGtkZWxldGUgc3dlZXBzIGFueSBzdGFsZSBpbmRleCBlbnRyeSwgYSByZWFkZXIg YXJyaXZpbmcgdmlhIGl0IG11c3QKKyAqIHN0aWxsIGZpbmQgYSB3YWxrYWJsZSBob3AgYXQg dGhlIExQLiAgQ2hhaW4gY29sbGFwc2UgY29udmVydHMgZGVhZCBtZW1iZXJzCisgKiB0byBM UF9SRURJUkVDVCBmb3J3YXJkZXJzIGZvciBleGFjdGx5IHRoaXMgcmVhc29uOyBhIGxpdmUg bWVtYmVyIGxpa2UgdGhpcworICogb25lIG11c3Qgc2ltcGx5IG5vdCBiZSByZWNsYWltZWQg b3V0IGZyb20gdW5kZXIgc3VjaCBhIHJlYWRlci4KKyAqCisgKiBFeGNsdWRlZCBmcm9tIHBy ZXNlcnZhdGlvbjoKKyAqICAgLSBpdGVtcyB0aGF0IGFyZSBub3QgTFBfTk9STUFMIChSRURJ UkVDVCwgREVBRCwgVU5VU0VEKTsKKyAqICAgLSB0dXBsZXMgd2l0aG91dCBIRUFQX0lOREVY RURfVVBEQVRFRCAoY2xhc3NpYyBIT1QgY2hhaW4gbWVtYmVycyBuZXZlcgorICogICAgIGhh ZCBhIHBlci10dXBsZSBpbmRleCBlbnRyeSBwbGFudGVkKTsKKyAqICAgLSB0dXBsZXMgd2l0 aCBubyBhdHRyaWJ1dGVzIChkZWZlbnNpdmU6IG5vdCBhIHJlYWwgY2hhaW4gbWVtYmVyKTsK KyAqICAgLSBhYm9ydGVkIGhlYXAtb25seSB0dXBsZXMgKEhFQVBfWE1JTl9JTlZBTElEKTog bmV2ZXIgdmlzaWJsZSB0aHJvdWdoIGFueQorICogICAgIGluZGV4IGVudHJ5LCBzbyByZWNs YWltaW5nIHRoZW0gaXMgc2FmZS4KKyAqLworc3RhdGljIGJvb2wKK2hlYXBfcHJ1bmVfaXRl bV9wcmVzZXJ2ZXNfaG90X2luZGV4ZWQoUGFnZSBwYWdlLCBPZmZzZXROdW1iZXIgb2ZmbnVt KQoreworCUl0ZW1JZAkJbHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIG9mZm51bSk7CisJSGVh cFR1cGxlSGVhZGVyIGh0dXA7CisKKwlpZiAoIUl0ZW1JZElzTm9ybWFsKGxwKSkKKwkJcmV0 dXJuIGZhbHNlOworCisJaHR1cCA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBh Z2UsIGxwKTsKKworCWlmICgoaHR1cC0+dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBE QVRFRCkgPT0gMCkKKwkJcmV0dXJuIGZhbHNlOworCWlmIChIZWFwVHVwbGVIZWFkZXJHZXRO YXR0cyhodHVwKSA9PSAwKQorCQlyZXR1cm4gZmFsc2U7CisJaWYgKChodHVwLT50X2luZm9t YXNrICYgSEVBUF9YTUlOX0lOVkFMSUQpICE9IDApCisJCXJldHVybiBmYWxzZTsKKworCXJl dHVybiB0cnVlOworfQorCisKKwogLyoKICAqIFJlY29yZCBhbiB1bnVzZWQgbGluZSBwb2lu dGVyIHRoYXQgaXMgbGVmdCB1bmNoYW5nZWQuCiAgKi8KQEAgLTIwNDksOCArMjQ1Nyw0NCBA QCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfcmVkaXJlY3QoUHJ1bmVTdGF0ZSAq cHJzdGF0ZSwgT2Zmc2V0TnVtYmVyIG9mZm51bQogCSAqLwogCUFzc2VydCghcHJzdGF0ZS0+ cHJvY2Vzc2VkW29mZm51bV0pOwogCXByc3RhdGUtPnByb2Nlc3NlZFtvZmZudW1dID0gdHJ1 ZTsKKworCS8qCisJICogQXMgaW4gaGVhcF9wcnVuZV9yZWNvcmRfcmVkaXJlY3Q6IGlmIHRo aXMgcmVkaXJlY3QgZm9yd2FyZHMgdG8gYQorCSAqIEhPVC1zZWxlY3RpdmVseS11cGRhdGVk IGxpdmUgdHVwbGUsIHRoZSBwYWdlIG1heSBjYXJyeSBzdGFsZSBidHJlZQorCSAqIGVudHJp ZXMgdGhhdCByZXNvbHZlIHRocm91Z2ggaXQsIHNvIGl0IG11c3Qgbm90IGJlIHJlcG9ydGVk CisJICogYWxsLXZpc2libGUvYWxsLWZyb3plbiAoYW4gaW5kZXgtb25seSBzY2FuIHdvdWxk IG90aGVyd2lzZSBza2lwIHRoZQorCSAqIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBjaGVj aykuICBUaGlzIG11c3QgaGFwcGVuIGhlcmUgdG9vLCBub3Qgb25seSB3aGVuIHRoZQorCSAq IHJlZGlyZWN0IGlzIGZpcnN0IGNyZWF0ZWQsIGJlY2F1c2UgYSByZS1wcnVuZSByZWNvcmRz IGFuIGV4aXN0aW5nIFNJVQorCSAqIHJlZGlyZWN0IGFzIHVuY2hhbmdlZC4KKwkgKi8KKwl7 CisJCUl0ZW1JZAkJbHAgPSBQYWdlR2V0SXRlbUlkKHByc3RhdGUtPnBhZ2UsIG9mZm51bSk7 CisKKwkJaWYgKEl0ZW1JZElzUmVkaXJlY3RlZChscCkpCisJCXsKKwkJCU9mZnNldE51bWJl ciByZG9mZm51bSA9IEl0ZW1JZEdldFJlZGlyZWN0KGxwKTsKKworCQkJaWYgKHJkb2ZmbnVt ID49IEZpcnN0T2Zmc2V0TnVtYmVyICYmCisJCQkJcmRvZmZudW0gPD0gUGFnZUdldE1heE9m ZnNldE51bWJlcihwcnN0YXRlLT5wYWdlKSkKKwkJCXsKKwkJCQlJdGVtSWQJCXRscCA9IFBh Z2VHZXRJdGVtSWQocHJzdGF0ZS0+cGFnZSwgcmRvZmZudW0pOworCisJCQkJaWYgKEl0ZW1J ZElzTm9ybWFsKHRscCkpCisJCQkJeworCQkJCQlIZWFwVHVwbGVIZWFkZXIgdGh0dXAgPSAo SGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwcnN0YXRlLT5wYWdlLCB0bHApOworCisJ CQkJCWlmICgodGh0dXAtPnRfaW5mb21hc2syICYgSEVBUF9JTkRFWEVEX1VQREFURUQpICE9 IDApCisJCQkJCXsKKwkJCQkJCXByc3RhdGUtPnNldF9hbGxfdmlzaWJsZSA9IGZhbHNlOwor CQkJCQkJcHJzdGF0ZS0+c2V0X2FsbF9mcm96ZW4gPSBmYWxzZTsKKwkJCQkJfQorCQkJCX0K KwkJCX0KKwkJfQorCX0KIH0KIAorCiAvKgogICogUGVyZm9ybSB0aGUgYWN0dWFsIHBhZ2Ug Y2hhbmdlcyBuZWVkZWQgYnkgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKS4KICAqCkBA IC0yMDY1LDE3ICsyNTA5LDIyIEBAIHZvaWQKIGhlYXBfcGFnZV9wcnVuZV9leGVjdXRlKEJ1 ZmZlciBidWZmZXIsIGJvb2wgbHBfdHJ1bmNhdGVfb25seSwKIAkJCQkJCU9mZnNldE51bWJl ciAqcmVkaXJlY3RlZCwgaW50IG5yZWRpcmVjdGVkLAogCQkJCQkJT2Zmc2V0TnVtYmVyICpu b3dkZWFkLCBpbnQgbmRlYWQsCi0JCQkJCQlPZmZzZXROdW1iZXIgKm5vd3VudXNlZCwgaW50 IG51bnVzZWQpCisJCQkJCQlPZmZzZXROdW1iZXIgKm5vd3VudXNlZCwgaW50IG51bnVzZWQs CisJCQkJCQlPZmZzZXROdW1iZXIgKnN0dWJzLCBpbnQgbnN0dWJzKQogewogCVBhZ2UJCXBh Z2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAJT2Zmc2V0TnVtYmVyICpvZmZudW07CiAJ SGVhcFR1cGxlSGVhZGVyIGh0dXAgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZOwogCiAJLyog U2hvdWxkbid0IGJlIGNhbGxlZCB1bmxlc3MgdGhlcmUncyBzb21ldGhpbmcgdG8gZG8gKi8K LQlBc3NlcnQobnJlZGlyZWN0ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBudW51c2VkID4gMCk7 CisJQXNzZXJ0KG5yZWRpcmVjdGVkID4gMCB8fCBuZGVhZCA+IDAgfHwgbnVudXNlZCA+IDAg fHwgbnN0dWJzID4gMCk7CiAKLQkvKiBJZiAnbHBfdHJ1bmNhdGVfb25seScsIHdlIGNhbiBv bmx5IHJlbW92ZSBhbHJlYWR5LWRlYWQgbGluZSBwb2ludGVycyAqLwotCUFzc2VydCghbHBf dHJ1bmNhdGVfb25seSB8fCAobnJlZGlyZWN0ZWQgPT0gMCAmJiBuZGVhZCA9PSAwKSk7CisJ LyoKKwkgKiBJZiAnbHBfdHJ1bmNhdGVfb25seScsIHdlIGNhbiBvbmx5IHJlbW92ZSBhbHJl YWR5LWRlYWQgbGluZSBwb2ludGVycworCSAqIGFuZCByZS1wb2ludCByZWRpcmVjdHMgKHRo ZSBsYXR0ZXIgd2hlbiB2YWN1dW0gcmVjbGFpbXMgYSBjb2xsYXBzZWQKKwkgKiBjaGFpbiBh bmQgcmUtcG9pbnRzIGEgcm9vdCByZWRpcmVjdCBhdCB0aGUgc3Vydml2aW5nIHR1cGxlKS4K KwkgKi8KKwlBc3NlcnQoIWxwX3RydW5jYXRlX29ubHkgfHwgbmRlYWQgPT0gMCk7CiAKIAkv KiBVcGRhdGUgYWxsIHJlZGlyZWN0ZWQgbGluZSBwb2ludGVycyAqLwogCW9mZm51bSA9IHJl ZGlyZWN0ZWQ7CkBAIC0yMDg2LDYgKzI1MzUsMTYgQEAgaGVhcF9wYWdlX3BydW5lX2V4ZWN1 dGUoQnVmZmVyIGJ1ZmZlciwgYm9vbCBscF90cnVuY2F0ZV9vbmx5LAogCQlJdGVtSWQJCWZy b21scCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgZnJvbW9mZik7CiAJCUl0ZW1JZAkJdG9scCBQ R19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7CiAKKwkJLyoKKwkJICogQSByZWR1bmRhbnQgcmVk aXJlY3QgKHRoZSBMUCBhbHJlYWR5IHJlZGlyZWN0cyB0byB0b29mZikgaXMgYQorCQkgKiBo YXJtbGVzcyBuby1vcC4gIFRoaXMgYXJpc2VzIHdoZW4gYSBIT1QtaW5kZXhlZCBjaGFpbiB0 aGF0IHdhcworCQkgKiBhbHJlYWR5IGNvbGxhcHNlZCBpcyByZS1wcnVuZWQgYW5kIHRoZSBy b290IHN0aWxsIHJlc29sdmVzIHRvIHRoZQorCQkgKiBzYW1lIHRhcmdldDsgc2tpcCBpdCBz byB0aGUgYXBwbHkgc3RheXMgaWRlbXBvdGVudCBvbiBib3RoIHByaW1hcnkKKwkJICogYW5k IHJlcGxheS4KKwkJICovCisJCWlmIChJdGVtSWRJc1JlZGlyZWN0ZWQoZnJvbWxwKSAmJiBJ dGVtSWRHZXRSZWRpcmVjdChmcm9tbHApID09IHRvb2ZmKQorCQkJY29udGludWU7CisKICNp ZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCiAKIAkJLyoKQEAgLTIxMDAsNyArMjU1OSwxNiBA QCBoZWFwX3BhZ2VfcHJ1bmVfZXhlY3V0ZShCdWZmZXIgYnVmZmVyLCBib29sIGxwX3RydW5j YXRlX29ubHksCiAJCQlBc3NlcnQoSXRlbUlkSGFzU3RvcmFnZShmcm9tbHApICYmIEl0ZW1J ZElzTm9ybWFsKGZyb21scCkpOwogCiAJCQlodHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFn ZUdldEl0ZW0ocGFnZSwgZnJvbWxwKTsKLQkJCUFzc2VydCghSGVhcFR1cGxlSGVhZGVySXNI ZWFwT25seShodHVwKSk7CisKKwkJCS8qCisJCQkgKiBUaGUgcmVkaXJlY3Qgc291cmNlIGlz IG5vcm1hbGx5IHRoZSBub24taGVhcC1vbmx5IGNoYWluIHJvb3QuIEEKKwkJCSAqIEhPVC9T SVUgY2hhaW4gY29sbGFwc2UgYWRkaXRpb25hbGx5IHJlZGlyZWN0cyBkZWFkIGhlYXAtb25s eQorCQkJICogbWVtYmVycyB0aGF0IGNhcnJpZWQgdGhlaXIgb3duIGJ0cmVlIGVudHJ5IHRv IHRoZSBsaXZlIHR1cGxlLAorCQkJICogc28gYSBoZWFwLW9ubHkgcmVkaXJlY3Qgc291cmNl IGlzIGFsbG93ZWQgd2hlbiBpdCBpcworCQkJICogSE9ULXNlbGVjdGl2ZWx5LXVwZGF0ZWQg KEhFQVBfSU5ERVhFRF9VUERBVEVEKS4KKwkJCSAqLworCQkJQXNzZXJ0KCFIZWFwVHVwbGVI ZWFkZXJJc0hlYXBPbmx5KGh0dXApIHx8CisJCQkJICAgKGh0dXAtPnRfaW5mb21hc2syICYg SEVBUF9JTkRFWEVEX1VQREFURUQpICE9IDApOwogCQl9CiAJCWVsc2UKIAkJewpAQCAtMjEy OCwxMiArMjU5Niw1NSBAQCBoZWFwX3BhZ2VfcHJ1bmVfZXhlY3V0ZShCdWZmZXIgYnVmZmVy LCBib29sIGxwX3RydW5jYXRlX29ubHksCiAJCXRvbHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2Us IHRvb2ZmKTsKIAkJQXNzZXJ0KEl0ZW1JZEhhc1N0b3JhZ2UodG9scCkgJiYgSXRlbUlkSXNO b3JtYWwodG9scCkpOwogCQlodHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0o cGFnZSwgdG9scCk7CisJCS8qIEEgcmVkaXJlY3QgdGFyZ2V0cyB0aGUgZmlyc3Qgc3Vydml2 aW5nIG1lbWJlcjogYSBoZWFwLW9ubHkgdHVwbGUuICovCiAJCUFzc2VydChIZWFwVHVwbGVI ZWFkZXJJc0hlYXBPbmx5KGh0dXApKTsKICNlbmRpZgogCiAJCUl0ZW1JZFNldFJlZGlyZWN0 KGZyb21scCwgdG9vZmYpOwogCX0KIAorCS8qCisJICogUmV3cml0ZSBjb2xsYXBzZS1zdXJ2 aXZvciBzdHVicyBpbiBwbGFjZS4gIEVhY2ggKG9mZnNldCwgZm9yd2FyZCkgcGFpcgorCSAq IG5hbWVzIGEgZGVhZCBrZXkgdHVwbGUgdG8gYmUgdHVybmVkIGludG8gYW4geGlkLWZyZWUg Zm9yd2FyZGluZyBzdHViOgorCSAqIHBlcm1hbmVudGx5IGludmlzaWJsZSAoSEVBUF9YTUlO X0lOVkFMSUR8SEVBUF9YTUFYX0lOVkFMSUQpLCBmbGFnZ2VkCisJICogSEVBUF9JTkRFWEVE X1VQREFURUQgd2l0aCBuYXR0cyA9PSAwIHNvIGNvbnN1bWVycyByZWNvZ25pc2UgaXQgYXMg YQorCSAqIHN0dWIgcmF0aGVyIHRoYW4gYSB0dXBsZSwgaGVhcC1vbmx5IHByZXNlcnZlZCBz byBpdCByZW1haW5zIGEgdmFsaWQKKwkgKiByZWRpcmVjdC9mb3J3YXJkIHRhcmdldCwgYW5k IHRfY3RpZC5vZmZudW0gc2V0IHRvIHRoZSBmb3J3YXJkIG9mZnNldC4KKwkgKiBUaGUgaXRl bSdzIHN0b3JhZ2UgKGluY2x1ZGluZyBpdHMgaW5saW5lIG1vZGlmaWVkLWF0dHJzIGJpdG1h cCBpbiB0aGUKKwkgKiBmaW5hbCBieXRlcykgaXMgbGVmdCB1bmRpc3R1cmJlZCwgc28gdGhl IGJpdG1hcCBzdXJ2aXZlcyBhbmQgbmVlZCBub3QKKwkgKiBiZSBjYXJyaWVkIGluIFdBTC4K KwkgKi8KKwlvZmZudW0gPSBzdHViczsKKwlmb3IgKGludCBpID0gMDsgaSA8IG5zdHViczsg aSsrKQorCXsKKwkJT2Zmc2V0TnVtYmVyIG9mZiA9ICpvZmZudW0rKzsKKwkJT2Zmc2V0TnVt YmVyIGZvcndhcmQgPSAqb2ZmbnVtKys7CisJCUl0ZW1JZAkJbHAgPSBQYWdlR2V0SXRlbUlk KHBhZ2UsIG9mZik7CisJCUhlYXBUdXBsZUhlYWRlciB0dXA7CisJCWludAkJCWJpdG1hcF9u YXR0czsKKworCQlBc3NlcnQoSXRlbUlkSXNOb3JtYWwobHApKTsKKwkJdHVwID0gKEhlYXBU dXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgbHApOworCisJCS8qCisJCSAqIFByZXNl cnZlIHRoZSB0dXBsZSdzIHdyaXRlLXRpbWUgbmF0dHMgYmVmb3JlIHdlIG92ZXJ3cml0ZSB0 aGUgbmF0dHMKKwkJICogZmllbGQgd2l0aCB0aGUgc3R1YiBzZW50aW5lbCAoMCk6IHRoZSB0 cmFpbGluZyBtb2RpZmllZC1hdHRycyBiaXRtYXAKKwkJICogd2FzIHNpemVkIHdpdGggaXQs IGFuZCByZWFkZXJzIG5lZWQgaXQgdG8gbG9jYXRlIHRoZSBiaXRtYXAgd2hlbiB0aGUKKwkJ ICogcmVsYXRpb24ncyBjdXJyZW50IG5hdHRzIGhhcyBzaW5jZSBncm93biAoQUREIENPTFVN TikuICBUaGUgc3R1YidzCisJCSAqIHRfY3RpZCBvZmZzZXQgaGFsZiBob2xkcyB0aGUgZm9y d2FyZCBsaW5rOyB0aGUgYmxvY2sgaGFsZiBpcyB1bnVzZWQKKwkJICogZm9yIGEgc3R1Yiwg c28gc3Rhc2ggdGhlIG5hdHRzIHRoZXJlLiAgVGhpcyBydW5zIGlkZW50aWNhbGx5IG9uIHRo ZQorCQkgKiBwcmltYXJ5IGFuZCBpbiByZWRvICh0aGUgcHJlLXN0dWIgdHVwbGUgaXMgb24g Ym90aCBwYWdlcyksIHNvIG5vIFdBTAorCQkgKiBjaGFuZ2UgaXMgbmVlZGVkLgorCQkgKi8K KwkJYml0bWFwX25hdHRzID0gSGVhcFR1cGxlSGVhZGVyR2V0TmF0dHModHVwKTsKKworCQl0 dXAtPnRfaW5mb21hc2sgPSBIRUFQX1hNSU5fSU5WQUxJRCB8IEhFQVBfWE1BWF9JTlZBTElE OworCQl0dXAtPnRfaW5mb21hc2syID0gSEVBUF9PTkxZX1RVUExFIHwgSEVBUF9JTkRFWEVE X1VQREFURUQ7CisJCUhlYXBUdXBsZUhlYWRlclNldE5hdHRzKHR1cCwgMCk7CisJCUl0ZW1Q b2ludGVyU2V0T2Zmc2V0TnVtYmVyKCZ0dXAtPnRfY3RpZCwgZm9yd2FyZCk7CisJCUhvdElu ZGV4ZWRTdHViU2V0Qml0bWFwTmF0dHModHVwLCBiaXRtYXBfbmF0dHMpOworCX0KKwogCS8q IFVwZGF0ZSBhbGwgbm93LWRlYWQgbGluZSBwb2ludGVycyAqLwogCW9mZm51bSA9IG5vd2Rl YWQ7CiAJZm9yIChpbnQgaSA9IDA7IGkgPCBuZGVhZDsgaSsrKQpAQCAtMjE0OSwxMiArMjY2 MCwyMyBAQCBoZWFwX3BhZ2VfcHJ1bmVfZXhlY3V0ZShCdWZmZXIgYnVmZmVyLCBib29sIGxw X3RydW5jYXRlX29ubHksCiAJCSAqIGFuIGluZGV4LiAgVGhpcyBzaG91bGQgbmV2ZXIgYmUg bmVjZXNzYXJ5IHdpdGggYW55IGluZGl2aWR1YWwKIAkJICogaGVhcC1vbmx5IHR1cGxlIGl0 ZW0sIHRob3VnaC4gKEl0J3Mgbm90IGNsZWFyIGhvdyBtdWNoIG9mIGEgcHJvYmxlbQogCQkg KiB0aGF0IHdvdWxkIGJlLCBidXQgdGhlcmUgaXMgbm8gcmVhc29uIHRvIGFsbG93IGl0LikK KwkJICoKKwkJICogRXhjZXB0aW9uOiBhIEhPVC1pbmRleGVkIGFib3J0ZWQgb3JwaGFuIHdo b3NlIGNoYWluIHJvb3QgaXMKKwkJICogdW5yZWFjaGFibGUgb24gdGhpcyBwYWdlIGlzIGlu dGVudGlvbmFsbHkgbWFya2VkIExQX0RFQUQgYnkgdGhlCisJCSAqIGhlYXAtb25seS10dXBs ZXMgbG9vcCBpbiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSAoc2VlIHRoZQorCQkgKiBo ZWFwX3BydW5lX3JlY29yZF9kZWFkIGNhbGwgdGhlcmUpLiAgVGhlIHR1cGxlIGlzIGhlYXAt b25seSAoaXQgd2FzCisJCSAqIGNyZWF0ZWQgYnkgYW4gVVBEQVRFKSBhbmQgY2FycmllcyBI RUFQX0lOREVYRURfVVBEQVRFRDsgdGhlCisJCSAqIGFkamFjZW50IGJ0cmVlIGxlYWYgaXMg c3RpbGwgbGl2ZSwgc28gd2Uga2VlcCB0aGUgc2xvdCBwaW5uZWQgdmlhCisJCSAqIExQX0RF QUQgdW50aWwgYW1idWxrZGVsZXRlIHN3ZWVwcyBpdC4gIEEgc3Vic2VxdWVudCB2YWN1dW0g cmVjbGFpbXMKKwkJICogdGhlIExQIHRvIExQX1VOVVNFRC4KIAkJICovCiAJCWlmIChJdGVt SWRIYXNTdG9yYWdlKGxwKSkKIAkJewogCQkJQXNzZXJ0KEl0ZW1JZElzTm9ybWFsKGxwKSk7 CiAJCQlodHVwID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgbHApOwot CQkJQXNzZXJ0KCFIZWFwVHVwbGVIZWFkZXJJc0hlYXBPbmx5KGh0dXApKTsKKwkJCUFzc2Vy dCghSGVhcFR1cGxlSGVhZGVySXNIZWFwT25seShodHVwKSB8fAorCQkJCSAgICgoaHR1cC0+ dF9pbmZvbWFzazIgJiBIRUFQX0lOREVYRURfVVBEQVRFRCkgIT0gMCAmJgorCQkJCQlIZWFw VHVwbGVIZWFkZXJHZXROYXR0cyhodHVwKSA+IDApKTsKIAkJfQogCQllbHNlCiAJCXsKQEAg LTIxNzcsNyArMjY5OSw3IEBAIGhlYXBfcGFnZV9wcnVuZV9leGVjdXRlKEJ1ZmZlciBidWZm ZXIsIGJvb2wgbHBfdHJ1bmNhdGVfb25seSwKIAogCQlpZiAobHBfdHJ1bmNhdGVfb25seSkK IAkJewotCQkJLyogU2V0dGluZyBMUF9ERUFEIHRvIExQX1VOVVNFRCBpbiB2YWN1dW0ncyBz ZWNvbmQgcGFzcyAqLworCQkJLyogU2V0dGluZyBMUF9ERUFEIHRvIExQX1VOVVNFRCBpbiB2 YWN1dW0ncyBzZWNvbmQgcGFzcy4gKi8KIAkJCUFzc2VydChJdGVtSWRJc0RlYWQobHApICYm ICFJdGVtSWRIYXNTdG9yYWdlKGxwKSk7CiAJCX0KIAkJZWxzZQpAQCAtMjE4OCw3ICsyNzEw LDggQEAgaGVhcF9wYWdlX3BydW5lX2V4ZWN1dGUoQnVmZmVyIGJ1ZmZlciwgYm9vbCBscF90 cnVuY2F0ZV9vbmx5LAogCQkJICogaXRlbXMgdG8gYmUgbWFkZSBMUF9VTlVTRUQgaW5zdGVh ZC4gIFRoaXMgaXMgb25seSBwb3NzaWJsZSBpZgogCQkJICogdGhlIHJlbGF0aW9uIGhhcyBu byBpbmRleGVzLiAgSWYgdGhlcmUgYXJlIGFueSBkZWFkIGl0ZW1zLCB0aGVuCiAJCQkgKiBt YXJrX3VudXNlZF9ub3cgd2FzIG5vdCB0cnVlIGFuZCBldmVyeSBpdGVtIGJlaW5nIG1hcmtl ZAotCQkJICogTFBfVU5VU0VEIG11c3QgcmVmZXIgdG8gYSBoZWFwLW9ubHkgdHVwbGUuCisJ CQkgKiBMUF9VTlVTRUQgbXVzdCByZWZlciB0byBhIGhlYXAtb25seSB0dXBsZSB3aG9zZSBj aGFpbiBoYXMgYmVlbgorCQkJICogcHJ1bmVkLgogCQkJICovCiAJCQlpZiAobmRlYWQgPiAw KQogCQkJewpAQCAtMjI2NCw2ICsyNzg3LDggQEAgcGFnZV92ZXJpZnlfcmVkaXJlY3RzKFBh Z2UgcGFnZSkKIAkJQXNzZXJ0KEl0ZW1JZElzTm9ybWFsKHRhcmdpdGVtKSk7CiAJCUFzc2Vy dChJdGVtSWRIYXNTdG9yYWdlKHRhcmdpdGVtKSk7CiAJCWh0dXAgPSAoSGVhcFR1cGxlSGVh ZGVyKSBQYWdlR2V0SXRlbShwYWdlLCB0YXJnaXRlbSk7CisKKwkJLyogQSByZWRpcmVjdCB0 YXJnZXRzIHRoZSBmaXJzdCBzdXJ2aXZpbmcgY2hhaW4gbWVtYmVyOiBoZWFwLW9ubHkuICov CiAJCUFzc2VydChIZWFwVHVwbGVIZWFkZXJJc0hlYXBPbmx5KGh0dXApKTsKIAl9CiAjZW5k aWYKQEAgLTI1NjYsNyArMzA5MSw4IEBAIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVs YXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkgIEhlYXBUdXBsZUZyZWV6 ZSAqZnJvemVuLCBpbnQgbmZyb3plbiwKIAkJCQkJCSAgT2Zmc2V0TnVtYmVyICpyZWRpcmVj dGVkLCBpbnQgbnJlZGlyZWN0ZWQsCiAJCQkJCQkgIE9mZnNldE51bWJlciAqZGVhZCwgaW50 IG5kZWFkLAotCQkJCQkJICBPZmZzZXROdW1iZXIgKnVudXNlZCwgaW50IG51bnVzZWQpCisJ CQkJCQkgIE9mZnNldE51bWJlciAqdW51c2VkLCBpbnQgbnVudXNlZCwKKwkJCQkJCSAgT2Zm c2V0TnVtYmVyICpzdHVicywgaW50IG5zdHVicykKIHsKIAl4bF9oZWFwX3BydW5lIHhscmVj OwogCVhMb2dSZWNQdHIJcmVjcHRyOwpAQCAtMjU4MSw4ICszMTA3LDEwIEBAIGxvZ19oZWFw X3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJ eGxocF9wcnVuZV9pdGVtcyByZWRpcmVjdF9pdGVtczsKIAl4bGhwX3BydW5lX2l0ZW1zIGRl YWRfaXRlbXM7CiAJeGxocF9wcnVuZV9pdGVtcyB1bnVzZWRfaXRlbXM7CisJeGxocF9wcnVu ZV9pdGVtcyBzdHViX2l0ZW1zOwogCU9mZnNldE51bWJlciBmcnpfb2Zmc2V0c1tNYXhIZWFw VHVwbGVzUGVyUGFnZV07Ci0JYm9vbAkJZG9fcHJ1bmUgPSBucmVkaXJlY3RlZCA+IDAgfHwg bmRlYWQgPiAwIHx8IG51bnVzZWQgPiAwOworCWJvb2wJCWRvX3BydW5lID0gbnJlZGlyZWN0 ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBudW51c2VkID4gMCB8fAorCQluc3R1YnMgPiAwOwog CWJvb2wJCWRvX3NldF92bSA9IHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7 CiAJYm9vbAkJaGVhcF9mcGlfYWxsb3dlZCA9IHRydWU7CiAKQEAgLTI2NzAsNiArMzE5OCwx NiBAQCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZm ZXIgYnVmZmVyLAogCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsIHVudXNlZCwKIAkJCQkJCQlz aXplb2YoT2Zmc2V0TnVtYmVyKSAqIG51bnVzZWQpOwogCX0KKwlpZiAobnN0dWJzID4gMCkK Kwl7CisJCXhscmVjLmZsYWdzIHw9IFhMSFBfSEFTX0hPVF9JTkRFWEVEX1NUVUJTOworCisJ CXN0dWJfaXRlbXMubnRhcmdldHMgPSBuc3R1YnM7CisJCVhMb2dSZWdpc3RlckJ1ZkRhdGEo MCwgJnN0dWJfaXRlbXMsCisJCQkJCQkJb2Zmc2V0b2YoeGxocF9wcnVuZV9pdGVtcywgZGF0 YSkpOworCQlYTG9nUmVnaXN0ZXJCdWZEYXRhKDAsIHN0dWJzLAorCQkJCQkJCXNpemVvZihP ZmZzZXROdW1iZXJbMl0pICogbnN0dWJzKTsKKwl9CiAJaWYgKG5mcm96ZW4gPiAwKQogCQlY TG9nUmVnaXN0ZXJCdWZEYXRhKDAsIGZyel9vZmZzZXRzLAogCQkJCQkJCXNpemVvZihPZmZz ZXROdW1iZXIpICogbmZyb3plbik7CkBAIC0yNjkyLDggKzMyMzAsMTcgQEAgbG9nX2hlYXBf cHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJ eGxyZWMuZmxhZ3MgfD0gWExIUF9DTEVBTlVQX0xPQ0s7CiAJZWxzZQogCXsKLQkJQXNzZXJ0 KG5yZWRpcmVjdGVkID09IDAgJiYgbmRlYWQgPT0gMCk7Ci0JCS8qIGFsc28sIGFueSBpdGVt cyBpbiAndW51c2VkJyBtdXN0J3ZlIGJlZW4gTFBfREVBRCBwcmV2aW91c2x5ICovCisJCS8q CisJCSAqIFdpdGhvdXQgYSBjbGVhbnVwIGxvY2sgd2UgY2FuIG9ubHkgcmVtb3ZlIGFscmVh ZHktZGVhZCBsaW5lCisJCSAqIHBvaW50ZXJzIGFuZCByZS1wb2ludCByZWRpcmVjdHMuICBU aGUgbGF0dGVyIGhhcHBlbnMgd2hlbiB2YWN1dW0ncworCQkgKiBzZWNvbmQgcGFzcyByZWNs YWltcyBhIGNvbGxhcHNlZCBIT1QtaW5kZXhlZCBjaGFpbiBhbmQgcmUtcG9pbnRzCisJCSAq IHRoZSByb290IHJlZGlyZWN0IGF0IGZpcnN0X2xpdmU6IHRoYXQgY2hhbmdlIGlzIG1hZGUg dW5kZXIgYW4KKwkJICogZXhjbHVzaXZlIGxvY2sgYW5kIHByZXNlcnZlcyB0aGUgY2hhaW4n cyByZWFjaGFiaWxpdHkgKGV2ZXJ5IHdhbGtlcgorCQkgKiBzdGlsbCByZWFjaGVzIGZpcnN0 X2xpdmUpLCBzbyBubyBjbGVhbnVwIGxvY2sgaXMgbmVlZGVkIC0tIHRoZSBzYW1lCisJCSAq IGJhc2lzIG9uIHdoaWNoIHRoaXMgcGFzcyBhbHJlYWR5IHJlY2xhaW1zIGRlYWQgbGluZSBw b2ludGVycyB0bworCQkgKiBMUF9VTlVTRUQuCisJCSAqLworCQlBc3NlcnQobmRlYWQgPT0g MCk7CiAJfQogCVhMb2dSZWdpc3RlckRhdGEoJnhscmVjLCBTaXplT2ZIZWFwUHJ1bmUpOwog CWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZChjb25mbGljdF94aWQpKQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDM5Mzk1YWVkMGQ1Li43NDJiOTlmYmQ2ZCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMTMxLDYgKzEzMSw3 IEBACiAKICNpbmNsdWRlICJhY2Nlc3MvZ2VuYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvaGVh cGFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL2hvdF9pbmRleGVkLmgiCiAjaW5jbHVkZSAiYWNj ZXNzL2h0dXBfZGV0YWlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKICNp bmNsdWRlICJhY2Nlc3MvdGlkc3RvcmUuaCIKQEAgLTQ0NSw3ICs0NDYsOCBAQCBzdGF0aWMg Ym9vbCBsYXp5X3ZhY3V1bV9hbGxfaW5kZXhlcyhMVlJlbFN0YXRlICp2YWNyZWwpOwogc3Rh dGljIHZvaWQgbGF6eV92YWN1dW1faGVhcF9yZWwoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0 YXRpYyB2b2lkIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRlICp2YWNyZWwsIEJs b2NrTnVtYmVyIGJsa25vLAogCQkJCQkJCQkgIEJ1ZmZlciBidWZmZXIsIE9mZnNldE51bWJl ciAqZGVhZG9mZnNldHMsCi0JCQkJCQkJCSAgaW50IG51bV9vZmZzZXRzLCBCdWZmZXIgdm1i dWZmZXIpOworCQkJCQkJCQkgIGludCBudW1fb2Zmc2V0cywgQnVmZmVyIHZtYnVmZmVyLAor CQkJCQkJCQkgIGJvb2wgZ290X2NsZWFudXBfbG9jayk7CiBzdGF0aWMgYm9vbCBsYXp5X2No ZWNrX3dyYXBhcm91bmRfZmFpbHNhZmUoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRpYyB2 b2lkIGxhenlfY2xlYW51cF9hbGxfaW5kZXhlcyhMVlJlbFN0YXRlICp2YWNyZWwpOwogc3Rh dGljIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqbGF6eV92YWN1dW1fb25lX2luZGV4KFJlbGF0 aW9uIGluZHJlbCwKQEAgLTE5NzIsNiArMTk3NCw3IEBAIGxhenlfc2Nhbl9uZXdfb3JfZW1w dHkoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLCBCbG9ja051bWJlciBibGtubywK IAkJCQkJCQkJCQkgIE5VTEwsIDAsCiAJCQkJCQkJCQkJICBOVUxMLCAwLAogCQkJCQkJCQkJ CSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIE5VTEwsIDAsCiAJCQkJCQkJCQkJICBOVUxMLCAw KTsKIAogCQkJRU5EX0NSSVRfU0VDVElPTigpOwpAQCAtMjIxNCw2ICsyMjE3LDcgQEAgbGF6 eV9zY2FuX25vcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCiAJCWhhc3R1cCA9IHRydWU7 CQkJLyogcGFnZSBwcmV2ZW50cyByZWwgdHJ1bmNhdGlvbiAqLwogCQl0dXBsZWhlYWRlciA9 IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKHBhZ2UsIGl0ZW1pZCk7CisKIAkJaWYg KGhlYXBfdHVwbGVfc2hvdWxkX2ZyZWV6ZSh0dXBsZWhlYWRlciwgJnZhY3JlbC0+Y3V0b2Zm cywKIAkJCQkJCQkJCSAmTm9GcmVlemVQYWdlUmVsZnJvemVuWGlkLAogCQkJCQkJCQkJICZO b0ZyZWV6ZVBhZ2VSZWxtaW5NeGlkKSkKQEAgLTI2ODYsNiArMjY5MCw3IEBAIGxhenlfdmFj dXVtX2hlYXBfcmVsKExWUmVsU3RhdGUgKnZhY3JlbCkKIAkJU2l6ZQkJZnJlZXNwYWNlOwog CQlPZmZzZXROdW1iZXIgb2Zmc2V0c1tNYXhPZmZzZXROdW1iZXJdOwogCQlpbnQJCQludW1f b2Zmc2V0czsKKwkJYm9vbAkJZ290X2NsZWFudXBfbG9jazsKIAogCQl2YWN1dW1fZGVsYXlf cG9pbnQoZmFsc2UpOwogCkBAIC0yNzA4LDEwICsyNzEzLDIwIEBAIGxhenlfdmFjdXVtX2hl YXBfcmVsKExWUmVsU3RhdGUgKnZhY3JlbCkKIAkJICovCiAJCXZpc2liaWxpdHltYXBfcGlu KHZhY3JlbC0+cmVsLCBibGtubywgJnZtYnVmZmVyKTsKIAotCQkvKiBXZSBuZWVkIGEgbm9u LWNsZWFudXAgZXhjbHVzaXZlIGxvY2sgdG8gbWFyayBkZWFkX2l0ZW1zIHVudXNlZCAqLwot CQlMb2NrQnVmZmVyKGJ1ZiwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsKKwkJLyoKKwkJICog U2V0dGluZyBkZWFkIGl0ZW1zIHVudXNlZCBuZWVkcyBvbmx5IGFuIGV4Y2x1c2l2ZSBsb2Nr LCBidXQKKwkJICogcmVjbGFpbWluZyBhIGNvbGxhcHNlZCBIT1QtaW5kZXhlZCBjaGFpbiBh ZGRpdGlvbmFsbHkgcmUtcG9pbnRzIHRoZQorCQkgKiByZWRpcmVjdHMgdGhhdCBmb3J3YXJk IGludG8gaXQgLS0gbW92aW5nIGNoYWluIHN0cnVjdHVyZSBjb25jdXJyZW50CisJCSAqIHNj YW5zIGZvbGxvdywgd2hpY2ggcmVxdWlyZXMgYSBjbGVhbnVwIGxvY2suICBQcmVmZXIgYSBj bGVhbnVwIGxvY2sKKwkJICogKGFzIHRoZSBmaXJzdCBwYXNzIGRvZXMpOyBpZiB1bmF2YWls YWJsZSwgZmFsbCBiYWNrIHRvIGFuIGV4Y2x1c2l2ZQorCQkgKiBsb2NrIGFuZCBsYXp5X3Zh Y3V1bV9oZWFwX3BhZ2UgZGVmZXJzIGFueSBzdWNoIHJlY2xhaW0gb24gdGhpcyBwYWdlCisJ CSAqIHRvIGEgbGF0ZXIgdmFjdXVtIHRoYXQgY2FuIG9idGFpbiBvbmUuCisJCSAqLworCQln b3RfY2xlYW51cF9sb2NrID0gQ29uZGl0aW9uYWxMb2NrQnVmZmVyRm9yQ2xlYW51cChidWYp OworCQlpZiAoIWdvdF9jbGVhbnVwX2xvY2spCisJCQlMb2NrQnVmZmVyKGJ1ZiwgQlVGRkVS X0xPQ0tfRVhDTFVTSVZFKTsKIAkJbGF6eV92YWN1dW1faGVhcF9wYWdlKHZhY3JlbCwgYmxr bm8sIGJ1Ziwgb2Zmc2V0cywKLQkJCQkJCQkgIG51bV9vZmZzZXRzLCB2bWJ1ZmZlcik7CisJ CQkJCQkJICBudW1fb2Zmc2V0cywgdm1idWZmZXIsIGdvdF9jbGVhbnVwX2xvY2spOwogCiAJ CS8qIE5vdyB0aGF0IHdlJ3ZlIHZhY3V1bWVkIHRoZSBwYWdlLCByZWNvcmQgaXRzIGF2YWls YWJsZSBzcGFjZSAqLwogCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOwpAQCAtMjc0Niw2 ICsyNzYxLDcgQEAgbGF6eV92YWN1dW1faGVhcF9yZWwoTFZSZWxTdGF0ZSAqdmFjcmVsKQog CXJlc3RvcmVfdmFjdXVtX2Vycm9yX2luZm8odmFjcmVsLCAmc2F2ZWRfZXJyX2luZm8pOwog fQogCisKIC8qCiAgKglsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoKSAtLSBmcmVlIHBhZ2UncyBM UF9ERUFEIGl0ZW1zIGxpc3RlZCBpbiB0aGUKICAqCQkJCQkJICB2YWNyZWwtPmRlYWRfaXRl bXMgc3RvcmUuCkBAIC0yNzU3LDcgKzI3NzMsNyBAQCBsYXp5X3ZhY3V1bV9oZWFwX3JlbChM VlJlbFN0YXRlICp2YWNyZWwpCiBzdGF0aWMgdm9pZAogbGF6eV92YWN1dW1faGVhcF9wYWdl KExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIs CiAJCQkJCSAgT2Zmc2V0TnVtYmVyICpkZWFkb2Zmc2V0cywgaW50IG51bV9vZmZzZXRzLAot CQkJCQkgIEJ1ZmZlciB2bWJ1ZmZlcikKKwkJCQkJICBCdWZmZXIgdm1idWZmZXIsIGJvb2wg Z290X2NsZWFudXBfbG9jaykKIHsKIAlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZm ZXIpOwogCU9mZnNldE51bWJlciB1bnVzZWRbTWF4SGVhcFR1cGxlc1BlclBhZ2VdOwpAQCAt Mjc4Myw3ICsyNzk5LDkgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3RhdGUgKnZh Y3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJICogYW5kIG1hcmsg dGhlIHBhZ2UgYWxsLXZpc2libGUgd2l0aGluIHRoZSBzYW1lIGNyaXRpY2FsIHNlY3Rpb24s CiAJICogZW5hYmxpbmcgYm90aCBjaGFuZ2VzIHRvIGJlIGVtaXR0ZWQgaW4gYSBzaW5nbGUg V0FMIHJlY29yZC4gU2luY2UgdGhlCiAJICogdmlzaWJpbGl0eSBjaGVja3MgbWF5IHBlcmZv cm0gSS9PIGFuZCBhbGxvY2F0ZSBtZW1vcnksIHRoZXkgbXVzdCBiZQotCSAqIGRvbmUgb3V0 c2lkZSB0aGUgY3JpdGljYWwgc2VjdGlvbi4KKwkgKiBkb25lIG91dHNpZGUgdGhlIGNyaXRp Y2FsIHNlY3Rpb24uICBBIGRlZmVycmVkIHJlY2xhaW0gbGVhdmVzIGEKKwkgKiBub3QteWV0 LXJlbW92ZWQgbWVtYmVyIG9uIHRoZSBwYWdlLCBzbyBza2lwIHRoZSBjaGVjayB3aGVuIGFu eXRoaW5nIHdhcworCSAqIGRlZmVycmVkLgogCSAqLwogCWlmIChoZWFwX3BhZ2Vfd291bGRf YmVfYWxsX3Zpc2libGUodmFjcmVsLT5yZWwsIGJ1ZmZlciwKIAkJCQkJCQkJCSAgIHZhY3Jl bC0+dmlzdGVzdCwgdHJ1ZSwKQEAgLTI4MTUsMTMgKzI4MzMsMTIgQEAgbGF6eV92YWN1dW1f aGVhcF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZl ciBidWZmZXIsCiAKIAkJaXRlbWlkID0gUGFnZUdldEl0ZW1JZChwYWdlLCB0b2ZmKTsKIAor CQkvKiBBIHJlY2xhaW1hYmxlIGl0ZW0gaXMgYSBjbGFzc2ljIExQX0RFQUQgbGluZSBwb2lu dGVyLiAqLwogCQlBc3NlcnQoSXRlbUlkSXNEZWFkKGl0ZW1pZCkgJiYgIUl0ZW1JZEhhc1N0 b3JhZ2UoaXRlbWlkKSk7CiAJCUl0ZW1JZFNldFVudXNlZChpdGVtaWQpOwogCQl1bnVzZWRb bnVudXNlZCsrXSA9IHRvZmY7CiAJfQogCi0JQXNzZXJ0KG51bnVzZWQgPiAwKTsKLQogCS8q IEF0dGVtcHQgdG8gdHJ1bmNhdGUgbGluZSBwb2ludGVyIGFycmF5IG5vdyAqLwogCVBhZ2VU cnVuY2F0ZUxpbmVQb2ludGVyQXJyYXkocGFnZSk7CiAKQEAgLTI4NTEsMTIgKzI4NjgsMTMg QEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1i ZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCSAgdm1mbGFncyAhPSAwID8gdm1i dWZmZXIgOiBJbnZhbGlkQnVmZmVyLAogCQkJCQkJCQkgIHZtZmxhZ3MsCiAJCQkJCQkJCSAg Y29uZmxpY3RfeGlkLAotCQkJCQkJCQkgIGZhbHNlLAkvKiBubyBjbGVhbnVwIGxvY2sgcmVx dWlyZWQgKi8KKwkJCQkJCQkJICBnb3RfY2xlYW51cF9sb2NrLAogCQkJCQkJCQkgIFBSVU5F X1ZBQ1VVTV9DTEVBTlVQLAogCQkJCQkJCQkgIE5VTEwsIDAsCS8qIGZyb3plbiAqLwogCQkJ CQkJCQkgIE5VTEwsIDAsCS8qIHJlZGlyZWN0ZWQgKi8KIAkJCQkJCQkJICBOVUxMLCAwLAkv KiBkZWFkICovCi0JCQkJCQkJCSAgdW51c2VkLCBudW51c2VkKTsKKwkJCQkJCQkJICB1bnVz ZWQsIG51bnVzZWQsCisJCQkJCQkJCSAgTlVMTCwgMCk7IC8qIHN0dWJzICovCiAJfQogCiAJ RU5EX0NSSVRfU0VDVElPTigpOwpAQCAtMzY0NywxMCArMzY2NSw0NCBAQCBoZWFwX3BhZ2Vf d291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQkqbG9n Z2luZ19vZmZudW0gPSBvZmZudW07CiAJCWl0ZW1pZCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwg b2ZmbnVtKTsKIAotCQkvKiBVbnVzZWQgb3IgcmVkaXJlY3QgbGluZSBwb2ludGVycyBhcmUg b2Ygbm8gaW50ZXJlc3QgKi8KLQkJaWYgKCFJdGVtSWRJc1VzZWQoaXRlbWlkKSB8fCBJdGVt SWRJc1JlZGlyZWN0ZWQoaXRlbWlkKSkKKwkJLyogVW51c2VkIGxpbmUgcG9pbnRlcnMgYXJl IG9mIG5vIGludGVyZXN0LiAqLworCQlpZiAoIUl0ZW1JZElzVXNlZChpdGVtaWQpKQogCQkJ Y29udGludWU7CiAKKwkJLyoKKwkJICogUGxhaW4gcmVkaXJlY3RzIGFyZSBvZiBubyBpbnRl cmVzdCAodGhlIGNoYWluIG1lbWJlciB0aGV5IHBvaW50IGF0CisJCSAqIGlzIGluc3BlY3Rl ZCBzZXBhcmF0ZWx5KSAtLSBleGNlcHQgYSByZWRpcmVjdCB0aGF0IGZvcndhcmRzIHRvIGEK KwkJICogSE9ULXNlbGVjdGl2ZWx5LXVwZGF0ZWQgbGl2ZSB0dXBsZS4gIFN1Y2ggYSByZWRp cmVjdCBtYXkgc3RpbGwgYmUKKwkJICogcmVhY2hlZCBieSBhIHN0YWxlIGluZGV4IGVudHJ5 IHdob3NlIGtleSB0aGUgbGl2ZSB0dXBsZSBubyBsb25nZXIKKwkJICogaG9sZHM7IGlmIHRo ZSBwYWdlIHdlcmUgbWFya2VkIGFsbC12aXNpYmxlIGFuIGluZGV4LW9ubHkgc2NhbiB3b3Vs ZAorCQkgKiB0cnVzdCB0aGUgVk0sIHNraXAgdGhlIGhlYXAgZmV0Y2gsIGFuZCBzdXJmYWNl IHRoYXQgc3RhbGUga2V5LgorCQkgKiBLZWVwIHRoZSBwYWdlIG5vdC1hbGwtdmlzaWJsZSB1 bnRpbCB0aGUgc3RhbGUgbGVhdmVzIGFyZSBzd2VwdCBhbmQKKwkJICogdGhlIHJlZGlyZWN0 IHJlY2xhaW1lZC4gIFRoaXMgbWlycm9ycyB0aGUgZ3VhcmQgaW4KKwkJICogaGVhcF9wcnVu ZV9yZWNvcmRfcmVkaXJlY3QsIGFwcGxpZWQgaGVyZSBiZWNhdXNlIFZBQ1VVTSdzIHNlY29u ZAorCQkgKiBwYXNzIGNhbiBzZXQgYWxsLXZpc2libGUgYWZ0ZXIgcmVjbGFpbWluZyBvdGhl ciBpdGVtcyBvbiB0aGUgcGFnZS4KKwkJICovCisJCWlmIChJdGVtSWRJc1JlZGlyZWN0ZWQo aXRlbWlkKSkKKwkJeworCQkJT2Zmc2V0TnVtYmVyIHJkb2ZmID0gSXRlbUlkR2V0UmVkaXJl Y3QoaXRlbWlkKTsKKworCQkJaWYgKHJkb2ZmID49IEZpcnN0T2Zmc2V0TnVtYmVyICYmIHJk b2ZmIDw9IG1heG9mZikKKwkJCXsKKwkJCQlJdGVtSWQJCXRscCA9IFBhZ2VHZXRJdGVtSWQo cGFnZSwgcmRvZmYpOworCisJCQkJaWYgKEl0ZW1JZElzTm9ybWFsKHRscCkpCisJCQkJewor CQkJCQlIZWFwVHVwbGVIZWFkZXIgdGh0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0 SXRlbShwYWdlLCB0bHApOworCisJCQkJCWlmICgodGh0dXAtPnRfaW5mb21hc2syICYgSEVB UF9JTkRFWEVEX1VQREFURUQpICE9IDApCisJCQkJCXsKKwkJCQkJCSphbGxfZnJvemVuID0g YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJfQorCQkJ fQorCQkJY29udGludWU7CisJCX0KKwogCQlJdGVtUG9pbnRlclNldCgmKHR1cGxlLnRfc2Vs ZiksIGJsb2Nrbm8sIG9mZm51bSk7CiAKIAkJLyoKQEAgLTM2NzYsNiArMzcyOCwyNCBAQCBo ZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVm LAogCQl0dXBsZS50X2xlbiA9IEl0ZW1JZEdldExlbmd0aChpdGVtaWQpOwogCQl0dXBsZS50 X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChyZWwpOwogCisJCS8qCisJCSAqIEEgSE9U LWluZGV4ZWQgY29sbGFwc2Utc3Vydml2b3Igc3R1YiBpcyBhbiBMUF9OT1JNQUwgaXRlbSB0 aGF0IGlzCisJCSAqIG5vdCBhIHJlYWwgdHVwbGU6IGl0IGZvcndhcmRzIHRocm91Z2ggdGhl IGNoYWluIGFuZCBjYXJyaWVzIGEKKwkJICogcHJlc2VydmVkIG1vZGlmaWVkLWF0dHJzIGJp dG1hcCB0aGF0IGEgcmVhZGVyIGFycml2aW5nIHZpYSBhIHN0YWxlCisJCSAqIGxlYWYgbXVz dCBzdGlsbCBjcm9zcy4gIEEgcGFnZSBob2xkaW5nIG9uZSBtdXN0IHN0YXkgbm90LWFsbC12 aXNpYmxlCisJCSAqIHNvIGluZGV4LW9ubHkgc2NhbnMgaGVhcC1mZXRjaCB0aHJvdWdoIHRo ZSBjaGFpbiwgZXhhY3RseSBsaWtlIHRoZQorCQkgKiByZWRpcmVjdC10by1TSVUgY2FzZSBh Ym92ZS4gIEEgc3R1YidzIGhlYWRlciBpcyBmcm96ZW4taW52YWxpZAorCQkgKiAoSEVBUF9Y TUlOX0lOVkFMSUQpLCBzbyB0aGUgdmlzaWJpbGl0eSBjaGVjayBiZWxvdyB3b3VsZCBhbHNv IGNsYXNzCisJCSAqIGl0IG5vdC1hbGwtdmlzaWJsZSAtLSBidXQgcmVjb2duaXplIGl0IGV4 cGxpY2l0bHkgaGVyZSByYXRoZXIgdGhhbgorCQkgKiByZWx5aW5nIG9uIHRoYXQgc2lkZSBl ZmZlY3QsIHNvIHRoZSBndWFyZCBjYW5ub3Qgc2lsZW50bHkgbGFwc2UgaWYKKwkJICogdGhl IHN0dWIgZW5jb2RpbmcgZXZlciBjaGFuZ2VzLgorCQkgKi8KKwkJaWYgKEhvdEluZGV4ZWRI ZWFkZXJJc1N0dWIodHVwbGUudF9kYXRhKSkKKwkJeworCQkJKmFsbF9mcm96ZW4gPSBhbGxf dmlzaWJsZSA9IGZhbHNlOworCQkJYnJlYWs7CisJCX0KKwogCQkvKiBWaXNpYmlsaXR5IGNo ZWNrcyBtYXkgZG8gSU8gb3IgYWxsb2NhdGUgbWVtb3J5ICovCiAJCUFzc2VydChDcml0U2Vj dGlvbkNvdW50ID09IDApOwogCQlzd2l0Y2ggKEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bUhv cml6b24oJnR1cGxlLCBidWYsICZkZWFkX2FmdGVyKSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Jt Z3JkZXNjL2hlYXBkZXNjLmMKaW5kZXggNzVhZTZmOWQzNzUuLjk3ZjkyNWRmMTYxIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYwpAQCAtMTA4LDcgKzEwOCw4 IEBAIGhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXplKGNoYXIgKmN1cnNv ciwgdWludDE2IGZsYWdzLAogCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICoqZnJ6X29mZnNl dHMsCiAJCQkJCQkJCQkgICBpbnQgKm5yZWRpcmVjdGVkLCBPZmZzZXROdW1iZXIgKipyZWRp cmVjdGVkLAogCQkJCQkJCQkJICAgaW50ICpuZGVhZCwgT2Zmc2V0TnVtYmVyICoqbm93ZGVh ZCwKLQkJCQkJCQkJCSAgIGludCAqbnVudXNlZCwgT2Zmc2V0TnVtYmVyICoqbm93dW51c2Vk KQorCQkJCQkJCQkJICAgaW50ICpudW51c2VkLCBPZmZzZXROdW1iZXIgKipub3d1bnVzZWQs CisJCQkJCQkJCQkgICBpbnQgKm5zdHVicywgT2Zmc2V0TnVtYmVyICoqc3R1YnMpCiB7CiAJ aWYgKGZsYWdzICYgWExIUF9IQVNfRlJFRVpFX1BMQU5TKQogCXsKQEAgLTE3OCw2ICsxNzks MjMgQEAgaGVhcF94bG9nX2Rlc2VyaWFsaXplX3BydW5lX2FuZF9mcmVlemUoY2hhciAqY3Vy c29yLCB1aW50MTYgZmxhZ3MsCiAJCSpub3d1bnVzZWQgPSBOVUxMOwogCX0KIAorCWlmIChm bGFncyAmIFhMSFBfSEFTX0hPVF9JTkRFWEVEX1NUVUJTKQorCXsKKwkJeGxocF9wcnVuZV9p dGVtcyAqc3VicmVjb3JkID0gKHhsaHBfcHJ1bmVfaXRlbXMgKikgY3Vyc29yOworCisJCSpu c3R1YnMgPSBzdWJyZWNvcmQtPm50YXJnZXRzOworCQlBc3NlcnQoKm5zdHVicyA+IDApOwor CQkqc3R1YnMgPSAmc3VicmVjb3JkLT5kYXRhWzBdOworCisJCWN1cnNvciArPSBvZmZzZXRv Zih4bGhwX3BydW5lX2l0ZW1zLCBkYXRhKTsKKwkJY3Vyc29yICs9IHNpemVvZihPZmZzZXRO dW1iZXJbMl0pICogKm5zdHViczsKKwl9CisJZWxzZQorCXsKKwkJKm5zdHVicyA9IDA7CisJ CSpzdHVicyA9IE5VTEw7CisJfQorCiAJKmZyel9vZmZzZXRzID0gKE9mZnNldE51bWJlciAq KSBjdXJzb3I7CiB9CiAKQEAgLTMwNSw2ICszMjMsOCBAQCBoZWFwMl9kZXNjKFN0cmluZ0lu Zm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJCWludAkJCW5yZWRpcmVjdGVk OwogCQkJaW50CQkJbnVudXNlZDsKIAkJCWludAkJCW5kZWFkOworCQkJaW50CQkJbnN0dWJz OworCQkJT2Zmc2V0TnVtYmVyICpzdHViczsKIAkJCWludAkJCW5wbGFuczsKIAkJCXhsaHBf ZnJlZXplX3BsYW4gKnBsYW5zOwogCQkJT2Zmc2V0TnVtYmVyICpmcnpfb2Zmc2V0czsKQEAg LTMxNSwxMCArMzM1LDExIEBAIGhlYXAyX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFk ZXJTdGF0ZSAqcmVjb3JkKQogCQkJCQkJCQkJCQkJICAgJm5wbGFucywgJnBsYW5zLCAmZnJ6 X29mZnNldHMsCiAJCQkJCQkJCQkJCQkgICAmbnJlZGlyZWN0ZWQsICZyZWRpcmVjdGVkLAog CQkJCQkJCQkJCQkJICAgJm5kZWFkLCAmbm93ZGVhZCwKLQkJCQkJCQkJCQkJCSAgICZudW51 c2VkLCAmbm93dW51c2VkKTsKKwkJCQkJCQkJCQkJCSAgICZudW51c2VkLCAmbm93dW51c2Vk LAorCQkJCQkJCQkJCQkJICAgJm5zdHVicywgJnN0dWJzKTsKIAotCQkJYXBwZW5kU3RyaW5n SW5mbyhidWYsICIsIG5wbGFuczogJXUsIG5yZWRpcmVjdGVkOiAldSwgbmRlYWQ6ICV1LCBu dW51c2VkOiAldSIsCi0JCQkJCQkJIG5wbGFucywgbnJlZGlyZWN0ZWQsIG5kZWFkLCBudW51 c2VkKTsKKwkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiLCBucGxhbnM6ICV1LCBucmVkaXJl Y3RlZDogJXUsIG5kZWFkOiAldSwgbnVudXNlZDogJXUsIG5zdHViczogJXUiLAorCQkJCQkJ CSBucGxhbnMsIG5yZWRpcmVjdGVkLCBuZGVhZCwgbnVudXNlZCwgbnN0dWJzKTsKIAogCQkJ aWYgKG5wbGFucyA+IDApCiAJCQl7CkBAIC0zNDcsNiArMzY4LDEzIEBAIGhlYXAyX2Rlc2Mo U3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJCWFycmF5X2Rl c2MoYnVmLCBub3d1bnVzZWQsIHNpemVvZihPZmZzZXROdW1iZXIpLCBudW51c2VkLAogCQkJ CQkJICAgJm9mZnNldF9lbGVtX2Rlc2MsIE5VTEwpOwogCQkJfQorCisJCQlpZiAobnN0dWJz ID4gMCkKKwkJCXsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiwgc3R1YnM6 Iik7CisJCQkJYXJyYXlfZGVzYyhidWYsIHN0dWJzLCBzaXplb2YoT2Zmc2V0TnVtYmVyKSAq IDIsCisJCQkJCQkgICBuc3R1YnMsICZyZWRpcmVjdF9lbGVtX2Rlc2MsIE5VTEwpOworCQkJ fQogCQl9CiAJfQogCWVsc2UgaWYgKGluZm8gPT0gWExPR19IRUFQMl9NVUxUSV9JTlNFUlQp CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggMWNkZjg5MTA1NWMuLjcyYzllNDIwM2M1IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUv YWNjZXNzL2hlYXBhbS5oCkBAIC00ODgsNyArNDg4LDggQEAgZXh0ZXJuIHZvaWQgaGVhcF9w YWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIGV4dGVy biB2b2lkIGhlYXBfcGFnZV9wcnVuZV9leGVjdXRlKEJ1ZmZlciBidWZmZXIsIGJvb2wgbHBf dHJ1bmNhdGVfb25seSwKIAkJCQkJCQkJCU9mZnNldE51bWJlciAqcmVkaXJlY3RlZCwgaW50 IG5yZWRpcmVjdGVkLAogCQkJCQkJCQkJT2Zmc2V0TnVtYmVyICpub3dkZWFkLCBpbnQgbmRl YWQsCi0JCQkJCQkJCQlPZmZzZXROdW1iZXIgKm5vd3VudXNlZCwgaW50IG51bnVzZWQpOwor CQkJCQkJCQkJT2Zmc2V0TnVtYmVyICpub3d1bnVzZWQsIGludCBudW51c2VkLAorCQkJCQkJ CQkJT2Zmc2V0TnVtYmVyICpzdHVicywgaW50IG5zdHVicyk7CiBleHRlcm4gdm9pZCBoZWFw X2dldF9yb290X3R1cGxlcyhQYWdlIHBhZ2UsIE9mZnNldE51bWJlciAqcm9vdF9vZmZzZXRz KTsKIGV4dGVybiB2b2lkIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVs YXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCQkgIEJ1ZmZlciB2bWJ1ZmZlciwgdWlu dDggdm1mbGFncywKQEAgLTQ5OCw3ICs0OTksOCBAQCBleHRlcm4gdm9pZCBsb2dfaGVhcF9w cnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJ CQkJCQkJICBIZWFwVHVwbGVGcmVlemUgKmZyb3plbiwgaW50IG5mcm96ZW4sCiAJCQkJCQkJ CQkgIE9mZnNldE51bWJlciAqcmVkaXJlY3RlZCwgaW50IG5yZWRpcmVjdGVkLAogCQkJCQkJ CQkJICBPZmZzZXROdW1iZXIgKmRlYWQsIGludCBuZGVhZCwKLQkJCQkJCQkJCSAgT2Zmc2V0 TnVtYmVyICp1bnVzZWQsIGludCBudW51c2VkKTsKKwkJCQkJCQkJCSAgT2Zmc2V0TnVtYmVy ICp1bnVzZWQsIGludCBudW51c2VkLAorCQkJCQkJCQkJICBPZmZzZXROdW1iZXIgKnN0dWJz LCBpbnQgbnN0dWJzKTsKIAogLyogaW4gaGVhcC9oZWFwYW0uYyAqLwogCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW1feGxvZy5oCmluZGV4IGZkY2E3ZDgyMWM4Li44OTk3YTUwNTAwNiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKQEAgLTI3Myw2ICsyNzMsMTAgQEAgdHlwZWRlZiBz dHJ1Y3QgeGxfaGVhcF91cGRhdGUKICAqCQl1aW50MTYJCQkJbnVudXNlZAogICoJCU9mZnNl dE51bWJlcgkJbm93dW51c2VkW251bnVzZWRdCiAgKgorICoJeGxocF9wcnVuZV9pdGVtcwor ICoJCXVpbnQxNgkJCQluc3R1YnMKKyAqCQlPZmZzZXROdW1iZXIJCXN0dWJzWzIgKiBuc3R1 YnNdCisgKgogICoJT2Zmc2V0TnVtYmVyCQkJZnJ6X29mZnNldHNbc3VtKFtwbGFuLm50dXBs ZXMgZm9yIHBsYW4gaW4gcGxhbnNdKV0KICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAq CkBAIC0zNDEsNiArMzQ1LDE4IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfcHJ1bmUKICNk ZWZpbmUJCVhMSFBfVk1fQUxMX1ZJU0lCTEUJCQkoMSA8PCA4KQogI2RlZmluZQkJWExIUF9W TV9BTExfRlJPWkVOCQkJKDEgPDwgOSkKIAorLyoKKyAqIEluZGljYXRlcyB0aGF0IGFuIHhs aHBfcHJ1bmVfaXRlbXMgc3ViLXJlY29yZCB3aXRoIEhPVC1zZWxlY3RpdmVseS11cGRhdGVk CisgKiBjb2xsYXBzZS1zdXJ2aXZvciBzdHVicyBpcyBwcmVzZW50LiAgRWFjaCBwYWlyIChv ZmZzZXQsIGZvcndhcmQpIG5hbWVzIGEKKyAqIGxpbmUgcG9pbnRlciB0byBiZSByZXdyaXR0 ZW4gaW4gcGxhY2UgaW50byBhbiB4aWQtZnJlZSBmb3J3YXJkaW5nIHN0dWIKKyAqIChIRUFQ X1hNSU5fSU5WQUxJRHxIRUFQX1hNQVhfSU5WQUxJRCwgSEVBUF9PTkxZX1RVUExFfEhFQVBf SU5ERVhFRF9VUERBVEVELAorICogbmF0dHM9PTApIHdob3NlIHRfY3RpZC5vZmZudW0gaXMg c2V0IHRvIHRoZSBmb3J3YXJkIG9mZnNldC4gIFRoZSBzdHViJ3MKKyAqIG1vZGlmaWVkLWF0 dHJzIGJpdG1hcCBpcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIGl0ZW0gb24gdGhlIHBhZ2Ug KGl0IGlzIHRoZQorICogcHJlLXBydW5lIHR1cGxlJ3MgaW5saW5lIGJpdG1hcCwgbGVmdCB1 bmRpc3R1cmJlZCksIHNvIGl0IGlzIG5vdCBjYXJyaWVkIGluCisgKiB0aGUgV0FMLgorICov CisjZGVmaW5lCQlYTEhQX0hBU19IT1RfSU5ERVhFRF9TVFVCUwkoMSA8PCAxMCkKKwogLyoK ICAqIHhsaHBfZnJlZXplX3BsYW4gZGVzY3JpYmVzIGhvdyB0byBmcmVlemUgYSBncm91cCBv ZiBvbmUgb3IgbW9yZSBoZWFwIHR1cGxlcwogICogKGFwcGVhcnMgaW4geGxfaGVhcF9wcnVu ZSdzIHhsaHBfZnJlZXplX3BsYW5zIHN1Yi1yZWNvcmQpCkBAIC00OTQsNiArNTEwLDcgQEAg ZXh0ZXJuIHZvaWQgaGVhcF94bG9nX2Rlc2VyaWFsaXplX3BydW5lX2FuZF9mcmVlemUoY2hh ciAqY3Vyc29yLCB1aW50MTYgZmxhZ3MsCiAJCQkJCQkJCQkJCQkgICBPZmZzZXROdW1iZXIg Kipmcnpfb2Zmc2V0cywKIAkJCQkJCQkJCQkJCSAgIGludCAqbnJlZGlyZWN0ZWQsIE9mZnNl dE51bWJlciAqKnJlZGlyZWN0ZWQsCiAJCQkJCQkJCQkJCQkgICBpbnQgKm5kZWFkLCBPZmZz ZXROdW1iZXIgKipub3dkZWFkLAotCQkJCQkJCQkJCQkJICAgaW50ICpudW51c2VkLCBPZmZz ZXROdW1iZXIgKipub3d1bnVzZWQpOworCQkJCQkJCQkJCQkJICAgaW50ICpudW51c2VkLCBP ZmZzZXROdW1iZXIgKipub3d1bnVzZWQsCisJCQkJCQkJCQkJCQkgICBpbnQgKm5zdHVicywg T2Zmc2V0TnVtYmVyICoqc3R1YnMpOwogCiAjZW5kaWYJCQkJCQkJLyogSEVBUEFNX1hMT0df SCAqLwotLSAKMi41MC4xCgo= --732d2653398ad274b1166a00220a1f2b85c8ed8b Content-Disposition: attachment; filename*0="v49-0006-Teach-amcheck-to-recognize-HOT-indexed-chains-an.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v49-0006-Teach-amcheck-to-recognize-HOT-indexed-chains-an.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSBmYTZhYjVmMjcwZmUwNjBkMDUxMjkwYjhiY2U3NmMwMDBiNTdkZWMyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMTozMToxMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjQ5IDYv OV0gVGVhY2ggYW1jaGVjayB0byByZWNvZ25pemUgSE9ULWluZGV4ZWQgY2hhaW5zIGFuZAog Y29sbGFwc2Ugc3R1YnMKCnZlcmlmeV9oZWFwYW0gbXVzdCBub3QgZmxhZyB0aGUgSE9ULWlu ZGV4ZWQgYXJ0aWZhY3RzIGFzIGNvcnJ1cHRpb246IGEgbGl2ZQpIRUFQX0lOREVYRURfVVBE QVRFRCBoZWFwLW9ubHkgdHVwbGUgd2hvc2UgbWlkLWNoYWluIGxpbmUgcG9pbnRlciBpcyBw cmVzZXJ2ZWQKYmVjYXVzZSBhbiBpbmRleCBlbnRyeSBzdGlsbCBwb2ludHMgYXQgaXQsIGFu IHhpZC1mcmVlIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWIsCmFuZCBtb3JlIHRoYW4gb25lIExQ X1JFRElSRUNUIGZvcndhcmRpbmcgdG8gdGhlIHNhbWUgbGl2ZSB0dXBsZSBhcmUgYWxsCmxl Z2l0aW1hdGUuICBSZWNvZ25pemUgdGhlbSBhbmQgY29udGludWUgY2hlY2tpbmcgdGhlIHJl c3Qgb2YgdGhlIGNoYWluLgoKQ292ZXIgdGhpcyB3aXRoIGFuIGFtY2hlY2sgcmVncmVzc2lv biB0ZXN0LCBhbmQgYWRkIGEgcGdfdXBncmFkZSB0ZXN0IHRoYXQKY2FycmllcyBhIHJlbGF0 aW9uIHdpdGggSE9ULWluZGV4ZWQgY2hhaW5zLCBhbiBBQkEtY3ljbGVkIGluZGV4ZWQgY29s dW1uLCBhbgpvdXQtb2YtbGluZSBpbmRleGVkIGNvbHVtbiwgYW5kIFZBQ1VVTS1jb2xsYXBz ZWQgc3R1YnMgYWNyb3NzIGFuIHVwZ3JhZGUsCnZlcmlmeWluZyB0aGUgZGF0YSwgdmVyaWZ5 X2hlYXBhbSwgYnRfaW5kZXhfY2hlY2ssIGFuZCB0aGUgY2hhaW4gc2NhbnMgb24gdGhlCm5l dyBjbHVzdGVyLgoKQXV0aG9yZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgotLS0K IGNvbnRyaWIvYW1jaGVjay9leHBlY3RlZC9jaGVja19oZWFwLm91dCAgICB8ICA0MCArKysr KysrCiBjb250cmliL2FtY2hlY2svc3FsL2NoZWNrX2hlYXAuc3FsICAgICAgICAgfCAgMzcg KysrKysrKwogY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9oZWFwYW0uYyAgICAgICAgICAgIHwg IDgxICsrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9U LUlOREVYRUQgfCAgMTAgKysKIHNyYy9iaW4vcGdfdXBncmFkZS9tZXNvbi5idWlsZCAgICAg ICAgICAgICB8ICAgMSArCiBzcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDlfaG90X2luZGV4ZWQu cGwgICAgfCAxMTggKysrKysrKysrKysrKysrKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDI3 NyBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvYmluL3BnX3VwZ3JhZGUvdC8wMDlfaG90X2luZGV4ZWQucGwKCmRpZmYgLS1naXQgYS9j b250cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfaGVhcC5vdXQgYi9jb250cmliL2FtY2hl Y2svZXhwZWN0ZWQvY2hlY2tfaGVhcC5vdXQKaW5kZXggOTc5ZTVlODRlNzIuLmI4ZGVlMmJi NzFiIDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfaGVhcC5v dXQKKysrIGIvY29udHJpYi9hbWNoZWNrL2V4cGVjdGVkL2NoZWNrX2hlYXAub3V0CkBAIC0y MzEsNiArMjMxLDQ2IEBAIFNFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgndGVzdF9mb3Jl aWduX3RhYmxlJywKIAkJCQkJCQllbmRibG9jayA6PSBOVUxMKTsKIEVSUk9SOiAgY2Fubm90 IGNoZWNrIHJlbGF0aW9uICJ0ZXN0X2ZvcmVpZ25fdGFibGUiCiBERVRBSUw6ICBUaGlzIG9w ZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBmb3JlaWduIHRhYmxlcy4KKy0tIEhPVC1p bmRleGVkIChIT1QvU0lVKSBvbi1wYWdlIGFydGlmYWN0czoKKy0tCistLSBBIEhPVC1pbmRl eGVkIFVQREFURSBrZWVwcyB0aGUgbmV3IHR1cGxlIG9uIHRoZSBzYW1lIHBhZ2UgYXMgYSBo ZWFwLW9ubHkKKy0tIHR1cGxlIG1hcmtlZCBIRUFQX0lOREVYRURfVVBEQVRFRCBhbmQgcGxh bnRzIGluZGV4IGVudHJpZXMgcG9pbnRpbmcgYXQgaXRzCistLSBvd24gVElELiAgUHJ1bmlu ZyBhIGNoYWluIG9mIHN1Y2ggdXBkYXRlcyBjb2xsYXBzZXMgZGVhZCBtZW1iZXJzIHRvCist LSBMUF9SRURJUkVDVCBmb3J3YXJkZXJzIGFuZCBwcmVzZXJ2ZXMgdGhlIExQIG9mIGEgbGl2 ZSBIT1QtaW5kZXhlZCBtZW1iZXIKKy0tIHdob3NlIGluZGV4IGVudHJpZXMgbWF5IG5vdCB5 ZXQgYmUgc3dlcHQuICB2ZXJpZnlfaGVhcGFtIG11c3QgdHJlYXQgYWxsIG9mCistLSB0aGVz ZSBhcyBsZWdpdGltYXRlLiAgVGhpcyBzY2VuYXJpbyBleGVyY2lzZXMgdGhlbSBhbmQgYXNz ZXJ0cyB0aGF0CistLSB2ZXJpZnlfaGVhcGFtIHJlcG9ydHMgemVybyBjb3JydXB0aW9uIGFn YWluc3QgbGVnaXRpbWF0ZSBIT1QtaW5kZXhlZAorLS0gYWN0aXZpdHkuCitDUkVBVEUgVEFC TEUgaG90X2luZGV4ZWRfY2hlY2sgKGlkIGludCBQUklNQVJZIEtFWSwgYzEgaW50LCBjMiBp bnQsIGMzIGludCkKKwlXSVRIIChmaWxsZmFjdG9yID0gNzApOworQ1JFQVRFIElOREVYIGhv dF9pbmRleGVkX2NoZWNrX2MxIE9OIGhvdF9pbmRleGVkX2NoZWNrIChjMSk7CitDUkVBVEUg SU5ERVggaG90X2luZGV4ZWRfY2hlY2tfYzIgT04gaG90X2luZGV4ZWRfY2hlY2sgKGMyKTsK K0lOU0VSVCBJTlRPIGhvdF9pbmRleGVkX2NoZWNrCisJU0VMRUNUIGcsIGcsIGcsIGcgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBnOworLS0gU2luZ2xlLXN0ZXAgVVBEQVRFczog ZWFjaCByb3cgZ2V0cyBvbmUgSE9ULWluZGV4ZWQgdXBkYXRlLiAgRWFjaAorLS0gc3VjY2Vz c2Z1bCBIT1QtaW5kZXhlZCB1cGRhdGUga2VlcHMgaXRzIG5ldyB0dXBsZSBvbi1wYWdlIGFu ZCBpbnNlcnRzIGFuCistLSBlbnRyeSBvbmx5IGludG8gdGhlIGluZGV4IHdob3NlIGF0dHJp YnV0ZSBjaGFuZ2VkLgorVVBEQVRFIGhvdF9pbmRleGVkX2NoZWNrIFNFVCBjMSA9IGMxICsg MTAwMDsKKy0tIE11bHRpLXN0ZXAgVVBEQVRFczogZHJpdmUgc2V2ZXJhbCBzdWNjZXNzaXZl IEhPVC1pbmRleGVkIHVwZGF0ZXMgYWdhaW5zdAorLS0gdGhlIHNhbWUgcm93cyBzbyBwcnVu ZSBzZWVzIGEgY2hhaW4gb2YgZGVhZCBpbnRlcm1lZGlhdGVzIGFuZCBjb2xsYXBzZXMKKy0t IHRoZW0gdG8gTFBfUkVESVJFQ1QgZm9yd2FyZGVycy4gIEFuIGV4cGxpY2l0IFZBQ1VVTSBy dW5zIHRoZSBwcnVuZSBwYXRoCistLSBhbmQgZXhlcmNpc2VzIGNoYWluIGNvbGxhcHNlLgor VVBEQVRFIGhvdF9pbmRleGVkX2NoZWNrIFNFVCBjMiA9IGMyICsgMSBXSEVSRSBpZCA8PSA1 MDsKK1VQREFURSBob3RfaW5kZXhlZF9jaGVjayBTRVQgYzIgPSBjMiArIDEgV0hFUkUgaWQg PD0gNTA7CitVUERBVEUgaG90X2luZGV4ZWRfY2hlY2sgU0VUIGMyID0gYzIgKyAxIFdIRVJF IGlkIDw9IDUwOworVkFDVVVNIChJTkRFWF9DTEVBTlVQIG9mZikgaG90X2luZGV4ZWRfY2hl Y2s7CistLSB2ZXJpZnlfaGVhcGFtIG11c3Qgbm90IHJlcG9ydCBhbnkgY29ycnVwdGlvbiBh Z2FpbnN0IGxlZ2l0aW1hdGUgSE9ULQorLS0gaW5kZXhlZCBhcnRpZmFjdHMuICBTZWxlY3Rp bmcgdGhlIGNvcnJ1cHRpbmcgbWVzc2FnZSBtYWtlcyBhbnkKKy0tIHJlZ3Jlc3Npb24gdW5t aXN0YWthYmxlIGluIHRoZSByZWdyZXNzIGRpZmYuCitTRUxFQ1QgYmxrbm8sIG9mZm51bSwg YXR0bnVtLCBtc2cKKwlGUk9NIHZlcmlmeV9oZWFwYW0oJ2hvdF9pbmRleGVkX2NoZWNrJywK KwkJCQkJICAgc3RhcnRibG9jayA6PSBOVUxMLAorCQkJCQkgICBlbmRibG9jayA6PSBOVUxM KTsKKyBibGtubyB8IG9mZm51bSB8IGF0dG51bSB8IG1zZyAKKy0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0KKygwIHJvd3MpCisKK0RST1AgVEFCTEUgaG90X2luZGV4ZWRfY2hl Y2s7CiAtLSBjbGVhbnVwCiBEUk9QIFRBQkxFIGhlYXB0ZXN0OwogRFJPUCBUQUJMRVNQQUNF IHJlZ3Jlc3NfdGVzdF9zdGF0c190YmxzcGM7CmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hl Y2svc3FsL2NoZWNrX2hlYXAuc3FsIGIvY29udHJpYi9hbWNoZWNrL3NxbC9jaGVja19oZWFw LnNxbAppbmRleCAxNzQ1YmFlNjM0ZS4uYzBiYTI2MzUxODAgMTAwNjQ0Ci0tLSBhL2NvbnRy aWIvYW1jaGVjay9zcWwvY2hlY2tfaGVhcC5zcWwKKysrIGIvY29udHJpYi9hbWNoZWNrL3Nx bC9jaGVja19oZWFwLnNxbApAQCAtMTM4LDYgKzEzOCw0MyBAQCBTRUxFQ1QgKiBGUk9NIHZl cmlmeV9oZWFwYW0oJ3Rlc3RfZm9yZWlnbl90YWJsZScsCiAJCQkJCQkJc3RhcnRibG9jayA6 PSBOVUxMLAogCQkJCQkJCWVuZGJsb2NrIDo9IE5VTEwpOwogCistLSBIT1QtaW5kZXhlZCAo SE9UL1NJVSkgb24tcGFnZSBhcnRpZmFjdHM6CistLQorLS0gQSBIT1QtaW5kZXhlZCBVUERB VEUga2VlcHMgdGhlIG5ldyB0dXBsZSBvbiB0aGUgc2FtZSBwYWdlIGFzIGEgaGVhcC1vbmx5 CistLSB0dXBsZSBtYXJrZWQgSEVBUF9JTkRFWEVEX1VQREFURUQgYW5kIHBsYW50cyBpbmRl eCBlbnRyaWVzIHBvaW50aW5nIGF0IGl0cworLS0gb3duIFRJRC4gIFBydW5pbmcgYSBjaGFp biBvZiBzdWNoIHVwZGF0ZXMgY29sbGFwc2VzIGRlYWQgbWVtYmVycyB0bworLS0gTFBfUkVE SVJFQ1QgZm9yd2FyZGVycyBhbmQgcHJlc2VydmVzIHRoZSBMUCBvZiBhIGxpdmUgSE9ULWlu ZGV4ZWQgbWVtYmVyCistLSB3aG9zZSBpbmRleCBlbnRyaWVzIG1heSBub3QgeWV0IGJlIHN3 ZXB0LiAgdmVyaWZ5X2hlYXBhbSBtdXN0IHRyZWF0IGFsbCBvZgorLS0gdGhlc2UgYXMgbGVn aXRpbWF0ZS4gIFRoaXMgc2NlbmFyaW8gZXhlcmNpc2VzIHRoZW0gYW5kIGFzc2VydHMgdGhh dAorLS0gdmVyaWZ5X2hlYXBhbSByZXBvcnRzIHplcm8gY29ycnVwdGlvbiBhZ2FpbnN0IGxl Z2l0aW1hdGUgSE9ULWluZGV4ZWQKKy0tIGFjdGl2aXR5LgorQ1JFQVRFIFRBQkxFIGhvdF9p bmRleGVkX2NoZWNrIChpZCBpbnQgUFJJTUFSWSBLRVksIGMxIGludCwgYzIgaW50LCBjMyBp bnQpCisJV0lUSCAoZmlsbGZhY3RvciA9IDcwKTsKK0NSRUFURSBJTkRFWCBob3RfaW5kZXhl ZF9jaGVja19jMSBPTiBob3RfaW5kZXhlZF9jaGVjayAoYzEpOworQ1JFQVRFIElOREVYIGhv dF9pbmRleGVkX2NoZWNrX2MyIE9OIGhvdF9pbmRleGVkX2NoZWNrIChjMik7CitJTlNFUlQg SU5UTyBob3RfaW5kZXhlZF9jaGVjaworCVNFTEVDVCBnLCBnLCBnLCBnIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDIwMCkgZzsKKy0tIFNpbmdsZS1zdGVwIFVQREFURXM6IGVhY2ggcm93 IGdldHMgb25lIEhPVC1pbmRleGVkIHVwZGF0ZS4gIEVhY2gKKy0tIHN1Y2Nlc3NmdWwgSE9U LWluZGV4ZWQgdXBkYXRlIGtlZXBzIGl0cyBuZXcgdHVwbGUgb24tcGFnZSBhbmQgaW5zZXJ0 cyBhbgorLS0gZW50cnkgb25seSBpbnRvIHRoZSBpbmRleCB3aG9zZSBhdHRyaWJ1dGUgY2hh bmdlZC4KK1VQREFURSBob3RfaW5kZXhlZF9jaGVjayBTRVQgYzEgPSBjMSArIDEwMDA7Cist LSBNdWx0aS1zdGVwIFVQREFURXM6IGRyaXZlIHNldmVyYWwgc3VjY2Vzc2l2ZSBIT1QtaW5k ZXhlZCB1cGRhdGVzIGFnYWluc3QKKy0tIHRoZSBzYW1lIHJvd3Mgc28gcHJ1bmUgc2VlcyBh IGNoYWluIG9mIGRlYWQgaW50ZXJtZWRpYXRlcyBhbmQgY29sbGFwc2VzCistLSB0aGVtIHRv IExQX1JFRElSRUNUIGZvcndhcmRlcnMuICBBbiBleHBsaWNpdCBWQUNVVU0gcnVucyB0aGUg cHJ1bmUgcGF0aAorLS0gYW5kIGV4ZXJjaXNlcyBjaGFpbiBjb2xsYXBzZS4KK1VQREFURSBo b3RfaW5kZXhlZF9jaGVjayBTRVQgYzIgPSBjMiArIDEgV0hFUkUgaWQgPD0gNTA7CitVUERB VEUgaG90X2luZGV4ZWRfY2hlY2sgU0VUIGMyID0gYzIgKyAxIFdIRVJFIGlkIDw9IDUwOwor VVBEQVRFIGhvdF9pbmRleGVkX2NoZWNrIFNFVCBjMiA9IGMyICsgMSBXSEVSRSBpZCA8PSA1 MDsKK1ZBQ1VVTSAoSU5ERVhfQ0xFQU5VUCBvZmYpIGhvdF9pbmRleGVkX2NoZWNrOworLS0g dmVyaWZ5X2hlYXBhbSBtdXN0IG5vdCByZXBvcnQgYW55IGNvcnJ1cHRpb24gYWdhaW5zdCBs ZWdpdGltYXRlIEhPVC0KKy0tIGluZGV4ZWQgYXJ0aWZhY3RzLiAgU2VsZWN0aW5nIHRoZSBj b3JydXB0aW5nIG1lc3NhZ2UgbWFrZXMgYW55CistLSByZWdyZXNzaW9uIHVubWlzdGFrYWJs ZSBpbiB0aGUgcmVncmVzcyBkaWZmLgorU0VMRUNUIGJsa25vLCBvZmZudW0sIGF0dG51bSwg bXNnCisJRlJPTSB2ZXJpZnlfaGVhcGFtKCdob3RfaW5kZXhlZF9jaGVjaycsCisJCQkJCSAg IHN0YXJ0YmxvY2sgOj0gTlVMTCwKKwkJCQkJICAgZW5kYmxvY2sgOj0gTlVMTCk7CitEUk9Q IFRBQkxFIGhvdF9pbmRleGVkX2NoZWNrOworCiAtLSBjbGVhbnVwCiBEUk9QIFRBQkxFIGhl YXB0ZXN0OwogRFJPUCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGVzdF9zdGF0c190YmxzcGM7CmRp ZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svdmVyaWZ5X2hlYXBhbS5jIGIvY29udHJpYi9h bWNoZWNrL3ZlcmlmeV9oZWFwYW0uYwppbmRleCAyMGZmNThhYTc4Mi4uNzNiMjA2MjMzODEg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfaGVhcGFtLmMKKysrIGIvY29u dHJpYi9hbWNoZWNrL3ZlcmlmeV9oZWFwYW0uYwpAQCAtMTMsOCArMTMsMTAgQEAKICNpbmNs dWRlICJhY2Nlc3MvZGV0b2FzdC5oIgogI2luY2x1ZGUgImFjY2Vzcy9nZW5hbS5oIgogI2lu Y2x1ZGUgImFjY2Vzcy9oZWFwdG9hc3QuaCIKKyNpbmNsdWRlICJhY2Nlc3MvaG90X2luZGV4 ZWQuaCIKICNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNz L3JlbGF0aW9uLmgiCisKICNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKICNpbmNsdWRlICJh Y2Nlc3MvdG9hc3RfaW50ZXJuYWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHlt YXAuaCIKQEAgLTUyMiw5ICs1MjQsMTIgQEAgdmVyaWZ5X2hlYXBhbShQR19GVU5DVElPTl9B UkdTKQogCQkJICovCiAJCQlpZiAoSXRlbUlkSXNSZWRpcmVjdGVkKGN0eC5pdGVtaWQpKQog CQkJewotCQkJCU9mZnNldE51bWJlciByZG9mZm51bSA9IEl0ZW1JZEdldFJlZGlyZWN0KGN0 eC5pdGVtaWQpOworCQkJCU9mZnNldE51bWJlciByZG9mZm51bTsKIAkJCQlJdGVtSWQJCXJk aXRlbTsKIAorCQkJCS8qIFJlc29sdmUgdGhlIHJlZGlyZWN0J3MgdGFyZ2V0IG9mZnNldC4g Ki8KKwkJCQlyZG9mZm51bSA9IEl0ZW1JZEdldFJlZGlyZWN0KGN0eC5pdGVtaWQpOworCiAJ CQkJaWYgKHJkb2ZmbnVtIDwgRmlyc3RPZmZzZXROdW1iZXIpCiAJCQkJewogCQkJCQlyZXBv cnRfY29ycnVwdGlvbigmY3R4LApAQCAtNjE1LDE4ICs2MjAsMzggQEAgdmVyaWZ5X2hlYXBh bShQR19GVU5DVElPTl9BUkdTKQogCQkJY3R4LnR1cGhkciA9IChIZWFwVHVwbGVIZWFkZXIp IFBhZ2VHZXRJdGVtKGN0eC5wYWdlLCBjdHguaXRlbWlkKTsKIAkJCWN0eC5uYXR0cyA9IEhl YXBUdXBsZUhlYWRlckdldE5hdHRzKGN0eC50dXBoZHIpOwogCi0JCQkvKiBPaywgcmVhZHkg dG8gY2hlY2sgdGhpcyBuZXh0IHR1cGxlICovCi0JCQljaGVja190dXBsZSgmY3R4LAotCQkJ CQkJJnhtaW5fY29tbWl0X3N0YXR1c19va1tjdHgub2ZmbnVtXSwKLQkJCQkJCSZ4bWluX2Nv bW1pdF9zdGF0dXNbY3R4Lm9mZm51bV0pOworCQkJLyoKKwkJCSAqIEEgSE9ULXNlbGVjdGl2 ZWx5LXVwZGF0ZWQgY29sbGFwc2Utc3Vydml2b3Igc3R1YiBpcyBhbgorCQkJICogTFBfTk9S TUFMIGl0ZW0gdGhhdCBpcyBub3QgYSByZWFsIHR1cGxlOiBIRUFQX0lOREVYRURfVVBEQVRF RAorCQkJICogd2l0aCBuYXR0cyA9PSAwLCBwZXJtYW5lbnRseSBpbnZpc2libGUgKEhFQVBf WE1JTl9JTlZBTElEKSwKKwkJCSAqIGNhcnJ5aW5nIGEgZm9yd2FyZCBsaW5rIGFuZCBhIG1v ZGlmaWVkLWF0dHJzIGJpdG1hcC4gIFRoZQorCQkJICogcGVyLXR1cGxlIGNoZWNrcyBhc3N1 bWUgYSByZWFsIHR1cGxlIGFuZCB3b3VsZCBtaXNyZXBvcnQgaXQsIHNvCisJCQkgKiBza2lw IHRoZW07IHRoZSB1cGRhdGUtY2hhaW4gcGFzcyBiZWxvdyBzdGlsbCByZWNvcmRzIGl0cwor CQkJICogZm9yd2FyZCBlZGdlIGFuZCB0cmVhdHMgaXQgbGlrZSBhIHJlZGlyZWN0IChhIGZv cndhcmRpbmcgbm9kZSkuCisJCQkgKi8KKwkJCWlmICghSG90SW5kZXhlZEhlYWRlcklzU3R1 YihjdHgudHVwaGRyKSkKKwkJCQljaGVja190dXBsZSgmY3R4LAorCQkJCQkJCSZ4bWluX2Nv bW1pdF9zdGF0dXNfb2tbY3R4Lm9mZm51bV0sCisJCQkJCQkJJnhtaW5fY29tbWl0X3N0YXR1 c1tjdHgub2ZmbnVtXSk7CiAKIAkJCS8qCiAJCQkgKiBJZiB0aGUgQ1RJRCBmaWVsZCBvZiB0 aGlzIHR1cGxlIHNlZW1zIHRvIHBvaW50IHRvIGFub3RoZXIgdHVwbGUKIAkJCSAqIG9uIHRo ZSBzYW1lIHBhZ2UsIHJlY29yZCB0aGF0IHR1cGxlIGFzIHRoZSBzdWNjZXNzb3Igb2YgdGhp cwotCQkJICogb25lLgorCQkJICogb25lLiAgQSBjb2xsYXBzZS1zdXJ2aXZvciBzdHViIHN0 b3JlcyBpdHMgZm9yd2FyZCBsaW5rIGluIHRoZQorCQkJICogdF9jdGlkIG9mZnNldCBvbmx5 ICh0aGUgYmxvY2sgaGFsZiBpcyByZXB1cnBvc2VkIHRvIGhvbGQgdGhlCisJCQkgKiBzdHVi J3Mgd3JpdGUtdGltZSBuYXR0cyksIHNvIHJlc29sdmUgaXRzIHN1Y2Nlc3NvciB2aWEgdGhl IHN0dWIKKwkJCSAqIGFjY2Vzc29yOyB0aGUgZm9yd2FyZCB0YXJnZXQgaXMgYWx3YXlzIG9u IHRoZSBzYW1lIHBhZ2UuCiAJCQkgKi8KLQkJCW5leHRibGtubyA9IEl0ZW1Qb2ludGVyR2V0 QmxvY2tOdW1iZXIoJihjdHgudHVwaGRyKS0+dF9jdGlkKTsKLQkJCW5leHRvZmZudW0gPSBJ dGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmKGN0eC50dXBoZHIpLT50X2N0aWQpOworCQkJ aWYgKEhvdEluZGV4ZWRIZWFkZXJJc1N0dWIoY3R4LnR1cGhkcikpCisJCQl7CisJCQkJbmV4 dGJsa25vID0gY3R4LmJsa25vOworCQkJCW5leHRvZmZudW0gPSBIb3RJbmRleGVkU3R1Ykdl dEZvcndhcmQoY3R4LnR1cGhkcik7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJbmV4dGJs a25vID0gSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmKGN0eC50dXBoZHIpLT50X2N0aWQp OworCQkJCW5leHRvZmZudW0gPSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmKGN0eC50 dXBoZHIpLT50X2N0aWQpOworCQkJfQogCQkJaWYgKG5leHRibGtubyA9PSBjdHguYmxrbm8g JiYgbmV4dG9mZm51bSAhPSBjdHgub2ZmbnVtICYmCiAJCQkJbmV4dG9mZm51bSA+PSBGaXJz dE9mZnNldE51bWJlciAmJiBuZXh0b2ZmbnVtIDw9IG1heG9mZikKIAkJCQlzdWNjZXNzb3Jb Y3R4Lm9mZm51bV0gPSBuZXh0b2ZmbnVtOwpAQCAtNjc1LDcgKzcwMCw3IEBAIHZlcmlmeV9o ZWFwYW0oUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkgKi8KIAkJCQlBc3NlcnQoSXRlbUlkSXNO b3JtYWwobmV4dF9scCkpOwogCi0JCQkJLyogQ2FuIG9ubHkgcmVkaXJlY3QgdG8gYSBIT1Qg dHVwbGUuICovCisJCQkJLyogQSByZWRpcmVjdCB0YXJnZXRzIHRoZSBmaXJzdCBzdXJ2aXZp bmcgY2hhaW4gbWVtYmVyLiAqLwogCQkJCW5leHRfaHR1cCA9IChIZWFwVHVwbGVIZWFkZXIp IFBhZ2VHZXRJdGVtKGN0eC5wYWdlLCBuZXh0X2xwKTsKIAkJCQlpZiAoIUhlYXBUdXBsZUhl YWRlcklzSGVhcE9ubHkobmV4dF9odHVwKSkKIAkJCQl7CkBAIC02ODcsNiArNzEyLDE5IEBA IHZlcmlmeV9oZWFwYW0oUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkvKiBIT1QgY2hhaW5zIHNo b3VsZCBub3QgaW50ZXJzZWN0LiAqLwogCQkJCWlmIChwcmVkZWNlc3NvcltuZXh0b2ZmbnVt XSAhPSBJbnZhbGlkT2Zmc2V0TnVtYmVyKQogCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogSW4g dGhlIEhPVC9TSVUgbW9kZWwgc2V2ZXJhbCByZWRpcmVjdHMgbGVnaXRpbWF0ZWx5CisJCQkJ CSAqIGZvcndhcmQgdG8gdGhlIHNhbWUgbGl2ZSB0dXBsZTogd2hlbiBhIGNoYWluIGNvbGxh cHNlcywKKwkJCQkJICogdGhlIHJvb3QgYW5kIGVhY2ggZW50cnktYmVhcmluZyBkZWFkIG1l bWJlciBiZWNvbWUgYQorCQkJCQkgKiByZWRpcmVjdCB0byBmaXJzdF9saXZlIHNvIGV2ZXJ5 IHN0YWxlIGJ0cmVlIGVudHJ5IHN0aWxsCisJCQkJCSAqIHJlc29sdmVzIHRoZXJlICh0aGUg cmVhZCBwYXRoIHRoZW4gcmVjaGVja3MgdGhlIGxlYWYKKwkJCQkJICoga2V5KS4gIE11bHRp cGxlIHByZWRlY2Vzc29ycyBhcmUgdGhlcmVmb3JlIGV4cGVjdGVkCisJCQkJCSAqIHdoZW4g dGhlIHRhcmdldCBpcyBIT1Qtc2VsZWN0aXZlbHktdXBkYXRlZDsga2VlcCB0aGUKKwkJCQkJ ICogZmlyc3QgcHJlZGVjZXNzb3IgYW5kIGRvIG5vdCByZXBvcnQgaXQgYXMgY29ycnVwdGlv bi4KKwkJCQkJICovCisJCQkJCWlmICgobmV4dF9odHVwLT50X2luZm9tYXNrMiAmIEhFQVBf SU5ERVhFRF9VUERBVEVEKSAhPSAwKQorCQkJCQkJY29udGludWU7CisKIAkJCQkJcmVwb3J0 X2NvcnJ1cHRpb24oJmN0eCwKIAkJCQkJCQkJCSAgcHNwcmludGYoInJlZGlyZWN0IGxpbmUg cG9pbnRlciBwb2ludHMgdG8gb2Zmc2V0ICVkLCBidXQgb2Zmc2V0ICVkIGFsc28gcG9pbnRz IHRoZXJlIiwKIAkJCQkJCQkJCQkJICAgbmV4dG9mZm51bSwgcHJlZGVjZXNzb3JbbmV4dG9m Zm51bV0pKTsKQEAgLTcwMSw2ICs3MzksMzAgQEAgdmVyaWZ5X2hlYXBhbShQR19GVU5DVElP Tl9BUkdTKQogCQkJCWNvbnRpbnVlOwogCQkJfQogCisJCQkvKgorCQkJICogQSBjb2xsYXBz ZS1zdXJ2aXZvciBzdHViIGZvcndhcmRzIGxpa2UgYSByZWRpcmVjdDogaXQgaXMgbm90IGEK KwkJCSAqIHJlYWwgdHVwbGUsIHNvIGRvbid0IGFwcGx5IHRoZSB0dXBsZS10by10dXBsZSB1 cGRhdGUtY2hhaW4KKwkJCSAqIGNoZWNrcywgYnV0IGRvIHJlY29yZCB0aGUgcHJlZGVjZXNz b3IgZWRnZSB0byBpdHMgdGFyZ2V0IHNvIHRoZQorCQkJICogbGl2ZSB0dXBsZSBpdCB1bHRp bWF0ZWx5IGZvcndhcmRzIHRvIGlzIG5vdCBtaXN0YWtlbiBmb3IgYQorCQkJICogY2hhaW4g cm9vdC4gIEl0cyB0YXJnZXQgbXVzdCBiZSBoZWFwLW9ubHkgKGFub3RoZXIgc3R1YiBvciB0 aGUKKwkJCSAqIGxpdmUgaGVhcC1vbmx5IHR1cGxlKS4KKwkJCSAqLworCQkJY3Vycl9odHVw ID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0oY3R4LnBhZ2UsIGN1cnJfbHApOwor CQkJaWYgKEhvdEluZGV4ZWRIZWFkZXJJc1N0dWIoY3Vycl9odHVwKSkKKwkJCXsKKwkJCQlp ZiAoSXRlbUlkSXNOb3JtYWwobmV4dF9scCkpCisJCQkJeworCQkJCQluZXh0X2h0dXAgPSAo SGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShjdHgucGFnZSwgbmV4dF9scCk7CisJCQkJ CWlmICghSGVhcFR1cGxlSGVhZGVySXNIZWFwT25seShuZXh0X2h0dXApKQorCQkJCQkJcmVw b3J0X2NvcnJ1cHRpb24oJmN0eCwKKwkJCQkJCQkJCQkgIHBzcHJpbnRmKCJIT1QtaW5kZXhl ZCBzdHViIGZvcndhcmRzIHRvIGEgbm9uLWhlYXAtb25seSB0dXBsZSBhdCBvZmZzZXQgJWQi LAorCQkJCQkJCQkJCQkJICAgbmV4dG9mZm51bSkpOworCQkJCQllbHNlIGlmIChwcmVkZWNl c3NvcltuZXh0b2ZmbnVtXSA9PSBJbnZhbGlkT2Zmc2V0TnVtYmVyKQorCQkJCQkJcHJlZGVj ZXNzb3JbbmV4dG9mZm51bV0gPSBjdHgub2ZmbnVtOworCQkJCX0KKwkJCQljb250aW51ZTsK KwkJCX0KKwogCQkJLyoKIAkJCSAqIElmIHRoZSBuZXh0IGxpbmUgcG9pbnRlciBpcyBhIHJl ZGlyZWN0LCBvciBpZiBpdCdzIGEgdHVwbGUgYnV0CiAJCQkgKiB0aGUgWE1BWCBvZiB0aGlz IHR1cGxlIGRvZXNuJ3QgbWF0Y2ggdGhlIFhNSU4gb2YgdGhlIG5leHQKQEAgLTcwOSw3ICs3 NzEsNiBAQCB2ZXJpZnlfaGVhcGFtKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkgKi8KIAkJCWlm IChJdGVtSWRJc1JlZGlyZWN0ZWQobmV4dF9scCkpCiAJCQkJY29udGludWU7Ci0JCQljdXJy X2h0dXAgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShjdHgucGFnZSwgY3Vycl9s cCk7CiAJCQljdXJyX3htYXggPSBIZWFwVHVwbGVIZWFkZXJHZXRVcGRhdGVYaWQoY3Vycl9o dHVwKTsKIAkJCW5leHRfaHR1cCA9IChIZWFwVHVwbGVIZWFkZXIpIFBhZ2VHZXRJdGVtKGN0 eC5wYWdlLCBuZXh0X2xwKTsKIAkJCW5leHRfeG1pbiA9IEhlYXBUdXBsZUhlYWRlckdldFht aW4obmV4dF9odHVwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JF QURNRS5IT1QtSU5ERVhFRCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1Qt SU5ERVhFRAppbmRleCBhYjRmOGJjMTg4MS4uMWY0MWIwZmZmZTggMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRAorKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQKQEAgLTI0NCw2ICsyNDQsMTYg QEAgc3RhbGUgZW50cmllcyAoZW5mb3JjZWQgaW4gaGVhcF9wcnVuZV9yZWNvcmRfcmVkaXJl Y3QsIHRoZSBzdHViIHJlY29yZGVycywgYW5kCiBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zp c2libGUpLgogCiAKK2FtY2hlY2sgYW5kIHN0YXRpc3RpY3MKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKwordmVyaWZ5X2hlYXBhbSB0cmVhdHMgdGhlIEhPVC1pbmRleGVkIGFydGlmYWN0 cyBhcyBsZWdpdGltYXRlOiBhIGxpdmUKK0hFQVBfSU5ERVhFRF9VUERBVEVEIGhlYXAtb25s eSB0dXBsZSB3aG9zZSBsaW5lIHBvaW50ZXIgaXMgcHJlc2VydmVkLCBhbmQKK211bHRpcGxl IExQX1JFRElSRUNUcyBmb3J3YXJkaW5nIHRvIG9uZSBsaXZlIHR1cGxlLgorCitTdGF0aXN0 aWNzOiBwZ19zdGF0X2FsbF90YWJsZXMubl90dXBfaG90X2luZGV4ZWRfdXBkIGNvdW50cyBI T1QtaW5kZXhlZAorCisKIEFwcGVuZGljZXMKIC0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ191cGdyYWRlL21lc29uLmJ1aWxkIGIvc3JjL2Jpbi9wZ191cGdyYWRlL21l c29uLmJ1aWxkCmluZGV4IGZmYmY2YWU4ZDc1Li4wYTZmYTBkY2ZmMiAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ191cGdyYWRlL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iaW4vcGdfdXBncmFk ZS9tZXNvbi5idWlsZApAQCAtNjksNiArNjksNyBAQCB0ZXN0cyArPSB7CiAgICAgICAndC8w MDZfdHJhbnNmZXJfbW9kZXMucGwnLAogICAgICAgJ3QvMDA3X211bHRpeGFjdF9jb252ZXJz aW9uLnBsJywKICAgICAgICd0LzAwOF9leHRlbnNpb25fY29udHJvbF9wYXRoLnBsJywKKyAg ICAgICd0LzAwOV9ob3RfaW5kZXhlZC5wbCcsCiAgICAgXSwKICAgICAnZGVwcyc6IFt0ZXN0 X2V4dF0sCiAgICAgJ3Rlc3Rfa3dhcmdzJzogeydwcmlvcml0eSc6IDQwfSwgIyBwZ191cGdy YWRlIHRlc3RzIGFyZSBzbG93CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvdC8w MDlfaG90X2luZGV4ZWQucGwgYi9zcmMvYmluL3BnX3VwZ3JhZGUvdC8wMDlfaG90X2luZGV4 ZWQucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI3MTEyOWFl MDNkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3QvMDA5X2hvdF9p bmRleGVkLnBsCkBAIC0wLDAgKzEsMTE4IEBACisjIENvcHlyaWdodCAoYykgMjAyNiwgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBwZ191cGdyYWRlIG11c3Qg cHJlc2VydmUgSE9ULWluZGV4ZWQgb24tZGlzayBzdGF0ZS4gIEEgcmVsYXRpb24gdGhhdCBo YXMKKyMgYWNjdW11bGF0ZWQgSE9ULWluZGV4ZWQgY2hhaW5zIC0tIGluY2x1ZGluZyBhIHZh bHVlIGN5Y2xlZCBhd2F5IGFuZCBiYWNrCisjIChBQkEpLCBhbiBvdXQtb2YtbGluZSAoVE9B U1QpIGluZGV4ZWQgY29sdW1uLCBhbmQgY2hhaW5zIGNvbGxhcHNlZCB0bworIyB4aWQtZnJl ZSBmb3J3YXJkaW5nIHN0dWJzIGJ5IFZBQ1VVTSAtLSBtdXN0IGNvbWUgdGhyb3VnaCBhbiB1 cGdyYWRlIHdpdGggaXRzCisjIGRhdGEgaW50YWN0LCBpdHMgaW5kZXhlcyBzdHJ1Y3R1cmFs bHkgc291bmQsIGFuZCBpdHMgY2hhaW5zIHN0aWxsIHNjYW5uaW5nCisjIGNvcnJlY3RseS4g IHBnX3VwZ3JhZGUgdHJhbnNmZXJzIGhlYXAgYW5kIGluZGV4IGZpbGVzIHZlcmJhdGltLCBz byB0aGlzIGlzCisjIHJlYWxseSBhIGNoZWNrIHRoYXQgdGhlIG5ldy1zdGF0ZSBiaXRzIChI RUFQX0lOREVYRURfVVBEQVRFRCwgY29sbGFwc2Ugc3R1YnMpCisjIGFyZSBub3QgcmVqZWN0 ZWQgYnkgcGdfdXBncmFkZSdzIGNoZWNrcyBhbmQgc3RheSBjb3JyZWN0IG9uIHRoZSBuZXcg Y2x1c3Rlci4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsK K3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6 OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK215ICRtb2RlID0gJEVOVntQR19URVNUX1BH X1VQR1JBREVfTU9ERX0gfHwgJy0tY29weSc7CisKK215ICRvbGRub2RlID0gUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdvbGRfbm9kZScpOworJG9sZG5vZGUtPmluaXQ7Cisk b2xkbm9kZS0+c3RhcnQ7CisKKyMgQnVpbGQgYSByZWxhdGlvbiB3aXRoIHNldmVyYWwgc2Vj b25kYXJ5IGluZGV4ZXMgc28gc2luZ2xlLWNvbHVtbiB1cGRhdGVzCisjIHN0YXkgSE9ULWlu ZGV4ZWQsIHRoZW4gZXhlcmNpc2UgdGhlIGNhc2VzIHRoYXQgcHJvZHVjZSBpbnRlcmVzdGlu ZyBvbi1kaXNrCisjIHN0YXRlLgorJG9sZG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBx eworCUNSRUFURSBFWFRFTlNJT04gYW1jaGVjazsKKwlDUkVBVEUgVEFCTEUgaGkgKGlkIGlu dCBQUklNQVJZIEtFWSwgayBpbnQsIHYgaW50LCBiaWcgdGV4dCkKKwkgIFdJVEggKGZpbGxm YWN0b3IgPSA1MCk7CisJQUxURVIgVEFCTEUgaGkgQUxURVIgQ09MVU1OIGJpZyBTRVQgU1RP UkFHRSBFWFRFUk5BTDsKKwlDUkVBVEUgSU5ERVggaGlfayBPTiBoaSAoayk7CisJQ1JFQVRF IElOREVYIGhpX3YgT04gaGkgKHYpOworCUNSRUFURSBJTkRFWCBoaV9iaWcgT04gaGkgKGJp Zyk7CisJSU5TRVJUIElOVE8gaGkgU0VMRUNUIGcsIGcsIGcgKiAxMCwgcmVwZWF0KGNocig2 NCArIGcpLCAyMDAwKQorCSAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIGc7Cit9KTsK KworIyBJbnRlcmxlYXZlIHVwZGF0ZXMgb2YgZGlmZmVyZW50IGluZGV4ZWQgY29sdW1ucyBv biB0aGUgc2FtZSByb3dzLiAgQSBtZW1iZXIKKyMgdGhhdCBjaGFuZ2VkIGEgY29sdW1uIG5v dCBjaGFuZ2VkIGFnYWluIGJ5IGEgbGF0ZXIgaG9wIHN1cnZpdmVzIFZBQ1VVTSBhcyBhCisj IGNvbGxhcHNlIHN0dWI7IHRoZSByZXN0IGFyZSByZWNsYWltZWQuICBSb3cgMSBhZGRpdGlv bmFsbHkgY3ljbGVzIGsgYXdheSBhbmQKKyMgYmFjayAoQUJBKSwgYW5kIHJvdyAyIHJld3Jp dGVzIGl0cyB0b2FzdGVkIGluZGV4ZWQgY29sdW1uLgorJG9sZG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCBxeworCVVQREFURSBoaSBTRVQgayA9IGsgKyAxMDAgV0hFUkUgaWQgPD0g MTA7ICAgLS0gY2hhbmdlcyBrCisJVVBEQVRFIGhpIFNFVCB2ID0gdiArIDEgICBXSEVSRSBp ZCA8PSAxMDsgICAgLS0gY2hhbmdlcyB2IChzdXJ2aXZlcyBhcyBzdHViKQorCVVQREFURSBo aSBTRVQgayA9IGsgLSAxMDAgV0hFUkUgaWQgPD0gMTA7ICAgIC0tIGsgYmFjayB0byBvcmln aW5hbCAoQUJBKQorCVVQREFURSBoaSBTRVQgYmlnID0gcmVwZWF0KCdaJywgMjAwMCkgV0hF UkUgaWQgPSAyOworfSk7CisjIENvbGxhcHNlIGRlYWQgY2hhaW4gbWVtYmVycyB0byBzdHVi cy4KKyRvbGRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ1ZBQ1VVTSAoSU5ERVhfQ0xF QU5VUCBvZmYpIGhpJyk7CisKKyMgVGhlIHByZS11cGdyYWRlIHN0YXRlIG11c3QgYWxyZWFk eSBiZSBzZWxmLWNvbnNpc3RlbnQuCitpcyggJG9sZG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQlxe1NFTEVDVCBjb3VudCgqKSBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpJyl9KSwK KwknMCcsICdwcmUtdXBncmFkZSBoZWFwIGlzIGNvbnNpc3RlbnQnKTsKKworIyBTbmFwc2hv dCB0aGUgZGF0YSB3ZSB3aWxsIGNvbXBhcmUgYWZ0ZXIgdGhlIHVwZ3JhZGUuCitteSAkZXhw ZWN0ID0gJG9sZG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7U0VMRUNUIGlkLCBr LCB2LCBsZW5ndGgoYmlnKSBGUk9NIGhpIE9SREVSIEJZIGlkfSk7CisKKyRvbGRub2RlLT5z dG9wOworCisjIE5ldyBjbHVzdGVyLCBzYW1lIHZlcnNpb24uCitteSAkbmV3bm9kZSA9IFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbmV3X25vZGUnKTsKKyRuZXdub2RlLT5p bml0OworCitteSAkb2xkYmluZGlyID0gJG9sZG5vZGUtPmNvbmZpZ19kYXRhKCctLWJpbmRp cicpOworbXkgJG5ld2JpbmRpciA9ICRuZXdub2RlLT5jb25maWdfZGF0YSgnLS1iaW5kaXIn KTsKKworIyBSdW4gcGdfdXBncmFkZSBmcm9tIGEgd3JpdGFibGUgZGlyZWN0b3J5IChtYXRj aGVzIDAwMl9wZ191cGdyYWRlKS4KK2NoZGlyICR7UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6 OnRtcF9jaGVja307CisKK2NvbW1hbmRfb2soCisJWworCQkncGdfdXBncmFkZScsICctLW5v LXN5bmMnLAorCQknLS1vbGQtZGF0YWRpcicgPT4gJG9sZG5vZGUtPmRhdGFfZGlyLAorCQkn LS1uZXctZGF0YWRpcicgPT4gJG5ld25vZGUtPmRhdGFfZGlyLAorCQknLS1vbGQtYmluZGly JyA9PiAkb2xkYmluZGlyLAorCQknLS1uZXctYmluZGlyJyA9PiAkbmV3YmluZGlyLAorCQkn LS1zb2NrZXRkaXInID0+ICRuZXdub2RlLT5ob3N0LAorCQknLS1vbGQtcG9ydCcgPT4gJG9s ZG5vZGUtPnBvcnQsCisJCSctLW5ldy1wb3J0JyA9PiAkbmV3bm9kZS0+cG9ydCwKKwkJJG1v ZGUsCisJXSwKKwkncnVuIG9mIHBnX3VwZ3JhZGUgZm9yIEhPVC1pbmRleGVkIHJlbGF0aW9u Jyk7CisKKyRuZXdub2RlLT5zdGFydDsKKworIyBEYXRhIHN1cnZpdmVkIGludGFjdC4KK215 ICRnb3QgPSAkbmV3bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxFQ1QgaWQs IGssIHYsIGxlbmd0aChiaWcpIEZST00gaGkgT1JERVIgQlkgaWR9KTsKK2lzKCRnb3QsICRl eHBlY3QsICdIT1QtaW5kZXhlZCB0YWJsZSBkYXRhIHByZXNlcnZlZCBhY3Jvc3MgcGdfdXBn cmFkZScpOworCisjIEhlYXAgYW5kIGluZGV4ZXMgYXJlIHN0cnVjdHVyYWxseSBzb3VuZCBv biB0aGUgbmV3IGNsdXN0ZXIuCitpcyggJG5ld25vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCQlxe1NFTEVDVCBjb3VudCgqKSBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpJyl9KSwKKwkn MCcsICdwb3N0LXVwZ3JhZGUgaGVhcCBpcyBjb25zaXN0ZW50IChjb2xsYXBzZSBzdHVicyBy ZWNvZ25pc2VkKScpOworaXMoICRuZXdub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXsK KwkJU0VMRUNUIGNvdW50KCopIEZST00gKAorCQkJU0VMRUNUIGJ0X2luZGV4X2NoZWNrKGMu b2lkKQorCQkJRlJPTSBwZ19jbGFzcyBjIEpPSU4gcGdfaW5kZXggaSBPTiBpLmluZGV4cmVs aWQgPSBjLm9pZAorCQkJV0hFUkUgaS5pbmRyZWxpZCA9ICdoaSc6OnJlZ2NsYXNzKSBzfSks CisJJzQnLCAncG9zdC11cGdyYWRlIGluZGV4ZXMgcGFzcyBidF9pbmRleF9jaGVjaycpOwor CisjIFRoZSBBQkEgY2hhaW4gb24gcm93IDEgc3RpbGwgc2NhbnMgY29ycmVjdGx5IHRocm91 Z2ggYSBmb3JjZWQgaW5kZXggc2NhbjoKKyMgaz0xIHJldHVybnMgZXhhY3RseSB0aGUgb25l IGxpdmUgcm93LCBhbmQgaXRzIHN1cGVyc2VkZWQgdmFsdWUgaXMgZ29uZS4KK2lzKCAkbmV3 bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJCVNFVCBlbmFibGVfc2Vxc2NhbiA9 IG9mZjsgU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworCQlTRUxFQ1QgY291bnQoKikg RlJPTSBoaSBXSEVSRSBrID0gMX0pLAorCScxJywgJ3Bvc3QtdXBncmFkZSBpbmRleCBzY2Fu IHJldHVybnMgdGhlIEFCQSByb3cgb25jZScpOworaXMoICRuZXdub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcXsKKwkJU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOyBTRVQgZW5hYmxl X2JpdG1hcHNjYW4gPSBvZmY7CisJCVNFTEVDVCBjb3VudCgqKSBGUk9NIGhpIFdIRVJFIGsg PSAxMDF9KSwKKwknMCcsICdwb3N0LXVwZ3JhZGUgaW5kZXggc2NhbiBkcm9wcyB0aGUgc3Vw ZXJzZWRlZCB2YWx1ZScpOworCiskbmV3bm9kZS0+c3RvcDsKKworZG9uZV90ZXN0aW5nKCk7 Ci0tIAoyLjUwLjEKCg== --732d2653398ad274b1166a00220a1f2b85c8ed8b Content-Disposition: attachment; filename*0="v49-0007-Add-HOT-indexed-statistics-and-the-comprehensive.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v49-0007-Add-HOT-indexed-statistics-and-the-comprehensive.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSBlM2U0MDViMzI4Zjg5ODM5Y2NjNmEyYzFkMmI2YTMxNGZiNWFkODgyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMTozODoxMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjQ5IDcv OV0gQWRkIEhPVC1pbmRleGVkIHN0YXRpc3RpY3MgYW5kIHRoZSBjb21wcmVoZW5zaXZlIHRl c3QKIHN1aXRlCgpFeHBvc2UgdGhlIEhPVC1pbmRleGVkIGFjdGl2aXR5IGNvdW50ZXJzIG1h aW50YWluZWQgYnkgdGhlIHdyaXRlIHBhdGg6CnBnX3N0YXRfYWxsX3RhYmxlcy5uX3R1cF9o b3RfaW5kZXhlZF91cGQsIHRoZSBwZXItaW5kZXgKbl90dXBfaG90X2luZGV4ZWRfdXBkX21h dGNoZWQgLyBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCBjb3VudGVycyBpbgpwZ19z dGF0X2FsbF9pbmRleGVzLCBhbmQgcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMoKSBy ZXBvcnRpbmcgcGVyLXJlbGF0aW9uCkhPVC1pbmRleGVkIGNoYWluIGNvbXBvc2l0aW9uLiAg RG9jdW1lbnQgdGhlbSBpbiBtb25pdG9yaW5nLnNnbWwgYW5kIHRoZQpSRUFETUUuCgpXaXRo IHN0YXRpc3RpY3MsIHBydW5lL2NvbGxhcHNlLCBhbmQgYW1jaGVjayByZWNvZ25pdGlvbiBh bGwgaW4gcGxhY2UsIGFkZCB0aGUKZnVsbCBmZWF0dXJlIHRlc3Qgc3VpdGUsIHdoaWNoIHVz ZXMgdGhvc2UgZmFjaWxpdGllcyB0byB2ZXJpZnkgYmVoYXZpb3I6CgotIGhvdF9pbmRleGVk X3VwZGF0ZXMgKHJlZ3Jlc3Npb24pOiBlbGlnaWJpbGl0eSBhbmQgY2xhc3NpZmljYXRpb247 IHNlbGVjdGl2ZQogIG1haW50ZW5hbmNlIGFjcm9zcyBtdWx0aXBsZS9jb21wb3NpdGUgaW5k ZXhlczsgdGhlIGNyb3NzZWQtYXR0cmlidXRlIHJlYWQKICBwYXRoIGZvciBlcXVhbGl0eSwg cmFuZ2UsIGFuZCBpbmVxdWFsaXR5IHNjYW5zOyBhIGtleSBjeWNsZWQgYXdheSBhbmQgYmFj awogIChBQkEpLCBpbmNsdWRpbmcgYWNyb3NzIHR3byBkaXN0aW5jdCBsaXZlIHJvd3M7IFRP QVNUZWQgaW5kZXhlZCBjb2x1bW5zOwogIHBhcnRpYWwtaW5kZXggcHJlZGljYXRlIGZsaXBz IChrZXkgYW5kIG5vbi1rZXkgcHJlZGljYXRlIGNvbHVtbnMpOwogIHRyaWdnZXItbW9kaWZp ZWQgaW5kZXhlZCBjb2x1bW5zOyBleGNsdXNpb24tY29uc3RyYWludCB0YWJsZXM7IHBhcnRp dGlvbmVkCiAgdGFibGVzOyBub24tYnRyZWUgYWNjZXNzIG1ldGhvZHMgKGhhc2gsIEdJTiwg R2lTVCk7IGEgVU5JUVVFIGluZGV4IG9uIGEgdHlwZQogIHdoZXJlIGltYWdlIGVxdWFsaXR5 IGRpZmZlcnMgZnJvbSBvcGVyYXRvciBlcXVhbGl0eTsgQ1JFQVRFIElOREVYIC8gUkVJTkRF WAogIGFuZCBEUk9QIElOREVYIG92ZXIgbGl2ZSBjaGFpbnM7IHBydW5lIHJlY2xhbWF0aW9u LCBzdHViIG1peGVzLCBhbmQKICByZS1jb2xsYXBzZSBhY3Jvc3MgcGFydGlhbCBWQUNVVU1z OyB0aGUgbmV2ZXItYWxsLXZpc2libGUgZ3VhcmQ7IGFuZCBEREwKICBhZnRlciBhIGNoYWlu IGV4aXN0cyAoQUREIENPTFVNTiBjcm9zc2luZyBhIGJpdG1hcC1zaXplIGJvdW5kYXJ5LCBE Uk9QCiAgQ09MVU1OKS4KLSBob3RfaW5kZXhlZF9hZHZlcnNhcmlhbCAoaXNvbGF0aW9uKTog Y29uY3VycmVudCBVUERBVEUgLyBWQUNVVU0gLyBwcnVuZSBhbmQKICBpbmRleCBzY2Fucywg a2V5IGN5Y2xpbmcsIGFib3J0cywgYW5kIHJlYWRlciBjb25zaXN0ZW5jeSBhY3Jvc3MgYSBj b25jdXJyZW50CiAgY29sbGFwc2UuCi0gMDU0X2hvdF9pbmRleGVkX3JlY292ZXJ5IChyZWNv dmVyeSk6IFdBTCByZXBsYXkgb2YgdGhlIGNoYWluIGFuZCBpdHMgY29sbGFwc2UKICB1bmRl ciB3YWxfY29uc2lzdGVuY3lfY2hlY2tpbmcuCi0gcGdfc3VyZ2VyeSBoYW5kbGluZyBvZiBI T1QtaW5kZXhlZCB0dXBsZXMgYW5kIGNvbGxhcHNlLXN1cnZpdm9yIHN0dWJzLgoKQXV0aG9y ZWQtYnk6IEdyZWcgQnVyZCA8Z3JlZ0BidXJkLm1lPgotLS0KIGNvbnRyaWIvcGdfc3VyZ2Vy eS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogY29udHJpYi9wZ19zdXJn ZXJ5L2V4cGVjdGVkL2hlYXBfc3VyZ2VyeS5vdXQgIHwgICAyOSArCiBjb250cmliL3BnX3N1 cmdlcnkvc3FsL2hlYXBfc3VyZ2VyeS5zcWwgICAgICAgfCAgIDIwICsKIGRvYy9zcmMvc2dt bC9tb25pdG9yaW5nLnNnbWwgICAgICAgICAgICAgICAgICB8ICAgNTcgKwogc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQgICAgfCAgICAzICsKIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hvdF9pbmRleGVkX3N0YXRzLmMgICB8ICAxODYgKysKIHNy Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL21lc29uLmJ1aWxkICAgICAgICAgICB8ICAgIDEgKwog c3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgICAgNCAr CiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyAgICAgICAgICAgfCAgIDEy ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8ICAg MjggKwogLi4uL2V4cGVjdGVkL2hvdF9pbmRleGVkX2FkdmVyc2FyaWFsLm91dCAgICAgIHwg IDEzOSArKwogc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZSAgICAgICAg IHwgICAgMSArCiAuLi4vc3BlY3MvaG90X2luZGV4ZWRfYWR2ZXJzYXJpYWwuc3BlYyAgICAg ICAgfCAgMTIzICsrCiBzcmMvdGVzdC9yZWNvdmVyeS9NYWtlZmlsZSAgICAgICAgICAgICAg ICAgICAgfCAgICAzICstCiBzcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZCAgICAgICAg ICAgICAgICAgfCAgICAxICsKIC4uLi9yZWNvdmVyeS90LzA1NV9ob3RfaW5kZXhlZF9yZWNv dmVyeS5wbCAgICB8ICAxNDkgKysKIC4uLi9yZWdyZXNzL2V4cGVjdGVkL2hvdF9pbmRleGVk X3VwZGF0ZXMub3V0ICB8IDE3MDYgKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcnVsZXMub3V0ICAgICAgICAgICB8ICAgMTIgKwogc3JjL3Rlc3QvcmVn cmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAgMSArCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9ob3RfaW5kZXhlZF91cGRhdGVzLnNxbCAgfCAxMTU0ICsrKysrKysrKysr CiAyMSBmaWxlcyBjaGFuZ2VkLCAzNjMwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9ob3RfaW5kZXhl ZF9zdGF0cy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVj dGVkL2hvdF9pbmRleGVkX2FkdmVyc2FyaWFsLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9ob3RfaW5kZXhlZF9hZHZlcnNhcmlhbC5zcGVjCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTVfaG90X2luZGV4ZWRf cmVjb3ZlcnkucGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2hvdF9pbmRleGVkX3VwZGF0ZXMub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvcmVncmVzcy9zcWwvaG90X2luZGV4ZWRfdXBkYXRlcy5zcWwKCmRpZmYgLS1naXQgYS9j b250cmliL3BnX3N1cmdlcnkvTWFrZWZpbGUgYi9jb250cmliL3BnX3N1cmdlcnkvTWFrZWZp bGUKaW5kZXggYTY2Nzc2YzRjNDEuLmRhNzUyYTgxMTQ3IDEwMDY0NAotLS0gYS9jb250cmli L3BnX3N1cmdlcnkvTWFrZWZpbGUKKysrIGIvY29udHJpYi9wZ19zdXJnZXJ5L01ha2VmaWxl CkBAIC0xMCw2ICsxMCw3IEBAIERBVEEgPSBwZ19zdXJnZXJ5LS0xLjAuc3FsCiBQR0ZJTEVE RVNDID0gInBnX3N1cmdlcnkgLSBwZXJmb3JtIHN1cmdlcnkgb24gYSBkYW1hZ2VkIHJlbGF0 aW9uIgogCiBSRUdSRVNTID0gaGVhcF9zdXJnZXJ5CitFWFRSQV9JTlNUQUxMID0gY29udHJp Yi9wYWdlaW5zcGVjdAogCiBpZmRlZiBVU0VfUEdYUwogUEdfQ09ORklHID0gcGdfY29uZmln CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N1cmdlcnkvZXhwZWN0ZWQvaGVhcF9zdXJnZXJ5 Lm91dCBiL2NvbnRyaWIvcGdfc3VyZ2VyeS9leHBlY3RlZC9oZWFwX3N1cmdlcnkub3V0Cmlu ZGV4IGRmN2QxM2IwOTA4Li45YzA2NmYwODdlNyAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19z dXJnZXJ5L2V4cGVjdGVkL2hlYXBfc3VyZ2VyeS5vdXQKKysrIGIvY29udHJpYi9wZ19zdXJn ZXJ5L2V4cGVjdGVkL2hlYXBfc3VyZ2VyeS5vdXQKQEAgLTE3NSw2ICsxNzUsMzUgQEAgREVU QUlMOiAgVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3Igdmlld3MuCiBzZWxl Y3QgaGVhcF9mb3JjZV9mcmVlemUoJ3Z3Jzo6cmVnY2xhc3MsIEFSUkFZWycoMCwgMSknXTo6 dGlkW10pOwogRVJST1I6ICBjYW5ub3Qgb3BlcmF0ZSBvbiByZWxhdGlvbiAidnciCiBERVRB SUw6ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB2aWV3cy4KKy0tIEEg SE9UL1NJVSBjaGFpbiBjb2xsYXBzZSB0dXJucyB0aGUgY2hhaW4gcm9vdCBhbmQgZWFjaCBk ZWFkIGVudHJ5LWJlYXJpbmcKKy0tIG1lbWJlciBpbnRvIGFuIExQX1JFRElSRUNUIHRvIHRo ZSBsaXZlIHR1cGxlLiAgcGdfc3VyZ2VyeSBvcGVyYXRlcyBvbiByZWFsCistLSB0dXBsZXMg YW5kIG11c3QgbGVhdmUgdGhlIGxpdmUgcm93IHJlYWNoYWJsZSBhZnRlciBzdWNoIGEgY29s bGFwc2UuCitjcmVhdGUgZXh0ZW5zaW9uIHBhZ2VpbnNwZWN0OworY3JlYXRlIHRhYmxlIGh0 b21iIChpZCBpbnQgcHJpbWFyeSBrZXksIGEgaW50LCBiIGludCkgd2l0aCAoZmlsbGZhY3Rv ciA9IDUwKTsKK2NyZWF0ZSBpbmRleCBodG9tYl9hIG9uIGh0b21iKGEpOworaW5zZXJ0IGlu dG8gaHRvbWIgdmFsdWVzICgxLCAxMCwgMjApOworLS0gVHdvIEhPVC1pbmRleGVkIHVwZGF0 ZXMgb24gYW4gaW5kZXhlZCBhdHRyLCB0aGVuIHBydW5lOiB0aGUgZGVhZCBtaWQtY2hhaW4K Ky0tIHZlcnNpb25zIGNvbGxhcHNlIHRvIExQX1JFRElSRUNUcyB0byB0aGUgbGl2ZSB0dXBs ZS4gIElOREVYX0NMRUFOVVAgb2ZmIGtlZXBzCistLSB0aGUgc3RhbGUgYnRyZWUgbGVhdmVz IChhbmQgaGVuY2UgdGhlIHJlZGlyZWN0cykgaW4gcGxhY2UuCit1cGRhdGUgaHRvbWIgc2V0 IGEgPSAxMSB3aGVyZSBpZCA9IDE7Cit1cGRhdGUgaHRvbWIgc2V0IGEgPSAxMiB3aGVyZSBp ZCA9IDE7Cit2YWN1dW0gKGluZGV4X2NsZWFudXAgb2ZmKSBodG9tYjsKK3NlbGVjdCBuX2hv dF9pbmRleGVkID4gMCBhcyBtYWRlX2hvdF9pbmRleGVkCisgIGZyb20gcGdfcmVsYXRpb25f aG90X2luZGV4ZWRfc3RhdHMoJ2h0b21iJyk7CisgbWFkZV9ob3RfaW5kZXhlZCAKKy0tLS0t LS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0gdGhlIGxpdmUgcm93IGlzIGludGFj dCBhbmQgcmVhY2hhYmxlIGFmdGVyIHRoZSBjb2xsYXBzZQorc2VsZWN0IGlkLCBhLCBiIGZy b20gaHRvbWI7CisgaWQgfCBhICB8IGIgIAorLS0tLSstLS0tKy0tLS0KKyAgMSB8IDEyIHwg MjAKKygxIHJvdykKKworZHJvcCB0YWJsZSBodG9tYjsKK2Ryb3AgZXh0ZW5zaW9uIHBhZ2Vp bnNwZWN0OwogLS0gY2xlYW51cC4KIGRyb3AgdmlldyB2dzsKIGRyb3AgZXh0ZW5zaW9uIHBn X3N1cmdlcnk7CmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N1cmdlcnkvc3FsL2hlYXBfc3Vy Z2VyeS5zcWwgYi9jb250cmliL3BnX3N1cmdlcnkvc3FsL2hlYXBfc3VyZ2VyeS5zcWwKaW5k ZXggNjUyNmIyNzUzNWQuLjdhMGYyNzIyZGMzIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3N1 cmdlcnkvc3FsL2hlYXBfc3VyZ2VyeS5zcWwKKysrIGIvY29udHJpYi9wZ19zdXJnZXJ5L3Nx bC9oZWFwX3N1cmdlcnkuc3FsCkBAIC04Myw2ICs4MywyNiBAQCBjcmVhdGUgdmlldyB2dyBh cyBzZWxlY3QgMTsKIHNlbGVjdCBoZWFwX2ZvcmNlX2tpbGwoJ3Z3Jzo6cmVnY2xhc3MsIEFS UkFZWycoMCwgMSknXTo6dGlkW10pOwogc2VsZWN0IGhlYXBfZm9yY2VfZnJlZXplKCd2dyc6 OnJlZ2NsYXNzLCBBUlJBWVsnKDAsIDEpJ106OnRpZFtdKTsKIAorLS0gQSBIT1QvU0lVIGNo YWluIGNvbGxhcHNlIHR1cm5zIHRoZSBjaGFpbiByb290IGFuZCBlYWNoIGRlYWQgZW50cnkt YmVhcmluZworLS0gbWVtYmVyIGludG8gYW4gTFBfUkVESVJFQ1QgdG8gdGhlIGxpdmUgdHVw bGUuICBwZ19zdXJnZXJ5IG9wZXJhdGVzIG9uIHJlYWwKKy0tIHR1cGxlcyBhbmQgbXVzdCBs ZWF2ZSB0aGUgbGl2ZSByb3cgcmVhY2hhYmxlIGFmdGVyIHN1Y2ggYSBjb2xsYXBzZS4KK2Ny ZWF0ZSBleHRlbnNpb24gcGFnZWluc3BlY3Q7CitjcmVhdGUgdGFibGUgaHRvbWIgKGlkIGlu dCBwcmltYXJ5IGtleSwgYSBpbnQsIGIgaW50KSB3aXRoIChmaWxsZmFjdG9yID0gNTApOwor Y3JlYXRlIGluZGV4IGh0b21iX2Egb24gaHRvbWIoYSk7CitpbnNlcnQgaW50byBodG9tYiB2 YWx1ZXMgKDEsIDEwLCAyMCk7CistLSBUd28gSE9ULWluZGV4ZWQgdXBkYXRlcyBvbiBhbiBp bmRleGVkIGF0dHIsIHRoZW4gcHJ1bmU6IHRoZSBkZWFkIG1pZC1jaGFpbgorLS0gdmVyc2lv bnMgY29sbGFwc2UgdG8gTFBfUkVESVJFQ1RzIHRvIHRoZSBsaXZlIHR1cGxlLiAgSU5ERVhf Q0xFQU5VUCBvZmYga2VlcHMKKy0tIHRoZSBzdGFsZSBidHJlZSBsZWF2ZXMgKGFuZCBoZW5j ZSB0aGUgcmVkaXJlY3RzKSBpbiBwbGFjZS4KK3VwZGF0ZSBodG9tYiBzZXQgYSA9IDExIHdo ZXJlIGlkID0gMTsKK3VwZGF0ZSBodG9tYiBzZXQgYSA9IDEyIHdoZXJlIGlkID0gMTsKK3Zh Y3V1bSAoaW5kZXhfY2xlYW51cCBvZmYpIGh0b21iOworc2VsZWN0IG5faG90X2luZGV4ZWQg PiAwIGFzIG1hZGVfaG90X2luZGV4ZWQKKyAgZnJvbSBwZ19yZWxhdGlvbl9ob3RfaW5kZXhl ZF9zdGF0cygnaHRvbWInKTsKKy0tIHRoZSBsaXZlIHJvdyBpcyBpbnRhY3QgYW5kIHJlYWNo YWJsZSBhZnRlciB0aGUgY29sbGFwc2UKK3NlbGVjdCBpZCwgYSwgYiBmcm9tIGh0b21iOwor ZHJvcCB0YWJsZSBodG9tYjsKK2Ryb3AgZXh0ZW5zaW9uIHBhZ2VpbnNwZWN0OworCiAtLSBj bGVhbnVwLgogZHJvcCB2aWV3IHZ3OwogZHJvcCBleHRlbnNpb24gcGdfc3VyZ2VyeTsKZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwv bW9uaXRvcmluZy5zZ21sCmluZGV4IDkzN2Q2Y2UxYjU3Li43ZWFlMjdhY2VkZCAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv bW9uaXRvcmluZy5zZ21sCkBAIC00MzI5LDYgKzQzMjksMTkgQEAgZGVzY3JpcHRpb24gfCBX YWl0aW5nIGZvciBhIG5ld2x5IGluaXRpYWxpemVkIFdBTCBmaWxlIHRvIHJlYWNoIGR1cmFi bGUgc3RvcmFnZQogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAg IDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEg cm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5uX3R1cF9o b3RfaW5kZXhlZF91cGQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+CisgICAg ICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOdW1iZXIgb2Ygcm93cyB1cGRhdGVk IHVzaW5nIHRoZSBIT1QtaW5kZXhlZCBwYXRoOiB0aGUgc3VjY2Vzc29yCisgICAgICAgdmVy c2lvbiBzdGF5cyBvbiB0aGUgc2FtZSBwYWdlIGFzIGEgaGVhcC1vbmx5IHR1cGxlIGV2ZW4g dGhvdWdoIGl0CisgICAgICAgY2hhbmdlZCBvbmUgb3IgbW9yZSBpbmRleGVkIGNvbHVtbnMs IGFuZCBvbmx5IHRoZSBhZmZlY3RlZCBpbmRleGVzCisgICAgICAgcmVjZWl2ZSBhIG5ldyBl bnRyeS4gIEV2ZXJ5IHN1Y2ggdXBkYXRlIGlzIGFsc28gY291bnRlZCBpbgorICAgICAgIDxz dHJ1Y3RmaWVsZD5uX3R1cF9ob3RfdXBkPC9zdHJ1Y3RmaWVsZD4uCisgICAgICA8L3BhcmE+ PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xl PSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+ CiAgICAgICAgPHN0cnVjdGZpZWxkPm5fdHVwX25ld3BhZ2VfdXBkPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+YmlnaW50PC90eXBlPgpAQCAtNDc5OSw2ICs0ODEyLDI3IEBAIGRlc2NyaXB0aW9u IHwgV2FpdGluZyBmb3IgYSBuZXdseSBpbml0aWFsaXplZCBXQUwgZmlsZSB0byByZWFjaCBk dXJhYmxlIHN0b3JhZ2UKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIAor ICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxw YXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+bl90 dXBfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5iaWdpbnQ8 L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOdW1iZXIgb2Yg SE9ULWluZGV4ZWQgdXBkYXRlcyB0aGF0IGluc2VydGVkIGEgbmV3IGVudHJ5IGludG8gdGhp cworICAgICAgIGluZGV4ICh0aGUgdXBkYXRlIGNoYW5nZWQgb25lIG9mIHRoaXMgaW5kZXgn cyBhdHRyaWJ1dGVzKQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisg ICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBh cmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5uX3R1 cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwv dHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE51bWJlciBvZiBI T1QtaW5kZXhlZCB1cGRhdGVzIHRoYXQgc2tpcHBlZCB0aGlzIGluZGV4ICh0aGUgdXBkYXRl CisgICAgICAgY2hhbmdlZCBubyBhdHRyaWJ1dGUgb2YgdGhpcyBpbmRleCwgc28gaXRzIGV4 aXN0aW5nIGVudHJ5IGNvbnRpbnVlcworICAgICAgIHRvIHJlc29sdmUgdGhlIEhPVCBjaGFp bikKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93Pgog ICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNv bHVtbl9kZWZpbml0aW9uIj4KICAgICAgICAgPHN0cnVjdGZpZWxkPnN0YXRzX3Jlc2V0PC9z dHJ1Y3RmaWVsZD4gPHR5cGU+dGltZXN0YW1wIHdpdGggdGltZSB6b25lPC90eXBlPgpAQCAt NTQ4MCw2ICs1NTE0LDI5IEBAIGRlc2NyaXB0aW9uIHwgV2FpdGluZyBmb3IgYSBuZXdseSBp bml0aWFsaXplZCBXQUwgZmlsZSB0byByZWFjaCBkdXJhYmxlIHN0b3JhZ2UKICAgICAgPC90 aGVhZD4KIAogICAgICA8dGJvZHk+CisgICAgICA8cm93PgorICAgICAgIDxlbnRyeSBpZD0i cGctcmVsYXRpb24taG90LWluZGV4ZWQtc3RhdHMiIHJvbGU9ImZ1bmNfdGFibGVfZW50cnki PjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgPGluZGV4dGVybT4KKyAg ICAgICAgIDxwcmltYXJ5PnBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzPC9wcmltYXJ5 PgorICAgICAgICA8L2luZGV4dGVybT4KKyAgICAgICAgPGZ1bmN0aW9uPnBnX3JlbGF0aW9u X2hvdF9pbmRleGVkX3N0YXRzPC9mdW5jdGlvbj4gKCA8cGFyYW1ldGVyPnJlbGF0aW9uPC9w YXJhbWV0ZXI+IDx0eXBlPnJlZ2NsYXNzPC90eXBlPiApCisgICAgICAgIDxyZXR1cm52YWx1 ZT5yZWNvcmQ8L3JldHVybnZhbHVlPgorICAgICAgICAoIDxwYXJhbWV0ZXI+bl9ob3RfaW5k ZXhlZDwvcGFyYW1ldGVyPiA8dHlwZT5iaWdpbnQ8L3R5cGU+LAorICAgICAgICA8cGFyYW1l dGVyPm5fY2hhaW5zPC9wYXJhbWV0ZXI+IDx0eXBlPmJpZ2ludDwvdHlwZT4sCisgICAgICAg IDxwYXJhbWV0ZXI+YXZnX2NoYWluX2xlbjwvcGFyYW1ldGVyPiA8dHlwZT5kb3VibGUgcHJl Y2lzaW9uPC90eXBlPiwKKyAgICAgICAgPHBhcmFtZXRlcj5tYXhfY2hhaW5fbGVuPC9wYXJh bWV0ZXI+IDx0eXBlPmJpZ2ludDwvdHlwZT4gKQorICAgICAgIDwvcGFyYT4KKyAgICAgICA8 cGFyYT4KKyAgICAgICAgUmVwb3J0cyBIT1QtaW5kZXhlZCBzdHJ1Y3R1cmFsIHN0YXRpc3Rp Y3MgZm9yIGEgdGFibGUgYnkgc2Nhbm5pbmcKKyAgICAgICAgZXZlcnkgcGFnZSB1bmRlciA8 bGl0ZXJhbD5BY2Nlc3NTaGFyZUxvY2s8L2xpdGVyYWw+OgorICAgICAgICA8cGFyYW1ldGVy Pm5faG90X2luZGV4ZWQ8L3BhcmFtZXRlcj4gaXMgdGhlIG51bWJlciBvZiBsaXZlCisgICAg ICAgIEhPVC1pbmRleGVkIHR1cGxlIHZlcnNpb25zIHByZXNlbnQsIGFuZAorICAgICAgICA8 cGFyYW1ldGVyPm5fY2hhaW5zPC9wYXJhbWV0ZXI+LCA8cGFyYW1ldGVyPmF2Z19jaGFpbl9s ZW48L3BhcmFtZXRlcj4KKyAgICAgICAgYW5kIDxwYXJhbWV0ZXI+bWF4X2NoYWluX2xlbjwv cGFyYW1ldGVyPiBkZXNjcmliZSB0aGUgSE9ULWluZGV4ZWQKKyAgICAgICAgY2hhaW5zLiAg SW50ZW5kZWQgZm9yIGRpYWdub3N0aWNzLgorICAgICAgIDwvcGFyYT48L2VudHJ5PgorICAg ICAgPC9yb3c+CisKICAgICAgIDxyb3c+CiAgICAgICAgPCEtLSBTZWUgYWxzbyB0aGUgZW50 cnkgZm9yIHRoaXMgaW4gZnVuYy5zZ21sIC0tPgogICAgICAgIDxlbnRyeSByb2xlPSJmdW5j X3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL01ha2VmaWxlCmluZGV4IDFkMjdjY2I5MTZlLi5kZmFmMzM1MDczNiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvTWFrZWZpbGUKQEAgLTIwLDYgKzIwLDcgQEAgT0JKUyA9IFwKIAlo ZWFwYW1feGxvZy5vIFwKIAloZWFwdG9hc3QubyBcCiAJaGlvLm8gXAorCWhvdF9pbmRleGVk X3N0YXRzLm8gXAogCXBydW5laGVhcC5vIFwKIAlyZXdyaXRlaGVhcC5vIFwKIAl2YWN1dW1s YXp5Lm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhP VC1JTkRFWEVEIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVC1JTkRFWEVE CmluZGV4IDFmNDFiMGZmZmU4Li4yZTVlNWY0YTA4MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVC1JTkRFWEVECisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRApAQCAtMjUyLDYgKzI1Miw5IEBAIEhFQVBf SU5ERVhFRF9VUERBVEVEIGhlYXAtb25seSB0dXBsZSB3aG9zZSBsaW5lIHBvaW50ZXIgaXMg cHJlc2VydmVkLCBhbmQKIG11bHRpcGxlIExQX1JFRElSRUNUcyBmb3J3YXJkaW5nIHRvIG9u ZSBsaXZlIHR1cGxlLgogCiBTdGF0aXN0aWNzOiBwZ19zdGF0X2FsbF90YWJsZXMubl90dXBf aG90X2luZGV4ZWRfdXBkIGNvdW50cyBIT1QtaW5kZXhlZAordXBkYXRlczsgcGdfc3RhdF9h bGxfaW5kZXhlcy5uX3R1cF9ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZCAvIF9za2lwcGVkIGNv dW50CitwZXItaW5kZXggcmVjaGVjayBvdXRjb21lczsgYW5kIHBnX3JlbGF0aW9uX2hvdF9p bmRleGVkX3N0YXRzKCkgcmVwb3J0cworcGVyLXJlbGF0aW9uIEhPVC1pbmRleGVkIGNoYWlu IGNvdW50cy4KIAogCiBBcHBlbmRpY2VzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9ob3RfaW5kZXhlZF9zdGF0cy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aG90X2luZGV4ZWRfc3RhdHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uNTdlZjk0NjE1NjIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9ob3RfaW5kZXhlZF9zdGF0cy5jCkBAIC0wLDAgKzEsMTg2IEBACisvKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAqCisgKiBob3RfaW5kZXhlZF9zdGF0cy5jCisgKgkgIFNRTC1j YWxsYWJsZSBkaWFnbm9zdGljIHRoYXQgd2Fsa3MgZXZlcnkgcGFnZSBvZiBhIGhlYXAgcmVs YXRpb24gYW5kCisgKgkgIHJlcG9ydHMgaG90LWluZGV4ZWQtcmVsYXRlZCBzdHJ1Y3R1cmFs IHN0YXRpc3RpY3MuCisgKgorICogVGhlc2UgbnVtYmVycyBjb21wbGVtZW50IHRoZSBydW5u aW5nIHBnc3RhdCBjb3VudGVycworICogKG5fdHVwX2hvdF9pbmRleGVkX3VwZCBpbiBwZ19z dGF0X2FsbF90YWJsZXMpOiB0aGV5IGFuc3dlciAid2hhdCBpcyBvbiBkaXNrCisgKiByaWdo dCBub3c/IiByYXRoZXIgdGhhbiAiaG93IG9mdGVuIGRpZCBob3QtaW5kZXhlZCBmaXJlIGR1 cmluZyB0aGUgc3RhdHMKKyAqIHdpbmRvdz8iLgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdo dCAoYykgMTk5Ni0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAor ICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hv dF9pbmRleGVkX3N0YXRzLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lu Y2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCisjaW5j bHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0 YWRkcmVzcy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImZt Z3IuaCIKKyNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisj aW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2J1ZnBhZ2Uu aCIKKyNpbmNsdWRlICJzdG9yYWdlL2l0ZW1wdHIuaCIKKyNpbmNsdWRlICJ1dGlscy9hY2wu aCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL3JlbC5o IgorCisvKgorICogcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMocmVnY2xhc3MpIC0+ IHJlY29yZAorICoKKyAqIFdhbGtzIGV2ZXJ5IGJsb2NrIG9mIHRoZSByZWxhdGlvbidzIG1h aW4gZm9yayBhbmQgY291bnRzOgorICogICBuX2hvdF9pbmRleGVkICAgLS0gbGl2ZSBIT1Qt aW5kZXhlZCB2ZXJzaW9ucyAoSEVBUF9JTkRFWEVEX1VQREFURUQsIG5hdHRzPjAsCisgKiAg ICAgICAgICAgICAgICAgICAgICBjYXJyeWluZyBhbiBpbmxpbmUtdHJhaWxpbmcgbW9kaWZp ZWQtYXR0cnMgYml0bWFwKQorICogICBuX2NoYWlucyAgICAgICAgLS0gTFBfUkVESVJFQ1Qg aXRlbXMsIGkuZS4gSE9UIGNoYWluIHJvb3RzLiAgTWF0Y2hlcworICogICAgICAgICAgICAg ICAgICAgICAgdGhlIG51bWJlciBvZiBkaXN0aW5jdCBIT1QgY2hhaW5zIHRoYXQgaGF2ZSBz dXJ2aXZlZAorICogICAgICAgICAgICAgICAgICAgICAgdGhlIG1vc3QgcmVjZW50IHBydW5l LiAgUm9vdC1ub3QtcmVkaXJlY3QgY2hhaW5zCisgKiAgICAgICAgICAgICAgICAgICAgICAo bGVuZ3RoIDEpIGFyZSBub3QgY291bnRlZCBoZXJlIGJlY2F1c2UgdGhleSBhcmUKKyAqICAg ICAgICAgICAgICAgICAgICAgIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gYSBub24tY2hhaW4g dHVwbGUuCisgKiAgIGF2Z19jaGFpbl9sZW4gICAtLSBtZWFuIGxlbmd0aCBhY3Jvc3MgY2hh aW5zIHJvb3RlZCBhdCBhbiBMUF9SRURJUkVDVCwKKyAqICAgICAgICAgICAgICAgICAgICAg IGRlcml2ZWQgYnkgd2Fsa2luZyBlYWNoIHJlZGlyZWN0IHRhcmdldCB0byB0aGUgZW5kCisg KiAgICAgICAgICAgICAgICAgICAgICBvZiBpdHMgSEVBUF9IT1RfVVBEQVRFRCBjaGFpbi4K KyAqICAgbWF4X2NoYWluX2xlbiAgIC0tIGxvbmdlc3QgY2hhaW4gb2JzZXJ2ZWQuCisgKgor ICogVGhlIGNhbGxlciBtdXN0IGhvbGQgU0VMRUNUIHByaXZpbGVnZSBvbiB0aGUgcmVsYXRp b24sIGxpa2Ugb3RoZXIKKyAqIHJlbGF0aW9uLWluc3BlY3Rpb24gZnVuY3Rpb25zOyBpdCB0 YWtlcyBvbmx5IEFjY2Vzc1NoYXJlTG9jayBhbmQgc2hvcnQtdGVybQorICogYnVmZmVyIHNo YXJlIGxvY2tzIHdoaWxlIHNjYW5uaW5nLgorICovCitEYXR1bQorcGdfcmVsYXRpb25faG90 X2luZGV4ZWRfc3RhdHMoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlPaWQJCQlyZWxpZCA9IFBH X0dFVEFSR19PSUQoMCk7CisJUmVsYXRpb24JcmVsOworCUFjbFJlc3VsdAlhY2xyZXN1bHQ7 CisJQmxvY2tOdW1iZXIgbmJsb2NrczsKKwlCbG9ja051bWJlciBibGs7CisJaW50NjQJCW5f aG90X2luZGV4ZWQgPSAwOworCWludDY0CQluX2NoYWlucyA9IDA7CisJaW50NjQJCXN1bV9j aGFpbl9sZW4gPSAwOworCWludDY0CQltYXhfY2hhaW5fbGVuID0gMDsKKwlUdXBsZURlc2MJ dHVwZGVzYzsKKwlEYXR1bQkJdmFsdWVzWzRdOworCWJvb2wJCW51bGxzWzRdID0gezB9Owor CUhlYXBUdXBsZQlyZXN1bHR0dXA7CisKKwlyZWwgPSByZWxhdGlvbl9vcGVuKHJlbGlkLCBB Y2Nlc3NTaGFyZUxvY2spOworCWlmIChyZWwtPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5E X1JFTEFUSU9OICYmCisJCXJlbC0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfTUFUVklF VyAmJgorCQlyZWwtPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1RPQVNUVkFMVUUpCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQ RSksCisJCQkJIGVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHRhYmxlLCBtYXRlcmlhbGl6ZWQg dmlldywgb3IgVE9BU1QgdGFibGUiLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cmVsKSkpKTsKKworCS8qIENhbGxlciBtdXN0IGJlIGFibGUgdG8gcmVhZCB0aGUgcmVsYXRp b24uICovCisJYWNscmVzdWx0ID0gcGdfY2xhc3NfYWNsY2hlY2socmVsaWQsIEdldFVzZXJJ ZCgpLCBBQ0xfU0VMRUNUKTsKKwlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQlh Y2xjaGVja19lcnJvcihhY2xyZXN1bHQsCisJCQkJCSAgIGdldF9yZWxraW5kX29ianR5cGUo cmVsLT5yZF9yZWwtPnJlbGtpbmQpLAorCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShyZWwpKTsKKworCW5ibG9ja3MgPSBSZWxhdGlvbkdldE51bWJlck9mQmxvY2tzKHJlbCk7 CisKKwlmb3IgKGJsayA9IDA7IGJsayA8IG5ibG9ja3M7IGJsaysrKQorCXsKKwkJQnVmZmVy CQlidWY7CisJCVBhZ2UJCXBhZ2U7CisJCU9mZnNldE51bWJlciBvZmY7CisJCU9mZnNldE51 bWJlciBtYXhvZmY7CisKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQlidWYgPSBS ZWFkQnVmZmVyRXh0ZW5kZWQocmVsLCBNQUlOX0ZPUktOVU0sIGJsaywgUkJNX05PUk1BTCwg TlVMTCk7CisJCUxvY2tCdWZmZXIoYnVmLCBCVUZGRVJfTE9DS19TSEFSRSk7CisJCXBhZ2Ug PSBCdWZmZXJHZXRQYWdlKGJ1Zik7CisKKwkJaWYgKFBhZ2VJc05ldyhwYWdlKSB8fCBQYWdl SXNFbXB0eShwYWdlKSkKKwkJeworCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWYpOworCQkJ Y29udGludWU7CisJCX0KKworCQltYXhvZmYgPSBQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHBh Z2UpOworCQlmb3IgKG9mZiA9IEZpcnN0T2Zmc2V0TnVtYmVyOyBvZmYgPD0gbWF4b2ZmOyBv ZmYgPSBPZmZzZXROdW1iZXJOZXh0KG9mZikpCisJCXsKKwkJCUl0ZW1JZAkJbHAgPSBQYWdl R2V0SXRlbUlkKHBhZ2UsIG9mZik7CisKKwkJCWlmICghSXRlbUlkSXNVc2VkKGxwKSkKKwkJ CQljb250aW51ZTsKKworCQkJaWYgKEl0ZW1JZElzUmVkaXJlY3RlZChscCkpCisJCQl7CisJ CQkJLyogV2FsayB0aGUgY2hhaW4gc3RhcnRpbmcgYXQgdGhlIHJlZGlyZWN0IHRhcmdldC4g Ki8KKwkJCQlPZmZzZXROdW1iZXIgY3VyID0gSXRlbUlkR2V0UmVkaXJlY3QobHApOworCQkJ CWludDY0CQlsZW4gPSAwOworCisJCQkJLyoKKwkJCQkgKiBXYWxrIHRoZSBzYW1lLXBhZ2Ug SE9UIGNoYWluLiAgQm91bmQgdGhlIGxvb3AgYnkgdGhlIHBhZ2UncworCQkJCSAqIGl0ZW0g Y291bnQgc28gYSBjb3JydXB0IGN5Y2xpYyB0X2N0aWQgY2Fubm90IHNwaW4gZm9yZXZlcgor CQkJCSAqIHVuZGVyIHRoZSBidWZmZXIgbG9jaywgYW5kIGNoZWNrIGZvciBpbnRlcnJ1cHRz IGVhY2ggc3RlcC4KKwkJCQkgKi8KKwkJCQl3aGlsZSAoY3VyID49IEZpcnN0T2Zmc2V0TnVt YmVyICYmIGN1ciA8PSBtYXhvZmYgJiYgbGVuIDwgbWF4b2ZmKQorCQkJCXsKKwkJCQkJSXRl bUlkCQljaGFpbl9scCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgY3VyKTsKKwkJCQkJSGVhcFR1 cGxlSGVhZGVyIHRoZHI7CisKKwkJCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQkJ CQlpZiAoIUl0ZW1JZElzTm9ybWFsKGNoYWluX2xwKSkKKwkJCQkJCWJyZWFrOworCQkJCQl0 aGRyID0gKEhlYXBUdXBsZUhlYWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgY2hhaW5fbHApOwor CQkJCQlsZW4rKzsKKwkJCQkJaWYgKCEodGhkci0+dF9pbmZvbWFzazIgJiBIRUFQX0hPVF9V UERBVEVEKSkKKwkJCQkJCWJyZWFrOworCQkJCQkvKiBIT1QgY2hhaW5zIHN0YXkgb24gb25l IHBhZ2U7IHN0b3AgaWYgdGhlIGxpbmsgbGVhdmVzIGl0LiAqLworCQkJCQlpZiAoSXRlbVBv aW50ZXJHZXRCbG9ja051bWJlcigmdGhkci0+dF9jdGlkKSAhPSBibGspCisJCQkJCQlicmVh azsKKwkJCQkJY3VyID0gSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoJnRoZHItPnRfY3Rp ZCk7CisJCQkJfQorCQkJCWlmIChsZW4gPiAwKQorCQkJCXsKKwkJCQkJbl9jaGFpbnMrKzsK KwkJCQkJc3VtX2NoYWluX2xlbiArPSBsZW47CisJCQkJCWlmIChsZW4gPiBtYXhfY2hhaW5f bGVuKQorCQkJCQkJbWF4X2NoYWluX2xlbiA9IGxlbjsKKwkJCQl9CisJCQl9CisJCQllbHNl IGlmIChJdGVtSWRJc05vcm1hbChscCkpCisJCQl7CisJCQkJSGVhcFR1cGxlSGVhZGVyIHRo ZHIgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBscCk7CisKKwkJCQlp ZiAoKHRoZHItPnRfaW5mb21hc2syICYgSEVBUF9JTkRFWEVEX1VQREFURUQpICE9IDApCisJ CQkJCW5faG90X2luZGV4ZWQrKzsKKwkJCX0KKwkJfQorCisJCVVubG9ja1JlbGVhc2VCdWZm ZXIoYnVmKTsKKwl9CisKKwlyZWxhdGlvbl9jbG9zZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7 CisKKwl0dXBkZXNjID0gQ3JlYXRlVGVtcGxhdGVUdXBsZURlc2MoNCk7CisJVHVwbGVEZXNj SW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAxLCAibl9ob3RfaW5kZXhlZCIsIElO VDhPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1i ZXIpIDIsICJuX2NoYWlucyIsIElOVDhPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NJbml0RW50 cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDMsICJhdmdfY2hhaW5fbGVuIiwgRkxPQVQ4T0lE LCAtMSwgMCk7CisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSA0 LCAibWF4X2NoYWluX2xlbiIsIElOVDhPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NGaW5hbGl6 ZSh0dXBkZXNjKTsKKwl0dXBkZXNjID0gQmxlc3NUdXBsZURlc2ModHVwZGVzYyk7CisKKwl2 YWx1ZXNbMF0gPSBJbnQ2NEdldERhdHVtKG5faG90X2luZGV4ZWQpOworCXZhbHVlc1sxXSA9 IEludDY0R2V0RGF0dW0obl9jaGFpbnMpOworCWlmIChuX2NoYWlucyA+IDApCisJCXZhbHVl c1syXSA9IEZsb2F0OEdldERhdHVtKCgoZG91YmxlKSBzdW1fY2hhaW5fbGVuKSAvIChkb3Vi bGUpIG5fY2hhaW5zKTsKKwllbHNlCisJCXZhbHVlc1syXSA9IEZsb2F0OEdldERhdHVtKDAu MCk7CisJdmFsdWVzWzNdID0gSW50NjRHZXREYXR1bShtYXhfY2hhaW5fbGVuKTsKKworCXJl c3VsdHR1cCA9IGhlYXBfZm9ybV90dXBsZSh0dXBkZXNjLCB2YWx1ZXMsIG51bGxzKTsKKwlQ R19SRVRVUk5fREFUVU0oSGVhcFR1cGxlR2V0RGF0dW0ocmVzdWx0dHVwKSk7Cit9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9tZXNvbi5idWlsZCBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL21lc29uLmJ1aWxkCmluZGV4IDAwZWMwN2Q3ZjMwLi5iNWMyYThk NWNiNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvbWVzb24uYnVpbGQK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvbWVzb24uYnVpbGQKQEAgLTgsNiArOCw3 IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAgJ2hlYXBhbV94bG9nLmMnLAogICAn aGVhcHRvYXN0LmMnLAogICAnaGlvLmMnLAorICAnaG90X2luZGV4ZWRfc3RhdHMuYycsCiAg ICdwcnVuZWhlYXAuYycsCiAgICdyZXdyaXRlaGVhcC5jJywKICAgJ3ZhY3V1bWxhenkuYycs CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9z cmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggOGYxMjliYWVjOTAu LjRlYTFmYzAwNjU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92 aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBA IC03MzAsNiArNzMwLDcgQEAgQ1JFQVRFIFZJRVcgcGdfc3RhdF9hbGxfdGFibGVzIEFTCiAg ICAgICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfdXBkYXRlZChDLm9pZCkgQVMgbl90dXBf dXBkLAogICAgICAgICAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX2RlbGV0ZWQoQy5vaWQpIEFT IG5fdHVwX2RlbCwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRl ZChDLm9pZCkgQVMgbl90dXBfaG90X3VwZCwKKyAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3R1 cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkKEMub2lkKSBBUyBuX3R1cF9ob3RfaW5kZXhlZF91 cGQsCiAgICAgICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfbmV3cGFnZV91cGRhdGVkKEMu b2lkKSBBUyBuX3R1cF9uZXdwYWdlX3VwZCwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2xp dmVfdHVwbGVzKEMub2lkKSBBUyBuX2xpdmVfdHVwLAogICAgICAgICAgICAgcGdfc3RhdF9n ZXRfZGVhZF90dXBsZXMoQy5vaWQpIEFTIG5fZGVhZF90dXAsCkBAIC03NjgsNiArNzY5LDcg QEAgQ1JFQVRFIFZJRVcgcGdfc3RhdF94YWN0X2FsbF90YWJsZXMgQVMKICAgICAgICAgICAg IHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQoQy5vaWQpIEFTIG5fdHVwX3VwZCwK ICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2RlbGV0ZWQoQy5vaWQpIEFT IG5fdHVwX2RlbCwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91 cGRhdGVkKEMub2lkKSBBUyBuX3R1cF9ob3RfdXBkLAorICAgICAgICAgICAgcGdfc3RhdF9n ZXRfeGFjdF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZChDLm9pZCkgQVMgbl90dXBfaG90 X2luZGV4ZWRfdXBkLAogICAgICAgICAgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfbmV3 cGFnZV91cGRhdGVkKEMub2lkKSBBUyBuX3R1cF9uZXdwYWdlX3VwZAogICAgIEZST00gcGdf Y2xhc3MgQyBMRUZUIEpPSU4KICAgICAgICAgIHBnX2luZGV4IEkgT04gQy5vaWQgPSBJLmlu ZHJlbGlkCkBAIC04NjksNiArODcxLDggQEAgQ1JFQVRFIFZJRVcgcGdfc3RhdF9hbGxfaW5k ZXhlcyBBUwogICAgICAgICAgICAgcGdfc3RhdF9nZXRfbGFzdHNjYW4oSS5vaWQpIEFTIGxh c3RfaWR4X3NjYW4sCiAgICAgICAgICAgICBwZ19zdGF0X2dldF90dXBsZXNfcmV0dXJuZWQo SS5vaWQpIEFTIGlkeF90dXBfcmVhZCwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3R1cGxl c19mZXRjaGVkKEkub2lkKSBBUyBpZHhfdHVwX2ZldGNoLAorICAgICAgICAgICAgcGdfc3Rh dF9nZXRfdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWRfc2tpcHBlZChJLm9pZCkgQVMgbl90 dXBfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQsCisgICAgICAgICAgICBwZ19zdGF0X2dldF90 dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZF9tYXRjaGVkKEkub2lkKSBBUyBuX3R1cF9ob3Rf aW5kZXhlZF91cGRfbWF0Y2hlZCwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3N0YXRfcmVz ZXRfdGltZShJLm9pZCkgQVMgc3RhdHNfcmVzZXQKICAgICBGUk9NIHBnX2NsYXNzIEMgSk9J TgogICAgICAgICAgICAgcGdfaW5kZXggWCBPTiBDLm9pZCA9IFguaW5kcmVsaWQgSk9JTgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwppbmRleCAwYzZhMjA4NDNhNS4uOGVk OGU0ZmY3NjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5j cy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCkBAIC05Myw2 ICs5MywxNSBAQCBQR19TVEFUX0dFVF9SRUxFTlRSWV9JTlQ2NCh0dXBsZXNfZmV0Y2hlZCkK IC8qIHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZCAqLwogUEdfU1RBVF9HRVRfUkVM RU5UUllfSU5UNjQodHVwbGVzX2hvdF91cGRhdGVkKQogCisvKiBwZ19zdGF0X2dldF90dXBs ZXNfaG90X2luZGV4ZWRfdXBkYXRlZCAqLworUEdfU1RBVF9HRVRfUkVMRU5UUllfSU5UNjQo dHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQpCisKKy8qIHBnX3N0YXRfZ2V0X3R1cGxlc19o b3RfaW5kZXhlZF91cGRhdGVkX3NraXBwZWQgKi8KK1BHX1NUQVRfR0VUX1JFTEVOVFJZX0lO VDY0KHR1cGxlc19ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCkKKworLyogcGdfc3RhdF9nZXRf dHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWRfbWF0Y2hlZCAqLworUEdfU1RBVF9HRVRfUkVM RU5UUllfSU5UNjQodHVwbGVzX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkKQorCiAvKiBwZ19z dGF0X2dldF90dXBsZXNfbmV3cGFnZV91cGRhdGVkICovCiBQR19TVEFUX0dFVF9SRUxFTlRS WV9JTlQ2NCh0dXBsZXNfbmV3cGFnZV91cGRhdGVkKQogCkBAIC0xODg4LDYgKzE4OTcsOSBA QCBQR19TVEFUX0dFVF9YQUNUX1JFTEVOVFJZX0lOVDY0KHR1cGxlc19mZXRjaGVkKQogLyog cGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgKi8KIFBHX1NUQVRfR0VUX1hB Q1RfUkVMRU5UUllfSU5UNjQodHVwbGVzX2hvdF91cGRhdGVkKQogCisvKiBwZ19zdGF0X2dl dF94YWN0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkICovCitQR19TVEFUX0dFVF9YQUNU X1JFTEVOVFJZX0lOVDY0KHR1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkKQorCiAvKiBwZ19z dGF0X2dldF94YWN0X3R1cGxlc19uZXdwYWdlX3VwZGF0ZWQgKi8KIFBHX1NUQVRfR0VUX1hB Q1RfUkVMRU5UUllfSU5UNjQodHVwbGVzX25ld3BhZ2VfdXBkYXRlZCkKIApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQKaW5kZXggOWUyNGIyZjYyOTkuLjlhOTg0MThhYjdkIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTU1OTQsNiArNTU5NCwyOSBAQAogICBwcm9uYW1l ID0+ICdwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQnLCBwcm92b2xhdGlsZSA9PiAn cycsCiAgIHByb3BhcmFsbGVsID0+ICdyJywgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2Fy Z3R5cGVzID0+ICdvaWQnLAogICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X3R1cGxlc19ob3Rf dXBkYXRlZCcgfSwKK3sgb2lkID0+ICc5OTUzJywKKyAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6 IG51bWJlciBvZiB0dXBsZXMgdXBkYXRlZCB2aWEgSE9ULWluZGV4ZWQgKFNlbGVjdGl2ZSBJ bmRleCBVcGRhdGUpJywKKyAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfdHVwbGVzX2hvdF9p bmRleGVkX3VwZGF0ZWQnLCBwcm92b2xhdGlsZSA9PiAncycsCisgIHByb3BhcmFsbGVsID0+ ICdyJywgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAorICBw cm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkJyB9LAor eyBvaWQgPT4gJzk5NTYnLAorICBkZXNjciA9PiAnc3RhdGlzdGljczogbnVtYmVyIG9mIEhP VC1pbmRleGVkIHVwZGF0ZXMgdGhhdCBza2lwcGVkIHRoaXMgaW5kZXgnLAorICBwcm9uYW1l ID0+ICdwZ19zdGF0X2dldF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZF9za2lwcGVkJywg cHJvdm9sYXRpbGUgPT4gJ3MnLAorICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUg PT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKKyAgcHJvc3JjID0+ICdwZ19zdGF0 X2dldF90dXBsZXNfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQnIH0sCit7IG9pZCA9PiAnOTk1 NycsCisgIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBudW1iZXIgb2YgSE9ULWluZGV4ZWQgdXBk YXRlcyB0aGF0IGluc2VydGVkIGludG8gdGhpcyBpbmRleCcsCisgIHByb25hbWUgPT4gJ3Bn X3N0YXRfZ2V0X3R1cGxlc19ob3RfaW5kZXhlZF91cGRhdGVkX21hdGNoZWQnLCBwcm92b2xh dGlsZSA9PiAncycsCisgIHByb3BhcmFsbGVsID0+ICdyJywgcHJvcmV0dHlwZSA9PiAnaW50 OCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAorICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X3R1 cGxlc19ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZCcgfSwKK3sgb2lkID0+ICc5OTU1JywKKyAg ZGVzY3IgPT4gJ0hPVC1pbmRleGVkIHN0cnVjdHVyYWwgc3RhdHM6IEhPVC1pbmRleGVkIHZl cnNpb25zIGFuZCBjaGFpbiBsZW5ndGhzJywKKyAgcHJvbmFtZSA9PiAncGdfcmVsYXRpb25f aG90X2luZGV4ZWRfc3RhdHMnLCBwcm92b2xhdGlsZSA9PiAndicsCisgIHByb3BhcmFsbGVs ID0+ICdyJywgcHJvcmV0dHlwZSA9PiAncmVjb3JkJywgcHJvYXJndHlwZXMgPT4gJ3JlZ2Ns YXNzJywKKyAgcHJvYWxsYXJndHlwZXMgPT4gJ3tyZWdjbGFzcyxpbnQ4LGludDgsZmxvYXQ4 LGludDh9JywKKyAgcHJvYXJnbW9kZXMgPT4gJ3tpLG8sbyxvLG99JywKKyAgcHJvYXJnbmFt ZXMgPT4gJ3tyZWxhdGlvbixuX2hvdF9pbmRleGVkLG5fY2hhaW5zLGF2Z19jaGFpbl9sZW4s bWF4X2NoYWluX2xlbn0nLAorICBwcm9zcmMgPT4gJ3BnX3JlbGF0aW9uX2hvdF9pbmRleGVk X3N0YXRzJyB9LAogeyBvaWQgPT4gJzYyMTcnLAogICBkZXNjciA9PiAnc3RhdGlzdGljczog bnVtYmVyIG9mIHR1cGxlcyB1cGRhdGVkIG9udG8gYSBuZXcgcGFnZScsCiAgIHByb25hbWUg PT4gJ3BnX3N0YXRfZ2V0X3R1cGxlc19uZXdwYWdlX3VwZGF0ZWQnLCBwcm92b2xhdGlsZSA9 PiAncycsCkBAIC02MTcxLDYgKzYxOTQsMTEgQEAKICAgcHJvbmFtZSA9PiAncGdfc3RhdF9n ZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQnLCBwcm92b2xhdGlsZSA9PiAndicsCiAgIHBy b3BhcmFsbGVsID0+ICdyJywgcHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ ICdvaWQnLAogICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRh dGVkJyB9LAoreyBvaWQgPT4gJzk5NTQnLAorICBkZXNjciA9PiAnc3RhdGlzdGljczogbnVt YmVyIG9mIEhPVC1pbmRleGVkIHR1cGxlIHVwZGF0ZXMgaW4gY3VycmVudCB0cmFuc2FjdGlv bicsCisgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF9pbmRleGVk X3VwZGF0ZWQnLCBwcm92b2xhdGlsZSA9PiAndicsCisgIHByb3BhcmFsbGVsID0+ICdyJywg cHJvcmV0dHlwZSA9PiAnaW50OCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAorICBwcm9zcmMg PT4gJ3BnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQnIH0sCiB7 IG9pZCA9PiAnNjIxOCcsCiAgIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBudW1iZXIgb2YgdHVw bGVzIHVwZGF0ZWQgb250byBhIG5ldyBwYWdlIGluIGN1cnJlbnQgdHJhbnNhY3Rpb24nLAog ICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF94YWN0X3R1cGxlc19uZXdwYWdlX3VwZGF0ZWQn LCBwcm92b2xhdGlsZSA9PiAndicsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24v ZXhwZWN0ZWQvaG90X2luZGV4ZWRfYWR2ZXJzYXJpYWwub3V0IGIvc3JjL3Rlc3QvaXNvbGF0 aW9uL2V4cGVjdGVkL2hvdF9pbmRleGVkX2FkdmVyc2FyaWFsLm91dApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjJmNjI4MDE1MTMKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvaG90X2luZGV4ZWRfYWR2ZXJzYXJp YWwub3V0CkBAIC0wLDAgKzEsMTM5IEBACitQYXJzZWQgdGVzdCBzcGVjIHdpdGggNiBzZXNz aW9ucworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczJfbm9zZXEgczFfY3ljbGUgczJfZXEx MCBzMl9lcTIwCitzdGVwIHMyX25vc2VxOiBTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7Citz dGVwIHMxX2N5Y2xlOiBVUERBVEUgaGlhIFNFVCBrID0gMjAgV0hFUkUgaWQgPSAxOyBVUERB VEUgaGlhIFNFVCBrID0gMTAgV0hFUkUgaWQgPSAxOworc3RlcCBzMl9lcTEwOiBTRUxFQ1Qg aWQsIGsgRlJPTSBoaWEgV0hFUkUgayA9IDEwOworaWR8IGsKKy0tKy0tCisgMXwxMAorKDEg cm93KQorCitzdGVwIHMyX2VxMjA6IFNFTEVDVCBpZCwgayBGUk9NIGhpYSBXSEVSRSBrID0g MjA7CitpZHxrCistLSstCisoMCByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBz Ml9ub3NlcSBzMV9jeWNsZSBzMl9yYW5nZQorc3RlcCBzMl9ub3NlcTogU0VUIGVuYWJsZV9z ZXFzY2FuID0gb2ZmOworc3RlcCBzMV9jeWNsZTogVVBEQVRFIGhpYSBTRVQgayA9IDIwIFdI RVJFIGlkID0gMTsgVVBEQVRFIGhpYSBTRVQgayA9IDEwIFdIRVJFIGlkID0gMTsKK3N0ZXAg czJfcmFuZ2U6IFNFTEVDVCBpZCwgayBGUk9NIGhpYSBXSEVSRSBrID49IDUgT1JERVIgQlkg azsKK2lkfCBrCistLSstLQorIDF8MTAKKygxIHJvdykKKworCitzdGFydGluZyBwZXJtdXRh dGlvbjogczJfbm9zZXEgczFfYmVnaW4gczFfdXBkMjAgczFfYWJvcnQgczJfZXEyMCBzMl9l cTEwCitzdGVwIHMyX25vc2VxOiBTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitzdGVwIHMx X2JlZ2luOiBCRUdJTjsKK3N0ZXAgczFfdXBkMjA6IFVQREFURSBoaWEgU0VUIGsgPSAyMCBX SEVSRSBpZCA9IDE7CitzdGVwIHMxX2Fib3J0OiBST0xMQkFDSzsKK3N0ZXAgczJfZXEyMDog U0VMRUNUIGlkLCBrIEZST00gaGlhIFdIRVJFIGsgPSAyMDsKK2lkfGsKKy0tKy0KKygwIHJv d3MpCisKK3N0ZXAgczJfZXExMDogU0VMRUNUIGlkLCBrIEZST00gaGlhIFdIRVJFIGsgPSAx MDsKK2lkfCBrCistLSstLQorIDF8MTAKKygxIHJvdykKKworCitzdGFydGluZyBwZXJtdXRh dGlvbjogczFfYmVnaW4gczFfdXVwZDIwIHMyX2luczEwIHMxX2NvbW1pdAorc3RlcCBzMV9i ZWdpbjogQkVHSU47CitzdGVwIHMxX3V1cGQyMDogVVBEQVRFIGhpdSBTRVQgayA9IDIwIFdI RVJFIGlkID0gMTsKK3N0ZXAgczJfaW5zMTA6IElOU0VSVCBJTlRPIGhpdSBWQUxVRVMgKDIs IDEwLCByZXBlYXQoJ3knLCA0MCkpOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxX2NvbW1pdDog Q09NTUlUOworc3RlcCBzMl9pbnMxMDogPC4uLiBjb21wbGV0ZWQ+CisKK3N0YXJ0aW5nIHBl cm11dGF0aW9uOiBzMV9iZWdpbiBzMV91dXBkMjAgczFfY29tbWl0IHMyX2luczEwCitzdGVw IHMxX2JlZ2luOiBCRUdJTjsKK3N0ZXAgczFfdXVwZDIwOiBVUERBVEUgaGl1IFNFVCBrID0g MjAgV0hFUkUgaWQgPSAxOworc3RlcCBzMV9jb21taXQ6IENPTU1JVDsKK3N0ZXAgczJfaW5z MTA6IElOU0VSVCBJTlRPIGhpdSBWQUxVRVMgKDIsIDEwLCByZXBlYXQoJ3knLCA0MCkpOwor CitzdGFydGluZyBwZXJtdXRhdGlvbjogczFfYmVnaW4gczFfdXVwZDIwIHMxX2NvbW1pdCBz Ml9pbnMyMAorc3RlcCBzMV9iZWdpbjogQkVHSU47CitzdGVwIHMxX3V1cGQyMDogVVBEQVRF IGhpdSBTRVQgayA9IDIwIFdIRVJFIGlkID0gMTsKK3N0ZXAgczFfY29tbWl0OiBDT01NSVQ7 CitzdGVwIHMyX2luczIwOiBJTlNFUlQgSU5UTyBoaXUgVkFMVUVTICgzLCAyMCwgcmVwZWF0 KCd6JywgNDApKTsKK0VSUk9SOiAgZHVwbGljYXRlIGtleSB2YWx1ZSB2aW9sYXRlcyB1bmlx dWUgY29uc3RyYWludCAiaGl1X2siCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzM19iZWdp biBzM19lcTEwIHMyX3RvMzAgczJfc2NhbjMwIHMzX2VxMTAgczNfY29tbWl0CitzdGVwIHMz X2JlZ2luOiBCRUdJTiBJU09MQVRJT04gTEVWRUwgUkVQRUFUQUJMRSBSRUFEOyBTRVQgZW5h YmxlX3NlcXNjYW4gPSBvZmY7CitzdGVwIHMzX2VxMTA6IFNFTEVDVCBpZCwgayBGUk9NIGhp YSBXSEVSRSBrID0gMTA7CitpZHwgaworLS0rLS0KKyAxfDEwCisoMSByb3cpCisKK3N0ZXAg czJfdG8zMDogVVBEQVRFIGhpYSBTRVQgayA9IDIwIFdIRVJFIGlkID0gMTsgVVBEQVRFIGhp YSBTRVQgayA9IDMwIFdIRVJFIGlkID0gMTsKK3N0ZXAgczJfc2NhbjMwOiBTRVQgZW5hYmxl X3NlcXNjYW4gPSBvZmY7IFNFTEVDVCBpZCwgayBGUk9NIGhpYSBXSEVSRSBrID0gMzA7Citp ZHwgaworLS0rLS0KKyAxfDMwCisoMSByb3cpCisKK3N0ZXAgczNfZXExMDogU0VMRUNUIGlk LCBrIEZST00gaGlhIFdIRVJFIGsgPSAxMDsKK2lkfCBrCistLSstLQorIDF8MTAKKygxIHJv dykKKworc3RlcCBzM19jb21taXQ6IENPTU1JVDsKKworc3RhcnRpbmcgcGVybXV0YXRpb246 IGIxX2JlZ2luIGIxX3NuYXAgYjJfdXBkYXRlIGIyX3ZhY3V1bSBiMV9zbmFwIGIxX2NvbW1p dCBiM19zZXEKK3N0ZXAgYjFfYmVnaW46IEJFR0lOOworc3RlcCBiMV9zbmFwOiBTRUxFQ1Qg aWQsIHYgRlJPTSBoaWIgV0hFUkUgdiA9IDQwMDsKK2lkfCAgdgorLS0rLS0tCisgMXw0MDAK KygxIHJvdykKKworc3RlcCBiMl91cGRhdGU6IFVQREFURSBoaWIgU0VUIHYgPSA1MDAgV0hF UkUgaWQgPSAxOworc3RlcCBiMl92YWN1dW06IFZBQ1VVTSAoSU5ERVhfQ0xFQU5VUCBvZmYp IGhpYjsKK3N0ZXAgYjFfc25hcDogU0VMRUNUIGlkLCB2IEZST00gaGliIFdIRVJFIHYgPSA0 MDA7CitpZHx2CistLSstCisoMCByb3dzKQorCitzdGVwIGIxX2NvbW1pdDogQ09NTUlUOwor c3RlcCBiM19zZXE6IFNFTEVDVCBpZCwgdiBGUk9NIGhpYiBPUkRFUiBCWSBpZDsKK2lkfCAg dgorLS0rLS0tCisgMXw1MDAKKyAyfCAyMAorIDN8IDMwCisgNHwgNDAKKyA1fCA1MAorKDUg cm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogYjFfYmVnaW4gYjJfdXBkYXRlIGIx X3NuYXAgYjJfdmFjdXVtIGIxX3NuYXAgYjFfY29tbWl0IGIzX3NlcQorc3RlcCBiMV9iZWdp bjogQkVHSU47CitzdGVwIGIyX3VwZGF0ZTogVVBEQVRFIGhpYiBTRVQgdiA9IDUwMCBXSEVS RSBpZCA9IDE7CitzdGVwIGIxX3NuYXA6IFNFTEVDVCBpZCwgdiBGUk9NIGhpYiBXSEVSRSB2 ID0gNDAwOworaWR8dgorLS0rLQorKDAgcm93cykKKworc3RlcCBiMl92YWN1dW06IFZBQ1VV TSAoSU5ERVhfQ0xFQU5VUCBvZmYpIGhpYjsKK3N0ZXAgYjFfc25hcDogU0VMRUNUIGlkLCB2 IEZST00gaGliIFdIRVJFIHYgPSA0MDA7CitpZHx2CistLSstCisoMCByb3dzKQorCitzdGVw IGIxX2NvbW1pdDogQ09NTUlUOworc3RlcCBiM19zZXE6IFNFTEVDVCBpZCwgdiBGUk9NIGhp YiBPUkRFUiBCWSBpZDsKK2lkfCAgdgorLS0rLS0tCisgMXw1MDAKKyAyfCAyMAorIDN8IDMw CisgNHwgNDAKKyA1fCA1MAorKDUgcm93cykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNv bGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZSBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRp b25fc2NoZWR1bGUKaW5kZXggYjhlYmU5MjU1M2MuLmU5YWZiNDgxOTllIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0 L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKQEAgLTEyOCwzICsxMjgsNCBAQCB0ZXN0 OiBtYXR2aWV3LXdyaXRlLXNrZXcKIHRlc3Q6IGxvY2stbm93YWl0CiB0ZXN0OiBmb3ItcG9y dGlvbi1vZgogdGVzdDogZGRsLWRlcGVuZGVuY3ktbG9ja2luZwordGVzdDogaG90X2luZGV4 ZWRfYWR2ZXJzYXJpYWwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9o b3RfaW5kZXhlZF9hZHZlcnNhcmlhbC5zcGVjIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNz L2hvdF9pbmRleGVkX2FkdmVyc2FyaWFsLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjY0NzA1YmYzN2UwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvaXNvbGF0aW9uL3NwZWNzL2hvdF9pbmRleGVkX2FkdmVyc2FyaWFsLnNwZWMKQEAgLTAs MCArMSwxMjMgQEAKKyMgQWR2ZXJzYXJpYWwgY29ycmVjdG5lc3MgdGVzdHMgZm9yIEhPVC1p bmRleGVkIChTSVUpIHVwZGF0ZXMuCisjCisjIEVhY2ggcGVybXV0YXRpb24gcGlucyBhIGNh c2UgdGhhdCB0aGUgbWlkLWNoYWluLXBvaW50aW5nIGludmFyaWFudCBtdXN0CisjIHNhdGlz Znk6IGFuIGluZGV4IGVudHJ5IHBvaW50cyBhdCB0aGUgaGVhcC1vbmx5IHZlcnNpb24gd2hv c2Uga2V5IGl0CisjIG1hdGNoZWQsIGFuZCBhIGNoYWluIHdhbGsgdGhhdCBjcm9zc2VzIGEg SE9ULWluZGV4ZWQgaG9wIGRyb3BzIHRoZSBhcnJpdmluZworIyBlbnRyeSB3aGVuIHRoZSBj cm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgb3ZlcmxhcHMgdGhlIGluZGV4J3Mga2V5IGNvbHVt bnMKKyMgKG5vIGtleSBjb21wYXJpc29uKS4gIFRoZXNlIGFyZQorIyBleGFjdGx5IHRoZSBj YXNlcyB0aGF0IGhpc3RvcmljYWxseSBicm9rZSB3cml0ZS1hbXBsaWZpY2F0aW9uLXJlZHVj dGlvbgorIyBkZXNpZ25zLgorCitzZXR1cAoreworICAgIENSRUFURSBUQUJMRSBoaWEgKGlk IGludCBQUklNQVJZIEtFWSwgayBpbnQsIHBhZCB0ZXh0KSBXSVRIIChmaWxsZmFjdG9yID0g NDApOworICAgIENSRUFURSBJTkRFWCBoaWFfayBPTiBoaWEoayk7CisgICAgQ1JFQVRFIFRB QkxFIGhpdSAoaWQgaW50IFBSSU1BUlkgS0VZLCBrIGludCwgcGFkIHRleHQpIFdJVEggKGZp bGxmYWN0b3IgPSA0MCk7CisgICAgQ1JFQVRFIFVOSVFVRSBJTkRFWCBoaXVfayBPTiBoaXUo ayk7CisgICAgSU5TRVJUIElOVE8gaGlhIFZBTFVFUyAoMSwgMTAsIHJlcGVhdCgneCcsIDQw KSk7CisgICAgSU5TRVJUIElOVE8gaGl1IFZBTFVFUyAoMSwgMTAsIHJlcGVhdCgneCcsIDQw KSk7CisKKyAgICAtLSBUYWJsZSBmb3IgdGhlIGNvbmN1cnJlbnQtY29sbGFwc2UgcmVhZGVy LWNvbnNpc3RlbmN5IGNhc2UgKDcpLgorICAgIENSRUFURSBUQUJMRSBoaWIgKGlkIGludCBQ UklNQVJZIEtFWSwgdiBpbnQsIHBhZCB0ZXh0KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor ICAgIENSRUFURSBJTkRFWCBoaWJfdl9pZHggT04gaGliKHYpOworICAgIElOU0VSVCBJTlRP IGhpYiBTRUxFQ1QgZywgZyAqIDEwLCByZXBlYXQoJ3gnLCA1MCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgNSkgZzsKKyAgICBVUERBVEUgaGliIFNFVCB2ID0gMTAwIFdIRVJFIGlkID0g MTsKKyAgICBVUERBVEUgaGliIFNFVCB2ID0gMjAwIFdIRVJFIGlkID0gMTsKKyAgICBVUERB VEUgaGliIFNFVCB2ID0gMzAwIFdIRVJFIGlkID0gMTsKKyAgICBVUERBVEUgaGliIFNFVCB2 ID0gNDAwIFdIRVJFIGlkID0gMTsKK30KKwordGVhcmRvd24KK3sKKyAgICBEUk9QIFRBQkxF IGhpYTsKKyAgICBEUk9QIFRBQkxFIGhpdTsKKyAgICBEUk9QIFRBQkxFIGhpYjsKK30KKwor c2Vzc2lvbiBzMQorc3RlcCBzMV9iZWdpbiAgIHsgQkVHSU47IH0KKyMgQ3ljbGUgdGhlIGlu ZGV4ZWQga2V5IGF3YXkgYW5kIGJhY2s6IDEwIC0+IDIwIC0+IDEwLiAgVGhlIG9yaWdpbmFs IDEwIGxlYWYKKyMgYW5kIHRoZSBmcmVzaGx5LWluc2VydGVkIDEwIGxlYWYgYm90aCByZXNv bHZlIHRvIHRoZSBsaXZlIHR1cGxlOyB0aGUgY2hhaW4KKyMgd2FsayBtdXN0IGRyb3AgdGhl IHN0YWxlIG9uZSBzbyBhIGxvb2t1cCByZXR1cm5zIHRoZSByb3cgZXhhY3RseSBvbmNlLgor c3RlcCBzMV9jeWNsZSAgIHsgVVBEQVRFIGhpYSBTRVQgayA9IDIwIFdIRVJFIGlkID0gMTsg VVBEQVRFIGhpYSBTRVQgayA9IDEwIFdIRVJFIGlkID0gMTsgfQorIyBBIHNpbmdsZSBIT1Qt aW5kZXhlZCB1cGRhdGUgb24gaGlhLCB1c2VkIGJ5IHRoZSBhYm9ydCBhbmQgcmVhZGVyIGNh c2VzLgorc3RlcCBzMV91cGQyMCAgIHsgVVBEQVRFIGhpYSBTRVQgayA9IDIwIFdIRVJFIGlk ID0gMTsgfQorIyBBIEhPVC1pbmRleGVkIHVwZGF0ZSBvbiB0aGUgVU5JUVVFLWluZGV4ZWQg dGFibGUsIGZyZWVpbmcga2V5IDEwIGZvciBrPTIwLgorc3RlcCBzMV91dXBkMjAgIHsgVVBE QVRFIGhpdSBTRVQgayA9IDIwIFdIRVJFIGlkID0gMTsgfQorc3RlcCBzMV9jb21taXQgIHsg Q09NTUlUOyB9CitzdGVwIHMxX2Fib3J0ICAgeyBST0xMQkFDSzsgfQorCitzZXNzaW9uIHMy CisjIEluZGV4LW9ubHkgbG9va3VwcyAoZm9yY2VkKSB0aGF0IGV4ZXJjaXNlIHRoZSBzdGFs ZS1sZWFmIHJlY2hlY2suCitzdGVwIHMyX25vc2VxICAgeyBTRVQgZW5hYmxlX3NlcXNjYW4g PSBvZmY7IH0KK3N0ZXAgczJfZXExMCAgICB7IFNFTEVDVCBpZCwgayBGUk9NIGhpYSBXSEVS RSBrID0gMTA7IH0KK3N0ZXAgczJfZXEyMCAgICB7IFNFTEVDVCBpZCwgayBGUk9NIGhpYSBX SEVSRSBrID0gMjA7IH0KK3N0ZXAgczJfcmFuZ2UgICB7IFNFTEVDVCBpZCwgayBGUk9NIGhp YSBXSEVSRSBrID49IDUgT1JERVIgQlkgazsgfQorIyBDb25jdXJyZW50IHVuaXF1ZSBpbnNl cnQgb2YgdGhlIGtleSBzMSBpcyBmcmVlaW5nICgxMCkgYW5kIG9mIHRoZSBrZXkgczEgaXMK KyMgdGFraW5nICgyMCk7IF9idF9jaGVja191bmlxdWUgbXVzdCBmaWx0ZXIgdGhlIHN0YWxl IDEwIGxlYWYgYnV0IHN0aWxsCisjIGNvbmZsaWN0IG9uIHRoZSBsaXZlIGtleS4KK3N0ZXAg czJfaW5zMTAgICB7IElOU0VSVCBJTlRPIGhpdSBWQUxVRVMgKDIsIDEwLCByZXBlYXQoJ3kn LCA0MCkpOyB9CitzdGVwIHMyX2luczIwICAgeyBJTlNFUlQgSU5UTyBoaXUgVkFMVUVTICgz LCAyMCwgcmVwZWF0KCd6JywgNDApKTsgfQorIyBNb3ZlIHRoZSBpbmRleGVkIGtleSB3ZWxs IGF3YXkgZnJvbSAxMCAodHdvIEhPVC1pbmRleGVkIGhvcHMpIGFuZCBmb3JjZSBhbgorIyBp bmRleCBzY2FuIG9uIHRoZSBuZXcga2V5LiAgVGhhdCBzY2FuIHJlYWNoZXMgdGhlIGxpdmUg dHVwbGUgdGhyb3VnaCB0aGUKKyMgc3RhbGUgMTAgbGVhZiBhbmQgbWF5IHRyeSB0byBraWxs IGl0IGZvciBibG9hdCByZWNsYWltLgorc3RlcCBzMl90bzMwICAgIHsgVVBEQVRFIGhpYSBT RVQgayA9IDIwIFdIRVJFIGlkID0gMTsgVVBEQVRFIGhpYSBTRVQgayA9IDMwIFdIRVJFIGlk ID0gMTsgfQorc3RlcCBzMl9zY2FuMzAgIHsgU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOyBT RUxFQ1QgaWQsIGsgRlJPTSBoaWEgV0hFUkUgayA9IDMwOyB9CisKKyMgUmVhZGVyIGhvbGRp bmcgYW4gb2xkZXIgUkVQRUFUQUJMRSBSRUFEIHNuYXBzaG90IHRoYXQgc3RpbGwgc2VlcyBr PTEwLgorc2Vzc2lvbiBzMworc3RlcCBzM19iZWdpbiAgIHsgQkVHSU4gSVNPTEFUSU9OIExF VkVMIFJFUEVBVEFCTEUgUkVBRDsgU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOyB9CitzdGVw IHMzX2VxMTAgICAgeyBTRUxFQ1QgaWQsIGsgRlJPTSBoaWEgV0hFUkUgayA9IDEwOyB9Citz dGVwIHMzX2NvbW1pdCAgeyBDT01NSVQ7IH0KKworc2Vzc2lvbiBiMQorc3RlcCBiMV9iZWdp biAgIHsgQkVHSU47IH0KKyMgUmVhZGVyIHRha2VzIGEgc25hcHNob3QgYW5kIHJlYWRzIHRo ZSBjaGFpbiB2aWEgdGhlIHNlY29uZGFyeSBpbmRleC4KK3N0ZXAgYjFfc25hcCAgICB7IFNF TEVDVCBpZCwgdiBGUk9NIGhpYiBXSEVSRSB2ID0gNDAwOyB9CitzdGVwIGIxX2NvbW1pdCAg eyBDT01NSVQ7IH0KKworc2Vzc2lvbiBiMgorIyBGb3JjZSBwcnVuZS9jb2xsYXBzZTogYW5v dGhlciBIT1QtaW5kZXhlZCB1cGRhdGUgcGx1cyBhIFZBQ1VVTSB0aGF0CisjIGNvbGxhcHNl cyB0aGUgZGVhZCBjaGFpbiBtZW1iZXJzIHRvIExQX1JFRElSRUNUIGZvcndhcmRlcnMuCitz dGVwIGIyX3VwZGF0ZSAgeyBVUERBVEUgaGliIFNFVCB2ID0gNTAwIFdIRVJFIGlkID0gMTsg fQorc3RlcCBiMl92YWN1dW0gIHsgVkFDVVVNIChJTkRFWF9DTEVBTlVQIG9mZikgaGliOyB9 CisKK3Nlc3Npb24gYjMKK3N0ZXAgYjNfc2VxICAgICB7IFNFTEVDVCBpZCwgdiBGUk9NIGhp YiBPUkRFUiBCWSBpZDsgfQorCisjIDEuIGEtPmItPmEgY3ljbGU6IGV4YWN0bHkgb25lIHJv dyBmb3IgdGhlIGN5Y2xlZC1iYWNrIGtleSwgbm9uZSBmb3IgdGhlCisjICAgIHRyYW5zaWVu dCBrZXkuCitwZXJtdXRhdGlvbiBzMl9ub3NlcSBzMV9jeWNsZSBzMl9lcTEwIHMyX2VxMjAK KworIyAyLiBSYW5nZSBzY2FuIHJldHVybnMgdGhlIGxpdmUgcm93IGV4YWN0bHkgb25jZSBh Y3Jvc3MgdGhlIHN0YWxlK2ZyZXNoCisjICAgIGxlYXZlcyBsZWZ0IGJ5IHRoZSBjeWNsZS4K K3Blcm11dGF0aW9uIHMyX25vc2VxIHMxX2N5Y2xlIHMyX3JhbmdlCisKKyMgMy4gQWJvcnQg b2YgYSBIT1QtaW5kZXhlZCB1cGRhdGU6IHRoZSBuZXcga2V5IG11c3Qgbm90IHN1cmZhY2Ug YW5kIHRoZSBvbGQKKyMgICAga2V5IG11c3Qgc3RpbGwgcmVzb2x2ZSB0byB0aGUgKHJlc3Rv cmVkKSBsaXZlIHR1cGxlLgorcGVybXV0YXRpb24gczJfbm9zZXEgczFfYmVnaW4gczFfdXBk MjAgczFfYWJvcnQgczJfZXEyMCBzMl9lcTEwCisKKyMgNC4gQ29uY3VycmVudCB1bmlxdWUg aW5zZXJ0IHdoaWxlIGEgSE9ULWluZGV4ZWQgdXBkYXRlIGlzIGluIGZsaWdodC4gIEFuCisj ICAgIGluc2VydCBvZiB0aGUga2V5IHMxIGlzIGZyZWVpbmcgKDEwKSBtdXN0IHdhaXQgb24g dGhlIHVuY29tbWl0dGVkIHVwZGF0ZXIsCisjICAgIHRoZW4gc3VjY2VlZCBvbmNlIGl0IGNv bW1pdHMgKHRoZSBzdGFsZSAxMCBsZWFmIGlzIGZpbHRlcmVkKS4KK3Blcm11dGF0aW9uIHMx X2JlZ2luIHMxX3V1cGQyMCBzMl9pbnMxMCBzMV9jb21taXQKKworIyA1LiBBZnRlciB0aGUg dXBkYXRlIGNvbW1pdHMsIHRoZSBmcmVlZCBrZXkgKDEwKSBpbnNlcnRzIGNsZWFubHkgYW5k IHRoZQorIyAgICB0YWtlbiBrZXkgKDIwKSBjb25mbGljdHMgLS0gdGhlIGxpdmUgbGVhZiBp cyBob25vdXJlZCwgdGhlIHN0YWxlIG9uZSBpcyBub3QuCitwZXJtdXRhdGlvbiBzMV9iZWdp biBzMV91dXBkMjAgczFfY29tbWl0IHMyX2luczEwCitwZXJtdXRhdGlvbiBzMV9iZWdpbiBz MV91dXBkMjAgczFfY29tbWl0IHMyX2luczIwCisKKyMgNi4gU25hcHNob3Qgc2FmZXR5IG9m IHN0YWxlLWxlYWYgcmVjbGFpbS4gIEFuIG9sZGVyIFJFUEVBVEFCTEUgUkVBRCByZWFkZXIK KyMgICAgc3RpbGwgc2VlcyBrPTEwOyBhIGNvbmN1cnJlbnQgc2Vzc2lvbiB0aGVuIG1vdmVz IHRoZSBrZXkgdG8gMzAgYW5kIHJ1bnMgYW4KKyMgICAgaW5kZXggc2NhbiB0aGF0IHJlYWNo ZXMgdGhlIGxpdmUgdHVwbGUgdGhyb3VnaCB0aGUgc3RhbGUgMTAgbGVhZiBhbmQgbWF5Cisj ICAgIHRyeSB0byByZWNsYWltIGl0LiAgVGhlIHJlY2xhaW0gaXMgZ2F0ZWQgb24gdGhlIHNr aXBwZWQgdmVyc2lvbnMgYmVpbmcKKyMgICAgZGVhZCB0byBhbGwgdHJhbnNhY3Rpb25zLCB3 aGljaCBzMydzIGhlbGQgc25hcHNob3QgcHJldmVudHMsIHNvIHMzIG11c3QKKyMgICAgc3Rp bGwgZmluZCB0aGUgcm93IGJ5IGs9MTAgYWZ0ZXIgdGhlIHNjYW4uCitwZXJtdXRhdGlvbiBz M19iZWdpbiBzM19lcTEwIHMyX3RvMzAgczJfc2NhbjMwIHMzX2VxMTAgczNfY29tbWl0CisK KyMgNy4gUmVhZGVyIGNvbnNpc3RlbmN5IGFjcm9zcyBhIGNvbmN1cnJlbnQgcHJ1bmUvY29s bGFwc2UuICBzMSdzIGluZGV4IHNjYW4sCisjICAgIGNyb3NzaW5nIHRoZSBjb2xsYXBzZWQg Y2hhaW4gYWZ0ZXIgdGhlIFZBQ1VVTSwgbXVzdCBzdGlsbCByZXR1cm4gdGhlIHJvdworIyAg ICB2aWEgdGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcDsgdGhlIHF1ZXJ5IG11c3Qgbm90 IGVycm9yIGFuZCB0aGUgcm93IGNvdW50CisjICAgIG11c3QgYmUgY29uc2lzdGVudC4KK3Bl cm11dGF0aW9uIGIxX2JlZ2luIGIxX3NuYXAgYjJfdXBkYXRlIGIyX3ZhY3V1bSBiMV9zbmFw IGIxX2NvbW1pdCBiM19zZXEKK3Blcm11dGF0aW9uIGIxX2JlZ2luIGIyX3VwZGF0ZSBiMV9z bmFwIGIyX3ZhY3V1bSBiMV9zbmFwIGIxX2NvbW1pdCBiM19zZXEKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlY292ZXJ5L01ha2VmaWxlIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvTWFrZWZpbGUK aW5kZXggZDQxYWFhZjhhZTEuLjI3MzZjYWExYTFiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWNvdmVyeS9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS9NYWtlZmlsZQpAQCAt OSw3ICs5LDggQEAKICMKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUVYVFJBX0lOU1RBTEw9 Y29udHJpYi9wZ19wcmV3YXJtIFwKK0VYVFJBX0lOU1RBTEw9Y29udHJpYi9hbWNoZWNrIFwK Kwljb250cmliL3BnX3ByZXdhcm0gXAogCWNvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzIFwK IAljb250cmliL3Rlc3RfZGVjb2RpbmcgXAogCXNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9u X3BvaW50cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQgYi9z cmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZAppbmRleCBhZDBkODVmNDE4OS4uOGRiY2Rh MzU3NzUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCisrKyBi L3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCkBAIC02Myw2ICs2Myw3IEBAIHRlc3Rz ICs9IHsKICAgICAgICd0LzA1Ml9jaGVja3BvaW50X3NlZ21lbnRfbWlzc2luZy5wbCcsCiAg ICAgICAndC8wNTNfc3RhbmRieV9sb2dpbl9ldmVudF90cmlnZ2VyLnBsJywKICAgICAgICd0 LzA1NF91bmxvZ2dlZF9zZXF1ZW5jZV9wcm9tb3Rpb24ucGwnLAorICAgICAgJ3QvMDU1X2hv dF9pbmRleGVkX3JlY292ZXJ5LnBsJywKICAgICBdLAogICB9LAogfQpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTVfaG90X2luZGV4ZWRfcmVjb3ZlcnkucGwgYi9zcmMv dGVzdC9yZWNvdmVyeS90LzA1NV9ob3RfaW5kZXhlZF9yZWNvdmVyeS5wbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjZmMDc3YjMxNTkKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA1NV9ob3RfaW5kZXhlZF9yZWNvdmVyeS5w bApAQCAtMCwwICsxLDE0OSBAQAorCisjIENvcHlyaWdodCAoYykgMjAyNiwgUG9zdGdyZVNR TCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBDcmFzaC1yZWNvdmVyeSBjb3ZlcmFn ZSBmb3IgSE9ULWluZGV4ZWQgKEhPVC9TSVUpIGNoYWlucy4KKyMKKyMgQnVpbGQgYSBIT1Qt aW5kZXhlZCBjaGFpbiBieSByZXBlYXRlZGx5IFVQREFURWluZyBhIHNpbmdsZSByb3csCisj IGNoYW5naW5nIG9uZSBpbmRleGVkIChub24tUEspIGNvbHVtbiBlYWNoIHRpbWUuICBGb3Jj ZSBhIHBydW5lIHNvIHRoZQorIyBkZWFkIGNoYWluIG1lbWJlcnMgY29sbGFwc2UgdG8gTFBf UkVESVJFQ1QgZm9yd2FyZGVycyAod2l0aCB0aGUgbGl2ZQorIyBIT1QtaW5kZXhlZCB2ZXJz aW9uIHZpc2libGUgdmlhIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzIGFzCisjIG5f aG90X2luZGV4ZWQgPiAwKS4gIENyYXNoLXJlY292ZXIgdGhlIHByaW1hcnkgd2l0aCBzdG9w KCdpbW1lZGlhdGUnKQorIyBzbyB0aGUgY29sbGFwc2VkIGNoYWluIGNvbWVzIGJhY2sgZnJv bSBXQUwgb3IgZnJvbSB0aGUgRlBJLiAgQWZ0ZXIKKyMgcmVzdGFydCwgdmVyaWZ5OgorIwor IyAgIDEuIGFuIGluZGV4IGxvb2t1cCB3YWxraW5nIHRoZSBjaGFpbiByZXR1cm5zIHRoZSBs aXZlIHR1cGxlLAorIyAgIDIuIHBnX2FtY2hlY2sgKHZlcmlmeV9oZWFwYW0pIHJlcG9ydHMg bm8gZXJyb3JzIG9uIHRoZSByZWxhdGlvbiwKKyMgICAzLiBWQUNVVU0gcmVjbGFpbXMgdGhl IGNvbGxhcHNlZCBjaGFpbiAobl9ob3RfaW5kZXhlZCBkcm9wcyB0byAwKS4KKyMKK3VzZSBz dHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7Cit1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0 OjpNb3JlOworCitteSAkbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygn cHJpbWFyeScpOworJG5vZGUtPmluaXQ7CisjIERpc2FibGUgYXV0b3ZhY3V1bSB0byBrZWVw IHRoZSBjaGFpbiBzaGFwZSBzdGFibGUgdXAgdG8gdGhlIGV4cGxpY2l0CisjIHBydW5lIHdl IHRyaWdnZXIgYmVsb3cuCiskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZics IHF7YXV0b3ZhY3V1bSA9IG9mZgord2FsX2NvbnNpc3RlbmN5X2NoZWNraW5nID0gJ2FsbCd9 KTsKKyRub2RlLT5zdGFydDsKKworIyBhbWNoZWNrICh2ZXJpZnlfaGVhcGFtKSBpcyBzaGlw cGVkIGFzIGEgY29udHJpYiBleHRlbnNpb247IHdlIHVzZSBpdAorIyBmcm9tIFNRTCBhZnRl ciB0aGUgY3Jhc2gtcmVzdGFydCBjeWNsZS4KKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgcXtDUkVBVEUgRVhURU5TSU9OIGFtY2hlY2t9KTsKKworIyBXaWRlLWlzaCB0YWJsZTog UEsgKyBmb3VyIGluZGV4ZWQgY29sdW1ucyBwbHVzIGEgbm9uLWluZGV4ZWQgcGF5bG9hZAor IyBzbyBIT1QtaW5kZXhlZCB1cGRhdGVzIGhhdmUgd2lkdGggdG8gYW1vcnRpc2UuICBmaWxs ZmFjdG9yID0gNTAga2VlcHMKKyMgZnJlZSBzcGFjZSBvbi1wYWdlIGZvciBIT1QtaW5kZXhl ZCBjb250aW51YXRpb25zLgorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworCUNS RUFURSBUQUJMRSBoaV9yZWNvdiAoCisJCWlkICAgICAgaW50IFBSSU1BUlkgS0VZLAorCQlj MSAgICAgIGludCwKKwkJYzIgICAgICBpbnQsCisJCWMzICAgICAgaW50LAorCQljNCAgICAg IGludCwKKwkJcGF5bG9hZCB0ZXh0CisJKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworCUNS RUFURSBJTkRFWCBoaV9yZWNvdl9jMSBPTiBoaV9yZWNvdihjMSk7CisJQ1JFQVRFIElOREVY IGhpX3JlY292X2MyIE9OIGhpX3JlY292KGMyKTsKKwlDUkVBVEUgSU5ERVggaGlfcmVjb3Zf YzMgT04gaGlfcmVjb3YoYzMpOworCUNSRUFURSBJTkRFWCBoaV9yZWNvdl9jNCBPTiBoaV9y ZWNvdihjNCk7CisJSU5TRVJUIElOVE8gaGlfcmVjb3YgVkFMVUVTICgxLCAxMDAsIDIwMCwg MzAwLCA0MDAsICdwYXlsb2FkJyk7Cit9KTsKKworIyBCdWlsZCBhIEhPVC1pbmRleGVkIGNo YWluOiBmaXZlIFVQREFURXMsIGVhY2ggdG91Y2hpbmcgb25lIGluZGV4ZWQKKyMgY29sdW1u LiAgRXZlcnkgVVBEQVRFIGtlZXBzIHRoZSBuZXcgdmVyc2lvbiBvbi1wYWdlIGFuZCBwbGFu dHMgYSBmcmVzaAorIyBpbmRleCBlbnRyeSBiZWNhdXNlIGMxIGlzIGluZGV4ZWQgYW5kIGNo YW5nZWQuICBVc2UgYSBTUUwgdHJhbnNhY3Rpb24tCisjIHJhbmdlIGxvb3Agc28gZWFjaCBV UERBVEUgaXMgaXRzIG93biB4YWN0ICh4bWluL3htYXggZGlzdGluY3QpLgorZm9yIG15ICRp ICgxIC4uIDUpCit7CisJbXkgJG5ld3ZhbCA9IDEwMCArICRpOworCSRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlVQREFURSBoaV9yZWNvdiBTRVQgYzEgPSAkbmV3dmFsIFdI RVJFIGlkID0gMSIpOworfQorCitteSAkcHJlX3BydW5lID0gJG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCXF7U0VMRUNUIG5faG90X2luZGV4ZWQgRlJPTSBwZ19yZWxhdGlvbl9o b3RfaW5kZXhlZF9zdGF0cygnaGlfcmVjb3YnKX0pOworY21wX29rKCRwcmVfcHJ1bmUsICc+ JywgMCwKKwknSE9ULWluZGV4ZWQgY2hhaW4gaGFzIGF0IGxlYXN0IG9uZSBsaXZlIEhPVC1p bmRleGVkIHZlcnNpb24gYmVmb3JlIHBydW5lJyk7CisKKyMgRm9yY2UgYSBwcnVuZS4gIFRo ZSBjaGFpbiBoYXMgZGVhZCBoZWFwLW9ubHkgbWVtYmVycyBmcm9tIHRoZSBlYXJseQorIyBV UERBVEVzICh0aGVpciB4bWlucyBhcmUgbm93IGNvbW1pdHRlZCBhbmQgYmVsb3cgdGhlIHNu YXBzaG90IGhvcml6b24pLgorIyBBIFNFTEVDVCB1bmRlciBkZWZhdWx0IGlzb2xhdGlvbiB2 aXNpdHMgdGhlIHBhZ2U7IHVuZGVyCisjIGRlZmF1bHRfc3RhdGlzdGljc190YXJnZXQgZXRj LiB0aGF0J3Mgbm90IGVub3VnaCBvbiBpdHMgb3duIHRvIHRyaWdnZXIKKyMgcHJ1bmUuICBU aGUgcmVsaWFibGUgd2F5IHRvIGRyaXZlIG9wcG9ydHVuaXN0aWMgcHJ1bmUgaXMgYSBxdWVy eSB0aGF0CisjIGV4ZXJjaXNlcyB0aGUgaGVhcF9wYWdlX3BydW5lX29wdCBwYXRoLCB3aGlj aCBmaXJlcyBmcm9tIGFuIGluZGV4c2NhbgorIyB0aGF0IGZpbmRzIHRoZSBwYWdlIG5vbi1h bGwtdmlzaWJsZS4gIFVzZSBhIHNlcXVlbnRpYWwgc2NhbiBwbHVzIGEKKyMgc3Vic2VxdWVu dCBVUERBVEUgdGhhdCBpdHNlbGYgbG9va3MgZm9yIGZyZWUgc3BhY2UgKGhlYXBfdXBkYXRl IGNhbGxzCisjIGhlYXBfcGFnZV9wcnVuZV9vcHQpLgorJG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCBxeworCVNFVCBlbmFibGVfaW5kZXhzY2FuID0gb2ZmOworCVNFTEVDVCBjb3Vu dCgqKSBGUk9NIGhpX3JlY292OworCVVQREFURSBoaV9yZWNvdiBTRVQgcGF5bG9hZCA9ICdw cnVuZWQnIFdIRVJFIGlkID0gMTsKK30pOworCisjIFJlYWQgdGhlIGNoYWluIHN0YXRlIGFm dGVyIHRoZSBwcnVuZTogdGhlIGxpdmUgSE9ULWluZGV4ZWQgdmVyc2lvbgorIyByZW1haW5z IHdoaWxlIGRlYWQgbWVtYmVycyBjb2xsYXBzZSB0byBMUF9SRURJUkVDVCBmb3J3YXJkZXJz LgorbXkgJHBvc3RfcHJ1bmUgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtT RUxFQ1Qgbl9ob3RfaW5kZXhlZCBGUk9NIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRz KCdoaV9yZWNvdicpfSk7CitjbXBfb2soJHBvc3RfcHJ1bmUsICc+JywgMCwKKwknbGl2ZSBI T1QtaW5kZXhlZCB2ZXJzaW9uIHN1cnZpdmVzIG9wcG9ydHVuaXN0aWMgcHJ1bmUnKTsKKwor IyBDcmFzaC1yZXN0YXJ0LiAgc3RvcCgnaW1tZWRpYXRlJykgaXMgdGhlIHN0YW5kYXJkICJr aWxsIC05IiBzaW11bGF0aW9uCisjIHVzZWQgZWxzZXdoZXJlIGluIHNyYy90ZXN0L3JlY292 ZXJ5Ly4gIFdlIGludGVudGlvbmFsbHkgZG8gTk9UIGlzc3VlIGEKKyMgQ0hFQ0tQT0lOVCBm aXJzdDogdGhhdCB3b3VsZCBhZHZhbmNlIHRoZSByZWRvIHBvaW50IHBhc3QgdGhlIEhPVC1p bmRleGVkCisjIFVQREFURS9wcnVuZSByZWNvcmRzIGFuZCBsZWF2ZSBub3RoaW5nIGZvciBy ZWNvdmVyeSB0byByZXBsYXkuICBDcmFzaGluZworIyB3aXRob3V0IGEgY2hlY2twb2ludCBm b3JjZXMgc3RhcnR1cCByZWRvIHRvIHJlY29uc3RydWN0IHRoZSBjb2xsYXBzZWQKKyMgY2hh aW4gZnJvbSBXQUwsIGFuZCB3YWxfY29uc2lzdGVuY3lfY2hlY2tpbmcgPSAnYWxsJyAoc2V0 IGFib3ZlKSBjb21wYXJlcworIyBlYWNoIHJlcGxheWVkIHBhZ2UgYWdhaW5zdCBpdHMgZnVs bC1wYWdlIGltYWdlLCBjYXRjaGluZyBhbnkgZGl2ZXJnZW5jZQorIyBiZXR3ZWVuIHRoZSB3 cml0ZSBwYXRoIGFuZCB0aGUgcmVkbyBwYXRoLgorJG5vZGUtPnN0b3AoJ2ltbWVkaWF0ZScp OworJG5vZGUtPnN0YXJ0OworCisjIDEuIENoYWluIHdhbGsgdmlhIHRoZSBpbmRleGVkIGNv bHVtbiBvbiB0aGUgbGl2ZSByb3cgcmV0dXJucyB0aGUKKyMgICAgY29ycmVjdCAoYW5kIG9u bHkgdGhlIGNvcnJlY3QpIHR1cGxlLiAgYzEgPSAxMDUgd2FzIHRoZSBsYXN0CisjICAgIFVQ REFURSwgc28gdGhlIGxpdmUgdHVwbGUgaGFzIGMxID0gMTA1IGFuZCBjMi4uYzQgdW5jaGFu Z2VkLgorbXkgJGxpdmUgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJU0VU IGVuYWJsZV9zZXFzY2FuID0gb2ZmOworCVNFTEVDVCBpZCwgYzEsIGMyLCBjMywgYzQsIHBh eWxvYWQgRlJPTSBoaV9yZWNvdiBXSEVSRSBjMSA9IDEwNTsKK30pOworaXMoJGxpdmUsICIx fDEwNXwyMDB8MzAwfDQwMHxwcnVuZWQiLAorCSdpbmRleCBsb29rdXAgb24gY2hhaW4gcmV0 dXJucyB0aGUgcG9zdC1wcnVuZSBsaXZlIHR1cGxlJyk7CisKKyMgT2xkZXIgYzEgdmFsdWVz IGFyZSBub3QgcmVhY2hhYmxlOiBldmVyeSBzdGFsZSBidHJlZSBlbnRyeSB0aGF0CisjIGNo YWluLXJlc29sdmVzIGFjcm9zcyBhIEhPVC9TSVUgaG9wIG11c3QgYmUgZHJvcHBlZCBieSB0 aGUgcmVhZC1zaWRlCisjIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcC4KK215ICRzdGFsZV9j b3VudCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe1NFTEVDVCBjb3VudCgq KSBGUk9NIGhpX3JlY292IFdIRVJFIGMxID0gMTAwfSk7Citpcygkc3RhbGVfY291bnQsICcw JywKKwknc3RhbGUgYnRyZWUgZW50cmllcyBhcmUgZmlsdGVyZWQgYnkgdGhlIGNyb3NzZWQt YXR0cmlidXRlIGJpdG1hcCcpOworCisjIDIuIHZlcmlmeV9oZWFwYW0gcmVwb3J0cyBubyBl cnJvcnMgb24gdGhlIHJlbGF0aW9uIChza2lwX29wdGlvbiA9CisjICAgICdhbGwtZnJvemVu JyBpcyB0aGUgZGVmYXVsdDsgd2Ugd2FudCB0byBzY2FuIGV2ZXJ5dGhpbmcpLgorbXkgJGhl YXBjaGVjayA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXsKKwlTRUxFQ1QgY291 bnQoKikgRlJPTSB2ZXJpZnlfaGVhcGFtKCdoaV9yZWNvdicsCisJICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBza2lwIDo9ICdub25lJywKKwkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNoZWNrX3RvYXN0IDo9IGZhbHNlKTsKK30pOworaXMoJGhl YXBjaGVjaywgJzAnLAorCSd2ZXJpZnlfaGVhcGFtIHJlcG9ydHMgemVybyBlcnJvcnMgYWZ0 ZXIgY3Jhc2ggcmVjb3ZlcnknKTsKKworIyAzLiBSZWNsYW1hdGlvbjogYWZ0ZXIgdGhlIGxp dmUgcm93IGlzIGRlbGV0ZWQsIHR3byBWQUNVVU0gKEZSRUVaRSkKKyMgICAgcGFzc2VzIGRy aXZlIHBydW5lIHRvIHJldmlzaXQgdGhlIHBhZ2UgYW5kIHJlY2xhaW0gdGhlIG5vdy1mdWxs eS1kZWFkCisjICAgIGNvbGxhcHNlZCBjaGFpbiAodGhlIGZpcnN0IHJlbW92ZXMgdGhlIGRl YWQgcm93J3MgaW5kZXggZW50cmllcyBhbmQKKyMgICAgcmVkdWNlcyBpdHMgTFA7IHRoZSBz ZWNvbmQgcmVjbGFpbXMgdGhlIHVucmVmZXJlbmNlZCBtZW1iZXJzIGFuZAorIyAgICByZS1w b2ludHMgdGhlIHJlZGlyZWN0KS4gIEFmdGVyIHRoYXQsIG5faG90X2luZGV4ZWQgbXVzdCBi ZSB6ZXJvLgorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxe0RFTEVURSBGUk9NIGhp X3JlY292IFdIRVJFIGlkID0gMX0pOworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CXF7VkFDVVVNIChGUkVFWkUsIERJU0FCTEVfUEFHRV9TS0lQUElORykgaGlfcmVjb3Z9KTsK KyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe1ZBQ1VVTSAoRlJFRVpFLCBESVNB QkxFX1BBR0VfU0tJUFBJTkcpIGhpX3JlY292fSk7CitteSAkZmluYWwgPSAkbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtTRUxFQ1Qgbl9ob3RfaW5kZXhlZCBGUk9NIHBnX3Jl bGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzKCdoaV9yZWNvdicpfSk7CitpcygkZmluYWwsICcw JywKKwkndHdvIFZBQ1VVTSAoRlJFRVpFKSBwYXNzZXMgYWZ0ZXIgREVMRVRFIHJlY2xhaW0g dGhlIGNoYWluIHBvc3QtcmVjb3ZlcnknKTsKKworJG5vZGUtPnN0b3A7CisKK2RvbmVfdGVz dGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ob3RfaW5k ZXhlZF91cGRhdGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaG90X2luZGV4 ZWRfdXBkYXRlcy5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LmE4YTdmZTM0NzllCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ob3RfaW5kZXhlZF91cGRhdGVzLm91dApAQCAtMCwwICsxLDE3MDYgQEAKKy0tCist LSBIT1RfSU5ERVhFRF9VUERBVEVTCistLSBUZXN0IEhPVC1pbmRleGVkIHVwZGF0ZSAoaG90 LWluZGV4ZWQpLCBha2EgSE9ULWluZGV4ZWQsIGJlaGF2aW91cgorLS0KKy0tIEV2ZXJ5IFVQ REFURSBpbiB0aGlzIGZpbGUgbW9kaWZpZXMgYXQgbGVhc3Qgb25lIG5vbi1zdW1tYXJpemlu ZworLS0gaW5kZXhlZCBhdHRyaWJ1dGUuICBPbiBhIHByZS1ob3QtaW5kZXhlZCBzZXJ2ZXIg YWxsIG9mIHRoZXNlIHdvdWxkIGJlCistLSBub24tSE9UOyBvbiB0aGUgaG90LWluZGV4ZWQg YnJhbmNoIGVhY2ggZWxpZ2libGUgdXBkYXRlIHN0YXlzIG9uLXBhZ2UgYW5kCistLSBpbnNl cnRzIGludG8gb25seSB0aGUgaW5kZXhlcyB3aG9zZSBhdHRyaWJ1dGVzIGFjdHVhbGx5IGNo YW5nZWQuCistLQorLS0gV2UgdmVyaWZ5IGZvdXIgdGhpbmdzOgorLS0gICAoQSkgcGdfc3Rh dCBjb3VudGVyczogSE9UIGFuZCBob3QtaW5kZXhlZCBjb3VudHMgaW5jcmVtZW50IGFzIGV4 cGVjdGVkCistLSAgIChCKSBpbmRleCBsb29rdXBzIHJldHVybiB0aGUgbmV3IHZhbHVlIGFu ZCBub3QgdGhlIHN0YWxlIHZhbHVlCistLSAgICAgICBmb3IgRVFVQUxJVFkgcXVlcmllcyAo dGhlIHJlYWQtc2lkZSBzdGFsZW5lc3MgdGVzdCBkcm9wcyBhCistLSAgICAgICBsZWFmIHdo b3NlIGNvdmVyZWQgYXR0cmlidXRlIGNoYW5nZWQgb24gdGhlIHdheSB0byB0aGUgbGl2ZSB0 dXBsZSkKKy0tICAgKEMpIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzIHJlcG9ydHMg dGhlIEhPVC1pbmRleGVkIHZlcnNpb25zIHdlIGV4cGVjdAorLS0gICAoRCkgKipSQU5HRS9J TkVRVUFMSVRZKiogcXVlcmllcyByZXR1cm4gdGhlIGNvcnJlY3QgbnVtYmVyIG9mCistLSAg ICAgICB0dXBsZXMgLS0gdGhpcyBpcyB0aGUgY2xhc3Mgb2YgYnVncyB3aGVyZSBhIHN0YWxl IGJ0cmVlCistLSAgICAgICBlbnRyeSdzIGtleSBpcyBzdGlsbCByZWFjaGFibGUgdmlhIGEg bG9vc2VyIHNjYW4ga2V5OyB0aGUKKy0tICAgICAgIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1h cCBkcm9wcyB0aGUgc3RhbGUgYXJyaXZhbCBiZWNhdXNlIHRoZSBpbmRleCdzCistLSAgICAg ICBhdHRyaWJ1dGUgY2hhbmdlZCBiZXR3ZWVuIHRoYXQgbGVhZidzIHRhcmdldCBhbmQgdGhl IGxpdmUgdHVwbGUKKy0tCitDUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgcGFnZWlu c3BlY3Q7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBnZXRfaG90X2NvdW50KHJlbF9u YW1lIHRleHQpCitSRVRVUk5TIFRBQkxFICh1cGRhdGVzIEJJR0lOVCwgaG90IEJJR0lOVCkg QVMgJCQKK0RFQ0xBUkUgcmVsX29pZCBvaWQ7CitCRUdJTgorICAgIHJlbF9vaWQgOj0gcmVs X25hbWU6OnJlZ2NsYXNzOjpvaWQ7CisgICAgdXBkYXRlcyA6PSBDT0FMRVNDRShwZ19zdGF0 X2dldF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCkgKworICAgICAgICAgICAgICAgQ09B TEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZChyZWxfb2lkKSwgMCk7Cisg ICAgaG90IDo9IENPQUxFU0NFKHBnX3N0YXRfZ2V0X3R1cGxlc19ob3RfdXBkYXRlZChyZWxf b2lkKSwgMCkgKworICAgICAgICAgICBDT0FMRVNDRShwZ19zdGF0X2dldF94YWN0X3R1cGxl c19ob3RfdXBkYXRlZChyZWxfb2lkKSwgMCk7CisgICAgUkVUVVJOIE5FWFQ7CitFTkQ7Cisk JCBMQU5HVUFHRSBwbHBnc3FsOworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gZ2V0X2hp X2NvdW50KHJlbF9uYW1lIHRleHQpCitSRVRVUk5TIFRBQkxFICh1cGRhdGVzIEJJR0lOVCwg aG90IEJJR0lOVCwgaG90X2lkeCBCSUdJTlQpIEFTICQkCitERUNMQVJFIHJlbF9vaWQgb2lk OworQkVHSU4KKyAgICByZWxfb2lkIDo9IHJlbF9uYW1lOjpyZWdjbGFzczo6b2lkOworICAg IHVwZGF0ZXMgOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX3VwZGF0ZWQocmVsX29p ZCksIDApICsKKyAgICAgICAgICAgICAgIENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVw bGVzX3VwZGF0ZWQocmVsX29pZCksIDApOworICAgIGhvdCA6PSBDT0FMRVNDRShwZ19zdGF0 X2dldF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29pZCksIDApICsKKyAgICAgICAgICAgQ09B TEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29pZCksIDAp OworICAgIGhvdF9pZHggOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX2hvdF9pbmRl eGVkX3VwZGF0ZWQocmVsX29pZCksIDApICsKKyAgICAgICAgICAgQ09BTEVTQ0UocGdfc3Rh dF9nZXRfeGFjdF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRlZChyZWxfb2lkKSwgMCk7Cisg ICAgUkVUVVJOIE5FWFQ7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsOworLS0gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCistLSAxLiBCYXNpYyBob3QtaW5kZXhlZDogbW9kaWZ5aW5nIGFu IGluZGV4ZWQgY29sdW1uIHN0YXlzIEhPVCBhbmQgY291bnRzIGFzIGhvdC1pbmRleGVkCist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9iYXNpYyAoCisgICAg aWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBub25faW5k ZXhlZF9jb2wgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVY IGhpX2Jhc2ljX2lkeCBPTiBoaV9iYXNpYyhpbmRleGVkX2NvbCk7CitJTlNFUlQgSU5UTyBo aV9iYXNpYyBWQUxVRVMgKDEsIDEwMCwgJ2luaXRpYWwnKTsKKy0tIFByZS1ob3QtaW5kZXhl ZCB0aGlzIHdvdWxkIGJlIG5vbi1IT1QuICBVbmRlciBob3QtaW5kZXhlZCBpdCdzIEhPVC1p bmRleGVkOyBib3RoIHRoZQorLS0gSE9UIGNvdW50ZXIgYW5kIHRoZSBob3QtaW5kZXhlZCBj b3VudGVyIGFkdmFuY2UuCitVUERBVEUgaGlfYmFzaWMgU0VUIGluZGV4ZWRfY29sID0gMTUw IFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBw Z19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGdldF9oaV9jb3VudCgnaGlfYmFzaWMnKTsK KyB1cGRhdGVzIHwgaG90IHwgaG90X2lkeCAKKy0tLS0tLS0tLSstLS0tLSstLS0tLS0tLS0K KyAgICAgICAxIHwgICAxIHwgICAgICAgMQorKDEgcm93KQorCistLSBUaGUgbmV3IHZhbHVl IGlzIHJlYWNoYWJsZSB2aWEgdGhlIGluZGV4LgorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2Zm OworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQsIGluZGV4ZWRfY29sIEZST00gaGlf YmFzaWMgV0hFUkUgaW5kZXhlZF9jb2wgPSAxNTA7CisgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBCaXRtYXAgSGVhcCBTY2FuIG9uIGhpX2Jhc2ljCisgICBSZWNoZWNrIENv bmQ6IChpbmRleGVkX2NvbCA9IDE1MCkKKyAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBo aV9iYXNpY19pZHgKKyAgICAgICAgIEluZGV4IENvbmQ6IChpbmRleGVkX2NvbCA9IDE1MCkK Kyg0IHJvd3MpCisKK1NFTEVDVCBpZCwgaW5kZXhlZF9jb2wgRlJPTSBoaV9iYXNpYyBXSEVS RSBpbmRleGVkX2NvbCA9IDE1MDsKKyBpZCB8IGluZGV4ZWRfY29sIAorLS0tLSstLS0tLS0t LS0tLS0tCisgIDEgfCAgICAgICAgIDE1MAorKDEgcm93KQorCistLSBUaGUgb2xkIHZhbHVl IGlzIG5vdCByZWFjaGFibGUgdGhyb3VnaCB0aGlzIGluZGV4OiB0aGUgc3RhbGUgYnRyZWUK Ky0tIGVudHJ5IChpbmRleGVkX2NvbD0xMDApIHdhbGtzIHRvIHRoZSBjdXJyZW50IHR1cGxl IHZpYSB0aGUgaG90LWluZGV4ZWQgaG9wLAorLS0gbm9kZUluZGV4c2NhbiByZS1ldmFsdWF0 ZXMgYGluZGV4ZWRfY29sID0gMTAwYCBhZ2FpbnN0IHRoZSBjdXJyZW50CistLSB0dXBsZSAo aW5kZXhlZF9jb2w9MTUwKSwgYW5kIHRoZSByb3cgaXMgY29ycmVjdGx5IGRyb3BwZWQuICBU aGlzIGlzCistLSB0aGUgZXF1YWxpdHktbG9va3VwIGNhc2UgdGhlIGNyb3NzZWQtYXR0cmli dXRlIGJpdG1hcCBoYW5kbGVzLgorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgaWQgRlJP TSBoaV9iYXNpYyBXSEVSRSBpbmRleGVkX2NvbCA9IDEwMDsKKyAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIEJpdG1hcCBIZWFwIFNjYW4gb24gaGlfYmFzaWMKKyAgIFJlY2hl Y2sgQ29uZDogKGluZGV4ZWRfY29sID0gMTAwKQorICAgLT4gIEJpdG1hcCBJbmRleCBTY2Fu IG9uIGhpX2Jhc2ljX2lkeAorICAgICAgICAgSW5kZXggQ29uZDogKGluZGV4ZWRfY29sID0g MTAwKQorKDQgcm93cykKKworU0VMRUNUIGlkIEZST00gaGlfYmFzaWMgV0hFUkUgaW5kZXhl ZF9jb2wgPSAxMDA7CisgaWQgCistLS0tCisoMCByb3dzKQorCitSRVNFVCBlbmFibGVfc2Vx c2NhbjsKKy0tIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzIHNlZXMgb25lIEhPVC1p bmRleGVkIHZlcnNpb24sIHplcm8gSE9UIHJlZGlyZWN0cyAodGhlCistLSBjaGFpbiBoYXMg bm90IHlldCBiZWVuIHBydW5lZCBzbyBubyBMUF9SRURJUkVDVCBleGlzdHMpLgorU0VMRUNU IG5faG90X2luZGV4ZWQsIG5fY2hhaW5zLCBhdmdfY2hhaW5fbGVuLCBtYXhfY2hhaW5fbGVu CitGUk9NIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzKCdoaV9iYXNpYycpOworIG5f aG90X2luZGV4ZWQgfCBuX2NoYWlucyB8IGF2Z19jaGFpbl9sZW4gfCBtYXhfY2hhaW5fbGVu IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLQorICAgICAgICAgICAgIDEgfCAgICAgICAgMCB8ICAgICAgICAgICAgIDAgfCAg ICAgICAgICAgICAwCisoMSByb3cpCisKK0RST1AgVEFCTEUgaGlfYmFzaWM7CistLSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKy0tIDIuIFJBTkdFL0lORVFVQUxJVFkgY29ycmVjdG5lc3Mg YWZ0ZXIgaG90LWluZGV4ZWQgb24gYW4gaW5kZXhlZCBjb2x1bW4KKy0tCistLSBUaGlzIGlz IHRoZSB0ZXN0IGNsYXNzIHRoYXQgY2F0Y2hlcyB0aGUgaG90LWluZGV4ZWQgZmFsc2UtZHVw IGJ1ZzogYSBzdGFsZQorLS0gYnRyZWUgZW50cnkgd2hvc2Uga2V5IHZhbHVlIHN0aWxsIHNh dGlzZmllcyB0aGUgcmFuZ2UgcHJlZGljYXRlLAorLS0gcmVhY2hhYmxlIHZpYSB0aGUgaG90 LWluZGV4ZWQgY2hhaW4gaG9wLgorLS0KKy0tIFRvIGV4ZXJjaXNlIHRoZSBidWcgd2UgbXVz dCBmb3JjZSBhbiBJbmRleFNjYW4gcGxhbiAodGhlCistLSBJbmRleE9ubHlTY2FuIHBhdGgg cGVybWlzc2l2ZWx5IGRyb3BzIGV2ZXJ5IGhvdC1pbmRleGVkLXJlYWNoYWJsZSBpbmRleC1v bmx5CistLSBoaXQ7IHRoZSBCaXRtYXBIZWFwU2NhbiBwYXRoIGRlZHVwcyBieSBUSUQpLiAg V2UgaW5jbHVkZSBhIHBheWxvYWQKKy0tIGNvbHVtbiBub3QgcHJlc2VudCBpbiB0aGUgUEsg c28gdGhlIHBsYW5uZXIgbXVzdCBoZWFwLWZldGNoLgorLS0KKy0tIFRoZSByZWFkLXNpZGUg Y3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIG1ha2VzIHRoZSBJbmRleFNjYW4gcmV0dXJuIHRo ZSBjb3JyZWN0CistLSBjb3VudCBvZiAxOiB0aGUgc3RhbGUgZW50cnkgKCcxJywnNScpIGNo YWluLXdhbGtzIHRvIHRoZSBsaXZlIHR1cGxlIGFjcm9zcworLS0gdGhlIGItY2hhbmdpbmcg aG9wLCBhbmQgYmVjYXVzZSB0aGUgUEsgY292ZXJzIGIgdGhlIG92ZXJsYXAgaXMgbm9uLWVt cHR5LCBzbworLS0gdGhlIHN0YWxlIGxlYWYgaXMgZHJvcHBlZC4gIFRoZSBmcmVzaCBlbnRy eSAoJzEnLCcxNScpIHBvaW50cyBkaXJlY3RseSBhdCB0aGUKKy0tIGxpdmUgdHVwbGUgKG5v IGhvcCBhZnRlciBpdCkgYW5kIGlzIGtlcHQuICBUaGUgT1JERVIgQlkgbGlrZXdpc2UgcmV0 dXJucyB0aGUKKy0tIHNpbmdsZSBsaXZlIHJvdy4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorQ1JFQVRFIFRBQkxFIGhpX3JhbmdlICgKKyAgICBhIGludCwKKyAgICBiIGludCwKKyAg ICBwYXlsb2FkIHRleHQsCisgICAgUFJJTUFSWSBLRVkgKGEsIGIpCispIFdJVEggKGZpbGxm YWN0b3IgPSA1MCk7CitJTlNFUlQgSU5UTyBoaV9yYW5nZSBWQUxVRVMgKDEsIDUsICdoaScp OworLS0gaG90LWluZGV4ZWQgdXBkYXRlIG9uIHRoZSBzZWNvbmQgUEsgY29sdW1uOiBzdGFs ZSBidHJlZSBlbnRyeSAoJzEnLCc1JykKKy0tIHJlbWFpbnMsIG5ldyBlbnRyeSAoJzEnLCcx NScpIGluc2VydGVkLiAgVGhlIHN0YWxlIGVudHJ5IHBvaW50cyBhdAorLS0gdGhlIGNoYWlu IHJvb3Q7IHRoZSBmcmVzaCBlbnRyeSBwb2ludHMgZGlyZWN0bHkgYXQgdGhlIG5ldworLS0g aGVhcC1vbmx5IHR1cGxlLgorVVBEQVRFIGhpX3JhbmdlIFNFVCBiID0gMTUgV0hFUkUgYSA9 IDEgQU5EIGIgPSA1OworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9i aXRtYXBzY2FuID0gb2ZmOworLS0gSW5kZXhTY2FuOiBwYXlsb2FkIElTIE5PVCBOVUxMIGZv cmNlcyBoZWFwIGZldGNoLCBubyBJbmRleE9ubHlTY2FuLgorLS0gVGhlIHN0YWxlICgnMScs JzUnKSBsZWFmIGlzIGRyb3BwZWQgYnkgdGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCwg c28gdGhpcworLS0gcmV0dXJucyAxLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNv dW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIGIgPCAxMDAgQU5EIHBheWxv YWQgSVMgTk9UIE5VTEw7CisgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBJbmRleCBTY2FuIHVzaW5nIGhpX3Jh bmdlX3BrZXkgb24gaGlfcmFuZ2UKKyAgICAgICAgIEluZGV4IENvbmQ6ICgoYSA9IDEpIEFO RCAoYiA8IDEwMCkpCisgICAgICAgICBGaWx0ZXI6IChwYXlsb2FkIElTIE5PVCBOVUxMKQor KDQgcm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEg QU5EIGIgPCAxMDAgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CisgY291bnQgCistLS0tLS0t CisgICAgIDEKKygxIHJvdykKKworU0VMRUNUIGEsIGIgRlJPTSBoaV9yYW5nZSBXSEVSRSBh ID0gMSBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTCBPUkRFUiBCWSBiOworIGEgfCBiICAKKy0t LSstLS0tCisgMSB8IDE1CisoMSByb3cpCisKKy0tIEluZGV4T25seVNjYW46IHRoZSBwYWdl IGhvbGRzIGEgcHJlc2VydmVkIEhPVC1pbmRleGVkIG1lbWJlciBzbyBpdCBpcyBuZXZlciBh bGwtdmlzaWJsZTsgSU9TCistLSBwZXJmb3JtcyB0aGUgaGVhcCBmZXRjaCBhbmQgdGhlIGNy b3NzZWQtYXR0cmlidXRlIGJpdG1hcCBkcm9wcyB0aGUgc3RhbGUgKCcxJywnNScpCistLSBs ZWFmLCBzbyBjb3VudCA9IDEuCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBjb3VudCgq KSBGUk9NIGhpX3JhbmdlIFdIRVJFIGEgPSAxIEFORCBiIDwgMTAwOworICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3Jl Z2F0ZQorICAgLT4gIEluZGV4IE9ubHkgU2NhbiB1c2luZyBoaV9yYW5nZV9wa2V5IG9uIGhp X3JhbmdlCisgICAgICAgICBJbmRleCBDb25kOiAoKGEgPSAxKSBBTkQgKGIgPCAxMDApKQor KDMgcm93cykKKworU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEg QU5EIGIgPCAxMDA7CisgY291bnQgCistLS0tLS0tCisgICAgIDEKKygxIHJvdykKKworLS0g Qml0bWFwSGVhcFNjYW46IFRJRCBkZWR1cCBjb2xsYXBzZXMgdGhlIHN0YWxlIGFuZCBmcmVz aCBoaXRzLgorU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2luZGV4 b25seXNjYW4gPSBvZmY7CitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK0VYUExBSU4gKENP U1RTIE9GRikgU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5E IGIgPCAxMDA7CisgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gaGlfcmFu Z2UKKyAgICAgICAgIFJlY2hlY2sgQ29uZDogKChhID0gMSkgQU5EIChiIDwgMTAwKSkKKyAg ICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBoaV9yYW5nZV9wa2V5CisgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAoKGEgPSAxKSBBTkQgKGIgPCAxMDApKQorKDUgcm93cykK KworU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIGIgPCAx MDA7CisgY291bnQgCistLS0tLS0tCisgICAgIDEKKygxIHJvdykKKworUkVTRVQgZW5hYmxl X2luZGV4c2NhbjsKK1JFU0VUIGVuYWJsZV9pbmRleG9ubHlzY2FuOworLS0gU2VxU2Nhbjog cmVhZHMgdGhlIGhlYXAgZGlyZWN0bHksIHNlZXMgZXhhY3RseSBvbmUgbGl2ZSB0dXBsZS4K K1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBvZmY7CitT RVQgZW5hYmxlX2luZGV4b25seXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4g PSBvZmY7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBjb3VudCgqKSBGUk9NIGhpX3Jh bmdlIFdIRVJFIGEgPSAxIEFORCBiIDwgMTAwOworICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgU2VxIFNjYW4gb24gaGlfcmFuZ2UKKyAgICAg ICAgIEZpbHRlcjogKChiIDwgMTAwKSBBTkQgKGEgPSAxKSkKKygzIHJvd3MpCisKK1NFTEVD VCBjb3VudCgqKSBGUk9NIGhpX3JhbmdlIFdIRVJFIGEgPSAxIEFORCBiIDwgMTAwOworIGNv dW50IAorLS0tLS0tLQorICAgICAxCisoMSByb3cpCisKK1JFU0VUIGVuYWJsZV9pbmRleHNj YW47CitSRVNFVCBlbmFibGVfaW5kZXhvbmx5c2NhbjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBz Y2FuOworLS0gU2FtZSBzaGFwZSBvbiBhIHNlY29uZGFyeSAobm9uLVBLKSBidHJlZTogYW5v dGhlciBob3QtaW5kZXhlZCB1cGRhdGUgb24gYi4KK0NSRUFURSBJTkRFWCBoaV9yYW5nZV9i X2lkeCBPTiBoaV9yYW5nZShiKTsKK1VQREFURSBoaV9yYW5nZSBTRVQgYiA9IDI1IFdIRVJF IGEgPSAxIEFORCBiID0gMTU7CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5h YmxlX2JpdG1hcHNjYW4gPSBvZmY7CistLSBJbmRleFNjYW4gcGF0aCBvbiB0aGUgc2Vjb25k YXJ5IGluZGV4OyBzYW1lIGZpeCBhcHBsaWVzLgorU0VMRUNUIGNvdW50KCopIEZST00gaGlf cmFuZ2UgV0hFUkUgYiBCRVRXRUVOIDAgQU5EIDEwMCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVM TDsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93KQorCitSRVNFVCBlbmFibGVf c2Vxc2NhbjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworRFJPUCBUQUJMRSBoaV9yYW5n ZTsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMy4gQWxsLW9yLW5vbmUgb24gYSBt dWx0aS1pbmRleGVkIHRhYmxlOiBob3QtaW5kZXhlZCBvbmx5IHRvdWNoZXMgaW5kZXhlcwor LS0gICAgd2hvc2UgYXR0cmlidXRlcyBjaGFuZ2VkCistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KK0NSRUFURSBUQUJMRSBoaV9tdWx0aSAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAor ICAgIGNvbF9hIGludCwKKyAgICBjb2xfYiBpbnQsCisgICAgY29sX2MgaW50LAorICAgIG5v bl9pbmRleGVkIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRF WCBoaV9tdWx0aV9hX2lkeCBPTiBoaV9tdWx0aShjb2xfYSk7CitDUkVBVEUgSU5ERVggaGlf bXVsdGlfYl9pZHggT04gaGlfbXVsdGkoY29sX2IpOworQ1JFQVRFIElOREVYIGhpX211bHRp X2NfaWR4IE9OIGhpX211bHRpKGNvbF9jKTsKK0lOU0VSVCBJTlRPIGhpX211bHRpIFZBTFVF UyAoMSwgMTAsIDIwLCAzMCwgJ2luaXRpYWwnKTsKKy0tIGNvbF9hIG9ubHk6IHVuZGVyIGhv dC1pbmRleGVkIHRoaXMgaXMgSE9ULWluZGV4ZWQsIGFuZCBvbmx5IGhpX211bHRpX2FfaWR4 CistLSBnZXRzIGEgbmV3IGVudHJ5LiAgaGlfbXVsdGlfYl9pZHggLyBoaV9tdWx0aV9jX2lk eCBrZWVwIHBvaW50aW5nCistLSBhdCB0aGUgY2hhaW4gcm9vdC4KK1VQREFURSBoaV9tdWx0 aSBTRVQgY29sX2EgPSAxNSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9u ZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBnZXRfaGlfY291 bnQoJ2hpX211bHRpJyk7CisgdXBkYXRlcyB8IGhvdCB8IGhvdF9pZHggCistLS0tLS0tLS0r LS0tLS0rLS0tLS0tLS0tCisgICAgICAgMSB8ICAgMSB8ICAgICAgIDEKKygxIHJvdykKKwor LS0gTG9va3VwcyBvbiBhbGwgdGhyZWUgaW5kZXhlcyByZXR1cm4gdGhlIHJvdy4KK1NFVCBl bmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCBGUk9NIGhpX211bHRpIFdIRVJFIGNv bF9hID0gMTU7CisgaWQgCistLS0tCisgIDEKKygxIHJvdykKKworU0VMRUNUIGlkIEZST00g aGlfbXVsdGkgV0hFUkUgY29sX2IgPSAyMDsKKyBpZCAKKy0tLS0KKyAgMQorKDEgcm93KQor CitTRUxFQ1QgaWQgRlJPTSBoaV9tdWx0aSBXSEVSRSBjb2xfYyA9IDMwOworIGlkIAorLS0t LQorICAxCisoMSByb3cpCisKKy0tIE9sZCBjb2xfYSB2YWx1ZSBpcyB1bnJlYWNoYWJsZSBi eSBlcXVhbGl0eSAoc3RhbGUgZW50cnkgZHJvcHBlZCBieSB0aGUKKy0tIHJlYWQtc2lkZSBj cm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXApLgorU0VMRUNUIGlkIEZST00gaGlfbXVsdGkgV0hF UkUgY29sX2EgPSAxMDsKKyBpZCAKKy0tLS0KKygwIHJvd3MpCisKK1JFU0VUIGVuYWJsZV9z ZXFzY2FuOworRFJPUCBUQUJMRSBoaV9tdWx0aTsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorLS0gNC4gTXVsdGktY29sdW1uIGJ0cmVlOiBob3QtaW5kZXhlZCBvbiBwYXJ0IG9mIGEg Y29tcG9zaXRlIGtleQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUg aGlfY29tcG9zaXRlICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgY29sX2EgaW50 LAorICAgIGNvbF9iIGludCwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9 IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9jb21wb3NpdGVfYWJfaWR4IE9OIGhpX2NvbXBvc2l0 ZShjb2xfYSwgY29sX2IpOworSU5TRVJUIElOVE8gaGlfY29tcG9zaXRlIFZBTFVFUyAoMSwg MTAsIDIwLCAnZGF0YScpOworLS0gY29sX2EgaXMgcGFydCBvZiB0aGUgY29tcG9zaXRlIGtl eTogaG90LWluZGV4ZWQuCitVUERBVEUgaGlfY29tcG9zaXRlIFNFVCBjb2xfYSA9IDE1Owor U0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4 dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NF TEVDVCAqIEZST00gZ2V0X2hpX2NvdW50KCdoaV9jb21wb3NpdGUnKTsKKyB1cGRhdGVzIHwg aG90IHwgaG90X2lkeCAKKy0tLS0tLS0tLSstLS0tLSstLS0tLS0tLS0KKyAgICAgICAxIHwg ICAxIHwgICAgICAgMQorKDEgcm93KQorCistLSBSZXNldCBhbmQgdGhlbiB1cGRhdGUgY29s X2IgKGFsc28gcGFydCBvZiB0aGUga2V5KS4KK1VQREFURSBoaV9jb21wb3NpdGUgU0VUIGNv bF9hID0gMTA7CitVUERBVEUgaGlfY29tcG9zaXRlIFNFVCBjb2xfYiA9IDI1OworU0VMRUNU IHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVz aCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCAq IEZST00gZ2V0X2hpX2NvdW50KCdoaV9jb21wb3NpdGUnKTsKKyB1cGRhdGVzIHwgaG90IHwg aG90X2lkeCAKKy0tLS0tLS0tLSstLS0tLSstLS0tLS0tLS0KKyAgICAgICAzIHwgICAzIHwg ICAgICAgMworKDEgcm93KQorCitEUk9QIFRBQkxFIGhpX2NvbXBvc2l0ZTsKKy0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorLS0gNS4gUGFydGlhbCBpbmRleDogc3RhdHVzIHRyYW5zaXRp b24gb3V0LW9mLXByZWRpY2F0ZQorLS0KKy0tICdzdGF0dXMnIGlzIGEgcGFydGlhbC1pbmRl eCBwcmVkaWNhdGUgY29sdW1uLiAgQSBjaGFuZ2UgdG8gYSBwcmVkaWNhdGUKKy0tIGNvbHVt biBjYW4gZmxpcCBhIHJvdyBpbiBvciBvdXQgb2YgdGhlIGluZGV4LCB3aGljaCB0aGUgcmVh ZC1zaWRlIGtleQorLS0gcmVjaGVjayBjYW5ub3QgZGV0ZWN0LCBzbyBIZWFwVXBkYXRlSG90 QWxsb3dhYmxlIGNvbnNlcnZhdGl2ZWx5IGRpc3F1YWxpZmllcworLS0gSE9ULWluZGV4ZWQg Zm9yIGFueSBwcmVkaWNhdGUtY29sdW1uIGNoYW5nZSAoZXZlbiB0aGlzIG91dC1vZi1wcmVk aWNhdGUgLT4KKy0tIG91dC1vZi1wcmVkaWNhdGUgY2FzZSkuICBUaGUgdXBkYXRlIGlzIHRo ZXJlZm9yZSBub24tSE9ULCBhbmQgdGhlIHBhcnRpYWwKKy0tIGluZGV4IGNvcnJlY3RseSBz dGF5cyBlbXB0eSBmb3IgdGhlc2Ugbm9uLSdhY3RpdmUnIHJvd3MuCistLSAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9wYXJ0aWFsICgKKyAgICBpZCBpbnQgUFJJ TUFSWSBLRVksCisgICAgc3RhdHVzIHRleHQsCisgICAgZGF0YSB0ZXh0CispIFdJVEggKGZp bGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfcGFydGlhbF9hY3RpdmVfaWR4IE9O IGhpX3BhcnRpYWwoc3RhdHVzKSBXSEVSRSBzdGF0dXMgPSAnYWN0aXZlJzsKK0lOU0VSVCBJ TlRPIGhpX3BhcnRpYWwgVkFMVUVTICgxLCAnYWN0aXZlJywgJ2RhdGExJyk7CitJTlNFUlQg SU5UTyBoaV9wYXJ0aWFsIFZBTFVFUyAoMiwgJ2luYWN0aXZlJywgJ2RhdGEyJyk7CitJTlNF UlQgSU5UTyBoaV9wYXJ0aWFsIFZBTFVFUyAoMywgJ2RlbGV0ZWQnLCAnZGF0YTMnKTsKKy0t IG91dCAtPiBvdXQgdHJhbnNpdGlvbiBvbiB0aGUgcHJlZGljYXRlIGNvbHVtbjogSE9ULWlu ZGV4ZWQga2VlcHMgaXQgb24tcGFnZSwKKy0tIGFuZCB0aGUgcGFydGlhbCBpbmRleCBnZXRz IG5vIGVudHJ5ICh0aGUgcm93IHNhdGlzZmllcyB0aGUgcHJlZGljYXRlIG5laXRoZXIKKy0t IGJlZm9yZSBub3IgYWZ0ZXIgdGhlIHVwZGF0ZSkuCitVUERBVEUgaGlfcGFydGlhbCBTRVQg c3RhdHVzID0gJ2RlbGV0ZWQnIFdIRVJFIGlkID0gMjsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNl X25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGdldF9oaV9j b3VudCgnaGlfcGFydGlhbCcpOworIHVwZGF0ZXMgfCBob3QgfCBob3RfaWR4IAorLS0tLS0t LS0tKy0tLS0tKy0tLS0tLS0tLQorICAgICAgIDEgfCAgIDEgfCAgICAgICAxCisoMSByb3cp CisKKy0tIFRoZSBwYXJ0aWFsIGluZGV4IHN0aWxsIGNvcnJlY3RseSBhbnN3ZXJzICJhY3Rp dmUiIHF1ZXJpZXMuCitTRUxFQ1QgaWQsIHN0YXR1cyBGUk9NIGhpX3BhcnRpYWwgV0hFUkUg c3RhdHVzID0gJ2FjdGl2ZSc7CisgaWQgfCBzdGF0dXMgCistLS0tKy0tLS0tLS0tCisgIDEg fCBhY3RpdmUKKygxIHJvdykKKworRFJPUCBUQUJMRSBoaV9wYXJ0aWFsOworLS0gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCistLSA2LiBQYXJ0aXRpb246IGhvdC1pbmRleGVkIGluc2lkZSBv bmUgcGFydGl0aW9uCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBo aV9wYXJ0ICgKKyAgICBpZCBpbnQsCisgICAgcGFydGl0aW9uX2tleSBpbnQsCisgICAgaW5k ZXhlZF9jb2wgaW50LAorICAgIGRhdGEgdGV4dCwKKyAgICBQUklNQVJZIEtFWSAoaWQsIHBh cnRpdGlvbl9rZXkpCispIFBBUlRJVElPTiBCWSBSQU5HRSAocGFydGl0aW9uX2tleSk7CitD UkVBVEUgVEFCTEUgaGlfcGFydF8xIFBBUlRJVElPTiBPRiBoaV9wYXJ0CisgICAgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMTAwKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRF IElOREVYIGhpX3BhcnRfaWR4IE9OIGhpX3BhcnQoaW5kZXhlZF9jb2wpOworSU5TRVJUIElO VE8gaGlfcGFydCBWQUxVRVMgKDEsIDUwLCAxMDAsICdkYXRhJyk7CitVUERBVEUgaGlfcGFy dCBTRVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRf Zm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gZ2V0 X2hpX2NvdW50KCdoaV9wYXJ0XzEnKTsKKyB1cGRhdGVzIHwgaG90IHwgaG90X2lkeCAKKy0t LS0tLS0tLSstLS0tLSstLS0tLS0tLS0KKyAgICAgICAxIHwgICAxIHwgICAgICAgMQorKDEg cm93KQorCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRUxFQ1QgaWQgRlJPTSBoaV9w YXJ0IFdIRVJFIGluZGV4ZWRfY29sID0gMTUwOworIGlkIAorLS0tLQorICAxCisoMSByb3cp CisKK1NFTEVDVCBpZCBGUk9NIGhpX3BhcnQgV0hFUkUgaW5kZXhlZF9jb2wgPSAxMDA7Cisg aWQgCistLS0tCisoMCByb3dzKQorCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK0RST1AgVEFC TEUgaGlfcGFydCBDQVNDQURFOworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSA3LiBU cmlnZ2VyIG1vZGlmaWVzIGluZGV4ZWQgY29sdW1uOiBob3QtaW5kZXhlZCwgbm90IG5vbi1I T1QKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3RyaWdnZXIg KAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0cmlnZ2VyZWRfY29sIGludCwKKyAg ICBkYXRhIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBo aV90cmlnZ2VyX2lkeCBPTiBoaV90cmlnZ2VyKHRyaWdnZXJlZF9jb2wpOworQ1JFQVRFIE9S IFJFUExBQ0UgRlVOQ1RJT04gaGlfdHJpZ2dlcl9idW1wKCkKK1JFVFVSTlMgVFJJR0dFUiBB UyAkJAorQkVHSU4KKyAgICBORVcudHJpZ2dlcmVkX2NvbCA9IE5FVy50cmlnZ2VyZWRfY29s ICsgMTsKKyAgICBSRVRVUk4gTkVXOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKK0NS RUFURSBUUklHR0VSIGJlZm9yZV91cGRhdGVfYnVtcAorICAgIEJFRk9SRSBVUERBVEUgT04g aGlfdHJpZ2dlcgorICAgIEZPUiBFQUNIIFJPVworICAgIEVYRUNVVEUgRlVOQ1RJT04gaGlf dHJpZ2dlcl9idW1wKCk7CitJTlNFUlQgSU5UTyBoaV90cmlnZ2VyIFZBTFVFUyAoMSwgMTAw LCAnaW5pdGlhbCcpOworLS0gVVBEQVRFJ3MgU0VUIGNsYXVzZSBkb2Vzbid0IHRvdWNoIHRo ZSBpbmRleGVkIGNvbHVtbiwgYnV0IHRoZQorLS0gdHJpZ2dlciBtb2RpZmllcyBpdCB2aWEg aGVhcF9tb2RpZnlfdHVwbGUuICBob3QtaW5kZXhlZCBtdXN0IGRldGVjdCB0aGlzCistLSBh bmQga2VlcCB0aGUgdHVwbGUgb24tcGFnZSAoSEVBUF9JTkRFWEVEX1VQREFURUQpIHBsdXMg YSBuZXcgYnRyZWUgZW50cnkuCitVUERBVEUgaGlfdHJpZ2dlciBTRVQgZGF0YSA9ICd1cGRh dGVkJyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7 CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBnZXRfaGlfY291bnQoJ2hpX3RyaWdn ZXInKTsKKyB1cGRhdGVzIHwgaG90IHwgaG90X2lkeCAKKy0tLS0tLS0tLSstLS0tLSstLS0t LS0tLS0KKyAgICAgICAxIHwgICAxIHwgICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgdHJp Z2dlcmVkX2NvbCBGUk9NIGhpX3RyaWdnZXIgV0hFUkUgaWQgPSAxOworIHRyaWdnZXJlZF9j b2wgCistLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMTAxCisoMSByb3cpCisKKy0tIE5l dyB2YWx1ZSByZWFjaGFibGUuCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRUxFQ1Qg aWQgRlJPTSBoaV90cmlnZ2VyIFdIRVJFIHRyaWdnZXJlZF9jb2wgPSAxMDE7CisgaWQgCist LS0tCisgIDEKKygxIHJvdykKKworU0VMRUNUIGlkIEZST00gaGlfdHJpZ2dlciBXSEVSRSB0 cmlnZ2VyZWRfY29sID0gMTAwOworIGlkIAorLS0tLQorKDAgcm93cykKKworUkVTRVQgZW5h YmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIGhpX3RyaWdnZXIgQ0FTQ0FERTsKK0RST1AgRlVO Q1RJT04gaGlfdHJpZ2dlcl9idW1wKCk7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0t IDguIEpTT05CIGV4cHJlc3Npb24gaW5kZXg6IEhPVC1pbmRleGVkIGlzIG5vdCB5ZXQgc3Vw cG9ydGVkIG9uIGV4cHJlc3Npb24KKy0tICAgIGluZGV4ZXMsIHNvIHRoZSB1cGRhdGUgZmFs bHMgYmFjayB0byBhIG5vbi1IT1QgdXBkYXRlIChob3RfaWR4ID0gMCkuCistLSAgICBSZWFk cyBzdGF5IGNvcnJlY3QuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJM RSBoaV9qc29uYiAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGRhdGEganNvbmIK KykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9qc29uYl9uYW1l X2lkeCBPTiBoaV9qc29uYiAoKGRhdGEtPj4nbmFtZScpKTsKK0lOU0VSVCBJTlRPIGhpX2pz b25iIFZBTFVFUyAoMSwgJ3sibmFtZSI6IkFsaWNlIiwiYWdlIjozMH0nKTsKKy0tIENoYW5n aW5nIHRoZSBpbmRleGVkIGV4cHJlc3Npb24ncyB2YWx1ZSAobmFtZSk6IGV4cHJlc3Npb24g aW5kZXhlcyBhcmUgbm90CistLSB5ZXQgc3VwcG9ydGVkLCBzbyB0aGlzIGlzIGEgbm9uLUhP VCB1cGRhdGUuCitVUERBVEUgaGlfanNvbmIgU0VUIGRhdGEgPSBqc29uYl9zZXQoZGF0YSwg J3tuYW1lfScsICciQWxpY2UyIicpIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2Zv cmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIGdldF9o aV9jb3VudCgnaGlfanNvbmInKTsKKyB1cGRhdGVzIHwgaG90IHwgaG90X2lkeCAKKy0tLS0t LS0tLSstLS0tLSstLS0tLS0tLS0KKyAgICAgICAxIHwgICAwIHwgICAgICAgMAorKDEgcm93 KQorCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRUxFQ1QgaWQgRlJPTSBoaV9qc29u YiBXSEVSRSBkYXRhLT4+J25hbWUnID0gJ0FsaWNlMic7CisgaWQgCistLS0tCisgIDEKKygx IHJvdykKKworU0VMRUNUIGlkIEZST00gaGlfanNvbmIgV0hFUkUgZGF0YS0+PiduYW1lJyA9 ICdBbGljZSc7CisgaWQgCistLS0tCisoMCByb3dzKQorCitSRVNFVCBlbmFibGVfc2Vxc2Nh bjsKK0RST1AgVEFCTEUgaGlfanNvbmI7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0t IDkuIEdJTiBpbmRleCB3aXRoIGNoYW5nZWQgZXh0cmFjdGVkIGtleXM6IGhvdC1pbmRleGVk CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9naW4gKAorICAg IGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0YWdzIHRleHRbXQorKSBXSVRIIChmaWxsZmFj dG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2dpbl90YWdzX2lkeCBPTiBoaV9naW4gVVNJ TkcgZ2luICh0YWdzKTsKK0lOU0VSVCBJTlRPIGhpX2dpbiBWQUxVRVMgKDEsIEFSUkFZWyd0 YWcxJywgJ3RhZzInXSk7CistLSBBZGRpbmcgYSB0YWcgeWllbGRzIGEgZGlmZmVyZW50IGV4 dHJhY3RlZC1rZXkgc2V0OiBob3QtaW5kZXhlZC4KK1VQREFURSBoaV9naW4gU0VUIHRhZ3Mg PSBBUlJBWVsndGFnMScsICd0YWcyJywgJ3RhZzUnXSBXSEVSRSBpZCA9IDE7CitTRUxFQ1Qg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNo IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUICog RlJPTSBnZXRfaGlfY291bnQoJ2hpX2dpbicpOworIHVwZGF0ZXMgfCBob3QgfCBob3RfaWR4 IAorLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLQorICAgICAgIDEgfCAgIDEgfCAgICAgICAx CisoMSByb3cpCisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCBGUk9N IGhpX2dpbiBXSEVSRSB0YWdzIEA+IEFSUkFZWyd0YWc1J107CisgaWQgCistLS0tCisgIDEK KygxIHJvdykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIGhpX2dpbjsK Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMTAuIFBlci1pbmRleCBIT1QtaW5kZXhl ZCBjb3VudGVyczogc2tpcHBlZCB2cyBtYXRjaGVkCistLQorLS0gQSB0YWJsZSB3aXRoIHR3 byBpbmRlcGVuZGVudCBzZWNvbmRhcnkgaW5kZXhlcy4gIEFuIFVQREFURSB0b3VjaGVzIGEK Ky0tIGNvbHVtbiBjb3ZlcmVkIGJ5IG9ubHkgb25lIG9mIHRoZW07IHRoZSBIT1QtaW5kZXhl ZCBwYXRoIG11c3QgaW5zZXJ0CistLSBpbnRvIHRoYXQgb25lIGluZGV4IGFuZCBza2lwIHRo ZSBvdGhlci4gIHBnX3N0YXRfYWxsX2luZGV4ZXMgcmVwb3J0cworLS0gbWF0Y2hlZD4wIG9u IHRoZSB1cGRhdGVkIGluZGV4IGFuZCBza2lwcGVkPjAgb24gdGhlIHVudG91Y2hlZCBpbmRl eC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhvdGlkeF9wZXJp bmRleCAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGEgaW50LAorICAgIGIgaW50 CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaG90aWR4X3Blcmlu ZGV4X2EgT04gaG90aWR4X3BlcmluZGV4KGEpOworQ1JFQVRFIElOREVYIGhvdGlkeF9wZXJp bmRleF9iIE9OIGhvdGlkeF9wZXJpbmRleChiKTsKK0lOU0VSVCBJTlRPIGhvdGlkeF9wZXJp bmRleCBWQUxVRVMgKDEsIDEwMCwgMjAwKTsKKy0tIE1vZGlmeSBvbmx5IGNvbHVtbiBhLiAg SE9ULWluZGV4ZWQgaW5zZXJ0cyBpbnRvIGhvdGlkeF9wZXJpbmRleF9hIGFuZAorLS0gc2tp cHMgaG90aWR4X3BlcmluZGV4X2IgKHByaW1hcnkga2V5IGluZHJlbGlkIGlzIHRoZSB0YWJs ZSBpdHNlbGYgYW5kCistLSBhbHNvIHVuY2hhbmdlZCwgc28gaXQgY291bnRzIGFzIHNraXBw ZWQgdG9vKS4KK1VQREFURSBob3RpZHhfcGVyaW5kZXggU0VUIGEgPSAxMDEgV0hFUkUgaWQg PSAxOworLS0gRm9yY2UgZmx1c2ggb2YgcGVuZGluZyBzdGF0cyB0byB0aGUgc2hhcmVkIGVu dHJ5LgorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9y Y2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKK1NFTEVDVCBpbmRleHJlbG5hbWUsCisgICAgICAgbl90dXBfaG90X2luZGV4ZWRfdXBk X21hdGNoZWQgQVMgbWF0Y2hlZCwKKyAgICAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tp cHBlZCBBUyBza2lwcGVkCisgIEZST00gcGdfc3RhdF9hbGxfaW5kZXhlcworIFdIRVJFIHJl bG5hbWUgPSAnaG90aWR4X3BlcmluZGV4JworIE9SREVSIEJZIGluZGV4cmVsbmFtZTsKKyAg ICAgaW5kZXhyZWxuYW1lICAgICB8IG1hdGNoZWQgfCBza2lwcGVkIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tCisgaG90aWR4X3BlcmluZGV4X2EgICAg fCAgICAgICAxIHwgICAgICAgMAorIGhvdGlkeF9wZXJpbmRleF9iICAgIHwgICAgICAgMCB8 ICAgICAgIDEKKyBob3RpZHhfcGVyaW5kZXhfcGtleSB8ICAgICAgIDAgfCAgICAgICAxCiso MyByb3dzKQorCistLSBBIHNlY29uZCBVUERBVEUgdG91Y2hpbmcgb25seSBiIGludmVydHMg dGhlIGFzc2lnbm1lbnQuCitVUERBVEUgaG90aWR4X3BlcmluZGV4IFNFVCBiID0gMjAxIFdI RVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19z dGF0X2ZvcmNlX25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAor KDEgcm93KQorCitTRUxFQ1QgaW5kZXhyZWxuYW1lLAorICAgICAgIG5fdHVwX2hvdF9pbmRl eGVkX3VwZF9tYXRjaGVkIEFTIG1hdGNoZWQsCisgICAgICAgbl90dXBfaG90X2luZGV4ZWRf dXBkX3NraXBwZWQgQVMgc2tpcHBlZAorICBGUk9NIHBnX3N0YXRfYWxsX2luZGV4ZXMKKyBX SEVSRSByZWxuYW1lID0gJ2hvdGlkeF9wZXJpbmRleCcKKyBPUkRFUiBCWSBpbmRleHJlbG5h bWU7CisgICAgIGluZGV4cmVsbmFtZSAgICAgfCBtYXRjaGVkIHwgc2tpcHBlZCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLQorIGhvdGlkeF9wZXJpbmRl eF9hICAgIHwgICAgICAgMSB8ICAgICAgIDEKKyBob3RpZHhfcGVyaW5kZXhfYiAgICB8ICAg ICAgIDEgfCAgICAgICAxCisgaG90aWR4X3BlcmluZGV4X3BrZXkgfCAgICAgICAwIHwgICAg ICAgMgorKDMgcm93cykKKworLS0gSW52YXJpYW50OiBtYXRjaGVkICsgc2tpcHBlZCA9PSBv d25pbmcgdGFibGUncyBuX3R1cF9ob3RfaW5kZXhlZF91cGQuCitTRUxFQ1QgaW5kZXhyZWxu YW1lLAorICAgICAgIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkICsgbl90dXBfaG90 X2luZGV4ZWRfdXBkX3NraXBwZWQgQVMgdG90YWwsCisgICAgICAgKFNFTEVDVCBuX3R1cF9o b3RfaW5kZXhlZF91cGQgRlJPTSBwZ19zdGF0X2FsbF90YWJsZXMKKyAgICAgICAgIFdIRVJF IHJlbG5hbWUgPSAnaG90aWR4X3BlcmluZGV4JykgQVMgdGFibGVfaG90X2lkeF91cGQKKyAg RlJPTSBwZ19zdGF0X2FsbF9pbmRleGVzCisgV0hFUkUgcmVsbmFtZSA9ICdob3RpZHhfcGVy aW5kZXgnCisgT1JERVIgQlkgaW5kZXhyZWxuYW1lOworICAgICBpbmRleHJlbG5hbWUgICAg IHwgdG90YWwgfCB0YWJsZV9ob3RfaWR4X3VwZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisgaG90aWR4X3BlcmluZGV4X2EgICAgfCAg ICAgMiB8ICAgICAgICAgICAgICAgICAyCisgaG90aWR4X3BlcmluZGV4X2IgICAgfCAgICAg MiB8ICAgICAgICAgICAgICAgICAyCisgaG90aWR4X3BlcmluZGV4X3BrZXkgfCAgICAgMiB8 ICAgICAgICAgICAgICAgICAyCisoMyByb3dzKQorCistLSBCb29sZWFuIGFzc2VydGlvbiBv ZiB0aGUgc2FtZSBpbnZhcmlhbnQuICBUaGlzIGlzIHRoZSBjYW5vbmljYWwgZm9ybQorLS0g cmV2aWV3ZXJzIGFza2VkIGZvcjogZXZlcnkgaW5kZXggZW50cnkgaXMgZWl0aGVyIG1hdGNo ZWQgKHRoZSBpbmRleAorLS0gZ290IGEgZnJlc2ggaW5zZXJ0IHRoaXMgVVBEQVRFKSBvciBz a2lwcGVkIChIT1QtaW5kZXhlZCBjb3JyZWN0bHkKKy0tIGF2b2lkZWQgYW4gaW5zZXJ0IGJl Y2F1c2UgdGhlIGluZGV4J3MgYXR0cnMgZGlkIG5vdCBjaGFuZ2UpLiAgSWYgdGhlCistLSB0 d28gY291bnRlcnMgZHJpZnQgYXBhcnQgZnJvbSB0aGUgdGFibGUtbGV2ZWwgbl90dXBfaG90 X2luZGV4ZWRfdXBkIHdlCistLSBoYXZlIGVpdGhlciBsb3N0IGEgcGVyLWluZGV4IGluY3Jl bWVudCBvciBkb3VibGUtY291bnRlZCBvbmUuCitTRUxFQ1QgYm9vbF9hbmQoKG5fdHVwX2hv dF9pbmRleGVkX3VwZF9tYXRjaGVkICsgbl90dXBfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQp ID0KKyAgICAgICAgICAgICAgICAoU0VMRUNUIG5fdHVwX2hvdF9pbmRleGVkX3VwZCBGUk9N IHBnX3N0YXRfYWxsX3RhYmxlcworICAgICAgICAgICAgICAgICAgV0hFUkUgcmVsbmFtZSA9 ICdob3RpZHhfcGVyaW5kZXgnKSkKKyAgICAgICAgIEFTIHBlcmluZGV4X2ludmFyaWFudF9o b2xkcworICBGUk9NIHBnX3N0YXRfYWxsX2luZGV4ZXMKKyBXSEVSRSByZWxuYW1lID0gJ2hv dGlkeF9wZXJpbmRleCc7CisgcGVyaW5kZXhfaW52YXJpYW50X2hvbGRzIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK0RST1AgVEFCTEUgaG90aWR4X3Bl cmluZGV4OworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxMS4gTG9uZyBob3QtbG9v cCBVUERBVEUgc3RheXMgY29tcGFjdCBhbmQgSE9ULWluZGV4ZWQKKy0tCistLSBBIGxvbmcg cnVuIG9mIEhPVC1pbmRleGVkIFVQREFURXMgdG8gYSBzaW5nbGUgcm93IHN0YXlzIGNvbXBh Y3Q6IHBydW5lCistLSBjb2xsYXBzZXMgZWFjaCBkZWFkIHZlcnNpb24gdG8gYSByZWRpcmVj dCB0byB0aGUgbGl2ZSB0dXBsZSBhbmQgcmV1c2VzIGl0cworLS0gc2xvdCwgc28gdGhlIHJv dyBuZXZlciBsZWF2ZXMgaXRzIG9yaWdpbmFsIHBhZ2UgYW5kIHRoZSBjaGFpbiBkb2VzIG5v dCBncm93CistLSB1bmJvdW5kZWQuICBFdmVyeSBVUERBVEUgdGhhdCBjaGFuZ2VzIHRoZSBp bmRleGVkIGNvbHVtbiAoYW5kIGxlYXZlcyBhbm90aGVyCistLSBpbmRleCwgaGVyZSB0aGUg UEssIHVuY2hhbmdlZCkgdGFrZXMgdGhlIEhPVC1pbmRleGVkIHBhdGguCistLSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9jaGFpbmNhcCAoCisgICAgaWQgaW50 IFBSSU1BUlkgS0VZLAorICAgIGEgaW50CispIFdJVEggKGZpbGxmYWN0b3IgPSAxMCk7CitD UkVBVEUgSU5ERVggaGlfY2hhaW5jYXBfYV9pZHggT04gaGlfY2hhaW5jYXAoYSk7CitJTlNF UlQgSU5UTyBoaV9jaGFpbmNhcCBWQUxVRVMgKDEsIDApOworRE8gJCQKK0RFQ0xBUkUKKyAg ICBpIGludDsKK0JFR0lOCisgICAgRk9SIGkgSU4gMSAuLiAyMDAgTE9PUAorICAgICAgICBV UERBVEUgaGlfY2hhaW5jYXAgU0VUIGEgPSBpIFdIRVJFIGlkID0gMTsKKyAgICBFTkQgTE9P UDsKK0VORCAkJDsKKy0tIEFmdGVyIDIwMCBVUERBVEVzIHRoZSByb3cncyB2YWx1ZSBpcyAy MDAuCitTRUxFQ1QgYSBGUk9NIGhpX2NoYWluY2FwIFdIRVJFIGlkID0gMTsKKyAgYSAgCist LS0tLQorIDIwMAorKDEgcm93KQorCistLSBFdmVyeSBVUERBVEUgdG9vayB0aGUgSE9ULWlu ZGV4ZWQgcGF0aCAodGhlIFBLIGluZGV4IGlzIHVuY2hhbmdlZCwgc28gaXQgaXMKKy0tIHNr aXBwZWQpLCBzbyBuX3R1cF9ob3RfaW5kZXhlZF91cGQgYWR2YW5jZWQuCitTRUxFQ1QgcGdf c3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGhvdF9p ZHggPiAwIEFTIGhvdF9pbmRleGVkX2ZpcmVkCisgIEZST00gZ2V0X2hpX2NvdW50KCdoaV9j aGFpbmNhcCcpOworIGhvdF9pbmRleGVkX2ZpcmVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLQor IHQKKygxIHJvdykKKworLS0gVGhlIGhlYXAgc3RheWVkIGNvbXBhY3Q6IHBydW5lK2NvbGxh cHNlIHJlY2xhaW1lZCB0aGUgZGVhZCB2ZXJzaW9ucywgc28gdGhlCistLSBzaW5nbGUgbGl2 ZSByb3cgc3RpbGwgb2NjdXBpZXMganVzdCBvbmUgcGFnZS4KK1NFTEVDVCByZWxwYWdlcyA8 PSAxIEFTIGhlYXBfc3RheWVkX2NvbXBhY3QKKyAgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxu YW1lID0gJ2hpX2NoYWluY2FwJzsKKyBoZWFwX3N0YXllZF9jb21wYWN0IAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitEUk9QIFRBQkxFIGhpX2NoYWluY2FwOwor LS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxMi4gUmVjbGFtYXRpb24gb2YgYSBjb2xs YXBzZWQgSE9ULWluZGV4ZWQgY2hhaW4gYnkgcHJ1bmUKKy0tCistLSBBIGRlYWQgSE9ULWlu ZGV4ZWQgY2hhaW4gbWVtYmVyIGlzIHByZXNlcnZlZCBhdCBwcnVuZSB0aW1lIChpdHMgc3Rh bGUgbGVhZgorLS0gbWF5IHN0aWxsIGV4aXN0KSBhbmQgdGhlIGNoYWluIGNvbGxhcHNlcyB0 byBhbiBMUF9SRURJUkVDVCBmb3J3YXJkZXI7IHRoZQorLS0gaW5kZXggY2xlYW51cCBwYXNz IHRoZW4gc3dlZXBzIHRoZSBzdGFsZSBsZWFmLCBhbmQgYSBzZWNvbmQgVkFDVVVNIHJlY2xh aW1zCistLSB0aGUgbm93LXVucmVmZXJlbmNlZCBtZW1iZXIgYW5kIHJlLXBvaW50cyB0aGUg cmVkaXJlY3QuICBTbyB0aGUgY2hhaW4gaXMKKy0tIGZ1bGx5IHJlY2xhaW1lZCBhZnRlciB0 aGUgc2Vjb25kIFZBQ1VVTSwgbm90IHRoZSBmaXJzdC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorQ1JFQVRFIFRBQkxFIGhpX3JlY2xhaW0gKAorICAgIGlkIGludCBQUklNQVJZIEtF WSwKKyAgICBhIGludAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVY IGhpX3JlY2xhaW1fYV9pZHggT04gaGlfcmVjbGFpbShhKTsKK0lOU0VSVCBJTlRPIGhpX3Jl Y2xhaW0gVkFMVUVTICgxLCAxMDApOworLS0gR2VuZXJhdGUgYSBjb2xsYXBzZWQgY2hhaW4g dmlhIGEgSE9ULWluZGV4ZWQgdXBkYXRlLgorVVBEQVRFIGhpX3JlY2xhaW0gU0VUIGEgPSAy MDAgV0hFUkUgaWQgPSAxOworU0VMRUNUIG5faG90X2luZGV4ZWQgPj0gMSBBUyBob3RfaW5k ZXhlZF9wcmVzZW50X2JlZm9yZV9yZWNsYWltCisgIEZST00gcGdfcmVsYXRpb25faG90X2lu ZGV4ZWRfc3RhdHMoJ2hpX3JlY2xhaW0nKTsKKyBob3RfaW5kZXhlZF9wcmVzZW50X2JlZm9y ZV9yZWNsYWltIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAor KDEgcm93KQorCistLSBEZWxldGUgdGhlIGxpdmUgdHVwbGUuICBUaGUgZmlyc3QgVkFDVVVN IGNvbGxhcHNlcyB0aGUgZGVhZCBjaGFpbiBhbmQgc3dlZXBzCistLSB0aGUgc3RhbGUgbGVh ZjsgdGhlIHNlY29uZCByZWNsYWltcyB0aGUgbm93LXVucmVmZXJlbmNlZCBtZW1iZXJzLgor REVMRVRFIEZST00gaGlfcmVjbGFpbSBXSEVSRSBpZCA9IDE7CitWQUNVVU0gaGlfcmVjbGFp bTsKK1ZBQ1VVTSBoaV9yZWNsYWltOworU0VMRUNUIG5faG90X2luZGV4ZWQgQVMgaG90X2lu ZGV4ZWRfYWZ0ZXJfcmVjbGFpbSwKKyAgICAgICBuX2NoYWlucyBBUyBjaGFpbnNfYWZ0ZXJf cmVjbGFpbQorICBGUk9NIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzKCdoaV9yZWNs YWltJyk7CisgaG90X2luZGV4ZWRfYWZ0ZXJfcmVjbGFpbSB8IGNoYWluc19hZnRlcl9yZWNs YWltIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAwIHwgICAgICAgICAgICAgICAgICAgIDAK KygxIHJvdykKKworRFJPUCBUQUJMRSBoaV9yZWNsYWltOworLS0gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCistLSAxMy4gUGFnZSB3aXRoIGEgcHJlc2VydmVkIEhPVC1pbmRleGVkIG1lbWJl ciBpcyBuZXZlciBtYXJrZWQgYWxsLXZpc2libGUKKy0tCistLSBwcnVuZWhlYXAgZGVsaWJl cmF0ZWx5IGxlYXZlcyBQRF9BTExfVklTSUJMRSBjbGVhciBvbiBhbnkgcGFnZSB0aGF0IHN0 aWxsCistLSBjYXJyaWVzIGEgcHJlc2VydmVkIEhPVC1pbmRleGVkIG1lbWJlcjogYW4gaW5k ZXgtb25seSBzY2FuIG11c3QgaGVhcC1mZXRjaAorLS0gdGhyb3VnaCB0aGUgY2hhaW4gc28g dGhlIHJlYWQtc2lkZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgY2FuIGZpbHRlciBzdGFs ZSBidHJlZQorLS0gZW50cmllcy4KKy0tCistLSBXZSBmb3JjZSB0aGUgZnJlZXplIHBhdGgg d2l0aCBWQUNVVU0gKEZSRUVaRSwgRElTQUJMRV9QQUdFX1NLSVBQSU5HKSBhbmQKKy0tIHRo ZW4gcmVhZCBwZF9mbGFncyB2aWEgcGFnZWluc3BlY3QucGFnZV9oZWFkZXIuICBUaGUgcGFn ZSBtdXN0IHN0aWxsIGNhcnJ5CistLSBhIEhPVC1pbmRleGVkIG1lbWJlciAobl9ob3RfaW5k ZXhlZCA+IDApIEFORCBtdXN0IG5vdCBoYXZlIFBEX0FMTF9WSVNJQkxFCistLSAoMHgwMDA0 KS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3ZtICgKKyAg ICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgYSBpbnQKKykgV0lUSCAoZmlsbGZhY3RvciA9 IDUwKTsKK0NSRUFURSBJTkRFWCBoaV92bV9hX2lkeCBPTiBoaV92bShhKTsKK0lOU0VSVCBJ TlRPIGhpX3ZtIFZBTFVFUyAoMSwgMSk7CistLSBUd28gSE9ULWluZGV4ZWQgdXBkYXRlcyBs ZWF2ZSBhIG11bHRpLWhvcCBjaGFpbiwgc28gYSBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQKKy0t IG1lbWJlciByZW1haW5zIG9uIHRoZSBwYWdlIGFmdGVyIHBydW5lLCB3aGljaCBpcyB3aGF0 IHRoaXMgdGVzdCBuZWVkcy4KK1VQREFURSBoaV92bSBTRVQgYSA9IDIgV0hFUkUgaWQgPSAx OworVVBEQVRFIGhpX3ZtIFNFVCBhID0gMyBXSEVSRSBpZCA9IDE7CistLSBGb3JjZSB0aGUg YWxsLXZpc2libGUgYml0IGRlY2lzaW9uOiBWQUNVVU0gd2l0aCBESVNBQkxFX1BBR0VfU0tJ UFBJTkcKKy0tIGNvbnNpZGVycyBldmVyeSBwYWdlOyBGUkVFWkUgcHVzaGVzIGhpbnQgYml0 cyBoYXJkLiAgQWZ0ZXIgdGhpcywgYW55CistLSBwYWdlIGJlYXJpbmcgYSBwcmVzZXJ2ZWQg SE9ULWluZGV4ZWQgbWVtYmVyIG11c3Qgc3RpbGwgcmVwb3J0IGFsbF92aXNpYmxlID0gMC4K K1ZBQ1VVTSAoRlJFRVpFLCBESVNBQkxFX1BBR0VfU0tJUFBJTkcpIGhpX3ZtOworU0VMRUNU IG5faG90X2luZGV4ZWQgPj0gMSBBUyBob3RfaW5kZXhlZF9wcmVzZW50CisgIEZST00gcGdf cmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMoJ2hpX3ZtJyk7CisgaG90X2luZGV4ZWRfcHJl c2VudCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworLS0gUERfQUxM X1ZJU0lCTEUgPSAweDAwMDQuICBNdXN0IGJlIDAgb24gYSBwYWdlIHdpdGggYSBwcmVzZXJ2 ZWQgbWVtYmVyLgorU0VMRUNUIChmbGFncyAmIDQpID0gMCBBUyBub3RfbWFya2VkX2FsbF92 aXNpYmxlCisgIEZST00gcGFnZV9oZWFkZXIoZ2V0X3Jhd19wYWdlKCdoaV92bScsIDApKTsK KyBub3RfbWFya2VkX2FsbF92aXNpYmxlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg dAorKDEgcm93KQorCitEUk9QIFRBQkxFIGhpX3ZtOworLS0gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCistLSAxNC4gQ3ljbGUta2V5IGRlZHVwOiBjb2x1bW4gcmVuYW1lIGEgLT4gYiAtPiBh IHN0YXlzIGNvcnJlY3QKKy0tCistLSBBIHJlbmFtZSBkb2VzIG5vdCByZXdyaXRlIGhlYXAg b3IgaW5kZXggZW50cmllczsgaXQgb25seSB1cGRhdGVzIHRoZQorLS0gY2F0YWxvZy4gIFRo ZSByZWxjYWNoZSBpbnZhbGlkYXRpb24gbXVzdCB0cmlnZ2VyIGEgZnJlc2ggYXR0cmlidXRl CistLSBiaXRtYXAgYW5kIHRoZSBIT1QtaW5kZXhlZCBwcmVkaWNhdGUgbXVzdCBjb21wYXJl IGF0dHJpYnV0ZSAqbnVtYmVycyosCistLSBub3QgYXR0cmlidXRlICpuYW1lcyouICBBZnRl ciB0d28gcmVuYW1lcyB0aGF0IG5ldCB0byBpZGVudGl0eSwgZXZlcnkKKy0tIHN1YnNlcXVl bnQgVVBEQVRFIG11c3QgY29udGludWUgdG8gZHJpdmUgdGhlIEhPVC1pbmRleGVkIHBhdGgu CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9jeWNsZSAoCisg ICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGEgaW50CispIFdJVEggKGZpbGxmYWN0b3Ig PSA1MCk7CitDUkVBVEUgSU5ERVggaGlfY3ljbGVfYV9pZHggT04gaGlfY3ljbGUoYSk7CitJ TlNFUlQgSU5UTyBoaV9jeWNsZSBWQUxVRVMgKDEsIDEwMCk7CistLSBDeWNsZSB0aGUgY29s dW1uIG5hbWUgYW5kIGNvbmZpcm0gYm90aCBpbnRlcm1lZGlhdGUgZm9ybXMgZHJpdmUgSE9U LWluZGV4ZWQuCitBTFRFUiBUQUJMRSBoaV9jeWNsZSBSRU5BTUUgQ09MVU1OIGEgVE8gYjsK K1VQREFURSBoaV9jeWNsZSBTRVQgYiA9IDIwMCBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdf c3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGhvdF9p ZHggPiAwIEFTIGhvdF9pbmRleGVkX2FmdGVyX2ZpcnN0X3JlbmFtZQorICBGUk9NIGdldF9o aV9jb3VudCgnaGlfY3ljbGUnKTsKKyBob3RfaW5kZXhlZF9hZnRlcl9maXJzdF9yZW5hbWUg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworQUxU RVIgVEFCTEUgaGlfY3ljbGUgUkVOQU1FIENPTFVNTiBiIFRPIGE7CitVUERBVEUgaGlfY3lj bGUgU0VUIGEgPSAzMDAgV0hFUkUgaWQgPSAxOworLS0gTG9va3VwIHZpYSB0aGUgaW5kZXgg cmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSwgbm90IGFueSBvZiB0aGUKKy0tIHByZS1yZW5h bWUgdmFsdWVzLgorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNUIGlkLCBhIEZS T00gaGlfY3ljbGUgV0hFUkUgYSA9IDMwMDsKKyBpZCB8ICBhICAKKy0tLS0rLS0tLS0KKyAg MSB8IDMwMAorKDEgcm93KQorCitTRUxFQ1QgaWQgRlJPTSBoaV9jeWNsZSBXSEVSRSBhID0g MTAwOworIGlkIAorLS0tLQorKDAgcm93cykKKworU0VMRUNUIGlkIEZST00gaGlfY3ljbGUg V0hFUkUgYSA9IDIwMDsKKyBpZCAKKy0tLS0KKygwIHJvd3MpCisKK1JFU0VUIGVuYWJsZV9z ZXFzY2FuOworRFJPUCBUQUJMRSBoaV9jeWNsZTsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorLS0gMTUuIFN1bW1hcml6aW5nLW9ubHkgY29sdW1uIFVQREFURSBwcm9kdWNlcyBDTEFT U0lDLCBub3QgSU5ERVhFRAorLS0KKy0tIEhlYXBVcGRhdGVIb3RBbGxvd2FibGUgcmV0dXJu cyBIRUFQX1VQREFURV9IT1Qgd2hlbiBldmVyeQorLS0gbW9kaWZpZWQgaW5kZXhlZCBhdHRy aWJ1dGUgaXMgY292ZXJlZCBvbmx5IGJ5IHN1bW1hcml6aW5nIGluZGV4ZXMuCistLSBBIEJS SU4tb25seSBjb2x1bW4gaXMgdGhlIGNhbm9uaWNhbCBjYXNlOiB0aGUgQlJJTiBpbmRleCBn ZXRzIGEKKy0tIG5ldyBzdW1tYXJ5IGVudHJ5IHZpYSBhbWluc2VydCwgYnV0IG5vIHBlci11 cGRhdGUgYnRyZWUgZW50cnkgaXMKKy0tIG5lZWRlZCBhbmQgSE9ULWluZGV4ZWQgZG9lcyBu b3QgZmlyZS4gIFRoZSBzaWduYWwgaXMKKy0tIG5fdHVwX2hvdF91cGQgPiAwIHdpdGggbl90 dXBfaG90X2luZGV4ZWRfdXBkIHVuY2hhbmdlZC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorQ1JFQVRFIFRBQkxFIGhpX2JyaW4gKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAg ICBiY29sIGludAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhp X2JyaW5faWR4IE9OIGhpX2JyaW4gVVNJTkcgYnJpbihiY29sKTsKK0lOU0VSVCBJTlRPIGhp X2JyaW4gVkFMVUVTICgxLCAxMDApOworLS0gQ2FwdHVyZSB0aGUgSE9ULWluZGV4ZWQgY291 bnRlciBiZWZvcmUsIGRyaXZlIGEgQlJJTi1vbmx5IHVwZGF0ZSwKKy0tIGFuZCBhc3NlcnQg dGhhdCBjbGFzc2ljIEhPVCBhZHZhbmNlZCB3aGlsZSBIT1QtaW5kZXhlZCBkaWQgbm90Lgor U0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0YXRfZm9yY2VfbmV4 dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NF TEVDVCBob3RfaWR4IEFTIGhvdF9pZHhfYmVmb3JlIEZST00gZ2V0X2hpX2NvdW50KCdoaV9i cmluJykgXGdzZXQKK1VQREFURSBoaV9icmluIFNFVCBiY29sID0gMjAwIFdIRVJFIGlkID0g MTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKKyBwZ19zdGF0X2ZvcmNl X25leHRfZmx1c2ggCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQor CitTRUxFQ1QgKGhvdCAtIDApID4gMCBBUyBjbGFzc2ljX2hvdF9maXJlZCwKKyAgICAgICBo b3RfaWR4ID0gOmhvdF9pZHhfYmVmb3JlIEFTIGhvdF9pbmRleGVkX2RpZF9ub3RfZmlyZQor ICBGUk9NIGdldF9oaV9jb3VudCgnaGlfYnJpbicpOworIGNsYXNzaWNfaG90X2ZpcmVkIHwg aG90X2luZGV4ZWRfZGlkX25vdF9maXJlIAorLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIHQgICAgICAgICAgICAgICAgIHwgdAorKDEgcm93KQor CistLSBUaGUgQlJJTiBpbmRleCBzZWVzIHRoZSBuZXcgdmFsdWUgdmlhIGFtaW5zZXJ0Lgor U0VMRUNUIGJjb2wgRlJPTSBoaV9icmluIFdIRVJFIGlkID0gMTsKKyBiY29sIAorLS0tLS0t CisgIDIwMAorKDEgcm93KQorCitEUk9QIFRBQkxFIGhpX2JyaW47CistLSAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKy0tIDE2LiBVTklRVUUgaW5kZXggb24gYSB0eXBlIHdoZXJlIGltYWdl IGVxdWFsaXR5ICE9IG9wZXJhdG9yIGVxdWFsaXR5CistLQorLS0gbnVtZXJpYyAxLjAgYW5k IDEuMDAgYXJlIGVxdWFsIHVuZGVyIHRoZSBidHJlZSBvcGNsYXNzIGJ1dCBoYXZlCistLSBk aWZmZXJlbnQgb24tZGlzayBpbWFnZXMuICBBIEhPVC1pbmRleGVkIHVwZGF0ZSAxLjAgLT4g MS4wMCBpbnNlcnRzIGEKKy0tIGZyZXNoIGxlYWYgY2FycnlpbmcgdGhlIGxpdmUgaW1hZ2Ug YW5kIGxlYXZlcyBhIHN0YWxlIGxlYWYgZm9yIDEuMAorLS0gKHRoZSBob3AncyBtb2RpZmll ZC1hdHRycyBiaXRtYXAgbWFya3MgayBjaGFuZ2VkLCBzaW5jZSBtb2RpZmllZC1jb2x1bW4K Ky0tIGRldGVjdGlvbiBpcyBpbWFnZS1iYXNlZCkuICBBIGxhdGVyIElOU0VSVCBvZiBhIHZh bHVlIGVxdWFsIHVuZGVyIHRoZQorLS0gb3BjbGFzcyBtdXN0IHN0aWxsIGJlIGRldGVjdGVk IGFzIGEgZHVwbGljYXRlOiB0aGUgdW5pcXVlIGNoZWNrIHJlYWNoZXMKKy0tIHRoZSBsaXZl IHR1cGxlIHRocm91Z2ggdGhlIGZyZXNoIGxlYWYsIHdoaWNoIHBvaW50cyBkaXJlY3RseSBh dCBpdCAobm8gaG9wCistLSBhZnRlciBpdCwgc28gdGhlIG92ZXJsYXAgaXMgZW1wdHkgYW5k IHRoZSBsZWFmIGlzIGEgZ2VudWluZSBjb25mbGljdCk7IHRoZQorLS0gc3RhbGUgMS4wIGxl YWYgaXMgc2tpcHBlZCBiZWNhdXNlIHRoZSBrLWNoYW5naW5nIGhvcCBvdmVybGFwcyB0aGUg dW5pcXVlCistLSBpbmRleCdzIGF0dHJpYnV0ZS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorQ1JFQVRFIFRBQkxFIGhpX3VudW0gKGsgbnVtZXJpYyBVTklRVUUsIGogaW50KSBXSVRI IChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX3VudW1faiBPTiBoaV91bnVt KGopOyAgICAgICAgICAgICAtLSAybmQgaW5kZXhlZCBhdHRyLCBrZXB0IGZpeGVkCitJTlNF UlQgSU5UTyBoaV91bnVtIFZBTFVFUyAoMS4wLCAxMDApOworVVBEQVRFIGhpX3VudW0gU0VU IGsgPSAxLjAwIFdIRVJFIGogPSAxMDA7ICAgICAgICAtLSBIT1QtaW5kZXhlZDogMS4wIC0+ IDEuMDAKK1NFTEVDVCBuX2hvdF9pbmRleGVkID4gMCBBUyBtYWRlX2hvdF9pbmRleGVkCisg IEZST00gcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMoJ2hpX3VudW0nKTsKKyBtYWRl X2hvdF9pbmRleGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCistLSBB IG51bWVyaWNhbGx5LWVxdWFsIGluc2VydCBtdXN0IGNvbmZsaWN0ICh0aGUgZnJlc2ggbGVh ZiBjYXRjaGVzIGl0KToKK0lOU0VSVCBJTlRPIGhpX3VudW0gVkFMVUVTICgxLjAsIDEpOyAg ICAgICAgICAgICAgLS0gZXhwZWN0IGR1cGxpY2F0ZSBrZXkgZXJyb3IKK0VSUk9SOiAgZHVw bGljYXRlIGtleSB2YWx1ZSB2aW9sYXRlcyB1bmlxdWUgY29uc3RyYWludCAiaGlfdW51bV9r X2tleSIKK0RFVEFJTDogIEtleSAoayk9KDEuMCkgYWxyZWFkeSBleGlzdHMuCistLSBBIGdl bnVpbmVseSBkaWZmZXJlbnQgdmFsdWUgaXMgYWNjZXB0ZWQ6CitJTlNFUlQgSU5UTyBoaV91 bnVtIFZBTFVFUyAoMi4wLCAyKTsKK1NFTEVDVCBrLCBqIEZST00gaGlfdW51bSBPUkRFUiBC WSBqOworICBrICAgfCAgaiAgCistLS0tLS0rLS0tLS0KKyAgMi4wIHwgICAyCisgMS4wMCB8 IDEwMAorKDIgcm93cykKKworRFJPUCBUQUJMRSBoaV91bnVtOworLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCistLSAxNy4gQ1JFQVRFIElOREVYIGFuZCBSRUlOREVYIG92ZXIgbGl2ZSBI T1QtaW5kZXhlZCBjaGFpbnMKKy0tCistLSBBIGZyZXNobHkgYnVpbHQgb3IgcmVidWlsdCBp bmRleCBtdXN0IHJlZmxlY3QgY3VycmVudCB2YWx1ZXMsIG5ldmVyIGEKKy0tIHN0YWxlIGNo YWluIG1lbWJlcjogdGhlIGJ1aWxkIHNjYW5zIGxpdmUgdHVwbGVzIG9ubHkgYW5kIHBvaW50 cyBlYWNoCistLSBIT1QtaW5kZXhlZCBsaXZlIHR1cGxlJ3MgZW50cnkgYXQgaXRzIG93biBU SUQsIHNvIHRoZSBuZXcgZW50cmllcyBoYXZlIG5vCistLSBob3AgYWZ0ZXIgdGhlbSBhbmQg dGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBrZWVwcyB0aGVtLgorLS0gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfcmVpbmRleCAoaWQgaW50IFBSSU1BUlkg S0VZLCBhIGludCwgYiBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5E RVggaGlfcmVpbmRleF9hIE9OIGhpX3JlaW5kZXgoYSk7CitJTlNFUlQgSU5UTyBoaV9yZWlu ZGV4IFNFTEVDVCBnLCBnLCBnIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYpIGc7CitVUERB VEUgaGlfcmVpbmRleCBTRVQgYSA9IGEgKyAxMDA7ICAgICAgICAgICAgICAgIC0tIEhPVC1p bmRleGVkIG9uIGEKK1VQREFURSBoaV9yZWluZGV4IFNFVCBhID0gYSArIDEwMDsgICAgICAg ICAgICAgICAgLS0gYWdhaW4gLT4gbG9uZ2VyIGNoYWlucworU0VMRUNUIG5faG90X2luZGV4 ZWQgPiAwIEFTIG1hZGVfaG90X2luZGV4ZWQKKyAgRlJPTSBwZ19yZWxhdGlvbl9ob3RfaW5k ZXhlZF9zdGF0cygnaGlfcmVpbmRleCcpOworIG1hZGVfaG90X2luZGV4ZWQgCistLS0tLS0t LS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKKy0tIEJ1aWxkIGEgTkVXIGluZGV4IGFuZCBS RUlOREVYIHRoZSBleGlzdGluZyBvbmUgb3ZlciB0aGUgbGl2ZSBjaGFpbnMuCitDUkVBVEUg SU5ERVggaGlfcmVpbmRleF9iIE9OIGhpX3JlaW5kZXgoYik7CitSRUlOREVYIElOREVYIGhp X3JlaW5kZXhfYTsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCwgYSBG Uk9NIGhpX3JlaW5kZXggV0hFUkUgYSA9IDIwNDsgICAgICAgLS0gY3VycmVudCB2YWx1ZSAt PiBpZCA0CisgaWQgfCAgYSAgCistLS0tKy0tLS0tCisgIDQgfCAyMDQKKygxIHJvdykKKwor U0VMRUNUIGNvdW50KCopIEZST00gaGlfcmVpbmRleCBXSEVSRSBhID0gNDsgICAgICAtLSBv YnNvbGV0ZSB2YWx1ZSAtPiAwCisgY291bnQgCistLS0tLS0tCisgICAgIDAKKygxIHJvdykK KworU0VMRUNUIGlkIEZST00gaGlfcmVpbmRleCBXSEVSRSBiID0gMjsgICAgICAgICAgICAt LSB2aWEgZnJlc2hseSBidWlsdCBpbmRleCAtPiAyCisgaWQgCistLS0tCisgIDIKKygxIHJv dykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIGhpX3JlaW5kZXg7Cist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDE4LiBEUk9QIGV2ZXJ5IGluZGV4IG92ZXIg bGl2ZSBIT1QtaW5kZXhlZCBjaGFpbnMsIHRoZW4gVkFDVVVNCistLQorLS0gQWZ0ZXIgYWxs IGluZGV4ZXMgYXJlIGRyb3BwZWQsIGhlYXAgcGFnZXMgbWF5IHN0aWxsIGNhcnJ5IHByZXNl cnZlZAorLS0gSE9ULWluZGV4ZWQgbWVtYmVycyBsZWZ0IGJ5IGVhcmxpZXIgdXBkYXRlcy4g IFZBQ1VVTSBvZiBzdWNoIGEgbm8taW5kZXgKKy0tIHJlbGF0aW9uIG11c3QgY29tcGxldGUg d2l0aG91dCBlcnJvciwgYW5kIHJlYWRzIG11c3Qgc3RheSBjb3JyZWN0IHZpYSB0aGUKKy0t IHJlZGlyZWN0IGZvcndhcmRlcnMuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFU RSBUQUJMRSBoaV9kcm9waWR4IChpZCBpbnQgUFJJTUFSWSBLRVksIGEgaW50KSBXSVRIIChm aWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2Ryb3BpZHhfYSBPTiBoaV9kcm9w aWR4KGEpOworSU5TRVJUIElOVE8gaGlfZHJvcGlkeCBTRUxFQ1QgZywgZyBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCA2KSBnOworVVBEQVRFIGhpX2Ryb3BpZHggU0VUIGEgPSBhICsgMTAw OyAgICAgICAgICAgICAgICAtLSBIT1QtaW5kZXhlZCBvbiBhCitVUERBVEUgaGlfZHJvcGlk eCBTRVQgYSA9IGEgKyAxMDA7ICAgICAgICAgICAgICAgIC0tIGFnYWluIC0+IGxvbmdlciBj aGFpbnMKK1NFTEVDVCBuX2hvdF9pbmRleGVkID4gMCBBUyBtYWRlX2hvdF9pbmRleGVkCisg IEZST00gcGdfcmVsYXRpb25faG90X2luZGV4ZWRfc3RhdHMoJ2hpX2Ryb3BpZHgnKTsKKyBt YWRlX2hvdF9pbmRleGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCist LSBEcm9wIGV2ZXJ5IGluZGV4LCBsZWF2aW5nIHByZXNlcnZlZCBIT1QtaW5kZXhlZCBtZW1i ZXJzIHdpdGggbm8gaW5kZXggdG8gc3dlZXAuCitEUk9QIElOREVYIGhpX2Ryb3BpZHhfYTsK K0FMVEVSIFRBQkxFIGhpX2Ryb3BpZHggRFJPUCBDT05TVFJBSU5UIGhpX2Ryb3BpZHhfcGtl eTsKKy0tIE11c3Qgbm90IGNyYXNoIG9uIHRoZSBuby1pbmRleCBwYXRoOyB0d28gcGFzc2Vz IGV4ZXJjaXNlIHRoZSBzZWNvbmQtcGFzcworLS0gcmVjbGFpbSBndWFyZCBhcyB3ZWxsLgor VkFDVVVNIGhpX2Ryb3BpZHg7CitWQUNVVU0gaGlfZHJvcGlkeDsKKy0tIFJlYWRzIHJlbWFp biBjb3JyZWN0IGFmdGVyIHRoZSBpbmRleGVzIGFyZSBnb25lLgorU0VMRUNUIGlkLCBhIEZS T00gaGlfZHJvcGlkeCBPUkRFUiBCWSBpZDsKKyBpZCB8ICBhICAKKy0tLS0rLS0tLS0KKyAg MSB8IDIwMQorICAyIHwgMjAyCisgIDMgfCAyMDMKKyAgNCB8IDIwNAorICA1IHwgMjA1Cisg IDYgfCAyMDYKKyg2IHJvd3MpCisKK0RST1AgVEFCTEUgaGlfZHJvcGlkeDsKKy0tIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorLS0gMTkuIFJlLWNvbGxhcHNlIG9mIGEgZGF0YS1yZWRpcmVj dCBjaGFpbiBhY3Jvc3MgcGFydGlhbCBWQUNVVU1zCistLQorLS0gQSBjaGFpbiB0aGF0IGNv bGxhcHNlcyB0byBhIEhPVC1pbmRleGVkIGRhdGEgcmVkaXJlY3QsIGlzIHZhY3V1bWVkIHdp dGgKKy0tIElOREVYX0NMRUFOVVAgb2ZmIChzbyB0aGUgc3RhbGUgbGVhdmVzIGFuZCB0aGUg cmVkaXJlY3Qgc3Vydml2ZSksIHRoZW4KKy0tIHJlY2VpdmVzIGZ1cnRoZXIgSE9ULWluZGV4 ZWQgdXBkYXRlcyB0aGF0IHJlLWNvbGxhcHNlIHRoZSBjaGFpbiBhbmQKKy0tIHJlLXBvaW50 IHRoZSByZWRpcmVjdCBhdCBhIG5ldyBsaXZlIHR1cGxlLCBtdXN0IG5vdCBsZWF2ZSB0aGUg cmVkaXJlY3QKKy0tIGRhbmdsaW5nLiAgQSBzdWJzZXF1ZW50IGZ1bGwgVkFDVVVNIG11c3Qg Y29tcGxldGUgd2l0aG91dCBlcnJvciwgbGVhdmUgdGhlCistLSBoZWFwIGNvbnNpc3RlbnQg KHZlcmlmeV9oZWFwYW0gcmVwb3J0cyBub3RoaW5nKSwgYW5kIHJlYWRzIG11c3Qgc3RheQor LS0gY29ycmVjdC4gIChSZWdyZXNzaW9uOiBhbiBlYXJsaWVyIHJldmlzaW9uIGNyYXNoZWQg cmVjbGFpbWluZyBhIG1pZC1jaGFpbgorLS0gbWVtYmVyIHdoaWxlIGEgZGF0YSByZWRpcmVj dCBzdGlsbCBwb2ludGVkIHBhc3QgaXQuKQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitD UkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgYW1jaGVjazsKK0NSRUFURSBUQUJMRSBo aV9yZWNvbGxhcHNlIChpZCBpbnQgUFJJTUFSWSBLRVksIGEgaW50KSBXSVRIIChmaWxsZmFj dG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX3JlY29sbGFwc2VfYSBPTiBoaV9yZWNvbGxh cHNlKGEpOworSU5TRVJUIElOVE8gaGlfcmVjb2xsYXBzZSBWQUxVRVMgKDEsIDEpOworLS0g Rmlyc3QgY2hhaW46IHR3byBIT1QtaW5kZXhlZCB1cGRhdGVzLCB0aGVuIHBydW5lIHRvIGEg ZGF0YSByZWRpcmVjdCB3aGlsZQorLS0gbGVhdmluZyB0aGUgc3RhbGUgYnRyZWUgbGVhdmVz IGluIHBsYWNlIChJTkRFWF9DTEVBTlVQIG9mZikuCitVUERBVEUgaGlfcmVjb2xsYXBzZSBT RVQgYSA9IDIgV0hFUkUgaWQgPSAxOworVVBEQVRFIGhpX3JlY29sbGFwc2UgU0VUIGEgPSAz IFdIRVJFIGlkID0gMTsKK1ZBQ1VVTSAoSU5ERVhfQ0xFQU5VUCBvZmYpIGhpX3JlY29sbGFw c2U7CistLSBSZS1jb2xsYXBzZTogbW9yZSBIT1QtaW5kZXhlZCB1cGRhdGVzIGV4dGVuZCB0 aGUgY2hhaW4gcGFzdCB0aGUgcmVkaXJlY3QKKy0tIHRhcmdldDsgdGhlIG5leHQgcHJ1bmUg cmUtcG9pbnRzIHRoZSBkYXRhIHJlZGlyZWN0IGF0IHRoZSBuZXcgZmlyc3QgbGl2ZQorLS0g dHVwbGUgYW5kIGV4dGVuZHMgaXRzIHVuaW9uLgorVVBEQVRFIGhpX3JlY29sbGFwc2UgU0VU IGEgPSA0IFdIRVJFIGlkID0gMTsKK1VQREFURSBoaV9yZWNvbGxhcHNlIFNFVCBhID0gNSBX SEVSRSBpZCA9IDE7CitWQUNVVU0gKElOREVYX0NMRUFOVVAgb2ZmKSBoaV9yZWNvbGxhcHNl OworLS0gRnVsbCB2YWN1dW0gbm93IHJlY2xhaW1zIHRoZSBkZWFkIGNoYWluOyB0aGUgcmUt cG9pbnRlZCByZWRpcmVjdCBtdXN0IG5vdAorLS0gZGFuZ2xlLiAgVHdvIHBhc3NlcyBhbHNv IGV4ZXJjaXNlIHRoZSByZWRpcmVjdCByZS1wb2ludCBzZWNvbmQgcGFzcy4KK1ZBQ1VVTSBo aV9yZWNvbGxhcHNlOworVkFDVVVNIGhpX3JlY29sbGFwc2U7CistLSBIZWFwIG11c3QgYmUg c3RydWN0dXJhbGx5IGNvbnNpc3RlbnQgKG5vIHJvd3MgPT0gbm8gY29ycnVwdGlvbikuCitT RUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX3JlY29sbGFwc2UnKTsKKyBibGtubyB8 IG9mZm51bSB8IGF0dG51bSB8IG1zZyAKKy0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0KKygwIHJvd3MpCisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCwg YSBGUk9NIGhpX3JlY29sbGFwc2UgV0hFUkUgYSA9IDU7ICAgICAtLSBjdXJyZW50IHZhbHVl IC0+IGlkIDEKKyBpZCB8IGEgCistLS0tKy0tLQorICAxIHwgNQorKDEgcm93KQorCitTRUxF Q1QgY291bnQoKikgRlJPTSBoaV9yZWNvbGxhcHNlIFdIRVJFIGEgPSAzOyAgLS0gb2Jzb2xl dGUgdmFsdWUgLT4gMAorIGNvdW50IAorLS0tLS0tLQorICAgICAwCisoMSByb3cpCisKK1JF U0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNUIGlkLCBhIEZST00gaGlfcmVjb2xsYXBzZSBP UkRFUiBCWSBpZDsKKyBpZCB8IGEgCistLS0tKy0tLQorICAxIHwgNQorKDEgcm93KQorCitE Uk9QIFRBQkxFIGhpX3JlY29sbGFwc2U7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0t IDIwLiBJbmRleCBkZWxldGlvbiBvdmVyIGFuIGVudHJ5IHRoYXQgcG9pbnRzIGF0IGEgZGF0 YS1yZWRpcmVjdCByb290CistLQorLS0gQSBkYXRhIHJlZGlyZWN0IGlzIGFuIExQX1JFRElS RUNUIHRoYXQgY2FycmllcyBhIGJpdG1hcCwgc28gaXQgcmVwb3J0cworLS0gbHBfbGVuID4g MCAoSXRlbUlkSGFzU3RvcmFnZSB0cnVlKSBldmVuIHRob3VnaCBpdCBpcyBub3QgYSBub3Jt YWwgdHVwbGUuCistLSBpbmRleF9kZWxldGVfY2hlY2tfaHRpZCBtdXN0IHRyZWF0IGl0IGFz IGEgcmVkaXJlY3QsIG5vdCByZWFkIGl0cyBibG9iIGFzIGEKKy0tIEhlYXBUdXBsZUhlYWRl ci4gIFJlcHJvZHVjZTogY29sbGFwc2UgYSBjaGFpbiByb290IHRvIGEgZGF0YSByZWRpcmVj dCB3aGlsZQorLS0ga2VlcGluZyB0aGUgc3RhbGUgbGVhZiB0aGF0IHBvaW50cyBhdCBpdCAo SU5ERVhfQ0xFQU5VUCBvZmYpLCB0aGVuIGluc2VydAorLS0gbWFueSBkdXBsaWNhdGVzIG9m IHRoZSBzdGFsZSBrZXkgc28gYnRyZWUgYm90dG9tLXVwIGRlbGV0aW9uIHJ1bnMKKy0tIGhl YXBfaW5kZXhfZGVsZXRlX3R1cGxlcyBvdmVyIHRoYXQgc3RhbGUgZW50cnkuCistLSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9pZGRlbCAoaWQgaW50LCBhIGlu dCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9pZGRlbF9hIE9O IGhpX2lkZGVsKGEpOworSU5TRVJUIElOVE8gaGlfaWRkZWwgVkFMVUVTICgxLCAxKTsKK1VQ REFURSBoaV9pZGRlbCBTRVQgYSA9IGEgKyAxIFdIRVJFIGlkID0gMTsgICAgICAgICAgLS0g SE9ULWluZGV4ZWQKK1VQREFURSBoaV9pZGRlbCBTRVQgYSA9IGEgKyAxIFdIRVJFIGlkID0g MTsgICAgICAgICAgLS0gbXVsdGktaG9wIGNoYWluCitWQUNVVU0gKElOREVYX0NMRUFOVVAg b2ZmKSBoaV9pZGRlbDsgICAgICAgICAgICAgICAgIC0tIHJvb3QgLT4gZGF0YSByZWRpcmVj dCwga2VlcCBzdGFsZSBhPTEgbGVhZgorLS0gTWFueSBkdXBsaWNhdGVzIG9mIHRoZSBzdGFs ZSBrZXkgZmlsbCB0aGUgbGVhZiBhbmQgdHJpZ2dlciBib3R0b20tdXAKKy0tIGRlbGV0aW9u LCB3aGljaCBmZWVkcyB0aGUgc3RhbGUgYT0xIGVudHJ5IChodGlkIC0+IHRoZSBkYXRhLXJl ZGlyZWN0IHJvb3QpCistLSB0byBoZWFwX2luZGV4X2RlbGV0ZV90dXBsZXMuICBNdXN0IG5v dCBjcmFzaCBvciBtaXNyZWFkIHRoZSBibG9iLgorSU5TRVJUIElOVE8gaGlfaWRkZWwgU0VM RUNUIGcsIDEgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMiwgMzAwMCkgZzsKK1ZBQ1VVTSBoaV9p ZGRlbDsKK1NFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlfaWRkZWwnKTsKKyBibGtu byB8IG9mZm51bSB8IGF0dG51bSB8IG1zZyAKKy0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0KKygwIHJvd3MpCisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBp ZCwgYSBGUk9NIGhpX2lkZGVsIFdIRVJFIGlkID0gMTsgICAgICAgICAgICAgLS0gY3VycmVu dCB2YWx1ZSAtPiBhID0gMworIGlkIHwgYSAKKy0tLS0rLS0tCisgIDEgfCAzCisoMSByb3cp CisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBoaV9pZGRlbDsKKy0tIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjEuIEEgY2hhbmdlIHRvIGEgY29sdW1uIGNvdmVy ZWQgYnkgYSBub24tYnRyZWUgaW5kZXggQU0gaXMgSE9ULWluZGV4ZWQKKy0tCistLSBBIEhP VC1pbmRleGVkIHVwZGF0ZSBsZWF2ZXMgYSBzdGFsZSBwcmUtdXBkYXRlIGxlYWYgdGhhdCB0 aGUgcmVhZCBzaWRlCistLSBmaWx0ZXJzIHZpYSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0 bWFwLCB3aGljaCBpcyBhY2Nlc3MtbWV0aG9kIGFnbm9zdGljLgorLS0gQSBjb2x1bW4gY292 ZXJlZCBieSBhIG5vbi1idHJlZSBpbmRleCAoaGVyZSBhIEdpU1QgaW5kZXggb24gYSBwb2lu dCBjb2x1bW4pCistLSBpcyB0aGVyZWZvcmUgSE9ULWluZGV4ZWQgbGlrZSBhbnkgb3RoZXIs IGFuZCB0aGUgR2lTVCBpbmRleCBzdGlsbCByZXR1cm5zCistLSBjb3JyZWN0IHJlc3VsdHMg YWNyb3NzIHRoZSBjaGFpbi4gIEEgY2hhbmdlIHRvIGEgYnRyZWUtb25seSBjb2x1bW4gb24g dGhlCistLSBzYW1lIHRhYmxlIGlzIGxpa2V3aXNlIEhPVC1pbmRleGVkLgorLS0gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfbm9uYnRyZWUgKGlkIGludCBQUklN QVJZIEtFWSwgdGFnIGludCwgcCBwb2ludCkKKyAgICBXSVRIIChmaWxsZmFjdG9yID0gMTAp OworQ1JFQVRFIElOREVYIGhpX25vbmJ0cmVlX3RhZyBPTiBoaV9ub25idHJlZSAodGFnKTsg ICAgICAgICAgLS0gYnRyZWUgaW5kZXgKK0NSRUFURSBJTkRFWCBoaV9ub25idHJlZV9wIE9O IGhpX25vbmJ0cmVlIFVTSU5HIGdpc3QgKHApOyAgIC0tIEdpU1QsIG5vbi1idHJlZQorSU5T RVJUIElOVE8gaGlfbm9uYnRyZWUgU0VMRUNUIGcsIGcsIHBvaW50KGcsIGcpCisgICAgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBnOworLS0gQ2hhbmdlIHRoZSBHaVNULWNvdmVy ZWQgY29sdW1uIGZpcnN0OiBIT1QtaW5kZXhlZCAoaG90X2lkeCA9IDIwMCkuCitVUERBVEUg aGlfbm9uYnRyZWUgU0VUIHAgPSBwb2ludChwWzBdICsgMTAwMCwgcFsxXSArIDEwMDApOwor U0VMRUNUIGhvdF9pZHggQVMgZ2lzdF9jb2xfaG90X2luZGV4ZWQgRlJPTSBnZXRfaGlfY291 bnQoJ2hpX25vbmJ0cmVlJyk7CisgZ2lzdF9jb2xfaG90X2luZGV4ZWQgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAyMDAKKygxIHJvdykKKworLS0gVGhl IEdpU1QgaW5kZXggbXVzdCByZXR1cm4gY29ycmVjdCByZXN1bHRzOiB0aGUgb2xkIHBvc2l0 aW9ucyBhcmUgZ29uZSBhbmQKKy0tIGV2ZXJ5IHJvdyBpcyBmb3VuZCBhdCBpdHMgbmV3IHBv c2l0aW9uIChubyBzdGFsZSBsZWFmIHN1cmZhY2VzIGFuIG9sZCBrZXkpLgorU0VUIGVuYWJs ZV9zZXFzY2FuID0gb2ZmOworU0VMRUNUIGNvdW50KCopIEFTIGF0X29sZF9wb3NpdGlvbnMK KyAgICBGUk9NIGhpX25vbmJ0cmVlIFdIRVJFIHAgPEAgYm94KHBvaW50KDAsIDApLCBwb2lu dCgzMDAsIDMwMCkpOworIGF0X29sZF9wb3NpdGlvbnMgCistLS0tLS0tLS0tLS0tLS0tLS0K KyAgICAgICAgICAgICAgICAwCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBBUyBhdF9u ZXdfcG9zaXRpb25zCisgICAgRlJPTSBoaV9ub25idHJlZSBXSEVSRSBwIDxAIGJveChwb2lu dCgxMDAwLCAxMDAwKSwgcG9pbnQoMTMwMCwgMTMwMCkpOworIGF0X25ld19wb3NpdGlvbnMg CistLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMjAwCisoMSByb3cpCisKK1JF U0VUIGVuYWJsZV9zZXFzY2FuOworLS0gQ2hhbmdpbmcgdGhlIGJ0cmVlLW9ubHkgY29sdW1u IChwIHVuY2hhbmdlZCkgc3RheXMgSE9ULWluZGV4ZWQuCitVUERBVEUgaGlfbm9uYnRyZWUg U0VUIHRhZyA9IHRhZyArIDEwMDA7CitTRUxFQ1QgaG90X2lkeCA+IDAgQVMgYnRyZWVfY29s X2lzX2hvdF9pbmRleGVkIEZST00gZ2V0X2hpX2NvdW50KCdoaV9ub25idHJlZScpOworIGJ0 cmVlX2NvbF9pc19ob3RfaW5kZXhlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg dAorKDEgcm93KQorCitEUk9QIFRBQkxFIGhpX25vbmJ0cmVlOworLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCistLSAyMi4gQUJBIG9uIGEgdW5pcXVlIGtleSBhY3Jvc3MgdHdvIGRpc3Rp bmN0IGxpdmUgcm93czogYSBrZXkgY3ljbGVkIGF3YXkKKy0tIGFuZCBiYWNrIG11c3Qgc3Rp bGwgY29sbGlkZSB3aXRoIGFub3RoZXIgcm93IHRoYXQgaG9sZHMgaXQuICBUaGUgc3RhbGUK Ky0tIGxlYXZlcyBsZWZ0IGJ5IHRoZSBjeWNsZSBtdXN0IG5vdCBsZXQgYSBnZW51aW5lIGR1 cGxpY2F0ZSBzbGlwIHBhc3QgdGhlCistLSB1bmlxdWVuZXNzIGNoZWNrIC0tIHRoZSByZWFk LXNpZGUgcmVjaGVjayBjb21wYXJlcyB0aGUgbGl2ZSBrZXksIG5vdCBqdXN0CistLSBhIGNo YW5nZWQtYXR0cmlidXRlIGJpdG1hcC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JF QVRFIFRBQkxFIGhpX2FiYSAoayBpbnQsIHYgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTAp OworQ1JFQVRFIFVOSVFVRSBJTkRFWCBoaV9hYmFfayBPTiBoaV9hYmEgKGspOworQ1JFQVRF IElOREVYIGhpX2FiYV92IE9OIGhpX2FiYSAodik7CitJTlNFUlQgSU5UTyBoaV9hYmEgVkFM VUVTICgxLCAxMCksICgyLCAyMCk7CistLSBDeWNsZSByb3cxJ3MgdW5pcXVlIGtleSAxIC0+ IDMgLT4gMSAodiB1bmNoYW5nZWQsIHNvIGVhY2ggc3RlcCBpcworLS0gSE9ULWluZGV4ZWQg YW5kIGxlYXZlcyBzdGFsZSBlbnRyaWVzIGluIGhpX2FiYV9rKS4KK1VQREFURSBoaV9hYmEg U0VUIGsgPSAzIFdIRVJFIHYgPSAxMDsKK1VQREFURSBoaV9hYmEgU0VUIGsgPSAxIFdIRVJF IHYgPSAxMDsKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyBjeWNsZWRfaG90X2luZGV4ZWQgRlJP TSBnZXRfaGlfY291bnQoJ2hpX2FiYScpOworIGN5Y2xlZF9ob3RfaW5kZXhlZCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCistLSByb3cxIGlzIGxpdmUgYXQgayA9 IDEgYWdhaW4uICBNb3Zpbmcgcm93MiBvbnRvIGsgPSAxIG11c3QgcmFpc2UgYSB1bmlxdWUK Ky0tIHZpb2xhdGlvbiBkZXNwaXRlIHRoZSBzdGFsZSAnMScgbGVhdmVzIGZyb20gdGhlIGN5 Y2xlLgorVVBEQVRFIGhpX2FiYSBTRVQgayA9IDEgV0hFUkUgdiA9IDIwOworRVJST1I6ICBk dXBsaWNhdGUga2V5IHZhbHVlIHZpb2xhdGVzIHVuaXF1ZSBjb25zdHJhaW50ICJoaV9hYmFf ayIKK0RFVEFJTDogIEtleSAoayk9KDEpIGFscmVhZHkgZXhpc3RzLgorRFJPUCBUQUJMRSBo aV9hYmE7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDIzLiBQYXJ0aWFsIGluZGV4 IHdob3NlIHByZWRpY2F0ZSByZWZlcmVuY2VzIGEgbm9uLWtleSBjb2x1bW4uICBGbGlwcGlu ZyB0aGUKKy0tIHJvdyBvdXQgb2YgdGhlIHByZWRpY2F0ZSB3aGlsZSBsZWF2aW5nIHRoZSBp bmRleGVkIGtleSB1bmNoYW5nZWQgaXMKKy0tIEhPVC1pbmRleGVkOiB0aGUgcHJlZGljYXRl IGNvbHVtbiBpcyBwYXJ0IG9mIHRoZSBpbmRleCdzIGF0dHJpYnV0ZSBzZXQsIHNvCistLSB0 aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIGRyb3BzIHRoZSBub3ctc3RhbGUgcGFydGlh bC1pbmRleCBlbnRyeSBvbiByZWFkCistLSAobm8gdmFsdWUgcmVjaGVjayBpcyBpbnZvbHZl ZCkuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9wYXJ0cHJl ZCAoaWQgaW50IFBSSU1BUlkgS0VZLCBrIGludCwgYWN0aXZlIGJvb2xlYW4pCisgICAgV0lU SCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9wYXJ0cHJlZF9rIE9OIGhp X3BhcnRwcmVkIChrKSBXSEVSRSBhY3RpdmU7CitJTlNFUlQgSU5UTyBoaV9wYXJ0cHJlZCBW QUxVRVMgKDEsIDEwMCwgdHJ1ZSk7CistLSBGbGlwIHRoZSBwcmVkaWNhdGUgY29sdW1uICdh Y3RpdmUnIHRydWUgLT4gZmFsc2U7IHRoZSBpbmRleCBrZXkgayBpcworLS0gdW5jaGFuZ2Vk LiAgVGhlIHJvdyBubyBsb25nZXIgc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGUsIHNvIGl0cyBw YXJ0aWFsLWluZGV4CistLSBlbnRyeSBtdXN0IGJlIHJlbW92ZWQsIG5vdCBsZWZ0IHBvaW50 aW5nIGludG8gdGhlIGNoYWluLgorVVBEQVRFIGhpX3BhcnRwcmVkIFNFVCBhY3RpdmUgPSBm YWxzZSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7 CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAKKygxIHJvdykKKworU0VMRUNUIGhvdCwgaG90X2lkeCBGUk9NIGdldF9oaV9jb3Vu dCgnaGlfcGFydHByZWQnKTsKKyBob3QgfCBob3RfaWR4IAorLS0tLS0rLS0tLS0tLS0tCisg ICAxIHwgICAgICAgMQorKDEgcm93KQorCistLSBUaGUgcGFydGlhbCBpbmRleCBtdXN0IG5v dCBzdXJmYWNlIHRoZSByb3cgbm93IHRoYXQgYWN0aXZlID0gZmFsc2UuCistLSBBIHF1ZXJ5 IHdob3NlIHF1YWwgZXhhY3RseSBtYXRjaGVzIHRoZSBwYXJ0aWFsIHByZWRpY2F0ZSB1c2Vz IHRoZSBpbmRleAorLS0gd2l0aG91dCByZS1maWx0ZXJpbmcgJ2FjdGl2ZScgb24gdGhlIGhl YXAsIHNvIGEgc3RhbGUgZW50cnkgd291bGQgc3VyZmFjZS4KK1NFVCBlbmFibGVfc2Vxc2Nh biA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK0VYUExBSU4gKENPU1RT IE9GRikgU0VMRUNUIGlkIEZST00gaGlfcGFydHByZWQgV0hFUkUgYWN0aXZlOworICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2lu ZyBoaV9wYXJ0cHJlZF9rIG9uIGhpX3BhcnRwcmVkCisoMSByb3cpCisKK1NFTEVDVCBpZCBG Uk9NIGhpX3BhcnRwcmVkIFdIRVJFIGsgPSAxMDAgQU5EIGFjdGl2ZTsKKyBpZCAKKy0tLS0K KygwIHJvd3MpCisKK1NFTEVDVCBpZCBGUk9NIGhpX3BhcnRwcmVkIFdIRVJFIGFjdGl2ZTsK KyBpZCAKKy0tLS0KKygwIHJvd3MpCisKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVT RVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIGhpX3BhcnRwcmVkOworLS0gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCistLSAyNC4gUmVjbGFpbSArIHN0dWIgbWl4LiAgUmVwZWF0ZWQg dXBkYXRlcyBvZiBjb2x1bW4gYSBmb2xsb3dlZCBieSBhbiB1cGRhdGUKKy0tIG9mIGNvbHVt biBiIGJ1aWxkIGEgY2hhaW4gd2hvc2UgcHJ1bmUgcmVjbGFpbXMgdGhlIG1lbWJlcnMgd2hv c2UgY2hhbmdlIHdhcworLS0gc3VwZXJzZWRlZCAoYSBjaGFuZ2VkIGFnYWluKSBhbmQga2Vl cHMgc3R1YnMgZm9yIHRob3NlIHRoYXQgd2VyZSBub3QsIHNvIGEKKy0tIHJvb3QgcmVkaXJl Y3QgZW5kcyB1cCBwb2ludGluZyBhdCBhIHN0dWIgYW5kIGEgbGF0ZXIgd2FsayBjcm9zc2Vz IG1pZC1jaGFpbgorLS0gc3R1YnMuICBSZWFkcyB0aHJvdWdoIGVhY2ggaW5kZXggYW5kIGFt Y2hlY2sgbXVzdCBzdGF5IGNvcnJlY3QgYWNyb3NzIHRoZQorLS0gY29sbGFwc2UsIGFuZCBh IHNlY29uZCByb3VuZCBtdXN0IHdhbGsgdGhlIGV4aXN0aW5nIHN0dWJzIHdpdGhvdXQgc2V2 ZXJpbmcKKy0tIHRoZSBjaGFpbi4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRF IFRBQkxFIGhpX3N0dWJtaXggKGlkIGludCBQUklNQVJZIEtFWSwgYSBpbnQsIGIgaW50KSBX SVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX3N0dWJtaXhfYSBPTiBo aV9zdHVibWl4IChhKTsKK0NSRUFURSBJTkRFWCBoaV9zdHVibWl4X2IgT04gaGlfc3R1Ym1p eCAoYik7CitJTlNFUlQgSU5UTyBoaV9zdHVibWl4IFZBTFVFUyAoMSwgMTAsIDEwMCk7CitV UERBVEUgaGlfc3R1Ym1peCBTRVQgYSA9IDExIFdIRVJFIGlkID0gMTsgICAtLSBjaGFuZ2Vz IGEKK1VQREFURSBoaV9zdHVibWl4IFNFVCBhID0gMTIgV0hFUkUgaWQgPSAxOyAgIC0tIGNo YW5nZXMgYSBhZ2FpbiAoc3VwZXJzZWRlcykKK1VQREFURSBoaV9zdHVibWl4IFNFVCBiID0g MTAxIFdIRVJFIGlkID0gMTsgIC0tIGNoYW5nZXMgYgorVkFDVVVNIGhpX3N0dWJtaXg7CitT RVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7 CitTRUxFQ1QgaWQsIGEsIGIgRlJPTSBoaV9zdHVibWl4IFdIRVJFIGEgPSAxMjsgICAtLSBj dXJyZW50IGEKKyBpZCB8IGEgIHwgIGIgIAorLS0tLSstLS0tKy0tLS0tCisgIDEgfCAxMiB8 IDEwMQorKDEgcm93KQorCitTRUxFQ1QgaWQsIGEsIGIgRlJPTSBoaV9zdHVibWl4IFdIRVJF IGIgPSAxMDE7ICAtLSBjdXJyZW50IGIKKyBpZCB8IGEgIHwgIGIgIAorLS0tLSstLS0tKy0t LS0tCisgIDEgfCAxMiB8IDEwMQorKDEgcm93KQorCitTRUxFQ1QgaWQgRlJPTSBoaV9zdHVi bWl4IFdIRVJFIGEgPSAxMDsgICAgICAgICAtLSBzdGFsZSBhOiAwIHJvd3MKKyBpZCAKKy0t LS0KKygwIHJvd3MpCisKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQgZW5hYmxl X3NlcXNjYW47CitTRUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX3N0dWJtaXgnKTsg ICAgICAtLSBubyBjb3JydXB0aW9uIGFjcm9zcyBzdHVicworIGJsa25vIHwgb2ZmbnVtIHwg YXR0bnVtIHwgbXNnIAorLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLQorKDAgcm93 cykKKworLS0gQSBzZWNvbmQgcm91bmQgbXVzdCB3YWxrIHRoZSBleGlzdGluZyBzdHVicyAo bm8gcHJpb3JYbWF4IHNldmVyKS4KK1VQREFURSBoaV9zdHVibWl4IFNFVCBhID0gMTMgV0hF UkUgaWQgPSAxOworVkFDVVVNIGhpX3N0dWJtaXg7CitTRUxFQ1QgaWQsIGEsIGIgRlJPTSBo aV9zdHVibWl4IFdIRVJFIGEgPSAxMzsKKyBpZCB8IGEgIHwgIGIgIAorLS0tLSstLS0tKy0t LS0tCisgIDEgfCAxMyB8IDEwMQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHZlcmlmeV9o ZWFwYW0oJ2hpX3N0dWJtaXgnKTsKKyBibGtubyB8IG9mZm51bSB8IGF0dG51bSB8IG1zZyAK Ky0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0KKygwIHJvd3MpCisKK0RST1AgVEFC TEUgaGlfc3R1Ym1peDsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjMuIEV4Y2x1 c2lvbi1jb25zdHJhaW50IHRhYmxlcyBhcmUgSE9ULWluZGV4ZWQtZWxpZ2libGUuCistLQor LS0gQW4gZXhjbHVzaW9uIGNvbnN0cmFpbnQgaXMgZW5mb3JjZWQgYnkgY2hlY2tfZXhjbHVz aW9uX29yX3VuaXF1ZV9jb25zdHJhaW50LAorLS0gd2hpY2ggcmVjaGVja3MgZWFjaCBjYW5k aWRhdGUgYWdhaW5zdCB0aGUgbGl2ZSB0dXBsZSdzIGN1cnJlbnQgaW5kZXgtZm9ybQorLS0g d2l0aCB0aGUgY29uc3RyYWludCdzIG93biBvcGVyYXRvcnMsIHNvIGEgc3RhbGUgZW50cnkg bGVmdCBieSBhIEhPVC1pbmRleGVkCistLSB1cGRhdGUgaXMgc2tpcHBlZCB3aGlsZSB0aGUg bGl2ZSBrZXkgYWx3YXlzIGhhcyBpdHMgb3duIGVudHJ5LiAgVXBkYXRpbmcgYQorLS0gbm9u LWNvbnN0cmFpbmVkIGluZGV4ZWQgY29sdW1uIGlzIEhPVC1pbmRleGVkICh0aGUgR2lTVCBl eGNsdXNpb24gaW5kZXggaXMKKy0tIHNraXBwZWQpLCBhbmQgdGhlIGNvbnN0cmFpbnQgc3Rh eXMgY29ycmVjdC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhp X2V4Y2wgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICB0YWcgaW50LAorICAgIGR1 cmluZyBpbnQ0cmFuZ2UsCisgICAgRVhDTFVERSBVU0lORyBnaXN0IChkdXJpbmcgV0lUSCAm JikKKykgV0lUSCAoZmlsbGZhY3RvciA9IDEwKTsKK0NSRUFURSBJTkRFWCBoaV9leGNsX3Rh ZyBPTiBoaV9leGNsKHRhZyk7CitJTlNFUlQgSU5UTyBoaV9leGNsIFZBTFVFUyAoMSwgMTAw LCBpbnQ0cmFuZ2UoMSwgMTApKSwgKDIsIDIwMCwgaW50NHJhbmdlKDIwLCAzMCkpOworLS0g VXBkYXRlIGEgbm9uLWNvbnN0cmFpbmVkIGluZGV4ZWQgY29sdW1uOiBIT1QtaW5kZXhlZCAo R2lTVCBleGNsdXNpb24gaW5kZXgKKy0tIGFuZCBQSyBza2lwcGVkKSwgYW5kIHRoZSBleGNs dXNpb24gY29uc3RyYWludCBpcyBzdGlsbCBlbmZvcmNlZC4KK1VQREFURSBoaV9leGNsIFNF VCB0YWcgPSB0YWcgKyAxIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyB0 YWdfdXBkYXRlX2hvdF9pbmRleGVkIEZST00gZ2V0X2hpX2NvdW50KCdoaV9leGNsJyk7Cisg dGFnX3VwZGF0ZV9ob3RfaW5kZXhlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQK KygxIHJvdykKKworSU5TRVJUIElOVE8gaGlfZXhjbCBWQUxVRVMgKDMsIDMwMCwgaW50NHJh bmdlKDUsIDE1KSk7ICAtLSBvdmVybGFwcyBpZD0xJ3MgKDEsMTApCitFUlJPUjogIGNvbmZs aWN0aW5nIGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAiaGlfZXhj bF9kdXJpbmdfZXhjbCIKK0RFVEFJTDogIEtleSAoZHVyaW5nKT0oWzUsMTUpKSBjb25mbGlj dHMgd2l0aCBleGlzdGluZyBrZXkgKGR1cmluZyk9KFsxLDEwKSkuCistLSBNb3ZlIGlkPTEn cyByYW5nZSBhd2F5ICh0aGlzIHVwZGF0ZXMgdGhlIEdpU1QgaW5kZXgsIGxlYXZpbmcgYSBz dGFsZSBlbnRyeQorLS0gZm9yIHRoZSBvbGQgKDEsMTApIHJhbmdlKS4gIEEgcmFuZ2Ugb3Zl cmxhcHBpbmcgb25seSB0aGUgT0xEIHJhbmdlIG5vdworLS0gaW5zZXJ0cyBjbGVhbmx5ICh0 aGUgc3RhbGUgZW50cnkgaXMgc2tpcHBlZCk7IG9uZSBvdmVybGFwcGluZyB0aGUgTkVXIHJh bmdlCistLSBzdGlsbCBjb25mbGljdHMuCitVUERBVEUgaGlfZXhjbCBTRVQgZHVyaW5nID0g aW50NHJhbmdlKDEwMCwgMTEwKSBXSEVSRSBpZCA9IDE7CitJTlNFUlQgSU5UTyBoaV9leGNs IFZBTFVFUyAoNCwgNDAwLCBpbnQ0cmFuZ2UoNSwgMTUpKTsgICAtLSBvbmx5IG92ZXJsYXBw ZWQgb2xkIHJhbmdlOiBPSworSU5TRVJUIElOVE8gaGlfZXhjbCBWQUxVRVMgKDUsIDUwMCwg aW50NHJhbmdlKDEwNSwgMTE1KSk7LS0gb3ZlcmxhcHMgbmV3ICgxMDAsMTEwKTogY29uZmxp Y3QKK0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBj b25zdHJhaW50ICJoaV9leGNsX2R1cmluZ19leGNsIgorREVUQUlMOiAgS2V5IChkdXJpbmcp PShbMTA1LDExNSkpIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAoZHVyaW5nKT0oWzEw MCwxMTApKS4KK0RST1AgVEFCTEUgaGlfZXhjbDsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorLS0gMjUuIFRPQVNUIGludGVyYWN0aW9uLiAgQW4gaW5kZXhlZCBjb2x1bW4gc3RvcmVk IG91dC1vZi1saW5lIG11c3QgYmVoYXZlCistLSBjb3JyZWN0bHkgYWNyb3NzIEhPVC1pbmRl eGVkIHVwZGF0ZXM6IGFuIGVudHJ5IGtlcHQgYWNyb3NzIGFuIHVwZGF0ZSBvZiBhCistLSBk aWZmZXJlbnQgY29sdW1uIHN0aWxsIHJlc29sdmVzIHRvIHRoZSAodW5jaGFuZ2VkKSB0b2Fz dGVkIHZhbHVlLCBhbmQgYWZ0ZXIKKy0tIHRoZSB0b2FzdGVkIGNvbHVtbiBpdHNlbGYgaXMg Y2hhbmdlZCB0aGUgc3RhbGUgZW50cnkgaXMgZHJvcHBlZCBieSB0aGUKKy0tIGNyb3NzZWQt YXR0cmlidXRlIGJpdG1hcCAobm8gdmFsdWUgY29tcGFyaXNvbiBvciBkZXRvYXN0aW5nIGlz IG5lZWRlZCkuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV90 b2FzdCAoaWQgaW50IFBSSU1BUlkgS0VZLCBiaWcgdGV4dCwgdGFnIGludCkgV0lUSCAoZmls bGZhY3RvciA9IDUwKTsKK0FMVEVSIFRBQkxFIGhpX3RvYXN0IEFMVEVSIENPTFVNTiBiaWcg U0VUIFNUT1JBR0UgRVhURVJOQUw7ICAtLSBubyBjb21wcmVzc2lvbgorQ1JFQVRFIElOREVY IGhpX3RvYXN0X2JpZyBPTiBoaV90b2FzdCAoYmlnKTsKK0NSRUFURSBJTkRFWCBoaV90b2Fz dF90YWcgT04gaGlfdG9hc3QgKHRhZyk7CitJTlNFUlQgSU5UTyBoaV90b2FzdCBWQUxVRVMg KDEsIHJlcGVhdCgnQScsIDIwMDApLCAxMCk7CistLSBUaGUgYmlnIHZhbHVlIGlzIHN0b3Jl ZCBvdXQtb2YtbGluZS4KK1NFTEVDVCBwZ19jb2x1bW5fc2l6ZShiaWcpID4gMTUwMCBBUyBi aWdfaXNfZXh0ZXJuYWwgRlJPTSBoaV90b2FzdCBXSEVSRSBpZCA9IDE7CisgYmlnX2lzX2V4 dGVybmFsIAorLS0tLS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKKy0tIEhPVC1pbmRl eGVkIHVwZGF0ZSBvZiB0YWcgbGVhdmVzIGJpZyAoYW5kIGl0cyBpbmRleCBlbnRyeSkgdW5j aGFuZ2VkLgorVVBEQVRFIGhpX3RvYXN0IFNFVCB0YWcgPSAxMSBXSEVSRSBpZCA9IDE7CitT RUxFQ1QgaG90X2lkeCA+IDAgQVMgdGFnX3VwZGF0ZV9ob3RfaW5kZXhlZCBGUk9NIGdldF9o aV9jb3VudCgnaGlfdG9hc3QnKTsKKyB0YWdfdXBkYXRlX2hvdF9pbmRleGVkIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRVQgZW5hYmxlX3NlcXNjYW4g PSBvZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitTRUxFQ1QgaWQsIHRhZywg bGVuZ3RoKGJpZykgRlJPTSBoaV90b2FzdCBXSEVSRSBiaWcgPSByZXBlYXQoJ0EnLCAyMDAw KTsKKyBpZCB8IHRhZyB8IGxlbmd0aCAKKy0tLS0rLS0tLS0rLS0tLS0tLS0KKyAgMSB8ICAx MSB8ICAgMjAwMAorKDEgcm93KQorCistLSBIT1QtaW5kZXhlZCB1cGRhdGUgb2YgdGhlIHRv YXN0ZWQgaW5kZXhlZCBjb2x1bW4gaXRzZWxmOiB0aGUgb2xkIGVudHJ5IGlzCistLSBub3cg c3RhbGUgYmVjYXVzZSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIHNob3dzIGJpZyBj aGFuZ2VkLgorVVBEQVRFIGhpX3RvYXN0IFNFVCBiaWcgPSByZXBlYXQoJ0InLCAyMDAwKSBX SEVSRSBpZCA9IDE7CitTRUxFQ1QgaWQgRlJPTSBoaV90b2FzdCBXSEVSRSBiaWcgPSByZXBl YXQoJ0EnLCAyMDAwKTsgICAtLSBzdGFsZTogMCByb3dzCisgaWQgCistLS0tCisoMCByb3dz KQorCitTRUxFQ1QgaWQsIGxlbmd0aChiaWcpIEZST00gaGlfdG9hc3QgV0hFUkUgYmlnID0g cmVwZWF0KCdCJywgMjAwMCk7ICAtLSBjdXJyZW50CisgaWQgfCBsZW5ndGggCistLS0tKy0t LS0tLS0tCisgIDEgfCAgIDIwMDAKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX2JpdG1hcHNj YW47CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK1NFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBh bSgnaGlfdG9hc3QnKTsKKyBibGtubyB8IG9mZm51bSB8IGF0dG51bSB8IG1zZyAKKy0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0KKygwIHJvd3MpCisKK0RST1AgVEFCTEUgaGlf dG9hc3Q7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDI2LiBBQkEgb24gYW4gaW5k ZXhlZCBjb2x1bW4uICBBIEhPVC1pbmRleGVkIHVwZGF0ZSB0aGF0IHNldHMgYW4gaW5kZXhl ZAorLS0gY29sdW1uIHRvIGEgdmFsdWUgYW4gZWFybGllciBjaGFpbiBtZW1iZXIgYWxyZWFk eSBoZWxkIGxlYXZlcyB0d28gbGVhdmVzCistLSB3aXRoIHRoYXQgc2FtZSBrZXksIGJvdGgg Y2hhaW4tcmVzb2x2aW5nIHRvIHRoZSBsaXZlIHR1cGxlLiAgQSB2YWx1ZS1iYXNlZAorLS0g cmVjaGVjayBjYW5ub3QgdGVsbCB0aGVtIGFwYXJ0IGFuZCB3b3VsZCByZXR1cm4gdGhlIHJv dyB0d2ljZTsgdGhlCistLSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgZHJvcHMgdGhlIHN0 YWxlIGFuY2VzdG9yIGxlYWYgKGl0cyB3YWxrIGNyb3NzZXMgdGhlCistLSBrZXktY2hhbmdp bmcgaG9wcykgYW5kIGtlZXBzIG9ubHkgdGhlIGZyZXNoIGVudHJ5LCBzbyBhIGZvcmNlZCBp bmRleCBzY2FuCistLSByZXR1cm5zIHRoZSByb3cgZXhhY3RseSBvbmNlLiAgUkVJTkRFWCBt dXN0IG5vdCBjaGFuZ2UgdGhhdC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRF IFRBQkxFIGhpX2FiYSAoaWQgaW50IFBSSU1BUlkgS0VZLCBrIGludCwgdiBpbnQpIFdJVEgg KGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfYWJhX2sgT04gaGlfYWJhIChr KTsKK0NSRUFURSBJTkRFWCBoaV9hYmFfdiBPTiBoaV9hYmEgKHYpOworSU5TRVJUIElOVE8g aGlfYWJhIFZBTFVFUyAoMSwgMSwgMTAwKTsKK1VQREFURSBoaV9hYmEgU0VUIGsgPSAzIFdI RVJFIGlkID0gMTsgICAtLSBIT1QtaW5kZXhlZDogayBjaGFuZ2VkLCB2IGtlcHQKK1VQREFU RSBoaV9hYmEgU0VUIGsgPSAxIFdIRVJFIGlkID0gMTsgICAtLSBIT1QtaW5kZXhlZDogayBj eWNsZWQgYmFjayAoQUJBKQorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJs ZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGNvdW50KCopIEFTIGsxX29uY2UgRlJPTSBo aV9hYmEgV0hFUkUgayA9IDE7ICAgICAtLSBleGFjdGx5IDEKKyBrMV9vbmNlIAorLS0tLS0t LS0tCisgICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgY291bnQoKikgQVMgazNfZ29uZSBG Uk9NIGhpX2FiYSBXSEVSRSBrID0gMzsgICAgIC0tIDAgKHN0YWxlIGRyb3BwZWQpCisgazNf Z29uZSAKKy0tLS0tLS0tLQorICAgICAgIDAKKygxIHJvdykKKworUkVJTkRFWCBJTkRFWCBo aV9hYmFfazsKK1NFTEVDVCBjb3VudCgqKSBBUyBrMV9hZnRlcl9yZWluZGV4IEZST00gaGlf YWJhIFdIRVJFIGsgPSAxOyAgLS0gc3RpbGwgMQorIGsxX2FmdGVyX3JlaW5kZXggCistLS0t LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAxCisoMSByb3cpCisKK1JFU0VUIGVu YWJsZV9iaXRtYXBzY2FuOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitTRUxFQ1QgKiBGUk9N IHZlcmlmeV9oZWFwYW0oJ2hpX2FiYScpOworIGJsa25vIHwgb2ZmbnVtIHwgYXR0bnVtIHwg bXNnIAorLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLQorKDAgcm93cykKKworRFJP UCBUQUJMRSBoaV9hYmE7CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDI3LiBQYXJ0 aWFsIGluZGV4LCBwcmVkaWNhdGUgY29sdW1uIGNoYW5nZWQgYnV0IHRoZSByb3cgU1RBWVMg aW4gdGhlIGluZGV4CistLSAocHJlZGljYXRlIHN0aWxsIHRydWUsIGtleSB1bmNoYW5nZWQp LiAgVGhlIHVwZGF0ZSBpcyBIT1QtaW5kZXhlZDsgc2VsZWN0aXZlCistLSBtYWludGVuYW5j ZSByZS1pbnNlcnRzIGEgZnJlc2ggZW50cnkgKHRoZSBwcmVkaWNhdGUgY29sdW1uIGNoYW5n ZWQgYW5kIHN0aWxsCistLSBob2xkcyksIHNvIHRoZSByb3cgaXMgc3RpbGwgcmV0dXJuZWQg LS0gdGhlIGJpdG1hcCBkcm9wcyB0aGUgb2xkZXIgZW50cnkgYW5kCistLSB0aGUgZnJlc2gg b25lIHJlLXN1cHBsaWVzIGl0LiAgR3VhcmRzIGFnYWluc3QgYSAibG9zdCByb3ciIGZyb20g b3Zlci1lYWdlcgorLS0gZHJvcHBpbmcuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NS RUFURSBUQUJMRSBoaV9wYXJ0c3RheSAoaWQgaW50IFBSSU1BUlkgS0VZLCBrIGludCwgbiBp bnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfcGFydHN0YXlf ayBPTiBoaV9wYXJ0c3RheSAoaykgV0hFUkUgbiA+IDA7CitDUkVBVEUgSU5ERVggaGlfcGFy dHN0YXlfaWQyIE9OIGhpX3BhcnRzdGF5IChpZCk7CitJTlNFUlQgSU5UTyBoaV9wYXJ0c3Rh eSBWQUxVRVMgKDEsIDUsIDMpOworVVBEQVRFIGhpX3BhcnRzdGF5IFNFVCBuID0gNyBXSEVS RSBpZCA9IDE7ICAgLS0gbiAzLT43LCBzdGlsbCA+IDAsIGsgdW5jaGFuZ2VkCitTRUxFQ1Qg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNo IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGhv dF9pZHggPiAwIEFTIHN0YXlfaXNfaG90X2luZGV4ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hp X3BhcnRzdGF5Jyk7Cisgc3RheV9pc19ob3RfaW5kZXhlZCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIHQKKygxIHJvdykKKworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVu YWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGNvdW50KCopIEFTIHN0YXlfcm93cyBG Uk9NIGhpX3BhcnRzdGF5IFdIRVJFIGsgPSA1IEFORCBuID4gMDsgICAtLSB3YW50IDEKKyBz dGF5X3Jvd3MgCistLS0tLS0tLS0tLQorICAgICAgICAgMQorKDEgcm93KQorCitSRVNFVCBl bmFibGVfYml0bWFwc2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBo aV9wYXJ0c3RheTsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjguIFBhcnRpdGlv bmVkIHRhYmxlLiAgQSB3aXRoaW4tcGFydGl0aW9uIFVQREFURSBvZiBvbmUgaW5kZXhlZCBj b2x1bW4gaXMKKy0tIEhPVC1pbmRleGVkIG9uIHRoZSBsZWFmIHBhcnRpdGlvbidzIGhlYXAg ZXhhY3RseSBhcyBmb3IgYSBub24tcGFydGl0aW9uZWQKKy0tIHRhYmxlOyBhIGNyb3NzLXBh cnRpdGlvbiB1cGRhdGUgaXMgYSBkZWxldGUraW5zZXJ0IGFuZCBuZXZlciBIT1QuCistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9wYXJ0IChpZCBpbnQsIGEg aW50LCBiIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpZCk7CitDUkVBVEUgVEFCTEUgaGlf cGFydDEgUEFSVElUSU9OIE9GIGhpX3BhcnQgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTAw KQorICAgIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfcGFydF9h IE9OIGhpX3BhcnQgKGEpOworQ1JFQVRFIElOREVYIGhpX3BhcnRfYiBPTiBoaV9wYXJ0IChi KTsKK0lOU0VSVCBJTlRPIGhpX3BhcnQgVkFMVUVTICgxLCAxMCwgMjApOworVVBEQVRFIGhp X3BhcnQgU0VUIGEgPSAxMSBXSEVSRSBpZCA9IDE7ICAgLS0gb25lIGluZGV4ZWQgY29sLCB3 aXRoaW4gcGFydGl0aW9uCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7Cisg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAKKygxIHJvdykKKworU0VMRUNUIGhvdF9pZHggPiAwIEFTIHBhcnRfaXNfaG90X2luZGV4 ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hpX3BhcnQxJyk7CisgcGFydF9pc19ob3RfaW5kZXhl ZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VUIGVuYWJsZV9z ZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGNv dW50KCopIEFTIGExMSBGUk9NIGhpX3BhcnQgV0hFUkUgYSA9IDExOyAgIC0tIHdhbnQgMQor IGExMSAKKy0tLS0tCisgICAxCisoMSByb3cpCisKK1NFTEVDVCBjb3VudCgqKSBBUyBhMTAg RlJPTSBoaV9wYXJ0IFdIRVJFIGEgPSAxMDsgICAtLSB3YW50IDAgKHN0YWxlIGRyb3BwZWQp CisgYTEwIAorLS0tLS0KKyAgIDAKKygxIHJvdykKKworUkVTRVQgZW5hYmxlX2JpdG1hcHNj YW47CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK1NFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBh bSgnaGlfcGFydDEnKTsKKyBibGtubyB8IG9mZm51bSB8IGF0dG51bSB8IG1zZyAKKy0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0KKygwIHJvd3MpCisKK0RST1AgVEFCTEUgaGlf cGFydDsKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMjkuIE5vbi1idHJlZSBhY2Nl c3MgbWV0aG9kIChoYXNoKS4gIFJlYWQtc2lkZSBzdGFsZW5lc3MgaXMgYWNjZXNzLW1ldGhv ZAorLS0gYWdub3N0aWMgKHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXApLCBzbyBhbnkg aW5kZXggQU0ncyBjb2x1bW4gaXMKKy0tIEhPVC1pbmRleGVkLiAgSGFzaCBpcyB0aGUgc2hh cnBlc3QgY2FzZTogaXRzIHNjYW5zIHJlY2hlY2sgdGhlIGhlYXAgdmFsdWUsCistLSB3aGlj aCBhbG9uZSBjYW5ub3QgZGlzYW1iaWd1YXRlIGEgdmFsdWUgY3ljbGVkIGF3YXkgYW5kIGJh Y2sgKEFCQSkgLS0gdGhlCistLSBiaXRtYXAgZHJvcHMgdGhlIHN0YWxlIGFuY2VzdG9yIHNv IHRoZSByb3cgaXMgcmV0dXJuZWQgZXhhY3RseSBvbmNlLgorLS0gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfaGFzaCAoaWQgaW50IFBSSU1BUlkgS0VZLCB2IGlu dCwgdyBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfaGFz aF92IE9OIGhpX2hhc2ggVVNJTkcgaGFzaCAodik7CitDUkVBVEUgSU5ERVggaGlfaGFzaF93 IE9OIGhpX2hhc2ggKHcpOworSU5TRVJUIElOVE8gaGlfaGFzaCBWQUxVRVMgKDEsIDEwLCAx MDApOworVVBEQVRFIGhpX2hhc2ggU0VUIHYgPSA5OSBXSEVSRSBpZCA9IDE7CitVUERBVEUg aGlfaGFzaCBTRVQgdiA9IDEwIFdIRVJFIGlkID0gMTsgICAtLSBBQkE6IDEwIC0+IDk5IC0+ IDEwLCB3IHVuY2hhbmdlZAorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwor IHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCisoMSByb3cpCisKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyBoYXNoX2lzX2hvdF9pbmRl eGVkIEZST00gZ2V0X2hpX2NvdW50KCdoaV9oYXNoJyk7CisgaGFzaF9pc19ob3RfaW5kZXhl ZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VUIGVuYWJsZV9z ZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGNv dW50KCopIEFTIGhhc2hfdjEwIEZST00gaGlfaGFzaCBXSEVSRSB2ID0gMTA7ICAgLS0gd2Fu dCAxIChubyBkdXBsaWNhdGUpCisgaGFzaF92MTAgCistLS0tLS0tLS0tCisgICAgICAgIDEK KygxIHJvdykKKworU0VMRUNUIGNvdW50KCopIEFTIGhhc2hfdjk5IEZST00gaGlfaGFzaCBX SEVSRSB2ID0gOTk7ICAgLS0gd2FudCAwIChzdGFsZSBkcm9wcGVkKQorIGhhc2hfdjk5IAor LS0tLS0tLS0tLQorICAgICAgICAwCisoMSByb3cpCisKK1JFU0VUIGVuYWJsZV9iaXRtYXBz Y2FuOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIFRBQkxFIGhpX2hhc2g7CistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDMwLiBEREwgYWZ0ZXIgYSBIT1QtaW5kZXhlZCBj aGFpbiBleGlzdHMuICBUaGUgcGVyLWhvcCBtb2RpZmllZC1hdHRycworLS0gYml0bWFwIG9u IHRoZSBwYWdlIGlzIGtleWVkIGJ5IHBoeXNpY2FsIGF0dHJpYnV0ZSBudW1iZXIgYW5kIHNp emVkIGJ5IHRoZQorLS0gcmVsYXRpb24ncyBuYXR0cyBBVCBXUklURSBUSU1FLiAgSW5kZXhl cyBhZGRlZC9kcm9wcGVkIGFmdGVyIHRoZSBjaGFpbgorLS0gZm9ybXMsIGFuZCBBREQvRFJP UCBDT0xVTU4sIG11c3Qgbm90IGNvcnJ1cHQgdGhlIHJlYWQtc2lkZSBzdGFsZW5lc3MgdGVz dC4KKy0tIFRoZSBzaGFycCBjYXNlIGlzIEFERCBDT0xVTU4gY3Jvc3NpbmcgYW4gOC1hdHRy aWJ1dGUgYm91bmRhcnksIHdoaWNoIGdyb3dzCistLSBjZWlsKG5hdHRzLzgpOiByZWFkZXJz IG11c3QgbG9jYXRlIGVhY2ggaG9wJ3MgYml0bWFwIGZyb20gdGhhdCBob3AncyBvd24KKy0t IHdyaXRlLXRpbWUgbmF0dHMgKEhlYXBUdXBsZUhlYWRlckdldE5hdHRzIC8gdGhlIHN0dWIn cyBzdGFzaGVkIG5hdHRzKSwgbm90CistLSB0aGUgcmVsYXRpb24ncyBjdXJyZW50IG5hdHRz LgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBFeGFjdGx5IDggYXR0cmlidXRlcyAo YzEuLmM3ICsgcGF5bG9hZCkgc28gYWRkaW5nIHRoZSA5dGggZmxpcHMgdGhlIGJpdG1hcAor LS0gZnJvbSAxIGJ5dGUgdG8gMi4gIGM3IGlzIHRoZSBjb2x1bW4gd2UgY2h1cm47IGMyIGlz IGFuIHVuY2hhbmdlZCBpbmRleGVkCistLSBjb2x1bW4gd2hvc2UgbGVhZiBtdXN0IHN0YXkg Y3VycmVudC4KK0NSRUFURSBUQUJMRSBoaV9kZGwgKAorICAgIGMxIGludCBQUklNQVJZIEtF WSwgYzIgaW50LCBjMyBpbnQsIGM0IGludCwKKyAgICBjNSBpbnQsIGM2IGludCwgYzcgaW50 LCBwYXlsb2FkIHRleHQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRF WCBoaV9kZGxfYzIgT04gaGlfZGRsKGMyKTsKK0NSRUFURSBJTkRFWCBoaV9kZGxfYzcgT04g aGlfZGRsKGM3KTsKK0lOU0VSVCBJTlRPIGhpX2RkbCBWQUxVRVMgKDEsIDEwLCAyMCwgMzAs IDQwLCA1MCwgNzAsICdwJyk7CistLSBGb3JtIGEgSE9ULWluZGV4ZWQgY2hhaW4gb24gYzcg QkVGT1JFIGFueSBmdXJ0aGVyIERETC4KK1VQREFURSBoaV9kZGwgU0VUIGM3ID0gNzEgV0hF UkUgYzEgPSAxOworVVBEQVRFIGhpX2RkbCBTRVQgYzcgPSA3MiBXSEVSRSBjMSA9IDE7Cist LSAoYSkgQ1JFQVRFIElOREVYIGFmdGVyIHRoZSBjaGFpbiBleGlzdHM6IHRoZSBuZXcgaW5k ZXggaXMgYnVpbHQgYWdhaW5zdCB0aGUKKy0tIGxpdmUgdHVwbGUgdW5kZXIgaXRzIG93biBU SUQsIHNvIGl0cyBlbnRyeSBpcyBuZXZlciBzdGFsZS4KK0NSRUFURSBJTkRFWCBoaV9kZGxf YzMgT04gaGlfZGRsKGMzKTsKKy0tIChiKSBBREQgQ09MVU1OIGNyb3NzaW5nIHRoZSA4LWF0 dHJpYnV0ZSBib3VuZGFyeSAobmF0dHMgOCAtPiA5KS4gIEV4aXN0aW5nCistLSBob3BzIGtl ZXAgdGhlaXIgMS1ieXRlIGJpdG1hcHM7IHRoZSByZWxhdGlvbiBub3cgd2FudHMgMi4gIFJl YWRzIHRocm91Z2ggdGhlCistLSBvbGQgY2hhaW4gbXVzdCBzdGlsbCBiZSBjb3JyZWN0Lgor QUxURVIgVEFCTEUgaGlfZGRsIEFERCBDT0xVTU4gYzkgaW50OworQ1JFQVRFIElOREVYIGhp X2RkbF9jOSBPTiBoaV9kZGwoYzkpOworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VU IGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9pbmRleG9ubHlzY2FuID0g b2ZmOworLS0gTGl2ZSBjNyBpcyA3Mi4gIFRoZSBjNyBpbmRleCBtdXN0IHJldHVybiB0aGUg bGl2ZSByb3cgZm9yIDcyIGFuZCBkcm9wIHRoZQorLS0gc3RhbGUgbGVhdmVzIGZvciA3MCBh bmQgNzEgKG9mZnNldHMgbWlzcmVhZCB3b3VsZCBjb3JydXB0IHRoaXMpLgorU0VMRUNUIGNv dW50KCopIEFTIGM3X2VxXzcyIEZST00gaGlfZGRsIFdIRVJFIGM3ID0gNzIgQU5EIHBheWxv YWQgSVMgTk9UIE5VTEw7CisgYzdfZXFfNzIgCistLS0tLS0tLS0tCisgICAgICAgIDEKKygx IHJvdykKKworU0VMRUNUIGNvdW50KCopIEFTIGM3X2VxXzcwX3N0YWxlIEZST00gaGlfZGRs IFdIRVJFIGM3ID0gNzAgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CisgYzdfZXFfNzBfc3Rh bGUgCistLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIDAKKygxIHJvdykKKworU0VM RUNUIGNvdW50KCopIEFTIGM3X2VxXzcxX3N0YWxlIEZST00gaGlfZGRsIFdIRVJFIGM3ID0g NzEgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CisgYzdfZXFfNzFfc3RhbGUgCistLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgIDAKKygxIHJvdykKKworLS0gYzIgbmV2ZXIgY2hh bmdlZCBhY3Jvc3MgdGhlIGNoYWluOiBpdHMgbGVhZiBtdXN0IE5PVCBiZSBqdWRnZWQgc3Rh bGUgZXZlbgorLS0gdGhvdWdoIGEgY3Jvc3NlZCBob3AgY2hhbmdlZCBjNy4gIEEgbWlzcmVh ZCBiaXRtYXAgY291bGQgc3B1cmlvdXNseSBmbGFnIGl0LgorU0VMRUNUIGNvdW50KCopIEFT IGMyX2VxXzEwX2N1cnJlbnQgRlJPTSBoaV9kZGwgV0hFUkUgYzIgPSAxMCBBTkQgcGF5bG9h ZCBJUyBOT1QgTlVMTDsKKyBjMl9lcV8xMF9jdXJyZW50IAorLS0tLS0tLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCistLSAoYykgQ29udGludWUgY2h1cm5p bmcgYzcgQUZURVIgdGhlIEFERCBDT0xVTU46IHRoZSBuZXcgaG9wJ3MgYml0bWFwIGlzIHNp emVkCistLSBmb3IgbmF0dHMgOSAoMiBieXRlcyk7IHRoZSBvbGQgaG9wcyBhcmUgMSBieXRl LiAgQSBjaGFpbiB3aXRoIG1peGVkLXNpemUKKy0tIGJpdG1hcHMgbXVzdCBzdGlsbCByZXNv bHZlIGNvcnJlY3RseS4KK1VQREFURSBoaV9kZGwgU0VUIGM3ID0gNzMgV0hFUkUgYzEgPSAx OworU0VMRUNUIGNvdW50KCopIEFTIGM3X2VxXzczIEZST00gaGlfZGRsIFdIRVJFIGM3ID0g NzMgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CisgYzdfZXFfNzMgCistLS0tLS0tLS0tCisg ICAgICAgIDEKKygxIHJvdykKKworU0VMRUNUIGNvdW50KCopIEFTIGM3X2VxXzcyX25vd19z dGFsZSBGUk9NIGhpX2RkbCBXSEVSRSBjNyA9IDcyIEFORCBwYXlsb2FkIElTIE5PVCBOVUxM OworIGM3X2VxXzcyX25vd19zdGFsZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgICAgICAwCisoMSByb3cpCisKKy0tIChkKSBDb2xsYXBzZSB0aGUgY2hhaW4gdG8g c3R1YnMgdmlhIFZBQ1VVTSwgdGhlbiByZWFkIGFnYWluOiB0aGUgc3R1YiBtdXN0CistLSBw cmVzZXJ2ZSBpdHMgd3JpdGUtdGltZSBuYXR0cyBzbyBpdHMgYml0bWFwIHN0YXlzIGxvY2F0 YWJsZSBwb3N0LUFERCBDT0xVTU4uCitVUERBVEUgaGlfZGRsIFNFVCBjNyA9IDc0IFdIRVJF IGMxID0gMTsKK1ZBQ1VVTSAoSU5ERVhfQ0xFQU5VUCBvZmYpIGhpX2RkbDsKK1NFTEVDVCBj b3VudCgqKSBBUyBjN19lcV83NF9hZnRlcl92YWN1dW0gRlJPTSBoaV9kZGwgV0hFUkUgYzcg PSA3NCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBjN19lcV83NF9hZnRlcl92YWN1dW0g CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgMQorKDEg cm93KQorCitTRUxFQ1QgY291bnQoKikgQVMgYzJfZXFfMTBfYWZ0ZXJfdmFjdXVtIEZST00g aGlfZGRsIFdIRVJFIGMyID0gMTAgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CisgYzJfZXFf MTBfYWZ0ZXJfdmFjdXVtIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgICAgICAgIDEKKygxIHJvdykKKworLS0gKGUpIERST1AgQ09MVU1OIGtlZXBzIHRoZSBh dHRudW0gc2xvdCAobm8gcmVudW1iZXIpLCBzbyBiaXRtYXBzIHN0YXkgYWxpZ25lZC4KK0FM VEVSIFRBQkxFIGhpX2RkbCBEUk9QIENPTFVNTiBjNDsKK1NFTEVDVCBjb3VudCgqKSBBUyBj N19hZnRlcl9kcm9wIEZST00gaGlfZGRsIFdIRVJFIGM3ID0gNzQgQU5EIHBheWxvYWQgSVMg Tk9UIE5VTEw7CisgYzdfYWZ0ZXJfZHJvcCAKKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgIDEKKygxIHJvdykKKworU0VMRUNUIGNvdW50KCopIEFTIGMyX2FmdGVyX2Ryb3AgRlJP TSBoaV9kZGwgV0hFUkUgYzIgPSAxMCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKyBjMl9h ZnRlcl9kcm9wIAorLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgMQorKDEgcm93KQor CistLSAoZikgRFJPUCBJTkRFWCBvbiB0aGUgY2h1cm5lZCBjb2x1bW46IHJlbWFpbmluZyBp bmRleGVzIHN0aWxsIHJlc29sdmUuCitEUk9QIElOREVYIGhpX2RkbF9jNzsKK1NFTEVDVCBj b3VudCgqKSBBUyBjMl9hZnRlcl9kcm9waWR4IEZST00gaGlfZGRsIFdIRVJFIGMyID0gMTAg QU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CisgYzJfYWZ0ZXJfZHJvcGlkeCAKKy0tLS0tLS0t LS0tLS0tLS0tLQorICAgICAgICAgICAgICAgIDEKKygxIHJvdykKKworUkVTRVQgZW5hYmxl X3NlcXNjYW47CitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK1JFU0VUIGVuYWJsZV9pbmRl eG9ubHlzY2FuOworLS0gVGhlIHNlcXNjYW4gdHJ1dGggY29uZmlybXMgdGhlIGxpdmUgcm93 OyB0aGUgY291bnQgYXNzZXJ0aW9ucyBhYm92ZSAocmVhZAorLS0gdGhyb3VnaCB0aGUgcG9z dC1EREwgaW5kZXhlcykgbWF0Y2ggaXQsIHdoaWNoIGlzIHdoYXQgd291bGQgYnJlYWsgaWYg YQorLS0gbWlzLXNpemVkIGJpdG1hcCBjb3JydXB0ZWQgdGhlIHN0YWxlbmVzcyB2ZXJkaWN0 LgorU0VMRUNUIGMxLCBjMiwgYzcgRlJPTSBoaV9kZGwgV0hFUkUgYzEgPSAxOworIGMxIHwg YzIgfCBjNyAKKy0tLS0rLS0tLSstLS0tCisgIDEgfCAxMCB8IDc0CisoMSByb3cpCisKK0RS T1AgVEFCTEUgaGlfZGRsOworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBDbGVhbnVw CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0RST1AgRlVOQ1RJT04gZ2V0X2hpX2NvdW50 KHRleHQpOworRFJPUCBGVU5DVElPTiBnZXRfaG90X2NvdW50KHRleHQpOworRFJPUCBFWFRF TlNJT04gcGFnZWluc3BlY3Q7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0Cmlu ZGV4IGE2NWE1YmYwYzRmLi5iOTgyNmRlMzFhNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ydWxlcy5vdXQKQEAgLTE4MTAsNiArMTgxMCw4IEBAIHBnX3N0YXRfYWxsX2luZGV4ZXN8 IFNFTEVDVCBjLm9pZCBBUyByZWxpZCwKICAgICBwZ19zdGF0X2dldF9sYXN0c2NhbihpLm9p ZCkgQVMgbGFzdF9pZHhfc2NhbiwKICAgICBwZ19zdGF0X2dldF90dXBsZXNfcmV0dXJuZWQo aS5vaWQpIEFTIGlkeF90dXBfcmVhZCwKICAgICBwZ19zdGF0X2dldF90dXBsZXNfZmV0Y2hl ZChpLm9pZCkgQVMgaWR4X3R1cF9mZXRjaCwKKyAgICBwZ19zdGF0X2dldF90dXBsZXNfaG90 X2luZGV4ZWRfdXBkYXRlZF9za2lwcGVkKGkub2lkKSBBUyBuX3R1cF9ob3RfaW5kZXhlZF91 cGRfc2tpcHBlZCwKKyAgICBwZ19zdGF0X2dldF90dXBsZXNfaG90X2luZGV4ZWRfdXBkYXRl ZF9tYXRjaGVkKGkub2lkKSBBUyBuX3R1cF9ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZCwKICAg ICBwZ19zdGF0X2dldF9zdGF0X3Jlc2V0X3RpbWUoaS5vaWQpIEFTIHN0YXRzX3Jlc2V0CiAg ICBGUk9NICgoKHBnX2NsYXNzIGMKICAgICAgSk9JTiBwZ19pbmRleCB4IE9OICgoYy5vaWQg PSB4LmluZHJlbGlkKSkpCkBAIC0xODI5LDYgKzE4MzEsNyBAQCBwZ19zdGF0X2FsbF90YWJs ZXN8IFNFTEVDVCBjLm9pZCBBUyByZWxpZCwKICAgICBwZ19zdGF0X2dldF90dXBsZXNfdXBk YXRlZChjLm9pZCkgQVMgbl90dXBfdXBkLAogICAgIHBnX3N0YXRfZ2V0X3R1cGxlc19kZWxl dGVkKGMub2lkKSBBUyBuX3R1cF9kZWwsCiAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX2hvdF91 cGRhdGVkKGMub2lkKSBBUyBuX3R1cF9ob3RfdXBkLAorICAgIHBnX3N0YXRfZ2V0X3R1cGxl c19ob3RfaW5kZXhlZF91cGRhdGVkKGMub2lkKSBBUyBuX3R1cF9ob3RfaW5kZXhlZF91cGQs CiAgICAgcGdfc3RhdF9nZXRfdHVwbGVzX25ld3BhZ2VfdXBkYXRlZChjLm9pZCkgQVMgbl90 dXBfbmV3cGFnZV91cGQsCiAgICAgcGdfc3RhdF9nZXRfbGl2ZV90dXBsZXMoYy5vaWQpIEFT IG5fbGl2ZV90dXAsCiAgICAgcGdfc3RhdF9nZXRfZGVhZF90dXBsZXMoYy5vaWQpIEFTIG5f ZGVhZF90dXAsCkBAIC0yMzI0LDYgKzIzMjcsOCBAQCBwZ19zdGF0X3N5c19pbmRleGVzfCBT RUxFQ1QgcmVsaWQsCiAgICAgbGFzdF9pZHhfc2NhbiwKICAgICBpZHhfdHVwX3JlYWQsCiAg ICAgaWR4X3R1cF9mZXRjaCwKKyAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCwK KyAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZCwKICAgICBzdGF0c19yZXNldAog ICAgRlJPTSBwZ19zdGF0X2FsbF9pbmRleGVzCiAgIFdIRVJFICgoc2NoZW1hbmFtZSA9IEFO WSAoQVJSQVlbJ3BnX2NhdGFsb2cnOjpuYW1lLCAnaW5mb3JtYXRpb25fc2NoZW1hJzo6bmFt ZV0pKSBPUiAoc2NoZW1hbmFtZSB+ICdecGdfdG9hc3QnOjp0ZXh0KSk7CkBAIC0yMzQwLDYg KzIzNDUsNyBAQCBwZ19zdGF0X3N5c190YWJsZXN8IFNFTEVDVCByZWxpZCwKICAgICBuX3R1 cF91cGQsCiAgICAgbl90dXBfZGVsLAogICAgIG5fdHVwX2hvdF91cGQsCisgICAgbl90dXBf aG90X2luZGV4ZWRfdXBkLAogICAgIG5fdHVwX25ld3BhZ2VfdXBkLAogICAgIG5fbGl2ZV90 dXAsCiAgICAgbl9kZWFkX3R1cCwKQEAgLTIzNzksNiArMjM4NSw4IEBAIHBnX3N0YXRfdXNl cl9pbmRleGVzfCBTRUxFQ1QgcmVsaWQsCiAgICAgbGFzdF9pZHhfc2NhbiwKICAgICBpZHhf dHVwX3JlYWQsCiAgICAgaWR4X3R1cF9mZXRjaCwKKyAgICBuX3R1cF9ob3RfaW5kZXhlZF91 cGRfc2tpcHBlZCwKKyAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGRfbWF0Y2hlZCwKICAgICBz dGF0c19yZXNldAogICAgRlJPTSBwZ19zdGF0X2FsbF9pbmRleGVzCiAgIFdIRVJFICgoc2No ZW1hbmFtZSA8PiBBTEwgKEFSUkFZWydwZ19jYXRhbG9nJzo6bmFtZSwgJ2luZm9ybWF0aW9u X3NjaGVtYSc6Om5hbWVdKSkgQU5EIChzY2hlbWFuYW1lICF+ICdecGdfdG9hc3QnOjp0ZXh0 KSk7CkBAIC0yMzk1LDYgKzI0MDMsNyBAQCBwZ19zdGF0X3VzZXJfdGFibGVzfCBTRUxFQ1Qg cmVsaWQsCiAgICAgbl90dXBfdXBkLAogICAgIG5fdHVwX2RlbCwKICAgICBuX3R1cF9ob3Rf dXBkLAorICAgIG5fdHVwX2hvdF9pbmRleGVkX3VwZCwKICAgICBuX3R1cF9uZXdwYWdlX3Vw ZCwKICAgICBuX2xpdmVfdHVwLAogICAgIG5fZGVhZF90dXAsCkBAIC0yNDUwLDYgKzI0NTks NyBAQCBwZ19zdGF0X3hhY3RfYWxsX3RhYmxlc3wgU0VMRUNUIGMub2lkIEFTIHJlbGlkLAog ICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQoYy5vaWQpIEFTIG5fdHVwX3Vw ZCwKICAgICBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19kZWxldGVkKGMub2lkKSBBUyBuX3R1 cF9kZWwsCiAgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoYy5vaWQp IEFTIG5fdHVwX2hvdF91cGQsCisgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X2lu ZGV4ZWRfdXBkYXRlZChjLm9pZCkgQVMgbl90dXBfaG90X2luZGV4ZWRfdXBkLAogICAgIHBn X3N0YXRfZ2V0X3hhY3RfdHVwbGVzX25ld3BhZ2VfdXBkYXRlZChjLm9pZCkgQVMgbl90dXBf bmV3cGFnZV91cGQKICAgIEZST00gKChwZ19jbGFzcyBjCiAgICAgIExFRlQgSk9JTiBwZ19p bmRleCBpIE9OICgoYy5vaWQgPSBpLmluZHJlbGlkKSkpCkBAIC0yNDY3LDYgKzI0NzcsNyBA QCBwZ19zdGF0X3hhY3Rfc3lzX3RhYmxlc3wgU0VMRUNUIHJlbGlkLAogICAgIG5fdHVwX3Vw ZCwKICAgICBuX3R1cF9kZWwsCiAgICAgbl90dXBfaG90X3VwZCwKKyAgICBuX3R1cF9ob3Rf aW5kZXhlZF91cGQsCiAgICAgbl90dXBfbmV3cGFnZV91cGQKICAgIEZST00gcGdfc3RhdF94 YWN0X2FsbF90YWJsZXMKICAgV0hFUkUgKChzY2hlbWFuYW1lID0gQU5ZIChBUlJBWVsncGdf Y2F0YWxvZyc6Om5hbWUsICdpbmZvcm1hdGlvbl9zY2hlbWEnOjpuYW1lXSkpIE9SIChzY2hl bWFuYW1lIH4gJ15wZ190b2FzdCc6OnRleHQpKTsKQEAgLTI0OTAsNiArMjUwMSw3IEBAIHBn X3N0YXRfeGFjdF91c2VyX3RhYmxlc3wgU0VMRUNUIHJlbGlkLAogICAgIG5fdHVwX3VwZCwK ICAgICBuX3R1cF9kZWwsCiAgICAgbl90dXBfaG90X3VwZCwKKyAgICBuX3R1cF9ob3RfaW5k ZXhlZF91cGQsCiAgICAgbl90dXBfbmV3cGFnZV91cGQKICAgIEZST00gcGdfc3RhdF94YWN0 X2FsbF90YWJsZXMKICAgV0hFUkUgKChzY2hlbWFuYW1lIDw+IEFMTCAoQVJSQVlbJ3BnX2Nh dGFsb2cnOjpuYW1lLCAnaW5mb3JtYXRpb25fc2NoZW1hJzo6bmFtZV0pKSBBTkQgKHNjaGVt YW5hbWUgIX4gJ15wZ190b2FzdCc6OnRleHQpKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3Nj aGVkdWxlCmluZGV4IGJkOTVjYzI0OTc3Li40ZmRlNWI2YjBjNiAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0xNDcsNiArMTQ3LDcgQEAgdGVzdDogZmFzdF9kZWZh dWx0CiAjIEhPVCB1cGRhdGVzIHRlc3RzCiAjIC0tLS0tLS0tLS0KIHRlc3Q6IGhvdF91cGRh dGVzCit0ZXN0OiBob3RfaW5kZXhlZF91cGRhdGVzCiAKICMgcnVuIHRhYmxlc3BhY2UgdGVz dCBhdCB0aGUgZW5kIGJlY2F1c2UgaXQgZHJvcHMgdGhlIHRhYmxlc3BhY2UgY3JlYXRlZCBk dXJpbmcKICMgc2V0dXAgdGhhdCBvdGhlciB0ZXN0cyBtYXkgdXNlLgpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvaG90X2luZGV4ZWRfdXBkYXRlcy5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9ob3RfaW5kZXhlZF91cGRhdGVzLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZGU4ZDE2MjJjMTcKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ob3RfaW5kZXhlZF91cGRhdGVzLnNxbApAQCAtMCww ICsxLDExNTQgQEAKKy0tCistLSBIT1RfSU5ERVhFRF9VUERBVEVTCistLSBUZXN0IEhPVC1p bmRleGVkIHVwZGF0ZSAoaG90LWluZGV4ZWQpLCBha2EgSE9ULWluZGV4ZWQsIGJlaGF2aW91 cgorLS0KKy0tIEV2ZXJ5IFVQREFURSBpbiB0aGlzIGZpbGUgbW9kaWZpZXMgYXQgbGVhc3Qg b25lIG5vbi1zdW1tYXJpemluZworLS0gaW5kZXhlZCBhdHRyaWJ1dGUuICBPbiBhIHByZS1o b3QtaW5kZXhlZCBzZXJ2ZXIgYWxsIG9mIHRoZXNlIHdvdWxkIGJlCistLSBub24tSE9UOyBv biB0aGUgaG90LWluZGV4ZWQgYnJhbmNoIGVhY2ggZWxpZ2libGUgdXBkYXRlIHN0YXlzIG9u LXBhZ2UgYW5kCistLSBpbnNlcnRzIGludG8gb25seSB0aGUgaW5kZXhlcyB3aG9zZSBhdHRy aWJ1dGVzIGFjdHVhbGx5IGNoYW5nZWQuCistLQorLS0gV2UgdmVyaWZ5IGZvdXIgdGhpbmdz OgorLS0gICAoQSkgcGdfc3RhdCBjb3VudGVyczogSE9UIGFuZCBob3QtaW5kZXhlZCBjb3Vu dHMgaW5jcmVtZW50IGFzIGV4cGVjdGVkCistLSAgIChCKSBpbmRleCBsb29rdXBzIHJldHVy biB0aGUgbmV3IHZhbHVlIGFuZCBub3QgdGhlIHN0YWxlIHZhbHVlCistLSAgICAgICBmb3Ig RVFVQUxJVFkgcXVlcmllcyAodGhlIHJlYWQtc2lkZSBzdGFsZW5lc3MgdGVzdCBkcm9wcyBh CistLSAgICAgICBsZWFmIHdob3NlIGNvdmVyZWQgYXR0cmlidXRlIGNoYW5nZWQgb24gdGhl IHdheSB0byB0aGUgbGl2ZSB0dXBsZSkKKy0tICAgKEMpIHBnX3JlbGF0aW9uX2hvdF9pbmRl eGVkX3N0YXRzIHJlcG9ydHMgdGhlIEhPVC1pbmRleGVkIHZlcnNpb25zIHdlIGV4cGVjdAor LS0gICAoRCkgKipSQU5HRS9JTkVRVUFMSVRZKiogcXVlcmllcyByZXR1cm4gdGhlIGNvcnJl Y3QgbnVtYmVyIG9mCistLSAgICAgICB0dXBsZXMgLS0gdGhpcyBpcyB0aGUgY2xhc3Mgb2Yg YnVncyB3aGVyZSBhIHN0YWxlIGJ0cmVlCistLSAgICAgICBlbnRyeSdzIGtleSBpcyBzdGls bCByZWFjaGFibGUgdmlhIGEgbG9vc2VyIHNjYW4ga2V5OyB0aGUKKy0tICAgICAgIGNyb3Nz ZWQtYXR0cmlidXRlIGJpdG1hcCBkcm9wcyB0aGUgc3RhbGUgYXJyaXZhbCBiZWNhdXNlIHRo ZSBpbmRleCdzCistLSAgICAgICBhdHRyaWJ1dGUgY2hhbmdlZCBiZXR3ZWVuIHRoYXQgbGVh ZidzIHRhcmdldCBhbmQgdGhlIGxpdmUgdHVwbGUKKy0tCisKK0NSRUFURSBFWFRFTlNJT04g SUYgTk9UIEVYSVNUUyBwYWdlaW5zcGVjdDsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJ T04gZ2V0X2hvdF9jb3VudChyZWxfbmFtZSB0ZXh0KQorUkVUVVJOUyBUQUJMRSAodXBkYXRl cyBCSUdJTlQsIGhvdCBCSUdJTlQpIEFTICQkCitERUNMQVJFIHJlbF9vaWQgb2lkOworQkVH SU4KKyAgICByZWxfb2lkIDo9IHJlbF9uYW1lOjpyZWdjbGFzczo6b2lkOworICAgIHVwZGF0 ZXMgOj0gQ09BTEVTQ0UocGdfc3RhdF9nZXRfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDAp ICsKKyAgICAgICAgICAgICAgIENPQUxFU0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3Vw ZGF0ZWQocmVsX29pZCksIDApOworICAgIGhvdCA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90 dXBsZXNfaG90X3VwZGF0ZWQocmVsX29pZCksIDApICsKKyAgICAgICAgICAgQ09BTEVTQ0Uo cGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29pZCksIDApOworICAg IFJFVFVSTiBORVhUOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbDsKKworQ1JFQVRFIE9S IFJFUExBQ0UgRlVOQ1RJT04gZ2V0X2hpX2NvdW50KHJlbF9uYW1lIHRleHQpCitSRVRVUk5T IFRBQkxFICh1cGRhdGVzIEJJR0lOVCwgaG90IEJJR0lOVCwgaG90X2lkeCBCSUdJTlQpIEFT ICQkCitERUNMQVJFIHJlbF9vaWQgb2lkOworQkVHSU4KKyAgICByZWxfb2lkIDo9IHJlbF9u YW1lOjpyZWdjbGFzczo6b2lkOworICAgIHVwZGF0ZXMgOj0gQ09BTEVTQ0UocGdfc3RhdF9n ZXRfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApICsKKyAgICAgICAgICAgICAgIENPQUxF U0NFKHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX3VwZGF0ZWQocmVsX29pZCksIDApOworICAg IGhvdCA6PSBDT0FMRVNDRShwZ19zdGF0X2dldF90dXBsZXNfaG90X3VwZGF0ZWQocmVsX29p ZCksIDApICsKKyAgICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNf aG90X3VwZGF0ZWQocmVsX29pZCksIDApOworICAgIGhvdF9pZHggOj0gQ09BTEVTQ0UocGdf c3RhdF9nZXRfdHVwbGVzX2hvdF9pbmRleGVkX3VwZGF0ZWQocmVsX29pZCksIDApICsKKyAg ICAgICAgICAgQ09BTEVTQ0UocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X2luZGV4ZWRf dXBkYXRlZChyZWxfb2lkKSwgMCk7CisgICAgUkVUVVJOIE5FWFQ7CitFTkQ7CiskJCBMQU5H VUFHRSBwbHBnc3FsOworCisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMS4gQmFz aWMgaG90LWluZGV4ZWQ6IG1vZGlmeWluZyBhbiBpbmRleGVkIGNvbHVtbiBzdGF5cyBIT1Qg YW5kIGNvdW50cyBhcyBob3QtaW5kZXhlZAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitD UkVBVEUgVEFCTEUgaGlfYmFzaWMgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBp bmRleGVkX2NvbCBpbnQsCisgICAgbm9uX2luZGV4ZWRfY29sIHRleHQKKykgV0lUSCAoZmls bGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9iYXNpY19pZHggT04gaGlfYmFzaWMo aW5kZXhlZF9jb2wpOworCitJTlNFUlQgSU5UTyBoaV9iYXNpYyBWQUxVRVMgKDEsIDEwMCwg J2luaXRpYWwnKTsKKworLS0gUHJlLWhvdC1pbmRleGVkIHRoaXMgd291bGQgYmUgbm9uLUhP VC4gIFVuZGVyIGhvdC1pbmRleGVkIGl0J3MgSE9ULWluZGV4ZWQ7IGJvdGggdGhlCistLSBI T1QgY291bnRlciBhbmQgdGhlIGhvdC1pbmRleGVkIGNvdW50ZXIgYWR2YW5jZS4KK1VQREFU RSBoaV9iYXNpYyBTRVQgaW5kZXhlZF9jb2wgPSAxNTAgV0hFUkUgaWQgPSAxOworU0VMRUNU IHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworU0VMRUNUICogRlJPTSBnZXRfaGlfY291 bnQoJ2hpX2Jhc2ljJyk7CisKKy0tIFRoZSBuZXcgdmFsdWUgaXMgcmVhY2hhYmxlIHZpYSB0 aGUgaW5kZXguCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitFWFBMQUlOIChDT1NUUyBP RkYpIFNFTEVDVCBpZCwgaW5kZXhlZF9jb2wgRlJPTSBoaV9iYXNpYyBXSEVSRSBpbmRleGVk X2NvbCA9IDE1MDsKK1NFTEVDVCBpZCwgaW5kZXhlZF9jb2wgRlJPTSBoaV9iYXNpYyBXSEVS RSBpbmRleGVkX2NvbCA9IDE1MDsKKworLS0gVGhlIG9sZCB2YWx1ZSBpcyBub3QgcmVhY2hh YmxlIHRocm91Z2ggdGhpcyBpbmRleDogdGhlIHN0YWxlIGJ0cmVlCistLSBlbnRyeSAoaW5k ZXhlZF9jb2w9MTAwKSB3YWxrcyB0byB0aGUgY3VycmVudCB0dXBsZSB2aWEgdGhlIGhvdC1p bmRleGVkIGhvcCwKKy0tIG5vZGVJbmRleHNjYW4gcmUtZXZhbHVhdGVzIGBpbmRleGVkX2Nv bCA9IDEwMGAgYWdhaW5zdCB0aGUgY3VycmVudAorLS0gdHVwbGUgKGluZGV4ZWRfY29sPTE1 MCksIGFuZCB0aGUgcm93IGlzIGNvcnJlY3RseSBkcm9wcGVkLiAgVGhpcyBpcworLS0gdGhl IGVxdWFsaXR5LWxvb2t1cCBjYXNlIHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgaGFu ZGxlcy4KK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGlkIEZST00gaGlfYmFzaWMgV0hF UkUgaW5kZXhlZF9jb2wgPSAxMDA7CitTRUxFQ1QgaWQgRlJPTSBoaV9iYXNpYyBXSEVSRSBp bmRleGVkX2NvbCA9IDEwMDsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworCistLSBwZ19yZWxh dGlvbl9ob3RfaW5kZXhlZF9zdGF0cyBzZWVzIG9uZSBIT1QtaW5kZXhlZCB2ZXJzaW9uLCB6 ZXJvIEhPVCByZWRpcmVjdHMgKHRoZQorLS0gY2hhaW4gaGFzIG5vdCB5ZXQgYmVlbiBwcnVu ZWQgc28gbm8gTFBfUkVESVJFQ1QgZXhpc3RzKS4KK1NFTEVDVCBuX2hvdF9pbmRleGVkLCBu X2NoYWlucywgYXZnX2NoYWluX2xlbiwgbWF4X2NoYWluX2xlbgorRlJPTSBwZ19yZWxhdGlv bl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfYmFzaWMnKTsKKworRFJPUCBUQUJMRSBoaV9iYXNp YzsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAyLiBSQU5HRS9JTkVRVUFMSVRZ IGNvcnJlY3RuZXNzIGFmdGVyIGhvdC1pbmRleGVkIG9uIGFuIGluZGV4ZWQgY29sdW1uCist LQorLS0gVGhpcyBpcyB0aGUgdGVzdCBjbGFzcyB0aGF0IGNhdGNoZXMgdGhlIGhvdC1pbmRl eGVkIGZhbHNlLWR1cCBidWc6IGEgc3RhbGUKKy0tIGJ0cmVlIGVudHJ5IHdob3NlIGtleSB2 YWx1ZSBzdGlsbCBzYXRpc2ZpZXMgdGhlIHJhbmdlIHByZWRpY2F0ZSwKKy0tIHJlYWNoYWJs ZSB2aWEgdGhlIGhvdC1pbmRleGVkIGNoYWluIGhvcC4KKy0tCistLSBUbyBleGVyY2lzZSB0 aGUgYnVnIHdlIG11c3QgZm9yY2UgYW4gSW5kZXhTY2FuIHBsYW4gKHRoZQorLS0gSW5kZXhP bmx5U2NhbiBwYXRoIHBlcm1pc3NpdmVseSBkcm9wcyBldmVyeSBob3QtaW5kZXhlZC1yZWFj aGFibGUgaW5kZXgtb25seQorLS0gaGl0OyB0aGUgQml0bWFwSGVhcFNjYW4gcGF0aCBkZWR1 cHMgYnkgVElEKS4gIFdlIGluY2x1ZGUgYSBwYXlsb2FkCistLSBjb2x1bW4gbm90IHByZXNl bnQgaW4gdGhlIFBLIHNvIHRoZSBwbGFubmVyIG11c3QgaGVhcC1mZXRjaC4KKy0tCistLSBU aGUgcmVhZC1zaWRlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBtYWtlcyB0aGUgSW5kZXhT Y2FuIHJldHVybiB0aGUgY29ycmVjdAorLS0gY291bnQgb2YgMTogdGhlIHN0YWxlIGVudHJ5 ICgnMScsJzUnKSBjaGFpbi13YWxrcyB0byB0aGUgbGl2ZSB0dXBsZSBhY3Jvc3MKKy0tIHRo ZSBiLWNoYW5naW5nIGhvcCwgYW5kIGJlY2F1c2UgdGhlIFBLIGNvdmVycyBiIHRoZSBvdmVy bGFwIGlzIG5vbi1lbXB0eSwgc28KKy0tIHRoZSBzdGFsZSBsZWFmIGlzIGRyb3BwZWQuICBU aGUgZnJlc2ggZW50cnkgKCcxJywnMTUnKSBwb2ludHMgZGlyZWN0bHkgYXQgdGhlCistLSBs aXZlIHR1cGxlIChubyBob3AgYWZ0ZXIgaXQpIGFuZCBpcyBrZXB0LiAgVGhlIE9SREVSIEJZ IGxpa2V3aXNlIHJldHVybnMgdGhlCistLSBzaW5nbGUgbGl2ZSByb3cuCistLSAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9yYW5nZSAoCisgICAgYSBpbnQsCisg ICAgYiBpbnQsCisgICAgcGF5bG9hZCB0ZXh0LAorICAgIFBSSU1BUlkgS0VZIChhLCBiKQor KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworCitJTlNFUlQgSU5UTyBoaV9yYW5nZSBWQUxV RVMgKDEsIDUsICdoaScpOworCistLSBob3QtaW5kZXhlZCB1cGRhdGUgb24gdGhlIHNlY29u ZCBQSyBjb2x1bW46IHN0YWxlIGJ0cmVlIGVudHJ5ICgnMScsJzUnKQorLS0gcmVtYWlucywg bmV3IGVudHJ5ICgnMScsJzE1JykgaW5zZXJ0ZWQuICBUaGUgc3RhbGUgZW50cnkgcG9pbnRz IGF0CistLSB0aGUgY2hhaW4gcm9vdDsgdGhlIGZyZXNoIGVudHJ5IHBvaW50cyBkaXJlY3Rs eSBhdCB0aGUgbmV3CistLSBoZWFwLW9ubHkgdHVwbGUuCitVUERBVEUgaGlfcmFuZ2UgU0VU IGIgPSAxNSBXSEVSRSBhID0gMSBBTkQgYiA9IDU7CisKK1NFVCBlbmFibGVfc2Vxc2NhbiA9 IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKKworLS0gSW5kZXhTY2FuOiBw YXlsb2FkIElTIE5PVCBOVUxMIGZvcmNlcyBoZWFwIGZldGNoLCBubyBJbmRleE9ubHlTY2Fu LgorLS0gVGhlIHN0YWxlICgnMScsJzUnKSBsZWFmIGlzIGRyb3BwZWQgYnkgdGhlIGNyb3Nz ZWQtYXR0cmlidXRlIGJpdG1hcCwgc28gdGhpcworLS0gcmV0dXJucyAxLgorRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEg QU5EIGIgPCAxMDAgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CitTRUxFQ1QgY291bnQoKikg RlJPTSBoaV9yYW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEwMCBBTkQgcGF5bG9hZCBJUyBO T1QgTlVMTDsKK1NFTEVDVCBhLCBiIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIHBh eWxvYWQgSVMgTk9UIE5VTEwgT1JERVIgQlkgYjsKKworLS0gSW5kZXhPbmx5U2NhbjogdGhl IHBhZ2UgaG9sZHMgYSBwcmVzZXJ2ZWQgSE9ULWluZGV4ZWQgbWVtYmVyIHNvIGl0IGlzIG5l dmVyIGFsbC12aXNpYmxlOyBJT1MKKy0tIHBlcmZvcm1zIHRoZSBoZWFwIGZldGNoIGFuZCB0 aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIGRyb3BzIHRoZSBzdGFsZSAoJzEnLCc1JykK Ky0tIGxlYWYsIHNvIGNvdW50ID0gMS4KK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGNv dW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIGIgPCAxMDA7CitTRUxFQ1Qg Y291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBhID0gMSBBTkQgYiA8IDEwMDsKKworLS0g Qml0bWFwSGVhcFNjYW46IFRJRCBkZWR1cCBjb2xsYXBzZXMgdGhlIHN0YWxlIGFuZCBmcmVz aCBoaXRzLgorU0VUIGVuYWJsZV9pbmRleHNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2luZGV4 b25seXNjYW4gPSBvZmY7CitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK0VYUExBSU4gKENP U1RTIE9GRikgU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5E IGIgPCAxMDA7CitTRUxFQ1QgY291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBhID0gMSBB TkQgYiA8IDEwMDsKK1JFU0VUIGVuYWJsZV9pbmRleHNjYW47CitSRVNFVCBlbmFibGVfaW5k ZXhvbmx5c2NhbjsKKworLS0gU2VxU2NhbjogcmVhZHMgdGhlIGhlYXAgZGlyZWN0bHksIHNl ZXMgZXhhY3RseSBvbmUgbGl2ZSB0dXBsZS4KK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VU IGVuYWJsZV9pbmRleHNjYW4gPSBvZmY7CitTRVQgZW5hYmxlX2luZGV4b25seXNjYW4gPSBv ZmY7CitTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CitFWFBMQUlOIChDT1NUUyBPRkYp IFNFTEVDVCBjb3VudCgqKSBGUk9NIGhpX3JhbmdlIFdIRVJFIGEgPSAxIEFORCBiIDwgMTAw OworU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmFuZ2UgV0hFUkUgYSA9IDEgQU5EIGIgPCAx MDA7CitSRVNFVCBlbmFibGVfaW5kZXhzY2FuOworUkVTRVQgZW5hYmxlX2luZGV4b25seXNj YW47CitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKKworLS0gU2FtZSBzaGFwZSBvbiBhIHNl Y29uZGFyeSAobm9uLVBLKSBidHJlZTogYW5vdGhlciBob3QtaW5kZXhlZCB1cGRhdGUgb24g Yi4KK0NSRUFURSBJTkRFWCBoaV9yYW5nZV9iX2lkeCBPTiBoaV9yYW5nZShiKTsKK1VQREFU RSBoaV9yYW5nZSBTRVQgYiA9IDI1IFdIRVJFIGEgPSAxIEFORCBiID0gMTU7CisKK1NFVCBl bmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKKy0t IEluZGV4U2NhbiBwYXRoIG9uIHRoZSBzZWNvbmRhcnkgaW5kZXg7IHNhbWUgZml4IGFwcGxp ZXMuCitTRUxFQ1QgY291bnQoKikgRlJPTSBoaV9yYW5nZSBXSEVSRSBiIEJFVFdFRU4gMCBB TkQgMTAwIEFORCBwYXlsb2FkIElTIE5PVCBOVUxMOworUkVTRVQgZW5hYmxlX3NlcXNjYW47 CitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKKworRFJPUCBUQUJMRSBoaV9yYW5nZTsKKwor LS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAzLiBBbGwtb3Itbm9uZSBvbiBhIG11bHRp LWluZGV4ZWQgdGFibGU6IGhvdC1pbmRleGVkIG9ubHkgdG91Y2hlcyBpbmRleGVzCistLSAg ICB3aG9zZSBhdHRyaWJ1dGVzIGNoYW5nZWQKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor Q1JFQVRFIFRBQkxFIGhpX211bHRpICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAg Y29sX2EgaW50LAorICAgIGNvbF9iIGludCwKKyAgICBjb2xfYyBpbnQsCisgICAgbm9uX2lu ZGV4ZWQgdGV4dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhp X211bHRpX2FfaWR4IE9OIGhpX211bHRpKGNvbF9hKTsKK0NSRUFURSBJTkRFWCBoaV9tdWx0 aV9iX2lkeCBPTiBoaV9tdWx0aShjb2xfYik7CitDUkVBVEUgSU5ERVggaGlfbXVsdGlfY19p ZHggT04gaGlfbXVsdGkoY29sX2MpOworCitJTlNFUlQgSU5UTyBoaV9tdWx0aSBWQUxVRVMg KDEsIDEwLCAyMCwgMzAsICdpbml0aWFsJyk7CisKKy0tIGNvbF9hIG9ubHk6IHVuZGVyIGhv dC1pbmRleGVkIHRoaXMgaXMgSE9ULWluZGV4ZWQsIGFuZCBvbmx5IGhpX211bHRpX2FfaWR4 CistLSBnZXRzIGEgbmV3IGVudHJ5LiAgaGlfbXVsdGlfYl9pZHggLyBoaV9tdWx0aV9jX2lk eCBrZWVwIHBvaW50aW5nCistLSBhdCB0aGUgY2hhaW4gcm9vdC4KK1VQREFURSBoaV9tdWx0 aSBTRVQgY29sX2EgPSAxNSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9u ZXh0X2ZsdXNoKCk7CitTRUxFQ1QgKiBGUk9NIGdldF9oaV9jb3VudCgnaGlfbXVsdGknKTsK KworLS0gTG9va3VwcyBvbiBhbGwgdGhyZWUgaW5kZXhlcyByZXR1cm4gdGhlIHJvdy4KK1NF VCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCBGUk9NIGhpX211bHRpIFdIRVJF IGNvbF9hID0gMTU7CitTRUxFQ1QgaWQgRlJPTSBoaV9tdWx0aSBXSEVSRSBjb2xfYiA9IDIw OworU0VMRUNUIGlkIEZST00gaGlfbXVsdGkgV0hFUkUgY29sX2MgPSAzMDsKKworLS0gT2xk IGNvbF9hIHZhbHVlIGlzIHVucmVhY2hhYmxlIGJ5IGVxdWFsaXR5IChzdGFsZSBlbnRyeSBk cm9wcGVkIGJ5IHRoZQorLS0gcmVhZC1zaWRlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCku CitTRUxFQ1QgaWQgRlJPTSBoaV9tdWx0aSBXSEVSRSBjb2xfYSA9IDEwOworUkVTRVQgZW5h YmxlX3NlcXNjYW47CisKK0RST1AgVEFCTEUgaGlfbXVsdGk7CisKKy0tIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorLS0gNC4gTXVsdGktY29sdW1uIGJ0cmVlOiBob3QtaW5kZXhlZCBvbiBw YXJ0IG9mIGEgY29tcG9zaXRlIGtleQorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVB VEUgVEFCTEUgaGlfY29tcG9zaXRlICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAg Y29sX2EgaW50LAorICAgIGNvbF9iIGludCwKKyAgICBkYXRhIHRleHQKKykgV0lUSCAoZmls bGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9jb21wb3NpdGVfYWJfaWR4IE9OIGhp X2NvbXBvc2l0ZShjb2xfYSwgY29sX2IpOworCitJTlNFUlQgSU5UTyBoaV9jb21wb3NpdGUg VkFMVUVTICgxLCAxMCwgMjAsICdkYXRhJyk7CisKKy0tIGNvbF9hIGlzIHBhcnQgb2YgdGhl IGNvbXBvc2l0ZSBrZXk6IGhvdC1pbmRleGVkLgorVVBEQVRFIGhpX2NvbXBvc2l0ZSBTRVQg Y29sX2EgPSAxNTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVD VCAqIEZST00gZ2V0X2hpX2NvdW50KCdoaV9jb21wb3NpdGUnKTsKKworLS0gUmVzZXQgYW5k IHRoZW4gdXBkYXRlIGNvbF9iIChhbHNvIHBhcnQgb2YgdGhlIGtleSkuCitVUERBVEUgaGlf Y29tcG9zaXRlIFNFVCBjb2xfYSA9IDEwOworVVBEQVRFIGhpX2NvbXBvc2l0ZSBTRVQgY29s X2IgPSAyNTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCAq IEZST00gZ2V0X2hpX2NvdW50KCdoaV9jb21wb3NpdGUnKTsKKworRFJPUCBUQUJMRSBoaV9j b21wb3NpdGU7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNS4gUGFydGlhbCBp bmRleDogc3RhdHVzIHRyYW5zaXRpb24gb3V0LW9mLXByZWRpY2F0ZQorLS0KKy0tICdzdGF0 dXMnIGlzIGEgcGFydGlhbC1pbmRleCBwcmVkaWNhdGUgY29sdW1uLiAgQSBjaGFuZ2UgdG8g YSBwcmVkaWNhdGUKKy0tIGNvbHVtbiBjYW4gZmxpcCBhIHJvdyBpbiBvciBvdXQgb2YgdGhl IGluZGV4LCB3aGljaCB0aGUgcmVhZC1zaWRlIGtleQorLS0gcmVjaGVjayBjYW5ub3QgZGV0 ZWN0LCBzbyBIZWFwVXBkYXRlSG90QWxsb3dhYmxlIGNvbnNlcnZhdGl2ZWx5IGRpc3F1YWxp ZmllcworLS0gSE9ULWluZGV4ZWQgZm9yIGFueSBwcmVkaWNhdGUtY29sdW1uIGNoYW5nZSAo ZXZlbiB0aGlzIG91dC1vZi1wcmVkaWNhdGUgLT4KKy0tIG91dC1vZi1wcmVkaWNhdGUgY2Fz ZSkuICBUaGUgdXBkYXRlIGlzIHRoZXJlZm9yZSBub24tSE9ULCBhbmQgdGhlIHBhcnRpYWwK Ky0tIGluZGV4IGNvcnJlY3RseSBzdGF5cyBlbXB0eSBmb3IgdGhlc2Ugbm9uLSdhY3RpdmUn IHJvd3MuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9wYXJ0 aWFsICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgc3RhdHVzIHRleHQsCisgICAg ZGF0YSB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlf cGFydGlhbF9hY3RpdmVfaWR4IE9OIGhpX3BhcnRpYWwoc3RhdHVzKSBXSEVSRSBzdGF0dXMg PSAnYWN0aXZlJzsKKworSU5TRVJUIElOVE8gaGlfcGFydGlhbCBWQUxVRVMgKDEsICdhY3Rp dmUnLCAnZGF0YTEnKTsKK0lOU0VSVCBJTlRPIGhpX3BhcnRpYWwgVkFMVUVTICgyLCAnaW5h Y3RpdmUnLCAnZGF0YTInKTsKK0lOU0VSVCBJTlRPIGhpX3BhcnRpYWwgVkFMVUVTICgzLCAn ZGVsZXRlZCcsICdkYXRhMycpOworCistLSBvdXQgLT4gb3V0IHRyYW5zaXRpb24gb24gdGhl IHByZWRpY2F0ZSBjb2x1bW46IEhPVC1pbmRleGVkIGtlZXBzIGl0IG9uLXBhZ2UsCistLSBh bmQgdGhlIHBhcnRpYWwgaW5kZXggZ2V0cyBubyBlbnRyeSAodGhlIHJvdyBzYXRpc2ZpZXMg dGhlIHByZWRpY2F0ZSBuZWl0aGVyCistLSBiZWZvcmUgbm9yIGFmdGVyIHRoZSB1cGRhdGUp LgorVVBEQVRFIGhpX3BhcnRpYWwgU0VUIHN0YXR1cyA9ICdkZWxldGVkJyBXSEVSRSBpZCA9 IDI7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitTRUxFQ1QgKiBGUk9N IGdldF9oaV9jb3VudCgnaGlfcGFydGlhbCcpOworCistLSBUaGUgcGFydGlhbCBpbmRleCBz dGlsbCBjb3JyZWN0bHkgYW5zd2VycyAiYWN0aXZlIiBxdWVyaWVzLgorU0VMRUNUIGlkLCBz dGF0dXMgRlJPTSBoaV9wYXJ0aWFsIFdIRVJFIHN0YXR1cyA9ICdhY3RpdmUnOworCitEUk9Q IFRBQkxFIGhpX3BhcnRpYWw7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNi4g UGFydGl0aW9uOiBob3QtaW5kZXhlZCBpbnNpZGUgb25lIHBhcnRpdGlvbgorLS0gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfcGFydCAoCisgICAgaWQgaW50LAor ICAgIHBhcnRpdGlvbl9rZXkgaW50LAorICAgIGluZGV4ZWRfY29sIGludCwKKyAgICBkYXRh IHRleHQsCisgICAgUFJJTUFSWSBLRVkgKGlkLCBwYXJ0aXRpb25fa2V5KQorKSBQQVJUSVRJ T04gQlkgUkFOR0UgKHBhcnRpdGlvbl9rZXkpOworQ1JFQVRFIFRBQkxFIGhpX3BhcnRfMSBQ QVJUSVRJT04gT0YgaGlfcGFydAorICAgIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwMCkg V0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9wYXJ0X2lkeCBPTiBo aV9wYXJ0KGluZGV4ZWRfY29sKTsKKworSU5TRVJUIElOVE8gaGlfcGFydCBWQUxVRVMgKDEs IDUwLCAxMDAsICdkYXRhJyk7CisKK1VQREFURSBoaV9wYXJ0IFNFVCBpbmRleGVkX2NvbCA9 IDE1MCBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7 CitTRUxFQ1QgKiBGUk9NIGdldF9oaV9jb3VudCgnaGlfcGFydF8xJyk7CisKK1NFVCBlbmFi bGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCBGUk9NIGhpX3BhcnQgV0hFUkUgaW5kZXhl ZF9jb2wgPSAxNTA7CitTRUxFQ1QgaWQgRlJPTSBoaV9wYXJ0IFdIRVJFIGluZGV4ZWRfY29s ID0gMTAwOworUkVTRVQgZW5hYmxlX3NlcXNjYW47CisKK0RST1AgVEFCTEUgaGlfcGFydCBD QVNDQURFOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDcuIFRyaWdnZXIgbW9k aWZpZXMgaW5kZXhlZCBjb2x1bW46IGhvdC1pbmRleGVkLCBub3Qgbm9uLUhPVAorLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfdHJpZ2dlciAoCisgICAgaWQg aW50IFBSSU1BUlkgS0VZLAorICAgIHRyaWdnZXJlZF9jb2wgaW50LAorICAgIGRhdGEgdGV4 dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX3RyaWdnZXJf aWR4IE9OIGhpX3RyaWdnZXIodHJpZ2dlcmVkX2NvbCk7CisKK0NSRUFURSBPUiBSRVBMQUNF IEZVTkNUSU9OIGhpX3RyaWdnZXJfYnVtcCgpCitSRVRVUk5TIFRSSUdHRVIgQVMgJCQKK0JF R0lOCisgICAgTkVXLnRyaWdnZXJlZF9jb2wgPSBORVcudHJpZ2dlcmVkX2NvbCArIDE7Cisg ICAgUkVUVVJOIE5FVzsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWw7CisKK0NSRUFURSBU UklHR0VSIGJlZm9yZV91cGRhdGVfYnVtcAorICAgIEJFRk9SRSBVUERBVEUgT04gaGlfdHJp Z2dlcgorICAgIEZPUiBFQUNIIFJPVworICAgIEVYRUNVVEUgRlVOQ1RJT04gaGlfdHJpZ2dl cl9idW1wKCk7CisKK0lOU0VSVCBJTlRPIGhpX3RyaWdnZXIgVkFMVUVTICgxLCAxMDAsICdp bml0aWFsJyk7CisKKy0tIFVQREFURSdzIFNFVCBjbGF1c2UgZG9lc24ndCB0b3VjaCB0aGUg aW5kZXhlZCBjb2x1bW4sIGJ1dCB0aGUKKy0tIHRyaWdnZXIgbW9kaWZpZXMgaXQgdmlhIGhl YXBfbW9kaWZ5X3R1cGxlLiAgaG90LWluZGV4ZWQgbXVzdCBkZXRlY3QgdGhpcworLS0gYW5k IGtlZXAgdGhlIHR1cGxlIG9uLXBhZ2UgKEhFQVBfSU5ERVhFRF9VUERBVEVEKSBwbHVzIGEg bmV3IGJ0cmVlIGVudHJ5LgorVVBEQVRFIGhpX3RyaWdnZXIgU0VUIGRhdGEgPSAndXBkYXRl ZCcgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwor U0VMRUNUICogRlJPTSBnZXRfaGlfY291bnQoJ2hpX3RyaWdnZXInKTsKK1NFTEVDVCB0cmln Z2VyZWRfY29sIEZST00gaGlfdHJpZ2dlciBXSEVSRSBpZCA9IDE7CisKKy0tIE5ldyB2YWx1 ZSByZWFjaGFibGUuCitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRUxFQ1QgaWQgRlJP TSBoaV90cmlnZ2VyIFdIRVJFIHRyaWdnZXJlZF9jb2wgPSAxMDE7CitTRUxFQ1QgaWQgRlJP TSBoaV90cmlnZ2VyIFdIRVJFIHRyaWdnZXJlZF9jb2wgPSAxMDA7CitSRVNFVCBlbmFibGVf c2Vxc2NhbjsKKworRFJPUCBUQUJMRSBoaV90cmlnZ2VyIENBU0NBREU7CitEUk9QIEZVTkNU SU9OIGhpX3RyaWdnZXJfYnVtcCgpOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0t IDguIEpTT05CIGV4cHJlc3Npb24gaW5kZXg6IEhPVC1pbmRleGVkIGlzIG5vdCB5ZXQgc3Vw cG9ydGVkIG9uIGV4cHJlc3Npb24KKy0tICAgIGluZGV4ZXMsIHNvIHRoZSB1cGRhdGUgZmFs bHMgYmFjayB0byBhIG5vbi1IT1QgdXBkYXRlIChob3RfaWR4ID0gMCkuCistLSAgICBSZWFk cyBzdGF5IGNvcnJlY3QuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJM RSBoaV9qc29uYiAoCisgICAgaWQgaW50IFBSSU1BUlkgS0VZLAorICAgIGRhdGEganNvbmIK KykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9qc29uYl9uYW1l X2lkeCBPTiBoaV9qc29uYiAoKGRhdGEtPj4nbmFtZScpKTsKKworSU5TRVJUIElOVE8gaGlf anNvbmIgVkFMVUVTICgxLCAneyJuYW1lIjoiQWxpY2UiLCJhZ2UiOjMwfScpOworCistLSBD aGFuZ2luZyB0aGUgaW5kZXhlZCBleHByZXNzaW9uJ3MgdmFsdWUgKG5hbWUpOiBleHByZXNz aW9uIGluZGV4ZXMgYXJlIG5vdAorLS0geWV0IHN1cHBvcnRlZCwgc28gdGhpcyBpcyBhIG5v bi1IT1QgdXBkYXRlLgorVVBEQVRFIGhpX2pzb25iIFNFVCBkYXRhID0ganNvbmJfc2V0KGRh dGEsICd7bmFtZX0nLCAnIkFsaWNlMiInKSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3Rh dF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitTRUxFQ1QgKiBGUk9NIGdldF9oaV9jb3VudCgnaGlf anNvbmInKTsKKworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNUIGlkIEZST00g aGlfanNvbmIgV0hFUkUgZGF0YS0+PiduYW1lJyA9ICdBbGljZTInOworU0VMRUNUIGlkIEZS T00gaGlfanNvbmIgV0hFUkUgZGF0YS0+PiduYW1lJyA9ICdBbGljZSc7CitSRVNFVCBlbmFi bGVfc2Vxc2NhbjsKKworRFJPUCBUQUJMRSBoaV9qc29uYjsKKworLS0gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCistLSA5LiBHSU4gaW5kZXggd2l0aCBjaGFuZ2VkIGV4dHJhY3RlZCBrZXlz OiBob3QtaW5kZXhlZAorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUg aGlfZ2luICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgdGFncyB0ZXh0W10KKykg V0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9naW5fdGFnc19pZHgg T04gaGlfZ2luIFVTSU5HIGdpbiAodGFncyk7CisKK0lOU0VSVCBJTlRPIGhpX2dpbiBWQUxV RVMgKDEsIEFSUkFZWyd0YWcxJywgJ3RhZzInXSk7CisKKy0tIEFkZGluZyBhIHRhZyB5aWVs ZHMgYSBkaWZmZXJlbnQgZXh0cmFjdGVkLWtleSBzZXQ6IGhvdC1pbmRleGVkLgorVVBEQVRF IGhpX2dpbiBTRVQgdGFncyA9IEFSUkFZWyd0YWcxJywgJ3RhZzInLCAndGFnNSddIFdIRVJF IGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCAq IEZST00gZ2V0X2hpX2NvdW50KCdoaV9naW4nKTsKKworU0VUIGVuYWJsZV9zZXFzY2FuID0g b2ZmOworU0VMRUNUIGlkIEZST00gaGlfZ2luIFdIRVJFIHRhZ3MgQD4gQVJSQVlbJ3RhZzUn XTsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworCitEUk9QIFRBQkxFIGhpX2dpbjsKKworLS0g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxMC4gUGVyLWluZGV4IEhPVC1pbmRleGVkIGNv dW50ZXJzOiBza2lwcGVkIHZzIG1hdGNoZWQKKy0tCistLSBBIHRhYmxlIHdpdGggdHdvIGlu ZGVwZW5kZW50IHNlY29uZGFyeSBpbmRleGVzLiAgQW4gVVBEQVRFIHRvdWNoZXMgYQorLS0g Y29sdW1uIGNvdmVyZWQgYnkgb25seSBvbmUgb2YgdGhlbTsgdGhlIEhPVC1pbmRleGVkIHBh dGggbXVzdCBpbnNlcnQKKy0tIGludG8gdGhhdCBvbmUgaW5kZXggYW5kIHNraXAgdGhlIG90 aGVyLiAgcGdfc3RhdF9hbGxfaW5kZXhlcyByZXBvcnRzCistLSBtYXRjaGVkPjAgb24gdGhl IHVwZGF0ZWQgaW5kZXggYW5kIHNraXBwZWQ+MCBvbiB0aGUgdW50b3VjaGVkIGluZGV4Lgor LS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaG90aWR4X3BlcmluZGV4 ICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisgICAgYSBpbnQsCisgICAgYiBpbnQKKykg V0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBob3RpZHhfcGVyaW5kZXhf YSBPTiBob3RpZHhfcGVyaW5kZXgoYSk7CitDUkVBVEUgSU5ERVggaG90aWR4X3BlcmluZGV4 X2IgT04gaG90aWR4X3BlcmluZGV4KGIpOworCitJTlNFUlQgSU5UTyBob3RpZHhfcGVyaW5k ZXggVkFMVUVTICgxLCAxMDAsIDIwMCk7CisKKy0tIE1vZGlmeSBvbmx5IGNvbHVtbiBhLiAg SE9ULWluZGV4ZWQgaW5zZXJ0cyBpbnRvIGhvdGlkeF9wZXJpbmRleF9hIGFuZAorLS0gc2tp cHMgaG90aWR4X3BlcmluZGV4X2IgKHByaW1hcnkga2V5IGluZHJlbGlkIGlzIHRoZSB0YWJs ZSBpdHNlbGYgYW5kCistLSBhbHNvIHVuY2hhbmdlZCwgc28gaXQgY291bnRzIGFzIHNraXBw ZWQgdG9vKS4KK1VQREFURSBob3RpZHhfcGVyaW5kZXggU0VUIGEgPSAxMDEgV0hFUkUgaWQg PSAxOworCistLSBGb3JjZSBmbHVzaCBvZiBwZW5kaW5nIHN0YXRzIHRvIHRoZSBzaGFyZWQg ZW50cnkuCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisKK1NFTEVDVCBp bmRleHJlbG5hbWUsCisgICAgICAgbl90dXBfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQgQVMg bWF0Y2hlZCwKKyAgICAgICBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCBBUyBza2lw cGVkCisgIEZST00gcGdfc3RhdF9hbGxfaW5kZXhlcworIFdIRVJFIHJlbG5hbWUgPSAnaG90 aWR4X3BlcmluZGV4JworIE9SREVSIEJZIGluZGV4cmVsbmFtZTsKKworLS0gQSBzZWNvbmQg VVBEQVRFIHRvdWNoaW5nIG9ubHkgYiBpbnZlcnRzIHRoZSBhc3NpZ25tZW50LgorVVBEQVRF IGhvdGlkeF9wZXJpbmRleCBTRVQgYiA9IDIwMSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdf c3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisKK1NFTEVDVCBpbmRleHJlbG5hbWUsCisgICAg ICAgbl90dXBfaG90X2luZGV4ZWRfdXBkX21hdGNoZWQgQVMgbWF0Y2hlZCwKKyAgICAgICBu X3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZCBBUyBza2lwcGVkCisgIEZST00gcGdfc3Rh dF9hbGxfaW5kZXhlcworIFdIRVJFIHJlbG5hbWUgPSAnaG90aWR4X3BlcmluZGV4JworIE9S REVSIEJZIGluZGV4cmVsbmFtZTsKKworLS0gSW52YXJpYW50OiBtYXRjaGVkICsgc2tpcHBl ZCA9PSBvd25pbmcgdGFibGUncyBuX3R1cF9ob3RfaW5kZXhlZF91cGQuCitTRUxFQ1QgaW5k ZXhyZWxuYW1lLAorICAgICAgIG5fdHVwX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkICsgbl90 dXBfaG90X2luZGV4ZWRfdXBkX3NraXBwZWQgQVMgdG90YWwsCisgICAgICAgKFNFTEVDVCBu X3R1cF9ob3RfaW5kZXhlZF91cGQgRlJPTSBwZ19zdGF0X2FsbF90YWJsZXMKKyAgICAgICAg IFdIRVJFIHJlbG5hbWUgPSAnaG90aWR4X3BlcmluZGV4JykgQVMgdGFibGVfaG90X2lkeF91 cGQKKyAgRlJPTSBwZ19zdGF0X2FsbF9pbmRleGVzCisgV0hFUkUgcmVsbmFtZSA9ICdob3Rp ZHhfcGVyaW5kZXgnCisgT1JERVIgQlkgaW5kZXhyZWxuYW1lOworCistLSBCb29sZWFuIGFz c2VydGlvbiBvZiB0aGUgc2FtZSBpbnZhcmlhbnQuICBUaGlzIGlzIHRoZSBjYW5vbmljYWwg Zm9ybQorLS0gcmV2aWV3ZXJzIGFza2VkIGZvcjogZXZlcnkgaW5kZXggZW50cnkgaXMgZWl0 aGVyIG1hdGNoZWQgKHRoZSBpbmRleAorLS0gZ290IGEgZnJlc2ggaW5zZXJ0IHRoaXMgVVBE QVRFKSBvciBza2lwcGVkIChIT1QtaW5kZXhlZCBjb3JyZWN0bHkKKy0tIGF2b2lkZWQgYW4g aW5zZXJ0IGJlY2F1c2UgdGhlIGluZGV4J3MgYXR0cnMgZGlkIG5vdCBjaGFuZ2UpLiAgSWYg dGhlCistLSB0d28gY291bnRlcnMgZHJpZnQgYXBhcnQgZnJvbSB0aGUgdGFibGUtbGV2ZWwg bl90dXBfaG90X2luZGV4ZWRfdXBkIHdlCistLSBoYXZlIGVpdGhlciBsb3N0IGEgcGVyLWlu ZGV4IGluY3JlbWVudCBvciBkb3VibGUtY291bnRlZCBvbmUuCitTRUxFQ1QgYm9vbF9hbmQo KG5fdHVwX2hvdF9pbmRleGVkX3VwZF9tYXRjaGVkICsgbl90dXBfaG90X2luZGV4ZWRfdXBk X3NraXBwZWQpID0KKyAgICAgICAgICAgICAgICAoU0VMRUNUIG5fdHVwX2hvdF9pbmRleGVk X3VwZCBGUk9NIHBnX3N0YXRfYWxsX3RhYmxlcworICAgICAgICAgICAgICAgICAgV0hFUkUg cmVsbmFtZSA9ICdob3RpZHhfcGVyaW5kZXgnKSkKKyAgICAgICAgIEFTIHBlcmluZGV4X2lu dmFyaWFudF9ob2xkcworICBGUk9NIHBnX3N0YXRfYWxsX2luZGV4ZXMKKyBXSEVSRSByZWxu YW1lID0gJ2hvdGlkeF9wZXJpbmRleCc7CisKK0RST1AgVEFCTEUgaG90aWR4X3BlcmluZGV4 OworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDExLiBMb25nIGhvdC1sb29wIFVQ REFURSBzdGF5cyBjb21wYWN0IGFuZCBIT1QtaW5kZXhlZAorLS0KKy0tIEEgbG9uZyBydW4g b2YgSE9ULWluZGV4ZWQgVVBEQVRFcyB0byBhIHNpbmdsZSByb3cgc3RheXMgY29tcGFjdDog cHJ1bmUKKy0tIGNvbGxhcHNlcyBlYWNoIGRlYWQgdmVyc2lvbiB0byBhIHJlZGlyZWN0IHRv IHRoZSBsaXZlIHR1cGxlIGFuZCByZXVzZXMgaXRzCistLSBzbG90LCBzbyB0aGUgcm93IG5l dmVyIGxlYXZlcyBpdHMgb3JpZ2luYWwgcGFnZSBhbmQgdGhlIGNoYWluIGRvZXMgbm90IGdy b3cKKy0tIHVuYm91bmRlZC4gIEV2ZXJ5IFVQREFURSB0aGF0IGNoYW5nZXMgdGhlIGluZGV4 ZWQgY29sdW1uIChhbmQgbGVhdmVzIGFub3RoZXIKKy0tIGluZGV4LCBoZXJlIHRoZSBQSywg dW5jaGFuZ2VkKSB0YWtlcyB0aGUgSE9ULWluZGV4ZWQgcGF0aC4KKy0tIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX2NoYWluY2FwICgKKyAgICBpZCBpbnQgUFJJ TUFSWSBLRVksCisgICAgYSBpbnQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDEwKTsKK0NSRUFU RSBJTkRFWCBoaV9jaGFpbmNhcF9hX2lkeCBPTiBoaV9jaGFpbmNhcChhKTsKKworSU5TRVJU IElOVE8gaGlfY2hhaW5jYXAgVkFMVUVTICgxLCAwKTsKKworRE8gJCQKK0RFQ0xBUkUKKyAg ICBpIGludDsKK0JFR0lOCisgICAgRk9SIGkgSU4gMSAuLiAyMDAgTE9PUAorICAgICAgICBV UERBVEUgaGlfY2hhaW5jYXAgU0VUIGEgPSBpIFdIRVJFIGlkID0gMTsKKyAgICBFTkQgTE9P UDsKK0VORCAkJDsKKworLS0gQWZ0ZXIgMjAwIFVQREFURXMgdGhlIHJvdydzIHZhbHVlIGlz IDIwMC4KK1NFTEVDVCBhIEZST00gaGlfY2hhaW5jYXAgV0hFUkUgaWQgPSAxOworCistLSBF dmVyeSBVUERBVEUgdG9vayB0aGUgSE9ULWluZGV4ZWQgcGF0aCAodGhlIFBLIGluZGV4IGlz IHVuY2hhbmdlZCwgc28gaXQgaXMKKy0tIHNraXBwZWQpLCBzbyBuX3R1cF9ob3RfaW5kZXhl ZF91cGQgYWR2YW5jZWQuCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitT RUxFQ1QgaG90X2lkeCA+IDAgQVMgaG90X2luZGV4ZWRfZmlyZWQKKyAgRlJPTSBnZXRfaGlf Y291bnQoJ2hpX2NoYWluY2FwJyk7CisKKy0tIFRoZSBoZWFwIHN0YXllZCBjb21wYWN0OiBw cnVuZStjb2xsYXBzZSByZWNsYWltZWQgdGhlIGRlYWQgdmVyc2lvbnMsIHNvIHRoZQorLS0g c2luZ2xlIGxpdmUgcm93IHN0aWxsIG9jY3VwaWVzIGp1c3Qgb25lIHBhZ2UuCitTRUxFQ1Qg cmVscGFnZXMgPD0gMSBBUyBoZWFwX3N0YXllZF9jb21wYWN0CisgIEZST00gcGdfY2xhc3Mg V0hFUkUgcmVsbmFtZSA9ICdoaV9jaGFpbmNhcCc7CisKK0RST1AgVEFCTEUgaGlfY2hhaW5j YXA7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMTIuIFJlY2xhbWF0aW9uIG9m IGEgY29sbGFwc2VkIEhPVC1pbmRleGVkIGNoYWluIGJ5IHBydW5lCistLQorLS0gQSBkZWFk IEhPVC1pbmRleGVkIGNoYWluIG1lbWJlciBpcyBwcmVzZXJ2ZWQgYXQgcHJ1bmUgdGltZSAo aXRzIHN0YWxlIGxlYWYKKy0tIG1heSBzdGlsbCBleGlzdCkgYW5kIHRoZSBjaGFpbiBjb2xs YXBzZXMgdG8gYW4gTFBfUkVESVJFQ1QgZm9yd2FyZGVyOyB0aGUKKy0tIGluZGV4IGNsZWFu dXAgcGFzcyB0aGVuIHN3ZWVwcyB0aGUgc3RhbGUgbGVhZiwgYW5kIGEgc2Vjb25kIFZBQ1VV TSByZWNsYWltcworLS0gdGhlIG5vdy11bnJlZmVyZW5jZWQgbWVtYmVyIGFuZCByZS1wb2lu dHMgdGhlIHJlZGlyZWN0LiAgU28gdGhlIGNoYWluIGlzCistLSBmdWxseSByZWNsYWltZWQg YWZ0ZXIgdGhlIHNlY29uZCBWQUNVVU0sIG5vdCB0aGUgZmlyc3QuCistLSAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9yZWNsYWltICgKKyAgICBpZCBpbnQgUFJJ TUFSWSBLRVksCisgICAgYSBpbnQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFU RSBJTkRFWCBoaV9yZWNsYWltX2FfaWR4IE9OIGhpX3JlY2xhaW0oYSk7CisKK0lOU0VSVCBJ TlRPIGhpX3JlY2xhaW0gVkFMVUVTICgxLCAxMDApOworLS0gR2VuZXJhdGUgYSBjb2xsYXBz ZWQgY2hhaW4gdmlhIGEgSE9ULWluZGV4ZWQgdXBkYXRlLgorVVBEQVRFIGhpX3JlY2xhaW0g U0VUIGEgPSAyMDAgV0hFUkUgaWQgPSAxOworU0VMRUNUIG5faG90X2luZGV4ZWQgPj0gMSBB UyBob3RfaW5kZXhlZF9wcmVzZW50X2JlZm9yZV9yZWNsYWltCisgIEZST00gcGdfcmVsYXRp b25faG90X2luZGV4ZWRfc3RhdHMoJ2hpX3JlY2xhaW0nKTsKKworLS0gRGVsZXRlIHRoZSBs aXZlIHR1cGxlLiAgVGhlIGZpcnN0IFZBQ1VVTSBjb2xsYXBzZXMgdGhlIGRlYWQgY2hhaW4g YW5kIHN3ZWVwcworLS0gdGhlIHN0YWxlIGxlYWY7IHRoZSBzZWNvbmQgcmVjbGFpbXMgdGhl IG5vdy11bnJlZmVyZW5jZWQgbWVtYmVycy4KK0RFTEVURSBGUk9NIGhpX3JlY2xhaW0gV0hF UkUgaWQgPSAxOworVkFDVVVNIGhpX3JlY2xhaW07CitWQUNVVU0gaGlfcmVjbGFpbTsKKwor U0VMRUNUIG5faG90X2luZGV4ZWQgQVMgaG90X2luZGV4ZWRfYWZ0ZXJfcmVjbGFpbSwKKyAg ICAgICBuX2NoYWlucyBBUyBjaGFpbnNfYWZ0ZXJfcmVjbGFpbQorICBGUk9NIHBnX3JlbGF0 aW9uX2hvdF9pbmRleGVkX3N0YXRzKCdoaV9yZWNsYWltJyk7CisKK0RST1AgVEFCTEUgaGlf cmVjbGFpbTsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxMy4gUGFnZSB3aXRo IGEgcHJlc2VydmVkIEhPVC1pbmRleGVkIG1lbWJlciBpcyBuZXZlciBtYXJrZWQgYWxsLXZp c2libGUKKy0tCistLSBwcnVuZWhlYXAgZGVsaWJlcmF0ZWx5IGxlYXZlcyBQRF9BTExfVklT SUJMRSBjbGVhciBvbiBhbnkgcGFnZSB0aGF0IHN0aWxsCistLSBjYXJyaWVzIGEgcHJlc2Vy dmVkIEhPVC1pbmRleGVkIG1lbWJlcjogYW4gaW5kZXgtb25seSBzY2FuIG11c3QgaGVhcC1m ZXRjaAorLS0gdGhyb3VnaCB0aGUgY2hhaW4gc28gdGhlIHJlYWQtc2lkZSBjcm9zc2VkLWF0 dHJpYnV0ZSBiaXRtYXAgY2FuIGZpbHRlciBzdGFsZSBidHJlZQorLS0gZW50cmllcy4KKy0t CistLSBXZSBmb3JjZSB0aGUgZnJlZXplIHBhdGggd2l0aCBWQUNVVU0gKEZSRUVaRSwgRElT QUJMRV9QQUdFX1NLSVBQSU5HKSBhbmQKKy0tIHRoZW4gcmVhZCBwZF9mbGFncyB2aWEgcGFn ZWluc3BlY3QucGFnZV9oZWFkZXIuICBUaGUgcGFnZSBtdXN0IHN0aWxsIGNhcnJ5CistLSBh IEhPVC1pbmRleGVkIG1lbWJlciAobl9ob3RfaW5kZXhlZCA+IDApIEFORCBtdXN0IG5vdCBo YXZlIFBEX0FMTF9WSVNJQkxFCistLSAoMHgwMDA0KS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorQ1JFQVRFIFRBQkxFIGhpX3ZtICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisg ICAgYSBpbnQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV92 bV9hX2lkeCBPTiBoaV92bShhKTsKKworSU5TRVJUIElOVE8gaGlfdm0gVkFMVUVTICgxLCAx KTsKKy0tIFR3byBIT1QtaW5kZXhlZCB1cGRhdGVzIGxlYXZlIGEgbXVsdGktaG9wIGNoYWlu LCBzbyBhIHByZXNlcnZlZCBIT1QtaW5kZXhlZAorLS0gbWVtYmVyIHJlbWFpbnMgb24gdGhl IHBhZ2UgYWZ0ZXIgcHJ1bmUsIHdoaWNoIGlzIHdoYXQgdGhpcyB0ZXN0IG5lZWRzLgorVVBE QVRFIGhpX3ZtIFNFVCBhID0gMiBXSEVSRSBpZCA9IDE7CitVUERBVEUgaGlfdm0gU0VUIGEg PSAzIFdIRVJFIGlkID0gMTsKKworLS0gRm9yY2UgdGhlIGFsbC12aXNpYmxlIGJpdCBkZWNp c2lvbjogVkFDVVVNIHdpdGggRElTQUJMRV9QQUdFX1NLSVBQSU5HCistLSBjb25zaWRlcnMg ZXZlcnkgcGFnZTsgRlJFRVpFIHB1c2hlcyBoaW50IGJpdHMgaGFyZC4gIEFmdGVyIHRoaXMs IGFueQorLS0gcGFnZSBiZWFyaW5nIGEgcHJlc2VydmVkIEhPVC1pbmRleGVkIG1lbWJlciBt dXN0IHN0aWxsIHJlcG9ydCBhbGxfdmlzaWJsZSA9IDAuCitWQUNVVU0gKEZSRUVaRSwgRElT QUJMRV9QQUdFX1NLSVBQSU5HKSBoaV92bTsKKworU0VMRUNUIG5faG90X2luZGV4ZWQgPj0g MSBBUyBob3RfaW5kZXhlZF9wcmVzZW50CisgIEZST00gcGdfcmVsYXRpb25faG90X2luZGV4 ZWRfc3RhdHMoJ2hpX3ZtJyk7CisKKy0tIFBEX0FMTF9WSVNJQkxFID0gMHgwMDA0LiAgTXVz dCBiZSAwIG9uIGEgcGFnZSB3aXRoIGEgcHJlc2VydmVkIG1lbWJlci4KK1NFTEVDVCAoZmxh Z3MgJiA0KSA9IDAgQVMgbm90X21hcmtlZF9hbGxfdmlzaWJsZQorICBGUk9NIHBhZ2VfaGVh ZGVyKGdldF9yYXdfcGFnZSgnaGlfdm0nLCAwKSk7CisKK0RST1AgVEFCTEUgaGlfdm07CisK Ky0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gMTQuIEN5Y2xlLWtleSBkZWR1cDogY29s dW1uIHJlbmFtZSBhIC0+IGIgLT4gYSBzdGF5cyBjb3JyZWN0CistLQorLS0gQSByZW5hbWUg ZG9lcyBub3QgcmV3cml0ZSBoZWFwIG9yIGluZGV4IGVudHJpZXM7IGl0IG9ubHkgdXBkYXRl cyB0aGUKKy0tIGNhdGFsb2cuICBUaGUgcmVsY2FjaGUgaW52YWxpZGF0aW9uIG11c3QgdHJp Z2dlciBhIGZyZXNoIGF0dHJpYnV0ZQorLS0gYml0bWFwIGFuZCB0aGUgSE9ULWluZGV4ZWQg cHJlZGljYXRlIG11c3QgY29tcGFyZSBhdHRyaWJ1dGUgKm51bWJlcnMqLAorLS0gbm90IGF0 dHJpYnV0ZSAqbmFtZXMqLiAgQWZ0ZXIgdHdvIHJlbmFtZXMgdGhhdCBuZXQgdG8gaWRlbnRp dHksIGV2ZXJ5CistLSBzdWJzZXF1ZW50IFVQREFURSBtdXN0IGNvbnRpbnVlIHRvIGRyaXZl IHRoZSBIT1QtaW5kZXhlZCBwYXRoLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVB VEUgVEFCTEUgaGlfY3ljbGUgKAorICAgIGlkIGludCBQUklNQVJZIEtFWSwKKyAgICBhIGlu dAorKSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2N5Y2xlX2Ff aWR4IE9OIGhpX2N5Y2xlKGEpOworCitJTlNFUlQgSU5UTyBoaV9jeWNsZSBWQUxVRVMgKDEs IDEwMCk7CisKKy0tIEN5Y2xlIHRoZSBjb2x1bW4gbmFtZSBhbmQgY29uZmlybSBib3RoIGlu dGVybWVkaWF0ZSBmb3JtcyBkcml2ZSBIT1QtaW5kZXhlZC4KK0FMVEVSIFRBQkxFIGhpX2N5 Y2xlIFJFTkFNRSBDT0xVTU4gYSBUTyBiOworVVBEQVRFIGhpX2N5Y2xlIFNFVCBiID0gMjAw IFdIRVJFIGlkID0gMTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NF TEVDVCBob3RfaWR4ID4gMCBBUyBob3RfaW5kZXhlZF9hZnRlcl9maXJzdF9yZW5hbWUKKyAg RlJPTSBnZXRfaGlfY291bnQoJ2hpX2N5Y2xlJyk7CisKK0FMVEVSIFRBQkxFIGhpX2N5Y2xl IFJFTkFNRSBDT0xVTU4gYiBUTyBhOworVVBEQVRFIGhpX2N5Y2xlIFNFVCBhID0gMzAwIFdI RVJFIGlkID0gMTsKKy0tIExvb2t1cCB2aWEgdGhlIGluZGV4IHJldHVybnMgdGhlIGN1cnJl bnQgdmFsdWUsIG5vdCBhbnkgb2YgdGhlCistLSBwcmUtcmVuYW1lIHZhbHVlcy4KK1NFVCBl bmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFTEVDVCBpZCwgYSBGUk9NIGhpX2N5Y2xlIFdIRVJF IGEgPSAzMDA7CitTRUxFQ1QgaWQgRlJPTSBoaV9jeWNsZSBXSEVSRSBhID0gMTAwOworU0VM RUNUIGlkIEZST00gaGlfY3ljbGUgV0hFUkUgYSA9IDIwMDsKK1JFU0VUIGVuYWJsZV9zZXFz Y2FuOworCitEUk9QIFRBQkxFIGhpX2N5Y2xlOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKy0tIDE1LiBTdW1tYXJpemluZy1vbmx5IGNvbHVtbiBVUERBVEUgcHJvZHVjZXMgQ0xB U1NJQywgbm90IElOREVYRUQKKy0tCistLSBIZWFwVXBkYXRlSG90QWxsb3dhYmxlIHJldHVy bnMgSEVBUF9VUERBVEVfSE9UIHdoZW4gZXZlcnkKKy0tIG1vZGlmaWVkIGluZGV4ZWQgYXR0 cmlidXRlIGlzIGNvdmVyZWQgb25seSBieSBzdW1tYXJpemluZyBpbmRleGVzLgorLS0gQSBC UklOLW9ubHkgY29sdW1uIGlzIHRoZSBjYW5vbmljYWwgY2FzZTogdGhlIEJSSU4gaW5kZXgg Z2V0cyBhCistLSBuZXcgc3VtbWFyeSBlbnRyeSB2aWEgYW1pbnNlcnQsIGJ1dCBubyBwZXIt dXBkYXRlIGJ0cmVlIGVudHJ5IGlzCistLSBuZWVkZWQgYW5kIEhPVC1pbmRleGVkIGRvZXMg bm90IGZpcmUuICBUaGUgc2lnbmFsIGlzCistLSBuX3R1cF9ob3RfdXBkID4gMCB3aXRoIG5f dHVwX2hvdF9pbmRleGVkX3VwZCB1bmNoYW5nZWQuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KK0NSRUFURSBUQUJMRSBoaV9icmluICgKKyAgICBpZCBpbnQgUFJJTUFSWSBLRVksCisg ICAgYmNvbCBpbnQKKykgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBo aV9icmluX2lkeCBPTiBoaV9icmluIFVTSU5HIGJyaW4oYmNvbCk7CisKK0lOU0VSVCBJTlRP IGhpX2JyaW4gVkFMVUVTICgxLCAxMDApOworCistLSBDYXB0dXJlIHRoZSBIT1QtaW5kZXhl ZCBjb3VudGVyIGJlZm9yZSwgZHJpdmUgYSBCUklOLW9ubHkgdXBkYXRlLAorLS0gYW5kIGFz c2VydCB0aGF0IGNsYXNzaWMgSE9UIGFkdmFuY2VkIHdoaWxlIEhPVC1pbmRleGVkIGRpZCBu b3QuCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitTRUxFQ1QgaG90X2lk eCBBUyBob3RfaWR4X2JlZm9yZSBGUk9NIGdldF9oaV9jb3VudCgnaGlfYnJpbicpIFxnc2V0 CitVUERBVEUgaGlfYnJpbiBTRVQgYmNvbCA9IDIwMCBXSEVSRSBpZCA9IDE7CitTRUxFQ1Qg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitTRUxFQ1QgKGhvdCAtIDApID4gMCBBUyBj bGFzc2ljX2hvdF9maXJlZCwKKyAgICAgICBob3RfaWR4ID0gOmhvdF9pZHhfYmVmb3JlIEFT IGhvdF9pbmRleGVkX2RpZF9ub3RfZmlyZQorICBGUk9NIGdldF9oaV9jb3VudCgnaGlfYnJp bicpOworCistLSBUaGUgQlJJTiBpbmRleCBzZWVzIHRoZSBuZXcgdmFsdWUgdmlhIGFtaW5z ZXJ0LgorU0VMRUNUIGJjb2wgRlJPTSBoaV9icmluIFdIRVJFIGlkID0gMTsKKworRFJPUCBU QUJMRSBoaV9icmluOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDE2LiBVTklR VUUgaW5kZXggb24gYSB0eXBlIHdoZXJlIGltYWdlIGVxdWFsaXR5ICE9IG9wZXJhdG9yIGVx dWFsaXR5CistLQorLS0gbnVtZXJpYyAxLjAgYW5kIDEuMDAgYXJlIGVxdWFsIHVuZGVyIHRo ZSBidHJlZSBvcGNsYXNzIGJ1dCBoYXZlCistLSBkaWZmZXJlbnQgb24tZGlzayBpbWFnZXMu ICBBIEhPVC1pbmRleGVkIHVwZGF0ZSAxLjAgLT4gMS4wMCBpbnNlcnRzIGEKKy0tIGZyZXNo IGxlYWYgY2FycnlpbmcgdGhlIGxpdmUgaW1hZ2UgYW5kIGxlYXZlcyBhIHN0YWxlIGxlYWYg Zm9yIDEuMAorLS0gKHRoZSBob3AncyBtb2RpZmllZC1hdHRycyBiaXRtYXAgbWFya3MgayBj aGFuZ2VkLCBzaW5jZSBtb2RpZmllZC1jb2x1bW4KKy0tIGRldGVjdGlvbiBpcyBpbWFnZS1i YXNlZCkuICBBIGxhdGVyIElOU0VSVCBvZiBhIHZhbHVlIGVxdWFsIHVuZGVyIHRoZQorLS0g b3BjbGFzcyBtdXN0IHN0aWxsIGJlIGRldGVjdGVkIGFzIGEgZHVwbGljYXRlOiB0aGUgdW5p cXVlIGNoZWNrIHJlYWNoZXMKKy0tIHRoZSBsaXZlIHR1cGxlIHRocm91Z2ggdGhlIGZyZXNo IGxlYWYsIHdoaWNoIHBvaW50cyBkaXJlY3RseSBhdCBpdCAobm8gaG9wCistLSBhZnRlciBp dCwgc28gdGhlIG92ZXJsYXAgaXMgZW1wdHkgYW5kIHRoZSBsZWFmIGlzIGEgZ2VudWluZSBj b25mbGljdCk7IHRoZQorLS0gc3RhbGUgMS4wIGxlYWYgaXMgc2tpcHBlZCBiZWNhdXNlIHRo ZSBrLWNoYW5naW5nIGhvcCBvdmVybGFwcyB0aGUgdW5pcXVlCistLSBpbmRleCdzIGF0dHJp YnV0ZS4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3VudW0g KGsgbnVtZXJpYyBVTklRVUUsIGogaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JF QVRFIElOREVYIGhpX3VudW1faiBPTiBoaV91bnVtKGopOyAgICAgICAgICAgICAtLSAybmQg aW5kZXhlZCBhdHRyLCBrZXB0IGZpeGVkCitJTlNFUlQgSU5UTyBoaV91bnVtIFZBTFVFUyAo MS4wLCAxMDApOworVVBEQVRFIGhpX3VudW0gU0VUIGsgPSAxLjAwIFdIRVJFIGogPSAxMDA7 ICAgICAgICAtLSBIT1QtaW5kZXhlZDogMS4wIC0+IDEuMDAKK1NFTEVDVCBuX2hvdF9pbmRl eGVkID4gMCBBUyBtYWRlX2hvdF9pbmRleGVkCisgIEZST00gcGdfcmVsYXRpb25faG90X2lu ZGV4ZWRfc3RhdHMoJ2hpX3VudW0nKTsKKy0tIEEgbnVtZXJpY2FsbHktZXF1YWwgaW5zZXJ0 IG11c3QgY29uZmxpY3QgKHRoZSBmcmVzaCBsZWFmIGNhdGNoZXMgaXQpOgorSU5TRVJUIElO VE8gaGlfdW51bSBWQUxVRVMgKDEuMCwgMSk7ICAgICAgICAgICAgICAtLSBleHBlY3QgZHVw bGljYXRlIGtleSBlcnJvcgorLS0gQSBnZW51aW5lbHkgZGlmZmVyZW50IHZhbHVlIGlzIGFj Y2VwdGVkOgorSU5TRVJUIElOVE8gaGlfdW51bSBWQUxVRVMgKDIuMCwgMik7CitTRUxFQ1Qg aywgaiBGUk9NIGhpX3VudW0gT1JERVIgQlkgajsKK0RST1AgVEFCTEUgaGlfdW51bTsKKwor LS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxNy4gQ1JFQVRFIElOREVYIGFuZCBSRUlO REVYIG92ZXIgbGl2ZSBIT1QtaW5kZXhlZCBjaGFpbnMKKy0tCistLSBBIGZyZXNobHkgYnVp bHQgb3IgcmVidWlsdCBpbmRleCBtdXN0IHJlZmxlY3QgY3VycmVudCB2YWx1ZXMsIG5ldmVy IGEKKy0tIHN0YWxlIGNoYWluIG1lbWJlcjogdGhlIGJ1aWxkIHNjYW5zIGxpdmUgdHVwbGVz IG9ubHkgYW5kIHBvaW50cyBlYWNoCistLSBIT1QtaW5kZXhlZCBsaXZlIHR1cGxlJ3MgZW50 cnkgYXQgaXRzIG93biBUSUQsIHNvIHRoZSBuZXcgZW50cmllcyBoYXZlIG5vCistLSBob3Ag YWZ0ZXIgdGhlbSBhbmQgdGhlIGNyb3NzZWQtYXR0cmlidXRlIGJpdG1hcCBrZWVwcyB0aGVt LgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfcmVpbmRleCAo aWQgaW50IFBSSU1BUlkgS0VZLCBhIGludCwgYiBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1 MCk7CitDUkVBVEUgSU5ERVggaGlfcmVpbmRleF9hIE9OIGhpX3JlaW5kZXgoYSk7CitJTlNF UlQgSU5UTyBoaV9yZWluZGV4IFNFTEVDVCBnLCBnLCBnIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDYpIGc7CitVUERBVEUgaGlfcmVpbmRleCBTRVQgYSA9IGEgKyAxMDA7ICAgICAgICAg ICAgICAgIC0tIEhPVC1pbmRleGVkIG9uIGEKK1VQREFURSBoaV9yZWluZGV4IFNFVCBhID0g YSArIDEwMDsgICAgICAgICAgICAgICAgLS0gYWdhaW4gLT4gbG9uZ2VyIGNoYWlucworU0VM RUNUIG5faG90X2luZGV4ZWQgPiAwIEFTIG1hZGVfaG90X2luZGV4ZWQKKyAgRlJPTSBwZ19y ZWxhdGlvbl9ob3RfaW5kZXhlZF9zdGF0cygnaGlfcmVpbmRleCcpOworLS0gQnVpbGQgYSBO RVcgaW5kZXggYW5kIFJFSU5ERVggdGhlIGV4aXN0aW5nIG9uZSBvdmVyIHRoZSBsaXZlIGNo YWlucy4KK0NSRUFURSBJTkRFWCBoaV9yZWluZGV4X2IgT04gaGlfcmVpbmRleChiKTsKK1JF SU5ERVggSU5ERVggaGlfcmVpbmRleF9hOworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOwor U0VMRUNUIGlkLCBhIEZST00gaGlfcmVpbmRleCBXSEVSRSBhID0gMjA0OyAgICAgICAtLSBj dXJyZW50IHZhbHVlIC0+IGlkIDQKK1NFTEVDVCBjb3VudCgqKSBGUk9NIGhpX3JlaW5kZXgg V0hFUkUgYSA9IDQ7ICAgICAgLS0gb2Jzb2xldGUgdmFsdWUgLT4gMAorU0VMRUNUIGlkIEZS T00gaGlfcmVpbmRleCBXSEVSRSBiID0gMjsgICAgICAgICAgICAtLSB2aWEgZnJlc2hseSBi dWlsdCBpbmRleCAtPiAyCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUgaGlf cmVpbmRleDsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxOC4gRFJPUCBldmVy eSBpbmRleCBvdmVyIGxpdmUgSE9ULWluZGV4ZWQgY2hhaW5zLCB0aGVuIFZBQ1VVTQorLS0K Ky0tIEFmdGVyIGFsbCBpbmRleGVzIGFyZSBkcm9wcGVkLCBoZWFwIHBhZ2VzIG1heSBzdGls bCBjYXJyeSBwcmVzZXJ2ZWQKKy0tIEhPVC1pbmRleGVkIG1lbWJlcnMgbGVmdCBieSBlYXJs aWVyIHVwZGF0ZXMuICBWQUNVVU0gb2Ygc3VjaCBhIG5vLWluZGV4CistLSByZWxhdGlvbiBt dXN0IGNvbXBsZXRlIHdpdGhvdXQgZXJyb3IsIGFuZCByZWFkcyBtdXN0IHN0YXkgY29ycmVj dCB2aWEgdGhlCistLSByZWRpcmVjdCBmb3J3YXJkZXJzLgorLS0gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfZHJvcGlkeCAoaWQgaW50IFBSSU1BUlkgS0VZLCBh IGludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9kcm9waWR4 X2EgT04gaGlfZHJvcGlkeChhKTsKK0lOU0VSVCBJTlRPIGhpX2Ryb3BpZHggU0VMRUNUIGcs IGcgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNikgZzsKK1VQREFURSBoaV9kcm9waWR4IFNF VCBhID0gYSArIDEwMDsgICAgICAgICAgICAgICAgLS0gSE9ULWluZGV4ZWQgb24gYQorVVBE QVRFIGhpX2Ryb3BpZHggU0VUIGEgPSBhICsgMTAwOyAgICAgICAgICAgICAgICAtLSBhZ2Fp biAtPiBsb25nZXIgY2hhaW5zCitTRUxFQ1Qgbl9ob3RfaW5kZXhlZCA+IDAgQVMgbWFkZV9o b3RfaW5kZXhlZAorICBGUk9NIHBnX3JlbGF0aW9uX2hvdF9pbmRleGVkX3N0YXRzKCdoaV9k cm9waWR4Jyk7CistLSBEcm9wIGV2ZXJ5IGluZGV4LCBsZWF2aW5nIHByZXNlcnZlZCBIT1Qt aW5kZXhlZCBtZW1iZXJzIHdpdGggbm8gaW5kZXggdG8gc3dlZXAuCitEUk9QIElOREVYIGhp X2Ryb3BpZHhfYTsKK0FMVEVSIFRBQkxFIGhpX2Ryb3BpZHggRFJPUCBDT05TVFJBSU5UIGhp X2Ryb3BpZHhfcGtleTsKKy0tIE11c3Qgbm90IGNyYXNoIG9uIHRoZSBuby1pbmRleCBwYXRo OyB0d28gcGFzc2VzIGV4ZXJjaXNlIHRoZSBzZWNvbmQtcGFzcworLS0gcmVjbGFpbSBndWFy ZCBhcyB3ZWxsLgorVkFDVVVNIGhpX2Ryb3BpZHg7CitWQUNVVU0gaGlfZHJvcGlkeDsKKy0t IFJlYWRzIHJlbWFpbiBjb3JyZWN0IGFmdGVyIHRoZSBpbmRleGVzIGFyZSBnb25lLgorU0VM RUNUIGlkLCBhIEZST00gaGlfZHJvcGlkeCBPUkRFUiBCWSBpZDsKK0RST1AgVEFCTEUgaGlf ZHJvcGlkeDsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAxOS4gUmUtY29sbGFw c2Ugb2YgYSBkYXRhLXJlZGlyZWN0IGNoYWluIGFjcm9zcyBwYXJ0aWFsIFZBQ1VVTXMKKy0t CistLSBBIGNoYWluIHRoYXQgY29sbGFwc2VzIHRvIGEgSE9ULWluZGV4ZWQgZGF0YSByZWRp cmVjdCwgaXMgdmFjdXVtZWQgd2l0aAorLS0gSU5ERVhfQ0xFQU5VUCBvZmYgKHNvIHRoZSBz dGFsZSBsZWF2ZXMgYW5kIHRoZSByZWRpcmVjdCBzdXJ2aXZlKSwgdGhlbgorLS0gcmVjZWl2 ZXMgZnVydGhlciBIT1QtaW5kZXhlZCB1cGRhdGVzIHRoYXQgcmUtY29sbGFwc2UgdGhlIGNo YWluIGFuZAorLS0gcmUtcG9pbnQgdGhlIHJlZGlyZWN0IGF0IGEgbmV3IGxpdmUgdHVwbGUs IG11c3Qgbm90IGxlYXZlIHRoZSByZWRpcmVjdAorLS0gZGFuZ2xpbmcuICBBIHN1YnNlcXVl bnQgZnVsbCBWQUNVVU0gbXVzdCBjb21wbGV0ZSB3aXRob3V0IGVycm9yLCBsZWF2ZSB0aGUK Ky0tIGhlYXAgY29uc2lzdGVudCAodmVyaWZ5X2hlYXBhbSByZXBvcnRzIG5vdGhpbmcpLCBh bmQgcmVhZHMgbXVzdCBzdGF5CistLSBjb3JyZWN0LiAgKFJlZ3Jlc3Npb246IGFuIGVhcmxp ZXIgcmV2aXNpb24gY3Jhc2hlZCByZWNsYWltaW5nIGEgbWlkLWNoYWluCistLSBtZW1iZXIg d2hpbGUgYSBkYXRhIHJlZGlyZWN0IHN0aWxsIHBvaW50ZWQgcGFzdCBpdC4pCistLSAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBFWFRFTlNJT04gSUYgTk9UIEVYSVNUUyBhbWNo ZWNrOworQ1JFQVRFIFRBQkxFIGhpX3JlY29sbGFwc2UgKGlkIGludCBQUklNQVJZIEtFWSwg YSBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfcmVjb2xs YXBzZV9hIE9OIGhpX3JlY29sbGFwc2UoYSk7CitJTlNFUlQgSU5UTyBoaV9yZWNvbGxhcHNl IFZBTFVFUyAoMSwgMSk7CistLSBGaXJzdCBjaGFpbjogdHdvIEhPVC1pbmRleGVkIHVwZGF0 ZXMsIHRoZW4gcHJ1bmUgdG8gYSBkYXRhIHJlZGlyZWN0IHdoaWxlCistLSBsZWF2aW5nIHRo ZSBzdGFsZSBidHJlZSBsZWF2ZXMgaW4gcGxhY2UgKElOREVYX0NMRUFOVVAgb2ZmKS4KK1VQ REFURSBoaV9yZWNvbGxhcHNlIFNFVCBhID0gMiBXSEVSRSBpZCA9IDE7CitVUERBVEUgaGlf cmVjb2xsYXBzZSBTRVQgYSA9IDMgV0hFUkUgaWQgPSAxOworVkFDVVVNIChJTkRFWF9DTEVB TlVQIG9mZikgaGlfcmVjb2xsYXBzZTsKKy0tIFJlLWNvbGxhcHNlOiBtb3JlIEhPVC1pbmRl eGVkIHVwZGF0ZXMgZXh0ZW5kIHRoZSBjaGFpbiBwYXN0IHRoZSByZWRpcmVjdAorLS0gdGFy Z2V0OyB0aGUgbmV4dCBwcnVuZSByZS1wb2ludHMgdGhlIGRhdGEgcmVkaXJlY3QgYXQgdGhl IG5ldyBmaXJzdCBsaXZlCistLSB0dXBsZSBhbmQgZXh0ZW5kcyBpdHMgdW5pb24uCitVUERB VEUgaGlfcmVjb2xsYXBzZSBTRVQgYSA9IDQgV0hFUkUgaWQgPSAxOworVVBEQVRFIGhpX3Jl Y29sbGFwc2UgU0VUIGEgPSA1IFdIRVJFIGlkID0gMTsKK1ZBQ1VVTSAoSU5ERVhfQ0xFQU5V UCBvZmYpIGhpX3JlY29sbGFwc2U7CistLSBGdWxsIHZhY3V1bSBub3cgcmVjbGFpbXMgdGhl IGRlYWQgY2hhaW47IHRoZSByZS1wb2ludGVkIHJlZGlyZWN0IG11c3Qgbm90CistLSBkYW5n bGUuICBUd28gcGFzc2VzIGFsc28gZXhlcmNpc2UgdGhlIHJlZGlyZWN0IHJlLXBvaW50IHNl Y29uZCBwYXNzLgorVkFDVVVNIGhpX3JlY29sbGFwc2U7CitWQUNVVU0gaGlfcmVjb2xsYXBz ZTsKKy0tIEhlYXAgbXVzdCBiZSBzdHJ1Y3R1cmFsbHkgY29uc2lzdGVudCAobm8gcm93cyA9 PSBubyBjb3JydXB0aW9uKS4KK1NFTEVDVCAqIEZST00gdmVyaWZ5X2hlYXBhbSgnaGlfcmVj b2xsYXBzZScpOworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VMRUNUIGlkLCBhIEZS T00gaGlfcmVjb2xsYXBzZSBXSEVSRSBhID0gNTsgICAgIC0tIGN1cnJlbnQgdmFsdWUgLT4g aWQgMQorU0VMRUNUIGNvdW50KCopIEZST00gaGlfcmVjb2xsYXBzZSBXSEVSRSBhID0gMzsg IC0tIG9ic29sZXRlIHZhbHVlIC0+IDAKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNU IGlkLCBhIEZST00gaGlfcmVjb2xsYXBzZSBPUkRFUiBCWSBpZDsKK0RST1AgVEFCTEUgaGlf cmVjb2xsYXBzZTsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAyMC4gSW5kZXgg ZGVsZXRpb24gb3ZlciBhbiBlbnRyeSB0aGF0IHBvaW50cyBhdCBhIGRhdGEtcmVkaXJlY3Qg cm9vdAorLS0KKy0tIEEgZGF0YSByZWRpcmVjdCBpcyBhbiBMUF9SRURJUkVDVCB0aGF0IGNh cnJpZXMgYSBiaXRtYXAsIHNvIGl0IHJlcG9ydHMKKy0tIGxwX2xlbiA+IDAgKEl0ZW1JZEhh c1N0b3JhZ2UgdHJ1ZSkgZXZlbiB0aG91Z2ggaXQgaXMgbm90IGEgbm9ybWFsIHR1cGxlLgor LS0gaW5kZXhfZGVsZXRlX2NoZWNrX2h0aWQgbXVzdCB0cmVhdCBpdCBhcyBhIHJlZGlyZWN0 LCBub3QgcmVhZCBpdHMgYmxvYiBhcyBhCistLSBIZWFwVHVwbGVIZWFkZXIuICBSZXByb2R1 Y2U6IGNvbGxhcHNlIGEgY2hhaW4gcm9vdCB0byBhIGRhdGEgcmVkaXJlY3Qgd2hpbGUKKy0t IGtlZXBpbmcgdGhlIHN0YWxlIGxlYWYgdGhhdCBwb2ludHMgYXQgaXQgKElOREVYX0NMRUFO VVAgb2ZmKSwgdGhlbiBpbnNlcnQKKy0tIG1hbnkgZHVwbGljYXRlcyBvZiB0aGUgc3RhbGUg a2V5IHNvIGJ0cmVlIGJvdHRvbS11cCBkZWxldGlvbiBydW5zCistLSBoZWFwX2luZGV4X2Rl bGV0ZV90dXBsZXMgb3ZlciB0aGF0IHN0YWxlIGVudHJ5LgorLS0gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfaWRkZWwgKGlkIGludCwgYSBpbnQpIFdJVEggKGZp bGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfaWRkZWxfYSBPTiBoaV9pZGRlbChh KTsKK0lOU0VSVCBJTlRPIGhpX2lkZGVsIFZBTFVFUyAoMSwgMSk7CitVUERBVEUgaGlfaWRk ZWwgU0VUIGEgPSBhICsgMSBXSEVSRSBpZCA9IDE7ICAgICAgICAgIC0tIEhPVC1pbmRleGVk CitVUERBVEUgaGlfaWRkZWwgU0VUIGEgPSBhICsgMSBXSEVSRSBpZCA9IDE7ICAgICAgICAg IC0tIG11bHRpLWhvcCBjaGFpbgorVkFDVVVNIChJTkRFWF9DTEVBTlVQIG9mZikgaGlfaWRk ZWw7ICAgICAgICAgICAgICAgICAtLSByb290IC0+IGRhdGEgcmVkaXJlY3QsIGtlZXAgc3Rh bGUgYT0xIGxlYWYKKy0tIE1hbnkgZHVwbGljYXRlcyBvZiB0aGUgc3RhbGUga2V5IGZpbGwg dGhlIGxlYWYgYW5kIHRyaWdnZXIgYm90dG9tLXVwCistLSBkZWxldGlvbiwgd2hpY2ggZmVl ZHMgdGhlIHN0YWxlIGE9MSBlbnRyeSAoaHRpZCAtPiB0aGUgZGF0YS1yZWRpcmVjdCByb290 KQorLS0gdG8gaGVhcF9pbmRleF9kZWxldGVfdHVwbGVzLiAgTXVzdCBub3QgY3Jhc2ggb3Ig bWlzcmVhZCB0aGUgYmxvYi4KK0lOU0VSVCBJTlRPIGhpX2lkZGVsIFNFTEVDVCBnLCAxIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDIsIDMwMDApIGc7CitWQUNVVU0gaGlfaWRkZWw7CitTRUxF Q1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX2lkZGVsJyk7CitTRVQgZW5hYmxlX3NlcXNj YW4gPSBvZmY7CitTRUxFQ1QgaWQsIGEgRlJPTSBoaV9pZGRlbCBXSEVSRSBpZCA9IDE7ICAg ICAgICAgICAgIC0tIGN1cnJlbnQgdmFsdWUgLT4gYSA9IDMKK1JFU0VUIGVuYWJsZV9zZXFz Y2FuOworRFJPUCBUQUJMRSBoaV9pZGRlbDsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CistLSAyMS4gQSBjaGFuZ2UgdG8gYSBjb2x1bW4gY292ZXJlZCBieSBhIG5vbi1idHJlZSBp bmRleCBBTSBpcyBIT1QtaW5kZXhlZAorLS0KKy0tIEEgSE9ULWluZGV4ZWQgdXBkYXRlIGxl YXZlcyBhIHN0YWxlIHByZS11cGRhdGUgbGVhZiB0aGF0IHRoZSByZWFkIHNpZGUKKy0tIGZp bHRlcnMgdmlhIHRoZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAsIHdoaWNoIGlzIGFjY2Vz cy1tZXRob2QgYWdub3N0aWMuCistLSBBIGNvbHVtbiBjb3ZlcmVkIGJ5IGEgbm9uLWJ0cmVl IGluZGV4IChoZXJlIGEgR2lTVCBpbmRleCBvbiBhIHBvaW50IGNvbHVtbikKKy0tIGlzIHRo ZXJlZm9yZSBIT1QtaW5kZXhlZCBsaWtlIGFueSBvdGhlciwgYW5kIHRoZSBHaVNUIGluZGV4 IHN0aWxsIHJldHVybnMKKy0tIGNvcnJlY3QgcmVzdWx0cyBhY3Jvc3MgdGhlIGNoYWluLiAg QSBjaGFuZ2UgdG8gYSBidHJlZS1vbmx5IGNvbHVtbiBvbiB0aGUKKy0tIHNhbWUgdGFibGUg aXMgbGlrZXdpc2UgSE9ULWluZGV4ZWQuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NS RUFURSBUQUJMRSBoaV9ub25idHJlZSAoaWQgaW50IFBSSU1BUlkgS0VZLCB0YWcgaW50LCBw IHBvaW50KQorICAgIFdJVEggKGZpbGxmYWN0b3IgPSAxMCk7CitDUkVBVEUgSU5ERVggaGlf bm9uYnRyZWVfdGFnIE9OIGhpX25vbmJ0cmVlICh0YWcpOyAgICAgICAgICAtLSBidHJlZSBp bmRleAorQ1JFQVRFIElOREVYIGhpX25vbmJ0cmVlX3AgT04gaGlfbm9uYnRyZWUgVVNJTkcg Z2lzdCAocCk7ICAgLS0gR2lTVCwgbm9uLWJ0cmVlCitJTlNFUlQgSU5UTyBoaV9ub25idHJl ZSBTRUxFQ1QgZywgZywgcG9pbnQoZywgZykKKyAgICBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCAyMDApIGc7CisKKy0tIENoYW5nZSB0aGUgR2lTVC1jb3ZlcmVkIGNvbHVtbiBmaXJzdDog SE9ULWluZGV4ZWQgKGhvdF9pZHggPSAyMDApLgorVVBEQVRFIGhpX25vbmJ0cmVlIFNFVCBw ID0gcG9pbnQocFswXSArIDEwMDAsIHBbMV0gKyAxMDAwKTsKK1NFTEVDVCBob3RfaWR4IEFT IGdpc3RfY29sX2hvdF9pbmRleGVkIEZST00gZ2V0X2hpX2NvdW50KCdoaV9ub25idHJlZScp OworCistLSBUaGUgR2lTVCBpbmRleCBtdXN0IHJldHVybiBjb3JyZWN0IHJlc3VsdHM6IHRo ZSBvbGQgcG9zaXRpb25zIGFyZSBnb25lIGFuZAorLS0gZXZlcnkgcm93IGlzIGZvdW5kIGF0 IGl0cyBuZXcgcG9zaXRpb24gKG5vIHN0YWxlIGxlYWYgc3VyZmFjZXMgYW4gb2xkIGtleSku CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRUxFQ1QgY291bnQoKikgQVMgYXRfb2xk X3Bvc2l0aW9ucworICAgIEZST00gaGlfbm9uYnRyZWUgV0hFUkUgcCA8QCBib3gocG9pbnQo MCwgMCksIHBvaW50KDMwMCwgMzAwKSk7CitTRUxFQ1QgY291bnQoKikgQVMgYXRfbmV3X3Bv c2l0aW9ucworICAgIEZST00gaGlfbm9uYnRyZWUgV0hFUkUgcCA8QCBib3gocG9pbnQoMTAw MCwgMTAwMCksIHBvaW50KDEzMDAsIDEzMDApKTsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOwor CistLSBDaGFuZ2luZyB0aGUgYnRyZWUtb25seSBjb2x1bW4gKHAgdW5jaGFuZ2VkKSBzdGF5 cyBIT1QtaW5kZXhlZC4KK1VQREFURSBoaV9ub25idHJlZSBTRVQgdGFnID0gdGFnICsgMTAw MDsKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyBidHJlZV9jb2xfaXNfaG90X2luZGV4ZWQgRlJP TSBnZXRfaGlfY291bnQoJ2hpX25vbmJ0cmVlJyk7CitEUk9QIFRBQkxFIGhpX25vbmJ0cmVl OworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDIyLiBBQkEgb24gYSB1bmlxdWUg a2V5IGFjcm9zcyB0d28gZGlzdGluY3QgbGl2ZSByb3dzOiBhIGtleSBjeWNsZWQgYXdheQor LS0gYW5kIGJhY2sgbXVzdCBzdGlsbCBjb2xsaWRlIHdpdGggYW5vdGhlciByb3cgdGhhdCBo b2xkcyBpdC4gIFRoZSBzdGFsZQorLS0gbGVhdmVzIGxlZnQgYnkgdGhlIGN5Y2xlIG11c3Qg bm90IGxldCBhIGdlbnVpbmUgZHVwbGljYXRlIHNsaXAgcGFzdCB0aGUKKy0tIHVuaXF1ZW5l c3MgY2hlY2sgLS0gdGhlIHJlYWQtc2lkZSByZWNoZWNrIGNvbXBhcmVzIHRoZSBsaXZlIGtl eSwgbm90IGp1c3QKKy0tIGEgY2hhbmdlZC1hdHRyaWJ1dGUgYml0bWFwLgorLS0gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfYWJhIChrIGludCwgdiBpbnQpIFdJ VEggKGZpbGxmYWN0b3IgPSA1MCk7CitDUkVBVEUgVU5JUVVFIElOREVYIGhpX2FiYV9rIE9O IGhpX2FiYSAoayk7CitDUkVBVEUgSU5ERVggaGlfYWJhX3YgT04gaGlfYWJhICh2KTsKK0lO U0VSVCBJTlRPIGhpX2FiYSBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKTsKKworLS0gQ3ljbGUg cm93MSdzIHVuaXF1ZSBrZXkgMSAtPiAzIC0+IDEgKHYgdW5jaGFuZ2VkLCBzbyBlYWNoIHN0 ZXAgaXMKKy0tIEhPVC1pbmRleGVkIGFuZCBsZWF2ZXMgc3RhbGUgZW50cmllcyBpbiBoaV9h YmFfaykuCitVUERBVEUgaGlfYWJhIFNFVCBrID0gMyBXSEVSRSB2ID0gMTA7CitVUERBVEUg aGlfYWJhIFNFVCBrID0gMSBXSEVSRSB2ID0gMTA7CitTRUxFQ1QgaG90X2lkeCA+IDAgQVMg Y3ljbGVkX2hvdF9pbmRleGVkIEZST00gZ2V0X2hpX2NvdW50KCdoaV9hYmEnKTsKKworLS0g cm93MSBpcyBsaXZlIGF0IGsgPSAxIGFnYWluLiAgTW92aW5nIHJvdzIgb250byBrID0gMSBt dXN0IHJhaXNlIGEgdW5pcXVlCistLSB2aW9sYXRpb24gZGVzcGl0ZSB0aGUgc3RhbGUgJzEn IGxlYXZlcyBmcm9tIHRoZSBjeWNsZS4KK1VQREFURSBoaV9hYmEgU0VUIGsgPSAxIFdIRVJF IHYgPSAyMDsKK0RST1AgVEFCTEUgaGlfYWJhOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKy0tIDIzLiBQYXJ0aWFsIGluZGV4IHdob3NlIHByZWRpY2F0ZSByZWZlcmVuY2VzIGEg bm9uLWtleSBjb2x1bW4uICBGbGlwcGluZyB0aGUKKy0tIHJvdyBvdXQgb2YgdGhlIHByZWRp Y2F0ZSB3aGlsZSBsZWF2aW5nIHRoZSBpbmRleGVkIGtleSB1bmNoYW5nZWQgaXMKKy0tIEhP VC1pbmRleGVkOiB0aGUgcHJlZGljYXRlIGNvbHVtbiBpcyBwYXJ0IG9mIHRoZSBpbmRleCdz IGF0dHJpYnV0ZSBzZXQsIHNvCistLSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIGRy b3BzIHRoZSBub3ctc3RhbGUgcGFydGlhbC1pbmRleCBlbnRyeSBvbiByZWFkCistLSAobm8g dmFsdWUgcmVjaGVjayBpcyBpbnZvbHZlZCkuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K K0NSRUFURSBUQUJMRSBoaV9wYXJ0cHJlZCAoaWQgaW50IFBSSU1BUlkgS0VZLCBrIGludCwg YWN0aXZlIGJvb2xlYW4pCisgICAgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJ TkRFWCBoaV9wYXJ0cHJlZF9rIE9OIGhpX3BhcnRwcmVkIChrKSBXSEVSRSBhY3RpdmU7CitJ TlNFUlQgSU5UTyBoaV9wYXJ0cHJlZCBWQUxVRVMgKDEsIDEwMCwgdHJ1ZSk7CisKKy0tIEZs aXAgdGhlIHByZWRpY2F0ZSBjb2x1bW4gJ2FjdGl2ZScgdHJ1ZSAtPiBmYWxzZTsgdGhlIGlu ZGV4IGtleSBrIGlzCistLSB1bmNoYW5nZWQuICBUaGUgcm93IG5vIGxvbmdlciBzYXRpc2Zp ZXMgdGhlIHByZWRpY2F0ZSwgc28gaXRzIHBhcnRpYWwtaW5kZXgKKy0tIGVudHJ5IG11c3Qg YmUgcmVtb3ZlZCwgbm90IGxlZnQgcG9pbnRpbmcgaW50byB0aGUgY2hhaW4uCitVUERBVEUg aGlfcGFydHByZWQgU0VUIGFjdGl2ZSA9IGZhbHNlIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBw Z19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCBob3QsIGhvdF9pZHggRlJPTSBn ZXRfaGlfY291bnQoJ2hpX3BhcnRwcmVkJyk7CisKKy0tIFRoZSBwYXJ0aWFsIGluZGV4IG11 c3Qgbm90IHN1cmZhY2UgdGhlIHJvdyBub3cgdGhhdCBhY3RpdmUgPSBmYWxzZS4KKy0tIEEg cXVlcnkgd2hvc2UgcXVhbCBleGFjdGx5IG1hdGNoZXMgdGhlIHBhcnRpYWwgcHJlZGljYXRl IHVzZXMgdGhlIGluZGV4CistLSB3aXRob3V0IHJlLWZpbHRlcmluZyAnYWN0aXZlJyBvbiB0 aGUgaGVhcCwgc28gYSBzdGFsZSBlbnRyeSB3b3VsZCBzdXJmYWNlLgorU0VUIGVuYWJsZV9z ZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworRVhQTEFJTiAo Q09TVFMgT0ZGKSBTRUxFQ1QgaWQgRlJPTSBoaV9wYXJ0cHJlZCBXSEVSRSBhY3RpdmU7CitT RUxFQ1QgaWQgRlJPTSBoaV9wYXJ0cHJlZCBXSEVSRSBrID0gMTAwIEFORCBhY3RpdmU7CitT RUxFQ1QgaWQgRlJPTSBoaV9wYXJ0cHJlZCBXSEVSRSBhY3RpdmU7CitSRVNFVCBlbmFibGVf Yml0bWFwc2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBUQUJMRSBoaV9wYXJ0 cHJlZDsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAyNC4gUmVjbGFpbSArIHN0 dWIgbWl4LiAgUmVwZWF0ZWQgdXBkYXRlcyBvZiBjb2x1bW4gYSBmb2xsb3dlZCBieSBhbiB1 cGRhdGUKKy0tIG9mIGNvbHVtbiBiIGJ1aWxkIGEgY2hhaW4gd2hvc2UgcHJ1bmUgcmVjbGFp bXMgdGhlIG1lbWJlcnMgd2hvc2UgY2hhbmdlIHdhcworLS0gc3VwZXJzZWRlZCAoYSBjaGFu Z2VkIGFnYWluKSBhbmQga2VlcHMgc3R1YnMgZm9yIHRob3NlIHRoYXQgd2VyZSBub3QsIHNv IGEKKy0tIHJvb3QgcmVkaXJlY3QgZW5kcyB1cCBwb2ludGluZyBhdCBhIHN0dWIgYW5kIGEg bGF0ZXIgd2FsayBjcm9zc2VzIG1pZC1jaGFpbgorLS0gc3R1YnMuICBSZWFkcyB0aHJvdWdo IGVhY2ggaW5kZXggYW5kIGFtY2hlY2sgbXVzdCBzdGF5IGNvcnJlY3QgYWNyb3NzIHRoZQor LS0gY29sbGFwc2UsIGFuZCBhIHNlY29uZCByb3VuZCBtdXN0IHdhbGsgdGhlIGV4aXN0aW5n IHN0dWJzIHdpdGhvdXQgc2V2ZXJpbmcKKy0tIHRoZSBjaGFpbi4KKy0tIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxFIGhpX3N0dWJtaXggKGlkIGludCBQUklNQVJZIEtF WSwgYSBpbnQsIGIgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVY IGhpX3N0dWJtaXhfYSBPTiBoaV9zdHVibWl4IChhKTsKK0NSRUFURSBJTkRFWCBoaV9zdHVi bWl4X2IgT04gaGlfc3R1Ym1peCAoYik7CitJTlNFUlQgSU5UTyBoaV9zdHVibWl4IFZBTFVF UyAoMSwgMTAsIDEwMCk7CitVUERBVEUgaGlfc3R1Ym1peCBTRVQgYSA9IDExIFdIRVJFIGlk ID0gMTsgICAtLSBjaGFuZ2VzIGEKK1VQREFURSBoaV9zdHVibWl4IFNFVCBhID0gMTIgV0hF UkUgaWQgPSAxOyAgIC0tIGNoYW5nZXMgYSBhZ2FpbiAoc3VwZXJzZWRlcykKK1VQREFURSBo aV9zdHVibWl4IFNFVCBiID0gMTAxIFdIRVJFIGlkID0gMTsgIC0tIGNoYW5nZXMgYgorVkFD VVVNIGhpX3N0dWJtaXg7CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitTRVQgZW5hYmxl X2JpdG1hcHNjYW4gPSBvZmY7CitTRUxFQ1QgaWQsIGEsIGIgRlJPTSBoaV9zdHVibWl4IFdI RVJFIGEgPSAxMjsgICAtLSBjdXJyZW50IGEKK1NFTEVDVCBpZCwgYSwgYiBGUk9NIGhpX3N0 dWJtaXggV0hFUkUgYiA9IDEwMTsgIC0tIGN1cnJlbnQgYgorU0VMRUNUIGlkIEZST00gaGlf c3R1Ym1peCBXSEVSRSBhID0gMTA7ICAgICAgICAgLS0gc3RhbGUgYTogMCByb3dzCitSRVNF VCBlbmFibGVfYml0bWFwc2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNUICog RlJPTSB2ZXJpZnlfaGVhcGFtKCdoaV9zdHVibWl4Jyk7ICAgICAgLS0gbm8gY29ycnVwdGlv biBhY3Jvc3Mgc3R1YnMKKy0tIEEgc2Vjb25kIHJvdW5kIG11c3Qgd2FsayB0aGUgZXhpc3Rp bmcgc3R1YnMgKG5vIHByaW9yWG1heCBzZXZlcikuCitVUERBVEUgaGlfc3R1Ym1peCBTRVQg YSA9IDEzIFdIRVJFIGlkID0gMTsKK1ZBQ1VVTSBoaV9zdHVibWl4OworU0VMRUNUIGlkLCBh LCBiIEZST00gaGlfc3R1Ym1peCBXSEVSRSBhID0gMTM7CitTRUxFQ1QgKiBGUk9NIHZlcmlm eV9oZWFwYW0oJ2hpX3N0dWJtaXgnKTsKK0RST1AgVEFCTEUgaGlfc3R1Ym1peDsKKworLS0g LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAyMy4gRXhjbHVzaW9uLWNvbnN0cmFpbnQgdGFi bGVzIGFyZSBIT1QtaW5kZXhlZC1lbGlnaWJsZS4KKy0tCistLSBBbiBleGNsdXNpb24gY29u c3RyYWludCBpcyBlbmZvcmNlZCBieSBjaGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0 cmFpbnQsCistLSB3aGljaCByZWNoZWNrcyBlYWNoIGNhbmRpZGF0ZSBhZ2FpbnN0IHRoZSBs aXZlIHR1cGxlJ3MgY3VycmVudCBpbmRleC1mb3JtCistLSB3aXRoIHRoZSBjb25zdHJhaW50 J3Mgb3duIG9wZXJhdG9ycywgc28gYSBzdGFsZSBlbnRyeSBsZWZ0IGJ5IGEgSE9ULWluZGV4 ZWQKKy0tIHVwZGF0ZSBpcyBza2lwcGVkIHdoaWxlIHRoZSBsaXZlIGtleSBhbHdheXMgaGFz IGl0cyBvd24gZW50cnkuICBVcGRhdGluZyBhCistLSBub24tY29uc3RyYWluZWQgaW5kZXhl ZCBjb2x1bW4gaXMgSE9ULWluZGV4ZWQgKHRoZSBHaVNUIGV4Y2x1c2lvbiBpbmRleCBpcwor LS0gc2tpcHBlZCksIGFuZCB0aGUgY29uc3RyYWludCBzdGF5cyBjb3JyZWN0LgorLS0gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfZXhjbCAoCisgICAgaWQgaW50 IFBSSU1BUlkgS0VZLAorICAgIHRhZyBpbnQsCisgICAgZHVyaW5nIGludDRyYW5nZSwKKyAg ICBFWENMVURFIFVTSU5HIGdpc3QgKGR1cmluZyBXSVRIICYmKQorKSBXSVRIIChmaWxsZmFj dG9yID0gMTApOworQ1JFQVRFIElOREVYIGhpX2V4Y2xfdGFnIE9OIGhpX2V4Y2wodGFnKTsK K0lOU0VSVCBJTlRPIGhpX2V4Y2wgVkFMVUVTICgxLCAxMDAsIGludDRyYW5nZSgxLCAxMCkp LCAoMiwgMjAwLCBpbnQ0cmFuZ2UoMjAsIDMwKSk7CisKKy0tIFVwZGF0ZSBhIG5vbi1jb25z dHJhaW5lZCBpbmRleGVkIGNvbHVtbjogSE9ULWluZGV4ZWQgKEdpU1QgZXhjbHVzaW9uIGlu ZGV4CistLSBhbmQgUEsgc2tpcHBlZCksIGFuZCB0aGUgZXhjbHVzaW9uIGNvbnN0cmFpbnQg aXMgc3RpbGwgZW5mb3JjZWQuCitVUERBVEUgaGlfZXhjbCBTRVQgdGFnID0gdGFnICsgMSBX SEVSRSBpZCA9IDE7CitTRUxFQ1QgaG90X2lkeCA+IDAgQVMgdGFnX3VwZGF0ZV9ob3RfaW5k ZXhlZCBGUk9NIGdldF9oaV9jb3VudCgnaGlfZXhjbCcpOworSU5TRVJUIElOVE8gaGlfZXhj bCBWQUxVRVMgKDMsIDMwMCwgaW50NHJhbmdlKDUsIDE1KSk7ICAtLSBvdmVybGFwcyBpZD0x J3MgKDEsMTApCisKKy0tIE1vdmUgaWQ9MSdzIHJhbmdlIGF3YXkgKHRoaXMgdXBkYXRlcyB0 aGUgR2lTVCBpbmRleCwgbGVhdmluZyBhIHN0YWxlIGVudHJ5CistLSBmb3IgdGhlIG9sZCAo MSwxMCkgcmFuZ2UpLiAgQSByYW5nZSBvdmVybGFwcGluZyBvbmx5IHRoZSBPTEQgcmFuZ2Ug bm93CistLSBpbnNlcnRzIGNsZWFubHkgKHRoZSBzdGFsZSBlbnRyeSBpcyBza2lwcGVkKTsg b25lIG92ZXJsYXBwaW5nIHRoZSBORVcgcmFuZ2UKKy0tIHN0aWxsIGNvbmZsaWN0cy4KK1VQ REFURSBoaV9leGNsIFNFVCBkdXJpbmcgPSBpbnQ0cmFuZ2UoMTAwLCAxMTApIFdIRVJFIGlk ID0gMTsKK0lOU0VSVCBJTlRPIGhpX2V4Y2wgVkFMVUVTICg0LCA0MDAsIGludDRyYW5nZSg1 LCAxNSkpOyAgIC0tIG9ubHkgb3ZlcmxhcHBlZCBvbGQgcmFuZ2U6IE9LCitJTlNFUlQgSU5U TyBoaV9leGNsIFZBTFVFUyAoNSwgNTAwLCBpbnQ0cmFuZ2UoMTA1LCAxMTUpKTstLSBvdmVy bGFwcyBuZXcgKDEwMCwxMTApOiBjb25mbGljdAorRFJPUCBUQUJMRSBoaV9leGNsOworCist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDI1LiBUT0FTVCBpbnRlcmFjdGlvbi4gIEFu IGluZGV4ZWQgY29sdW1uIHN0b3JlZCBvdXQtb2YtbGluZSBtdXN0IGJlaGF2ZQorLS0gY29y cmVjdGx5IGFjcm9zcyBIT1QtaW5kZXhlZCB1cGRhdGVzOiBhbiBlbnRyeSBrZXB0IGFjcm9z cyBhbiB1cGRhdGUgb2YgYQorLS0gZGlmZmVyZW50IGNvbHVtbiBzdGlsbCByZXNvbHZlcyB0 byB0aGUgKHVuY2hhbmdlZCkgdG9hc3RlZCB2YWx1ZSwgYW5kIGFmdGVyCistLSB0aGUgdG9h c3RlZCBjb2x1bW4gaXRzZWxmIGlzIGNoYW5nZWQgdGhlIHN0YWxlIGVudHJ5IGlzIGRyb3Bw ZWQgYnkgdGhlCistLSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgKG5vIHZhbHVlIGNvbXBh cmlzb24gb3IgZGV0b2FzdGluZyBpcyBuZWVkZWQpLgorLS0gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCitDUkVBVEUgVEFCTEUgaGlfdG9hc3QgKGlkIGludCBQUklNQVJZIEtFWSwgYmlnIHRl eHQsIHRhZyBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7CitBTFRFUiBUQUJMRSBoaV90 b2FzdCBBTFRFUiBDT0xVTU4gYmlnIFNFVCBTVE9SQUdFIEVYVEVSTkFMOyAgLS0gbm8gY29t cHJlc3Npb24KK0NSRUFURSBJTkRFWCBoaV90b2FzdF9iaWcgT04gaGlfdG9hc3QgKGJpZyk7 CitDUkVBVEUgSU5ERVggaGlfdG9hc3RfdGFnIE9OIGhpX3RvYXN0ICh0YWcpOworSU5TRVJU IElOVE8gaGlfdG9hc3QgVkFMVUVTICgxLCByZXBlYXQoJ0EnLCAyMDAwKSwgMTApOworLS0g VGhlIGJpZyB2YWx1ZSBpcyBzdG9yZWQgb3V0LW9mLWxpbmUuCitTRUxFQ1QgcGdfY29sdW1u X3NpemUoYmlnKSA+IDE1MDAgQVMgYmlnX2lzX2V4dGVybmFsIEZST00gaGlfdG9hc3QgV0hF UkUgaWQgPSAxOworLS0gSE9ULWluZGV4ZWQgdXBkYXRlIG9mIHRhZyBsZWF2ZXMgYmlnIChh bmQgaXRzIGluZGV4IGVudHJ5KSB1bmNoYW5nZWQuCitVUERBVEUgaGlfdG9hc3QgU0VUIHRh ZyA9IDExIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyB0YWdfdXBkYXRl X2hvdF9pbmRleGVkIEZST00gZ2V0X2hpX2NvdW50KCdoaV90b2FzdCcpOworU0VUIGVuYWJs ZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNU IGlkLCB0YWcsIGxlbmd0aChiaWcpIEZST00gaGlfdG9hc3QgV0hFUkUgYmlnID0gcmVwZWF0 KCdBJywgMjAwMCk7CistLSBIT1QtaW5kZXhlZCB1cGRhdGUgb2YgdGhlIHRvYXN0ZWQgaW5k ZXhlZCBjb2x1bW4gaXRzZWxmOiB0aGUgb2xkIGVudHJ5IGlzCistLSBub3cgc3RhbGUgYmVj YXVzZSB0aGUgY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIHNob3dzIGJpZyBjaGFuZ2VkLgor VVBEQVRFIGhpX3RvYXN0IFNFVCBiaWcgPSByZXBlYXQoJ0InLCAyMDAwKSBXSEVSRSBpZCA9 IDE7CitTRUxFQ1QgaWQgRlJPTSBoaV90b2FzdCBXSEVSRSBiaWcgPSByZXBlYXQoJ0EnLCAy MDAwKTsgICAtLSBzdGFsZTogMCByb3dzCitTRUxFQ1QgaWQsIGxlbmd0aChiaWcpIEZST00g aGlfdG9hc3QgV0hFUkUgYmlnID0gcmVwZWF0KCdCJywgMjAwMCk7ICAtLSBjdXJyZW50CitS RVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNU ICogRlJPTSB2ZXJpZnlfaGVhcGFtKCdoaV90b2FzdCcpOworRFJPUCBUQUJMRSBoaV90b2Fz dDsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAyNi4gQUJBIG9uIGFuIGluZGV4 ZWQgY29sdW1uLiAgQSBIT1QtaW5kZXhlZCB1cGRhdGUgdGhhdCBzZXRzIGFuIGluZGV4ZWQK Ky0tIGNvbHVtbiB0byBhIHZhbHVlIGFuIGVhcmxpZXIgY2hhaW4gbWVtYmVyIGFscmVhZHkg aGVsZCBsZWF2ZXMgdHdvIGxlYXZlcworLS0gd2l0aCB0aGF0IHNhbWUga2V5LCBib3RoIGNo YWluLXJlc29sdmluZyB0byB0aGUgbGl2ZSB0dXBsZS4gIEEgdmFsdWUtYmFzZWQKKy0tIHJl Y2hlY2sgY2Fubm90IHRlbGwgdGhlbSBhcGFydCBhbmQgd291bGQgcmV0dXJuIHRoZSByb3cg dHdpY2U7IHRoZQorLS0gY3Jvc3NlZC1hdHRyaWJ1dGUgYml0bWFwIGRyb3BzIHRoZSBzdGFs ZSBhbmNlc3RvciBsZWFmIChpdHMgd2FsayBjcm9zc2VzIHRoZQorLS0ga2V5LWNoYW5naW5n IGhvcHMpIGFuZCBrZWVwcyBvbmx5IHRoZSBmcmVzaCBlbnRyeSwgc28gYSBmb3JjZWQgaW5k ZXggc2NhbgorLS0gcmV0dXJucyB0aGUgcm93IGV4YWN0bHkgb25jZS4gIFJFSU5ERVggbXVz dCBub3QgY2hhbmdlIHRoYXQuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBU QUJMRSBoaV9hYmEgKGlkIGludCBQUklNQVJZIEtFWSwgayBpbnQsIHYgaW50KSBXSVRIIChm aWxsZmFjdG9yID0gNTApOworQ1JFQVRFIElOREVYIGhpX2FiYV9rIE9OIGhpX2FiYSAoayk7 CitDUkVBVEUgSU5ERVggaGlfYWJhX3YgT04gaGlfYWJhICh2KTsKK0lOU0VSVCBJTlRPIGhp X2FiYSBWQUxVRVMgKDEsIDEsIDEwMCk7CitVUERBVEUgaGlfYWJhIFNFVCBrID0gMyBXSEVS RSBpZCA9IDE7ICAgLS0gSE9ULWluZGV4ZWQ6IGsgY2hhbmdlZCwgdiBrZXB0CitVUERBVEUg aGlfYWJhIFNFVCBrID0gMSBXSEVSRSBpZCA9IDE7ICAgLS0gSE9ULWluZGV4ZWQ6IGsgY3lj bGVkIGJhY2sgKEFCQSkKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKK1NFVCBlbmFibGVf Yml0bWFwc2NhbiA9IG9mZjsKK1NFTEVDVCBjb3VudCgqKSBBUyBrMV9vbmNlIEZST00gaGlf YWJhIFdIRVJFIGsgPSAxOyAgICAgLS0gZXhhY3RseSAxCitTRUxFQ1QgY291bnQoKikgQVMg azNfZ29uZSBGUk9NIGhpX2FiYSBXSEVSRSBrID0gMzsgICAgIC0tIDAgKHN0YWxlIGRyb3Bw ZWQpCitSRUlOREVYIElOREVYIGhpX2FiYV9rOworU0VMRUNUIGNvdW50KCopIEFTIGsxX2Fm dGVyX3JlaW5kZXggRlJPTSBoaV9hYmEgV0hFUkUgayA9IDE7ICAtLSBzdGlsbCAxCitSRVNF VCBlbmFibGVfYml0bWFwc2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworU0VMRUNUICog RlJPTSB2ZXJpZnlfaGVhcGFtKCdoaV9hYmEnKTsKK0RST1AgVEFCTEUgaGlfYWJhOworCist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDI3LiBQYXJ0aWFsIGluZGV4LCBwcmVkaWNh dGUgY29sdW1uIGNoYW5nZWQgYnV0IHRoZSByb3cgU1RBWVMgaW4gdGhlIGluZGV4CistLSAo cHJlZGljYXRlIHN0aWxsIHRydWUsIGtleSB1bmNoYW5nZWQpLiAgVGhlIHVwZGF0ZSBpcyBI T1QtaW5kZXhlZDsgc2VsZWN0aXZlCistLSBtYWludGVuYW5jZSByZS1pbnNlcnRzIGEgZnJl c2ggZW50cnkgKHRoZSBwcmVkaWNhdGUgY29sdW1uIGNoYW5nZWQgYW5kIHN0aWxsCistLSBo b2xkcyksIHNvIHRoZSByb3cgaXMgc3RpbGwgcmV0dXJuZWQgLS0gdGhlIGJpdG1hcCBkcm9w cyB0aGUgb2xkZXIgZW50cnkgYW5kCistLSB0aGUgZnJlc2ggb25lIHJlLXN1cHBsaWVzIGl0 LiAgR3VhcmRzIGFnYWluc3QgYSAibG9zdCByb3ciIGZyb20gb3Zlci1lYWdlcgorLS0gZHJv cHBpbmcuCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NSRUFURSBUQUJMRSBoaV9wYXJ0 c3RheSAoaWQgaW50IFBSSU1BUlkgS0VZLCBrIGludCwgbiBpbnQpIFdJVEggKGZpbGxmYWN0 b3IgPSA1MCk7CitDUkVBVEUgSU5ERVggaGlfcGFydHN0YXlfayBPTiBoaV9wYXJ0c3RheSAo aykgV0hFUkUgbiA+IDA7CitDUkVBVEUgSU5ERVggaGlfcGFydHN0YXlfaWQyIE9OIGhpX3Bh cnRzdGF5IChpZCk7CitJTlNFUlQgSU5UTyBoaV9wYXJ0c3RheSBWQUxVRVMgKDEsIDUsIDMp OworVVBEQVRFIGhpX3BhcnRzdGF5IFNFVCBuID0gNyBXSEVSRSBpZCA9IDE7ICAgLS0gbiAz LT43LCBzdGlsbCA+IDAsIGsgdW5jaGFuZ2VkCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0 X2ZsdXNoKCk7CitTRUxFQ1QgaG90X2lkeCA+IDAgQVMgc3RheV9pc19ob3RfaW5kZXhlZCBG Uk9NIGdldF9oaV9jb3VudCgnaGlfcGFydHN0YXknKTsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9 IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK1NFTEVDVCBjb3VudCgqKSBB UyBzdGF5X3Jvd3MgRlJPTSBoaV9wYXJ0c3RheSBXSEVSRSBrID0gNSBBTkQgbiA+IDA7ICAg LS0gd2FudCAxCitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK1JFU0VUIGVuYWJsZV9zZXFz Y2FuOworRFJPUCBUQUJMRSBoaV9wYXJ0c3RheTsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCistLSAyOC4gUGFydGl0aW9uZWQgdGFibGUuICBBIHdpdGhpbi1wYXJ0aXRpb24gVVBE QVRFIG9mIG9uZSBpbmRleGVkIGNvbHVtbiBpcworLS0gSE9ULWluZGV4ZWQgb24gdGhlIGxl YWYgcGFydGl0aW9uJ3MgaGVhcCBleGFjdGx5IGFzIGZvciBhIG5vbi1wYXJ0aXRpb25lZAor LS0gdGFibGU7IGEgY3Jvc3MtcGFydGl0aW9uIHVwZGF0ZSBpcyBhIGRlbGV0ZStpbnNlcnQg YW5kIG5ldmVyIEhPVC4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1JFQVRFIFRBQkxF IGhpX3BhcnQgKGlkIGludCwgYSBpbnQsIGIgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UgKGlk KTsKK0NSRUFURSBUQUJMRSBoaV9wYXJ0MSBQQVJUSVRJT04gT0YgaGlfcGFydCBGT1IgVkFM VUVTIEZST00gKDApIFRPICgxMDApCisgICAgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NS RUFURSBJTkRFWCBoaV9wYXJ0X2EgT04gaGlfcGFydCAoYSk7CitDUkVBVEUgSU5ERVggaGlf cGFydF9iIE9OIGhpX3BhcnQgKGIpOworSU5TRVJUIElOVE8gaGlfcGFydCBWQUxVRVMgKDEs IDEwLCAyMCk7CitVUERBVEUgaGlfcGFydCBTRVQgYSA9IDExIFdIRVJFIGlkID0gMTsgICAt LSBvbmUgaW5kZXhlZCBjb2wsIHdpdGhpbiBwYXJ0aXRpb24KK1NFTEVDVCBwZ19zdGF0X2Zv cmNlX25leHRfZmx1c2goKTsKK1NFTEVDVCBob3RfaWR4ID4gMCBBUyBwYXJ0X2lzX2hvdF9p bmRleGVkIEZST00gZ2V0X2hpX2NvdW50KCdoaV9wYXJ0MScpOworU0VUIGVuYWJsZV9zZXFz Y2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGNvdW50 KCopIEFTIGExMSBGUk9NIGhpX3BhcnQgV0hFUkUgYSA9IDExOyAgIC0tIHdhbnQgMQorU0VM RUNUIGNvdW50KCopIEFTIGExMCBGUk9NIGhpX3BhcnQgV0hFUkUgYSA9IDEwOyAgIC0tIHdh bnQgMCAoc3RhbGUgZHJvcHBlZCkKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOworUkVTRVQg ZW5hYmxlX3NlcXNjYW47CitTRUxFQ1QgKiBGUk9NIHZlcmlmeV9oZWFwYW0oJ2hpX3BhcnQx Jyk7CitEUk9QIFRBQkxFIGhpX3BhcnQ7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor LS0gMjkuIE5vbi1idHJlZSBhY2Nlc3MgbWV0aG9kIChoYXNoKS4gIFJlYWQtc2lkZSBzdGFs ZW5lc3MgaXMgYWNjZXNzLW1ldGhvZAorLS0gYWdub3N0aWMgKHRoZSBjcm9zc2VkLWF0dHJp YnV0ZSBiaXRtYXApLCBzbyBhbnkgaW5kZXggQU0ncyBjb2x1bW4gaXMKKy0tIEhPVC1pbmRl eGVkLiAgSGFzaCBpcyB0aGUgc2hhcnBlc3QgY2FzZTogaXRzIHNjYW5zIHJlY2hlY2sgdGhl IGhlYXAgdmFsdWUsCistLSB3aGljaCBhbG9uZSBjYW5ub3QgZGlzYW1iaWd1YXRlIGEgdmFs dWUgY3ljbGVkIGF3YXkgYW5kIGJhY2sgKEFCQSkgLS0gdGhlCistLSBiaXRtYXAgZHJvcHMg dGhlIHN0YWxlIGFuY2VzdG9yIHNvIHRoZSByb3cgaXMgcmV0dXJuZWQgZXhhY3RseSBvbmNl LgorLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDUkVBVEUgVEFCTEUgaGlfaGFzaCAoaWQg aW50IFBSSU1BUlkgS0VZLCB2IGludCwgdyBpbnQpIFdJVEggKGZpbGxmYWN0b3IgPSA1MCk7 CitDUkVBVEUgSU5ERVggaGlfaGFzaF92IE9OIGhpX2hhc2ggVVNJTkcgaGFzaCAodik7CitD UkVBVEUgSU5ERVggaGlfaGFzaF93IE9OIGhpX2hhc2ggKHcpOworSU5TRVJUIElOVE8gaGlf aGFzaCBWQUxVRVMgKDEsIDEwLCAxMDApOworVVBEQVRFIGhpX2hhc2ggU0VUIHYgPSA5OSBX SEVSRSBpZCA9IDE7CitVUERBVEUgaGlfaGFzaCBTRVQgdiA9IDEwIFdIRVJFIGlkID0gMTsg ICAtLSBBQkE6IDEwIC0+IDk5IC0+IDEwLCB3IHVuY2hhbmdlZAorU0VMRUNUIHBnX3N0YXRf Zm9yY2VfbmV4dF9mbHVzaCgpOworU0VMRUNUIGhvdF9pZHggPiAwIEFTIGhhc2hfaXNfaG90 X2luZGV4ZWQgRlJPTSBnZXRfaGlfY291bnQoJ2hpX2hhc2gnKTsKK1NFVCBlbmFibGVfc2Vx c2NhbiA9IG9mZjsKK1NFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKK1NFTEVDVCBjb3Vu dCgqKSBBUyBoYXNoX3YxMCBGUk9NIGhpX2hhc2ggV0hFUkUgdiA9IDEwOyAgIC0tIHdhbnQg MSAobm8gZHVwbGljYXRlKQorU0VMRUNUIGNvdW50KCopIEFTIGhhc2hfdjk5IEZST00gaGlf aGFzaCBXSEVSRSB2ID0gOTk7ICAgLS0gd2FudCAwIChzdGFsZSBkcm9wcGVkKQorUkVTRVQg ZW5hYmxlX2JpdG1hcHNjYW47CitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK0RST1AgVEFCTEUg aGlfaGFzaDsKKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAzMC4gRERMIGFmdGVy IGEgSE9ULWluZGV4ZWQgY2hhaW4gZXhpc3RzLiAgVGhlIHBlci1ob3AgbW9kaWZpZWQtYXR0 cnMKKy0tIGJpdG1hcCBvbiB0aGUgcGFnZSBpcyBrZXllZCBieSBwaHlzaWNhbCBhdHRyaWJ1 dGUgbnVtYmVyIGFuZCBzaXplZCBieSB0aGUKKy0tIHJlbGF0aW9uJ3MgbmF0dHMgQVQgV1JJ VEUgVElNRS4gIEluZGV4ZXMgYWRkZWQvZHJvcHBlZCBhZnRlciB0aGUgY2hhaW4KKy0tIGZv cm1zLCBhbmQgQUREL0RST1AgQ09MVU1OLCBtdXN0IG5vdCBjb3JydXB0IHRoZSByZWFkLXNp ZGUgc3RhbGVuZXNzIHRlc3QuCistLSBUaGUgc2hhcnAgY2FzZSBpcyBBREQgQ09MVU1OIGNy b3NzaW5nIGFuIDgtYXR0cmlidXRlIGJvdW5kYXJ5LCB3aGljaCBncm93cworLS0gY2VpbChu YXR0cy84KTogcmVhZGVycyBtdXN0IGxvY2F0ZSBlYWNoIGhvcCdzIGJpdG1hcCBmcm9tIHRo YXQgaG9wJ3Mgb3duCistLSB3cml0ZS10aW1lIG5hdHRzIChIZWFwVHVwbGVIZWFkZXJHZXRO YXR0cyAvIHRoZSBzdHViJ3Mgc3Rhc2hlZCBuYXR0cyksIG5vdAorLS0gdGhlIHJlbGF0aW9u J3MgY3VycmVudCBuYXR0cy4KKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gRXhhY3Rs eSA4IGF0dHJpYnV0ZXMgKGMxLi5jNyArIHBheWxvYWQpIHNvIGFkZGluZyB0aGUgOXRoIGZs aXBzIHRoZSBiaXRtYXAKKy0tIGZyb20gMSBieXRlIHRvIDIuICBjNyBpcyB0aGUgY29sdW1u IHdlIGNodXJuOyBjMiBpcyBhbiB1bmNoYW5nZWQgaW5kZXhlZAorLS0gY29sdW1uIHdob3Nl IGxlYWYgbXVzdCBzdGF5IGN1cnJlbnQuCitDUkVBVEUgVEFCTEUgaGlfZGRsICgKKyAgICBj MSBpbnQgUFJJTUFSWSBLRVksIGMyIGludCwgYzMgaW50LCBjNCBpbnQsCisgICAgYzUgaW50 LCBjNiBpbnQsIGM3IGludCwgcGF5bG9hZCB0ZXh0CispIFdJVEggKGZpbGxmYWN0b3IgPSA1 MCk7CitDUkVBVEUgSU5ERVggaGlfZGRsX2MyIE9OIGhpX2RkbChjMik7CitDUkVBVEUgSU5E RVggaGlfZGRsX2M3IE9OIGhpX2RkbChjNyk7CitJTlNFUlQgSU5UTyBoaV9kZGwgVkFMVUVT ICgxLCAxMCwgMjAsIDMwLCA0MCwgNTAsIDcwLCAncCcpOworCistLSBGb3JtIGEgSE9ULWlu ZGV4ZWQgY2hhaW4gb24gYzcgQkVGT1JFIGFueSBmdXJ0aGVyIERETC4KK1VQREFURSBoaV9k ZGwgU0VUIGM3ID0gNzEgV0hFUkUgYzEgPSAxOworVVBEQVRFIGhpX2RkbCBTRVQgYzcgPSA3 MiBXSEVSRSBjMSA9IDE7CisKKy0tIChhKSBDUkVBVEUgSU5ERVggYWZ0ZXIgdGhlIGNoYWlu IGV4aXN0czogdGhlIG5ldyBpbmRleCBpcyBidWlsdCBhZ2FpbnN0IHRoZQorLS0gbGl2ZSB0 dXBsZSB1bmRlciBpdHMgb3duIFRJRCwgc28gaXRzIGVudHJ5IGlzIG5ldmVyIHN0YWxlLgor Q1JFQVRFIElOREVYIGhpX2RkbF9jMyBPTiBoaV9kZGwoYzMpOworCistLSAoYikgQUREIENP TFVNTiBjcm9zc2luZyB0aGUgOC1hdHRyaWJ1dGUgYm91bmRhcnkgKG5hdHRzIDggLT4gOSku ICBFeGlzdGluZworLS0gaG9wcyBrZWVwIHRoZWlyIDEtYnl0ZSBiaXRtYXBzOyB0aGUgcmVs YXRpb24gbm93IHdhbnRzIDIuICBSZWFkcyB0aHJvdWdoIHRoZQorLS0gb2xkIGNoYWluIG11 c3Qgc3RpbGwgYmUgY29ycmVjdC4KK0FMVEVSIFRBQkxFIGhpX2RkbCBBREQgQ09MVU1OIGM5 IGludDsKK0NSRUFURSBJTkRFWCBoaV9kZGxfYzkgT04gaGlfZGRsKGM5KTsKKworU0VUIGVu YWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VU IGVuYWJsZV9pbmRleG9ubHlzY2FuID0gb2ZmOworCistLSBMaXZlIGM3IGlzIDcyLiAgVGhl IGM3IGluZGV4IG11c3QgcmV0dXJuIHRoZSBsaXZlIHJvdyBmb3IgNzIgYW5kIGRyb3AgdGhl CistLSBzdGFsZSBsZWF2ZXMgZm9yIDcwIGFuZCA3MSAob2Zmc2V0cyBtaXNyZWFkIHdvdWxk IGNvcnJ1cHQgdGhpcykuCitTRUxFQ1QgY291bnQoKikgQVMgYzdfZXFfNzIgRlJPTSBoaV9k ZGwgV0hFUkUgYzcgPSA3MiBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKK1NFTEVDVCBjb3Vu dCgqKSBBUyBjN19lcV83MF9zdGFsZSBGUk9NIGhpX2RkbCBXSEVSRSBjNyA9IDcwIEFORCBw YXlsb2FkIElTIE5PVCBOVUxMOworU0VMRUNUIGNvdW50KCopIEFTIGM3X2VxXzcxX3N0YWxl IEZST00gaGlfZGRsIFdIRVJFIGM3ID0gNzEgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CisK Ky0tIGMyIG5ldmVyIGNoYW5nZWQgYWNyb3NzIHRoZSBjaGFpbjogaXRzIGxlYWYgbXVzdCBO T1QgYmUganVkZ2VkIHN0YWxlIGV2ZW4KKy0tIHRob3VnaCBhIGNyb3NzZWQgaG9wIGNoYW5n ZWQgYzcuICBBIG1pc3JlYWQgYml0bWFwIGNvdWxkIHNwdXJpb3VzbHkgZmxhZyBpdC4KK1NF TEVDVCBjb3VudCgqKSBBUyBjMl9lcV8xMF9jdXJyZW50IEZST00gaGlfZGRsIFdIRVJFIGMy ID0gMTAgQU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CisKKy0tIChjKSBDb250aW51ZSBjaHVy bmluZyBjNyBBRlRFUiB0aGUgQUREIENPTFVNTjogdGhlIG5ldyBob3AncyBiaXRtYXAgaXMg c2l6ZWQKKy0tIGZvciBuYXR0cyA5ICgyIGJ5dGVzKTsgdGhlIG9sZCBob3BzIGFyZSAxIGJ5 dGUuICBBIGNoYWluIHdpdGggbWl4ZWQtc2l6ZQorLS0gYml0bWFwcyBtdXN0IHN0aWxsIHJl c29sdmUgY29ycmVjdGx5LgorVVBEQVRFIGhpX2RkbCBTRVQgYzcgPSA3MyBXSEVSRSBjMSA9 IDE7CitTRUxFQ1QgY291bnQoKikgQVMgYzdfZXFfNzMgRlJPTSBoaV9kZGwgV0hFUkUgYzcg PSA3MyBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKK1NFTEVDVCBjb3VudCgqKSBBUyBjN19l cV83Ml9ub3dfc3RhbGUgRlJPTSBoaV9kZGwgV0hFUkUgYzcgPSA3MiBBTkQgcGF5bG9hZCBJ UyBOT1QgTlVMTDsKKworLS0gKGQpIENvbGxhcHNlIHRoZSBjaGFpbiB0byBzdHVicyB2aWEg VkFDVVVNLCB0aGVuIHJlYWQgYWdhaW46IHRoZSBzdHViIG11c3QKKy0tIHByZXNlcnZlIGl0 cyB3cml0ZS10aW1lIG5hdHRzIHNvIGl0cyBiaXRtYXAgc3RheXMgbG9jYXRhYmxlIHBvc3Qt QUREIENPTFVNTi4KK1VQREFURSBoaV9kZGwgU0VUIGM3ID0gNzQgV0hFUkUgYzEgPSAxOwor VkFDVVVNIChJTkRFWF9DTEVBTlVQIG9mZikgaGlfZGRsOworU0VMRUNUIGNvdW50KCopIEFT IGM3X2VxXzc0X2FmdGVyX3ZhY3V1bSBGUk9NIGhpX2RkbCBXSEVSRSBjNyA9IDc0IEFORCBw YXlsb2FkIElTIE5PVCBOVUxMOworU0VMRUNUIGNvdW50KCopIEFTIGMyX2VxXzEwX2FmdGVy X3ZhY3V1bSBGUk9NIGhpX2RkbCBXSEVSRSBjMiA9IDEwIEFORCBwYXlsb2FkIElTIE5PVCBO VUxMOworCistLSAoZSkgRFJPUCBDT0xVTU4ga2VlcHMgdGhlIGF0dG51bSBzbG90IChubyBy ZW51bWJlciksIHNvIGJpdG1hcHMgc3RheSBhbGlnbmVkLgorQUxURVIgVEFCTEUgaGlfZGRs IERST1AgQ09MVU1OIGM0OworU0VMRUNUIGNvdW50KCopIEFTIGM3X2FmdGVyX2Ryb3AgRlJP TSBoaV9kZGwgV0hFUkUgYzcgPSA3NCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKK1NFTEVD VCBjb3VudCgqKSBBUyBjMl9hZnRlcl9kcm9wIEZST00gaGlfZGRsIFdIRVJFIGMyID0gMTAg QU5EIHBheWxvYWQgSVMgTk9UIE5VTEw7CisKKy0tIChmKSBEUk9QIElOREVYIG9uIHRoZSBj aHVybmVkIGNvbHVtbjogcmVtYWluaW5nIGluZGV4ZXMgc3RpbGwgcmVzb2x2ZS4KK0RST1Ag SU5ERVggaGlfZGRsX2M3OworU0VMRUNUIGNvdW50KCopIEFTIGMyX2FmdGVyX2Ryb3BpZHgg RlJPTSBoaV9kZGwgV0hFUkUgYzIgPSAxMCBBTkQgcGF5bG9hZCBJUyBOT1QgTlVMTDsKKwor UkVTRVQgZW5hYmxlX3NlcXNjYW47CitSRVNFVCBlbmFibGVfYml0bWFwc2NhbjsKK1JFU0VU IGVuYWJsZV9pbmRleG9ubHlzY2FuOworCistLSBUaGUgc2Vxc2NhbiB0cnV0aCBjb25maXJt cyB0aGUgbGl2ZSByb3c7IHRoZSBjb3VudCBhc3NlcnRpb25zIGFib3ZlIChyZWFkCistLSB0 aHJvdWdoIHRoZSBwb3N0LURETCBpbmRleGVzKSBtYXRjaCBpdCwgd2hpY2ggaXMgd2hhdCB3 b3VsZCBicmVhayBpZiBhCistLSBtaXMtc2l6ZWQgYml0bWFwIGNvcnJ1cHRlZCB0aGUgc3Rh bGVuZXNzIHZlcmRpY3QuCitTRUxFQ1QgYzEsIGMyLCBjNyBGUk9NIGhpX2RkbCBXSEVSRSBj MSA9IDE7CisKK0RST1AgVEFCTEUgaGlfZGRsOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKy0tIENsZWFudXAKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRFJPUCBGVU5DVElP TiBnZXRfaGlfY291bnQodGV4dCk7CitEUk9QIEZVTkNUSU9OIGdldF9ob3RfY291bnQodGV4 dCk7CitEUk9QIEVYVEVOU0lPTiBwYWdlaW5zcGVjdDsKLS0gCjIuNTAuMQoK --732d2653398ad274b1166a00220a1f2b85c8ed8b Content-Disposition: attachment; filename*0="v49-0008-Gate-HOT-indexed-updates-on-the-logical-replicat.pat"; filename*1="ch" Content-Type: text/x-patch; name="=?UTF-8?Q?v49-0008-Gate-HOT-indexed-updates-on-the-logical-replicat.patc?= =?UTF-8?Q?h?=" Content-Transfer-Encoding: base64 RnJvbSAyNjVkNmI4ZGY5NTY4NzkyMThkZDgyOWQ5YWYwMWUzNjZiNDg5NzYxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog V2VkLCAxNyBKdW4gMjAyNiAyMTo0Mzo1MyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjQ5IDgv OV0gR2F0ZSBIT1QtaW5kZXhlZCB1cGRhdGVzIG9uIHRoZSBsb2dpY2FsLXJlcGxpY2F0aW9u CiBhcHBseSBwYXRoCgpBIEhPVC1pbmRleGVkIHVwZGF0ZSBvZiBhIHJlcGxpY2EtaWRlbnRp dHkgYXR0cmlidXRlIG9uIGEgc3Vic2NyaWJlciBsZWF2ZXMgYQpzdGFsZSBpbmRleCBsZWFm IHRoYXQgdGhlIGFwcGx5IHdvcmtlcidzIHJlcGxpY2EtaWRlbnRpdHkgbG9va3VwcyBtdXN0 IHRvbGVyYXRlCi0tIHdoaWNoIHRoZXkgZG8sIGJ1dCBvbmx5IHdoZW4gdGhlIHN1YnNjcmli ZXIncyBpbmRleGVkIGF0dHJpYnV0ZXMgZG8gbm90CmV4dGVuZCBwYXN0IHRoZSBjb2x1bW5z IHRob3NlIGxvb2t1cHMga2V5IG9uLiAgQWRkIHRoZSBwZXItc3Vic2NyaXB0aW9uCmhvdF9p bmRleGVkX29uX2FwcGx5IG9wdGlvbiAoc3ViaG90aW5kZXhlZG9uYXBwbHk6IG9mZiAvIHN1 YnNldF9vbmx5IChkZWZhdWx0KQovIGFsd2F5cykgYW5kIGhhdmUgSGVhcFVwZGF0ZUhvdEFs bG93YWJsZSBjb25zdWx0IGl0IHdoZW4gcnVubmluZyBpbiBhbiBhcHBseQp3b3JrZXIsIGNv bXBhcmluZyB0aGUgcmVsYXRpb24ncyBpbmRleGVkLWF0dHJpYnV0ZSBzZXQgYWdhaW5zdCBp dHMgcHJpbWFyeS1rZXkKYXR0cmlidXRlczogIm9mZiIgZGlzcXVhbGlmaWVzIEhPVC1pbmRl eGVkIHdoZW5ldmVyIGFueSBpbmRleGVkIGF0dHJpYnV0ZSBsaWVzCm91dHNpZGUgdGhlIHBy aW1hcnkga2V5LCAic3Vic2V0X29ubHkiIHJlcXVpcmVzIHRoZSBpbmRleGVkIGF0dHJpYnV0 ZXMgdG8gYmUgYQpzdWJzZXQgb2YgdGhlIHByaW1hcnkga2V5LCBhbmQgImFsd2F5cyIgYXBw bGllcyBubyBhcHBseS1wYXRoIGdhdGluZy4KCldpcmUgdGhlIG9wdGlvbiB0aHJvdWdoIENS RUFURS9BTFRFUiBTVUJTQ1JJUFRJT04sIHBnX3N1YnNjcmlwdGlvbiwgcGdfZHVtcCwKYW5k IHBzcWwncyBcZFJzKywgYW5kIGRvY3VtZW50IGl0IChjcmVhdGVfc3Vic2NyaXB0aW9uLCBh bHRlcl9zdWJzY3JpcHRpb24sCmNhdGFsb2dzKS4gIENvdmVyIGFwcGx5IHVuZGVyIGVhY2gg bW9kZSAoMDM5KSwgYXBwbHkgdW5kZXIgUkVQTElDQSBJREVOVElUWQpGVUxMIGFuZCBhIG5v bi1QSyBVU0lORyBJTkRFWCB3aG9zZSBrZXkgaXMgY3ljbGVkICgwNDApLCBhbmQgZGVjb2Rp bmcgb2YKSE9ULWluZGV4ZWQgdXBkYXRlIGNoYWlucyAodGVzdF9kZWNvZGluZykuCgpBdXRo b3JlZC1ieTogR3JlZyBCdXJkIDxncmVnQGJ1cmQubWU+Ci0tLQogY29udHJpYi90ZXN0X2Rl Y29kaW5nL01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICAyICstCiAuLi4vdGVzdF9kZWNv ZGluZy9leHBlY3RlZC9ob3RfaW5kZXhlZC5vdXQgICAgfCAgNTkgKysrCiBjb250cmliL3Rl c3RfZGVjb2RpbmcvbWVzb24uYnVpbGQgICAgICAgICAgICAgfCAgIDEgKwogY29udHJpYi90 ZXN0X2RlY29kaW5nL3NxbC9ob3RfaW5kZXhlZC5zcWwgICAgIHwgIDI5ICsrCiBkb2Mvc3Jj L3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAgMTYgKwogZG9jL3Ny Yy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbCAgICAgIHwgICA0ICsKIGRvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgICB8ICA1NSArKysKIHNy Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRCAgICB8ICAzNCArKwog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICAgICAgIHwgIDMwICsr CiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jICAgICAgICAgfCAgIDEg Kwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgICAx ICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8ICA0 MyArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwg IDMzICsrCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAg fCAgMTcgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCAgICAgICAgICAgICAgICAgICAg IHwgICAxICsKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAgICAg ICB8ICAgNiArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJzaW9uLmggICAgICAgICAg ICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oICAg ICAgICAgfCAgMjcgKysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIu aCAgICAgICB8ICAgOCArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlv bi5vdXQgICAgfCAxNzYgKysrKy0tLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5i dWlsZCAgICAgICAgICAgICB8ICAgMiArCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDM5X2hvdF9p bmRleGVkX2FwcGx5LnBsICAgfCA0MTYgKysrKysrKysrKysrKysrKysrCiAuLi4vdC8wNDBf aG90X2luZGV4ZWRfcmVwbGljYV9pZGVudGl0eS5wbCAgICAgfCAxMTAgKysrKysKIDIzIGZp bGVzIGNoYW5nZWQsIDk4MCBpbnNlcnRpb25zKCspLCA5MyBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBjb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvaG90X2luZGV4 ZWQub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi90ZXN0X2RlY29kaW5nL3NxbC9o b3RfaW5kZXhlZC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMzlfaG90X2luZGV4ZWRfYXBwbHkucGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wNDBfaG90X2luZGV4ZWRfcmVwbGljYV9pZGVudGl0eS5w bAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9NYWtlZmlsZSBiL2NvbnRy aWIvdGVzdF9kZWNvZGluZy9NYWtlZmlsZQppbmRleCAwMTExMTI0Mzk5YS4uODAwMjE2YjJh ZTQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9NYWtlZmlsZQorKysgYi9j b250cmliL3Rlc3RfZGVjb2RpbmcvTWFrZWZpbGUKQEAgLTUsNyArNSw3IEBAIFBHRklMRURF U0MgPSAidGVzdF9kZWNvZGluZyAtIGV4YW1wbGUgb2YgYSBsb2dpY2FsIGRlY29kaW5nIG91 dHB1dCBwbHVnaW4iCiAKIFJFR1JFU1MgPSBkZGwgeGFjdCByZXdyaXRlIHRvYXN0IHBlcm1p c3Npb25zIGRlY29kaW5nX2luX3hhY3QgXAogCWRlY29kaW5nX2ludG9fcmVsIGJpbmFyeSBw cmVwYXJlZCByZXBsb3JpZ2luIHRpbWUgbWVzc2FnZXMgXAotCXJlcGFjayBzcGlsbCBzbG90 IHRydW5jYXRlIHN0cmVhbSBzdGF0cyB0d29waGFzZSB0d29waGFzZV9zdHJlYW0KKwlyZXBh Y2sgc3BpbGwgc2xvdCB0cnVuY2F0ZSBzdHJlYW0gc3RhdHMgdHdvcGhhc2UgdHdvcGhhc2Vf c3RyZWFtIGhvdF9pbmRleGVkCiBJU09MQVRJT04gPSBteGFjdCBkZWxheWVkX3N0YXJ0dXAg b25kaXNrX3N0YXJ0dXAgY29uY3VycmVudF9kZGxfZG1sIFwKIAlvbGRlc3RfeG1pbiBzbmFw c2hvdF90cmFuc2ZlciBzdWJ4YWN0X3dpdGhvdXRfdG9wIGNvbmN1cnJlbnRfc3RyZWFtIFwK IAl0d29waGFzZV9zbmFwc2hvdCBzbG90X2NyZWF0aW9uX2Vycm9yIGNhdGFsb2dfY2hhbmdl X3NuYXBzaG90IFwKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3Rl ZC9ob3RfaW5kZXhlZC5vdXQgYi9jb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvaG90 X2luZGV4ZWQub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4x ZTIxODZmZGE1NgotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9l eHBlY3RlZC9ob3RfaW5kZXhlZC5vdXQKQEAgLTAsMCArMSw1OSBAQAorLS0gTG9naWNhbCBk ZWNvZGluZyBvZiBIT1QtaW5kZXhlZCBVUERBVEVzLiAgQSBIT1QtaW5kZXhlZCB1cGRhdGUg aXMgYW4KKy0tIG9yZGluYXJ5IGhlYXAgdXBkYXRlIGF0IHRoZSBXQUwgbGV2ZWwgKHRoZSBu ZXcgdmVyc2lvbiBpcyBsb2dnZWQgaW4gZnVsbCksCistLSBzbyBpdCBtdXN0IGRlY29kZSBl eGFjdGx5IGxpa2UgYW55IG90aGVyIHVwZGF0ZS4gIEV4ZXJjaXNlIGEgY2hhaW4gb2YKKy0t IEhPVC1pbmRleGVkIHVwZGF0ZXMgdW5kZXIgUkVQTElDQSBJREVOVElUWSBGVUxMIHNvIHRo ZSBkZWNvZGVkIG9sZCB0dXBsZSBhbmQKKy0tIG5ldyB0dXBsZSBjYW4gYm90aCBiZSBjaGVj a2VkLgorU0VUIHN5bmNocm9ub3VzX2NvbW1pdCA9IG9uOworU0VMRUNUICdpbml0JyBGUk9N IHBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJ3JlZ3Jlc3Npb25fc2xvdCcs ICd0ZXN0X2RlY29kaW5nJyk7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgaW5pdAorKDEg cm93KQorCitDUkVBVEUgVEFCTEUgaGlfZGVjb2RlIChpZCBpbnQgUFJJTUFSWSBLRVksIGEg aW50LCBiIGludCkgV0lUSCAoZmlsbGZhY3RvciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9k ZWNvZGVfYSBPTiBoaV9kZWNvZGUgKGEpOworQ1JFQVRFIElOREVYIGhpX2RlY29kZV9iIE9O IGhpX2RlY29kZSAoYik7CitBTFRFUiBUQUJMRSBoaV9kZWNvZGUgUkVQTElDQSBJREVOVElU WSBGVUxMOworSU5TRVJUIElOVE8gaGlfZGVjb2RlIFZBTFVFUyAoMSwgMTAsIDEwMCk7Cist LSBlYWNoIHVwZGF0ZSBjaGFuZ2VzIG9uZSBpbmRleGVkIGNvbHVtbiwgc28gZWFjaCBzdGF5 cyBIT1QtaW5kZXhlZAorVVBEQVRFIGhpX2RlY29kZSBTRVQgYSA9IDExIFdIRVJFIGlkID0g MTsKK1VQREFURSBoaV9kZWNvZGUgU0VUIGIgPSAxMDEgV0hFUkUgaWQgPSAxOworVVBEQVRF IGhpX2RlY29kZSBTRVQgYSA9IDEyIFdIRVJFIGlkID0gMTsKKy0tIGN5Y2xlIGEgYXdheSBh bmQgYmFjayAoQUJBKSBhbmQgdGhlbiBkZWxldGUKK1VQREFURSBoaV9kZWNvZGUgU0VUIGEg PSA5OSBXSEVSRSBpZCA9IDE7CitVUERBVEUgaGlfZGVjb2RlIFNFVCBhID0gMTIgV0hFUkUg aWQgPSAxOworREVMRVRFIEZST00gaGlfZGVjb2RlIFdIRVJFIGlkID0gMTsKK1NFTEVDVCBk YXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3Qn LCBOVUxMLCBOVUxMLAorICAgICAgICdpbmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5 LXhhY3RzJywgJzEnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBCRUdJTgorIHRhYmxlIHB1YmxpYy5oaV9k ZWNvZGU6IElOU0VSVDogaWRbaW50ZWdlcl06MSBhW2ludGVnZXJdOjEwIGJbaW50ZWdlcl06 MTAwCisgQ09NTUlUCisgQkVHSU4KKyB0YWJsZSBwdWJsaWMuaGlfZGVjb2RlOiBVUERBVEU6 IG9sZC1rZXk6IGlkW2ludGVnZXJdOjEgYVtpbnRlZ2VyXToxMCBiW2ludGVnZXJdOjEwMCBu ZXctdHVwbGU6IGlkW2ludGVnZXJdOjEgYVtpbnRlZ2VyXToxMSBiW2ludGVnZXJdOjEwMAor IENPTU1JVAorIEJFR0lOCisgdGFibGUgcHVibGljLmhpX2RlY29kZTogVVBEQVRFOiBvbGQt a2V5OiBpZFtpbnRlZ2VyXToxIGFbaW50ZWdlcl06MTEgYltpbnRlZ2VyXToxMDAgbmV3LXR1 cGxlOiBpZFtpbnRlZ2VyXToxIGFbaW50ZWdlcl06MTEgYltpbnRlZ2VyXToxMDEKKyBDT01N SVQKKyBCRUdJTgorIHRhYmxlIHB1YmxpYy5oaV9kZWNvZGU6IFVQREFURTogb2xkLWtleTog aWRbaW50ZWdlcl06MSBhW2ludGVnZXJdOjExIGJbaW50ZWdlcl06MTAxIG5ldy10dXBsZTog aWRbaW50ZWdlcl06MSBhW2ludGVnZXJdOjEyIGJbaW50ZWdlcl06MTAxCisgQ09NTUlUCisg QkVHSU4KKyB0YWJsZSBwdWJsaWMuaGlfZGVjb2RlOiBVUERBVEU6IG9sZC1rZXk6IGlkW2lu dGVnZXJdOjEgYVtpbnRlZ2VyXToxMiBiW2ludGVnZXJdOjEwMSBuZXctdHVwbGU6IGlkW2lu dGVnZXJdOjEgYVtpbnRlZ2VyXTo5OSBiW2ludGVnZXJdOjEwMQorIENPTU1JVAorIEJFR0lO CisgdGFibGUgcHVibGljLmhpX2RlY29kZTogVVBEQVRFOiBvbGQta2V5OiBpZFtpbnRlZ2Vy XToxIGFbaW50ZWdlcl06OTkgYltpbnRlZ2VyXToxMDEgbmV3LXR1cGxlOiBpZFtpbnRlZ2Vy XToxIGFbaW50ZWdlcl06MTIgYltpbnRlZ2VyXToxMDEKKyBDT01NSVQKKyBCRUdJTgorIHRh YmxlIHB1YmxpYy5oaV9kZWNvZGU6IERFTEVURTogaWRbaW50ZWdlcl06MSBhW2ludGVnZXJd OjEyIGJbaW50ZWdlcl06MTAxCisgQ09NTUlUCisoMjEgcm93cykKKworU0VMRUNUIHBnX2Ry b3BfcmVwbGljYXRpb25fc2xvdCgncmVncmVzc2lvbl9zbG90Jyk7CisgcGdfZHJvcF9yZXBs aWNhdGlvbl9zbG90IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK KworRFJPUCBUQUJMRSBoaV9kZWNvZGU7CmRpZmYgLS1naXQgYS9jb250cmliL3Rlc3RfZGVj b2RpbmcvbWVzb24uYnVpbGQgYi9jb250cmliL3Rlc3RfZGVjb2RpbmcvbWVzb24uYnVpbGQK aW5kZXggYWM2NTU4NTNkMjYuLjkxNzY1Y2EwZTcyIDEwMDY0NAotLS0gYS9jb250cmliL3Rl c3RfZGVjb2RpbmcvbWVzb24uYnVpbGQKKysrIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL21l c29uLmJ1aWxkCkBAIC00Miw2ICs0Miw3IEBAIHRlc3RzICs9IHsKICAgICAgICdzdGF0cycs CiAgICAgICAndHdvcGhhc2UnLAogICAgICAgJ3R3b3BoYXNlX3N0cmVhbScsCisgICAgICAn aG90X2luZGV4ZWQnLAogICAgIF0sCiAgICAgJ3JlZ3Jlc3NfYXJncyc6IFsKICAgICAgICct LXRlbXAtY29uZmlnJywgZmlsZXMoJ2xvZ2ljYWwuY29uZicpLApkaWZmIC0tZ2l0IGEvY29u dHJpYi90ZXN0X2RlY29kaW5nL3NxbC9ob3RfaW5kZXhlZC5zcWwgYi9jb250cmliL3Rlc3Rf ZGVjb2Rpbmcvc3FsL2hvdF9pbmRleGVkLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uMDVkN2QwOTFiNjIKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmli L3Rlc3RfZGVjb2Rpbmcvc3FsL2hvdF9pbmRleGVkLnNxbApAQCAtMCwwICsxLDI5IEBACist LSBMb2dpY2FsIGRlY29kaW5nIG9mIEhPVC1pbmRleGVkIFVQREFURXMuICBBIEhPVC1pbmRl eGVkIHVwZGF0ZSBpcyBhbgorLS0gb3JkaW5hcnkgaGVhcCB1cGRhdGUgYXQgdGhlIFdBTCBs ZXZlbCAodGhlIG5ldyB2ZXJzaW9uIGlzIGxvZ2dlZCBpbiBmdWxsKSwKKy0tIHNvIGl0IG11 c3QgZGVjb2RlIGV4YWN0bHkgbGlrZSBhbnkgb3RoZXIgdXBkYXRlLiAgRXhlcmNpc2UgYSBj aGFpbiBvZgorLS0gSE9ULWluZGV4ZWQgdXBkYXRlcyB1bmRlciBSRVBMSUNBIElERU5USVRZ IEZVTEwgc28gdGhlIGRlY29kZWQgb2xkIHR1cGxlIGFuZAorLS0gbmV3IHR1cGxlIGNhbiBi b3RoIGJlIGNoZWNrZWQuCitTRVQgc3luY2hyb25vdXNfY29tbWl0ID0gb247CisKK1NFTEVD VCAnaW5pdCcgRlJPTSBwZ19jcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KCdyZWdy ZXNzaW9uX3Nsb3QnLCAndGVzdF9kZWNvZGluZycpOworCitDUkVBVEUgVEFCTEUgaGlfZGVj b2RlIChpZCBpbnQgUFJJTUFSWSBLRVksIGEgaW50LCBiIGludCkgV0lUSCAoZmlsbGZhY3Rv ciA9IDUwKTsKK0NSRUFURSBJTkRFWCBoaV9kZWNvZGVfYSBPTiBoaV9kZWNvZGUgKGEpOwor Q1JFQVRFIElOREVYIGhpX2RlY29kZV9iIE9OIGhpX2RlY29kZSAoYik7CitBTFRFUiBUQUJM RSBoaV9kZWNvZGUgUkVQTElDQSBJREVOVElUWSBGVUxMOworCitJTlNFUlQgSU5UTyBoaV9k ZWNvZGUgVkFMVUVTICgxLCAxMCwgMTAwKTsKKy0tIGVhY2ggdXBkYXRlIGNoYW5nZXMgb25l IGluZGV4ZWQgY29sdW1uLCBzbyBlYWNoIHN0YXlzIEhPVC1pbmRleGVkCitVUERBVEUgaGlf ZGVjb2RlIFNFVCBhID0gMTEgV0hFUkUgaWQgPSAxOworVVBEQVRFIGhpX2RlY29kZSBTRVQg YiA9IDEwMSBXSEVSRSBpZCA9IDE7CitVUERBVEUgaGlfZGVjb2RlIFNFVCBhID0gMTIgV0hF UkUgaWQgPSAxOworLS0gY3ljbGUgYSBhd2F5IGFuZCBiYWNrIChBQkEpIGFuZCB0aGVuIGRl bGV0ZQorVVBEQVRFIGhpX2RlY29kZSBTRVQgYSA9IDk5IFdIRVJFIGlkID0gMTsKK1VQREFU RSBoaV9kZWNvZGUgU0VUIGEgPSAxMiBXSEVSRSBpZCA9IDE7CitERUxFVEUgRlJPTSBoaV9k ZWNvZGUgV0hFUkUgaWQgPSAxOworCitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xv dF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwKKyAgICAgICAn aW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJyk7CisKK1NFTEVD VCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ3JlZ3Jlc3Npb25fc2xvdCcpOworRFJPUCBU QUJMRSBoaV9kZWNvZGU7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dt bCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDRiNDc0YzEzOTE3Li40Yzlh YmE3MmJhNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTg3MjcsNiArODcyNywyMiBAQCBTQ1JB TS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFj ZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwv cm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9l bnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3Rm aWVsZD5zdWJob3RpbmRleGVkb25hcHBseTwvc3RydWN0ZmllbGQ+IDx0eXBlPmNoYXI8L3R5 cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBHYXRpbmcgbW9kZSBm b3IgdGhlIEhPVC1pbmRleGVkIGFwcGx5IHBhdGguICBDb3JyZXNwb25kcyB0byB0aGUKKyAg ICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXBhcmFtcy13aXRo LWhvdC1pbmRleGVkLW9uLWFwcGx5Ij48bGl0ZXJhbD5ob3RfaW5kZXhlZF9vbl9hcHBseTwv bGl0ZXJhbD48L2xpbms+CisgICAgICAgc3Vic2NyaXB0aW9uIG9wdGlvbjoKKyAgICAgICA8 aXRlbWl6ZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGxpdGVyYWw+bzwvbGl0 ZXJhbD4gPSBvZmY8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPjxwYXJh PjxsaXRlcmFsPnM8L2xpdGVyYWw+ID0gc3Vic2V0X29ubHkgKGRlZmF1bHQpPC9wYXJhPjwv bGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT48cGFyYT48bGl0ZXJhbD5hPC9saXRlcmFs PiA9IGFsd2F5czwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgIDwvaXRlbWl6ZWRsaXN0Pgor ICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCiAgICAgIDxyb3c+CiAgICAg ICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1u X2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJzZXJ2ZXI8L3N0cnVjdGZp ZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Fs dGVyX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3Jp cHRpb24uc2dtbAppbmRleCBlNGYwYjZiMTZjNy4uMzQyM2M1ZTdlZDEgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbApAQCAtMjk1LDYgKzI5NSwxMCBA QCBBTFRFUiBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5h bWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPAogICAgICAgPGxpbmsgbGlua2VuZD0ic3Fs LWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1yZXRhaW4tZGVhZC10dXBsZXMiPjxs aXRlcmFsPnJldGFpbl9kZWFkX3R1cGxlczwvbGl0ZXJhbD48L2xpbms+LAogICAgICAgPGxp bmsgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1tYXgtcmV0 ZW50aW9uLWR1cmF0aW9uIj48bGl0ZXJhbD5tYXhfcmV0ZW50aW9uX2R1cmF0aW9uPC9saXRl cmFsPjwvbGluaz4sIGFuZAogICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNj cmlwdGlvbi1wYXJhbXMtd2l0aC13YWwtcmVjZWl2ZXItdGltZW91dCI+PGxpdGVyYWw+d2Fs X3JlY2VpdmVyX3RpbWVvdXQ8L2xpdGVyYWw+PC9saW5rPi4KKyAgICAgIFRoZQorICAgICAg PGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1ob3Qt aW5kZXhlZC1vbi1hcHBseSI+PGxpdGVyYWw+aG90X2luZGV4ZWRfb25fYXBwbHk8L2xpdGVy YWw+PC9saW5rPgorICAgICAgb3B0aW9uIGNhbiBhbHNvIGJlIGFsdGVyZWQ7IHRoZSBuZXcg dmFsdWUgdGFrZXMgZWZmZWN0IGF0IHRoZSBhcHBseQorICAgICAgd29ya2VyJ3MgbmV4dCBj YXRhbG9nIHJlbG9hZC4KICAgICAgIE9ubHkgYSBzdXBlcnVzZXIgY2FuIHNldCA8bGl0ZXJh bD5wYXNzd29yZF9yZXF1aXJlZCA9IGZhbHNlPC9saXRlcmFsPi4KICAgICAgPC9wYXJhPgog CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IDA3 ZDViMWJkNzdjLi43ZjEyZWVkOTYyNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf c3Vic2NyaXB0aW9uLnNnbWwKQEAgLTYwMiw2ICs2MDIsNjEgQEAgQ1JFQVRFIFNVQlNDUklQ VElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Vic2NyaXB0aW9uX25hbWU8 L3JlcGxhY2VhYmwKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAg ICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNy ZWF0ZXN1YnNjcmlwdGlvbi1wYXJhbXMtd2l0aC1ob3QtaW5kZXhlZC1vbi1hcHBseSI+Cisg ICAgICAgIDx0ZXJtPjxsaXRlcmFsPmhvdF9pbmRleGVkX29uX2FwcGx5PC9saXRlcmFsPiAo PHR5cGU+dGV4dDwvdHlwZT4pPC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAg ICA8cGFyYT4KKyAgICAgICAgICBDb250cm9scyB3aGV0aGVyIHRoZSBzdWJzY3JpcHRpb24n cyBhcHBseSB3b3JrZXIgbWF5IHRha2UgdGhlCisgICAgICAgICAgSE9ULWluZGV4ZWQgdXBk YXRlIHBhdGggd2hlbiBhbiA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+IHJlcGxpY2F0ZWQK KyAgICAgICAgICBmcm9tIHRoZSBwdWJsaXNoZXIgdG91Y2hlcyBhbiBpbmRleGVkIGF0dHJp YnV0ZS4gIEJlY2F1c2UgdGhlCisgICAgICAgICAgc3Vic2NyaWJlcidzIGluZGV4IHNldCBt YXkgZGlmZmVyIGZyb20gdGhlIHB1Ymxpc2hlcidzLCBhbgorICAgICAgICAgIHVuY29uc3Ry YWluZWQgSE9ULWluZGV4ZWQgZGVjaXNpb24gb24gdGhlIGFwcGx5IHBhdGggY2FuIHByb2R1 Y2UgYQorICAgICAgICAgIGhlYXAgY2hhaW4gd2hvc2UgaW5kZXggc3RhdGUgZGlzYWdyZWVz IHdpdGggdGhlIHVwc3RyZWFtIHJvdy4gIFRoZQorICAgICAgICAgIG9wdGlvbiByZXN0cmlj dHMgd2hlbiB0aGUgYXBwbHkgd29ya2VyIGlzIGFsbG93ZWQgdG8gdGFrZSB0aGF0IHBhdGgu CisgICAgICAgICA8L3BhcmE+CisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBBY2NlcHRl ZCB2YWx1ZXMgYXJlOgorICAgICAgICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICAgICAgIDx2 YXJsaXN0ZW50cnk+CisgICAgICAgICAgICA8dGVybT48bGl0ZXJhbD5vZmY8L2xpdGVyYWw+ PC90ZXJtPgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgIDxwYXJhPgor ICAgICAgICAgICAgICBGb3JjZSBub24tSE9UIG9uIGFwcGx5IHdoZW5ldmVyIHRoZSBzdWJz Y3JpYmVyIGhhcyBhbnkgaW5kZXhlZAorICAgICAgICAgICAgICBhdHRyaWJ1dGUgYmV5b25k IHRoZSBwcmltYXJ5IGtleS4gIFRoaXMgbWF0Y2hlcyB0aGUgY29uc2VydmF0aXZlCisgICAg ICAgICAgICAgIHByZS1leGlzdGluZyBiZWhhdmlvdXIuCisgICAgICAgICAgICAgPC9wYXJh PgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+ CisgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICA8dGVybT48bGl0ZXJh bD5zdWJzZXRfb25seTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+ CisgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIEFsbG93IHRoZSBIT1QtaW5k ZXhlZCBhcHBseSBwYXRoIHdoZW4gdGhlIHN1YnNjcmliZXIncworICAgICAgICAgICAgICBp bmRleGVkLWF0dHIgc2V0IGlzIGEgc3Vic2V0IG9mIGl0cyBwcmltYXJ5LWtleSBhdHRycyAo d2hpY2gKKyAgICAgICAgICAgICAgaW5jbHVkZXMgdGhlIG5vLXNlY29uZGFyeS1pbmRleCBj YXNlKS4gIFRoaXMgaXMgdGhlIGRlZmF1bHQgYW5kCisgICAgICAgICAgICAgIGNhcHR1cmVz IHRoZSBjb21tb24gcmVwbGljYXRpb24tcmVhZHkgc2NoZW1hIHNoYXBlIHdoaWxlIHN0YXlp bmcKKyAgICAgICAgICAgICAgc2FmZSB3aGVuIHRoZSBzdWJzY3JpYmVyIGFkZHMgaW5kZXhl cyB0aGUgcHVibGlzaGVyIGRvZXMgbm90CisgICAgICAgICAgICAgIGhhdmUuCisgICAgICAg ICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgPC92 YXJsaXN0ZW50cnk+CisgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICA8 dGVybT48bGl0ZXJhbD5hbHdheXM8L2xpdGVyYWw+PC90ZXJtPgorICAgICAgICAgICAgPGxp c3RpdGVtPgorICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICBVbmNvbmRpdGlv bmFsIEhPVC1pbmRleGVkIGVsaWdpYmlsaXR5IG9uIGFwcGx5LiAgVGhlIG9wZXJhdG9yCisg ICAgICAgICAgICAgIHRha2VzIHJlc3BvbnNpYmlsaXR5IGZvciBrZWVwaW5nIHRoZSBzdWJz Y3JpYmVyJ3MgaW5kZXhlZC1hdHRyCisgICAgICAgICAgICAgIHNldCBjb21wYXRpYmxlIHdp dGggdGhlIHB1Ymxpc2hlcidzOyBkaXZlcmdlbnQgc2NoZW1hcyBjYW4KKyAgICAgICAgICAg ICAgcHJvZHVjZSBzcHVyaW91cyBkdXBsaWNhdGUta2V5IGNvbmZsaWN0cyBmb3Igc3Vic2Vx dWVudAorICAgICAgICAgICAgICBpbnNlcnRzIG9uIHRoZSBzdWJzY3JpYmVyLgorICAgICAg ICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgIDwv dmFybGlzdGVudHJ5PgorICAgICAgICAgIDwvdmFyaWFibGVsaXN0PgorICAgICAgICAgPC9w YXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAg ICAgPC92YXJpYWJsZWxpc3Q+PC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxp c3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5I T1QtSU5ERVhFRCBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhF RAppbmRleCAyZTVlNWY0YTA4MS4uNTU2MTQ5OGQ5NWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QtSU5ERVhFRAorKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9SRUFETUUuSE9ULUlOREVYRUQKQEAgLTI1Nyw2ICsyNTcsNDAgQEAgcGVy LWluZGV4IHJlY2hlY2sgb3V0Y29tZXM7IGFuZCBwZ19yZWxhdGlvbl9ob3RfaW5kZXhlZF9z dGF0cygpIHJlcG9ydHMKIHBlci1yZWxhdGlvbiBIT1QtaW5kZXhlZCBjaGFpbiBjb3VudHMu CiAKIAorTG9naWNhbCByZXBsaWNhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBIEhP VC1pbmRleGVkIHVwZGF0ZSBvZiBhIHJlcGxpY2EtaWRlbnRpdHkgYXR0cmlidXRlIG9uIGEg c3Vic2NyaWJlciBsZWF2ZXMgYQorc3RhbGUgaW5kZXggbGVhZjsgdGhlIGFwcGx5IHdvcmtl cidzIHJlcGxpY2EtaWRlbnRpdHkgbG9va3VwcyB0b2xlcmF0ZSB0aGF0Citvbmx5IHdoZW4g dGhlIGluZGV4ZWQgYXR0cmlidXRlcyBhcmUgY292ZXJlZCBieSB0aGUgcmVwbGljYSBpZGVu dGl0eS4gIFRoZQorcGVyLXN1YnNjcmlwdGlvbiBob3RfaW5kZXhlZF9vbl9hcHBseSBvcHRp b24gKHBnX3N1YnNjcmlwdGlvbi5zdWJob3RpbmRleGVkb25hcHBseSwKK29mZiAvIHN1YnNl dF9vbmx5IC8gYWx3YXlzOyBzdWJzZXRfb25seSBpcyB0aGUgZGVmYXVsdCkgY29udHJvbHMg dGhpczoKK0hlYXBVcGRhdGVIb3RBbGxvd2FibGUgY29uc3VsdHMgR2V0SG90SW5kZXhlZEFw cGx5TW9kZSBvbiB0aGUgYXBwbHkgcGF0aCBhbmQKK2ZhbGxzIGJhY2sgdG8gbm9uLUhPVCB3 aGVuIHRoZSBpbmRleGVkIGF0dHJpYnV0ZXMgYXJlIG5vdCBleGFjdGx5IHRoZSBwcmltYXJ5 CitrZXkgKG9mZikgb3Igbm90IGEgc3Vic2V0IG9mIGl0IChzdWJzZXRfb25seSkuCisKKwor UmVjb3ZlcnkKKy0tLS0tLS0tCisKK0hPVC1pbmRleGVkIHVwZGF0ZXMgYW5kIHRoZSBwcnVu ZS9jb2xsYXBzZSB1c2UgdGhlIGV4aXN0aW5nIGhlYXAgVVBEQVRFIGFuZAorcHJ1bmUvZnJl ZXplIFdBTCByZWNvcmRzLCBzbyBjcmFzaCByZWNvdmVyeSByZXBsYXlzIHRoZW0gd2l0aCBu byBuZXcgcmVjb3JkCit0eXBlcy4gIHNyYy90ZXN0L3JlY292ZXJ5L3QvMDU0X2hvdF9pbmRl eGVkX3JlY292ZXJ5LnBsIGJ1aWxkcyBhIGNoYWluLAorY3Jhc2hlcyB3aXRob3V0IGEgY2hl Y2twb2ludCAoZm9yY2luZyBXQUwgcmVkbyksIGFuZCB2ZXJpZmllcyB0aGUgY2hhaW4gd2Fs aywKK3ZlcmlmeV9oZWFwYW0sIGFuZCB2YWN1dW0gcmVjbGFtYXRpb24gYWZ0ZXIgcmVzdGFy dCwgd2l0aAord2FsX2NvbnNpc3RlbmN5X2NoZWNraW5nID0gJ2FsbCcgY29tcGFyaW5nIGVh Y2ggcmVwbGF5ZWQgcGFnZSB0byBpdHMgRlBJLgorCisKK0FkdmVyc2FyaWFsIHRlc3RzCist LS0tLS0tLS0tLS0tLS0tLQorCitzcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvaG90X2luZGV4 ZWRfYWR2ZXJzYXJpYWwuc3BlYyBleGVyY2lzZXMgdGhlIGNhc2VzIHRoZQoraW52YXJpYW50 IG11c3Qgc2F0aXNmeSB1bmRlciBjb25jdXJyZW5jeToga2V5IGN5Y2xpbmcgKFgtPlktPlgp LCBhYm9ydGVkCitIT1QtaW5kZXhlZCB1cGRhdGVzLCBjb25jdXJyZW50IHVuaXF1ZSBpbnNl cnRzIGFnYWluc3QgYSBmcmVlZC90YWtlbiBrZXksCitzbmFwc2hvdC1zYWZlIHJlY2xhaW0g b2Ygc3RhbGUgbGVhdmVzLCBhbmQgcmVhZGVyIGNvbnNpc3RlbmN5IGFjcm9zcyBhCitjb25j dXJyZW50IHBydW5lL2NvbGxhcHNlLgorCisKIEFwcGVuZGljZXMKIC0tLS0tLS0tLS0KIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCA5MGE1YWFhNTFiMy4uNzY2ZjQzZTQ1 YTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC00NTAxLDYgKzQ1MDEsMzYg QEAgSGVhcFVwZGF0ZUhvdEFsbG93YWJsZShSZWxhdGlvbiByZWxhdGlvbiwgY29uc3QgQml0 bWFwc2V0ICptb2RpZmllZF9pZHhfYXR0cnMpCiAJYWxsX2lkeF9hdHRycyA9IFJlbGF0aW9u R2V0SW5kZXhBdHRyQml0bWFwTm9Db3B5KHJlbGF0aW9uLAogCQkJCQkJCQkJCQkgICBJTkRF WF9BVFRSX0JJVE1BUF9JTkRFWEVEKTsKIAorCS8qCisJICogVGhlIGxvZ2ljYWwtcmVwbGlj YXRpb24gYXBwbHkgcGF0aCBnYXRlcyBIT1QtaW5kZXhlZCB1cGRhdGVzIG9uIHRoZQorCSAq IHBlci1zdWJzY3JpcHRpb24gaG90X2luZGV4ZWRfb25fYXBwbHkgb3B0aW9uLiAgQSBIT1Qt aW5kZXhlZCB1cGRhdGUgb2YKKwkgKiBhIHJlcGxpY2EtaWRlbnRpdHkgYXR0cmlidXRlIGxl YXZlcyBhIHN0YWxlIGluZGV4IGxlYWY7IHRoZSBhcHBseQorCSAqIHdvcmtlcidzIHJlcGxp Y2EtaWRlbnRpdHkgbG9va3VwcyBjb3BlIHdpdGggdGhhdCAoc2VlCisJICogUmVsYXRpb25G aW5kUmVwbFR1cGxlQnlJbmRleCksIGJ1dCBvbmx5IHdoZW4gdGhlIGluZGV4ZWQgYXR0cmli dXRlcyBhcmUKKwkgKiBhIHN1YnNldCBvZiB0aGUgcmVwbGljYSBpZGVudGl0eS4gICJvZmYi IGRpc3F1YWxpZmllcyB3aGVuZXZlciB0aGUKKwkgKiBzdWJzY3JpYmVyIGhhcyBhbnkgaW5k ZXhlZCBhdHRyaWJ1dGUgYmV5b25kIGl0cyBQSzsgInN1YnNldF9vbmx5IiAodGhlCisJICog ZGVmYXVsdCkgcmVxdWlyZXMgdGhlIGluZGV4ZWQgYXR0cmlidXRlcyB0byBiZSBhIHN1YnNl dCBvZiB0aGUgUEs7CisJICogImFsd2F5cyIgYXBwbGllcyBubyBhcHBseS1wYXRoIGdhdGlu Zy4KKwkgKi8KKwlpZiAoSXNMb2dpY2FsV29ya2VyKCkpCisJeworCQljaGFyCQltb2RlID0g R2V0SG90SW5kZXhlZEFwcGx5TW9kZSgpOworCQljb25zdCBCaXRtYXBzZXQgICpwa19hdHRy cyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwTm9Db3B5KHJlbGF0aW9uLAorCQkJCQkJ CQkJCQkgIElOREVYX0FUVFJfQklUTUFQX1BSSU1BUllfS0VZKTsKKworCQlpZiAobW9kZSA9 PSBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEX09GRikKKwkJeworCQkJaWYgKCFibXNfZXF1YWwo YWxsX2lkeF9hdHRycywgcGtfYXR0cnMpKQorCQkJCXJldHVybiBIRUFQX1VQREFURV9BTExf SU5ERVhFUzsKKwkJfQorCQllbHNlIGlmIChtb2RlID09IExPR0lDQUxSRVBfSE9UX0lOREVY RURfU1VCU0VUX09OTFkpCisJCXsKKwkJCWlmICghYm1zX2lzX3N1YnNldChhbGxfaWR4X2F0 dHJzLCBwa19hdHRycykpCisJCQkJcmV0dXJuIEhFQVBfVVBEQVRFX0FMTF9JTkRFWEVTOwor CQl9CisJCS8qIExPR0lDQUxSRVBfSE9UX0lOREVYRURfQUxXQVlTOiBubyBhcHBseS1wYXRo IGdhdGluZy4gKi8KKwl9CisKIAkvKgogCSAqIFN5c3RlbSBjYXRhbG9ncyBrZWVwIGNsYXNz aWMgSE9UIChhbiBVUERBVEUgdG91Y2hpbmcgbm8gbm9uLXN1bW1hcml6aW5nCiAJICogaW5k ZXhlZCBhdHRyaWJ1dGUgYWxyZWFkeSByZXR1cm5lZCBIRUFQX0hFQVBfT05MWV9VUERBVEUg YWJvdmUpLCBidXQgZG8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vi c2NyaXB0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCmlu ZGV4IGI1Y2IzMDFkYjg4Li5mNTYyNjhlZGJkYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3Bn X3N1YnNjcmlwdGlvbi5jCkBAIC0xMzIsNiArMTMyLDcgQEAgR2V0U3Vic2NyaXB0aW9uKE9p ZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rLCBib29sIGNvbm5pbmZvX25lZWRlZCwKIAlzdWIt PnJldGFpbmRlYWR0dXBsZXMgPSBzdWJmb3JtLT5zdWJyZXRhaW5kZWFkdHVwbGVzOwogCXN1 Yi0+bWF4cmV0ZW50aW9uID0gc3ViZm9ybS0+c3VibWF4cmV0ZW50aW9uOwogCXN1Yi0+cmV0 ZW50aW9uYWN0aXZlID0gc3ViZm9ybS0+c3VicmV0ZW50aW9uYWN0aXZlOworCXN1Yi0+aG90 aW5kZXhlZG1vZGUgPSBzdWJmb3JtLT5zdWJob3RpbmRleGVkb25hcHBseTsKIAogCWlmIChj b25uaW5mb19uZWVkZWQpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9z eXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs CmluZGV4IDRlYTFmYzAwNjU5Li4zN2VkYmViMDZmZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv c3lzdGVtX3ZpZXdzLnNxbApAQCAtMTUzMSw2ICsxNTMxLDcgQEAgR1JBTlQgU0VMRUNUIChv aWQsIHN1YmRiaWQsIHN1YnNraXBsc24sIHN1Ym5hbWUsIHN1Ym93bmVyLCBzdWJlbmFibGVk LAogICAgICAgICAgICAgICBzdWJiaW5hcnksIHN1YnN0cmVhbSwgc3VidHdvcGhhc2VzdGF0 ZSwgc3ViZGlzYWJsZW9uZXJyLAogCQkJICBzdWJwYXNzd29yZHJlcXVpcmVkLCBzdWJydW5h c293bmVyLCBzdWJmYWlsb3ZlciwKICAgICAgICAgICAgICAgc3VicmV0YWluZGVhZHR1cGxl cywgc3VibWF4cmV0ZW50aW9uLCBzdWJyZXRlbnRpb25hY3RpdmUsCisgICAgICAgICAgICAg IHN1YmhvdGluZGV4ZWRvbmFwcGx5LAogICAgICAgICAgICAgICBzdWJzZXJ2ZXIsIHN1YnNs b3RuYW1lLCBzdWJzeW5jY29tbWl0LCBzdWJ3YWxyY3Z0aW1lb3V0LAogICAgICAgICAgICAg ICBzdWJwdWJsaWNhdGlvbnMsIHN1Ym9yaWdpbikKICAgICBPTiBwZ19zdWJzY3JpcHRpb24g VE8gcHVibGljOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0 aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCmlu ZGV4IGVlMDZhNzI2ZjQyLi4zNzlmMGQ4MzUyMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtNzksNiArNzksNyBAQAogI2RlZmluZSBTVUJPUFRf V0FMX1JFQ0VJVkVSX1RJTUVPVVQJCQkweDAwMDEwMDAwCiAjZGVmaW5lIFNVQk9QVF9MU04J CQkJCTB4MDAwMjAwMDAKICNkZWZpbmUgU1VCT1BUX09SSUdJTgkJCQkweDAwMDQwMDAwCisj ZGVmaW5lIFNVQk9QVF9IT1RfSU5ERVhFRF9PTl9BUFBMWQkweDAwMDgwMDAwCiAKIC8qIGNo ZWNrIGlmIHRoZSAndmFsJyBoYXMgJ2JpdHMnIHNldCAqLwogI2RlZmluZSBJc1NldCh2YWws IGJpdHMpICAoKCh2YWwpICYgKGJpdHMpKSA9PSAoYml0cykpCkBAIC0xMDksNiArMTEwLDcg QEAgdHlwZWRlZiBzdHJ1Y3QgU3ViT3B0cwogCWNoYXIJICAgKm9yaWdpbjsKIAlYTG9nUmVj UHRyCWxzbjsKIAljaGFyCSAgICp3YWxfcmVjZWl2ZXJfdGltZW91dDsKKwljaGFyCQlob3Rp bmRleGVkbW9kZTsKIH0gU3ViT3B0czsKIAogLyoKQEAgLTE5Niw2ICsxOTgsOCBAQCBwYXJz ZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnN0bXRf b3B0aW9ucywKIAkJb3B0cy0+bWF4cmV0ZW50aW9uID0gMDsKIAlpZiAoSXNTZXQoc3VwcG9y dGVkX29wdHMsIFNVQk9QVF9PUklHSU4pKQogCQlvcHRzLT5vcmlnaW4gPSBwc3RyZHVwKExP R0lDQUxSRVBfT1JJR0lOX0FOWSk7CisJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJP UFRfSE9UX0lOREVYRURfT05fQVBQTFkpKQorCQlvcHRzLT5ob3RpbmRleGVkbW9kZSA9IExP R0lDQUxSRVBfSE9UX0lOREVYRURfU1VCU0VUX09OTFk7CiAKIAkvKiBQYXJzZSBvcHRpb25z ICovCiAJZm9yZWFjaChsYywgc3RtdF9vcHRpb25zKQpAQCAtNDM2LDYgKzQ0MCwzMCBAQCBw YXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnN0 bXRfb3B0aW9ucywKIAkJCQkJCQkJCQkgUEdDX0JBQ0tFTkQsIFBHQ19TX1RFU1QsIEdVQ19B Q1RJT05fU0VULAogCQkJCQkJCQkJCSBmYWxzZSwgMCwgZmFsc2UpOwogCQl9CisJCWVsc2Ug aWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfSE9UX0lOREVYRURfT05fQVBQTFkp ICYmCisJCQkJIHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgImhvdF9pbmRleGVkX29uX2FwcGx5 IikgPT0gMCkKKwkJeworCQkJY2hhcgkgICAqdmFsOworCisJCQlpZiAoSXNTZXQob3B0cy0+ c3BlY2lmaWVkX29wdHMsIFNVQk9QVF9IT1RfSU5ERVhFRF9PTl9BUFBMWSkpCisJCQkJZXJy b3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CisKKwkJCW9wdHMtPnNwZWNp ZmllZF9vcHRzIHw9IFNVQk9QVF9IT1RfSU5ERVhFRF9PTl9BUFBMWTsKKwkJCXZhbCA9IGRl ZkdldFN0cmluZyhkZWZlbCk7CisKKwkJCWlmIChwZ19zdHJjYXNlY21wKHZhbCwgIm9mZiIp ID09IDApCisJCQkJb3B0cy0+aG90aW5kZXhlZG1vZGUgPSBMT0dJQ0FMUkVQX0hPVF9JTkRF WEVEX09GRjsKKwkJCWVsc2UgaWYgKHBnX3N0cmNhc2VjbXAodmFsLCAic3Vic2V0X29ubHki KSA9PSAwKQorCQkJCW9wdHMtPmhvdGluZGV4ZWRtb2RlID0gTE9HSUNBTFJFUF9IT1RfSU5E RVhFRF9TVUJTRVRfT05MWTsKKwkJCWVsc2UgaWYgKHBnX3N0cmNhc2VjbXAodmFsLCAiYWx3 YXlzIikgPT0gMCkKKwkJCQlvcHRzLT5ob3RpbmRleGVkbW9kZSA9IExPR0lDQUxSRVBfSE9U X0lOREVYRURfQUxXQVlTOworCQkJZWxzZQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQko ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJCSBlcnJt c2coInVucmVjb2duaXplZCB2YWx1ZSBmb3Igc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBcIiVz XCI6IFwiJXNcIiIsCisJCQkJCQkJCSJob3RfaW5kZXhlZF9vbl9hcHBseSIsIHZhbCksCisJ CQkJCQkgZXJyaGludCgiVmFsaWQgdmFsdWVzIGFyZSBcIm9mZlwiLCBcInN1YnNldF9vbmx5 XCIsIGFuZCBcImFsd2F5c1wiLiIpKSk7CisJCX0KIAkJZWxzZQogCQkJZXJlcG9ydChFUlJP UiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLApAQCAtNjc0LDcgKzcw Miw4IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1 YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJCSAgU1VCT1BUX1JVTl9BU19PV05FUiB8IFNV Qk9QVF9GQUlMT1ZFUiB8CiAJCQkJCSAgU1VCT1BUX1JFVEFJTl9ERUFEX1RVUExFUyB8CiAJ CQkJCSAgU1VCT1BUX01BWF9SRVRFTlRJT05fRFVSQVRJT04gfAotCQkJCQkgIFNVQk9QVF9X QUxfUkVDRUlWRVJfVElNRU9VVCB8IFNVQk9QVF9PUklHSU4pOworCQkJCQkgIFNVQk9QVF9X QUxfUkVDRUlWRVJfVElNRU9VVCB8IFNVQk9QVF9PUklHSU4gfAorCQkJCQkgIFNVQk9QVF9I T1RfSU5ERVhFRF9PTl9BUFBMWSk7CiAJcGFyc2Vfc3Vic2NyaXB0aW9uX29wdGlvbnMocHN0 YXRlLCBzdG10LT5vcHRpb25zLCBzdXBwb3J0ZWRfb3B0cywgJm9wdHMpOwogCiAJLyoKQEAg LTgyOCw2ICs4NTcsOCBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRl LCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQlJbnQzMkdldERhdHVtKG9wdHMu bWF4cmV0ZW50aW9uKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VicmV0ZW50 aW9uYWN0aXZlIC0gMV0gPQogCQlCb29sR2V0RGF0dW0ob3B0cy5yZXRhaW5kZWFkdHVwbGVz KTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViaG90aW5kZXhlZG9uYXBwbHkg LSAxXSA9CisJCUNoYXJHZXREYXR1bShvcHRzLmhvdGluZGV4ZWRtb2RlKTsKIAl2YWx1ZXNb QW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic2VydmVyIC0gMV0gPSBPYmplY3RJZEdldERhdHVt KHNlcnZlcmlkKTsKIAlpZiAoIU9pZElzVmFsaWQoc2VydmVyaWQpKQogCQl2YWx1ZXNbQW51 bV9wZ19zdWJzY3JpcHRpb25fc3ViY29ubmluZm8gLSAxXSA9CkBAIC0xNDk5LDcgKzE1MzAs OCBAQCBBbHRlclN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2Ny aXB0aW9uU3RtdCAqc3RtdCwKIAkJCQkJCQkgIFNVQk9QVF9SRVRBSU5fREVBRF9UVVBMRVMg fAogCQkJCQkJCSAgU1VCT1BUX01BWF9SRVRFTlRJT05fRFVSQVRJT04gfAogCQkJCQkJCSAg U1VCT1BUX1dBTF9SRUNFSVZFUl9USU1FT1VUIHwKLQkJCQkJCQkgIFNVQk9QVF9PUklHSU4p OworCQkJCQkJCSAgU1VCT1BUX09SSUdJTiB8CisJCQkJCQkJICBTVUJPUFRfSE9UX0lOREVY RURfT05fQVBQTFkpOwogCQkJYnJlYWs7CiAKIAkJY2FzZSBBTFRFUl9TVUJTQ1JJUFRJT05f RU5BQkxFRDoKQEAgLTE4NTgsNiArMTg5MCwxMyBAQCBBbHRlclN1YnNjcmlwdGlvbihQYXJz ZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQkJcmVw bGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vid2FscmN2dGltZW91dCAtIDFdID0gdHJ1 ZTsKIAkJCQl9CiAKKwkJCQlpZiAoSXNTZXQob3B0cy5zcGVjaWZpZWRfb3B0cywgU1VCT1BU X0hPVF9JTkRFWEVEX09OX0FQUExZKSkKKwkJCQl7CisJCQkJCXZhbHVlc1tBbnVtX3BnX3N1 YnNjcmlwdGlvbl9zdWJob3RpbmRleGVkb25hcHBseSAtIDFdID0KKwkJCQkJCUNoYXJHZXRE YXR1bShvcHRzLmhvdGluZGV4ZWRtb2RlKTsKKwkJCQkJcmVwbGFjZXNbQW51bV9wZ19zdWJz Y3JpcHRpb25fc3ViaG90aW5kZXhlZG9uYXBwbHkgLSAxXSA9IHRydWU7CisJCQkJfQorCiAJ CQkJdXBkYXRlX3R1cGxlID0gdHJ1ZTsKIAkJCQlicmVhazsKIAkJCX0KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDc3OTkyNjZjNjE0Li4wM2Y2 MDU4YzY3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93 b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5j CkBAIC00ODQsNiArNDg0LDE0IEBAIFdhbFJlY2VpdmVyQ29ubiAqTG9nUmVwV29ya2VyV2Fs UmN2Q29ubiA9IE5VTEw7CiBTdWJzY3JpcHRpb24gKk15U3Vic2NyaXB0aW9uID0gTlVMTDsK IHN0YXRpYyBib29sIE15U3Vic2NyaXB0aW9uVmFsaWQgPSBmYWxzZTsKIAorLyoKKyAqIENh Y2hlIG9mIHRoZSBwZXItc3Vic2NyaXB0aW9uIGhvdF9pbmRleGVkX29uX2FwcGx5IG1vZGUu ICBUaGUgYXBwbHkgd29ya2VyCisgKiByZWZyZXNoZXMgdGhpcyBhZnRlciBldmVyeSBzdWNj ZXNzZnVsIGxvYWQgb2YgTXlTdWJzY3JpcHRpb247IHJlYWRlcnMKKyAqIG91dHNpZGUgd29y a2VyLmMgZ28gdGhyb3VnaCBHZXRIb3RJbmRleGVkQXBwbHlNb2RlKCkgc28gdGhleSBkb24n dCBuZWVkCisgKiB2aXNpYmlsaXR5IGludG8gdGhlIFN1YnNjcmlwdGlvbiBzdHJ1Y3Qgb3Ig dGhlIGFwcGx5IHdvcmtlcidzIGdsb2JhbHMuCisgKi8KK3N0YXRpYyBjaGFyIGhvdF9pbmRl eGVkX2FwcGx5X21vZGUgPSBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEX09GRjsKKwogc3RhdGlj IExpc3QgKm9uX2NvbW1pdF93YWtldXBfd29ya2Vyc19zdWJpZHMgPSBOSUw7CiAKIGJvb2wJ CWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwpAQCAtNTE3MSw2ICs1MTc5LDkgQEAg bWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKQogCU1lbW9yeUNvbnRleHREZWxldGUo TXlTdWJzY3JpcHRpb24tPmN4dCk7CiAJTXlTdWJzY3JpcHRpb24gPSBuZXdzdWI7CiAKKwkv KiBSZWZyZXNoIHRoZSBjYWNoZWQgSE9ULWluZGV4ZWQgYXBwbHkgbW9kZSBmcm9tIHRoZSBu ZXcgdHVwbGUuICovCisJaG90X2luZGV4ZWRfYXBwbHlfbW9kZSA9IE15U3Vic2NyaXB0aW9u LT5ob3RpbmRleGVkbW9kZTsKKwogCS8qIENoYW5nZSBzeW5jaHJvbm91cyBjb21taXQgYWNj b3JkaW5nIHRvIHRoZSB1c2VyJ3Mgd2lzaGVzICovCiAJU2V0Q29uZmlnT3B0aW9uKCJzeW5j aHJvbm91c19jb21taXQiLCBNeVN1YnNjcmlwdGlvbi0+c3luY2NvbW1pdCwKIAkJCQkJUEdD X0JBQ0tFTkQsIFBHQ19TX09WRVJSSURFKTsKQEAgLTU4NDQsNiArNTg1NSwxMiBAQCBJbml0 aWFsaXplTG9nUmVwV29ya2VyKHZvaWQpCiAKIAlNeVN1YnNjcmlwdGlvblZhbGlkID0gdHJ1 ZTsKIAorCS8qCisJICogQ2FjaGUgdGhlIHN1YnNjcmlwdGlvbidzIEhPVC1pbmRleGVkIGFw cGx5IG1vZGUgc28gaXQgaXMgY2hlYXAgdG8KKwkgKiBjb25zdWx0IGZyb20gdGhlIGhlYXAg YWNjZXNzIG1ldGhvZCAodmlhIEdldEhvdEluZGV4ZWRBcHBseU1vZGUoKSkuCisJICovCisJ aG90X2luZGV4ZWRfYXBwbHlfbW9kZSA9IE15U3Vic2NyaXB0aW9uLT5ob3RpbmRleGVkbW9k ZTsKKwogCWlmICghTXlTdWJzY3JpcHRpb24tPmVuYWJsZWQpCiAJewogCQllcmVwb3J0KExP RywKQEAgLTYwODMsNiArNjEwMCwyMiBAQCBJc0xvZ2ljYWxXb3JrZXIodm9pZCkKIAlyZXR1 cm4gTXlMb2dpY2FsUmVwV29ya2VyICE9IE5VTEw7CiB9CiAKKy8qCisgKiBSZXR1cm4gdGhl IGNhY2hlZCBIT1QtaW5kZXhlZCBhcHBseSBtb2RlIG9mIHRoZSBjdXJyZW50IGxvZ2ljYWwg cmVwbGljYXRpb24KKyAqIHdvcmtlcidzIHN1YnNjcmlwdGlvbi4KKyAqCisgKiBDYWxsZXJz IG91dHNpZGUgd29ya2VyLmMgKG5vdGFibHkgaGVhcGFtLmMncyBIZWFwVXBkYXRlSG90QWxs b3dhYmxlKSB1c2UKKyAqIHRoaXMgYWNjZXNzb3IgdG8gYXZvaWQgcHVsbGluZyBpbiB3b3Jr ZXJfaW50ZXJuYWwuaCBvciB0aGUgU3Vic2NyaXB0aW9uCisgKiBzdHJ1Y3QuICBOb24tYXBw bHkgcHJvY2Vzc2VzIGdldCBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEX09GRiwgd2hpY2ggaXMg dGhlCisgKiBjb25zZXJ2YXRpdmUgdmFsdWU7IGNhbGxlcnMgYXJlIGV4cGVjdGVkIHRvIGd1 YXJkIHdpdGggSXNMb2dpY2FsV29ya2VyKCkKKyAqIGZpcnN0IGZvciBjbGFyaXR5LCBidXQg dGhlIGFjY2Vzc29yIGlzIHNhZmUgZWl0aGVyIHdheS4KKyAqLworY2hhcgorR2V0SG90SW5k ZXhlZEFwcGx5TW9kZSh2b2lkKQoreworCXJldHVybiBob3RfaW5kZXhlZF9hcHBseV9tb2Rl OworfQorCiAvKgogICogSXMgY3VycmVudCBwcm9jZXNzIGEgbG9naWNhbCByZXBsaWNhdGlv biBwYXJhbGxlbCBhcHBseSB3b3JrZXI/CiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDI1ZjY2 YjU2ZDQwLi43OWEyNWRkZWM5YyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC01MTg0LDYgKzUxODQs NyBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJaW50CQkJaV9zdWJmYWls b3ZlcjsKIAlpbnQJCQlpX3N1YnJldGFpbmRlYWR0dXBsZXM7CiAJaW50CQkJaV9zdWJtYXhy ZXRlbnRpb247CisJaW50CQkJaV9zdWJob3RpbmRleGVkb25hcHBseTsKIAlpbnQJCQlpLAog CQkJCW50dXBzOwogCkBAIC01MjgxLDYgKzUyODIsMTQgQEAgZ2V0U3Vic2NyaXB0aW9ucyhB cmNoaXZlICpmb3V0KQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkg IiAnLTEnIEFTIHN1YndhbHJjdnRpbWVvdXQsXG4iKTsKIAorCWlmIChmb3V0LT5yZW1vdGVW ZXJzaW9uID49IDE5MDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCisJCQkJ CQkJICIgcy5zdWJob3RpbmRleGVkb25hcHBseSxcbiIpOworCWVsc2UKKwkJYXBwZW5kUFFF eHBCdWZmZXIocXVlcnksCisJCQkJCQkgICIgJyVjJyBBUyBzdWJob3RpbmRleGVkb25hcHBs eSxcbiIsCisJCQkJCQkgIExPR0lDQUxSRVBfSE9UX0lOREVYRURfU1VCU0VUX09OTFkpOwor CiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTkwMDAwKQogCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwgIiBmcy5zcnZuYW1lIEFTIHN1YnNlcnZlcm5hbWVcbiIpOwogCWVs c2UKQEAgLTUzMjUsNiArNTMzNCw3IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91 dCkKIAlpX3N1YmZhaWxvdmVyID0gUFFmbnVtYmVyKHJlcywgInN1YmZhaWxvdmVyIik7CiAJ aV9zdWJyZXRhaW5kZWFkdHVwbGVzID0gUFFmbnVtYmVyKHJlcywgInN1YnJldGFpbmRlYWR0 dXBsZXMiKTsKIAlpX3N1Ym1heHJldGVudGlvbiA9IFBRZm51bWJlcihyZXMsICJzdWJtYXhy ZXRlbnRpb24iKTsKKwlpX3N1YmhvdGluZGV4ZWRvbmFwcGx5ID0gUFFmbnVtYmVyKHJlcywg InN1YmhvdGluZGV4ZWRvbmFwcGx5Iik7CiAJaV9zdWJzZXJ2ZXJuYW1lID0gUFFmbnVtYmVy KHJlcywgInN1YnNlcnZlcm5hbWUiKTsKIAlpX3N1YmNvbm5pbmZvID0gUFFmbnVtYmVyKHJl cywgInN1YmNvbm5pbmZvIik7CiAJaV9zdWJzbG90bmFtZSA9IFBRZm51bWJlcihyZXMsICJz dWJzbG90bmFtZSIpOwpAQCAtNTM2OCw2ICs1Mzc4LDggQEAgZ2V0U3Vic2NyaXB0aW9ucyhB cmNoaXZlICpmb3V0KQogCQkJKHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgaV9zdWJyZXRh aW5kZWFkdHVwbGVzKSwgInQiKSA9PSAwKTsKIAkJc3ViaW5mb1tpXS5zdWJtYXhyZXRlbnRp b24gPQogCQkJYXRvaShQUWdldHZhbHVlKHJlcywgaSwgaV9zdWJtYXhyZXRlbnRpb24pKTsK KwkJc3ViaW5mb1tpXS5zdWJob3RpbmRleGVkb25hcHBseSA9CisJCQkqKFBRZ2V0dmFsdWUo cmVzLCBpLCBpX3N1YmhvdGluZGV4ZWRvbmFwcGx5KSk7CiAJCWlmIChQUWdldGlzbnVsbChy ZXMsIGksIGlfc3ViY29ubmluZm8pKQogCQkJc3ViaW5mb1tpXS5zdWJjb25uaW5mbyA9IE5V TEw7CiAJCWVsc2UKQEAgLTU2NDUsNiArNTY1NywxMSBAQCBkdW1wU3Vic2NyaXB0aW9uKEFy Y2hpdmUgKmZvdXQsIGNvbnN0IFN1YnNjcmlwdGlvbkluZm8gKnN1YmluZm8pCiAJaWYgKHN1 YmluZm8tPnN1Ym1heHJldGVudGlvbikKIAkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICIs IG1heF9yZXRlbnRpb25fZHVyYXRpb24gPSAlZCIsIHN1YmluZm8tPnN1Ym1heHJldGVudGlv bik7CiAKKwlpZiAoc3ViaW5mby0+c3ViaG90aW5kZXhlZG9uYXBwbHkgPT0gTE9HSUNBTFJF UF9IT1RfSU5ERVhFRF9PRkYpCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBo b3RfaW5kZXhlZF9vbl9hcHBseSA9IG9mZiIpOworCWVsc2UgaWYgKHN1YmluZm8tPnN1Ymhv dGluZGV4ZWRvbmFwcGx5ID09IExPR0lDQUxSRVBfSE9UX0lOREVYRURfQUxXQVlTKQorCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgaG90X2luZGV4ZWRfb25fYXBwbHkgPSBh bHdheXMiKTsKKwogCWlmIChzdHJjbXAoc3ViaW5mby0+c3Vic3luY2NvbW1pdCwgIm9mZiIp ICE9IDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiLCBzeW5jaHJvbm91c19jb21t aXQgPSAlcyIsIGZtdElkKHN1YmluZm8tPnN1YnN5bmNjb21taXQpKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmgKaW5kZXggNWE2NzI2ZDhiMTIuLmUzZTc0MDFkZjA4IDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAg LTcyMiw2ICs3MjIsNyBAQCB0eXBlZGVmIHN0cnVjdCBfU3Vic2NyaXB0aW9uSW5mbwogCWJv b2wJCXN1YmZhaWxvdmVyOwogCWJvb2wJCXN1YnJldGFpbmRlYWR0dXBsZXM7CiAJaW50CQkJ c3VibWF4cmV0ZW50aW9uOworCWNoYXIJCXN1YmhvdGluZGV4ZWRvbmFwcGx5OwogCWNoYXIJ ICAgKnN1YnNlcnZlcm5hbWU7CiAJY2hhcgkgICAqc3ViY29ubmluZm87CiAJY2hhcgkgICAq c3Vic2xvdG5hbWU7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3Ny Yy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IGExYTQ0MGE2NDY5Li5lMmMyOTkwNjczNyAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3Fs L2Rlc2NyaWJlLmMKQEAgLTcwOTMsNyArNzA5Myw3IEBAIGRlc2NyaWJlU3Vic2NyaXB0aW9u cyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpCiAJcHJpbnRRdWVyeU9wdCBt eW9wdCA9IHBzZXQucG9wdDsKIAlzdGF0aWMgY29uc3QgYm9vbCB0cmFuc2xhdGVfY29sdW1u c1tdID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAogCQlmYWxzZSwgZmFsc2UsIGZh bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwK LQlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX07CisJ ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl fTsKIAogCWlmIChwc2V0LnN2ZXJzaW9uIDwgMTAwMDAwKQogCXsKQEAgLTcxNzYsNiArNzE3 NiwxMCBAQCBkZXNjcmliZVN1YnNjcmlwdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9v bCB2ZXJib3NlKQogCQkJCQkJCSAgIiwgc3VibWF4cmV0ZW50aW9uIEFTIFwiJXNcIlxuIiwK IAkJCQkJCQkgIGdldHRleHRfbm9vcCgiTWF4IHJldGVudGlvbiBkdXJhdGlvbiIpKTsKIAor CQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkgICIsIHN1YmhvdGluZGV4ZWRv bmFwcGx5IEFTIFwiJXNcIlxuIiwKKwkJCQkJCQkgIGdldHRleHRfbm9vcCgiSE9ULWluZGV4 ZWQgb24gYXBwbHkiKSk7CisKIAkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCQkJ ICAiLCBzdWJyZXRlbnRpb25hY3RpdmUgQVMgXCIlc1wiXG4iLAogCQkJCQkJCSAgZ2V0dGV4 dF9ub29wKCJSZXRlbnRpb24gYWN0aXZlIikpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9jYXR2ZXJzaW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24u aAppbmRleCAyMjdkODU3NjJhMS4uZTVhNGVlNTdkNGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0 dmVyc2lvbi5oCkBAIC01Nyw2ICs1Nyw2IEBACiAgKi8KIAogLyoJCQkJCQkJeXl5eW1tZGRO ICovCi0jZGVmaW5lIENBVEFMT0dfVkVSU0lPTl9OTwkyMDI2MDcwMTEKKyNkZWZpbmUgQ0FU QUxPR19WRVJTSU9OX05PCTIwMjYwNzAxMgogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3N1YnNjcmlwdGlvbi5oCmluZGV4IDQ4OTQ0MjAxODg5Li5lYjdlYjE1YTllYSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAorKysgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBAIC05Miw2ICs5MiwxMCBA QCBDQVRBTE9HKHBnX3N1YnNjcmlwdGlvbiw2MTAwLFN1YnNjcmlwdGlvblJlbGF0aW9uSWQp IEJLSV9TSEFSRURfUkVMQVRJT04gQktJX1JPVwogCQkJCQkJCQkJICogZXhjZWVkZWQgbWF4 X3JldGVudGlvbl9kdXJhdGlvbiwgd2hlbgogCQkJCQkJCQkJICogZGVmaW5lZCAqLwogCisJ Y2hhcgkJc3ViaG90aW5kZXhlZG9uYXBwbHk7CS8qIFBlci1zdWJzY3JpcHRpb24gZ2F0aW5n IG9mIHRoZSBIT1QtCisJCQkJCQkJCQkJICogaW5kZXhlZCBhcHBseSBwYXRoLiAgU2VlCisJ CQkJCQkJCQkJICogTE9HSUNBTFJFUF9IT1RfSU5ERVhFRF8qIGNvbnN0YW50cy4gKi8KKwog CU9pZAkJCXN1YnNlcnZlciBCS0lfTE9PS1VQX09QVChwZ19mb3JlaWduX3NlcnZlcik7CS8q IElmIGNvbm5lY3Rpb24gdXNlcwogCQkJCQkJCQkJCQkJCQkJCSAqIHNlcnZlciAqLwogCkBA IC0xNjQsNiArMTY4LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJCQkJCQkJ CQkgKiBhbmQgdGhlIHJldGVudGlvbiBkdXJhdGlvbiBoYXMgbm90CiAJCQkJCQkJCQkgKiBl eGNlZWRlZCBtYXhfcmV0ZW50aW9uX2R1cmF0aW9uLCB3aGVuCiAJCQkJCQkJCQkgKiBkZWZp bmVkICovCisJY2hhcgkJaG90aW5kZXhlZG1vZGU7IC8qIFBlci1zdWJzY3JpcHRpb24gZ2F0 aW5nIG9mIHRoZSBIT1QtIGluZGV4ZWQKKwkJCQkJCQkJICogYXBwbHkgcGF0aC4gIFNlZSBM T0dJQ0FMUkVQX0hPVF9JTkRFWEVEXyoKKwkJCQkJCQkJICogY29uc3RhbnRzLiAqLwogCWNo YXIJICAgKmNvbm5pbmZvOwkJLyogQ29ubmVjdGlvbiBzdHJpbmcgdG8gdGhlIHB1Ymxpc2hl ciAqLwogCWNoYXIJICAgKnNsb3RuYW1lOwkJLyogTmFtZSBvZiB0aGUgcmVwbGljYXRpb24g c2xvdCAqLwogCWNoYXIJICAgKnN5bmNjb21taXQ7CQkvKiBTeW5jaHJvbm91cyBjb21taXQg c2V0dGluZyBmb3Igd29ya2VyICovCkBAIC0yMTAsNiArMjE3LDI2IEBAIHR5cGVkZWYgc3Ry dWN0IFN1YnNjcmlwdGlvbgogICovCiAjZGVmaW5lIExPR0lDQUxSRVBfU1RSRUFNX1BBUkFM TEVMICdwJwogCisvKgorICogUGVyLXN1YnNjcmlwdGlvbiBnYXRpbmcgb2YgdGhlIEhPVC1p bmRleGVkIGFwcGx5IHBhdGguICBSZWNvcmRlZCBhcyBhCisgKiBzaW5nbGUtY2hhcmFjdGVy IGNvZGUgaW4gcGdfc3Vic2NyaXB0aW9uLnN1YmhvdGluZGV4ZWRvbmFwcGx5LgorICoKKyAq ICAgJ28nIC0tIE9GRjogZm9yY2Ugbm9uLUhPVCBvbiBhcHBseSB3aGVuZXZlciB0aGUgc3Vi c2NyaWJlciBjYXJyaWVzIGFueQorICoJCSAgaW5kZXhlZCBhdHRyaWJ1dGUgYmV5b25kIHRo ZSBwcmltYXJ5IGtleS4gIE1hdGNoZXMgdGhlIGNvbnNlcnZhdGl2ZQorICoJCSAgYmVoYXZp b3VyIGJlZm9yZSB0aGlzIG9wdGlvbiB3YXMgaW50cm9kdWNlZC4KKyAqICAgJ3MnIC0tIFNV QlNFVF9PTkxZIChkZWZhdWx0IGZvciBmcmVzaGx5IGNyZWF0ZWQgc3Vic2NyaXB0aW9ucyk6 IGFsbG93IHRoZQorICoJCSAgSE9ULWluZGV4ZWQgYXBwbHkgcGF0aCB3aGVuIHRoZSBzdWJz Y3JpYmVyJ3MgZnVsbCBpbmRleGVkLWF0dHIgc2V0IGlzCisgKgkJICBhIHN1YnNldCBvZiBp dHMgcHJpbWFyeS1rZXkgYXR0cnMgKHdoaWNoIGNvdmVycyB0aGUgbm8tc2Vjb25kYXJ5LQor ICoJCSAgaW5kZXggY2FzZSBhcyB3ZWxsKS4gIFNhZmUgb24gbWF0Y2hpbmcgc2NoZW1hczsg ZmFsbHMgYmFjayB0byBub24tSE9UCisgKgkJICB3aGVuIHRoZSBzdWJzY3JpYmVyIGFkZHMg aW5kZXhlcyBiZXlvbmQgdGhlIHByaW1hcnkga2V5LgorICogICAnYScgLS0gQUxXQVlTOiB1 bmNvbmRpdGlvbmFsIEhPVC1pbmRleGVkIGVsaWdpYmlsaXR5IG9uIGFwcGx5LiAgVGhlCisg KgkJICBvcGVyYXRvciBhY2NlcHRzIHJlc3BvbnNpYmlsaXR5IGZvciBrZWVwaW5nIHN1YnNj cmliZXIgYW5kIHB1Ymxpc2hlcgorICoJCSAgaW5kZXhlZC1hdHRyIHNldHMgY29tcGF0aWJs ZS4KKyAqLworI2RlZmluZSBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEX09GRgkJCSdvJworI2Rl ZmluZSBMT0dJQ0FMUkVQX0hPVF9JTkRFWEVEX1NVQlNFVF9PTkxZCSdzJworI2RlZmluZSBM T0dJQ0FMUkVQX0hPVF9JTkRFWEVEX0FMV0FZUwkJJ2EnCisKICNlbmRpZgkJCQkJCQkvKiBF WFBPU0VfVE9fQ0xJRU5UX0NPREUgKi8KIAogZXh0ZXJuIFN1YnNjcmlwdGlvbiAqR2V0U3Vi c2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rLApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vbG9naWNhbHdvcmtlci5oCmluZGV4IDdkNzQ4YTI4ZGE4Li5jOWRmN2QzMmYy ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5o CisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaApAQCAtMjQs NiArMjQsMTQgQEAgZXh0ZXJuIHZvaWQgU2VxdWVuY2VTeW5jV29ya2VyTWFpbihEYXR1bSBt YWluX2FyZyk7CiBleHRlcm4gYm9vbCBJc0xvZ2ljYWxXb3JrZXIodm9pZCk7CiBleHRlcm4g Ym9vbCBJc0xvZ2ljYWxQYXJhbGxlbEFwcGx5V29ya2VyKHZvaWQpOwogCisvKgorICogQWNj ZXNzb3IgZm9yIHRoZSBjYWNoZWQgaG90X2luZGV4ZWRfb25fYXBwbHkgbW9kZSBvZiB0aGUg Y3VycmVudCBhcHBseQorICogd29ya2VyJ3Mgc3Vic2NyaXB0aW9uLiAgUmV0dXJucyBhIExP R0lDQUxSRVBfSE9UX0lOREVYRURfKiBjb2RlIChzZWUKKyAqIGNhdGFsb2cvcGdfc3Vic2Ny aXB0aW9uLmgpLiAgTm9uLWFwcGx5IHByb2Nlc3NlcyBhbHdheXMgc2VlCisgKiBMT0dJQ0FM UkVQX0hPVF9JTkRFWEVEX09GRi4KKyAqLworZXh0ZXJuIGNoYXIgR2V0SG90SW5kZXhlZEFw cGx5TW9kZSh2b2lkKTsKKwogZXh0ZXJuIHZvaWQgSGFuZGxlUGFyYWxsZWxBcHBseU1lc3Nh Z2VJbnRlcnJ1cHQodm9pZCk7CiBleHRlcm4gdm9pZCBQcm9jZXNzUGFyYWxsZWxBcHBseU1l c3NhZ2VzKHZvaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3N1YnNjcmlwdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlw dGlvbi5vdXQKaW5kZXggOGRiZmFjNjYzMjYuLmViNzkxNWE0M2YzIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CkBAIC0xMzksMTggKzEzOSwx OCBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjQgQ09OTkVDVElPTiAn ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVQogV0FSTklORzogIHN1YnNjcmlwdGlv biB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQKIEhJTlQ6ICBUbyBpbml0aWF0 ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlv biBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5kIGFsdGVyIHRoZSBzdWJzY3Jp cHRpb24gdG8gcmVmcmVzaCBwdWJsaWNhdGlvbnMuCiBcZFJzKyByZWdyZXNzX3Rlc3RzdWI0 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgIE5hbWUgICAgICAgfCAgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5 IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBP cmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8 IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24g fCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29u bmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNj cmlwdGlvbiAKLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCi0gcmVncmVzc190 ZXN0c3ViNCB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3Rw dWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IG5vbmUgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAg ICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgICAgICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAg fCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8w MDAwMDAwMCB8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAg ICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQg fCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4g YXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBN YXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRp b24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAg ICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAK Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0KKyByZWdyZXNzX3Rlc3RzdWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYg ICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgbm9uZSAgIHwgdCAgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgcyAgICAgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKICgxIHJv dykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjQgU0VUIChvcmlnaW4g PSBhbnkpOwogXGRScysgcmVncmVzc190ZXN0c3ViNAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKLSAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFz ZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWly ZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0 dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5 bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2Vp dmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNj cmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxs ZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0 ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8 IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAg ICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25v dGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICAgTmFtZSAgICAgICB8ICAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkg fCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9y aWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwg U2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8 IEhPVC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3Vz IGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVv dXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViNCB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBm ICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAg ICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgMCB8IHMgICAgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAg ICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAg ICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCiAoMSByb3cpCiAKIERST1AgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YjM7CkBAIC0yMzcsMTAgKzIzNywxMCBAQCBBTFRFUiBTVUJTQ1JJ UFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2Zvb2Jhcic7CiBFUlJPUjogIGlu dmFsaWQgY29ubmVjdGlvbiBzdHJpbmcgc3ludGF4OiBtaXNzaW5nICI9IiBhZnRlciAiZm9v YmFyIiBpbiBjb25uZWN0aW9uIGluZm8gc3RyaW5nCiAKIFxkUnMrCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qg b2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcg fCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3 b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0 YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IFJldGVudGlvbiBh Y3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAg ICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8ICAgIERlc2NyaXB0aW9uICAg IAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVz dHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9 ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8 IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAw MDAwMCB8IHRlc3Qgc3Vic2NyaXB0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBz dWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3 by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQg cmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4g ZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24g YXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAg ICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAg fCAgICBEZXNjcmlwdGlvbiAgICAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jl c3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAg fCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFu eSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwg ICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8 IHMgICAgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAg ICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAg ICAgfCAwLzAwMDAwMDAwIHwgdGVzdCBzdWJzY3JpcHRpb24KICgxIHJvdykKIAogQUxURVIg U1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgUFVCTElDQVRJT04gdGVzdHB1YjIs IHRlc3RwdWIzIFdJVEggKHJlZnJlc2ggPSBmYWxzZSk7CkBAIC0yNDksMTAgKzI0OSwxMCBA QCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0g J25ld25hbWUnKTsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChw YXNzd29yZF9yZXF1aXJlZCA9IGZhbHNlKTsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNz X3Rlc3RzdWIgU0VUIChydW5fYXNfb3duZXIgPSB0cnVlKTsKIFxkUnMrCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5h cnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8 IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVy IHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlv biB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAg Q29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCAg ICBEZXNjcmlwdGlvbiAgICAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBwYXJhbGxl bCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IGYg ICAgICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwg ZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAg ICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QyIHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCB0ZXN0IHN1YnNjcmlw dGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisg ICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNl IGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJl ZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1 cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8 IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29u bmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCAgICBE ZXNjcmlwdGlvbiAgICAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJl Z3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIz fSB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgYW55ICAgIHwgZiAgICAgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgIHwg ZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICAgICAwIHwgcyAgICAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg b2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IC0x ICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgdGVzdCBzdWJzY3JpcHRpb24KICgxIHJv dykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHBhc3N3b3Jk X3JlcXVpcmVkID0gdHJ1ZSk7CkBAIC0yNjgsMTAgKzI2OCwxMCBAQCBFUlJPUjogIHVucmVj b2duaXplZCBzdWJzY3JpcHRpb24gcGFyYW1ldGVyOiAiY3JlYXRlX3Nsb3QiCiAtLSBvawog QUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTS0lQIChsc24gPSAnMC8xMjM0 NScpOwogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAg TmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAg IFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21t aXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBS dW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMg fCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9u b3VzIGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0 aW1lb3V0IHwgIFNraXAgTFNOICB8ICAgIERlc2NyaXB0aW9uICAgIAotLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3Rw dWIzfSB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAg IHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8 IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAtMSAgICAgICAgICAgICAgIHwgMC8w MDAxMjM0NSB8IHRlc3Qgc3Vic2NyaXB0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM aXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAgfCBCaW5hcnkg fCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9y aWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwg U2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8 IEhPVC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3Vz IGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1l b3V0IHwgIFNraXAgTFNOICB8ICAgIERlc2NyaXB0aW9uICAgIAorLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t CisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBzICAgICAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QyIHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMTIzNDUgfCB0 ZXN0IHN1YnNjcmlwdGlvbgogKDEgcm93KQogCiAtLSBvayAtIHdpdGggbHNuID0gTk9ORQpA QCAtMjgwLDEwICsyODAsMTAgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1 YiBTS0lQIChsc24gPSBOT05FKTsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3Rz dWIgU0tJUCAobHNuID0gJzAvMCcpOwogRVJST1I6ICBpbnZhbGlkIFdBTCBsb2NhdGlvbiAo TFNOKTogMC8wCiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0g ICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNl IGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJl ZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1 cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZlIHwgU3lu Y2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2Vp dmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgICAgRGVzY3JpcHRpb24gICAgCi0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0 c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIs dGVzdHB1YjN9IHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYg ICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAg ICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAg ICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IC0xICAgICAgICAgICAgICAg fCAwLzAwMDAwMDAwIHwgdGVzdCBzdWJzY3JpcHRpb24KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJp bmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9y IHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92 ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0 aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hy b25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVy IHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgICAgRGVzY3JpcHRpb24gICAgCistLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBwYXJhbGxlbCAgfCBk ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHMgICAgICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFt ZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAw MCB8IHRlc3Qgc3Vic2NyaXB0aW9uCiAoMSByb3cpCiAKIEJFR0lOOwpAQCAtMzE5LDEwICsz MTksMTAgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1Yl9mb28gU0VUICh3 YWxfcmVjZWl2ZXJfdGltZW91dCA9ICc4MHMnKTsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdy ZXNzX3Rlc3RzdWJfZm9vIFNFVCAod2FsX3JlY2VpdmVyX3RpbWVvdXQgPSAnZm9vYmFyJyk7 CiBFUlJPUjogIGludmFsaWQgdmFsdWUgZm9yIHBhcmFtZXRlciAid2FsX3JlY2VpdmVyX3Rp bWVvdXQiOiAiZm9vYmFyIgogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3Jp cHRpb25zCi0gICAgICAgIE5hbWUgICAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWlu ZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFz c3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBS ZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9u IGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5mbyAgICAg ICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8ICAgIERlc2NyaXB0aW9u ICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0KLSByZWdyZXNzX3Rlc3RzdWJfZm9vIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8 IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgcGFyYWxsZWwgIHwg ZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAg ICAgIHwgbG9jYWwgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0 MiB8IDgwcyAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgdGVzdCBzdWJzY3JpcHRpb24K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAg ICAgIE5hbWUgICAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVk IHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFz ZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWly ZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0 dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkg fCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENv bm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgICAg RGVzY3JpcHRpb24gICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3Vi X2ZvbyB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIy LHRlc3RwdWIzfSB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAwIHwgcyAgICAgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgbG9jYWwgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0MiB8IDgwcyAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgdGVzdCBzdWJzY3JpcHRp b24KICgxIHJvdykKIAogLS0gcmVuYW1lIGJhY2sgdG8ga2VlcCB0aGUgcmVzdCBzaW1wbGUK QEAgLTM1MSwxOSArMzUxLDE5IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0 c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCCiBXQVJO SU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZAog SElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVh dGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBhbmQg YWx0ZXIgdGhlIHN1YnNjcmlwdGlvbiB0byByZWZyZXNoIHB1YmxpY2F0aW9ucy4KIFxkUnMr Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkg fCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9y aWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwg U2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8 IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25u aW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2Ny aXB0aW9uIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVz dHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9 ICAgfCB0ICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8 IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAw MDAwMCB8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAg TmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVi bGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlz YWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93 bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJl dGVudGlvbiBkdXJhdGlvbiB8IEhPVC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFj dGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAg ICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCistLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBy ZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8 IHt0ZXN0cHVifSAgIHwgdCAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgICAgICAgIDAgfCBzICAgICAgICAgICAgICAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAogKDEgcm93KQogCiBB TFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoYmluYXJ5ID0gZmFsc2Up OwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9 IE5PTkUpOwogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1l ICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNh dGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxl IG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/ IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50 aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8 ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tp cCBMU04gIHwgRGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ci0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAg ICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAg ICAgICAgfCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3Jp cHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFz ZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWly ZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0 dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkg fCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29u bmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNj cmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3Vz ZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAg ICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHMgICAgICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1y ZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwg CiAoMSByb3cpCiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsKQEAgLTM3 NSwyNyArMzc1LDI3IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENP Tk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCCiBXQVJOSU5HOiAg c3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZAogSElOVDog IFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhl IHJlcGxpY2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBhbmQgYWx0ZXIg dGhlIHN1YnNjcmlwdGlvbiB0byByZWZyZXNoIHB1YmxpY2F0aW9ucy4KIFxkUnMrCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBP d25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJl YW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8 IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVy IHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IFJldGVu dGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAg ICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9u IAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBm ICAgICAgfCBvbiAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAg ICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9 cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8 IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAg ICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRp b24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBv biBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8 IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlv biBkdXJhdGlvbiB8IEhPVC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8 IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJl Y2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNz X3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0 cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICAgIDAgfCBzICAgICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qg fCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAogKDEgcm93KQogCiBBTFRFUiBT VUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gcGFyYWxsZWwp OwogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAg IHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8 IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVy cm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFp bG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1 cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAg ICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04g IHwgRGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCi0gcmVn cmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7 dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAg ICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAg fCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25z CisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJs ZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21t aXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBS dW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMg fCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRl bnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8g ICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlv biAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBm ICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAg IHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHMgICAgICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNz X2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCiAoMSBy b3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1p bmcgPSBmYWxzZSk7CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAo c2xvdF9uYW1lID0gTk9ORSk7CiBcZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMK LSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxl ZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1p dCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1 biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8 IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25v dXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGlt ZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAg IHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwg LTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0 IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5n IHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNz d29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJl dGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhl ZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAg ICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAg TFNOICB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJz Y3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAg ICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwg dCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAg fCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgcyAgICAg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAg IHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAv MDAwMDAwMDAgfCAKICgxIHJvdykKIAogLS0gZmFpbCAtIHB1YmxpY2F0aW9uIGFscmVhZHkg ZXhpc3RzCkBAIC00MTAsMTAgKzQxMCwxMCBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVz c190ZXN0c3ViIEFERCBQVUJMSUNBVElPTiB0ZXN0cHViMSwgdGVzdHB1YjIgV0lUSCAocmVm cgogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBBREQgUFVCTElDQVRJT04g dGVzdHB1YjEsIHRlc3RwdWIyIFdJVEggKHJlZnJlc2ggPSBmYWxzZSk7CiBFUlJPUjogIHB1 YmxpY2F0aW9uICJ0ZXN0cHViMSIgaXMgYWxyZWFkeSBpbiBzdWJzY3JpcHRpb24gInJlZ3Jl c3NfdGVzdHN1YiIKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25z Ci0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJs ZWQgfCAgICAgICAgIFB1YmxpY2F0aW9uICAgICAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcg fCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3 b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0 YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IFJldGVudGlvbiBh Y3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAg ICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAotLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KLSByZWdyZXNz X3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0 cHViLHRlc3RwdWIxLHRlc3RwdWIyfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAg ICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9m ZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAg ICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM aXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICAgICAgUHVibGljYXRpb24gICAgICAgICB8 IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVy cm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFp bG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1 cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3lu Y2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2 ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAg ICAgICB8IHt0ZXN0cHViLHRlc3RwdWIxLHRlc3RwdWIyfSB8IGYgICAgICB8IG9mZiAgICAg ICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBm ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgcyAgICAgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwg ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAw MDAwMDAgfCAKICgxIHJvdykKIAogLS0gZmFpbCAtIHB1YmxpY2F0aW9uIHVzZWQgbW9yZSB0 aGFuIG9uY2UKQEAgLTQyOCwxMCArNDI4LDEwIEBAIEVSUk9SOiAgcHVibGljYXRpb24gInRl c3RwdWIzIiBpcyBub3QgaW4gc3Vic2NyaXB0aW9uICJyZWdyZXNzX3Rlc3RzdWIiCiAtLSBv ayAtIGRlbGV0ZSBwdWJsaWNhdGlvbnMKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rl c3RzdWIgRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViMSwgdGVzdHB1YjIgV0lUSCAocmVmcmVz aCA9IGZhbHNlKTsKIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAg TmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVi bGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlz YWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93 bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJl dGVudGlvbiBkdXJhdGlvbiB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21t aXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwg IFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBm ICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAg IHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYg ICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAg ICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vi c2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28t cGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJl cXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRl YWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IEhPVC1pbmRleGVkIG9uIGFw cGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAg IENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwg RGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlv bl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwg ZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBzICAgICAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5h bWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAw MCB8IAogKDEgcm93KQogCiBEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI7CkBA IC00NjcsMTkgKzQ2NywxOSBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1 YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQgogV0FSTklO RzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQKIEhJ TlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRl IHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5kIGFs dGVyIHRoZSBzdWJzY3JpcHRpb24gdG8gcmVmcmVzaCBwdWJsaWNhdGlvbnMuCiBcZFJzKwot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwg U3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmln aW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNl cnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBS ZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmlu Zm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlw dGlvbiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAg IHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgcCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBm ICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg ICAgICAgIDAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAw MDAgfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5h bWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1Ymxp Y2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2Fi bGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25l cj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRl bnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3Rp dmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAg fCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAorLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVn cmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7 dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IHAgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAwIHwgcyAgICAgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKICgxIHJvdykKIAogLS0g d2UgY2FuIGFsdGVyIHN0cmVhbWluZyB3aGVuIHR3b19waGFzZSBlbmFibGVkCiBBTFRFUiBT VUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gdHJ1ZSk7CiBc ZFJzKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmlu YXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3Ig fCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3Zl ciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRp b24gfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAg Q29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBE ZXNjcmlwdGlvbiAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KLSByZWdyZXNz X3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0 cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwgcCAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICAgIDAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAg IHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAv MDAwMDAwMDAgfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAg ICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8 IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8 IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBh cyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1h eCByZXRlbnRpb24gZHVyYXRpb24gfCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8IFJldGVudGlv biBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAg ICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAor LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t CisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8IHAgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAg fCAgICAgICAgICAgICAgICAgICAgICAwIHwgcyAgICAgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKICgxIHJvdykK IAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9 IE5PTkUpOwpAQCAtNDg5LDEwICs0ODksMTAgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiByZWdy ZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQ VUIKIFdBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29u bmVjdGVkCiBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVh bGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3JpcHRp b24sIGFuZCBhbHRlciB0aGUgc3Vic2NyaXB0aW9uIHRvIHJlZnJlc2ggcHVibGljYXRpb25z LgogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCi0gICAgICBOYW1lICAgICAg IHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8 IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVy cm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFp bG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1 cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAg ICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04g IHwgRGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCi0gcmVn cmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7 dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAg ICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAg fCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25z CisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJs ZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21t aXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQgfCBS dW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBsZXMg fCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWluZGV4ZWQgb24gYXBwbHkgfCBSZXRl bnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8g ICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlv biAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBm ICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBwICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAg IHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHMgICAgICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNz X2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCiAoMSBy b3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25h bWUgPSBOT05FKTsKQEAgLTUwNSwxOCArNTA1LDE4IEBAIENSRUFURSBTVUJTQ1JJUFRJT04g cmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlz dCcgUFVCCiBXQVJOSU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90 IGNvbm5lY3RlZAogSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBt YW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGVuYWJsZSB0aGUgc3Vic2Ny aXB0aW9uLCBhbmQgYWx0ZXIgdGhlIHN1YnNjcmlwdGlvbiB0byByZWZyZXNoIHB1YmxpY2F0 aW9ucy4KIFxkUnMrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwotICAgICAgTmFtZSAg ICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRp b24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBv biBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8 IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlv biBkdXJhdGlvbiB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91cyBjb21taXQgfCAg ICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1lb3V0IHwgIFNraXAg TFNOICB8IERlc2NyaXB0aW9uIAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQot IHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAg IHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQgICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAg ICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAg ICAgIHwgMC8wMDAwMDAwMCB8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0 aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBF bmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2Ug Y29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVk IHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQgdHVw bGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IEhPVC1pbmRleGVkIG9uIGFwcGx5IHwg UmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5p bmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3Jp cHRpb24gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2Vy IHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFyYWxsZWwgIHwgZCAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCB0ICAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAgICB8IGYgICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAgfCBzICAgICAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAog KDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoZGlz YWJsZV9vbl9lcnJvciA9IHRydWUpOwogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRp b25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVu YWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBj b21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQg fCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBs ZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNo cm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVy IHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8 IGQgICAgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAg ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAg ICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlz dCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwg UGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIg fCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWlu ZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0 IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBT a2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nf c3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBw YXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgdCAgICAgICAgICAgICAgICB8IGFueSAg ICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAg ICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHMg ICAgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAg ICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAg fCAwLzAwMDAwMDAwIHwgCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNz X3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKQEAgLTUyOSwxMCArNTI5LDEwIEBA IENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFt ZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCCiBXQVJOSU5HOiAgc3Vic2NyaXB0aW9uIHdh cyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZAogSElOVDogIFRvIGluaXRpYXRlIHJl cGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNs b3QsIGVuYWJsZSB0aGUgc3Vic2NyaXB0aW9uLCBhbmQgYWx0ZXIgdGhlIHN1YnNjcmlwdGlv biB0byByZWZyZXNoIHB1YmxpY2F0aW9ucy4KIFxkUnMrCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2Ny aXB0aW9ucwotICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAg fCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhh c2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVp cmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2VydmVyIHwgUmV0YWluIGRlYWQg dHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IFJldGVudGlvbiBhY3RpdmUgfCBT eW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNl aXZlciB0aW1lb3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAotLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2Ny aXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxl bCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IHQg ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAgICAgIHwg ZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IGYgICAgICAg ICAgICAgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QgfCAtMSAgICAgICAgICAgICAgIHwgMC8wMDAwMDAwMCB8IAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBT dHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdp biB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVyPyB8IEZhaWxvdmVyIHwgU2Vy dmVyIHwgUmV0YWluIGRlYWQgdHVwbGVzIHwgTWF4IHJldGVudGlvbiBkdXJhdGlvbiB8IEhP VC1pbmRleGVkIG9uIGFwcGx5IHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNocm9ub3VzIGNv bW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVyIHRpbWVvdXQg fCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdy ZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAg IHwgcGFyYWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBh bnkgICAgfCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8 ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDAg fCBzICAgICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBvZmYgICAgICAg ICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAtMSAgICAgICAgICAg ICAgIHwgMC8wMDAwMDAwMCB8IAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVn cmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CkBAIC01NDksMTAgKzU0OSwx MCBAQCBOT1RJQ0U6ICBtYXhfcmV0ZW50aW9uX2R1cmF0aW9uIGlzIGluZWZmZWN0aXZlIHdo ZW4gcmV0YWluX2RlYWRfdHVwbGVzIGlzIGRpc2FibAogV0FSTklORzogIHN1YnNjcmlwdGlv biB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQKIEhJTlQ6ICBUbyBpbml0aWF0 ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlv biBzbG90LCBlbmFibGUgdGhlIHN1YnNjcmlwdGlvbiwgYW5kIGFsdGVyIHRoZSBzdWJzY3Jp cHRpb24gdG8gcmVmcmVzaCBwdWJsaWNhdGlvbnMuCiBcZFJzKwotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1 YnNjcmlwdGlvbnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdv LXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBQYXNzd29yZCBy ZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8IFNlcnZlciB8IFJldGFpbiBk ZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24gfCBSZXRlbnRpb24gYWN0aXZl IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwg UmVjZWl2ZXIgdGltZW91dCB8ICBTa2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1 YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgcGFy YWxsZWwgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAg fCB0ICAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgfCBmICAgICAgICB8ICAgICAg ICB8IGYgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIDEwMDAgfCBmICAg ICAgICAgICAgICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0IHwgLTEgICAgICAgICAgICAgICB8IDAvMDAwMDAwMDAgfCAKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5 IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBP cmlnaW4gfCBQYXNzd29yZCByZXF1aXJlZCB8IFJ1biBhcyBvd25lcj8gfCBGYWlsb3ZlciB8 IFNlcnZlciB8IFJldGFpbiBkZWFkIHR1cGxlcyB8IE1heCByZXRlbnRpb24gZHVyYXRpb24g fCBIT1QtaW5kZXhlZCBvbiBhcHBseSB8IFJldGVudGlvbiBhY3RpdmUgfCBTeW5jaHJvbm91 cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBSZWNlaXZlciB0aW1l b3V0IHwgIFNraXAgTFNOICB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwg cmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYg ICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgYW55ICAgIHwgdCAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAg ICAgfCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAx MDAwIHwgcyAgICAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgb2ZmICAg ICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgLTEgICAgICAg ICAgICAgICB8IDAvMDAwMDAwMDAgfCAKICgxIHJvdykKIAogLS0gZmFpbCAtIG1heF9yZXRl bnRpb25fZHVyYXRpb24gbXVzdCBiZSBub24tbmVnYXRpdmUKQEAgLTU2MSwxMCArNTYxLDEw IEBAIEVSUk9SOiAgbWF4X3JldGVudGlvbl9kdXJhdGlvbiBjYW5ub3QgYmUgbmVnYXRpdmUK IC0tIG9rCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAobWF4X3Jl dGVudGlvbl9kdXJhdGlvbiA9IDApOwogXGRScysKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRp b25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVu YWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBj b21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgUGFzc3dvcmQgcmVxdWlyZWQg fCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIgfCBSZXRhaW4gZGVhZCB0dXBs ZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgUmV0ZW50aW9uIGFjdGl2ZSB8IFN5bmNo cm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFJlY2VpdmVy IHRpbWVvdXQgfCAgU2tpcCBMU04gIHwgRGVzY3JpcHRpb24gCi0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8 IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgdCAgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgZiAgICAgICAgfCAgICAgICAgfCBmICAg ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAwIHwgZiAgICAgICAgICAg ICAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlz dCB8IC0xICAgICAgICAgICAgICAgfCAwLzAwMDAwMDAwIHwgCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwg UGFzc3dvcmQgcmVxdWlyZWQgfCBSdW4gYXMgb3duZXI/IHwgRmFpbG92ZXIgfCBTZXJ2ZXIg fCBSZXRhaW4gZGVhZCB0dXBsZXMgfCBNYXggcmV0ZW50aW9uIGR1cmF0aW9uIHwgSE9ULWlu ZGV4ZWQgb24gYXBwbHkgfCBSZXRlbnRpb24gYWN0aXZlIHwgU3luY2hyb25vdXMgY29tbWl0 IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgUmVjZWl2ZXIgdGltZW91dCB8ICBT a2lwIExTTiAgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nf c3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBw YXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAg ICB8IHQgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgIHwgICAg ICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgMCB8IHMg ICAgICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG9mZiAgICAgICAgICAg ICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IC0xICAgICAgICAgICAgICAg fCAwLzAwMDAwMDAwIHwgCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNz X3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNv bi5idWlsZAppbmRleCBlNzFlOTVjNjI5Ny4uZjdlZTViODQ0OWEgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vbWVzb24uYnVpbGQKQEAgLTQ4LDYgKzQ4LDggQEAgdGVzdHMgKz0gewogICAgICAg J3QvMDM2X3NlcXVlbmNlcy5wbCcsCiAgICAgICAndC8wMzdfZXhjZXB0LnBsJywKICAgICAg ICd0LzAzOF93YWxzbmRfc2h1dGRvd25fdGltZW91dC5wbCcsCisgICAgICAndC8wMzlfaG90 X2luZGV4ZWRfYXBwbHkucGwnLAorICAgICAgJ3QvMDQwX2hvdF9pbmRleGVkX3JlcGxpY2Ff aWRlbnRpdHkucGwnLAogICAgICAgJ3QvMTAwX2J1Z3MucGwnLAogICAgIF0sCiAgIH0sCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzlfaG90X2luZGV4ZWRfYXBw bHkucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzlfaG90X2luZGV4ZWRfYXBwbHku cGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZlMTA4ZTZmMDgx Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM5X2hvdF9p bmRleGVkX2FwcGx5LnBsCkBAIC0wLDAgKzEsNDE2IEBACisKKyMgQ29weXJpZ2h0IChjKSAy MDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIFBlci1zdWJz Y3JpcHRpb24gaG90X2luZGV4ZWRfb25fYXBwbHkgb3B0aW9uOiBwYXJzZXIsIGNhdGFsb2cg cm91bmQtdHJpcCwKKyMgQUxURVIgYmVoYXZpb3VyLCBhbmQgYXBwbHktcGF0aCBnYXRpbmcg dW5kZXIgZWFjaCBvZiB0aGUgdGhyZWUgbW9kZXMuCit1c2Ugc3RyaWN0OwordXNlIHdhcm5p bmdzIEZBVEFMID0+ICdhbGwnOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1 c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKK3VzZSBUaW1l OjpIaVJlcyBxdyh1c2xlZXApOworCitteSAkcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKKyRwdWJsaXNoZXItPmluaXQoYWxsb3dz X3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJHB1Ymxpc2hlci0+c3RhcnQ7CisKK215ICRz dWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdWJzY3JpYmVy Jyk7Ciskc3Vic2NyaWJlci0+aW5pdDsKKyRzdWJzY3JpYmVyLT5zdGFydDsKKworbXkgJHB1 Yl9jb25uaW5mbyA9ICRwdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7 CisKKyMgLS0tIFNjaGVtYSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIHRhYl9leHRyYSBoYXMgYW4gZXh0cmEg YnRyZWUgaW5kZXggYmV5b25kIHRoZSBwcmltYXJ5IGtleSBvbiB0aGUKKyMgc3Vic2NyaWJl ciBzaWRlOyB0aGF0IGlzIHRoZSBzY2hlbWEgc2hhcGUgdGhhdCBzdWJzZXRfb25seSBtdXN0 IGRlbW90ZQorIyB0byBub24tSE9UIG9uIGFwcGx5IGJ1dCBhbHdheXMgbXVzdCBsZXQgdGhy b3VnaC4KKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7Q1JFQVRFIFRB QkxFIHRhYl9leHRyYSAoaWQgaW50IFBSSU1BUlkgS0VZLCBwYXlsb2FkIGludCwgdGFnIHRl eHQpfSk7CisKKyMgdGFiX3BrIGhhcyBvbmx5IHRoZSBwcmltYXJ5IGtleTsgaW5kZXhlZC1h dHRyIHNldCBpcyBhIHN1YnNldCBvZiB0aGUgUEsKKyMgYXR0cnMsIHNvIHN1YnNldF9vbmx5 IGFuZCBhbHdheXMgc2hvdWxkIGJvdGggYWxsb3cgSE9ULWluZGV4ZWQgb24gYXBwbHkuCisk cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe0NSRUFURSBUQUJMRSB0YWJf cGsgKGlkIGludCBQUklNQVJZIEtFWSwgcGF5bG9hZCBpbnQpfSk7CisKKyRwdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7Q1JFQVRFIFBVQkxJQ0FUSU9OIHB1YiBGT1Ig VEFCTEUgdGFiX2V4dHJhLCB0YWJfcGt9KTsKKworIyBTdWJzY3JpYmVyIG1pcnJvcnMgYm90 aCB0YWJsZXMuICB0YWJfZXh0cmEgaGFzIHRoZSBleHRyYSBzZWNvbmRhcnkgaW5kZXgKKyMg b25seSBvbiB0aGUgc3Vic2NyaWJlciwgd2hpY2ggaXMgdGhlIHNjaGVtYS1kaXZlcmdlbmNl IGNhc2UgdGhlIG9wdGlvbgorIyBnYXRlcy4KKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwlxe0NSRUFURSBUQUJMRSB0YWJfZXh0cmEgKGlkIGludCBQUklNQVJZIEtF WSwgcGF5bG9hZCBpbnQsIHRhZyB0ZXh0KX0pOworJHN1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCXF7Q1JFQVRFIElOREVYIHRhYl9leHRyYV9wYXlsb2FkX2lkeCBPTiB0 YWJfZXh0cmEocGF5bG9hZCl9KTsKKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwlxe0NSRUFURSBUQUJMRSB0YWJfcGsgKGlkIGludCBQUklNQVJZIEtFWSwgcGF5bG9h ZCBpbnQpfSk7CisKKyMgLS0tIFBhcnNlciAvIGNhdGFsb2cgY2hlY2tzIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRGVmYXVsdCBvbiBmcmVz aCBzdWJzY3JpcHRpb24gaXMgJ3MnIChzdWJzZXRfb25seSkuCiskc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCUNSRUFURSBTVUJTQ1JJUFRJT04gc3ViX2RlZmF1 bHQKKwkgIENPTk5FQ1RJT04gJyRwdWJfY29ubmluZm8nCisJICBQVUJMSUNBVElPTiBwdWIK KwkgIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwgc2xvdF9uYW1lID0gTk9ORSwgZW5hYmxlZCA9 IGZhbHNlLAorCSAgICAgICAgY3JlYXRlX3Nsb3QgPSBmYWxzZSk7Cit9KTsKK2lzKCAkc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCXF7U0VMRUNUIHN1YmhvdGluZGV4 ZWRvbmFwcGx5IEZST00gcGdfc3Vic2NyaXB0aW9uCisJCSAgV0hFUkUgc3VibmFtZSA9ICdz dWJfZGVmYXVsdCd9KSwKKwkncycsCisJJ2ZyZXNoIHN1YnNjcmlwdGlvbiBkZWZhdWx0cyB0 byBzdWJzZXRfb25seScpOworCisjIEV4cGxpY2l0ICdhbHdheXMnIGlzIHN0b3JlZCBhcyAn YScuCiskc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCUNSRUFURSBT VUJTQ1JJUFRJT04gc3ViX2Fsd2F5c19wCisJICBDT05ORUNUSU9OICckcHViX2Nvbm5pbmZv JworCSAgUFVCTElDQVRJT04gcHViCisJICBXSVRIIChjb25uZWN0ID0gZmFsc2UsIHNsb3Rf bmFtZSA9IE5PTkUsIGVuYWJsZWQgPSBmYWxzZSwKKwkgICAgICAgIGNyZWF0ZV9zbG90ID0g ZmFsc2UsIGhvdF9pbmRleGVkX29uX2FwcGx5ID0gJ2Fsd2F5cycpOworfSk7CitpcyggJHN1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQlxe1NFTEVDVCBzdWJob3RpbmRl eGVkb25hcHBseSBGUk9NIHBnX3N1YnNjcmlwdGlvbgorCQkgIFdIRVJFIHN1Ym5hbWUgPSAn c3ViX2Fsd2F5c19wJ30pLAorCSdhJywKKwknQ1JFQVRFIHdpdGggaG90X2luZGV4ZWRfb25f YXBwbHkgPSBhbHdheXMgc3RvcmVzIGEnKTsKKworIyBBTFRFUiBTVUJTQ1JJUFRJT04gU0VU IHVwZGF0ZXMgdGhlIGNvbHVtbi4KKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwlxe0FMVEVSIFNVQlNDUklQVElPTiBzdWJfZGVmYXVsdCBTRVQgKGhvdF9pbmRleGVk X29uX2FwcGx5ID0gJ29mZicpfSk7CitpcyggJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQlxe1NFTEVDVCBzdWJob3RpbmRleGVkb25hcHBseSBGUk9NIHBnX3N1YnNj cmlwdGlvbgorCQkgIFdIRVJFIHN1Ym5hbWUgPSAnc3ViX2RlZmF1bHQnfSksCisJJ28nLAor CSdBTFRFUiBTVUJTQ1JJUFRJT04gU0VUIGhvdF9pbmRleGVkX29uX2FwcGx5ID0gb2ZmIHN0 b3JlcyBvJyk7CisKKyMgVW5rbm93biB2YWx1ZXMgYXJlIHJlamVjdGVkLgorbXkgKCRyZXQs ICRzdGRvdXQsICRzdGRlcnIpID0gJHN1YnNjcmliZXItPnBzcWwoJ3Bvc3RncmVzJywgcXF7 CisJQ1JFQVRFIFNVQlNDUklQVElPTiBzdWJfYm9ndXMKKwkgIENPTk5FQ1RJT04gJyRwdWJf Y29ubmluZm8nCisJICBQVUJMSUNBVElPTiBwdWIKKwkgIFdJVEggKGNvbm5lY3QgPSBmYWxz ZSwgc2xvdF9uYW1lID0gTk9ORSwgZW5hYmxlZCA9IGZhbHNlLAorCSAgICAgICAgY3JlYXRl X3Nsb3QgPSBmYWxzZSwgaG90X2luZGV4ZWRfb25fYXBwbHkgPSAnYm9ndXMnKTsKK30pOwor aXNudCgkcmV0LCAwLCAnYm9ndXMgaG90X2luZGV4ZWRfb25fYXBwbHkgdmFsdWUgaXMgcmVq ZWN0ZWQnKTsKK2xpa2UoJHN0ZGVyciwKKwkgcXIvdW5yZWNvZ25pemVkIHZhbHVlIGZvciBz dWJzY3JpcHRpb24gcGFyYW1ldGVyICJob3RfaW5kZXhlZF9vbl9hcHBseSIvLAorCSAnYm9n dXMgaG90X2luZGV4ZWRfb25fYXBwbHkgdmFsdWUgcmVwb3J0cyB0aGUgZXhwZWN0ZWQgZXJy b3InKTsKKworIyBEcm9wIHRoZSBwbGFjZWhvbGRlciBzdWJzY3JpcHRpb25zIHNvIHdlIGNh biByZWJ1aWxkIHdpdGggcmVhbCBzbG90cy4KKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHN1Yl9kZWZhdWx0Jyk7Ciskc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFNVQlNDUklQVElPTiBzdWJfYWx3YXlz X3AnKTsKKworIyAtLS0gQXBwbHktcGF0aCBiZWhhdmlvdXIgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBQcmUtcG9wdWxhdGUgYm90aCBz aWRlcyBpZGVudGljYWxseSBzbyB3ZSBjYW4gdXNlIGNvcHlfZGF0YT1mYWxzZSBhbmQKKyMg YXZvaWQgZHVwbGljYXRlLWtleSBjb25mbGljdHMgd2hlbiB3ZSByZWNyZWF0ZSBzdWJzY3Jp cHRpb25zIGFjcm9zcyB0aGUKKyMgdGhyZWUgdGVzdCBjYXNlcy4gIFdlIHVwZGF0ZSBub24t b3ZlcmxhcHBpbmcgaWQgcmFuZ2VzIHBlciBjYXNlIHNvIHRoZQorIyBwZ19zdGF0IGNvdW50 ZXJzIHNlZ21lbnQgY2xlYW5seS4KKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCXF7SU5TRVJUIElOVE8gdGFiX2V4dHJhCisJICBTRUxFQ1QgZywgMCwgJ3QnIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgZ30pOworJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJcXtJTlNFUlQgSU5UTyB0YWJfcGsKKwkgIFNFTEVDVCBnLCAwIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgZ30pOworJHN1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCXF7SU5TRVJUIElOVE8gdGFiX2V4dHJhCisJICBTRUxFQ1QgZywgMCwg J3QnIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgZ30pOworJHN1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7SU5TRVJUIElOVE8gdGFiX3BrCisJICBTRUxFQ1Qg ZywgMCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDApIGd9KTsKKworIyBIZWxwZXI6IHJl YWQgY291bnRlcnMgYW5kIHBvbGwgdXAgdG8gMTAgcyBmb3Igbl90dXBfdXBkIHRvIHJlYWNo IGEKKyMgbWluaW11bSB0YXJnZXQgdmFsdWUgKHRoZSBhcHBseSB3b3JrZXIgZmx1c2hlcyBw Z3N0YXQgYXN5bmNocm9ub3VzbHkpLgorc3ViIHBvbGxfY291bnRlcnMKK3sKKwlteSAoJG5v ZGUsICR0YWJsZSwgJHVwZF90YXJnZXQpID0gQF87CisKKwlteSAkZGVhZGxpbmUgPSB0aW1l KCkgKyAxMDsKKwlteSAkcm93ID0gJyc7CisJd2hpbGUgKDEpCisJeworCQkkcm93ID0gJG5v ZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkJcXF7U0VMRUNUIGNvYWxlc2NlKG5fdHVw X3VwZCwgMCksCisJCQkgICAgICAgICAgY29hbGVzY2Uobl90dXBfaG90X3VwZCwgMCksCisJ CQkgICAgICAgICAgY29hbGVzY2Uobl90dXBfaG90X2luZGV4ZWRfdXBkLCAwKQorCQkJICAg RlJPTSBwZ19zdGF0X3VzZXJfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAnJHRhYmxlJ30pOwor CQlteSAoJHVwZCkgPSBzcGxpdCAvXHwvLCAkcm93OworCQlsYXN0IGlmICgkdXBkICsgMCkg Pj0gJHVwZF90YXJnZXQgfHwgdGltZSgpID49ICRkZWFkbGluZTsKKwkJdXNsZWVwKDEwMF8w MDApOworCX0KKwlteSAoJHVwZCwgJGhvdCwgJGhvdF9pZHgpID0gc3BsaXQgL1x8LywgJHJv dzsKKwlyZXR1cm4gKCR1cGQgKyAwLCAkaG90ICsgMCwgJGhvdF9pZHggKyAwKTsKK30KKwor IyBIZWxwZXI6IGZpcmUgVVBEQVRFcyB0aGF0IHRvdWNoIHRoZSBpbmRleGVkIHBheWxvYWQg Y29sdW1uIG9uIGEgZ2l2ZW4KKyMgaWQgcmFuZ2UgYW5kIHJldHVybiB0aGUgZGVsdGFzIGlu IChuX3R1cF91cGQsIG5fdHVwX2hvdF91cGQsCisjIG5fdHVwX2hvdF9pbmRleGVkX3VwZCkg b24gdGhlIHN1YnNjcmliZXIuCitzdWIgYXBwbHlfdXBkYXRlc19hbmRfcmVhZAoreworCW15 ICgkdGFibGUsICRzdWJfbmFtZSwgJGlkX2xvLCAkaWRfaGkpID0gQF87CisKKwlteSAoJHVw ZDAsICRob3QwLCAkaG90aWR4MCkgPQorCSAgcG9sbF9jb3VudGVycygkc3Vic2NyaWJlciwg JHRhYmxlLCAwKTsKKworCWZvciBteSAkaSAoJGlkX2xvIC4uICRpZF9oaSkKKwl7CisJCSRw dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkJIlVQREFURSAkdGFibGUgU0VU IHBheWxvYWQgPSBwYXlsb2FkICsgMSBXSEVSRSBpZCA9ICRpIik7CisJfQorCSRwdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJHN1Yl9uYW1lKTsKKworCW15ICRuID0gJGlkX2hpIC0g JGlkX2xvICsgMTsKKwlteSAoJHVwZDEsICRob3QxLCAkaG90aWR4MSkgPQorCSAgcG9sbF9j b3VudGVycygkc3Vic2NyaWJlciwgJHRhYmxlLCAkdXBkMCArICRuKTsKKwlub3RlKCIkdGFi bGUgJHN1Yl9uYW1lICRpZF9sby4uJGlkX2hpOiBkbl91cGQ9IgorCQkgLiAoJHVwZDEgLSAk dXBkMCkgLiAiIGRob3Q9IiAuICgkaG90MSAtICRob3QwKQorCQkgLiAiIGRob3RpZHg9IiAu ICgkaG90aWR4MSAtICRob3RpZHgwKSk7CisJcmV0dXJuICgkdXBkMSAtICR1cGQwLCAkaG90 MSAtICRob3QwLCAkaG90aWR4MSAtICRob3RpZHgwKTsKK30KKworIyBDYXNlIDE6IG9mZiwg c3Vic2NyaWJlci1vbmx5IHNlY29uZGFyeSBpbmRleC4gIEhPVC1pbmRleGVkIG11c3QgYmUK KyMgc3VwcHJlc3NlZCBvbiB0YWJfZXh0cmEuICBQbGFpbiBIT1QgdXBkYXRlcyBhbHNvIHN0 YXkgemVybyBiZWNhdXNlIGV2ZXJ5CisjIFVQREFURSB0b3VjaGVzIGBwYXlsb2FkYCB3aGlj aCBpcyBpbmRleGVkIG9uIHRoZSBzdWJzY3JpYmVyLgorJHN1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCBxcXsKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHN1Yl9vZmYKKwkgIENP Tk5FQ1RJT04gJyRwdWJfY29ubmluZm8nCisJICBQVUJMSUNBVElPTiBwdWIKKwkgIFdJVEgg KHNsb3RfbmFtZSA9ICdzdWJfb2ZmX3Nsb3QnLCBjcmVhdGVfc2xvdCA9IHRydWUsCisJICAg ICAgICBob3RfaW5kZXhlZF9vbl9hcHBseSA9ICdvZmYnLCBjb3B5X2RhdGEgPSBmYWxzZSk7 Cit9KTsKKyRwdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3N1Yl9vZmYnKTsKKworbXkg KHVuZGVmLCB1bmRlZiwgJG9mZl9leHRyYV9ob3RpZHgpID0KKyAgYXBwbHlfdXBkYXRlc19h bmRfcmVhZCgndGFiX2V4dHJhJywgJ3N1Yl9vZmYnLCAxLCAyMCk7Citpcygkb2ZmX2V4dHJh X2hvdGlkeCwgMCwKKyAgICdob3RfaW5kZXhlZF9vbl9hcHBseSA9IG9mZjogbm8gSE9ULWlu ZGV4ZWQgdXBkYXRlcyBvbiB0YWJfZXh0cmEnKTsKKworJHN1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJUFRJT04gc3ViX29mZicpOworCisjIENhc2Ug Mjogc3Vic2V0X29ubHkuICBPbiB0YWJfcGsgKG5vIHNlY29uZGFyeSBpbmRleCwgaW5kZXhl ZC1hdHRyIHNldCBpcworIyBhIHN1YnNldCBvZiBQSyBhdHRycyksIGNsYXNzaWMgSE9UIG11 c3QgZmlyZSBiZWNhdXNlIGBwYXlsb2FkYCBpcyBub3QKKyMgaW5kZXhlZCB0aGVyZS4gIE9u IHRhYl9leHRyYSAoc3Vic2NyaWJlcidzIGBwYXlsb2FkYCBpbmRleCBpcyBOT1QgY292ZXJl ZAorIyBieSB0aGUgUEspLCB0aGUgYXBwbHkgd29ya2VyIG11c3QgZGVtb3RlIHRvIG5vbi1I T1QganVzdCBsaWtlICdvZmYnLgorJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCBxcXsKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHN1Yl9zdWJzZXQKKwkgIENPTk5FQ1RJT04g JyRwdWJfY29ubmluZm8nCisJICBQVUJMSUNBVElPTiBwdWIKKwkgIFdJVEggKHNsb3RfbmFt ZSA9ICdzdWJfc3Vic2V0X3Nsb3QnLCBjcmVhdGVfc2xvdCA9IHRydWUsCisJICAgICAgICBo b3RfaW5kZXhlZF9vbl9hcHBseSA9ICdzdWJzZXRfb25seScsIGNvcHlfZGF0YSA9IGZhbHNl KTsKK30pOworJHB1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc3ViX3N1YnNldCcpOwor CitteSAodW5kZWYsICRzc19wa19ob3QsICRzc19wa19ob3RpZHgpID0KKyAgYXBwbHlfdXBk YXRlc19hbmRfcmVhZCgndGFiX3BrJywgJ3N1Yl9zdWJzZXQnLCAxLCAyMCk7CitjbXBfb2so JHNzX3BrX2hvdCwgJz4nLCAwLAorCSAgICdob3RfaW5kZXhlZF9vbl9hcHBseSA9IHN1YnNl dF9vbmx5OiBjbGFzc2ljIEhPVCBmaXJlcyBvbiB0YWJfcGsnKTsKKworbXkgKHVuZGVmLCB1 bmRlZiwgJHNzX2V4dHJhX2hvdGlkeCkgPQorICBhcHBseV91cGRhdGVzX2FuZF9yZWFkKCd0 YWJfZXh0cmEnLCAnc3ViX3N1YnNldCcsIDIxLCA0MCk7Citpcygkc3NfZXh0cmFfaG90aWR4 LCAwLAorICAgJ2hvdF9pbmRleGVkX29uX2FwcGx5ID0gc3Vic2V0X29ubHk6IG5vIEhPVC1p bmRleGVkIG9uIHRhYl9leHRyYScpOworCiskc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICdEUk9QIFNVQlNDUklQVElPTiBzdWJfc3Vic2V0Jyk7CisKKyMgQ2FzZSAzOiBh bHdheXMuICBVbmNvbmRpdGlvbmFsIEhPVC1pbmRleGVkIGVsaWdpYmlsaXR5LiAgT24gdGFi X2V4dHJhCisjIHVwZGF0ZXMgdG91Y2hpbmcgdGhlIGluZGV4ZWQgcGF5bG9hZCBjb2x1bW4g c2hvdWxkIG5vdyBydW4gb24gdGhlCisjIEhPVC1pbmRleGVkIHBhdGg6IG5fdHVwX2hvdF9p bmRleGVkX3VwZCBtdXN0IGluY3JlYXNlLgorJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCBxcXsKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHN1Yl9hbHdheXMKKwkgIENPTk5F Q1RJT04gJyRwdWJfY29ubmluZm8nCisJICBQVUJMSUNBVElPTiBwdWIKKwkgIFdJVEggKHNs b3RfbmFtZSA9ICdzdWJfYWx3YXlzX3Nsb3QnLCBjcmVhdGVfc2xvdCA9IHRydWUsCisJICAg ICAgICBob3RfaW5kZXhlZF9vbl9hcHBseSA9ICdhbHdheXMnLCBjb3B5X2RhdGEgPSBmYWxz ZSk7Cit9KTsKKyRwdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3N1Yl9hbHdheXMnKTsK KworbXkgKHVuZGVmLCB1bmRlZiwgJGFsX2V4dHJhX2hvdGlkeCkgPQorICBhcHBseV91cGRh dGVzX2FuZF9yZWFkKCd0YWJfZXh0cmEnLCAnc3ViX2Fsd2F5cycsIDQxLCA4MCk7CitjbXBf b2soJGFsX2V4dHJhX2hvdGlkeCwgJz4nLCAwLAorCSAgICdob3RfaW5kZXhlZF9vbl9hcHBs eSA9IGFsd2F5czogSE9ULWluZGV4ZWQgZmlyZXMgb24gdGFiX2V4dHJhJyk7CisKKyMgQUxU RVIgYmFjayB0byBvZmYgYW5kIHZlcmlmeSB0aGUgYXBwbHkgd29ya2VyIHBpY2tzIHVwIHRo ZSBuZXcgbW9kZS4KKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe0FM VEVSIFNVQlNDUklQVElPTiBzdWJfYWx3YXlzIFNFVCAoaG90X2luZGV4ZWRfb25fYXBwbHkg PSAnb2ZmJyl9KTsKK2lzKCAkc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CXF7U0VMRUNUIHN1YmhvdGluZGV4ZWRvbmFwcGx5IEZST00gcGdfc3Vic2NyaXB0aW9uCisJ CSAgV0hFUkUgc3VibmFtZSA9ICdzdWJfYWx3YXlzJ30pLAorCSdvJywKKwknQUxURVIgc3Vi X2Fsd2F5cyBTRVQgaG90X2luZGV4ZWRfb25fYXBwbHkgPSBvZmYgcGVyc2lzdHMnKTsKKwor IyBEcml2ZSBhbm90aGVyIGJhdGNoIG9mIHVwZGF0ZXMgYW5kIGNvbmZpcm0gbl90dXBfaG90 X2luZGV4ZWRfdXBkIGRvZXMgTk9UCisjIGFkdmFuY2UgYWZ0ZXIgdGhlIHdvcmtlciByZXJl YWRzIHRoZSBjYXRhbG9nLgorbXkgKHVuZGVmLCB1bmRlZiwgJHBvc3RfYWx0ZXJfaG90aWR4 KSA9CisgIGFwcGx5X3VwZGF0ZXNfYW5kX3JlYWQoJ3RhYl9leHRyYScsICdzdWJfYWx3YXlz JywgODEsIDEwMCk7CitpcygkcG9zdF9hbHRlcl9ob3RpZHgsIDAsCisgICAnQUxURVIgdG8g b2ZmIGZyZWV6ZXMgbl90dXBfaG90X2luZGV4ZWRfdXBkIGFmdGVyIHdvcmtlciByZXJlYWQn KTsKKworJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJ UFRJT04gc3ViX2Fsd2F5cycpOworCisjIC0tLSBTdWJzY3JpYmVyIElOU0VSVC1hZnRlci1y ZXBsaWNhdGVkLVVQREFURSBwZXIgbW9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tCisjCisjIFZl cmlmeSB0aGF0IGEgc3Vic2NyaWJlciBJTlNFUlQgdXNpbmcgdGhlIE9MRCB2YWx1ZSBvZiBh IHJlcGxpY2F0ZWQKKyMgVVBEQVRFJ3MgaW5kZXhlZCBjb2x1bW4gc3VjY2VlZHMgd2l0aG91 dCBhIHNwdXJpb3VzIHVuaXF1ZS12aW9sYXRpb24KKyMgdW5kZXIgZWFjaCBhcHBseSBtb2Rl LiAgVXNlIGEgZGVkaWNhdGVkIHRhYmxlICh0YWJfdWspIHNvIHRoZSB1bmlxdWUKKyMgY29u c3RyYWludCBjYW4gYmUgZGVmaW5lZCB1cC1mcm9udCBhbmQgdGhlIHRlc3QgZG9lcyBub3Qg Y29sbGlkZSB3aXRoCisjIHByZS1wb3B1bGF0ZWQgcm93cyBmcm9tIHRoZSBhcHBseS1wYXRo IHNjZW5hcmlvcyBhYm92ZS4KKyMKKyMgUHVibGlzaGVyIHVwZGF0ZXMgcm93ICR1cGRfaWQg Y2hhbmdpbmcgcGF5bG9hZCBmcm9tIDAgdG8gOTk5LiAgVGhlCisjIHN1YnNjcmliZXIgdGhl biBpbnNlcnRzIGEgZnJlc2ggcm93IHdpdGggcGF5bG9hZD0wICh0aGUgcHJlLXVwZGF0ZQor IyB2YWx1ZSkuICBVbmRlciBhbGwgdGhyZWUgbW9kZXMgX2J0X2NoZWNrX3VuaXF1ZSdzIHJl Y2hlY2sgb2YgdGhlCisjIGNvbmZsaWN0aW5nIHR1cGxlJ3MgbGl2ZSBrZXkgbXVzdCByZWNv Z25pemUgdGhlIHN0YWxlIGxlYWYgZW50cnkgcG9pbnRpbmcKKyMgYXQgdGhlIGNoYWluIHJv b3QsIHNvIHRoZSBJTlNFUlQgc3VjY2VlZHMuCisKKyRwdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCXF7Q1JFQVRFIFRBQkxFIHRhYl91ayAoCisJICAgIGlkICAgICAgaW50 IFBSSU1BUlkgS0VZLAorCSAgICBwYXlsb2FkIGludCwKKwkgICAgdGFnICAgICB0ZXh0LAor CSAgICBVTklRVUUgKHBheWxvYWQsIHRhZykpfSk7Ciskc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJcXtDUkVBVEUgVEFCTEUgdGFiX3VrICgKKwkgICAgaWQgICAgICBp bnQgUFJJTUFSWSBLRVksCisJICAgIHBheWxvYWQgaW50LAorCSAgICB0YWcgICAgIHRleHQs CisJICAgIFVOSVFVRSAocGF5bG9hZCwgdGFnKSl9KTsKKyRwdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCXF7QUxURVIgUFVCTElDQVRJT04gcHViIEFERCBUQUJMRSB0YWJf dWt9KTsKKworZm9yIG15ICRtb2RlICgnb2ZmJywgJ3N1YnNldF9vbmx5JywgJ2Fsd2F5cycp Cit7CisJbXkgJGJhc2VfaWQgPSAoJG1vZGUgZXEgJ29mZicpID8gMQorCSAgICAgICAgICAg ICAgOiAoJG1vZGUgZXEgJ3N1YnNldF9vbmx5JykgPyAxMDAgOiAyMDA7CisJbXkgJHVwZF9p ZCAgPSAkYmFzZV9pZCArIDE7CisJbXkgJGluc19pZCAgPSAkYmFzZV9pZCArIDI7CisKKwkj IFNlZWQgYSByb3cgdGhhdCB3ZSB3aWxsIFVQREFURSBvbiB0aGUgcHVibGlzaGVyIChwYXls b2FkIHN0YXJ0cyBhdCAwKSwKKwkjIGFuZCBkcmFpbiB0aGUgYXBwbHkgZm9yIGl0IGJlZm9y ZSBjaGFuZ2luZyBwYXlsb2FkLgorCSRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCQkiSU5TRVJUIElOVE8gdGFiX3VrIFZBTFVFUyAoJHVwZF9pZCwgMCwgJ21vZGVfJG1v ZGUnKSIpOworCisJJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwkJ Q1JFQVRFIFNVQlNDUklQVElPTiBzdWJfdWtfJG1vZGUKKwkJICBDT05ORUNUSU9OICckcHVi X2Nvbm5pbmZvJworCQkgIFBVQkxJQ0FUSU9OIHB1YgorCQkgIFdJVEggKHNsb3RfbmFtZSA9 ICdzdWJfdWtfJHttb2RlfV9zbG90JywgY3JlYXRlX3Nsb3QgPSB0cnVlLAorCQkgICAgICAg IGhvdF9pbmRleGVkX29uX2FwcGx5ID0gJyRtb2RlJywgY29weV9kYXRhID0gdHJ1ZSk7CisJ fSk7CisJJHB1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgic3ViX3VrXyRtb2RlIik7CisK KwkjIFB1Ymxpc2hlciBVUERBVEU6IHBheWxvYWQgMCAtPiA5OTkuCisJJHB1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJVUERBVEUgdGFiX3VrIFNFVCBwYXlsb2FkID0g OTk5IFdIRVJFIGlkID0gJHVwZF9pZCIpOworCSRwdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoInN1Yl91a18kbW9kZSIpOworCisJIyBTdWJzY3JpYmVyIElOU0VSVCB3aXRoIHRoZSBP TEQgcGF5bG9hZCB2YWx1ZSBidXQgYSB1bmlxdWUgdGFnLiAgVGhlCisJIyBleGlzdGluZyBj aGFpbiBsZWFmIHdpdGgga2V5ICgwLCAnbW9kZV8kbW9kZScpIGlzIG5vdyBzdGFsZTogdGhl CisJIyBsaXZlIHR1cGxlIGF0IHRoZSBjaGFpbiByb290IGhhcyBwYXlsb2FkPTk5OS4gIF9i dF9jaGVja191bmlxdWUKKwkjIHJlY2hlY2tzIHRoZSBjb25mbGljdGluZyB0dXBsZSdzIGxp dmUga2V5IGFuZCByZWNvZ25pemVzIHRoZSBzdGFsZQorCSMgbGVhZiwgYWxsb3dpbmcgdGhp cyBJTlNFUlQgdG8gc3VjY2VlZC4KKwlteSAoJHIsICRvdXQsICRlcnIpID0gJHN1YnNjcmli ZXItPnBzcWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHRhYl91ayBWQUxVRVMgKCRp bnNfaWQsIDAsICdmcmVzaF8kbW9kZScpIik7CisJaXMoJHIsIDAsCisJICAgImhvdF9pbmRl eGVkX29uX2FwcGx5ID0gJG1vZGU6ICIKKwkgICAuICJzdWJzY3JpYmVyIElOU0VSVCB3aXRo IG9sZCBwYXlsb2FkIHZhbHVlIHN1Y2NlZWRzIik7CisJbGlrZSgkZXJyLCBxci9eJC8sCisJ CSAiaG90X2luZGV4ZWRfb25fYXBwbHkgPSAkbW9kZTogIgorCQkgLiAiSU5TRVJUIGRpZCBu b3QgcmFpc2UgYW4gZXJyb3IiKTsKKworCSRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIkRST1AgU1VCU0NSSVBUSU9OIHN1Yl91a18kbW9kZSIpOworfQorCisjIC0t LSBhbHdheXMtbW9kZSBzYWZldHkgd2l0aCBpbmRleGVkIGF0dHJzIGJleW9uZCB0aGUgcmVw bGljYSBpZGVudGl0eSAtLS0tLQorIworIyBBbWl0J3MgY29ybmVyOiB1bmRlciBob3RfaW5k ZXhlZF9vbl9hcHBseSA9ICdhbHdheXMnIHRoZSBhcHBseSB3b3JrZXIgbWF5CisjIHJ1biBh IEhPVC1pbmRleGVkIHVwZGF0ZSBldmVuIHdoZW4gdGhlIHRhYmxlIGhhcyBhbiBpbmRleGVk IGF0dHJpYnV0ZSB0aGF0CisjIGlzIE5PVCBjb3ZlcmVkIGJ5IHRoZSByZXBsaWNhIGlkZW50 aXR5LiAgVGhlIHJlYWQtc2lkZSBzdGFsZW5lc3MgbWVjaGFuaXNtCisjIG11c3Qgc3RpbGwg bGV0IHRoZSBhcHBseSB3b3JrZXIncyBsYXRlciByZXBsaWNhLWlkZW50aXR5IGxvb2t1cHMg ZmluZCB0aGUKKyMgcm93LCBhbmQgREVMRVRFL1VQREFURSByZXBsaWNhdGlvbiBtdXN0IGNv bnZlcmdlLCBpbmNsdWRpbmcgd2hlbiB0aGUKKyMgcmVwbGljYS1pZGVudGl0eSBjb2x1bW4g aXRzZWxmIGlzIGN5Y2xlZCBhd2F5IGFuZCBiYWNrIChBQkEpLgorIworIyB0YWJfcmk6IHJl cGxpY2EgaWRlbnRpdHkgaXMgYSBVTklRVUUgaW5kZXggb24gcmlkIChub3QgdGhlIFBLKSwg YW5kIHRoZXJlCisjIGlzIGFuIGV4dHJhIHNlY29uZGFyeSBpbmRleCBvbiBwYXlsb2FkIHRo YXQgaXMgTk9UIHBhcnQgb2YgdGhlIHJlcGxpY2EKKyMgaWRlbnRpdHkuICBTbyBhIHBheWxv YWQgY2hhbmdlIG1ha2VzIHRoZSBwYXlsb2FkIGxlYWYgc3RhbGUsIGFuZCBhbiByaWQKKyMg QUJBIGN5Y2xlIG1ha2VzIHRoZSByaWQgKHJlcGxpY2EtaWRlbnRpdHkpIGxlYWYgc3RhbGUg LS0gYm90aCB3aGlsZQorIyAnYWx3YXlzJyBrZWVwcyB0aGUgdXBkYXRlcyBvbiB0aGUgSE9U IGNoYWluLgorJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJQ1JFQVRF IFRBQkxFIHRhYl9yaSAoaWQgaW50IFBSSU1BUlkgS0VZLCByaWQgaW50IE5PVCBOVUxMLCBw YXlsb2FkIGludCk7CisJQ1JFQVRFIFVOSVFVRSBJTkRFWCB0YWJfcmlfcmlkX3VrIE9OIHRh Yl9yaShyaWQpOworCUFMVEVSIFRBQkxFIHRhYl9yaSBSRVBMSUNBIElERU5USVRZIFVTSU5H IElOREVYIHRhYl9yaV9yaWRfdWs7CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1Yl9yaSBGT1Ig VEFCTEUgdGFiX3JpOworfSk7Ciskc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs IHF7CisJQ1JFQVRFIFRBQkxFIHRhYl9yaSAoaWQgaW50IFBSSU1BUlkgS0VZLCByaWQgaW50 IE5PVCBOVUxMLCBwYXlsb2FkIGludCk7CisJQ1JFQVRFIFVOSVFVRSBJTkRFWCB0YWJfcmlf cmlkX3VrIE9OIHRhYl9yaShyaWQpOworCUFMVEVSIFRBQkxFIHRhYl9yaSBSRVBMSUNBIElE RU5USVRZIFVTSU5HIElOREVYIHRhYl9yaV9yaWRfdWs7CisJQ1JFQVRFIElOREVYIHRhYl9y aV9wYXlsb2FkX2lkeCBPTiB0YWJfcmkocGF5bG9hZCk7Cit9KTsKKworJHB1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtJTlNFUlQgSU5UTyB0YWJfcmkgVkFMVUVTICgx LCAxMCwgMCksICgyLCAyMCwgMCl9KTsKKworJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCBxcXsKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHN1Yl9yaQorCSAgQ09OTkVDVElP TiAnJHB1Yl9jb25uaW5mbycKKwkgIFBVQkxJQ0FUSU9OIHB1Yl9yaQorCSAgV0lUSCAoc2xv dF9uYW1lID0gJ3N1Yl9yaV9zbG90JywgY3JlYXRlX3Nsb3QgPSB0cnVlLAorCSAgICAgICAg aG90X2luZGV4ZWRfb25fYXBwbHkgPSAnYWx3YXlzJywgY29weV9kYXRhID0gdHJ1ZSk7Cit9 KTsKKyMgV2FpdCBmb3IgdGhlIGluaXRpYWwgdGFibGUgQ09QWSB0byBmaW5pc2gsIG5vdCBq dXN0IHN0cmVhbWluZyBjYXRjaC11cCwgc28KKyMgdGhlIHNlZWRlZCByb3dzIGFyZSBwcmVz ZW50IGJlZm9yZSB3ZSBzdGFydCB1cGRhdGluZyB0aGVtLgorJHN1YnNjcmliZXItPndhaXRf Zm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRwdWJsaXNoZXIsICdzdWJfcmknKTsKKworIyBDeWNs ZSB0aGUgcmVwbGljYS1pZGVudGl0eSBjb2x1bW4gYXdheSBhbmQgYmFjayAoQUJBKSwgYW5k IGFsc28gY2h1cm4gdGhlCisjIGV4dHJhIHBheWxvYWQgaW5kZXgsIGFsbCByZXBsaWNhdGVk IHVuZGVyICdhbHdheXMnLiAgRWFjaCBzdGVwIGlzIGEKKyMgSE9ULWluZGV4ZWQgdXBkYXRl IG9uIHRoZSBzdWJzY3JpYmVyIHRoYXQgbGVhdmVzIGEgc3RhbGUgbGVhZi4KKyRwdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworCVVQREFURSB0YWJfcmkgU0VUIHJpZCA9 IDExLCBwYXlsb2FkID0gcGF5bG9hZCArIDEgV0hFUkUgaWQgPSAxOworCVVQREFURSB0YWJf cmkgU0VUIHJpZCA9IDEwLCBwYXlsb2FkID0gcGF5bG9hZCArIDEgV0hFUkUgaWQgPSAxOyAg LS0gcmlkIEFCQQorCVVQREFURSB0YWJfcmkgU0VUIHBheWxvYWQgPSBwYXlsb2FkICsgMSBX SEVSRSBpZCA9IDI7Cit9KTsKKyRwdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3N1Yl9y aScpOworCisjIENvbmZpcm0gdGhlIGFwcGx5IHdvcmtlciBhY3R1YWxseSB0b29rIHRoZSBI T1QtaW5kZXhlZCBwYXRoIG9uIHRhYl9yaSAodGhlCisjIHdob2xlIHBvaW50IG9mICdhbHdh eXMnIHdpdGggaW5kZXhlZCBhdHRycyBiZXlvbmQgdGhlIHJlcGxpY2EgaWRlbnRpdHkpLgor IyBXaXRob3V0IHRoaXMgdGhlIGNvbnZlcmdlbmNlL3ZlcmlmeV9oZWFwYW0gYXNzZXJ0cyBi ZWxvdyBjb3VsZCBwYXNzCisjIHZhY3VvdXNseSBpZiBlbGlnaWJpbGl0eSBzaWxlbnRseSBy ZWdyZXNzZWQgdG8gcGxhaW4gbm9uLUhPVC4KK215ICh1bmRlZiwgdW5kZWYsICRyaV9ob3Rp ZHgpID0gcG9sbF9jb3VudGVycygkc3Vic2NyaWJlciwgJ3RhYl9yaScsIDMpOworY21wX29r KCRyaV9ob3RpZHgsICc+JywgMCwKKwkgICAnYWx3YXlzLW1vZGU6IEhPVC1pbmRleGVkIHBh dGggZmlyZWQgb24gdGFiX3JpIChyaWQvcGF5bG9hZCBjaHVybiknKTsKKworIyBBIHN1YnNl cXVlbnQgcmVwbGljYXRlZCBVUERBVEUga2V5ZWQgYnkgdGhlIHJlcGxpY2EgaWRlbnRpdHkg KHJpZCkgbXVzdAorIyBmaW5kIHRoZSByb3cgZGVzcGl0ZSB0aGUgc3RhbGUgcmlkL3BheWxv YWQgbGVhdmVzIHRoZSBBQkEgbGVmdCBiZWhpbmQuCiskcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwlxe1VQREFURSB0YWJfcmkgU0VUIHBheWxvYWQgPSAxMDAgV0hFUkUg aWQgPSAxfSk7CisjIEFuZCBhIHJlcGxpY2F0ZWQgREVMRVRFIHJlc29sdmVkIHRocm91Z2gg dGhlIHJlcGxpY2EtaWRlbnRpdHkgaW5kZXggbXVzdAorIyBhbHNvIGZpbmQgYW5kIHJlbW92 ZSB0aGUgcmlnaHQgcm93LgorJHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7 REVMRVRFIEZST00gdGFiX3JpIFdIRVJFIGlkID0gMn0pOworJHB1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgnc3ViX3JpJyk7CisKK2lzKCAkc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCXF7U0VMRUNUIHJpZCB8fCAnOicgfHwgcGF5bG9hZCBGUk9NIHRhYl9y aSBXSEVSRSBpZCA9IDF9KSwKKwknMTA6MTAwJywKKwknYWx3YXlzLW1vZGU6IHJlcGxpY2F0 ZWQgVVBEQVRFIGZvdW5kIHRoZSByb3cgdmlhIFJJIGFmdGVyIHJpZCBBQkEnKTsKK2lzKCAk c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCXF7U0VMRUNUIGNvdW50KCop IEZST00gdGFiX3JpIFdIRVJFIGlkID0gMn0pLAorCScwJywKKwknYWx3YXlzLW1vZGU6IHJl cGxpY2F0ZWQgREVMRVRFIGZvdW5kIHRoZSByb3cgdmlhIFJJIHdpdGggc3RhbGUgbGVhdmVz Jyk7CisjIEZ1bGwgY29udmVyZ2VuY2UgY3Jvc3MtY2hlY2suCitpcyggJHN1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQlxe1NFTEVDVCBzdHJpbmdfYWdnKGlkIHx8ICcs JyB8fCByaWQgfHwgJywnIHx8IHBheWxvYWQsICc7JyBPUkRFUiBCWSBpZCkKKwkJICBGUk9N IHRhYl9yaX0pLAorCSRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQlxe1NF TEVDVCBzdHJpbmdfYWdnKGlkIHx8ICcsJyB8fCByaWQgfHwgJywnIHx8IHBheWxvYWQsICc7 JyBPUkRFUiBCWSBpZCkKKwkJICBGUk9NIHRhYl9yaX0pLAorCSdhbHdheXMtbW9kZTogdGFi X3JpIGNvbnZlcmdlcyBiZXR3ZWVuIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlcicpOworCisj IHZlcmlmeV9oZWFwYW0gZmluZHMgbm8gY29ycnVwdGlvbiBpbiB0aGUgSE9ULWluZGV4ZWQg Y2hhaW5zIGxlZnQgYmVoaW5kLgorJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAnQ1JFQVRFIEVYVEVOU0lPTiBJRiBOT1QgRVhJU1RTIGFtY2hlY2snKTsKK2lzKCAkc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCXF7U0VMRUNUIGNvdW50KCopIEZS T00gdmVyaWZ5X2hlYXBhbSgndGFiX3JpJyl9KSwKKwknMCcsCisJJ2Fsd2F5cy1tb2RlOiB2 ZXJpZnlfaGVhcGFtIGNsZWFuIG9uIHRhYl9yaSBhZnRlciBzdGFsZS1sZWFmIGNodXJuJyk7 CisKKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBU SU9OIHN1Yl9yaScpOworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzA0MF9ob3RfaW5kZXhlZF9yZXBsaWNhX2lkZW50aXR5LnBsIGIv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDQwX2hvdF9pbmRleGVkX3JlcGxpY2FfaWRlbnRp dHkucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmY4MDE3ODdi NGMwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDQwX2hv dF9pbmRleGVkX3JlcGxpY2FfaWRlbnRpdHkucGwKQEAgLTAsMCArMSwxMTAgQEAKKyMgQ29w eXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAor CisjIExpdmUgbG9naWNhbCByZXBsaWNhdGlvbiBvZiBIT1QtaW5kZXhlZCB1cGRhdGVzIHVu ZGVyIG5vbi1kZWZhdWx0IHJlcGxpY2EKKyMgaWRlbnRpdGllcy4gIFRoZSBhcHBseSB3b3Jr ZXIgbG9jYXRlcyB0aGUgcm93IHRvIHVwZGF0ZSBvciBkZWxldGUgdmlhIHRoZQorIyByZXBs aWNhIGlkZW50aXR5OiBhIHNlcXNjYW4gZm9yIFJFUExJQ0EgSURFTlRJVFkgRlVMTCwgYW5k IHRoZSBub21pbmF0ZWQKKyMgaW5kZXggZm9yIFJFUExJQ0EgSURFTlRJVFkgVVNJTkcgSU5E RVguICBPbiBhIHN1YnNjcmliZXIgd2hvc2UgdGFibGVzIGNhcnJ5CisjIGV4dHJhIGluZGV4 ZXMgKHNvIGFwcGx5IHBlcmZvcm1zIEhPVC1pbmRleGVkIHVwZGF0ZXMgYW5kIGxlYXZlcyBz dGFsZSBpbmRleAorIyBsZWF2ZXMpLCB0aGF0IGxvb2t1cCBtdXN0IHN0aWxsIGZpbmQgdGhl IGN1cnJlbnQgcm93IC0tIGluY2x1ZGluZyBhZnRlciB0aGUKKyMgaWRlbnRpdHkgY29sdW1u J3MgdmFsdWUgaXMgY3ljbGVkIGF3YXkgYW5kIGJhY2sgKEFCQSkuCit1c2Ugc3RyaWN0Owor dXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsK KworbXkgJHB1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVi bGlzaGVyJyk7CiskcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2lj YWwnKTsKKyRwdWJsaXNoZXItPnN0YXJ0OworCitteSAkc3Vic2NyaWJlciA9IFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOworJHN1YnNjcmliZXItPmlu aXQ7Ciskc3Vic2NyaWJlci0+c3RhcnQ7CisKK215ICRwdWJfY29ubmluZm8gPSAkcHVibGlz aGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdyZXMnOworCisjIHRhYl9mdWxsOiBSRVBM SUNBIElERU5USVRZIEZVTEwgKGFwcGx5IHVzZXMgYSBzZXF1ZW50aWFsIHNjYW4pLgorIyB0 YWJfaWR4OiAgUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCBvbiBhIG5vbi1QSyB1bmlx dWUgaW5kZXggd2hvc2UKKyMgICAgICAgICAgIGNvbHVtbiBpcyBpdHNlbGYgdXBkYXRlZCwg c28gdGhlIGFwcGx5LXNpZGUgaW5kZXggbG9va3VwIG11c3QKKyMgICAgICAgICAgIHRvbGVy YXRlIHN0YWxlIGxlYXZlcyBsZWZ0IGJ5IGVhcmxpZXIgSE9ULWluZGV4ZWQgdXBkYXRlcy4K KyRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxeworCUNSRUFURSBUQUJMRSB0 YWJfZnVsbCAoYSBpbnQsIGIgaW50LCBjIGludCk7CisJQUxURVIgVEFCTEUgdGFiX2Z1bGwg UkVQTElDQSBJREVOVElUWSBGVUxMOworCUNSRUFURSBUQUJMRSB0YWJfaWR4IChrIGludCBO T1QgTlVMTCwgdiBpbnQsIHcgaW50KTsKKwlDUkVBVEUgVU5JUVVFIElOREVYIHRhYl9pZHhf ayBPTiB0YWJfaWR4IChrKTsKKwlBTFRFUiBUQUJMRSB0YWJfaWR4IFJFUExJQ0EgSURFTlRJ VFkgVVNJTkcgSU5ERVggdGFiX2lkeF9rOworCUNSRUFURSBQVUJMSUNBVElPTiBwdWIgRk9S IFRBQkxFIHRhYl9mdWxsLCB0YWJfaWR4OworfSk7CisKKyMgVGhlIHN1YnNjcmliZXIgYWRk cyBleHRyYSBzZWNvbmRhcnkgaW5kZXhlcyBzbyB0aGF0IGFuIFVQREFURSBjaGFuZ2luZyBv bmUKKyMgaW5kZXhlZCBjb2x1bW4gc3RheXMgSE9ULWluZGV4ZWQgb24gYXBwbHkuCiskc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJQ1JFQVRFIFRBQkxFIHRhYl9m dWxsIChhIGludCwgYiBpbnQsIGMgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworCUNS RUFURSBJTkRFWCB0YWJfZnVsbF9iIE9OIHRhYl9mdWxsIChiKTsKKwlDUkVBVEUgSU5ERVgg dGFiX2Z1bGxfYyBPTiB0YWJfZnVsbCAoYyk7CisJQUxURVIgVEFCTEUgdGFiX2Z1bGwgUkVQ TElDQSBJREVOVElUWSBGVUxMOworCUNSRUFURSBUQUJMRSB0YWJfaWR4IChrIGludCBOT1Qg TlVMTCwgdiBpbnQsIHcgaW50KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOworCUNSRUFURSBV TklRVUUgSU5ERVggdGFiX2lkeF9rIE9OIHRhYl9pZHggKGspOworCUNSRUFURSBJTkRFWCB0 YWJfaWR4X3YgT04gdGFiX2lkeCAodik7CisJQ1JFQVRFIElOREVYIHRhYl9pZHhfdyBPTiB0 YWJfaWR4ICh3KTsKKwlBTFRFUiBUQUJMRSB0YWJfaWR4IFJFUExJQ0EgSURFTlRJVFkgVVNJ TkcgSU5ERVggdGFiX2lkeF9rOworfSk7CisKKyMgQWxsb3cgSE9ULWluZGV4ZWQgdXBkYXRl cyBvbiB0aGUgYXBwbHkgcGF0aC4KKyRzdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgcXF7CisJQ1JFQVRFIFNVQlNDUklQVElPTiBzdWIKKwkgIENPTk5FQ1RJT04gJyRwdWJf Y29ubmluZm8nCisJICBQVUJMSUNBVElPTiBwdWIKKwkgIFdJVEggKGhvdF9pbmRleGVkX29u X2FwcGx5ID0gYWx3YXlzKTsKK30pOworJHN1YnNjcmliZXItPndhaXRfZm9yX3N1YnNjcmlw dGlvbl9zeW5jKCRwdWJsaXNoZXIsICdzdWInKTsKKworIyBTZWVkIGJvdGggdGFibGVzLgor JHB1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7CisJSU5TRVJUIElOVE8gdGFi X2Z1bGwgVkFMVUVTICgxLCAxMCwgMTAwKSwgKDIsIDIwLCAyMDApOworCUlOU0VSVCBJTlRP IHRhYl9pZHggVkFMVUVTICgxLCAxMCwgMTAwMCksICgyLCAyMCwgMjAwMCk7Cit9KTsKKyRw dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3N1YicpOworCisjIEEgcnVuIG9mIHNpbmds ZS1jb2x1bW4gdXBkYXRlczogZWFjaCBzdGF5cyBIT1QtaW5kZXhlZCBvbiB0aGUgc3Vic2Ny aWJlciBhbmQKKyMgbGVhdmVzIHN0YWxlIGxlYXZlcywgdGhlbiB0aGUgaWRlbnRpdHkvUEsg cm93IGlzIG1hdGNoZWQgYWdhaW4gYnkgdGhlIG5leHQKKyMgY2hhbmdlLiAgSW5jbHVkZSBh biBBQkEgY3ljbGUgb24gdGhlIFVTSU5HIElOREVYIGNvbHVtbiBrICgxIC0+IDMgLT4gMSku CiskcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXsKKwlVUERBVEUgdGFiX2Z1 bGwgU0VUIGIgPSBiICsgMSBXSEVSRSBhID0gMTsKKwlVUERBVEUgdGFiX2Z1bGwgU0VUIGMg PSBjICsgMSBXSEVSRSBhID0gMTsKKwlVUERBVEUgdGFiX2Z1bGwgU0VUIGIgPSBiICsgMSBX SEVSRSBhID0gMTsKKwlVUERBVEUgdGFiX2lkeCBTRVQgdiA9IHYgKyAxIFdIRVJFIGsgPSAx OworCVVQREFURSB0YWJfaWR4IFNFVCBrID0gMyBXSEVSRSBrID0gMTsKKwlVUERBVEUgdGFi X2lkeCBTRVQgdyA9IHcgKyAxIFdIRVJFIGsgPSAzOworCVVQREFURSB0YWJfaWR4IFNFVCBr ID0gMSBXSEVSRSBrID0gMzsKKwlERUxFVEUgRlJPTSB0YWJfZnVsbCBXSEVSRSBhID0gMjsK KwlERUxFVEUgRlJPTSB0YWJfaWR4IFdIRVJFIGsgPSAyOworfSk7CiskcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCdzdWInKTsKKworIyBUaGUgc3Vic2NyaWJlciBtdXN0IG1hdGNo IHRoZSBwdWJsaXNoZXIgZXhhY3RseTogdGhlIFJJIGxvb2t1cHMgZm91bmQgdGhlCisjIHJp Z2h0IHJvd3MgYWNyb3NzIHRoZSBIT1QtaW5kZXhlZCBjaGFpbnMgYW5kIHRoZSBBQkEgY3lj bGUuCitteSAkcHViX2Z1bGwgPSAkcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK Kwlxe1NFTEVDVCBhLCBiLCBjIEZST00gdGFiX2Z1bGwgT1JERVIgQlkgYX0pOworbXkgJHN1 Yl9mdWxsID0gJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7U0VMRUNU IGEsIGIsIGMgRlJPTSB0YWJfZnVsbCBPUkRFUiBCWSBhfSk7Citpcygkc3ViX2Z1bGwsICRw dWJfZnVsbCwgJ1JFUExJQ0EgSURFTlRJVFkgRlVMTDogc3Vic2NyaWJlciBtYXRjaGVzIHB1 Ymxpc2hlcicpOworCitteSAkcHViX2lkeCA9ICRwdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCXF7U0VMRUNUIGssIHYsIHcgRlJPTSB0YWJfaWR4IE9SREVSIEJZIGt9KTsK K215ICRzdWJfaWR4ID0gJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXF7 U0VMRUNUIGssIHYsIHcgRlJPTSB0YWJfaWR4IE9SREVSIEJZIGt9KTsKK2lzKCRzdWJfaWR4 LCAkcHViX2lkeCwKKwknUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWDogc3Vic2NyaWJl ciBtYXRjaGVzIHB1Ymxpc2hlciBhY3Jvc3MgQUJBJyk7CisKKyMgVGhlIHN1YnNjcmliZXIn cyB0YWJsZXMgbXVzdCBiZSBzdHJ1Y3R1cmFsbHkgY29uc2lzdGVudCAoc3R1YnMgcmVjb2du aXNlZCkuCiskc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7Q1JFQVRFIEVY VEVOU0lPTiBhbWNoZWNrfSk7CitpcyggJHN1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQlxe1NFTEVDVCBjb3VudCgqKSBGUk9NIHZlcmlmeV9oZWFwYW0oJ3RhYl9pZHgn KX0pLAorCScwJywKKwknc3Vic2NyaWJlciB0YWJfaWR4IGhhcyBubyBoZWFwIGNvcnJ1cHRp b24gYWZ0ZXIgSE9ULWluZGV4ZWQgYXBwbHknKTsKKworJHN1YnNjcmliZXItPnN0b3A7Cisk cHVibGlzaGVyLT5zdG9wOworCitkb25lX3Rlc3RpbmcoKTsKLS0gCjIuNTAuMQoK --732d2653398ad274b1166a00220a1f2b85c8ed8b Content-Disposition: attachment; filename*0="v49-0009-DO-NOT-MERGE-Add-a-HOT-SIU-benchmark-harness.patch" Content-Type: text/x-patch; name="=?UTF-8?Q?v49-0009-DO-NOT-MERGE-Add-a-HOT-SIU-benchmark-harness.patch?=" Content-Transfer-Encoding: base64 RnJvbSBiN2QzNjhkZmRiOTJhZDY4OTE2ZTM0ZmEzM2IyMDUwY2Y1M2U5OTZjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTog TW9uLCAxNSBKdW4gMjAyNiAxNDoyMjo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjQ5IDkv OV0gW0RPIE5PVCBNRVJHRV0gQWRkIGEgSE9UL1NJVSBiZW5jaG1hcmsgaGFybmVzcwoKQS9C IGFuZCBzaW5nbGUtdmFyaWFudCBiZW5jaG1hcmsgc2NyaXB0cyBmb3IgSE9ULWluZGV4ZWQg dXBkYXRlczogYnVpbGQgdHdvCnBvc3RncmVzIHZhcmlhbnRzLCBydW4gcGdiZW5jaCB3b3Jr bG9hZHMgZXhlcmNpc2luZyBjbGFzc2ljLUhPVCwgbm9uLUhPVCwgYW5kCkhPVC1pbmRleGVk IHBhdGhzLCBhbmQgYSBzZWxmLWNvbnRhaW5lZCBibG9hdCBwcm9iZSB0aGF0IHJlcG9ydHMg dGhlIHNraXAgY291bnQKKGluZGV4IHdyaXRlcyBhdm9pZGVkIG9uIHVuY2hhbmdlZCBpbmRl eGVzKSBhbmQgY2hhbmdlZC1pbmRleCBib3VuZGluZy4gIE5vdApmb3IgbWVyZ2U7IGtlcHQg Zm9yIGV2YWx1YXRpbmcgdGhlIGZlYXR1cmUuCi0tLQogc3JjL3Rlc3QvYmVuY2htYXJrcy9z aXUvUkVBRE1FLm1kICAgICAgICAgICAgIHwgIDgyICsrKysKIHNyYy90ZXN0L2JlbmNobWFy a3Mvc2l1L3NjcmlwdHMvYmxvYXQuc2ggICAgICB8ICA4NCArKysrCiBzcmMvdGVzdC9iZW5j aG1hcmtzL3NpdS9zY3JpcHRzL2J1aWxkLnNoICAgICAgfCAgNTQgKysrCiAuLi4vc2l1L3Nj cmlwdHMvaG90X2luZGV4ZWRfbWl4ZWQuc3FsICAgICAgICAgfCAgMTEgKwogLi4uL3NpdS9z Y3JpcHRzL2hvdF9pbmRleGVkX3VwZGF0ZS5zcWwgICAgICAgIHwgICA2ICsKIC4uLi9iZW5j aG1hcmtzL3NpdS9zY3JpcHRzL3JlYWRfaW5kZXhzY2FuLnNxbCB8ICAxMSArCiBzcmMvdGVz dC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3J1bi5zaCAgICAgICAgfCAzNzcgKysrKysrKysr KysrKysrKysrCiBzcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3NvYWsuc2ggICAg ICAgfCAxMjggKysrKysrCiAuLi4vYmVuY2htYXJrcy9zaXUvc2NyaXB0cy93aWRlX3VwZGF0 ZS5zcWwgICAgfCAgIDcgKwogOSBmaWxlcyBjaGFuZ2VkLCA3NjAgaW5zZXJ0aW9ucygrKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2JlbmNobWFya3Mvc2l1L1JFQURNRS5tZAog Y3JlYXRlIG1vZGUgMTAwNzU1IHNyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvYmxv YXQuc2gKIGNyZWF0ZSBtb2RlIDEwMDc1NSBzcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3Jp cHRzL2J1aWxkLnNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvYmVuY2htYXJrcy9z aXUvc2NyaXB0cy9ob3RfaW5kZXhlZF9taXhlZC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2hvdF9pbmRleGVkX3VwZGF0ZS5zcWwK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3Jl YWRfaW5kZXhzY2FuLnNxbAogY3JlYXRlIG1vZGUgMTAwNzU1IHNyYy90ZXN0L2JlbmNobWFy a3Mvc2l1L3NjcmlwdHMvcnVuLnNoCiBjcmVhdGUgbW9kZSAxMDA3NTUgc3JjL3Rlc3QvYmVu Y2htYXJrcy9zaXUvc2NyaXB0cy9zb2FrLnNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy93aWRlX3VwZGF0ZS5zcWwKCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9SRUFETUUubWQgYi9zcmMvdGVzdC9iZW5jaG1h cmtzL3NpdS9SRUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjlhNjJkMjY4YWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvYmVuY2htYXJr cy9zaXUvUkVBRE1FLm1kCkBAIC0wLDAgKzEsODIgQEAKKyMgaG90LWluZGV4ZWQgKEhPVC1p bmRleGVkKSBBL0IgYmVuY2htYXJrIGhhcm5lc3MKKworVHdvIHBvc3RncmVzIHZhcmlhbnRz LCBpZGVudGljYWwgcGdkYXRhIGxheW91dHMsIHBnYmVuY2ggd29ya2xvYWRzCitleGVyY2lz aW5nIGNsYXNzaWMgSE9ULCBub24tSE9ULCBhbmQgSE9ULWluZGV4ZWQgcGF0aHMuCisKKyMj IENvbnRlbnRzCisKKy0gYHNjcmlwdHMvYnVpbGQuc2hgIC0tIGJ1aWxkcyB0d28gcG9zdGdy ZXMgdmFyaWFudHMgKGBtYXN0ZXJgID0gdGVwaWQncworICBtZXJnZS1iYXNlIHdpdGggb3Jp Z2luL21hc3RlcjsgYHRlcGlkYCA9IHRoZSBicmFuY2ggdW5kZXIgdGVzdCkuICBSZXF1aXJl cworICBhIHdyaXRhYmxlIGJlbmNobWFyayByb290IHZpYSBgQkVOQ0hgIChkZWZhdWx0IGAv c2NyYXRjaC90ZXBpZC1iZW5jaGApLgorLSBgc2NyaXB0cy9ydW4uc2hgIC0tIEEvQiBkcml2 ZXIuICBSdW5zIGBzaW1wbGVfdXBkYXRlYCAocGdiZW5jaCAtTiksCisgIGBob3RfaW5kZXhl ZF91cGRhdGVgLCBgaG90X2luZGV4ZWRfbWl4ZWRgLCBgcmVhZF9pbmRleHNjYW5gLCBhbmQg YHdpZGVfTmAKKyAgZm9yIE4gaW4gYCRXSURFX1NURVBTYC4KKyAgQ29sbGVjdHMgVFBTLCBs YXRlbmN5LCBXQUwgYnl0ZXMsIEhPVCB1cGRhdGUgY291bnQsIHByZS9wb3N0IGhlYXAgYW5k CisgIGluZGV4IHNpemUsIHBlYWsgQ1BVJSBhbmQgUlNTLiAgV3JpdGVzIGEgQ1NWIHBlciBy dW4gdG8gYCRCRU5DSC9yZXN1bHRzL2AuCistIGBzY3JpcHRzL3NvYWsuc2hgIC0tIGxvbmct cnVubmluZyBzaW5nbGUtd29ya2xvYWQgZHJpdmVyIHRoYXQgc2FtcGxlcworICBUUFMvSE9U JS9XQUwvYmxvYXQgZXZlcnkgYCRTQU1QTEVgIHNlY29uZHMgdW5kZXIgYCREVVJBVElPTmAg c2Vjb25kcworICBvZiBjb25zdGFudCBwcmVzc3VyZSwgcGVyIHZhcmlhbnQuCistIGBzY3Jp cHRzL2Jsb2F0LnNoYCAtLSBzaW5nbGUtdmFyaWFudCBibG9hdCBwcm9iZS4gIFJ1bnMgdXBk YXRlK3ZhY3V1bSBjeWNsZXMKKyAgb24gYSB0YWJsZSB3aG9zZSBjaGFuZ2VkIGNvbHVtbiBh bmQgYW4gdW5jaGFuZ2VkIGNvbHVtbiBhcmUgYm90aCBpbmRleGVkLCBhbmQKKyAgcmVwb3J0 cyAodmlhIHBnc3RhdHR1cGxlKSB0aGF0IHRoZSBjaGFuZ2VkIGluZGV4IHN0YXlzIGJvdW5k ZWQgd2l0aCBwZXJpb2RpYworICBWQUNVVU0gYnV0IGdyb3dzIHVuYm91bmRlZCB3aXRob3V0 IGl0LCBwbHVzIHRoZSBza2lwIGNvdW50IHNob3dpbmcKKyAgSE9ULWluZGV4ZWQgdXBkYXRl cyBhdm9pZGluZyB0aGUgdW5jaGFuZ2VkIGluZGV4LiAgU3BpbnMgaXRzIG93biB0aHJvd2F3 YXkKKyAgY2x1c3Rlciwgc28gaXQgZG9lcyBub3QgdG91Y2ggdGhlIEEvQiBwZ2RhdGEuCist IGBzY3JpcHRzL2hvdF9pbmRleGVkX3VwZGF0ZS5zcWxgIC0tIGBVUERBVEUgc2l1X3RhYmxl IFNFVCBiID0gcmFuZCBXSEVSRSBhID0gcmFuZGAuCistIGBzY3JpcHRzL2hvdF9pbmRleGVk X21peGVkLnNxbGAgIC0tIDgwICUgU0VMRUNUIGJ5IFBLICsgMjAgJSBpbmRleGVkLWNvbCBV UERBVEUuCistIGBzY3JpcHRzL3JlYWRfaW5kZXhzY2FuLnNxbGAgLS0gcmVhZC1vbmx5IGJ0 cmVlIGluZGV4IHNjYW5zIG9uIGEgZnJlc2hseQorICByZXNldCBgc2l1X3RhYmxlYCAobm8g c3RhbGUgZW50cmllcyk7IGNvbmZpcm1zIHRoZSBIT1QtaW5kZXhlZCByZWFkIHBhdGgKKyAg YWRkcyBubyBwZXItc2NhbiBvdmVyaGVhZCwgc2luY2UgdGhlIGNyb3NzZWQtYXR0cmlidXRl IGJpdG1hcCBkZWNpZGVzCisgIHN0YWxlbmVzcyB3aXRob3V0IGEga2V5IGNvbXBhcmlzb24g YW5kIHRoZSBzY2FuIHJlcXVlc3RzIG5vIGluZGV4IHR1cGxlLgorLSBgc2NyaXB0cy93aWRl X3VwZGF0ZS5zcWxgIC0tIGRyaXZlciBzY3JpcHQgZm9yIHRoZSB3aWRlLXRhYmxlIHdvcmts b2FkOworICB0aGUgYFNFVGAgY2xhdXNlIGlzIGJ1aWx0IGF0IHJ1biB0aW1lIGZyb20gYCRX SURFX1NURVBTYC4KKworIyMgUnVubmluZworCitgYGAKKyMgQnVpbGQgYm90aCB2YXJpYW50 cyAocnVuIG9uY2UgcGVyIGJlbmNobWFyayBob3N0KQorUkVQTz0kSE9NRS93cy9wb3N0Z3Jl cy90ZXBpZCBCRU5DSD0vc2NyYXRjaC90ZXBpZC1iZW5jaCBcCisgIC4vc2NyaXB0cy9idWls ZC5zaAorCisjIFN0YW5kYXJkIEEvQgorU0NBTEU9MjAgQ0xJRU5UUz0xNiBUSFJFQURTPTgg RFVSQVRJT049MTIwIFwKKyAgV0lERV9DT0xTPTE2IFdJREVfU1RFUFM9MCwxLDIsNCw4LDE2 IFwKKyAgLi9zY3JpcHRzL3J1bi5zaAorCisjIFNvYWsKK1NDQUxFPTUwIENMSUVOVFM9MTYg VEhSRUFEUz04IERVUkFUSU9OPTkwMCBTQU1QTEU9NjAgXAorICAuL3NjcmlwdHMvc29hay5z aAorCisjIEJsb2F0IHByb2JlIChzaW5nbGUgdmFyaWFudDsgZGVmYXVsdHMgdG8gdGhlIHRl cGlkIGJ1aWxkKQorQkVOQ0g9L3NjcmF0Y2gvdGVwaWQtYmVuY2ggUk9XUz01MDAwIENZQ0xF Uz04IFVQREFURVM9MjAgXAorICAuL3NjcmlwdHMvYmxvYXQuc2gKK2BgYAorCisjIyBFbnYg dmFycworCitgYGAKK1JFUE8gICAgICAgICBwYXRoIHRvIHBvc3RncmVzIHNvdXJjZSAoaGFz IC5naXQpCitCRU5DSCAgICAgICAgYmVuY2ggcm9vdCAoaW5zdGFsbCBwcmVmaXhlcywgYnVp bGQgdHJlZXMsIHJlc3VsdHMpCitTQ0FMRSAgICAgICAgcGdiZW5jaCAtcyAoYWxzbyBkcml2 ZXMgc2l1X3RhYmxlIHJvdyBjb3VudCA9IFNDQUxFKjEwMGspCitDTElFTlRTICAgICAgcGdi ZW5jaCAtYworVEhSRUFEUyAgICAgIHBnYmVuY2ggLWoKK0RVUkFUSU9OICAgICBzZWNvbmRz IHBlciB3b3JrbG9hZAorV0lERV9DT0xTICAgIG51bWJlciBvZiBpbmRleGVkIGludCBjb2x1 bW5zIGluIHdpZGVfdGFibGUgKGRlZmF1bHQgMTYpCitXSURFX1NURVBTICAgY29tbWEtc2Vw YXJhdGVkIGxpc3Qgb2YgY29sdW1ucy1tb2RpZmllZCB2YWx1ZXMgdG8gZXhlcmNpc2UKKyAg ICAgICAgICAgICAoZGVmYXVsdCAwLDEsNCw4LDE2KQorUE9SVCAgICAgICAgIHBvc3RncmVz IHBvcnQgZm9yIHRoZSBiZW5jaCBzZXJ2ZXJzCitTSEFSRURfQlVGRkVSUyAgcG9zdGdyZXNx bC5jb25mIHNldHRpbmcgKGRlZmF1bHQgNTEyTUIpCitNQVNURVJfUkVWICAgcmV2aXNpb24g Zm9yIHRoZSBtYXN0ZXIgdmFyaWFudCAoZGVmYXVsdDogdGVwaWQncyBtZXJnZS1iYXNlCisg ICAgICAgICAgICAgd2l0aCBvcmlnaW4vbWFzdGVyKQorVEVQSURfUkVWICAgIHJldmlzaW9u IGZvciB0aGUgdGVwaWQgdmFyaWFudCAoZGVmYXVsdDogdGVwaWQpCisKK2Jsb2F0LnNoIG9u bHk6CitCSU5ESVIgICAgICAgcG9zdGdyZXMgYmluIGRpciB0byB0ZXN0IChkZWZhdWx0OiB0 ZXBpZCB2YXJpYW50IHVuZGVyICRCRU5DSCkKK1JPV1MgICAgICAgICBzZWVkZWQgcm93cyAo ZGVmYXVsdCA1MDAwKQorQ1lDTEVTICAgICAgIHVwZGF0ZSt2YWN1dW0gY3ljbGVzIChkZWZh dWx0IDgpCitVUERBVEVTICAgICAgdXBkYXRlcyBwZXIgcm93IHBlciBjeWNsZSAoZGVmYXVs dCAyMCkKK2BgYAorCitUaGUgc2NyaXB0cyBhcmUgcG9ydGFibGUgYmV0d2VlbiBMaW51eCBh bmQgRnJlZUJTRDsgdGhlIENQVS9SU1Mgc2FtcGxlcgordXNlcyBgcHMgLW8gcGNwdT0scnNz PSAtLXBwaWQgTEVBREVSIC1wIExFQURFUmAgKExpbnV4KSBvciBgcGdyZXAgLVBgICsKK3Bl ci1waWQgYHBzYCAoRnJlZUJTRCkgLS0gcGVhayB2YWx1ZXMgYXJlIGFwcHJveGltYXRlLgpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9ibG9hdC5zaCBi L3NyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvYmxvYXQuc2gKbmV3IGZpbGUgbW9k ZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAuLjM0MTcxYzY4ZjViCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9ibG9hdC5zaApAQCAtMCww ICsxLDg0IEBACisjIS91c3IvYmluL2VudiBiYXNoCisjIFNpbmdsZS12YXJpYW50IGJsb2F0 IGJlbmNobWFyayBmb3IgSE9ULWluZGV4ZWQgKFNJVSkgdXBkYXRlcy4KKyMKKyMgVGhlIEEv QiBydW4uc2ggbWVhc3VyZXMgVFBTL1dBTC9hZ2dyZWdhdGUgc2l6ZTsgaXQgZG9lcyBub3Qg aXNvbGF0ZSB0d28KKyMgYmxvYXQgcHJvcGVydGllcyBvZiB0aGUgSE9ULWluZGV4ZWQgcGF0 aCwgd2hpY2ggdGhpcyBzY3JpcHQgZGVtb25zdHJhdGVzOgorIworIyAgIDEuIFN0YWxlIGlu ZGV4IGVudHJpZXMgb24gdGhlIENIQU5HRUQgaW5kZXggYWNjdW11bGF0ZSBiZXR3ZWVuIHZh Y3V1bXMsCisjICAgICAgYnV0IFZBQ1VVTSByZWNsYWltcyB0aGVtLCBzbyBzaXplIHN0YXlz IGJvdW5kZWQgYWNyb3NzIHVwZGF0ZSt2YWN1dW0KKyMgICAgICBjeWNsZXMuICBTa2lwcGlu ZyB2YWN1dW0gbGV0cyB0aGVtIGdyb3cgdW5ib3VuZGVkICh0aGUgaW5oZXJlbnQKKyMgICAg ICBpbnRlci12YWN1dW0gYmxvYXQ7IHJlYWQtZmlsdGVyZWQgYnkgdGhlIGNyb3NzZWQtYXR0 cmlidXRlIGJpdG1hcCBtZWFud2hpbGUpLgorIyAgIDIuIEFuIGluZGV4IG9uIGFuIFVOQ0hB TkdFRCBjb2x1bW4gaXMgc2tpcHBlZCBieSBIT1QtaW5kZXhlZCB1cGRhdGVzICh0aGUKKyMg ICAgICBzZWxlY3RpdmUtdXBkYXRlIGJlbmVmaXQpIC0tIHZpc2libGUgYXMgYSBza2lwIGNv dW50LiAgVXBkYXRlcyB0aGF0IGZhbGwKKyMgICAgICBiYWNrIHRvIG5vbi1IT1QgKGUuZy4g d2hlbiB0aGUgcGFnZSBoYXMgbm8gcm9vbSBmb3IgdGhlIGNoYWluKSBzdGlsbAorIyAgICAg IGluc2VydCBpbnRvIGl0LCBzbyBpdHMgc2l6ZSByZWZsZWN0cyBvbmx5IHRoZSBub24tSE9U IHJlbWFpbmRlci4KKyMKKyMgVXNlcyB0aGUgdGVwaWQgdmFyaWFudCBidWlsdCBieSBidWls ZC5zaCAob3ZlcnJpZGUgQklORElSIGZvciBhbnkgYnVpbGQpIGFuZAorIyBhIHRocm93YXdh eSBjbHVzdGVyIHVuZGVyICRCRU5DSCwgc28gaXQgbmV2ZXIgdG91Y2hlcyB0aGUgQS9CIHBn ZGF0YS4KKyMKKyMgRW52OiBCRU5DSCAoZGVmYXVsdCAvc2NyYXRjaC9zaXUtYmVuY2gpLCBC SU5ESVIgKGRlZmF1bHQgdGVwaWQgdmFyaWFudCBiaW4pLAorIyAgICAgIFBPUlQgKGRlZmF1 bHQgNTc0ODEpLCBST1dTIChkZWZhdWx0IDUwMDApLCBDWUNMRVMgKGRlZmF1bHQgOCksCisj ICAgICAgVVBEQVRFUyAodXBkYXRlcyBwZXIgcm93IHBlciBjeWNsZSwgZGVmYXVsdCAyMCku CitzZXQgLWV1byBwaXBlZmFpbAorCitCRU5DSD0ke0JFTkNIOi0vc2NyYXRjaC9zaXUtYmVu Y2h9CitCSU5ESVI9JHtCSU5ESVI6LSRCRU5DSC90ZXBpZC91c3IvbG9jYWwvcGdzcWwvYmlu fQorUE9SVD0ke1BPUlQ6LTU3NDgxfQorUk9XUz0ke1JPV1M6LTUwMDB9CitDWUNMRVM9JHtD WUNMRVM6LTh9CitVUERBVEVTPSR7VVBEQVRFUzotMjB9CitEQVRBRElSPSRCRU5DSC9fZGF0 YV9ibG9hdAorCitiYXNlPSQoZGlybmFtZSAiJEJJTkRJUiIpCitpZiBbIC1kICIkYmFzZS9s aWI2NCIgXTsgdGhlbgorICBleHBvcnQgTERfTElCUkFSWV9QQVRIPSIkYmFzZS9saWI2NCR7 TERfTElCUkFSWV9QQVRIOis6JExEX0xJQlJBUllfUEFUSH0iCitlbHNlCisgIGV4cG9ydCBM RF9MSUJSQVJZX1BBVEg9IiRiYXNlL2xpYiR7TERfTElCUkFSWV9QQVRIOis6JExEX0xJQlJB UllfUEFUSH0iCitmaQorCitQU1FMPSgiJEJJTkRJUi9wc3FsIiAtaCAvdG1wIC1wICIkUE9S VCIgLVUgcG9zdGdyZXMgLVggLXEpCitQKCkgeyAiJHtQU1FMW0BdfSIgLUF0ICIkQCI7IH0K KworIiRCSU5ESVIvcGdfY3RsIiAtRCAiJERBVEFESVIiIHN0b3AgLW0gZmFzdCA+L2Rldi9u dWxsIDI+JjEgfHwgdHJ1ZQorcm0gLXJmICIkREFUQURJUiIKKyIkQklORElSL2luaXRkYiIg LUQgIiREQVRBRElSIiAtVSBwb3N0Z3JlcyAtLW5vLXN5bmMgPi9kZXYvbnVsbAorY2F0ID4+ ICIkREFUQURJUi9wb3N0Z3Jlc3FsLmNvbmYiIDw8RU9GCitwb3J0ID0gJFBPUlQKK2F1dG92 YWN1dW0gPSBvZmYKK2ZzeW5jID0gb2ZmCitFT0YKKyIkQklORElSL3BnX2N0bCIgLUQgIiRE QVRBRElSIiAtbyAiLXAgJFBPUlQiIC1sICIkQkVOQ0gvX2Jsb2F0LmxvZyIgLXcgc3RhcnQg Pi9kZXYvbnVsbAordHJhcCAnIiRCSU5ESVIvcGdfY3RsIiAtRCAiJERBVEFESVIiIHN0b3Ag LW0gZmFzdCA+L2Rldi9udWxsIDI+JjEgfHwgdHJ1ZScgRVhJVAorIiR7UFNRTFtAXX0iIC1j ICJDUkVBVEUgRVhURU5TSU9OIElGIE5PVCBFWElTVFMgcGdzdGF0dHVwbGU7IiA+L2Rldi9u dWxsCisKKyMgJDEgPSB0YWJsZSBuYW1lLCAkMiA9IHZhY3V1bV9lYWNoICgxLzApLiAgUmV0 dXJucyBmaW5hbCBpZHhfYSBjb21wb3NpdGlvbi4KK3J1bl9hcm0oKSB7CisgIGxvY2FsIHRi bD0kMSB2YWM9JDIKKyAgIiR7UFNRTFtAXX0iIDw8U1FMID4vZGV2L251bGwKK0RST1AgVEFC TEUgSUYgRVhJU1RTICR0Ymw7CitDUkVBVEUgVEFCTEUgJHRibCAoaWQgaW50IFBSSU1BUlkg S0VZLCBhIGludCwgYiBpbnQsIHBhZCB0ZXh0KSBXSVRIIChmaWxsZmFjdG9yID0gNTApOwor Q1JFQVRFIElOREVYICR7dGJsfV9hIE9OICR0YmwoYSk7ICAgLS0gY2hhbmdlZCBjb2x1bW4K K0NSRUFURSBJTkRFWCAke3RibH1fYiBPTiAkdGJsKGIpOyAgIC0tIG5ldmVyIGNoYW5nZWQK K0lOU0VSVCBJTlRPICR0YmwgU0VMRUNUIGcsIGcsIGcsIHJlcGVhdCgneCcsIDQwKSBGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAkUk9XUykgZzsKK1ZBQ1VVTSAoRlJFRVpFLCBBTkFMWVpF KSAkdGJsOworU1FMCisgIGxvY2FsIGN5YworICBmb3IgKChjeWMgPSAxOyBjeWMgPD0gQ1lD TEVTOyBjeWMrKykpOyBkbworICAgICIke1BTUUxbQF19IiAtYyAiRE8gXCRcJCBCRUdJTiBG T1IgdSBJTiAxLi4kVVBEQVRFUyBMT09QIFVQREFURSAkdGJsIFNFVCBhID0gYSArIDE7IEVO RCBMT09QOyBFTkQgXCRcJDsiID4vZGV2L251bGwKKyAgICBbICIkdmFjIiA9IDEgXSAmJiAi JHtQU1FMW0BdfSIgLWMgIlZBQ1VVTSAkdGJsOyIgPi9kZXYvbnVsbAorICBkb25lCisgIFAg LWMgIlNFTEVDVCAnJHRibCh2YWN1dW1fZWFjaD0kdmFjKTonCisgICAgICAgIHx8ICcgaWR4 X2Ffa2I9JyB8fCBwZ19yZWxhdGlvbl9zaXplKCcke3RibH1fYScpLzEwMjQKKyAgICAgICAg fHwgJyBpZHhfYV9saXZlPScgfHwgKFNFTEVDVCB0dXBsZV9jb3VudCBGUk9NIHBnc3RhdHR1 cGxlKCcke3RibH1fYScpKQorICAgICAgICB8fCAnIGlkeF9hX2ZyZWUlPScgfHwgcm91bmQo KFNFTEVDVCBmcmVlX3BlcmNlbnQgRlJPTSBwZ3N0YXR0dXBsZSgnJHt0Ymx9X2EnKSk6Om51 bWVyaWMsMSkKKyAgICAgICAgfHwgJyBpZHhfYl9rYj0nIHx8IHBnX3JlbGF0aW9uX3NpemUo JyR7dGJsfV9iJykvMTAyNAorICAgICAgICB8fCAnIGlkeF9iX3NraXBzPScgfHwgY29hbGVz Y2UoKFNFTEVDVCBuX3R1cF9ob3RfaW5kZXhlZF91cGRfc2tpcHBlZAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZST00gcGdfc3RhdF9hbGxfaW5kZXhlcyBX SEVSRSBpbmRleHJlbG5hbWU9JyR7dGJsfV9iJyksIDApOyIKK30KKworZWNobyAiPT09IEhP VC1pbmRleGVkIGJsb2F0OiAkQ1lDTEVTIGN5Y2xlcyB4ICgkVVBEQVRFUyB1cGRhdGVzL3Jv dyB4ICRST1dTIHJvd3MpID09PSIKK3J1bl9hcm0gdF92YWMgMQorcnVuX2FybSB0X25vdmFj IDAKK2VjaG8gImlkeF9hOiBib3VuZGVkIHdpdGggdmFjdXVtX2VhY2g9MSwgdW5ib3VuZGVk IHdpdGggPTAgKHN0YWxlIGVudHJpZXMgYWNjdW11bGF0ZSIKK2VjaG8gInVudGlsIHJlY2xh aW1lZCkuICBpZHhfYl9za2lwcyBjb3VudHMgZW50cmllcyB0aGUgSE9ULWluZGV4ZWQgcGF0 aCBhdm9pZGVkIG9uIgorZWNobyAidGhlIHVuY2hhbmdlZCBpbmRleDsgaWR4X2Jfa2IgaXMg b25seSB0aGUgbm9uLUhPVC1mYWxsYmFjayByZW1haW5kZXIuIgpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9idWlsZC5zaCBiL3NyYy90ZXN0L2JlbmNo bWFya3Mvc2l1L3NjcmlwdHMvYnVpbGQuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXgg MDAwMDAwMDAwMDAuLmIyZjBlZTUyNWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv YmVuY2htYXJrcy9zaXUvc2NyaXB0cy9idWlsZC5zaApAQCAtMCwwICsxLDU0IEBACisjIS91 c3IvYmluL2VudiBiYXNoCisjIEJ1aWxkIHR3byBwb3N0Z3JlcyB2YXJpYW50cyBmb3IgdGVw aWQgKEhPVC1pbmRleGVkKSBBL0IgYmVuY2htYXJrcy4KKyMKKyMgRW52IHZhcnMgKGFsbCBv cHRpb25hbCk6CisjICAgUkVQTyAgICAgICAgICAtLSBwYXRoIHRvIHBvc3RncmVzIHNvdXJj ZSByZXBvIChkZWZhdWx0OiAkSE9NRS93cy9wb3N0Z3Jlcy90ZXBpZCwgb3IgL3NjcmF0Y2gv c2l1LWJlbmNoL3JlcG8pCisjICAgQkVOQ0ggICAgICAgICAtLSBiZW5jaCByb290IChkZWZh dWx0OiAvc2NyYXRjaC9zaXUtYmVuY2gpCisjICAgTUFTVEVSX1JFViAgICAtLSByZXZpc2lv biBmb3IgdGhlICJtYXN0ZXIiIHZhcmlhbnQgKGRlZmF1bHQ6IHRlcGlkJ3MgbWVyZ2UtYmFz ZSB3aXRoIG9yaWdpbi9tYXN0ZXIpCisjICAgVEVQSURfUkVWICAgICAtLSByZXZpc2lvbiBm b3IgdGhlICJ0ZXBpZCIgIHZhcmlhbnQgKGRlZmF1bHQ6IHRlcGlkKQorIyAgIEpPQlMgICAg ICAgICAgLS0gcGFyYWxsZWwgY29tcGlsZSBqb2JzIChkZWZhdWx0OiBucHJvYyBvciA4KQor c2V0IC1ldW8gcGlwZWZhaWwKKworQkVOQ0g9JHtCRU5DSDotL3NjcmF0Y2gvc2l1LWJlbmNo fQorSk9CUz0ke0pPQlM6LSQoIChjb21tYW5kIC12IG5wcm9jID4vZGV2L251bGwgJiYgbnBy b2MpIHx8IHN5c2N0bCAtbiBody5uY3B1IDI+L2Rldi9udWxsIHx8IGVjaG8gOCApfQoraWYg WyAteiAiJHtSRVBPOi19IiBdOyB0aGVuCisgIGZvciBjYW5kaWRhdGUgaW4gIiRIT01FL3dz L3Bvc3RncmVzL3RlcGlkIiAiJEJFTkNIL3JlcG8iIC9zY3JhdGNoL3BnOyBkbworICAgIGlm IFsgLWQgIiRjYW5kaWRhdGUvLmdpdCIgXTsgdGhlbiBSRVBPPSRjYW5kaWRhdGU7IGJyZWFr OyBmaQorICBkb25lCitmaQorOiAiJHtSRVBPOj9SRVBPIG5vdCBzZXQgYW5kIG5vIGRlZmF1 bHQgZm91bmR9IgorY2QgIiRSRVBPIgorCitURVBJRF9SRVY9JHtURVBJRF9SRVY6LXRlcGlk fQorTUFTVEVSX1JFVj0ke01BU1RFUl9SRVY6LSQoZ2l0IG1lcmdlLWJhc2UgIiRURVBJRF9S RVYiIG9yaWdpbi9tYXN0ZXIgMj4vZGV2L251bGwgfHwgZ2l0IG1lcmdlLWJhc2UgIiRURVBJ RF9SRVYiIG1hc3Rlcil9CisKK2VjaG8gIlJFUE89JFJFUE8gIE1BU1RFUj0kTUFTVEVSX1JF ViAgVEVQSUQ9JFRFUElEX1JFViAgSk9CUz0kSk9CUyAgQkVOQ0g9JEJFTkNIIgorCitkaWUo KSB7IHByaW50ZiAnYnVpbGQ6ICVzXG4nICIkKiIgPiYyOyBleGl0IDE7IH0KK2lmIGdpdCBz dGF0dXMgLS1wb3JjZWxhaW4gfCBncmVwIC12ICdePz8nIHwgZ3JlcCAtcSAuOyB0aGVuCisg IGRpZSAicmVwbyBoYXMgdW5zdGFnZWQvdW5jb21taXR0ZWQgY2hhbmdlczsgc3Rhc2ggb3Ig Y29tbWl0IGZpcnN0IgorZmkKKworYnVpbGRfdmFyaWFudCgpIHsKKyAgbG9jYWwgbmFtZT0k MQorICBsb2NhbCByZXY9JDIKKyAgbG9jYWwgcHJlZml4PSRCRU5DSC8kbmFtZQorICBlY2hv ICI9PT0gYnVpbGRpbmcgJG5hbWUgKCRyZXYpIGludG8gJHByZWZpeCIKKyAgWyAtZCAiJHBy ZWZpeCIgXSAmJiBmaW5kICIkcHJlZml4IiAtbWluZGVwdGggMSAtZGVsZXRlICYmIHJtZGly ICIkcHJlZml4IgorICBta2RpciAtcCAiJHByZWZpeCIKKyAgZ2l0IGNoZWNrb3V0IC0tcXVp ZXQgLS1kZXRhY2ggIiRyZXYiCisgIGxvY2FsIGJsZD0kQkVOQ0gvX2J1aWxkXyRuYW1lCisg IFsgLWQgIiRibGQiIF0gJiYgZmluZCAiJGJsZCIgLW1pbmRlcHRoIDEgLWRlbGV0ZSAmJiBy bWRpciAiJGJsZCIKKyAgbWVzb24gc2V0dXAgIiRibGQiIC0tcHJlZml4PSIkcHJlZml4L3Vz ci9sb2NhbC9wZ3NxbCIgXAorICAgIC1EYnVpbGR0eXBlPXJlbGVhc2UgLURjYXNzZXJ0PWZh bHNlIFwKKyAgICAtRGV4dHJhX3ZlcnNpb249LXNpdWJlbmNoLSRuYW1lID4vZGV2L251bGwK KyAgbWVzb24gY29tcGlsZSAtQyAiJGJsZCIgLWogIiRKT0JTIgorICBtZXNvbiBpbnN0YWxs IC1DICIkYmxkIiAtLWRlc3RkaXI9LyA+L2Rldi9udWxsCisgICIkcHJlZml4L3Vzci9sb2Nh bC9wZ3NxbC9iaW4vcG9zdGdyZXMiIC0tdmVyc2lvbgorfQorCitPUklHPSQoZ2l0IHN5bWJv bGljLXJlZiAtLXF1aWV0IC0tc2hvcnQgSEVBRCB8fCBnaXQgcmV2LXBhcnNlIEhFQUQpCit0 cmFwICdnaXQgY2hlY2tvdXQgLS1xdWlldCAiJE9SSUciJyBFWElUCisKK2J1aWxkX3Zhcmlh bnQgbWFzdGVyICIkTUFTVEVSX1JFViIKK2J1aWxkX3ZhcmlhbnQgdGVwaWQgICIkVEVQSURf UkVWIgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9ob3Rf aW5kZXhlZF9taXhlZC5zcWwgYi9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2hv dF9pbmRleGVkX21peGVkLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uM2FiMzI4OWRmMjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9iZW5jaG1h cmtzL3NpdS9zY3JpcHRzL2hvdF9pbmRleGVkX21peGVkLnNxbApAQCAtMCwwICsxLDExIEBA CistLSBNaXhlZCB3b3JrbG9hZDogODAlIHNlbGVjdHMsIDIwJSBpbmRleGVkLWNvbHVtbiB1 cGRhdGVzLgorLS0gRXhlcmNpc2VzIGJvdGggdGhlIGhvdC1pbmRleGVkIHdyaXRlciBhbmQg dGhlIGNyb3NzZWQtYXR0cmlidXRlLWJpdG1hcCByZWFkZXIuCitcc2V0IGFpZCByYW5kb20o MSwgOnNjYWxlICogMTAwMDAwKQorXHNldCBiaWQgcmFuZG9tKDEsIDEwMDAwMDApCitcc2V0 IHdoaWNoIHJhbmRvbSgxLCAxMDApCitCRUdJTjsKK1NFTEVDVCAqIEZST00gc2l1X3RhYmxl IFdIRVJFIGEgPSA6YWlkOworXGlmIDp3aGljaCA+IDgwCisgIFVQREFURSBzaXVfdGFibGUg U0VUIGIgPSA6YmlkIFdIRVJFIGEgPSA6YWlkOworXGVuZGlmCitDT01NSVQ7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2hvdF9pbmRleGVkX3VwZGF0 ZS5zcWwgYi9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL2hvdF9pbmRleGVkX3Vw ZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmYxYmNm OTU5YzY3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2Ny aXB0cy9ob3RfaW5kZXhlZF91cGRhdGUuc3FsCkBAIC0wLDAgKzEsNiBAQAorLS0gaG90LWlu ZGV4ZWQtZnJpZW5kbHkgd29ya2xvYWQ6IG5hcnJvdyB0YWJsZSB3aXRoIGEgZmV3IG5vbi1Q SyBpbmRleGVzLgorLS0gRWFjaCBVUERBVEUgY2hhbmdlcyBhIG5vbi1zdW1tYXJpemluZyBp bmRleGVkIGNvbHVtbiBvbiBhIHJhbmRvbSByb3cuCistLSBXaXRoIGhvdC1pbmRleGVkIHRo aXMgaXMgSE9ULWluZGV4ZWQ7IHdpdGhvdXQgaG90LWluZGV4ZWQgaXQgaXMgbm9uLUhPVC4K K1xzZXQgYWlkIHJhbmRvbSgxLCA6c2NhbGUgKiAxMDAwMDApCitcc2V0IG5ld19iIHJhbmRv bSgxLCAxMDAwMDAwKQorVVBEQVRFIHNpdV90YWJsZSBTRVQgYiA9IDpuZXdfYiBXSEVSRSBh ID0gOmFpZDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMv cmVhZF9pbmRleHNjYW4uc3FsIGIvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9y ZWFkX2luZGV4c2Nhbi5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjQ2NTY4OTc2M2VhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvYmVuY2htYXJr cy9zaXUvc2NyaXB0cy9yZWFkX2luZGV4c2Nhbi5zcWwKQEAgLTAsMCArMSwxMSBAQAorLS0g cmVhZF9pbmRleHNjYW46IHJlYWQtb25seSBidHJlZSBpbmRleC1zY2FuIHdvcmtsb2FkIGNv bmZpcm1pbmcgdGhlCistLSBIT1QtaW5kZXhlZCByZWFkIHBhdGggYWRkcyBubyBwZXItc2Nh biBvdmVyaGVhZCBvbiB0YWJsZXMgd2l0aCBubyBzdGFsZQorLS0gZW50cmllcy4KKy0tIFRo ZSBjcm9zc2VkLWF0dHJpYnV0ZSBiaXRtYXAgZGVjaWRlcyBzdGFsZW5lc3Mgd2l0aG91dCBh IGtleSBjb21wYXJpc29uIGFuZAorLS0gdGhlIHNjYW4gZG9lcyBub3QgcmVxdWVzdCB0aGUg aW5kZXggdHVwbGUsIHNvIG9uIGEgZnJlc2hseSByZXNldCBzaXVfdGFibGUKKy0tIChubyBz dGFsZSBIT1QtaW5kZXhlZCBlbnRyaWVzKSB0aGVyZSBzaG91bGQgYmUgbm8gbWFzdGVyLXZz LXRlcGlkCistLSBkaWZmZXJlbmNlIG9uIHRoaXMgY2VsbC4gIFRoZSBwcmVkaWNhdGUgaXMg YW4gZXF1YWxpdHkgb24gdGhlCistLSBpbmRleGVkIGNvbHVtbiBiIGFuZCB0aGUgdGFyZ2V0 IGxpc3QgaW5jbHVkZXMgdGhlIG5vbi1pbmRleGVkIGNvbHVtbiBlLAorLS0gZm9yY2luZyBh IHBsYWluIChoZWFwLWZldGNoaW5nKSBpbmRleCBzY2FuIHJhdGhlciB0aGFuIGFuIGluZGV4 LW9ubHkgc2Nhbi4KK1xzZXQgaWQgcmFuZG9tKDEsIDpyb3dzKQorU0VMRUNUIGEsIGIsIGMs IGQsIGUgRlJPTSBzaXVfdGFibGUgV0hFUkUgYiA9IDppZDsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L2JlbmNobWFya3Mvc2l1L3NjcmlwdHMvcnVuLnNoIGIvc3JjL3Rlc3QvYmVuY2htYXJr cy9zaXUvc2NyaXB0cy9ydW4uc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAw MDAwMDAuLmZhMzMwYWQ0ZjZmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvYmVuY2ht YXJrcy9zaXUvc2NyaXB0cy9ydW4uc2gKQEAgLTAsMCArMSwzNzcgQEAKKyMhL3Vzci9iaW4v ZW52IGJhc2gKKyMgQS9CIHBnYmVuY2ggaGFybmVzcyBmb3IgdGVwaWQ6IG1hc3RlciAodXBz dHJlYW0pIHZzIHRlcGlkIChIT1QtaW5kZXhlZCkuCisjCisjIEVudiB2YXJzOgorIyAgIFND QUxFICAgICAgIC0tIHBnYmVuY2ggLXMgKGFsc28gbXVsdGlwbGllciBmb3Igc2l1X3RhYmxl IHJvdyBjb3VudCA9IFNDQUxFKjEwMGspCisjICAgQ0xJRU5UUyAgICAgLS0gcGdiZW5jaCAt YworIyAgIFRIUkVBRFMgICAgIC0tIHBnYmVuY2ggLWoKKyMgICBEVVJBVElPTiAgICAtLSBw Z2JlbmNoIC1UIChzZWNvbmRzIHBlciB3b3JrbG9hZCkKKyMgICBXSURFX0NPTFMgICAtLSAj IG9mIGluZGV4ZWQgY29sdW1ucyBpbiB0aGUgd2lkZV90YWJsZSAoZGVmYXVsdCAxNikKKyMg ICBXSURFX1NURVBTICAtLSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiAidXBkYXRlZCBjb2x1 bW5zIiBjb3VudHMgZm9yCisjICAgICAgICAgICAgICAgICB0aGUgd2lkZSB3b3JrbG9hZCAo ZGVmYXVsdCAiMCwxLDQsOCxXSURFX0NPTFMiKQorIyAgIFBPUlQgICAgICAgIC0tIHBvc3Rn cmVzIHBvcnQgKGRlZmF1bHQgNTc0ODApCisjCisjIEZvciBlYWNoIHZhcmlhbnQgaW4ge21h c3RlciwgdGVwaWR9OgorIyAgIGluaXRkYiBmcmVzaCBwZ2RhdGEsIHN0YXJ0IHBvc3RncmVz LCBjcmVhdGUgdGVzdCBvYmplY3RzLAorIyAgIHJ1biB3b3JrbG9hZHMgKHBnYmVuY2ggLU4g c2ltcGxlX3VwZGF0ZSwgaG90X2luZGV4ZWRfdXBkYXRlLCBob3RfaW5kZXhlZF9taXhlZCwK KyMgICByZWFkX2luZGV4c2NhbiwgYW5kIHdpZGVfTiBmb3IgZWFjaCB2YWx1ZSBpbiBXSURF X1NURVBTKSwgY29sbGVjdCBUUFMgKyBIT1QKKyMgICBjb3VudHMgKyBXQUwgZGVsdGEgKyBw ZWFrIENQVS9SU1Mgc2FtcGxlZCB2aWEgcGlkc3RhdC4KKyMgRW1pdHMgQ1NWICsgTWFya2Rv d24gc3VtbWFyeSB1bmRlciAvc2NyYXRjaC9zaXUtYmVuY2gvcmVzdWx0cy8uCitzZXQgLWV1 byBwaXBlZmFpbAorCitCRU5DSD0ke0JFTkNIOi0vc2NyYXRjaC9zaXUtYmVuY2h9CitTQ0FM RT0ke1NDQUxFOi0yMH0KK0NMSUVOVFM9JHtDTElFTlRTOi0xNn0KK1RIUkVBRFM9JHtUSFJF QURTOi04fQorRFVSQVRJT049JHtEVVJBVElPTjotMTIwfQorV0lERV9DT0xTPSR7V0lERV9D T0xTOi0xNn0KK1dJREVfU1RFUFM9JHtXSURFX1NURVBTOi0wLDEsNCw4LDE2fQorUE9SVD0k e1BPUlQ6LTU3NDgwfQorCitUUz0kKGRhdGUgLXUgKyVZJW0lZFQlSCVNJVNaKQorT1VUPSRC RU5DSC9yZXN1bHRzLyRUUy5jc3YKK0xPR0RJUj0kQkVOQ0gvbG9ncy8kVFMKK21rZGlyIC1w ICIkTE9HRElSIgorZWNobyAidmFyaWFudCx3b3JrbG9hZCx0cHMsbGF0ZW5jeV9hdmdfbXMs Y2xhc3NpY19ob3RfdXBkYXRlcyxob3RfaW5kZXhlZF91cGRhdGVzLG5vbl9ob3RfdXBkYXRl cyx0b3RhbF91cGRhdGVzLHdhbF9ieXRlcyxibG9hdF9wYWdlc19iZWZvcmUsYmxvYXRfcGFn ZXNfYWZ0ZXIsaW5kZXhfc2l6ZV9iZWZvcmUsaW5kZXhfc2l6ZV9hZnRlcixjcHVfcGN0X3Bl YWsscnNzX21pYl9wZWFrLHBlcl9pbmRleF9iZWZvcmUscGVyX2luZGV4X2FmdGVyIiA+ICIk T1VUIgorZWNobyAiPT09IHNpdS1iZW5jaCBBL0IgcnVuICRUUyAtPiAkT1VUIChzY2FsZT0k U0NBTEUgY2xpZW50cz0kQ0xJRU5UUyB0aHJlYWRzPSRUSFJFQURTIGR1cmF0aW9uPSR7RFVS QVRJT059cykiCisKK2Jpbl9vZigpIHsKKyAgZWNobyAiJEJFTkNILyQxL3Vzci9sb2NhbC9w Z3NxbC9iaW4iCit9CisKK0xEX29mKCkgeworICBsb2NhbCBiYXNlPSRCRU5DSC8kMS91c3Iv bG9jYWwvcGdzcWwKKyAgIyBMaW51eCBkaXN0cm9zIHRoYXQgc3BsaXQgNjQtYml0IGxpYnMg dXNlIGxpYjY0OyBtb3N0IG90aGVycyB1c2UgbGliLgorICBpZiBbIC1kICIkYmFzZS9saWI2 NCIgXTsgdGhlbgorICAgIGVjaG8gIiRiYXNlL2xpYjY0IgorICBlbHNlCisgICAgZWNobyAi JGJhc2UvbGliIgorICBmaQorfQorCitwc3FsX2FzKCkgeworICBsb2NhbCB2PSQxOyBzaGlm dAorICBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2IikiICIkKGJpbl9vZiAiJHYiKS9w c3FsIiAtaCAvdG1wIC1wICIkUE9SVCIgLVUgcG9zdGdyZXMgLVggIiRAIgorfQorCitwZ2Jl bmNoX2FzKCkgeworICBsb2NhbCB2PSQxOyBzaGlmdAorICBMRF9MSUJSQVJZX1BBVEg9IiQo TERfb2YgIiR2IikiICIkKGJpbl9vZiAiJHYiKS9wZ2JlbmNoIiAtaCAvdG1wIC1wICIkUE9S VCIgLVUgcG9zdGdyZXMgIiRAIgorfQorCitzdGFydF9wZygpIHsKKyAgbG9jYWwgdj0kMQor ICBsb2NhbCBkYXRhZGlyPSRCRU5DSC9fZGF0YV8kdgorICBbIC1kICIkZGF0YWRpciIgXSAm JiBmaW5kICIkZGF0YWRpciIgLW1pbmRlcHRoIDEgLWRlbGV0ZSAmJiBybWRpciAiJGRhdGFk aXIiCisgIG1rZGlyIC1wICIkZGF0YWRpciIKKworICBMRF9MSUJSQVJZX1BBVEg9IiQoTERf b2YgIiR2IikiICIkKGJpbl9vZiAiJHYiKS9pbml0ZGIiIC1EICIkZGF0YWRpciIgLVUgcG9z dGdyZXMgPiIkTE9HRElSL2luaXRkYl8kdi5sb2ciIDI+JjEKKyAgbG9jYWwgc2I9JHtTSEFS RURfQlVGRkVSUzotNTEyTUJ9CisgIGNhdCA+PiAiJGRhdGFkaXIvcG9zdGdyZXNxbC5jb25m IiA8PEVPRgorc2hhcmVkX2J1ZmZlcnMgPSAkc2IKK3dvcmtfbWVtID0gMzJNQgorbWF4X3dh bF9zaXplID0gNEdCCitzeW5jaHJvbm91c19jb21taXQgPSBvbgorY2hlY2twb2ludF90aW1l b3V0ID0gMTBtaW4KK3dhbF9sZXZlbCA9IHJlcGxpY2EKK2xvZ19kZXN0aW5hdGlvbiA9ICdz dGRlcnInCitsb2dnaW5nX2NvbGxlY3RvciA9IG9mZgorcG9ydCA9ICRQT1JUCitFT0YKKyAg TERfTElCUkFSWV9QQVRIPSIkKExEX29mICIkdiIpIiAiJChiaW5fb2YgIiR2IikvcGdfY3Rs IiAtRCAiJGRhdGFkaXIiIFwKKyAgICAtbyAiLXAgJFBPUlQiIC1sICIkTE9HRElSL3BnXyR2 LmxvZyIgc3RhcnQgPi9kZXYvbnVsbAorICBzbGVlcCAyCit9CisKK3N0b3BfcGcoKSB7Cisg IGxvY2FsIHY9JDEKKyAgbG9jYWwgZGF0YWRpcj0kQkVOQ0gvX2RhdGFfJHYKKyAgTERfTElC UkFSWV9QQVRIPSIkKExEX29mICIkdiIpIiAiJChiaW5fb2YgIiR2IikvcGdfY3RsIiAtRCAi JGRhdGFkaXIiIHN0b3AgLW0gZmFzdCA+L2Rldi9udWxsIDI+JjEgfHwgdHJ1ZQorfQorCitw b3N0bWFzdGVyX3BpZCgpIHsKKyAgbG9jYWwgdj0kMQorICBoZWFkIC0xICIkQkVOQ0gvX2Rh dGFfJHYvcG9zdG1hc3Rlci5waWQiIDI+L2Rldi9udWxsCit9CisKK3NldHVwX3NjaGVtYXMo KSB7CisgIGxvY2FsIHY9JDEKKyAgc2VlZF9zaXVfdGFibGUgIiR2IgorICBzZWVkX3dpZGVf dGFibGUgIiR2IgorICAjIHBnYmVuY2ggc2NoZW1hIGZvciBidWlsdC1pbiBzaW1wbGVfdXBk YXRlLgorICBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2IikiICIkKGJpbl9vZiAiJHYi KS9wZ2JlbmNoIiAtaCAvdG1wIC1wICIkUE9SVCIgLVUgcG9zdGdyZXMgXAorICAgIC1pIC1z ICIkU0NBTEUiIC1xIHBvc3RncmVzID4iJExPR0RJUi9wZ2JlbmNoX2luaXRfJHYubG9nIiAy PiYxCit9CisKKyMgc2VlZF9zaXVfdGFibGU6IChyZSljcmVhdGUgdGhlIG5hcnJvdyB0YWJs ZSB1c2VkIGJ5IHRoZSBzaXVfKiB3b3JrbG9hZHMuCitzZWVkX3NpdV90YWJsZSgpIHsKKyAg bG9jYWwgdj0kMQorICBsb2NhbCByb3dzPSQoKFNDQUxFICogMTAwMDAwKSkKKyAgcHNxbF9h cyAiJHYiIDw8U1FMCitEUk9QIFRBQkxFIElGIEVYSVNUUyBzaXVfdGFibGU7CitDUkVBVEUg VEFCTEUgc2l1X3RhYmxlKGEgaW50IFBSSU1BUlkgS0VZLCBiIGludCwgYyBpbnQsIGQgaW50 LCBlIHRleHQpOworQ1JFQVRFIElOREVYIHNpdV9iIE9OIHNpdV90YWJsZShiKTsKK0NSRUFU RSBJTkRFWCBzaXVfYyBPTiBzaXVfdGFibGUoYyk7CitDUkVBVEUgSU5ERVggc2l1X2QgT04g c2l1X3RhYmxlKGQpOworSU5TRVJUIElOVE8gc2l1X3RhYmxlCisgIFNFTEVDVCBpLCBpLCBp LCBpLCByZXBlYXQoJ3gnLCAyMCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgJHJvd3MpIEFT IGk7CitWQUNVVU0gKEZVTEwsIEFOQUxZWkUpIHNpdV90YWJsZTsKK0NIRUNLUE9JTlQ7CitT UUwKK30KKworIyBzZWVkX3dpZGVfdGFibGU6IChyZSljcmVhdGUgdGhlIHdpZGUgdGFibGUg d2l0aCBXSURFX0NPTFMgaW5kZXhlZCBjb2x1bW5zLgorc2VlZF93aWRlX3RhYmxlKCkgewor ICBsb2NhbCB2PSQxCisgIGxvY2FsIGNvbGRlZnM9IiIgaW5zZXJ0Y29scz0iIiBpbnNlcnR2 YWxzPSIiIGlkeGxpc3Q9IiIKKyAgZm9yIGkgaW4gJChzZXEgMSAiJFdJREVfQ09MUyIpOyBk bworICAgIGNvbGRlZnMrPSIsIGMkaSBpbnQiCisgICAgaW5zZXJ0Y29scys9IiwgYyRpIgor ICAgIGluc2VydHZhbHMrPSIsIGkiCisgICAgaWR4bGlzdCs9IkNSRUFURSBJTkRFWCB3aWRl X2MkaSBPTiB3aWRlX3RhYmxlKGMkaSk7ICIKKyAgZG9uZQorICBsb2NhbCB3aWRlX3Jvd3M9 JCgoU0NBTEUgKiAxMDAwKSkKKyAgcHNxbF9hcyAiJHYiIDw8U1FMCitEUk9QIFRBQkxFIElG IEVYSVNUUyB3aWRlX3RhYmxlOworQ1JFQVRFIFRBQkxFIHdpZGVfdGFibGUoaWQgaW50IFBS SU1BUlkgS0VZICRjb2xkZWZzKTsKKyRpZHhsaXN0CitJTlNFUlQgSU5UTyB3aWRlX3RhYmxl KGlkICRpbnNlcnRjb2xzKSBTRUxFQ1QgaSAkaW5zZXJ0dmFscyBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAkd2lkZV9yb3dzKSBBUyBpOworVkFDVVVNIChGVUxMLCBBTkFMWVpFKSB3aWRl X3RhYmxlOworQ0hFQ0tQT0lOVDsKK1NRTAorfQorCisjIHJlc2V0X3N0YXRlOiByZXN0b3Jl IGEgd29ya2xvYWQncyB0YXJnZXQgdGFibGUgdG8gaXRzIHNlZWRlZCBiYXNlbGluZS4KKyMg VXNlZCBiZXR3ZWVuIHdvcmtsb2FkcyBzbyBwZXItd29ya2xvYWQgYmxvYXQvaWR4X3NpemUg ZGVsdGFzIGFyZSBub3QKKyMgcG9sbHV0ZWQgYnkgY2FycnlvdmVyIGZyb20gZWFybGllciB3 b3JrbG9hZHMgaW4gdGhlIHNhbWUgdmFyaWFudCBydW4uCisjIEZvciBwZ2JlbmNoX2FjY291 bnRzIHdlIHJlLWluaXRpYWxpc2UgdmlhIGBwZ2JlbmNoIC1pYDsgZm9yIG91cgorIyBoYW5k LXJvbGxlZCB0YWJsZXMgd2UgZHJvcCArIHJlY3JlYXRlICsgcmVzZWVkLgorcmVzZXRfc3Rh dGUoKSB7CisgIGxvY2FsIHY9JDEgdGFibGU9JDIKKyAgY2FzZSAiJHRhYmxlIiBpbgorICAg IHBnYmVuY2hfYWNjb3VudHMpCisgICAgICBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2 IikiICIkKGJpbl9vZiAiJHYiKS9wZ2JlbmNoIiAtaCAvdG1wIC1wICIkUE9SVCIgLVUgcG9z dGdyZXMgXAorICAgICAgICAtaSAtcyAiJFNDQUxFIiAtcSBwb3N0Z3JlcyA+PiIkTE9HRElS L3BnYmVuY2hfaW5pdF8kdi5sb2ciIDI+JjEKKyAgICAgIHBzcWxfYXMgIiR2IiAtYyAiQ0hF Q0tQT0lOVCIgPi9kZXYvbnVsbAorICAgICAgOzsKKyAgICBzaXVfdGFibGUpCisgICAgICBz ZWVkX3NpdV90YWJsZSAiJHYiCisgICAgICA7OworICAgIHdpZGVfdGFibGUpCisgICAgICBz ZWVkX3dpZGVfdGFibGUgIiR2IgorICAgICAgOzsKKyAgICAqKQorICAgICAgZWNobyAicmVz ZXRfc3RhdGU6IHVua25vd24gdGFibGUgJHRhYmxlIiA+JjIKKyAgICAgIHJldHVybiAxCisg ICAgICA7OworICBlc2FjCisgIHBzcWxfYXMgIiR2IiAtYyAiU0VMRUNUIHBnX3N0YXRfcmVz ZXRfc2luZ2xlX3RhYmxlX2NvdW50ZXJzKCckdGFibGUnOjpyZWdjbGFzczo6b2lkKSIgPi9k ZXYvbnVsbAorfQorCitibG9hdF9zdGF0cygpIHsKKyAgbG9jYWwgdj0kMSB0YWJsZT0kMgor ICBwc3FsX2FzICIkdiIgLUF0YyAiU0VMRUNUIHBnX3RhYmxlX3NpemUoJyR0YWJsZScpLzgx OTIgfHwgJywnIHx8IHBnX2luZGV4ZXNfc2l6ZSgnJHRhYmxlJykiCit9CisKKyMgc2l1X2Nv dW50OiBudW1iZXIgb2YgSE9ULWluZGV4ZWQgdXBkYXRlcyBvYnNlcnZlZCBvbiAkdGFibGUg c2luY2UgaXRzCisjIHBnc3RhdCBjb3VudGVycyB3ZXJlIGxhc3QgcmVzZXQuICBSZXR1cm5z ICIwIiBvbiBtYXN0ZXIgKHdoZXJlIHRoZQorIyBjb3VudGVyIGNvbHVtbiBkb2VzIG5vdCBl eGlzdCkgc28gdGhlIENTViBjb2x1bW4gc3RheXMgbnVtZXJpYy4KK3NpdV9jb3VudCgpIHsK KyAgbG9jYWwgdj0kMSB0YWJsZT0kMgorICBsb2NhbCB2YWwKKyAgdmFsPSQocHNxbF9hcyAi JHYiIC1BdGMgXAorICAgICJTRUxFQ1QgY29hbGVzY2Uobl90dXBfaG90X2luZGV4ZWRfdXBk LCAwKSBGUk9NIHBnX3N0YXRfdXNlcl90YWJsZXMgV0hFUkUgcmVsbmFtZT0nJHRhYmxlJyIg Mj4vZGV2L251bGwpCisgIFtbICIkdmFsIiA9fiBeWzAtOV0rJCBdXSB8fCB2YWw9MAorICBl Y2hvICIkdmFsIgorfQorCisjIHBlcl9pbmRleF9zaXplczogZW1pdCAiaWR4MT1ieXRlcztp ZHgyPWJ5dGVzOy4uLiIgZm9yIHRoZSBpbmRleGVzIG9uCisjICR0YWJsZSwgc29ydGVkIGJ5 IGluZGV4cmVsaWQuICBVc2VkIGJ5IHRoZSB3aWRlXyogd29ya2xvYWRzIHNvIHdlIGNhbgor IyBzZWUgcGVyLWNvbHVtbiBpbmRleCBncm93dGggcmF0aGVyIHRoYW4ganVzdCB0aGUgYWdn cmVnYXRlLiAgUmV0dXJucworIyB0aGUgbGl0ZXJhbCAibm9uZSIgd2hlbiAkdGFibGUgaGFz IG5vIGluZGV4ZXMuCitwZXJfaW5kZXhfc2l6ZXMoKSB7CisgIGxvY2FsIHY9JDEgdGFibGU9 JDIKKyAgbG9jYWwgb3V0CisgIG91dD0kKHBzcWxfYXMgIiR2IiAtQXRjICJTRUxFQ1Qgc3Ry aW5nX2FnZygKKyAgICAgICAgICAgaS5yZWxuYW1lIHx8ICc9JyB8fCBwZ19yZWxhdGlvbl9z aXplKGkub2lkKTo6dGV4dCwKKyAgICAgICAgICAgJzsnIE9SREVSIEJZIGkub2lkKQorICAg ICAgICAgRlJPTSBwZ19jbGFzcyB0CisgICAgICAgICBKT0lOIHBnX2luZGV4IGl4IE9OIGl4 LmluZHJlbGlkID0gdC5vaWQKKyAgICAgICAgIEpPSU4gcGdfY2xhc3MgaSAgT04gaS5vaWQg PSBpeC5pbmRleHJlbGlkCisgICAgICAgICBXSEVSRSB0LnJlbG5hbWUgPSAnJHRhYmxlJyIp CisgIFsgLW4gIiRvdXQiIF0gfHwgb3V0PSJub25lIgorICBlY2hvICIkb3V0IgorfQorCitz YW1wbGVfcGVhaygpIHsKKyAgIyBTYW1wbGUgQ1BVIC8gUlNTIG9mIHRoZSBwb3N0bWFzdGVy IHRyZWUgZm9yICREVVJBVElPTis1IHNlY29uZHMuCisgICMgV3JpdGVzICJwZWFrX2NwdV9w Y3QscGVha19yc3NfbWliIiB0byB0aGUgZ2l2ZW4gb3V0ZmlsZS4gIFBvcnRhYmxlIGFjcm9z cworICAjIExpbnV4IC8gRnJlZUJTRCAoZmFsbHMgYmFjayB0byBwZ3JlcCArIHBlci1waWQg cHMgd2hlcmUgLS1wcGlkIGlzbid0CisgICMgYXZhaWxhYmxlKS4gIFJldHVybnMgJ05BLE5B JyBpZiB0aGUgc2FtcGxlciBjYW4ndCBjb2xsZWN0IHVzZWZ1bCBkYXRhLgorICBsb2NhbCBv dXRmaWxlPSQxIHY9JDIKKyAgbG9jYWwgbGVhZGVyCisgIGxlYWRlcj0kKHBvc3RtYXN0ZXJf cGlkICIkdiIpCisgIFsgLXogIiRsZWFkZXIiIF0gJiYgeyBlY2hvICJOQSxOQSIgPiAiJG91 dGZpbGUiOyByZXR1cm47IH0KKyAgbG9jYWwgZHVyPSQoKCBEVVJBVElPTiArIDUgKSkKKyAg KAorICAgIGxvY2FsIG1heF9jcHU9MAorICAgIGxvY2FsIG1heF9yc3M9MAorICAgIGxvY2Fs IHQwPSQoZGF0ZSArJXMpCisgICAgd2hpbGUgOjsgZG8KKyAgICAgICMgQ2hpbGRyZW4gb2Yg dGhlIGxlYWRlciArIHRoZSBsZWFkZXIgaXRzZWxmLgorICAgICAgbG9jYWwgcGlkcworICAg ICAgcGlkcz0kKCAocGdyZXAgLVAgIiRsZWFkZXIiIDI+L2Rldi9udWxsOyBlY2hvICIkbGVh ZGVyIikgfCB0ciAnXG4nICcgJykKKyAgICAgIGxvY2FsIHNhbXBsZQorICAgICAgc2FtcGxl PSQocHMgLW8gcGNwdT0scnNzPSAtcCAkcGlkcyAyPi9kZXYvbnVsbCB8IFwKKyAgICAgICAg ICAgICAgIGF3ayAne2NwdSs9JDE7IHJzcys9JDJ9IEVORHtwcmludGYgIiUuMWYgJWRcbiIs IGNwdSswLCByc3MrMH0nKQorICAgICAgbG9jYWwgYyByCisgICAgICByZWFkIC1yIGMgciA8 PDwiJHNhbXBsZSIKKyAgICAgIGlmIFsgLW4gIiR7YzotfSIgXSAmJiBbIC1uICIke3I6LX0i IF07IHRoZW4KKyAgICAgICAgYXdrIC12IG09IiRtYXhfY3B1IiAtdiBjPSIkYyIgJ0JFR0lO e2V4aXQgIShjPm0pfScgJiYgbWF4X2NwdT0kYworICAgICAgICBbICIkciIgLWd0ICIkbWF4 X3JzcyIgXSAyPi9kZXYvbnVsbCAmJiBtYXhfcnNzPSRyCisgICAgICBmaQorICAgICAgbG9j YWwgbm93PSQoZGF0ZSArJXMpCisgICAgICBbICQoKG5vdyAtIHQwKSkgLWdlICIkZHVyIiBd ICYmIGJyZWFrCisgICAgICBzbGVlcCAxCisgICAgZG9uZQorICAgIGxvY2FsIHJzc19taWI9 JCgoIG1heF9yc3MgLyAxMDI0ICkpCisgICAgZWNobyAiJG1heF9jcHUsJHJzc19taWIiID4g IiRvdXRmaWxlIgorICApICYKKyAgZWNobyAkIQorfQorCitydW5fb25lKCkgeworICBsb2Nh bCB2PSQxIHdvcmtsb2FkPSQyIHNjcmlwdD0kMyB0YWJsZT0kezQ6LXNpdV90YWJsZX0gZXh0 cmFfc2V0PSR7NTotfQorCisgIGxvY2FsIHdhbF9zdGFydCB3YWxfZW5kIGhvdF9zdGFydCBo b3RfZW5kIHRvdGFsX3N0YXJ0IHRvdGFsX2VuZCB0cHMgbGF0CisgIGxvY2FsIHNpdV9zdGFy dCBzaXVfZW5kCisgIGxvY2FsIGJsb2F0X2JlZm9yZSBibG9hdF9hZnRlciBpZHhfYmVmb3Jl IGlkeF9hZnRlcgorICBsb2NhbCBwZXJfaWR4X2JlZm9yZSBwZXJfaWR4X2FmdGVyCisgIHJl YWQgLXIgYmxvYXRfYmVmb3JlIGlkeF9iZWZvcmUgPDw8IiQoYmxvYXRfc3RhdHMgIiR2IiAi JHRhYmxlIiB8IHRyICwgJyAnKSIKKyAgcGVyX2lkeF9iZWZvcmU9JChwZXJfaW5kZXhfc2l6 ZXMgIiR2IiAiJHRhYmxlIikKKworICB3YWxfc3RhcnQ9JChwc3FsX2FzICIkdiIgLUF0YyAi U0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpOjp0ZXh0IikKKyAgaG90X3N0YXJ0PSQocHNx bF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF9ob3RfdXBkLDApIEZST00g cGdfc3RhdF91c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1lPSckdGFibGUnIikKKyAgc2l1X3N0 YXJ0PSQoc2l1X2NvdW50ICIkdiIgIiR0YWJsZSIpCisgIHRvdGFsX3N0YXJ0PSQocHNxbF9h cyAiJHYiIC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF91cGQsMCkgRlJPTSBwZ19zdGF0 X3VzZXJfdGFibGVzIFdIRVJFIHJlbG5hbWU9JyR0YWJsZSciKQorCisgIGxvY2FsIG91dD0i JExPR0RJUi8ke3Z9XyR7d29ya2xvYWR9LmxvZyIKKyAgbG9jYWwgY3B1X3Jzc19maWxlPSRM T0dESVIvJHt2fV8ke3dvcmtsb2FkfS5jcHUKKyAgbG9jYWwgc2FtcGxlcl9waWQKKyAgc2Ft cGxlcl9waWQ9JChzYW1wbGVfcGVhayAiJGNwdV9yc3NfZmlsZSIgIiR2IikKKworICBzZXQg K2UKKyAgY2FzZSAiJHdvcmtsb2FkIiBpbgorICAgIHNpbXBsZV91cGRhdGUpCisgICAgICBw Z2JlbmNoX2FzICIkdiIgLU4gLWMgIiRDTElFTlRTIiAtaiAiJFRIUkVBRFMiIC1UICIkRFVS QVRJT04iIFwKKyAgICAgICAgLW4gcG9zdGdyZXMgPiIkb3V0IiAyPiYxCisgICAgICA7Owor ICAgIHdpZGVfKikKKyAgICAgICMgYnVpbGQgdGhlIFNFVCBjbGF1c2UgZnJvbSBleHRyYV9z ZXQgd2hpY2ggaXMgImMxPTp2LGMyPTp2LC4uLiIKKyAgICAgIHBnYmVuY2hfYXMgIiR2IiAt ZiA8KHNlZCAicy86d2lkZV9zZXRfY2xhdXNlLyRleHRyYV9zZXQvIiAiJHNjcmlwdCIpIFwK KyAgICAgICAgLWMgIiRDTElFTlRTIiAtaiAiJFRIUkVBRFMiIC1UICIkRFVSQVRJT04iIFwK KyAgICAgICAgLUQgInNjYWxlPSRTQ0FMRSIgLW4gcG9zdGdyZXMgPiIkb3V0IiAyPiYxCisg ICAgICA7OworICAgIHJlYWRfaW5kZXhzY2FuKQorICAgICAgIyByZWFkLW9ubHk7IHBhc3Mg dGhlIHJvdyBjb3VudCBzbyB0aGUgc2NyaXB0IGNhbiBwaWNrIHJhbmRvbSBrZXlzCisgICAg ICBwZ2JlbmNoX2FzICIkdiIgLWYgIiRzY3JpcHQiIC1jICIkQ0xJRU5UUyIgLWogIiRUSFJF QURTIiAtVCAiJERVUkFUSU9OIiBcCisgICAgICAgIC1EICJyb3dzPSQoKFNDQUxFICogMTAw MDAwKSkiIC1uIHBvc3RncmVzID4iJG91dCIgMj4mMQorICAgICAgOzsKKyAgICAqKQorICAg ICAgcGdiZW5jaF9hcyAiJHYiIC1mICIkc2NyaXB0IiAtYyAiJENMSUVOVFMiIC1qICIkVEhS RUFEUyIgLVQgIiREVVJBVElPTiIgXAorICAgICAgICAtbiBwb3N0Z3JlcyA+IiRvdXQiIDI+ JjEKKyAgICAgIDs7CisgIGVzYWMKKyAgc2V0IC1lCisKKyAgd2FpdCAiJHNhbXBsZXJfcGlk IiAyPi9kZXYvbnVsbCB8fCB0cnVlCisgIGxvY2FsIGNwdV9yc3MKKyAgY3B1X3Jzcz0kKGNh dCAiJGNwdV9yc3NfZmlsZSIgMj4vZGV2L251bGwgfHwgZWNobyAiTkEsTkEiKQorCisgIHRw cz0kKGF3ayAnL3RwcyA9IC97cHJpbnQgJDM7IGV4aXR9JyAiJG91dCIpCisgIGxhdD0kKGF3 ayAnL2xhdGVuY3kgYXZlcmFnZSA9IC97cHJpbnQgJDQ7IGV4aXR9JyAiJG91dCIpCisgIHRw cz0ke3RwczotTkF9CisgIGxhdD0ke2xhdDotTkF9CisKKyAgd2FsX2VuZD0kKHBzcWxfYXMg IiR2IiAtQXRjICJTRUxFQ1QgcGdfY3VycmVudF93YWxfbHNuKCk6OnRleHQiKQorICBob3Rf ZW5kPSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF9ob3RfdXBk LDApIEZST00gcGdfc3RhdF91c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1lPSckdGFibGUnIikK KyAgc2l1X2VuZD0kKHNpdV9jb3VudCAiJHYiICIkdGFibGUiKQorICB0b3RhbF9lbmQ9JChw c3FsX2FzICIkdiIgLUF0YyAiU0VMRUNUIGNvYWxlc2NlKG5fdHVwX3VwZCwwKSBGUk9NIHBn X3N0YXRfdXNlcl90YWJsZXMgV0hFUkUgcmVsbmFtZT0nJHRhYmxlJyIpCisKKyAgbG9jYWwg d2FsX2J5dGVzCisgIHdhbF9ieXRlcz0kKHBzcWxfYXMgIiR2IiAtQXRjICJTRUxFQ1QgcGdf d2FsX2xzbl9kaWZmKCckd2FsX2VuZCc6OnBnX2xzbiwgJyR3YWxfc3RhcnQnOjpwZ19sc24p OjpiaWdpbnQiKQorCisgICMgQ2FwdHVyZSBhIFdBTCByZWNvcmQtdHlwZSBoaXN0b2dyYW0g Zm9yIHRoaXMgd29ya2xvYWQuICBwZ193YWxkdW1wJ3MKKyAgIyAtLXN0YXRzPXJlY29yZCBv dXRwdXQgaXMgcmljaCAofjYwIGxpbmVzKSBzbyBzdGFzaCBpdCBpbiBMT0dESVIKKyAgIyBy YXRoZXIgdGhhbiB0cnlpbmcgdG8gZm9sZCBpbnRvIHRoZSBDU1YuICBUb2xlcmF0ZSBmYWls dXJlczogaWYgdGhlCisgICMgc2VnbWVudCBjb250YWluaW5nIHdhbF9zdGFydCBoYXMgYmVl biByZWN5Y2xlZCAocmFyZSB3aXRoCisgICMgbWF4X3dhbF9zaXplPTRHQiBidXQgcG9zc2li bGUgdW5kZXIgbG9uZyBjaGFpbmVkIHJ1bnMpLCB3ZSBlbWl0IGEKKyAgIyBub3RlIGFuZCBt b3ZlIG9uIGluc3RlYWQgb2YgYWJvcnRpbmcgdGhlIHdob2xlIHJ1bi4KKyAgbG9jYWwgd2Fs X3N0YXRzX2ZpbGU9JExPR0RJUi8ke3Z9XyR7d29ya2xvYWR9LndhbHN0YXRzCisgIExEX0xJ QlJBUllfUEFUSD0iJChMRF9vZiAiJHYiKSIgIiQoYmluX29mICIkdiIpL3BnX3dhbGR1bXAi IFwKKyAgICAtLXN0YXRzPXJlY29yZCAtcCAiJEJFTkNIL19kYXRhXyR2L3BnX3dhbCIgXAor ICAgIC0tc3RhcnQ9IiR3YWxfc3RhcnQiIC0tZW5kPSIkd2FsX2VuZCIgXAorICAgID4gIiR3 YWxfc3RhdHNfZmlsZSIgMj4gIiR7d2FsX3N0YXRzX2ZpbGV9LmVyciIgXAorICAgIHx8IGVj aG8gInBnX3dhbGR1bXAgdW5hdmFpbGFibGUgZm9yIHRoaXMgcmFuZ2U7IHNlZSAke3dhbF9z dGF0c19maWxlfS5lcnIiID4gIiR3YWxfc3RhdHNfZmlsZSIKKworICByZWFkIC1yIGJsb2F0 X2FmdGVyIGlkeF9hZnRlciA8PDwiJChibG9hdF9zdGF0cyAiJHYiICIkdGFibGUiIHwgdHIg LCAnICcpIgorICBwZXJfaWR4X2FmdGVyPSQocGVyX2luZGV4X3NpemVzICIkdiIgIiR0YWJs ZSIpCisKKyAgbG9jYWwgaG90PSQoKGhvdF9lbmQgLSBob3Rfc3RhcnQpKQorICBsb2NhbCBz aXU9JCgoc2l1X2VuZCAtIHNpdV9zdGFydCkpCisgIGxvY2FsIHRvdD0kKCh0b3RhbF9lbmQg LSB0b3RhbF9zdGFydCkpCisgIGxvY2FsIGNsYXNzaWNfaG90PSQoKGhvdCAtIHNpdSkpCisg IGxvY2FsIG5vbl9ob3Q9JCgodG90IC0gaG90KSkKKworICBwcmludGYgJyVzLCVzLCVzLCVz LCVkLCVkLCVkLCVkLCVzLCVzLCVzLCVzLCVzLCVzLCVzLCVzXG4nIFwKKyAgICAiJHYiICIk d29ya2xvYWQiICIkdHBzIiAiJGxhdCIgIiRjbGFzc2ljX2hvdCIgIiRzaXUiICIkbm9uX2hv dCIgIiR0b3QiIFwKKyAgICAiJHdhbF9ieXRlcyIgXAorICAgICIkYmxvYXRfYmVmb3JlIiAi JGJsb2F0X2FmdGVyIiBcCisgICAgIiRpZHhfYmVmb3JlIiAiJGlkeF9hZnRlciIgXAorICAg ICIkY3B1X3JzcyIgIiRwZXJfaWR4X2JlZm9yZSIgIiRwZXJfaWR4X2FmdGVyIiA+PiAiJE9V VCIKKyAgcHJpbnRmICcgICUtOHMgJS0xNHMgdHBzPSUxMHMgbGF0PSU2cyBjbGFzc2ljX2hv dD0lN2QgaGk9JTdkIG5vbl9ob3Q9JTdkIHRvdD0lLTdkIHdhbD0lMTJzIGJsb2F0PSVzLT4l cyBpZHg9JXMtPiVzIGNwdV9yc3M9JXNcbicgXAorICAgICIkdiIgIiR3b3JrbG9hZCIgIiR0 cHMiICIkbGF0IiAiJGNsYXNzaWNfaG90IiAiJHNpdSIgIiRub25faG90IiAiJHRvdCIgIiR3 YWxfYnl0ZXMiIFwKKyAgICAiJGJsb2F0X2JlZm9yZSIgIiRibG9hdF9hZnRlciIgIiRpZHhf YmVmb3JlIiAiJGlkeF9hZnRlciIgIiRjcHVfcnNzIgorfQorCitidWlsZF93aWRlX3NldF9j bGF1c2UoKSB7CisgICMgZW1pdCBlLmcuICJjMT06dixjMj06diwuLi4sY049OnYiIGZvciBm aXJzdCBOIGNvbHMuCisgIGxvY2FsIG49JDEKKyAgaWYgWyAiJG4iIC1lcSAwIF07IHRoZW4K KyAgICAjIE5vIGluZGV4ZWQtY29sIHVwZGF0ZTsgdG91Y2ggYSBub24taW5kZXhlZCBjb2x1 bW4gKGlkICUgMSBzbyBpdCdzIGEgbm8tb3ApCisgICAgZWNobyAiaWQ9aWQiCisgICAgcmV0 dXJuCisgIGZpCisgIGxvY2FsIGNsYXVzZXM9IiIKKyAgZm9yIGkgaW4gJChzZXEgMSAiJG4i KTsgZG8KKyAgICBbIC1uICIkY2xhdXNlcyIgXSAmJiBjbGF1c2VzKz0iLCIKKyAgICBjbGF1 c2VzKz0iYyRpPTp2IgorICBkb25lCisgIGVjaG8gIiRjbGF1c2VzIgorfQorCitmb3IgdiBp biBtYXN0ZXIgdGVwaWQ7IGRvCisgIGVjaG8gIi0tLSB2YXJpYW50OiAkdiIKKyAgc3RvcF9w ZyAiJHYiIHx8IHRydWUKKyAgc3RhcnRfcGcgIiR2IgorICBzZXR1cF9zY2hlbWFzICIkdiIK KworICBydW5fb25lICIkdiIgc2ltcGxlX3VwZGF0ZSAnJyAgICAgICAgICAgICAgICAgICAg cGdiZW5jaF9hY2NvdW50cworICByZXNldF9zdGF0ZSAiJHYiIHNpdV90YWJsZQorICBydW5f b25lICIkdiIgaG90X2luZGV4ZWRfdXBkYXRlICAgICIkQkVOQ0gvc2NyaXB0cy9ob3RfaW5k ZXhlZF91cGRhdGUuc3FsIiAgc2l1X3RhYmxlCisgIHJlc2V0X3N0YXRlICIkdiIgc2l1X3Rh YmxlCisgIHJ1bl9vbmUgIiR2IiBob3RfaW5kZXhlZF9taXhlZCAgICAgIiRCRU5DSC9zY3Jp cHRzL2hvdF9pbmRleGVkX21peGVkLnNxbCIgICBzaXVfdGFibGUKKyAgcmVzZXRfc3RhdGUg IiR2IiBzaXVfdGFibGUKKyAgcnVuX29uZSAiJHYiIHJlYWRfaW5kZXhzY2FuICAgICAgICAi JEJFTkNIL3NjcmlwdHMvcmVhZF9pbmRleHNjYW4uc3FsIiAgICAgIHNpdV90YWJsZQorCisg IGZvciBuIGluICR7V0lERV9TVEVQUy8vLC8gfTsgZG8KKyAgICByZXNldF9zdGF0ZSAiJHYi IHdpZGVfdGFibGUKKyAgICBydW5fb25lICIkdiIgIndpZGVfJHtufSIgIiRCRU5DSC9zY3Jp cHRzL3dpZGVfdXBkYXRlLnNxbCIgd2lkZV90YWJsZSBcCisgICAgICAgICAgICAiJChidWls ZF93aWRlX3NldF9jbGF1c2UgIiRuIikiCisgIGRvbmUKKworICBzdG9wX3BnICIkdiIKK2Rv bmUKKworZWNobyAiPT09IHJlc3VsdHM6ICRPVVQiCitjb2x1bW4gLXQgLXMsICIkT1VUIiB8 IGhlYWQgLTUwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRz L3NvYWsuc2ggYi9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9zY3JpcHRzL3NvYWsuc2gKbmV3 IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAuLjZkMTI3ZjFjMDEyCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvYmVuY2htYXJrcy9zaXUvc2NyaXB0cy9zb2FrLnNo CkBAIC0wLDAgKzEsMTI4IEBACisjIS91c3IvYmluL2VudiBiYXNoCisjIHRlcGlkIHNvYWs6 IHJ1biBob3RfaW5kZXhlZF91cGRhdGUgZm9yICREVVJBVElPTiBzZWNvbmRzIG9uIGVhY2gg dmFyaWFudCwgc2FtcGxpbmcKKyMgVFBTIC8gSE9ULXJhdGUgLyBXQUwgdm9sdW1lIC8gdGFi bGUraW5kZXggYmxvYXQgZXZlcnkgJFNBTVBMRSBzZWNvbmRzLgorIyBFbWl0cyBhIENTViB3 aXRoIG9uZSBzYW1wbGUgcm93IHBlciB0aWNrIHBlciB2YXJpYW50Lgorc2V0IC1ldW8gcGlw ZWZhaWwKKworQkVOQ0g9JHtCRU5DSDotL3NjcmF0Y2gvc2l1LWJlbmNofQorU0NBTEU9JHtT Q0FMRTotNTB9CitDTElFTlRTPSR7Q0xJRU5UUzotMTZ9CitUSFJFQURTPSR7VEhSRUFEUzot OH0KK0RVUkFUSU9OPSR7RFVSQVRJT046LTkwMH0gICAgICMgMTUgbWludXRlcworU0FNUExF PSR7U0FNUExFOi02MH0gICAgICAgICAgIyBldmVyeSA2MCBzCitQT1JUPSR7UE9SVDotNTc1 MDN9CitTSEFSRURfQlVGRkVSUz0ke1NIQVJFRF9CVUZGRVJTOi0yR0J9CisKK1RTPSQoZGF0 ZSAtdSArJVklbSVkVCVIJU0lU1opCitPVVQ9JEJFTkNIL3Jlc3VsdHMvc29ha18kVFMuY3N2 CitMT0dESVI9JEJFTkNIL2xvZ3Mvc29ha18kVFMKK21rZGlyIC1wICIkTE9HRElSIgorZWNo byAidmFyaWFudCx0X3NlY3MsdHBzX2luc3RhbnQsaG90X3BjdF9pbnN0YW50LGhlYXBfcGFn ZXMsaW5kZXhfYnl0ZXMsd2FsX2J5dGVzX3NpbmNlX3N0YXJ0LG5fZGVhZF90dXAiID4gIiRP VVQiCitlY2hvICI9PT0gc29hayAkVFMgLT4gJE9VVCIKKworYmluX29mKCkgIHsgZWNobyAi JEJFTkNILyQxL3Vzci9sb2NhbC9wZ3NxbC9iaW4iOyB9CitMRF9vZigpICAgeyBsb2NhbCBi PSRCRU5DSC8kMS91c3IvbG9jYWwvcGdzcWw7IFsgLWQgIiRiL2xpYjY0IiBdICYmIGVjaG8g IiRiL2xpYjY0IiB8fCBlY2hvICIkYi9saWIiOyB9CisKK3BzcWxfYXMoKSB7IGxvY2FsIHY9 JDE7IHNoaWZ0OyBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2IikiICIkKGJpbl9vZiAi JHYiKS9wc3FsIiAtaCAvdG1wIC1wICIkUE9SVCIgLVUgcG9zdGdyZXMgLVggIiRAIjsgfQor cGdiZW5jaF9hcygpIHsgbG9jYWwgdj0kMTsgc2hpZnQ7IExEX0xJQlJBUllfUEFUSD0iJChM RF9vZiAiJHYiKSIgIiQoYmluX29mICIkdiIpL3BnYmVuY2giIC1oIC90bXAgLXAgIiRQT1JU IiAtVSBwb3N0Z3JlcyAiJEAiOyB9CisKK3N0YXJ0X3BnKCkgeworICBsb2NhbCB2PSQxIGRh dGFkaXI9JEJFTkNIL19kYXRhXyR2CisgIFsgLWQgIiRkYXRhZGlyIiBdICYmIGZpbmQgIiRk YXRhZGlyIiAtbWluZGVwdGggMSAtZGVsZXRlICYmIHJtZGlyICIkZGF0YWRpciIKKyAgbWtk aXIgLXAgIiRkYXRhZGlyIgorICBMRF9MSUJSQVJZX1BBVEg9IiQoTERfb2YgIiR2IikiICIk KGJpbl9vZiAiJHYiKS9pbml0ZGIiIC1EICIkZGF0YWRpciIgLVUgcG9zdGdyZXMgPiIkTE9H RElSL2luaXRkYl8kdi5sb2ciIDI+JjEKKyAgY2F0ID4+ICIkZGF0YWRpci9wb3N0Z3Jlc3Fs LmNvbmYiIDw8RU9GCitzaGFyZWRfYnVmZmVycyA9ICRTSEFSRURfQlVGRkVSUword29ya19t ZW0gPSAzMk1CCittYXhfd2FsX3NpemUgPSA4R0IKK3N5bmNocm9ub3VzX2NvbW1pdCA9IG9u CitjaGVja3BvaW50X3RpbWVvdXQgPSAxMG1pbgord2FsX2xldmVsID0gcmVwbGljYQorYXV0 b3ZhY3V1bSA9IG9uCithdXRvdmFjdXVtX25hcHRpbWUgPSAxMHMKK2F1dG92YWN1dW1fdmFj dXVtX3RocmVzaG9sZCA9IDUwCithdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3IgPSAw LjEKK3BvcnQgPSAkUE9SVAorRU9GCisgIExEX0xJQlJBUllfUEFUSD0iJChMRF9vZiAiJHYi KSIgIiQoYmluX29mICIkdiIpL3BnX2N0bCIgLUQgIiRkYXRhZGlyIiBcCisgICAgLW8gIi1w ICRQT1JUIiAtbCAiJExPR0RJUi9wZ18kdi5sb2ciIHN0YXJ0ID4vZGV2L251bGwKKyAgc2xl ZXAgMgorfQorCitzdG9wX3BnKCkgeworICBsb2NhbCB2PSQxCisgIExEX0xJQlJBUllfUEFU SD0iJChMRF9vZiAiJHYiKSIgIiQoYmluX29mICIkdiIpL3BnX2N0bCIgLUQgIiRCRU5DSC9f ZGF0YV8kdiIgc3RvcCAtbSBmYXN0ID4vZGV2L251bGwgMj4mMSB8fCB0cnVlCit9CisKK3Nl dHVwKCkgeworICBsb2NhbCB2PSQxIHJvd3M9JCgoU0NBTEUgKiAxMDAwMDApKQorICBwc3Fs X2FzICIkdiIgPDxTUUwKK0RST1AgVEFCTEUgSUYgRVhJU1RTIHNpdV90YWJsZTsKK0NSRUFU RSBUQUJMRSBzaXVfdGFibGUoYSBpbnQgUFJJTUFSWSBLRVksIGIgaW50LCBjIGludCwgZCBp bnQsIGUgdGV4dCk7CitDUkVBVEUgSU5ERVggc2l1X2IgT04gc2l1X3RhYmxlKGIpOworQ1JF QVRFIElOREVYIHNpdV9jIE9OIHNpdV90YWJsZShjKTsKK0NSRUFURSBJTkRFWCBzaXVfZCBP TiBzaXVfdGFibGUoZCk7CitJTlNFUlQgSU5UTyBzaXVfdGFibGUKKyAgU0VMRUNUIGksIGks IGksIGksIHJlcGVhdCgneCcsIDIwKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAkcm93cykg QVMgaTsKK1ZBQ1VVTSAoQU5BTFlaRSkgc2l1X3RhYmxlOworU1FMCit9CisKK3J1bl9zb2Fr KCkgeworICBsb2NhbCB2PSQxCisgIGVjaG8gIi0tLSBzb2FrICR2IGZvciAke0RVUkFUSU9O fXMsIHNhbXBsaW5nIGV2ZXJ5ICR7U0FNUExFfXMiCisgIHN0b3BfcGcgIiR2IiB8fCB0cnVl CisgIHN0YXJ0X3BnICIkdiIKKyAgc2V0dXAgIiR2IgorICBsb2NhbCB3YWwwCisgIHdhbDA9 JChwc3FsX2FzICIkdiIgLUF0YyAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2xzbigpOjp0ZXh0 IikKKyAgbG9jYWwgaG90MCB0b3QwCisgIGhvdDA9JChwc3FsX2FzICIkdiIgLUF0YyAiU0VM RUNUIGNvYWxlc2NlKG5fdHVwX2hvdF91cGQsMCkgRlJPTSBwZ19zdGF0X3VzZXJfdGFibGVz IFdIRVJFIHJlbG5hbWU9J3NpdV90YWJsZSciKQorICB0b3QwPSQocHNxbF9hcyAiJHYiIC1B dGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF91cGQsMCkgICAgIEZST00gcGdfc3RhdF91c2Vy X3RhYmxlcyBXSEVSRSByZWxuYW1lPSdzaXVfdGFibGUnIikKKyAgbG9jYWwgcHJldl9ob3Q9 JGhvdDAgcHJldl90b3Q9JHRvdDAKKworICAjIERyaXZlIHBnYmVuY2ggaW4gdGhlIGJhY2tn cm91bmQ7IHNhbXBsZXIgaW4gZm9yZWdyb3VuZC4KKyAgcGdiZW5jaF9hcyAiJHYiIC1mICIk QkVOQ0gvc2NyaXB0cy9ob3RfaW5kZXhlZF91cGRhdGUuc3FsIiBcCisgICAgLWMgIiRDTElF TlRTIiAtaiAiJFRIUkVBRFMiIC1UICIkRFVSQVRJT04iIFwKKyAgICAtUCAiJFNBTVBMRSIg LW4gcG9zdGdyZXMgPiIkTE9HRElSL3BnYmVuY2hfJHYubG9nIiAyPiYxICYKKyAgbG9jYWwg cGdiPSQhCisKKyAgbG9jYWwgdD0wCisgIHdoaWxlIFsgIiR0IiAtbHQgIiREVVJBVElPTiIg XTsgZG8KKyAgICBzbGVlcCAiJFNBTVBMRSIKKyAgICB0PSQoKHQgKyBTQU1QTEUpKQorICAg IGxvY2FsIG5vd19ob3Qgbm93X3RvdCB3YWxfbm93IHdhbF9ieXRlcyBoZWFwX3BhZ2VzIGlk eF9ieXRlcyBuX2RlYWQKKyAgICBub3dfaG90PSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVD VCBjb2FsZXNjZShuX3R1cF9ob3RfdXBkLDApIEZST00gcGdfc3RhdF91c2VyX3RhYmxlcyBX SEVSRSByZWxuYW1lPSdzaXVfdGFibGUnIikKKyAgICBub3dfdG90PSQocHNxbF9hcyAiJHYi IC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX3R1cF91cGQsMCkgICAgIEZST00gcGdfc3RhdF91 c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1lPSdzaXVfdGFibGUnIikKKyAgICB3YWxfbm93PSQo cHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9sc24oKTo6dGV4dCIp CisgICAgd2FsX2J5dGVzPSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBwZ193YWxfbHNu X2RpZmYoJyR3YWxfbm93Jzo6cGdfbHNuLCAnJHdhbDAnOjpwZ19sc24pOjpiaWdpbnQiKQor ICAgIGhlYXBfcGFnZXM9JChwc3FsX2FzICIkdiIgLUF0YyAiU0VMRUNUIHBnX3RhYmxlX3Np emUoJ3NpdV90YWJsZScpLzgxOTIiKQorICAgIGlkeF9ieXRlcz0kKHBzcWxfYXMgIiR2IiAt QXRjICJTRUxFQ1QgcGdfaW5kZXhlc19zaXplKCdzaXVfdGFibGUnKSIpCisgICAgbl9kZWFk PSQocHNxbF9hcyAiJHYiIC1BdGMgIlNFTEVDVCBjb2FsZXNjZShuX2RlYWRfdHVwLDApIEZS T00gcGdfc3RhdF91c2VyX3RhYmxlcyBXSEVSRSByZWxuYW1lPSdzaXVfdGFibGUnIikKKwor ICAgIGxvY2FsIGRfaG90PSQoKG5vd19ob3QgLSBwcmV2X2hvdCkpCisgICAgbG9jYWwgZF90 b3Q9JCgobm93X3RvdCAtIHByZXZfdG90KSkKKyAgICBsb2NhbCB0cHNfaSBob3RfcGN0Cisg ICAgaWYgWyAiJGRfdG90IiAtZ3QgMCBdOyB0aGVuCisgICAgICB0cHNfaT0kKGF3ayAtdiBk PSIkZF90b3QiIC12IHM9IiRTQU1QTEUiICdCRUdJTntwcmludGYgIiUuMWYiLCBkL3N9JykK KyAgICAgIGhvdF9wY3Q9JChhd2sgLXYgaD0iJGRfaG90IiAtdiB0PSIkZF90b3QiICdCRUdJ TntwcmludGYgIiUuMWYiLCAxMDAqaC90fScpCisgICAgZWxzZQorICAgICAgdHBzX2k9MDsg aG90X3BjdD0wCisgICAgZmkKKyAgICBwcmludGYgJyVzLCVkLCVzLCVzLCVzLCVzLCVzLCVz XG4nICIkdiIgIiR0IiAiJHRwc19pIiAiJGhvdF9wY3QiICIkaGVhcF9wYWdlcyIgIiRpZHhf Ynl0ZXMiICIkd2FsX2J5dGVzIiAiJG5fZGVhZCIgPj4gIiRPVVQiCisgICAgcHJpbnRmICcg ICUtNnMgdD0lLTVkIHRwcz0lOHMgaG90PSUtNXMlJSBoZWFwX3Bncz0lLTdzIGlkeD0lLTEy cyB3YWw9JS0xMnMgZGVhZD0lc1xuJyBcCisgICAgICAiJHYiICIkdCIgIiR0cHNfaSIgIiRo b3RfcGN0IiAiJGhlYXBfcGFnZXMiICIkaWR4X2J5dGVzIiAiJHdhbF9ieXRlcyIgIiRuX2Rl YWQiCisgICAgcHJldl9ob3Q9JG5vd19ob3QKKyAgICBwcmV2X3RvdD0kbm93X3RvdAorICBk b25lCisKKyAgd2FpdCAiJHBnYiIgMj4vZGV2L251bGwgfHwgdHJ1ZQorICBzdG9wX3BnICIk diIKK30KKworZm9yIHYgaW4gbWFzdGVyIHRlcGlkOyBkbworICBydW5fc29hayAiJHYiCitk b25lCisKK2VjaG8gIj09PSBzb2FrIHJlc3VsdHM6ICRPVVQiCitjb2x1bW4gLXQgLXMsICIk T1VUIiB8IGhlYWQgLTgwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9iZW5jaG1hcmtzL3NpdS9z Y3JpcHRzL3dpZGVfdXBkYXRlLnNxbCBiL3NyYy90ZXN0L2JlbmNobWFya3Mvc2l1L3Njcmlw dHMvd2lkZV91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi5jMmMyZmYxNGFjNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L2JlbmNobWFy a3Mvc2l1L3NjcmlwdHMvd2lkZV91cGRhdGUuc3FsCkBAIC0wLDAgKzEsNyBAQAorLS0gV2lk ZS10YWJsZSB3b3JrbG9hZC4gIFRoZSBzZXR1cCBzY3JpcHQgY3JlYXRlcyBhIHRhYmxlIHdp dGggV0lERV9DT0xTIGludGVnZXIKKy0tIGNvbHVtbnMsIGVhY2ggc2VwYXJhdGVseSBidHJl ZS1pbmRleGVkLiAgVGhlIHdvcmtsb2FkIFVQREFURXMgYQorLS0gY29uZmlndXJhYmxlIG51 bWJlciBvZiB0aG9zZSBpbmRleGVkIGNvbHVtbnMgcGVyIHRyYW5zYWN0aW9uCistLSAoV0lE RV9VUERDT0xTIGVudiB2YXIpIG9uIGEgcmFuZG9tIHJvdy4KK1xzZXQgcmlkIHJhbmRvbSgx LCA6c2NhbGUgKiAxMDAwKQorXHNldCB2IHJhbmRvbSgxLCAxMDAwMDAwMDAwKQorVVBEQVRF IHdpZGVfdGFibGUgU0VUIDp3aWRlX3NldF9jbGF1c2UgV0hFUkUgaWQgPSA6cmlkOwotLSAK Mi41MC4xCgo= --732d2653398ad274b1166a00220a1f2b85c8ed8b--