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 A25F81F954 for ; Mon, 20 Aug 2018 16:45:39 +0000 (UTC) Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 18283120AC2; Tue, 21 Aug 2018 01:45:37 +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 0F0E4120955 for ; Tue, 21 Aug 2018 01:45:33 +0900 (JST) Received: by filter0138p3mdw1.sendgrid.net with SMTP id filter0138p3mdw1-15374-5B7AF029-30 2018-08-20 16:45:29.961761514 +0000 UTC m=+240360.099732567 Received: from herokuapp.com (ec2-54-159-225-97.compute-1.amazonaws.com [54.159.225.97]) by ismtpd0005p1iad2.sendgrid.net (SG) with ESMTP id TW1aekjWQhCIhEb219ZVEA Mon, 20 Aug 2018 16:45:29.970 +0000 (UTC) Date: Mon, 20 Aug 2018 16:45:30 +0000 (UTC) From: lourens@bearmetal.eu To: ruby-core@ruby-lang.org Message-ID: References: Mime-Version: 1.0 X-Redmine-MailingListIntegration-Message-Ids: 63955 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/Ymy4QrNMhiuLXJG8OTL2vJD1yS785i4RMow7ORi3erclvEWJSjn72b9/mNA0gO zm0QJwZo6vFwijyVvRvXFbFkI8X1ZRPBWbi2lqkmMa2h5ZTGwYG1dHyV4K7kvujCW9k1S77GTV4xJJ f0fdo7ncusdGmJ+nGGQtaPRR5eT14lLDb9Sj1zDGTapYrJ+kP86LxjvnSg== X-ML-Name: ruby-core X-Mail-Count: 88574 Subject: [ruby-core:88574] [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 YXVkw6kpLgoKCm5vcm1hbHBlcnNvbiAoRXJpYyBXb25nKSB3cm90ZToKPiBUaGFuayB5b3UgZm9y IHRha2luZyB0aGUgdGltZSB0byBkbyB0aGlzIQo+ICAKPiAgPiBUaGUgR0NDIHNwZWNpZmljIFtj b2xkXShodHRwczovL2djYy5nbnUub3JnL29ubGluZWRvY3MvZ2NjLTQuNi40L2djYy9GdW5jdGlv bi1BdHRyaWJ1dGVzLmh0bWwpIGZ1bmN0aW9uIGF0dHJpYnV0ZSB3b3JrcyBpbiB0aGUgZm9sbG93 aW5nIHdheSAoZnJvbSBHQ0MgZG9jcyk6Cj4gIAo+ICBTaW5jZSBpdCdzIGdjYyAoYW5kIGNsYW5n KTsgY2FuIHdlIGp1c3QgdXNlIHNvbWV0aGluZyBsaWtlIHdoYXQKPiAgTGludXggdXNlczoKPiAg Cj4gICAjZGVmaW5lIF9fY29sZAkJCV9fYXR0cmlidXRlX18oKF9fY29sZF9fKSkKPiAgCj4gIElu c3RlYWQgb2Ygb3VyIHVnbHkgY29udmVudGlvbiBvZjogQ09MRCggcmVxdWlyZWQgcHJvdG90eXBl IGdvZXMgaGVyZSApOwoKSW5pdGlhbCBwYXNzIGhhZCB0aGF0LCBidXQgSSBkZWNpZGVkIHRvIGxp bmUgdXAgd2l0aCByZWNvbW1lbmRhdGlvbnMgZnJvbSB0aGUgZ3VpZGVsaW5lcy4gTm90IGdyZWF0 IGZvciBodW1hbiBwYXJzaW5nLCBlc3BlY2lhbGx5IHdoZW4gbmVzdGVkIHdpdGggYE5PUkVUVVJO YCBldGMuCgo+ICAKPiAgSXQgd291bGQgYWxsb3cgdXMgdG8gYmUgbW9yZSBEUlkgYnkgYXZvaWRp bmcgcHJvdG90eXBlcyBmb3IKPiAgc3RhdGljIGZ1bmN0aW9ucy4KPiAgCj4gID4gQnkgZGVjbGFy aW5nIGEgZnVuY3Rpb24gYXMgYGNvbGRgIHdoZW4gZGVmaW5lZCB3ZSBnZXQgdGhlIGZvbGxvd2lu ZyBiZW5lZml0czoKPiAgPiAKPiAgPiAqIE5vLW9wIG9uIHBsYXRmb3JtcyB0aGF0IGRvZXMgbm90 IHN1cHBvcnQgdGhlIGF0dHJpYnV0ZQo+ICA+ICogU2l6ZSBvcHRpbWl6YXRpb24gb2YgY29sZCBm dW5jdGlvbnMgd2l0aCBhIHNtYWxsZXIgZm9vdHByaW50IGluIHRoZSBpbnN0cnVjdGlvbiBjYWNo ZQo+ICAKPiAgVmVyeSBtdWNoIGFncmVlZC4gIEkndmUgYWx3YXlzIGhhdGVkIHRoZSBpY2FjaGUg Zm9vdHByaW50IGZyb20gLU8zCj4gIHNpbmNlIHNvIG11Y2ggb2Ygb3VyIGNvZGUgaXMgcmFyZWx5 IGV4ZWN1dGVkLgo+ICAKPiAgQW5vdGhlciBiZW5lZml0IGlzIGl0IGhlbHBzIGRvY3VtZW50IGNv ZGUgcGF0aHMgYXMgdG8gd2hpY2ggb25lcwo+ICBhcmUgbW9zdCBjcml0aWNhbCA6Pgo+ICAKPiAg PiAjIyMjIEV4dGVuc2lvbiBBUElzIGZsYWdnZWQgYXMgY29sZAo+ICA+IAo+ICA+IFRoZXNlIGFy ZSBhbmQgc2hvdWxkIHR5cGljYWxseSBvbmx5IGJlIGNhbGxlZCBvbiBleHRlbnNpb24gaW5pdCwg YW5kIHRodXMgc2FmZSB0byBvcHRpbWl6ZSBmb3Igc2l6ZSBhcyB3ZWxsLgo+ICA+IAo+ICA+ICog YHZvaWQgcmJfZGVmaW5lX21ldGhvZChWQUxVRSxjb25zdCBjaGFyKixWQUxVRSgqKShBTllBUkdT KSxpbnQpKTtgCj4gIAo+ICBEb2VzIHRoaXMgYWZmZWN0IHN0YXJ0dXAgcGVyZm9ybWFuY2U/ICAo d2l0aCAtLWRpc2FibGU9Z2VtcykKCkdyZWF0IHBvaW50LCBJJ2xsIGludmVzdGlnYXRlLgoKPiAg Cj4gID4gKiBSdWJ5IGJpbmFyaWVzIGJ1aWx0IHdpdGggTzMgYW5kIGRlYnVnIHN5bWJvbHMgY29t ZSBpbiBhdAo+ICA+IGp1c3Qgc2hvcnQgb2YgMThNQiwgb3Igcm91Z2hseSA5IGh1Z2VwYWdlcyBv biBsaW51eC4gUEhQIGNvcmUKPiAgPiBkZXZlbG9wZXJzIHdlcmUgYWJsZSB0byBzcXVlZXplIGEg ZmV3ICUgYnkgcmVtYXBwaW5nIGNvZGUgdG8KPiAgPiBodWdlcGFnZXMgb24gc3VwcG9ydGVkIHN5 c3RlbXMgLQo+ICA+IGh0dHA6Ly9kZXZlbG9wZXJzLWNsdWIuY29tL3Bvc3RzLzI3MDY4NS8gLiBJ bXBsZW1lbnRhdGlvbgo+ICA+IFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vcGhwL3BocC1zcmMv YmxvYi9mYjAzODliMTAxMGRlNWE2NDU5YmNmMjg2NDA5NDIzZjY5ZTc0YWFmL2V4dC9vcGNhY2hl L1plbmRBY2NlbGVyYXRvci5jI0wyNjQ1LUwyNzUwKQo+ICAKPiAgQ29vbC4gIFdoaWxlIFRIUCBp cyBhIGRpc2FzdGVyIGZvciBDb1cgYW5kIGFub255bW91cyBtYXBwaW5nczsKPiAgaXQgbWFrZXMg cGVyZmVjdCBzZW5zZSBmb3IgbGFyZ2UgcmVhZC1vbmx5IG1hcHBpbmdzCgpZZWFoLCBkb2VzIHRl cnJpYmxlIHRoaW5ncyAtIHRoZSB3YXkgdGhpcyB3b3VsZCB3b3JrIGlzIHJlc2VydmluZyAyME1C IHdvcnRoIG1vcmUgb3IgbGVzcyB3aXRoIGAvcHJvYy9zeXMvdm0vbnJfaHVnZXBhZ2VzYCAoMSB2 YWx1ZSBvZiAxMCBpbiB0aGVyZSkganVzdCBmb3IgdGhlIHJ1YnkgYmluYXJ5LgoKPiAgTm93LCB0 aGUgcXVlc3Rpb24gaXM7IHNob3VsZG4ndCB0aGlzIGJlIGRvbmUgaW4gbGQtbGludXguc28KPiAg KHBhcnQgb2YgZ2xpYmMpIGluc3RlYWQ/CgpQb3NzaWJsZSwgYnV0IHRoZXJlJ3MgYWxyZWFkeSBo dHRwczovL2dpdGh1Yi5jb20vbGliaHVnZXRsYmZzL2xpYmh1Z2V0bGJmcyAobW9yZSBzcGVjaWZp Y2FsbHkgaHR0cHM6Ly9naXRodWIuY29tL2xpYmh1Z2V0bGJmcy9saWJodWdldGxiZnMvYmxvYi9t YXN0ZXIvSE9XVE8jTDM3MCApIE1heWJlIGFuIGAtLWVuYWJsZS1saWJodWdldGxiZnNgIGNvbmZp ZyBvcHRpb24uIFRoYXQgYWxzbyBleHBvc2VzIGFuIEFQSSBmb3IgbWFwcGluZyBieXRlY29kZSB0 byBodWdlIHBhZ2VzLCBpZiBpdCdzIHBvc3NpYmxlIHRvIGhhdmUgYSByZXNlcnZlZCBoZWFwIGZv ciBpc2Vxcy4gQW55d2F5cywgZHJpZnRpbmcgb2ZmIHRvcGljIC4uLgoKCgotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCk1pc2MgIzE1MDA3OiBMZXQgYWxsIEluaXRfeHh4 IGFuZCBleHRlbnNpb24gQVBJcyBmcmVxdWVudGx5IGNhbGxlZCBmcm9tIGluaXQgY29kZSBwYXRo cyBiZSBjb25zaWRlcmVkIGNvbGQKaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE1 MDA3I2NoYW5nZS03MzYzMAoKKiBBdXRob3I6IG1ldGhvZG1pc3NpbmcgKExvdXJlbnMgTmF1ZMOp KQoqIFN0YXR1czogT3BlbgoqIFByaW9yaXR5OiBOb3JtYWwKKiBBc3NpZ25lZTogbmFydXNlIChZ dWkgTkFSVVNFKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClJlZmVy ZW5jZXMgR2l0aHViIFBSIGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvcHVsbC8xOTM0Cgoj IyMgV2h5PwoKQW4gaW5jcmVtZW50YWwgZXh0cmFjdGlvbiBmcm9tIFBSIGh0dHBzOi8vZ2l0aHVi LmNvbS9ydWJ5L3J1YnkvcHVsbC8xOTIyLCBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyB0aGUgZmVl ZGJhY2sgZnJvbSBZdWkgTmFydXNlIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvcHVs bC8xOTIyI2lzc3VlY29tbWVudC00MTM3OTY3MTAKClRoZSBbTGludXgga2VybmVsXShodHRwczov L2dpdGh1Yi5jb20vdG9ydmFsZHMvbGludXgvYmxvYi9jYTA0YjNjY2ExMWFjYmFmOTA0ZjcwN2Yy ZDljYTk2NTRkN2NjMjI2L2luY2x1ZGUvbGludXgvY29tcGlsZXItZ2NjLmgjTDE5MS1MMjA2KSwg W1BIUCA3XShodHRwczovL2dpdGh1Yi5jb20vcGhwL3BocC1zcmMvYmxvYi8yZDcxYTI4OTU0YTRm MjA3MDk3MThlZTdjYjJiODUwZDMzNGM1NjFjL1plbmQvemVuZF9wb3J0YWJpbGl0eS5oI0wyMjAp IGFuZCBvdGhlciBwcm9qZWN0cyB1c2UgdGhlIGBob3RgIGFuZCBgY29sZGAgZnVuY3Rpb24gYXR0 cmlidXRlcyB0byBoZWxwIHdpdGggYmV0dGVyIGNvZGUgbGF5b3V0LgoKSSBub3RpY2VkIFJ1Ynkg aXMgdmVyeSBtdWNoIENQVSBmcm9udGVuZCBib3VuZCAobm90IGZlZWRpbmcgaW5zdHJ1Y3Rpb25z IGludG8gdGhlIENQVSBwaXBlbGluZXMgYXMgZmFzdCBhcyBpdCBtYXliZSBjb3VsZCkgYW5kIHRo ZXJlZm9yZSBldmVuIG1vc3QgbWljcm8gYmVuY2htYXJrcyBoYXZlIGEgaGlnaCBDUEkgKGN5Y2xl cyBwZXIgaW5zdHJ1Y3Rpb24pIHJhdGUuIFRoaXMgUFIgaXMgcGFydCBvZiBhIGxhcmdlciBjaHVu ayBvZiB3b3JrIEknZCBsaWtlIHRvIGRvIGFyb3VuZCBpbXByb3ZpbmcgQ1BVIGZyb250ZW5kIHRo cm91Z2hwdXQgYW5kIGNhbiB0YWtlIGEgc3RhYiBhdCBmb3JtYWxseSB3cml0aW5nIHVwIHRob3Nl IGlkZWFzIGlmIHRoZXJlJ3MgYW55IGludGVyZXN0IGZyb20gdGhlIGNvbW11bml0eS4gSSBkb24n dCBrbm93LgoKIyMjIEltcGxlbWVudGF0aW9uCgpUaGlzIFBSIGhhcyBhbiBleGNsdXNpdmUgZm9j dXMgb24gaGF2aW5nIHRoZSBgSW5pdF94eHhgIGZ1bmN0aW9ucyBmb3IgdGhlIGNvcmUgY2xhc3Nl cyBhbmQgdGhvc2UgYnVuZGxlZCBpbiBgZXh0YCBiZWluZyBmbGFnZ2VkIHRvIGJlIG9wdGltaXpl ZCBmb3Igc2l6ZSBhcyB0aGV5J3JlIGNhbGxlZCBvbmx5IG9uY2UgYXQgcnVudGltZS4KClRoZSBH Q0Mgc3BlY2lmaWMgW2NvbGRdKGh0dHBzOi8vZ2NjLmdudS5vcmcvb25saW5lZG9jcy9nY2MtNC42 LjQvZ2NjL0Z1bmN0aW9uLUF0dHJpYnV0ZXMuaHRtbCkgZnVuY3Rpb24gYXR0cmlidXRlIHdvcmtz IGluIHRoZSBmb2xsb3dpbmcgd2F5IChmcm9tIEdDQyBkb2NzKToKCmBgYApUaGUgY29sZCBhdHRy aWJ1dGUgaXMgdXNlZCB0byBpbmZvcm0gdGhlIGNvbXBpbGVyIHRoYXQgYSBmdW5jdGlvbiBpcyB1 bmxpa2VseSBleGVjdXRlZC4gVGhlIGZ1bmN0aW9uIGlzIG9wdGltaXplZCBmb3Igc2l6ZSByYXRo ZXIgdGhhbiBzcGVlZCBhbmQgb24gbWFueSB0YXJnZXRzIGl0IGlzIHBsYWNlZCBpbnRvIHNwZWNp YWwgc3Vic2VjdGlvbiBvZiB0aGUgdGV4dCBzZWN0aW9uIHNvIGFsbCBjb2xkIGZ1bmN0aW9ucyBh cHBlYXJzIGNsb3NlIHRvZ2V0aGVyIGltcHJvdmluZyBjb2RlIGxvY2FsaXR5IG9mIG5vbi1jb2xk IHBhcnRzIG9mIHByb2dyYW0uIFRoZSBwYXRocyBsZWFkaW5nIHRvIGNhbGwgb2YgY29sZCBmdW5j dGlvbnMgd2l0aGluIGNvZGUgYXJlIG1hcmtlZCBhcyB1bmxpa2VseSBieSB0aGUgYnJhbmNoIHBy ZWRpY3Rpb24gbWVjaGFuaXNtLiBJdCBpcyB0aHVzIHVzZWZ1bCB0byBtYXJrIGZ1bmN0aW9ucyB1 c2VkIHRvIGhhbmRsZSB1bmxpa2VseSBjb25kaXRpb25zLCBzdWNoIGFzIHBlcnJvciwgYXMgY29s ZCB0byBpbXByb3ZlIG9wdGltaXphdGlvbiBvZiBob3QgZnVuY3Rpb25zIHRoYXQgZG8gY2FsbCBt YXJrZWQgZnVuY3Rpb25zIGluIHJhcmUgb2NjYXNpb25zLgpXaGVuIHByb2ZpbGUgZmVlZGJhY2sg aXMgYXZhaWxhYmxlLCB2aWEgLWZwcm9maWxlLXVzZSwgaG90IGZ1bmN0aW9ucyBhcmUgYXV0b21h dGljYWxseSBkZXRlY3RlZCBhbmQgdGhpcyBhdHRyaWJ1dGUgaXMgaWdub3JlZC4KYGBgCkJ5IGRl Y2xhcmluZyBhIGZ1bmN0aW9uIGFzIGBjb2xkYCB3aGVuIGRlZmluZWQgd2UgZ2V0IHRoZSBmb2xs b3dpbmcgYmVuZWZpdHM6CgoqIE5vLW9wIG9uIHBsYXRmb3JtcyB0aGF0IGRvZXMgbm90IHN1cHBv cnQgdGhlIGF0dHJpYnV0ZQoqIFNpemUgb3B0aW1pemF0aW9uIG9mIGNvbGQgZnVuY3Rpb25zIHdp dGggYSBzbWFsbGVyIGZvb3RwcmludCBpbiB0aGUgaW5zdHJ1Y3Rpb24gY2FjaGUKKiBUaGVyZWZv cmUgQ1BVIGZyb250ZW5kIHRocm91Z2hwdXQgaW5jcmVhc2VzIGR1ZSB0byBhIGxvd2VyIHJhdGlv IG9mIGluc3RydWN0aW9uIGNhY2hlIG1pc3NlcyBhbmQgYSBsb3dlciBJVExCIG92ZXJoZWFkIC0g c2VlIFtvcmlnaW5hbCBjaHVua3kgUFJdKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNv bnRlbnQuY29tLzM3OS80NDIwNDg1OC00YzA4NTEwMC1hMTRjLTExZTgtODZiOC1kODdmY2I1ZTQ5 ODUucG5nKSBWUyBbdGhlbiB0cnVua10oaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29u dGVudC5jb20vMzc5LzQ0MjA0ODcwLTRmOWJkODAwLWExNGMtMTFlOC05YmVlLTE0YzhhZDhkM2E3 ZC5wbmcpCiogVGhpcyBlZmZlY3QgY2FuIGZ1cnRoZXIgYmUgYW1wbGlmaWVkIGluIGZ1dHVyZSB3 b3JrIHdpdGggdGhlIGBob3RgIGF0dHJpYnV0ZQoKIyMjIyBFeHRlbnNpb24gQVBJcyBmbGFnZ2Vk IGFzIGNvbGQKClRoZXNlIGFyZSBhbmQgc2hvdWxkIHR5cGljYWxseSBvbmx5IGJlIGNhbGxlZCBv biBleHRlbnNpb24gaW5pdCwgYW5kIHRodXMgc2FmZSB0byBvcHRpbWl6ZSBmb3Igc2l6ZSBhcyB3 ZWxsLgoKKiBgdm9pZCByYl9kZWZpbmVfbWV0aG9kX2lkKFZBTFVFLCBJRCwgVkFMVUUgKCopKEFO WUFSR1MpLCBpbnQpKTtgCiogYHZvaWQgcmJfdW5kZWYoVkFMVUUsIElEKSk7YAoqIGB2b2lkIHJi X2RlZmluZV9wcm90ZWN0ZWRfbWV0aG9kKFZBTFVFLCBjb25zdCBjaGFyKiwgVkFMVUUgKCopKEFO WUFSR1MpLCBpbnQpKTtgCiogYHZvaWQgcmJfZGVmaW5lX3ByaXZhdGVfbWV0aG9kKFZBTFVFLCBj b25zdCBjaGFyKiwgVkFMVUUgKCopKEFOWUFSR1MpLCBpbnQpKTtgCiogYHZvaWQgcmJfZGVmaW5l X3NpbmdsZXRvbl9tZXRob2QoVkFMVUUsIGNvbnN0IGNoYXIqLCBWQUxVRSgqKShBTllBUkdTKSwg aW50KSk7YAoqIGB2b2lkIHJiX2RlZmluZV9hbGxvY19mdW5jKFZBTFVFLCByYl9hbGxvY19mdW5j X3QpKTtgCiogYHZvaWQgcmJfdW5kZWZfYWxsb2NfZnVuYyhWQUxVRSkpO2AKKiBgVkFMVUUgcmJf ZGVmaW5lX2NsYXNzKGNvbnN0IGNoYXIqLFZBTFVFKSk7YAoqIGBWQUxVRSByYl9kZWZpbmVfbW9k dWxlKGNvbnN0IGNoYXIqKSk7YAoqIGBWQUxVRSByYl9kZWZpbmVfY2xhc3NfdW5kZXIoVkFMVUUs IGNvbnN0IGNoYXIqLCBWQUxVRSkpO2AKKiBgVkFMVUUgcmJfZGVmaW5lX21vZHVsZV91bmRlcihW QUxVRSwgY29uc3QgY2hhciopKTtgCiogYHZvaWQgcmJfZGVmaW5lX3ZhcmlhYmxlKGNvbnN0IGNo YXIqLFZBTFVFKikpO2AKKiBgdm9pZCByYl9kZWZpbmVfdmlydHVhbF92YXJpYWJsZShjb25zdCBj aGFyKixWQUxVRSgqKShBTllBUkdTKSx2b2lkKCopKEFOWUFSR1MpKSk7YAoqIGB2b2lkIHJiX2Rl ZmluZV9ob29rZWRfdmFyaWFibGUoY29uc3QgY2hhciosVkFMVUUqLFZBTFVFKCopKEFOWUFSR1Mp LHZvaWQoKikoQU5ZQVJHUykpKTtgCiogYHZvaWQgcmJfZGVmaW5lX3JlYWRvbmx5X3ZhcmlhYmxl KGNvbnN0IGNoYXIqLGNvbnN0IFZBTFVFKikpO2AKKiBgdm9pZCByYl9kZWZpbmVfY29uc3QoVkFM VUUsY29uc3QgY2hhciosVkFMVUUpKTtgCiogYHZvaWQgcmJfZGVmaW5lX2dsb2JhbF9jb25zdChj b25zdCBjaGFyKixWQUxVRSkpO2AKKiBgdm9pZCByYl9kZWZpbmVfbWV0aG9kKFZBTFVFLGNvbnN0 IGNoYXIqLFZBTFVFKCopKEFOWUFSR1MpLGludCkpO2AKKiBgKHZvaWQgcmJfZGVmaW5lX21vZHVs ZV9mdW5jdGlvbihWQUxVRSxjb25zdCBjaGFyKixWQUxVRSgqKShBTllBUkdTKSxpbnQpKTtgCiog YHZvaWQgcmJfZGVmaW5lX2dsb2JhbF9mdW5jdGlvbihjb25zdCBjaGFyKixWQUxVRSgqKShBTllB UkdTKSxpbnQpKTtgCiogYHZvaWQgcmJfdW5kZWZfbWV0aG9kKFZBTFVFLGNvbnN0IGNoYXIqKSk7 YAoqIGB2b2lkIHJiX2RlZmluZV9hbGlhcyhWQUxVRSxjb25zdCBjaGFyKixjb25zdCBjaGFyKikp O2AKKiBgdm9pZCByYl9kZWZpbmVfYXR0cihWQUxVRSxjb25zdCBjaGFyKixpbnQsaW50KSk7YAoq IGB2b2lkIHJiX2dsb2JhbF92YXJpYWJsZShWQUxVRSopKTtgCiogYHZvaWQgcmJfZ2NfcmVnaXN0 ZXJfbWFya19vYmplY3QoVkFMVUUpKTtgCiogYHZvaWQgcmJfZ2NfcmVnaXN0ZXJfYWRkcmVzcyhW QUxVRSopKTtgCiogYHZvaWQgcmJfZ2NfdW5yZWdpc3Rlcl9hZGRyZXNzKFZBTFVFKikpO2AKCiMj IyMgVGV4dCBzZWdtZW50IHJlZHVjdGlvbnMKClNtYWxsIGNoYW5nZXMgKGAzMTQ0YCBieXRlcyBy ZWR1Y3Rpb24gb2YgdGhlIHRleHQgc2VnbWVudCkgYmVjYXVzZSB0aGlzIGlzIGluY3JlbWVudGFs IGdyb3VuZHdvcmsgYW5kIGFuZCBpbml0aWFsIGxvdyByaXNrIFBSLgoKdGhpcyBicmFuY2g6Cgpg YGAKbG91cmVuc0BDYXJib25YMTp+L3NyYy9ydWJ5L3J1YnkkIHNpemUgcnVieQogICB0ZXh0CSAg IGRhdGEJICAgIGJzcwkgICAgZGVjCSAgICBoZXgJZmlsZW5hbWUKMzQ2MjE1MwkgIDIxMDU2CSAg NzEzNDQJMzU1NDU1MwkgMzYzY2Y5CXJ1YnkKYGBgCgp0cnVuazoKCmBgYApsb3VyZW5zQENhcmJv blgxOn4vc3JjL3J1YnkvdHJ1bmskIHNpemUgcnVieQogICB0ZXh0CSAgIGRhdGEJICAgIGJzcwkg ICAgZGVjCSAgICBoZXgJZmlsZW5hbWUKMzQ2NTI5NwkgIDIxMDU2CSAgNzEzNDQJMzU1NzY5Nwkg MzY0OTQxCXJ1YnkKYGBgCgpEaWZmcyBmb3IgaW5kaXZpZHVhbCBvYmplY3QgZmlsZXM6IGh0dHBz Oi8vd3d3LmRpZmZjaGVja2VyLmNvbS9UMEdWelgxcQoKRGVmYXVsdCBgdGV4dC51bmxpa2VseWAg c2VjdGlvbiB3aGVyZSBpbml0IGZ1bmN0aW9ucyBhcmUgbW92ZWQgdG86CgpgYGAKbG91cmVuc0BD YXJib25YMTp+L3NyYy9ydWJ5L3J1YnkkIHJlYWRlbGYgLVMgdm0ubwpUaGVyZSBhcmUgMzQgc2Vj dGlvbiBoZWFkZXJzLCBzdGFydGluZyBhdCBvZmZzZXQgMHgyYTA0Zjg6CgpTZWN0aW9uIEhlYWRl cnM6CiAgW05yXSBOYW1lICAgICAgICAgICAgICBUeXBlICAgICAgICAgICAgIEFkZHJlc3MgICAg ICAgICAgIE9mZnNldAogICAgICAgU2l6ZSAgICAgICAgICAgICAgRW50U2l6ZSAgICAgICAgICBG bGFncyAgTGluayAgSW5mbyAgQWxpZ24KICBbIDBdICAgICAgICAgICAgICAgICAgIE5VTEwgICAg ICAgICAgICAgMDAwMDAwMDAwMDAwMDAwMCAgMDAwMDAwMDAKICAgICAgIDAwMDAwMDAwMDAwMDAw MDAgIDAwMDAwMDAwMDAwMDAwMDAgICAgICAgICAgIDAgICAgIDAgICAgIDAKICBbIDFdIC50ZXh0 ICAgICAgICAgICAgIFBST0dCSVRTICAgICAgICAgMDAwMDAwMDAwMDAwMDAwMCAgMDAwMDAwNDAK ICAgICAgIDAwMDAwMDAwMDAwMWMzN2YgIDAwMDAwMDAwMDAwMDAwMDAgIEFYICAgICAgIDAgICAg IDAgICAgIDE2CiAgWyAyXSAucmVsYS50ZXh0ICAgICAgICBSRUxBICAgICAgICAgICAgIDAwMDAw MDAwMDAwMDAwMDAgIDAwMTE0MTAwCiAgICAgICAwMDAwMDAwMDAwMDBhN2QwICAwMDAwMDAwMDAw MDAwMDE4ICAgSSAgICAgIDMxICAgICAxICAgICA4CiAgWyAzXSAuZGF0YSAgICAgICAgICAgICBQ Uk9HQklUUyAgICAgICAgIDAwMDAwMDAwMDAwMDAwMDAgIDAwMDFjM2MwCiAgICAgICAwMDAwMDAw MDAwMDAwMDMwICAwMDAwMDAwMDAwMDAwMDAwICBXQSAgICAgICAwICAgICAwICAgICAxNgogIFsg NF0gLmJzcyAgICAgICAgICAgICAgTk9CSVRTICAgICAgICAgICAwMDAwMDAwMDAwMDAwMDAwICAw MDAxYzQwMAogICAgICAgMDAwMDAwMDAwMDAwMDJiMCAgMDAwMDAwMDAwMDAwMDAwMCAgV0EgICAg ICAgMCAgICAgMCAgICAgMzIKICBbIDVdIC5yb2RhdGEuc3RyMS44ICAgIFBST0dCSVRTICAgICAg ICAgMDAwMDAwMDAwMDAwMDAwMCAgMDAwMWM0MDAKICAgICAgIDAwMDAwMDAwMDAwMDBkNmYgIDAw MDAwMDAwMDAwMDAwMDEgQU1TICAgICAgIDAgICAgIDAgICAgIDgKICBbIDZdIC50ZXh0LnVubGlr ZWx5ICAgIFBST0dCSVRTICAgICAgICAgMDAwMDAwMDAwMDAwMDAwMCAgMDAwMWQxNmYgPDw8PDw8 PDw8PDw8PDw8CiAgICAgICAwMDAwMDAwMDAwMDAxYWE5ICAwMDAwMDAwMDAwMDAwMDAwICBBWCAg ICAgICAwICAgICAwICAgICAxCmBgYAoKVGhlIHJlbG9jYXRpb25zIGZvciBgdm0ub2A6CgpgYGAK bG91cmVuc0BDYXJib25YMTp+L3NyYy9ydWJ5L3J1YnkkIGxkIC1NIHZtLm8KLS0tIHRydW5jYXRl ZCAtLS0KLnRleHQgICAgICAgICAgIDB4MDAwMDAwMDAwMDQwMDEyMCAgICAweDFkZTJmCiAqKC50 ZXh0LnVubGlrZWx5IC50ZXh0LipfdW5saWtlbHkgLnRleHQudW5saWtlbHkuKikKIC50ZXh0LnVu bGlrZWx5CiAgICAgICAgICAgICAgICAweDAwMDAwMDAwMDA0MDAxMjAgICAgIDB4MWFhOSB2bS5v CiAgICAgICAgICAgICAgICAweDAwMDAwMDAwMDA0MDAzOGYgICAgICAgICAgICAgICAgcmJfZGVm aW5lX2FsbG9jX2Z1bmMKICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAwMDQwMDNiZiAgICAgICAg ICAgICAgICByYl91bmRlZl9hbGxvY19mdW5jCiAgICAgICAgICAgICAgICAweDAwMDAwMDAwMDA0 MDAzYzUgICAgICAgICAgICAgICAgSW5pdF9NZXRob2QKICAgICAgICAgICAgICAgIDB4MDAwMDAw MDAwMDQwMDUxMiAgICAgICAgICAgICAgICBJbml0X3ZtX2V2YWwKICAgICAgICAgICAgICAgIDB4 MDAwMDAwMDAwMDQwMDdhMSAgICAgICAgICAgICAgICBJbml0X2V2YWxfbWV0aG9kCiAgICAgICAg ICAgICAgICAweDAwMDAwMDAwMDA0MDBhNTQgICAgICAgICAgICAgICAgcmJfdW5kZWYKICAgICAg ICAgICAgICAgIDB4MDAwMDAwMDAwMDQwMGMxZCAgICAgICAgICAgICAgICBJbml0X1ZNCiAgICAg ICAgICAgICAgICAweDAwMDAwMDAwMDA0MDE4NWYgICAgICAgICAgICAgICAgSW5pdF9CYXJlVk0K ICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAwMDQwMWIxNiAgICAgICAgICAgICAgICBJbml0X3Zt X29iamVjdHMKICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAwMDQwMWI2MSAgICAgICAgICAgICAg ICBJbml0X3RvcF9zZWxmCiAqKC50ZXh0LmV4aXQgLnRleHQuZXhpdC4qKQogKigudGV4dC5zdGFy dHVwIC50ZXh0LnN0YXJ0dXAuKikKICooLnRleHQuaG90IC50ZXh0LmhvdC4qKQogKigudGV4dCAu c3R1YiAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQogKmZpbGwqICAgICAgICAgMHgwMDAwMDAw MDAwNDAxYmM5ICAgICAgICAweDcgCiAudGV4dCAgICAgICAgICAweDAwMDAwMDAwMDA0MDFiZDAg ICAgMHgxYzM3ZiB2bS5vCiAgICAgICAgICAgICAgICAweDAwMDAwMDAwMDA0MDIyZjAgICAgICAg ICAgICAgICAgcmJfZl9ub3RpbXBsZW1lbnQKICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAwMDQw NDc4MCAgICAgICAgICAgICAgICByYl92bV9lcF9sb2NhbF9lcAogICAgICAgICAgICAgICAgMHgw MDAwMDAwMDAwNDA0N2IwICAgICAgICAgICAgICAgIHJiX3ZtX2ZyYW1lX2Jsb2NrX2hhbmRsZXIK ICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAwMDQwNDdlMCAgICAgICAgICAgICAgICByYl92bV9j cmVmX25ld190b3BsZXZlbAogICAgICAgICAgICAgICAgMHgwMDAwMDAwMDAwNDA0ODcwICAgICAg ICAgICAgICAgIHJiX3ZtX2Jsb2NrX2VwX3VwZGF0ZQogICAgICAgICAgICAgICAgMHgwMDAwMDAw MDAwNDA0ODkwICAgICAgICAgICAgICAgIHJ1Ynlfdm1fc3BlY2lhbF9leGNlcHRpb25fY29weQog ICAgICAgICAgICAgICAgMHgwMDAwMDAwMDAwNDA2OTYwICAgICAgICAgICAgICAgIHJiX2VjX3N0 YWNrX292ZXJmbG93CiAgICAgICAgICAgICAgICAweDAwMDAwMDAwMDA0MDY5YzAgICAgICAgICAg ICAgICAgcmJfdm1fcHVzaF9mcmFtZQogICAgICAgICAgICAgICAgMHgwMDAwMDAwMDAwNDA2YjIw ICAgICAgICAgICAgICAgIHJiX3ZtX3BvcF9mcmFtZQogICAgICAgICAgICAgICAgMHgwMDAwMDAw MDAwNDA2YjMwICAgICAgICAgICAgICAgIHJiX2Vycm9yX2FyaXR5CiAgICAgICAgICAgICAgICAw eDAwMDAwMDAwMDA0MDcxODAgICAgICAgICAgICAgICAgcmJfdm1fZnJhbWVfbWV0aG9kX2VudHJ5 CiAgICAgICAgICAgICAgICAweDAwMDAwMDAwMDA0MDc1ZTAgICAgICAgICAgICAgICAgcmJfdm1f cmV3cml0ZV9jcmVmCiAgICAgICAgICAgICAgICAweDAwMDAwMDAwMDA0MDc2ZjAgICAgICAgICAg ICAgICAgcmJfc2ltcGxlX2lzZXFfcAogICAgICAgICAgICAgICAgMHgwMDAwMDAwMDAwNDA3NzAw ICAgICAgICAgICAgICAgIHJiX3ZtX29wdF9zdHJ1Y3RfYXJlZgogICAgICAgICAgICAgICAgMHgw MDAwMDAwMDAwNDA3NzMwICAgICAgICAgICAgICAgIHJiX3ZtX29wdF9zdHJ1Y3RfYXNldAogICAg ICAgICAgICAgICAgMHgwMDAwMDAwMDAwNDA3NzUwICAgICAgICAgICAgICAgIHJiX2NsZWFyX2Nv bnN0YW50X2NhY2hlCi0tLSB0cnVuY2F0ZWQgLS0tCmBgYApJIGFsc28gZGFiYmxlZCB3aXRoIHRo ZSBpZGVhIG9mIGFuIGBJTklURlVOQ2AgbWFjcm8gdGhhdCBhbHNvIHBsYWNlcyB0aGUgYEluaXRf eHh4YCBmdW5jdGlvbnMgaW50byBhIGB0ZXh0LmluaXRgIHNlY3Rpb24gYXMgdGhlIFtrZXJuZWwg ZG9lc10oaHR0cHM6Ly9saW51eGdhemV0dGUubmV0LzE1Ny9hbXVycmF5Lmh0bWwpIGZvciBhIHBv c3NpYmxlIGZ1dHVyZSBvcHRpbWl6YXRpb24gb2Ygc3RyaXBwaW5nIG91dCBFTEYgc2VjdGlvbnMg Zm9yIHNldHVwIC8gaW5pdCBzcGVjaWZpYyBmdW5jdGlvbnMuIEkgZG9uJ3QgdGhpbmsgdGhhdCBt YWtlcyBzZW5zZSBmb3Igbm93IGFuZCBwb3NzaWJseSBvbmx5IGludGVyZXN0aW5nIGZvciBtcnVi eSBvciBlbWJlZGRlZC4KCiMjIyBQb3NzaWJsZSBuZXh0IHVuaXRzIG9mIHdvcmsKCiMjIyMgQ29s ZCBjb2RlIHNwZWNpZmljCgoqIEluY3JlbWVudGFsbHkgUFIgY29ybmVyIGNhc2UgZXJyb3IgaGFu ZGxpbmcgZnVuY3Rpb25zIHN1Y2ggYXMgYHJiX2J1Z2AgZnJvbSBodHRwczovL2dpdGh1Yi5jb20v cnVieS9ydWJ5L3B1bGwvMTkyMgoqIERpdHRvIGZvciBnZW5lcmljIGVycm9yIGhhbmRsaW5nIGZ1 bmN0aW9ucyAoYHJiX3JhaXNlYCBhbmQgZnJpZW5kcykgZnJvbSBodHRwczovL2dpdGh1Yi5jb20v cnVieS9ydWJ5L3B1bGwvMTkyMgoqIENsYXNzIHNwZWNpZmljIGVycm9yIGhhbmRsaW5nIGZ1bmN0 aW9ucyAobG9hZCBlcnJvcnMsIGVuY29kaW5nIGVycm9ycyBpbiB0aGUgSU8gbW9kdWxlLCBzeXMg ZXJyb3JzIGV0Yy4pIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9wdWxsLzE5MjIK KiBHQ0MgNSsgYWxzbyBzdXBwb3J0cyBgY29sZGAgW2xhYmVsc10oaHR0cHM6Ly9nY2MuZ251Lm9y Zy9vbmxpbmVkb2NzL2djYy9MYWJlbC1BdHRyaWJ1dGVzLmh0bWwpICwgd2hpY2ggSSB0b29rIGEg c3RhYiB3aXRoIGluIHRoZSBibG9hdGVkIGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvcHVs bC8xOTIyCgojIyMjIFRMQiAodHJhbnNsYXRpb24gbG9va2FzaWRlIGJ1ZmZlcikgc3BlY2lmaWMK CiogRnVydGhlciBJVExCIG92ZXJoZWFkIGludmVzdGlnYXRpb24KKiBSdWJ5IGJpbmFyaWVzIGJ1 aWx0IHdpdGggTzMgYW5kIGRlYnVnIHN5bWJvbHMgY29tZSBpbiBhdCBqdXN0IHNob3J0IG9mIDE4 TUIsIG9yIHJvdWdobHkgOSBodWdlcGFnZXMgb24gbGludXguIFBIUCBjb3JlIGRldmVsb3BlcnMg d2VyZSBhYmxlIHRvIHNxdWVlemUgYSBmZXcgJSBieSByZW1hcHBpbmcgY29kZSB0byBodWdlcGFn ZXMgb24gc3VwcG9ydGVkIHN5c3RlbXMgLSBodHRwOi8vZGV2ZWxvcGVycy1jbHViLmNvbS9wb3N0 cy8yNzA2ODUvIC4gSW1wbGVtZW50YXRpb24gW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9waHAv cGhwLXNyYy9ibG9iL2ZiMDM4OWIxMDEwZGU1YTY0NTliY2YyODY0MDk0MjNmNjllNzRhYWYvZXh0 L29wY2FjaGUvWmVuZEFjY2VsZXJhdG9yLmMjTDI2NDUtTDI3NTApCgojIyMjIEJ5dGVjb2RlIHNw ZWNpZmljCgoqIFRoZSBbSW50ZWwgVHJhY2luZyBUYXNrIEFQSV0oaHR0cHM6Ly9zb2Z0d2FyZS5p bnRlbC5jb20vZW4tdXMvdnR1bmUtYW1wbGlmaWVyLWhlbHAtdGFzay1hcGkpIGlzIHZlcnkgd2Vs bCBzdWl0ZWQgZm9yIHRoZSBpbnN0cnVjdGlvbiBzZXF1ZW5jZXMgWUFSViBnZW5lcmF0ZXMgYW5k IHRvIGluZmVyIGJldHRlciBwZXIgaW5zdHJ1Y3Rpb24gQ1BVIHV0aWxpemF0aW9uIGFuZCBpZGVu dGlmeSBhbnkgc3RhbGxzIChmcm9udGVuZCwgYmFja2VuZCwgYnJhbmNoZXMgZXRjLikgdG8gZHJp dmUgZnVydGhlciB3b3JrLgoKCgotLSAKaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvCg==