[#75687] [Ruby trunk Bug#12416] struct rb_id_table lacks mark function — shyouhei@...
Issue #12416 has been reported by Shyouhei Urabe.
3 messages
2016/05/23
[#75763] [Ruby trunk Feature#12435] Using connect_nonblock to open TCP connections in Net::HTTP#connect — mohamed.m.m.hafez@...
Issue #12435 has been reported by Mohamed Hafez.
3 messages
2016/05/28
[#75774] Errno::EAGAIN thrown by OpenSSL::SSL::SSLSocket#connect_nonblock — Mohamed Hafez <mohamed.m.m.hafez@...>
Hi all, every now and then in my production server, I'm
4 messages
2016/05/30
[#75775] Re: Errno::EAGAIN thrown by OpenSSL::SSL::SSLSocket#connect_nonblock
— Mohamed Hafez <mohamed.m.m.hafez@...>
2016/05/30
Or does MRI's OpenSSL::SSL::SSLSocket#connect_nonblock just return
[#75782] Important: Somewhat backwards-incompatible change (Fwd: [ruby-cvs:62388] duerst:r55225 (trunk): * string.c: Activate full Unicode case mapping for UTF-8) — Martin J. Dürst <duerst@...>
V2l0aCB0aGUgY2hhbmdlIGJlbG93LCBJIGhhdmUgYWN0aXZhdGVkIGZ1bGwgVW5pY29kZSBjYXNl
4 messages
2016/05/31
[ruby-core:75440] [Ruby trunk Feature#12361] Proposal: add Geo::Coord class to standard library
From:
duerst@...
Date:
2016-05-10 09:16:05 UTC
List:
ruby-core #75440
SXNzdWUgIzEyMzYxIGhhcyBiZWVuIHVwZGF0ZWQgYnkgTWFydGluIETDvHJzdC4KCgpWaWN0b3Ig U2hlcGVsZXYgd3JvdGU6Cgo+IEkgcmVmZXJlbmNlZCAiZ2VtIHF1ZXN0aW9uIiBpbiBvcmlnaW5h bCBwcm9wb3NhbDogIlRoaXMgdHlwZSBpcyB0b28gInNtYWxsIiB0byBiZSBkZWZpbmVkIGJ5IHNl cGFyYXRlIGdlbSwgc28sIGFsbCBvZiBleGlzdGluZyBnZW8gZ2VtcyAoR2VvS2l0LCBSR2VvLCBH ZW9SdWJ5LCBHcmF0aWN1bGUgZXRjLikgZGVmaW5lIHRoZWlyIG93biBMYXRMbmcsIG9yIExvY2F0 aW9uLCBvciBQb2ludCwgd2hhdGV2ZXIuIi4gCgpOb3RoaW5nIGlzIHRvbyBzbWFsbCB0byBiZSBk ZWZpbmVkIGFzIGEgZ2VtLiBJIHByb3Bvc2UgeW91IGNyZWF0ZSB0aGlzIGFzIGEgZ2VtLCB0aGVu IGhhdmUgdGhlIGV4aXN0aW5nIGdlbyBnZW1zIHVzZSBpdCwgYW5kIHRoZW4gY29tZSBiYWNrIHRv IHlvdXIgcHJvcG9zYWwgaGVyZS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KRmVhdHVyZSAjMTIzNjE6IFByb3Bvc2FsOiBhZGQgR2VvOjpDb29yZCBjbGFzcyB0byBz dGFuZGFyZCBsaWJyYXJ5Cmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xMjM2MSNj aGFuZ2UtNTg1NTkKCiogQXV0aG9yOiBWaWN0b3IgU2hlcGVsZXYKKiBTdGF0dXM6IE9wZW4KKiBQ cmlvcml0eTogTm9ybWFsCiogQXNzaWduZWU6IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiMjIFByb3Bvc2FsCgpBZGQgYEdlbzo6Q29vcmRgIGNsYXNzIHRvIFJ1Ynkg c3RhbmRhcmQgbGlicmFyeSwgcmVwcmVzZW50aW5nIGBbbGF0aXR1ZGUsIGxvbmdpdHVkZV1gIHBh aXIgKyBjb252ZW5pZW5jZSBtZXRob2RzLiBBZGQgYEdlb2Agc3RhbmRhcmQgbGlicmFyeSB3aXRo IGFkZGl0aW9uYWwgY2FsY3VsYXRpb25zIGFuZCBjb252ZW5pZW5jZSBtZXRob2RzLgoKIyMgUmF0 aW9uYWxlCgpJbiBtb2Rlcm4gYXBwbGljYXRpb25zLCB3b3JraW5nIHdpdGggZ2VvZ3JhcGhpY2Fs IGNvb3JkaW5hdGVzIGlzIGZyZXF1ZW50LiBXZSBwcm9wb3NlIHRvIHRoaW5rIG9mIHN1Y2ggY29v cmRpbmF0ZXMgKG5hbWVseSwgYGxhdGl0dWRlLCBsb25naXR1ZGVgIHBhaXIpIGFzIG9mICJiYXNp YyIgdHlwZSB0aGF0IHNob3VsZCBiZSBzdXBwb3J0ZWQgYnkgc3RhbmRhcmQgbGlicmFyeSAtIHRo ZSBzYW1lIHdheSBhcyB3ZSBzdXBwb3J0IGBUaW1lYC9gRGF0ZWAvYERhdGVUaW1lYCBpbnN0ZWFk IG9mIGhhdmluZyBpdCBkZWZpbmVkCmJ5IHVzZXIvZ2Vtcy4KClRoaXMgdHlwZSBpcyB0b28gInNt YWxsIiB0byBiZSBkZWZpbmVkIGJ5IHNlcGFyYXRlIGdlbSwgc28sIGFsbCBvZiBleGlzdGluZyBn ZW8gZ2VtcyAoR2VvS2l0LCBSR2VvLCBHZW9SdWJ5LCBHcmF0aWN1bGUgZXRjLikgZGVmaW5lIHRo ZWlyIG93biBgTGF0TG5nYCwgb3IgYExvY2F0aW9uYCwgb3IgYFBvaW50YCwgd2hhdGV2ZXIuCgpP biBvdGhlciBoYW5kLCBBUEkgZGVzaWduIGZvciB0aGlzICJzbWFsbCIgdHlwZSBpcyB2YWd1ZSBl bm91Z2ggZm9yIGFsbCB0aG9zZSBzaW1pbGFyIHR5cGVzIHRvIGJlIGluY29tcGF0aWJsZSBhbmQg YnJlYWsgc21hbGwgaGFiaXRzIGFuZCBjb252ZW50aW9ucyB3aGVuIHlvdSBjaGFuZ2UgZnJvbSBv bmUgZ2VvIGxpYnJhcnkgdG8gYW5vdGhlciwgb3IgdHJ5IHRvIHVzZSBzZXZlcmFsCnNpbXVsdGFu ZW91c2x5LgoKQWRkaXRpb25hbHksIG1hbnkgZ2VtcyBzb21laG93IHdvcmtpbmcgd2l0aCBnZW8g Y29vcmRpbmF0ZXMgKGZvciB3ZWF0aGVyLCBvciB0aW1lem9uZSwgb3IgYW5vdGhlciB0YXNrcykg Z2VuZXJhbGx5IHByZWZlciBub3QgdG8gaW50cm9kdWNlIHR5cGUsIGFuZCBqdXN0IHdvcmsgd2l0 aCBgW2xhdCwgbG5nXWAgYXJyYXksIHdoaWNoIGlzIG5vdCB2ZXJ5IGNvbnZlbmllbnQsIGZhaXRo ZnVsbHkuCgpTbywgaGF2aW5nICJnZW8gY29vcmRpbmF0ZXMiIGZ1bmN0aW9uYWxpdHkgaW4gc3Rh bmRhcmQgbGlicmFyeSBzZWVtcyByZWFzb25hYmxlIGFuZCB2YWx1YWJsZS4KCiMjIEV4aXN0aW5n L3JlZmVyZW5jZSBzb2x1dGlvbnMKClJ1Ynk6CgoqIFtHZW9LaXQ6OkxhdExuZ10oaHR0cDovL3d3 dy5ydWJ5ZG9jLmluZm8vZ2l0aHViL2dlb2tpdC9nZW9raXQvbWFzdGVyL0dlb2tpdC9MYXRMbmcp OwoqIFtSR2VvOjpGZWF0dXJlOjpQb2ludF0oaHR0cDovL3d3dy5ydWJ5ZG9jLmluZm8vZ2Vtcy9y Z2VvL1JHZW8vRmVhdHVyZS9Qb2ludCkgKHdpdGggc2V2ZXJhbCAicHJpdmF0ZSIgaW1wbGVtZW50 YXRpb24gY2xhc3Nlcyk7IFJHZW8gaW1wbGVtZW50cyBmdWxsIFtPR0MgU2ltcGxlIEZlYXR1cmVz XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TaW1wbGVfRmVhdHVyZXMpIHNwZWNpZmlj YXRpb24sIHNvLCBpdHMgcG9pbnRzIGhhdmUgYHpgIGFuZCBgbWAgY29vcmRpbmF0ZXMsIHByb2pl Y3Rpb24gYW5kIG11Y2ggbW9yZTsKKiBbR3JhdGljdWxlOjpMb2NhdGlvbl0oaHR0cDovL3d3dy5y dWJ5ZG9jLmluZm8vZ2l0aHViL2NvbGxlY3RpdmVpZGVhL2dyYXRpY3VsZS9HcmF0aWN1bGUvTG9j YXRpb24pIChub3Qgc3RyaWN0bHkgYSBgW2xhdCxsbmddYCB3cmFwcGVyKTsKKiBbUm9zYW1hcnk6 Ok5vZGVdKGh0dHA6Ly93d3cucnVieWRvYy5pbmZvL2dlbXMvcm9zZW1hcnkvMC40LjQvUm9zZW1h cnkvTm9kZSkgKGZvbGxvd3MgbmFtaW5nIGNvbnZlbnRpb24gb2YgdW5kZXJseWluZyBPcGVuU3Ry ZWV0TWFwIEFQSSk7CgpPdGhlciBzb3VyY2VzOgoKKiBQeXRob246IFtnZW9weS5Qb2ludF0oaHR0 cDovL2dlb3B5LnJlYWR0aGVkb2NzLm9yZy9lbi9sYXRlc3QvI2dlb3B5LnBvaW50LlBvaW50KTsK KiBbRWxhc3RpY1NlYXJjaF0oaHR0cHM6Ly93d3cuZWxhc3RpYy5jby9ibG9nL2dlby1sb2NhdGlv bi1hbmQtc2VhcmNoKSB1c2VzIGhhc2ggd2l0aCAibGF0IiBhbmQgImxvbiIga2V5czsKKiBHb29n bGUgTWFwcyBbR2VvY29kaW5nIEFQSV0oaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vbWFw cy9kb2N1bWVudGF0aW9uL2dlb2NvZGluZy9pbnRybyNHZW9jb2RpbmdSZXNwb25zZXMpIHVzZXMg aGFzaCB3aXRoICJsYXQiIGFuZCAibG5nIiBrZXlzOwoqIFBvc3RHSVM6IFtwcmV0dHkgY29tcGxp Y2F0ZWRdKGh0dHA6Ly9wb3N0Z2lzLm5ldC9kb2NzL21hbnVhbC0yLjIvdXNpbmdfcG9zdGdpc19k Ym1hbmFnZW1lbnQuaHRtbCNSZWZPYmplY3QpICBoYXMgX2dlb21ldHJpY2FsXyAocHJvamVjdGVk KSBhbmQgX2dlb2dyYXBoaWNhbF8gKGxhdCwgbG5nKSBwb2ludHMgYW5kIHN0dWZmLgoKIyMgRGVz aWduIGRlY2lzaW9ucwoKV2hpbGUgZGVzaWduaW5nIGBHZW9gIGxpYnJhcnksIG91ciByZWZlcmVu Y2UgcG9pbnQgd2FzIHN0YW5kYXJkIGBUaW1lYCBjbGFzcyAoYW5kLCB0byBsZXNzZXIgZXh0ZW50 LCBgRGF0ZWAvYERhdGVUaW1lYCkuIEl0IGhhcyB0aGlzIHJlc3BvbnNpYmlsaXRpZXM6CgoqIHN0 b3JlcyBkYXRhIGluIHNpbXBsZSBpbnRlcm5hbCBmb3JtOwoqIGhlbHBzIHRvIHBhcnNlIGFuZCBm b3JtYXQgZGF0YSB0byBhbmQgZnJvbSBzdHJpbmdzOwoqIHByb3ZpZGVzIGVhc3kgYWNjZXNzIHRv IGxvZ2ljYWwgY29tcG9uZW50cyBvZiBkYXRhOwoqIGFsbG93cyBtb3N0IHNpbXBsZSBhbmQgdW5h bWJpZ3VvdXMgY2FsY3VsYXRpb25zLgoKKipNYWluIHR5cGUgbmFtZSoqOiBhcyBmYXIgYXMgd2Ug Y2FuIHNlZSwgdGhlcmUncyBubyBnb29kIHNpbmd1bGFyIG5hbWUgZm9yIGAobGF0LCBsbmcpYCBw YWlyIGNvbmNlcHQuIEFzIG1lbnRpb25lZCBhYm92ZSwgdGhlcmUgY2FuIGJlIHNlZW4gbmFtZXMg bGlrZSBgTGF0TG5nYCwgb3IgYExvY2F0aW9uYCwgb3IgYFBvaW50YDsgYW5kIGluIG5hdHVyYWwg bGFuZ3VhZ2UKanVzdCAiY29vcmRpbmF0ZXMiIHVzZWQgZnJlcXVlbnRseS4gV2UgcHJvcG9zZSB0 aGUgbmFtZSBgQ29vcmRgLCB3aGljaCBpcyBwcmV0dHkgc2hvcnQsIGVhc3kgdG8gcmVtZW1iZXIs IGRlbW9uc3RyYXRlcyBpbnRlbnRpb25zIChhbmQgbG9va3MgbGlrZSBzaW5ndWxhciwgc28geW91 IGNhbiBoYXZlICJvbmUgY29vcmQgb2JqZWN0IiBhbmQgImFycmF5IG9mIGNvb3JkcyIsCndoaWNo IGlzIG5vdCAxMDAlIGxpbmd1aXN0aWNhbGx5IGNvcnJlY3QsIHlldCBjb252ZW5pZW50KS4gQWx0 ZXJuYXRpdmUgYFBvaW50YCBuYW1lIHNlZW1zIHRvIGJlIHRvbyBhbWJpZ291cywgYmVpbmcgdXNl ZCBpbiBtYW55IGNvbnRleHRzLgoKYEdlbzo6Q29vcmRgIG9iamVjdCBpcyAqKmltbXV0YWJsZSoq LCB0aGVyZSdzIG5vIHNlbWFudGljYWwgc2Vuc2UgaW4gYGxvY2F0aW9uLmxhdGl0dWRlID0gLi4u YCBvciBzb21ldGhpbmcgbGlrZSB0aGlzLgoKKipVbml0cyoqOiBgR2VvYCBjYWxjdWxhdGlvbnMg KGp1c3QgbGlrZSBgVGltZWAgY2FsY3VsYXRpb25zKSBwcm92aWRlIG5vIHVuaXRzIG9wdGlvbnMs IGp1c3QgcmV0dXJuaW5nIG51bWJlcnMgbWVhc3VyZWQgaW4gImRlZmF1bHQiIHVuaXRzOiBtZXRy ZXMgZm9yIGRpc3RhbmNlcyAoYXMgdGhleSBhcmUgU0kgdW5pdCkgYW5kIGRlZ3JlZXMgZm9yIGF6 aW11dGguIExhdGl0dWRlIGFuZCBsb25naXR1ZGUgYXJlIHN0b3JlZCBpbiBkZWdyZWVzLCBidXQg cmFkaWFucyB2YWx1ZXMgYWNjZXNzb3JzIGFyZSBwcm92aWRlZCAoYmVpbmcgd2lkZWx5IHVzZWQg aW4gZ2VvZGVzeSBtYXRoKS4KCkFsbCBjb29yZGluYXRlcyBhbmQgY2FsY3VsYXRpb25zIGFyZSB0 aG91Z2h0IHRvIGJlIGluIFdHUyA4NCBjb29yZGluYXRlcyByZWZlcmVuY2Ugc3lzdGVtLCBiZWlu ZyBjdXJyZW50IHN0YW5kYXJkIGZvciBtYXBzIGFuZCBHUFMuCgpUaGVyZSdzIGludHJvZHVjZWQg Kipjb25jZXB0IG9mIGdsb2JlKiogdXNlZCBpbnRlcm5hbGx5IGZvciBjYWxjdWxhdGlvbnMuIE9u bHkgZ2VuZXJpYyAoc3BoZXJlKSBhbmQgRWFydGggZ2xvYmVzIGFyZSBpbXBsZW1lbnRlZCwgYnV0 IGZvciAyMDE2IHdlIGZlZWwgbGlrZSBjdXJyZW50IGRlc2lnbiBvZiBiYXNpYyB0eXBlcyBzaG91 bGQgdGFrZSBpbiBjb25zaWRlcmF0aW9uCnBvc3NpYmlsaXR5IG9mIHdyaXRpbmcgUnVieSBzY3Jp cHRzIGZvciBNYXJzIG1hcHMgYW5hbHlzaXMuIE9ubHkgb25lIGdlb2Rlc3kgZm9ybXVsYSBpcyBp bXBsZW1lbnRlZCAoVmluY2VudHksIGdlbmVyYWxseSBjb25zaWRlcmVkIG9uZSBvZiB0aGUgbW9z dCBwcmVjaXNlKSwgYXMgZm9yIHN0YW5kYXJkIGxpYnJhcnkgY2xhc3MgaXQgY29uc2lkZXJlZCB1 bm5lY2Vzc2FyeSB0byBwcm92aWRlIHVzZXIgd2l0aCBnZW9kZXN5IGZvcm11bGFlIG9wdGlvbnMu CgpObyAqKm1hcCBwcm9qZWN0aW9uKiogbWF0aCB3YXMgYWRkZWQgaW50byBjdXJyZW50IHByb3Bv c2FsLCBidXQgaXQgbWF5IGJlIGEgZ29vZCBkaXJlY3Rpb24gZm9yIGZ1cnRoZXIgd29yay4gTm8g KiplbGV2YXRpb24qKiBkYXRhIGNvbnNpZGVyZWQgZWl0aGVyLgoKIyMgUHJvcG9zYWwgZGV0YWls cwoKIyMjIGBHZW86OkNvb3JkYCBjbGFzcwoKUmVwcmVzZW50cyBgW2xhdGl0dWRlLCBsb25naXR1 ZGVdYCBwYWlyLiBMYXRpdHVkZSBpcyAtOTAgdG8gKzkwIChkZWdyZWVzKS4gTG9uZ2l0dWRlIGlz IC0xODAgdG8gKzE4MC4KCkNsYXNzIG1ldGhvZHM6CgoqIGBuZXcobGF0LCBsbmcpYCBjcmVhdGVz IGluc3RhbmNlIGZyb20gdHdvIE51bWVyaWNzIChpbiBkZWdyZWVzKTsKKiBgbmV3KGxhdDosIGxu ZzopYCBrZXl3b3JkIGFyZ3VtZW50cyBmb3JtIG9mIGFib3ZlOwoqIGBuZXcobGF0ZDosIGxhdG06 LCBsYXRzOiwgbGF0aDosIGxuZ2Q6IGxuZ206LCBsbmdzOiBsbmdoOilgIGNyZWF0ZXMgaW5zdGFu Y2UgZnJvbSBjb29yZGluYXRlcyBpbiAoZGVnLCBtaW4sIHNlYywgaGVtaXNwaGVyZSkgZm9ybTsg aGVtaXNwaGVyZXMgYXJlICJOIi8iUyIgZm9yIGxhdGl0dWRlIGFuZCAiVyIvRSIgZm9yIGxvbmdp dHVkZTsgYW55IGNvbXBvbmVudCBleGNlcHQgZm9yIGRlZ3JlZXMgY2FuIGJlIG9taXR0ZWQ7IGlm IGhlbWlzcGhlcmUgaXMgb21pdHRlZCwgaXQgaXMgZGVjaWRlZCBieSBkZWdyZWVzIHNpZ24gKGxh dDogcG9zaXRpdmUgaXMgIk4iLCBsbmc6IHBvc2l0aXZlIGlzICJFIik7CiogYGZyb21faChoYXNo KWAgY3JlYXRlcyBpbnN0YW5jZSBmcm9tIGhhc2ggd2l0aCBgImxhdCJgIG9yIGAibGF0aXR1ZGUi YCBrZXkgYW5kIGAibG9uImAgb3IgYCJsbmciYCBvciBgImxvbmdpdHVkZSJgIGtleSAoY2FzZS1p bmRlcGVuZGVudCk7CiogYGZyb21fcmFkaWFucyhwaGksIGxhKWAgY3JlYXRlcyBpbnN0YW5jZSBm cm9tIHJhZGlhbiB2YWx1ZXM7CiogYHN0cnBjb29yZGAgcGFyc2VzIHN0cmluZyBpbnRvIGNvb3Jk aW5hdGVzIGJ5IHByb3ZpZGVkIHBhdHRlcm4gKHNlZSBiZWxvdyBmb3IgcGF0dGVybiBkZXNjcmlw dGlvbik7CiogYHBhcnNlX2xsYCBwYXJzZXMgY29vcmRpbmF0ZXMgc3RyaW5nIGluIGAiZmxvYXQs IGZsb2F0ImAgZm9ybTsKKiBgcGFyc2VfZG1zYCBwYXJzZXMgY29vcmRpbmF0ZXMgc3RyaW5nIGlu IGBkIG0gcyBoLCBkIG0gcyBoYCBmb3JtYXQgKGNvbnNpZGVyaW5nIHNldmVyYWwgd2lkZWx5IHVz ZWQgc3ltYm9scyBmb3IgZGVncmVlcywgbWludXRlcyBhbmQgc2Vjb25kcyk7CiogYHBhcnNlYCB0 cmllcyB0byBwYXJzZSBzdHJpbmcgaW50byBjb29yZGluYXRlcyBmcm9tIHZhcmlvdXMgZm9ybWF0 cy4KCkluc3RhbmNlIG1ldGhvZHM6CgoqIGBsYXRgIGFuZCBgbG5nYCwgcmV0dXJuaW5nIGBGbG9h dGBzLCBzaWduZWQ7CiogYGxhdGl0dWRlYCBhbmQgYGxvbmdpdHVkZWAgYXMgYW4gYWxpYXNlczsg YGxvbmAgYXMgYW4gYWRkaXRpb25hbCBhbGlhc2VzIGZvciBsb25naXR1ZGU7CiogYGxhdGRgLCBg bGF0bWAsIGBsYXRzYCwgYGxhdGhgOiBkZWdyZWUsIG1pbnV0ZSwgc2Vjb25kLCBoZW1pc3BoZXJl OyBgbGF0ZGAgYW5kIGBsYXRtYCBhcmUgYEZpeG51bWAsIGBsYXRzYCBpcyBgRmxvYXRgLCBgbGF0 aGAgaXMgIk4iLyJTIjsgYWxsIG51bWJlcnMgYXJlIHVuc2lnbmVkOwoqIGBsbmdkYCwgYGxuZ21g LCBgbG5nc2AsIGBsbmdoYDogdGhlIHNhbWUgZm9yIGxvbmdpdHVkZSAoaGVtaXNwaGVyZSBpcyAi VyIvIkUiKTsKKiBgbGF0ZG1zKG5vaGVtaXNwaGVyZSA9IGZhbHNlKWAgcmV0dXJucyBgW2xhdGQs IGxhdG0sIGxhdHMsIGxhdGhdYCB3aXRoIGBub2hlbWlzcGhlcmVgIHBhcmFtIGVxdWFsIHRvIGBm YWxzZWAsIGFuZCBgW8KxbGF0ZCwgbGF0bSwgbGF0c11gIHdpdGggYHRydWVgOyBzYW1lIHdpdGgg YGxuZ2Rtc2AgZm9yIGxvbmdpdHVkZTsKKiBgcGhpYCBhbmQgYM+GYCBpcyBsYXRpdHVkZSBpbiBy YWRpYW5zIChoZWxwZnVsIGZvciBtYXRoKSwgYGxhYCBvciBgzrtgIGlzIGxvbmdpdHVkZSBpbiBy YWRpYW5zIChub3QgYGxhbWJkYWAgdG8gbm90IGNvbmZ1c2Ugd2l0aCBLZXJuZWwgbWV0aG9kKTsK KiBgdG9fc2AgcmV0dXJuaW5nIHN0cmluZyBsaWtlICI1MC4wMDQ0NDQsMzYuMjMxMzg5IiAoZ29v ZCBmb3IgbWFwIFVSTHMgY29uc3RydWN0aW9uLCBmb3IgZXhhbXBsZSk7CiogYHRvX2gobGF0OiA6 bGF0LCBsbmc6IDpsbmcpYCBjb252ZXJ0cyBjb29yZCB0byBoYXNoICh3aXRoIGRlc2lyZWQga2V5 IG5hbWVzKTsKKiBgdG9fYWAgY29udmVydHMgY29vcmQgdG8gc2ltcGxlIGBbbGF0LCBsbmddYCBw YWlyOwoqIGBzdHJmY29vcmQoZm9ybWF0c3RyKWAgZm9yIGNvbXBsZXggY29vcmRpbmF0ZSBmb3Jt YXR0aW5nIChzZWUgYmVsb3cgZm9yIGZvcm1hdCBzdHJpbmcgZGVzY3JpcHRpb24pOwoqIGBkaXN0 YW5jZShvdGhlcilgIGNhbGN1bGF0ZXMgZGlzdGFuY2UgdG8gYW5vdGhlciBwb2ludCAoaW4gbWV0 cmVzKTsKKiBgYXppbXV0aChvdGhlcilgIGNhbGN1bGF0ZXMgZGlyZWN0aW9uIHRvIHRhcmdldCAo aW4gZGVncmVlcyk7CiogYGVuZHBvaW50KGRpcmVjdGlvbiwgYXppbXV0aClgIGNhbGN1bGF0ZXMg ZmluYWwgcG9pbnQgb2YgdGhlIGxpbmUgb2YgYGRpc3RhbmNlYCBtZXRyZXMgZ29pbmcgaW4gYGF6 aW11dGhgIGRpcmVjdGlvbiBmcm9tIGN1cnJlbnQgcG9pbnQuCgojIyMjIGBzdHJwY29vcmRgL2Bz dHJmY29vcmRgCgpFeGFtcGxlOgoKfn5+cnVieQpraGFya2l2LnN0cmZjb29yZCgnJWxhdGR1wrAl bGF0beKAsiVsYXRz4oCzICVsYXRoLCAlbG5nZHXCsCVsbmdt4oCyJWxuZ3PigLMgJWxuZ2gnKQoj ID0+ICI1MMKwMOKAsjE24oCzIE4sIDM2wrAxM+KAsjUz4oCzIEUiCn5+fgoKRGlyZWN0aXZlczoK CiogYCVsYXRgIC0gZnVsbCBsYXRpdHVkZSwgZmxvYXQ7IGNhbiBiZSBmb3JtYXR0ZWQgd2l0aCBt b3JlIGNvbnRyb2wgbGlrZSBgJS40bGF0YCAoZm91ciBkaWdpdHMgYWZ0ZXIgcG9pbnQpIG9yIGAl K2xhdGAgKGV4cGxpY2l0IHBsdXMgc2lnbiBmb3IgcG9zaXRpdmUgbGF0aXR1ZGVzKTsKKiBgJWxh dGRgIC0gbGF0aXR1ZGUgZGVncmVlcywgdW5zaWduZWQsIGludGVnZXIKKiBgJWxhdGRzYCAtIGxh dGl0dWRlIGRlZ3JlZXMsIHNpZ25lZAoqIGAlbGF0bWAgLSBsYXRpdHVkZSBtaW51dGVzLCB1bnNp Z25lZCwgaW50ZWdlcgoqIGAlbGF0c2AgLSBsYXRpdHVkZSBzZWNvbmRzLCB1bnNpZ25lZCwgaW50 ZWdlciwgYnV0IGNhbiBiZSBmb3JtYXR0ZWQgYXMgZmxvYXQ6IGAlLjJsYXRzYAoqIGAlbGF0aGAg LSBsYXRpdHVkZSBoZW1pc3BoZXJlLCBvbmUgbGV0dGVyICgiTiIvIlMiKQoqIGAlbG5nYCwgYCVs bmdkYCwgYCVsbmdkc2AsIGAlbG5nc2AsIGAlbG5naGAsIGAlbG5nSGAgLSBzYW1lIGZvciBsb25n aXR1ZGUKKiBgJSVgIGxpdGVyYWwgYCVgIHNpZ24KCiMjIyBDdXJyZW50IGltcGxlbWVudGF0aW9u CgpQcm9wb3NlZCBpbXBsZW1lbnRhdGlvbiBjYW4gYmUgZm91bmQgYXQgaHR0cHM6Ly9naXRodWIu Y29tL3p2ZXJvay9nZW9fY29vcmQuCgpJdCB3YXMgY3JlYXRlZCB3aXRoIHRob3VnaHRzIG9mIHN0 YW5kYXJkIGxpYnJhcnksIHNvLCBhbGwgZG9jcyBhcmUgaW4gUkRvYyBmb3JtYXQsIGFuZCB0ZXN0 cy9zcGVjcyBhcmUgaW4gbXNwZWMtY29tcGF0aWJsZSByc3BlYyBmbGF2b3VyLgoKCgoKLS0gCmh0 dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLwoKVW5zdWJzY3JpYmU6IDxtYWlsdG86cnVieS1jb3Jl LXJlcXVlc3RAcnVieS1sYW5nLm9yZz9zdWJqZWN0PXVuc3Vic2NyaWJlPgo8aHR0cDovL2xpc3Rz LnJ1YnktbGFuZy5vcmcvY2dpLWJpbi9tYWlsbWFuL29wdGlvbnMvcnVieS1jb3JlPgo=