From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mylene Josserand Subject: Re: [PATCH v4 3/8] ASoC: Add sun8i digital audio codec Date: Wed, 8 Feb 2017 10:39:01 +0100 Message-ID: <84eb7cd4-4c07-5138-c671-ee9f2bf76fbb@free-electrons.com> References: <20170202092422.5588-1-mylene.josserand@free-electrons.com> <20170202092422.5588-4-mylene.josserand@free-electrons.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org To: Chen-Yu Tsai Cc: Mark Rutland , devicetree , Linux-ALSA , linux-kernel , Takashi Iwai , Liam Girdwood , Rob Herring , Mark Brown , Alexandre Belloni , Maxime Ripard , Thomas Petazzoni , linux-arm-kernel List-Id: devicetree@vger.kernel.org SGkgQ2hlbi1ZdSwKCk9uIDA3LzAyLzIwMTcgMDk6MzksIENoZW4tWXUgVHNhaSB3cm90ZToKPiBI aSwKPgo+IE9uIFRodSwgRmViIDIsIDIwMTcgYXQgNToyNCBQTSwgTXlsw6huZSBKb3NzZXJhbmQK PiA8bXlsZW5lLmpvc3NlcmFuZEBmcmVlLWVsZWN0cm9ucy5jb20+IHdyb3RlOgo+PiBBZGQgdGhl IHN1bjhpIGF1ZGlvIGNvZGVjIHdoaWNoIGhhbmRsZXMgdGhlIGRpZ2l0YWwgcmVnaXN0ZXIgb2YK Pj4gQTMzIGNvZGVjLgo+PiBUaGUgZHJpdmVyIGhhbmRsZXMgb25seSB0aGUgYmFzaWMgcGxheWJh Y2sgZnJvbSB0aGUgREFDIHRvIGhlYWRwaG9uZXMuCj4+IEFsbCBvdGhlciBmZWF0dXJlcyAobWlj cm9waG9uZSwgY2FwdHVyZSwgZXRjKSB3aWxsIGJlIGFkZGVkIGxhdGVyLgo+Pgo+PiBTaWduZWQt b2ZmLWJ5OiBNeWzDqG5lIEpvc3NlcmFuZCA8bXlsZW5lLmpvc3NlcmFuZEBmcmVlLWVsZWN0cm9u cy5jb20+Cj4+IEFja2VkLWJ5OiBNYXhpbWUgUmlwYXJkIDxtYXhpbWUucmlwYXJkQGZyZWUtZWxl Y3Ryb25zLmNvbT4KPj4gLS0tCj4+ICBzb3VuZC9zb2Mvc3VueGkvS2NvbmZpZyAgICAgICB8ICAx MSArCj4+ICBzb3VuZC9zb2Mvc3VueGkvTWFrZWZpbGUgICAgICB8ICAgMSArCj4+ICBzb3VuZC9z b2Mvc3VueGkvc3VuOGktY29kZWMuYyB8IDQ5OCArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKPj4gIDMgZmlsZXMgY2hhbmdlZCwgNTEwIGluc2VydGlvbnMoKykKPj4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBzb3VuZC9zb2Mvc3VueGkvc3VuOGktY29kZWMuYwo+Pgo+PiBk aWZmIC0tZ2l0IGEvc291bmQvc29jL3N1bnhpL0tjb25maWcgYi9zb3VuZC9zb2Mvc3VueGkvS2Nv bmZpZwo+PiBpbmRleCA2YzM0NGUxNmFjYTQuLjEzYTgyNjdmMTdjNyAxMDA2NDQKPj4gLS0tIGEv c291bmQvc29jL3N1bnhpL0tjb25maWcKPj4gKysrIGIvc291bmQvc29jL3N1bnhpL0tjb25maWcK Pj4gQEAgLTksNiArOSwxNyBAQCBjb25maWcgU05EX1NVTjRJX0NPREVDCj4+ICAgICAgICAgICBT ZWxlY3QgWSBvciBNIHRvIGFkZCBzdXBwb3J0IGZvciB0aGUgQ29kZWMgZW1iZWRkZWQgaW4gdGhl IEFsbHdpbm5lcgo+PiAgICAgICAgICAgQTEwIGFuZCBhZmZpbGlhdGVkIFNvQ3MuCj4+Cj4+ICtj b25maWcgU05EX1NVTjhJX0NPREVDCj4+ICsgICAgICAgdHJpc3RhdGUgIkFsbHdpbm5lciBTVU44 SSBhdWRpbyBjb2RlYyIKPj4gKyAgICAgICBkZXBlbmRzIG9uIE9GCj4+ICsgICAgICAgZGVwZW5k cyBvbiBNQUNIX1NVTjhJIHx8IENPTVBJTEVfVEVTVAo+PiArICAgICAgIHNlbGVjdCBSRUdNQVBf TU1JTwo+PiArICAgICAgIGhlbHAKPj4gKyAgICAgICAgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhl IGRpZ2l0YWwgcGFydCBvZiB0aGUgaW50ZXJuYWwgYXVkaW8gY29kZWMgZm9yCj4+ICsgICAgICAg ICBBbGx3aW5uZXIgc3VuOGkgU29DIChhbmQgcGFydGljdWxhcmx5IEEzMykuCj4+ICsKPj4gKyAg ICAgICAgIFNheSBZIG9yIE0gaWYgeW91IHdhbnQgdG8gYWRkIHN1bjhpIGRpZ2l0YWwgYXVkaW8g Y29kZWMgc3VwcG9ydC4KPj4gKwo+PiAgY29uZmlnIFNORF9TVU44SV9DT0RFQ19BTkFMT0cKPj4g ICAgICAgICB0cmlzdGF0ZSAiQWxsd2lubmVyIHN1bjhpIENvZGVjIEFuYWxvZyBDb250cm9scyBT dXBwb3J0Igo+PiAgICAgICAgIGRlcGVuZHMgb24gTUFDSF9TVU44SSB8fCBDT01QSUxFX1RFU1QK Pj4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9zdW54aS9NYWtlZmlsZSBiL3NvdW5kL3NvYy9zdW54 aS9NYWtlZmlsZQo+PiBpbmRleCAyNDFjMGRmOWNhMGMuLjFmMWFmNjI3MTczMSAxMDA2NDQKPj4g LS0tIGEvc291bmQvc29jL3N1bnhpL01ha2VmaWxlCj4+ICsrKyBiL3NvdW5kL3NvYy9zdW54aS9N YWtlZmlsZQo+PiBAQCAtMiwzICsyLDQgQEAgb2JqLSQoQ09ORklHX1NORF9TVU40SV9DT0RFQykg Kz0gc3VuNGktY29kZWMubwo+PiAgb2JqLSQoQ09ORklHX1NORF9TVU40SV9JMlMpICs9IHN1bjRp LWkycy5vCj4+ICBvYmotJChDT05GSUdfU05EX1NVTjRJX1NQRElGKSArPSBzdW40aS1zcGRpZi5v Cj4+ICBvYmotJChDT05GSUdfU05EX1NVTjhJX0NPREVDX0FOQUxPRykgKz0gc3VuOGktY29kZWMt YW5hbG9nLm8KPj4gK29iai0kKENPTkZJR19TTkRfU1VOOElfQ09ERUMpICs9IHN1bjhpLWNvZGVj Lm8KPj4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9zdW54aS9zdW44aS1jb2RlYy5jIGIvc291bmQv c29jL3N1bnhpL3N1bjhpLWNvZGVjLmMKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXgg MDAwMDAwMDAwMDAwLi5iOTJiZGM4MzYxYWYKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9zb3Vu ZC9zb2Mvc3VueGkvc3VuOGktY29kZWMuYwo+PiBAQCAtMCwwICsxLDQ5OCBAQAo+PiArLyoKPj4g KyAqIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBkaWdpdGFsIGNvbnRyb2xzIGZvciB0aGUgaW50 ZXJuYWwgY29kZWMKPj4gKyAqIGZvdW5kIGluIEFsbHdpbm5lcidzIEEzMyBTb0NzLgo+PiArICoK Pj4gKyAqIChDKSBDb3B5cmlnaHQgMjAxMC0yMDE2Cj4+ICsgKiBSZXV1aW1sbGEgVGVjaG5vbG9n eSBDby4sIEx0ZC4gPHd3dy5yZXV1aW1sbGF0ZWNoLmNvbT4KPj4gKyAqIGh1YW5neGluIDxodWFu Z3hpbkBSZXV1aW1sbGF0ZWNoLmNvbT4KPj4gKyAqIE15bMOobmUgSm9zc2VyYW5kIDxteWxlbmUu am9zc2VyYW5kQGZyZWUtZWxlY3Ryb25zLmNvbT4KPj4gKyAqCj4+ICsgKiBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ PiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKPj4gKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCj4+ICsgKiAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgo+PiArICoKPj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+PiArICogYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPj4g KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKPj4gKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCj4+ICsgKi8KPj4gKwo+PiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+PiArI2luY2x1 ZGUgPGxpbnV4L2RlbGF5Lmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+Cj4+ICsjaW5jbHVk ZSA8bGludXgvaW8uaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+Cj4+ICsjaW5j bHVkZSA8bGludXgvcmVnbWFwLmg+Cj4+ICsKPj4gKyNpbmNsdWRlIDxzb3VuZC9wY21fcGFyYW1z Lmg+Cj4+ICsjaW5jbHVkZSA8c291bmQvc29jLmg+Cj4+ICsjaW5jbHVkZSA8c291bmQvc29jLWRh cG0uaD4KPj4gKwo+PiArI2RlZmluZSBTVU44SV9TWVNDTEtfQ1RMICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4MDBjCj4+ICsjZGVmaW5lIFNVTjhJX1NZU0NMS19DVExfQUlGMUNMS19F TkEgICAgICAgICAgICAgICAgICAgMTEKPj4gKyNkZWZpbmUgU1VOOElfU1lTQ0xLX0NUTF9BSUYx Q0xLX1NSQ19QTEwgICAgICAgICAgICAgICA5Cj4+ICsjZGVmaW5lIFNVTjhJX1NZU0NMS19DVExf QUlGMUNMS19TUkMgICAgICAgICAgICAgICAgICAgOAo+PiArI2RlZmluZSBTVU44SV9TWVNDTEtf Q1RMX1NZU0NMS19FTkEgICAgICAgICAgICAgICAgICAgIDMKPj4gKyNkZWZpbmUgU1VOOElfU1lT Q0xLX0NUTF9TWVNDTEtfU1JDICAgICAgICAgICAgICAgICAgICAwCj4+ICsjZGVmaW5lIFNVTjhJ X01PRF9DTEtfRU5BICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMTAKPj4gKyNkZWZp bmUgU1VOOElfTU9EX0NMS19FTkFfQUlGMSAgICAgICAgICAgICAgICAgICAgICAgICAxNQo+PiAr I2RlZmluZSBTVU44SV9NT0RfQ0xLX0VOQV9EQUMgICAgICAgICAgICAgICAgICAgICAgICAgIDIK Pj4gKyNkZWZpbmUgU1VOOElfTU9EX1JTVF9DVEwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAweDAxNAo+PiArI2RlZmluZSBTVU44SV9NT0RfUlNUX0NUTF9BSUYxICAgICAgICAgICAgICAg ICAgICAgICAgIDE1Cj4+ICsjZGVmaW5lIFNVTjhJX01PRF9SU1RfQ1RMX0RBQyAgICAgICAgICAg ICAgICAgICAgICAgICAgMgo+PiArI2RlZmluZSBTVU44SV9TWVNfU1JfQ1RSTCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4MDE4Cj4+ICsjZGVmaW5lIFNVTjhJX1NZU19TUl9DVFJMX0FJ RjFfRlMgICAgICAgICAgICAgICAgICAgICAgMTIKPj4gKyNkZWZpbmUgU1VOOElfU1lTX1NSX0NU UkxfQUlGMl9GUyAgICAgICAgICAgICAgICAgICAgICA4Cj4+ICsjZGVmaW5lIFNVTjhJX0FJRjFD TEtfQ1RSTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNDAKPj4gKyNkZWZpbmUgU1VO OElfQUlGMUNMS19DVFJMX0FJRjFfTVNUUl9NT0QgICAgICAgICAgICAgICAxNQo+PiArI2RlZmlu ZSBTVU44SV9BSUYxQ0xLX0NUUkxfQUlGMV9CQ0xLX0lOViAgICAgICAgICAgICAgIDE0Cj4+ICsj ZGVmaW5lIFNVTjhJX0FJRjFDTEtfQ1RSTF9BSUYxX0xSQ0tfSU5WICAgICAgICAgICAgICAgMTMK Pj4gKyNkZWZpbmUgU1VOOElfQUlGMUNMS19DVFJMX0FJRjFfQkNMS19ESVYgICAgICAgICAgICAg ICA5Cj4+ICsjZGVmaW5lIFNVTjhJX0FJRjFDTEtfQ1RSTF9BSUYxX0xSQ0tfRElWICAgICAgICAg ICAgICAgNgo+PiArI2RlZmluZSBTVU44SV9BSUYxQ0xLX0NUUkxfQUlGMV9MUkNLX0RJVl8xNiAg ICAgICAgICAgICgxIDw8IDYpCj4+ICsjZGVmaW5lIFNVTjhJX0FJRjFDTEtfQ1RSTF9BSUYxX1dP UkRfU0laICAgICAgICAgICAgICAgNAo+PiArI2RlZmluZSBTVU44SV9BSUYxQ0xLX0NUUkxfQUlG MV9XT1JEX1NJWl8xNiAgICAgICAgICAgICgxIDw8IDQpCj4+ICsjZGVmaW5lIFNVTjhJX0FJRjFD TEtfQ1RSTF9BSUYxX0RBVEFfRk1UICAgICAgICAgICAgICAgMgo+PiArI2RlZmluZSBTVU44SV9B SUYxX0RBQ0RBVF9DVFJMICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDQ4Cj4+ICsjZGVmaW5l IFNVTjhJX0FJRjFfREFDREFUX0NUUkxfQUlGMV9EQTBMX0VOQSAgICAgICAgICAgMTUKPj4gKyNk ZWZpbmUgU1VOOElfQUlGMV9EQUNEQVRfQ1RSTF9BSUYxX0RBMFJfRU5BICAgICAgICAgICAxNAo+ PiArI2RlZmluZSBTVU44SV9EQUNfRElHX0NUUkwgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDB4MTIwCj4+ICsjZGVmaW5lIFNVTjhJX0RBQ19ESUdfQ1RSTF9FTkRBICAgICAgICAgICAgICAg ICAgICAgICAgMTUKPj4gKyNkZWZpbmUgU1VOOElfREFDX01YUl9TUkMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAweDEzMAo+PiArI2RlZmluZSBTVU44SV9EQUNfTVhSX1NSQ19EQUNMX01Y Ul9TUkNfQUlGMURBMEwgICAgICAgIDE1Cj4+ICsjZGVmaW5lIFNVTjhJX0RBQ19NWFJfU1JDX0RB Q0xfTVhSX1NSQ19BSUYxREExTCAgICAgICAgMTQKPj4gKyNkZWZpbmUgU1VOOElfREFDX01YUl9T UkNfREFDTF9NWFJfU1JDX0FJRjJEQUNMICAgICAgICAxMwo+PiArI2RlZmluZSBTVU44SV9EQUNf TVhSX1NSQ19EQUNMX01YUl9TUkNfQURDTCAgICAgICAgICAgIDEyCj4+ICsjZGVmaW5lIFNVTjhJ X0RBQ19NWFJfU1JDX0RBQ1JfTVhSX1NSQ19BSUYxREEwUiAgICAgICAgMTEKPj4gKyNkZWZpbmUg U1VOOElfREFDX01YUl9TUkNfREFDUl9NWFJfU1JDX0FJRjFEQTFSICAgICAgICAxMAo+PiArI2Rl ZmluZSBTVU44SV9EQUNfTVhSX1NSQ19EQUNSX01YUl9TUkNfQUlGMkRBQ1IgICAgICAgIDkKPj4g KyNkZWZpbmUgU1VOOElfREFDX01YUl9TUkNfREFDUl9NWFJfU1JDX0FEQ1IgICAgICAgICAgICA4 Cj4+ICsKPj4gKyNkZWZpbmUgU1VOOElfU1lTX1NSX0NUUkxfQUlGMV9GU19NQVNLICAgICAgICAg R0VOTUFTSygxNSwgMTIpCj4+ICsjZGVmaW5lIFNVTjhJX1NZU19TUl9DVFJMX0FJRjJfRlNfTUFT SyAgICAgICAgIEdFTk1BU0soMTEsIDgpCj4+ICsjZGVmaW5lIFNVTjhJX0FJRjFDTEtfQ1RSTF9B SUYxX1dPUkRfU0laX01BU0sgIEdFTk1BU0soNSwgNCkKPj4gKyNkZWZpbmUgU1VOOElfQUlGMUNM S19DVFJMX0FJRjFfTFJDS19ESVZfTUFTSyAgR0VOTUFTSyg4LCA2KQo+PiArCj4+ICtzdHJ1Y3Qg c3VuOGlfY29kZWMgewo+PiArICAgICAgIHN0cnVjdCBkZXZpY2UgICAqZGV2Owo+PiArICAgICAg IHN0cnVjdCByZWdtYXAgICAqcmVnbWFwOwo+PiArICAgICAgIHN0cnVjdCBjbGsgICAgICAqY2xr X21vZHVsZTsKPj4gKyAgICAgICBzdHJ1Y3QgY2xrICAgICAgKmNsa19idXM7Cj4+ICt9Owo+PiAr Cj4+ICtzdGF0aWMgaW50IHN1bjhpX2NvZGVjX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2Ug KmRldikKPj4gK3sKPj4gKyAgICAgICBzdHJ1Y3Qgc3VuOGlfY29kZWMgKnNjb2RlYyA9IGRldl9n ZXRfZHJ2ZGF0YShkZXYpOwo+PiArICAgICAgIGludCByZXQ7Cj4+ICsKPj4gKyAgICAgICByZXQg PSBjbGtfcHJlcGFyZV9lbmFibGUoc2NvZGVjLT5jbGtfbW9kdWxlKTsKPj4gKyAgICAgICBpZiAo cmV0KSB7Cj4+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBlbmFibGUg dGhlIG1vZHVsZSBjbG9ja1xuIik7Cj4+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+PiAr ICAgICAgIH0KPj4gKwo+PiArICAgICAgIHJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShzY29kZWMt PmNsa19idXMpOwo+PiArICAgICAgIGlmIChyZXQpIHsKPj4gKyAgICAgICAgICAgICAgIGRldl9l cnIoZGV2LCAiRmFpbGVkIHRvIGVuYWJsZSB0aGUgYnVzIGNsb2NrXG4iKTsKPj4gKyAgICAgICAg ICAgICAgIGdvdG8gZXJyX2Rpc2FibGVfbW9kY2xrOwo+PiArICAgICAgIH0KPj4gKwo+PiArICAg ICAgIHJlZ2NhY2hlX2NhY2hlX29ubHkoc2NvZGVjLT5yZWdtYXAsIGZhbHNlKTsKPj4gKwo+PiAr ICAgICAgIHJldCA9IHJlZ2NhY2hlX3N5bmMoc2NvZGVjLT5yZWdtYXApOwo+PiArICAgICAgIGlm IChyZXQpIHsKPj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIHN5bmMg cmVnbWFwIGNhY2hlXG4iKTsKPj4gKyAgICAgICAgICAgICAgIGdvdG8gZXJyX2Rpc2FibGVfY2xr Owo+PiArICAgICAgIH0KPj4gKwo+PiArICAgICAgIHJldHVybiAwOwo+PiArCj4+ICtlcnJfZGlz YWJsZV9jbGs6Cj4+ICsgICAgICAgY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHNjb2RlYy0+Y2xrX2J1 cyk7Cj4+ICsKPj4gK2Vycl9kaXNhYmxlX21vZGNsazoKPj4gKyAgICAgICBjbGtfZGlzYWJsZV91 bnByZXBhcmUoc2NvZGVjLT5jbGtfbW9kdWxlKTsKPj4gKwo+PiArICAgICAgIHJldHVybiByZXQ7 Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgc3VuOGlfY29kZWNfcnVudGltZV9zdXNwZW5kKHN0 cnVjdCBkZXZpY2UgKmRldikKPj4gK3sKPj4gKyAgICAgICBzdHJ1Y3Qgc3VuOGlfY29kZWMgKnNj b2RlYyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+PiArCj4+ICsgICAgICAgcmVnY2FjaGVfY2Fj aGVfb25seShzY29kZWMtPnJlZ21hcCwgdHJ1ZSk7Cj4+ICsgICAgICAgcmVnY2FjaGVfbWFya19k aXJ0eShzY29kZWMtPnJlZ21hcCk7Cj4+ICsKPj4gKyAgICAgICBjbGtfZGlzYWJsZV91bnByZXBh cmUoc2NvZGVjLT5jbGtfbW9kdWxlKTsKPj4gKyAgICAgICBjbGtfZGlzYWJsZV91bnByZXBhcmUo c2NvZGVjLT5jbGtfYnVzKTsKPj4gKwo+PiArICAgICAgIHJldHVybiAwOwo+PiArfQo+PiArCj4+ ICtzdGF0aWMgaW50IHN1bjhpX2NvZGVjX2dldF9od19yYXRlKHN0cnVjdCBzbmRfcGNtX2h3X3Bh cmFtcyAqcGFyYW1zKQo+PiArewo+PiArICAgICAgIHVuc2lnbmVkIGludCByYXRlID0gcGFyYW1z X3JhdGUocGFyYW1zKTsKPj4gKwo+PiArICAgICAgIHN3aXRjaCAocmF0ZSkgewo+PiArICAgICAg IGNhc2UgODAwMDoKPj4gKyAgICAgICBjYXNlIDczNTA6Cj4+ICsgICAgICAgICAgICAgICByZXR1 cm4gMHgwOwo+PiArICAgICAgIGNhc2UgMTEwMjU6Cj4+ICsgICAgICAgICAgICAgICByZXR1cm4g MHgxOwo+PiArICAgICAgIGNhc2UgMTIwMDA6Cj4+ICsgICAgICAgICAgICAgICByZXR1cm4gMHgy Owo+PiArICAgICAgIGNhc2UgMTYwMDA6Cj4+ICsgICAgICAgICAgICAgICByZXR1cm4gMHgzOwo+ PiArICAgICAgIGNhc2UgMjIwNTA6Cj4+ICsgICAgICAgICAgICAgICByZXR1cm4gMHg0Owo+PiAr ICAgICAgIGNhc2UgMjQwMDA6Cj4+ICsgICAgICAgICAgICAgICByZXR1cm4gMHg1Owo+PiArICAg ICAgIGNhc2UgMzIwMDA6Cj4+ICsgICAgICAgICAgICAgICByZXR1cm4gMHg2Owo+PiArICAgICAg IGNhc2UgNDQxMDA6Cj4+ICsgICAgICAgICAgICAgICByZXR1cm4gMHg3Owo+PiArICAgICAgIGNh c2UgNDgwMDA6Cj4+ICsgICAgICAgICAgICAgICByZXR1cm4gMHg4Owo+PiArICAgICAgIGNhc2Ug OTYwMDA6Cj4+ICsgICAgICAgICAgICAgICByZXR1cm4gMHg5Owo+PiArICAgICAgIGNhc2UgMTky MDAwOgo+PiArICAgICAgICAgICAgICAgcmV0dXJuIDB4YTsKPj4gKyAgICAgICBkZWZhdWx0Ogo+ PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsgICAgICAgfQo+PiArfQo+PiAr Cj4+ICtzdGF0aWMgaW50IHN1bjhpX3NldF9mbXQoc3RydWN0IHNuZF9zb2NfZGFpICpkYWksIHVu c2lnbmVkIGludCBmbXQpCj4+ICt7Cj4+ICsgICAgICAgc3RydWN0IHN1bjhpX2NvZGVjICpzY29k ZWMgPSBzbmRfc29jX2NvZGVjX2dldF9kcnZkYXRhKGRhaS0+Y29kZWMpOwo+PiArICAgICAgIHUz MiB2YWx1ZTsKPj4gKwo+PiArICAgICAgIC8qIGNsb2NrIG1hc3RlcnMgKi8KPj4gKyAgICAgICBz d2l0Y2ggKGZtdCAmIFNORF9TT0NfREFJRk1UX01BU1RFUl9NQVNLKSB7Cj4+ICsgICAgICAgY2Fz ZSBTTkRfU09DX0RBSUZNVF9DQlNfQ0ZTOiAvKiBEQUkgU2xhdmUgKi8KPj4gKyAgICAgICAgICAg ICAgIHZhbHVlID0gMHgwOyAvKiBDb2RlYyBNYXN0ZXIgKi8KPj4gKyAgICAgICAgICAgICAgIGJy ZWFrOwo+PiArICAgICAgIGNhc2UgU05EX1NPQ19EQUlGTVRfQ0JNX0NGTTogLyogREFJIE1hc3Rl ciAqLwo+PiArICAgICAgICAgICAgICAgdmFsdWUgPSAweDE7IC8qIENvZGVjIFNsYXZlICovCj4+ ICsgICAgICAgICAgICAgICBicmVhazsKPj4gKyAgICAgICBkZWZhdWx0Ogo+PiArICAgICAgICAg ICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsgICAgICAgfQo+PiArICAgICAgIHJlZ21hcF91cGRh dGVfYml0cyhzY29kZWMtPnJlZ21hcCwgU1VOOElfQUlGMUNMS19DVFJMLAo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICBCSVQoU1VOOElfQUlGMUNMS19DVFJMX0FJRjFfTVNUUl9NT0QpLAo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA8PCBTVU44SV9BSUYxQ0xLX0NUUkxf QUlGMV9NU1RSX01PRCk7Cj4+ICsKPj4gKyAgICAgICAvKiBjbG9jayBpbnZlcnNpb24gKi8KPj4g KyAgICAgICBzd2l0Y2ggKGZtdCAmIFNORF9TT0NfREFJRk1UX0lOVl9NQVNLKSB7Cj4+ICsgICAg ICAgY2FzZSBTTkRfU09DX0RBSUZNVF9OQl9ORjogLyogTm9ybWFsICovCj4+ICsgICAgICAgICAg ICAgICB2YWx1ZSA9IDB4MDsKPj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+PiArICAgICAgIGNh c2UgU05EX1NPQ19EQUlGTVRfSUJfSUY6IC8qIEludmVyc2lvbiAqLwo+PiArICAgICAgICAgICAg ICAgdmFsdWUgPSAweDE7Cj4+ICsgICAgICAgICAgICAgICBicmVhazsKPj4gKyAgICAgICBkZWZh dWx0Ogo+PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsgICAgICAgfQo+PiAr ICAgICAgIHJlZ21hcF91cGRhdGVfYml0cyhzY29kZWMtPnJlZ21hcCwgU1VOOElfQUlGMUNMS19D VFJMLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICBCSVQoU1VOOElfQUlGMUNMS19DVFJM X0FJRjFfQkNMS19JTlYpLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA8PCBT VU44SV9BSUYxQ0xLX0NUUkxfQUlGMV9CQ0xLX0lOVik7Cj4+ICsgICAgICAgcmVnbWFwX3VwZGF0 ZV9iaXRzKHNjb2RlYy0+cmVnbWFwLCBTVU44SV9BSUYxQ0xLX0NUUkwsCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgIEJJVChTVU44SV9BSUYxQ0xLX0NUUkxfQUlGMV9MUkNLX0lOViksCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIDw8IFNVTjhJX0FJRjFDTEtfQ1RSTF9B SUYxX0xSQ0tfSU5WKTsKPj4gKwo+PiArICAgICAgIC8qIERBSSBmb3JtYXQgKi8KPj4gKyAgICAg ICBzd2l0Y2ggKGZtdCAmIFNORF9TT0NfREFJRk1UX0ZPUk1BVF9NQVNLKSB7Cj4+ICsgICAgICAg Y2FzZSBTTkRfU09DX0RBSUZNVF9JMlM6Cj4+ICsgICAgICAgICAgICAgICB2YWx1ZSA9IDB4MDsK Pj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+PiArICAgICAgIGNhc2UgU05EX1NPQ19EQUlGTVRf TEVGVF9KOgo+PiArICAgICAgICAgICAgICAgdmFsdWUgPSAweDE7Cj4+ICsgICAgICAgICAgICAg ICBicmVhazsKPj4gKyAgICAgICBjYXNlIFNORF9TT0NfREFJRk1UX1JJR0hUX0o6Cj4+ICsgICAg ICAgICAgICAgICB2YWx1ZSA9IDB4MjsKPj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+PiArICAg ICAgIGNhc2UgU05EX1NPQ19EQUlGTVRfRFNQX0E6Cj4+ICsgICAgICAgY2FzZSBTTkRfU09DX0RB SUZNVF9EU1BfQjoKPj4gKyAgICAgICAgICAgICAgIHZhbHVlID0gMHgzOwo+PiArICAgICAgICAg ICAgICAgYnJlYWs7Cj4+ICsgICAgICAgZGVmYXVsdDoKPj4gKyAgICAgICAgICAgICAgIHJldHVy biAtRUlOVkFMOwo+PiArICAgICAgIH0KPj4gKyAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoc2Nv ZGVjLT5yZWdtYXAsIFNVTjhJX0FJRjFDTEtfQ1RSTCwKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgQklUKFNVTjhJX0FJRjFDTEtfQ1RSTF9BSUYxX0RBVEFfRk1UKSwKPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgdmFsdWUgPDwgU1VOOElfQUlGMUNMS19DVFJMX0FJRjFfREFUQV9G TVQpOwo+PiArCj4+ICsgICAgICAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQg c3VuOGlfY29kZWNfaHdfcGFyYW1zKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFt LAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc25kX3BjbV9od19w YXJhbXMgKnBhcmFtcywKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IHNuZF9zb2NfZGFpICpkYWkpCj4+ICt7Cj4+ICsgICAgICAgc3RydWN0IHN1bjhpX2NvZGVjICpz Y29kZWMgPSBzbmRfc29jX2NvZGVjX2dldF9kcnZkYXRhKGRhaS0+Y29kZWMpOwo+PiArICAgICAg IGludCBzYW1wbGVfcmF0ZTsKPj4gKwo+PiArICAgICAgIC8qCj4+ICsgICAgICAgICogVGhlIENQ VSBEQUkgaGFuZGxlcyBvbmx5IGEgc2FtcGxlIG9mIDE2IGJpdHMuIENvbmZpZ3VyZSB0aGUKPj4g KyAgICAgICAgKiBjb2RlYyB0byBoYW5kbGUgdGhpcyB0eXBlIG9mIHNhbXBsZSByZXNvbHV0aW9u Lgo+PiArICAgICAgICAqLwo+PiArICAgICAgIHJlZ21hcF91cGRhdGVfYml0cyhzY29kZWMtPnJl Z21hcCwgU1VOOElfQUlGMUNMS19DVFJMLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICBT VU44SV9BSUYxQ0xLX0NUUkxfQUlGMV9XT1JEX1NJWl9NQVNLLAo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICBTVU44SV9BSUYxQ0xLX0NUUkxfQUlGMV9XT1JEX1NJWl8xNik7Cj4+ICsKPj4g KyAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoc2NvZGVjLT5yZWdtYXAsIFNVTjhJX0FJRjFDTEtf Q1RSTCwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgU1VOOElfQUlGMUNMS19DVFJMX0FJ RjFfTFJDS19ESVZfTUFTSywKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgU1VOOElfQUlG MUNMS19DVFJMX0FJRjFfTFJDS19ESVZfMTYpOwo+PiArCj4+ICsgICAgICAgc2FtcGxlX3JhdGUg PSBzdW44aV9jb2RlY19nZXRfaHdfcmF0ZShwYXJhbXMpOwo+PiArICAgICAgIGlmIChzYW1wbGVf cmF0ZSA8IDApCj4+ICsgICAgICAgICAgICAgICByZXR1cm4gc2FtcGxlX3JhdGU7Cj4+ICsKPj4g KyAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoc2NvZGVjLT5yZWdtYXAsIFNVTjhJX1NZU19TUl9D VFJMLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICBTVU44SV9TWVNfU1JfQ1RSTF9BSUYx X0ZTX01BU0ssCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZV9yYXRlIDw8IFNV TjhJX1NZU19TUl9DVFJMX0FJRjFfRlMpOwo+PiArICAgICAgIHJlZ21hcF91cGRhdGVfYml0cyhz Y29kZWMtPnJlZ21hcCwgU1VOOElfU1lTX1NSX0NUUkwsCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgIFNVTjhJX1NZU19TUl9DVFJMX0FJRjJfRlNfTUFTSywKPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgc2FtcGxlX3JhdGUgPDwgU1VOOElfU1lTX1NSX0NUUkxfQUlGMl9GUyk7Cj4+ ICsKPj4gKyAgICAgICByZXR1cm4gMDsKPj4gK30KPj4gKwo+Cj4gQSBmZXcgY29tbWVudHMgb24g dGhlIERBUE0gYW5kIGtjb250cm9sIGJpdHMuIFVuZm9ydW5hdGVseSBJIHNwb3R0ZWQgdGhlc2UK PiB0b28gbGF0ZS4gSG9wZWZ1bGx5IHdlIGNhbiBkbyBzb21lIGNsZWFudXAgYmVmb3JlIHRoZSBu ZXh0IHJlbGVhc2UuCgpUaGFuayB5b3UgZm9yIHRoZSByZXZpZXchIE5vIHByb2JsZW0sIEkgd2ls bCBzZW5kIGEgcGF0Y2ggdG8gY2xlYW4gdXAuCgo+Cj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHNu ZF9rY29udHJvbF9uZXcgc3VuOGlfb3V0cHV0X2xlZnRfbWl4ZXJfY29udHJvbHNbXSA9IHsKPgo+ IFRoZSBuYW1lIGRvZXNuJ3QgcmVhbGx5IG1hdGNoIHdoYXQgaXQgcmVwcmVzZW50cy4KCmFjawoK Pgo+PiArICAgICAgIFNPQ19EQVBNX1NJTkdMRSgiTFNsb3QgMCIsIFNVTjhJX0RBQ19NWFJfU1JD LAo+PiArICAgICAgICAgICAgICAgICAgICAgICBTVU44SV9EQUNfTVhSX1NSQ19EQUNMX01YUl9T UkNfQUlGMURBMEwsIDEsIDApLAo+PiArICAgICAgIFNPQ19EQVBNX1NJTkdMRSgiTFNsb3QgMSIs IFNVTjhJX0RBQ19NWFJfU1JDLAo+PiArICAgICAgICAgICAgICAgICAgICAgICBTVU44SV9EQUNf TVhSX1NSQ19EQUNMX01YUl9TUkNfQUlGMURBMUwsIDEsIDApLAo+PiArICAgICAgIFNPQ19EQVBN X1NJTkdMRSgiREFDTCIsIFNVTjhJX0RBQ19NWFJfU1JDLAo+PiArICAgICAgICAgICAgICAgICAg ICAgICBTVU44SV9EQUNfTVhSX1NSQ19EQUNMX01YUl9TUkNfQUlGMkRBQ0wsIDEsIDApLAo+PiAr ICAgICAgIFNPQ19EQVBNX1NJTkdMRSgiQURDTCIsIFNVTjhJX0RBQ19NWFJfU1JDLAo+PiArICAg ICAgICAgICAgICAgICAgICAgICBTVU44SV9EQUNfTVhSX1NSQ19EQUNMX01YUl9TUkNfQURDTCwg MSwgMCksCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJvbF9u ZXcgc3VuOGlfb3V0cHV0X3JpZ2h0X21peGVyX2NvbnRyb2xzW10gPSB7Cj4+ICsgICAgICAgU09D X0RBUE1fU0lOR0xFKCJSU2xvdCAwIiwgU1VOOElfREFDX01YUl9TUkMsCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgIFNVTjhJX0RBQ19NWFJfU1JDX0RBQ1JfTVhSX1NSQ19BSUYxREEwUiwgMSwg MCksCj4+ICsgICAgICAgU09DX0RBUE1fU0lOR0xFKCJSU2xvdCAxIiwgU1VOOElfREFDX01YUl9T UkMsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIFNVTjhJX0RBQ19NWFJfU1JDX0RBQ1JfTVhS X1NSQ19BSUYxREExUiwgMSwgMCksCj4+ICsgICAgICAgU09DX0RBUE1fU0lOR0xFKCJEQUNSIiwg U1VOOElfREFDX01YUl9TUkMsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIFNVTjhJX0RBQ19N WFJfU1JDX0RBQ1JfTVhSX1NSQ19BSUYyREFDUiwgMSwgMCksCj4+ICsgICAgICAgU09DX0RBUE1f U0lOR0xFKCJBRENSIiwgU1VOOElfREFDX01YUl9TUkMsCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgIFNVTjhJX0RBQ19NWFJfU1JDX0RBQ1JfTVhSX1NSQ19BRENSLCAxLCAwKSwKPj4gK307Cj4K PiBUaGVzZSBjYW4gYmUgc2hhcmVkIGJ5IHVzaW5nIHRoZSBuZXcgU09DX0RBUE1fRE9VQkxFIHR5 cGUuCj4KPiBBbHNvLCB3aGVuIHNoYXJlZCwgdGhlIGNvbnRyb2xzIG5vIGxvbmdlciB0YWtlIG9u IHRoZSB3aWRnZXQgbmFtZSBhcwo+IGEgcHJlZml4LiBBIHByb3BlciBuYW1lIHdvdWxkIGJlICJB SUYxIFNsb3QgMCBEaWdpdGFsIERBQyBQbGF5YmFjayBTd2l0Y2giLgo+IEFzIHRoZSBjb250cm9s cyBnZXQgZXhwb3J0ZWQgdG8gdXNlcnNwYWNlLCBpdCBpcyBpbXBvcnRhbnQgdG8gZ2V0IGl0IHJp Z2h0Cj4gZWFybHkgb24uCgpZZXMsIHlvdSBhcmUgcmlnaHQuIEkgd2lsbCB1c2UgdGhpcyBuZXcg ZGVmaW5lICsgcmVuYW1lIG5hbWVzLgoKPgo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHNu ZF9zb2NfZGFwbV93aWRnZXQgc3VuOGlfY29kZWNfZGFwbV93aWRnZXRzW10gPSB7Cj4+ICsgICAg ICAgLyogRGlnaXRhbCBwYXJ0cyBvZiB0aGUgREFDcyAqLwo+PiArICAgICAgIFNORF9TT0NfREFQ TV9TVVBQTFkoIkRBQyIsIFNVTjhJX0RBQ19ESUdfQ1RSTCwgU1VOOElfREFDX0RJR19DVFJMX0VO REEsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBOVUxMLCAwKSwKPj4gKwo+PiAr ICAgICAgIC8qIEFuYWxvZyBEQUMgKi8KPj4gKyAgICAgICBTTkRfU09DX0RBUE1fREFDKCJEaWdp dGFsIExlZnQgREFDIiwgIlBsYXliYWNrIiwgU1VOOElfQUlGMV9EQUNEQVRfQ1RSTCwKPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgIFNVTjhJX0FJRjFfREFDREFUX0NUUkxfQUlGMV9EQTBMX0VO QSwgMCksCj4+ICsgICAgICAgU05EX1NPQ19EQVBNX0RBQygiRGlnaXRhbCBSaWdodCBEQUMiLCAi UGxheWJhY2siLCBTVU44SV9BSUYxX0RBQ0RBVF9DVFJMLAo+PiArICAgICAgICAgICAgICAgICAg ICAgICAgU1VOOElfQUlGMV9EQUNEQVRfQ1RSTF9BSUYxX0RBMFJfRU5BLCAwKSwKPgo+IEl0IG1p Z2h0IGJlIGJldHRlciB1c2luZyB0aGUgU05EX1NPQ19EQVBNX0FJRl8qIHR5cGUuCj4gQW5kIGl0 IHByb2JhYmx5IHNob3VsZCBiZSBjYWxsZWQgIkFJRjEgU2xvdCAwIi4KCk9oLCBJIGRpZCBub3Qg a25vdyB0aGlzIGRlZmluZS4gSSB3aWxsIGhhdmUgYSBsb29rLCB0aGFuayB5b3UhCgo+Cj4+ICsK Pj4gKyAgICAgICAvKiBEQUMgTWl4ZXJzICovCj4+ICsgICAgICAgU05EX1NPQ19EQVBNX01JWEVS KCJMZWZ0IERBQyBNaXhlciIsIFNORF9TT0NfTk9QTSwgMCwgMCwKPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgc3VuOGlfb3V0cHV0X2xlZnRfbWl4ZXJfY29udHJvbHMsCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgIEFSUkFZX1NJWkUoc3VuOGlfb3V0cHV0X2xlZnRfbWl4ZXJfY29u dHJvbHMpKSwKPj4gKyAgICAgICBTTkRfU09DX0RBUE1fTUlYRVIoIlJpZ2h0IERBQyBNaXhlciIs IFNORF9TT0NfTk9QTSwgMCwgMCwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3VuOGlf b3V0cHV0X3JpZ2h0X21peGVyX2NvbnRyb2xzLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICBBUlJBWV9TSVpFKHN1bjhpX291dHB1dF9yaWdodF9taXhlcl9jb250cm9scykpLAo+Cj4gVGhl c2Ugc2hvdWxkIHByb2JhYmx5IGJlIHByZWZpeGVkIHdpdGggIkRpZ2l0YWwiIHRvIGRpc3Rpbmd1 aXNoIHRoZW0KPiBmcm9tIHRoZSBhbmFsb2cgc2lkZSB3aWRnZXRzLgoKYWNrCgo+Cj4+ICsKPj4g KyAgICAgICAvKiBDbG9ja3MgKi8KPj4gKyAgICAgICBTTkRfU09DX0RBUE1fU1VQUExZKCJNT0RD TEsgQUZJMSIsIFNVTjhJX01PRF9DTEtfRU5BLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgU1VOOElfTU9EX0NMS19FTkFfQUlGMSwgMCwgTlVMTCwgMCksCj4+ICsgICAgICAgU05EX1NP Q19EQVBNX1NVUFBMWSgiTU9EQ0xLIERBQyIsIFNVTjhJX01PRF9DTEtfRU5BLAo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgU1VOOElfTU9EX0NMS19FTkFfREFDLCAwLCBOVUxMLCAwKSwK Pj4gKyAgICAgICBTTkRfU09DX0RBUE1fU1VQUExZKCJBSUYxIiwgU1VOOElfU1lTQ0xLX0NUTCwK Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVTjhJX1NZU0NMS19DVExfQUlGMUNMS19F TkEsIDAsIE5VTEwsIDApLAo+PiArICAgICAgIFNORF9TT0NfREFQTV9TVVBQTFkoIlNZU0NMSyIs IFNVTjhJX1NZU0NMS19DVEwsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBTVU44SV9T WVNDTEtfQ1RMX1NZU0NMS19FTkEsIDAsIE5VTEwsIDApLAo+PiArCj4+ICsgICAgICAgU05EX1NP Q19EQVBNX1NVUFBMWSgiQUlGMSBQTEwiLCBTVU44SV9TWVNDTEtfQ1RMLAo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgU1VOOElfU1lTQ0xLX0NUTF9BSUYxQ0xLX1NSQ19QTEwsIDAsIE5V TEwsIDApLAo+PiArICAgICAgIC8qIEludmVyc2lvbiBhcyAwPUFJRjEsIDE9QUlGMiAqLwo+PiAr ICAgICAgIFNORF9TT0NfREFQTV9TVVBQTFkoIlNZU0NMSyBBSUYxIiwgU1VOOElfU1lTQ0xLX0NU TCwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVTjhJX1NZU0NMS19DVExfU1lTQ0xL X1NSQywgMSwgTlVMTCwgMCksCj4KPiBUaGVzZSBzZWVtIGxpa2UgdGhleSBzaG91bGQgYmUgaW4g dGhlIC5zZXRfcGxsIGFuZCAuc2V0X3N5c2NsayBjYWxsYmFja3MKPiBvZiB0aGUgY29kZWMgZGFp IGluc3RlYWQuCgpPa2F5LCBJIHdpbGwgdXBkYXRlIGl0Cgo+Cj4+ICsKPj4gKyAgICAgICAvKiBN b2R1bGUgcmVzZXQgKi8KPj4gKyAgICAgICBTTkRfU09DX0RBUE1fU1VQUExZKCJSU1QgQUlGMSIs IFNVTjhJX01PRF9SU1RfQ1RMLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VOOElf TU9EX1JTVF9DVExfQUlGMSwgMCwgTlVMTCwgMCksCj4+ICsgICAgICAgU05EX1NPQ19EQVBNX1NV UFBMWSgiUlNUIERBQyIsIFNVTjhJX01PRF9SU1RfQ1RMLAo+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgU1VOOElfTU9EX1JTVF9DVExfREFDLCAwLCBOVUxMLCAwKSwKPj4gKwo+PiArICAg ICAgIFNORF9TT0NfREFQTV9PVVRQVVQoIkhQIiksCj4KPiBUaGlzIGlzIHBhcnQgb2YgdGhlIGFu YWxvZyBzaWRlLiBJdCBkb2VzIG5vdCBiZWxvbmcgaGVyZS4KCmFjawoKPgo+PiArfTsKPj4gKwo+ PiArc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfc29jX2RhcG1fcm91dGUgc3VuOGlfY29kZWNfZGFw bV9yb3V0ZXNbXSA9IHsKPj4gKyAgICAgICAvKiBDbG9jayBSb3V0ZXMgKi8KPj4gKyAgICAgICB7 ICJBSUYxIiwgTlVMTCwgIlNZU0NMSyBBSUYxIiB9LAo+PiArICAgICAgIHsgIkFJRjEgUExMIiwg TlVMTCwgIkFJRjEiIH0sCj4+ICsgICAgICAgeyAiUlNUIEFJRjEiLCBOVUxMLCAiQUlGMSBQTEwi IH0sCj4+ICsgICAgICAgeyAiTU9EQ0xLIEFGSTEiLCBOVUxMLCAiUlNUIEFJRjEiIH0sCj4+ICsg ICAgICAgeyAiREFDIiwgTlVMTCwgIk1PRENMSyBBRkkxIiB9LAo+PiArCj4+ICsgICAgICAgeyAi UlNUIERBQyIsIE5VTEwsICJTWVNDTEsiIH0sCj4+ICsgICAgICAgeyAiTU9EQ0xLIERBQyIsIE5V TEwsICJSU1QgREFDIiB9LAo+PiArICAgICAgIHsgIkRBQyIsIE5VTEwsICJNT0RDTEsgREFDIiB9 LAo+Cj4gVGhlc2Ugcm91dGVzIGxvb2sgd2llcmQuIFNlZSBodHRwczovL3dlbnMudHcvZGFwbS1h MzMucGRmCj4KPiBUaGUgZGlnaXRhbCBzaWRlIERBQyBtaXhlcnMgYXJlbid0IHBhcnQgb2YgdGhl IG91dHB1dCBwYXRoLgo+IFRoZSByZXNldCBjb250cm9scyBzaG91bGQgZGlyZWN0bHkgZmVlZCB0 aGVpciByZXNwZWN0aXZlIGJsb2Nrcy4KClllcy4gVG8gYmUgaG9uZXN0LCBJIGRpZCBub3Qga25v dyB3aGF0IHdhcyB0aGUgYmVzdCB3YXkgdG8gaGFuZGxlIGl0IHNvIAp5b3VyIHJldmlldyBpcyBt b3JlIHRoYW4gd2VsY29tZS4KCldoYXQgZG8geW91IG1lYW4gYnkgImZlZWQgdGhlaXIgcmVzcGVj dGl2ZSBibG9ja3MiPwoKPgo+PiArCj4+ICsgICAgICAgLyogREFDIFJvdXRlcyAqLwo+PiArICAg ICAgIHsgIkRpZ2l0YWwgTGVmdCBEQUMiLCBOVUxMLCAiREFDIiB9LAo+PiArICAgICAgIHsgIkRp Z2l0YWwgUmlnaHQgREFDIiwgTlVMTCwgIkRBQyIgfSwKPj4gKwo+PiArICAgICAgIC8qIERBQyBN aXhlciBSb3V0ZXMgKi8KPj4gKyAgICAgICB7ICJMZWZ0IERBQyBNaXhlciIsICJMU2xvdCAwIiwg IkRpZ2l0YWwgTGVmdCBEQUMifSwKPj4gKyAgICAgICB7ICJSaWdodCBEQUMgTWl4ZXIiLCAiUlNs b3QgMCIsICJEaWdpdGFsIFJpZ2h0IERBQyJ9LAo+PiArCj4+ICsgICAgICAgLyogRW5kIG9mIHJv dXRlIDogSFAgb3V0ICovCj4+ICsgICAgICAgeyAiSFAiLCBOVUxMLCAiTGVmdCBEQUMgTWl4ZXIi IH0sCj4+ICsgICAgICAgeyAiSFAiLCBOVUxMLCAiUmlnaHQgREFDIE1peGVyIiB9LAo+Cj4gTmVp dGhlciBkb2VzIHRoaXMgYmVsb25nLgo+CgpUaGFuayB5b3UgYWdhaW4gZm9yIHlvdXIgcmV2aWV3 IQoKQmVzdCByZWdhcmRzLAoKTXlsw6huZQoKLS0gCk15bMOobmUgSm9zc2VyYW5kLCBGcmVlIEVs ZWN0cm9ucwpFbWJlZGRlZCBMaW51eCBhbmQgS2VybmVsIGVuZ2luZWVyaW5nCmh0dHA6Ly9mcmVl LWVsZWN0cm9ucy5jb20KCj4KPiBSZWdhcmRzCj4gQ2hlbll1Cj4KPj4gK307Cj4+ICsKPj4gK3N0 YXRpYyBzdHJ1Y3Qgc25kX3NvY19kYWlfb3BzIHN1bjhpX2NvZGVjX2RhaV9vcHMgPSB7Cj4+ICsg ICAgICAgLmh3X3BhcmFtcyA9IHN1bjhpX2NvZGVjX2h3X3BhcmFtcywKPj4gKyAgICAgICAuc2V0 X2ZtdCA9IHN1bjhpX3NldF9mbXQsCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgc3RydWN0IHNuZF9z b2NfZGFpX2RyaXZlciBzdW44aV9jb2RlY19kYWkgPSB7Cj4+ICsgICAgICAgLm5hbWUgPSAic3Vu OGkiLAo+PiArICAgICAgIC8qIHBsYXliYWNrIGNhcGFiaWxpdGllcyAqLwo+PiArICAgICAgIC5w bGF5YmFjayA9IHsKPj4gKyAgICAgICAgICAgICAgIC5zdHJlYW1fbmFtZSA9ICJQbGF5YmFjayIs Cj4+ICsgICAgICAgICAgICAgICAuY2hhbm5lbHNfbWluID0gMSwKPj4gKyAgICAgICAgICAgICAg IC5jaGFubmVsc19tYXggPSAyLAo+PiArICAgICAgICAgICAgICAgLnJhdGVzID0gU05EUlZfUENN X1JBVEVfODAwMF8xOTIwMDAsCj4+ICsgICAgICAgICAgICAgICAuZm9ybWF0cyA9IFNORFJWX1BD TV9GTVRCSVRfUzE2X0xFLAo+PiArICAgICAgIH0sCj4+ICsgICAgICAgLyogcGNtIG9wZXJhdGlv bnMgKi8KPj4gKyAgICAgICAub3BzID0gJnN1bjhpX2NvZGVjX2RhaV9vcHMsCj4+ICt9Owo+PiAr Cj4+ICtzdGF0aWMgc3RydWN0IHNuZF9zb2NfY29kZWNfZHJpdmVyIHN1bjhpX3NvY19jb2RlYyA9 IHsKPj4gKyAgICAgICAuY29tcG9uZW50X2RyaXZlciA9IHsKPj4gKyAgICAgICAgICAgICAgIC5k YXBtX3dpZGdldHMgICAgICAgICAgID0gc3VuOGlfY29kZWNfZGFwbV93aWRnZXRzLAo+PiArICAg ICAgICAgICAgICAgLm51bV9kYXBtX3dpZGdldHMgICAgICAgPSBBUlJBWV9TSVpFKHN1bjhpX2Nv ZGVjX2RhcG1fd2lkZ2V0cyksCj4+ICsgICAgICAgICAgICAgICAuZGFwbV9yb3V0ZXMgICAgICAg ICAgICA9IHN1bjhpX2NvZGVjX2RhcG1fcm91dGVzLAo+PiArICAgICAgICAgICAgICAgLm51bV9k YXBtX3JvdXRlcyAgICAgICAgPSBBUlJBWV9TSVpFKHN1bjhpX2NvZGVjX2RhcG1fcm91dGVzKSwK Pj4gKyAgICAgICB9LAo+PiArfTsKPj4gKwo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBf Y29uZmlnIHN1bjhpX2NvZGVjX3JlZ21hcF9jb25maWcgPSB7Cj4+ICsgICAgICAgLnJlZ19iaXRz ICAgICAgID0gMzIsCj4+ICsgICAgICAgLnJlZ19zdHJpZGUgICAgID0gNCwKPj4gKyAgICAgICAu dmFsX2JpdHMgICAgICAgPSAzMiwKPj4gKyAgICAgICAubWF4X3JlZ2lzdGVyICAgPSBTVU44SV9E QUNfTVhSX1NSQywKPj4gKwo+PiArICAgICAgIC5jYWNoZV90eXBlICAgICA9IFJFR0NBQ0hFX0ZM QVQsCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgaW50IHN1bjhpX2NvZGVjX3Byb2JlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4+ICt7Cj4+ICsgICAgICAgc3RydWN0IHJlc291cmNlICpy ZXNfYmFzZTsKPj4gKyAgICAgICBzdHJ1Y3Qgc3VuOGlfY29kZWMgKnNjb2RlYzsKPj4gKyAgICAg ICB2b2lkIF9faW9tZW0gKmJhc2U7Cj4+ICsgICAgICAgaW50IHJldDsKPj4gKwo+PiArICAgICAg IHNjb2RlYyA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LCBzaXplb2YoKnNjb2RlYyksIEdGUF9L RVJORUwpOwo+PiArICAgICAgIGlmICghc2NvZGVjKQo+PiArICAgICAgICAgICAgICAgcmV0dXJu IC1FTk9NRU07Cj4+ICsKPj4gKyAgICAgICBzY29kZWMtPmRldiA9ICZwZGV2LT5kZXY7Cj4+ICsK Pj4gKyAgICAgICBzY29kZWMtPmNsa19tb2R1bGUgPSBkZXZtX2Nsa19nZXQoJnBkZXYtPmRldiwg Im1vZCIpOwo+PiArICAgICAgIGlmIChJU19FUlIoc2NvZGVjLT5jbGtfbW9kdWxlKSkgewo+PiAr ICAgICAgICAgICAgICAgZGV2X2VycigmcGRldi0+ZGV2LCAiRmFpbGVkIHRvIGdldCB0aGUgbW9k dWxlIGNsb2NrXG4iKTsKPj4gKyAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKHNjb2RlYy0+ Y2xrX21vZHVsZSk7Cj4+ICsgICAgICAgfQo+PiArCj4+ICsgICAgICAgc2NvZGVjLT5jbGtfYnVz ID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsICJidXMiKTsKPj4gKyAgICAgICBpZiAoSVNfRVJS KHNjb2RlYy0+Y2xrX2J1cykpIHsKPj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoJnBkZXYtPmRl diwgIkZhaWxlZCB0byBnZXQgdGhlIGJ1cyBjbG9ja1xuIik7Cj4+ICsgICAgICAgICAgICAgICBy ZXR1cm4gUFRSX0VSUihzY29kZWMtPmNsa19idXMpOwo+PiArICAgICAgIH0KPj4gKwo+PiArICAg ICAgIHJlc19iYXNlID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVN LCAwKTsKPj4gKyAgICAgICBiYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKCZwZGV2LT5kZXYs IHJlc19iYXNlKTsKPj4gKyAgICAgICBpZiAoSVNfRVJSKGJhc2UpKSB7Cj4+ICsgICAgICAgICAg ICAgICBkZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQgdG8gbWFwIHRoZSByZWdpc3RlcnNcbiIp Owo+PiArICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoYmFzZSk7Cj4+ICsgICAgICAgfQo+ PiArCj4+ICsgICAgICAgc2NvZGVjLT5yZWdtYXAgPSBkZXZtX3JlZ21hcF9pbml0X21taW8oJnBk ZXYtPmRldiwgYmFzZSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmc3VuOGlfY29kZWNfcmVnbWFwX2NvbmZpZyk7Cj4+ICsgICAgICAgaWYgKElTX0VS UihzY29kZWMtPnJlZ21hcCkpIHsKPj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoJnBkZXYtPmRl diwgIkZhaWxlZCB0byBjcmVhdGUgb3VyIHJlZ21hcFxuIik7Cj4+ICsgICAgICAgICAgICAgICBy ZXR1cm4gUFRSX0VSUihzY29kZWMtPnJlZ21hcCk7Cj4+ICsgICAgICAgfQo+PiArCj4+ICsgICAg ICAgcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgc2NvZGVjKTsKPj4gKwo+PiArICAgICAgIHBt X3J1bnRpbWVfZW5hYmxlKCZwZGV2LT5kZXYpOwo+PiArICAgICAgIGlmICghcG1fcnVudGltZV9l bmFibGVkKCZwZGV2LT5kZXYpKSB7Cj4+ICsgICAgICAgICAgICAgICByZXQgPSBzdW44aV9jb2Rl Y19ydW50aW1lX3Jlc3VtZSgmcGRldi0+ZGV2KTsKPj4gKyAgICAgICAgICAgICAgIGlmIChyZXQp Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyX3BtX2Rpc2FibGU7Cj4+ICsgICAg ICAgfQo+PiArCj4+ICsgICAgICAgcmV0ID0gc25kX3NvY19yZWdpc3Rlcl9jb2RlYygmcGRldi0+ ZGV2LCAmc3VuOGlfc29jX2NvZGVjLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJnN1bjhpX2NvZGVjX2RhaSwgMSk7Cj4+ICsgICAgICAgaWYgKHJldCkgewo+PiArICAg ICAgICAgICAgICAgZGV2X2VycigmcGRldi0+ZGV2LCAiRmFpbGVkIHRvIHJlZ2lzdGVyIGNvZGVj XG4iKTsKPj4gKyAgICAgICAgICAgICAgIGdvdG8gZXJyX3N1c3BlbmQ7Cj4+ICsgICAgICAgfQo+ PiArCj4+ICsgICAgICAgcmV0dXJuIHJldDsKPj4gKwo+PiArZXJyX3N1c3BlbmQ6Cj4+ICsgICAg ICAgaWYgKCFwbV9ydW50aW1lX3N0YXR1c19zdXNwZW5kZWQoJnBkZXYtPmRldikpCj4+ICsgICAg ICAgICAgICAgICBzdW44aV9jb2RlY19ydW50aW1lX3N1c3BlbmQoJnBkZXYtPmRldik7Cj4+ICsK Pj4gK2Vycl9wbV9kaXNhYmxlOgo+PiArICAgICAgIHBtX3J1bnRpbWVfZGlzYWJsZSgmcGRldi0+ ZGV2KTsKPj4gKwo+PiArICAgICAgIHJldHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBp bnQgc3VuOGlfY29kZWNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4+ICt7 Cj4+ICsgICAgICAgc3RydWN0IHNuZF9zb2NfY2FyZCAqY2FyZCA9IHBsYXRmb3JtX2dldF9kcnZk YXRhKHBkZXYpOwo+PiArICAgICAgIHN0cnVjdCBzdW44aV9jb2RlYyAqc2NvZGVjID0gc25kX3Nv Y19jYXJkX2dldF9kcnZkYXRhKGNhcmQpOwo+PiArCj4+ICsgICAgICAgcG1fcnVudGltZV9kaXNh YmxlKCZwZGV2LT5kZXYpOwo+PiArICAgICAgIGlmICghcG1fcnVudGltZV9zdGF0dXNfc3VzcGVu ZGVkKCZwZGV2LT5kZXYpKQo+PiArICAgICAgICAgICAgICAgc3VuOGlfY29kZWNfcnVudGltZV9z dXNwZW5kKCZwZGV2LT5kZXYpOwo+PiArCj4+ICsgICAgICAgc25kX3NvY191bnJlZ2lzdGVyX2Nv ZGVjKCZwZGV2LT5kZXYpOwo+PiArICAgICAgIGNsa19kaXNhYmxlX3VucHJlcGFyZShzY29kZWMt PmNsa19tb2R1bGUpOwo+PiArICAgICAgIGNsa19kaXNhYmxlX3VucHJlcGFyZShzY29kZWMtPmNs a19idXMpOwo+PiArCj4+ICsgICAgICAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN1bjhpX2NvZGVjX29mX21hdGNoW10gPSB7Cj4+ICsg ICAgICAgeyAuY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuOGktYTMzLWNvZGVjIiB9LAo+PiAr ICAgICAgIHt9Cj4+ICt9Owo+PiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3VuOGlfY29kZWNf b2ZfbWF0Y2gpOwo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgc3VuOGlf Y29kZWNfcG1fb3BzID0gewo+PiArICAgICAgIFNFVF9SVU5USU1FX1BNX09QUyhzdW44aV9jb2Rl Y19ydW50aW1lX3N1c3BlbmQsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bjhpX2Nv ZGVjX3J1bnRpbWVfcmVzdW1lLCBOVUxMKQo+PiArfTsKPj4gKwo+PiArc3RhdGljIHN0cnVjdCBw bGF0Zm9ybV9kcml2ZXIgc3VuOGlfY29kZWNfZHJpdmVyID0gewo+PiArICAgICAgIC5kcml2ZXIg PSB7Cj4+ICsgICAgICAgICAgICAgICAubmFtZSA9ICJzdW44aS1jb2RlYyIsCj4+ICsgICAgICAg ICAgICAgICAub2ZfbWF0Y2hfdGFibGUgPSBzdW44aV9jb2RlY19vZl9tYXRjaCwKPj4gKyAgICAg ICAgICAgICAgIC5wbSA9ICZzdW44aV9jb2RlY19wbV9vcHMsCj4+ICsgICAgICAgfSwKPj4gKyAg ICAgICAucHJvYmUgPSBzdW44aV9jb2RlY19wcm9iZSwKPj4gKyAgICAgICAucmVtb3ZlID0gc3Vu OGlfY29kZWNfcmVtb3ZlLAo+PiArfTsKPj4gK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoc3VuOGlf Y29kZWNfZHJpdmVyKTsKPj4gKwo+PiArTU9EVUxFX0RFU0NSSVBUSU9OKCJBbGx3aW5uZXIgQTMz IChzdW44aSkgY29kZWMgZHJpdmVyIik7Cj4+ICtNT0RVTEVfQVVUSE9SKCJNeWzDqG5lIEpvc3Nl cmFuZCA8bXlsZW5lLmpvc3NlcmFuZEBmcmVlLWVsZWN0cm9ucy5jb20+Iik7Cj4+ICtNT0RVTEVf TElDRU5TRSgiR1BMIik7Cj4+ICtNT0RVTEVfQUxJQVMoInBsYXRmb3JtOnN1bjhpLWNvZGVjIik7 Cj4+IC0tCj4+IDIuMTEuMAo+PgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpBbHNhLWRldmVsIG1haWxpbmcgbGlzdApBbHNhLWRldmVsQGFsc2EtcHJvamVj dC5vcmcKaHR0cDovL21haWxtYW4uYWxzYS1wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Fs c2EtZGV2ZWwK