From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: DESIGN v2: CPUID part 3 Date: Tue, 4 Jul 2017 15:55:24 +0100 Message-ID: <1499180124-24693-1-git-send-email-andrew.cooper3@citrix.com> References: <1496927527-6218-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1496927527-6218-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper List-Id: xen-devel@lists.xenproject.org UHJlc2VudGVkIGhlcmV3aXRoIGlzIHRoZSBhIHBsYW4gZm9yIHRoZSBmaW5hbCBwYXJ0IG9mIENQ VUlEIHdvcmssIHdoaWNoCnByaW1hcmlseSBjb3ZlcnMgYmV0dGVyIFhlbi9Ub29sc3RhY2sgaW50 ZXJhY3Rpb24gZm9yIGNvbmZpZ3VyaW5nIHRoZSBndWVzdHMKQ1BVSUQgcG9saWN5LgoKQSBQREYg dmVyc2lvbiBvZiB0aGlzIGRvY3VtZW50IGlzIGF2YWlsYWJsZSBmcm9tOgoKaHR0cDovL3hlbmJp dHMueGVuLm9yZy9wZW9wbGUvYW5kcmV3Y29vcC9jcHVpZC1wYXJ0LTMtcmV2Mi5wZGYKCkNoYW5n ZXMgZnJvbSB2MToKICogQ2xhcmlmaWNhdGlvbiBvZiB0aGUgaW50ZXJhY3Rpb24gb2YgZW11bGF0 ZWQgZmVhdHVyZXMKICogTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZGlmZmVyZW5jZSBiZXR3 ZWVuIG1heCBhbmQgZGVmYXVsdCBmZWF0dXJlc2V0cy4KCn5BbmRyZXcKCi0tLS0tODwtLS0tLQol IENQVUlEIEhhbmRsaW5nIChwYXJ0IDMpCiUgUmV2aXNpb24gMgoKIyBDdXJyZW50IHN0YXRlCgpB dCBlYXJseSBib290LCBYZW4gZW51bWVyYXRlcyB0aGUgZmVhdHVyZXMgaXQgY2FuIHNlZSwgdGFr ZXMgaW50byBhY2NvdW50CmVycmF0YSBjaGVja3MgYW5kIGNvbW1hbmQgbGluZSBhcmd1bWVudHMs IGFuZCBzdG9yZXMgdGhpcyBpbmZvcm1hdGlvbiBpbiB0aGUKYGJvb3RfY3B1X2RhdGEueDg2X2Nh cGFiaWxpdHlbXWAgYml0bWFwLiAgVGhpcyBnZXRzIGFkanVzdGVkIGFzIEFQcyBib290IHVwLAph bmQgaXMgc2FuaXRpc2VkIHRvIGRpc2FibGUgYWxsIGRlcGVuZGVudCBsZWFmIGZlYXR1cmVzLgoK QXQgbWlkL2xhdGUgYm9vdCAoYmVmb3JlIGRvbTAgaXMgY29uc3RydWN0ZWQpLCBYZW4gcGVyZm9y bXMgdGhlIG5lY2Vzc2FyeQpjYWxjdWxhdGlvbnMgZm9yIGd1ZXN0IGNwdWlkIGhhbmRsaW5nLiAg RGF0YSBhcmUgY29udGFpbmVkIHdpdGhpbiB0aGUgYHN0cnVjdApjcHVpZF9wb2xpY3lgIG9iamVj dCwgd2hpY2ggaXMgYSByZXByZXNlbnRhdGlvbiBvZiB0aGUgYXJjaGl0ZWN0dXJhbCBDUFVJRApp bmZvcm1hdGlvbiBhcyBzcGVjaWZpZWQgYnkgdGhlIEludGVsIGFuZCBBTUQgbWFudWFscy4KClRo ZXJlIGFyZSBhIGZldyBnbG9iYWwgYGNwdWlkX3BvbGljeWAgb2JqZWN0cy4gIEZpcnN0IGlzIHRo ZSAqKnJhd19wb2xpY3kqKgp3aGljaCBpcyBmaWxsZWQgaW4gZnJvbSBuYXRpdmUgYENQVUlEYCBp bnN0cnVjdGlvbnMuICBUaGlzIHJlcHJlc2VudHMgd2hhdCB0aGUKaGFyZHdhcmUgaXMgY2FwYWJs ZSBvZiwgaW4gaXRzIGN1cnJlbnQgZmlybXdhcmUvbWljcm9jb2RlIGNvbmZpZ3VyYXRpb24uCgpU aGUgbmV4dCBnbG9iYWwgb2JqZWN0IGlzICoqaG9zdF9wb2xpY3kqKiwgd2hpY2ggaXMgZGVyaXZl ZCBmcm9tIHRoZQoqKnJhd19wb2xpY3kqKiBhbmQgYGJvb3RfY3B1X2RhdGEueDg2X2NhcGFiaWxp dHlbXWAuIEl0IHJlcHJlc2VudHMgdGhlCmZlYXR1cmVzIHdoaWNoIFhlbiBrbm93cyBhYm91dCBh bmQgaXMgdXNpbmcuICBUaGUgKipob3N0X3BvbGljeSoqIGlzCm5lY2Vzc2FyaWx5IGEgc3Vic2V0 IG9mICoqcmF3X3BvbGljeSoqLgoKVGhlICoqcHZfbWF4X3BvbGljeSoqIGFuZCAqKmh2bV9tYXhf cG9saWN5KiogYXJlIGRlcml2ZWQgZnJvbSB0aGUKKipob3N0X3BvbGljeSoqLCBhbmQgcmVwcmVz ZW50IHRoZSB1cHBlciBib3VuZHMgYXZhaWxhYmxlIHRvIGd1ZXN0cy4KR2VuZXJhbGx5IHNwZWFr aW5nLCB0aGUgZ3Vlc3QgcG9saWNpZXMgYXJlIGxlc3MgZmVhdHVyZWZ1bGwgdGhhbiB0aGUKKipo b3N0X3BvbGljeSoqIGJlY2F1c2UgdGhlcmUgYXJlIGZlYXR1cmVzIHdoaWNoIFhlbiBkb2Vzbid0 IG9yIGNhbm5vdCBzYWZlbHkKcHJvdmlkZSB0byBndWVzdHMuICBIb3dldmVyLCB0aGV5IGFyZSBu b3Qgc3Vic2V0cy4gIFRoZXJlIGFyZSBzb21lIGZlYXR1cmVzCih0aGUgSFlQRVJWSVNPUiBiaXQg Zm9yIGFsbCBndWVzdHMsIGFuZCBYMkFQSUMgbW9kZSBmb3IgSFZNIGd1ZXN0cykgd2hpY2ggYXJl CmVtdWxhdGVkIGluIHRoZSBhYnNlbmNlIG9mIHJlYWwgaGFyZHdhcmUgc3VwcG9ydC4KClRoZSB0 b29sc3RhY2sgbWF5IHF1ZXJ5IGZvciB0aGUgKip7cmF3LGhvc3QscHYsaHZtfVxfZmVhdHVyZXNl dCoqIGluZm9ybWF0aW9uCnVzaW5nIF9YRU5cX1NZU0NUTFxfZ2V0XF9jcHVcX2ZlYXR1cmVzZXRf LiAgVGhpcyBpcyBiaXRtYXAgZm9ybSBvZiB0aGUgZmVhdHVyZQpsZWF2ZXMgb25seS4KCldoZW4g YSBuZXcgZG9tYWluIGlzIGNyZWF0ZWQsIHRoZSBhcHByb3ByaWF0ZSAqKntwdixodm19XF9tYXhf cG9saWN5KiogaXMKZHVwbGljYXRlZCBhcyBhIHN0YXJ0aW5nIHBvaW50LCBhbmQgY2FuIGJlIHN1 YnNlcXVlbnRseSBtdXRhdGVkIGluZGlyZWN0bHkgYnkKc29tZSBoeXBlcmNhbGxzCihfWEVOXF9E T01DVExcX3tzZXRcX2FkZHJlc3NcX3NpemUsZGlzYWJsZVxfbWlncmF0ZSxzZXR0c2NpbmZvfV8p IG9yIGRpcmVjdGx5CmJ5IF9YRU5cX0RPTUNUTFxfc2V0XF9jcHVpZF8uCgoKIyBJc3N1ZXMgd2l0 aCB0aGUgZXhpc3RpbmcgaHlwZXJjYWxscwoKX1hFTlxfRE9NQ1RMXF9zZXRcX2NwdWlkXyBkb2Vz bid0IGhhdmUgYSByZXR1cm4gdmFsdWUgd2hpY2ggdGhlIGRvbWFpbiBidWlsZGVyCnBheXMgYXR0 ZW50aW9uIHRvLiAgVGhpcyBpcyBiZWNhdXNlLCBiZWZvcmUgQ1BVSUQgcGFydCAyLCB0aGVyZSB3 ZXJlIG5vCmZhaWx1cmUgY29uZGl0aW9ucywgYXMgWGVuIHdvdWxkIGFjY2VwdCBhbGwgdG9vbHN0 YWNrLXByb3ZpZGVkIGRhdGEsIGFuZAphdHRlbXB0IHRvIGF1ZGl0IGl0IGF0IHRoZSB0aW1lIGl0 IHdhcyByZXF1ZXN0ZWQgYnkgdGhlIGd1ZXN0LiAgVG8gc2ltcGxpZnkKdGhlIHBhcnQgMiB3b3Jr LCB0aGlzIGJlaGF2aW91ciB3YXMgbWFpbnRhaW5lZCwgYWx0aG91Z2ggWGVuIHdhcyBhbHRlcmVk IHRvCmF1ZGl0IHRoZSBkYXRhIGF0IGh5cGVyY2FsbCB0aW1lLCB0eXBpY2FsbHkgemVyb2luZyBv dXQgYXJlYXMgd2hpY2ggZmFpbGVkIHRoZQphdWRpdC4KClRoZXJlIGlzIG5vIG1lY2hhbmlzbSBm b3IgdGhlIHRvb2xzdGFjayB0byBxdWVyeSB0aGUgQ1BVSUQgY29uZmlndXJhdGlvbiBmb3IgYQpz cGVjaWZpYyBkb21haW4uICBPcmlnaW5hbGx5LCB0aGUgZG9tYWluIGJ1aWxkZXIgY29uc3RydWN0 ZWQgYSBndWVzdHMgQ1BVSUQKcG9saWN5IGZyb20gZmlyc3QgcHJpbmNpcGxlcywgdXNpbmcgbmF0 aXZlIGBDUFVJRGAgaW5zdHJ1Y3Rpb25zIGluIHRoZSBjb250cm9sCmRvbWFpbi4gIFRoaXMgZnVu Y3Rpb25lZCB0byBhbiBleHRlbnQsIGJ1dCB3YXMgc3ViamVjdCB0byBtYXNraW5nIHByb2JsZW1z LAphbmQgaXMgZnVuZGFtZW50YWxseSBpbmNvbXBhdGlibGUgd2l0aCBIVk0gY29udHJvbCBkb21h aW5zIG9yIHRoZSB1c2Ugb2YKX0NQVUlEIEZhdWx0aW5nXyBpbiBuZXdlciBJbnRlbCBwcm9jZXNz b3JzLgoKQ1BVSUQgcGhhc2UgMSBpbnRyb2R1Y2VkIHRoZSBmZWF0dXJlc2V0IGluZm9ybWF0aW9u LCB3aGljaCBwcm92aWRlZCBhbgphcmNoaXRlY3R1cmFsbHkgc291bmQgbWVjaGFuaXNtIGZvciB0 aGUgdG9vbHN0YWNrIHRvIGlkZW50aWZ5IHdoaWNoIGZlYXR1cmVzCmFyZSB1c2FibGUgZm9yIGd1 ZXN0cy4gIEhvd2V2ZXIsIHRoZSByZXN0IG9mIHRoZSBDUFVJRCBwb2xpY3kgaXMgc3RpbGwKZ2Vu ZXJhdGVkIGZyb20gbmF0aXZlIGBDUFVJRGAgaW5zdHJ1Y3Rpb25zLgoKVGhlIGBjcHVpZF9wb2xp Y3lgIGlzIHBlci1kb21haW4gaW5mb3JtYXRpb24uICBNb3N0IENQVUlEIGRhdGEgaXMgaWRlbnRp Y2FsCmFjcm9zcyBhbGwgQ1BVcy4gIFNvbWUgZGF0YSBhcmUgZHluYW1pYywgYmFzZWQgb24gb3Ro ZXIgY29udHJvbCBzZXR0aW5ncwooQVBJQywgT1NYU0FWRSwgT1NQS0UsIE9TTFdQKSwgYW5kIFhl biBzdWJzdGl0dXRlcyB0aGVzZSBhcHByb3ByaWF0ZWx5IHdoZW4KdGhlIGluZm9ybWF0aW9uIGlz IHJlcXVlc3RlZC4uICBPdGhlciBhcmVhcyBob3dldmVyIGFyZSB0b3BvbG9neSBpbmZvcm1hdGlv biwKaW5jbHVkaW5nIHRocmVhZC9jb3JlL3NvY2tldCBsYXlvdXQsIGNhY2hlIGFuZCBUTEIgaGll cmFyY2h5LiAgVGhlc2UgZGF0YSBhcmUKaW5oZXJpdGVkIGZyb20gd2hpY2hldmVyIHBoeXNpY2Fs IENQVSB0aGUgZG9tYWluIGJ1aWxkZXIgaGFwcGVuZWQgdG8gYmUKcnVubmluZyBvbiB3aGVuIGl0 IHdhcyBtYWtpbmcgY2FsY3VsYXRpb25zLiAgQXMgYSByZXN1bHQsIGl0IGlzIGluYXBwcm9wcmlh dGUKZm9yIHRoZSBndWVzdCB1bmRlciBjb25zdHJ1Y3Rpb24sIGFuZCB1c3VhbGx5IGVudGlyZWx5 IGJvZ3VzIHdoZW4gY29uc2lkZXJlZAphbG9uZ3NpZGUgb3RoZXIgZGF0YS4KCgojIE90aGVyIHBy b2JsZW1zCgpUaGVyZSBpcyBubyBlYXN5IHByb3Zpc2lvbiBmb3IgZmVhdHVyZXMgYXQgZGlmZmVy ZW50IGNvZGUgbWF0dXJpdHkgbGV2ZWxzLApib3RoIGluIHRoZSBoeXBlcnZpc29yLCBhbmQgaW4g dGhlIHRvb2xzdGFjay4KClNvbWUgQ1BVSUQgZmVhdHVyZXMgaGF2ZSB0b3AtbGV2ZWwgY29tbWFu ZCBsaW5lIG9wdGlvbnMgb24gdGhlIFhlbiBjb21tYW5kCmxpbmUsIGJ1dCBtb3N0IGRvIG5vdC4g IE9uIHNvbWUgaGFyZHdhcmUsIHNvbWUgZmVhdHVyZXMgY2FuIGJlIGhpZGRlbgppbmRpcmVjdGx5 IGJ5IGFsdGVyaW5nIHRoZSBgY3B1aWRfbWFza18qYCBwYXJhbWV0ZXJzLiAgVGhpcyBpcyBhIHBy b2JsZW0gZm9yCmRldmVsb3BpbmcgbmV3IGZlYXR1cmVzICh3aGljaCB3YW50IHRvIGJlIG9mZi1i eS1kZWZhdWx0IGJ1dCBhYmxlIHRvIGJlIG9wdGVkCmluIHRvKSwgZGVidWdnaW5nLCB3aGVyZSBp dCBjYW4gc29tZXRpbWVzIGJlIHZlcnkgdXNlZnVsIHRvIGhpZGUgZmVhdHVyZXMgYW5kCnNlZSBp ZiBhIHByb2JsZW0gcmVvY2N1cnMsIGFuZCBvY2Nhc2lvbmFsbHkgaW4gc2VjdXJpdHkgY2lyY3Vt c3RhbmNlcywgd2hlcmUKZGlzYWJsaW5nIGEgZmVhdHVyZSBvdXRyaWdodCBpcyBhbiBlYXN5IHN0 b3AtZ2FwIHNvbHV0aW9uLgoKRnJvbSB0aGUgdG9vbHN0YWNrIHNpZGUsIGdpdmVuIG5vIG90aGVy IGNvbnN0cmFpbnRzLCBhIGd1ZXN0IGdldHMgdGhlCmh5cGVydmlzb3ItbWF4IHNldCBvZiBmZWF0 dXJlcy4gIFRoaXMgc2V0IG9mIGZlYXR1cmVzIGlzIGEgdHJhZGUgb2ZmIGJldHdlZW4Kd2hhdCBp cyBzdXBwb3J0ZWQgaW4gdGhlIGh5cGVydmlzb3IsIGFuZCB3aGljaCBmZWF0dXJlcyBjYW4gcmVh c29uYWJseSBiZQpvZmZlcmVkIHdpdGhvdXQgaW1wZWRpbmcgdGhlIG1pZ3JhdGVhYmlsaXR5IG9m IHRoZSBndWVzdC4gIFRoZXJlIGlzIGxpdHRsZQpwcm92aXNpb24gZm9yIGZlYXR1cmVzIHdoaWNo IGNhbiBiZSBvcHRlZCBpbiB0byBhdCB0aGUgdG9vbHN0YWNrIGxldmVsLCBhbmQKdGhvc2UgdGhh dCBhcmUgYXJlIGRvbmUgc28gdmlhIGFkLWhvYyBtZWFucy4KCgojIFByb3Bvc2FsCgpGaXJzdCBh bmQgZm9yZW1vc3QsIHNwbGl0IHRoZSBjdXJyZW50ICoqbWF4XF9wb2xpY3kqKiBub3Rpb24gaW50 byBzZXBhcmF0ZQoqKm1heCoqIGFuZCAqKmRlZmF1bHQqKiBwb2xpY2llcy4gIFRoaXMgYWxsb3dz IGZvciB0aGUgcHJvdmlzaW9uIG9mIGZlYXR1cmVzCndoaWNoIGFyZSB1bnVzZWQgYnkgZGVmYXVs dCwgYnV0IG1heSBiZSBvcHRlZCBpbiB0bywgYm90aCBhdCB0aGUgaHlwZXJ2aXNvcgpsZXZlbCBh bmQgdGhlIHRvb2xzdGFjayBsZXZlbC4KCkF0IHRoZSBoeXBlcnZpc29yIGxldmVsLCAqKm1heCoq IGNvbnN0aXR1dGVzIGFsbCB0aGUgZmVhdHVyZXMgWGVuIGNhbiB1c2Ugb24KdGhlIGN1cnJlbnQg aGFyZHdhcmUsIHdoaWxlICoqZGVmYXVsdCoqIGlzIHRoZSBzdWJzZXQgdGhlcmVvZiB3aGljaCBh cmUKc3VwcG9ydGVkIGZlYXR1cmVzLCB0aGUgZmVhdHVyZXMgd2hpY2ggdGhlIHVzZXIgaGFzIGV4 cGxpY2l0bHkgb3B0ZWQgaW4gdG8sCmFuZCBleGNsdWRpbmcgYW55IGZlYXR1cmVzIHRoZSB1c2Vy IGhhcyBleHBsaWNpdGx5IG9wdGVkIG91dCBvZi4KCkEgbmV3IGBjcHVpZD1gIGNvbW1hbmQgbGlu ZSBvcHRpb24gc2hhbGwgYmUgaW50cm9kdWNlZCwgd2hvc2UgaW50ZXJuYWxzIGFyZQpnZW5lcmF0 ZWQgYXV0b21hdGljYWxseSBmcm9tIHRoZSBmZWF0dXJlc2V0IEFCSS4gIFRoaXMgbWVhbnMgdGhh dCBhbGwgZmVhdHVyZXMKYWRkZWQgdG8gYGluY2x1ZGUvcHVibGljL2FyY2gteDg2L2NwdWZlYXR1 cmVzZXQuaGAgYXV0b21hdGljYWxseSBnYWluIGNvbW1hbmQKbGluZSBjb250cm9sLiAgKFJGQzog VGhlIHNhbWUgdG9wIGxldmVsIG9wdGlvbiBjYW4gcHJvYmFibHkgYmUgdXNlZCBmb3IKbm9uLWZl YXR1cmUgQ1BVSUQgZGF0YSBjb250cm9sLCBhbHRob3VnaCBJIGNhbid0IGN1cnJlbnRseSB0aGlu ayBvZiBhbnkgY2FzZXMKd2hlcmUgdGhpcyB3b3VsZCBiZSB1c2VkIEFsc28gZmluZCBhIHNlbnNp YmxlIHdheSB0byBleHByZXNzICdhdmFpbGFibGUgYnV0Cm5vdCB0byBiZSB1c2VkIGJ5IFhlbics IGFzIHBlciB0aGUgY3VycmVudCBgc21lcGAgYW5kIGBzbWFwYCBvcHRpb25zLikKCgpBdCB0aGUg Z3Vlc3QgbGV2ZWwsIHRoZSAqKm1heCoqIHBvbGljeSBpcyBjb25jZXB0dWFsbHkgdW5jaGFuZ2Vk LiAgSXQKY29uc3RpdHV0ZXMgYWxsIHRoZSBmZWF0dXJlcyBYZW4gaXMgd2lsbGluZyB0byBvZmZl ciB0byBlYWNoIHR5cGUgb2YgZ3Vlc3Qgb24KdGhlIGN1cnJlbnQgaGFyZHdhcmUgKGluY2x1ZGlu ZyBlbXVsYXRlZCBmZWF0dXJlcykuICBIb3dldmVyLCBpdCBzaGFsbCBpbnN0ZWFkCmJlIGRlcml2 ZWQgZnJvbSBYZW4ncyAqKmRlZmF1bHQqKiBob3N0IHBvbGljeS4gIFRoaXMgaXMgdG8gZW5zdXJl IHRoYXQKZXhwZXJpbWVudGFsIGh5cGVydmlzb3IgZmVhdHVyZXMgbXVzdCBiZSBvcHRlZCBpbiB0 byBhdCB0aGUgWGVuIGxldmVsIGJlZm9yZQp0aGV5IGNhbiBiZSBvcHRlZCBpbiB0byBhdCB0aGUg dG9vbHN0YWNrIGxldmVsLgoKVGhlIGd1ZXN0cyAqKmRlZmF1bHQqKiBwb2xpY3kgaXMgdGhlbiBk ZXJpdmVkIGZyb20gaXRzICoqbWF4KiouICBUaGlzIGlzCmJlY2F1c2UgdGhlcmUgYXJlIHNvbWUg ZmVhdHVyZXMgd2hpY2ggc2hvdWxkIGFsd2F5cyBiZSBleHBsaWNpdGx5IG9wdGVkIGluIHRvCmJ5 IHRoZSB0b29sc3RhY2ssIHN1Y2ggYXMgZW11bGF0ZWQgZmVhdHVyZXMgd2hpY2ggY29tZSB3aXRo IGEgc2VjdXJpdHkKdHJhZGUtb2ZmLCBvciBmb3Igbm9uLWFyY2hpdGVjdHVyYWwgZmVhdHVyZXMg d2hpY2ggbWF5IGRpZmZlciBpbgppbXBsZW1lbnRhdGlvbiBpbiBoZXRlcm9nZW5lb3VzIGVudmly b25tZW50cy4KCkFsbCBnbG9iYWwgcG9saWNpZXMgKFhlbiBhbmQgZ3Vlc3QsIG1heCBhbmQgZGVm YXVsdCkgc2hhbGwgYmUgbWFkZSBhdmFpbGFibGUKdG8gdGhlIHRvb2xzdGFjaywgaW4gYSBtYW5u ZXIgc2ltaWxhciB0byB0aGUgZXhpc3RpbmcKX1hFTlxfU1lTQ1RMXF9nZXRcX2NwdVxfZmVhdHVy ZXNldF8gbWVjaGFuaXNtLiAgVGhpcyBhbGxvd3MgZGVjaXNpb25zIHRvIGJlCnRha2VuIHdoaWNo IGluY2x1ZGUgYWxsIENQVUlEIGRhdGEsIG5vdCBqdXN0IHRoZSBmZWF0dXJlIGJpdG1hcHMuCgpO ZXcgX1hFTlxfRE9NQ1RMXF97Z2V0LHNldH1cX2NwdWlkXF9wb2xpY3lfIGh5cGVyY2FsbHMgd2ls bCBiZSBpbnRyb2R1Y2VkLAp3aGljaCBhbGxvd3MgdGhlIHRvb2xzdGFjayB0byBxdWVyeSBhbmQg c2V0IHRoZSBjcHVpZCBwb2xpY3kgZm9yIGEgc3BlY2lmaWMKZG9tYWluLiAgSXQgc2hhbGwgc3Vw ZXJzZWRlIF9YRU5cX0RPTUNUTFxfc2V0XF9jcHVpZF8sIGFuZCBzaGFsbCBmYWlsIGlmIFhlbgpp cyB1bmhhcHB5IHdpdGggYW55IGFzcGVjdCBvZiB0aGUgcG9saWN5IGR1cmluZyBhdWRpdGluZy4g IFRoaXMgcHJvdmlkZXMKZmVlZGJhY2sgdG8gdGhlIHVzZXIgdGhhdCBhIGNob3NlbiBjb21iaW5h dGlvbiB3aWxsIG5vdCB3b3JrLCByYXRoZXIgdGhhbiB0aGUKZ3Vlc3QgYm9vdGluZyBpbiBhbiB1 bmV4cGVjdGVkIHN0YXRlLgoKV2hlbiBhIGRvbWFpbiBpcyBpbml0aWFsbHkgY3JlYXRlZCwgdGhl IGFwcHJvcHJpYXRlIGd1ZXN0cyAqKmRlZmF1bHQqKiBwb2xpY3kKaXMgZHVwbGljYXRlZCBmb3Ig dXNlLiAgV2hlbiBhdWRpdGluZywgWGVuIHNoYWxsIGF1ZGl0IHRoZSB0b29sc3RhY2tzCnJlcXVl c3RlZCBwb2xpY3kgYWdhaW5zdCB0aGUgZ3Vlc3RzICoqbWF4KiogcG9saWN5LiAgVGhpcyBhbGxv d3MgZXhwZXJpbWVudGFsCmZlYXR1cmVzIG9yIG5vbi1taWdyYXRpb24tc2FmZSBmZWF0dXJlcyB0 byBiZSBvcHRlZCBpbiB0bywgd2l0aG91dCB0aG9zZQpmZWF0dXJlcyBiZWluZyBpbXBvc2VkIHVw b24gYWxsIGd1ZXN0cyBhdXRvbWF0aWNhbGx5LgoKQSBndWVzdHMgQ1BVSUQgcG9saWN5IHNoYWxs IGJlIGltbXV0YWJsZSBhZnRlciBjb25zdHJ1Y3Rpb24uICBUaGlzIGJldHRlcgptYXRjaGVzIHJl YWwgaGFyZHdhcmUsIGFuZCBzaW1wbGlmaWVzIHRoZSBsb2dpYyBpbiBYZW4gdG8gdHJhbnNsYXRl IHBvbGljeQphbHRlcmF0aW9ucyBpbnRvIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy4KCihSRkM6IERl Y2lkZSBleGFjdGx5IHdoZXJlIHRvIGZpdCB0aGlzLiAgX1hFTlxfRE9NQ1RMXF9tYXhcX3ZjcHVz XyBwZXJoYXBzPykKVGhlIHRvb2xzdGFjayBzaGFsbCBhbHNvIGhhdmUgYSBtZWNoYW5pc20gdG8g ZXhwbGljaXRseSBzZWxlY3QgdG9wb2xvZ3kKY29uZmlndXJhdGlvbiBmb3IgdGhlIGd1ZXN0LCB3 aGljaCBwcmltYXJpbHkgYWZmZWN0cyB0aGUgdmlydHVhbCBBUElDIElECmxheW91dCwgYW5kIGhh cyBhIGtub2NrIG9uIGVmZmVjdCBmb3IgdGhlIEFQSUMgSUQgb2YgdGhlIHZpcnR1YWwgSU8tQVBJ Qy4KWGVuJ3MgYXVkaXRpbmcgc2hhbGwgZW5zdXJlIHRoYXQgZ3Vlc3RzIG9ic2VydmUgdmFsdWVz IGNvbnNpc3RlbnQgd2l0aCB0aGUKZ3VhcmFudGVlcyBtYWRlIGJ5IHRoZSB2ZW5kb3IgbWFudWFs cy4KClRoZSBgZGlzYWJsZV9taWdyYXRlYCBmaWVsZCBzaGFsbCBiZSBkcm9wcGVkLiAgVGhlIGNv bmNlcHQgb2YgbWlncmF0ZWFiaWxpdHkKaXMgbm90IGJvb2xlYW47IGl0IGlzIGEgbGFyZ2Ugc3Bl Y3RydW0sIGFsbCBvZiB3aGljaCBuZWVkcyB0byBiZSBtYW5hZ2VkIGJ5CnRoZSB0b29sc3RhY2su ICBUaGUgc2ltcGxlIGNhc2UgaXMgcGlja2luZyB0aGUgY29tbW9uIHN1YnNldCBvZiBmZWF0dXJl cwpiZXR3ZWVuIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uLiAgVGhpcyBiZWNvbWVzIG1vcmUg Y29tcGxpY2F0ZWQgZS5nLiBpZiB0aGUKZ3Vlc3QgdXNlcyBMQlIvTEVSLCBhdCB3aGljaCBwb2lu dCB0aGUgdG9vbHN0YWNrIG5lZWRzIHRvIGNvbnNpZGVyIGhhcmR3YXJlCndpdGggdGhlIHNhbWUg TEJSL0xFUiBmb3JtYXQgaW4gYWRkaXRpb24gdG8ganVzdCB0aGUgcGxhaW4gZmVhdHVyZXMuCgpg ZGlzYWJsZV9taWdyYXRlYCBpcyBjdXJyZW50bHkgb25seSB1c2VkIHRvIGV4cG9zZSBJVFNDIHRv IGd1ZXN0cywgYnV0IHRoZXJlCmFyZSBjYXNlcyB3aGVyZSBpcyBwZXJmZWN0bHkgc2FmZSB0byBt aWdyYXRlIHN1Y2ggYSBndWVzdCwgaWYgdGhlIGRlc3RpbmF0aW9uCmhvc3QgaGFzIHRoZSBzYW1l IFRTQyBmcmVxdWVuY3kgb3IgaGFyZHdhcmUgVFNDIHNjYWxpbmcgc3VwcG9ydC4KCkZpbmFsbHks IGBkaXNhYmxlX21pZ3JhdGVgIGRvZXNuJ3QgKGFuZCBjYW5ub3QgcmVhc29uYWJseSkgYmUgdXNl ZCB0byBpbmhpYml0CnN0YXRlIGdhdGhlciBvcGVyYXRpb25zLCBhcyB0aGlzIGludGVyZmVyZXMg d2l0aCBkZWJ1Z2dpbmcgYW5kIG1vbml0b3JpbmcKdGFza3MuCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK