[#106341] [Ruby master Bug#18369] users.detect(:name, "Dorian") as shorthand for users.detect { |user| user.name == "Dorian" } — dorianmariefr <noreply@...>
SXNzdWUgIzE4MzY5IGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGRvcmlhbm1hcmllZnIgKERvcmlhbiBN
14 messages
2021/11/30
[#106351] [Ruby master Bug#18371] Release branches (release information in general) — "tenderlovemaking (Aaron Patterson)" <noreply@...>
SXNzdWUgIzE4MzcxIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IHRlbmRlcmxvdmVtYWtpbmcgKEFhcm9u
7 messages
2021/11/30
[ruby-core:105998] [Ruby master Feature#18020] Introduce `IO::Buffer` for fiber scheduler.
From:
"mame (Yusuke Endoh)" <noreply@...>
Date:
2021-11-10 08:06:27 UTC
List:
ruby-core #105998
SXNzdWUgIzE4MDIwIGhhcyBiZWVuIHVwZGF0ZWQgYnkgbWFtZSAoWXVzdWtlIEVuZG9oKS4KCgpU aGUgY2hhbmdlIGNhdXNlZCBTRUdWIG9uIFNvbGFyaXMuCgpodHRwOi8vcnVieWNpLnMzLmFtYXpv bmF3cy5jb20vc29sYXJpczEwLWdjYy9ydWJ5LW1hc3Rlci9sb2cvMjAyMTExMTBUMDcwMDAzWi5m YWlsLmh0bWwuZ3oKYGBgClRocmVhZCA4IChUaHJlYWQgODQgKExXUCA4NCkpOgojMCAgMHhmZWYy MDU0YyBpbiBfX3N5c3RlbWNhbGw2ICgpIGZyb20gL2xpYi9saWJjLnNvLjEKIzEgIDB4ZmVmMDVk MTggaW4gX19sd3Bfc2lnbWFzayAoKSBmcm9tIC9saWIvbGliYy5zby4xCiMyICAweGZlZjBmNmQ0 IGluIGNhbGxfdXNlcl9oYW5kbGVyICgpIGZyb20gL2xpYi9saWJjLnNvLjEKIzMgIDxzaWduYWwg aGFuZGxlciBjYWxsZWQ+CiM0ICAweGZlZjFlZjk0IGluIF93YWl0aWQgKCkgZnJvbSAvbGliL2xp YmMuc28uMQojNSAgMHhmZWViZmE0OCBpbiBfd2FpdHBpZCAoKSBmcm9tIC9saWIvbGliYy5zby4x CiM2ICAweGZlZjBlOTIwIGluIHdhaXRwaWQgKCkgZnJvbSAvbGliL2xpYmMuc28uMQojNyAgMHhm ZWYwMTYzYyBpbiBzeXN0ZW0gKCkgZnJvbSAvbGliL2xpYmMuc28uMQojOCAgMHgwMDI1Zjg1NCBp biByYl92bV9idWdyZXBvcnQgKGN0eD1jdHhAZW50cnk9MHg1ZjE4ODgwKSBhdCB2bV9kdW1wLmM6 MTAxNgojOSAgMHgwMDAyYmE5YyBpbiByYl9idWdfZm9yX2ZhdGFsX3NpZ25hbCAoZGVmYXVsdF9z aWdoYW5kbGVyPTB4MCwgc2lnPXNpZ0BlbnRyeT0xMSwgY3R4PWN0eEBlbnRyeT0weDVmMTg4ODAs IGZtdD0weDM0NzU5MCAiU2VnbWVudGF0aW9uIGZhdWx0IGF0ICVwIikgYXQgZXJyb3IuYzo4MjAK IzEwIDB4MDAxYWU1ZGMgaW4gc2lnc2VndiAoc2lnPTExLCBpbmZvPTB4NWYxOGIzOCwgY3R4PTB4 NWYxODg4MCkgYXQgc2lnbmFsLmM6OTY0CiMxMSA8c2lnbmFsIGhhbmRsZXIgY2FsbGVkPgojMTIg MHgwMDFmNTUzNCBpbiByYl9mZF9zZXQgKG49PG9wdGltaXplZCBvdXQ+LCBmZHM9ZmRzQGVudHJ5 PTB4Zjg3Y2Y2ZmMpIGF0IHRocmVhZC5jOjQwMTkKIzEzIDB4MDAwNzlhZTAgaW4gbm9ndmxfd2Fp dF9mb3IgKGV2ZW50cz0xLCBmcHRyPTB4NGMyZGU3OCwgdGg9PG9wdGltaXplZCBvdXQ+KSBhdCBp by5jOjExMjk0CiMxNCBpbnRlcm5hbF9yZWFkX2Z1bmMgKHB0cj1wdHJAZW50cnk9MHhmODdjZjg0 MCkgYXQgaW8uYzoxMDk2CiMxNSAweDAwMWZhNGEwIGluIHJiX3RocmVhZF9pb19ibG9ja2luZ19y ZWdpb24gKGZ1bmM9MHg3OTlkNCA8aW50ZXJuYWxfcmVhZF9mdW5jPiwgZGF0YTE9ZGF0YTFAZW50 cnk9MHhmODdjZjg0MCwgZmQ9MTIpIGF0IHRocmVhZC5jOjE4MjQKIzE2IDB4MDAwN2RjMDQgaW4g cmJfcmVhZF9pbnRlcm5hbCAoY291bnQ9ODE5MiwgYnVmPTB4NTY3MWNlMCwgZnB0cj0weDRjMmRl NzgpIGF0IGlvLmM6MTE2MAojMTcgaW9fZmlsbGJ1ZiAoZnB0cj0weDRjMmRlNzgpIGF0IGlvLmM6 MjM1MgojMTggMHgwMDA4MzMxOCBpbiByYl9pb19nZXRsaW5lX2Zhc3QgKGNob21wPTAsIGVuYz0w eDQ2MDY1OCwgZnB0cj0weDRjMmRlNzgpIGF0IGlvLmM6MzYxNgojMTkgcmJfaW9fZ2V0bGluZV8w IChycz1yc0BlbnRyeT00Mjc0NDE2NzYwLCBsaW1pdD1saW1pdEBlbnRyeT0tMSwgY2hvbXA9Y2hv bXBAZW50cnk9MCwgZnB0cj1mcHRyQGVudHJ5PTB4NGMyZGU3OCkgYXQgaW8uYzozNzMxCiMyMCAw eDAwMDgzNmZjIGluIHJiX2lvX2dldGxpbmVfMSAocnM9NDI3NDQxNjc2MCwgbGltaXQ9LTEsIGNo b21wPTAsIGlvPTQxMTMzMjM5MjApIGF0IGlvLmM6MzgyNwojMjEgMHgwMDA4Mzg0YyBpbiByYl9p b19nZXRsaW5lIChpbz00MTEzMzIzOTIwLCBhcmd2PTB4Zjg3Y2ZlNzAsIGFyZ2M9MCkgYXQgaW8u YzozODQ3CiMyMiByYl9pb19nZXRzX20gKGFyZ2M9YXJnY0BlbnRyeT0wLCBhcmd2PWFyZ3ZAZW50 cnk9MHhmODdjZmU3MCwgaW89aW9AZW50cnk9NDExMzMyMzkyMCkgYXQgaW8uYzozOTAyCiMyMyAw eDAwMjMxZDU4IGluIHJhY3Rvcl9zYWZlX2NhbGxfY2Z1bmNfbTEgKHJlY3Y9NDExMzMyMzkyMCwg YXJnYz0wLCBhcmd2PTB4Zjg3Y2ZlNzAsIGZ1bmM9MHg4MzdmOCA8cmJfaW9fZ2V0c19tPikgYXQg dm1faW5zbmhlbHBlci5jOjI4MzUKIzI0IDB4MDAyM2EwODAgaW4gdm1fY2FsbF9jZnVuY193aXRo X2ZyYW1lIChlYz0weDUzNTk2NzQsIHJlZ19jZnA9MHhmODg0ZmUxMCwgY2FsbGluZz08b3B0aW1p emVkIG91dD4pIGF0IHZtX2luc25oZWxwZXIuYzozMDI1CiMyNSAweDAwMjNlMTZjIGluIHZtX3Nl bmRpc2ggKGVjPTB4NTM1OTY3NCwgcmVnX2NmcD0weGY4ODRmZTEwLCBjZD0weDJiODAwMzAsIGJs b2NrX2hhbmRsZXI9PG9wdGltaXplZCBvdXQ+LCBtZXRob2RfZXhwbG9yZXI9bWV4cF9zZWFyY2hf bWV0aG9kKSBhdCB2bV9pbnNuaGVscGVyLmM6NDY1MQojMjYgMHgwMDI0ZTYzYyBpbiB2bV9leGVj X2NvcmUgKGVjPTB4NTM1OTY3NCwgaW5pdGlhbD00Mjk0OTY3MjkyKSBhdCBpbnNucy5kZWY6Nzc3 CiMyNyAweDAwMjQ1ZjQ0IGluIHJiX3ZtX2V4ZWMgKGVjPTxvcHRpbWl6ZWQgb3V0PiwgbWppdF9l bmFibGVfcD08b3B0aW1pemVkIG91dD4pIGF0IHZtLmM6MjE5NgojMjggMHgwMDI0ODZmYyBpbiBy Yl92bV9pbnZva2VfcHJvYyAoZWM9MHg1MzU5Njc0LCBwcm9jPXByb2NAZW50cnk9MHg2MjUxZDM4 LCBhcmdjPWFyZ2NAZW50cnk9MCwgYXJndj1hcmd2QGVudHJ5PTB4Zjg3Y2ZkZTAsIGt3X3NwbGF0 PTAsIHBhc3NlZF9ibG9ja19oYW5kbGVyPXBhc3NlZF9ibG9ja19oYW5kbGVyQGVudHJ5PTApIGF0 IHZtLmM6MTUxOQojMjkgMHgwMDFmNzRiMCBpbiB0aHJlYWRfZG9fc3RhcnRfcHJvYyAodGg9dGhA ZW50cnk9MHg0NWM4YzA4KSBhdCB0aHJlYWQuYzo3MzUKIzMwIDB4MDAxZjkzMGMgaW4gdGhyZWFk X2RvX3N0YXJ0ICh0aD0weDQ1YzhjMDgpIGF0IHRocmVhZC5jOjc1NAojMzEgdGhyZWFkX3N0YXJ0 X2Z1bmNfMiAodGg9dGhAZW50cnk9MHg0NWM4YzA4LCBzdGFja19zdGFydD0weGY4ODRmZjYwKSBh dCB0aHJlYWQuYzo4MjgKIzMyIDB4MDAxZjk0ZjQgaW4gdGhyZWFkX3N0YXJ0X2Z1bmNfMSAodGhf cHRyPTxvcHRpbWl6ZWQgb3V0PikgYXQgdGhyZWFkX3B0aHJlYWQuYzoxMDQ3CiMzMyAweGZlZjFh ZmEwIGluIF9sd3Bfc3RhcnQgKCkgZnJvbSAvbGliL2xpYmMuc28uMQpCYWNrdHJhY2Ugc3RvcHBl ZDogcHJldmlvdXMgZnJhbWUgaWRlbnRpY2FsIHRvIHRoaXMgZnJhbWUgKGNvcnJ1cHQgc3RhY2s/ KQpgYGAKClRoZSBjb21taXQgbm90IG9ubHkgaW50cm9kdWNlcyBJTzo6QnVmZmVyIGJ1dCBhbHNv IGluY2x1ZGVzIG1hbnkgY2hhbmdlcyBhZ2FpbnN0IElPIGludGVybmFsLiBJdCBoZWF2aWx5IHVz ZXMgYHJiX2lvX3QgKmAgaW5zdGVhZCBvZiBhIGZpbGUgZGVzY3JpcHRvciwgYnV0IGFjY2Vzc2lu ZyBgcmJfaW9fdCAqYCB3aXRob3V0IEdWTCByZXF1aXJlcyBzcGVjaWFsIGNhcmUsIGFuZCBJTyBp bnRlcm5hbCBoZWF2aWx5IHVzZXMgIm5vZ3ZsIiBjb2RlLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpGZWF0dXJlICMxODAyMDogSW50cm9kdWNlIGBJTzo6QnVmZmVy YCBmb3IgZmliZXIgc2NoZWR1bGVyLgpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMv MTgwMjAjY2hhbmdlLTk0NTQ0CgoqIEF1dGhvcjogaW9xdWF0aXggKFNhbXVlbCBXaWxsaWFtcykK KiBTdGF0dXM6IENsb3NlZAoqIFByaW9yaXR5OiBOb3JtYWwKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpBZnRlciBjb250aW51aW5nIHRvIGJ1aWxkIG91dCB0aGUgZmli ZXIgc2NoZWR1bGVyIGludGVyZmFjZSBhbmQgdGhlIHNwZWNpZmljIGhvb2tzIHJlcXVpcmVkIGZv ciBgaW9fdXJpbmdgLCBJIGZvdW5kIHNvbWUgdHJvdWJsZSB3aXRoaW4gdGhlIGltcGxlbWVudGF0 aW9uIG9mIGBJT2AuCgpJIGZvdW5kIHRoYXQgaW4gc29tZSBjYXNlcywgd2UgbmVlZCB0byByZWFk IGludG8gdGhlIGludGVybmFsIElPIGJ1ZmZlcnMgZGlyZWN0bHkuIEkgdHJpZWQgY3JlYXRpbmcg YSAiZmFrZSBzdHJpbmciIGluIG9yZGVyIHRvIHRyYW5zaXQgYmFjayBpbnRvIHRoZSBSdWJ5IGZp YmVyIHNjaGVkdWxlciBpbnRlcmZhY2UgYW5kIHRoaXMgZGlkIHdvcmsgdG8gYSBjZXJ0YWluIGV4 dGVudCwgYnV0IEkgd2FzIHRvbGQgd2UgY2Fubm90IGV4cG9zZSBmYWtlIHN0cmluZyB0byBSdWJ5 IHNjaGVkdWxlciBpbnRlcmZhY2UuCgpTbywgYWZ0ZXIgdGhpcywgYW5kIG1hbnkgb3RoZXIgZnJ1 c3RyYXRpb25zIHdpdGggdXNpbmcgYFN0cmluZ2AgYXMgYSBJTyBidWZmZXIsIEkgZGVjaWRlZCB0 byBpbXBsZW1lbnQgYSBsb3cgbGV2ZWwgYElPOjpCdWZmZXJgIGJhc2VkIG9uIG15IG5lZWRzIGZv ciBoaWdoIHBlcmZvcm1hbmNlIElPLCBhbmQgYXMgcGFydCBvZiB0aGUgZmliZXIgc2NoZWR1bGVy IGludGVyZmFjZS4KCkhlcmUgaXMgcm91Z2hseSB0aGUgaW50ZXJmYWNlIGltcGxlbWVudGVkIGJ5 IHRoZSBzY2hlZHVsZXIgdy5yLnQuIHRoZSBidWZmZXI6CgpgYGBydWJ5CmNsYXNzIFNjaGVkdWxl cgogICMgQHBhcmFtZXRlciBidWZmZXIgW0lPOjpCdWZmZXJdIEJ1ZmZlciBmb3IgcmVhZGluZyBp bnRvLgogIGRlZiBpb19yZWFkKGlvLCBidWZmZXIsIGxlbmd0aCkKICAgICMgaW1wbGVtZW50YXRp b24gcHJvdmlkZWQgYnkgYHJlYWRgIHN5c3RlbSBjYWxsLCBJT19VUklOR19SRUFEViwgZXRjLgog IGVuZAoKICAjIEBwYXJhbWV0ZXIgYnVmZmVyIFtJTzo6QnVmZmVyXSBCdWZmZXIgZm9yIHdyaXRp bmcgZnJvbS4KICBkZWYgaW9fd3JpdGUoaW8sIGJ1ZmZlciwgbGVuZ3RoKQogICAgIyBpbXBsZW1l bnRhdGlvbiBwcm92aWRlZCBieSBgd3JpdGVgIHN5c3RlbSBjYWxsLCBJT19VUklOR19XUklURVYs IGV0Yy4KICBlbmQKCiAgIyBQb3RlbnRpYWwgbmV3IGhvb2tzIChTb2NrZXQjcmVjdm1zZywgc2Vu ZG1zZywgZXRjKToKICBkZWYgaW9fcmVjdm1zZyhpbywgYnVmZmVyLCBsZW5ndGgpCiAgZW5kCmVu ZApgYGAKCkluIHJldmlld2luZyBvdGhlciBsYW5ndWFnZSBkZXNpZ25zLCBJIGZvdW5kIHRoYXQg dGhpcyBkZXNpZ24gaXMgdmVyeSBzaW1pbGFyIHRvIENyeXN0YWwncyBJTyBidWZmZXJpbmcgc3Ry YXRlZ3kuCgpUaGUgcHJvcG9zZWQgaW1wbGVtZW50YXRpb24gcHJvdmlkZXMgZW5vdWdoIG9mIGFu IGludGVyZmFjZSB0byBpbXBsZW1lbnQgYm90aCBuYXRpdmUgc2NoZWR1bGVycyBhcyB3ZWxsIGFz IHB1cmUgUnVieSBzY2hlZHVsZXJzLiBJdCBhbHNvIHByb3ZpZGVzIHNvbWUgZXh0cmEgZnVuY3Rp b25hbGl0eSBmb3IgaW50ZXJwcmV0aW5nIHRoZSBkYXRhIGluIHRoZSBidWZmZXIuIFRoaXMgaXMg bW9zdGx5IGZvciB0ZXN0aW5nIGFuZCBleHBlcmltZW50YXRpb24sIGFsdGhvdWdoIGl0IG1pZ2h0 IG1ha2Ugc2Vuc2UgdG8gZXhwb3NlIHRoaXMgaW50ZXJmYWNlIGZvciBiaW5hcnkgcHJvdG9jb2xz IGxpa2UgSFRUUC8yLCBRVUlDLCBXZWJTb2NrZXRzLCBldGMuCgojIyBQcm9wb3NlZCBTb2x1dGlv bgoKV2UgaW50cm9kdWNlIG5ldyBjbGFzcyBgSU86OkJ1ZmZlcmAuCgpgYGBydWJ5CmNsYXNzIElP OjpCdWZmZXIKICAjIEByZXR1cm5zIFtJTzo6QnVmZmVyXSBBIGJ1ZmZlciB3aXRoIHRoZSBjb250 ZW50cyBvZiB0aGUgc3RyaW5nIGRhdGEuCiAgZGVmIHNlbGYuZm9yKHN0cmluZykKICBlbmQKCiAg UEFHRV9TSVpFID0gIyAuLi4gb3BlcmF0aW5nIHN5c3RlbSBwYWdlIHNpemUKCiAgIyBAcmV0dXJu cyBbSU86OkJ1ZmZlcl0gQSBidWZmZXIgd2l0aCB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgbWFw cGVkIHRvIG1lbW9yeS4KICBkZWYgc2VsZi5tYXAoZmlsZSkKICBlbmQKCiAgIyBGbGFncyBmb3Ig YnVmZmVyIHN0YXRlLgogIEVYVEVSTkFMID0gIyBUaGUgYnVmZmVyIGlzIGZyb20gZXh0ZXJuYWwg bWVtb3J5LgogIElOVEVSTkFMID0gIyBUaGUgYnVmZmVyIGlzIGZyb20gaW50ZXJuYWwgbWVtb3J5 IChtYWxsb2MpLgogIE1BUFBFRCA9ICMgVGhlIGJ1ZmZlciBpcyBmcm9tIG1hcHBlZCBtZW1vcnkg KG1tYXAsIFZpcnR1YWxBbGxvYywgZXRjKQogIExPQ0tFRCA9ICMgVGhlIGJ1ZmZlciBpcyBsb2Nr ZWQgZm9yIHVzYWdlIChjYW5ub3QgYmUgcmVzaXplZCkKICBQUklWQVRFID0gIyBUaGUgYnVmZmVy IGlzIG1hcHBlZCBhcyBjb3B5LW9uLXdyaXRlLgogIElNTVVUQUJMRSA9ICMgVGhlIGJ1ZmZlciBj YW5ub3QgYmUgbW9kaWZpZWQuCgogICMgQHJldHVybnMgW0lPOjpCdWZmZXJdIEEgYnVmZmVyIHdp dGggdGhlIHNwZWNpZmllZCBzaXplLCBhbGxvY2F0ZWQgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBm bGFncy4KICBkZWYgaW5pdGlhbGl6ZShzaXplLCBmbGFncykKICBlbmQKCiAgIyBAcmV0dXJucyBb SW50ZWdyYWxdIFRoZSBzaXplIG9mIHRoZSBidWZmZXIKICBhdHRyIDpzaXplCgogICMgQHJldHVy bnMgW1N0cmluZ10gQSBicmllZiBzdW1tYXJ5IGFuZCBoZXggZHVtcCBvZiB0aGUgYnVmZmVyLgog IGRlZiBpbnNwZWN0CiAgZW5kCgogICMgQHJldHVybnMgW1N0cmluZ10gQSBicmllZiBzdW1tYXJ5 IG9mIHRoZSBidWZmZXIuCiAgZGVmIHRvX3MKICBlbmQKCiAgIyBGbGFnIHByZWRpY2F0ZXM6CiAg ZGVmIGV4dGVybmFsPwogIGVuZAoKICBkZWYgaW50ZXJuYWw/CiAgZW5kCgogIGRlZiBtYXBwZWQ/ CiAgZW5kCgogIGRlZiBsb2NrZWQ/CiAgZW5kCgogIGRlZiBpbW11dGFibGU/CiAgZW5kCgogICMg RmxhZ3MgZm9yIGVuZGlhbi9ieXRlIG9yZGVyOgogIExJVFRMRV9FTkRJQU4gPSAjIC4uLgogIEJJ R19FTkRJQU4gPSAjIC4uLgogIEhPU1RfRU5ESUFOID0gIyAuLi4KICBORVRXT1JLX0VORElBTj0g IyAuLi4KCiAgIyBMb2NrIHRoZSBidWZmZXIgKHByZXZlbnQgcmVzaXplLCB1bm1hcCwgY2hhbmdl cyB0byBiYXNlIGFuZCBzaXplKS4KICBkZWYgbG9jawogICAgcmFpc2UgIkFscmVhZHkgbG9ja2Vk ISIgaWYgZmxhZ3MgJiBMT0NLRUQKICAgIAogICAgZmxhZ3MgfD0gTE9DS0VECiAgZW5kCgogICMg VW5sb2NrIHRoZSBidWZmZXIuCiAgZGVmIHVubG9jawogICAgcmFpc2UgIk5vdCBsb2NrZWQhIiB1 bmxlc3MgZmxhZ3MgJiBMT0NLRUQKICAgIAogICAgZmxhZ3MgfD0gfkxPQ0tFRAogIGVuZAoKICAv LyBNYW5pcHVsYXRpb246CiAgIyBAcmV0dXJucyBbSU86OkJ1ZmZlcl0gQSBzbGljZSBvZiB0aGUg YnVmZmVyJ3MgZGF0YS4gRG9lcyBub3QgY29weS4KICBkZWYgc2xpY2Uob2Zmc2V0LCBsZW5ndGgp CiAgZW5kCgogICMgQHJldHVybnMgW1N0cmluZ10gQSBiaW5hcnkgc3RyaW5nIHN0YXJ0aW5nIGF0 IG9mZnNldCwgbGVuZ3RoIGJ5dGVzLgogIGRlZiB0b19zdHIob2Zmc2V0LCBsZW5ndGgpCiAgZW5k CgogICMgQ29weSB0aGUgc3BlY2lmaWVkIHN0cmluZyBpbnRvIHRoZSBidWZmZXIgYXQgdGhlIGdp dmVuIG9mZnNldC4KICBkZWYgY29weShzdHJpbmcsIG9mZnNldCkKICBlbmQKCiAgIyBDb21wYXJl IHR3byBidWZmZXJzLgogIGRlZiA8PT4ob3RoZXIpCiAgZW5kCgogIGluY2x1ZGUgQ29tcGFyYWJs ZQoKICAjIFJlc2l6ZSB0aGUgYnVmZmVyLCBwcmVzZXJ2aW5nIHRoZSBnaXZlbiBsZW5ndGggKGlm IG5vbi16ZXJvKS4KICBkZWYgcmVzaXplKHNpemUsIHByZXNlcnZlID0gMCkKICBlbmQKCiAgIyBD bGVhciB0aGUgYnVmZmVyIHRvIHRoZSBzcGVjaWZpZWQgdmFsdWUuCiAgZGVmIGNsZWFyKHZhbHVl ID0gMCwgb2Zmc2V0ID0gMCwgbGVuZ3RoID0gKEBzaXplIC0gb2Zmc2V0KSkKICBlbmQKCiAgIyBE YXRhIFR5cGVzOgogICMgTG93ZXIgY2FzZTogbGl0dGxlIGVuZGlhbi4KICAjIFVwcGVyIGNhc2U6 IGJpZyBlbmRpYW4gKG5ldHdvcmsgZW5kaWFuKS4KICAjCiAgIyA6VTggICAgICAgIHwgdW5zaWdu ZWQgOC1iaXQgaW50ZWdlci4KICAjIDpTOCAgICAgICAgfCBzaWduZWQgOC1iaXQgaW50ZWdlci4K ICAjCiAgIyA6dTE2LCA6VTE2IHwgdW5zaWduZWQgMTYtYml0IGludGVnZXIuCiAgIyA6czE2LCA6 UzE2IHwgc2lnbmVkIDE2LWJpdCBpbnRlZ2VyLgogICMKICAjIDp1MzIsIDpVMzIgfCB1bnNpZ25l ZCAzMi1iaXQgaW50ZWdlci4KICAjIDpzMzIsIDpTMzIgfCBzaWduZWQgMzItYml0IGludGVnZXIu CiAgIwogICMgOnU2NCwgOlU2NCB8IHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyLgogICMgOnM2NCwg OlM2NCB8IHNpZ25lZCA2NC1iaXQgaW50ZWdlci4KICAjCiAgIyA6ZjMyLCA6RjMyIHwgMzItYml0 IGZsb2F0aW5nIHBvaW50IG51bWJlci4KICAjIDpmNjQsIDpGNjQgfCA2NC1iaXQgZmxvYXRpbmcg cG9pbnQgbnVtYmVyLgoKICAjIEdldCB0aGUgZ2l2ZW4gZGF0YSB0eXBlIGF0IHRoZSBzcGVjaWZp ZWQgb2Zmc2V0LgogIGRlZiBnZXQodHlwZSwgb2Zmc2V0KQogIGVuZAoKICAjIFNldCB0aGUgZ2l2 ZW4gdmFsdWUgYXMgdGhlIHNwZWNpZmllZCBkYXRhIHR5cGUgYXQgdGhlIHNwZWNpZmllZCBvZmZz ZXQuCiAgZGVmIHNldCh0eXBlLCBvZmZzZXQsIHZhbHVlKQogIGVuZAplbmQKYGBgCgpUaGUgQyBp bnRlcmZhY2UgcHJvdmlkZXMgYSBmZXcgY29udmVuaWVudCBtZXRob2RzIGZvciBhY2Nlc3Npbmcg dGhlIHVuZGVybHlpbmcgZGF0YSBidWZmZXI6CgpgYGBjCnZvaWQgcmJfaW9fYnVmZmVyX2dldF9t dXRhYmxlKFZBTFVFIHNlbGYsIHZvaWQgKipiYXNlLCBzaXplX3QgKnNpemUpOwp2b2lkIHJiX2lv X2J1ZmZlcl9nZXRfaW1tdXRhYmxlKFZBTFVFIHNlbGYsIGNvbnN0IHZvaWQgKipiYXNlLCBzaXpl X3QgKnNpemUpOwpgYGAKCkluIHRoZSBmaWJlciBzY2hlZHVsZXIsIGl0IGlzIHVzZWQgbGlrZSB0 aGlzOgoKYGBgYwpWQUxVRQpyYl9maWJlcl9zY2hlZHVsZXJfaW9fcmVhZF9tZW1vcnkoVkFMVUUg c2NoZWR1bGVyLCBWQUxVRSBpbywgdm9pZCAqYmFzZSwgc2l6ZV90IHNpemUsIHNpemVfdCBsZW5n dGgpCnsKICAgIFZBTFVFIGJ1ZmZlciA9IHJiX2lvX2J1ZmZlcl9uZXcoYmFzZSwgc2l6ZSwgUkJf SU9fQlVGRkVSX0xPQ0tFRCk7CgogICAgVkFMVUUgcmVzdWx0ID0gcmJfZmliZXJfc2NoZWR1bGVy X2lvX3JlYWQoc2NoZWR1bGVyLCBpbywgYnVmZmVyLCBsZW5ndGgpOwoKICAgIHJiX2lvX2J1ZmZl cl9mcmVlKGJ1ZmZlcik7CgogICAgcmV0dXJuIHJlc3VsdDsKfQpgYGAKClRoaXMgZnVuY3Rpb24g aXMgaW52b2tlZCBmcm9tIGBpby5jYCBhdCB2YXJpb3VzIHBsYWNlcyB0byBmaWxsIHRoZSBidWZm ZXIuIFdlIHNwZWNpZmljYWxseSB0aGUgYChiYXNlLCBzaXplKWAgdHVwbGUsIGFsb25nIHdpdGgg YGxlbmd0aGAgd2hpY2ggaXMgdGhlICptaW5pbXVtKiBsZW5ndGggcmVxdWlyZWQgYW5kIGFzc2lz dHMgd2l0aCBlZmZpY2llbnQgbm9uLWJsb2NraW5nIGltcGxlbWVudGF0aW9uLgoKVGhlIGB1cmlu Zy5jYCBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgZXZlbnQgZ2VtIHVzZXMgdGhpcyBpbnRlcmZhY2Ug bGlrZSBzbzoKCmBgYGMKVkFMVUUgRXZlbnRfQmFja2VuZF9VUmluZ19pb19yZWFkKFZBTFVFIHNl bGYsIFZBTFVFIGZpYmVyLCBWQUxVRSBpbywgVkFMVUUgYnVmZmVyLCBWQUxVRSBfbGVuZ3RoKSB7 CglzdHJ1Y3QgRXZlbnRfQmFja2VuZF9VUmluZyAqZGF0YSA9IE5VTEw7CglUeXBlZERhdGFfR2V0 X1N0cnVjdChzZWxmLCBzdHJ1Y3QgRXZlbnRfQmFja2VuZF9VUmluZywgJkV2ZW50X0JhY2tlbmRf VVJpbmdfVHlwZSwgZGF0YSk7CgkKCWludCBkZXNjcmlwdG9yID0gUkJfTlVNMklOVChyYl9mdW5j YWxsKGlvLCBpZF9maWxlbm8sIDApKTsKCQoJdm9pZCAqYmFzZTsKCXNpemVfdCBzaXplOwoJcmJf aW9fYnVmZmVyX2dldF9tdXRhYmxlKGJ1ZmZlciwgJmJhc2UsICZzaXplKTsKCQoJc2l6ZV90IG9m ZnNldCA9IDA7CglzaXplX3QgbGVuZ3RoID0gTlVNMlNJWkVUKF9sZW5ndGgpOwoJCgl3aGlsZSAo bGVuZ3RoID4gMCkgewoJCXNpemVfdCBtYXhpbXVtX3NpemUgPSBzaXplIC0gb2Zmc2V0OwoJCWlu dCByZXN1bHQgPSBpb19yZWFkKGRhdGEsIGZpYmVyLCBkZXNjcmlwdG9yLCAoY2hhciopYmFzZStv ZmZzZXQsIG1heGltdW1fc2l6ZSk7CgkJCgkJaWYgKHJlc3VsdCA9PSAwKSB7CgkJCWJyZWFrOwoJ CX0gZWxzZSBpZiAocmVzdWx0ID4gMCkgewoJCQlvZmZzZXQgKz0gcmVzdWx0OwoJCQlpZiAoKHNp emVfdClyZXN1bHQgPiBsZW5ndGgpIGJyZWFrOwoJCQlsZW5ndGggLT0gcmVzdWx0OwoJCX0gZWxz ZSBpZiAoLXJlc3VsdCA9PSBFQUdBSU4gfHwgLXJlc3VsdCA9PSBFV09VTERCTE9DSykgewoJCQlF dmVudF9CYWNrZW5kX1VSaW5nX2lvX3dhaXQoc2VsZiwgZmliZXIsIGlvLCBSQl9JTlQyTlVNKFJF QURBQkxFKSk7CgkJfSBlbHNlIHsKCQkJcmJfc3lzZXJyX2ZhaWwoLXJlc3VsdCwgc3RyZXJyb3Io LXJlc3VsdCkpOwoJCX0KCX0KCQoJcmV0dXJuIFNJWkVUMk5VTShvZmZzZXQpOwp9CmBgYAoKIyMg QnVmZmVyIEFsbG9jYXRpb24KClRoZSBMaW51eCBrZXJuZWwgcHJvdmlkZXMgc29tZSBhZHZhbmNl ZCBtZWNoYW5pc21zIGZvciByZWdpc3RlcmluZyBidWZmZXJzIGZvciBhc3luY2hyb25vdXMgSS9P IHRvIHJlZHVjZSBwZXItb3BlcmF0aW9uIG92ZXJoZWFkLgoKPiBUaGUgaW9fdXJpbmdfcmVnaXN0 ZXIoKSBzeXN0ZW0gY2FsbCByZWdpc3RlcnMgdXNlciBidWZmZXJzIG9yIGZpbGVzIGZvciB1c2Ug aW4gYW4gaW9fdXJpbmcoNykgaW5zdGFuY2UgcmVmZXJlbmNlZCBieSBmZC4gUmVnaXN0ZXJpbmcg ZmlsZXMgb3IgdXNlciBidWZmZXJzIGFsbG93cyB0aGUga2VybmVsIHRvIHRha2UgbG9uZyB0ZXJt IHJlZmVyZW5jZXMgdG8gaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIG9yIGNyZWF0ZSBsb25nIHRl cm0gbWFwcGluZ3Mgb2YgYXBwbGljYXRpb24gbWVtb3J5LCBncmVhdGx5IHJlZHVjaW5nIHBlci1J L08gb3ZlcmhlYWQuCgpXaXRoIGFwcHJvcHJpYXRlIHN1cHBvcnQsIHdlIGNhbiB1c2UgYElPUklO R19PUF9QUk9WSURFX0JVRkZFUlNgIHRvIGVmZmljaWVudGx5IG1hbmFnZSBidWZmZXJzIGluIGFw cGxpY2F0aW9ucyB3aGljaCBhcmUgZGVhbGluZyB3aXRoIGxvdHMgb2Ygc29ja2V0cy4gU2VlIDxo dHRwczovL2xvcmUua2VybmVsLm9yZy9pby11cmluZy8yMDIwMDIyODIwMzA1My4yNTAyMy0xLWF4 Ym9lQGtlcm5lbC5kay9ULz4gZm9yIG1vcmUgZGV0YWlscyBhYm91dCBob3cgaXQgd29ya3MuIEkn bSBzdGlsbCBleHBsb3JpbmcgdGhlIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucyBvZiB0aGlzLCBi dXQgdGhlIHByb3Bvc2VkIGltcGxlbWVudGF0aW9uIHByb3ZpZGVzIHN1ZmZpY2llbnQgbWV0YS1k YXRhIGZvciB1cyB0byBleHBsb3JlIHRoaXMgaW4gcmVhbCB3b3JsZCBzY2hlZHVsZXJzLgoKUFI6 IGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvcHVsbC80NjIxCgoKCi0tIApodHRwczovL2J1 Z3MucnVieS1sYW5nLm9yZy8KClVuc3Vic2NyaWJlOiA8bWFpbHRvOnJ1YnktY29yZS1yZXF1ZXN0 QHJ1YnktbGFuZy5vcmc/c3ViamVjdD11bnN1YnNjcmliZT4KPGh0dHA6Ly9saXN0cy5ydWJ5LWxh bmcub3JnL2NnaS1iaW4vbWFpbG1hbi9vcHRpb25zL3J1YnktY29yZT4K