From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: Re: [PATCH v6 1/4] xen: introduce SYMBOL Date: Mon, 21 Jan 2019 15:41:55 -0800 (PST) Message-ID: References: <5C3D97FE020000780020D9F3@prv1-mh.provo.novell.com> <5C3F051B020000780020E304@prv1-mh.provo.novell.com> <529ED2F90200004D00417A66@prv1-mh.provo.novell.com> <5C406AEA020000780020E9FA@prv1-mh.provo.novell.com> <76A2DEED0200005600417A66@prv1-mh.provo.novell.com> <5C41A256020000780020EF25@prv1-mh.provo.novell.com> <5C3D97FE020000780020D9F3@prv1-mh.provo.novell.com> <5C3F051B020000780020E304@prv1-mh.provo.novell.com> <529ED2F90200004D00417A66@prv1-mh.provo.novell.com> <5C406AEA020000780020E9FA@prv1-mh.provo.novell.com> <76A2DEED0200005600417A66@prv1-mh.provo.novell.com> <5C41A256020000780020EF25@prv1-mh.provo.novell.com> <5A96F2FD0200008D00417A66@prv1-mh.provo.novell.com> <5C4595E6020000780020F93D@prv1-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gljCX-000880-UB for xen-devel@lists.xenproject.org; Mon, 21 Jan 2019 23:41:57 +0000 In-Reply-To: <5C4595E6020000780020F93D@prv1-mh.provo.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Jan Beulich Cc: Juergen Gross , Stefano Stabellini , Stefano Stabellini , Wei Liu , Andrew Cooper , Julien Grall , Julien Grall , Stewart Hildebrand , xen-devel List-Id: xen-devel@lists.xenproject.org T24gTW9uLCAyMSBKYW4gMjAxOSwgSmFuIEJldWxpY2ggd3JvdGU6Cj4gPj4+IE9uIDE5LjAxLjE5 IGF0IDAwOjA1LCA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4gd3JvdGU6Cj4gPiBPbiBGcmksIDE4 IEphbiAyMDE5LCBKYW4gQmV1bGljaCB3cm90ZToKPiA+PiA+Pj4gT24gMTguMDEuMTkgYXQgMDI6 MjQsIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPiB3cm90ZToKPiA+PiA+IE9uIFRodSwgMTcgSmFu IDIwMTksIEphbiBCZXVsaWNoIHdyb3RlOgo+ID4+ID4+ID4+PiBPbiAxNy4wMS4xOSBhdCAwMToz NywgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+IHdyb3RlOgo+ID4+ID4+ID4gT24gV2VkLCAxNiBK YW4gMjAxOSwgSmFuIEJldWxpY2ggd3JvdGU6Cj4gPj4gPj4gPj4gSW4gYW55IGV2ZW50IC0gc2lu Y2UgaW50ZXJtZWRpYXRlIHZhcmlhYmxlcyBtZXJlbHkgaGlkZSB0aGUKPiA+PiA+PiA+PiBjYXN0 aW5nIGZyb20gdGhlIGNvbXBpbGVyLCBidXQgdGhleSBkb24ndCByZW1vdmUgdGhlIGNhc3RzLCB0 aGUKPiA+PiA+PiA+PiBzb2x1dGlvbiBpbnZvbHZpbmcgY2FzdHMgaXMgYmV0dGVyIGltbywgZm9y IGluY3VycmluZyBsZXNzIG92ZXJoZWFkLgo+ID4+ID4+ID4gCj4gPj4gPj4gPiBUaGlzIGlzIHdo ZXJlIEkgY29tcGxldGVseSBkaXNhZ3JlZS4gVGhlIGludGVybWVkaWF0ZSB2YXJpYWJsZXMgYXJl IG5vdAo+ID4+ID4+ID4gaGlkaW5nIGNhc3RzIGZyb20gdGhlIGNvbXBpbGVyLiBUaGVyZSB3ZXJl IG5ldmVyIGFueSBwb2ludGVycyBpbiB0aGlzCj4gPj4gPj4gPiBjYXNlLiAgVGhlIGxpbmtlciBj cmVhdGVzICJzeW1ib2xzIiwgbm90IHBvaW50ZXJzLCBjb21wbGV0ZWx5IGludmlzaWJsZQo+ID4+ ID4+ID4gZnJvbSBDIGxhbmQuIEFzc2VtYmx5IHVzZXMgdGhlc2Ugc3ltYm9scyB0byBpbml0aWFs aXplIHZhcmlhYmxlcy4gV2UKPiA+PiA+PiA+IGV4cG9zZSB0aGVzZSBhc3NlbWJseSB2YXJpYWJs ZXMgYXMgaW50ZWdlciB0byBDIGxhbmRzLiBMRCBzY3JpcHRzIGFuZAo+ID4+ID4+ID4gYXNzZW1i bHkgaGF2ZSB0aGVpciBvd24gdGVybWlub2xvZ3kgYW5kIHJ1bGVzOiBuZWl0aGVyICJfc3RhcnQi IG5vcgo+ID4+ID4+ID4gInN0YXJ0IiBhcmUgcG9pbnRlcnMgYXQgYW55IHBvaW50IGluIHRpbWUu IFRoZSBvcGVyYXRpb25zIGRvbmUgaW4gdmFyLlMKPiA+PiA+PiA+IGlzIG5vdCBhIGNhc3QuIFRo ZSBDIHNwZWMgaXMgaGFwcHksIHRoZSBjb21waWxlciBpcyBoYXBweSwgTUlTUkEtQyBpcwo+ID4+ ID4+ID4gaGFwcHkuIEFuZCB3ZSBnZXQgdG8gYXZvaWQgdGhlIHVnbHkgU1lNQk9MIG1hY3JvIHRo YXQgTGludXggdXNlcy4gSXQgaXMKPiA+PiA+PiA+IHJlYWxseSBhIHdpbi13aW4uCj4gPj4gPj4g Cj4gPj4gPj4gV2VsbCwgdGhhdCdzIGEgcG9zaXRpb24gb25lIGNhbiB0YWtlLiBCdXQgd2UgaGF2 ZSB0byBzZXR0bGUgb24gYW5vdGhlcgo+ID4+ID4+IGFzcGVjdCB0aGVuIGZpcnN0OiBEb2VzIHdo YXQgaXMgbm90IGRvbmUgaW4gQyB1bmRlcmx5IEMncyBydWxlcz8gSQo+ID4+ID4+IHRob3VnaHQg eW91IHdlcmUgb2YgdGhlIG9waW5pb24gdGhhdCB3aGF0IGNvbWVzIGZyb20gbGlua2VyIHNjcmlw dHMKPiA+PiA+PiBkb2VzLiBJbiB3aGljaCBjYXNlIHdoYXQgY29tZXMgZnJvbSBhc3NlbWJseSBm aWxlcyBvdWdodCB0bywgdG9vLgo+ID4+ID4+IChGQU9EIG15IGltcGxpY2F0aW9uIGlzOiBJZiB0 aGUgYW5zd2VyIGlzIHllcywgYm90aCBhcHByb2FjaGVzCj4gPj4gPj4gdmlvbGF0ZSBDJ3MgcnVs ZXMuIElmIHRoZSBhbnN3ZXIgaXMgbm8sIG5vIGNoYW5nZSBpcyBuZWVkZWQgYXQgYWxsLikKPiA+ PiA+IAo+ID4+ID4gR3JlYXQgcXVlc3Rpb24sIHRoYXQgaXMgdGhlIGNvcmUgb2YgdGhlIGlzc3Vl LiBBbHNvLCBsZXQgbWUgcHJlbWlzZSB0aGF0Cj4gPj4gPiBJIGFncmVlIG9uIHRoZSBjb21tZW50 cyB5b3UgbWFkZSBvbiB0aGUgcGF0Y2hlcyAoSSBkaXNsaWtlICJzdGFydF8iCj4gPj4gPiB0b28p LCBhbmQgSSBjYW4gYWRkcmVzcyB0aGVtIGlmIHdlIGFncmVlIHRvIGNvbnRpbnVlIGRvd24gdGhp cyBwYXRoLgo+ID4+ID4gCj4gPj4gPiBCdXQgbm8sIEkgZG8gbm90IHRoaW5rIHRoYXQgd2hhdCBp cyBkb25lIG91dHNpZGUgb2YgQy1sYW5kIHNob3VsZCBmb2xsb3cKPiA+PiA+IEMgcnVsZXMuIEJ1 dCBJIGRvIG5vdCBhZ3JlZSB3aXRoIHlvdXIgY29uY2x1c2lvbiB0aGF0IGluIHRoYXQgY2FzZSB0 aGVyZQo+ID4+ID4gaXMgbm8gZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBhcHByb2FjaGVzLiBMZXQn cyBnZXQgbW9yZSBpbnRvIHRoZQo+ID4+ID4gZGV0YWlscy4KPiA+PiA+IAo+ID4+ID4gCj4gPj4g PiAxKSBTWU1CT0xfSElERSByZXR1cm5pbmcgcG9pbnRlciB0eXBlCj4gPj4gPiAKPiA+PiA+IExl dCdzIHRha2UgX3N0YXJ0IGFuZCBfZW5kIGFzIGFuIGV4YW1wbGUuIF9zdGFydCBpcyBib3JuIGFz IGEgbGlua2VyCj4gPj4gPiBzeW1ib2wsIGFuZCBpdCBiZWNvbWVzIGEgQyBwb2ludGVyIHdoZW4g d2UgZG86Cj4gPj4gPiAKPiA+PiA+ICAgZXh0ZXJuIGNoYXIgX3N0YXJ0W10sIF9lbmRbXQo+ID4+ ID4gCj4gPj4gPiBOb3cgaXQgaXMgYSBwb2ludGVyIChhY3R1YWxseSBJIHNob3VsZCBzYXkgYW4g YXJyYXksIGJ1dCBsZXQncyBwcmV0ZW5kCj4gPj4gPiB0aGV5IGFyZSB0aGUgc2FtZSB0aGluZyBm b3IgdGhpcyBkaXNjdXNzaW9uKS4KPiA+PiA+IAo+ID4+ID4gV2hlbiB3ZSBkbzoKPiA+PiA+IAo+ ID4+ID4gICBTWU1CT0xfSElERShfZW5kKSAtIFNZTUJPTF9ISURFKF9zdGFydCkKPiA+PiA+IAo+ ID4+ID4gV2UgYXJlIHN0aWxsIHN1YnRyYWN0aW5nIHBvaW50ZXJzOiB0aGUgcG9pbnRlcnMgcmV0 dXJuZWQgYnkgU1lNQk9MX0hJREUuCj4gPj4gPiBXZSBjYW5ub3QgcHJvdmUgdGhhdCB0aGV5IGFy ZSBwb2ludGVycyB0byB0aGUgc2FtZSBvYmplY3Qgb3Igc3Vic2VxdWVuY2UKPiA+PiA+IG9iamVj dHMgaW4gbWVtb3J5LCBzbyBpdCBpcyB1bmRlZmluZWQgYmVoYXZpb3IsIHdoaWNoIGlzIG5vdCBh bGxvd2VkLgo+ID4+IAo+ID4+IFN0b3AuIE5vLiBXZSB2ZXJ5IG11Y2ggY2FuIHByb3ZlIHRoZXkg YXJlIC0gX2VuZCBwb2ludHMgYXQKPiA+PiBvbmUgcGFzdCB0aGUgbGFzdCBlbGVtZW50IG9mIF9z dGFydFtdLiBJdCBpcyB0aGUgY29tcGlsZXIgd2hpY2gKPiA+PiBjYW4ndCBwcm92ZSB0aGUgb3Bw b3NpdGUsIGFuZCBoZW5jZSBpdCBjYW4ndCBsZXZlcmFnZQo+ID4+IHVuZGVmaW5lZCBiZWhhdmlv ciBmb3Igb3B0aW1pemF0aW9uIHB1cnBvc2VzLgo+ID4gCj4gPiBUaGlzIGlzIGFuIGludGVyZXN0 aW5nIGNvbW1lbnQuIEhvd2V2ZXIsIGV2ZW4gZm9yIG5vcm1hbCBwb2ludGVycyBpdCBpcwo+ID4g dW5yZWxpYWJsZSB0byBjb3VudCBvbiBvbmUgcG9pbnRpbmcgb25lIHBhc3QgdGhlIGxhc3QgZWxl bWVudCBvZiB0aGUKPiA+IG90aGVyLiBUaGlzIHdhcyB3ZWxsIGV4cGxhaW5lZCBpbiB0aGUgR0ND IHRocmVhZCBsaW5rZWQgZWFybGllciBpbiB0aGlzCj4gPiB0aHJlYWQuIFRoZSB2aXNpb24gb2Yg YXQgbGVhc3Qgb25lIG9mIHRoZSBHQ0MgbWFpbnRhaW5lcnMgaXMgdGhhdCB0aGUKPiA+IGNvbXBp bGVyIGlzIGZyZWUgdG8gcGxhY2UgdGhpbmdzIGluIG1lbW9yeSB3aGVyZSBpdCB3aXNoZXMsIHNv IGFzIGEKPiA+IHByb2dyYW1tZXIgeW91IGNhbm5vdCBjb3VudCBvbiBwb2ludGVycyBwb2ludGlu ZyBvbmUgcGFzdCB0aGUgbGFzdAo+ID4gZWxlbWVudCBvZiB0aGUgb3RoZXIuIEV2ZXIuIEluIHRo aXMgY2FzZSwgd2hlcmUgX3N0YXJ0IGFuZCBfZW5kIGFyZQo+ID4gZGVmaW5lZCBvdXRzaWRlIG9m IEMtbGFuZCwgSSB0aGluayBpdCBpcyBldmVuIG1vcmUgdHJ1ZSwgYW5kIGl0IHJlbWFpbnMKPiA+ IHVuZGVmaW5lZC4KPiAKPiBZb3UgbWl4IHVwIHR3byB0aGluZ3M6IE9uZSBpcyB0aGUgY2hhbmNl IG9mIHR3byBvYmplY3RzIGJlaW5nCj4gYWRqYWNlbnQgdG8gb25lIGFub3RoZXIuIFdlIGRvbid0 IGNhcmUgYWJvdXQgdGhpcy4gVGhlIG90aGVyIGlzCj4gYSBwb2ludGVyIHRydWx5IHBvaW50aW5n IG9uZSBwYXN0IHRoZSBsYXN0IGVsZW1lbnQgb2YgYW4gYXJyYXkgKGFzCj4gd2lsbCBuYXR1cmFs bHkgcmVzdWx0IHdpdGggZS5nLgo+IAo+ICAgICBmb3IgKCBwdHIgPSBhcnI7IHB0ciA8IGFyciAr IEFSUkFZX1NJWkUoYXJyKTsgKytwdHIgKQo+IAo+IEl0IGlzIHRoaXMgc2Vjb25kIGNhc2Ugd2hp Y2ggYWxsIHRoZSBjYXNlcyB3ZSBjYXJlIGFib3V0IGhlcmUgZmFsbAo+IGludG8uIEFzIHBlciBt eSBvdGhlciBtYWlsLCBqdXN0IGxpa2UgdGhlIHNhbWUgb2JqZWN0IGNhbiBoYXZlIG11bHRpcGxl Cj4gbmFtZXMsIHN5bWJvbHMgbWF5IGFsc28gcmVmZXIgdG8gcGxhY2VzIG90aGVyIHRoYW4gdGhl IHN0YXJ0IG9mCj4gYW4gb2JqZWN0OyB0aGUgZmFjdCB0aGF0IHBsYWluIEMgY2FuJ3QgcHJvZHVj ZSBzdWNoIHN5bWJvbHMgaXMgbm90Cj4gcmVsZXZhbnQgYXMgbG9uZyBhcyB0aGVyZSdzIG5vIHJl cXVpcmVtZW50IHRoYXQgQyBjb2RlIG1heQo+IGludGVyZmFjZSBvbmx5IHdpdGggb3RoZXIgQyBj b2RlLgoKVGhlIGNoYW5jZSBvZiB0d28gb2JqZWN0cyBiZWluZyBhZGphY2VudCB0byBvbmUgYW5v dGhlciBpcyByZWxldmFudApiZWNhdXNlIHRoZSBjb21waWxlciBjb3VsZCByaWdodGZ1bGx5IGRl Y2lkZSB0aGF0IHRoZSBwcm9ncmFtbWVyIGNhbgpuZXZlciByZWx5IG9uIHBvaW50ZXJzIHBvaW50 aW5nIG9uZSBwYXN0IHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIG90aGVyLApldmVuIGlmIHRoZXkg dHJ1bHkgcG9pbnQgb25lIHBhc3QgdGhlIGxhc3QgZWxlbWVudCBvZiBhbiBhcnJheS4KCk90aGVy d2lzZSwgTGludXggd291bGQgaGF2ZSBuZXZlciBuZWVkZWQgdG8gaW50cm9kdWNlIFJFTE9DX0hJ REUgaW4gdGhlCmZpcnN0IHBsYWNlLgoKCj4gPiBNb3Jlb3ZlciwgSSB3ZW50IGJhY2sgdG8gTUlT UkFDIChmaW5hbGx5IEkgaGF2ZSBhIGNvcHkpIGFuZCBydWxlIDE4LjIKPiA+IHNheXM6ICJzdWJ0 cmFjdGlvbiBiZXR3ZWVuIHBvaW50ZXJzIHNoYWxsIG9ubHkgYmUgYXBwbGllZCB0byBwb2ludGVy cwo+ID4gdGhhdCBhZGRyZXNzIGVsZW1lbnRzIG9mIHRoZSBzYW1lIGFycmF5Ii4gU28sIGFsbCB0 aGUgZXZpZGVuY2Ugd2UgaGF2ZQo+ID4gc2VlbXMgdG8gc2F5IHRoYXQgd2UgY2Fubm90IHJlbHkg b24gX2VuZCBwb2ludGluZyBvbmUgcGFzdCB0aGUgbGFzdAo+ID4gZWxlbWVudCBvZiBfc3RhcnQg aW4gdGhpcyBtYXR0ZXIuCj4gCj4gV2l0aCB0aGUgQyBzdGFuZGFyZCdzIHdvcmRpbmcgaW4gbWlu ZCwgdGhpcyBzdXJlbHkgaXMgdG8gaW5jbHVkZQo+IHRoZSAib25lIHBhc3QgdGhlIGxhc3QgZWxl bWVudCIgY2FzZSwgaW4gd2hpY2ggY2FzZSBhbGwgaXMgZmluZS4gX2VuZAo+IGRvZXMgbm90IHBv aW50IGF0IG9yIGludG8gYSBkaWZmZXJlbnQgb2JqZWN0LCBpdCBwb2ludHMgYXQgdGhlIGVuZCBv Zgo+IF9zdGFydFtdLgo+Cj4gPj4gPiAzKSB2YXIuUyArIHN0YXJ0XyBhcyB1bnNpZ25lZCBsb25n Cj4gPj4gPiAKPiA+PiA+IFdpdGggdGhpcyBhcHByb2FjaCwgX3N0YXJ0IGlzIGJvcm4gYXMgYSBs aW5rZXIgc3ltYm9sLiBJdCBpcyBuZXZlcgo+ID4+ID4gZXhwb3J0ZWQgdG8gQywgc28gZnJvbSBD IHBvaW50IG9mIHZpZXcsIGl0IGRvZXNuJ3QgZXhpc3QuIFRoZXJlIGlzCj4gPj4gPiBhbm90aGVy IHZhcmlhYmxlIG5hbWVkICJzdGFydF8iIGRlZmluZWQgaW4gYXNzZW1ibHkgYW5kIGluaXRpYWxp emVkIHRvCj4gPj4gPiBfc3RhcnQuIE5vdyB3ZSBnbyBpbnRvIEMgbGFuZCB3aXRoOgo+ID4+ID4g Cj4gPj4gPiAgIGV4dGVybiB1aW50cHRyX3Qgc3RhcnRfLCBlbmRfCj4gPj4gPiAKPiA+PiA+IHN0 YXJ0XyBhbmQgZW5kXyBhcmUgdWludHB0cl90IGZyb20gdGhlIGJlZ2lubmluZyBmcm9tIEMgcG9p bnQgb2Ygdmlldy4KPiA+PiA+IFRoZXkgaGF2ZSBuZXZlciBiZWVuIHBvaW50ZXJzIG9yIGluIGFu eSB3YXkgY29ubmVjdGVkIHRvIF9zdGFydC4gVGhleQo+ID4+ID4gYXJlICJjbGVhbiIuCj4gPj4g PiAKPiA+PiA+IFdoZW4gd2UgZG86Cj4gPj4gPiAKPiA+PiA+ICAgX2VuZCAtIF9zdGFydAo+ID4+ ID4gCj4gPj4gPiBpdCBpcyBhIHN1YnRyYWN0aW9uIGJldHdlZW4gdWludHB0cl90LCB3aGljaCBp cyBhbGxvd2VkLiBXaGVuIHdlIGRvOgo+ID4+ID4gCj4gPj4gPiAgICAgZm9yICggY2FsbCA9IChj b25zdCBpbml0Y2FsbF90ICopaW5pdGNhbGxfc3RhcnRfOwo+ID4+ID4gICAgICAgICAgICh1aW50 cHRyX3QpY2FsbCA8IHByZXNtcF9pbml0Y2FsbF9lbmRfOwo+ID4+ID4gCj4gPj4gPiBUaGUgY29t cGFyaXNvbiBpcyBzdGlsbCBiZXR3ZWVuIHVpbnRwdHJfdCB0eXBlcywgYW5kIHRoZSB2YWx1ZSBv ZiAiY2FsbCIKPiA+PiA+IHN0aWxsIGNvbWVzIGZyb20gYW4gdW5zaWduZWQgbG9uZyBpbml0aWFs bHkuIFRoZXJlIGlzIG5ldmVyIGEgY29tcGFyaXNvbgo+ID4+ID4gYmV0d2VlbiBkdWJpb3VzIHBv aW50ZXJzLiAoSW50ZXJnZXIgdG8gcG9pbnRlciBjb252ZXJzaW9ucyBhbmQgcG9pbnRlcgo+ID4+ ID4gdG8gaW50ZWdlciBjb252ZXJzaW9ucyBhcmUgYWxsb3dlZCBieSBNSVNSQSB3aXRoIHNvbWUg bGltaXRhdGlvbnMsIGJ1dCBJCj4gPj4gPiBhbSBkb3VibGUtY2hlY2tpbmcuKSBFdmVuOgo+ID4+ ID4gCj4gPj4gPiAgICAodWludHB0cl90KXJhbmRvbV9wb2ludGVyIDwgcHJlc21wX2luaXRjYWxs X2VuZF8KPiA+PiA+IAo+ID4+ID4gd291bGQgYmUgYWNjZXB0YWJsZSBiZWNhdXNlIHByZXNtcF9p bml0Y2FsbF9lbmRfIGlzIGFuIGludGVnZXIgYW5kIGhhcwo+ID4+ID4gYWx3YXlzIGJlZW4gYW4g aW50ZWdlciBmcm9tIEMgcG9pbnQgb2Ygdmlldy4KPiA+PiAKPiA+PiBXZWxsLCBhcyBzYWlkIC0g dGhpcyBpcyBvbmUgb2YgdGhlIHBvc3NpYmxlIHBvc2l0aW9ucyB0byB0YWtlLiBQZXJzb25hbGx5 Cj4gPj4gSSBzZWUgbm8gZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBoZWxwZXIgc3ltYm9scyBkZWZp bmVkIGluCj4gPj4gYXNzZW1ibHkgc291cmNlcywgb3IgaW4gQyBzb3VyY2VzIHRoZSBvYmplY3Qg ZmlsZXMgZm9yIHdoaWNoIGFyZSBuZXZlcgo+ID4+IG1hZGUgcGFydCBvZiBwb3RlbnRpYWwgd2hv bGUgcHJvZ3JhbSBvcHRpbWl6YXRpb24uIAo+ID4gCj4gPiBJIGRvbid0IHRoaW5rIHRoaXMgaXMg dGhlIGNhc2UgZm9yIE1JU1JBQy4gQyBydWxlcyBhcHBseSB0byBDLiBPdGhlcgo+ID4gcnVsZXMg YXBwbHkgdG8gYXNzZW1ibHkgYW5kIGxpbmtlciBzY3JpcHRzLiBUaGlzIGlzIHNvbWV0aGluZyB0 aGF0Cj4gPiBzaG91bGQgYmUgZWFzeSB0byBjaGVjaywgYW5kIEkgaG9wZSB0aGF0IFN0ZXdhcnQg c2hvdWxkIGJlIGFibGUgdG8KPiA+IGNvbmZpcm0uCj4gCj4gQXMgcGVyIGFib3ZlIC0gdGhlIGlu dGVyZXN0aW5nIGFzcGVjdCBpcyB3aGF0IHJ1bGVzIGFwcGx5IHRvIHRoZQo+IGNhc2Ugb2YgQyBp bnRlcmZhY2luZyB3aXRoIGFub3RoZXIgbGFuZ3VhZ2UuCj4gCj4gPj4gVXNpbmcgQyBmaWxlcyBm b3IgdGhpcyBpcyBzdGlsbCBpbiBjb25mbGljdCB3aXRoIHRoZSBzdXBwb3NlZAo+ID4+IHVuZGVm aW5lZCBiZWhhdmlvciwgYnV0IEkgdGhpbmsgeW91IGFncmVlIHRoYXQgQyBhbmQgYXNzZW1ibHkg ZmlsZXMKPiA+PiBjb3VsZCBiZSBzZXQgdXAgc3VjaCB0aGF0IHRoZSByZXN1bHRpbmcgYmluYXJ5 IGRhdGEgaXMgaWRlbnRpY2FsLiBJbgo+ID4+IHdoaWNoIGNhc2UgaXQgaXMgYm9ndXMgdG8gY2Fs bCBvbmUgc2F0aXNmYWN0b3J5LCBidXQgbm90IHRoZSBvdGhlci4KPiA+IAo+ID4gSSBzZWUgd2hh dCB5b3UgYXJlIHNheWluZywgYnV0IGl0IGRvZXNuJ3Qgd29yayB0aGF0IHdheSBmcm9tIGEgc3Bl Ywo+ID4gY29tcGxpYW5jZSBwb2ludCBvZiB2aWV3Lgo+ID4gCj4gPiAKPiA+PiA+IEhvd2V2ZXIs IHRoZXJlIGFyZSBzdGlsbCBhIGNvdXBsZSBvZiBpc3N1ZWQgbm90IGNvcnJlY3RseSBzb2x2ZWQg YnkgdjgKPiA+PiA+IG9mIHRoZSBzZXJpZXMuIEZvciBzdGFydGVyczogCj4gPj4gPiAKPiA+PiA+ ICAgICAgICAgYXBwbHlfYWx0ZXJuYXRpdmVzKChzdHJ1Y3QgYWx0X2luc3RyICopYWx0X2luc3Ry dWN0aW9uc18sCj4gPj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGFsdF9p bnN0ciAqKWFsdF9pbnN0cnVjdGlvbnNfZW5kXyk7Cj4gPj4gPiAKPiA+PiA+IEkgY2FuIHNlZSBo b3cgdGhlIHBvaW50ZXJzIGNvbXBhcmlzb25zIGluIGFwcGx5X2FsdGVybmF0aXZlcyBjb3VsZCBi ZQo+ID4+ID4gY29uc2lkZXJlZCB3cm9uZyBnaXZlbiB0aGUgd2F5IHRoZSBwb2ludGVycyBhcmUg aW5pdGlhbGl6ZWQ6Cj4gPj4gPiAKPiA+PiA+ICAgICBmb3IgKCBhID0gYmFzZSA9IHN0YXJ0OyBh IDwgZW5kOyBhKysgKQo+ID4+ID4gICAgIHsKPiA+PiA+IAo+ID4+ID4gc3RhcnQgYW5kIGVuZCBj b21lIGZyb20gYWx0X2luc3RydWN0aW9uc18gYW5kIGFsdF9pbnN0cnVjdGlvbnNfZW5kXy4gSXQK PiA+PiA+IGRvZXNuJ3QgbWF0dGVyIHRoYXQgYWx0X2luc3RydWN0aW9uc18gYW5kIGFsdF9pbnN0 cnVjdGlvbnNfZW5kXyBhcmUKPiA+PiA+ICJzcGVjaWFsIiwgdGhleSBjb3VsZCBiZSBwZXJmZWN0 bHkgbm9ybWFsIGludGVnZXJzIGFuZCB3ZSB3b3VsZCBzdGlsbAo+ID4+ID4gaGF2ZSB0aGUgc2Ft ZSBwcm9ibGVtOiB3ZSBjYW5ub3QgcHJvdmUgdGhhdCAic3RhcnQiIGFuZCAiZW5kIiBwb2ludCB0 bwo+ID4+ID4gdGhlIHNhbWUgb2JqZWN0IG9yIHN1YnNlcXVlbnQgb2JqZWN0cyBpbiBtZW1vcnku Cj4gPj4gPiAKPiA+PiA+IFRoZSB3YXkgdG8gZml4IGl0IGlzIGJ5IGNoYW5naW5nIHRoZSBwYXJh bWV0ZXJzIG9mIGFwcGx5X2FsdGVybmF0aXZlcyB0bwo+ID4+ID4gaW50ZXJnZXIgdHlwZXMsIG1h a2luZyBjb21wYXJpc29uIGJldHdlZW4gaW50ZWdlcnMsIGFuZCBvbmx5IHVzaW5nCj4gPj4gPiBw b2ludGVycyB0byBhY2Nlc3MgdGhlIGRhdGEuCj4gPj4gCj4gPj4gWW91IGtub3cgbXkgcG9zaXRp b24gb24gY2FzdHMgZnJvbSBpbnRlZ2VyIHRvIHBvaW50ZXIgdHlwZXMsIGVzcGVjaWFsbHkKPiA+ PiBvbmVzIHRha2luZyBhIHR5cGUgb3V0IG9mIHRoaW4gYWlyLiBUaGlzIGFwcGxpZXMgdG8geW91 ciBhZGRpdGlvbiB0byB0aGUKPiA+PiBhcHBseV9hbHRlcm5hdGl2ZXMoKSBjb25zdHJ1Y3QgYXMg d2VsbCBhcyB0aGUgYWx0ZXJuYXRpdmUgb2YgYWRkaW5nIHN1Y2gKPiA+PiBpbiBvcmRlciB0byBh Y2Nlc3MgbWVtb3J5LiBUaGUgcXVvdGUgZnJvbSB0aGUgc3RhbmRhcmQgdGhhdCBJIGdhdmUKPiA+ PiBtYWtlcyBzdWNoIGNhc3RzIG5vdCBwcm92YWJseSAoYnkgdGhlIGNvbXBpbGVyKSBkZWZpbmVk IGJlaGF2aW9yIGFzCj4gPj4gd2VsbCwgc28gaXQgYWxsIGJvaWxzIGRvd24gdG8gdGhlIHNhbWUg ZGlzdGluY3Rpb24gYXMgcG9pbnRlZCBvdXQgYWJvdmUgaW4KPiA+PiB0aGUgZmlyc3QgcGFydCBv ZiBteSByZXBseSBoZXJlOiBfV2VfIGNhbiBwcm92ZSBpdCwgYnV0IHRoZSBjb21waWxlcgo+ID4+ IGNhbid0LiBIZW5jZSB3ZSdyZSBzdGlsbCBkZXBlbmRpbmcgb24gd2hvc2UgcHJvb2YgaXMgbmVj ZXNzYXJ5IHRvCj4gPj4gZWxpbWluYXRlIE1JU1JBJ3MgdW5kZWZpbmVkIGJlaGF2aW9yIGNvbmNl cm5zLgo+ID4gCj4gPiBDb21wYXJpc29ucyBiZXR3ZWVuIHBvaW50ZXJzIHRvIGRpZmZlcmVudCBv YmplY3RzIGlzIHVuZGVmaW5lZCBieSB0aGUgQwo+ID4gc3BlYywgYW5kIG5vdCBhbGxvd2VkIGJ5 IE1JU1JBQy4KPiA+IAo+ID4gQ2FzdGluZyBwb2ludGVycyB0byBpbnRlZ2VycyBhbmQgY2FzdGlu ZyBpbnRlZ2VycyB0byBwb2ludGVycyBpcwo+ID4gaW1wbGVtZW50YXRpb24tZGVmaW5lZCwgd2hp Y2ggaXMgbm90IHRoZSBzYW1lIHRoaW5nIGFzIHVuZGVmaW5lZC4KPiAKPiBPZiBjb3Vyc2UgaXQg aXMgbm90LCBidXQgdGhlIHJlc3VsdCBwb3NzaWJseSBub3QgZXZlbiBiZWluZyBhIHZhbGlkCj4g cG9pbnRlciBjYW4ndCBtYWtlIGl0IG11Y2ggYmV0dGVyIHRoYW4gInVuZGVmaW5lZCIuCj4KPiA+ IEkgZG9uJ3QgbWFrZSB1cCB0aGUgcnVsZXMsIEkgYW0gb25seSB0cnlpbmcgdG8gZm9sbG93IHRo ZW0gOi0pCj4gCj4gU3VyZS4gQnV0IHdlIHNob3VsZG4ndCB1Z2xpZnkgb3VyIGNvZGUganVzdCB0 byBmb2xsb3cgaW5zYW5lCj4gKGV4YWdnZXJhdGlvbiBpbnRlbmRlZCkgcnVsZXMuCgpXZSBoYXZl bid0IG1hbmFnZWQgdG8gcmVhY2ggY29uc2Vuc3VzIG9uIHRoaXMgdG9waWMuIFlvdXIgdmlldyBt aWdodCBiZQpjb3JyZWN0LCBidXQgaXQgaXMgbm90IG5lY2Vzc2FyaWx5IHN1cHBvcnRlZCBieSBj b21waWxlcnMnIGJlaGF2aW9yLAp3aGljaCBkZXBlbmRzIG9uIHRoZSBvcGluaW9uIG9mIGNvbXBp bGVycyBlbmdpbmVlcnMgb24gdGhlIHRvcGljLCBhbmQKTUlTUkFDIGNvbXBsaWFuY2UsIHdoaWNo IGRlcGVuZHMgb24gdGhlIG9waW5pb24gb2YgTUlTUkFDIHNwZWNpYWxpc3RzIG9uCnRoZSB0b3Bp Yy4gSWYgd2UgdGFrZSB5b3VyIHN1Z2dlc3RlZCBhcHByb2FjaCB3ZSBlbmQgdXAgd2l0aCB0aGUg Y29kZQptb3N0IGxpa2VseSB0byBicmVhayBpbiBjYXNlIHRoZSBjb21waWxlcnMgZW5naW5lZXJz IG9yIHRoZSBNSVNSQUMKZXhwZXJ0cyBkaXNhZ3JlZSB3aXRoIHlvdS4gSW4gdGhpcyBjYXNlLCBi ZWluZyByaWdodCBkb2Vzbid0IG5lY2Vzc2FyaWx5CmxlYWQgdG8gdGhlIGNvZGUgbGVzcyBsaWtl bHkgdG8gYnJlYWsuCgpSZWdhcmRsZXNzLCBpZiB0aGF0IGlzIHRoZSBkZWNpc2lvbiBvZiB0aGUg WGVuIGNvbW11bml0eSBhcyBhIHdob2xlLApJJ2xsIGZvbGxvdyBpdC4gTXkgcHJlZmVyZW5jZSBy ZW1haW5zIHdpdGggYXBwcm9hY2ggMy4gKHZhci5TKSwgZm9sbG93ZWQKYnkgYXBwcm9hY2ggMi4g KFNZTUJPTF9ISURFIHJldHVybnMgdWludHB0cl90KSwgYnV0IEkgYW0gd2lsbGluZyB0bwpyZWZy ZXNoIG15IHNlcmllcyB0byBkbyBhcHByb2FjaCAxLiAoU1lNQk9MX0hJREUgcmV0dXJucyBwb2lu dGVyIHR5cGUpCmlmIHRoYXQgaXMgdGhlIG9ubHkgd2F5IGZvcndhcmQuCgpMZXQgdXMgY29tZSB0 byBhIGNvbmNsdXNpb24gc28gdGhhdCB3ZSBjYW4gbW92ZSBvbi4KCkphbiwgSnVsaWVuLCBKdWVy Z2VuLCBhbnlib2R5IGVsc2UgaW50ZXJlc3RlZCwgbGV0IG1lIGtub3cgd2hhdCB5b3Ugd2FudApt ZSB0byBkby4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Clhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0 dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=