Re: Collating follow-up on the future of WSGI
Robert Collins <[email protected]> Wed, 20 Jan 2016 11:56:25 +1300
| Newsgroups | gmane.comp.python.web |
|---|---|
| Message-ID | <CAJ3HoZ1Me53N76ec01m2b8UYDVVGpzCBd775Y9rVxzgXuoR1wQ@mail.gmail.com> |
T24gMjAgSmFudWFyeSAyMDE2IGF0IDA1OjU1LCBDb3J5IEJlbmZpZWxkIDxjb3J5QGx1a2FzYS5j by51az4gd3JvdGU6Cj4gQWxsLAo+Cj4gVGhhbmtzIHNvIG11Y2ggZm9yIHlvdXIgZmVlZGJhY2sg dG8gbXkgb3JpZ2luYWwgcmVxdWVzdCBmb3IgY29tbWVudHMgb24gdGhlIGZ1dHVyZSBvZiBXU0dJ LiBZb3UgcHJvdmlkZWQgYSB0b24gb2YgcmVhbGx5IHVzZWZ1bCBmZWVkYmFjazogd2hlbiBwcmlu dGVkIG91dCBvbiBteSBwcmludGVyIGl0IGVuZGVkIHVwIGF0IGFib3V0IDUwIHBhZ2VzIG9mIGlu Zm9ybWF0aW9uIHRoYXQgd2FzIHJlYWxseSBlbmdhZ2luZyByZWFkaW5nLiBJIGFsc28gd2FudCB0 byB0aGFuayB5b3UgYWxsIGZvciBrZWVwaW5nIHRoZSB0b25lIG9mIHRoZSBkaXNjdXNzaW9uIHNv IHBvc2l0aXZlLiBPbiBhbiB0b3BpYyBsaWtlIHRoaXMgb25lIGl0IGNhbiBnZXQgdHJpY2t5IGFu ZCBlbW90aW9uYWxseSBjaGFyZ2VkIHZlcnkgZWFzaWx5LCBhbmQgeW91IGRpZCBhIGdyZWF0IGpv YiBvZiBhdm9pZGluZyB0aGF0IHByb2JsZW0uCj4KPiBJIHNwZW50IGEgZmV3IGhvdXJzIHRoaXMg bW9ybmluZyBnb2luZyBvdmVyIHlvdXIgZmVlZGJhY2sgYW5kIHRyeWluZyB0byBleHRyYWN0IHNv bWUgY29tbW9uIHRocmVhZHMuIEFsdG9nZXRoZXIgSSBiZWxpZXZlIHRoYXQgbW9zdCBwYXJ0aWNp cGFudHMgd2VyZSBtb3N0bHkgaW4gYWdyZWVtZW50IG92ZXIgdGhlIGRpcmVjdGlvbiB3ZSBzaG91 bGQgdGFrZSwgd2l0aCBhIGZldyBvdXRsaWVycyBpbiBlYWNoIGNhc2UuIEnigJlkIGxpa2UgdG8g c3VtbWFyaXNlIHdoYXQgSSBiZWxpZXZlIHdlcmUgdGhlIGJpZyB0YWtlLWF3YXlzIGZyb20gdGhh dCBkaXNjdXNzaW9uIHRvIGNvbmZpcm0gdGhhdCBJ4oCZdmUgdW5kZXJzdG9vZCBldmVyeW9uZS4K Pgo+IEnigJlkIGFsc28gbGlrZSB0aGUgbWVtYmVycyBvZiB0aGlzIFNJRyB0byB0YWtlIHRoaXMg b3Bwb3J0dW5pdHkgdG8gZGlzY3VzcyB0aGVzZSBwcm9wb3NhbHMgbW9yZSBjb25jcmV0ZWx5LiBS YXRoZXIgdGhhbiBleHByZXNzaW5nIG91ciBzZW50aW1lbnRzIGFib3V0IFdTR0kgYW5kIGl0cyBm dXR1cmUgbW9yZSBnZW5lcmFsbHksIEkgd2FudCBwZW9wbGUgdG8gY3JpdGlxdWUgYW5kIG9mZmVy IG9waW5pb25zIG9uICp0aGVzZSBzcGVjaWZpYyBwcm9wb3NhbHMqLiBUaGUgZ29hbCBoZXJlIGlz IHRvIGdldCBhbiB1bmRlcnN0YW5kaW5nIG9mIHdoZXRoZXIgdGhlc2UgYXJlIHdvcnRoIGRvaW5n LCBob3cgd2UgbmVlZCB0byBwcmlvcml0aXNlIHRoZSB3b3JrLCBhbmQgd2hldGhlciB0aGVyZeKA mXMgYW55dGhpbmcgd2XigJlyZSBtaXNzaW5nLgo+Cj4gVGhlIGJlbG93IGlzIGZvcm1hdHRlZCBp biByZXN0cnVjdHVyZWQgdGV4dCBmb3IgY2xhcml0eSwgYmVjYXVzZSBpdOKAmXMgcXVpdGUgYSBs b3Qgb2YgaW5mb3JtYXRpb24uCj4KPgo+IENvbmNyZXRlIFByb3Bvc2Fscwo+ID09PT09PT09PT09 PT09PT09PQo+Cj4gV1NHSQo+IC0tLS0KPgo+IE92ZXJhbGwsIHRoZXJlIHdhcyBzdHJvbmcgYW5k IGZhaXJseSB1bmFuaW1vdXMgc2VudGltZW50IHRoYXQgV1NHSSBpdHNlbGYgc2hvdWxkIG1vcmUg b3IgbGVzcyBiZSBsZWZ0IGFsb25lLiBNaW5vciBhZGp1c3RtZW50cyB3b3VsZCBiZSB2YWx1YWJs ZSwgYW5kIHdlIHNob3VsZCBwdXJzdWUgdGhlbSwgYnV0IHRoZSBjb250cmlidXRvcnMgZG8gbm90 IGJlbGlldmUgdGhhdCBtYWtpbmcgYSBzdWJzdGFudGlhbCByZXZpc2lvbiB0byBXU0dJIHdvdWxk IGJlIGFkdmlzZWFibGUuCj4KPiBJIHRoZXJlZm9yZSBwcm9wb3NlIHdlIHJldmlzZSB0aGUgV1NH SSBzcGVjaWZpY2F0aW9uIHRvIFdTR0kgMS4xIGFuZCB0aGVuIGNvbnNpZGVyIGl0ICJmaW5hbCIu IFRoZSBmb2xsb3dpbmcgcG9pbnRzIHdlcmUgcmFpc2VkIGZvciByZXZpc2luZyBXU0dJLgoKU3Vy ZS4KCj4gQXN5bmNocm9ub3VzIFdTR0kKPiB+fn5+fn5+fn5+fn5+fn5+fgo+Cj4gVGhpcyB3YXMg Z2VuZXJhbGx5IHJlZ2FyZGVkIGFzIHRvbyBzdWJzdGFudGlhbCBhIGNoYW5nZSB0byBzaG9laG9y biBpbnRvIFdTR0kuCj4KPiBCZW5vaXQgcHJvcG9zZWQgdGhhdCB3ZSBjb3VsZCBhY2hpZXZlIHRo aXMgY2hhbmdlIGJ5IGFkZGluZyBhIGNvcnJlbGF0b3IgdG8gV1NHSS4gVGhpcyB3b3VsZCBhbGxv dyBzZXJ2ZXJzIHRvIGFzc29jaWF0ZSBhIGdpdmVuIGNhbGwgdG8gYGB3cml0ZSgpYGAgd2l0aCBh IHNwZWNpZmljIHJlcXVlc3QvcmVzcG9uc2UgKG1vc3QgdXNlZnVsIGluIEhUVFAvMiB3aGVyZSB0 aGlzIGNvdWxkIGNvcnJlc3BvbmQgdG8gYSBzdHJlYW0gSUQpLiBUaGlzIHdvdWxkIHRoZW4gYWxs b3cgV1NHSSB0byB0cmFuc2l0aW9uIHRvIGEgcHVyZWx5IGNhbGxiYWNrLWJhc2VkIG1vZGVsIHRo YXQgY291bGQgaW4gcHJpbmNpcGxlIGNvaGFiaXRhdGUgd2l0aCBhbiBhc3luYyBwcm90b2NvbCBp biBQeXRob24uCgpVaCwgV1NHSSBkb2Vzbid0IG5lZWQgdG8gYmUgaW52b2x2ZWQgaW4gdGhpcy4g U2VydmVycyBjYW4gYWxyZWFkeSBwYXNzCmFyYml0cmFyeSBvYmplY3RzIGFzIHdyaXRlLCBwZXJt aXR0aW5nIGFueSBjb3JyZWxhdGlvbiB0aGV5IHdhbnQuICBJJ2QKd2FudCB0byBzZWUgc29tZXRo aW5nIHZlcnkgc3BlY2lmaWMgdG8gY29uc2lkZXIgdGhlIGltcGFjdCBpbiB0ZXJtcyBvZgpXU0dJ LCBvciBXU0dJLU5HIG9yIHdoYXRldmVyIHdlIGRvIGluIGZ1dHVyZS4KCj4gVGhpcyBwcm9wb3Nh bCBpcyB3b3J0aCBoaWdobGlnaHRpbmcgbm90IGJlY3Vhc2UgSSB0aGluayB3ZSBzaG91bGQgcHVy c3VlIGl0IHdpdGggb3VyIHJldmlzaW9uIG9mIFdTR0ksIGJ1dCBiZWNhdXNlIGl0J3Mgd29ydGgg Y29uc2lkZXJpbmcgZm9yIGFueSBmdXR1cmUgc3BlY2lmaWNhdGlvbiB3ZSBjb21lIHVwIHdpdGgu IE5vdGUgYWxzbyB0aGF0IEdyYWhhbSBwb2ludGVkIG91dCB0aGF0IHRoaXMgd291bGQgcmVxdWly ZSBzb21lIGNhcmVmdWwgcmV0aGlua2luZyBvZiByZWFkcyBmcm9tIGBgd3NnaS5pbnB1dGBgLgoK Cgo+IFNlcnZlciBQdXNoCj4gfn5+fn5+fn5+fn4KPgo+IFdlIGNhbiBzdXBwb3J0IEhUVFAvMiBz ZXJ2ZXIgcHVzaCB1c2luZyBMaW5rIGhlYWRlcnMuIFRoaXMgY291bGQgb3B0aW9uYWxseSBiZSBz dXBwbGVtZW50ZWQgYnkgZGVmaW5pbmcgYSBXU0dJIGV4dGVuc2lvbiB0aGF0IHByb3ZpZGVzIGEg Y2FsbGFibGUgZm9yIGRvaW5nIHNlcnZlciBwdXNoLCB3aGljaCB3b3VsZCBiZSBhIG1pbGQgaW1w cm92ZW1lbnQgb3ZlciB0aGUgTGluayBoZWFkZXIgYXBwcm9hY2guIEEgc2ltcGxlIHByb3Bvc2Fs IGZvciBob3cgdG8gZG8gdGhpcyBjYW4gZWFzaWx5IGJlIGltcGxlbWVudGVkIHdpdGhvdXQgcmV2 aXNpbmcgdGhlIFdTR0kgc3BlY2lmaWNhdGlvbiwgYW5kIG1heSBub3QgZXZlbiBuZWVkIHRvIGJl IGVuc2hyaW5lZCBpbiBhIFBFUC4gSG93ZXZlciwgaWYgd2UgcmV2aXNlIHRoZSBXU0dJIFBFUCB3 ZSBtYXkgd2FudCB0byBwcm92aWRlIGEgc21hbGwgc2VjdGlvbiB0aGF0IGluZGljYXRlcyBob3cg dG8gYWRkIHRoZXNlIGhlYWRlcnMuCgpTaW5jZSB0aGUgcG9pbnQgb2YgV1NHSSBpcyBpbnRlcm9w LCB3ZSBzaG91bGQgZG9jdW1lbnQgdGhlIGV4cGVjdGVkCmludGVyb3AgZmFzaGlvbiBmb3IgdGhp cywgd2hhdGV2ZXIgaXQgaXMuCgo+IFNvY2tldCBFc2NhcGUgSGF0Y2gKPiB+fn5+fn5+fn5+fn5+ fn5+fn5+Cj4KPiBBc2lkZSBmcm9tIEJlbm9pdCwgc2VydmVyIG9wZXJhdG9ycyB3ZXJlIHVuYW5p bW91c2x5IGRpc21pc3NpdmUgb2YgdGhlIGlkZWEgb2YgYSBzb2NrZXQgJ2VzY2FwZSBoYXRjaCcu IEluIGdlbmVyYWwgaXQgc2VlbXMgbGlrZSBzZXJ2ZXJzIHdvdWxkIG5vdCBiZSBjYXBhYmxlIG9m IGFjaGlldmluZyB0aGlzLiBJIHRoaW5rLCB0aGVyZWZvcmUsIHRoaXMgaWRlYSBpcyB1bndvcmth YmxlLgoKSSB0aGluIEJlbm9pdCBpcyBtYWtpbmcgYXNzdW1wdGlvbnMgYWJvdXQgd2hhdCBhICdz ZXJ2ZXInIGlzIHRoYXQgYXJlCm5vdCBpbXBsaWVkIGJ5IFdTR0kgLSBhbmQgdGhpcyBpcyBsZWFk aW5nIHRvIHNvbWUgY29uZnVzaW9uLiBTZXJ2ZXJzCmFyZSBub3QgbmVjZXNzYXJpbHkgUHl0aG9u IHByb2Nlc3NlcyA6KS4KCj4gQ2h1bmtlZCBUcmFuc2ZlciBFbmNvZGluZwo+IH5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn4KPgo+IEl0IHdvdWxkIGJlIG5pY2UgdG8gZm9ybWFsaXNlIGNodW5rZWQg dHJhbnNmZXIgZW5jb2RpbmcgaW4gV1NHSS4gQ3VycmVudGx5IHRoZXJlIGlzIG5vIHdheSB0byBz aWduYWwgdG8gYXBwbGljYXRpb25zIHRoYXQgY2h1bmtlZCB0cmFuc2ZlciBlbmNvZGluZyBpcyBp biB1c2UgYnkgdGhlIGNsaWVudCwgb3IgZm9yIHRoZSBhcHBsaWNhdGlvbiB0byByZXF1ZXN0IGl0 IGZyb20gdGhlIHNlcnZlci4KPgo+IFRoaXMgc2VlbWVkIHRvIGJlIGEgbG93IHByaW9yaXR5IHdv cmsgaXRlbSwgYnV0IGlmIHdlIGNhbiBtYWtlIHRoaXMgZW5oYW5jZW1lbnQgZWFzaWx5IHRoZW4g aXQncyB3b3J0aCBjb25zaWRlcmluZy4KCkknbSB2ZXJ5IG11Y2ggYWdhaW5zdCB0aGlzLiBJIHRo aW5rIGl0cyBhbiBhYnN0cmFjdGlvbiB2aW9sYXRpb24uIEl0Cm1ha2VzIGFzIG11Y2ggc2Vuc2Ug YXMgZXhwb3NpbmcgdGhlIGd1dHMgb2YgSFRUUC8yIGZyYW1pbmcgdG8gYW4KYXBwbGljYXRpb24u IEEgd2F5IG9mIGRvaW5nIFRyYWlsZXJzIHdvdWxkIG1ha2Ugc2Vuc2UuCgo+IEJ5dGVzIGFuZCBV bmljb2RlCj4gfn5+fn5+fn5+fn5+fn5+fn4KPgo+IFNldmVyYWwgY29udHJpYnV0b3JzIGV4cHJl c3NlZCBkaXNzYXRpc2ZhY3Rpb24gZm9yIFBFUC0zMzMzJ3MgYXBwcm9hY2ggdG8gaGVhZGVycyAo bmFtZWx5LCBMYXRpbi0xLWVuY29kZWQgVW5pY29kZSBzdHJpbmdzKSwgYW5kIGV4cHJlc3NlZCBh IHByZWZlcmVuY2UgZm9yIHVzaW5nIGJ5dGVzdHJpbmdzLiBJZiB3ZSBhdHRlbXB0IHRoaXMgY2hh bmdlLCB3ZSBoYXZlIGEgYmFja3dhcmQtY29tcGF0aWJpbGl0eSBjb25jZXJuLCBzbyB3ZSBtYXkg aGF2ZSB0byBsaXZlIHdpdGggdGhpcyBkZWNpc2lvbi4KPgo+IFJlZ2FyZGxlc3MsIHRoaXMgc2hv dWxkIGJlIHRha2VuIGFzIGEgd2FybmluZyBzaWduIGZvciBhbnkgb3RoZXIgc3BlY2lmaWNhdGlv biB3ZSBhdHRlbXB0OiBtb3JlIG9uIHRoYXQgbGF0ZXIuCj4KPiBSRVFVRVNUX1VSSSBlbnZpcm9u IHZhcmlhYmxlCj4gfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo+Cj4gTXVsdGlwbGUgY29u dHJpYnV0b3JzIGV4cHJlc3NlZCBhbiBpbnRlcmVzdCBpbiBicmluZ2luZyB0aGlzIGVudmlyb25t ZW50IHZhcmlhYmxlIGludG8gV1NHSSBkaXJlY3RseSwgbWFraW5nIGl0IGEgcmVxdWlyZWQgcGFy dCBvZiB0aGUgZW52aXJvbiBkaWN0aW9uYXJ5LiBBbiBhbHRlcm5hdGl2ZSBuYW1lIGZvciB0aGlz IHdhcyBSQVdfVVJJLgoKSWYgaXRzIHJlYXNvbmFibGUgYXZhaWxhYmxlIHRvIGUuZy4gQXBhY2hl IG1vZHVsZXMsIEkgY291bGQgc2VlIGRvaW5nCnRoaXMuIFRoYXQgc2FpZCwgd2h5IGhhdmUgdHdv PyBXaHkgbm90IHJlcXVpcmUgdGhhdCBVUkkgYmUgdGhlICdSQVcnClVSST8gSSBkb24ndCBzZWUg dGhlIGJlbmVmaXQgaW4gaGF2aW5nIHR3byBzZXBhcmF0ZSB2YXJpYWJsZXMuCgo+IENvbnRlbnQg TGVuZ3Rocwo+IH5+fn5+fn5+fn5+fn5+fgo+Cj4gV2Ugc2hvdWxkIGNsYXJpZnkgaW4gdGhlIG5l dyBzcGVjaWZpY2F0aW9uIHRoYXQgYW4gYXBwbGljYXRpb24gdGhhdCByZWFkcyBiZXlvbmQgdGhl IGxvZ2ljYWwgbGVuZ3RoIG9mIHRoZSByZXF1ZXN0IGFzIGdpdmVuIGJ5IENPTlRFTlRfTEVOR1RI IHdpbGwgaGF2ZSBpdHMgcmVhZHMgcmV0dXJuIGltbWVkaWF0ZWx5IHdpdGggdGhlIGVtcHR5IHN0 cmluZy4gU2VydmVycyBhcmUgcmVxdWlyZWQgdG8gcG9saWNlIHRoYXQgbG9naWMuIFRoaXMgaXMg Y29kaWZ5aW5nIGV4aXN0aW5nIHByYWN0aWNlLCBhbmQgd291bGQgYWxzbyBtYWtlIENPTlRFTlRf TEVOR1RIIHB1cmVseSBhZHZpc29yeS4KCkkgZG9uJ3QgdW5kZXJzdGFuZCB0aGlzIGJlaW5nIGEg d29yayBpdGVtLiBQRVAtMzMzMyBhbHJlYWR5IGhhcyBhbGwKdGhpcyBpbiBpdDogLSBlLmcuICJB IHNlcnZlciBzaG91bGQgcmV0dXJuIGVtcHR5IGJ5dGVzdHJpbmdzIGZyb20gYW55CmF0dGVtcHQg dG8gcmVhZCBmcm9tIGFuIGVtcHR5IG9yIGV4aGF1c3RlZCBpbnB1dCBzdHJlYW0uICIKCj4gV2Vi c29ja2V0cyBhbmQgSFRUUC8yCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4KPiBIZXJlLCB0aGUg Y29uc2Vuc3VzIHNlZW1lZCB0byBiZSB0aGF0IHdlIHNob3VsZCBpbnZlc3RpZ2F0ZSB3aGV0aGVy IHdlIGNhbiBjb21lIHVwIHdpdGggV1NHSS1lcXVpdmFsZW50IEFQSXMgZm9yIFdlYnNvY2tldHMg YW5kIEhUVFAvMi4gVGhlIGdvYWwgaGVyZSB3b3VsZCBiZSB0byBhbGxvdyBzZXJ2ZXJzIHRoYXQg YXJlIGludGVyZXN0ZWQgaW4gb2ZmZXJpbmcgcmljaGVyIEFQSXMgdGhhbiBXU0dJIGNhbiBwcm92 aWRlIHdvdWxkIGJlIGFibGUgdG8gZG8gc28uCj4KPiBUaGlzIGlzIHBhcnRpY3VsYXJseSB2YWx1 YWJsZSBmb3IgSFRUUC8yLCB3aGljaCBjYW4gZnVuY3Rpb24gdG90YWxseSBmaW5lIHdoZW4gdXNl ZCB3aXRoIFdTR0kgYnV0IHdoaWNoIGNhbiBoYXZlIG11Y2ggcmljaGVyIGZ1bmN0aW9uYWxpdHkg bWFkZSBhdmFpbGFibGUgdG8gdGhlIGFwcGxpY2F0aW9uIHZpYSBhIGRpZmZlcmVudCBBUEkgaWYg dGhhdCBhcHBsaWNhdGlvbiByZXF1aXJlcyBpdC4KPgo+IEFzIGEgU0lHIHdlIHNob3VsZCBiZWdp biB0byBjb25zaWRlciB3aGF0IHRoZXNlIEFQSXMgc2hvdWxkIGxvb2sgbGlrZS4gV2Ugc2hvdWxk IGFsc28gYmVhciBpbiBtaW5kIHRoZSBtb3JlIGFkdmFuY2VkIGFzeW5jaHJvbm91cyBpbnRlcmZh Y2VzIChzZWUgYmVsb3cpLCBhbmQgZW5zdXJlIHRoYXQgd2UgY2FuIGVhc2lseSBwcm94eSB0aGVz ZSBBUElzIHRvIHRoZSBtb3JlIGFkdmFuY2VkIG9uZXMsIGFzIHdlIGNhbiB3aXRoIFdTR0kgdG8g QVNHSS4KCkkgZG9uJ3Qgc2VlIHRoaXMgYmVsb25naW5nIGluIGEgV1NHSSAxLjEuIEluIGEgJzIu MCcgb3IgYSAtTkcgb3Igc29tZQpvdGhlciBkaWZmZXJlbnRpYXRlZCB0aGluZywgc3VyZS4KCj4g TWV0YSBBUEkKPiB+fn5+fn5+fgo+Cj4gR3JhaGFtIHN1Z2dlc3RlZCwgYWxvbmcgd2l0aCB0aGVz ZSBtb3JlIGFkdmFuY2VkIEFQSXMsIHRoYXQgd2UgbWF5IHdhbnQgYSBtZXRhLUFQSSBvciBBUEkg ZGlzY292ZXJ5IEFQSSB0aGF0IHdvdWxkIGFsbG93IHNlcnZlcnMgdG8gdGFyZ2V0IGEgc2luZ2xl IGVudHJ5IHBvaW50IHdoaWNoIHRoZW4gcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBjYWxsYWJsZXMg Zm9yIFdTR0ksIHRoZSBXZWJzb2NrZXRzIEFQSSwgYW5kIHRoZSBIVFRQLzIgQVBJLiBXZSBzaG91 bGQgYmVhciB0aGlzIGlkZWEgaW4gbWluZCwgYnV0IEkgZG9uJ3QgYmVsaWV2ZSB3ZSBzaG91bGQg d29ycnkgdG9vIG11Y2ggYWJvdXQgd2hldGhlciB3ZSBhY3R1YWxseSBidWlsZCBpdCBvciBub3Qg YXQgdGhpcyB0aW1lOiBpdCBjYW4gZGVmaW5pdGVseSBmb2xsb3cgdGhlIHByb3RvdHlwaW5nIHdv cmsgb24gdGhlIEhUVFAvMiBzcGVjaWZpYyBBUElzLgoKWWVhaCwgSSdtIG5vdCBjbGVhciBvbiB3 aGF0IEdyYWhhbSB3YW50cyBoZXJlLiBJdHMgbm90IGEgbGFjayBJJ3ZlCmZlbHQgc28gZmFyIDop LgoKPiBBc3luY2hyb25vdXMgUHl0aG9uCj4gLS0tLS0tLS0tLS0tLS0tLS0tLQo+Cj4gVGhlcmUg d2FzIGFuIG92ZXJhbGwgcG9zaXRpdmUgcmVhY3Rpb24gdG8gaW50cm9kdWNpbmcgKnNvbWV0aGlu ZyogdGhhdCBmaWxscyB0aGUgV1NHSSByb2xlIGZvciBhcHBsaWNhdGlvbnMgdGhhdCB1c2UgYXN5 bmNocm9ub3VzIFB5dGhvbiBmcmFtZXdvcmtzLgo+Cj4gRXhhY3RseSBob3cgdGhpcyB3b3VsZCBs b29rIGlzIHVuY2xlYXIgYXQgdGhpcyBzdGFnZSwgYW5kIHRoaXMgc2hvdWxkIGJlIHRob3VnaHQg b2YgYXMgYSBsb25nLXRlcm0gZ29hbCBmb3IgdGhpcyBTSUcuIEFtYmVyIEJyb3duIGlzIGNsZWFy bHkgd29ya2luZyBvbiBhbiBpZGVhLCBhbmQgd2UgYWxzbyBoYXZlIEFuZHJldydzIHdvcmsgb24g QVNHSSwgZWl0aGVyIG9mIHdoaWNoIGNvdWxkIGJlIHVzZWQgYXMgYSBiYXNpcyBmb3IgYSBmdXR1 cmUgUEVQLgoKR3VpZG8gYWxzbyBoYWQgc29tZSBjb21tZW50YXJ5IG9uIHRoaXMgYSB5ZWFyIG9y IHNvIGJhY2ssIElJUkMuCgotUm9iCgoKLS0gClJvYmVydCBDb2xsaW5zIDxyYnRjb2xsaW5zQGhw ZS5jb20+CkRpc3Rpbmd1aXNoZWQgVGVjaG5vbG9naXN0CkhQIENvbnZlcmdlZCBDbG91ZApfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpXZWItU0lHIG1haWxp bmcgbGlzdApXZWItU0lHQHB5dGhvbi5vcmcKV2ViIFNJRzogaHR0cDovL3d3dy5weXRob24ub3Jn L3NpZ3Mvd2ViLXNpZwpVbnN1YnNjcmliZTogaHR0cHM6Ly9tYWlsLnB5dGhvbi5vcmcvbWFpbG1h bi9vcHRpb25zL3dlYi1zaWcvZ2Nwdy13ZWItc2lnJTQwbS5nbWFuZS5vcmcK