From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jean Delvare Subject: Re: [patch 2.6.25-git] i2c_adapters: return -Errno not -1 Date: Sun, 11 May 2008 12:26:47 +0200 Message-ID: <20080511122647.1e04c9c0@hyperion.delvare> References: <200805012046.07885.david-b@pacbell.net> <20080510225548.36297637@hyperion.delvare> <200805110117.23023.david-b@pacbell.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <200805110117.23023.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: i2c-bounces-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org Errors-To: i2c-bounces-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org To: David Brownell Cc: i2c-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org List-Id: linux-i2c@vger.kernel.org SGkgRGF2aWQsCgpCZWZvcmUgSSBmb3JnZXQ6IEkganVzdCBub3RpY2VkIHRoYXQgeW91ciBwYXRj aCBhZGRzIHRoZSBmb2xsb3dpbmcKd2FybmluZzoKCiAgQ0MgW01dICBkcml2ZXJzL2kyYy9idXNz ZXMvaTJjLWFtZDgxMTEubwpkcml2ZXJzL2kyYy9idXNzZXMvaTJjLWFtZDgxMTEuYzogSW4gZnVu Y3Rpb24g4oCYYW1kODExMV9hY2Nlc3PigJk6CmRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYW1kODEx MS5jOjE5ODogd2FybmluZzogdW51c2VkIHZhcmlhYmxlIOKAmHN0YXR1c+KAmQoKUGxlYXNlIGZp eC4KCk9uIFN1biwgMTEgTWF5IDIwMDggMDE6MTc6MjIgLTA3MDAsIERhdmlkIEJyb3duZWxsIHdy b3RlOgo+IE9uIFNhdHVyZGF5IDEwIE1heSAyMDA4LCBKZWFuIERlbHZhcmUgd3JvdGU6Cj4gPiA+ ICBkcml2ZXJzL2kyYy8uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgo+ID4gPiAgMTUgZmls ZXMgY2hhbmdlZCwgMTc2IGluc2VydGlvbnMoKyksIDE0MiBkZWxldGlvbnMoLSkKPiAKPiBTbyBJ J2xsIHByb2JhYmx5IHJlc3BvbmQgdG8geW91ciBjb21tZW50cyBpbiBzbWFsbGVyIGNodW5rcy4g IDspCj4gCj4gQXJndWFibHkgdGhpcyBzaG91bGQgYmVjb21lIGEgYnVuY2ggb2Ygc21hbGxlciBw YXRjaGVzLCBidXQgdGhhdCAKPiB3b3VsZCBvZiBjb3Vyc2UgbWFrZSBtb3JlIGNvbmZ1c2lvbiBk dXJpbmcgaW5pdGlhbCByZXZpZXcgZm9yCj4gdGhpcyB0eXBlIGNoYW5nZSAuLi4gaGFyZGVyIHRv IG5vdGljZSB0aGUgcGF0dGVybnMuCgpJIGFtIHRvdGFsbHkgZmluZSB3aXRoIGFsbCB0aGUgZHJp dmVycyBiZWluZyBmaXhlZCBpbiB0aGUgc2FtZSBwYXRjaCwgbm8KcHJvYmxlbSB3aXRoIHRoaXMu Cgo+ID4gPiAtLS0gZzI2Lm9yaWcvZHJpdmVycy9pMmMvYWxnb3MvaTJjLWFsZ28tYml0LmMJMjAw OC0wNS0wMSAxNjowMTozOC4wMDAwMDAwMDAgLTA3MDAKPiA+ID4gKysrIGcyNi9kcml2ZXJzL2ky Yy9hbGdvcy9pMmMtYWxnby1iaXQuYwkyMDA4LTA1LTAxIDE2OjAyOjU4LjAwMDAwMDAwMCAtMDcw MAo+ID4gPiAJCS4uLgo+ID4gPiBAQCAtNDY1LDkgKzQ2NSwxMiBAQCBzdGF0aWMgaW50IGJpdF9k b0FkZHJlc3Moc3RydWN0IGkyY19hZGFwCj4gPiA+ICAJc3RydWN0IGkyY19hbGdvX2JpdF9kYXRh ICphZGFwID0gaTJjX2FkYXAtPmFsZ29fZGF0YTsKPiA+ID4gIAo+ID4gPiAgCXVuc2lnbmVkIGNo YXIgYWRkcjsKPiA+ID4gLQlpbnQgcmV0LCByZXRyaWVzOwo+ID4gPiArCWludCByZXQ7Cj4gPiA+ ICsJdW5zaWduZWQgcmV0cmllczsKPiA+ID4gIAo+ID4gPiAtCXJldHJpZXMgPSBuYWtfb2sgPyAw IDogaTJjX2FkYXAtPnJldHJpZXM7Cj4gPiA+ICsJcmV0cmllcyA9IChuYWtfb2sgfHwgaTJjX2Fk YXAtPnJldHJpZXMgPCAwKQo+ID4gPiArCQkJPyAwCj4gPiA+ICsJCQk6IGkyY19hZGFwLT5yZXRy aWVzOwo+ID4gPiAgCj4gPiA+ICAJaWYgKGZsYWdzICYgSTJDX01fVEVOKSB7Cj4gPiA+ICAJCS8q IGEgdGVuIGJpdCBhZGRyZXNzICovCj4gPiAKPiA+IEknZCByYXRoZXIgbm90IGJvdGhlciB3aXRo IHRoZSBhZGFwLT5yZXRyaWVzIHN0dWZmIHdoaWNoIHdlIGFncmVlZAo+ID4gc2hvdWxkIGJlIHJl bW92ZWQgYW55d2F5Lgo+IAo+IFVudGlsIGl0J3MgZ29uZSwgSSBqdXN0IHdhbnRlZCB0byBiZSBz YW5lIHdpdGggaXQuCgpUbyBtYWtlIGl0IHNhbmUsIGp1c3QgY2hhbmdlICJyZXQgPSAtMSIgdG8g InJldCA9IDAiIGluIHRyeV9hZGRyZXNzKCkuCkl0IGRvZXMgdGhlICJyaWdodCB0aGluZyIgaWYg dGhlIGkyYyBhZGFwdGVyIHByb3ZpZGVkIGEgbmVnYXRpdmUgbnVtYmVyCm9mIHJldHJpZXMgKHdo aWNoIG5vYm9keSBkb2VzIGFueXdheS4pIFRoYXQncyB0aGUgbWluaW1hbCBmaXggYW5kIHRoZQpv bmx5IG9uZSBJIGFtIHdpbGxpbmcgdG8gdGFrZS4KCj4gT3Igc2hvdWxkIHdlIGp1c3QgcmlwIGl0 IG91dCBvZiB0aGlzIGRyaXZlcj8gTmVnYXRpdmUgcmV0cmllcyBpcyBhCj4gdmVyeSBub25zZW5z aWNhbCBub3Rpb24sIGFuZCB0aGF0J3MgdGhlIG9ubHkgd2F5IEkgcmVjYWxsIGFsZ28tYml0Cj4g c2VlbWVkIHRvIGhhdmUgb2J2aW91cyAoYWxiZWl0IHBvdGVudGlhbCkgZmF1bHQgY29kZSBnb29m aW5lc3MuCgpOb3QgaW4gdGhlIG1pZGRsZSBvZiB5b3VyIC0xIC0+IC1lcnJubyBwYXRjaGVzLCBu by4gQnV0IG9uY2Ugd2UncmUgZG9uZQp3aXRoIHRoZW0gYW5kIHRoZSBkdXN0IGhhcyBzZXR0bGVk IGRvd24sIHllcywgY2hpcCBkcml2ZXJzIHdpbGwKaG9wZWZ1bGx5IGhhdmUgYSByZWxpYWJsZSB3 YXkgdG8ga25vdyB3aGVuIHRoZW4gd2FudCB0byByZXRyeSBhIGZhaWxlZApyZWFkLCBhbmQgd2Ug Y2FuIGdldCByaWQgb2YgdGhpcyBhdXRvbWF0aWMgcmV0cnkgbWVjaGFuaXNtIGF0IHRoZQphZGFw dGVyIGxldmVsLgoKPiA+ID4gLS0tIGcyNi5vcmlnL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYWxp MTUzNS5jCTIwMDgtMDUtMDEgMTY6MDE6MzkuMDAwMDAwMDAwIC0wNzAwCj4gPiA+ICsrKyBnMjYv ZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1hbGkxNTM1LmMJMjAwOC0wNS0wMSAxNjowMjo1OC4wMDAw MDAwMDAgLTA3MDAKPiA+ID4gCQkJLi4uCj4gPiA+IEBAIC0yOTUsNyArMjk1LDcgQEAgc3RhdGlj IGludCBhbGkxNTM1X3RyYW5zYWN0aW9uKHN0cnVjdCBpMgo+ID4gPiAgCSAqIGRvIGEgcHJpbnRr LiAgVGhpcyBtZWFucyB0aGF0IGJ1cyBjb2xsaXNpb25zIGdvIHVucmVwb3J0ZWQuCj4gPiA+ICAJ ICovCj4gPiA+ICAJaWYgKHRlbXAgJiBBTEkxNTM1X1NUU19CVVNFUlIpIHsKPiA+ID4gLQkJcmVz dWx0ID0gLTE7Cj4gPiA+ICsJCXJlc3VsdCA9IC1FSU87Cj4gPiAKPiA+IEdpdmVuIHRoZSBjb21t ZW50IGFib3ZlIEknZCBtYWtlIHRoaXMgLUVOT0RFVi4gOTklIG9mIHRoZSB0aW1lLCBubyBhY2sK PiA+IG1lYW5zIG5vIGRldmljZS4KPiAKPiBFaXRoZXIgRU5PREVWIG9yIEVOWElPIGZvciAiaXQg ZGlkbid0IEFDSyB0aGUgYWRkcmVzcyIuICBBbnkKPiBvdGhlciBjb2RlIHdpbGwgbWFrZSB0aGUg ZHJpdmVyIGNvcmUgZW1pdCBkaWFnbm9zdGljcyB3aGVuIHRoZQo+IHByb2JlKCkgZmFpbHMgLi4u IGRpYWdub3N0aWNzIHdlIHdhbnQgdG8gYXZvaWQsIHdoZW4gcHJvYmUoKQo+IGNvZGUgZG9lcyB0 aGUgUmlnaHQgVGhpbmcgYW5kIGp1c3QgcmV0dXJucyBzdWNoIGZhdWx0IGNvZGVzLgo+IAo+IFRo YXQncyBwcm9iYWJseSBhbiBpc3N1ZSB3aXRoIG1vc3Qgb2YgdGhlc2UgdXBkYXRlcy4KCk15IHBv aW50IGV4YWN0bHkuIEkgYW0gZmluZSB3aXRoIGJvdGggLUVOWElPIGFuZCAtRU5PREVWLCBwaWNr IHRoZSBvbmUKeW91IGxpa2UsIHRoZW4gbWFrZSBzdXJlIGFsbCBkcml2ZXJzIGFyZSB1c2luZyBp dCBjb25zaXN0ZW50bHkuCgo+ID4gPiAtLS0gZzI2Lm9yaWcvZHJpdmVycy9pMmMvYnVzc2VzL2ky Yy1hbWQ3NTYtczQ4ODIuYwkyMDA4LTA1LTAxIDE2OjAxOjM4LjAwMDAwMDAwMCAtMDcwMAo+ID4g PiArKysgZzI2L2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYW1kNzU2LXM0ODgyLmMJMjAwOC0wNS0w MSAxNjowMjo1OC4wMDAwMDAwMDAgLTA3MDAKPiA+ID4gQEAgLTU4LDcgKzU4LDcgQEAgc3RhdGlj IHMzMiBhbWQ3NTZfYWNjZXNzX3ZpcnQwKHN0cnVjdCBpMgo+ID4gPiAgCS8qIFdlIGV4Y2x1ZGUg dGhlIG11bHRpcGxleGVkIGFkZHJlc3NlcyAqLwo+ID4gPiAgCWlmIChhZGRyID09IDB4NGMgfHwg KGFkZHIgJiAweGZjKSA9PSAweDUwIHx8IChhZGRyICYgMHhmYykgPT0gMHgzMAo+ID4gPiAgCSB8 fCBhZGRyID09IDB4MTgpCj4gPiA+IC0JCXJldHVybiAtMTsKPiA+ID4gKwkJcmV0dXJuIC1FSU5W QUw7Cj4gPiA+ICAKPiA+ID4gIAltdXRleF9sb2NrKCZhbWQ3NTZfbG9jayk7Cj4gPiA+ICAKPiA+ ID4gQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIGlubGluZSBzMzIgYW1kNzU2X2FjY2Vzc19jaGFu bmVsKAo+ID4gPiAgCj4gPiA+ICAJLyogV2UgZXhjbHVkZSB0aGUgbm9uLW11bHRpcGxleGVkIGFk ZHJlc3NlcyAqLwo+ID4gPiAgCWlmIChhZGRyICE9IDB4NGMgJiYgKGFkZHIgJiAweGZjKSAhPSAw eDUwICYmIChhZGRyICYgMHhmYykgIT0gMHgzMCkKPiA+ID4gLQkJcmV0dXJuIC0xOwo+ID4gPiAr CQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4gIAo+ID4gPiAgCW11dGV4X2xvY2soJmFtZDc1Nl9sb2Nr KTsKPiA+IAo+ID4gRm9yIHRoZXNlIHR3byBJJ2QgZ28gZm9yIC1FTk9ERVYgYXMgd2VsbC4gSXQn cyBhIGxpdHRsZSB1bmZhaXIgdG8KPiA+IHJldHVybiAtRUlOVkFMLCBnaXZlbiB0aGF0IHdlIGFy ZSBoaWRpbmcgdGhlIGRldmljZXMgZnJvbSB0aGUgY2FsbGVyIG9uCj4gPiBwdXJwb3NlIGFuZCB0 aGV5IGNvdWxkbid0IGd1ZXNzLgo+IAo+IFRoYXQgbWlnaHQgYmUgYSBjYXNlIHdoZXJlIC1FTlhJ TyBjb3VsZCBwcm92aWRlIGEgdXNlZnVsIGRpc3RpbmN0aW9uLgo+ICJObyBzdWNoIGRldmljZSAq T1IgQUREUkVTUyoiIHZzICJObyBzdWNoIGRldmljZSIuICA7KQoKV2hhdCBtYXR0ZXJzIGhlcmUg aXMgdG8gcmV0dXJuIHRoZSBzYW1lIGNvZGUgdGhhdCBvdGhlciBidXMgZHJpdmVycwpyZXR1cm4g d2hlbiB0aGV5IGRvbid0IGdldCBhIGFjayBvbiBhIGdpdmVuIHRyYW5zYWN0aW9uLiBUaGUgY2Fs bGVyCnNob3VsZG4ndCBiZSBhYmxlIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBib3RoIGNhc2Vz LCBtdWx0aXBsZXhpbmcKc2hvdWxkIGJlIGNvbXBsZXRlbHkgdHJhbnNwYXJlbnQgdG8gdGhlIGNo aXAgZHJpdmVycy4KCj4gPiA+IC0tLSBnMjYub3JpZy9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWFt ZDc1Ni5jCTIwMDgtMDUtMDEgMTY6MDE6MzkuMDAwMDAwMDAwIC0wNzAwCj4gPiA+ICsrKyBnMjYv ZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1hbWQ3NTYuYwkyMDA4LTA1LTAxIDE2OjAyOjU4LjAwMDAw MDAwMCAtMDcwMAo+ID4gPiBAQCAtMTUxLDE3ICsxNTEsMTcgQEAgc3RhdGljIGludCBhbWQ3NTZf dHJhbnNhY3Rpb24oc3RydWN0IGkyYwo+ID4gPiAgCX0KPiA+ID4gIAo+ID4gPiAgCWlmICh0ZW1w ICYgR1NfUFJFUlJfU1RTKSB7Cj4gPiA+IC0JCXJlc3VsdCA9IC0xOwo+ID4gPiArCQlyZXN1bHQg PSAtRUlPOwo+ID4gPiAgCQlkZXZfZGJnKCZhZGFwLT5kZXYsICJTTUJ1cyBQcm90b2NvbCBlcnJv ciAobm8gcmVzcG9uc2UpIVxuIik7Cj4gPiAKPiA+IFRoaXMgb25lIHdvdWxkIGJlIC1FTk9ERVYu Cj4gCj4gSG93IGFyZSB5b3Uga25vd2luZyBhbGwgdGhlc2UgdGhpbmdzPyAgSSB3b3VsZG4ndCBp bnRlcnByZXQKPiAicHJvdG9jb2wgZXJyb3IiIGFzICJubyBkZXZpY2UiLiAgQW5kIHdoaWxlIEkg ZG8gaGFwcGVuIHRvCj4gaGF2ZSBhbWQ3NTYgZG9jcyBhcm91bmQgKGJvYXJkIGJyb2tlbiB0aG91 Z2gsIHNpZ2gpIEkgZGlkbid0Cj4gZGlnIHRoYXQgaW5mbyBvdXQgLi4uIEknZCBiZSBsZXNzIGNv bmNlcm5lZCB3aXRoIHJlcG9ydGluZwo+IG5lZWRsZXNzbHkgZ2VuZXJpYyAoRUlPKSBlcnJvcnMg dGhhbiB3aXRoIHdyb25nbHkgcmVwb3J0aW5nCj4gb25lcyB0aGF0IGFyZSB0b28gc3BlY2lmaWMg KEVOT0RFVikuCj4gCj4gVGhhdCdzIGtpbmQgb2YgYSBnZW5lcmFsIGlzc3VlIHdpdGggdGhpcyBw YXRjaC4gIEkgdGhpbmsgbXkKPiBmaXJzdCBpZGVhIHdhcyB0byBzdG9wIHJlcG9ydGluZyAiLUVQ RVJNIiBmb3IgZXZlcnl0aGluZyBhbmQKPiBwcm92aWRlIHBsYXVzaWJsZSBjb2RlcywgYnV0IGFs bG93IHVwZGF0ZXMgbGF0ZXIuICBJIGNhbid0Cj4gaW1hZ2luZSBldmVyeSBmYXVsdCByZXBvcnQs IHRoZSBmaXJzdCB0aW1lIGFyb3VuZCwgd2lsbCBiZQo+IHRoZSBiZXN0IG9uZSB3ZSBjb3VsZCBi ZSByZXBvcnRpbmcuCgpJIGFncmVlIHRoYXQgaXQncyBub3QgZWFzeSBmb3IgeW91IChvciBhbnlv bmUgZWxzZSwgaW5jbHVkaW5nIG1lKSB0bwpmaWd1cmUgb3V0IHRoZSByaWdodCBlcnJvciBjb2Rl IGFsbCB0aGUgdGltZSwgYW5kIEkgYW0gZmluZSB3aXRoIHVzaW5nCi1FSU8gYXMgdGhlIGRlZmF1 bHQgZXJyb3IgdmFsdWUgd2hlbiB0aGVyZSdzIG5vIG90aGVyIG9idmlvdXMgdmFsdWUgdG8KcmV0 dXJuLgoKQXMgZm9yICJob3cgZG8gSSBrbm93IjogY2hlY2sgd2hldGhlciB0aGUgY29kZSBpcyB1 c2luZyBkZXZfZXJyKCkgb3IKZGV2X2RiZygpLiBFYWNoIHRpbWUgYSBkcml2ZXIgdXNlcyBkZXZf ZGJnKCksIGNoYW5jZXMgYXJlIGdvb2QgdGhhdCB0aGUKZXJyb3IgaW4gcXVlc3Rpb24gaXNuJ3Qg cmVhbGx5IGFuIGVycm9yLCBhbmQgd2UndmUgdHVybmVkIHRoZSBlcnJvcgptZXNzYWdlIGludG8g YSBkZWJ1ZyBtZXNzYWdlIHRvIGF2b2lkIGxvZyBmaWxscyBhbmQgdXNlciBjb21wbGFpbnRzLiBT bwpiYXNpY2FsbHksIHdoZW4gSSBzZWUgYSBkZXZfZGJnKCkgaW4gdGhlc2UgU01CdXMgImFjY2Vz cyIgZnVuY3Rpb25zLCBJCmNhbiBiZSBhbG1vc3Qgc3VyZSB0aGF0IHRoZSBlcnJvciBpbiBxdWVz dGlvbiBpcyB3aGF0IHRoYXQgY29udHJvbGxlcgpyZXR1cm5zIHdoZW4gYSB0cmFuc2FjdGlvbiBp c24ndCBhY2tlZC4gQnV0IHRoYXQncyBvbmx5IGEgaGV1cmlzdGljIC0gSQpjb3VsZCBiZSB3cm9u ZywgdG9vLgoKQSB2YXJpYW50IG9mIHRoaXMgaXMgd2hlbiBhIGRyaXZlciB1c2VzIGRldl9lcnIo KSBidXQgaGlkZXMgdGhlIGVycm9yCm1lc3NhZ2Ugb24gU01CdXMgcXVpY2sgY29tbWFuZCBhbmQg c29tZXRpbWVzIG9uIFNNQnVzIHJlY2VpdmUgYnl0ZSBhcwp3ZWxsLiBUaGVzZSBhcmUgdGhlIHRy YW5zYWN0aW9ucyB1c2VkIGJ5IGkyY2RldGVjdCBhbmQgc2Vuc29ycy1kZXRlY3QKdG8gcHJvYmUg Zm9yIEkyQyBkZXZpY2VzLiBXaGVuIHlvdSBzZWUgdGhpcyB5b3UgY2FuIGJlIGNlcnRhaW4gdGhh dAppdCdzIHRoZSBlcnJvciB0aGF0IGlzIHJldHVybmVkIG9uIG5vLWFjay4KCj4gPiA+IC0tLSBn MjYub3JpZy9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWk4MDEuYwkyMDA4LTA1LTAxIDE2OjAxOjM4 LjAwMDAwMDAwMCAtMDcwMAo+ID4gPiArKysgZzI2L2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaTgw MS5jCTIwMDgtMDUtMDEgMTY6MDI6NTguMDAwMDAwMDAwIC0wNzAwCj4gCj4gVGhvdWdoIGRpZG4n dCBJIHNlZSBhIHBhdGNoIHJlbW92aW5nIHRoaXMgZHJpdmVyPwoKSGVsbCBuby4gWW91IHNhdyBp MmMtaTgxMCBnbyBhd2F5LCBub3QgaTJjLWk4MDEuIGkyYy1pODAxIGRyaXZlcyB0aGUKSW50ZWwg bWFpbmJvYXJkcycgU01CdXMsIGkyYy1pODEwIHdhcyBhIGJpdC1iYW5naW5nIGRyaXZlciBmb3Ig dGhlCmludGVncmF0ZWQgSW50ZWwgdmlkZW8gY2hpcHMnIEREQyBhbmQgSTJDIGJ1c2VzLiBpMmMt aTgwMSBpcyB0aGVyZSB0bwpzdGF5LgoKPiA+ID4gIAlpZiAodGVtcCAmIFNNQkhTVFNUU19ERVZf RVJSKSB7Cj4gPiA+IC0JCXJlc3VsdCA9IC0xOwo+ID4gPiArCQlyZXN1bHQgPSAtRUlPOwo+ID4g PiAgCQlkZXZfZGJnKCZJODAxX2Rldi0+ZGV2LCAiRXJyb3I6IG5vIHJlc3BvbnNlIVxuIik7Cj4g PiAKPiA+IC1FTk9ERVYKPiAKPiBJcyB0aGF0ICpyZWFsbHkqIGEgIm5vIHJlc3BvbnNlIHRvIGFk ZHJlc3MiIGVycm9yPwoKSXQgdXNlcyBkZXZfZGJnKCkgOykKCj4gQnV0IHRoZXJlJ3MgYW5vdGhl ciBpc3N1ZSB3aXRoIHRoYXQgdHlwZSBvZiBjb2RlLiAgVGhpcwo+IHBhcnRpY3VsYXIgb25lIGxv b2tzIG1heWJlIHNhbmUgLi4uIGluIHRoZSBzZW5zZSB0aGF0IGl0Cj4gc2VlbXMgdG8gcmVwbGFj ZSBnZW5lcmljIGZhdWx0IGNvZGVzIHdpdGggbW9yZSBzcGVjaWZpYwo+IG9uZXMgKG1heWJlKSwg YnV0IEkgZG9uJ3QgdGhpbmsgYWxsIHRoZSBJMkMgYWRhcHRlcnMgd2VyZQo+IGRvaW5nIHRoYXQu ICBTb21lIG9mIHRoZW0gbG9va2VkIGxpa2UgdGhleSB3ZXJlIHRlc3RpbmcKPiB0aGUgc3BlY2lm aWMgZmF1bHRzIGZpcnN0LCB0aGVuIGNsb2JiZXJpbmcgdGhlbSB3aXRoIHZhZ3VlCj4gZ2VuZXJp YyBpZGljYXRvcnMuLi4KCllvdSdyZSByaWdodCwgSSBoYXZlIG5vdGljZWQgdGhpcyB0b28uLi4g bW9zdCBvZiB0aGVzZSBkcml2ZXJzIGNoZWNrCmZvciBtYW55IGVycm9yIGNvbmRpdGlvbnMgYW5k IG92ZXJ3cml0ZSB0aGUgZXJyb3IgdmFsdWUgZWFjaCB0aW1lLCBzbwp0aGUgbGFzdCBlcnJvciBj aGVja2VkIHdpbnMuIFdlIG1pZ2h0IGhhdmUgdG8gcmVvcmRlciB0aGUgY2hlY2tzIHNvCnRoYXQg dGhlIGJlc3QgZXJyb3IgY29kZSBpcyBrZXB0LCBidXQgaG9uZXN0bHkgSSdtIG5vdCBzdXJlIEkg d291bGQgYmUKYWJsZSB0byB0ZWxsIHJpZ2h0IGF3YXkgd2hhdCB0aGUgYmVzdCBvcmRlciB3b3Vs ZCBiZSBlYWNoIHRpbWUuIFNvIEkgYW0KZmluZSBsZWF2aW5nIHRoaW5ncyBhcyB0aGV5IGFyZSBm b3Igbm93IGFuZCBmaXhpbmcgdGhlbSBsYXRlciBpZiB0aGV5CnJlYWxseSBuZWVkIHRvIGJlLgoK PiA+ID4gKwlpZiAoc3RhdHVzKQo+ID4gPiArCQlyZXR1cm4gc3RhdHVzOwo+ID4gPiAgCj4gPiA+ ICAJaWYgKHJlYWRfd3JpdGUgPT0gSTJDX1NNQlVTX1JFQUQpIHsKPiA+ID4gIAkJbGVuID0gaW5i X3AoU01CSFNUREFUMCk7Cj4gPiA+ICAJCWlmIChsZW4gPCAxIHx8IGxlbiA+IEkyQ19TTUJVU19C TE9DS19NQVgpCj4gPiA+IC0JCQlyZXR1cm4gLTE7Cj4gPiA+ICsJCQlyZXR1cm4gLUVJTFNFUTsK PiA+IAo+ID4gSHVoLCBkZWZpbml0ZWx5IG5vdC4gVGhpcyBlcnJvciBjb2RlIGhhcyB0byBzbyB3 aXRoIG11bHRpLWJ5dGUKPiA+IGNoYXJhY3RlciBlbmNvZGluZywgdGhhdCdzIGluYXBwcm9wcmlh dGUgaGVyZS4KPiAKPiBObzsgbW9zdCBvZiB0aGUgZXJybm8gdmFsdWVzIGdldCByZWN5Y2xlZC4g ICJJbGxlZ2FsIEJ5dGUgU2VxdWVuY2UiCj4gaXMgZXhhY3RseSB3aGF0IHdlIGdvdCB0aGVyZSwg aW4gZmFjdCEgIEkga25vdyB0aGF0IFVTQiBoYXMgdXNlZAo+IEVJTFNFUSBmb3Igc29tZSB5ZWFy cyAoaW5kaWNhdGluZyBhIGxvd2xldmVsIGJpdCBwcm90b2NvbCBmYWlsdXJlKSwKPiBhbmQgTU1D IGlzIHVzaW5nIGl0IHRvby4KPiAKPiBTbyBpZiB5b3Ugd2FudCB0byBzYXkgIm5vdCIsIGl0IHNo b3VsZCBiZSBmb3Igc29tZSBiZXR0ZXIgcmVhc29uCj4gdGhhbiB0aGF0Li4uCgpXaGVuIGNhbGxp bmcgc3RyZXJyb3Igb24gRUlMU0VRLCB5b3UgZ2V0OiAiSW52YWxpZCBvciBpbmNvbXBsZXRlCm11 bHRpYnl0ZSBvciB3aWRlIGNoYXJhY3RlciIuIFRoaXMgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB0 aGUgZXJyb3IgaW4KcXVlc3Rpb24sIGFuZCB0aGF0J3Mgd2hhdCBJIGFtIHdvcnJpZWQgYWJvdXQu IEkgZG9uJ3Qga25vdyB3aGV0aGVyIGl0Cm1ha2VzIHNlbnNlIG9yIG5vdCBpbiB0aGUgVVNCIGFu ZCBNTUMgY29kZSwgYnV0IGluIHRoZSBJMkMvU01CdXMKY29udGV4dCwgSSdtIHN1cmUgaXQgZG9l cyBub3QuCgo+ID4gSSdkIHJldHVybiAtRUlOVkFMLCBvciAKPiA+IC1FUkVNT1RFSU8gaWYgeW91 IHRoaW5rIEVJTlZBTCBpcyB1bmZhaXIgZm9yIHRoZSBjYWxsZXIuCj4gCj4gSXQncyBub3QgYW4g SS9PIGVycm9yOyB0aGUgSS9PIGFjdHVhbGx5IHdvcmtlZCwgaXQncyB0aGUgYnl0ZXMKClRydWUu Li4KCj4gdGhhdCB3ZXJlIHdyb25nLiAgSXQncyBub3QgYW4gImFyZ3VtZW50IiBwcm92aWRlZCBi eSB0aGUgY2FsbGVyLgo+IFNvIG5laXRoZXIgb2YgdGhvc2UgY29kZXMgc2VlbXMgYXBwcm9wcmlh dGUuCgpUaGUgcmV0dXJuZWQgdmFsdWUgZGVwZW5kcyBvbiBhbiBhcmd1bWVudCBwcm92aWRlZCBi eSB0aGUgY2FsbGVyLAp0aG91Z2guCgo+ID4gQnV0IG1vc3QgCj4gPiBsaWtlbHksIGlmIHRoZSBy ZXR1cm5lZCBsZW5ndGggaXMgbm90IHdpdGhpbiB0aGUgU01CdXMgc3BlY2lmaWNhdGlvbnMsCj4g PiBpdCBtZWFucyB0aGF0IHRoZSBjYWxsZXIgcmFuIGFuIFNNQnVzIGJsb2NrIHRyYW5zYWN0aW9u IGF0IHRoZSB3cm9uZwo+ID4gb2Zmc2V0IG9yIG9uIGEgZGV2aWNlIHRoYXQgZG9lc24ndCBzdXBw b3J0IGl0LCBzbyAtRUlOVkFMIHNlZW1zCj4gPiByZWFzb25hYmxlIHRvIG1lLgo+IAo+IFRoYXQn cyBvbmx5IGEgZ3Vlc3MgdGhvdWdoLiAgQWxsIHdlICprbm93KiBpcyB0aGF0IHdlIHNhdyBhbgo+ IGlsbGVnYWwgYnl0ZSBzZXF1ZW5jZS4uLgoKVGhhdCdzIG5vdCBhbiBpbGxlZ2FsICJzZXF1ZW5j ZSIsIHNvcnJ5LiBUaGUgbGVuZ3RoIGJ5dGUgYnkgaXRzZWxmIGlzCmVpdGhlciB2YWxpZCBvciBu b3QgdmFsaWQuIFdoYXQgd2Ugc2F3IGlzIGFuIGlsbGVnYWwgYnl0ZSB2YWx1ZS4KClllcywgLUVJ TlZBTCBpcyBhIGd1ZXNzLCBidXQgYWNjb3JkaW5nIHRvIG15IGV4cGVyaWVuY2UsIHRoaXMgZ3Vl c3MKd2lsbCBhbHdheXMgYmUgY29ycmVjdC4gTGVhdmluZyBhY3R1YWwgSS9PIGVycm9ycyBhc2lk ZSwgdGhlcmUgYXJlIG9ubHkKdHdvIHdheXMgdGhhdCB0aGUgU01CdXMgYmxvY2sgbGVuZ3RoIGJ5 dGUgd2UgcmVjZWl2ZSBmcm9tIGFuIFNNQnVzIGNoaXAKY2FuIGJlIGluY29ycmVjdDogZWl0aGVy IHRoZSBjaGlwIGluIHF1ZXN0aW9uIGlzIHJldHVybmluZyBpbnZhbGlkIGRhdGEKdG8gYSBwcm9w ZXIgcmVxdWVzdCwgb3IgdGhlIHJlcXVlc3Qgd2FzIGluY29ycmVjdC4gVGhlIGZvcm1lciB3b3Vs ZAptZWFuIHRoYXQgdGhlIGNoaXAgaXMgYmFzaWNhbGx5IHVudXNhYmxlLCBzbyBpdCdzIHZlcnkg dW5saWtlbHkgdG8KaGFwcGVuLiBBcyBhIG1hdHRlciBvZiBmYWN0LCBJJ3ZlIG5ldmVyIHNlZW4g aXQgKG5vdCB0aGF0IEkgaGF2ZSBzZWVuCnRoYXQgbWFueSBjaGlwcyB1c2luZyBTTUJ1cyBibG9j ayByZWFkcywgdGhvdWdoLikgVGhhdCdzIHdoeSBJIHNheSB0aGF0CnRoZSBsYXR0ZXIgd2lsbCBh bHdheXMgYmUgdHJ1ZSBpbiBwcmFjdGljZSwgYW5kIC1FSU5WQUwgbWFrZXMgc2Vuc2UKdGhlbiBl dmVuIGlmIGl0J3Mgbm90IHBlcmZlY3QuCgpJZiB5b3UgYXJlIHN0aWxsIHdvcnJpZWQgdGhhdCAt RUlOVkFMIGhhcyBhIHNtYWxsIGNoYW5jZSBvZiBub3QgYmVpbmcKY29ycmVjdCwgSSdkIHJhdGhl ciBnbyBmb3IgLUVNU0dTSVpFIChNZXNzYWdlIHRvbyBsb25nKSwgYWx0aG91Z2ggdGhlCmVycm9y IG1lc3NhZ2Ugd291bGQgYmUgY29uZnVzaW5nIGluIHRoZSAwIGNhc2UuIEV2ZW4gLUVPVkVSRkxP VyAoVmFsdWUKdG9vIGxhcmdlIGZvciBkZWZpbmVkIGRhdGEgdHlwZSkgd291bGQgYmUgbW9yZSBh cHByb3ByaWF0ZSB0aGFuCi1FSUxTRVEsIEkgdGhpbmsuCgotLSAKSmVhbiBEZWx2YXJlCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppMmMgbWFpbGluZyBs aXN0CmkyY0BsbS1zZW5zb3JzLm9yZwpodHRwOi8vbGlzdHMubG0tc2Vuc29ycy5vcmcvbWFpbG1h bi9saXN0aW5mby9pMmM=