From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS4713 221.184.0.0/13 X-Spam-Status: No, score=-3.5 required=3.0 tests=AWL,BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI,SPF_HELO_NONE, T_SCC_BODY_TEXT_LINE,T_SPF_PERMERROR,UNPARSEABLE_RELAY,URIBL_GREY shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by dcvr.yhbt.net (Postfix) with ESMTP id 0FD391F54E for ; Thu, 18 Aug 2022 04:50:59 +0000 (UTC) Authentication-Results: dcvr.yhbt.net; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=sendgrid.me header.i=@sendgrid.me header.b="RDyPKlQK"; dkim-atps=neutral Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 3F7221216E8; Thu, 18 Aug 2022 13:50:56 +0900 (JST) Received: from xtrwkhkc.outbound-mail.sendgrid.net (xtrwkhkc.outbound-mail.sendgrid.net [167.89.16.28]) by neon.ruby-lang.org (Postfix) with ESMTPS id 06C621216D8 for ; Thu, 18 Aug 2022 13:50:52 +0900 (JST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sendgrid.me; h=from:references:subject:mime-version:content-type: content-transfer-encoding:list-id:to:cc; s=smtpapi; bh=8sjusY7MMhzcd18hMDDfiN3dh3SMsUuyirUM2CmFpHw=; b=RDyPKlQK9Uf/K/wPBbHu9kcJ0HFsnnxkAJnl35/5VseBsBF98vc16X8zbwhCkMlmDMuY Uigy5kR6WvkkMz9PMPKkrc7AyxVgnHnP8SOSBuxZ7HO8lbM2YlcZjRAYd+ulZpRTBTBXXO EkHu3+CEZGw9lhIzDVPtxAkpR2wnTKhEM= Received: by filterdrecv-7787b7f4d9-x9hz2 with SMTP id filterdrecv-7787b7f4d9-x9hz2-1-62FDC526-9 2022-08-18 04:50:46.321853071 +0000 UTC m=+2364276.813404669 Received: from herokuapp.com (unknown) by geopod-ismtpd-3-2 (SG) with ESMTP id t8djXoOrQjm6Y6cq28lg6g for ; Thu, 18 Aug 2022 04:50:46.308 +0000 (UTC) Date: Thu, 18 Aug 2022 04:50:46 +0000 (UTC) From: "naruse (Yui NARUSE)" Message-ID: References: Mime-Version: 1.0 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Feature X-Redmine-Issue-Id: 18776 X-Redmine-Issue-Author: jemmai X-Redmine-Sender: naruse X-Mailer: Redmine X-Redmine-Host: bugs.ruby-lang.org X-Redmine-Site: Ruby Issue Tracking System X-Auto-Response-Suppress: All Auto-Submitted: auto-generated X-Redmine-MailingListIntegration-Message-Ids: 85931 X-SG-EID: =?us-ascii?Q?0oAA3NPtKrfodLYVvfdBwzZ6z1kAf1KA3l5gJf+iOYqA7G=2FRSBGS1ttyILG0xo?= =?us-ascii?Q?Ig++j=2Ftvl5ZAAcrN2SUEjeiHQ4dQypFjruuF16r?= =?us-ascii?Q?S3dIQsPYbRALdYOTVNFayWL9PJqgUNX4Q3XlTaA?= =?us-ascii?Q?BSS6hfxJ0Fd=2FKNwzyBtdatLv45DT6tvlmH7K61E?= =?us-ascii?Q?emDDFP0p+q5=2FLwotbmuevQl863VjhXn3MoIwP2i?= =?us-ascii?Q?uZoUUM2m6OgRkD7rSEloVYKZy=2FFy7epyVx61Nq7?= =?us-ascii?Q?CMes4F3DsiqrQVd21fiag=3D=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 109523 Subject: [ruby-core:109523] [Ruby master Feature#18776] Object Shapes X-BeenThere: ruby-core@ruby-lang.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Ruby developers List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Reply-To: Ruby developers Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ruby-core-bounces@ruby-lang.org Sender: "ruby-core" SXNzdWUgIzE4Nzc2IGhhcyBiZWVuIHVwZGF0ZWQgYnkgbmFydXNlIChZdWkgTkFSVVNFKS4KCgpB Ym91dCB0aGUgZ2VuZXJhbCBwcmluY2lwbGUsIHNpbmNlIFJ1YnkgaXMgdXNlZCBvbiBtYW55IHBy b2R1Y3Rpb24gZW52aXJvbm1lbnQgYnkgbWFueSBjb21wYW5pZXMsIG5vbi1vcHRpb25hbCBmZWF0 dXJlIG5lZWRzIHRvIGJlIHByb2R1Y3Rpb24gcmVhZHkuCgpJdCBtZWFucyBpdCBzaG91bGRuJ3Qg aGF2ZSBhIGRvd25zaWRlIGluY2x1ZGluZyBDUFUgcGVyZm9ybWFuY2UsIE1lbW9yeSBjb25zdW1w dGlvbiwgYW5kIHNvIG9uLiBTaW5jZSBZSklUIGlzIGFscmVhZHkgY29uY2VybmVkIGFzIGEgcHJv ZHVjdGlvbiBmZWF0dXJlLCBpdCdzIGFsc28gYSBkb3duc2lkZSBpZiBpdCBjYXVzZSBzbG93IGRv d24gb2YgWUpJVC4gQWxzbyBub3RlIHRoYXQgaW5jcmVhc2luZyBjb2RlIGNvbXBsZXhpdHkgaXMg YWxzbyBhIGRvd25zaWRlLgoKVGhvdWdoIGEgY3JpdGljYWwgZG93bnNpZGUgbmVlZHMgdG8gYmUg Zml4ZWQsIGEgc21hbGwgZG93bnNpZGUgY2FuIGJlIGFjY2VwdGVkIGlmIGl0IGhhcyBhIGxhcmdl ciB1cHNpZGUuIEZvciBleGFtcGxlIGNvZGUgY29tcGxleGl0eSwgaXQgaXMgYWNjZXB0ZWQgd2hp bGUgaXQgaW50cm9kdWNlcyBhIGVub3VnaCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCBjb21wYXJl ZCB0byB0aGUgY29tcGxleGl0eS4KCkFzIGZhciBhcyBJIHVuZGVyc3RhbmQsIHRoZSBPYmplY3Qg U2hhcGUgaXMgaW50cm9kdWNlIHRvIGltcHJvdmUgcGVyZm9ybWFuY2UgYW5kIGl0J3MgY29tcGxl eC4gVGhlcmVmb3JlIGl0IG5lZWRzIHRvIHNob3cgc29tZSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVu dCBjb21wYXJlZCB0byB0aGUgY29kZSBjb21wbGV4aXR5IGJlZm9yZSB3ZSBtZXJnZSBpdCB0byBy dWJ5LW1hc3Rlci4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRmVh dHVyZSAjMTg3NzY6IE9iamVjdCBTaGFwZXMKaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNz dWVzLzE4Nzc2I2NoYW5nZS05ODY5MgoKKiBBdXRob3I6IGplbW1haSAoSmVtbWEgSXNzcm9mZikK KiBTdGF0dXM6IE9wZW4KKiBQcmlvcml0eTogTm9ybWFsCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KIyBPYmplY3QgU2hhcGVzIGltcGxlbWVudGF0aW9uCgpBYXJvbiBQ YXR0ZXJzb24sIEVpbGVlbiBVY2hpdGVsbGUgYW5kIEkgaGF2ZSBiZWVuIHdvcmtpbmcgb24gYW4g aW1wbGVtZW50YXRpb24gb2YgT2JqZWN0IFNoYXBlcyBmb3IgUnVieS4gIFdlIGFyZSBmaWxpbmcg YSB0aWNrZXQgdG8gc2hhcmUgd2hhdCB3ZSd2ZSBiZWVuIGRvaW5nLCBhcyB3ZWxsIGFzIGdldCBm ZWVkYmFjayBvbiB0aGUgcHJvamVjdCBpbiBpdHMgY3VycmVudCBzdGF0ZS4KCldlIGhvcGUgdG8g ZXZlbnR1YWxseSBzdWJtaXQgdGhlIGZpbmFsaXplZCBwcm9qZWN0IHVwc3RyZWFtIGFmdGVyIHZl cmlmeWluZyBlZmZpY2FjeS4KCiMjIFdoYXQgYXJlIE9iamVjdCBTaGFwZXM/CgpPYmplY3Qgc2hh cGVzIGFyZSBhIHRlY2huaXF1ZSBmb3IgcmVwcmVzZW50aW5nIHByb3BlcnRpZXMgb2YgYW4gb2Jq ZWN0LiBPdGhlciBsYW5ndWFnZSBpbXBsZW1lbnRhdGlvbnMsIGluY2x1ZGluZyBbVHJ1ZmZsZVJ1 YnldKGh0dHBzOi8vZ2l0aHViLmNvbS9vcmFjbGUvdHJ1ZmZsZXJ1YnkpIGFuZCBbVjhdKGh0dHBz Oi8vdjguZGV2LyksIHVzZSB0aGlzIHRlY2huaXF1ZS4gQ2hyaXMgU2VhdG9uLCB0aGUgY3JlYXRv ciBvZiBUcnVmZmxlUnVieSwgZGlzY3Vzc2VkIG9iamVjdCBzaGFwZXMgaW4gaGlzIFtSdWJ5S2Fp Z2kgMjAyMSBLZXlub3RlXShodHRwczovL3J1YnlrYWlnaS5vcmcvMjAyMS10YWtlb3V0L3ByZXNl bnRhdGlvbnMvY2hyaXNnc2VhdG9uLmh0bWwpIGFuZCBNYXhpbWUgQ2hldmFsaWVyLUJvaXN2ZXJ0 IGRpc2N1c3NlZCB0aGUgaW1wbGljYXRpb25zIGZvciBZSklUIGluIHRoZSBsYXR0ZXIgcGFydCBv ZiBbaGVyIHRhbGsgYXQgUnVieUthaWdpIDIwMjFdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dh dGNoP3Y9UEJWTGYzeWZNczgmdD0xMTAwcykuIFRoZSBvcmlnaW5hbCBpZGVhIG9mIG9iamVjdCBz aGFwZXMgW29yaWdpbmF0ZXMgZnJvbSB0aGUgU2VsZiBsYW5ndWFnZV0oaHR0cHM6Ly9iaWJsaW9n cmFwaHkuc2VsZmxhbmd1YWdlLm9yZy9fc3RhdGljL2ltcGxlbWVudGF0aW9uLnBkZiksIHdoaWNo IGlzIGNvbnNpZGVyZWQgYSBkaXJlY3QgZGVzY2VuZGFudCBvZiBTbWFsbHRhbGsuCgpFYWNoIHNo YXBlIHJlcHJlc2VudHMgYSBzcGVjaWZpYyBzZXQgb2YgYXR0cmlidXRlcyAoaW5zdGFuY2UgdmFy aWFibGVzIGFuZCBvdGhlciBwcm9wZXJ0aWVzKSBhbmQgdGhlaXIgdmFsdWVzLiBJbiBvdXIgaW1w bGVtZW50YXRpb24sIGFsbCBvYmplY3RzIGhhdmUgYSBzaGFwZS4gVGhlIHNoYXBlcyBhcmUgbm9k ZXMgaW4gYSB0cmVlIGRhdGEgc3RydWN0dXJlLiBFdmVyeSBlZGdlIGluIHRoZSB0cmVlIHJlcHJl c2VudHMgYW4gYXR0cmlidXRlIHRyYW5zaXRpb24uCgpNb3JlIHNwZWNpZmljYWxseSwgc2V0dGlu ZyBhbiBpbnN0YW5jZSB2YXJpYWJsZSBvbiBhbiBpbnN0YW5jZSBvZiBhbiBvYmplY3QgY3JlYXRl cyBhbiBvdXRnb2luZyBlZGdlIGZyb20gdGhlIGluc3RhbmNlJ3MgY3VycmVudCBzaGFwZS4gVGhp cyBpcyBhIHRyYW5zaXRpb24gZnJvbSBvbmUgc2hhcGUgdG8gYW5vdGhlci4gVGhlIGVkZ2UgcmVw cmVzZW50cyB0aGUgaW5zdGFuY2UgdmFyaWFibGUgdGhhdCBpcyBzZXQuCgpGb3IgZXhhbXBsZToK CmBgYHJ1YnkKY2xhc3MgRm9vCiAgZGVmIGluaXRpYWxpemUKICAgICMgQ3VycmVudGx5IHRoaXMg aW5zdGFuY2UgaXMgdGhlIHJvb3Qgc2hhcGUgKElEIDApCiAgICBAYSA9IDEgIyBUcmFuc2l0aW9u cyB0byBhIG5ldyBzaGFwZSB2aWEgZWRnZSBAYSAoSUQgMSkKICAgIEBiID0gMiAjIFRyYW5zaXRp b25zIHRvIGEgbmV3IHNoYXBlIHZpYSBlZGdlIEBiIChJRCAyKQogIGVuZAplbmQKCmZvbyA9IEZv by5uZXcKYGBgCgpXaGVuIGBGb29gIGlzIGludGlhbGl6ZWQsIGl0cyBzaGFwZSBpcyB0aGUgcm9v dCBzaGFwZSB3aXRoIElEIDAuICBUaGUgcm9vdCBzaGFwZSByZXByZXNlbnRzIGFuIGVtcHR5IG9i amVjdCB3aXRoIG5vIGluc3RhbmNlIHZhcmlhYmxlcy4gRWFjaCB0aW1lIGFuIGluc3RhbmNlIHZh cmlhYmxlIGlzIHNldCBvbiBgZm9vYCwgdGhlIHNoYXBlIG9mIHRoZSBpbnN0YW5jZSBjaGFuZ2Vz LiBJdCBmaXJzdCB0cmFuc2l0aW9ucyB3aXRoIGBAYWAgdG8gYSBzaGFwZSB3aXRoIElEIDEsIGFu ZCB0aGVuIHRyYW5zaXRpb25zIHdpdGggYEBiYCB0byBhIHNoYXBlIHdpdGggSUQgMi4gSWYgYEBh YCBpcyB0aGVuIHNldCB0byBhIGRpZmZlcmVudCB2YWx1ZSwgaXRzIHNoYXBlIHdpbGwgcmVtYWlu IHRoZSBzaGFwZSB3aXRoIElEIDIsIHNpbmNlIHRoaXMgc2hhcGUgYWxyZWFkeSBpbmNsdWRlcyB0 aGUgaW5zdGFuY2UgdmFyaWFibGUgYEBhYC4gIAoKIVtdKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0 aHVidXNlcmNvbnRlbnQuY29tLzE5ODg1NjAvMTY3OTE4MzYwLTBhNmM5MWFhLTI1ODctNDhjYi04 ZmYyLTdmM2E5NTgzMjg4ZS5zdmcpCgpUaGVyZSBpcyBvbmUgZ2xvYmFsIHNoYXBlIHRyZWUgYW5k IG9iamVjdHMgd2hpY2ggdW5kZXJnbyB0aGUgc2FtZSBzaGFwZSB0cmFuc2l0aW9ucyBpbiB0aGUg c2FtZSBvcmRlciB3aWxsIGVuZCB1cCB3aXRoIHRoZSBzYW1lIGZpbmFsIHNoYXBlLgoKRm9yIGlu c3RhbmNlLCBpZiB3ZSBoYXZlIGEgY2xhc3MgYEJhcmAgZGVmaW5lZCBhcyBmb2xsb3dzLCB0aGUg Zmlyc3QgdHJhbnNpdGlvbiBvbiBgQmFyLm5ld2AgdGhyb3VnaCB0aGUgaW5zdGFuY2UgdmFyaWFi bGUgYEBhYCB3aWxsIGJlIHRoZSBzYW1lIGFzIGBGb28ubmV3YCdzIGZpcnN0IHRyYW5zaXRpb246 CgpgYGBydWJ5CmNsYXNzIEZvbwogIGRlZiBpbml0aWFsaXplCiAgICAjIEN1cnJlbnRseSB0aGlz IGluc3RhbmNlIGlzIHRoZSByb290IHNoYXBlIChJRCAwKQogICAgQGEgPSAxICMgVHJhbnNpdGlv bnMgdG8gYSBuZXcgc2hhcGUgdmlhIGVkZ2UgQGEgKElEIDEpCiAgICBAYiA9IDIgIyBUcmFuc2l0 aW9ucyB0byBhIG5ldyBzaGFwZSB2aWEgZWRnZSBAYiAoSUQgMikKICBlbmQKZW5kCgpjbGFzcyBC YXIKICBkZWYgaW5pdGlhbGl6ZQogICAgIyBDdXJyZW50bHkgdGhpcyBpbnN0YW5jZSBpcyB0aGUg cm9vdCBzaGFwZSAoSUQgMCkKICAgIEBhID0gMSAjIFRyYW5zaXRpb25zIHRvIHNoYXBlIGRlZmlu ZWQgZWFybGllciB2aWEgZWRnZSBAYSAoSUQgMSkKICAgIEBjID0gMSAjIFRyYW5zaXRpb25zIHRv IGEgbmV3IHNoYXBlIHZpYSBlZGdlIEBjIChJRCAzKQogICAgQGIgPSAxICMgVHJhbnNpdGlvbnMg dG8gYSBuZXcgc2hhcGUgdmlhIGVkZ2UgQGIgKElEIDQpCiAgZW5kCmVuZAoKZm9vID0gRm9vLm5l dyAjIGJsdWUgaW4gdGhlIGRpYWdyYW0KYmFyID0gQmFyLm5ldyAjIHJlZCBpbiB0aGUgZGlhZ3Jh bQpgYGAKCkluIHRoZSBkaWFncmFtIGJlbG93LCBwdXJwbGUgcmVwcmVzZW50cyBzaGFyZWQgdHJh bnNpdGlvbnMsIGJsdWUgcmVwcmVzZW50cyB0cmFuc2l0aW9ucyBmb3Igb25seSBgZm9vYCwgYW5k IHJlZCByZXByZXNlbnRzIHRyYW5zaXRpb25zIGZvciBvbmx5IGBiYXJgLgoKIVtdKGh0dHBzOi8v dXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzE5ODg1NjAvMTY3OTE4ODk5LWYxYTZm MzQ0LWFlNWUtNGRjMC1iMTdhLWZiMTU2ZDFkNTUwZi5zdmcpCgojIyMgQ2FjaGUgc3RydWN0dXJl CgpGb3IgaW5zdGFuY2UgdmFyaWFibGUgd3JpdGVycywgdGhlIGN1cnJlbnQgc2hhcGUgSUQsIHRo ZSBzaGFwZSBJRCB0aGF0IGl2YXIgd3JpdGUgd291bGQgdHJhbnNpdGlvbiB0byBhbmQgaW5zdGFu Y2UgdmFyaWFibGUgaW5kZXggYXJlIGFsbCBzdG9yZWQgaW4gdGhlIGlubGluZSBjYWNoZS4gVGhl IHNoYXBlIElEIGlzIHRoZSBrZXkgdG8gdGhlIGNhY2hlLgoKRm9yIGluc3RhbmNlIHZhcmlhYmxl IHJlYWRlcnMsIHRoZSBzaGFwZSBJRCBhbmQgaW5zdGFuY2UgdmFyaWFibGUgaW5kZXggYXJlIHN0 b3JlZCBpbiB0aGUgaW5saW5lIGNhY2hlLiAgQWdhaW4sIHRoZSBzaGFwZSBJRCBpcyB0aGUgY2Fj aGUga2V5LgoKYGBgcnVieQpjbGFzcyBGb28KICBkZWYgaW5pdGlhbGl6ZQogICAgQGEgPSAxICMg SUMgc2hhcGVfaWQ6IDAsIG5leHQgc2hhcGU6IDEsIGl2IGluZGV4IDAKICAgIEBiID0gMSAjIElD IHNoYXBlX2lkOiAxLCBuZXh0IHNoYXBlOiAyLCBpdiBpbmRleCAxCiAgZW5kCiAgICAKICBkZWYg YQogICAgQGEgIyBJQyBzaGFwZV9pZDogMiwgaXYgaW5kZXggMAogIGVuZAplbmQKYGBgCgojIyBS YXRpb25hbGUKCldlIHRoaW5rIHRoYXQgYW4gb2JqZWN0IHNoYXBlIGltcGxlbWVudGF0aW9uIHdp bGwgc2ltcGxpZnkgY2FjaGUgY2hlY2tzLCBpbmNyZWFzZSBpbmxpbmUgY2FjaGUgaGl0cywgZGVj cmVhc2UgcnVudGltZSBjaGVja3MsIGFuZCBlbmFibGUgb3RoZXIgcG90ZW50aWFsIGZ1dHVyZSBv cHRpbWl6YXRpb25zLiBUaGVzZSBhcmUgYWxsIGV4cGxhaW5lZCBiZWxvdy4gCgojIyMgU2ltcGxp ZnkgY2FjaGluZwoKVGhlIGN1cnJlbnQgY2FjaGUgaW1wbGVtZW50YXRpb24gZGVwZW5kcyBvbiB0 aGUgY2xhc3Mgb2YgdGhlIHJlY2VpdmVyLiBTaW5jZSB0aGUgYWRkcmVzcyBvZiB0aGUgY2xhc3Mg Y2FuIGJlIHJldXNlZCwgdGhlIGN1cnJlbnQgY2FjaGUgaW1wbGVtZW50YXRpb24gYWxzbyBkZXBl bmRzIG9uIGFuIGluY3JlbWVudGluZyBzZXJpYWwgbnVtYmVyIHNldCBvbiB0aGUgY2xhc3MgKHRo ZSBjbGFzcyBzZXJpYWwpLiAgVGhlIHNoYXBlIGltcGxlbWVudGF0aW9uIGhhcyBubyBzdWNoIGRl cGVuZGVuY3kuIEl0IG9ubHkgcmVxdWlyZXMgY2hlY2tpbmcgdGhlIHNoYXBlIElEIHRvIGRldGVy bWluZSBpZiB0aGUgY2FjaGUgaXMgdmFsaWQuCgojIyMgQ2FjaGUgaGl0cwoKT2JqZWN0cyB0aGF0 IHNldCBwcm9wZXJ0aWVzIGluIHRoZSBzYW1lIG9yZGVyIGNhbiBzaGFyZSBzaGFwZXMuICBGb3Ig ZXhhbXBsZToKCmBgYHJ1YnkKY2xhc3MgSG9nZQogIGRlZiBpbml0aWFsaXplCiAgICAjIEN1cnJl bnRseSB0aGlzIGluc3RhbmNlIGlzIHRoZSByb290IHNoYXBlIChJRCAwKQogICAgQGEgPSAxICMg VHJhbnNpdGlvbnMgdG8gdGhlIG5leHQgc2hhcGUgdmlhIGVkZ2UgbmFtZWQgQGEKICAgIEBiID0g MiAjIFRyYW5zaXRpb25zIHRvIG5leHQgc2hhcGUgdmlhIGVkZ2UgbmFtZWQgQGIKICBlbmQKZW5k CgpjbGFzcyBGdWdhIDwgSG9nZTsgZW5kCgpob2dlID0gSG9nZS5uZXcKZnVnYSA9IEZ1Z2EubmV3 CmBgYAoKSW4gdGhlIGFib3ZlIGV4YW1wbGUsIHRoZSBpbnN0YW5jZXMgYGhvZ2VgIGFuZCBgZnVn YWAgd2lsbCBzaGFyZSB0aGUgc2FtZSBzaGFwZSBJRC4gIFRoaXMgbWVhbnMgaW5saW5lIGNhY2hl cyBpbiBgaW5pdGlhbGl6ZWAgd2lsbCBoaXQgaW4gYm90aCBjYXNlcy4gIFRoaXMgY29udHJhc3Rz IHdpdGggdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gdGhhdCB1c2VzIHRoZSBjbGFzcyBhcyB0 aGUgY2FjaGUga2V5LiAgSW4gb3RoZXIgd29yZHMsIHdpdGggb2JqZWN0IHNoYXBlcyB0aGUgYWJv dmUgY29kZSB3aWxsIGhpdCBpbmxpbmUgY2FjaGVzIHdoZXJlIHRoZSBjdXJyZW50IGltcGxlbWVu dGF0aW9uIHdpbGwgbWlzcy4KCklmIHBlcmZvcm1hbmNlIHRlc3RpbmcgcmV2ZWFscyB0aGF0IGNh Y2hlIGhpdHMgYXJlICpub3QqIHN1YnN0YW50aWFsbHkgaW1wcm92ZWQsIHRoZW4gd2UgY2FuIHVz ZSBzaGFwZXMgdG8gcmVjbGFpbSBtZW1vcnkgZnJvbSBgUkJhc2ljYC4gV2UgY2FuIGFjY29tcGxp c2ggdGhpcyBieSBlbmNvZGluZyB0aGUgY2xhc3Mgd2l0aGluIHRoZSBzaGFwZSB0cmVlLiBUaGlz IHdpbGwgaGF2ZSBhbiBlcXVpdmFsZW50IGNhY2hlIGhpdCByYXRlIHRvIHRoZSBjdXJyZW50IGlt cGxlbWVudGF0aW9uLiBPbmNlIHRoZSBjbGFzcyBpcyBlbmNvZGVkIHdpdGhpbiB0aGUgc2hhcGUg dHJlZSwgd2UgY2FuIHJlbW92ZSB0aGUgY2xhc3MgcG9pbnRlciBmcm9tIGBSQmFzaWNgIGFuZCBl aXRoZXIgcmVjbGFpbSB0aGF0IG1lbW9yeSBvciBmcmVlIGl0IGZvciBhbm90aGVyIHVzZS4KCiMj IyBEZWNyZWFzZXMgcnVudGltZSBjaGVja2luZwoKV2UgY2FuIGVuY29kZSBhdHRyaWJ1dGVzIHRo YXQgYXJlbid0IGluc3RhbmNlIHZhcmlhYmxlcyBpbnRvIGFuIG9iamVjdCdzIHNoYXBlLiBDdXJy ZW50bHksIHdlIGFsc28gaW5jbHVkZSBmcm96ZW4gd2l0aGluIHRoZSBzaGFwZS4gVGhpcyBtZWFu cyB3ZSBjYW4gbGltaXQgZnJvemVuIGNoZWNrcyB0byBvbmx5IGNhY2hlIG1pc3Nlcy4KCkZvciBl eGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGU6CgpgYGBydWJ5CmNsYXNzIFRvdG8KICBkZWYgc2V0 X2EKICAgIEBhID0gMSAjIGNhY2hlOiBzaGFwZTogMCwgbmV4dCBzaGFwZTogMSwgSVYgaWR4OiAw CiAgZW5kCmVuZAoKdG90byA9IFRvdG8ubmV3ICMgc2hhcGUgMAp0b3RvLnNldF9hICAgICAjIHNo YXBlIDEKCnRvdG8gPSBUb3RvLm5ldyAjIHNoYXBlIDAKdG90by5mcmVlemUgICAgIyBzaGFwZSAy CnRvdG8uc2V0X2EgICAgICMgQ2FjaGUgbWlzcywgRXhjZXB0aW9uIQpgYGAKCiFbXShodHRwczov L3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8xOTg4NTYwLzE2NzkyMDAwMS1jNGU2 MzI2Yi0zYTNjLTQ4M2ItYTc5Ny05ZTAyMzE3NjQ3ZDcuc3ZnKQoKV2l0aG91dCBzaGFwZXMsIGFs bCBpbnN0YW5jZSB2YXJpYWJsZSBzZXRzIHJlcXVpcmUgY2hlY2tpbmcgdGhlIGZyb3plbiBzdGF0 dXMgb2YgdGhlIG9iamVjdC4gV2l0aCBzaGFwZXMsIHdlIG9ubHkgbmVlZCB0byBjaGVjayB0aGUg ZnJvemVuIHN0YXR1cyBvbiBjYWNoZSBtaXNzZXMuCgpXZSBjYW4gYWxzbyBlbGltaW5hdGUgZW1i ZWRkZWQgYW5kIGV4dGVuZGVkIGNoZWNrcyB3aXRoIHRoZSBpbnRyb2R1Y3Rpb24gb2Ygb2JqZWN0 IHNoYXBlcy4gQW55IHBhcnRpY3VsYXIgc2hhcGUgcmVwcmVzZW50cyBhbiBvYmplY3QgdGhhdCBp cyBfZWl0aGVyXyBleHRlbmRlZCBvciBlbWJlZGRlZC4gSklUcyBjYW4gcG9zc2libHkgdGFrZSBh ZHZhbnRhZ2Ugb2YgdGhpcyBmYWN0IGJ5IGdlbmVyYXRpbmcgc3BlY2lhbGl6ZWQgbWFjaGluZSBj b2RlIGJhc2VkIG9uIHRoZSBzaGFwZXMuIAogICAgCiMjIyBDbGFzcyBpbnN0YW5jZSB2YXJpYWJs ZXMgY2FuIGJlIHN0b3JlZCBpbiBhbiBhcnJheQoKQ3VycmVudGx5LCBgVF9DTEFTU2AgYW5kIGBU X01PRFVMRWAgaW5zdGFuY2VzIGNhbm5vdCB1c2UgdGhlIHNhbWUgSVYgaW5kZXggdGFibGUgb3B0 aW1pemF0aW9uIHRoYXQgYFRfT0JKRUNUYCBpbnN0YW5jZXMgdXNlLiAgV2UgdGhpbmsgdGhhdCB0 aGUgb2JqZWN0IHNoYXBlcyB0ZWNobmlxdWUgY2FuIGJlIGxldmVyYWdlZCBieSBjbGFzcyBpbnN0 YW5jZXMgdG8gdXNlIGFycmF5cyBmb3IgY2xhc3MgaW5zdGFuY2UgdmFyaWFibGUgc3RvcmFnZSBh bmQgbWF5IHBvc3NpYmx5IGxlYWQgdG8gYSByZWR1Y3Rpb24gaW4gbWVtb3J5IHVzYWdlICh0aG91 Z2ggd2UgaGF2ZSB5ZXQgdG8gdGVzdCB0aGlzKS4KCiMjIEltcGxlbWVudGF0aW9uIERldGFpbHMK CltIZXJlXShodHRwczovL2dpdGh1Yi5jb20vamVtbWFpc3Nyb2ZmL3J1YnkvY29tbWl0LzRlOTVk MDE2NTRmMjRjZWZmNmM4MzMwY2Y0ZTVjN2RhYzUwNDczOWUpIGlzIGEgbGluayB0byBvdXIgY29k ZSBzbyBmYXIuCgpBcyBtZW50aW9uZWQgZWFybGllciwgc2hhcGUgb2JqZWN0cyBmb3JtIGEgdHJl ZSBkYXRhIHN0cnVjdHVyZS4gIEluIG9yZGVyIHRvIGxvb2sgdXAgdGhlIHNoYXBlIHF1aWNrbHks IHdlIGFsc28gc3RvcmUgdGhlIHNoYXBlcyBpbiBhIHdlYWsgYXJyYXkgdGhhdCBpcyBzdG9yZWQg b24gdGhlIFZNLiAgVGhlIElEIG9mIHRoZSBzaGFwZSBpcyB0aGUgaW5kZXggaW4gdG8gdGhlIGFy cmF5LCBhbmQgdGhlIElEIGlzIHN0b3JlZCBvbiB0aGUgb2JqZWN0LgoKRm9yIGBUX09CSkVDVGAg b2JqZWN0cywgd2Ugc3RvcmUgdGhlIHNoYXBlIElEIGluIHRoZSBvYmplY3QncyBoZWFkZXIuIE9u IDY0IGJpdCBzeXN0ZW1zLCB0aGUgdXBwZXIgMzIgYml0cyBhcmUgdXNlZCBieSBSYWN0b3JzLiAg V2Ugd2FudCBvYmplY3Qgc2hhcGVzIHRvIGJlIGVuYWJsZWQgb24gMzIgYml0IHN5c3RlbXMgYW5k IDY0IGJpdCBzeXN0ZW1zIHNvIHRoYXQgbGltaXRzIHVzIHRvIHRoZSBib3R0b20gMzIgYml0cyBv ZiB0aGUgT2JqZWN0IGhlYWRlci4gIFRoZSB0b3AgMjAgYml0cyBmb3IgYFRfT0JKRUNUYCBvYmpl Y3RzIHdhcyB1bnVzZWQsIHNvIHdlIHVzZWQgdGhlIHRvcCAxNiBiaXRzIGZvciB0aGUgc2hhcGUg aWQuICBXZSBjaG9zZSB0aGUgdG9wIDE2IGJpdHMgYmVjYXVzZSB0aGlzIGFsbG93cyB1cyB0byB1 c2UgYHVpbnQxNl90YCBhbmQgbWFza2luZyB0aGUgaGVhZGVyIGJpdHMgaXMgZWFzaWVyLgoKVGhp cyBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgbGltaXRzIHVzIHRvIH42NWsgc2hhcGVzLiBXZSBtZWFz dXJlZCB0aGUgbnVtYmVyIG9mIHNoYXBlcyB1c2VkIG9uIGEgc2ltcGxlIFtEaXNjb3Vyc2VdKGh0 dHBzOi8vZ2l0aHViLmNvbS9kaXNjb3Vyc2UvZGlzY291cnNlKSBhcHBsaWNhdGlvbiAofjMuNWsp LCBbUmFpbHNCZW5jaF0oaHR0cHM6Ly9naXRodWIuY29tL2swa3VidW4vcmFpbHNiZW5jaCkgKH40 ayksIGFuZCBTaG9waWZ5J3MgbW9ub2xpdGgncyB0ZXN0IHN1aXRlICh+NDBrKS4gQWNjb3JkaW5n bHksIHdlIGRlY2lkZWQgdG8gaW1wbGVtZW50IGdhcmJhZ2UgY29sbGVjdGlvbiBvbiBvYmplY3Qg c2hhcGVzIHNvIHdlIGNhbiByZWN5Y2xlIHNoYXBlIElEcyB3aGljaCBhcmUgbm8gbG9uZ2VyIGlu IHVzZS4gIFdlIGFyZSBjdXJyZW50bHkgd29ya2luZyBvbiBzaGFwZSBHQy4KCkV2ZW4gdGhvdWdo IGl0J3MgdW5saWtlbHksIGl0J3Mgc3RpbGwgcG9zc2libGUgZm9yIGFuIGFwcGxpY2F0aW9uIHRv IHJ1biBvdXQgb2Ygc2hhcGVzLiBPbmNlIGFsbCBzaGFwZSBJRHMgYXJlIGluIHVzZSwgYW55IG9i amVjdHMgdGhhdCBuZWVkIG5ldyBzaGFwZSBJRHMgd2lsbCBuZXZlciBoaXQgb24gaW5saW5lIGNh Y2hlcy4KCiMjIEV2YWx1YXRpb24KCldlIGhhdmUgc28gZmFyIHRlc3RlZCB0aGlzIGJyYW5jaCB3 aXRoIFtEaXNjb3Vyc2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9kaXNjb3Vyc2UvZGlzY291cnNlKSwg W1JhaWxzQmVuY2hdKGh0dHBzOi8vZ2l0aHViLmNvbS9rMGt1YnVuL3JhaWxzYmVuY2gpIGFuZCBT aG9waWZ5J3MgbW9ub2xpdGguIFdlIHBsYW4gdG8gdGVzdCB0aGlzIGJyYW5jaCBtb3JlIGJyb2Fk bHkgYWdhaW5zdCBzZXZlcmFsIG9wZW4gc291cmNlIFJ1YnkgYW5kIFJhaWxzIGFwcGxpY2F0aW9u cy4gCgpCZWZvcmUgd2UgY29uc2lkZXIgdGhpcyBicmFuY2ggdG8gYmUgcmVhZHkgZm9yIGZvcm1h bCByZXZpZXcsIHdlIHdhbnQgdGhlIHJ1bnRpbWUgcGVyZm9ybWFuY2UgYW5kIG1lbW9yeSB1c2Fn ZSBvZiB0aGVzZSBiZW5jaG1hcmtzIHRvIGJlIGVxdWl2YWxlbnQgb3IgYmV0dGVyIHRoYW4gaXQg aXMgY3VycmVudGx5LiBJbiBvdXIgb3BpbmlvbiwgZXZlbiB3aXRoIGVxdWl2YWxlbnQgcnVudGlt ZSBwZXJmb3JtYW5jZSBhbmQgbWVtb3J5IHVzYWdlLCB0aGUgZnV0dXJlIGJlbmVmaXRzIG9mIHRo aXMgYXBwcm9hY2ggbWFrZSB0aGUgY2hhbmdlIHNlZW0gd29ydGh3aGlsZS4KCiMjIEZlZWRiYWNr CgpJZiB5b3UgaGF2ZSBhbnkgZmVlZGJhY2ssIGNvbW1lbnRzLCBvciBxdWVzdGlvbnMsIHBsZWFz ZSBsZXQgdXMga25vdyBhbmQgd2UnbGwgZG8gb3VyIGJlc3QgdG8gYWRkcmVzcyBpdC4gVGhhbmsg eW91IQoKLS0tRmlsZXMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpvYmplY3Qtc2hh cGVzLnBhdGNoICgxODAgS0IpCgoKLS0gCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLwo=