[ruby-core:113844] [Ruby master Feature#19057] Hide implementation of `rb_io_t`.
From:
"byroot (Jean Boussier) via ruby-core" <ruby-core@...>
Date:
2023-06-09 08:14:41 UTC
List:
ruby-core #113844
SXNzdWUgIzE5MDU3IGhhcyBiZWVuIHVwZGF0ZWQgYnkgYnlyb290IChKZWFuIEJvdXNzaWVyKS4N DQoNDQoNDQpAaW9xdWF0aXggSSdtIG5vdCBzdXJlIHdoaWNoIGNoYW5nZSBleGFjdGx5IGlzIHRo ZSBjYXVzZSwgYnV0IGl0IGFwcGVhcnMgdGhhdCB0aGUgcmVjZW50IGByYl9pb190YCBjaGFuZ2Vz IGJyb2tlIGByYWluZHJvcHNgDQ0KDQ0KDQ0KYGBgDQ0KY3VycmVudCBkaXJlY3Rvcnk6IC91c3Iv bG9jYWwvbGliL3J1YnkvZ2Vtcy8zLjMuMCswL2dlbXMvcmFpbmRyb3BzLTAuMjAuMS9leHQvcmFp bmRyb3BzDQ0KbWFrZSBERVNURElSXD0gc2l0ZWFyY2hkaXJcPS4vLmdlbS4yMDIzMDYwOS0yNS1n aXVyYzAgc2l0ZWxpYmRpclw9Li8uZ2VtLjIwMjMwNjA5LTI1LWdpdXJjMCBjbGVhbg0NCg0NCmN1 cnJlbnQgZGlyZWN0b3J5OiAvdXNyL2xvY2FsL2xpYi9ydWJ5L2dlbXMvMy4zLjArMC9nZW1zL3Jh aW5kcm9wcy0wLjIwLjEvZXh0L3JhaW5kcm9wcw0NCm1ha2UgREVTVERJUlw9IHNpdGVhcmNoZGly XD0uLy5nZW0uMjAyMzA2MDktMjUtZ2l1cmMwIHNpdGVsaWJkaXJcPS4vLmdlbS4yMDIzMDYwOS0y NS1naXVyYzANDQpjb21waWxpbmcgbGludXhfaW5ldF9kaWFnLmMNDQpJbiBmaWxlIGluY2x1ZGVk IGZyb20gL3Vzci9pbmNsdWRlL3g4Nl82NC1saW51eC1nbnUvYml0cy9saWJjLWhlYWRlci1zdGFy dC5oOjMzLA0NCiAgICAgICAgICAgICAgICAgZnJvbSAvdXNyL2luY2x1ZGUvc3RkaW8uaDoyNywN DQogICAgICAgICAgICAgICAgIGZyb20gL3Vzci9sb2NhbC9pbmNsdWRlL3J1YnktMy4zLjArMC9y dWJ5L2RlZmluZXMuaDoxNiwNDQogICAgICAgICAgICAgICAgIGZyb20gL3Vzci9sb2NhbC9pbmNs dWRlL3J1YnktMy4zLjArMC9ydWJ5L3J1YnkuaDoyNSwNDQogICAgICAgICAgICAgICAgIGZyb20g L3Vzci9sb2NhbC9pbmNsdWRlL3J1YnktMy4zLjArMC9ydWJ5Lmg6MzgsDQ0KICAgICAgICAgICAg ICAgICBmcm9tIGxpbnV4X2luZXRfZGlhZy5jOjE6DQ0KL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmg6 MTg3OjM6IHdhcm5pbmc6ICN3YXJuaW5nICJfQlNEX1NPVVJDRSBhbmQgX1NWSURfU09VUkNFIGFy ZSBkZXByZWNhdGVkLCB1c2UgX0RFRkFVTFRfU09VUkNFIiBbLVdjcHBdDQ0KICAxODcgfCAjIHdh cm5pbmcgIl9CU0RfU09VUkNFIGFuZCBfU1ZJRF9TT1VSQ0UgYXJlIGRlcHJlY2F0ZWQsIHVzZSBf REVGQVVMVF9TT1VSQ0UiDQ0KICAgICAgfCAgIF5+fn5+fn4NDQpJbiBmaWxlIGluY2x1ZGVkIGZy b20gbGludXhfaW5ldF9kaWFnLmM6NDoNDQpteV9maWxlbm8uaDo5Ojc6IHdhcm5pbmc6ICJIQVZF X1JCX0lPX1QiIGlzIG5vdCBkZWZpbmVkLCBldmFsdWF0ZXMgdG8gMCBbLVd1bmRlZl0NDQogICAg OSB8ICNpZiAhIEhBVkVfUkJfSU9fVA0NCiAgICAgIHwgICAgICAgXn5+fn5+fn5+fn5+DQ0KbXlf ZmlsZW5vLmg6MTY6ODogd2FybmluZzogIkhBVkVfUkJfSU9fVCIgaXMgbm90IGRlZmluZWQsIGV2 YWx1YXRlcyB0byAwIFstV3VuZGVmXQ0NCiAgIDE2IHwgIyAgaWYgIUhBVkVfUkJfSU9fVCB8fCAo UlVCWV9WRVJTSU9OX01BSk9SID09IDEgJiYgUlVCWV9WRVJTSU9OX01JTk9SID09IDgpDQ0KICAg ICAgfCAgICAgICAgXn5+fn5+fn5+fn5+DQ0KbXlfZmlsZW5vLmg6IEluIGZ1bmN0aW9uIOKAmG15 X2ZpbGVub+KAmToNDQpteV9maWxlbm8uaDoxMDoxOTogZXJyb3I6IHVua25vd24gdHlwZSBuYW1l IOKAmE9wZW5GaWxl4oCZOyBkaWQgeW91IG1lYW4g4oCYR2V0T3BlbkZpbGXigJk/DQ0KICAgMTAg fCAjICBkZWZpbmUgcmJfaW9fdCBPcGVuRmlsZQ0NCiAgICAgIHwgICAgICAgICAgICAgICAgICAg Xn5+fn5+fn4NDQpteV9maWxlbm8uaDoyNToyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8g 4oCYcmJfaW9fdOKAmQ0NCiAgIDI1IHwgIHJiX2lvX3QgKmZwdHI7DQ0KICAgICAgfCAgXn5+fn5+ fg0NCkluIGZpbGUgaW5jbHVkZWQgZnJvbSBteV9maWxlbm8uaDozLA0NCiAgICAgICAgICAgICAg ICAgZnJvbSBsaW51eF9pbmV0X2RpYWcuYzo0Og0NCi91c3IvbG9jYWwvaW5jbHVkZS9ydWJ5LTMu My4wKzAvcnVieS9pby5oOjM5NTo1NTogd2FybmluZzogYXNzaWdubWVudCB0byDigJhpbnQgKuKA mSBmcm9tIGluY29tcGF0aWJsZSBwb2ludGVyIHR5cGUg4oCYc3RydWN0IHJiX2lvICrigJkgWy1X aW5jb21wYXRpYmxlLXBvaW50ZXItdHlwZXNdDQ0KICAzOTUgfCAjZGVmaW5lIFJCX0lPX1BPSU5U RVIob2JqLGZwKSByYl9pb19jaGVja19jbG9zZWQoKGZwKSA9IFJGSUxFKHJiX2lvX3RhaW50X2No ZWNrKG9iaikpLT5mcHRyKQ0NCiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXg0NCi91c3IvbG9jYWwvaW5jbHVkZS9ydWJ5LTMuMy4w KzAvcnVieS9pby5oOjQwMToyMTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmFJCX0lP X1BPSU5URVLigJkNDQogIDQwMSB8ICNkZWZpbmUgR2V0T3BlbkZpbGUgUkJfSU9fUE9JTlRFUg0N CiAgICAgIHwgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+fn5+DQ0KbXlfZmlsZW5vLmg6 MzA6Mjogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvIOKAmEdldE9wZW5GaWxl4oCZDQ0KICAg MzAgfCAgR2V0T3BlbkZpbGUoaW8sIGZwdHIpOw0NCiAgICAgIHwgIF5+fn5+fn5+fn5+DQ0KL3Vz ci9sb2NhbC9pbmNsdWRlL3J1YnktMy4zLjArMC9ydWJ5L2lvLmg6Mzk1OjU1OiB3YXJuaW5nOiBw YXNzaW5nIGFyZ3VtZW50IDEgb2Yg4oCYcmJfaW9fY2hlY2tfY2xvc2Vk4oCZIGZyb20gaW5jb21w YXRpYmxlIHBvaW50ZXIgdHlwZSBbLVdpbmNvbXBhdGlibGUtcG9pbnRlci10eXBlc10NDQogIDM5 NSB8ICNkZWZpbmUgUkJfSU9fUE9JTlRFUihvYmosZnApIHJiX2lvX2NoZWNrX2Nsb3NlZCgoZnAp ID0gUkZJTEUocmJfaW9fdGFpbnRfY2hlY2sob2JqKSktPmZwdHIpDQ0KICAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfn5+fn5efn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQ0KICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQ0KICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKg0NCi91c3Iv bG9jYWwvaW5jbHVkZS9ydWJ5LTMuMy4wKzAvcnVieS9pby5oOjQwMToyMTogbm90ZTogaW4gZXhw YW5zaW9uIG9mIG1hY3JvIOKAmFJCX0lPX1BPSU5URVLigJkNDQogIDQwMSB8ICNkZWZpbmUgR2V0 T3BlbkZpbGUgUkJfSU9fUE9JTlRFUg0NCiAgICAgIHwgICAgICAgICAgICAgICAgICAgICBefn5+ fn5+fn5+fn5+DQ0KbXlfZmlsZW5vLmg6MzA6Mjogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3Jv IOKAmEdldE9wZW5GaWxl4oCZDQ0KICAgMzAgfCAgR2V0T3BlbkZpbGUoaW8sIGZwdHIpOw0NCiAg ICAgIHwgIF5+fn5+fn5+fn5+DQ0KL3Vzci9sb2NhbC9pbmNsdWRlL3J1YnktMy4zLjArMC9ydWJ5 L2lvLmg6NjM4OjM0OiBub3RlOiBleHBlY3RlZCDigJhyYl9pb190ICrigJkge2FrYSDigJhzdHJ1 Y3QgcmJfaW8gKuKAmX0gYnV0IGFyZ3VtZW50IGlzIG9mIHR5cGUg4oCYaW50ICrigJkNDQogIDYz OCB8IHZvaWQgcmJfaW9fY2hlY2tfY2xvc2VkKHJiX2lvX3QgKmZwdHIpOw0NCiAgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgICAgfn5+fn5+fn5+Xn5+fg0NCkluIGZpbGUgaW5jbHVkZWQgZnJv bSBsaW51eF9pbmV0X2RpYWcuYzo0Og0NCm15X2ZpbGVuby5oOjE3OjQxOiBlcnJvcjogcmVxdWVz dCBmb3IgbWVtYmVyIOKAmGbigJkgaW4gc29tZXRoaW5nIG5vdCBhIHN0cnVjdHVyZSBvciB1bmlv bg0NCiAgIDE3IHwgIyAgICBkZWZpbmUgRlBUUl9UT19GRChmcHRyKSBmaWxlbm8oZnB0ci0+ZikN DQogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefg0NCm15 X2ZpbGVuby5oOjMxOjc6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyDigJhGUFRSX1RPX0ZE 4oCZDQ0KICAgMzEgfCAgZmQgPSBGUFRSX1RPX0ZEKGZwdHIpOw0NCiAgICAgIHwgICAgICAgXn5+ fn5+fn5+fg0NCmxpbnV4X2luZXRfZGlhZy5jOiBBdCB0b3AgbGV2ZWw6DQ0KY2MxOiB3YXJuaW5n OiB1bnJlY29nbml6ZWQgY29tbWFuZCBsaW5lIG9wdGlvbiDigJgtV25vLXNlbGYtYXNzaWdu4oCZ DQ0KY2MxOiB3YXJuaW5nOiB1bnJlY29nbml6ZWQgY29tbWFuZCBsaW5lIG9wdGlvbiDigJgtV25v LXBhcmVudGhlc2VzLWVxdWFsaXR54oCZDQ0KY2MxOiB3YXJuaW5nOiB1bnJlY29nbml6ZWQgY29t bWFuZCBsaW5lIG9wdGlvbiDigJgtV25vLWNvbnN0YW50LWxvZ2ljYWwtb3BlcmFuZOKAmQ0NCm1h a2U6ICoqKiBbTWFrZWZpbGU6MjQ4OiBsaW51eF9pbmV0X2RpYWcub10gRXJyb3IgMQ0NCmBgYA0N Cg0NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NDQpGZWF0dXJlICMx OTA1NzogSGlkZSBpbXBsZW1lbnRhdGlvbiBvZiBgcmJfaW9fdGAuDQ0KaHR0cHM6Ly9idWdzLnJ1 YnktbGFuZy5vcmcvaXNzdWVzLzE5MDU3I2NoYW5nZS0xMDM0OTINDQoNDQoqIEF1dGhvcjogaW9x dWF0aXggKFNhbXVlbCBXaWxsaWFtcykNDQoqIFN0YXR1czogQXNzaWduZWQNDQoqIFByaW9yaXR5 OiBOb3JtYWwNDQoqIEFzc2lnbmVlOiBpb3F1YXRpeCAoU2FtdWVsIFdpbGxpYW1zKQ0NCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NDQpJbiBvcmRlciB0byBtYWtlIGlt cHJvdmVtZW50cyB0byB0aGUgSU8gaW1wbGVtZW50YXRpb24gbGlrZSA8aHR0cHM6Ly9idWdzLnJ1 YnktbGFuZy5vcmcvaXNzdWVzLzE4NDU1Piwgd2UgbmVlZCB0byBhZGQgbmV3IGZpZWxkcyB0byBg c3RydWN0IHJiX2lvX3RgLg0NCg0NCkJ5IHRoZSB3YXksIGVuZGluZyB0eXBlcyBpbiBgX3RgIGlz IG5vdCByZWNvbW1lbmRlZCBieSBQT1NJWCwgc28gSSdtIGFsc28gdHJ5aW5nIHRvIHJlbmFtZSB0 aGUgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gdG8gZHJvcCBgX3RgIHdoZXJlIHBvc3NpYmxlIGR1 cmluZyB0aGlzIGNvbnZlcnNpb24uDQ0KDQ0KQW55d2F5LCB3ZSBzaG91bGQgdHJ5IHRvIGhpZGUg dGhlIGltcGxlbWVudGF0aW9uIG9mIGBzdHJ1Y3QgcmJfaW9gLiBJZGVhbGx5LCB3ZSBkb24ndCBl eHBvc2UgYW55IG9mIGl0LCBidXQgdGhlIHByb2JsZW0gaXMgYmFja3dhcmRzIGNvbXBhdGliaWxp dHkuDQ0KDQ0KU28sIGluIG9yZGVyIHRvIHJlbWFpbiBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwg d2Ugc2hvdWxkIGV4cG9zZSBzb21lIGZpZWxkcyBvZiBgc3RydWN0IHJiX2lvYCwgdGhlIG1vc3Qg Y29tbW9ubHkgdXNlZCBvbmUgaXMgYGZkYCBhbmQgYG1vZGVgLCBidXQgc2V2ZXJhbCBvdGhlcnMg YXJlIGNvbW1vbmx5IHVzZWQuDQ0KDQ0KVGhlcmUgYXJlIG1hbnkgZmllbGRzIHdoaWNoIHNob3Vs ZCBub3QgYmUgZXhwb3NlZCBiZWNhdXNlIHRoZXkgYXJlIGltcGxlbWVudGF0aW9uIGRldGFpbHMu DQ0KDQ0KIyMgQ3VycmVudCBwcm9wb3NhbA0NCg0NClRoZSBjdXJyZW50IHByb3Bvc2VkIGNoYW5n ZSA8aHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9wdWxsLzY1MTE+IGNyZWF0ZXMgdHdvIHN0 cnVjdHM6DQ0KDQ0KYGBgYw0NCi8vIGluY2x1ZGUvcnVieS9pby5oDQ0KI2lmbmRlZiBSQl9JT19U DQ0Kc3RydWN0IHJiX2lvIHsNDQogIGludCBmZDsNDQogIC8vIC4uLiBwdWJsaWMgZmllbGRzIC4u Lg0NCn07DQ0KI2Vsc2UNDQpzdHJ1Y3QgcmJfaW87DQ0KI2VuZGlmDQ0KDQ0KLy8gaW50ZXJuYWwv aW8uaA0NCiNkZWZpbmUgUkJfSU9fVA0NCnN0cnVjdCByYl9pbyB7DQ0KICBpbnQgZmQ7DQ0KICAv LyAuLi4gcHVibGljIGZpZWxkcyAuLi4NDQogIC8vIC4uLiBwcml2YXRlIGZpZWxkcyAuLi4NDQp9 Ow0NCmBgYA0NCg0NCkhvd2V2ZXIsIHdlIGFyZSBub3QgMTAwJSBjb25maWRlbnQgdGhpcyBpcyBz YWZlIGFjY29yZGluZyB0byB0aGUgQyBzcGVjaWZpY2F0aW9uLiBNeSBleHBlcmllbmNlIGlzIG5v dCBzdWZmaWNpZW50bHkgd2lkZSB0byBzYXkgdGhpcyBpcyBzYWZlIGluIHByYWN0aWNlLCBidXQg aXQgZG9lcyBsb29rIG9rYXkgdG8gYm90aCBteXNlbGYsIGFuZCBARXJlZ29uICsgQHRlbmRlcmxv dmVtYWtpbmcgaGF2ZSBib3RoIGdpdmVuIHNvbWUga2luZCBvZiBhcHByb3ZhbC4NDQoNDQpUaGF0 IGJlaW5nIHNhaWQsIG1heWJlIGl0J3Mgbm90IHNhZmUuDQ0KDQ0KVGhlcmUgYXJlIHR3byBhbHRl cm5hdGl2ZXM6DQ0KDQ0KIyMgSGlkZSBhbGwgZGV0YWlscw0NCg0NCldlIGNhbiBtYWtlIHB1Ymxp YyBgc3RydWN0IHJiX2lvYCBjb21wbGV0ZWx5IGludmlzaWJsZS4NDQoNDQpgYGBjDQ0KLy8gaW5j bHVkZS9ydWJ5L2lvLmgNDQojZGVmaW5lIFJCX0lPX0hJRERFTg0NCnN0cnVjdCByYl9pbzsNDQpp bnQgcmJfaW9wdHJfZGVzY3JpcHRvcihzdHJ1Y3QgcmJfaW8gKmlvcHRyKTsgLy8gYWNjZXNzb3Ig Zm9yIHByZXZpb3VzbHkgdmlzaWJsZSBzdGF0ZS4NDQoNDQovLyBpbnRlcm5hbC9pby5oDQ0Kc3Ry dWN0IHJiX2lvIHsNDQogIC8vIC4uLiBhbGwgZmllbGRzIC4uLg0NCn07DQ0KYGBgDQ0KDQ0KVGhp cyB3b3VsZCBvbmx5IGJlIGZvcndhcmRzIGNvbXBhdGlibGUsIGFuZCBjb2RlIHdvdWxkIG5lZWQg dG8gZmVhdHVyZSBkZXRlY3QgbGlrZSB0aGlzOg0NCg0NCmBgYGMNDQojaWZkZWYgUkJfSU9fSElE REVODQ0KI2RlZmluZSBSQl9JT1BUUl9ERVNDUklQVE9SIHJiX2lvcHRyX2Rlc2NyaXB0b3INDQoj ZWxzZQ0NCiNkZWZpbmUgUkJfSU9QVFJfREVTQ1JJUFRPUihpb3B0cikgcmJfaW9wdHJfZGVzY3Jp cHRvcihpb3B0cikNDQojZW5kaWYNDQpgYGANDQoNDQojIyBOZXN0ZWQgcHVibGljIGludGVyZmFj ZQ0NCg0NCkFsdGVybmF0aXZlbHksIHdlIGNhbiBuZXN0IHRoZSBwdWJsaWMgZmllbGRzIGludG8g dGhlIHByaXZhdGUgc3RydWN0Og0NCg0NCmBgYGMNDQovLyBpbmNsdWRlL3J1YnkvaW8uaA0NCnN0 cnVjdCByYl9pb19wdWJsaWMgew0NCiAgaW50IGZkOw0NCiAgLy8gLi4uIHB1YmxpYyBmaWVsZHMg Li4uDQ0KfTsNDQoNDQovLyBpbnRlcm5hbC9pby5oDQ0KI2RlZmluZSBSQl9JT19UDQ0Kc3RydWN0 IHJiX2lvIHsNDQogIHN0cnVjdCByYl9pb19wdWJsaWMgcHVibGljOw0NCiAgLy8gLi4uIHByaXZh dGUgZmllbGRzIC4uLg0NCn07DQ0KYGBgDQ0KDQ0KIyMgQ29uc2lkZXJhdGlvbnMNDQoNDQpJIHBl cnNvbmFsbHkgdGhpbmsgdGhlICJIaWRlIGFsbCBkZXRhaWxzIiBpbXBsZW1lbnRhdGlvbiBpcyB0 aGUgYmVzdCwgYnV0IGl0J3MgYWxzbyB0aGUgbGVzdCBjb21wYXRpYmxlLiBUaGlzIGlzIGFsc28g d2hhdCB3ZSBhcmUgdWx0aW1hdGVseSBhaW1pbmcgZm9yLCB3aGV0aGVyIHdlIGRlY2lkZSB0byB0 YWtlIGFuIGludGVybWVkaWF0ZSAiY29tcGF0aWJpbGl0eSBzdGVwIiBpcyB1cCB0byB1cy4NDQoN DQpJIHRoaW5rICJOZXN0ZWQgcHVibGljIGludGVyZmFjZSIgaXMgbWVzc3kgYW5kIGludHJvZHVj ZXMgbW9yZSBjb21wbGV4aXR5LCBidXQgaXQgbWlnaHQgYmUgc2xpZ2h0bHkgYmV0dGVyIGRlZmlu ZWQgdGhhbiB0aGUgIkN1cnJlbnQgcHJvcG9zYWwiIHdoaWNoIG1pZ2h0IGNyZWF0ZSB1bmRlZmlu ZWQgYmVoYXZpb3VyLiBUaGF0IGJlaW5nIHNhaWQsIGFsbCB0aGUgdGVzdHMgYXJlIHBhc3Npbmcu DQ0KDQ0KDQ0KDQ0KDQ0KDQ0KLS0gDQ0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvDQ0KIF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KIHJ1YnktY29yZSBt YWlsaW5nIGxpc3QgLS0gcnVieS1jb3JlQG1sLnJ1YnktbGFuZy5vcmcKIFRvIHVuc3Vic2NyaWJl IHNlbmQgYW4gZW1haWwgdG8gcnVieS1jb3JlLWxlYXZlQG1sLnJ1YnktbGFuZy5vcmcKIHJ1Ynkt Y29yZSBpbmZvIC0tIGh0dHBzOi8vbWwucnVieS1sYW5nLm9yZy9tYWlsbWFuMy9wb3N0b3JpdXMv bGlzdHMvcnVieS1jb3JlLm1sLnJ1YnktbGFuZy5vcmcv