From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x529.google.com (mail-ed1-x529.google.com [IPv6:2a00:1450:4864:20::529]) by sourceware.org (Postfix) with ESMTPS id CDF773858D37; Thu, 6 Oct 2022 17:38:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org CDF773858D37 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ed1-x529.google.com with SMTP id e18so3867380edj.3; Thu, 06 Oct 2022 10:38:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-language:cc:to:subject:from:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=+HDvEAzz3WNvF71Uv7L3EvcQCrqLpo+giyMrAvBD1yY=; b=C5+wGAUkjA0bhRFUFFtBjeLhI7+1PJCDiE9V5M8s16pHw4wFkwQXUk6DWZzMGHxZgX O/h0oxNtpKEkMs3+UqlcPEFus7McOnfK8Wh6EQvCAGHVetyZOso807k6R+wUFMoPYIYi LiJQGwEMN3109e4ZFqb/mkO46KB4QS6LFwfk4Foi3cwIaUZ0G3bYunqWWltEPZUHvXoD RedxsuNikBPxPmDYE3C7N6MdGT5tPrk2NsMS0327P4/193ZaRyYdieCaUdvHpsPZUvc0 XIcqf1vkIrIsHy2iXxo3t3vBTaQg2xykfvDjzWQ1VuFwnPp+yqY6MKLbf3OhwXJti1vm Kq+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-language:cc:to:subject:from:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=+HDvEAzz3WNvF71Uv7L3EvcQCrqLpo+giyMrAvBD1yY=; b=J4bw5efLjTU57giDWi8hMoK2MCWHg6DRCOdYKVfYonh/GoFtIrbRTQLLjLPhAHUmIT 012seCyMAIiRfYYhTvte9wlhMmq3zWeDhZWzU7L7mV3BIS/nLSUccwEow3G1IpqA9SXf mD1gLe6Jnl+SI2efCeHpJXUhhwSUb2CB8xxvtMTkU8r63DCgiBup+YnB8IDAGTdCX/9t brjBdZmbxlCRilQJ0QBfNEHoFsOBcnpjnhxSQaFGMR/5ggGLrvGqCgiLy2r1Mbm5HuUF T7jMd/R18BhYz+72/da7rg1Ujn0qL2DtC96PJh3EFMG4L2HbTB//HP6o8Q5Yjq7cCSpw XSXw== X-Gm-Message-State: ACrzQf3V2PB03drF/CkxlV4dFFobmdd02G9uvHDOkNma0PcNH6Hvwv31 DjgnbxfhmqNNQyPUS5y2ur7IfIDiRic= X-Google-Smtp-Source: AMsMyM5HtDlXWcxc24yncxYkF3b3vGQ9zqPDGy3i76O21hO++G81ST9tM6rDIG0lssJw3Us9QwLiJQ== X-Received: by 2002:a05:6402:14c9:b0:459:1a5b:6c47 with SMTP id f9-20020a05640214c900b004591a5b6c47mr899552edx.426.1665077894161; Thu, 06 Oct 2022 10:38:14 -0700 (PDT) Received: from [10.60.1.117] ([109.190.253.15]) by smtp.googlemail.com with ESMTPSA id bd18-20020a056402207200b00457e20cb2e4sm6213790edb.48.2022.10.06.10.38.12 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 06 Oct 2022 10:38:13 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------vMEfi5azECNb5lCbNGlMVvcA" Message-ID: <4d1dc3d4-e945-d283-964a-4dab3b3cb33e@gmail.com> Date: Thu, 6 Oct 2022 19:38:09 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 From: =?UTF-8?Q?Fran=c3=a7ois_Dumont?= Subject: [PATCH] Fix gdb FilteringTypePrinter (again) To: "libstdc++@gcc.gnu.org" Cc: gcc-patches Content-Language: en-US X-Spam-Status: No, score=-7.7 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------vMEfi5azECNb5lCbNGlMVvcA Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi Looks like the previous patch was not enough. When using it in the context of a build without dual abi and versioned namespace I started having failures again. I guess I hadn't rebuild everything properly. This time I think the problem was in those lines:             if self.type_obj == type_obj:                 return strip_inline_namespaces(self.name) I've added a call to gdb.types.get_basic_type so that we do not compare a type with its typedef. Thanks for the pointer to the doc ! Doing so I eventually use your code Jonathan to make FilteringTypeFilter more specific to a given instantiation.     libstdc++: Fix gdb FilteringTypePrinter     Once we found a matching FilteringTypePrinter instance we look for the associated     typedef and check that the returned Python Type is equal to the Type to recognize.     But gdb Python Type includes properties to distinguish a typedef from the actual     type. So use gdb.types.get_basic_type to check if we are indeed on the same type.     Additionnaly enhance FilteringTypePrinter matching mecanism by introducing targ1 that,     if not None, will be used as the 1st template parameter.     libstdc++-v3/ChangeLog:             * python/libstdcxx/v6/printers.py (FilteringTypePrinter): Rename 'match' field             'template'. Add self.targ1 to specify the first template parameter of the instantiation             to match.             (add_one_type_printer): Add targ1 optional parameter, default to None.             Use gdb.types.get_basic_type to compare the type to recognize and the type             returned from the typedef lookup.             (register_type_printers): Adapt calls to add_one_type_printers. Tested under Linux x86_64 normal, version namespace with or without dual abi. François --------------vMEfi5azECNb5lCbNGlMVvcA Content-Type: text/x-patch; charset=UTF-8; name="gdb_printers.patch" Content-Disposition: attachment; filename="gdb_printers.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9weXRob24vbGlic3RkY3h4L3Y2L3ByaW50ZXJz LnB5IGIvbGlic3RkYysrLXYzL3B5dGhvbi9saWJzdGRjeHgvdjYvcHJpbnRlcnMucHkKaW5k ZXggMGZhNzgwNTE4M2UuLjUyMzM5YjI0N2Q4IDEwMDY0NAotLS0gYS9saWJzdGRjKystdjMv cHl0aG9uL2xpYnN0ZGN4eC92Ni9wcmludGVycy5weQorKysgYi9saWJzdGRjKystdjMvcHl0 aG9uL2xpYnN0ZGN4eC92Ni9wcmludGVycy5weQpAQCAtMjA0MCw2MiArMjA0MCw3MiBAQCBk ZWYgYWRkX29uZV90ZW1wbGF0ZV90eXBlX3ByaW50ZXIob2JqLCBuYW1lLCBkZWZhcmdzKToK IAogY2xhc3MgRmlsdGVyaW5nVHlwZVByaW50ZXIob2JqZWN0KToKICAgICByIiIiCi0gICAg QSB0eXBlIHByaW50ZXIgdGhhdCB1c2VzIHR5cGVkZWYgbmFtZXMgZm9yIGNvbW1vbiB0ZW1w bGF0ZSBzcGVjaWFsaXphdGlvbnMuCisgICAgQSB0eXBlIHByaW50ZXIgdGhhdCB1c2VzIHR5 cGVkZWYgbmFtZXMgZm9yIGNvbW1vbiB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9ucy4KIAogICAg IEFyZ3M6Ci0gICAgICAgIG1hdGNoIChzdHIpOiBUaGUgY2xhc3MgdGVtcGxhdGUgdG8gcmVj b2duaXplLgorICAgICAgICB0ZW1wbGF0ZSAoc3RyKTogVGhlIGNsYXNzIHRlbXBsYXRlIHRv IHJlY29nbml6ZS4KICAgICAgICAgbmFtZSAoc3RyKTogVGhlIHR5cGVkZWYtbmFtZSB0aGF0 IHdpbGwgYmUgdXNlZCBpbnN0ZWFkLgorICAgICAgICB0YXJnMSAoc3RyKTogVGhlIGZpcnN0 IHRlbXBsYXRlIGFyZ3VtZW50LgorICAgICAgICAgICAgSWYgYXJnMSBpcyBwcm92aWRlZCAo bm90IE5vbmUpLCBvbmx5IHRlbXBsYXRlIGluc3RhbnRpYXRpb25zIHdpdGggdGhpcyB0eXBl CisgICAgICAgICAgICBhcyB0aGUgZmlyc3QgdGVtcGxhdGUgYXJndW1lbnQsIGUuZy4gaWYg dGVtcGxhdGU9J2Jhc2ljX3N0cmluZzx0YXJnMScKIAotICAgIENoZWNrcyBpZiBhIHNwZWNp YWxpemF0aW9uIG9mIHRoZSBjbGFzcyB0ZW1wbGF0ZSAnbWF0Y2gnIGlzIHRoZSBzYW1lIHR5 cGUKKyAgICBDaGVja3MgaWYgYW4gaW5zdGFudGlhdGlvbiBvZiB0aGUgY2xhc3MgdGVtcGxh dGUgJ3RlbXBsYXRlJyBpcyB0aGUgc2FtZSB0eXBlCiAgICAgYXMgdGhlIHR5cGVkZWYgJ25h bWUnLCBhbmQgcHJpbnRzIGl0IGFzICduYW1lJyBpbnN0ZWFkLgogCi0gICAgZS5nLiBpZiBh biBpbnN0YW50aWF0aW9uIG9mIHN0ZDo6YmFzaWNfaXN0cmVhbTxDLCBUPiBpcyB0aGUgc2Ft ZSB0eXBlIGFzCisgICAgZS5nLiBmb3IgdGVtcGxhdGU9J2Jhc2ljX2lzdHJlYW0nLCBuYW1l PSdpc3RyZWFtJywgaWYgYW55IGluc3RhbnRpYXRpb24gb2YKKyAgICBzdGQ6OmJhc2ljX2lz dHJlYW08QywgVD4gaXMgdGhlIHNhbWUgdHlwZSBhcyBzdGQ6OmlzdHJlYW0gdGhlbiBwcmlu dCBpdCBhcworICAgIHN0ZDo6aXN0cmVhbS4KKworICAgIGUuZy4gZm9yIHRlbXBsYXRlPSdi YXNpY19pc3RyZWFtJywgbmFtZT0naXN0cmVhbScsIHRhcmcxPSdjaGFyJywgaWYgYW55Cisg ICAgaW5zdGFudGlhdGlvbiBvZiBzdGQ6OmJhc2ljX2lzdHJlYW08Y2hhciwgVD4gaXMgdGhl IHNhbWUgdHlwZSBhcwogICAgIHN0ZDo6aXN0cmVhbSB0aGVuIHByaW50IGl0IGFzIHN0ZDo6 aXN0cmVhbS4KICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXRjaCwgbmFt ZSk6Ci0gICAgICAgIHNlbGYubWF0Y2ggPSBtYXRjaAorICAgIGRlZiBfX2luaXRfXyhzZWxm LCB0ZW1wbGF0ZSwgbmFtZSwgdGFyZzEpOgorICAgICAgICBzZWxmLnRlbXBsYXRlID0gdGVt cGxhdGUKICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLnRhcmcxID0g dGFyZzEKICAgICAgICAgc2VsZi5lbmFibGVkID0gVHJ1ZQogCiAgICAgY2xhc3MgX3JlY29n bml6ZXIob2JqZWN0KToKICAgICAgICAgIlRoZSByZWNvZ25pemVyIGNsYXNzIGZvciBGaWx0 ZXJpbmdUeXBlUHJpbnRlci4iCiAKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hdGNo LCBuYW1lKToKLSAgICAgICAgICAgIHNlbGYubWF0Y2ggPSBtYXRjaAorICAgICAgICBkZWYg X19pbml0X18oc2VsZiwgdGVtcGxhdGUsIG5hbWUsIHRhcmcxKToKKyAgICAgICAgICAgIHNl bGYudGVtcGxhdGUgPSB0ZW1wbGF0ZQogICAgICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQor ICAgICAgICAgICAgc2VsZi50YXJnMSA9IHRhcmcxCiAgICAgICAgICAgICBzZWxmLnR5cGVf b2JqID0gTm9uZQogCiAgICAgICAgIGRlZiByZWNvZ25pemUoc2VsZiwgdHlwZV9vYmopOgog ICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBJZiB0eXBlX29iaiBzdGFydHMgd2l0aCBz ZWxmLm1hdGNoIGFuZCBpcyB0aGUgc2FtZSB0eXBlIGFzCisgICAgICAgICAgICBJZiB0eXBl X29iaiBzdGFydHMgd2l0aCBzZWxmLnRlbXBsYXRlIGFuZCBpcyB0aGUgc2FtZSB0eXBlIGFz CiAgICAgICAgICAgICBzZWxmLm5hbWUgdGhlbiByZXR1cm4gc2VsZi5uYW1lLCBvdGhlcndp c2UgTm9uZS4KICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgaWYgdHlwZV9vYmoudGFn IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgICAgICAgICAg aWYgc2VsZi50eXBlX29iaiBpcyBOb25lOgotICAgICAgICAgICAgICAgIGlmIG5vdCB0eXBl X29iai50YWcuc3RhcnRzd2l0aChzZWxmLm1hdGNoKToKKyAgICAgICAgICAgICAgICBpZiBz ZWxmLnRhcmcxIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgdHlw ZV9vYmoudGFnLnN0YXJ0c3dpdGgoJ3t9PHt9Jy5mb3JtYXQoc2VsZi50ZW1wbGF0ZSwgc2Vs Zi50YXJnMSkpOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBGaWx0ZXIgZGlkbid0IG1h dGNoLgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAg ICAgICBlbGlmIG5vdCB0eXBlX29iai50YWcuc3RhcnRzd2l0aChzZWxmLnRlbXBsYXRlKToK ICAgICAgICAgICAgICAgICAgICAgIyBGaWx0ZXIgZGlkbid0IG1hdGNoLgogICAgICAgICAg ICAgICAgICAgICByZXR1cm4gTm9uZQorCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAg ICAgICAgICAgICAgICBzZWxmLnR5cGVfb2JqID0gZ2RiLmxvb2t1cF90eXBlKHNlbGYubmFt ZSkuc3RyaXBfdHlwZWRlZnMoKQogICAgICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAg ICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgaWYgc2VsZi50eXBlX29iaiA9PSB0eXBl X29iajoKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RyaXBfaW5saW5lX25hbWVzcGFjZXMo c2VsZi5uYW1lKQogCiAgICAgICAgICAgICBpZiBzZWxmLnR5cGVfb2JqIGlzIE5vbmU6CiAg ICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgICAgICAgICAgIyBXb3JrYXJvdW5k IGFtYmlndW91cyB0eXBlZGVmcyBtYXRjaGluZyBib3RoIHN0ZDo6IGFuZCBzdGQ6Ol9fY3h4 MTE6OiBzeW1ib2xzLgotICAgICAgICAgICAgYW1iaWd1b3VzID0gRmFsc2UKLSAgICAgICAg ICAgIGZvciBjaCBpbiAoJycsICd3JywgJ3U4JywgJ3UxNicsICd1MzInKToKLSAgICAgICAg ICAgICAgICBpZiBzZWxmLm5hbWUgPT0gJ3N0ZDo6JyArIGNoICsgJ3N0cmluZyc6Ci0gICAg ICAgICAgICAgICAgICAgIGFtYmlndW91cyA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAg YnJlYWsKKyAgICAgICAgICAgIGlmIGdkYi50eXBlcy5nZXRfYmFzaWNfdHlwZShzZWxmLnR5 cGVfb2JqKSA9PSBnZGIudHlwZXMuZ2V0X2Jhc2ljX3R5cGUodHlwZV9vYmopOgorICAgICAg ICAgICAgICAgIHJldHVybiBzdHJpcF9pbmxpbmVfbmFtZXNwYWNlcyhzZWxmLm5hbWUpCiAK LSAgICAgICAgICAgIGlmIGFtYmlndW91czoKKyAgICAgICAgICAgICMgV29ya2Fyb3VuZCBh bWJpZ3VvdXMgdHlwZWRlZnMgbWF0Y2hpbmcgYm90aCBzdGQ6OiBhbmQgc3RkOjpfX2N4eDEx Ojogc3ltYm9scy4KKyAgICAgICAgICAgIGlmIHNlbGYudGVtcGxhdGUuc3BsaXQoJzo6Jylb LTFdID09ICdiYXNpY19zdHJpbmcnOgogICAgICAgICAgICAgICAgIGlmIHNlbGYudHlwZV9v YmoudGFnLnJlcGxhY2UoJ19fY3h4MTE6OicsICcnKSA9PSB0eXBlX29iai50YWcucmVwbGFj ZSgnX19jeHgxMTo6JywgJycpOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RyaXBf aW5saW5lX25hbWVzcGFjZXMoc2VsZi5uYW1lKQogCkBAIC0yMTAzLDE0ICsyMTEzLDE0IEBA IGNsYXNzIEZpbHRlcmluZ1R5cGVQcmludGVyKG9iamVjdCk6CiAKICAgICBkZWYgaW5zdGFu dGlhdGUoc2VsZik6CiAgICAgICAgICJSZXR1cm4gYSByZWNvZ25pemVyIG9iamVjdCBmb3Ig dGhpcyB0eXBlIHByaW50ZXIuIgotICAgICAgICByZXR1cm4gc2VsZi5fcmVjb2duaXplcihz ZWxmLm1hdGNoLCBzZWxmLm5hbWUpCisgICAgICAgIHJldHVybiBzZWxmLl9yZWNvZ25pemVy KHNlbGYudGVtcGxhdGUsIHNlbGYubmFtZSwgc2VsZi50YXJnMSkKIAotZGVmIGFkZF9vbmVf dHlwZV9wcmludGVyKG9iaiwgbWF0Y2gsIG5hbWUpOgotICAgIHByaW50ZXIgPSBGaWx0ZXJp bmdUeXBlUHJpbnRlcignc3RkOjonICsgbWF0Y2gsICdzdGQ6OicgKyBuYW1lKQorZGVmIGFk ZF9vbmVfdHlwZV9wcmludGVyKG9iaiwgdGVtcGxhdGUsIG5hbWUsIHRhcmcxID0gTm9uZSk6 CisgICAgcHJpbnRlciA9IEZpbHRlcmluZ1R5cGVQcmludGVyKCdzdGQ6OicgKyB0ZW1wbGF0 ZSwgJ3N0ZDo6JyArIG5hbWUsIHRhcmcxKQogICAgIGdkYi50eXBlcy5yZWdpc3Rlcl90eXBl X3ByaW50ZXIob2JqLCBwcmludGVyKQotICAgIGlmIF92ZXJzaW9uZWRfbmFtZXNwYWNlIGFu ZCBub3QgJ19fY3h4MTEnIGluIG1hdGNoOgorICAgIGlmIF92ZXJzaW9uZWRfbmFtZXNwYWNl IGFuZCBub3QgJ19fY3h4MTEnIGluIHRlbXBsYXRlOgogICAgICAgICBucyA9ICdzdGQ6Oicg KyBfdmVyc2lvbmVkX25hbWVzcGFjZQotICAgICAgICBwcmludGVyID0gRmlsdGVyaW5nVHlw ZVByaW50ZXIobnMgKyBtYXRjaCwgbnMgKyBuYW1lKQorICAgICAgICBwcmludGVyID0gRmls dGVyaW5nVHlwZVByaW50ZXIobnMgKyB0ZW1wbGF0ZSwgbnMgKyBuYW1lLCB0YXJnMSkKICAg ICAgICAgZ2RiLnR5cGVzLnJlZ2lzdGVyX3R5cGVfcHJpbnRlcihvYmosIHByaW50ZXIpCiAK IGRlZiByZWdpc3Rlcl90eXBlX3ByaW50ZXJzKG9iaik6CkBAIC0yMTIwLDI5ICsyMTMwLDMz IEBAIGRlZiByZWdpc3Rlcl90eXBlX3ByaW50ZXJzKG9iaik6CiAgICAgICAgIHJldHVybgog CiAgICAgIyBBZGQgdHlwZSBwcmludGVycyBmb3IgdHlwZWRlZnMgc3RkOjpzdHJpbmcsIHN0 ZDo6d3N0cmluZyBldGMuCi0gICAgZm9yIGNoIGluICgnJywgJ3cnLCAndTgnLCAndTE2Jywg J3UzMicpOgotICAgICAgICBhZGRfb25lX3R5cGVfcHJpbnRlcihvYmosICdiYXNpY19zdHJp bmcnLCBjaCArICdzdHJpbmcnKQotICAgICAgICBhZGRfb25lX3R5cGVfcHJpbnRlcihvYmos ICdfX2N4eDExOjpiYXNpY19zdHJpbmcnLCBjaCArICdzdHJpbmcnKQorICAgIGZvciBjaCBp biAoKCcnLCAnY2hhcicpLAorICAgICAgICAgICAgICAgKCd3JywgJ3djaGFyX3QnKSwKKyAg ICAgICAgICAgICAgICgndTgnLCAnY2hhcjhfdCcpLAorICAgICAgICAgICAgICAgKCd1MTYn LCAnY2hhcjE2X3QnKSwKKyAgICAgICAgICAgICAgICgndTMyJywgJ2NoYXIzMl90JykpOgor ICAgICAgICBhZGRfb25lX3R5cGVfcHJpbnRlcihvYmosICdiYXNpY19zdHJpbmcnLCBjaFsw XSArICdzdHJpbmcnLCBjaFsxXSkKKyAgICAgICAgYWRkX29uZV90eXBlX3ByaW50ZXIob2Jq LCAnX19jeHgxMTo6YmFzaWNfc3RyaW5nJywgY2hbMF0gKyAnc3RyaW5nJywgY2hbMV0pCiAg ICAgICAgICMgVHlwZWRlZnMgZm9yIF9fY3h4MTE6OmJhc2ljX3N0cmluZyB1c2VkIHRvIGJl IGluIG5hbWVzcGFjZSBfX2N4eDExOgogICAgICAgICBhZGRfb25lX3R5cGVfcHJpbnRlcihv YmosICdfX2N4eDExOjpiYXNpY19zdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnX19jeHgxMTo6JyArIGNoICsgJ3N0cmluZycpCi0gICAgICAgIGFkZF9vbmVfdHlw ZV9wcmludGVyKG9iaiwgJ2Jhc2ljX3N0cmluZ192aWV3JywgY2ggKyAnc3RyaW5nX3ZpZXcn KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19jeHgxMTo6JyArIGNoWzBdICsg J3N0cmluZycsIGNoWzFdKQorICAgICAgICBhZGRfb25lX3R5cGVfcHJpbnRlcihvYmosICdi YXNpY19zdHJpbmdfdmlldycsIGNoWzBdICsgJ3N0cmluZ192aWV3JywgY2hbMV0pCiAKICAg ICAjIEFkZCB0eXBlIHByaW50ZXJzIGZvciB0eXBlZGVmcyBzdGQ6OmlzdHJlYW0sIHN0ZDo6 d2lzdHJlYW0gZXRjLgotICAgIGZvciBjaCBpbiAoJycsICd3Jyk6CisgICAgZm9yIGNoIGlu ICgoJycsICdjaGFyJyksICgndycsICd3Y2hhcl90JykpOgogICAgICAgICBmb3IgeCBpbiAo J2lvcycsICdzdHJlYW1idWYnLCAnaXN0cmVhbScsICdvc3RyZWFtJywgJ2lvc3RyZWFtJywK ICAgICAgICAgICAgICAgICAgICdmaWxlYnVmJywgJ2lmc3RyZWFtJywgJ29mc3RyZWFtJywg J2ZzdHJlYW0nKToKLSAgICAgICAgICAgIGFkZF9vbmVfdHlwZV9wcmludGVyKG9iaiwgJ2Jh c2ljXycgKyB4LCBjaCArIHgpCisgICAgICAgICAgICBhZGRfb25lX3R5cGVfcHJpbnRlcihv YmosICdiYXNpY18nICsgeCwgY2hbMF0gKyB4LCBjaFsxXSkKICAgICAgICAgZm9yIHggaW4g KCdzdHJpbmdidWYnLCAnaXN0cmluZ3N0cmVhbScsICdvc3RyaW5nc3RyZWFtJywKICAgICAg ICAgICAgICAgICAgICdzdHJpbmdzdHJlYW0nKToKLSAgICAgICAgICAgIGFkZF9vbmVfdHlw ZV9wcmludGVyKG9iaiwgJ2Jhc2ljXycgKyB4LCBjaCArIHgpCisgICAgICAgICAgICBhZGRf b25lX3R5cGVfcHJpbnRlcihvYmosICdiYXNpY18nICsgeCwgY2hbMF0gKyB4LCBjaFsxXSkK ICAgICAgICAgICAgICMgPHNzdHJlYW0+IHR5cGVzIGFyZSBpbiBfX2N4eDExIG5hbWVzcGFj ZSwgYnV0IHR5cGVkZWZzIGFyZW4ndDoKLSAgICAgICAgICAgIGFkZF9vbmVfdHlwZV9wcmlu dGVyKG9iaiwgJ19fY3h4MTE6OmJhc2ljXycgKyB4LCBjaCArIHgpCisgICAgICAgICAgICBh ZGRfb25lX3R5cGVfcHJpbnRlcihvYmosICdfX2N4eDExOjpiYXNpY18nICsgeCwgY2hbMF0g KyB4LCBjaFsxXSkKIAogICAgICMgQWRkIHR5cGUgcHJpbnRlcnMgZm9yIHR5cGVkZWZzIHJl Z2V4LCB3cmVnZXgsIGNtYXRjaCwgd2NtYXRjaCBldGMuCiAgICAgZm9yIGFiaSBpbiAoJycs ICdfX2N4eDExOjonKToKLSAgICAgICAgZm9yIGNoIGluICgnJywgJ3cnKToKLSAgICAgICAg ICAgIGFkZF9vbmVfdHlwZV9wcmludGVyKG9iaiwgYWJpICsgJ2Jhc2ljX3JlZ2V4JywgYWJp ICsgY2ggKyAncmVnZXgnKQorICAgICAgICBmb3IgY2ggaW4gKCgnJywgJ2NoYXInKSwgKCd3 JywgJ3djaGFyX3QnKSk6CisgICAgICAgICAgICBhZGRfb25lX3R5cGVfcHJpbnRlcihvYmos IGFiaSArICdiYXNpY19yZWdleCcsIGFiaSArIGNoWzBdICsgJ3JlZ2V4JywgY2hbMV0pCiAg ICAgICAgIGZvciBjaCBpbiAoJ2MnLCAncycsICd3YycsICd3cycpOgogICAgICAgICAgICAg YWRkX29uZV90eXBlX3ByaW50ZXIob2JqLCBhYmkgKyAnbWF0Y2hfcmVzdWx0cycsIGFiaSAr IGNoICsgJ21hdGNoJykKICAgICAgICAgICAgIGZvciB4IGluICgnc3ViX21hdGNoJywgJ3Jl Z2V4X2l0ZXJhdG9yJywgJ3JlZ2V4X3Rva2VuX2l0ZXJhdG9yJyk6CkBAIC0yMTcwLDkgKzIx ODQsMTMgQEAgZGVmIHJlZ2lzdGVyX3R5cGVfcHJpbnRlcnMob2JqKToKIAogICAgICMgQWRk IHR5cGUgcHJpbnRlcnMgZm9yIGV4cGVyaW1lbnRhbDo6YmFzaWNfc3RyaW5nX3ZpZXcgdHlw ZWRlZnMuCiAgICAgbnMgPSAnZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjE6OicKLSAg ICBmb3IgY2ggaW4gKCcnLCAndycsICd1OCcsICd1MTYnLCAndTMyJyk6CisgICAgZm9yIGNo IGluICgoJycsICdjaGFyJyksCisgICAgICAgICAgICAgICAoJ3cnLCAnd2NoYXJfdCcpLAor ICAgICAgICAgICAgICAgKCd1OCcsICdjaGFyOF90JyksCisgICAgICAgICAgICAgICAoJ3Ux NicsICdjaGFyMTZfdCcpLAorICAgICAgICAgICAgICAgKCd1MzInLCAnY2hhcjMyX3QnKSk6 CiAgICAgICAgIGFkZF9vbmVfdHlwZV9wcmludGVyKG9iaiwgbnMgKyAnYmFzaWNfc3RyaW5n X3ZpZXcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBucyArIGNoICsgJ3N0cmlu Z192aWV3JykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnMgKyBjaFswXSArICdz dHJpbmdfdmlldycsIGNoWzFdKQogCiAgICAgIyBEbyBub3Qgc2hvdyBkZWZhdWx0ZWQgdGVt cGxhdGUgYXJndW1lbnRzIGluIGNsYXNzIHRlbXBsYXRlcy4KICAgICBhZGRfb25lX3RlbXBs YXRlX3R5cGVfcHJpbnRlcihvYmosICd1bmlxdWVfcHRyJywK --------------vMEfi5azECNb5lCbNGlMVvcA--