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_MED,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY,URIBL_GREY shortcircuit=no autolearn=no 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 BF5E31F4D7 for ; Fri, 13 May 2022 01:07:10 +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="VDrfqC/6"; dkim-atps=neutral Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 14C3C120ADB; Fri, 13 May 2022 10:07:05 +0900 (JST) Received: from o1678948x4.outbound-mail.sendgrid.net (o1678948x4.outbound-mail.sendgrid.net [167.89.48.4]) by neon.ruby-lang.org (Postfix) with ESMTPS id 4FE4B120ADB for ; Fri, 13 May 2022 10:07:02 +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; s=smtpapi; bh=vtw7JQ/EQuypNLwL+Nb/whAZaVhZ/XDRHak0qA35ACU=; b=VDrfqC/6uFlPMVrHDcRnPob/h/4U9/g+N5wdJFt6W9TWOPGMYaORmUXngrGGouD4PC0g xZdHA4f6anUcSwt0qOh2t1kvQeq1MMO9xGtazzNtSuSYQLCx8f+8I0nGCp51bILLEjpWor iPW48SDDNIQRGxNMLyuTytuWCnjhlCUfI= Received: by filterdrecv-57fb89798f-f2t2x with SMTP id filterdrecv-57fb89798f-f2t2x-1-627DAF34-23 2022-05-13 01:07:00.413646919 +0000 UTC m=+3122597.807193202 Received: from herokuapp.com (unknown) by geopod-ismtpd-5-2 (SG) with ESMTP id Kdhc-r-dSzilq4oqWc2wkw for ; Fri, 13 May 2022 01:07:00.367 +0000 (UTC) Date: Fri, 13 May 2022 01:07:00 +0000 (UTC) From: "ko1 (Koichi Sasada)" 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: ko1 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: 84904 X-SG-EID: =?us-ascii?Q?YkmFGMrQnymZs=2F4gaHJnvrsFPAGAfVipS20r=2FEutHlZKBkOXJV3+2vYlfF3wrB?= =?us-ascii?Q?u+wzn1=2FYobjg0PO+JI9qcf59GF79bLCkAw9Vlo5?= =?us-ascii?Q?ymKr3yvpv6fNpflCaG=2FNKT1sLmDMR+FKo287vTz?= =?us-ascii?Q?V7aep+BrzN7kkQUEVDzb5eIgCKDV1X4vzXwm9ZW?= =?us-ascii?Q?TJt+=2FuRJts5280pCoyRTEy6h1Yxh4xsLodSJ1W1?= =?us-ascii?Q?1N7gjRoJFKeMB+7zkN+tXaSdOO6l7r9b2Jto0X5?= =?us-ascii?Q?f+kOkIemLX5v6fUdop5gA=3D=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 108535 Subject: [ruby-core:108535] [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" SXNzdWUgIzE4Nzc2IGhhcyBiZWVuIHVwZGF0ZWQgYnkga28xIChLb2ljaGkgU2FzYWRhKS4KCgpq ZW1tYWkgKEplbW1hIElzc3JvZmYpIHdyb3RlIGluICNub3RlLTU6Cj4gV2hlbiB3ZSBhZGQgYSBu ZXcgaXZhciwgaWYgdGhlcmUgaXMgbm8gdHJhbnNpdGlvbiB3ZSBoYXZlIHRvIGZpbmQgYSBuZXcg SUQuICBSaWdodCBub3cgd2UncmUgZG9pbmcgYSBsaW5lYXIgc2NhbiBvZiBhdmFpbGFibGUgSURz LiAgT25jZSB3ZSdyZSBjb25maWRlbnQgaW4gc2hhcGUgSUQgR0MsIHdlJ2xsIHN3aXRjaCB0aGUg YWxnb3JpdGhtIHRvIHNvbWV0aGluZyBtb3JlIGVmZmljaWVudCBsaWtlIHVzaW5nIGEgYml0bWFw CgpBaCwgbXkgcXVlc3Rpb24gd2FzIGhvdyB0byBmaW5kIGFuIGV4aXN0aW5nIHRyYW5zaXRpb24u CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkZlYXR1cmUgIzE4Nzc2 OiBPYmplY3QgU2hhcGVzCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xODc3NiNj aGFuZ2UtOTc1NzgKCiogQXV0aG9yOiBqZW1tYWkgKEplbW1hIElzc3JvZmYpCiogU3RhdHVzOiBP cGVuCiogUHJpb3JpdHk6IE5vcm1hbAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiMgT2JqZWN0IFNoYXBlcyBpbXBsZW1lbnRhdGlvbgoKQWFyb24gUGF0dGVyc29uLCBF aWxlZW4gVWNoaXRlbGxlIGFuZCBJIGhhdmUgYmVlbiB3b3JraW5nIG9uIGFuIGltcGxlbWVudGF0 aW9uIG9mIE9iamVjdCBTaGFwZXMgZm9yIFJ1YnkuICBXZSBhcmUgZmlsaW5nIGEgdGlja2V0IHRv IHNoYXJlIHdoYXQgd2UndmUgYmVlbiBkb2luZywgYXMgd2VsbCBhcyBnZXQgZmVlZGJhY2sgb24g dGhlIHByb2plY3QgaW4gaXRzIGN1cnJlbnQgc3RhdGUuCgpXZSBob3BlIHRvIGV2ZW50dWFsbHkg c3VibWl0IHRoZSBmaW5hbGl6ZWQgcHJvamVjdCB1cHN0cmVhbSBhZnRlciB2ZXJpZnlpbmcgZWZm aWNhY3kuCgojIyBXaGF0IGFyZSBPYmplY3QgU2hhcGVzPwoKT2JqZWN0IHNoYXBlcyBhcmUgYSB0 ZWNobmlxdWUgZm9yIHJlcHJlc2VudGluZyBwcm9wZXJ0aWVzIG9mIGFuIG9iamVjdC4gT3RoZXIg bGFuZ3VhZ2UgaW1wbGVtZW50YXRpb25zLCBpbmNsdWRpbmcgW1RydWZmbGVSdWJ5XShodHRwczov L2dpdGh1Yi5jb20vb3JhY2xlL3RydWZmbGVydWJ5KSBhbmQgW1Y4XShodHRwczovL3Y4LmRldi8p LCB1c2UgdGhpcyB0ZWNobmlxdWUuIENocmlzIFNlYXRvbiwgdGhlIGNyZWF0b3Igb2YgVHJ1ZmZs ZVJ1YnksIGRpc2N1c3NlZCBvYmplY3Qgc2hhcGVzIGluIGhpcyBbUnVieUthaWdpIDIwMjEgS2V5 bm90ZV0oaHR0cHM6Ly9ydWJ5a2FpZ2kub3JnLzIwMjEtdGFrZW91dC9wcmVzZW50YXRpb25zL2No cmlzZ3NlYXRvbi5odG1sKSBhbmQgTWF4aW1lIENoZXZhbGllci1Cb2lzdmVydCBkaXNjdXNzZWQg dGhlIGltcGxpY2F0aW9ucyBmb3IgWUpJVCBpbiB0aGUgbGF0dGVyIHBhcnQgb2YgW2hlciB0YWxr IGF0IFJ1YnlLYWlnaSAyMDIxXShodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PVBCVkxm M3lmTXM4JnQ9MTEwMHMpLiBUaGUgb3JpZ2luYWwgaWRlYSBvZiBvYmplY3Qgc2hhcGVzIFtvcmln aW5hdGVzIGZyb20gdGhlIFNlbGYgbGFuZ3VhZ2VdKGh0dHBzOi8vYmlibGlvZ3JhcGh5LnNlbGZs YW5ndWFnZS5vcmcvX3N0YXRpYy9pbXBsZW1lbnRhdGlvbi5wZGYpLCB3aGljaCBpcyBjb25zaWRl cmVkIGEgZGlyZWN0IGRlc2NlbmRhbnQgb2YgU21hbGx0YWxrLgoKRWFjaCBzaGFwZSByZXByZXNl bnRzIGEgc3BlY2lmaWMgc2V0IG9mIGF0dHJpYnV0ZXMgKGluc3RhbmNlIHZhcmlhYmxlcyBhbmQg b3RoZXIgcHJvcGVydGllcykgYW5kIHRoZWlyIHZhbHVlcy4gSW4gb3VyIGltcGxlbWVudGF0aW9u LCBhbGwgb2JqZWN0cyBoYXZlIGEgc2hhcGUuIFRoZSBzaGFwZXMgYXJlIG5vZGVzIGluIGEgdHJl ZSBkYXRhIHN0cnVjdHVyZS4gRXZlcnkgZWRnZSBpbiB0aGUgdHJlZSByZXByZXNlbnRzIGFuIGF0 dHJpYnV0ZSB0cmFuc2l0aW9uLgoKTW9yZSBzcGVjaWZpY2FsbHksIHNldHRpbmcgYW4gaW5zdGFu Y2UgdmFyaWFibGUgb24gYW4gaW5zdGFuY2Ugb2YgYW4gb2JqZWN0IGNyZWF0ZXMgYW4gb3V0Z29p bmcgZWRnZSBmcm9tIHRoZSBpbnN0YW5jZSdzIGN1cnJlbnQgc2hhcGUuIFRoaXMgaXMgYSB0cmFu c2l0aW9uIGZyb20gb25lIHNoYXBlIHRvIGFub3RoZXIuIFRoZSBlZGdlIHJlcHJlc2VudHMgdGhl IGluc3RhbmNlIHZhcmlhYmxlIHRoYXQgaXMgc2V0LgoKRm9yIGV4YW1wbGU6CgpgYGBydWJ5CmNs YXNzIEZvbwogIGRlZiBpbml0aWFsaXplCiAgICAjIEN1cnJlbnRseSB0aGlzIGluc3RhbmNlIGlz IHRoZSByb290IHNoYXBlIChJRCAwKQogICAgQGEgPSAxICMgVHJhbnNpdGlvbnMgdG8gYSBuZXcg c2hhcGUgdmlhIGVkZ2UgQGEgKElEIDEpCiAgICBAYiA9IDIgIyBUcmFuc2l0aW9ucyB0byBhIG5l dyBzaGFwZSB2aWEgZWRnZSBAYiAoSUQgMikKICBlbmQKZW5kCgpmb28gPSBGb28ubmV3CmBgYAoK V2hlbiBgRm9vYCBpcyBpbnRpYWxpemVkLCBpdHMgc2hhcGUgaXMgdGhlIHJvb3Qgc2hhcGUgd2l0 aCBJRCAwLiAgVGhlIHJvb3Qgc2hhcGUgcmVwcmVzZW50cyBhbiBlbXB0eSBvYmplY3Qgd2l0aCBu byBpbnN0YW5jZSB2YXJpYWJsZXMuIEVhY2ggdGltZSBhbiBpbnN0YW5jZSB2YXJpYWJsZSBpcyBz ZXQgb24gYGZvb2AsIHRoZSBzaGFwZSBvZiB0aGUgaW5zdGFuY2UgY2hhbmdlcy4gSXQgZmlyc3Qg dHJhbnNpdGlvbnMgd2l0aCBgQGFgIHRvIGEgc2hhcGUgd2l0aCBJRCAxLCBhbmQgdGhlbiB0cmFu c2l0aW9ucyB3aXRoIGBAYmAgdG8gYSBzaGFwZSB3aXRoIElEIDIuIElmIGBAYWAgaXMgdGhlbiBz ZXQgdG8gYSBkaWZmZXJlbnQgdmFsdWUsIGl0cyBzaGFwZSB3aWxsIHJlbWFpbiB0aGUgc2hhcGUg d2l0aCBJRCAyLCBzaW5jZSB0aGlzIHNoYXBlIGFscmVhZHkgaW5jbHVkZXMgdGhlIGluc3RhbmNl IHZhcmlhYmxlIGBAYWAuICAKCiFbXShodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250 ZW50LmNvbS8xOTg4NTYwLzE2NzkxODM2MC0wYTZjOTFhYS0yNTg3LTQ4Y2ItOGZmMi03ZjNhOTU4 MzI4OGUuc3ZnKQoKVGhlcmUgaXMgb25lIGdsb2JhbCBzaGFwZSB0cmVlIGFuZCBvYmplY3RzIHdo aWNoIHVuZGVyZ28gdGhlIHNhbWUgc2hhcGUgdHJhbnNpdGlvbnMgaW4gdGhlIHNhbWUgb3JkZXIg d2lsbCBlbmQgdXAgd2l0aCB0aGUgc2FtZSBmaW5hbCBzaGFwZS4KCkZvciBpbnN0YW5jZSwgaWYg d2UgaGF2ZSBhIGNsYXNzIGBCYXJgIGRlZmluZWQgYXMgZm9sbG93cywgdGhlIGZpcnN0IHRyYW5z aXRpb24gb24gYEJhci5uZXdgIHRocm91Z2ggdGhlIGluc3RhbmNlIHZhcmlhYmxlIGBAYWAgd2ls bCBiZSB0aGUgc2FtZSBhcyBgRm9vLm5ld2AncyBmaXJzdCB0cmFuc2l0aW9uOgoKYGBgcnVieQpj bGFzcyBGb28KICBkZWYgaW5pdGlhbGl6ZQogICAgIyBDdXJyZW50bHkgdGhpcyBpbnN0YW5jZSBp cyB0aGUgcm9vdCBzaGFwZSAoSUQgMCkKICAgIEBhID0gMSAjIFRyYW5zaXRpb25zIHRvIGEgbmV3 IHNoYXBlIHZpYSBlZGdlIEBhIChJRCAxKQogICAgQGIgPSAyICMgVHJhbnNpdGlvbnMgdG8gYSBu ZXcgc2hhcGUgdmlhIGVkZ2UgQGIgKElEIDIpCiAgZW5kCmVuZAoKY2xhc3MgQmFyCiAgZGVmIGlu aXRpYWxpemUKICAgICMgQ3VycmVudGx5IHRoaXMgaW5zdGFuY2UgaXMgdGhlIHJvb3Qgc2hhcGUg KElEIDApCiAgICBAYSA9IDEgIyBUcmFuc2l0aW9ucyB0byBzaGFwZSBkZWZpbmVkIGVhcmxpZXIg dmlhIGVkZ2UgQGEgKElEIDEpCiAgICBAYyA9IDEgIyBUcmFuc2l0aW9ucyB0byBhIG5ldyBzaGFw ZSB2aWEgZWRnZSBAYyAoSUQgMykKICAgIEBiID0gMSAjIFRyYW5zaXRpb25zIHRvIGEgbmV3IHNo YXBlIHZpYSBlZGdlIEBiIChJRCA0KQogIGVuZAplbmQKCmZvbyA9IEZvby5uZXcgIyBibHVlIGlu IHRoZSBkaWFncmFtCmJhciA9IEJhci5uZXcgIyByZWQgaW4gdGhlIGRpYWdyYW0KYGBgCgpJbiB0 aGUgZGlhZ3JhbSBiZWxvdywgcHVycGxlIHJlcHJlc2VudHMgc2hhcmVkIHRyYW5zaXRpb25zLCBi bHVlIHJlcHJlc2VudHMgdHJhbnNpdGlvbnMgZm9yIG9ubHkgYGZvb2AsIGFuZCByZWQgcmVwcmVz ZW50cyB0cmFuc2l0aW9ucyBmb3Igb25seSBgYmFyYC4KCiFbXShodHRwczovL3VzZXItaW1hZ2Vz LmdpdGh1YnVzZXJjb250ZW50LmNvbS8xOTg4NTYwLzE2NzkxODg5OS1mMWE2ZjM0NC1hZTVlLTRk YzAtYjE3YS1mYjE1NmQxZDU1MGYuc3ZnKQoKIyMjIENhY2hlIHN0cnVjdHVyZQoKRm9yIGluc3Rh bmNlIHZhcmlhYmxlIHdyaXRlcnMsIHRoZSBjdXJyZW50IHNoYXBlIElELCB0aGUgc2hhcGUgSUQg dGhhdCBpdmFyIHdyaXRlIHdvdWxkIHRyYW5zaXRpb24gdG8gYW5kIGluc3RhbmNlIHZhcmlhYmxl IGluZGV4IGFyZSBhbGwgc3RvcmVkIGluIHRoZSBpbmxpbmUgY2FjaGUuIFRoZSBzaGFwZSBJRCBp cyB0aGUga2V5IHRvIHRoZSBjYWNoZS4KCkZvciBpbnN0YW5jZSB2YXJpYWJsZSByZWFkZXJzLCB0 aGUgc2hhcGUgSUQgYW5kIGluc3RhbmNlIHZhcmlhYmxlIGluZGV4IGFyZSBzdG9yZWQgaW4gdGhl IGlubGluZSBjYWNoZS4gIEFnYWluLCB0aGUgc2hhcGUgSUQgaXMgdGhlIGNhY2hlIGtleS4KCmBg YHJ1YnkKY2xhc3MgRm9vCiAgZGVmIGluaXRpYWxpemUKICAgIEBhID0gMSAjIElDIHNoYXBlX2lk OiAwLCBuZXh0IHNoYXBlOiAxLCBpdiBpbmRleCAwCiAgICBAYiA9IDEgIyBJQyBzaGFwZV9pZDog MSwgbmV4dCBzaGFwZTogMiwgaXYgaW5kZXggMQogIGVuZAogICAgCiAgZGVmIGEKICAgIEBhICMg SUMgc2hhcGVfaWQ6IDIsIGl2IGluZGV4IDAKICBlbmQKZW5kCmBgYAoKIyMgUmF0aW9uYWxlCgpX ZSB0aGluayB0aGF0IGFuIG9iamVjdCBzaGFwZSBpbXBsZW1lbnRhdGlvbiB3aWxsIHNpbXBsaWZ5 IGNhY2hlIGNoZWNrcywgaW5jcmVhc2UgaW5saW5lIGNhY2hlIGhpdHMsIGRlY3JlYXNlIHJ1bnRp bWUgY2hlY2tzLCBhbmQgZW5hYmxlIG90aGVyIHBvdGVudGlhbCBmdXR1cmUgb3B0aW1pemF0aW9u cy4gVGhlc2UgYXJlIGFsbCBleHBsYWluZWQgYmVsb3cuIAoKIyMjIFNpbXBsaWZ5IGNhY2hpbmcK ClRoZSBjdXJyZW50IGNhY2hlIGltcGxlbWVudGF0aW9uIGRlcGVuZHMgb24gdGhlIGNsYXNzIG9m IHRoZSByZWNlaXZlci4gU2luY2UgdGhlIGFkZHJlc3Mgb2YgdGhlIGNsYXNzIGNhbiBiZSByZXVz ZWQsIHRoZSBjdXJyZW50IGNhY2hlIGltcGxlbWVudGF0aW9uIGFsc28gZGVwZW5kcyBvbiBhbiBp bmNyZW1lbnRpbmcgc2VyaWFsIG51bWJlciBzZXQgb24gdGhlIGNsYXNzICh0aGUgY2xhc3Mgc2Vy aWFsKS4gIFRoZSBzaGFwZSBpbXBsZW1lbnRhdGlvbiBoYXMgbm8gc3VjaCBkZXBlbmRlbmN5LiBJ dCBvbmx5IHJlcXVpcmVzIGNoZWNraW5nIHRoZSBzaGFwZSBJRCB0byBkZXRlcm1pbmUgaWYgdGhl IGNhY2hlIGlzIHZhbGlkLgoKIyMjIENhY2hlIGhpdHMKCk9iamVjdHMgdGhhdCBzZXQgcHJvcGVy dGllcyBpbiB0aGUgc2FtZSBvcmRlciBjYW4gc2hhcmUgc2hhcGVzLiAgRm9yIGV4YW1wbGU6Cgpg YGBydWJ5CmNsYXNzIEhvZ2UKICBkZWYgaW5pdGlhbGl6ZQogICAgIyBDdXJyZW50bHkgdGhpcyBp bnN0YW5jZSBpcyB0aGUgcm9vdCBzaGFwZSAoSUQgMCkKICAgIEBhID0gMSAjIFRyYW5zaXRpb25z IHRvIHRoZSBuZXh0IHNoYXBlIHZpYSBlZGdlIG5hbWVkIEBhCiAgICBAYiA9IDIgIyBUcmFuc2l0 aW9ucyB0byBuZXh0IHNoYXBlIHZpYSBlZGdlIG5hbWVkIEBiCiAgZW5kCmVuZAoKY2xhc3MgRnVn YSA8IEhvZ2U7IGVuZAoKaG9nZSA9IEhvZ2UubmV3CmZ1Z2EgPSBGdWdhLm5ldwpgYGAKCkluIHRo ZSBhYm92ZSBleGFtcGxlLCB0aGUgaW5zdGFuY2VzIGBob2dlYCBhbmQgYGZ1Z2FgIHdpbGwgc2hh cmUgdGhlIHNhbWUgc2hhcGUgSUQuICBUaGlzIG1lYW5zIGlubGluZSBjYWNoZXMgaW4gYGluaXRp YWxpemVgIHdpbGwgaGl0IGluIGJvdGggY2FzZXMuICBUaGlzIGNvbnRyYXN0cyB3aXRoIHRoZSBj dXJyZW50IGltcGxlbWVudGF0aW9uIHRoYXQgdXNlcyB0aGUgY2xhc3MgYXMgdGhlIGNhY2hlIGtl eS4gIEluIG90aGVyIHdvcmRzLCB3aXRoIG9iamVjdCBzaGFwZXMgdGhlIGFib3ZlIGNvZGUgd2ls bCBoaXQgaW5saW5lIGNhY2hlcyB3aGVyZSB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB3aWxs IG1pc3MuCgpJZiBwZXJmb3JtYW5jZSB0ZXN0aW5nIHJldmVhbHMgdGhhdCBjYWNoZSBoaXRzIGFy ZSAqbm90KiBzdWJzdGFudGlhbGx5IGltcHJvdmVkLCB0aGVuIHdlIGNhbiB1c2Ugc2hhcGVzIHRv IHJlY2xhaW0gbWVtb3J5IGZyb20gYFJCYXNpY2AuIFdlIGNhbiBhY2NvbXBsaXNoIHRoaXMgYnkg ZW5jb2RpbmcgdGhlIGNsYXNzIHdpdGhpbiB0aGUgc2hhcGUgdHJlZS4gVGhpcyB3aWxsIGhhdmUg YW4gZXF1aXZhbGVudCBjYWNoZSBoaXQgcmF0ZSB0byB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlv bi4gT25jZSB0aGUgY2xhc3MgaXMgZW5jb2RlZCB3aXRoaW4gdGhlIHNoYXBlIHRyZWUsIHdlIGNh biByZW1vdmUgdGhlIGNsYXNzIHBvaW50ZXIgZnJvbSBgUkJhc2ljYCBhbmQgZWl0aGVyIHJlY2xh aW0gdGhhdCBtZW1vcnkgb3IgZnJlZSBpdCBmb3IgYW5vdGhlciB1c2UuCgojIyMgRGVjcmVhc2Vz IHJ1bnRpbWUgY2hlY2tpbmcKCldlIGNhbiBlbmNvZGUgYXR0cmlidXRlcyB0aGF0IGFyZW4ndCBp bnN0YW5jZSB2YXJpYWJsZXMgaW50byBhbiBvYmplY3QncyBzaGFwZS4gQ3VycmVudGx5LCB3ZSBh bHNvIGluY2x1ZGUgZnJvemVuIHdpdGhpbiB0aGUgc2hhcGUuIFRoaXMgbWVhbnMgd2UgY2FuIGxp bWl0IGZyb3plbiBjaGVja3MgdG8gb25seSBjYWNoZSBtaXNzZXMuCgpGb3IgZXhhbXBsZSwgdGhl IGZvbGxvd2luZyBjb2RlOgoKYGBgcnVieQpjbGFzcyBUb3RvCiAgZGVmIHNldF9hCiAgICBAYSA9 IDEgIyBjYWNoZTogc2hhcGU6IDAsIG5leHQgc2hhcGU6IDEsIElWIGlkeDogMAogIGVuZAplbmQK CnRvdG8gPSBUb3RvLm5ldyAjIHNoYXBlIDAKdG90by5zZXRfYSAgICAgIyBzaGFwZSAxCgp0b3Rv ID0gVG90by5uZXcgIyBzaGFwZSAwCnRvdG8uZnJlZXplICAgICMgc2hhcGUgMgp0b3RvLnNldF9h ICAgICAjIENhY2hlIG1pc3MsIEV4Y2VwdGlvbiEKYGBgCgohW10oaHR0cHM6Ly91c2VyLWltYWdl cy5naXRodWJ1c2VyY29udGVudC5jb20vMTk4ODU2MC8xNjc5MjAwMDEtYzRlNjMyNmItM2EzYy00 ODNiLWE3OTctOWUwMjMxNzY0N2Q3LnN2ZykKCldpdGhvdXQgc2hhcGVzLCBhbGwgaW5zdGFuY2Ug dmFyaWFibGUgc2V0cyByZXF1aXJlIGNoZWNraW5nIHRoZSBmcm96ZW4gc3RhdHVzIG9mIHRoZSBv YmplY3QuIFdpdGggc2hhcGVzLCB3ZSBvbmx5IG5lZWQgdG8gY2hlY2sgdGhlIGZyb3plbiBzdGF0 dXMgb24gY2FjaGUgbWlzc2VzLgoKV2UgY2FuIGFsc28gZWxpbWluYXRlIGVtYmVkZGVkIGFuZCBl eHRlbmRlZCBjaGVja3Mgd2l0aCB0aGUgaW50cm9kdWN0aW9uIG9mIG9iamVjdCBzaGFwZXMuIEFu eSBwYXJ0aWN1bGFyIHNoYXBlIHJlcHJlc2VudHMgYW4gb2JqZWN0IHRoYXQgaXMgX2VpdGhlcl8g ZXh0ZW5kZWQgb3IgZW1iZWRkZWQuIEpJVHMgY2FuIHBvc3NpYmx5IHRha2UgYWR2YW50YWdlIG9m IHRoaXMgZmFjdCBieSBnZW5lcmF0aW5nIHNwZWNpYWxpemVkIG1hY2hpbmUgY29kZSBiYXNlZCBv biB0aGUgc2hhcGVzLiAKICAgIAojIyMgQ2xhc3MgaW5zdGFuY2UgdmFyaWFibGVzIGNhbiBiZSBz dG9yZWQgaW4gYW4gYXJyYXkKCkN1cnJlbnRseSwgYFRfQ0xBU1NgIGFuZCBgVF9NT0RVTEVgIGlu c3RhbmNlcyBjYW5ub3QgdXNlIHRoZSBzYW1lIElWIGluZGV4IHRhYmxlIG9wdGltaXphdGlvbiB0 aGF0IGBUX09CSkVDVGAgaW5zdGFuY2VzIHVzZS4gIFdlIHRoaW5rIHRoYXQgdGhlIG9iamVjdCBz aGFwZXMgdGVjaG5pcXVlIGNhbiBiZSBsZXZlcmFnZWQgYnkgY2xhc3MgaW5zdGFuY2VzIHRvIHVz ZSBhcnJheXMgZm9yIGNsYXNzIGluc3RhbmNlIHZhcmlhYmxlIHN0b3JhZ2UgYW5kIG1heSBwb3Nz aWJseSBsZWFkIHRvIGEgcmVkdWN0aW9uIGluIG1lbW9yeSB1c2FnZSAodGhvdWdoIHdlIGhhdmUg eWV0IHRvIHRlc3QgdGhpcykuCgojIyBJbXBsZW1lbnRhdGlvbiBEZXRhaWxzCgpbSGVyZV0oaHR0 cHM6Ly9naXRodWIuY29tL2plbW1haXNzcm9mZi9ydWJ5L2NvbW1pdC80ZTk1ZDAxNjU0ZjI0Y2Vm ZjZjODMzMGNmNGU1YzdkYWM1MDQ3MzllKSBpcyBhIGxpbmsgdG8gb3VyIGNvZGUgc28gZmFyLgoK QXMgbWVudGlvbmVkIGVhcmxpZXIsIHNoYXBlIG9iamVjdHMgZm9ybSBhIHRyZWUgZGF0YSBzdHJ1 Y3R1cmUuICBJbiBvcmRlciB0byBsb29rIHVwIHRoZSBzaGFwZSBxdWlja2x5LCB3ZSBhbHNvIHN0 b3JlIHRoZSBzaGFwZXMgaW4gYSB3ZWFrIGFycmF5IHRoYXQgaXMgc3RvcmVkIG9uIHRoZSBWTS4g IFRoZSBJRCBvZiB0aGUgc2hhcGUgaXMgdGhlIGluZGV4IGluIHRvIHRoZSBhcnJheSwgYW5kIHRo ZSBJRCBpcyBzdG9yZWQgb24gdGhlIG9iamVjdC4KCkZvciBgVF9PQkpFQ1RgIG9iamVjdHMsIHdl IHN0b3JlIHRoZSBzaGFwZSBJRCBpbiB0aGUgb2JqZWN0J3MgaGVhZGVyLiBPbiA2NCBiaXQgc3lz dGVtcywgdGhlIHVwcGVyIDMyIGJpdHMgYXJlIHVzZWQgYnkgUmFjdG9ycy4gIFdlIHdhbnQgb2Jq ZWN0IHNoYXBlcyB0byBiZSBlbmFibGVkIG9uIDMyIGJpdCBzeXN0ZW1zIGFuZCA2NCBiaXQgc3lz dGVtcyBzbyB0aGF0IGxpbWl0cyB1cyB0byB0aGUgYm90dG9tIDMyIGJpdHMgb2YgdGhlIE9iamVj dCBoZWFkZXIuICBUaGUgdG9wIDIwIGJpdHMgZm9yIGBUX09CSkVDVGAgb2JqZWN0cyB3YXMgdW51 c2VkLCBzbyB3ZSB1c2VkIHRoZSB0b3AgMTYgYml0cyBmb3IgdGhlIHNoYXBlIGlkLiAgV2UgY2hv c2UgdGhlIHRvcCAxNiBiaXRzIGJlY2F1c2UgdGhpcyBhbGxvd3MgdXMgdG8gdXNlIGB1aW50MTZf dGAgYW5kIG1hc2tpbmcgdGhlIGhlYWRlciBiaXRzIGlzIGVhc2llci4KClRoaXMgaW1wbGVtZW50 YXRpb24gZGV0YWlsIGxpbWl0cyB1cyB0byB+NjVrIHNoYXBlcy4gV2UgbWVhc3VyZWQgdGhlIG51 bWJlciBvZiBzaGFwZXMgdXNlZCBvbiBhIHNpbXBsZSBbRGlzY291cnNlXShodHRwczovL2dpdGh1 Yi5jb20vZGlzY291cnNlL2Rpc2NvdXJzZSkgYXBwbGljYXRpb24gKH4zLjVrKSwgW1JhaWxzQmVu Y2hdKGh0dHBzOi8vZ2l0aHViLmNvbS9rMGt1YnVuL3JhaWxzYmVuY2gpICh+NGspLCBhbmQgU2hv cGlmeSdzIG1vbm9saXRoJ3MgdGVzdCBzdWl0ZSAofjQwaykuIEFjY29yZGluZ2x5LCB3ZSBkZWNp ZGVkIHRvIGltcGxlbWVudCBnYXJiYWdlIGNvbGxlY3Rpb24gb24gb2JqZWN0IHNoYXBlcyBzbyB3 ZSBjYW4gcmVjeWNsZSBzaGFwZSBJRHMgd2hpY2ggYXJlIG5vIGxvbmdlciBpbiB1c2UuICBXZSBh cmUgY3VycmVudGx5IHdvcmtpbmcgb24gc2hhcGUgR0MuCgpFdmVuIHRob3VnaCBpdCdzIHVubGlr ZWx5LCBpdCdzIHN0aWxsIHBvc3NpYmxlIGZvciBhbiBhcHBsaWNhdGlvbiB0byBydW4gb3V0IG9m IHNoYXBlcy4gT25jZSBhbGwgc2hhcGUgSURzIGFyZSBpbiB1c2UsIGFueSBvYmplY3RzIHRoYXQg bmVlZCBuZXcgc2hhcGUgSURzIHdpbGwgbmV2ZXIgaGl0IG9uIGlubGluZSBjYWNoZXMuCgojIyBF dmFsdWF0aW9uCgpXZSBoYXZlIHNvIGZhciB0ZXN0ZWQgdGhpcyBicmFuY2ggd2l0aCBbRGlzY291 cnNlXShodHRwczovL2dpdGh1Yi5jb20vZGlzY291cnNlL2Rpc2NvdXJzZSksIFtSYWlsc0JlbmNo XShodHRwczovL2dpdGh1Yi5jb20vazBrdWJ1bi9yYWlsc2JlbmNoKSBhbmQgU2hvcGlmeSdzIG1v bm9saXRoLiBXZSBwbGFuIHRvIHRlc3QgdGhpcyBicmFuY2ggbW9yZSBicm9hZGx5IGFnYWluc3Qg c2V2ZXJhbCBvcGVuIHNvdXJjZSBSdWJ5IGFuZCBSYWlscyBhcHBsaWNhdGlvbnMuIAoKQmVmb3Jl IHdlIGNvbnNpZGVyIHRoaXMgYnJhbmNoIHRvIGJlIHJlYWR5IGZvciBmb3JtYWwgcmV2aWV3LCB3 ZSB3YW50IHRoZSBydW50aW1lIHBlcmZvcm1hbmNlIGFuZCBtZW1vcnkgdXNhZ2Ugb2YgdGhlc2Ug YmVuY2htYXJrcyB0byBiZSBlcXVpdmFsZW50IG9yIGJldHRlciB0aGFuIGl0IGlzIGN1cnJlbnRs eS4gSW4gb3VyIG9waW5pb24sIGV2ZW4gd2l0aCBlcXVpdmFsZW50IHJ1bnRpbWUgcGVyZm9ybWFu Y2UgYW5kIG1lbW9yeSB1c2FnZSwgdGhlIGZ1dHVyZSBiZW5lZml0cyBvZiB0aGlzIGFwcHJvYWNo IG1ha2UgdGhlIGNoYW5nZSBzZWVtIHdvcnRod2hpbGUuCgojIyBGZWVkYmFjawoKSWYgeW91IGhh dmUgYW55IGZlZWRiYWNrLCBjb21tZW50cywgb3IgcXVlc3Rpb25zLCBwbGVhc2UgbGV0IHVzIGtu b3cgYW5kIHdlJ2xsIGRvIG91ciBiZXN0IHRvIGFkZHJlc3MgaXQuIFRoYW5rIHlvdSEKCgoKLS0g Cmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLwo=