about summary refs log tree commit diff
diff options
context:
space:
mode:
authorsterni <sternenseemann@systemli.org>2024-12-02T17·46+0100
committerclbot <clbot@tvl.fyi>2024-12-02T18·09+0000
commit3398c2ab7fbbc4d22a2c4540518ffe293ba9dc1c (patch)
tree4784cdba10d759ae96326c293d40d869bffe8fad
parentdb2fa5b3c8fada85de8bff6be7ef1312d7b45ef1 (diff)
fix(3p/lisp/mime4cl): don't store redundant headers in MIME-MESSAGE r/8975
MIME-MESSAGE has a HEADERS slot which is an alist of all headers. Some
of those headers will be parsed again and stored in MIME-PART (or a
subclass of it). Having the header content stored in the HEADERS alist
and in MIME-PART causes problems:

- Requires extra knowledge about how messages are parsed when rendering
  messages.
- Makes MIME= depend on the specific whitespace and quoting in those
  headers which isn't preserved by how mime4cl parses e.g. Content-Type.
- Gives users two ways that slightly diverge to access the same thing.

To avoid this, we remove these headers after the MIME-PARTs contained in
MIME-MESSAGE have been initialized (since they reuse the HEADERS slot).

Change-Id: I5b221f88bbac47dd81db369e3c1d5881a5a50e5e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/12858
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
-rw-r--r--third_party/lisp/mime4cl/mime.lisp31
-rw-r--r--third_party/lisp/mime4cl/test/samples/google-groups-msg-with-patch.msg206
2 files changed, 230 insertions, 7 deletions
diff --git a/third_party/lisp/mime4cl/mime.lisp b/third_party/lisp/mime4cl/mime.lisp
index ead6108fc668..eeddea970603 100644
--- a/third_party/lisp/mime4cl/mime.lisp
+++ b/third_party/lisp/mime4cl/mime.lisp
@@ -67,6 +67,15 @@
   (:documentation
    "Abstract base class for all types of MIME parts."))
 
