From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: usb: musb: Support gadget mode when the port is set to dual role From: Bin Liu Message-Id: <20190322124622.GB25852@uda0271908> Date: Fri, 22 Mar 2019 07:46:22 -0500 To: Greg Kroah-Hartman Cc: Maxime Ripard , Paul Kocialkowski , Paul Kocialkowski , linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, Chen-Yu Tsai List-ID: T24gVGh1LCBNYXIgMjEsIDIwMTkgYXQgMDU6NDE6MzhQTSArMDEwMCwgR3JlZyBLcm9haC1IYXJ0 bWFuIHdyb3RlOgo+IE9uIFRodSwgTWFyIDIxLCAyMDE5IGF0IDAyOjAxOjMzUE0gKzAxMDAsIE1h eGltZSBSaXBhcmQgd3JvdGU6Cj4gPiBIaSwKPiA+IAo+ID4gSSdtIHJldml2aW5nIHRoaXMgdGhy ZWFkIGEgYml0LCBiZWNhdXNlIEkgZW5jb3VudGVyZWQgdGhpcyBidWcgdG9kYXkuCj4gPiAKPiA+ IE9uIFRodSwgTWFyIDIxLCAyMDE5IGF0IDExOjAyOjEwQU0gKzAxMDAsIEJpbiBMaXUgd3JvdGU6 Cj4gPiA+IE9uIFNhdCwgQXByIDIxLCAyMDE4IGF0IDEyOjU5OjIzUE0gKzAyMDAsIFBhdWwgS29j aWFsa293c2tpIHdyb3RlOgo+ID4gPiA+IEhpLAo+ID4gPiA+Cj4gPiA+ID4gTGUgdmVuZHJlZGkg MjAgYXZyaWwgMjAxOCDDoCAwOToyNSAtMDUwMCwgQmluIExpdSBhIMOpY3JpdCA6Cj4gPiA+ID4g PiBPbiBUaHUsIE1hciAyOSwgMjAxOCBhdCAwMTo1NzoyNFBNICswMjAwLCBQYXVsIEtvY2lhbGtv d3NraSB3cm90ZToKPiA+ID4gPiA+ID4gSGksCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IE9uIFRo dSwgMjAxOC0wMy0yOSBhdCAxMToyMyArMDIwMCwgTWF4aW1lIFJpcGFyZCB3cm90ZToKPiA+ID4g PiA+ID4gPiBPbiBXZWQsIE1hciAyOCwgMjAxOCBhdCAxMTo1MjoxM1BNICswMjAwLCBQYXVsIEtv Y2lhbGtvd3NraSB3cm90ZToKPiA+ID4gPiA+ID4gPiA+IFRoaXMgYWxsb3dzIGR1YWwtcm9sZSBw b3J0cyB0byBiZSByZXBvcnRlZCBhcyBoYXZpbmcgZ2FkZ2V0IG1vZGUKPiA+ID4gPiA+ID4gPiA+ IGJ5Cj4gPiA+ID4gPiA+ID4gPiB0aGUKPiA+ID4gPiA+ID4gPiA+IG11c2JfaGFzX2dhZGdldCBo ZWxwZXIuIFRoaXMgaXMgcmVxdWlyZWQgdG8gZW5hYmxlIE1VU0IgYXQgYWxsCj4gPiA+ID4gPiA+ ID4gPiB3aXRoCj4gPiA+ID4gPiA+ID4gPiBNVVNCCj4gPiA+ID4gPiA+ID4gPiBnbHVlIGxheWVy cyB0aGF0IHNldCB0aGUgcG9ydCBtb2RlIHRvIE1VU0JfUE9SVF9NT0RFX0RVQUxfUk9MRQo+ID4g PiA+ID4gPiA+ID4gYXQKPiA+ID4gPiA+ID4gPiA+IGluaXQuCj4gPiA+ID4gPiA+ID4gPgo+ID4g PiA+ID4gPiA+ID4gTW9zdCBub3RhYmx5LCB0aGlzIGFsbG93cyBjYWxsaW5nIG11c2Jfc3RhcnQg d2hlbiBuZWVkZWQgaW4gdGhlCj4gPiA+ID4gPiA+ID4gPiB2aXJ0dWFsCj4gPiA+ID4gPiA+ID4g PiBNVVNCIHJvb3QgSFVCLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIGN1cnJlbnQgbW9kZSBz aG91bGQgYmUKPiA+ID4gPiA+ID4gPiA+IGdhZGdldAo+ID4gPiA+ID4gPiA+ID4gb3IgaG9zdC4K PiA+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gPiBUaGlzIGZpeGVzIFVTQiBPVEcgb24gQWxs d2lubmVyIGRldmljZXMgdGhhdCBJIGNvdWxkIHRlc3QgaXQKPiA+ID4gPiA+ID4gPiA+IHdpdGgs Cj4gPiA+ID4gPiA+ID4gPiBtYWlubHkgQTIwIGRldmljZXMuCj4gPiA+ID4gPiA+ID4gPgo+ID4g PiA+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogUGF1bCBLb2NpYWxrb3dza2kgPGNvbnRhY3RAcGF1 bGsuZnI+Cj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiBTdXJlbHkgdGhlcmUncyBtb3JlIHRv IGl0IHRoYW4gdGhhdC4gVGhlIGdhZGdldCBtb2RlIG9mIEEyMCBib2FyZHMKPiA+ID4gPiA+ID4g PiBoYXZlIGJlZW4gd29ya2luZyBpbiB0aGUgcGFzdCwgaW5jbHVkaW5nIHdoZW4gY29tcGlsaW5n IHdpdGggbVVTQgo+ID4gPiA+ID4gPiA+IHNldHVwIGFzIGR1YWwgcm9sZS4KPiA+ID4gPiA+ID4g Pgo+ID4gPiA+ID4gPiA+IElzIHRoaXMgYSByZWdyZXNzaW9uIHNpbmNlIGEgcGFydGljdWxhciBj b21taXQ/IE9yIGlzIHRoZXJlCj4gPiA+ID4gPiA+ID4gYW5vdGhlciwKPiA+ID4gPiA+ID4gPiBk ZWVwZXIgaXNzdWUgb3Zlcmxvb2tlZCBpbiB0aGUgY29tbWl0IGxvZz8KPiA+ID4gPiA+ID4KPiA+ ID4gPiA+ID4gVGhlIHJvb3Qgb2YgdGhlIGlzc3VlIGhlcmUgaXMgdGhhdCBtdXNiX3N0YXJ0IGlz IG5vdCBjYWxsZWQgYXQgYW55Cj4gPiA+ID4gPiA+IHBvaW50Cj4gPiA+ID4gPiA+IHdpdGhvdXQg dGhpcyBwYXRjaC4gTXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgZmxvdyBpcyB0aGUgZm9sbG93aW5n Ogo+ID4gPiA+ID4gPiB3aGVuCj4gPiA+ID4gPiA+IHRoZSBQSFkgZGV0ZWN0cyB0aGF0IHRoZXJl IHdhcyBhIFZCVVMvSUQgY2hhbmdlLCBpdCB3aWxsIG5vdGlmeSBpdHMKPiA+ID4gPiA+ID4gbGlz dGVuZXJzIChtYWlubHkgdGhlIG11c2Igc3VueGkgZ2x1ZSBsYXllcikuIFRoaXMgd2lsbCB0aGVu Cj4gPiA+ID4gPiA+IHNjaGVkdWxlCj4gPiA+ID4gPiA+IHRoZSBkcml2ZXIncyB3b3JrIChzdW54 aV9tdXNiX3dvcmspLCB3aGljaCBkb2VzIG5vdGhpbmcgc2luY2UgdGhlCj4gPiA+ID4gPiA+IFNV TlhJX01VU0JfRkxfRU5BQkxFRCBiaXQgd2FzIG5ldmVyIHNldC4gVGhpcyBiaXQgaXMgb25seSBz ZXQgYWZ0ZXIKPiA+ID4gPiA+ID4gY2FsbGluZyBzdW54aV9tdXNiX2VuYWJsZSwgd2hpY2ggaXMg Y2FsbGVkIGZyb20KPiA+ID4gPiA+ID4gbXVzYl9wbGF0Zm9ybV9lbmFibGUsCj4gPiA+ID4gPiA+ IHRoYXQgb3JpZ2luYXRlcyBmcm9tIG11c2Jfc3RhcnQuCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ IEN1cnJlbnRseSBJIHNlZSB0d28gcGxhY2VzIHdoZXJlIG11c2Jfc3RhcnQgaXMgY2FsbGVkOgo+ ID4gPiA+ID4gPiAqIG11c2JfdmlydGh1Ygo+ID4gPiA+ID4gPiAqIG11c2JfZ2FkZ2V0Cj4gPiA+ ID4gPiA+Cj4gPiA+ID4gPiA+IEluIHRoZSBsYXR0ZXIgY2FzZSwgaXQgaXMgaW4gdHVybiBjYWxs ZWQgZnJvbSB1ZGNfc3RhcnQsIHdoaWNoCj4gPiA+ID4gPiA+IHNob3VsZAo+ID4gPiA+ID4gPiBw cm9iYWJseSAoY29ycmVjdCBtZSBpZiBJJ20gd3JvbmcpIGhhcHBlbiBsYXRlciBpbiB0aGUgY2Fs bCBjaGFpbgo+ID4gPiA+ID4gPiB0aGFuCj4gPiA+ID4gPiA+IElEL1ZCVVMgY2hhbmdlIG5vdGlm aWNhdGlvbiB0aW1lLgo+ID4gPiA+ID4KPiA+ID4gPiA+IEkgZG9uJ3QgdGhpbmsgaXQgaXMgY29y cmVjdCB0aGF0IHVkY19zdGFydCgpIGlzIHRyaWdnZXJlZCBieSBJRC9WQlVTCj4gPiA+ID4gPiBl dmVudHMsIGJ1dCBJIGRvbid0IGhhdmUgYW4gQWxsd2lubmVyIHBsYXRmb3JtIHRvIHZlcmlmeSB0 aGUgY2FsbGZsb3cuCj4gPiA+ID4KPiA+ID4gPiBZZXMgeW91J3JlIHJpZ2h0LCBJIGRpZG4ndCBt YWtlIG15c2VsZiB2ZXJ5IGNsZWFyIGhlcmUuIEkgZGlkbid0Cj4gPiA+ID4gaW52ZXN0aWdhdGUg dGhlIHVkY19zdGFydCBjYWxsIHBhdGggbXVjaCBzaW5jZSBpdCB3YXMgYXBwYXJlbnRseSBub3Qg dGhlCj4gPiA+ID4gY3VscHJpdC4KPiA+ID4gPgo+ID4gPiA+ID4gSGF2ZSB5b3UgdHJpZWQgdG8g bG9hZCB3aXRoIGEgZ2FkZ2V0IGRyaXZlcj8gV2hlbiBhIGdhZGdldCBmdW5jdGlvbiBpcwo+ID4g PiA+ID4gYm91bmQgdG8gVURDLCB1ZGNfc3RhcnQoKSBpcyB0cmlnZ2VyZWQsIHdoaWNoIGluIHR1 cm4gY2FsbHMKPiA+ID4gPiA+IG11c2Jfc3RhcnQoKS4KPiA+ID4gPgo+ID4gPiA+IEl0IGRvZXMg d29yayB1bmRlciB0aGF0IHNjZW5hcmlvLCBhbHRob3VnaCBteSB1c2VkIGNhc2UgaGVyZSBpcyB1 c2luZwo+ID4gPiA+IG11c2Igd2l0aCBEVUFMX1JPTEUgYnV0IG5vIGdhZGdldCBkcml2ZXIgbG9h ZGVkLiBUaGF0IGl0LCBJIHdhbnQgdGhlCj4gPiA+ID4gbXVzYl9zdGFydCBjYWxsIHRvIG9yaWdp bmF0ZSBmcm9tIHRoZSB2aXJ0dWFsIGh1Yiwgbm90IGZyb20gdGhlIGdhZGdldAo+ID4gPiA+IHNp ZGUuCj4gPiA+ID4KPiA+ID4gPiA+ID4gSW4gdGhlIGZvcm1lciBjYXNlLCBtdXNiX3N0YXJ0IGlz IGNhbGxlZCBpbiB0aGUgcm9vdCBjb250cm9sbGVyIGh1Ygo+ID4gPiA+ID4gPiBjb250cm9sLCB3 aGVuIHNldHRpbmcgdGhlIFVTQl9QT1JUX0ZFQVRfUE9XRVIgZmVhdHVyZS4gVGhpcyBsb29rcwo+ ID4gPiA+ID4gPiBwZXJmZWN0bHkgbGVnaXQgYW5kIElNTyB0aGlzIGlzIHdoZXJlIGl0IHNob3Vs ZCBiZSBpbml0aWFsbHkgY2FsbGluZwo+ID4gPiA+ID4gPiBtdXNiX3N0YXJ0IGluIHRoZSBkdWFs IHJvbGUgY2FzZS4gVGhlIGtlcm5lbCBpcyBpbmRlZWQgc2V0dGluZyB0aGUKPiA+ID4gPiA+Cj4g PiA+ID4gPiBObyBhY3R1YWxseS4gQSBkdWFsLXJvbGUgcG9ydCBzaG91bGQgYmUgaW4gYl9pZGxl IHN0YXRlIGJ5IGRlZmF1bHQsIHNvCj4gPiA+ID4gPiBsb2dpY2FsbHkgYWxsIGFjdGlvbnMgc2hv dWxkIGdvIHRvIHRoZSBnYWRnZXQgcGF0aCB1bnRpbCB0aGUgcG9ydAo+ID4gPiA+ID4gc3dpdGNo ZXMgdG8gaG9zdCBtb2RlLgo+ID4gPiA+Cj4gPiA+ID4gSXQgbWFrZXMgc2Vuc2UgdGhhdCB0aGUg cG9ydCBzaG91bGQgYmUgaW4gYl9pZGxlIHN0YXRlIGJ5IGRlZmF1bHQsIGJ1dAo+ID4gPiA+IGhl cmUgaXQgZmFpbHMgdG8gc3dpdGNoIHRvIGhvc3QgbW9kZSB3aGVuIHRoZSBJRCBwaW4gZGV0ZWN0 cyB0aGF0IGl0Cj4gPiA+ID4gc2hvdWxkLiBPciBkb2VzIGJfaWRsZSBzdGF0ZSBlbnRhaWwgdGhh dCBhIGdhZGdldCBtdXN0IGJlIGxvYWRlZCAocGVyCj4gPiA+ID4gdGhlIFVTQiBzcGVjKSwgYW5k IHRodXMgbm90aGluZyBzaG91bGQgKGV2ZXIpIGhhcHBlbiB1bnRpbCB0aGF0IGhhcHBlbnM/Cj4g PiA+ID4KPiA+ID4gPiBJIGZpbmQgaXQgcmVhbGx5IG9kZCB0byBuZWVkIGEgZ2FkZ2V0IGRldmlj ZSB0byB0cmlnZ2VyIGhvc3QgbW9kZS4KPiA+ID4gPiBUaGlzIHBhdGNoIGRvZXMgZml4IHRoZSBp c3N1ZSwgYnV0IEkgYW0gcHV6emxlZCBhcyB0byB3aHkgaXQgaXMgbmVlZGVkCj4gPiA+ID4gaW4g dGhlIGZpcnN0IHBsYWNlLiBUaGUgY29tbWVudCBhYm92ZSBpdCBtZW50aW9ucyB0aGF0ICJJbiBP VEcgbW9kZSB3ZQo+ID4gPiA+IGhhdmUgdG8gd2FpdCB1bnRpbCB3ZSBsb2FkZWQgYSBnYWRnZXQu IFdlIGRvbid0IHJlYWxseSBuZWVkIGEgZ2FkZ2V0IGlmCj4gPiA+ID4gd2Ugb3BlcmF0ZSBhcyBh IGhvc3QgYnV0IHdlIHNob3VsZCBub3Qgc3RhcnQgYSBzZXNzaW9uIGFzIGEgZGV2aWNlCj4gPiA+ ID4gd2l0aG91dCBhIGdhZGdldCBvciBlbHNlIHdlIGV4cGxvZGUuIiwgd2hpY2ggaXMgYXBwYXJl bnRseSBjb21wYXRpYmxlCj4gPiA+ID4gd2l0aCBteSB1c2UgY2FzZTogYSBnYWRnZXQgaXMgbm90 IHJlYWxseSBuZWVkZWQgYW5kIEknbSBub3QgdHJ5aW5nIHRvCj4gPiA+ID4gc3RhcnQgYSBzZXNz aW9uIGFzIGEgZGV2aWNlIHdpdGhvdXQgYSBnYWRnZXQgbG9hZGVkLgo+ID4gPiA+Cj4gPiA+ID4g V2hhdCBkbyB5b3UgdGhpbms/Cj4gPiA+Cj4gPiA+IE9rYXksIHRoaXMgY2FtZSBkb3duIHRvIGFu IGFyZ3VtZW50IHRoYXQgd2hldGhlciB3ZSBzaG91bGQgcmVxdWlyZQo+ID4gPiBsb2FkaW5nIGEg Z2FkZ2V0IGRyaXZlciBvbiBhIGR1YWwtcm9sZSBwb3J0IHRvIHdvcmsgaW4gaG9zdCBtb2RlLAo+ ID4gPiB3aGljaCBpcyBjdXJyZW50bHkgcmVxdWlyZWQgb24gbXVzYiBzaW5jZSBhIGxvbmcgbG9u ZyB0aW1lIGFnby4KPiA+ID4KPiA+ID4gSSB1bmRlcnN0YW5kIHRoZSByZXF1aXJlbWVudCBpcyBr aW5kYSB1bm5lY2Vzc2FyeSwgYnV0IHNpbmNlIGl0IGFscmVhZHkKPiA+ID4gZXhpc3RzIG9uIG11 c2Igc3RhY2sgZm9yIGEgbG9uZyB0aW1lLCBJIGRvbid0IHBsYW4gdG8gY2hhbmdlIGl0LiBCZWNh dXNlIEkKPiA+ID4gY2Fubm90IHRoaW5rIG9mIGEgdXNlIGNhc2UgaW4gcmVhbCBwcm9kdWN0cyB0 aGF0IGRvZXNuJ3QgYXV0b21hdGljYWxseQo+ID4gPiBsb2FkIGEgZ2FkZ2V0IGZ1bmN0aW9uIG9u IHRoZSBkdWFsLXJvbGUgcG9ydC4KPiA+ID4KPiA+ID4gSWYgeW91IGNhbiBleHBsYWluIGEgdXNl IGNhc2UgaW4gcmVhbCB3b3JsZCAobm90IGEgZW5naW5lZXJpbmcgbGFiKSB0aGF0Cj4gPiA+IHRo ZSBnYWRnZXQgZHJpdmVyIHdpbGwgbm90IGJlIGxvYWRlZCBhdCBsaW51eCBib290aW5nIHVwLCBi dXQgbGF0ZXIKPiA+ID4gYmFzZWQgb24gdXNlcidzIGlucHV0LCBJIHdpbGwgcmVjb25zaWRlciBt eSBkZWNpc2lvbi4gVG8gcmVtb3ZlIHRoaXMKPiA+ID4gcmVxdWlyZW1lbnQgZnJvbSBtdXNiIHN0 YWNrLCB0aGUgd29yayBpcyBtb3JlIHRoYW4gdGhpcyBwYXRjaC4KPiA+IAo+ID4gSSBoYXZlIG9u ZSBmb3IgeW91OiB3ZSdyZSB3b3JraW5nIG9uIGEgZGV2aWNlIHRoYXQgYm9vdHMgcHJldHR5IGZh c3QsCj4gPiBhbmQgdGhlcmVmb3JlIGFyZSBwdXNoaW5nIGFzIG11Y2ggdGhpbmdzIGFzIHdlIGNh biB0byBtb2R1bGVzLiBJdAo+ID4gaW5jbHVkZXMgZ2FkZ2V0cywgdGhlIG11c2IgZHJpdmVyIGFu ZCBnbHVlLCBldGMuIFRoYXQgZG9lc24ndCBzb3VuZAo+ID4gd2F5IHZlcnkgZGlmZmVyZW50IGZy b20gd2hhdCBhIGdlbmVyaWMgZGlzdHJvIHdvdWxkIGRvIGFzIHdlbGwuCj4gPiAKPiA+IEF0IGJv b3QsIHRoZSB2YXJpb3VzIG1vZHVsZXMgZm9yIHRoZSBoYXJkd2FyZSBhcmUgbG9hZGVkCj4gPiBh dXRvbWF0aWNhbGx5OiB0aGUgbXVzYiBnbHVlLCB0aGUgbXVzYiBjb3JlLCBvdXIgVVNCIFBIWSwg ZXRjLiBXZSBlbmQKPiA+IHVwIGluIGEgc2l0dWF0aW9uIHdoZXJlIHRoZSBtdXNiIGRyaXZlciBp cyBsb2FkZWQgYW5kIHJlcG9ydGVkIHRvIHdvcmsKPiA+IHByb3Blcmx5LiBUaGUgVVNCIGNhYmxl IHRvIHRoZSBPVEcgcG9ydCAoaW4gcGVyaXBoZXJhbCkgbWlnaHQgb3IgbWlnaHQKPiA+IG5vdCBi ZSBjb25uZWN0ZWQsIGl0J3Mga2luZCBvZiBpcnJlbGV2YW50Lgo+ID4gCj4gPiBUaGUgZ2FkZ2V0 cywgaG93ZXZlciwgYXJlIG5vdCBsb2FkZWQgYXV0b21hdGljYWxseS4KPiA+IAo+ID4gTm93IGNv bWVzIGEgdXNlciB0aGF0IHdhbnRzIHRvIHVzZSBtdXNiIGFzIGEgaG9zdCwgYW5kIGNvbm5lY3Qg YQo+ID4gcHJvcGVyIFVTQiBhZGFwdGVyLCB0aGF0IHdpcmVzIHRoZSBJRCBwaW4gcHJvcGVybHku IEluIG91ciBjYXNlLCB0aGUKPiA+IHBoeSBkZXRlY3RzIGl0LCByZXBvcnRzIHRoZSBtb2RlIGNo YW5nZSwgYW5kIC4uLi4gbm90aGluZy4KPiA+IAo+ID4gVGhhdCBkb2Vzbid0IHJlYWxseSBsb29r IGxpa2UgYW4gZW5naW5lZXJpbmcgbGFiIHNldHVwIHRvIG1lLgo+IAo+IEkgYWdyZWUsIHRoYXQg c291bmRzIGxpa2UgYSB2YWxpZCBzZXR1cC4KPiAKPiBBbHNvIHJlYWxpemUgdGhhdCBBbmRyb2lk IGlzIHB1c2hpbmcgdG8gaGF2ZSBhbGwgZHJpdmVycyBhcyBtb2R1bGVzLCBzbwo+IHlvdSB3aWxs IHN0YXJ0IHRvIHNlZSBhIHdob2xlIGxvdCBtb3JlIGRldmljZXMgb3V0IHRoZXJlIGJlIG1vZHVs YXIKPiBpbnN0ZWFkIG9mIHN0YXRpY2FsbHkgYnVpbHQga2VybmVscy4gIFNvIGlzc3VlcyBsaWtl IHRoaXMgYXJlIGdvb2QgdG8KPiByZXNvbHZlIDopCgpUaGlzIGlzc3VlIGhlcmUgaXMgbm90IHJl bGF0ZWQgdG8gYnVpbGRpbmcgYWxsIGRyaXZlcnMgYXMgbW9kdWxlcy4gVG9kYXkKd2UgYWxyZWFk eSBoYXZlIGFsbCBtdXNiIHJlbGF0ZWQgZHJpdmVycyBpbmNsdWRpbmcgZ2FkZ2V0IGRyaXZlcnMg aW4KbW9kdWxlcy4KClRoZSBpc3N1ZSBkaXNjdXNzZWQgaGVyZSBpcyB0aGF0IHdoZW4gbXVzYiBp cyBjb25maWd1cmVkIGluIGR1YWwtcm9sZQptb2RlIChkcl9tb2RlID0gJ290ZycgaW4gZHRzKSwg YSBnYWRnZXQgZHJpdmVyIGhhcyB0byBiZSBib3VuZCB0byB0aGUKdWRjIHRvIG1ha2UgbXVzYiB3 b3JraW5nIGluIGhvc3QgbW9kZS4KCkkgbmV2ZXIgZGlzYWdyZWUgaXQgaXMgbm90IGlkZWFsLCBi dXQgSSBjb25zaWRlciBpdCBpcyBtaW5vciAtIHNpbmNlIHRoZQpwb3J0IGlzIGNvbmZpZ3VyZWQg dG8gZHVhbC1yb2xlIG1vZGUsIGl0IGlzIGludGVuZGVkIHRvIHdvcmsgaW4KcGVyaXBoZXJhbCBt b2RlLCB0aGVuIHdoeSBub3QgYXV0b21hdGljYWxseSBsb2FkIHRoZSBnYWRnZXQgZHJpdmVyIHdo ZW4KbGludXggYm9vdHMgdXAuCgpUbyBzdW1tYXJpZXMgbXkgY29tbWVudHMgb24gdGhpcyBhZ2Fp biwgc2luY2UgaXQgaXMgbWlub3IgaW4gbXkgb3BpbmlvbiwKSSB3b24ndCBzcGVuZCB0aW1lIHRv IHNvbHZlIGl0IG15c2VsZiAoaW4gYSBuZWFyIGZ1dHVyZSksIGJ1dCBJIGFtIG1vcmUKdGhhbiBo YXBweSB0byByZXZpZXcgYW5kIHRha2UgYW55IHBhdGNoIHdoaWNoIHNvbHZlIGl0LiAKCgpSZWdh cmRzLAotQmluLgo=