[ruby-core:115098] [Ruby master Feature#19541] Proposal: Generate frame unwinding info for YJIT code
From:
"k0kubun (Takashi Kokubun) via ruby-core" <ruby-core@...>
Date:
2023-10-18 22:16:16 UTC
List:
ruby-core #115098
SXNzdWUgIzE5NTQxIGhhcyBiZWVuIHVwZGF0ZWQgYnkgazBrdWJ1biAoVGFrYXNoaSBLb2t1YnVu KS4NDQoNDQpTdGF0dXMgY2hhbmdlZCBmcm9tIEFzc2lnbmVkIHRvIEZlZWRiYWNrDQ0KDQ0KSSBh ZGRlZCBgLS15aml0LXBlcmZgIG9uIFJ1YnkgbWFzdGVyIGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5 L3J1YnkvcHVsbC84Njk3LiBJdCBkb2VzIG5vdCB1bndpbmQgUnVieSBmcmFtZXMgaW4gYSBzaW5n bGUgWUpJVCBmcmFtZSBsaWtlIERXQVJGIHdvdWxkIGJlIGFibGUgdG8gZG8uIEJ1dCBJIHRoaW5r IGl0J3Mgc2ltaWxhciB0byBob3cgQyBmdW5jdGlvbnMgYXJlIHByb2ZpbGVkIHdpdGggYC0tY2Fs bC1ncmFwaCBmcGAgYW5kIGl0J3MgYSBmYWlyIGNob2ljZSB1bmRlciB0aGUgdHJhZGUtb2ZmOiBg LS1jYWxsLWdyYXBoIGR3YXJmYCBjYW4gdW53aW5kIGlubGluZWQgZnVuY3Rpb25zIGJ1dCBpcyBz bG93ZXIgdGhhbiBgLS1jYWxsLWdyYXBoIGZwYC4gR2l2ZW4geW91ciBQb0MgbmVlZGVkICsxMjgy IGxpbmVzIHdoaWxlIG91ciBQUiB3YXMgKzEzMyBsaW5lcywgdGhpcyBzZWVtcyB0byBoYXZlIGJl dHRlciBtYWludGFpbmFiaWxpdHkgd2hpbGUgc3RpbGwgYmVpbmcgcHJhY3RpY2FsLg0NCg0NCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NDQpGZWF0dXJlICMxOTU0MTog UHJvcG9zYWw6IEdlbmVyYXRlIGZyYW1lIHVud2luZGluZyBpbmZvIGZvciBZSklUIGNvZGUNDQpo dHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTk1NDEjY2hhbmdlLTEwNTAwMg0NCg0N CiogQXV0aG9yOiBranRzYW5ha3RzaWRpcyAoS0ogVHNhbmFrdHNpZGlzKQ0NCiogU3RhdHVzOiBG ZWVkYmFjaw0NCiogUHJpb3JpdHk6IE5vcm1hbA0NCiogQXNzaWduZWU6IHlqaXQNDQotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0KIyMgV2hhdCBpcyBiZWluZyBwcm9w c2VkPw0NCg0NCkN1cnJlbnRseSwgd2hlbiBSdWJ5IGNyYXNoZXMgd2l0aCB5aml0IGdlbmVyYXRl ZCBjb2RlIG9uIHRoZSBzdGFjaywgYHJiX3ByaW50X2JhY2t0cmFjZSgpYCBpcyB1bmFibGUgdG8g YWN0dWFsbHkgc2hvdyBhbnkgZnJhbWVzIHVuZGVybmVhdGggdGhlIHlqaXQgY29kZS4gRm9yIGV4 YW1wbGUsIGlmIHlvdSBzZW5kIFNJR1NFR1YgdG8gYSBSdWJ5IHByb2Nlc3MgcnVubmluZyB5aml0 LCB0aGlzIGlzIHdoYXQgeW91IHNlZToNDQoNDQpgYGANDQovcnVieS9taW5pcnVieShyYl9wcmlu dF9iYWNrdHJhY2UrMHhjKSBbMHhhYWFhZDAyNzY4ODRdIC9ydWJ5L3ZtX2R1bXAuYzo3ODUNDQov cnVieS9taW5pcnVieShyYl92bV9idWdyZXBvcnQpIC9ydWJ5L3ZtX2R1bXAuYzoxMDkzDQ0KL3J1 YnkvbWluaXJ1YnkocmJfYnVnX2Zvcl9mYXRhbF9zaWduYWwrMHhkMCkgWzB4YWFhYWQwMDc1NTgw XSAvcnVieS9lcnJvci5jOjgxMw0NCi9ydWJ5L21pbmlydWJ5KHNpZ3NlZ3YrMHg1YykgWzB4YWFh YWQwMWJlZGFjXSAvcnVieS9zaWduYWwuYzo5MTkNDQpsaW51eC12ZHNvLnNvLjEoX19rZXJuZWxf cnRfc2lncmV0dXJuKzB4MCkgWzB4ZmZmZjkxYTNlOGJjXQ0NCi9ydWJ5L21pbmlydWJ5KG1hcDwo dXNpemUsIHlqaXQ6OmJhY2tlbmQ6OmlyOjpJbnNuKSwgKHVzaXplLCB5aml0OjpiYWNrZW5kOjpp cjo6SW5zbiksIHlqaXQ6OmJhY2tlbmQ6OmlyOjp7aW1wbCMxN306Om5leHRfbWFwcGVkOjp7Y2xv c3VyZV9lbnYjMH0+KzB4OGMpIFsweGFhYWFkMDNiOGIwMF0gL3J1c3RjLzg5N2UzNzU1M2JiYThi NDI3NTFjNjc2NTg5Njc4ODlkMTFlY2QxMjAvbGlicmFyeS9jb3JlL3NyYy9vcHRpb24ucnM6OTI5 DQ0KL3J1YnkvbWluaXJ1YnkobmV4dF9tYXBwZWQrMHgzYykgWzB4YWFhYWQwMjkxZGMwXSBzcmMv YmFja2VuZC9pci5yczoxMjI1DQ0KL3J1YnkvbWluaXJ1YnkoYXJtNjRfc3BsaXQrMHgxMTQpIFsw eGFhYWFkMDI4Nzc0NF0gc3JjL2JhY2tlbmQvYXJtNjQvbW9kLnJzOjM1OQ0NCi9ydWJ5L21pbmly dWJ5KGNvbXBpbGVfd2l0aF9yZWdzKzB4ODApIFsweGFhYWFkMDI4YmY4NF0gc3JjL2JhY2tlbmQv YXJtNjQvbW9kLnJzOjExMDYNDQovcnVieS9taW5pcnVieShjb21waWxlKzB4YzQpIFsweGFhYWFk MDI5MWFlMF0gc3JjL2JhY2tlbmQvaXIucnM6MTE1OA0NCi9ydWJ5L21pbmlydWJ5KGdlbl9zaW5n bGVfYmxvY2srMHhlNDQpIFsweGFhYWFkMDJiMWY4OF0gc3JjL2NvZGVnZW4ucnM6ODU0DQ0KL3J1 YnkvbWluaXJ1YnkoZ2VuX2Jsb2NrX3Nlcmllc19ib2R5KzB4OWMpIFsweGFhYWFkMDNiMDI1MF0g c3JjL2NvcmUucnM6MTY5OA0NCi9ydWJ5L21pbmlydWJ5KGdlbl9ibG9ja19zZXJpZXMrMHg1MCkg WzB4YWFhYWQwM2IwMTAwXSBzcmMvY29yZS5yczoxNjc2DQ0KL3J1YnkvbWluaXJ1YnkoYnJhbmNo X3N0dWJfaGl0X2JvZHkrMHg4MGMpIFsweGFhYWFkMDNiMWY2OF0gc3JjL2NvcmUucnM6MjAyMQ0N Ci9ydWJ5L21pbmlydWJ5KHtjbG9zdXJlIzB9KzB4MjgpIFsweGFhYWFkMDJlYjg2Y10gc3JjL2Nv cmUucnM6MTkyNA0NCi9ydWJ5L21pbmlydWJ5KGRvX2NhbGw8eWppdDo6Y29yZTo6YnJhbmNoX3N0 dWJfaGl0Ojp7Y2xvc3VyZV9lbnYjMH0sICpjb25zdCB1OD4rMHg5OCkgWzB4YWFhYWQwMzViYTNj XSAvcnVzdGMvODk3ZTM3NTUzYmJhOGI0Mjc1MWM2NzY1ODk2Nzg4OWQxMWVjZDEyMC9saWJyYXJ5 L3N0ZC9zcmMvcGFuaWNraW5nLnJzOjQ5Mg0NClsweGFhYWFkMDM1YzliNF0NDQpgYGANDQoNDQoo bi5iLiAtIEkgY29tcGlsZWQgUnVieSB3aXRoIGAtZmFzeW5jaHJvbm91cy11bndpbmQtdGFibGVz IOKAk3JkeW5hbWljIOKAk2dgIGluIGNmbGFncyB0byBtYWtlIHN1cmUgZ2NjIGdlbmVyYXRlcyBh cHByb3ByaWF0ZSB1bndpbmQgaW5mbyAmIGtlZXBzIHRoZSBzeW1ib2wgdGFibGVzKS4NDQoNDQpM aWtld2lzZSwgaWYgeW91IGF0dGFjaCBnZGIgdG8gYSBSdWJ5IHByb2Nlc3Mgd2l0aCB5aml0IGVu YWJsZWQsIGdkYiBjYW4ndCBzaG93IHRocmVhZCBiYWNrdHJhY2VzIHRocm91Z2ggeWppdC1nZW5l cmF0ZWQgY29kZSBlaXRoZXIuDQ0KDQ0KTXkgcHJvcG9zYWwgaXMgdGhhdCBZSklUIGdlbmVyYXRl IHN1ZmZpY2llbnQgdW53aW5kaW5nIGFuZCBkZWJ1ZyBpbmZvcm1hdGlvbiBvbiBhbGwgcGxhdGZv cm1zIHRvIGFsbG93IGJvdGggYHJiX3ByaW50X2JhY2t0cmFjZSgpYCBhbmQgdGhlIHBsYXRmb3Jt J3MgZGVidWdnZXIgKGdkYi9sbGRiL1dpbkRiZykgdG8gc2hvdzoNDQoNDQoqIEZ1bGwgc3RhY2sg dHJhY2VzIGFsbCB0aGUgd2F5IGJhY2sgdG8gYG1haW5gLiBUaGF0IGlzLCBpdCBzaG91bGQgYmUg cG9zc2libGUgdG8gc2VlIGZyYW1lcyBfdW5kZXJuZWF0aF8gYFsweGFhYWFkMDM1YzliNF1gIGZy b20gdGhlIGJhY2t0cmFjZSBhYm92ZS4NDQoqIE5hbWVzIGZvciB0aGUgZHluYW1pY2FsbHkgZ2Vu ZXJhdGVkIHlqaXQgYmxvY2tzIChlLmcuIGluc3RlYWQgb2YgYFsweGFhYWFkMDM1YzliNF1gLCB3 ZSBzaG91bGQgc2VlIHNvbWV0aGluZyBsaWtlIGB5aml0JCRuYW1lX29mX3J1YnlfbWV0aG9kYCwg d2hlcmUgYG5hbWVfb2ZfcnVieV9tZXRob2RgIGlzIHRoZSBgbGFiZWxgIGZvciB0aGUgaXNlcSB0 aGlzIGlzIEpJVCdkIGNvZGUgZm9yKS4NDQoNDQojIyBNb3RpdmF0aW9uDQ0KDQ0KSSBoYXZlIGEg ZmV3IG1vdGl2YXRpb25zIGZvciB3YW50aW5nIHRoaXMuIEZpcnN0bHksIEkgZmVlbCB0aGlzIGZ1 bmN0aW9uYWxpdHkgaXMgaW5kZXBlbmRlbnRseSB1c2VmdWwuIFdoZW4gUnVieSBjcmFzaGVzLCB0 aGUgbW9yZSBpbmZvcm1hdGlvbiB3ZSBjYW4gZ2V0LCB0aGUgbW9yZSBsaWtlbHkgd2UgYXJlIHRv IGZpbmQgdGhlIHJvb3QgY2F1c2UuIExpa2V3aXNlLCB0aGUgc2FtZSBwcmluY2lwbGUgYXBwbGll cyB0byBkZWJ1Z2dpbmcgd2l0aCBnZGIgLSB5b3UgY2FuIGdldCBhIGZ1bGxlciB1bmRlcnN0YW5k aW5nIG9mIHdoYXQgdGhlIHByb2Nlc3MgaXMgZG9pbmcgaWYgeW91IHNlZSB0aGUgd2hvbGUgc3Rh Y2suDQ0KDQ0KSSBoYXZlIG9mdGVuIGZvdW5kIGF0dGFjaGluZyBnZGIgdG8gdGhlIFJ1YnkgaW50 ZXJwcmV0ZXIgaGVscHMgaW4gdW5kZXJzdGFuZGluZyBwcm9ibGVtcyBpbiBSdWJ5IGNvZGUgb3Ig QyBleHRlbnNpb25zIGFuZCBpcyBzb21ldGhpbmcgSSBkbyByZWxhdGl2ZWx5IGZyZXF1ZW50bHk7 IHlqaXQgYnJlYWtpbmcgdGhhdCB3aWxsIGRlZmluaXRlbHkgYmUgaW5jb252ZW5pZW50IGZvciBt ZSENDQoNDQojIyBJbXBsZW1lbnRhdGlvbg0NCg0NCkkgaGF2ZSBhIGRyYWZ0IGltcGxlbWVudGF0 aW9uIGhlcmUgb24gaG93IEknZCBpbXBsZW1lbnQgdGhpczogaHR0cHM6Ly9naXRodWIuY29tL3J1 YnkvcnVieS9wdWxsLzc1NjcuIEl0J3MgY3VycmVudGx5IG1pc3NpbmcgdGVzdHMgJiBwbGF0Zm9y bSBzdXBwb3J0IChpdCBvbmx5IHdvcmtzIG9uIExpbnV4IGFhcmNoNjQpLiBBbHNvLCBpdCBpbXBs ZW1lbnRzIHVud2luZCBpbmZvIGdlbmVyYXRpb24sIHNvIHVud2luZGluZyBjYW4gd29yayBfdGhy b3VnaF8geWppdCBjb2RlLCBidXQgaXQgZG9lcyBub3QgY3VycmVudGx5IGVtaXQgc3ltYm9scyB0 byBnaXZlIF9uYW1lc18gdG8gdGhvc2UgeWppdCBmcmFtZXMuDQ0KDQ0KTXkgUFIgY29udGFpbnMg YSBkb2N1bWVudCB3aGljaCBleHBsYWlucyBob3cgdGhlIExpbnV4IGludGVyZmFjZXMgZm9yIHJl Z2lzdGVyaW5nIHVud2luZCBpbmZvIGZvciBKSVQnZCBjb2RlIHdvcmssIHNvIEkgd29uJ3QgZHVw bGljYXRlIHRoYXQgaW5mb3JtYXRpb24gaGVyZS4NDQoNDQpUaGUgYmlnZ2VzdCBpbXBsZW1lbnRh dGlvbiBxdWVzdGlvbiBJIGhhZCBpcyBhcm91bmQgdGhlIHVzZSBvZiBSdXN0IGNyYXRlcy4gQ3Vy cmVudGx5LCBJIHByb3RvdHlwZWQgbXkgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIGdpbWxpICYg b2JqZWN0IGNyYXRlcywgZm9yIGdlbmVyYXRpbmcgRFdBUkYgaW5mbyBhbmQgRUxGIGJpbmFyaWVz LiBIb3dldmVyLCB0aGUgeWppdCBidWlsZCBkb2VzIHB1cnBvc2VmdWxseSBkb2VzIG5vdCB1c2Ug Y2FyZ28gJiBleHRlcm5hbCBjcmF0ZXMgZm9yIHJlbGVhc2UgYnVpbGRzLiBUaGVyZSBhcmUgYSBm ZXcgZGlmZmVyZW50IHdheXMgd2UgY291bGQgZ28gaGVyZToNDQoNDQoqIERvbid0IHVzZSB0aGUg Z2ltbGkgJiBvYmplY3QgY3JhdGVzOyBpbnN0ZWFkLCByZS1pbXBsZW1lbnQgYWxsIGRlYnVnIGlu Zm8gJiBvYmplY3QgZmlsZSBnZW5lcmF0aW9uIGNvZGUgaW4geWppdC4NDQoqIERvbid0IHVzZSB0 aGUgY3JhdGVzOyBpbnN0ZWFkLCBsaW5rIGFnYWludCBDIGxpYnJhcmllcyB0byBwcm92aWRlIHRo aXMgZnVuY3Rpb25hbGl0eSAmIGNhbGwgdGhlbSBmcm9tIFJ1c3QgKHBlcmhhcHMgc29tZSBjb21i aW5hdGlvbiBvZiBsaWJlbGYsIGxpYmR3LCBsaWJiZmQsIG9yIGxsdm0gbWlnaHQgZG8gd2hhdCB3 ZSBuZWVkKQ0NCiogVXNlIGNhcmdvIGFmdGVyIGFsbCBmb3IgdGhlIHJlbGVhc2UgYnVpbGQgJiBk b3dubG9hZCB0aGUgY3JhdGVzIGF0IGJ1aWxkLXRpbWUNDQoqIFVzZSBjYXJnbyBmb3IgdGhlIHJl bGVhc2UgYnVpbGQsIGJ1dCB2ZW5kb3IgZXZlcnl0aGluZywgc28gdGhlIGJ1aWxkIGRvZXNuJ3Qg bmVlZCB0byBkb3dubG9hZCBhbnl0aGluZw0NCiogT25seSBtYWtlIHVud2luZCBpbmZvIGdlbmVy YXRpb24gYXZhaWxhYmxlIGluIGRldiBtb2RlIHdoZXJlIGNhcmdvIGlzIHVzZWQsIGFuZCBzbyBt YXJrIHRoZSBnaW1saS9vYmplY3QgZGVwZW5kZW5jaWVzIGFzIG9wdGlvbmFsIGluIENhcmdvLnRv bWwuDQ0KDQ0KV2UnZCBuZWVkIHRvIGRlY2lkZSBvbiBvbmUgb2YgdGhlc2UgYXBwcm9hY2hlcyBm b3IgdGhpcyBwcm9wb3NhbCB0byB3b3JrLiBJIGRvbid0IHJlYWxseSBoYXZlIGEgc3Ryb25nIHNl bnNlIG9mIHRoZSBwcm9zL2NvbnMgb2YgZWFjaC4NDQoNDQooU2lkZSBub3RlIC0gbXkgUFIgYWN0 dWFsbHkgZGVwZW5kcyBvbiBhIF9mb3JrXyBvZiBnaW1saSAtIEkndmUgYmVlbiBkaXNjdXNzaW5n IGFkZGluZyB0aGUgbmVlZGVkIGludGVyZmFjZXMgdXBzdHJlYW0gaGVyZTogaHR0cHM6Ly9naXRo dWIuY29tL2dpbWxpLXJzL2dpbWxpL2lzc3Vlcy82NDgpLg0NCg0NCiMjIEJlbmNobWFya3MNDQoN DQpJIHJhbiB0aGUgeWl0LWJlbmNoIHN1aXRlIG9uIG15IGJyYW5jaCBhbmQgY29tcGFyZWQgaXQg dG8gUnVieSBtYXN0ZXI6DQ0KDQ0KKiBNeSBicmFuY2g6IGh0dHBzOi8vZ2lzdC5naXRodWIuY29t L0tKVHNhbmFrdHNpZGlzLzU3NDFhOWY2NGU1Y2Q3NWNkZjVmZWRkODQ2MDkxYTRmDQ0KKiBSdWJ5 IG1hc3RlcjogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vS0pUc2FuYWt0c2lkaXMvNTkyZDNlYmNm OThmNjc0NWRmYTNlZmJkMzBhMjVhY2YNDQoNDQpUaGlzIGlzIGEgKHZlcnkgc2ltcGxlKSBjb21w YXJpc29uOg0NCg0NCmBgYA0NCi0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLSAtLS0tLS0tLS0t LS0gLS0tLS0tLS0tLS0tLS0tDQ0KYmVuY2ggICAgICAgICAgeWppdCAobXMpICAgIGJyYW5jaCAo bXMpICBicmFuY2gveWppdCAoJSkNDQphY3RpdmVyZWNvcmQgICA5Ny41ICAgICAgICAgOTguNSAg ICAgICAgIDEwMS4wMyUNDQpoZXhhcGRmICAgICAgICAyNDE1LjMgICAgICAgMjQ1OC4yICAgICAg IDEwMS43OCUNDQpsaXF1aWQtYyAgICAgICA2MS45ICAgICAgICAgNjMuMSAgICAgICAgIDEwMS45 NCUNDQpsaXF1aWQtcmVuZGVyICAxMzUuMyAgICAgICAgMTM1LjAgICAgICAgIDk5Ljc4JQ0NCm1h aWwgICAgICAgICAgIDEwNC42ICAgICAgICAxMDUuNSAgICAgICAgMTAwLjg2JQ0NCnBzeWNoLWxv YWQgICAgIDE4ODcuMSAgICAgICAxOTIyLjAgICAgICAgMTAxLjg1JQ0NCnJhaWxzYmVuY2ggICAg IDE1NDQuNCAgICAgICAxNTU2LjAgICAgICAgMTAwLjc1JQ0NCnJ1YnktbHNwICAgICAgIDg4LjQg ICAgICAgICA4OS41ICAgICAgICAgMTAxLjI0JQ0NCnNlcXVlbCAgICAgICAgIDE0Ny41ICAgICAg ICAxNTEuMSAgICAgICAgMTAyLjQ0JQ0NCmJpbmFyeXRyZWVzICAgIDMwMyAgICAgICAgICAzMDUu NiAgICAgICAgMTAwLjg2JQ0NCmNodW5reV9wbmcgICAgIDEwNzUuOCAgICAgICAxMDc5LjQgICAg ICAgMTAwLjMzJQ0NCmVydWJpICAgICAgICAgIDM5Mi45ICAgICAgICAzOTIuMyAgICAgICAgOTku ODUlDQ0KZXJ1YmlfcmFpbHMgICAgMTQuNyAgICAgICAgIDE0LjcgICAgICAgICAxMDAuMDAlDQ0K ZXRhbm5pICAgICAgICAgNzkyLjMgICAgICAgIDc5MS40ICAgICAgICA5OS44OSUNDQpmYW5ua3Vj aHJlZHV4ICAzODE1LjkgICAgICAgMzgxMy42ICAgICAgIDk5Ljk0JQ0NCmxlZSAgICAgICAgICAg IDEwMzAuMiAgICAgICAxMDM5LjIgICAgICAgMTAwLjg3JQ0NCm5ib2R5ICAgICAgICAgIDQ5LjIg ICAgICAgICA0OS4zICAgICAgICAgMTAwLjIwJQ0NCm9wdGNhcnJvdCAgICAgIDQxNDIgICAgICAg ICA0MTQzLjMgICAgICAgMTAwLjAzJQ0NCnJ1YnktanNvbiAgICAgIDI4NjAuNyAgICAgICAyODc0 LjAgICAgICAgMTAwLjQ2JQ0NCnJ1Ynlrb24gICAgICAgIDc5MDYuNiAgICAgICA3OTA0LjIgICAg ICAgOTkuOTclDQ0KMzBrX2lmZWxzZSAgICAgMzQ4LjcgICAgICAgIDM0NS40ICAgICAgICA5OS4w NSUNDQozMGtfbWV0aG9kcyAgICA4MjguNiAgICAgICAgODMxLjggICAgICAgIDEwMC4zOSUNDQpj ZnVuY19pdHNlbGYgICAyOC44ICAgICAgICAgMjguOSAgICAgICAgIDEwMC4zNSUNDQpmaWIgICAg ICAgICAgICAzNC40ICAgICAgICAgMzQuNSAgICAgICAgIDEwMC4yOSUNDQpnZXRpdmFyICAgICAg ICAxMTUuNSAgICAgICAgMTA5LjcgICAgICAgIDk0Ljk4JQ0NCmtleXdvcmRfYXJncyAgIDM3Ljcg ICAgICAgICAzOC4wICAgICAgICAgMTAwLjgwJQ0NCnJlc3BvbmRfdG8gICAgIDI2ICAgICAgICAg ICAyNi4xICAgICAgICAgMTAwLjM4JQ0NCnNldGl2YXIgICAgICAgIDMzLjggICAgICAgICAzMy41 ICAgICAgICAgOTkuMTElDQ0Kc2V0aXZhcl9vYmplY3QgMjA4LjcgICAgICAgIDE5NC4zICAgICAg ICA5My4xMCUNDQpzdHJfY29uY2F0ICAgICA1Mi42ICAgICAgICAgNTIuMiAgICAgICAgIDk5LjI0 JQ0NCnRocm93ICAgICAgICAgIDIzLjggICAgICAgICAyNC4xICAgICAgICAgMTAxLjI2JQ0NCi0t LS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tDQ0K YGBgDQ0KDQ0KSXQgc2VlbXMgbGlrZSB0aGUgcGVyZm9ybWFuY2UgaW1wYWN0IG9mIGdlbmVyYXRp bmcgYW5kIHJlZ2lzdGVyaW5nIHRoZSBkZWJ1ZyBpbmZvIGlzIG1hcmdpbmFsLg0NCg0NCg0NCg0N Ci0tIA0NCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLw0NCiBfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCiBydWJ5LWNvcmUgbWFpbGluZyBsaXN0IC0tIHJ1 YnktY29yZUBtbC5ydWJ5LWxhbmcub3JnCiBUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRv IHJ1YnktY29yZS1sZWF2ZUBtbC5ydWJ5LWxhbmcub3JnCiBydWJ5LWNvcmUgaW5mbyAtLSBodHRw czovL21sLnJ1YnktbGFuZy5vcmcvbWFpbG1hbjMvcG9zdG9yaXVzL2xpc3RzL3J1YnktY29yZS5t bC5ydWJ5LWxhbmcub3JnLw==