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.4 required=3.0 tests=AWL,BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, T_SPF_PERMERROR,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 118571F51E for ; Tue, 27 Sep 2022 14:36:28 +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="a+FT40Fk"; dkim-atps=neutral Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 4B15A120F6A; Tue, 27 Sep 2022 23:36:22 +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 7B549120F23 for ; Tue, 27 Sep 2022 23:36:20 +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=Djcc871vPrztIgZ2+Uc9E+5ia/OqbucQKP8D7Gb4gGw=; b=a+FT40FkjyiIBaFSh8MluOXQ7S0uqBxg0AvJoqDUdNTumthG/i1N43Df1pQZvhXdZbYr J0BgqLGaLlkyxlAt4pW7rfMXXWiz1cul+GyvWLDEyZgJrKTvckMWQZEwQI2dRqVTtxE+Dm FpQCej4lBECswHUCAkC0fXwkWV3J2lWKo= Received: by filterdrecv-bcb4b6ff5-7v7hx with SMTP id filterdrecv-bcb4b6ff5-7v7hx-1-63330A5D-84 2022-09-27 14:36:13.782091176 +0000 UTC m=+663762.166597593 Received: from herokuapp.com (unknown) by geopod-ismtpd-5-1 (SG) with ESMTP id QNlP3Q2BSKqQTKM_TLX8kQ for ; Tue, 27 Sep 2022 14:36:13.758 +0000 (UTC) Date: Tue, 27 Sep 2022 14:36:13 +0000 (UTC) From: "austin (Austin Ziegler)" Message-ID: References: Mime-Version: 1.0 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Feature X-Redmine-Issue-Id: 19024 X-Redmine-Issue-Author: shioyama X-Redmine-Sender: austin 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: 86549 X-SG-EID: =?us-ascii?Q?DZv5R2lXppH4VDtnTbzozZvAfTMQDIuiqc52yQGUxibk2YmwbamuHVhEx30u+N?= =?us-ascii?Q?yD3jEB9fCp=2FPZaTvB2Tz7yxhGfc=2FN=2FzNr0P0mlD?= =?us-ascii?Q?A7179Xb=2FZoRgPdi3H+T44jLhoJWJg1cPYo0TcZX?= =?us-ascii?Q?4xstx6ACfaTUN6=2FTdJOfHrf0h7pXxZZvkDfdsNu?= =?us-ascii?Q?tgCEL9+TLsmjqC8Pfk6OHe4vBM7umoXVQbX7f7T?= =?us-ascii?Q?GGj4FFojixIy1CdY5Pkg0x4IYGFe7IwoWOPiEgD?= =?us-ascii?Q?IEB9gKc2hNDtg2YgbJnzQ=3D=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 110108 Subject: [ruby-core:110108] [Ruby master Feature#19024] Proposal: Import Modules 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" SXNzdWUgIzE5MDI0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgYXVzdGluIChBdXN0aW4gWmllZ2xlciku DQoNCg0Kc2hpb3lhbWEgKENocmlzIFNhbHpiZXJnKSB3cm90ZSBpbiAjbm90ZS00Og0KPiA+IElu dHVpdGl2ZWx5LCB0aGlzIHByb3Bvc2FsIGNoYW5nZXMgdGhlIHdheSBSdWJ5IHdvcmtzIGluIGEg d2F5IHRoYXQgSSBiZWxpZXZlIGhhcyB0b28gbWFueSByYW1pZmljYXRpb25zIGFuZCBlZGdlIGNh c2VzLiBBbHNvLCBpdCBkZWxlZ2F0ZXMgY29udHJvbCB0byB0aGUgY2FsbGVyLCByYXRoZXIgdGhh biB0byB0aGUgc3ViamVjdCAodGhlIGNvZGUgYmVpbmcgbG9hZGVkKS4NCj4gDQo+IEknbSBhY3R1 YWxseSB0cnlpbmcgdG8gY2hhbmdlIFJ1YnkgX2FzIGxpdHRsZSBhcyBwb3NzaWJsZV8gdG8gbWFr ZSB0aGlzIGhhcHBlbi4gYGxvYWRgIHdpdGggdGhlIGB3cmFwYCBvcHRpb24gYWxyZWFkeSBkb2Vz IHNvbWUgb2YgdGhpcywgYW5kIGRlbGVnYXRlcyBjb250cm9sIHRvIHRoZSBjYWxsZXIsIHNvIHRo aXMgaXMgbm90IGV4YWN0bHkgbmV3Lg0KDQpTcGVha2luZyBhcyBhIGdlbSBtYWludGFpbmVyLCBJ IGRvbuKAmXQgc2VlIHRoaXMgYXMgYSBtaW5vciBjaGFuZ2UsIGFuZCBJIHRoaW5rIHRoYXQgaXQg aGFzIGZhciBtb3JlIG5lZ2F0aXZlcyB0aGFuIGFuIGV4cGxpY2l0IG5ldyBjb25zdHJ1Y3QgKHBh Y2thZ2VzLCBib3VuZGFyaWVzLCB3aGF0ZXZlcikgd291bGQuDQoNCj4gQW5kIHRvIG1lLCBkZWxl Z2F0aW5nIGNvbnRyb2wgdG8gdGhlIGNhbGxlciBpcyBuYXR1cmFsLiBUaGUgcHJvYmxlbSB3aXRo IGByZXF1aXJlYCBpcyBleGFjdGx5IHRoYXQgdGhlIGNhbGxlciBfbG9zZXNfIGNvbnRyb2wsIHJl c3VsdGluZyBpbiBjYWxsZWQgY29kZSBiZWluZyBhYmxlIHRvICJwYXJrIiBpdHNlbGYgd2hlcmV2 ZXIgaXQgbGlrZXMuIFRoaXMgaXMgd2h5IGV2ZXJ5IGdlbSBoYXMgdG8gYmUgYSBnb29kIGNpdGl6 ZW4gYW5kIGtlZXAgaXRzIGNvZGUgaW4gb25lIG5hbWVzcGFjZS4NCg0KRGVsZWdhdGluZyBjb250 cm9sIHRvIHRoZSBjYWxsZXIgaXMgZ29pbmcgdG8gYmUgYSBzb3VyY2Ugb2YgbG90cyBvZiBgI1dP TlRGSVhgIGJ1Z3Mgb24gYSBsb3Qgb2YgZ2VtcyBpZiB0aGV5IGNhbiBiZSBgaW1wb3J0ZWRgIHRo ZSB3YXkgdGhhdCB5b3XigJlyZSB0YWxraW5nIGFib3V0LiBUaGUgZ2VtcyB0aGF0IEkgaGF2ZSB3 cml0dGVuIGFyZSAobW9zdGx5KSBzZWxmLWNvbnRhaW5lZCwgYnV0IHNvbWUgKmRvKiBpbmNsdWRl IG9wdGlvbnMgdG8gbW9ua2V5IHBhdGNoIGNvcmUgY2xhc3Nlcy4gR2l2ZW4gdGhhdCB0aGUgKm9w ZXJhdGluZyogZW52aXJvbm1lbnQgd2lsbCBiZSBkaWZmZXJlbnQgdW5kZXIgYW4gYGltcG9ydGAg YXMgeW914oCZdmUgZGVzY3JpYmVkIGl0LCBJIGNhbm5vdCBwb3NzaWJseSBzdXBwb3J0IHRob3Nl IHVzZXMgYW5kIHdvdWxkIGNsb3NlIHN1Y2ggYnVncyBhcyBgI1dPTlRGSVhgLg0KDQpPbiB0aGUg b3RoZXIgaGFuZCwgSSBjb3VsZCBhYnNvbHV0ZWx5IHNlZSBidWlsZGluZyBnZW1zIHRoYXQgKm9w dCBpbnRvKiBhIHBhY2thZ2Ugc3lzdGVtIHRvIHByb3ZpZGUgb3B0aW9uYWwgYm91bmRhcmllcywg YW5kIGJ1aWxkaW5nIHRoaW5ncyB0aGF0IHdheSB3b3VsZCBhbGxvdyBtZSB0byBvcHQgaW50byB0 aGUgbW9yZSBjb21wbGV4IHN1cHBvcnQgcmVxdWlyZW1lbnRzIHRoYXQgd291bGQgZW50YWlsLg0K DQo+ID4gU2luY2UgdGhlIHByb2JsZW0gdGhlIHByb3Bvc2FsIHdhbnRzIHRvIGFkZHJlc3MgaXMg YWNjZXNzIG9mIGNvbnN0YW50cyBjcm9zcy1wYWNrYWdlcywgSSB3b25kZXIgaWYgYW4gYXBwcm9h Y2ggdGhhdCB3b3VsZCBiZSBtb3JlIGFsaWduZWQgd2l0aCBSdWJ5IHdvdWxkIGJlIHRvIGludHJv ZHVjZSBhICJwYWNrYWdlIiB2aXNpYmlsaXR5IGtleXdvcmQuDQo+IA0KPiBUbyBiZSBjbGVhciwg Y29udHJvbGxpbmcgY3Jvc3MtcGFja2FnZSBhY2Nlc3MgaXMgYSBwb3NpdGl2ZSBvdXRjb21lIG9m IHdyYXBwaW5nIGxvYWRlZCBjb2RlIGluIGEgbmFtZXNwYWNlLCBub3QgdGhlIChvbmx5KSBnb2Fs IG9mIHRoaXMgcHJvcG9zYWwgaW4gYW5kIG9mIGl0c2VsZi4gTmFtZXNwYWNpbmcgaGFzIGFkdmFu dGFnZXMgb2YgaXRzIG93biBvdXRzaWRlIG9mIGJvdW5kYXJ5IGRlZmluaXRpb24gYWxvbmUuDQoN CkkgZG9u4oCZdCBzZWUgYW55IHZhbHVlIGluIG5hbWVzcGFjaW5nIGJleW9uZCB3aGF0IFJ1Ynkg aGFzIHRocm91Z2ggbW9kdWxlcyBhbmQgY2xhc3Nlcy4gSSBjZXJ0YWlubHkgZG9u4oCZdCBzZWUg YW55IHZhbHVlIGluIHRoZSBhYmlsaXR5IHRvIGxvYWQgbW9yZSB0aGFuIG9uZSB2ZXJzaW9uIG9m IGEgcGllY2Ugb2YgY29kZSBhdCBhIHRpbWUgdW5kZXIgYSBkaWZmZXJlbnQgbmFtZXNwYWNlICh0 aGlzIGlzLCBJTU8sIG9uZSBvZiB0aGUgKndvcnN0KiBwYXJ0cyBvZiBKYXZhU2NyaXB0KS4NCg0K PiA+IHRoZXJlIGFyZSB3YXkgdG9vIG1hbnkgZWRnZSBjYXNlcyBmb3IgbG9hZGluZyBleGlzdGlu ZyBjb2RlIGluIGFuIGlzb2xhdGVkIHdheSBsaWtlIHRoaXMuIEkgbWlnaHQgd29yayBmb3Igc29t ZSwgbWF5YmUgZXZlbiBtb3N0IHBhY2thZ2VzLCBidXQgdWx0aW1hdGVseSBpdCB3aWxsIGNlcnRh aW5seSByZXF1aXJlIGNvb3BlcmF0aW9uIGZyb20gdGhlIHBhY2thZ2VzLCBzbyBtaWdodCBhcyB3 ZWxsIG9mZmVyIGEgcHJvcGVyIGNvbnN0cnVjdCBmb3IgaXQuDQo+IA0KPiBXb3VsZG4ndCBpdCBt YWtlIHNlbnNlIHRvIGZpcnN0IGRldGVybWluZSB3aGF0IHRob3NlIGVkZ2UgY2FzZXMgYXJlPyBJ IGZlZWwgbGlrZSB3ZSdyZSBpbW1lZGlhdGVseSBqdW1waW5nIHRvIHRoZSBjb25jbHVzaW9uIHRo YXQgInRoaXMgaXMgaGFyZCwgc28gbGV0J3MgZG8gdGhpcyBvdGhlciB0aGluZyBpbnN0ZWFkIiBi ZWZvcmUgd2UgaGF2ZSBkZXRlcm1pbmVkIGlmIGl0IHJlYWxseSBpcyB0aGF0IGhhcmQgdG8gZG8u DQoNCkkgaGF2ZSB0byB1bHRpbWF0ZWx5IGFncmVlIHdpdGggSmVyZW15IEV2YW5zIHRoYXQgSSB0 aGluayB0aGF0IG1ha2luZyB0aGUgd3JhcHBpbmcgKnRyYW5zaXRpdmUqIGlzIHRoZSB3cm9uZyB0 aGluZy4gWW914oCZcmUgcHV0dGluZyBtYWludGVuYW5jZSBidXJkZW5zIG9uIGNvdW50bGVzcyB0 aGlyZC1wYXJ0eSBkZXZlbG9wZXJzIHZpYSB0aGVpciBnZW1zIG9uIHNvbWV0aGluZyB0aGF0IG9u bHkgaGVscHMgYSBzbWFsbCBzdWJzZXQgb2YgUnVieSBkZXZlbG9wZXJzIHdpdGggc29tZSBvZiB0 aGVpciBsYXJnZSBhcHBsaWNhdGlvbnMuDQoNCkZyb20gYSBsaWJyYXJ5IGF1dGhvciBwZXJzcGVj dGl2ZSwgSSB3b3VsZCBzdXBwb3J0IHRoZSBjb25jZXB0IG9mIGEgYHBhY2thZ2VfY29uc3RhbnRg IChzaW1pbGFyIHRvIGBwcml2YXRlX2NvbnN0YW50YCBleGNlcHQgdGhhdCBpdCBsb29rcyBhdCB0 aGUgY2FsbGVy4oCZcyBvcmlnaW4gdHJlZSkgYW5kIGBwYWNrYWdlYCB2aXNpYmlsaXR5IGZvciBt ZXRob2RzLCBiZWNhdXNlIEkgY291bGQgdGhlbiBvcHQgaW50byB0aG9zZS4gV2l0aCBgaW1wb3J0 YCBjcm9zc2luZyBnZW0gYm91bmRhcmllcywgdGhlIGxpYnJhcnkgYXV0aG9yIGdldHMgbm8gb3B0 aW9uIHRvIG9wdCBvdXQgKHVubGVzcyB5b3UgYWxsb3cgc29tZXRoaW5nIGxpa2UgYSBgbm9uX2lt cG9ydGFibGVgIGRlY2xhcmF0aW9uKS4NCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KRmVhdHVyZSAjMTkwMjQ6IFByb3Bvc2FsOiBJbXBvcnQgTW9kdWxlcw0KaHR0 cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE5MDI0I2NoYW5nZS05OTM2Ng0KDQoqIEF1 dGhvcjogc2hpb3lhbWEgKENocmlzIFNhbHpiZXJnKQ0KKiBTdGF0dXM6IE9wZW4NCiogUHJpb3Jp dHk6IE5vcm1hbA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KVGhl cmUgaXMgbm8gZ2VuZXJhbCB3YXkgaW4gUnVieSB0byBsb2FkIGNvZGUgb3V0c2lkZSBvZiB0aGUg Z2xvYmFsbHktc2hhcmVkIG5hbWVzcGFjZS4gVGhpcyBtYWtlcyBpdCBoYXJkIHRvIGlzb2xhdGUg Y29tcG9uZW50cyBvZiBhbiBhcHBsaWNhdGlvbiBmcm9tIGVhY2ggb3RoZXIgYW5kIGZyb20gdGhl IGFwcGxpY2F0aW9uIGl0c2VsZiwgbGVhZGluZyB0byBjb21wbGljYXRlZCByZWxhdGlvbnNoaXBz IHRoYXQgY2FuIGJlY29tZSBpbnRyYWN0YWJsZSBhcyBhcHBsaWNhdGlvbnMgZ3JvdyBpbiBzaXpl Lg0KDQpUaGUgZ3Jvd2luZyBwb3B1bGFyaXR5IG9mIGEgZ2VtIGxpa2UgW1BhY2t3ZXJrXShodHRw czovL2dpdGh1Yi5jb20vc2hvcGlmeS9wYWNrd2VyayksIHdoaWNoIHByb3ZpZGVzIGEgbmV3IGNv bmNlcHQgb2YgInBhY2thZ2UiIHRvIGVuZm9jZSBib3VuZGFyaWVzIHN0YXRpY2FsbHkgaW4gQ0ks IGlzIGV2aWRlbmNlIHRoYXQgdGhpcyBpcyBhIHJlYWwgcHJvYmxlbS4gQnV0IGludHJvZHVjaW5n IGEgbmV3IHBhY2thZ2luZyBjb25jZXB0IGFuZCBDSSBzdGVwIGlzIGF0IGJlc3Qgb25seSBhIHBh cnRpYWwgc29sdXRpb24sIHdpdGggZG93bnNpZGVzOiBpdCBhZGRzIGNvbXBsZXhpdHkgYW5kIGNv Z25pdGl2ZSBvdmVyaGVhZCB0aGF0IHdvdWxkbid0IGJlIG5lY2Vzc2FyeSBpZiBSdWJ5IHByb3Zp ZGVkIGJldHRlciBwYWNrYWdpbmcgaXRzZWxmIChhcyBNYXR6IGhhcyBzdWdnZXN0ZWQgW2l0IHNo b3VsZF0oaHR0cHM6Ly95b3V0dS5iZS9EcDEyYTNLR05Gdz90PTI5NTYpKS4NCg0KVGhlcmUgaXMg X29uZV8gbGltaXRlZCB3YXkgaW4gUnVieSBjdXJyZW50bHkgdG8gbG9hZCBjb2RlIHdpdGhvdXQg cG9sbHV0aW5nIHRoZSBnbG9iYWwgbmFtZXNwYWNlOiBgbG9hZGAgd2l0aCB0aGUgYHdyYXBgIHBh cmFtZXRlciwgd2hpY2ggYXMgb2YgaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzYy MTAgY2FuIG5vdyBiZSBhIG1vZHVsZS4gSG93ZXZlciwgdGhpcyBvcHRpb24gZG9lcyBub3QgYXBw bHkgdHJhbnNpdGl2ZWx5IHRvIGByZXF1aXJlYCBjYWxscyB3aXRoaW4gdGhlIGxvYWRlZCBmaWxl LCBzbyBpdHMgdXNlZnVsbmVzcyBpcyBsaW1pdGVkLg0KDQpNeSBwcm9wb3NhbCBoZXJlIGlzIHRv IGVuYWJsZSBtb2R1bGUgaW1wb3J0cyBieSBkb2luZyB0aGUgZm9sbG93aW5nOg0KDQoxLiBhcHBs eSB0aGUgYHdyYXBgIG1vZHVsZSBuYW1lc3BhY2UgdHJhbnNpdGl2ZWx5IHRvIGByZXF1aXJlYHMg aW5zaWRlIHRoZSBsb2FkZWQgY29kZSwgaW5jbHVkaW5nIG5hdGl2ZSBleHRlbnNpb25zIChvciBw cm92aWRlIGEgbmV3IGZsYWcgb3IgbWV0aG9kIHRoYXQgd291bGQgZG8gdGhpcyksDQoyLiBtYWtl IHRoZSBgd3JhcGAgbW9kdWxlIHRoZSB0b3BsZXZlbCBjb250ZXh0IGZvciBjb2RlIGxvYWRlZCB1 bmRlciBpdCwgc28gYDo6Rm9vYCByZXNvbHZlcyB0byBgPHRvcF93cmFwcGVyPjo6Rm9vYCBpbiBs b2FkZWQgY29kZSAob3IsIGFnYWluLCBwcm92aWRlIGEgbmV3IGZsYWcgb3IgbWV0aG9kIHRoYXQg d291bGQgZG8gdGhpcykuIF9BbHNvIG1ha2UgdGhpcyBhcHBseSB3aGVuIGNvZGUgdW5kZXIgdGhl IHdyYXBwZXIgbW9kdWxlIGlzIGNhbGxlZCBvdXRzaWRlIG9mIHRoZSBsb2FkIHByb2Nlc3MgKHdo ZW4gYHRvcF93cmFwcGVyYCBpcyBubyBsb25nZXIgc2V0KSAmbWRhc2g7IHRoaXMgbWF5IGJlIHF1 aXRlIGhhcmQgdG8gZG9fLg0KMy4gcmVzb2x2ZSBgbmFtZWAgb24gYW5vbnltb3VzIG1vZHVsZXMg dW5kZXIgdGhlIHdyYXBwZWQgbW9kdWxlIHRvIHRoZWlyIG5hbWVzIHdpdGhvdXQgdGhlIHRvcCB3 cmFwcGVyIG1vZHVsZSwgc28gYDx0b3Bfd3JhcHBlcj46OkZvby5uYW1lYCBldmFsdWF0ZXMgdG8g YCJGb28iYC4gVGhlcmUgbWF5IGJlIG90aGVyIHdheXMgdG8gaGFuZGxlIHRoaXMgcHJvYmxlbSwg YnV0IGEgZ2VtIGxpa2UgUmFpbHMgdXNlcyBgbmFtZWAgdG8gcmVzb2x2ZSBmaWxlbmFtZXMgYW5k IGZhaWxzIHdoZW4gYW5vbnltb3VzIG1vZHVsZXMgcmV0dXJuIHNvbWV0aGluZyBsaWtlIGAjPE1v ZHVsZTogLi4uPjo6QWN0aXZlUmVjb3JkYCBpbnN0ZWFkIG9mIGp1c3QgYEFjdGl2ZVJlY29yZGAu DQoNCkkgaGF2ZSByb3VnaGx5IGltcGxlbWVudGVkIHRoZXNlIHRocmVlIHRoaW5ncyBpbiBbdGhp cyBwYXRjaF0oaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9jb21wYXJlL21hc3Rlci4uLnNo aW95YW1hOnJ1Ynk6aW1wb3J0X21vZHVsZXMpLiBUaGlzIGltcGxlbWVudGF0aW9uIGlzIGluY29t cGxldGUgKGl0IGRvZXMgbm90IGNvdmVyIHRoZSBsYXN0IGhpZ2hsaWdodGVkIHBhcnQgb2YgMikg YnV0IHByb3ZpZGVzIGVub3VnaCBvZiBhIGJhc2lzIHRvIGltcGxlbWVudCBhbiBgaW1wb3J0YCBt ZXRob2QsIHdoaWNoIEkgaGF2ZSBkb25lIGluIGEgZ2VtIGNhbGxlZCBbSW1dKGh0dHBzOi8vZ2l0 aHViLmNvbS9zaGlveWFtYS9pbSkuDQoNCkltIHByb3ZpZGVzIGFuIGBpbXBvcnRgIG1ldGhvZCB3 aGljaCBjYW4gYmUgdXNlZCB0byBpbXBvcnQgZ2VtIGNvZGUgdW5kZXIgYSBuYW1lc3BhY2U6DQoN CmBgYHJ1YnkNCnJlcXVpcmUgImltIg0KZXh0ZW5kIEltDQoNCmFjdGl2ZV9tb2RlbCA9IGltcG9y dCAiYWN0aXZlX21vZGVsIg0KIz0+IDwjSW06OkltcG9ydCByb290OiBhY3RpdmVfbW9kZWw+DQoN CkFjdGl2ZU1vZGVsDQojPT4gTmFtZUVycm9yDQoNCmFjdGl2ZV9tb2RlbDo6QWN0aXZlTW9kZWwN CiM9PiBBY3RpdmVNb2RlbA0KDQphY3RpdmVfcmVjb3JkID0gaW1wb3J0ICJhY3RpdmVfcmVjb3Jk Ig0KIz0+IDwjSW06OkltcG9ydCByb290OiBhY3RpdmVfcmVjb3JkPg0KDQojIENvbnN0YW50cyBk ZWZpbmVkIGluIHRoZSBzYW1lIGZpbGUgdW5kZXIgZGlmZmVyZW50IGltcG9ydHMgcG9pbnQgdG8g dGhlIHNhbWUgb2JqZWN0cw0KYWN0aXZlX3JlY29yZDo6QWN0aXZlTW9kZWwgPT0gYWN0aXZlX21v ZGVsOjpBY3RpdmVNb2RlbA0KIz0+IHRydWUNCmBgYA0KDQpXaXRoIHRoZSBjb25zdGFudHMgYWxs IGxvYWRlZCB1bmRlciBhbiBhbm9ueW1vdXMgbmFtZXNwYWNlLCBhbnkgY29kZSBpbXBvcnRpbmcg dGhlIGdlbSBjYW4gbmFtZSBjb25zdGFudHMgaG93ZXZlciBpdCBsaWtlczoNCg0KYGBgcnVieQ0K Y2xhc3MgUG9zdCA8IGFjdGl2ZV9yZWNvcmQ6OkFjdGl2ZVJlY29yZDo6QmFzZQ0KZW5kDQoNCkFS ID0gYWN0aXZlX3JlY29yZDo6QWN0aXZlUmVjb3JkDQoNClBvc3Quc3VwZXJjbGFzcw0KIz0+IEFS OjpCYXNlDQpgYGANCg0KTm90ZSB0aGF0IHRoaXMgZW5hYmxlcyB0aGUgaW1wb3J0ZXIgdG8gY29t cGxldGVseSBkZXRlcm1pbmUgdGhlIG5hbWluZyBmb3IgZXZlcnkgY29uc3RhbnQgaXQgaW1wb3J0 cy4gU28gZ2VtcyBjYW4gb3B0IHRvIGhpZGUgdGhlaXIgZGVwZW5kZW5jaWVzIGJ5ICJhbmNob3Jp bmciIHRoZW0gaW5zaWRlIHRoZWlyIG93biBuYW1lc3BhY2UsIGxpa2UgdGhpczoNCg0KYGBgcnVi eQ0KIyBpbiBsaWIvbXlfZ2VtLnJiDQptb2R1bGUgTXlHZW0NCiAgZGVwID0gaW1wb3J0ICJteV9n ZW1fZGVwZW5kZW5jeSINCg0KICAjIG15X2dlbV9kZXBlbmRlbmN5IGlzICJhbmNob3JlZCIgdW5k ZXIgdGhlIE15R2VtIG5hbWVzcGFjZSwgc28gbm90IGV4cG9zZWQgdG8gdXNlcnMNCiAgIyBvZiB0 aGUgZ2VtIHVubGVzcyB0aGV5IGFsc28gcmVxdWlyZSBpdC4NCiAgTXlHZW1EZXBlbmRlbmN5ID0g ZGVwDQoNCiAgIy4uLg0KZW5kDQpgYGANCg0KVGhlcmUgYXJlIGEgY291cGxlIGltcG9ydGFudCBp bXBsZW1lbnRhdGlvbiBkZWNpc2lvbnMgaW4gdGhlIGdlbToNCg0KMS4gX09ubHkgbG9hZCBjb2Rl IG9uY2UuXyBXaGVuIHRoZSBzYW1lIGZpbGUgaXMgaW1wb3J0ZWQgYWdhaW4gKGVpdGhlciBkaXJl Y3RseSBvciB0cmFuc2l0aXZlbHkpLCAiY29weSIgY29uc3RhbnRzIGZyb20gcHJldmlvdXNseSBp bXBvcnRlZCBuYW1lc3BhY2UgdG8gdGhlIG5ldyBuYW1lc3BhY2UgdXNpbmcgYSByZWdpc3RyeSB3 aGljaCBtYXBzIHdoaWNoIG5hbWVzcGFjZSAoaW1wb3J0KSB3YXMgdXNlZCB0byBsb2FkIHdoaWNo IGZpbGUgKGFzIHNob3duIGFib3ZlIHdpdGggYWN0aXZlcmVjb3JkL2FjdGl2ZW1vZGVsKS4gVGhp cyBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoYXQgZGlmZmVyZW50IGltcG9ydHMgY2FuICJzZWUi IHNoYXJlZCBmaWxlcy4gQSBzaW1pbGFyIHJlZ2lzdHJ5IGlzIHVzZWQgdG8gdHJhY2sgYXV0b2xv YWRzIHNvIHRoYXQgdGhleSB3b3JrIGNvcnJlY3RseSB3aGVuIHVzZWQgZnJvbSBpbXBvcnRlZCBj b2RlLg0KMi4gVG9wbGV2ZWwgY29yZSB0eXBlcyAoYE5pbENsYXNzYCwgYFRydWVDbGFzc2AsIGBG YWxzZUNsYXNzYCwgYFN0cmluZ2AsIGV0YykgYXJlICJhbGlhc2VkIiB0byBjb25zdGFudHMgdW5k ZXIgZWFjaCBpbXBvcnQgbW9kdWxlIHRvIG1ha2UgdGhlbSBhdmFpbGFibGUuIFRodXMgdGhlcmUg Y2FuIGJlIHNpZGUtZWZmZWN0cyBvZiBpbXBvcnRpbmcgY29kZSwgYnV0IHRoaXMgYWxsb3dzIGEg Z2VtIGxpa2UgUmFpbHMgdG8gbW9ua2V5cGF0Y2ggY29yZSBjbGFzc2VzIHdoaWNoIGl0IG5lZWRz IHRvIGRvIGZvciBpdCB0byB3b3JrLg0KMy4gYE9iamVjdC5jb25zdF9taXNzaW5nYCBpcyBwYXRj aGVkIHRvIGNoZWNrIHRoZSBjYWxsZXIgbG9jYXRpb24gYW5kIHJlc29sdmUgdG8gdGhlIGNvbnN0 YW50IGRlZmluZWQgdW5kZXIgYW4gaW1wb3J0LCBpZiB0aGVyZSBpcyBhbiBpbXBvcnQgZGVmaW5l ZCBmb3IgdGhhdCBmaWxlLg0KDQpUbyBiZSBjbGVhcjogKipJIHRoaW5rIDEpIHNob3VsZCBiZSBp bXBsZW1lbnRlZCBpbiBSdWJ5LCBidXQgbm90IDIpIGFuZCAzKS4qKiBUaGUgbGFzdCBvbmUgKGBP YmplY3QuY29uc3RfbWlzc2luZ2ApIGlzIGEgaGFjayB0byBzdXBwb3J0IHRoZSBjYXNlIHdoZXJl IGEgdG9wbGV2ZWwgY29uc3RhbnQgaXMgcmVmZXJlbmNlZCBmcm9tIGEgbWV0aG9kIGNhbGxlZCBp biBpbXBvcnRlZCBjb2RlIChhdCB3aGljaCBwb2ludCB0aGUgYHRvcF93cmFwcGVyYCBpcyBub3Qg YWN0aXZlLikNCg0KSSBrbm93IHRoaXMgaXMgYSBiaWcgcHJvcG9zYWwsIGFuZCB0aGVyZSBhcmUg c3Ryb25nIG9waW5pb25zIGhlbGQuIEkgd291bGQgcmVhbGx5IGFwcHJlY2lhdGUgY29uc3RydWN0 aXZlIGZlZWRiYWNrIG9uIHRoaXMgZ2VuZXJhbCBpZGVhLg0KDQpTZWUgYWxzbyBzaW1pbGFyIGRp c2N1c3Npb24gaW46IGh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xMDMyMA0KDQoN Cg0KLS0gDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy8NCg==