+(defparameter +redundant-headers+ '(:mime-version
+                                    :content-type
+                                    :content-id
+                                    :content-description
+                                    :content-disposition
+                                    :content-transfer-encoding)
+  "Headers that don't need to be preserved in the  HEADERS slot of MIME-MESSAGE
+because they are stored in dedicated slots in MIME-PART.")
+
 (defclass mime-bodily-part (mime-part)
   ((body
     :initarg :body
@@ -131,11 +140,20 @@
   ;; Allow a list of mime parts to be specified as body of a
   ;; mime-message.  In that case we implicitly create a mime-multipart
   ;; and assign to the body slot.
-  (with-slots (real-message) part
+  (with-slots (real-message headers) part
     (when (and (slot-boundp part 'real-message)
                (consp real-message))
       (setf real-message
-            (make-instance 'mime-multipart :parts real-message)))))
+            (make-instance 'mime-multipart :parts real-message)))
+    ;; Remove headers that are parsed and stored in MIME-PART (i.e.
+    ;; REAL-MESSAGE). This prevents redundant storage and rendering of these
+    ;; headers as well as MIME= depending on the specific rendering of these
+    ;; headers which may diverge between mime4cl and other software. We do this
+    ;; here since construction of REAL-MESSAGE may access the HEADERS slot.
+    (setf headers
+          (delete-if (lambda (h)
+                       (member (car h) +redundant-headers+ :test #'string-equal))
+                     headers))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
@@ -471,15 +489,14 @@ separated by PART-BOUNDARY."
   (encode-mime-body part stream))
 
 (defmethod encode-mime-part ((part mime-message) stream)
-  ;; tricky: we have to mix the MIME headers with the message headers
+  ;; tricky: we have to mix the MIME headers with the message headers, i.e.
+  ;; ENCODE-MIME-PART will output additional headers
   (dolist (h (mime-message-headers part))
     (unless (stringp (car h))
       (setf (car h)
             (string-capitalize (car h))))
-    (unless (or (string-starts-with "content-" (car h) #'string-equal)
-                (string-equal "mime-version" (car h)))
-      (format stream "~A: ~A~%"
-              (car h) (cdr h))))
+    (format stream "~A: ~A~%"
+            (car h) (cdr h)))
   (encode-mime-part (mime-body part) stream))
 
 (defmethod encode-mime-part ((part mime-multipart) stream)
diff --git a/third_party/lisp/mime4cl/test/samples/google-groups-msg-with-patch.msg b/third_party/lisp/mime4cl/test/samples/google-groups-msg-with-patch.msg
new file mode 100644
index 000000000000..71fbdc22b505
--- /dev/null
+++ b/third_party/lisp/mime4cl/test/samples/google-groups-msg-with-patch.msg
@@ -0,0 +1,206 @@
+Received: by 2002:a05:6838:9619:0:0:0:0 with SMTP id y25csp3021959nkj;
+        Sun, 27 Sep 2020 16:35:15 -0700 (PDT)
+X-Received: by 2002:a05:6402:396:: with SMTP id o22mr12644027edv.316.1601249714826;
+        Sun, 27 Sep 2020 16:35:14 -0700 (PDT)
+ARC-Seal: i=3; a=rsa-sha256; t=1601249714; cv=pass;
+        d=google.com; s=arc-20160816;
+        b=JZF8xwEI+NfpPypYuVsDwKKN4In4Gxk3qcvm260gDbKPo04eS7Dn3CcoeQkbB3Ryck
+         FUtB8PfISQOsDboMeEXqGbhbCSbH2HoXWySM6XucTVzfeL2hXF9sPjFUCx6LLuvSDSxL
+         7E146B7H3dNvB1ndqkWyefiVeSgeES7KzVvYbkoMJJlKozR6FUsKMCVMdrRq0ja6iGbf
+         7TlLWvlci49+8LZQKtDQ2ovU/DSQmu2f7eWcbozsIP3ArBxQ+814bQprLWQYsI5Z4fZz
+         0kPEC6dbZpajPDNpTx5ark/+EV/ICGVE6kODmNjFTi18eMjMU1PXULE8FImkw+duFdzP
+         DF4g==
+ARC-Message-Signature: i=3; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
+        h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post
+         :list-id:mailing-list:precedence:subject:to:from:date:message-id
+         :mime-version:user-agent:sender:dkim-signature;
+        bh=2VC221ICpWr3atnjvjQBr2VGuwcTNaQLBA5EJvQxzNE=;
+        b=oI1vj3HEqVB2vRTlg44B8ik+G5jSMm7YHiPOdg+oWwiZSeK1DlKf3S0C9brs8iLBDU
+         paovJkxdJu++lY1zzBorw34bMDPHsfnBf6ztDZfAhpDSQM3VZEW+jAvAc9vFh6eL5ilE
+         qdZR9blzrqoi5GoPmVx7j/Z30zFidppWNbZLzuC7pAcS86WzKd8Ta56EDxxHE48RFRyO
+         TYhIonS2QEBp+Yn2Pm5SGez/5HHI2s3vu1kXTZ0JKETvWSkZUtBsX7u7KTfcy3EAjvc8
+         3s2dxQpMCYXZvyvJ0g2k0dsecEDRBWa2gv9Wr3iip7v5NaRcKuz1nuN/AiazKZPTDION
+         f/tg==
+ARC-Authentication-Results: i=3; mx.google.com;
+       dkim=pass header.i=@tazj.in header.s=google header.b=dVeQt6cm;
+       arc=pass (i=2 dkim=pass dkdomain=firefly.nu dkim=pass dkdomain=messagingengine.com);
+       spf=pass (google.com: domain of depot+bncbdhlpx4g2ierbmwdyt5qkgqexgc7sqy@tazj.in designates 209.85.220.69 as permitted sender) smtp.mailfrom=depot+bncBDHLPX4G2IERBMWDYT5QKGQEXGC7SQY@tazj.in
+Return-Path: <depot+bncBDHLPX4G2IERBMWDYT5QKGQEXGC7SQY@tazj.in>
+Received: from mail-sor-f69.google.com (mail-sor-f69.google.com. [209.85.220.69])
+        by mx.google.com with SMTPS id li22sor4242657ejb.49.2020.09.27.16.35.14
+        for <mail@tazj.in>
+        (Google Transport Security);
+        Sun, 27 Sep 2020 16:35:14 -0700 (PDT)
+Received-SPF: pass (google.com: domain of depot+bncbdhlpx4g2ierbmwdyt5qkgqexgc7sqy@tazj.in designates 209.85.220.69 as permitted sender) client-ip=209.85.220.69;
+Authentication-Results: mx.google.com;
+       dkim=pass header.i=@tazj.in header.s=google header.b=dVeQt6cm;
+       arc=pass (i=2 dkim=pass dkdomain=firefly.nu dkim=pass dkdomain=messagingengine.com);
+       spf=pass (google.com: domain of depot+bncbdhlpx4g2ierbmwdyt5qkgqexgc7sqy@tazj.in designates 209.85.220.69 as permitted sender) smtp.mailfrom=depot+bncBDHLPX4G2IERBMWDYT5QKGQEXGC7SQY@tazj.in
+ARC-Seal: i=2; a=rsa-sha256; t=1601249714; cv=pass;
+        d=google.com; s=arc-20160816;
+        b=e/oahP75xCAPQvP5D7B1dG2SDAEC5XNRI40cafqhXEI32hdW9TQNSs1krZ7tQHOht2
+         /ZGbOLY/BNxS3VoDM+Mcif7BCx7bjeOpmVkVzEhM0KZoBHorf91SOBM05PvewA9nQtLb
+         1pXB8bdivzOkYUuSX56rX1sOjNjMrWWUPF8Ven5zy3r2MIqJ561O8pPN/6Uz0tajiK7Y
+         klavaIk/Pxo91kuVbOKDJTH2mmggFTthqYkkCQuelgeKx4zBdDjS32vx3kPLRhMnfuGu
+         +CHC9L2Gv0ww0PyfRhkYeNLRrAqVHWDyCrw26f2QxFBEoTv/OnzH380uqO9n+SdmILBI
+         fNzw==
+ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
+        h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post
+         :list-id:mailing-list:precedence:subject:to:from:date:message-id
+         :mime-version:user-agent:sender:dkim-signature;
+        bh=2VC221ICpWr3atnjvjQBr2VGuwcTNaQLBA5EJvQxzNE=;
+        b=BONPbsQkjSVRgH8pu89B9aXx6IAuchsgfp2pedA7kEz7Gw3/M9nQoPxTbjcAXKFWoi
+         SDqYH/Ch6TrYFy6WmgKyw5NB0WuB6WIC9jhRbeiGsXlxbnm1cP1thD7uRFJTaAhcaRBO
+         cbRA5Ue7pTphAtNVWkHeC37swSOrLtl9WFj+vXwo2l8ndO+5uP6jBi3ApaZDXyx7NODT
+         i3Jo1kehj7rnA+PINKR8tjlZ1COJYmxWz7upypJY4rZxLdJYzXPS19Rdhq4zmumyqRxt
+         NsnIIPsPRnYopcLd15rwgSOaHYi4CWwalkpfsBL1IaKXuk0K/XwmLsWdGrNRAN4aUEoR
+         7KEw==
+ARC-Authentication-Results: i=2; mx.google.com;
+       dkim=pass header.i=@firefly.nu header.s=fm2 header.b=P5Ezbo3T;
+       dkim=pass header.i=@messagingengine.com header.s=fm3 header.b=pHVhf6X0;
+       spf=neutral (google.com: 64.147.123.21 is neither permitted nor denied by best guess record for domain of firefly@firefly.nu) smtp.mailfrom=firefly@firefly.nu
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+        d=tazj.in; s=google;
+        h=sender:user-agent:mime-version:message-id:date:from:to:subject
+         :x-original-sender:x-original-authentication-results:precedence
+         :mailing-list:list-id:list-post:list-help:list-archive
+         :list-subscribe:list-unsubscribe;
+        bh=2VC221ICpWr3atnjvjQBr2VGuwcTNaQLBA5EJvQxzNE=;
+        b=dVeQt6cmfZBkKqjl826gk0BnxKVtl6OsjaldzCuNQxqxhrecw9GbSofGqS3WxrxWWP
+         S8cg2AoRtIFC8nuTiRCAEgREb+4paYH5BtDbLtL/Y56jOA0djb6APwYx8MYOVwQxflrx
+         yyGWSXI04MYjkX/+0gFyvzi0VfZM4UK4pjfPN6WhHBe4xy6bF8VBds11PPAaKZdSdAvR
+         z8j+CpWBNzKNfbM3bUdLbEuPmt3+Qeem/4HAnRhY6jIYyBJb2a2vXT/edBasnTE/gNSd
+         Cf4SppE7H3EpRwveBAF367MeeX3stQrXN//t2aXljnuxymM90yPkIq2Xn0zBfp1O47WR
+         aOBg==
+X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+        d=1e100.net; s=20161025;
+        h=sender:x-gm-message-state:user-agent:mime-version:message-id:date
+         :from:to:subject:x-original-sender:x-original-authentication-results
+         :precedence:mailing-list:list-id:x-spam-checked-in-group:list-post
+         :list-help:list-archive:list-subscribe:list-unsubscribe;
+        bh=2VC221ICpWr3atnjvjQBr2VGuwcTNaQLBA5EJvQxzNE=;
+        b=qScRnwtHSE4Boeu7UpmdBjsVhesvMMFHVmdPjW3sNCgR1SxUIOLjFpJNPXy/l+dlOh
+         sApL/oDMQ25yHodkQF8G2mRCV+SBDVAsrIo0w+LILPP3h+Y0y2yTLiLwKE4WLqoaPi1l
+         jugZUthJC3KEHq8fhtQHRTtBc5V7UQJIecH2kIU43DUNKpzkzOdf7km6Q0cY9CdXs23x
+         PSuSg4PzbHOo6cGdBVKvbsjh+sOn6WFuxoXOTtNmFJfE9fTfUlz7LJumTZU3J7DKc5Ho
+         aYzHFmRwdZUyoX/FQwT//Tf2RQbnVGD3o5a+6lhzt8MFecmLHvRImbKCL/L8K+WTYYFY
+         ou0g==
+Sender: depot@tazj.in
+X-Gm-Message-State: AOAM530ZJ8ZcOIvD5lsuI9DM+tccfbSnX8Qgkk03neyoDAKpidBSMC/W
+	yt/uGXfgEMSbcEOWEu/zxLqwyI0F
+X-Google-Smtp-Source: ABdhPJySQZLzFZhvk2VQDhHrXOWbCQqFMNYvDodhQIOIvOgRkT6bOuvTGVrWIiY58v2NVvIzUZCfKw==
+X-Received: by 2002:a17:906:d78c:: with SMTP id pj12mr12868809ejb.36.1601249714531;
+        Sun, 27 Sep 2020 16:35:14 -0700 (PDT)
+X-BeenThere: depot@tazj.in
+Received: by 2002:a17:906:547:: with SMTP id k7ls3670922eja.7.gmail; Sun, 27
+ Sep 2020 16:35:13 -0700 (PDT)
+X-Received: by 2002:a17:906:2cd2:: with SMTP id r18mr13573990ejr.371.1601249713549;
+        Sun, 27 Sep 2020 16:35:13 -0700 (PDT)
+ARC-Seal: i=1; a=rsa-sha256; t=1601249713; cv=none;
+        d=google.com; s=arc-20160816;
+        b=oi0sYnQxS35/hNyKRgiTTgLNV0zvOtiE8Irv6bfmQCOADDql9vaDvs430N+tsEzON3
+         wd8frXphZvgkZjVvPer5CgLyr84ixyrrHhEDwqs89AYR9wHibQ6QtinQfr5xoDkQW9Tb
+         MMlgl55c2AHzXXqe+eY4gEHww/y8ys1aCDAWEhGxe1M09FiUVBn3+F2ZOV5IW4q+p9TW
+         EMPNZyByXAZnqkYZCX+KHJ+3nyuQ0PsRVuIVbQA/a0GvVwl+yEhyJno7l2AUR8cfl8at
+         MeevKmvuYTCuc03cLceleXov097xsF0WvO8H68OPkZj1Kf9wrE3qg6avyZF285ixaXrS
+         Kc6A==
+ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
+        h=subject:to:from:date:message-id:mime-version:user-agent
+         :dkim-signature:dkim-signature;
+        bh=RahJwSWaN3jErVsNLXnMXbf7yUdzKHDGCF4swc44ayM=;
+        b=qzsApa+4gOUyfT8CcBmrz26QKrvOy54oZgzrHdDe7oNkLANtUyxqKD3KhDAKGUMLYQ
+         jbXSNrQnhNR4GUNAYmpT/TM0RnbEgdO9rr9LcA3pGA9/LuJo3jBkV87a9H7cC5mp8Zwc
+         sL4WScovJaK7m0m83VBDqq9Zhp0hexHCKCnH/LrNtpTrWiQvYz6BuDM04BuOEXN4mq1c
+         tXXcDsrcoj4hTLtGplWU5qGhYnem00cKPXsQ09ivGKFib1TbNgiVGsnHrICktmmionRw
+         SioEgIoc0ZUlHQOvoV0UlbkCAEEPS9GBR3NeTbm+Dth08zejgs+Il9QiFV2kLnJ0QMpn
+         oB8A==
+ARC-Authentication-Results: i=1; mx.google.com;
+       dkim=pass header.i=@firefly.nu header.s=fm2 header.b=P5Ezbo3T;
+       dkim=pass header.i=@messagingengine.com header.s=fm3 header.b=pHVhf6X0;
+       spf=neutral (google.com: 64.147.123.21 is neither permitted nor denied by best guess record for domain of firefly@firefly.nu) smtp.mailfrom=firefly@firefly.nu
+Received: from wout5-smtp.messagingengine.com (wout5-smtp.messagingengine.com. [64.147.123.21])
+        by mx.google.com with ESMTPS id m23si6276235ejo.333.2020.09.27.16.35.13
+        for <depot@tazj.in>
+        (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
+        Sun, 27 Sep 2020 16:35:13 -0700 (PDT)
+Received-SPF: neutral (google.com: 64.147.123.21 is neither permitted nor denied by best guess record for domain of firefly@firefly.nu) client-ip=64.147.123.21;
+Received: from compute1.internal (compute1.nyi.internal [10.202.2.41])
+	by mailout.west.internal (Postfix) with ESMTP id AF9D4858
+	for <depot@tazj.in>; Sun, 27 Sep 2020 19:35:11 -0400 (EDT)
+Received: from imap6 ([10.202.2.56])
+  by compute1.internal (MEProxy); Sun, 27 Sep 2020 19:35:11 -0400
+X-ME-Sender: <xms:riFxX4VnnifQ9w1KFMktbNIetMCUOiNsY4QMYMYNlcgQgeqXmCbxGg>
+    <xme:riFxX8mtBTwZaJ30GiNT2TYs0ejG-tC5fKpxry_tax2FN1_w3MP63qO7Ffo4aMcuK
+    eqmL1zZSYwS6hK6BvU>
+X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrvdehgddvfecutefuodetggdotefrodftvf
+    curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu
+    uegrihhlohhuthemuceftddtnecunecujfgurhepofgfggfkfffhvffutgesmhdtreerre
+    ertdenucfhrhhomhephfhirhgvhfhlhicuoehfihhrvghflhihsehfihhrvghflhihrdhn
+    uheqnecuggftrfgrthhtvghrnhepgfejjeeivdduheehhffgiedvvdeivefhfeekhfejvd
+    fgleekffdtvefgtdeuheefnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehm
+    rghilhhfrhhomhepfhhirhgvfhhlhiesfhhirhgvfhhlhidrnhhu
+X-ME-Proxy: <xmx:riFxX8bsOSPgAJy1KyePkpmeGpo8_4ECkIYua3cdRGhJD45-GomP8Q>
+    <xmx:riFxX3Ugz0lVIhmd_81eDzJj-2szxZvctDBqkrSaqBZ_TDOMs1VupQ>
+    <xmx:riFxXym0eSIOSeILjv9B21LhstreNAqMkiGciBVaC2LtNcaTVGm6wg>
+    <xmx:ryFxX4k9Fcb8iNBf12VTr02XeILIeJsjVJ3N-5Zb8vvkAOQ9acbwRQ>
+Received: by mailuser.nyi.internal (Postfix, from userid 501)
+	id AEA2C1400D7; Sun, 27 Sep 2020 19:35:10 -0400 (EDT)
+X-Mailer: MessagingEngine.com Webmail Interface
+User-Agent: Cyrus-JMAP/3.3.0-355-g3ece53b-fm-20200922.004-g3ece53b9
+Mime-Version: 1.0
+Message-Id: <4f4614f5-23dc-4263-b506-c557588232b2@www.fastmail.com>
+Date: Mon, 28 Sep 2020 01:34:48 +0200
+From: FireFly <firefly@firefly.nu>
+To: depot@tazj.in
+Subject: [PATCH] feat(tvl-slapd): add firefly
+Content-Type: multipart/mixed;
+ boundary=07c9605219da4b40b95ea5a855089bfa
+X-Original-Sender: firefly@firefly.nu
+X-Original-Authentication-Results: mx.google.com;       dkim=pass
+ header.i=@firefly.nu header.s=fm2 header.b=P5Ezbo3T;       dkim=pass
+ header.i=@messagingengine.com header.s=fm3 header.b=pHVhf6X0;
+       spf=neutral (google.com: 64.147.123.21 is neither permitted nor denied
+ by best guess record for domain of firefly@firefly.nu) smtp.mailfrom=firefly@firefly.nu
+Precedence: list
+Mailing-list: list depot@tazj.in; contact depot+owners@tazj.in
+List-ID: <depot.tazj.in>
+X-Spam-Checked-In-Group: depot@tazj.in
+X-Google-Group-Id: 728837484537
+List-Post: <https://groups.google.com/a/tazj.in/group/depot/post>, <mailto:depot@tazj.in>
+List-Help: <https://support.google.com/a/tazj.in/bin/topic.py?topic=25838>, <mailto:depot+help@tazj.in>
+List-Archive: <https://groups.google.com/a/tazj.in/group/depot/>
+List-Subscribe: <https://groups.google.com/a/tazj.in/group/depot/subscribe>, <mailto:depot+subscribe@tazj.in>
+List-Unsubscribe: <mailto:googlegroups-manage+728837484537+unsubscribe@googlegroups.com>,
+ <https://groups.google.com/a/tazj.in/group/depot/subscribe>
+
+--07c9605219da4b40b95ea5a855089bfa
+Content-Type: text/plain; charset="UTF-8"
+
+Adding an account for myself
+
+
+--07c9605219da4b40b95ea5a855089bfa
+Content-Disposition: attachment;filename="0001-feat-tvl-slapd-add-firefly.patch"
+Content-Type: application/octet-stream; name="0001-feat-tvl-slapd-add-firefly.patch"
+Content-Transfer-Encoding: BASE64
+
+RnJvbSA4ZDNiNmI5NWQ0Y2RlMDNmM2I2MjQzZmYyYWJhYmQ0YTEzNDhjZmUzIE1vbiBTZXAg
+MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Sm9uYXM9MjBIPUMzPUI2Z2x1bmQ/
+PSA8ZmlyZWZseUBmaXJlZmx5Lm51PgpEYXRlOiBNb24sIDI4IFNlcCAyMDIwIDAxOjI4OjI5
+ICswMjAwClN1YmplY3Q6IFtQQVRDSF0gZmVhdCh0dmwtc2xhcGQpOiBhZGQgZmlyZWZseQoK
+LS0tCiBvcHMvbml4b3MvdHZsLXNsYXBkL2RlZmF1bHQubml4IHwgNSArKysrKwogMSBmaWxl
+IGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL29wcy9uaXhvcy90dmwt
+c2xhcGQvZGVmYXVsdC5uaXggYi9vcHMvbml4b3MvdHZsLXNsYXBkL2RlZmF1bHQubml4Cmlu
+ZGV4IDQyMGU4ZTE5Ni4uMzk3N2ZjNzkyIDEwMDY0NAotLS0gYS9vcHMvbml4b3MvdHZsLXNs
+YXBkL2RlZmF1bHQubml4CisrKyBiL29wcy9uaXhvcy90dmwtc2xhcGQvZGVmYXVsdC5uaXgK
+QEAgLTYwLDYgKzYwLDExIEBAIGxldAogICAgICAgZW1haWwgPSAiZXRhQHRoZXRhLmV1Lm9y
+ZyI7CiAgICAgICBwYXNzd29yZCA9ICJ7U1NIQX1zT1I1eHppN0xmdjM3NlhHUUE4SGY2anlo
+VHZvMFhZYyI7CiAgICAgfQorICAgIHsKKyAgICAgIHVzZXJuYW1lID0gImZpcmVmbHkiOwor
+ICAgICAgZW1haWwgPSAiZmlyZWZseUBmaXJlZmx5Lm51IjsKKyAgICAgIHBhc3N3b3JkID0g
+IntBUkdPTjJ9JGFyZ29uMmlkJHY9MTkkbT02NTUzNix0PTIscD0xJFJZVlZrRm9pM0ExeVlr
+SThKMnpVd2ckR1VFUnZnSHZVOFNHalFtaWxESkdadTUwaFlSQUh3K2VqdHVMK1NreWdzOCI7
+CisgICAgfQogICAgIHsKICAgICAgIHVzZXJuYW1lID0gImdsaXR0ZXJzaGFyayI7CiAgICAg
+ICBlbWFpbCA9ICJncmZuQGd3cy5meWkiOwotLSAKMi4yNS4xCgo=
+
+--07c9605219da4b40b95ea5a855089bfa--
+