[#100689] [Ruby master Feature#17303] Make webrick to bundled gems or remove from stdlib — hsbt@...
Issue #17303 has been reported by hsbt (Hiroshi SHIBATA).
11 messages
2020/11/02
[#100852] [Ruby master Feature#17326] Add Kernel#must! to the standard library — zimmerman.jake@...
SXNzdWUgIzE3MzI2IGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGpleiAoSmFrZSBaaW1tZXJtYW4pLg0K
24 messages
2020/11/14
[#100930] [Ruby master Feature#17333] Enumerable#many? — masafumi.o1988@...
Issue #17333 has been reported by okuramasafumi (Masafumi OKURA).
10 messages
2020/11/18
[#101071] [Ruby master Feature#17342] Hash#fetch_set — hunter_spawn@...
Issue #17342 has been reported by MaxLap (Maxime Lapointe).
26 messages
2020/11/25
[ruby-core:100828] [Ruby master Feature#17100] Ractor: a proposal for a new concurrent abstraction without thread-safety issues
From:
ko1@...
Date:
2020-11-13 08:15:14 UTC
List:
ruby-core #100828
SXNzdWUgIzE3MTAwIGhhcyBiZWVuIHVwZGF0ZWQgYnkga28xIChLb2ljaGkgU2FzYWRhKS4NCg0K DQojIGBSYWN0b3Ijc2VuZGAgbmFtaW5nIGlzc3VlDQoNClJlY2VudCB3ZWVrcyBJJ20gdGhpbmtp bmcgYWJvdXQgdGhlIG5hbWUgb2YgYFJhY3RvciNzZW5kYC4NCk1hdHogYW5kIEkgZGlzY3Vzc2Vk IHBvc3NpYmlsaXRpZXMgbG9uZyB0aW1lICh0aGlzIGRpc2N1c3Npb25zIGFuZCBjb25zaWRlcmF0 aW9ucyBzdG9wIG15IGRldmVsb3BtZW50cyksIGFuZCB3ZSBhZ3JlZSB0byByZW1haW4gdGhlIG5h bWUgYFJhY3RvciNzZW5kYCBhcyBhbiAqZXhwZXJpbWVudGFsKiBmZWF0dXJlLg0KDQojIyBNYXR6 IGNvbmZpcm1lZCB0aGluZ3MgYWJvdXQgYEtlcm5lbCNzZW5kYA0KDQoqIGBCYXNpY1NvY2tldCNz ZW5kYCBhbmQgYFVEUFNvY2tldCNzZW5kYCB3aWxsIG5vdCBiZSBkZXByZWNhdGVkLiBVTklYIGlu dGVyZmFjZSBzaG91bGQgYmUgcmVzcGVjdGVkLiAoVGhpcyBpcyBNYXR6J3MgZGVjaXNpb24pDQoN CiogV2UgY2FuIHVzZSBgS2VybmVsI3NlbmRgICpvbmx5IGlmKiB3ZSBrbm93IHRoZSByZWNlaXZl ciBkb2Vzbid0IG92ZXJyaWRlIHRoZSBgS2VybmVsI3NlbmRgIG1ldGhvZC4NCiAgKiBUaGUgZG9j dW1lbnQgaGFkIGltcGxpZXMgdGhlIHBvc3NpYmlsaXR5IG9mIG92ZXJyaWRpbmcgb2YgInNlbmQi OiAiWW91IGNhbiB1c2UgYF9fc2VuZF9fYCBpZiB0aGUgbmFtZSBgc2VuZGAgY2xhc2hlcyB3aXRo IGFuIGV4aXN0aW5nIG1ldGhvZCBpbiBfb2JqXy4iIGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1 YnkvYmxvYi9ydWJ5XzJfNy92bV9ldmFsLmMjTDExNzENCiAgKiBDdXJyZW50IGRvY3VtZW50IHBv aW50cyBvdXQgY2xlYXJlcjogImBfX3NlbmRfX2AgaXMgc2FmZXIgdGhhbiBgc2VuZGAgd2hlbiBf b2JqXyBoYXMgdGhlIHNhbWUgbWV0aG9kIG5hbWUgbGlrZSBgU29ja2V0YC4iIGh0dHBzOi8vZ2l0 aHViLmNvbS9ydWJ5L3J1YnkvYmxvYi9tYXN0ZXIvdm1fZXZhbC5jI0wxMDkyDQogICogSmFwYW5l c2UgZG9jdW1lbnQgd3JpdGUgaXQgZXhwbGljaXRseTogIlRoZXJlIGlzIGFsc28gYW4gYWxpYXMg YF9fc2VuZF9fYCBpbiBjYXNlIGBfX3NlbmRfX2AgaXMgcmVkZWZpbmVkLCBhbmQgbGlicmFyaWVz IHNob3VsZCB1c2UgaXQuIiB0cmFuc2xhdGVkIGZyb20g44CMYHNlbmRgIOOBjOWGjeWumue+qeOB leOCjOOBn+WgtOWQiOOBq+WCmeOBiOOBpuWIpeWQjSBgX19zZW5kX19gIOOCgiDnlKjmhI/jgZXj gozjgabjgYrjgorjgIHjg6njgqTjg5bjg6njg6rjgafjga/jgZPjgaHjgonjgpLkvb/jgYbjgbnj gY3jgafjgZnjgI1odHRwczovL2RvY3MucnVieS1sYW5nLm9yZy9qYS8xLjguNy9tZXRob2QvT2Jq ZWN0L2kvc2VuZC5odG1sICgqMSkNCg0KKiBJZiB5b3UgZG9uJ3Qga25vdyB0aGUgcmVjZWl2ZXIn cyBjbGFzcywgeW91IG5lZWQgdG8gdXNlIGBfX3NlbmRfX2AgbWV0aG9kIGluc3RlYWQgb2YgYEtl cm5lbCNzZW5kYCB0byBkaXNwYXRjaCB0aGUgbWV0aG9kLg0KICAqIGBTb2NrZXRgIG9iamVjdHMg aGFzIGBzZW5kYCBtZXRob2QgYXMgZGVzY3JpYmVkIGFib3ZlLg0KICAqIEEgcmFpbHMgYXBwIGNy ZWF0ZWQgYnkgYHJhaWxzIG5ld2AgaGFzIDMgY2xhc3NlcyB3aGljaCBoYXMgYHNlbmRgIG90aGVy IHRoYW4gYEtlcm5lbCNzZW5kYC4NCiAgICAgKiBgVURQU29ja2V0I3NlbmQoKilgDQogICAgICog YEJhc2ljU29ja2V0I3NlbmQoKilgDQogICAgICogYENvbmN1cnJlbnQ6OkFnZW50I3NlbmQoKmFy Z3MsICZhY3Rpb24pYCAoaXQgaXMgc2ltaWxhciB0byBSYWN0b3IpDQoNCiogTWF0eiBhZ3JlZWQg dGhhdCBgX19zZW5kX19gIGlzIHVnbHkgKCoyKSwgc28gaGUgaXMgdGhpbmtpbmcgYWJvdXQgbmV3 IG1ldGhvZCBkaXNwYXRjaCBvcGVyYXRvciB3aGljaCBjYW4gcmVwbGFjZSB3aXRoIGBfX3NlbmRf X2AuDQoNCiogT3ZlcnJpZGluZyBgT2JqZWN0I3NlbmRgIHZpb2xhdGVzIExpc2tvdidzIHN1YnN0 aXR1dGlvbiBwcmluY2lwbGUuIEhvd2V2ZXIsIHNvbWV0aW1lcyBSdWJ5IHZpb2xhdGVzIHRoaXMg cHJpbmNpcGxlLg0KICAqIGBzZW5kYCBoYXMgYWxyZWFkeSBvdmVycmlkZGVuLg0KICAqIGBpbml0 aWFsaXplYCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIGBPYmplY3QjaW5pdGlhbGl6ZWAuDQogICog dGhlcmUgYXJlIHNvbWUgYGxvYWRgIG1ldGhvZHMuDQoNCmAoKjEpYCBUaGlzIGlzIGFuIG92ZXJz aW1wbGlmaWNhdGlvbiwgeW91IGNhbiB1c2UgYHNlbmRgIGlmIHlvdSBrbm93IHRoZSByZWNlaXZl cnMuDQpgKCoyKWAgTVkgT1BJTklPTiAobm90IGEgZmFjdCk6IEJUVyBJIGRvbid0IHRoaW5rIGBf X3NlbmRfX2AgaXMgdWdseSAoYmVjYXVzZSBJJ20gYSBDIHByb2dyYW1tZXI/KS4gSXQgaXMgY2xl YXIgdGhhdCBzb21ldGhpbmcgc3BlY2lhbCAobWV0YS1wcm9ncmFtbWluZykgYW5kIGl0IGluY3Jl YXNlcyB0aGUgcmVhZGFiaWxpdHkgZm9yIG1lLg0KDQojIyBDb25zaWRlcmF0aW9ucw0KDQpSdWJ5 IHByZWZlcnMgZHVjay10eXBpbmcgYW5kIGl0IGlzIGZyaWVuZGx5IHRoYXQgc2FtZSBtZXRob2Qg bmFtZSBzaG91bGQgYmVoYXZlIHNhbWUgZnVuY3Rpb25hbGl0eSAobWF5YmUgcGVvcGxlIHNheWlu ZyAiTGlza292J3Mgc3Vic3RpdHV0aW9uIHByaW5jaXBsZSIgd2FudCB0byBhcmd1ZSBhYm91dCBp dCkuIElmIGAjd3JpdGVgIG1ldGhvZCBvbmx5IHJlYWRzIHNvbWV0aGluZywgaXQgaXMgc3VycHJp c2luZy4gSSBiZWxpZXZlIHRoZSBwcm9ibGVtIG9mIHRoZSBuYW1lICJzZW5kIiBpcyB0aGlzIG9u ZSBpc3N1ZS4NCg0KSWYgYSByZWFkZXIgZmluZHMgdGhlIGNvZGUgYHIxLnNlbmQobWVzc2FnZSlg IGFuZCBpdCB0YWtlcyBzb21lIHNlY29uZHMgdG8gdW5kZXJzdGFuZCB0aGF0IGl0IGlzIGVpdGhl ciBgUmFjdG9yI3NlbmRgIG9yIGBLZXJuZWwjc2VuZGAsIGl0J3MgYSBwcm9ibGVtIHRvIGNvbnNp ZGVyLiBGb3IgZXhhbXBsZSwgSSBmb3VuZCB0aGF0IGByYWNvdHIuc2VuZChvYmopYCBpbiBgbWV0 aG9kX21pc3NpbmdgIGlzIGEgYml0IGNvbmZ1c2luZy4gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20v a28xL2NlZTk0NWU4YTlmYTVlZjRlMjNjZTk2ZDM5ODBlMTFjI2ZpbGUtYWN0aXZlb2JqZWN0LXJi LUwxOA0KDQpJIGJlbGlldmUgdGhlcmUgaXMgbm8gY29uZnVzaW9uIHdpdGggYFJhY3RvciNzZW5k YCBhbmQgYEtlcm5lbCNzZW5kYCBpbiBtb3N0IG9mIGNhc2VzIGlmIHRoZSByZWNlaXZlciBpcyBj bGVhci4gU28gSSBlc3RpbWF0ZWQgdGhlIGNvbmZ1c2lvbiBwcm9ibGVtIGlzIGxpbWl0ZWQgaW4g cHJhY3RpY2UuDQoNCldlIGRpc2N1c3NlZCBhbHRlcm5hdGl2ZSBuYW1lcyBidXQgd2UgY2FuIG5v dCBmaW5kIHRoZSBiZXN0IG5hbWUgdG8gcmVwbGFjZSB0aGUgInNlbmQiLg0KDQoqIGBzZW5kX21l c3NhZ2Uob2JqKWA6IE1hdHogZG9lc24ndCBsaWtlIGl0IGJlY2F1c2UgaW4gT09QIHRoZSBuYW1l ICJtZXNzYWdlIiBtZWFucyBtZXRob2Qgc2VsZWN0b3IgKG5hbWUpIHdpdGggcGFyYW1ldGVycy4N CiogYGRlbGl2ZXIob2JqKWA6IEFhcm9uIHBvaW50ZWQgb3V0IHRoYXQgd2hlbiBgZGVsaXZlcmAg bWV0aG9kIGZpbmlzaGVkLCB0aGUgcmVjZWl2ZWQgc2hvdWxkIGJlIGZpbmlzaGVkLg0KKiBgcG9z dChvYmopYDogSSBjYW4ndCBhY2NlcHQgdGhpcyBtZXRob2QgbmFtZSBiZWNhdXNlIGl0IGlzIHN0 cm9uZ2x5IGNvbm5lY3RlZCB3aXRoIG1haWxpbmcgc3lzdGVtLg0KKGFuZCBvdGhlciBuYW1lcykN Cg0KSW4gIkFjdG9yIiBjb250ZXh0LCAic2VuZCIgaXMgdGhlIG1vc3QgY2xlYXIgd29yZCB0byBy ZXByZXNlbnQgdGhlIGJlaGF2aW9yIGJlY2F1c2Ugb2YgaGlzdG9yaWNhbCByZWFzb25zLiBNYW55 IHBhcGVycyBhbmQgbGFuZ3VhZ2UgcmVmZXJlbmNlcyB1c2UgdGhpcyB3b3JkLg0KDQpJIHRob3Vn aHQgdGhhdCBuYW1pbmcgaXQgYXMgb3RoZXIgbmFtZSAobGlrZSBgcG9zdGApIGFuZCBhZnRlciBp bnRyb2R1Y2luZyBuZXcgbWV0aG9kIGRpc3BhdGNoIG9wZXJhdG9yLCByZW5hbWUgKG9yIGFkZCBh biBhbGlhcykgaXQgdG8gYHNlbmRgIGlzIG9uZSBpZGVhLiBIb3dldmVyLCBpdCBpcyBpbXBvc3Np YmxlIGJlY2F1c2UgcGVvcGxlIGNhbiB1c2UgYEtlcm5lbCNzZW5kYCBmb3IgcmFjdG9yIG9iamVj dHMgYmVmb3JlIHJlbmFtaW5nIGl0Lg0KDQpGaW5hbGx5LCB3ZSBjYW4gbm90IGZpbmQgZW5vdWdo IGFkdmFudGFnZSBvZiBzb2x2aW5nIGxpbWl0ZWQgbmFtaW5nIGNvbmZ1c2lvbiBwcm9ibGVtIGJ5 IG5vdCBiZWluZyBhYmxlIHRvIHVzZSBhcHByb3ByaWF0ZSBuYW1lLg0KDQpGb3J0dW5hdGVseSwg IlJhY3RvciIgYW5kIFJhY3RvciBBUElzIGFyZSBleHBlcmltZW50YWwgZmVhdHVyZXMgKHRoZXkg c2hvd3MgbWFuZGF0b3J5IGV4cGVyaW1lbnRhbCB3YXJuaW5nKSwgc28gd2UgY2FuIGNoYW5nZSB0 aGUgbmFtZSAic2VuZCIgaWYgaXQgaGFzIGNyaXRpY2FsIGlzc3Vlcy4gDQoNCigiQSBsaWJyYXJ5 IGRvZXNuJ3Qgd29yayB3ZWxsIGJlY2F1c2UgaXQgZG9lc24ndCB1c2UgYF9fc2VuZF9fYCIgaXMg bm90IGEgcHJvYmxlbSBiZWNhdXNlIGl0IGRvZXMgbm90IHN1cHBvcnQgYWxsIG9iamVjdHMgd2l0 aG91dCBgUmFjdG9yI3NlbmRgKQ0KDQpTbyBsZXQncyB0cnkgYFJhY3RvciNzZW5kYCBvbiBSdWJ5 IDMuMCBhcyAqZXhwZXJpbWVudGFsKiBuYW1lLg0KDQoNCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KRmVhdHVyZSAjMTcxMDA6IFJhY3RvcjogYSBwcm9wb3NhbCBm b3IgYSBuZXcgY29uY3VycmVudCBhYnN0cmFjdGlvbiB3aXRob3V0IHRocmVhZC1zYWZldHkgaXNz dWVzDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTcxMDAjY2hhbmdlLTg4NDY3 DQoNCiogQXV0aG9yOiBrbzEgKEtvaWNoaSBTYXNhZGEpDQoqIFN0YXR1czogQ2xvc2VkDQoqIFBy aW9yaXR5OiBOb3JtYWwNCiogQXNzaWduZWU6IGtvMSAoS29pY2hpIFNhc2FkYSkNCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgUmFjdG9yOiBhIHByb3Bvc2FsIGZv ciBhIG5ldyBjb25jdXJyZW50IGFic3RyYWN0aW9uIHdpdGhvdXQgdGhyZWFkLXNhZmV0eSBpc3N1 ZXMNCg0KIyMgQWJzdHJhY3QNCg0KVGhpcyB0aWNrZXQgcHJvcG9zZXMgYSBuZXcgY29uY3VycmVu dCBhYnN0cmFjdGlvbiBuYW1lZCAiUmFjdG9yLCIgUnVieSdzIEFjdG9yLWxpa2UgZmVhdHVyZSAo bm90IGFuIGV4YWN0IEFjdG9yLW1vZGVsKS4NCg0KUmFjdG9yIGFjaGlldmVzIHRoZSBmb2xsb3dp bmcgZ29hbHM6DQoNCiogUGFyYWxsZWwgZXhlY3V0aW9uIGluIGEgUnVieSBpbnRlcnByZXRlciBw cm9jZXNzDQoqIEF2b2lkYW5jZSBvZiB0aHJlYWQtc2FmZXR5IGlzc3VlcyAoZXNwZWNpYWxseSBy YWNlIGlzc3VlcykgYnkgbGltaXRpbmcgb2JqZWN0IHNoYXJpbmcNCiogQ29tbXVuaWNhdGlvbiB2 aWEgY29weWluZyBhbmQgbW92aW5nDQoNCkkgaGF2ZSBiZWVuIHdvcmtpbmcgb24gdGhpcyBwcm9w b3NhbCBmb3IgYSBmZXcgeWVhcnMuIFRoZSBwcm9qZWN0IG5hbWUgaGFzIGJlZW4gIkd1aWxkLCIg YnV0IEkgcmVuYW1lZCBpdCB0byBSYWN0b3IgZm9sbG93aW5nIE1hdHonIHByZWZlcmVuY2UuDQoN ClJlc291cmNlczoNCiogUHJvcG9zZWQgc3BlY2lmaWNhdGlvbjogaHR0cHM6Ly9naXRodWIuY29t L2tvMS9ydWJ5L2Jsb2IvcmFjdG9yX3BhcmFsbGVsL2RvYy9yYWN0b3IubWQNCiogTXkgdGFsazoN CiAgKiAobGF0ZXN0LCBidXQgd3JpdHRlbiBpbiBKYXBhbmVzZSkgaHR0cDovL2F0ZG90Lm5ldC9+ a28xL2FjdGl2aXRpZXMvMjAyMF9ydWJ5M3N1bW1pdC5wZGYNCiAgKiAob2xkLCBBUEkgaXMgY2hh bmdlZCkgaHR0cDovL2F0ZG90Lm5ldC9+a28xL2FjdGl2aXRpZXMvMjAxOF9ydWJ5a2FpZ2kyMDE4 LnBkZg0KICAqIChvbGQsIEFQSSBpcyBjaGFuZ2VkKSBodHRwOi8vYXRkb3QubmV0L35rbzEvYWN0 aXZpdGllcy8yMDE4X3J1Ynljb25mMjAxOC5wZGYNCg0KQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBp cyBub3QgY29tcGxldGUgKGNvbnRhaW5zIG1hbnkgYnVncykgYnV0IGl0IHBhc3NlcyB0aGUgY3Vy cmVudCBDSS4gSSBwcm9wb3NlIHRvIG1lcmdlIGl0IHNvb24gYW5kIHRyeSB0aGUgQVBJLCBhbmQg dG8gY29udGludWUgd29ya2luZyBvbiB0aGUgaW1wbGVtZW50YXRpb24gb24gbWFzdGVyIGJyYW5j aC4NCg0KIyMgQmFja2dyb3VuZA0KDQpNUkkgZG9lc24ndCBwcm92aWRlIGFuIGluLXByb2Nlc3Mg cGFyYWxsZWwgY29tcHV0YXRpb24gZmVhdHVyZSBiZWNhdXNlIHBhcmFsbGVsICJUaHJlYWRzIiBo YXZlIG1hbnkgaXNzdWVzOg0KDQoqIFJ1YnkgcHJvZ3JhbW1lcnMgbmVlZCB0byBjb25zaWRlciBh Ym91dCBUaHJlYWQtc2FmZXR5IG1vcmUuDQoqIEludGVycHJldGVyIGRldmVsb3BlcnMgbmVlZCB0 byBjb25zaWRlciBhYm91dCBUaHJlYWQtc2FmZXR5IG1vcmUuDQoqIEludGVycHJldGVyIHdpbGwg c2xvdyBkb3duIGluIHNpbmdsZSB0aHJlYWQgZXhlY3V0aW9uIGJlY2F1c2Ugb2YgZmluZS1ncmFp biBzeW5jaHJvbml6YXRpb24gd2l0aG91dCBjbGV2ZXIgb3B0aW1pemF0aW9ucy4NCg0KVGhlIHJl YXNvbiBmb3IgdGhlc2UgaXNzdWVzIGlzICJzaGFyZWQtZXZlcnl0aGluZyIgdGhyZWFkIG1vZGVs Lg0KDQojIyBQcm9wb3NhbA0KDQpUbyBvdmVyY29tZSB0aGUgaXNzdWVzIG9uIG11bHRpcGxlLXRo cmVhZHMsIFJhY3RvciBhYnN0cmFjdGlvbiBpcyBwcm9wb3NlZC4gVGhpcyBwcm9wb3NhbCBjb25z aXN0cyBvZiB0d28gbGF5ZXJzOiBtZW1vcnkgbW9kZWwgYW5kIGNvbW11bmljYXRpb24gbW9kZWwu DQoNCkJhc2ljczoNCiogSW50cm9kdWNlICJSYWN0b3IiIGFzIGEgbmV3IGNvbmN1cnJlbnQgZW50 aXR5Lg0KKiBSYWN0b3JzIHJ1biBpbiBwYXJhbGxlbC4NCg0KTWVtb3J5IG1vZGVsOg0KKiBTZXBh cmF0ZSAic2hhcmVhYmxlIiBvYmplY3RzIGFuZCAidW4tc2hhcmVhYmxlIiBvYmplY3RzIGFtb25n IHJhY3RvcnMgcnVubmluZyBpbiBwYXJhbGxlbC4NCiAgICogU2hhcmVhYmxlIG9iamVjdHM6DQog ICAgICogSW1tdXRhYmxlIG9iamVjdHMgKGZyb3plbiBvYmplY3RzIG9ubHkgcmVmZXIgdG8gc2hh cmVhYmxlIG9iamVjdHMpDQogICAgICogQ2xhc3MvbW9kdWxlIG9iamVjdHMNCiAgICAgKiBTcGVj aWFsIHNoYXJlYWJsZSBvYmplY3RzIChSYWN0b3Igb2JqZWN0cywgYW5kIHNvIG9uKQ0KICAgKiBV bi1zaGFyZWFibGUgb2JqZWN0czogDQogICAgICogT3RoZXIgb2JqZWN0cw0KKiBNb3N0IG9iamVj dHMgYXJlICJ1bi1zaGFyZWFibGUsIiB3aGljaCBtZWFucyB3ZSBSdWJ5IHByb2dyYW1tZXJzIGFu ZCBpbnRlcnByZXRlciBkZXZlbG9wZXJzIGRvbid0IG5lZWQgdG8gY2FyZSBhYm91dCB0aHJlYWQt c2FmZXR5IGluIG1vc3QgY2FzZXMuDQoqIFdlIG9ubHkgY29uY2VudHJhdGUgb24gc3luY2hyb25p emluZyAic2hhcmVhYmxlIiBvYmplY3RzLg0KKiBDb21wYXJlZCB3aXRoIGNvbXBsZXRlbHkgc2Vw YXJhdGVkIG1lbW9yeSBtb2RlbCAobGlrZSBNVk0gcHJvcG9zYWwpLCBwcm9ncmFtbWluZyB3aWxs IGJlIGVhc2llci4NCiogVGhpcyBtb2RlbCBpcyBzaW1pbGFyIHRvIFJhY2tldCdzIGBQbGFjZWAg YWJzdHJhY3Rpb24uDQoNCkNvbW11bmljYXRpb24gbW9kZWw6DQoqIEFjdG9yLWxpa2UgKG5vdCB0 aGUgc2FtZSkgbWVzc2FnZSBwYXNzaW5nIHVzaW5nIGBSYWN0b3Ijc2VuZChvYmopYCBhbmQgYFJh Y3Rvci5yZWN2YA0KKiBQdWxsLXR5cGUgY29tbXVuaWNhdGlvbiB1c2luZyBgUmFjdG9yLnlpZWxk KG9iailgIGFuZCBgUmFjdG9yI3Rha2VgDQoqIFN1cHBvcnQgZm9yIG11bHRpcGxlIHdhaXRpbmcg dXNpbmcgYFJhY3Rvci5zZWxlY3QoLi4uKWANCg0KQWN0b3ItbGlrZSBtb2RlbCBpcyB0aGUgb3Jp Z2luIG9mIHRoZSBuYW1lIG9mIG91ciBwcm9wb3NhbCAiUmFjdG9yIiAoUnVieSdzIGFjdG9yKS4g SG93ZXZlciwgY3VycmVudGx5LCBpdCBpcyBub3QgYW4gQWN0b3IgbW9kZWwgYmVjYXVzZSB3ZSBj YW4ndCBzZWxlY3QgdGhlIG1lc3NhZ2UgKHVzaW5nIHBhdHRlcm4gbWF0Y2ggYXMgaW4gRXJsYW5n LCBFbGl4aXIsIC4uLikuIFRoaXMgbWVhbnMgdGhhdCB3ZSBjYW4ndCBoYXZlIG11bHRpcGxlIGNv bW11bmljYXRpb24gY2hhbm5lbHMuIEluc3RlYWQgb2YgYWRvcHRpbmcgYW4gaW5jb21wbGV0ZSBh Y3RvciBtb2RlbCwgdGhpcyBwcm9wb3NhbCBwcm92aWRlcyBgeWllbGRgL2B0YWtlYCBwYWlyIHRv IGhhbmRsZSBtdWx0aXBsZSBjaGFubmVscy4gV2UgZGlzY3VzcyB0aGlzIHRvcGljIGxhdGVyLg0K DQpJIHN0cm9uZ2x5IGJlbGlldmUgdGhlIG1lbW9yeSBtb2RlbCBpcyBwcm9taXNpbmcuIEhvd2V2 ZXIsIEknbSBub3Qgc3VyZSBpZiB0aGUgY29tbXVuaWNhdGlvbiBtb2RlbCBpcyB0aGUgYmVzdC4g VGhpcyBpcyB3aHkgSSBpbnRyb2R1Y2VkICJleHBlcmltZW50YWwiIHdhcm5pbmcuDQoNClByb3Bv c2VkIHNwZWNpZmljYXRpb246IGh0dHBzOi8vZ2l0aHViLmNvbS9rbzEvcnVieS9ibG9iL3JhY3Rv cl9wYXJhbGxlbC9kb2MvcmFjdG9yLm1kDQoNCiMjIEltcGxlbWVudGF0aW9uDQoNCmh0dHBzOi8v Z2l0aHViLmNvbS9ydWJ5L3J1YnkvcHVsbC8zMzY1DQpBbGwgR0ggYWN0aW9ucyBwYXNzLg0KDQpJ IGRlc2NyaWJlIHRoZSBpbXBsZW1lbnRhdGlvbiBicmllZmx5Lg0KDQojIyMgYHJiX3JhY3Rvcl90 YA0KDQpXaXRob3V0IFJhY3RvciwgdGhlIFZNLVRocmVhZC1GaWJlciBoaWVyYXJjaHkgaXMgbGlr ZSB0aGlzOg0KDQoqIFRoZSBWTSBgcmJfdm1fdGAgbWFuYWdlcyBydW5uaW5nIHRocmVhZHMgKGBy Yl90aHJlYWRfdGApLg0KKiBBIHRocmVhZCAoYHJiX3RocmVhZF90YCkgcG9pbnRzIHRvIGEgcnVu bmluZyBmaWJlciAoYHJiX2ZpYmVyX3RgKS4NCg0KV2l0aCBSYWN0b3IsIHdlIGludHJvZHVjZSBh IG5ldyBsYXllciBgcmJfcmFjdG9yX3RgOg0KDQoqIFRoZSBWTSBgcmJfdm1fdGAgbWFuYWdlcyBy dW5uaW5nIHJhY3RvcnMgKGByYl9yYWN0b3JfdGApLg0KKiBBIFJhY3RvciBtYW5hZ2VzIHJ1bm5p bmcgdGhyZWFkcyAoYHJiX3RocmVhZF90YCkuDQoqIEEgdGhyZWFkIChgcmJfdGhyZWFkX3RgKSBw b2ludHMgdG8gYSBydW5uaW5nIGZpYmVyIChgcmJfZmliZXJfdGApLg0KDQpgcmJfcmFjdG9yX3Rg IGhhcyBhIEdWTCB0byBtYW5hZ2UgdGhyZWFkcyAob25seSBvbmUgYW1vbmcgYSBSYWN0b3IncyB0 aHJlYWRzIGNhbiBydW4pLg0KDQpSYWN0b3IgaW1wbGVtZW50YXRpb24gaXMgbG9jYXRlZCBpbiBg cmFjdG9yLmhgLCBgcmFjdG9yLmNgIGFuZCBgcmFjdG9yLnJiYC4NCg0KIyMjIFZNLXdpZGUgbG9j aw0KDQpWTS13aWRlIGxvY2sgaXMgaW50cm9kdWNlZCB0byBwcm90ZWN0IFZNIGdsb2JhbCByZXNv dXJjZXMgc3VjaCBhcyBvYmplY3Qgc3BhY2UuIEl0IHNob3VsZCBhbGxvdyByZWN1cnNpdmUgbG9j aywgc28gdGhlIGltcGxlbWVudGF0aW9uIGlzIGEgbW9uaXRvci4gV2Ugc2hhbGwgY2FsbCBpdCBW TS13aWRlIG1vbml0b3IuIEZvciBub3csIGBSQl9WTV9MT0NLX0VOVEVSKClgIGFuZCBgUkJfVk1f TE9DS19MRUFWRSgpYCBhcmUgcHJvdmlkZWQgdG8gYWNxdWlyZS9yZWxlYXNlIHRoZSBsb2NrLg0K DQpOb3RlIHRoYXQgaXQgaXMgZGlmZmVyZW50IGZyb20gdGhlIChjdXJyZW50KSBHVkwuIEEgR1ZM IGlzIGFjcXVpcmVkIGFueXRpbWUgeW91IHJ1biBhIFJ1YnkgdGhyZWFkLiBWTS13aWRlIGxvY2sg aXMgYWNxdWlyZWQgb25seSB3aGVuIGFjY2Vzc2luZyBWTS13aWRlIHJlc291cmNlcy4NCg0KT24g c2luZ2xlIHJhY3RvciBtb2RlIChhbGwgUnVieSBzY3JpcHRzIGV4Y2VwdCBteSB0ZXN0cykgDQoN CiMjIyBPYmplY3QgbWFuYWdlbWVudCBhbmQgR0MNCg0KKiAoMSkgQWxsIHJhY3RvcnMgc2hhcmUg dGhlIG9iamVjdCBzcGFjZS4NCiogKDIpIEVhY2ggR0MgZXZlbnQgd2lsbCBzdG9wIGFsbCByYWN0 b3JzLCBhbmQgYSByYWN0b3IgR0Mgd29ya3MgdW5kZXIgYmFycmllciBzeW5jaHJvbml6YXRpb24u DQogICogQmFycmllciBhdCBgZ2NfZW50ZXIoKWANCiAgKiBtYXJraW5nLCAobGF6eSkgc3dlZXBp bmcsIC4uLg0KKiAoMykgQmVjYXVzZSBhbGwgb2YgdGhlIG9iamVjdCBzcGFjZSBhcmUgc2hhcmVk IGJ5IHJhY3RvcnMsIG9iamVjdCBjcmVhdGlvbiBpcyBwcm90ZWN0ZWQgYnkgVk0td2lkZSBsb2Nr Lg0KDQooMikgYW5kICgzKSBoYXZlIGh1Z2UgaW1wYWN0IG9uIHBlcmZvcm1hbmNlLiBUaGUgcGxh biBpczoNCg0KKiBGb3IgKDIpLCBpbnRyb2R1Y2UgKHNlbWktKXNlcGFyYXRlZCBvYmplY3Qgc3Bh Y2UuIEl0IHdvdWxkIHJlcXVpcmUgYSBsb25nIHRpbWUgYW5kIFJ1YnkgMy4wIGNhbid0IGVtcGxv eSB0aGlzIHRlY2huaXF1ZS4NCiogRm9yICgzKSwgaW50cm9kdWNlIGZyZWUgc2xvdCBjYWNoZSBm b3IgZXZlcnkgcmFjdG9yOyB0aGVuIG1vc3QgY3JlYXRpb25zIGNhbiBiZSBkb25lIHdpdGhvdXQg c3luY2hyb25pemF0aW9uLiBJdCB3aWxsIGJlIGVtcGxveWVkIHNvb24uDQoNCiMjIyBFeHBlcmlt ZW50YWwgd2FybmluZw0KDQpDdXJyZW50bHksIFJhY3RvciBpbXBsZW1lbnRhdGlvbiBhbmQgc3Bl Y2lmaWNhdGlvbiBhcmUgbm90IHN0YWJsZS4gU28gdXBvbiBpdHMgZmlyc3QgdXNhZ2UsIGBSYWN0 b3IubmV3YCB3aWxsIHNob3cgYSB3YXJuaW5nOg0KDQpgd2FybmluZzogUmFjdG9yIGlzIGV4cGVy aW1lbnRhbCwgYW5kIHRoZSBiZWhhdmlvciBtYXkgY2hhbmdlIGluIGZ1dHVyZSB2ZXJzaW9ucyBv ZiBSdWJ5ISBBbHNvIHRoZXJlIGFyZSBtYW55IGltcGxlbWVudGF0aW9uIGlzc3Vlcy5gDQoNCiMj IERpc2N1c3Npb24NCg0KIyMjIEFjdG9yLWJhc2VkIGFuZCBjaGFubmVsLWJhc2VkDQoNCkkgdGhp bmsgdGhlcmUgYXJlIHR3byBtZXNzYWdlIHBhc3NpbmcgYXBwcm9hY2hlczogQWN0b3ItYmFzZWQg KGFzIGluIEVybGFuZywgLi4uKSBhbmQgY2hhbm5lbC1iYXNlZCAoYXMgaW4gR28sIC4uLikuDQoN CldpdGggY2hhbm5lbC1iYXNlZCBhcHByb2FjaCwgaXQgaXMgZWFzeSB0byBtYW5pcHVsYXRlIG11 bHRpcGxlIGNoYW5uZWxzIGJlY2F1c2UgaXQgbWFuYWdlcyB0aGVtIGV4cGxpY2l0bHkuIEFjdG9y LWJhc2VkIGFwcHJvYWNoIG1hbmlwdWxhdGVzIG11bHRpcGxlIGNoYW5uZWxzIHdpdGggbWVzc2Fn ZSBwYXR0ZXJuLiBUaGUgcmVjZWl2ZXIgY2FuIGlnbm9yZSB1bmV4cGVjdGVkIHN0cnVjdHVyZWQg bWVzc2FnZXMgb3IgcHV0IHRoZW0gb24gaG9sZCBhbmQgY2FuIGhhbmRsZSB0aGVtIGFmdGVyIHRo ZSBiZWhhdmlvciBoYXMgY2hhbmdlZCAocm9sZSBvZiBhY3RvciBoYXMgY2hhbmdlZCkuDQoNClJh Y3RvciBoYXMgYHNlbmQvcmVjdmAgbGlrZSBBY3Rvci1tb2RlbCwgYnV0IHRoZXJlIGlzIG5vIHBh dHRlcm4gbWF0Y2hpbmcgZmVhdHVyZS4gVGhpcyBpcyBiZWNhdXNlIHdlIGNhbid0IGludHJvZHVj ZSBuZXcgc3ludGF4LCBhbmQgSSBjYW4ndCBkZXNpZ24gYSBnb29kIEFQSS4NCg0KV2l0aCBjaGFu bmVsLWJhc2VkIGFwcHJvYWNoLCBpdCBpcyBlYXN5IHRvIGRlc2lnbiB0aGUgQVBJIChmb3IgZXhh bXBsZSwgZG8gYGNoID0gUmFjdG9yOjpDaGFubmVsLm5ld2AgYW5kIHNoYXJlIHRoZSBgY2hgIHRo YXQgcmFjdG9ycyBjYW4gcHJvdmlkZSkuIEhvd2V2ZXIsIEkgY2FuJ3QgZGVzaWduIGEgZ29vZCBB UEkgdG8gaGFuZGxlIGV4Y2VwdGlvbnMgYW1vbmcgUmFjdG9ycy4NCg0KUmVnYXJkaW5nIGVycm9y IGhhbmRsaW5nLCB3ZSBwcm9wb3NlIGEgaHlicmlkIG1vZGVsIHVzaW5nIGBzZW5kL3JlY3ZgLCBg eWllbGQvdGFrZWAgcGFpcnMuIGBSYWN0b3IjdGFrZWAgY2FuIHJlY2VpdmUgdGhlIHNvdXJjZSBy YWN0b3IncyBleGNlcHRpb24gKGxpa2UgYFRocmVhZCNqb2luYCkuIE9uIEFjdG9yIGFwcHJvYWNo LCB3ZSBjYW4gZGV0ZWN0IHdoZW4gdGhlIGRlc3RpbmF0aW9uIFJhY3RvciBpcyBub3Qgd29ya2lu ZyAoa2lsbGVkKSB1cG9uIGBSYWN0b3Ijc2VuZChvYmopYC4gQSByZWNlaXZlciByYWN0b3IgKHdh aXRpbmcgZm9yIGBSYWN0b3IucmVjdmApIGNhbm5vdCBkZXRlY3QgdGhlIHNlbmRlcidzIHRyb3Vi bGUsIGJ1dCBtYXliZSB0aGUgcHJpb3JpdHkgaXMgbm90IGhpZ2guIGBSYWN0b3IjdGFrZWAgYWxz byBkZXRlY3RzIHRoZSBzZW5kZXIncyAoYFJhY3Rvci55aWVsZChvYmopYCkgZXJyb3IsIHNvIHRo ZSBlcnJvciBjYW4gYmUgcHJvcGFnYXRlZC4NCg0KVG8gaGFuZGxlIG11bHRpcGxlIGNvbW11bmlj YXRpb24gY2hhbm5lbHMgb24gUmFjdG9yLCBpbnN0ZWFkIG9mIHVzaW5nIG11bHRpcGxlIGNoYW5u ZWxzLCB3ZSB1c2UgKnBpcGUqIHJhY3RvcnMuDQoNCmBgYA0KIyB3b3JrZXItcG9vbCAocmVjZWl2 ZSBieSBzZW5kKQ0KDQptYWluICMgcGlwZS5zZW5kKG9iaikNCi0+IHBpcGUgIyBSYWN0b3IueWll bGQgUmFjdG9yLnJlY3YNCiAgLT4NCiAgICB3b3JrZXIxICMgUmFjdG9yLnlpZWxkKHNvbWVfdGFz ayBwaXBlLnRha2UpKQ0KICAgIHdvcmtlcjIgIyBSYWN0b3IueWllbGQoc29tZV90YXNrIHBpcGUu dGFrZSkpDQogICAgd29ya2VyMyAjIFJhY3Rvci55aWVsZChzb21lX3Rhc2sgcGlwZS50YWtlKSkN Ci0+IG1haW4gIyBSYWN0b3Iuc2VsZWN0KHdvcmtlcjEsIHdvcmtlcjIsIHdvcmtlcjMpDQoNCiMg aWYgd29ya2VyKiBjYXVzZXMgYW4gZXJyb3IsIG1haW4gY2FuIGRldGVjdCB0aGUgZXJyb3IuDQpg YGANCg0KKnBpcGUqIHJhY3RvcnMgbWF5IGxvb2sgbGlrZSBjaGFubmVscy4gSG93ZXZlciwgd2Ug ZG9uJ3QgbmVlZCB0byBpbnRyb2R1Y2UgbmV3IGNsYXNzZXMgd2l0aCB0aGlzIHRlY2huaXF1ZSAo dGhlIGltcGxlbWVudGF0aW9uIGNhbiBvbWl0IFJhY3RvciBjcmVhdGlvbiBmb3IgcGlwZSByYWN0 b3JzKS4NCg0KTWF5YmUgdGhlcmUgYXJlIG90aGVyIHBvc3NpYmlsaXRpZXMuIEZvciBleGFtcGxl LCBpZiB3ZSBjYW4gcHJvcGFnYXRlIHRoZSBlcnJvcnMgd2l0aCBjaGFubmVscywgd2UgY2FuIGFs c28gY29uc2lkZXIgYSBjaGFubmVsLW1vZGVsICh3ZSBuZWVkIHRvIGNoYW5nZSB0aGUgUmFjdG9y IG5hbWUgOnAgdGhlbikuDQoNCiMjIyBOYW1lIG9mIFJhY3RvciAoYW5kIEd1aWxkKQ0KDQpXaGVu IEkgcHJvcG9zZWQgR3VpbGQgaW4gMjAxNiwgSSByZWdhcmRlZCAibW92ZSIgbWVzc2FnZS1wYXNz aW5nIChzZWUgc3BlY2lmaWNhdGlvbikgdG8gYmUgY2hhcmFjdGVyaXN0aWMgb2YgaXQsIGFuZCBJ IGNhbGxlZCB0aGlzIGZlYXR1cmUgIm1vdmluZyBtZW1iZXJzaGlwLiIgVGhpcyBpcyB3aHkgdGhl IG5hbWUgIkd1aWxkIiB3YXMgY2hvc2VuLiBIb3dldmVyIE1hdHogcG9pbnRlZCBvdXQgdGhhdCB0 aGlzIG1vdmUgc2VtYW50aWNzIGlzIG5vdCB1c2VkIGZyZXF1ZW50bHksIGFuZCBoZSBhc2tlZCBt ZSB0byBjaGFuZ2UgdGhlIG5hbWUuIEFsc28sIHNvbWVvbmUgaGFkIGFscmVhZHkgYmVlbiB1c2lu ZyB0aGUgY2xhc3MgbmFtZSAiR3VpbGQuIg0KDQoiUmFjdG9yIiBpcyBzaG9ydCBhbmQgaXMgbm90 IGFuIGV4aXN0aW5nIGNsYXNzOyB0aGlzIGlzIHdoeSBJIGNob29zZSAiUmFjdG9yLiINCg0KSSB1 bmRlcnN0YW5kIHBlb3BsZSBtYXkgY29uZnVzZSBpdCB3aXRoICJSZWFjdG9yLiINCg0KIyMgVE9E Tw0KDQpUaGVyZSBhcmUgbWFueSByZW1haW5pbmcgdGFza3MuDQoNCiMjIyBQcm90ZWN0aW9uDQoN Ck1hbnkgVk0td2lkZSAocHJvY2Vzcy13aWRlKSByZXNvdXJjZXMgYXJlIG5vdCBwcm90ZWN0ZWQg Y29ycmVjdGx5LCBzbyB1c2luZyBSYWN0b3Igb24gYSBjb21wbGljYXRlZCBwcm9ncmFtIGNhbiBj YXVzZSBjcml0aWNhbCBidWdzIChgW0JVR11gKS4gTW9zdCBnbG9iYWwgcmVzb3VyY2UgYXJlIG1h bmFnZWQgYnkgZ2xvYmFsIHZhcmlhYmxlcywgc28gd2UgbmVlZCB0byBjaGVjayB0aGVtIGNvcnJl Y3RseS4NCg0KIyMjIEMtbWV0aG9kcw0KDQpDdXJyZW50bHksIEMtbWV0aG9kcyAobWV0aG9kcyB3 cml0dGVuIGluIEMgYW5kIGRlZmluZWQgd2l0aCBgcmJfZGVmaW5lX21ldGhvZCgpYCkgcnVuIGlu IHBhcmFsbGVsLiBJdCBtZWFucyB0aGF0IHRocmVhZC11bnNhZmUgY29kZSBjYW4gcnVuIGluIHBh cmFsbGVsLiBUbyBzb2x2ZSB0aGlzIGlzc3VlLCBJIHBsYW4gdGhlIGZvbGxvd2luZzoNCg0KKDEp IEludHJvZHVjZSB0aHJlYWQtdW5zYWZlIGxhYmVsIGZvciBtZXRob2RzDQoNCkl0IGlzIGltcG9z c2libGUgdG8gbWFrZSBhbGwgQy1tZXRob2RzIHRocmVhZC1zYWZlLCBlc3BlY2lhbGx5IGZvciBD LW1ldGhvZHMgaW4gdGhpcmQgcGFydHkgQy1leHRlbnNpb25zLiBUbyBwcm90ZWN0IHRoZW0sIGxh YmVsIHRoZXNlIChwb3NzaWJseSkgdGhyZWFkLXVuc2FmZSBDLW1ldGhvZHMgYXMgInRocmVhZC11 bnNhZmUuIg0KDQpXaGVuICJ1bnNhZmUiLWxhYmVsZWQgQyBtZXRob2RzIGFyZSBpbnZva2VkLCB0 aGV5IGFjcXVpcmUgYSBWTS13aWRlIGxvY2suIFRoaXMgVk0td2lkZSBsb2NrIHNob3VsZCBjaGVj ayBmb3IgcmVjdXJzaXZlbmVzcyAoc28gdGhpcyBsb2NrIHNob3VsZCBiZSBhIG1vbml0b3IpIGFu ZCBlc2NhcGluZyAoZXhjZXB0aW9ucykuIEN1cnJlbnRseSwgVk0td2lkZSBsb2NrIGRvZXNuJ3Qg Y2hlY2sgZm9yIGVzY2FwaW5nLCBidXQgdGhhdCBzaG91bGQgYmUgaW1wbGVtZW50ZWQgc29vbi4N Cg0KKDIpIEJ1aWx0LWluIEMtbWV0aG9kcw0KDQpJJ2xsIGZpeCBtb3N0IG9mIHRoZSBidWlsdGlu IEMtbWV0aG9kcyAoU3RyaW5nLCBBcnJheSwgLi4uKSBzbyB0aGF0IHRoZXkgd2lsbCBiZWNvbWUg dGhyZWFkLXNhZmUuIElmIGl0IGlzIG5vdCBlYXN5LCBJJ2xsIHVzZSB0aHJlYWQtdW5zYWZlIGxh YmVsLg0KDQojIyMgQ29weWluZyBhbmQgbW92aW5nDQoNCkN1cnJlbnRseSwgTWFyc2hhbCBwcm90 b2NvbCBtYWtlcyBkZWVwIGNvcHkgb24gbWVzc2FnZSBjb21tdW5pY2F0aW9uLiBIb3dldmVyLCBN YXJzaGFsIHByb3RvY29sIGRvZXNuJ3Qgc3VwcG9ydCBzb21lIG9iamVjdHMgbGlrZSBgUmFjdG9y YCBvYmplY3RzLCBzbyB3ZSBuZWVkIHRvIG1vZGlmeSB0aGVtLg0KDQpPbmx5IGEgZmV3IHR5cGVz IGFyZSBzdXBwb3J0ZWQgZm9yIG1vdmluZywgc28gd2UgbmVlZCB0byB3cml0ZSBtb3JlLg0KDQoj IyMgIkdWTCIgbmFtaW5nDQoNCkN1cnJlbnRseSwgdGhlIHNvdXJjZSBjb2RlIGNvbnRhaW5zIHRo ZSBuYW1lICJHVkwiIGZvciBSYWN0b3IgbG9jYWwgbG9ja3MuIE1heWJlIHRoZXkgc2hvdWxkIGJl IHJlbmFtZWQuDQoNCiMjIyBQZXJmb3JtYW5jZQ0KDQpUbyBpbnRyb2R1Y2UgZmluZS1ncmFpbmVk IGxvY2ssIHBlcmZvcm1hbmNlIHR1bmluZyBpcyBuZWVkZWQuDQoNCiMjIyBCdWcgZml4ZXMNCg0K bWFueSBtYW55IC4uLi4NCg0KIyMgQ29uY2x1c2lvbg0KDQpUaGlzIHRpY2tldCBwcm9wb3NlcyBh IG5ldyBjb25jdXJyZW50IGFic3RyYWN0aW9uICJSYWN0b3IuIiBJIHRoaW5rIFJ1YnkgMyBjYW4g c2hpcCB3aXRoIFJhY3RvciB1bmRlciAiZXhwZXJpbWVudGFsIiBzdGF0dXMuDQoNCg0KDQoNCi0t IA0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvDQoKVW5zdWJzY3JpYmU6IDxtYWlsdG86cnVi eS1jb3JlLXJlcXVlc3RAcnVieS1sYW5nLm9yZz9zdWJqZWN0PXVuc3Vic2NyaWJlPgo8aHR0cDov L2xpc3RzLnJ1YnktbGFuZy5vcmcvY2dpLWJpbi9tYWlsbWFuL29wdGlvbnMvcnVieS1jb3JlPgo=