From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS4713 221.184.0.0/13 X-Spam-Status: No, score=-4.1 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.1 Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by dcvr.yhbt.net (Postfix) with ESMTP id C84361F954 for ; Thu, 23 Aug 2018 17:57:50 +0000 (UTC) Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 7FFC7120B54; Fri, 24 Aug 2018 02:57:48 +0900 (JST) Received: from o1678916x28.outbound-mail.sendgrid.net (o1678916x28.outbound-mail.sendgrid.net [167.89.16.28]) by neon.ruby-lang.org (Postfix) with ESMTPS id 42CAB120B52 for ; Fri, 24 Aug 2018 02:57:46 +0900 (JST) Received: by filter0012p3iad2.sendgrid.net with SMTP id filter0012p3iad2-13287-5B7EF585-3 2018-08-23 17:57:25.031290769 +0000 UTC m=+504262.694948163 Received: from herokuapp.com (ec2-54-90-103-155.compute-1.amazonaws.com [54.90.103.155]) by ismtpd0007p1iad2.sendgrid.net (SG) with ESMTP id PqYhY_CJQ_Kc9XSMXeTD2g Thu, 23 Aug 2018 17:57:25.093 +0000 (UTC) Date: Thu, 23 Aug 2018 17:57:25 +0000 (UTC) From: lourens@bearmetal.eu To: ruby-core@ruby-lang.org Message-ID: References: Mime-Version: 1.0 X-Redmine-MailingListIntegration-Message-Ids: 64002 X-Redmine-Project: ruby-trunk X-Redmine-Issue-Id: 15007 X-Redmine-Issue-Author: methodmissing X-Redmine-Issue-Assignee: naruse X-Redmine-Sender: methodmissing 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-SG-EID: ync6xU2WACa70kv/Ymy4QrNMhiuLXJG8OTL2vJD1yS4ywIxgijlddaLBpd/ft7ze9Nm9nSOchS0Xvt c5w2QcM31zeEOl1uXnEHkRhDD7I22hz3r5B1IfmDxRgCKZZ8CIa9NOHVr+dEn3dGDx7QWlIIZVpev7 +5TXV/vluzVh4srojVeFRkR4b0+vhLX+81dUVOSTe+5UMqnTKY8g87Ompw== X-ML-Name: ruby-core X-Mail-Count: 88620 Subject: [ruby-core:88620] [Ruby trunk Misc#15007] Let all Init_xxx and extension APIs frequently called from init code paths be considered cold X-BeenThere: ruby-core@ruby-lang.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Ruby developers List-Id: Ruby developers List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ruby-core-bounces@ruby-lang.org Sender: "ruby-core" SXNzdWUgIzE1MDA3IGhhcyBiZWVuIHVwZGF0ZWQgYnkgbWV0aG9kbWlzc2luZyAoTG91cmVucyBO YXVkw6kpLgoKCmtvMSAoS29pY2hpIFNhc2FkYSkgd3JvdGU6Cj4gSSBhZ3JlZSB0byBpbnRyb2R1 Y2UgQ09MRCBhdHRyaWJ1dGUuCgpJIHdhcyB3b25kZXJpbmcgYWJvdXQgRXJpYydzIHN1Z2dlc3Rp b24gYWJvdXQgdGhlIGNvbnZlbnRpb24gZm9yIHVzaW5nIGl0IHRob3VnaC4gSSBsaWtlIHRoZSBL ZXJuZWwgc3R5bGUgb2YgYENPTERGVU5DIHZvaWQgc29tZV9mdW5jKClgIG9yIGBDT0xEIHZvaWQg c29tZV9mdW5jKClgIG1vcmUgdGhhbiB0aGlzIHN0eWxlIHdlIGhhdmUgbm93IGVuZm9yY2VkIGlu IHRoZSBjb250cmlidXRvciBkb2NzOgoKYGBgCkNPTERGVU5DKHZvaWQgSW5pdF9BcnJheSh2b2lk KSk7CnZvaWQKSW5pdF9BcnJheSh2b2lkKQpgYGAKCkFsc28gdGhvdWdodHMgb24gYW4gZXhwbGlj aXQgYElOSVRGVU5DYCBtYWNybyBmb3IgZXh0ZW5zaW9uIGF1dGhvcnMgKyBkb2N1bWVudGF0aW9u IGluIHRoZSBleHRlbnNpb25zIGd1aWRlIGFzIGEgZm9yd2FyZCBsb29raW5nIGNvbnRyYWN0IGZv ciBpbml0IGZ1bmN0aW9ucz8KCj4gCj4gLS0tLQo+IAo+ID4gVExCICh0cmFuc2xhdGlvbiBsb29r YXNpZGUgYnVmZmVyKSBzcGVjaWZpYwo+IAo+IERvIFBIUCBwZW9wbGUgc3BlY2lmeSBUSFAgd2l0 aCBEV0FSRiBrbm93bGVkZ2U/CgpUSFAgdHVybmVkIG9mZiwgZXhwbGljaXRseSBtYXBzIHRoZSBy ZWFkIG9ubHkgc2VjdGlvbnMgdG8gc29tZSBvZiBhIHBvb2wgb2YgcHJlLWFsbG9jYXRlZCBodWdl IHBhZ2VzIC0gYXJvdW5kIDEwIHggMk1CIGZvciBydWJ5IHRvIGhhdmUgc29tZSBidWZmZXIuIGFz IGJpbmFyaWVzIHdpdGggTzMgYW5kIGRlYnVnIHN5bWJvbHMgYXJlIHdlaWdoaW5nIGluIEAgMThN QiBub3cuIEkgaGF2ZSBhIHdvcmsgaW4gcHJvZ3Jlc3MgYnJhbmNoIHdpdGggQ0ZMQUdTIGAtQiAv dXNyL3NoYXJlL2xpYmh1Z2V0bGJmcywgLVdsLC0taHVnZXRsYmZzLWFsaWduYCBidXQgdW5mb3J0 dW5hdGVseSBoYXZpbmcgaXNzdWVzIHdpdGggdGhlIGAtQmAgZmxhZyArIGdjYyA3LjMgKGJ1ZyBp biBCaW9uaWMpLiBJIGdvdCBsaWt3aWQgdXAgYW5kIHJ1bm5pbmcgeWVzdGVyZGF5IChtYXN0ZXIg c3VwcG9ydHMgcmVjZW50IGthYnlsYWtlcykgYW5kIGhhdmUgYmFsbGJhcmsgZmlndXJlcyBvZiBv cHRjYXJyb3QgYmVpbmcgYXJvdW5kIDUlIEluc3RydWN0aW9uIFRMQiBib3VuZCwgd2l0aCBhIG1p c3Mgb3ZlcmhlYWQgZXN0aW1hdGUgb2YgYXJvdW5kIDMwIGN5Y2xlcy4KCkZvciB0aGlzIENPTEQg YXR0cmlidXRlIGNoYW5nZSwgSSBzdGlsbCBuZWVkIHRvOgoKKiBBc3NlcnQgbm8gbmVnYXRpdmUg ZWZmZWN0IG9uIHN0YXJ0dXAgcGVyZm9ybWFuY2UgKHdpdGggYC0tZGlzYWJsZT1nZW1zYCkKKiBB bm90aGVyIHBhc3MgdGhyb3VnaCBsaWt3aWQgd2l0aCB0aGUgYGljYWNoZWAgZ3JvdXAgKGFuZCBw aW4gdG8gYSBzcGVjaWZpYyBDUFUgY29yZSB0byByZWR1Y2Ugbm9pc2UpIHdpdGggb3B0Y2Fycm90 CiogRGl0dG8gZm9yIEludGVsIFZUdW5lCiogQWRkIHRoZSByZXN1bHRzIHRvIHRoZSBvcmlnaW5h bCBQUgoKVGhlIGdvYWwgd2l0aCB0aGlzIGNoYW5nZSBpcyB0byBpbnRyb2R1Y2UgYSBtZWNoYW5p c20gZm9yIGJldHRlciBjb2RlIGxheW91dCwgdGhlbiBmb2xsb3cgdXAgd2l0aCBmdXJ0aGVyIGlu Y3JlbWVudGFsIHdvcmsgdG8gcmVkdWNlIHRoZSBpbnN0cnVjdGlvbiBjYWNoZSBmb290cHJpbnQg YW5kIGltcHJvdmUgYnJhbmNoIHByZWRpY3Rpb24gb2YgY2FsbHNpdGVzIGZvciBgcmJfYnVnYCBh bmQgb3RoZXIgc3VwZXIgcmFyZSBpbnZvY2F0aW9ucy4KCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCk1pc2MgIzE1MDA3OiBMZXQgYWxsIEluaXRfeHh4IGFuZCBleHRl bnNpb24gQVBJcyBmcmVxdWVudGx5IGNhbGxlZCBmcm9tIGluaXQgY29kZSBwYXRocyBiZSBjb25z aWRlcmVkIGNvbGQKaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE1MDA3I2NoYW5n ZS03MzY4MAoKKiBBdXRob3I6IG1ldGhvZG1pc3NpbmcgKExvdXJlbnMgTmF1ZMOpKQoqIFN0YXR1 czogT3BlbgoqIFByaW9yaXR5OiBOb3JtYWwKKiBBc3NpZ25lZTogbmFydXNlIChZdWkgTkFSVVNF KQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJlZmVyZW5jZXMgR2l0 aHViIFBSIGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvcHVsbC8xOTM0CgojIyMgV2h5PwoK QW4gaW5jcmVtZW50YWwgZXh0cmFjdGlvbiBmcm9tIFBSIGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5 L3J1YnkvcHVsbC8xOTIyLCBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyB0aGUgZmVlZGJhY2sgZnJv bSBZdWkgTmFydXNlIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvcHVsbC8xOTIyI2lz c3VlY29tbWVudC00MTM3OTY3MTAKClRoZSBbTGludXgga2VybmVsXShodHRwczovL2dpdGh1Yi5j b20vdG9ydmFsZHMvbGludXgvYmxvYi9jYTA0YjNjY2ExMWFjYmFmOTA0ZjcwN2YyZDljYTk2NTRk N2NjMjI2L2luY2x1ZGUvbGludXgvY29tcGlsZXItZ2NjLmgjTDE5MS1MMjA2KSwgW1BIUCA3XSho dHRwczovL2dpdGh1Yi5jb20vcGhwL3BocC1zcmMvYmxvYi8yZDcxYTI4OTU0YTRmMjA3MDk3MThl ZTdjYjJiODUwZDMzNGM1NjFjL1plbmQvemVuZF9wb3J0YWJpbGl0eS5oI0wyMjApIGFuZCBvdGhl ciBwcm9qZWN0cyB1c2UgdGhlIGBob3RgIGFuZCBgY29sZGAgZnVuY3Rpb24gYXR0cmlidXRlcyB0 byBoZWxwIHdpdGggYmV0dGVyIGNvZGUgbGF5b3V0LgoKSSBub3RpY2VkIFJ1YnkgaXMgdmVyeSBt dWNoIENQVSBmcm9udGVuZCBib3VuZCAobm90IGZlZWRpbmcgaW5zdHJ1Y3Rpb25zIGludG8gdGhl IENQVSBwaXBlbGluZXMgYXMgZmFzdCBhcyBpdCBtYXliZSBjb3VsZCkgYW5kIHRoZXJlZm9yZSBl dmVuIG1vc3QgbWljcm8gYmVuY2htYXJrcyBoYXZlIGEgaGlnaCBDUEkgKGN5Y2xlcyBwZXIgaW5z dHJ1Y3Rpb24pIHJhdGUuIFRoaXMgUFIgaXMgcGFydCBvZiBhIGxhcmdlciBjaHVuayBvZiB3b3Jr IEknZCBsaWtlIHRvIGRvIGFyb3VuZCBpbXByb3ZpbmcgQ1BVIGZyb250ZW5kIHRocm91Z2hwdXQg YW5kIGNhbiB0YWtlIGEgc3RhYiBhdCBmb3JtYWxseSB3cml0aW5nIHVwIHRob3NlIGlkZWFzIGlm IHRoZXJlJ3MgYW55IGludGVyZXN0IGZyb20gdGhlIGNvbW11bml0eS4gSSBkb24ndCBrbm93LgoK IyMjIEltcGxlbWVudGF0aW9uCgpUaGlzIFBSIGhhcyBhbiBleGNsdXNpdmUgZm9jdXMgb24gaGF2 aW5nIHRoZSBgSW5pdF94eHhgIGZ1bmN0aW9ucyBmb3IgdGhlIGNvcmUgY2xhc3NlcyBhbmQgdGhv c2UgYnVuZGxlZCBpbiBgZXh0YCBiZWluZyBmbGFnZ2VkIHRvIGJlIG9wdGltaXplZCBmb3Igc2l6 ZSBhcyB0aGV5J3JlIGNhbGxlZCBvbmx5IG9uY2UgYXQgcnVudGltZS4KClRoZSBHQ0Mgc3BlY2lm aWMgW2NvbGRdKGh0dHBzOi8vZ2NjLmdudS5vcmcvb25saW5lZG9jcy9nY2MtNC42LjQvZ2NjL0Z1 bmN0aW9uLUF0dHJpYnV0ZXMuaHRtbCkgZnVuY3Rpb24gYXR0cmlidXRlIHdvcmtzIGluIHRoZSBm b2xsb3dpbmcgd2F5IChmcm9tIEdDQyBkb2NzKToKCmBgYApUaGUgY29sZCBhdHRyaWJ1dGUgaXMg dXNlZCB0byBpbmZvcm0gdGhlIGNvbXBpbGVyIHRoYXQgYSBmdW5jdGlvbiBpcyB1bmxpa2VseSBl eGVjdXRlZC4gVGhlIGZ1bmN0aW9uIGlzIG9wdGltaXplZCBmb3Igc2l6ZSByYXRoZXIgdGhhbiBz cGVlZCBhbmQgb24gbWFueSB0YXJnZXRzIGl0IGlzIHBsYWNlZCBpbnRvIHNwZWNpYWwgc3Vic2Vj dGlvbiBvZiB0aGUgdGV4dCBzZWN0aW9uIHNvIGFsbCBjb2xkIGZ1bmN0aW9ucyBhcHBlYXJzIGNs b3NlIHRvZ2V0aGVyIGltcHJvdmluZyBjb2RlIGxvY2FsaXR5IG9mIG5vbi1jb2xkIHBhcnRzIG9m IHByb2dyYW0uIFRoZSBwYXRocyBsZWFkaW5nIHRvIGNhbGwgb2YgY29sZCBmdW5jdGlvbnMgd2l0 aGluIGNvZGUgYXJlIG1hcmtlZCBhcyB1bmxpa2VseSBieSB0aGUgYnJhbmNoIHByZWRpY3Rpb24g bWVjaGFuaXNtLiBJdCBpcyB0aHVzIHVzZWZ1bCB0byBtYXJrIGZ1bmN0aW9ucyB1c2VkIHRvIGhh bmRsZSB1bmxpa2VseSBjb25kaXRpb25zLCBzdWNoIGFzIHBlcnJvciwgYXMgY29sZCB0byBpbXBy b3ZlIG9wdGltaXphdGlvbiBvZiBob3QgZnVuY3Rpb25zIHRoYXQgZG8gY2FsbCBtYXJrZWQgZnVu Y3Rpb25zIGluIHJhcmUgb2NjYXNpb25zLgpXaGVuIHByb2ZpbGUgZmVlZGJhY2sgaXMgYXZhaWxh YmxlLCB2aWEgLWZwcm9maWxlLXVzZSwgaG90IGZ1bmN0aW9ucyBhcmUgYXV0b21hdGljYWxseSBk ZXRlY3RlZCBhbmQgdGhpcyBhdHRyaWJ1dGUgaXMgaWdub3JlZC4KYGBgCkJ5IGRlY2xhcmluZyBh IGZ1bmN0aW9uIGFzIGBjb2xkYCB3aGVuIGRlZmluZWQgd2UgZ2V0IHRoZSBmb2xsb3dpbmcgYmVu ZWZpdHM6CgoqIE5vLW9wIG9uIHBsYXRmb3JtcyB0aGF0IGRvZXMgbm90IHN1cHBvcnQgdGhlIGF0 dHJpYnV0ZQoqIFNpemUgb3B0aW1pemF0aW9uIG9mIGNvbGQgZnVuY3Rpb25zIHdpdGggYSBzbWFs bGVyIGZvb3RwcmludCBpbiB0aGUgaW5zdHJ1Y3Rpb24gY2FjaGUKKiBUaGVyZWZvcmUgQ1BVIGZy b250ZW5kIHRocm91Z2hwdXQgaW5jcmVhc2VzIGR1ZSB0byBhIGxvd2VyIHJhdGlvIG9mIGluc3Ry dWN0aW9uIGNhY2hlIG1pc3NlcyBhbmQgYSBsb3dlciBJVExCIG92ZXJoZWFkIC0gc2VlIFtvcmln aW5hbCBjaHVua3kgUFJdKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29t LzM3OS80NDIwNDg1OC00YzA4NTEwMC1hMTRjLTExZTgtODZiOC1kODdmY2I1ZTQ5ODUucG5nKSBW UyBbdGhlbiB0cnVua10oaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20v Mzc5LzQ0MjA0ODcwLTRmOWJkODAwLWExNGMtMTFlOC05YmVlLTE0YzhhZDhkM2E3ZC5wbmcpCiog VGhpcyBlZmZlY3QgY2FuIGZ1cnRoZXIgYmUgYW1wbGlmaWVkIGluIGZ1dHVyZSB3b3JrIHdpdGgg dGhlIGBob3RgIGF0dHJpYnV0ZQoKIyMjIyBFeHRlbnNpb24gQVBJcyBmbGFnZ2VkIGFzIGNvbGQK ClRoZXNlIGFyZSBhbmQgc2hvdWxkIHR5cGljYWxseSBvbmx5IGJlIGNhbGxlZCBvbiBleHRlbnNp b24gaW5pdCwgYW5kIHRodXMgc2FmZSB0byBvcHRpbWl6ZSBmb3Igc2l6ZSBhcyB3ZWxsLgoKKiBg dm9pZCByYl9kZWZpbmVfbWV0aG9kX2lkKFZBTFVFLCBJRCwgVkFMVUUgKCopKEFOWUFSR1MpLCBp bnQpKTtgCiogYHZvaWQgcmJfdW5kZWYoVkFMVUUsIElEKSk7YAoqIGB2b2lkIHJiX2RlZmluZV9w cm90ZWN0ZWRfbWV0aG9kKFZBTFVFLCBjb25zdCBjaGFyKiwgVkFMVUUgKCopKEFOWUFSR1MpLCBp bnQpKTtgCiogYHZvaWQgcmJfZGVmaW5lX3ByaXZhdGVfbWV0aG9kKFZBTFVFLCBjb25zdCBjaGFy KiwgVkFMVUUgKCopKEFOWUFSR1MpLCBpbnQpKTtgCiogYHZvaWQgcmJfZGVmaW5lX3NpbmdsZXRv bl9tZXRob2QoVkFMVUUsIGNvbnN0IGNoYXIqLCBWQUxVRSgqKShBTllBUkdTKSwgaW50KSk7YAoq IGB2b2lkIHJiX2RlZmluZV9hbGxvY19mdW5jKFZBTFVFLCByYl9hbGxvY19mdW5jX3QpKTtgCiog YHZvaWQgcmJfdW5kZWZfYWxsb2NfZnVuYyhWQUxVRSkpO2AKKiBgVkFMVUUgcmJfZGVmaW5lX2Ns YXNzKGNvbnN0IGNoYXIqLFZBTFVFKSk7YAoqIGBWQUxVRSByYl9kZWZpbmVfbW9kdWxlKGNvbnN0 IGNoYXIqKSk7YAoqIGBWQUxVRSByYl9kZWZpbmVfY2xhc3NfdW5kZXIoVkFMVUUsIGNvbnN0IGNo YXIqLCBWQUxVRSkpO2AKKiBgVkFMVUUgcmJfZGVmaW5lX21vZHVsZV91bmRlcihWQUxVRSwgY29u c3QgY2hhciopKTtgCiogYHZvaWQgcmJfZGVmaW5lX3ZhcmlhYmxlKGNvbnN0IGNoYXIqLFZBTFVF KikpO2AKKiBgdm9pZCByYl9kZWZpbmVfdmlydHVhbF92YXJpYWJsZShjb25zdCBjaGFyKixWQUxV RSgqKShBTllBUkdTKSx2b2lkKCopKEFOWUFSR1MpKSk7YAoqIGB2b2lkIHJiX2RlZmluZV9ob29r ZWRfdmFyaWFibGUoY29uc3QgY2hhciosVkFMVUUqLFZBTFVFKCopKEFOWUFSR1MpLHZvaWQoKiko QU5ZQVJHUykpKTtgCiogYHZvaWQgcmJfZGVmaW5lX3JlYWRvbmx5X3ZhcmlhYmxlKGNvbnN0IGNo YXIqLGNvbnN0IFZBTFVFKikpO2AKKiBgdm9pZCByYl9kZWZpbmVfY29uc3QoVkFMVUUsY29uc3Qg Y2hhciosVkFMVUUpKTtgCiogYHZvaWQgcmJfZGVmaW5lX2dsb2JhbF9jb25zdChjb25zdCBjaGFy KixWQUxVRSkpO2AKKiBgdm9pZCByYl9kZWZpbmVfbWV0aG9kKFZBTFVFLGNvbnN0IGNoYXIqLFZB TFVFKCopKEFOWUFSR1MpLGludCkpO2AKKiBgKHZvaWQgcmJfZGVmaW5lX21vZHVsZV9mdW5jdGlv bihWQUxVRSxjb25zdCBjaGFyKixWQUxVRSgqKShBTllBUkdTKSxpbnQpKTtgCiogYHZvaWQgcmJf ZGVmaW5lX2dsb2JhbF9mdW5jdGlvbihjb25zdCBjaGFyKixWQUxVRSgqKShBTllBUkdTKSxpbnQp KTtgCiogYHZvaWQgcmJfdW5kZWZfbWV0aG9kKFZBTFVFLGNvbnN0IGNoYXIqKSk7YAoqIGB2b2lk IHJiX2RlZmluZV9hbGlhcyhWQUxVRSxjb25zdCBjaGFyKixjb25zdCBjaGFyKikpO2AKKiBgdm9p ZCByYl9kZWZpbmVfYXR0cihWQUxVRSxjb25zdCBjaGFyKixpbnQsaW50KSk7YAoqIGB2b2lkIHJi X2dsb2JhbF92YXJpYWJsZShWQUxVRSopKTtgCiogYHZvaWQgcmJfZ2NfcmVnaXN0ZXJfbWFya19v YmplY3QoVkFMVUUpKTtgCiogYHZvaWQgcmJfZ2NfcmVnaXN0ZXJfYWRkcmVzcyhWQUxVRSopKTtg CiogYHZvaWQgcmJfZ2NfdW5yZWdpc3Rlcl9hZGRyZXNzKFZBTFVFKikpO2AKCiMjIyMgVGV4dCBz ZWdtZW50IHJlZHVjdGlvbnMKClNtYWxsIGNoYW5nZXMgKGAzMTQ0YCBieXRlcyByZWR1Y3Rpb24g b2YgdGhlIHRleHQgc2VnbWVudCkgYmVjYXVzZSB0aGlzIGlzIGluY3JlbWVudGFsIGdyb3VuZHdv cmsgYW5kIGFuZCBpbml0aWFsIGxvdyByaXNrIFBSLgoKdGhpcyBicmFuY2g6CgpgYGAKbG91cmVu c0BDYXJib25YMTp+L3NyYy9ydWJ5L3J1YnkkIHNpemUgcnVieQogICB0ZXh0CSAgIGRhdGEJICAg IGJzcwkgICAgZGVjCSAgICBoZXgJZmlsZW5hbWUKMzQ2MjE1MwkgIDIxMDU2CSAgNzEzNDQJMzU1 NDU1MwkgMzYzY2Y5CXJ1YnkKYGBgCgp0cnVuazoKCmBgYApsb3VyZW5zQENhcmJvblgxOn4vc3Jj L3J1YnkvdHJ1bmskIHNpemUgcnVieQogICB0ZXh0CSAgIGRhdGEJICAgIGJzcwkgICAgZGVjCSAg ICBoZXgJZmlsZW5hbWUKMzQ2NTI5NwkgIDIxMDU2CSAgNzEzNDQJMzU1NzY5NwkgMzY0OTQxCXJ1 YnkKYGBgCgpEaWZmcyBmb3IgaW5kaXZpZHVhbCBvYmplY3QgZmlsZXM6IGh0dHBzOi8vd3d3LmRp ZmZjaGVja2VyLmNvbS9UMEdWelgxcQoKRGVmYXVsdCBgdGV4dC51bmxpa2VseWAgc2VjdGlvbiB3 aGVyZSBpbml0IGZ1bmN0aW9ucyBhcmUgbW92ZWQgdG86CgpgYGAKbG91cmVuc0BDYXJib25YMTp+ L3NyYy9ydWJ5L3J1YnkkIHJlYWRlbGYgLVMgdm0ubwpUaGVyZSBhcmUgMzQgc2VjdGlvbiBoZWFk ZXJzLCBzdGFydGluZyBhdCBvZmZzZXQgMHgyYTA0Zjg6CgpTZWN0aW9uIEhlYWRlcnM6CiAgW05y XSBOYW1lICAgICAgICAgICAgICBUeXBlICAgICAgICAgICAgIEFkZHJlc3MgICAgICAgICAgIE9m ZnNldAogICAgICAgU2l6ZSAgICAgICAgICAgICAgRW50U2l6ZSAgICAgICAgICBGbGFncyAgTGlu ayAgSW5mbyAgQWxpZ24KICBbIDBdICAgICAgICAgICAgICAgICAgIE5VTEwgICAgICAgICAgICAg MDAwMDAwMDAwMDAwMDAwMCAgMDAwMDAwMDAKICAgICAgIDAwMDAwMDAwMDAwMDAwMDAgIDAwMDAw MDAwMDAwMDAwMDAgICAgICAgICAgIDAgICAgIDAgICAgIDAKICBbIDFdIC50ZXh0ICAgICAgICAg ICAgIFBST0dCSVRTICAgICAgICAgMDAwMDAwMDAwMDAwMDAwMCAgMDAwMDAwNDAKICAgICAgIDAw MDAwMDAwMDAwMWMzN2YgIDAwMDAwMDAwMDAwMDAwMDAgIEFYICAgICAgIDAgICAgIDAgICAgIDE2 CiAgWyAyXSAucmVsYS50ZXh0ICAgICAgICBSRUxBICAgICAgICAgICAgIDAwMDAwMDAwMDAwMDAw MDAgIDAwMTE0MTAwCiAgICAgICAwMDAwMDAwMDAwMDBhN2QwICAwMDAwMDAwMDAwMDAwMDE4ICAg SSAgICAgIDMxICAgICAxICAgICA4CiAgWyAzXSAuZGF0YSAgICAgICAgICAgICBQUk9HQklUUyAg ICAgICAgIDAwMDAwMDAwMDAwMDAwMDAgIDAwMDFjM2MwCiAgICAgICAwMDAwMDAwMDAwMDAwMDMw ICAwMDAwMDAwMDAwMDAwMDAwICBXQSAgICAgICAwICAgICAwICAgICAxNgogIFsgNF0gLmJzcyAg ICAgICAgICAgICAgTk9CSVRTICAgICAgICAgICAwMDAwMDAwMDAwMDAwMDAwICAwMDAxYzQwMAog ICAgICAgMDAwMDAwMDAwMDAwMDJiMCAgMDAwMDAwMDAwMDAwMDAwMCAgV0EgICAgICAgMCAgICAg MCAgICAgMzIKICBbIDVdIC5yb2RhdGEuc3RyMS44ICAgIFBST0dCSVRTICAgICAgICAgMDAwMDAw MDAwMDAwMDAwMCAgMDAwMWM0MDAKICAgICAgIDAwMDAwMDAwMDAwMDBkNmYgIDAwMDAwMDAwMDAw MDAwMDEgQU1TICAgICAgIDAgICAgIDAgICAgIDgKICBbIDZdIC50ZXh0LnVubGlrZWx5ICAgIFBS T0dCSVRTICAgICAgICAgMDAwMDAwMDAwMDAwMDAwMCAgMDAwMWQxNmYgPDw8PDw8PDw8PDw8PDw8 CiAgICAgICAwMDAwMDAwMDAwMDAxYWE5ICAwMDAwMDAwMDAwMDAwMDAwICBBWCAgICAgICAwICAg ICAwICAgICAxCmBgYAoKVGhlIHJlbG9jYXRpb25zIGZvciBgdm0ub2A6CgpgYGAKbG91cmVuc0BD YXJib25YMTp+L3NyYy9ydWJ5L3J1YnkkIGxkIC1NIHZtLm8KLS0tIHRydW5jYXRlZCAtLS0KLnRl eHQgICAgICAgICAgIDB4MDAwMDAwMDAwMDQwMDEyMCAgICAweDFkZTJmCiAqKC50ZXh0LnVubGlr ZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKIC50ZXh0LnVubGlrZWx5CiAg ICAgICAgICAgICAgICAweDAwMDAwMDAwMDA0MDAxMjAgICAgIDB4MWFhOSB2bS5vCiAgICAgICAg ICAgICAgICAweDAwMDAwMDAwMDA0MDAzOGYgICAgICAgICAgICAgICAgcmJfZGVmaW5lX2FsbG9j X2Z1bmMKICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAwMDQwMDNiZiAgICAgICAgICAgICAgICBy Yl91bmRlZl9hbGxvY19mdW5jCiAgICAgICAgICAgICAgICAweDAwMDAwMDAwMDA0MDAzYzUgICAg ICAgICAgICAgICAgSW5pdF9NZXRob2QKICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAwMDQwMDUx MiAgICAgICAgICAgICAgICBJbml0X3ZtX2V2YWwKICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAw MDQwMDdhMSAgICAgICAgICAgICAgICBJbml0X2V2YWxfbWV0aG9kCiAgICAgICAgICAgICAgICAw eDAwMDAwMDAwMDA0MDBhNTQgICAgICAgICAgICAgICAgcmJfdW5kZWYKICAgICAgICAgICAgICAg IDB4MDAwMDAwMDAwMDQwMGMxZCAgICAgICAgICAgICAgICBJbml0X1ZNCiAgICAgICAgICAgICAg ICAweDAwMDAwMDAwMDA0MDE4NWYgICAgICAgICAgICAgICAgSW5pdF9CYXJlVk0KICAgICAgICAg ICAgICAgIDB4MDAwMDAwMDAwMDQwMWIxNiAgICAgICAgICAgICAgICBJbml0X3ZtX29iamVjdHMK ICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAwMDQwMWI2MSAgICAgICAgICAgICAgICBJbml0X3Rv cF9zZWxmCiAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogKigudGV4dC5zdGFydHVwIC50ZXh0 LnN0YXJ0dXAuKikKICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogKigudGV4dCAuc3R1YiAudGV4 dC4qIC5nbnUubGlua29uY2UudC4qKQogKmZpbGwqICAgICAgICAgMHgwMDAwMDAwMDAwNDAxYmM5 ICAgICAgICAweDcgCiAudGV4dCAgICAgICAgICAweDAwMDAwMDAwMDA0MDFiZDAgICAgMHgxYzM3 ZiB2bS5vCiAgICAgICAgICAgICAgICAweDAwMDAwMDAwMDA0MDIyZjAgICAgICAgICAgICAgICAg cmJfZl9ub3RpbXBsZW1lbnQKICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAwMDQwNDc4MCAgICAg ICAgICAgICAgICByYl92bV9lcF9sb2NhbF9lcAogICAgICAgICAgICAgICAgMHgwMDAwMDAwMDAw NDA0N2IwICAgICAgICAgICAgICAgIHJiX3ZtX2ZyYW1lX2Jsb2NrX2hhbmRsZXIKICAgICAgICAg ICAgICAgIDB4MDAwMDAwMDAwMDQwNDdlMCAgICAgICAgICAgICAgICByYl92bV9jcmVmX25ld190 b3BsZXZlbAogICAgICAgICAgICAgICAgMHgwMDAwMDAwMDAwNDA0ODcwICAgICAgICAgICAgICAg IHJiX3ZtX2Jsb2NrX2VwX3VwZGF0ZQogICAgICAgICAgICAgICAgMHgwMDAwMDAwMDAwNDA0ODkw ICAgICAgICAgICAgICAgIHJ1Ynlfdm1fc3BlY2lhbF9leGNlcHRpb25fY29weQogICAgICAgICAg ICAgICAgMHgwMDAwMDAwMDAwNDA2OTYwICAgICAgICAgICAgICAgIHJiX2VjX3N0YWNrX292ZXJm bG93CiAgICAgICAgICAgICAgICAweDAwMDAwMDAwMDA0MDY5YzAgICAgICAgICAgICAgICAgcmJf dm1fcHVzaF9mcmFtZQogICAgICAgICAgICAgICAgMHgwMDAwMDAwMDAwNDA2YjIwICAgICAgICAg ICAgICAgIHJiX3ZtX3BvcF9mcmFtZQogICAgICAgICAgICAgICAgMHgwMDAwMDAwMDAwNDA2YjMw ICAgICAgICAgICAgICAgIHJiX2Vycm9yX2FyaXR5CiAgICAgICAgICAgICAgICAweDAwMDAwMDAw MDA0MDcxODAgICAgICAgICAgICAgICAgcmJfdm1fZnJhbWVfbWV0aG9kX2VudHJ5CiAgICAgICAg ICAgICAgICAweDAwMDAwMDAwMDA0MDc1ZTAgICAgICAgICAgICAgICAgcmJfdm1fcmV3cml0ZV9j cmVmCiAgICAgICAgICAgICAgICAweDAwMDAwMDAwMDA0MDc2ZjAgICAgICAgICAgICAgICAgcmJf c2ltcGxlX2lzZXFfcAogICAgICAgICAgICAgICAgMHgwMDAwMDAwMDAwNDA3NzAwICAgICAgICAg ICAgICAgIHJiX3ZtX29wdF9zdHJ1Y3RfYXJlZgogICAgICAgICAgICAgICAgMHgwMDAwMDAwMDAw NDA3NzMwICAgICAgICAgICAgICAgIHJiX3ZtX29wdF9zdHJ1Y3RfYXNldAogICAgICAgICAgICAg ICAgMHgwMDAwMDAwMDAwNDA3NzUwICAgICAgICAgICAgICAgIHJiX2NsZWFyX2NvbnN0YW50X2Nh Y2hlCi0tLSB0cnVuY2F0ZWQgLS0tCmBgYApJIGFsc28gZGFiYmxlZCB3aXRoIHRoZSBpZGVhIG9m IGFuIGBJTklURlVOQ2AgbWFjcm8gdGhhdCBhbHNvIHBsYWNlcyB0aGUgYEluaXRfeHh4YCBmdW5j dGlvbnMgaW50byBhIGB0ZXh0LmluaXRgIHNlY3Rpb24gYXMgdGhlIFtrZXJuZWwgZG9lc10oaHR0 cHM6Ly9saW51eGdhemV0dGUubmV0LzE1Ny9hbXVycmF5Lmh0bWwpIGZvciBhIHBvc3NpYmxlIGZ1 dHVyZSBvcHRpbWl6YXRpb24gb2Ygc3RyaXBwaW5nIG91dCBFTEYgc2VjdGlvbnMgZm9yIHNldHVw IC8gaW5pdCBzcGVjaWZpYyBmdW5jdGlvbnMuIEkgZG9uJ3QgdGhpbmsgdGhhdCBtYWtlcyBzZW5z ZSBmb3Igbm93IGFuZCBwb3NzaWJseSBvbmx5IGludGVyZXN0aW5nIGZvciBtcnVieSBvciBlbWJl ZGRlZC4KCiMjIyBQb3NzaWJsZSBuZXh0IHVuaXRzIG9mIHdvcmsKCiMjIyMgQ29sZCBjb2RlIHNw ZWNpZmljCgoqIEluY3JlbWVudGFsbHkgUFIgY29ybmVyIGNhc2UgZXJyb3IgaGFuZGxpbmcgZnVu Y3Rpb25zIHN1Y2ggYXMgYHJiX2J1Z2AgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vcnVieS9ydWJ5 L3B1bGwvMTkyMgoqIERpdHRvIGZvciBnZW5lcmljIGVycm9yIGhhbmRsaW5nIGZ1bmN0aW9ucyAo YHJiX3JhaXNlYCBhbmQgZnJpZW5kcykgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vcnVieS9ydWJ5 L3B1bGwvMTkyMgoqIENsYXNzIHNwZWNpZmljIGVycm9yIGhhbmRsaW5nIGZ1bmN0aW9ucyAobG9h ZCBlcnJvcnMsIGVuY29kaW5nIGVycm9ycyBpbiB0aGUgSU8gbW9kdWxlLCBzeXMgZXJyb3JzIGV0 Yy4pIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9wdWxsLzE5MjIKKiBHQ0MgNSsg YWxzbyBzdXBwb3J0cyBgY29sZGAgW2xhYmVsc10oaHR0cHM6Ly9nY2MuZ251Lm9yZy9vbmxpbmVk b2NzL2djYy9MYWJlbC1BdHRyaWJ1dGVzLmh0bWwpICwgd2hpY2ggSSB0b29rIGEgc3RhYiB3aXRo IGluIHRoZSBibG9hdGVkIGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvcHVsbC8xOTIyCgoj IyMjIFRMQiAodHJhbnNsYXRpb24gbG9va2FzaWRlIGJ1ZmZlcikgc3BlY2lmaWMKCiogRnVydGhl ciBJVExCIG92ZXJoZWFkIGludmVzdGlnYXRpb24KKiBSdWJ5IGJpbmFyaWVzIGJ1aWx0IHdpdGgg TzMgYW5kIGRlYnVnIHN5bWJvbHMgY29tZSBpbiBhdCBqdXN0IHNob3J0IG9mIDE4TUIsIG9yIHJv dWdobHkgOSBodWdlcGFnZXMgb24gbGludXguIFBIUCBjb3JlIGRldmVsb3BlcnMgd2VyZSBhYmxl IHRvIHNxdWVlemUgYSBmZXcgJSBieSByZW1hcHBpbmcgY29kZSB0byBodWdlcGFnZXMgb24gc3Vw cG9ydGVkIHN5c3RlbXMgLSBodHRwOi8vZGV2ZWxvcGVycy1jbHViLmNvbS9wb3N0cy8yNzA2ODUv IC4gSW1wbGVtZW50YXRpb24gW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9waHAvcGhwLXNyYy9i bG9iL2ZiMDM4OWIxMDEwZGU1YTY0NTliY2YyODY0MDk0MjNmNjllNzRhYWYvZXh0L29wY2FjaGUv WmVuZEFjY2VsZXJhdG9yLmMjTDI2NDUtTDI3NTApCgojIyMjIEJ5dGVjb2RlIHNwZWNpZmljCgoq IFRoZSBbSW50ZWwgVHJhY2luZyBUYXNrIEFQSV0oaHR0cHM6Ly9zb2Z0d2FyZS5pbnRlbC5jb20v ZW4tdXMvdnR1bmUtYW1wbGlmaWVyLWhlbHAtdGFzay1hcGkpIGlzIHZlcnkgd2VsbCBzdWl0ZWQg Zm9yIHRoZSBpbnN0cnVjdGlvbiBzZXF1ZW5jZXMgWUFSViBnZW5lcmF0ZXMgYW5kIHRvIGluZmVy IGJldHRlciBwZXIgaW5zdHJ1Y3Rpb24gQ1BVIHV0aWxpemF0aW9uIGFuZCBpZGVudGlmeSBhbnkg c3RhbGxzIChmcm9udGVuZCwgYmFja2VuZCwgYnJhbmNoZXMgZXRjLikgdG8gZHJpdmUgZnVydGhl ciB3b3JrLgoKCgotLSAKaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvCg==