From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E9763C4BA10 for ; Wed, 26 Feb 2020 12:47:45 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C9CCD21927 for ; Wed, 26 Feb 2020 12:47:45 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C9CCD21927 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1j6w63-0002J4-Ft; Wed, 26 Feb 2020 12:47:27 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1j6w61-0002HU-N9 for xen-devel@lists.xenproject.org; Wed, 26 Feb 2020 12:47:25 +0000 X-Inumbo-ID: 19db93e3-5896-11ea-940c-12813bfff9fa Received: from mx2.suse.de (unknown [195.135.220.15]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 19db93e3-5896-11ea-940c-12813bfff9fa; Wed, 26 Feb 2020 12:47:10 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 16957AE3A; Wed, 26 Feb 2020 12:47:09 +0000 (UTC) From: Juergen Gross To: xen-devel@lists.xenproject.org Date: Wed, 26 Feb 2020 13:46:59 +0100 Message-Id: <20200226124705.29212-7-jgross@suse.com> X-Mailer: git-send-email 2.16.4 In-Reply-To: <20200226124705.29212-1-jgross@suse.com> References: <20200226124705.29212-1-jgross@suse.com> Subject: [Xen-devel] [PATCH v6 06/12] tools: add xenfs tool X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Juergen Gross , Stefano Stabellini , Julien Grall , Wei Liu , Konrad Rzeszutek Wilk , Andrew Cooper , Ian Jackson , George Dunlap , Jan Beulich MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" QWRkIHRoZSB4ZW5mcyB0b29sIGZvciBhY2Nlc3NpbmcgdGhlIGh5cGVydmlzb3IgZmlsZXN5c3Rl bS4KClNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4KQWNrZWQt Ynk6IFdlaSBMaXUgPHdsQHhlbi5vcmc+Ci0tLQpWMToKLSByZW5hbWUgdG8geGVuaHlwZnMKLSBk b24ndCB1c2UgIi0tIiBmb3Igc3ViY29tbWFuZHMKLSBhZGQgd3JpdGUgc3VwcG9ydAoKVjI6Ci0g ZXNjYXBlIG5vbi1wcmludGFibGUgY2hhcmFjdGVycyBwZXIgZGVmYXVsdCB3aXRoIGNhdCBzdWJj b21tYW5kCiAgKElhbiBKYWNrc29uKQotIGFkZCAtYiBvcHRpb24gdG8gY2F0IHN1YmNvbW1hbmQg KElhbiBKYWNrc29uKQotIGFkZCBtYW4gcGFnZQoKVjM6Ci0gYWRhcHQgdG8gbmV3IGh5cGZzIGlu dGVyZmFjZQotLS0KIC5naXRpZ25vcmUgICAgICAgICAgICAgIHwgICAxICsKIGRvY3MvbWFuL3hl bmh5cGZzLjEucG9kIHwgIDYxICsrKysrKysrKysrKysrKysKIHRvb2xzL21pc2MvTWFrZWZpbGUg ICAgIHwgICA2ICsrCiB0b29scy9taXNjL3hlbmh5cGZzLmMgICB8IDE4OSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMjU3 IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkb2NzL21hbi94ZW5oeXBmcy4xLnBv ZAogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL21pc2MveGVuaHlwZnMuYwoKZGlmZiAtLWdpdCBh Ly5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IGU5OGMzZjA1NmQuLmZkNTYxMDcxOGQgMTAw NjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMzY3LDYgKzM2Nyw3IEBA IHRvb2xzL2xpYnhsL3Rlc3RfdGltZWRlcmVnCiB0b29scy9saWJ4bC90ZXN0X2ZkZGVyZWdyYWNl CiB0b29scy9maXJtd2FyZS9ldGhlcmJvb3QvZWItcm9tcy5oCiB0b29scy9maXJtd2FyZS9ldGhl cmJvb3QvZ3B4ZS1naXQtc25hcHNob3QudGFyLmd6Cit0b29scy9taXNjL3hlbmh5cGZzCiB0b29s cy9taXNjL3hlbndhdGNoZG9nZAogdG9vbHMvbWlzYy94ZW4taHZtY3Jhc2gKIHRvb2xzL21pc2Mv eGVuLWxvd21lbWQKZGlmZiAtLWdpdCBhL2RvY3MvbWFuL3hlbmh5cGZzLjEucG9kIGIvZG9jcy9t YW4veGVuaHlwZnMuMS5wb2QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u MzdhYTQ4OGZjYwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbWFuL3hlbmh5cGZzLjEucG9kCkBA IC0wLDAgKzEsNjEgQEAKKz1oZWFkMSBOQU1FCisKK3hlbmh5cGZzIC0gWGVuIHRvb2wgdG8gYWNj ZXNzIFhlbiBoeXBlcnZpc29yIGZpbGUgc3lzdGVtCisKKz1oZWFkMSBTWU5PUFNJUworCitCPHhl bmh5cGZzPiBJPHN1YmNvbW1hbmQ+IFtJPG9wdGlvbnM+XSBbSTxhcmdzPl0KKworPWhlYWQxIERF U0NSSVBUSU9OCisKK1RoZSBCPHhlbmh5cGZzPiBwcm9ncmFtIGlzIHVzZWQgdG8gYWNjZXNzIHRo ZSBYZW4gaHlwZXJ2aXNvciBmaWxlIHN5c3RlbS4KK0l0IGNhbiBiZSB1c2VkIHRvIHNob3cgdGhl IGF2YWlsYWJsZSBlbnRyaWVzLCB0byBzaG93IHRoZWlyIGNvbnRlbnRzIGFuZAorKGlmIGFsbG93 ZWQpIHRvIG1vZGlmeSB0aGVpciBjb250ZW50cy4KKworPWhlYWQxIFNVQkNPTU1BTkRTCisKKz1v dmVyIDQKKworPWl0ZW0gQjxscz4gSTxwYXRoPgorCitMaXN0IHRoZSBhdmFpbGFibGUgZW50cmll cyBiZWxvdyBJPHBhdGg+LgorCis9aXRlbSBCPGNhdD4gW0k8LWI+XSBJPHBhdGg+CisKK1Nob3cg dGhlIGNvbnRlbnRzIG9mIHRoZSBlbnRyeSBzcGVjaWZpZWQgYnkgSTxwYXRoPi4gTm9uLXByaW50 YWJsZSBjaGFyYWN0ZXJzCitvdGhlciB0aGFuIHdoaXRlIHNwYWNlIGNoYXJhY3RlcnMgKGxpa2Ug dGFiLCBuZXcgbGluZSkgd2lsbCBiZSBzaG93biBhcworQjxceG5uPiAoQjxubj4gYmVpbmcgYSB0 d28gZGlnaXQgaGV4IG51bWJlcikgdW5sZXNzIHRoZSBvcHRpb24gQjwtYj4gaXMKK3NwZWNpZmll ZC4KKworPWl0ZW0gQjx3cml0ZT4gSTxwYXRoPiBJPHZhbHVlPgorCitTZXQgdGhlIGNvbnRlbnRz IG9mIHRoZSBlbnRyeSBzcGVjaWZpZWQgYnkgSTxwYXRoPiB0byBJPHZhbHVlPi4KKworPWl0ZW0g Qjx0cmVlPgorCitTaG93IGFsbCB0aGUgZW50cmllcyBvZiB0aGUgZmlsZSBzeXN0ZW0gYXMgYSB0 cmVlLgorCis9YmFjaworCis9aGVhZDEgUkVUVVJOIENPREVTCisKKz1vdmVyIDQKKworPWl0ZW0g QjwwPgorCitTdWNjZXNzCisKKz1pdGVtIEI8MT4KKworSW52YWxpZCB1c2FnZSAoZS5nLiB1bmtu b3duIHN1YmNvbW1hbmQsIHVua25vd24gb3B0aW9uLCBtaXNzaW5nIHBhcmFtZXRlcikuCisKKz1p dGVtIEI8Mj4KKworRW50cnkgbm90IGZvdW5kIHdoaWxlIHRyYXZlcnNpbmcgdGhlIHRyZWUuCisK Kz1pdGVtIEI8Mz4KKworQWNjZXNzIHJpZ2h0IHZpb2xhdGlvbi4KKworPWJhY2sKKwpkaWZmIC0t Z2l0IGEvdG9vbHMvbWlzYy9NYWtlZmlsZSBiL3Rvb2xzL21pc2MvTWFrZWZpbGUKaW5kZXggNjM5 NDdiZmFkYy4uOWZkYjEzNTk3ZiAxMDA2NDQKLS0tIGEvdG9vbHMvbWlzYy9NYWtlZmlsZQorKysg Yi90b29scy9taXNjL01ha2VmaWxlCkBAIC0yNCw2ICsyNCw3IEBAIElOU1RBTExfU0JJTi0kKENP TkZJR19YODYpICAgICArPSB4ZW4tbG93bWVtZAogSU5TVEFMTF9TQklOLSQoQ09ORklHX1g4Nikg ICAgICs9IHhlbi1tZm5kdW1wCiBJTlNUQUxMX1NCSU4tJChDT05GSUdfWDg2KSAgICAgKz0geGVu LXVjb2RlCiBJTlNUQUxMX1NCSU4gICAgICAgICAgICAgICAgICAgKz0geGVuY292CitJTlNUQUxM X1NCSU4gICAgICAgICAgICAgICAgICAgKz0geGVuaHlwZnMKIElOU1RBTExfU0JJTiAgICAgICAg ICAgICAgICAgICArPSB4ZW5sb2NrcHJvZgogSU5TVEFMTF9TQklOICAgICAgICAgICAgICAgICAg ICs9IHhlbnBlcmYKIElOU1RBTExfU0JJTiAgICAgICAgICAgICAgICAgICArPSB4ZW5wbQpAQCAt ODYsNiArODcsOSBAQCB4ZW5wZXJmOiB4ZW5wZXJmLm8KIHhlbnBtOiB4ZW5wbS5vCiAJJChDQykg JChMREZMQUdTKSAtbyAkQCAkPCAkKExETElCU19saWJ4ZW5jdHJsKSAkKEFQUEVORF9MREZMQUdT KQogCit4ZW5oeXBmczogeGVuaHlwZnMubworCSQoQ0MpICQoTERGTEFHUykgLW8gJEAgJDwgJChM RExJQlNfbGlieGVuaHlwZnMpICQoQVBQRU5EX0xERkxBR1MpCisKIHhlbmxvY2twcm9mOiB4ZW5s b2NrcHJvZi5vCiAJJChDQykgJChMREZMQUdTKSAtbyAkQCAkPCAkKExETElCU19saWJ4ZW5jdHJs KSAkKEFQUEVORF9MREZMQUdTKQogCkBAIC05NCw2ICs5OCw4IEBAIHhlbi1ocHRvb2wubzogQ0ZM QUdTICs9IC1JJChYRU5fUk9PVCkvdG9vbHMvbGlieGMgJChDRkxBR1NfbGlieGVuY2FsbCkKIHhl bi1ocHRvb2w6IHhlbi1ocHRvb2wubwogCSQoQ0MpICQoTERGTEFHUykgLW8gJEAgJDwgJChMRExJ QlNfbGlieGVuZXZ0Y2huKSAkKExETElCU19saWJ4ZW5jdHJsKSAkKExETElCU19saWJ4ZW5ndWVz dCkgJChMRExJQlNfbGlieGVuc3RvcmUpICQoQVBQRU5EX0xERkxBR1MpCiAKK3hlbmh5cGZzLm86 IENGTEFHUyArPSAkKENGTEFHU19saWJ4ZW5oeXBmcykKKwogIyB4ZW4tbWZuZHVtcCBpbmNvcnJl Y3RseSB1c2VzIGxpYnhjIGludGVybmFscwogeGVuLW1mbmR1bXAubzogQ0ZMQUdTICs9IC1JJChY RU5fUk9PVCkvdG9vbHMvbGlieGMgJChDRkxBR1NfbGlieGVuY2FsbCkKIHhlbi1tZm5kdW1wOiB4 ZW4tbWZuZHVtcC5vCmRpZmYgLS1naXQgYS90b29scy9taXNjL3hlbmh5cGZzLmMgYi90b29scy9t aXNjL3hlbmh5cGZzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMGI4 MzRiZjRmYQotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL21pc2MveGVuaHlwZnMuYwpAQCAtMCww ICsxLDE4OSBAQAorI2RlZmluZSBfR05VX1NPVVJDRQorI2luY2x1ZGUgPGN0eXBlLmg+CisjaW5j bHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4K KyNpbmNsdWRlIDx4ZW5oeXBmcy5oPgorCitzdGF0aWMgc3RydWN0IHhlbmh5cGZzX2hhbmRsZSAq aGRsOworCitzdGF0aWMgaW50IHVzYWdlKHZvaWQpCit7CisgICAgZnByaW50ZihzdGRlcnIsICJ1 c2FnZTogeGVuaHlwZnMgbHMgPHBhdGg+XG4iKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICAg ICB4ZW5oeXBmcyBjYXQgWy1iXSA8cGF0aD5cbiIpOworICAgIGZwcmludGYoc3RkZXJyLCAiICAg ICAgIHhlbmh5cGZzIHdyaXRlIDxwYXRoPiA8dmFsPlxuIik7CisgICAgZnByaW50ZihzdGRlcnIs ICIgICAgICAgeGVuaHlwZnMgdHJlZVxuIik7CisKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGlj IHZvaWQgeGVuaHlwZnNfcHJpbnRfZXNjYXBlZChjaGFyICpzdHJpbmcpCit7CisgICAgY2hhciAq YzsKKworICAgIGZvciAoYyA9IHN0cmluZzsgKmM7IGMrKykgeworICAgICAgICBpZiAoaXNncmFw aCgqYykgfHwgaXNzcGFjZSgqYykpCisgICAgICAgICAgICBwcmludGYoIiVjIiwgKmMpOworICAg ICAgICBlbHNlCisgICAgICAgICAgICBwcmludGYoIlxceCUwMngiLCAqYyk7CisgICAgfQorICAg IHByaW50ZigiXG4iKTsKK30KKworc3RhdGljIGludCB4ZW5oeXBmc19jYXQoaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKK3sKKyAgICBpbnQgcmV0ID0gMDsKKyAgICBjaGFyICpyZXN1bHQ7CisgICAg Y2hhciAqcGF0aDsKKyAgICBib29sIGJpbiA9IGZhbHNlOworCisgICAgc3dpdGNoIChhcmdjKSB7 CisgICAgY2FzZSAxOgorICAgICAgICBwYXRoID0gYXJndlswXTsKKyAgICAgICAgYnJlYWs7CisK KyAgICBjYXNlIDI6CisgICAgICAgIGlmIChzdHJjbXAoYXJndlswXSwgIi1iIikpCisgICAgICAg ICAgICByZXR1cm4gdXNhZ2UoKTsKKyAgICAgICAgYmluID0gdHJ1ZTsKKyAgICAgICAgcGF0aCA9 IGFyZ3ZbMV07CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJu IHVzYWdlKCk7CisgICAgfQorCisgICAgcmVzdWx0ID0geGVuaHlwZnNfcmVhZChoZGwsIHBhdGgp OworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIHBlcnJvcigiY291bGQgbm90IHJlYWQiKTsK KyAgICAgICAgcmV0ID0gMzsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIWJpbikKKyAgICAg ICAgICAgIHByaW50ZigiJXNcbiIsIHJlc3VsdCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg IHhlbmh5cGZzX3ByaW50X2VzY2FwZWQocmVzdWx0KTsKKyAgICAgICAgZnJlZShyZXN1bHQpOwor ICAgIH0KKworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgeGVuaHlwZnNfd3IoY2hh ciAqcGF0aCwgY2hhciAqdmFsKQoreworICAgIGludCByZXQ7CisKKyAgICByZXQgPSB4ZW5oeXBm c193cml0ZShoZGwsIHBhdGgsIHZhbCk7CisgICAgaWYgKHJldCkgeworICAgICAgICBwZXJyb3Io ImNvdWxkIG5vdCB3cml0ZSIpOworICAgICAgICByZXQgPSAzOworICAgIH0KKworICAgIHJldHVy biByZXQ7Cit9CisKK3N0YXRpYyBjaGFyICp4ZW5oeXBmc190eXBlKHN0cnVjdCB4ZW5oeXBmc19k aXJlbnQgKmVudCkKK3sKKyAgICBjaGFyICpyZXM7CisKKyAgICBzd2l0Y2ggKGVudC0+dHlwZSkg eworICAgIGNhc2UgeGVuaHlwZnNfdHlwZV9kaXI6CisgICAgICAgIHJlcyA9ICI8ZGlyPiAgICI7 CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgeGVuaHlwZnNfdHlwZV9ibG9iOgorICAgICAgICBy ZXMgPSAiPGJsb2I+ICAiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIHhlbmh5cGZzX3R5cGVf c3RyaW5nOgorICAgICAgICByZXMgPSAiPHN0cmluZz4iOworICAgICAgICBicmVhazsKKyAgICBj YXNlIHhlbmh5cGZzX3R5cGVfdWludDoKKyAgICAgICAgcmVzID0gIjx1aW50PiAgIjsKKyAgICAg ICAgYnJlYWs7CisgICAgY2FzZSB4ZW5oeXBmc190eXBlX2ludDoKKyAgICAgICAgcmVzID0gIjxp bnQ+ICAgIjsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmVzID0gIjxc P1w/XD8+ICAgIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHJlczsKK30K Kworc3RhdGljIGludCB4ZW5oeXBmc19scyhjaGFyICpwYXRoKQoreworICAgIHN0cnVjdCB4ZW5o eXBmc19kaXJlbnQgKmVudDsKKyAgICB1bnNpZ25lZCBpbnQgbiwgaTsKKyAgICBpbnQgcmV0ID0g MDsKKworICAgIGVudCA9IHhlbmh5cGZzX3JlYWRkaXIoaGRsLCBwYXRoLCAmbik7CisgICAgaWYg KCFlbnQpIHsKKyAgICAgICAgcGVycm9yKCJjb3VsZCBub3QgcmVhZCBkaXIiKTsKKyAgICAgICAg cmV0ID0gMzsKKyAgICB9IGVsc2UgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQor ICAgICAgICAgICAgcHJpbnRmKCIlcyByJWMgJXNcbiIsIHhlbmh5cGZzX3R5cGUoZW50ICsgaSks CisgICAgICAgICAgICAgICAgICAgZW50W2ldLmlzX3dyaXRhYmxlID8gJ3cnIDogJy0nLCBlbnRb aV0ubmFtZSk7CisKKyAgICAgICAgZnJlZShlbnQpOworICAgIH0KKworICAgIHJldHVybiByZXQ7 Cit9CisKK3N0YXRpYyBpbnQgeGVuaHlwZnNfdHJlZV9zdWIoY2hhciAqcGF0aCwgdW5zaWduZWQg aW50IGRlcHRoKQoreworICAgIHN0cnVjdCB4ZW5oeXBmc19kaXJlbnQgKmVudDsKKyAgICB1bnNp Z25lZCBpbnQgbiwgaTsKKyAgICBpbnQgcmV0ID0gMDsKKyAgICBjaGFyICpwOworCisgICAgZW50 ID0geGVuaHlwZnNfcmVhZGRpcihoZGwsIHBhdGgsICZuKTsKKyAgICBpZiAoIWVudCkKKyAgICAg ICAgcmV0dXJuIDI7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIHBy aW50ZigiJSpzJXMlc1xuIiwgZGVwdGggKiAyLCAiIiwgZW50W2ldLm5hbWUsCisgICAgICAgICAg ICAgICBlbnRbaV0udHlwZSA9PSB4ZW5oeXBmc190eXBlX2RpciA/ICIvIiA6ICIiKTsKKyAgICAg ICAgaWYgKGVudFtpXS50eXBlID09IHhlbmh5cGZzX3R5cGVfZGlyKSB7CisgICAgICAgICAgICBh c3ByaW50ZigmcCwgIiVzJXMlcyIsIHBhdGgsIChkZXB0aCA9PSAxKSA/ICIiIDogIi8iLCBlbnRb aV0ubmFtZSk7CisgICAgICAgICAgICBpZiAoeGVuaHlwZnNfdHJlZV9zdWIocCwgZGVwdGggKyAx KSkKKyAgICAgICAgICAgICAgICByZXQgPSAyOworICAgICAgICB9CisgICAgfQorCisgICAgZnJl ZShlbnQpOworCisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCB4ZW5oeXBmc190cmVl KHZvaWQpCit7CisgICAgcHJpbnRmKCIvXG4iKTsKKworICAgIHJldHVybiB4ZW5oeXBmc190cmVl X3N1YigiLyIsIDEpOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorewor ICAgIGludCByZXQ7CisKKyAgICBoZGwgPSB4ZW5oeXBmc19vcGVuKE5VTEwsIDApOworCisgICAg aWYgKCFoZGwpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJDb3VsZCBub3Qgb3BlbiBsaWJ4 ZW5oeXBmc1xuIik7CisgICAgICAgIHJldCA9IDI7CisgICAgfSBlbHNlIGlmIChhcmdjID49IDMg JiYgIXN0cmNtcChhcmd2WzFdLCAiY2F0IikpCisgICAgICAgIHJldCA9IHhlbmh5cGZzX2NhdChh cmdjIC0gMiwgYXJndiArIDIpOworICAgIGVsc2UgaWYgKGFyZ2MgPT0gMyAmJiAhc3RyY21wKGFy Z3ZbMV0sICJscyIpKQorICAgICAgICByZXQgPSB4ZW5oeXBmc19scyhhcmd2WzJdKTsKKyAgICBl bHNlIGlmIChhcmdjID09IDQgJiYgIXN0cmNtcChhcmd2WzFdLCAid3JpdGUiKSkKKyAgICAgICAg cmV0ID0geGVuaHlwZnNfd3IoYXJndlsyXSwgYXJndlszXSk7CisgICAgZWxzZSBpZiAoYXJnYyA9 PSAyICYmICFzdHJjbXAoYXJndlsxXSwgInRyZWUiKSkKKyAgICAgICAgcmV0ID0geGVuaHlwZnNf dHJlZSgpOworICAgIGVsc2UKKyAgICAgICAgcmV0ID0gdXNhZ2UoKTsKKworICAgIHhlbmh5cGZz X2Nsb3NlKGhkbCk7CisKKyAgICByZXR1cm4gcmV0OworfQotLSAKMi4xNi40CgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcg bGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==