From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lj1-x232.google.com (mail-lj1-x232.google.com [IPv6:2a00:1450:4864:20::232]) by sourceware.org (Postfix) with ESMTPS id 9DDB938708F8 for ; Fri, 15 Jan 2021 02:19:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 9DDB938708F8 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=2ndquadrant.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=craig.ringer@2ndquadrant.com Received: by mail-lj1-x232.google.com with SMTP id w26so8776844ljo.4 for ; Thu, 14 Jan 2021 18:19:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=2ndquadrant-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=D6zR2XhdoQja/b5sRqx1s0yEIEBJWDHbDO4hYeQQ4vA=; b=wOZ+dF6pBVpzyB/QUkOtRfkolMIGP1GSO/2kqco4jYFH929bgITgiGcK6OseEduskn DHqEcD87PKc1+o9PrDNZ+8fnNweXrC5+c6qxXNiNNtS/K3Jy2D0IfBEXfbqc8mIRm7I5 e4GTEBuDKMBVXSQlSAqFZc8zd7ZPMQ2MhQW2+VEjj9s/RbX+O021DV4QHa9btuSeZi+n 3Ya0oon4/9qou+Dx12FMkjtswyhIcXrBZsHk01iAuSzEx552Wz9Z8SX8J+eDEDQ8OW/s BgjsMSVi4mG64U8Lfp/mZZb4hSqYiaVlh5nZG5P5L2FgTLiacHo+PLVD5Ay+Gyl5H7SY G1xQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=D6zR2XhdoQja/b5sRqx1s0yEIEBJWDHbDO4hYeQQ4vA=; b=bmJMVYgsYNEbitRta123I15lOlzcXESQgQ2/KgY3BkwjqKAC3QAmhdS3K7ap0PH/7s 7c1DpuuwpZXc1YCuniAIT/AbXjalPlgIfdDVFdM3jKcF/hknDpwJdZO1zDOoOA4DjfZH YW0EqQSRHSsoznNLqDdEQnPQWEXyUsMI7dExL9feN7caVWuY5iaauCBWtC5rsPFAeMfs YBnkkStyj8r4A0u/2SSIHkm7s1ZDW/evFprb0n+sUlFr2p5xCJhMmHuu/Whm8tiSzjy8 jgd/+T/a5TZCeAX+M1u6xlFVQd3KyqLM2gfqlnK7Oh4onddLPwi8zMj0hatp8FtLSDdC DMMQ== X-Gm-Message-State: AOAM532VaBC7ib1nDxS/vSJJTw+DPtC7Kzp04WwU5hjz9Qf7SqPnNxni kEQ7RfuporbrrUDcbqp9W3XI3ovt9yq4dUW+IJVjog== X-Google-Smtp-Source: ABdhPJwP+oy+FoyBTmFR8kIBGk9bOFyWBFz5HY88MaCYA5ejbBv2Mr6dlc2vtG5LodKgZdXb5IaA/A6k/hS3Qo5PJh0= X-Received: by 2002:a2e:98e:: with SMTP id 136mr4291381ljj.16.1610677148987; Thu, 14 Jan 2021 18:19:08 -0800 (PST) MIME-Version: 1.0 References: <20210113150431.GC25762@redhat.com> In-Reply-To: <20210113150431.GC25762@redhat.com> From: Craig Ringer Date: Fri, 15 Jan 2021 10:18:57 +0800 Message-ID: Subject: Re: Command line systemtap macro setting To: "Frank Ch. Eigler" , systemtap@sourceware.org Content-Type: multipart/mixed; boundary="00000000000050976405b8e6ff2d" X-Spam-Status: No, score=-8.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, HTML_MESSAGE, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: systemtap@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Systemtap mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 15 Jan 2021 02:19:14 -0000 --00000000000050976405b8e6ff2d Content-Type: text/plain; charset="UTF-8" On Wed, 13 Jan 2021 at 23:04, Frank Ch. Eigler wrote: > Hi - > > > Any thoughts on this? I'd be happy to submit a patch but I'd like to know > > if you think it's reasonable to do first, so I don't spend the time > writing > > something that won't be committable. > > It'd be a big usability improvement in systemtap for me to be able to > > define systemtap language macros on the command line. > > Thanks so much for doing the Work! It's certainly a reasonable > self-serve kind of way to do it outside the tool. > > I really think tho that stap translator proper should do this, and am > pretty sure we can. It'd be some hacking around within tapsets.cxx or > loc2stap.cxx or somesuch, but it wouldn't be too much. The enum > values for $FOO_BAR could translate straight to literals. Would you > have any interest in trying to hack on that? > I made an attempt at doing this by implementing an @enum language feature, but landed up getting totally bogged. My WIP is attached - it's on top of commit 403e92779 so it might not merge exactly, but it's unfinished anyway. I got lost in all the visitors and kept hitting assertions I couldn't understand or debug, IIRC, and ran out of time on it. -- Craig Ringer http://www.2ndQuadrant.com/ 2ndQuadrant - PostgreSQL Solutions for the Enterprise --00000000000050976405b8e6ff2d Content-Type: text/x-patch; charset="US-ASCII"; name="0001-wip-enum-support.patch" Content-Disposition: attachment; filename="0001-wip-enum-support.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kjxn1y720 RnJvbSAzY2FiNWJmYWZjYzE2OTk1OWQ1MWQzNmY4YzEwZjU4NGJlZTE3ZDZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBDcmFpZyBSaW5nZXIgPGNyYWlnLnJpbmdlckAybmRxdWFkcmFu dC5jb20+CkRhdGU6IFR1ZSwgMjEgSnVsIDIwMjAgMTU6NTU6MDIgKzA4MDAKU3ViamVjdDogW1BB VENIXSB3aXAgQGVudW0gc3VwcG9ydAoKLS0tCiBidWlsZHJ1bi5jeHggIHwgICAyICstCiBkd2Zs cHAuY3h4ICAgIHwgIDY0ICsrKysrKysrKysrKysrKy0tCiBkd2ZscHAuaCAgICAgIHwgIDE1ICsr KysKIGVsYWJvcmF0ZS5jeHggfCAgMjUgKysrKysrKwogZWxhYm9yYXRlLmggICB8ICAgMSArCiBw YXJzZS5jeHggICAgIHwgIDM4ICsrKysrKysrKy0KIHN0YXB0cmVlLmN4eCAgfCAgNTYgKysrKysr KysrKysrKysrCiBzdGFwdHJlZS5oICAgIHwgIDE1ICsrKysKIHRhcHNldHMuY3h4ICAgfCAxODcg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIHRyYW5z bGF0ZS5jeHggfCAgIDYgKysKIDEwIGZpbGVzIGNoYW5nZWQsIDQwMiBpbnNlcnRpb25zKCspLCA3 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2J1aWxkcnVuLmN4eCBiL2J1aWxkcnVuLmN4eApp bmRleCA2NjhiNDJiNmQuLjQ5ODFmMDg2ZCAxMDA2NDQKLS0tIGEvYnVpbGRydW4uY3h4CisrKyBi L2J1aWxkcnVuLmN4eApAQCAtMzEsNyArMzEsNyBAQCBleHRlcm4gIkMiIHsKICNpbmNsdWRlIDxz eXMvcmVzb3VyY2UuaD4KIH0KIAotLy8gQSBiaXQgb2Ygb2JmdXNjYXRpb24gZm9yIEdlbnRvbydz IHNha2UuCisvLyBBIGJpdCBvZiBvYmZ1c2NhdGlvbiBmb3IgR2VudG9vJ3Mgc2FrZSBzbyBpdCBj YW5ub3QgaGlkZSAtV2Vycm9yLgogLy8gV2UgKm5lZWQqIC1XZXJyb3IgZm9yIHN0YXBjb25mIHRv IHdvcmsgY29ycmVjdGx5LgogLy8gaHR0cHM6Ly9idWdzLmdlbnRvby5vcmcvc2hvd19idWcuY2dp P2lkPTUyMjkwOAogI2RlZmluZSBXRVJST1IgKCItVyIgImVycm9yIikKZGlmZiAtLWdpdCBhL2R3 ZmxwcC5jeHggYi9kd2ZscHAuY3h4CmluZGV4IDgzYTA2ZDVjYi4uNzllZjI2MTcxIDEwMDY0NAot LS0gYS9kd2ZscHAuY3h4CisrKyBiL2R3ZmxwcC5jeHgKQEAgLTExOTMsOCArMTE5Myw2MSBAQCBk d2ZscHA6Oml0ZXJhdGVfb3Zlcl9nbG9iYWxzPHZvaWQ+KER3YXJmX0RpZSAqY3VfZGllLAogfQog CiB0ZW1wbGF0ZTw+IGludAotZHdmbHBwOjppdGVyYXRlX292ZXJfdHlwZXM8dm9pZD4oRHdhcmZf RGllICp0b3BfZGllLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBoYXNf aW5uZXJfdHlwZXMsCitkd2ZscHA6Oml0ZXJhdGVfb3Zlcl9lbnVtZXJhdGlvbnM8dm9pZD4oRHdh cmZfRGllICp0b3BfZGllLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICgq IGNhbGxiYWNrKShEd2FyZl9EaWUqLCBEd2FyZl9EaWUqLCB2b2lkKiksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhKQoreworICBpbnQgcmMgPSBEV0FSRl9DQl9P SzsKKyAgRHdhcmZfRGllIGRpZTsKKworICBhc3NlcnQgKHRvcF9kaWUpOworICBhc3NlcnQgKGR3 YXJmX3RhZyh0b3BfZGllKSA9PSBEV19UQUdfY29tcGlsZV91bml0KTsKKworICBpZiAoZHdhcmZf Y2hpbGQodG9wX2RpZSwgJmRpZSkgIT0gMCkKKyAgICByZXR1cm4gcmM7CisKKyAgZG8KKyAgICBz d2l0Y2ggKGR3YXJmX3RhZygmZGllKSkKKyAgICAgIHsKKyAgICAgIGNhc2UgRFdfVEFHX2VudW1l cmF0aW9uX3R5cGU6CisJeworCSAgLyogV2FsayB0aGUgZW51bSB0eXBlJ3MgZW51bWVyYXRpb24g bWVtYmVycyAqLworCSAgRHdhcmZfZGllIGVudW1fZGllOworICAJICBpZiAoZHdhcmZfY2hpbGQo ZGllLCAmZW51bV9kaWUpID09IDApIHsKKwkgICAgZG8geworCSAgICAgIGlmIChkd2FyZl90YWco JmVudW1fZGllKSA9PSBEV19UQUdfZW51bWVyYXRvcikKKwkJeworCQkgIC8qIExldCB0aGUgY2Ig aW5zcGVjdCB0aGUgZW51bSAqLworCQkgIHJjID0gKCpjYWxsYmFjaykoJmVudW1kaWUsICZkaWUs IGRhdGEpOworCSAgICAgICAgfQorCSAgICAgIGVsc2UgaWYgKHNlc3MudmVyYm9zZSA+IDMpCisJ CXsKKwkJICBjbG9nIDw8IF9GKCJ1bmV4cGVjdGVkIGNoaWxkIG9mIERXQVJGIGVudW1lcmF0aW9u X3R5cGUgJXM6IGdvdCAlZCwgZXhwZWN0ZWQgJWQgKERXX1RBR19lbnVtZXJhdG9yKSIsIGR3YXJm X2RpZW5hbWUoJmRpZSksIGR3YXJmX3RhZygmZW51bV9kaWUpLCBEV19UQUdfZW51bWVyYXRvcikg PDwgZW5kbDsKKwkJfQorCSAgICB9IHdoaWxlIChlbnVtX3JjID09IERXQVJGX0NCX09LICYmIGR3 YXJmX3NpYmxpbmdvZigmZW51bWRpZSwgJmVudW1kaWUpID09IDApOworCSAgfQorICAgICAgICAg IGJyZWFrOworCX0KKworICAgICAgY2FzZSBEV19UQUdfaW1wb3J0ZWRfdW5pdDoKKwl7CisJICAv LyBGb2xsb3cgdGhlIGltcG9ydGVkX3VuaXQgYW5kIGl0ZXJhdGUgb3ZlciBpdHMgY29udGVudHMK KwkgIC8vIChlaXRoZXIgYSBwYXJ0aWFsX3VuaXQgb3IgYSBmdWxsIGNvbXBpbGVfdW5pdCksIGFs bCBpdHMKKwkgIC8vIGNoaWxkcmVuIHNob3VsZCBiZSB0cmVhdGVkIGFzIGlmIHRoZXkgYXBwZWFy IGluIHRoaXMgcGxhY2UuCisJICBEd2FyZl9kaWUgaW1wb3J0OworCSAgaWYgKGR3YXJmX2F0dHJf ZGllKCZkaWUsIERXX0FUX2ltcG9ydCwgJmltcG9ydCkpCisJICAgIHJjID0gaXRlcmF0ZV9vdmVy X2VudW1lcmF0aW9ucygmaW1wb3J0LAorCQkJCSAgICBjYWxsYmFjaywgZGF0YSk7CisJICBicmVh azsKKwl9CisgICAgICB9CisgIHdoaWxlIChyYyA9PSBEV0FSRl9DQl9PSyAmJiBkd2FyZl9zaWJs aW5nb2YoJmRpZSwgJmRpZSkgPT0gMCk7CisKKyAgcmV0dXJuIHJjOworfQorCit0ZW1wbGF0ZTw+ IGludAorZHdmbHBwOjppdGVyYXRlX292ZXJfZW51bWVyYXRvcnM8dm9pZD4oRHdhcmZfRGllICp0 b3BfZGllLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RyaW5nJiBw cmVmaXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKCogY2FsbGJhY2sp KER3YXJmX0RpZSosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJvb2wsCkBAIC0xMjMwLDggKzEyODMsNyBAQCBkd2ZscHA6Oml0ZXJhdGVfb3Zlcl90 eXBlczx2b2lkPihEd2FyZl9EaWUgKnRvcF9kaWUsCiAJLy8gKGVpdGhlciBhIHBhcnRpYWxfdW5p dCBvciBhIGZ1bGwgY29tcGlsZV91bml0KSwgYWxsIGl0cwogCS8vIGNoaWxkcmVuIHNob3VsZCBi ZSB0cmVhdGVkIGFzIGlmIHRoZXkgYXBwZWFyIGluIHRoaXMgcGxhY2UuCiAJaWYgKGR3YXJmX2F0 dHJfZGllKCZkaWUsIERXX0FUX2ltcG9ydCwgJmltcG9ydCkpCi0JICByYyA9IGl0ZXJhdGVfb3Zl cl90eXBlcygmaW1wb3J0LCBoYXNfaW5uZXJfdHlwZXMsIHByZWZpeCwKLQkJCQkgIGNhbGxiYWNr LCBkYXRhKTsKKwkgIHJjID0gaXRlcmF0ZV9vdmVyX2VudW1lcmF0b3JzKCZpbXBvcnQsIHByZWZp eCwgY2FsbGJhY2ssIGRhdGEpOwogCWJyZWFrOwogICAgICAgfQogICB3aGlsZSAocmMgPT0gRFdB UkZfQ0JfT0sgJiYgZHdhcmZfc2libGluZ29mKCZkaWUsICZkaWUpID09IDApOwpAQCAtMzU1OCw2 ICszNjEwLDEwIEBAIGR3ZmxwcDo6dHJhbnNsYXRlX2NvbXBvbmVudHMobG9jYXRpb25fY29udGV4 dCAqY3R4LAogCiAgICAgICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6CiAgICAgICAg IGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKKwkgIC8qCisJICAgKiBDYW4ndCBkZXJlZiBiYXNlIHR5 cGVzLCBhbmQgQyBlbnVtcyBhcmUgYWNjZXNzZWQgYnkgdGhlaXIKKwkgICAqIERXX1RBR19lbnVt ZXJhdG9yIG5vdCB0aGVpciBEV19UQUdfZW51bWVyYXRpb25fdHlwZQorCSAgICovCiAgICAgICAg ICAgdGhyb3cgU0VNQU5USUNfRVJST1IgKF9GKCJpbnZhbGlkIGFjY2VzcyAnJXMnIHZzLiAlcyIs IGxleF9jYXN0KGMpLmNfc3RyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGR3YXJmX3R5cGVfbmFtZSh0eXBlZGllKS5jX3N0cigpKSwgYy50b2spOwogICAgICAgICAgIGJy ZWFrOwpkaWZmIC0tZ2l0IGEvZHdmbHBwLmggYi9kd2ZscHAuaAppbmRleCA3NmM3N2E0MjcuLjE2 MzgyYmZmOSAxMDA2NDQKLS0tIGEvZHdmbHBwLmgKKysrIGIvZHdmbHBwLmgKQEAgLTQzNSw2ICs0 MzUsMTUgQEAgc3RydWN0IGR3ZmxwcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICh2b2lkKilkYXRhKTsKICAgICB9CiAKKyAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAg c3RhdGljIGludCBpdGVyYXRlX292ZXJfZW51bWVyYXRpb25zKER3YXJmX0RpZSAqY3VfZGllLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICgqIGNhbGxiYWNrKShEd2FyZl9E aWUqLCBEd2FyZl9EaWUqLCB2b2lkKiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB2b2lkICpkYXRhKSB7CisgICAgICByZXR1cm4gaXRlcmF0ZV9vdmVyX2VudW1lcmF0aW9uczx2 b2lkPihjdV9kaWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlu dCAoKikoRHdhcmZfRGllKiwgRHdhcmZfRGllKiwgdm9pZCopKSBjYWxsYmFjaywKKwkJCQkJKHZv aWQqKWRhdGEpOworICB9CisKICAgR0VsZl9TaGRyICogZ2V0X3NlY3Rpb24oc3RkOjpzdHJpbmcg c2VjdGlvbl9uYW1lLCBHRWxmX1NoZHIgKnNoZHJfbWVtLAogICAgICAgICAgICAgICAgICAgICAg ICAgICBFbGYgKiplbGZfcmV0PU5VTEwpOwogCkBAIC03NDMsNiArNzUyLDEyIEBAIGR3ZmxwcDo6 aXRlcmF0ZV9vdmVyX3R5cGVzPHZvaWQ+KER3YXJmX0RpZSAqdG9wX2RpZSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcm LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk KiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhKTsKKwordGVt cGxhdGU8PiBpbnQKK2R3ZmxwcDo6aXRlcmF0ZV9vdmVyX2VudW1lcmF0aW9uczx2b2lkPihEd2Fy Zl9EaWUgKnRvcF9kaWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKCog Y2FsbGJhY2spKER3YXJmX0RpZSosIER3YXJmX0RpZSosIHZvaWQqKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEpOworCiB0ZW1wbGF0ZTw+IGludAogZHdmbHBw OjppdGVyYXRlX292ZXJfbm90ZXM8dm9pZD4odm9pZCAqb2JqZWN0LCB2b2lkICgqY2FsbGJhY2sp KHZvaWQqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiwKZGlmZiAtLWdpdCBhL2VsYWJvcmF0 ZS5jeHggYi9lbGFib3JhdGUuY3h4CmluZGV4IGI1ODBjMDQwMi4uZDZkODIwMjYyIDEwMDY0NAot LS0gYS9lbGFib3JhdGUuY3h4CisrKyBiL2VsYWJvcmF0ZS5jeHgKQEAgLTM1NTEsNiArMzU1MSwx MSBAQCBzdHJ1Y3QgYXNzaWdubWVudF9zeW1ib2xfZmV0Y2hlcgogICAgIHN5bSA9IE5VTEw7CiAg IH0KIAorICB2b2lkIHZpc2l0X2F0ZW51bV9vcCAoYXRlbnVtX29wKikKKyAgeworICAgIHN5bSA9 IE5VTEw7CisgIH0KKwogICB2b2lkIHZpc2l0X2Nhc3Rfb3AgKGNhc3Rfb3AqKQogICB7CiAgICAg c3ltID0gTlVMTDsKQEAgLTQwMzAsNiArNDAzNSw3IEBAIHN0cnVjdCB2b2lkX3N0YXRlbWVudF9y ZWR1Y2VyOiBwdWJsaWMgdXBkYXRlX3Zpc2l0b3IKICAgdm9pZCB2aXNpdF9wcmludF9mb3JtYXQg KHByaW50X2Zvcm1hdCogZSk7CiAgIHZvaWQgdmlzaXRfdGFyZ2V0X3N5bWJvbCAodGFyZ2V0X3N5 bWJvbCogZSk7CiAgIHZvaWQgdmlzaXRfYXR2YXJfb3AgKGF0dmFyX29wKiBlKTsKKyAgdm9pZCB2 aXNpdF9hdGVudW1fb3AgKGF0ZW51bV9vcCogZSk7CiAgIHZvaWQgdmlzaXRfY2FzdF9vcCAoY2Fz dF9vcCogZSk7CiAgIHZvaWQgdmlzaXRfYXV0b2Nhc3Rfb3AgKGF1dG9jYXN0X29wKiBlKTsKICAg dm9pZCB2aXNpdF9kZWZpbmVkX29wIChkZWZpbmVkX29wKiBlKTsKQEAgLTQzNzgsNiArNDM4NCwx NCBAQCB2b2lkX3N0YXRlbWVudF9yZWR1Y2VyOjp2aXNpdF9hdHZhcl9vcCAoYXR2YXJfb3AqIGUp CiAgIHJlZHVjZV90YXJnZXRfc3ltYm9sIChlKTsKIH0KIAordm9pZAordm9pZF9zdGF0ZW1lbnRf cmVkdWNlcjo6dmlzaXRfYXRlbnVtX29wIChhdGVudW1fb3AqIGUpCit7CisgIGlmIChzZXNzaW9u LnZlcmJvc2U+MikKKyAgICBjbG9nIDw8IF8oIkVsaWRpbmcgdW51c2VkIHRhcmdldCBzeW1ib2wg IikgPDwgKmUtPnRvayA8PCBlbmRsOworICByZWR1Y2VfdGFyZ2V0X3N5bWJvbCAoZSk7Cit9CisK IHZvaWQKIHZvaWRfc3RhdGVtZW50X3JlZHVjZXI6OnZpc2l0X3RhcmdldF9zeW1ib2wgKHRhcmdl dF9zeW1ib2wqIGUpCiB7CkBAIC01OTA1LDYgKzU5MTksNyBAQCBzdHJ1Y3QgaW5pdGlhbF90eXBl cmVzb2x1dGlvbl9pbmZvIDogcHVibGljIHR5cGVyZXNvbHV0aW9uX2luZm8KICAgLy8gYW5kIG5v dCBhbGwgc3Vic3RpdHV0aW9ucyBhcmUgZG9uZSwgcmVwbGFjZSB0aGUgZnVuY3Rpb25zIHRoYXQg dGhyb3cgZXJyb3JzLgogICB2b2lkIHZpc2l0X3RhcmdldF9zeW1ib2wgKHRhcmdldF9zeW1ib2wq KSB7fQogICB2b2lkIHZpc2l0X2F0dmFyX29wIChhdHZhcl9vcCopIHt9CisgIHZvaWQgdmlzaXRf YXRlbnVtX29wIChhdGVudW1fb3AqKSB7fQogICB2b2lkIHZpc2l0X2RlZmluZWRfb3AgKGRlZmlu ZWRfb3AqKSB7fQogICB2b2lkIHZpc2l0X2VudHJ5X29wIChlbnRyeV9vcCopIHt9CiAgIHZvaWQg dmlzaXRfY2FzdF9vcCAoY2FzdF9vcCopIHt9CkBAIC02NzI5LDYgKzY3NDQsMTYgQEAgdHlwZXJl c29sdXRpb25faW5mbzo6dmlzaXRfY2FzdF9vcCAoY2FzdF9vcCogZSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLT5tb2R1bGUudG9fc3RyaW5nKCkuY19zdHIo KSksIGUtPnRvaykpOwogfQogCit2b2lkCit0eXBlcmVzb2x1dGlvbl9pbmZvOjp2aXNpdF9hdGVu dW1fb3AgKGF0ZW51bV9vcCogZSkKK3sKKyAgaWYgKGUtPnNhdmVkX2NvbnZlcnNpb25fZXJyb3Ip CisgICAgc2Vzc2lvbi5wcmludF9lcnJvciAoKiAoZS0+c2F2ZWRfY29udmVyc2lvbl9lcnJvcikp OworICBlbHNlCisgICAgc2Vzc2lvbi5wcmludF9lcnJvciAoU0VNQU5USUNfRVJST1IoX0YoImVu dW1lcmF0aW9uIGRlZmluaXRpb24gJyVzJyBub3QgZm91bmQgaW4gJyVzJyIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS0+ZW51bWVyYXRpb25fbmFtZS50b19z dHJpbmcoKS5jX3N0cigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGUtPm1vZHVsZS50b19zdHJpbmcoKS5jX3N0cigpKSwgZS0+dG9rKSk7Cit9CiAKIHZvaWQK IHR5cGVyZXNvbHV0aW9uX2luZm86OnZpc2l0X2F1dG9jYXN0X29wIChhdXRvY2FzdF9vcCogZSkK ZGlmZiAtLWdpdCBhL2VsYWJvcmF0ZS5oIGIvZWxhYm9yYXRlLmgKaW5kZXggMjhjMDRhYmNlLi42 MjAxYTc4NDkgMTAwNjQ0Ci0tLSBhL2VsYWJvcmF0ZS5oCisrKyBiL2VsYWJvcmF0ZS5oCkBAIC0x NzIsNiArMTcyLDcgQEAgc3RydWN0IHR5cGVyZXNvbHV0aW9uX2luZm86IHB1YmxpYyB2aXNpdG9y CiAgIHZvaWQgdmlzaXRfY2FzdF9vcCAoY2FzdF9vcCogZSk7CiAgIHZvaWQgdmlzaXRfYXV0b2Nh c3Rfb3AgKGF1dG9jYXN0X29wKiBlKTsKICAgdm9pZCB2aXNpdF9hdHZhcl9vcCAoYXR2YXJfb3Aq IGUpOworICB2b2lkIHZpc2l0X2F0ZW51bV9vcCAoYXRlbnVtX29wKiBlKTsKICAgdm9pZCB2aXNp dF9kZWZpbmVkX29wIChkZWZpbmVkX29wKiBlKTsKICAgdm9pZCB2aXNpdF9lbnRyeV9vcCAoZW50 cnlfb3AqIGUpOwogICB2b2lkIHZpc2l0X3BlcmZfb3AgKHBlcmZfb3AqIGUpOwpkaWZmIC0tZ2l0 IGEvcGFyc2UuY3h4IGIvcGFyc2UuY3h4CmluZGV4IGNkNjIzNDM2Mi4uODk4MWU4ZDI0IDEwMDY0 NAotLS0gYS9wYXJzZS5jeHgKKysrIGIvcGFyc2UuY3h4CkBAIC0yMDQsNiArMjA0LDcgQEAgcHJp dmF0ZTogLy8gbm9udGVybWluYWxzCiAgIHRhcmdldF9zeW1ib2wgKnBhcnNlX3RhcmdldF9zeW1i b2wgKCk7CiAgIGNhc3Rfb3AgKnBhcnNlX2Nhc3Rfb3AgKCk7CiAgIGF0dmFyX29wICpwYXJzZV9h dHZhcl9vcCAoKTsKKyAgYXRlbnVtX29wICpwYXJzZV9hdGVudW1fb3AgKCk7CiAgIGV4cHJlc3Np b24qIHBhcnNlX2VudHJ5X29wIChjb25zdCB0b2tlbiogdCk7CiAgIGV4cHJlc3Npb24qIHBhcnNl X2RlZmluZWRfb3AgKGNvbnN0IHRva2VuKiB0KTsKICAgZXhwcmVzc2lvbiogcGFyc2VfY29uc3Rf b3AgKGNvbnN0IHRva2VuKiB0KTsKQEAgLTE0NzgsNiArMTQ3OSwxMCBAQCBsZXhlcjo6bGV4ZXIg KGlzdHJlYW0mIGlucHV0LCBjb25zdCBzdHJpbmcmIGluLCBzeXN0ZW10YXBfc2Vzc2lvbiYgcywg Ym9vbCBjYyk6CiAgICAgICAgICAgYXR3b3Jkcy5pbnNlcnQoImtkZXJlZiIpOwogICAgICAgICAg IGF0d29yZHMuaW5zZXJ0KCJ1ZGVyZWYiKTsKICAgICAgICAgfQorICAgICAgaWYgKGhhc192ZXJz aW9uKCI0LjQiKSkKKyAgICAgICAgeworCSAgYXR3b3Jkcy5pbnNlcnQoImVudW0iKTsKKwl9CiAg ICAgfQogfQogCkBAIC0zNzEyLDYgKzM3MTcsOCBAQCBwYXJzZXI6OnBhcnNlX2R3YXJmX3ZhbHVl ICgpCiAgIGVsc2UgaWYgKGFkZHJlc3NvZiAmJiAhaW5wdXQuaGFzX3ZlcnNpb24oIjIuNiIpKQog ICAgIC8vICcmJyBvbiBvbGQgdmVyc2lvbiBvbmx5IGFsbG93ZWQgc3BlY2lmaWMgdGFyZ2V0X3N5 bWJvbCB0eXBlcwogICAgIHRocm93IFBBUlNFX0VSUk9SIChfKCJleHBlY3RlZCBAY2FzdCwgQHZh ciBvciAkdmFyIikpOworICBlbHNlIGlmIChpbnB1dC5oYXNfdmVyc2lvbigiNC40IikgJiYgdG9r X2lzKHQsIHRva19vcGVyYXRvciwgIkBlbnVtIikpCisgICAgZXhwciA9IHRzeW0gPSBwYXJzZV9h dGVudW1fb3AgKCk7CiAgIGVsc2UKICAgICB7CiAgICAgICAvLyBPdGhlcndpc2UganVzdCBnZXQg YSBwbGFpbiB2YWx1ZSBvZiBhbnkgc29ydC4KQEAgLTM4MzQsNyArMzg0MSw3IEBAIHBhcnNlcjo6 cGFyc2VfaW5kZXhhYmxlICgpCiAKIAogLy8gdmFyLCBpbmRleGFibGVbaW5kZXhdLCBmdW5jKHBh cm1zKSwgcHJpbnRmKCIuLi4iLCAuLi4pLAotLy8gQGRlZmluZWQsIEBlbnRyeSwgQHN0YXRfb3Ao c3RhdCkKKy8vIEBkZWZpbmVkLCBAZW50cnksIEBzdGF0X29wKHN0YXQpLCBAZW51bQogZXhwcmVz c2lvbiogcGFyc2VyOjpwYXJzZV9zeW1ib2wgKCkKIHsKICAgaGlzdF9vcCAqaG9wID0gTlVMTDsK QEAgLTQxNzUsNiArNDE4MiwzNCBAQCBhdHZhcl9vcCogcGFyc2VyOjpwYXJzZV9hdHZhcl9vcCAo KQogICB0aHJvdyBQQVJTRV9FUlJPUiAoXygiZXhwZWN0ZWQgQHZhciIpKTsKIH0KIAorLy8gUGFy c2UgYSBAZW51bQorYXRlbnVtX29wKiBwYXJzZXI6OnBhcnNlX2F0ZW51bV9vcCAoKQoreworICBj b25zdCB0b2tlbiogdCA9IG5leHQgKCk7CisgIGlmICh0LT50eXBlID09IHRva19vcGVyYXRvciAm JiB0LT5jb250ZW50ID09ICJAZW51bSIpCisgICAgeworICAgICAgYXRlbnVtX29wICplb3AgPSBu ZXcgYXRlbnVtX29wOworICAgICAgZW9wLT50b2sgPSB0OworICAgICAgZW9wLT5uYW1lID0gdC0+ Y29udGVudDsKKyAgICAgIGV4cGVjdF9vcCgiKCIpOworICAgICAgLyogUmVhZCBlbnVtZXJhdGlv biBuYW1lIChyZXF1aXJlZCkgKi8KKyAgICAgIGV4cGVjdF91bmtub3duKHRva19zdHJpbmcsIGVv cC0+ZW51bWVyYXRpb25fbmFtZSk7CisgICAgICBpZiAoZW9wLT5lbnVtZXJhdGlvbl9uYW1lLmVt cHR5KCkpCisgICAgICAgIHRocm93IFBBUlNFX0VSUk9SIChfKCJAZW51bSBleHBlY3RlZCBub24t ZW1wdHkgbGl0ZXJhbCBzdHJpbmcgZm9yIGZpcnN0IGFyZ3VtZW50IikpOworICAgICAgLyogT3B0 aW9uYWwgc2Vjb25kIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgQ1UgLyBtb2R1bGUgdG8gbG9vayBp biAqLworICAgICAgaWYgKHBlZWtfb3AgKCIsIikpCisgICAgICAgIHsKKyAgICAgICAgICBzd2Fs bG93ICgpOworICAgICAgICAgIGV4cGVjdF91bmtub3duKHRva19zdHJpbmcsIGVvcC0+bW9kdWxl KTsKKyAgICAgICAgfQorICAgICAgZWxzZQorCWVvcC0+bW9kdWxlID0gIiI7CisgICAgICBleHBl Y3Rfb3AoIikiKTsKKyAgICAgIHJldHVybiBlb3A7CisgICAgfQorCisgIHRocm93IFBBUlNFX0VS Uk9SIChfKCJleHBlY3RlZCBAZW51bSIpKTsKK30KIAogLy8gUGFyc2UgYSBAZGVmaW5lZCgpLiAg R2l2ZW4gaGVhZCB0b2tlbiBoYXMgYWxyZWFkeSBiZWVuIGNvbnN1bWVkLgogZXhwcmVzc2lvbiog cGFyc2VyOjpwYXJzZV9kZWZpbmVkX29wIChjb25zdCB0b2tlbiogdCkKQEAgLTQxODksNiArNDIy NCw3IEBAIGV4cHJlc3Npb24qIHBhcnNlcjo6cGFyc2VfZGVmaW5lZF9vcCAoY29uc3QgdG9rZW4q IHQpCiAKIAogLy8gUGFyc2UgYSBAY29uc3QoKS4gIEdpdmVuIGhlYWQgdG9rZW4gaGFzIGFscmVh ZHkgYmVlbiBjb25zdW1lZC4KKy8vIFRoaXMgZXhwYW5kcyB0byBhbiBlbWJlZGRlZF9leHByIHNv IHRoZXJlIGlzIG5vIGNvbnN0X29wIHRyZWUgdHlwZS4KIGV4cHJlc3Npb24qIHBhcnNlcjo6cGFy c2VfY29uc3Rfb3AgKGNvbnN0IHRva2VuKiB0KQogewogICBpZiAoISBwcml2aWxlZ2VkKQpkaWZm IC0tZ2l0IGEvc3RhcHRyZWUuY3h4IGIvc3RhcHRyZWUuY3h4CmluZGV4IGM4ZmVjYWRiOC4uMzRm Y2M2ZDcwIDEwMDY0NAotLS0gYS9zdGFwdHJlZS5jeHgKKysrIGIvc3RhcHRyZWUuY3h4CkBAIC01 NjQsNiArNTY0LDE1IEBAIHZvaWQgYXR2YXJfb3A6OnByaW50IChvc3RyZWFtJiBvKSBjb25zdAog ICAgIG8gPDwgY29tcG9uZW50c1tpXTsKIH0KIAordm9pZCBhdGVudW1fb3A6OnByaW50IChvc3Ry ZWFtJiBvKSBjb25zdAoreworICBvIDw8IG5hbWUgPDwgJygnIDw8IGxleF9jYXN0X3FzdHJpbmco ZW51bWVyYXRpb25fbmFtZSk7CisgIGlmIChtb2R1bGUubGVuZ3RoKCkgPiAwKQorICAgIG8gPDwg IiwgIiA8PCBsZXhfY2FzdF9xc3RyaW5nIChtb2R1bGUpOworICBvIDw8ICcpJzsKKyAgZm9yICh1 bnNpZ25lZCBpID0gMDsgaSA8IGNvbXBvbmVudHMuc2l6ZSgpOyArK2kpCisgICAgbyA8PCBjb21w b25lbnRzW2ldOworfQogCiB2b2lkIGNhc3Rfb3A6OnByaW50IChvc3RyZWFtJiBvKSBjb25zdAog ewpAQCAtMTc5OCw2ICsxODA3LDEyIEBAIGF0dmFyX29wOjp2aXNpdCAodmlzaXRvciogdSkKICAg dS0+dmlzaXRfYXR2YXJfb3AodGhpcyk7CiB9CiAKK3ZvaWQKK2F0ZW51bV9vcDo6dmlzaXQgKHZp c2l0b3IqIHUpCit7CisgIHUtPnZpc2l0X2F0ZW51bV9vcCh0aGlzKTsKK30KKwogCiB2b2lkCiBk ZWZpbmVkX29wOjp2aXNpdCAodmlzaXRvciogdSkKQEAgLTIxODAsNiArMjE5NSwxMiBAQCB0cmF2 ZXJzaW5nX3Zpc2l0b3I6OnZpc2l0X2F0dmFyX29wIChhdHZhcl9vcCogZSkKICAgZS0+dmlzaXRf Y29tcG9uZW50cyAodGhpcyk7CiB9CiAKK3ZvaWQKK3RyYXZlcnNpbmdfdmlzaXRvcjo6dmlzaXRf YXRlbnVtX29wIChhdGVudW1fb3AqIGUpCit7CisgIGUtPnZpc2l0X2NvbXBvbmVudHMgKHRoaXMp OworfQorCiB2b2lkCiB0cmF2ZXJzaW5nX3Zpc2l0b3I6OnZpc2l0X2RlZmluZWRfb3AgKGRlZmlu ZWRfb3AqIGUpCiB7CkBAIC0yNDQyLDYgKzI0NjMsMTMgQEAgZXhwcmVzc2lvbl92aXNpdG9yOjp2 aXNpdF9hdHZhcl9vcCAoYXR2YXJfb3AqIGUpCiAgIHZpc2l0X2V4cHJlc3Npb24gKGUpOwogfQog Cit2b2lkCitleHByZXNzaW9uX3Zpc2l0b3I6OnZpc2l0X2F0ZW51bV9vcCAoYXRlbnVtX29wKiBl KQoreworICB0cmF2ZXJzaW5nX3Zpc2l0b3I6OnZpc2l0X2F0ZW51bV9vcCAoZSk7CisgIHZpc2l0 X2V4cHJlc3Npb24gKGUpOworfQorCiB2b2lkCiBleHByZXNzaW9uX3Zpc2l0b3I6OnZpc2l0X2Rl ZmluZWRfb3AgKGRlZmluZWRfb3AqIGUpCiB7CkBAIC0yNzE3LDYgKzI3NDUsMTQgQEAgdmFydXNl X2NvbGxlY3RpbmdfdmlzaXRvcjo6dmlzaXRfYXR2YXJfb3AgKGF0dmFyX29wICplKQogICBmdW5j dGlvbmNhbGxfdHJhdmVyc2luZ192aXNpdG9yOjp2aXNpdF9hdHZhcl9vcCAoZSk7CiB9CiAKK3Zv aWQKK3ZhcnVzZV9jb2xsZWN0aW5nX3Zpc2l0b3I6OnZpc2l0X2F0ZW51bV9vcCAoYXRlbnVtX29w ICplKQoreworICBpZiAoaXNfYWN0aXZlX2x2YWx1ZSAoZSkpCisgICAgdGhyb3cgU0VNQU5USUNf RVJST1IgKF8oIkBlbnVtIGNhbm5vdCBiZSB1c2VkIGFzIGFuIGx2YWx1ZSIpLCBlLT50b2spOwor CisgIGZ1bmN0aW9uY2FsbF90cmF2ZXJzaW5nX3Zpc2l0b3I6OnZpc2l0X2F0ZW51bV9vcCAoZSk7 Cit9CiAKIHZvaWQKIHZhcnVzZV9jb2xsZWN0aW5nX3Zpc2l0b3I6OnZpc2l0X2Nhc3Rfb3AgKGNh c3Rfb3AgKmUpCkBAIC0zMjQ0LDYgKzMyODAsMTIgQEAgdGhyb3dpbmdfdmlzaXRvcjo6dmlzaXRf YXR2YXJfb3AgKGF0dmFyX29wKiBlKQogICB0aHJvd29uZSAoZS0+dG9rKTsKIH0KIAordm9pZAor dGhyb3dpbmdfdmlzaXRvcjo6dmlzaXRfYXRlbnVtX29wIChhdGVudW1fb3AqIGUpCit7CisgIHRo cm93b25lIChlLT50b2spOworfQorCiB2b2lkCiB0aHJvd2luZ192aXNpdG9yOjp2aXNpdF9jYXN0 X29wIChjYXN0X29wKiBlKQogewpAQCAtMzU2Miw2ICszNjA0LDcgQEAgdXBkYXRlX3Zpc2l0b3I6 OnZpc2l0X3RhcmdldF9zeW1ib2wgKHRhcmdldF9zeW1ib2wqIGUpCiAgIHByb3ZpZGUgKGUpOwog fQogCisvKiBYWFggZG9lcyB0aGlzIG1ha2Ugc2Vuc2UgPyAqLwogdm9pZAogdXBkYXRlX3Zpc2l0 b3I6OnZpc2l0X2Nhc3Rfb3AgKGNhc3Rfb3AqIGUpCiB7CkBAIC0zNTcwLDYgKzM2MTMsMTMgQEAg dXBkYXRlX3Zpc2l0b3I6OnZpc2l0X2Nhc3Rfb3AgKGNhc3Rfb3AqIGUpCiAgIHByb3ZpZGUgKGUp OwogfQogCit2b2lkCit1cGRhdGVfdmlzaXRvcjo6dmlzaXRfYXRlbnVtX29wIChhdGVudW1fb3Aq IGUpCit7CisgIGUtPnZpc2l0X2NvbXBvbmVudHMgKHRoaXMpOworICBwcm92aWRlIChlKTsKK30K Kwogdm9pZAogdXBkYXRlX3Zpc2l0b3I6OnZpc2l0X2F1dG9jYXN0X29wIChhdXRvY2FzdF9vcCog ZSkKIHsKQEAgLTM4NzksNiArMzkyOSwxMiBAQCBkZWVwX2NvcHlfdmlzaXRvcjo6dmlzaXRfYXR2 YXJfb3AgKGF0dmFyX29wKiBlKQogICB1cGRhdGVfdmlzaXRvcjo6dmlzaXRfYXR2YXJfb3AobmV3 IGF0dmFyX29wKCplKSk7CiB9CiAKK3ZvaWQKK2RlZXBfY29weV92aXNpdG9yOjp2aXNpdF9hdGVu dW1fb3AgKGF0ZW51bV9vcCogZSkKK3sKKyAgdXBkYXRlX3Zpc2l0b3I6OnZpc2l0X2F0ZW51bV9v cChuZXcgYXRlbnVtX29wKCplKSk7Cit9CisKIHZvaWQKIGRlZXBfY29weV92aXNpdG9yOjp2aXNp dF9kZWZpbmVkX29wIChkZWZpbmVkX29wKiBlKQogewpkaWZmIC0tZ2l0IGEvc3RhcHRyZWUuaCBi L3N0YXB0cmVlLmgKaW5kZXggODkwMmQzYWE5Li41NmUwMjdkMmMgMTAwNjQ0Ci0tLSBhL3N0YXB0 cmVlLmgKKysrIGIvc3RhcHRyZWUuaApAQCAtNDI1LDYgKzQyNSwxMyBAQCBzdHJ1Y3QgYXR2YXJf b3A6IHB1YmxpYyB0YXJnZXRfc3ltYm9sCiAgIHZvaWQgdmlzaXQgKHZpc2l0b3IqIHUpOwogfTsK IAorc3RydWN0IGF0ZW51bV9vcDogcHVibGljIHRhcmdldF9zeW1ib2wKK3sKKyAgaW50ZXJuZWRf c3RyaW5nIGVudW1lcmF0aW9uX25hbWUsIG1vZHVsZTsKKyAgdm9pZCBwcmludCAoc3RkOjpvc3Ry ZWFtJiBvKSBjb25zdDsKKyAgdm9pZCB2aXNpdCAodmlzaXRvciogdSk7Cit9OworCiBzdHJ1Y3Qg ZGVmaW5lZF9vcDogcHVibGljIGV4cHJlc3Npb24KIHsKICAgZXhwcmVzc2lvbiAqb3BlcmFuZDsK QEAgLTk3OCw2ICs5ODUsNyBAQCBzdHJ1Y3QgdmlzaXRvcgogICB2aXJ0dWFsIHZvaWQgdmlzaXRf Y2FzdF9vcCAoY2FzdF9vcCogZSkgPSAwOwogICB2aXJ0dWFsIHZvaWQgdmlzaXRfYXV0b2Nhc3Rf b3AgKGF1dG9jYXN0X29wKiBlKSA9IDA7CiAgIHZpcnR1YWwgdm9pZCB2aXNpdF9hdHZhcl9vcCAo YXR2YXJfb3AqIGUpID0gMDsKKyAgdmlydHVhbCB2b2lkIHZpc2l0X2F0ZW51bV9vcCAoYXRlbnVt X29wKiBlKSA9IDA7CiAgIHZpcnR1YWwgdm9pZCB2aXNpdF9kZWZpbmVkX29wIChkZWZpbmVkX29w KiBlKSA9IDA7CiAgIHZpcnR1YWwgdm9pZCB2aXNpdF9lbnRyeV9vcCAoZW50cnlfb3AqIGUpID0g MDsKICAgdmlydHVhbCB2b2lkIHZpc2l0X3BlcmZfb3AgKHBlcmZfb3AqIGUpID0gMDsKQEAgLTEw MzEsNiArMTAzOSw3IEBAIHN0cnVjdCBub3BfdmlzaXRvcjogcHVibGljIHZpc2l0b3IKICAgdmly dHVhbCB2b2lkIHZpc2l0X2Nhc3Rfb3AgKGNhc3Rfb3AqKSB7fTsKICAgdmlydHVhbCB2b2lkIHZp c2l0X2F1dG9jYXN0X29wIChhdXRvY2FzdF9vcCopIHt9OwogICB2aXJ0dWFsIHZvaWQgdmlzaXRf YXR2YXJfb3AgKGF0dmFyX29wKikge307CisgIHZpcnR1YWwgdm9pZCB2aXNpdF9hdGVudW1fb3Ag KGF0ZW51bV9vcCopIHt9OwogICB2aXJ0dWFsIHZvaWQgdmlzaXRfZGVmaW5lZF9vcCAoZGVmaW5l ZF9vcCopIHt9OwogICB2aXJ0dWFsIHZvaWQgdmlzaXRfZW50cnlfb3AgKGVudHJ5X29wKikge307 CiAgIHZpcnR1YWwgdm9pZCB2aXNpdF9wZXJmX29wIChwZXJmX29wKikge307CkBAIC0xMDg0LDYg KzEwOTMsNyBAQCBzdHJ1Y3QgdHJhdmVyc2luZ192aXNpdG9yOiBwdWJsaWMgdmlzaXRvcgogICB2 b2lkIHZpc2l0X2Nhc3Rfb3AgKGNhc3Rfb3AqIGUpOwogICB2b2lkIHZpc2l0X2F1dG9jYXN0X29w IChhdXRvY2FzdF9vcCogZSk7CiAgIHZvaWQgdmlzaXRfYXR2YXJfb3AgKGF0dmFyX29wKiBlKTsK KyAgdm9pZCB2aXNpdF9hdGVudW1fb3AgKGF0ZW51bV9vcCogZSk7CiAgIHZvaWQgdmlzaXRfZGVm aW5lZF9vcCAoZGVmaW5lZF9vcCogZSk7CiAgIHZvaWQgdmlzaXRfZW50cnlfb3AgKGVudHJ5X29w KiBlKTsKICAgdm9pZCB2aXNpdF9wZXJmX29wIChwZXJmX29wKiBlKTsKQEAgLTExMjQsNiArMTEz NCw3IEBAIHN0cnVjdCBleHByZXNzaW9uX3Zpc2l0b3I6IHB1YmxpYyB0cmF2ZXJzaW5nX3Zpc2l0 b3IKICAgdm9pZCB2aXNpdF9jYXN0X29wIChjYXN0X29wKiBlKTsKICAgdm9pZCB2aXNpdF9hdXRv Y2FzdF9vcCAoYXV0b2Nhc3Rfb3AqIGUpOwogICB2b2lkIHZpc2l0X2F0dmFyX29wIChhdHZhcl9v cCogZSk7CisgIHZvaWQgdmlzaXRfYXRlbnVtX29wIChhdGVudW1fb3AqIGUpOwogICB2b2lkIHZp c2l0X2RlZmluZWRfb3AgKGRlZmluZWRfb3AqIGUpOwogICB2b2lkIHZpc2l0X2VudHJ5X29wIChl bnRyeV9vcCogZSk7CiAgIHZvaWQgdmlzaXRfcGVyZl9vcCAocGVyZl9vcCogZSk7CkBAIC0xMTg2 LDYgKzExOTcsNyBAQCBzdHJ1Y3QgdmFydXNlX2NvbGxlY3RpbmdfdmlzaXRvcjogcHVibGljIGZ1 bmN0aW9uY2FsbF90cmF2ZXJzaW5nX3Zpc2l0b3IKICAgdm9pZCB2aXNpdF9jYXN0X29wIChjYXN0 X29wKiBlKTsKICAgdm9pZCB2aXNpdF9hdXRvY2FzdF9vcCAoYXV0b2Nhc3Rfb3AqIGUpOwogICB2 b2lkIHZpc2l0X2F0dmFyX29wIChhdHZhcl9vcCAqZSk7CisgIHZvaWQgdmlzaXRfYXRlbnVtX29w IChhdGVudW1fb3AgKmUpOwogICB2b2lkIHZpc2l0X2RlZmluZWRfb3AgKGRlZmluZWRfb3AqIGUp OwogICB2b2lkIHZpc2l0X2VudHJ5X29wIChlbnRyeV9vcCogZSk7CiAgIHZvaWQgdmlzaXRfcGVy Zl9vcCAocGVyZl9vcCogZSk7CkBAIC0xMjQ3LDYgKzEyNTksNyBAQCBzdHJ1Y3QgdGhyb3dpbmdf dmlzaXRvcjogcHVibGljIHZpc2l0b3IKICAgdm9pZCB2aXNpdF9jYXN0X29wIChjYXN0X29wKiBl KTsKICAgdm9pZCB2aXNpdF9hdXRvY2FzdF9vcCAoYXV0b2Nhc3Rfb3AqIGUpOwogICB2b2lkIHZp c2l0X2F0dmFyX29wIChhdHZhcl9vcCogZSk7CisgIHZvaWQgdmlzaXRfYXRlbnVtX29wIChhdGVu dW1fb3AqIGUpOwogICB2b2lkIHZpc2l0X2RlZmluZWRfb3AgKGRlZmluZWRfb3AqIGUpOwogICB2 b2lkIHZpc2l0X2VudHJ5X29wIChlbnRyeV9vcCogZSk7CiAgIHZvaWQgdmlzaXRfcGVyZl9vcCAo cGVyZl9vcCogZSk7CkBAIC0xMzYxLDYgKzEzNzQsNyBAQCBzdHJ1Y3QgdXBkYXRlX3Zpc2l0b3I6 IHB1YmxpYyB2aXNpdG9yCiAgIHZpcnR1YWwgdm9pZCB2aXNpdF9jYXN0X29wIChjYXN0X29wKiBl KTsKICAgdmlydHVhbCB2b2lkIHZpc2l0X2F1dG9jYXN0X29wIChhdXRvY2FzdF9vcCogZSk7CiAg IHZpcnR1YWwgdm9pZCB2aXNpdF9hdHZhcl9vcCAoYXR2YXJfb3AqIGUpOworICB2aXJ0dWFsIHZv aWQgdmlzaXRfYXRlbnVtX29wIChhdGVudW1fb3AqIGUpOwogICB2aXJ0dWFsIHZvaWQgdmlzaXRf ZGVmaW5lZF9vcCAoZGVmaW5lZF9vcCogZSk7CiAgIHZpcnR1YWwgdm9pZCB2aXNpdF9lbnRyeV9v cCAoZW50cnlfb3AqIGUpOwogICB2aXJ0dWFsIHZvaWQgdmlzaXRfcGVyZl9vcCAocGVyZl9vcCog ZSk7CkBAIC0xNDI5LDYgKzE0NDMsNyBAQCBzdHJ1Y3QgZGVlcF9jb3B5X3Zpc2l0b3I6IHB1Ymxp YyB1cGRhdGVfdmlzaXRvcgogICB2aXJ0dWFsIHZvaWQgdmlzaXRfY2FzdF9vcCAoY2FzdF9vcCog ZSk7CiAgIHZpcnR1YWwgdm9pZCB2aXNpdF9hdXRvY2FzdF9vcCAoYXV0b2Nhc3Rfb3AqIGUpOwog ICB2aXJ0dWFsIHZvaWQgdmlzaXRfYXR2YXJfb3AgKGF0dmFyX29wKiBlKTsKKyAgdmlydHVhbCB2 b2lkIHZpc2l0X2F0ZW51bV9vcCAoYXRlbnVtX29wKiBlKTsKICAgdmlydHVhbCB2b2lkIHZpc2l0 X2RlZmluZWRfb3AgKGRlZmluZWRfb3AqIGUpOwogICB2aXJ0dWFsIHZvaWQgdmlzaXRfZW50cnlf b3AgKGVudHJ5X29wKiBlKTsKICAgdmlydHVhbCB2b2lkIHZpc2l0X3BlcmZfb3AgKHBlcmZfb3Aq IGUpOwpkaWZmIC0tZ2l0IGEvdGFwc2V0cy5jeHggYi90YXBzZXRzLmN4eAppbmRleCA5ZGI0MWNk ODcuLmUzZTAwY2VmNyAxMDA2NDQKLS0tIGEvdGFwc2V0cy5jeHgKKysrIGIvdGFwc2V0cy5jeHgK QEAgLTI4NTQsNiArMjg1NCw3IEBAIHN0cnVjdCBkd2FyZl92YXJfZXhwYW5kaW5nX3Zpc2l0b3I6 IHB1YmxpYyB2YXJfZXhwYW5kaW5nX3Zpc2l0b3IKICAgdm9pZCB2aXNpdF90YXJnZXRfc3ltYm9s ICh0YXJnZXRfc3ltYm9sKiBlKTsKICAgdm9pZCB2aXNpdF9hdHZhcl9vcCAoYXR2YXJfb3AqIGUp OwogICB2b2lkIHZpc2l0X2Nhc3Rfb3AgKGNhc3Rfb3AqIGUpOworICB2b2lkIHZpc2l0X2F0ZW51 bV9vcCAoYXRlbnVtX29wKiBlKTsKICAgdm9pZCB2aXNpdF9lbnRyeV9vcCAoZW50cnlfb3AqIGUp OwogICB2b2lkIHZpc2l0X3BlcmZfb3AgKHBlcmZfb3AqIGUpOwogCkBAIC0zMDc0LDYgKzMwNzUs OCBAQCBwdWJsaWM6CiAgIHsgY29udGV4dF9vcF9wID0gdHJ1ZTsgdHJhdmVyc2luZ192aXNpdG9y Ojp2aXNpdF9kZWZpbmVkX29wKGUpOyB9CiAgIHZvaWQgdmlzaXRfYXR2YXJfb3AgKGF0dmFyX29w KiBlKQogICB7IGNvbnRleHRfb3BfcCA9IHRydWU7IHRyYXZlcnNpbmdfdmlzaXRvcjo6dmlzaXRf YXR2YXJfb3AoZSk7IH0KKyAgdm9pZCB2aXNpdF9hdGVudW1fb3AgKGF0ZW51bV9vcCogZSkKKyAg eyBjb250ZXh0X29wX3AgPSB0cnVlOyB0cmF2ZXJzaW5nX3Zpc2l0b3I6OnZpc2l0X2F0ZW51bV9v cChlKTsgfQogICB2b2lkIHZpc2l0X2Nhc3Rfb3AgKGNhc3Rfb3AqIGUpIC8vIGlmIG1vZHVsZSBp cyBzcGVjaWZpZWQsIG5vdCBhIGNvbnRleHRfb3BfcAogICB7IGlmIChlLT5tb2R1bGUgPT0gIiIp IGNvbnRleHRfb3BfcCA9IHRydWU7IHRyYXZlcnNpbmdfdmlzaXRvcjo6dmlzaXRfY2FzdF9vcChl KTsgfQogICB2b2lkIHZpc2l0X2F1dG9jYXN0X29wIChhdXRvY2FzdF9vcCogZSkgLy8gWFhYIGRv IHRoZXNlIHNob3cgdXAgZWFybHk/CkBAIC00NzAyLDYgKzQ3MDUsMTYgQEAgZHdhcmZfdmFyX2V4 cGFuZGluZ192aXNpdG9yOjp2aXNpdF9jYXN0X29wIChjYXN0X29wICplKQogICB2YXJfZXhwYW5k aW5nX3Zpc2l0b3I6OnZpc2l0X2Nhc3Rfb3AoZSk7CiB9CiAKK3ZvaWQKK2R3YXJmX3Zhcl9leHBh bmRpbmdfdmlzaXRvcjo6dmlzaXRfYXRlbnVtX29wIChhdGVudW1fb3AgKmUpCit7CisgIC8vIEZp bGwgaW4gb3VyIGN1cnJlbnQgbW9kdWxlIGNvbnRleHQgaWYgbmVlZGVkCisgIGlmIChlLT5tb2R1 bGUuZW1wdHkoKSkKKyAgICBlLT5tb2R1bGUgPSBxLmR3Lm1vZHVsZV9uYW1lOworCisgIHZhcl9l eHBhbmRpbmdfdmlzaXRvcjo6dmlzaXRfYXRlbnVtX29wKGUpOworfQorCiAKIHZvaWQKIGR3YXJm X3Zhcl9leHBhbmRpbmdfdmlzaXRvcjo6dmlzaXRfZW50cnlfb3AgKGVudHJ5X29wICplKQpAQCAt NDk3Miw2ICs0OTg1LDcgQEAgdm9pZCBkd2FyZl9jYXN0X2V4cGFuZGluZ192aXNpdG9yOjpmaWx0 ZXJfc3BlY2lhbF9tb2R1bGVzKHN0cmluZyYgbW9kdWxlKQogfQogCiAKKy8qIEd1dHMgb2YgQGNh c3QoLi4uKSBpbXBsZW1lbnRhdGlvbiAqLwogdm9pZCBkd2FyZl9jYXN0X2V4cGFuZGluZ192aXNp dG9yOjp2aXNpdF9jYXN0X29wIChjYXN0X29wKiBlKQogewogICBib29sIGx2YWx1ZSA9IGlzX2Fj dGl2ZV9sdmFsdWUoZSk7CkBAIC01MTEyLDcgKzUxMjYsNyBAQCBleHBfdHlwZV9kd2FyZjo6ZXhw YW5kKGF1dG9jYXN0X29wKiBlLCBib29sIGx2YWx1ZSkKICAgICB9CiB9CiAKLQorLyogR3V0cyBv ZiBAdmFyKC4uLikgaW1wbGVtZW50YXRpb24gKi8KIHN0cnVjdCBkd2FyZl9hdHZhcl9leHBhbmRp bmdfdmlzaXRvcjogcHVibGljIHZhcl9leHBhbmRpbmdfdmlzaXRvcgogewogICBkd2FyZl9idWls ZGVyJiBkYjsKQEAgLTUyOTIsNiArNTMwNiwxNjkgQEAgZHdhcmZfYXR2YXJfZXhwYW5kaW5nX3Zp c2l0b3I6OnZpc2l0X2F0dmFyX29wIChhdHZhcl9vcCogZSkKICAgcHJvdmlkZShlKTsKIH0KIAor LyogR3V0cyBvZiBAZW51bSguLi4pIGltcGxlbWVudGF0aW9uICovCitzdHJ1Y3QgZHdhcmZfYXRl bnVtX2V4cGFuZGluZ192aXNpdG9yOiBwdWJsaWMgdmFyX2V4cGFuZGluZ192aXNpdG9yCit7Cisg IGR3YXJmX2J1aWxkZXImIGRiOworCisgIGR3YXJmX2F0ZW51bV9leHBhbmRpbmdfdmlzaXRvcihz eXN0ZW10YXBfc2Vzc2lvbiYgcywgZHdhcmZfYnVpbGRlciYgZGIpOgorICAgIHZhcl9leHBhbmRp bmdfdmlzaXRvcihzKSwgZGIoZGIpIHt9CisgIHZvaWQgdmlzaXRfYXRlbnVtX29wIChhdGVudW1f b3AqIGUpOworfTsKKworCitzdHJ1Y3QgZHdhcmZfYXRlbnVtX3F1ZXJ5OiBwdWJsaWMgYmFzZV9x dWVyeQoreworICBhdGVudW1fb3AmIGU7CisgIGZ1bmN0aW9uY2FsbComIHJlc3VsdDsKKworICBk d2FyZl9hdGVudW1fcXVlcnkoZHdmbHBwJiBkdywgY29uc3Qgc3RyaW5nJiBtb2R1bGUsIGF0ZW51 bV9vcCYgZSwKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25jYWxsKiYgcmVzdWx0KToKKyAg ICBiYXNlX3F1ZXJ5KGR3LCBtb2R1bGUpLCBlKGUpLCByZXN1bHQocmVzdWx0KSwKKyAgICB7fQor CisgIHZvaWQgaGFuZGxlX3F1ZXJ5X21vZHVsZSAoKTsKKyAgdm9pZCBxdWVyeV9saWJyYXJ5IChj b25zdCBjaGFyICopIHt9CisgIHZvaWQgcXVlcnlfcGx0IChjb25zdCBjaGFyICosIHNpemVfdCkg e30KKyAgLyogU2VhcmNoIGVhY2ggdHlwZSBpbiBhIENVIGZvciB0aGUgdGFyZ2V0IGVudW1lcmF0 aW9uIGR1cmluZyBAZW51bSBleHBhbnNpb24gKi8KKyAgc3RhdGljIGludCBhdGVudW1fcXVlcnlf Y3VfY2IoRHdhcmZfRGllKiBjdWRpZSwgZHdhcmZfYXRlbnVtX3F1ZXJ5ICpxdWVyeSkgeworICAg IGR3Lml0ZXJhdGVfb3Zlcl9lbnVtZXJhdGlvbnMoY3VkaWUsIGF0ZW51bV9xdWVyeV9lbnVtZXJh dGlvbl9jYiwgcXVlcnkpOworICB9CisgIHN0YXRpYyBpbnQgYXRlbnVtX3F1ZXJ5X2VudW1lcmF0 aW9uX2NiKER3YXJmX0RpZSogZW51bXR5cGVfZGllLCBEd2FyZl9EaWUgKmVudW1lcmF0aW9uX2Rp ZSwgZHdhcmZfYXRlbnVtX3F1ZXJ5ICpxdWVyeSkgeworICAgIHF1ZXJ5LT5hdGVudW1fcXVlcnlf ZW51bWVyYXRpb24oZW51bXR5cGVfZGllLCBlbnVtZXJhdGlvbl9kaWUpOworICB9Citwcml2YXRl OgorICBpbnQgYXRlbnVtX3F1ZXJ5X2VudW1lcmF0aW9uKER3YXJmX0RpZSogZW51bXR5cGVfZGll LCBEd2FyZl9EaWUgKmVudW1lcmF0aW9uX2RpZSwgZHdhcmZfYXRlbnVtX3F1ZXJ5ICpxdWVyeSk7 Cit9OworCisvKgorICogQ2hlY2sgaWYgdGhlIG1hdGNoZWQgZW51bWVyYXRpb24gaXMgdGhlIG9u ZSB3ZSB3YW50CisgKi8KK2ludCBkd2FyZl9hdGVudW1fcXVlcnk6OmF0ZW51bV9xdWVyeV9lbnVt ZXJhdGlvbihEd2FyZl9EaWUqIGVudW10eXBlX2RpZSwKKwkJCQkJCSBEd2FyZl9EaWUgKmVudW1l cmF0aW9uX2RpZSwKKwkJCQkJCSBkd2FyZl9hdGVudW1fcXVlcnkgKnF1ZXJ5KQoreworICBpZiAo ZS5lbnVtZXJhdGlvbl9uYW1lID09IGR3YXJmX2RpZW5hbWUoZW51bWVyYXRpb25fZGllKSkKKyAg ICB7CisgICAgICAvKiBUaGUgZW51bSB0eXBlIGl0c2VsZiBkZXRlcm1pbmVzIHNpZ25lZG5lc3Mg Ki8KKyAgICAgIER3YXJmX1dvcmQgZW5jb2RpbmcgPSAoRHdhcmZfV29yZCkgLTE7CisgICAgICBE d2FyZl9BdHRyaWJ1dGUgZW5jb2RpbmdfYXR0cjsKKyAgICAgIGlmICghZHdhcmZfYXR0cl9pbnRl Z3JhdGUgKGVudW10eXBlX2RpZSwgRFdfQVRfZW5jb2RpbmcsICZlbmNvZGluZ19hdHRyKQorCSAg fHwgZHdhcmZfZm9ybXVkYXRhKCZlbmNvZGluZ19hdHRyLCAmZW5jb2RpbmcpICE9IDApCisJdGhy b3cgU0VNQU5USUNfRVJST1IoXygiQGVudW0oJXMpIGRhdGEtdHlwZSBkZXRlY3Rpb24gZmFpbGVk OiBjYW5ub3QgZ2V0IGVuY29kaW5nIGF0dHJpYnV0ZTogJXMiLAorCQkJICAgICAgIGUtPmV1bWVy YXRpb25fbmFtZS5jX3N0cigpLCBlbmNvZGluZyksCisJCQkgICAgIGUtPnRvayk7CisKKyAgICAg IGlmICghKGVuY29kaW5nID09IERXX0FURV9zaWduZWQgfHwgZW5jb2RpbmcgPT0gRFdfQVRFX3Np Z25lZF9jaGFyCisJICAgICB8fCBlbmNvZGluZyA9PSBEV19BVEVfdW5zaWduZWQgfHwgZW5jb2Rp bmcgPT0gRFdfQVRFX3Vuc2lnbmVkX2NoYXIpKQorCXRocm93IFNFTUFOVElDX0VSUk9SKF8oIkBl bnVtKCVzKSBkYXRhLXR5cGUgZGV0ZWN0aW9uIGZhaWxlZDogdW5leHBlY3RlZCBlbmNvZGluZy10 eXBlICVkIiwKKwkJCSAgICAgICBlLT5ldW1lcmF0aW9uX25hbWUuY19zdHIoKSwgZW5jb2Rpbmcp LAorCQkJICAgICBlLT50b2spOworCisgICAgICBib29sIGlzc2lnbmVkID0gZW5jb2RpbmcgPT0g RFdfQVRFX3NpZ25lZCB8fCBlbmNvZGluZyA9PSBEV19BVEVfc2lnbmVkX2NoYXI7CisKKyAgICAg IC8qIEdldCB0aGUgZW51bSB2YWx1ZSAqLworICAgICAgRHdhcmZfV29yZCBlbnVtdmFsID0gKER3 YXJmX1dvcmQpIC0xOworICAgICAgRHdhcmZfQXR0cmlidXRlIGNvbnN0YXR0cjsKKyAgICAgIGlm ICghZHdhcmZfYXR0cl9pbnRlZ3JhdGUoZW51bWVyYXRpb25fZGllLCBEV19UQUdfY29uc3RfdmFs dWUsICZjb25zdGF0dHIpCisJICB8fCAoaXNzaWduZWQgJiYgZHdhcmZfZm9ybXNkYXRhKCZjb25z dGF0dHIsICZlbnVtdmFsKSAhPSAwKQorCSAgfHwgKCFpc3NpZ25lZCAmJiBkd2FyZl9mb3JtdWRh dGEoJmNvbnN0YXR0ciwgJmVudW12YWwpICE9IDApKQorCXRocm93IFNFTUFOVElDX0VSUk9SKF8o IkBlbnVtKCVzKSBjb25zdGFudC1leHBhbnNpb24gZmFpbGVkOiAlcyIsCisJCQkgICAgICAgZS0+ ZXVtZXJhdGlvbl9uYW1lLmNfc3RyKCksIGR3YXJmX2Vycm1zZygtMSkpLAorCQkJICAgICBlLT50 b2spOworCisgICAgICAvKiBTdWIgaW4gYSBsaXRlcmFsLiBUT0RPOiBzaWduZWRuZXNzPyAqLwor ICAgICAgZXhwcmVzc2lvbiAqcmV0ID0gbmV3IGxpdGVyYWxfbnVtYmVyKGVudW12YWwpOworICAg ICAgcHJvdmlkZShyZXQpOworCisgICAgICByZXR1cm4gRFdBUkZfQ0JfQUJPUlQ7CisgICAgfQor ICBlbHNlCisgICAgcmV0dXJuIERXQVJGX0NCX09LOworfQorCisvKiBTZWFyY2ggZWFjaCBDVSBp biBhIG1vZHVsZSBmb3IgdGhlIHRhcmdldCBlbnVtZXJhdGlvbiBkdXJpbmcgQGVudW0gZXhwYW5z aW9uICovCit2b2lkCitkd2FyZl9hdGVudW1fcXVlcnk6OmhhbmRsZV9xdWVyeV9tb2R1bGUgKCkK K3sKKyAgaWYgKHJlc3VsdCkKKyAgICByZXR1cm47CisKKyAgaWYgKHN0YXJ0c3dpdGgodG5zLCAi ZW51bSAiKSkKKyAgICB0aHJvdyBTRU1BTlRJQ19FUlJPUihfKCJAZW51bSguLi4pIHRha2VzIGFu IGVudW1lcmF0aW9uIGFzIGEgdmFsdWUsIG5vdCBhbiBlbnVtIHR5cGUtbmFtZSIpLCBlLT50b2sp OworCisgIGR3Lml0ZXJhdGVfb3Zlcl9jdXMoYXRlbnVtX3F1ZXJ5X2N1LCB0aGlzLCBudWxsLCB0 cnVlKTsKK30KKworCisvLyBUT0RPOiBzaGFyZSB3aXRoIGR3YXJmX2F0dmFyX2V4cGFuZGluZ192 aXNpdG9yIGZyb20gd2hpY2ggdGhpcyB3YXMgbW9zdGx5IGNvcGllZAorLy8gRXhwYW5kIEBlbnVt IGludG8gdGhlIGNvbnN0YW50Cit2b2lkCitkd2FyZl9hdGVudW1fZXhwYW5kaW5nX3Zpc2l0b3I6 OnZpc2l0X2F0ZW51bV9vcCAoYXRlbnVtX29wKiBlKQoreworICBpZiAoaXNfYWN0aXZlX2x2YWx1 ZShlKSkKKyAgICB0aHJvdyBTRU1BTlRJQ19FUlJPUihfKCJjYW5ub3QgdXNlIEBlbnVtIGFzIGFu IGx2YWx1ZSIpLCBlLT50b2spOworCisgIGZ1bmN0aW9uY2FsbCogcmVzdWx0ID0gTlVMTDsKKwor ICAvLyBzcGxpdCB0aGUgbW9kdWxlIHN0cmluZyBieSAnOicgZm9yIGFsdGVybmF0aXZlcworICB2 ZWN0b3I8c3RyaW5nPiBtb2R1bGVzOworICB0b2tlbml6ZShlLT5tb2R1bGUsIG1vZHVsZXMsICI6 Iik7CisgIGJvb2wgdXNlcnNwYWNlX3AgPSBmYWxzZTsKKyAgZm9yICh1bnNpZ25lZCBpID0gMDsg IXJlc3VsdCAmJiBpIDwgbW9kdWxlcy5zaXplKCk7ICsraSkKKyAgICB7CisgICAgICBzdHJpbmcm IG1vZHVsZSA9IG1vZHVsZXNbaV07CisKKyAgICAgIGR3ZmxwcCogZHc7CisgICAgICB0cnkKKyAg ICAgICAgeworICAgICAgICAgIHVzZXJzcGFjZV9wID0gaXNfdXNlcl9tb2R1bGUobW9kdWxlKTsK KyAgICAgICAgICBpZiAoIXVzZXJzcGFjZV9wKQorICAgICAgICAgICAgeworICAgICAgICAgICAg ICAvLyBrZXJuZWwgb3Iga2VybmVsIG1vZHVsZSB0YXJnZXQKKyAgICAgICAgICAgICAgZHcgPSBk Yi5nZXRfa2Vybl9kdyhzZXNzLCBtb2R1bGUpOworICAgICAgICAgICAgfQorICAgICAgICAgIGVs c2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgbW9kdWxlID0gZmluZF9leGVjdXRhYmxl KG1vZHVsZSwgIiIsIHNlc3Muc3lzZW52KTsKKyAgICAgICAgICAgICAgZHcgPSBkYi5nZXRfdXNl cl9kdyhzZXNzLCBtb2R1bGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICBjYXRj aCAoY29uc3Qgc2VtYW50aWNfZXJyb3ImIGVyKQorICAgICAgICB7CisgICAgICAgICAgLyogaWdu b3JlIGFuZCBnbyB0byB0aGUgbmV4dCBtb2R1bGUgKi8KKyAgICAgICAgICBjb250aW51ZTsKKyAg ICAgICAgfQorCisgICAgICAvLyBTZWFyY2ggZWFjaCB0YXJnZXQgbW9kdWxlIHdpdGggdGhlIGl0 ZXJhdGVfb3Zlcl90eXBlcyBjYWxsYmFjaworICAgICAgZHdhcmZfYXRlbnVtX3F1ZXJ5IHEgKCpk dywgbW9kdWxlLCAqZSwgdXNlcnNwYWNlX3AsIGZhbHNlLCByZXN1bHQsIHRpY2spOworICAgICAg ZHctPml0ZXJhdGVfb3Zlcl9tb2R1bGVzPGJhc2VfcXVlcnk+KCZxdWVyeV9tb2R1bGUsICZxKTsK KworICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgeworICAgICAgICAgIHNlc3MudW53aW5kc3lt X21vZHVsZXMuaW5zZXJ0KG1vZHVsZSk7CisgICAgICAgICAgcmVzdWx0LT52aXNpdCh0aGlzKTsK KyAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgLyogVW5hYmxlIHRvIGZpbmQg dGhlIHZhcmlhYmxlIGluIHRoZSBjdXJyZW50IG1vZHVsZSwgc28gd2UgY2hhaW4KKyAgICAgICAq IGFuIGVycm9yIGluIGF0ZW51bV9vcCAqLworICAgICAgc3RyaW5nIGVzbiA9IGUtPnN5bV9uYW1l KCk7CisgICAgICBzdHJpbmcgbW4gPSBtb2R1bGU7CisgICAgICBzdHJpbmcgY3VuID0gZS0+Y3Vf bmFtZTsKKyAgICAgIHNlbWFudGljX2Vycm9yICBlcihFUlJfU1JDLCBfRigidW5hYmxlIHRvIGZp bmQgZW51bWVyYXRpb24gJyVzJyBpbiAlcyVzJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGVzbi5jX3N0cigpLCBtbi5jX3N0cigpLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGN1bi5lbXB0eSgpID8gIiIgOiBfKCIsIGluICIpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1bi5jX3N0cigpKSk7CisgICAgICBpZiAo c2Vzcy52ZXJib3NlID4gMykKKyAgICAgICAgY2xvZyA8PCAiY2hhaW5pbmcgdG8gIiA8PCAqZS0+ dG9rIDw8IGVuZGwKKyAgICAgICAgICAgICA8PCBzZXNzLmJ1aWxkX2Vycm9yX21zZyhlcikgPDwg ZW5kbDsKKyAgICAgIGUtPmNoYWluIChlcik7CisgICAgfQorCisgIHByb3ZpZGUoZSk7Cit9CisK IAogdm9pZAogZHdhcmZfZGVyaXZlZF9wcm9iZTo6cHJpbnRzaWcgKG9zdHJlYW0mIG8sIGJvb2wg bmVzdCkgY29uc3QKQEAgLTY0NzMsNiArNjY1MCw3IEBAIHN0cnVjdCBzZHRfdXByb2JlX3Zhcl9l eHBhbmRpbmdfdmlzaXRvcjogcHVibGljIHZhcl9leHBhbmRpbmdfdmlzaXRvcgogICB2b2lkIHZp c2l0X3RhcmdldF9zeW1ib2xfY29udGV4dCAodGFyZ2V0X3N5bWJvbCogZSk7CiAgIHZvaWQgdmlz aXRfYXR2YXJfb3AgKGF0dmFyX29wKiBlKTsKICAgdm9pZCB2aXNpdF9jYXN0X29wIChjYXN0X29w KiBlKTsKKyAgdm9pZCB2aXNpdF9hdGVudW1fb3AgKGF0ZW51bV9vcCogZSk7CiB9OwogCiB2b2lk CkBAIC03NDU3LDYgKzc2MzUsMTIgQEAgc2R0X3Vwcm9iZV92YXJfZXhwYW5kaW5nX3Zpc2l0b3I6 OnZpc2l0X2Nhc3Rfb3AgKGNhc3Rfb3AqIGUpCiAgIHZhcl9leHBhbmRpbmdfdmlzaXRvcjo6dmlz aXRfY2FzdF9vcChlKTsKIH0KIAordm9pZAorc2R0X3Vwcm9iZV92YXJfZXhwYW5kaW5nX3Zpc2l0 b3I6OnZpc2l0X2F0ZW51bV9vcCAoYXRlbnVtX29wKiBlKQoreworICAgIHRocm93IFNFTUFOVElD X0VSUk9SKF9GKCJAZW51bSguLi4pIHJlc29sdXRpb24gaXMgbm90IGF2YWlsYWJsZSBpbiB1cHJv YmVzLiBUcnkgYSBEV0FSRiBwcm9iZS4iLAorCQkJICAgIGUtPnRvayk7Cit9CiAKIHZvaWQKIHBs dF9leHBhbmRpbmdfdmlzaXRvcjo6dmlzaXRfdGFyZ2V0X3N5bWJvbCAodGFyZ2V0X3N5bWJvbCAq ZSkKQEAgLTExMjgxLDYgKzExNDY1LDcgQEAgaXNfc2lnbmVkX3R5cGUoRHdhcmZfRGllICpkaWUp CiAgIHN3aXRjaCAoZHdhcmZfdGFnKGRpZSkpCiAgICAgewogICAgIGNhc2UgRFdfVEFHX2Jhc2Vf dHlwZToKKyAgICBjYXNlIERXX1RBR19lbnVtZXJhdGlvbl90eXBlOgogICAgICAgewogICAgICAg ICBEd2FyZl9BdHRyaWJ1dGUgYXR0cjsKICAgICAgICAgRHdhcmZfV29yZCBlbmNvZGluZyA9IChE d2FyZl9Xb3JkKSAtMTsKZGlmZiAtLWdpdCBhL3RyYW5zbGF0ZS5jeHggYi90cmFuc2xhdGUuY3h4 CmluZGV4IDEwYjNkMzIwZS4uMjMwMzBiZDU3IDEwMDY0NAotLS0gYS90cmFuc2xhdGUuY3h4Cisr KyBiL3RyYW5zbGF0ZS5jeHgKQEAgLTIzNyw2ICsyMzcsNyBAQCBzdHJ1Y3QgY191bnBhcnNlcjog cHVibGljIHVucGFyc2VyLCBwdWJsaWMgdmlzaXRvcgogICB2b2lkIHZpc2l0X2Nhc3Rfb3AgKGNh c3Rfb3AqIGUpOwogICB2b2lkIHZpc2l0X2F1dG9jYXN0X29wIChhdXRvY2FzdF9vcCogZSk7CiAg IHZvaWQgdmlzaXRfYXR2YXJfb3AgKGF0dmFyX29wKiBlKTsKKyAgdm9pZCB2aXNpdF9hdGVudW1f b3AgKGF0ZW51bV9vcCogZSk7CiAgIHZvaWQgdmlzaXRfZGVmaW5lZF9vcCAoZGVmaW5lZF9vcCog ZSk7CiAgIHZvaWQgdmlzaXRfZW50cnlfb3AgKGVudHJ5X29wKiBlKTsKICAgdm9pZCB2aXNpdF9w ZXJmX29wIChwZXJmX29wKiBlKTsKQEAgLTUzNDcsNiArNTM0OCwxMSBAQCBjX3VucGFyc2VyOjp2 aXNpdF9hdHZhcl9vcCAoYXR2YXJfb3AqIGUpCiAgIHRocm93IFNFTUFOVElDX0VSUk9SKF8oImNh bm5vdCB0cmFuc2xhdGUgZ2VuZXJhbCBAdmFyIGV4cHJlc3Npb24iKSwgZS0+dG9rKTsKIH0KIAor dm9pZAorY191bnBhcnNlcjo6dmlzaXRfYXRlbnVtX29wIChhdGVudW1fb3AqIGUpCit7CisgIHRo cm93IFNFTUFOVElDX0VSUk9SKF8oImNhbm5vdCB0cmFuc2xhdGUgZ2VuZXJhbCBAZW51bSBleHBy ZXNzaW9uIiksIGUtPnRvayk7Cit9CiAKIHZvaWQKIGNfdW5wYXJzZXI6OnZpc2l0X2Nhc3Rfb3Ag KGNhc3Rfb3AqIGUpCi0tIAoyLjI5LjIKCg== --00000000000050976405b8e6ff2d--