Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 66C90C43441 for ; Thu, 22 Nov 2018 19:23:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 05F3020864 for ; Thu, 22 Nov 2018 19:23:06 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 05F3020864 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2392232AbeKWGDt (ORCPT ); Fri, 23 Nov 2018 01:03:49 -0500 Received: from mga01.intel.com ([192.55.52.88]:32066 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726009AbeKWGDt (ORCPT ); Fri, 23 Nov 2018 01:03:49 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 22 Nov 2018 11:18:02 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,266,1539673200"; d="scan'208";a="251856577" Received: from orsmsx105.amr.corp.intel.com ([10.22.225.132]) by orsmga004.jf.intel.com with ESMTP; 22 Nov 2018 11:18:02 -0800 Received: from orsmsx103.amr.corp.intel.com ([169.254.5.29]) by ORSMSX105.amr.corp.intel.com ([169.254.2.237]) with mapi id 14.03.0415.000; Thu, 22 Nov 2018 11:18:01 -0800 From: "Gix, Brian" To: "linux-bluetooth@vger.kernel.org" , "Stotland, Inga" CC: "luiz.dentz@gmail.com" , "marcel@holtmann.org" , "johan.hedberg@gmail.com" Subject: Re: [PATCH BlueZ v4] doc: Initial Bluetooth Mesh API Thread-Topic: [PATCH BlueZ v4] doc: Initial Bluetooth Mesh API Thread-Index: AQHUgKLDA2d0U+LsxUO15qKQJ4stpKVctP4A Date: Thu, 22 Nov 2018 19:18:01 +0000 Message-ID: <1542914278.20955.0.camel@intel.com> References: <20181120072905.26306-1-inga.stotland@intel.com> In-Reply-To: <20181120072905.26306-1-inga.stotland@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.251.136.188] Content-Type: text/plain; charset="utf-8" Content-ID: <959811CA70E1774E9C7D435D17026AAB@intel.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: linux-bluetooth-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org QXBwbGllZCB3aXRoIGFmb3JlIG1lbnRpb25lZCB0eXBvIGVkaXQNCg0KT24gTW9uLCAyMDE4LTEx LTE5IGF0IDIzOjI5IC0wODAwLCBJbmdhIFN0b3RsYW5kIHdyb3RlOg0KPiBUaGlzIGRlY3JpYmVz IHByb3Bvc2VkIEQtQnVzIGJhc2VkIEFQSSBmb3IgQmx1ZXRvb3RoIE1lc2gNCj4gaW1wbGVtZW50 YXRpb24uDQo+IC0tLQ0KPiAgZG9jL21lc2gtYXBpLnR4dCB8IDUxMiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiAgMSBmaWxlIGNoYW5nZWQsIDUxMiBp bnNlcnRpb25zKCspDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZG9jL21lc2gtYXBpLnR4dA0KPiAN Cj4gZGlmZiAtLWdpdCBhL2RvYy9tZXNoLWFwaS50eHQgYi9kb2MvbWVzaC1hcGkudHh0DQo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMC4uZWVkN2JhNjUzDQo+IC0tLSAv ZGV2L251bGwNCj4gKysrIGIvZG9jL21lc2gtYXBpLnR4dA0KPiBAQCAtMCwwICsxLDUxMiBAQA0K PiArQmx1ZVogRC1CdXMgTWVzaCBBUEkgZGVzY3JpcHRpb24NCj4gKyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqDQo+ICsNCj4gK01lc2ggTmV0d29yayBIaWVyYXJjaHkNCj4gKz09PT09 PT09PT09PT09PT09PT09PT0NCj4gK1NlcnZpY2UJCW9yZy5ibHVlei5tZXNoDQo+ICtJbnRlcmZh Y2UJb3JnLmJsdWV6Lm1lc2guTmV0d29yazENCj4gK09iamVjdCBwYXRoCS9vcmcvYmx1ZXovbWVz aA0KPiArDQo+ICtNZXRob2RzOg0KPiArCQl2b2lkIEpvaW4ob2JqZWN0IGFwcF9kZWZpbmVkX3Jv b3QsIGFycmF5e2J5dGV9WzE2XSB1dWlkKQ0KPiArDQo+ICsJCQlUaGlzIGlzIHRoZSBmaXJzdCBt ZXRob2QgdGhhdCBhbiBhcHBsaWNhdGlvbiBoYXMgdG8gY2FsbCB0byBiZWNvbWUNCj4gKwkJCWEg cHJvdmlzaW9uZWQgbm9kZSBvbiBhIG1lc2ggbmV0d29yay4gVGhlIGNhbGwgd2lsbCBpbml0aWF0 ZQ0KPiArCQkJYnJvYWRjYXN0aW5nIG9mIFVucHJvdmlzaW9uZWQgRGV2aWNlIEJlYWNvbi4NCj4g Kw0KPiArCQkJVGhlIGFwcF9kZWZpbmVkX3Jvb3QgcGFyYW1ldGVyIGlzIGEgRC1CdXMgb2JqZWN0 IHJvb3QgcGF0aCBvZiB0aGUNCj4gKwkJCWFwcGxpY2F0aW9uIHRoYXQgaW1wbGVtZW50cyBvcmcu Ymx1ZXoubWVzaC5BcHBsaWNhdGlvbjEgaW50ZXJmYWNlLg0KPiArCQkJVGhlIGFwcGxpY2F0aW9u IHJlcHJlc2VudHMgYSBub2RlIHdoZXJlIGNoaWxkIG1lc2ggZWxlbWVudHMgaGF2ZQ0KPiArCQkJ dGhlaXIgb3duIG9iamVjdHMgdGhhdCBpbXBsZW1lbnQgb3JnLmJsdWV6Lm1lc2guRWxlbWVudDEg aW50ZXJmYWNlLg0KPiArCQkJVGhlIGFwcGxpY2F0aW9uIGhpZXJhcmNoeSBhbHNvIGNvbnRhaW5z IGEgcHJvdmlzaW9uIGFnZW50IG9iamVjdA0KPiArCQkJdGhhdCBpbXBsZW1lbnRzIG9yZy5ibHVl ei5tZXNoLlByb3Zpc2lvbkFnZW50MSBpbnRlcmZhY2UuDQo+ICsJCQlUaGUgc3RhbmRhcmQgREJ1 cy5PYmplY3RNYW5hZ2VyIGludGVyZmFjZSBtdXN0IGJlIGF2YWlsYWJsZSBvbiB0aGUNCj4gKwkJ CWFwcF9kZWZpbmVkX3Jvb3QgcGF0aC4NCj4gKw0KPiArCQkJVGhlIHV1aWQgcGFyYW1ldGVyIGlz IGEgMTYtYnl0ZSBhcnJheSB0aGF0IGNvbnRhaW5zIERldmljZSBVVUlELg0KPiArDQo+ICsJCQlQ b3NzaWJsZUVycm9yczoNCj4gKwkJCQlvcmcuYmx1ZXoubWVzaC5FcnJvci5JbnZhbGlkQXJndW1l bnRzDQo+ICsNCj4gKwkJdm9pZCBDYW5jZWwodm9pZCkNCj4gKwkJCUNhbmNlbHMgYW4gb3V0c3Rh bmRpbmcgcHJvdmlzaW9uaW5nIHJlcXVlc3QgaW5pdGlhdGVkIGJ5IEpvaW4oKQ0KPiArCQkJbWV0 aG9kLg0KPiArDQo+ICsJCShvYmplY3Qgbm9kZSwgYXJyYXl7Ynl0ZSwgYXJyYXl7KHVpbnQxNiwg ZGljdH19IGNvbmZpZ3VyYXRpb24pDQo+ICsJCQkJQXR0YWNoKG9iamVjdCBhcHBfZGVmaW5lZF9y b290LCB1aW50NjQgdG9rZW4pDQo+ICsNCj4gKwkJCVRoaXMgaXMgdGhlIGZpcnN0IG1ldGhvZCB0 aGF0IGFuIGFwcGxpY2F0aW9uIG11c3QgY2FsbCB0byBnZXQgYWNjZXNzDQo+ICsJCQl0byBtZXNo IG5vZGUgZnVuY3Rpb25hbGl0aWVzLg0KPiArDQo+ICsJCQlUaGUgYXBwX2RlZmluZWRfcm9vdCBw YXJhbWV0ZXIgaXMgYSBELUJ1cyBvYmplY3Qgcm9vdCBwYXRoIG9mIHRoZQ0KPiArCQkJYXBwbGlj YXRpb24gdGhhdCBpbXBsZW1lbnRzIG9yZy5ibHVlei5tZXNoLkFwcGxpY2F0aW9uMSBpbnRlcmZh Y2UuDQo+ICsJCQlUaGUgYXBwbGljYXRpb24gcmVwcmVzZW50cyBhIG5vZGUgd2hlcmUgY2hpbGQg bWVzaCBlbGVtZW50cyBoYXZlDQo+ICsJCQl0aGVpciBvd24gb2JqZWN0cyB0aGF0IGltcGxlbWVu dCBvcmcuYmx1ZXoubWVzaC5FbGVtZW50MSBpbnRlcmZhY2UuDQo+ICsJCQlUaGUgc3RhbmRhcmQg REJ1cy5PYmplY3RNYW5hZ2VyIGludGVyZmFjZSBtdXN0IGJlIGF2YWlsYWJsZSBvbiB0aGUNCj4g KwkJCWFwcF9kZWZpbmVkX3Jvb3QgcGF0aC4NCj4gKw0KPiArCQkJVGhlIHRva2VuIHBhcmFtZXRl ciBpcyBhIDY0LWJpdCBudW1iZXIgdGhhdCBoYXMgYmVlbiBhc3NpZ25lZCB0byB0aGUNCj4gKwkJ CWFwcGxpY2F0aW9uIHdoZW4gaXQgZmlyc3QgZ290IHByb3Zpc2lvbmVkL2pvaW5lZCBtZXNoIG5l dHdvcmssIGkuZS4NCj4gKwkJCXVwb24gcmVjZWl2aW5nIEpvaW5Db21wbGV0ZSgpIG1ldGhvZC4g VGhlIGRhZW1vbiB1c2VzIHRoZSB0b2tlbiB0bw0KPiArCQkJdmVyaWZ5IHdoZXRoZXIgdGhlIGFw cGxpY2F0aW9uIGlzIGF1dGhvcml6ZWQgdG8gYXNzdW1lIHRoZSBtZXNoDQo+ICsJCQlub2RlIGlk ZW50aXR5Lg0KPiArDQo+ICsJCQlJbiBjYXNlIG9mIHN1Y2Nlc3MsIHRoZSBtZXRob2QgY2FsbCBy ZXR1cm5zIG1lc2ggbm9kZSBvYmplY3QgKHNlZQ0KPiArCQkJTWVzaCBOb2RlIEhpZXJhcmNoeSBz ZWN0aW9uKSBhbmQgY3VycmVudCBjb25maWd1cmF0aW9uIHNldHRpbmdzLg0KPiArCQkJVGhlIHJl dHVybiB2YWx1ZSBvZiBjb25maWd1cmF0aW9uIHBhcmFtZXRlciBpcyBhbiBhcnJheSwgd2hlcmUg ZWFjaA0KPiArCQkJZW50cnkgaXMgYSBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucyBlbGVtZW50IGNv bmZpZ3VyYXRpb24uDQo+ICsJCQlUaGUgZWxlbWVudCBjb25maWd1cmF0aW9uIHN0cnVjdHVyZSBp cyBvcmdhbml6ZWQgYXMgZm9sbG93czoNCj4gKw0KPiArCQkJCWJ5dGUNCj4gKw0KPiArCQkJCQlF bGVtZW50IGluZGV4LCBpZGVudGlmaWVzIHRoZSBlbGVtZW50IHRvIHdoaWNoIHRoaXMNCj4gKwkJ CQkJY29uZmlndXJhdGlvbiBlbnRyeSBwZXJ0aWFucy4NCj4gKw0KPiArCQkJCWFycmF5e3N0cnVj dH0NCj4gKw0KPiArCQkJCQlNb2RlbHMgYXJyYXkgd2hlcmUgZWFjaCBlbnRyeSBpcyBhIHN0cnVj dHVyZSB3aXRoIHRoZQ0KPiArCQkJCQlmb2xsb3dpbmcgbWVtYmVyczoNCj4gKw0KPiArCQkJCQkJ dWludDE2DQo+ICsNCj4gKwkJCQkJCQlFaXRoZXIgYSBTSUcgTW9kZWwgSWRlbnRpZmllciBvciwg aWYgVmVuZG9yIGtleSBpcw0KPiArCQkJCQkJCXByZXNlbnQgaW4gbW9kZWwgY29uZmlndXJhdGlv biBkaWN0aW9uYXJ5LCBhIDE2LWJpdA0KPiArCQkJCQkJCXZlbmRvci1hc3NpZ25lZCBNb2RlbCBJ ZGVudGlmaWVyDQo+ICsNCj4gKwkJCQkJCWRpY3QNCj4gKw0KPiArCQkJCQkJCUEgZGljdGlvbmFy eSB0aGF0IGNvbnRhaW5zIG1vZGVsIGNvbmZpZ3VyYXRpb24gd2l0aA0KPiArCQkJCQkJCXRoZSBm b2xsb3dpbmcga2V5cyBkZWZpbmVkOg0KPiArDQo+ICsJCQkJCQkJCWFycmF5e3VpbnQxNn0gQmlu ZGluZ3MNCj4gKw0KPiArCQkJCQkJCQkJSW5kaWNlcyBvZiBhcHBsaWNhdGlvbiBrZXlzIGJvdW5k IHRvDQo+ICsJCQkJCQkJCQl0aGUgbW9kZWwNCj4gKw0KPiArCQkJCQkJCQl1aW50MzIgUHVibGlj YXRpb25QZXJpb2QNCj4gKw0KPiArCQkJCQkJCQkJTW9kZWwgcHVibGljYXRpb24gcGVyaW9kIGlu DQo+IG1pbGxpc2Vjb25kcw0KPiArDQo+ICsJCQkJCQkJCXVpbnQxNiBWZW5kb3INCj4gKw0KPiAr CQkJCQkJCQkJQSAxNi1iaXQgQmx1ZXRvb3RoLWFzc2lnbmVkIENvbXBhbnkNCj4gKwkJCQkJCQkJ CUlkZW50aWZpZXIgb2YgdGhlIHZlbmRvciBhcyBkZWZpbmVkDQo+IGJ5DQo+ICsJCQkJCQkJCQlC bHVldG9vdGggU0lHDQo+ICsNCj4gKwkJCVBvc3NpYmxlRXJyb3JzOg0KPiArCQkJCW9yZy5ibHVl ei5tZXNoLkVycm9yLkludmFsaWRBcmd1bWVudHMNCj4gKwkJCQlvcmcuYmx1ZXoubWVzaC5FcnJv ci5Ob3RGb3VuZCwNCj4gKwkJCQlvcmcuYmx1ZXoubWVzaC5FcnJvci5GYWlsZWQNCj4gKw0KPiAr CQl2b2lkIExlYXZlKHVpbnQ2NCB0b2tlbikNCj4gKw0KPiArCQkJVGhpcyByZW1vdmVzIHRoZSBj b25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFib3V0IHRoZSBtZXNoIG5vZGUNCj4gKwkJCWlkZW50 aWZpZWQgYnkgdGhlIDY0LWJpdCB0b2tlbiBwYXJhbWV0ZXIuIFRoZSB0b2tlbiBwYXJhbWV0ZXIN Cj4gKwkJCWhhcyBiZWVuIG9idGFpbmVkIGFzIGEgcmVzdWx0IG9mIHN1Y2Nlc3NmdWwgSm9pbigp IG1ldGhvZCBjYWxsLg0KPiArDQo+ICsJCQlQb3NzaWJsZUVycm9yczoNCj4gKwkJCQlvcmcuYmx1 ZXoubWVzaC5FcnJvci5Ob3RGb3VuZA0KPiArDQo+ICsNCj4gK01lc2ggTm9kZSBIaWVyYXJjaHkN Cj4gKz09PT09PT09PT09PT09PT09PT0NCj4gK1NlcnZpY2UJCW9yZy5ibHVlei5tZXNoDQo+ICtJ bnRlcmZhY2UJb3JnLmJsdWV6Lm1lc2guTm9kZTENCj4gK09iamVjdCBwYXRoCS9vcmcvYmx1ZXov bWVzaC9ub2RlPHh4eHg+DQo+ICsJCXdoZXJlIHh4eHggaXMgYSA0LWRpZ2l0IGhleGFkZWNpbWFs IG51bWJlciBnZW5lcmF0ZWQgYnkgbWVzaGQgZGFlbW9uDQo+ICsNCj4gK01ldGhvZHM6DQo+ICsJ CXZvaWQgU2VuZChvYmplY3QgZWxlbWVudF9wYXRoLCB1aW50MTYgZGVzdGluYXRpb24sIHVpbnQx NiBrZXlfaW5kZXgsDQo+ICsJCQkJCQkJCWFycmF5e2J5dGV9IGRhdGEpDQo+ICsNCj4gKwkJCVRo aXMgbWV0aG9kIGlzIHVzZWQgdG8gc2VuZCBhIG1lc3NhZ2Ugb3JpZ2luYXRlZCBieSBhIGxvY2Fs IG1vZGVsLg0KPiArDQo+ICsJCQlUaGUgZWxlbWVudF9wYXRoIHBhcmFtZXRlciBpcyB0aGUgb2Jq ZWN0IHBhdGggb2YgYW4gZWxlbWVudCBmcm9tDQo+ICsJCQlhIGNvbGxlY3Rpb24gb2YgdGhlIGFw cGxpY2F0aW9uIGVsZW1lbnRzIChzZWUgTWVzaCBBcHBsaWNhdGlvbg0KPiArCQkJSGllcmFyY2h5 IHNlY3Rpb24pLg0KPiArDQo+ICsJCQlUaGUgZGVzdGluYXRpb24gcGFyYW1ldGVyIGNvbnRhaW5z IHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzLiBUaGlzDQo+ICsJCQlkZXN0aW5hdGlvbiBtdXN0IGJl IGEgdWludDE2IHRvIGEgdW5pY2FzdCBhZGRyZXNzLCBvciBhIHdlbGwga25vd24NCj4gKwkJCWdy b3VwIGFkZHJlc3MuDQo+ICsNCj4gKwkJCVRoZSBrZXlfaW5kZXggcGFyYW1ldGVyIGRldGVybWlu ZXMgd2hpY2ggYXBwbGljYXRpb24ga2V5IHRvIHVzZSBmb3INCj4gKwkJCWVuY3J5cHRpbmcgdGhl IG1lc3NhZ2UuIFRoZSBrZXlfaW5kZXggbXVzdCBiZSB2YWxpZCBmb3IgdGhhdA0KPiArCQkJZWxl bWVudCwgaS5lLiwgdGhlIGFwcGxpY2F0aW9uIGtleSBtdXN0IGJlIGJvdW5kIHRvIGEgbW9kZWwg b24gdGhpcw0KPiArCQkJZWxlbWVudC4gT3RoZXJ3aXNlLCBvcmcuYmx1ZXoubWVzaC5FcnJvci5O b3RBdXRob3JpemVkIHdpbGwgYmUNCj4gKwkJCXJldHVybmVkLg0KPiArDQo+ICsJCQlUaGUgZGF0 YSBwYXJhbWV0ZXIgaXMgYW4gb3V0Z29pbmcgbWVzc2FnZSB0byBiZSBlbmN5cHRlZCBieSB0aGUN Cj4gKwkJCW1lc2hkIGRhZW1vbiBhbmQgc2VudCBvbi4NCj4gKw0KPiArCQkJUG9zc2libGUgZXJy b3JzOg0KPiArCQkJCW9yZy5ibHVlei5tZXNoLkVycm9yLk5vdEF1dGhvcml6ZWQNCj4gKwkJCQlv cmcuYmx1ZXoubWVzaC5FcnJvci5JbnZhbGlkQXJndW1lbnRzDQo+ICsJCQkJb3JnLmJsdWV6Lm1l c2guRXJyb3IuTm90Rm91bmQNCj4gKw0KPiArCQl2b2lkIFB1Ymxpc2gob2JqZWN0IGVsZW1lbnRf cGF0aCwgdWludDE2IG1vZGVsLCBhcnJheXtieXRlfSBkYXRhKQ0KPiArDQo+ICsJCQlUaGlzIG1l dGhvZCBpcyB1c2VkIHRvIHNlbmQgYSBwdWJsaWNhdGlvbiBvcmlnaW5hdGVkIGJ5IGEgbG9jYWwN Cj4gKwkJCW1vZGVsLiBJZiB0aGUgbW9kZWwgZG9lcyBub3QgZXhpc3QsIG9yIGl0IGhhcyBubyBw dWJsaWNhdGlvbiByZWNvcmQsDQo+ICsJCQl0aGUgbWV0aG9kIHJldHVybnMgb3JnLmJsdWV6Lm1l c2guRXJyb3IuRG9lc05vdEV4aXN0IGVycm9yLg0KPiArDQo+ICsJCQlUaGUgZWxlbWVudF9wYXRo IHBhcmFtZXRlciBpcyB0aGUgb2JqZWN0IHBhdGggb2YgYW4gZWxlbWVudCBmcm9tDQo+ICsJCQlh IGNvbGxlY3Rpb24gb2YgdGhlIGFwcGxpY2F0aW9uIGVsZW1lbnRzIChzZWUgTWVzaCBBcHBsaWNh dGlvbg0KPiArCQkJSGllcmFyY2h5IHNlY3Rpb24pLg0KPiArDQo+ICsJCQlUaGUgbW9kZWwgcGFy YW1ldGVyIGNvbnRhaW5zIGEgbW9kZWwgSUQsIGFzIGRlZmluZWQgYnkgdGhlDQo+ICsJCQlCbHVl dG9vdGggU0lHLg0KPiArDQo+ICsJCQlTaW5jZSBvbmx5IG9uZSBQdWJsaXNoIHJlY29yZCBtYXkg ZXhpc3QgcGVyIGVsZW1lbnQtbW9kZWwsIHRoZQ0KPiArCQkJZGVzdGluYXRpb24gYW5kIGtleV9p bmRleCBhcmUgb2J0YWluZWQgZnJvbSB0aGUgUHVibGljYXRpb24NCj4gKwkJCXJlY29yZCBjYWNo ZWQgYnkgdGhlIGRhZW1vbi4NCj4gKw0KPiArCQkJUG9zc2libGUgZXJyb3JzOg0KPiArCQkJCW9y Zy5ibHVlei5tZXNoLkVycm9yLkRvZXNOb3RFeGlzdA0KPiArCQkJCW9yZy5ibHVlei5tZXNoLkVy cm9yLkludmFsaWRBcmd1bWVudHMNCj4gKw0KPiArCQl2b2lkIFZlbmRvclB1Ymxpc2gob2JqZWN0 IGVsZW1lbnRfcGF0aCwgdWludDE2IHZlbmRvciwgdWludDE2IG1vZGVsX2lkLA0KPiArCQkJCQkJ CQlhcnJheXtieXRlfSBkYXRhKQ0KPiArDQo+ICsJCQlUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIHNl bmQgYSBwdWJsaWNhdGlvbiBvcmlnaW5hdGVkIGJ5IGEgbG9jYWwNCj4gKwkJCXZlbmRvciBtb2Rl bC4gSWYgdGhlIG1vZGVsIGRvZXMgbm90IGV4aXN0LCBvciBpdCBoYXMgbm8gcHVibGljYXRpb24N Cj4gKwkJCXJlY29yZCwgdGhlIG1ldGhvZCByZXR1cm5zIG9yZy5ibHVlei5tZXNoLkVycm9yLkRv ZXNOb3RFeGlzdCBlcnJvci4NCj4gKw0KPiArCQkJVGhlIGVsZW1lbnRfcGF0aCBwYXJhbWV0ZXIg aXMgdGhlIG9iamVjdCBwYXRoIG9mIGFuIGVsZW1lbnQgZnJvbQ0KPiArCQkJYSBjb2xsZWN0aW9u IG9mIHRoZSBhcHBsaWNhdGlvbiBlbGVtZW50cyAoc2VlIE1lc2ggQXBwbGljYXRpb24NCj4gKwkJ CUhpZXJhcmNoeSBzZWN0aW9uKS4NCj4gKw0KPiArCQkJVGhlIHZlbmRvciBwYXJhbWV0ZXIgaXMg YSAxNi1iaXQgQmx1ZXRvb3RoLWFzc2lnbmVkIENvbXBhbnkNCj4gKwkJCUlkZW50aWZpZXIuDQo+ ICsNCj4gKwkJCVRoZSBtb2RlbF9pZCBwYXJhbWV0ZXIgaXMgYSAxNi1iaXQgdmVuZG9yLWFzc2ln bmVkIE1vZGVsIElkZW50aWZpZXIuDQo+ICsNCj4gKwkJCVNpbmNlIG9ubHkgb25lIFB1Ymxpc2gg cmVjb3JkIG1heSBleGlzdCBwZXIgZWxlbWVudC1tb2RlbCwgdGhlDQo+ICsJCQlkZXN0aW5hdGlv biBhbmQga2V5X2luZGV4IGFyZSBvYnRhaW5lZCBmcm9tIHRoZSBQdWJsaWNhdGlvbg0KPiArCQkJ cmVjb3JkIGNhY2hlZCBieSB0aGUgZGFlbW9uLg0KPiArDQo+ICsJCQlQb3NzaWJsZSBlcnJvcnM6 DQo+ICsJCQkJb3JnLmJsdWV6Lm1lc2guRXJyb3IuRG9lc05vdEV4aXN0DQo+ICsJCQkJb3JnLmJs dWV6Lm1lc2guRXJyb3IuSW52YWxpZEFyZ3VtZW50cw0KPiArDQo+ICtQcm9wZXJ0aWVzOg0KPiAr CQlkaWN0IEZlYXR1cmVzIFtyZWFkLW9ubHldDQo+ICsNCj4gKwkJCVRoZSBkaWN0aW9uYXJ5IHRo YXQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgZmVhdHVyZSBzdXBwb3J0Lg0KPiArCQkJVGhl IGZvbGxvd2luZyBrZXlzIGFyZSBkZWZpbmVkOg0KPiArDQo+ICsJCQkJYm9vbGVhbiBGcmllbmQN Cj4gKw0KPiArCQkJCQlJbmRpY2F0ZXMgdGhlIGFiaWxpdHkgdG8gZXN0YWJsaXNoIGEgZnJpZW5k c2hpcCB3aXRoIGENCj4gKwkJCQkJTG93IFBvd2VyIG5vZGUNCj4gKw0KPiArCQkJCWJvb2xlYW4g TG93UG93ZXINCj4gKw0KPiArCQkJCQlJbmRpY2F0ZXMgc3VwcG9ydCBmb3Igb3BlcmF0aW5nIGlu IExvdyBQb3dlciBub2RlIG1vZGUNCj4gKw0KPiArCQkJCWJvb2xlYW4gUHJveHkNCj4gKw0KPiAr CQkJCQlJbmRpY2F0ZXMgc3VwcG9ydCBmb3IgR0FUVCBwcm94eQ0KPiArDQo+ICsJCQkJYm9vbGVh biBSZWxheSAtIGluZGljYXRlcyBzdXBwb3J0IGZvciByZWxheWluZyBtZXNzYWdlcw0KPiArDQo+ ICsJCQlJZiB0aGUga2V5IGlzIGFic2VudCBmcm9tIHRoZSBkaWN0aW9uYXJ5LCB0aGUgZmVhdHVy ZSBpcyBub3QNCj4gKwkJCXN1cHBvcnRlZC4gT3RoZXJ3aXNlLCB0cnVlIG1lYW5zIHRoYXQgdGhl IGZlYXR1cmUgaXMgZW5hYmxlZCBhbmQNCj4gKwkJCWZhbHNlIG1lYW5zIHRoYXQgdGhlIGZlYXR1 cmUgaXMgZGlzYWJsZWQuDQo+ICsNCj4gKwkJYm9vbGVhbiBCZWFjb24gW3JlYWQtb25seV0NCj4g Kw0KPiArCQkJVGhpcyBwcm9wZXJ0eSBpbmRpY2F0ZXMgd2hldGhlciB0aGUgcGVyaW9kaWMgYmVh Y29uaW5nIGlzIGVuYWJsZWQNCj4gKwkJCSh0cnVlKSBvciBkaXNhYmxlZCAoZmFsc2UpLg0KPiAr DQo+ICsJCXVpbnQzMiBTZWNvbmRzU2luY2VMYXN0SGVhcmQgW3JlYWQtb25seV0NCj4gKw0KPiAr CQkJVGhpcyBwcm9wZXJ0eSBtYXkgYmUgcmVhZCBhdCBhbnkgdGltZSB0byBkZXRlcm1pbmUgdGhl IG51bWJlciBvZg0KPiArCQkJc2Vjb25kcyBzaW5jZSBtZXNoIG5ldHdvcmsgbGF5ZXIgdHJhZmZp YyB3YXMgbGFzdCBkZXRlY3RlZCBvbiB0aGlzDQo+ICsJCQlub2RlJ3MgbmV0d29yay4NCj4gKw0K PiArDQo+ICtNZXNoIEFwcGxpY2F0aW9uIEhpZXJhcmNoeQ0KPiArPT09PT09PT09PT09PT09PT09 PT09PT09PT0NCj4gK1NlcnZpY2UJCXVuaXF1ZSBuYW1lDQo+ICtJbnRlcmZhY2UJCW9yZy5ibHVl ei5tZXNoLkFwcGxpY2F0aW9uMQ0KPiArT2JqZWN0IHBhdGgJPGFwcF9kZWZpbmVkX3Jvb3Q+DQo+ ICsNCj4gK0FuIGFwcGxpY2F0aW9uIGlzIGEgY29sbGVjdGlvbiBvZiBlbGVtZW50cyB0aGF0IGhv c3QgU0lHIGRlZmluZWQgYW5kIHZlbmRvcg0KPiArc3BlY2lmaWMgbW9kZWxzLiBJdCBpcyBleHBl Y3RlZCB0aGF0IGFuIGFwcGxpY2F0aW9uIGltcGxlbWVudHMNCj4gK29yZy5mcmVlZGVza3RvcC5E QnVzLk9iamVjdE1hbmFnZXIgaW50ZXJmYWNlLg0KPiArDQo+ICtBbiBleGFtcGxlIG1lc2ggYXBw bGljYXRpb24gaGllcmFyY2h5IG1heSBsb29rIGxpa2UgdGhpczoNCj4gKw0KPiArCQktPiAvY29t L2V4YW1wbGUNCj4gKwkJCXwgICAtIG9yZy5mcmVlZGVza3RvcC5EQnVzLk9iamVjdE1hbmFnZXIN Cj4gKwkJCXwgICAtIG9yZy5ibHVlei5tZXNoLkFwcGxpY2F0aW9uMQ0KPiArCQkJfCAgIC0gb3Jn LmJsdWV6Lm1lc2guQXR0ZW50aW9uMSAob3B0aW9uYWwpDQo+ICsJCQl8DQo+ICsJCQktPiAvY29t L2V4YW1wbGUvYWdlbnQNCj4gKwkJCXwgfCAgIC0gb3JnLmJsdWV6Lm1lc2guUHJvdmlzaW9uQWdl bnQxDQo+ICsJCQl8DQo+ICsJCQktPiAvY29tL2V4YW1wbGUvZWxlMDANCj4gKwkJCXwgfCAgIC0g b3JnLmJsdWV6Lm1lc2guRWxlbWVudDENCj4gKwkJCS0+IC9jb20vZXhhbXBsZS9lbGUwMQ0KPiAr CQkJfCB8ICAgLSBvcmcuYmx1ZXoubWVzaC5FbGVtZW50MQ0KPiArCQkJLi4uDQo+ICsJCQktPiAv Y29tL2V4YW1wbGUvZWxleHgNCj4gKwkJCXwgfCAgIC0gb3JnLmJsdWV6Lm1lc2guRWxlbWVudDEN Cj4gKw0KPiArTWV0aG9kczoNCj4gKwkJdm9pZCBKb2luQ29tcGxldGUodWludDY0IHRva2VuKQ0K PiArDQo+ICsJCQlUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgbm9kZSBwcm92aXNpb25p bmcgaW5pdGlhdGVkDQo+ICsJCQlieSBhIEpvaW4oKSBtZXRob2QgY2FsbCBzdWNjZXNzZnVsbHkg Y29tcGxldGVkLg0KPiArDQo+ICsJCQlUaGUgdG9rZW4gcGFyYW1ldGVyIHNlcnZlcyBhcyBhIHVu aXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBwYXJ0aWN1bGFyDQo+ICsJCQlub2RlLiBUaGUgdG9rZW4g bXVzdCBiZSBwcmVzZXJ2ZWQgYnkgdGhlIGFwcGxpY2F0aW9uIGluIG9yZGVyIHRvDQo+ICsJCQlh dXRoZW50aWNhdGUgaXRzZWxmIHRvIHRoZSBtZXNoIGRhZW1vbiBhbmQgYXR0YWNoIHRvIHRoZSBu ZXR3b3JrDQo+ICsJCQlhcyBhIG1lc2ggbm9kZSBieSBjYWxsaW5nIEF0dGFjaCgpIG1ldGhvZCBv ciBwZXJtYW5lbnRseSByZW1vdmUgdGhlDQo+ICsJCQlpZGVudGl0eSBvZiB0aGUgbWVzaCBub2Rl IGJ5IGNhbGxpbmcgTGVhdmUoKSBtZXRob2QuDQo+ICsNCj4gKwkJdm9pZCBKb2luRmFpbGVkKHN0 cmluZyByZWFzb24pDQo+ICsNCj4gKwkJCVRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSBu b2RlIHByb3Zpc2lvbmluZyBpbml0aWF0ZWQNCj4gKwkJCWJ5IEpvaW4oKSBoYXMgZmFpbGVkLg0K PiArDQo+ICsJCQlUaGUgcmVhc29uIHBhcmFtZXRlciBpZGVudGlmaWVzIHRoZSByZWFzb24gZm9y IHByb3Zpc2lvbmluZyBmYWlsdXJlLg0KPiArCQkJVGhlIGRlZmluZWQgdmFsdWVzIGFyZTogInRp bWVvdXQiLCAiYmFkLXBkdSIsICJjb25maXJtYXRpb24tZmFpbGVkIiwNCj4gKwkJCSJvdXQtb2Yt cmVzb3VyY2VzIiwgImRlY3J5cHRpb24tZXJyb3IiLCAidW5leHBlY3RlZC1lcnJvciIsDQo+ICsJ CQkiY2Fubm90LWFzc2lnbi1hZGRyZXNzZXMiLg0KPiArDQo+ICtQcm9wZXJ0aWVzOg0KPiArCQl1 aW50MTYgQ29tcGFueUlEIFtyZWFkLW9ubHldDQo+ICsNCj4gKwkJCUEgMTYtYml0IEJsdWV0b290 aC1hc3NpZ25lZCBDb21wYW55IElkZW50aWZpZXIgb2YgdGhlIHZlbmRvciBhcw0KPiArCQkJZGVm aW5lZCBieSBCbHVldG9vdGggU0lHDQo+ICsNCj4gKwkJdWludDE2IFByb2R1Y3RJRCBbcmVhZC1v bmx5XQ0KPiArDQo+ICsJCQlBIDE2LWJpdCB2ZW5kb3ItYXNzaWduZWQgcHJvZHVjdCBpZGVudGlm aWVyDQo+ICsNCj4gKwkJdWludDE2IFZlcnNpb25JRCBbcmVhZC1vbmx5XQ0KPiArDQo+ICsJCQlB IDE2LWJpdCB2ZW5kb3ItYXNzaWduZWQgcHJvZHVjdCB2ZXJzaW9uIGlkZW50aWZpZXINCj4gKw0K PiArDQo+ICtNZXNoIEVsZW1lbnQgSGllcmFyY2h5DQo+ICs9PT09PT09PT09PT09PT09PT09PT09 DQo+ICtTZXJ2aWNlCQl1bmlxdWUgbmFtZQ0KPiArSW50ZXJmYWNlCW9yZy5ibHVlei5tZXNoLkVs ZW1lbnQxDQo+ICtPYmplY3QgcGF0aAk8YXBwX2RlZmluZWRfZWxlbWVudF9wYXRoPg0KPiArDQo+ ICtNZXRob2RzOg0KPiArCQl2b2lkIE1lc3NhZ2VSZWNlaXZlZCh1aW50MTYgc291cmNlLCB1aW50 MTYga2V5X2luZGV4LA0KPiArCQkJCQkJCQlib29sZWFuIHN1YnNjcmlwdGlvbiwgYXJyYXl7Ynl0 ZX0gZGF0YSkNCj4gKw0KPiArCQkJVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IG1lc2hkIGRhZW1v biB3aGVuIGEgbWVzc2FnZSBhcnJpdmVzDQo+ICsJCQlhZGRyZXNzZWQgdG8gdGhlIGFwcGxpY2F0 aW9uLg0KPiArDQo+ICsJCQlUaGUgc291cmNlIHBhcmFtZXRlciBpcyB1bmljYXN0IGFkZHJlc3Mg b2YgdGhlIHJlbW90ZSBub2RlLWVsZW1lbnQNCj4gKwkJCXRoYXQgc2VudCB0aGUgbWVzc2FnZS4N Cj4gKw0KPiArCQkJVGhlIGtleV9pbmRleCBwYXJhbWV0ZXIgaW5kaWNhdGVzIHdoaWNoIGFwcGxp Y2F0aW9uIGtleSBoYXMgYmVlbg0KPiArCQkJdXNlZCB0byBkZWNvZGUgdGhlIGluY29taW5nIG1l c3NhZ2UuIFRoZSBzYW1lIGtleV9pbmRleCBzaG91bGQgYmUNCj4gKwkJCXVzZWQgYnkgdGhlIGFw cGxpY2F0aW9uIHdoZW4gc2VuZGluZyBhIHJlc3BvbnNlIHRvIHRoaXMgbWVzc2FnZQ0KPiArCQkJ KGluIGNhc2UgYSByZXNwb25zZSBpcyBleHBlY3RlZCkuDQo+ICsNCj4gKwkJCVRoZSBzdWJzY3Jp cHRpb24gcGFyYW1ldGVyIGlzIGEgYm9vbGVhbiB0aGF0IGlzIHNldCB0byB0cnVlIGlmDQo+ICsJ CQl0aGUgbWVzc2FnZSBpcyByZWNlaXZlZCBhcyBhIHBhcnQgb2YgdGhlIHN1YnNjcmlwdGlvbiAo aS5lLiwgdGhlDQo+ICsJCQlkZXN0aW5hdGlvbiBpcyBlaXRoZXIgYSB3ZWxsIGtub3duIGdyb3Vw IGFkZHJlc3Mgb3IgYSB2aXJ0dWFsDQo+ICsJCQlsYWJlbC4NCj4gKw0KPiArCQkJVGhlIGRhdGEg cGFyYW1ldGVyIGlzIHRoZSBpbmNvbWluZyBtZXNzYWdlLg0KPiArDQo+ICsJCXZvaWQgVXBkYXRl TW9kZWxDb25maWd1cmF0aW9uKHVpbnQxNiBtb2RlbF9pZCwgZGljdCBjb25maWcpDQo+ICsNCj4g KwkJCVRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSBtZXNoZCBkYWVtb24gd2hlbiBhIG1vZGVsJ3Mg Y29uZmlndXJhdGlvbg0KPiArCQkJaXMgdXBkYXRlZC4NCj4gKw0KPiArCQkJVGhlIG1vZGVsX2lk IHBhcmFtZXRlciBjb250YWlucyBCVCBTSUcgTW9kZWwgSWRlbnRpZmllciBvciwgaWYNCj4gKwkJ CVZlbmRvciBrZXkgaXMgcHJlc2VudCBpbiBjb25maWcgZGljdGlvbmFyeSwgYSAxNi1iaXQNCj4g KwkJCXZlbmRvci1hc3NpZ25lZCBNb2RlbCBJZGVudGlmaWVyLg0KPiArDQo+ICsJCQlUaGUgY29u ZmlnIHBhcmFtZXRlciBpcyBhIGRpY3Rpb25hcnkgd2l0aCB0aGUgZm9sbG93aW5nIGtleXMNCj4g KwkJCWRlZmluZWQ6DQo+ICsNCj4gKwkJCQlhcnJheXt1aW50MTZ9IEJpbmRpbmdzDQo+ICsNCj4g KwkJCQkJSW5kaWNlcyBvZiBhcHBsaWNhdGlvbiBrZXlzIGJvdW5kIHRvIHRoZSBtb2RlbA0KPiAr DQo+ICsJCQkJdWludDMyIFB1YmxpY2F0aW9uUGVyaW9kDQo+ICsNCj4gKwkJCQkJTW9kZWwgcHVi bGljYXRpb24gcGVyaW9kIGluIG1pbGxpc2Vjb25kcw0KPiArDQo+ICsJCQkJdWludDE2IFZlbmRv cg0KPiArDQo+ICsJCQkJCUEgMTYtYml0IEJsdWV0b290aC1hc3NpZ25lZCBDb21wYW55IElkZW50 aWZpZXIgb2YgdGhlDQo+ICsJCQkJCXZlbmRvciBhcyBkZWZpbmVkIGJ5IEJsdWV0b290aCBTSUcN Cj4gKw0KPiArUHJvcGVydGllczoNCj4gKwkJCXVpbnQ4IEluZGV4IFtyZWFkLW9ubHldDQo+ICsN Cj4gKwkJCQlFbGVtZW50IGluZGV4LiBJdCBpcyByZXF1aXJlZCB0aGF0IHRoZSBhcHBsaWNhdGlv biBmb2xsb3dzDQo+ICsJCQkJc2VxdWVudGlhbCBudW1iZXJpbmcgc2NoZW1lIGZvciB0aGUgZWxl bWVudHMsIHN0YXJ0aW5nIHdpdGggMC4NCj4gKw0KPiArCQkJYXJyYXl7dWludDE2fSBNb2RlbHMg W3JlYWQtb25seV0NCj4gKw0KPiArCQkJCUFuIGFycmF5IG9mIFNJRyBNb2RlbCBJZGVudGlmaWVy cy4gVGhlIGFycmF5IG1heSBiZSBlbXB0eS4NCj4gKw0KPiArCQkJYXJyYXl7KHVpbnQxNiwgdWlu dDE2KX0gVmVuZG9yTW9kZWxzIFtyZWFkLW9ubHldDQo+ICsNCj4gKwkJCQlBbiBhcnJheSBvZiBw YWlycyAodmVuZG9yLCBtb2RlbCBJRCk6DQo+ICsNCj4gKwkJCQkJdmVuZG9yIGlzIGEgMTYtYml0 IEJsdWV0b290aC1hc3NpZ25lZCBDb21wYW55IElkZW50aWZpZXINCj4gKwkJCQkJb2YgdGhlIHZl bmRvciBhcyBkZWZpbmVkIGJ5IEJsdWV0b290aCBTSUcNCj4gKw0KPiArCQkJCQltb2RlbCBJRCBp cyBhIDE2LWJpdCB2ZW5kb3ItYXNzaWduZWQgTW9kZWwgSWRlbnRpZmllcg0KPiArDQo+ICsJCQkJ VGhlIGFycmF5IG1heSBiZSBlbXB0eS4NCj4gKw0KPiArCQkJdWludDE2IExvY2F0aW9uIFtyZWFk LW9ubHksIG9wdGlvbmFsXQ0KPiArDQo+ICsJCQkJTG9jYXRpb24gZGVzY3JpcHRvciBhcyBkZWZp bmVkIGluIHRoZSBHQVRUIEJsdWV0b290aCBOYW1lc3BhY2UNCj4gKwkJCQlEZXNjcmlwdG9ycyBz ZWN0aW9uIG9mIHRoZSBCbHVldG9vdGggU0lHIEFzc2lnbmVkIE51bWJlcnMNCj4gKw0KPiArDQo+ ICtNZXNoIEF0dGVudGlvbiBIaWVyYXJjaHkNCj4gKz09PT09PT09PT09PT09PT09PT09PT09PQ0K PiArU2VydmljZQkJdW5pcXVlIG5hbWUNCj4gK0ludGVyZmFjZQlvcmcuYmx1ZXoubWVzaC5BdHRl bnRpb24xDQo+ICtPYmplY3QgcGF0aAlmcmVlbHkgZGVmaW5hYmxlDQo+ICsNCj4gK1RoaXMgaXMg YW4gb3B0aW9uYWwgaW50ZXJmYWNlIHRoYXQgaW1wbGVtZW50cyBoZWFsdGggYXR0ZW50aW9uIHRp bWVyLg0KPiArDQo+ICtNZXRob2RzOg0KPiArCQl2b2lkIFNldFRpbWVyKHVpbnQ4IGVsZW1lbnRf aW5kZXgsICB1aW50MTYgdGltZSkNCj4gKw0KPiArCQkJVGhlIGVsZW1lbnRfaW5kZXggcGFyYW1l dGVyIGlzIHRoZSBlbGVtZW50J3MgaW5kZXggd2l0aGluIHRoZSBub2RlDQo+ICsJCQl3aGVyZSB0 aGUgaGVhbHRoIHNlcnZlciBtb2RlbCBpcyBob3N0ZWQuDQo+ICsNCj4gKwkJCVRoZSB0aW1lIHBh cmFtZXRlciBpbmRpY2F0ZXMgaG93IG1hbnkgc2Vjb25kcyB0aGUgYXR0ZW50aW9uIHN0YXRlDQo+ ICsJCQlzaGFsbCBiZSBvbi4NCj4gKw0KPiArCQkJUG9zc2libGVFcnJvcnM6DQo+ICsJCQkJb3Jn LmJsdWV6Lm1lc2guRXJyb3IuTm90U3VwcG9ydGVkDQo+ICsNCj4gKwkJdWludDE2IEdldFRpbWVy KHVpbnQxNiBlbGVtZW50KQ0KPiArDQo+ICsJCQlUaGUgZWxlbWVudCBwYXJhbWV0ZXIgaXMgdGhl IHVuaWNhc3QgYWRkcmVzcyB3aXRoaW4gdGhlIG5vZGUNCj4gKwkJCXdoZXJlIHRoZSBoZWFsdGgg c2VydmVyIG1vZGVsIGlzIGhvc3RlZC4NCj4gKw0KPiArCQkJUmV0dXJucyB0aGUgbnVtYmVyIG9m IHNlY29uZHMgZm9yIGhvdyBsb25nIHRoZSBhdHRlbnRpb24gYWN0aW9uDQo+ICsJCQlyZW1haW5z IHN0YXlpbmcgb24uDQo+ICsNCj4gKwkJCVBvc3NpYmxlRXJyb3JzOg0KPiArCQkJCW9yZy5ibHVl ei5tZXNoLkVycm9yLk5vdFN1cHBvcnRlZA0KPiArDQo+ICsNCj4gK1Byb3Zpc2lvbmluZyBBZ2Vu dCBIaWVyYXJjaHkNCj4gKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCj4gK1NlcnZpY2UJ CXVuaXF1ZSBuYW1lDQo+ICtJbnRlcmZhY2UJb3JnLmJsdWV6Lm1lc2guUHJvdmlzaW9uQWdlbnQN Cj4gK09iamVjdCBwYXRoCWZyZWVseSBkZWZpbmFibGUNCj4gKw0KPiArTWV0aG9kczoNCj4gKwkJ YXJyYXl7Ynl0ZX0gUHJpdmF0ZUtleSgpDQo+ICsNCj4gKwkJCVRoaXMgbWV0aG9kIGlzIGNhbGxl ZCBkdXJpbmcgcHJvdmlzaW9uaW5nIGlmIHRoZSBQcm92aXNpb25lcg0KPiArCQkJaGFzIHJlcXVl c3RlZCBPdXQtT2YtQmFuZCBFQ0Mga2V5IGV4Y2hhbmdlLiBUaGUgUHJpdmF0ZSBrZXkNCj4gKwkJ CWlzIHJldHVybmVkIHRvIHRoZSBEYWVtb24sIGFuZCB0aGUgUHVibGljIEtleSBpcyBkZWxpdmVy ZWQgdG8NCj4gKwkJCXRoZSByZW1vdGUgUHJvdmlzaW9uZXIgdXNpbmcgYSBtZXRob2QgdGhhdCBk b2VzIG5vdCBpbnZvbHZlDQo+ICsJCQl0aGUgQmx1ZXRvb3RoIE1lc2ggc3lzdGVtLiBUaGUgUHJp dmF0ZSBLZXkgcmV0dXJuZWQgbXVzdCBiZQ0KPiArCQkJMzIgb2N0ZXRzIGluIHNpemUsIG9yIHRo ZSBQcm92aXNpb25pbmcgcHJvY2VkdXJlIHdpbGwgZmFpbA0KPiArCQkJYW5kIGJlIGNhbmNlbGVk Lg0KPiArDQo+ICsJCQlUaGlzIGZ1bmN0aW9uIHdpbGwgb25seSBiZSBjYWxsZWQgaWYgdGhlIFBy b3Zpc2lvbmVyIGhhcw0KPiArCQkJcmVxdWVzdGVkIHByZS1kZXRlcm1pbmVkIGtleXMgdG8gYmUg ZXhjaGFuZ2VkIE91dC1vZi1CYW5kLA0KPiArCQkJYW5kIHRoZSBsb2NhbCByb2xlIGlzIFVucHJv dmlzaW9uZWQgZGV2aWNlLg0KPiArDQo+ICsJCWFycmF5e2J5dGV9IFB1YmxpY0tleSgpDQo+ICsN Cj4gKwkJCVRoaXMgbWV0aG9kIGlzIGNhbGxlZCBkdXJpbmcgcHJvdmlzaW9uaW5nIGlmIHRoZSBs b2NhbCBkZXZpY2UNCj4gKwkJCWlzIHRoZSBQcm92aXNpb25lciwgYW5kIGlzIHJlcXVlc3RuZyBP dXQtT2YtQmFuZCBFQ0Mga2V5DQo+ICsJCQlleGNoYW5nZS4gVGhlIFB1YmxpYyBrZXkgaXMgcmV0 dXJuZWQgdG8gdGhlIERhZW1vbg0KPiArCQkJdGhhdCBpcyB0aGUgbWF0Y2hlZCBwYWlyIG9mIHRo ZSBQcml2YXRlIGtleSBvZiB0aGUgcmVtb3RlDQo+ICsJCQlkZXZpY2UuIFRoZSBQdWJsaWMgS2V5 IHJldHVybmVkIG11c3QgYmUgNjQgb2N0ZXRzIGluDQo+ICsJCQlzaXplLCBvciB0aGUgUHJvdmlz aW9uaW5nIHByb2NlZHVyZSB3aWxsIGZhaWwgYW5kIGJlIGNhbmNlbGVkLg0KPiArDQo+ICsJCQlU aGlzIGZ1bmN0aW9uIHdpbGwgb25seSBiZSBjYWxsZWQgaWYgdGhlIFByb3Zpc2lvbmVyIGhhcw0K PiArCQkJcmVxdWVzdGVkIHByZS1kZXRlcm1pbmVkIGtleXMgdG8gYmUgZXhjaGFuZ2VkIE91dC1v Zi1CYW5kLA0KPiArCQkJYW5kIHRoZSBsb2NhbCByb2xlIGlzIFByb3Zpc2lvbmVyLg0KPiArDQo+ ICsJCXZvaWQgRGlzcGxheVN0cmluZyhzdHJpbmcgZGlzcGxheSkNCj4gKwkJCVRoaXMgbWV0aG9k IGlzIGNhbGxlZCB3aGVuIHRoZSBEYWVtb24gaGFzIHNvbWV0aGluZyBpbXBvcnRhbnQNCj4gKwkJ CWZvciB0aGUgQWdlbnQgdG8gRGlzcGxheSwgYnV0IGRvZXMgbm90IHJlcXVpcmUgYW55IGFkZGl0 aW9uYWwNCj4gKwkJCWlucHV0IGxvY2FsbHkuIEZvciBpbnN0YW5jZTogIkVudGVyICJBQkNERSIg b24gcmVtb3RlIGRldmljZSIuDQo+ICsNCj4gKwkJdm9pZCBEaXNwbGF5TnVtZXJpYyh1aW50OCB0 eXBlLCB1aW50MzIgbnVtYmVyKQ0KPiArDQo+ICsJCQlUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hl biB0aGUgRGFlbW9uIGhhcyBzb21ldGhpbmcgaW1wb3J0YW50DQo+ICsJCQlmb3IgdGhlIEFnZW50 IHRvIERpc3BsYXksIGJ1dCBkb2VzIG5vdCByZXF1aXJlIGFueSBhZGRpdGlvbmFsDQo+ICsJCQlp bnB1dCBsb2NhbGx5LiBGb3IgaW5zdGFuY2U6ICJFbnRlciAxNDkyNjQgb24gcmVtb3RlIGRldmlj ZSIuDQo+ICsNCj4gKwkJCVRoZSB0eXBlIHBhcmFtZXRlciBpbmRpY2F0ZXMgdGhlIGRpc3BsYXkg bWV0aG9kLiBBbiBlbnVtZXJhdGlvbg0KPiArCQkJb2YgIkJsaW5rIiwgIkJlZXAiLCAiVmlicmF0 ZSIsIG9yICJPdXROdW1lcmljIi4NCj4gKw0KPiArCQkJVGhlIG51bWJlciBwYXJhbWV0ZXIgaXMg dGhlIHNwZWNpZmljIHZhbHVlIHJlcHJlc2VudGVkIGJ5DQo+ICsJCQl0aGUgUHJvbXB0Lg0KPiAr DQo+ICsJCXVpbnQzMiBQcm9tcHROdW1lcmljKHVpbnQ4IHR5cGUpDQo+ICsNCj4gKwkJCVRoaXMg bWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSBEYWVtb24gaGFzIHJlcXVpcmVzIHRoZSB1c2VyIHRv DQo+ICsJCQllbnRlciBhIDEtOSBkaWdpdCBkZWNpbWFsIHZhbHVlLg0KPiArDQo+ICsJCQlUaGUg dHlwZSBwYXJhbWV0ZXIgaW5kaWNhdGVzIHRoZSBpbnB1dCBtZXRob2QuIEFuIGVudW1lcmF0aW9u DQo+ICsJCQlvZiAiUHVzaCIsICJUd2lzdCIsIG9yICJJbk51bWVyaWMiLg0KPiArDQo+ICsJCQlU aGlzIGFnZW50IHNob3VsZCBwcm9tcHQgdGhlIHVzZXIgZm9yIHNwZWNpZmljIGlucHV0LiBGb3Ig aW5zdGFuY2U6DQo+ICsJCQkiRW50ZXIgdmFsdWUgYmVpbmcgZGlzcGxheWVkIGJ5IHJlbW90ZSBk ZXZpY2UiLg0KPiArDQo+ICsJCWFycmF5e2J5dGV9IFByb21wdFN0YXRpYyh1aW50OCB0eXBlKQ0K PiArDQo+ICsJCQlUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgRGFlbW9uIHJlcXVpcmVz IGEgMTYgb2N0ZXQNCj4gKwkJCWJ5dGUgYXJyYXksIGFzIGFuIE91dC1vZi1CYW5kIGF1dGhlbnRp Y2F0aW9uLg0KPiArDQo+ICsJCQlUaGUgdHlwZSBwYXJhbWV0ZXIgaW5kaWNhdGVzIHRoZSBpbnB1 dCBtZXRob2QuIEFuIGVudW1lcmF0aW9uDQo+ICsJCQlvZiAiU3RhdGljIiwgb3IgIkluQWxwaGEi Lg0KPiArDQo+ICsJCQlUaGUgU3RhdGljIGRhdGEgcmV0dXJuZWQgbXVzdCBiZSAxNiBvY3RldHMg aW4gc2l6ZSwgb3IgdGhlDQo+ICsJCQlQcm92aXNpb25pbmcgcHJvY2VkdXJlIHdpbGwgZmFpbCBh bmQgYmUgY2FuY2VsZWQuIElmIGlucHV0IGlzDQo+ICsJCQlhbiBJbkFscGhhIFN0cmluZywgdGhl IHByaW50YWJsZSBjaGFyYWN0b3JzIHNob3VsZCBiZSBsZWZ0DQo+ICsJCQlqdXN0aWZpZWQsIHdp dGggdHJhaWxpbmcgMHgwMCBvY3RldHMgZmlsbGluZyB0aGUgcmVtYWluaW5nIGJ5dGVzLg0KPiAr DQo+ICsJCXZvaWQgQ2FuY2VsKCkNCj4gKw0KPiArCQkJVGhpcyBtZXRob2QgZ2V0cyBjYWxsZWQg YnkgdGhlIGRhZW1vbiB0byBjYW5jZWwgYW55IGV4aXN0aW5nDQo+ICsJCQlBZ2VudCBSZXF1ZXN0 cy4gV2hlbiBjYWxsZWQsIGFueSBwZW5kaW5nIHVzZXIgaW5wdXQgc2hvdWxkIGJlDQo+ICsJCQlj YW5jZWxlZC4NCj4gKw0KPiArDQo+ICtQcm9wZXJ0aWVzOg0KPiArCQkJYXJyYXl7c3RyaW5nfSBD YXBhYmlsaXRpZXMgW3JlYWQtb25seV0NCj4gKw0KPiArCQkJCUFuIGFycmF5IG9mIHN0cmluZ3Mg d2l0aCB0aGUgZm9sbG93aW5nIGFsbG93ZWQgdmFsdWVzOg0KPiArCQkJCQkiYmxpbmsiLCAiYmVl cCIsICJ2aWJyYXRlIiwgIm91dC1udW1lcmljIiwgIm91dC1hbHBoYSIsDQo+ICsJCQkJCSJwdXNo IiwgInR3aXN0IiwgImluLW51bWVyaWMiLCAiaW4tYWxwaGEiLCAicHVibGljLW9vYiIsDQo+ICsJ CQkJCSJzdGF0aWMtb29iIi4NCj4gKw0KPiArDQo+ICsJCQlhcnJheXtzdHJpbmd9IE91dE9mQmFu ZEluZm8gW3JlYWQtb25seSwgb3B0aW9uYWxdDQo+ICsNCj4gKwkJCQlJbmRpY2F0ZXMgYXZhaWxh YmlsaXR5IG9mIE9PQiBkYXRhLg0KPiArCQkJCUFuIGFycmF5IG9mIHN0cmluZ3Mgd2l0aCB0aGUg Zm9sbG93aW5nIGFsbG93ZWQgdmFsdWVzOg0KPiArCQkJCQkib3RoZXIiLCAidXJpIiwgIm1hY2hp bmUtY29kZS0yZCIsICJiYXItY29kZSIsICJuZmMiLA0KPiArCQkJCQkibnVtYmVyIiwgInN0cmlu ZyIsICJvbi1ib3giLCAiaW4tYm94IiwgIm9uLXBhcGVyIiwNCj4gKwkJCQkJImluLW1hbnVhbCIs ICJvbi1kZXZpY2UiDQo+ICsNCj4gKwkJCXN0cmluZyBVUkkgW3JlYWQtb25seSwgb3B0aW9uYWxd DQo+ICsNCj4gKwkJCQlVbmlmb3JtIFJlc291cmNlIElkZW50aWZpZXIgcG9pbnRzIHRvIG91dC1v Zi1iYW5kIChPT0IpDQo+ICsJCQkJaW5mb3JtYXRpb24gKGUuZy4sIGEgcHVibGljIGtleSkNCj4g Kw0KPiArDQo+ICtNZXNoIFByb3Zpc2lvbmVyIEhpZXJhcmNoeQ0KPiArPT09PT09PT09PT09PT09 PT09PT09PT09PT0NCj4gKzxUQkQ+