[#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:75427] [Ruby trunk Feature#12361] Proposal: add Geo::Coord class to standard library
From:
duerst@...
Date:
2016-05-10 04:19:45 UTC
List:
ruby-core #75427
SXNzdWUgIzEyMzYxIGhhcyBiZWVuIHVwZGF0ZWQgYnkgTWFydGluIETDvHJzdC4KCgpPbiBydWJ5 Z2VtcywgSSBzZWUgYSBsb3Qgb2YgZ2VtcyB3aXRoICdnZW8nIGluIHRoZWlyIG5hbWUuIFdoaWNo IG9uZSBpcyB5b3Vycz8gSG93IHBvcHVsYXIgaXMgaXQ/IFRoZXNlIGRheXMsIGl0J3MgZWFzeSB0 byB1c2Ugc29tZXRoaW5nIGFzIGEgZ2VtLCBzbyBpdCdzIG5vdCB0aGF0IG5lY2Vzc2FyeSB0byBp bmNsdWRlIHRoaW5ncyBpbnRvIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LgoKWW91IG1ha2UgYSBsb3Qg b2YgY29tcGFyaXNvbnMgd2l0aCBUaW1lLiBUaW1lIGhhcyB0aGluZ3Mgc3VjaCBhcyB0aW1lem9u ZXMuIEdlbyBjb29yZGluYXRlcyBhbHNvIGhhdmUgYWxsIGtpbmRzIG9mIGNvbXBsaWNhdGVkIGRl dGFpbHMuIEkgaGFwcGVuIHRvIGx1cmsgb24gdGhlIElFVEYgZ2VvanNvbiBsaXN0LCBhbmQgdGhl cmUgc3VjaCB0aGluZ3MgZ2V0IGRpc2N1c3NlZC4gRm9yIGV4YW1wbGUsIHRoZXJlIHNlZW1zIHRv IGJlIExhdC9Mb25nIGZvcm1hdHMgYW5kIExvbmcvTGF0IGZvcm1hdHMuIFdoeSBkaWQgeW91IGNo b29zZSBMYXQvTG9uZz8gQWxzbywgcGVvcGxlIHRoZXJlIG9mdGVuIHRhbGsgYWJvdXQgc29tZXRo aW5nIGNhbGxlZCBDUlMgKGNvb3JkaW5hdGUgcmVmZXJlbmNlIHN5c3RlbSwgSSBndWVzcykuIFdo aWNoIG9uZSBkbyB5b3UgdXNlLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQpGZWF0dXJlICMxMjM2MTogUHJvcG9zYWw6IGFkZCBHZW86OkNvb3JkIGNsYXNzIHRvIHN0 YW5kYXJkIGxpYnJhcnkKaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzEyMzYxI2No YW5nZS01ODU0NQoKKiBBdXRob3I6IFZpY3RvciBTaGVwZWxldgoqIFN0YXR1czogT3BlbgoqIFBy aW9yaXR5OiBOb3JtYWwKKiBBc3NpZ25lZTogCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KIyMgUHJvcG9zYWwKCkFkZCBgR2VvOjpDb29yZGAgY2xhc3MgdG8gUnVieSBz dGFuZGFyZCBsaWJyYXJ5LCByZXByZXNlbnRpbmcgYFtsYXRpdHVkZSwgbG9uZ2l0dWRlXWAgcGFp ciArIGNvbnZlbmllbmNlIG1ldGhvZHMuIEFkZCBgR2VvYCBzdGFuZGFyZCBsaWJyYXJ5IHdpdGgg YWRkaXRpb25hbCBjYWxjdWxhdGlvbnMgYW5kIGNvbnZlbmllbmNlIG1ldGhvZHMuCgojIyBSYXRp b25hbGUKCkluIG1vZGVybiBhcHBsaWNhdGlvbnMsIHdvcmtpbmcgd2l0aCBnZW9ncmFwaGljYWwg Y29vcmRpbmF0ZXMgaXMgZnJlcXVlbnQuIFdlIHByb3Bvc2UgdG8gdGhpbmsgb2Ygc3VjaCBjb29y ZGluYXRlcyAobmFtZWx5LCBgbGF0aXR1ZGUsIGxvbmdpdHVkZWAgcGFpcikgYXMgb2YgImJhc2lj IiB0eXBlIHRoYXQgc2hvdWxkIGJlIHN1cHBvcnRlZCBieSBzdGFuZGFyZCBsaWJyYXJ5IC0gdGhl IHNhbWUgd2F5IGFzIHdlIHN1cHBvcnQgYFRpbWVgL2BEYXRlYC9gRGF0ZVRpbWVgIGluc3RlYWQg b2YgaGF2aW5nIGl0IGRlZmluZWQKYnkgdXNlci9nZW1zLgoKVGhpcyB0eXBlIGlzIHRvbyAic21h bGwiIHRvIGJlIGRlZmluZWQgYnkgc2VwYXJhdGUgZ2VtLCBzbywgYWxsIG9mIGV4aXN0aW5nIGdl byBnZW1zIChHZW9LaXQsIFJHZW8sIEdlb1J1YnksIEdyYXRpY3VsZSBldGMuKSBkZWZpbmUgdGhl aXIgb3duIGBMYXRMbmdgLCBvciBgTG9jYXRpb25gLCBvciBgUG9pbnRgLCB3aGF0ZXZlci4KCk9u IG90aGVyIGhhbmQsIEFQSSBkZXNpZ24gZm9yIHRoaXMgInNtYWxsIiB0eXBlIGlzIHZhZ3VlIGVu b3VnaCBmb3IgYWxsIHRob3NlIHNpbWlsYXIgdHlwZXMgdG8gYmUgaW5jb21wYXRpYmxlIGFuZCBi cmVhayBzbWFsbCBoYWJpdHMgYW5kIGNvbnZlbnRpb25zIHdoZW4geW91IGNoYW5nZSBmcm9tIG9u ZSBnZW8gbGlicmFyeSB0byBhbm90aGVyLCBvciB0cnkgdG8gdXNlIHNldmVyYWwKc2ltdWx0YW5l b3VzbHkuCgpBZGRpdGlvbmFseSwgbWFueSBnZW1zIHNvbWVob3cgd29ya2luZyB3aXRoIGdlbyBj b29yZGluYXRlcyAoZm9yIHdlYXRoZXIsIG9yIHRpbWV6b25lLCBvciBhbm90aGVyIHRhc2tzKSBn ZW5lcmFsbHkgcHJlZmVyIG5vdCB0byBpbnRyb2R1Y2UgdHlwZSwgYW5kIGp1c3Qgd29yayB3aXRo IGBbbGF0LCBsbmddYCBhcnJheSwgd2hpY2ggaXMgbm90IHZlcnkgY29udmVuaWVudCwgZmFpdGhm dWxseS4KClNvLCBoYXZpbmcgImdlbyBjb29yZGluYXRlcyIgZnVuY3Rpb25hbGl0eSBpbiBzdGFu ZGFyZCBsaWJyYXJ5IHNlZW1zIHJlYXNvbmFibGUgYW5kIHZhbHVhYmxlLgoKIyMgRXhpc3Rpbmcv cmVmZXJlbmNlIHNvbHV0aW9ucwoKUnVieToKCiogW0dlb0tpdDo6TGF0TG5nXShodHRwOi8vd3d3 LnJ1Ynlkb2MuaW5mby9naXRodWIvZ2Vva2l0L2dlb2tpdC9tYXN0ZXIvR2Vva2l0L0xhdExuZyk7 CiogW1JHZW86OkZlYXR1cmU6OlBvaW50XShodHRwOi8vd3d3LnJ1Ynlkb2MuaW5mby9nZW1zL3Jn ZW8vUkdlby9GZWF0dXJlL1BvaW50KSAod2l0aCBzZXZlcmFsICJwcml2YXRlIiBpbXBsZW1lbnRh dGlvbiBjbGFzc2VzKTsgUkdlbyBpbXBsZW1lbnRzIGZ1bGwgW09HQyBTaW1wbGUgRmVhdHVyZXNd KGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NpbXBsZV9GZWF0dXJlcykgc3BlY2lmaWNh dGlvbiwgc28sIGl0cyBwb2ludHMgaGF2ZSBgemAgYW5kIGBtYCBjb29yZGluYXRlcywgcHJvamVj dGlvbiBhbmQgbXVjaCBtb3JlOwoqIFtHcmF0aWN1bGU6OkxvY2F0aW9uXShodHRwOi8vd3d3LnJ1 Ynlkb2MuaW5mby9naXRodWIvY29sbGVjdGl2ZWlkZWEvZ3JhdGljdWxlL0dyYXRpY3VsZS9Mb2Nh dGlvbikgKG5vdCBzdHJpY3RseSBhIGBbbGF0LGxuZ11gIHdyYXBwZXIpOwoqIFtSb3NhbWFyeTo6 Tm9kZV0oaHR0cDovL3d3dy5ydWJ5ZG9jLmluZm8vZ2Vtcy9yb3NlbWFyeS8wLjQuNC9Sb3NlbWFy eS9Ob2RlKSAoZm9sbG93cyBuYW1pbmcgY29udmVudGlvbiBvZiB1bmRlcmx5aW5nIE9wZW5TdHJl ZXRNYXAgQVBJKTsKCk90aGVyIHNvdXJjZXM6CiogUHl0aG9uOiBbZ2VvcHkuUG9pbnRdKGh0dHA6 Ly9nZW9weS5yZWFkdGhlZG9jcy5vcmcvZW4vbGF0ZXN0LyNnZW9weS5wb2ludC5Qb2ludCk7Ciog W0VsYXN0aWNTZWFyY2hdKGh0dHBzOi8vd3d3LmVsYXN0aWMuY28vYmxvZy9nZW8tbG9jYXRpb24t YW5kLXNlYXJjaCkgdXNlcyBoYXNoIHdpdGggImxhdCIgYW5kICJsb24iIGtleXM7CiogR29vZ2xl IE1hcHMgW0dlb2NvZGluZyBBUEldKGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMv ZG9jdW1lbnRhdGlvbi9nZW9jb2RpbmcvaW50cm8jR2VvY29kaW5nUmVzcG9uc2VzKSB1c2VzIGhh c2ggd2l0aCAibGF0IiBhbmQgImxuZyIga2V5czsKKiBQb3N0R0lTOiBbcHJldHR5IGNvbXBsaWNh dGVkXShodHRwOi8vcG9zdGdpcy5uZXQvZG9jcy9tYW51YWwtMi4yL3VzaW5nX3Bvc3RnaXNfZGJt YW5hZ2VtZW50Lmh0bWwjUmVmT2JqZWN0KSAgaGFzIF9nZW9tZXRyaWNhbF8gKHByb2plY3RlZCkg YW5kIF9nZW9ncmFwaGljYWxfIChsYXQsIGxuZykgcG9pbnRzIGFuZCBzdHVmZi4KCiMjIERlc2ln biBkZWNpc2lvbnMKCldoaWxlIGRlc2lnbmluZyBgR2VvYCBsaWJyYXJ5LCBvdXIgcmVmZXJlbmNl IHBvaW50IHdhcyBzdGFuZGFyZCBgVGltZWAgY2xhc3MgKGFuZCwgdG8gbGVzc2VyIGV4dGVudCwg YERhdGVgL2BEYXRlVGltZWApLiBJdCBoYXMgdGhpcyByZXNwb25zaWJpbGl0aWVzOgoqIHN0b3Jl cyBkYXRhIGluIHNpbXBsZSBpbnRlcm5hbCBmb3JtOwoqIGhlbHBzIHRvIHBhcnNlIGFuZCBmb3Jt YXQgZGF0YSB0byBhbmQgZnJvbSBzdHJpbmdzOwoqIHByb3ZpZGVzIGVhc3kgYWNjZXNzIHRvIGxv Z2ljYWwgY29tcG9uZW50cyBvZiBkYXRhOwoqIGFsbG93cyBtb3N0IHNpbXBsZSBhbmQgdW5hbWJp Z3VvdXMgY2FsY3VsYXRpb25zLgoKKipNYWluIHR5cGUgbmFtZSoqOiBhcyBmYXIgYXMgd2UgY2Fu IHNlZSwgdGhlcmUncyBubyBnb29kIHNpbmd1bGFyIG5hbWUgZm9yIGAobGF0LCBsbmcpYCBwYWly IGNvbmNlcHQuIEFzIG1lbnRpb25lZCBhYm92ZSwgdGhlcmUgY2FuIGJlIHNlZW4gbmFtZXMgbGlr ZSBgTGF0TG5nYCwgb3IgYExvY2F0aW9uYCwgb3IgYFBvaW50YDsgYW5kIGluIG5hdHVyYWwgbGFu Z3VhZ2UKanVzdCAiY29vcmRpbmF0ZXMiIHVzZWQgZnJlcXVlbnRseS4gV2UgcHJvcG9zZSB0aGUg bmFtZSBgQ29vcmRgLCB3aGljaCBpcyBwcmV0dHkgc2hvcnQsIGVhc3kgdG8gcmVtZW1iZXIsIGRl bW9uc3RyYXRlcyBpbnRlbnRpb25zIChhbmQgbG9va3MgbGlrZSBzaW5ndWxhciwgc28geW91IGNh biBoYXZlICJvbmUgY29vcmQgb2JqZWN0IiBhbmQgImFycmF5IG9mIGNvb3JkcyIsCndoaWNoIGlz IG5vdCAxMDAlIGxpbmd1aXN0aWNhbGx5IGNvcnJlY3QsIHlldCBjb252ZW5pZW50KS4gQWx0ZXJu YXRpdmUgYFBvaW50YCBuYW1lIHNlZW1zIHRvIGJlIHRvbyBhbWJpZ291cywgYmVpbmcgdXNlZCBp biBtYW55IGNvbnRleHRzLgoKYEdlbzo6Q29vcmRgIG9iamVjdCBpcyAqKmltbXV0YWJsZSoqLCB0 aGVyZSdzIG5vIHNlbWFudGljYWwgc2Vuc2UgaW4gYGxvY2F0aW9uLmxhdGl0dWRlID0gLi4uYCBv ciBzb21ldGhpbmcgbGlrZSB0aGlzLgoKKipVbml0cyoqOiBgR2VvYCBjYWxjdWxhdGlvbnMgKGp1 c3QgbGlrZSBgVGltZWAgY2FsY3VsYXRpb25zKSBwcm92aWRlIG5vIHVuaXRzIG9wdGlvbnMsIGp1 c3QgcmV0dXJuaW5nIG51bWJlcnMgbWVhc3VyZWQgaW4gImRlZmF1bHQiIHVuaXRzOiBtZXRyZXMg Zm9yIGRpc3RhbmNlcyAoYXMgdGhleSBhcmUgU0kgdW5pdCkgYW5kIGRlZ3JlZXMgZm9yIGF6aW11 dGguIExhdGl0dWRlIGFuZCBsb25naXR1ZGUgYXJlIHN0b3JlZCBpbiBkZWdyZWVzLCBidXQgcmFk aWFucyB2YWx1ZXMgYWNjZXNzb3JzIGFyZSBwcm92aWRlZCAoYmVpbmcgd2lkZWx5IHVzZWQgaW4g Z2VvZGVzeSBtYXRoKS4KClRoZXJlJ3MgaW50cm9kdWNlZCAqKmNvbmNlcHQgb2YgZ2xvYmUqKiB1 c2VkIGludGVybmFsbHkgZm9yIGNhbGN1bGF0aW9ucy4gT25seSBnZW5lcmljIChzcGhlcmUpIGFu ZCBFYXJ0aCBnbG9iZXMgYXJlIGltcGxlbWVudGVkLCBidXQgZm9yIDIwMTYgd2UgZmVlbCBsaWtl IGN1cnJlbnQgZGVzaWduIG9mIGJhc2ljIHR5cGVzIHNob3VsZCB0YWtlIGluIGNvbnNpZGVyYXRp b24KcG9zc2liaWxpdHkgb2Ygd3JpdGluZyBSdWJ5IHNjcmlwdHMgZm9yIE1hcnMgbWFwcyBhbmFs eXNpcy4gT25seSBvbmUgZ2VvZGVzeSBmb3JtdWxhIGlzIGltcGxlbWVudGVkIChWaW5jZW50eSwg Z2VuZXJhbGx5IGNvbnNpZGVyZWQgb25lIG9mIHRoZSBtb3N0IHByZWNpc2UpLCBhcyBmb3Igc3Rh bmRhcmQgbGlicmFyeSBjbGFzcyBpdCBjb25zaWRlcmVkIHVubmVjZXNzYXJ5IHRvIHByb3ZpZGUg dXNlciB3aXRoIGdlb2Rlc3kgZm9ybXVsYWUgb3B0aW9ucy4KCk5vICoqbWFwIHByb2plY3Rpb24q KiBtYXRoIHdhcyBhZGRlZCBpbnRvIGN1cnJlbnQgcHJvcG9zYWwsIGJ1dCBpdCBtYXkgYmUgYSBn b29kIGRpcmVjdGlvbiBmb3IgZnVydGhlciB3b3JrLiBObyAqKmVsZXZhdGlvbioqIGRhdGEgY29u c2lkZXJlZCBlaXRoZXIuCgojIyBQcm9wb3NhbCBkZXRhaWxzCgojIyMgYEdlbzo6Q29vcmRgIGNs YXNzCgpSZXByZXNlbnRzIGBbbGF0aXR1ZGUsIGxvbmdpdHVkZV1gIHBhaXIuIExhdGl0dWRlIGlz IC05MCB0byArOTAgKGRlZ3JlZXMpLiBMb25naXR1ZGUgaXMgLTE4MCB0byArMTgwLgoKQ2xhc3Mg bWV0aG9kczoKKiBgbmV3KGxhdCwgbG5nKWAgY3JlYXRlcyBpbnN0YW5jZSBmcm9tIHR3byBOdW1l cmljcyAoaW4gZGVncmVlcyk7CiogYG5ldyhsYXQ6LCBsbmc6KWAga2V5d29yZCBhcmd1bWVudHMg Zm9ybSBvZiBhYm92ZTsKKiBgbmV3KGxhdGQ6LCBsYXRtOiwgbGF0czosIGxhdGg6LCBsbmdkOiBs bmdtOiwgbG5nczogbG5naDopYCBjcmVhdGVzIGluc3RhbmNlIGZyb20gY29vcmRpbmF0ZXMgaW4g KGRlZywgbWluLCBzZWMsIGhlbWlzcGhlcmUpIGZvcm07IGhlbWlzcGhlcmVzIGFyZSAiTiIvIlMi IGZvciBsYXRpdHVkZSBhbmQgIlciL0UiIGZvciBsb25naXR1ZGU7IGFueSBjb21wb25lbnQgZXhj ZXB0IGZvciBkZWdyZWVzIGNhbiBiZSBvbWl0dGVkOyBpZiBoZW1pc3BoZXJlIGlzIG9taXR0ZWQs IGl0IGlzIGRlY2lkZWQgYnkgZGVncmVlcyBzaWduIChsYXQ6IHBvc2l0aXZlIGlzICJOIiwgbG5n OiBwb3NpdGl2ZSBpcyAiRSIpOwoqIGBmcm9tX2goaGFzaClgIGNyZWF0ZXMgaW5zdGFuY2UgZnJv bSBoYXNoIHdpdGggYCJsYXQiYCBvciBgImxhdGl0dWRlImAga2V5IGFuZCBgImxvbiJgIG9yIGAi bG5nImAgb3IgYCJsb25naXR1ZGUiYCBrZXkgKGNhc2UtaW5kZXBlbmRlbnQpOwoqIGBmcm9tX3Jh ZGlhbnMocGhpLCBsYSlgIGNyZWF0ZXMgaW5zdGFuY2UgZnJvbSByYWRpYW4gdmFsdWVzOwoqIGBz dHJwY29vcmRgIHBhcnNlcyBzdHJpbmcgaW50byBjb29yZGluYXRlcyBieSBwcm92aWRlZCBwYXR0 ZXJuIChzZWUgYmVsb3cgZm9yIHBhdHRlcm4gZGVzY3JpcHRpb24pOwoqIGBwYXJzZV9sbGAgcGFy c2VzIGNvb3JkaW5hdGVzIHN0cmluZyBpbiBgImZsb2F0LCBmbG9hdCJgIGZvcm07CiogYHBhcnNl X2Rtc2AgcGFyc2VzIGNvb3JkaW5hdGVzIHN0cmluZyBpbiBgZCBtIHMgaCwgZCBtIHMgaGAgZm9y bWF0IChjb25zaWRlcmluZyBzZXZlcmFsIHdpZGVseSB1c2VkIHN5bWJvbHMgZm9yIGRlZ3JlZXMs IG1pbnV0ZXMgYW5kIHNlY29uZHMpOwoqIGBwYXJzZWAgdHJpZXMgdG8gcGFyc2Ugc3RyaW5nIGlu dG8gY29vcmRpbmF0ZXMgZnJvbSB2YXJpb3VzIGZvcm1hdHMuCgpJbnN0YW5jZSBtZXRob2RzOgoq IGBsYXRgIGFuZCBgbG5nYCwgcmV0dXJuaW5nIGBGbG9hdGBzLCBzaWduZWQ7CiogYGxhdGl0dWRl YCBhbmQgYGxvbmdpdHVkZWAgYXMgYW4gYWxpYXNlczsgYGxvbmAgYXMgYW4gYWRkaXRpb25hbCBh bGlhc2VzIGZvciBsb25naXR1ZGU7CiogYGxhdGRgLCBgbGF0bWAsIGBsYXRzYCwgYGxhdGhgOiBk ZWdyZWUsIG1pbnV0ZSwgc2Vjb25kLCBoZW1pc3BoZXJlOyBgbGF0ZGAgYW5kIGBsYXRtYCBhcmUg YEZpeG51bWAsIGBsYXRzYCBpcyBgRmxvYXRgLCBgbGF0aGAgaXMgIk4iLyJTIjsgYWxsIG51bWJl cnMgYXJlIHVuc2lnbmVkOwoqIGBsbmdkYCwgYGxuZ21gLCBgbG5nc2AsIGBsbmdoYDogdGhlIHNh bWUgZm9yIGxvbmdpdHVkZSAoaGVtaXNwaGVyZSBpcyAiVyIvIkUiKTsKKiBgbGF0ZG1zKG5vaGVt aXNwaGVyZSA9IGZhbHNlKWAgcmV0dXJucyBgW2xhdGQsIGxhdG0sIGxhdHMsIGxhdGhdYCB3aXRo IGBub2hlbWlzcGhlcmVgIHBhcmFtIGVxdWFsIHRvIGBmYWxzZWAsIGFuZCBgW8KxbGF0ZCwgbGF0 bSwgbGF0c11gIHdpdGggYHRydWVgOyBzYW1lIHdpdGggYGxuZ2Rtc2AgZm9yIGxvbmdpdHVkZTsK KiBgcGhpYCBhbmQgYM+GYCBpcyBsYXRpdHVkZSBpbiByYWRpYW5zIChoZWxwZnVsIGZvciBtYXRo KSwgYGxhYCBvciBgzrtgIGlzIGxvbmdpdHVkZSBpbiByYWRpYW5zIChub3QgYGxhbWJkYWAgdG8g bm90IGNvbmZ1c2Ugd2l0aCBLZXJuZWwgbWV0aG9kKTsKKiBgdG9fc2AgcmV0dXJuaW5nIHN0cmlu ZyBsaWtlICI1MC4wMDQ0NDQsMzYuMjMxMzg5IiAoZ29vZCBmb3IgbWFwIFVSTHMgY29uc3RydWN0 aW9uLCBmb3IgZXhhbXBsZSk7CiogYHRvX2gobGF0OiA6bGF0LCBsbmc6IDpsbmcpYCBjb252ZXJ0 cyBjb29yZCB0byBoYXNoICh3aXRoIGRlc2lyZWQga2V5IG5hbWVzKTsKKiBgdG9fYWAgY29udmVy dHMgY29vcmQgdG8gc2ltcGxlIGBbbGF0LCBsbmddYCBwYWlyOwoqIGBzdHJmY29vcmQoZm9ybWF0 c3RyKWAgZm9yIGNvbXBsZXggY29vcmRpbmF0ZSBmb3JtYXR0aW5nIChzZWUgYmVsb3cgZm9yIGZv cm1hdCBzdHJpbmcgZGVzY3JpcHRpb24pOwoqIGBkaXN0YW5jZShvdGhlcilgIGNhbGN1bGF0ZXMg ZGlzdGFuY2UgdG8gYW5vdGhlciBwb2ludCAoaW4gbWV0cmVzKTsKKiBgYXppbXV0aChvdGhlcilg IGNhbGN1bGF0ZXMgZGlyZWN0aW9uIHRvIHRhcmdldCAoaW4gZGVncmVlcyk7CiogYGVuZHBvaW50 KGRpcmVjdGlvbiwgYXppbXV0aClgIGNhbGN1bGF0ZXMgZmluYWwgcG9pbnQgb2YgdGhlIGxpbmUg b2YgYGRpc3RhbmNlYCBtZXRyZXMgZ29pbmcgaW4gYGF6aW11dGhgIGRpcmVjdGlvbiBmcm9tIGN1 cnJlbnQgcG9pbnQuCgojIyMjIGBzdHJwY29vcmRgL2BzdHJmY29vcmRgCgpFeGFtcGxlOgoKfn5+ cnVieQpraGFya2l2LnN0cmZjb29yZCgnJWxhdGR1wrAlbGF0beKAsiVsYXRz4oCzICVsYXRoLCAl bG5nZHXCsCVsbmdt4oCyJWxuZ3PigLMgJWxuZ2gnKQojID0+ICI1MMKwMOKAsjE24oCzIE4sIDM2 wrAxM+KAsjUz4oCzIEUiCn5+fgoKRGlyZWN0aXZlczoKKiBgJWxhdGAgLSBmdWxsIGxhdGl0dWRl LCBmbG9hdDsgY2FuIGJlIGZvcm1hdHRlZCB3aXRoIG1vcmUgY29udHJvbCBsaWtlIGAlLjRsYXRg IChmb3VyIGRpZ2l0cyBhZnRlciBwb2ludCkgb3IgYCUrbGF0YCAoZXhwbGljaXQgcGx1cyBzaWdu IGZvciBwb3NpdGl2ZSBsYXRpdHVkZXMpOwoqIGAlbGF0ZGAgLSBsYXRpdHVkZSBkZWdyZWVzLCB1 bnNpZ25lZCwgaW50ZWdlcgoqIGAlbGF0ZHNgIC0gbGF0aXR1ZGUgZGVncmVlcywgc2lnbmVkCiog YCVsYXRtYCAtIGxhdGl0dWRlIG1pbnV0ZXMsIHVuc2lnbmVkLCBpbnRlZ2VyCiogYCVsYXRzYCAt IGxhdGl0dWRlIHNlY29uZHMsIHVuc2lnbmVkLCBpbnRlZ2VyLCBidXQgY2FuIGJlIGZvcm1hdHRl ZCBhcyBmbG9hdDogYCUuMmxhdHNgCiogYCVsYXRoYCAtIGxhdGl0dWRlIGhlbWlzcGhlcmUsIG9u ZSBsZXR0ZXIgKCJOIi8iUyIpCiogYCVsbmdgLCBgJWxuZ2RgLCBgJWxuZ2RzYCwgYCVsbmdzYCwg YCVsbmdoYCwgYCVsbmdIYCAtIHNhbWUgZm9yIGxvbmdpdHVkZQoqIGAlJWAgbGl0ZXJhbCBgJWAg c2lnbgoKIyMjIEN1cnJlbnQgaW1wbGVtZW50YXRpb24KClByb3Bvc2VkIGltcGxlbWVudGF0aW9u IGNhbiBiZSBmb3VuZCBhdCBodHRwczovL2dpdGh1Yi5jb20venZlcm9rL2dlb19jb29yZC4KCkl0 IHdhcyBjcmVhdGVkIHdpdGggdGhvdWdodHMgb2Ygc3RhbmRhcmQgbGlicmFyeSwgc28sIGFsbCBk b2NzIGFyZSBpbiBSRG9jIGZvcm1hdCwgYW5kIHRlc3RzL3NwZWNzIGFyZSBpbiBtc3BlYy1jb21w YXRpYmxlIHJzcGVjIGZsYXZvdXIuCgoKCgotLSAKaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcv CgpVbnN1YnNjcmliZTogPG1haWx0bzpydWJ5LWNvcmUtcmVxdWVzdEBydWJ5LWxhbmcub3JnP3N1 YmplY3Q9dW5zdWJzY3JpYmU+CjxodHRwOi8vbGlzdHMucnVieS1sYW5nLm9yZy9jZ2ktYmluL21h aWxtYW4vb3B0aW9ucy9ydWJ5LWNvcmU+Cg==