From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v8] xSplice v1 design and implementation. Date: Wed, 13 Apr 2016 17:09:31 -0400 Message-ID: <1460581796-30071-1-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aqS3E-00061s-Rg for xen-devel@lists.xenproject.org; Wed, 13 Apr 2016 21:10:17 +0000 List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: konrad@kernel.org, xen-devel@lists.xenproject.org, sasha.levin@oracle.com, andrew.cooper3@citrix.com, ross.lagerwall@citrix.com, mpohlack@amazon.de List-Id: xen-devel@lists.xenproject.org SGV5IQoKQ2hhbmdlbG9nOgp2Nzogc2luY2UgaHR0cDovL2xpc3RzLnhlbi5vcmcvYXJjaGl2ZXMv aHRtbC94ZW4tZGV2ZWwvMjAxNi0wNC9tc2cwMTQ3Ni5odG1sCiAtIEluZ2VzdGVkIG5ld2VyIHZl cnNpb24gb2YgeDg2L21tOiBJbnRyb2R1Y2UgbW9kaWZ5X3hlbl9tYXBwaW5ncygpCiAtIEltcGxl bWVudGVkIGZhc3RlciBzeW1ib2wgdGFibGUgbG9va3VwIChORVcpCiAtIENhcnJpZWQgb3V0IHRl c3RzIG9uIGxhcmdlIENQVSBtYWNoaW5lICgyNDBDUFVzKQogLSBNYWRlIHRoZSBzdHJ1Y3QgeHNw bGljZV9wYXRjaF9mdW5jIHdvcmsgb24gQVJNMzIgYW5kIGNoYW5nZWQgaXRzIHNpemUKICAgKDY0 Yml0IGl0IGlzIDY0Ynl0ZXMsIDMyYml0IGlzIDUyIGJ5dGVzIC0gYW5kIHRoZSBvZmZzZXQgaXMg ZGlmZmVyZW50IHRvbykKIC0gQ2hhbmdlZCBhIGJ1bmNoIG9mIHByaW50ayB0byBkcHJpbnRrLCBh ZGp1c3RlZCBYRU5MT0dfIGxldmVscy4KIC0gUmVzdXJyZWN0ZWQgdGhlIFhFTlZFUl9idWlsZF9p ZC4KIC0gUmV2ZXJ0ZWQgVkVSU0lPTl9vcC4KdjY6IGh0dHA6Ly9saXN0cy54ZW4ub3JnL2FyY2hp dmVzL2h0bWwveGVuLWRldmVsLzIwMTYtMDQvbXNnMDA4NzEuaHRtbAogLSBBY3RlZCBvbiBhbGwg Y29tbWVudHMgZnJvbSBBbmRyZXcsIEp1bGllbiwgYW5kIEphbi4KIC0gR290IGhlbHAgZnJvbSBB bmRyZXcgb24gb25lIG9mIHRoZW0gb3ZlciB0aGUgd2Vla2VuZC4KIC0gRHJvcHBlZDogeHNwbGlj ZTogQWRkIC54c3BsaWNlLmhvb2tzIGZ1bmN0aW9ucyBhbmQgdGVzdC1jYXNlLAogICB4c3BsaWNl OiBBZGQgc3VwcG9ydCBmb3Igc2hhZG93IHZhcmlhYmxlcy4KdjU6IGh0dHA6Ly9saXN0cy54ZW4u b3JnL2FyY2hpdmVzL2h0bWwveGVuLWRldmVsLzIwMTYtMDMvbXNnMDMyODYuaHRtbAogLSBBY3Rl ZCBhdCBhbGwgY29tbWVudHMgZnJvbSBKYW4uCnY0OiBodHRwOi8vbGlzdHMueGVuLm9yZy9hcmNo aXZlcy9odG1sL3hlbi1kZXZlbC8yMDE2LTAzL21zZzAxNzc2Lmh0bWwKIC0gTG90cyBvZiByZXZp ZXcuIExvdHMgb2YgcmV3b3JrLiBTb21lIHBhdGNoZXMgY2hlY2tlZCBpbi4KdjM6IGh0dHA6Ly93 d3cuZ29zc2FtZXItdGhyZWFkcy5jb20vbGlzdHMveGVuL2RldmVsLzQxODI2MgogICAgYW5kIAog ICAgaHR0cDovL2xpc3RzLnhlbnByb2plY3Qub3JnL2FyY2hpdmVzL2h0bWwveGVuLWRldmVsLzIw MTYtMDIvbXNnMDQxMDYuaHRtbAogLSBBY3Qgb24gYWxsIHJldmlld3MuCiAtIFJlZG8gdGhlIGZs b3cgb2YgcGF0Y2hlcwp2MjogaHR0cDovL2xpc3RzLnhlbi5vcmcvYXJjaGl2ZXMvaHRtbC94ZW4t ZGV2ZWwvMjAxNi0wMS9tc2cwMTU5Ny5odG1sCiAtIFVwZGF0ZWQgY29kZS9kb2NzL2Rlc2lnbiB3 aXRoIHJldmlldyBjb21tZW50cy4KIC0gTWFrZSB4ZW4gYWxzbyBoYXZlIGFuIFBUX05PVEUKIC0g QWRkZWQgbW9yZSBvZiBSb3NzJ3MgcGF0Y2hlcwogLSBDb21iaW5lZCBidWlsZC1pZCBwYXRjaHNl dCB3aXRoIHRoaXMuCihzaW5jZSB0aGUgUkZDIGFuZCB0aGUgU2VhdHRsZSBYZW4gcHJlc2VudGF0 aW9uKQogLSBGaW5pc2hlZCBvZmYgc29tZSBvZiB0aGUgd29yayBhcm91bmQgdGhlIGJ1aWxkLWlk LgogLSBTZXR0bGVkIG9uIHRoZSBwcmVlbXB0aW9uIG1lY2hhbmlzbS4KIC0gQ2xlYW5lZCB0aGUg cGF0Y2hlcyBhIGxvdCB1cCwgYnJva2UgdGhlbSB1cCB0byBlYXN5CiAgIHJldmlldyBmb3IgbWFp bnRhaW5lcnMuCnYxOiBodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvYXJjaGl2ZXMvaHRtbC94 ZW4tZGV2ZWwvMjAxNS0wOS9tc2cwMjExNi5odG1sCiAgLSBQdXQgYWxsIHRoZSBkZXNpZ24gY29t bWVudHMgaW4gdGhlIGNvZGUKUHJvdG90eXBlOiBodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcv YXJjaGl2ZXMvaHRtbC94ZW4tZGV2ZWwvMjAxNS0xMC9tc2cwMjU5NS5odG1sCltQb3N0aW5nIGJ5 IFJvc3NdCiAtIFRvb2sgYWxsIHJldmlld3MgaW50byBhY2NvdW50LgogLSBSZWRpZCB0aGUgcGF0 Y2hlcwoKCipUb29scyBNYWludGFpbmVycyoKClNpbmNlIHY3LCB0d28gbmV3IHBhdGNoZXMsIHBs ZWFzZSByZXZpZXc6CgogICAgWEVOVkVSX2J1aWxkX2lkL2xpYnhjOiBQcm92aWRlIGxkLWVtYmVk ZGVkIGJ1aWxkLWlkCiAgICBsaWJ4bDogaW5mbzogRGlzcGxheSBidWlsZF9pZCBvZiB0aGUgaHlw ZXJ2aXNvci4KCipNYWludGFpbmVycyoKCkxlZ2VuZDoKICogICAgLSBTZWUgYmVsb3cKIFIgICAg LSBSZXZpZXdlZCAKIFIrICAgLSBSZXZpZXdlZCBieSB0d28gZm9sa3MKIEEgICAgLSBBY2tlZCBi eSBtYWludGFpbmVyIG9mIHRoZSBhcmVhIChoeXBlcnZpc29yIG9yIHRvb2xzdGFjaykKCiogICAg IFJldmVydCAibGlieGMvbGlieGwvcHl0aG9uL3hlbnN0YXQvb2NhbWw6IFVzZSBuZXcKKiAgICAg UmV2ZXJ0ICJIWVBFUkNBTExfdmVyc2lvbl9vcC4gTmV3IGh5cGVyY2FsbCBtaXJyb3JpbmcKICBB ICAgeHNwbGljZTogRGVzaWduIGRvY3VtZW50CiAgIFIgIHhlbi94c3BsaWNlOiBIeXBlcnZpc29y IGltcGxlbWVudGF0aW9uIG9mIFhFTl9YU1BMSUNFX29wCiAgQVIgIGxpYnhjOiBJbXBsZW1lbnRh dGlvbiBvZiBYRU5fWFNQTElDRV9vcCBpbiBsaWJ4YwogIEFSICB4ZW4teHNwbGljZTogVG9vbCB0 byBtYW5pcHVsYXRlIHhzcGxpY2UgcGF5bG9hZHMKICBBUiAgYXJtL3g4NjogVXNlIHN0cnVjdCB2 aXJ0dWFsX3JlZ2lvbiB0byBkbyBidWcsIHN5bWJvbCwgYW5kICh4ODYpIGV4Y2VwdGlvbiB0YWJs ZXMgbG9va3VwLgogICAgICAgIFtKdWxpZW4gQWNrZWQgdGhlIEFSTSBwYXJ0XQogIEFSICBhcm0v eDg2L3ZtYXA6IEFkZCB2bWFsbG9jX3hlbiwgdmZyZWVfeGVuIGFuZCB2bV9pbml0X3R5cGUKICAg ICAgICBbSnVsaWVuIEFja2VkIHRoZSBBUk0gcGFydF0KICAgUisgIHg4Ni9tbTogSW50cm9kdWNl IG1vZGlmeV94ZW5fbWFwcGluZ3MoKQogICBSICB4c3BsaWNlOiBBZGQgaGVscGVyIGVsZiByb3V0 aW5lcwogICBSICB4c3BsaWNlOiBJbXBsZW1lbnQgcGF5bG9hZCBsb2FkaW5nCiogIFIgIHhzcGxp Y2U6IEltcGxlbWVudCBzdXBwb3J0IGZvciBhcHBseWluZy9yZXZlcnRpbmcvcmVwbGFjaW5nIHBh dGNoZXMuCiAgIFIgIHg4Ni94ZW5faGVsbG9fd29ybGQueHNwbGljZTogVGVzdCBwYXlsb2FkIGZv ciBwYXRjaGluZyAneGVuX2V4dHJhX3ZlcnNpb24nLgogICBSICB4c3BsaWNlLHN5bWJvbHM6IElt cGxlbWVudCBzeW1ib2wgbmFtZSByZXNvbHV0aW9uIG9uIGFkZHJlc3MuCiogICAgIHhzcGxpY2Us IHN5bWJvbHM6IEltcGxlbWVudCBmYXN0IHN5bWJvbCBuYW1lcyAtPiB2aXJ0dWFsIGFkZHJlc3Nl cyBsb29rdXAKICAgUiAgeDg2LCB4c3BsaWNlOiBQcmludCBwYXlsb2FkJ3Mgc3ltYm9sIG5hbWUg YW5kIHBheWxvYWQgbmFtZSBpbiBiYWNrdHJhY2VzCiAgIFIgIHhzcGxpY2U6IEFkZCBzdXBwb3J0 IGZvciBidWcgZnJhbWVzLgogICBSICB4c3BsaWNlOiBBZGQgc3VwcG9ydCBmb3IgZXhjZXB0aW9u IHRhYmxlcy4KICAgUiAgeHNwbGljZTogQWRkIHN1cHBvcnQgZm9yIGFsdGVybmF0aXZlcwogIEFS ICBidWlsZF9pZDogUHJvdmlkZSBsZC1lbWJlZGRlZCBidWlsZC1pZHMKICAgICAgICBbSnVsaWVu IEFja2VkIHRoZSBBUk0gcGFydF0KICBBUiAgeHNwbGljZTogUHJpbnQgYnVpbGRfaWQgaW4ga2V5 aGFuZGxlciBhbmQgb24gYm9vdHVwLgoqICAgICBYRU5WRVJfYnVpbGRfaWQvbGlieGM6IFByb3Zp ZGUgbGQtZW1iZWRkZWQgYnVpbGQtaWQKKiAgICAgbGlieGw6IGluZm86IERpc3BsYXkgYnVpbGRf aWQgb2YgdGhlIGh5cGVydmlzb3IuCiAgIFIgIHhzcGxpY2U6IFN0YWNraW5nIGJ1aWxkLWlkIGRl cGVuZGVuY3kgY2hlY2tpbmcuCiAgIFIgIHhzcGxpY2UveGVuX3JlcGxhY2Vfd29ybGQ6IFRlc3Qt Y2FzZSBmb3IgWFNQTElDRV9BQ1RJT05fUkVQTEFDRQogICBSICB4c3BsaWNlOiBQcmV2ZW50IGR1 cGxpY2F0ZSBwYXlsb2FkcyBmcm9tIGJlaW5nIGxvYWRlZC4KICAgUiAgTUFJTlRBSU5FUlMveHNw bGljZTogQWRkIG15c2VsZiBhbmQgUm9zcyBhcyB0aGUgbWFpbnRhaW5lcnMuCgpTaW5jZSB2Nywg dGhlCiBbUEFUQ0ggdjggMDEvMjddIFJldmVydCAibGlieGMvbGlieGwvcHl0aG9uL3hlbnN0YXQv b2NhbWw6IFVzZSBuZXcKIFtQQVRDSCB2OCAwMi8yN10gUmV2ZXJ0ICJIWVBFUkNBTExfdmVyc2lv bl9vcC4gTmV3IGh5cGVyY2FsbCBtaXJyb3JpbmcKCiBbUEFUQ0ggdjggMTUvMjddIHhzcGxpY2Us IHN5bWJvbHM6IEltcGxlbWVudCBmYXN0IHN5bWJvbCBuYW1lcyAtPgogW1BBVENIIHY4IDIyLzI3 XSBYRU5WRVJfYnVpbGRfaWQvbGlieGM6IFByb3ZpZGUgbGQtZW1iZWRkZWQgYnVpbGQtaWQKIFtQ QVRDSCB2OCAyMy8yN10gbGlieGw6IGluZm86IERpc3BsYXkgYnVpbGRfaWQgb2YgdGhlIGh5cGVy dmlzb3IuCgpoYXZlbid0IGJlZW4gcmV2aWV3ZWQgKHRoZXkgYXJlIG5ldykuIFRob3VnaHQgaG9u ZXN0bHkgdGhlIHJldmVydHMgZG9uJ3QgcmVhbGx5Cm5lZWQgYSByZXZpZXcuCgpKdWxpZW4sIFN0 ZWZhbm8sIEkgZHJvcHBlZCBKdWxpZW4ncyBBY2sgb24KCiBbUEFUQ0ggdjggMTEvMjddIHhzcGxp Y2U6IEltcGxlbWVudCBwYXlsb2FkIGxvYWRpbmcKCmFzIEphbidzIGV4cHJlc3NlZCBhIGRlc2ly ZSBub3QgdG8gaGF2ZSBCSVRTX1BFUl9MT05HIGV4cG9zZWQKaW4gdGhlIHB1YmxpYyBoZWFkZXJz LiBJJ3ZlIHB1dCBDT05GSUdfQVJNXzMyIGluIHRoZXJlLiBPbiBJUkMKU3RlZmFubyB3YXMgT0sg KHJlbHVjYW50bHkpIHdpdGggaXQuCgpQYXRjaHNldCBoYXMgYmVlbiB0ZXN0ZWQgb24gQVJNICh0 d2Vha2luZyB0aGUgS2NvbmZpZyB0byBidWlsZCB4U3BsaWNlIGFuZCB0aGVuCmJvb3RpbmcgYW5k IHVzaW5nIGl0IHVuZGVyIEFSTSBDdWJpZVRydWNrIC0gZ3JhbnRlZCB0aGVyZSBpcyBubyBwYXRj aGluZwp5ZXQgYnV0IHRoZSBoeXBlcmNhbGxzIHdvcmspLCBBUk02NCAob25seSBidWlsdCBpdCks IGFuZCB4ODYgKGxlZ2FjeSBhbmQgRUZJKQoKKlZFUlNJT05fT1AgYmVpbmcgcmV2ZXJ0ZWQ/KgoK SWFuICh0aGFuayB5b3UgdGFraW5nIHRoZSBzdHJlc3NmdWwgcm9sZSBvZiB0aWVicmVha2VyKSBw b2ludGVkIG91dCB0aGF0CmF0IHRoZSBlbmQgb2YgdGhlIGRheSAtIGxlc3MgY29kZSBmcm9tIGEg bWFpbnRhaW5jZSBwZXJzcGVjdGl2ZSBpcyBlYXNpZXIuCkhlbmNlIHRoZSByZXZlcnQuIFdlIGNh biBhbHdheXMgcmV2aXNpdCB0aGlzIGluIFhlbiA0LjggOi0pCgoqQXJlIHRoZXJlIGFueSBUT0RP cyBsZWZ0IGZyb20gdjUsdjYsdjcgcmV2aWV3cz8qCgpKdXN0IGhvdyB0aGUgc3lzY3RsLmggZGVm aW5pdGlvbiBmb3IgJ3N0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMnIHNob3VsZCBiZToKCiNkZWZp bmUgWFNQTElDRV9QQVlMT0FEX1ZFUlNJT04gMQovKgogKiAueHNwbGljZS5mdW5jcyBzdHJ1Y3R1 cmUgbGF5b3V0IGRlZmluZWQgaW4gdGhlIGBQYXlsb2FkIGZvcm1hdGAKICogc2VjdGlvbiBpbiB0 aGUgeFNwbGljZSBkZXNpZ24gZG9jdW1lbnQuCiAqCiAqIFRoZSBzaXplIHNob3VsZCBiZSBleGFj dGx5IDY0IGJ5dGVzICg2NCkgb3IgNTIgYnl0ZXMgKDMyKS4KICoKICogV2UgZ3VhcmQgdGhpcyB3 aXRoIF9fWEVOX18gYXMgdG9vbHN0YWNrcyBkbyBub3QgbmVlZCB0byB1c2UgaXQuCiAqLwojaWZk ZWYgX19YRU5fXwpzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jIHsKICAgIGNvbnN0IGNoYXIgKm5h bWU7ICAgICAgIC8qIE5hbWUgb2YgZnVuY3Rpb24gdG8gYmUgcGF0Y2hlZC4gKi8KI2lmIENPTkZJ R19BUk1fMzIKICAgIHVpbnQzMl90IG5ld19hZGRyOwogICAgdWludDMyX3Qgb2xkX2FkZHI7CiNl bHNlCiAgICB1aW50NjRfdCBuZXdfYWRkcjsKICAgIHVpbnQ2NF90IG9sZF9hZGRyOyAgICAgIC8q IENhbiBiZSB6ZXJvIGFuZCBuYW1lIHdpbGwgYmUgbG9va2VkIHVwLiAqLwojZW5kaWYKICAgIHVp bnQzMl90IG5ld19zaXplOwogICAgdWludDMyX3Qgb2xkX3NpemU7CiAgICB1aW50OF90IHZlcnNp b247ICAgICAgICAvKiBNVVNUIGJlIFhTUExJQ0VfUEFZTE9BRF9WRVJTSU9OLiAqLwogICAgdWlu dDhfdCBwYWRbMzFdOyAgICAgICAgLyogTVVTVCBiZSB6ZXJvIGZpbGxlZC4gKi8KfTsKdHlwZWRl ZiBzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jIHhzcGxpY2VfcGF0Y2hfZnVuY190OwojZW5kaWYK ClBsZWFzZSBub3RlIHRoZSBfX1hFTl9fIHNvIGV2ZW4gaWYgdG9vbHN0YWNrIGRvZXMgaW5jbHVk ZSB0aGUgcHVibGljL3N5c2N0bC5oCml0IHdvbid0IGZpbmQgaXQgdGhlIHN0cnVjdHVyZS4KCldp dGggdGhpcyBJIGFtIGFibGUgdG8gY29tcGlsZSBlYXJseS10ZXN0LWNhc2VzLXByb3RvdHlwZS13 b3JrIHhTcGxpY2Ugb24gQVJNMzIuCgoqV2hhdCBpcyB4U3BsaWNlPyoKCkEgbWVjaGFuaXNtIHRv IGJpbmFyaWx5IHBhdGNoIHRoZSBydW5uaW5nIGh5cGVydmlzb3Igd2l0aCBuZXcKb3Bjb2RlcyB0 aGF0IGhhdmUgY29tZSBhYm91dCBkdWUgdG8gcHJpbWFyaWx5IHNlY3VyaXR5IHVwZGF0ZXMuCgoq V2hhdCB3aWxsIHRoaXMgcGF0Y2hzZXQgZG8gb25jZSBJJ3ZlIGl0KgoKUGF0Y2ggdGhlIGh5cGVy dmlzb3IuCgoqV2h5IGFyZSB5b3UgZW1haWxpbmcgbWU/KgoKUGxlYXNlIHBsZWFzZSByZXZpZXcg YXMgbWFueSBwYXRjaGVzIGFzIHBvc3NpYmxlLgoKKk9LLCB3aGF0IGRvIHlvdSBoYXZlPyoKClRo ZXkgYXJlIGxvY2F0ZWQgYXQgYSBnaXQgdHJlZToKICBnaXQ6Ly94ZW5iaXRzLnhlbi5vcmcvcGVv cGxlL2tvbnJhZHdpbGsveGVuLmdpdCAgIHhzcGxpY2UudjguZHJvcF9WRVJTSU9OX29wCgooQ29w eWluZyBmcm9tIFJvc3MncyBlbWFpbCk6CgpNdWNoIG9mIHRoZSB3b3JrIGlzIGltcGxlbWVudGlu ZyBhIGJhc2ljIHZlcnNpb24gb2YgdGhlIExpbnV4IGtlcm5lbCBtb2R1bGUKbG9hZGVyLiBUaGUg Y29kZToKKiBMb2FkaW5nIG9mIHhTcGxpY2UgRUxGIHBheWxvYWRzLgoqIENvcHlpbmcgYWxsb2Nh dGVkIHNlY3Rpb25zIGludG8gYSBuZXcgZXhlY3V0YWJsZSByZWdpb24gb2YgbWVtb3J5LgoqIFJl c29sdmluZyBzeW1ib2xzLgoqIEFwcGx5aW5nIHJlbG9jYXRpb25zLgoqIFBhdGNoaW5nIG9mIGFs dGluc3RydWN0aW9ucy4KKiBTcGVjaWFsIGhhbmRsaW5nIG9mIGJ1ZyBmcmFtZXMgYW5kIGV4Y2Vw dGlvbiB0YWJsZXMuCiogVW5sb2FkaW5nIG9mIHhTcGxpY2UgRUxGIHBheWxvYWRzLgoqIENvbXBp bGluZyBhIHNhbXBsZSB4U3BsaWNlIEVMRiBwYXlsb2FkCiogUmVzb2x2aW5nIHN5bWJvbHMKKiBV c2luZyBidWlsZC1pZCBkZXBlbmRlbmNpZXMKKiBTdXBwb3J0IGZvciBzaGFkb3cgdmFyaWFibGUg ZnJhbWV3b3JrCiogU3VwcG9ydCBmb3IgZXhlY3V0aW5nIEVMRiBwYXlsb2FkIGZ1bmN0aW9ucyBv biBsb2FkL3VubG9hZC4KClRoZSBvdGhlciBtYWluIGJpdCBvZiB0aGlzIHdvcmsgaXMgYXBwbHlp bmcgYW5kIHJldmVydGluZyB0aGUgcGF0Y2hlcyBzYWZlbHkuCkFzIGltcGxlbWVudGVkLCB0aGUg Y29kZSBpcyBwYXRjaGVkIHdpdGggZWFjaCBDUFUgd2FpdGluZyBpbiB0aGUKcmV0dXJuLXRvLWd1 ZXN0IHBhdGggKGkuZS4gd2l0aCBubyBzdGFjaykgb3Igb24gdGhlIGNwdS1pZGxlIHBhdGgKd2hp Y2ggYXBwZWFycyB0byBiZSB0aGUgc2FmZXN0IHdheSBvZiBwYXRjaGluZy4gV2hpbGUgaXQgaXMg c2FmZSB3ZSBzaG91bGQKc3RpbGwgKGluIHRoZSBuZXh0IHdhdmUgb2YgcGF0Y2hlcykgdG8gdmVy aWZ5IHRvIG5vdCBwYXRjaCBjZXRhaW4gY3JpdGljYWwKc2VjdGlvbnMgKHNheSB0aGUgY29kZSBk b2luZyB0aGUgcGF0Y2hpbmcpCgpBbGwgb2YgdGhlIGZvbGxvd2luZyBzaG91bGQgd29yazoKKiBB cHBseWluZyBwYXRjaGVzIHNhZmVseS4KKiBSZXZlcnRpbmcgcGF0Y2hlcyBzYWZlbHkuCiogUmVw bGFjaW5nIHBhdGNoZXMgc2FmZWx5IChlLmcuIHJldmVydGluZyBhbnkgYXBwbGllZCBwYXRjaGVz IGFuZCBhcHBseWluZwogICBhIG5ldyBwYXRjaCkuCiogQnVnIGZyYW1lcyBhcyBwYXJ0IG9mIG1v ZHVsZXMuIFRoaXMgbWVhbnMgYWRkaW5nIG9yCiAgY2hhbmdpbmcgV0FSTiwgQVNTRVJULCBCVUcs IGFuZCBydW5faW5fZXhjZXB0aW9uX2hhbmRsZXIgd29ya3MgY29ycmVjdGx5LgogIExpbmUgbnVt YmVyIG9ubHkgY2hhbmdlcyBfYXJlIGlnbm9yZWRfLgoqIEV4Y2VwdGlvbiB0YWJsZXMgYXMgcGFy dCBvZiBtb2R1bGVzLiBFLmcuIHdybXNyX3NhZmUgYW5kIGNvcHlfdG9fdXNlciB3b3JrCiAgY29y cmVjdGx5IHdoZW4gdXNlZCBpbiBhIHBhdGNoIG1vZHVsZS4KKiBTdGFja2luZyBvZiBwYXRjaGVz IG9uIHRvcCBvZiBlYWNoIG90aGVyCiogUmVzb2x2aW5nIHN5bWJvbHMgKGV2ZW4gb2YgcGF0Y2hl cykKCipMaW1pdGF0aW9ucyoKClRoZSBhYm92ZSBpcyBlbm91Z2ggdG8gZnVsbHkgaW1wbGVtZW50 IGFuIHVwZGF0ZSBzeXN0ZW0gd2hlcmUgbXVsdGlwbGUgc291cmNlCnBhdGNoZXMgYXJlIGNvbWJp bmVkICh1c2luZyBjb21iaW5lZGlmZikgYW5kIGJ1aWx0IGludG8gYSBzaW5nbGUgYmluYXJ5Cndo aWNoIHRoZW4gYXRvbWljYWxseSByZXBsYWNlcyBhbnkgZXhpc3RpbmcgbG9hZGVkIHBhdGNoZXMK KHRoaXMgaXMgd2h5IFJvc3MgYWRkZWQgYSBSRVBMQUNFIG9wZXJhdGlvbikuIFRoaXMgaXMgdGhl IGFwcHJvYWNoIHVzZWQKYnkga1BhdGNoIGFuZCBrR3JhZnQuCgpNdWx0aXBsZSBjb21wbGV0ZWx5 IGluZGVwZW5kZW50IHBhdGNoZXMgY2FuIGFsc28gYmUgbG9hZGVkIGJ1dCB1bmV4cGVjdGVkCmlu dGVyYWN0aW9ucyBtYXkgb2NjdXIuCgpBcyBpdCBzdGFuZHMsIHRoZSBwYXRjaGVzIGFyZSBzdGF0 aWNhbGx5IGxpbmtlZCB3aGljaCBtZWFucyB0aGF0IGluZGVwZW5kZW50CnBhdGNoZXMgY2Fubm90 IGJlIGxpbmtlZCBhZ2FpbnN0IG9uZSBhbm90aGVyIChlLmcuIGlmIG9uZSBpbnRyb2R1Y2VzIGEK bmV3IHN5bWJvbCkuIFVzaW5nIHRoZSBjb21iaW5lZGlmZiBhcHByb2FjaCBhYm92ZSBmaXhlcyB0 aGlzLgoKQmFja3RyYWNlcyBjb250YWluaW5nIGZ1bmN0aW9ucyBmcm9tIGEgcGF0Y2ggbW9kdWxl IGRvIG5vdCBzaG93IHRoZSBzeW1ib2wgbmFtZS4KClRoZXJlIGlzIG5vIGNoZWNraW5nIHRoYXQg YSBwYXRjaCB3aGljaCBpcyBsb2FkZWQgaXMgYnVpbHQgZm9yIHRoZQpjb3JyZWN0IGh5cGVydmlz b3IgKG5lZWQgdG8gdXNlIGJ1aWxkLWlkKS4KCkJpbmFyeSBwYXRjaGluZyB3b3JrcyBhdCB0aGUg ZnVuY3Rpb24gbGV2ZWwuCgoqVGVzdGluZyoKCllvdSBjYW4gdXNlIHRoZSBleGFtcGxlIGNvZGUg aW5jbHVkZWQgaW4gdGhpcyBwYXRjaHNldDoKCiMgeGwgaW5mbyB8IGdyZXAgZXh0cmEKeGVuX2V4 dHJhICAgICAgICAgICAgICA6IC11bnN0YWJsZQojIHhlbi14c3BsaWNlIGxvYWQgL3Vzci9saWIv ZGVidWcveGVuX2hlbGxvX3dvcmxkLnhzcGxpY2UKVXBsb2FkaW5nIC91c3IvbGliL2RlYnVnL3hl bl9oZWxsb193b3JsZC54c3BsaWNlICgyMDcxIGJ5dGVzKQpQZXJmb3JtaW5nIGNoZWNrOiBjb21w bGV0ZWQKUGVyZm9ybWluZyBhcHBseTouIGNvbXBsZXRlZAojIHhsIGluZm8gfCBncmVwIGV4dHJh Cnhlbl9leHRyYSAgICAgICAgICAgICAgOiBIZWxsbyBXb3JsZAojIHhlbi14c3BsaWNlIHJldmVy dCB4ZW5faGVsbG9fd29ybGQKUGVyZm9ybWluZyByZXZlcnQ6LiBjb21wbGV0ZWQKIyB4ZW4teHNw bGljZSB1bmxvYWQgeGVuX2hlbGxvX3dvcmxkClBlcmZvcm1pbmcgdW5sb2FkOiBjb21wbGV0ZWQK IyB4bCBpbmZvIHwgZ3JlcCBleHRyYQp4ZW5fZXh0cmEgICAgICAgICAgICAgIDogLXVuc3RhYmxl CgpPciB5b3UgY2FuIHVzZSBnaXQ6Ly94ZW5iaXRzLnhlbi5vcmcvcGVvcGxlL2tvbnJhZHdpbGsv eHNwbGljZS1idWlsZC10b29scy5naXQKd2hpY2ggZ2VuZXJhdGVzIHRoZSBFTEYgcGF5bG9hZHMu CgpUaGlzIGxpbmsgaGFzIGEgbmljZSBkZXNjcmlwdGlvbiBvZiBob3cgdG8gdXNlIHRoZSB0b29s OgpodHRwOi8vbGlzdHMueGVucHJvamVjdC5vcmcvYXJjaGl2ZXMvaHRtbC94ZW4tZGV2ZWwvMjAx NS0xMC9tc2cwMjU5NS5odG1sCgogLmdpdGlnbm9yZSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICA1ICsKIENvbmZpZy5tayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAxMiArCiBNQUlOVEFJTkVSUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMTAgKwogZG9jcy9taXNjL3hzcGxpY2UubWFya2Rvd24gICAgICAgICAgICAgICAg ICAgfCAxMTE2ICsrKysrKysrKysrKysrKysrKysKIHRvb2xzL2ZsYXNrL3BvbGljeS9wb2xpY3kv bW9kdWxlcy94ZW4veGVuLnRlIHwgICAgMiArCiB0b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwu aCAgICAgICAgICAgICAgICB8ICAgNjIgKysKIHRvb2xzL2xpYnhjL3hjX21pc2MuYyAgICAgICAg ICAgICAgICAgICAgICAgIHwgIDM1NSArKysrKysKIHRvb2xzL2xpYnhsL2xpYnhsLmMgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAxOCArLQogdG9vbHMvbGlieGwvbGlieGwuaCAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgICA2ICsKIHRvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbCAg ICAgICAgICAgICAgICAgIHwgICAgMSArCiB0b29scy9saWJ4bC94bF9jbWRpbXBsLmMgICAgICAg ICAgICAgICAgICAgICB8ICAgIDEgKwogdG9vbHMvbWlzYy9NYWtlZmlsZSAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICA0ICsKIHRvb2xzL21pc2MveGVuLXhzcGxpY2UuYyAgICAgICAgICAg ICAgICAgICAgIHwgIDQ2MyArKysrKysrKwogeGVuL01ha2VmaWxlICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICA4ICstCiB4ZW4vYXJjaC9hcm0vTWFrZWZpbGUgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgIDUgKy0KIHhlbi9hcmNoL2FybS9rZXJuZWwuYyAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgMiArLQogeGVuL2FyY2gvYXJtL21tLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAyICstCiB4ZW4vYXJjaC9hcm0vc2V0dXAuYyAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgIDQgKwogeGVuL2FyY2gvYXJtL3RyYXBzLmMgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDM5ICstCiB4ZW4vYXJjaC9hcm0veGVuLmxkcy5TICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMTUgKy0KIHhlbi9hcmNoL2FybS94c3BsaWNlLmMgICAgICAgICAgICAgICAg ICAgICAgIHwgICA4NyArKwogeGVuL2FyY2gveDg2L01ha2VmaWxlICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDU4ICstCiB4ZW4vYXJjaC94ODYvYWx0ZXJuYXRpdmUuYyAgICAgICAgICAgICAg ICAgICB8ICAgNDIgKy0KIHhlbi9hcmNoL3g4Ni9ib290L21rZWxmMzIuYyAgICAgICAgICAgICAg ICAgIHwgIDEyOSArKy0KIHhlbi9hcmNoL3g4Ni9kb21haW4uYyAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgMiArCiB4ZW4vYXJjaC94ODYvZXh0YWJsZS5jICAgICAgICAgICAgICAgICAgICAg ICB8ICAgNDEgKy0KIHhlbi9hcmNoL3g4Ni9tbS5jICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICA3NyArLQogeGVuL2FyY2gveDg2L3NldHVwLmMgICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDI4ICstCiB4ZW4vYXJjaC94ODYvdGVzdC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICB8 ICAgODUgKysKIHhlbi9hcmNoL3g4Ni90ZXN0L3hlbl9ieWVfd29ybGQuYyAgICAgICAgICAgIHwg ICAzNCArCiB4ZW4vYXJjaC94ODYvdGVzdC94ZW5fYnllX3dvcmxkX2Z1bmMuYyAgICAgICB8ICAg MjQgKwogeGVuL2FyY2gveDg2L3Rlc3QveGVuX2hlbGxvX3dvcmxkLmMgICAgICAgICAgfCAgIDMz ICsKIHhlbi9hcmNoL3g4Ni90ZXN0L3hlbl9oZWxsb193b3JsZF9mdW5jLmMgICAgIHwgICAzOCAr CiB4ZW4vYXJjaC94ODYvdGVzdC94ZW5fcmVwbGFjZV93b3JsZC5jICAgICAgICB8ICAgMzQgKwog eGVuL2FyY2gveDg2L3Rlc3QveGVuX3JlcGxhY2Vfd29ybGRfZnVuYy5jICAgfCAgIDI0ICsKIHhl bi9hcmNoL3g4Ni90cmFwcy5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0NSArLQogeGVu L2FyY2gveDg2L3hlbi5sZHMuUyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI4ICsKIHhlbi9h cmNoL3g4Ni94c3BsaWNlLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDI2NCArKysrKwogeGVu L2NvbW1vbi9LY29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI4ICsKIHhlbi9j b21tb24vTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArCiB4ZW4vY29t bW9uL2tlcm5lbC5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKwogeGVuL2NvbW1v bi9zeW1ib2xzLWR1bW15LmMgICAgICAgICAgICAgICAgICAgfCAgICA2ICsKIHhlbi9jb21tb24v c3ltYm9scy5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDExOCArLQogeGVuL2NvbW1vbi9z eXNjdGwuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA2ICsKIHhlbi9jb21tb24vdmVy c2lvbi5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA3MCArKwogeGVuL2NvbW1vbi92aXJ0 dWFsX3JlZ2lvbi5jICAgICAgICAgICAgICAgICAgfCAgMTQ4ICsrKwogeGVuL2NvbW1vbi92bWFw LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjAyICsrLS0KIHhlbi9jb21tb24vdnNw cmludGYuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxOSArLQogeGVuL2NvbW1vbi94c3Bs aWNlLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNTQxICsrKysrKysrKysrKysrKysrKysr KysrKysrCiB4ZW4vY29tbW9uL3hzcGxpY2VfZWxmLmMgICAgICAgICAgICAgICAgICAgICB8ICA0 OTUgKysrKysrKysrCiB4ZW4vZHJpdmVycy9hY3BpL29zbC5jICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDIgKy0KIHhlbi9pbmNsdWRlL2FzbS14ODYvYWx0ZXJuYXRpdmUuaCAgICAgICAgICAg IHwgICAgNCArCiB4ZW4vaW5jbHVkZS9hc20teDg2L2N1cnJlbnQuaCAgICAgICAgICAgICAgICB8 ICAgMTAgKy0KIHhlbi9pbmNsdWRlL2FzbS14ODYvdWFjY2Vzcy5oICAgICAgICAgICAgICAgIHwg ICAgMiArCiB4ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmggICAgICAgICAgICAgICAgICB8ICAx OTMgKysrKwogeGVuL2luY2x1ZGUvcHVibGljL3ZlcnNpb24uaCAgICAgICAgICAgICAgICAgfCAg ICAzICsKIHhlbi9pbmNsdWRlL3hlbi9lbGZzdHJ1Y3RzLmggICAgICAgICAgICAgICAgIHwgICAg NyArCiB4ZW4vaW5jbHVkZS94ZW4vbW0uaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIg KwogeGVuL2luY2x1ZGUveGVuL3N5bWJvbHMuaCAgICAgICAgICAgICAgICAgICAgfCAgIDExICsK IHhlbi9pbmNsdWRlL3hlbi92ZXJzaW9uLmggICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiB4 ZW4vaW5jbHVkZS94ZW4vdmlydHVhbF9yZWdpb24uaCAgICAgICAgICAgICB8ICAgNDcgKwogeGVu L2luY2x1ZGUveGVuL3ZtYXAuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIxICstCiB4ZW4v aW5jbHVkZS94ZW4veHNwbGljZS5oICAgICAgICAgICAgICAgICAgICB8ICAxNDYgKysrCiB4ZW4v aW5jbHVkZS94ZW4veHNwbGljZV9lbGYuaCAgICAgICAgICAgICAgICB8ICAgNTggKwogeGVuL3Rv b2xzL3N5bWJvbHMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDkzICstCiB4ZW4veHNt L2ZsYXNrL2hvb2tzLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDcgKwogeGVuL3hzbS9m bGFzay9wb2xpY3kvYWNjZXNzX3ZlY3RvcnMgICAgICAgICAgfCAgICA0ICsKIDY3IGZpbGVzIGNo YW5nZWQsIDYyMzcgaW5zZXJ0aW9ucygrKSwgMjE3IGRlbGV0aW9ucygtKQoKQW5kcmV3IENvb3Bl ciAoMSk6CiAgICAgIHg4Ni9tbTogSW50cm9kdWNlIG1vZGlmeV94ZW5fbWFwcGluZ3MoKQoKS29u cmFkIFJ6ZXN6dXRlayBXaWxrICgxNSk6CiAgICAgIHhzcGxpY2U6IERlc2lnbiBkb2N1bWVudAog ICAgICB4ZW4veHNwbGljZTogSHlwZXJ2aXNvciBpbXBsZW1lbnRhdGlvbiBvZiBYRU5fWFNQTElD RV9vcAogICAgICBsaWJ4YzogSW1wbGVtZW50YXRpb24gb2YgWEVOX1hTUExJQ0Vfb3AgaW4gbGli eGMKICAgICAgeGVuLXhzcGxpY2U6IFRvb2wgdG8gbWFuaXB1bGF0ZSB4c3BsaWNlIHBheWxvYWRz CiAgICAgIGFybS94ODY6IFVzZSBzdHJ1Y3QgdmlydHVhbF9yZWdpb24gdG8gZG8gYnVnLCBzeW1i b2wsIGFuZCAoeDg2KSBleGNlcHRpb24gdGFibGVzIGxvb2t1cC4KICAgICAgYXJtL3g4Ni92bWFw OiBBZGQgdm1hbGxvY194ZW4sIHZmcmVlX3hlbiBhbmQgdm1faW5pdF90eXBlCiAgICAgIHg4Ni94 ZW5faGVsbG9fd29ybGQueHNwbGljZTogVGVzdCBwYXlsb2FkIGZvciBwYXRjaGluZyAneGVuX2V4 dHJhX3ZlcnNpb24nLgogICAgICB4c3BsaWNlLCBzeW1ib2xzOiBJbXBsZW1lbnQgZmFzdCBzeW1i b2wgbmFtZXMgLT4gdmlydHVhbCBhZGRyZXNzZXMgbG9va3VwCiAgICAgIGJ1aWxkX2lkOiBQcm92 aWRlIGxkLWVtYmVkZGVkIGJ1aWxkLWlkcwogICAgICBIWVBFUkNBTExfdmVyc2lvbl9vcDogQWRk IFZFUlNJT05fYnVpbGRfaWQgdG8gcmV0cmlldmUgYnVpbGQtaWQuCiAgICAgIGxpYnhsOiBpbmZv OiBEaXNwbGF5IGJ1aWxkX2lkIG9mIHRoZSBoeXBlcnZpc29yIHVzaW5nIFhFTl9WRVJTSU9OX2J1 aWxkX2lkCiAgICAgIHhzcGxpY2U6IFByaW50IGJ1aWxkX2lkIGluIGtleWhhbmRsZXIgYW5kIG9u IGJvb3R1cC4KICAgICAgeHNwbGljZTogU3RhY2tpbmcgYnVpbGQtaWQgZGVwZW5kZW5jeSBjaGVj a2luZy4KICAgICAgeHNwbGljZS94ZW5fcmVwbGFjZV93b3JsZDogVGVzdC1jYXNlIGZvciBYU1BM SUNFX0FDVElPTl9SRVBMQUNFCiAgICAgIE1BSU5UQUlORVJTL3hzcGxpY2U6IEFkZCBteXNlbGYg YW5kIFJvc3MgYXMgdGhlIG1haW50YWluZXJzLgoKUm9zcyBMYWdlcndhbGwgKDkpOgogICAgICB4 c3BsaWNlOiBBZGQgaGVscGVyIGVsZiByb3V0aW5lcwogICAgICB4c3BsaWNlOiBJbXBsZW1lbnQg cGF5bG9hZCBsb2FkaW5nCiAgICAgIHhzcGxpY2U6IEltcGxlbWVudCBzdXBwb3J0IGZvciBhcHBs eWluZy9yZXZlcnRpbmcvcmVwbGFjaW5nIHBhdGNoZXMuCiAgICAgIHhzcGxpY2Usc3ltYm9sczog SW1wbGVtZW50IHN5bWJvbCBuYW1lIHJlc29sdXRpb24gb24gYWRkcmVzcy4KICAgICAgeDg2LCB4 c3BsaWNlOiBQcmludCBwYXlsb2FkJ3Mgc3ltYm9sIG5hbWUgYW5kIHBheWxvYWQgbmFtZSBpbiBi YWNrdHJhY2VzCiAgICAgIHhzcGxpY2U6IEFkZCBzdXBwb3J0IGZvciBidWcgZnJhbWVzLgogICAg ICB4c3BsaWNlOiBBZGQgc3VwcG9ydCBmb3IgZXhjZXB0aW9uIHRhYmxlcy4KICAgICAgeHNwbGlj ZTogQWRkIHN1cHBvcnQgZm9yIGFsdGVybmF0aXZlcwogICAgICB4c3BsaWNlOiBQcmV2ZW50IGR1 cGxpY2F0ZSBwYXlsb2FkcyBmcm9tIGJlaW5nIGxvYWRlZC4KCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=