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.1 required=3.0 tests=AWL,BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_BL_SPAMCOP_NET,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,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 DDEBB1F8C8 for ; Mon, 4 Oct 2021 19:16:32 +0000 (UTC) Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id DF9B71211F8; Tue, 5 Oct 2021 04:16:30 +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 5B62F1211F0 for ; Tue, 5 Oct 2021 04:16:28 +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=LSdqfFaTATl8G9kmwQUh9VjfHWI1Q5ofc/Z/rl/Kh3s=; b=gTD8XJI28adVbT6mtMnJ9zX33LY/rHw7F5nPiBCkECwG3igiHiS7nZo9u1rO5iduTUag neD3Adf2dHMGc3bdcHT0vS50TFGjqgd3T+GiQVwdAWVf2yabTm9GtlizQzvo4FgUETH1H2 ZZQ8rCKWvNJW2nrypiFhf3HtXnksTYbj0= Received: by filterdrecv-55446c4d49-vwc7m with SMTP id filterdrecv-55446c4d49-vwc7m-1-615B530A-24 2021-10-04 19:16:26.325574347 +0000 UTC m=+2840132.100716813 Received: from herokuapp.com (unknown) by ismtpd0154p1iad2.sendgrid.net (SG) with ESMTP id bl2hBndHT76jj21BcypBjw for ; Mon, 04 Oct 2021 19:16:26.315 +0000 (UTC) Date: Mon, 04 Oct 2021 19:16:26 +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: 18239 X-Redmine-Issue-Author: peterzhu2118 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: 81757 X-SG-EID: =?us-ascii?Q?YkmFGMrQnymZs=2F4gaHJnvrsFPAGAfVipS20r=2FEutHlZKBkOXJV3+2vYlfF3wrB?= =?us-ascii?Q?u+wzn1=2FYobjg0PO+JI9qcf5+8ySok8TEb6EAJY=2F?= =?us-ascii?Q?jQGHnNE2lpxPuGZ8=2F6ph=2FwBzM+JiYkriB3L0xwC?= =?us-ascii?Q?xHCmyfiofSU0in6Eg=2F07z4Jpc2xIAtb14aT4jr4?= =?us-ascii?Q?MRQPieAQ3BtAdx9mhAmMC3io6ZlZZTlYFgI80lj?= =?us-ascii?Q?Wzrd7vAOSOYx+FMo6+2yQ9HxG+4L0oKTWOTzDfF?= =?us-ascii?Q?zll8BZkmxtkPWZn7ntGrA=3D=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 105550 Subject: [ruby-core:105550] [Ruby master Feature#18239] Variable Width Allocation: Strings 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" SXNzdWUgIzE4MjM5IGhhcyBiZWVuIHVwZGF0ZWQgYnkga28xIChLb2ljaGkgU2FzYWRhKS4KCgoq IFBlcmZvcm1hbmNlOgogICogUDQuIGBHQy5jb21wYWN0YCBjYW4gYmUgc2xvd2VyIHRoYW4gRldB IGJlY2F1c2UgaXQgc2hvdWxkIGJlIGNvcHkgdGhlIGJvZHkuIEJ1dCBtYXliZSBpdCBpcyBub3Qg YSBtYXR0ZXIuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkZlYXR1 cmUgIzE4MjM5OiBWYXJpYWJsZSBXaWR0aCBBbGxvY2F0aW9uOiBTdHJpbmdzCmh0dHBzOi8vYnVn cy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xODIzOSNjaGFuZ2UtOTQwMDYKCiogQXV0aG9yOiBwZXRl cnpodTIxMTggKFBldGVyIFpodSkKKiBTdGF0dXM6IE9wZW4KKiBQcmlvcml0eTogTm9ybWFsCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBHaXRIdWIgUFI6IGh0dHBz Oi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvaXNzdWVzLzQ5MzMKCiMgRmVhdHVyZSBkZXNjcmlwdGlv bgoKU2luY2UgbWVyZ2luZyAjMTgwNDUgd2hpY2ggaW50cm9kdWNlZCBzaXplIHBvb2xzIGluc2lk ZSB0aGUgR0MgdG8gYWxsb2NhdGUgdmFyaW91cyBzaXplZCBzbG90cywgd2UndmUgYmVlbiB3b3Jr aW5nIG9uIGV4cGFuZGluZyB0aGUgdXNhZ2Ugb2YgVldBIGludG8gbW9yZSB0eXBlcyAoYmVmb3Jl IHRoaXMgcGF0Y2gsIG9ubHkgY2xhc3NlcyBhcmUgYWxsb2NhdGVkIHRocm91Z2ggVldBKS4gVGhp cyBwYXRjaCBjaGFuZ2VzIHN0cmluZ3MgdG8gdXNlIFZXQS4KCiMjIFN1bW1hcnkKCi0gVGhpcyBw YXRjaCBhbGxvY2F0ZXMgc3RyaW5ncyB1c2luZyBWV0EuCi0gU3RyaW5nIGVtYmVkZGVkIHRocm91 Z2ggVldBIGFyZSBlbWJlZGRlZC4gVGhlIHBhdGNoIGNoYW5nZXMgc3RyaW5ncyB0byBzdXBwb3J0 IGR5bmFtaWMgY2FwYWNpdHkgZW1iZWRkZWQgc3RyaW5ncy4KLSBXZSBkbyBub3QgaGFuZGxlIHJl c2l6aW5nIGluIFZXQSBpbiB0aGlzIHBhdGNoIChlbWJlZGRlZCBzdHJpbmdzIHJlc2l6ZWQgdXAg YXJlIG1vdmVkIGJhY2sgdG8gbWFsbG9jKSwgd2hpY2ggbWF5IHJlc3VsdCBpbiB3YXN0ZWQgc3Bh Y2UuIEhvd2V2ZXIsIGluIGJlbmNobWFya3MsIHRoaXMgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGFu IGlzc3VlLgotIFdlIHByb3Bvc2UgZW5hYmxpbmcgVldBIGJ5IGRlZmF1bHQuIFdlIGFyZSBjb25m aWRlbnQgYWJvdXQgdGhlIHN0YWJpbGl0eSBhbmQgcGVyZm9ybWFuY2Ugb2YgdGhpcyBmZWF0dXJl LgoKIyMgU3RyaW5nIGFsbG9jYXRpb24KClN0cmluZ3Mgd2l0aCBrbm93biBzaXplcyBhdCBhbGxv Y2F0aW9uIHRpbWUgdGhhdCBhcmUgc21hbGwgZW5vdWdoIGlzIGFsbG9jYXRlZCBhcyBhbiBlbWJl ZGRlZCBzdHJpbmcuIEVtYmVkZGVkIHN0cmluZyBoZWFkZXJzIGFyZSBub3cgMTggYnl0ZXMsIHNv IHRoZSBtYXhpbXVtIGVtYmVkZGVkIHN0cmluZyBsZW5ndGggaXMgbm93IDMwMiBieXRlcyAoY3Vy cmVudGx5IFZXQSBpcyBjb25maWd1cmVkIHRvIGFsbG9jYXRlIHVwIHRvIDMyMCBieXRlIHNsb3Rz LCBidXQgY2FuIGJlIGVhc2lseSBjb25maWd1cmVkIGZvciBldmVuIGxhcmdlciBzbG90cykuIEVt YmVkZGVkIHN0cmluZ3MgaGF2ZSB0aGVpciBjb250ZW50cyBkaXJlY3RseSBmb2xsb3cgdGhlIG9i amVjdCBoZWFkZXJzLiBUaGlzIGFpbXMgdG8gaW1wcm92ZSBjYWNoZSBwZXJmb3JtYW5jZSBzaW5j ZSB0aGUgY29udGVudHMgYXJlIG9uIHRoZSBzYW1lIGNhY2hlIGxpbmUgYXMgdGhlIG9iamVjdCBo ZWFkZXJzLiBGb3Igc3RyaW5ncyB3aXRoIHVua25vd24gc2l6ZXMsIG9yIHdpdGggY29udGVudHMg dGhhdCBhcmUgdG9vIGxhcmdlLCBpdCBmYWxscyBiYWNrIHRvIGFsbG9jYXRlIDQwIGJ5dGUgc2xv dHMgYW5kIHN0b3JlIHRoZSBjb250ZW50cyBpbiB0aGUgbWFsbG9jIGhlYXAuCgojIyBTdHJpbmcg cmVhbGxvY2F0aW9uCgpJZiBhbiBlbWJlZGRlZCBzdHJpbmcgaXMgZXhwYW5kZWQgYW5kIGNhbiBu byBsb25nZXIgZmlsbCB0aGUgc2xvdCwgaXQgaXMgbW92ZWQgaW50byB0aGUgbWFsbG9jIGhlYXAu IFRoaXMgbWF5IG1lYW4gdGhhdCBzb21lIHNwYWNlIGluIHRoZSBzbG90IGlzIHdhc3RlZC4gRm9y IGV4YW1wbGUsIGlmIHRoZSBzdHJpbmcgd2FzIG9yaWdpbmFsbHkgYWxsb2NhdGVkIGluIGEgMTYw IGJ5dGUgc2xvdCBhbmQgbW92ZWQgdG8gdGhlIG1hbGxvYyBoZWFwLCAxMjAgYnl0ZXMgb2YgdGhl IHNsb3QgaXMgd2FzdGVkIChzaW5jZSB3ZSBvbmx5IG5lZWQgNDAgYnl0ZXMgZm9yIGEgc3RyaW5n IHdpdGggY29udGVudHMgb24gdGhlIG1hbGxvYyBoZWFwKS4gVGhpcyBwYXRjaCBkb2VzIG5vdCBh aW0gdG8gdGFja2xlIHRoaXMgaXNzdWUuIE1lbW9yeSB1c2FnZSBhbHNvIGRvZXMgbm90IGFwcGVh ciB0byBiZSBhbiBpc3N1ZSBpbiBhbnkgb2YgdGhlIGJlbmNobWFya3MuCgojIyBJbmNvbXBhdGli aWxpdHkgb2YgVldBIGFuZCBub24tVldBIGJ1aWx0IGdlbXMKCkdlbXMgd2l0aCBuYXRpdmUgZXh0 ZW5zaW9ucyBidWlsdCB3aXRoIFZXQSBhcmUgbm90IGNvbXBhdGlibGUgd2l0aCBub24tVldBIGJ1 aWx0IGdlbXMgKGFuZCB2aWNlIHZlcnNhKS4gV2hlbiBzd2l0Y2hpbmcgYmV0d2VlbiBWV0EgYW5k IG5vbi1WV0EgcnViaWVzLCBnZW1zIG11c3QgYmUgcmVidWlsdC4gVGhpcyBpcyBiZWNhdXNlIHRo ZSBoZWFkZXIgZmlsZSBgcnN0cmluZy5oYCBjaGFuZ2VzIGRlcGVuZGluZyBvbiB3aGV0aGVyIGBV U0VfUlZBUkdDYCBpcyBzZXQgb3Igbm90ICh0aGUgaW50ZXJuYWwgc3RyaW5nIGltcGxlbWVudGF0 aW9uIGNoYW5nZXMgd2l0aCBWV0EpLgoKIyMgRW5hYmxpbmcgVldBIGJ5IGRlZmF1bHQKCkluIHRo aXMgcGF0Y2gsIHdlIHByb3Bvc2UgZW5hYmxpbmcgVldBIGJ5IGRlZmF1bHQuIFdlIGJlbGlldmUg dGhhdCB0aGUgcGVyZm9ybWFuY2UgZGF0YSBzdXBwb3J0cyB0aGlzIChzZWUgdGhlIFtiZW5jaG1h cmsgcmVzdWx0c10oI0JlbmNobWFyay1yZXN1bHRzKSBzZWN0aW9uKS4gV2UncmUgYWxzbyBjb25m aWRlbnQgYWJvdXQgaXRzIHN0YWJpbGl0eS4gSXQgcGFzc2VzcyBhbGwgdGVzdHMgb24gQ0kgZm9y IHRoZSBTaG9waWZ5IG1vbm9saXRoIGFuZCB3ZSd2ZSByYW4gdGhpcyB2ZXJzaW9uIG9mIFJ1Ynkg b24gYSBzbWFsbCBwb3J0aW9uIG9mIHByb2R1Y3Rpb24gdHJhZmZpYyBpbiBhIFNob3BpZnkgc2Vy dmljZSBmb3IgYWJvdXQgYSB3ZWVrICh3aGVyZSBpdCBzZXJ2ZWQgb3ZlciA1MDAgbWlsbGlvbiBy ZXF1ZXN0cykuCgpBbHRob3VnaCBWV0EgaXMgZW5hYmxlZCBieSBkZWZhdWx0LCB3ZSBwbGFuIG9u IHN1cHBvcnRpbmcgdGhlIGBVU0VfUlZBUkdDYCBmbGFnIGFzIGFuIGVzY2FwZSBoYXRjaCB0byBk aXNhYmxlIFZXQSB1bnRpbCBhdCBsZWFzdCBSdWJ5IDMuMSBpcyByZWxlYXNlZCAoaS5lLiB3ZSBt YXkgcmVtb3ZlIGl0IHN0YXJ0aW5nIDIwMjIpLgoKIyBCZW5jaG1hcmsgc2V0dXAKCkJlbmNobWFy a2luZyB3YXMgZG9uZSBvbiBhIGJhcmUtbWV0YWwgVWJ1bnR1IG1hY2hpbmUgb24gQVdTLiBBbGwg YmVuY2htYXJrIHJlc3VsdHMgYXJlIHVzaW5nIGdsaWJjIGJ5IGRlZmF1bHQsIGV4Y2VwdCB3aGVu IGplbWFsbG9jIGlzIGV4cGxpY2l0bHkgc3BlY2lmaWVkLgoKYGBgCiQgdW5hbWUgLWEKTGludXgg NS44LjAtMTAzOC1hd3MgIzQwfjIwLjA0LjEtVWJ1bnR1IFNNUCBUaHUgSnVuIDE3IDEzOjI1OjI4 IFVUQyAyMDIxIHg4Nl82NCB4ODZfNjQgeDg2XzY0IEdOVS9MaW51eApgYGAKCmdsaWJjIHZlcnNp b246CgpgYGAKJCBsZGQgLS12ZXJzaW9uCmxkZCAoVWJ1bnR1IEdMSUJDIDIuMzEtMHVidW50dTku MikgMi4zMQpDb3B5cmlnaHQgKEMpIDIwMjAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu ClRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0 aW9ucy4gIFRoZXJlIGlzIE5PCndhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgpXcml0dGVuIGJ5IFJvbGFuZCBN Y0dyYXRoIGFuZCBVbHJpY2ggRHJlcHBlci4KYGBgCgpqZW1hbGxvYyB2ZXJzaW9uOgoKYGBgCiQg YXB0IGxpc3QgLS1pbnN0YWxsZWQgfCBncmVwIGplbWFsbG9jCgpXQVJOSU5HOiBhcHQgZG9lcyBu b3QgaGF2ZSBhIHN0YWJsZSBDTEkgaW50ZXJmYWNlLiBVc2Ugd2l0aCBjYXV0aW9uIGluIHNjcmlw dHMuCgpsaWJqZW1hbGxvYy1kZXYvZm9jYWwsbm93IDUuMi4xLTF1YnVudHUxIGFtZDY0IFtpbnN0 YWxsZWRdCmxpYmplbWFsbG9jMi9mb2NhbCxub3cgNS4yLjEtMXVidW50dTEgYW1kNjQgW2luc3Rh bGxlZCxhdXRvbWF0aWNdCmBgYAoKVG8gbWVhc3VyZSBtZW1vcnkgdXNhZ2Ugb3ZlciB0aW1lLCB0 aGUgW21zdGF0IHRvb2xdKGh0dHBzOi8vZ2l0aHViLmNvbS9icG93ZXJzL21zdGF0KSB3YXMgdXNl ZC4KClJ1YnkgbWFzdGVyIHdhcyBiZW5jaG1hcmtlZCBvbiBjb21taXQgWzdhZGZiMTRmNjBdKGh0 dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvY29tbWl0LzdhZGZiMTRmNjApLiBUaGUgYnJhbmNo IHdhcyByZWJhc2VkIG9uIHRvcCBvZiB0aGUgc2FtZSBjb21taXQuCgpQZXJmb3JtYW5jZSBiZW5j aG1hcmtzIG9mIHRoaXMgYnJhbmNoIHdpdGhvdXQgVldBIHR1cm5lZCBvbiBhcmUgaW5jbHVkZWQg dG8gbWFrZSBzdXJlIHRoaXMgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGEgcGVyZm9ybWFuY2Ug cmVncmVzc2lvbiBjb21wYXJlZCB0byBtYXN0ZXIuCgojIEJlbmNobWFyayByZXN1bHRzCgojIyBT dW1tYXJ5CgotIE9uIGEgbGl2ZSwgcHJvZHVjdGlvbiBTaG9waWZ5IHNlcnZpY2UsIHdlIHNlZSBu byBzaWduaWZpY2FudCBkaWZmZXJlbmNlcyBpbiByZXNwb25zZSB0aW1lcy4gSG93ZXZlciwgVldB IGhhcyBsb3dlciBtZW1vcnkgdXNhZ2UuCi0gT24gcmFpbHNiZW5jaCwgd2Ugc2VlIGEgbWlub3Ig cGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQuIEhvd2V2ZXIsIHdlIGFsc28gc2VlIHdvcnNlIHAxMDAg cmVzcG9uc2UgdGltZXMuIFRoZSByZWFzb24gaXMgYW5hbHl6ZWQgaW4gdGhlIFtyYWlsc2JlbmNo XSgjcmFpbHNiZW5jaCkgc2VjdGlvbiBiZWxvdy4gVldBIHVzZXMgbW9yZSBtZW1vcnkgd2hlbiB1 c2luZyBnbGliYywgYnV0IHVzZXMgYW4gZXF1YWwgYW1vdW50IG9mIG1lbW9yeSBmb3IgamVtYWxs b2MuCi0gT24gcmRvYyBnZW5lcmF0aW9uLCBWV0EgdXNlcyBzaWduaWZpY2FudGx5IGxlc3MgbWVt b3J5IGZvciBhIHNtYWxsIHJlZHVjdGlvbiBpbiBwZXJmb3JtYW5jZS4KLSBNaWNyb2JlbmNobWFy a3Mgc2hvdyBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCBmb3Igc3RyaW5ncyB0 aGF0IGFyZSBlbWJlZGRlZCBpbiBWV0EgKGUuZy4gYFN0cmluZyM9PWAgaXMgc2lnbmlmaWNhbnRs eSBmYXN0ZXIpLgoKIyMgU2hvcGlmeSBwcm9kdWN0aW9uCgpXZSBkZXBsb3llZCB0aGlzIGJyYW5j aCB3aXRoIFZXQSBlbmFibGVkIHZzLiBSdWJ5IG1hc3RlciBjb21taXQgN2FkZmIxNGY2MCBvbiBh IHNtYWxsIHBvcnRpb24gb2YgbGl2ZSwgcHJvZHVjdGlvbiB0cmFmZmljIGZvciBhIFNob3BpZnkg d2ViIGFwcGxpY2F0aW9uIHRvIHRlc3QgcmVhbC13b3JsZCBwZXJmb3JtYW5jZS4gVGhpcyBkYXRh IHdhcyBjb2xsZWN0ZWQgZm9yIGEgcGVyaW9kIG9mIDEgZGF5IHdoZXJlIHRoZXkgZWFjaCBzZXJ2 ZWQgYXBwcm94aW1hdGVseSA4NCBtaWxsaW9uIHJlcXVlc3RzLiBBdmVyYWdlLCBtZWRpYW4sIHA5 MCwgcDk5IHJlc3BvbnNlIHRpbWVzIHdlcmUgd2l0aGluIHRoZSBtYXJnaW4gb2YgZXJyb3Igb2Yg ZWFjaCBvdGhlciAoPDElIGRpZmZlcmVuY2UpLiBIb3dldmVyLCBWV0EgY29uc2lzdGVudGx5IGhh ZCBsb3dlciBtZW1vcnkgdXNhZ2UgKFJlc2lkZW50IFNldCBTaXplKSBieSAwLjk2eC4KCiMjIHJh aWxzYmVuY2gKCkZvciByYWlsc2JlbmNoLCB3ZSByYW4gdGhlIFtyYWlsc2JlbmNoIGJlbmNobWFy a10oaHR0cHM6Ly9naXRodWIuY29tL2swa3VidW4vcmFpbHNiZW5jaC9ibG9iL21hc3Rlci9iaW4v YmVuY2gpLiBGb3IgYm90aCB0aGUgcGVyZm9ybWFuY2UgYW5kIG1lbW9yeSBiZW5jaG1hcmtzLCAy NSBydW5zIHdlcmUgY29uZHVjdGVkIGZvciBlYWNoIGNvbWJpbmF0aW9uIChicmFuY2ggKyBnbGli YywgbWFzdGVyICsgZ2xpYmMsIGJyYW5jaCArIGplbWFsbG9jLCBtYXN0ZXIgKyBqZW1hbGxvYyku CgpJbiB0aGlzIGJlbmNobWFyaywgVldBIHN1ZmZlcnMgZnJvbSBwb29yIHAxMDAuIFRoaXMgaXMg YmVjYXVzZSByYWlsc2JlbmNoIGlzIHJlbGF0aXZlbHkgc21hbGwgKG9ubHkgb25lIGNvbnRyb2xs ZXIgYW5kIG1vZGVsKSwgc28gdGhlcmUgYXJlIG5vdCBtYW55IHBhZ2VzIGluIGVhY2ggc2l6ZSBw b29scy4gSW5jcmVtZW50YWwgbWFya2luZyByZXF1aXJlcyB0aGVyZSB0byBiZSBtYW55IHBvb2xl ZCBwYWdlcywgYnV0IGJlY2F1c2UgdGhlcmUgYXJlIG5vdCBhIGxvdCBvZiBwb29sZWQgcGFnZXMg KGR1ZSB0byB0aGUgc21hbGwgaGVhcCBzaXplKSwgaXQgaGFzIHRvIG1hcmsgYSB2ZXJ5IGxhcmdl IG51bWJlciBvZiBvYmplY3RzIGF0IGV2ZXJ5IHN0ZXAuIFdlIGRvIG5vdCBleHBlY3QgdGhpcyB0 byBiZSBhIHByb2JsZW0gZm9yIHJlYWwgYXBwcyB3aXRoIGEgbGFyZ2VyIG51bWJlciBvZiBvYmpl Y3RzIGFsbG9jYXRlZCBhdCBib290LCBhbmQgdGhpcyBpcyBjb25maXJtZWQgYnkgbWV0cmljcyBj b2xsZWN0ZWQgaW4gdGhlIFtTaG9waWZ5IHByb2R1Y3Rpb24gYXBwbGljYXRpb25dKCNTaG9waWZ5 LXByb2R1Y3Rpb24pLgoKIyMjIGdsaWJjCgpVc2luZyBnbGliYywgVldBIGlzIGFib3V0IDEuMDE4 eCBmYXN0ZXIgdGhhbiBtYXN0ZXIgaW4gcmFpbHNiZW5jaCBpbiB0aHJvdWdocHV0IChSUFMpLgoK YGBgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rCnwgICAgICAgICAgIHwgQnJhbmNoIChWV0Egb24pIHwgQnJhbmNoIChWV0Egb2ZmKSB8 IE1hc3RlciB8CistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rCnwgUlBTICAgICAgIHwgNzQwLjkyICAgICAgICAgIHwgNzIyLjk3ICAgICAg ICAgICB8IDc0NS4zMSB8CnwgcDUwIChtcykgIHwgMS4zMSAgICAgICAgICAgIHwgMS4zNyAgICAg ICAgICAgICB8IDEuMzMgICB8CnwgcDkwIChtcykgIHwgMS40MCAgICAgICAgICAgIHwgMS40NSAg ICAgICAgICAgICB8IDEuNDMgICB8CnwgcDk5IChtcykgIHwgMi4zNiAgICAgICAgICAgIHwgMS44 MCAgICAgICAgICAgICB8IDEuNzggICB8CnwgcDEwMCAobXMpIHwgMjEuMzggICAgICAgICAgIHwg MTcuMjggICAgICAgICAgICB8IDE1LjE1ICB8CistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rCmBgYAoKIVtdKGh0dHBzOi8vaS5pbWd1ci5j b20vOXlKM2ZPNS5wbmcpCgpBdmVyYWdlIG1heCBtZW1vcnkgdXNhZ2UgZm9yIFZXQTogMTA0Ljgy IE1CCgpBdmVyYWdlIG1heCBtZW1vcnkgdXNhZ2UgZm9yIG1hc3RlcjogMTAxLjE3IE1CCgpWV0Eg dXNlcyAxLjA0eCBtb3JlIG1lbW9yeS4KCiMjIyBqZW1hbGxvYwoKVXNpbmcgZ2xpYmMsIFZXQSBp cyBhYm91dCAxLjA2eCBmYXN0ZXIgdGhhbiBtYXN0ZXIgaW4gcmFpbHNiZW5jaCBpbiBSUFMuCgpg YGAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSsKfCAgICAgICAgICAgfCBCcmFuY2ggKFZXQSBvbikgfCBCcmFuY2ggKFZXQSBvZmYpIHwg TWFzdGVyIHwKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLSsKfCBSUFMgICAgICAgfCA3ODEuMjEgICAgICAgICAgfCA3NDIuMTIgICAgICAg ICAgIHwgNzM5LjA0IHwKfCBwNTAgKG1zKSAgfCAxLjI1ICAgICAgICAgICAgfCAxLjMxICAgICAg ICAgICAgIHwgMS4zMCAgIHwKfCBwOTAgKG1zKSAgfCAxLjMyICAgICAgICAgICAgfCAxLjM5ICAg ICAgICAgICAgIHwgMS4zOCAgIHwKfCBwOTkgKG1zKSAgfCAyLjE1ICAgICAgICAgICAgfCAyLjUz ICAgICAgICAgICAgIHwgNC40MSAgIHwKfCBwMTAwIChtcykgfCAyMS4xMSAgICAgICAgICAgfCAx Ni42MCAgICAgICAgICAgIHwgMTUuNzUgIHwKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSsKYGBgCgohW10oaHR0cHM6Ly9pLmltZ3VyLmNv bS9ObHRicXEwLnBuZykKCkF2ZXJhZ2UgbWF4IG1lbW9yeSB1c2FnZSBmb3IgVldBOiAxMDIuNjgg TUIKCkF2ZXJhZ2UgbWF4IG1lbW9yeSB1c2FnZSBmb3IgbWFzdGVyOiAxMDMuMTQgTUIKClZXQSB1 c2VzIDEuMDB4IGxlc3MgbWVtb3J5LgoKIyMgcmRvYyBnZW5lcmF0aW9uCgpJbiByZG9jIGdlbmVy YXRpb24sIHdlIHNlZSBzaWduaWZpY2FudCBtZW1vcnkgdXNhZ2UgcmVkdWN0aW9uIGF0IHRoZSBj b3N0IG9mIHNtYWxsIHBlcmZvcm1hbmNlIHJlZHVjdGlvbi4KCiMjIyBnbGliYwoKYGBgCistLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSsKfCAgICAgICAgICAgfCBCcmFuY2ggKFZXQSBvbikgfCBCcmFuY2ggKFZXQSBv ZmYpIHwgTWFzdGVyIHwgVldBIHNwZWVkdXAgfAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rCnwgVGltZSAocykg IHwgMTYuNjggICAgICAgICAgIHwgMTYuMDggICAgICAgICAgICB8IDE1Ljg3ICB8IDAuOTV4ICAg ICAgIHwKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tKwpgYGAKCiFbXShodHRwczovL2kuaW1ndXIuY29tL0hKQ3Rv d1MucG5nKQoKQXZlcmFnZSBtYXggbWVtb3J5IHVzYWdlIGZvciBWV0E6IDI5NS4xOSBNQgoKQXZl cmFnZSBtYXggbWVtb3J5IHVzYWdlIGZvciBtYXN0ZXI6IDM2NS4wNiBNQgoKVldBIHVzZXMgMC44 MXggbGVzcyBtZW1vcnkuCgojIyMgamVtYWxsb2MKCmBgYAorLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rCnwgICAg ICAgICAgIHwgQnJhbmNoIChWV0Egb24pIHwgQnJhbmNoIChWV0Egb2ZmKSB8IE1hc3RlciB8IFZX QSBzcGVlZHVwIHwKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tKwp8IFRpbWUgKHMpICB8IDE2LjM0ICAgICAgICAg ICB8IDE1LjY0ICAgICAgICAgICAgfCAxNS41MSAgfCAwLjk1eCAgICAgIHwKKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LS0tKwpgYGAKCiFbXShodHRwczovL2kuaW1ndXIuY29tL2xyZFV4WHcucG5nKQoKQXZlcmFnZSBt YXggbWVtb3J5IHVzYWdlIGZvciBWV0E6IDI4MS4xNiBNQgoKQXZlcmFnZSBtYXggbWVtb3J5IHVz YWdlIGZvciBtYXN0ZXI6IDMxNi40OSBNQgoKVldBIHVzZXMgMC44OXggbGVzcyBtZW1vcnkuCgoj IyBMaXF1aWQgYmVuY2htYXJrcwoKRm9yIHRoZSBsaXF1aWQgYmVuY2htYXJrcywgd2UgcmFuIHRo ZSBbbGlxdWlkIGJlbmNobWFya10oaHR0cHM6Ly9naXRodWIuY29tL1Nob3BpZnkvbGlxdWlkL2Js b2IvbWFzdGVyL3BlcmZvcm1hbmNlL2JlbmNobWFyay5yYikgYXZlcmFnZWQgb3ZlciA1IHJ1bnMg ZWFjaC4gV2Ugc2VlIHRoYXQgVldBIGlzIGZhc3RlciBhY3Jvc3MgdGhlIGJvYXJkLgoKYGBgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLS0tKwp8ICAgICAgICAgICAgICAgICAgICAgIHwgQnJhbmNo IChWV0Egb24pIHwgQnJhbmNoIChWV0Egb2ZmKSB8IE1hc3RlciB8IFZXQSBzcGVlZHVwIHwKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rCnwgUGFyc2UgKGkvcykgICAgICAgICAgfCA0MC40MCAg ICAgICAgICAgfCAzOC40NCAgICAgICAgICAgIHwgMzkuNDcgIHwgMS4wMnggICAgICB8CnwgUmVu ZGVyIChpL3MpICAgICAgICAgfCAxMjYuNDcgICAgICAgICAgfCAxMjEuOTcgICAgICAgICAgIHwg MTIxLjIwIHwgMS4wNHggICAgICB8CnwgUGFyc2UgJiBSZW5kZXIgKGkvcykgfCAyOC44MSAgICAg ICAgICAgfCAyNy41MiAgICAgICAgICAgIHwgMjguMDIgIHwgMS4wM3ggICAgICB8CistLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tKwpgYGAKCiMjIE1pY3JvYmVuY2htYXJrcwoKVGhlc2UgbWljcm9i ZW5jaG1hcmtzIGFyZSB2ZXJ5IGZhdm91cmFibGUgZm9yIFZXQSBzaW5jZSB0aGUgc3RyaW5ncyBj cmVhdGVkIGhhdmUgYSBsZW5ndGggb2YgNzEsIHNvIHRoZXkgYXJlIGVtYmVkZGVkIGluIFZXQSBh bmQgYWxsb2NhdGVkIG9uIHRoZSBtYWxsb2MgaGVhcCBmb3IgbWFzdGVyLgoKYGBgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKwp8ICAgICAgICAgICAgICAgICAgICB8IEJyYW5jaCAoVldBIG9u KSB8IEJyYW5jaCAoVldBIG9mZikgfCBNYXN0ZXIgIHwgVldBIHNwZWVkdXAgfAorLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKwp8IFN0cmluZyM9PSAoaS9zKSAgICB8IDEuODA2ayAgICAgICAgICB8 IDEuMzM0ayAgICAgICAgICAgfCAxLjMzN2sgIHwgMS4zNXggICAgICAgfAp8IFN0cmluZyN0aW1l cyAoaS9zKSB8IDYuMDEwTSAgICAgICAgICB8IDUuMjM4TSAgICAgICAgICAgfCA1LjI0N00gIHwg MS4xNXggICAgICAgfAp8IFN0cmluZyNbXT0gKGkvcykgICB8IDEuMDMxayAgICAgICAgICB8IDg2 My44MTYgICAgICAgICAgfCA4OTcuOTE1IHwgMS4xNXggICAgICAgfAorLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKwpgYGAKCnt7Y29sbGFwc2UoQmVuY2htYXJrIHNvdXJjZSBjb2RlKQoKYGBgcnVi eQpyZXF1aXJlICJidW5kbGVyL2lubGluZSIKZ2VtZmlsZSBkbwogIHNvdXJjZSAiaHR0cHM6Ly9y dWJ5Z2Vtcy5vcmciCiAgZ2VtICJiZW5jaG1hcmstaXBzIgplbmQKCkNPVU5UID0gMTBfMDAwCgpz dHJzMSA9IFtdCnN0cnMyID0gW10KCm5pbmUgPSAiOSIKCkNPVU5ULnRpbWVzIGRvCiAgc3RyczEg PDwgWyoiQSIuLiJaIiwgKiIwIi4uIjkiXS5qb2luKCIgIikKICBzdHJzMiA8PCBbKiJBIi4uIloi LCAqIjAiLi4iOSJdLmpvaW4oIiAiKQplbmQKCkJlbmNobWFyay5pcHMgZG8gfHh8CiAgeC5yZXBv cnQoIlN0cmluZyM9PSIpIGRvIHx0aW1lc3wKICAgIGkgPSAwCiAgICB3aGlsZSBpIDwgdGltZXMK ICAgICAgQ09VTlQudGltZXMgeyB8aXwgc3RyczFbaV0gPT0gc3RyczJbaV0gfQogICAgICBpICs9 IDEKICAgIGVuZAogIGVuZAoKICB4LnJlcG9ydCgiU3RyaW5nI3RpbWVzIikgZG8gfHRpbWVzfAog ICAgaSA9IDAKICAgIHdoaWxlIGkgPCB0aW1lcwogICAgICAiYSIgKiAxMDAKICAgICAgaSArPSAx CiAgICBlbmQKICBlbmQKCiAgeC5yZXBvcnQoIlN0cmluZyNbXT0iKSBkbyB8dGltZXN8CiAgICBp ID0gMAogICAgd2hpbGUgaSA8IHRpbWVzCiAgICAgIHN0cnMxLmVhY2ggeyB8c3RyfCBzdHJbLTFd ID0gbmluZSB9CiAgICAgIGkgKz0gMQogICAgZW5kCiAgZW5kCmVuZApgYGAKfX0KCgoKLS0gCmh0 dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLwo=