Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [RFC,1/7] usb: typec: Generalize mux mode names From: Heikki Krogerus Message-Id: <20180521130447.GA10677@kuha.fi.intel.com> Date: Mon, 21 May 2018 16:04:47 +0300 To: Mats Karrman Cc: linux-usb@vger.kernel.org List-ID: T24gRnJpLCBNYXkgMTgsIDIwMTggYXQgMDc6MjY6NDBBTSArMDIwMCwgTWF0cyBLYXJybWFuIHdy b3RlOgo+IE9uIDIwMTgtMDUtMTcgMTM6NTAsIEhlaWtraSBLcm9nZXJ1cyB3cm90ZToKPiAKPiA+ IE9uIFdlZCwgTWF5IDE2LCAyMDE4IGF0IDExOjExOjAyUE0gKzAyMDAsIE1hdHMgS2Fycm1hbiB3 cm90ZToKPiA+ID4gT24gMDUvMTYvMjAxOCAwMTo0MyBQTSwgSGVpa2tpIEtyb2dlcnVzIHdyb3Rl Ogo+ID4gPiAKPiA+ID4gPiBPbiBUdWUsIE1heSAxNSwgMjAxOCBhdCAxMToyNDowN1BNICswMjAw LCBNYXRzIEthcnJtYW4gd3JvdGU6Cj4gPiA+ID4gPiBIaSBIZWlra2ksCj4gPiA+ID4gPiAKPiA+ ID4gPiA+IE9uIDA1LzE1LzIwMTggMDk6MzAgQU0sIEhlaWtraSBLcm9nZXJ1cyB3cm90ZToKPiA+ ID4gPiA+IAo+ID4gPiA+ID4gPiBIaSBNYXRzLAo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gT24g RnJpLCBNYXkgMTEsIDIwMTggYXQgMDk6Mjg6MDRQTSArMDIwMCwgTWF0cyBLYXJybWFuIHdyb3Rl Ogo+ID4gPiA+ID4gPiA+IE9uIDIwMTgtMDUtMTEgMTM6MTQsIEhlaWtraSBLcm9nZXJ1cyB3cm90 ZToKPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IE9uIEZyaSwgTWF5IDExLCAyMDE4IGF0 IDExOjA1OjU1QU0gKzAyMDAsIE1hdHMgS2Fycm1hbiB3cm90ZToKPiA+ID4gPiA+ID4gPiA+ID4g T24gMjAxOC0wNS0xMCAxOTo0OSwgSGVpa2tpIEtyb2dlcnVzIHdyb3RlOgo+ID4gPiA+ID4gPiA+ ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gPiBPbiBUaHUsIE1heSAxMCwgMjAxOCBhdCAxMDowNDoy MUFNICswMjAwLCBNYXRzIEthcnJtYW4gd3JvdGU6Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBIaSwK PiA+ID4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gT24gMDUvMDkvMjAx OCAwMjo0OSBQTSwgSGVpa2tpIEtyb2dlcnVzIHdyb3RlOgo+ID4gPiA+ID4gPiA+ID4gPiA+ID4g Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IE9uIFR1ZSwgTWF5IDA4LCAyMDE4IGF0IDA5OjEwOjEz UE0gKzAyMDAsIE1hdHMgS2Fycm1hbiB3cm90ZToKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBI aSwKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBP biAwNS8wOC8yMDE4IDA0OjI1IFBNLCBIZWlra2kgS3JvZ2VydXMgd3JvdGU6Cj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBIaSwKPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gT24gTW9uLCBN YXkgMDcsIDIwMTggYXQgMTE6MTk6NDBQTSArMDIwMCwgTWF0cyBLYXJybWFuIHdyb3RlOgo+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gRXZlbiBzbywgd2hlbiB0aGUgbXV4IGRyaXZl ciAic2V0IiBmdW5jdGlvbiBpcyBjYWxsZWQsIGl0IHdpbGwganVzdCBnZXQgdGhlCj4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBtb2RlIGFyZ3VtZW50IGJ1dCBzaW5jZSB0aGUgbW9k ZSAoVFlQRUNfU1RBVEVfLi4uKSBpcyBvdmVybGFwcGluZyBmb3IgZGlmZmVyZW50Cj4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBBTXMgaWYgSSB1bmRlcnN0YW5kIHlvdXIgcHJvcG9z YWwgY29ycmVjdGx5LCB0aGUgbXV4IGFsc28gbmVlZHMgdG8ga25vdyB3aGF0IEFNCj4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBpcyBhY3RpdmUuCj4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiBEb2VzIHRoaXMgaW1wbHkgdGhhdCB0aGUgbXV4IHNldCBmdW5jdGlvbiBz aWduYXR1cmUgbmVlZCB0byBjaGFuZ2U/Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g TXkgcGxhbiB3YXMgYWN0dWFsbHkgdG8gcHJvcG9zZSB3ZSBnZXQgcmlkIG9mIHRoZSBjdXJyZW50 IG11eCBoYW5kbGluZwo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IChqdXN0IGxlYXZl IHRoZSBvcmllbnRhdGlvbiBzd2l0Y2gpIGluIGZhdm91ciBvZiB0aGUgbm90aWZpY2F0aW9ucyBJ J20KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBpbnRyb2R1Y2luZyB3aXRoIHRoZSB0 eXBlLWMgYnVzIGZvciB0aGUgYWx0ZXJuYXRlIG1vZGVzLiBUaGUgY3VycmVudAo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+IG11eCBoYW5kbGluZyBpcyBkZWZpbml0ZWx5IG5vdCBlbm91 Z2gsIGFuZCBkb2VzIG5vdCB3b3JrIGluIGV2ZXJ5Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gc2NlbmFyaW8sIGxpa2UgYWxzbyB5b3UgcG9pbnRlZCBvdXQuCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+IFNvLCB0aGUgbXV4IG5lZWQgdG8gc3Vic2NyaWJlIHRvIGVhY2ggc3Zp ZDptb2RlIHBhaXIgaXQgaXMgaW50ZXJlc3RlZCBpbiB1c2luZwo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiB0eXBlY19hbHRtb2RlX3JlZ2lzdGVyX25vdGlmaWVyKCkgYW5kIHRoZW4gdXNl IHRob3NlIGNhbGxiYWNrcyB0byBzd2l0Y2ggdGhlIGNvcnJlY3QKPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gc2lnbmFscyB0byB0aGUgY29ubmVjdG9yLiBBbmQgYSBkcml2ZXIgZm9yIGFu IG9mZi10aGUtc2hlbGYgbXV4IGRldmljZSBjb3VsZCBoYXZlCj4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+IHRoZSB0cmFuc2xhdGlvbiBiZXR3ZWVuIHN2aWQ6bW9kZSBwYWlycyBhbmQgbXV4 IGRldmljZSBzcGVjaWZpYyBjb250cm9sIHNwZWNpZmllZCBieQo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiBvZi9hY3BpIHByb3BlcnRpZXMuIFJpZ2h0Pwo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gWWVzLiBUaGF0IGlzIHRoZSBwbGFuLiBXb3VsZCBpdCB3b3JrIGZvciB5b3U/Cj4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gSSB0aGluayBzby4gSSdsbCBnaXZlIGl0IGEgZ28uIFdo ZW4gYWJvdXQgZG8geW91IHRoaW5rIHlvdSdsbCBwb3N0IHRoZSBuZXh0IHZlcnNpb24KPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiBvZiB5b3VyIFJGQz8gT3IgZG8geW91IGhhdmUgYW4gdXBkYXRl ZCBzZXJpZXMgYXZhaWxhYmxlIHNvbWV3aGVyZSBwdWJsaWM/Cj4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+IEknbGwgdHJ5IHRvIHB1dCB0b2dldGhlciBhbmQgcG9zdCB0aGUgbmV4dCB2ZXJzaW9uIHRv bW9ycm93Lgo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g TXkgb3JpZ2luYWwgcGxhbiB3YXMgYWN0dWFsbHkgdG8gdXNlIGp1c3QgdGhlIG5vdGlmaWNhdGlv bnMgd2l0aCB0aGUKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gbXV4ZXMsIGJ1dCBvbmUgdGhpbmcg dG8gY29uc2lkZXIgd2l0aCB0aGUgbm90aWZpY2F0aW9ucyBpcyB0aGF0IGluCj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+IHByYWN0aWNlIHdlIGhhdmUgdG8gaW5jcmVtZW50IHRoZSByZWYgY291bnQg Zm9yIHRoZSBhbHQgbW9kZSBkZXZpY2VzCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHdoZW4gZXZl ciBzb21ldGhpbmcgcmVnaXN0ZXJzIGEgbm90aWZpZXIuCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ IAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBUbyBtZSB0aGF0IGRvZXMgbm90IGZlZWwgaWRlYWwu IFRoZSBkZXBlbmRlbmN5IHNob3VsZCBnbyB0aGUgb3RoZXIgd2F5Cj4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+IGFyb3VuZCBpbiBjYXNlIG9mIHRoZSBtdXhlcy4gVGhhdCBpcyB3aHkgSSBsaWtlZCB0 aGUgc2VwYXJhdGUgQVBJIGFuZAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBoYW5kbGluZyBmb3Ig dGhlIG11eGVzIGZlbHQgYmV0dGVyLCBhcyBpdCB3aWxsIGRvIGp1c3QgdGhhdC4gVGhlIG11eAo+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBpcyB0aGVuIGEgInNlcnZpY2UiIHRoYXQgdGhlIHBvcnQg ZHJpdmVyIGNhbiBhcyBmb3IsIGFuZCBpZiBpdCBnZXRzIGEKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gaGFuZGxlIHRvIGEgbXV4LCB0aGUgbXV4IHdpbGwgaGF2ZSBpdHMgcmVmIGNvdW50IGluY3Jl bWVudGVkLgo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g U28gSSB0aGluayBmaXhpbmcgdGhlIG11eCBBUEkgd291bGQgcGVyaGFwcyBiZSBiZXR0ZXIgYWZ0 ZXIgYWxsLgo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBUaG91Z2h0cz8KPiA+ID4gPiA+ID4gPiA+ ID4gPiA+IFNvLCB3ZSdyZSBiYWNrIHRvIGEgbXV4IEFQSSBzaW1pbGFyIHRvIHRoZSBjdXJyZW50 IG9uZSwgd2hlcmU6Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAtIHRoZSBwb3J0IGRyaXZlciBhbmQg dGhlIG11eCBkcml2ZXIgYXJlIGNvbm5lY3RlZCB0aHJvdWdoICJncmFwaCIKPiA+ID4gPiA+ID4g PiA+ID4gPiA+IC0gYWx0IG1vZGUgZHJpdmVyIGZpbmRzIGl0cyBwb3J0IG11eCB1c2luZyB0aGUg dHlwZWMgY2xhc3MgbXV4IGFwaQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gLSB0aGUgbXV4IG1vZGUg c2V0dGluZyBmdW5jdGlvbiBhcmd1bWVudHMgbm93IGluY2x1ZGUgYm90aCBzdmlkIGFuZCBtb2Rl Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gPiA+IEkgbGlrZSB0aGF0 Lgo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBPbmUgdGhvdWdo dCB0aGF0IHBvcHBlZCB1cCBhZ2FpbiBpcyBpZiB3ZSwgc29tZXdoZXJlIGRvd24gdGhlIGxpbmUs Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiB3aWxsIHNlZSBzb21lIHN1cGVyIGRldmljZSB0aGF0IHN1 cHBvcnQgbWFueSBkaWZmZXJlbnQgYWx0ZXJuYXRlIG1vZGVzCj4gPiA+ID4gPiA+ID4gPiA+ID4g PiBvbiB0aGUgc2FtZSBwb3J0IGFuZCB0aGVyZWZvcmUgd2lsbCBuZWVkIHRvIGhhdmUgbXVsdGlw bGUgbXV4IGRldmljZXM/Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBIb3dldmVyIEkgdGhpbmsgdGhl IG11eCBhcGkgY291bGQgYmUgZXh0ZW5kZWQgKGxhdGVyIG9uKSB0byBzdXBwb3J0IHNvbWUKPiA+ ID4gPiA+ID4gPiA+ID4gPiA+IGFnZ3JlZ2F0ZSBtdXggZGV2aWNlIHRoYXQgbWFuYWdlcyBtdWx0 aXBsZSBwaHlzaWNhbCBkZXZpY2VzLgo+ID4gPiA+ID4gPiA+ID4gPiA+IElmIHdlIHNpbXBseSBo YWQgYWx3YXlzIGEgbXV4IGZvciBldmVyeSBhbHRlcm5hdGUgbW9kZSwgdGhhdCB3b3VsZCBub3QK PiA+ID4gPiA+ID4gPiA+ID4gPiBiZSBhIHByb2JsZW0uIFNvIHRoZSBwb3J0IHdvdWxkIGhhdmUg aXRzIG93biBtdXgsIGFuZCBldmVyeSBzdXBwb3J0ZWQKPiA+ID4gPiA+ID4gPiA+ID4gPiBhbHRl cm5hdGUgbW9kZSBhbHNvIGhhZCBpdHMgb3duLiBJIHRoaW5rIHRoYXQgcmVtb3ZlcyB0aGUgbmVl ZCB0byBkZWFsCj4gPiA+ID4gPiA+ID4gPiA+ID4gd2l0aCB0aGUgc3ZpZDptb2RlIHdoZW4gdXNp bmcgdGhlIG11eGVzLCBhcyB0aGV5IGFyZSBhbHJlYWR5IHRpZWQgdG8gYQo+ID4gPiA+ID4gPiA+ ID4gPiA+IHNwZWNpZmljIGFsdGVybmF0ZSBtb2RlcywgcmlnaHQ/IFdpdGggYSBzaW5nbGUgbXV4 IGRldmljZSwgZm9yIGV4YW1wbGUKPiA+ID4gPiA+ID4gPiA+ID4gPiBwaTN1c2IzMDUzMiwgdGhl IGRyaXZlciBqdXN0IG5lZWRzIHRvIHJlZ2lzdGVyIGEgbXV4IGZvciB0aGUgcG9ydCBhbmQKPiA+ ID4gPiA+ID4gPiA+ID4gPiBzZXBhcmF0ZSBtdXggZm9yIERQLCBidXQgSSBkb24ndCB0aGluayB0 aGF0J3MgYSBodWdlIHByb2JsZW0uCj4gPiA+ID4gPiA+ID4gPiA+IEhtbS4uLiBBcyBhbiBoeXBv dGhldGljYWwgZXhhbXBsZSBJIGhhdmUgd3JpdHRlbiBhIGRyaXZlciBmb3IgYW5vdGhlciBtdXgK PiA+ID4gPiA+ID4gPiA+ID4gZnJvbSBUSSBhbmQgYWNjb3JkaW5nIHRvIGl0cyBkYXRhIHNoZWV0 Ogo+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gIiIiCj4gPiA+ID4gPiA+ID4g PiA+IFRoZSBIRDNTUzQ2MCBpcyBhIGdlbmVyaWMgYW5hbG9nIGRpZmZlcmVudGlhbAo+ID4gPiA+ ID4gPiA+ID4gPiBwYXNzaXZlIHN3aXRjaCB0aGF0IGNhbiB3b3JrIGZvciBhbnkgaGlnaCBzcGVl ZAo+ID4gPiA+ID4gPiA+ID4gPiBpbnRlcmZhY2UgYXBwbGljYXRpb25zIGFzIGxvbmcgYXMgaXQg aXMgYmlhc2VkIGF0IGEKPiA+ID4gPiA+ID4gPiA+ID4gY29tbW9uIG1vZGUgdm9sdGFnZSByYW5n ZSBvZiAwLTJWIGFuZCBoYXMKPiA+ID4gPiA+ID4gPiA+ID4gZGlmZmVyZW50aWFsIHNpZ25hbGlu ZyB3aXRoIGRpZmZlcmVudGlhbCBhbXBsaXR1ZGUgdXAgdG8KPiA+ID4gPiA+ID4gPiA+ID4gMTgw MG1WcHAuLi4uCj4gPiA+ID4gPiA+ID4gPiA+ICIiIgo+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4g PiA+ID4gPiA+ID4gV2hhdCBJIGFtIHRoaW5raW5nIGlzIHRoYXQgaXQgZS5nLiB3b3VsZCBiZSBw b3NzaWJsZSB0byB1c2UgdGhpcy9hIG11eCB3aXRoIFVTQlNTICsKPiA+ID4gPiA+ID4gPiA+ID4g MmNoIERQICsgMmNoIHNvbWV0aGluZyBlbHNlIChIRE1JPywgVGh1bmRlckJvbHQ/LCA/Pz8pLiBU aGUgcHJvYmxlbSBoZXJlIGlzCj4gPiA+ID4gPiA+ID4gPiA+IHRoYXQgaXQgaXMgYSBnZW5lcmFs IG11eCBkZXZpY2Ugc28gdGhlIGRyaXZlciB3cml0ZXIgZG9lcyBub3Qga25vdyB3aGF0IHR5cGVz IG9mCj4gPiA+ID4gPiA+ID4gPiA+IG11eGVzIHRvIHJlZ2lzdGVyLiBJIGd1ZXNzIGl0IGNvdWxk IGFsc28gYmUgY29uZmlndXJlZCB1c2luZyBwcm9wZXJ0aWVzIGJ1dCB0aGF0Cj4gPiA+ID4gPiA+ ID4gPiA+IHdvdWxkIGJlIHZlcnkgY29tcGxpY2F0ZWQuCj4gPiA+ID4gPiA+ID4gPiBXaHk/IEFs bCB0aGUgbXV4IGRyaXZlciBuZWVkcyB0byBnZXQgZnJvbSBkZXZpY2UgcHJvcGVydGllcyBpcyB0 aGUKPiA+ID4gPiA+ID4gPiA+IFNWSUQgYW5kIHRoZSBtb2RlLgo+ID4gPiA+ID4gPiA+IFNpZ2gu Li4gQWdhaW4sIGlmIHRoZSBzYW1lIG11eCBoYW5kbGVzIHNpZ25hbHMgZm9yIG1vcmUgdGhhbiBv bmUgYWx0ZXJuYXRlIG1vZGUKPiA+ID4gPiA+ID4gPiB0aGUgZHJpdmVyIHdvbid0IGtub3cgd2hh dCBhbHRlcm5hdGUgbW9kZSBpcyBpbnRlbmRlZCBpZiBpdCBvbmx5IHJlY2VpdmVzIHRoZQo+ID4g PiA+ID4gPiA+IGNvbm5lY3RvciBzdGF0ZSB3aGljaCB1c2Ugb3ZlcmxhcHBpbmcgbnVtYmVycyBm b3IgZGlmZmVyZW50IGFsdGVybmF0ZSBtb2Rlcy4KPiA+ID4gPiA+ID4gWW91IGFyZSBtaXNzaW5n IHRoZSBwb2ludC4gV2UgYXJlIG5vdyByZWdpc3RlcmluZyBzZXBhcmF0ZSBzdHJ1Y3QKPiA+ID4g PiA+ID4gdHlwZWNfbXV4IGZvciBldmVyeSBhbHQgbW9kZS4gVGhlIC0+c2V0IGNhbGxiYWNrIHdp bGwgbmVlZCB0byBiZQo+ID4gPiA+ID4gPiBpbXBsZW1lbnRlZCBzZXBhcmF0ZWx5IGZvciBldmVy eSBhbHQgbW9kZS4KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IFNvIGluIGNhc2Ugb2YgVEkgSEQz U1M0NjAsIHdlIG5lZWQgdG8gaW5pdGlhbGx5IHJlZ2lzdGVyIGEgc3RydWN0Cj4gPiA+ID4gPiA+ IHR5cGVjX211eCBmb3IgRFAgYW5kIGltcGxlbWVudCBhIGZ1bmN0aW9uIGZvciB0aGUgLT5zZXQg Y2FsbGJhY2sgZm9yCj4gPiA+ID4gPiA+IERQIG9ubHkuIElmIHdlIGxhdGVyIG5lZWQgdG8gc3Vw cG9ydCBhbm90aGVyIGFsdCBtb2RlIHdpdGggdGhhdCBtdXgKPiA+ID4gPiA+ID4gKEhETUkgcGVy aGFwcyksIHdlIG5lZWQgdG8gcmVnaXN0ZXIgc2Vjb25kIHN0cnVjdCB0eXBlY19tdXggYW5kCj4g PiA+ID4gPiA+IGltcGxlbWVudCBzZXBhcmF0ZSBmdW5jdGlvbiBmb3IgdGhhdCBhbHQgbW9kZSBh bG9uZSBhbmQgcG9pbnQgdGhlCj4gPiA+ID4gPiA+IC0+c2V0IGNhbGxiYWNrIG9mIHRoZSBzZWNv bmQgc3RydWN0IHR5cGVjX211eCB0byB0aGF0Lgo+ID4gPiA+ID4gTm8sIEknbSBub3QgbWlzc2lu ZyB0aGUgcG9pbnQuLi4gQXQgbGVhc3Qgbm90IHRoYXQgb25lIDopCj4gPiA+ID4gPiBCdXQgSSB0 aGluayB5b3UgYXJlIG1pc3NpbmcgbXkgcG9pbnQgdGhhdCBhIGRyaXZlciBmb3IgYSBnZW5lcmFs Cj4gPiA+ID4gPiBwdXJwb3NlIG11eCBkZXZpY2Ugd2lsbCBlbmQgdXAgaGF2aW5nIHRvIHJlZ2lz dGVyIGEgc3RydWN0IHR5cGVjX211eAo+ID4gPiA+ID4gYW5kIGltcGxlbWVudCBhIC0+c2V0IGZ1 bmN0aW9uIGZvciBldmVyeSBwb3NzaWJsZSBhbHRlcm5hdGUgbW9kZQo+ID4gPiA+ID4gdGhhdCBl dmVudHVhbGx5IHdpbGwgZXhpc3QgKGFuZCBjYW4gYmUgdXNlZCB3aXRoIHRoYXQgbXV4KS4KPiA+ ID4gPiBPSywgd2UgYXJlIG9uIHRoZSBzYW1lIHBhZ2UuIFNvIGJhY2sgdG8gbXkgcXVlc3Rpb24u IEknbGwgcmVwaHJhc2U6Cj4gPiA+ID4gSG93IHdvdWxkIHNlcGFyYXRlIC0+c2V0IGZ1bmN0aW9u cyBkaWZmZXIgZnJvbSBkZWxpdmVyaW5nIHRoZQo+ID4gPiA+IFNWSUQ6bW9kZSBvbiB0b3Agb2Yg dGhlIFNWSUQgc3BlY2lmaWMgY29ubmVjdG9yIHN0YXRlIHRvIHRoZSBtdXg/IFlvdQo+ID4gPiA+ IHN0aWxsIG5lZWQgdG8gaGFuZGxlIGV2ZXJ5IGFsdGVybmF0ZSBtb2RlIHNlcGFyYXRlbHkgaW4g dGhlIG11eAo+ID4gPiA+IGRyaXZlci4KPiA+ID4gTXkgaWRlYSwgYXMgSSB0cmllZCB0byBleHBs YWluIGJlZm9yZSwgaXMgdG8gdXNlIHByb3BlcnRpZXMgZm9yIG1hcHBpbmcKPiA+ID4gbXV4IGRl dmljZSBzcGVjaWZpYyBzdGF0ZXMgdG8gc3ZpZDptb2RlOnN0YXRlLiBUaGUgbXV4IGRyaXZlciB3 b3VsZCBub3QKPiA+ID4gbmVlZCB0byBrbm93IGFueXRoaW5nIGFib3V0IGFsdGVybmF0ZSBtb2Rl cywgdGhlIHJlc3BvbnNpYmlsaXR5IHdvdWxkIGJlCj4gPiA+IHdpdGggdGhlIHN5c3RlbSBhcmNo aXRlY3QgdG8gZ2V0IHRoZSBtYXBwaW5nIHJpZ2h0IGluIGZpcm13YXJlLgo+ID4gT0ssIEkgdW5k ZXJzdGFuZC4gSSdtIGEgbGl0dGxlIGJpdCBzY2FyZWQgYWJvdXQgdGhhdCBraW5kIG9mIG1hcHBp bmdzLgo+ID4gQXQgbGVhc3QgdGhlIGNvbm5lY3RvciBzdGF0ZSB2YWx1ZSB3ZSBhcmUgZGVhbGlu ZyB3aXRoIGhlcmUgaXMgTGludXgKPiA+IGtlcm5lbCBzcGVjaWZpYyBpbmRleCBudW1iZXIsIHNv IEkgZG9uJ3Qga25vdyBpZiBpdCdzIE9LIHRvIGdldCB0aGF0Cj4gPiBmcm9tIGEgZGV2aWNlIHBy b3BlcnR5LiBJIHdvbmRlciBpZiBzdHJpbmcgaWRlbnRpZmllcnMgd291bGQgYmUgbW9yZQo+ID4g YWNjZXB0YWJsZSBmb3IgaGFyZHdhcmUgZGVzY3JpcHRpb25zPwo+IAo+IFllcywgc29tZXRoaW5n IGluIHRoZSBsaW5lIG9mOgo+IAo+ID8/Pz8/PyBtYXBwaW5ncyB7Cj4gPz8/Pz8/ID8/Pz8/PyBt YXAgewo+ID8/Pz8/PyA/Pz8/Pz8gPz8/Pz8/IHN2aWQgPSAiZGlzcGxheXBvcnQiOwo+ID8/Pz8/ PyA/Pz8/Pz8gPz8/Pz8/IHN0YXRlID0gInBpbi1hc3N5LWMiOwo+ID8/Pz8/PyA/Pz8/Pz8gPz8/ Pz8/IHNldHRpbmcgPSAic29tZXRoaW5nc29tZXRoaW5nIjs/Pz8/Pz8gLy8gZGV2aWNlIGRyaXZl ciBzcGVjaWZpYwo+ID8/Pz8/PyA/Pz8/Pz8gfTsKPiA/Pz8/Pz8gPz8/Pz8/IG1hcCB7Cj4gPz8/ Pz8/ID8/Pz8/PyA/Pz8/Pz8gLi4uZXRjLi4uCj4gPz8/Pz8/IH07Cj4gCj4gVGhlbiB0aGUgc3Zp ZCBhbmQgc3RhdGUgc3RyaW5ncyBjb3VsZCBiZSBtYXBwZWQgdG8gbnVtYmVycyBieSB0eXBlYy9j bGFzcyBBUEkKPiBhbmQgc2V0dGluZyBzdHJpbmdzIGJ5IHRoZSBtdXggZHJpdmVyIGludGVybmFs bHkgYW5kIHRoZSBtdXggZHJpdmVyIHdpbGwgYWN0IG9uCj4gc3ZpZDpzdGF0ZSBpbmZvIGZyb20g dGhlIHBhcnRuZXIgZHJpdmVyKHMpIHRpZWQgdG8gdGhlIG11eC4KPiAKPiA+IFN0cmluZ3Mgb3Ig bnVtYmVycywgSSBndWVzcyB3ZSB3b3VsZCBuZWVkIHRvIGRvY3VtZW50IHNvbWV3aGVyZSB0bwo+ ID4gd2hpY2ggYWx0ZXJuYXRlIG1vZGUgY29ubmVjdG9yIHN0YXRlIGEgbnVtYmVyL3N0cmluZyBp cyBtYXBwZWQgdG8uIEkKPiA+IGRvbid0IGtub3cgaWYgT0YgYmluZGluZ3MgaXMgZW5vdWdoPwo+ IAo+IFRoYXQncyB3aGF0IEkgaGFkIGluIG1pbmQuCj4gCj4gPiBCdHcuIEknbSBub3QgY29udmlu Y2VkIHdlIHdvdWxkIGV2ZXIgZ2V0IHRoaXMgaW5mb3JtYXRpb24gZnJvbSBBQ1BJCj4gPiB0YWJs ZXMgb24gZGV2aWNlcyB0YXJnZXRlZCBmb3Igd2luZG93cywgYnV0IGxldCdzIG5vdCB3b3JyeSBh Ym91dCB0aGF0Cj4gPiBub3cuCj4gCj4gQWgsIEkgYWRtaXQgSSBkaWQgbm90IGNvbnNpZGVyIHRo aXMgY2FzZS4gQmVpbmcgdXNlZCB0byBlbWJlZGRlZWQvZGV2aWNldHJlZSBzeXN0ZW1zCj4gSSBq dXN0IGltYWdpbmVkIHRoZSBoYXJkd2FyZSBkZXNjcmlwdGlvbiBhcyBzb21ldGhpbmcgeW91IGFy ZSBhbHdheXMgaW4gY29udHJvbCBvZi4KPiBJJ20gYWZyYWlkIEkgaGF2ZSBubyBpZGVhIGFib3V0 IHRoaXMuCgpJdCBzaG91bGQgbm90IHByZXZlbnQgdXMgZnJvbSB1c2luZyB0aGUgc29sdXRpb24u IFdlIGp1c3QgY2FuJ3QgYXNzdW1lCnRoYXQgdGhlIEhXIGRlc2NyaXB0aW9uIGNhbiBhbHdheXMg c3VwcGx5IHRoaXMgaW5mb3JtYXRpb24sIGFuZAppbXBsZW1lbnQgdGhlIHNvbHV0aW9uIHdpdGgg dGhhdCBpbiBtaW5kIGFzIHVzdWFsLgoKClRoYW5rcywK