From mboxrd@z Thu Jan 1 00:00:00 1970 From: Darren Hart Subject: Re: [PATCH 1/1] apple-gmux: Add initial documentation Date: Mon, 4 Jan 2016 12:21:40 -0800 Message-ID: <20160104202140.GE26072@malice.jf.intel.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Lukas Wunner , Jonathan Corbet , Daniel Vetter Cc: Matthew Garrett , Andreas Heider , Bruno Bierbaumer , William Brown , linux-doc@vger.kernel.org, dri-devel@lists.freedesktop.org, platform-driver-x86@vger.kernel.org, Seth Forshee , Bruno Premont , Bernhard Froemel List-Id: platform-driver-x86.vger.kernel.org T24gTW9uLCBKYW4gMDQsIDIwMTYgYXQgMDU6NTI6MDZQTSArMDEwMCwgTHVrYXMgV3VubmVyIHdy b3RlOgo+IERvY3VtZW50IHdoYXQgSSd2ZSBsZWFybmVkIHNvIGZhciBhYm91dCB0aGUgZ211eCBz byB0aGF0IHdlIGNhbgo+IGNvbGxhYm9yYXRpdmVseSByZXZlcnNlLWVuZ2luZWVyIGl0cyByZW1h aW5pbmcgdW5rbm93biBiaXRzCj4gd2l0aG91dCBldmVyeW9uZSBoYXZpbmcgdG8gc3RhcnQgZnJv bSBzY3JhdGNoLgo+IAoKK0pvbiBDb3JiZXQKK0RhbmllbCBWZXR0ZXIKK2xpbnV4LWRvYwoKQW55 IGNvbmNlcm5zIHdpdGggdGhpcyBzZXJpZXM/IElmIG5vdCwgSSdsbCB0YWtlIGl0IGluIHZpYSB0 aGUgcGR4ODYgdHJlZS4KClRoYW5rcywKCkRhcnJlbgoKPiBUaGUgRE9DIHNlY3Rpb25zIGFyZSBi b3VuZCB0b2dldGhlciBpbiB0aGUgZ3B1LnRtcGwgRG9jQm9vawo+IHVuZGVyIGEgbmV3IHZnYV9z d2l0Y2hlcm9vICJIYW5kbGVycyIgY2hhcHRlci4gRXZlbnR1YWxseQo+IHRoaXMgc2hvdWxkIGJl IGFtZW5kZWQgd2l0aCBkb2N1bWVudGF0aW9uIGFib3V0IHRoZSBmb3VyIG90aGVyCj4gaGFuZGxl cnMgdGhhdCBleGlzdCBzbyBmYXIgKG5vdXZlYXUgdjEgRFNNLCBub3V2ZWF1IE9wdGltdXMgRFNN LAo+IHJhZGVvbiBBVFBYLCBhbWRncHUgQVRQWCkuCj4gCj4gUmVxdWlyZXMga2VybmVsLWRvYyB3 aXRoIGFzY2lpZG9jIHN1cHBvcnQuCj4gCj4gVGhlIEVGSSB2YXJpYWJsZSB3YXMgcmV2ZXJzZS1l bmdpbmVlcmVkIGJ5IEJydW5vIEJpZXJiYXVtZXIKPiA8YnJ1bm9AYmllcmJhdW1lci5uZXQ+IGFu ZCBBbmRyZWFzIEhlaWRlciA8YW5kcmVhc0BtZWV0ci5kZT4uCj4gCj4gU29tZSBvZiB0aGUgcmVt YWluaW5nIG9wZW4gcXVlc3Rpb25zOgo+IAo+ICogSG93IGFyZSB2YmxhbmsgaW50ZXJ2YWxzIHN5 bmNocm9uaXplZCBvbiByZXRpbmFzIHRvIGFjaGlldmUgc2VhbWxlc3MKPiAgIHN3aXRjaGluZz8g SXMgdGhlIERQIG11eCBjYXBhYmxlIG9mIHRoaXM/IEl0J3Mgbm90IG1lbnRpb25lZCBpbiB0aGUK PiAgIGRhdGEgc2hlZXRzLiBPciBpcyBpdCBkb25lIGF0IHRoZSBPUyBsZXZlbCwgaS5lLiBkbyB3 ZSBoYXZlIHRvCj4gICBzeW5jaHJvbml6ZSB2YmxhbmsgaW50ZXJ2YWxzIGJldHdlZW4gRFJNIGRy aXZlcnM/IFRoZXJlJ3MgYSBzaWduYWwKPiAgIGNvbWluZyBmcm9tIHRoZSBwYW5lbCBjb25uZWN0 b3IgYW5kIGdvaW5nIGludG8gZ211eCwgY291bGQgdGhpcyBiZQo+ICAgdGhlIHZibGFuayBzaWdu YWwgYXMgcmVjZWl2ZWQgYnkgdGhlIHBhbmVsIHRvIHByb3Blcmx5IHRpbWUgdGhlCj4gICBzd2l0 Y2g/Cj4gCj4gKiBPbiByZXRpbmFzIHRoZXJlJ3MgYW4gSTJDIGJ1cyBiZXR3ZWVuIGdtdXggYW5k IHRoZSBjb25uZWN0b3Igb2YgdGhlCj4gICByaWdodCBJL08gYm9hcmQsIGFwcGFyZW50bHkgbGVh ZGluZyB0byB0aGUgUGFyYWRlIFBTODQwMUEgSERNSQo+ICAgcmVwZWF0ZXIuIFdoYXQgaXMgdGhp cyBmb3IsIGlzIGl0IGNvbnRyb2xsZWQgdmlhIGdtdXggcmVnaXN0ZXJzPwo+ICAgRGF0YSBzaGVl dDoKPiAgIGh0dHA6Ly93d3cucGFyYWRldGVjaC5jb20vcHJvZHVjdHMvaml0dGVyLWNsZWFuaW5n LXJlcGVhdGVycy9wczg0MDEvCj4gCj4gKiBPbiByZXRpbmFzIHRoZXJlJ3MgYW4gSTJDIGJ1cyBi ZXR3ZWVuIGdtdXggYW5kIHRoZSBMRUQgZHJpdmVyLgo+ICAgUHJlLXJldGluYXMgY29ubmVjdGVk IHRoZSBMRUQgZHJpdmVyIHRvIFNNQlVTLiBBcmUgdGhlcmUgYWRkaXRpb25hbAo+ICAgZ211eCBy ZWdpc3RlcnMgb24gcmV0aW5hcyB0byBjb250cm9sIGl0Pwo+IAo+ICogVGhlIE1hY1BybzYsMSAy MDEzIGFsc28gaGFzIGEgZ211eCwgdGhlIHNhbWUgUmVuZXNhcyBSNEYyMTEzIGFzIHRoZQo+ICAg cmV0aW5hIE1hY0Jvb2sgUHJvLiBUaGUgTWFjIFBybyBkb2Vzbid0IGhhdmUgYSBidWlsdC1pbiBk aXNwbGF5LAo+ICAgc28gd2hhdCBpcyBpdHMgcHVycG9zZT8gUG93ZXIgY29udHJvbCBvZiB0aGUg ZHVhbCBGaXJlUHJvIEdQVXM/Cj4gICBTd2l0Y2hpbmcgb2YgdGhlIGV4dGVybmFsIERQL1RodW5k ZXJib2x0IHBvcnRzPyBUaGUgaUZpeGl0IHRlYXJkb3duCj4gICBjbGVhcmx5IHNob3dzIG9uZSBU SSBIRDNTUzIxMiBEaXNwbGF5UG9ydCBtdXggb24gdGhlIGxvZ2ljIGJvYXJkIG5leHQKPiAgIHRv IG9uZSBvZiB0aGUgdGhyZWUgVGh1bmRlcmJvbHQgY29udHJvbGxlcnMuIEhvd2V2ZXIgc2l4IG11 eGVzIHdvdWxkCj4gICBiZSBuZWNlc3NhcnkgdG8gc3dpdGNoIGFsbCBzaXggcG9ydHMgYmV0d2Vl biBHUFVzLiBUaGUgbXV4IGlzIHByb2JhYmx5Cj4gICBuZWNlc3NhcnkgZm9yIG9uZSBvZiB0aGUg ZGlzcGxheSBjb25maWd1cmF0aW9ucyBhbGxvd2VkIGJ5IEFwcGxlLAo+ICAgYnV0IHdoaWNoIG9u ZT8KPiAgIGh0dHBzOi8vd3d3LmlmaXhpdC5jb20vVGVhcmRvd24vTWFjK1BybytMYXRlKzIwMTMr VGVhcmRvd24vMjA3NzgKPiAgIGh0dHBzOi8vZDNuZXZ6Zms3aWkzYmUuY2xvdWRmcm9udC5uZXQv aWdpL2ZFTEJUbnQzMVFobkRzcXEuaHVnZQo+ICAgaHR0cHM6Ly9zdXBwb3J0LmFwcGxlLmNvbS9l bi11cy9IVDIwMjgwMQo+IAo+ICogUmVnaXN0ZXJzIHdlIGhhdmVuJ3QgZGVjb2RlZCB5ZXQ6Cj4g ICAweDcwMCAzMiBCaXQgY29uZmlnbWFwPwo+ICAgMHg3MDggMzIgQml0IHBvd2VyIHNlcXVlbmNl Pwo+ICAgMHg3MTIgIDggQml0IHN0YXR1cyBvZiBjbG9jayBmcm9tIHBhbmVsIG9uIHJldGluYXM/ Cj4gICAweDcxMyAgOCBCaXQgZGl0bz8KPiAgIDB4NzI0IDE2IEJpdCBiYWNrbGlnaHQsIHJhdyB2 YWx1ZT8KPiAgIDB4NzYwIDMyIEJpdCBiYWNrbGlnaHQKPiAgIDB4NzY0IDMyIEJpdCBiYWNrbGln aHQKPiAgIDB4NzY4ICA4IEJpdCBiYWNrbGlnaHQKPiAgIDB4NzZhIDE2IEJpdCBiYWNrbGlnaHQK PiAgIDB4NzZjIDE2IEJpdCBiYWNrbGlnaHQKPiAgIDB4NzZlIDE2IEJpdCBiYWNrbGlnaHQKPiAg IDB4NzdmICAgICAgICBlZHAvZHAvaGRtaSBwcm9iZT8gcmV0aW5hIG9ubHkuCj4gCj4gU2lnbmVk LW9mZi1ieTogTHVrYXMgV3VubmVyIDxsdWthc0B3dW5uZXIuZGU+Cj4gLS0tCj4gIERvY3VtZW50 YXRpb24vRG9jQm9vay9ncHUudG1wbCAgICB8ICAyMiArKysrKysrKwo+ICBkcml2ZXJzL3BsYXRm b3JtL3g4Ni9hcHBsZS1nbXV4LmMgfCAxMTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMzUgaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYg LS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZ3B1LnRtcGwgYi9Eb2N1bWVudGF0aW9uL0Rv Y0Jvb2svZ3B1LnRtcGwKPiBpbmRleCAyMjVhMjQ2Li45ZTk1YWExIDEwMDY0NAo+IC0tLSBhL0Rv Y3VtZW50YXRpb24vRG9jQm9vay9ncHUudG1wbAo+ICsrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9v ay9ncHUudG1wbAo+IEBAIC0zNjU4LDggKzM2NTgsMzAgQEAgaW50IG51bV9pb2N0bHM7PC9zeW5v cHNpcz4KPiAgICAgIDwvc2VjdDE+Cj4gICAgPC9jaGFwdGVyPgo+ICAKPiArICA8Y2hhcHRlciBp ZD0iaGFuZGxlcnMiPgo+ICsgICAgPHRpdGxlPkhhbmRsZXJzPC90aXRsZT4KPiArICAgIDxzZWN0 MT4KPiArICAgICAgPHRpdGxlPmFwcGxlLWdtdXggSGFuZGxlcjwvdGl0bGU+Cj4gKyFQZHJpdmVy cy9wbGF0Zm9ybS94ODYvYXBwbGUtZ211eC5jIE92ZXJ2aWV3Cj4gKyFQZHJpdmVycy9wbGF0Zm9y bS94ODYvYXBwbGUtZ211eC5jIEludGVycnVwdAo+ICsgICAgICA8c2VjdDI+Cj4gKyAgICAgICAg PHRpdGxlPkdyYXBoaWNzIG11eDwvdGl0bGU+Cj4gKyFQZHJpdmVycy9wbGF0Zm9ybS94ODYvYXBw bGUtZ211eC5jIEdyYXBoaWNzIG11eAo+ICsgICAgICA8L3NlY3QyPgo+ICsgICAgICA8c2VjdDI+ Cj4gKyAgICAgICAgPHRpdGxlPlBvd2VyIGNvbnRyb2w8L3RpdGxlPgo+ICshUGRyaXZlcnMvcGxh dGZvcm0veDg2L2FwcGxlLWdtdXguYyBQb3dlciBjb250cm9sCj4gKyAgICAgIDwvc2VjdDI+Cj4g KyAgICAgIDxzZWN0Mj4KPiArICAgICAgICA8dGl0bGU+QmFja2xpZ2h0IGNvbnRyb2w8L3RpdGxl Pgo+ICshUGRyaXZlcnMvcGxhdGZvcm0veDg2L2FwcGxlLWdtdXguYyBCYWNrbGlnaHQgY29udHJv bAo+ICsgICAgICA8L3NlY3QyPgo+ICsgICAgPC9zZWN0MT4KPiArICA8L2NoYXB0ZXI+Cj4gKwo+ ICAhQ2RyaXZlcnMvZ3B1L3ZnYS92Z2Ffc3dpdGNoZXJvby5jCj4gICFDaW5jbHVkZS9saW51eC92 Z2Ffc3dpdGNoZXJvby5oCj4gKyFDZHJpdmVycy9wbGF0Zm9ybS94ODYvYXBwbGUtZ211eC5jCj4g IDwvcGFydD4KPiAgCj4gIDwvYm9vaz4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wbGF0Zm9ybS94 ODYvYXBwbGUtZ211eC5jIGIvZHJpdmVycy9wbGF0Zm9ybS94ODYvYXBwbGUtZ211eC5jCj4gaW5k ZXggYWE1OGQ0MS4uZjIzNjI1MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3BsYXRmb3JtL3g4Ni9h cHBsZS1nbXV4LmMKPiArKysgYi9kcml2ZXJzL3BsYXRmb3JtL3g4Ni9hcHBsZS1nbXV4LmMKPiBA QCAtMyw2ICszLDcgQEAKPiAgICoKPiAgICogIENvcHlyaWdodCAoQykgQ2Fub25pY2FsIEx0ZC4g PHNldGguZm9yc2hlZUBjYW5vbmljYWwuY29tPgo+ICAgKiAgQ29weXJpZ2h0IChDKSAyMDEwLTIw MTIgQW5kcmVhcyBIZWlkZXIgPGFuZHJlYXNAbWVldHIuZGU+Cj4gKyAqICBDb3B5cmlnaHQgKEMp IDIwMTUgTHVrYXMgV3VubmVyIDxsdWthc0B3dW5uZXIuZGU+Cj4gICAqCj4gICAqICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQo+ICAgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSB2ZXJzaW9uIDIgYXMKPiBAQCAtMjYsNiArMjcsMjQgQEAKPiAgI2luY2x1ZGUgPGFj cGkvdmlkZW8uaD4KPiAgI2luY2x1ZGUgPGFzbS9pby5oPgo+ICAKPiArLyoqCj4gKyAqIERPQzog T3ZlcnZpZXcKPiArICoKPiArICogOjE6ICBodHRwOi8vd3d3LmxhdHRpY2VzZW1pLmNvbS9lbi9Q cm9kdWN0cy9GUEdBYW5kQ1BMRC9MYXR0aWNlWFAyLmFzcHgKPiArICogOjI6ICBodHRwOi8vd3d3 LnJlbmVzYXMuY29tL3Byb2R1Y3RzL21wdW1jdS9oOHMvaDhzMjEwMC9oOHMyMTEzL2luZGV4Lmpz cAo+ICsgKgo+ICsgKiBnbXV4IGlzIGEgbWljcm9jb250cm9sbGVyIGJ1aWx0IGludG8gdGhlIE1h Y0Jvb2sgUHJvIHRvIHN1cHBvcnQgZHVhbCBHUFVzOgo+ICsgKiBBIHsxfVtMYXR0aWNlIFhQMl0g b24gcHJlLXJldGluYXMsIGEgezJ9W1JlbmVzYXMgUjRGMjExM10gb24gcmV0aW5hcy4KPiArICoK PiArICogKFRoZSBNYWNQcm82LDEgMjAxMyBhbHNvIGhhcyBhIGdtdXgsIGhvd2V2ZXIgaXQgaXMg dW5jbGVhciB3aHkgc2luY2UgaXQgaGFzCj4gKyAqIGR1YWwgR1BVcyBidXQgbm8gYnVpbHQtaW4g ZGlzcGxheS4pCj4gKyAqCj4gKyAqIGdtdXggaXMgY29ubmVjdGVkIHRvIHRoZSBMUEMgYnVzIG9m IHRoZSBzb3V0aGJyaWRnZS4gSXRzIEkvTyBwb3J0cyBhcmUKPiArICogYWNjZXNzZWQgZGlmZmVy ZW50bHkgZGVwZW5kaW5nIG9uIHRoZSBtaWNyb2NvbnRyb2xsZXI6IERyaXZlciBmdW5jdGlvbnMK PiArICogdG8gYWNjZXNzIGEgcHJlLXJldGluYSBnbXV4IGFyZSBpbmZpeGVkIGBfcGlvX2AsIHRo b3NlIGZvciBhIHJldGluYSBnbXV4Cj4gKyAqIGFyZSBpbmZpeGVkIGBfaW5kZXhfYC4KPiArICov Cj4gKwo+ICBzdHJ1Y3QgYXBwbGVfZ211eF9kYXRhIHsKPiAgCXVuc2lnbmVkIGxvbmcgaW9zdGFy dDsKPiAgCXVuc2lnbmVkIGxvbmcgaW9sZW47Cj4gQEAgLTI0Nyw2ICsyNjYsMjAgQEAgc3RhdGlj IGJvb2wgZ211eF9pc19pbmRleGVkKHN0cnVjdCBhcHBsZV9nbXV4X2RhdGEgKmdtdXhfZGF0YSkK PiAgCXJldHVybiBmYWxzZTsKPiAgfQo+ICAKPiArLyoqCj4gKyAqIERPQzogQmFja2xpZ2h0IGNv bnRyb2wKPiArICoKPiArICogOjM6ICBodHRwOi8vd3d3LnRpLmNvbS9saXQvZHMvc3ltbGluay9s cDg1NDMucGRmCj4gKyAqIDo0OiAgaHR0cDovL3d3dy50aS5jb20vbGl0L2RzL3N5bWxpbmsvbHA4 NTQ1LnBkZgo+ICsgKgo+ICsgKiBPbiBzaW5nbGUgR1BVIE1hY0Jvb2tzLCB0aGUgUFdNIHNpZ25h bCBmb3IgdGhlIGJhY2tsaWdodCBpcyBnZW5lcmF0ZWQgYnkKPiArICogdGhlIEdQVS4gT24gZHVh bCBHUFUgTWFjQm9vayBQcm9zIGJ5IGNvbnRyYXN0LCBlaXRoZXIgR1BVIG1heSBiZSBzdXNwZW5k ZWQKPiArICogdG8gY29uc2VydmUgZW5lcmd5LiBIZW5jZSB0aGUgUFdNIHNpZ25hbCBuZWVkcyB0 byBiZSBnZW5lcmF0ZWQgYnkgYSBzZXBhcmF0ZQo+ICsgKiBiYWNrbGlnaHQgZHJpdmVyIHdoaWNo IGlzIGNvbnRyb2xsZWQgYnkgZ211eC4gVGhlIGVhcmxpZXN0IGdlbmVyYXRpb24KPiArICogTUJQ NSAyMDA4LzA5IHVzZXMgYSB7M31bVEkgTFA4NTQzXSBiYWNrbGlnaHQgZHJpdmVyLiBBbGwgbmV3 ZXIgbW9kZWxzCj4gKyAqIHVzZSBhIHs0fVtUSSBMUDg1NDVdLgo+ICsgKi8KPiArCj4gIHN0YXRp YyBpbnQgZ211eF9nZXRfYnJpZ2h0bmVzcyhzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmQpCj4g IHsKPiAgCXN0cnVjdCBhcHBsZV9nbXV4X2RhdGEgKmdtdXhfZGF0YSA9IGJsX2dldF9kYXRhKGJk KTsKPiBAQCAtMjczLDYgKzMwNiw2OCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGJhY2tsaWdodF9v cHMgZ211eF9ibF9vcHMgPSB7Cj4gIAkudXBkYXRlX3N0YXR1cyA9IGdtdXhfdXBkYXRlX3N0YXR1 cywKPiAgfTsKPiAgCj4gKy8qKgo+ICsgKiBET0M6IEdyYXBoaWNzIG11eAo+ICsgKgo+ICsgKiA6 NTogIGh0dHA6Ly9waW1nLWZwaXcudXNwdG8uZ292L2ZkZC8wNy84NzAvMDg2LzAucGRmCj4gKyAq IDo2OiAgaHR0cDovL3d3dy5ueHAuY29tL2RvY3VtZW50cy9kYXRhX3NoZWV0L0NCVEwwNjE0MS5w ZGYKPiArICogOjc6ICBodHRwOi8vd3d3LnRpLmNvbS9saXQvZHMvc3ltbGluay9oZDNzczIxMi5w ZGYKPiArICogOjg6ICBodHRwczovL3d3dy5wZXJpY29tLmNvbS9hc3NldHMvRGF0YXNoZWV0cy9Q STNWRFAxMjQxMi5wZGYKPiArICogOjk6ICBodHRwOi8vd3d3LnRpLmNvbS9saXQvZHMvc3ltbGlu ay9zbjc0bHY0MDY2YS5wZGYKPiArICogOjEwOiBodHRwOi8vcGRmLmRhdGFzaGVldGFyY2hpdmUu Y29tL2luZGV4ZXJmaWxlcy9EYXRhc2hlZXRzLVNXMTYvRFNBU1cwMDMwODUxMS5wZGYKPiArICog OjExOiBodHRwOi8vd3d3LnRpLmNvbS9saXQvZHMvc3ltbGluay90czNkczEwMjI0LnBkZgo+ICsg Kgo+ICsgKiBPbiBwcmUtcmV0aW5hcywgdGhlIExWRFMgb3V0cHV0cyBvZiBib3RoIEdQVXMgZmVl ZCBpbnRvIGdtdXggd2hpY2ggbXV4ZXMKPiArICogZWl0aGVyIG9mIHRoZW0gdG8gdGhlIHBhbmVs LiBPbmUgb2YgdGhlIHRyaWNrcyBnbXV4IGhhcyB1cCBpdHMgc2xlZXZlIGlzCj4gKyAqIHRvIGxl bmd0aGVuIHRoZSBibGFua2luZyBpbnRlcnZhbCBvZiBpdHMgb3V0cHV0IGR1cmluZyBhIHN3aXRj aCB0bwo+ICsgKiBzeW5jaHJvbml6ZSBpdCB3aXRoIHRoZSBHUFUgc3dpdGNoZWQgdG8uIFRoaXMg YWxsb3dzIGZvciBhIGZsaWNrZXItZnJlZQo+ICsgKiBzd2l0Y2ggdGhhdCBpcyBpbXBlcmNlcHRp YmxlIGJ5IHRoZSB1c2VyICh7NX1bVVMgOCw2ODcsMDA3IEIyXSkuCj4gKyAqCj4gKyAqIE9uIHJl dGluYXMsIG11eGluZyBpcyBubyBsb25nZXIgZG9uZSBieSBnbXV4IGl0c2VsZiwgYnV0IGJ5IGEg c2VwYXJhdGUKPiArICogY2hpcCB3aGljaCBpcyBjb250cm9sbGVkIGJ5IGdtdXguIFRoZSBjaGlw IGlzIHRyaXBsZSBzb3VyY2VkLCBpdCBpcwo+ICsgKiBlaXRoZXIgYW4gezZ9W05YUCBDQlRMMDYx NDJdLCB7N31bVEkgSEQzU1MyMTJdIG9yIHs4fVtQZXJpY29tIFBJM1ZEUDEyNDEyXS4KPiArICog VGhlIHBhbmVsIGlzIGRyaXZlbiB3aXRoIGVEUCBpbnN0ZWFkIG9mIExWRFMgc2luY2UgdGhlIHBp eGVsIGNsb2NrCj4gKyAqIHJlcXVpcmVkIGZvciByZXRpbmEgcmVzb2x1dGlvbiBleGNlZWRzIExW RFMnIGxpbWl0cy4KPiArICoKPiArICogUHJlLXJldGluYXMgYXJlIGFibGUgdG8gc3dpdGNoIHRo ZSBwYW5lbCdzIEREQyBwaW5zIHNlcGFyYXRlbHkuCj4gKyAqIFRoaXMgaXMgaGFuZGxlZCBieSBh IHs5fVtUSSBTTjc0TFY0MDY2QV0gd2hpY2ggaXMgY29udHJvbGxlZCBieSBnbXV4Lgo+ICsgKiBU aGUgaW5hY3RpdmUgR1BVIGNhbiB0aHVzIHByb2JlIHRoZSBwYW5lbCdzIEVESUQgd2l0aG91dCBz d2l0Y2hpbmcgb3Zlcgo+ICsgKiB0aGUgZW50aXJlIHBhbmVsLiBSZXRpbmFzIGxhY2sgdGhpcyBm dW5jdGlvbmFsaXR5IGFzIHRoZSBjaGlwcyB1c2VkIGZvcgo+ICsgKiBlRFAgbXV4aW5nIGFyZSBp bmNhcGFibGUgb2Ygc3dpdGNoaW5nIHRoZSBBVVggY2hhbm5lbCBzZXBhcmF0ZWx5IChzZWUKPiAr ICogdGhlIGxpbmtlZCBkYXRhIHNoZWV0cywgUGVyaWNvbSB3b3VsZCBiZSBjYXBhYmxlIGJ1dCB0 aGlzIGlzIHVudXNlZCkuCj4gKyAqIEhvd2V2ZXIgdGhlIHJldGluYSBwYW5lbCBoYXMgdGhlIE5P X0FVWF9IQU5EU0hBS0VfTElOS19UUkFJTklORyBiaXQgc2V0Cj4gKyAqIGluIGl0cyBEUENELCBh bGxvd2luZyB0aGUgaW5hY3RpdmUgR1BVIHRvIHNraXAgdGhlIEFVWCBoYW5kc2hha2UgYW5kCj4g KyAqIHNldCB1cCB0aGUgb3V0cHV0IHdpdGggbGluayBwYXJhbWV0ZXJzIHByZS1jYWxpYnJhdGVk IGJ5IHRoZSBhY3RpdmUgR1BVLgo+ICsgKgo+ICsgKiBUaGUgZXh0ZXJuYWwgRFAgcG9ydCBpcyBv bmx5IGZ1bGx5IHN3aXRjaGFibGUgb24gdGhlIGZpcnN0IHR3byB1bmlib2R5Cj4gKyAqIE1hY0Jv b2sgUHJvIGdlbmVyYXRpb25zLCBNQlA1IDIwMDgvMDkgYW5kIE1CUDYgMjAxMC4gVGhpcyBpcyBk b25lIGJ5IGFuCj4gKyAqIHs2fVtOWFAgQ0JUTDA2MTQxXSB3aGljaCBpcyBjb250cm9sbGVkIGJ5 IGdtdXguIEl0J3MgdGhlIHByZWRlY2Vzc29yIG9mIHRoZQo+ICsgKiBlRFAgbXV4IG9uIHJldGlu YXMsIHRoZSBkaWZmZXJlbmNlIGJlaW5nIHN1cHBvcnQgZm9yIDIuNyB2ZXJzdXMgNS40IEdiaXQv cy4KPiArICoKPiArICogVGhlIGZvbGxvd2luZyBNYWNCb29rIFBybyBnZW5lcmF0aW9ucyByZXBs YWNlZCB0aGUgZXh0ZXJuYWwgRFAgcG9ydCB3aXRoIGEKPiArICogY29tYmluZWQgRFAvVGh1bmRl cmJvbHQgcG9ydCBhbmQgbG9zdCB0aGUgYWJpbGl0eSB0byBzd2l0Y2ggaXQgYmV0d2VlbiBHUFVz LAo+ICsgKiBjb25uZWN0aW5nIGl0IGVpdGhlciB0byB0aGUgZGlzY3JldGUgR1BVIG9yIHRoZSBU aHVuZGVyYm9sdCBjb250cm9sbGVyLgo+ICsgKiBPZGRseSBlbm91Z2gsIHdoaWxlIHRoZSBmdWxs IHBvcnQgaXMgbm8gbG9uZ2VyIHN3aXRjaGFibGUsIEFVWCBhbmQgSFBECj4gKyAqIGFyZSBzdGls bCBzd2l0Y2hhYmxlIGJ5IHdheSBvZiBhbiB7MTB9W05YUCBDQlRMMDMwNjJdIChvbiBwcmUtcmV0 aW5hcwo+ICsgKiBNQlA4IDIwMTEgYW5kIE1CUDkgMjAxMikgb3IgdHdvIHsxMX1bVEkgVFMzRFMx MDIyNF0gKG9uIHJldGluYXMpIHVuZGVyIHRoZQo+ICsgKiBjb250cm9sIG9mIGdtdXguIFNpbmNl IHRoZSBpbnRlZ3JhdGVkIEdQVSBpcyBtaXNzaW5nIHRoZSBtYWluIGxpbmssCj4gKyAqIGV4dGVy bmFsIGRpc3BsYXlzIGFwcGVhciB0byBpdCBhcyBwaGFudG9tcyB3aGljaCBmYWlsIHRvIGxpbmst dHJhaW4uCj4gKyAqCj4gKyAqIGdtdXggcmVjZWl2ZXMgdGhlIEhQRCBzaWduYWwgb2YgYWxsIGRp c3BsYXkgY29ubmVjdG9ycyBhbmQgc2VuZHMgYW4KPiArICogaW50ZXJydXB0IG9uIGhvdHBsdWcu IE9uIGdlbmVyYXRpb25zIHdoaWNoIGNhbm5vdCBzd2l0Y2ggZXh0ZXJuYWwgcG9ydHMsCj4gKyAq IHRoZSBkaXNjcmV0ZSBHUFUgY2FuIHRoZW4gYmUgd29rZW4gdG8gZHJpdmUgdGhlIG5ld2x5IGNv bm5lY3RlZCBkaXNwbGF5Lgo+ICsgKiBUaGUgYWJpbGl0eSB0byBzd2l0Y2ggQVVYIG9uIHRoZXNl IGdlbmVyYXRpb25zIGNvdWxkIGJlIHVzZWQgdG8gaW1wcm92ZQo+ICsgKiByZWxpYWJpbGl0eSBv ZiBob3RwbHVnIGRldGVjdGlvbiBieSBoYXZpbmcgdGhlIGludGVncmF0ZWQgR1BVIHBvbGwgdGhl Cj4gKyAqIHBvcnRzIHdoaWxlIHRoZSBkaXNjcmV0ZSBHUFUgaXMgYXNsZWVwLCBidXQgY3VycmVu dGx5IHdlIGRvIG5vdCBtYWtlIHVzZQo+ICsgKiBvZiB0aGlzIGZlYXR1cmUuCj4gKyAqCj4gKyAq IGdtdXgnIGluaXRpYWwgc3dpdGNoIHN0YXRlIG9uIGJvb3R1cCBpcyB1c2VyIGNvbmZpZ3VyYWJs ZSB2aWEgdGhlIEVGSQo+ICsgKiB2YXJpYWJsZSBgZ3B1LXBvd2VyLXByZWZzLWZhNGNlMjhkLWI2 MmYtNGM5OS05Y2MzLTY4MTU2ODZlMzBmOWAgKDV0aCBieXRlLAo+ICsgKiAxID0gSUdELCAwID0g RElTKS4gQmFzZWQgb24gdGhpcyBzZXR0aW5nLCB0aGUgRUZJIGZpcm13YXJlIHRlbGxzIGdtdXgg dG8KPiArICogc3dpdGNoIHRoZSBwYW5lbCBhbmQgdGhlIGV4dGVybmFsIERQIGNvbm5lY3RvciBh bmQgYWxsb2NhdGVzIGEgZnJhbWVidWZmZXIKPiArICogZm9yIHRoZSBzZWxlY3RlZCBHUFUuCj4g KyAqLwo+ICsKPiAgc3RhdGljIGludCBnbXV4X3N3aXRjaHRvKGVudW0gdmdhX3N3aXRjaGVyb29f Y2xpZW50X2lkIGlkKQo+ICB7Cj4gIAlpZiAoaWQgPT0gVkdBX1NXSVRDSEVST09fSUdEKSB7Cj4g QEAgLTI4OCw2ICszODMsMTQgQEAgc3RhdGljIGludCBnbXV4X3N3aXRjaHRvKGVudW0gdmdhX3N3 aXRjaGVyb29fY2xpZW50X2lkIGlkKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gKy8qKgo+ICsg KiBET0M6IFBvd2VyIGNvbnRyb2wKPiArICoKPiArICogZ211eCBpcyBhYmxlIHRvIGN1dCBwb3dl ciB0byB0aGUgZGlzY3JldGUgR1BVLiBJdCBhdXRvbWF0aWNhbGx5IHRha2VzIGNhcmUKPiArICog b2YgdGhlIGNvcnJlY3Qgc2VxdWVuY2UgdG8gdGVhciBkb3duIGFuZCBicmluZyB1cCB0aGUgcG93 ZXIgcmFpbHMgZm9yCj4gKyAqIGNvcmUgdm9sdGFnZSwgVlJBTSBhbmQgUENJZS4KPiArICovCj4g Kwo+ICBzdGF0aWMgaW50IGdtdXhfc2V0X2Rpc2NyZXRlX3N0YXRlKHN0cnVjdCBhcHBsZV9nbXV4 X2RhdGEgKmdtdXhfZGF0YSwKPiAgCQkJCSAgIGVudW0gdmdhX3N3aXRjaGVyb29fc3RhdGUgc3Rh dGUpCj4gIHsKPiBAQCAtMzUyLDYgKzQ1NSwxNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHZnYV9z d2l0Y2hlcm9vX2hhbmRsZXIgZ211eF9oYW5kbGVyID0gewo+ICAJLmdldF9jbGllbnRfaWQgPSBn bXV4X2dldF9jbGllbnRfaWQsCj4gIH07Cj4gIAo+ICsvKioKPiArICogRE9DOiBJbnRlcnJ1cHQK PiArICoKPiArICogZ211eCBpcyBhbHNvIGNvbm5lY3RlZCB0byBhIEdQSU8gcGluIG9mIHRoZSBz b3V0aGJyaWRnZSBhbmQgdGhlcmVieSBpcyBhYmxlCj4gKyAqIHRvIHRyaWdnZXIgYW4gQUNQSSBH UEUuIE9uIHRoZSBNQlA1IDIwMDgvMDkgaXQncyBHUElPIHBpbiAyMiBvZiB0aGUgTnZpZGlhCj4g KyAqIE1DUDc5LCBvbiBhbGwgZm9sbG93aW5nIGdlbmVyYXRpb25zIGl0J3MgR1BJTyBwaW4gNiBv ZiB0aGUgSW50ZWwgUENILgo+ICsgKiBUaGUgR1BFIG1lcmVseSBzaWduYWxzIHRoYXQgYW4gaW50 ZXJydXB0IG9jY3VycmVkLCB0aGUgYWN0dWFsIHR5cGUgb2YgZXZlbnQKPiArICogaXMgaWRlbnRp ZmllZCBieSByZWFkaW5nIGEgZ211eCByZWdpc3Rlci4KPiArICovCj4gKwo+ICBzdGF0aWMgaW5s aW5lIHZvaWQgZ211eF9kaXNhYmxlX2ludGVycnVwdHMoc3RydWN0IGFwcGxlX2dtdXhfZGF0YSAq Z211eF9kYXRhKQo+ICB7Cj4gIAlnbXV4X3dyaXRlOChnbXV4X2RhdGEsIEdNVVhfUE9SVF9JTlRF UlJVUFRfRU5BQkxFLAo+IC0tIAo+IDEuOC41LjIgKEFwcGxlIEdpdC00OCkKPiAKPiAtLQo+IFRv IHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRoZSBsaW5lICJ1bnN1YnNjcmliZSBw bGF0Zm9ybS1kcml2ZXIteDg2IiBpbgo+IHRoZSBib2R5IG9mIGEgbWVzc2FnZSB0byBtYWpvcmRv bW9Admdlci5rZXJuZWwub3JnCj4gTW9yZSBtYWpvcmRvbW8gaW5mbyBhdCAgaHR0cDovL3ZnZXIu a2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1sCj4gCgotLSAKRGFycmVuIEhhcnQKSW50ZWwg T3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwK