From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id gMeoN7wOJWGd4QAAgWs5BA (envelope-from ) for ; Tue, 24 Aug 2021 17:22:36 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id 8OUtM7wOJWEoZAAAbx9fmQ (envelope-from ) for ; Tue, 24 Aug 2021 15:22:36 +0000 Received: from mail.notmuchmail.org (nmbug.tethera.net [IPv6:2607:5300:201:3100::1657]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 758068538 for ; Tue, 24 Aug 2021 17:22:36 +0200 (CEST) Received: from nmbug.tethera.net (localhost [127.0.0.1]) by mail.notmuchmail.org (Postfix) with ESMTP id 5D02C20678; Tue, 24 Aug 2021 11:21:16 -0400 (EDT) Received: from fethera.tethera.net (fethera.tethera.net [198.245.60.197]) by mail.notmuchmail.org (Postfix) with ESMTP id E361320602 for ; Tue, 24 Aug 2021 11:21:09 -0400 (EDT) Received: by fethera.tethera.net (Postfix, from userid 1001) id D50675FD5C; Tue, 24 Aug 2021 11:21:09 -0400 (EDT) Received: (nullmailer pid 2942847 invoked by uid 1000); Tue, 24 Aug 2021 15:17:51 -0000 From: David Bremner To: notmuch@notmuchmail.org Cc: David Bremner Subject: [PATCH 10/36] lib/parse-sexp: support and, not, and or. Date: Tue, 24 Aug 2021 08:17:19 -0700 Message-Id: <20210824151745.2941868-11-david@tethera.net> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210824151745.2941868-1-david@tethera.net> References: <20210824151745.2941868-1-david@tethera.net> MIME-Version: 1.0 Message-ID-Hash: KKRPDWQJ5HYIB2TKT6BZROKM42CAFAMY X-Message-ID-Hash: KKRPDWQJ5HYIB2TKT6BZROKM42CAFAMY X-MailFrom: bremner@tethera.net X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-notmuch.notmuchmail.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.1 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Help: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1629818556; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=8Gbr2R2GpvnQhKE5w/5MreCyB5GHxLGTP7ovnGwGEtI=; b=QHnytd6sZ7wDZ/6oYmkXsJMeSEhx+FKE13gcnQ76qzfsky6fCCeXa8VX2h0GDsY9d5ftkQ E2HvwAJCCiBJBoz/zz7zBXW9RB9QiBciKbW9udiF02QeTbpuJjlKqAak6hY+40OO5ZMITz n7x1xC4d6NwQxKuyJFgdnSm1+5cqQmc1noVmfQafRulrEhg1FpoUaOahTN2BvRpsoP4BGM NgWsGUGI1cJtE+DQDS2VjdtHfmIqS+7VJI4NMJW4dxDab9BlIfwlhZfT7wpYMymoUeHdIB mRHfWX5W1d33EtLqrqaYGr38wRdeHcFP4dl/ou+5zNVlsjLoFBTjhga0YTlESA== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1629818556; a=rsa-sha256; cv=none; b=rgwdh9Mu1ag6xBv2Ym6gv8/Pl6qA7fDgvdax/IHXw8WlA4pGn78QPZh5YKWZYPQ/3Oqcvc n2lylZHurFn1Gs8/SZRivzSSTF/SiVnmtai5ukrAv5pwC1jM8csdJAw9I55dp0wgyyTM3k fg/73RA6cT1Jpei/L+Tjy3U3SeeJsKY3jPoodb71FHnijssyJm6pI7n1HJ54F6+yJNNezG wEd29TGkneYneZrN3XDOMCDUbQdyoy/4/KIQ+RMFnV4Wyb0spsP47zhuv6mopIpjG54+FI wj3ngWcqkjs0JKDeTyIbiSUXedaq5+d/UZ4h2MB/xRL/NqwQAD2kGtghOwf/EA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=none; dmarc=none; spf=pass (aspmx1.migadu.com: domain of notmuch-bounces@notmuchmail.org designates 2607:5300:201:3100::1657 as permitted sender) smtp.mailfrom=notmuch-bounces@notmuchmail.org X-Migadu-Spam-Score: -0.83 Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=none; spf=pass (aspmx1.migadu.com: domain of notmuch-bounces@notmuchmail.org designates 2607:5300:201:3100::1657 as permitted sender) smtp.mailfrom=notmuch-bounces@notmuchmail.org X-Migadu-Queue-Id: 758068538 X-Spam-Score: -0.83 X-Migadu-Scanner: scn0.migadu.com X-TUID: 5t+pgMbR+9Us QWxsIG9wZXJhdGlvbnMgYW5kIChYYXBpYW4pIGZpZWxkcyB3aWxsIGV2ZW50dWFsbHkgaGF2ZSBh biBlbnRyeSBpbg0KdGhlIHByZWZpeGVzIHRhYmxlLiBUaGUgZmxhZ3MgZmllbGQgaXMganVzdCBh IHBsYWNlaG9sZGVyIGZvciBub3csIGJ1dA0Kd2lsbCBldmVudHVhbGx5IGRpc3Rpbmd1aXNoIGJl dHdlZW4gdmFyaW91cyBraW5kcyBvZiBwcmVmaXhlcy4NCi0tLQ0KIGRvYy9tYW43L25vdG11Y2gt c2V4cC1xdWVyaWVzLnJzdCB8IDE2ICsrKystLS0NCiBsaWIvcGFyc2Utc2V4cC5jYyAgICAgICAg ICAgICAgICAgfCA3NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tDQogdGVzdC9UMDgx LXNleHByLXNlYXJjaC5zaCAgICAgICAgIHwgMzEgKysrKysrKysrKystLQ0KIDMgZmlsZXMgY2hh bmdlZCwgMTA5IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQ0KDQpkaWZmIC0tZ2l0IGEv ZG9jL21hbjcvbm90bXVjaC1zZXhwLXF1ZXJpZXMucnN0IGIvZG9jL21hbjcvbm90bXVjaC1zZXhw LXF1ZXJpZXMucnN0DQppbmRleCBkMTc3OTM0ZC4uMDMwNDc1OWUgMTAwNjQ0DQotLS0gYS9kb2Mv bWFuNy9ub3RtdWNoLXNleHAtcXVlcmllcy5yc3QNCisrKyBiL2RvYy9tYW43L25vdG11Y2gtc2V4 cC1xdWVyaWVzLnJzdA0KQEAgLTUxLDcgKzUxLDkgQEAgc3VicXVlcmllcy4NCiAgICAgKGZvciBt b3N0IGZpZWxkcykgb3IgKm9yKi4gU2VlIDphbnk6YGZpZWxkc2AgZm9yIG1vcmUgaW5mb3JtYXRp b24uDQogDQogYGAoYGAgKm9wZXJhdG9yKiB8cTF8IHxxMnwgLi4uIHxxbnwgYGApYGANCi0gICAg Q29tYmluZSBxdWVyaWVzIHxxMXwgdG8gfHFufC4gU2VlIDphbnk6YG9wZXJhdG9yc2AgZm9yIG1v cmUgaW5mb3JtYXRpb24uDQorICAgIENvbWJpbmUgcXVlcmllcyB8cTF8IHRvIHxxbnwuIEN1cnJl bnRseSBzdXBwb3J0ZWQgb3BlcmF0b3JzIGFyZQ0KKyAgICBgYGFuZGBgLCBgYG9yYGAsIGFuZCBg YG5vdGBgLiBgYChub3RgYCB8cTF8IC4uLiB8cW58IGBgKWBgIGlzIGVxdWl2YWxlbnQNCisgICAg dG8gYGAoYW5kIChub3RgYCB8cTF8IGBgKSAuLi4gKG5vdGBgIHxxbnwgYGApKWBgLg0KIA0KIGBg KGBgICptb2RpZmllciogfHExfCB8cTJ8IC4uLiB8cW58IGBgKWBgDQogICAgIENvbWJpbmUgcXVl cmllcyB8cTF8IHRvIHxxbnwsIGFuZCByZWludGVycHJldCB0aGUgcmVzdWx0IChlLmcuIGFzIGEg cmVndWxhciBleHByZXNzaW9uKS4NCkBAIC02MiwxMSArNjQsNiBAQCBzdWJxdWVyaWVzLg0KIEZJ RUxEUw0KIGBgYGBgYA0KIA0KLS4uIF9vcGVyYXRvcnM6DQotDQotT1BFUkFUT1JTDQotYGBgYGBg YGBgDQotDQogLi4gX21vZGlmaWVyczoNCiANCiBNT0RJRklFUlMNCkBAIC04Miw2ICs3OSwxMyBA QCBFWEFNUExFUw0KICAgICBNYXRjaCBhbGwgbWVzc2FnZXMgY29udGFpbmluZyAiYWRkZWQiLCBi dXQgYWxzbyB0aG9zZSBjb250YWluaW5nICJhZGQiLCAiYWRkaXRpb25hbCIsDQogICAgICJBZGRp dGlvbmFsIiwgImFkZHMiLCBldGMuLi4gdmlhIHN0ZW1taW5nLg0KIA0KK2BgKGFuZCBCb2IgTWFy bGV5KWBgDQorICAgIE1hdGNoIG1lc3NhZ2VzIGNvbnRhaW5pbmcgd29yZHMgIkJvYiIgYW5kICJN YXJsZXkiLCBvciB0aGVpciBzdGVtcw0KKyAgICBUaGUgd29yZHMgbmVlZCBub3QgYmUgYWRqYWNl bnQuDQorDQorYGAobm90IEJvYiBNYXJsZXkpYGANCisgICAgTWF0Y2ggbWVzc2FnZXMgY29udGFp bmluZyBuZWl0aGVyICJCb2IiIG5vciAiTWFybGV5Iiwgbm9yIHRoZWlyIHN0ZW1zLA0KKw0KIC4u IHxxMXwgcmVwbGFjZTo6IDptYXRoOmBxXzFgDQogLi4gfHEyfCByZXBsYWNlOjogOm1hdGg6YHFf MmANCiAuLiB8cW58IHJlcGxhY2U6OiA6bWF0aDpgcV9uYA0KZGlmZiAtLWdpdCBhL2xpYi9wYXJz ZS1zZXhwLmNjIGIvbGliL3BhcnNlLXNleHAuY2MNCmluZGV4IGYwMzFkNzkwLi4wZDJjMGJhOCAx MDA2NDQNCi0tLSBhL2xpYi9wYXJzZS1zZXhwLmNjDQorKysgYi9saWIvcGFyc2Utc2V4cC5jYw0K QEAgLTcsMTIgKzcsNjkgQEANCiAvKiBfc2V4cCBpcyB1c2VkIGZvciBmaWxlIHNjb3BlIHN5bWJv bHMgdG8gYXZvaWQgY2xhc2hpbmcgd2l0aA0KICAqIGRlZmluaXRpb25zIGZyb20gc2V4cC5oICov DQogDQordHlwZWRlZiBlbnVtIHsNCisgICAgU0VYUF9GTEFHX05PTkUgPSAwLA0KK30gX3NleHBf ZmxhZ190Ow0KKw0KK3R5cGVkZWYgc3RydWN0ICB7DQorICAgIGNvbnN0IGNoYXIgKm5hbWU7DQor ICAgIFhhcGlhbjo6UXVlcnk6Om9wIHhhcGlhbl9vcDsNCisgICAgWGFwaWFuOjpRdWVyeSBpbml0 aWFsOw0KKyAgICBfc2V4cF9mbGFnX3QgZmxhZ3M7DQorfSBfc2V4cF9wcmVmaXhfdDsNCisNCitz dGF0aWMgX3NleHBfcHJlZml4X3QgcHJlZml4ZXNbXSA9DQorew0KKyAgICB7ICJhbmQiLCAgICAg ICAgICAgIFhhcGlhbjo6UXVlcnk6Ok9QX0FORCwgICAgICAgICAgWGFwaWFuOjpRdWVyeTo6TWF0 Y2hBbGwsDQorICAgICAgU0VYUF9GTEFHX05PTkUgfSwNCisgICAgeyAibm90IiwgICAgICAgICAg ICBYYXBpYW46OlF1ZXJ5OjpPUF9BTkRfTk9ULCAgICAgIFhhcGlhbjo6UXVlcnk6Ok1hdGNoQWxs LA0KKyAgICAgIFNFWFBfRkxBR19OT05FIH0sDQorICAgIHsgIm9yIiwgICAgICAgICAgICAgWGFw aWFuOjpRdWVyeTo6T1BfT1IsICAgICAgICAgICBYYXBpYW46OlF1ZXJ5OjpNYXRjaE5vdGhpbmcs DQorICAgICAgU0VYUF9GTEFHX05PTkUgfSwNCisgICAgeyB9DQorfTsNCisNCitzdGF0aWMgbm90 bXVjaF9zdGF0dXNfdCBfc2V4cF90b194YXBpYW5fcXVlcnkgKG5vdG11Y2hfZGF0YWJhc2VfdCAq bm90bXVjaCwNCisJCQkJCSAgICAgICBjb25zdCBfc2V4cF9wcmVmaXhfdCAqcGFyZW50LA0KKwkJ CQkJICAgICAgIGNvbnN0IHNleHBfdCAqc3gsDQorCQkJCQkgICAgICAgWGFwaWFuOjpRdWVyeSAm b3V0cHV0KTsNCisNCitzdGF0aWMgbm90bXVjaF9zdGF0dXNfdA0KK19zZXhwX2NvbWJpbmVfcXVl cnkgKG5vdG11Y2hfZGF0YWJhc2VfdCAqbm90bXVjaCwNCisJCSAgICAgY29uc3QgX3NleHBfcHJl Zml4X3QgKnBhcmVudCwNCisJCSAgICAgWGFwaWFuOjpRdWVyeTo6b3Agb3BlcmF0aW9uLA0KKwkJ ICAgICBYYXBpYW46OlF1ZXJ5IGxlZnQsDQorCQkgICAgIGNvbnN0IHNleHBfdCAqc3gsDQorCQkg ICAgIFhhcGlhbjo6UXVlcnkgJm91dHB1dCkNCit7DQorICAgIFhhcGlhbjo6UXVlcnkgc3VicXVl cnk7DQorDQorICAgIG5vdG11Y2hfc3RhdHVzX3Qgc3RhdHVzOw0KKw0KKyAgICAvKiBpZiB3ZSBy dW4gb3V0IGVsZW1lbnRzLCByZXR1cm4gYWNjdW11bGF0b3IgKi8NCisNCisgICAgaWYgKCEgc3gp IHsNCisJb3V0cHV0ID0gbGVmdDsNCisJcmV0dXJuIE5PVE1VQ0hfU1RBVFVTX1NVQ0NFU1M7DQor ICAgIH0NCisNCisgICAgc3RhdHVzID0gX3NleHBfdG9feGFwaWFuX3F1ZXJ5IChub3RtdWNoLCBw YXJlbnQsIHN4LCBzdWJxdWVyeSk7DQorICAgIGlmIChzdGF0dXMpDQorCXJldHVybiBzdGF0dXM7 DQorDQorICAgIHJldHVybiBfc2V4cF9jb21iaW5lX3F1ZXJ5IChub3RtdWNoLA0KKwkJCQlwYXJl bnQsDQorCQkJCW9wZXJhdGlvbiwNCisJCQkJWGFwaWFuOjpRdWVyeSAob3BlcmF0aW9uLCBsZWZ0 LCBzdWJxdWVyeSksDQorCQkJCXN4LT5uZXh0LCBvdXRwdXQpOw0KK30NCisNCiAvKiBIZXJlIHdl IGV4cGVjdCB0aGUgcy1leHByZXNzaW9uIHRvIGJlIGEgcHJvcGVyIGxpc3QsIHdpdGggZmlyc3QN CiAgKiBlbGVtZW50IGRlZmluaW5nIGFuZCBvcGVyYXRpb24sIG9yIGFzIGEgc3BlY2lhbCBjYXNl IHRoZSBlbXB0eQ0KICAqIGxpc3QgKi8NCiANCiBzdGF0aWMgbm90bXVjaF9zdGF0dXNfdA0KLV9z ZXhwX3RvX3hhcGlhbl9xdWVyeSAobm90bXVjaF9kYXRhYmFzZV90ICpub3RtdWNoLCBjb25zdCBz ZXhwX3QgKnN4LA0KK19zZXhwX3RvX3hhcGlhbl9xdWVyeSAobm90bXVjaF9kYXRhYmFzZV90ICpu b3RtdWNoLCBjb25zdCBfc2V4cF9wcmVmaXhfdCAqcGFyZW50LCBjb25zdCBzZXhwX3QgKnN4LA0K IAkJICAgICAgIFhhcGlhbjo6UXVlcnkgJm91dHB1dCkNCiB7DQogDQpAQCAtMzIsMTEgKzg5LDIw IEBAIF9zZXhwX3RvX3hhcGlhbl9xdWVyeSAobm90bXVjaF9kYXRhYmFzZV90ICpub3RtdWNoLCBj b25zdCBzZXhwX3QgKnN4LA0KIAlyZXR1cm4gTk9UTVVDSF9TVEFUVVNfU1VDQ0VTUzsNCiAgICAg fQ0KIA0KLSAgICBpZiAoc3gtPmxpc3QtPnR5ID09IFNFWFBfVkFMVUUpDQotCV9ub3RtdWNoX2Rh dGFiYXNlX2xvZyAobm90bXVjaCwgInVua25vd24gcHJlZml4ICclcydcbiIsIHN4LT5saXN0LT52 YWwpOw0KLSAgICBlbHNlDQorICAgIGlmIChzeC0+bGlzdC0+dHkgPT0gU0VYUF9MSVNUKSB7DQog CV9ub3RtdWNoX2RhdGFiYXNlX2xvZyAobm90bXVjaCwgInVuZXhwZWN0ZWQgbGlzdCBpbiBmaWVs ZC9vcGVyYXRpb24gcG9zaXRpb25cbiIsDQogCQkJICAgICAgIHN4LT5saXN0LT52YWwpOw0KKwly ZXR1cm4gTk9UTVVDSF9TVEFUVVNfQkFEX1FVRVJZX1NZTlRBWDsNCisgICAgfQ0KKw0KKyAgICBm b3IgKF9zZXhwX3ByZWZpeF90ICpwcmVmaXggPSBwcmVmaXhlczsgcHJlZml4ICYmIHByZWZpeC0+ bmFtZTsgcHJlZml4KyspIHsNCisJaWYgKHN0cmNtcCAocHJlZml4LT5uYW1lLCBzeC0+bGlzdC0+ dmFsKSA9PSAwKSB7DQorCSAgICByZXR1cm4gX3NleHBfY29tYmluZV9xdWVyeSAobm90bXVjaCwg cGFyZW50LCBwcmVmaXgtPnhhcGlhbl9vcCwgcHJlZml4LT5pbml0aWFsLA0KKwkJCQkJc3gtPmxp c3QtPm5leHQsIG91dHB1dCk7DQorCX0NCisgICAgfQ0KKw0KKyAgICBfbm90bXVjaF9kYXRhYmFz ZV9sb2cgKG5vdG11Y2gsICJ1bmtub3duIHByZWZpeCAnJXMnXG4iLCBzeC0+bGlzdC0+dmFsKTsN CiANCiAgICAgcmV0dXJuIE5PVE1VQ0hfU1RBVFVTX0JBRF9RVUVSWV9TWU5UQVg7DQogfQ0KQEAg LTU0LDYgKzEyMCw2IEBAIF9ub3RtdWNoX3NleHBfc3RyaW5nX3RvX3hhcGlhbl9xdWVyeSAobm90 bXVjaF9kYXRhYmFzZV90ICpub3RtdWNoLCBjb25zdCBjaGFyICpxDQogCXJldHVybiBOT1RNVUNI X1NUQVRVU19CQURfUVVFUllfU1lOVEFYOw0KICAgICB9DQogDQotICAgIHJldHVybiBfc2V4cF90 b194YXBpYW5fcXVlcnkgKG5vdG11Y2gsIHN4LCBvdXRwdXQpOw0KKyAgICByZXR1cm4gX3NleHBf dG9feGFwaWFuX3F1ZXJ5IChub3RtdWNoLCBOVUxMLCBzeCwgb3V0cHV0KTsNCiB9DQogI2VuZGlm DQpkaWZmIC0tZ2l0IGEvdGVzdC9UMDgxLXNleHByLXNlYXJjaC5zaCBiL3Rlc3QvVDA4MS1zZXhw ci1zZWFyY2guc2gNCmluZGV4IDRlM2Q3NTVjLi41ZTFiYjE4ZCAxMDA3NTUNCi0tLSBhL3Rlc3Qv VDA4MS1zZXhwci1zZWFyY2guc2gNCisrKyBiL3Rlc3QvVDA4MS1zZXhwci1zZWFyY2guc2gNCkBA IC05LDkgKzksMzQgQEAgZmkNCiANCiBhZGRfZW1haWxfY29ycHVzDQogDQotdGVzdF9iZWdpbl9z dWJ0ZXN0ICJhbGwgbWVzc2FnZXM6ICgpIg0KLW5vdG11Y2ggc2VhcmNoICcqJyA+IEVYUEVDVEVE DQotbm90bXVjaCBzZWFyY2ggLS1xdWVyeT1zZXhwICIoKSIgPiBPVVRQVVQNCitmb3IgcXVlcnkg aW4gJygpJyAnKG5vdCknICcoYW5kKScgJyhvciAoKSknICcob3IgKG5vdCkpJyAnKG9yIChhbmQp KScgXA0KKyAgICAgICAgICAgICcob3IgKGFuZCkgKG9yKSAobm90IChhbmQpKSknOyBkbw0KKyAg ICB0ZXN0X2JlZ2luX3N1YnRlc3QgImFsbCBtZXNzYWdlczogJHF1ZXJ5Ig0KKyAgICBub3RtdWNo IHNlYXJjaCAnKicgPiBFWFBFQ1RFRA0KKyAgICBub3RtdWNoIHNlYXJjaCAtLXF1ZXJ5PXNleHAg IiRxdWVyeSIgPiBPVVRQVVQNCisgICAgdGVzdF9leHBlY3RfZXF1YWxfZmlsZSBFWFBFQ1RFRCBP VVRQVVQNCitkb25lDQorDQorZm9yIHF1ZXJ5IGluICcob3IpJyAnKG5vdCAoKSknICcobm90IChu b3QpKScgJyhub3QgKGFuZCkpJyBcDQorICAgICAgICAgICAgICAgICAgICcobm90IChvciAoYW5k KSAob3IpIChub3QgKGFuZCkpKSknOyBkbw0KKyAgICB0ZXN0X2JlZ2luX3N1YnRlc3QgIm5vIG1l c3NhZ2VzOiAkcXVlcnkiDQorICAgIG5vdG11Y2ggc2VhcmNoIC0tcXVlcnk9c2V4cCAiJHF1ZXJ5 IiA+IE9VVFBVVA0KKyAgICB0ZXN0X2V4cGVjdF9lcXVhbF9maWxlIC9kZXYvbnVsbCBPVVRQVVQN Citkb25lDQorDQordGVzdF9iZWdpbl9zdWJ0ZXN0ICJhbmQgb2YgZXhhY3QgdGVybXMiDQorbm90 bXVjaCBzZWFyY2ggLS1xdWVyeT1zZXhwICcoYW5kICJ3b25kZXJmdWwiICJ3aXphcmQiKScgfCBu b3RtdWNoX3NlYXJjaF9zYW5pdGl6ZSA+IE9VVFBVVA0KK2NhdCA8PEVPRiA+IEVYUEVDVEVEDQor dGhyZWFkOlhYWCAgIDIwMDktMTEtMTggWzEvM10gQ2FybCBXb3J0aHwgSmFuIEphbmFrOyBbbm90 bXVjaF0gV2hhdCBhIGdyZWF0IGlkZWEhIChpbmJveCB1bnJlYWQpDQorRU9GDQordGVzdF9leHBl Y3RfZXF1YWxfZmlsZSBFWFBFQ1RFRCBPVVRQVVQNCisNCit0ZXN0X2JlZ2luX3N1YnRlc3QgIm9y IG9mIGV4YWN0IHRlcm1zIg0KK25vdG11Y2ggc2VhcmNoIC0tcXVlcnk9c2V4cCAnKG9yICJwaHAi ICJ3aXphcmQiKScgfCBub3RtdWNoX3NlYXJjaF9zYW5pdGl6ZSA+IE9VVFBVVA0KK2NhdCA8PEVP RiA+IEVYUEVDVEVEDQordGhyZWFkOlhYWCAgIDIwMTAtMTItMjkgWzEvMV0gRnJhbsOnb2lzIEJv dWxvZ25lOyBbYXVyLWdlbmVyYWxdIEd1aWRlbGluZXM6IGNwLCBta2RpciB2cyBpbnN0YWxsIChp bmJveCB1bnJlYWQpDQordGhyZWFkOlhYWCAgIDIwMDktMTEtMTggWzEvM10gQ2FybCBXb3J0aHwg SmFuIEphbmFrOyBbbm90bXVjaF0gV2hhdCBhIGdyZWF0IGlkZWEhIChpbmJveCB1bnJlYWQpDQor RU9GDQogdGVzdF9leHBlY3RfZXF1YWxfZmlsZSBFWFBFQ1RFRCBPVVRQVVQNCiANCiB0ZXN0X2Jl Z2luX3N1YnRlc3QgInNpbmdsZSB0ZXJtIGluIGJvZHkiDQotLSANCjIuMzIuMA0=