From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rusty Russell Subject: [PATCH] ccanlint: enhance and streamline "output" testing lines. Date: Mon, 28 Sep 2015 12:48:03 +0930 Message-ID: <878u7rp6z8.fsf@rustcorp.com.au> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from ozlabs.org (ozlabs.org [IPv6:2401:3900:2:1::2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 3E39D1A002B for ; Mon, 28 Sep 2015 13:18:19 +1000 (AEST) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ccan-bounces+gclcc-ccan=m.gmane.org@lists.ozlabs.org Sender: "ccan" To: ccan List-Id: ccan@lists.ozlabs.org MSkgUmVxdWlyZSAiIiBhcm91bmQgaW5wdXQKMikgTWFrZSB0aGVtIG9wdGlvbmFsIGFyb3VuZCBv dXRwdXQ6IGlmIG5vdCB0aGVyZSwgbG9vc2UgbWF0Y2ggd2hpdGVzcGFjZQozKSBIYW5kbGUgXG4g aW4gb3V0cHV0Lgo0KSBEb2N1bWVudCB0aGF0ICJHaXZlbiB4eHgiIGlzIG9wdGlvbmFsLgoKU2ln bmVkLW9mZi1ieTogUnVzdHkgUnVzc2VsbCA8cnVzdHlAcnVzdGNvcnAuY29tLmF1PgotLS0KIGNj YW4vYXJyYXlfc2l6ZS9faW5mbyAgICAgICAgICAgICAgIHwgICAyICstCiBjY2FuL2F1dG9kYXRh L19pbmZvICAgICAgICAgICAgICAgICB8ICAgNCArLQogY2Nhbi9jYXN0L19pbmZvICAgICAgICAg ICAgICAgICAgICAgfCAgIDIgKy0KIGNjYW4vY3JjL19pbmZvICAgICAgICAgICAgICAgICAgICAg IHwgICAyICstCiBjY2FuL2lvL19pbmZvICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQog Y2Nhbi9qbWFwL19pbmZvICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KIGNjYW4vb2Jqc2V0 L19pbmZvICAgICAgICAgICAgICAgICAgIHwgICA2ICstCiBjY2FuL3JmYzgyMi9faW5mbyAgICAg ICAgICAgICAgICAgICB8ICAgOCArLQogY2Nhbi9zaXBoYXNoL19pbmZvICAgICAgICAgICAgICAg ICAgfCAgIDIgKy0KIGNjYW4vc2lwaGFzaC9zaXBoYXNoLmggICAgICAgICAgICAgIHwgICAyICst CiBjY2FuL3N0cm1hcC9faW5mbyAgICAgICAgICAgICAgICAgICB8ICAgNiArLQogY2Nhbi9zdHJz ZXQvX2luZm8gICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIGNjYW4vdGFrZS9faW5mbyAgICAg ICAgICAgICAgICAgICAgIHwgICAyICstCiBjY2FuL3RhbC9saW5rL19pbmZvICAgICAgICAgICAg ICAgICB8ICAgNCArLQogY2Nhbi90YWwvc3RyL3N0ci5oICAgICAgICAgICAgICAgICAgfCAgIDYg Ky0KIGNjYW4vdGNvbi9faW5mbyAgICAgICAgICAgICAgICAgICAgIHwgICA0ICstCiBkb2MvY2Nh bmxpbnQuMSAgICAgICAgICAgICAgICAgICAgICB8ICAzNCArKystLS0tCiBkb2MvY2NhbmxpbnQu MS50eHQgICAgICAgICAgICAgICAgICB8ICAxMiArKy0KIHRvb2xzL2NjYW5saW50L3Rlc3RzL2V4 YW1wbGVzX3J1bi5jIHwgMTgyICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQog MTkgZmlsZXMgY2hhbmdlZCwgMTI1IGluc2VydGlvbnMoKyksIDE2NSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9jY2FuL2FycmF5X3NpemUvX2luZm8gYi9jY2FuL2FycmF5X3NpemUvX2luZm8K aW5kZXggYjhhOWE4NS4uNjk1NzBmMyAxMDA2NDQKLS0tIGEvY2Nhbi9hcnJheV9zaXplL19pbmZv CisrKyBiL2NjYW4vYXJyYXlfc2l6ZS9faW5mbwpAQCAtMTIsNyArMTIsNyBAQAogICogbWFjcm8g b3IgY29uc3RhbnQuCiAgKgogICogRXhhbXBsZToKLSAqCS8vIE91dHB1dHMgIkluaXRpYWxpemVk IDMyIHZhbHVlcyIKKyAqCS8vIE91dHB1dHMgIkluaXRpYWxpemVkIDMyIHZhbHVlc1xuIgogICoJ I2luY2x1ZGUgPGNjYW4vYXJyYXlfc2l6ZS9hcnJheV9zaXplLmg+CiAgKgkjaW5jbHVkZSA8c3Rk bGliLmg+CiAgKgkjaW5jbHVkZSA8c3RkaW8uaD4KZGlmZiAtLWdpdCBhL2NjYW4vYXV0b2RhdGEv X2luZm8gYi9jY2FuL2F1dG9kYXRhL19pbmZvCmluZGV4IGExMDEyNzYuLjUwN2RlMWEgMTAwNjQ0 Ci0tLSBhL2NjYW4vYXV0b2RhdGEvX2luZm8KKysrIGIvY2Nhbi9hdXRvZGF0YS9faW5mbwpAQCAt OTIsOCArOTIsOCBAQAogICoJCXByaW50ZigidmVyYm9zZSBtb2RlIG9uXG4iKTsKICAqCXJldHVy biAwOwogICogfQotICogLy8gR2l2ZW4gLXYgb3V0cHV0cyAndmVyYm9zZSBtb2RlIG9uJwotICog Ly8gR2l2ZW4gLXYgLUMgLyBvdXRwdXRzICdjaGRpciB0byAvLiB2ZXJib3NlIG1vZGUgb24nCisg KiAvLyBHaXZlbiAiLXYiIG91dHB1dHMgInZlcmJvc2UgbW9kZSBvblxuIgorICogLy8gR2l2ZW4g Ii12IC1DIC8iIG91dHB1dHMgImNoZGlyIHRvIC8uIHZlcmJvc2UgbW9kZSBvblxuIgogICovCiBp bnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogewpkaWZmIC0tZ2l0IGEvY2Nhbi9jYXN0 L19pbmZvIGIvY2Nhbi9jYXN0L19pbmZvCmluZGV4IGY1Y2QzN2YuLmIwOWUwMzQgMTAwNjQ0Ci0t LSBhL2NjYW4vY2FzdC9faW5mbworKysgYi9jY2FuL2Nhc3QvX2luZm8KQEAgLTIwLDcgKzIwLDcg QEAKICAqIExpY2Vuc2U6IExHUEwgKHYyLjEgb3IgYW55IGxhdGVyIHZlcnNpb24pCiAgKgogICog RXhhbXBsZToKLSAqCS8vIEdpdmVuICJ0ZXN0IiBjb250YWlucyAiMyB0J3MgaW4gJ3Rlc3Qgc3Ry aW5nJworICoJLy8gR2l2ZW4gInRlc3QiIG91dHB1dCBjb250YWlucyAiMyB0J3MgaW4gJ3Rlc3Qg c3RyaW5nJyIKICAqCSNpbmNsdWRlIDxjY2FuL2Nhc3QvY2FzdC5oPgogICoJI2luY2x1ZGUgPHN0 ZGludC5oPgogICoJI2luY2x1ZGUgPHN0ZGlvLmg+CmRpZmYgLS1naXQgYS9jY2FuL2NyYy9faW5m byBiL2NjYW4vY3JjL19pbmZvCmluZGV4IGM1OWQ1OGUuLjhhNDdkYjkgMTAwNjQ0Ci0tLSBhL2Nj YW4vY3JjL19pbmZvCisrKyBiL2NjYW4vY3JjL19pbmZvCkBAIC0xNiw3ICsxNiw3IEBACiAgKgkj aW5jbHVkZSA8c3RkaW8uaD4KICAqCSNpbmNsdWRlIDxzdGRsaWIuaD4KICAqCi0gKgkvLyBHaXZl biBJSEFURU1BVEggb3V0cHV0cyAweDk4YTNiOGRmCisgKgkvLyBHaXZlbiAiSUhBVEVNQVRIIiBv dXRwdXRzIDB4OThhM2I4ZGYKICAqCWludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAg Kgl7CiAgKgkJaWYgKGFyZ2MgIT0gMikgewpkaWZmIC0tZ2l0IGEvY2Nhbi9pby9faW5mbyBiL2Nj YW4vaW8vX2luZm8KaW5kZXggNDJiNzFkOS4uZmU0OWRmNSAxMDA2NDQKLS0tIGEvY2Nhbi9pby9f aW5mbworKysgYi9jY2FuL2lvL19pbmZvCkBAIC0xMSw3ICsxMSw3IEBACiAgKiBwbGFucy4KICAq CiAgKiBFeGFtcGxlOgotICogLy8gR2l2ZW4gdHIgQS1aIGEteiBvdXRwdXRzIHRyIGEteiBhLXoK KyAqIC8vIEdpdmVuICJ0ciBBLVogYS16IiBvdXRwdXRzIHRyIGEteiBhLXoKICAqICNpbmNsdWRl IDxjY2FuL2lvL2lvLmg+CiAgKiAjaW5jbHVkZSA8Y2Nhbi9lcnIvZXJyLmg+CiAgKiAjaW5jbHVk ZSA8YXNzZXJ0Lmg+CmRpZmYgLS1naXQgYS9jY2FuL2ptYXAvX2luZm8gYi9jY2FuL2ptYXAvX2lu Zm8KaW5kZXggNzM5ZTYwYS4uZWQxOTQ3ZiAxMDA2NDQKLS0tIGEvY2Nhbi9qbWFwL19pbmZvCisr KyBiL2NjYW4vam1hcC9faW5mbwpAQCAtODAsOSArODAsOSBAQAogICogCWptYXBfZnJlZShhcmcp OwogICogCXJldHVybiAwOwogICogfQotICogLy8gR2l2ZW4gIi0taGVscCIgb3V0cHV0IGNvbnRh aW5zICJBcmcgMSAoJy0taGVscCcpIGlzIGEgbG9uZyBvcHQgb2YgNCBjaGFycyIKLSAqIC8vIEdp dmVuICItaCIgb3V0cHV0IGNvbnRhaW5zICJBcmcgMSAoJy1oJykgaXMgYSBzaG9ydCBvcHQgb2Yg MSBjaGFycyIKLSAqIC8vIEdpdmVuICJmb28iIG91dHB1dCBjb250YWlucyAiQXJnIDEgKCdmb28n KSBpcyBhIG5vcm1hbCBhcmcgb2YgMyBjaGFycyIKKyAqIC8vIEdpdmVuICItLWhlbHAiIG91dHB1 dCBjb250YWlucyAiQXJnIDEgKCctLWhlbHAnKSBpcyBhIGxvbmcgb3B0IG9mIDQgY2hhcnNcbiIK KyAqIC8vIEdpdmVuICItaCIgb3V0cHV0IGNvbnRhaW5zICJBcmcgMSAoJy1oJykgaXMgYSBzaG9y dCBvcHQgb2YgMSBjaGFyc1xuIgorICogLy8gR2l2ZW4gImZvbyIgb3V0cHV0IGNvbnRhaW5zICJB cmcgMSAoJ2ZvbycpIGlzIGEgbm9ybWFsIGFyZyBvZiAzIGNoYXJzXG4iCiAgKgogICogTGljZW5z ZTogTEdQTCAodjIuMSBvciBhbnkgbGF0ZXIgdmVyc2lvbikKICAqIEF1dGhvcjogUnVzdHkgUnVz c2VsbCA8cnVzdHlAcnVzdGNvcnAuY29tLmF1PgpkaWZmIC0tZ2l0IGEvY2Nhbi9vYmpzZXQvX2lu Zm8gYi9jY2FuL29ianNldC9faW5mbwppbmRleCA1ODMxZjU4Li45Njc3NjRlIDEwMDY0NAotLS0g YS9jY2FuL29ianNldC9faW5mbworKysgYi9jY2FuL29ianNldC9faW5mbwpAQCAtNDEsOSArNDEs OSBAQAogICoJCX0KICAqCQlyZXR1cm4gMDsKICAqCX0KLSAqCS8vIEdpdmVuICdhIGIgYycgb3V0 cHV0cyBObyBhcmd1bWVudHMgc3RhcnQgd2l0aCAtLgotICoJLy8gR2l2ZW4gJ2EgLWIgYycgb3V0 cHV0cyAyLAotICoJLy8gR2l2ZW4gJ2EgLWIgLWMgZCcgb3V0cHV0cyAyLDMsCisgKgkvLyBHaXZl biAiYSBiIGMiIG91dHB1dHMgTm8gYXJndW1lbnRzIHN0YXJ0IHdpdGggLS4KKyAqCS8vIEdpdmVu ICJhIC1iIGMiIG91dHB1dHMgMiwKKyAqCS8vIEdpdmVuICJhIC1iIC1jIGQiIG91dHB1dHMgMiwz LAogICovCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogewpkaWZmIC0tZ2l0IGEv Y2Nhbi9yZmM4MjIvX2luZm8gYi9jY2FuL3JmYzgyMi9faW5mbwppbmRleCA2ODBmNDk5Li41YTBh OWM2IDEwMDY0NAotLS0gYS9jY2FuL3JmYzgyMi9faW5mbworKysgYi9jY2FuL3JmYzgyMi9faW5m bwpAQCAtMjUsOSArMjUsOSBAQAogICogaXQgdG9vKS4KICAqCiAgKiBFeGFtcGxlOgotICoJLy8g R2l2ZW4gJycgb3V0cHV0cyAnYm9keScKLSAqCS8vIEdpdmVuICdGcm9tJyBvdXRwdXRzICcgPGZy b21AZXhhbXBsZS5jb20+JwotICoJLy8gR2l2ZW4gJ1RvJyBvdXRwdXRzICcgPHRvQGV4YW1wbGUu Y29tPicKKyAqCS8vIE91dHB1dHMgImJvZHlcbiIKKyAqCS8vIEdpdmVuICJGcm9tIiBvdXRwdXRz IDxmcm9tQGV4YW1wbGUuY29tPgorICoJLy8gR2l2ZW4gIlRvIiBvdXRwdXRzIDx0b0BleGFtcGxl LmNvbT4KICAqCWNoYXIgYnVmW10gPSAiRnJvbTogPGZyb21AZXhhbXBsZS5jb20+XG4iCiAgKgkJ ICAgICAiVG86IDx0b0BleGFtcGxlLmNvbT5cblxuIgogICogICAgICAgICAgICAgICAgICAgImJv ZHlcbiI7CkBAIC0zNSw3ICszNSw3IEBACiAgKglzdHJ1Y3QgYnl0ZXN0cmluZyBvdXQ7CiAgKgog ICoJbXNnID0gcmZjODIyX3N0YXJ0KE5VTEwsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwotICoJaWYgKCFh cmd2WzFdIHx8ICFhcmd2WzFdWzBdKQorICoJaWYgKCFhcmd2WzFdKQogICoJCW91dCA9IHJmYzgy Ml9ib2R5KG1zZyk7CiAgKgllbHNlIHsKICAqCQlzdHJ1Y3QgcmZjODIyX2hlYWRlciAqaGRyOwpk aWZmIC0tZ2l0IGEvY2Nhbi9zaXBoYXNoL19pbmZvIGIvY2Nhbi9zaXBoYXNoL19pbmZvCmluZGV4 IGQ0MmRkYWIuLjdhYTMxNzEgMTAwNjQ0Ci0tLSBhL2NjYW4vc2lwaGFzaC9faW5mbworKysgYi9j Y2FuL3NpcGhhc2gvX2luZm8KQEAgLTIzLDcgKzIzLDcgQEAKICAqIFJldHVybnMgb25lIDY0LWJp dCB3b3JkIGFzIHRoZSBoYXNoIGZ1bmN0aW9uIHJlc3VsdC4KICAqCiAgKiBFeGFtcGxlOgotICoJ Ly8gT3V0cHV0cyAiY2YyNzk0ZTAyNzcxODdiNyIKKyAqCS8vIE91dHB1dHMgY2YyNzk0ZTAyNzcx ODdiNwogICoJI2luY2x1ZGUgPHN0ZGlvLmg+CiAgKgkjaW5jbHVkZSA8Y2Nhbi9zaXBoYXNoL3Np cGhhc2guaD4KICAqCmRpZmYgLS1naXQgYS9jY2FuL3NpcGhhc2gvc2lwaGFzaC5oIGIvY2Nhbi9z aXBoYXNoL3NpcGhhc2guaAppbmRleCA1NWEzOTFkLi42ZjM5ZjlkIDEwMDY0NAotLS0gYS9jY2Fu L3NpcGhhc2gvc2lwaGFzaC5oCisrKyBiL2NjYW4vc2lwaGFzaC9zaXBoYXNoLmgKQEAgLTI4LDcg KzI4LDcgQEAKICAqIFJldHVybnMgb25lIDY0LWJpdCB3b3JkIGFzIHRoZSBoYXNoIGZ1bmN0aW9u IHJlc3VsdC4KICAqCiAgKiBFeGFtcGxlOgotICoJLy8gT3V0cHV0cyAiY2YyNzk0ZTAyNzcxODdi NyIKKyAqCS8vIE91dHB1dHMgY2YyNzk0ZTAyNzcxODdiNwogICoJI2luY2x1ZGUgPHN0ZGlvLmg+ CiAgKgkjaW5jbHVkZSA8Y2Nhbi9zaXBoYXNoL3NpcGhhc2guaD4KICAqCmRpZmYgLS1naXQgYS9j Y2FuL3N0cm1hcC9faW5mbyBiL2NjYW4vc3RybWFwL19pbmZvCmluZGV4IDMzMTc2YjMuLjU1MzE5 YTggMTAwNjQ0Ci0tLSBhL2NjYW4vc3RybWFwL19pbmZvCisrKyBiL2NjYW4vc3RybWFwL19pbmZv CkBAIC00MCw5ICs0MCw5IEBACiAgKglwcmludGYoIlxuIik7CiAgKiAJcmV0dXJuIDA7CiAgKiB9 Ci0gKiAvLyBHaXZlbiAnZm9vJyBvdXRwdXRzICdmb28gYXQgMS4gJwotICogLy8gR2l2ZW4gJ2Zv byBiYXInIG91dHB1dHMgJ2JhciBhdCAyLiBmb28gYXQgMS4gJwotICogLy8gR2l2ZW4gJ2ZvbyBm b28gYmFyIHplYnJhJyBvdXRwdXRzICdiYXIgYXQgMy4gZm9vIGF0IDEuIHplYnJhIGF0IDQuICcK KyAqIC8vIEdpdmVuICJmb28iIG91dHB1dHMgImZvbyBhdCAxLiBcbiIKKyAqIC8vIEdpdmVuICJm b28gYmFyIiBvdXRwdXRzICJiYXIgYXQgMi4gZm9vIGF0IDEuIFxuIgorICogLy8gR2l2ZW4gImZv byBmb28gYmFyIHplYnJhIiBvdXRwdXRzICJiYXIgYXQgMy4gZm9vIGF0IDEuIHplYnJhIGF0IDQu IFxuIgogICovCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogewpkaWZmIC0tZ2l0 IGEvY2Nhbi9zdHJzZXQvX2luZm8gYi9jY2FuL3N0cnNldC9faW5mbwppbmRleCAzZjRmNzczLi45 ODJhOWMwIDEwMDY0NAotLS0gYS9jY2FuL3N0cnNldC9faW5mbworKysgYi9jY2FuL3N0cnNldC9f aW5mbwpAQCAtNDUsOCArNDUsOCBAQAogICoJCXByaW50ZigiXG4iKTsKICAqCQlyZXR1cm4gMDsK ICAqCX0KLSAqCS8vIEdpdmVuICJmb28gYmFyIiBvdXRwdXRzICJiYXIgZm9vICIKLSAqCS8vIEdp dmVuICJmb28gZm9vIGJhciIgb3V0cHV0cyAiYmFyIGZvbyAiCisgKgkvLyBHaXZlbiAiZm9vIGJh ciIgb3V0cHV0cyAiYmFyIGZvbyBcbiIKKyAqCS8vIEdpdmVuICJmb28gZm9vIGJhciIgb3V0cHV0 cyAiYmFyIGZvbyBcbiIKICAqCiAgKiBMaWNlbnNlOiBDQzAgKGJ1dCBzb21lIGRlcGVuZGVuY2ll cyBhcmUgTEdQTCEpCiAgKiBBdXRob3I6IFJ1c3R5IFJ1c3NlbGwgPHJ1c3R5QHJ1c3Rjb3JwLmNv bS5hdT4KZGlmZiAtLWdpdCBhL2NjYW4vdGFrZS9faW5mbyBiL2NjYW4vdGFrZS9faW5mbwppbmRl eCBhM2FjNTM5Li42OTM4MjQ2IDEwMDY0NAotLS0gYS9jY2FuL3Rha2UvX2luZm8KKysrIGIvY2Nh bi90YWtlL19pbmZvCkBAIC0xMyw3ICsxMyw3IEBACiAgKiBMaWNlbnNlOiBDQzAgKFB1YmxpYyBk b21haW4pCiAgKgogICogRXhhbXBsZToKLSAqCS8vIEdpdmVuIGZvby9iYXIuYyBvdXRwdXRzIGJh c2VuYW1lIGlzIGJhci5jCisgKgkvLyBHaXZlbiAiZm9vL2Jhci5jIiBvdXRwdXRzIGJhc2VuYW1l IGlzIGJhci5jCiAgKgkjaW5jbHVkZSA8Y2Nhbi90YWtlL3Rha2UuaD4KICAqCSNpbmNsdWRlIDxz dHJpbmcuaD4KICAqCmRpZmYgLS1naXQgYS9jY2FuL3RhbC9saW5rL19pbmZvIGIvY2Nhbi90YWwv bGluay9faW5mbwppbmRleCA2OTYyY2I0Li5kYjJhZDYxIDEwMDY0NAotLS0gYS9jY2FuL3RhbC9s aW5rL19pbmZvCisrKyBiL2NjYW4vdGFsL2xpbmsvX2luZm8KQEAgLTE0LDggKzE0LDggQEAKICAq CS8vIFNpbGx5IHByb2dyYW0gd2hpY2gga2VlcHMgYSBjYWNoZSBvZiB1cHBlcmNhc2VkIHN0cmlu Z3MuCiAgKgkvLyBUaGUgY2FjaGUgd2FudHMgdG8ga2VlcCBzdHJpbmdzIGFyb3VuZCBldmVuIGFm dGVyIHRoZXkgbWF5IGhhdmUKICAqCS8vIGJlZW4gImZyZWVkIiBieSB0aGUgY2FsbGVyLgotICoJ Ly8gR2l2ZW4gJ2hlbGxvJyBvdXRwdXRzICcxIGNhY2hlIGhpdHMgSEVMTE8gJwotICoJLy8gR2l2 ZW4gJ2hlbGxvIGhlbGxvIHRoZXJlJyBvdXRwdXRzICc0IGNhY2hlIGhpdHMgSEVMTE8gSEVMTE8g VEhFUkUgJworICoJLy8gR2l2ZW4gImhlbGxvIiBvdXRwdXRzICIxIGNhY2hlIGhpdHMgSEVMTE8g XG4iCisgKgkvLyBHaXZlbiAiaGVsbG8gaGVsbG8gdGhlcmUiIG91dHB1dHMgIjQgY2FjaGUgaGl0 cyBIRUxMTyBIRUxMTyBUSEVSRSBcbiIKICAqCSNpbmNsdWRlIDxzdGRpby5oPgogICoJI2luY2x1 ZGUgPGVyci5oPgogICoJI2luY2x1ZGUgPHN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvY2Nhbi90YWwv c3RyL3N0ci5oIGIvY2Nhbi90YWwvc3RyL3N0ci5oCmluZGV4IDBmZTU0MmMuLjBjMTgyMTMgMTAw NjQ0Ci0tLSBhL2NjYW4vdGFsL3N0ci9zdHIuaAorKysgYi9jY2FuL3RhbC9zdHIvc3RyLmgKQEAg LTE2NCw5ICsxNjQsOSBAQCBjaGFyICp0YWxfc3Ryam9pbihjb25zdCB2b2lkICpjdHgsIGNoYXIg KnN0cmluZ3NbXSwgY29uc3QgY2hhciAqZGVsaW0sCiAgKglyZWdjb21wKDMpLCByZWdleCgzKS4K ICAqCiAgKiBFeGFtcGxlOgotICoJLy8gR2l2ZW4gJ015IG5hbWUgaXMgUnVzdHknIG91dHB1dHMg J0hlbGxvIFJ1c3R5IScKLSAqCS8vIEdpdmVuICdteSBmaXJzdCBuYW1lIGlzIFJ1c3R5IFJ1c3Nl bGwnIG91dHB1dHMgJ0hlbGxvIFJ1c3R5IFJ1c3NlbGwhJwotICoJLy8gR2l2ZW4gJ015IG5hbWUg aXNudCBSdXN0eSBSdXNzZWxsJyBvdXRwdXRzICdIZWxsbyB0aGVyZSEnCisgKgkvLyBHaXZlbiAi TXkgbmFtZSBpcyBSdXN0eSIgb3V0cHV0cyAiSGVsbG8gUnVzdHkhXG4iCisgKgkvLyBHaXZlbiAi bXkgZmlyc3QgbmFtZSBpcyBSdXN0eSBSdXNzZWxsIiBvdXRwdXRzICJIZWxsbyBSdXN0eSBSdXNz ZWxsIVxuIgorICoJLy8gR2l2ZW4gIk15IG5hbWUgaXNudCBSdXN0eSBSdXNzZWxsIiBvdXRwdXRz ICJIZWxsbyB0aGVyZSFcbiIKICAqCWludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAg Kgl7CiAgKgkJY2hhciAqcGVyc29uLCAqaW5wdXQ7CmRpZmYgLS1naXQgYS9jY2FuL3Rjb24vX2lu Zm8gYi9jY2FuL3Rjb24vX2luZm8KaW5kZXggYzA3ZTQxZS4uZjZhNmYwZiAxMDA2NDQKLS0tIGEv Y2Nhbi90Y29uL19pbmZvCisrKyBiL2NjYW4vdGNvbi9faW5mbwpAQCAtNTQsOCArNTQsOCBAQAog ICoJCSAgICAgICBjb250YWluZXJfZ2V0KCZzYyksICpjb250YWluZXJfZ2V0KCZpYykgLSAxKTsK ICAqCQlyZXR1cm4gMDsKICAqCX0KLSAqCS8vIEdpdmVuICJmb28iIG91dHB1dHMgIkxhc3QgYXJn IGlzIGZvbyBvZiAxIGFyZ3VtZW50cyIKLSAqCS8vIEdpdmVuICJmb28gYmFyIiBvdXRwdXRzICJM YXN0IGFyZyBpcyBiYXIgb2YgMiBhcmd1bWVudHMiCisgKgkvLyBHaXZlbiAiZm9vIiBvdXRwdXRz ICJMYXN0IGFyZyBpcyBmb28gb2YgMSBhcmd1bWVudHNcbiIKKyAqCS8vIEdpdmVuICJmb28gYmFy IiBvdXRwdXRzICJMYXN0IGFyZyBpcyBiYXIgb2YgMiBhcmd1bWVudHNcbiIKICAqCiAgKiBMaWNl bnNlOiBDQzAgKFB1YmxpYyBkb21haW4pCiAgKgpkaWZmIC0tZ2l0IGEvZG9jL2NjYW5saW50LjEg Yi9kb2MvY2NhbmxpbnQuMQppbmRleCA0Y2MwNmMyLi4xNTI2MDY0IDEwMDY0NAotLS0gYS9kb2Mv Y2NhbmxpbnQuMQorKysgYi9kb2MvY2NhbmxpbnQuMQpAQCAtMSwxMyArMSwxMyBAQAogJ1wiIHQK IC5cIiAgICAgVGl0bGU6IGNjYW5saW50CiAuXCIgICAgQXV0aG9yOiBbc2VlIHRoZSAiQVVUSE9S IiBzZWN0aW9uXQotLlwiIEdlbmVyYXRvcjogRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgdjEuNzUu MiA8aHR0cDovL2RvY2Jvb2suc2YubmV0Lz4KLS5cIiAgICAgIERhdGU6IDEyLzA1LzIwMTEKKy5c IiBHZW5lcmF0b3I6IERvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIHYxLjc4LjEgPGh0dHA6Ly9kb2Ni b29rLnNmLm5ldC8+CisuXCIgICAgICBEYXRlOiAwOS8yOC8yMDE1CiAuXCIgICAgTWFudWFsOiBc IFwmCiAuXCIgICAgU291cmNlOiBcIFwmCiAuXCIgIExhbmd1YWdlOiBFbmdsaXNoCiAuXCIKLS5U SCAiQ0NBTkxJTlQiICIxIiAiMTIvMDUvMjAxMSIgIlwgXCYiICJcIFwmIgorLlRIICJDQ0FOTElO VCIgIjEiICIwOS8yOC8yMDE1IiAiXCBcJiIgIlwgXCYiCiAuXCIgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC5cIiAqIERl ZmluZSBzb21lIHBvcnRhYmlsaXR5IHN0dWZmCiAuXCIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTM2LDcgKzM2LDcg QEAgY2NhbmxpbnQgXC0gTWFrZSBDQ0FOIGNvZGUgbW9kdWxlcywgYW5kIHRoZSBicmlnaHRuZXNz IHVwXCYuCiAuc3AKIE5vIGVuY29kZXI/IE5vIG5lZWQgdG8gXGZCY2NhbmxpbnRcZlJcJi4gWW91 IHByb2dyYW1tZXI/IEV4Y2l0ZWQgdG8gXGZCY2NhbmxpbnRcZlIhCiAuc3AKLUNDQU4gbW9kdWxl IGlzIHNtYWxsIGNvZGUgb2YgdGhlIHNvbmdcJi4gXGZCY2NhbmxpbnRcZlIgZnVsbCBDQ0FOIHRl c3RpbmcgdG9vbFwmLiBFYWNoIHRlc3Qgc3ByYXkgYml0IG9mIHdpc2RvbVwmLiBBbHNvIHNjb3Jl XCYuIEdvb2Qgc2NvcmUgZ29vZFwmLiBCYWQgYmFkIHNjb3JlXCYuCitDQ0FOIG1vZHVsZSBpcyBz bWFsbCBjb2RlIG9mIHRoZSBzb25nXCYuIFxmQmNjYW5saW50XGZSIGZ1bGwgQ0NBTiB0ZXN0aW5n IHRvb2xcJi4gRWFjaCB0ZXN0IHNwcmF5IGJpdCBvZiB3aXNkb21cJi4gQWxzbyBzY29yZVwmLiBH b29kIHNjb3JlIGdvb2RcJi4gQmFkIHNjb3JlIGJhZFwmLgogLnNwCiBcZkJjY2FubGludFxmUiBl eHBlY3QgdGhlIHNvdXJjZSBjb2RlIGluIHRoaXMgZGlyZWN0b3J5LCBvciBjb21tYW5kIGxpbmUg Y2FuIGJlIG1vcmUgdGhhbiBvbmVcJi4gRXhpdCAwIGhhcHB5IGlmIGFsbCBtb2R1bGVzIGFsbCB0 ZXN0cyBoYXBweVwmLgogLlNIICJPUFRJT05TIgpAQCAtNzMsMTQgKzczLDEyIEBAIEdyYXBodml6 LCB0aGVuIGRpZSBoYXBweVwmLgogLlBQCiBcZkJcLWssIFwtXC1rZWVwXGZSCiAuUlMgNAotCiBc ZkJjY2FubGludFxmUgogbm9ybWFsbHkgbWFrZSBtZXNzIHRlbXBvcmFyeSBkaXJlY3RvcnksIGJ1 dCBub3cgaXQgbGF0ZXIgaW4gZm9yZW5zaWNcJi4KIC5SRQogLlBQCiBcZkJcLXMsIFwtXC1zdW1t YXJ5XGZSCiAuUlMgNAotCiBcZkJjY2FubGludFxmUgoganVzdCByZWFsaXplZCB0aGVyZSBpcyBu byBtZXNzYWdlIHVubGVzcyB5b3UgZGllIGhvcnJpYmxlXCYuCiAuUkUKQEAgLTEwNyw3ICsxMDUs NiBAQCBEbyBub3QgcnVuIGFsbCB0ZXN0c1wmLiBSdW4gdGhpcyB0ZXN0LCBhbmQgdGhlIHByb29m IHlvdSBuZWVkXCYuIFVzZWQgbWFueSB0aW1lcwogLlBQCiBcZkJcLVwtY29tcGlsZXJcZlI9XGZJ Q09NUElMRVJcZlIKIC5SUyA0Ci0KIFxmQmNjYW5saW50XGZSCiByZWFkIGNvbmZpZ1wmLmggYWJv dXQgZmluZGluZwogXGZJQ0NBTl9DT01QSUxFUlxmUlwmLiBPdGhlcndpc2UgdXNlIHRoZSBkZWZh dWx0IHdoZW4gaXQgd2FzIGJ1aWx0XCYuIFRoZSBjaGFuZ2UsIHRvIHVzZSB0aGlzIGNvbXBpbGVy XCYuCkBAIC0xNDgsNyArMTQ1LDYgQEAgcXVlc3Rpb24gbWF5IGhlbHAgdG8gd3JpdGUgb25lXCYu CiAuUFAKIFxmQmRlcGVuZHNfZXhpc3RcZlIKIC5SUyA0Ci0KIFxmSV9pbmZvXGZSCiBmaWxlIEND QU4gb3RoZXIgbW9kdWxlIHdpdGhvdXQgc2F5aW5nLCBtdXN0IGZpbmRcJi4gSXQgaXMgbm90IHNj b3JlIDBcJi4KIC5SRQpAQCAtMTk3LDggKzE5Myw3IEBAIHVuaGFwcHlcJi4KIFxmQmhhc2hfaWZc ZlIKIC5SUyA0CiBNb2R1bGUgd2FudHMKLVxmQmNjYW5saW50XGZSCi1cZkljb25maWdcJi5oXGZS CitcZkJjY2FubGludFxmUlxmSWNvbmZpZ1wmLmhcZlIKICIjZGVmaW5lIEhBVkVfRkVBVFVSRSIg Zm9yIGFsbCBmZWF0dXJlXCYuIEZ1bmN0aW9uIHRlc3QgIiNpZiBIQVZFX0ZFQVRVUkUiIG5vICIj aWZkZWYgSEFWRV9GRUFUVVJFIiBiZWNhdXNlIHVzZXIgbWlnaHQgbm90IGtub3cgYWJvdXQgdGhl IHJvbGUgYXQgYWxsXCYuIEludGVsbGlnZW50IEdDQyBmbGFnCiBcZklcLVd1bmRlZlxmUgogc2F5 IEhBVkVfRkVBVFVSRSBub3QgMCwgbm90IDEhIGJ1dCBvbmx5IGlmIHRoZSB1c2Ugb2YKQEAgLTIw Nyw3ICsyMDIsNiBAQCBzYXkgSEFWRV9GRUFUVVJFIG5vdCAwLCBub3QgMSEgYnV0IG9ubHkgaWYg dGhlIHVzZSBvZgogLlBQCiBcZkJpbmZvX2RvY3VtZW50YXRpb25fZXhpc3RzXGZSCiAuUlMgNAot CiBcZklfaW5mb1xmUgogZmlsZSBmb3JtYXQgaXMgcHJldHR5IGNvbW1lbnRzXCYuIENvcHlpbmcg c29tZW9uZVwmLiBJdCBpcyBub3QgZGlmZmljdWx0IHdyaXRlIGRvY3VtZW50YXRpb24hCiAuUkUK QEAgLTI1MCw3ICsyNDQsNiBAQCBIb3N0aWxlIHRvIEJTRCBsaWNlbnNlIG1vZHVsZSwgYnV0IHJl cXVpcmVzIGFub3RoZXIgbW9kdWxlIG9mIHRoZSBHUExcJi4gUGVyaGFwcwogLlBQCiBcZkJtYWlu X2hlYWRlcl9leGlzdHNcZlIKIC5SUyA0Ci0KIFxmQmNjYW5saW50XGZSCiBrbm93IHRoZSBtb2R1 bGUgbmFtZSBkaXJlY3RvcnkgbmFtZVwmLiBFeHBlY3QgdGhlIHNhbWUgbmFtZSBmb3IgaGVhZGVy XCYuCiAuUkUKQEAgLTI4Myw3ICsyNzYsNiBAQCBMaW51eCBrZXJuZWwgcHJvZ3JhbW1lcnMgbW9y ZSwgc29sdmUgdGhlIHByb2JsZW0gZm9yIHRoZSBzcGFjZSBvZiB0aGUgZmluYWwgYmFuCiAuUFAK IFxmQmV4YW1wbGVzX2NvbXBpbGVcZlIKIC5SUyA0Ci0KIFxmQmNjYW5saW50XGZSCiB2ZXJ5IHNt YXJ0ISBUYWtlCiBcZklFeGFtcGxlOlxmUgpAQCAtMzAyLDE1ICsyOTQsMTYgQEAgc2F5cyB3b3ch CiBcZkJleGFtcGxlc19ydW5cZlIKIC5SUyA0CiBJZiB0aGUgZXhhbXBsZSBwcm9ncmFtIHRoYXQg Y29tbWVudHMgbGlrZQotXGZJLy8gZ2l2ZW4gZm9vIG91dHB1dHMgYmFyXGZSCi1cZkJjY2FubGlu dFxmUgotd2lsbCBydW4gdGhlIGZvb2QgcHJvZ3JhbQorXGZJLy8gR2l2ZW4gImZvbyIgb3V0cHV0 cyAiYmFyIlxmUlxmQmNjYW5saW50XGZSCit3aWxsIHJ1biB0aGUgcHJvZ3JhbSB3aXRoCiBcZklm b29cZlIKIGluIHRoZSBjb21tYW5kIGxpbmUgYW5kIHN0YW5kYXJkIGlucHV0XCYuIEhhcHB5IGlm CiBcZkliYXJcZlIKLWFyZSBvdXRcJi4gWW91IGNhbiBkbyBcKihBcSBvciAiIGFib3V0IHRoZSBw cm9kdWN0aW9uIG9yIGRldGVybWluZWRcJi4gWW91IGNhbiBhbHNvCi1cZklvdXRwdXQgY29udGFp bnNcZlIKLW1vcmUgcmVsYXhlZCBjb250cm9sc1wmLgorYXJlIG91dFwmLiBJZiBxdW90ZXMgYXJv dW5kCitcZkliYXJcZlIKK2V4YWN0IG1hdGNoIG5lZWRlZDsgd2l0aG91dCBxdW90ZXMgd2hpdGVz cGFjZSBtYXRjaGVzIGFueSBvdGhlciBzcGFjZSBhbmQgdHJhaWxpbmcgaWdub3JlZFwmLiBcZW4g aXMgYWxzbyBzdXBwb3J0ZWQgZm9yIG1hdGNoaW5nXCYuIFlvdSBjYW4gYWxzbworXGZJIm91dHB1 dCBjb250YWlucyJcZlIKK3RvIHBhc3MgaWYgdGhlIG91dHB1dCBjb250YWlucyB0aGUgc3RyaW5n XCYuCiAuUkUKIC5QUAogXGZCbW9kdWxlX2xpbmtzXGZSCkBAIC0zNjQsNyArMzU3LDYgQEAgT3Ro ZXIgZmlsZXMKIC5QUAogXGZCdGVzdHNfcGFzc1xmUgogLlJTIDQKLQogXGZJcnVuXGZSCiBhbmQK IFxmSWFwaVxmUgpAQCAtMzczLDcgKzM2NSw2IEBAIHRlc3QgaGFwcHkgZGVwYXJ0dXJlXCYuIElm IG5vdCBoYXBweSwgb2ZmZXIgZGVidWdnZXJcJi4KIC5QUAogXGZCdGVzdHNfcGFzc192YWxncmlu ZFxmUgogLlJTIDQKLQogXGZCdmFsZ3JpbmRcZlIKIHRoZSB0b29sIG9mIGFsbAogXGZJcnVuXGZS CkBAIC0zOTAsNyArMzgxLDYgQEAgc2VjdGlvbiwgbWFrZSAidGVzdHNfcGFzc192YWxncmluZCB0 ZXN0L1RFU1ROQU1FOkZBSUwiXCYuIElmIHJlcXVpcmVkIHZhbGdyaW5kIGEKIC5QUAogXGZCdGVz dHNfcGFzc192YWxncmluZF9ub2xlYWtzXGZSCiAuUlMgNAotCiBcZkJ2YWxncmluZFxmUgogY29t cGxhaW4gaWYgdGhlIG1lbW9yeSBsZWFrIHRlc3RcJi4KIFxmSV9pbmZvXGZSCmRpZmYgLS1naXQg YS9kb2MvY2NhbmxpbnQuMS50eHQgYi9kb2MvY2NhbmxpbnQuMS50eHQKaW5kZXggZWEzMjE4MC4u MjZkNDZmNCAxMDA2NDQKLS0tIGEvZG9jL2NjYW5saW50LjEudHh0CisrKyBiL2RvYy9jY2FubGlu dC4xLnR4dApAQCAtMTc1LDExICsxNzUsMTMgQEAgdGVzdCwgYnV0IGhhcHB5OgogICBiYWQgZXhh bXBsZSAqY2NhbmxpbnQqIHNheXMgd293IQogCiAqZXhhbXBsZXNfcnVuKjo6Ci0gIElmIHRoZSBl eGFtcGxlIHByb2dyYW0gdGhhdCBjb21tZW50cyBsaWtlICcvLyBnaXZlbiBmb28gb3V0cHV0cyBi YXInCi0gICpjY2FubGludCogd2lsbCBydW4gdGhlIGZvb2QgcHJvZ3JhbSAnZm9vJyBpbiB0aGUg Y29tbWFuZCBsaW5lIGFuZAotICBzdGFuZGFyZCBpbnB1dC4gSGFwcHkgaWYgJ2JhcicgYXJlIG91 dC4gWW91IGNhbiBkbyAnIG9yICIgYWJvdXQKLSAgdGhlIHByb2R1Y3Rpb24gb3IgZGV0ZXJtaW5l ZC4gIFlvdSBjYW4gYWxzbyAnb3V0cHV0IGNvbnRhaW5zJyBtb3JlCi0gIHJlbGF4ZWQgY29udHJv bHMuCisgIElmIHRoZSBleGFtcGxlIHByb2dyYW0gdGhhdCBjb21tZW50cyBsaWtlICcvLyBbR2l2 ZW4gImZvbyJdIG91dHB1dHMKKyAgImJhciInIHRoZW4gKmNjYW5saW50KiB3aWxsIHJ1biB0aGUg cHJvZ3JhbSB3aXRoICdmb28nIGluIHRoZQorICBjb21tYW5kIGxpbmUgYW5kIHN0YW5kYXJkIGlu cHV0LiAgSGFwcHkgaWYgJ2JhcicgYXJlIG91dCBhbmQgZXhpdCAwLgorICBJZiBxdW90ZXMgYXJv dW5kICdiYXInIGV4YWN0IG1hdGNoIG5lZWRlZDsgd2l0aG91dCBxdW90ZXMgd2hpdGVzcGFjZSBt YXRjaGVzCisgIGFueSBvdGhlciBzcGFjZSBhbmQgdHJhaWxpbmcgaWdub3JlZC4gIFxuIGlzIGFs c28gc3VwcG9ydGVkIGZvcgorICBtYXRjaGluZy4gIFlvdSBjYW4gYWxzbyAnIm91dHB1dCBjb250 YWlucyInIHRvIHBhc3MgaWYgdGhlIG91dHB1dAorICBjb250YWlucyB0aGUgc3RyaW5nLgogCiAq bW9kdWxlX2xpbmtzKjo6CiAgIENDQU4gbGluayB0byB0aGUgcHJvZ3JhbSBtb2R1bGUgc2ltcGx5 IG5vIGVycm9yLgpkaWZmIC0tZ2l0IGEvdG9vbHMvY2NhbmxpbnQvdGVzdHMvZXhhbXBsZXNfcnVu LmMgYi90b29scy9jY2FubGludC90ZXN0cy9leGFtcGxlc19ydW4uYwppbmRleCAwZTQ3M2NhLi5j N2QwNGMyIDEwMDY0NAotLS0gYS90b29scy9jY2FubGludC90ZXN0cy9leGFtcGxlc19ydW4uYwor KysgYi90b29scy9jY2FubGludC90ZXN0cy9leGFtcGxlc19ydW4uYwpAQCAtMiw2ICsyLDcgQEAK ICNpbmNsdWRlIDx0b29scy90b29scy5oPgogI2luY2x1ZGUgPGNjYW4vZm9yZWFjaC9mb3JlYWNo Lmg+CiAjaW5jbHVkZSA8Y2Nhbi9zdHIvc3RyLmg+CisjaW5jbHVkZSA8Y2Nhbi90YWwvc3RyL3N0 ci5oPgogI2luY2x1ZGUgPGNjYW4vY2FzdC9jYXN0Lmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+ CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KQEAgLTgxLDE0NiArODIsMTAyIEBAIHN0YXRpYyBib29s IHNjYW5fZm9yKGNvbnN0IHZvaWQgKmN0eCwgY29uc3QgY2hhciAqaW5wdXQsIGNvbnN0IGNoYXIg KmZtdCwgLi4uKQogfQogCiBzdGF0aWMgY2hhciAqZmluZF9leHBlY3Qoc3RydWN0IGNjYW5fZmls ZSAqZmlsZSwKLQkJCSBjaGFyICoqbGluZXMsIGNoYXIgKippbnB1dCwgYm9vbCAqZXhhY3QsCisJ CQkgY2hhciAqKmxpbmVzLCBjaGFyICoqaW5wdXQsCisJCQkgYm9vbCAqY29udGFpbnMsIGJvb2wg KndoaXRlc3BhY2UsIGJvb2wgKmVycm9yLAogCQkJIHVuc2lnbmVkICpsaW5lKQogewotCWNoYXIg KmV4cGVjdDsKLQljb25zdCBjaGFyICpmbXQ7CisJY2hhciAqcmVzdCwgKmV4cGVjdDsKIAorCSpl cnJvciA9IGZhbHNlOwogCWZvciAoOyBsaW5lc1sqbGluZV07ICgqbGluZSkrKykgewogCQljaGFy ICpwID0gbGluZXNbKmxpbmVdICsgc3Ryc3BuKGxpbmVzWypsaW5lXSwgIiBcdCIpOwogCQlpZiAo IXN0cnN0YXJ0cyhwLCAiLy8iKSkKIAkJCWNvbnRpbnVlOwogCQlwICs9IHN0cnNwbihwLCAiLyAi KTsKLQkJZm9yZWFjaF9wdHIoZm10LAotCQkJICAgICJnaXZlbiAnJXMnLCBvdXRwdXRzICclcyci LAotCQkJICAgICJnaXZlbiAnJXMnIG91dHB1dHMgJyVzJyIsCi0JCQkgICAgImdpdmVuIFwiJXNc Iiwgb3V0cHV0cyBcIiVzXCIiLAotCQkJICAgICJnaXZlbiBcIiVzXCIgb3V0cHV0cyBcIiVzXCIi KSB7Ci0JCQlpZiAoc2Nhbl9mb3IoZmlsZSwgcCwgZm10LCBpbnB1dCwgJmV4cGVjdCkpIHsKLQkJ CQkqZXhhY3QgPSB0cnVlOwotCQkJCXJldHVybiBleHBlY3Q7Ci0JCQl9Ci0JCX0KLQotCQlmb3Jl YWNoX3B0cihmbXQsCi0JCQkgICAgImdpdmVuICclcycsIG91dHB1dCBjb250YWlucyAnJXMnIiwK LQkJCSAgICAiZ2l2ZW4gJyVzJyBvdXRwdXQgY29udGFpbnMgJyVzJyIsCi0JCQkgICAgImdpdmVu IFwiJXNcIiwgb3V0cHV0IGNvbnRhaW5zIFwiJXNcIiIsCi0JCQkgICAgImdpdmVuIFwiJXNcIiBv dXRwdXQgY29udGFpbnMgXCIlc1wiIikgewotCQkJaWYgKHNjYW5fZm9yKGZpbGUsIHAsIGZtdCwg aW5wdXQsICZleHBlY3QpKSB7Ci0JCQkJKmV4YWN0ID0gZmFsc2U7Ci0JCQkJcmV0dXJuIGV4cGVj dDsKLQkJCX0KLQkJfQogCi0JCWZvcmVhY2hfcHRyKGZtdCwgIm91dHB1dHMgJyVzJyIsICJvdXRw dXRzIFwiJXNcIiIpIHsKLQkJCWlmIChzY2FuX2ZvcihmaWxlLCBwLCBmbXQsICZleHBlY3QpKSB7 Ci0JCQkJKmlucHV0ID0gY2FzdF9jb25zdChjaGFyICosICIiKTsKLQkJCQkqZXhhY3QgPSB0cnVl OwotCQkJCXJldHVybiBleHBlY3Q7Ci0JCQl9CisJCS8qIFdpdGggb3Igd2l0aG91dCBpbnB1dD8g Ki8KKwkJaWYgKCFzY2FuX2ZvcihmaWxlLCBwLCAiZ2l2ZW4gXCIlc1wiICVzIiwgaW5wdXQsICZw KSkgeworCQkJKmlucHV0ID0gTlVMTDsKIAkJfQogCi0JCWZvcmVhY2hfcHRyKGZtdCwKLQkJCSAg ICAiZ2l2ZW4gJyVzJywgb3V0cHV0IGNvbnRhaW5zICclcyciLAotCQkJICAgICJnaXZlbiAnJXMn IG91dHB1dCBjb250YWlucyAnJXMnIiwKLQkJCSAgICAiZ2l2ZW4gXCIlc1wiLCBvdXRwdXQgY29u dGFpbnMgXCIlc1wiIiwKLQkJCSAgICAiZ2l2ZW4gXCIlc1wiIG91dHB1dCBjb250YWlucyBcIiVz XCIiKSB7Ci0JCQlpZiAoc2Nhbl9mb3IoZmlsZSwgcCwgZm10LCBpbnB1dCwgJmV4cGVjdCkpIHsK LQkJCQkqZXhhY3QgPSBmYWxzZTsKLQkJCQlyZXR1cm4gZXhwZWN0OwotCQkJfQorCQlpZiAoc2Nh bl9mb3IoZmlsZSwgcCwgIm91dHB1dHMgXCIlc1wiIiwgJmV4cGVjdCkpIHsKKwkJCSp3aGl0ZXNw YWNlID0gdHJ1ZTsKKwkJCSpjb250YWlucyA9IGZhbHNlOworCQkJcmV0dXJuIGV4cGVjdDsKIAkJ fQogCi0JCS8qIFVucXVvdGVkIHZlcnNpb25zLi4uIHdlIGNhbiBnZXQgdGhpcyB3cm9uZyEgKi8K LQkJZm9yZWFjaF9wdHIoZm10LAotCQkJICAgICJnaXZlbiAlcywgb3V0cHV0cyAnJXMnIiwKLQkJ CSAgICAiZ2l2ZW4gJyVzJywgb3V0cHV0cyAlcyIsCi0JCQkgICAgImdpdmVuICVzLCBvdXRwdXRz IFwiJXNcIiIsCi0JCQkgICAgImdpdmVuIFwiJXNcIiwgb3V0cHV0cyAlcyIsCi0JCQkgICAgImdp dmVuICVzLCBvdXRwdXRzICVzIiwKLQkJCSAgICAiZ2l2ZW4gJXMgb3V0cHV0cyAnJXMnIiwKLQkJ CSAgICAiZ2l2ZW4gJyVzJyBvdXRwdXRzICVzIiwKLQkJCSAgICAiZ2l2ZW4gJXMgb3V0cHV0cyBc IiVzXCIiLAotCQkJICAgICJnaXZlbiBcIiVzXCIgb3V0cHV0cyAlcyIsCi0JCQkgICAgImdpdmVu ICVzIG91dHB1dHMgJXMiKSB7Ci0JCQlpZiAoc2Nhbl9mb3IoZmlsZSwgcCwgZm10LCBpbnB1dCwg JmV4cGVjdCkpIHsKLQkJCQkqZXhhY3QgPSB0cnVlOwotCQkJCXJldHVybiBleHBlY3Q7Ci0JCQl9 CisJCWlmIChzY2FuX2ZvcihmaWxlLCBwLCAib3V0cHV0IGNvbnRhaW5zIFwiJXNcIiIsICZleHBl Y3QpKSB7CisJCQkqd2hpdGVzcGFjZSA9IHRydWU7CisJCQkqY29udGFpbnMgPSB0cnVlOworCQkJ cmV0dXJuIGV4cGVjdDsKIAkJfQogCi0JCWZvcmVhY2hfcHRyKGZtdCwKLQkJCSAgICAiZ2l2ZW4g JXMsIG91dHB1dCBjb250YWlucyAnJXMnIiwKLQkJCSAgICAiZ2l2ZW4gJyVzJywgb3V0cHV0IGNv bnRhaW5zICVzIiwKLQkJCSAgICAiZ2l2ZW4gJXMsIG91dHB1dCBjb250YWlucyBcIiVzXCIiLAot CQkJICAgICJnaXZlbiBcIiVzXCIsIG91dHB1dCBjb250YWlucyAlcyIsCi0JCQkgICAgImdpdmVu ICVzLCBvdXRwdXQgY29udGFpbnMgJXMiLAotCQkJICAgICJnaXZlbiAlcyBvdXRwdXQgY29udGFp bnMgJyVzJyIsCi0JCQkgICAgImdpdmVuICclcycgb3V0cHV0IGNvbnRhaW5zICVzIiwKLQkJCSAg ICAiZ2l2ZW4gJXMgb3V0cHV0IGNvbnRhaW5zIFwiJXNcIiIsCi0JCQkgICAgImdpdmVuIFwiJXNc IiBvdXRwdXQgY29udGFpbnMgJXMiLAotCQkJICAgICJnaXZlbiAlcyBvdXRwdXQgY29udGFpbnMg JXMiKSB7Ci0JCQlpZiAoc2Nhbl9mb3IoZmlsZSwgcCwgZm10LCBpbnB1dCwgJmV4cGVjdCkpIHsK LQkJCQkqZXhhY3QgPSBmYWxzZTsKLQkJCQlyZXR1cm4gZXhwZWN0OwotCQkJfQorCQkvKiBXaGl0 ZXNwYWNlLWlnbm9yaW5nIHZlcnNpb25zLiAqLworCQlpZiAoc2Nhbl9mb3IoZmlsZSwgcCwgIm91 dHB1dHMgJXMiLCAmZXhwZWN0KSkgeworCQkJKndoaXRlc3BhY2UgPSBmYWxzZTsKKwkJCSpjb250 YWlucyA9IGZhbHNlOworCQkJcmV0dXJuIGV4cGVjdDsKIAkJfQogCi0JCWZvcmVhY2hfcHRyKGZt dCwKLQkJCSAgICAib3V0cHV0cyAnJXMnIiwKLQkJCSAgICAib3V0cHV0cyBcIiVzXCIiLAotCQkJ ICAgICJvdXRwdXRzICVzIikgewotCQkJaWYgKHNjYW5fZm9yKGZpbGUsIHAsIGZtdCwgJmV4cGVj dCkpIHsKLQkJCQkqaW5wdXQgPSBjYXN0X2NvbnN0KGNoYXIgKiwgIiIpOwotCQkJCSpleGFjdCA9 IHRydWU7Ci0JCQkJcmV0dXJuIGV4cGVjdDsKLQkJCX0KKwkJaWYgKHNjYW5fZm9yKGZpbGUsIHAs ICJvdXRwdXQgY29udGFpbnMgJXMiLCAmZXhwZWN0KSkgeworCQkJKndoaXRlc3BhY2UgPSBmYWxz ZTsKKwkJCSpjb250YWlucyA9IHRydWU7CisJCQlyZXR1cm4gZXhwZWN0OwogCQl9CiAKLQkJZm9y ZWFjaF9wdHIoZm10LAotCQkJICAgICJvdXRwdXQgY29udGFpbnMgJyVzJyIsCi0JCQkgICAgIm91 dHB1dCBjb250YWlucyBcIiVzXCIiLAotCQkJICAgICJvdXRwdXQgY29udGFpbnMgJXMiKSB7Ci0J CQlpZiAoc2Nhbl9mb3IoZmlsZSwgcCwgZm10LCAmZXhwZWN0KSkgewotCQkJCSppbnB1dCA9IGNh c3RfY29uc3QoY2hhciAqLCAiIik7Ci0JCQkJKmV4YWN0ID0gZmFsc2U7Ci0JCQkJcmV0dXJuIGV4 cGVjdDsKLQkJCX0KKwkJLyogIkdpdmVuIiB3aXRob3V0ICJvdXRwdXQiPyAqLworCQlpZiAoKmlu cHV0KSB7CisJCQkqZXJyb3IgPSB0cnVlOworCQkJcmV0dXJuIHA7CiAJCX0KLQl9CQkKKwl9CiAJ cmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBjaGFyICp0cmltKGNoYXIgKnN0cmluZykKLXsKLQl3 aGlsZSAoc3RyZW5kcyhzdHJpbmcsICJcbiIpKQotCSAgICAgICBzdHJpbmdbc3RybGVuKHN0cmlu ZyktMV0gPSAnXDAnOwotCXJldHVybiBzdHJpbmc7Ci19Ci0KIHN0YXRpYyBjaGFyICp1bmV4cGVj dGVkKHN0cnVjdCBjY2FuX2ZpbGUgKmksIGNvbnN0IGNoYXIgKmlucHV0LAotCQkJY29uc3QgY2hh ciAqZXhwZWN0LCBib29sIGV4YWN0KQorCQkJY29uc3QgY2hhciAqZXhwZWN0LCBib29sIGNvbnRh aW5zLCBib29sIHdoaXRlc3BhY2UpCiB7CiAJY2hhciAqb3V0cHV0LCAqY21kOworCWNvbnN0IGNo YXIgKnA7CiAJYm9vbCBvazsKIAl1bnNpZ25lZCBpbnQgZGVmYXVsdF90aW1lID0gZGVmYXVsdF90 aW1lb3V0X21zOwogCi0JY21kID0gdGFsX2ZtdChpLCAiZWNobyAnJXMnIHwgJXMgJXMiLAotCQkg ICAgICBpbnB1dCwgaS0+Y29tcGlsZWRbQ09NUElMRV9OT1JNQUxdLCBpbnB1dCk7CisJaWYgKGlu cHV0KQorCQljbWQgPSB0YWxfZm10KGksICJlY2hvICclcycgfCAlcyAlcyIsCisJCQkgICAgICBp bnB1dCwgaS0+Y29tcGlsZWRbQ09NUElMRV9OT1JNQUxdLCBpbnB1dCk7CisJZWxzZQorCQljbWQg PSB0YWxfZm10KGksICIlcyIsIGktPmNvbXBpbGVkW0NPTVBJTEVfTk9STUFMXSk7CiAKIAlvdXRw dXQgPSBydW5fd2l0aF90aW1lb3V0KGksIGNtZCwgJm9rLCAmZGVmYXVsdF90aW1lKTsKIAlpZiAo IW9rKQogCQlyZXR1cm4gdGFsX2ZtdChpLCAiRXhpdGVkIHdpdGggbm9uLXplcm8gc3RhdHVzXG4i KTsKIAotCWlmIChleGFjdCkgewotCQlpZiAoc3RyZXEob3V0cHV0LCBleHBlY3QpIHx8IHN0cmVx KHRyaW0ob3V0cHV0KSwgZXhwZWN0KSkKKwkvKiBTdWJzdGl0dXRlIFxuICovCisJd2hpbGUgKChw ID0gc3Ryc3RyKGV4cGVjdCwgIlxcbiIpKSAhPSBOVUxMKSB7CisJCWV4cGVjdCA9IHRhbF9mbXQo Y21kLCAiJS4qc1xuJXMiLCAoaW50KShwIC0gZXhwZWN0KSwgZXhwZWN0LAorCQkJCSBwKzIpOwor CX0KKworCWlmICghd2hpdGVzcGFjZSkgeworCQkvKiBOb3JtYWxpemUgdG8gc3BhY2VzLiAqLwor CQlleHBlY3QgPSB0YWxfc3Ryam9pbihjbWQsCisJCQkJICAgICB0YWxfc3Ryc3BsaXQoY21kLCBl eHBlY3QsICIgXG5cdCIsCisJCQkJCQkgIFNUUl9OT19FTVBUWSksCisJCQkJICAgICAiICIsIFNU Ul9OT19UUkFJTCk7CisJCW91dHB1dCA9IHRhbF9zdHJqb2luKGNtZCwKKwkJCQkgICAgIHRhbF9z dHJzcGxpdChjbWQsIG91dHB1dCwgIiBcblx0IiwKKwkJCQkJCSAgU1RSX05PX0VNUFRZKSwKKwkJ CQkgICAgICIgIiwgU1RSX05PX1RSQUlMKTsKKwl9CisKKwlpZiAoY29udGFpbnMpIHsKKwkJaWYg KHN0cnN0cihvdXRwdXQsIGV4cGVjdCkpCiAJCQlyZXR1cm4gTlVMTDsKIAl9IGVsc2UgewotCQlp ZiAoc3Ryc3RyKG91dHB1dCwgZXhwZWN0KSkKKwkJaWYgKHN0cmVxKG91dHB1dCwgZXhwZWN0KSkK IAkJCXJldHVybiBOVUxMOwogCX0KKwogCXJldHVybiBvdXRwdXQ7CiB9CiAKQEAgLTIzNywyMSAr MTk0LDMyIEBAIHN0YXRpYyB2b2lkIHJ1bl9leGFtcGxlcyhzdHJ1Y3QgbWFuaWZlc3QgKm0sCiAJ CWxpc3RfZm9yX2VhY2gobGlzdCwgaSwgbGlzdCkgewogCQkJY2hhciAqKmxpbmVzLCAqZXhwZWN0 LCAqaW5wdXQsICpvdXRwdXQ7CiAJCQl1bnNpZ25lZCBpbnQgbGluZW51bSA9IDA7Ci0JCQlib29s IGV4YWN0OworCQkJYm9vbCBjb250YWlucywgd2hpdGVzcGFjZSwgZXJyb3I7CiAKIAkJCWxpbmVz ID0gZ2V0X2NjYW5fZmlsZV9saW5lcyhpKTsKIAotCQkJZm9yIChleHBlY3QgPSBmaW5kX2V4cGVj dChpLCBsaW5lcywgJmlucHV0LCAmZXhhY3QsCisJCQlmb3IgKGV4cGVjdCA9IGZpbmRfZXhwZWN0 KGksIGxpbmVzLCAmaW5wdXQsCisJCQkJCQkgICZjb250YWlucywgJndoaXRlc3BhY2UsICZlcnJv ciwKIAkJCQkJCSAgJmxpbmVudW0pOwogCQkJICAgICBleHBlY3Q7CiAJCQkgICAgIGxpbmVudW0r KywKIAkJCQkgICAgIGV4cGVjdCA9IGZpbmRfZXhwZWN0KGksIGxpbmVzLCAmaW5wdXQsCi0JCQkJ CQkJICAmZXhhY3QsICZsaW5lbnVtKSkgeworCQkJCQkJCSAgJmNvbnRhaW5zLCAmd2hpdGVzcGFj ZSwKKwkJCQkJCQkgICZlcnJvciwgJmxpbmVudW0pKSB7CiAJCQkJaWYgKGktPmNvbXBpbGVkW0NP TVBJTEVfTk9STUFMXSA9PSBOVUxMKQogCQkJCQljb250aW51ZTsKIAorCQkJCWlmIChlcnJvcikg eworCQkJCQlzY29yZV9maWxlX2Vycm9yKHNjb3JlLCBpLCBsaW5lbnVtKzEsCisJCQkJCQkgIlVu cGFyc2FibGUgbGluZSAnJXMnXG4iLAorCQkJCQkJCSBsaW5lc1tsaW5lbnVtXSk7CisJCQkJCXNj b3JlLT5wYXNzID0gZmFsc2U7CisJCQkJCWJyZWFrOworCQkJCX0KKwogCQkJCXNjb3JlLT50b3Rh bCsrOwotCQkJCW91dHB1dCA9IHVuZXhwZWN0ZWQoaSwgaW5wdXQsIGV4cGVjdCwgZXhhY3QpOwor CQkJCW91dHB1dCA9IHVuZXhwZWN0ZWQoaSwgaW5wdXQsIGV4cGVjdCwKKwkJCQkJCSAgICBjb250 YWlucywgd2hpdGVzcGFjZSk7CiAJCQkJaWYgKCFvdXRwdXQpIHsKIAkJCQkJc2NvcmUtPnNjb3Jl Kys7CiAJCQkJCWNvbnRpbnVlOwpAQCAtMjU5LDcgKzIyNyw3IEBAIHN0YXRpYyB2b2lkIHJ1bl9l eGFtcGxlcyhzdHJ1Y3QgbWFuaWZlc3QgKm0sCiAJCQkJc2NvcmVfZmlsZV9lcnJvcihzY29yZSwg aSwgbGluZW51bSsxLAogCQkJCQkJICJvdXRwdXQgJyVzJyBkaWRuJ3QgJXMgJyVzJ1xuIiwKIAkJ CQkJCSBvdXRwdXQsCi0JCQkJCQkgZXhhY3QgPyAibWF0Y2giIDogImNvbnRhaW4iLAorCQkJCQkJ IGNvbnRhaW5zID8gImNvbnRhaW4iIDogIm1hdGNoIiwKIAkJCQkJCSBleHBlY3QpOwogCQkJCXNj b3JlLT5wYXNzID0gZmFsc2U7CiAJCQl9Ci0tIAoyLjEuNAoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KY2NhbiBtYWlsaW5nIGxpc3QKY2NhbkBsaXN0cy5v emxhYnMub3JnCmh0dHBzOi8vbGlzdHMub3psYWJzLm9yZy9saXN0aW5mby9jY2FuCg==