Re: [Numpy-discussion] Re: Better compatibility of the Python scientific/data stack with fast Python interpreters
PIERRE AUGIER <[email protected]> Wed, 30 Apr 2025 14:08:36 +0200 (CEST)
| Newsgroups | gmane.comp.python.hpy,gmane.comp.python.numeric.general,gmane.comp.python.pypy |
|---|---|
| Message-ID | <1219370444.318043.1746014916960.JavaMail.zimbra@univ-grenoble-alpes.fr> |
DQotLS0tLSBNYWlsIG9yaWdpbmFsIC0tLS0tDQo+IERlOiAiUmFsZiBHb21tZXJzIHZpYSBOdW1Q eS1EaXNjdXNzaW9uIiA8bnVtcHktZGlzY3Vzc2lvbkBweXRob24ub3JnPg0KPiDDgDogIkRpc2N1 c3Npb24gb2YgTnVtZXJpY2FsIFB5dGhvbiIgPG51bXB5LWRpc2N1c3Npb25AcHl0aG9uLm9yZz4N Cj4gQ2M6ICJocHktZGV2IiA8aHB5LWRldkBweXRob24ub3JnPiwgInB5cHktZGV2IiA8cHlweS1k ZXZAcHl0aG9uLm9yZz4sICJyYWxmIGdvbW1lcnMiIDxyYWxmLmdvbW1lcnNAZ21haWwuY29tPg0K PiBFbnZvecOpOiBNZXJjcmVkaSAzMCBBdnJpbCAyMDI1IDA3OjMyOjQ0DQo+IE9iamV0OiBbTnVt cHktZGlzY3Vzc2lvbl0gUmU6IEJldHRlciBjb21wYXRpYmlsaXR5IG9mIHRoZSBQeXRob24gc2Np ZW50aWZpYy9kYXRhIHN0YWNrIHdpdGggZmFzdCBQeXRob24gaW50ZXJwcmV0ZXJzDQoNCj4gT24g VHVlLCBBcHIgMjksIDIwMjUgYXQgMTE6MjQgQU0gUElFUlJFIEFVR0lFUiA8IFsNCj4gbWFpbHRv OnBpZXJyZS5hdWdpZXJAdW5pdi1ncmVub2JsZS1hbHBlcy5mciB8DQo+IHBpZXJyZS5hdWdpZXJA dW5pdi1ncmVub2JsZS1hbHBlcy5mciBdID4gd3JvdGU6DQo+IA0KPiANCj4gRGVhciBOdW1weSBj b21tdW5pdHkgbWVtYmVycyBhbmQgTnVtcHkgZGV2ZWxvcGVycywNCj4gDQo+IFRoaXMgZW1haWwg aXMgdG8gZ2V0IHRoZSBwb2ludHMgb2YgdmlldyBvZiB0aGUgTnVtcHkgY29tbXVuaXR5IG1lbWJl cnMgYW5kDQo+IGRldmVsb3BlcnMgYWJvdXQgYSBzdWJqZWN0IHRoYXQgSSBmaW5kIHZlcnkgaW1w b3J0YW50LiBJJ20gZ29pbmcgdG8gaW50cm9kdWNlDQo+IGl0IGp1c3QgaW4gZmV3IGxpbmVzIHNv IEkgd3JpdGUgZmV3IHN0YXRlbWVudHMgd2l0aG91dCBiYWNraW5nIHRoZW0gd2l0aCBwcm9wZXIN Cj4gYXJndW1lbnRzIGFuZCB3aXRob3V0IGdpdmluZyBsaW5rcyBhbmQgd29yZCBkZWZpbml0aW9u cy4gSSBhc3N1bWUgdGhhdCBtb3N0DQo+IHBlb3BsZSByZWdpc3RlcmVkIHRvIHRoZSBudW1weS1k aXNjdXNzaW9uIGxpc3QgYXJlIGF0IGxlYXN0IGZhbWlsaWFyIHRvIHRoZQ0KPiBzdWJqZWN0Lg0K PiANCj4gVGhhbmtzIGZvciB0aGlua2luZyBhYm91dCB0aGlzIFBpZXJyZS4NCj4gDQoNClRoYW5r cyBSYWxmIGZvciB5b3VyIGFuc3dlci4gRXZlbiBpZiBpdCBpcyBub3QgdmVyeSBwb3NpdGl2ZSwg aXQgaXQgVkVSWSBpbnRlcmVzdGluZyENCg0KPiBJIHRoaW5rIGdldHRpbmcgcHJvcGVyIGNvbXBh dGliaWxpdHkgb2YgdGhlIFB5dGhvbiBzY2llbnRpZmljL2RhdGEgc3RhY2sgd2l0aA0KPiBmYXN0 IFB5dGhvbiBpbnRlcnByZXRlcnMgaXMgdmVyeSBpbXBvcnRhbnQgZm9yIHRoZSBsb25nLXRlcm0g ZnV0dXJlIG9mIFB5dGhvbg0KPiBmb3Igc2NpZW5jZSBhbmQgZGF0YS4NCj4gDQo+IEknbSBub3Qg c3VyZSBpdCBpcywgaXQgd291bGRuJ3QgcmFuayBoaWdoIG9uIG15IHdpc2ggbGlzdC4gUHlQeSBp cyBuZWFyaW5nIGl0cw0KPiBlbmQtb2YtbGlmZSwgYW5kIEdyYWFsUHkgaXMgcmVhbGx5IG9ubHkg Zm9yIEphdmEgZGV2cyBpdCBzZWVtcyAtIEkndmUgbmV2ZXINCj4gc2VlbiBpdCBpbiB0aGUgcmVh bCB3b3JsZC4gDQoNCi0gUHlQeSBhbmQgR3JhYWxQeSBhcmUgbm90IHVzZWQgYSBsb3QgYmVjYXVz ZSB0aGUgUHl0aG9uIGVjb3N5c3RlbSBpcyBoaWdobHkgaW5jb21wYXRpYmxlIHdpdGggdGhlbSBz aW5jZSBpdCBpcyBiYXNlZCBvbiB0aGUgQ1B5dGhvbiBDIEFQSSwgd2hpY2ggYXNzdW1lcyBpbiBw YXJ0aWN1bGFyIHJlZmVyZW5jZSBjb3VudGluZy4gVGhpcyBpcyByZWFsbHkgYSBjaGlja2VuIGFu ZCBlZ2cgcHJvYmxlbS4gV2l0aCBhIGJldHRlciBlY29zeXN0ZW0sIHdlIGNhbiBhbnRpY2lwYXRl IGEgc3Ryb25nIGluY3JlYXNlIG9mIFB5UHkgYW5kIEdyYWFsUHkgdXNhZ2UuDQoNCi0gSSdtIG5v dCBhd2FyZSB0aGF0IFB5UHkgaXMgbmVhcmluZyBpdHMgZW5kLW9mLWxpZmUuIEl0IHdvdWxkIHJl YWxseSBiZSBhIHNoYW1lIGZvciBQeXRob24gdG8gbG9zZSB0aGlzIHByb2plY3QuDQoNCi0gR3Jh YWxQeSBpcyBub3QgYXQgYWxsIG9ubHkgZm9yIEphdmEgZGV2cy4gSXQgY2FuIGJlIHVzZWQgYnkg ZXZlcnkgUHl0aG9uIHVzZXJzLiBJdCBpcyBqdXN0IGEgeW91bmcgcHJvamVjdCBhbmQgaXRzIG1h aW4gaXNzdWUgZm9yIHVzYWJpbGl0eSBpcyB0aGUgbGFjayBvZiBzcGVjaWZpYyB3aGVlbHMuIE51 bXB5IGltcGxlbWVudGVkIHdpdGggSFB5IHdvdWxkIGZpeCB0aGF0LiBIb3dldmVyLCBKYXZhIGRl dnMgY2FuIGFsc28gYmUgUHl0aG9uIGFuZCBOdW1weSB1c2VycyBhbmQgZ2V0dGluZyBOdW1weSBm dWxseSBjb21wYXRpYmxlIHdpdGggR3JhYWxQeSB3b3VsZCBiZSB2ZXJ5IGdvb2QgZm9yIGFwcGxp Y2F0aW9ucyB1c2luZyBKYXZhIGFuZCBQeXRob24uDQoNCj4gV2l0aCBDUHl0aG9uIHBlcmZvcm1h bmNlIGJlaW5nIHdvcmtlZCBoYXJkIG9uLCB0aGUgcGVyZm9ybWFuY2UgZ2FwIGlzIHNocmlua2lu ZyBldmVyeSB5ZWFyLg0KDQpJIGRvbid0IHRoaW5rIHRoZSB3b3JkICJzaHJpbmtpbmciIGlzIHZl cnkgYWRhcHRlZCA6LSkgISBFdmVuIG9uIHB5cGVyZm9ybWFuY2UgKHdoaWNoIGlzIGEgc2V0IG9m IGJlbmNobWFya3MgZGVzaWduZWQgZm9yIENQeXRob24gZGV2ZWxvcG1lbnQpLCBQeVB5IGFuZCBH cmFhbFB5IGFyZSBzdGlsbCB0eXBpY2FsbHkgNCB0byA1IHRpbWVzIGZhc3RlciB0aGFuIENQeXRo b24uIEZvciBwdXJlIFB5dGhvbiBDUFUgYm91bmRlZCBjYXNlcywgaXQgaXMgbW9yZSBvZiB0aGUg b3JkZXIgb2YgMjAgdGltZXMgZmFzdGVyLCB3aGljaCBpcyB0eXBpY2FsbHkgY29tcGFyYWJsZSB3 aXRoIHdoYXQgb25lIGdldHMgd2l0aCBOb2RlSlMuDQoNClVuZm9ydHVuYXRlbHksIHRoZSBGYXN0 ZXIgQ1B5dGhvbiBwcm9qZWN0IGlzIGdldHRpbmcgc2xvd2x5IGFuZCBoYXMgYSB2ZXJ5IGhhcmQg dGltZSB0byBnZXQgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzLiBPbmUgY2Fu IGhhdmUgYSBsb29rIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9mYXN0ZXItY3B5dGhvbi9iZW5jaG1h cmtpbmctcHVibGljLiBJdCB3b3VsZCBiZSBhIGdyZWF0IGFjaGlldmVtZW50IGlmIENQeXRob24g My4xNCB3aXRoIGl0cyBKSVQgY2FuIGJlIDEuNSBmYXN0ZXIgdGhhbiBDUHl0aG9uIDMuMTAgKG1l YXN1cmVkIHdpdGggcHlwZXJmb3JtYW5jZSwgYWdhaW4gY29tcGFyZWQgdG8gdHlwaWNhbGx5IDQg dG8gNSB0aW1lcyBmYXN0ZXIgd2l0aCBQeVB5IGFuZCBHcmFhbFB5KS4NCg0KVGhlIGNvbnN0cmFp bnMgb24gQ1B5dGhvbiAoaW4gcGFydGljdWxhciByZWxhdGVkIHRvIHRoZSBDUHl0aG9uIEMgQVBJ KSBhcmUgc28gc3Ryb25nIHRoYXQgZm9yIG1vc3QgY2FzZXMgdGhlIEZhc3RlciBDUHl0aG9uIHBy b2plY3Qgd29uJ3QgYmUgYWJsZSB0byByZWFjaCB3aGF0IGNhbiBiZSBvYnRhaW5lZCB3aXRoIGZh c3QgUHl0aG9uIGltcGxlbWVudGF0aW9ucyB1c2luZyBhZHZhbmNlZCBtZXRob2RzIGFuZCBhbGdv cml0aG1zLiBBcyBsb25nIGFzIHRoZSBDUHl0aG9uIEMgQVBJIGFzc3VtZXMgcmVmZXJlbmNlIGNv dW50aW5nIChhbmQgb3RoZXIgaW1wbGVtZW50YXRpb24gZGV0YWlscyBiYWQgZm9yIHBlcmZvcm1h bmNlKSwgQ1B5dGhvbiBwZXJmb3JtYW5jZSBjYW5ub3QgcmVhY2hlZCB3aGF0IGNhbiBiZSBvYnRh aW5lZCB3aXRoIFB5UHksIEdyYWFsUHkgb3IgTm9kZUpTLg0KDQpJZiBDUHl0aG9uIGNoYW5nZXMg dG9vIG11Y2ggaXRzIGludGVybmFscywgaXQgd291bGQgbmVlZCBhbiBlbXVsYXRpb24gbGF5ZXIg bGlrZSBQeVB5J3MgY3B5ZXh0LCBhbmQgdGhlbiBleHRlbnNpb25zIHdvdWxkIGJlY29tZSBzbG93 ZXIsIHdoaWNoIGlzIG9mIGNvdXJzZSBub3QgYWNjZXB0YWJsZS4NCg0KPiBNb3JlIGltcG9ydGFu dGx5LCBub25lIG9mIHRoZXNlIGVmZm9ydHMgKGluY2x1ZGluZyB0aGUgImZhc3RlciBDUHl0aG9u Ig0KPiBwcm9qZWN0KSwgc2VlbSBjcml0aWNhbCB0byBudW1lcmljYWwvc2NpZW50aWZpYyB1c2Vy cy4gV2UncmUgc3RpbGwgdGFsa2luZw0KPiBhYm91dCBwdXJlIFB5dGhvbiBjb2RlIHRoYXQgZ2V0 cyBtYXliZSB1cCB0byA1eCBmYXN0ZXIsIHdoaWxlIHRoZSBnYWlucyBmcm9tDQo+IGRvaW5nIHRo aW5ncyBpbiBjb21waWxlZCBsYW5ndWFnZXMgYXJlIGEgbG90IGhpZ2hlci4gDQoNCkZvciBudW1l cmljYWwga2VybmVscywgc3BlY2lhbGl6ZWQgc3RhdGljIGxhbmd1YWdlcyBhcmUgY2xlYXJseSBu ZWVkZWQsIGJ1dCBmb3IgZ2xvYmFsIG9yZ2FuaXNhdGlvbiBhbmQgb3JjaGVzdHJhdGlvbiwgUHlQ eSBhbmQgR3JhYWxQeSBhcmUgcmVhbGx5IHZlcnkgZWZmaWNpZW50IChJIGd1ZXNzIGluIG1vc3Qg Y2FzZXMgZWZmaWNpZW50IGVub3VnaCkuDQoNCkZvciBwdXJlIFB5dGhvbiBjb2RlIGFuZCBjb21w YXJlZCB0byBDUHl0aG9uLCB0aGUgZmFjdG9yIGlzIG5vdCA1eCBidXQgbW9yZSAxMHggb3IgMjB4 Lg0KDQo+IFNvIHRoZSBiZW5lZml0cyBhcmUgbW9yZQ0KPiBpbXBvcnRhbnQgZm9yIHNtYWxsIHBh Y2thZ2VzIGlmIGl0IG1vdmVzIHRoZSB0aHJlc2hvbGQgYXQgd2hpY2ggaXQgYmVjb21lcw0KPiBu ZWNlc3NhcnkgZm9yIHRoZW0gdG8gd3JpdGUgemVybyBleHRlbnNpb24gbW9kdWxlcy4gRm9yIGNv cmUgbGlicmFyaWVzIGxpa2UNCj4gTnVtUHksIHB1cmUgUHl0aG9uIHBlcmZvcm1hbmNlIGlzbid0 IHN1cGVyIGNyaXRpY2FsLg0KDQpGb3IgbGlicmFyaWVzIGxpa2UgTnVtUHksIGl0IGlzIG5vdC4g QnV0IGZvciB1c2VycyBvZiB0aGVzZSBsaWJyYXJpZXMsIGl0IGlzLiBPciBhdCBsZWFzdCBnZXR0 aW5nIHRoZSBwb3NzaWJpbGl0eSB0byB1c2UgZmFzdCBQeXRob24gKHR5cGljYWxseSBhcyBmYXN0 IGFzIEphdmFzY3JpcHQpIHdvdWxkIGNoYW5nZSB3aGF0IHdlIGNhbiBkbyB3aXRoIFB5dGhvbiBh bmQgd2hhdCBjYW4gYmUgY29kZWQgaW4gUHl0aG9uLg0KDQpGb3IgZXhhbXBsZSwgY3VycmVudGx5 LCBpdCBpcyBub3QgZG9hYmxlIHRvIHVzZSBhIGxvdCBvZiBzbWFsbCBQeXRob24gb2JqZWN0cyBp biBwZXJmb3JtYW5jZSBjcml0aWNhbCBjb2RlIHNvIG5pY2UgT09QIFB5dGhvbiBjYW5ub3QgYmUg dXNlZC4gV2l0aCBhbHRlcm5hdGl2ZSBmYXN0IFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMgbW9yZSB1 c2FibGUgd2l0aCBhbiBlY29zeXN0ZW0gdXNpbmcgSFB5IGFuZCB1bml2ZXJzYWwgd2hlZWxzLCBp dCB3b3VsZCBiZWNvbWUgcG9zc2libGUuDQoNCkkgcmVtZW1iZXIgZHVyaW5nIGEgUHl0aG9uIHRy YWluaW5nIGEgcGVyc29uIChpdCB3YXMgYSBnb29kIEMrKyBkZXZlbG9wZXIpIHRyeWluZyB0byB3 cml0ZSBzb21ldGhpbmcgZG9pbmcgcmF5IHRyYWNpbmcgd2l0aCBPT1AgYW5kIE51bXB5LiBJdCB3 YXMgc3VwZXIgc2xvdyB3aXRoIENQeXRob24gc28gSSB0b2xkIGhpbSB0byB0cnkgaW4gcHVyZSBQ eXRob24gd2l0aCBQeVB5IChpdCB3YXMganVzdCBhIGdhbWUgdG8gbGVhcm4gc28gd2h5IG5vdCku IEhlIHNvb24gZ290IGEgcHJvdG90eXBlIGFuZCB3YXMgcXVpdGUgaW1wcmVzc2VkIHdpdGggdGhl IHNwZWVkLiBUaGVuIHRoZXJlIHdhcyBzb21ldGhpbmcgZWxzZSBpbiB0aGUgY29kZSB0aGF0IHdh cyBjb252ZW5pZW50IHRvIGJlIGRvbmUgd2l0aCBOdW1weSBhbmQgdGhlbiwgcGZmLCBhbGwgdGhl IGdvb2QgcGVyZm9ybWFuY2UgZGlzYXBwZWFyZWQgYmVjYXVzZSB0aGUgTnVtcHkgY2FsbHMgd2hl cmUgc3VwZXIgc2xvdyAoZ29pbmcgdGhyb3VnaCBjcHlleHQpIGFuZCB0aGUgcmVzdCBvZiB0aGUg Y29kZSB3YXMgdGhlbiB1c2luZyBzb21lIE51bXB5IG51bWJlcnMuIFRoaXMgd2FzIHZlcnkgZnJ1 c3RyYXRpbmcuDQoNCldlIGFsc28gc2VlIHByb2plY3RzIHVzaW5nIGEgbG90IFB5dGhvbiAod2l0 aCBsb3Qgb2Ygc21hbGwgb2JqZWN0cykgdGhhdCBhcmUgc28gc2xvdyBjb21wYXJlZCB0byBjb21w YXJhYmxlIGFsdGVybmF0aXZlcyAoZm9yIGV4YW1wbGUgUGVsaWNhbiBjb21wYXJlZCB0byBIdWdv IGluIEdvOyBteXN0LXBhcnNlciBjb21wYXJlZCB0byBteXN0bWQgaW4gSmF2YVNjcmlwdDsgSSBh bHNvIHRoaW5rIGFib3V0IFNwaGlueCBhbmQgaXRzIHNvIGxvbmcgYnVpbGRzLCAuLi4pLiBJdCB3 b3VsZCBjaGFuZ2UgdGhlIGxpZmUgb2YgUHl0aG9uIHVzZXJzIGlmIGl0IHdvdWxkIGJlIGVhc3kg dG8gdXNlIGZhc3QgaW1wbGVtZW50YXRpb25zIHdpdGggcGVyZm9ybWFuY2Ugc2ltaWxhciB0byBO b2RlSlMuDQoNCk1vcmVvdmVyLCBpZiBib3hpbmcvdW5ib3hpbmcgY2FuIGJlIGF2b2lkZWQgYmV0 d2VlbiBQeXRob24gSklUcyBhbmQgbmF0aXZlIGNvZGUgKHdoaWNoIHNob3VsZCBiZSBkb2FibGUg d2l0aCBIUHkpLCBOdW1weSBjYWxscyB3b3VsZCBiZSBzaWduaWZpY2FudGx5IGZhc3Rlci4gV2l0 aCBHcmFhbCBWTSBpdCBjb3VsZCBldmVuIGJlIG1vcmUgc3BlY3RhY3VsYXIgYmVjYXVzZSBpdCBj b3VsZCBiZSBwb3NzaWJsZSB0aGF0IHRoZSBzYW1lIEpJVCBjb21waWxlcyB0b2dldGhlciBQeXRo b24gYW5kIG5hdGl2ZSBjb2RlIHdpdGhvdXQgYmFycmllcnMgYWNyb3NzIHRoZSBsYW5ndWFnZSBi b3VuZGFyaWVzLg0KDQo+IFdoZW4gdGhpbmtpbmcgYWJvdXQgb3ZlcmFsbCBwZXJmb3JtYW5jZSBp bXByb3ZlbWVudHMsIEknZCBzYXkgdGhhdCB0aGUgdHdvIG1vc3QNCj4gcHJvbWlzaW5nIGxhcmdl IGRldmVsb3BtZW50cyBhcmU6ICgxKSBtYWtpbmcgaXQgZWFzaWVyIHRvIHVzZSBhY2NlbGVyYXRv cg0KPiBsaWJyYXJpZXMgKFB5VG9yY2gsIEN1UHkgZXQgYWwuKSwgYW5kICgyKSBmcmVlLXRocmVh ZGVkIENQeXRob24gZm9yIGVuYWJsaW5nDQo+IFB5dGhvbi1sZXZlbCB0aHJlYWRpbmcuDQoNCkdv b2QgYW5kIHVzYWJsZSBzdWItaW50ZXJwcmV0ZXJzIHdvdWxkIGFsc28gYmUgZ3JlYXQgYW5kIEkg dGhpbmsgdGhpcyBpcyBoaWdobHkgY291cGxlZCB3aXRoIE51bXB5LUhQeS4NCiANCj4gWy4uLl0N Cj4gDQo+IE1vcmVvdmVyLCB1bmZvcnR1bmF0ZWx5LCBIUHkgZG9lcyBub3QgY3VycmVudGx5IHJl Y2VpdmUgYXMgbXVjaCBjYXJlIGFzIGl0DQo+IHNob3VsZC4NCj4gDQo+IA0KPiANCj4gSXQgc2Vl bXMgdG8gbWUgdGhhdCB0aGUgcHJvamVjdCBvZiBmaXhpbmcgdGhlIHJvb3RzIG9mIHRoZSBQeXRo b24gZWNvc3lzdGVtIGhhcw0KPiB0byBiZSByZWxhdW5jaGVkLiBJIHRoaW5rIHRoYXQgdGhlIGR5 bmFtaWNzIGhhcyB0byBjb21lIGZyb20gdGhlIFB5dGhvbg0KPiBzY2llbnRpZmljL2RhdGEgY29t bXVuaXR5IGFuZCBpbiBwYXJ0aWN1bGFyIE51bXB5LiBJdCBpcyB1bmZvcnR1bmF0ZWx5IG91dHNp ZGUNCj4gb2YgdGhlIEMgQVBJIHdvcmtpbmcgZ3JvdXAncyBzY29wZSAoc2VlIFsNCj4gaHR0cHM6 Ly9kaXNjdXNzLnB5dGhvbi5vcmcvdC9jLWFwaS13b3JraW5nLWdyb3VwLWFuZC1wbGFuLXRvLWdl dC1hLXB5dGhvbi1jLWFwaS1jb21wYXRpYmxlLXdpdGgtYWx0ZXJuYXRpdmUtcHl0aG9uLWltcGxl bWVudGF0aW9ucy84OTQ3Nw0KPiB8DQo+IGh0dHBzOi8vZGlzY3Vzcy5weXRob24ub3JnL3QvYy1h cGktd29ya2luZy1ncm91cC1hbmQtcGxhbi10by1nZXQtYS1weXRob24tYy1hcGktY29tcGF0aWJs ZS13aXRoLWFsdGVybmF0aXZlLXB5dGhvbi1pbXBsZW1lbnRhdGlvbnMvODk0NzcNCj4gXSApLg0K PiANCj4gSXQgc2VlbXMgdG8gbWUgdGhhdCBpdCBpcyBuZWNlc3NhcnkgKGFuZCBwb3NzaWJsZSkg dG8gZ2V0IHNvbWUgZm91bmRpbmcgZm9yIHN1Y2gNCj4gYW4gaW1wYWN0ZnVsIHByb2plY3Qgc28g dGhhdCB3ZSBjYW4gZ2V0IHBlb3BsZSB3b3JraW5nIG9uIGl0Lg0KPiANCj4gSSdkIGxpa2UgdG8g d3JpdGUgYSBsb25nIGFuZCBzZXJpb3VzIHRleHQgb24gdGhpcyBzdWJqZWN0LCBhbmQgSSBmaXJz dCB0cnkgdG8NCj4gZ2V0IHRoZSBwb2ludHMgb2YgdmlldyBvZiB0aGUgZGlmZmVyZW50IHBlb3Bs ZSBhbmQgcHJvamVjdHMgaW52b2x2ZWQuDQo+IA0KPiBJIGd1ZXNzIEkgc2hvdWxkIHdyaXRlIGV4 cGxpY2l0IHF1ZXN0aW9uczoNCj4gDQo+IC0gV2hhdCBkbyB5b3UgdGhpbmsgYWJvdXQgdGhlIHBy b2plY3Qgb2YgZml4aW5nIHRoZSBQeXRob24gc2NpZW50aWZpYy9kYXRhIHN0YWNrDQo+IHNvIHRo YXQgaXQgYmVjb21lcyBuYXRpdmVseSBjb21wYXRpYmxlIChoZW5jZSBmYXN0IGFuZCBjb252ZW5p ZW50LCB3aXRoIGVhc3kNCj4gaW5zdGFsbGF0aW9ucykgd2l0aCBhbHRlcm5hdGl2ZSBhbmQgZmFz dCBQeXRob24gaW50ZXJwcmV0ZXJzPw0KPiAtIERvIHlvdSBoYXZlIHBvaW50cyBvZiB2aWV3IG9u IGhvdyB0aGlzIHNob3VsZCBiZSBkb25lLCB0ZWNobmljYWxseSAoSFB5PywNCj4gc29tZXRoaW5n IGVsc2U/KSBhbmQgb24gb3RoZXIgYXNwZWN0cyAoY29tbXVuaXR5LCBORVA/LCBmb3VuZGluZywg Li4uKS4NCj4gLSBBbnl0aGluZyBlbHNlIGludGVyZXN0aW5nIG9uIHRoaXMgc3ViamVjdD8NCj4g DQo+IEhhdmluZyBIUHkgb3Igc29tZXRoaW5nIGxpa2UgaXQgd2lsbCBiZSB2ZXJ5IG5pY2UgYW5k IGxlYWQgdG8gbG9uZy10ZXJtDQo+IGJlbmVmaXRzLiBUaGUgcHJvYmxlbSB3aXRoIEhQeSBzZWVt cyB0byBiZSBtb3JlIGEgc29jaWFsIG9uZSBhdCB0aGlzIHBvaW50OiBpZg0KPiBDUHl0aG9uIGNv cmUgZGV2cyBkb24ndCB3YW50IHRvIGFkb3B0IGl0IGJ1dCBkbyB0aGVpciBvd24gIm1ha2UgdGhl IEMgQVBJIG1vcmUNCj4gb3BhcXVlIiBzdHJhdGVneSwgdGhlbiBtb3JlIGVmZm9ydCBvbiBIUHkg aXNuJ3QgZ29pbmcgdG8gaGVscC4gSWYgeW91J3JlIGdvaW5nDQo+IHRvIGRpZyBpbnRvIHRoaXMg bW9yZSwgSSBzdWdnZXN0IHRyeWluZyB0byBnZXQgYSB2ZXJ5IGdvb2Qgc2Vuc2Ugb2Ygd2hhdCB0 aGUNCj4gQ1B5dGhvbiBjb3JlIGRldiB0ZWFtLCBhbmQgaW4gcGFydGljdWxhciBpdHMgQyBBUEkg V29ya2dyb3VwLCBpcw0KPiB0aGlua2luZy9wbGFubmluZy4gVGhhdCB3aWxsIGluZm9ybSB3aGV0 aGVyIHRoZSByaWdodCBzdHJhdGVneSBpcyB0byBoZWxwIHRoZWlyDQo+IGVmZm9ydHMgYWxvbmcs IG9yIHdvcmsgb24gSFB5Lg0KDQpUaGlzIGlzIHZlcnkgaW50ZXJlc3RpbmcgdGhhdCB5b3Ugd3Jp dGUgdGhhdCEgVGhpcyBpcyBleGFjdGx5IHdoYXQgSSB0cmllZCB0byB1bmRlcnN0YW5kIHdpdGgg bXkgcXVlc3Rpb25zIGluIGh0dHBzOi8vZGlzY3Vzcy5weXRob24ub3JnL3QvYy1hcGktd29ya2lu Zy1ncm91cC1hbmQtcGxhbi10by1nZXQtYS1weXRob24tYy1hcGktY29tcGF0aWJsZS13aXRoLWFs dGVybmF0aXZlLXB5dGhvbi1pbXBsZW1lbnRhdGlvbnMvODk0NzcNCg0KSSB0aGluayB0aGF0IHRo ZSBkaXNjdXNzaW9uIHdhcyB2ZXJ5IGluZm9ybWF0aXZlLiBJdCBpcyBpbiBwYXJ0aWN1bGFyIGlu dGVyZXN0aW5nIHRvIHNlZSB0aGF0IHRoZSBDIEFQSSB3b3JraW5nIGdyb3VwIGlzIG9ubHkgZm9j dXNlZCAoaSkgb24gdGhlICJoaXN0b3JpY2FsIiBDUHl0aG9uIEMgQVBJIChIUHkgaXMgY29uc2lk ZXJlZCBhcyBhbiBleHRlcm5hbCBwcm9qZWN0KSBhbmQgKGlpKSBvbiBzbG93IGFuZCBncmFkdWFs IGV2b2x1dGlvbiBvZiB0aGlzIEMgQVBJICh0byBnbyBhdCB0aGUgcGFjZSBvZiB0aGUgc2xvd2Vz dCBwcm9qZWN0cyB1c2luZyB0aGUgQ1B5dGhvbiBDIEFQSSkuIFNvbWUgQ1B5dGhvbiBjb3JlIGRl dnMgd29yayBpbiB0aGUgZGlyZWN0aW9uIG9mICJtYWtpbmcgdGhlIEMgQVBJIG1vcmUgb3BhcXVl IiwgYnV0IGltcG9ydGFudCAicmV2b2x1dGlvbmFyeSIgY2hhbmdlcyAobGlrZSBwcm92aWRpbmcg YW4gQVBJIG5vdCBhc3N1bWluZyByZWZlcmVuY2UgY291bnRpbmcpIGhhdmUganVzdCBiZWVuIGRp c2N1c3NlZCAoaHR0cHM6Ly9naXRodWIuY29tL2NhcGktd29ya2dyb3VwL2FwaS1yZXZvbHV0aW9u L2lzc3VlcykgYW5kIGl0IHNlZW1zIHRoYXQgdGhlcmUgYXJlIG5vdCB5ZXQgcHJhY3RpY2FsIHBs YW5zIGZvciB0aGVtIChmb3IgZXhhbXBsZSBodHRwczovL2dpdGh1Yi5jb20vbWFya3NoYW5ub24v TmV3LUMtQVBJLWZvci1QeXRob24vIGlzIHN0b3BwZWQpLiBNb3Jlb3ZlciwgdGhlcmUgYXJlIG5v IHRpbWUgc2NoZWR1bGUgYW5kIHRoZXJlIGNhbm5vdCBiZSBhbnkgdGltZSBzY2hlZHVsZSBzaW5j ZSB0aGUgcGFjZSBkZXBlbmRzIG9uIGFsbCBDUHl0aG9uIEMgQVBJIHVzZXJzLg0KDQpJbiBwcmFj dGljZSwgdG8gZ2V0IGluIGEgcmVhc29uYWJsZSB0aW1lIChub3QgMTIgeWVhcnMpIHRoZSBzY2ll bnRpZmljL2RhdGEgUHl0aG9uIHN0YWNrIG5hdGl2ZWx5IGNvbXBhdGlibGUgd2l0aCBhZHZhbmNl ZCBtZXRob2RzIHVzZWQgaW4gZHluYW1pYyBsYW5ndWFnZSBpbnRlcnByZXRlcnMsIG9uZSBuZWVk cyAoaSkgdG8gaW52ZXN0IG9uIEhQeSBhbmQgKGlpKSB0byBwb3J0IE51bXB5IHRvIHNvbWV0aGlu ZyBlbHNlIHRoYW4gdGhlIENQeXRob24gQyBBUEkgKGl0IGNhbiBiZSBIUHkgYnV0IGl0IGNvdWxk IGFsc28gYmUgQ3l0aG9uIG9yIG1heWJlIG90aGVyIHRoaW5ncykuDQoNCkFsc28sIGl0IHNlZW1z IHRoYXQgdGhlIEMgQVBJIHdvcmtpbmcgZ3JvdXAgZG9lcyBub3QgY2FyZSBhYm91dCB0aGUgcHJp bmNpcGxlIG9mIHRoZSBIUHkgdW5pdmVyc2FsIHdoZWVscyAoY29tcGF0aWJsZSBhY3Jvc3MgUHl0 aG9uIHZlcnNpb25zIGFuZCBpbXBsZW1lbnRhdGlvbnMpLiBUbyBoYXZlIHNvbWV0aGluZyBsaWtl IHRoYXQsIHdlIG5lZWQgSFB5Lg0KDQpJdCBzZWVtcyB0byBtZSB0aGF0IGEgc3RyYXRlZ3kgYmFz ZWQgb24gSFB5IHdvdWxkIGdpdmUgcHJhY3RpY2FsIGJlbmVmaWNlcyBmb3IgdXNlcnMgaW4gYSBt dWNoIHNob3J0ZXIgdGltZSAodHlwaWNhbGx5IGZldyB5ZWFycykgdGhhbiBqdXN0IHdhaXRpbmcg Zm9yIENQeXRob24gQyBBUEkgZXZvbHV0aW9uLg0KDQpMZXQncyByZWNhbGwgdGhhdCBOdW1weSAx IGhhcyBhbHJlYWR5IGJlZW4gcG9ydGVkIGluIEhQeSAobGlrZSBNYXRwbG90bGliIGJ5IHRoZSB3 YXkpLiBJIHRodXMgYWdyZWUgd2l0aCANCg0KPiBUaGUgcHJvYmxlbSB3aXRoIEhQeSBzZWVtcyB0 byBiZSBtb3JlIGEgc29jaWFsIG9uZSBhdCB0aGlzIHBvaW50DQoNCkNoZWVycywNClBpZXJyZQ0K X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaHB5LWRldiBt YWlsaW5nIGxpc3QgLS0gaHB5LWRldkBweXRob24ub3JnClRvIHVuc3Vic2NyaWJlIHNlbmQgYW4g ZW1haWwgdG8gaHB5LWRldi1sZWF2ZUBweXRob24ub3JnCmh0dHBzOi8vbWFpbC5weXRob24ub3Jn L21haWxtYW4zL2xpc3RzL2hweS1kZXYucHl0aG9uLm9yZy8KTWVtYmVyIGFkZHJlc3M6IGdjcGgt aHB5LWRldkBtLmdtYW5lLW14Lm9yZwo=