From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on starla X-Spam-Level: X-Spam-Status: No, score=-1.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 Received: from nue.mailmanlists.eu (nue.mailmanlists.eu [94.130.110.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 8F5A71F44D for ; Fri, 12 Apr 2024 16:10:33 +0000 (UTC) Authentication-Results: dcvr.yhbt.net; dkim=pass (1024-bit key; secure) header.d=ml.ruby-lang.org header.i=@ml.ruby-lang.org header.a=rsa-sha256 header.s=mail header.b=Z/PeC01J; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ruby-lang.org header.i=@ruby-lang.org header.a=rsa-sha256 header.s=s1 header.b=d0fju8VM; dkim-atps=neutral Received: from nue.mailmanlists.eu (localhost [127.0.0.1]) by nue.mailmanlists.eu (Postfix) with ESMTP id B585D842BD; Fri, 12 Apr 2024 16:10:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ml.ruby-lang.org; s=mail; t=1712938225; bh=dFLsJ5u8wXgbt5WoxZnAMEhkNqWglT8RKQ+tiMtZVKs=; h=Date:References:To:Reply-To:Subject:List-Id:List-Archive: List-Help:List-Owner:List-Post:List-Subscribe:List-Unsubscribe: From:Cc:From; b=Z/PeC01JtHF0qNwUR4W/5Fmo2m1IImD7AQ7wqtB14xAYCj0S8kowITQAeKTxcyVYJ TJOTzQrEU9l1YXjnwIPUi+3AiZdh4aSSXbk7JnUcUQE8RKzT3lNz4fAnUNPGYfXD2E 8Lou97xCbc5BqYN1tQh5WO7tSQfTcZR+uGPPG6A4= Received: from s.wfbtzhsv.outbound-mail.sendgrid.net (s.wfbtzhsv.outbound-mail.sendgrid.net [159.183.224.104]) by nue.mailmanlists.eu (Postfix) with ESMTPS id 12A78842B2 for ; Fri, 12 Apr 2024 16:10:21 +0000 (UTC) Authentication-Results: nue.mailmanlists.eu; dkim=pass (2048-bit key; unprotected) header.d=ruby-lang.org header.i=@ruby-lang.org header.a=rsa-sha256 header.s=s1 header.b=d0fju8VM; dkim-atps=neutral DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ruby-lang.org; h=from:references:subject:mime-version:content-type: content-transfer-encoding:list-id:to:cc:content-type:from:subject:to; s=s1; bh=SzcMYKzQhgmXiG+4MfcBLQ1IfyCuKo/ySxwPfbQdfUM=; b=d0fju8VMW4acX9atpvpsAVsbRWWKv+zGR6GTozSmVDziK+lLapJyE5IM0CfYgol+u64s A8faNLPBFNC+zpJjwyzzHfUb7MRpkaU2iIGuv0zf3zSW4k2Wq9n9M9wSVSKzG1BLrBiGaH HcrVL4rdH+X8+KygC7z5MVwkZdsUT8ZtiAWzXAL4Q52vfPQbgL96VcpH07q4PlZ5BnEiau 2GsOcZP4m0qyxm7vhyNXlQXX7oncUzGkqRuZSeuDJf59kS6atP0Xh8zfHn4IL8hblZybUW u0oEHEXmjzbYkAEuOf7JFYxANK+i6GL1kSGeb1XUUudHsXbvLKSzCieG8prMU8vw== Received: by recvd-7d655c67dd-brcxr with SMTP id recvd-7d655c67dd-brcxr-1-66195CEC-45 2024-04-12 16:10:20.664332673 +0000 UTC m=+2142625.479055983 Received: from herokuapp.com (unknown) by geopod-ismtpd-1 (SG) with ESMTP id 6dD3c6PkQviSl9CKssqIVQ for ; Fri, 12 Apr 2024 16:10:20.475 +0000 (UTC) Date: Fri, 12 Apr 2024 16:10:20 +0000 (UTC) Message-ID: References: Mime-Version: 1.0 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Feature X-Redmine-Issue-Id: 20425 X-Redmine-Issue-Author: tenderlovemaking X-Redmine-Issue-Priority: Normal X-Redmine-Sender: tenderlovemaking 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: 94101 X-SG-EID: =?us-ascii?Q?u001=2ElWMe69GVkz6xHw8adpMU6eTKSGZqJ7+E1FrjckpA7cvWAPDyDX2cAv9Do?= =?us-ascii?Q?wZtGRg2vsYQLU1U4jx+ljWd9jTs=2FpZn02mllaZG?= =?us-ascii?Q?4g2CkB4nYTAQVUUCr8hXU17Ou=2FJFUMtG3S9GGCu?= =?us-ascii?Q?Hben4kBeIIwT8hW5N5cImRwbYKWEjE3ZKEJwNVw?= =?us-ascii?Q?oZaQfbHkNYSa+rxWAgQTnryaERUK+WjotqnM9SO?= =?us-ascii?Q?ywKUhhooX9AZ+KPzkrCj6PWqcAP7uZfPnm8p=2FCO?= =?us-ascii?Q?mqm+8iPd23RfS8OvT2LqT5UeAg=3D=3D?= To: ruby-core@ml.ruby-lang.org X-Entity-ID: u001.I8uzylDtAfgbeCOeLBYDww== Message-ID-Hash: HFOCDR2KRBKQBBTIY4RZIWAFDTYUV4DM X-Message-ID-Hash: HFOCDR2KRBKQBBTIY4RZIWAFDTYUV4DM X-MailFrom: bounces+313651-b711-ruby-core=ml.ruby-lang.org@em5188.ruby-lang.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.3 Precedence: list Reply-To: Ruby developers Subject: [ruby-core:117506] [Ruby master Feature#20425] Optimize forwarding callers and callees List-Id: Ruby developers Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: "tenderlovemaking (Aaron Patterson) via ruby-core" Cc: "tenderlovemaking (Aaron Patterson)" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SXNzdWUgIzIwNDI1IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGVuZGVybG92ZW1ha2luZyAoQWFyb24g UGF0dGVyc29uKS4NCg0KDQprbzEgKEtvaWNoaSBTYXNhZGEpIHdyb3RlIGluICNub3RlLTI6DQo+ IEkgdGhpbmsgaXQgaXMgZ29vZCBpZGVhIGJ1dCBJJ20gY29uY2VybmVkIHRoYXQgdGhlIGNvZGUg b24gZ2l0aHViIG1heSBhZmZlY3Qgbm9ybWFsIGNhc2VzIGJlY2F1c2Ugb2YgYWRkaXRpb25hbCBj b2RlIHBhdGguDQoNCkl0IG9ubHkgaW1wYWN0cyB0aGUgYHNlbmRgIGluc3RydWN0aW9uIGFuZCBg aW52b2tlc3VwZXJgIGluc3RydWN0aW9uLiAgSWYgdGhlcmUgaXMgYSBzcGVlZCBpbXBhY3QsIEkg dGhpbmsgd2UgY291bGQgZW1pdCAiZm9yd2FyZGluZ19zZW5kIiBvciAiZm9yd2FyZGluZ19zdXBl ciIgaW5zdHJ1Y3Rpb25zIGFuZCBlbGltaW5hdGUgdGhlIGNvZGUgcGF0aC4gIEFsc28sIGFzIHlv dSBub3RlZCBvbiB0aGUgUFIgbW9zdCBpc2VxcyBhcmUgInNpbXBsZSIgYW5kIHdlIGFscmVhZHkg aGF2ZSB0byBjaGVjayB0aGF0LiAgRm9yd2FyZGFibGUgaXNlcXMgYXJlIGp1c3Qgbm90IGNvbnNp ZGVyZWQgInNpbXBsZSIg8J+Yhg0KDQprbzEgKEtvaWNoaSBTYXNhZGEpIHdyb3RlIGluICNub3Rl LTM6DQo+IEluc3RlYWQgb2YgaW50cm9kdWNpbmcgbmV3IHJ1bGVzIGFuZCBjb21wbGV4IGNvZGUs IEkgdGhpbmsgcHJvdmlkaW5nIGxpZ2h0d2VpZ2h0IGNvbnRhaW5lciB0aGFuIEFycmF5L0hhc2gg aXMgYmV0dGVyLg0KPiANCj4gQ29uc2lkZXIgYGRlZiBmKC4uLikgPSBnKC4uLilgOg0KPiANCj4g KiBJbnRyb2R1Y2luZyBhcmd1bWVudCBvYmplY3QgKGxpa2UgSlMpIGJ5IGltZW1vIGFuZCBwYXNz IGl0IGFzIGEgdW5pcXVlIHBhcmFtZXRlciBmb3IgYSBtZXRob2QgYGRlZiBmKC4uLilgDQo+ICAg KiBvZiBjb3Vyc2Ugbm90IHZpc2libGUgb2JqZWN0cyBmcm9tIFJ1YnkgdXNlcnMuDQo+ICAgKiBh cmdvYmogaGFzIG1lbW9yeSBidWZmZXIgKGFyZ2J1ZmYpIGFuZCBjb3B5IGFsbCBhcmd1bWVudHMg KGFuZCBDSSkgdG8gYXJnYnVmZi4NCj4gICAqIGNhbGxpbmcgYW5vdGhlciBtZXRob2Qgd2l0aCBg ZyguLi4pYCBleHBhbmQgYWxsIGFyZ3VtZW50cyBmcm9tIGFyZ2J1ZmYuDQo+ICogYXJnYnVmZiBt ZW1vcnkgbWFuYWdlbWVudA0KPiAgICogYXJnYnVmZiBpcyBhbGxvY2F0ZWQgZnJvbSByYWN0b3Ig bG9jYWwgYXJnYnVmZiBoZWFwICg0S0IgZm9yIGV4YW1wbGUpIGJ5IGJ1bXAgYWxsb2NhdGlvbi4N Cj4gICAqIGlmIGFyZ2J1ZmYgaGVhcCBpcyBub3QgZW5vdWdoLCBhbGwgZXhpc3RpbmcgYXJnb2Jq IGNvcGllcyB0aGVpciBhcmd1YnVmZiB0byBtYWxsb2MgbWFuYWdlZCBtZW1vcnkgKGV2YWN1YXRp b24pDQo+IA0KPiBJdCB0YWtlcyAoMSkgYXJnb2JqIG9iamVjdCBhbGxvY2F0aW9uIGFuZCAoMikg MiBjb3BpZXMgKDEgZm9yIGFyZ2J1ZmYgYW5kIDEgZm9yIGNhbGxpbmcgZygpLCB0aGUgb3JpZ2lu YWwgcHJvcG9zYWwgb25seSBjb3BpZXMgb25jZSBhdCBjYWxsaW5nIGcoKSksIHNvIG5vdCB1bHRp bWF0ZSBsaWdodHdlaWdodCwgYnV0IHNpbXBsZS4NCg0KSSdtIG5vdCBzdXJlIGhvdyB0aGlzIGlz IG1vcmUgc2ltcGxlIHRoYW4gdGhlIGRlc2lnbiBJIHByb3Bvc2VkLiAgYC4uLmAgY2FsbGVlcyB3 aWxsIG5lZWQgdG8ga25vdyB0byBjb3B5IHRoZSBzdGFjaywgd2hpY2ggcmVxdWlyZXMgYSBmbGFn IChsaWtlIG15IHBhdGNoKS4gIENhbGwgc2l0ZXMgd2lsbCBuZWVkIHRvIGtub3cgdG8gZXhwYW5k IGAuLi5gLCBzbyB0aGV5IHdpbGwgbmVlZCBhIGZsYWcgKGxpa2UgbXkgcGF0Y2gpLiAgSXQgc3Rp bGwgcmVxdWlyZXMgc3BlY2lhbCBib29rIGtlZXBpbmcgb2YgdGhlIFNQIHdoZW4gZXhwYW5kaW5n IGAuLi5gLg0KDQpBbHNvIGl0IHNvdW5kcyBsaWtlIGl0IHJlcXVpcmVzIG1vcmUgbG9naWMgKGlu dHJvZHVjdGlvbiBvZiBhbm90aGVyIG1lbW9yeSBtYW5hZ2VyKSB0byBtYW5hZ2UgdGhlIGFyZ2J1 ZiBidWZmZXIsIGFuZCBtYXliZSBsb2dpYyB3aGVuIHRoZSBzdGFjayBlc2NhcGVzIChmb3IgZXhh bXBsZSBgZGVmIGYoLi4uKSA9IGxhbWJkYSB7IGcoLi4uKSB9YCkuDQogDQo+IEZvciBgbmV3YCBj YXNlLCBJIHRoaW5rIHByb3ZpZGluZyBuZXcgYFZNX01FVEhPRF9UWVBFX09QVElNSVpFRGAgbG9n aWMgaXMgYmV0dGVyLg0KDQpJIHdvdWxkIGxpa2UgdG8gdGVzdCB0aGlzIGJlY2F1c2UgSSBhbSBu b3Qgc3VyZS4gIE9wdGltaXppbmcgYC4uLmAgbGV0cyB1cyBpbXBsZW1lbnQgYENsYXNzI25ld2Ag YXMgYSAobW9zdGx5IHJlZ3VsYXIpIFJ1YnkgbWV0aG9kLCB3aGljaCBJIHRoaW5rIGlzIHZlcnkg YWR2YW50YWdlb3VzIGZvciBZSklULiAgQWxzbyBhZGRpbmcgYSBuZXcgaXNlcSB0eXBlIG1lYW5z IGFkZGluZyBtb3JlIGNvbXBsZXhpdHkgdGhhdCB3ZSBkb24ndCBuZWVkIChpZiB0aGlzIHBhdGNo IGlzIGFjY2VwdGVkKS4NCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KRmVhdHVyZSAjMjA0MjU6IE9wdGltaXplIGZvcndhcmRpbmcgY2FsbGVycyBhbmQgY2FsbGVl cw0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzIwNDI1I2NoYW5nZS0xMDc4OTMN Cg0KKiBBdXRob3I6IHRlbmRlcmxvdmVtYWtpbmcgKEFhcm9uIFBhdHRlcnNvbikNCiogU3RhdHVz OiBPcGVuDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpbVGhpcyBQ Ul0oaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9wdWxsLzEwNTEwKSBvcHRpbWl6ZXMgZm9y d2FyZGluZyBjYWxsZXJzIGFuZCBjYWxsZWVzLiBJdCBvbmx5IG9wdGltaXplcyBtZXRob2RzIHRo YXQgb25seSB0YWtlIGAuLi5gIGFzIHRoZWlyIHBhcmFtZXRlciwgYW5kIHRoZW4gcGFzcyBgLi4u YCB0byBvdGhlciBjYWxscy4NCg0KQ2FsbHMgaXQgb3B0aW1pemVzIGxvb2sgbGlrZSB0aGlzOg0K DQpgYGBydWJ5DQpkZWYgYmFyKGEpID0gYQ0KZGVmIGZvbyguLi4pID0gYmFyKC4uLikgIyBvcHRp bWl6ZWQNCmZvbygxMjMpDQpgYGANCg0KYGBgcnVieQ0KZGVmIGJhcihhKSA9IGENCmRlZiBmb28o Li4uKSA9IGJhcigxLCAyLCAuLi4pICMgb3B0aW1pemVkDQpmb28oMTIzKQ0KYGBgDQoNCmBgYHJ1 YnkNCmRlZiBiYXIoKmEpID0gYQ0KDQpkZWYgZm9vKC4uLikNCiAgbGlzdCA9IFsxLCAyXQ0KICBi YXIoKmxpc3QsIC4uLikgIyBvcHRpbWl6ZWQNCmVuZA0KZm9vKDEyMykNCmBgYA0KDQpBbGwgdmFy aWFudHMgb2YgdGhlIGFib3ZlIGJ1dCB1c2luZyBgc3VwZXJgIGFyZSBhbHNvIG9wdGltaXplZCwg aW5jbHVkaW5nIGEgYmFyZSBzdXBlciBsaWtlIHRoaXM6DQoNCmBgYHJ1YnkNCmRlZiBmb28oLi4u KQ0KICBzdXBlcg0KZW5kDQpgYGANCg0KVGhpcyBwYXRjaCBlbGltaW5hdGVzIGludGVybWVkaWF0 ZSBhbGxvY2F0aW9ucyBtYWRlIHdoZW4gY2FsbGluZyBtZXRob2RzIHRoYXQgYWNjZXB0IGAuLi5g Lg0KV2UgY2FuIG9ic2VydmUgYWxsb2NhdGlvbiBlbGltaW5hdGlvbiBsaWtlIHRoaXM6DQoNCmBg YHJ1YnkNCmRlZiBtDQogIHggPSBHQy5zdGF0KDp0b3RhbF9hbGxvY2F0ZWRfb2JqZWN0cykNCiAg eWllbGQNCiAgR0Muc3RhdCg6dG90YWxfYWxsb2NhdGVkX29iamVjdHMpIC0geA0KZW5kDQoNCmRl ZiBiYXIoYSkgPSBhDQpkZWYgZm9vKC4uLikgPSBiYXIoLi4uKQ0KDQpkZWYgdGVzdA0KICBtIHsg Zm9vKDEyMykgfQ0KZW5kDQoNCnRlc3QNCnAgdGVzdCAjIGFsbG9jYXRlcyAxIG9iamVjdCBvbiBt YXN0ZXIsIGJ1dCAwIG9iamVjdHMgd2l0aCB0aGlzIHBhdGNoDQpgYGANCg0KYGBgcnVieQ0KZGVm IGJhcihhLCBiOikgPSBhICsgYg0KZGVmIGZvbyguLi4pID0gYmFyKC4uLikNCg0KZGVmIHRlc3QN CiAgbSB7IGZvbygxLCBiOiAyKSB9DQplbmQNCg0KdGVzdA0KcCB0ZXN0ICMgYWxsb2NhdGVzIDIg b2JqZWN0cyBvbiBtYXN0ZXIsIGJ1dCAwIG9iamVjdHMgd2l0aCB0aGlzIHBhdGNoDQpgYGANCg0K IyMgSG93IGRvZXMgaXQgd29yaz8NCg0KVGhpcyBwYXRjaCB3b3JrcyBieSB1c2luZyBhIGR5bmFt aWMgc3RhY2sgc2l6ZSB3aGVuIHBhc3NpbmcgZm9yd2FyZGVkIHBhcmFtZXRlcnMgdG8gY2FsbGVl cy4NClRoZSBjYWxsZXIncyBpbmZvIG9iamVjdCAoa25vd24gYXMgdGhlICJDSSIpIGNvbnRhaW5z IHRoZSBzdGFjayBzaXplIG9mIHRoZQ0KcGFyYW1ldGVycywgc28gd2UgcGFzcyB0aGUgQ0kgb2Jq ZWN0IGl0c2VsZiBhcyBhIHBhcmFtZXRlciB0byB0aGUgY2FsbGVlLg0KV2hlbiBmb3J3YXJkaW5n IHBhcmFtZXRlcnMsIHRoZSBmb3J3YXJkaW5nIElTZXEgdXNlcyB0aGUgY2FsbGVyJ3MgQ0kgdG8g ZGV0ZXJtaW5lIGhvdyBtdWNoIHN0YWNrIHRvIGNvcHksIHRoZW4gY29waWVzIHRoZSBjYWxsZXIn cyBzdGFjayBiZWZvcmUgY2FsbGluZyB0aGUgY2FsbGVlLg0KVGhlIENJIGF0IHRoZSBmb3J3YXJk ZWQgY2FsbCBzaXRlIGlzIGFkanVzdGVkIHVzaW5nIGluZm9ybWF0aW9uIGZyb20gdGhlIGNhbGxl cidzIENJLg0KDQpJIHRoaW5rIHRoaXMgZGVzY3JpcHRpb24gaXMga2luZCBvZiBjb25mdXNpbmcs IHNvIGxldCdzIHdhbGsgdGhyb3VnaCBhbiBleGFtcGxlIHdpdGggY29kZS4NCg0KYGBgcnVieQ0K ZGVmIGRlbGVnYXRlZShhLCBiKSA9IGEgKyBiDQoNCmRlZiBkZWxlZ2F0b3IoLi4uKQ0KICBkZWxl Z2F0ZWUoLi4uKSAgIyBDSTIgKEZPUldBUkRJTkcpDQplbmQNCg0KZGVmIGNhbGxlcg0KICBkZWxl Z2F0b3IoMSwgMikgIyBDSTEgKGFyZ2M6IDIpDQplbmQNCmBgYA0KDQpCZWZvcmUgd2UgY2FsbCB0 aGUgZGVsZWdhdG9yIG1ldGhvZCwgdGhlIHN0YWNrIGxvb2tzIGxpa2UgdGhpczoNCg0KYGBgDQpF eGVjdXRpbmcgTGluZSB8IENvZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBT dGFjaw0KLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLQ0KICAgICAgICAgICAgICAxfCBkZWYgZGVsZWdhdGVlKGEsIGIpID0gYSAr IGIgICAgICAgICAgIHwgc2VsZg0KICAgICAgICAgICAgICAyfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgMQ0KICAgICAgICAgICAgICAzfCBkZWYgZGVsZWdhdG9yKC4u LikgICAgICAgICAgICAgICAgICAgIHwgMg0KICAgICAgICAgICAgICA0fCAgICMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwNCiAgICAgICAgICAgICAgNXwgICBkZWxlZ2F0ZWUo Li4uKSAgIyBDSTIgKEZPUldBUkRJTkcpICB8DQogICAgICAgICAgICAgIDZ8IGVuZCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KICAgICAgICAgICAgICA3fCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCiAgICAgICAgICAgICAgOHwgZGVmIGNhbGxl ciAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQogICAgICAgICAgLT4gIDl8ICAgZGVsZWdh dG9yKDEsIDIpICMgQ0kxIChhcmdjOiAyKSAgICAgfA0KICAgICAgICAgICAgIDEwfCBlbmQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCmBgYA0KDQpUaGUgSVNlcSBmb3IgYGRl bGVnYXRvcmAgaXMgdGFnZ2VkIGFzICJmb3J3YXJkYWJsZSIsIHNvIHdoZW4gYGNhbGxlcmAgY2Fs bHMgaW4NCnRvIGBkZWxlZ2F0b3JgLCBpdCB3cml0ZXMgYENJMWAgb24gdG8gdGhlIHN0YWNrIGFz IGEgbG9jYWwgdmFyaWFibGUgZm9yIHRoZQ0KYGRlbGVnYXRvcmAgbWV0aG9kLiAgVGhlIGBkZWxl Z2F0b3JgIG1ldGhvZCBoYXMgYSBzcGVjaWFsIGxvY2FsIGNhbGxlZCBgLi4uYA0KdGhhdCBob2xk cyB0aGUgY2FsbGVyJ3MgQ0kgb2JqZWN0Lg0KDQpIZXJlIGlzIHRoZSBJU2VxIGRpc2FzbSBmbyBg ZGVsZWdhdG9yYDoNCg0KYGBgDQo9PSBkaXNhc206ICM8SVNlcTpkZWxlZ2F0b3JALWU6MSAoMSww KS0oMSwzOSk+DQpsb2NhbCB0YWJsZSAoc2l6ZTogMSwgYXJnYzogMCBbb3B0czogMCwgcmVzdDog LTEsIHBvc3Q6IDAsIGJsb2NrOiAtMSwga3c6IC0xQC0xLCBrd3Jlc3Q6IC0xXSkNClsgMV0gIi4u LiJAMA0KMDAwMCBwdXRzZWxmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICggICAxKVtMaUNhXQ0KMDAwMSBnZXRsb2NhbF9XQ18wICAgICAg ICAgICAgICAgICAgICAgICAgICAiLi4uIkAwDQowMDAzIHNlbmQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxjYWxsZGF0YSFtaWQ6ZGVsZWdhdGVlLCBhcmdjOjAsIEZDQUxMfEZP UldBUkRJTkc+LCBuaWwNCjAwMDYgbGVhdmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgW1JlXQ0KYGBgDQoNClRoZSBsb2NhbCBjYWxsZWQgYC4uLmAgd2lsbCBjb250YWluIHRoZSBj YWxsZXIncyBDSTogQ0kxLg0KDQpIZXJlIGlzIHRoZSBzdGFjayB3aGVuIHdlIGVudGVyIGBkZWxl Z2F0b3JgOg0KDQoNCmBgYA0KRXhlY3V0aW5nIExpbmUgfCBDb2RlICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgU3RhY2sNCi0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0NCiAgICAgICAgICAgICAgMXwgZGVmIGRl bGVnYXRlZShhLCBiKSA9IGEgKyBiICAgICAgICAgICB8IHNlbGYNCiAgICAgICAgICAgICAgMnwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDENCiAgICAgICAgICAgICAg M3wgZGVmIGRlbGVnYXRvciguLi4pICAgICAgICAgICAgICAgICAgICB8IDINCiAgICAgICAgICAg LT4gNHwgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENJMSAoYXJnYzog MikNCiAgICAgICAgICAgICAgNXwgICBkZWxlZ2F0ZWUoLi4uKSAgIyBDSTIgKEZPUldBUkRJTkcp ICB8IGNyZWZfb3JfbWUNCiAgICAgICAgICAgICAgNnwgZW5kICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IHNwZWN2YWwNCiAgICAgICAgICAgICAgN3wgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IHR5cGUNCiAgICAgICAgICAgICAgOHwgZGVmIGNhbGxl ciAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQogICAgICAgICAgICAgIDl8ICAgZGVsZWdh dG9yKDEsIDIpICMgQ0kxIChhcmdjOiAyKSAgICAgfA0KICAgICAgICAgICAgIDEwfCBlbmQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCmBgYA0KDQpUaGUgQ0kgYXQgYGRlbGVn YXRlZWAgb24gbGluZSA1IGlzIHRhZ2dlZCBhcyAiRk9SV0FSRElORyIsIHNvIGl0IGtub3dzIHRv DQptZW1jb3B5IHRoZSBjYWxsZXIncyBzdGFjayBiZWZvcmUgY2FsbGluZyBgZGVsZWdhdGVlYC4g IEluIHRoaXMgY2FzZSwgaXQgd2lsbA0KbWVtY29weSBzZWxmLCAxLCBhbmQgMiB0byB0aGUgc3Rh Y2sgYmVmb3JlIGNhbGxpbmcgYGRlbGVnYXRlZWAuICBJdCBrbm93cyBob3cgbXVjaA0KbWVtb3J5 IHRvIGNvcHkgZnJvbSB0aGUgY2FsbGVyIGJlY2F1c2UgYENJMWAgY29udGFpbnMgc3RhY2sgc2l6 ZSBpbmZvcm1hdGlvbg0KKGFyZ2M6IDIpLg0KDQpCZWZvcmUgZXhlY3V0aW5nIHRoZSBgc2VuZGAg aW5zdHJ1Y3Rpb24sIHdlIHB1c2ggYC4uLmAgb24gdGhlIHN0YWNrLiAgVGhlDQpgc2VuZGAgaW5z dHJ1Y3Rpb24gcG9wcyBgLi4uYCwgYW5kIGJlY2F1c2UgaXQgaXMgdGFnZ2VkIHdpdGggYEZPUldB UkRJTkdgLCBpdA0Ka25vd3MgdG8gbWVtY29weSAodXNpbmcgdGhlIGluZm9ybWF0aW9uIGluIHRo ZSBDSSBpdCBqdXN0IHBvcHBlZCk6DQoNCmBgYA0KPT0gZGlzYXNtOiAjPElTZXE6ZGVsZWdhdG9y QC1lOjEgKDEsMCktKDEsMzkpPg0KbG9jYWwgdGFibGUgKHNpemU6IDEsIGFyZ2M6IDAgW29wdHM6 IDAsIHJlc3Q6IC0xLCBwb3N0OiAwLCBibG9jazogLTEsIGt3OiAtMUAtMSwga3dyZXN0OiAtMV0p DQpbIDFdICIuLi4iQDANCjAwMDAgcHV0c2VsZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICAgMSlbTGlDYV0NCjAwMDEgZ2V0bG9jYWxf V0NfMCAgICAgICAgICAgICAgICAgICAgICAgICAgIi4uLiJAMA0KMDAwMyBzZW5kICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2FsbGRhdGEhbWlkOmRlbGVnYXRlZSwgYXJnYzow LCBGQ0FMTHxGT1JXQVJESU5HPiwgbmlsDQowMDA2IGxlYXZlICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFtSZV0NCmBgYA0KDQpJbnN0cnVjdGlvbiAwMDEgcHV0cyB0aGUgY2FsbGVy J3MgQ0kgb24gdGhlIHN0YWNrLiAgYHNlbmRgIGlzIHRhZ2dlZCB3aXRoDQpGT1JXQVJESU5HLCBz byBpdCByZWFkcyB0aGUgQ0kgYW5kIF9jb3BpZXNfIHRoZSBjYWxsZXJzIHN0YWNrIHRvIHRoaXMg c3RhY2s6DQoNCmBgYA0KRXhlY3V0aW5nIExpbmUgfCBDb2RlICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgU3RhY2sNCi0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0NCiAgICAgICAgICAgICAgMXwgZGVmIGRlbGVn YXRlZShhLCBiKSA9IGEgKyBiICAgICAgICAgICB8IHNlbGYNCiAgICAgICAgICAgICAgMnwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDENCiAgICAgICAgICAgICAgM3wg ZGVmIGRlbGVnYXRvciguLi4pICAgICAgICAgICAgICAgICAgICB8IDINCiAgICAgICAgICAgICAg NHwgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENJMSAoYXJnYzogMikN CiAgICAgICAgICAgLT4gNXwgICBkZWxlZ2F0ZWUoLi4uKSAgIyBDSTIgKEZPUldBUkRJTkcpICB8 IGNyZWZfb3JfbWUNCiAgICAgICAgICAgICAgNnwgZW5kICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IHNwZWN2YWwNCiAgICAgICAgICAgICAgN3wgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IHR5cGUNCiAgICAgICAgICAgICAgOHwgZGVmIGNhbGxlciAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlbGYNCiAgICAgICAgICAgICAgOXwgICBkZWxl Z2F0b3IoMSwgMikgIyBDSTEgKGFyZ2M6IDIpICAgICB8IDENCiAgICAgICAgICAgICAxMHwgZW5k ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDINCmBgYA0KDQpUaGUgIkZPUldB UkRJTkciIGNhbGwgc2l0ZSBjb21iaW5lcyBpbmZvcm1hdGlvbiBmcm9tIENJMSB3aXRoIENJMiBp biBvcmRlcg0KdG8gc3VwcG9ydCBwYXNzaW5nIG90aGVyIHZhbHVlcyBpbiBhZGRpdGlvbiB0byB0 aGUgYC4uLmAgdmFsdWUsIGFzIHdlbGwgYXMNCnBlcmZlY3RseSBmb3J3YXJkIHNwbGF0IGFyZ3Ms IGt3YXJncywgZXRjLg0KDQpTaW5jZSB3ZSdyZSBhYmxlIHRvIGNvcHkgdGhlIHN0YWNrIGZyb20g YGNhbGxlcmAgaW4gdG8gYGRlbGVnYXRvcmAncyBzdGFjaywgd2UNCmNhbiBhdm9pZCBhbGxvY2F0 aW5nIG9iamVjdHMuDQoNCiMjIFdoeT8NCg0KSSB3YW50IHRvIGRvIHRoaXMgdG8gZWxpbWluYXRl IG9iamVjdCBhbGxvY2F0aW9ucyBmb3IgZGVsZWdhdGUgbWV0aG9kcy4NCk15IGxvbmcgdGVybSBn b2FsIGlzIHRvIGltcGxlbWVudCBgQ2xhc3MjbmV3YCBpbiBSdWJ5IGFuZCBpdCB1c2VzIGAuLi5g Lg0KDQpJIHdhcyBhYmxlIHRvIGltcGxlbWVudCBgQ2xhc3MjbmV3YCBpbiBSdWJ5DQpbaGVyZV0o aHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9wdWxsLzkyODkpLg0KSWYgd2UgYWRvcHQgdGhl IHRlY2huaXF1ZSBpbiB0aGlzIHBhdGNoLCB0aGVuIHdlIGNhbiBvcHRpbWl6ZSBhbGxvY2F0aW5n DQpvYmplY3RzIHRoYXQgdGFrZSBrZXl3b3JkIHBhcmFtZXRlcnMgZm9yIGBpbml0aWFsaXplYC4N Cg0KRm9yIGV4YW1wbGUsIHRoaXMgY29kZSB3aWxsIGFsbG9jYXRlIDIgb2JqZWN0czogb25lIGZv ciBgU29tZU9iamVjdGAsIGFuZCBvbmUNCmZvciB0aGUga3dhcmdzOg0KDQpgYGBydWJ5DQpTb21l T2JqZWN0Lm5ldyhmb286IDEpDQpgYGANCg0KSWYgd2UgY29tYmluZSB0aGlzIHRlY2huaXF1ZSwg cGx1cyBpbXBsZW1lbnQgYENsYXNzI25ld2AgaW4gUnVieSwgdGhlbiB3ZSBjYW4NCnJlZHVjZSBh bGxvY2F0aW9ucyBmb3IgdGhpcyBjb21tb24gb3BlcmF0aW9uLg0KDQoNCg0KLS0gDQpodHRwczov L2J1Z3MucnVieS1sYW5nLm9yZy8NCiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCiBydWJ5LWNvcmUgbWFpbGluZyBsaXN0IC0tIHJ1YnktY29yZUBtbC5ydWJ5 LWxhbmcub3JnCiBUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIHJ1YnktY29yZS1sZWF2 ZUBtbC5ydWJ5LWxhbmcub3JnCiBydWJ5LWNvcmUgaW5mbyAtLSBodHRwczovL21sLnJ1YnktbGFu Zy5vcmcvbWFpbG1hbjMvcG9zdG9yaXVzL2xpc3RzL3J1YnktY29yZS5tbC5ydWJ5LWxhbmcub3Jn Lw==