# === strip trailing CR (but keep CRs in property value) ===
# s;\r$;;; # already done in in previous filter
- # unscramble aggregated fields
- :disag
- s;^([^:]+:)((.*[^\])?(\\\\)*),;\1\2\n\1;;
- t disag;
-
# === Normalise various known vendor properties ===
s;^X-MS-CARDPICTURE(\;|:);PHOTO\1;;
s;^X-GENDER(\;|:);GENDER\1;;
# === Insert empty attribute fields where no attributes are present ===
s;^([^;:]+):;\1\;:;;
+
+ # unscramble aggregated fields
+ :disag
+ s;^([^:]+:)((.*[^\])?(\\\\)*),;\1\2\n\1;;
+ t disag;
'
}