From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Yang Subject: Re: [Help] Trigger Watchdog when adding an IPI in vcpu_wake Date: Sun, 18 Sep 2016 12:03:20 +0800 Message-ID: <20160918040320.GA15774@linux-gk3p> References: <20160913085437.GA14514@linux-gk3p> <1473766217.6339.103.camel@citrix.com> Reply-To: Wei Yang Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1473766217.6339.103.camel@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Dario Faggioli Cc: xuquan8@huawei.com, liuxiaojian6@huawei.com, george.dunlap@eu.citrix.com, xen-devel@lists.xen.org, richard.weiyang@gmail.com, mengxu@cis.upenn.edu, Wei Yang List-Id: xen-devel@lists.xenproject.org T24gVHVlLCBTZXAgMTMsIDIwMTYgYXQgMDE6MzA6MTdQTSArMDIwMCwgRGFyaW8gRmFnZ2lvbGkg d3JvdGU6Cj5bdXNpbmcgeGVuZGV2ZWwgY29ycmVjdCBhZGRyZXNzXQo+Cj5PbiBUdWUsIDIwMTYt MDktMTMgYXQgMTY6NTQgKzA4MDAsIFdlaSBZYW5nIHdyb3RlOgo+PiBPbiBGcmksIDIwMTYtMDkt MDkgYXQgMTc6NDEgKzA4MDAsIFdlaSBZYW5nIHdyb3RlOgo+PiA+wqAKPj4gPiBJJ20gbm90IHN1 cnByaXNlZCBieSB0aGF0LiBZZXQsIEknZCBiZSBpbnRlcmVzdGVkIGluIGhlYXJpbmcgbW9yZQo+ PiA+IGFib3V0IHRoaXMgcHJvZmlsaW5nIHlvdSBoYXZlIGRvbmUgKHRoaW5ncyBsaWtlLCBob3cg eW91IGNhcHR1cmVkCj4+ID4gdGhlIGRhdGEsIHdoYXQgd29ya2xvYWRzIHlvdSBhcmUgZXhhY3Rs eSBjb25zaWRlcmluZywgaG93IHlvdQo+PiA+IGRldGVybWluZWQgd2hhdCBpcyB0aGUgYm90dGxl bmVjaywgZXRjKS4KPj4gTGV0IG1lIHRyeSB0byBleHBsYWluIHRoaXMuCj4+IAo+PiBXb3JrbG9h ZDrCoMKgwqDCoMKgwqDCoMKgwqBhLiBCbHVlIFNjcmVlbiBpbiBXaW5kb3dzIEd1ZXN0cwo+PiAJ CcKgwqBiLiBzb21lIGNsaWVudCB1c2luZyBXaW5kb3dzIHRvIGRvIHNvbWUgdmlkZW8KPj4gcHJv Y2Vzc2luZwo+PiAJCcKgwqDCoMKgwqB3aGljaCBuZWVkIHByZWNpc2UgdGltZXN0YW1wICh3ZSBh cmUgbm90IHN1cmUgdGhlCj4+IGNvcmUKPj4gCQnCoMKgwqDCoMKgcmVhc29uIGJ1dCB3ZSBzZWUg dGhlIHN5c3RlbSBpcyB2ZXJ5IHNsb3cpCj4+Cj5EbyB5b3UgbWluZCBzaGFyaW5nIGp1c3QgYSBi aXQgbW9yZSwgc3VjaCBhczoKPsKgLSBudW1iZXIgb2YgcGNwdXMKPsKgLSBudW1iZXIgb2YgdmNw dXMgb2YgdGhlIHZhcmlvdXMgVk1zCj4KPkkgYWxzbyBhbSBub3Qgc3VyZSB3aGF0ICJhLiBCbHVl IHNjcmVlbiBpbiBXaW5kb3dzIGd1ZXN0cyIgYWJvdmUKPm1lYW5zLi4uIGlzIHRoZXJlIGEgd29y a2xvYWQgY2FsbGVkICJCbHVlIFNjcmVlbiI/IE9yIGlzIGl0IHRoYXQgeW91Cj5hcmUgaGl0dGlu ZyBhIEJTT0QgaW4gc29tZSBvZiB5b3VyIGd1ZXN0cyAod2hpY2ggb25lcywgd2hhdCB3ZXJlIHRo ZXkKPmRvaW5nKT8gT3IgaXMgaXQgdGhhdCB5b3UgX3dhbnRfIHRvIHByb3Zva2UgYSBCU09EIG9u IHNvbWUgb2YgeW91cgo+Z3Vlc3RzPyBPciBpcyB0aGF0IHNvbWV0aGluZyBlbHNlPyA6LVAKPgo+ PiBDYXB0dXJlIHRoZSBkYXRhOiBsb2NrIHByb2ZpbGUKPj4gQm90dGxlbmVjayBDaGVjazogVGhl IHNjaGVkdWxlIGxvY2sgd2FpdCB0aW1lIGlzIHJlYWxseSBoaWdowqDCoMKgwqDCoMKgCj4+IAo+ T2ssIGNvb2wuIEludGVyZXN0aW5nIHRoYXQgbG9jayBwcm9maWxpbmcgd29ya3Mgb24gNC4xISA6 LU8KPgo+PiA+IFRoZSBzY2hlZHVsZXIgdHJpZXMgdG8gc2VlIHdoZXRoZXIgdGhlIHYtPnByb2Nl c3NvciBvZiB0aGUgd2FraW5nCj4+ID4gdmNwdSBjYW4gYmUgcmUtdXNlZCwgYnV0IHRoYXQncyBu b3QgYXQgYWxsIGd1YXJhbnRlZWQsIGFuZCBhZ2FpbiwKPj4gPiBvbiBhIHZlcnkgbG9hZGVkIHN5 c3RlbSwgbm90IGV2ZW4gdGhhdCBsaWtlbHkhCj4+ID4gCj4+IEhtbS4uLiBJIG1heSBtaXNzZWQg c29tZXRoaW5nLgo+PiAKPj4gVG9vayB5b3VyIGFzc3VtcHRpb24gYmVsb3cgZm9yIGV4YW1wbGUu wqAKPj4gSW4gbXkgbWluZCwgdGhlIHByb2Nlc3MgbG9va3MgbGlrZSB0aGlzOgo+PiAKPj4gwqDC oMKgwqBjc2NoZWRfdmNwdV93YWtlKCkKPj4gwqDCoMKgwqDCoMKgwqDCoF9fcnVucV9pbnNlcnQo KSzCoMKgaW5zZXJ0IHRoZSB2Y3B1IGluIHBjcHUncyA2IHJ1bnEKPj4gwqDCoMKgwqDCoMKgwqDC oF9fcnVucV90aWNrbGUoKSzCoMKgcmFpc2UgU0NIRURVTEVfU09GVElSUSBvbiBwY3B1IDYgb3Ig b3RoZXIKPj4gKDEpCj4+IMKgwqDCoMKgCj5XZWxsLCB5ZXMuIE1vcmUgcHJlY2lzZWx5LCBhdCBs ZWFzdCBpbiBjdXJyZW50IHN0YWdpbmcsCj5TQ0hFRFVMRV9TT0ZUSVJRIGlzIHJhaXNlZCBmb3Ig cGNwdSA2Ogo+wqAtIGlmIHBjcHUgNiBpcyBpZGxlLCBvcgo+wqAtIGlmIHBjcHUgNiBpcyBub3Qg aWRsZSBidXQgdGhlcmUgYWN0dWFsbHkgaXNuJ3QgYW55IGlkbGUgdmNwdSwgYW5kCj7CoCDCoHRo ZSB3YWtpbmcgdmNwdSBpcyBoaWdoZXIgaW4gcHJpb3JpdHkgdGhhbiB3aGF0IGlzIHJ1bm5pbmcg b24gcGNwdSA2Cj4KPj4gwqDCoMKgwqBfX2RvX3NvZnRpcnEoKQo+PiDCoMKgwqDCoMKgwqDCoMKg c2NoZWR1bGUoKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjc2NoZWRfc2NoZWR1bGUoKSzC oMKgZm9yIHBjcHUgNiwgaXQgbWF5IHdha2UgdXAgZDJ2MiBiYXNlZAo+PiBvbiBpdCdzCj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBwcmlvcml0eQo+Pgo+WWVzLCBidXQgaXQgaXMgcGNwdSA2IHRoYXQgd2lsbCBydW4gY3Nj aGVkX3NjaGVkdWxlKCkgb25seSBpZiB0aGUKPmNvbmRpdGlvbnMgbWVudGlvbmVkIGFib3ZlIGFy ZSBtZXQuIElmIG5vdCwgaXQgd2lsbCBiZSBzb21lIG90aGVyIHBjcHUKPnRoYXQgd2lsbCBkbyBz byAob3Igbm9uZSEpLgo+Cj5CdXQgSSBqdXN0IHJlYWxpemVkIHRoYXQgdGhlIGZhY3QgdGhhdCB5 b3UgYXJlIGFjdHVhbGx5IHdvcmtpbmcgb24gNC4xCj5pcyBnb2luZyB0byBiZSBhbiBpc3N1ZS4g SW4gZmFjdCwgdGhlIGNvZGUgdGhhdCBpdCBpcyBub3cgaW4gWGVuIGhhcwo+Y2hhbmdlZCAqKmEg bG90Kiogc2luY2UgNC4xLiBJbiBmYWN0LCB5b3UncmUgbWlzc2luZyBhbGwgdGhlIHNvZnQtCj5h ZmZpbml0eSB3b3JrICh3aGljaCB5b3UgbWF5IG9yIG1heSBub3QgZmluZCB1c2VmdWwpIGJ1dCBh bHNvCj5pbXByb3ZlbWVudHMgYW5kIGJ1Z2ZpeGluZy4KPgo+SSdsbCBoYXZlIGEgcXVpY2sgbG9v ayBhdCBob3cgX19ydW5xX3RpY2tsZSgpIGxvb2tzIGxpa2UgaW4gWGVuIDQuMSwKPmJ1dCB0aGVy ZSdzIHZlcnkgZmV3IGNoYW5jZXMgSSdsbCBiZSBhdmFpbGFibGUgdG8gcHJvdmlkZSBkZXRhaWxl ZAo+cmV2aWV3LCBhZHZpY2UsIHRlc3RpbmcsIGV0Yy4sIG9uIHN1Y2ggYW4gb2xkIGNvZGViYXNl LiA6LSgKPgo+PiBCeSBsb29raW5nIGF0IHRoZSBjb2RlLCB3aGF0IEkgbWlzc2VkIG1heSBiZSBp biBfX3J1bnFfdGlja2xlKCksCj4+IHdoaWNoIGluIGNhc2UKPj4gdGhlcmUgYXJlIGlkbGUgcGNw dSwgc2NoZWR1bGVfc29mdGlycSBpcyBhbHNvIHJhaXNlZCBvbiB0aGVtLiBCeQo+PiBkb2luZyBz bywKPj4gdGhvc2UgaWRsZSBwY3B1cyB3b3VsZCBzdGVhbCBvdGhlciBidXN5IHRhc2tzIGFuZCBt YXkgaW4gY2hhbmNlIGdldAo+PiBkMnYyPwo+PiAKPlllcywgaXQgbG9va3MgbGlrZSwgaW4gWGVu IDQuMSwgdGhpcyBpcyBtb3JlIG9yIGxlc3Mgd2hhdCBoYXBwZW5zLiBUaGUKPmlkZWEgaXMgdG8g YWx3YXlzIHRpY2tsZSBwY3B1IDYsIGlmIHRoZSBwcmlvcml0eSBvZiB0aGUgd2FraW5nIHZjcHUg aXMKPmhpZ2hlciB0aGFuIHdoYXQgaXMgcnVubmluZyB0aGVyZS7CoAo+Cj5JZiBwY3B1IDYgd2Fz IG5vdCBpZGxlLCB3ZSBhbHNvIHRpY2tsZSBvbmUgb3IgbW9yZSBpZGxlIHBjcHVzIHNvIHRoYXQ6 Cj7CoC0gaWYgdGhlIHdha2luZyB2Y3B1IHByZWVtcHRlZCB3aGF0IHdhcyBydW5uaW5nIG9uIHBj cHUgNiwgYW4gaWRsZXIKPsKgIMKgY2FuIHBpY2stdXAgKCJzdGVhbCIpIHN1Y2ggcHJlZW1wdGVk IHZjcHUgYW5kIHJ1biBpdDsKPsKgLSBpZiB0aGUgd2FraW5nIHZjcHUgZW5kZWQgdXAgaW4gdGhl IHJ1bnF1ZXVlLCBhbiBpZGxlciBjYW4gc3RlYWwgaXQKPgo+PiBCVFcsIGlmIHRoZSBzeXN0ZW0g aXMgaW4gaGVhdnkgbG9hZCwgaG93IG11Y2ggY2hhbmNlIHdvdWxkIHdlIGhhdmUKPj4gaWRsZSBw Y3B1Pwo+PiAKPkl0J3Mgbm90IHZlcnkgbGlrZWx5IHRoYXQgdGhlcmUgd2lsbCBiZSBpZGxlIHBj cHVzIGluIGEgdmVyeSBidXN5Cj5zeXN0ZW0sIEkgYWdyZWUuCj4KPj4gPiA+IFdlIGNhbiBkaXZp ZGUgdGhpcyBpbiB0aHJlZSBzdGVwczoKPj4gPiA+IGEpIFNlbmQgSVBJIHRvIHRoZSB0YXJnZXQg Q1BVIGFuZCB0ZWxsIGl0IHdoaWNoIHZjcHUgd2Ugd2FudCBpdAo+PiA+ID4gdG/CoAo+PiA+ID4g d2FrZSB1cC4KPj4gPiA+IGIpIFRoZSBpbnRlcnJ1cHQgaGFuZGxlciBvbiB0YXJnZXQgY3B1IGlu c2VydCB2Y3B1IHRvIGEgcGVyY3B1Cj4+ID4gPiBxdWV1ZcKgCj4+ID4gPiBhbmQgcmFpc2UKPj4g PiA+IMKgwqDCoHNvZnRpcnEuCj4+ID4gPiBjKSBzb2Z0aXJxIHdpbGwgZGVxdWV1ZSB0aGUgdmNw dSBhbmQgd2FrZSBpdCB1cC4KPj4gPiA+IAo+PiA+IEknbSBub3Qgc3VyZSBJIHNlZSBob3cgeW91 IHRoaW5rIHRoaXMgd291bGQgaW1wcm92ZSB0aGUgc2l0dWF0aW9uLgo+PiA+IAo+PiA+IFNvLCBx dWlja2x5LCByaWdodCBub3c6Cj4+ID4gCj4+ID4gLSBsZXQncyBzYXkgdmNwdSAyIG9mIGRvbWFp biAyIChmcm9tIG5vdyBkMnYyKSBpcyB3YWtpbmcgdXAKPj4gPiAtIGxldCdzIGFzc3VtZSBkMnYy LT5wcm9jZXNzb3IgPSA2Cj4+ID4gLSBsZXQncyBhc3N1bWUgdGhlIHdha2V1cCBpcyBoYXBwZW5p bmcgb24gcGNwdSA0Cj4+ID4gCj4+ID4gUmlnaHQgbm93Ogo+PiA+IAo+PiA+IC0gb24gcGNwdSA0 LCB2Y3B1X3dha2UoZDJ2MikgdGFrZXMgdGhlIHNjaGVkdWxlciBsb2NrIG9mIGQydjIsCj4+ID4g wqAgd2hpY2ggaXMgdGhlIHJ1bnF1ZXVlIGxvY2sgb2YgcGNwdSA2IChpbiBDcmVkaXQxLCB0aGVy ZSBpcyAxCj4+ID4gwqAgcnVucXVldWUgcGVyIHBjcHUsIGFuZCBsb2NrcyBhcmUgcGVyLWNwdSBh bHJlYWR5KQo+PiA+IC0gaW4gY3NjaGVkX3ZjcHVfd2FrZShkMnYyKSwgZDJ2MiBpcyBpbnNlcnRl ZCBpbiBwY3B1J3MgNiBydW5xdWV1ZQo+PiA+IC0gc3RpbGwgZXhlY3V0aW5nIG9uIHBjcHUgNCwg X19ydW5xX3RpY2tsZSgpIGlzIGNhbGxlZCwgYW5kIGl0Cj4+ID4gwqAgZGV0ZXJtaW5lcyBvbiB3 aGljaCBwY3B1IGQydjIgc2hvdWxkIHJ1bgo+PiA+IC0gaXQgcmFpc2VzIHRoZSBTQ0hFRFVMRV9T T0ZUSVJRIGZvciBzdWNoIHBjcHUuIExldCdzIGxvb2sgYXQgdGhlCj4+ID4gwqAgZm9sbG93aW5n IHR3byBjYXNlczoKPj4gPiDCoMKgwqBhKSBpZiBpdCB3YXMgZGV0ZXJtaW5lZCB0aGF0IGQydjIg c2hvdWxkIHJ1biBvbiBwY3B1IDY6Cj4+ID4gwqDCoMKgwqDCoMKgwqAtIGluIGEgKGxpdHRsZSwg aG9wZWZ1bGx5KSB3aGlsZSwgcGNwdSA2IHdpbGwgc2NoZWR1bGUKPj4gPiDCoMKgwqDCoMKgwqDC oC0gaXQgdGFrZXMgaXRzIG93biBydW5xdWV1ZSBsb2NrCj4+ID4gwqDCoMKgwqDCoMKgwqAtIGl0 IGZpbmRzIGQydjIgaW4gdGhlcmUsIGFuZCBydW5zIGl0Cj4+IEV2ZW4gaW4gdGhpcyBjYXNlLCBp dCBkZXBlbmRzIG9uIHRoZSBwcmlvcml0eSBvZiBkMnYyIHdoZXRoZXIgaXQKPj4gd291bGQgYmUg cnVuCj4+IG5vdy4gUmlnaHQ/Cj4+IAo+WWVzLiBCdXQgYm90aCBpbiA0LjEgYW5kIGluIGN1cnJl bnQgc3RhZ2luZywgd2Ugb25seSByYWlzZQo+U0NIRURVTEVfU09GVElSUSBvbiBwY3B1IDYsIGlm IGFuZCBvbmx5IGlmIHRoZSBwcmlvcml0eSBvZiB0aGUgd2FraW5nCj52Y3B1IGlzIGhpZ2hlciBh bmQgaXQgc2hvdWxkIHByZWVtcHQgdGhlIGN1cnJlbnRseSBydW5uaW5nIHZjcHUuCj4KPj4gPiDC oMKgwqBiKSBpZiBpdCB3YXMgZGV0ZXJtaW5lZCB0aGF0IGQydjIgc2hvdWxkIHJ1biBvbiwgc2F5 LCBwY3B1IDk6Cj4+ID4gwqDCoMKgwqDCoMKgwqAtIGluIGEgKGxpdHRsZSwgaG9wZWZ1bGx5KSB3 aGlsZSwgcGNwdSA5IHdpbGwgc2NoZWR1bGUKPj4gPiDCoMKgwqDCoMKgwqDCoC0gaXQgdGFrZXMg aXRzIG93biBydW5xdWV1ZSBsb2NrCj4+ID4gwqDCoMKgwqDCoMKgwqAtIGlmIGl0IGhhcyBub3Ro aW5nIGluIGl0cyBydW5xdWV1ZSAobGlrZWx5LCBpZgo+PiA+IMKgwqDCoMKgwqDCoMKgwqDCoF9f cnVucV90aWNrbGUoKSBjaG9zZSBpdCwgYnV0IG5vdCBuZWNlc3NhcmlseSBhbmQgYWx3YXlzCj4+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgdHJ1ZSwgZXNwZWNpYWxseSB1bmRlciBoaWdoIGxvYWQpLCBp dCBsb29rcyBhcm91bmQgdG8KPj4gPiDCoMKgwqDCoMKgwqDCoMKgwqBzZWUgaWYgb3RoZXIgcGNw dXMgaGF2ZSBhbnkgdmNwdSB0aGF0IGl0IGNhbiBleGVjdXRlCj4+ID4gwqDCoMKgwqDCoMKgwqAt IGl0IHdpbGwgdHJ5IHRvIHRha2UgdGhlIGxvY2tzIG9mIHRoZSB2YXJpb3VzIHBjcHUncwo+PiA+ IMKgwqDCoMKgwqDCoMKgwqDCoHJ1bnF1ZXVlcyBpdCBjb21lcyBhY3Jvc3MKPj4gPiDCoMKgwqDC oMKgwqDCoC0gaWYgaXQgbWFuYWdlcyB0byB0YWtlIHRoZSBsb2NrIG9mIHBjcHUncyA2IHJ1bnF1 ZXVlLCBpdAo+PiA+IMKgwqDCoMKgwqDCoMKgwqDCoHNlZXMgZDJ2MiBpbiBpdCwgc3RlYWwgaXQg YW5kIHJ1biBpdC4KPj4gT2gsIG15IHVuZGVyc3RhbmRpbmcgbWF0Y2hlcyB5b3VycyA6LSkKPj4g Cj4+IEJZVywgd2UgYWxzbyBmb3VuZCBpbiBjc2NoZWRfbG9hZF9iYWxhbmNlKCkgd2lsbCBob2xk IHRoZSBzY2hlZHVsZQo+PiBsb2NrLCBidXQKPj4gbm90IGZvdW5kIGEgcHJvcGVyIHZjcHUgdG8g c3RlYWwuIE1heWJlIHRoaXMgd291bGQgYmUgYSBwb3RlbnRpYWwKPj4gb3B0aW1pemF0aW9uCj4+ IHBvaW50Lgo+PiAKPk1tbS4uLiBJIGFjdHVhbGx5IGRvbid0IHVuZGVyc3RhbmQgd2hhdCB5b3Ug bWVhbiBoZXJlLi4uIHdoYXQgaXMgdGhlCj5wb3NzaWJsZSBvcHRpbWl6YXRpb24/Cj4KPj4gPiBX aXRoIHlvdXIgbW9kaWZpY2F0aW9ucywgQUZBSUNUOgo+PiA+IAo+PiA+IC0gb24gcGNwdSA0LCBu b3RpZnlfcmVtb3RlX3ZjcHVfd2FrZShkMnYyKSB0YWtlcyB0aGUgd2FrZV92Y3B1X2xvY2sKPj4g PiDCoCBvZiBwY3B1IDYgYW5kIHF1ZXVlIGQydjIgaW4gcGNwdSdzIDYgZGVmZXJyZWQgd2FrZXVw IGxpc3QKPj4gPiAtIHBva2UgcGNwdSA2IHdpdGggYW4gSVBJCj4+ID4gLSBpbiBhIChsaXR0bGUs IGhvcGVmdWxseSkgd2hpbGUsIHBjcHUgNiByZWFjdCB0byB0aGUgSVBJIGFuZCwKPj4gPiDCoCBf SV90aGlua18sIGNhbGwgdmNwdV93YWtlKGQydjIpID8gWypdCj4+IFlvdSBhcmUgYWxtb3N0IHJp Z2h0LiBIZXJlIGluIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciwgaXQgZG9lcyB0d28KPj4gdGhpbmdz Ogo+PiAxLiBlY2hvIGJhY2sgbm90aWZ5X3JlbW90ZV92Y3B1X3dha2UoKSBpdCBmaW5pc2hlcyB0 aGUgam9iCj4+IDIuIHJhaXNlIGEgc2VwYXJhdGUgc29mdGlycSwgd2hpY2ggd2lsbCBjYWxsIHZj cHVfd2FrZShkMnYyKQo+PiAKPj4gPiAKPj4gPiAtIG9uIHBjcHUgNiwgdmNwdV93YWtlKGQydjIp IHRha2VzIGl0cyBvd24gcnVucXVldWUgbG9jawo+PiA+IC0gaW4gY3NjaGVkX3ZjcHVfd2FrZShk MnYyKSwgZDJ2MiBpcyBpbnNlcnRlZCBpbiBwY3B1J3MgNiBydW5xdWV1ZQo+PiA+IC0gb24gcGNw dSA2LCBfX3J1bnFfdGlja2xlKCkgaXMgY2FsbGVkLCBhbmQgaXQgZGV0ZXJtaW5lcyBvbiB3aGlj aAo+PiA+IMKgIHBjcHUgZDJ2MiBzaG91bGQgcnVuCj4+IEF0IHRoaXMgcGxhY2UsIHRoZSBiZWhh dmlvciBvZiBfX3J1bl90aWNrbGUoKSBpcyB3aGF0IEkgbWVudGlvbmVkCj4+IGFib3ZlLiBSYWlz ZQo+PiBzb2Z0aXJxIG9uIHBjcHU2IGFuZCBpZGxlIHBjcHVzLiBXaG8gaXMgZmFzdGVyLCB3aG8g Z2V0IGQydjIuCj4+Cj5Tb3J0IG9mLCB5ZXMuIEluIGdlbmVyYWwsIHlvdSBjYW4gZXhwZWN0IHBj cHUgNiBnb2luZyB0aHJvdWdoCj5jc2NoZWRfc2NoZWR1bGUoKSwgYW5kIGhlbmNlIHNldHRpbmcg ZDJ2MiB0byBydW4sIHRvIGJlIGZhc3RlciB0aGF0Cj5TQ0hFRFVMRV9TT0ZJUlEgYmVpbmcgbm90 aWZpZWQgdG8gc29tZW9uZSByZW1vdGUsIGFuZCBpdCBzY2hlZHVsaW5nIGFuZAo+Z2V0dGluZyB0 byB3b3JrIHN0ZWFsaW5nIGZyb20gcGNwdSA2J3MgcnVucXVldWUuCj4KPkhvd2V2ZXIsIHRoYXQg aXMgdGhlIGNhc2Ugb25seSBpZiBkMnYyIGhhZCBoaWdoZXIgcHJpb3JpdHkgdGhhbiB3aGF0IGlz Cj5ydW5uaW5nIG9uIHBjcHUgNi4gSWYgaXQgZG9lcyBub3QsIHlvdToKPsKgLSBfZG9uJ3RfIHRp Y2tsZSBwY3B1IDYKPsKgLSB0aWNrbGUgb25lIG9yIG1vcmUgaWRsZXJzLCBpZiBhbnkuCj4KPlNv LCBhZ2FpbiwgaXQncyBub3QgdGhhdCB5b3UgYWx3YXlzIHdha2UgYW5kIHJ1biBpdCBvbiBwY3B1 IDYKPgo+PiA+IC0gaXQgcmFpc2VzIHRoZSBTQ0hFRFVMRV9TT0ZUSVJRIGZvciBzdWNoIHBjcHUu IExldCdzIGxvb2sgYXQgdGhlCj4+ID4gwqAgZm9sbG93aW5nIHR3byBjYXNlczoKPj4gPiDCoMKg wqBhKSBpZiBpdCB3YXMgZGV0ZXJtaW5lZCB0aGF0IGQydjIgc2hvdWxkIHJ1biBvbiBwY3B1IDYK Pj4gPiDCoMKgwqDCoMKgwqAoaS5lLiwgU0NIRURVTEVfU09GVElSUSB3YXMgcmFpc2VkIGJ5IHBj cHUgNiBvbiBpdHNlbGYpOgo+PiA+IMKgwqDCoMKgwqDCoMKgLSBhdCB0aGUgZmlyc3Qgc29mdGly cSBjaGVjaywgcGNwdSA2IHdpbGwgc2NoZWR1bGUKPj4gPiDCoMKgwqDCoMKgwqDCoC0gaXQgdGFr ZXMgaXRzIG93biBydW5xdWV1ZSBsb2NrCj4+ID4gwqDCoMKgwqDCoMKgwqAtIGl0IGZpbmRzIGQy djIgaW4gdGhlcmUsIGFuZCBydW5zIGl0Cj4+ID4gwqDCoMKgYikgaWYgaXQgd2FzIGRldGVybWlu ZWQgdGhhdCBkMnYyIHNob3VsZCBydW4gb24sIHNheSwgcGNwdSA5Ogo+PiA+IMKgwqDCoMKgwqDC oMKgLSBpbiBhIChsaXR0bGUsIGhvcGVmdWxseSkgd2hpbGUsIHBjcHUgOSB3aWxsIHNjaGVkdWxl Cj4+ID4gwqDCoMKgwqDCoMKgwqAtIGl0IHRha2VzIGl0cyBvd24gcnVucXVldWUgbG9jawo+PiA+ IMKgwqDCoMKgwqDCoMKgLSBpZiBpdCBoYXMgbm90aGluZyBpbiBpdHMgcnVucXVldWUgKGxpa2Vs eSwgaWYKPj4gPiDCoMKgwqDCoMKgwqDCoMKgwqBfX3J1bnFfdGlja2xlKCkgY2hvc2UgaXQsIGJ1 dCBub3QgbmVjZXNzYXJpbHkgYW5kIGFsd2F5cwo+PiA+IMKgwqDCoMKgwqDCoMKgwqDCoHRydWUs IGVzcGVjaWFsbHkgdW5kZXIgaGlnaCBsb2FkKSwgaXQgbG9va3MgYXJvdW5kIHRvCj4+ID4gwqDC oMKgwqDCoMKgwqDCoMKgc2VlIGlmIG90aGVyIHBjcHVzIGhhdmUgYW55IHZjcHUgdGhhdCBpdCBj YW4gZXhlY3V0ZQo+PiA+IMKgwqDCoMKgwqDCoMKgLSBpdCB3aWxsIHRyeSB0byB0YWtlIHRoZSBs b2NrcyBvZiB0aGUgdmFyaW91cyBwY3B1J3MKPj4gPiDCoMKgwqDCoMKgwqDCoMKgwqBydW5xdWV1 ZXMgaXQgY29tZXMgYWNyb3NzCj4+ID4gwqDCoMKgwqDCoMKgwqAtIGlmIGl0IG1hbmFnZXMgdG8g dGFrZSB0aGUgbG9jayBvZiBwY3B1J3MgNiBydW5xdWV1ZSwgaXQKPj4gPiDCoMKgwqDCoMKgwqDC oMKgwqBzZWVzIGQydjIgaW4gaXQsIHN0ZWFsIGl0IGFuZCBydW4gaXQuCj4+ID4gCj4+ID4gWypd IEkgZG9uJ3Qgc2VlIGluIHRoZSBjb2RlIHlvdSBzaGFyZWQgd2hhdCBoYXBwZW5zIGluIHJlYWN0 aW9uIHRvCj4+ID4gdGhlIElQSSBXQUtFVVBfVEFTS19WRUNUT1IsIHNvIEknbSBnb2luZyB0byBh c3N1bWUgdGhhdCBpdCBhY3R1YWxseQo+PiA+IGNhbGxzIHZjcHVfd2FrZSgpCj4+ID4gCj4+ID4g U28sIGJhc2ljYWxseSwgaXQgbG9va3MgdG8gbWUgdGhhdCB5b3UncmUgYWRkaW5nIGEgbGV2ZWwg b2YKPj4gPiBpbmRpcmVjdGlvbiwgSSdtIG5vdCBzdXJlIGZvciB3aGF0IGJlbmVmaXQuCj4KPj4g SW4gbXkgbWluZCwgd2UgYXJlIHRyeWluZyB0byByZWR1Y2UgdGhlIGNvbnRlbnRpb24gb24gc2No ZWR1bGUgbG9jawo+PiBmcm9tIHR3bwo+PiBhc3BlY3RzOgo+PiAxLiBmb3IgdGhvc2UgdmNwdXMg d291bGQgcnVuIG9uIG90aGVyIHBjcHUsIGl0IHdpbGwgdGFrZQo+PiB3YWtlX3ZjcHVfbG9jawo+ PiDCoMKgwqBpbnN0ZWFkIG9mIHNjaGVkdWxlIGxvY2sKPj4KPkkgZG9uJ3Qgc2VlIGhvdyB5b3Ug Y2FuIHNheSAiaW5zdGVhZCIuIEl0IGxvb2tzIHRvIG1lIHRoYXQsIGZvciB0aG9zZQo+dmNwdXMg d2hhdCB3b3VsZCBydW4gb24gb3RoZXIgcGNwdSwgd2UgbmVlZCB0byB0YWtlIHdha2VfdmNwdV9s b2NrCj5faW5fYWRkaXRpb25fIHRvIHRoZSBydW5xdWV1ZSBsb2NrLgo+Cj4+IDIuIGFuZCBpbiB2 Y3B1X3dha2UoKSwgaXQgd2lsbCBub3QgZ3JhYiBhIHJlbW90ZSBzY2hlZHVsZSBsb2NrLCB3aGlj aAo+PiBhbHNvCj4+IMKgwqDCoHJlZHVjZSB0aGUgY2FjaGUgY29oZXJlbmN5IGJldHdlZW4gcGNw dXMKPj4gCj5SaWdodC4gVGFraW5nIHRoZSB3YWtlX3ZjcHVfbG9jayBvZiBwY3B1IDYgZnJvbSBw Y3B1IDQgaXMgdGFraW5nIGEKPnJlbW90ZSBsb2NrLCB0aG91Z2guCj4KPj4gPiBJbiBmYWN0LCBp biB0aGUgYmVzdCBjYXNlIChpLmUuLCBkMnYyIHdpbGwgYWN0dWFsbHkgYmUgcnVuIG9uIGl0cwo+ PiA+IHYtPnByb2Nlc3NvciksIGluIHRoZSBvcmlnaW5hbCBjb2RlIHRoZXJlIGlzOgo+PiA+IC0g MSBJUEkgKFNDSEVEVUxFX1NPRlRJUlEpIGZyb20gcGNwdSA0IHRvIHBjcHUgNi4KPj4gPiBJbiB5 b3VyIGNhc2UsIHRoZXJlIGlzOgo+PiA+IC0gMSBJUEkgKFNDSEVEVUxFX1NPRlRJUlEpIGZyb20g cGNwdSA0IHRvIHBjcHUgNgo+PiA+IC0gMSBzb2Z0aXJxIChhZ2FpbiBTQ0hFRFVMRV9TT0ZUSVJR KSB0byBzZWxmIG9uIHBjcHUgNi4KPj4gPiAKPj4gT3VyIGlkZWEgbWF5IGxvb2tzIGxpa2UgdGhp czoKPj4gwqAtIDEgSVBJIChXQUtFVVBfVEFTS19WRUNUT1IpIGZyb20gcGNwdSA0IHRvIHBjcHUg Ngo+PiDCoC0gMSBzb2Z0aXJxIChTQ0hFRFVMRV9XQUtFVVApIHRvIHNlbGYgb24gcGNwdSA2IHRv IHF1ZXVlIHRoZSB2Y3B1Lgo+PiDCoC0gMSBzb2Z0aXJxIChTQ0hFRFVMRV9TT0ZUSVJRKSB0byBz ZWxmIG9uIHBjcHUgNi4KPj4gCj5TbywgaXQncyBldmVuIHdvcnNlIHRoYW4gaG93IEkgaW1hZ2lu ZWQhIDotUAo+Cj4+ID4gQWxzbywgYXMgZmFyIGFzIGxvY2tpbmcgd2l0aGluIHRoZSB3YWtldXAg cGF0aCBpcyBjb25jZXJuZWQsIGluIHRoZQo+PiA+IG9yaWdpbmFsIGNvZGU6Cj4+ID4gLSB0aGUg cnVucXVldWUgbG9jayBvZiBwY3B1IDYgaXMgaGVsZCBmb3IgdGhlIHRpbWUgb2YgdmNwdV93YWtl KCkKPj4gPiDCoCAoaS5lLiwgZm9yIHRoZSB0aW1lIG9mIF9fcnVucV9pbnNlcnQoKSBhbmQgX19y dW5xX3RpY2tsZSgpLgo+PiA+IEluIHlvdXIgY2FzZToKPj4gPiAtIHRoZSB3YWtlX3ZjcHVfbG9j ayBvZiBwY3B1IDYgaXMgaGVsZCBkdXJpbmcgcXVldWVpbmcgb2YgdGhlCj4+ID4gwqAgZGVmZXJy ZWQgd2FrZXVwCj4+ID4gLSB0aGUgcnVucXVldWUgbG9jayBvZiBwY3B1IDYgaXMgaGVsZCBmb3Ig dGhlIHRpbWUgb2YgdmNwdV93YWtlKCkKPj4gPiAKPj4gVGhlIHdha2VfdmNwdV9sb2NrIGlzIGhv bGQgaW4gdGhlIGZpcnN0IHN0ZXAgaW4gYWJvdmUuCj4+IFRoZSBydW5xdWV1ZSBsb2NrKEkgdGhp bmsgeW91IG1lYW4gdGhlIHNjaGVkdWxlIGxvY2s/KSB3b24ndCBiZSB0YWtlbgo+PiBpbiB0aGlz Cj4+IGNhc2UuCj4+IAo+SXQgd2lsbCBiZSB0YWtlbiwgZm9yIGV4ZWN1dGluZyB2Y3B1X3dha2Uo KS4gRnJvbSB5b3VyIG93biBkZXNjcmlwdGlvbgo+b2YgdGhlIG1lY2hhbmlzbSBhYm92ZToKPgo+ Ik91ciBpZGVhIG1heSBsb29rcyBsaWtlIHRoaXM6Cj7CoCDCoDEpIDEgSVBJIChXQUtFVVBfVEFT S19WRUNUT1IpIGZyb20gcGNwdSA0IHRvIHBjcHUgNgo+wqAgwqAyKSAxIHNvZnRpcnEgKFNDSEVE VUxFX1dBS0VVUCkgdG8gc2VsZiBvbiBwY3B1IDYgdG8gcXVldWUgdGhlCj7CoCDCoCDCoCB2Y3B1 Lgo+wqAgwqAzKSAxIHNvZnRpcnEgKFNDSEVEVUxFX1NPRlRJUlEpIHRvIHNlbGYgb24gcGNwdSA2 LiIKPgo+MSkgcnVucyBvbiBwY3B1IDQgYW5kIHRha2VzIHBjcHUncyA2IHdha2VfdmNwdV9sb2Nr Cj4yKSBydW5zIG9uIHBjcHUgNiBhbmQgdGFrZXMgcGNwdSc2IDYgcnVucXVldWUgbG9jaywgZm9y IHZjcHVfd2FrZSgpCj4zKSBydW5zIG9uIHBjcHUgNiBhbmQgdGFrZXMgcGNwdSdzIDYgcnVucXVl dWUgbG9jaywgZm9yCj7CoCDCoGNzY2hlZF9zY2hlZHVsZSgpCj4KPj4gPiAKPj4gPiAoaS5lLiwg Zm9yIHRoZSB0aW1lIG9mIF9fcnVucV9pbnNlcnQoKSBhbmQgX19ydW5xX3RpY2tsZSgpLgo+PiA+ IAo+PiA+IFdoaWNoLCB0byBtZSwgbG9va3MgbGlrZSBib3RoIG1vcmUgaW50ZXItQ1BVIGNvbW11 bmljYXRpb24gb3ZlcmhlYWQKPj4gPiBhbmQgbW9yZSBjaGFuY2VzIGZvciBsb2NrIGNvbnRlbnRp b24uCj4+IEhtbS4uLiB5ZXMsIG1vcmUgaW50ZXItQ1BVIGNvbW11bmljYXRpb24sIHdoaWxlIGxl c3MgbG9jayBjb250ZW50aW9uCj4+IEkgdGhpbmsuCj4+IAo+TW9yZSBpbnRlci1DUFUgY29tbXVu aWNhdGlvbiwgdGhlIHNhbWUgbGV2ZWwgb2YgbG9jYWwgbG9jayBjb250ZW50aW9uCj5wbHVzIHNv bWUgYWRkZWQgbW9kZXJhdGVseSB0byBsb3cgY29udGVudGVkIHJlbW90ZSBsb2NrIGNvbnRlbnRp b24sCj5BRkFJQ1QuCj4KPj4gPiBTbywgYWdhaW4sIG1vcmUgSVBJcyBhbmQgbW9yZSAocG90ZW50 aWFsKSBsb2NrIGNvbnRlbnRpb24uCj4+ID4gCj4+ID4gVHJ1ZSB0aGUgcXVldWVpbmcgaW50byB0 aGUgZGVmZXJyZWQgd2FrZXVwIGxpc3Qgd2lsbCBiZSB2ZXJ5IHNpbXBsZQo+PiA+IGFuZCBxdWlj aywgYW5kIGhlbmNlIHRoZSBjcml0aWNhbCBzZWN0aW9uIG5lZWRlZCBmb3IgaW1wbGVtZW50aW5n Cj4+ID4gaXQgdmVyeSBzaG9ydC4gQnV0IHRoZSBwcm9ibGVtIGlzIHRoYXQgeW91IGFyZSBub3Qg c2hvcnRlbmluZwo+PiA+IHNvbWV0aGluZyBsb25nLCBvciBzcGxpdHRpbmcgc29tZXRoaW5nIGxv bmcgaW4gdHdvIHNob3J0ZXIgY2h1bmtzLAo+PiA+IHlvdSBhcmUgX2FkZGluZ18gc29tZXRoaW5n LCBhbmQgdGh1cyB5b3UgY2FuJ3QgcG9zc2libHkgd2luLiA6LS8KPj4gPiAKPj4gWWVzLCB3ZSBh cmUgbW92aW5nIHNvbWUgdGhpbmcsIGxldCBtZSBkaWdlc3QgaXQgZm9yIGEgd2hpbGUuCj4+IAo+ U3VyZS4gTGV0IG1lIGFsc28gYWRkIHRoYXQgSSdtIG5vdCBzYXlpbmcgaXQncyBub3QgZ29pbmcg dG8gd29yaywgb3IKPnRoYXQgaXQncyBub3QgZ29pbmcgdG8gaW1wcm92ZSB0aGUgc2l0dWF0aW9u Lgo+Cj5XaGF0IEknbSBzYXlpbmcgaXMgdGhhdCwgYXJjaGl0ZWN0dXJhbGx5LCBpdCdzIG5vdCB0 b28gZGlmZmVyZW50IGZyb20KPnRoZSBjdXJyZW50IHNpdHVhdGlvbiwgc28gSSB3b3VsZCBub3Qg ZXhwZWN0IHdvbmRlcnMgZnJvbSBqdXN0IHRoaXMuCj4KPldoYXQgSSdkIGRvIHdvdWxkIGJlIHRv IHRyeSBmaWd1cmluZyBvdXQgd2hlcmUgaXQgaXMgdGhhdCB0aGUgbW9zdAo+d2FpdGluZyB0aW1l IGlzIGJlaW5nIGFjY3VtdWxhdGVkLCBpLmUuLCB3aGljaCAqc3BlY2lmaWMqIGxvY2tpbmcKPmF0 dGVtcHRzIG9mIHRoZSBzY2hlZHVsZXIncyBydW5xdWV1ZXMnIGxvY2tzIGFyZSB0aGUgbW9zdCBj b250ZW5kZWQsCj5hbmQgZm9jdXMgb24gdGhvc2UgZmlyc3QuCj4KPklmIHlvdSdyZSBvbiBhIGJp ZyBob3N0LCBJIHRoaW5rIHRoZSB3YXkgaW4gd2hpY2ggQ3JlZGl0MSBkb2VzIGxvYWQKPmJhbGFu Y2luZyAoaS5lLiwgYnkgd29yayBzdGVhbGluZykgbWF5IGJlIHRoZSB0aGluZyB0byBibGFtZS4g QnV0IGFsbAo+dGhlc2UgYXJlIHRoaW5ncyB0aGF0IG9ubHkgcHJvZmlsaW5nIGFuZCBiZW5jaG1h cmtpbmcgY2FuIHJlYWxseSB0ZWxsIQo+Oi0pCj4KPkFzIGEgc2lkZSBub3RlLCB3ZSdyZSBhbHNv IHdvcmtpbmcgb24gc29tZXRoaW5nIHdoaWNoLCBhdCB0aGUgZW5kIG9mCj50aGUgZGF5LCBpcyBy YXRoZXIgc2ltaWxhciwgYWx0aG91Z2ggZm9yIGRpZmZlcmVudCBwdXJwb3Nlcy4gSW4gZmFjdCwK PnNlZSBoZXJlOgo+aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9hcmNoaXZlcy9odG1sL3hl bi1kZXZlbC8yMDE2LTA3L21zZzAxODkyLmh0bWwKPgoKRGFyaW8sCgpUb29rIGEgbG9vayBpbnRv IHlvdXIgY29kZSwgc29tZSBxdWVzdGlvbnMgYXMgYmVsb3c6CjEuIHZjcHVfd2FrZSBpcyBzcGxp dCBpbnRvIHR3byBjYXNlcywgdGhlIGZpcnN0IGNhc2UgaXMgIm5vdCBpbiBpcnEiIGFuZCAiaXJx CmVuYWJsZWQiLiBTb21lIHJlYXNvbiBmb3IgdGhpcyBjbGFzc2lmaWNhdGlvbj8gTWF5YmUgc29t ZSBiYWNrZ3JvdW5kIGtub3dsZWRnZQpJIG5lZWQgdG8gaGF2ZS4KCjIuIGluIHZjcHVfd2FrZSgp LCBJIHNlZSB5b3UgcmFpc2UgZGVmX3ZjcHVfd2FrZSBzb2Z0aXJxIHdoZW4gdGhlIGxpc3QgaXMK ZW1wdHkuIGFuZCB0aGVuIGFkZCB0aGUgdmNwdSB0byB0aGUgbGlzdC4gYW55IHJlYXNvbiBmb3Ig dGhpcyBzZXF1ZW5jZT8gQlRXLAphdCB0aGlzIG1vbWVudCB2Y3B1X3dha2UoKSBob2xkcyB0aGUg c3BpbiBsb2NrIGFuZCB2Y3B1X3dha2VfZGVmZXJyZWQoKSBzaG91bGQKdGFrZSB0aGUgc3BpbiBs b2NrIGJlZm9yZSBjb250aW51aW5nLgoKSW4gdGhlIGxhc3QgcGF0Y2gsIEkgc2F3IHlvdSBpbnRy b2R1Y2UgYSBmbGFnIHdha2V1cF90cmlnZ2VyZWQsIGFuZCB0aGVuCmNoYW5nZSB0aGUgc2VxdWVu Y2UgYSBsaXR0bGUuIFdoeSBhdCB0aGlzIHBsYWNlLCB5b3Ugd2FudCB0byBjaGFuZ2UgdGhlCnNl cXVlbmNlIGhlcmU/CgozLiBUaGUgbWFpbiBwdXJwb3NlIG9mIHRoaXMgc2VyaWVzIGlzIHRvIGVu YWJsZSBpcnEgZm9yICJzY2hlZHVsZXIgaGFuZGxlcnMiLgpJIGFtIG5vdCBzdXJlIHRoZSBvcmln aW5hbCBpbml0aWF0aXZlIGZvciB0aGlzLCB3aGlsZSBJIGd1ZXNzIHRoaXMgY291bGQKaW5jcmVh c2UgdGhlIHBhcmFsbGVsaXNtLCByaWdodD8gQW5kIEkgdGhpbmsgd2UgaGF2ZSB0byBtYWtlIHN1 cmUgdGhvc2UKZnVuY3Rpb25zIGFyZSBub3QgcmUtZW50cmFudCwgb3RoZXJ3aXNlIHRoZXkgd2ls bCBmYWNlIGRlYWQgbG9jayB3aGVuIGxvY2tpbmcKb24gdGhlIHNhbWUgc3Bpbi1sb2NrLgoKNC4g VGhpcyBsb29rcyBzaW1pbGFyIHdpdGggd2hhdCB3ZSB0cnkgdG8gYWNoaWV2ZS4gV2hpbGUgd2Ug dHJ5IHRvIGdpdmUgdGhlCnZjcHUgdG8gc29tZW9uZSBlbHNlLCB3aG8gd2UgdGhpbmsgbWF5IHBp Y2sgaXQsIHRvIHdha2UgaXQgdXAsIGFuZCBpbiB5b3VyCmltcGxlbWVudGF0aW9uLCB5b3UgYXQg dGhpcyB2Y3B1IHRvIGl0cyBvd24gbGlzdCBhbmQgd2FrZSBpdCB1cCBzb21lIHRpbWUKbGF0ZXIu IEkgZ3Vlc3MgbmV4dCBzdGVwIHlvdSB3YW50IHRvIGRvIGlzIHRvIG1ha2UgdGhlIHdha2V1cF9k ZWZlci5saXN0IGEKbG9jay1sZXNzIGxpc3QuCgo1LiBXZWxsLCB0aGlzIG1heSBub3QgcmVsZXZh bnQgdG8geW91ciBjb2RlIGRpcmVjdGx5LiBJIGZvdW5kIHNvbWUgZGlmZmVyZW5jZQpiZXR3ZWVu IHJhaXNlX3NvZnRpcnEoKSBhbmQgY3B1bWFza19yYWlzZV9zb2Z0aXJxKCkuIFRoZSBmaXJzdCBv bmUganVzdCBzZXQKcGVuZGluZyBiaXQsIHdoaWxlIHRoZSBzZWNvbmQgb25lIHdpbGwgc2VuZCBJ UEkuIF9fcnVucV90aWNrbGUoKSB1c2UgdGhlCnNlY29uZCBvbmUgdG8gc2VuZCBTQ0hFRFVMRSBz b2Z0aXJxLCB0aGlzIG1lYW5zIG90aGVyIHBjcHUgd291bGQgcmVhY3QKaW1tZWRpYXRlbHk/Cgo+ VGhlIGdvYWwgaXMgbm90IGhhdmluZyB0byBkaXNhYmxlIElSUXMgZHVyaW5nIHNjaGVkdWxpbmcs IGFuZCBJJ20KPmxvb2tpbmcgYXQga2VlcGluZyB0aGUgcGVyLXBjcHUgZGVmZXJyZWQgd2FrZXVw IGxpc3QgbG9ja2xlc3MsIGluIG9yZGVyCj5ub3QgdG8gYWRkIG1vcmUgbG9jayBjb250ZW50aW9u Lgo+Cj5JZiB5b3UncmUgaW50ZXJlc3RlZCBvbiBrbm93aW5nIG1vcmUgb3Igd29ya2luZyBvbiB0 aGF0LCBqdXN0IGxldCBtZQo+a25vdy4gQnV0LCBvZiBjb3Vyc2UsIHRoaXMgaGF2ZSB0byBiZSBk b25lIG9uIFhlbiB1cHN0cmVhbSwgbm90IG9uIGFuCj5vbGQgdmVyc2lvbi4KPgo+UmVnYXJkcywK PkRhcmlvCj4tLSAKPjw8VGhpcyBoYXBwZW5zIGJlY2F1c2UgSSBjaG9vc2UgaXQgdG8gaGFwcGVu IT4+IChSYWlzdGxpbiBNYWplcmUpCj4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+RGFyaW8gRmFnZ2lvbGksIFBoLkQsIGh0 dHA6Ly9hYm91dC5tZS9kYXJpby5mYWdnaW9saQo+U2VuaW9yIFNvZnR3YXJlIEVuZ2luZWVyLCBD aXRyaXggU3lzdGVtcyBSJkQgTHRkLiwgQ2FtYnJpZGdlIChVSykKPgoKCgotLSAKUmljaGFyZCBZ YW5nXG5IZWxwIHlvdSwgSGVscCBtZQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu Lm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==