From mboxrd@z Thu Jan 1 00:00:00 1970 From: Barry Song <21cnbao@gmail.com> Subject: Re: [PATCH v2] ARM: CSR: Adding CSR SiRFprimaII board support Date: Thu, 30 Jun 2011 15:19:17 +0800 Message-ID: References: <1309231954-23260-1-git-send-email-bs14@csr.com> <201106292329.44447.arnd@arndb.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <201106292329.44447.arnd@arndb.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-arm-kernel-bounces@lists.infradead.org Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Arnd Bergmann Cc: linux@arm.linux.org.uk, devicetree-discuss@lists.ozlabs.org, workgroup.linux@csr.com, Grant Likely , weizeng.he@csr.com, tglx@linutronix.de, linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org SGkgQXJuZCwKVGhhbmtzLgoKMjAxMS82LzMwIEFybmQgQmVyZ21hbm4gPGFybmRAYXJuZGIuZGU+ Ogo+IE9uIFR1ZXNkYXkgMjggSnVuZSAyMDExLCBCYXJyeSBTb25nIHdyb3RlOgo+PiBUaGlzIHBh dGNoIGFkZHMgdGhlIGJhc2ljIHN1cHBvcnQgZm9yIHRoaXMgU29DIGFuZCBFVkIgYm9hcmQgYmFz ZWQgb24gZGV2aWNlCj4+IHRyZWUuIEl0IGlzIGZvbGxvd2luZyB0aGUgWllOUSBvZiBHcmFudCBM aWtlbHkgaW4gc29tZSBkZWdyZWUuCj4KPiBIaSBCYXJyeSwKPgo+IFRoZXJlIGFyZSBhIGZldyBt b3JlIHRoaW5ncyBJIG5vdGljZWQgdGhpcyB0aW1lIGFyb3VuZCwgYW5kIHNvbWUgY29tbWVudHMK PiBhYm91dCBjb2RlIHRoYXQgY2hhbmdlZCBzaW5jZSB2MS4KPgo+PiB0aGUgZGV2aWNlIGhpZXJh cmNoeSBpbiBTaVJGcHJpbWFJSSBpcyBhcyBiZWxvdwo+Pgo+PiBBWEkoMC0weDNGRkZGRkZGKQo+ PiDCoCDCoCDCoCDCoCDCoCDCoCBtZW1vcnkKPj4gQVhJKDB4NDAwMDAwMDAtMHhDMDAwMDAwMCkK Pj4gwqAgwqAgwqAgwqAgwqAgwqAgQ1BVSUYoc2lyZi1pb2J1cykKPj4gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBJTlRDCj4+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgTUVNQwo+PiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oExDRAo+PiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFZQUAo+PiDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEdSQVBISUMKPj4gwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBNVUxUSU1FRElBCj4+IMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgR1BTCj4+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgVUFSVAo+PiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoC4u Lgo+PiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGhhcmQtY29kZWQgUENJ IGJyaWRnZQo+PiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoFNEL01NQwo+PiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHJ0Yy1p b2JyZwo+PiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oFJUQwo+Pgo+Cj4gSXMgdGhpcyByZWFsbHkganVzdCBvbmUgYnVzIHdpdGggYSBodWdlIGFkZHJl c3Mgc3BhY2UsIG9yIHJhdGhlciBzb21lCj4gbmVzdGVkIGJ1c2VzPyBJJ2QgcHJlZmVyIHRvIGhh dmUgdGhlIGRldmljZSB0cmVlIHJlcHJlc2VudGF0aW9uIGFzCj4gY2xvc2UgYXMgcG9zc2libGUg dG8gdGhlIGFjdHVhbCBsYXlvdXQuCgp0aGVyZSBhcmUgdHdvIEFYSSBidXNlcyBpbiBwcmltYTIu IEFYSS0xIGNvbm5lY3QgdG8gbWVtb3J5LCBBWEktMiBpcwp0cmFuc2ZlcnJlZCB0byBDU1Igc2Vs Zi1kZWZpbmVkIElPQlVTIGJ5IENQVUlGLCB0aGVuIDEgaW50dGVydXB0CmNvbnRyb2xsZXIgYW5k IDkgSU8gYnJpZGdlcyBhcmUgY29ubmVjdGVkIHRvIHRoZSBJT0JVUyAuClRoZSA5IElPIGJyaWRn ZXMgYXJlIFNZU0lPQkcsIFBFUklJT0JHLENQVVJUQ0lPQkcsIFVVU0lPQkcsIEdSQVBISU9CRywK TUVESUFJT0JHLCBEU1BJT0JHLCBESVNQSU9CRywgTUVNSU9CRy4gRXZlcnkgaW9icmcgY29ubmVj dCB0byBhIGdyb3VwCm9mIGNvbnRyb2xsZXJzLgpGb3IgZXhhbXBsZSwgRElTUElPQkcgY29ubmVj dCB0byBWUFAgYW5kIExDRCwgU1lTSU9CRyBjb25uZWN0IHRvIENMS0MsClJTVEMsIFJTQyBhbmQg Q1BISUZCRywgRFNQSU9CRyBjb25uZWN0IHRvIERTUElGLCBHUFMgYW5kIERTUC4KUEVSSUlPQkcg Y29ubmVjdCB0byBUSU1FUiwgTkFORCwgQVVESU8sIFVBUlQwLCBVQVJUMSwgVUFSVDIsIFVTUDAs ClVTUDEsIFVTUDIsIFNQSTAsIEkyQzAsIEkyQzEsIEdQSU8sICpTWVMyUENJKiBhbmQgc28gb24u IFRoZW4KKlNZUzJQQ0kqIGNvbm5lY3QgdG8gU0QuCgpUaGUgaW5kZW5kYXRpb24gZGVzY2libGUg dGhlIGRldmljZSBoaWVyYXJjaHkKQVhJLTEKICAgICAgICAgTWVtb3J5CkFYSS0yCiAgICAgICAg IGludGVycnVwdCBjb250cm9sbGVyCiAgICAgICAgIElPQkcuLi4KICAgICAgICAgICAgICAgICAg eHh4eAogICAgICAgICBJT0JHLi4uCiAgICAgICAgICAgICAgICAgIHh4eHgKICAgICAgICAgSU9C Ry4uLgogICAgICAgICAgICAgICAgICB4eHh4CiAgICAgICAgIElPQkcuLi4KICAgICAgICAgICAg ICAgICAgeHh4eAogICAgICAgICBJT0JHLi4uCiAgICAgICAgICAgICAgICAgIHh4eHgKICAgICAg ICAgSU9CRy4uLgogICAgICAgICAgICAgICAgICBTWVMyUENJCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBTRAoKaSBoYXZlIGdldCB0aGUgSUMgZ3V5IFdlaXplbmcgaW52b2x2ZWQsIG1heWJl IGhlIGNhbiBleHBsYWluIGJldHRlciB0aGFuIG1lIDotKQoKPgo+IFRoaXMgYWxzbyBpbmNsdWRl cyB1c2luZyBidXMtbG9jYWwgYWRkcmVzc2VzIGZvciB0aGUgJ3JlZycgcHJvcGVydGllcywKPiBy YXRoZXIgdGhhbiBnbG9iYWwgYWRkcmVzc2VzLgo+Cj4+IMKgMS4gY2xvY2s6IHVzZSBkZXZfaWQg aW5zdGVhZCBvZiBjb25faWQKPj4gwqAyLiBLY29uZmlnOiBkZWxldGUgSVNBX0RNQQo+PiDCoDMu IGlycTogaW1wbGVtZW50IGludCBjb250cm9sbGVyIGJhc2VkIG9uIERUCj4+IMKgIMKgIMKgIMKg bW92ZSB0byBHRU5FUklDX0lSUV9DSElQIGZyYW1ld29yawo+PiDCoDQuIHRpbWVyOiBpbXBsZW1l bnQgdGltZXIgYmFzZWQgb24gRFQKPj4gwqA1LiBlbnRyeS1tYWNyby5TOiB1c2UgZ2V0X2lycW5y X3ByZWFtYmxlIHRvIGxvYWQgdGhlIGJhc2UgYWRkcmVzcyBvbmx5IG9uY2UKPj4gwqAgwqAgcGVy IElSUSBleGNlcHRpb24uCj4+IMKgNi4gb3RoZXJzOgo+PiDCoCDCoCDCoCB1c2UgcmVhZGxfcmVs YXhlZCBpbnN0ZWFkIG9mIF9fcmF3X3JlYWRsCj4+IMKgIMKgIMKgIGFkanVzdCBLY29uZmlnIG9y ZGVyIGZvciBQUklNQTIKPj4gwqAgwqAgwqAgdXNlIGNsa19nZXRfc3lzIGluc3RlYWQgb2YgY2xr X2dldCBmb3Igc3lzdGVtIGxldmVsIGNsb2NrCj4+IMKgIMKgIMKgIHVzZSBCVUdfT04oSVNfRVJS KGNsaykpIGluc3RlYWQgb2YgQlVHX09OKElTX0VSUl9PUl9OVUxMKGNsaykpOwo+PiDCoCDCoCDC oCBmaXggdHlwbyBmb3IgQ0xPQ0tfVElDS19SQVRFCj4+IMKgIMKgIMKgICgic2lyZix4eHgiLCAi c2lyZixwcmltYTIteHh4IikgwqBpbnN0ZWFkIG9mICgic2lyZix4eHgiKSBpbiBkdHMKPj4KPgo+ IEdvb2QgcHJvZ3Jlc3MhCj4KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAw MC4uMTc3N2U5OAo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2FyY2gvYXJtL2Jvb3QvZHRzL3By aW1hMi1jYi5kdHMKPj4gQEAgLTAsMCArMSw1MCBAQAo+PiArL2R0cy12MS87Cj4+ICsvIHsKPj4g KyDCoCDCoCBtb2RlbCA9ICJTSVJGIFByaW1hMiBFVkIiOwo+PiArIMKgIMKgIGNvbXBhdGlibGUg PSAic2lyZixwcmltYTItY2IiLCAic2lyZixwcmltYTIiOwo+PiArIMKgIMKgICNhZGRyZXNzLWNl bGxzID0gPDE+Owo+PiArIMKgIMKgICNzaXplLWNlbGxzID0gPDE+Owo+PiArIMKgIMKgIGludGVy cnVwdC1wYXJlbnQgPSA8JmludGM+Owo+PiArCj4+ICsgwqAgwqAgbWVtb3J5IHsKPj4gKyDCoCDC oCDCoCDCoCDCoCDCoCByZWcgPSA8MHgwMDAwMDAwMCAweDIwMDAwMDAwPjsKPj4gKyDCoCDCoCB9 Owo+PiArCj4+ICsgwqAgwqAgY2hvc2VuIHsKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCBib290YXJn cyA9ICJtZW09NTEyTSByZWFsX3Jvb3Q9L2Rldi9tbWNibGswcDIgY29uc29sZT10dHlTMSBlYXJs eXByaW50ayI7Cj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgbGludXgsc3Rkb3V0LXBhdGggPSAmdWFy dDE7Cj4+ICsgwqAgwqAgfTsKPj4gKwo+PiArIMKgIMKgIGFtYmEgewo+PiArIMKgIMKgIMKgIMKg IMKgIMKgIGNvbXBhdGlibGUgPSAic2ltcGxlLWJ1cyI7Cj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAg I2FkZHJlc3MtY2VsbHMgPSA8MT47Cj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgI3NpemUtY2VsbHMg PSA8MT47Cj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgcmFuZ2VzOwo+PiArCj4+ICsgwqAgwqAgwqAg wqAgwqAgwqAgaW50YzogaW50ZXJydXB0LWNvbnRyb2xsZXJAMHg4MDAyMDAwMCB7Cj4+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW50ZXJydXB0LWNvbnRyb2xsZXI7Cj4+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29tcGF0aWJsZSA9ICJzaXJmLGludGMiLCAic2ly ZixwcmltYTItaW50YyI7Cj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmVnID0g PDB4ODAwMjAwMDAgMHgxMDAwPjsKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAj aW50ZXJydXB0LWNlbGxzID0gPDE+Owo+PiArIMKgIMKgIMKgIMKgIMKgIMKgIH07Cj4KPiBTb21l IG1vcmUgY29tbWVuZHMgb24gdGhlIGRldmljZSB0cmVlIHByb3BlcnRpZXM6Cj4KPiBJIHRoaW5r IHRoZSBuYW1lc3BhY2UgZm9yIHRoZSBjb21wYXRpYmxlIHZhbHVlcyBpcyBzdXBwb3NlZCB0byBz dGFydCB3aXRoCj4gdGhlIHN0b2NrIHRpY2tlciBuYW1lIG9mIHRoZSBjb21wYW55IG1ha2luZyB0 aGUgZGV2aWNlIGFzIGEgdW5pcXVlCj4gaWRlbnRpZmllci4gVGhpcyBtZWFucyB5b3UnZCBoYXZl IHRvIHVzZQo+ICJjc3J4ZixzaXJmLWludGMiLCAiY3NyeGYsc2lyZi1wcmltYTItaW50YyIgYXMg dGhlIHZhbHVlLCBpbnN0ZWFkCj4gb2Ygc3RhcnRpbmcgd2l0aCB0aGUgcHJvZHVjdCBuYW1lLiBJ IGRvbid0IGtub3cgZXhhY3RseSBob3cgc3RyaWN0bHkKPiB3ZSBhcHBseSB0aGF0IHJ1bGUsIGJ1 dCBJJ3ZlIHRha2VuIHRoZSBkZXZpY2V0cmVlLWRpc2N1c3NAbGlzdHMub3psYWJzLm9yZwo+IG1h aWxpbmcgbGlzdCBvbiBDYywgbWF5YmUgc29tZW9uZSBjYW4gY2xhcmlmeS4KCmluIGZhY3QsIFNp UkYgaXMgYSBjb21wYW55IG5hbWUuIGl0IHdhcyBtZXJnZWQgaW50byBDU1IgNCB5ZWFycyBhZ28u CkR1ZSB0byBoaXN0b3J5IHJlYXNvbiwgbm93IHRoZSBTb0MgbmFtZXMgYXJlIHN0aWxsIGhlYWRl ZCBieSBzaXJmLgp0aGUgbG9nbyBpbiBTaVJGcHJpbWFJSSBjaGlwIGlzIENTUi4KU28gdGhlICJT aVJGIiBvZiBTaVJGcHJpbWFJSSBzaG91bGQgbWVhbiB0d28gdGhpbmdzOiBvbGQgY29tcGFueSBu YW1lLAogaGVyaXRhYmxlIENQVSBwcm9kdWN0aW9uLWxpbmUuIEFueXdheSwgImNzciwgc2lyZi1p bnRjIiBzZWVtcyB0byBtYWtlCm1vcmUgc2Vuc2VzIHRoYW4gInNpcmYsIGludGMiLgoKY291bGQg d2UgY2hhbmdlICJjc3J4ZixzaXJmLWludGMiLCAiY3NyeGYsc2lyZi1wcmltYTItaW50YyIgdG8K ImNzcixzaXJmLWludGMiLCAiY3NyLHNpcmYtcHJpbWEyLWludGMiPwoKPgo+PiArIMKgIMKgIMKg IMKgIMKgIMKgIHRpbWVyMDogdGltZXJAMHhiMDAyMDAwMCB7Cj4+ICsgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgY29tcGF0aWJsZSA9ICJzaXJmLHRpY2siLCAic2lyZixwcmltYTItdGlj ayI7Cj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmVnID0gPDB4YjAwMjAwMDAg MHgxMDAwPjsKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbnRlcnJ1cHRzID0g PDA+Owo+PiArIMKgIMKgIMKgIMKgIMKgIMKgIH07Cj4+ICsKPj4gKyDCoCDCoCDCoCDCoCDCoCDC oCB1YXJ0MDogdWFydEAweGIwMDUwMDAwIHsKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBjb21wYXRpYmxlID0gInNpcmYsdWFydCIsICJzaXJmLHByaW1hMi11YXJ0IjsKPj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZWcgPSA8MHhiMDA1MDAwMCAweDEwMDA+Owo+ PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGludGVycnVwdHMgPSA8MTc+Owo+PiAr IMKgIMKgIMKgIMKgIMKgIMKgIH07Cj4+ICsKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCB1YXJ0MTog dWFydEAweGIwMDYwMDAwIHsKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb21w YXRpYmxlID0gInNpcmYsdWFydCIsICJzaXJmLHByaW1hMi11YXJ0IjsKPj4gKyDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCByZWcgPSA8MHhiMDA2MDAwMCAweDEwMDA+Owo+PiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGludGVycnVwdHMgPSA8MTg+Owo+PiArIMKgIMKgIMKg IMKgIMKgIMKgIH07Cj4+ICsgwqAgwqAgfTsKPj4gK307Cj4KPiBXaGVuIHlvdSB1c2UgbG9jYWwg YWRkcmVzc2VzLCB0aGlzIHdvdWxkIGJlY29tZSBzb21ldGhpbmcgbGlrZQo+Cj4gwqAgwqAgwqAg wqBheGkxIHsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGNvbXBhdGlibGUgPSAic2ltcGxlLWJ1 cyI7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAjYWRkcmVzcy1jZWxscyA9IDwxPjsKPiDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCNzaXplLWNlbGxzID0gPDE+Owo+IMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgcmFuZ2VzIDwwIDB4ODAwMDAwMDAgMHgxMDAwMDAwMD47Cj4KPiDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoGludGM6IGludGVycnVwdC1jb250cm9sbGVyQDIwMDAwIHsKPiDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGludGVycnVwdC1jb250cm9sbGVyOwo+IMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgY29tcGF0aWJsZSA9ICJzaXJmLGludGMiLCAic2ly ZixwcmltYTItaW50YyI7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqByZWcg PSA8MHgyMDAwMCAweDEwMDA+Owo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg I2ludGVycnVwdC1jZWxscyA9IDwxPjsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH07Cj4gwqAg wqAgwqAgwqB9Cj4gwqAgwqAgwqAgwqBheGkyIHsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGNv bXBhdGlibGUgPSAic2ltcGxlLWJ1cyI7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAjYWRkcmVz cy1jZWxscyA9IDwxPjsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCNzaXplLWNlbGxzID0gPDE+ Owo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgcmFuZ2VzIDwwIDB4YjAwMDAwMDAgMHgxMDAwMDAw MD47Cj4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHRpbWVyMDogdGltZXJAMjAwMDAgewo+IMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgcmVnID0gPDB4MjAwMDAgMHgxMDAwPjsK PiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH07Cj4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHVh cnQwOiB1YXJ0QDUwMDAwIHsKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHJl ZyA9IDwweDUwMDAwIDB4MTAwMD47Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB9Owo+Cj4gwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqB1YXJ0MTogdWFydEA2MDAwMCB7Cj4gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqByZWcgPSA8MHg2MDAwMCAweDEwMDA+Owo+IMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgfTsKPiDCoCDCoCDCoCDCoH07Cj4KCk9rLiBpIHdpbGwgc2VuZCB0aGUgZnVs bCBEVCBpbiBwYXRjaCB2My4KCj4KPgo+PiArCj4+IGRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNo LXByaW1hMi9NYWtlZmlsZSBiL2FyY2gvYXJtL21hY2gtcHJpbWEyL01ha2VmaWxlCj4+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAuLmM1MWQ2MGQKPj4gLS0tIC9kZXYvbnVs bAo+PiArKysgYi9hcmNoL2FybS9tYWNoLXByaW1hMi9NYWtlZmlsZQo+PiBAQCAtMCwwICsxIEBA Cj4+ICtvYmoteSA6PSB0aW1lci5vIGlycS5vIGNsb2NrLm8gY29tbW9uLm8gYm9hcmRfZHQubwo+ Cj4gTWlub3IgZGV0YWlsOgo+Cj4gYmV0dGVyIHB1dCB0aGVzZSBpbiBhIGxpc3Qgd2l0aCBvbmUg ZmlsZSBwZXIgbGluZSwgbGlrZQo+Cj4gb2JqLXkgwqAgKz0gdGltZXIubwo+IG9iai15IMKgICs9 IGlycS5vCj4KPiBUaGF0IG1ha2VzIHRoZSBsaXN0IG1vcmUgY29uc2lzdGVudCB3aGVuIHlvdSBh ZGQgY29uZGl0aW9uYWwgZmlsZXMuCgpUaGVuIGl0IGNvdWxkIGJlOgpvYmoteSArPSB0aW1lci5v Cm9iai15ICs9IGlycS5vCm9iai15ICs9IGNsb2NrLm8Kb2JqLXkgKz0gY29tbW9uLm8Kb2JqLSQo Q09ORklHX0NBQ0hFX0wyWDApIDo9IGwyeDAubwoKPgo+PiArKysgYi9hcmNoL2FybS9tYWNoLXBy aW1hMi9ib2FyZF9kdC5jCj4+IEBAIC0wLDAgKzEsMjggQEAKPj4gKy8qCj4+ICsgKiBUaGlzIGZp bGUgY29udGFpbnMgY29kZSBmb3IgYm9hcmRzIHdpdGggZGV2aWNlIHRyZWUgc3VwcG9ydC4KPj4g KyAqCj4+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTEgQ2FtYnJpZGdlIFNpbGljb24gUmFkaW8gTGlt aXRlZCwgYSBDU1IgcGxjIGdyb3VwIGNvbXBhbnkuCj4+ICsgKgo+PiArICogTGljZW5zZWQgdW5k ZXIgR1BMdjIgb3IgbGF0ZXIuCj4+ICsgKi8KPj4gKwo+PiArI2luY2x1ZGUgPGxpbnV4L29mLmg+ Cj4+ICsjaW5jbHVkZSA8YXNtL21hY2gvYXJjaC5oPgo+PiArI2luY2x1ZGUgPGFzbS9tYWNoLXR5 cGVzLmg+Cj4+ICsjaW5jbHVkZSA8bWFjaC9oYXJkd2FyZS5oPgo+PiArI2luY2x1ZGUgImNvbW1v bi5oIgo+PiArCj4+ICtzdGF0aWMgY29uc3QgY2hhciAqcHJpbWEyY2JfZHRfbWF0Y2hbXSBfX2lu aXRkYXRhID0gewo+PiArIMKgIMKgIMKgICJzaXJmLHByaW1hMi1jYiIsCj4+ICsgwqAgwqAgwqAg TlVMTAo+PiArfTsKPj4gKwo+PiArTUFDSElORV9TVEFSVChQUklNQTJfRVZCLCAicHJpbWEyY2Ii KQo+PiArIMKgIMKgIMKgIC5ib290X3BhcmFtcyDCoCDCoD0gU0lSRlNPQ19TRFJBTV9QQSArIDB4 MTAwLAo+PiArIMKgIMKgIMKgIC5pbml0X2Vhcmx5IMKgIMKgID0gc2lyZnNvY19pbml0X2NsaywK Pj4gKyDCoCDCoCDCoCAubWFwX2lvIMKgIMKgIMKgIMKgID0gc2lyZnNvY19tYXBfaW8sCj4+ICsg wqAgwqAgwqAgLmluaXRfaXJxIMKgIMKgIMKgID0gc2lyZnNvY19vZl9pbml0X2lycSwKPj4gKyDC oCDCoCDCoCAudGltZXIgwqAgwqAgwqAgwqAgwqA9ICZzaXJmc29jX3RpbWVyLAo+PiArIMKgIMKg IMKgIC5pbml0X21hY2hpbmUgwqAgPSBzaXJmc29jX21hY2hfaW5pdCwKPj4gKyDCoCDCoCDCoCAu ZHRfY29tcGF0IMKgIMKgIMKgPSBwcmltYTJjYl9kdF9tYXRjaCwKPj4gK01BQ0hJTkVfRU5ECj4K PiBIb3cgYWJvdXQgcmVtb3ZpbmcgdGhlIHJlbWFpbmluZyBib2FyZCBmaWxlIGVudGlyZWx5IGFu ZCBtZXJnaW5nIHRoZSBjb250ZW50cyBpbnRvCj4gY29tbW9uLmM/IFdlIGRvbid0IHdhbnQgdG8g aGF2ZSBib2FyZCBzcGVjaWZpYyBmaWxlcyBhbnkgbW9yZSwgc28gdGhlIG5hbWluZwo+IGFuZCB0 aGUgc3BsaXQgaXMgcmF0aGVyIG9ic29sZXRlLgo+Cj4gSXQgcHJvYmFibHkgbWFrZXMgc2Vuc2Ug dG8gcGljayBhIG5ldyBuYW1lIGZvciB0aGUgY29tYmluZWQgZmlsZSwgdG9vLCBidXQgSQo+IGNh bid0IHRoaW5rIG9mIGEgZ29vZCBvbmUuIE1heWJlIG9uZSBvZiBwbGF0Zm9ybS5jLCBwcmltYTIu YyBvciBjb3JlLmMuCgppIGFtIG5vdCBzdXJlIHRoZSBvcmlnaW5hbCBwdXJwb3NlIG9mIGJvYXJk X2R0LmMuIGFuZCBpIGFtIGd1ZXNzaW5nCndoZXRoZXIgR3JhbnQgY3JlYXRlZCB0aGF0IHNpbmds ZSBib2FyZCBmaWxlIHRvIGNvbnRhaW4gbXVsdGlwbGUKYm9hcmRzLiBGb3IgZXhhbXBsZToKCk1B Q0hJTkVfU1RBUlQoUFJJTUEyX1hYWCwgInByaW1hMnh4eCIpCiAgICAgICAuYm9vdF9wYXJhbXMg ICAgPSBTSVJGU09DX1NEUkFNX1BBICsgMHgxMDAsCiAgICAgICAuaW5pdF9lYXJseSAgICAgPSBz aXJmc29jX2luaXRfY2xrLAogICAgICAgLm1hcF9pbyAgICAgICAgID0gc2lyZnNvY19tYXBfaW8s CiAgICAgICAuaW5pdF9pcnEgICAgICAgPSBzaXJmc29jX29mX2luaXRfaXJxLAogICAgICAgLnRp bWVyICAgICAgICAgID0gJnNpcmZzb2NfdGltZXIsCiAgICAgICAuaW5pdF9tYWNoaW5lICAgPSBz aXJmc29jX21hY2hfaW5pdCwKICAgICAgIC5kdF9jb21wYXQgICAgICA9IHByaW1hMnh4eF9kdF9t YXRjaCwKTUFDSElORV9FTkQKCk1BQ0hJTkVfU1RBUlQoUFJJTUEyX1lZWSwgInByaW1hMnl5eSIp CiAgICAgICAuYm9vdF9wYXJhbXMgICAgPSBTSVJGU09DX1NEUkFNX1BBICsgMHgxMDAsCiAgICAg ICAuaW5pdF9lYXJseSAgICAgPSBzaXJmc29jX2luaXRfY2xrLAogICAgICAgLm1hcF9pbyAgICAg ICAgID0gc2lyZnNvY19tYXBfaW8sCiAgICAgICAuaW5pdF9pcnEgICAgICAgPSBzaXJmc29jX29m X2luaXRfaXJxLAogICAgICAgLnRpbWVyICAgICAgICAgID0gJnNpcmZzb2NfdGltZXIsCiAgICAg ICAuaW5pdF9tYWNoaW5lICAgPSBzaXJmc29jX21hY2hfaW5pdCwKICAgICAgIC5kdF9jb21wYXQg ICAgICA9IHByaW1hMnl5eV9kdF9tYXRjaCwKTUFDSElORV9FTkQKCk1BQ0hJTkVfU1RBUlQoUFJJ TUEyX1paWiwgInByaW1hMnp6eikKICAgICAgIC5ib290X3BhcmFtcyAgICA9IFNJUkZTT0NfU0RS QU1fUEEgKyAweDEwMCwKICAgICAgIC5pbml0X2Vhcmx5ICAgICA9IHNpcmZzb2NfaW5pdF9jbGss CiAgICAgICAubWFwX2lvICAgICAgICAgPSBzaXJmc29jX21hcF9pbywKICAgICAgIC5pbml0X2ly cSAgICAgICA9IHNpcmZzb2Nfb2ZfaW5pdF9pcnEsCiAgICAgICAudGltZXIgICAgICAgICAgPSAm c2lyZnNvY190aW1lciwKICAgICAgIC5pbml0X21hY2hpbmUgICA9IHNpcmZzb2NfbWFjaF9pbml0 LAogICAgICAgLmR0X2NvbXBhdCAgICAgID0gcHJpbWEyenp6X2R0X21hdGNoLApNQUNISU5FX0VO RAoKPgo+PiArI2RlZmluZSBJT1RBQkxFX0VOVFJZKHJlZ2lvbikge1wKPj4gKyDCoCDCoCAudmly dHVhbCDCoCDCoCDCoCDCoD0gU0lSRlNPQ18jI3JlZ2lvbiMjX1ZBX0JBU0UsIFwKPj4gKyDCoCDC oCAucGZuIMKgIMKgIMKgIMKgIMKgIMKgPSBfX3BoeXNfdG9fcGZuKFNJUkZTT0NfIyNyZWdpb24j I19QQV9CQVNFKSxcCj4+ICsgwqAgwqAgLmxlbmd0aCDCoCDCoCDCoCDCoCA9IFNJUkZTT0NfIyNy ZWdpb24jI19TSVpFLCBcCj4+ICsgwqAgwqAgLnR5cGUgwqAgwqAgwqAgwqAgwqAgPSBNVF9ERVZJ Q0UsIFwKPj4gK30KPj4gKwo+PiArc3RhdGljIHN0cnVjdCBtYXBfZGVzYyBzaXJmc29jX2lvZGVz Y1tdIF9faW5pdGRhdGEgPSB7Cj4+ICsgwqAgwqAgSU9UQUJMRV9FTlRSWShVQVJUMSksCj4+ICsg wqAgwqAgSU9UQUJMRV9FTlRSWShDTE9DSyksCj4+ICsgwqAgwqAgSU9UQUJMRV9FTlRSWShSU1RD KSwKPj4gKyNpZmRlZiBDT05GSUdfQ0FDSEVfTDJYMAo+PiArIMKgIMKgIElPVEFCTEVfRU5UUlko TDJDQyksCj4+ICsjZW5kaWYKPj4gK307Cj4KPiBJJ3ZlIHRob3VnaHQgYWJvdXQgdGhpcyBzb21l IG1vcmUsIGFuZCBJIHRoaW5rIHlvdSBjYW4gZ2V0IHJpZCBvZiBtb3N0Cj4gZW50cmllcyBpbiB0 aGUgZ2xvYmFsIHRhYmxlIGFmdGVyIGFsbDoKPgo+ICogc2lyZnNvY19pbml0X2NsaygpIGNhbiBn ZXQgdGhlIHBoeXNpY2FsIGFkZHJlc3MgZnJvbSB0aGUgZGV2aWNlIHRyZWUKPiBhbmQgY2FsbCBp b3RhYmxlX2luaXQgZm9yIGp1c3Qgb25lIGVudHJ5LgoKT2suCj4KPiAqIFJTVEMgZG9lcyBub3Qg c2VlbSB0byBiZSBuZWVkZWQgZWFybHkgYXQgYWxsLCB5b3UgY2FuIHNpbXBseSBpb3JlbWFwIGl0 Lgo+Ck9rLgoKPiAqIEwyQ0MgaXMgb25seSBhY2Nlc3NlZCBmcm9tIGFuIGFyY2hfaW5pdGNhbGws IHdoaWNoIGlzIGxhdGUgZW5vdWdoCj4gwqBmb3IgaW9yZW1hcC4KPgo+ICogVUFSVDEgaXMgb25s eSBuZWVkZWQgZm9yIGVhcmx5IHByaW50aywgc28gSSB3b3VsZCBwdXQgdGhlIGZ1bmN0aW9uCj4g wqB0aGF0IGRvZXMgdGhpcyByZW1haW5pbmcgaW90YWJsZV9pbml0KCkgY2FsbCBpbnRvIGEgc2Vw YXJhdGUgZmlsZQo+IMKgdGhhdCBvbmx5IGdldHMgY29tcGlsZWQgd2hlbiB0aGF0IGlzIGVuYWJs ZWQuCj4KPj4gK3ZvaWQgX19pbml0IHNpcmZzb2NfbWFwX2lvKHZvaWQpCj4+ICt7Cj4+ICsgwqAg wqAgaW90YWJsZV9pbml0KHNpcmZzb2NfaW9kZXNjLCBBUlJBWV9TSVpFKHNpcmZzb2NfaW9kZXNj KSk7Cj4+ICt9Cj4+ICsKPj4gKyNkZWZpbmUgTDJYMF9BRERSX0ZJTFRFUklOR19TVEFSVCDCoCDC oCDCoCAweEMwMAo+PiArI2RlZmluZSBMMlgwX0FERFJfRklMVEVSSU5HX0VORCDCoCDCoCDCoCDC oCAweEMwNAo+PiArCj4+ICtzdGF0aWMgaW50IF9faW5pdCBzaXJmc29jX2luaXQodm9pZCkKPj4g K3sKPj4gKyNpZmRlZiBDT05GSUdfQ0FDSEVfTDJYMAo+PiArIMKgIMKgIGlmICghKHJlYWRsX3Jl bGF4ZWQoU0lSRlNPQ19MMkNDX1ZBX0JBU0UgKyBMMlgwX0NUUkwpICYgMSkpIHsKPj4gKyDCoCDC oCDCoCDCoCDCoCDCoCAvKgo+PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgKiBzZXQgdGhlIHBoeXNp Y2FsIG1lbW9yeSB3aW5kb3dzIEwyIGNhY2hlIHdpbGwgY292ZXIKPj4gKyDCoCDCoCDCoCDCoCDC oCDCoCDCoCovCj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgd3JpdGVsX3JlbGF4ZWQoUEhZU19PRkZT RVQgKyAxMDI0ICogMTAyNCAqIDEwMjQsCj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgU0lSRlNPQ19MMkNDX1ZBX0JBU0UgKyBMMlgwX0FERFJfRklMVEVSSU5HX0VORCk7Cj4+ICsg wqAgwqAgwqAgwqAgwqAgwqAgd3JpdGVsX3JlbGF4ZWQoUEhZU19PRkZTRVQgfCAweDEsCj4+ICsg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgU0lSRlNPQ19MMkNDX1ZBX0JBU0UgKyBMMlgw X0FERFJfRklMVEVSSU5HX1NUQVJUKTsKPj4gKwo+PiArIMKgIMKgIMKgIMKgIMKgIMKgIHdyaXRl bF9yZWxheGVkKDAsCj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgU0lSRlNPQ19M MkNDX1ZBX0JBU0UgKyBMMlgwX1RBR19MQVRFTkNZX0NUUkwpOwo+PiArIMKgIMKgIMKgIMKgIMKg IMKgIHdyaXRlbF9yZWxheGVkKDAsCj4+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg U0lSRlNPQ19MMkNDX1ZBX0JBU0UgKyBMMlgwX0RBVEFfTEFURU5DWV9DVFJMKTsKPj4gKyDCoCDC oCB9Cj4+ICsgwqAgwqAgbDJ4MF9pbml0KCh2b2lkIF9faW9tZW0gKilTSVJGU09DX0wyQ0NfVkFf QkFTRSwgMHgwMDA0MDAwMCwKPj4gKyDCoCDCoCDCoCDCoCDCoCDCoCAweDAwMDAwMDAwKTsKPj4g KyNlbmRpZgo+PiArCj4+ICsgwqAgwqAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICthcmNoX2luaXRjYWxs KHNpcmZzb2NfaW5pdCk7Cj4KPiBJIHdvdWxkIGFsc28gc3VnZ2VzdCBtb3ZpbmcgdGhlIGwyeDAg Y29kZSBpbnRvIGEgbmV3IGwyeDAuYyBmaWxlIHRoYXQKPiBpcyBjb25kaXRpb25hbGx5IGNvbXBp bGVkLiBJbiB0aGUgaGVhZGVyIGZpbGUsIHlvdSB0aGVuIGRvCj4KPiAjaWZkZWYgQ09ORklHX0NB Q0hFX0wyWDAKPiBleHRlcm4gdm9pZCBzaXJmc29jX2wyeDBfaW5pdCh2b2lkKTsKPiAjZWxzZQo+ IHN0YXRpYyBpbmxpbmUgdm9pZCBzaXJmc29jX2wyeDBfaW5pdCh2b2lkKSB7fQo+ICNlbmRpZgoK eWVzLgoKYWZ0ZXIgY3JlYXRpbmcgYSBuZXcgZmlsZSBuYW1lZCBtYWNoLXByaW1hMi9sMngwLmMs ICBpdCBzZWVtcyB3ZSBvbmx5Cm5lZWQgdG8gY2hhbmdlIE1ha2VmaWxlIHRvOgpvYmotJChDT05G SUdfQ0FDSEVfTDJYMCkgOj0gbDJ4MC5vCnRoZSBoZWFkIGZpbGUgaXMgbm90IG5lZWRlZC4KCkN1 cnJlbnRseSwgcm9iJ3MgT0YtYmFzZWQgTDIgY2FjaGUgaXMgbm90IG1lcmdlZCB5ZXQuIHRoZW4g aSBvbmx5CndyaXRlIHRoZSBmb2xsb3dpbmc6CgpzdGF0aWMgaW50IF9faW5pdCBzaXJmc29jX29m X2wyeF9pbml0KHZvaWQpCnsKICAgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wOwogICAgICAg IHZvaWQgX19pb21lbSAqc2lyZnNvY19sMnhfYmFzZTsKCiAgICAgICAgbnAgPSBvZl9maW5kX21h dGNoaW5nX25vZGUoTlVMTCwgbDJ4X2lkcyk7CiAgICAgICAgaWYgKCFucCkKICAgICAgICAgICAg ICAgIHBhbmljKCJ1bmFibGUgdG8gZmluZCBjb21wYXRpYmxlIGludGMgbm9kZSBpbiBkdGJcbiIp OwoKICAgICAgICBzaXJmc29jX2wyeF9iYXNlID0gb2ZfaW9tYXAobnAsIDApOwogICAgICAgIGlm ICghc2lyZnNvY19sMnhfYmFzZSkKICAgICAgICAgICAgICAgIHBhbmljKCJ1bmFibGUgdG8gbWFw IGwyeCBjcHUgcmVnaXN0ZXJzXG4iKTsKCiAgICAgICAgb2Zfbm9kZV9wdXQobnApOwoKICAgICAg ICBpZiAoIShyZWFkbF9yZWxheGVkKHNpcmZzb2NfbDJ4X2Jhc2UgKyBMMlgwX0NUUkwpICYgMSkp IHsKICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgKiBzZXQgdGhlIHBoeXNpY2Fs IG1lbW9yeSB3aW5kb3dzIEwyIGNhY2hlIHdpbGwgY292ZXIKICAgICAgICAgICAgICAgICAqLwog ICAgICAgICAgICAgICAgd3JpdGVsX3JlbGF4ZWQoUExBVF9QSFlTX09GRlNFVCArIDEwMjQgKiAx MDI0ICogMTAyNCwKICAgICAgICAgICAgICAgICAgICAgICAgc2lyZnNvY19sMnhfYmFzZSArIEwy WDBfQUREUl9GSUxURVJJTkdfRU5EKTsKICAgICAgICAgICAgICAgIHdyaXRlbF9yZWxheGVkKFBM QVRfUEhZU19PRkZTRVQgfCAweDEsCiAgICAgICAgICAgICAgICAgICAgICAgIHNpcmZzb2NfbDJ4 X2Jhc2UgKyBMMlgwX0FERFJfRklMVEVSSU5HX1NUQVJUKTsKCiAgICAgICAgICAgICAgICB3cml0 ZWxfcmVsYXhlZCgwLAogICAgICAgICAgICAgICAgICAgICAgICBzaXJmc29jX2wyeF9iYXNlICsg TDJYMF9UQUdfTEFURU5DWV9DVFJMKTsKICAgICAgICAgICAgICAgIHdyaXRlbF9yZWxheGVkKDAs CiAgICAgICAgICAgICAgICAgICAgICAgIHNpcmZzb2NfbDJ4X2Jhc2UgKyBMMlgwX0RBVEFfTEFU RU5DWV9DVFJMKTsKICAgICAgICB9CiAgICAgICAgbDJ4MF9pbml0KCh2b2lkIF9faW9tZW0gKilz aXJmc29jX2wyeF9iYXNlLCAweDAwMDQwMDAwLAogICAgICAgICAgICAgICAgMHgwMDAwMDAwMCk7 CgogICAgICAgIHJldHVybiAwOwp9CmVhcmx5X2luaXRjYWxsKHNpcmZzb2Nfb2ZfbDJ4X2luaXQp OwoKQWZ0ZXIgUm9iJ3MgcGF0Y2ggaXMgbWVyZ2VkLCBpIHRoaW5rIHNpcmZzb2Nfb2ZfbDJ4X2lu aXQgY2FuIGJlIG11Y2ggc2ltcGxlci4KCj4KPj4gKyNpZm5kZWYgX19BU01fQVJDSF9JUlFTX0gK Pj4gKyNkZWZpbmUgX19BU01fQVJDSF9JUlFTX0gKPj4gKwo+PiArI2RlZmluZSBTSVJGU09DX0lO VEVOQUxfSVJRX1NUQVJUIMKgMAo+PiArI2RlZmluZSBTSVJGU09DX0lOVEVOQUxfSVJRX0VORCDC oCDCoDU5Cj4KPiBUeXBvLCBJIGFzc3VtZTogSU5URVJOQUwsIG5vdCBJTlRFTkFMCgpZZXMuCgo+ Cj4KPj4gKwo+PiArc3RhdGljIHN0cnVjdCBvZl9kZXZpY2VfaWQgaW50Y19pZHNbXSDCoD0gewo+ PiArIMKgIMKgIHsgLmNvbXBhdGlibGUgPSAic2lyZixpbnRjIiB9LAo+PiArIMKgIMKgIHsgLmNv bXBhdGlibGUgPSAic2lyZixwcmltYTItaW50YyIgfSwKPj4gK307Cj4KPiBZb3Ugc2hvdWxkIG9u bHkgbGlzdCBvbmUgb2YgdGhlc2UgaW4gdGhlIGRyaXZlcjogVGhlIGlkZWEgaXMgdGhhdCBhcwo+ IGxvbmcgYXMgYWxsIHZhcmlhbnRzIG9mIHRoZSBoYXJkd2FyZSBhcmUgaWRlbnRpY2FsLCB5b3Ug Y2FuIGp1c3QgbGlzdAo+IHRoZSBtb3N0IGdlbmVyYWwgbmFtZSAoc2lyZixpbnRjKSwgYW5kIGlm IHlvdSBuZWVkIHRvIHRlbGwgdGhlIGRpZmZlcmVuY2UKPiB5b3UgbGlzdCB0aGUgbW9yZSBzcGVj aWZpYyBuYW1lcyBhbmQgYWRkIGEgLmRhdGE9Li4uIG1lbWJlciB0aGF0IHlvdQo+IHVzZSB0byBk aWZmZXJlbnRpYXRlIGJldHdlZW4gdGhlbS4gTm90ZSB0aGF0IGl0J3MgdXN1YWxseSBlYXNpZXIg dG8KPiBjaGFuZ2UgdGhlIGNvZGUgdGhhbiB0byBjaGFuZ2UgdGhlIGRldmljZSB0cmVlLCBzbyB3 ZSB3YW50IHRvIGhhdmUKPiB0aGUgZnVsbCBsaXN0IGluIHRoZSBkZXZpY2UgdHJlZSwgYnV0IHRo ZSBjb2RlIGp1c3QgbmVlZHMgdG8gcGljawo+IG9uZSB0aGF0IGZpdHMgdGhlIHB1cnBvc2UuCgpP ay4KCj4KPiBJdCdzIHRoZSBzYW1lIGZvciB0aGUgb3RoZXIgZHJpdmVycy4KPgo+PiArc3RhdGlj IHZvaWQgX19pbml0IHNpcmZzb2Nfb2ZfdGltZXJfbWFwKHZvaWQpOwo+Cj4gWW91IGNhbiByZW1v dmUgdGhpcyBmb3J3YXJkIGRlY2xhcmF0aW9uIGlmIHlvdSBtb3ZlIHRoZSBzY2hlZF9jbG9jaygp Cj4gZnVuY3Rpb24gZG93bi4KCk9rCgo+Cj4gwqAgwqAgwqAgwqBBcm5kCj4gX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBkZXZpY2V0cmVlLWRpc2N1c3Mg bWFpbGluZyBsaXN0Cj4gZGV2aWNldHJlZS1kaXNjdXNzQGxpc3RzLm96bGFicy5vcmcKPiBodHRw czovL2xpc3RzLm96bGFicy5vcmcvbGlzdGluZm8vZGV2aWNldHJlZS1kaXNjdXNzCj4KCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJu ZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRw Oi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK