[#121498] [Ruby Bug#21210] IO::Buffer gets invalidated on GC compaction — "hanazuki (Kasumi Hanazuki) via ruby-core" <ruby-core@...>

Issue #21210 has been reported by hanazuki (Kasumi Hanazuki).

10 messages 2025/04/01

[#121519] [Ruby Bug#21214] VmRSS consumption increase in Ruby 3.4.2 vs Ruby 3.3.6 — "mood_vuadensl (LOIC VUADENS) via ruby-core" <ruby-core@...>

Issue #21214 has been reported by mood_vuadensl (LOIC VUADENS).

9 messages 2025/04/02

[#121542] [Ruby Bug#21217] Integer.sqrt produces wrong results even on input <= 1e18 — "hjroh0315 (Matthew Roh) via ruby-core" <ruby-core@...>

Issue #21217 has been reported by hjroh0315 (Matthew Roh).

8 messages 2025/04/06

[#121551] [Ruby Feature#21219] `Object#inspect` accept a list of instance variables to display — "byroot (Jean Boussier) via ruby-core" <ruby-core@...>

Issue #21219 has been reported by byroot (Jean Boussier).

10 messages 2025/04/07

[#121556] [Ruby Bug#21220] Memory corruption in update_line_coverage() [write at index -1] — "mbcodeandsound (Mike Bourgeous) via ruby-core" <ruby-core@...>

Issue #21220 has been reported by mbcodeandsound (Mike Bourgeous).

16 messages 2025/04/07

[#121560] [Ruby Feature#21221] Proposal to upstream ZJIT — "maximecb (Maxime Chevalier-Boisvert) via ruby-core" <ruby-core@...>

SXNzdWUgIzIxMjIxIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IG1heGltZWNiIChNYXhpbWUgQ2hldmFs

8 messages 2025/04/07

[#121565] [Ruby Feature#21254] Inlining Class#new — "tenderlovemaking (Aaron Patterson) via ruby-core" <ruby-core@...>

SXNzdWUgIzIxMjU0IGhhcyBiZWVuIHJlcG9ydGVkIGJ5IHRlbmRlcmxvdmVtYWtpbmcgKEFhcm9u

12 messages 2025/04/07

[#121601] [Ruby Feature#21258] Retire CGI library from Ruby 3.5 — "hsbt (Hiroshi SHIBATA) via ruby-core" <ruby-core@...>

Issue #21258 has been reported by hsbt (Hiroshi SHIBATA).

11 messages 2025/04/09

[#121621] [Ruby Feature#21262] Proposal: `Ractor::Port` — "ko1 (Koichi Sasada) via ruby-core" <ruby-core@...>

SXNzdWUgIzIxMjYyIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGtvMSAoS29pY2hpIFNhc2FkYSkuDQoN

8 messages 2025/04/10

[#121627] [Ruby Feature#21264] Extract Date library from Ruby repo in the future — "hsbt (Hiroshi SHIBATA) via ruby-core" <ruby-core@...>

Issue #21264 has been reported by hsbt (Hiroshi SHIBATA).

8 messages 2025/04/11

[#121686] [Ruby Feature#21274] Show performance warnings for easily avoidable unnecessary implicit splat allocations — "jeremyevans0 (Jeremy Evans) via ruby-core" <ruby-core@...>

Issue #21274 has been reported by jeremyevans0 (Jeremy Evans).

6 messages 2025/04/18

[#121700] [Ruby Feature#21279] Bare "rescue" should not rescue NameError — "AMomchilov (Alexander Momchilov) via ruby-core" <ruby-core@...>

Issue #21279 has been reported by AMomchilov (Alexander Momchilov).

9 messages 2025/04/21

[#121702] [Ruby Bug#21280] StringIO#set_encoding warns when backed by chilled string literal — "jeremyevans0 (Jeremy Evans) via ruby-core" <ruby-core@...>

Issue #21280 has been reported by jeremyevans0 (Jeremy Evans).

13 messages 2025/04/22

[#121721] [Ruby Bug#21283] Some tests of TestMkmfConvertible is failing with VS2022 17.14.0 preview 4.0 — "hsbt (Hiroshi SHIBATA) via ruby-core" <ruby-core@...>

Issue #21283 has been reported by hsbt (Hiroshi SHIBATA).

8 messages 2025/04/24

[#121745] [Ruby Bug#21286] Windows - MSYS2 just updated to GCC 15.1.0, builds failing — "MSP-Greg (Greg L) via ruby-core" <ruby-core@...>

Issue #21286 has been reported by MSP-Greg (Greg L).

15 messages 2025/04/27

[#121755] [Ruby Misc#21290] Unable to build ruby extension on Fedora 42 due to possible GCC 15 issues — "lukef (Luke Freeman) via ruby-core" <ruby-core@...>

SXNzdWUgIzIxMjkwIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGx1a2VmIChMdWtlIEZyZWVtYW4pLg0K

8 messages 2025/04/28

[ruby-core:121636] [Ruby Feature#21262] Proposal: `Ractor::Port`

From: "tenderlovemaking (Aaron Patterson) via ruby-core" <ruby-core@...>
Date: 2025-04-11 18:52:24 UTC
List: ruby-core #121636
SXNzdWUgIzIxMjYyIGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGVuZGVybG92ZW1ha2luZyAoQWFyb24g
UGF0dGVyc29uKS4NCg0KDQprbzEgKEtvaWNoaSBTYXNhZGEpIHdyb3RlIGluICNub3RlLTU6DQo+
ID4gVGhlIHByb2JsZW0gd2l0aCB0aGUgYWJvdmUgY29kZSBpcyB0aGF0IHRoZSBjb25zdW1lciBS
YWN0b3Igd2lsbCBzdGFydmUgdW50aWwgZmluZF93b3JrIHJldHVybnMuDQo+IA0KPiBJIHRoaW5r
IGl0IGlzIHNhbWUgb24geW91ciB0aHJlYWQrcXVldWUgZXhhbXBsZS4gQW0gSSBtaXNzaW5nIHNv
bWV0aGluZz8NCg0KSXMgaXQ/ICBJbiBteSB0aHJlYWQrcXVldWUgZXhhbXBsZSwgdGhlcmUgaXMg
bm90aGluZyBibG9ja2luZyB0aGUgcHJvZHVjZXIgdGhyZWFkIGZyb20gYWRkaW5nIHdvcmsgdG8g
dGhlIHdvcmsgcXVldWU6DQoNCmBgYHJ1YnkNClRocmVhZC5uZXcgZG8NCiAgbG9vcCBkbw0KICAg
IHF1ZXVlIDw8IGZpbmRfd29yaw0KICBlbmQNCmVuZA0KYGBgDQoNCldpdGggdGhlIFJhY3RvciBl
eGFtcGxlLCB3ZSBkb24ndCBgZmluZF93b3JrYCB1bnRpbCBhIFJhY3RvciBpcyByZWFkeSB0byB0
YWtlIHdvcms6DQoNCmBgYA0KbG9vcCBkbw0KICAjIEJsb2NrZWQgaGVyZSB1bnRpbCBjb25zdW1l
ciBpcyByZWFkeSwgYnV0IHdlIGNvdWxkIGJlIGV4ZWN1dGluZyBgZmluZF93b3JrYCB3aGlsZSB3
YWl0aW5nIGZvciBjb25zdW1lciB0byBiZSByZWFkeQ0KICBjb250cm9sX3BvcnQucmVjZWl2ZSA9
PiBbOnJlYWR5LCBjb25zdW1lcl0NCiAgDQogICMgQ29uc3VtZXIgc3RhcnZlcyB1bnRpbCBgZmlu
ZF93b3JrYCBjb21wbGV0ZXMNCiAgY29uc3VtZXIgPDwgZmluZF93b3JrDQplbmQNCmBgYA0KDQo+
ID4gQWRkaXRpb25hbGx5LCB3ZSdyZSBub3QgYWJsZSB0byAiZmluZCB3b3JrIiBpbiBwYXJhbGxl
bCB3aXRoIHRoZSBjb25zdW1lciB0aHJlYWRzLg0KPiANCj4gV2h5IGRvbid0IHlvdSB1c2UgcmFj
dG9yIHRvIHJ1biAiZmluZCB3b3JrIiBpZiB5b3Ugd2FudCB0byBydW4gaW4gcGFyYWxsZWwgd2l0
aCB0aGUgbWFpbiBSYWN0b3I/DQoNCkhvdyB3b3VsZCB0aGUgUmFjdG9yIHJ1bm5pbmcgImZpbmQg
d29yayIgY29tbXVuaWNhdGUgdGhlIHdvcmsgdG8gdGhlIGNvbnN1bWVycz8NCiANCj4gTWF5YmUg
aXQgaXMgZWFzeSB0byBkaXNjdXNzIHdpdGggZ29vZCBleGFtcGxlcy4NCg0KU29ycnksIEkgdGhv
dWdodCBteSBleGFtcGxlIGlzIGNsZWFyLiAgSSdsbCB0cnkgdG8gbWFrZSBhIHJ1bm5pbmcgcHJv
Z3JhbSB0byBkZW1vbnN0cmF0ZS4NCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQ0KRmVhdHVyZSAjMjEyNjI6IFByb3Bvc2FsOiBgUmFjdG9yOjpQb3J0YA0KaHR0cHM6
Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzIxMjYyI2NoYW5nZS0xMTI2OTANCg0KKiBBdXRo
b3I6IGtvMSAoS29pY2hpIFNhc2FkYSkNCiogU3RhdHVzOiBBc3NpZ25lZA0KKiBBc3NpZ25lZTog
a28xIChLb2ljaGkgU2FzYWRhKQ0KKiBUYXJnZXQgdmVyc2lvbjogMy41DQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFByb3Bvc2FsOiBgUmFjdG9yOjpQb3J0YA0K
DQpJbiBjb25jdXJyZW50IFJ1YnkgYXBwbGljYXRpb25zIHVzaW5nIFJhY3RvcnMsIHNhZmVseSBh
bmQgZWZmaWNpZW50bHkgY29tbXVuaWNhdGluZyByZXN1bHRzIGJldHdlZW4gUmFjdG9ycyBpcyBh
IGNvbW1vbiBjaGFsbGVuZ2UuIFdlIHByb3Bvc2UgYFJhY3Rvcjo6UG9ydGAgYXMgYSBsaWdodHdl
aWdodCwgc2FmZSwgYW5kIGVyZ29ub21pYyBhYnN0cmFjdGlvbiB0byBzaW1wbGlmeSBjb21tdW5p
Y2F0aW9uIHBhdHRlcm5zLCBlc3BlY2lhbGx5IGluIHJlcXVlc3QtcmVzcG9uc2UgbW9kZWxzLg0K
DQpgYGBydWJ5DQojIHVzYWdlIGV4YW1wbGUNCg0KcG9ydCA9IFJhY3Rvcjo6UG9ydC5uZXcNCg0K
UmFjdG9yLm5ldyBwb3J0IGRvIHxwb3J0fA0KICBwb3J0IDw8IDQyDQogIHBvcnQgPDwgNDMNCmVu
ZA0KDQojIFN1Y2Nlc3M6IHdhaXQgZm9yIHNlbmRpbmcNCnBvcnQucmVjZWl2ZSAjPT4gNDINCg0K
UmFjdG9yLm5ldyBwb3J0IGRvIHxwb3J0fA0KICBwb3J0LnJlY2VpdmUgIyBFcnJvcjogb25seSB0
aGUgY3JlYXRvciBSYWN0b3IgY2FuIHJlY2VpdmUgZnJvbSB0aGlzIHBvcnQuDQplbmQNCg0KcG9y
dC5yZWNlaXZlICM9PiA0Mw0KYGBgDQoNClRoaXMgaXMgYSBzaW1pbGFyIGNvbmNlcHQgdG8gWyJD
aGFubmVsIl0oaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzIxMTIxKSwgYnV0IGl0
IGlzIHRpZ2h0bHkgY291cGxlZCB3aXRoIHRoZSBjcmVhdG9yIFJhY3RvciBhbmQgbm8gb3RoZXIg
UmFjdG9ycyBjYW4gcmVjZWl2ZSBhbnl0aGluZyBmcm9tIHRoYXQgcG9ydC4NCg0KSW4gdGhhdCBz
ZW5zZSwgaXQgaXMgY29uY2VwdHVhbGx5IGNsb3NlciB0byBhIHNvY2tldCBmaWxlIGRlc2NyaXB0
b3IgKGUuZy4sIGEgZGVzdGluYXRpb24gYW5kIHBvcnQgbnVtYmVyIHBhaXIgaW4gVENQL0lQKS4N
Cg0KV2UgY2FuIGltcGxlbWVudCBgUG9ydGAgd2l0aCBgUmFjdG9yLnJlY2VpdmVfaWZgIGxpa2Ug
dGhpczoNCg0KYGBgcnVieQ0KY2xhc3MgUmFjdG9yOjpQb3J0DQogIGRlZiBpbml0aWFsaXplDQog
ICAgQHIgPSBSYWN0b3IuY3VycmVudA0KICAgIEB0YWcgPSBnZW5pZCgpDQogIGVuZA0KDQogIGRl
ZiBzZW5kIG9iag0KICAgIEByIDw8IFtAdGFnLCBvYmpdDQogIGVuZA0KDQogIGRlZiByZWNlaXZl
DQogICAgcmFpc2UgdW5sZXNzIEByID09IFJhY3Rvci5jdXJyZW50DQoNCiAgICBSYWN0b3IucmVj
ZWl2ZV9pZiBkbyB8KHRhZywgcmVzdWx0KQ0KICAgICAgaWYgdGFnID09IEB0YWcNCiAgICAgICAg
cmV0dXJuIHJlc3VsdA0KICAgICAgZW5kDQogICAgZW5kDQogIGVuZA0KZW5kDQpgYGANCg0KV2l0
aCBgUmFjdG9yOjpQb3J0YCwgd2UgY2FuIGRlcHJlY2F0ZSBgUmFjdG9yLnJlY2VpdmVfaWZgLCBg
UmFjdG9yLnlpZWxkYCwgYW5kIGBSYWN0b3IjdGFrZWAuIFBvcnRzIGFjdCBhcyBjbGVhciwgc2Vs
Zi1jb250YWluZWQgZW5kcG9pbnRzIGZvciBtZXNzYWdlIHBhc3NpbmcsIHdoaWNoIG1ha2VzIHRo
ZXNlIG9sZGVyIHByaW1pdGl2ZXMgcmVkdW5kYW50LiBGdXJ0aGVybW9yZSwgUG9ydC1iYXNlZCBj
b21tdW5pY2F0aW9uIGlzIHNpZ25pZmljYW50bHkgZWFzaWVyIHRvIGltcGxlbWVudCBhbmQgcmVh
c29uIGFib3V04oCUZXNwZWNpYWxseSB3aGVuIGNvbnNpZGVyaW5nIHN5bmNocm9uaXphdGlvbiBj
aGFsbGVuZ2VzIGFyb3VuZCBgUmFjdG9yLnNlbGVjdGAgYW5kIHJlbmRlenZvdXMgc2VtYW50aWNz
Lg0KDQojIyBCYWNrZ3JvdW5kOiBMaW1pdGF0aW9ucyBvZiBjdXJyZW50IGNvbW11bmljYXRpb24g
cGF0dGVybnMNCg0KTGV0J3MgZGlzY3VzcyBob3cgdG8gbWFrZSBzZXJ2ZXItbGlrZSBzZXJ2aWNl
IHJhY3RvcnMuDQoNCiMjIyBObyByZXNwb25zZSBzZXJ2ZXINCg0KV2UgY2FuIG1ha2Ugc2VydmVy
LWxpa2UgUmFjdG9ycyBsaWtlIHRoaXM6DQoNCmBgYHJ1YnkNCiMgRVgxDQoNCmRlZiBmaWIobikg
PSBuID4gMSA6IGZpYihuLTIpICsgZmliKG4tMSkgOiAxDQoNCiMgQSByYWN0b3IgY2FsY3VsYXRl
IGZpYihuKQ0KZmliX3NydiA9IFJhY3Rvci5uZXcgZG8NCiAgd2hpbGUgdHJ1ZQ0KICAgIHBhcmFt
ID0gUmFjdG9yLnJlY2VpdmUNCiAgICByZXN1bHQgPSBmaWIocGFyYW0pDQogIGVuZA0KZW5kDQoN
CmZpYl9zcnYgPDwgMTANCmBgYA0KDQpJbiB0aGlzIGNhc2UsIHRoZSBtYWluIFJhY3RvciByZXF1
ZXN0cyBgZmliX3NydmAgdG8gY2FsY3VsYXRlIGBmaWIoMTApYC4NCkhvd2V2ZXIsIGN1cnJlbnRs
eSwgdGhlcmUgaXMgbm8gd2F5IHRvIHJldHJpZXZlIHRoZSByZXN1bHQuDQoNCiMjIyBSZXR1cm4g
dmFsdWUgdG8gdGhlIHNlbmRlciByYWN0b3INCg0KVGhlcmUgYXJlIHNldmVyYWwgcG9zc2libGUg
YXBwcm9hY2hlcy4NCg0KRmlyc3QsIHdlIGNhbiBzZW5kIHRoZSBzZW5kZXIgUmFjdG9yIGFsb25n
IHdpdGggdGhlIHBhcmFtZXRlciwgYW5kIGFzayB0aGUgc2VydmVyIHRvIHNlbmQgdGhlIHJlc3Vs
dCBiYWNrIHRvIHRoZSBzZW5kZXIuDQoNCmBgYHJ1YnkNCiMgRVgyDQoNCmZpYl9zcnYgPSBSYWN0
b3IubmV3IGRvDQogIHdoaWxlIHRydWUNCiAgICBwYXJhbSwgc2VuZGVyID0gUmFjdG9yLnJlY2Vp
dmUNCiAgICByZXN1bHQgPSBmaWIocGFyYW0pDQogICAgc2VuZGVyIDw8IHJlc3VsdA0KICBlbmQN
CmVuZA0KDQpmaWJfc3J2IDw8IFsxMCwgUmFjdG9yLmN1cnJlbnRdDQoNCmRvX3NvbWVfd29yaygp
DQoNClJhY3Rvci5yZWNlaXZlICM9PiBmaWIoMTApDQpgYGANCg0KVGhpcyBhcHByb2FjaCB3b3Jr
cyB3ZWxsIGluIHNpbXBsZSBjYXNlcy4NCg0KSG93ZXZlciwgd2l0aCBFWDIsIGhhbmRsaW5nIG11
bHRpcGxlIGNvbmN1cnJlbnQgcmVzcG9uc2VzIGJlY29tZXMgZGlmZmljdWx0LiBUaGUgcmVzdWx0
cyBhcmUgcHVzaGVkIGludG8gdGhlIHNhbWUgbWFpbGJveCwgYW5kIHNpbmNlIGBSYWN0b3IucmVj
ZWl2ZWAgcmV0cmlldmVzIG1lc3NhZ2VzIHdpdGhvdXQgZGlzY3JpbWluYXRpbmcgdGhlIHNvdXJj
ZSwgaXQncyB1bmNsZWFyIHdoaWNoIHNlcnZlciByZXR1cm5lZCB3aGljaCByZXN1bHQuDQoNCmBg
YHJ1YnkNCiMgRVgzDQoNCmRlZiBmYWN0KG4pID0gbiA+IDEgOiBmYWN0KG4tMSkgKiBuDQoNCmZp
Yl9zcnYgPSBSYWN0b3IubmV3IGRvDQogIHdoaWxlIHRydWUNCiAgICBwYXJhbSwgc2VuZGVyID0g
UmFjdG9yLnJlY2VpdmUNCiAgICByZXN1bHQgPSBmaWIocGFyYW0pDQogICAgc2VuZGVyIDw8IHJl
c3VsdA0KICBlbmQNCmVuZA0KDQpmYWN0X3NydiA9IFJhY3Rvci5uZXcgZG8NCiAgd2hpbGUgdHJ1
ZQ0KICAgIHBhcmFtLCBzZW5kZXIgPSBSYWN0b3IucmVjZWl2ZQ0KICAgIHJlc3VsdCA9IGZhY3Qo
cGFyYW0pDQogICAgc2VuZGVyIDw8IHJlc3VsdA0KICBlbmQNCmVuZA0KDQoNCmZpYl9zcnYgPDwg
WzEwLCBSYWN0b3IuY3VycmVudF0NCmZpYl9zcnYgPDwgWzIwLCBSYWN0b3IuY3VycmVudF0NCmZh
Y3Rfc3J2IDw8IFsxMCwgUmFjdG9yLmN1cnJlbnRdDQpmYWN0X3NydiA8PCBbMjAsIFJhY3Rvci5j
dXJyZW50XQ0KDQpkb19zb21lX3dvcmsoKQ0KDQpSYWN0b3IucmVjZWl2ZQ0KIz0+IGZpYigxMCkg
b3IgZmFjdCgxMCksIHdoaWNoPw0KIyAgIElmIHRoZSBzZXJ2ZXJzIHVzZXMgUmFjdG9ycyBtb3Jl
IChjYWxjdWxhdGUgdGhlbSBpbiBwYXJhbGxlbCksDQojICAgZmliKDIwKSBhbmQgZmFjdCgyMCkg
Y2FuIGJlIHJldHVybmVkLg0KYGBgDQoNCkJlY2F1c2UgYFJhY3Rvci5yZWNlaXZlYCByZXRyaWV2
ZXMgYWxsIG1lc3NhZ2VzIGluZGlzY3JpbWluYXRlbHksIGRldmVsb3BlcnMgbXVzdCBhZGQgdGhl
aXIgb3duIHRhZ2dpbmcgbG9naWMgdG8gZGlzdGluZ3Vpc2ggcmVzdWx0cy4gV2hpbGUgdGFnZ2lu
ZyAoYXMgc2hvd24gaW4gRVg0KSBoZWxwcywgaXQgaW50cm9kdWNlcyBhZGRpdGlvbmFsIGNvbXBs
ZXhpdHkgYW5kIGJyaXR0bGVuZXNzLg0KDQojIyMgUmVzcG9uc2VzIHdpdGggcmVxdWVzdCBJRA0K
DQpUaGUgZm9sbG93aW5nIGNvZGUgcmV0dXJucyBhIHJlc3VsdCB3aXRoIHJlcXVlc3QgaWQgKGEg
cGFpciBvZiB0aGUgbmFtZSBvZiBzZXJ2ZXIgYW5kIGEgcGFyYW1ldGVyKS4NCg0KYGBgcnVieQ0K
IyBFWDQNCg0KZmliX3NydiA9IFJhY3Rvci5uZXcgZG8NCiAgd2hpbGUgdHJ1ZQ0KICAgIHBhcmFt
LCBzZW5kZXIgPSBSYWN0b3IucmVjZWl2ZQ0KICAgIHJlc3VsdCA9IGZpYihwYXJhbSkNCiAgICBz
ZW5kZXIgPDwgW1s6ZmliLCBwYXJhbV0sIHJlc3VsdF0NCiAgZW5kDQplbmQNCg0KZmFjdF9zcnYg
PSBSYWN0b3IubmV3IGRvDQogIHdoaWxlIHRydWUNCiAgICBwYXJhbSwgc2VuZGVyID0gUmFjdG9y
LnJlY2VpdmUNCiAgICByZXN1bHQgPSBmYWN0KHBhcmFtKQ0KICAgIHNlbmRlciA8PCBbWzpmYWN0
LCBwYXJhbV0sIHJlc3VsdF0NCiAgZW5kDQplbmQNCg0KZmliX3NydiA8PCBbMTAsIFJhY3Rvci5j
dXJyZW50XQ0KZmliX3NydiA8PCBbMjAsIFJhY3Rvci5jdXJyZW50XQ0KZmFjdF9zcnYgPDwgWzEw
LCBSYWN0b3IuY3VycmVudF0NCmZhY3Rfc3J2IDw8IFsyMCwgUmFjdG9yLmN1cnJlbnRdDQoNCmRv
X3NvbWVfd29yaygpDQoNClJhY3Rvci5yZWNlaXZlX2lmIGRvIHxpZCwgcmVzdWx0fA0KICBjYXNl
IGlkDQogIGluIFs6ZmliLCBuXQ0KICAgIHAgImZpYigje259KSA9ICN7cmVzdWx0fSINCiAgaW4g
WzpmYWN0LCBuXQ0KICAgIHAgImZhY3QoI3tufSkgPSAje3Jlc3VsdH0iDQogIGVuZA0KZW5kDQoN
CiMgb3IgaWYgeW91IHdhbnQgdG8gdXNlIHNwZWNpZmljIHJlc3VsdHMsIGxpa2U6DQoNCnAgZmli
MjA6ICBSYWN0b3IucmVjZWl2ZV9pZnt8aWQsIHJlc3VsdHwgaWQgPT4gWzpmaWIsIDIwXTsgIHJl
c3VsdH0NCnAgZmFjdDEwOiBSYWN0b3IucmVjZWl2ZV9pZnt8aWQsIHJlc3VsdHwgaWQgPT4gWzpm
YWN0LCAxMF07IHJlc3VsdH0NCnAgZmFjdDIwOiBSYWN0b3IucmVjZWl2ZV9pZnt8aWQsIHJlc3Vs
dHwgaWQgPT4gWzpmYWN0LCAyMF07IHJlc3VsdH0NCnAgZmliMTA6ICBSYWN0b3IucmVjZWl2ZV9p
Znt8aWQsIHJlc3VsdHwgaWQgPT4gWzpmaWIsIDEwXTsgIHJlc3VsdH0NCmBgYA0KDQpUaGlzIGFw
cHJvYWNoIGNsb3NlbHkgcmVzZW1ibGVzIHBhdHRlcm4gbWF0Y2hpbmcgaW4gRXJsYW5nIG9yIEVs
aXhpciwgd2hlcmUgcmVzcG9uc2VzIGFyZSB0YWdnZWQgYW5kIG1hdGNoZWQgc3RydWN0dXJhbGx5
Lg0KDQpIb3dldmVyLCB0aGlzIHNvbHV0aW9uIHN0aWxsIGhhcyBhbiBpc3N1ZTogaWYgYGRvX3Nv
bWVfd29yaygpYCB1c2VzIGBSYWN0b3IucmVjZWl2ZWAsIGl0IG1heSBhY2NpZGVudGFsbHkgY29u
c3VtZSBhbnkgbWVzc2FnZS4gSW4gb3RoZXIgd29yZHMsIGBSYWN0b3IucmVjZWl2ZWAgY2FuIG9u
bHkgYmUgc2FmZWx5IHVzZWQgd2hlbiB5b3UncmUgY2VydGFpbiB0aGF0IG5vIG90aGVyIGNvZGUg
aXMgdXNpbmcgaXQuDQoNCihBbm90aGVyIHRyaXZpYWwgaXNzdWUgaXMsIGRpZmZlcmVudCBzZXJ2
ZXJzIGNhbiByZXR1cm4gc2FtZSBpZGVudGl0eSwgbGlrZSBgWzpmYWN0LCBudW1dYCByZXR1cm5l
ZCBieSBOZXdzUGFwZXIgc2VydmVyLiBJdCBpcyBjb25mdXNpbmcpLg0KDQoNCiMjIyBVc2luZyBj
aGFubmVscw0KDQpUbyBzb2x2ZSB0aGlzIGlzc3VlLCB3ZSBjYW4gbWFrZSBhIGNoYW5uZWwgd2l0
aCBkaWZmZXJlbnQgUmFjdG9ycy4NCg0KQ2hhbm5lbHMgY2FuIGJlIGltcGxlbWVudGVkIHVzaW5n
IFJhY3RvcnMsIGFzIGlsbHVzdHJhdGVkIGJlbG93Lg0KDQpgYGBydWJ5DQojIEVYNQ0KDQojIFNl
cnZlcnMgYXJlIGNvbXBsZXRlbHkgc2FtZSB0byBFWDMNCg0KZmliX3NydiA9IFJhY3Rvci5uZXcg
ZG8NCiAgd2hpbGUgdHJ1ZQ0KICAgIHBhcmFtLCBzZW5kZXIgPSBSYWN0b3IucmVjZWl2ZQ0KICAg
IHJlc3VsdCA9IGZpYihwYXJhbSkNCiAgICBzZW5kZXIgPDwgcmVzdWx0DQogIGVuZA0KZW5kDQoN
CmZhY3Rfc3J2ID0gUmFjdG9yLm5ldyBkbw0KICB3aGlsZSB0cnVlDQogICAgcGFyYW0sIHNlbmRl
ciA9IFJhY3Rvci5yZWNlaXZlDQogICAgcmVzdWx0ID0gZmFjdChwYXJhbSkNCiAgICBzZW5kZXIg
PDwgcmVzdWx0DQogIGVuZA0KZW5kDQoNCiMgQ3JlYXRlIGEgbmV3IGNoYW5uZWwgdXNpbmcgYSBS
YWN0b3INCmRlZiBuZXdfY2hhbm5lbA0KICBSYWN0b3IubmV3IGRvDQogICAgd2hpbGUgdHJ1ZQ0K
ICAgICAgUmFjdG9yLnlpZWxkIFJhY3Rvci5yZWNlaXZlDQogICAgZW5kDQogIGVuZA0KZW5kDQoN
Cg0KZmliX3NydiA8PCBbMTAsIGZpYjEwX2NoID0gbmV3X2NoYW5uZWxdDQpmaWJfc3J2IDw8IFsy
MCwgZmliMjBfY2ggPSBuZXdfY2hhbm5lbF0NCmZhY3Rfc3J2IDw8IFsxMCwgZmFjdDEwX2NoID0g
bmV3X2NoYW5uZWxdDQpmYWN0X3NydiA8PCBbMjAsIGZhY3QyMF9jaCA9IG5ld19jaGFubmVsXQ0K
DQpkb19zb21lX3dvcmsoKQ0KDQpwIGZpYjIwOiBmaWIyMF9jaC50YWtlICAgIyB3YWl0IGZvciBm
aWIoMjApDQpwIGZhY3QxMDogZmFjdDEwX2NoLnRha2UgIyB3YWl0IGZvciBmYWN0KDEwKQ0KcCBm
aWIxMDogZmliMTBfY2gudGFrZSAgICMgd2FpdCBmb3IgZmliKDEwKQ0KcCBmYWN0MjA6IGZhY3Qx
MF9jaC50YWtlICMgd2FpdCBmb3IgZmFjdCgyMCkNCg0KIyBvciANCmNocyA9IFtmaWIxMF9jaCwg
ZmliMjBfY2gsIGZhY3QxMF9jaCwgZmFjdDIwX2NoXQ0KDQp3aGlsZSAhY2hzLmVtcHR5Pw0KICBj
aCwgcmVzdWx0ID0gUmFjdG9yLnNlbGVjdCgqY2hzKSAjIHdhaXQgZm9yIG11bHRpcGxlIGNoYW5u
ZWxzDQogIHAgY2gsIHJlc3VsdA0KICBjaHMuZGVsZXRlIGNoDQplbmQNCmBgYA0KDQpDaGFubmVs
IGFwcHJvYWNoIHNvbHZlcyB0aGUgaXNzdWUgb2YgRVg0LiBUaGUgYWJvdmUgaW1wbGVtZW50YXRp
b24gaW50cm9kdWNlIHNvbWUgb3ZlcmhlYWQgdG8gY3JlYXRlIGNoYW5uZWwgcmFjdG9ycywgYnV0
IHdlIGNhbiBpbnRyb2R1Y2Ugc3BlY2lhbCBpbXBsZW1lbnRhdGlvbiB0byByZWR1Y2UgdGhpcyBS
YWN0b3IgY3JlYXRpb24gb3ZlcmhlYWQuDQoNCkhvd2V2ZXIsIGluIHRoZSBBY3RvciBtb2RlbCwg
dGhlIGNvbW11bmljYXRpb24gcGF0dGVybiBpcyB0byBzZW5kIGEgbWVzc2FnZSB0byBhIHNwZWNp
ZmljIGFjdG9yLiBJbiBjb250cmFzdCwgY2hhbm5lbHMgYXJlIHVzZWQgdG8gc2VuZCBtZXNzYWdl
cyB0aHJvdWdoIGEgc2hhcmVkIGNvbmR1aXQsIHdpdGhvdXQgY2FyaW5nIHdoaWNoIHJlY2VpdmVy
IChpZiBhbnkpIGhhbmRsZXMgdGhlIG1lc3NhZ2UuIEFsc28sIGNoYW5uZWxzIGNhbiBoYXZlIHNv
bWUgb3ZlcmhlYWQsIGFzIGRpc2N1c3NlZCBiZWxvdy4NCg0KIyMjIFN1bW1hcnkgb2YgYmFja2dy
b3VuZA0KDQpDdXJyZW50bHksIHdoZW4gaW1wbGVtZW50aW5nIHJlcXVlc3QtcmVzcG9uc2UgcGF0
dGVybnMgd2l0aCBSYWN0b3JzLCBkZXZlbG9wZXJzIGZhY2UgY2hhbGxlbmdlcyBpbiB0cmFja2lu
ZyByZXN1bHRzLCBtYW5hZ2luZyBpZGVudGlmaWVycywgYW5kIGF2b2lkaW5nIG1lc3NhZ2UgY29u
ZmxpY3RzLiBFeGlzdGluZyBwcmltaXRpdmVzIGxpa2UgYHJlY2VpdmVfaWZgLCBgdGFrZWAsIG9y
IGNoYW5uZWxzIGltcGxlbWVudGVkIHdpdGggUmFjdG9ycyBhcmUgZWl0aGVyIGVycm9yLXByb25l
IG9yIGluZWZmaWNpZW50Lg0KDQojIyBQcm9wb3NhbA0KDQpJbnRyb2R1Y2UgYFJhY3Rvcjo6UG9y
dGAgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gY2hhbm5lbHMuIEl0IGlzIGEgbmF0dXJhbCBleHRlbnNp
b24gb2YgdGhlIEFjdG9yIG1vZGVsLiBJbiBmYWN0LCBpdCBpcyB0aGluIHdyYXBwZXIgb2YgY3Vy
cmVudCBzZW5kL3JlY2VpdmUgbW9kZWwgYXMgaWxsdXN0cmF0ZWQgYXQgdGhlIHRvcCBvZiB0aGlz
IHByb3Bvc2FsLg0KDQpXaXRoIHRoZSBgUmFjdG9yOjpQb3J0YCwgd2UgY2FuIHJld3JpdGUgYWJv
dmUgZXhhbXBsZXMgd2l0aCBpdC4NCg0KYGBgcnVieQ0KIyBFWDYNCg0KIyBDb21wbGV0ZWx5IHNh
bWUgYXMgRVgzJ3Mgc2VydmVycw0KDQpmaWJfc3J2ID0gUmFjdG9yLm5ldyBkbw0KICB3aGlsZSB0
cnVlDQogICAgcGFyYW0sIHNlbmRlciA9IFJhY3Rvci5yZWNlaXZlDQogICAgcmVzdWx0ID0gZmli
KHBhcmFtKQ0KICAgIHNlbmRlciA8PCByZXN1bHQNCiAgZW5kDQplbmQNCg0KZmFjdF9zcnYgPSBS
YWN0b3IubmV3IGRvDQogIHdoaWxlIHRydWUNCiAgICBwYXJhbSwgc2VuZGVyID0gUmFjdG9yLnJl
Y2VpdmUNCiAgICByZXN1bHQgPSBmYWN0KHBhcmFtKQ0KICAgIHNlbmRlciA8PCByZXN1bHQNCiAg
ZW5kDQplbmQNCg0KZmliX3NydiA8PCBbMTAsIGZpYjEwX3BvcnQgPSBSYWN0b3I6OlBvcnQubmV3
XQ0KZmliX3NydiA8PCBbMjAsIGZpYjIwX3BvcnQgPSBSYWN0b3I6OlBvcnQubmV3XQ0KZmFjdF9z
cnYgPDwgWzEwLCBmYWN0MTBfcG9ydCA9IFJhY3Rvcjo6UG9ydC5uZXddDQpmYWN0X3NydiA8PCBb
MjAsIGZhY3QyMF9wb3J0ID0gUmFjdG9yOjpQb3J0Lm5ld10NCg0KZG9fc29tZV93b3JrKCkNCg0K
cCBmaWIxMF9wb3J0LnJlY2VpdmUgIz0+IGZpYigxMCkNCnAgZmliMjBfcG9ydC5yZWNlaXZlICM9
PiBmaWIoMjApDQpwIGZhY3QxMF9wb3J0LnJlY2VpdmUgIz0+IGZhY3QoMTApDQpwIGZhY3QyMF9w
b3J0LnJlY2VpdmUgIz0+IGZhY3QoMjApDQoNCiMgb3INCg0KcG9ydHMgPSBbZmliMTBfcG9ydCwg
ZmliMjBfcG9ydCwgZmFjdDEwX3BvcnQsIGZhY3QyMF9wb3J0XQ0KDQp3aGlsZSAhcG9ydHMuZW1w
dHk/DQogIHBvcnQsIHJlc3VsdCA9IFJhY3Rvci5zZWxlY3QoKnBvcnRzKQ0KICBjYXNlIHBvcnQN
CiAgd2hlbiBmaWIxMF9wb3J0DQogICAgcCBmaWIxMDogcmVzdWx0DQogIC4uLg0KICBlbHNlDQog
ICAgcmFpc2UgIlRoaXMgc2hvdWxkIG5vdCBoYXBwZW4gKEJVRykuIg0KICBlbmQNCg0KICBwb3J0
cy5kZWxldGUocG9ydCkNCmVuZA0KYGBgDQoNCmBSYWN0b3I6OlBvcnRgIHJlc29sdmVzIGtleSBw
YWluIHBvaW50cyBpbiBtZXNzYWdlIHBhc3NpbmcgYmV0d2VlbiBSYWN0b3JzOg0KDQoqIEl0IGd1
YXJhbnRlZXMgdGhhdCBpbmNvbWluZyBtZXNzYWdlcyBhcmUgb25seSBkZWxpdmVyZWQgdG8gdGhl
IGludGVuZGVkIFJhY3RvciwgcHJldmVudGluZyB0YWcgY29sbGlzaW9ucy4NCiogSXQgZW5hYmxl
cyBtZXNzYWdlIHJvdXRpbmcgd2l0aG91dCByZWx5aW5nIG9uIGdsb2JhbCByZWNlaXZlIGJsb2Nr
cyAoYFJhY3Rvci5yZWNlaXZlYCksIHdoaWNoIGFyZSBwcm9uZSB0byB1bmludGVuZGVkIGNvbnN1
bXB0aW9uLg0KKiBJdCByZXBsYWNlcyBtb3JlIGNvbXBsZXggcHJpbWl0aXZlcyBsaWtlIGAucmVj
ZWl2ZV9pZmAsIGAueWllbGRgLCBhbmQgYCN0YWtlYCB3aXRoIGEgc2ltcGxlciwgY29tcG9zYWJs
ZSBhYnN0cmFjdGlvbi4NCiogSXQgbWFwcyBjbGVhbmx5IHRvIHRoZSBBY3RvciBtb2RlbCBzZW1h
bnRpY3MgUnVieSBpbnRlbmRzIHRvIHN1cHBvcnQgd2l0aCBSYWN0b3JzLg0KDQpXaGlsZSB0aGUg
cGF0dGVybiBsb29rcyBzaW1pbGFyIHRvIHVzaW5nIGNoYW5uZWxzLCB0aGUgc2VtYW50aWNzIGFu
ZCBndWFyYW50ZWVzIGFyZSBkaWZmZXJlbnQgaW4gbWVhbmluZ2Z1bCB3YXlzLg0KDQpUaGUgYWR2
YW50YWdlcyBvZiB1c2luZyBQb3J0cyBpbmNsdWRlOg0KDQoqIFNhZmVyIHRoYW4gY2hhbm5lbHMg
aW4gcHJhY3RpY2UNCiAgKiBXaGVuIHVzaW5nIGEgUG9ydCwgaWYgYCNzZW5kYCBzdWNjZWVkcywg
aXQgbWVhbnMgdGhlIGRlc3RpbmF0aW9uIFJhY3RvciBpcyBzdGlsbCBhbGl2ZSAoaS5lLiwgaXQn
cyBydW5uaW5nKS4NCiAgKiBJbiBjb250cmFzdCwgd2l0aCBhIGNoYW5uZWwsIHRoZXJlJ3Mgbm8g
Z3VhcmFudGVlIHRoYXQgYW55IFJhY3RvciBpcyBzdGlsbCBhdmFpbGFibGUgdG8gcmVjZWl2ZSBm
cm9tIGl0Lg0KICAqIE9mIGNvdXJzZSwgZXZlbiB3aXRoIGEgcG9ydCwgdGhlcmUncyBubyBndWFy
YW50ZWUgdGhhdCB0aGUgZGVzdGluYXRpb24gUmFjdG9yIHdpbGwgYWN0dWFsbHkgcHJvY2VzcyB0
aGUgbWVzc2FnZSDigJQgaXQgbWlnaHQgaWdub3JlIGl0Lg0KICAqIEJ1dCBhdCBsZWFzdCB5b3Ug
ZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCB0aGUgUmFjdG9yIGhhdmluZyBhbHJlYWR5IHRlcm1p
bmF0ZWQgdW5leHBlY3RlZGx5Lg0KICAqIEluIG90aGVyIHdvcmRzLCB1c2luZyBhIHBvcnQgZWxp
bWluYXRlcyBvbmUgbWFqb3IgZmFpbHVyZSBjYXNlLCBtYWtpbmcgdGhlIGNvbW11bmljYXRpb24g
bW9kZWwgbW9yZSBwcmVkaWN0YWJsZS4NCiAgKiBUaGlzIGlzIG9uZSBvZiB0aGUgcmVhc29ucyB3
aHkgUnVieSB3ZW50IHdpdGggdGhlICJBY3RvciIgbW9kZWwgKGhlbmNlIHRoZSBuYW1lIFJhY3Rv
ciksIGluc3RlYWQgb2YgdGhlICJDU1AiIG1vZGVsLg0KKiBGYXN0ZXIgdGhhbiBjaGFubmVscyBp
biBib3RoIGNyZWF0aW9uIGFuZCBtZXNzYWdlIHRyYW5zbWlzc2lvbg0KICAqIFdoZW4gY3JlYXRp
bmcgYSBjaGFubmVsLCB3ZSBuZWVkIHRvIHByZXBhcmUgYSBjb250YWluZXIgZGF0YSBzdHJ1Y3R1
cmUuIFdoZW4gY3JlYXRpbmcgYSBwb3J0LCBpdCBpcyBsaWdodHdlaWdodCBkYXRhIChhIHBhaXIg
b2YgUmFjdG9yIGFuZCBuZXdseSBjcmVhdGVkIElEKS4NCiAgKiBPbiB0aGUgY2hhbm5lbCB0cmFu
c21pc3Npb24sIHdlIG5lZWQgY29weWluZyBhIGRhdGEgdG8gY2hhbm5lbCBhbmQgYSBjb3B5aW5n
IHRvIHRoZSByZWNlaXZpbmcgcmFjdG9yLiBPbiB0aGUgcG9ydCwgaXQgb25seSBuZWVkcyB0byBj
b3B5IGZyb20gdGhlIHNyYyByYWN0b3IgdG8gdGhlIGRzdCByYWN0b3IuIFRoaXMgaXNzdWUgYmVj
b21lcyBtb3JlIHNpZ25pZmljYW50IGR1ZSB0byBSYWN0b3ItbG9jYWwgZ2FyYmFnZSBjb2xsZWN0
aW9uIGFuZCBpc29sYXRpb24gb2Ygb2JqZWN0IHNwYWNlcy4NCiogRWFzeSB0byBpbXBsZW1lbnQu
IFdlIG9ubHkgbmVlZCB0byBpbXBsZW1lbnQgYFBvcnQjcmVjZWl2ZWAgdG8gc3luY2hyb25pemUg
d2l0aCBvdGhlciByYWN0b3JzLg0KICAqIGAjc2VuZC8ucmVjZWl2ZWAgaXMgZWFzeSB0byBpbXBs
ZW1lbnQgYmVjYXVzZSB3ZSBvbmx5IG5lZWQgdG8gbG9jayB0aGUgcmVjZWl2aW5nIHJhY3Rvci4N
CiAgKiBgLnlpZWxkLyN0YWtlYCBpcyBub3QgZWFzeSB0byBpbXBsZW1lbnQgYmVjYXVzZSB3ZSBu
ZWVkIHRvIGxvY2sgdGFraW5nIGFuZCByZWNlaXZpbmcgcmFjdG9ycyBiZWNhdXNlIGl0IGlzIHJl
bmRlenZvdXMgc3R5bGUgc3luY2hyb25pemF0aW9uLg0KICAqIGAuc2VsZWN0YCBpcyBESUZGSUNV
TFQgdG8gc3VwcG9ydCBjdXJyZW50IHNwZWMuIE5vdyBDSSBpc24ndCBzdGFibGUgeWV0Lg0KICAq
IEEgc2ltcGxlciBzcGVjIHJlZHVjZXMgYnVncywgYW5kIG1heWJlIGxlYWRzIHRvIGZhc3RlciBp
bXBsZW1lbnRhdGlvbi4NCg0KRGlzYWR2YW50YWdlczoNCg0KMS4gSXQgaXMgbm90IGEgd2VsbC1r
bm93biBjb25jZXB0LCBlc3BlY2lhbGx5IGZvciBHbyBsYW5ndWFnZSB1c2Vycy4NCjIuIFdlIG5l
ZWQgYWRkaXRpb25hbCBhYnN0cmFjdGlvbiBsaWtlIHByb2R1Y2VyKHMpLWNvbnN1bWVyKHMpIGNv
bmN1cnJlbnQgYXBwbGljYXRpb25zLg0KDQpGb3IgKDIpLCBJIHdhbnQgdG8gaW50cm9kdWNlIGFu
IGV4YW1wbGUgY29kZS4gV2UgY2FuIHdyaXRlIGEgMS1wcm9kdWNlciwgbXVsdGlwbGUtY29uc3Vt
ZXIgcGF0dGVybiB3aXRoIGEgY2hhbm5lbC4NCg0KYGBgcnVieQ0KIyBjaGFubmVsIHZlcnNpb24g
b2YgMSBwcm9kdWNlciAmIGNvbnN1bWVycw0KDQpjaCA9IG5ld19jaGFubmVsDQoNClJOID0gMTAg
IyBtYWtlIDEwIGNvbnN1bWVycw0KDQpjb25zdW1lcnMgPSBSTi50aW1lcy5tYXAgZG8NCiAgUmFj
dG9yLm5ldyBjaCBkbw0KICAgIHdoaWxlIHBhcmFtID0gY2gucmVjZWl2ZQ0KICAgICAgdGFzayhw
YXJhbSkNCiAgICBlbmQNCiAgZW5kDQplbmQNCg0KdGFza3MuZWFjaCBkbyB8dGFza3wNCiAgY2gg
PDwgdGFzaw0KZW5kDQpgYGANCg0KV2l0aCBQb3J0LCB3ZSBuZWVkIHRvIGludHJvZHVjZSBhIGxv
YWQgYmFsYW5jaW5nIG1lY2hhbmlzbToNCg0KYGBgcnVieQ0KIyBQb3J0IHZlcnNpb24gb2YgMSBw
cm9kdWNlciAmIGNvbnN1bWVycw0KDQpjb250cm9sX3BvcnQgPSBSYWN0b3I6OlBvcnQubmV3DQpj
b25zdW1lcnMgPSBSTi50aW1lcy5tYXAgZG8NCiAgUmFjdG9yLm5ldyBjb250cm9sX3BvcnQgY29u
dHJvbF9wb3J0IGRvIHxjb250cm9sX3BvcnR8DQogICAgd2hpbGUgdHJ1ZQ0KICAgICAgY29udHJv
bF9wb3J0IDw8IFs6cmVhZHksIFJhY3Rvci5jdXJyZW50XSAjIHJlZ2lzdGVyIC0gcmVhZHkNCiAg
ICAgIHBhcmFtID0gUmFjdG9yLnJlY2VpdmUgIyBpdCBhc3N1bWVzIHRhc2sgZG9lc24ndCB1c2Ug
UmFjdG9yLnJlY2VpdmUNCiAgICAgIHRhc2socGFyYW0pDQogICAgZW5kDQogIGVuZA0KZW5kDQoN
CnRhc2tzLmVhY2ggZG8gfHRhc2t8DQogIGNvbnRyb2xfcG9ydC5yZWNlaXZlID0+IFs6cmVhZHks
IGNvbnN1bWVyXQ0KICANCiAgIyBzZW5kIGEgdGFzayB0byBhIHJlYWR5IGNvbnN1bWVyDQogIGNv
bnN1bWVyIDw8IHRhc2sNCmVuZA0KYGBgDQoNCk9mIGNvdXJzZSB3ZSBjYW4gbWFrZSBhIGxpYnJh
cnkgZm9yIHRoYXQgKGxpa2UgT1RQIG9uIEVybGFuZykuDQoNCiMjIyBEZWZhdWx0IHBvcnQgb2Yg
UmFjdG9ycw0KDQpFYWNoIFJhY3RvciBoYXMgYSBkZWZhdWx0IHBvcnQgYW5kIGBSYWN0b3Ijc2Vu
ZGAgaXMgZXF1YWwgdG8gYFJhY3Rvci5jdXJyZW50LmRlZmF1bHRfcG9ydCNzZW5kYC4gT2YgY291
cnNlLCBgUmFjdG9yLnJlY2VpdmVgIGlzIGVxdWFsIHRvIGBSYWN0b3IuY3VycmVudC5kZWZhdWx0
X3BvcnQucmVjZWl2ZWAuDQoNCkZvciB0aGUgc2ltcGxlIGNhc2UsIHdlIGNhbiBrZWVwIHRvIHVz
ZSBgUmFjdG9yI3NlbmRgIGFuZCBgUmFjdG9yLnJlY2VpdmVgDQoNCiMjIyBEZXByZWNhdGlvbiBv
ZiBSYWN0b3IjdGFrZSBhbmQgUmFjdG9yLnlpZWxkDQoNCldpdGggdGhlIFBvcnQgY29uY2VwdCwg
d2UgY2FuIGZvY3VzIHNvbGVseSBvbiBzZW5kIGFuZCByZWNlaXZl4oCUdGhhdCBpcywgZGlyZWN0
IG1hbmlwdWxhdGlvbiBvZiBhIFJhY3RvcuKAmXMgbWFpbGJveC4gUG9ydHMgcHJvdmlkZSBhIGNs
ZWFuIGFuZCBmdW5jdGlvbmFsIGFsdGVybmF0aXZlIHRvIGBSYWN0b3IjdGFrZWAgYW5kIGBSYWN0
b3IueWllbGRgLCBtYWtpbmcgdGhlbSB1bm5lY2Vzc2FyeSBpbiBtb3N0IHVzZSBjYXNlcy4NCg0K
TW9yZW92ZXIsIFBvcnRzIGFyZSBzaWduaWZpY2FudGx5IGVhc2llciB0byBpbXBsZW1lbnQsIGFz
IHRoZXkgcmVxdWlyZSBvbmx5IGxvY2tpbmcgdGhlIHJlY2VpdmluZyBSYWN0b3IsIHdoaWxlIHlp
ZWxkL3Rha2UgaW52b2x2ZSBjb21wbGV4IHJlbmRlenZvdXMtc3R5bGUgc3luY2hyb25pemF0aW9u
LiBCeSByZW1vdmluZyB0aGVzZSBwcmltaXRpdmVzLCB3ZSBjYW4gc2ltcGxpZnkgdGhlIHNwZWNp
ZmljYXRpb24gYW5kIHJlZHVjZSBpbXBsZW1lbnRhdGlvbiBjb21wbGV4aXR54oCUZXNwZWNpYWxs
eSBhcm91bmQgZmVhdHVyZXMgbGlrZSBgUmFjdG9yLnNlbGVjdGAsIHdoaWNoIGFyZSBub3Rvcmlv
dXNseSBoYXJkIHRvIGdldCByaWdodC4NCg0KIyMjIGBSYWN0b3Iuc2VsZWN0YCB3aXRoIHBvcnRz
DQoNCldlIHNob3VsZCB3YWl0IGZvciBtdWx0aXBsZSBwb3J0IHNpbXVsdGFuZW91c2x5IHNvIGBS
YWN0b3Iuc2VsZWN0KClgIHNob3VsZCBhY2NlcHQgcG9ydHMuIE5vdyBgUmFjdG9yLnNlbGVjdCgp
YCBjYW4gYWxzbyByZWNlaXZpbmcgYW5kIHlpZWxkaW5nIHRoZSB2YWx1ZSwgYnV0IGlmIHdlIHJl
bW92ZSB0aGUgYCN0YWtlYCBmdW5jdGlvbmFsaXR5LCBgUmFjdG9yLnNlbGVjdGAgb25seSBuZWVk
IHRvIHN1cHBvcnQgcG9ydHMuDQoNCiMjIyBXYWl0IGZvciB0ZXJtaW5hdGlvbg0KDQpgUmFjdG9y
I3Rha2VgIGlzIGRlc2lnbmVkIGZyb20gYW4gaWRlYSBvZiBnZXR0aW5nIHRlcm1pbmF0aW9uIHJl
c3VsdCAobGlrZSBgVGhyZWFkI3ZhbHVlYCkuIEZvciB0aGlzIHB1cnBvc2UsIHdlIGNhbiBpbnRy
b2R1Y2UgYFJhY3RvciNqb2luYCBvciBgUmFjdG9yI3ZhbHVlYCBsaWtlIFRocmVhZHMgb3Igd2Ug
Y2FuIGtlZXAgdGhlIG5hbWUgYFJhY3RvciN0YWtlYCBmb3IgdGhpcyBwdXJwb3NlLg0KDQpXZSBj
YW4gbWFrZSBgUmFjdG9yI2pvaW5gIGFzIGEgZm9sbG93aW5nIHBzZXVkby1jb2RlOg0KDQpgYGBy
dWJ5DQpjbGFzcyBSYWN0b3INCiAgZGVmIGpvaW4gIyB3YWl0IGZvciB0aGUgdGVybWluYXRpb24N
CiAgICBtb25pdG9yIHBvcnQgPSBQb3J0Lm5ldw0KICAgIHBvcnQucmVjZWl2ZQ0KICBlbnN1cmUN
CiAgICBtb25pdG9yIG5pbCAjIHVucmVnaXN0ZXIgLyBpdCBzaG91bGQgYmUgZGlzY3Vzc2VkDQog
IGVuZA0KICANCiAgIyB3aGVuIHRoaXMgcmFjdG9yIHRlcm1pbmF0ZXMsIHNlbmQgYSBtZXNzYWdl
IHRvIHRoZSByZWdpc3RlcmVkIHBvcnQNCiAgZGVmIG1vbml0b3IgcG9ydA0KICAgIEBtb25pdG9y
X3BvcnQgPSBwb3J0DQogIGVuZA0KICANCiAgcHJpdmF0ZSBkZWYgYXRleGl0DQogICAgQG1vbml0
b3JfcG9ydCA8PCB0ZXJtaW5hdGlvbl9tZXNzYWdlDQogIGVuZA0KZW5kDQoNCiMgdGhlcmUgYXJl
IHNvbWUgcXVlc3Rpb25zLg0KIyAqIGNhbiB3ZSByZWdpc3RlciBtdWx0aXBsZSBwb3J0cz8NCiMg
KiBzaG91bGQgd2Ugc3VwcG9ydCBgI2pvaW5gIGFuZCBgI3ZhbHVlYCBsaWtlIHRocmVhZHM/DQoj
ICAgb3Igc2hvdWxkIHdlIHN1cHBvcnQgb25seSBgI2pvaW5gIHRvIHJldHVybiB0aGUgdmFsdWU/
DQojICogb3Iga2VlcCB0aGlzIG5hbWUgYXMgYCN0YWtlYD8NCg0KDQpSYWN0b3IubmV3IGRvDQog
IDQyDQplbmQuam9pbiAjPT4gNDIgKG9yIHRydWU/KQ0KYGBgDQoNCkl0IGlzIHZlcnkgc2ltaWxh
ciB0byBgbW9uaXRvcmAgaW4gRXJsYW5nIG9yIEVsaXhpci4NCldlIGNhbiBhbHNvIG1ha2UgYSBz
dXBlcnZpc29yIGluIEVybGFuZyBsaWtlIHRoYXQ6DQoNCmBgYHJ1YnkNCnN2X3BvcnQgPSBSYWN0
b3I6OlBvcnQubmV3DQoNCnJzID0gTi50aW1lcy5tYXAgZG8NCiAgUmFjdG9yLm5ldyBkbw0KICAg
IGRvX3NvbWV0aGluZygpDQogIGVuZC5tb25pdG9yIHN2X3BvcnQNCmVuZA0KDQp3aGlsZSB0ZXJt
aW5hdGlvbl9ub3RpY2UgPSBzdl9wb3J0LnJlY2VpdmUNCiAgcCB0ZXJtaW5hdGlvbl9ub3RpY2UN
CmVuZA0KDQojIFdpdGggUmFjdG9yI3Rha2UsIHdlIGNhbiB3cml0ZSBzaW1pbGFyIGNvZGUgaWYg
dGhlcmUgaXMgbm8gUmFjdG9yLnlpZWxkDQoNCnJzID0gTi50aW1lcy5tYXAgZG8NCiAgUmFjdG9y
Lm5ldyBkbw0KICAgIGRvX3NvbWV0aGluZygpDQogIGVuZA0KZW5kDQoNCndoaWxlIHIsIG1zZyA9
IFJhY3Rvci5zZWxlY3QoKnJzKQ0KICBwIFtyLCBtc2ddDQplbmQNCmBgYA0KDQojIyBEaXNjdXNz
aW9uDQoNCiMjIyBgc2VuZGAgd2l0aCB0YWcgKHN5bWJvbHMpDQoNCklmIHdlIGZvcmNlIHVzZXJz
IHRvIHNlbmQgYSB0YWdnZWQgbWVzc2FnZSBldmVyeSB0aW1lLCB3ZSBjYW4gYWNoaWV2ZSB0aGUg
c2FtZSBlZmZlY3QgYXMgUG9ydCBjb25jZXB0LCBiZWNhdXNlIGEgUG9ydCBjYW4gYmUgdGhvdWdo
dCBvZiBhcyBhIGNvbWJpbmF0aW9uIG9mIGEgdGFnIGFuZCBhIGRlc3RpbmF0aW9uIFJhY3Rvci4N
Cg0KYGBgcnVieQ0KciA9IFJhY3Rvci5uZXcgZG8NCiAgbG9vcCBkbw0KICAgIHRhZywgbXNnID0g
UmFjdG9yLnJlY2VpdmUgIyByZXR1cm4gMiB2YWx1ZXMNCiAgICBjYXNlIHRhZw0KICAgIHdoZW4g
OlRBRw0KICAgICAgcCBbdGFnLCBtc2ddDQogICAgZWxzZQ0KICAgICAgIyBpZ25vcmUNCiAgICBl
bmQNCiAgZW5kDQplbmQNCg0Kci5zZW5kIDpUQUcsIDQyDQpyLnNlbmQgOlRBR0UsIDg0ICMgdGhp
cyB0eXBvIGFuZCB0aGUgbWVzc2FnZSBpcyBzaWxlbnRseSBpZ25vcmVkDQpgYGANCg0KSG93ZXZl
ciBpdCBoYXMgdHdvIGlzc3VlczoNCg0KKiBJZiB3ZSBtYWtlIGEgdHlwbyBpbiB0YWcgbmFtZSwg
dGhlIG1lc3NhZ2Ugd2lsbCBiZSBzaWxlbnRseSBpZ25vcmVkLg0KKiBUaGUgdGFnIG5hbWUgbWF5
IGNvbmZsaWN0IHdpdGggdW5yZWxhdGVkIGNvZGVzIChsaWJyYXJpZXMpDQoNCiMjIyBgUmFjdG9y
LnlpZWxkYCBhbmQgYFJhY3RvciN0YWtlYCB3aXRoIGNoYW5uZWwgcmFjdG9yDQoNCklmIHdlIHdh
bnQgdG8gbGVhdmUgdGhlIGAueWllbGRgIGFuZCBgI3Rha2VgLCB3ZSBjYW4gZW11bGF0ZSB0aGVt
IHdpdGggY2hhbm5lbCByYWN0b3IuDQoNCmBgYHJ1YnkNCmNsYXNzIFJhY3Rvcg0KICBkZWYgaW5p
dGlhbGl6ZQ0KICAgIEB5aWVsZF9yYWN0b3IgPSBSYWN0b3IubmV3IGRvDQogICAgICB0YWtlcnMg
PSBbXQ0KICAgICAgd2hpbGUgdGFnLCBtc2cgPSBSYWN0b3IucmVjZWl2ZQ0KICAgICAgICBjYXNl
IHRhZw0KICAgICAgICB3aGVuIDpyZWdpc3Rlcg0KICAgICAgICAgIEB0YWtlcnMgPDwgbXNnDQog
ICAgICAgIHdoZW4gOnVucmVnaXN0ZXINCiAgICAgICAgICBAdGFrZXJzLmRlbGV0ZSBtc2cNCiAg
ICAgICAgd2hlbiA6eWllbGQNCiAgICAgICAgICBAdGFrZXJzLnBvcCA8PCBtc2cNCiAgICAgICAg
ZW5kDQogICAgICBlbmQNCiAgICBlbmQNCiAgZW5kDQoNCiAgZGVmIHNlbGYueWllbGQgb2JqDQog
ICAgQHlpZWxkX3JhY3RvciA8PCBbOnlpZWxkLCBvYmpdDQogIGVuZA0KDQogIGRlZiB0YWtlDQog
ICAgQHlpZWxkX3JhY3RvciA8PCBbOnJlZ2lzdGVyLCBwb3J0ID0gUmFjdG9yOjpQb3J0Lm5ld10N
CiAgICBwb3J0LnJlY2VpdmUNCiAgZW5zdXJlDQogICAgQHlpZWxkX3JhY3RvciA8PCBbOnVucmVn
aXN0ZXIsIHBvcnRdDQogIGVuZA0KZW5kDQpgYGANCg0KIyMjIE9wZW5pbmcgYW5kIGNsb3Npbmcg
dGhlIHBvcnQNCg0KVGhpcyBwcm9wb3NhbCBkb2Vzbid0IGNvbnRhaW4gb3BlbmluZyBhbmQgY2xv
c2luZyB0aGUgcG9ydCwgYnV0IHdlIGNhbiBkaXNjdXNzIGFib3V0IGl0LiBUbyBpbnRyb2R1Y2Ug
dGhpcyBhdHRyaWJ1dGUsIHdlIG5lZWQgdG8gbWFuYWdlIHdoaWNoIHBvcnRzICh0YWdzKSBhcmUg
b3BlbmluZy4NCg0KIyMgSW1wbGVtZW50YXRpb24NCg0KTm93IHRoZSBuYXRpdmUgaW1wbGVtZW50
YXRpb24gaXMgbm90IGZpbmlzaGVkLCBidXQgd2UgY2FuIGltcGxlbWVudCBpdCB1c2luZyB0aGUg
YFJhY3Rvci5yZWNlaXZlX2lmYCBtZWNoYW5pc20sIHNvIHdlIGVzdGltYXRlIHRoYXQgb25seSBh
IGZldyB3ZWVrcyBvZiB3b3JrIGFyZSBuZWVkZWQgdG8gY29tcGxldGUgaXQuDQoNCiMjIFN1bW1h
cnkNCg0KVGhpcyBwcm9wb3NhbCBpbnRyb2R1Y2VzIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYW5k
IGRlcHJlY2F0aW9ucy4NCg0KKiBgUmFjdG9yOjpQb3J0YA0KICAqIGBQb3J0I3NlbmQobXNnKWAg
4oCTIHNlbmRzIGEgbWVzc2FnZSB0byB0aGUgY3JlYXRvciBvZiB0aGUgcG9ydC4NCiAgKiBgUG9y
dCNyZWNlaXZlYCDigJMgcmVjZWl2ZXMgYSBtZXNzYWdlIGZyb20gdGhlIHBvcnQuDQogICogQSBw
b3J0IGlzIGEgbGlnaHR3ZWlnaHQgZGF0YSBzdHJ1Y3R1cmUgKGEgcGFpciBvZiBhIFJhY3RvciBh
bmQgYSB0YWcpLg0KKiBgUmFjdG9yI2pvaW5gIG9yIGBSYWN0b3IjdmFsdWVgIOKAkyB0byB3YWl0
IGZvciBSYWN0b3IgdGVybWluYXRpb24gKGxpa2UgYFRocmVhZCNqb2luYCkNCiogYFJhY3RvciNt
b25pdG9yYCDigJMgdG8gb2JzZXJ2ZSB3aGVuIGFub3RoZXIgUmFjdG9yIHRlcm1pbmF0ZXMNCiog
RGVwcmVjYXRpb25zOg0KICAqIGBSYWN0b3IjdGFrZWANCiAgKiBgUmFjdG9yLnlpZWxkYA0KICAq
IGBSYWN0b3IucmVjZWl2ZV9pZmANCg0KVGhhbmsgeW91IGZvciByZWFkaW5nIHRoaXMgbG9uZyBw
cm9wb3NhbC4gSWYgeW91IGhhdmUgYW55IHVzZSBjYXNlcyB0aGF0IGNhbm5vdCBiZSBhZGRyZXNz
ZWQgd2l0aCBgUmFjdG9yOjpQb3J0YCwgSSdkIGxvdmUgdG8gaGVhciB0aGVtLg0KDQoNClAuUy4g
VGhhbmtzIHRvIG1hbWUgZm9yIHJldmlld2luZyB0aGlzIHByb3Bvc2FsIGFuZCBzdWdnZXN0aW5n
IHRoYXQgSSB1c2UgQ2hhdEdQVCB0byBpbXByb3ZlIHRoZSB3cml0aW5nLg0KDQoNCg0KLS0gDQpo
dHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy8NCiBfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCiBydWJ5LWNvcmUgbWFpbGluZyBsaXN0IC0tIHJ1YnktY29yZUBt
bC5ydWJ5LWxhbmcub3JnCiBUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRvIHJ1YnktY29y
ZS1sZWF2ZUBtbC5ydWJ5LWxhbmcub3JnCiBydWJ5LWNvcmUgaW5mbyAtLSBodHRwczovL21sLnJ1
YnktbGFuZy5vcmcvbWFpbG1hbjMvbGlzdHMvcnVieS1jb3JlLm1sLnJ1YnktbGFuZy5vcmcv


In This Thread