[ruby-core:110108] [Ruby master Feature#19024] Proposal: Import Modules
From:
"austin (Austin Ziegler)" <noreply@...>
Date:
2022-09-27 14:36:13 UTC
List:
ruby-core #110108
SXNzdWUgIzE5MDI0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgYXVzdGluIChBdXN0aW4gWmllZ2xlciku DQoNCg0Kc2hpb3lhbWEgKENocmlzIFNhbHpiZXJnKSB3cm90ZSBpbiAjbm90ZS00Og0KPiA+IElu dHVpdGl2ZWx5LCB0aGlzIHByb3Bvc2FsIGNoYW5nZXMgdGhlIHdheSBSdWJ5IHdvcmtzIGluIGEg d2F5IHRoYXQgSSBiZWxpZXZlIGhhcyB0b28gbWFueSByYW1pZmljYXRpb25zIGFuZCBlZGdlIGNh c2VzLiBBbHNvLCBpdCBkZWxlZ2F0ZXMgY29udHJvbCB0byB0aGUgY2FsbGVyLCByYXRoZXIgdGhh biB0byB0aGUgc3ViamVjdCAodGhlIGNvZGUgYmVpbmcgbG9hZGVkKS4NCj4gDQo+IEknbSBhY3R1 YWxseSB0cnlpbmcgdG8gY2hhbmdlIFJ1YnkgX2FzIGxpdHRsZSBhcyBwb3NzaWJsZV8gdG8gbWFr ZSB0aGlzIGhhcHBlbi4gYGxvYWRgIHdpdGggdGhlIGB3cmFwYCBvcHRpb24gYWxyZWFkeSBkb2Vz IHNvbWUgb2YgdGhpcywgYW5kIGRlbGVnYXRlcyBjb250cm9sIHRvIHRoZSBjYWxsZXIsIHNvIHRo aXMgaXMgbm90IGV4YWN0bHkgbmV3Lg0KDQpTcGVha2luZyBhcyBhIGdlbSBtYWludGFpbmVyLCBJ IGRvbuKAmXQgc2VlIHRoaXMgYXMgYSBtaW5vciBjaGFuZ2UsIGFuZCBJIHRoaW5rIHRoYXQgaXQg aGFzIGZhciBtb3JlIG5lZ2F0aXZlcyB0aGFuIGFuIGV4cGxpY2l0IG5ldyBjb25zdHJ1Y3QgKHBh Y2thZ2VzLCBib3VuZGFyaWVzLCB3aGF0ZXZlcikgd291bGQuDQoNCj4gQW5kIHRvIG1lLCBkZWxl Z2F0aW5nIGNvbnRyb2wgdG8gdGhlIGNhbGxlciBpcyBuYXR1cmFsLiBUaGUgcHJvYmxlbSB3aXRo IGByZXF1aXJlYCBpcyBleGFjdGx5IHRoYXQgdGhlIGNhbGxlciBfbG9zZXNfIGNvbnRyb2wsIHJl c3VsdGluZyBpbiBjYWxsZWQgY29kZSBiZWluZyBhYmxlIHRvICJwYXJrIiBpdHNlbGYgd2hlcmV2 ZXIgaXQgbGlrZXMuIFRoaXMgaXMgd2h5IGV2ZXJ5IGdlbSBoYXMgdG8gYmUgYSBnb29kIGNpdGl6 ZW4gYW5kIGtlZXAgaXRzIGNvZGUgaW4gb25lIG5hbWVzcGFjZS4NCg0KRGVsZWdhdGluZyBjb250 cm9sIHRvIHRoZSBjYWxsZXIgaXMgZ29pbmcgdG8gYmUgYSBzb3VyY2Ugb2YgbG90cyBvZiBgI1dP TlRGSVhgIGJ1Z3Mgb24gYSBsb3Qgb2YgZ2VtcyBpZiB0aGV5IGNhbiBiZSBgaW1wb3J0ZWRgIHRo ZSB3YXkgdGhhdCB5b3XigJlyZSB0YWxraW5nIGFib3V0LiBUaGUgZ2VtcyB0aGF0IEkgaGF2ZSB3 cml0dGVuIGFyZSAobW9zdGx5KSBzZWxmLWNvbnRhaW5lZCwgYnV0IHNvbWUgKmRvKiBpbmNsdWRl IG9wdGlvbnMgdG8gbW9ua2V5IHBhdGNoIGNvcmUgY2xhc3Nlcy4gR2l2ZW4gdGhhdCB0aGUgKm9w ZXJhdGluZyogZW52aXJvbm1lbnQgd2lsbCBiZSBkaWZmZXJlbnQgdW5kZXIgYW4gYGltcG9ydGAg YXMgeW914oCZdmUgZGVzY3JpYmVkIGl0LCBJIGNhbm5vdCBwb3NzaWJseSBzdXBwb3J0IHRob3Nl IHVzZXMgYW5kIHdvdWxkIGNsb3NlIHN1Y2ggYnVncyBhcyBgI1dPTlRGSVhgLg0KDQpPbiB0aGUg b3RoZXIgaGFuZCwgSSBjb3VsZCBhYnNvbHV0ZWx5IHNlZSBidWlsZGluZyBnZW1zIHRoYXQgKm9w dCBpbnRvKiBhIHBhY2thZ2Ugc3lzdGVtIHRvIHByb3ZpZGUgb3B0aW9uYWwgYm91bmRhcmllcywg YW5kIGJ1aWxkaW5nIHRoaW5ncyB0aGF0IHdheSB3b3VsZCBhbGxvdyBtZSB0byBvcHQgaW50byB0 aGUgbW9yZSBjb21wbGV4IHN1cHBvcnQgcmVxdWlyZW1lbnRzIHRoYXQgd291bGQgZW50YWlsLg0K DQo+ID4gU2luY2UgdGhlIHByb2JsZW0gdGhlIHByb3Bvc2FsIHdhbnRzIHRvIGFkZHJlc3MgaXMg YWNjZXNzIG9mIGNvbnN0YW50cyBjcm9zcy1wYWNrYWdlcywgSSB3b25kZXIgaWYgYW4gYXBwcm9h Y2ggdGhhdCB3b3VsZCBiZSBtb3JlIGFsaWduZWQgd2l0aCBSdWJ5IHdvdWxkIGJlIHRvIGludHJv ZHVjZSBhICJwYWNrYWdlIiB2aXNpYmlsaXR5IGtleXdvcmQuDQo+IA0KPiBUbyBiZSBjbGVhciwg Y29udHJvbGxpbmcgY3Jvc3MtcGFja2FnZSBhY2Nlc3MgaXMgYSBwb3NpdGl2ZSBvdXRjb21lIG9m IHdyYXBwaW5nIGxvYWRlZCBjb2RlIGluIGEgbmFtZXNwYWNlLCBub3QgdGhlIChvbmx5KSBnb2Fs IG9mIHRoaXMgcHJvcG9zYWwgaW4gYW5kIG9mIGl0c2VsZi4gTmFtZXNwYWNpbmcgaGFzIGFkdmFu dGFnZXMgb2YgaXRzIG93biBvdXRzaWRlIG9mIGJvdW5kYXJ5IGRlZmluaXRpb24gYWxvbmUuDQoN CkkgZG9u4oCZdCBzZWUgYW55IHZhbHVlIGluIG5hbWVzcGFjaW5nIGJleW9uZCB3aGF0IFJ1Ynkg aGFzIHRocm91Z2ggbW9kdWxlcyBhbmQgY2xhc3Nlcy4gSSBjZXJ0YWlubHkgZG9u4oCZdCBzZWUg YW55IHZhbHVlIGluIHRoZSBhYmlsaXR5IHRvIGxvYWQgbW9yZSB0aGFuIG9uZSB2ZXJzaW9uIG9m IGEgcGllY2Ugb2YgY29kZSBhdCBhIHRpbWUgdW5kZXIgYSBkaWZmZXJlbnQgbmFtZXNwYWNlICh0 aGlzIGlzLCBJTU8sIG9uZSBvZiB0aGUgKndvcnN0KiBwYXJ0cyBvZiBKYXZhU2NyaXB0KS4NCg0K PiA+IHRoZXJlIGFyZSB3YXkgdG9vIG1hbnkgZWRnZSBjYXNlcyBmb3IgbG9hZGluZyBleGlzdGlu ZyBjb2RlIGluIGFuIGlzb2xhdGVkIHdheSBsaWtlIHRoaXMuIEkgbWlnaHQgd29yayBmb3Igc29t ZSwgbWF5YmUgZXZlbiBtb3N0IHBhY2thZ2VzLCBidXQgdWx0aW1hdGVseSBpdCB3aWxsIGNlcnRh aW5seSByZXF1aXJlIGNvb3BlcmF0aW9uIGZyb20gdGhlIHBhY2thZ2VzLCBzbyBtaWdodCBhcyB3 ZWxsIG9mZmVyIGEgcHJvcGVyIGNvbnN0cnVjdCBmb3IgaXQuDQo+IA0KPiBXb3VsZG4ndCBpdCBt YWtlIHNlbnNlIHRvIGZpcnN0IGRldGVybWluZSB3aGF0IHRob3NlIGVkZ2UgY2FzZXMgYXJlPyBJ IGZlZWwgbGlrZSB3ZSdyZSBpbW1lZGlhdGVseSBqdW1waW5nIHRvIHRoZSBjb25jbHVzaW9uIHRo YXQgInRoaXMgaXMgaGFyZCwgc28gbGV0J3MgZG8gdGhpcyBvdGhlciB0aGluZyBpbnN0ZWFkIiBi ZWZvcmUgd2UgaGF2ZSBkZXRlcm1pbmVkIGlmIGl0IHJlYWxseSBpcyB0aGF0IGhhcmQgdG8gZG8u DQoNCkkgaGF2ZSB0byB1bHRpbWF0ZWx5IGFncmVlIHdpdGggSmVyZW15IEV2YW5zIHRoYXQgSSB0 aGluayB0aGF0IG1ha2luZyB0aGUgd3JhcHBpbmcgKnRyYW5zaXRpdmUqIGlzIHRoZSB3cm9uZyB0 aGluZy4gWW914oCZcmUgcHV0dGluZyBtYWludGVuYW5jZSBidXJkZW5zIG9uIGNvdW50bGVzcyB0 aGlyZC1wYXJ0eSBkZXZlbG9wZXJzIHZpYSB0aGVpciBnZW1zIG9uIHNvbWV0aGluZyB0aGF0IG9u bHkgaGVscHMgYSBzbWFsbCBzdWJzZXQgb2YgUnVieSBkZXZlbG9wZXJzIHdpdGggc29tZSBvZiB0 aGVpciBsYXJnZSBhcHBsaWNhdGlvbnMuDQoNCkZyb20gYSBsaWJyYXJ5IGF1dGhvciBwZXJzcGVj dGl2ZSwgSSB3b3VsZCBzdXBwb3J0IHRoZSBjb25jZXB0IG9mIGEgYHBhY2thZ2VfY29uc3RhbnRg IChzaW1pbGFyIHRvIGBwcml2YXRlX2NvbnN0YW50YCBleGNlcHQgdGhhdCBpdCBsb29rcyBhdCB0 aGUgY2FsbGVy4oCZcyBvcmlnaW4gdHJlZSkgYW5kIGBwYWNrYWdlYCB2aXNpYmlsaXR5IGZvciBt ZXRob2RzLCBiZWNhdXNlIEkgY291bGQgdGhlbiBvcHQgaW50byB0aG9zZS4gV2l0aCBgaW1wb3J0 YCBjcm9zc2luZyBnZW0gYm91bmRhcmllcywgdGhlIGxpYnJhcnkgYXV0aG9yIGdldHMgbm8gb3B0 aW9uIHRvIG9wdCBvdXQgKHVubGVzcyB5b3UgYWxsb3cgc29tZXRoaW5nIGxpa2UgYSBgbm9uX2lt cG9ydGFibGVgIGRlY2xhcmF0aW9uKS4NCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KRmVhdHVyZSAjMTkwMjQ6IFByb3Bvc2FsOiBJbXBvcnQgTW9kdWxlcw0KaHR0 cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE5MDI0I2NoYW5nZS05OTM2Ng0KDQoqIEF1 dGhvcjogc2hpb3lhbWEgKENocmlzIFNhbHpiZXJnKQ0KKiBTdGF0dXM6IE9wZW4NCiogUHJpb3Jp dHk6IE5vcm1hbA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KVGhl cmUgaXMgbm8gZ2VuZXJhbCB3YXkgaW4gUnVieSB0byBsb2FkIGNvZGUgb3V0c2lkZSBvZiB0aGUg Z2xvYmFsbHktc2hhcmVkIG5hbWVzcGFjZS4gVGhpcyBtYWtlcyBpdCBoYXJkIHRvIGlzb2xhdGUg Y29tcG9uZW50cyBvZiBhbiBhcHBsaWNhdGlvbiBmcm9tIGVhY2ggb3RoZXIgYW5kIGZyb20gdGhl IGFwcGxpY2F0aW9uIGl0c2VsZiwgbGVhZGluZyB0byBjb21wbGljYXRlZCByZWxhdGlvbnNoaXBz IHRoYXQgY2FuIGJlY29tZSBpbnRyYWN0YWJsZSBhcyBhcHBsaWNhdGlvbnMgZ3JvdyBpbiBzaXpl Lg0KDQpUaGUgZ3Jvd2luZyBwb3B1bGFyaXR5IG9mIGEgZ2VtIGxpa2UgW1BhY2t3ZXJrXShodHRw czovL2dpdGh1Yi5jb20vc2hvcGlmeS9wYWNrd2VyayksIHdoaWNoIHByb3ZpZGVzIGEgbmV3IGNv bmNlcHQgb2YgInBhY2thZ2UiIHRvIGVuZm9jZSBib3VuZGFyaWVzIHN0YXRpY2FsbHkgaW4gQ0ks IGlzIGV2aWRlbmNlIHRoYXQgdGhpcyBpcyBhIHJlYWwgcHJvYmxlbS4gQnV0IGludHJvZHVjaW5n IGEgbmV3IHBhY2thZ2luZyBjb25jZXB0IGFuZCBDSSBzdGVwIGlzIGF0IGJlc3Qgb25seSBhIHBh cnRpYWwgc29sdXRpb24sIHdpdGggZG93bnNpZGVzOiBpdCBhZGRzIGNvbXBsZXhpdHkgYW5kIGNv Z25pdGl2ZSBvdmVyaGVhZCB0aGF0IHdvdWxkbid0IGJlIG5lY2Vzc2FyeSBpZiBSdWJ5IHByb3Zp ZGVkIGJldHRlciBwYWNrYWdpbmcgaXRzZWxmIChhcyBNYXR6IGhhcyBzdWdnZXN0ZWQgW2l0IHNo b3VsZF0oaHR0cHM6Ly95b3V0dS5iZS9EcDEyYTNLR05Gdz90PTI5NTYpKS4NCg0KVGhlcmUgaXMg X29uZV8gbGltaXRlZCB3YXkgaW4gUnVieSBjdXJyZW50bHkgdG8gbG9hZCBjb2RlIHdpdGhvdXQg cG9sbHV0aW5nIHRoZSBnbG9iYWwgbmFtZXNwYWNlOiBgbG9hZGAgd2l0aCB0aGUgYHdyYXBgIHBh cmFtZXRlciwgd2hpY2ggYXMgb2YgaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzYy MTAgY2FuIG5vdyBiZSBhIG1vZHVsZS4gSG93ZXZlciwgdGhpcyBvcHRpb24gZG9lcyBub3QgYXBw bHkgdHJhbnNpdGl2ZWx5IHRvIGByZXF1aXJlYCBjYWxscyB3aXRoaW4gdGhlIGxvYWRlZCBmaWxl LCBzbyBpdHMgdXNlZnVsbmVzcyBpcyBsaW1pdGVkLg0KDQpNeSBwcm9wb3NhbCBoZXJlIGlzIHRv IGVuYWJsZSBtb2R1bGUgaW1wb3J0cyBieSBkb2luZyB0aGUgZm9sbG93aW5nOg0KDQoxLiBhcHBs eSB0aGUgYHdyYXBgIG1vZHVsZSBuYW1lc3BhY2UgdHJhbnNpdGl2ZWx5IHRvIGByZXF1aXJlYHMg aW5zaWRlIHRoZSBsb2FkZWQgY29kZSwgaW5jbHVkaW5nIG5hdGl2ZSBleHRlbnNpb25zIChvciBw cm92aWRlIGEgbmV3IGZsYWcgb3IgbWV0aG9kIHRoYXQgd291bGQgZG8gdGhpcyksDQoyLiBtYWtl IHRoZSBgd3JhcGAgbW9kdWxlIHRoZSB0b3BsZXZlbCBjb250ZXh0IGZvciBjb2RlIGxvYWRlZCB1 bmRlciBpdCwgc28gYDo6Rm9vYCByZXNvbHZlcyB0byBgPHRvcF93cmFwcGVyPjo6Rm9vYCBpbiBs b2FkZWQgY29kZSAob3IsIGFnYWluLCBwcm92aWRlIGEgbmV3IGZsYWcgb3IgbWV0aG9kIHRoYXQg d291bGQgZG8gdGhpcykuIF9BbHNvIG1ha2UgdGhpcyBhcHBseSB3aGVuIGNvZGUgdW5kZXIgdGhl IHdyYXBwZXIgbW9kdWxlIGlzIGNhbGxlZCBvdXRzaWRlIG9mIHRoZSBsb2FkIHByb2Nlc3MgKHdo ZW4gYHRvcF93cmFwcGVyYCBpcyBubyBsb25nZXIgc2V0KSAmbWRhc2g7IHRoaXMgbWF5IGJlIHF1 aXRlIGhhcmQgdG8gZG9fLg0KMy4gcmVzb2x2ZSBgbmFtZWAgb24gYW5vbnltb3VzIG1vZHVsZXMg dW5kZXIgdGhlIHdyYXBwZWQgbW9kdWxlIHRvIHRoZWlyIG5hbWVzIHdpdGhvdXQgdGhlIHRvcCB3 cmFwcGVyIG1vZHVsZSwgc28gYDx0b3Bfd3JhcHBlcj46OkZvby5uYW1lYCBldmFsdWF0ZXMgdG8g YCJGb28iYC4gVGhlcmUgbWF5IGJlIG90aGVyIHdheXMgdG8gaGFuZGxlIHRoaXMgcHJvYmxlbSwg YnV0IGEgZ2VtIGxpa2UgUmFpbHMgdXNlcyBgbmFtZWAgdG8gcmVzb2x2ZSBmaWxlbmFtZXMgYW5k IGZhaWxzIHdoZW4gYW5vbnltb3VzIG1vZHVsZXMgcmV0dXJuIHNvbWV0aGluZyBsaWtlIGAjPE1v ZHVsZTogLi4uPjo6QWN0aXZlUmVjb3JkYCBpbnN0ZWFkIG9mIGp1c3QgYEFjdGl2ZVJlY29yZGAu DQoNCkkgaGF2ZSByb3VnaGx5IGltcGxlbWVudGVkIHRoZXNlIHRocmVlIHRoaW5ncyBpbiBbdGhp cyBwYXRjaF0oaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9jb21wYXJlL21hc3Rlci4uLnNo aW95YW1hOnJ1Ynk6aW1wb3J0X21vZHVsZXMpLiBUaGlzIGltcGxlbWVudGF0aW9uIGlzIGluY29t cGxldGUgKGl0IGRvZXMgbm90IGNvdmVyIHRoZSBsYXN0IGhpZ2hsaWdodGVkIHBhcnQgb2YgMikg YnV0IHByb3ZpZGVzIGVub3VnaCBvZiBhIGJhc2lzIHRvIGltcGxlbWVudCBhbiBgaW1wb3J0YCBt ZXRob2QsIHdoaWNoIEkgaGF2ZSBkb25lIGluIGEgZ2VtIGNhbGxlZCBbSW1dKGh0dHBzOi8vZ2l0 aHViLmNvbS9zaGlveWFtYS9pbSkuDQoNCkltIHByb3ZpZGVzIGFuIGBpbXBvcnRgIG1ldGhvZCB3 aGljaCBjYW4gYmUgdXNlZCB0byBpbXBvcnQgZ2VtIGNvZGUgdW5kZXIgYSBuYW1lc3BhY2U6DQoN CmBgYHJ1YnkNCnJlcXVpcmUgImltIg0KZXh0ZW5kIEltDQoNCmFjdGl2ZV9tb2RlbCA9IGltcG9y dCAiYWN0aXZlX21vZGVsIg0KIz0+IDwjSW06OkltcG9ydCByb290OiBhY3RpdmVfbW9kZWw+DQoN CkFjdGl2ZU1vZGVsDQojPT4gTmFtZUVycm9yDQoNCmFjdGl2ZV9tb2RlbDo6QWN0aXZlTW9kZWwN CiM9PiBBY3RpdmVNb2RlbA0KDQphY3RpdmVfcmVjb3JkID0gaW1wb3J0ICJhY3RpdmVfcmVjb3Jk Ig0KIz0+IDwjSW06OkltcG9ydCByb290OiBhY3RpdmVfcmVjb3JkPg0KDQojIENvbnN0YW50cyBk ZWZpbmVkIGluIHRoZSBzYW1lIGZpbGUgdW5kZXIgZGlmZmVyZW50IGltcG9ydHMgcG9pbnQgdG8g dGhlIHNhbWUgb2JqZWN0cw0KYWN0aXZlX3JlY29yZDo6QWN0aXZlTW9kZWwgPT0gYWN0aXZlX21v ZGVsOjpBY3RpdmVNb2RlbA0KIz0+IHRydWUNCmBgYA0KDQpXaXRoIHRoZSBjb25zdGFudHMgYWxs IGxvYWRlZCB1bmRlciBhbiBhbm9ueW1vdXMgbmFtZXNwYWNlLCBhbnkgY29kZSBpbXBvcnRpbmcg dGhlIGdlbSBjYW4gbmFtZSBjb25zdGFudHMgaG93ZXZlciBpdCBsaWtlczoNCg0KYGBgcnVieQ0K Y2xhc3MgUG9zdCA8IGFjdGl2ZV9yZWNvcmQ6OkFjdGl2ZVJlY29yZDo6QmFzZQ0KZW5kDQoNCkFS ID0gYWN0aXZlX3JlY29yZDo6QWN0aXZlUmVjb3JkDQoNClBvc3Quc3VwZXJjbGFzcw0KIz0+IEFS OjpCYXNlDQpgYGANCg0KTm90ZSB0aGF0IHRoaXMgZW5hYmxlcyB0aGUgaW1wb3J0ZXIgdG8gY29t cGxldGVseSBkZXRlcm1pbmUgdGhlIG5hbWluZyBmb3IgZXZlcnkgY29uc3RhbnQgaXQgaW1wb3J0 cy4gU28gZ2VtcyBjYW4gb3B0IHRvIGhpZGUgdGhlaXIgZGVwZW5kZW5jaWVzIGJ5ICJhbmNob3Jp bmciIHRoZW0gaW5zaWRlIHRoZWlyIG93biBuYW1lc3BhY2UsIGxpa2UgdGhpczoNCg0KYGBgcnVi eQ0KIyBpbiBsaWIvbXlfZ2VtLnJiDQptb2R1bGUgTXlHZW0NCiAgZGVwID0gaW1wb3J0ICJteV9n ZW1fZGVwZW5kZW5jeSINCg0KICAjIG15X2dlbV9kZXBlbmRlbmN5IGlzICJhbmNob3JlZCIgdW5k ZXIgdGhlIE15R2VtIG5hbWVzcGFjZSwgc28gbm90IGV4cG9zZWQgdG8gdXNlcnMNCiAgIyBvZiB0 aGUgZ2VtIHVubGVzcyB0aGV5IGFsc28gcmVxdWlyZSBpdC4NCiAgTXlHZW1EZXBlbmRlbmN5ID0g ZGVwDQoNCiAgIy4uLg0KZW5kDQpgYGANCg0KVGhlcmUgYXJlIGEgY291cGxlIGltcG9ydGFudCBp bXBsZW1lbnRhdGlvbiBkZWNpc2lvbnMgaW4gdGhlIGdlbToNCg0KMS4gX09ubHkgbG9hZCBjb2Rl IG9uY2UuXyBXaGVuIHRoZSBzYW1lIGZpbGUgaXMgaW1wb3J0ZWQgYWdhaW4gKGVpdGhlciBkaXJl Y3RseSBvciB0cmFuc2l0aXZlbHkpLCAiY29weSIgY29uc3RhbnRzIGZyb20gcHJldmlvdXNseSBp bXBvcnRlZCBuYW1lc3BhY2UgdG8gdGhlIG5ldyBuYW1lc3BhY2UgdXNpbmcgYSByZWdpc3RyeSB3 aGljaCBtYXBzIHdoaWNoIG5hbWVzcGFjZSAoaW1wb3J0KSB3YXMgdXNlZCB0byBsb2FkIHdoaWNo IGZpbGUgKGFzIHNob3duIGFib3ZlIHdpdGggYWN0aXZlcmVjb3JkL2FjdGl2ZW1vZGVsKS4gVGhp cyBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoYXQgZGlmZmVyZW50IGltcG9ydHMgY2FuICJzZWUi IHNoYXJlZCBmaWxlcy4gQSBzaW1pbGFyIHJlZ2lzdHJ5IGlzIHVzZWQgdG8gdHJhY2sgYXV0b2xv YWRzIHNvIHRoYXQgdGhleSB3b3JrIGNvcnJlY3RseSB3aGVuIHVzZWQgZnJvbSBpbXBvcnRlZCBj b2RlLg0KMi4gVG9wbGV2ZWwgY29yZSB0eXBlcyAoYE5pbENsYXNzYCwgYFRydWVDbGFzc2AsIGBG YWxzZUNsYXNzYCwgYFN0cmluZ2AsIGV0YykgYXJlICJhbGlhc2VkIiB0byBjb25zdGFudHMgdW5k ZXIgZWFjaCBpbXBvcnQgbW9kdWxlIHRvIG1ha2UgdGhlbSBhdmFpbGFibGUuIFRodXMgdGhlcmUg Y2FuIGJlIHNpZGUtZWZmZWN0cyBvZiBpbXBvcnRpbmcgY29kZSwgYnV0IHRoaXMgYWxsb3dzIGEg Z2VtIGxpa2UgUmFpbHMgdG8gbW9ua2V5cGF0Y2ggY29yZSBjbGFzc2VzIHdoaWNoIGl0IG5lZWRz IHRvIGRvIGZvciBpdCB0byB3b3JrLg0KMy4gYE9iamVjdC5jb25zdF9taXNzaW5nYCBpcyBwYXRj aGVkIHRvIGNoZWNrIHRoZSBjYWxsZXIgbG9jYXRpb24gYW5kIHJlc29sdmUgdG8gdGhlIGNvbnN0 YW50IGRlZmluZWQgdW5kZXIgYW4gaW1wb3J0LCBpZiB0aGVyZSBpcyBhbiBpbXBvcnQgZGVmaW5l ZCBmb3IgdGhhdCBmaWxlLg0KDQpUbyBiZSBjbGVhcjogKipJIHRoaW5rIDEpIHNob3VsZCBiZSBp bXBsZW1lbnRlZCBpbiBSdWJ5LCBidXQgbm90IDIpIGFuZCAzKS4qKiBUaGUgbGFzdCBvbmUgKGBP YmplY3QuY29uc3RfbWlzc2luZ2ApIGlzIGEgaGFjayB0byBzdXBwb3J0IHRoZSBjYXNlIHdoZXJl IGEgdG9wbGV2ZWwgY29uc3RhbnQgaXMgcmVmZXJlbmNlZCBmcm9tIGEgbWV0aG9kIGNhbGxlZCBp biBpbXBvcnRlZCBjb2RlIChhdCB3aGljaCBwb2ludCB0aGUgYHRvcF93cmFwcGVyYCBpcyBub3Qg YWN0aXZlLikNCg0KSSBrbm93IHRoaXMgaXMgYSBiaWcgcHJvcG9zYWwsIGFuZCB0aGVyZSBhcmUg c3Ryb25nIG9waW5pb25zIGhlbGQuIEkgd291bGQgcmVhbGx5IGFwcHJlY2lhdGUgY29uc3RydWN0 aXZlIGZlZWRiYWNrIG9uIHRoaXMgZ2VuZXJhbCBpZGVhLg0KDQpTZWUgYWxzbyBzaW1pbGFyIGRp c2N1c3Npb24gaW46IGh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xMDMyMA0KDQoN Cg0KLS0gDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy8NCgpVbnN1YnNjcmliZTogPG1haWx0 bzpydWJ5LWNvcmUtcmVxdWVzdEBydWJ5LWxhbmcub3JnP3N1YmplY3Q9dW5zdWJzY3JpYmU+Cjxo dHRwOi8vbGlzdHMucnVieS1sYW5nLm9yZy9jZ2ktYmluL21haWxtYW4vb3B0aW9ucy9ydWJ5LWNv cmU+Cg==