From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg1-x533.google.com (mail-pg1-x533.google.com [IPv6:2607:f8b0:4864:20::533]) by sourceware.org (Postfix) with ESMTPS id 8AFAD384D19A for ; Wed, 29 Jun 2022 16:37:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 8AFAD384D19A Received: by mail-pg1-x533.google.com with SMTP id h192so15849217pgc.4 for ; Wed, 29 Jun 2022 09:37:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:message-id:date:mime-version:user-agent :content-language:to:from:subject; bh=+Aj013EWhfMErMN1FzT2VIR18U2qUc9v2+ZrMaB0BZ0=; b=eqMsaTIQgOmnTsWKVlxR+WQMEXFlAwwzXO7VgyL6kxHTwKPOQL+4NFuFYZOXXqLo9n wy241UwkSSjWJrD3kswKDoIHZsf5a0XyFSLXpk23tAQaz4Wo9/rvr8HKK0LfSf8B0aF5 KdGBF77O7DuDpRHyfo3VluTeed9EIP1yeMnv2bKdh7yo3SV5NEj752gIn1VUOoyvqM1F OqPuec54/8picxARcnBzBVh5irKKLfuyUHba6ZJMx10qKwNtop2kxDwS2NkOdavpRaG9 WVBV4Uoflt/cFUsjYcT9WK+ePtZdwkMTdBD27P349N4VzcuqRTQX1gGh0u8LosoizXYX 0eqg== X-Gm-Message-State: AJIora/4nzs9gwniY7jO2H+VCP4XJtVDVMN51otR4Jj1o478F/HcGV5s L23+S43lm7IC1YR+QbjnMfJ6YdzchGU= X-Google-Smtp-Source: AGRyM1uHdMganhBjud64Y2qfj2oSkafhZG1rpIxpJmZXe1A9my4kzAMyDvAf6MFW7B6MlfT/woVlSQ== X-Received: by 2002:a05:6a00:4194:b0:527:f9a4:73b7 with SMTP id ca20-20020a056a00419400b00527f9a473b7mr2747681pfb.61.1656520664290; Wed, 29 Jun 2022 09:37:44 -0700 (PDT) Received: from ?IPV6:2620:10d:c085:21d6::1133? ([2620:10d:c090:400::5:cb98]) by smtp.googlemail.com with ESMTPSA id bk21-20020aa78315000000b005254e44b748sm11619516pfb.84.2022.06.29.09.37.42 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 29 Jun 2022 09:37:43 -0700 (PDT) Sender: Nathan Sidwell Content-Type: multipart/mixed; boundary="------------GPKSuWDwVo1438ugNMSB3WBi" Message-ID: <53faea90-bcdb-0a44-6f7b-edfb11efd55f@acm.org> Date: Wed, 29 Jun 2022 12:37:40 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.10.0 Content-Language: en-US To: GCC Patches From: Nathan Sidwell Subject: c++: Rename macro location structs X-Spam-Status: No, score=-3038.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_EF, FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Jun 2022 16:37:47 -0000 This is a multi-part message in MIME format. --------------GPKSuWDwVo1438ugNMSB3WBi Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit The macro location tables should really mention they are about locations. So rename them. Also, add a missing free of the remapping table, and remove some now-unneeded macro checking. nathan -- Nathan Sidwell --------------GPKSuWDwVo1438ugNMSB3WBi Content-Type: text/x-patch; charset=UTF-8; name="0001-c-Rename-macro-location-structs.patch" Content-Disposition: attachment; filename="0001-c-Rename-macro-location-structs.patch" Content-Transfer-Encoding: base64 RnJvbSBiMGYyNWUxZmRjNjE5OTcyNWU2OTAyM2EzZGM0OTAyMWYzMTFiYTY2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOYXRoYW4gU2lkd2VsbCA8bmF0aGFuQGFjbS5vcmc+ CkRhdGU6IEZyaSwgMjQgSnVuIDIwMjIgMDU6MTc6MjQgLTA3MDAKU3ViamVjdDogW1BBVENI XSBjKys6IFJlbmFtZSBtYWNybyBsb2NhdGlvbiBzdHJ1Y3RzCgpUaGUgbWFjcm8gbG9jYXRp b24gdGFibGVzIHNob3VsZCByZWFsbHkgbWVudGlvbiB0aGV5IGFyZSBhYm91dApsb2NhdGlv bnMuICBTbyByZW5hbWUgdGhlbS4gIEFsc28sIGFkZCBhIG1pc3NpbmcgZnJlZSBvZiB0aGUg cmVtYXBwaW5nCnRhYmxlLCBhbmQgcmVtb3ZlIHNvbWUgbm93LXVubmVlZGVkIG1hY3JvIGNo ZWNraW5nLgoKCWdjYy9jcC8KCSogbW9kdWxlLmNjIChtYWNyb19pbmZvLCBtYWNyb190cmFp dHMsIG1hY3JvX3RhYmxlLAoJbWFjcm9fcmVtYXApOiBSZW5hbWUgdG8gLi4uCgkobWFjcm9f bG9jX2luZm8sIG1hY3JvX2xvY190cmFpdHMsIG1hY3JvX2xvY190YWJsZSwKCW1hY3JvX2xv Y19yZW1hcCk6IC4uLiB0aGVzZS4gIFVwZGF0ZSBhbGwgdXNlcy4KCShtb2R1bGVfc3RhdGU6 OndyaXRlX3ByZXBhcmVfbWFwcyk6IFJlbW92ZSB1bm5lZWRlZCBtYWNybyBjaGVja2luZy4K CShtb2R1bGVfc3RhdGU6OndyaXRlX2JlZ2luKTogRnJlZSBtYWNyb19sb2NfcmVtYXAuCi0t LQogZ2NjL2NwL21vZHVsZS5jYyB8IDczICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyks IDQ4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2djYy9jcC9tb2R1bGUuY2MgYi9nY2Mv Y3AvbW9kdWxlLmNjCmluZGV4IDhiYjIyYzJiMzA1Li42OGE3Y2U1M2VlNCAxMDA2NDQKLS0t IGEvZ2NjL2NwL21vZHVsZS5jYworKysgYi9nY2MvY3AvbW9kdWxlLmNjCkBAIC0zMjQxLDE1 ICszMjQxLDE1IEBAIHB1YmxpYzoKIHN0YXRpYyBsb2Nfc3BhbnMgc3BhbnM7CiAKIC8qIElu Zm9ybWF0aW9uIGFib3V0IG1hY3JvIGxvY2F0aW9ucyB3ZSBzdHJlYW0gb3V0LiAgKi8KLXN0 cnVjdCBtYWNyb19pbmZvCitzdHJ1Y3QgbWFjcm9fbG9jX2luZm8KIHsKICAgY29uc3QgbGlu ZV9tYXBfbWFjcm8gKnNyYzsgICAgLy8gb3JpZ2luYWwgZXhwYW5zaW9uCiAgIHVuc2lnbmVk IHJlbWFwOwkgIC8vIHNlcmlhbGl6YXRpb24KIAogICBzdGF0aWMgaW50IGNvbXBhcmUgKGNv bnN0IHZvaWQgKmFfLCBjb25zdCB2b2lkICpiXykKICAgewotICAgIGF1dG8gKmEgPSBzdGF0 aWNfY2FzdDxjb25zdCBtYWNyb19pbmZvICo+IChhXyk7Ci0gICAgYXV0byAqYiA9IHN0YXRp Y19jYXN0PGNvbnN0IG1hY3JvX2luZm8gKj4gKGJfKTsKKyAgICBhdXRvICphID0gc3RhdGlj X2Nhc3Q8Y29uc3QgbWFjcm9fbG9jX2luZm8gKj4gKGFfKTsKKyAgICBhdXRvICpiID0gc3Rh dGljX2Nhc3Q8Y29uc3QgbWFjcm9fbG9jX2luZm8gKj4gKGJfKTsKIAogICAgIGdjY19jaGVj a2luZ19hc3NlcnQgKE1BUF9TVEFSVF9MT0NBVElPTiAoYS0+c3JjKQogCQkJICE9IE1BUF9T VEFSVF9MT0NBVElPTiAoYi0+c3JjKSk7CkBAIC0zMjU5LDkgKzMyNTksOSBAQCBzdHJ1Y3Qg bWFjcm9faW5mbwogICAgICAgcmV0dXJuICsxOwogICB9CiB9Owotc3RydWN0IG1hY3JvX3Ry YWl0cworc3RydWN0IG1hY3JvX2xvY190cmFpdHMKIHsKLSAgdHlwZWRlZiBtYWNyb19pbmZv IHZhbHVlX3R5cGU7CisgIHR5cGVkZWYgbWFjcm9fbG9jX2luZm8gdmFsdWVfdHlwZTsKICAg dHlwZWRlZiBjb25zdCBsaW5lX21hcF9tYWNybyAqY29tcGFyZV90eXBlOwogCiAgIHN0YXRp YyBjb25zdCBib29sIGVtcHR5X3plcm9fcCA9IGZhbHNlOwpAQCAtMzI5NCw5ICszMjk0LDkg QEAgc3RydWN0IG1hY3JvX3RyYWl0cwogICBzdGF0aWMgdm9pZCByZW1vdmUgKHZhbHVlX3R5 cGUgJikge30KIH07CiAvKiBUYWJsZSBrZXllZCBieSBsaW5lX21hcF9tYWNybywgdXNlZCBm b3Igbm90aW5nLiAgKi8KLXN0YXRpYyAgaGFzaF90YWJsZTxtYWNyb190cmFpdHM+ICptYWNy b190YWJsZTsKK3N0YXRpYyAgaGFzaF90YWJsZTxtYWNyb19sb2NfdHJhaXRzPiAqbWFjcm9f bG9jX3RhYmxlOwogLyogU29ydGVkIHZlY3RvciwgdXNlZCBmb3Igd3JpdGluZy4gICovCi1z dGF0aWMgdmVjPG1hY3JvX2luZm8+ICptYWNyb19yZW1hcDsKK3N0YXRpYyB2ZWM8bWFjcm9f bG9jX2luZm8+ICptYWNyb19sb2NfcmVtYXA7CiAKIC8qIEluZGlyZWN0aW9uIHRvIGFsbG93 IGJzZWFyY2hpbmcgaW1wb3J0cyBieSBvcmRpbmFyeSBsb2NhdGlvbi4gICovCiBzdGF0aWMg dmVjPG1vZHVsZV9zdGF0ZSAqPiAqb29sOwpAQCAtMTU2MTYsNyArMTU2MTYsNyBAQCBtb2R1 bGVfc3RhdGU6OmltcG9ydGVkX2Zyb20gKCkgY29uc3QKIHZvaWQKIG1vZHVsZV9zdGF0ZTo6 bm90ZV9sb2NhdGlvbiAobG9jYXRpb25fdCBsb2MpCiB7Ci0gIGlmICghbWFjcm9fdGFibGUp CisgIGlmICghbWFjcm9fbG9jX3RhYmxlKQogICAgIDsKICAgZWxzZSBpZiAobG9jIDwgUkVT RVJWRURfTE9DQVRJT05fQ09VTlQpCiAgICAgOwpAQCAtMTU2MzUsOSArMTU2MzUsOSBAQCBt b2R1bGVfc3RhdGU6Om5vdGVfbG9jYXRpb24gKGxvY2F0aW9uX3QgbG9jKQogCXsKIAkgIGNv bnN0IGxpbmVfbWFwICptYXAgPSBsaW5lbWFwX2xvb2t1cCAobGluZV90YWJsZSwgbG9jKTsK IAkgIGNvbnN0IGxpbmVfbWFwX21hY3JvICptYWNfbWFwID0gbGluZW1hcF9jaGVja19tYWNy byAobWFwKTsKLQkgIGhhc2h2YWxfdCBodiA9IG1hY3JvX3RyYWl0czo6aGFzaCAobWFjX21h cCk7Ci0JICBtYWNyb19pbmZvICpzbG90Ci0JICAgID0gbWFjcm9fdGFibGUtPmZpbmRfc2xv dF93aXRoX2hhc2ggKG1hY19tYXAsIGh2LCBJTlNFUlQpOworCSAgaGFzaHZhbF90IGh2ID0g bWFjcm9fbG9jX3RyYWl0czo6aGFzaCAobWFjX21hcCk7CisJICBtYWNyb19sb2NfaW5mbyAq c2xvdAorCSAgICA9IG1hY3JvX2xvY190YWJsZS0+ZmluZF9zbG90X3dpdGhfaGFzaCAobWFj X21hcCwgaHYsIElOU0VSVCk7CiAJICBpZiAoIXNsb3QtPnNyYykKIAkgICAgewogCSAgICAg IHNsb3QtPnNyYyA9IG1hY19tYXA7CkBAIC0xNTY5OCwxMSArMTU2OTgsMTEgQEAgbW9kdWxl X3N0YXRlOjp3cml0ZV9sb2NhdGlvbiAoYnl0ZXNfb3V0ICZzZWMsIGxvY2F0aW9uX3QgbG9j KQogICAgIH0KICAgZWxzZSBpZiAobG9jID49IExJTkVNQVBTX01BQ1JPX0xPV0VTVF9MT0NB VElPTiAobGluZV90YWJsZSkpCiAgICAgewotICAgICAgY29uc3QgbWFjcm9faW5mbyAqaW5m byA9IG51bGxwdHI7CisgICAgICBjb25zdCBtYWNyb19sb2NfaW5mbyAqaW5mbyA9IG51bGxw dHI7CiAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSAwOwotICAgICAgaWYgKHVuc2lnbmVkIGh3 bSA9IG1hY3JvX3JlbWFwLT5sZW5ndGggKCkpCisgICAgICBpZiAodW5zaWduZWQgaHdtID0g bWFjcm9fbG9jX3JlbWFwLT5sZW5ndGggKCkpCiAJewotCSAgaW5mbyA9IG1hY3JvX3JlbWFw LT5iZWdpbiAoKTsKKwkgIGluZm8gPSBtYWNyb19sb2NfcmVtYXAtPmJlZ2luICgpOwogCSAg d2hpbGUgKGh3bSAhPSAxKQogCSAgICB7CiAJICAgICAgdW5zaWduZWQgbWlkID0gaHdtIC8g MjsKQEAgLTE1OTA5LDcgKzE1OTA5LDcgQEAgbW9kdWxlX3N0YXRlOjpyZWFkX2xvY2F0aW9u IChieXRlc19pbiAmc2VjKSBjb25zdAogdm9pZAogbW9kdWxlX3N0YXRlOjp3cml0ZV9pbml0 X21hcHMgKCkKIHsKLSAgbWFjcm9fdGFibGUgPSBuZXcgaGFzaF90YWJsZTxtYWNyb190cmFp dHM+IChFWFBFUklNRU5UICgxLCA0MDApKTsKKyAgbWFjcm9fbG9jX3RhYmxlID0gbmV3IGhh c2hfdGFibGU8bWFjcm9fbG9jX3RyYWl0cz4gKEVYUEVSSU1FTlQgKDEsIDQwMCkpOwogfQog CiBsb2NhdGlvbl9tYXBfaW5mbwpAQCAtMTU5NTUsMzAgKzE1OTU1LDYgQEAgbW9kdWxlX3N0 YXRlOjp3cml0ZV9wcmVwYXJlX21hcHMgKG1vZHVsZV9zdGF0ZV9jb25maWcgKmNmZykKIAog CSAgaW5mby5udW1fbWFwcy5maXJzdCArPSBvbWFwIC0gZm1hcDsKIAl9Ci0KLSAgICAgIGlm IChzcGFuLm1hY3JvLmZpcnN0ICE9IHNwYW4ubWFjcm8uc2Vjb25kKQotCXsKLQkgIC8qIEl0 ZXJhdGUgb3ZlciB0aGUgc3BhbidzIG1hY3JvcywgdG8gZWxpZGUgdGhlIGVtcHR5Ci0JICAg ICBleHBhbnNpb25zLiAgKi8KLQkgIHVuc2lnbmVkIGNvdW50ID0gMDsKLQkgIGZvciAodW5z aWduZWQgbWFjcm8KLQkJID0gbGluZW1hcF9sb29rdXBfbWFjcm9faW5kZXggKGxpbmVfdGFi bGUsCi0JCQkJCSAgICAgICBzcGFuLm1hY3JvLnNlY29uZCAtIDEpOwotCSAgICAgICBtYWNy byA8IExJTkVNQVBTX01BQ1JPX1VTRUQgKGxpbmVfdGFibGUpOwotCSAgICAgICBtYWNybysr KQotCSAgICB7Ci0JICAgICAgbGluZV9tYXBfbWFjcm8gY29uc3QgKm1tYXAKLQkJPSBMSU5F TUFQU19NQUNST19NQVBfQVQgKGxpbmVfdGFibGUsIG1hY3JvKTsKLQkgICAgICBpZiAoTUFQ X1NUQVJUX0xPQ0FUSU9OIChtbWFwKSA8IHNwYW4ubWFjcm8uZmlyc3QpCi0JCS8qIEZhbGxl biBvdXQgb2YgdGhlIHNwYW4uICAqLwotCQlicmVhazsKLQotCSAgICAgIGlmIChtbWFwLT5u X3Rva2VucykKLQkJY291bnQrKzsKLQkgICAgfQotCSAgZHVtcCAoZHVtcGVyOjpMT0NBVElP TikgJiYgZHVtcCAoIlNwYW46JXUgJXUgbWFjcm8gbWFwcyIsIGl4LCBjb3VudCk7Ci0JICBp bmZvLm51bV9tYXBzLnNlY29uZCArPSBjb3VudDsKLQl9CiAgICAgfQogCiAgIC8qIEFkanVz dCB0aGUgbWFwcy4gIE9yZGluYXJ5IG9uZXMgYXNjZW5kLCBhbmQgd2UgbXVzdCBtYWludGFp bgpAQCAtMTYwMjQsMjMgKzE2MDAwLDIzIEBAIG1vZHVsZV9zdGF0ZTo6d3JpdGVfcHJlcGFy ZV9tYXBzIChtb2R1bGVfc3RhdGVfY29uZmlnICpjZmcpCiAgICAgICBvcmRfb2ZmID0gc3Bh bi5vcmRpbmFyeS5zZWNvbmQgKyBzcGFuLm9yZGluYXJ5X2RlbHRhOwogICAgIH0KIAotICB2 ZWNfYWxsb2MgKG1hY3JvX3JlbWFwLCBtYWNyb190YWJsZS0+c2l6ZSAoKSk7Ci0gIGZvciAo YXV0byBpdGVyID0gbWFjcm9fdGFibGUtPmJlZ2luICgpLCBlbmQgPSBtYWNyb190YWJsZS0+ ZW5kICgpOworICB2ZWNfYWxsb2MgKG1hY3JvX2xvY19yZW1hcCwgbWFjcm9fbG9jX3RhYmxl LT5zaXplICgpKTsKKyAgZm9yIChhdXRvIGl0ZXIgPSBtYWNyb19sb2NfdGFibGUtPmJlZ2lu ICgpLCBlbmQgPSBtYWNyb19sb2NfdGFibGUtPmVuZCAoKTsKICAgICAgICBpdGVyICE9IGVu ZDsgKytpdGVyKQotICAgIG1hY3JvX3JlbWFwLT5xdWlja19wdXNoICgqaXRlcik7Ci0gIGRl bGV0ZSBtYWNyb190YWJsZTsKLSAgbWFjcm9fdGFibGUgPSBudWxscHRyOworICAgIG1hY3Jv X2xvY19yZW1hcC0+cXVpY2tfcHVzaCAoKml0ZXIpOworICBkZWxldGUgbWFjcm9fbG9jX3Rh YmxlOworICBtYWNyb19sb2NfdGFibGUgPSBudWxscHRyOwogCi0gIG1hY3JvX3JlbWFwLT5x c29ydCAoJm1hY3JvX2luZm86OmNvbXBhcmUpOworICBtYWNyb19sb2NfcmVtYXAtPnFzb3J0 ICgmbWFjcm9fbG9jX2luZm86OmNvbXBhcmUpOwogICB1bnNpZ25lZCBvZmZzZXQgPSAwOwot ICBmb3IgKGF1dG8gaXRlciA9IG1hY3JvX3JlbWFwLT5iZWdpbiAoKSwgZW5kID0gbWFjcm9f cmVtYXAtPmVuZCAoKTsKKyAgZm9yIChhdXRvIGl0ZXIgPSBtYWNyb19sb2NfcmVtYXAtPmJl Z2luICgpLCBlbmQgPSBtYWNyb19sb2NfcmVtYXAtPmVuZCAoKTsKICAgICAgICBpdGVyICE9 IGVuZDsgKytpdGVyKQogICAgIHsKICAgICAgIGF1dG8gbWFjID0gaXRlci0+c3JjOwogICAg ICAgaXRlci0+cmVtYXAgPSBvZmZzZXQ7CiAgICAgICBvZmZzZXQgKz0gbWFjLT5uX3Rva2Vu czsKICAgICB9Ci0gIGluZm8ubnVtX21hcHMuc2Vjb25kID0gbWFjcm9fcmVtYXAtPmxlbmd0 aCAoKTsKKyAgaW5mby5udW1fbWFwcy5zZWNvbmQgPSBtYWNyb19sb2NfcmVtYXAtPmxlbmd0 aCAoKTsKICAgY2ZnLT5tYWNyb19sb2NzID0gb2Zmc2V0OwogCiAgIGR1bXAgKCkgJiYgZHVt cCAoIk9yZGluYXJ5OiV1IG1hcHMgaHdtOiV1IG1hY3JvOiV1IG1hcHMgJXUgbG9jcyIsCkBA IC0xNjI0NCw3ICsxNjIyMCw3IEBAIG1vZHVsZV9zdGF0ZTo6d3JpdGVfbWFjcm9fbWFwcyAo ZWxmX291dCAqdG8sIGxvY2F0aW9uX21hcF9pbmZvICZpbmZvLAogICBzZWMudSAoaW5mby5u dW1fbWFwcy5zZWNvbmQpOwogCiAgIHVuc2lnbmVkIG1hY3JvX251bSA9IDA7Ci0gIGZvciAo YXV0byBpdGVyID0gbWFjcm9fcmVtYXAtPmVuZCAoKSwgYmVnaW4gPSBtYWNyb19yZW1hcC0+ YmVnaW4gKCk7CisgIGZvciAoYXV0byBpdGVyID0gbWFjcm9fbG9jX3JlbWFwLT5lbmQgKCks IGJlZ2luID0gbWFjcm9fbG9jX3JlbWFwLT5iZWdpbiAoKTsKICAgICAgICBpdGVyLS0gIT0g YmVnaW47KQogICAgIHsKICAgICAgIGF1dG8gbWFjID0gaXRlci0+c3JjOwpAQCAtMTc5MzYs NiArMTc5MTIsNyBAQCBtb2R1bGVfc3RhdGU6OndyaXRlX2JlZ2luIChlbGZfb3V0ICp0bywg Y3BwX3JlYWRlciAqcmVhZGVyLAogICBzcGFjZXMucmVsZWFzZSAoKTsKICAgc2Njcy5yZWxl YXNlICgpOwogCisgIHZlY19mcmVlIChtYWNyb19sb2NfcmVtYXApOwogICB2ZWNfZnJlZSAo b29sKTsKIAogICAvLyBGSVhNRTpRT0k6ICBIYXZlIGEgY29tbWFuZCBsaW5lIHN3aXRjaCB0 byBjb250cm9sIG1vcmUgZGV0YWlsZWQKLS0gCjIuMzAuMgoK --------------GPKSuWDwVo1438ugNMSB3WBi--