Return-Path: MIME-Version: 1.0 In-Reply-To: <201005121126.12859.jcaden@libresoft.es> References: <201005121126.12859.jcaden@libresoft.es> From: =?UTF-8?Q?Jo=C3=A3o_Paulo_Rechi_Vita?= Date: Wed, 12 May 2010 19:03:51 -0300 Message-ID: Subject: Re: HDP proposed API (ver 0.3) To: jcaden@libresoft.es Cc: linux-bluetooth@vger.kernel.org, =?UTF-8?Q?Elvis_Pf=C3=BCtzenreuter?= , Santiago Carot , Raul Herbster Content-Type: text/plain; charset=UTF-8 Sender: linux-bluetooth-owner@vger.kernel.org List-ID: SGVsbG8gSm9zZSEKCk9uIFdlZCwgTWF5IDEyLCAyMDEwIGF0IDA2OjI2LCBKb3PDqSBBbnRvbmlv IFNhbnRvcyBDYWRlbmFzCjxqY2FkZW5AbGlicmVzb2Z0LmVzPiB3cm90ZToKPiBUaGlzIGFwaSBp cyBhIGNsZWFuIHVwIG9mIHRoZSBwcmV2aW91cyBvbmUgdGhlIGNoYW5nZXMuCj4KPiBXZSd2ZSBh ZGRlZCBhIG5ldyBvYmplY3QgdGhhdCB1c2VzIGRldmljZSBwYXRoIHRvIGdldCB0aGUgc2Vzc2lv bnMKPiBhbGxvY2F0ZWQgb24gdGhpcyBkZXZpY2UgKGFzIHNvbWVib2R5IHJlY29tbWVuZGVkIGlu IG90aGVyIHRocmVhZCwKPiBJIHRoaW5rIEx1aXosIEVsdmlzIG9yIGJvdGgsIGJ1dCBJIGNhbid0 IGZpbmQgdGhlIGV4YWN0IGVtYWlsKS4gVGhlIGRpc2NvdmVyeQo+IG9mIG5ldyByZW1vdGUgc2Vz c2lvbiBzaG91bGQgYmUgZG9uZSB1c2luZyBkZXZpY2UgZHJpdmVycywgd2hpY2ggaXMKPiBjb21w bGlhbnQgd2l0aCB0aGUgQmx1ZVogc3R5bGUuCj4KPiBEaXNjdXNzaW9ucyBzdGlsbCBpbiBwcm9n cmVzczoKPgo+IC0gRmQtcGFzc2luZyBpc3N1ZTogQXMgRWx2aXMsIFNhbnRpYWdvIGFuZCBJIGRp c2N1c3NlZCB5ZXN0ZXJkYXkgb24KPiBJUkMgd2UgdGhpbmsgdGhhdCB0aGUgYmVzdCBwcm9wb3Nl IGlzIGFzIGZvbGxvd3MgKHBsZWFzZSBFbHZpcyBjb3JyZWN0Cj4gbWUgaWYgSSBtaXN1bmRlcnN0 b29kIHNvbWV0aGluZyB5ZXN0ZXJkYXkpOgo+IMKgIMKgIMKgIMKgUmVjb25uZWN0aW9ucyBzaG91 bGQgYmUgaW1wbGljaXQgYW5kIHRoZSBkYXRhIGNoYW5uZWwgc2hvdWxkCj4gYmUgcGVyY2VpdmVk IGJ5IHRoZSBhcHBsaWNhdGlvbiBsYXllciBhcyBjb25uZWN0ZWQgYWxsIHRoZSB0aW1lLgo+IMKg IMKgIMKgIMKgV2hlbiB0aGUgYXBwbGljYXRpb24gdHJpZXMgdG8gd3JpdGUgaW4gYSBjbG9zZWQg ZGF0YSBjaGFubmVsLCBIRFAKPiB3aWxsIHBlcmZvcm0gdGhlIGRhdGEgY2hhbm5lbCByZWNvbm5l Y3Rpb24gYW5kIGlmIGl0IGZhaWxzLCB0aGVuIHRoZSBjaGFubmVsCj4gd2lsbCBiZSBwcmVzZW50 IGFzIGNsb3NlZC4KPiDCoCDCoCDCoCDCoFRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhpcyB0aGlz IGJlaGF2aW91ciB3aWxsIHVzZSBwaXBlcy4gRWFjaCBkYXRhCj4gY2hhbm5lbCB3aWxsIHVzZSAy IHBpcGVzIHRvIGRvIGZkLXBhc3NpbmcgdG8gdGhlIGFwcGxpY2F0aW9uLiBUaGUgdXBwZXIKPiBs YXllciB3aWxsIHdyaXRlIGluIHRoaXMgcGlwZXMgYW5kIEhEUCB3aWxsIHJlZGlyZWN0IGl0IHRo cm91Z2ggdGhlIGwyY2FwIHNvY2tldCwKPiBpbiB0aGlzIG9wZXJhdGlvbiwgSERQIGNhbiByZWNv bm5lY3QgaWYgdGggbDJjYXAgc29ja2V0IGlzIGNsb3NlZC4KPgo+IC0gU2Vzc2lvbnMgaXNzdWVz OiBXZSBzdGlsbCB0aGluayB0aGF0IHNlc3Npb24gYXJlIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZXkK PiBhcmUgbWVudGlvbmVkIGluIHRoZSBzdGFuZGFyZCBhbmQgaW4gdGhlIHdoaXRlcGFwZXIgYW5k IHdlIHRoaW5rIHRoYXQKPiBibHVleiBzaG91bGQgZm9sbG93IHRoZSBzdGFuZGFyZHMgaW4gb3Jk ZXIgdG8gcGFzcyBQVFMgZm9yIGFsbG93IEJsdWV0b290aCBTSUcKPiBjZXJ0aWZpY2F0aW9ucy4g QW55IGNvbW1lbnQgaW4gdGhpcyByZXNwZWN0IGFyZSB3ZWxjb21lIHRvIGltcHJvdmUgdGhlIEFQ SQo+IHVzYWJpbGl0eSBhbmQgY29uZm9ybWl0eSB3aXRoIEJsdWV6IEFQSXMuCj4KPiAtIFBhdGhz IGlzc3VlczogSXQgd2lsbCBiZSBncmVhdCB0byBmaW5kIG5hbWVzIGFuZCBwYXRocyB0aGF0IGFy ZSBnb29kIGZvcgo+IGV2ZXJ5Ym9keSwgY29tbWVudHMgYW5kIHN1Z2dlc3Rpb24gb24gdGhpcyBy ZXNwZWN0IGFyZSBhbHNvIHdlbGNvbWUuCj4KPiBJIGhvcGUgd2UgY2FuIGZpeCB0aGlzIEFQSSBh c2FwLiBBbGwgY29tbWVudHMgb3IgaWRlYXMgYXJlIHdlbGNvbWUuCj4KCkl0IHdvdWxkIGJlIG11 Y2ggYmV0dGVyIGlmIHlvdSBjb3VsZCBicmluZyB0aGlzIEFQSSBuZWFyIHRvIG90aGVyCkJsdWVa IEFQSXMuIEFsbCBjb21tZW50cyBJJ2xsIGRvIHJpZ2h0IG5vdyBpcyByZWdhcmRpbmcgdGhpcyBt YXR0ZXIuCgo+IFJlZ2FyZHMuCj4KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQo+Cj4gQmx1ZVogRC1CdXMgSERQIEFQSSBkZXNjcmlwdGlvbgo+ICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4KPiDCoCDCoCDCoCDCoFNhbnRpYWdv IENhcm90LU5lbWVzaW8gPHNhbmNhbmVAZ21haWwuY29tPgo+IMKgIMKgIMKgIMKgSm9zw6kgQW50 b25pbyBTYW50b3MtQ2FkZW5hcyA8c2FudG9zY2FkZW5hc0BnbWFpbC5jb20+Cj4gwqAgwqAgwqAg wqBFbHZpcyBQZsO8dHplbnJldXRlciA8ZXB4QHNpZ25vdmUuY29tPgo+Cj4gSGVhbHRoIERldmlj ZSBQcm9maWxlIGhpZXJhcmNoeQo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPgo+ IFNlcnZpY2UgwqAgwqAgwqAgwqAgb3JnLmJsdWV6Cj4gSW50ZXJmYWNlIMKgIMKgIMKgIG9yZy5i bHVlei5IZHAKCklmIHlvdSBsb29rIG9uIG90aGVyIHByb2ZpbGUgaW50ZXJmYWNlcyB5b3UnbGwg c2VlIHRoYXQgd2UgbmV2ZXIgdXNlCnRoZSBwcm9maWxlIGFjcm9ueW0gZm9yIGludGVyZmFjZSBu YW1lcywgYnV0IHRoZSBjb250ZW50IHR5cGUgKGFuZApyb2xlLCB3aGVyZSBhcHBsaWNhYmxlKS4g U28gdGhpcyB3aWxsIGJlIGJldHRlciBhcyBvcmcuYmx1ZXouSGVhbHRoLgoKTW9yZW92ZXIsIEkg c2VlIHlvdSdyZSB1c2luZyB0aGUgc2FtZSBpbnRlcmZhY2UgbmFtZSB0byBkZXNjcmliZSB0d28K ZGlmZmVyZW50IGludGVyZmFjZXMuIFRoaXMgaXMganVzdCB3cm9uZy4gQW4gaW50ZXJmYWNlIHNo b3VsZCBiZSBhCmRlc2NyaXB0aW9uIG9mIGFuIHVuaXF1ZSBncm91cCBvZiBtZXRob2RzIGFuZCBz aWduYWxzIHNpZ25hdHVyZXMuIFlvdQpjYW4gcmVmZXIgdG8gWzBdIGZvciBhIGRlc2NyaXB0aW9u IG9uIGludGVyZmFjZXMuCgpbMF0gaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL2RvYy9kYnVz LXR1dG9yaWFsLmh0bWwjaW50ZXJmYWNlcwoKPiBPYmplY3QgcGF0aCDCoCDCoCBbdmFyaWFibGUg cHJlZml4XS97aGNpMCxoY2kxLC4uLn0KPgo+IE1ldGhvZHMgwqAgwqAgwqAgwqAgb2JqZWN0IENy ZWF0ZVNlc3Npb24ob2JqZWN0IHBhdGgsIGRpY3QgY29uZmlnKQo+Cj4gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqBSZXR1cm5zIHRoZSBvYmplY3QgcGF0aCBmb3IgdGhlIG5ldyBI RFAgc2Vzc2lvbi4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFRoZSBwYXRo IHBhcmFtZXRlciBpcyB0aGUgcGF0aCBvZiB0aGUgcmVtb3RlIG9iamVjdAo+IMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgd2l0aCB0aGUgY2FsbGJhY2tzIHRvIG5vdGlmeSBldmVu dHMgKHNlZQo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgb3JnLmJsdWV6Lkhk cEFnZW50IGF0IHRoZSBlbmQgb2YgdGhpcyBkb2N1bWVudCkKPiDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoFRoaXMgcGV0aXRpb24gc3RhcnRzIGFuIG1jYXAgc2Vzc2lvbiBhbmQg YWxzbyByZWdpc3Rlcgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaW4gdGhl IFNEUCBpcyBuZWVkZWQKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoERpY3Qg aXMgZGVmaW5lZCBhcyBiZWxsb3c6Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqB7ICJkYXRhX3NwZWMiIDogVGhlIGRhdGFfc3BlYyBpcyB0aGUgZGF0YSBleGNoYW5nZQo+IMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg c3BlY2lmaWNhdGlvbiAoc2VlIHNlY3Rpb24gNS4yLjEwIG9mCj4gwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB0aGUgc3BlY2lmaWNhdGlv biBkb2N1bWVudCkKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoHBvc3NpYmxlIHZhbHVlczoKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDB4MDAgPSBy ZXNlcnZlZCwKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDB4MDEgW0lFRUUgMTEwNzMtMjA2MDFdLAo+IMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgMHgwMi4uMHhmZiByZXNlcnZlZCwKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoChvcHRpb25hbCkKPiDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCJlbmRfcG9pbnRzIiA6IFt7IChvcHRpb25hbCkK PiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCJtZGVwaWQi IDogdWludDgsIChvcHRpb25hbCkKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCJyb2xlIiA6ICgic291cmNlIiBvciAic2luayIpLCAobWFuZGF0b3J5KQo+ IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgInNwZWNzIiA6 W3sgKG1hbmRhdG9yeSkKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCJkYXRhX3R5cGUiIDogdWludDE2LCAobWFuZGF0b3J5KQo+IMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg ImRlc2NyaXB0aW9uIiA6IHN0cmluZywgKG9wdGlvbmFsKQo+IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfV0KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoH1dCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB9Cj4K CkNvdWxkbid0IHRoaXMgYmUgbW92ZWQgYXMgcHJvcGVydGllcyBvbiB0aGUgc2Vzc2lvbiBvYmpl Y3Q/IFNvIGFmdGVyCmNyZWF0aW5nIGEgc2Vzc2lvbiB5b3UganVzdCBnbyBvbiBpdCdzIG9iamVj dCBwYXRoIGFuZCBzZXQgdGhlIGRlc2lyZWQKcHJvcGVydGllcyB3aXRoIFNldFByb3BlcnR5KCku IFRoaXMgd2lsbCBiZSBtdWNoIG1vcmUgYWxpZ25lZCB3aXRoCm90aGVyIEJsdWVaIEFQSXMuCgo+ IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgImRhdGFfc3BlYyIgaXMgbm90 IHNldCwgbm8gU0RQIHJlY29yZCB3aWxsIGJlCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqByZWdpc3RlcmVkLCBzbyBhbGwgdGhlIG90aGVyIGRhdGEgaW4gdGhlIGRpY3Rpb25h cnkKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHdpbGwgYmUgaWdub3JlZAo+ Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBTZXNzaW9uIHdpbGwgYmUgY2xv c2VkIGJ5IHRoZSBjYWxsIG9yIGltcGxpY2l0bHkgd2hlbgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgdGhlIHByb2dyYW1zIGxlYXZlcyB0aGUgYnVzLgo+Cj4gwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBQb3NzaWJsZSBlcnJvcnM6IG9yZy5ibHVlei5FcnJv ci5JbnZhbGlkQXJndW1lbnRzCj4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHZvaWQgQ2xvc2VT ZXNzaW9uKG9iamVjdCBwYXRoKQo+Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqBDbG9zZXMgdGhlIEhEUCBzZXNzaW9uIGlkZW50aWZpZWQgYnkgdGhlIG9iamVjdCBwYXRoLgo+ IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgQWxzbyBzZXNzaW9uIHdpbGwgYmUg Y2xvc2VkIGlmIHRoZSBwcm9jZXNzIHRoYXQgc3RhcnRlZAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgaXQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBELUJ1cy4KCnMvRC1CdXMvYnVz LiBBbHNvLCB3b3VsZCBiZSBnb29kIHRvIGtlZXAgdGhlIGRlc2NyaXB0aW9uIGNvbnNpc3RlbnQK YmV0d2VlbiBtZXRob2RzLiBQcmV2aW91cyBkZXNjcmlwdGlvbiBzYXlzICJ0aGUgcHJvZ3JhbXMg bGVhdmVzIiBhbmQKaGVyZSAicHJvY2VzcyBpcyByZW1vdmVkIi4gSU1ITyAidGhlIHByb2Nlc3Mg bGVhdmVzIHRoZSBidXMiIHdpbGwgYmUKdGhlIG1vcmUgYWNjdXJhdGUuCgo+Cj4gwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBQb3NzaWJsZSBlcnJvcnM6IG9yZy5ibHVlei5FcnJv ci5JbnZhbGlkQXJndW1lbnRzCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgb3JnLmJsdWV6LkVycm9yLk5vdEZvdW5kCj4KPiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQo+Cj4gU2VydmljZSDCoCDCoCDCoCDCoCBvcmcuYmx1ZXoKPiBJ bnRlcmZhY2UgwqAgwqAgwqAgb3JnLmJsdWV6LkhkcAo+IE9iamVjdCBwYXRoIMKgIMKgIFt2YXJp YWJsZSBwcmVmaXhdL3toY2kwLGhjaTEsLi4ufS9kZXZfWFhfWFhfWFhfWFhfWFhfWFgKPgo+IE1l dGhvZHMgYXJyYXkgR2V0U2Vzc2lvbnMoKQoKSXQgd291bGQgYmUgYmV0dGVyIGlmIHRoaXMgbWV0 aG9kIHJldHVybiB0aGUgc2Vzc2lvbiBvYmplY3QgcGF0aCwgdGhlbgp5b3UgY2FuIGdldCB0aGlz IGluZm9ybWF0aW9uIHdpdGggR2V0UHJvcGVydGllcygpIG9uIHRoZSBzZXNzaW9uCm9iamVjdC4K Cj4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoEdldHMgdGhlIGluZm9ybWF0 aW9uIG9mIHRoZSByZW1vdGUgc2Vzc2lvbnMgcHJlc2VudAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgaW4gdGhpcyBkZXZpY2UgYW5kIHB1Ymxpc2hlZCBvbiBpdHMgU0RQIHJl Y29yZC4gVGhlCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqByZXR1cm5lZCBk YXRhIGZvbGxvd3MgdGhpcyBmb3JtYXQuCj4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoFt7InNlc3Npb25faWQiOiAiYSBzZXNzaW9uIGlkZW50aWZpY2F0aW9uIGFzIHN0cmlu ZyIsCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgImRhdGFfc3BlYyIgOiBz ZXNzaW9uIGRhdGEgc3BlYywKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAi ZW5kX3BvaW50cyI6Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgWyJtZGVwaWQiOiB1aW50OCwKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCJyb2xlIiDCoDogInNvdXJjZSIgb3IgInNpbmsiICwKPiDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCJzcGVjcyIgOiBb ewo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgImR0eXBlIiDCoCDCoCDCoCA6IHVpbnQxNiwKPiDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCJkZXNjcmlwdGlvbiIg OiBzdHJpbmcsIChvcHRpb25hbCkKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoH1dCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgXQo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgfV0KPgo+ IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4KPiBTZXJ2aWNlIMKgIMKgIMKgIMKgIG9yZy5ibHVl ego+IEludGVyZmFjZSDCoCDCoCDCoCBvcmcuYmx1ZXouSGRwU2Vzc2lvbgo+IE9iamVjdCBwYXRo IMKgIMKgIFt2YXJpYWJsZSBwcmVmaXhdL3toY2kwLGhjaTEsLi4ufS97aGRwMCxoZHAxLC4uLn0K CkZyb20gdGhlIHByZXZpb3VzIGludGVyZmFjZSAodGhlIG9uZSB0aGF0IGRlZmluZXMgdGhlIEdl dFNlc3Npb25zKCkKbWV0aG9kKSBpdCBzZWVtcyB0aGF0IHNlc3Npb25zIGFyZSB0aWVkIHRvIGEg c3BlY2lmaWMgZGV2aWNlLiBJZiBzbywKdGhlIHNlc3Npb24gb2JqZWN0cyBzaG91bGQgYmUgdW5k ZXIgdGhlIGRldmljZSBvYmplY3QsIG5vdCB1bmRlciB0aGUKYWRhcHRlciBvYmplY3QuCgo+Cj4g wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBvYmplY3QgQ29ubmVjdChyZW1vdGVfc2Vzc2lvbl9pZCkK Pgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgQ29ubmVjdHMgd2l0aCB0aGUg cmVtb3RlIHNlc3Npb24gYW5kIHJldHVybnMgaXRzIG9iamVjdAo+IMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgcGF0aC4KPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgUG9zc2libGUgZXJyb3JzOiBvcmcuYmx1ZXouRXJyb3IuSW52YWxpZEFyZ3VtZW50cwo+ IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIG9yZy5ibHVlei5FcnJvci5IZHBFcnJvcgo+Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB2 b2lkIERpc2Nvbm5lY3Qob2JqZWN0IGRldmljZSwgYm9vbGVhbiBkZWxldGUpCj4KPiDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoERpc2Nvbm5lY3QgZnJvbSB0aGUgcmVtb3RlIGRl dmljZS4gSWYgZGVsZXRlIGlzIHRydWUsIGFueQo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgc3RhdHVzIHdpbGwgYWxzbyBiZSBkZWxldGVkLiBPdGhlcndpc2UsIHRoZSBzdGF0 dXMgd2lsbAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgYmUga2VwdCBmb3Ig YWxsb3dpbmcgZnV0dXJlIHJlY29ubmVjdGlvbnMuCj4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoFBvc3NpYmxlIGVycm9yczogb3JnLmJsdWV6LkVycm9yLkludmFsaWRBcmd1 bWVudHMKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCBvcmcuYmx1ZXouRXJyb3IuTm90Rm91bmQKPiDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBvcmcuYmx1ZXouRXJyb3Iu SGRwRXJyb3IKPgo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4KPiBTZXJ2aWNlIMKgIMKgIMKg IMKgIG9yZy5ibHVlego+IEludGVyZmFjZSDCoCDCoCDCoCBvcmcuYmx1ZXouSGRwUmVtb3RlU2Vz c2lvbgo+IE9iamVjdCBwYXRoIMKgIMKgIFt2YXJpYWJsZSBwcmVmaXhdL3toY2kwLGhjaTEsLi4u fS97aGRwMCxoZHAxLC4uLn0vcmVtX3Nlc3Npb25faWQKPgoKQ291bGQgeW91IHBsZWFzZSBlbGFi b3JhdGUgbW9yZSBvbiB3aGF0IGRvZXMgSGRwU2Vzc2lvbiBhbmQKSGRwUmVtb3RlU2Vzc2lvbnMg dHJpZXMgdG8gYWJzdHJhY3Q/IEl0IHN0aWxsIG5vdCBjbGVhciB0byBtZSBhbmQKZGVwZW5kaW5n IG9uIHRoaXMgd2UgbWF5IGZpbmQgYSBiZXR0ZXIgbmFtZSBmb3IgaXQuCgo+IMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgYm9vbGVhbiBFY2hvKGFycmF5e2J5dGV9KQo+Cj4gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqBTZW5kcyBhbiBlY2hvIHBldGl0aW9uIHRvIHRoZSByZW1vdGUg c2Vzc2lvbi4gUmV0dXJuIFRydWUKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oGlmIHJlc3BvbnNlIG1hdGNoZXMgd2l0aCB0aGUgYnVmZmVyIHNlbnQuIElmIHNvbWUgZXJyb3IK PiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGlzIGRldGVjdGVkIEZhbHNlIHZh bHVlIGlzIHJldHVybmVkIGFuZCB0aGUgYXNzb2NpYXRlZAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgTUNMIGlzIGNsb3NlZC4KPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg dWludDE2IE9wZW5EYXRhQ2hhbm5lbChieXRlIG1kZXBpZCwgYnl0ZSBjb25maWcpCj4KPiDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoENyZWF0ZXMgYSBuZXcgZGF0YSBjaGFubmVs IHdpdGggdGhlIGluZGljYXRlZCBjb25maWcKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoHRvIHRoZSByZW1vdGUgTUNBUCBEYXRhIEVuZCBQb2ludCAoTURFUCkuCj4gwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBUaGUgY29uZmlndXJhdGlvbiBzaG91bGQgaW5k aWNhdGUgdGhlIGNoYW5uZWwgcXVhbGl0eSBvZgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgc2VydmljZS4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFJl dHVybnMgdGhlIGRhdGEgY2hhbm5lbCBpZC4KPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgUG9zc2libGUgZXJyb3JzOiBvcmcuYmx1ZXouRXJyb3IuSW52YWxpZEFyZ3VtZW50 cwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIG9yZy5ibHVlei5FcnJvci5IZHBFcnJvcgo+Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqBhcnJheSBHZXREY0ZkKHVpbnQxNiBtZGxpZCkKPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgR2V0cyBhIGZpbGUgZGVzY3JpcHRvciB3aGVyZSBkYXRhIGNhbiBiZSByZWFk IG9yCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB3cml0dGVuIGZvciByZWNl aXZlIG9yIHNlbnQgYnkgdGhlIGRhdGEgY2hhbm5lbC4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoFJldHVybnMgYW4gYXJyYXkgb2YgZmlsZSBkZXNjcmlwdG9ycyBvbmUgZm9y IHdyaXRlCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBhbmQgb3RoZXIgZm9y IHJlYWQuCj4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFBvc3NpYmxlIGVy cm9yczogb3JnLmJsdWV6LkVycm9yLkludmFsaWRBcmd1bWVudHMKPiDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBvcmcuYmx1ZXouRXJy b3IuTm90Rm91bmQKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCBvcmcuYmx1ZXouRXJyb3IuSGRwRXJyb3IKPgo+IMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgdm9pZCBEZWxldGVEYXRhQ2hhbm5lbCh1aW50MTYgbWRsaWQpCj4KPiDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoERlbGV0ZXMgYSBkYXRhIGNoYW5uZWwgc28g aXQgd2lsbCBub3QgYmUgYXZhaWxhYmxlIGZvcgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgdXNlLgo+Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBQb3Nz aWJsZSBlcnJvcnM6IG9yZy5ibHVlei5FcnJvci5JbnZhbGlkQXJndW1lbnRzCj4gwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgb3JnLmJs dWV6LkVycm9yLk5vdEZvdW5kCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgb3JnLmJsdWV6LkVycm9yLkhkcEVycm9yCj4KPiDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoHZvaWQgRGVsZXRlQWxsRGF0YUNoYW5uZWxzKCkKPgo+IMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgRGVsZXRlcyBhbGwgZGF0YSBjaGFubmVscyBz byBpdCB3aWxsIG5vdCBiZSBhdmFpbGFibGUKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoGZvciB1c2UuIFR5cGljYWxseSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRo ZQo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgY29ubmVjdGlvbiB3aXRoIHRo ZSByZW1vdGUgZGV2aWNlIHdpbGwgYmUgY2xvc2VkCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqBwZXJtYW5lbnRseQo+Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqBQb3NzaWJsZSBlcnJvcnM6IG9yZy5ibHVlei5FcnJvci5IZHBFcnJvcgo+Cj4gwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqBkaWN0IEdldERhdGFDaGFubmVsU3RhdHVzKCkKPgo+IMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgUmV0dXJuIGEgZGljdGlvbmFyeSB3aXRoIGFsbCB0 aGUgZGF0YSBjaGFubmVscyB0aGF0Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqBjYW4gYmUgdXNlZCB0byBzZW5kIGRhdGEgcmlnaHQgbm93LiBUaGUgZGljdGlvbmFyeQo+IMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaXMgZm9ybWVkIGxpa2UgZm9sbG93czoK PiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHsKPiDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCJyZWxpYWJsZSI6IFtpZDEsIC4uLiwgaWR6 XSwKPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCJiZXN0 X2VmZm9ydCIgOiBbaWR4LCAuLi4sIGlkeV0KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoH0KPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgVGhlIGZpc3Qg cmVsaWFibGUgZGF0YSBjaGFubmVsIHdpbGwgYWx3YXlzIGJlIHRoZSBmaXJzdAo+IMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZGF0YSBjaGFubmVsIGluIHJlbGlhYmxlIGFycmF5 Lgo+Cj4gSERQQWdlbnQgaGllcmFyY2h5Cj4gPT09PT09PT09PT09PT09PT09Cj4KPiAodGhpcyBv YmplY3QgaXMgaW1wbGVtZW50ZWQgYnkgdGhlIEhEUCBjbGllbnQgYW4gcmVjZWl2ZXMgbm90aWZp Y2F0aW9ucykKPgo+IFNlcnZpY2UgwqAgwqAgwqAgwqAgdW5pcXVlIG5hbWUKPiBJbnRlcmZhY2Ug wqAgwqAgwqAgb3JnLmJsdWV6LkhkcEFnZW50Cj4gT2JqZWN0IHBhdGggwqAgwqAgZnJlZWx5IGRl ZmluYWJsZQo+Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB2b2lkIERldmljZUNvbm5lY3RlZChv YmplY3QgcGF0aCkKPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgVGhpcyBt ZXRob2QgaXMgY2FsbGVkIHdoZW5ldmVyIGEgbmV3IGRldmljZSBjb25uZWN0aW9uCj4gwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBoYXMgYmVlbiBlc3RhYmxpc2hlZCBvdmVyIHRo ZSBjb250cm9sIGNoYW5uZWwgb2YgdGhlCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqBjdXJyZW50IEhEUCBzZXNzaW9uLiBUaGUgb2JqZWN0IHBhdGggY29udGFpbnMgdGhlIG9i amVjdAo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgcGF0aCBvZiB0aGUgcmVt b3RlIGRldmljZS4KPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgdm9pZCBEZXZpY2VEaXNjb25u ZWN0ZWQob2JqZWN0IHBhdGgpCj4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGEgcmVtb3RlIGRldmljZSBpcwo+IMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZGlzY29ubmVjdGVkIGRlZmluaXRpdmVseS4gQW55 IGZ1dHVyZSByZWNvbm5lY3Rpb25zCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqB3aWxsIGZhaWwuIEFsc28gYWxsIGRhdGEgY2hhbm5lbHMgYXNzb2NpYXRlZCB0byB0aGlzCj4g wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBkZXZpY2Ugd2lsbCBiZSBjbG9zZWQu Cj4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHZvaWQgQ3JlYXRlZERhdGFDaGFubmVsKG9iamVj dCBwYXRoLCB1aW50MTYgbWRsaWQpCj4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGEgbmV3IGRhdGEgY2hhbm5lbCBpcyBjcmVh dGVkCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBUaGUgcGF0aCBjb250YWlu cyB0aGUgb2JqZWN0IHBhdGggb2YgdGhlIGRldmljZSB3aGl0aAo+IMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgdGhlIG5ldyBjb25uZWN0aW9uIGlzIGNyZWF0ZWQgYW5kIHRoZSBt ZGxpZCB0aGUgZGF0YQo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgY2hhbm5l bCBpZGVudGlmaWNhdG9yLgo+Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB2b2lkIERlbGV0ZWRE YXRhQ2hhbm5lbChvYmplY3QgcGF0aCwgdWludDE2IG1kbGlkKQo+Cj4gwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhIGRhdGEgY2hh bm5lbCBpcyBjbG9zZWQuCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBBZnRl ciB0aGlzIGNhbGwgdGhlIGRhdGEgY2hhbm5lbCB3aWxsIG5vdCBiZSB2YWxpZCBhbmQKPiDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGNhbiBiZSByZXVzZWQgZm9yIGZ1dHVyZSBj cmVhdGVkIGRhdGEgY2hhbm5lbHMuCj4gLS0KPiBUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlz dDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgbGludXgtYmx1ZXRvb3RoIiBpbgo+IHRoZSBi b2R5IG9mIGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnCj4gTW9yZSBtYWpv cmRvbW8gaW5mbyBhdCDCoGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFqb3Jkb21vLWluZm8uaHRt bAo+CgoKCi0tIApKb8OjbyBQYXVsbyBSZWNoaSBWaXRhCmh0dHA6Ly9qcHJ2aXRhLndvcmRwcmVz cy5jb20vCg==