From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mukesh Rathor Subject: Re: RFC: very initial PVH design document Date: Tue, 26 Aug 2014 17:33:21 -0700 Message-ID: <20140826173321.0f632d3e@mantra.us.oracle.com> References: <53F759CC.7090406@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <53F759CC.7090406@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Roger Pau =?UTF-8?B?TW9ubsOp?= Cc: David Vrabel , Jan Beulich , xen-devel List-Id: xen-devel@lists.xenproject.org T24gRnJpLCAyMiBBdWcgMjAxNCAxNjo1NTowOCArMDIwMApSb2dlciBQYXUgTW9ubsOpIDxyb2dl ci5wYXVAY2l0cml4LmNvbT4gd3JvdGU6Cgo+IEhlbGxvLAo+IAo+IEkndmUgc3RhcnRlZCB3cml0 aW5nIGEgZG9jdW1lbnQgaW4gb3JkZXIgdG8gZGVzY3JpYmUgdGhlIGludGVyZmFjZSAKPiBleHBv c2VkIGJ5IFhlbiB0byBQVkggZ3Vlc3RzLCBhbmQgaG93IGl0IHNob3VsZCBiZSB1c2VkIChieSBn dWVzdCAKPiBPU2VzKS4gVGhlIGRvY3VtZW50IGlzIGZhciBmcm9tIGNvbXBsZXRlIChzZWUgdGhl IGFtb3VudCBvZiBUT0RPcyAKPiBzY2F0dGVyZWQgYXJvdW5kKSwgYnV0IGdpdmVuIHRoZSBsYWNr IG9mIGRvY3VtZW50YXRpb24gcmVnYXJkaW5nIFBWSAo+IEkgdGhpbmsgaXQncyBhIGdvb2Qgc3Rh cnRpbmcgcG9pbnQuIFRoZSBhaW0gb2YgdGhpcyBpcyB0aGF0IGl0IHNob3VsZAo+IGJlIGNvbW1p dHRlZCB0byB0aGUgWGVuIHJlcG9zaXRvcnkgb25jZSBpdCdzIHJlYWR5LiBHaXZlbiB0aGF0IHRo aXMKPiBpcyBzdGlsbCBhICp2ZXJ5KiBlYXJseSB2ZXJzaW9uIEknbSBub3QgZXZlbiBwb3N0aW5n IGl0IGFzIGEgcGF0Y2guCj4gCj4gUGxlYXNlIGNvbW1lbnQsIGFuZCB0cnkgdG8gZmlsbCB0aGUg aG9sZXMgaWYgcG9zc2libGUgOykuCj4gCj4gUm9nZXIuCj4gCj4gLS0tCj4gIyBQVkggU3BlY2lm aWNhdGlvbiAjCj4gCj4gIyMgUmF0aW9uYWxlICMjCj4gCj4gUFZIIGlzIGEgbmV3IGtpbmQgb2Yg Z3Vlc3QgdGhhdCBoYXMgYmVlbiBpbnRyb2R1Y2VkIG9uIFhlbiA0LjQgYXMgYQo+IERvbVUsIGFu ZCBvbiBYZW4gNC41IGFzIGEgRG9tMC4gVGhlIGFpbSBvZiBQVkggaXMgdG8gbWFrZSB1c2Ugb2Yg dGhlCj4gaGFyZHdhcmUgdmlydHVhbGl6YXRpb24gZXh0ZW5zaW9ucyBwcmVzZW50IGluIG1vZGVy biB4ODYgQ1BVcyBpbgo+IG9yZGVyIHRvIGltcHJvdmUgcGVyZm9ybWFuY2UuCj4gCj4gUFZIIGlz IGNvbnNpZGVyZWQgYSBtaXggYmV0d2VlbiBQViBhbmQgSFZNLCBhbmQgY2FuIGJlIHNlZW4gYXMg YSBQVgo+IGd1ZXN0IHRoYXQgcnVucyBpbnNpZGUgb2YgYW4gSFZNIGNvbnRhaW5lciwgb3IgYXMg YSBQVkhWTSBndWVzdAo+IHdpdGhvdXQgYW55IGVtdWxhdGVkIGRldmljZXMuIFRoZSBkZXNpZ24g Z29hbCBvZiBQVkggaXMgdG8gcHJvdmlkZQo+IHRoZSBiZXN0IHBlcmZvcm1hbmNlIHBvc3NpYmxl IGFuZCB0byByZWR1Y2UgdGhlIGFtb3VudCBvZgo+IG1vZGlmaWNhdGlvbnMgbmVlZGVkIGZvciBh IGd1ZXN0IE9TIHRvIHJ1biBpbiB0aGlzIG1vZGUgKGNvbXBhcmVkIHRvCj4gcHVyZSBQVikuCj4g Cj4gVGhpcyBkb2N1bWVudCB0cmllcyB0byBkZXNjcmliZSB0aGUgaW50ZXJmYWNlcyB1c2VkIGJ5 IFBWSCBndWVzdHMsCj4gZm9jdXNpbmcgb24gaG93IGFuIE9TIHNob3VsZCBtYWtlIHVzZSBvZiB0 aGVtIGluIG9yZGVyIHRvIHN1cHBvcnQgUFZILgo+IAo+ICMjIEVhcmx5IGJvb3QgIyMKPiAKPiBQ VkggZ3Vlc3RzIHVzZSB0aGUgUFYgYm9vdCBtZWNoYW5pc20sIHRoYXQgbWVhbnMgdGhhdCB0aGUg a2VybmVsIGlzCj4gbG9hZGVkIGFuZCBkaXJlY3RseSBsYXVuY2hlZCBieSBYZW4gKGJ5IGp1bXBp bmcgaW50byB0aGUgZW50cnkKPiBwb2ludCkuIEluIG9yZGVyIHRvIGRvIHRoaXMgWGVuIEVMRiBO b3RlcyBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZQo+IGd1ZXN0IGtlcm5lbCwgc28gdGhhdCB0aGV5 IGNvbnRhaW4gdGhlIGluZm9ybWF0aW9uIG5lZWRlZCBieSBYZW4uCj4gSGVyZSBpcyBhbiBleGFt cGxlIG9mIHRoZSBFTEYgTm90ZXMgYWRkZWQgdG8gdGhlIEZyZWVCU0QgYW1kNjQga2VybmVsCj4g aW4gb3JkZXIgdG8gYm9vdCBhcyBQVkg6Cj4gCj4gICAgIEVMRk5PVEUoWGVuLCBYRU5fRUxGTk9U RV9HVUVTVF9PUywgICAgICAgLmFzY2l6LCAiRnJlZUJTRCIpCj4gICAgIEVMRk5PVEUoWGVuLCBY RU5fRUxGTk9URV9HVUVTVF9WRVJTSU9OLCAgLmFzY2l6LAo+IF9fWFNUUklORyhfX0ZyZWVCU0Rf dmVyc2lvbikpIEVMRk5PVEUoWGVuLAo+IFhFTl9FTEZOT1RFX1hFTl9WRVJTSU9OLCAgICAuYXNj aXosICJ4ZW4tMy4wIikgRUxGTk9URShYZW4sCj4gWEVOX0VMRk5PVEVfVklSVF9CQVNFLCAgICAg IC5xdWFkLCAgS0VSTkJBU0UpIEVMRk5PVEUoWGVuLAo+IFhFTl9FTEZOT1RFX1BBRERSX09GRlNF VCwgICAucXVhZCwgIEtFUk5CQVNFKSBFTEZOT1RFKFhlbiwKPiBYRU5fRUxGTk9URV9FTlRSWSwg ICAgICAgICAgLnF1YWQsICB4ZW5fc3RhcnQpIEVMRk5PVEUoWGVuLAo+IFhFTl9FTEZOT1RFX0hZ UEVSQ0FMTF9QQUdFLCAucXVhZCwgIGh5cGVyY2FsbF9wYWdlKSBFTEZOT1RFKFhlbiwKPiBYRU5f RUxGTk9URV9IVl9TVEFSVF9MT1csICAgLnF1YWQsICBIWVBFUlZJU09SX1ZJUlRfU1RBUlQpCj4g RUxGTk9URShYZW4sIFhFTl9FTEZOT1RFX0ZFQVRVUkVTLCAgICAgICAuYXNjaXosCj4gIndyaXRh YmxlX2Rlc2NyaXB0b3JfdGFibGVzfGF1dG9fdHJhbnNsYXRlZF9waHlzbWFwfHN1cGVydmlzb3Jf bW9kZV9rZXJuZWx8aHZtX2NhbGxiYWNrX3ZlY3RvciIpCj4gRUxGTk9URShYZW4sIFhFTl9FTEZO T1RFX1BBRV9NT0RFLCAgICAgICAuYXNjaXosICJ5ZXMiKSBFTEZOT1RFKFhlbiwKPiBYRU5fRUxG Tk9URV9MMV9NRk5fVkFMSUQsICAgLmxvbmcsICBQR19WLCBQR19WKSBFTEZOT1RFKFhlbiwKPiBY RU5fRUxGTk9URV9MT0FERVIsICAgICAgICAgLmFzY2l6LCAiZ2VuZXJpYyIpIEVMRk5PVEUoWGVu LAo+IFhFTl9FTEZOT1RFX1NVU1BFTkRfQ0FOQ0VMLCAubG9uZywgIDApIEVMRk5PVEUoWGVuLAo+ IFhFTl9FTEZOT1RFX0JTRF9TWU1UQUIsICAgICAuYXNjaXosICJ5ZXMiKQoKSXQgd2lsbCBiZSBo ZWxwZnVsIHRvIGFkZDoKCk9uIHRoZSBsaW51eCBzaWRlLCB0aGUgYWJvdmUgY2FuIGJlIGZvdW5k IGluIGFyY2gveDg2L3hlbi94ZW4taGVhZC5TLgoKCj4gSXQgaXMgaW1wb3J0YW50IHRvIGhpZ2hs aWdodCB0aGUgZm9sbG93aW5nIG5vdGVzOgo+IAo+ICAgKiBYRU5fRUxGTk9URV9FTlRSWTogY29u dGFpbnMgdGhlIG1lbW9yeSBhZGRyZXNzIG9mIHRoZSBrZXJuZWwKPiBlbnRyeSBwb2ludC4KPiAg ICogWEVOX0VMRk5PVEVfSFlQRVJDQUxMX1BBR0U6IGNvbnRhaW5zIHRoZSBtZW1vcnkgYWRkcmVz cyBvZiB0aGUKPiBoeXBlcmNhbGwgcGFnZSBpbnNpZGUgb2YgdGhlIGd1ZXN0IGtlcm5lbCAodGhp cyBtZW1vcnkgcmVnaW9uIHdpbGwgYmUKPiBmaWxsZWQgYnkgWGVuIHByaW9yIHRvIGJvb3Rpbmcp Lgo+ICAgKiBYRU5fRUxGTk9URV9GRUFUVVJFUzogY29udGFpbnMgdGhlIGxpc3Qgb2YgZmVhdHVy ZXMgc3VwcG9ydGVkIGJ5Cj4gdGhlIGtlcm5lbC4gSW4gdGhpcyBjYXNlIHRoZSBrZXJuZWwgaXMg b25seSBhYmxlIHRvIGJvb3QgYXMgYSBQVkgKPiBndWVzdCwgYnV0IHRob3NlIG9wdGlvbnMgY2Fu IGJlIG1peGVkIHdpdGggdGhlIG9uZXMgdXNlZCBieSBwdXJlIFBWCj4gZ3Vlc3RzIGluIG9yZGVy IHRvIGhhdmUgYSBrZXJuZWwgdGhhdCBzdXBwb3J0cyBib3RoIFBWIGFuZCBQVkggKGxpa2UKPiBM aW51eCkuIFRoZSBsaXN0IG9mIG9wdGlvbnMgYXZhaWxhYmxlIGNhbiBiZSBmb3VuZCBpbiB0aGUK PiBgZmVhdHVyZXMuaGAgcHVibGljIGhlYWRlci4KCkhtbS4uLiBmb3IgbGludXggSSdkIHdvcmQg dGhhdCBhcyBmb2xsb3dzOgoKQSBQVkggZ3Vlc3QgaXMgc3RhcnRlZCBieSBzcGVjaWZ5aW5nIHB2 aD0xIGluIHRoZSBjb25maWcgZmlsZS4gSG93ZXZlciwKZm9yIHRoZSBndWVzdCB0byBiZSBsYXVu Y2hlZCBhcyBhIFBWSCBndWVzdCwgaXQgbXVzdCBtaW5pbWFsbHkgYWR2ZXJ0aXNlIApjZXJ0YWlu IGZlYXR1cmVzIHdoaWNoIGFyZTogYXV0b190cmFuc2xhdGVkX3BoeXNtYXAsIGh2bV9jYWxsYmFj a192ZWN0b3IsIAp3cml0YWJsZV9kZXNjcmlwdG9yX3RhYmxlcywgYW5kIHN1cGVydmlzb3JfbW9k ZV9rZXJuZWwuIFRoaXMgaXMgZG9uZQp2aWEgWEVOX0VMRk5PVEVfRkVBVFVSRVMgYW5kIFhFTl9F TEZOT1RFX1NVUFBPUlRFRF9GRUFUVVJFUy4gU2VlCmxpbnV4OmFyY2gveDg2L3hlbi94ZW4taGVh ZC5TIGZvciBtb3JlIGluZm8uIEEgbGlzdCBvZiBhbGwgeGVuIGZlYXR1cmVzCmNhbiBiZSBmb3Vu ZCBpbiB4ZW46aW5jbHVkZS9wdWJsaWMvZmVhdHVyZXMuaC4gSG93ZXZlciwgYXQgcHJlc2VudAp0 aGUgYWJzZW5jZSBvZiB0aGVzZSBmZWF0dXJlcyBkb2VzIG5vdCBtYWtlIGl0IGF1dG9tYXRpY2Fs bHkgYm9vdCBpbiBQVgptb2RlLCBidXQgdGhhdCBtYXkgY2hhbmdlIGluIGZ1dHVyZS4gVGhlIHVs dGltYXRlIGdvYWwgaXMsIGlmIGEgZ3Vlc3QKc3VwcG9ydHMgdGhlc2UgZmVhdHVyZXMsIHRoZW4g Ym9vdCBpdCBhdXRvbWF0aWNhbGx5IGluIFBWSCBtb2RlLCBvdGhlcndpc2UKYm9vdCBpdCBpbiBQ ViBtb2RlLgoKW1lvdSBjYW4gbGVhdmUgb3V0IHRoZSBsYXN0IHBhcnQgaWYgeW91IHdhbnQsIG9y IGp1c3QgdGFrZSB3aGF0ZXZlciBmcm9tCmFib3ZlXS4KCj4gWGVuIHdpbGwganVtcCBpbnRvIHRo ZSBrZXJuZWwgZW50cnkgcG9pbnQgZGVmaW5lZCBpbgo+IGBYRU5fRUxGTk9URV9FTlRSWWAgd2l0 aCBwYWdpbmcgZW5hYmxlZCAoZWl0aGVyIGxvbmcgb3IgcHJvdGVjdGVkCj4gbW9kZSBkZXBlbmRp bmcgb24gdGhlIGtlcm5lbCBiaXRuZXNzKSBhbmQgc29tZSBiYXNpYyBwYWdlIHRhYmxlcwo+IHNl dHVwLgoKSWYgSSBtYXkgcmVwaHJhc2U6CgpHdWVzdCBpcyBsYXVuY2hlZCBhdCB0aGUgZW50cnkg cG9pbnQgc3BlY2lmaWVkIGluIFhFTl9FTEZOT1RFX0VOVFJZCndpdGggcGFnaW5nLCBQQUUsIGFu ZCBsb25nIG1vZGUgZW5hYmxlZC4gQXQgcHJlc2VudCBvbmx5IDY0Yml0IG1vZGUKaXMgc3VwcG9y dGVkLCBob3dldmVyLCBpbiBmdXR1cmUgY29tcGF0IG1vZGUgc3VwcG9ydCB3aWxsIGJlIGFkZGVk LgpBbiBpbXBvcnRhbnQgZGlzdGluY3Rpb24gZm9yIGEgNjRiaXQgUFZIIGlzIHRoYXQgaXQgaXMg bGF1bmNoZWQgYXQKcHJpdmlsZWdlIGxldmVsIDAgYXMgb3Bwb3NlZCB0byBhIDY0Yml0IFBWIGd1 ZXN0IHdoaWNoIGlzIGxhdW5jaGVkIGF0CnByaXZpbGVnZSBsZXZlbCAzLgoKPiBBbHNvLCB0aGUg YHJzaWAgKGBlc2lgIG9uIDMyYml0cykgcmVnaXN0ZXIgaXMgZ29pbmcgdG8gY29udGFpbiB0aGUK PiB2aXJ0dWFsIG1lbW9yeSBhZGRyZXNzIHdlcmUgWGVuIGhhcyBwbGFjZWQgdGhlIHN0YXJ0X2lu Zm8gc3RydWN0dXJlLgo+IFRoZSBgcnNwYCAoYGVzcGAgb24gMzJiaXRzKSB3aWxsIGNvbnRhaW4g YSBzdGFjaywgdGhhdCBjYW4gYmUgdXNlZCBieQo+IHRoZSBndWVzdCBrZXJuZWwuIFRoZSBzdGFy dF9pbmZvIHN0cnVjdHVyZSBjb250YWlucyBhbGwgdGhlIGluZm8gdGhlCj4gZ3Vlc3QgbmVlZHMg aW4gb3JkZXIgdG8gaW5pdGlhbGl6ZS4gTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUKPiBjb250 ZW50cyBjYW4gYmUgZm91bmQgb24gdGhlIGB4ZW4uaGAgcHVibGljIGhlYWRlci4KClNpbmNlIHRo ZSBhYm92ZSBpcyBhbGwgdHJ1ZSBmb3IgUFYgZ3Vlc3QsIHlvdSBjb3VsZCBiZWdpbiBpdCB3aXRo OgoKSnVzdCBsaWtlIGEgUFYgZ3Vlc3QsIHRoZSByc2kgLi4uLgoKPiAKPiAjIyMgSW5pdGlhbCBh bWQ2NCBjb250cm9sIHJlZ2lzdGVycyB2YWx1ZXMgIyMjCj4gCj4gSW5pdGlhbCB2YWx1ZXMgZm9y IHRoZSBjb250cm9sIHJlZ2lzdGVycyBhcmUgc2V0IHVwIGJ5IFhlbiBiZWZvcmUKPiBib290aW5n IHRoZSBndWVzdCBrZXJuZWwuIFRoZSBndWVzdCBrZXJuZWwgY2FuIGV4cGVjdCB0byBmaW5kIHRo ZQo+IGZvbGxvd2luZyBmZWF0dXJlcyBlbmFibGVkIGJ5IFhlbi4KPiAKPiBPbiBgQ1IwYCB0aGUg Zm9sbG93aW5nIGJpdHMgYXJlIHNldCBieSBYZW46Cj4gCj4gICAqIFBFIChiaXQgMCk6IHByb3Rl Y3RlZCBtb2RlIGVuYWJsZS4KPiAgICogRVQgKGJpdCA0KTogODAzODcgZXh0ZXJuYWwgbWF0aCBj b3Byb2Nlc3Nvci4KPiAgICogUEcgKGJpdCAzMSk6IHBhZ2luZyBlbmFibGVkLgo+IAo+IE9uIGBD UjRgIHRoZSBmb2xsb3dpbmcgYml0cyBhcmUgc2V0IGJ5IFhlbjoKPiAKPiAgICogUEFFIChiaXQg NSk6IFBBRSBlbmFibGVkLgo+IAo+IEFuZCBmaW5hbGx5IG9uIGBFRkVSYCB0aGUgZm9sbG93aW5n IGZlYXR1cmVzIGFyZSBlbmFibGVkOgo+IAo+ICAgKiBMTUUgKGJpdCA4KTogTG9uZyBtb2RlIGVu YWJsZS4KPiAgICogTE1BIChiaXQgMTApOiBMb25nIG1vZGUgYWN0aXZlLgo+IAo+ICpUT0RPKjog ZG8gd2UgZXhwZWN0IHRoaXMgZmxhZ3MgdG8gY2hhbmdlPyBBcmUgdGhlcmUgb3RoZXIgZmxhZ3Mg dGhhdAo+IG1pZ2h0IGJlIGVuYWJsZWQgZGVwZW5kaW5nIG9uIHRoZSBoYXJkd2FyZSB3ZSBhcmUg cnVubmluZyBvbj8KCkNhbid0IHRoaW5rIG9mIGFueXRoaW5nLi4uCgoKPiAjIyBNZW1vcnkgIyMK PiAKPiBTaW5jZSBQVkggZ3Vlc3RzIHJlbHkgb24gdmlydHVhbGl6YXRpb24gZXh0ZW5zaW9ucyBw cm92aWRlZCBieSB0aGUKPiBDUFUsIHRoZXkgaGF2ZSBhY2Nlc3MgdG8gYSBoYXJkd2FyZSB2aXJ0 dWFsaXplZCBNTVUsIHdoaWNoIG1lYW5zCj4gcGFnZS10YWJsZSByZWxhdGVkIG9wZXJhdGlvbnMg c2hvdWxkIHVzZSB0aGUgc2FtZSBpbnN0cnVjdGlvbnMgdXNlZAo+IG9uIG5hdGl2ZS4KCkRvIHlv dSB3YW5uYSBleHBhbmQgYSBiaXQgc2luY2UgdGhpcyBpcyBhbm90aGVyIGJpZyBkaXN0aW5jdGlv biBmcm9tCmEgUFYgZ3Vlc3Q/Cgp3aGljaCBtZWFucyB0aGF0IHBhZ2UgdGFibGVzIGFyZSBuYXRp dmUgYW5kIGd1ZXN0IG1hbmFnZWQuIApUaGlzIGFsc28gaW1wbGllcyB0aGF0IG1tdV91cGRhdGUg aHlwZXJjYWxsIGlzIG5vdCBhdmFpbGFibGUgdG8gYSBQVkgKZ3Vlc3QsIHVubGlrZSBhIFBWIGd1 ZXN0LiAgVGhlIGd1ZXN0IGlzIGNvbmZpZ3VyZWQgYXQgc3RhcnQgc28gaXQgY2FuIAphY2Nlc3Mg YWxsIHBhZ2VzIHVwdG8gc3RhcnRfaW5mby0+bnJfcGFnZXMuCgo+IFRoZXJlIGFyZSBob3dldmVy IHNvbWUgZGlmZmVyZW5jZXMgd2l0aCBuYXRpdmUuIFRoZSB1c2FnZSBvZiBuYXRpdmUKPiBNVFJS IG9wZXJhdGlvbnMgaXMgZm9yYmlkZGVuLCBhbmQgYFhFTlBGXypfbWVtdHlwZWAgaHlwZXJjYWxs cyBzaG91bGQKPiBiZSB1c2VkIGluc3RlYWQuIFRoaXMgY2FuIGJlIGF2b2lkZWQgYnkgc2ltcGx5 IG5vdCB1c2luZyBNVFJSIGFuZAo+IHNldHRpbmcgYWxsIHRoZSBtZW1vcnkgYXR0cmlidXRlcyB1 c2luZyBQQVQsIHdoaWNoIGRvZXNuJ3QgcmVxdWlyZQo+IHRoZSB1c2FnZSBvZiBhbnkgaHlwZXJj YWxscy4KPiAKPiBTaW5jZSBQVkggZG9lc24ndCB1c2UgYSBCSU9TIGluIG9yZGVyIHRvIGJvb3Qs IHRoZSBwaHlzaWNhbCBtZW1vcnkKPiBtYXAgaGFzIHRvIGJlIHJldHJpZXZlZCB1c2luZyB0aGUg YFhFTk1FTV9tZW1vcnlfbWFwYCBoeXBlcmNhbGwsCj4gd2hpY2ggd2lsbCByZXR1cm4gYW4gZTgy MCBtYXAuIFRoaXMgbWVtb3J5IG1hcCBtaWdodCBjb250YWluIGhvbGVzCj4gdGhhdCBkZXNjcmli ZSBNTUlPIHJlZ2lvbnMsIHRoYXQgd2lsbCBiZSBhbHJlYWR5IHNldHVwIGJ5IFhlbi4KPiAKPiAq VE9ETyo6IHdlIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRvIGRvIHdpdGggTU1JTyByZWdpb25z LCByaWdodCBub3cKPiBYZW4gc2V0cyBhbGwgdGhlIGhvbGVzIGluIHRoZSBuYXRpdmUgZTgyMCB0 byBNTUlPIHJlZ2lvbnMgZm9yIERvbTAgdXAKPiB0byA0R0IuIFdlIG5lZWQgdG8gZGVjaWRlIHdo YXQgdG8gZG8gd2l0aCBNTUlPIHJlZ2lvbnMgYWJvdmUgNEdCIG9uCj4gRG9tMCwgYW5kIHdoYXQg dG8gZG8gZm9yIFBWSCBEb21VcyB3aXRoIHBjaS1wYXNzdGhyb3VnaC4KCldlIG1hcCBhbGwgbm9u LXJhbSByZWdpb25zIGZvciBkb20wIDE6MSB0aWxsIHRoZSBoaWdoZXN0IG5vbi1yYW0gZTgyMApl bnRyeS4gSWYgdGhlcmUgaXMgYW55dGhpbmcgdGhhdCBpcyBiZXlvbmQgdGhlIGxhc3QgZTgyMCBl bnRyeSwKaXQgd2lsbCByZW1haW4gdW5tYXBwZWQuCgpDb3JyZWN0LCBwYXNzdGhydSBuZWVkcyB0 byBiZSBmaWd1cmVkLgoKPiBJbiB0aGUgY2FzZSBvZiBhIGd1ZXN0IHN0YXJ0ZWQgd2l0aCBtZW1v cnkgIT0gbWF4bWVtLCB0aGUgZTgyMCBtZW1vcnkKPiBtYXAgcmV0dXJuZWQgYnkgWGVuIHdpbGwg Y29udGFpbiB0aGUgbWVtb3J5IHVwIHRvIG1heG1lbS4gVGhlIGd1ZXN0Cj4gaGFzIHRvIGJlIHZl cnkgY2FyZWZ1bCB0byBvbmx5IHVzZSB0aGUgbG93ZXIgbWVtb3J5IHBhZ2VzIHVwIHRvIHRoZQo+ IHZhbHVlIGNvbnRhaW5lZCBpbiBgc3RhcnRfaW5mby0+bnJfcGFnZXNgIGJlY2F1c2UgYW55IG1l bW9yeSBwYWdlCj4gYWJvdmUgdGhhdCB2YWx1ZSB3aWxsIG5vdCBiZSBwb3B1bGF0ZWQuCj4gCj4g IyMgUGh5c2ljYWwgZGV2aWNlcyAjIwo+IAo+IFdoZW4gcnVubmluZyBhcyBEb20wIHRoZSBndWVz dCBPUyBoYXMgdGhlIGFiaWxpdHkgdG8gaW50ZXJhY3Qgd2l0aAo+IHRoZSBwaHlzaWNhbCBkZXZp Y2VzIHByZXNlbnQgaW4gdGhlIHN5c3RlbS4gQSBub3RlIHNob3VsZCBiZSBtYWRlCj4gdGhhdCBQ VkggZ3Vlc3RzIHJlcXVpcmUgYSB3b3JraW5nIElPTU1VIGluIG9yZGVyIHRvIGludGVyYWN0IHdp dGgKPiBwaHlzaWNhbCBkZXZpY2VzLgo+IAo+IFRoZSBmaXJzdCBzdGVwIGluIG9yZGVyIHRvIG1h bmlwdWxhdGUgdGhlIGRldmljZXMgaXMgdG8gbWFrZSBYZW4KPiBhd2FyZSBvZiB0aGVtLiBEdWUg dG8gdGhlIGZhY3QgdGhhdCBhbGwgdGhlIGhhcmR3YXJlIGRlc2NyaXB0aW9uIG9uCj4geDg2IGNv bWVzIGZyb20gQUNQSSwgRG9tMCBpcyByZXNwb25zaWJsZSBvZiBwYXJzaW5nIHRoZSBBQ1BJIHRh Ymxlcwo+IGFuZCBub3RpZnkgWGVuIGFib3V0IHRoZSBkZXZpY2VzIGl0IGZpbmRzLiBUaGlzIGlz IGRvbmUgd2l0aCB0aGUKPiBgUEhZU0RFVk9QX3BjaV9kZXZpY2VfYWRkYCBoeXBlcmNhbGwuCj4g Cj4gKlRPRE8qOiBleHBsYWluIHRoZSB3YXkgdG8gcmVnaXN0ZXIgdGhlIGRpZmZlcmVudCBraW5k cyBvZiBQQ0kKPiBkZXZpY2VzLCBsaWtlIGRldmljZXMgd2l0aCB2aXJ0dWFsIGZ1bmN0aW9ucy4K PiAKPiAjIyBJbnRlcnJ1cHRzICMjCj4gCj4gQWxsIGludGVycnVwdHMgb24gUFZIIGd1ZXN0cyBh cmUgcm91dGVkIG92ZXIgZXZlbnQgY2hhbm5lbHMsIHNlZQo+IFtFdmVudCBDaGFubmVsIEludGVy bmFsc11bZXZlbnRfY2hhbm5lbHNdIGZvciBtb3JlIGRldGFpbGVkCj4gaW5mb3JtYXRpb24gYWJv dXQgZXZlbnQgY2hhbm5lbHMuIEluIG9yZGVyIHRvIGluamVjdCBpbnRlcnJ1cHRzIGludG8KPiB0 aGUgZ3Vlc3QgYW4gSURUIHZlY3RvciBpcyB1c2VkLiBUaGlzIGlzIHRoZSBzYW1lIG1lY2hhbmlz bSB1c2VkIG9uCj4gUFZIVk0gZ3Vlc3RzLCBhbmQgYWxsb3dzIGhhdmluZyBwZXItY3B1IGludGVy cnVwdHMgdGhhdCBjYW4gYmUgdXNlZAo+IHRvIGRlbGl2ZXIgdGltZXJzIG9yIElQSXMuCj4gCj4g SW4gb3JkZXIgdG8gcmVnaXN0ZXIgdGhlIGNhbGxiYWNrIElEVCB2ZWN0b3IgdGhlIGBIVk1PUF9z ZXRfcGFyYW1gCj4gaHlwZXJjYWxsIGlzIHVzZWQgd2l0aCB0aGUgZm9sbG93aW5nIHZhbHVlczoK PiAKPiAgICAgZG9taWQgPSBET01JRF9TRUxGCj4gICAgIGluZGV4ID0gSFZNX1BBUkFNX0NBTExC QUNLX0lSUQo+ICAgICB2YWx1ZSA9ICgweDIgPDwgNTYpIHwgdmVjdG9yX3ZhbHVlCj4gCj4gSW4g b3JkZXIgdG8ga25vdyB3aGljaCBldmVudCBjaGFubmVsIGhhcyBmaXJlZCwgd2UgbmVlZCB0byBs b29rIGludG8KPiB0aGUgaW5mb3JtYXRpb24gcHJvdmlkZWQgaW4gdGhlIGBzaGFyZWRfaW5mb2Ag c3RydWN0dXJlLiBUaGUKPiBgZXZ0Y2huX3BlbmRpbmdgIGFycmF5IGlzIHVzZWQgYXMgYSBiaXRt YXAgaW4gb3JkZXIgdG8gZmluZCBvdXQgd2hpY2gKPiBldmVudCBjaGFubmVsIGhhcyBmaXJlZC4g RXZlbnQgY2hhbm5lbHMgY2FuIGFsc28gYmUgbWFza2VkIGJ5IHNldHRpbmcKPiBpdCdzIHBvcnQg dmFsdWUgaW4gdGhlIGBzaGFyZWRfaW5mby0+ZXZ0Y2huX21hc2tgIGJpdG1hcC4KPiAKPiAqVE9E Tyo6IHByb3ZpZGUgYSByZWZlcmVuY2UgYWJvdXQgaG93IHRvIGludGVyYWN0IHdpdGggRklGTyBl dmVudAo+IGNoYW5uZWxzPwo+IAo+ICMjIyBJbnRlcnJ1cHRzIGZyb20gcGh5c2ljYWwgZGV2aWNl cyAjIyMKPiAKPiBXaGVuIHJ1bm5pbmcgYXMgRG9tMCAob3Igd2hlbiB1c2luZyBwY2ktcGFzc3Ro cm91Z2gpIGludGVycnVwdHMgZnJvbQo+IHBoeXNpY2FsIGRldmljZXMgYXJlIHJvdXRlZCBvdmVy IGV2ZW50IGNoYW5uZWxzLiBUaGVyZSBhcmUgMwo+IGRpZmZlcmVudCBraW5kIG9mIHBoeXNpY2Fs IGludGVycnVwdHMgdGhhdCBjYW4gYmUgcm91dGVkIG92ZXIgZXZlbnQKPiBjaGFubmVscyBieSBY ZW46IElPIEFQSUMsIE1TSSBhbmQgTVNJLVggaW50ZXJydXB0cy4KPiAKPiBTaW5jZSBwaHlzaWNh bCBpbnRlcnJ1cHRzIHVzdWFsbHkgbmVlZCBFT0kgKEVuZCBPZiBJbnRlcnJ1cHQpLCBYZW4KPiBh bGxvd3MgdGhlIHJlZ2lzdHJhdGlvbiBvZiBhIG1lbW9yeSByZWdpb24gdGhhdCB3aWxsIGNvbnRh aW4gd2hldGhlcgo+IGEgcGh5c2ljYWwgaW50ZXJydXB0IG5lZWRzIEVPSSBmcm9tIHRoZSBndWVz dCBvciBub3QuIFRoaXMgaXMgZG9uZQo+IHdpdGggdGhlIGBQSFlTREVWT1BfcGlycV9lb2lfZ21m bl92MmAgaHlwZXJjYWxsIHRoYXQgdGFrZXMgYQo+IHBhcmFtZXRlciBjb250YWluaW5nIHRoZSBw aHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBtZW1vcnkgcGFnZSB0aGF0Cj4gd2lsbCBhY3QgYXMgYSBi aXRtYXAuIFRoZW4gaW4gb3JkZXIgdG8gZmluZCBvdXQgaWYgYW4gSVJRIG5lZWRzIEVPSQo+IG9y IG5vdCwgdGhlIE9TIGNhbiBwZXJmb3JtIGEgc2ltcGxlIGJpdCB0ZXN0IG9uIHRoZSBtZW1vcnkg cGFnZSB1c2luZwo+IHRoZSBQSVJRIHZhbHVlLgo+IAo+ICMjIyBJTyBBUElDIGludGVycnVwdCBy b3V0aW5nICMjIwo+IAo+IElPIEFQSUMgaW50ZXJydXB0cyBjYW4gYmUgcm91dGVkIG92ZXIgZXZl bnQgY2hhbm5lbHMgdXNpbmcgYFBIWVNERVZPUGAKPiBoeXBlcmNhbGxzLiBGaXJzdCB0aGUgSVJR IGlzIHJlZ2lzdGVyZWQgdXNpbmcgdGhlIGBQSFlTREVWT1BfbWFwX3BpcnFgCj4gaHlwZXJjYWxs LCBhcyBhbiBleGFtcGxlIElSUSM5IGlzIHVzZWQgaGVyZToKPiAKPiAgICAgZG9taWQgPSBET01J RF9TRUxGCj4gICAgIHR5cGUgPSBNQVBfUElSUV9UWVBFX0dTSQo+ICAgICBpbmRleCA9IDkKPiAg ICAgcGlycSA9IDkKPiAKPiBBZnRlciB0aGlzIGh5cGVyY2FsbCwgYFBIWVNERVZPUF9hbGxvY19p cnFfdmVjdG9yYCBpcyB1c2VkIHRvCj4gYWxsb2NhdGUgYSB2ZWN0b3I6Cj4gCj4gICAgIGlycSA9 IDkKPiAgICAgdmVjdG9yID0gMAo+IAo+ICpUT0RPKjogSSdtIG5vdCBzdXJlIHdoeSB3ZSBuZWVk IHRob3NlIHR3byBoeXBlcmNhbGxzLCBhbmQgaXQncyB1c2FnZQo+IGlzIG5vdCBkb2N1bWVudGVk IGFueXdoZXJlLiBOZWVkIHRvIGNsYXJpZnkgd2hhdCB0aGUgcGFyYW1ldGVycyBtZWFuCj4gYW5k IHdoYXQgZWZmZWN0IHRoZXkgaGF2ZS4KPiAKPiBUaGUgSVJRIzkgaXMgbm93IHJlZ2lzdGVyZWQg YXMgUElSUSM5LiBUaGUgdHJpZ2dlcmluZyBhbmQgcG9sYXJpdHkKPiBjYW4gYWxzbyBiZSBjb25m aWd1cmVkIHVzaW5nIHRoZSBgUEhZU0RFVk9QX3NldHVwX2dzaWAgaHlwZXJjYWxsOgo+IAo+ICAg ICBnc2kgPSA5ICMgVGhpcyBpcyB0aGUgSVJRIHZhbHVlLgo+ICAgICB0cmlnZ2VyaW5nID0gMAo+ ICAgICBwb2xhcml0eSA9IDAKPiAKPiBJbiB0aGlzIGV4YW1wbGUgdGhlIElSUSB3b3VsZCBiZSBj b25maWd1cmVkIHRvIHVzZSBlZGdlIHRyaWdnZXJpbmcKPiBhbmQgaGlnaCBwb2xhcml0eS4KPiAK PiBGaW5hbGx5IHRoZSBQSVJRIGNhbiBiZSBib3VuZCB0byBhbiBldmVudCBjaGFubmVsIHVzaW5n IHRoZQo+IGBFVlRDSE5PUF9iaW5kX3BpcnFgLCB0aGF0IHdpbGwgcmV0dXJuIHRoZSBldmVudCBj aGFubmVsIHBvcnQgdGhlCj4gUElSUSBoYXMgYmVlbiBhc3NpZ25lZC4gQWZ0ZXIgdGhpcyB0aGUg ZXZlbnQgY2hhbm5lbCB3aWxsIGJlIHJlYWR5Cj4gZm9yIGRlbGl2ZXJ5Lgo+IAo+ICpOT1RFKjog d2hlbiBydW5uaW5nIGFzIERvbTAsIHRoZSBndWVzdCBoYXMgdG8gcGFyc2UgdGhlIGludGVycnVw dAo+IG92ZXJ3cml0ZXMgZm91bmQgb24gdGhlIEFDUEkgdGFibGVzIGFuZCBub3RpZnkgWGVuIGFi b3V0IHRoZW0uCj4gCj4gIyMjIE1TSSAjIyMKPiAKPiBJbiBvcmRlciB0byBjb25maWd1cmUgTVNJ IGludGVycnVwdHMgZm9yIGEgZGV2aWNlLCBYZW4gbXVzdCBiZSBtYWRlCj4gYXdhcmUgb2YgaXQn cyBwcmVzZW5jZSBmaXJzdCBieSB1c2luZyB0aGUgYFBIWVNERVZPUF9wY2lfZGV2aWNlX2FkZGAK PiBhcyBkZXNjcmliZWQgYWJvdmUuIFRoZW4gdGhlIGBQSFlTREVWT1BfbWFwX3BpcnFgIGh5cGVy Y2FsbCBpcyB1c2VkOgo+IAo+ICAgICBkb21pZCA9IERPTUlEX1NFTEYKPiAgICAgdHlwZSA9IE1B UF9QSVJRX1RZUEVfTVNJX1NFRyBvciBNQVBfUElSUV9UWVBFX01VTFRJX01TSQo+ICAgICBpbmRl eCA9IC0xCj4gICAgIHBpcnEgPSAtMQo+ICAgICBidXMgPSBwY2lfZGV2aWNlX2J1cwo+ICAgICBk ZXZmbiA9IHBjaV9kZXZpY2VfZnVuY3Rpb24KPiAgICAgZW50cnlfbnIgPSBudW1iZXIgb2YgTVNJ IGludGVycnVwdHMKPiAKPiBUaGUgdHlwZSBoYXMgdG8gYmUgc2V0IHRvIGBNQVBfUElSUV9UWVBF X01TSV9TRUdgIGlmIG9ubHkgb25lIE1TSQo+IGludGVycnVwdCBzb3VyY2UgaXMgYmVpbmcgY29u ZmlndXJlZC4gT24gZGV2aWNlcyB0aGF0IHN1cHBvcnQgTVNJCj4gaW50ZXJydXB0IGdyb3VwcyBg TUFQX1BJUlFfVFlQRV9NVUxUSV9NU0lgIGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZQo+IHRoZW0g YnkgYWxzbyBwbGFjaW5nIHRoZSBudW1iZXIgb2YgTVNJIGludGVycnVwdHMgaW4gdGhlIGBlbnRy eV9ucmAKPiBmaWVsZC4KPiAKPiBUaGUgdmFsdWVzIGluIHRoZSBgYnVzYCBhbmQgYGRldmZuYCBm aWVsZCBzaG91bGQgYmUgdGhlIHNhbWUgYXMgdGhlCj4gb25lcyB1c2VkIHdoZW4gcmVnaXN0ZXJp bmcgdGhlIGRldmljZSB3aXRoIGBQSFlTREVWT1BfcGNpX2RldmljZV9hZGRgLgo+IAo+ICMjIyBN U0ktWCAjIyMKPiAKPiAqVE9ETyo6IGhvdyB0byByZWdpc3Rlci91c2UgdGhlbS4KPiAKPiAjIyBF dmVudCB0aW1lcnMgYW5kIHRpbWVjb3VudGVycyAjIwo+IAo+IFNpbmNlIHNvbWUgaGFyZHdhcmUg aXMgbm90IGF2YWlsYWJsZSBvbiBQVkggKGxpa2UgdGhlIGxvY2FsIEFQSUMpLAo+IFhlbiBwcm92 aWRlcyB0aGUgT1Mgd2l0aCBzdWl0YWJsZSByZXBsYWNlbWVudHMgaW4gb3JkZXIgdG8gZ2V0IHRo ZQo+IHNhbWUgZnVuY3Rpb25hbGl0eS4gT25lIG9mIHRoZW0gaXMgdGhlIHRpbWVyIGludGVyZmFj ZS4gVXNpbmcgYSBzZXQKPiBvZiBoeXBlcmNhbGxzLCBhIGd1ZXN0IE9TIGNhbiBzZXQgZXZlbnQg dGltZXJzIHRoYXQgd2lsbCBkZWxpdmVyIGFuZAo+IGV2ZW50IGNoYW5uZWwgaW50ZXJydXB0IHRv IHRoZSBndWVzdC4KPiAKPiBJbiBvcmRlciB0byB1c2UgdGhlIHRpbWVyIHByb3ZpZGVkIGJ5IFhl biB0aGUgZ3Vlc3QgT1MgZmlyc3QgbmVlZHMgdG8KPiByZWdpc3RlciBhIFZJUlEgZXZlbnQgY2hh bm5lbCB0byBiZSB1c2VkIGJ5IHRoZSB0aW1lciB0byBkZWxpdmVyIHRoZQo+IGludGVycnVwdHMu IFRoZSBldmVudCBjaGFubmVsIGlzIHJlZ2lzdGVyZWQgdXNpbmcgdGhlCj4gYEVWVENITk9QX2Jp bmRfdmlycWAgaHlwZXJjYWxsLCB0aGF0IG9ubHkgdGFrZXMgdHdvIHBhcmFtZXRlcnM6Cj4gCj4g ICAgIHZpcnEgPSBWSVJRX1RJTUVSCj4gICAgIHZjcHUgPSB2Y3B1X2lkCj4gCj4gVGhlIHBvcnQg dGhhdCdzIGdvaW5nIHRvIGJlIHVzZWQgYnkgWGVuIGluIG9yZGVyIHRvIGRlbGl2ZXIgdGhlCj4g aW50ZXJydXB0IGlzIHJldHVybmVkIGluIHRoZSBgcG9ydGAgZmllbGQuIE9uY2UgdGhlIGludGVy cnVwdCBpcyBzZXQsCj4gdGhlIHRpbWVyIGNhbiBiZSBwcm9ncmFtbWVkIHVzaW5nIHRoZSBgVkNQ VU9QX3NldF9zaW5nbGVzaG90X3RpbWVyYAo+IGh5cGVyY2FsbC4KPiAKPiAgICAgZmxhZ3MgPSBW Q1BVX1NTSE9UVE1SX2Z1dHVyZQo+ICAgICB0aW1lb3V0X2Fic19ucyA9IGFic29sdXRlIHZhbHVl IHdoZW4gdGhlIHRpbWVyIHNob3VsZCBmaXJlCj4gCj4gSXQgaXMgaW1wb3J0YW50IHRvIG5vdGlj ZSB0aGF0IHRoZSBgVkNQVU9QX3NldF9zaW5nbGVzaG90X3RpbWVyYAo+IGh5cGVyY2FsbCBtdXN0 IGJlIGV4ZWN1dGVkIGZyb20gdGhlIHNhbWUgdkNQVSB3aGVyZSB0aGUgdGltZXIgc2hvdWxkCj4g ZmlyZSwgb3IgZWxzZSBYZW4gd2lsbCByZWZ1c2UgdG8gc2V0IGl0LiBUaGlzIGlzIGEgc2luZ2xl LXNob3QgdGltZXIsCj4gc28gaXQgbXVzdCBiZSBzZXQgYnkgdGhlIE9TIGV2ZXJ5IHRpbWUgaXQg ZmlyZXMgaWYgYSBwZXJpb2RpYyB0aW1lcgo+IGlzIGRlc2lyZWQuCj4gCj4gWGVuIGFsc28gc2hh cmVzIGEgbWVtb3J5IHJlZ2lvbiB3aXRoIHRoZSBndWVzdCBPUyB0aGF0IGNvbnRhaW5zIHRpbWUK PiByZWxhdGVkIHZhbHVlcyB0aGF0IGFyZSB1cGRhdGVkIHBlcmlvZGljYWxseS4gVGhpcyB2YWx1 ZXMgY2FuIGJlIHVzZWQKPiB0byBpbXBsZW1lbnQgYSB0aW1lY291bnRlciBvciB0byBvYnRhaW4g dGhlIGN1cnJlbnQgdGltZS4gVGhpcwo+IGluZm9ybWF0aW9uIGlzIHBsYWNlZCBpbnNpZGUgb2YK PiBgc2hhcmVkX2luZm8tPnZjcHVfaW5mb1t2Y3B1X2lkXS50aW1lYC4gVGhlIHVwdGltZSAodGlt ZSBzaW5jZSB0aGUKPiBndWVzdCBoYXMgYmVlbiBsYXVuY2hlZCkgY2FuIGJlIGNhbGN1bGF0ZWQg dXNpbmcgdGhlIGZvbGxvd2luZwo+IGV4cHJlc3Npb24gYW5kIHRoZSB2YWx1ZXMgc3RvcmVkIGlu IHRoZSBgdmNwdV90aW1lX2luZm9gIHN0cnVjdDoKPiAKPiAgICAgc3lzdGVtX3RpbWUgKyAoKCgo dHNjIC0gdHNjX3RpbWVzdGFtcCkgPDwgdHNjX3NoaWZ0KSAqCj4gdHNjX3RvX3N5c3RlbV9tdWwp ID4+IDMyKQo+IAo+IFRoZSB0aW1lb3V0IHRoYXQgaXMgcGFzc2VkIHRvIGBWQ1BVT1Bfc2V0X3Np bmdsZXNob3RfdGltZXJgIGhhcyB0byBiZQo+IGNhbGN1bGF0ZWQgdXNpbmcgdGhlIGFib3ZlIHZh bHVlLCBwbHVzIHRoZSB0aW1lb3V0IHRoZSBzeXN0ZW0gd2FudHMKPiB0byBzZXQuCj4gCj4gSWYg dGhlIE9TIGFsc28gd2FudHMgdG8gb2J0YWluIHRoZSBjdXJyZW50IHdhbGxjbG9jayB0aW1lLCB0 aGUgdmFsdWUKPiBjYWxjdWxhdGVkIGFib3ZlIGhhcyB0byBiZSBhZGRlZCB0byB0aGUgdmFsdWVz IGZvdW5kIGluCj4gYHNoYXJlZF9pbmZvLT53Y19zZWNgIGFuZCBgc2hhcmVkX2luZm8tPndjX25z ZWNgLgoKQWxsIHRoZSBhYm92ZSBpcyBncmVhdCBpbmZvLCBub3QgUFZIIHNwZWNpZmljIHRoby4g TWF5IHdhbm5hIG1lbnRpb24KaXQgZndpdy4gCgo+ICMjIFNNUCBkaXNjb3ZlciBhbmQgYnJpbmcg dXAgIyMKPiAKPiBUaGUgcHJvY2VzcyBvZiBicmluZ2luZyB1cCBzZWNvbmRhcnkgQ1BVcyBpcyBv YnZpb3VzbHkgZGlmZmVyZW50IGZyb20KPiBuYXRpdmUsIHNpbmNlIFBWSCBkb2Vzbid0IGhhdmUg YSBsb2NhbCBBUElDLiBUaGUgZmlyc3QgdGhpbmcgdG8gZG8gaXMKPiB0byBmaWd1cmUgb3V0IGhv dyBtYW55IHZDUFVzIHRoZSBndWVzdCBoYXMuIFRoaXMgaXMgZG9uZSB1c2luZyB0aGUKPiBgVkNQ VU9QX2lzX3VwYCBoeXBlcmNhbGwsIHVzaW5nIGZvciBleGFtcGxlIHRoaXMgc2ltcGxlIGxvb3A6 Cj4gCj4gICAgIGZvciAoaSA9IDA7IGkgPCBNQVhDUFU7IGkrKykgewo+ICAgICAgICAgcmV0ID0g SFlQRVJWSVNPUl92Y3B1X29wKFZDUFVPUF9pc191cCwgaSwgTlVMTCk7Cj4gICAgICAgICBpZiAo cmV0ID49IDApCj4gICAgICAgICAgICAgLyogdkNQVSNpIGlzIHByZXNlbnQgKi8KPiAgICAgfQo+ IAo+IE5vdGUgdGhhbiB3aGVuIHJ1bm5pbmcgYXMgRG9tMCwgdGhlIEFDUEkgdGFibGVzIG1pZ2h0 IHJlcG9ydCBhCj4gZGlmZmVyZW50IG51bWJlciBvZiBhdmFpbGFibGUgQ1BVcy4gVGhpcyBpcyBi ZWNhdXNlIHRoZSB2YWx1ZSBvbiB0aGUKPiBBQ1BJIHRhYmxlcyBpcyB0aGUgbnVtYmVyIG9mIHBo eXNpY2FsIENQVXMgdGhlIGhvc3QgaGFzLCBhbmQgaXQgbWlnaHQKPiBiZWFyIG5vIHJlc2VtYmxh bmNlIHdpdGggdGhlIG51bWJlciBvZiB2Q1BVcyBEb20wIGFjdHVhbGx5IGhhcyBzbyBpdAo+IHNo b3VsZCBiZSBpZ25vcmVkLgo+IAo+IEluIG9yZGVyIHRvIGJyaW5nIHVwIHRoZSBzZWNvbmRhcnkg dkNQVXMgdGhleSBtdXN0IGJlIGNvbmZpZ3VyZWQKPiBmaXJzdC4gVGhpcyBpcyBhY2hpZXZlZCB1 c2luZyB0aGUgYFZDUFVPUF9pbml0aWFsaXNlYCBoeXBlcmNhbGwuIEEKPiB2YWxpZCBjb250ZXh0 IGhhcyB0byBiZSBwYXNzZWQgdG8gdGhlIHZDUFUgaW4gb3JkZXIgdG8gYm9vdC4gVGhlCj4gcmVs ZXZhbnQgZmllbGRzIGZvciBQVkggZ3Vlc3RzIGFyZSB0aGUgZm9sbG93aW5nOgo+IAo+ICAgKiBg ZmxhZ3NgOiBjb250YWlucyBWR0NGXyogZmxhZ3MgKHNlZSBgYXJjaC14ODYveGVuLmhgIHB1Ymxp Ywo+IGhlYWRlcikuCj4gICAqIGB1c2VyX3JlZ3NgOiBzdHJ1Y3QgdGhhdCBjb250YWlucyB0aGUg cmVnaXN0ZXIgdmFsdWVzIHRoYXQgd2lsbAo+IGJlIHNldCBvbiB0aGUgdkNQVSBiZWZvcmUgYm9v dGluZy4gVGhlIG1vc3QgcmVsZXZhbnQgb25lcyBhcmUgYHJpcGAKPiBhbmQgYHJzcGAgaW4gb3Jk ZXIgdG8gc2V0IHRoZSBzdGFydCBhZGRyZXNzIGFuZCB0aGUgc3RhY2suCj4gICAqIGBjdHJscmVn WzNdYDogY29udGFpbnMgdGhlIGFkZHJlc3Mgb2YgdGhlIHBhZ2UgdGFibGVzIHRoYXQgd2lsbAo+ IGJlIHVzZWQgYnkgdGhlIHZDUFUuCj4gCj4gQWZ0ZXIgdGhlIHZDUFUgaXMgaW5pdGlhbGl6ZWQg d2l0aCB0aGUgcHJvcGVyIHZhbHVlcywgaXQgY2FuIGJlCj4gc3RhcnRlZCBieSB1c2luZyB0aGUg YFZDUFVPUF91cGAgaHlwZXJjYWxsLiBUaGUgdmFsdWVzIG9mIHRoZSBvdGhlcgo+IGNvbnRyb2wg cmVnaXN0ZXJzIG9mIHRoZSB2Q1BVIHdpbGwgYmUgdGhlIHNhbWUgYXMgdGhlIG9uZXMgZGVzY3Jp YmVkCj4gaW4gdGhlIGBjb250cm9sIHJlZ2lzdGVyc2Agc2VjdGlvbi4KCklmIHlvdSB3YW50LCB5 b3UgY291bGQgcHV0IGxpbnV4IHJlZmVyZW5jZSBoZXJlOgoKRm9yIGFuIGV4YW1wbGUsIHBsZWFz ZSBzZWUgY3B1X2luaXRpYWxpemVfY29udGV4dCgpIGluIGFyY2gveDg2L3hlbi9zbXAuYwppbiBs aW51eC4KCj4gIyMgQ29udHJvbCBvcGVyYXRpb25zIChyZWJvb3Qvc2h1dGRvd24pICMjCj4gCj4g UmVib290IGFuZCBzaHV0ZG93biBvcGVyYXRpb25zIG9uIFBWSCBndWVzdHMgYXJlIHBlcmZvcm1l ZCB1c2luZwo+IGh5cGVyY2FsbHMuIEluIG9yZGVyIHRvIGlzc3VlIGEgcmVib290LCBhIGd1ZXN0 IG11c3QgdXNlIHRoZQo+IGBTSFVURE9XTl9yZWJvb3RgIGh5cGVyY2FsbC4gSW4gb3JkZXIgdG8g cGVyZm9ybSBhIHBvd2VyIG9mZiBmcm9tIGEKPiBndWVzdCBEb21VLCB0aGUgYFNIVVRET1dOX3Bv d2Vyb2ZmYCBoeXBlcmNhbGwgc2hvdWxkIGJlIHVzZWQuCj4gCj4gVGhlIHdheSB0byBwZXJmb3Jt IGEgZnVsbCBzeXN0ZW0gcG93ZXIgb2ZmIGZyb20gRG9tMCBpcyBkaWZmZXJlbnQKPiB0aGFuIHdo YXQncyBkb25lIGluIGEgRG9tVSBndWVzdC4gSW4gb3JkZXIgdG8gcGVyZm9ybSBhIHBvd2VyIG9m Zgo+IGZyb20gRG9tMCB0aGUgbmF0aXZlIEFDUEkgcGF0aCBzaG91bGQgYmUgZm9sbG93ZWQsIGJ1 dCB0aGUgZ3Vlc3QKPiBzaG91bGQgbm90IHdyaXRlIHRoZSBTTFBfRU4gYml0IHRvIHRoZSBQbTFD b250cm9sIHJlZ2lzdGVyLiBJbnN0ZWFkCj4gdGhlIGBYRU5QRl9lbnRlcl9hY3BpX3NsZWVwYCBo eXBlcmNhbGwgc2hvdWxkIGJlIHVzZWQsIGZpbGxpbmcgdGhlCj4gZm9sbG93aW5nIGRhdGEgaW4g dGhlIGB4ZW5fcGxhdGZvcm1fb3BgIHN0cnVjdDoKPiAKPiAgICAgY21kID0gWEVOUEZfZW50ZXJf YWNwaV9zbGVlcAo+ICAgICBpbnRlcmZhY2VfdmVyc2lvbiA9IFhFTlBGX0lOVEVSRkFDRV9WRVJT SU9OCj4gICAgIHUuZW50ZXJfYWNwaV9zbGVlcC5wbTFhX2NudF92YWwgPSBQbTFhQ29udHJvbFZh bHVlCj4gICAgIHUuZW50ZXJfYWNwaV9zbGVlcC5wbTFiX2NudF92YWwgPSBQbTFiQ29udHJvbFZh bHVlCj4gCj4gVGhpcyB3aWxsIGFsbG93IFhlbiB0byBkbyBpdCdzIGNsZWFuIHVwIGFuZCB0byBw b3dlciBvZmYgdGhlIHN5c3RlbS4KPiBJZiB0aGUgaG9zdCBpcyB1c2luZyBoYXJkd2FyZSByZWR1 Y2VkIEFDUEksIHRoZSBmb2xsb3dpbmcgZmllbGQKPiBzaG91bGQgYWxzbyBiZSBzZXQ6Cj4gCj4g ICAgIHUuZW50ZXJfYWNwaV9zbGVlcC5mbGFncyA9IFhFTlBGX0FDUElfU0xFRVBfRVhURU5ERUQg KDB4MSkKPiAKPiAjIyBDUFVJRCAjIwo+IAo+ICpURE9EKjogZGVzY3JpYmUgd2hpY2ggY3B1aWQg ZmxhZ3MgYSBndWVzdCBzaG91bGQgaWdub3JlIGFuZCBhbHNvCj4gd2hpY2ggZmxhZ3MgZGVzY3Jp YmUgZmVhdHVyZXMgY2FuIGJlIHVzZWQuIEl0IHdvdWxkIGFsc28gYmUgZ29vZCB0bwo+IGRlc2Ny aWJlIHRoZSBzZXQgb2YgY3B1aWQgZmxhZ3MgdGhhdCB3aWxsIGFsd2F5cyBiZSBwcmVzZW50IHdo ZW4KPiBydW5uaW5nIGFzIFBWSC4KPiAKPiAjIyBGaW5hbCBub3RlcyAjIwo+IAo+IEFsbCB0aGUg b3RoZXIgaGFyZHdhcmUgZnVuY3Rpb25hbGl0eSBub3QgZGVzY3JpYmVkIGluIHRoaXMgZG9jdW1l bnQKPiBzaG91bGQgYmUgYXNzdW1lZCB0byBiZSBwZXJmb3JtZWQgaW4gdGhlIHNhbWUgd2F5IGFz IG5hdGl2ZS4KPiAKPiBbZXZuZXRfY2hhbm5lbHNdOiBodHRwOi8vd2lraS54ZW4ub3JnL3dpa2kv RXZlbnRfQ2hhbm5lbF9JbnRlcm5hbHMKCgpHcmVhdCB3b3JrIFJvZ2VyISBUaGFua3MgYSBsb3Qg Zm9yIHdyaXRpbmcgaXQuCgpNdWtlc2gKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=