From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Jackson Subject: [OSSTEST PATCH 3/3] anointments: Introduce anointment scheme, and mg-anoint script Date: Mon, 24 Jul 2017 15:41:44 +0100 Message-ID: <1500907304-12791-4-git-send-email-ian.jackson@eu.citrix.com> References: <22896.54014.418454.891770@mariner.uk.xensource.com> <1500907304-12791-1-git-send-email-ian.jackson@eu.citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dZeYh-00081N-Jq for xen-devel@lists.xenproject.org; Mon, 24 Jul 2017 14:42:07 +0000 In-Reply-To: <1500907304-12791-1-git-send-email-ian.jackson@eu.citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Ian Jackson , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org Q0M6IFJvZ2VyIFBhdSBNb25uZSA8cm9nZXIucGF1QGNpdHJpeC5jb20+ClNpZ25lZC1vZmYtYnk6 IElhbiBKYWNrc29uIDxJYW4uSmFja3NvbkBldS5jaXRyaXguY29tPgotLS0KIFJFQURNRS5wbGFu bmVyIHwgICA0ICsKIG1nLWFub2ludCAgICAgIHwgMzQ3ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAzNTEg aW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNzU1IG1nLWFub2ludAoKZGlmZiAtLWdpdCBh L1JFQURNRS5wbGFubmVyIGIvUkVBRE1FLnBsYW5uZXIKaW5kZXggYjNiNDFhOS4uMjU1NDYwYiAx MDA2NDQKLS0tIGEvUkVBRE1FLnBsYW5uZXIKKysrIGIvUkVBRE1FLnBsYW5uZXIKQEAgLTEzMyw2 ICsxMzMsMTAgQEAgVHlwZXMgb2YgdGFzawogICAgbWctZXhlY3V0ZS1mbGlnaHQpLiAgVGhleSBh cmUgYXV0b21hdGljYWxseSBjcmVhdGVkIGFuZCBkZXN0cm95ZWQgLQogICAgc2VlIGFib3ZlLgog CisgKiBgYW5vaW50JyB0YXNrcy4gIFRoZXNlIGFyZSBub3QgcmVhbGx5IG9uZ29pbmcgdGFza3M7 IGJ1dCB0aGV5CisgICByZXByZXNlbnQgc29tZXRoaW5nIHRoYXQgY2FuIGBvd24nIGEgZmxpZ2h0 LiAgRWFjaCBhbm9pbnRtZW50IGtpbmQKKyAgIGlzIHJlcHJlc2VudGVkIGJ5IGFuIGBhbm9pbnQn IHRhc2suCisKICAqIGB4ZGJyZWYnIHRhc2tzLiAgVGhlc2UgYXJlIHVzZWQgdG8gb3duIHJlc291 cmNlcyB3aG9zZSBhbGxvY2F0aW9uCiAgICBhdXRob3JpdHkgaGFzIGJlZW4gdHJhbnNmZXJyZWQg dG8gYSBzZXBhcmF0ZSBkYXRhYmFzZSwgZWcgYSB0ZXN0CiAgICBkYXRhYmFzZS4gIFRoZSByZWZr ZXkgaXMgYW4gaW5kaWNhdGlvbiBvZiB0aGUgb3RoZXIgZGF0YWJhc2UuCmRpZmYgLS1naXQgYS9t Zy1hbm9pbnQgYi9tZy1hbm9pbnQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4u NGJiOGFiMAotLS0gL2Rldi9udWxsCisrKyBiL21nLWFub2ludApAQCAtMCwwICsxLDM0NyBAQAor IyEvdXNyL2Jpbi9wZXJsIC13CisjCisjIHVzYWdlOgorIworIyAgLi9tZy1hbm9pbnQgcHJlcGFy ZSBbUEFSQU0uLi5dIFJFRktFWSBERVNDUklQVElPTgorIyAgICAgICAgUkVGS0VZIHNob3VsZCBi ZSAnU0NPUEUgREVUQUlMUy4uLicKKyMgICAgIFBBUkFNcyBhcmU6CisjICAgICAgICAtLWtlZXA9 PG51bWJlciB0byBrZWVwPiAgICAgICAgICAgICAgICAgZGVmYXVsdCBpcyAzCisjICAgICAgICAt LWJsZXNzaW5ncz08YWxsb3dhYmxlLWJsZXNzaW5nPiwuLi4gICAgZGVmYXVsdCBpcyBqdXN0ICJy ZWFsIgorIworIyAgLi9tZy1hbm9pbnQgZGVzdHJveSBSRUZLRVkKKyMKKyMgIC4vbWctYW5vaW50 IGFub2ludCBbQU5PSU5ULU9QVElPTi4uLl0gUkVGS0VZIEZMSUdIVCBKT0IKKyMgICAgIEFOT0lO VC1PUFRJT05zIGFyZToKKyMgICAgICAgIC0tYWxsb3ctYmxlc3NlZD1CTEVTU0lORywuLi4gICAg ICAgZGVmYXVsdCBpcyBmcm9tIGBwcmVwYXJlJworIyAgICAgICAgLS1hbGxvdy1qb2Itc3RhdHVz PVNUQVRVUywuLi4gICAgICBkZWZhdWx0IGlzIG9ubHkgYHBhc3MnCisjCisjICAuL21nLWFub2lu dCByZXRyaWV2ZSBSRUZLRVkKKyMgICAgICA9PiBGTElHSFQgSk9CCisjICAgICAgICAgaWYgbm90 aGluZyBhbm9pbnRlZCB5ZXQsIHByaW50cyBub3RoaW5nIGFuZCBleGl0cyAwCisjICAgICAgICAg aWYgYW5vaW50bWVudCBub3QgcHJlcGFyZWQsIGZhaWxzCisjCisjICAuL21nLWFub2ludCBsaXN0 CisjICAgICAgPT4gaHVtYW4tcmVhZGFibGUgb3V0cHV0CisKKyMgVGhpcyBpcyBwYXJ0IG9mICJv c3N0ZXN0IiwgYW4gYXV0b21hdGVkIHRlc3RpbmcgZnJhbWV3b3JrIGZvciBYZW4uCisjIENvcHly aWdodCAoQykgMjAwOS0yMDEzLDIwMTcgQ2l0cml4IEluYy4KKyMgCisjIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisj IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorIyAKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEFmZmVy byBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjIAorIyBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyMgRWFjaCBmbGF2b3VyIG9mIGFub2ludG1lbnQg aXMgcmVwcmVzZW50ZWQgYnkgYSByb3cgaW4gdGFza3M6CisjCisjIHR5cGUgICAgICBhbm9pbnQK KyMgcmVma2V5ICAgIDxzY29wZT4gPGRldGFpbHMuLi4+CisjICAgdGhlIGZsYXZvdXIsIGVnICAg ZnJlZWJzZCBidWlsZCA8YnNkYnJhbmNoPiA8YXJjaD4KKyMgdXNlcm5hbWUgIE5VTEwKKyMgY29t bWVudCAgIDxmb3IgaHVtYW4gY29uc3VtcHRpb24+CisjIGxpdmUgICAgICB0CisjIHJlZmluZm8g ICBrZWVwPTxudW1iZXItdG8ta2VlcD4gYmxlc3NpbmdzPTxibGVzc2luZz4sLi4uCisjCisjIEVh Y2ggYW5vaW50bWVudCBpcyByZXByZXNlbnRlZCBieSBhIHJvdyBpbiByZXNvdXJjZXM6CisjCisj IHJlc3R5cGUgICAgJ3NoYXJlLWZsaWdodCcKKyMgcmVzbmFtZSAgICA8ZmxpZ2h0PgorIyBvd250 YXNraWQgIDx0aGUgYW5vaW50bWVudCBmbGF2b3VyIHRhc2tpZD4KKyMgc2hhcmVpeCAgICA8aW5p dGlhbGx5LCB0aGUgYW5vaW50bWVudCBmbGF2b3VyIHRhc2tpZD4KKyMgc3VidGFzayAgICA8am9i PgorCisKK3VzZSBzdHJpY3QgcXcodmFycyByZWZzKTsKK3VzZSBEQkk7Cit1bnNoaWZ0IEBJTkMs IHF3KC4pOwordXNlIE9zc3Rlc3Q7Cit1c2UgT3NzdGVzdDo6VGVzdFN1cHBvcnQ7Cit1c2UgT3Nz dGVzdDo6RXhlY3V0aXZlOwordXNlIElPOjpIYW5kbGU7CisKK2NzcmVhZGNvbmZpZygpOworCitv dXIgQG87CitzdWIgcHJfbyAoKSB7IHByaW50ICRfLCAiXG4iIG9yIGRpZSAkISBmb3JlYWNoIEBv OyB9CisKK291ciAkYW5vaW50bWVudHNfcXR4dCA9IDw8RU5EOworICAgICAgYW5vaW50bWVudHMg QVMgKAorICAgICAgICBTRUxFQ1QgZi5mbGlnaHQgICBmbGlnaHQsCisgICAgICAgICAgICAgICBm LnN0YXJ0ZWQgIHN0YXJ0ZWQsCisgICAgICAgICAgICAgICByLnNoYXJlaXggIHNoYXJlaXgsCisg ICAgICAgICAgICAgICByLnN1YnRhc2sgIGpvYgorICAgICAgICAgIEZST00gcmVzb3VyY2VzIHIK KyAgICAgICAgICBKT0lOIGZsaWdodHMgICBmCisgICAgICAgICAgICBPTiByLnJlc3R5cGUgICA9 ICdzaGFyZS1mbGlnaHQnCisgICAgICAgICAgIEFORCByLnJlc25hbWUgICA9IHRleHQoZi5mbGln aHQpCisgICAgICAgICAgIEFORCByLm93bnRhc2tpZCA9ID8KKyAgICAgICAgICAgQU5EIGYuc3Rh cnRlZCBJUyBOT1QgTlVMTAorICAgICAgKQorRU5ECisKK291ciAkdGFza19xOworb3VyICRtb3N0 cmVjZW50X3E7CisKK3N1YiBwcmVwX3F1ZXJpZXMgeworICAgICR0YXNrX3EgPSAkZGJoX3Rlc3Rz LT5wcmVwYXJlKDw8RU5EKTsKKyAgICAgICAgU0VMRUNUIHRhc2tpZCwgcmVmaW5mbyBGUk9NIHRh c2tzIFdIRVJFIHR5cGU9J2Fub2ludCcgQU5EIHJlZmtleT0/CitFTkQKKworICAgICRtb3N0cmVj ZW50X3EgPSAkZGJoX3Rlc3RzLT5wcmVwYXJlKDw8RU5EKTsKKwkgICAgV0lUSCAkYW5vaW50bWVu dHNfcXR4dAorICAgICAgICAgIFNFTEVDVCAqIEZST00gYW5vaW50bWVudHMKKwlPUkRFUiBCWSBz dGFydGVkIERFU0MgTElNSVQgMQorRU5ECit9CisKK3N1YiBjbWRfcHJlcGFyZSB7CisgICAgbXkg JXBhcmFtcyA9IChrZWVwID0+IDMsCisJCSAgYmxlc3NpbmdzID0+ICdyZWFsJyk7CisgICAgd2hp bGUgKEBBUkdWICYmICRBUkdWWzBdID1+IG0vXi0vKSB7CisJJF89IHNoaWZ0IEBBUkdWOworCWxh c3QgaWYgbS9eXC1cLT8kLzsKKwlpZiAobS9eLS0oa2VlcCk9KFxkKykkLykgeworCSAgICAkcGFy YW1zeyQxfSA9ICQyICsgMDsKKwl9IGVsc2lmIChtL14tLShibGVzc2luZ3MpPShbLSswLTlhLXos XSspJC8pIHsKKwkgICAgJHBhcmFtc3skMX0gPSAkMjsKKwl9IGVsc2UgeworCSAgICBkaWUgInVu a25vd24gb3B0aW9uICRfID8iOworCX0KKyAgICB9CisgICAgZGllICJ1c2FnZTogbWctYW5vaW50 IHByZXBhcmUgW09QVElPTlNdICdTQ09QRSBERVRBSUxTLi4uJyBERVNDUklQVElPTiIKKwl1bmxl c3MgQEFSR1Y9PTIgfHwgJEFSR1ZbMF0gPX4gbS8gLzsKKyAgICBteSAoJHJlZmtleSwgJGRlc2Ny aXB0aW9uKSA9IEBBUkdWOworICAgIG15ICRkcSA9ICRkYmhfdGVzdHMtPnByZXBhcmUoPDxFTkQp OworICAgICAgICBERUxFVEUgRlJPTSB0YXNrcyBXSEVSRSB0eXBlPSdhbm9pbnQnIEFORCByZWZr ZXk9PworRU5ECisgICAgbXkgJGlxID0gJGRiaF90ZXN0cy0+cHJlcGFyZSg8PEVORCk7CisgICAg ICAgIElOU0VSVCBJTlRPIHRhc2tzICh0eXBlLGxpdmUsIHJlZmtleSxjb21tZW50LHJlZmluZm8p CisgICAgICAgICAgICAgICAgICAgIFZBTFVFUyAoJ2Fub2ludCcsJ3QnLCA/LD8sPykKK0VORAor ICAgIG15ICRyZWZpbmZvID0gam9pbiAnICcsIG1hcCB7ICIkXz0kcGFyYW1zeyRffSIgfSBzb3J0 IGtleXMgJXBhcmFtczsKKyAgICBkYl9yZXRyeSgkZGJoX3Rlc3RzLCBbXSwgc3ViIHsKKyAgICAg ICAgQG8gPSAoKTsKKyAgICAgICAgJGRxLT5leGVjdXRlKCRyZWZrZXkpOworICAgICAgICAkaXEt PmV4ZWN1dGUoJHJlZmtleSwgJGRlc2NyaXB0aW9uLCAkcmVmaW5mbyk7CisgICAgfSk7CisgICAg cHJfbygpOworfQorCitzdWIgY21kX2Rlc3Ryb3kgeworICAgIGRpZSB1bmxlc3MgQEFSR1Y9PTE7 CisgICAgZGllIGlmICRBUkdWWzBdID1+IG0vXi0vOworICAgIG15ICgkcmVma2V5KSA9IEBBUkdW OworICAgIG15ICRyZHEgPSAkZGJoX3Rlc3RzLT5wcmVwYXJlKDw8RU5EKTsKKyAgICAgICAgREVM RVRFIEZST00gcmVzb3VyY2VzCisgICAgICAgICAgICAgIFdIRVJFIHJlc3R5cGU9J3NoYXJlLWZs aWdodCcKKyAgICAgICAgICAgICAgICBBTkQgb3dudGFza2lkID0gKFNFTEVDVCB0YXNraWQKKwkJ CQkgICBGUk9NIHRhc2tzCisJCQkJICBXSEVSRSB0eXBlPSdhbm9pbnQnCisJCQkJICAgIEFORCBy ZWZrZXk9PykKK0VORAorICAgIG15ICR0ZHEgPSAkZGJoX3Rlc3RzLT5wcmVwYXJlKDw8RU5EKTsK KyAgICAgICAgREVMRVRFIEZST00gdGFza3MgV0hFUkUgdHlwZT0nYW5vaW50JyBBTkQgcmVma2V5 PT8KK0VORAorICAgIGRiX3JldHJ5KCRkYmhfdGVzdHMsIFtdLCBzdWIgeworICAgICAgICBAbyA9 ICgpOworICAgICAgICAkcmRxLT5leGVjdXRlKCRyZWZrZXkpOworICAgICAgICAkdGRxLT5leGVj dXRlKCRyZWZrZXkpOworICAgIH0pOworICAgIHByX28oKTsKK30KKworc3ViIGNtZF9hbm9pbnQg eworICAgIG15ICRhbGxvd19ibGVzc2VkID0gJyc7CisgICAgbXkgJGFsbG93X2pvYnN0YXR1cyA9 ICcnOworICAgIHdoaWxlIChAQVJHViAmJiAkQVJHVlswXSA9fiBtL14tLykgeworCSRfPSBzaGlm dCBAQVJHVjsKKwlsYXN0IGlmIG0vXlwtXC0/JC87CisJaWYgKG0vXi0tYWxsb3ctYmxlc3NlZD0v KSB7CisJICAgICRhbGxvd19ibGVzc2VkID0gJCc7CQorCX0gZWxzaWYgKG0vXi0tYWxsb3ctam9i LXN0YXR1cz0vKSB7CisJICAgICRhbGxvd19qb2JzdGF0dXMgPSAkJzsJCisJfSBlbHNlIHsKKwkg ICAgZGllICJ1bmtub3duIG9wdGlvbiAkXyA/IjsKKwl9CisgICAgfQorICAgIGRpZSB1bmxlc3Mg QEFSR1Y9PTM7CisgICAgbXkgKCRyZWZrZXksICRmbGlnaHQsICRqb2IpID0gQEFSR1Y7CisKKyAg ICBwcmVwX3F1ZXJpZXMoKTsKKworICAgIG15ICRuZXdmbGlnaHRfcSA9ICRkYmhfdGVzdHMtPnBy ZXBhcmUoPDxFTkQpOworICAgICAgICBTRUxFQ1QgKiBGUk9NIGZsaWdodHMgV0hFUkUgZmxpZ2h0 PT8KK0VORAorICAgIG15ICRuZXdqb2JfcSA9ICRkYmhfdGVzdHMtPnByZXBhcmUoPDxFTkQpOwor ICAgICAgICBTRUxFQ1Qgc3RhdHVzIEZST00gam9icyBXSEVSRSBmbGlnaHQ9PyBBTkQgam9iPT8K K0VORAorCisgICAgbXkgJGNvdW50X3EgPSAkZGJoX3Rlc3RzLT5wcmVwYXJlKDw8RU5EKTsKKwkg ICAgV0lUSCAkYW5vaW50bWVudHNfcXR4dAorICAgICAgICAgIFNFTEVDVCBjb3VudCgqKSBGUk9N IGFub2ludG1lbnRzCitFTkQKKyAgICBteSAkdG9kZWxldGVfcSA9ICRkYmhfdGVzdHMtPnByZXBh cmUoPDxFTkQpOworCSAgICAgV0lUSCAkYW5vaW50bWVudHNfcXR4dAorICAgICAgICAgICBTRUxF Q1QgKgorICAgICAgICAgICAgIEZST00gYW5vaW50bWVudHMKKyAgICAgICAgIE9SREVSIEJZIHN0 YXJ0ZWQgQVNDCisgICAgICAgICAgICBMSU1JVCA/CitFTkQKKyAgICBteSAkZGVsZXRlX3Jlc19x ID0gJGRiaF90ZXN0cy0+cHJlcGFyZSg8PEVORCk7CisgICAgICAgICAgICBERUxFVEUgRlJPTSBy ZXNvdXJjZXMKKyAgICAgICAgICAgICBXSEVSRSByZXN0eXBlICAgPSAnc2hhcmUtZmxpZ2h0Jwor ICAgICAgICAgICAgICAgQU5EIG93bnRhc2tpZCA9ID8KKyAgICAgICAgICAgICAgIEFORCByZXNu YW1lICAgPSA/CisgICAgICAgICAgICAgICBBTkQgc2hhcmVpeCAgID0gPworRU5ECisgICAgbXkg JGluc2VydF9xID0gJGRiaF90ZXN0cy0+cHJlcGFyZSg8PEVORCk7CisgICAgICAgSU5TRVJUIElO VE8gcmVzb3VyY2VzCisgICAgICAgICAgICAgICAgICAgKHJlc3R5cGUsIHJlc25hbWUsb3dudGFz a2lkLHNoYXJlaXgsc3VidGFzaykKKyAgICAgICAgICAgIFZBTFVFUyAoJ3NoYXJlLWZsaWdodCcs ID8sPyw/LD8pCitFTkQKKworICAgIGRiX3JldHJ5KCRkYmhfdGVzdHMsIFtdLCBzdWIgeworCUBv ID0gKCk7CisgICAgICAgICR0YXNrX3EtPmV4ZWN1dGUoJHJlZmtleSk7CisKKwkjIGZpbmQgdGhl IHRhc2sgcm93IChpZSwgdGhlIGFub2ludG1lbnQga2luZCkKKwlteSAoJHRhc2ssICRyZWZpbmZv KSA9ICR0YXNrX3EtPmZldGNocm93X2FycmF5KCk7CisJZGllICJubyBzdWNoIGFub2ludG1lbnQg a2luZCBcYCRyZWZrZXknIChubyBwcmVwYXJlPylcbiIKKwkgICAgdW5sZXNzIGRlZmluZWQgJHRh c2s7CisJbXkgJXBhcmFtczsKKwlmb3JlYWNoIChzcGxpdCAvXHMrLywgJHJlZmluZm8pIHsKKwkg ICAgZGllIHVubGVzcyBtLz0vOworCSAgICAkcGFyYW1zeyRgfSA9ICQnOworCX0KKwlteSAlYmxl c3NpbmdzOworCSRibGVzc2luZ3N7JF99KysgZm9yZWFjaAorCSAgICBncmVwIC8uLywKKwkgICAg KHNwbGl0IC8sLywgJHBhcmFtc3tibGVzc2luZ3N9KSwKKwkgICAgKHNwbGl0IC8sLywgJGFsbG93 X2JsZXNzZWQpOworCisJbXkgJWpvYnN0YXR1czsKKwkkam9ic3RhdHVze3Bhc3N9Kys7CisJJGpv YnN0YXR1c3skX30rKyBmb3JlYWNoIGdyZXAgLy4vLCBzcGxpdCAvLC8sICRhbGxvd19qb2JzdGF0 dXM7CisKKwkjIGNoZWNrIHRoZSB0by1iZS1hbm9pbnRlZCBmbGlnaHQncyBibGVzc2luZworCSRu ZXdmbGlnaHRfcS0+ZXhlY3V0ZSgkZmxpZ2h0KTsKKwlteSAkZnJvdyA9ICRuZXdmbGlnaHRfcS0+ ZmV0Y2hyb3dfaGFzaHJlZigpOworCWRpZSAiZmxpZ2h0ICRmbGlnaHQgbWlzc2luZyIgdW5sZXNz ICRmcm93OworCWRpZSAiZmxpZ2h0ICRmbGlnaHQgbm90IHN0YXJ0ZWQiIHVubGVzcyBkZWZpbmVk ICRmcm93LT57c3RhcnRlZH07CisKKwkjIGNoZWNrIHRoZSBqb2Igc3RhdHVzCisJJG5ld2pvYl9x LT5leGVjdXRlKCRmbGlnaHQsICRqb2IpOworCW15ICgkanN0YXR1cykgPSAkbmV3am9iX3EtPmZl dGNocm93X2FycmF5KCk7CisJZGllICJqb2IgJGZsaWdodC4kam9iIG1pc3NpbmciIHVubGVzcyBk ZWZpbmVkICRqc3RhdHVzOworCWRpZSAiam9iICRmbGlnaHQuJGpvYiBzdGF0dXMgJGpzdGF0dXMi IHVubGVzcyAkam9ic3RhdHVzeyRqc3RhdHVzfTsKKworCXB1c2ggQG8sICJmbGlnaHQgJGZsaWdo dCBibGVzc2VkICRmcm93LT57Ymxlc3Npbmd9Ii4KKwkgICAgICAgICAiIHN0YXJ0ZWQgIi5zaG93 X2Fic190aW1lKCRmcm93LT57c3RhcnRlZH0pOworCisJZGllICJmbGlnaHQgJGZsaWdodCBibGVz c2luZyAkZnJvdy0+e2JsZXNzaW5nfSIuCisJICAgICIgKG5vdCAkcGFyYW1ze2JsZXNzaW5nc30g LyAkYWxsb3dfYmxlc3NlZCkiCisJICAgIHVubGVzcyAkYmxlc3NpbmdzeyAkZnJvdy0+e2JsZXNz aW5nfSB9OworCisJIyBjaGVjayB0by1iZS1hbm5vaW50ZWQgZmxpZ2h0IGlzIG1vc3QgcmVjZW50 CisJJG1vc3RyZWNlbnRfcS0+ZXhlY3V0ZSgkdGFzayk7CisJbXkgJG1vc3RyZWNlbnQgPSAkbW9z dHJlY2VudF9xLT5mZXRjaHJvd19oYXNocmVmKCk7CisJZGllICJmbGlnaHQgJGZsaWdodCBub3Qg bmV3ZXIgdGhhbiAkbW9zdHJlY2VudC0+e2ZsaWdodH0iCisJICAgIHVubGVzcyAkZnJvdy0+e3N0 YXJ0ZWR9ID4gKCRtb3N0cmVjZW50LT57c3RhcnRlZH0gLy8gMCk7CisKKwkjIGV4cGlyZSBvbGQg YW5vaW50bWVudHMKKwkkY291bnRfcS0+ZXhlY3V0ZSgkdGFzayk7CisJbXkgKCRjdXJyZW50KSA9 ICRjb3VudF9xLT5mZXRjaHJvd19hcnJheSgpOworCW15ICR3YW50X2RlbGV0ZSA9ICgkY3VycmVu dCsxKSAtICRwYXJhbXN7a2VlcH07CisJcHVzaCBAbywgImFub2ludG1lbnQgJHJlZmtleTogY3Vy cmVudGx5ICRjdXJyZW50IGFub2ludGVkIjsKKwlpZiAoJHdhbnRfZGVsZXRlID4gMCkgeworCSAg ICAkdG9kZWxldGVfcS0+ZXhlY3V0ZSgkdGFzaywgJHdhbnRfZGVsZXRlKTsKKwkgICAgd2hpbGUg KG15ICRkID0gJHRvZGVsZXRlX3EtPmZldGNocm93X2hhc2hyZWYoKSkgeworCQlwdXNoIEBvLCAi IGV4cGlyaW5nICRkLT57ZmxpZ2h0fS4kZC0+e2pvYn0gWy8kZC0+e3NoYXJlaXh9XSIuCisJCSAg ICAiIHN0YXJ0ZWQgIi5zaG93X2Fic190aW1lKCRkLT57c3RhcnRlZH0pOworCQkkZGVsZXRlX3Jl c19xLT5leGVjdXRlKCR0YXNrLCAkZC0+e2ZsaWdodH0sICRkLT57c2hhcmVpeH0pOworCSAgICB9 CisJfQorCisJIyBhdCBsYXN0IQorCSRpbnNlcnRfcS0+ZXhlY3V0ZSgkZmxpZ2h0LCR0YXNrLCR0 YXNrLCRqb2IpOworCXB1c2ggQG8sICJhbm9pbnRlZCAkZmxpZ2h0LiRqb2IiOworICAgIH0pOwor ICAgIHByX28oKTsKK30gICAgCisKK3N1YiBjbWRfcmV0cmlldmUgeworICAgIGRpZSB1bmxlc3Mg QEFSR1Y9PTE7CisgICAgZGllIGlmICRBUkdWWzBdID1+IG0vXi0vOworICAgIG15ICgkcmVma2V5 KSA9IEBBUkdWOworCisgICAgcHJlcF9xdWVyaWVzKCk7CisKKyAgICBkYl9yZXRyeSgkZGJoX3Rl c3RzLCBbXSwgc3ViIHsKKyAgICAgICAgQG8gPSAoKTsKKyAgICAgICAgJHRhc2tfcS0+ZXhlY3V0 ZSgkcmVma2V5KTsKKwlteSAoJHRhc2spID0gJHRhc2tfcS0+ZmV0Y2hyb3dfYXJyYXkoKTsKKwlk aWUgIm5vIHN1Y2ggYW5vaW50bWVudCBraW5kIFxgJHJlZmtleSciIHVubGVzcyBkZWZpbmVkICR0 YXNrOworCisJJG1vc3RyZWNlbnRfcS0+ZXhlY3V0ZSgkdGFzayk7CisJbXkgJHJvdyA9ICRtb3N0 cmVjZW50X3EtPmZldGNocm93X2hhc2hyZWYoKTsKKwlpZiAoJHJvdykgeworCSAgICBwdXNoIEBv LCAiJHJvdy0+e2ZsaWdodH0gJHJvdy0+e2pvYn0iOworCX0gZWxzZSB7CisJICAgIHByaW50IFNU REVSUiAid2FybmluZzogbm90aGluZyBhbm9pbnRlZCAkcmVma2V5XG4iOworCX0KKyAgICB9KTsK KyAgICBwcl9vKCk7Cit9OworCitzdWIgY21kX2xpc3QgeworICAgIGRpZSAibm8gb3B0aW9ucyB0 byBsaXN0IiBpZiBAQVJHVjsKKworICAgIG15ICR0cSA9ICRkYmhfdGVzdHMtPnByZXBhcmUoPDxF TkQpOworICAgICAgICBTRUxFQ1QgKgorICAgICAgICAgIEZST00gdGFza3MKKyAgICAgICAgIFdI RVJFIHR5cGUgPSAnYW5vaW50JworICAgICAgT1JERVIgQlkgcmVma2V5CitFTkQKKyAgICBteSAk cnEgPSAkZGJoX3Rlc3RzLT5wcmVwYXJlKDw8RU5EKTsKKyAgICAgICAgU0VMRUNUICoKKyAgICAg ICAgICBGUk9NIHJlc291cmNlcworICAgICAgICAgV0hFUkUgb3dudGFza2lkID0gPworRU5ECisK KyAgICBkYl9yZXRyeSgkZGJoX3Rlc3RzLCBbXSwgc3ViIHsKKyAgICAgICAgQG8gPSAoKTsKKyAg ICAgICAgZGJfcmVhZG9ubHlfcmVwb3J0KCk7CisJJHRxLT5leGVjdXRlKCk7CisJd2hpbGUgKG15 ICR0ID0gJHRxLT5mZXRjaHJvd19oYXNocmVmKCkpIHsKKwkgICAgcHVzaCBAbywgc3ByaW50ZiAi JXMgWyVzXSAoJXMpIiwKKwkJJHQtPntyZWZrZXl9LCAkdC0+e3JlZmluZm99LCAkdC0+e2NvbW1l bnR9OworCSAgICBwdXNoIEBvLCAiICEgTk9UIExJVkUiIHVubGVzcyAkdC0+e2xpdmV9OworCSAg ICBwdXNoIEBvLCAiICEgdXNlcm5hbWU9JHQtPnt1c2VybmFtZX0iIGlmIGRlZmluZWQgJHQtPnt1 c2VybmFtZX07CisJICAgICRycS0+ZXhlY3V0ZSgkdC0+e3Rhc2tpZH0pOworCSAgICB3aGlsZSAo bXkgJHIgPSAkcnEtPmZldGNocm93X2hhc2hyZWYoKSkgeworCQlpZiAoJHItPntyZXN0eXBlfSBl cSAnc2hhcmUtZmxpZ2h0JykgeworCQkgICAgcHVzaCBAbywgIiAgJHItPntyZXNuYW1lfS4kci0+ e3N1YnRhc2t9IjsKKwkJfSBlbHNlIHsKKwkJICAgIHB1c2ggQG8sICIgICEgJHItPntyZXN0eXBl fS8kci0+e3Jlc25hbWV9LyRyLT57c3VidGFza30iOworCQl9CisJICAgIH0KKwl9CisgICAgfSk7 CisgICAgcHJfbygpOworfQorCitkaWUgJ25lZWQgb3BlcmF0aW9uJyB1bmxlc3MgQEFSR1Y7Citk aWUgJ25vIGdsb2JhbCBvcHRpb25zIHVuZGVyc3Rvb2QnIGlmICRBUkdWWzBdID1+IG0vXi0vOwor CitteSAkc3ViY21kPSBzaGlmdCBAQVJHVjsKKyRzdWJjbWQgPX4gcy8tL18vZzsKK215ICRzdWJj bWRwcm9jID0gJHsqOjp9eyJjbWRfJHN1YmNtZCJ9OworZGllICJ1bmtub3duIHN1YmNvbW1hbmQi IHVubGVzcyAkc3ViY21kcHJvYzsKKyRzdWJjbWRwcm9jLT4oKTsKLS0gCjIuMS40CgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVu LWRldmVsCg==