| eval tmp_raw_User = User
| eval tmp_raw_Type = Type
| eval tmp_{source_field} = replace({source_field}, /{regex}/, "##SEP##\\1##VAL_SEP##\\2##SEP##")
| eval tmp_{source_field} = filter(split(tmp_{source_field}, "##SEP##"), $row -> match($row, /.*##VAL_SEP##.*/ ))
| eval tmp_{source_field} = map(tmp_{source_field}, $row -> split($row, "##VAL_SEP##" ))
| eval tmp_{source_field} = map(tmp_{source_field}, $row -> json_array(replace(replace(trim($row[0]), /[^\w]/, "_"), /^_+/, ""), trim($row[1], "\r\n\t ")))
| eval tmp_{source_field} = filter(tmp_{source_field}, $row -> $row[1] != "")
| eval tmp_{source_field} = reduce(tmp_{source_field}, json_object(), ($acc, $row)-> if(isnull(json_extract($acc, $row[0])), json_set($acc, $row[0], $row[1]), json_set($acc, $row[0], if(isarray(json_extract($acc, $row[0])), json_append(json_extract($acc, $row[0]), "", $row[1]), json_array(json_extract($acc, $row[0]), $row[1])))))
| eval tmp_{source_field}_User = json_extract(tmp_{source_field}, "User")
| eval tmp_{source_field}_Type = json_extract(tmp_{source_field}, "Type")
| flatten tmp_{source_field}
| eval User = if(isnotnull(tmp_raw_User) AND isnotnull(tmp_{source_field}_User), if(isarray(tmp_{source_field}_User), reduce(tmp_{source_field}_User, json_array(tmp_raw_User), ($acc, $row)->json_append($acc, "", $row)), json_array(tmp_raw_User, tmp_{source_field}_User)), User)
| eval Type = if(isnotnull(tmp_raw_Type) AND isnotnull(tmp_{source_field}_Type), if(isarray(tmp_{source_field}_Type), reduce(tmp_{source_field}_Type, json_array(tmp_raw_Type), ($acc, $row)->json_append($acc, "", $row)), json_array(tmp_raw_Type, tmp_{source_field}_Type)), Type)
| fields - tmp_{source_field}, tmp_raw_User, tmp_raw_Type, tmp_{source_field}_User, tmp_{source_field}_Type
